*DECK     FSNAP - FRONT-END TEST MODE SNAP PACKAGE. 
**IF DEF,TEST 
*IF DEF,TEST
          IDENT  FSNAP
 FSNAP    SECT   (FRONT-END TEST MODE SNAP PACKAGE.)
 FSNAP    SPACE  4
 #SNAP    IFEQ   TEST,ON
  
  
  
*         IN FEC
          EXT    L.CHMAP
  
*         IN FSNAP
          EXT    CHARMAP
  
*         IN IDP
          EXT    DCM=,FW=IDPL,IDPFLG,IDP=CAD,IDP=COD,IDP=ER,IDP=FLL 
          EXT    IDP=FRK,IDP=HDR,IDP=MCS,IDP=MN,IDP=PAS,IDP=PAT,IDP=SFN 
          EXT    IDP=SKT,IDP=SOB,IDP=WOD,IDP=ZTB,IDP=,ROL=,RSR=,RSR 
          EXT    SNAPLNE,SVR=,SVR,SV=A,SV=B,SV=X
  
*         IN LABEL
          EXT    DUC.BTH,DUC.1ST,DUC.2ND
  
*         IN LEX
          EXT    TF=IDP,TOK=CAL,TOK=COF,TOK=ELS,TOK=ENT,TOK=GN,TOK=GO 
          EXT    TOK=GS,TOK=IFT,TOK=ON,TOK=XEQ
  
*         IN PAR
          EXT    PAR
  
*         IN PUC
          EXT    NAMES,N.TABLE,ORIGINS,PASS,T=OUS,T=PAR,T=SYM,T=TB
          EXT    T.OUS,T.PAR,T.SYM,T.TB,WOF 
  
*         IN UTILITY
          EXT    FRA= 
 IDP      SPACE  4,10 
***       DEFINE IDP INTERFACE EXTERNAL SYMBOLS.
* 
* 
  
  
 CAD      EQUEXT IDP=CAD
 CHK      EQUEXT IDP=CHK
 FLL      EQUEXT IDP=FLL
 FRK      EQUEXT IDP=FRK
 HDR      EQUEXT IDP=HDR
 PAS      EQUEXT IDP=PAS
 PAT      EQUEXT IDP=PAT
 SKT      EQUEXT IDP=SKT
 SOB      EQUEXT IDP=SOB
  
  
 CDD      EQUEXT IDP=CDD
 COD      EQUEXT IDP=COD
 DXB      EQUEXT IDP=DXB
 MCS      EQUEXT IDP=MCS
 SFN      EQUEXT IDP=SFN
 SYS=     EQUEXT IDP=SYS
 WOD      EQUEXT IDP=WOD
 ZTB      EQUEXT IDP=ZTB
 MISC     SPACE  4,10 
**        MISCELLANEOUS SYMBOL DEFINITIONS. 
* 
* 
  
  
 SN=DMT   =      5           ORDINAL OF 1ST WORD OF *DUMPT* PARAMETER 
  
  
 IDPSA5   BSSZ   1           SAVE CELL FOR (A5) 
 PRBDO    SPACE  4,8
**        DEFINE BATCH DEBUG OUTPUT MACRO -- *PRBDO*. 
  
          PURGMAC PRBDO 
  
 PRBDO    OPSYN  PLINE
 TEXTS    SPACE  4,10 
***       TEXTS - INTERFACE TEXTS.
* 
* 
*         COMSIDP IS LISTED IN DECK *IDP*.
*         COMSQCG IS LISTED IN DECK *QCGC*. 
*         COMSTOK IS LISTED IN DECK *LEX*.
  
  
          QUAL   IDP
 QUAL$    =      1           DESELECT QUALS IN /IDP/
          LIST   -L          *COMSIDP* FOLLOWS
*CALL     COMSIDP - COMCIDP INTERFACE TEXT
          LIST   -X,L 
          QUAL   *
*CALL     COMSQCG            QCG STRUCTURE DECLARATIONS 
*CALL     COMSTOK            COMCTOK INTERFACE TEXT.
          LIST   F,X
 DATA     SPACE  4,10 
