SCRSIM
          IDENT  SCRSIM,PW16,SCRSIM 
          ABS 
          SST 
          SYSCOM B1 
          ENTRY  SCRSIM 
          ENTRY  RFL= 
          ENTRY  SSJ= 
*COMMENT  SCRSIM - SCR SIMULATOR. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  SCRSIM - STATUS/CONTROL REGISTER SIMULATOR.
          SPACE  4
***       SCRSIM - STATUS/CONTROL REGISTER SIMULATOR. 
*         A. J. BEEKMAN      74/06/13.
          SPACE  4
***       *SCRSIM* SIMULATES THE CYBER 170 STATUS/CONTROL REGISTERS 
*         BY ALLOWING THE OPERATOR TO MANIPULATE THE BITS IN THE ACTUAL 
*         S/C REGISTER(S) OF THE CYBER 170 OR THE INTERLOCK REGISTER
*         OF THE CYBER 70.
* 
*         *SCRSIM* DRIVES A *K* DISPLAY THAT ALLOWS THE OPERATOR TO 
*         SET AND CLEAR BITS, SET BYTES, AND SET LINES AND AREAS IN 
*         HOLDING REGISTERS.  THIS ALLOWS THE OPERATOR TO SET UP BOTH 
*         REGISTERS COMPLETELY.  WHEN *GO.* IS ENTERED, THE ENTIRE
*         HOLDING REGISTER CONTENTS ARE TRANSFERRED INTO THE
*         STATUS/CONTROL REGISTERS OF THE CYBER 170, OR 128 BITS
*         ARE TRANSFERRED INTO THE INTERLOCK REGISTER OF THE CYBER 70.
*         THE PROGRAM IS CALLED FROM THE CONSOLE BY ENTERING X.SCRSIM.
* 
*         COMMANDS CAN BE ENTERED ON THE *K* DISPLAY BY ENTERING
*         K.COMND. WHERE COMND. IS ONE OF THE FOLLOWING-
* 
*                AREA,A,M,Y.
*                BYTE,XX,YYYY.
*                CLEAR,A,B,...,Z. 
*                CYCLE,X,T,R. 
*                END. 
*                GO.
*                LINE,X,Y.
*                READ.
*                SET,A,B,...,Z. 
*                STOP.
*                +. 
* 
*         THE BITS SET THROUGH THE SIMULATOR ARE LOGGED IN THE ERROR
*         LOG IF AN ERROR BIT (BITS 0-39) IS SET.  ERROR LOGGING
*         WILL NOT OCCUR ON A CYBER 70 IF NNNN OF THE IPRDECK ENTRY 
*         DELAY,TCNNNN IS ZERO.  THE SIMULATOR JOB DAYFILE LISTS ALL
*         COMMANDS ENTERED. 
* 
*         BATCH INPUT.
* 
*         THE SIMULATOR MAY BE CALLED FROM BATCH INPUT BY THE 
*         COMMAND *SCRSIM*.  THE INPUT FILE MUST HAVE A RECORD
*         CONTAINING THE COMMANDS TO BE PROCESSED, ONE COMMAND PER
*         COMMAND.  DEBUG MODE IS NECESSARY, AND THE USER MUST BE 
*         VALIDATED FOR SYSTEM ORIGIN PRIVILEDGES.
          SPACE  4
***       DAYFILE MESSAGES. 
* 
*         * END SIMULATOR.* - OPERATOR HAS ENTERED *STOP.* TO DROP THE
*         SIMULATOR.
* 
*         * NO SCR ON MAINFRAME.* - OPERATOR HAS BROUGHT UP 
*         SCR SIMULATOR ON MAINFRAME THAT DOES NOT SUPPORT
*         STATUS/CONTROL REGISTER.
          SPACE  4
***       *K* DISPLAY MESSAGES. 
* 
*         *CONVERSION ERROR.* - PRESENCE OF CHARACTER AFTER POSTRADIX 
*         OR PRESENCE OF 8 OR 9 WITH POSTRADIX OF B.
* 
*         *CYCLE STILL PROCESSING.* - COMMAND OTHER THAN *END*
*         ENTERED BEFORE TOTAL TIME LIMIT IS REACHED. 
* 
*         *INCORRECT BIT NUMBER.* - BIT NUMBER SPECIFIED NOT VALID. 
* 
*         *INCORRECT BYTE NUMBER.* - BYTE NUMBER SPECIFIED NOT VALID. 
* 
*         *INCORRECT CHARACTER.* - ALPHABETIC CHARACTER OTHER THAN B OR 
*         OR D AS POSTRADIX ON DECIMAL VALUES, ALPHABETIC CHARACTER,
*         8, OR 9 FOUND IN OCTAL VALUE ARGUMENT, OR CHARACTER WITH
*         DISPLAY CODE OF 60B OR ABOVE FOUND. 
* 
*         *INCORRECT COMMAND.* - ENTERED COMMAND NOT LEGAL. 
* 
*         *INCORRECT LINE NUMBER.* - LINE NUMBER SPECIFIED NOT LEGAL. 
* 
*         *MAXIMUM NUMBER OF ARGUMENTS.* - FIRST 30 BIT NUMBERS ONLY
*         ACCEPTED ON SET OR CLEAR COMMANDS.
* 
*         *NO BITS SPECIFIED.* - NO BIT NUMBERS SPECIFIED ON SET OR 
*         CLEAR BIT COMMANDS. 
* 
*         *NOT ENOUGH ARGUMENTS.* - TERMINATOR FOUND BEFORE THE CORRECT 
*         NUMBER OF ARGUMENTS ENTERED FOR THE COMMAND.
* 
*         *NUMBER OF BITS TOO LARGE.* - NUMBER OF BITS ON AREA COMMAND
*         LARGER THAN NUMBER OF BITS FROM STARTING BIT TO END OF
*         REGISTER. 
* 
*         *NUMBER OF CYCLES TOO LARGE.* - NUMBER OF CYCLES ON CYCLE 
*         COMMAND IS GREATER THAN 4095. 
* 
*         *TIME LIMIT UP.* - TOTAL TIME LIMIT ON CYCLE COMMAND HAS
*         PASSED.  INPUT CAN AGAIN BE ACCEPTED BY THE SIMULATOR.
* 
*         *TOO MANY BITS SPECIFIED.* - MORE BITS SPECIFIED THAN CAN 
*         BE HELD IN AREA, LINE OR BYTE GIVEN.
          SPACE  4
*CALL     COMCMAC 
*CALL     COMCDCM 
*CALL     COMSPRD 
*CALL     COMSSCR 
*CALL     COMSSSJ 
*CALL     COMSSSD 
          TITLE  CONSTANTS. 
*         CONSTANTS.
  
 MNOP     EQU    30          MAXIMUM NUMBER OF PARAMETERS ALLOWED 
 IBUFL    EQU    101B        INPUT BUFFER LENGTH
 OBUFL    EQU    101B        OUTPUT BUFFER LENGTH 
          TITLE  HOLDING REGISTERS AND DIRECT LOCATIONS.
          ORG    101B 
  
*         HOLDING REGISTERS FOR OPERATOR USE. 
  
 PW16     BSSZ   1           CHANNEL 16 PARAMETER WORD
 UHLD     BSSZ   4           CHANNEL 16 HOLDING REGISTER
 PW36     BSSZ   1           CHANNEL 36 PARAMETER WORD
 LHLD     BSSZ   4           CHANNEL 36 HOLDING REGISTER
  
*         DIRECT LOCATIONS. 
  
 K        VFD    24/I,18/R,18/L16  *K* DISPLAY CONTROL WORD 
 I        BSS    8           KEYBOARD INPUT BUFFER
 PARA     BSS    30          PARAMETER AREA 
 BLNK     DIS    4, 
 REGF     BSSZ   1           REGISTER IN USE FLAG 
 CA       BSSZ   1           CHANNEL 36 AVAILABLE FLAG
  
*         FETS. 
  
 IN       BSS    0
 INPUT    FILEB  IBUF,IBUFL 
  
 OT       BSS    0
 OUTPUT   FILEB  OBUF,OBUFL 
  
*         SSJ PARAMETER AREA. 
  
 SSJ=     VFD    12/0,24/-0,12/SCCS,12/IRSI 
          BSSZ   SSJL-1 
 SCRSIM   TITLE  SCRSIM - MAIN LOOP.
*         SCRSIM - STATUS/CONTROL REGISTER SIMULATOR. 
  
 SCRSIM   SB1    1
          RJ     PRS         PRESET 
          READ   IN,R 
          SA1    IN+2        IN 
          SA2    A1+B1       OUT
          IX6    X1-X2
          NZ     X6,SCS11    IF FET INPUT, BEGIN ROUTINE
          BX6    X6-X6       ZERO FET NAME
          SA6    IN 
 SCS1     SA1    I
          ZR     X1,SCS11    IF INPUT NOT READY 
  
*         DISPLAY INPUT COMMAND.
  
          MESSAGE I,3        ENTER COMMAND IN JOB DAYFILE 
          MOVE   3,BLNK,MSGL CLEAR ERROR MESSAGE AREAS
          MOVE   3,BLNK,MSGK
          MOVE   5,I,PARL    DISPLAY COMMAND
          MOVE   5,I,PARK 
          SA2    BLNK 
          SB2    4
          BX6    X2 
 SCS2     SA3    PARL+B2
          SA4    PARK+B2
          NZ     X3,SCS3     IF NOT ZERO WORD 
          SA6    A3+         BLANK OUT ZERO WORD
          SB2    B2-B1
          SA6    A4 
          NZ     B2,SCS2     IF NOT END OF BUFFER 
  
*         FIND CORRECT COMMAND AND PROCESSOR. 
  
 SCS3     SA2    I
          SA1    TOCP        TABLE OF COMMAND PROCESSORS
 SCS4     BX6    X1 
          AX6    18 
          MX7    -6 
          BX6    -X7*X6      SHIFT COUNT FOR MASK 
          SB7    X6 
          MX0    1
          AX0    B7          MASK FOR COMMAND 
          BX2    X0*X2
          BX1    X0*X1
          BX6    X2-X1
          ZR     X6,SCS5     IF CORRECT COMMAND 
          SA1    A1+B1
          SA2    A2 
          NZ     X1,SCS4     IF NOT END OF COMMANDS 
          MOVE   3,SCSA,MSGL *INCORRECT PARAMETER.* 
          MOVE   3,SCSA,MSGK
          EQ     SCS8 
  
 SCS5     SB6    7
          SA2    A2          CHECK FOR SEPARATOR
          SB7    B7+B6       SHIFT COUNT FOR COMMAND AND SEPARATOR
          LX2    B7 
          SX3    1R+         CHECK FOR *+* COMMAND
          LX3    6
          BX3    X2-X3
          ZR     X3,SCS7     IF *+* ONLY
          BX2    -X7*X2 
          SX6    X2-1R+ 
          NG     X6,SCS6     IF ALPHANUMERIC
          SX6    X2-1R# 
          NG     X6,SCS7     IF SEPARATOR OR TERMINATOR 
 SCS6     MOVE   3,SCSA,MSGL *INCORRECT PARAMETER.* 
          MOVE   3,SCSA,MSGK
          EQ     SCS8 
  
*         JUMP TO COMMAND PROCESSOR.
  
 SCS7     SA1    A1 
          SB7    X1          PROCESSOR ADDRESS
          SX6    SCS8        SET UP RETURN ADDRESS
          SX7    1           SET DISPLAY UPDATE AFTER COMMAND 
          SA7    SCSC 
          SA6    B7-B1
          JP     B7 
  
