*COMDECK COMSIDP
 COMSIDP  TITLE  COMSIDP - INTERACTIVE DEBUG PACKAGE INTERFACE TEXT.
 COMSIDP  SPACE  4,8
          BASE   D
 COMSIDP  SPACE  4,8
***       COMSIDP - INTERACTIVE DEBUG PACKAGE INTERFACE TEXT. 
*         75/11/01           P CLARE
*         77/05/12           P CLARE
 COMSIDP  SPACE  4,8
***       COMSIDP - INTERACTIVE DEBUG PACKAGE INTERFACE TEXT. 
* 
* 
*         *COMSIDP* CONTAINS THE MACRO AND SYMBOL DEFINITIONS USED
*         BY IDP AND ANY USER ROUTINES THAT ARE INTERFACING TO IT.
 .OS      SPACE  4,10 
**        DEFINE DEFAULT OPERATING SYSTEM.
  
          IF     -DEF,.OS,1 
 .OS      =      3           SCOPE 3
 CEQU     SPACE  4,10 
**        CEQU - CONDITIONAL EQU. 
* 
* 
* A       CEQU   B
* 
*         ENTRY  A = SYMBOL NAME TO EQU TO *B*, ONLY IF *A* NOT 
*                     ALREADY DEFINED.
*                B  = NEW VALUE FOR *A*, IF *A* NOT ALREADY DEFINED.
* 
*         EXIT   NONE 
* 
*         USES   NONE 
* 
*         CALLS  NONE 
  
  
          PURGMAC CEQU
  
          MACRO  CEQU,AA,BB 
  IF -DEF,AA,1
 AA = BB
 CEQU ENDM
 DEFTOT   SPACE  4,10 
**        DEFTOT - DEFINE TOKEN TYPE. 
* 
* 
* TOT     DEFTOT
* 
*         ENTRY  TOT = TOKEN TYPE TO DEFINE.  NOTE THAT *TOT* WILL
*                      BE PREFIXED WITH "O.". 
* 
*         EXIT   NONE 
* 
*         USES   NONE 
* 
*         CALLS  NONE 
  
  
          PURGMAC DEFTOT
  
          MACRO  DEFTOT,TOT 
* 
  IF -DEF,'?IDSTOT,1
 '?IDSTOT SET -1
* 
 '?IDSTOT SET '?IDSTOT+1
* 
 O.TOT = '?IDSTOT 
* 
 DEFTOT   ENDM
 ERROR    SPACE  4,10 
**        ERROR - DEFINE IDP ERROR MESSAGE. 
* 
* 
* LOC     ERROR  MSG,JMP
* 
*         ENTRY  LOC = LOCATION FIELD TO JUMP TO FOR THIS ERROR.
*                MSG = ERROR MSG TEXT.
*                JMP = ADDR TO JUMP TO FOR THIS ERROR,
*                      (DEFAULT = *IDP=ERR*). 
* 
*         EXIT   NONE 
* 
*         USES   NONE 
* 
*         CALLS  NONE 
  
  
          MACRO  ERROR,LOC,MSG,JMP
* 
 '?ID#002 IFNE OI.ERR,0 
* 
 LOC BSS 0
* 
  IF -DEF,'?IDSERR,1
 '?IDSERR SET 0 
* 
 '?IDSERR SET '?IDSERR+1
* 
 '?IDCS01 MICRO 1,,# MSG_#
 '?IDS001 MICCNT '?IDCS01 
  IFGT '?IDS001,80D,1 
 P ERR ERR MESSAGE TOO LONG.
* 
 '?ID#001 IFEQ OI.ERR,2 
  SX6 =C# MSG_# 
 '?ID#001 ELSE
  SX6 '?IDSERR
 '?ID#001 ENDIF 
* 
 '?ID#002 ELSE
 LOC = IDP=ER 
 '?ID#002 ENDIF 
* 
  EQ JMP IDP=ERR
* 
 ERROR    ENDM
 KEYW     SPACE  4,10 
**        KEYW - *IDP* KEYWORD TABLE GENERATOR. 
* 
* 
*         MACRO USED TO GENERATE THE *IDP* COMMAND KEYWORD TABLE. 
* 
* LAB     KEYW   KEY,XAT,ATTR 
* 
*         ENTRY  LAB  = CHARS USED FOR GENERATING USER-SPECIFIED
*                       ADDR REFS FOR THIS KEYWORD.  THAT IS, THE 
*                       *KEYW* MACRO WILL CONCATENATE PREDETERMINED 
*                       CHARACTERS TO *LAB* TO GENERATE THE FOLLOWING 
*                       ADDRESSES --
* 
*                         ST=LAB  = ADDR OF STMT PROCESSOR FOR THIS 
*                                   KEYWORD.
*                         ST.LAB  = ADDR OF WORD 1 OF THIS *KEYW* ENTRY.
*                         LIP=LAB = ADDR OF *LIST* PROCESSOR FOR THIS 
*                                   KEYWORD.
* 
*                KEY  = CHARS THAT CONSTITUTE THIS KEYWORD AND *HELP* 
*                       STRING.  FORMAT IS AS FOLLOWS --
* 
*                         (BREAK FWA,LWA,LEN,LL,UL,INC) 
* 
*                       NOTE THAT ACTUAL KEYWORD AND *HELP* STRING
*                       **MUST** BE SEPARATED BY A BLANK (55B) CHAR.
* 
*                       NOTE ALSO THAT *HELP* STRING IS OPTIONAL. 
* 
*                XAT  = EXCLUSIVE ATTRIBUTE FOR THIS KEYWORD. 
* 
*                ATTR = NON-EXCLUSIVE ATTRIBUTES FOR THIS KEYWORD.
*                       NULL IF NONE.  (CURRENTLY UNUSED FIELD).
* 
*         EXIT   NONE 
* 
*         USES   NONE 
* 
*         CALLS  '?IDMKWL 
  
  
          PURGMAC  KEYW 
  
          MACRO  KEYW,LAB,KEY,XA,ATTR 
          LOCAL  '?ID#001 
* 
 '?IDCKEY MICRO 1,, KEY 
 '?IDSKEY MICCNT '?IDCKEY 
 '?IDSBIT SET '?IDSKEY*CHAR 
 '?IDCHLP MICRO '?IDSKEY+2,, KEY
* 
 '?ID#001 '?IDMKWL
* 
 '?ID#002 IFEQ OI.ERR,2 
 '?IDCS01 MICRO 1,,#=0C "'?IDCHLP" #
 '?ID#002 ELSE
 '?IDCS01 MICRO 1,, 0 
 '?ID#002 ENDIF 
* 
  IF -DEF,ST.LAB,1
 ST.LAB BSS 0 
* 
 LIP.LAB CEQU 0 
 PTR.LAB CEQU 0 
 UDO.LAB CEQU 0 
* 
 + VFD KW.PNRL/PTR.LAB,KW.PADL/=YST=LAB,KW.XATL/XA,KW.LENL/'?IDSBIT,____
,KW.KEYL/'?ID#001 
 + VFD KW.ATTRL/0,KW.LADL/LIP.LAB,KW.UDOL/UDO.LAB,KW.HADL/"'?IDCS01"
* 
 KEYW     ENDM
 LXQ      SPACE  4,8
**        LXQ - REDEFINE THE LEFT SHIFT INSTRUCTION.
* 
*         THIS OPDEF REDEFINES THE LEFT SHIFT INSTRUCTION TO SUPPRESS 
*         CODE GENERATION WHEN THE SHIFT COUNT IS 0, +60D OR -60D.
*         THE INSTRUCTION IS OTHERWISE UNCHANGED. 
* 
*         LXI       JK
* 
*         ENTRY  *XI* = X-REG TO BE SHIFTED 
*                *JK* = SHIFT COUNT EXPRESSION
* 
*         USES   XI 
  
  
          PURGDEF ^XQ 
          PURGDEF   LXQ 
 ^XQ      CPOP   0,200B,100B
  
 LXQ      OPDEF     I,JK
  IFNE JK,0,2 
  IFNE JK_&60D,0,1
  ^X.I JK 
  ENDM
 PASOP    SPACE  4,10 
**        PASOP - DEFINE *POT* TABLE ENTRY. 
* 
* 
*         THIS MACRO DEFINES A *POT* (PARSING OPERATOR/OPERAND TABLE) 
*         ENTRY.  SEE *POT* IN *COMCIDP*. 
* 
* TOT     PASOP  POP=A,PIP=B,UPIP=C,PRI=D 
* 
*         ENTRY  TOT  = TOKEN TYPE, **WITHOUT** 'O.' PREFIX.
*                POP  = POLISH OUT PROCESSOR ADDR.
*                PIP  = POLISH IN PROCESSOR ADDR. 
*                UPIP = POLISH IN PROCESSOR ADDR IF UNARY OPERATION.
*                PRI  = PARSING PRIORITY. 
* 
*         EXIT   NONE 
* 
*         USES   NONE 
* 
*         CALLS  NONE 
  
  
          PURGMAC PASOP 
  
          MACROE PASOP,TOT,POP,PIP,UPIP,PRI 