***       DATA STRUCTURES.
* 
* 
*         THE FOLLOWING SECTION CONTAINS DATA STRUCTURES THAT ARE 
*         TEST MODE ONLY AND THAT RELATE DIRECTLY TO TEST MODE
*         ROUTINES IN *FSNAP*.
 FI=      SPACE  4,10 
**        FI= - FTN/IDP CELLS.
* 
*         SYMBOLS OF THE FORM *FI=XXX* ARE CELLS THAT ARE USED
*         FOR FTN/IDP COMMUNICATION.
 FI=BRLI  SPACE  4,10 
**        FI=BRLI - *BRLINE NR* CELL. 
* 
*         *FI=BRLI* CONTAINS THE LINE NR THAT THE FTNER SELECTED
*         VIA THE *BRLINE* IDP COMMAND.  WHEN THE COMPILER REACHS 
*         A LINE WITHIN A PGM UNIT THAT HAS THE SAME LINE NR AS 
*         (FI=BRLI), THEN AN AUTOMAGIC BREAKPOINT IS INVOKED IN 
*         THE DECK *FEC*.  SEE DECK *FEC* AT HEAD OF FRONT-END
*         MASTER LOOP.
  
  
 FI=BRLI  CONENT 0
          TITLE  FTN5 SNAPPING ROUTINES.
 CTD=     SPACE  4,10 
**        CTD= - CONVERT TOKEN TYPE TO DPC. 
* 
* 
*         GIVEN A BINARY TOKEN TYPE, *CTD=* PROVIDES A DPC NAME THAT
*         CAN BE USED FOR PRINTING/DISPLAY PURPOSES.  SEE *COMDTOK*.
* 
*         ENTRY  (X1) = TOKEN TYPE, IN BINARY.
* 
*         EXIT   (X6) = DPC FOR THIS TOKEN TYPE, -L- FMT. 
* 
*         USES   CANNOT USE A5,X5,A0,X0 
* 
*         CALLS  COD
  
  
 CTD=     SUBR               ** ENTRY/EXIT ** 
          SB2    X1 
          SB3    =XZ.CHMAP   (B3) = NR OF WORDS IN (CHARMAP) VECTOR 
          GE     B2,B3,CTD2  IF OVER INDEXING *CHARMAP* 
          GE     B2,B0,CTD3  IF NOT UNDER INDEXING *CHARMAP*
  
 CTD2     MX2    -18
          BX1    -X2*X1      (X1) = 42/0,18/TOKEN TYPE
          CALL   COD         CONVERT BINARY TO OCTAL DPC
          MX2    1
          SB2    B2-B1       (B2) = NR OF BITS CONVERTED - 1
          AX2    B2          (X2) = MASK FOR EXTRACTING CONVERTED NR
          BX6    X2*X4       (X6) = TOKEN TYPE, -L- FMT 
          EQ     EXIT.
  
 CTD3     SA2    =XCHARMAP+X1  (X2) = *CHARMAP* ENTRY FOR THIS TOT
          MX3    CH.DPCL
          BX6    X3*X2       (X6) = DPC FOR THIS TOT, -L- FMT 
          NZ     X6,EXIT.    IF *CHARMAP* TABLE HAS A DPC FOR THIS TOT
          SA2    =0L-VAR- 
          SA3    =0L-CONS-
          SX7    X1-O.VAR 
          BX6    X2 
          ZR     X7,EXIT.    IF -VAR- TOKEN 
          BX6    X3 
          SX7    X1-O.CONS
          ZR     X7,EXIT.    IF -CONS- TOKEN
          SA2    =0L-OCT- 
          SA3    =0L-HEX- 
          SA4    =0L-ILL- 
          BX6    X2 
          SX7    X1-O.OCT 
          ZR     X7,EXIT.    IF -OCT- TOKEN 
          BX6    X3 
          SX7    X1-O.HEX 
          ZR     X7,EXIT.    IF -HEX- TOKEN 
          BX6    X4 
          SX7    X1-O.ILL 
          ZR     X7,EXIT.    IF -ILL- TOKEN 
          BX6    X6-X6
          EQ     EXIT.
 FTH      SPACE  4,10 