*         RETURN FROM PROCESSOR AND CLEAR INPUT AREA. 
  
 SCS8     MOVE   3,MSGL,SCSB+1
          SA1    SCSB+1 
          NG     X1,SCS9     IF NO ERROR MESSAGE
          MESSAGE SCSB,3     PUT ERROR MESSAGE IN DAYFILE 
 SCS9     BX6    X6-X6       CLEAR INPUT AREA 
          SB2    B0 
          SB3    7
 SCS10    SA6    I+B2 
          EQ     B2,B3,SCS11 IF END OF BUFFER 
          SB2    B2+B1
          EQ     SCS10
  
*         READ AND DISPLAY S/C REGISTER CONTENTS. 
  
 SCS11    RECALL
          SA1    SCSC        CHECK IF TIME TO UPDATE DISPLAY
          SX6    X1-1 
          SA6    A1+
          NZ     X6,SCS12    IF NOT TIME TO UPDATE
          RJ     DCR         DISPLAY CONTENTS OF REGISTER 
          SX6    50          RESET DISPLAY UPDATE COUNTER 
          SA6    SCSC 
          RECALL
 SCS12    SA1    IN          CHECK FOR FET INPUT
          ZR     X1,SCS1     IF NO FET INPUT
          READC  IN,I,8      TRANSFER FET INPUT TO INPUT AREA 
          NZ     X1,STP      IF EOR/EOF, END SIMULATOR
          MESSAGE I,2        DISPLAY AT CONTROL POINT 
          EQ     SCS1 
  
 SCSA     DIS    3,INCORRECT COMMAND. 
          BSSZ   1
 SCSB     DIS    4,          ERROR MESSAGE BUFFER 
          BSSZ   1
 SCSC     CON    1           DISPLAY UPDATE COUNTER 
          SPACE  4,5
**        TABLE OF COMMAND PROCESSORS.
*T        36/ COMMAND,6/ SC,18/ ADDR
* 
*         SC     SHIFT COUNT FOR MASK.
*         ADDR   PROCESSOR ADDRESS. 
  
  
 TOCP     BSS    0
          VFD    36/4LAREA,6/23,18/ARP
          VFD    36/4LBYTE,6/23,18/BYP
          VFD    36/5LCLEAR,6/29,18/CLP 
          VFD    36/5LCYCLE,6/29,18/CYP 
          VFD    36/2LGO,6/11,18/GOP
          VFD    36/4LLINE,6/23,18/LIP
          VFD    36/4LREAD,6/23,18/REP
          VFD    36/3LSET,6/17,18/SEP 
          VFD    36/4LSTOP,6/23,18/STP
          VFD    36/1L+,6/5,18/TOP
          BSSZ   1
 ARP      TITLE  PARAMETER PROCESSOR SUBROUTINES. 
***       AREA,A,M,Y. 
*                SET M BITS IN THE HOLDING REGISTER, FROM BIT A TO
*                A+M-1, TO THE OCTAL VALUE Y.  Y MAY BE UP TO M BITS
*                OF OCTAL VALUE.  A IS THE STARTING BIT NUMBER (0-203), 
*                AND M IS THE NUMBER OF BITS (1-204).  A AND M ARE
*                ASSUMED DECIMAL, BUT MAY HAVE A POSTRADIX OF D OR B. 
  
**        ARP -  SET AREA TO OCTAL VALUE. 
* 
*         EXIT   AREA IN HOLDING REGISTER SET TO GIVEN OCTAL VALUE. 
*                VALUE DISPLAYED ON *K* DISPLAY.
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                B - 2, 4, 5, 6, 7. 
*                A - 0, 1, 2, 3, 5, 6, 7. 
* 
*         CALLS  GPV, GOV, DYL. 
  
  
          DATA   0           RETURN ADDRESS 
 ARP      BSS    0
  
*         GET PARAMETERS. 
  
          SA2    I
          LX2    30 
          SA0    B0 
          MX0    -6 
          BX6    -X0*X2 
          SX7    X6-1R) 
          ZR     X7,ARP15    IF *)* 
          SX7    X6-1R. 
          ZR     X7,ARP15    IF *.* 
          SB6    5           CHARACTER COUNTER
          RJ     GPV         GET PARAMETER VALUE
          ZR     X1,ARP11    IF ERROR 
          SX7    X6-NBIT
          PL     X7,ARP12    IF INCORRECT BIT NUMBER
          SA6    ARPA        SAVE STARTING BIT
 ARP1     SX6    X1-1R) 
          ZR     X6,ARP15    IF *)* TERMINATOR
          SX6    X1-1R. 
          ZR     X6,ARP15    IF *.* TERMINATOR
          SX0    A0 
          NZ     X0,ARP2     IF BOTH PARAMETERS FOUND 
          SA0    B1 
          RJ     GPV         GET PARAMETER VALUE
          ZR     X1,ARP11    IF ERROR 
          SA5    ARPA 
          IX7    X5+X6       END BIT + 1
          SX5    205
          IX7    X7-X5
          PL     X7,ARP13    IF NUMBER OF BITS TOO LARGE
          SA6    ARPB        SAVE NUMBER OF BITS
          EQ     ARP1 
  
 ARP2     RJ     GOV         GET OCTAL VALUE
          ZR     X2,ARP11    IF ERROR 
          SX6    B7+
          ZR     B4,ARP3     IF NO FULL WORD OF VALUE 
          SX1    60          NUMBER OF BITS IN A WORD 
          SX2    B4+
          IX7    X2*X1
          IX6    X7+X6       TOTAL NUMBER OF BITS 
 ARP3     SA2    ARPB 
          IX7    X2-X6
          NG     X7,ARP14    IF TOO MANY BITS GIVEN 
  
*         INSERT VALUE INTO HOLDING REGISTER. 
  
          SA1    REGF 
          SA2    ARPA        STARTING BIT 
          SX6    60 
          SX7    X2 
          IX6    X7/X6       HOLDING REGISTER WORD
          SX7    60 
          IX7    X6*X7
          IX7    X2-X7
          SB5    X7          BIT NUMBER IN WORD 
          SA7    A2          SAVE BIT NUMBER IN WORD
          SX7    UHLD+X6
          ZR     X1,ARP4     IF CHANNEL 16 REGISTER 
          SX7    LHLD+X6
 ARP4     SA0    X7          STARTING ADDRESS 
          SA1    A0 
          SA3    ARPB        NUMBER OF BITS 
          SB7    X3+
          SB6    60 
          SA3    GOVA        VALUE
 ARP5     SB4    60 
          SB4    B5-B4
          SB4    -B4
          GE     B7,B4,ARP6  IF ENOUGH BITS TO FILL WORD
          SB4    B7+
 ARP6     GE     B6,B4,ARP7  IF ENOUGH BITS IN VALUE WORD 
          SB4    B6+
 ARP7     SB3    B4-B1       MASK COUNT 
          MX0    1
          AX0    B3 
          LX2    B4,X0       VALUE WORD MASK
          LX0    B5,X2       HOLDING WORD MASK
          BX7    X2*X3       GET VALUE
          AX3    B4 
          LX7    B5          VALUE LEFT SHIFTED 
          BX6    -X0*X1 
          BX1    X7+X6       MERGE IN VALUE 
          SB6    B6-B4
          NZ     B6,ARP8     IF NOT END OF VALUE WORD 
          SB6    60 
          SA3    A3+B1       GET NEXT VALUE WORD
 ARP8     SB5    B5+B4
          SB2    60 
          SB2    B5-B2
          NZ     B2,ARP9     IF NOT END OF HOLDING WORD 
          BX6    X1 
          SA6    A1+         SAVE WORD
          SA1    A1+B1       GET NEXT HOLDING REGISTER WORD 
          SB5    B0+
 ARP9     SB7    B7-B4
          NZ     B7,ARP5     IF NOT END OF TRANSFER 
          BX6    X1 
          SA6    A1          SAVE LAST WORD 
  
*         DISPLAY ENTIRE AREA.
  
          RJ     DYL         DISPLAY LINE 
          SA1    ARPB        NUMBER OF BITS 
          SA2    ARPA        BIT ORDINAL IN WORD
          SB7    X2-60
          SB6    X1+
          SB7    -B7+B1      NUMBER OF BITS LEFT IN WORD + 1
          SB5    B6-B7
 ARP10    NG     B5,ARP11    IF ENTIRE AREA DISPLAYED 
          SB6    B5+B1       NUMBER OF BITS LEFT TO DISPLAY 
          SA0    A0+B1       SET NEXT WORD ADDRESS
          RJ     DYL         DISPLAY LINE 
          SB5    B6-61
          EQ     ARP10
  
*         RETURN TO MAIN PROCESSOR. 
  
 ARP11    SA1    ARP-1       GET RETURN ADDRESS 
          SB7    X1+
          JP     B7 
  
 ARP12    MOVE   3,ARPD,MSGL *INCORRECT BIT NUMBER.*
          MOVE   3,ARPD,MSGK
          EQ     ARP11
  
 ARP13    MOVE   3,ARPE,MSGL *NUMBER OF BITS TOO LARGE.*
          MOVE   3,ARPE,MSGK
          EQ     ARP11
  
 ARP14    MOVE   3,ARPF,MSGL *TOO MANY BITS SPECIFIED.* 
          MOVE   3,ARPF,MSGK
          EQ     ARP11
  
 ARP15    MOVE   3,ARPC,MSGL *NOT ENOUGH ARGUMENTS.*
          MOVE   3,ARPC,MSGK
          EQ     ARP11
  
 ARPA     BSSZ   1           STARTING BIT 
 ARPB     BSSZ   1           NUMBER OF BITS 
 ARPC     DIS    3,NOT ENOUGH ARGUMENTS.
          BSSZ   1
 ARPD     DIS    3,INCORRECT BIT NUMBER.
          BSSZ   1
 ARPE     DIS    3,NUMBER OF BITS TOO LARGE.
          BSSZ   1
 ARPF     DIS    3,TOO MANY BITS SPECIFIED. 
          BSSZ   1
 BYP      SPACE  4,16 
***       BYTE,XX,YYYY. 
*                SET BYTE XX IN THE HOLDING REGISTER TO THE OCTAL 
*                VALUE YYYY.  YYYY MAY BE UP TO 12 BITS OF OCTAL
*                VALUE.  XX IS THE BYTE NUMBER (0-16), AND IS 
*                ASSUMED DECIMAL, BUT MAY HAVE A POSTRADIX OF D OR B. 
  
**        BYP -  SET BYTE TO OCTAL VALUE. 
* 
*         EXIT   BYTE SET IN HOLDING REGISTER.
*                VALUE DISPLAYED ON *K* DISPLAY.
* 
*         USES   X - 0, 1, 2, 5, 6, 7.
*                B - 2, 6, 7. 
*                A - 0, 1, 2, 7.
* 
*         CALLS  GPV, GOV, DYL. 
  
  
          DATA   0           ENTRY/EXIT 
 BYP      BSS    0
          SA2    I
          SB6    5           CHARACTER COUNTER
          LX2    30 
          MX0    -6 
          BX6    -X0*X2 
          SX7    X6-1R) 
          ZR     X7,BYP1     IF *)* 
          SX7    X6-1R. 
          ZR     X7,BYP1     IF *.* 
  
