DD60
* /--- FILE TYPE = E
* /--- BLOCK IDENT 00 000 86/04/15 10.50
IDENT CONSOLE,111B,CONSOLE
ABS
CONSOLE TTL PLATO TERMINAL EMULATOR FOR THE DD60
CONSOLE SPACE 4
ENTRY CONSOLE
SYSCOM B1
SST
ORG 111B
DCPU EQU 72B CPU PRIORITY (SAME AS CONDEN)
XTEXT TITLE GET SYSTEM TEXTS
LIST F
*CALL COMSSSD
*CALL AIDTEXT
*CALL PLAP501
*CALL SYSCON
*CALL PLASRWX
*CALL PARAMC
*CALL PCFTEXT
*CALL PLASMRC
*CALL COMCMAC
*CALL COMCDCM
*CALL COMSPRD
LIST F,X
*CALL DTEXT
LIST *
* /--- BLOCK BUFFERS 00 000 84/12/10 12.47
BUFFERS TITLE CHARACTER AND POINT BUFFERS
*** THE LOCATIONS AND LENGTHS ARE DEFINED IN DTEXT
*
ORG 111B
KBUF BSSZ 1 KEYSET BUFFER
LBUF BSSZ LBUFLNG FROM THE FORLDIS OVERLAY
* /--- BLOCK HBUF 00 000 84/12/10 12.49
HBUF TITLE SPECIAL PLATO CHARACTER DEFINITIONS
*** HBUF - HARDWARE CHARACTER MEMORY
*
* THE FOLLOWING DATA CODES WILL PLOT
* THE PLATO SPECIAL CHARACTERS.
* THE CODES ARE IN A PREDETERMINED
* ORDER (SEE *CTAB*)
LIST F,X
*CALL DCHARS
BASE O
LIST *
HBUF BSS 0
LOC 0
NN SET 0
MACREF PKEY$
MACRO PKEY,NAME
MACREF PKEY
NAME EQU NN/8D
NN SET NN+8D
ENDM
COLN PKEY
DATA 0
DATA 0
DATA 0
DATA 420
DATA 0
DATA 0
DATA 0
DATA 0
DOLR PKEY
DATA 3100
DATA 4440
DATA 4440
DATA 17760
DATA 4440
DATA 4440
DATA 2300
DATA 0
DIV PKEY
DATA 0
DATA 200
DATA 200
DATA 1240
DATA 200
DATA 200
DATA 0
DATA 0
LBKT PKEY
DATA 0
DATA 0
DATA 0
DATA 0
DATA 17770
DATA 10010
DATA 10010
DATA 0
RBKT PKEY
DATA 0
DATA 10010
DATA 10010
DATA 17770
DATA 0
DATA 0
DATA 0
DATA 0
PCT PKEY
DATA 6060
DATA 11100
DATA 6200
DATA 400
DATA 1140
DATA 2220
DATA 4140
DATA 0
TIMS PKEY
DATA 1000
DATA 1020
DATA 440
DATA 300
* /--- BLOCK HBUF 00 000 76/10/16 15.23
DATA 300
DATA 460
DATA 1020
DATA 0
ASSN PKEY
DATA 200
DATA 500
DATA 1040
DATA 3560
DATA 500
DATA 500
DATA 500
DATA 0
TICK PKEY
DATA 0
DATA 0
DATA 2000
DATA 34000
DATA 0
DATA 0
DATA 0
DATA 0
QUOT PKEY
DATA 0
DATA 2000
DATA 36000
DATA 0
DATA 2000
DATA 34000
DATA 0
DATA 0
EXCL PKEY
DATA 0
DATA 0
DATA 0
DATA 17560
DATA 0
DATA 0
DATA 0
DATA 0
SEMI PKEY
DATA 0
DATA 0
DATA 4
DATA 470
DATA 0
DATA 0
DATA 0
DATA 0
LCRT PKEY
DATA 0
DATA 200
DATA 500
DATA 1040
DATA 2020
DATA 0
DATA 0
DATA 0
RCRT PKEY
DATA 0
DATA 0
DATA 2020
DATA 1040
DATA 500
DATA 200
DATA 0
DATA 0
UNDL PKEY
DATA 4
DATA 4
DATA 4
DATA 4
DATA 4
DATA 4
DATA 4
DATA 0
QSMK PKEY
DATA 0
DATA 6000
DATA 10000
DATA 10320
DATA 10400
DATA 7000
DATA 0
DATA 00
ARRW PKEY
DATA 16034
DATA 11044
DATA 4510
DATA 2220
DATA 1040
DATA 500
DATA 200
DATA 0
NUMB PKEY
DATA 1100
DATA 1100
DATA 7760
DATA 1100
DATA 1100
DATA 7760
DATA 1100
DATA 1100
TLDE PKEY
DATA 4000
DATA 10000
DATA 10000
DATA 4000
DATA 2000
DATA 2000
DATA 4000
DATA 0
DOTS PKEY
DATA 0
* /--- BLOCK HBUF 00 000 76/10/16 15.30
DATA 0
DATA 10000
DATA 0
DATA 0
DATA 10000
DATA 0
DATA 0
HAT PKEY
DATA 0
DATA 10000
DATA 20000
DATA 40000
DATA 20000
DATA 10000
DATA 0
DATA 0
LSLT PKEY
DATA 0
DATA 4000
DATA 4000
DATA 10000
DATA 10000
DATA 10000
DATA 20000
DATA 0
RSLT PKEY
DATA 0
DATA 20000
DATA 10000
DATA 10000
DATA 10000
DATA 4000
DATA 4000
DATA 0
UARW PKEY
DATA 0
DATA 400
DATA 1000
DATA 3760
DATA 1000
DATA 400
DATA 0
DATA 0
RARW PKEY
DATA 200
DATA 200
DATA 200
DATA 200
DATA 1240
DATA 700
DATA 200
DATA 0
DARW PKEY
DATA 0
DATA 100
DATA 40
DATA 3760
DATA 40
DATA 100
DATA 0
DATA 0
LARW PKEY
DATA 200
DATA 700
DATA 1240
DATA 200
DATA 200
DATA 200
DATA 200
DATA 0
APRX PKEY
DATA 100
DATA 200
DATA 200
DATA 100
DATA 40
DATA 40
DATA 100
DATA 0
SGMA PKEY
DATA 10010
DATA 16070
DATA 11110
DATA 10610
DATA 10010
DATA 10010
DATA 10010
DATA 0
DLTA PKEY
DATA 60
DATA 320
DATA 1420
DATA 6020
DATA 1420
DATA 320
DATA 60
DATA 0
LSCL PKEY
DATA 300
DATA 140
DATA 20
DATA 20
DATA 20
DATA 140
DATA 300
* /--- BLOCK HBUF 00 000 76/10/16 15.32
DATA 0
USCL PKEY
DATA 1400
DATA 3000
DATA 4000
DATA 4000
DATA 4000
DATA 3000
DATA 1400
DATA 0
LPAR PKEY
DATA 400
DATA 17360
DATA 20010
DATA 20010
DATA 0
DATA 0
DATA 0
DATA 0
RPAR PKEY
DATA 0
DATA 0
DATA 0
DATA 20010
DATA 20010
DATA 17360
DATA 400
DATA 0
AND PKEY
DATA 0
DATA 60
DATA 1510
DATA 2210
DATA 2310
DATA 1450
DATA 20
DATA 10
NTEQ PKEY
DATA 40
DATA 1300
DATA 1200
DATA 1600
DATA 1200
DATA 3200
DATA 5200
DATA 0
LINE PKEY
DATA 0
DATA 0
DATA 0
DATA 37774
DATA 0
DATA 0
DATA 0
DATA 0
DEG PKEY
DATA 0
DATA 03000
DATA 4400
DATA 10200
DATA 10200
DATA 4400
DATA 3000
DATA 0
DEFN PKEY
DATA 1240
DATA 1240
DATA 1240
DATA 1240
DATA 1240
DATA 1240
DATA 1240
DATA 0
ALPH PKEY
DATA 600
DATA 1100
DATA 2040
DATA 2040
DATA 1100
DATA 700
DATA 1040
DATA 0
BETA PKEY
DATA 0
DATA 7770
DATA 10420
DATA 10420
DATA 10420
DATA 7340
DATA 0
DATA 0
SSGM PKEY
DATA 0
DATA 0
DATA 1540
DATA 2220
DATA 4220
DATA 140
DATA 0
DATA 0
LMDA PKEY
DATA 0
DATA 20
DATA 6040
DATA 1500
DATA 200
DATA 140
DATA 20
* /--- BLOCK HBUF 00 000 76/10/16 15.35
DATA 0
MU PKEY
DATA 10
DATA 1760
DATA 10
DATA 10
DATA 10
DATA 1760
DATA 10
DATA 0
PI PKEY
DATA 1000
DATA 1000
DATA 1760
DATA 1000
DATA 1760
DATA 1000
DATA 1000
DATA 0
RHO PKEY
DATA 0
DATA 700
DATA 1104
DATA 1100
DATA 1100
DATA 600
DATA 0
DATA 0
SDLT PKEY
DATA 0
DATA 140
DATA 220
DATA 220
DATA 340
DATA 200
DATA 200
DATA 100
OMGA PKEY
DATA 740
DATA 1020
DATA 20
DATA 160
DATA 20
DATA 1020
DATA 740
DATA 0
LTEQ PKEY
DATA 0
DATA 210
DATA 510
DATA 1050
DATA 10
DATA 10
DATA 0
DATA 0
GTEQ PKEY
DATA 0
DATA 0
DATA 10
DATA 10
DATA 1050
DATA 510
DATA 210
DATA 0
THTA PKEY
DATA 0
DATA 1740
DATA 2220
DATA 2220
DATA 2220
DATA 2220
DATA 1740
DATA 0
EACH PKEY
DATA 740
DATA 1020
DATA 2310
DATA 2450
DATA 2750
DATA 1040
DATA 700
DATA 0
BKSL PKEY
DATA 2000
DATA 1000
DATA 400
DATA 200
DATA 100
DATA 40
DATA 20
DATA 0
LOC *O
BASE D
LIST *
* /--- BLOCK GOPLT 00 000 76/10/09 19.38
GOPDD SPACE 4
* FIRST TIME FLAG
GOPDD DATA 1 PDD STARTS WHEN GOPDD = 0
PDDSTAT DATA 2 PDD STATUS WORD
CONTYPE DATA -1 -1=NOT READY, 0=CC545, 1=CDC721
SCOPY BSSZ MDISMAX DISPLAY SCREEN COPY
PDDBUF BSSZ MDISMAX+64D PDD COMMAND BUFFER
SWK1 DATA 0,0,0 SYSTEM WORK WORDS
SWK2 EQU SWK1+1
KB2A DATA 0,0 KEY BUFFER
* /--- BLOCK ECS 00 000 76/10/09 19.00
ECS TITLE BUFFER OF ECS POINTER WORDS
*** ECS POINTERS. SET UP AT INITIALIZATION.
ECSPNT BSS 0
ECSADD BSSZ 1 POINTER TO KEY BUFFERS
LDISADD BSSZ 1 POINTER TO L DISPLAY BUFFER
BSSZ NDSPLOC-*+ECSPNT PAD AREA
* /--- BLOCK MAIN LOOP 00 000 79/05/28 07.06
MNL TITLE SCREEN DISPLAY FORMATS
*
*
* THERE ARE THREE CM BUFFERS ASSOCIATED WITH
* THE CONSOLE DISPLAY.
*
* *LBUF* - CURRENT FORMATTED DISPLAY
* FORMAT-
* WORD 1 - 36/0
* 12/X-COORDINATE
* 12/Y-COORDINATE
* WORDS 2-8 - 6 BIT DISPLAY CODES
*
* *SCOPY* - CURRENT SCREEN DISPLAY
* FORMAT-
* WORD 1 - 36/0
* 12/X-COORDINATE
* 12/Y-COORDINATE
* WORDS 2-8 - 6 BIT DISPLAY CODES
*
* *PDDBUF* - COMMAND BUFFER TO PP/PDD
* FORMAT-
* WORD 1 - 36/0
* 12/X-COORDINATE
* 12/Y-COORDINATE
* WORDS 2-8 - 6 BIT DISPLAY CODES
* OR
* WORD 1 - 24/0
* 12/X-COORDINATE
* 12/Y-COORDINATE
* 12/ERASE TO EOL CODE(FEELF)
*
* CDC721 SYSTEM CONSOLE -
* WORD BY WORD COMPARISON OF *LBUF* IS MADE
* WITH *SCOPY*.
* CHANGED WORDS ARE UPDATED IN *SCOPY*.
* ONLY CHANGED LINES ARE WRITTEN TO *PDDBUF*.
* CHANGED LINES ARE WRITTEN TO *PDDBUF* AS AN
* ERASE TO END-OF-LINE FUNCTION(EELF) FOLLOWED
* BY THE CONTENTS OF THE LINE IN *LBUF*.
* BLANK LINES ARE NOT WRITTEN TO *PDDBUF*.
*
* CC545 CONSOLE -
* CONTENTS OF THE FORMATTER SCREEN BUFFER IS
* WRITTEN TO *LBUF*.
* PP/PDD READS *LBUF*.
*
* DEFINES FOR CM DISPLAY BUFFERS
*
MLP TITLE MAIN EXECUTION LOOP
*** MAIN EXECUTION LOOP
* CHECK FOR KEYS AND BUFFER CHANGES
*
USE MAIN
MLP RJ KBI CHECK FOR KEY INPUTS
SA1 PDDBUF CHECK FOR PP/PDD READY
ZR X1,MLP0
RECALL
EQ MLP LOOP
MLP0 SA1 LDISADD GET DISPLAY ADDRESS
BX0 X1
SA0 SWK1 READ BUFFER COUNTER
RE 3 AND BUFFER LENGTHS
- RJ ECSPRTY
SA1 A0
SA2 BUFCNT
IX2 X1-X2 LOOK FOR CHANGE
NZ X2,MLP1 IF NEW BUFFER
RECALL
SX6 2
SA6 PDDSTAT
EQ MLP GO LOOK AGAIN
* PROCESS NEW BUFFER
MLP1 BX6 X1 RESET LOCAL BUFFER COUNTER
SA6 A2 BUFCNT
SX1 8 SET ECS ADDRESS TO REAL BUFFER
SA2 SWK1+1 GET BUFFER LENGTH
IX0 X0+X1
* /--- BLOCK MAIN LOOP 00 000 79/05/28 07.06
SB2 X2
BX6 X2 SET BUFFER LENGTH FOR PDD
SA6 LBUF
SA0 A6+B1
RE B2
- RJ ECSPRTY
SA1 CONTYPE
ZR X1,MLP2 IF CC545 CONSOLE
* INITIALIZATIONS FOR READING THE DISPLAY BUFFER
SA1 LBUF
SB3 X1+LBUF B3=END OF *LBUF*
SA3 LBUF FWA OF *LBUF*
SA4 SCOPY FWA OF *SCOPY*
SB4 WPL CM WORDS PER LINE
SB6 PDDBUF COMMAND BUFFER FOR PP/PDD
* INITIALIZATIONS FOR LINE BY LINE COMPARISON
CB10 SB7 A3+WPL CHECK FOR END OF BUFFER
SX0 B3-B7
NG X0,CB200 EXIT
SB5 B0 INITIALIZE FLAG FOR BLANK LINE
SX5 B0 INITIALIZE NON-ZERO LINE
SA3 A3+B1 CAUSE SKIP ON X/Y COORDINATES
SA4 A4+B1 CAUSE SKIP ON X/Y COORDINATES
SB2 B1 SKIPPED ONE WORD
*
CB20 SB2 B2+B1 INCREMENT WORDS/LINE READ
SX0 B4-B2 CHECK FOR END OF DISPLAY LINE
NG X0,CB60 TRANSFER LINE TO *PDDBUF*
SA3 A3+B1 PTR INTO *LBUF*
ZR X3,CB30 CHECK FOR NON-ZERO WORD
SB5 -B1 FLAG NON-ZERO LINE
CB30 SA4 A4+B1 PTR INTO *SCOPY*
BX4 X3-X4 CHECK FOR A CHANGE
ZR X4,CB20 LOOP IF NO CHANGE
SX5 -B1 THIS LINE CHANGED
BX6 X3 UPDATE *SCOPY* FROM *LBUF*
SA6 A4
EQ CB20 LOOP
*
CB60 ZR X5,CB10 NO CHANGE ON THIS LINE. LOOP.
SA1 CONTYPE CHECK CONSOLE TYPE
ZR X1,CB100 545 CONSOLE
* LOAD ERASE TO END OF LINE FUNCTION TO *PDDBUF*
SB7 A3-B4 GET X/Y FOR THIS LINE
SA1 B7+B1
BX6 X1
LX6 12
SX0 FEELF
BX6 X6+X0
SB6 B6+B1 B6=PTR INTO *PDDBUF*
SA6 B6 STORE IT
ZR B5,CB10 DONE IF LINE IS BLANK
* TRANSFER THIS LINE TO *PDDBUFF*.
CB100 SB7 A3-B4
SB7 B7+B1
CB110 SA1 B7
BX6 X1
SB6 B6+B1 POSITION IN *PDDBUF*
SA6 B6
SX0 A3 TEST FOR END OF LINE
SB7 B7+B1
SX5 B7
IX0 X0-X5
PL X0,CB110 TRANSFER NEXT WORD
EQ CB10 GET NEXT LINE
CB200 SX6 B6-PDDBUF STORE LENGTH OF *PDDBUF*
SA6 PDDBUF
MLP2 MX6 0
SA6 GOPDD LET PDD GO
* /--- BLOCK MAIN LOOP 00 000 79/05/28 07.06
SA1 MLP3
BX6 X1
SA6 MLP2 PLANT JUMP
MLP3 EQ MLP LOOP
BUFCNT DATA -1 FORCE FIRST BUFFER READ
* /--- BLOCK KBI 00 000 76/10/16 18.28
KBI TITLE KEYBOARD INPUT
*** KBI - KEYBOARD INPUT
*
* PLUGS THE ENTERED KEY INTO PLATO
* KEY BUFFER IN ECS.
KBI SUBR
SA2 KBUF GET POSSIBLE KEY
PL X2,KBI --- EXIT
MX3 1
BX2 -X3*X2 CLEAR UPPER BIT SET BY *PDD*
SA0 KB2A
SA4 ECSADD
SX0 X4+LSTUD*2
+ RE 2
- RJ ECSPRTY
SA3 A0
SA4 A0+B1
MX5 -12
BX6 -X5*X3 PPU WORD COUNT
BX0 -X5*X4 CP WORD COUNT
SX5 B1
IX6 X6+X5 INCREMENT PP WORD COUNT
* /--- BLOCK KBI 00 000 76/10/16 18.28
SB6 X6 SAVE BYTE COUNT
SX5 3
BX6 X6*X5 MOD 4 BYTE COUNT
LX6 2 *4
SB7 X6
SB7 B7+B7
SB7 B7+X6 *12
SB7 B7+12
MX5 -12
LX3 X3,B7 PUT APPROPRIATE BYTE IN LOWER BITS
BX3 X5*X3 CLEAR LOWER BITS
BX3 X3+X2 MERGE IN CHARACTER
SB7 B7-60
AX6 X3,B7 RETURN KEYWORD TO ORIGINAL POSITION
SX4 B6
SX3 7777B
BX4 X3*X4 TAKE 12 BIT SUM
BX6 X6*X5
IX6 X6+X4 RESTORE BYTE COUNT
SA6 A0
SA4 ECSADD
SX0 X4+LSTUD*2
+ WE 1
- RJ ECSPRTY
SX7 2 CLEAR KEY AND STATUS
SA7 KBUF
SA7 PDDSTAT
EQ KBIX RETURN
* /--- BLOCK DSYS 00 000 80/01/24 09.36
COMCSYS TITLE SYSTEM COMUNICATIONS
*** COMUNICATED WITH SYSTEM AND MASTOR
*
*
*CALL COMCSYS
* /--- BLOCK ECSPRTY 00 000 80/09/02 23.16
ECSPRTY TITLE ECSPRTY - ECS ERROR ACTION
*** ECS ERROR ACTION
*
* ISSUE MESSAGE AND ABORT
ECSPRTY SUBR
MESSAGE ECSMSG,0,R
ABORT
ECSMSG DIS ,* ++++ ECS ERROR ++++*
* /--- BLOCK SETCM 00 000 76/10/09 17.18
SETCM TITLE SET RUNNING CM MEMORY
*** SET UP RUNNING CM MEMORY..
*
*
SETCM SX6 CMEND+1+77B ROUND UP
AX6 6
LX6 30+6
SA6 SWK1 SET UP REQUEST
MEMORY CM,SWK1,RECALL
* RECALL SWK1
EQ MLP EXIT TO MAIN LOOP
CMEND BSS 0
* /--- BLOCK CONSOLE 00 000 80/01/18 04.30
CONSOLE TITLE INITIALIZATIONS
*** SET PRIORITIES AND AFFILIATE WITH PLATO
*
*
CONSOLE SB1 1 SET UNIVERSAL CONSTANT FOR B1=1
*
*
* SET QUEUE PRIORITIES
*
*
SX1 DCPU CPU PRIORITY
.NOSV2 IFGE OSLEV,562D NOS V2
SX2 IRSI PREVENT ROLLOUT
.NOSV2 ELSE NOS V1
SX2 LSSS-1 EQUAL TO MASTOR
.NOSV2 ENDIF
LX2 30
BX6 X1+X2
SA6 SWK1+1
MASTOR SWK1,MS.PRI
*
*
* AFFILIATE WITH PLATO
*
*
SRDY1 BSS 0
SA1 =4L"LGC.PLAT" PLATO LOGIC IDENTIFIER
BX6 X1
SA6 SWK1+1
MASTOR SWK1,MS.AFF
MX0 -11
SA1 SWK1 CHEKC REPLY CODE
AX1 12
BX1 -X0*X1 MASK OFF ERROR CODE
ZR X1,SRDY3 IF SUCCESSFUL
RECALL
EQ SRDY1 TO TRY AGAIN
*
*
* NOW READ IN ECS PARAMETERS
*
*
SRDY2 RECALL
SRDY3 SA0 SWK1 READ EM LOW CORE POINTER
SX0 DSPINTP
RE 1 ONE WORD POINTER
- RJ ECSPRTY
SA1 A0 GET POINTER
PL X1,SRDY2
MX2 1 STRIP OK BIT
BX0 -X2*X1
SA0 ECSPNT
RE NDSPLOC NUMBER OF POINTER WORDS
- RJ ECSPRTY
*
*
* BRING UP DISPLAY DRIVER
*
*
MX6 0
SA6 SWK1 CLEAR STATUS BIT
SYSTEM PDD,,PDDSTAT
RECALL PDDSTAT WAIT FOR PDD
*
SRDY9 SA1 CONTYPE WAIT TIL PDD SETS CONSOLE TYPE
NG X1,SRDY9
*
EQ SETCM GO SET CM MEMORY REQUIREMENTS
END CONSOLE
* /--- BLOCK PLT 00 000 82/11/02 10.52
IDENT PDD,PDD
PERIPH
SST RDS
COMMENT DISPLAY DRIVER FOR CONSOLE
TITLE DISPLAY DRIVER FOR X.CONSOLE
LIST F
SPACE 4
* GET SYSTEM PPU MACROS
*CALL COMPMAC
BASE MIXED
LIST X
*CALL COMDMAC
LIST *
BASE *
*CALL COMSPIM
*CALL COMSSSJ
*CALL COMSCPS
*CALL AIDTEXT
*CALL SYSCON
*CALL PCFTEXT
*CALL DTEXT
BASE MIXED
.NOSV1 IFLT OSLEV,562D NOS V1
SPACE 4
** DISPLA - DISPLAY DATA
*
*
* DISPLA X,X,(TEXT)
* ENTRY *X* = X-COORDINATE
* *Y* = Y-COORDINATE
* *TEXT* = DISPALY TEXT
* IF COORDINATES NOT PRESENT DISPLAY AT PRESENT
* SCREEN POSITION
DISPLA MACRO X,Y,T
LOCAL I,J,K
QUAL
K MICRO 1,,$T$
.1 MICCNT K
I SET .1+1
I SET I/2
LDN K
OAM J,CH
QUAL *
DIS RMT
QUAL
J BSS 0
IFNE X,,2
CON X
I SET I+1
IFNE Y,,2
CON Y
I SET I+1
DATA H$"K"$
K EQU I
QUAL *
DIS RMT
ENDM
.NOSV1 ENDIF
* /--- BLOCK PLT 00 000 82/11/02 10.53
TITLE DIRECT CELL ASSIGNMENTS
*
*
MACRO DRC,NAME,ARG
NAME EQU DRC$
CON NAME
QUAL
IFC EQ,*ARG**
DRC$ SET DRC$+1
ELSE 1
DRC$ SET ARG+DRC$
QUAL *
ENDM
*** DIRECT LOCATION ASSIGNMENTS
DRC$ SET LA
ORG PPFW
UC DRC UPPER CASE CHARACTER FLAG
SL DRC SHIFT LEVEL FOR KBI PROCESSING
LC DRC LAST KEY PRESSED
FN DRC 5 CM KEY BUFFER WORD
XC DRC USED BY *COMDDIS* / *COMDSYS*
YC DRC USED BY *COMDDIS* / *COMDSYS*
.NOS23 IFLT OSLEV,617D
NC DRC USED BY *COMDSYS*
.NOS23 ELSE
CT DRC CONSOLE TYPE (0=CC545, 1=721)
.NOS23 ENDIF
BF DRC PLATO BUFFER CONTROL (1/SEC)
SPACE 3
ERRPL DRC$-IR TOO MANY DIRECT CELLS USED
SPACE 4
*** ASSEMBLY CONSTANTS
CH EQU CHDS DISPLAY CHANNEL
NAME MICRO 1,, PDD USED BY *COMDDSP*
SPACE 4
TITLE MAIN LOOP
* /--- BLOCK PLT LOOP 00 000 84/08/01 07.50
SPACE 4
ORG PPFW
PDD LJM PRS PRESET
* MAIN LOOP
MNL LDD CT GET CONSOLE TYPE
ZJN MNL0 IF CC545 CONSOLE
LJM MNL7210 IF CDC721 CONSOLE
MNL0 FJM *,CH IF DATA NOT TAKEN, WAIT
DCN CH+40
CFNC SLSF SELECT LEFT SCREEN, SMALL CHARS
LDC LBUF
RJM DLN DISPLAY CHARACTER BUFFER
FJM *,CH IF DATA NOT TAKEN, WAIT
DCN CH+40
RJM KBI KEYBOARD INPUT
RJM DRS DISPLAY RIGHT SCREEN
MNL1 DCN CH+40
RJM CEF CHECK ERROR FLAG
AOD BF
SBN 10D FOR 1/5 SEC
PJN MNL3 IF TIME FOR NEW PLATO BUFFER
LJM MNL LOOP
MNL3 STD BF
LDD RA
SHN 6
ADC PDDSTAT SET RECALL BIT
CWM FCW,ON FILE COMPLETE BIT
MONITOR RCLM
LJM MNL LOOP
MNL721 TITLE MAIN LOOP FOR CDC721 CONSOLE
*
*** MNL721 - MAIN LOOP FOR CDC721 CONSOLE
*
* RIGHT SCREEN IS DISPLAYED ON ENTRY AND
* ONLY UPDATED IN *KBI*.
* LEFT SCREEN IS UPDATED WHENEVER *PDDBUF*
* IS NON-ZERO.
*
MNL7210 DCN CH+40
CFNC SLSF SELECT LEFT SCREEN/SMALL CHARS
CFNC CHSF CLEAR HIDDEN SCREEN
RJM DRS DISPLAY RIGHT SCREEN
CFNC THVF TRANSFER HIDDEN TO VISIBLE
FJM *,CH
DCN CH+40
MNL721 LDD RA
SHN 6
ADC PDDSTAT SET RECALL BIT
CWM FCW,ON FILE COMPLETE BIT
MONITOR RCLM
MNL7215 RJM CEF CHECK ERROR FLAG
RJM KBI KEYBOARD INPUT
LDD RA CHECK FOR DATA TO READ
SHN 6
ADC PDDBUF CM BUFFER WORD COUNT
CRD CM
LDD CM+4 (CM+4)=0 IF NOTHING TO DO
ZJN MNL7215 LOOP
STD BF WORD COUNT OF *PDDBUF*
DCN CH+40
CFNC SLSF SELECT LEFT SCREEN, SMALL CHARS
LDC PDDBUF SET ADDRESS OF *PDDBUF*
RJM DLS DISPLAY LEFT SCREEN
CFNC THVF TRANSFER HIDDEN TO VISIBLE
LDN ZERL READY FOR ANOTHER BUFFER
CRD CM
LDD RA
SHN 6
ADC PDDBUF
CWD CM
LJM MNL721 LOOP
* /--- BLOCK DLN 00 000 76/12/15 16.23
DLN TITLE DISPLAY LINE BUFFER
*** DLN - DISPLAY LINE BUFFER
*
* ENTRY - (A) = CENTRAL ADDRESS OF BUFFER
* AND WITH SCOPE MODE SET (CHAR OR POINT)
DLN SUBR
STM DLNA
ADN 1
STM DLNB
LDD RA
SHN 6
ADC ** FWA BUFFER
DLNA EQU *-1
CRD CM CHECK BUFFER WORD COUNT
LDD CM+4
ZJN DLNX IF NO BUFFER
STD T1
LDC 100 CENTRAL WORD COUNT FOR CRM
STD T2
LDN 0 STARTING ADDRESS IN BUFFER
STD T3
DLN1 LDD RA
SHN 6
ADD T3
ADC ** + 1 STARTING ADDRESS OF BUFFER
DLNB EQU *-1
CRM CBUF,T2
LDC 100
RAD T3 INCREMENT BUFFER ADDRESS
LDD T1
ADC -100 CHECK BUFFER EMPTY YET
MJN DLN2 IF LAST OF BUFFER
STD T1
LDC 500 WORD COUNT FOR OAM
UJN DLN3
DLN2 LDN 0
STD T2 FLAG END OF BUFFER
LDD T1
SHN 2 4*CENTRAL COUNT
ADD T1 5*CENTRAL COUNT=PP COUNT
NJN DLN3 IF NOT ZERO WORD COUNT
LJM DLNX EXIT IF ZERO
DLN3 OAM CBUF,CH OUTPUT DATA
LDD T2
NJN DLN1 IF MORE IN BUFFER
LJM DLNX
CHS TITLE CLEAR HIDDEN SCREEN
*
*** CHS - CLEAR HIDDEN SCREEN.
*
* ENTRY - RIGHT OR LEFT SCREEN ALREADY SELECTED.
*
* EXIT - CHANNEL 10 IS ACTIVE.
*
* CALLS - NONE.
*
* MACRO - CFNC
CHS SUBR
ACN CH+40
LDC LOWERY INITALIZE Y COORDINATE
STM CHSXY+1
CHS1 LDN 2 SEND X/Y COORDINATES
OAM CHSXY,CH
CFNC EELF ERASE TO EOL
LDN YINC INCREMENT Y COORDINATE
RAM CHSXY+1
SBM UPPERY CHECK FOR MORE LINES TO CLEAR
MJP CHS1
UJN CHSX EXIT
CHSXY DATA 6000B 721 X COORDINATE/LEFTMOST
BSSZ 1 721 Y COORDINATE
LOWERY EQU 7214B 721 Y COORDINATE/BOTTOM
UPPERY DATA 7764B 721 UPPERMOST Y COORDINATE
DLS TITLE DISPLAY CDC721 LEFT SCREEN
*** DLS - DISPLAY LEFT SCREEN
*
* ENTRY - ( A ) = CENTRAL ADDRESS OF BUFFER
* LEFT OR RIGHT SCREEN HAS BEEN SELECTED.
*
* CALLS - NONE
*
* /--- BLOCK DLN 00 000 76/12/15 16.23
* MACROS- NONE
DLS SUBR
ACN CH+40
ADN 1 SKIP PAST WORD COUNT
STM DLSA FWA OF THE BUFFER
LDN 0
STD T2
DLS10 LDD BF TOTAL WORDS LEFT IN THE BUFFER
ZJN DLSX
MJN DLSX I'7M A COWARD
STD T1 WORDS TO READ
ADC -100
MJN DLS50 LESS THAN 100 WORDS TO READ
LDC 100
STD T1 READ 100 WORDS
* READ FROM THE BUFFER
DLS50 LDD RA
SHN 6
ADD T2
ADC **
DLSA EQU *-1
CRM CBUF,T1
LDD T1 INCREMENT STARTING CM ADDRESS
RAD T2 FOR THE NEXT READ
LDD BF DECREMENT WD COUNT IN CM BUFFER
SBD T1
STD BF
* OUTPUT FROM *CBUF*
LDC CBUF-1
STD T3
LDD T1
SHN 2 4*CM WORDS
ADD T1 5*CM WORDS=PP WORDS
STD T1 T1=PP WORDS READ
DLS100 FJM *,CH
SOD T1 T1=WORDS LEFT TO READ
PJN DLS110
LJM DLS10 LOOP
* CHECK FOR ERASE TO END OF LINE FUNCTION.
* OUTPUT *EELF* IF ONE IS FOUND.
DLS110 AOD T3 INCREMENT POINTER INTO *CBUF*
LDI T3 GET NEXT BYTE FROM *CBUF*
LMC FEELF CHECK FOR CLEAR SCREEN FUNCTION
NJN DLS150
LDD T3 CHECK PREVIOUS BYTE FOR
SBN 1 Y-COORDINATE
STD T4
LDI T4
LPC 7000B
ADC -7000B
NJN DLS150
CFNC THVF TRANSFER HIDDEN TO VISIBLE 1ST
DCN CH+40
CFNC EELF ISSUE ERASE TO EOL FUNCTION
LJM DLS100 LOOP
DLS150 LDD T3
STM DLSB
LDN 1
OAM **,CH
DLSB EQU *-1
LJM DLS100 LOOP
* /--- BLOCK KBI 00 000 84/08/01 07.53
KBI TITLE KEYBOARD ENTRY ROUTINE
*** KBI - KEYBOARD INPUT
*
KBI1 LMD LC
KBI2 STD LC SET LAST CHARACTER
KBI SUBR
LDN ZERL CLEAR KEY BUFFER WORD
CRD FN
DCN CH+40
CFNC SKIF SELECT KEYBOARD INPUT
IAN CH
DCN CH+40
ZJN KBI2 IF NO CHARACTER
LMD LC
ZJN KBI1 IF SAME AS LAST KEY
LMD LC
STD LC SET LAST KEY
ADD SL 0 IF SHIFT LEV 0, 63 IF LEVEL 1
STD FN+4
LDM CHRT,FN+4 READ PLATO EQUIVALENT OF CHARACTER
LMD UC TOGLE BY 40 IF UPPER CASE CHAR
SHN 1 FOR PARITY BIT
STD FN+4 PLATO KEY CODE
SHN 5
PJN *+3
LJM PRB PROCESS RIGHT BLANK
SHN 1
PJN *+3
LJM PLB PROCESS LEFT BLANK
SHN 1
PJN *+3
LJM PSYS PROCESS SYSTEM (SWITCH TO DSD)
SHN 2 ONE UNUSED BIT
PJN *+3
LJM KBIX PROCESS NOP
* /--- BLOCK KBI 00 000 84/08/01 07.54
KBI3 BSS 0
LDC 4000
STD FN
LDD RA
SHN 6
ADC KBUF KEYBOARD BUFFER ADDRESS IN CM
CWD FN WRITE CHARACTER
ADC PDDSTAT-KBUF RECALL CP WORD ADDRESS
CWM FCW,ON FILE COMPLETE BIT
MONITOR RCLM
LDC 200
STD LC CLEAR KEY
LDC 50D*50D 50D*20 MILLISECONDS
STD BF FORCE CONSOLE TO RESPONED
* UPDATE RIGHT SCREEN FOR CDC721 IF FUNCTION
* OR UPPER CASE IS SELECTED.
LDD CT GET CONSOLE TYPE
ZJN KBI4 IF CC545
LDD SL CHECK FOR FUNCTION SELECTED
ADD UC OR UPPER CASE SELECTED
ZJN KBI4 NEITHER SELECTED
LDN 0
STD UC CLEAR UPPER CASE
STD SL CLEAR FUNCTION SETTING
LJM CH721 UPDATE RIGHT SCREEN FOR 721
KBI4 LDN 0
STD UC
STD SL
LJM KBIX DONT UPDATE RIGHT DISPLAY
PRB LDN 63
STD SL SET TO FUNCTIONS
LJM CH721 UPDATE RIGHT SCREEN FOR 721
PLB LDN 40
LMD UC FLIP CASES
STD UC
ZJN PLB1
LJM CH721 UPDATE RIGHT SCREEN FOR 721
PLB1 STD SL
LJM CH721 UPDATE RIGHT SCREEN FOR 721
PSYS LDD UC
ZJN PSYS1 IF IN LOWER CASE
DCN CH+40 DROP DISPLAY
RJM DDS
LJM DPP DROP PPU, CONTROL PT. AND EXIT
PSYS1 DCN CH+40
RJM HDC HOLD DISPLAY
LDD CT GET CONSOLE TYPE
ZJN PSYS2 IF CC545 CONSOLE
DCN CH+40
CFNC SLSF SELECT LEFT SCREEN
RJM CHS CLEAR HIDDEN SCREEN
LDD RA
SHN 6
ADC LBUF
CRD CM
LDD CM+4
STD BF
LDC LBUF REPLOT THE SCREEN
RJM DLS
CFNC THVF TRANSFER HIDDEN TO VISIBLE
PSYS2 LDN 1R* PRESET TO *
STD LC
LDN 0
STD UC
STD SL
CH721 LDD CT CHECK FOR 721 CONSOLE
ZJN CH7219 IF CC545 CONSOLE
DCN CH+40
CFNC SRSF SELECT RIGHT SCREEN,SMALL CHARS
RJM CHS CLEAR HIDDEN SCREEN
RJM DRS DISPLAY RIGHT SCREEN
FJM *,CH WAIT
CFNC THVF TRANSFER HIDDEN TO VISIBLE
FJM *,CH
* /--- BLOCK KBI 00 000 84/08/01 07.54
DCN CH+40 DISCONNECT CHANNEL
CH7219 LJM KBIX EXIT
FCW VFD 60/1 STATUS BIT
* /--- BLOCK DRS 00 000 84/08/01 08.00
DRS TITLE DISPLAY RIGHT SCREEN
*** DRS - DISPLAY RIGHT SCREEN
*
DRS SUBR
DCN CH+40
CFNC SRSF SELECT RIGHT SCREEN,SMALL CHARS
LDD CT GET CONSOLE TYPE
NJP DRS10
DISPLA 6000,7670,( 0 1 2 3 4 5 6 7 8
, 9 LB = RB)
DISPLA 6024,7620,( Q W E R T Y U I
,O P + -)
DISPLA 6000,7550,( ERAS A S D F G H J
,K L * /)
DISPLA 6024,7500,( NEXT Z X C V B N M
,, . (
DISPLA ,,( )
DISPLA ,,)
LDD SL
NJN DRS1 IF FUNCTION
DISPLA 6000,7704,(LCRT RCRT LBKT RBKT DOLR PCT UNDL TICK)
DISPLA 6610,7704,( FCTN SHFT)
UJN DRS2 TRY FOR SHIFT
DRS1 BSS 0
DISPLA 6430,7704,( SUP SUB TERM TAB COPY SHFT)
DISPLA 6644,7634,(MICRO BOX)
DISPLA 6050,7564,( ASGN DIV HELP
, EDIT LAB)
DISPLA 6144,7514,(ESCAPE)
DISPLA 6334,7514,( BACK MUL SCLN DATA STOP)
DRS2 LDD UC
ZJN DRS3
DISPLA 6730,7704,( SHFT)
DISPLA 6730,7704,( SHFT)
DRS3 LJM DRSX EXIT
* /--- BLOCK DRS 00 000 84/08/22 11.24
.NOS23 IFGE OSLEV,617D
DRS10 LDD SL
NJN DRS20 IF FUNCTION
DISPLA 6230,7702,( )
UJN DRS30
DRS20 DISPLA 6230,7702,(FUNCTION KEYBOARD EQUIVALENTS),HF
DRS30 LDD UC
NJN DRS40
DISPLA 6000,7714,(NORMAL KEYBOARD EQUIVALENTS),HF
DISPLA 6400,7714,(SHIFTED KEYBOARD EQUIVALENTS)
UJN DRS50
DRS40 DISPLA 6000,7714,(NORMAL KEYBOARD EQUIVALENTS)
DISPLA 6400,7714,(SHIFTED KEYBOARD EQUIVALENTS),HF
DRS50 LDD SL
NJP DRS200 IF FUNCTION
DISPLA 6000,7656,( SHIFT = FORWARD TAB)
DISPLA 6000,7632,( FUNCTION = BACKWARD TAB)
DISPLA 6000,7606,( ERASE = BACK ARROW)
DISPLA 6000,7562,( NEXT = NEXT / RETURN)
DISPLA 6000,7512,( + = + / DOWN)
DISPLA 6000,7466,( - = - / UP)
DISPLA 6000,7442,( ( = ( / FWD
DISPLA 6000,7416,( ))
DISPLA ,,( = ))
DISPLA ,,( / BKW )
DISPLA 6000,7362,( * = * / SQUARE)
*
DISPLA 6400,7656,( LESS THAN = 0)
DISPLA 6400,7632,( GREATER THAN = 1)
DISPLA 6400,7606,( LEFT BRACKET = 2)
DISPLA 6400,7562,( RIGHT BRACKET = 3)
DISPLA 6400,7536,( DOLLAR SIGN = 4)
DISPLA 6400,7512,( PERCENT SIGN = 5)
DISPLA 6400,7466,( UNDERLINE = 6)
DISPLA 6400,7442,( SINGLE QUOTE = 7)
LJM DRSX
DRS200 DISPLA 6000,7656,( ASSIGNMENT = A)
DISPLA 6000,7632,( BACK = B)
DISPLA 6000,7606,( COPY = FORWARD TAB)
DISPLA 6000,7562,( DATA = FWD)
DISPLA 6000,7536,( DIVIDE = D)
DISPLA 6000,7512,( EDIT = * / SQUARE)
DISPLA 6000,7466,( HELP = H)
DISPLA 6000,7442,( LAB = /)
DISPLA 6000,7416,( MICRO = + / DOWN)
*
DISPLA 6416,7656,( MULTIPLY = M)
DISPLA 6416,7632,( SEMICOLON = ,)
DISPLA 6416,7606,( SQUARE = UP)
DISPLA 6416,7562,( STOP = ))
DISPLA 6416,7536,( SUBSCRIPT = 8)
DISPLA 6416,7512,( SUPERSCRIPT = 7)
DISPLA 6416,7466,( TAB = BACKWARD TAB)
DISPLA 6416,7442,( TERM = 9)
*
DISPLA 6240,7372,( DROP DISPLAY = X)
DISPLA 6240,7360,( HOLD DISPLAY = BACKWARD TAB-X)
LJM DRSX
.NOS23 ENDIF
* /--- BLOCK CEF 00 000 84/08/01 08.00
TITLE CHECK AND PROCESS ERROR FLAG
*** CEF - CHECK ERROR FLAG
*
CEF SUBR
PAUSE
LDD CM+1 CHECK ERROR FLAG
ZJN CEFX IF OK
DCN CH+40
RJM DDS DROP DISPALY
DPP MONITOR DCPM DROP CONTORL POINT
DPP1 MONITOR DPPM DROP PPU
LJM PPR IDLE
* /--- BLOCK KEY EQUS 00 000 76/12/17 22.00
DD60 TITLE PLATO KEY EQUIVALENCES
*** TABLE OF PLATO EQUIVALENCES OF DD60 KEYS
*
CHRT BSS 0
DATA 0 NO ENTRY FOR ZERO
DATA 101 A
DATA 102 B
DATA 103 C
DATA 104 D
DATA 105 E
DATA 106 F
DATA 107 G
DATA 110 H
DATA 111 I
DATA 112 J
DATA 113 K
DATA 114 L
DATA 115 M
DATA 116 N
DATA 117 O
DATA 120 P
DATA 121 Q
DATA 122 R
DATA 123 S
DATA 124 T
DATA 125 U
DATA 126 V
DATA 127 W
DATA 130 X
DATA 131 Y
DATA 132 Z
DATA 000 0
DATA 001 1
DATA 002 2
DATA 003 3
DATA 004 4
DATA 005 5
DATA 006 6
DATA 007 7
DATA 010 8
DATA 011 9
DATA 016 +
DATA 017 -
DATA 050 *
DATA 135 /
DATA 051 (
DATA 173 )
DATA 4000 L-BLANK = FCTN
DATA 133 =
DATA 2000 R-BLANK = SHIFT
DATA 137 ,
DATA 136 .
DATA 026 CR = NEXT
DATA 023 BKSP = ERASE
DATA 100 SPACE
* /--- BLOCK SHIFT 1 00 000 84/08/01 08.03
SHIFT1 TITLE PLATO FUNCTION EQUIVALENCES
** SHIFT LEVEL 1 EQUIVALENCES
DATA 0 NO ENTRY FOR ZERO
DATA 015 A = ASSIGN
DATA 030 B = BACK
DATA 200 C = NOP
DATA 013 D = DIVIDE
DATA 200 E = NOP
DATA 200 F = NOP
DATA 200 G = NOP
DATA 025 H = HELP
DATA 200 I = NOP
DATA 200 J = NOP
DATA 200 K = NOP
DATA 200 L = NOP
DATA 012 M = MULTIPLY
DATA 200 N = NOP
DATA 200 O = NOP
DATA 200 P = NOP
DATA 200 Q = NOP
DATA 200 R = NOP
DATA 200 S = NOP
DATA 200 T = NOP
DATA 200 U = NOP
DATA 200 V = NOP
DATA 200 W = NOP
DATA 1000 X = ESCAPE
DATA 200 Y = NOP
DATA 200 Z = NOP
DATA 200 0 = NOP
DATA 200 1 = NOP
DATA 200 2 = NOP
DATA 200 3 = NOP
DATA 200 4 = NOP
DATA 200 5 = NOP
DATA 200 6 = NOP
DATA 020 7 = SUP
DATA 021 8 = SUB
DATA 062 9 = TERM
DATA 024 + = MICRO
DATA 034 - = BOX
DATA 027 * = EDIT
DATA 035 / = LAB
DATA 031 ( = DATA
DATA 032 ) = STOP
DATA 014 L-BLANK = TAB
DATA 033 (=) = COPY
DATA 2000 R-BLANK = SHFT
DATA 134 , = ;
DATA 200 . = NOP
DATA 026 CR = NEXT
DATA 023 BKSP = ERASE
DATA 200 SPACE = NOP
* /--- BLOCK COM DECKS 00 000 84/08/01 08.12
SPACE 4
LIST X
*CALL COMDDSP
*CALL COMDDIS
*CALL COMDSYS
SPACE 4
.NOSV2 IFGE OSLEV,562D NOS V2
DIS HERE FOR *DISPLA* MACRO IN *COMDSYS*
.NOSV2 ENDIF
* /--- BLOCK INITIAL 00 000 84/08/01 08.12
* THE FOLLOWING SPACE IS USED FOR A CENTRAL
* BUFFER AFTER BEING EXECUTED
CBUF BSS 0
.NOS23 IFGE OSLEV,617D
DIMB DUMP INST MOD BUFFER
.NOS23 ENDIF
PRS PAUSE
LDD CM+1 GET ERROR FLAG
ZJN *+3 IF NO ERROR
LJM DPP
LDD CP
.NOSV2 IFGE OSLEV,562D NOS V2
ADN JOTW JOB ORIGIN TYPE WORD
CRD CM
LDD CM+3
.NOSV2 ELSE NOS V1
ADN JNMW
CRD CM
LDD CM+3
LPN 77
.NOSV2 ENDIF
LMN SYOT CHECK IF SYSTEM ORIGIN
ZJN PRS1 IF SYOT
LDN PPET SET ERROR FLAG
STD CM+1
MONITOR CEFM
LJM DPP1
PRS1 RJM RDS ASK FOR THE DISPLAY NICELY
LDN 0 RESET DISPLAY PAUSE
STD T1
PRS2 LDM PSSI,T1 PLANT NEW INSTRUCTIONS
STM PSS+1,T1
AOD T1
SBN ILTH
NJN PRS2
LDC 6000
STD XC SET INITIAL X
LDN 0
STD UC CLEAR UPPER SHIFT
STD SL AND SHIFT LEVEL
STD LC PRESET LAST CHARACTER TO ZERO
STD BF CLEAR PLATO BUFFER CONTROL
.NOS23 IFGE OSLEV,617D
* SET CONSOLE TYPE FLAG.
LDN DSEQ
SFA EST
ADK EQAE
CRD CM
LDD CM+2
STD CT
LDN ZERL
CRD CM
LDD CT SET CONSOLE TYPE
STD CM+4
LDD RA
SHN 6
ADC CONTYPE
CWD CM
LDD CT
ZJP MNL EXIT IF CC545
MDIN SRMT MODIFY CODE FOR 721 CONSOLE
.NOS23 ENDIF
LJM MNL MAIN LOOP
PSSI RJM CEF CHECK ERROR FLAG
LJM /COMDDSP/PSSX
ILTH EQU *-PSSI
BSS 500+CBUF-*
SBUF BSS 10*5
PBUF BSS 0
CBUFL1 EQU 200*2+4
CBCML EQU CBUFL1/5 CM WORD COUNT
END