**        FTH - FORMAT TABLE HEADING. 
* 
*         ENTRY  (A1,X1) = TABLE ORIGIN WORD. 
*                (A6)+1 = FWA TO STORE HEADING (3 WORDS). 
* 
*         EXIT   (A6) -> LAST WORD STORED (-H- FORMAT). 
*                (B5) = ORDINAL OF TABLE. 
* 
*         USES   A1-4,A6,  X1-4,X6-7,  B2-5.
*         CALLS  COD. 
  
  
 FTH      SUBR   0           ENTRY/EXIT...
          SX2    A1 
          SB2    =XORIGINS
          SB3    -B2
          SB5    X2+B3       ORDINAL OF TABLE 
          SA3    B5+=XNAMES 
          MX4    5*6
          SA2    =5RAT T. 
          BX7    X4*X3       ISOLATE 5 CHARS OF TABLE NAME
          IX6    X7+X2
          LX6    -2*6 
          SA6    A6+B1
          CALL   COD         CONVERT OCTAL (TABLE FWA)
          SA1    B5+=XSIZES 
          SX2    2RLE&2R
          BX6    X4-X2
          SA6    A6+B1
          CALL   COD         CONVERT OCTAL (TABLE LENGTH) 
          SX2    2RN &2R
          BX6    X4-X2
          LX6    -2*6 
          SA6    A6+B1
          EQ     EXIT.
 LTB      SPACE  4,8
**        LTB - LIST TOKEN BUFFER.
* 
*         THIS ROUTINE LISTS THE TOKEN BUFFER BY CALLING *LTK*
*         IN *COMDTOK*. 
* 
*         ENTRY  NONE 
* 
*         EXIT   NONE 
* 
*         USES   NONE 
* 
*         CALLS  LTK,PRIDP,RSR,SVR
  
  
 LTB=     SUBR   =           ** ENTRY/EXIT ** 
          CALL   SVR         SAVE REGISTERS 
          SX1    4           INDICATE EXECUTIVE IS LTB
          CALL   SOB         SET OUTPUT BITS
          PRIDP  (=C. TOKEN BUFFER DUMP.),,2
          PRIDP  ,,1
          SA2    =XT.TB 
          SA4    =XT=TB 
          CALL   LTK         LIST TOKENS
          PRIDP  ,,2
          CALL   RSR         RESTORE REGISTERS
          EQ     EXIT.
 SN.EMT   SPACE  4,10 
**        SN.EMT - SNAP FOR FRONT END EMISSION OF TURPLES.
* 
*         ENTRY  (A1,X1) = ORIGIN OF TABLE ADDED TO.
*                (X0) -> ENTRY/EXIT WORD OF EMITTING ROUTINE. 
*                (X3) = OPR.
*                (X4) = 1OP.
*                (X5) = 2OP.
*                (B7) = LWA+1 OF TABLE. 
* 
*         USES   NONE.
  
  
 SN.EMT   SUBR   =           ENTRY/EXIT...
          RJ     SVR=        SAVE REGISTERS 
          SA1    SV=X+0      GET WHERE EMITTER CALLED FROM
          SA2    X1 
          LX2    -30
          SX1    X2-1 
          SB7    SNE2 
          EQ     =XFRA=      FIND RELATIVE ADDRESS
 SNE2     LX6    -6 
          SX2    2RIN&2R +
          LX7    -6 
          BX6    X6-X2
          BX1    X7 
          LX6    -6 
          SA6    SNEB+1 
          CALL   ZTB         BLANK FILL DECK NAME 
          SA2    SV=A+1      FETCH [A1] WAS TABLE ADDRESS 
          BX7    X6 
          SA7    A6-B1
          SA1    X2 
          RJ     FTH         FORMAT TABLE HEADER
          SB6    SNEA 
          SB7    A6+B1
          SB7    B7-B6
          PLINE  B6,B7
  
          SA1    SV=X+1      [X1] = NEW TABLE FWA 
          SA3    SV=B+7      [B7] = NEW TABLE LWA+1 
          IX7    X3-X1
          SX6    X7-Z=TURP   SET (SN.PNO) = INDEX OF TURPLE JUST ADDED
          SA5    SV=X+3      [X3] = OPERATOR WORD 
          SA6    SN.PNO 
          RJ     SN.POP      FORMAT TURPLE HEADER 
  
          SA5    SV=X+4      [X4] = 1OP 
          RJ     SN.PSYM     FORMAT OPERAND 1 
  