*         GET CORRECT BYTE. 
  
          RJ     GPV         GET PARAMETER VALUE
          ZR     X1,BYP5     IF ERROR 
          SX7    X1-1R) 
          ZR     X7,BYP1     IF *)* TERMINATOR
          SX7    X1-1R. 
          ZR     X7,BYP1     IF *.* TERMINATOR
          EQ     BYP2 
  
 BYP1     MOVE   3,BYPA,MSGL *NOT ENOUGH ARGUMENTS.*
          MOVE   3,BYPA,MSGK
          EQ     BYP5 
  
 BYP2     SX7    X6-17
          NG     X7,BYP3     IF LEGAL BYTE NUMBER 
          MOVE   3,BYPB,MSGL *INCORRECT BYTE NUMBER.* 
          MOVE   3,BYPB,MSGK
          EQ     BYP5 
  
 BYP3     SA0    UHLD 
          SA1    REGF 
          ZR     X1,BYP4     IF CHANNEL 16 REGISTER 
          SA0    LHLD 
 BYP4     SX7    5
          SX5    X6 
          IX7    X6/X7       WORD NUMBER
          SB7    X7 
          SA0    A0+B7       SET WORD ADDRESS 
          SX6    5
          IX6    X6*X7
          IX6    X5-X6       BYTE ORDINAL IN WORD 
          SB2    X6 
          RJ     GOV         GET OCTAL VALUE
          ZR     X2,BYP5     IF ERROR 
          NZ     B4,BYP6     IF TOO MANY BITS 
          SB7    B7-13
          PL     B7,BYP6     IF TOO MANY BITS 
  
*         INSERT OCTAL VALUE INTO BYTE. 
  
          SA2    GOVA        OCTAL VALUE
          SX5    12 
          SX7    B2 
          IX7    X7*X5       SHIFT COUNT
          SB7    X7 
          SA1    A0          GET HOLDING WORD 
          MX0    48 
          BX6    -X0*X2 
          LX0    B7          FORM MASK
          LX6    B7 
          BX7    X0*X1
          BX7    X6+X7       INSERT VALUE 
          SA7    A0+
          RJ     DYL         DISPLAY LINE 
 BYP5     SA1    BYP-1       GET RETURN ADDRESS 
          SB7    X1+
          JP     B7 
  
 BYP6     MOVE   3,BYPC,MSGL *TOO MANY BITS SPECIFIED.* 
          MOVE   3,BYPC,MSGK
          EQ     BYP5 
  
 BYPA     DIS    3,NOT ENOUGH ARGUMENTS.
          BSSZ   1
 BYPB     DIS    3,INCORRECT BYTE NUMBER. 
          BSSZ   1
 BYPC     DIS    3,TOO MANY BITS SPECIFIED. 
          BSSZ   1
 CLP      SPACE  4,15 
***       CLEAR,A,B,...,Z.
*                CLEAR BITS A,B,...,Z IN THE HOLDING REGISTER, WHERE
*                A,B,...,Z ARE BIT NUMBERS (0-203).  DECIMAL VALUES 
*                ARE ASSUMED, BUT EACH MAY HAVE A POSTRADIX OF D OR B.
*                IF MORE THAN 30 BIT NUMBERS ARE ENTERED, ONLY THE
*                FIRST 30 WILL BE PROCESSED.  ALL OTHERS WILL BE
*                IGNORED. 
  
**        CLP -  CLEAR BITS IN HOLDING REGISTERS. 
* 
*         EXIT   BITS CLEARED IN HOLDING REGISTER.
*                BITS DISPLAYED ON *K* DISPLAY. 
* 
*         USES   X - 0, 1, 2, 6.
*                B - 6, 7.
*                A - 0, 1, 2, 6.
* 
*         CALLS  GPV, CBV.
  
  
          DATA   0           RETURN ADDRESS 
 CLP      BSS    0
          SA2    I
          SB6    B0+
          LX2    36 
          SA0    B0 
          MX0    -6 
          BX6    -X0*X2 
          SX1    X6-1R) 
          ZR     X1,CLP4     IF *)* 
          SX1    X6-1R. 
          ZR     X1,CLP4     IF *.* 
          SB6    6           CHARACTER COUNTER
  
*         GET BIT NUMBERS.
  
 CLP1     RJ     GPV         GET PARAMETER VALUE
          ZR     X1,CLP5     IF ERROR 
          SA6    PARA+A0
          SA0    A0+B1       CHECK FOR MAXIMUM NUMBER OF PARAMETERS 
          SX0    A0 
          SX6    X1-1R) 
          ZR     X6,CLP3     IF *)* 
          SX6    X1-1R. 
          ZR     X6,CLP3     IF *.* 
          SX0    X0-MNOP
          ZR     X0,CLP2     IF MAXIMUM NUMBER OF PARAMETERS
          EQ     CLP1 
  
 CLP2     MOVE   3,CLPA,MSGL *MAXIMUM NUMBER OF ARGUMENTS.* 
          MOVE   3,CLPA,MSGK
 CLP3     SB6    A0+         NUMBER OF BITS SPECIFIED 
          SA0    UHLD 
          SA1    REGF 
          ZR     X1,CLP4     IF CHANNEL 16 REGISTER 
          SA0    LHLD 
 CLP4     SX0    B1          SET CLEAR BIT FLAG 
          RJ     CBV         CHANGE BIT VALUES
 CLP5     SA1    CLP-1       GET RETURN ADDRESS 
          SB7    X1+
          JP     B7 
  
 CLPA     DIS    3,MAXIMUM NUMBER OF ARGUMENTS. 
          BSSZ   1
 CYP      SPACE  4,25 
***       CYCLE,X,T,R.
*                SET BIT X EVERY T PERIODS A TOTAL OF R TIMES.  X IS
*                THE BIT NUMBER (0-203) AND R THE NUMBER OF TIMES TO
*                SET THE BIT.  R MAY NOT EXCEED 4095.  T IS THE 
*                NUMBER OF TIME PERIODS FOR EACH CYCLE, ONE PERIOD
*                BEING 16 MILLISECONDS.  T=32 IS APPROXIMATELY ONE HALF 
*                SECOND.  THIS COMMAND ASSUMES CONTROL OF THE 
*                SIMULATOR FOR THE TOTAL TIME PERIOD SPECIFIED, AND 
*                NO COMMAND WILL BE ACCEPTED EXCEPT *END*.  BIT X 
*                IS SET IN THE HOLDING REGISTER BY THIS COMMAND.
* 
*         END.
*                END *CYCLE* COMMAND PROCESSING BEFORE R HAS BEEN 
*                REACHED.  CONTROL OF THE SIMULATOR IS RETURNED TO
*                THE OPERATOR.
  
**        CYP -  CYCLE BIT AT GIVEN INTERVAL. 
* 
*         EXIT   BIT SET ON *K* DISPLAY.
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                B - 6, 7.
*                A - 0, 1, 2, 3, 5, 6, 7. 
* 
*         CALLS  GPV, DYL, DEB, SSR.
  
  
          DATA   0           RETURN ADDRESS 
 CYP      BSS    0
          SA2    I
          SB6    6           CHARACTER COUNT
          LX2    36 
          MX0    -6 
          BX6    -X0*X2 
          SX7    X6-1R) 
          ZR     X7,CYP2     IF *)* 
          SX7    X6-1R. 
          ZR     X7,CYP2     IF *.* 
          SA0    3
 CYP1     RJ     GPV         GET PARAMETER VALUE
          ZR     X1,CYP11    IF ERROR 
          SA0    A0-B1
          SX0    A0 
          SA6    PARA+A0     SAVE PARAMETER 
          ZR     X0,CYP3     IF ALL PARAMETERS FOUND
          SX6    X1-1R) 
          ZR     X6,CYP2     IF *)* TERMINATOR
          SX6    X1-1R. 
          ZR     X6,CYP2     IF *.* TERMINATOR
          EQ     CYP1 
  
 CYP2     MOVE   3,CYPA,MSGL *NOT ENOUGH ARGUMENTS.*
          MOVE   3,CYPA,MSGK
          EQ     CYP11
  
 CYP3     SA5    PARA+2      BIT NUMBER 
          SX7    X5-NBIT
          NG     X7,CYP4     IF LEGAL BIT NUMBER
          MOVE   3,CYPB,MSGL *INCORRECT BIT NUMBER.*
          MOVE   3,CYPB,MSGK
          EQ     CYP11
  
*         SET BIT IN HOLDING REGISTER.
  
 CYP4     SA0    UHLD 
          SA1    REGF 
          ZR     X1,CYP5     IF CHANNEL 16 REGISTER 
          SA0    LHLD 
 CYP5     SX7    60 
          SX6    X5+
          SA6    CYPI        SAVE BIT NUMBER
          IX7    X6/X7       WORD NUMBER
          SB7    X7+
          SA0    A0+B7       SET WORD ADDRESS 
          SX6    60 
          IX6    X6*X7
          IX6    X5-X6       BIT ORDINAL IN WORD
          MX0    59 
          SB7    X6 
          LX0    B7 
          SA1    A0          GET HOLDING WORD 
          SX7    B1 
          LX7    B7 
          BX1    X0*X1
          BX6    X7+X1       SET BIT
          SA6    A0+
          RJ     DYL         DISPLAY LINE 
  
*         GET TIME PARAMETERS.
  
          SA5    PARA+1      TIME INTERVAL
          SX6    X5+
          SA6    CYPE        SAVE INTERVAL
          SA5    A5-B1       NUMBER OF CYCLES 
          BX7    X5 
          SX5    X5-4096
          PL     X5,CYP17    IF NUMBER TOO LARGE
  
*         SEND SET BIT TO STATUS AND CONTROL REGISTER.
  
 CYP6     SA7    CYPF        SAVE NUMBER OF CYCLES
          SA1    REGF 
          SX6    5
          IX5    X1*X6
          LX1    59 
          SA2    CYPI 
          SX7    4000B
          BX7    X2+X7       BIT NUMBER AND SET BIT CODE
          LX7    12 
          BX6    X1+X7       SET BIT 59 IF CHANNEL 36 
          SA6    PW16+X5     SET PARAMETER WORD 
          SA0    A6+
          SA1    CYPE 
          SX6    X1-32
          NG     X6,CYP13    IF INTERVAL LESS THAN HALF SECOND
 CYP7     RJ     SSR         SEND SYSTEM REQUEST
          RTIME  CYPG 
          SA5    CYPF 
          SX5    X5-1 
          ZR     X5,CYP10    IF TIME LIMIT UP 
          SA1    I
          SA2    =5LCYCLE 
          BX6    X1-X2
          MX0    30 
          BX6    X0*X6
          ZR     X6,CYP8     IF NO INPUT ENTERED
          MX0    18 
          SA2    =3LEND 
          BX6    X1-X2
          BX6    X0*X6
          ZR     X6,CYP16    IF *END* 
          MOVE   3,CYPJ,MSGL *CYCLE STILL PROCESSING.*
          MOVE   3,CYPJ,MSGK
  