* 
*         CHECK FOR *TABLE OUT-OF-ORDER*. 
* 
  IFLE O.TOT,'?IDSTOT,1 
 P ERR *POT* OUT-OF-ORDER OR DUPLICATE ENTRY
* 
  IFNE O.TOT,'?IDSTOT+1,1 
 P ERR *POT* ENTRY MISSING. 
* 
 '?IDSTOT SET O.TOT 
* 
*         SET UP DEFAULTS.
* 
 '?IDCS01 MICRO 1,, POP 
  IFC EQ, POP  ,1 
 '?IDCS01 MICRO 1,, E.POP 
* 
 '?IDCS02 MICRO 1,, PIP 
  IFC EQ, PIP  ,1 
 '?IDCS02 MICRO 1,, SE.NPP
* 
 '?IDCS03 MICRO 1,, UPIP
  IFC EQ, UPIP  ,1
 '?IDCS03 MICRO 1,, E.UNOP
* 
*         GENERATE *POT* ENTRY. 
* 
 + VFD PS.PRIL/PRI,PS.UPIPL/"'?IDCS03",PS.PIPL/"'?IDCS02",PS.POPL/______
,___"'?IDCS01"
* 
 PASOP    ENDM
 PRBDO    SPACE  4,8
**        PRBDO - PRINT CODED LINE ON BATCH DEBUG OUTPUT FILE.
* 
* 
*                IF THE USER DID NOT DEFINE A BATCH DEBUG OUTPUT FILE,
*         (F.BDO -DEF), THEN *IDP* WILL INVENT ONE AND ACCESS IT VIA
*         *PRBDO* MACRO. IF *F.BDO* IS DEFINED, THEN THE USER SUPPLIES
*         HER OWN *PRBDO*.
* 
*         PRBDO  FWA,LEN
* 
*         ENTRY  FWA = FWA OF LINE (-C- FORMAT) 
*                LEN = LENGTH OF LINE (IN WORDS)
*                    = .ZR. IF LENGTH TO BE COMPUTED
* 
*         EXIT   NONE 
* 
*         USES   ALL BUT A0,X0,A5,X5   (INCLUDES ALL CALLS) 
* 
*         CALLS  WRITEC 
  
  
 #BDO     IF     -MAC,PRBDO 
  
          PURGMAC PRBDO 
  
 PRBDO    MACRO  FWA,LEN
          WRITEC =XF.BDO,(FWA),(LEN)
 PRBDO    ENDM
 #BDO     ENDIF 
 PRIDP    SPACE  4,8
**        PRIDP - PRINT CODED LINE ON OUTPUT FILE.
* 
* 
*         PRIDP  FWA,LEN,NRB
* 
*         ENTRY  FWA = FWA OF LINE (-C- FORMAT) 
*                LEN = LENGTH OF LINE (IN WORDS)
*                    = .ZR. IF LENGTH TO BE COMPUTED
*                NRB = NR OF BLANK LINES TO OUTPUT PRECEDING THE LINE 
* 
*         EXIT   NONE 
* 
*         USES   ALL BUT B4,A0,X0,A5,X5 (INCLUDES ALL CALLS)
* 
*         CALLS  ROL
  
  
          PURGMAC PRIDP 
  
 PRIDP    MACRO  FWA,LEN,NRB
          =X6    FWA
          =X7    LEN
          =X4    NRB
          RJ     =XROL= 
 PRIDP    ENDM
 REQUEST  SPACE  4,10 