*         SA5    SV=X+5      [X5] = 2OP 
          RJ     SN.PSYM     FORMAT OPERAND 2 
          RJ     =XRSR=      RESTORE REGISTERS
          EQ     EXIT.
  
 SNEA     DIS    1, EMIT FROM 
 SNEB     DIS    2, REL IN DECK 
 SNEC     DIS    1, T.NAME
          DIS    1, FWA = 
 SNED     DIS    1,123456 
 SNEL     =      *-SNEA 
 SN.PAR   SPACE  4,8
**        SN.PAR - DUMP PARSED FILE (ONLY IF IN TEST MODE)
* 
*         ENTRY  (T=PAR) = LENGTH OF PARSED FILE. 
* 
*         EXIT   FORMATTED FILE DUMPED. 
* 
*         CALLS  PLINE, PIA, SVR, RSR, WOD
  
  
 SN.PAR   SUBR   =           ** ENTRY/EXIT ** 
          CALL   SVR=        SAVE REGISTERS 
          SA2    T=PAR
          SA3    =20H  IL SEGMENT DUMP. 
          ZR     X2,SPF8     IF EMPTY TABLE 
          SA4    A3+B1
          BX7    X3 
          SA1    T.PAR
          LX6    X4 
          SA5    X1          (A5) -> FWA PARSED FILE
          SB6    SNAPLNE
          SA7    B6 
          SA0    X2-1        (A0) = LENGTH - 1 OF PARSED FILE 
          SA6    A7+B1
          RJ     FTH         FORMAT TABLE HEADER
          SB2    A6+B1
          SX2    B2-B6
          PLINE  B6,X2,1
          BX6    0
          SA6    SN.PNO      INITIALIZE ORDINAL COUNTER 
  
**        LOOP ON PARSED FILE 
  
 SN.PAR1  RJ     SN.POP      PROCESS OPERATOR.
          SB4    A0 
          MI     B4,SPF8     IF TABLE EXHAUSTED 
          RJ     SN.PSYM     PROCESS 1ST SYMBOL.
          RJ     SN.PSYM     PRINT OPERAND 2
          PLINE  ,,1         BLANK LINE BETWEEN TURPLES 
          SB4    A0 
          PL     B4,SN.PAR1  IF MORE TO GO. 
  
**        END OF LOOP 
  
 SPF8     CALL   RSR=        RESTORE REGISTERS
          EQ     EXIT.
 SN.PSYM  SPACE  4,8
**        SN.PSYM - DUMP SYMBOL FROM PARSED FILE. 
* 
*         ENTRY  (A5,X5) = OPERAND WORD.
*                (SN.PNO) = ORDINAL OF THIS WORD. 
* 
*         EXIT   (A5) ADVANCED BY ONE.
*                (X5) = ((A5)). 
*                (A0) DECREMENTED BY ONE. 
*                (SN.PNO) ADVANCED BY ONE.
*                LINE PRINTED.
* 
*         USES   ALL. 
*         CALLS  COD, PLINE, WOD, ZTB.
  
  
 SN.PSYM  SUBR               ENTRY/EXIT...
          SA1    SN.PNO 
          SX6    X1+B1
          SA6    A1          UPDATE ORDINAL 
          RJ     COD         CONVERT TO *DPC* 
          LX6    9*CHAR-6*CHAR
          SX1    2R  &2R= 
          BX6    X6-X1       (X6) = .NNNNNN.=.   (.=BLANK(55B)) 
          SA2    =XPASS 
          SA6    LINNO
          SX2    X2-PASS=QCG
          ZR     X5,SPG9     IF NULL OPERAND
          BX3    X5 
          LX6    X5 
          NZ     X2,SPG2     IF NOT DURING QUICK CG PASS
  
