|
|
DataMuseum.dkPresents historical artifacts from the history of: Philips Data Systems |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Philips Data Systems Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 20412 (0x4fbc)
Notes: pts_type(SC)
Names: »DRDCL1.SC«
└─⟦fce1dcf99⟧ Bits:30009704 Philips computer tape "KMD15"
└─⟦this⟧ »LINSPY/DRDCL1.SC«
IDENT DRDCL1 REL 1.1 78-04-21 870150140110 **************************************************************** * * DRIVER FOR LOG TOOL * * FOLLOWING FUNCTIONS ARE HANDLED BY THE DRIVER * * - READ FROM CIRCULAR RECEIVEBUFFER * - OPERATOR COMMAND HANDLING * - INTERRUPT HANDLER FOR RECEIVER 1 AND 2 * - POWER ON FUNCTION * * * OESTEN HANSSON 1976-01-21 * ****************************************************************** EJECT * * * ENTRIES * * ENTRY DRLGOP ACTIVATION OF CONTROL ENTRY DCL1ON POWER ON RECOVERY ENTRY DRLGIN ACTIVATION OF INPUT ENTRY IHLGI1 INPUT INTERRUPT RECEIVER 1 ENTRY IHLGI2 INPUT INTERRUPT RECEIVER 2 ENTRY DWL101 CONTROL DWT1 ENTRY DWL102 INPUT DWT1 * * * EXTERNAL REFERENCES * * EXTRN DWTECB ECBADDRESS EXTRN TENDIO END OF EVENT EXTRN TDISP DISPATCHER EXTRN DISIOE EXTRN SAVE8 SAVE 8 REGS ON A15 STACK EXTRN SETIME SET TIMER EXTRN DWTST DWT STATUS EXTRN DWTOR DWT ORDER EJECT * * DEVICE ADRESSES * * DALGI1 EQU /02 INPUT DEVICE ADDRESS 1 DALGI2 EQU /22 INPUT DEVICE ADDRESS 2 * * * RELATIVE ECB EQUATES * * ECBBA EQU 2 ECBRL EQU 4 ECBEL EQU 6 ECBRC EQU 8 ECBCW EQU /A * * * * DEVICE WORK AREA EQUATES * * DWTSAV EQU /20 REGISTER SAVE AREA DWTA4 EQU DWTSAV+2 A4 SAVE AREA DWTA5 EQU DWTSAV+4 A5,SAVE AREA STB EQU /1E RELATIVE STACK BASE EJECT * * * WORK AREAS * * TESTX DATA 0 ASCII=1,EBCDIC=0 PCOUNT DATA 0 IDLE POLL COUNTER SYNCO1 DATA 0 SYNCOUNTER 1 SYNCO2 DATA 0 SYNCOUNTER 2 IPATT1 DATA 0 PATTERN AREA RES 5 IPATT2 DATA 0 RES 5 PATTX DATA 0 INDICATOR FOR PATTERN LOADED PATTON DATA 0 SWITCH FOR PATTERN RECOGNIZED PATCON DATA 0 PATTERN COUNTER PATSTA DATA BSTART PATTERN POINTER SYNPAT DATA 0 CURRENT SYNC-PATTERN PROCIX DATA 0 PROCEDURE TYPE , 0 = BSC BFULL DATA 0 RES 7 STACKB RES 1 SBUF1 DATA BSTART SBUF2 DATA BSTART PBUFIN DATA BSTART PBUFUT DATA BSTART SBUFIN DATA BSTART BSTART EQU * RES 6000 BEND EQU *-2 EJECT * * *DRIVER ACTIVATION* * *INPUT REQUEST * * DRLGIN DATA LGINAC DWT REFERENCE * * LGINAC SUK A7,1 RF(Z) ENDR ORDER 01: READ GENERAL LIA100 ABL DISIOE ILLEGAL ORDER * EJECT * * * END READ REQUEST? * * ENDR EQU * INH LDKL A5,STACKB LDKL A6,DWL102 LD A8,DWTECB,A6 LD A1,PBUFUT ENDR10 CW A1,PBUFIN RF(E) ENDR20 NO NEW CHARACTEIN BUFFER ADK A1,2 CWK A1,BEND RF(NE) ENDR15 NOT END OF BUFFER LDKL A1,BSTART ENDR15 EQU * LDR* A2,A1 ANKL A2,/FF00 RF(NZ) ENDR30 POLL- ,SYNCOUNTER OR COMMENT LD A2,BFULL SUK A2,1 RF(Z) ENDR50 BUFFER FULL EJECT * * *ORDINARY CHARACTER * ST A1,PBUFUT LDR* A2,A1 FETCH CHARACTER CF A5,STORA STORE IN REQUEST BUFFER SUK A2,/FF RF(E) ENDR17 COMPLETE REQUEST ON MARK HOLD LD A2,ECBEL,A8 CW A2,ECBRL,A8 RB(NE) ENDR10 NOT END OF REQUESTED LINE ENDR17 LDK A1,0 ENDEND CF A15,TENDIO ABL TDISP * * NO ENDING OF REQUEST * ENDR20 EQU * CM BFULL CF A15,SETIME DATA ENDR,5 ABL TDISP EJECT * * ENDR30 EQU * LD A3,ECBEL,A8 RB(NZ) ENDR17 COMPLETE PREVIOUS REQUEST ST A1,PBUFUT POLL/COMMENT LDR* A2,A1 RF(NN) ENDR40 COMMENT * * POLL OR SYN COUNTER * LCR A2,A1 CF A5,STORA LC A2,1,A1 * * COMMENT * ENDR40 EQU * CWK A2,/2FF RF(NE) ENDR46 ADK A1,2 CWK A1,BEND RF(NE) ENDR45 LDKL A1,BSTART ENDR45 ST A1,PBUFUT RB ENDR ENDR46 EQU * CF A5,STORA LDKL A1,/2000 RETURN CODE RB ENDEND * * BUFFER FULL ENDR50 EQU * LD A3,ECBEL,A8 RB(NZ) ENDR17 IM BFULL LDKL A2,/240 RB ENDR40 EJECT * * * STORE CHATACTER IN A2 IN REQUEST BUFFER * * STORA LD A3,ECBBA,A8 AD A3,ECBEL,A8 SCR A2,A3 IM ECBEL,A8 RTN A5 EJECT * * * CONTROL COMMANDS * * DRLGOP DATA LGOPAC DWT REFERENCE * * LGOPAC LDK A5,STB ADKL A5,DWL101 LOAD STACKBASE INH SUK A7,1 RF(Z) OPEN OPEN RECEIVERS SUK A7,1 RF(Z) CLOSE CLOSE RECEIVERS SUK A7,1 RF(Z) RESET RESET BUFFER SUK A7,1 RF(Z) PATTS DEFINE IDLE POLL PATTERN SUK A7,1 RF(Z) DEFSYN DEFINE SYNC-PATTERN ABL DISIOE ILLEGAL ORDER EJECT * * * OPEN RECEIVER * * OPEN EQU * LDK A5,STB LOAD STACK POINTER ADKL A5,DWL102 CF A5,DISCON HALT COMMUNICATION CF A5,STINP1 START CHLC RECEIVER 1 CM PCOUNT RESET COUNTERS CM PATTON CM SYNCO1 CM SYNCO2 LDKL A1,BSTART ST A1,PBUFIN RESET BUFFER ST A1,PBUFUT ST A1,SBUFIN EJECT OP250 LDK A1,0 CF A15,TENDIO * * * OPEN RECEIVER 2 WHEN RECEIVER 1 IS READY * * OP300 EQU * CF A5,STINP2 START CHLC RECEIVER 2 LDKL A7,DWLGI2 LDKL A2,RECEV2 ST A2,STB,A7 LDK A2,STB-4 ADR A2,A7 ST A2,DWTA5,A7 LDKL A6,DWL102 ABL RECEV1 EJECT * * *HALT COMMUNICATION AND DISCONECT MODEM * * DISCON EQU * * CIO A2,0,DALGI1 CIO A2,0,DALGI2 SST A2,DALGI1 RF(NA) CLO050 SST A2,DALGI2 RF(A) CLO060 CLO050 RTN A5 CLO060 EQU * RTN A5 * EJECT * * * CLOSE RECEIVER 1 AND 2 * * CLOSE EQU * CF A5,DISCON DISCONNECT MODEM LDKL A1,/FFFC ANS A1,DWL102+2 INDICATE CLOSED ANS A1,DWLGI2+2 CM PATTX RF RESET EJECT * * *RESET BUFFER * * RESET EQU * LDKL A1,BSTART ST A1,PBUFIN ST A1,PBUFUT ST A1,SBUFIN LDKL A2,/241 COMMENT: BUFFER RESET CF A5,STORE1 LDK A1,/0 ST A1,BFULL RESET,BFULL ST A1,PCOUNT RESET COUNTERS ST A1,SYNCO1 ST A1,SYNCO2 LD A1,SBUFIN ST A1,PBUFIN RESE10 EQU * LDK A1,0 CF A15,TENDIO ABL TDISP EJECT * * * DEFINE IDLE POLL PATTERN * * PATTS EQU * LD A8,DWTECB,A6 GET ECB ADDRESS LD A4,ECBBA,A8 GET BUFFER ADDRESS LDK A1,0 PATT10 EQU * LDR* A2,A4 GET ONE WORD ST A2,IPATT1,A1 STORE ONE WORD ADK A4,2 ADK A1,2 CWK A1,24 RB(NE) PATT10 IM PATTX TRANSFER COMPLETED, INDICATE EVENT RB RESE10 EJECT * * * DEFINE SYNC-PATTERN * * DEFSYN EQU * LD A8,DWTECB,A6 GET ECB ADDRESS LD A4,ECBCW,A8 GET CONTROL WORD ANK A4,/FF * * ASCII OR EBCDIC FLAG * CM TESTX =1 IF ASCII CWK A4,/32 RF(E) CHEBC IM TESTX ASCII CHEBC EQU * ST A4,SYNPAT STORE SYNC-PATTERN LD A4,ECBCW,A8 ANKL A4,/FF00 ST A4,PROCIX RB RESE10 EJECT * * * POWER ON RECOVERY * * DCL1ON EQU * LDK A1,0 ST A1,BFULL LDKL A1,BSTART ST A1,PBUFIN ST A1,PBUFUT ST A1,SBUFIN RTN A15 EJECT * * * RECEIVE MODULE 1 * * RECEV1 EQU * LDK A5,STB ADR A5,A6 LOAD STACKBASE CM SYNCO1 LDKL A1,-3 ST A1,PATCON RESET PATTERN COUNTER LDK A7,0 RESET PATTERN INDEX RF REC100 REC050 CIO A2,0,DALGI1 SST A2,DALGI1 CF A5,STINP1 RESYNC REC100 EQU * CF A5,READ1 GET ONE CHARACTER CWK A2,/FF RB(E) REC050 MARK HOLD REC110 EQU * LDR A3,A2 LD A1,PATTON RF(Z) REC115 CF A5,POLLCO CM PATTON LD A1,SBUFIN ST A1,PBUFIN RF REC116 REC115 EQU * LD A1,SBUFIN ST A1,SBUF1 SAVE CURRENT BUFFER ADDRESS IM PATCON LD A1,PATCON RF(NZ) REC116 CF A5,POLLCO LDKL A1,-1 ST A1,PATCON LD A1,SBUF2 ST A1,PBUFIN REC116 EQU * LD A1,PROCIX RF(Z) REC117 BSC LD A1,SBUFIN RF REC118 REC117 EQU * LD A1,PBUFIN REC118 EQU * ADK A1,2 ST A1,PATSTA LDKL A2,/2FF CF A5,STORE1 RESERVE AREA FOR POLLCOUNTER LDK A2,0 CF A5,STORE1 LDKL A2,/200 CF A5,STORE1 STORE COMMENT 'C1:' LDR A2,A3 LD A1,SYNPAT CWR A2,A1 RF(NE) REC130 NOT SYNC-PATTERN REC120 EQU * IM SYNCO1 INCREASE SYNCOUNTER CF A5,READ1 GET NEXT CHARACTER LD A1,SYNPAT CWR A2,A1 RB(E) REC120 LDR A3,A2 LDKL A2,/202 CF A5,STORE1 STORE COMMENT '*S*' LD A2,SYNCO1 ORKL A2,/8000 CF A5,STORE1 STORE COUNTER CM SYNCO1 LDR A2,A3 REC130 EQU * CF A5,STORE1 STORE CHARACTER LD A1,PATTX RF(NZ) REC150 REC140 EQU * CF A5,READ1 READ NEXT CWK A2,/FF RF(E) REC141 * *ASCII OR EBCDIC * LD A1,TESTX RF(Z) REC145 EBCDIC (G-POLL ??) CWK A2,/7F RF(NE) REC145 * REC141 EQU * CF A5,STORE1 LD A1,SBUF1 ST A1,SBUF2 RB REC050 REC145 EQU * LD A1,SYNPAT CWR A2,A1 RB(E) REC110 SYNC-PATTERN RB REC130 REC150 EQU * CC A2,IPATT1+2,A7 RF(E) REC160 EQUAL TO PATTERN LDK A7,0 RB REC140 REC160 EQU * ADK A7,1 CW A7,IPATT1 RB(NE) REC140 IM PATTON FIRST PATTERN RECOGNIZED LDK A7,0 RB REC140 * * STORE POLLCOUNTER IF NOT ZERO * POLLCO EQU * LD A1,PCOUNT GET COUNTER RF(Z) POLL10 ZERO LD A2,PATSTA LDKL A1,/203 STR A1,A2 ADK A2,2 LD A1,PCOUNT ORKL A1,/8000 STR A1,A2 ST A2,PBUFIN CM PCOUNT POLL10 EQU * RTN A5 EJECT * * * RECEIVE MODULE 2 * * RECEV2 EQU * LDK A5,STB ADR A5,A6 LOAD STACKBASE CM SYNCO2 LDK A7,0 RESET PATTERN INDEX RF REC200 REC195 CIO A2,0,DALGI2 SST A2,DALGI2 CF A5,STINP2 RESYNC REC200 EQU * CF A5,READ2 GET ONE CHARACTER CWK A2,/FF RB(E) REC195 MARK HOLD REC210 EQU * LDR A3,A2 LD A1,PATTON RF(NZ) REC215 CF A5,POLLCO REC214 EQU * LD A1,SBUFIN ST A1,PBUFIN REC215 EQU * LDKL A2,/201 CF A5,STORE2 STORE COMMENT 'C2:' LDR A2,A3 LD A1,SYNPAT CWR A2,A1 RF(NE) REC230 NOT SYNC-PATTERN REC220 EQU * IM SYNCO2 INCREASE SYN COUNTER CF A5,READ2 GET NEXT LD A1,SYNPAT CWR A2,A1 RB(E) REC220 LDR A3,A2 LDKL A2,/202 CF A5,STORE2 STORE COMMENT '*S*' LD A2,SYNCO2 ORKL A2,/8000 CF A5,STORE2 STORE COUNTER CM SYNCO2 LDR A2,A3 REC230 EQU * CF A5,STORE2 STORE CHARACTER CWK A2,/FF RF(E) REC242 LD A1,PATTX RF(NZ) REC250 REC240 EQU * CF A5,READ2 GET NEXT CWK A2,/FF RF(NE) REC245 CF A5,STORE2 REC242 EQU * LD A1,PATTON RF(Z) REC241 CF A5,POLLCO REC241 EQU * LD A1,SBUFIN ST A1,PBUFIN LD A1,PROCIX RF(Z) REC243 BSC LDKL A1,-2 RF REC244 REC243 EQU * LDKL A1,-3 REC244 EQU * ST A1,PATCON RB REC195 REC245 EQU * LD A1,SYNPAT CWR A2,A1 RB(E) REC210 SYNC-PATTERN RB REC230 REC250 EQU * LD A1,PATTON RB(Z) REC240 NO PATTERN SPECIFIED CC A2,IPATT2+2,A7 RF(E) REC260 EQUAL TO PATTERN LDK A7,0 RB REC240 REC260 EQU * ADK A7,1 CW A7,IPATT2 RB(NE) REC240 LDK A7,0 PATTERN RECOGNIZED IM PCOUNT CM PATTON LD A1,PATSTA SUK A1,2 ST A1,SBUFIN RB REC241 EJECT * * * STORE ONE CHARACTER , RECEIVER 1 * * STORE1 EQU * STR A1,A15 STR A2,A15 LD A1,BFULL RF(NZ) STOR20 LD A1,SBUFIN ADK A1,2 CWK A1,BEND RF(NE) STOR10 NOT END OF RING BUFFER LDKL A1,BSTART STOR10 CW A1,PBUFUT RF(E) STOR30 BUFFER FULL STOR15 STR A2,A1 STORE CHAR. ST A1,SBUFIN STOR20 LDR* A2,A15 LDR* A1,A15 RTN A5 * *BUFFER FULL * STOR30 EQU * IM BFULL RB STOR20 EJECT * * * STORE ONE CHARACTER , RECEIVER 2 * * STORE2 EQU * STR A1,A15 STR A2,A15 LD A1,BFULL RF(NZ) STO20 LD A1,SBUFIN ADK A1,2 CWK A1,BEND RF(NE) STO10 NOT END OF RINGBUFFER LDKL A1,BSTART STO10 CW A1,PBUFUT RF(E) STO30 BUFFER FULL STO15 STR A2,A1 STORE ONE CHARACTER ST A1,SBUFIN STO20 LDR* A2,A15 LDR* A1,A15 RTN A5 * * BUFFER FULL * STO30 EQU * IM BFULL RB STO20 EJECT * * * READ ONE CHARACTER , RECEIVER 1 * * READ1 EQU * LDKL A1,DWL102 READ10 EQU * ST A3,DWTSAV,A1 ST A4,DWTSAV+2,A1 ST A5,DWTSAV+4,A1 ST A6,DWTSAV+6,A1 ST A7,DWTSAV+8,A1 ST A8,DWTSAV+10,A1 ABL TDISP * * * READ ONE CHARACTER , RECEIVER 2 * * READ2 EQU * LDKL A1,DWLGI2 RB READ10 EJECT * * * START RECEIVER 1 * * STINP1 EQU * LD A2,SYNPAT GET SYNC-PATTERN ADKL A2,/100 CIO A2,1,DALGI1 RF(NA) STIN10 RTN A5 STIN10 EQU * RTN A5 * * * START RECEIVER 2 * * STINP2 EQU * LD A2,SYNPAT GET SYNC-PATTERN ADKL A2,/100 CIO A2,1,DALGI2 RF(NA) STIN20 RTN A5 STIN20 EQU * RTN A5 EJECT * * * INTERRUPT HANDLER RECEIVER 1 * * IHLGI1 EQU * CF A15,SAVE8 CF A15,LDREG1 RESTORE A3-A8 INR A2,0,DALGI1 GET CHARACTER RF(NA) INSST1 RTN A5 * * * INTERRUPT HANDLER RECEIVER 2 * * IHLGI2 EQU * CF A15,SAVE8 CF A15,LDREG2 RESTORE A3-A8 INR A2,0,DALGI2 GET CHARACTER RF(NA) INSST2 RTN A5 EJECT * * * STATUS INTERRUPT RECEIVER 1 * * INSST1 EQU * SST A2,DALGI1 RF(A) INS10 RTN A5 INS10 LDR A2,A2 RF(Z) INS15 LDK A2,/FF RF INS16 INS15 CF A5,STINP1 LD A2,SYNPAT INS16 RTN A5 EJECT * * * STATUS INTERRUPT RECEIVER 2 * * INSST2 EQU * SST A2,DALGI2 RF(A) INS20 RTN A5 INS20 LDR A2,A2 RF(Z) INS25 CF A5,STINP2 LDK A2,/FF RF INS26 INS25 CF A5,STINP2 LD A2,SYNPAT INS26 RTN A5 EJECT * * * RESTORE REGISTERS A3-A8,RECEIVER 1 * * LDREG1 EQU * LDKL A1,DWL102 LDR10 EQU * LD A3,DWTSAV,A1 LD A4,DWTSAV+2,A1 LD A5,DWTSAV+4,A1 LD A6,DWTSAV+6,A1 LD A7,DWTSAV+8,A1 LD A8,DWTSAV+10,A1 ADKL A15,4 ABR* A15 * * * RESTORE REGISTERS A3-A8 , RECEIVER 2 * * LDREG2 EQU * LDKL A1,DWLGI2 RB LDR10 * * LOG INPUT CHLC 2 * * DWLGI2 DATA /22 DEVICE ADDRESS DATA /8000 STATUS DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRLGIN DRIVER ADDRESS BLOCK DATA 0 TASK TABLE ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE RES 8 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWLGI2 THIS DWT ADDRESS FOR A6 DATA DWL102 CORRESPONDING INPUT DWT IN A7 RES 1 SAVE AREA FOR A8 DATA 0,0,0,0 WORK AREA * EJECT * * * LOG INPUT CHLC 1 * * DWL102 DATA /02 DEVICE ADDRESS DATA /8000 STATUS DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRLGIN DRIVER ADDRESS BLOCK DATA 0 TASK TABLE ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE RES 8 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWL102 CORRESPONDING INPUT DWT IN A7 DATA DWLGI2 THIS DWT ADDRESS FOR A6 RES 1 SAVE AREA FOR A8 DATA 0,0,0,0 WORK AREA * EJECT * * * LOG CONTROL IO * * DWL101 DATA /02 DEVICE ADDRESS DATA /8000 STATUS DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRLGOP DRIVER ADDRESS BLOCK DATA 0 TASK TABLE ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE RES 8 SUBROUTINE STACK RES 3 SAVE AREA FOR A1 - A5 DATA DWL102 INPUT DWT RES 1 SAVE A5 DATA DWL101 THIS DWT ADDRESS FOR A6 DATA DWLGI2 CORRESPONDING DWT IN A7 RES 1 SAVE AREA FOR A8 DATA 0,0,0,0 WORK AREA * * * * END