*DECK TRAPPER 
          IDENT TRAPPER 
**DOCK    TITLE  SPACE,4,10                                             01251841
**DOCK    EJECT  4,10                                                   01251842
          ENTRY  TRPSETR,TRAPPER
          B1=1
 TRAPORG  BSS    0
          SPACE  4
          TITLE  TRAPPER -- DEBUG AIDS EXECUTION TIME ROUTINE 
          SPACE  4
***       CONTROL DATA PROPRIETARY PRODUCT
*         COPYRIGHT CONTROL DATA CORP. - 1976, 1977, 1978, 1979, 1980,
*         1981, 1982. 
          SPACE  4
**        THE EXECUTION TIME ROUTINE, TRAPPER, CONSISTS OF TWO PARTS. 
*         THESE PARTS SHARE I/O ROUTINE AND BUFFERS, AND EXECUTION TIME 
*         TABLES.  THE FIRST PART IS THE TRAP SETTER.  IT READS THE FILE
*         ZZZZZ28 (WRITTEN FOR TRAPPER BY TRAP) AND USES THE CRACKED
*         DIRECTIVE TABLES FOUND ON THAT FILE TO BUILD THE EXECUTION
*         TIME TABLES.  THEN THE TRAP IS PLANTED IN THE USER"S PROGRAM
*         AND THE ORIGINAL WORD IS SAVED IN THE EXECUTION TIME TABLE FOR
*         THAT DIRECTIVE.  AFTER ALL TABLES AND DIRECTIVES HAVE BEEN
*         PROCESSED, CONTROL IS TRANSFERED TO THE USER"S PROGRAM. 
*         CONTROL IS RETURNED TO TRAPPER WHEN THE TRAPPED INSTRUCTION IS
*         EXECUTED.  WHEN THE FREQUENCY COUNTS SHOW NO MORE OUTPUT IS 
*         REQUESTED, TRAPPER REPLACES THE TRAPPED INSTRUCTION WITH THE
*         ORIGINAL WORD AND RELEASES THE TABLE. 
* 
* 
*         TABLE FORMATS - 
* 
* 
*         TRAP PLANTED IN THE USER"S PROGRAM -
* 
*         VFD    30/RJ TRAPPER,1/T,11/0,18/POINTER
* 
*                T = 0   TRACK CALL - START TRACING 
*                  = 1   FRAME CALL - PRODUCE FRAME DUMP
*                POINTER = ADDRESS OF EXECUTION TIME TABLE
* 
*         TRAP EXECUTION TIME TABLES -
* 
*         VFD    42/LABEL,18/0
*         VFD    1/A,1/W,1/E,18/IC,21/FROM,18/F                         0076   7
*         VFD    1/R,5/0,18/START,18/EVERY,18/UNTIL 
*         VFD    60/ORIGINAL WORD 
* 
*                A = 0 INACTIVE TRACK TABLE                             0076   9
*                  = 1 ACTIVE TRACK TABLE                               0076  10
*                    USED ONLY FOR TRACK                                0076  11
*                W = 0 TRACK WHEN PARAMETERS FOR THE TRAP 
*                  = 1 NO TRACK WHEN PARAMETERS 
*                      USED ONLY FOR TRACK
*                E = 0 FRAME CM ADDRESS (FROM PARAMETER)                0076  13
*                  = 1 FRAME ECS ADDRESS                                0076  14
*                    USED ONLY FOR FRAME                                0076  15
*                IC = ITERATION COUNT 
*                F = TRACK TO PARAMETER 
*                    FRAME FOR PARAMETER
*                REG = 0 DON"T PRODUCE A REGISTER DUMP
*                    = 1 PRODUCE A REGISTER DUMP
*                        USED FOR FRAME ONLY
* 
*         WHEN LIST FORMAT -
*         VFD    1/R,8/0,21/WHEN,1/L,11/0,18/POINTER
* 
*                R = 0 WHEN ADDRESS 
*                  = 1 WHEN REGISTER
*                L = 0 CM ADDRESS 
*                  = 1 ECS ADDRESS
*                      THERE WILL BE ONE ENTRY IN THE WHEN LIST FOR EACH
*                      WHEN PARAMETER FOUND IN THE DIRECTIVES.
*                POINTER = ADDRESS OF EXECUTION TIME TABLE
          SPACE  4
          TITLE  TRAP SETTER MACROS                                     0076  17
**        ** TRAP SETTER MACROS **
* 
  
**        REWIND -- REWIND FILE 
* 
*         REWIND FET,RCL
*         ENTRY  *FET* = FET ADDRESS
*                *RCL* = AUTO-RECALL INDICATOR
          SPACE  2
          PURGMAC  REWIND 
REWIND    MACRO  A,B
          CIOCALL  A,B,REWINDER 
          ENDM
          SPACE  4
**        ERROR - PRINT ERROR MESSAGE 
* 
* 
*         ERROR  MSG,ADR,ID                                             0076 196
*         ENTRY  *MSG* = ADDRESS OF ERROR MESSAGE.
*                *ADR* = ADDRESS TO RETURN TO 
*                *ID* = PRINT FLAG FOR ERR5 MESSAGE                     0076 198
                                                                        0076 199
                                                                        0076 200
ERROR     MACRO  A,B,C                                                  0076 201
          MESSAGE  ERR0,RCL 
          IFC    NE,*C**,4                                              0076 203
          SA1    TABLE             PICK UP ID FOR BAD DIRECTIVE         0076 204
          BX6    X0*X1             CLEAR TYPE BIT                       0076 205
          SA6    ERR5+3            PUT ID INTO ERROR MESSAGE            0076 206
          MESSAGE  ERR5,RCL 
          MESSAGE  A,RCL
          EQ   B
          ENDM
          SPACE  4
**        TESTBIT - JUMP IF BIT IS SET
* 
*         TESTBIT  ADR1,BIT,ADR2
*         ENTRY  *ADR1* = ADDRESS OF WORD TO BE TESTED
*                *BIT*  = BIT TO BE TESTED
*                *ADR2* = ADDRESS TO JUMP TO
          SPACE  2
TESTBIT   MACRO  A,B,C
          IFC    NE, A2 A ,1
          SA2    A
          LX2    59-B 
          NG   X2,C 
          ENDM
          SPACE  4
**        NOBIT - JUMP IF BIT NOT SET 
* 
*         NOBIT  ADR1,BIT,ADR2
*         ENTRY  *ADR1* = ADDRESS OF WORD TO BE TESTED
*                *BIT*  = BIT TO BE TESTED
*                *ADR2* = ADDRESS TO JUMP TO
          SPACE  2
NOBIT     MACRO  A,B,C
          IFC    NE, A2 A ,1
          SA2    A
          LX2    59-B 
          PL   X2,C 
          ENDM
          SPACE  4
          SPACE  4
**        SUBR - DEFINE SUBROUTINE ENTRY POINT
          SPACE  2
          PURGMAC SUBR
          MACRO  SUBR,TAG 
TAG       EQ     *+400000B
EXIT.     SET    *
          NOREF  EXIT.
TAG_X     EQU    *
          NOREF  TAG_X
          ENDM
*CALL TRAPCOM 
*CALL COMCMVE 
 COB      SPACE  4,8
**        COB - CLEAR OUTPUT BUFFER.
*         FINISH OUTPUT BUFFER IF IT IS NOT EMPTY.
* 
*         USES   X - 1, 2, 6, 7.
*                B - NONE.
*                A - 1, 2, 7. 
*         CALLS  WNB, CIO.
  
  
 COB      SUBR               ENTRY/EXIT 
          SX2    FET
          RECALL X2          WAIT NOT BUSY
          SA1    FET+2
          SA2    A1+B1       CHECK BUFFER POINTERS
          IX7    X1-X2
          ZR     X7,EXIT.    IF BUFFER EMPTY
          WRITER FET,RCL
          EQ     EXIT.       RETURN 
          SPACE  4,8
**        LOCAL SYMBOL DEFINITIONS
  
  
          IFNOS  1
 RA.CMU   =      65B         CMU AVAILABILITY BIT (BIT 59)
          TITLE  CONSTANTS AND COMMON STORAGE AREA
*         STORAGE LOCATIONS AND POINTERS
          SPACE  2
 NEXT     CON    BUF         NEXT AVAILABLE TABLE ADDRESS 
          DATA   0                 NUMBER OF TABLES 
FLCM      DATA   0                 CM FL OF JOB, ADJUSTED FOR TABLES
FLECS     DATA   0                 ECS FL OF JOB
 CMUFLAG  BSSZ   1           CMU AVAILABILITY 
XFER      DATA   0                 XFER ADDRESS OF JOB
WHEN      VFD    60/WLIST          FWA OF WHEN LIST 
          VFD    60/WLIST          NWA OF WHEN LIST 
TBLK      DATA   0                 FWA OF LOADER TABLES                 0076  20
          DATA   0                 LENGTH OF LOADER TABLES              0076  21
LINECNT   VFD    42/0,18/LINELIM   CURRENT LINE NUMBER OF OUTPUT PAGE   0076  22
PAGECNT   DATA   0                 CURRENT OUTPUT PAGE NUMBER           0076  23
 FET      DATA   0                 FET FOR OUTPUT FILE
          VFD    42/0,18/BUF
          VFD    42/0,18/BUF
          VFD    42/0,18/BUF
          VFD    42/0,18/BUF+1001B                                      0076  25
Z17       VFD    42/0LZZZZZ17,18/1  FET FOR LOADER FILE 
          VFD    42/0,18/BUF
          VFD    42/0,18/BUF
          VFD    42/0,18/BUF
          VFD    42/0,18/BUF+1001B                                      0076  27
Z28       VFD    42/0LZZZZZ28,18/1  FET FOR TRAP FILE 
          VFD    42/0,18/BUF
          VFD    42/0,18/BUF
          VFD    42/0,18/BUF
          VFD    42/0,18/BUF+1001B                                      0076  29
TABLE     BSS    0                 WORKING BUFFER 
          BSS    5
HEADER    DIS    1,1               OUTPUT FILE HEADER LINE
          DIS    6,TRAP DUMP
          DIS    2,DEBUG AIDS 
DATE      DIS    1, 
TIME      DIS    1, 
          DIS    1,      PAGE 
PAGE      DATA   0,0
          SPACE  2
USERLWA   EQU    65B
ID        EQU    1                 FLAG FOR MESSAGE ERR5                0076 208
CALL      VFD    12/100B,18/TRAPPER,30/0
CALLTRAP  VFD    12/100B,18/TRAPPER,30/0                                0076  46
          SPACE  4
****
*       TRAP EXECTION TIME ERROR MESSAGES 
* 
* 
ERR0      DIS    ,*ERROR DETECTED BY TRAPPER* 
* 
 ERR1     DIS    ,*INSUFFICIENT BUFFER SIZE * 
* 
ERR2      DIS    ,*COULD NOT FIND BLOCK XXXXXXX*
* 
ERR3      DIS    ,*ERROR ON TRAP FILE ZZZZZ28*
* 
ERR4      DIS    ,*FRAME AT OR TRACK FROM OR TO IS IN ECS*              0076 210
* 
ERR5      DIS    ,*DIRECTIVE NOT PROCESSED - ID= XXXXXXX*               0076 212
* 
ERR6      DIS    ,*TRAP ADDRESS IS OUTSIDE FIELD LENGTH*
*                                                                       0076 416
ERR7      DIS    ,*FOR PARAM MUST BE USED IF FROM IS IN ECS*            0076 417
*                                                                       0076 418
 ERR8     DIS    ,*TO ADDRESS IS LESS THAN FROM ADDRESS*
* 
 ERR9     DIS    ,*MORE THAN 100 WHEN CONDITIONS USED*
****
          SPACE  4
          TITLE  I/O AND CONVERSION ROUTINES
**        COD - CONSTANT TO OCTAL DISPLAY CODE CONVERSION.
*         G. R. MANSFIELD, 12/05/69.
* 
*         COD CONVERTS UP TO 10 DIGITS TO DISPLAY CODE WITH LEADING 
*         ZERO SUPPRESSION.  CONVERSION CONTAINS SPACE FILL AND IS
*         RIGHT JUSTIFIED.
* 
*         ENTRY  (X1) = NUMBER TO BE CONVERTED. 
*                (B1) = 1.
*         EXIT   (X6) = DISPLAY CODE CONVERSION.
*                (B2) = 6*COUNT OF DIGITS IN (X6).
*         USES   X - 1, 2, 3, 4, 6, 7.
*                B - 2, 3, 4. 
*                A - 2. 
*         CALLS  NONE.
          SPACE  2
COD       PS                       ENTRY/EXIT 
          SA2    CODA              =1H
          SB3    6                 (B3) = SHIFT INCREMENT 
          MX4    -3                (X4) = DIGIT MASK
          SB2    B0                CLEAR JUSTFY COUNT 
          SB4    1R0-1R            (B4) = CONVERSION COUNT
COD1      BX7    -X4*X1            EXTRACT DIGIT
          LX2    -6                SHIFT ASSEMBLY 
          SB2    B2+B3
          SX3    X7+B4             CONVERT DIGIT
          AX1    3                 SHIFT OFF DIGIT
          IX2    X2+X3             ADD DIGIT TO ASSEMBLY
          NZ   X1,COD1             LOOP TO ZERO DIGIT 
          LX2    -6                RIGHT JUSTIFY ASSEMBLY 
          LX6    X2,B2
          EQ   COD                 RETURN 
          SPACE  1
CODA      DATA   1H 
          SPACE  4
          TITLE  TRAP SETTER
**        WHEN THE TRAP BIT IN THE CONTROL POINT AREA IS SET, 
*         THE BASIC LOADER LOADS TRAPPER AT RA+100 AND TRANSFERS
*         CONTROL TO THE ENTRY POINT TRPSETR IN TRAPPER INSTEAD OF
*         THE USERS TRANSFER ADDRESS. 
* 
* 
TRPSETR   SB1    1
          CLOCK  TIME        PUT TIME IN HEADER LINE
          BX6    X0                (X6)=(X0)=ECS FL AS PASSED BY LOADER 
          SA6    FLECS             SAVE ECS FIELD LENGTH
          SX6    A0                (X6)=(A0)=CM FL AS PASSED BY LOADER
          SA6    FLCM              SAVE CM FIELD LENGTH 
          REWIND Z28,RCL
          MX0    42                SET MASK IN X0 FOR LATER USE 
          SA1    RA.CMU 
          BX7    X1 
          SA7    CMUFLAG
  
          REWIND  Z17,RCL 
          READ   Z17,RCL
          READW  Z17,XFER,B1
  
          READ   Z17,RCL
          SA1    Z17
          LX1    59-4 
          MI     X1,TRAP0    IF EOR REACHED 
          ERROR  ERR1,DS.AX2
  
 TRAP0    SX2    BUF+2       SOURCE OF MOVE 
          SA4    Z17+2
          SX3    ENDBUF 
          IX1    X4-X2       LENGTH OF MOVE 
          IX3    X3-X1       DESTINATION OF MOVE
          BX6    X3 
          SA6    Z28+4       RESET LIMIT FOR TRAP FILE BUFFER 
          BX7    X1 
          SA6    TBLK 
          SA7    A6+B1
          MOVE   X1,X2,X3    MOVE BLOCK DATA
  
          SPACE  1
**        SET UP TRAP OUTPUT FILE FET 
          SPACE  1
 TRAP1    READ   Z28,RCL     READ A RECORD FROM TRAP FILE 
          SA1    Z28
          LX1    59-4 
          MI     X1,TRAP1B   IF EOR REACHED 
          ERROR  ERR1,DS.AX2
  
 TRAP1B   READW  Z28,TABLE,B1 
          NZ   X1,TRAP4 
          SA1    TABLE             NEW OUTPUT FILE NAME 
          BX1    X0*X1
          MX2    1
          LX2    1
          BX6    X1+X2
          SA6    FET
**        SET UP THE COMMON PARTS OF THE TRAP TABLE.
          SPACE  1
TRAP2     READW  Z28,TABLE,5
          NZ   X1,TRAP5 
          SA4    NEXT              (B2) = TABLE POINTER 
          SB2    X4 
          SA1    TABLE
          SX5    B1                                                     0076  32
          BX3    X5*X1             TYPE CALL PLANTED - FRAME OR TRACK   0076  33
          BX6    X0*X1             LABEL                                0076 215
          SA6    B2 
          SB2    B2+B1
          SA1    A1+2              SET REG(FRAME), START, EVERY, UNTIL
          BX6    X1 
          SA6    B2+B1
          MX5    30                                                     0076  35
          SA1    CALL 
          BX1    X5*X1             CLEAR T BIT, TABLE POINTER 
          BX6    X1+X4
          LX3    29 
          BX6    X6+X3             SET CALL TYPE
          SA6    A1 
  
**        CALL THE APPROPRIATE ROUTINE,EITHER FRAME OR TRACK, 
*         TO FINISH PROCESSING THE CRACKED DIRECTIVE TABLE. 
* 
          ZR   X3,TRACK 
          EQ   FRAME
          SPACE  1
**        PLANT THE TRAP IN THE USER PROGRAM. 
*         SAVE THE USERS ORIGINAL WORD IN THE TRAP TABLE. 
                                                                        0076 217
TRAP3     SA1    FLCM              CHECK FOR OUT OF RANGE TRAP ADDRESS  0076 218
          SB6    X1 
          LT   B3,B6,TRAP3B 
          ERROR  ERR6,TRAP2,ID                                          0076 220
  
 TRAP3B   SA3    B3          (X3) = USERS WORD
          SA2    CALL        (X2) = RJ TRAPPER FOR THIS TRAP
          BX7    X3 
          LX6    X2 
          SA7    B2+2        STORE INTO CURRENT ETT 
          SA6    B3 
          SX7    B2+3        INCREMENT TRAP TABLE POINTER 
          SA7    NEXT 
          SA1    A7+B1
          SX6    X1+B1
          SA6    A1 
          LX2    30 
          PL     X2,TRAP2    IF TRAP IS A TRACK 
          SA1    CALLTRAP    TEST FOR A RJ TRAPPER (FRAME)
          LX2    30          RESTORE X2 
          IX6    X1-X3
          LX3    30 
          AX6    30 
          NZ     X6,TRAP2    IF NOT A RJ TRAPPER
          MI     X3,TRAP2    IF TRAP IS A FRAME 
          LX3    30 
          BX6    X3 
          SA6    B3          USER WORD IS CALL TO FIRST TRACK 
 TRAP3C   SA4    X3+3        GET USER WORD OF REFERENCED TRACK
          IX6    X1-X4
          AX6    30 
          LX4    30 
          NZ     X6,TRAP3D   IF NOT A TRAP
          MI     X4,TRAP3D   IF TRAP IS A FRAME 
          LX4    30 
          BX3    X4 
          EQ     TRAP3C      FIND USER WORD FROM LAST TRACK 
  
 TRAP3D   LX4    30 
          BX6    X2 
          LX7    X4 
          SA6    A4 
          SA7    B2+2 
          EQ     TRAP2
  