*         CRACK (P2.) FORMAT OPERAND. 
* 
*         **** KLUDGE ****
* 
*         KLUDGE UNTIL *SNAP=A* IS FIXED. 
* 
*         **** KLUDGE ****
  
 C.SYM    =      0
  
          EQ     "BLOWUP" 
  
          HX6    P2.BIAS
          LX3    -P2.TAGP 
          MX0    -P2.TAGL 
          AX6    -P2.BIASL   ISOLATE SIGN-EXTENDED BIAS 
          BX1    -X0*X3      EXTRACT (X1) = TAG 
          LX3    P2.TAGP-1-P2.INTRP 
          SA6    SPGA 
          MI     X3,SPG4     IF OPERAND IS AN INTERMEDIATE
* 
*         **** KLUDGE ****
* 
 7        ERR    KLUDGE UNTIL *SNAP=A* IS FIXED 
 .TEST    IFEQ   TEST,ON
          SA3    =XT=OUS
          SB7    X3 
          GE     B2,B7,"BLOWUP"    IF OUS INDEX .GE. TABLE LENGTH 
 .TEST    ENDIF 
          SA3    =XT.OUS
          SA1    B2+X3       FETCH OPERAND USAGE STATUS 
          LX1    -P2.TAGP 
          BX1    -X0*X1      EXTRACT (X1) = TAG IN USAGE TABLE
          SB2    X1 
          PL     B2,SPG3     IF POSSIBLY A SYMBOL TAG 
          EQ     SPG5 
  
*         CRACK (TP.) FORMAT OPERAND. 
  
 SPG2     LX3    -TP.ORDP 
          MX0    -TP.ORDL 
          HX6    TP.BIAS
          BX1    -X0*X3      EXTRACT (X1) = ORDINAL 
          AX6    -TP.BIASL   SAVE SIGN-EXTENDED BIAS
          LX3    TP.ORDP-1-TP.INTRP 
          SA6    SPGA        SAVE (BIAS)
          MI     X3,SPG4     IF OPERAND IS AN INTERMEDIATE
          CLAS=  X2,TP,(INTR,SHRT,GL) 
          BX0    X2*X5
          SB2    X1 
          NZ     X0,SPG5     IF NOT A VARIABLE
  
*         HERE WHEN OPERAND IS IN SYMTAB. 
*                (B2) = SYMTAB ORDINAL. 
  
 SPG3     SA3    =XT=SYM
          SA2    T.SYM
          SB7    X3 
          SX3    B2+B2
          SB2    X3+B2       (B2) = INDEX = 3 * ORDINAL 
          ERRNZ  3-Z=SYM
          MX0    WA.SYML
          GE     B2,B7,SPG5  IF INDEX GE SYMTAB LEN 
          SA3    X2+B2       LOAD SYMBOL
          BX1    X0*X3       ISOLATE SYMBOL NAME
          RJ     ZTB         ZEROES TO BLANKS 
          EQ     SPG8 
  
**        HERE IF NOT INTERMEDIATE
  
 SPG4     RJ     =XCOD       CONVERT INTERMEDIATE ORDINAL TO OCTAL DPC
          SX1    2RI=&2R
          EQ     SPG6 
  
**        HERE IF OTHER FORM OF TAG OR CONSTANT.
  
 SPG5     RJ     =XCOD       CONVERT ORDINAL FIELD TO OCTAL DPC 
          SX1    2RC=&2R
 SPG6     BX6    X4-X1
  
**        HERE WITH SYMBOL CONVERTED TO DPC.
*         (X6) = DPC FOR SYMBOL.
  
 SPG8     LX6    -2*6 
          SA6    LINPDP 
          SA1    SPGA        RETRIEVE (BIAS) FIELD
          BX0    X1 
          AX0    -1          (X0) = SIGN (+0 OR -0) 
          BX1    X1-X0       (X1) = ABS (BIAS)
          RJ     COD         CONVERT OCTAL DIGITS 
          SX2    1R-&1R 
          BX2    X0*X2
          LX2    B2          POSITION LEADING SIGN
          BX6    X2-X6
          SA6    A6+B1
          BX1    X5 
          SB3    A5 
          RJ     WOD         CONVERT TAG TO OCTAL (CLOBBERS A5) 
          SA6    LINPOC 
          SA7    A6+B1
          SA0    A0-B1
          SA5    B3+B1
          PLINE  LINPAR,LINSPGL 
          EQ     EXIT.
  
 SPG9     SA1    =H/   0/ 
          MI     X5,"BLOWUP" IF OPERAND = -0
          BX7    X1 
          SA7    A6+B1
          PLINE  A6,2 
          SA0    A0-B1
          SA5    A5+B1
          EQ     EXIT.
  
 SPGA     CON    0           SAVE (BIAS) FIELD OF OPERAND 
 SN.POP   SPACE  4,8