**        REQUEST - REQUEST OPERATOR ASSIGNMENT OF EQUIPMENT. 
* 
* 
*         THIS MACRO IS FOR *KRONOS/NOS* **ONLY**.  IT EXISTS BECAUSE 
*         OF A CONFLICT BETWEEN THE *REQUEST* MACRO DEFINITION IN 
*         *CPUTEXT* (WHICH IS FOR *SCOPE*) AND ANY REFERENCES TO THIS 
*         MACRO ON *KRONOS*.  I.E. THEY ARE INCOMPATIBLE. 
* 
*         COPIED FROM *OPL/CPCOM*.
* 
*         REQUEST FILE,UNIT 
* 
*         ENTRY  *UNIT* IF USED ASSIGNS THE EQUIPMENT DESIGNATED
*                IN THE *DTY* POSITION IN (FILE+1). 
* 
*         CALLS  LFM= 
  
  
 #OS1     IFEQ   .OS,1       IF *KRONOS/NOS*
          PURGMAC REQUEST 
  
 REQUEST  MACRO  F,U
  R= X2,F 
 '?ID#001 IFC EQ,$U$$ 
  SX7 14B 
 '?ID#001 ELSE
  SX7 15B 
 '?ID#001 ENDIF 
  RJ =XLFM= 
 REQUEST ENDM 
 #OS1     ENDIF 
 SCTOT    SPACE  4,10 
**        SCTOT - DEFINE *STMT CONTROL* TABLE ENTRY.
* 
* 
* TOT     SCTOT  PAD
* 
*         ENTRY  TOT = TOKEN TYPE (WITHOUT *O.* PREFIX*). 
*                PAD = PROCESSOR ADDR FOR THIS *TOT*. 
* 
*         EXIT   NONE 
* 
*         USES   NONE 
* 
*         CALLS  NONE 
  
  
          PURGMAC SCTOT 
  
          MACRO  SCTOT,TOT,PAD
* 
 '?IDS001 SET    SC.TOTP-SC.PADP-SC.PADL
 + VFD SC.TOTL/O.TOT,'?IDS001/0,SC.PADL/PAD 
* 
 SCTOT    ENDM
 SUBKEY   SPACE  4,10 
**        SUBKEY - GENERATE SUB-KEYWORD TABLE ENTRY.
* 
* 
*         MACRO USED TO GENERATE AN IDP SUB-KEYWORD ENTRY.
* 
*         SUBKEY KEY,VAL
* 
*         ENTRY  KEY  = SUB-KEYWORD.
*                VAL  = VALUE TO BE PLACED IN LOWER 18 BITS OF *SUBKEY* 
*                       ENTRY.
* 
*         EXIT   NONE 
* 
*         USES   NONE 
* 
*         CALLS  NONE 
  
  
          PURGMAC  SUBKEY 
  
 SUBKEY   MACRO  KEY,VAL
          VFD    42/0L_KEY,18/VAL 
 SUBKEY   ENDM
 SYSERR   SPACE  4,10 
**        SYSERR - SYSTEM ERROR.
* 
* 
* LOC     SYSERR MSG,JMP
* 
*         ENTRY  LOC = LOCATION FIELD TO JUMP TO FOR THIS SYS ERR.
*                MSG = ERROR MSG TEXT.
*                JMP = ADDR TO JUMP TO FOR THIS SYS ERR,
*                      (DEFAULT = *IDP=SER*). 
* 
*         EXIT   NONE 
* 
*         USES   NONE 
* 
*         CALLS  NONE 
  
  
          PURGMAC SYSERR
  
          MACRO  SYSERR,LOC,MSG,JMP 
* 
 LOC BSS 0
* 
  IF -DEF,'?IDSSER,1
 '?IDSSER SET 0 
* 
 '?IDSSER SET '?IDSSER+1
* 
 '?IDCS01 MICRO 1,,# MSG_#
 '?IDS001 MICCNT '?IDCS01 
  IFGT '?IDS001,70D,1 
 P ERR ERR MESSAGE TOO LONG.
* 
  SX6 =C# MSG_# 
  EQ JMP IDP=SER
* 
 SYSERR   ENDM
 '?IDMKWL SPACE  4,10 
**        '?IDMKWL - GENERATE KEYWORD LITERAL.
* 
* 
* LAB     '?IDMKWL
* 
*         ENTRY  '?IDCKEY = MICRO CONTAINING KEYWORD. 
*                '?IDSKEY = LEN OF '?IDCKEY (IN CHARS, I.E. *MICCNT*).
*                LAB      = LABEL FIELD FOR THIS KEYWORD LITERAL. 
* 
*         EXIT   NONE 
* 
*         USES   NONE 
* 
*         CALLS  NONE 
  
  
          PURGMAC '?IDMKWL
  
          MACRO  '?IDMKWL,LAB 
  LOCAL '?ID#001
* 
 '?IDCS02 MICRO 1,, 0L
 '?IDS001 SET '?IDSKEY/7+1
 '?IDS002 SET 1 