*         LOOP FOR TIME INTERVAL. 
  
 CYP8     RTIME  CYPH 
          SA1    CYPE 
          SA2    CYPG        GET REAL TIME
          MX7    -32
          AX2    4
          SA3    CYPH        GET PRESENT TIME 
          BX2    -X7*X2 
          AX3    4
          BX3    -X7*X3 
          IX3    X3-X2
          IX3    X3-X1
          PL     X3,CYP9     IF TIME TO RESET BIT 
          RJ     DCR         DISPLAY CONTENTS OF REGISTER 
          RECALL
          EQ     CYP8 
  
 CYP9     SA5    CYPF        DECREMENT NUMBER OF CYCLES 
          SX6    X5-1 
          SA6    A5 
          EQ     CYP7 
  
 CYP10    MOVE   3,CYPD,MSGL *TIME LIMIT UP.* 
          MOVE   3,CYPD,MSGK
 CYP11    RJ     DCR         DISPLAY CONTENTS OF REGISTER 
          SA1    CYP-1       GET RETURN ADDRESS 
          SB7    X1+
          JP     B7 
  
*         PROCESS FUNCTION WITH INTERVAL LESS THAN HALF SECOND. 
  
 CYP13    SX1    B1          SET LESS THAN HALF SECOND FLAG 
          LX1    58-0 
          SA2    CYPE 
          LX2    36 
          SA3    CYPF 
          LX3    24 
          BX6    X2+X3       TIME INTERVAL AND LIMIT
          BX6    X1+X6
          SA1    A6          GET PARAMETER WORD 
          BX7    X1+X6
          SA7    A6 
          RJ     SSR         SEND SYSTEM REQUEST
 CYP14    SA1    A0          GET PARAMETER WORD 
          LX1    59-58
          PL     X1,CYP10    IF TIME LIMIT UP 
          SA1    I
          SA2    =5LCYCLE 
          BX6    X1-X2
          MX0    30 
          BX6    X0*X6
          ZR     X6,CYP15    IF NO INPUT ENTERED
          SA2    =3LEND 
          BX6    X1-X2
          MX0    18 
          BX6    X0*X6
          ZR     X6,CYP16    IF *END* 
          MOVE   3,CYPJ,MSGL *CYCLE STILL PROCESSING.*
          MOVE   3,CYPJ,MSGK
 CYP15    RECALL
          EQ     CYP14
  
*         PROCESS *END* COMMAND.
  
 CYP16    MOVE   5,I,PARL    DISPLAY COMMAND
          MOVE   5,I,PARK 
          MOVE   4,BLNK,PARL+1
          MOVE   4,BLNK,PARK+1
          MESSAGE I,3        ENTER COMMAND IN JOB DAYFILE 
          MOVE   3,BLNK,MSGL CLEAR ANY ERROR MESSAGE
          MOVE   3,BLNK,MSGK
          MX0    59          CLEAR HALF SECOND INTERVAL FLAG
          LX0    58 
          SA1    A0 
          BX6    X0*X1
          SA6    A1+
          RECALL
          EQ     CYP11
  
 CYP17    MOVE   3,CYPC,MSGL *NUMBER OF CYCLES TOO LARGE.*
          MOVE   3,CYPC,MSGK
          EQ     CYP11
  
 CYPA     DIS    3,NOT ENOUGH ARGUMENTS.
          BSSZ   1
 CYPB     DIS    3,INCORRECT BIT NUMBER.
          BSSZ   1
 CYPC     DIS    3,NUMBER OF CYCLES TOO LARGE.
          BSSZ   1
 CYPD     DIS    3,TIME LIMIT UP. 
          BSSZ   1
 CYPE     BSSZ   1           TIME INTERVAL
 CYPF     BSSZ   1           NUMBER OF CYCLES 
 CYPG     BSSZ   1           REAL TIME
 CYPH     BSSZ   1           REAL TIME COMPARE
 CYPI     BSSZ   1           BIT NUMBER 
 CYPJ     DIS    3,CYCLE STILL PROCESSING.
          BSSZ   1
 GOP      SPACE  4,15 
***       GO. 
*                THIS COMMAND CAUSES THE CONTENTS OF THE HOLDING
*                REGISTERS TO BE TRANSFERRED TO THE ACTUAL STATUS 
*                AND CONTROL REGISTERS OR INTERLOCK REGISTER.  NO 
*                BITS ARE CHANGED IN VALUE IN THE HOLDING REGISTERS 
*                BY THIS COMMAND. 
  
**        GOP -  TRANSFER HOLDING REGISTERS TO S/C REGISTERS. 
* 
*         EXIT   HOLDING REGISTERS TRANSFERRED TO PROPER STATUS AND 
*                CONTROL REGISTER.
* 
*         USES   X - 1, 6.
*                B - 7. 
*                A - 1, 6.
  
  
          DATA   0           RETURN ADDRESS 
 GOP      BSS    0
          SA1    CA 
          NZ     X1,GOP1     IF CHANNEL 36 NOT AVAILABLE
  
*         SEND CHANNEL 36 DATA TO *HFM*.
  
          SX6    B1          SET CHANNEL 36 FLAG IN PARAMETER WORD
          LX6    59-0 
          SA6    PW36 
          SYSTEM HFM,R,PW36,0 
  
*         SEND CHANNEL 16 DATA TO *HFM*.
  
 GOP1     SX6    B0+         CLEAR PARAMETER WORD 
          SA6    PW16 
          SYSTEM HFM,R,PW16,0 
          SA1    GOP-1       GET RETURN ADDRESS 
          SB7    X1+
          JP     B7 
 LIP      SPACE  4,16 
***       LINE,X,Y. 
*                SET LINE X OF THE HOLDING REGISTER TO THE OCTAL
*                VALUE Y.  Y MAY BE UP TO 60 BITS OF OCTAL VALUE. 
*                X IS THE LINE NUMBER (0-3) FROM THE LEFT DISPLAY 
*                SCREEN, LINE 0 AT THE TOP, AND LINE 3 AT THE BOTTOM. 
  
**        LIP -  SET HOLDING REGISTER LINE TO OCTAL VALUE.
* 
*         EXIT   SPECIFIED LINE SET TO OCTAL VALUE IN HOLDING REGISTER. 
*                VALUE DISPLAYED ON *K* DISPLAY.
* 
*         USES   X - 0, 1, 2, 6, 7. 
*                B - 6, 7.
*                A - 0, 1, 2, 6.
* 
*         CALLS  GPV, GOV, DYL. 
  
  
          DATA   0           RETURN ADDRESS 
 LIP      BSS    0
          SA2    I
          SB6    5           CHARACTER COUNTER
          LX2    30 
          MX0    -6 
          BX6    -X0*X2 
          SX7    X6-1R) 
          ZR     X7,LIP4     IF *)* 
          SX7    X6-1R. 
          ZR     X7,LIP4     IF *.* 
  
*         GET LINE NUMBER AND OCTAL VALUE.
  
          RJ     GPV         GET PARAMETER VALUE
          ZR     X1,LIP2     IF ERROR 
          SX7    X6-4 
          PL     X7,LIP3     IF INCORRECT LINE NUMBER 
          SX7    X1-1R) 
          ZR     X7,LIP4     IF *)* TERMINATOR
          SX7    X1-1R. 
          ZR     X7,LIP4     IF *.* TERMINATOR
          SA1    REGF 
          SA0    UHLD 
          ZR     X1,LIP1     IF CHANNEL 16 REGISTER 
          SA0    LHLD 
 LIP1     SB7    X6 
          SA0    A0+B7       LINE ADDRESS 
          RJ     GOV         GET OCTAL VALUE
          ZR     X2,LIP2     IF ERROR 
          NZ     B4,LIP5     IF TOO MANY BITS 
  
*         INSERT VALUE INTO HOLDING REGISTER. 
  
          SA1    GOVA        GET VALUE
          BX6    X1 
          SA6    A0 
          RJ     DYL         DISPLAY LINE 
 LIP2     SA1    LIP-1       GET RETURN ADDRESS 
          SB7    X1+
          JP     B7 
  
 LIP3     MOVE   3,LIPA,MSGL *INCORRECT LINE NUMBER.* 
          MOVE   3,LIPA,MSGK
          EQ     LIP2 
  
 LIP4     MOVE   3,LIPB,MSGL *NOT ENOUGH ARGUMENTS.*
          MOVE   3,LIPB,MSGK
          EQ     LIP2 
  
 LIP5     MOVE   3,LIPC,MSGL *TOO MANY BITS SPECIFIED.* 
          MOVE   3,LIPC,MSGK
          EQ     LIP2 
  
 LIPA     DIS    3,INCORRECT LINE NUMBER. 
          BSSZ   1
 LIPB     DIS    3,NOT ENOUGH ARGUMENTS.
          BSSZ   1
 LIPC     DIS    3,TOO MANY BITS SPECIFIED. 
          BSSZ   1
 REP      SPACE  4,20 
***       READ. 
*                READ THE ACTUAL CONTENTS OF THE S/C REGISTER (OR 
*                INTERLOCK REGISTER) ON THE CURRENT CHANNEL INTO THE
*                HOLDING REGISTER.
  
**        REP - READ CURRENT CONTENTS OF S/C OR INTERLOCK REGISTER. 
* 
*         EXIT   ACTUAL CONTENTS OF S/C REGISTER (OR INTERLOCK REGISTER)
*                ON THE CURRENT CHANNEL SET IN HOLDING REGISTER.
* 
*         USES   X - 1, 7.
*                B - 6, 7.
*                A - 0, 1.
* 
*         CALLS  DYL, RDR.
  
  
          DATA   0           RETURN ADDRESS 
 REP      BSS    0
          SX7    UHLD        SET HOLDING REGISTER ADDRESS 
          SA1    REGF 
          ZR     X1,REP1     IF CHANNEL 16
          SX7    LHLD        SET CHANNEL 36 HOLDING REGISTER ADDRESS
 REP1     RJ     RDR         READ REGISTER CONTENTS 
          SB6    3
 REP2     SA1    RDRB        SET LINE ADDRESS 
          SA0    X1+B6
          RJ     DYL         DISPLAY LINE 
          SB6    B6-B1
          PL     B6,REP2     IF NOT END OF REGISTER 
          SA1    REP-1       GET RETURN ADDRESS 
          SB7    X1+
          JP     B7          RETURN 
 SEP      SPACE  4,15 
***       SET,A,B,...,Z.
*                SET BITS A,B,...,Z IN THE HOLDING REGISTER, WHERE
*                A,B,...,Z ARE BIT NUMBERS (0-203).  DECIMAL VALUES 
*                ARE ASSUMED, BUT EACH MAY HAVE A POSTRADIX OF D OR B.
*                IF MORE THAN 30 BIT NUMBERS ARE ENTERED, ONLY THE
*                FIRST 30 WILL BE PROCESSED.  ALL OTHERS WILL BE
*                IGNORED. 
  
**        SEP -  SET BITS IN HOLDING REGISTERS. 
* 
*         EXIT   BITS SET IN HOLDING REGISTER.
*                BITS DISPLAYED ON *K* DISPLAY. 
* 
*         USES   X - 0, 1, 2, 6.
*                B - 6, 7.
*                A - 0, 1, 2, 6.
* 
*         CALLS  GPV, CBV.
  
  
          DATA   0           RETURN ADDRESS 
 SEP      BSS    0
          SA2    I
          SB6    B0+
          LX2    24 
          SA0    B0 
          MX0    -6 
          BX6    -X0*X2 
          SX1    X6-1R) 
          ZR     X1,SEP4     IF *)* 
          SX1    X6-1R. 
          ZR     X1,SEP4     IF *.* 
          SB6    4           CHARACTER COUNTER
  