TRAP4     TESTBIT  Z28,9,TRAP6     CHECK FOR INCOMPLETE TRAP FILE 
          ERROR  ERR3,TRAP7 
          SPACE  1
**        AT EOR, SET THE PAGE COUNT FOR THE OUTPUT FILE. 
          SPACE  1
TRAP5     SA1    TABLE             PAGE COUNT 
          BX6    X1 
          SA6    PAGECNT
          TESTBIT Z28,9,TRAP6 
          SA3    NEXT 
          BX6    X3 
          SA6    Z28+1
          SA6    A6+B1
          SA6    A6+B1
          EQ     TRAP1
  
 TRAP6    RETURN Z28,RCL     RETURN TRAP FILE 
          DATE   DATE        PUT DATE IN HEADER LINE
  
 TRAP7    RJ     COB         CLEAR OUTPUT BUFFER
          SA3    NEXT 
          BX6    X3 
          SA6    FET+1       SET FIRST POINTER OF OUTPUT BUFFER 
          SA6    A6+B1       SET IN POINTER OF OUTPUT BUFFER
          SA6    A6+B1       SET OUT POINTER OF OUTPUT BUFFER 
  
          SA1    FLCM 
          SA2    A1+B1
          SA0    X1 
          BX0    X2 
  
**        TRANSFER TO USER PROGRAM
* 
          SA1    XFER 
          SB2    X1 
          JP   B2                  TRANSFER TO USER PROGRAM 
          SPACE  4
FRAME     TITLE  TRAP SETTER
**        FRAME - BUILD TRAP TABLE FOR FRAME DIRECTIVE. 
* 
*         THIS ROUTINE SETS UP THE TRAP EXECUTION TIME TABLES FOR FRAME 
*         DIRECTIVES, USING THE PARAMETERS IN THE CRACKED DIRECTIVE 
*         TABLES.  THE AT AND FROM PARAMETER VALUES ARE RELOCATED, AND
*         THE ITERATION COUNT IS SET TO 0.  NORMAL RETURN IS TO TRAP3.
* 
*         ENTRY  (B2) = NEXT+1. 
*                (B1) = 1.
*                (X0) = MASK FOR BLOCK NAME.
*         EXIT   (B3) = ORIGINAL WORD ADDRESS.
*         CALLS  SRCH.
          SPACE  2
FRAME     SA1    TABLE+B1 
          MX4    39 
          LX1    42 
          BX5    -X4*X1            VALUE OF FROM PARAMETER
          SA1    TABLE+4
          BX2    X0*X1             BLOCK NAME FOR FROM
          BX3    -X0*X1                                                 0076 224
          LX3    38                                                     0076 225
          ZR   X2,FRAME1           ABSOLUTE PARAMETER VALUE 
          RJ   SRCH                SEARCH LOADER TABLES FOR BLOCK NAME  0076 227
          SX3    B0                                                     0076 228
          PL   X4,FRAME0                                                0076 229
          MX3    1                                                      0076 230
          BX4    -X3*X4            CLEAR SIGN BIT                       0076 231
          LX3    -20                                                    0076 232
FRAME0    IX5    X5+X4             RELOCATE FROM VALUE                  0076 233
FRAME1    BX6    X5+X3             SET ECS BIT                          0076 234
          LX3    21 
          MX1    59 
          BX4    -X1*X3 
          SA1    FLCM+X4     FETCH APPROPRIATE FL 
          IX4    X5-X1
          MI     X4,FRAME1B  IF WITHIN FIELD LENGTH 
          ERROR  ERR6,TRAP2,ID
  
FRAME1B   LX6    18 
          SA1    TABLE+B1                                               0076 236
          BX4    -X0*X1            VALUE OF FOR PARAMETER               0076 237
          MX2    -17
          BX2    -X2-X4 
          NZ     X2,FRAME2   IF DEFAULT WAS NOT USED
          ZR     X3,FRAME2   IF FROM ADDRESS WAS IN CM
          ERROR  ERR7,TRAP2,ID     FROM WAS IN ECS                      0076 240
                                                                        0076 241
FRAME2    BX6    X6+X4             MERGE FROM AND FOR VALUES            0076 245
          SA6    B2                                                     0076 246
          SA1    TABLE+3
          BX2    X0*X1             BLOCK NAME FOR AT
          SX3    B1                                                     0076 249
          LX3    1                                                      0076 250
          BX3    X3*X1             CHECK LC BIT FOR AT PARAMETER        0076 251
          ZR   X3,FRAME2A          AT CAN NOT BE IN ECS                 0076 252
          ERROR  ERR4,TRAP2,ID                                          0076 253
FRAME2A   SX4    B0                                                     0076 254
          ZR   X2,FRAME3           ABSOLUTE PARAMETER VALUE 
          RJ   SRCH 
          PL   X4,FRAME3                                                0076 256
          ERROR  ERR4,TRAP2,ID                                          0076 257
FRAME3    SA1    TABLE+B1          PICK UP AT VALUE 
          LX1    21 
          BX7    -X0*X1 
          IX7    X7+X4
          SB3    X7 
          EQ   TRAP3
          SPACE  4
TRACK     TITLE  TRAP SETTER
**        TRACK - BUILD TRAP TABLE FOR TRACK DIRECTIVE
* 
*         THIS ROUTINE SETS UP THE TRAP EXECUTION TIME TABLES FOR TRACK 
*         DIRECTIVES, USING THE PARAMETERS FROM THE CRACKED DIRECTIVE 
*         TABLES.  THE FROM AND TO PARAMETER VALUES ARE RELOCATED, AND
*         THE ITERATION COUNT IS SET TO ZERO.  THE WHEN LIST IS BUILT 
*         FROM THE WHEN PARAMETERS AND THE LOADER FILE.  RETURN IS TO 
*         TRAP3.
* 
*         ENTRY  (B2) = NEXT+1. 
*                (B1) = 1.
*                (X0) = MASK FOR BLOCK NAME.
*         EXIT   (B3) = ORIGINAL WORD ADDRESS.
*         CALLS  SRCH.
          SPACE  2
TRACK     SA1    WHEN+B1           NEXT AVAILABEL WORD OF WHEN LIST 
          MX3    6
          SA4    TABLE+B1          WHEN COUNT 
          BX4    X3*X4
          NZ   X4,TRACK0
          MX6    1                 IF THERE ARE NO WHENS, SET A BIT 
          LX6    -1 
          SA6    B2                                                     0076 259
          EQ   TRACK2A
TRACK0    SX5    B2                SAVE TABLE POINTER IN X5 
          LX4    6
          IX2    X1+X4
          SX7    X2-BUF-1 
          MI     X7,TRACK1A  IF WHEN LIST HAS NOT EXTENDED INTO BUF 
          ERROR  ERR9,TRAP7  MORE THAN 100 WHEN"S USED
  
 TRACK1A  READW  Z28,X1,X4
          NZ   X1,TRAP5            ERROR EXIT 
          SB2    X5                RESTORE TABLE POINTER
          SA2    TABLE+B1 
          MX4    30 
          LX4    4
          MX3    6
          BX6    -X4*X2 
          AX6    4                                                      0076 264
          SA6    TRACKA            LC, PC BITS FOR WHEN PARAMETERS
          BX2    X3*X2
          SA4    WHEN+B1           NWA OF WHEN LIST 
          LX2    6
          SB6    X2                (B6) = WHEN COUNT
          SA5    X4                FIRST WHEN PARAMETER 
 TRACK1   BX1    X0*X5       ISOLATE BLOCK NAME 
          BX2    X1-X0
          NZ     X2,TRACK7   IF ADDRESS PARAMETER 
          SA1    TRACKA            SHIFT OFF LC AND PC BITS 
          AX1    2
          BX7    X1 
          SA7    A1 
          BX5    -X0*X5            REGISTER 
          LX5    30 
          MX2    1
          BX6    X5+X2       SET REGISTER BIT 
TRACK2    SX2    B2                TABLE POINTER + 1
          BX6    X6+X2
          SB6    B6-B1             DECREMENT WHEN COUNT 
          SA6    A5 
          SA5    A5+B1             PICK UP NEXT WHEN PARAMETER
          GT   B6,TRACK1           LOOP UNTIL WHEN COUNT = 0
          SX7    A5 
          SA7    WHEN+B1           NEW WHEN LIST NWA
          SX6    B0                                                     0076 261
          SA6    B2                CLEAR NEXT+1                         0076 262
          SPACE  1
TRACK2A   SA1    TABLE+4
          BX5    -X0*X1            TO PARAMETER VALUE 
          BX1    X0*X1             BLOCK NAME FOR TO                    0076 266
          SA2    TABLE+B1 
          MX3    -2 
          LX3    2                                                      0076 269
          BX2    -X3*X2            LC AND PC BITS FOR TO
          ZR   X1,TRACK5           ABSOLUTE OR DEFAULT VALUE            0076 271
          LX2    -2                                                     0076 272
          BX1    X1+X2                                                  0076 274
          RJ   SRCH 
          PL   X4,TRACK2B                                               0076 277
          ERROR  ERR4,TRAP2,ID                                          0076 278
                                                                        0076 279
TRACK2B   IX5    X5+X4             RELOCATE TO VALUE                    0076 280
TRACK3    SA1    FLCM              CHECK FOR OUT OF RANGE TO ADDR       0076 281
          IX1    X1-X5                                                  0076 282
          PL   X1,TRACK3AA                                              0076 283
          ERROR  ERR6,TRAP2,I      TO ADDR IS OUT OF RANGE              0076 284
                                                                        0076 285
TRACK3AA  SA4    B2                                                     0076 286
          BX6    X5+X4                                                  0076 287
          SA6    A4                                                     0076 288
          SA1    TABLE+3
          BX5    -X0*X1            FROM PARAMETER VALUE 
          SA2    TABLE+B1 
          BX6    X0*X1             BLOCK NAME 
          MX3    -2 
          BX2    -X3*X2            LC, PC BITS FOR FROM 
          ZR   X6,TRACK6           ABSOLUTE OF DEFAULT VALUE            0076 290
          BX1    X6+X2
          RJ   SRCH 
          PL   X4,TRACK3A                                               0076 293
          ERROR  ERR4,TRAP2,ID                                          0076 294
TRACK3A   IX5    X5+X4                                                  0076 295
          SA3    B2          TO VALUE                                   0076 296
          BX3    -X0*X3                                                 0076 297
          IX3    X3-X5       COMPARE TO AND FORM VALUES                 0076 298
          PL   X3,TRACK4                                                0076 299
          ERROR  ERR8,TRAP2,ID     TO MUST BE GREATER THEN FROM         0076 300
                                                                        0076 301
TRACK4    SB3    X5                ORIGINAL WORD ADDRESS
          EQ   TRAP3               RETURN 
  
TRACK5    ZR   X2,TRACK5A                                               0076 303
          ERROR  ERR4,TRAP2,ID                                          0076 304
TRACK5A   NZ   X5,TRACK3           RETURN IF ABSOLUTE VALUE             0076 305
          SA5    USERLWA           SET DEFAULT VALUE
          BX5    -X0*X5                                                 0076 421
          SX5    X5-1        USE LWA INSTEAD OF LWA+1 
          EQ   TRACK3 
  
TRACK6    ZR   X2,TRACK6A                                               0076 307
          ERROR  ERR4,TRAP2,ID                                          0076 308
TRACK6A   NZ   X5,TRACK4           RETURN IF ABSOLUTE VALUE             0076 309
          SA5    XFER 
          BX5    -X0*X5            SET DEFAULT VALUE
          EQ   TRACK4 
  
TRACK7    BX1    X0*X5             BLOCK NAME 
          SA2    TRACKA 
          MX4    -2 
          BX4    -X4*X2            LC, PC BITS FOR THIS WHEN PARAMETER
          AX2    2
          BX1    X1+X4
          BX6    X2 
          SA6    A2 
          BX4    X0*X5
          BX5    -X0*X5      (X5) = WHEN PARAMETER VALUE
          ZR   X4,TRACK8           ABSOLUTE PARAMETER VALUE 
          RJ   SRCH 
                                                                        0076 311
          MX3    1
          BX6    -X3*X4 
          BX3    X3*X4
          IX5    X5+X6
          BX5    X5+X3             SET ECS BIT                          0076 318
TRACK8    BX6    X5                                                     0076 319
          LX6    30                                                     0076 320
          EQ   TRACK2              CONTINUE PROCESSING WHEN 
          SPACE  2
TRACKA    DATA   0                 LC AND PC BITS FOR WHEN PARAMETERS 
          SPACE  4
SRCH      TITLE  TRAP SETTER
**        SRCH - SEARCH LOADER FILE 
* 
*         THE FIRST TIME THROUGH THIS ROUTINE, READ THE LOADER *TBLK* 
*         TABLE FROM THE FILE ZZZZZ17, RECORD TWO.  THIS ROUTINE FINDS
*         AN ENTRY IN *TBLK* FOR A PROGRAM OR BLOCK NAME, AND RETURNS 
*         THE FWA OF THE BLOCK. 
* 
*         ENTRY  (X1) = BLOCK NAME AND LC AND PC BITS.
*                (X0) = MASK (MX0 42).
*                (B1) = 1.
*         EXIT   (X4) = BLOCK FWA.
          SPACE  2
SRCH      PS                       ENTRY/EXIT 
**        SEARCH LOADER *TBLK* TABLES.
                                                                        0076 322
SRCH4     BX6    -X0*X1            LC AND PC BITS                       0076 323
          BX1    X0*X1             BLOCK NAME                           0076 324
          SA3    =C*//*                                                 0076 325
          BX3    X1-X3
          ZR   X3,SRCH5 
          SA3    =C*//L*
          BX3    X1-X3
          NZ   X3,SRCH6 
          LX6    1                                                      0076 329
          SX6    X6+B1                                                  0076 330
SRCH5     MX1    0                                                      0076 332
          RJ   SRTBLK              SEARCH LOADER TABLES                 0076 333
          BX2    X3-X6                                                  0076 334
          NZ   X2,SRTBLK2          NO MATCH - CONTINUE SEARCH           0076 335
          EQ   SRCH7                                                    0076 336
                                                                        0076 337
SRCH6     RJ   SRTBLK              SEARCH LOADER TABLES                 0076 338
          SX4    B1                PC BITS MUST MATCH                   0076 339
          BX4    X4*X3             LC AND PC BITS FROM TBLK TABLE       0076 340
          BX2    X6-X4                                                  0076 341
          NZ   X2,SRTBLK2          NO MATCH - CONTINUE SEARCH           0076 342
SRCH7     SA4    A2+B1                                                  0076 343
          LX3    59-1                                                   0076 344
          BX4    -X0*X4            BLOCK ADDRESS                        0076 345
          PL   X3,SRCH                                                  0076 346
          MX3    1
          BX4    X4+X3                                                  0076 349
          EQ   SRCH                                                     0076 350
                                                                        0076 351
                                                                        0076 352
**        SEARCH THE LOADER TABLES FOR THE BLOCK NAME IN X1.            0076 353
*         RETURN THE BLOCK TABLE ADDRESS IN A2.                         0076 354
                                                                        0076 355
SRTBLK    DATA   0                                                      0076 356
          SA2    TBLK                                                   0076 357
          SB5    B1+B1             (B5) = *TBLK* INCREMENT              0076 358
          SA3    A2+B1                                                  0076 359
          SA2    X2-2                                                   0076 360
          SB3    X3                (B3) = LENGTH OF *TBLK*              0076 361
SRTBLK1   SA2    A2+B5                                                  0076 362
          BX3    -X0*X2            LC AND PC BITS                       0076 363
          BX2    X0*X2             BLOCK NAME FROM TABLE                0076 364
          BX2    X1-X2                                                  0076 365
          ZR   X2,SRTBLK                                                0076 366
SRTBLK2   SB3    B3-B5                                                  0076 367
          GT   B3,SRTBLK1                                               0076 368
          LX1    -6 
          SA2    ERR2+2 
          MX4    42 
          LX4    -6 
          BX2    -X4*X2 
          BX6    X1+X2
          SA6    A2 
          ERROR  ERR2,TRAP2,ID                                          0076 370
          SPACE  1
SRCHA     DATA   0
SRCHB     DATA   0
          SPACE  4
          TITLE  I/0 BUFFERS AND STORAGE AREA 
WLIST     BSS    0                 WHEN LIST
 COPYRGHT DATA   C/ CONTROL DATA PROPRIETARY PRODUCT /
          DATA   C/ COPYRIGHT CONTROL DATA CORP. 1976, 1977, 1978,/ 
          DATA   C/ 1979, 1980, 1981, 1982./
          ORG    WLIST
          BSS    100
                                                                        0076  42
BUF       BSS    0                 CIRCULAR BUFFER
          BSS    1002B                                                  0076  44
 ENDBUF   BSS    0
          SPACE  4
          TITLE  EXECUTION TIME SYMBOLS AND MACROS                      0076 372
* 
**        CALLING SEQUENCE REGISTER LISTS 
*         THESE MICROS ARE USED BY THE CALL MACROS TO DEFINE WHAT 
*         REGISTERS ARE USED AS PARAMETER REGISTERS BY THE CALLED 
*         SUBROUTINE. 
* 
 RDRL     MICRO  1,,$A1,X6,X7,B2$ 
 PRRL     MICRO  1,,$A1,B2,B3$
 CRRL     MICRO  1,,$X7$
 BMRL     MICRO  1,,$B3,B4$ 
 TDRL     MICRO  1,,$$
 DARL     MICRO  1,,$A2$
 PORL     MICRO  1,,$A1,B2,B3$
 MEMRL    MICRO  1,,$$
 CLRL     MICRO  1,,$$
 AXRL     MICRO  1,,$X7,A1$ 
 PARL     MICRO  1,,$A1,B3$ 
 PDRL     MICRO  1,,$A1,B2,B3$
 PSRL     MICRO  1,,$B7$
 PIRL     MICRO  1,,$A1,X1,B2,B3$ 
* 
**        ** TRAP EXECUTION TIME MACROS **
* 
  
* 
* 
**        CALL MACROS 
*         THESE THREE MACTOS (CALL,CSG,CSGEN) ARE ALWAYS USED IN
*         CONJUNCTION. THEY LOAD THE REGISTERS SPECIFIED BY THE 
*         CALLING SEQUENCE MICROS WITH THE PROPER PARAMETERS.  THE
*         PARAMETERS ARE POSITIONAL AND IF A PARAMETER IS OMITTED IN THE
*         CALLING SEQUENCE, IT IS ASSUMED TO HAVE BEEN LOADED INTO THE
*         PROPER REGISTER BEFORE THE CALL MACRO WAS INVOKED.  A RETURN
*         JUMP TO THE CORRECT SUBROUTINE IS ISSUED FOLLOWING THE
*         LOADING OF PARAMETER REGISTERS. 
* 
 CALL     MACRO  SR,PL
          CSG    (PL),"SR_RL" 
          RJ     DS.SR
          ENDM
* 
 CSG      MACRO  PL,R1,R2,R3,R4,R5
          CSGEN  R1,R2,R3,R4,R5,PL
          ENDM
* 
 CSGEN    MACRO  R1,R2,R3,R4,R5,P1,P2,P3,P4,P5
          IFC    NE,$P1$$,1 
          S_R1   P1 
          IFC    NE,$R1$$,1 
          CSGEN  R2,R3,R4,R5,,(P2),(P3),(P4),(P5) 
          ENDM
* 
          PURGDEF  RXX
RXX       OPDEF  I,J
          SA0    ECS
          BX0    X.J                                                    0076 377
          RE     B1 
          SA.I   A0                                                     0076 379
          ENDM
* 
EXJ       MACRO  T
          T    X1,IE.TJR
          EQ   IE.END 
          ENDM
* 
EBJ       MACRO  T
          SA5    B2+DD.OBR         FETCH BIT
          SB3    X4-0 
          SB6    B6+X6
          SB4    X5-0 
          T    B4,B3,IE.TJR 
          EQ   IE.END 
          ENDM
* 
**        THE DOX MACRO GENERATES THE PROPER BOOLEAN INSTRUCTION FOR
*         SIMULATION OF THE IX OP CODE INSTRUCTIONS.  THE PROPER X
*         REGISTER IS IN THE DD.NR TABLE.  THE MACRO ALWAYS EXITS TO
*         IE.END. 
* 
DOX       MACRO  I
          I 
          SA6    A0+B2
          EQ   IE.END 
          ENDM
* 
 DOD      OPSYN  DOX
* 
  
 DD.TMP1  BSS    1           TEMPROARY CELLS
 DD.TMP2  BSS    1
 DD.TMP3  BSS    1
 DD.TMP4  BSS    1
 DD.TMP5  BSS    1
RJLEVEL   BSSZ   1                 RETURN JUMP LEVEL                    0076  48
 DD.TMPG  BSS    1                 REGISTER NAMES TEMPORARILY SAVED HERE
 DD.NOPR  DATA   1                 1 - DONT PRINT THE LINE.  0 - DO 
 DD.WHEN  BSS    1           NON-ZERO IF WHENS EXIST FOR THIS TRACK 
 DD.UF    BSS    1           UPPER FLAG 
* 
 DD.NR    BSS    0           NEW REGISTER VALUE ARRAY 
 DD.NXR   BSS    8
 DD.NBR   BSS    8
 DD.NAR   BSS    8
 DD.NP    BSS    1
* 
* 
 DD.POS   BSS    1           POSITION COUNTER 
* 
 DD.OR    BSS    0           OLD REGISTER VALUE ARRAY 
 DD.OXR   BSS    8
 DD.OBR   BSS    8
 DD.OAR   BSS    8
 DD.OP    BSS    1
 DD.ORE   BSS    0
* 
 DD.ID    BSS    1           USER ID
* 
 DD.PAR   BSS    1           PARAMETER FIELD STORAGE
* 
 DD.INST  BSS    1           INSTRUCTION
* 
 DD.LLOC  BSS    3           BEGINNING ADDRESSES OF CORE AREAS TO DUMP
 DD.LENG  BSS    3           NUMBER OF WORDS TO DUMP IN EACH AREA 
 DD.LLAB  BSS    3           NUMBER OF DUMP LABEL 
 DD.NSCM  BSS    1                 NEW VALUE OF AN SCM WORD 
 DD.OSCM  BSS    1                 OLD VALUE OF AN SCM WORD 
* 
* 
 DP.LOC   BSS    1                 BEGINING ADDRESS TO DUMP 
 DP.LIM   BSS    1                 LWA+1 OF DUMP
 DP.LCMF  BSS    1                 0 - DUMP SCM  "0 - DUMP LCM
 DP.T1    BSS    1                 REGISTER SAVE AREAS OVER SUBRTN CALLS
 DP.T2    BSS    1                 .
 DP.T3    BSS    1                 .
 GS.TID   BSS    1                 TEMORARILY HOLDS TRACK - FRAME ID
 GS.FRMF  BSS    0           NON-ZERO IF LAST OPERATION WAS A FRAME 
 GS.TIC   BSS    1                 HOLD ITERATION COUNT FOR PRINTING
 GS.FOR   BSS    1                 HOLD FOR FOR PRINTING
 GS.ADDR  BSS    1           LINK POINTER TO RECURSIVE TRACK ON SAME WORD 
* 
* 
          BSSZ   1                 BUILD INSTRUCTION SEQUENCE 
 GS.ORIG  BSSZ   1                 FOR RETURN TO USER 
          BSSZ   1                 IN THESE THREE WORDS.
* 
* 
 DD.EXA   BSS    1                 TEMPORARILY HOLD TO
IE.T1     BSS    1
IE.T2     BSS    1
ECS       DATA   0                 SCRATCH CELL FOR ECS READ
          BSSZ   1
 MEMRET   CON    0           CURRENT FL RETURNED HERE 
                                                                        0076 374
  
 GS.SHFT  LX1    -18         SHIFT CM ADDRESS TO UPPER END OF WORD
          SB2    6           SET LENGTH OF CM ADDRESS 
  
+         LX1    -21         SHIFT ECS ADDRESS TO UPPER END OF WORD 
          SB2    7           SET ECS ADDRESS LENGTH 
          TITLE  TRAP EXECUTION TIME CONTROL ROUTINE                    0076 375
TRAPPER   PS                       ENTRY/EXIT 
 +        RJ     DS.RS             SAVE REGISTERS IN AREA DD.NR 
 -        VFD    30/DD.NR          .
          SB1    1
          SA1    TRAPPER
          LX1    30                .
          SA1    X1-1              .    PICK UP TRAP FROM USERS CODE
          SX7    A1                .    SAVE THE ADDRESS FOR P REGISTER 
          SX2    X1                                                     0076  50
          SA7    DD.OP       SAVE OLD P ADDRESS 
          PL     X2,GS.1A    IF NOT RJ RETURN 
          SX7    B0                                                     0076  52
          MX6    43D                                                    0076  53
          BX6    -X6*X1                                                 0076  54
          SA6    DD.NP             STORE P ADDRESS                      0076  55
          LX1    30                                                     0076  56
          SA6    DD.OP
          SA7    DD.POS            ZERO POSITION REGISTER               0076  57
          AX1    48                                                     0076  58
          SX6    X1                                                     0076  59
          SA6    RJLEVEL           SET RJ LEVEL                         0076  60
          SA3    NEXT        NEXT AVAILABLE TABLE ADDRESS 
          SA2    BUF-1       FWA-1 OF ETT LIST
          SB2    2
          SB3    X3 
 GS.00    SA3    A2+B2       GET WORD 2 OF ETT TABLE
          SB4    A3 
          GT     B4,B3,IE.IMAG  IF END OF ETT TABLES
          SA2    A3+B2       GET WORD 4 OF ETT TABLE
          PL     X3,GS.00    IF NOT ACTIVE TABLE
          AX2    -12
          IX3    X6-X2       COMPARE RJ LEVELS
          NZ     X3,GS.00    IF NOT SAME LEVEL
          SA4    A3-B1       GET WORD ONE OF ETT TABLE
          BX6    X4 
          SA6    GS.TID      SET NEW TRACK IDENT
          EQ     IE.IMAG                                                0076  61
  
 GS.1A    SX6    X1 
          SA6    GS.ADDR     SAVE LINK POINTER TO LAST TRACK
GS.2      SA2    X1                1ST WORD OF ETT                      0076  63
          SA3    A2+B1             2ND
          SA4    A3+B1             3RD
          SA5    A4+B1             4TH
          SA7    DD.NP             .
          MX0    -18
          LX1    30                POSITION FRAME-TRACK FLAG
          LX3    21                POSITION ITERATION COUNT 
          SX6    B0 
          SA6    GS.FRMF     CLEAR THE FRAME FLAG 
          BX7    X0*X2
          BX6    -X0*X3            ITERATION COUNT
          SA7    GS.TID 
          SX6    X6+B1             I.C. + 1 
          BX3    X0*X3             READY FOR NEW IC 
          LX4    24                POSITION START 
          BX7    X5                SAVE USERS ORIG WORD 
          BX5    -X0*X4            START FIELD
          BX6    X3+X6             PUT IN NEW I.C.
          LX4    18                POSITION EVERY FIELD 
          SA7    GS.ORIG
          SX3    X6                I.C. 
          LX6    39                STORE WORD WITH NEW I.C. 
          BX7    -X0*X4            EVERY VALUE
          LX4    18                UNTIL POSITIONED 
          SA6    A3 
          BX2    X6                2ND WORD OF ETT
          SX6    X4                UNTIL
**
*         X5 = START   X7 = EVERY 
*         X6 = UNTIL   X3 = I.C.
*         X1 = FRAME-TRACK FLAG 
*         X4 = 3RD WORD OF ETT
*         X2 = 2ND WORD OF ETT
* 
 GS.3     IX0    X5-X3
          IX3    X3-X6
          SB3    X3 
          SB3    B3-B1
          NG     X0,GS.1           GO ADJUST START
          NZ     X0,GS.FINI        NO OUTPUT THIS ITERATION 
          PL   B3,GS.FINI          NO OUTPUT UNTIL PARAMETER EXCEEDED 
          MX0    -18
          LX4    24                PUT IN NEW START FIELD 
          IX5    X5+X7
          BX4    X0*X4
          IX6    X6+X3             RECALCULATE I.C. 
          BX7    X4+X5             NEW START FIELD
          SA6    GS.TIC            STORE I.C. 
          LX7    36                REPOSITION EORD 3
          SX6    X2                FOR OR TO FIELD
          SA7    A4                NEW WORD 
          SA7    DD.TMP5
          PL     X1,GS.TR          BRANCH IF TRACK
          LX2    2                 POSITION ECS BIT                     0076 381
          MX0    -21
          AX2    20                POSITION FROM                        0076 383
          SA6    GS.FOR 
          BX7    -X0*X2            FROM 
          NG     X2,GS.4           LCM
          SA2    FLCM 
          SX6    B0 
          EQ     GS.5 
 GS.4     BSS    0
          SA2    FLECS
          SX6    B1 
 GS.5     BSS    0
          IX0    X2-X7
          NG     X0,GS.ER1
          SA3    GS.FOR 
          SA7    DP.LOC 
          IX3    X3+X7
          SA6    DP.LCMF
          BX7    X3 
          SA4    GS.SHFT+X6 
          BX6    X4 
          SA6    PA.0        PLUG DS.PO INITIALIZATION CODE 
          IX0    X2-X3
          PL     X0,GS.7
          SX7    X2-1 
 GS.7     BSS    0
          SA7    DP.LIM 
          EQ     GS.8 
 GS.1     BSS    0
          IX3    X3+X6
          IX5    X5+X7
          EQ     GS.3 
 GS.8     BSS    0
          CALL   CR,B0
          CALL   CR,B0
          SA1    =14HFRAME IDENT -
          CALL   PR,(,14,3) 
          SA1    GS.TID 
          NZ   X1,GSF1A 
          SA1    =C*  *            INSERT BLANKS FOR OUTPUT WITH NO ID
GSF1A     CALL   PR,(,7,B0) 
          SA1    =14HPRODUCED AT -
          CALL   PR,(,14,8) 
          SA1    DD.NP
          LX1    42 
          CALL   PO,(,6,B0) 
          SA1    =22HFOR AN AREA BETWEEN -
          CALL   PR,(,22,8) 
          SA1    DP.LOC 
          CALL   PA,(,0)
          SX1    3RAND
          LX1    42 
          CALL   PR,(,3,B1) 
          SA1    DP.LIM 
          CALL   PA,(,1)
          SA1    =16HITERATION NO. -
          CALL   PR,(,16,8) 
          SA1    GS.TIC 
          LX1    42 
          CALL   PO,(,6,B0) 
          CALL   CR,1R0 
          SA1    DD.TMP5
          PL     X1,GS.9
          CALL   RD,(GS.TID,(=30HREGISTER SNAP),DD.NR,1R0)
 GS.9     BSS    0
          CALL   CR,1R
          RJ     DS.OD
          EQ     GS.FINI
* 
* 
 GS.ER1   BSS    0
* 
* 
          CALL   CR,1R
          CALL   PS,1R
          CALL   PR,(RD.STAR,B1,B0) 
          CALL   PR,(=18LERROR IN DIRECTIVE,18,35)
          CALL   PR,(GS.TID,10,B1)
          CALL   PR,(=34LSNAP AREA NOT WITHIN FIELD LENGTH.,34,B1+B1) 
          CALL   PR,(RD.STAR,B1,36) 
          CALL   CR,1R
          CALL   PS,1R
* 
* 
 GS.FINI  BSS    0
* 
* 
          SA1    DD.NP
          SA4    GS.ORIG           USER ORIGINAL WORD                   0076 425
          SA2    CALLTRAP          COMPARE TO RJ TRAPPER                0076 426
          BX2    X4-X2                                                  0076 427
          AX2    30                                                     0076 428
          NZ   X2,GS.F2            EXIT FROM TRAPPER                    0076 429
          BX5    X1                SAVE P REGISTER OF NEW CALL          0076 430
          RJ     COB         CLEAR OUTPUT BUFFER
          BX7    X5                RESTORE P REGISTER                   0076 432
          LX1    X4                NEW USER TRAP WORD 
          EQ   GS.2                CONTINUE WITH NEW CALL               0076 434
                                                                        0076 435
 GS.F2    SA3    GS.ADDR
          SA2    X3 
          SX3    X2 
          SX7    B1+B1             TO THE USER
          SX1    X1+B1             .
          LX7    24                .
          BX7    X7+X1             .
          LX7    30                .
          SA7    GS.ORIG+1         .
          NZ     X3,GS.F4    IF WITHIN AN ACTIVE TRACK
  
          RJ     COB         CLEAR OUTPUT BUFFER
 +        RJ     DS.RR             RESTORE USERS REGS 
 -        VFD    30/DD.NR 
          RJ     GS.ORIG-1         EXECUTE USER ORIGINAL INSTRUCTUONS 
*                                  AND RETURN CONTROL 
  
 GS.F4    SX7    B0 
          SX6    GS.ORIG
          SA7    DD.POS      RESET POSITION COUNTER 
          SA6    DD.OP
          SA6    DD.NP
          EQ     REC2 
          TITLE  SNAP DUMP GENERATOR
* 
**        OD - OCTAL DUMP GENERATOR 
* 
* 
  
 OD.DPL   BSS    4           WORDS TO BE DISPLAYED
 OD.NXT   BSS    1           STORAGE FOR PRE-FETCH DURING CM DUMP 
  
 OD.PLUG  SA3    OD.NXT      PLUG CODE FOR CM DUMP
          SB2    B0 
          BX7    X3 
  
+         EQ     OD.2ECS     PLUG CODE FOR ECS DUMP 
  
 OD.A0    BSS    1
          JP     B2+OD.A     JUMP TO SCM OR LCM DUMP PROCESSING 
 OD.A     SA4    X0 
          BX7    X4 
          SA7    OD.NXT 
  
 OD.0     SA0    OD.DPL 
          SA6    A1 
  
 OD.1     NO                 WORD WILL BE PLUGGED 
  
+         SB3    4
          SA7    OD.DPL 
          SX2    X5+B3
          BX5    X3 
          MI     X2,OD.2CM
          SB3    B3-B1
  
 OD.2CM   SB2    B2+B1       READ AND COMPARE 4 WORDS OF CM 
          BX2    X3-X5
          SA3    X0+B2
          BX4    X4+X2
          BX7    X3 
          SA7    A0+B2
          LT     B2,B3,OD.2CM 
          EQ     OD.3 
  
 OD.2ECS  RE     4           READ AND COMPARE 4 WORDS OF ECS
          EQ     OD.ERR 
          SA1    OD.DPL 
          SA2    OD.DPL+1 
          SA3    OD.DPL+2 
          SA5    A3+B1
          BX2    X1-X2
          BX3    X1-X3
          BX6    X1-X5
          BX4    X2+X3
          BX4    X4+X6
  
 OD.3     SA2    DP.T1
          NZ     X4,OD.5     IF WORDS NOT EQUAL 
          NG     X4,OD.5     IF WORDS NOT EQUAL 
  
          MI     X2,OD.4     IF NEW SKIP SEQUENCE 
          SA3    A2+B1
          IX4    X3-X5
          ZR     X4,OD.7     IF SAME SKIP SEQUENCE
          RJ     DS.DL
  
 OD.4     SA1    DP.LOC 
          SA5    OD.DPL 
          BX6    X1 
          BX7    X5 
          SA6    DP.T1
          SA7    DP.T2
          EQ     OD.7 
  
 OD.5     MI     X2,OD.6     IF NOT TERMINATING A SKIP
          RJ     DS.DL
  
 OD.6     SA1    DP.LOC 
          CALL   PA,(,0)
          CALL   PO,(OD.DPL,20,2) 
          CALL   PO,(OD.DPL+1,20,1) 
          CALL   PO,(OD.DPL+2,20,1) 
          CALL   PO,(OD.DPL+3,20,1) 
          CALL   PD,(OD.DPL,10,2) 
          CALL   PD,(OD.DPL+1,10,0) 
          CALL   PD,(OD.DPL+2,10,0) 
          CALL   PD,(OD.DPL+3,10,0) 
          CALL   CR,1R
          SX6    -1 
          SA6    DP.T1
  
 OD.7     SA1    DP.LOC 
          SX3    4
          SX4    B1 
          IX0    X1+X3
          SA2    DP.LIM 
          IX5    X0-X4
          MX4    0
          IX5    X5-X2
          BX6    X0 
          NG     X5,OD.0     IF DUMP NOT COMPLETE 
  
          SA1    DP.T1
          MI     X1,DS.OD    IF LAST LINE HAS ALREADY BEEN PRINTED
          SA6    DP.LOC 
          RJ     DS.DL
  
 DS.OD    BSS    1
          SA4    DP.LIM 
          SA1    DP.LOC 
          IX4    X4-X1
          SA3    DP.LCMF
          ZR     X4,DS.OD    IF ZERO LENGTH DUMP
          SX2    3
          SA4    OD.PLUG+X3 
          SB2    X3 
          MX6    1
          BX7    X4 
          BX0    -X2*X1      CREATE MOD 4 ADDRESS 
          SA6    DP.T1       INITIALIZE SKIP FLAG 
          SX4    B1          INITIALIZE NON-IDENTICAL FLAG
          BX6    X0 
          SA7    OD.1        PLUG FETCH CODE JUMP 
          RJ     OD.A0       CLEAR EXECUTION STACK
  
 OD.ERR   SA2    DP.T1
          MI     X2,OD.E1    IF NO SKIP HAS OCCURRED
          RJ     DS.DL
 OD.E1    CALL   PR,((=31HAN ECS READ ERROR HAS OCCURRED.),31,5)
          CALL   PR,((=37H  THE FOLLOWING LINE MAY BE IN ERROR.),37,0)
          CALL   CR,1R
          EQ     OD.6 
  
 DS.DL    BSS    1
          SA1    DP.T1
          CALL   PA,(,0)
          SA1    =4HTHRU
          CALL   PR,(,4,2)
          SA1    DP.LOC 
          SX2    B1 
          IX1    X1-X2
          CALL   PA,(,2)
          SA1    =7HCONTAIN 
          CALL   PR,(,7,2)
          CALL   PO,(DP.T2,20,B1) 
          CALL   PD,(DP.T2,10,2)
          CALL   CR,1R
          EQ     DS.DL
          TITLE              REGISTER SAVE ROUTINE
* 
**        RS - REGISTER SAVE ROUTINE
*         CALLING SEQUENCE -
* +       RJ     DD.RS
* -       VFD    30/ARRAY 
* 
*         UPON RETURN - ARRAY TO ARRAY+23 CONTAIN 
*         X0-X7, B0-B7, A0-A7.
* 
 DS.RS    BSS    1
 RS.1     LT     B1,*+2      SAVE B1 WITH RETURN JUMPS
+         RJ     *
-         VFD    30/1 
          DUP    17 
+         SB1    B1+B1
          NO
          LT     B1,*+2 
+         RJ     *
-         VFD    30/1 
          ENDD
          SB1    A7-B0
          SA7    DD.TMP1     X7 
          BX7    X1 
          SA7    DD.TMP2     X1 
          SX7    B1-B0
          SA7    DD.TMP3     A7 
          SX7    A1-B0
          SA7    DD.TMP4     A1 
          SA1    DS.RS
          MX7    60-18
          AX1    30 
          BX1    -X7*X1 
          SA1    X1-1        GET THE SAVE AREA LOC
          SB1    X1 
          SA1    DD.TMP2
 I        SET    1           SAVE THE X REGISTERS 
          DUP    7
 RN       MICRO  I,1,$01234567$ 
          BX7    X"RN"
          SA7    B1+I-1 
 I        SET    I+1
          ENDD
          SA1    DD.TMP1
          BX7    X1 
          SA7    A7+1 
          MX7    0           SAVE THE B REGS (EXCEPT B1)
          SA7    B1+8 
 I        SET    3
          DUP    6
 RN       MICRO  I,1,$01234567$ 
          SX7    B"RN"-B0 
          SA7    B1+I+7 
 I        SET    I+1
          ENDD
          SA1    DD.TMP4     SAVE THE A REGS
          SA1    X1-0 
 I        SET    1
          DUP    7
 RN       MICRO  I,1,$01234567$ 
          SX7    A"RN"-B0 
          SA7    B1+I+15
 I        SET    I+1
          ENDD
          SA1    DD.TMP3
          BX7    X1 
          SA7    A7+1 
          SB2    1           RECONSTRUCT B1 AND RESTORE THE VFD 
          SB3    36 
          SB4    B2+B2
          SA2    =10100000000B
          MX0    60-18
          MX7    0
 RS.2     BSS    0
          SA3    B2+RS.1
          SB2    B2+B4
          LX7    1
          BX3    -X0*X3 
          SX4    A3 
          BX6    X2+X4
          LX6    30 
          SA6    A3 
          IX7    X7+X3
          LT     B2,B3,RS.2 
          LX7    42 
          AX7    42 
          SA7    B1+8+1 
          EQ     DS.RS
          TITLE              REGISTER RESTORE ROUTINE 
* 
**        RR - REGISTER RESOTRE RETURN
*         CALLING SEQUENCE
* +       RJ     DD.RR
* -       VFD    30/LOC 
* 
 DS.RR    BSS    1
          SA1    DS.RR
          MX0    60-18
          AX1    30 
          BX1    -X0*X1 
          SA1    X1-1 
          SB1    X1 
          SB3    3           SETUP B1-B7, A0 IN THE FALL THRU CODE
          SA1    B1+17
          MX4    60-18
 RR.1     SA1    A1-2        UPPER
          SA2    A1+1        LOWER
          SA3    B3+RR.2
          BX2    -X4*X2 
          BX3    X4*X3
          BX3    X2+X3
          LX3    30 
          BX3    X4*X3
          BX1    -X4*X1 
          BX6    X1+X3
          LX6    30 
          SA6    A3 
          SB3    B3-1 
          PL     B3,RR.1
          SA1    B1+16+1     RESTORE A1-A7, X2-X7 
          BX6    X1 
          SA6    DD.TMP1     A1 
          SA1    B1+16+7     A7 
          SA1    X1-0        (A7) 
          BX7    X1 
          SA7    A1-B0
          SA1    B1+16+6     A6 
          SA1    X1-0        (A6) 
          BX6    X1 
          SA6    A1-B0
          SA1    B1+16+2     A2 
          SA2    X1-0 
          SA1    B1+16+3     A3 
          SA3    X1-0 
          SA1    B1+16+4     A4 
          SA4    X1-0 
          SA1    B1+16+5     A5 
          SA5    X1-0 
          SA1    B1+2        X2 
          BX2    X1 
          SA1    A1+1        X3 
          BX3    X1 
          SA1    A1+1        X4 
          NO
          BX4    X1 
          SA1    A1+1        X5 
          NO
          BX5    X1 
          SA1    A1+1        X6 
          NO
          BX6    X1 
          SA1    A1+1        X7 
          BX7    X1 
          SB7    B1 
          SA1    B7+1 
          UX0    X1,B1
          LX0    11 
          UX1    X0,B2
          LX1    11 
          UX0    X1,B3
          LX0    11 
          UX1    X0,B4
          MX0    60 
          SA0    X0-0 
          LX1    11 
          UX0    X1,B5
          SA1    B7          X0 
          LX0    11 
          SB7    X0-0        SIGN OF X1 TO B7 
          UX0    X0,B6
          BX0    X1 
          SA1    DD.TMP1
          SA1    X1-0 
          SX1    B7-B0       RESTORE SIGN OF X1 
          PX1    X1,B6       RECONSTRUCT X1 
          AX1    11 
          PX1    X1,B5
          AX1    11 
          PX1    X1,B4
          AX1    11 
          PX1    X1,B3
          AX1    11 
          PX1    X1,B2
          AX1    11 
          PX1    X1,B1
 RR.2     SB1    A0+*        FALTHRU TO RESTORE B1-B7, A0 
          SB2    A0+* 
          SB3    A0+* 
          SB4    A0+* 
          SB5    A0+* 
          SB6    A0+* 
          SB7    A0+* 
          SA0    A0+* 
          EQ     DS.RR
          TITLE              OUTPUT OPERATIONS
* 
 DD.WS    DATA   1H          LINE BUFFER
          BSS    14 
 DD.SCR   DATA   54          SHIFT COUNT
 DD.WC    DATA   0           WORD COUNT 
 DD.CP    DATA   1           CHAR COUNT 
          SPACE  4
* 
* 
**        PR - ADD N CHARACTERS TO THE LINE BUFFER, PRINT BEFORE IF 
*         OVERFLOW WOULD OCCUR. 
*         CALLING SEQUENCE -
*         A1, X1 = FIRST
*         B1 = 1
*         B2 = CHAR COUNT 
*         B3 = BLANKS TO PRINT FIRST
* 
 PR.3     BSS    0
          SB7    B2+B6       GOOD BIT COUNT 
          MX4    0
          ZR     B7,PR.2
          SB6    B7-1 
          MX4    1
          AX4    X4,B6       MASK 
 PR.2     BSS    0
          SX6    B5-B1
          BX7    X4*X7       CLEAN OFF GOOD CHARACTERS
          SA6    DD.WC
          BX5    -X4*X5      BLANK FILL 
          SX6    -B2
          BX7    X7+X5       SUPPLY TRAILING BLANKS 
          SA6    A6-B1
          LX7    X7,B7       ADJUST GOOD CHARS LOWER
          SB0    0
          SA7    A7 
* 
 DS.PR    BSS    1
          CALL   PI 
          MX6    1
          SB6    B2+B2
          SB7    B4-B1
          SB2    B6+B6
          AX6    X6,B7       MASK SCR 
          SB2    B6+B2       CC*6 
          BX3    -X6*X7      REMOVE TRAILING BLANKS 
          SB6    B4 
 PR.1     BSS    0
          BX2    X6*X1       UPPER INPUT
          SB2    B2-B6       CC - SCR 
          BX7    X2+X3       UPPER + LOWER
          BX3    -X6*X1      LOWER INPUT
          SA1    A1+B1       NEXT INPUT 
          LX7    X7,B4       JUSTIFY
          SB6    60          SCR = 60 
          SA7    A0+B5       STORE
          SB5    B5+B1       WC+1 
          GE     B2,B0,PR.1  JUMP IF CC GE 0
          EQ     PR.3 
          SPACE  4
* 
**        PD - PRINT DISPLAY
*         BLANK ALL ZERO BYTES
*         CALLING SEQUENCE -
*         A1,X1 = INPUT 
*         B2 = CHAR COUNT 
*         B3 = SPACE COUNT
* 
* 
 DS.PD    BSS    1
          CALL   PI 
          SX6    B4 
          MX0    1
          SA6    DD.SCR 
          SB7    B4-B1
          AX0    X0,B7
          SB2    60          CC * 6 
          BX3    -X0*X7      REMOVE TRAILING BLANKS 
  
          LX6    X1,B1       MERGE CHARACTER BITS 
          SB7    B1+B1
          BX7    X1+X6
          LX2    X7,B7
          SA4    =10101010101010101010B 
          BX6    X2+X7
          LX7    -2 
          BX2    X6+X7
          BX4    X4*X2       SET NON-00 CHARACTERS
          AX7    X4,B1       EXPAND TO CHARACTER MASK 
          BX2    X7+X4
          SA4    =1H
          LX7    X2,B7
          BX6    X2+X7
          AX7    X2,B7
          BX7    X6+X7
          BX4    -X7*X4      SPACE FILL WORD
          BX1    X1+X4
  
          BX2    X0*X1
          BX4    -X0*X1 
          BX7    X2+X3
          LX7    X7,B4       JUSTIFY DISPLAY
          SB2    B2-B4       DECREMENT CHARACTER COUNT
          SA7    A0+B5
          SB5    B5+B1       INCREMENT WORD COUNT 
          EQ     B2,B0,PD.1  IF CHARACTER COUNT = 0 
          BX7    X0*X5
          BX5    X7+X4       BLANK FILL NEW WORD
  
 PD.1     BX7    X5 
          SX6    B5 
          SA7    A0+B5
          SA6    DD.WC
          EQ     DS.PD
          SPACE  4
* 
*         PS - PRINT STARS, GENERATE A COMPLETE LINE OF STARS.
*         CALLING SEQUENCE -
*         B7 = CARRIGE CONTROL CHARACTER
* 
* 
 DS.PS    BSS    1
          SA5    RD.STAR
          SA4    =10H 
          SB3    6
          SB2    B1+B1
          MX0    36 
          BX6    X5 
          BX7    X5 
          SA6    DD.WS
          SA7    DD.WS+1
 PS.1     BSS    0
          SB3    B3-1 
          SA6    A6+B2
          SA7    A7+B2
          GT     B3,B0,PS.1 
          BX4    -X0*X4 
          SX6    B0 
          BX7    X0*X7
          SA6    DD.SCR 
          BX7    X4*X7
          SX6    13 
          SA7    A7 
          SA6    DD.WC
          CALL   CR,B7
          EQ     DS.PS
          SPACE  4
* 
**        PO - PRINT OCTAL TO CURRENT LINE
*         CALLING SEQUENCE -
*         B1 = 1
*         B2 = CHAR COUNT 
*         B3 = SPACE BEFORE PRINTING
*         X1 = DATA, UPPER
* 
 DS.PO    BSS    1
          CALL   PI 
          SB7    6
          MX6    57 
 PO.0     BSS    0
          LX1    3
          LX7    6
          BX2    -X6*X1 
          SB2    B2-B1
          SX2    X2-22B 
          SB4    B4-B7
          IX7    X7+X2
          GT     B4,B0,PO.1 
          SA7    A0+B5
          BX7    X5 
          SB5    B5+1 
          SB4    60 
 PO.1     BSS    0
          GT     B2,B0,PO.0 
          SX6    B5 
          SA7    A0+B5
          SX7    B4 
          SA6    DD.WC
          SA7    DD.SCR 
          EQ     DS.PO
  
 DS.PA    BSS    1
 PA.0     NO                 WORD WILL BE PLUGGED WITH DS.PO INIT CODE
+         CALL   PO 
          EQ     DS.PA
          SPACE  4
* 
**        PI - PRINT INITIALIZATION 
*         CALLING SEQUENCE -
*         A1,X1 = INPUT DATA
*         B2 = CHARACTER COUNT (CC) 
*         B3 = SPACE COUNT (SC) 
*         RJ
*         UPON EXIT - 
*         CR HAS BEEN PERFORMED IF NECESSARY, 
*         HORIZONTAL SPACING HAS BEEN DONE, AND 
*         X0 = M54          B2 = CC      A0 = WS
*         X1,A1 = INPUT     B4 = SCR
*         X5 = BLANKS       B5 = WC 
*         X7 = CW 
* 
* 
 PI.1     BSS    0           DO THE BLANK FILL
          SA4    B5+DD.WS 
          SA0    DD.WS
          SA7    DD.CP
          MX0    54 
          BX7    X4 
 PI.2     BSS    0
          SB3    B3-B4
          LT     B3,B0,PI.3 
          LX7    X7,B4
          SB4    60 
          SA7    A0+B5
          SB5    B5+B1
          BX7    X5 
          EQ     PI.2 
  
 PI.3     BSS    0
          SB6    B3+B4
          SB4    -B3
          LX7    X7,B6
* 
 DS.PI    BSS    1
          SA4    DD.CP
          SA2    DD.WC
          SA3    DD.SCR 
          SB6    B3+B3
          SB7    B2+B3
          SB5    B6+B6
          SA5    =10H 
          SX7    X4+B7
          SB3    B5+B6       SC*6 
          SX6    X7-137 
          SB5    X2 
          SB4    X3 
          NG     X6,PI.1     SENSE CP LE 136
          SA3    DD.NOPR
          NZ     X3,TD.NPEX  IF NO-PRINT FLAG ON
          SX7    B2 
          SX6    A1 
          SA7    DD.TMP1     SAVE B2,A1,X1 IN TMP1-TMP3 
          BX7    X1 
          SA6    A7+B1
          SA7    A6+B1
          CALL   CR,1R
          SA1    DD.TMP1
          SA3    A1+2 
          SA2    A1+B1
          SA6    A6+B1       BLANKS TO WS+1 
          SB5    2
          SB4    6
          SB2    X1 
          SA1    X2 
          SX7    B2+27
          SA6    A6+B1       BLANKS TO WS+2 
          SB3    B0 
          BX1    X3 
          EQ     PI.1 
          SPACE  4
* 
**        CR - CARRIAGE RETURN, OUTPUT THE CURRENT LINE AND 
*         RE-INITIALIZE THE LINE BUFFER.
*         THE LINE BUFFER.
*         CALLING SEQUENCE -
*         B1 = 1
*         X7 = CARRIAGE CONTROL CHARACTER 
* 
 DS.CR    BSS    1
          SA4    LINECNT           LINE COUNT 
          SX6    X4+1 
          SX5    1R0
          IX1    X5-X7
          NZ     X1,CRA      IF NOT SKIPPING TWO LINES
          SX6    X6+B1
 CRA      SX4    X6-LINELIM 
          NG   X4,CR1              END OF PAGE NOT REACHED
          BX5    X7                SAVE CARRIAGE CONTROL CHARACTER
          SA1    PAGECNT
          SX1    X1+1 
          BX6    X1 
          SA6    A1          NEW PAGE NUMBER
          RJ   CDD
          SA6    PAGE 
          WRITEC  FET,HEADER
          WRITEC  X2,(=C*  *) 
          SX6    B1+B1
          BX7    X5                RESTORE CARRIAGE CONTROL CHARACTER 
CR1       SA6    LINECNT
          SA4    DD.WC
          SB3    DD.WS
          SA5    DD.SCR 
          SA3    X4+B3
          SB7    X5 
  
          SA1    B3 
          MX6    6
          LX7    54 
          BX1    -X6*X1 
          BX7    X1+X7       INSERT CARRIAGE CONTROL CHARACTER
          SA7    A1 
  
          SB3    X4          SET OFFSET OF TERMINATOR 
          SX7    B0 
  
          SB6    B7-60
          ZR     B6,CR2 
          SB3    B3+B1
          LX6    X3,B7
          SA6    A3 
          SB5    B7-6 
          ZR     B5,CR2      IF ZERO FILL UNNECESSARY 
  
          MX2    1
          SB6    B6+B1
          LX2    B6,X2
          BX6    X6*X2       MASK IN ZEROES 
          SA6    A3 
  
 CR2      SA7    DD.WS+B3    STORE TERMINATOR 
          WRITEC FET,DD.WS
          SA5    =10H 
          SX6    B0 
          SX7    B1 
          SA6    DD.WC
          BX6    X5 
          SA7    DD.CP
          SX7    54 
          SA6    DD.WS
          SA7    DD.SCR 
          EQ     DS.CR
          TITLE              REGISTER CONTENTS DISPLAY GENERATOR
* 
**        RD - REGISTER DISPLAY 
*         CALLING SEQUENCE -
*         X1 = ID (USER SUPPLIED, 10 CH)
*         X6 = LOCATION OF TITLE (30 CH)
*         X7 = LOCATION OF REGISTER ARRAY 
*         B1 = 1
*         B2 = CARRIGE CONTROL CH 
* 
 RD.STAR  BSS    0           STARS FOR BORDERS
          DATA   10H**********
* 
 RD.TMP1  BSS    1
 RD.TMP2  BSS    1
 RD.TMP3  BSS    1
 RD.TMP4  BSS    1
 RD.TMP5  BSS    1
 RD.TMP6  BSS    1
* 
* 
 DS.RD    BSS    1
          SA6    RD.TMP2
          BX6    X1 
          SA7    A6+B1
          SA6    RD.TMP1
* 
**        IF THERE ISN"T ENOUGH ROOM ON THE CURRENT PAGE FOR THE ENTIRE 
*         REGISTER DISPLAY, START A NEW PAGE. 
* 
          SA2    LINECNT
          SX2    X2+13B 
          SB3    1R0
          SB3    B3-B2
          NE     B3,B0,RD1B  IF NOT SKIPPING TWO LINES
          SX2    X2+B1
 RD1B     SX2    X2-LINELIM 
          NG   X2,RD1A
          SX6    LINELIM           RESET LINE COUNT TO FORCE PAGE EJECT 
          SA6    A2 
RD1A      CALL   PS,B2
          CALL   PR,(RD.STAR,B1,B0) 
          SA1    RD.TMP2
          CALL   PR,(X1,30,B1)
          CALL   PR,(RD.TMP1,7,5) 
          SX1    3RP =
          LX1    42 
          CALL   PR,(,3,8)
          SA1    RD.TMP3
          SA1    X1+24
          LX1    42 
          CALL   PO,(,6,B1) 
          CALL   PR,((=10HCM FL = ),8,5)
          SA1    FLCM 
          LX1    42 
          CALL   PO,(,6,B0) 
          CALL   PR,((=10HECS FL = ),9,5) 
          SA1    FLECS
          LX1    39 
          CALL   PO,(,7,B0) 
          SA1    DD.CP
          BX2    -X1
          CALL   PR,(RD.STAR,B1,X2+129) 
          CALL   CR,1R
          SPACE  4
**        GENERATE REGISTER DISPLAY 
*         TMP1 = REGISTER NUMBER
*         TMP2 = A OR B FLAG
*         TMP3 = BASE LOC OF REGISTER ARRAY 
*         TMP4  = ADD 
*         TMP5, TMP6 = REGISTER NAMES 
* 
          MX7    0
          NO
          SA7    RD.TMP1     INDEX = 0
 RD.1     BSS    0
          SA1    =10HA0=B0=X0=
          SA2    =10H(A0)=(B0)= 
          LX7    12 
          IX1    X1+X7
          IX2    X2+X7
          LX7    18 
          IX1    X1+X7
          LX7    12 
          IX6    X2+X7
          LX7    6
          IX7    X1+X7
          SA6    RD.TMP6     CONSTRUCT AND STORE REGISTER NAMES 
          SX6    8
          SA7    RD.TMP5
          SA6    RD.TMP2
          CALL   PR,(RD.STAR,B1,B0) 
          SB3    10 
 RD.2     BSS    0
          SA1    RD.TMP5
          SA4    RD.TMP1     INDEX
          SA5    RD.TMP2     SUB INDEX
          BX7    X1 
          IX4    X4+X5
          LX7    18 
          SA7    A1 
          ZR     X4,RD.4     DONT PRINT B0
          CALL   PR,(,3,) 
          SA2    RD.TMP1
          SA3    A2+B1
          SA4    A3+B1
          IX5    X2+X3
          IX5    X5+X4
          SA1    X5+8 
          BX7    X1 
          LX1    42 
          SA7    RD.TMP4
          CALL   PO,(,6,B0)  PRINT THE REGISTER CONTENTS
          SA4    RD.TMP4
          SA5    FLCM 
          SB3    35 
          IX5    X4-X5
          SA1    RD.TMP6     ELSE PRINT CONTENTS
          BX7    X1 
          LX7    30 
          SA7    A1 
          NG     X4,RD.3     IF ADDRESS IS NEG
          PL     X5,RD.3     IF ADDRESS .GE. FLS
          CALL   PR,(,5,5)
          SA5    RD.TMP4
          CALL   PO,(X5,20,B0)
          SB3    5
          EQ     RD.3 
 RD.4     BSS    0
          SB3    B3+44
 RD.3     BSS    0
          SA5    RD.TMP2
          SX7    X5-8 
          SA7    A5 
          PL     X7,RD.2
          CALL   PR,(RD.TMP5,3,)
          SA4    RD.TMP1
          SA5    RD.TMP3
          SB7    X4 
          CALL   PO,(X5+B7,20,B0) 
          SA5    DD.CP
          BX5    -X5
          CALL   PR,(RD.STAR,B1,X5+129) 
          CALL   CR,1R
          SA5    RD.TMP1
          SX7    X5+B1
          SX5    X5-7 
          SA7    A5 
          NZ     X5,RD.1
          CALL   PS,1R
          EQ     DS.RD
          TITLE  CHECK ADDRESS WITHIN FIELD LENGTH. 
**        CFL - CHECK ADDRESS WITHIN FIELD LENGTH.
* 
*         ENTRY  (B5) = ADDRESS TO CHECK. 
* 
*         EXIT   IF ADDRESS BELOW FIELD LENGTH TO RETURN ADDRESS. 
*                IF ADDRESS ABOVE FIELD LENGTH TO *IE.FLER*.
  
  
 CFL      BSS    1           ENTRY/EXIT 
          SA1    RA.LWP 
          SX1    X1 
          PL     X1,CFL1     IF CMM NOT ACTIVE
          BX1    -X1
          SA1    X1 
          SX7    X1 
          SA7    FLCM        UPDATE FL
          SB7    X1 
          LT     B5,B7,CFL   IF ADDRESS BELOW CURRENT FIELD LENGTH
          EQ     CFL2        MAKE *MEM* REQUEST 
 CFL1     SA5    FLCM        (X5) = FIELD LENGTH
          SB7    X5 
          LT     B5,B7,CFL   IF ADDRESS BELOW CURRENT FIELD LENGTH
 CFL2     MX6    0
          SA6    MEMRET      CLEAR STATUS RETURN WORD 
          SA1    =0LMEMP
          SX6    A6 
          BX6    X1+X6       FORM *MEM* REQUEST 
          RJ     SYS
          SA1    MEMRET 
          AX1    30D
          SX6    X1          EXTRACT FL 
          SB7    X1 
          SA6    FLCM 
          LT     B5,B7,CFL   IF ADDRESS BELOW CURRENT FIELD LENGTH
          EQ     IE.FLER     ADDRESS OUT OF RANGE 
          TITLE  INSTRUCTION INTERPRETER
 GS.TR    BSS    0
          SX7    A3                KEEP ADDRESS OF 2ND WORD OF ETT
          SA6    DD.EXA            STORE TO AS THE END OF TRACK ADDRESS 
          SA7    IE.T1
* 
**        PUT OUT THE TRACK PAGE HEADER 
* 
          CALL   CR,B0
          CALL   CR,B0
          CALL   PR,((=14HTRACK IDENT),14,3)
          SA1    GS.TID 
          NZ   X1,GSTR1 
          SA1    =C*  *            INSERT BLANKS FOR OUTPUT WITH NO ID
GSTR1     CALL   PR,(,7,B0) 
          CALL   PR,((=15HBEGINNING AT - ),15,22) 
          SA1    DD.NP
          LX1    42 
          CALL   PO,(,6,B0) 
          CALL   PR,((=16HAND ENDING AT - ),16,1) 
          SA1    DD.EXA 
          LX1    42 
          CALL   PO,(,6,B0) 
          CALL   PR,((=16HITERATION NO. - ),16,22)
          SA1    GS.TIC 
          LX1    42 
          CALL   PO,(,6,B0) 
          CALL   CR,1R0 
* 
**        SET UP FOR INTERPRETIVE EXECUTION 
* 
          SA3    IE.T1       GET ADDRESS OF 2ND WORD OF ETT 
          SA4    DD.NP             P COUNTER
          SA3    X3                2ND WORD OF ETT
          SA5    GS.ORIG           ORIGINAL WORD AT P 
          SX6    B0 
          MX0    1
          SA6    DD.POS            ZERO THE POSITION REGISTER 
          SA2    X4                PICK UP OUT TRAP  WORD 
          BX6    X5 
          SA1    RJLEVEL                                                0076  65
          BX7    X0+X3             INDICATE TRAP ACTIVE 
          MX0    30 
          SA6    X4                PUT BACK USERS ORIG WORD 
          LX1    -12                                                    0076  67
          BX2    -X0*X2            TRAP TABLE ADDRESS ONLY
          LX4    30                POSITION P COUNTER 
          SA7    A3 
          BX6    X4+X2             P COUNTER PLUS TRAP TABLE AFDRESS
          BX6    X1+X6               PLUS RJ LEVEL                      0076  69
          SA6    A3+2              KEEP IT
* 
**        PUT OUT THE IMAGE OF THE REGISTERS
* 
 IE.IMAG  BSS    0                                                      0076  73
          CALL   RD,(GS.TID,(=30HREGISTERS),DD.NR,1R0)
* 
* 
* 
 IE.INIT  BSS    0           EXECUTE THE NEXT INSTRUCTION 
          SA4    DD.NP
          SA5    DD.POS 
          SA3    FLCM 
          SA1    DD.NR
          SB2    DD.ORE-2 
          SA2    A1+B1
          SB3    B1+B1
          SB4    DD.OR
          SX6    X5-60
          SB6    X5 
          IX3    X4-X3       P-FLS
          NG     X6,IE.IN5   JUMP IF POSC LT 60 
          SX6    X4+B1
          SX4    X4+B1
          SB6    B0 
          SA6    A4 
 IE.IN5   PL     X3,IE.FLER  JUMP IF P GE FLS 
          SA0    A1 
          MX0    54 
* 
 IE.IN1   BSS    0           COPY THE NEW REGS TO OLD REGS
          BX6    X1 
          SA1    A1+B3
          BX7    X2 
          SA2    A2+B3
          SA6    B4 
          SB4    B4+B3
          SA7    A6+1 
          LT     B4,B2,IE.IN1 
          SA3    B4 
          BX6    X1 
          SA6    DD.WHEN     SET FOR WHENS IN THIS TRACK
          SA6    B4 
          SA5    BUF-1       FWA - 1 OF ETT LIST
          SA2    NEXT+1      NUMBER OF TABLES 
          SB5    X2 
          SA2    DD.NP       PRESENT P COUNTER
          IX0    X3-X2
          SB7    X0 
          BX0    X2          (X0) = NEW P 
          SA2    RJLEVEL                                                0076  77
          SB4    B0                (B4) = COUNT OF ACTIVE TRACKS        0076  78
          BX7    X2                (X7) = RJ LEVEL                      0076  79
 IE.GS1   BSS    0
          SA4    A5+2              WORD 2 OF ETT                        0076  81
          SA5    A4+2              WORD 4 OF ETT
          SX2    X4                TO FIELD 
          PL     X4,IE.GS2         TEST TRACK NOT ACTIVE                0076  83
          SB3    X5                                                     0076  84
          AX5    -12                                                    0076  85
          IX5    X5-X7                                                  0076  86
          SA1    A4-B1       GET TRACK IDENT
          MI     X5,IE.GS2         TEST LOWER RJ LEVEL                  0076  87
          BX6    X1 
          SA6    GS.TID 
          LX6    X4,B1       CHECK TO SEE IF WHENS EXIST FOR THIS TRACK 
          PL     X6,IE.GS1A  IF WHENS EXIST 
          SX6    B0 
          SA6    DD.WHEN     PRINT ALL INSTRUCTIONS 
 IE.GS1A  BSS    0
          SB4    B4+B1             ACTIVE TRACKS + 1                    0076  88
          ZR     B7,IE.GS2   IF PREVIOUS P COUNTER .EQ. PRESENT 
          SB2    A4-B1       FWA OF ETT 
          SA5    A5          WORD 4 OF ETT
          SB2    B3-B2
          SX1    X0-GS.ORIG-1 
          NZ     B2,IE.GS2   IF NOT THE SAME TRACK
          ZR     X1,IE.GS2   IF EXECUTING FROM GS.ORIG+1
          LX5    12 
          AX5    42 
          IX1    X5-X0       FROM - P 
          IX5    X2-X0       TO - P 
          PL     X1,IE.GS3   IF NEW P .LE. FROM 
          MI     X5,IE.GS3   IF NEW P .GT. TO 
 IE.GS2   BSS    0
          SB5    B5-B1             CHECK FOR END OF LIST
          GT     B5,B0,IE.GS1      BRANCH IF NOT
          SA1    X0          GET INSTRUCTION
          ZR     B4,IE.NX1   IF NO ACTIVE TRACKS
          MX0    54 
          MX7    15 
          MX6    57 
          ZR   B6,IE.IN4
          BX1    -X7*X1 
 IE.IN4   LX7    X1,B6
          SA7    DD.INST
          LX7    6
          BX2    -X0*X7 
          LX7    3
          LX2    59 
          BX5    -X6*X7 
          LX7    3
          SA1    X2+IE.IAT   GET JUMP ADDRESS 
          SB2    X5          I
          BX5    -X6*X7 
          LX7    3
          SB3    X5          J
          BX5    -X6*X7 
          LX7    15 
          SX6    B6 
          SB4    X5          K3 
          SB5    X7-0        K18
          SA6    DD.UF
          SX6    15 
          MX0    0
          NG     X2,IE.IN3
          LX1    30 
 IE.IN3   BSS    0
          SA3    B3+DD.OAR   AJ 
          SA4    B3+DD.OBR   BJ 
          SA5    B4+DD.OBR   BK 
          SB7    X1 
          SA1    A0+B3       XJ 
          SA2    A0+B4       XK 
          SB6    X6+B6       POS+15 
          JP     B7 
* 
* 
**        EXIT TO EXECUTE THE INSTRUCTION WITH -
* 
*                            X0 = +            A0 = DD.NR 
*         B1 = 1             X1 = XJ
*         B2 = I             X2 = XK
*         B3 = J             X3 = AJ
*         B4 = K3            X4 = BJ
*         B5 = K18           X5 = BK
*         B6 = POSC+15       X6 = 15
*         B7 = SCRATCH       X7 = INST, 30 BITS LOWER 
* 
  
*         INSTRUCTION ADDRESS TABLE 
* 
 IE.IAT   BSS    0
          ECHO   2,LD=(0,1,2,3,4,5,6,7) 
          ECHO   1,RD=(0,1,2,3,4,5,6,7) 
-         VFD    30/IE.LD_RD
* 
* 
* 
 IE.00    BSS    0           ES 
          CALL   AX,((=30HPROGRAM STOP),(=4LABTP))
* 
 IE.01    BSS    0           RJ ETC.
          JP     B2+IE.01JT  JUMP ON I
* 
 IE.01JT  BSS    0
          SA5    FLCM 
          EQ     IE.010 
          SA5    DD.OAR      GET A0 
          EQ     IE.011 
          SA5    DD.OAR      GET A0 
          EQ     IE.012 
          EQ     IE.013 
          SA5    FLECS
          EQ     IE.014 
          SA5    FLECS
          EQ     IE.015 
          ZR     B3,IE.0160 
          EQ     IE.016 
          ZR     B3,IE.0160 
          EQ     IE.016 
* 
 IE.010   BSS    0           RJ Q 
          SA4    DD.NP
          SB7    TRAPPER           IF ITS A RJ TRAPPER GO TO RECUR
          LE     B5,B0,IE.FLER   JUMP IF K18 LE 0 
          SB4    TRAPEND
          EQ     B5,B7,GS.RECUR 
          RJ     CFL         CHECK ADDRESS WITHIN FIELD LENGTH
          SA1    RJLEVEL
          SB2    -B5               (B2) = - P ADDRESS                   0076  98
          SA3    BUF-1
          SA2    NEXT+1 
          SB7    X2                (B7) = COUNT OF ETT ENTRIES          0076 102
 IE.RJL   SA2    A3+2              (X2) = 2ND WORD ETT ENTRY            0076 103
          SA3    A2+2              (X3) = 4TH WORD ETT ENTRY            0076 104
          PL     X2,IE.RJ2         TEST NOT ACTIVE TRACK                0076 105
          BX6    X3                                                     0076 106
          AX6    -12                                                    0076 107
          IX6    X6-X1                                                  0076 108
          MI     X6,IE.RJ2         TEST LOWER RJ LEVEL                  0076 109
          LX3    30                                                     0076 110
          SX2    X2+B2                                                  0076 111
          SX3    X3+B2                                                  0076 112
          MI     X2,IE.RJ2         TEST ABOVE TRACK RANGE               0076 113
          MI     X3,IE.RJOK        TEST WITHIN TRACK RANGE              0076 114
IE.RJ2    SB7    B7-B1                                                  0076 115
          GT     B7,B0,IE.RJL      IF MORE ETT ENTRIES
