IDENT CHD,CHD
PERIPH
BASE MIXED
SST RDS
SYSCOM
*COMMENT CHD - CHESS DISPLAY DRIVER.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TITLE CHD - CHESS DISPLAY DRIVER.
SPACE 4
*** AUTHOR:
* K. E. GORLEN
* VOGELBACK COMPUTING CENTER
* NORTHWESTERN UNIVERSITY
* 6400/6500/6600 SCOPE 3 03/20/69
*** CONVERSION TO KRONOS -
* G. R. MANSFIELD.
* E. W. HOBBS. 70/03/06.
SPACE 4
** COMMON DECKS.
*CALL COMDMAC
*CALL COMPMAC
*CALL COMSCPS
SPACE 4
**** DIRECT STORAGE LOCATION ASSIGNMENTS.
NC EQU 15 NUMBER OF CP-S (FOR *COMDSYS*)
XC EQU 16 X-COORDINATE
YC EQU 17 Y-COORDINATE
CN EQU 20 - 24 CM WORD BUFFER
CC EQU 25 CHARACTER COUNT
KM EQU 26 MESSAGE ADDRESS
CR EQU 27 CARRIAGE RETURN FLAG
SW EQU 30 - 34 STATUS WORD
WF EQU 35 WAITING FOR CPU FLAG
LF EQU 36 LIMIT FLAG
A.SW EQU 37 - 40 STATUS WORD ABSOLUTE ADDRESS
A.TR EQU 41 - 42 ADDRESS OF TREE POSITION
A.OP EQU 43 - 44 ADDRESS OF OPTION DISPLAY
A.GS EQU 45 - 46 ADDRESS OF GAME SCORE DISPLAY
* EQU 47
WC EQU 57 KEYBOARD ENTRY WORD COUNT
FT EQU 60 - 61 FIRST
SC EQU 62 REAL TIME SECOND CLOCK
GC EQU 63 GAME CLOCK STATUS
OT EQU 64 - 65 OUT
LM EQU 66 - 67 LIMIT
SPACE 4
** ASSEMBLY CONSTANTS.
NAME MICRO 1,, CHESS
CH EQU CHDS DISPLAY CHANNEL
CPF EQU 3 LOOP CYCLES/FLASH
FPM EQU 6 FLASHES/MOVE
DSCT EQU 20D DISPLAY CYCLE (MS)
LOPT EQU 6 LENGTH OF OPTION LIST
LSCR EQU 18D*4 LENGTH OF GAME SCORE (CM WORDS)
LLIM EQU 8D LENGTH OF LIMIT LIST
XLIM EQU 6000 LIMIT AND TREE COORDINATES
YLIM EQU 7650
XBRD EQU 6020 BOARD COORDINATES
YBRD EQU 7120
XOPT EQU 6000 OPTIONS COORDINATES
YOPT EQU 7610
XSCR EQU 6060 GAME SCORE COORDINATES
YSCR EQU 7350
XCLK EQU 6000 GAME CLOCK COORDINATES
YCLK EQU 7440
XNAM EQU 6070 PLAYER NAMES COORDINATES
YNAM EQU 7520
SPACE 4
** DISPLAY ENVIRONMENT TABLE POINTERS.
P.PD EQU 1 PIECE DISPLAY BUFFER
P.IM EQU 2 MESSAGE INPUT BUFFER
P.EM EQU 3 ERROR MESSAGE BUFFER
P.OM EQU 4 OUTPUT MESSAGE BUFFER
P.LM EQU 5 LIMIT SETTING
P.TR EQU 6 CURRENT POSITION IN TREE
P.BD EQU 7 PACKED BOARD
P.OP EQU 10 OPTION DISPLAY
P.GS EQU 11 GAME SCORE DISPLAY
P.NM EQU 12 PLAYER NAMES
P.RO EQU 13 TEMPORARY ROLLOUT STORAGE
SPACE 4
** FUNCTION MNEMONICS.
F.DUM EQU 2 DUMMY FUNCTION
F.AKL EQU 4 ACCEPT KEYBOARD LINE
F.ERR EQU 6 DISPLAY ERROR MESSAGE
F.FLA EQU 10 FLASH PIECE
F.SET EQU 12 SET CLOCKS
F.STP EQU 14 STOP CLOCKS
F.SCA EQU 16 START CLOCK A
F.SCB EQU 20 START CLOCK B
F.EPR EQU 22 ENTER PRIORITY
F.EFL EQU 24 ENTER FIELD LENGTH
F.DRP EQU 26 DROP PP
F.ABT EQU 30 KILL JOB
****
LCMA TITLE MACROS
** LCMA - LOAD AN 18 BIT CENTRAL MEMORY ADDRESS INTO
* THE A REGISTER.
* THE HIGH ORDER BITS ARE IN BITS 0-5 OF (ADDR).
* THE LOW ORDER BITS ARE IN (ADDR+1).
* ADDR MAY BE EITHER A DIRECT OR MEMORY LOCATION.
LCMA MACRO ADDR LOAD CM ADDRESS
LOCAL N
N SET 1
IFGT ADDR,77,1
N SET 2
K MICRO N,1,*DM*
LD_"K" ADDR
SHN 14
AD_"K" ADDR+1
ENDM
SPACE 4
** SCMA - STORE AN 18 BIT CM ADDRESS.
* HIGH ORDER BITS IN (ADDR).
* LOW ORDER BITS IN (ADDR+1).
* ADDR MAY BE DIRECT OR MEMORY.
SCMA MACRO ADDR
LOCAL N
N SET 1
IFGT ADDR,77,1
N SET 2
K MICRO N,1,*DM*
ST_"K" ADDR+1
SHN -14
ST_"K" ADDR
ENDM
SPACE 4
** TCMA - TRANSFER THE CM ADDRESS IN (A1 - A1+1) TO
* (A2 - A2+1).
TCMA MACRO A1,A2
LOCAL N1,N2
N1 SET 1
N2 SET 1
IFGT A1,77,1
N1 SET 2
IFGT A2,77,1
N2 SET 2
K1 MICRO N1,1,*DM*
K2 MICRO N2,1,*DM*
LD_"K1" A1
ST_"K2" A2
LD_"K1" A1+1
ST_"K2" A2+1
ENDM
INDEX SPACE 4
*** INDEX - GENERATE INDEXED TABLE.
*
*
*NAME INDEX TYPE,ADDRESS
* THIS MACRO IS INTENDED TO GENERATE TABLES WHICH ARE INDEXED
* BY SYMBOLIC CONSTANTS.
* IT HAS 3 CALLING SEQUENCES.
* IF *NAME* IS PRESENT, THE FWA OF THE TABLE IS SET TO *NAME*
* AND *TYPE* IS APPENDED AS A BIAS TO *TYPE* FOR ALL
* SUBSEQUENT CALLS.
*
* IF *ADDRESS* IS MISSING, THE TABLE IS TERMINATED WITH AN
* *ORG* TO THE END OF THE TABLE. THIS RESULTS IN ZERO ENTRIES
* FOR UNDEFINED ENTRIES IN THE TABLE.
*
* OTHERWISE, A TABLE ENTRY IS MADE AT *INDEX* + *TYPE* OF
* *ADDRESS*, WITH *TYPE* MODIFIED BY *TYPE* GIVEN IN THE
* INITIALIZING CALL.
*
* USES SYMBOL NAME *INDEX*.
* CALLS NONE.
PURGMAC INDEX
MACRO INDEX,A,B,C
IFC NE,*A**
A BSS 0
.3 MICRO 1,, B
.2 SET A
ELSE 5
ORG .2+B".3"
IFC NE,*C**,2
LOC B
CON C
BSS 0
ENDM
INDEX SPACE 4
.3 MICRO 1,,
CHD TITLE MAIN DISPLAY LOOP
** CHD - MAIN ROUTINE.
ORG PPFW
CHD RJM PRS PRESET
CHD1 RJM PAUSE FOR RELOCATION
RJM PFC PROCESS FUNCTION CODES
RJM RKE READ KEYBOARD ENTRY
RJM DKE DISPLAY KEYBOARD ENTRY
RJM SKE STORE KEYBOARD ENTRY
RJM DBD DISPLAY CHESS BOARD
RJM DPC DISPLAY CHESS PIECES
RJM DOE DISPLAY OUTPUT AND ERROR MESSAGES
RJM DLM DISPLAY LIMITS AND TREE POSITION
RJM DGC DISPLAY GAME CLOCKS
RJM DOS DISPLAY OPTIONS AND GAME SCORE
RJM PFP PROCESS FLASHING PIECE
RJM UGC UPDATE GAME CLOCKS
RJM DSS DISPLAY SYSTEM STATUS
UJN CHD1 LOOP
PAUSE TITLE PAUSE - PAUSE FOR RELOCATION
** PAUSE - PAUSE FOR RELOCATION.
* UPDATE STATUS ADDRESS.
* CHECK CONTROL POINT ERROR FLAG.
* CHECK ROLLOUT FLAG - DROP WITH RECALL IF SET.
* PROCESS DROP PP FUNCTION.
* PROCESS KILL JOB FUNCTION.
* PROCESS FIELD LENGTH REQUEST.
PAUSE SUBR ENTRY/EXIT
RJM PSS PAUSE FOR SYSTEM
LCMA IR+3 UPDATE STATUS ADDRESS
RJM ABS
CRD SW READ STATUS WORD
SCMA A.SW STORE ABSOLUTE ADDRESS OF STATUS
LDD SW+4
LMN F.DRP
NJN PAUSE1 IF NOT DROP FUNCTION
RJM SB0
LJM DRP DROP PP
PAUSE1 LMN F.ABT&F.DRP
NJN PAUSE2 IF NOT KILL FUNCTION
LJM ABT ABORT JOB
PAUSE2 LDD CP
ADN STSW
CRD CM
LDD CM+2
LPN 1
NJN PAUSE4 IF ROLLOUT SET
LDD SW+4
LMN F.EFL
ZJN PAUSE3 IF FL REQUEST
LJM PAUSEX RETURN
PAUSE3 LDD FL
SHN 6
SCMA SW+2 RETURN CURRENT FL
RJM SB0
LJM PAUSEX RETURN
PAUSE4 LDM CLKAO SAVE STATUS IN CENTRAL MEMORY
STD CM
LDM CLKBO
STD CM+1
LDD GC
STD CM+2
LDM UGCB
STD CM+3
LDM UGCE
STD CM+4
LCMA IR+3
ADN P.RO
RJM ABS
CWD CM
* DROP WITH RECALL.
RJM DDS
LDN ZERL CLEAR REQUEST BUFFER
CRD CM
LDD MA WRITE IR TO MESSAGE BUFFER
CWD IR
MONITOR RECM RECALL PP
LJM PPR RETURN TO PP RESIDENT
FNC TITLE FNC - FUNCTION CODE PROCESSOR
** FNC - PROCESS FUNCTION CODES.
* READ OUTPUT MESSAGE.
* READ CURRENT LIMIT SETTING.
* UPDATE PIECE DISPLAY BUFFER POINTERS.
* READ RANK LABELS AND FILE LABELS.
* UPDATE POINTERS TO BOARD,OPTION,GAME SCORE,TREE.
QUAL FNC
FNC SUBR ENTRY/EXIT
LDD SW+4 CHECK FUNCTION CODE
LPN 1
NJN FNCX RETURN IF COMPLETED
LDM PFPA
NJN FNCX RETURN IF *FLASH* SET
LDD SW+4
SHN -1
ZJN FNCX
STD YC
SBN TFNCL+4
MJN FNC1 IF LEGAL FUNCTION CODE
LDC FNCA+CPON MESSAGE = *ILLEGAL FUNCTION CODE.*
RJM DFM
LJM ABT ABORT JOB
FNC1 ADN 3
PJN FNCX IF ENFL, DROP, KILL
* SET BUFFER POINTERS.
LDD A.SW
SHN 14
ADD A.SW+1
ADN P.PD
CRD CN
TCMA CN+1,FT
TCMA CN+3,LM
LDD A.SW
SHN 14
ADD A.SW+1
ADN P.OM
CRD CN
ADN P.TR-P.OM
CRD CM
ADN P.OP-P.TR
CRD T6
ADN P.GS-P.OP
CRD T4
ADN P.NM-P.GS
CRD T2
LCMA T5 READ PLAYER NAMES
RJM ABS
CRM DOSE,ON
CRM DOSF,ON
LCMA CN+3 READ OUTPUT MESSAGE
RJM ABS
CRM DOEB,TR
TCMA CM+3,A.TR
TCMA CM+1,A.OP
TCMA T7,A.GS
* READ LIMIT SETTING.
LDN LLIM SET LENGTH OF LIMIT BUFFER
STD T1
LDD A.SW
SHN 14
ADD A.SW+1
ADN P.LM
CRD CM
LCMA CM+3 READ LIMITS
RJM ABS
CRM BUF,T1
LDN 0 SET INDEX
STD T5
STD LF CLEAR FLAG
LDC BUF-1 SET BUFFER POINTER
STD T6
FNC2 LDN 5
RAD T6 INCREMENT POINTER
LDI T6 CHECK LIMIT
NJN FNC3 IF NOT ZERO BYTE
STM DLMC,T5 SET ZERO BYTE
LDD T5
SBN 2*6
MJN FNC5 IF @ 6 LEVELS
UJN FNC4
FNC3 RJM CDD CONVERT TO DECIMAL DISPLAY CODE
STM DLMC,T5 STORE
LDN 2 INCREMENT INDEX
RAD T5
SBN 2*LLIM
NJN FNC2 LOOP
FNC4 LCN 0 SET FLAG
STD LF
* READ RANK LABELS.
FNC5 LDN 8D SET NUMBER OF LABELS
STD T1
LDD A.SW READ POINTER TO LABELS
SHN 14
ADD A.SW+1
ADN P.BD
CRD CM
LCMA CM+3 READ LABELS
RJM ABS
CRM BUF,T1
LDC BUF+5*7 SET POINTER TO BUFFER
STD T2
FNC6 LDI T2 LOAD NEXT LABEL
STM DBDE-1,T1 STORE
LCN 5 DECREMENT POINTER
RAD T2
SOD T1 DECREMENT INDEX
NJN FNC6 LOOP
* READ FILE LABELS.
LDD A.SW READ POINTER TO BOARD
SHN 14
ADD A.SW+1
ADN P.BD
CRD CM
LCMA CM+3 READ LABELS
ADN 8D
RJM ABS
CRM BUF,ON
LDC BUF+4 SET POINTER TO LABELS
STD CM
LDC DBDD+12D SET POINTER TO LABEL BUFFER
STD CM+1
FNC7 LDI CM UNPACK LABELS
LPN 77
STI CM+1
SOD CM+1
LDI CM
SCN 77
STI CM+1
LCN 2
RAD CM+1
SOD CM
LMC BUF
NJN FNC7 LOOP
* PROCESS FUNCTION CODE.
LDM TFNC-1,YC SET ADDRESS OF FUNCTION ROUTINE
STM FNC8
RJM ** EXECUTE
FNC8 EQU *-1
LJM FNCX RETURN
FNCA DATA C*CHD - ILLEGAL FUNCTION CODE.*
TFNC SPACE 4
** TFNC - TABLE OF FUNCTION CODES.
TFNC INDEX /2-1
INDEX F.DUM,SB0
INDEX F.AKL,AKL
INDEX F.ERR,ERR
INDEX F.FLA,SFF
INDEX F.SET,SET
INDEX F.STP,STP
INDEX F.SCA,SCA
INDEX F.SCB,SCB
INDEX F.EPR,EPR
INDEX F.EFL
TFNCL EQU *-TFNC
QUAL
PFC EQU /FNC/FNC
AKL TITLE FUNCTION CODE PROCESSING SUBROUTINES
** AKL- ACCEPT KEYIN.
*
* CALLS SB0.
AKL SUBR ENTRY/EXIT
LDD KM
NJN AKL1 IF MESSAGE SET
STD CC RESET CHARACTER COUNT
STD WC RESET WORD COUNT
AKL1 RJM SB0 SET COMPLETE
UJN AKLX RETURN
ERR SPACE 4
** ERR - ERROR IN KEYIN - SET ERROR FLAG.
*
* CALLS ABS, SB0.
ERR SUBR ENTRY/EXIT
LDD A.SW
SHN 14
ADD A.SW+1
ADN P.EM
CRD CM
LCMA CM+3
RJM ABS
CRM ERRA,TR
LDC ERRA DISPLAY ERROR MESSAGE
STD KM
RJM SB0
UJN ERRX RETURN
ERRA BSSZ 3*5+1
SFF SPACE 4
** SFF - SET FLASH FLAG TO FLASH PIECE.
SFF SUBR ENTRY/EXIT
LDN 0 STOP CLOCKS
STD GC
LDN 1 SET FLAG
STM PFPA
UJN SFFX
SET SPACE 4
** SET - SET CLOCKS.
*
* CALLS CTD, SB0.
SET SUBR ENTRY/EXIT
LDD SW
STM CLKAO SET OCTAL SECONDS
RJM CTD
STM UGCC SET MINUTES
LDD CM
STM UGCD SET DISPLAY SECONDS
LDD SW+1 REPEAT FOR CLOCK B
STM CLKBO
RJM CTD
STM UGCF
LDD CM
STM UGCG
LDN 0 CLEAR TIME UP FLAGS
STM UGCB
STM UGCE
STD GC STOP CLOCKS
RJM SB0
UJN SETX RETURN
STP SPACE 4
** STP - STOP CLOCKS.
*
* CALLS SB0.
STP SUBR ENTRY/EXIT
LDN 0
STD GC
RJM SB0
UJN STPX
SCA SPACE 4
** SCA - START CLOCK A.
*
* CALLS SB0.
SCA SUBR ENTRY/EXIT
LDM CLKAO
ZJN SCA1 IF TIME IS UP
LDN 1
STD GC
SCA1 RJM SB0
UJN SCAX
SCB SPACE 4
** SCB - START CLOCK B.
*
* CALLS SB0.
SCB SUBR ENTRY/EXIT
LDM CLKBO
ZJN SCB1 IF TIME IS UP
LDN 2
STD GC
SCB1 RJM SB0
UJN SCBX
EPR SPACE 4
** EPR - ENTER PRIORITY.
EPR1 LDN ZERL
CRD CM
LDN 17
STD CM+4
MONITOR SJCM
EPR2 RJM SB0
EPR SUBR ENTRY/EXIT
LDD SW+3
NJN EPR1
LDD CP
ADN JCIW
CRD CM
LDD CM
STD SW+3
UJN EPR2
ABT SPACE 4
** ABT - ABORT JOB.
ABT RJM DDS
MONITOR ABTM
LJM PPR
DRP SPACE 4
** DRP - DROP PP.
DRP RJM DDS
DPP MONITOR DPPM
LJM PPR
SB0 SPACE 4
** SB0 - SET THE COMPLETE BIT IN THE STATUS WORD (BIT 0).
SB0 SUBR ENTRY/EXIT
LDD SW+4
SCN 1
ADN 1
STD SW+4
LDC 600D STORE CURRENT GAME CLOCK READINGS
CLKAO EQU *-1
STD SW
LDC 600D
CLKBO EQU *-1
STD SW+1
LDD A.SW WRITE CM STATUS WORD
SHN 14
ADD A.SW+1
CWD SW
MONITOR RCLM RECALL CENTRAL PROCESSOR
UJN SB0X RETURN
RKE TITLE RKE - READ KEYBOARD ENTRY
*CALL COMPCHI
RKE SPACE 4
** RKE - READ KEYBOARD ENTRY.
*
* CALLS DDS, RDS, HDC.
RKE SUBR ENTRY/EXIT
RKEA FNC 7020,CH SELECT KEYBOARD INPUT
ACN CH
IAN CH
DCN CH
ZJN RKE0.1 IF NO INPUT
LMC 0
RKEC EQU *-1
ZJN RKEX IF SAME INPUT
LMM RKEC STORE NEW INPUT
RKE0.1 STM RKEC
ZJN RKEX RETURN IF NO CHARACTER
STD CM SAVE CHARACTER
LMN 60
NJN RKE2 IF NOT CARRIAGE RETURN (60B)
LDD WC
NJN RKE1 IF NOT EMPTY CARRIAGE RETURN
LDC RKEB DISPLAY *REPEAT ENTRY.*
STD KM
UJN RKEX
RKE1 LDN 1 SET CARRIAGE RETURN FLAG
STD CR
UJN RKEX RETURN
RKE2 LMN 1R &60
NJN RKE3 IF NOT RIGHT BLANK (55B)
RJM DDS DROP DISPLAY
RJM RDS REQUEST DISPLAY
RJM MDC MODIFY CHANNEL INSTRUCTIONS
UJN RKE4 RETURN
RKE3 LMN 1R*&1R
NJN RKE5 IF NOT (*)
LDD CC
NJN RKE5 IF NOT FIRST ENTRY
RJM HDC HOLD DISPLAY CHANNEL
RKE4 LJM RKEX RETURN
RKE5 LDD CM
LMN 61
NJN RKE7 IF NOT BACKSPACE (61B)
STD CR CLEAR CR FLAG
STD WF CLEAR WAITING FOR CP FLAG
STD KM CLEAR MESSAGE
LDD CC
ZJN RKE4 RETURN IF CHARACTER COUNT = 0
SHN -1 FORM WORD COUNT
STD WC
SOD CC DECREMENT CHARACTER COUNT
LPN 1 TEST SHIFT BIT
ZJN RKE6
LDM KBUF-1,WC CLEAR LAST CHARACTER
SCN 77
STM KBUF-1,WC
RKE6 LJM RKE13
RKE7 LMN 53&61
NJN RKE8 IF NOT LEFT BLANK (53B)
STD CR CLEAR CR FLAG
STD WF CLEAR WAITING FOR CP FLAG
STD KM CLEAR MESSAGE
STD CC ZERO CHARACTER AND WORD COUNT
STD WC
LJM RKEX RETURN
RKE8 LMN 62&53
NJN RKE9 IF NOT SPACE (62B)
LDN 1R CORRECT SPACE CODE
STD CM
UJN RKE10
RKE9 LDD CM
SBN 60
MJN RKE10 IF LEGAL CHARACTER
LJM RKEX RETURN
RKE10 LDD CC
SBN 40D
PJN RKE11 IF \ 40 CHARACTERS
AOD CC INCREMENT CHARACTER COUNT
RKE11 LDD CC SET WORD COUNT
ADN 1
SHN -1
STD WC
LDD CC
LPN 1
ZJN RKE12 IF LOWER CHARACTER
LDD CM STORE UPPER CHARACTER
SHN 6
STM KBUF-1,WC
UJN RKE13
RKE12 LDM KBUF-1,WC STORE LOWER CHARACTER
SCN 77
ADD CM
STM KBUF-1,WC
RKE13 LDC 7001 PRESET 32 CHARACTERS/LINE
STM DKEA
LDD CC
SBN 31D
MJN RKE14 IF < 30 CHARACTERS
SOM DKEA SET 64 CHARACTERS/LINE
RKE14 LJM RKEX RETURN
RKEB DATA C*REPEAT ENTRY.*
DKE TITLE DKE - DISPLAY KEYBOARD ENTRY
** DKE - DISPLAY KEYBOARD ENTRY.
*
* USES T7.
DKE SUBR ENTRY/EXIT
LDD WC
ZJN DKEX RETURN IF NO ENTRY
LDC 7001 SELECT LEFT SCREEN
DKEA EQU *-1 SIZE FUNCTION CODE
FAN CH
ACN CH
LDD WC DISPLAY ENTRY
ADN 2
STD T7
OAM DKEB,CH
DUP 3
LDD T7
OAM DKEB,CH
ENDD
DCN CH
LJM DKEX RETURN
DKEB DATA 6002,7002
KBUF BSSZ 21D
DBD TITLE LEFT SCREEN DISPLAYS
** DBD - DISPLAY CHESS BOARD.
*
* USES T5 - T7.
*
* CALLS DHL.
DBD SUBR ENTRY/EXIT
FNC 7001,CH SELECT LEFT SCREEN, 32 CHARACTERS/LINE
ACN CH
LDC YBRD SET Y-COORDINATE
STD T7
LDN 4 SET INDEX
STD T5
DBD1 LDD T7 OUTPUT Y-COORDINATE
OAN CH
RJM DHL DISPLAY A HORIZONTAL LINE
LDN 5 INITIALIZE INDEX
STD T6
DBD2 LDN 10 ADVANCE Y-COORDINATE
RAD T7
OAN CH
LDC XBRD-4 OUTPUT X-COORDINATE
OAN CH
LDN DBDBL
OAM DBDB,CH
SOD T6 ADVANCE INDEX
NJN DBD2 LOOP
LDN 10 ADVANCE Y-COORDINATE
RAD T7
OAN CH
LDC XBRD-4
OAN CH
LDN DBDAL
OAM DBDA,CH
LDD T7 OUTPUT Y-COORDINATE
OAN CH
RJM DHL DISPLAY A HORIZONTAL LINE
LDN 5 SET INDEX
STD T6
DBD3 LDN 10 ADVANCE Y-COORDINATE
RAD T7
OAN CH
LDC XBRD-4 OUTPUT X-COORDINATE
OAN CH
LDN DBDCL
OAM DBDC,CH
SOD T6 ADVANCE INDEX
NJN DBD3 LOOP IF NOT DONE
SOD T5
ZJN DBD4 IF 8 RANKS DISPLAYED
LDN 10 ADVANCE Y-COORDINATE
RAD T7
OAN CH
LDC XBRD-4 OUTPUT X-COORDINATE
OAN CH
LDN DBDAL
OAM DBDA,CH
LJM DBD1 LOOP
DBD4 LDN 10 ADVANCE Y-COORDINATE
RAD T7
OAN CH
RJM DHL DISPLAY TOP HORIZONTAL LINE
* DISPLAY FILE LABELS.
LDN DBDDL
OAM DBDD,CH
* DISPLAY RANK LABELS.
LDC YBRD+550 SET STARTING Y-COORDINATE
STD T7
LDN 0 INITIALIZE INDEX
STD T6
DBD5 LDC XBRD-20 STARTING X-COORDINATE
OAN CH
LDD T7 OUTPUT Y-COORDINATE
OAN CH
LDM DBDE,T6 DISPLAY NEXT LABEL
OAN CH
LCN 60 ADVANCE Y-COORDINATE
RAD T7
AOD T6 ADVANCE INDEX
LMN 8D
NJN DBD5 LOOP FOR 8 LABELS
DCN CH
LJM DBDX
DBDA DATA H*I I I I I I I I I*
DBDAL EQU *-DBDA
DBDB DATA H*I I//I I//I I//I I//I*
DBDBL EQU *-DBDB
DBDC DATA H*I//I I//I I//I I//I I*
DBDCL EQU *-DBDC
DBDD CON XBRD+24
CON YBRD-20
BSSZ 11D FILE LABEL BUFFER
DBDDL EQU *-DBDD
DBDE BSSZ 8D
DHL SPACE 4
** DHL - DISPLAY A HORIZONTAL LINE.
DHL SUBR ENTRY/EXIT
LDC XBRD DISPLAY LINE
OAN CH
LDN DHLAL
OAM DHLA,CH
LDC XBRD+10 DISPLAY SHIFTED LINE
OAN CH
LDN DHLAL
OAM DHLA,CH
UJN DHLX RETURN
DHLA DATA H*------------------------*
DHLAL EQU *-DHLA
DPC SPACE 4
** DPC - DISPLAY PIECES.
*
* USES T6, T7, OT - OT+1.
*
* CALLS ABS.
DPC SUBR ENTRY/EXIT
LDD LM COMPUTE BUFFER LENGTH
SBD FT
SHN 14
ADD LM+1
SBD FT+1
MJN DPCX RETURN IF NEGATIVE
ZJN DPCX RETURN IF ZERO
STD T7 SAVE BUFFER LENGTH
LDC BUFL SET BUFFER LENGTH
STD T6
LCMA FT SET STARTING ADDRESS
RJM ABS
SCMA OT
LCMA LM CHECK BUFFER LIMIT
RJM ABS
FNC 7010,CH SELECT LEFT SCREEN, DOT MODE
ACN CH
DPC1 LDC -BUFL
RAD T7
MJN DPC2 IF NOT A FULL PP BUFFER
LCMA OT FILL PP BUFFER
CRM BUF,T6 FILL PP BUFFER
SCMA OT SET NEXT STARTING ADDRESS
LDC BUFL*5 DISPLAY
OAM BUF,CH
UJN DPC1 LOOP
DPC2 ADC BUFL COMPUTE WORDS LEFT
ZJN DPC3 RETURN IF ZERO
STD T6
LCMA OT LOAD PP BUFFER
CRM BUF,T6
LDD T6 DISPLAY
SHN 2
ADD T6
OAM BUF,CH
DPC3 DCN CH
LJM DPCX
DOE SPACE 4
** DOE - DISPLAY OUTPUT AND ERROR MESSAGES.
*
* CALLS DPM.
DOE1 DCN CH
DOE SUBR ENTRY/EXIT
FNC 7001,CH SELECT LEFT SCREEN, 32 CHARACTERS/LINE
ACN CH
DUP 3
LDC DOEA
RJM DPM
ENDD
LDD KM
ZJN DOE1 EXIT IF NO MESSAGE
DUP 3
LDC 6000
OAN CH
LDC 7024
OAN CH
LDD KM
RJM DPM
ENDD
LJM DOE1 RETURN
DOEA DATA 6000,7050
DOEB BSSZ 16D
DLM TITLE RIGHT SCREEN DISPLAYS
** DLM - DISPLAY LIMITS AND CURRENT TREE POSITION.
*
* USES T6, T7.
*
* CALLS DPM, ABS, CDD.
DLM SUBR ENTRY/EXIT
FNC 7101,CH SELECT RIGHT SCREEN, 32 CHARACTERS/LINE
ACN CH
LDC XLIM OUTPUT INITIAL COORDINATES
OAN CH
LDC YLIM
OAN CH
LDD LF
NJN DLM1 IF LIMIT FLAG SET
LDN DLMAL DISPLAY *LIMITS-*
OAM DLMA,CH
DLM1 LDC DLMC DISPLAY LIMITS
RJM DPM
LDN LLIM SET WORD COUNT
STD T6
LCMA A.TR READ LIMITS
RJM ABS
CRM BUF,T6
LDC BUF-1 SET POINTER
STD T6
LDN LLIM SET COUNTER
STD T7 INITIALIZE INDEX
LDC YLIM-20 OUTPUT STARTING COORDINATES
OAN CH
LDC XLIM
OAN CH
LDD LF
NJN DLM3 IF LIMIT FLAG SET
LDN DLMBL DISPLAY *NOW AT-*
OAM DLMB,CH
UJN DLM3
DLM2 LDN 0 DISPLAY * *
OAN CH
DLM3 LDN 5 ADVANCE POINTER
RAD T6
LDI T6 LOAD LIMIT
ZJN DLM4 EXIT ON ZERO BYTE
RJM CDD CONVERT TO DISPLAY CODE
OAN CH DISPLAY
SOD T7 DECREMENT COUNTER
NJN DLM2 LOOP
DLM4 DCN CH
LJM DLMX RETURN
DLMA DATA C*LIMITS-*
DLMAL EQU *-DLMA
DLMB DATA C*NOW AT-*
DLMBL EQU *-DLMB
DLMC DIS 2*LLIM-1,
DATA 0
DGC SPACE 4
** DGC - DISPLAY GAME CLOCKS.
DGC SUBR ENTRY/EXIT
FNC 7102,CH SELECT RIGHT SCREEN, 16 CHARACTERS/LINE
ACN CH
DUP 4,2
LDN UGCAL
OAM UGCA,CH
DCN CH
UJN DGCX
DOS SPACE 4
** DOS - DISPLAY OPTIONS AND GAME SCORE.
*
* USES T5 - T7.
*
* CALLS ABS.
DOS SUBR ENTRY/EXIT
FNC 7101,CH SELECT RIGHT SCREEN, 32 CHARACTERS/LINE
ACN CH
LDN DOSCL DISPLAY *OPTIONS *
OAM DOSC,CH
LDN DOSDL DISPLAY PLAYER NAMES
OAM DOSD,CH
DCN CH
FNC 7100,CH SELECT RIGHT SCREEN, 64 CHARACTERS/LINE
ACN CH
LDN LOPT SET CM WORD COUNT
STD T6
LCMA A.OP READ OPTION LIST
RJM ABS
CRM BUF,T6
LDC YOPT OUTPUT Y-COORDINATE
STD T7
OAN CH
LDC BUF
STM DOSA SET POINTER TO OPTION LIST
STM DOSB SET POINTER TO SCORE
DOS1 LDC XOPT+240 OUTPUT X-COORDINATE
OAN CH
DOS2 LDN 5 DISPLAY ONE CM WORD
OAM **,CH
DOSA EQU *-1
OAN CH DISPLAY * *
LDN 5 ADVANCE POINTER
RAM DOSA
SOD T6 DECREMENT WORD COUNT
ZJN DOS3 IF DONE
LMN 3 IF THREE WORDS COMPLETE
NJN DOS2 LOOP FOR THREE WORDS
LCN 12 ADVANCE Y-COORDINATE
RAD T7
OAN CH
UJN DOS1 LOOP FOR NEXT LINE
* DISPLAY GAME SCORE.
DOS3 LDC LSCR SET CM WORD COUNT
STD T6
SHN -1 SET INDEX
STD T5
LCMA A.GS READ GAME SCORE BUFFER
RJM ABS
CRM BUF,T6
LDC YSCR OUTPUT Y-COORDINATE
STD T7
OAN CH
DOS4 LDC XSCR OUTPUT X-COORDINATE
OAN CH
DOS5 LDN 2*5 DISPLAY TWO CM WORDS
OAM **,CH
DOSB EQU *-1
LDC XSCR+300 ADVANCE X-COORDINATE
OAN CH
LDN 2*5 ADVANCE POINTER
RAM DOSB
SOD T5 ADVANCE INDEX
ZJN DOS6 IF DONE
LPN 1
NJN DOS5 LOOP FOR NEXT WORD
LCN 12 ADVANCE Y-COORDINATE
RAD T7
OAN CH
UJN DOS4 LOOP FOR NEXT LINE
DOS6 DCN CH
LJM DOSX
DOSC CON XOPT X-COORDINATE
CON YOPT-10 Y-COORDINATE
DATA C*OPTIONS *
DOSCL EQU *-DOSC
DOSD CON YNAM
CON XNAM
DOSE BSSZ 5
CON XNAM+310
DOSF BSSZ 5
DOSDL EQU *-DOSD
SYSDIS SPACE 4
** DSS - DISPLAY SYSTEM STATUS.
*
* CALLS SYS.
DSS SUBR ENTRY/EXIT
LDC 6000 SET X-COORDINATE
STD XC
RJM SYS
DCN CH+40
UJN DSSX
DPM TITLE DISPLAY SUBROUTINES
** DPM - DISPLAY PERIPHERAL MEMORY.
*
* ENTRY (A) = FWA OF DISPLAY DATA.
*
* USES T0.
DPM SUBR ENTRY/EXIT
STD T0 SET START ADDRESS
DPM1 LDI T0
ZJN DPMX IF ZERO BYTE
OAN CH
AOD T0 ADVANCE POINTER
UJN DPM1
MDC SPACE 4
** MDC - MODIFY CHANNEL INSTRUCTIONS.
*
* EXIT CHANNEL INSTRUCTIONS MODIFIED.
*
* USES T1, T2, T3.
MDC SUBR ENTRY/EXIT
LDM /COMDDSP/DDSB CHECK ASSIGNED CHANNEL
STD T3
CHTE *
LMN CH
ZJN MDCX IF CHANNELS MODIFIED
LDC TCHS MODIFY CHANNELS
STD T1
MDC1 LDI T1
ZJN MDC2 IF CHANNEL TABLE MODIFICATION COMPLETE
STD T2
LDI T2
SCN 77
ADD T3
STI T2
AOD T1
UJN MDC1 LOOP
MDC2 LDC MDCA SET 1ST ADDRESS FOR BLIND MODIFICATION
STD T1
MDC3 AOD T1 ADVANCE ADDRESS
LMC MDCB
ZJN MDCX RETURN IF COMPLETE
LDI T1 CHECK WORD
LPC 7077
LMC 7000+CH
NJN MDC3 IF NOT 7XCH
LDI T1 MODIFY CHANNEL
SCN 77
ADD T3
STI T1
UJN MDC3
TCHS SPACE 4
** TCHS - TABLE OF CHANNEL INSTRUCTIONS.
TCHS CHTB
RSTC RESTORE CHANNEL INSTRUCTIONS
SPACE 4
** COMMON DECKS.
*
MDCA BSS 0 FIRST ADDRESS FOR BLIND CHANNEL MOD
*CALL COMDSYS
*CALL COMDDSP
MDCB BSS 0 LIMIT ADDRESS FOR BLIND CHANNEL MOD
PFP TITLE PROCESS FLASHING PIECE
** PFP - PROCESS FLASHING PIECE.
*
* CALLS SB0.
PFPD BSSZ 2 POINTER BUFFER
PFP SUBR ENTRY/EXIT
LDC **
PFPA EQU *-1 FLASH STATUS FLAG
ZJN PFPX
SOM PFPB DECREMENT CYCLE COUNT
NJN PFPX
LDN CPF
STM PFPB RESET CYCLE COUNT
SOM PFPC DECREMENT FLASH COUNT
MJN PFP2 IF FINISHED
LPN 1 TOGGLE ON OR OFF
NJN PFP1
TCMA PFPD,LM SWITCH ON
UJN PFPX RETURN
PFP1 TCMA LM,PFPD SWITCH OFF
TCMA SW+2,LM
LJM PFPX RETURN
PFP2 LDN FPM/2*2 RESET FLASHES/MOVE
STM PFPC
LDN 0
STM PFPA CLEAR FLASH STATUS FLAG
RJM SB0
LJM PFPX RETURN
PFPB CON CPF CYCLES/FLASH
PFPC CON FPM/2*2 FLASHES /MOVE
SKE TITLE SKE - STORE KEYBOARD ENTRY IN CM
** SKE - STORE KEYBOARD BUFFER.
*
* EXIT KEYBOARD BUFFER STORED IN CM WITH ZERO BYTE
* APPENDED.
*
* USES T7, CM - CM+4.
*
* CALLS ABS, SB0.
SKE SUBR ENTRY/EXIT
LDD CR CHECK CARRIAGE RETURN FLAG
ZJN SKEX RETURN IF NOT SET
LDD SW+4
ZJN SKE1 IF CP READY TO READ
LDD WF CHECK WAITING FOR CP FLAG
NJN SKEX IF PREVIOUSLY SET
LDN 1 SET FLAG
STD WF
LDD KM SAVE CURRENT MESSAGE
STM SKEA
LDC SKEB DISPLAY *WAITING - CP BUSY.*
STD KM
UJN SKEX
SKE1 STM KBUF,WC SET ZERO BYTE
STD CR CLEAR CR FLAG
STD WF CLEAR WAITING FLAG
LDD KM
LMC SKEB
NJN SKE2 IF WAITING MESSAGE STILL UP
LDC **
SKEA EQU *-1 PREVIOUS MESSAGE ADDRESS
STD KM
SKE2 LDN 4 SET CONSTANT 4
STD T7
LDD A.SW READ INPUT MESSAGE BUFFER
SHN 14
ADD A.SW+1
ADN P.IM
CRD CM
LCMA CM+3 WRITE BUFFER
RJM ABS
CWM KBUF,T7
RJM SB0
LJM SKEX RETURN
SKEB DATA C*WAITING - CP BUSY.*
UGC TITLE GAME CLOCKS
** UGC - UPDATE GAME CLOCKS.
UGC SUBR ENTRY/EXIT
LDD GC
ZJN UGCX RETURN IF CLOCKS STOPPED
LDC RTCL READ REAL TIME CLOCK
CRD CM
LDD CM+1
SBD SC COMPARE CLOCKS
ZJN UGCX RETURN IF SAME
RAD SC RESET SECOND CLOCK
LDD GC CHECK GAME CLOCKS
SCN 1
NJN UGC3 IF CLOCK B
SOM CLKAO DECREMENT BY 1 SECOND
NJN UGC2 IF NON-ZERO
UGC1 RJM TUP
UJN UGCX RETURN
UGC2 RJM CTD CONVERT SECONDS TO DISPLAY CODE
STM UGCC STORE MINUTES
LDD CM
STM UGCD STORE SECONDS
LJM UGCX RETURN
UGC3 SOM CLKBO DECREMENT BY ONE SECOND
ZJN UGC1 IF TIME IS UP
RJM CTD CONVERT SECONDS TO DISPLAY CODE
STM UGCF STORE MINUTES
LDD CM
STM UGCG STORE SECONDS
LJM UGCX RETURN
UGCA CON XCLK
CON YCLK
UGCB CON 0
UGCC CON 2R10
CON XCLK+204
UGCD CON 2R00
UGCE CON 0
UGCF CON 2R10
CON XCLK+510
UGCG CON 2R00
CON YCLK+5
CON XCLK+176
CON 2R.
CON XCLK+502
CON 2R.
CON YCLK+20
CON XCLK+176
CON 2R.
CON XCLK+502
CON 2R.
UGCAL EQU *-UGCA
TUP SPACE 4
** TUP - TIME IS UP FOR A PLAYER.
TUP SUBR ENTRY/EXIT
LDN 0 CLEAR STATUS
CRD SW
LDN 0 CLEAR OUTPUT MESSAGE
STM DOEB
LDD A.SW CLEAR INPUT MESSAGE
SHN 14
ADD A.SW+1
ADN P.IM
CRD CM
LCMA CM+3
RJM ABS
CWD SW
LDD GC CHECK GAME CLOCKS
SCN 1
NJN TUP1 IF CLOCK B
LDC 2R
STM UGCB FLAG CLOCK A
LDC 2R00 SET SECONDS TO ZERO
STM UGCD
UJN TUP2
TUP1 LDC 2R
STM UGCE FLAG CLOCK B
LDC 2R00 SET SECONDS TO ZERO
STM UGCG
TUP2 RJM AKL SET COMPLETE BIT AND CLEAR MESSAGES
LDN 0 STOP CLOCKS
STD GC
LJM TUPX RETURN
ABS TITLE CONVERSION ROUTINES
** ABS - CONVERT RELATIVE ADDRESS TO ABSOLUTE.
*
* ENTRY (A) = RELATIVE ADDRESS.
*
* EXIT (A) = ABSOLUTE ADDRESS IF IN RANGE.
* ABORT IF ADDRESS OUT OF RANGE.
ABS1 SHN 14
ADD FL
ADD RA
SHN 6
ABS SUBR ENTRY/EXIT
SHN 14
SBD FL
SHN 6
MJN ABS1 IF IN RANGE
LDC ABSA+CPON MESSAGE = *POINTER OUT OF RANGE.*
RJM DFM
LJM ABT ABORT JOB
ABSA DATA C*CHD - POINTER OUT OF RANGE.*
CDD SPACE 4
** CDD - CONVERT OCTAL TO DISPLAY CODED DECIMAL.
*
* ENTRY (A) = OCTAL NUMBER TO BE CONVERTED.
*
* EXIT (A) = NUMBER IN DISPLAY CODED DECIMAL.
*
* USES T0, T1.
CDD2 ADN 10D+1R0 CONVERT TO DISPLAY CODE
SHN 14
ADD T1
SHN 6
CDD SUBR ENTRY/EXIT
STD T0 STORE THE NUMBER
LDN 1R0 INITIALIZE TENS COUNTER
STD T1
CDD1 LCN 10D COUNT TENS
RAD T0
MJN CDD2 IF UNDERFLOW
AOD T1 ADVANCE TENS COUNT
UJN CDD1 LOOP
CTD SPACE 4
* CTD - CONVERT TIME TO DISPLAY CODED MINUTES AND SECONDS.
*
* ENTRY (A) = TIME IN OCTAL SECONDS.
*
* EXIT (A) = MINUTES IN DISPLAY CODED DECIMAL.
* (CM) = SECONDS IN DISPLAY CODED DECIMAL.
*
* USES T2, T3.
*
* CALLS CDD.
CTD2 ADN 60D FORM REMAINDER (SECONDS)
RJM CDD CONVERT TO DISPLAY CODE
STD CM STORE
LDD T3
RJM CDD CONVERT MINUTES TO DISPLAY CODE
STD T3 SUPPRESS LEADING ZERO
SHN -6
SBN 1R0
NJN CTD3
LDD T3
LPN 77
STD T3
CTD3 LDD T3
CTD SUBR ENTRY/EXIT
STD T2
LDN 0 INITIALIZE
STD T3
CTD1 LCN 60D COUNT MINUTES
RAD T2
MJN CTD2 IF UNDERFLOW
AOD T3 ADVANCE MINUTE COUNT
UJN CTD1 LOOP
SPACE 4,10
DIS HERE *COMDSYS* *DISPLA* EXPANSION
SPACE 4,10
BUF EQU *
L SET 7777-BUF
BUFL EQU L/5 LENGTH OF PIECE DISPLAY BUFFER (CM WDS)
PRS TITLE PRS - PRESET DRIVER
** PRS - PRESET. (WILL BE OVERLAID)
*
* EXIT (NC) = NUMBER OF CP-S.
PRS SUBR ENTRY/EXIT
CATD CHECK ACCESS TO DISPLAY CONSOLE
* LDN 0
STD WC INITIALIZE DIRECT CELLS
STD CC
STD CR
STD GC
STD KM CLEAR KEYBOARD MESSAGE
LDC RTCL SET REAL TIME CLOCK
CRD CM
LDD CM+1 SET SECOND CLOCK
STD SC
RJM PAUSE
LDN CMUR CLEAR CMU OPTION AVAILABLE BIT
RJM ABS
CRD CM
LDD CM
LPC 3777
STD CM
LDN CMUR
RJM ABS
CWD CM
LDC PAUSE4 SET RETURN FROM HOLD ON A ROLLOUT FLAG
STM /COMDDSP/ROFA
LCMA IR+3 STATUS POINTER
NJN PRS2 IF NON ZERO
LJM ABT ABORT JOB
PRS2 LDD A.SW READ PIECE DISPLAY BUFFER POINTERS
SHN 14
ADD A.SW+1
ADN P.PD
CRD CN
TCMA CN+1,FT
TCMA CN+3,LM
LCMA FT
RJM ABS
LCMA LM
RJM ABS
LDD A.SW LOAD OTHER POINTERS
SHN 14
ADD A.SW+1
ADN P.TR
CRD CN
ADN P.OP-P.TR
CRD CM
ADN P.GS-P.OP
CRD T6
ADN P.NM-P.GS
CRD T4
LCMA T7
RJM ABS
CRM DOSE,ON READ PLAYER NAMES
CRM DOSF,ON
TCMA CN+3,A.TR
TCMA CM+3,A.OP
TCMA CM+1,A.GS
LDD IR+2
ADC -7777
ZJN PRS3 IF RECALLED
LCN 0 SET RECALL PARAMETER
STD IR+2
MONITOR DCPM DROP CPU
LDN 0 CLEAR (RA+1)
CRD CM
LDD RA
SHN 6
ADN 1
CWD CM
RJM SB0
MONITOR RCPM REQUEST CPU
RJM RDS REQUEST DISPLAY
RJM MDC MODIFY CHANNEL INSTRUCTIONS
LJM PRSX RETURN
PRS3 LDD A.SW RESET CLOCKS
SHN 14
ADD A.SW+1
ADN P.RO
CRD CM
LDD CM
STM CLKAO
RJM CTD
STM UGCC
LDD CM
STM UGCD
LDD CM+1
STM CLKBO
RJM CTD
STM UGCF
LDD CM
STM UGCG
LDD CM+2
STD GC
LDD CM+3
STM UGCB
LDD CM+4
STM UGCE
* READ OUTPUT MESSAGE.
LDD A.SW READ POINTER
SHN 14
ADD A.SW+1
ADN P.OM
CRD CM
LCMA CM+3
RJM ABS
CRM DOEB,TR
* READ LIMITS.
LDN LLIM SET WORD COUNT
STD T1
LDD A.SW READ POINTER
SHN 14
ADD A.SW+1
ADN P.LM
CRD CM
LCMA CM+3 READ LIMITS
RJM ABS
CRM PRSA,T1
LDN 0
STD T5 SET INDEX
STD LF CLEAR FLAG
LDC PRSA-1 SET POINTER
STD T6
PRS4 LDN 5 ADVANCE POINTER
RAD T6
LDI T6 LOAD NEXT LIMIT
NJN PRS5 IF NOT ZERO BYTE
STM DLMC,T5 SET ZERO BYTE
LDD T5
SBN 2*6
MJN PRS7 IF @ 6 LEVELS
UJN PRS6
PRS5 RJM CDD CONVERT TO DISPLAY CODE
STM DLMC,T5
LDN 2 ADVANCE INDEX
RAD T5
SBN 2*LLIM
NJN PRS4 LOOP
PRS6 LCN 0 SET FLAG
STD LF
* READ RANK LABELS.
PRS7 LDN 8D SET LABEL COUNT
STD T1
LDD A.SW READ POINTER TO BOARD
SHN 14
ADD A.SW+1
ADN P.BD
CRD CM
LCMA CM+3 READ LABELS
RJM ABS
CRM PRSA,T1
LDC PRSA+5*7 SET POINTER TO BUFFER
STD T2
PRS8 LDI T2 LOAD NEXT LABEL
STM DBDE-1,T1 STORE
LCN 5 DECREMENT POINTER
RAD T2
SOD T1 DECREMENT INDEX
NJN PRS8 LOOP
* READ FILE LABELS.
LDD A.SW READ POINTER TO BOARD
SHN 14
ADD A.SW+1
ADN P.BD
CRD CM
LCMA CM+3 READ LABELS
ADN 8D
RJM ABS
CRM PRSA,ON
LDC PRSA+4 SET POINTER TO LABELS
STD CM
LDC DBDD+12D SET POINTER TO LABEL BUFFER
STD CM+1
PRS9 LDI CM UNPACK LABELS
LPN 77
STI CM+1
SOD CM+1
LDI CM
SCN 77
STI CM+1
LCN 2
RAD CM+1
SOD CM
LMC PRSA
NJN PRS9 LOOP
RJM RDS REQUEST DISPLAY
RJM MDC MODIFY CHANNEL INSTRUCTIONS
LDN NCPL SAVE NUMBER OF CP-S
CRD CM
AOD CM+1
STD NC
LJM PRSX RETURN
PRSA BSS 0
SPACE 4
** COMMON DECKS.
*CALL COMPCUA
SPACE 4
END