* 
 '?ID#001 DUP '?IDS001
 '?IDCS01 MICRO '?IDS002,7, "'?IDCKEY"
 '?IDCS02 MICRO 1,, "'?IDCS02",0L"'?IDCS01" 
 '?IDS002 SET '?IDS002+7
* 
 '?ID#001 ENDD
* 
 LAB LIT "'?IDCS02" 
* 
 '?IDMKWL ENDM
 '?IDMLIT SPACE  4,10 
**        '?IDMLIT - GENERATE IDP LITERAL.
* 
* 
*         THIS MACRO GENERATES A LITERAL TO IDP.S LITERAL BLOCK,
*         '?IDRLIT.  *'?IDMLIT*, THEN, SIMULATES THE COMPASS *LIT*
*         PSEUDO, WITH THE PRIMARY DIFFERENCE BEING THAT *'?IDMLIT* 
*         DOES NOT GENERATE TO THE PROGRAM LITERAL BLOCK. 
* 
*         THIS SHOULD HELP TO MINIMIZE UNFAVOURABLE IDP/HOST
*         INTERACTIONS. 
* 
* LOC     '?IDMLIT LIT
* 
*         ENTRY  LOC = ADDR/LOCATION FIELD FOR THIS LITERAL.
*                LIT = LITERAL STRING.
* 
*         EXIT   NONE 
* 
*         USES   NONE 
* 
*         CALLS  NONE 
  
  
          PURGMAC '?IDMLIT
  
          MACRO  '?IDMLIT,LOC,LIT 
* 
 '?IDCS01 MICRO 1,,#_LIT_#
  '?IDMSMA 1,4
* 
 '?ID#001 IFEQ '?IDS001,0 
 '?ID1LEN SET '?ID1LEN+1
* 
  IFGT '?ID1LEN,999D,1
 P ERR TOO MANY LITERALS
* 
 '?IDCS02 DECMIC '?ID1LEN,3 
 '?ID1"'?IDCS02" MICRO 1,,#"'?IDCS01"#
* 
 '?IDS001 SET '?ID1LEN
 '?IDRLIT '?IDMRMT (  DATA LIT) 
* 
 '?ID#001 ENDIF 
* 
 LOC = FW.L_I_T+'?IDS001
* 
 '?IDMLIT ENDM
 '?IDMMEQ SPACE  4,10 
**        '?IDMMEQ - MICRO EQUIVALENCE. 
* 
* 
*         THIS MACRO EQUATES TWO MICRO STRINGS.  IT IS ONLY TRULY 
*         USEFUL WHEN THE MICRO NAME ON THE RIGHT-SIDE OF THE 
*         EQUIVALENCE IS BEING GENERATED VIA MICRO STRINGS. 
* 
* A       '?IDMMEQ B
* 
*         ENTRY  A = MICRO NAME TO EQUATE *B* TO. 
*                B = OLD MICRO NAME.
* 
*         EXIT   "A" CREATED AND "B" LEFT ALONE.
* 
*         CALLS  NONE 
  
  
          PURGMAC '?IDMMEQ
  
  MACRO '?IDMMEQ,A,B
 A MICRO 1,, "B"
 '?IDMMEQ ENDM
 '?IDMRMT SPACE  4,10 
**        '?IDMRMT - FORCE MICRO EVALUATION FOR *RMT* BLOCKS. 
* 
* 
*         THIS MACRO IS USED SOLEY FOR THE PURPOSE OF FORCING 
*         MICRO EVALUATION IN *RMT* BLOCKS. 
* 
* BLK     '?IDMRMT S
* 
*         ENTRY  BLK = REMOTE BLOCK NAME
*                S   = STMT TO BE ENTERED INTO REMOTE BLOCK *BLK*.
* 
*         EXIT   NONE 
* 
*         USES   NONE 
* 
*         CALLS  NONE 
  
  
          PURGMAC '?IDMRMT
  
          MACRO  '?IDMRMT,BLK,S 
 BLK RMT
 S
 BLK RMT
 '?IDMRMT ENDM
 '?IDMSMA SPACE  4,10 
