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