|
|
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: 49430 (0xc116)
Notes: pts_type(SC)
Names: »DRDC17.SC«
└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
└─⟦this⟧ »TOSSWORK/DRDC17.SC«
IDENT DRDC17 REL 9.1 78-09-15 870103140820 ODD BUFFER ADDRESSES AND CREDIT REL 8.1 78-04-21 ******************************************************* * * PHILIPS ELECTRONIC INDUSTRIES - TERMINAL DIVISION. PEAB-T * * DATA COMMUNICATION DRIVER FOR PTS 6810 * * LINE PROCEDURE: BSC CONTENTION/SIEMENS MSV2 * * * * * ******************************************************* * * STANDARD USE OF REGISTERS : * * A1 WORK REGISTER * A2 I/O AND WORK REGISTER * A3 WORK REGISTER * A4 WORK REGISTER * A5 STACK POINTER * A6 DWT ADDRESS * A7 BCC ACCUMULATOR * A8 ECB ADDRESS * ******************************************************* EJECT * ******************************************************* * * ENTRY POINTS * ******************************************************* * ENTRY DC17ON RECOVERY AT POWER ON * INTERRUPT HANDLERS ENTRY IH1701 LINE 01 INPUT ENTRY IH1702 OUTPUT ENTRY IH1703 LINE 02 INPUT ENTRY IH1704 OUTPUT ENTRY IH1705 LINE 03 INPUT ENTRY IH1706 OUTPUT ENTRY IH1707 LINE 04 INPUT ENTRY IH1708 OUTPUT * DEVICE WORK TABLES ENTRY DW1701 LINE 01 DWT ENTRY DW1702 LINE 02 DWT ENTRY DW1703 LINE 03 DWT ENTRY DW1704 LINE 04 DWT * EJECT * ******************************************************* * * EXTERNAL REFERENCES * ******************************************************* * EXTRN TDISP DISPATCHER ENTRY EXTRN TENDIO REQUEST COMPLETION EXTRN DISIOE REQUEST ERROR EXTRN SETIME SET TIMER CALL ADDRESS EXTRN DWTST DWT STATUS EXTRN DWTECB DWT ECB ADDRESS EXTRN DWTOR DWT ORDER EXTRN ECBBA ECB BUFFER ADDRESS EXTRN ECBRL ECB REQUESTED LENGTH EXTRN ECBEL ECB EFFECTIVE LENGTH EXTRN ECBRC ECB RETURN CODE EXTRN ECBCW ECB CONTROL WORD EXTRN TASCII CODE CONV. TABLE EBCDIC-ASCII EXTRN TEBCDIC CODE CONV. TABLE ASCII-EBCDIC EXTRN INTSAV EXTRN ILLINT ILLEGAL INTERRUPT EJECT * * * PARAMETERS FOR CONDITIONALLY ASSEMBLY * * X:A EQU 1 <=4 NLINE EQU X:A NUMBER OF COMMUNICATION LINES X:B EQU 1 BSC EQU X:B IF = 0. SIEMENS MSV2 PROCEDURE IF = 1. BSC PROCEDURE X:C EQU 1 CODE EQU X:C IF = 0. ASCII CODE IF = 1. EBCDIC CODE (BSC ONLY) X:D EQU 0 TRANSP EQU X:D IF = 1. EBCDIC TRANSPARANCY (BSC ONLY) X:E EQU 10 TBID EQU X:E BID TIME OUT VALUE (X100 MS) X:F EQU 500 LOGG EQU X:F IF NOT ZERO INTERRUPT LOG INCLUDED LOGG = LOG AREA LENGTH PER LINE * DEVICE ADDRESSES X:G EQU /02 DAMI01 EQU X:G INPUT DEV. ADDR. LINE 01 X:H EQU /22 DAMI02 EQU X:H INPUT DEV. ADDR. LINE 02 X:I EQU /04 DAMI03 EQU X:I INPUT DEV. ADDR. LINE 03 X:J EQU /05 DAMI04 EQU X:J INPUT DEV. ADDR. LINE 04 DAMU01 EQU DAMI01+/10 OUTPUT DEV. ADDR. LINE 01 DAMU02 EQU DAMI02+/10 OUTPUT DEV. ADDR. LINE 02 DAMU03 EQU DAMI03+/10 OUTPUT DEV. ADDR. LINE 03 DAMU04 EQU DAMI04+/10 OUTPUT DEV. ADDR. LINE 04 EJECT * ******************************************************* * * SYSTEM PARAMETERS * ******************************************************* * TIMBID EQU TBID BID TIMER:( STANDARD IS 1 S ) TIMTTD EQU 20 TTD TIMER: 2 S TIMENQ EQU 30 ENQ TIMER: 3 S TIMACK EQU 30 ACK TIMER: 3 S TIMWAC EQU 20 WACK TIMER: 2 S TIMCON EQU 20 CONNECT TIMER: 2 S TIMWRT EQU 200 WRITE TIMER: 20 S * * ENQCNT EQU 3 COUNT OUT AFTER 3 ENQ:S WACCNT EQU 15 COUNT OUT AFTER 15 WACK:S RTRCNT EQU 4 COUNT OUT AFTER 4 TRANSMISSIONS * ******************************************************* * * DEVICE WORK AREA EQUATES * ******************************************************* * EJECT * ******************************************************* * * DWT STATUS WORD CONTENTS * ******************************************************* * * DWTST BIT #00 : 0 = DEVICE BUSY * 1 = DEVICE NOT BUSY * BIT #15 : 0 MODEM NOT CONNECTED * : 1 MODEM CONNECTED * EJECT ******************************************************* * * LINE CONTROL CHARACTER EQUATES * ******************************************************* * PAD EQU /FF TRAILING PAD DLE EQU /10 DATA LINK ESCAPE STX EQU /02 START OF TEXT ETX EQU /03 END OF TEXT IFT CODE=0 SYN EQU /16 EOT EQU /04 ENQ EQU /05 ETB EQU /17 END OF TRANSMISSION BLOCK NAK EQU /15 NEGATIVE ACKNOWLEDGEMENT RVI EQU /3C SEC CHAR IN RVI SEQUENCE ACK0 EQU /30 SEC CHAR IN ACK 0 SEQUENCE EXCACK EQU 1 DIFFERENCE BETWEEN ACK0/1 XIF IFT CODE=0 IFT BSC=1 WACK EQU /3B SEC CHAR IN WACK SEQUENCE XIF IFT CODE=0 IFT BSC=0 WACK EQU /BF SEC CHAR IN WABT SEQUENCE SIEMENS MSV2 PROCEDURE XIF IFT CODE=1 EBCDIC CHARACTER EQUATES SYN EQU /32 EOT EQU /37 ENQ EQU /2D ETB EQU /26 NAK EQU /3D WACK EQU /6B RVI EQU /7C ACK0 EQU /70 EXCACK EQU /11 XIF EJECT * ******************************************************* ******************************************************* * * * D R I V E R A C T I V A T I O N * * ******************************************************* ******************************************************* * * DRMAD DATA DRMACT DWT REFERENCE * * DRMACT EQU * LDK A5,DWTSTB SET UP A5 STACK BASE ADR A5,A6 IN CASE OF I/O START LD A1,DWTST,A6 GET CURRENT LINE STATUS SUK A7,/02 RF(Z) RD READ SUK A7,/06-/02 RF(Z) WR WRITE SUK A7,/0A-/06 RF(Z) RD READ ( CREDIT ORDER= RANDOM READ ) SUK A7,/22-/0A RF(Z) SRVI SEND RVI SUK A7,/31-/22 RF(Z) ACCALL ACCEPT CALL SUK A7,/37-/31 ABL(Z) CONNCT CONNECT MODEM SUK A7,/38-/37 ABL(Z) DISCON DISCONNECT LINE ABL DISIOE ILLEGAL ORDER EJECT * * * ORDER 02 : READ * * RD EQU * ANK A1,1 CHECK STATUS RF(NZ) RD400 MODEM CONNECTED RD100 EQU * LDK A1,1 RC BIT 15: MODEM NOT OPERABLE RD200 EQU * CF A15,TENDIO COMPLETE REQUEST RD300 EQU * ABL TDISP GO TO DISPATCHER EJECT * * * START THE READ REQUEST * * RD400 LD A1,ECBCW,A8 GET CONTROL WORD RF(Z) RD420 NO TIME OUT SUPERVISION ST A1,RD410 LDR A1,A6 DWT ADDRESS CF A15,SETIME START REQUEST TIMER DATA RD500 TIME OUT SEQUENCE RD410 DATA 0 TIMER VALUE ST A4,DWTRTI,A6 STORE TIMER POINTER RD420 EQU * LD A1,DWTXST,A6 GET PROCEDURE STATE ABL(Z) BMM IN CONTROL STATE: START RECEIVER LD A1,DWTACK,A6 GET WACK DELAY INDICATOR RB(Z) RD300 NOT IN WACK DELAY - WAIT FOR ENQ OR EOT CF A15,CLPTIM STOP PROCEDURE TIMER CM DWTACK,A6 RESET WACK DELAY INDICATOR CF A5,TRACK SEND ACK 0/1 ABL BMM CONTINUE RECEPTION EJECT * * * READ REQUEST TIME OUT * * RD500 LDR A6,A1 READ REQUEST TIME OUT, RESTORE A6 LDK A1,/40 BIT 9 FOR TIME OUT RB RD200 COMPLETE READ REQUEST EJECT * * * ORDER 06: WRITE * * IF CONTROL CHARACTER = 0 NOT, TEXT IS ENDED BY ETB * IF CONTROL CHARACTER = 0 , TEXT IS ENDED BY ETX * WR EQU * ANK A1,1 CHECK STATUS RB(Z) RD100 MODEM NOT CONNECTED LD A1,DWTXST,A6 GET PROCEDURE STATE RF(Z) BID CONTROL STATE: BID SUK A1,1 RF(Z) WR100 TRANSMIT MODE LDK A1,/10 RECEIVE MODE: SEQUENCE ERROR BIT 11 RB RD200 COMPLETE REQUEST * * * SEND BID SEQUENCE * * BID LDK A1,1 ST A1,DWTXST,A6 INDICATE TRANSMIT MODE LDK A1,6 ST A1,DWTACK,A6 AND BID SEQUENCE CM DWTENQ,A6 RESET ENQ COUNTER LDK A1,ACK0 ST A1,DWTRSN,A6 INDICATE ACK 0 EXPECTED ABL TRENQB SEND ENQ TO BID EJECT * * * START WRITE IF POSSIBLE * * WR100 LD A1,DWTACK,A6 GET RESPONSE STATE SUK A1,2 RB(NZ) RD300 NOT IN TTD SEQUENCE WR110 CM DWTRTR,A6 RSET RETRANSMIT COUNTER CM DWTENQ,A6 RESET ENQ COUNTER CM DWTWAC,A6 RESET WACK COUNTER CF A15,CLPTIM STOP PROCEDURE TIMER LDK A1,EXCACK XRS A1,DWTRSN,A6 CHANGE EXPECTED ACK ABL TRTEXT SEND TEXT * * EJECT * * * ORDER /22: SEND RVI * * RVI IS SENT INSTEAD OF ACK0/1 AS AFFIRMATIVE * ACKNOWLEDGEMENT TO PREVIOUS TEXT RECEPTION * * SRVI ANK A1,1 CHECK STATUS RB(Z) RD100 MODEM NOT CONNECTED LD A1,ECBCW,A8 GET CONTROL WORD RF(Z) RVI120 NO TIME OUT SUPERVISION ST A1,RVI100 LDR A1,A6 DWT ADDRESS CF A15,SETIME START REQUEST TIMER DATA RVI400 RVI100 DATA 0 TIMER VALUE ST A4,DWTRTI,A6 STORE TIMER POINTER RVI120 LD A1,DWTXST,A6 GET PROCEDURE STATE SUK A1,2 RF(Z) RVI200 RECEIVE MODE. ETX NOT RECEIVED LDK A1,/10 SEQUENCE ERROR. BIT 11 RB RD200 COMPLETE REQUEST RVI200 LD A1,DWTACK,A6 GET WACK DELAY INDICATOR RB(Z) RD300 NOT IN WACK DELAY - WAIT FOR ENQ OR EOT CF A15,CLPTIM STOP PROCEDURE TIMER CM DWTACK,A6 RESET WACK DELAY INDICATOR RVI300 CF A5,TRRVI SEND RVI CF A15,CLRTIM RESET REQUEST TIMER LDK A1,0 SET RVI SENT. RC= 0 CF A15,TENDIO COMPLETE REQUEST ABL BMM CONTINUE RECEPTION * * TIME OUT * RVI400 LDR A6,A1 RVI REQUEST TIME OUT,RESTORE A6 LDK A1,/40 TIME OUT, RC BIT 9 RB RD200 COMPLETE REQUEST EJECT * * * ACCEPT A CALL * * ACCALL EQU * ANK A1,1 LDK A1,/10 RC BIT 11 FOR SEQUENCE ERROR RB(NZ) RD200 MODEM ALREADY CONNECTED LD A1,ECBCW,A8 GET CONTROL WORD RF(Z) ACC110 NO TIME OUT SUPERVISION ST A1,ACC100 TIMER VALUE LDR A1,A6 PASS DWT ADDRESS CF A15,SETIME START REQUEST TIMER DATA ACC200 TIME OUT SEQUENCE ACC100 DATA 0 TIMER VALUE ST A4,DWTRTI,A6 SAVE TIMER POINTER ACC110 INH LDK A2,0 EX DWTCSI,A6 START CHLC TO ACCEPT CALLING INDICATOR ABL(A) RD300 ACCEPTED: GO TO DISPATCHER CF A15,CLRTIM STOP REQ TIMER ACCNOP ABL RD100 COMPL REQ WITH NOT OPERABLE * * TIME OUT * ACC200 LDR A6,A1 DWT ADDRESS LDK A5,DWTSTB SET UP A5 STACK BASE ADR A5,A6 CF A5,HALTIN STOP CHLC LDK A1,/40 INDICATE TIME OUT, RC BIT 9 ABL RD200 COMPLETE REQUEST EJECT * * * CONNECT MODEM TO LINE * * CONNCT EQU * LDR A1,A6 CF A15,SETIME START TIMER DATA CON100,TIMCON ST A4,DWTPTI,A6 SAVE TIMER POINTER LDKL A2,/100+SYN SPECIFY SYN PATTERN EX DWTCSI,A6 CIO START CONNECT MODEM RF(A) CON010 CF A15,CLPTIM RB ACCNOP CON010 CF A5,HALTIN STOP RECEIVER, NO INTERRUPTS ABL RD300 GO TO DISPATCHER CON100 LDR A6,A1 TIME OUT LDK A5,DWTSTB LOAD A5 STACK BASE ADR A5,A6 CF A5,HALTIN HALT CHLC INPUT ANK A2,1 RF(Z) CON110 MODEM CONNECTED LDK A1,1 MODEM NOT CONNECTED RF CON120 COMPLETE REQUEST CON110 LDK A1,1 ORS A1,DWTST,A6 INDICATE CONNECTED IN DWT CM DWTXST,A6 CONTROL MODE LDK A1,0 RETURN CODE = 0 CON120 EQU * ABL RD200 COMPLETE REQUEST EJECT * * * DISCONNECT MODEM FROM LINE * * DISCON CF A5,DIS100 DISCONNECT LDK A1,0 RETURN CODE ZERO ABL RD200 COMPLETE REQUEST * * * DISCONNECT SEQUENCE * * DIS100 CF A5,HALTIN LDK A2,0 EX DWTCSI,A6 CIO START DISCONNECT EX DWTCHI,A6 HALT CHLC EX DWTSSI,A6 SST LDKL A1,/FFFE ANS A1,DWTST,A6 RESET MODEM OPERABLE BIT RTN A5 * * EJECT * ******************************************************* ******************************************************* * * * R E C O V E R Y A T P O W E R O N * * ******************************************************* ******************************************************* * DRDCON EQU * DC17ON EQU * LDK A2,0 RESET INDEX DRM100 ADK A2,2 CW A2,DCTAB RF(E) DRM150 ALL LINES PROCESSED LD A6,DCTAB,A2 GET DWT ADDRESS CM DWTXST,A6 INDICATE CONTROL STATE CF A15,CLPTIM STOP PROCEDURE TIMER IF RUNNING DRM110 LDKL A1,/FFFE ANS A1,DWTST,A6 RESET MODEM READY BIT LD A1,DWTST,A6 RB(N) DRM100 NO REQUEST CF A15,CLRTIM STOP REQUEST TIMER IF RUNNING LDK A1,1 RETURN CODE BIT 15: MODEM NOT READY CF A15,TENDIO COMPLETE REQUEST RB DRM100 NEXT LINE DRM150 RTN A15 EJECT * ******************************************************* ******************************************************* * * * P R O C E D U R E C O N T R O L P A R T * * ******************************************************* ******************************************************* * ******************************************************* * * BMM : BASIC MASTER MODE * ******************************************************* * BMM EQU * LDK A5,DWTSTB ADR A5,A6 LOAD A5 STACK BASE CF A5,HALTIN HALT INPUT IF ANY LDKL A2,/100+SYN SPECIFY SYN PATTERN AND CONNECT MODEM EX DWTCSI,A6 START RECEIVER BMM100 EQU * CF A5,READP READ CHAR RF(NZ) BMM910 PARITY ERROR LD A1,DWTXST,A6 GET OPERATION MODE SUK A1,1 RF(Z) TRANSM TRANSMIT MODE/MASTER MODE ABL(P) RECEIV RECEIVE MODE/SLAVE MODE EJECT * * CONTROL STATE * CWK A2,ENQ RF(NE) BMM900 NOT ENQ BMM150 LD A1,DWTST,A6 GET REQUEST STATUS RB(N) BMM NO REQUEST LD A1,DWTOR,A6 GET ORDER SUK A1,2 RB(P) BMM NO READ REQUEST LDK A1,2 ST A1,DWTXST,A6 INDICATE RECEIVE MODE CM DWTACK,A6 RESET WACK DELAY INDICATOR CF A5,TRACK0 SEND ACK0 RB BMM RECEIVE TEXT EJECT * * CHARACTER NOT RECOGNIZED * BMM900 CWK A2,EOT RF(NE) BMM910 NOT EOT CM DWTXST,A6 EOT: RESET TO CONTROL STATE CF A15,CLPTIM STOP PROCEDURE TIMER LDK A1,/80 COMPLETE REQUEST, RC BIT 8 CF A15,TENDIO RB BMM BMM910 ANK A2,/7F SUK A2,/7F RB(Z) BMM RESYNCHRONIZE ON /FF RB BMM100 READ NEXT CHAR EJECT * * * TRANSMIT MODE, RECEPTION PART * * TRANSM EQU * LD A1,DWTACK,A6 GET TRANSMIT STATUS ABI TRFUNC,A1 SELECT FUNCTION * * TRFUNC DATA TR200 0:ACK EXPECTED DATA TR400 2: TTD SEQUENCE DATA TR420 4: WACK SEQUENCE DATA TR100 6: BID SEQUENCE DATA TR200 8: ACK EXPECTED AFTER TRANSMIT TIME OUT EJECT * * * BID SEQUENCE * * TR100 EQU * CWK A2,ENQ RF(E) TR140 ENQ RECEIVED CWK A2,DLE RB(NE) BMM900 NOT ACK OR WACK CF A5,READP READ SECOND CHAR RB(NZ) BMM910 PARITY ERROR CWK A2,ACK0 RF(NE) TR120 NOT PROPER ACK CF A15,CLPTIM ACK 0 : STOP PROCEDURE TIMER ABL WR110 START TRANSMISSION * NOT ACK RECEIVED TR120 CWK A2,WACK RB(NE) BMM900 NOT WACK CF A15,CLPTIM STOP PROCEDURE TIMER ABL TRENQB BID AGAIN * ENQ RECEIVED TR140 LDK A1,/10 ENQ RECEIVED CF A15,TENDIO COMPLETE WRITE, RC BIT 11 RB BMM150 BID ACCEPTED EJECT * * * TRANSMIT MODE: ACK EXPECTED * * TR200 CWK A2,DLE RF(E) TR250 DLE RECEIVED CWK A2,NAK RB(NE) BMM900 NOT ACK, WACK , RVI OR NAK CF A15,CLPTIM NAK: STOP PROCEDURE TIMER ABL TRTEXT RETRANSMIT TEXT TR210 LDK A4,2 THROUGHPUT ERROR, RC BIT 14 TR220 EQU * CF A5,TREOT SEND EOT CM DWTXST,A6 INDICATE CONTROL STATE LDR A1,A4 RETURN CODE CF A15,TENDIO COMPLETE REQUEST ABL TDISP GO TO DISPATCHER * DLE RECEIVED TR250 CF A5,READP RB(NZ) BMM910 PARITY ERROR CW A2,DWTRSN,A6 CHECK ACK RF(NE) TR280 NOT PROPER ACK CF A15,CLPTIM STOP PROCEDURE TIMER LDK A4,0 RETURN CODE LD A8,DWTECB,A6 GET ECB ADDRESS LD A1,ECBBA,A8 GET BUFFER ADDRESS LC A1,1,A1 GET CONTROL CHARACTER ANK A1,/FF RB(Z) TR220 ETX SENT: SEND EOT AND COMPLETE REQUEST LDK A1,0 PROPER ACK CF A15,TENDIO COMPLETE WRITE REQUEST, RC = 0 TR255 CF A5,HALTIN STOP RECEIVER TR260 LDR A1,A6 DWT ADDRESS CF A15,SETIME START TIMER DATA TRTTD,TIMTTD ST A4,DWTPTI,A6 SAVE TIMER POINTER LDK A1,2 ST A1,DWTACK,A6 INDICATE TTD SEQUENCE ABL TDISP GO TO DISPATCHER * NOT ACK RECEIVED TR280 CWK A2,RVI RF(E) TR320 RVI RECEIVED CWK A2,WACK RF(E) TR340 WACK RECEIVED TR285 EQU * XRK A2,EXCACK CHANGE ACK TYPE CW A2,DWTRSN,A6 RB(NE) BMM900 NO ACK AT ALL TR290 EQU * CF A15,CLPTIM STOP PROCEDURE TIMER LD A1,DWTACK,A6 ACK AFTER TRANSMIT TIME OUT? RF(Z) TR295 NO, IMPROPER ACK - SEND ENQ ABL TRTEXT YES, RETRANSMIT TEXT TR295 EQU * ABL TRENQ IMPROPER ACK: SEND ENQ * RVI RECEIVED TR320 CF A15,CLPTIM STOP PROCEDURE TIMER LDK A1,/20 INDICATE RVI RECEIVED CF A15,TENDIO COMPLETE WRITE REQUEST, RC BIT 10 RB TR255 GO TO TTD SEQUENCE * WACK RECEIVED TR340 CF A15,CLPTIM STOP PROCEDURE TIMER LDK A4,0 RETURN CODE LD A8,DWTECB,A6 GET ECB ADDRESS LD A1,ECBBA,A8 GET BUFFER ADDRESS LC A1,1,A1 GET CONTROL CHARACTER ANK A1,/FF RB(Z) TR220 ETX SENT: SEND EOT AND COMPLETE REQUEST LDK A1,0 WACK RECEIVED: OK CF A15,TENDIO COMPLETE REQUEST, RC = 0 LDK A1,4 ST A1,DWTACK,A6 INDICATE WACK SEQUENCE ABL TRENQ SEND ENQ EJECT * * * TTD SEQUENCE * * TR400 EQU * CWK A2,NAK ABL(NE) BMM900 NOT NAK CF A15,CLPTIM STOP PROCEDURE TIMER TR410 EQU * LD A1,DWTST,A6 CHECK IF WRITE REQUEST RB(N) TR260 NO REQUEST LD A1,DWTOR,A6 GET ORDER SUK A1,6 ABL(Z) WR110 WRITE REQUEST RB TR260 NO WRITE REQUEST EJECT * * * WACK SEQUENCE * * TR420 EQU * CWK A2,DLE ABL(NE) BMM900 NOT DLE CF A5,READP READ CHAR AFTER DLE ABL(NZ) BMM910 PARITY ERROR CWK A2,WACK RF(NE) TR440 NOT WACK CF A15,CLPTIM WACK: STOP PROCEDURE TIMER IM DWTWAC,A6 COUNT WACK:S LD A1,DWTWAC,A6 CWK A1,WACCNT RB(L) TR290 NOT COUNT OUT: SEND ENQ LDKL A4,/0800 COUNT OUT, RC BIT 04 RB TR220 SEND EOT AND COMPLETE REQUEST TR440 CW A2,DWTRSN,A6 RB(NE) TR285 IMPROPER ACK CF A15,CLPTIM EXPECTED ACK: STOP TIMER LDK A1,2 ST A1,DWTACK,A6 INDICATE NOW IN TTD SEQUENCE RB TR410 CHECK IF WRITE IS TO BE DONE EJECT * * * RECEIVE MODE * * RECEIV EQU * CWK A2,ENQ ABL(E) REC400 ENQ RECEIVED: SEND LAST RESPONSE IFT TRANSP=1 CWK A2,DLE ABL(NE) BMM900 NOT DLE CF A5,READP READ CHAR XIF CWK A2,STX ABL(NE) BMM900 NOT STX LDK A7,0 STX: RESET BCC LDK A3,0 LD A8,DWTECB,A6 GET ECB ADDRESS LD A4,ECBBA,A8 GET BUFFER ADDRESS REC100 CF A5,READP READ CHAR RF(NZ) REC200 PARITY ERROR IFT TRANSP=1 CWK A2,DLE RF(NE) REC120 TRANSPARANT TEXT CF A5,READP READ CONTROL CHAR. - DLE PRECEEDING XIF CWK A2,SYN RB(E) REC100 DELETE SYN CWK A2,ENQ RF(E) REC220 TTD RECEIVED: SEND NAK IFT TRANSP=1 CWK A2,DLE RF(E) REC120 2:ND DLE RECEIVED XIF LD A1,DWTST,A6 RF(N) REC250 NO READ REQUEST LD A1,DWTOR,A6 GET ORDER SUK A1,2 RF(P) REC250 NO READ REQUEST IFT CODE=0 XRR A7,A2 ACCUMULATE BCC XIF IFT CODE=1 CF A5,CRCCAL ACCUMULATE CRC XIF CWK A2,ETB RF(E) REC150 ETB RECEIVED CWK A2,ETX RF(E) REC160 ETX RECEIVED IFT TRANSP=1 RF REC200 ILLEGAL CHAR SEND NAK REC120 EQU * LD A1,DWTST,A6 RF(N) REC250 NO READ REQUEST CF A5,CRCCAL ACCUMULATE CRC XIF CW A3,ECBRL,A8 CHECK LENGTH RF(NL) REC250 BUFFER OVERFLOW IFT CODE=1 LC A2,TASCII,A2 CONVERT FROM EBCDIC TO ASCII XIF SCR A2,A4 STORE CHAR IN BUFFER ADK A3,1 INCR COUNTER ADK A4,1 INCR POINTER RB REC100 NEXT CHAR * ETB RECEIVED REC150 LDKL A4,/100 PRESET RC FOR ETB, RC BIT 7 LDK A1,2 ST A1,DWTXST,A6 RESET RECEIVE MODE RF REC170 * ETX RECEIVED REC160 LDK A4,0 PRESET RETURN CODE FOR ETX, RC = 0 LDK A1,3 ST A1,DWTXST,A6 SET RECEIVE MODE. ETX RECEIVED REC170 EQU * IFT CODE=0 CF A5,READP READ BCC RF(NZ) REC220 PARITY ERROR XRR A7,A2 ANK A7,/7F MASK PARITY BIT XIF IFT CODE=1 CF A5,RDCRC READ AND CHECK CRC XIF RF(NZ) REC220 BCC ERROR ST A3,ECBEL,A8 STORE EFFECTIVE LENGTH CF A15,CLRTIM STOP REQUEST TIMER IF RUNNING LDR A1,A4 STORE RETURN CODE CF A15,TENDIO COMPLETE READ REQUEST LDK A1,EXCACK XRS A1,DWTRSN,A6 CHANGE ACK TO BE SENT REC190 EQU * LDR A4,A4 RF(Z) REC410 ETX RECEIVED: SEND ALWAYS ACK CF A5,HALTIN STOP RECEIVER LDR A1,A6 DWT ADDRESS CF A15,SETIME START WACK TIMER DATA REC500,TIMWAC ST A4,DWTPTI,A6 SAVE TIMER POINTER LDK A1,1 ST A1,DWTACK,A6 SET WACK DELAY INDICATOR ABL TDISP GO TO DISPATCHER REC200 CF A5,READP PARITY ERROR RECEIVED RB(NZ) REC200 PARITY ERROR IFT TRANSP=1 CWK A2,DLE RB(NE) REC200 NOT DLE CF A5,READ XIF CWK A2,ETB RF(E) REC210 ETB RECEIVED CWK A2,ETX RB(NE) REC200 NOT ETB/ETX REC210 CF A5,READ READ BCC REC220 CF A5,TRNAK SEND NAK ABL BMM REC250 CF A5,READP NO REQUEST/BUFFER OVERFLOW RB(NZ) REC250 PARITY ERROR IFT TRANSP=1 CWK A2,DLE RB(NE) REC250 NOT DLE CF A5,READ XIF CWK A2,ETB RF(E) REC260 ETB RECEIVED CWK A2,ETX RB(NE) REC250 NOT ETB/ETX REC260 CF A5,READ READ BCC LDK A4,8 RETURN CODE BIT 12 ABL TR220 SEND EOT AND COMPLETE REQUEST EJECT * * * ENQ RECEIVED: REPEAT LAST ACKNOWLEDGMENT * * REC400 LD A1,DWTLRS,A6 GET LAST RESPONSE CWK A1,NAK RB(E) REC220 NAK SENT CWK A1,RVI RF(E) REC420 RVI SENT CWK A1,WACK RF(NE) REC410 WACK NOT SENT:= ACK 0/1 LD A1,DWTST,A6 RB(N) REC190 NOT YET ANY REQUEST LD A1,DWTOR,A6 GET ORDER SUK A1,2 RF(Z) REC410 READ REQUEST SUK A1,/22-/02 ABL(Z) RVI300 SEND RVI AND COMPLETE REQUEST RB REC190 REC410 EQU * CF A5,TRACK SEND ACK 0/1 ABL BMM WAIT FOR NEXT MESSAGE REC420 EQU * CF A5,TRRVI SEND RVI ABL BMM CONTINUE RECEPTION * * EJECT * * * WACK DELAY TIME OUT * * REC500 EQU * LDR A6,A1 RESTORE DWT ADDRESS LDK A5,DWTSTB LOAD A5 STACK BASE ADR A5,A6 CM DWTACK,A6 RESET WACK DELAY INDICATOR CF A5,TRWACK SEND WACK ABL BMM WAIT FOR ENQ EJECT * * * TRANSMIT TEXT BLOCK * * TRTEXT EQU * IM DWTRTR,A6 COUNT RETRANSMISSIONS LD A1,DWTRTR,A6 CWK A1,RTRCNT ABL(G) TR210 COUNT OUT, SEND EOT CF A5,WRSYN START TRANSMITTER AND SEND SYN IFT TRANSP=1 LDK A2,DLE CF A5,WRBCCN SEND ONE DLE XIF LDK A2,STX CF A5,WRITEP SEND STX LDK A7,0 RESET BCC LD A8,DWTECB,A6 GET ECB ADDRESS LDK A3,0 RESET CHAR COUNTER LD A4,ECBBA,A8 LOAD BUFFER ADDRESS ADK A4,2 SKIP FIRST WORD IN BUFFER LD A3,ECBRL,A8 GET REQUESTED LENGTH SUK A3,1 SKIP FIRST BYTE TRT100 EQU * SUK A3,1 DECREMENT LENGTH RF(NP) TRT120 ALL TRANSMITTED LCR A2,A4 GET CHAR FROM BUFFER ADK A4,1 INCR POINTER ANK A2,/7F MASK TO 7 BITS IFT TRANSP=0 CWK A2,ETB RF(G) TRT110 NOT ETB IN TEXT CWK A2,SYN RF(NL) TRT105 REPLACE SYN BY SPACE CWK A2,/07 CHECK CODE RF(NL) TRT110 CODE /07 OR GREATER IS OK TRT105 EQU * LDK A2,/20 REPLACE INVALID CODE BY SPACE XIF TRT110 EQU * IFT CODE=1 LC A2,TEBCDI,A2 CONVERT FROM ASCII TO EBCDIC XIF IFT TRANSP=1 CWK A2,DLE RF(NE) TRT115 NOT DLE CF A5,WRBCCN INSERT ONE DLE. NO CRC-CAL LDK A2,DLE XIF TRT115 EQU * CF A5,WRITEP SEND CHAR RB TRT100 NEXT CHAR TRT120 EQU * IFT TRANSP=1 LDK A2,DLE CF A5,WRBCCN SEND ONE DLE. NO CRC-CAL XIF LD A8,DWTECB,A6 GET ECB ADDRESS LD A1,ECBBA,A8 GET BUFFER ADDRESS LC A1,1,A1 GET CONTROL CHARACTER LDK A2,ETX ANK A1,/FF RF(Z) TRT130 WRITE LAST LDK A2,ETB TRT130 CF A5,WRITEP SEND ETB/ETX IFT CODE=1 LDR A3,A7 SAVE CRC LDR A2,A7 ANK A2,/FF CF A5,WRITE SEND 1ST CRC CHARACTER ECR A7,A3 PREPARE FOR SENDING 2ND CRC CHAR XIF LDR A2,A7 ANK A2,/FF CF A5,OUTEND TERMINATE OUTPUT LDR A1,A6 DWT ADDRESS CF A15,SETIME START ACK TIMER DATA TRT200,TIMACK ST A4,DWTPTI,A6 SAVE TIMER POINTER CM DWTACK,A6 INDICATE ACK EXPECTED ABL BMM EJECT * * * TIME OUT ON TEXT TRANSMISSION * * TRT200 LDR A6,A1 RESTORE DWT ADDRESS LDK A5,DWTSTB LOAD A5 STACK BASE ADR A5,A6 LDK A1,8 ST A1,DWTACK,A6 INDICATE TRANSMIT TIME OUT ABL TRENQ SEND ENQ EJECT * * * SEND ENQ IN BID SEQUENCE * * TRENQB CF A5,WRENQ SEND ENQ LDR A1,A6 DWT ADDRESS CF A15,SETIME START BID TIMER DATA TRE200,TIMBID TRE100 ST A4,DWTPTI,A6 SAVE TIMER POINTER ABL BMM * * * BID TIME OUT * * TRE200 LDR A6,A1 RESTORE DWT ADDRESS LDK A5,DWTSTB LOAD A5 STACK BASE ADR A5,A6 LD A1,DWTENQ,A6 CWK A1,ENQCNT RB(L) TRENQB NOT COUNT OUT: BID AGAIN TRE210 EQU * LDK A4,/40 COUNT OUT, RC BIT 09 ABL TR220 SEND EOT EJECT * * * SEND PROCEDURE ENQ * * TRENQ EQU * LD A1,DWTENQ,A6 GET ENQ COUNTER CWK A1,ENQCNT RB(G) TRE210 ENQ COUNT OUT: SEND EOT CF A5,WRENQ SEND ENQ LDR A1,A6 DWT ADDRESS CF A15,SETIME START TIMER DATA TRE300,TIMENQ RB TRE100 * * * TIME OUT ON PROCEDURE ENQ * * TRE300 LDR A6,A1 RESTORE DWT ADDRESS LDK A5,DWTSTB LOAD A5 STACK BASE ADR A5,A6 RB TRENQ SEND ENQ AGAIN * * EJECT * * * TRANSMIT TTD * * TRTTD EQU * LDR A6,A1 RESTORE DWT ADDRESS LDK A5,DWTSTB LOAD A5 STACK BASE ADR A5,A6 LDK A1,3 ST A1,DWTACK,A6 RESPONSE STATE = 3 DURING TTD - NAK CF A5,WRSYN START TRANSMITTER AND SEND SYN IFT TRANSP=1 LDK A2,DLE CF A5,WRBCCN SEND ONE DLE XIF LDK A2,STX CF A5,WRITEP SEND STX IFT TRANSP=1 LDK A2,DLE CF A5,WRBCCN SEND ONE DLE XIF CF A5,WRENQ5 SEND ENQ LDR A1,A6 DWT ADDRESS CF A15,SETIME START TIMER DATA TRT500,TIMENQ ST A4,DWTPTI,A6 SAVE TIMER POINTER ABL BMM * * * NO RESPONSE ON TTD SEQUENCE * * TRT500 LDR A6,A1 RESTORE DWT ADDRESS LDK A5,DWTSTBOAD A5 STACK BASE ADR A5,A6 ABL TR410 CHECK IF WRITE REQUEST PRESENT EJECT * * * WRSYN : START TRANSMITTER IF 2-WIRE LINE * AND SEND SYN * * WRSYN EQU * CF A5,HALTIN HALT RECEIVER IF ACTIVE EX DWTCSU,A6 START TRANSMITTER LDR A1,A6 DWT ADDRESS STR A4,A15 SAVE A4 ON STACK CF A15,SETIME START MODEM TRANSMIT TIMER DATA WROUT,TIMWRT ST A4,DWTMTI,A6 SAVE TIMWR POINTER LDR* A4,A15 GET A4 FROM STACK CF A5,READ WAIT FOR INTERRUPT LDK A2,SYN CF A5,WRITE SEND SYN LDK A2,SYN CF A5,WRITE SEND SYN LDK A2,SYN CF A5,WRITE SEND SYN RTN A5 EJECT * * * WROUT: TRANSMIT TIME OUT * = MODEM ERROR * * WROUT EQU * LDR A6,A1 RESTORE DWT ADDRESS LDK A5,DWTSTB LOAD A5 STACK BASE ADR A5,A6 CF A15,CLPTIM STOP PROCEDURE TIMER EX DWTCHU,A6 HALT TRANSMITTER EX DWTSSU,A6 ABL SST150 COMPLETE REQUEST. MODEM NOT OPERABLE EJECT * * * TREOT : SEND SINGLE EOT * * TREOT EQU * CF A5,WRSYN START OUTPUT AND SEND SYN LDK A2,EOT OUTEND EQU * CF A15,CLMTIM STOP MODEM TRANSMIT TIMER CF A5,WRITEP SEND CHARACTER LDK A2,PAD CF A5,WRITE SEND PAD LDK A2,PAD CF A5,WRITE EX DWTCHU,A6 HALT OUTPUT EX DWTSSU,A6 SST OUTPUT RTN A5 * * * WRENQ : SEND SINGLE ENQ * * WRENQ EQU * CF A5,WRSYN START OUTPUT AND SEND SYN WRENQ5 EQU * IM DWTENQ,A6 COUNT ENQ:S SENT LDK A2,ENQ RB OUTEND EJECT * * * TRNAK : SEND SINGLE NAK * * TRNAK EQU * CF A5,WRSYN START OUTPUT AND SEND SYN LDK A2,NAK ST A2,DWTLRS,A6 SAVE LAST RESPONSE RB OUTEND * EJECT * * TRACK : SEND ACK-0 OR ACK-1 * * TRACK EQU * LD A3,DWTRSN,A6 GET PROPER ACK TO BE SENT TRA100 EQU * CF A5,WRSYN START OUTPUT AND SEND SYN LDK A2,DLE CF A5,WRITE SEND DLE LDR A2,A3 ST A2,DWTLRS,A6 SAVE LAST RESPONSE RB OUTEND * * * TRWACK : SEND WACK * * TRWACK EQU * LDK A3,WACK RB TRA100 EJECT * * * TRACK0 : SEND ACK 0 * * TRACK0 LDK A3,ACK0 ST A3,DWTRSN,A6 STORE PROPER ACK RB TRA100 * * * TRRVI : SEND RVI * * TRRVI LDK A3,RVI RB TRA100 EJECT * * * HALTIN : HALT INPUT CHANNEL * * HALTIN EX DWTCHI,A6 HALT INPUT EX DWTSSI,A6 SST INPUT RTN A5 * * * CLEAR PROCEDURE TIMER IF RUNNING * * CLPTIM LD A1,DWTPTI,A6 GET TIMER POINTER RF(Z) CLPRTN NO TIMER RUNNING CM* DWTPTI,A6 STOP TIMER CM DWTPTI,A6 CLEAR TIMER POINTER CLPRTN ADKL A15,4 ABR* A15 RETURN * * * CLEAR REQUEST TIMER IF RUNNING * * CLRTIM LD A1,DWTRTI,A6 GET TIMER POINTER RB(Z) CLPRTN NO TIMER RUNNING CM* DWTRTI,A6 STOP TIMER CM DWTRTI,A6 CLEAR TIMER POINTER RB CLPRTN * EJECT * * * CLEAR MODEM TRANSMIT TIMER IF RUNNING * * CLMTIM EQU * LD A1,DWTMTI,A6 GET TIMER POINTER RB(Z) CLPRTN NO TIMER RUNNING CM* DWTMTI,A6 STOP TIMER CM DWTMTI,A6 CLEAR TIMER POINTER RB CLPRTN EJECT * * * SST SEQUENCE FOR INPUT CHANNEL * * SSTIN EQU * EX DWTSSI,A6 SST INSTRUCTION **LOGG IFF LOGG=0 LD A5,DWTSAV+4,A6 CF A5,LOGSST LOGG INPUT SST XIF LDR A1,A2 ANK A1,1 ABL(Z) BMM MODEM OPERABLE ANK A2,/40 RF(Z) SST150 NOT CALLING INDICATOR LD A1,DWTST,A6 CALLING INDICATOR ABL(N) BMM NO REQUEST LD A1,DWTOR,A6 GET ORDER SUK A1,/31 ABL(NZ) BMM NOT ACCEPT CALL REQUEST CF A15,CLRTIM STOP REQUEST TIMER LDK A1,0 RETURN CODE ZERO ABL RD200 COMPLETE REQUEST SST150 LDKL A1,/FFFE MODEM NOT OPERABLE ANS A1,DWTST,A6 RESET MODEM OPERABLE BIT CF A15,CLRTIM STOP REQUEST TIMER ABL RD100 COMPLETE REQUEST AND GO TO DISPATCHER EJECT * * * WRITEP : GENERATE PARITY AND SEND CHARACTER * * WRITEP EQU * IFT CODE=0 ECR A1,A2 ORK A2,/80 WRP100 EQU * SLL A1,1 RB(P) WRP100 RF(Z) WRP110 XRK A2,/80 RB WRP100 WRP110 EQU * XIF RF WRITE * * * WRITE : TRANSMIT ONE CHARACTER * * WRITE EQU * IFT CODE=0 XRR A7,A2 ACCUMULATE BCC XIF IFT CODE=1 CF A5,CRCCAL ACCUMULATE CRC XIF WRBCCN EQU * EX DWTOTR,A6 PERFORM OTR INSTRUCTION **LOGG IFF LOGG=0 RF(NA) WRIT10 CF A5,LOGOUT LOGG OUTPUT CHARACTER XIF WRIT10 EQU * RF READ SAVE REGISTERS EJECT * * * READP : READ CHARACTER AND CHECK PARITY * ON PARITY ERROR CR NOT ZERO * * READP EQU * CF A5,READ READ CHARACTER IFT CODE=0 ECR A3,A2 LDR A1,A2 REP10 EQU * SLL A3,1 RF(Z) REP20 RB(NN) REP10 XRK A1,/80 RB REP10 REP20 EQU * LD A3,DWTSAV,A6 RESTORE A3 XRK A1,/80 ANK A2,/7F ADK A5,4 ANK A1,/80 XIF IFT CODE=1 ADK A5,4 ANK A1,0 SET CR TO ZERO XIF ABR* A5 EJECT * * READ : SAVE REGISTER A3-A5,A7,A8 * GO TO DISPATCHER * READ EQU * ST A3,DWTSAV,A6 ST A4,DWTSAV+2,A6 ST A5,DWTSAV+4,A6 ST A7,DWTSAV+6,A6 ST A8,DWTSAV+8,A6 ABL TDISP GO TO DISPATCHER IFT CODE=1 EJECT * * * CALCULATION OF CRC * * A2 = CHARACTER * A7 = ACCUMULATED CRC * * CRCCAL EQU * ST A1,CRCSAV ST A2,CRCSAV+2 ST A3,CRCSAV+4 LDK A1,8 CRC100 LDR A3,A7 SRL A7,1 XRR A3,A2 SRL A2,1 ANK A3,1 RF(Z) CRC110 XRKL A7,/A001 CRC110 SUK A1,1 RB(NZ) CRC100 LD A1,CRCSAV LD A2,CRCSAV+2 LD A3,CRCSAV+4 RTN A5 CRCSAV RES 3 EJECT * * * READ AND CHECK CRC * * ON RETURN CR=0 IF CRC IS OK * * RDCRC EQU * CF A5,READ READ 1ST CRC CHAR XRR A7,A2 CHECK WITH ACCUMULATED CF A5,READ READ 2ND CRC CHAR ECR A7,A7 ADK A5,4 XRR A2,A7 CHECK CRC AND SET CR ABR* A5 RETURN XIF EJECT ******************************************************* * * INTERRUPT HANDLER , CHLC RECEIVER * ******************************************************* * IHLCIN EQU * IH1701 EQU * ST P,INTSAV CF A15,IHSAV8 SAVE A1-A8 ON A15 STACK LDKL A6,DW1701 LOAD DWT ADDRESS INR A2,0,DAMI01 GET CHARACTER FROM LINR IHI100 EQU * ABL(NA) SSTIN **LOGG IFF LOGG=0 LD A5,DWTSAV+4,A6 CF A5,LOGIN LOGG INPUT CHARACTER XIF IHI110 EQU * LD A3,DWTSAV,A6 LD A4,DWTSAV+2,A6 LD A5,DWTSAV+4,A6 LD A7,DWTSAV+6,A6 LD A8,DWTSAV+8,A6 RTN A5 IFF NLINE=1 EJECT * * * IH1703 EQU * ST P,INTSAV CF A15,IHSAV8 SAVE A1-A8 ON A15 STACK LDKL A6,DW1702 LOAD DWT ADDRESS INR A2,0,DAMI02 GET CHARACTER FROM LINE RB IHI100 IFF NLINE=2 * * * IH1705 EQU * ST P,INTSAV CF A15,IHSAV8 SAVE A1-A8 ON A15 STACK LDKL A6,DW1703 LOAD DWT ADDRESS INR A2,0,DAMI03 GET CHARACTER FROM LINE RB IHI100 IFF NLINE=3 * * * IH1707 EQU * ST P,INTSAV CF A15,IHSAV8 SAVE A1-A8 ON A15 STACK LDKL A6,DW1704 LOAD DWT ADDRESS INR A2,0,DAMI04 GET CHARACTER FROM LINE RB IHI100 XIF EJECT ******************************************************* * * INTERRUPT HANDLER , CHLC TRANSMITTER * ******************************************************* * * * IHLCUT EQU * IH1702 EQU * ST P,INTSAV CF A15,IHSAV8 SAVE A1-A8 ON A15 STACK LDKL A6,DW1701 LOAD DWT ADDRESS RB IHI110 LOAD REGISTERS IFF NLINE=1 EJECT * * * IH1704 EQU * ST P,INTSAV CF A15,IHSAV8 SAVE A1-A8 ON A15 STACK LDKL A6,DW1702 LOAD DWT ADDRESS RB IHI110 LOAD REGISTERS IFF NLINE=2 * * * IH1706 EQU * ST P,INTSAV CF A15,IHSAV8 SAVE A1-A8 ON A15 STACK LDKL A6,DW1703 LOAD DWT ADDRESS RB IHI110 LOAD REGISTERS IFF NLINE=3 * * * IH1708 EQU * ST P,INTSAV CF A15,IHSAV8 SAVE A1-A8 ON A15 STACK LDKL A6,DW1704 LOAD DWT ADDRESS RB IHI110 LOAD REGISTERS XIF EJECT * * ILLEGAL INTERRUPTS * IFF NLINE=4 IH1707 EQU * IH1708 EQU * IFF NLINE=3 IH1705 EQU * IH1706 EQU * IFF NLINE=2 IH1703 EQU * IH1704 EQU * XIF ST P,INTSAV LDK A1,/5 INDICATE ILLEGAL INTERRUPT ABL ILLINT ILLEGAL INTERRUPT ROUTINE ******************************************************* * * SUBROUTINE TO SAVE A1-A8 ON A15 STACK * ******************************************************* IHSAV8 EQU * STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 LD A3,16,A15 GET RETURN ADDRESS ST A1,16,A15 ST A2,14,A15 ABR A3 EJECT * * * DCTAB: LINE CONFIGURATION TABLE * * DCTAB EQU * DATA DCTABE-DCTAB TABLE LENGTH DATA DW1701 IFF NLINE=1 DATA DW1702 IFF NLINE=2 DATA DW1703 IFF NLINE=3 DATA DW1704 XIF DCTABE EQU * EJECT * * * DEVICE WORK TABLE FOR LINE 01 * * DW1701 EQU * DATA DAMU01 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DWTRTI EQU *-DW1701 DATA 0 REQUEST TIMER POINTER DWTPTI EQU *-DW1701 DATA 0 PROCEDURE TIMER POINTER DWTMTI EQU *-DW1701 DATA 0 MODEM TRANSMIT TIMER POINTER DWTSAV EQU *-DW1701 RES 5 SAVE AREA FOR A3-A5,A7,A8 DWTXST EQU *-DW1701 DATA 0 PROCEDURE STATUS: 0= CONTROL STATE 1= TRANSMISSION MODE 2= RECEIVE MODE 3= RECEIVE MODE, ETX REC. DWTACK EQU *-DW1701 DATA 0 RESPONSE STATE 0= ACK EXPECTED 1= WACK SEQ. DELAY (REC) 2= TTD SEQ. DELAY (TRANS) 3= TTD SEQ. WAIT FOR NAK (TRANS) 4= WACK SEQ. (TRANS) 6= BID SEQ. 8= ACK EXP. AFTER TRANSMIT TIME OUT DWTENQ EQU *-DW1701 DATA 0 ENQ COUNTER DWTRSN EQU *-DW1701 DATA 0 ACK TO BE SENT/RECEIVED DWTWAC EQU *-DW1701 DATA 0 WACK COUNTER DWTRTR EQU *-DW1701 DATA 0 RETRANSMISSION COUNTER DWTLRS EQU *-DW1701 DATA NAK LAST SENT RESPONSE RES 10 A5 STACK DWTSTB EQU *-DW1701-2 STACK BASE DWTOTR EQU *-DW1701 OTR A2,0,DAMU01 DWTSSI EQU *-DW1701 SST A2,DAMI01 DWTSSU EQU *-DW1701 SST A2,DAMU01 DWTCSI EQU *-DW1701 CIO A2,1,DAMI01 DWTCSU EQU *-DW1701 CIO A2,1,DAMU01 DWTCHI EQU *-DW1701 CIO A2,0,DAMI01 DWTCHU EQU *-DW1701 CIO A2,0,DAMU01 **LOGG IFF LOGG=0 LOGPNT EQU *-DW1701 DATA LGST01 LOGSTA EQU *-DW1701 LGST01 EQU * RES LOGG LOGEND EQU *-DW1701-4 SAVE2 EQU *-DW1701 DATA 0 SAVE3 EQU *-DW1701 DATA 0 XIF * IFF NLINE=1 EJECT * * * DEVICE WORK TABLE FOR LINE 02 * * DW1702 EQU * DATA DAMU02 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 REQUEST TIMER POINTER DATA 0 PROCEDURE TIMER POINTER DATA 0 MODEM TRANSMIT TIMER POINTER RES 5 SAVE AREA FOR A3-A5,A7,A8 DATA 0 PROCEDURE STATUS DATA 0 RESPONSE STATUS DATA 0 ENQ COUNTER DATA 0 ACK TO BE SENT/RECEIVED DATA 0 WACK COUNTER DATA 0 RETRANSMISSION COUNTER DATA NAK LAST SENT RESPONSE RES 10 A5 STACK OTR A2,0,DAMU02 SST A2,DAMI02 SST A2,DAMU02 CIO A2,1,DAMI02 CIO A2,1,DAMU02 CIO A2,0,DAMI02 CIO A2,0,DAMU02 **LOGG IFF LOGG=0 DATA LGST02 LGST02 EQU * RES LOGG DATA 0 DATA 0 XIF * IFF NLINE=1 IFF NLINE=2 EJECT * * * DEVICE WORK TABLE FOR LINE 03 * * DW1703 EQU * DATA DAMU03 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 REQUEST TIMER POINTER DATA 0 PROCEDURE TIMER POINTER DATA 0 MODEM TRANSMIT TIMER POINTER RES 5 SAVE AREA FOR A3-A5,A7,A8 DATA 0 PROCEDURE STATUS DATA 0 RESPONSE STATUS DATA 0 ENQ COUNTER DATA 0 ACK TO BE SENT/RECEIVED DATA 0 WACK COUNTER DATA 0 RETRANSMISSION COUNTER DATA NAK LAST SENT RESPONSE RES 10 A5 STACK OTR A2,0,DAMU03 SST A2,DAMI03 SST A2,DAMU03 CIO A2,1,DAMI03 CIO A2,1,DAMU03 CIO A2,0,DAMI03 CIO A2,0,DAMU03 **LOGG IFF LOGG=0 DATA LGST03 LGST03 EQU * RES LOGG DATA 0 DATA 0 XIF * IFF NLINE=1 IFF NLINE=2 IFF NLINE=3 EJECT * * * DEVICE WORK TABLE FOR LINE 04 * * DW1704 EQU * DATA DAMU04 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 REQUEST TIMER POINTER DATA 0 PROCEDURE TIMER POINTER DATA 0 MODEM TRANSMIT TIMER POINTER RES 5 SAVE AREA FOR A3-A5,A7,A8 DATA 0 PROCEDURE STATUS DATA 0 RESPONSE STATUS DATA 0 ENQ COUNTER DATA 0 ACK TO BE SENT/RECEIVED DATA 0 WACK COUNTER DATA 0 RETRANSMISSION COUNTER DATA NAK LAST SENT RESPONSE RES 10 A5 STACK OTR A2,0,DAMU04 SST A2,DAMI04 SST A2,DAMU04 CIO A2,1,DAMI04 CIO A2,1,DAMU04 CIO A2,0,DAMI04 CIO A2,0,DAMU04 **LOGG IFF LOGG=0 DATA LGST04 LGST04 EQU * RES LOGG DATA 0 DATA 0 XIF * EJECT * * * DUMMY DWT * * IFF NLINE=4 DW1704 EQU * IFF NLINE=3 DW1703 EQU * IFF NLINE=2 DW1702 EQU * XIF DATA 0 DUMMY DWT DATA 0 STATUS BUSY EJECT * * * INTERRUPT LOGGING ROUTINE * * LOG LABELING BIT0-7 * INPUT CHARACTER MARKED /11 * OUTPUT CHARACTER MARKED /00 * INPUT STATUS MARKED /1F * OUTPUT STATUS MARKED /0F - NOT USED * IFF LOGG=0 LOGSST ST A2,SAVE2,A6 ORKL A2,/1F00 RF LOG10 LOGOUT ST A2,SAVE2,A6 ORKL A2,/0000 RF LOG10 LOGIN CWK A2,/FF RF(E) LOGE10 ST A2,SAVE2,A6 ORKL A2,/1100 LOG10 ST A3,SAVE3,A6 LD A3,LOGPNT,A6 STR A2,A3 ADK A3,2 SUR A3,A6 CWK A3,LOGEND RF(L) LOGEXI LDKL A3,LOGSTA LOGEXI EQU * ADR A3,A6 ST A3,LOGPNT,A6 LD A2,SAVE2,A6 LD A3,SAVE3,A6 LOGE10 RTN A5 XIF * * END