**        SN.POP - DUMP OPERATOR FROM PARSED FILE.
*         OUTPUT IS DIVIDED INTO SPECIFIED FIELDS THAT ARE SET-UP DURING
*         PARSING OF A STATEMENT. 
* 
*         ENTRY  (X5) = OPERATOR. 
* 
*         EXIT   (X5) = NEXT OPERAND
  
  
 SN.POP   SUBR               ENTRY/EXIT...
  
*         UPDATE ORDINAL AND SET DPC INTO LINE BUFFER.
  
          SA1    SN.PNO 
          =X6    X1+1 
          SA6    A1          UPDATE ORDINAL 
          RJ     COD         CONVERT TO *DPC* 
          LX6    9*CHAR-6*CHAR
          SX1    2R  &2R= 
          BX6    X6-X1       (X6) = .NNNNNN.=.   (.=BLANK(55B)) 
          SA6    LINNO
  
*         LOOK UP NAME OF SKELETON. 
  
          BX7    X5 
          HX7    TH.SKEL
          AX7    -TH.SKELL
          SA1    X7+=XF.SKNAM 
          BX6    X1 
          SA6    LINJPAD
  
*         CONVERT OPERATOR CODE TO DPC
  
          SA2    =XPASS 
          SB2    X2-PASS=QCG
          NZ     B2,SPH44    IF NOT IN QUIK CG
          MX0    -OP.CHINL
          LX5    -OP.CHINP
          EQ     SPH48
  
 SPH44    MX0    -TH.OVALL
          LX5    -TH.OVALP
  
 SPH48    SA1    =H/*BAD-TOK*/
          BX4    -X0*X5      EXTRACT (X4) = CHARACTER MAP INDEX 
          LX6    X1 
          SB2    X4-O.ERR 
          GT     B2,SPH50    IF TOKEN TOO BIG 
          SA4    X4+CHARMAP 
          SX2    2RO. 
          HX4    CH.DPC 
          MX0    CH.DPCL
          BX6    X0*X4       ISOLATE TOKEN NAME 
          IX1    X6+X2
          LX1    -2*6 
          CALL   ZTB         ZEROES TO BLANKS (TOKEN NAME)
 SPH50    SA6    LINOPR 
  
*         EXTRACT MODE FIELDS, DEPENDING ON IL FORMAT.
  
          SA2    PASS 
          SB2    X2-PASS=QCG
          NZ     B2,SPH62    IF NOT IN QUIK CG
          LX5    OP.CHINP-OP.2MODP
          MX0    -OP.2MODL
          EQ     SPH64
  
 SPH62    LX5    TH.OVALP-TH.MODEP
          MX0    -TH.MODEL
 SPH64    BX2    -X0*X5      EXTRACT (X2) = RESULT MODE OF TURPLE 
          SA2    X2+SN.DMOD 
          BX6    X2 
          SA6    A6+B1       STORE DPC FOR RESULT/DOMINANT MODE 
  
*         DETERMINE TYPE OF OPERANDS
  
          LX4    -CH.OPCP 
          SX2    X4          (X2) = DUC-ABILITY 
          ERRNZ  18-CH.OPCL 
          SB7    DUC.1ST
          SB7    -B7
          SB7    X2+B7
          SB2    SN.1ST 
          ZR     B7,SN.POP7 
          SB7    DUC.BTH
          SB7    -B7
          SB7    X2+B7
          SB2    SN.BOTH
          ZR     B7,SN.POP7 
          SB7    DUC.2ND
          SB7    -B7
          SB7    X2+B7
          SB2    SN.2ND 
          ZR     B7,SN.POP7 
          SB2    SN.NULL
 SN.POP7  SA3    B2 
          BX6    X3 
          =A6    A6+1 
  