*         GET BIT NUMBERS.
  
 SEP1     RJ     GPV         GET PARAMETER VALUE
          ZR     X1,SEP5     IF ERROR 
          SA6    PARA+A0
          SA0    A0+B1       CHECK FOR MAXIMUM NUMBER OF PARAMETERS 
          SX0    A0 
          SX6    X1-1R) 
          ZR     X6,SEP3     IF *)* 
          SX6    X1-1R. 
          ZR     X6,SEP3     IF *.* 
          SX0    X0-MNOP
          ZR     X0,SEP2     IF MAXIMUM NUMBER OF PARAMETERS
          EQ     SEP1 
  
 SEP2     MOVE   3,SEPA,MSGL *MAXIMUM NUMBER OF ARGUMENTS.* 
          MOVE   3,SEPA,MSGK
 SEP3     SB6    A0+         NUMBER OF BITS SPECIFIED 
          SA0    UHLD 
          SA1    REGF 
          ZR     X1,SEP4     IF CHANNEL 16 REGISTER 
          SA0    LHLD 
 SEP4     SX0    B0          SET SET BIT FLAG 
          RJ     CBV         CHANGE BIT VALUES
 SEP5     SA1    SEP-1       GET RETURN ADDRESS 
          SB7    X1+
          JP     B7 
  
 SEPA     DIS    3,MAXIMUM NUMBER OF ARGUMENTS. 
          BSSZ   1
 STP      SPACE  4,4
***       STOP. 
*                THIS COMMAND CAUSES THE SIMULATOR TO END PROCESSING. 
  
**        STP -  END SIMULATOR. 
  
  
          DATA   0           RETURN ADDRESS 
 STP      BSS    0
          MESSAGE STPA       *END SIMULATOR.* 
          WRITEF OT          CAUSE DAYFILE TO PRINT 
          ENDRUN
  
 STPA     DIS    3, END SIMULATOR.
 TOP      SPACE  4,18 
***       +.
*                THIS COMMAND TOGGLES THE *K* DISPLAY BETWEEN THE 
*                CHANNEL 16 AND CHANNEL 36 REGISTER DISPLAYS AND ALSO 
*                CHANGES THE REGISTER CURRENTLY BEING WORKED ON IF
*                THE SIMULATOR IS BEING OPERATED ON A CYBER 170 WITH
*                TWO S/C REGISTERS.  OTHERWISE, NO ACTION IS TAKEN. 
*                THE CHANNEL 16 REGISTER IS ASSUMED WHEN THE SIMULATOR
*                BEGINS.  THE REGISTER CURRENTLY DISPLAYED IS THE 
*                HOLDING REGISTER WHICH THE OTHER COMMANDS AFFECT.
  
**        TOP -  TOGGLE REGISTER IN USE.
* 
*         EXIT   REGISTER IN USE FLAG TOGGLED.
*                *K* DISPLAY CHANGED TO REFLECT REGISTER BEING USED.
* 
*         USES   X - 0, 1, 2, 6, 7. 
*                B - 7. 
*                A - 1, 2, 6, 7.
  
  
          DATA   0           RETURN ADDRESS 
 TOP      BSS    0
          MX0    42 
          SA2    K           CLEAR LEFT SCREEN FIELD
          BX2    X0*X2
          SA1    REGF 
          ZR     X1,TOP1     IF CHANNEL 16 IN USE 
  
*         CHANGE TO CHANNEL 16 DISPLAY FROM CHANNEL 36. 
  
          SX7    L16         SET CHANNEL 16 DISPLAY ADDRESS 
          BX7    X2+X7
          SA7    A2 
          CONSOLE K          TOGGLE DISPLAY 
          SX6    B0+         SET CHANNEL 16 REGISTER
          SA6    REGF 
          EQ     TOP2 
  
*         CHANGE TO CHANNEL 36 DISPLAY IF AVAILABLE.
  
 TOP1     SA1    CA 
          NZ     X1,TOP2     IF CHANNEL 36 NOT AVAILABLE
          SX7    L36         SET CHANNEL 36 DISPLAY ADDRESS 
          BX7    X2+X7
          SA7    A2 
          CONSOLE K          TOGGLE DISPLAY 
          SX6    B1+         SET CHANNEL 36 REGISTER
          SA6    REGF 
 TOP2     SA1    TOP-1       GET RETURN ADDRESS 
          SB7    X1+
          JP     B7 
 CBV      TITLE  SECONDARY SUBROUTINES. 
**        CBV -  CHANGE BIT VALUES. 
* 
*         ENTRY  (A0) = REGISTER ADDRESS. 
*                (X0) = SET/CLEAR BIT FLAG. 
*                (B6) = NUMBER OF BITS SPECIFIED. 
*                BIT NUMBERS UNPACKED INTO PARA.
* 
*         EXIT   SPECIFIED BITS CHANGED IN VALUE. 
*                CHANGED BITS DISPLAYED ON *K* DISPLAY. 
* 
*         USES   X - 1, 6, 7. 
*                B - 6, 7.
*                A - 0, 1, 6, 7.
* 
*         CALLS  DYL. 
  
  
 CBV      SUBR               ENTRY/EXIT 
          SX7    X0+         SAVE FLAG
          SA7    CBVC 
          NZ     B6,CBV1     IF BITS SPECIFIED
          MOVE   3,CBVA,MSGL *NO BITS SPECIFIED.* 
          MOVE   3,CBVA,MSGK
          EQ     CBVX 
  
*         GET BIT NUMBER. 
  
 CBV1     SX7    PARA        ADDRESS OF FIRST PARAMETER 
          SA7    CBVD 
          SX6    A0+         SAVE REGISTER ADDRESS
          SA6    CBVE 
 CBV2     SA1    X7+         BIT NUMBER 
          SX7    X1-NBIT
          NG     X7,CBV3     IF LEGAL BIT NUMBER
          MOVE   3,CBVB,MSGL *INCORRECT BIT NUMBER.*
          MOVE   3,CBVB,MSGK
          EQ     CBVX 
  
*         FIND CORRECT BIT AND SET/CLEAR IT.
  
 CBV3     SX6    60 
          SX7    X1 
          IX7    X7/X6       WORD NUMBER
          SX6    60 
          IX6    X7*X6
          IX6    X1-X6       BIT ORDINAL IN WORD
          SB7    X7 
          SA0    A0+B7       WORD ADDRESS 
          SA1    A0 
          SB7    X6+
          MX6    59 
          LX6    B7          SET UP MASK
          BX7    X6*X1       CLEAR BIT
          SA1    CBVC 
          NZ     X1,CBV4     IF CLEAR BIT 
          SX6    B1+         SET BIT
          LX6    B7 
          IX7    X6+X7
 CBV4     SA7    A0          STORE BIT
          RJ     DYL         DISPLAY LINE 
          SB6    B6-B1
          SA1    CBVD        SET NEXT PARAMETER ADDRESS 
          SX7    X1+B1
          SA7    A1 
          SA1    CBVE        RESET REGISTER ADDRESS 
          SA0    X1 
          NZ     B6,CBV2     IF NOT END OF PARAMETERS 
          EQ     CBVX 
  
 CBVA     DIS    3,NO BITS SPECIFIED. 
          BSSZ   1
 CBVB     DIS    3,INCORRECT BIT NUMBER.
          BSSZ   1
 CBVC     BSSZ   1           SET/CLEAR FLAG 
 CBVD     BSSZ   1           PARAMETER ADDRESS
 CBVE     BSSZ   1           REGISTER ADDRESS 
 CDC      SPACE  4,8
**        CDC -  CONVERT TEN BITS TO DISPLAY CODE.
* 
*         ENTRY  (X1) = TEN BITS RIGHT JUSTIFIED. 
* 
*         EXIT   (X6) = DISPLAY CODED WORD. 
* 
*         USES   X - 0, 1, 4, 6, 7. 
*                B - 7. 
  
  
 CDC      SUBR               ENTRY/EXIT 
          BX4    X4-X4       CLEAR ASSEMBLY 
          MX0    -1 
          SB7    10 
  
*         CONVERT ONE BIT AT A TIME TO DISPLAY CODE.
  
 CDC1     BX7    -X0*X1      GET BIT
          LX4    -6 
          SX6    X7+1R0      CONVERT BIT TO DISPLAY CODE
          AX1    1
          BX4    X6+X4       ADD TO ASSEMBLY
          SB7    B7-B1
          NZ     B7,CDC1     IF NOT TEN BITS
          LX4    -6 
          BX6    X4 
          EQ     CDCX 
 GOV      SPACE  4,14 
**        GOV -  GET OCTAL VALUE. 
* 
*         ENTRY  (A2) = CHARACTER WORD ADDRESS. 
*                (X2) = CHARACTER WORD, NEXT CHARACTER LEFT JUSTIFIED.
*                (B6) = CHARACTER COUNT.
* 
*         EXIT   (B4) = NUMBER OF FULL CM WORDS OF VALUE. 
*                (B7) = NUMBER OF BITS IN LAST WORD OF VALUE. 
*                (X2) = 0 IF ERROR. 
*                VALUE STORED IN GOVA - GOVA+3. 
* 
*         USES   X - 0, 2, 3, 4, 6, 7.
*                B - 4, 5, 6, 7.
*                A - 2, 6, 7. 
  
  
 GOV      SUBR               ENTRY/EXIT 
          BX6    X6-X6       CLEAR VALUE BUFFER 
          SA6    GOVA 
          SA6    A6+B1
          SA6    A6+B1
          SA6    A6+B1
          MX0    -6 
          BX4    X4-X4       CLEAR ASSEMBLY 
          MX0    -6 
          SB7    B0          DIGIT COUNTER
          SB4    B0+         WORD COUNTER 
          EQ     GOV2 
  
*         CHECK NEXT CHARACTER. 
  
 GOV1     SB6    B6+B1
          SB5    10 
          SB5    B6-B5
          NZ     B5,GOV2     IF NOT END OF WORD 
          SA2    A2+B1       GET NEXT WORD
          SB6    B0          RESET COUNTER
 GOV2     LX2    6
          BX6    -X0*X2 
          SX7    X6-1R0 
          NG     X7,GOV5     IF ALPHABETIC CHARACTER
          SX7    X6-1R8 
          NG     X7,GOV3     IF OCTAL NUMERIC 
          SX7    X6-1R+ 
          NG     X7,GOV5     IF 8 OR 9
          SX7    X6-1R
          ZR     X7,GOV1     IF SPACE 
          SX7    X6-1R# 
          PL     X7,GOV5     IF INCORRECT CHARACTER 
          BX7    X4 
          SB5    B7+B4
          ZR     B5,GOVX     IF DEFAULT VALUE 
          SA7    GOVA+B4     SAVE VALUE 
          LX3    57 
          SB5    B0 
          NG     X3,GOV6     IF 3 BIT DIGIT 
          LX3    1
          SB5    B1 
          NG     X3,GOV6     IF 2 BIT DIGIT 
          SB5    B5+B1
          EQ     GOV6 
  
*         ASSEMBLE OCTAL VALUE. 
  
 GOV3     SX6    X6-1R0      CONVERT TO BINARY
          LX4    3
          BX4    X4+X6       ADD TO ASSEMBLY
          NZ     B7,GOV4     IF NOT FIRST DIGIT OF WORD 
          NZ     B4,GOV4     IF NOT FIRST WORD
          SX3    X6+         SAVE FIRST DIGIT 
 GOV4     SB7    B7+3 
          SB5    B7-60
          NZ     B5,GOV1     IF NOT A FULL WORD 
          BX7    X4          SAVE VALUE 
          SB7    B0 
          SA7    GOVA+B4
          SB4    B4+B1
          BX4    X4-X4       CLEAR ASSEMBLY 
          EQ     GOV1 
  
 GOV5     MOVE   3,GOVB,MSGL *INCORRECT CHARACTER.* 
          MOVE   3,GOVB,MSGK
          SX2    B0 
          EQ     GOVX 
  