*                                                                       0076 117
*                                  NOT WITHIN ACTIVE TRACK RANGE        0076 118
          SX6    X1+B1                                                  0076 119
          LX1    18                                                     0076 120
          SA6    A1                STORE NEW RJ LEVEL                   0076 121
          SA3    DD.NP                                                  0076 122
          SA2    RJCALL                                                 0076 123
          SX3    X3+B1                                                  0076 124
          IX6    X2+X3                                                  0076 125
          IX6    X1+X6             PLUS RJ LEVEL                        0076 126
          SA6    B5                STORE SPECIAL RETURN IN SUBROUTINE   0076 127
          SX7    B5+B1                                                  0076 128
          SA7    A3                STORE DD.NP                          0076 129
          MX0    1
          CALL   TD                                                     0076 130
          EQ     IE.NX                                                  0076 131
*                                                                       0076 132
RJCALL    VFD    12/100B,18/TRAPPER,30/400000B                          0076 133
* 
 IE.RJOK  BSS    0
          SA5    B5 
          SX4    X4+B1       RET ADD
          SB6    B0 
          SX6    0400B
          SX7    B5+B1       NEW P
          LX6    48 
          LX4    30 
          SA7    A4          RESET P
          BX6    X4+X6
          SA6    B5 
          MX0    1
          BX7    X5 
          SA6    DD.NSCM
          SA7    A6+B1
          EQ     IE.END 
* 
IE.011    BSS    0                 RE BJ+K                              0076 437
          SX6    B0 
          SX7    X4+B5
          SA6    DD.LLAB
          SA5    DD.OXR 
          SX6    X6+B1
          SA7    DD.TMP3
          SA6    A6+B1
          BX6    X5 
          SA7    DD.LENG
          SA6    DD.LLOC
          SA3    DD.OAR 
          BX6    X3 
          SA7    A7+B1
          SA6    A6+B1
          SB2    B0 
          SA7    A7+B1
          SA6    A6+B1
          CALL   TD 
          SA1    DD.TMP3
          SB7    X1 
          SA5    DD.OAR 
          SA0    X5 
          SA3    DD.OXR                                                 0076 440
          BX0    X3                                                     0076 441
          SX7    B7 
          BX6    X5 
          SA7    DD.LENG
          IX7    X7+X6       LWA+1 OF READ
          SA6    DD.LLOC
          SA6    DP.LOC      FWA OF DUMP
          SA7    A6+B1       LWA+1 OF DUMP
          SX7    60 
          RE     B7                                                     0076 442
          SX7    30 
          SA7    DD.POS 
          CALL   PR,(TD.HEAD+10,20,1) 
          CALL   CR,1R
          RJ     DS.OD
          CALL   CR,1R
          EQ     IE.INIT
* 
IE.012    BSS    0                 WE BJ+K                              0076 445
          SX6    B0 
          SX7    X4+B5
          SA6    DD.LLAB
          SA7    DD.TMP3
          SA7    DD.LENG
          SX6    X6+B1
          SA7    A7+B1
          SA5    DD.OAR 
          SA7    A7+B1
          SA6    A6+B1
          BX7    X5 
          SA3    DD.OXR 
          SA7    DD.LLOC
          BX6    X3 
          SA6    A7+B1
          SB2    B0 
          SA6    A6+B1
          CALL   TD 
          SA1    DD.TMP3
          SB7    X1 
          SA5    DD.OAR 
          SA0    X5 
          SA3    DD.OXR                                                 0076 448
          BX0    X3                                                     0076 449
          SX7    B7 
          BX6    X3 
          SA7    DD.LENG
          IX7    X7+X6       LWA+1 OF WRITE 
          SA6    DD.LLOC
          SA6    DP.LOC      FWA OF DUMP
          SA7    A6+B1       LWA+1 OF DUMP
          SX7    60 
          WE     B7                                                     0076 450
          SX7    30 
          SA7    DD.POS 
          CALL   PR,(TD.HEAD+10,20,1) 
          CALL   CR,1R
          RJ     DS.OD
          CALL   CR,1R
          EQ     IE.INIT
* 
IE.013    BSS    0                 XJ    BJ+K                           0076 387
          SB7    X4+B5             BJ+K                                 0076 388
          SB6    60 
          MX0    1
          XJ     B7                                                     0076 389
          EQ     IE.END                                                 0076 390
* 
 IE.014   BSS    0           RXJ XK 
* 
 IE.015   BSS    0           WXJ XK 
* 
 IE.016   BSS    0           IBJ BK 
* 
 IE.0160  BSS    0           RI K  AND R0 K 
* 
 IE.017   BSS    0           OBJ BK 
          EQ     IE.OPER
* 
* 
* 
* 
 IE.02    BSS    0           JP 
          SA5    B2+DD.OBR   FETCH BI 
          SB6    B6+X6
          SB5    X5+B5
          SA4    DD.NP
          SX3    X4-GS.ORIG-1 
          NZ     X3,IE.TJR   IF NOT EXECUTING OUT OF USER SEQUENCE
  
          SA4    X4 
          LX4    30 
          SX6    X4-1 
          SA6    DD.NP       RESET P COUNTER FOR IN SEQUENCE EXECUTION
          EQ     IE.INIT
* 
 IE.03    BSS    0           XJUMPS 
          SB6    B6+X6
          JP     B2+IE.03JT 
* 
 IE.03JT  BSS    0
          EXJ    ZR 
          EXJ    NZ 
          EXJ    PL 
          EXJ    NG 
          EXJ    IR 
          EXJ    OR 
          EXJ    DF 
          EXJ    ID 
* 
 IE.04    EBJ    EQ 
* 
 IE.05    EBJ    NE 
* 
 IE.06    EBJ    GE 
* 
 IE.07    EBJ    LT 
* 
IE.TJR    BSS    0                                                      0076 136
          LE     B5,B0,IE.FLER     TEST P ADDRESS NEGATIVE              0076 138
          RJ     CFL         CHECK ADDRESS WITHIN FIELD LENGTH
  
          SB7    TRAPORG
          SB6    TRAPEND
          LT     B5,B7,IE.JROK  IF JP ADDRESS .LT. TRAPPER FWA
          LT     B5,B6,IE.DDER     RJ ADDRESS WITHIN TRAPPER
 IE.JROK  BSS    0
          SX6    B5 
          MX0    1
          SA6    DD.NP
          SB6    B0 
          EQ     IE.END 
          SPACE  4
 IE.10    DOX    (BX6 X1) 
* 
 IE.11    DOX    (BX6 X1*X2)
* 
 IE.12    DOX    (BX6 X1+X2)
* 
 IE.13    DOX    (BX6 X1-X2)
* 
 IE.14    DOX    (BX6 -X2)
* 
 IE.15    DOX    (BX6 -X2*X1) 
* 
 IE.16    DOX    (BX6 -X2+X1) 
* 
 IE.17    DOX    (BX6 -X2-X1) 
* 
 IE.20    BSS    0           LXI JK 
          SA1    A0+B2
          SX6    B3 
          LX6    3
          SB4    X6+B4
          LX6    B4,X1
          SA6    A1 
          EQ     IE.END 
* 
 IE.21    BSS    0           AXI JK 
          SA1    A0+B2
          SX6    B3 
          LX6    3
          SB4    X6+B4
          AX6    B4,X1
          SA6    A1 
          EQ     IE.END 
* 
 IE.22    BSS    0           LXI BJ,XK
          SB3    X4-0 
          LX6    B3,X2
          SA6    A0+B2
          EQ     IE.END 
* 
 IE.23    BSS    0           AXI BJ,XK
          SB3    X4-0 
          AX6    B3,X2
          SA6    A0+B2
          EQ     IE.END 
* 
 IE.24    BSS    0           NXI BJ,XK
          NX6    B4,X2
          NO
          SX7    B4-B0
          SA6    A0+B2
          ZR     B3,IE.END
          SA7    B3+DD.NBR
          EQ     IE.END 
* 
 IE.25    BSS    0           ZXI BJ,XK
          ZX6    B4,X2
          NO
          SX7    B4-B0
          SA6    A0+B2
          ZR     B3,IE.END
          SA7    B3+DD.NBR
          EQ     IE.END 
* 
 IE.26    BSS    0           UXI BJ,XK
          UX6    B4,X2
          NO
          SX7    B4-B0
          SA6    A0+B2
          ZR     B3,IE.END
          SA7    B3+DD.NBR
          EQ     IE.END 
* 
 IE.27    BSS    0           PXI BJ,XK
          SB4    X4-0 
          PX6    B4,X2
          SA6    A0+B2
          EQ     IE.END 
* 
 IE.30    DOD    (FX6 X1+X2)
* 
 IE.31    DOD    (FX6 X1-X2)
* 
 IE.32    DOD    (DX6 X1+X2)
* 
 IE.33    DOD    (DX6 X1-X2)
* 
 IE.34    DOD    (RX6 X1+X2)
* 
 IE.35    DOD    (RX6 X1-X2)
* 
 IE.36    DOX    (IX6 X1+X2)
* 
 IE.37    DOX    (IX6 X1-X2)
* 
 IE.40    DOD    (FX6 X1*X2)
* 
 IE.41    DOD    (RX6 X1*X2)
* 
 IE.42    DOD    (DX6 X1*X2)
* 
 IE.43    BSS    0           MXI JK 
          SX7    B3 
          MX6    0
          LX7    3
          SB4    X7+B4
          ZR     B4,IE.END1 
          SB4    B4-B1
          MX6    1
          AX6    B4,X6
          SA6    A0+B2
          EQ     IE.END 
* 
 IE.44    DOD    (FX6 X1/X2)
* 
 IE.45    DOD    (RX6 X1/X2)
* 
 IE.46    ZR     B2,IE.END   IF INSTRUCTION IS NO 
          SA1    CMUFLAG
          PL     X1,IE.OPER  IF ILLEGAL INSTRUCTION 
          SB2    B2-4 
          MI     B2,IE.OPER  IF ILLEGAL INSTRUCTION 
          SB6    60 
          SX6    B0 
          LE     B2,B1,IE.46A IF AN IM OR DM INSTRUCTION
          SX6    B1+B1
 IE.46A   SA6    DD.LLAB
          SX6    X6+B1
          SA1    DD.OP
          SA6    A6+B1
          SX6    X6+B1
          SB4    X1 
          SA6    A6+B1
          SB3    IE.46X 
          MX0    3
          LX0    -9 
          GT     B2,B1,IE.46C IF NOT A MOVE INSTRUCTION 
          SB3    IE.46XB
          EQ     B2,B1,IE.46C IF A DM INSTRUCTION 
          SB4    X4+B5
          SA1    B4 
          MX6    0
          BX7    X1 
          SA6    DD.NXR 
          MX0    9
          LX7    30 
          LX0    -3 
          SA2    IE.IM
          BX6    X2 
          SA6    IE.46XB
 IE.46C   SX6    X7 
          SB5    B4 
          LX7    30 
          SA6    DD.LLOC     STORE FIRST FIELD ADDRESS
          BX4    X0*X7
          SX6    X7 
          SA6    A6+B1       STORE SECOND FIELD ADDRESS 
          MX0    4
          LX4    16 
          LX0    30 
          BX5    X0*X7
          LX5    34 
          SX0    52429
          BX3    X4+X5       BUILD CHARACTER COUNT
          BX6    X3 
          IX6    X6*X0       DIVIDE CHARACTER COUNT BY 10 
          AX6    19 
          BX4    X6 
          SX1    10 
          IX5    X4*X1
          IX4    X5-X3
          ZR     X4,IE.46B   IF AN EVEN MULTIPLE TO 10
          SX6    X6+B1
 IE.46B   SA6    DD.LENG     STORE LENGTH 
          SA7    DD.OSCM     STORE INSTRUCTION WORD 
          SA6    A6+B1
          SA7    DD.NSCM
          EQ     B2,IE.46E   IF AN IM INSTRUCTION 
          SA7    B3 
          SB7    B1+B1
          EQ     B2,B1,IE.46E      IF A DM INSTRUCTION
          EQ     B2,B7,IE.466      IF CC INSTRUCTION
          EQ     IE.46X 
  
 IE.466   SA1    DD.NAR 
          SX7    8
          BX6    X1 
          SA7    DD.LENG+2
          SA6    DD.LLOC+2
          EQ     IE.46X 
  
 IE.46X   NO
+         BX6    X0 
          SA6    DD.NXR 
          MX0    0
          EQ     IE.END 
  
 IE.46E   SB2    B0 
          MX0    0
          SA1    DD.LLOC+1
          SA6    A6+B1
          BX7    X1 
          SA7    A1+B1
          CALL   TD 
 IE.46XB  NO                 WILL BE PLUGGED WITH MOVE INSTRUCTION
+         SA1    TD.HEAD+10 
          CALL   PR,(,20,1) 
          CALL   CR,1R
          SA1    DD.LLOC
          SA2    DD.LENG
          BX6    X1 
          IX7    X1+X2
          SA6    DP.LOC 
          SA7    DP.LIM 
          RJ     DS.OD
          CALL   CR,1R
          SX7    60 
          SA7    DD.POS 
          EQ     IE.INIT
  
IE.IM     IM     DD.OSCM
  
* 
 IE.47    DOX    (CX6 X2) 
* 
* 
 IE.50    BSS    0           SAI
          SB5    B5+X3       AJ 
          SB6    B6+X6
          EQ     IE.5X
* 
 IE.51    BSS    0
          SB5    B5+X4       BJ 
          SB6    B6+X6
          EQ     IE.5X
* 
 IE.52    BSS    0
          SB5    B5+X1       XJ 
          SB6    B6+X6
          EQ     IE.5X
* 
 IE.53    BSS    0
          SB5    X1-0        XJ 
          NO
          SB5    B5+X5
          EQ     IE.5X
* 
 IE.54    BSS    0
          SB5    X3-0        AJ 
          NO
          SB5    B5+X5
          EQ     IE.5X
* 
 IE.55    BSS    0
          SB5    X3-0        AJ 
          SB4    X5-0        BK 
          SB5    B5-B4
          EQ     IE.5X
* 
 IE.56    BSS    0
          SB5    X4-0        BJ 
          SB5    B5+X5
          EQ     IE.5X
* 
 IE.57    BSS    0
          SB5    X4-0        BJ 
          SB4    X5-0        BK 
          SB0    0
          SB5    B5-B4
* 
 IE.5X    BSS    0
          SX6    B5-B0
          NO
          SA6    B2+DD.NAR
          ZR     B2,IE.END   EXIT IF I=0
          SB3    B2-6 
          SB7    TRAPPER
          NG     B5,IE.FLER 
          SB4    TRAPEND
          LT     B5,B7,IE.MROK
          LT     B5,B4,IE.DDER
          RJ     CFL         CHECK ADDRESS WITHIN FIELD LENGTH
* 
 IE.MROK  PL     B3,IE.SA67  JUMP IF I EQ 6 OR 7
          SA1    B5 
          BX6    X1 
          BX7    X1 
          SA6    A0+B2
          SA7    DD.NSCM
          SA6    DD.OSCM
          EQ     IE.END 
* 
 IE.SA67  BSS    0
          SA1    A0+B2             XI (NSCM)
          SA3    B5                OSCM 
          NE     B5,B1,IE.SAOK     JUMP IF MRA NE 1 
          MX4    18                ELSE CHECK FOR ABT, END, MEM 
          SB3    3RABT
          BX4    X4*X1
          SB4    3REND
          LX4    18 
          SB7    X4 
          EQ     B7,B3,IE.SXAB
          EQ     B7,B4,IE.SXEN
 IE.SAOK  BX6    X1 
          BX7    X3 
          SA6    DD.NSCM
          SA7    A6+B1
          SA6    B5 
          NE     B5,B1,IE.END 
          SB3    3RMEM
          NE     B7,B3,IE.END 
          EQ     IE.END 
* 
 IE.SXAB  CALL   AX,((=30HPROGRAM ABORT CALL),(=4LABTP))
* 
 IE.SXEN  CALL   AX,((=30HPROGRAM END CALL),(=4LENDP))
* 
* 
 IE.60    BSS    0           SBI
          SB6    B6+X6
          SX6    B5+X3
          EQ     IE.6X
* 
 IE.61    BSS    0
          SB6    B6+X6
          SX6    B5+X4
          EQ     IE.6X
* 
 IE.62    BSS    0
          SB6    B6+X6
          SX6    B5+X1
          EQ     IE.6X
* 
 IE.63    BSS    0
          SB5    X1-0 
          NO
          SX6    B5+X5
          EQ     IE.6X
* 
 IE.64    BSS    0
          SB5    X3-0        AJ 
          NO
          SX6    B5+X5       AJ+BK
          EQ     IE.6X
* 
 IE.65    BSS    0
          SB4    X3-0        AJ 
          SB5    X5-0        BK 
          SX6    B4-B5       AJ-BK
          EQ     IE.6X
* 
 IE.66    BSS    0
          SB5    X4-0        BJ 
          NO
          SX6    X5+B5       BJ+BK
          EQ     IE.6X
* 
 IE.67    BSS    0
          SB4    X4-0        BJ 
          SB5    X5-0        BK 
          SX6    B4-B5       BJ-BK
          SB0    0
* 
 IE.6X    ZR     B2,IE.END2  DO NOT SET B0
          SA6    B2+DD.NBR
          EQ     IE.END 
* 
 IE.70    BSS    0           SXI
          SB6    B6+X6
          SX6    B5+X3
          NO
          SA6    A0+B2
          EQ     IE.END 
* 
 IE.71    BSS    0
          SB6    B6+X6
          SX6    B5+X4
          NO
          SA6    A0+B2
          EQ     IE.END 
* 
 IE.72    BSS    0
          SB6    B6+X6
          SX6    B5+X1
          NO
          SA6    A0+B2
          EQ     IE.END 
* 
 IE.73    BSS    0
          SB5    X1-0 
          SX6    B5+X5
          SA6    A0+B2
          EQ     IE.END 
* 
 IE.74    BSS    0
          SB5    X3-0 
          SX6    B5+X5
          SA6    A0+B2
          EQ     IE.END 
* 
 IE.75    BSS    0
          SB5    X3-0 
          SB4    X5-0 
          SX6    B5-B4
          SA6    A0+B2
          EQ     IE.END 