*         CONVERT OPERATOR WORD TO DPC/OCTAL
  
          SA1    A5          RETRIEVE TURPLE HEADER 
          SB3    A5 
          RJ     WOD
          SA6    LINPOC 
          SA7    A6+B1
  
*         UPDATE POINTERS.
  
          SA0    A0-B1
          =A5    B3+1 
          PLINE  LINPAR,LINSPHL 
          EQ     EXIT.
  
 SN.PNO   BSS    1           HOLDS PARSED FILE INDEX
  
**        LINE IMAGE FOR DUMPING CONTENTS OF A PARSED FILE ELEMENT. 
  
 LINPAR   BSS    0
 LINNO    DATA   0
 LINPOC   DATA   0           ENTRY 1ST HALF 
          DATA   0           ENTRY 2ND HALF 
          DATA   10H
 LINJPAD  BSS    0           JUMP ADDRESS OF OPERATOR.
 LINPDP   DATA   0
 LINOPR   DATA   0           OPERATOR DPC 
 LINSPGL  =      *-LINPAR    LENGTH OF SPG LINE 
          DIS    1, M.MODE
          DIS    1,DUC=WHICH
 LINSPHL  =      *-LINPAR    LENGTH OF SPH LINE 
  
**        DOMINANT MODE *DPC* 
  
 SN.DMOD  BSS 
          LOC    0
 M.BOOL   DIS    1, M.BOOL
 M.LOG    DIS    1, M.LOG 
 M.INT    DIS    1, M.INT 
 M.REAL   DIS    1, M.REAL
 M.DBL    DIS    1, M.DBL 
 M.CPLX   DIS    1, M.CPLX
 M.CHAR   DIS    1, M.CHAR
          DIS    1, MODE=7
          LOC    *O 
  
**        TYPE OF OPERANDS
  
 SN.NULL  DIS    1,          BLANK FOR DUC=NONE 
 SN.1ST   DIS    1, DUC=1ST 
 SN.2ND   DIS    1, DUC=2ND 
 SN.BOTH  DIS    1, DUC=BOTH
 ST=      SPACE  4,8
***       ST= - STATEMENT PROCESSORS FOR FRONT-END *IDP* COMMANDS.
* 
* 
*         THE FOLLOWING SECTION CONTAINS ALL THE FRONT-END SPECIFIC 
*         STMT PROCESSORS FOR IDP COMMANDS. 
 UKT=FE   SPACE  4,10 
**        UKT=FE - USER IDP KEYWORD TABLE FOR *FRONT-END*.
  
  
 UKT=FE   BSSENT 0           ** FWA OF KEYWORD TABLE ** 
          QUAL   IDP
 BRL      KEYW   (BRLINE NR)
 DMT      KEYW   (DUMPT FWA,LWA,LEN)
          QUAL   *
          DATA   0           ** END OF TABLE MARK **
          CON    /IDP/UKT=TOK 
 ST=BRL   SPACE  4,10 
**        ST=BRL - HERE TO PROCESS *BRLINE NR*. 
  
  
 ST=BRL   BSS    0           ** ENTRY **
          RJ     PAS         PARSE SUBEXPRESSION
          SA6    FI=BRLI     SAVE (X6) = FTN LINE NR TO BREAK AT
          EQ     IDP=MN 
 CTEXT    SPACE  4,8
*         COMMON DECKS. 
  
  
          QUAL   IDP
  
*CALL     COMDDMT            (DEBUG) DUMP MANAGED TABLES
  
*CALL     COMDTOK            DEBUG UTILITY FOR COMCTOK
          QUAL   *
 COMDTOK  SPACE  4,10 
 LTK      =      /IDP/LTK 
 TOK=IDP  EQUENT /IDP/TOK=IDP 
  
 DMT=     EQU    /IDP/DMT=
 FSNAP    SPACE  4,10 
 #SNAP    ENDIF 
          LIST   D
 ENDSNAP  END                MARK END OF SNAP DECK
**ENDIF TEST
*ENDIF TEST 