*         ADJUST NUMBER OF BITS IN VALUE. 
  
 GOV6     NZ     B7,GOV7     IF NOT EXACTLY A FULL LAST WORD
          SB7    60 
          SB4    B4-B1
 GOV7     SB7    B7-B5       ADJUST NUMBER OF BITS
          EQ     GOVX 
  
 GOVA     BSS    4           VALUE
 GOVB     DIS    3,INCORRECT CHARACTER. 
          BSSZ   1
 GPV      SPACE  4,17 
**        GPV -  GET PARAMETER VALUE. 
* 
*         ENTRY  (A2) = CHARACTER WORD ADDRESS. 
*                (X2) = CHARACTER WORD, NEXT CHARACTER LEFT JUSTIFIED.
*                (B6) = CHARACTER COUNT.
* 
*         EXIT   (X1) = SEPARATOR OR 0 IF ERROR.
*                (X2) = CHARACTER LINE. 
*                (A2) = CHARACTER LINE ADDRESS. 
*                (B6) = CHARACTER COUNT.
*                (X6) = PARAMETER BINARY VALUE. 
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                B - 4, 5, 6, 7.
*                A - 1, 2, 3, 5, 6. 
* 
*         CALLS  DXB. 
  
  
 GPV      SUBR               ENTRY/EXIT 
          SB4    B0+
          BX5    X5-X5       CLEAR ASSEMBLY WORD
          MX0    -6 
  
*         CHECK NEXT CHARACTER. 
  
 GPV1     LX2    6
          BX6    -X0*X2 
          SX7    X6-1RB 
          ZR     X7,GPV3     IF POSTRADIX *B* 
          SX7    X6-1RD 
          ZR     X7,GPV3     IF POSTRADIX *D* 
          SX7    X6-1R0 
          NG     X7,GPV7     IF ALPHABETIC CHARACTER
          SX7    X6-1R+ 
          NG     X7,GPV3     IF NUMERIC 
          SX7    X6-1R
          ZR     X7,GPV2     IF SPACE 
          SX7    X6-1R# 
          PL     X7,GPV7     IF INCORRECT CHARACTER 
          NZ     B4,GPV4     IF NOT EMPTY STRING
          SA5    =1L0        SET DEFAULT VALUE
          EQ     GPV5 
  
 GPV2     SB6    B6+B1
          SB5    10 
          SB5    B6-B5
          NZ     B5,GPV1     IF NOT END OF WORD 
          SA2    A2+B1       GET NEXT WORD
          SB6    B0          RESET COUNTER
          EQ     GPV1 
  
*         ASSEMBLE PARAMETER. 
  
 GPV3     LX5    6           ADD CHARACTER TO ASSEMBLY
          BX5    X6+X5
          SB4    B4+1 
          EQ     GPV2 
  
 GPV4     LX5    -6          LEFT JUSTIFY NUMBER
          SB4    B4-B1
          NZ     B4,GPV4     IF NOT LEFT JUSTIFIED
 GPV5     SA6    GPVA        SAVE SEPARATOR 
          BX6    X2          SAVE CHARACTER LINE
          SB7    B1          ASSUME DECIMAL 
          SA6    GPVB 
          RJ     DXB         DISPLAY CODE TO BINARY 
          ZR     X4,GPV6     IF NO ERROR
          MOVE   3,GPVC,MSGL *CONVERSION ERROR.*
          MOVE   3,GPVC,MSGK
          SX1    B0 
          EQ     GPVX 
  
*         SET EXIT CONDITIONS.
  
 GPV6     SA1    GPVA        RESTORE SEPARATOR
          SA3    GPVB        RESTORE CHARACTER LINE 
          BX2    X3 
          SB6    B6+B1
          SB5    B6-10
          NZ     B5,GPVX     IF NOT END OF WORD 
          SA2    A2+B1       GET NEXT WORD
          SB6    B0          RESET COUNTER
          EQ     GPVX 
  
 GPV7     MOVE   3,GPVD,MSGL *INCORRECT CHARACTER.* 
          MOVE   3,GPVD,MSGK
          SX1    B0 
          EQ     GPVX 
  
 GPVA     BSSZ   1           SEPARATOR
 GPVB     BSSZ   1           CHARACTER LINE 
 GPVC     DIS    3,CONVERSION ERROR.
          BSSZ   1
 GPVD     DIS    3,INCORRECT CHARACTER. 
          BSSZ   1
 RDR      SPACE  4,20 
**        RDR - READ REGISTER CONTENTS. 
* 
*         ENTRY  (X7) = ADDRESS OF DATA BUFFER. 
*                ACTUAL CONTENTS OF S/C REGISTER (OR INTERLOCK REGISTER)
*                READ INTO BUFFER.
* 
*         EXIT   (RDRB) = ADDRESS OF DATA BUFFER. 
* 
*         USES   X - 0, 1, 2, 5, 6, 7.
*                B - 7. 
*                A - 0, 1, 6, 7.
* 
*         CALLS  SSR. 
  
  
 RDR      SUBR               ENTRY/EXIT 
          SA7    RDRB        SAVE BUFFER ADDRESS
          SX6    B0+         SET READ FUNCTION
          SA6    RDRA 
 RDR1     SA1    RDRB        SET BUFFER ADDRESS 
          SA0    X1+
          SA1    REGF 
          ZR     X1,RDR2     IF CHANNEL 16
  
*         READ CHANNEL 36 REGISTER CONTENTS.
  
          MX7    1           SET CHANNEL 36 FLAG
          LX6    12          MERGE IN FUNCTION REQUEST
          BX7    X6+X7
          SA7    PW36 
          RJ     SSR         SEND SYSTEM REQUEST
          SA1    PW36        GET REPLY
          MX0    -12
          BX6    -X0*X1 
          EQ     RDR3        SET VALUE IN HOLDING REGISTER
  
*         READ CHANNEL 16 REGISTER CONTENTS.
  
 RDR2     LX6    12          SET FUNCTION REQUEST 
          SA6    PW16 
          RJ     SSR         SEND SYSTEM REQUEST
          SA1    PW16        GET REPLY
          MX0    -12
          BX6    -X0*X1 
  
*         SET VALUE IN HOLDING REGISTER.
  
 RDR3     SX7    5
          SA1    RDRA        GET BYTE NUMBER
          SX5    X1 
          IX7    X1/X7       WORD NUMBER
          SB7    X7 
          SA0    A0+B7       SET WORD ADDRESS 
          SX1    5
          IX7    X1*X7
          IX1    X5-X7       BYTE ORDINAL IN WORD 
          SX5    12          FORM SHIFT COUNT 
          IX7    X1*X5
          SB7    X7 
          SA1    A0          GET HOLDING WORD 
          MX0    48 
          BX6    -X0*X6 
          LX0    B7          FORM MASK
          LX6    B7 
          BX7    X0*X1
          BX7    X6+X7       INSERT VALUE 
          SA7    A0 
          SA1    RDRA        INCREMENT BYTE NUMBER
          SX6    X1+B1
          SA6    A1 
          SX7    X6-17
          NG     X7,RDR1     IF NOT END OF REGISTER 
          EQ     RDRX        RETURN 
  
 RDRA     CON    0           READ FUNCTION CODE 
 RDRB     CON    0           DATA BUFFER ADDRESS
 SSR      SPACE  4,7
**        SSR - SEND SYSTEM REQUEST FOR CYCLE OR READ.
* 
*         EXIT   SYSTEM REQUEST MADE. 
* 
*         USES   X - 1. 
*                A - 1. 
* 
*         MACROS SYSTEM.
  
  
 SSR      SUBR               ENTRY/EXIT 
          SA1    REGF 
          ZR     X1,SSR1     IF CHANNEL 16
  
*         SEND CHANNEL 36 CYCLE REQUEST.
  
          SYSTEM HFM,R,PW36,100B
          EQ     SSRX        RETURN 
  
*         SEND CHANNEL 16 CYCLE REQUEST.
  
 SSR1     SYSTEM HFM,R,PW16,100B
          EQ     SSRX        RETURN 
          TITLE  DISPLAY SUBROUTINES. 
 DCR      SPACE  4,20 
**        DCR - DISPLAY CONTENTS OF S/C REGISTER. 
* 
*         EXIT   ACTUAL CONTENTS OF S/C REGISTER (OR INTERLOCK REGISTER)
*                ON THE CURRENT CHANNEL DISPLAYED ON K-DISPLAY. 
* 
*         USES   X - 1, 2, 6. 
*                B - 2, 3, 4, 6.
*                A - 2, 6.
* 
*         CALLS  DYW. 
  
  
 DCR3     SA1    DCRB        RESTORE PARAMETER WORDS
          SA2    DCRB+1 
          BX6    X1 
          BX7    X2 
          SA6    PW16 
          SA7    PW36 
  
 DCR      SUBR               ENTRY/EXIT 
          SA1    PW16        SAVE PARAMETER WORDS 
          SA2    PW36 
          BX6    X1 
          BX7    X2 
          SA6    DCRB 
          SA7    DCRB+1 
          SX7    DCRA        SET BUFFER ADDRESS 
          RJ     RDR         READ REGISTER CONTENTS 
          SA2    DCRA        BUFFER ADDRESS 
          SB6    3
          SB3    B0+
          SB4    CH16-1      DISPLAY WORD ADDRESS - 1 
          SA1    REGF 
          ZR     X1,DCR1     IF CHANNEL 16
          SB4    CH36-1      SET CHANNEL 36 DISPLAY WORD ADDRESS - 1
  
*         DISPLAY CONTENTS ON LEFT SCREEN.
  
 DCR1     RJ     DYW         DISPLAY WORD 
          SA2    A2+B1       GET NEXT WORD
          SB4    A7+         SAVE LAST ADDRESS
          SB6    B6-B1
          ZR     B6,DCR2     IF END OF TRANSFER 
          SB3    B0+
          EQ     DCR1        DISPLAY NEXT WORD
  
 DCR2     SB6    B1          SET ONE LINE 
          NG     B3,DCR3     IF ENTIRE REGISTER DISPLAYED 
          SB3    -B1         SET SHORT LINE FLAG
          SB4    B4+5 
          EQ     DCR1        DISPLAY NEXT WORD
  
 DCRA     BSS    4           S/C REGISTER BUFFER
 DCRB     BSS    2           PARAMETER SAVE AREA
 DOC      SPACE  4,12 
**        DOC -  DISPLAY OCTAL WORD.
* 
*         ENTRY  (X2) = WORD TO DISPLAY.
*                (B4) = DISPLAY ADDRESS.
*                (B3) = 0 DISPLAY WHOLE LINE. 
*                     =-1 DISPLAY SHORTENED LINE. 
* 
*         EXIT   OCTAL VALUE DISPLAYED. 
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                B - 4, 5, 7. 
*                A - 3, 7.
  
  
 DOC      SUBR               ENTRY/EXIT 
          MX0    -12
          MX5    -3 
          SB4    B4+4 
          SB5    5
          ZR     B3,DOC1     IF WHOLE LINE
          SB5    2
  