* 
 IE.76    BSS    0
          SB5    X4-0 
          SX6    B5+X5
          SA6    A0+B2
          EQ     IE.END 
* 
 IE.77    BSS    0
          SB5    X4-0 
          SB4    X5-0 
          SX6    B5-B4       BJ-BK
          SA6    A0+B2
          EQ     IE.END 
  
 IE.END1  SA6    A0+B2
          EQ     IE.END 
  
 IE.END2  SX7    1
          SA7    DD.WHEN     TURN PRINT OFF 
 IE.END   BSS    0           ENTER HERE AFTER INSTRUCTION EXECUTION 
          SX7    B6 
          NO
          SA7    DD.POS 
          SB2    B0                NORMAL 
          CALL   TD 
          EQ     IE.INIT
          SPACE  3
 IE.GS3   SA5    A5          RETRIEVE WORD 4 OF ETT 
          MX0    30 
          SA2    CALLTRAP 
          BX1    X0*X5       USER TRAP ADDRESS AND RJLEVEL
          BX6    -X0*X5      TABLE ADDRESS
          LX1    30          POSITION ADDRESS 
          SB2    A5 
          SA5    X1          GET ORIGINAL WORD
          BX6    X6+X2       RECONSTRUCT THE TRAP 
          MX0    1
          SA6    X1                PUT BACK THE TRAP
          BX6    X5 
          SA6    B2 
          BX6    -X0*X4      TURN OFF THE ACTIVE FLAG 
          SA6    A4 
          SX7    X3 
          SX6    B6 
          SA7    DD.OP       RESTORE OLD P
          SA6    DD.POS      RESET POSITION COUNTER 
          CALL   RD,(A4-B1,(=30HREGISTERS),DD.NR,1R ) 
          EQ     IE.INIT     TRY AGAIN FOR ACTIVE TRACKS
          TITLE              EXIT SUBROUTINES 
* 
**        FIELD LENGTH ERROR
* 
 IE.FLER  CALL   AX,((=30HFIELD LENGTH ERROR),(=4LABTP))
* 
* 
**        REFERENCE INSIDE TRAPPER
* 
IE.DDER   CALL   AX,((=30HREFERENCE INSIDE TRAPPER),(=4LENDP))          0076 398
* 
* 
**        ILLEGAL INSTRUCTION 
 IE.OPER  CALL   AX,((=30HILLEGAL OPERATION FIELD),(=4LABT))
* 
* 
**        NX - NORMAL EXIT, RESTORE REGISTERS AND JUMP TO NP
* 
 IE.NX    BSS    0
          CALL   RD,(GS.TID,(=30HREGISTERS),DD.OR,1R )
 IE.NX1   BSS    0
          RJ     COB         CLEAR OUTPUT BUFFER
          SA1    DD.NR+24 
          NO
          BX7    X1 
          EQ     DS.NAX 
* 
* 
**        AX - ABNORMAL EXIT, DISPLAY THE OFFENDING INSTRUCTION AND THE 
*         REGISTERS, AND ISSUE A TERMINATING RA+1 CALL. 
*         CALLING SEQUENCE -
*         X7 = MESSAGE ADDRESS
*         X1 = RA+1 CONTENTS
*         RJ     DS.AX
* 
 DS.AX    BSS    1
          BX6    X1 
          SA7    IE.T1
          SA6    A7+B1
          SB2    B1 
          CALL   TD 
          SA1    IE.T1
          BX6    X1 
          CALL   RD,(GS.TID,,DD.OR,1R ) 
          RJ     COB         CLEAR OUTPUT BUFFER
          SA1    IE.T2
          LX1    3*6
          SX6    X1-3RABT 
          ZR     X6,DS.AX2
          SA1    END
          BX6    X1 
          RJ     SYS
          SPACE  1
 END      VFD    24/4LENDP,36/0 
          SPACE  2
DS.AX2    SA1    ABORT
          BX6    X1 
          RJ     SYS
          SPACE  1
 ABORT    VFD    24/4LABTP,36/0 
          SPACE  2
* 
* 
**        NAX - NO ACTION EXIT TO X7
* 
 DS.NAX   BSS    0
          SX6    0400B
          LX6    18 
          BX7    X6+X7
          LX7    30 
          SA7    NAX.1
+         RJ     DS.RR
-         VFD    30/DD.NR 
 NAX.1    BSS    1
          TITLE              TRACE DISPLAY GENERATOR
* 
**        TD - TRACE DISPLAY GENERATION AND OUTPUT
*         CALLING SEQUENCE -
*         DD.INST = THE CURRENT INSTRUCTION, UPPER
*         B1 = 1
*         B2 = ABNORMAL CONDITION FLAF
*                0 - OK 
*                1 - ABNORMAL, DISPLAY ONLY P AND MNEMONIC
*         B5 = MEMORY REFERENCE ADDRESS 
*         X0 = JUMP FLAG
*                + JUMP 
*                - FALL THRU
*         DD.OSCM, DD.NSCM = OLD AND NEW CONTENTS OF ANY ALTERED
*         SCM LOCATION
* 
 TD.NOPRT BSSZ   1
 TD.TMP1  BSS    1
 TD.TMP2  BSS    1
* 
 TD.XD    VFD    42/3LX0=,18/20 
 TD.BD    VFD    42/3LB0=,18/6
 TD.AD    VFD    42/3LA0=,18/6
* 
 TD.MRA   BSS    1
* 
 TD.PIN   BSS    1
 TD.HEAD  BSS    0
          DIS    2,SOURCE 
          DIS    2,DESTINATION BEFORE 
          DIS    2,FIELD 1
          DIS    2,FIELD 2
          DIS    2,COLLATING TABLE
          DIS    2,DESTINATION AFTER
* 
**        INTERPRETIVE INSTRUCTIONS TO DISPLAY THE EFFECT OF EXECUTING
*         THE CURRENT INSTRUCTION.  EACH INSTRUCTION TAKES 6 BITS, THERE
*         ARE 5 PER MACHINE OP CODE.  EACH INSTRUCTION HAS A 3 BIT OP 
*         CODE AND A 3 BIT OPERAND (F).  THE INSTRUCTIONS ARE - 
*         0 - HALT
*         1 - HALT IF I=0 ELSE XI 
*         2 - NO-OP 
*         3 - NO-OP 
*         4 - DISPLAY X 
*         5 - DISPLAY B 
*         6 - DISPLAY A 
*         (FOR THE ABOVE F=0.I, F=1-J, F=2-K, F=4-0)
*         7- MEMORY 
*         (F=0-SCM LOC, F=1-SCM RANGE, F=2- LCM LOC, F=3-LCM RANGE) 
* 
* 
*         OPCODE DEFINITONS 
* 
 H        SET    00B
 HI       SET    10B
 NO       SET    20B
 XI       SET    40B
 XJ       SET    41B
 XK       SET    42B
 XZ       SET    44B
 BI       SET    50B
 BJ       SET    51B
 BK       SET    52B
 AI       SET    60B
 AJ       SET    61B
 AK       SET    62B
 AZ       SET    64B
 SC       SET    70B
 SR       SET    71B
 LC       SET    72B
 LR       SET    73B
 IM       SET    75B
* 
          MACRO  OF,O,P1,P2,P3,P4,P5
-         VFD    6/P1,6/P2,6/P3,6/P4,6/P5 
          ENDM
* 
 FXE      MICRO  1,,$XJ,XK,XI$
* 
 TD.OETB  BSS    0
 00       OF
 01       OF     SC 
 02       OF     BI 
 03       OF     XJ 
          DUP    4,1
 04-07    OF     BI,BJ
 10       OF     XJ,XI
          DUP    3,1
 11-13    OF     "FXE"
 14       OF     XK,XI
          DUP    3,1
 15-17    OF     "FXE"
 20       OF     XI 
 21       OF     XI 
 22       OF     BJ,XK,XI 
 23       OF     BJ,XK,XI 
          DUP    4,1
 24-27    OF     XK,BJ,XI 
          DUP    11,1 
 30-42    OF     "FXE"
 43       OF     XI 
 44       OF     "FXE"
 45       OF     "FXE"
 46       OF
 47       OF     XK,XI
 50       OF     AJ,AI,HI,SC
 51       OF     BJ,AI,HI,SC
 52       OF     XJ,AI,HI,SC
 53       OF     XJ,BK,AI,HI,SC 
 54       OF     AJ,BK,AI,HI,SC 
 55       OF     AJ,BK,AI,HI,SC 
 56       OF     BJ,BK,AI,HI,SC 
 57       OF     BJ,BK,AI,HI,SC 
 60       OF     AJ,BI
 61       OF     BJ,BI
 62       OF     XJ,BI
 63       OF     XJ,BK,BI 
 64       OF     AJ,BK,BI 
 65       OF     AJ,BK,BI 
 66       OF     BJ,BK,BI 
 67       OF     BJ,BK,BI 
 70       OF     AJ,XI
 71       OF     BJ,XI
 72       OF     XJ,XI
 73       OF     XJ,BK,XI 
 74       OF     AJ,BK,XI 
 75       OF     AJ,BK,XI 
 76       OF     BJ,BK,XI 
 77       OF     BJ,BK,XI 
* 
 TD.OET1  BSS    0
 010      OF     SC 
 011      OF     XZ,AZ,BJ,LR,SR 
 012      OF     XZ,AZ,BJ,SR,LR 
 013      OF     BJ 
 014      OF     XJ,XK,LC 
 015      OF     XJ,XK,LC 
 016      OF     BJ,BK
 017      OF     BJ,BK
* 
 TD.OET46 BSS    0
 460      OF
 461      OF
 462      OF
 463      OF
 464      OF     XZ,BJ,SC,IM,SR 
 465      OF     XZ,SC,SR,SR
 466      OF     XZ,SC,SR,SR,SR 
 467      OF     XZ,SC,SR,SR
* 
* 
 DS.TD    BSS    1
          SA1    DD.OP
          SA2    DD.UF
          SA4    =10H 
          MX3    6
          SX7    B2 
          SX6    X1-GS.ORIG 
          NZ     X6,TD.0     IF NOT EXECUTING OUT OF GS.ORIG
          SA5    RECJ 
          LX5    30 
          SX1    X5 
 TD.0     SX6    1R 
          PL     X0,TD.1
          SX6    1RJ
 TD.1     SA7    TD.TMP1     SAVE ERROR FLAG
          LX6    54 
          BX4    -X3*X4 
          BX6    X6+X4
          SX7    B5 
          SA6    A7+B1       SAVE JUMP FLAG 
          SX6    X2+10B 
          SA7    TD.MRA      SAVE MEMORY REF ADD
          AX6    4
          SA6    A2 
          LX1    42 
          CALL   PO,(,6,B0)        DISPLAY OLD P
          SA5    DD.UF
          SX6    18 
          SA6    DD.SCR 
          CALL   PR,(TD.TMP2,X5+B1,B0)
          CALL   DA,(DD.INST)  DISPLAY INSTRUCTION
          SA2    DD.UF
          BX2    -X2
          CALL   PR,(=10H,B0,X2+3)
          SA5    TD.TMP1
          NZ     X5,TD.EXIT  QUIT IF ERROR FLAG IS ON 
          SPACE  4
**        DISPLAY THE EFFECT OF THIS INSTRUCTION ON THE REGISTERS AND ON
*         MEMORY.  THIS IS A 3 STEP PROCESS - 
*         1. PICK UP THE INTERPRETIVE INSTRUCTION BYTE FROM ID.OETB 
*            USING THE OP CODE AND EDIT THE 6 BIT INSTRUCTIONS, 
*            SUBSTITUTING REGISTER CODES AND CHANGING HI TO EITHER XI OR
*            H. 
*         2. OPTIMIZE THE RESULTING PSEUDO INSTRUCTIONS BY NO-OPING.
*            DISPLAY B0 AND THE FIRST OF DUPLICATE REGISTER REFERENCES. 
*         3. EXECUTE THE REMAINING PRINT INSTRUCTIONS,DISPLAYING FIRST
*            THE OLD VALUE THEN THE NEW IF TI IS NOT EQUEAL TO THE OLD. 
* 
* 
*         REGISTER USAGE FOR STEP 1 IS -
*         X0 = MASK 
*         X1 = INST WORD
*         X2 = OPCODE 
*         X5 = M57
*         X7 = EDITED INSTRUCTION WORD
*         B5 = SHIFT COUNT
*         B6 = 6
*         B7 = 3
* 
          SA2    DD.INST
          MX0    54 
          MX5    57 
          LX2    6
          BX3    -X0*X2 
          BX0    X5-X0
          SB2    X3 
          SB3    TD.OETB
          SB7    3
          MX7    0
          NE     B1,B2,TD.P12 
          LX3    X2,B7
          SB3    TD.OET1
          BX3    -X5*X3 
          EQ     TD.P13 
  
 TD.P12   SB2    B2-46B 
          NE     B2,TD.P13   IF NOT A NO OR CMU INSTRUCTION 
          LX3    X2,B7
          BX3    -X5*X3 
          SB3    TD.OET46 
          SX4    X3-6 
          ZR     X3,TD.NPEX  IF A NO DO NOT PRINT ANYTHING
          NZ     X4,TD.P13   IF NOT CC INSTRUCTION
          SX7    AZ 
 TD.P13   LX3    59 
          SA1    X3+B3
          MX4    30 
          SB6    B7+B7
          PL     X3,TD.P11
          LX1    30 
 TD.P11   SB5    60 
          BX1    X4*X1
          ZR     X7,TD.P1LP  IF NOT CC INSTRUCTION
          BX1    X1+X7
          LX1    54 
          MX7    0
* 
 TD.P1LP  BSS    0
          LX1    6
          SB5    B5-B6
          BX4    X0*X1       OPCODE 
          LX7    6
          SX3    X4-40B 
          ZR     X4,TD.P1H   JUMP IF HALT 
          SB3    X4-70B 
          PL     X3,TD.P1HI  JUMP IF NOT HI 
          LX6    X2,B7
          BX6    -X5*X6      I DESIGNATOR 
          SX4    X6+40B 
          NZ     X6,TD.P1EN  JUMP IF I NE 0 
          EQ     TD.P1H 
 TD.P1HI  PL     B3,TD.P1SC 
          BX6    -X5*X1      F
          SB2    B7 
          ZR     X6,TD.P1R   JUMP IF I
          AX6    1
          SB2    B2+B7
          ZR     X6,TD.P1R   JUMP IF J
          AX6    1
          SB2    B2+B7
          ZR     X6,TD.P1R
          EQ     TD.P1EN
 TD.P1R   LX6    B2,X2
          NO
          BX6    -X5*X6      REG NUMBER 
          BX4    X4+X6       OPCODE 
 TD.P1EN  BSS    0
          BX7    X7+X4
          EQ     TD.P1LP
  
 TD.P1SC  MX3    54 
          BX4    -X3*X1 
          BX7    X7+X4
          EQ     TD.P1LP
  
 TD.P1H   BSS    0
          LX1    X7,B5
* 
**        REGISTER USAGE FOR STEP 2 IS -
*         X0 = M54           B5 = SHIFT COUNT 
*         X1 = INST WORD     B6 = 6 
*         X7 = EDITED INST. 
* 
          MX0    54 
          LX1    6
          MX7    0
          MX6    0
* 
 TD.P2LP  BSS    0
          BX2    -X0*X1 
          LX7    6
          SX3    X2-70B 
          SX4    X2-50B 
          ZR     X2,TD.P2H   JUMP IF HALT 
          ZR     X4,TD.P2NO  IF B0
          SX6    B1 
          PL     X3,TD.P2EN  IF SC
          BX3    X1 
          LX3    6
 TD.P21   BX4    -X0*X3 
          ZR     X4,TD.P2EN  JUMP IF HALT 
          BX5    X4-X2
          LX3    6
          NZ     X5,TD.P21
 TD.P2NO  SX2    NO 
 TD.P2EN  BX7    X7+X2
          LX1    6
          EQ     TD.P2LP
* 
 TD.P2H   BSS    0
          LX1    X7,B5
* 
**        STEP 3, EXECUTE THE REMAINING INSTRUCTIONS
* 
          LX1    6
          SA3    WHEN        FWA OF WHEN LIST 
          MX0    42 
          SA2    A3+B1
          SA4    X3          FIRST WHEN 
          IX2    X2-X3       LENGTH OF WHEN LIST
          SA5    TD.TMP2
          NZ     X2,TD.P3B   IF WHEN"S EXIST
          NZ     X6,TD.P30   IF NON-NOOP CODES EXIST
          MI     X5,TD.NPEX  IF NOT A JUMP
          EQ     TD.P30 
  
 TD.P3B   SA3    DD.WHEN
          ZR     X3,TD.P30   IF NO WHENS EXIST FOR THIS TRACK 
          MI     X5,TD.P3LP  IF NOT A JUMP
          SB5    X2+B1
 TD.P3A   SB5    B5-B1
          ZR     B5,TD.P3LP  IF WHEN LIST EXHAUSTED 
          SA3    X4          2ND WORD OF ETT
          BX6    X4 
          SA4    A4+B1       NEXT WHEN
          PL     X3,TD.P3A   IF ETT INACTIVE
          PL     X6,TD.P3A   IF NOT A REGISTER WHEN 
          LX6    30 
          BX6    -X0*X6      EXTRACT REG FIELD
          SX6    X6-1RP 
          NZ     X6,TD.P3A   IF NOT P REGISTER
 TD.P30   SX7    0
          SA7    DD.NOPR
 TD.P3LP  MX0    54 
          BX7    X1 
          BX5    -X0*X1 
          LX7    6
          BX6    X5 
          SA7    TD.PIN 
          LX6    57 
          MX0    57 
          SB7    X6-4 
          ZR     X5,TD.P3H
          SB6    B7-3 
          NG     B7,TD.P3NO 
          SA1    B7+TD.XD    GET REGISTER NAME OR MRA 
          ZR     B6,TD.P3SC  JUMP IF SC ELSE REGICTER 