**        '?IDMSMA - SCAN MICRO ARRAY.
* 
* 
*         '?IDMSMA N,FC,NC
* 
*         ENTRY  N  - MICRO ARRAY NR. 
*                FC = 1ST CHAR POSITION IN EACH ARRAY ELEMENT 
*                     TO SEARCH AT. 
*                NC = NR OF CHARS (BEGINNING AT *FC*) TO COMPARE, 
*                   = 0 IF REST OF MICRO ARRAY ENTRY (AS IN *MICRO* 
*                     PSEUDO).
* 
*                '?IDCS01 = ELEMENT TO SEARCH FOR.
*                '?IDNLEN = NR OF ENTRIES IN THIS MICRO ARRAY 
*                           (WHERE *N* IS MICRO ARRAY NR).
* 
*         EXIT   '?IDCS01 = UNCHANGED.
*                '?IDS001 = MICRO ARRAY ELEMENT NR IF A FIND, ELSE
*                         = .ZR. IF NO FIND.
*                '?IDCS02 = MICRO CONTAINING FOUND ENTRY IN '?IDNXXX. 
*                '?IDCS03 = MICRO CONTAINING MICRO NAME OF FOUND
*                           ENTRY.
*                           I.E. "'?IDCS03" MICRO 1,, "'?IDCS02"
* 
*         CALLS  '?IDMMEQ 
  
  
          PURGMAC '?IDMSMA
  
 '?IDMSMA MACRO A,B,C 
  LOCAL '?ID#001,'?ID#002,'?ID#003
* 
 '?IDS001 SET '?ID_A_LEN
 '?ID#002 IFGT '?IDS001,0 
* 
 '?ID#001 DUP '?ID_A_LEN
* 
 '?IDCS03 DECMIC '?IDS001,3 
 '?IDCS03 MICRO 1,, '?ID_A_"'?IDCS03" 
 '?IDCS02 '?IDMMEQ "'?IDCS03" 
 '?IDCS04 MICRO B,C, "'?IDCS02" 
 '?ID#003  IFC EQ, "'?IDCS01" "'?IDCS04"
  STOPDUP 
* 
 '?ID#003 ELSE
 '?IDS001 SET '?IDS001-1
 '?ID#003 ENDIF 
 '?ID#001 ENDD
 '?ID#002 ENDIF 
* 
 '?IDMSMA ENDM
 MICROS   SPACE  4,8
**        DEFINE DEFAULT MICROS.
  
          IF     -MIC,EOS,1 
 EOS      MICRO  1,,/;/ 
  
  
          IF     -MIC,IDPVER,1
 IDPVER   MICRO  1,,/1.1/ 
  
          IF     -MIC,PROMPT,1
 PROMPT   MICRO  1,,/>>/
 OI.      SPACE  4,10 
**        OI. - IDP OPTIONS.
* 
* 
*         SYMBOLS OF THE FORM *OI.XXX*, WHERE *OI.* IS A COMMON PREFIX
*         AND *XXX* IS A UNIQUE OPTION NAME, DEFINE MISCELLANEOUS IDP 
*         OPTIONS.
* 
*         MOST OF THESE OPTIONS ARE RELATED TO THE CONFIGURING OF IDP 
*         AND ITS SUPPORTING COMDECKS.  TO SET ONE OR MORE OF THESE 
*         OPTIONS, THE IDP INSTALLER NEED ONLY TO DEFINE THE APPROPRIATE
*         DESIRED *OI.XXX* SYMBOL.  IDP DOES THE REST.
* 
*         OPTIONS, *XXX*, ARE --
* 
*         ERR  = SELECT/DESELECT ERROR MESSAGES.
*              = 0 MEANS *DESELECT ERROR MESSAGES*.  THAT IS, IF AN 
*                  ERROR IS DETECTED BY IDP, ALL ONE GETS IS THE ERROR
*                  PROMPT.
* 
*              = 1 MEANS *SELECT SHORT MESSAGES*.  THAT IS, IF AN ERROR 
*                  IS DETECTED BY IDP, ONE GETS THE ERROR MSG NUMBER. 
* 
*              = 2 (DEFAULT) MEANS *SELECT FULL ERROR MESSAGES*.  IF AN 
*                  ERROR IS DETECTED IN THIS MODE, IDP ISSUES THE FULL
*                  ERROR MSG. 
* 
*                THE MAIN DIFFERENCE BETWEEN THESE DIFFERENT *ERR*
*                OPTIONS IS ONE OF SPACE (I.E. IDP REQUIRES MORE
*                CM STORAGE TO HOLD THE ERROR MESSAGES).  IT IS ADVISED 
*                THAT ONE USE/INSTALL IDP WITH FULL ERROR MSGS...AFTER
*                ALL, ONE IS USING IDP TO MAKE LIFE EASIER FOR ONESELF. 
  
  
 OI.ERR   CEQU   2           INDICATE FULL ERR MSGS 
 DEFS     SPACE  4,8
**        MISCELLANEOUS SYMBOL DEFINITIONS. 
  
  
 CHAR     =      6           LENGTH OF CYBER CHARACTER
  
 DXB1$    =      1           SET TO *ALLOW /COMCDXB/ TO CONVERT DIGITS
*                            WITH AN 8 OR 9 BUT NO EXPLICIT *B* OR *D*
*                            SUFFIX TO DEFAULT BASE DECIMAL*
  
 L.BSL    =      4           NR OF CM WORDS DUMPED ON LINE (BATCH)
 L.ISL    =      2           NR OF CM WORDS DUMPED ON LINE (INTERACTIVE)
  
 L.PRB    =      0           NR OF PRECEDING BLANKS TO OUTPUT 
*                              FOR SPACING PURPOSES 
 SVRDEFS  SPACE  4,10 
**        *COMCSVR* DEFINITIONS.
  
  
 #SVR     =      1           SELECT *IDP USES ITS OWN REG SAVE AREA*
 BAX      MICRO  1,,/BAX/ 
 DEFS     SPACE  4,8
**        SNAP PARAMETER LIST SYMBOL DEFINITIONS. 
*           THESE SYMBOLS DEFINE THE ORDINALS INTO THE SNAP PARAMETER 
*           LIST. (DESIRED WORD IS AT-- FWA OF PARAMETER LIST + SN=XXX) 
  
  
 SN=FRK   =      0           1ST WORD OF FREQUENCY PARAMETER LIST 
 SN=LL    =      0           LOWER LIMIT
 SN=UL    =      1           UPPER LIMIT
 SN=INC   =      2           INCREMENT
 SN=HDR   =      3           HEADER 
 SN=CNT   =      4           SNAP COUNT 
 SN=FWA   =      5           FWA
 SN=LWA   =      6           LWA
 SN=LEN   =      7           LENGTH 
 SN=USF   =      8           USER *SNAP* MACRO FLAGS
 SN=SRL   =      9           1ST WORD OF *RGR=* LIST FOR *SNAP* MACRO 
  
 SN=URF   =      5           USER *REG* MACRO FLAGS 
 SN=RRL   =      6           1ST WORD OF *RGR=* LIST FOR *REG* MACRO
  
 SN=BRF   =      5           USER *BREAK* MACRO FLAGS 
 SN=BRAD  =      6           USER-SPECIFIED *BREAK* ADDR
 O.       SPACE  4,10 
**        O. - DEFINE TOKEN (OPERATOR/OPERAND) TYPES. 
  
  
 BOS      DEFTOT
 O.EOS    =      O.BOS
 O.NUL    =      O.BOS
 KEY      DEFTOT
 VAR      DEFTOT
 CONS     DEFTOT
 REG      DEFTOT
  
 PLUS     DEFTOT             +
 MIN      DEFTOT             -
 STAR     DEFTOT             *
 LP       DEFTOT             (
 RP       DEFTOT             )
 SHFT     DEFTOT             $
 AND      DEFTOT             .AND.
 OR       DEFTOT             .OR. 
 XOR      DEFTOT             .XOR.
 NOT      DEFTOT             .NOT.
 COM      DEFTOT             ,
 PER      DEFTOT             .
 SQOT     DEFTOT             '
 QQQ      DEFTOT             ?
 ILL      DEFTOT
 O.SEP    =      O.PLUS 
 BB.      SPACE  4,10 
**        BB. - *COMCBUB* STRUCTURE DEFINITIONS.
* 
* 
  
  
          DESCRIBE BB.
 TOC      DEFINE 42 
 TOT      DEFINE 18 
 BN.      SPACE  4,10 
**        BN. - *COMCBUN* STRUCTURE DEFINITIONS.
* 
* 
  
  
          DESCRIBE BN.
 TOC      DEFINE 42 
 TOT      DEFINE 18 
 BTC/XTC  SPACE  4,10 