*         DISPLAY WORD IN BYTES.
  
 DOC1     BX6    -X0*X2      GET BYTE 
          AX2    12 
          SB7    4
          SX1    B0+         CLEAR ASSEMBLY 
 DOC2     BX7    -X5*X6      GET DIGIT
          SX7    X7+1R0      CONVERT TO DISPLAY CODE
          LX1    -6 
          BX1    X1+X7       ADD TO ASSEMBLY
          AX6    3
          SB7    B7-B1
          NZ     B7,DOC2     IF NOT ENTIRE BYTE 
          LX1    18 
          SA3    B4          GET DISPLAY WORD 
          MX7    36 
          BX3    X7*X3
          BX7    X1+X3       ADD TO DISPLAY WORD
          SA7    A3 
          SB4    B4-B1
          SB5    B5-B1
          NZ     B5,DOC1     IF NOT ENTIRE LINE DISPLAYED 
          EQ     DOCX 
 DYL      SPACE  4,11 
**        DYL -  DISPLAY LINE IN HOLDING REGISTER.
* 
*         ENTRY  (A0) = WORD ADDRESS. 
* 
*         EXIT   WORD DISPLAYED AS LINE ON *K* DISPLAY. 
* 
*         USES   X - 2, 5, 6, 7.
*                B - 3, 4.
*                A - 2. 
* 
*         CALLS  DYW, DOC.
  
  
 DYL      SUBR               ENTRY/EXIT 
          SX7    A0-LHLD
          SX6    LL00 
          PL     X7,DYL1     IF CHANNEL 36 REGISTER 
          SX7    A0-UHLD
          SX6    UL00 
  
*         DISPLAY BINARY VALUE. 
  
 DYL1     SX5    12          DISPLAY WORDS PER LINE 
          IX5    X7*X5
          IX6    X6+X5       STARTING DISPLAY ADDRESS 
          SB4    X6-1 
          SA2    A0          HOLDING REGISTER WORD ADDRESS
          SB3    B0 
          SX7    X7-3 
          NZ     X7,DYL2     IF FULL LINE 
          SB3    -B1         SET SHORT LINE FLAG
          SB4    B4+5 
 DYL2     RJ     DYW         DISPLAY WORD 
  
*         DISPLAY OCTAL VALUE.
  
          SX7    A0-LHLD
          SX6    LOC0 
          PL     X7,DYL3     IF CHANNEL 36 REGISTER 
          SX7    A0-UHLD
          SX6    UOC0 
 DYL3     SX5    5           DISPLAY WORDS PER LINE 
          IX5    X7*X5
          IX6    X6+X5       STARTING DISPLAY ADDRESS 
          SB4    X6 
          SA2    A0          HOLDING REGISTER WORD ADDRESS
          SB3    B0 
          SX7    X7-3 
          NZ     X7,DYL4     IF FULL LINE 
          SB3    -B1         SET SHORT LINE FLAG
 DYL4     RJ     DOC         DISPLAY OCTAL WORD 
          EQ     DYLX 
 DYW      SPACE  4,15 
**        DYW -  DISPLAY WORD.
* 
*         ENTRY  (X2) = WORD TO DISPLAY.
*                (B4) = DISPLAY ADDRESS - 1.
*                (B3) = 0 DISPLAY WHOLE LINE. 
*                     =-1 DISPLAY SHORTENED LINE. 
* 
*         EXIT   (A7) = LAST DISPLAY ADDRESS. 
*                WORD DISPLAYED ON *K* DISPLAY. 
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                B - 3, 4.
*                A - 5, 6, 7. 
* 
*         CALLS  CDC. 
  
  
 DYW      SUBR               ENTRY/EXIT 
          ZR     B3,DYW1     IF WHOLE WORD
          LX2    36 
  
*         DISPLAY BITS 59 - 54 OF FULL WORD FIRST TIME, 
*         BITS 23 - 18 SECOND TIME, OR SHORT WORD FIRST TIME. 
  
 DYW1     MX0    6
          BX1    X0*X2       GET SIX BITS FOR FIRST WORD
          LX1    6
          RJ     CDC         CONVERT TO DISPLAY CODE
          MX0    -36
          BX6    -X0*X6 
          SA5    B4+B1
          BX7    X0*X5
          BX7    X6+X7
          SA7    A5          SAVE FIRST WORD
  
*         DISPLAY BITS 53 - 45 OF FULL WORD FIRST TIME, 
*         BITS 17 - 9 SECOND TIME, OR SHORT WORD FIRST TIME.
  
          LX2    6
          MX0    9
          BX1    X0*X2       GET NINE BITS FOR SECOND WORD
          LX1    9
          RJ     CDC         CONVERT TO DISPLAY CODE
          MX0    36 
          LX0    -6 
          BX3    X0*X6
          LX3    6
          SX5    1R 
          LX5    18 
          BX3    X3+X5       INSERT BLANK 
          MX0    -18
          BX6    -X0*X6 
          BX7    X3+X6
          SA7    A7+B1       SAVE SECOND WORD 
  
*         DISPLAY BITS 44 - 36 OF FULL WORD FIRST TIME, 
*         BITS 8 - 0 SECOND TIME, OR SHORT WORD FIRST TIME. 
  
          LX2    9
          MX0    9
          BX1    X0*X2       GET NINE BITS FOR THIRD WORD 
          LX1    9
          RJ     CDC         CONVERT TO DISPLAY CODE
          MX0    -54
          BX6    -X0*X6 
          SX5    1R 
          LX6    6           LEFT JUSTIFY 
          BX7    X6+X5       INSERT BLANK 
          SA7    A7+B1       SAVE THIRD WORD
          LX2    9
          NZ     B3,DYWX     IF END OF WORD 
  
*         DISPLAY BITS 35 - 26 OF WORD. 
  
          MX0    10 
          BX1    X0*X2       GET TEN BITS FOR FOURTH WORD 
          LX1    10 
          RJ     CDC         CONVERT TO DISPLAY CODE
          SA6    A7+B1       SAVE FOURTH WORD 
  
*         DISPLAY BITS 25 - 24. 
  
          LX2    10 
          MX0    2
          BX1    X0*X2       GET TWO BITS FOR FIFTH WORD
          LX1    2
          RJ     CDC         CONVERT TO DISPLAY CODE
          MX0    -12
          BX6    -X0*X6 
          LX6    48          LEFT JUSTIFY 
          SA5    A6+B1
          MX0    -48
          BX7    -X0*X5      SAVE LOWER FIFTH WORD
          BX7    X6+X7
          SA7    A5          SAVE FIFTH WORD
          LX2    2
          SB4    A7          SET LAST ADDRESS 
          SB3    B1+
          EQ     DYW1 
          TITLE  DISPLAY BUFFER LINE NUMBER TABLES. 
*         LEFT SCREEN LINE NUMBER TABLE.
  
  
 BLNT     BSS    0
          LOC    0
          BSS    6
 LHDR     BSS    1           LEFT SCREEN HEADER 
          BSS    1
 C16H     BSS    1           HOLDING REGISTER HEADER
          BSS    3
 UB00     BSS    1           BYTE 0 HEADER
 U04L     BSS    1           BYTES 0-4 BINARY 
 OC00     BSS    1           BYTES 0-4 OCTAL
          BSS    2
 UB05     BSS    1           BYTE 5 HEADER
 U09L     BSS    1           BYTES 5-9 BINARY 
 OC05     BSS    1           BYTES 5-9 OCTAL
          BSS    2
 UB10     BSS    1           BYTE 10 HEADER 
 U14L     BSS    1           BYTES 10-14 BINARY 
 OC10     BSS    1           BYTES 10-14 OCTAL
          BSS    2
 UB15     BSS    1           BYTE 15 HEADER 
 U16L     BSS    1           BYTES 15-16 BINARY 
 OC15     BSS    1           BYTES 15-16 OCTAL
          BSS    2
 CNAL     BSS    1           CHANNEL 36 NOT AVAILABLE MESSAGE LINE
          BSS    1
 PARM     BSS    1           INPUT COMMAND LINE 
 MSGE     BSS    1           ERROR MESSAGE LINE 
          BSS    2
 ACTH     BSS    1           S/C REGISTER HEADER
          BSS    1
 AC16     BSS    1           CHANNEL NUMBER LINE
 W113     BSS    1           BYTES 4 - 0 S/C REGISTER 
 W114     BSS    1           BYTES 9 - 5 S/C REGISTER 
 W115     BSS    1           BYTES 14 - 10 S/C REGISTER 
 W116     BSS    1           BYTES 16 - 15 S/C REGISTER 
 ELNT     EQU    *
          ERRNG  48-ELNT     IF TOO MANY DISPLAY LINES
          LOC    *O 
          ORG    BLNT 
          SPACE  4
*         RIGHT SCREEN LINE NUMBER TABLE. 
  
  
 BRNT     BSS    0
          LOC    0
          BSS    6
 RHDR     BSS    1           RIGHT SCREEN HEADER
          BSS    1
 PHDL     BSS    1           COMMAND DESCRIPTION HEADER LINE
          BSS    1
 AREL     BSS    1           AREA COMMAND 
          BSS    1
 BYTL     BSS    1           BYTE COMMAND 
          BSS    1
 CLRL     BSS    1           CLEAR COMMAND
          BSS    1
 CYCL     BSS    1           CYCLE COMMAND
          BSS    1
 ENDL     BSS    1           END COMMAND
          BSS    1
 LINL     BSS    1           LINE COMMAND 
          BSS    1
 REAL     BSS    1           READ COMMAND 
          BSS    1
 SETL     BSS    1           SET COMMAND
          BSS    3
 PLUL     BSS    1           + COMMAND
          BSS    3
 GOLL     BSS    1           GO COMMAND 
          BSS    1
 STOL     BSS    1           STOP COMMAND 
          BSS    5
 DECL     BSS    1           DECIMAL BASE ASSUMED ON ARGUMENTS
 SECL     BSS    1           EXCLUDING OCTAL VALUES 
 VALL     BSS    1           OCTAL VALUES LINE
 ERNT     EQU    *
          ERRNG  48-ERNT     IF TOO MANY DISPLAY LINES
          LOC    *O 
          ORG    BRNT 
          TITLE  DISPLAY BUFFER.
*         *K* DISPLAY LEFT SCREEN.
  
  
 L.       EQU    *
 L16      VFD    12/0,36/0,12/2  DISPLAY CONTROL WORD 
  
          DSL    15,LHDR,(TEMPORARY HOLDING REGISTER CONTENTS)
          DSL    15,LHDR,(TEMPORARY HOLDING REGISTER CONTENTS)
          DSL    8,C16H,(CHANNEL 16 REGISTER - LINES 0-3) 
          DSL    8,C16H,(CHANNEL 16 REGISTER - LINES 0-3) 
  
*         BINARY DISPLAY OF CHANNEL 16 HOLDING REGISTER CONTENTS. 
  
          DSL    0,UB00,(BITS  59-  0)
          DSL    55,UB00,(BYTE 00)
 UL00     EQU    *
          DSL    0,U04L,(000000000000 000000000000 000000000000 ) 
          DSL    39,U04L,(000000000000 000000000000)
          DSL    0,UB05,(BITS 119- 60)
          DSL    55,UB05,(BYTE 05)
          DSL    0,U09L,(000000000000 000000000000 000000000000 ) 
          DSL    39,U09L,(000000000000 000000000000)
          DSL    0,UB10,(BITS 179-120)
          DSL    55,UB10,(BYTE 10)
          DSL    0,U14L,(000000000000 000000000000 000000000000 ) 
          DSL    39,U14L,(000000000000 000000000000)
          DSL    0,UB15,(BITS 203-180)
          DSL    55,UB15,(BYTE 15)
          DSL    0,U16L,(                                       ) 
          DSL    39,U16L,(000000000000 000000000000)
  
