cdc:nos2.source:opl871:scrsim
Table of Contents
SCRSIM
Table Of Contents
- [00010] SCRSIM - STATUS/CONTROL REGISTER SIMULATOR.
- [00012] STATUS/CONTROL REGISTER SIMULATOR.
- [00116] CONSTANTS.
- [00122] HOLDING REGISTERS AND DIRECT LOCATIONS.
- [00300] ARP - SET AREA TO OCTAL VALUE.
- [00471] BYP - SET BYTE TO OCTAL VALUE.
- [00573] CLP - CLEAR BITS IN HOLDING REGISTERS.
- [00646] CYP - CYCLE BIT AT GIVEN INTERVAL.
- [00871] GOP - TRANSFER HOLDING REGISTERS TO S/C REGISTERS.
- [00908] LIP - SET HOLDING REGISTER LINE TO OCTAL VALUE.
- [00986] REP - READ CURRENT CONTENTS OF S/C OR INTERLOCK REGISTER.
- [01023] SEP - SET BITS IN HOLDING REGISTERS.
- [01083] STP - END SIMULATOR.
- [01104] TOP - TOGGLE REGISTER IN USE.
- [01146] CBV - CHANGE BIT VALUES.
- [01223] CDC - CONVERT TEN BITS TO DISPLAY CODE.
- [01251] GOV - GET OCTAL VALUE.
- [01348] GPV - GET PARAMETER VALUE.
- [01445] RDR - READ REGISTER CONTENTS.
- [01522] SSR - SEND SYSTEM REQUEST FOR CYCLE OR READ.
- [01545] DISPLAY SUBROUTINES.
- [01547] DCR - DISPLAY CONTENTS OF S/C REGISTER.
- [01602] DOC - DISPLAY OCTAL WORD.
- [01648] DYL - DISPLAY LINE IN HOLDING REGISTER.
- [01701] DYW - DISPLAY WORD.
- [01800] DISPLAY BUFFER LINE NUMBER TABLES.
- [01883] DISPLAY BUFFER.
- [02100] PRS - PRESET.
Source Code
- SCRSIM.txt
- 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
cdc/nos2.source/opl871/scrsim.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator