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