*         OCTAL DISPLAY OF CHANNEL 16 HOLDING REGISTER CONTENTS.
  
 UOC0     EQU    *
          DSL    2,OC00,(  0000)
          DSL    15,OC00,(  0000) 
          DSL    28,OC00,(  0000) 
          DSL    41,OC00,(  0000) 
          DSL    54,OC00,(  0000) 
          DSL    2,OC05,(  0000)
          DSL    15,OC05,(  0000) 
          DSL    28,OC05,(  0000) 
          DSL    41,OC05,(  0000) 
          DSL    54,OC05,(  0000) 
          DSL    2,OC10,(  0000)
          DSL    15,OC10,(  0000) 
          DSL    28,OC10,(  0000) 
          DSL    41,OC10,(  0000) 
          DSL    54,OC10,(  0000) 
          DSL    2,OC15,(      )
          DSL    15,OC15,(      ) 
          DSL    28,OC15,(      ) 
          DSL    41,OC15,(  0000) 
          DSL    54,OC15,(  0000) 
  
*         CHANNEL 36 NOT AVAILABLE MESSAGE AREA.
  
 CNAW     EQU    *+1
          DSL    15,CNAL,(                            ) 
  
*         INPUT COMMAND AND ERROR MESSAGE AREA. 
  
 PARL     EQU    *+1
          DSL    2,PARM,(                                              )
          DSL    48,PARM,(          ) 
 MSGL     EQU    *+1
          DSL    10,MSGE,(                                    ) 
          DSL    18,ACTH,(ACTUAL S/C REGISTER CONTENTS) 
          DSL    22,AC16,(CHANNEL 16 REGISTER)
  
*         BINARY DISPLAY OF CHANNEL 16 S/C REGISTER CONTENTS. 
  
 CH16     EQU    *
          DSL    0,W113,(000000000000 000000000000 000000000000 ) 
          DSL    39,W113,(000000000000 000000000000)
          DSL    0,W114,(000000000000 000000000000 000000000000 ) 
          DSL    39,W114,(000000000000 000000000000)
          DSL    0,W115,(000000000000 000000000000 000000000000 ) 
          DSL    39,W115,(000000000000 000000000000)
          DSL    0,W116,(                                       ) 
          DSL    39,W116,(000000000000 000000000000)
          BSSZ   1
          SPACE  4
 M.       EQU    *
 L36      VFD    12/0,36/0,12/2  DISPLAY CONTROL WORD 
  
          DSL    15,LHDR,(TEMPORARY HOLDING REGISTER CONTENTS)
          DSL    15,LHDR,(TEMPORARY HOLDING REGISTER CONTENTS)
          DSL    8,C16H,(CHANNEL 36 REGISTER - LINES 0-3) 
          DSL    8,C16H,(CHANNEL 36 REGISTER - LINES 0-3) 
  
*         BINARY DISPLAY OF CHANNEL 36 HOLDING REGISTER CONTENTS. 
  
          DSL    0,UB00,(BITS  59-  0)
          DSL    55,UB00,(BYTE 00)
 LL00     EQU    *
          DSL    0,U04L,(000000000000 000000000000 000000000000 ) 
          DSL    39,U04L,(000000000000 000000000000)
          DSL    0,UB05,(BITS 119- 60)
          DSL    55,UB05,(BYTE 05)
          DSL    0,U09L,(000000000000 000000000000 000000000000 ) 
          DSL    39,U09L,(000000000000 000000000000)
          DSL    0,UB10,(BITS 179-120)
          DSL    55,UB10,(BYTE 10)
          DSL    0,U14L,(000000000000 000000000000 000000000000 ) 
          DSL    39,U14L,(000000000000 000000000000)
          DSL    0,UB15,(BITS 203-180)
          DSL    55,UB15,(BYTE 15)
          DSL    0,U16L,(                                       ) 
          DSL    39,U16L,(000000000000 000000000000)
  
*         OCTAL DISPLAY OF CHANNEL 36 HOLDING REGISTER CONTENTS.
  
 LOC0     EQU    *
          DSL    2,OC00,(  0000)
          DSL    15,OC00,(  0000) 
          DSL    28,OC00,(  0000) 
          DSL    41,OC00,(  0000) 
          DSL    54,OC00,(  0000) 
          DSL    2,OC05,(  0000)
          DSL    15,OC05,(  0000) 
          DSL    28,OC05,(  0000) 
          DSL    41,OC05,(  0000) 
          DSL    54,OC05,(  0000) 
          DSL    2,OC10,(  0000)
          DSL    15,OC10,(  0000) 
          DSL    28,OC10,(  0000) 
          DSL    41,OC10,(  0000) 
          DSL    54,OC10,(  0000) 
          DSL    2,OC15,(      )
          DSL    15,OC15,(      ) 
          DSL    28,OC15,(      ) 
          DSL    41,OC15,(  0000) 
          DSL    54,OC15,(  0000) 
  
*         INPUT COMMAND AND ERROR MESSAGE AREA. 
  
 PARK     EQU    *+1
          DSL    2,PARM,(                                              )
          DSL    48,PARM,(          ) 
 MSGK     EQU    *+1
          DSL    10,MSGE,(                                    ) 
          DSL    18,ACTH,(ACTUAL S/C REGISTER CONTENTS) 
          DSL    22,AC16,(CHANNEL 36 REGISTER)
  
*         BINARY DISPLAY OF CHANNEL 36 S/C REGISTER CONTENTS. 
  
 CH36     EQU    *
          DSL    0,W113,(000000000000 000000000000 000000000000 ) 
          DSL    39,W113,(000000000000 000000000000)
          DSL    0,W114,(000000000000 000000000000 000000000000 ) 
          DSL    39,W114,(000000000000 000000000000)
          DSL    0,W115,(000000000000 000000000000 000000000000 ) 
          DSL    39,W115,(000000000000 000000000000)
          DSL    0,W116,(                                       ) 
          DSL    39,W116,(000000000000 000000000000)
          BSSZ   1
          SPACE  4
*         *K* DISPLAY RIGHT SCREEN. 
  
  
 R.       EQU    *
 R        VFD    12/0,36/0,12/2  DISPLAY CONTROL WORD 
  
          DSL    23,RHDR,(SIMULATOR COMMANDS) 
          DSL    8,PHDL,(COMMAND) 
          DSL    34,PHDL,(DESCRIPTION)
          DSL    0,AREL,(AREA,A,M,Y.) 
          DSL    24,AREL,(SET M BITS FROM A TO OCTAL VALUE Y) 
          DSL    0,BYTL,(BYTE,XX,YYYY.) 
          DSL    24,BYTL,(SET BYTE XX TO OCTAL VALUE YYYY)
          DSL    0,CLRL,(CLEAR,A,B,...,Z.)
          DSL    24,CLRL,(CLEAR BITS A,B,...,Z) 
          DSL    0,CYCL,(CYCLE,X,T,R.)
          DSL    24,CYCL,(SET BIT X EVERY 16*T MS. R TIMES) 
          DSL    0,ENDL,(END.)
          DSL    24,ENDL,(END CYCLE COMMAND BEFORE R REACHED) 
          DSL    0,LINL,(LINE,X,Y.) 
          DSL    24,LINL,(SET LINE X TO OCTAL VALUE Y)
          DSL    0,REAL,(READ.) 
          DSL    24,REAL,(READ S/C REGISTER INTO HOLDING REGISTER)
          DSL    0,SETL,(SET,A,B,...,Z.)
          DSL    24,SETL,(SET BITS A,B,...,Z) 
          DSL    0,PLUL,(+.)
          DSL    24,PLUL,(CHANGE REGISTER BEING USED AND K DISPLAY) 
          DSL    0,GOLL,(GO.) 
          DSL    24,GOLL,(ENTER HOLDING REGISTERS IN S/C REGISTERS) 
          DSL    0,STOL,(STOP.) 
          DSL    24,STOL,(END THE SIMULATOR)
          DSL    0,DECL,(ALL BIT, BYTE, AND LINE NUMBERS ASSUMED )
          DSL    40,DECL,(DECIMAL.) 
          DSL    0,SECL,(TIME VALUES ASSUMED DECIMAL) 
          DSL    0,VALL,(Y AND YYYY VALUES MUST BE OCTAL.)
          BSSZ   1
          SPACE  4
*         COMMON DECKS. 
  
*CALL     COMCCIO 
*CALL     COMCCOD 
*CALL     COMCCPM 
*CALL     COMCDXB 
*CALL     COMCMVE 
*CALL     COMCRDC 
*CALL     COMCRDW 
*CALL     COMCSYS 
  
  
          USE    LITERALS 
          SPACE  4
*         BUFFERS.
  
  
 IBUF     EQU    *           FET INPUT BUFFER 
 OBUF     EQU    IBUF+IBUFL  OUTPUT BUFFER
 RFL=     EQU    OBUF+OBUFL+100B
 PRS      TITLE  PRESET.
**        PRS -  PRESET.
* 
*         EXIT   (CA) = 1 IF CHANNEL 36 NOT AVAILABLE.
*                *K* DISPLAY INITIALIZED. 
* 
*         USES   X - 0, 1, 2, 6, 7. 
*                A - 1, 2, 6. 
  
  
 PRS      SUBR               ENTRY/EXIT 
  
*         CHECK CYBER 170 BIT AND NUMBER OF PP-S. 
  
          SYSTEM RSB,R,PRSE 
          SA1    PRSD        CMR WORD *MABL*
          LX1    59-43
          LX2    X1,B1
          PL     X1,PRS0     IF CYBER 70 INTERLOCK REGISTER 
          NG     X2,PRS3     IF NOT CYBER 170 STATUS CONTROL REGISTER 
 PRS0     SYSTEM RSB,R,PRSC 
          SA1    PRSB        CMR WORD *PPUL*
          AX1    24 
          MX0    -12
          BX1    -X0*X1      NUMBER OF PP-S 
          SX6    11 
          IX6    X1-X6
          PL     X6,PRS2     IF CHANNEL 36 AVAILABLE
 PRS1     SX6    B1+         SET CHANNEL 36 NOT AVAILABLE 
          SA6    CA 
          MOVE   3,PRSA,CNAW *CHANNEL 36 NOT AVAILABLE* 
  
*         INITIALIZE *K* DISPLAY. 
  
 PRS2     CONSOLE K          INITIALIZE *K* DISPLAY 
          EQ      PRSX       RETURN 
  
 PRS3     MESSAGE  PRSF,0,R  * NO SCR ON MAINFRAME.*
          ABORT              TERMINATE PROGRAM
  
  
 PRSA     DIS    3,CHANNEL 36 NOT AVAILABLE 
          BSSZ   1
 PRSB     VFD    1/1,59/0 
 PRSC     VFD    24/1,18/PPUL,18/PRSB  RSB CONTROL WORD 
 PRSD     VFD    1/1,59/0 
 PRSE     VFD    24/1,18/MABL,18/PRSD  RSB CONTROL WORD 
 PRSF     DATA   C* NO SCR ON MAINFRAME.* 
          SPACE  4
          END 