**        BTC/XTC - *BREAK/STEP* TYPE CODES.
* 
* 
  
  
 BTC.PL   =      1           BRPL 
 XTC.PL   =      1           STPL 
  
 BTC.MI   =      2           BRMI 
 XTC.MI   =      2           STMI 
  
 BTC.ZR   =      3           BRZR 
 XTC.ZR   =      3           STZR 
  
 BTC.NZ   =      4           BRNZ 
 XTC.NZ   =      4           STNZ 
  
 BTC.EQ   =      5           BREQ 
 XTC.EQ   =      5           STEQ 
  
 BTC.NE   =      6           BRNE 
 XTC.NE   =      6           STNE 
  
 BTC.LT   =      7           BRLT 
 XTC.LT   =      7           STLT 
  
 BTC.GE   =      8           BRGE 
 XTC.GE   =      8           STGE 
  
 BTC.LE   =      9           BRLE 
 XTC.LE   =      9           STLE 
  
 BTC.GT   =      10          BRGT 
 XTC.GT   =      10          STGT 
  
 XTC.RNG  =      11          STRANGE
 XTC.NR   =      12          STNR 
 XTC.AR   =      13          STAR 
 IDF.     SPACE  4,8
**        IDF. - *IDPFLG* STRUCTURE DEFINITIONS.
  
  
          DESCRIBE IDF. 
 IDO      DEFINE 1
 IKO      DEFINE 1
          DEFINE 1
 BDO      DEFINE 1
 BKO      DEFINE 1
          DEFINE 1
 FTO      DEFINE 1
 INP      DEFINE 1
 ADR      DEFINE 1
 XEC      DEFINE 3
 BRF      DEFINE 1
 MEM      DEFINE 1
 RAP      DEFINE 1
 XJR      DEFINE 1
          DEFINE 26 
 SNL      DEFINE 18 
 KW.      SPACE  4,10 
**        *KEYW* TABLE STRUCTURE DEFINITIONS. 
  
  
          DESCRIBE KW.
 PNR      DEFINE 6
 PAD      DEFINE 18 
 XAT      DEFINE 9
 LEN      DEFINE 9
 KEY      DEFINE 18 
  
          REDEF 
 ATTR     DEFINE 24 
 LAD      DEFINE 9
 UDO      DEFINE 9
 HAD      DEFINE 18 
 PAF.     SPACE  4,8
**        PAF. - *PATFLG* STRUCTURE DEFINITIONS.
  
  
          DESCRIBE PAF.,15
 LWA      DEFINE 1
          DEFINE 2
 LEN      DEFINE 1
          DEFINE 11 
 PS.      SPACE  4,10 
**        PS. - *POT* STRUCTURE DEFINITIONS.
  
  
          DESCRIBE PS.
 PRI      DEFINE 6
 UPIP     DEFINE 18 
 PIP      DEFINE 18 
 POP      DEFINE 18 
 TOT      DEQU   POP
 PT.      SPACE  4,10 
**        PT. - *PTR* (POINTER) TABLE STRUCTURE DEFINITIONS.
  
  
          DESCRIBE PT.
 FWA      DEFINE 30 
 LEN      DEFINE 30 
  
 L1.PTR   =      2           SELECT 1ST AND 2ND DEFAULTS ONLY 
 PTR.     SPACE  4,10 
**        PTR. - DEFINE *PTR* ORDINALS. 
* 
* 
  
  
 PTR.COD  CEQU   1
 PTR.DPC  CEQU   3
 PTR.SNP  CEQU   3
 PTR.STO  CEQU   3
 PTR.WHR  CEQU   1
 PTR.BRK  CEQU   1
 SC.      SPACE  4,10 
**        SC. - *STMT CONTROL* TABLE STRUCTURE DEFINITIONS. 
  
  
          DESCRIBE SC.
 TOT      DEFINE 18 
          DEFINE 24 
 PAD      DEFINE 18 
 SY.      SPACE  4,10 
**        SY. - SYMBOL TYPES. 
  
  
 SY.NONE  =      0           UNDEFINED
 SY.DECK  =      1           *FAA/RPV=RNA* DECK NAME
 SY.SET   =      2           *SET* NAME 
 SY.LFN   =      3           LFN/FET NAME 
 SY.USY   =      4           USER-DEFINED SYMBOL (VIA *USY=*) 
 TB.      SPACE  4,8
**        TB. - TOKEN BUFFER STRUCTURE DEFINITIONS. 
  
  
          DESCRIBE TB.
 LAS      DEFINE 1
          DEFINE 23 
 PRS      DEFINE 18 
 LEN      DEFINE 18 
 TB.      SPACE  4,10 
          REDEF 
 TOC      DEFINE BB.TOCL
 TOT      DEFINE BB.TOTL
 BB.      SPACE  4,10 
          REDEF 
          DEFINE 24 
 0TR      DEFINE 18 
 TOT      DEFINE 18 
 COMSIDP  SPACE  4,8
          BASE   *