* 
          BX2    -X0*X5      REG NUMBER 
          SX7    X1          SIZE 
          LX2    48 
          LX7    18 
          BX7    X5+X7
          IX1    X1+X2
          SA7    TD.TMP1     SAVE CHAR. COUNT,INST. 
          BX6    X1 
          SA6    DD.TMPG           SAVE REGISTER NAME 
          CALL   PR,(,3,B1)  PRINT REG NAME = 
          SA5    TD.TMP1
          SA1    X5+DD.OR-40B 
          SA2    X5+DD.NR-40B 
          AX5    18 
          SX6    X5-7 
          MX7    0
          PL     X6,TD.P31
          LX1    42 
          LX2    42 
 TD.P31   IX6    X1-X2
          BX4    X1-X2
          NZ     X6,TD.P33
          PL     X4,TD.P34
 TD.P33   BSS    0
          MX7    1
 TD.P34   BX7    X7+X5       SET FLAG IF NEW NE OLD 
          BX6    X2 
          SA7    A5          SAVE FLAG, CHAR COUNT
          SA6    A5+B1       SAVE NEW 
          CALL   PO,(,X5,B0)  DISPLAY OLD VALUE 
          SA5    TD.TMP1
          PL   X5,TD.P32
          SA2    DD.NOPR
          ZR     X2,TD.P36   IF NO-PRINT FLAG IS OFF
          SA3    WHEN 
          SA1    DD.TMPG     REGISTER NAME
          SA2    A3+B1
          SA4    X3          PRE-FETCH FROM WHEN LIST 
          IX6    X2-X3       LENGTH OF WHEN LIST
          MX0    -12
          LX1    12 
          SB5    X6+1        WHEN COUNTER 
          BX1    -X0*X1      CLEAR ANY EXTRANEOUS BITS
 TD.P35   SB5    B5-B1
          ZR     B5,TD.P36   IF WHEN LIST EXHAUSTED 
          SA3    X4          GET POINTER TO 2ND WORD OF ETT 
          BX6    X4 
          SA4    A4+B1
          PL     X3,TD.P35   IF ETT IS INACTIVE 
          PL     X6,TD.P35   IF NOT A REGISTER WHEN 
          LX6    30 
          BX5    -X0*X6 
          BX5    X5-X1
          NZ     X5,TD.P35   IS THIS THE REGISTER 
          SX7    B0 
          SA7    DD.NOPR
 TD.P36   SX1    1R/
          LX1    54 
          CALL   PR,(,B1,B0) PRINT A /
          SA5    TD.TMP1
          CALL   PO,(A5+B1,X5,B0) 
* 
 TD.P32   BSS    0
 TD.P3NO  BSS    0
          SA1    TD.PIN 
          EQ     TD.P3LP
* 
 TD.P3SC  BSS    0           DISPLAY MEMORY 
          LX5    59 
          NG     X5,TD.P3DP  JUMP IF DUMP BIT IS ON 
          LX5    59 
          SX6    2RS= 
          SB2    6
          BX7    X1 
          LX1    42 
          PL     X5,TD.P3M1  JUMP IF LCM BIT OFF
          SB2    B2+B1
          SA1    DD.LLOC
          SX6    2RL= 
          BX7    X1 
          LX1    39 
 TD.P3M1  SA6    TD.TMP1
          MX0    1
          BX0    X0*X5
          BX7    X0+X1
          SA7    TD.TMP2
          CALL   PO,(,,B1)
          SA1    TD.TMP1
          LX1    48 
          CALL   PR,(,B1+B1,B0) 
          CALL   PO,(DD.OSCM,20,B0) 
          SA1    DD.NSCM
          SA2    DD.OSCM
          BX0    X1-X2
          ZR     X0,TD.P32
          MX0    1
          SA2    DD.NOPR
          ZR     X2,TD.P310  IF NO-PRINT FLAG IS OFF
          SA3    WHEN 
          SA1    TD.TMP2
          SA2    A3+1 
          BX5    X0*X1
          BX1    -X0*X1 
          IX6    X2-X3       LENGTH OF WHEN LIST
          SA4    X3 
          SB5    X6+B1       WHEN COUNTER 
          MX0    -21
 TD.P38   SB5    B5-B1
          ZR     B5,TD.P310  IF WHEN LIST EXHAUSTED 
          SA3    X4 
          BX6    X4 
          SA4    A4+B1
          PL     X3,TD.P38   IF WHEN INACTIVE 
          MI     X6,TD.P38   IF A REGISTER WHEN 
          LX6    30 
          BX5    X6-X5
          MI     X5,TD.P38   IF ADDRESS IS OF INCORRECT TYPE
          BX5    -X0*X6      ISOLATE ADDRESS
          LX5    39 
          MI     X6,TD.P39   IF LCM ADDRESS 
          LX5    3
 TD.P39   BX5    X5-X1
          NZ     X5,TD.P38   IF ADDRESSES DO NOT MATCH
          SX7    B0 
          SA7    DD.NOPR
 TD.P310  SX1    1R/
          LX1    54 
          CALL   PR,(,B1,B0)
          CALL   PO,(DD.NSCM,20,B0) 
          SA1    TD.PIN 
          EQ     TD.P3LP
* 
 TD.P3DP  PL     X6,TD.P3DP1 IF NOT FIRST SR IF IM INSTRUCTION
          BX6    X5 
          SA6    DD.TMP3
          CALL   CR,1R
          CALL   PR,((=3HMD ),3,28) 
          SA2    DD.NSCM
          MX0    -9 
          LX2    12 
          SB3    5
          SB4    45 
          RJ     DA.CMU 
          SA5    DD.TMP3
 TD.P3DP1 BSS    0           DISPLAY MEMORY RANGE 
          SA1    DD.LLOC
          SA2    DD.LENG
          SA3    A1+B1       POP LENG, LLOC, AND LLAB STACKS
          SA4    A2+B1
          BX6    X3 
          BX7    X4 
          SA3    A3+B1
          SA4    A4+B1
          SA6    A1 
          SA7    A2 
          BX6    X3 
          BX7    X4 
          SA6    A6+B1
          SA7    A7+B1
          MX0    59 
          BX6    -X0*X5 
          SA3    GS.SHFT+X6 
          BX7    X3 
          SA7    PA.0        PLUG DS.PO INITIALIZATION CODE 
          SA6    DP.LCMF
          SA4    GS.SHFT+X6 
          BX7    X4 
          SA7    PA.0        PLUG DS.PO INITIALIZATION CODE 
          BX6    X1 
          IX7    X1+X2
          SA6    DP.LOC 
          SA7    A6+B1
          ZR     X2,TD.P3H
          CALL   CR,1R
          SA2    DD.LLAB
          SA3    A2+B1
          SA4    A3+B1
          BX6    X3 
          BX7    X4 
          SA6    A2 
          SA7    A3 
          LX2    1
          SX1    X2+TD.HEAD 
          CALL   PR,(X1,20,1) 
          CALL   CR,1R
          RJ     DS.OD
          SA1    TD.PIN 
          EQ     TD.P3LP
* 
 TD.P3H   BSS    0
          SX7    B1                NO PRINT FLAG
          SA4    DD.NOPR           CHECK PRINT STAUS
          NZ     X4,TD.NPEX        BRANCH IF NO PRINT 
          SA7    A4 
 TD.EXIT  BSS    0
          CALL   CR,1R
          EQ     DS.TD
* 
 TD.NPEX  BSS    0                 RESET LINE INFORMATION AS IF WE JUST 
          SA5    =10H 
          SX6    B0 
          SX7    B1 
          SA6    DD.WC
          BX6    X5 
          SA7    DD.CP
          SX7    54 
          SA6    DD.WS
          SA7    DD.SCR 
          EQ     DS.TD
          TITLE              INSTRUCTION DISASSEMBLY
* 
**        DA - DISASSEMBLE INSTRUCTION TO CURRENT LINE
*         CALLING SEQUENCE -
*         X2 = THE MACHINE INSTRUCTION, 30 BITS UPPER 
*         RJ     DS.DA
*         UPON RETURN - 
*         18 CHARACTERS HAVE BEEN ADDED TO THE CURRENT PRINT LINE 
* 
          SPACE  2
*         INSTRUCTION MNEMONIC SKELTON TABLE
* 
          MACRO  ON,O,N 
          IFC    EQ,.N..,1
          DATA   0
          IFC    NE,.N..,1
          DATA   L.N. 
          ENDM
* 
 DA.IST   BSS    0
00        ON     PS 
 01       ON
 02       ON     (JP BI+Q)
 03       ON
 04       ON     (EQ BI,BJ,Q) 
 05       ON     (NE BI,BJ,Q) 
 06       ON     (GE BI,BJ,Q) 
 07       ON     (LT BI,BJ,Q) 
 10       ON     (BXI XJ) 
 11       ON     (BXI XJ*XK)
 12       ON     (BXI XJ+XK)
 13       ON     (BXI XJ-XK)
 14       ON     (BXI -XK)
 15       ON     (BXI -XK*XJ) 
 16       ON     (BXI -XK+XJ) 
 17       ON     (BXI -XK-XJ) 
 20       ON     (LXI JKB)
 21       ON     (AXI JKB)
 22       ON     (LXI BJ,XK)
 23       ON     (AXI BJ,XK)
 24       ON     (NXI BJ,XK)
 25       ON     (ZXI BJ,XK)
 26       ON     (UXI BJ,XK)
 27       ON     (PXI BJ,XK)
 30       ON     (FXI XJ+XK)
 31       ON     (FXI XJ-XK)
 32       ON     (DXI XJ+XK)
 33       ON     (DXI XJ-XK)
 34       ON     (RXI XJ+XK)
 35       ON     (RXI XJ-XK)
 36       ON     (IXI XJ+XK)
 37       ON     (IXI XJ-XK)
 40       ON     (FXI XJ*XK)
 41       ON     (RXI XJ*XK)
 42       ON     (DXI XJ*XK)
 43       ON     (MXI JKB)
 44       ON     (FXI XJ/XK)
 45       ON     (RXI XJ/XK)
 46       ON
 47       ON     (CXI XK) 
 50       ON     (SAI AJ+Q) 
 51       ON     (SAI BJ+Q) 
 52       ON     (SAI XJ+Q) 
 53       ON     (SAI XJ+BK)
 54       ON     (SAI AJ+BK)
 55       ON     (SAI AJ-BK)
 56       ON     (SAI BJ+BK)
 57       ON     (SAI BJ-BK)
 60       ON     (SBI AJ+Q) 
 61       ON     (SBI BJ+Q) 
 62       ON     (SBI XJ+Q) 
 63       ON     (SBI XJ+BK)
 64       ON     (SBI AJ+BK)
 65       ON     (SBI AJ-BK)
 66       ON     (SBI BJ+BK)
 67       ON     (SBI BJ-BK)
 70       ON     (SXI AJ+Q) 
 71       ON     (SXI BJ+Q) 
 72       ON     (SXI XJ+Q) 
 73       ON     (SXI XJ+BK)
 74       ON     (SXI AJ+BK)
 75       ON     (SXI AJ-BK)
 76       ON     (SXI BJ+BK)
 77       ON     (SXI BJ-BK)
* 
 DA.IST1  BSS    0
 010      ON     (RJ Q) 
 011      ON     (RE BJ+Q)
 012      ON     (WE BJ+Q)
 013      ON     (XJ BJ+Q)
 014      ON     (RXJ XK) 
 015      ON     (WXJ XK) 
 016      ON     (IBJ BK) 
 017      ON     (OBJ BK) 
* 
 DA.IST3  BSS    0
 030      ON     (ZR XJ,Q)
 031      ON     (NZ XJ,Q)
 032      ON     (PL XJ,Q)
 033      ON     (NG XJ,Q)
 034      ON     (IR XJ,Q)
 035      ON     (OR XJ,Q)
 036      ON     (DF XJ,Q)
 037      ON     (ID XJ,Q)
* 
 DA.IST46 BSS    0
 460      ON     (NO) 
 461      ON
 462      ON
 463      ON
 464      ON     (IM BJ+Q)
 465      ON     (DM C) 
 466      ON     (CC C) 
 467      ON     (CU C) 
* 
* 
**        EDIT THE SKELTON SUBSTITUTING REGISTER NUMBER FOR I=J=K AND 
*         18 BIT K FOR Q. 
*         REGISTER USAGE IS 
*         X0 = M54                             A0 = CHAR COUNT
*         X1 = SKELETON      B1 = 1 
*         X2 = INSTRUCTION   B2 = 1R0 
*         X3 = FLAG WORD     B3 = SCRATCH 
*         X4 = M57           B4 = 1RI 
*         X5 = SCRATCH       B5 = SCRATCH 
*         X6 = SCRATCH       B6 = SCRATCH 
*         X7 = MNEMONIC      B7 = SHIFT COUNT 
* 
 DS.DA    BSS    1
          MX0    54 
          LX2    6
          MX4    57 
          BX5    -X0*X2 
          SA3    =44070100000000000000B 
          SA1    X5+DA.IST
          SA0    B1+B1
          MX7    48 
          SB7    48 
          SB4    1RH
          NZ     X1,DA.AN 
          BX6    X2 
          SB3    X5 
          LX6    3
          BX6    -X4*X6 
          SB6    DA.IST1
          EQ     B3,B1,DA.1 
          SB6    DA.IST3
          SB5    3
          EQ     B3,B5,DA.1  IF AN X REGISTER CONDITION JUMP
          SB6    DA.IST46 
 DA.1     NO
          SA1    X6+B6
 DA.AN    LX1    12 
          NO
          BX7    -X7*X1 
          LX1    6
* 
 DA.ED    BSS    0           EDIT LOOP
          BX5    -X0*X1      NEXT CH
          ZR     B7,DA.EDON 
          SB3    X5 
          LX6    X3,B3
          PL     X6,DA.ED1   JUMP IF THIS CH DOES NOT REQUIRE ACTION
          SB5    B3-B4
          SB6    1RQ
          ZR     B3,DA.EDON  JUMP IF ZERO 
          EQ     B3,B6,DA.EDQ IF CHARACTER IS A Q 
          SB6    1RC
          SX6    B5+B5
          SB5    X6+B5
          EQ     B3,B6,DA.EDC IF CHARACTER IS A C 
          LX5    X2,B5
          BX5    -X4*X5 
          SX5    X5+1R0 
* 
 DA.ED1   BSS    0
          LX7    6
          SA0    A0+B1
          BX7    X7+X5
          LX1    6
          SB7    B7-6 
          EQ     DA.ED
  
 DA.EDC   BX6    X2 
          SA6    DD.TMP1     SAVE INSTRUCTION 
          LX1    X7,B7
          CALL   PR,(,A0,B1) DISPLAY MNEMONIC 
          SA2    DD.TMP1
          SB3    3
          SB4    51 
          LX2    6
          MX0    -3 
          RJ     DA.CMU 
          EQ     DS.DA
  
 DA.EDQ   BSS    0
          LX2    6
          SX6    B1 
          IX6    X6+X2
          SA6    DD.TMP1
          EQ     DA.2 
* 
 DA.EDON  BSS    0
          MX6    0
          NO
          SA6    DD.TMP1
* 
 DA.2     BSS    0
          SX6    A0 
          LX1    X7,B7
          SA6    DD.TMP2     CHAR COUNT 
          CALL   PR,(,A0,B1)
          SA1    DD.TMP1
          SA2    DD.TMP2
          ZR     X1,DA.3
          CALL   PO,(,6,B0) 
          SA2    DD.TMP2
          SX2    X2+6 
 DA.3     BX2    -X2
          CALL   PR,(=10H,B1,X2+15) 
          EQ     DS.DA
          SPACE  3
 DA.CMU   SUBR               ENTRY/EXIT 
          BX6    -X0*X2      ISOLATE FIRST PART OF LENGTH 
          LX2    18 
          MX0    -4 
          SX7    X2 
          LX2    4
          LX7    42 
          LX6    4
          BX3    -X0*X2      ISOLATE SECOND PART OF LENGTH
          BX1    X6+X3       BUILD LENGTH 
          BX6    X2 
          SA7    DD.TMP1
          SA6    A7+B1
          LX1    B4 
          CALL   PO,(,B3,0)  DISPLAY LENGTH 
          CALL   PR,((=1H,),B1,B0)
          CALL   PO,(DD.TMP1,6,0)  DISPLAY FIRST ADDRESS
          CALL   PR,((=1H,),B1,B0)
          SA2    DD.TMP2
          LX2    4
          MX0    -4 
          BX1    -X0*X2      ISOLATE CHARACTER POSITION OF FIRST FIELD
          LX2    4
          BX6    -X0*X2      ISOLATE CHARACTER POSITION OF SECOND FIELD 
          LX2    18 
          LX6    54 
          SX7    X2 
          LX7    42 
          SA6    DD.TMP1
          LX1    54 
          SA7    A6+B1
          CALL   PO,(,2,0)   DISPLAY CHARACTER POSITION 
          CALL   PR,((=1H,),B1,B0)
          CALL   PO,(DD.TMP2,6,0)  DISPLAY SECOND ADDRESS 
          CALL   PR,((=1H,),B1,B0)
          CALL   PO,(DD.TMP1,2,0) DISPLAY SECOND CHARACTER POSITION 
          CALL   PR,(=10H,B1,3) 
          EQ     EXIT.
  
 GS.RECUR BSS    0
          SA3    DD.NP             PICK UP P REGISTER 
          SX7    B1+B1             OP CODE FOR A JUMP INSTRUCTION 
          LX7    24                POSITION SAME
          SA4    X3                PICK UP THE WORD A P 
          BX7    X7+X3             FORM THE BRANCH BACK 
          LX7    30                POSITION RETURN BRANCH 
          SA7    RECJ              STORE THE RETURN BRANCH
          SA3    GS.ADDR
          SA4    X4 
          IX7    X4+X3
          SA7    A4 
 +        RJ     DS.RR             RESTORE USERS REGS 
 -        VFD    30/DD.NR 
 RECJ     BSS    1                 RETURN BRANCH INSTRUCTION GOES HERE
  
 REC2     SA4    GS.ADDR
          SA5    X4 
          MX0    -18
          SX6    X5 
          BX7    X0*X5
          SA6    A4 
          SA7    A5 
          SA4    GS.FRMF
          ZR     X4,IE.INIT  IF NOT FINISHING A FRAME 
          CALL   CR,B0
          CALL   CR,B0
          CALL   PR,((=20HTRACK DUMP CONTINUED),20,50)
          CALL   CR,B0
          CALL   CR,B0
          EQ     IE.INIT           CONTINUE 
          SPACE  2
 TRAPEND  END 
