|
|
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: 90866 (0x162f2)
Notes: pts_type(SC)
Names: »DRDC81.SC«
└─⟦2a21e4bb5⟧ Bits:30009691 Philips computer tape "600408"
└─⟦this⟧ »DRIVER/DRDC81.SC«
IDENT DRDC81 7.2-ADAPTED, IMPROVED: 78-01-12 ******************************************************* * * PEAB-T , SOFTWARE FOR 6810 CONCENTRATOR * * DRDC81 = BSC MASTER DATA * COMMUNICATION DRIVER * * * ******************************************************* * * THIS DRIVER PERFORMS DATA COMMUNICATION * WITH TC'S CONNECTED TO THE CONCENTRATOR * VIA LEASED 4-WIRE OR DIALED UP 2-WIRE LINES. * * LINE PROCEDURE: BSC MASTER FOR MULTIPOINT DATA LINK * ******************************************************* * * STANDARD USE OF REGISTERS : * * A1 WORK REGISTER * A2 I/O AND WORK REGISTER * A3 WORK REGISTER * A4 WORK REGISTER * A5 STACK POINTER * A6 OUTPUT DWT ADDRESS * A7 INPUT DWT ADDRESS * A8 ECB ADDRESS * ******************************************************* EJECT * ******************************************************* * * ENTRY POINTS * ******************************************************* * ENTRY DRMIAD INPUT ACTIVATION ENTRY DRMUAD OUTPUT OR CONTROL ACTIVATION ENTRY DRMON RECOVERY AT POWER ON ENTRY IHMI01 INTERRUPT HANDLERS , INPUT AND OUTPUT ENTRY IHMI02 ENTRY IHMI03,IHMI04,IHMI05,IHMI06,IHMI07,IHMI08,IHMI09,IHMI10,IHMI11,IHMI12 ENTRY IHMI12 ENTRY IHMU01,IHMU02 ENTRY IHMU03,IHMU04,IHMU05,IHMU06,IHMU07,IHMU08,IHMU09,IHMU10,IHMU11,IHMU12 ENTRY IHMU12 ENTRY DWMTAB ENTRY DWMU01,DWMU02,DWMU03 OUTPUT AND CONTROL DWT:S ENTRY DWMU04,DWMU05,DWMU06 ENTRY DWMU07,DWMU08,DWMU09 ENTRY DWMU10,DWMU11,DWMU12 ENTRY DWMI01,DWMI02,DWMI03 INPUT DWT:S ENTRY DWMI04,DWMI05,DWMI06 ENTRY DWMI07,DWMI08,DWMI09 ENTRY DWMI10,DWMI11,DWMI12 EJECT * ******************************************************* * * EXTERNAL REFERENCES * ******************************************************* * EXTRN TDISP DISPATCHER ENTRY EXTRN TENDIO REQUEST COMPLETION EXTRN DISEND THE ENTIES ABOVE TOGETHER EXTRN DISIOE REQUEST ERROR EXTRN SETIME SET TIMER CALL ADDRESS EXTRN SETIMP 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 ILLINT EXTRN INTSAV EJECT * * ************************** * * * SYSTEM ADOPTION * * * ************************** * * * * * CONDITIONAL ASSEMBLYy ***************************** * * * * X:A EQU 0 * X:A UNEQUAL TO ZERO INCLUDES LINE NO 1, WITH POLLIST LENGTH = X:A * * X:B EQU 0 * X:B UNEQUAL TO ZERO INCLUDES LINE NO 2, WITH POLLIST LENGTH = X:B * * X:C EQU 0 * X:C UNEQUAL TO ZERO INCLUDES LINE NO 3, WITH POLLIST LENGTH = X:C * * X:D EQU 0 * X:D UNEQUAL TO ZERO INCLUDES LINE NO 4, WOTH POLLIST LENGTH = X:D * * X:E EQU 0 * X:E UNEQUAL TO ZERO INCLUDES LINE NO 5, WITH POLLIST LENGTH = X:E * * X:F EQU 0 * X:F UNEQUAL TO ZERO INCLUDES LINE NO 6, WITH POLLIST LENGTH = X:F * * X:G EQU 0 * X:G UNEQUAL TO ZERO INCLUDES LINE NO 7, WITH POLLIST LENGTH = X:G * * X:H EQU 0 * X:H UNEQUAL TO ZERO INCLUDES LINE NO 8, WITH POLLIST LENGTH = X:H * * X:I EQU 0 * X:I UNEQUAL TO ZERO INCLUDES LINE NO 9, WITH POLLIST LENGTH = X:I * * X:J EQU 0 * X:J UNEQUAL TO ZERO INCLUDES LINE NO 10, WITH POLLIST LENGTH = X:J * * X:K EQU 0 * X:K UNEQUAL TO ZERO INCLUDES LINE NO 11, WITH POLLIST LENGTH = X:K * * X:L EQU 0 * X:L UNEQUAL TO ZERO INCLUDES LINE NO 12, WITH POLLIST LENGTH = X:L * * * * X:M EQU 0 * IF X:M = 1, INSTUCTION SET IS ADOPTED FOR 852 CPU * * X:N EQU 350 * X:N = MAX BLOCKLENGTH * * X:O EQU 0 LOGG EQU X:O * IF X:O IS UNEQUAL TO ZERO, THE INTERRUPT LOGG IS INCLUDED. * LOGG AREA LENGTH = X:O EJECT * * * X:P EQU -3 * X:P = RETRY LIMIT FOR RECOVERY * * X:Q EQU 0 BDA EQU X:Q * IF X:Q = 1, TC ADDRESSES ARE ADAPTED FOR THE BANKDATA CASE: * INPUT = /41 -/4F (A - O) * OUTPUT = ADDRESSES ACCORDING TO IBM REMOTE CONTROL UNIT ADDRESSING * * X:R EQU 0 RQLOGG EQU X:R FOR TEST PURPOSES ONLY * IF X:R = 1, A REQUEST LOGG IS INCLUDED, SAVING * LINE NUMBER, ORDER, RETURN CODE AND TID FOR THE 100 LAST REQUESTS. * * EJECT * ******************************************************* * * SYSTEM PARAMETERS * ******************************************************* * LINE01 EQU X:A LENGTH OF POLLIST FOR LINE 01 LINE02 EQU X:B 02 LINE03 EQU X:C LINE04 EQU X:D LINE05 EQU X:E LINE06 EQU X:F LINE07 EQU X:G LINE08 EQU X:H LINE09 EQU X:I LINE10 EQU X:J LINE11 EQU X:K LINE12 EQU X:L CPU852 EQU X:M EXCLUDES MULTIPLE LOAD AND STORE MAXTBL EQU X:N MAX LENGTH OF TRANSMISSION BLOCK TIMRE4 EQU 2 RECEIVE TIMEOUT 4-WIRE (200MS) TIMMRY EQU 5 MODEM READY TIME OUT TIMACT EQU 100 ACTIVITY TIMER RTYLIM EQU X:P RETRY LIMIT FOR RECOVERY SYNCO EQU -3 NUMBER OF SYN:S DELAY EQU 3 READ REQ DELAY AT STATUS POLL HALTED EJECT * ******************************************************* * * DEVICE WORK AREA EQUATES * ******************************************************* * DWTTP EQU /10 DWT TIMER POINTER DWTATP EQU /12 ACTIVITY TIMER POINTER STB EQU /1E STACK BASE DWTSAV EQU /20 DWT SAVE AREA DWTA5 EQU DWTSAV+4 A5 DWTA6 EQU DWTSAV+6 A6 DWTA7 EQU DWTSAV+8 A7 DWTA8 EQU DWTSAV+10 A8 DWTRTY EQU /2C DWT RETRY COUNTER DWTBCC EQU /2E DWT BCC COUNTER DWTACK EQU /30 DWT ACK COUNTER PACT EQU /32 LAST POLLED ACTIVE TC PINACT EQU /34 LAST POLLED INACTIVE TC PLIST EQU /36 POLLIST ADDRESS IN OUTPUT DWT TPUT EQU /14 TPUTC EQU /16 TPINC EQU /18 EJECT * * * CONSTANTS * * BIT2 EQU /2000 BIT5 EQU /400 BIT6 EQU /200 BIT7 EQU /100 BIT8 EQU /80 BIT9 EQU /40 BIT10 EQU /20 BIT11 EQU /10 BIT12 EQU 8 BIT13 EQU 4 BIT14 EQU 2 BIT15 EQU 1 * * EJECT * * RETURN CODE EQUATES **************************** * * MODNOP EQU BIT15 MODEM NOT OPERABLE, ALL ORDERS NORESP EQU BIT14 NO RESPONSE, ORDER /00 TCINPL EQU BIT14 TC ALLREADY IN POLLING LIST, ORDER /37 POLPER EQU BIT14 POLLING ALLREADY PERMITTED, ORDER /27 INVTCA EQU BIT13 INVALID TCA, ORDER /02, /37 CODERR EQU BIT13 CODE NOT ALLOWED, ORDER /06 INCLEN EQU BIT12 INCORRECT LENGTH, ORDER /02 LSTOVF EQU BIT12 POLLIST OVERFLOW, ORDER /37 LINSTE EQU BIT11 LINE OPEN/CLOSED, ALL ORDERS TCINAC EQU BIT10 TC INACTIVE, ORDER /02, /06, /37 TCNLST EQU BIT9 TC NOT IN POLL LIST, ORDER /06, /38 POLHLT EQU BIT8 POLLING HALTED, ORDER /02 RETRAN EQU BIT7 RETRANSMISSION, ORDER /02, /06 CALIND EQU BIT6 CALLING INDICATOR, NOT USED TCACT EQU BIT5 TC ACTIVE, OrDER /02 TCBUSY EQU BIT2 TC BUSy, ORDER /06 * * EJECT * ******************************************************* * * DWT STATUS WORD CONTENTS * ******************************************************* * * DWTST BIT #00 : 0 = DEVICE BUSY * 1 = DEVICE NOT BUSY * BIT #6 : 1 = WAITING FOR CALL * BIT #14 : 0 = POLLING PERMITTED * 1 = HALT POLLING INITIATED * BIT #15 : 0 = LINE CLOSED * 1 = LINE OPEN * ******************************************************* * * CHLC RECEIVER STATUS CONTENTS * ******************************************************* * * STATUS : /00 = MODEM READY / CARRIER DETECTED * : /01 = MODEM NOT READY * : /02 = THROUGHPUT ERROR * : /20 = CARRIER NOT DETECTED * : /40 = CALLING INDICATOR * ******************************************************* EJECT * ******************************************************* * * LINE CONTROL CHARACTER EQUATES * ******************************************************* * SYN EQU /16 PAD EQU /7F TRAILING PAD DLE EQU /10 DATA LINK ESCAPE EOT EQU /04 END OF TRANSMISSION ENQ EQU /85 ENQUIRY STX EQU /02 START OF TEXT ETX EQU /03 END OF TEXT ETB EQU /17 END OF TRANSMISSION BLOCK ETXP EQU /83 ETX WITH PARITY ETBP EQU /97 ETB WITH PARITY NAK EQU /15 NEGATIVE ACKNOWLEDGEMENT GP EQU /22 GENERAL POLL PAR:0 EQU /B0 ZERO (ODD PARITY) SEMIKO EQU /3B SECOND CHARACTER IN WACK, AFTER DLE EJECT * ******************************************************* * * CHLC DEVICE ADDRESS EQUATES * ******************************************************* * DAMI01 EQU /4 INPUT CHLC 1 DAMI02 EQU /05 INPUT CHLC 2 DAMI03 EQU /06 DAMI04 EQU /7 DAMI05 EQU /20 DAMI06 EQU /21 DAMI07 EQU /22 DAMI08 EQU /23 DAMI09 EQU /24 DAMI10 EQU /25 DAMI11 EQU /26 DAMI12 EQU /27 DAMU01 EQU /14 OUTPUT CHLC 1 DAMU02 EQU /15 OUTPUT CHLC 2 DAMU03 EQU /16 DAMU04 EQU /17 DAMU05 EQU /30 DAMU06 EQU /31 DAMU07 EQU /32 DAMU08 EQU /33 DAMU09 EQU /34 DAMU10 EQU /35 DAMU11 EQU /36 DAMU12 EQU /37 * * * * * ******************************************************* EJECT * * * BSC MASTER CONFIGURATION TABLE * * DWMTAB DATA DWMTE-* TABLE LENGTH IFF LINE01=0 DATA DWMI01 DWT FOR INPUT ON LINE 1 DATA DWMU01 DWT FOR OUTPUT AND CONTROL ON LINE 1 XIF IFF LINE02=0 DATA DWMU02,DWMI02 XIF IFF LINE03=0 DATA DWMU03,DWMI03 XIF IFF LINE04=0 DATA DWMU04,DWMI04 XIF IFF LINE05=0 DATA DWMU05,DWMI05 XIF IFF LINE06=0 DATA DWMU06,DWMI06 XIF IFF LINE07=0 DATA DWMU07,DWMI07 XIF IFF LINE08=0 DATA DWMU08,DWMI08 XIF IFF LINE09=0 DATA DWMU09,DWMI09 XIF IFF LINE10=0 DATA DWMU10,DWMI10 XIF IFF LINE11=0 DATA DWMU11,DWMI11 XIF IFF LINE12=0 DATA DWMU12,DWMI12 XIF DWMTE EQU * * * EJECT * * ***************************** * * * DEVICE WORK TABLES * * * ***************************** * * IFF LINE01=0 * * * DEVICE WORK TABLE FOR LINE 01, OUTPUT AND CONTROL * * DWMU01 EQU * TABLE ENTRY DATA DAMU01 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMUAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU01 OUTPUT DWT ADDRESS DATA DWMI01 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 RETRY COUNTER DATA 0 BCC COUNTER DATA 0 ACK COUNTER DATA 0 PACT DATA 0 PINACT EJECT DATA LINE01+LINE01 LENGTH OF POLLIST RES LINE01 POLLIST DATA /FFFF * EJECT * * * DEVICE WORK TABLE FOR LINE 01, INPUT * * DWMI01 EQU * TABLE ENTRY DATA DAMI01 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMIAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU01 OUTPUT DWT ADDRESS DATA DWMI01 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 XIF IFF LINE02=0 EJECT * * * DEVICE WORK TABLE FOR LINE 02, OUTPUT AND CONTROL * * DWMU02 EQU * TABLE ENTRY DATA DAMU02 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMUAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU02 OUTPUT DWT ADDRESS DATA DWMI02 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 RETRY COUNTER DATA 0 BCC COUNTER DATA 0 ACK COUNTER DATA 0 PACT DATA 0 PINACT DATA LINE02+LINE02 RES LINE02 DATA /FFFF * EJECT * * * DEVICE WORK TABLE FOR LINE 02, INPUT * * DWMI02 EQU * TABLE ENTRY DATA DAMI02 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMIAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU02 OUTPUT DWT ADDRESS DATA DWMI02 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 XIF IFF LINE03=0 EJECT * * * DEVICE WORK TABLE FOR LINE 03, OUTPUT AND CONTROL * * DWMU03 EQU * TABLE ENTRY DATA DAMU03 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMUAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU03 OUTPUT DWT ADDRESS DATA DWMI03 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 RETRY COUNTER DATA 0 BCC COUNTER DATA 0 ACK COUNTER DATA 0 PACT DATA 0 PINACT DATA LINE03+LINE03 RES LINE03 DATA /FFFF * EJECT * * * DEVICE WORK TABLE FOR LINE 03, INPUT * * DWMI03 EQU * TABLE ENTRY DATA DAMI03 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMIAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU03 OUTPUT DWT ADDRESS DATA DWMI03 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 XIF IFF LINE04=0 EJECT * * * DEVICE WORK TABLE FOR LINE 04, OUTPUT AND CONTROL * * DWMU04 EQU * TABLE ENTRY DATA DAMU04 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMUAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU04 OUTPUT DWT ADDRESS DATA DWMI04 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 RETRY COUNTER DATA 0 BCC COUNTER DATA 0 ACK COUNTER DATA 0 PACT DATA 0 PINACT DATA LINE04+LINE04 RES LINE04 DATA /FFFF * EJECT * * * DEVICE WORK TABLE FOR LINE 04, INPUT * * DWMI04 EQU * TABLE ENTRY DATA DAMI04 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMIAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU04 OUTPUT DWT ADDRESS DATA DWMI04 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 XIF IFF LINE05=0 EJECT * * * DEVICE WORK TABLE FOR LINE 05, OUTPUT AND CONTROL * * DWMU05 EQU * TABLE ENTRY DATA DAMU05 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMUAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU05 OUTPUT DWT ADDRESS DATA DWMI05 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 RETRY COUNTER DATA 0 BCC COUNTER DATA 0 ACK COUNTER DATA 0 PACT DATA 0 PINACT DATA LINE05+LINE05 RES LINE05 DATA /FFFF * EJECT * * * DEVICE WORK TABLE FOR LINE 05, INPUT * * DWMI05 EQU * TABLE ENTRY DATA DAMI05 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMIAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU05 OUTPUT DWT ADDRESS DATA DWMI05 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 XIF IFF LINE06=0 EJECT * * * DEVICE WORK TABLE FOR LINE 06, OUTPUT AND CONTROL * * DWMU06 EQU * TABLE ENTRY DATA DAMU06 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMUAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU06 OUTPUT DWT ADDRESS DATA DWMI06 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 RETRY COUNTER DATA 0 BCC COUNTER DATA 0 ACK COUNTER DATA 0 PACT DATA 0 PINACT DATA LINE06+LINE06 RES LINE06 DATA /FFFF * EJECT * * * DEVICE WORK TABLE FOR LINE 06, INPUT * * DWMI06 EQU * TABLE ENTRY DATA DAMI06 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMIAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU06 OUTPUT DWT ADDRESS DATA DWMI06 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 XIF IFF LINE07=0 EJECT * * * DEVICE WORK TABLE FOR LINE 07, OUTPUT AND CONTROL * * DWMU07 EQU * TABLE ENTRY DATA DAMU07 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMUAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU07 OUTPUT DWT ADDRESS DATA DWMI07 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 RETRY COUNTER DATA 0 BCC COUNTER DATA 0 ACK COUNTER DATA 0 PACT DATA 0 PINACT DATA LINE07+LINE07 RES LINE07 DATA /FFFF * EJECT * * * DEVICE WORK TABLE FOR LINE 07, INPUT * * DWMI07 EQU * TABLE ENTRY DATA DAMI07 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMIAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU07 OUTPUT DWT ADDRESS DATA DWMI07 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 XIF IFF LINE08=0 EJECT * * * DEVICE WORK TABLE FOR LINE 08, OUTPUT AND CONTROL * * DWMU08 EQU * TABLE ENTRY DATA DAMU08 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMUAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU08 OUTPUT DWT ADDRESS DATA DWMI08 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 RETRY COUNTER DATA 0 BCC COUNTER DATA 0 ACK COUNTER DATA 0 PACT DATA 0 PINACT DATA LINE08+LINE08 RES LINE08 DATA /FFFF * EJECT * * * DEVICE WORK TABLE FOR LINE 08, INPUT * * DWMI08 EQU * TABLE ENTRY DATA DAMI08 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMIAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU08 OUTPUT DWT ADDRESS DATA DWMI08 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 XIF IFF LINE09=0 EJECT * * * DEVICE WORK TABLE FOR LINE 09, OUTPUT AND CONTROL * * DWMU09 EQU * TABLE ENTRY DATA DAMU09 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMUAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU09 OUTPUT DWT ADDRESS DATA DWMI09 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 RETRY COUNTER DATA 0 BCC COUNTER DATA 0 ACK COUNTER DATA 0 PACT DATA 0 PINACT DATA LINE09+LINE09 RES LINE09 DATA /FFFF * EJECT * * * DEVICE WORK TABLE FOR LINE 09, INPUT * * DWMI09 EQU * TABLE ENTRY DATA DAMI09 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMIAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU09 OUTPUT DWT ADDRESS DATA DWMI09 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 XIF IFF LINE10=0 EJECT * * * DEVICE WORK TABLE FOR LINE 10, OUTPUT AND CONTROL * * DWMU10 EQU * TABLE ENTRY DATA DAMU10 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMUAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU10 OUTPUT DWT ADDRESS DATA DWMI10 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 RETRY COUNTER DATA 0 BCC COUNTER DATA 0 ACK COUNTER DATA 0 PACT DATA 0 PINACT DATA LINE10+LINE10 RES LINE10 DATA /FFFF * EJECT * * * DEVICE WORK TABLE FOR LINE 10, INPUT * * DWMI10 EQU * TABLE ENTRY DATA DAMI10 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMIAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU10 OUTPUT DWT ADDRESS DATA DWMI10 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 XIF IFF LINE11=0 EJECT * * * DEVICE WORK TABLE FOR LINE 11, OUTPUT AND CONTROL * * DWMU11 EQU * TABLE ENTRY DATA DAMU11 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMUAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU11 OUTPUT DWT ADDRESS DATA DWMI11 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 RETRY COUNTER DATA 0 BCC COUNTER DATA 0 ACK COUNTER DATA 0 PACT DATA 0 PINACT DATA LINE11+LINE11 RES LINE11 DATA /FFFF * EJECT * * * DEVICE WORK TABLE FOR LINE 11, INPUT * * DWMI11 EQU * TABLE ENTRY DATA DAMI11 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMIAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU11 OUTPUT DWT ADDRESS DATA DWMI11 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 XIF IFF LINE12=0 EJECT * * * DEVICE WORK TABLE FOR LINE !2, OUTPUT AND CONTROL * * DWMU12 EQU * TABLE ENTRY DATA DAMU12 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMUAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU12 OUTPUT DWT ADDRESS DATA DWMI12 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 RETRY COUNTER DATA 0 BCC COUNTER DATA 0 ACK COUNTER DATA 0 PACT DATA 0 PINACT DATA LINE12+LINE12 RES LINE12 DATA /FFFF * EJECT * * * DEVICE WORK TABLE FOR LINE 12, INPUT * * DWMI12 EQU * TABLE ENTRY DATA DAMI12 DEVICE ADDRESS DATA /8000 STATUS , /8000 MEANS DEVICE READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA DRMIAD POINTER TO ADDRESS BLOCK DATA 0 TTAB ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TASK QUEUE FOR THIS DEVICE DATA 0 TIMER POINTER DATA 0 ACTIVITY TIMER POINTER DATA 0,0,0,0,0,0 SUBROUTINE STACK RES 3 SAVE AREA FOR A3-A5 DATA DWMU12 OUTPUT DWT ADDRESS DATA DWMI12 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 XIF EJECT * * * * * * ******************************************************* * * * D R I V E R A C T I V A T I O N * * ******************************************************* ******************************************************* * * * * * EJECT ******************************************************* * * INPUT REQUESTS * ******************************************************* * * DRMIAD DATA MIACT DWT REFERENCE * * MIACT EQU * SUK A7,2 RF(Z) RD ORDER 01: READ MIA100 ABL DISIOE ILLEGAL ORDER * * * ORDER 02 : READ * * RD EQU * LD A1,DWTST,A6 GET STATUS LDR A2,A1 ANK A1,1 RF(NZ) RD400 LINE OPEN RD100 EQU * LDK A1,LINSTE RC: WRONG LINE STATUS RD200 EQU * IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO COMPLETE REQUEST RD300 EQU * ABL TDISP GO TO DISPATCHER RD400 EQU * LCR A1,A6 ANK A1,/40 RB(Z) RD300 4-WIRE ANK A2,4 RB(Z) RD300 RD450 EQU * CF A5,READ WAIT FOR CALL CW A2,/8040 RB(NE) RD450 LDKL A1,/200 XRS A2,DWTST,A6 RESET WAIT BIT CF A5,HALTIN LDKL A1,CALIND RC: CALLING INDICATOR RB RD200 EJECT ******************************************************* * * OUTPUT AND CONTROL REQUESTS * ******************************************************* * * DRMUAD DATA MUACT DWT REFERENCE * * MUACT EQU * LDR A7,A7 RF(Z) TEST ORDER 00, TEST LINE SUK A7,6 ABL(Z) WRT ORDER 06: WRITE SUK A7,/22-6 RF(Z) OLIN ORDER 22, OPEN LINE SUK A7,2 ABL(Z) CLIN ORDER 24, CLOSE LINE SUK A7,2 ABL(Z) CLIN ORDER 26,HALT POLLING SUK A7,1 ABL(Z) CLIN ORDER 27, START POLLING SUK A7,/37-/27 ABL(Z) OTC ORDER 37: OPEN TC SUK A7,1 ABL(Z) WRT150 ORDER 38,CLOSE TC RB MIA100 ILLEGAL ORDER EJECT * * * ORDER 00 TEST LINE * TEST EQU * LD A1,DWTST,A6 GET STATUS ANK A1,1 RB(NZ) RD100 LINE NOT CLOSED ABL TST000 EJECT * * * CW = 0 : OPEN LINE * * OLIN EQU * LD A7,DWTA7,A6 LD A1,DWTST,A6 GET STATUS ANK A1,1 RB(NZ) RD100 LINE ALREADY OPENED LD A1,PLIST,A6 GET LENGTH OF POLLIST LDR A2,A1 ADR A1,A6 OLI100 EQU * CM PLIST,A1 DELETE POLLIST SUK A1,2 SUK A2,2 RB(NZ) OLI100 NOT END OF LIST CM PACT,A6 CM PINACT,A6 LD A7,DWTSAV+8,A6 OLI105 EQU * CF A5,HALTIN CF A5,STINP CONNECT MODEM LDR A1,A6 CF A15,SETIME DATA OLI110,TIMMRY ST A4,DWTTP,A6 CF A5,READ CM* DWTTP,A6 RF OLI115 OLI110 EQU * STATUS INT. OR TIME OUT LDR A6,A1 OLI115 EQU * CM DWTTP,A6 LDK A5,STB IF TIME OUT LD A7,DWTA7,A6 ADR A5,A6 CF A5,HALTIN ANK A1,1 RF(NZ) OLI160 MODEM NOT OPERABLE LDK A1,1 ORS A1,DWTST,A6 INDICATE LINE OPEN ORS A1,DWTST,A7 LD A1,DWTATP,A6 RF(NZ) OLI120 RECOVERY AT POWER ON LDK A1,0 IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO COMPLETE REQUEST OLI120 EQU * LCR A1,A6 ANK A1,/40 RF(Z) OLI130 4-WIRE LINE, INIT. IDLE OUTPUT CF A5,DISCON DISCONNECT MODEM LDKL A3,200 ORS A3,DWTST,A7 INDICATE WAITING FOR CALL RB RD300 OLI130 EQU * LDR A1,A6 LDR A4,A6 ADK A4,DWTATP LDR* A2,A4 ABL(NZ) BMM RECOVERY AT POWER ON CF A15,SETIMP SET ACTIVITY TIMER DATA OLI150,TIMACT ABL BMM ENTER BASIC MASTER MODE * * * ACTVITY TIME OUT * OLI150 EQU * INH LDR A6,A1 LD A7,DWTA7,A6 CM DWTATP,A6 CLEAR TIMER POINTER LDK A5,STB ADR A5,A6 OLI160 EQU * CF A5,DISCON CF A5,HALTIN LDK A1,MODNOP RC: MOD NOT OP LD A8,DWTECB,A6 RF(Z) OLI165 CM ECBRC,A8 IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO OLI165 EQU * LDR A6,A7 LD A8,DWTECB,A6 RF(Z) OLI170 CM ECBRC,A8 OLI170 EQU * IFT RQLOGG=1 CF A15,REQLOG XIF ABL DISEND * * * CLOSE LINE / HALT POLLING * * CLIN EQU * LD A1,DWTST,A6 GET STATUS ANK A1,1 ABL(Z) RD100 LINE ALREADY CLOSED ABL TDISP EJECT * * * ORDER 37 : OPEN TC * * OTC EQU * LD A7,DWTA7,A6 LD A1,DWTST,A7 GET STATUS LDR A2,A1 ANK A1,1 ABL(Z) RD100 SEQ ERROR ANKL A2,/200 RF(NZ) OTC110 WAITING FOR CALL LD A2,ECBCW,A8 GET TCA SUK A2,/41 RF(N) OTC100 INVALID TC ADDRESS SUK A2,/5A-/41 ABL(NP) TDISP OTC100 EQU * LDK A1,INVTCA RC : INVALID ADDRESS RB OLI170 OTC110 EQU * LDKL A1,CALIND RC: CALLING INDICATOR RB OLI170 EJECT * * * ORDER 06 : WRITE * * WRT EQU * LC* A2,ECBBA,A8 TCA WRT105 EQU * LD A1,DWTST,A6 ANK A1,1 ABL(Z) RD100 SEQ ERROR ANK A2,/7F CF A15,FINDTC SEARCH FOR TCA IN POLLINGLIST RF(P) WRT130 TC NOT IN P-LIST RF(N) WRT110 TCA INACTIVE SC A4,DWTOR,A6 SAVE INDEX IN POLLIST WRT107 EQU * ABL TDISP WRT110 EQU * SC A4,DWTOR,A6 SAVE INDEX IN POLLIST LD A1,DWTOR,A6 ANK A1,/FF SUK A1,/38 RB(Z) WRT107 LDK A1,TCINAC RC: TC INACTIVE WRT120 EQU * IFT RQLOGG=1 CF A15,REQLOG XIF ABL DISEND WRT130 EQU * LDK A1,TCNLST RC: TC NOT IN POLLIST RB WRT120 * * * ORDER 38: CLOSE TC * WRT150 EQU * LD A2,ECBCW,A8 TCA RB WRT105 EJECT * ******************************************************* ******************************************************* * * * R E C O V E R Y A T P O W E R O N * * ******************************************************* ******************************************************* * DRMON EQU * INH LD A3,DWMTAB TABLE LENGTH DRM000 EQU * SUK A3,2 RF(Z) DRM300 END ODF TABLE LD A6,DWMTAB,A3 DWT ADDRESS LD A1,DWTST,A6 LDR A2,A1 LDR* A4,A6 ANK A2,1 RF(Z) DRM200 LINE CLOSED ANK A4,/10 RF(NZ) DRM250 OUTPUT DWT DRM100 EQU * INPUT DWT ANKL A1,/8000 RB(NZ) DRM000 NO REQUEST LD A8,DWTECB,A6 LD A2,ECBEL,A8 RB(Z) DRM000 NO COMPLETE MESSAGE RECEIVED IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO COMPLETE RQUEST , RC = 0 RB DRM000 DRM200 EQU * ANK A4,/10 RB(Z) DRM000 INPUT DWT ANKL A1,/8000 RB(NZ) DRM000 NO RQUEST LD A1,DWTOR,A6 GET ORDER ANK A1,/FF SUK A1,/22 RB(NZ) DRM000 DRM250 EQU * LD A7,DWTA7,A6 LDK A4,DWTTP ADR A4,A7 LDR* A1,A4 RF(Z) DRM275 CM* DWTTP,A7 DRM275 EQU * LDR A1,A6 CF A15,SETIMP DATA DRM400 DATA TIMMRY RB DRM000 DRM300 RTN A15 * * REOPEN LINE * DRM400 EQU * LDR A6,A1 LD A7,DWTA7,A6 CM DWTTP,A7 LDK A5,STB ADR A5,A6 ABL OLI105 REOPEN LINE 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,STB ADR A5,A6 CF A5,STOUT LDKL A1,BMM100 STR A1,A5 RETURN ADDRESS SUK A5,4 ST A5,DWTA5,A6 SAVE STACKPOINTER LDK A2,PAD LDR* A1,A6 DEVICE ADDRESS ADR* A1,P INSTRUCTION CODE CIO A2,0,0 EXR A1 WRITE PAD RF(NA) BMM100 ABL TDISP BMM100 EQU * LDKL A2,-TIMACT ST A2,DWTTP,A6 RESTART ACTIVITY TIMER LDK A2,PAD CF A5,WRITE LD A1,DWTST,A6 GET OUTPUT STATUS RF(NN) OUTPUT OUTPUT OR CONTROL REQUEST LD A1,DWTST,A7 GET INPUT STATUS ABL(NN) POLL READ REQUEST RB BMM EJECT * * * OUTPUT : PERFORM OUTPUT OR CONTROL REQUEST * * OUTPUT EQU * CF A5,HALTUT LD A8,DWTECB,A6 GET ECB ADDRESS ST A8,DWTA8,A6 LOAD A8 INTERUPT REGISTERS ST A8,DWTA8,A7 LD A1,DWTOR,A6 GET ORDER ANK A1,/FF SUK A1,6 ABL(Z) SELECT ORDER 06 : WRITE SUK A1,/24-6 RF(Z) OUT400 ORDER 24 : CLOSE LINE SUK A1,2 RF(Z) OUT200 ORDER 26 : HALT POLLING SUK A1,1 RF(Z) OUT350 ORDER 27: START POLLING SUK A1,/10 RF(Z) OUT100 ORDER 37 : OPEN TC * * * ORDER 38 : CLOSE TC * * LC A3,DWTOR,A6 GET INDEX IN POLLIST ANK A3,/FF ADR A3,A6 CM PLIST,A3 DELETE TCA RF OUT300 COMPLETE REQUEST EJECT * * * ORDER 37 : OPEN TC * * OUT100 EQU * LD A2,ECBCW,A8 GET TCA CF A15,FINDTC CHECK IF IT'S ALREADY THERE RF(P) OUT105 TCA NOT FOUND LDK A1,TCINPL SET RETURN CODE : TCA ALREADY IN LIST RF OUT310 OUT105 EQU * LDK A2,0 CF A15,FINDTC SEARCH EMPTY PLACE IN POLLINGLIST RF(Z) OUT110 LDK A1,LSTOVF SET RETURN CODE : POLLINGLIST OVERFLOW RF OUT310 COMPLETE REQUEST OUT110 EQU * SC A4,DWTOR,A6 SAVE INDEX IN POLLIST LD A1,ECBCW,A8 GET TCA ORKL A1,/8000 SET TC INACTIVE STR A1,A3 INSERT TCA IN POLLINGLIST ANK A1,/7F LDKL A2,RTYLIM ST A2,DWTRTY,A6 RESET RETRY COUNTER IFF BDA=1 ORK A1,/20 MODIFY TCA FOR SELECTING XIF LDR A3,A1 IFT BDA=1 CF A5,SELADR XIF OUT120 EQU * LDK A4,/20 STA CF A5,SEPOSE SEND SELECT SEQUENCE CF A5,READTO WAIT FOR REPLY WITH TIME SUPERVISION LDR A2,A2 RF(N) OUT130 OUT125 EQU * CF A5,READP RB(NN) OUT125 WAIT FOR END OF TRANSMISSION CF A5,HALTIN DLE,0 RECEIVED HALT INPUT CF A5,WREOT SEND EOT LD A3,ECBCW,A8 ANK A3,/7F LC A2,DWTOR,A6 GET INDEX IN POLLIST ANK A2,/FF ADR A2,A6 ADK A2,PLIST STR A3,A2 SET TC ACTIVE LD A1,PACT,A6 RF(NZ) OUT300 NOT FIRST IN LIST ST A2,PACT,A6 RF OUT300 OUT130 EQU * CF A5,HALTIN HALT INPUT IM DWTRTY,A6 INCREASE RETRY COUNTER RB(L) OUT120 LIMIT NOT YET REACHED, TRY AGAIN LD A1,PINACT,A6 RF(NZ) OUT150 NOT FIRST IN LIST LC A2,DWTOR,A6 GET INDEX IN POLLIST ANK A2,/FF ADR A2,A6 ADK A2,PLIST ST A2,PINACT,A6 OUT150 EQU * LDK A1,TCINAC SET RETURN CODE : TC INACTIVE RF OUT310 EJECT * * * ORDER /26 : HALT POLLING * * OUT200 EQU * LDK A1,2 ORS A1,DWTST,A7 NO POLLING LDK A1,POLHLT RC:POLL HALTED LDR A6,A7 IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO LD A6,DWTA6,A7 RELOAD A6 OUT300 EQU * LDK A1,0 OUT310 EQU * IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO COMPLETE REQUEST ABL BMM * * OUT350 EQU * START POLLING LD A1,DWTST,A7 ANK A1,2 RF(Z) OUT360 POLLING PERMITTED XRS A1,DWTST,A7 RB OUT300 OUT360 EQU * LDK A1,POLPER RB OUT310 EJECT * * * ORDER /24 : CLOSE LINE * * OUT400 EQU * CF A5,DISCON DISCONNECT MODEM LD A1,DWTATP,A6 RF(Z) OUT410 CM* DWTATP,A6 CM DWTATP,A6 OUT410 EQU * LDK A1,0 IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO LDK A1,LINSTE LDR A6,A7 IFT RQLOGG=1 CF A15,REQLOG XIF ABL DISEND EJECT * * * * ******************************************************* ******************************************************* * * * P R O C E D U R E T R A N S F E R P A R T * * ******************************************************* ******************************************************* * * * POLL : PERFORM READ REQUEST * * POLL EQU * ANK A1,2 RF(Z) POL100 LDR A1,A6 CF A5,SETIME DATA POLL10,DELAY ST A4,DWTTP,A6 ABL READ10 RETURN TO INTERRUPTED PROGRAM POLL10 EQU * AFTER DELAY LDR A6,A1 RELOAD A6 LD A7,DWTA7,A6 RELOAD A7 LD A8,DWTECB,A7 CM ECBRC,A8 LDK A1,POLHLT RC: POLL HALTED RF POL225 POL100 EQU * LD A8,DWTECB,A7 ST A8,DWTA8,A6 ST A8,DWTA8,A7 CM ECBRC,A8 CM ECBEL,A8 LD A1,PACT,A6 RF(Z) POL130 NO ACTIVE TCA PRESENT POL110 EQU * ADK A1,2 LDR* A3,A1 GET NEXT TCA RB(Z) POL110 EMPTY PLACE RF(NN) POL150 ACTIVE TC FOUND ADK A3,1 RB(NZ) POL110 INACTIVE TCA LDK A1,PLIST END OF POLLIST ADR A1,A6 POL120 EQU * ST A1,PACT,A6 UPDATE 'PACT' POL130 EQU * LD A1,PINACT,A6 ABL(Z) BMM100 NO INACTIVE TC PRESENT POL132 EQU * ADK A1,2 NEXT POS IN LIST CW A1,PINACT,A6 RF(E) POL134 LIST SCANNED LDR* A3,A1 RB(NN) POL132 NOT INACTIVE TC ADK A3,1 RF(NZ) POL138 INACTIVE TC FOUND LDK A1,PLIST END OF LIST REACHED ADR A1,A6 RB POL132 POL134 EQU * LDR* A3,A1 RF(N) POL140 INACTIVE TC FOUND CM PINACT,A6 NO INACTIVE TC IN LIST ABL BMM100 POL138 EQU * SUK A3,1 POL140 EQU * ST A1,PINACT,A6 UPPDATE PINACT LDK A1,/FF SC A1,DWTOR,A7 INDICATE INACTIVE TC LDKL A2,-1 NO RECOVERY BY REOPENING RF POL200 POL150 EQU * ST A1,PACT,A6 UPPDATE PACT LDK A1,0 SC A1,DWTOR,A7 INDICATE ACTIVE TC LDKL A2,RTYLIM POL200 EQU * INITIATE POLLING ST A2,DWTRTY,A6 RESET RETRYCOUNTER SC* A3,ECBBA,A8 SC*ORE TCA IFT BDA=1 ANK A3,/7F SUK A3,/41 TABLE INDEX LC A3,POLTAB,A3 XIF LDK A4,GP LOAD GP POL210 EQU * CF A5,SEPOLL SEND POLL SEQUENCE POL212 EQU * CF A5,READTO WAIT FOR REPLY LDR A2,A2 RF(NN) POL230 POL215 EQU * CF A5,HALTIN ANK A1,1 ABL(NZ) OLI160 MODEM NOT OPERABLE IM DWTRTY,A6 RB(N) POL210 LIMIT NOT REACHED , TRY AGAIN CF A5,EOTOUT SEND EOT LD A1,DWTOR,A7 ABL(N) BMM100 TC ALLREADY INACTIVE POL220 EQU * LC* A3,ECBBA,A8 ANK A3,/7F ORKL A3,/8000 SET TC INACTIVE ST* A3,PACT,A6 LD A2,PINACT,A6 RF(NZ) POL224 LD A1,PACT,A6 ST A1,PINACT,A6 POL224 EQU * LDK A1,TCINAC SET RETURN CODE : TC INACTIVE POL225 EQU * CF A5,HALTUT LDR A6,A7 IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO END READ REQ LD A6,DWTA6,A7 RESTORE A6 ABL BMM POL230 EQU * CWK A2,STX RF(E) MIP STX RECEIVED CWK A2,EOT RF(E) POL240 POL235 EQU * CF A5,READP WAIT FOR CARRIER DOWN RB(NN) POL235 RB POL215 POL240 EQU * CF A5,HALTIN LD A1,DWTOR,A7 ABL(NN) BMM100 TC NOT INACTIVE POL245 EQU * LC* A3,ECBBA,A8 ANK A3,/7F MASK TCA ST* A3,PINACT,A6 SET TC ACTIVE LD A3,PACT,A6 RF(NZ) POL250 LD A1,PINACT,A6 ST A1,PACT,A6 POL250 EQU * LDKL A1,TCACT RC: TC ACTIVE RB POL225 EJECT * * * MIP : MESSAGE INPUT * * MIP EQU * CF A5,HALTUT LDKL A1,RTYLIM ST A1,DWTRTY,A6 RESET RETRY COUNTER MIP050 EQU * LDK A4,2 BUFFER POINTER CM DWTACK,A6 RESET ACK COUNTER CM DWTBCC,A6 RESET BCC COUNTER CF A5,READP READ TCA RF(NZ) MIP110 SST OR PAR ERROR XRS A2,DWTBCC,A6 IFT BDA=0 CC* A2,ECBBA,A8 RF(NE) MIP110 XIF MIP100 EQU * CF A5,READP READ NEXT CHARACTER RF(N) MIP130 SST RF(NZ) MIP110 PARITY ERROR XRS A2,DWTBCC,A6 CALCULATE BCC CWK A2,ETB RF(E) MIP210 ETB RECEIVED CWK A2,ETX RF(E) MIP220 ETX RECEIVED LDR A3,A4 AD A3,ECBBA,A8 SCR A2,A3 ADK A4,1 MIP105 EQU * CW A4,ECBRL,A8 RB(NG) MIP100 CF A5,READ RF(N) MIP130 XRS A2,DWTBCC,A6 CWK A2,ETX RF(E) MIP220 MIP110 EQU * PARITY ERROR, BUFFER OVERFLOW CF A5,READP WAIT FOR END OF TRANSMISSION BLOCK RF(N) MIP130 STATUS INTERRUPT CWK A2,ETB RF(E) MIP120 ETB RECEIVED CWK A2,ETX RB(NE) MIP110 NOT END OF BLOCK MIP120 EQU * CF A5,READ READ BCC MIP130 EQU * CF A5,HALTIN LDK A3,0 INDICATE BLOCK RECOVERY IM DWTRTY,A6 RF(NL) MIP200 RETRY LIMIT OVERFLOW CF A5,WRNAK SEND NAK LDKL A2,RETRAN ORS A2,ECBRC,A8 PRELOAD RC: RETRANSMISSION MIP140 EQU * CF A5,READTO WAIT FOR REPLY CWK A2,STX RF(E) MIP160 MIP145 EQU * CWK A2,EOT RF(E) MIP270 LDR A2,A2 RF(N) MIP155 TIME OUT MIP150 EQU * CF A5,READP RB(NN) MIP150 WAIT FOR END OF TRANSMISSION LDKL A1,RETRAN ORS A1,ECBRC,A8 MIP155 EQU * CF A5,HALTIN ANK A1,1 ABL(NZ) OLI160 IM DWTRTY,A6 RF(NL) MIP200 RETRY LIMIT OVERFLOW CF A5,WRENQ SEND ENQ RB MIP140 MIP160 EQU * LDR A3,A3 RB(NZ) MIP105 RECEIVE NEXT BLOCK SUKL A4,MAXTBL RB(N) MIP050 1:ST BLOCK SUK A4,1 RB(E) MIP050 1:ST BLOCK LDK A1,0 MIP165 EQU * ADK A1,1 SUKL A4,MAXTBL RB(NN) MIP165 LDK A4,1 MIP170 EQU * ADKL A4,MAXTBL SUK A1,1 RB(P) MIP170 CM DWTBCC,A6 RB MIP100 MIP200 EQU * CF A5,WREOT SEND EOT CM ECBRC,A8 CW A4,ECBRL,A8 RF(G) MIP260 BUFFER OVERFLOW CM ECBEL,A8 LD A1,DWTOR,A7 RF(N) MIP280 ALREADY INACTIVE ABL POL220 MIP210 EQU * CF A5,READP READ BCC RB(NZ) MIP130 PARITY ERROR CW A2,DWTBCC,A6 RB(NE) MIP130 BCC ERROR CM DWTBCC,A6 CF A5,HALTIN HALT INPUT CF A5,WRACK SEND ACK 0/1 LDKL A1,RTYLIM ST A1,DWTRTY,A6 RESET RETRY COUNTER CF A5,READTO CWK A2,STX RB(E) MIP105 RB MIP145 MIP220 EQU * CF A5,READP READ BCC RB(NZ) MIP130 PARITY ERROR CW A2,DWTBCC,A6 RB(NE) MIP130 BCC ERROR MIP225 EQU * CF A5,HALTIN HALT INPUT CF A5,WRACK SEND ACK 0/1 ST A4,ECBEL,A8 CF A5,READTO WAIT FOR EOT CF A5,HALTIN LDR A2,A2 RF(N) MIP230 TIMEOUT HAS OCCURRED CWK A2,ENQ RF(NE) MIP240 LDK A1,1 ENQ HAS BEEN RECEIVED XRS A1,DWTACK,A6 INCREASE ACK COUNTER LDKL A2,RETRAN ORS A2,ECBRC,A8 PRELOAD RC: RETRANSMISSION IM DWTRTY,A6 RB(NL) MIP200 RETRY LIMIT OVERFLOW RB MIP225 REPEAT LAST ACK MIP230 EQU * CF A5,HALTIN CF A5,WREOT SEND EOT MIP240 EQU * LDK A1,0 LD A2,DWTOR,A7 ABL(NN) POL225 TC NOT INACTIVE ABL POL245 SET TC ACTIVE MIP260 EQU * BUFFER OVERFLOw CM ECBRC,A8 LDK A1,INCLEN RC: INCORRECT LENGTH ABL POL225 MIP270 EQU * CF A5,HALTIN MIP280 EQU * CF A5,STOUT CF A5,EOTOUT ABL BMM100 EJECT * * * SELECT : TRANSFER MESSAGE TO TC * * SELECT EQU * LDKL A1,RTYLIM ST A1,DWTRTY,A6 RESET RETRY COUNTER SEL100 EQU * LD A4,ECBBA,A8 GET BUFFER ADDRESS LCR A3,A4 GET TCA IFF BDA=1 ORK A3,/20 MODIFY TCA XIF IFT BDA=1 CF A5,SELADR XIF LC A4,2,A4 GET STA ANK A4,/FF CF A5,SEPOSE SEND SELECTSEQUENCE CF A5,READTO WAIT FOR REPLY LDR A2,A2 RF(NN) SEL120 SEL110 EQU * CF A5,HALTIN ANK A1,1 ABL(NZ) OLI160 MOD NOT OP IM DWTRTY,A6 RECEIVE TIMEOUT RB(N) SEL100 LIMIT NOT REACHED , TRY AGAIN SEL115 EQU * CF A5,WREOT CM ECBRC,A8 LDK A1,TCINAC RC: TV INACTIVE IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO COMPLETE WRITE REQUEST LC* A3,ECBBA,A8 ANK A3,/7F LC A2,DWTOR,A6 GET INDEX IN POLLIST ANK A2,/FF ADR A2,A6 ADK A2,PLIST ORKL A3,/8000 SET TC INACTIVE STR A3,A2 LD A1,PINACT,A6 ABL(NZ) BMM NOT 1:ST INACTIVE TC ST A2,PINACT,A6 ABL BMM SEL120 EQU * CWK A2,DLE RB(NE) SEL110 INVALID REPLY CF A5,READ GET NEXT CHARACTER CF A5,HALTIN CWK A2,PAR:0 RF(E) MUT ACK 0 RECEIVED CWK A2,SEMIKO RB(NE) SEL110 INVALID REPLY SEL130 EQU * LDKL A1,TCBUSY RC: TC BUSY IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO COMPLETE WRITE REQUEST CF A5,WREOT SEND EOT ABL BMM EJECT * * * MUT : MESSAGE OUTPUT * * MUT EQU * CM DWTACK,A6 RESET ACK COUNTER LDK A3,3 BUFFER INDEX ST A3,ECBEL,A8 AD A3,ECBBA,A8 MUT100 EQU * LDKL A1,RTYLIM ST A1,DWTRTY,A6 RESET RETRY COUNTER MUT110 EQU * CM DWTBCC,A6 RESET BCC COUNTER CF A5,WRSYN START TRANSMITTER AND SEND SYN LDK A2,STX CF A5,WRITE SEND STX LDK A4,0 RESET CHARACTER COUNTER MUT120 EQU * LD A1,ECBEL,A8 CW A1,ECBRL,A8 RF(E) MUT150 END OF MESSAGE REACHED CWK A4,MAXTBL RF(E) MUT140 END OF TRANSMISSION BLOCK REACHED LCR A2,A3 IM ECBEL,A8 ADK A3,1 ADK A4,1 INCREMENT BLOCK INDEX ANK A2,/7F CWK A2,ETX RF(E) MUT135 CWK A2,ETB RF(E) MUT135 MUT130 EQU * XRS A2,DWTBCC,A6 UPDATE BCC COUNTER CF A5,WRITEP SEND ONE CHARACTER RB MUT120 MUT135 EQU * LDK A1,CODERR RC: CODE CHECK ERROR ORS A1,ECBRC,A8 LDK A2,/20 REPLACE ILLEGAL CHARACTER RB MUT130 MUT140 EQU * LDK A2,ETBP RF MUT160 MUT150 EQU * LDK A2,ETXP MUT160 EQU * XRS A2,DWTBCC,A6 UPDATE BCC CF A5,WRITE SEND ETB / ETX LD A2,DWTBCC,A6 CF A5,WRITEP SEND BCC LDK A2,PAD CF A5,WRITE SEND PAD LDK A1,1 XRS A1,DWTACK,A6 INCREASE ACK COUNTER CF A5,HALTUT TERMINATE OUTPUT MUT170 EQU * CF A5,READTO WAIT FOR REPLY LDR A2,A2 RF(NN) MUT190 MUT180 EQU * TIME OUT, UNDEFINED REPLY CF A5,HALTIN LDKL A1,RETRAN ORS A1,ECBRC,A8 PRELOAD RC: RETRANSMISSION IM DWTRTY,A6 ABL(NL) SEL115 RETRY LIMIT OVERFLOW CF A5,WRENQ SEND ENQ RB MUT170 MUT190 EQU * CWK A2,DLE RF(NE) MUT220 CF A5,READ DLE RECEIVED CF A5,HALTIN HALT INPUT CWK A2,SEMIKO RF(E) MUT250 WACK LD A1,DWTACK,A6 RF(Z) MUT210 CWK A2,'1' RB(NE) MUT180 MUT200 EQU * CORRECT ACKK RECEIVED LD A1,ECBEL,A8 CW A1,ECBRL,A8 RB(NE) MUT100 NOT END OF MESSAGE MUT205 EQU * TRANSFER COMPLETE CF A5,WREOT SEND EOT LDK A1,0 IFT RQLOGG=1 XIF CF A15,TENDIO COMPLETE WRITE REQUEST ABL BMM MUT210 EQU * CWK A2,PAR:0 RB(E) MUT200 ACK 0 RECEIVED RB MUT180 MUT220 EQU * CF A5,HALTIN CWK A2,NAK RF(NE) MUT230 MUT225 EQU * NAK OR ENQ RECEIVED IM DWTRTY,A6 ABL(NL) SEL115 RETRY LIMIT OVERFLOW NGR A4,A4 ADR A3,A4 ADS A4,ECBEL,A8 LDKL A1,RETRAN ORS A1,ECBRC,A8 RB MUT110 MUT230 EQU * CWK A2,ENQ RB(E) MUT225 ENQ RECEIVED RB MUT180 MUT250 EQU * WACK RECEIVED LD A1,ECBEL,A8 CW A1,ECBRL,A8 RB(E) MUT205 COMPLETE MESSAGE TRANFERED ABL SEL130 TC BUSY EJECT * * * SEPOSE : SEND POLL OR SELECT SEQUENCE * * ON ENTRY A3 CONTAINS TCA (S/P) * A4 CONTAINS STA / GP * * SEPOSE EQU * START OUTPUT AND SEND SYN CF A5,STOUT CF A5,SEPOLL CF A5,HALTUT RTN A5 SEPOLL EQU * CF A5,EOTOUT CF A5,WRSY10 SEND SYN LDR A2,A3 CF A5,WRITEP SEND TCA (P/S) LDR A2,A3 CF A5,WRITEP LDR A2,A4 CF A5,WRITEP SEND STA / GP LDR A2,A4 CF A5,WRITEP LDK A2,ENQ CF A5,WRITE SEND ENQ LDK A2,PAD CF A5,WRITE LDK A2,PAD CF A5,WRITE RTN A5 EJECT * * * START TRANSMITTER AND SEND SYN * * WRSYN EQU * CF A5,STOUT START TRANSMITTER WRSY10 EQU * LDKL A2,SYNCO NUMBER OF SYNC CHARACTERS ST A2,DWTATP,A7 WRSY20 EQU * LDK A2,SYN CF A5,WRITE IM DWTATP,A7 RB(NZ) WRSY20 RTN A5 EJECT * * * WREOT : SEND SINGLE EOT * * WREOT EQU * CF A5,STOUT CF A5,EOTOUT CF A5,HALTUT RTN A5 EOTOUT EQU * CF A5,WRSY10 LDK A2,EOT CF A5,WRITE SEND EOT WRE10 EQU * LDK A2,PAD CF A5,WRITE SEND PAD RTN A5 * * * WRENQ : SEND SINGLE ENQ * * WRENQ EQU * CF A5,WRSYN START OUTPUT AND SEND SYN LDK A2,ENQ CF A5,WRITE SEND ENQ WRE000 EQU * LDK A2,PAD CF A5,WRITE CF A5,HALTUT RTN A5 EJECT * * * WRNAK : SEND SINGLE NAK * * WRNAK EQU * CF A5,WRSYN START OUTPUT AND SEND SYN LDK A2,NAK CF A5,WRITE SEND NAK RB WRE000 * * * WRACK : SEND ACK-0 OR ACK-1 * * WRACK EQU * CF A5,WRSYN START OUTPUT AND SEND SYN LDK A2,DLE CF A5,WRITE SEND DLE LDK A2,1 XRS A2,DWTACK,A6 INCREASE ACK COUNTER LD A2,DWTACK,A6 RF(NZ) WRA10 LDK A2,PAR:0 RF WRA20 WRA10 EQU * LDK A2,'1' WRA20 EQU * CF A5,WRITE SEND '0' OR '1' RB WRE000 EJECT * * * STINP : CONNECT MODEM/START RECEIVER * * STINP EQU * LDR* A1,A7 ADR* A1,P CIO A2,1,0 LDKL A2,/100+SYN EXR A1 ABL(NA) SST055 HW NOT PRESENT OR ERRONEUS RTN A5 * * * STOUT : START TRANSMITTER * * STOUT EQU * LDR* A1,A6 ADR* A1,P CIO A2,1,0 EXR A1 RF(NA) STOU10 RF WRI200 STOU10 EQU * RTN A5 EJECT * * * DISCON : DISCONNECT MODEM * * DISCON EQU * LDK A1,0 SC A1,DWTST+1,A6 SC A1,DWTST+1,A7 CF A5,HALTIN CF A5,HALTUT LDR* A1,A7 ADR* A1,P CIO A2,1,0 LDK A2,0 DISCONNECT EXR A1 RTN A5 * * * HALTIN : HALT LINE INPUT * * HALTIN EQU * LDR* A1,A7 HALTIO EQU * ADR* A1,P CIO A1,0,0 EXR A1 ORKL A1,/840 A1:= SST INSTR EXR A1 RTN A5 * * * HALTUT : HALT LINE OUTPUT * * HALTUT EQU * LDR* A1,A6 RB HALTIO EJECT * * * WRITEP : GENERATE PARITY AND SEND CHARACTER * * WRITEP EQU * ANK A2,/7F LC A2,PARTAB,A2 * * * WRITE : TRANSMIT ONE CHARACTER * * WRITE EQU * LDR* A1,A6 GET DEVICE ADDRESS ADR* A1,P OTR A2,0,0 EXR A1 RF(NA) WRI300 IFF LOGG=0 CF A15,LOGOUT XIF WRI200 EQU * ST A3,DWTSAV,A6 ST A4,DWTSAV+2,A6 ST A5,DWTSAV+4,A6 RF READ10 WRI300 EQU * LDR* A1,A6 ADR* A1,P SST A1,0 EXR A1 ST A1,TPUT,A7 SAVE HW STATUS IM TPUTC,A7 ABL BMM TP ERROR RECOVERY EJECT * * * READTO : READ WITH TIME SUPERVISION * FOR 2-/4-WIRE LINE * * READTO EQU * ST A4,DWTSAV+2,A7 LDR A1,A7 CF A15,SETIME START RECEIVE TIMER DATA RET040 DATA TIMRE4 ST A4,DWTTP,A7 STORE TIMER POINTER LD A4,DWTSAV+2,A7 RESYNC EQU * RESYNCRONIZE CF A5,STINP RES20 EQU * CF A5,READ WAIT FOR SYN LDR A2,A2 RB(N) RESYNC STATUS INTERRUPT CWK A2,SYN RB(E) RES20 SYN RECEIVED WAIT FOR NEXT CM* DWTTP,A7 HALT RECEIVE TIMER CM DWTTP,A7 RTN A5 EJECT RET040 EQU * TIME OUT ENTRY LDR A7,A1 CM DWTTP,A7 LDK A5,4 ADS A5,DWTA5,A7 LDKL A2,/8000 RETO50 EQU * ABL IHI200 EJECT * * * READP : READ CHARACTER AND CHECK PARITY * ON PARITY ERROR CR POSITIVE * * READP EQU * CF A5,READ READ CHARACTER ADK A5,4 LDR A2,A2 RF(N) REDRET STATUS INTERRUPT LDR A1,A2 ANK A2,/7F CC A1,PARTAB,A2 RF(N) READP1 REDRET ABR* A5 READP1 ADK A1,1 RB REDRET EJECT * * READ : SAVE REGISTER A3-A5 * RELOAD REGISTER A1-A8 FROM A15 STACK * RETURN TO INTERRUPTED PROGRAM * READ EQU * ST A3,DWTSAV,A7 ST A4,DWTSAV+2,A7 ST A5,DWTSAV+4,A7 READ05 EQU * READ10 EQU * IFT CPU852=1 LDR* A8,A15 LDR* A7,A15 LDR* A6,A15 LDR* A5,A15 LDR* A4,A15 LDR* A3,A15 LDR* A2,A15 LDR* A1,A15 XIF IFF CPU852=1 MLR 8,A15 XIF RTN A15 * * * DUMDUM EQU *-2 DUMMY DWT DATA /0001 STATUS BUSY, CLOSED EJECT ******************************************************* * * INTERRUPT HANDLER , CHLC RECEIVER * ******************************************************* * * * IHMI01 EQU * ST P,INTSAV IFT LINE01=0 ABL ILLINT DWMU01 EQU * DUMMY ENTRY DWMI01 EQU DUMDUM XIF IFF LINE01=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE01=0 IFF CPU852=1 MSR A8,A15 XIF IFF LINE01=0 LDKL A7,DWMI01 INR A2,0,DAMI01 GET CHARACTER FROM LINR ABL(NA) SSTIN XIF IHI100 EQU * IFF LOGG=0 CF A15,LOGIN XIF IHI200 EQU * LD A3,DWTSAV,A7 LD A4,DWTSAV+2,A7 LD A5,DWTSAV+4,A7 LD A6,DWTA6,A7 LD A8,DWTA8,A7 RTN A5 EJECT * * * IHMI02 EQU * ST P,INTSAV IFT LINE02=0 ABL ILLINT DWMU02 EQU * DWMI02 EQU DUMDUM XIF IFF LINE02=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE02=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE02=0 LDKL A7,DWMI02 INR A2,0,DAMI02 GET CHARACTER FROM LINE RB(A) IHI100 ABL SSTIN XIF EJECT * * * IHMI03 EQU * ST P,INTSAV IFT LINE03=0 ABL ILLINT DWMU03 EQU * DUMMY DWMI03 EQU DUMDUM XIF IFF LINE03=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE03=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE03=0 LDKL A7,DWMI03 INR A2,0,DAMI03 GET CHARACTER FROM LINE RB(A) IHI100 ABL SSTIN XIF EJECT * * * IHMI04 EQU * ST P,INTSAV IFT LINE04=0 ABL ILLINT DWMU04 EQU * DUMMY DWMI04 EQU DUMDUM XIF IFF LINE04=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE04=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE04=0 LDKL A7,DWMI04 INR A2,0,DAMI04 GET CHARACTER FROM LINE RB(A) IHI100 RF SSTIN XIF EJECT * * * IHMI05 EQU * ST P,INTSAV IFT LINE05=0 ABL ILLINT DWMU05 EQU * DUMMY DWMI05 EQU DUMDUM XIF IFF LINE05=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE05=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE05=0 LDKL A7,DWMI05 INR A2,0,DAMI05 GET CHARACTER FROM LINE RB(A) IHI100 RF SSTIN XIF EJECT * * * IHMI06 EQU * ST P,INTSAV IFT LINE06=0 ABL ILLINT DWMU06 EQU * DUMMY DWMI06 EQU DUMDUM XIF IFF LINE06=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE06=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE06=0 LDKL A7,DWMI06 INR A2,0,DAMI06 GET CHARACTER FROM LINE RB(A) IHI100 RF SSTIN XIF EJECT * * * IHMI07 EQU * ST P,INTSAV IFT LINE07=0 ABL ILLINT DWMU07 EQU * DUMMY DWMI07 EQU DUMDUM XIF IFF LINE07=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE07=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE07=0 LDKL A7,DWMI07 INR A2,0,DAMI07 GET CHARACTER FROM LINE RB(A) IHI100 RF SSTIN XIF EJECT * * * IHMI08 EQU * ST P,INTSAV IFT LINE08=0 ABL ILLINT DWMU08 EQU * DUMMY DWMI08 EQU DUMDUM XIF IFF LINE08=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE08=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE08=0 LDKL A7,DWMI08 INR A2,0,DAMI08 GET CHARACTER FROM LINE RB(A) IHI100 RF SSTIN XIF EJECT * * * IHMI09 EQU * ST P,INTSAV IFT LINE09=0 ABL ILLINT DWMU09 EQU * DUMMYS DWMI09 EQU DUMDUM XIF IFF LINE09=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE09=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE09=0 LDKL A7,DWMI09 INR A2,0,DAMI09 GET CHARACTER FROM LINE ABL(A) IHI100 RF SSTIN XIF EJECT * * * IHMI10 EQU * ST P,INTSAV IFT LINE10=0 ABL ILLINT DWMU10 EQU * DUMMY DWMI10 EQU DUMDUM XIF IFF LINE10=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE10=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE10=0 LDKL A7,DWMI10 INR A2,0,DAMI10 GET CHARACTER FROM LINE ABL(A) IHI100 RF SSTIN XIF EJECT * * * IHMI11 EQU * ST P,INTSAV IFT LINE11=0 ABL ILLINT DWMU11 EQU * DUMMY DWMI11 EQU DUMDUM XIF IFF LINE11=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE11=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE11=0 LDKL A7,DWMI11 INR A2,0,DAMI11 GET CHARACTER FROM LINE ABL(A) IHI100 RF SSTIN XIF EJECT * * * IHMI12 EQU * ST P,INTSAV IFT LINE12=0 ABL ILLINT DWMU12 EQU * DUMMY DWMI12 EQU DUMDUM XIF IFF LINE12=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE12=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE12=0 LDKL A7,DWMI12 INR A2,0,DAMI12 GET CHARACTER FROM LINE ABL(A) IHI100 RF SSTIN XIF EJECT ******************************************************* * * STATUS INTERRUPT HANDLER , CHLC RECEIVER * ******************************************************* * * * SSTIN EQU * LD A6,DWTA6,A7 LDR* A1,A7 ADR* A1,P SST A2,0 EXR A1 IFF LOGG=0 CF A15,LOGSST XIF LDR A1,A2 RF(NZ) SST030 LDR* A1,A7 ADR* A1,P CIO A2,1,0 LDKL A2,/116 EXR A1 START INPUT ABL READ10 SST030 EQU * ANK A1,2 RF(Z) SST050 IM TPINC,A7 COUNT TP ERRORS LD A1,DWTTP,A7 GET RUNNING POINTER RF(Z) SST040 CM* DWTTP,A7 CM DWTTP,A7 SST040 EQU * ABL BMM TP ERROR RECOVERY SST050 EQU * LDR A1,A2 ANK A1,1 RF(Z) SST070 SST055 EQU * CLOSE LINE LDK A5,STB ADR A5,A6 CF A5,DISCON CF A5,HALTIN LD A1,DWTTP,A7 RF(Z) SST60 CM* DWTTP,A7 CM DWTTP,A7 SST60 EQU * LD A1,DWTATP,A6 RF(Z) SST65 CM* DWTATP,A6 CM DWTATP,A6 SST65 EQU * LDK A1,MODNOP RC: MODEM NOT OPERABLE LD A8,DWTECB,A6 RF(Z) SST067 CM ECBRC,A8 IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO SST067 EQU * LDR A6,A7 LD A8,DWTECB,A6 RF(Z) SST069 CM ECBRC,A8 IFT RQLOGG=1 CF A15,REQLOG XIF SST069 EQU * ABL DISEND SST070 EQU * ORKL A2,/8000 NO CARRIER OR CALLING INDICATOR ABL IHI200 EJECT ******************************************************* * * INTERRUPT HANDLER , CHLC TRANSMITTER * ******************************************************* * * * IHMU01 EQU * ST P,INTSAV IFT LINE01=0 ABL ILLINT XIF IFF LINE01=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE01=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE01=0 LDKL A6,DWMU01 XIF IHU100 EQU * LD A3,DWTSAV,A6 LD A4,DWTSAV+2,A6 LD A5,DWTSAV+4,A6 LD A7,DWTA7,A6 LD A8,DWTA8,A6 RTN A5 EJECT * * * IHMU02 EQU * ST P,INTSAV IFT LINE02=0 ABL ILLINT XIF IFF LINE02=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE02=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE02=0 LDKL A6,DWMU02 RB IHU100 XIF EJECT * * * IHMU03 EQU * ST P,INTSAV IFT LINE03=0 ABL ILLINT XIF IFF LINE03=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE03=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE03=0 LDKL A6,DWMU03 RB IHU100 XIF EJECT * * * IHMU04 EQU * ST P,INTSAV IFT LINE04=0 ABL ILLINT XIF IFF LINE04=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE04=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE04=0 LDKL A6,DWMU04 RB IHU100 XIF EJECT * * * IHMU05 EQU * ST P,INTSAV IFT LINE05=0 ABL ILLINT XIF IFF LINE05=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE05=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE05=0 LDKL A6,DWMU05 RB IHU100 XIF EJECT * * * IHMU06 EQU * ST P,INTSAV IFT LINE06=0 ABL ILLINT XIF IFF LINE06=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE06=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE06=0 LDKL A6,DWMU06 RB IHU100 XIF EJECT * * * IHMU07 EQU * ST P,INTSAV IFT LINE07=0 ABL ILLINT XIF IFF LINE07=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE07=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE07=0 LDKL A6,DWMU07 RB IHU100 XIF EJECT * * * IHMU08 EQU * ST P,INTSAV IFT LINE08=0 ABL ILLINT XIF IFF LINE08=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE08=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE08=0 LDKL A6,DWMU08 RB IHU100 XIF EJECT * * * IHMU09 EQU * ST P,INTSAV IFT LINE09=0 ABL ILLINT XIF IFF LINE09=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE09=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE09=0 LDKL A6,DWMU09 RB IHU100 XIF EJECT * * * IHMU10 EQU * ST P,INTSAV IFT LINE10=0 ABL ILLINT XIF IFF LINE10=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE10=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE10=0 LDKL A6,DWMU10 ABL IHU100 XIF EJECT * * * IHMU11 EQU * ST P,INTSAV IFT LINE11=0 ABL ILLINT XIF IFF LINE11=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE11=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE11=0 LDKL A6,DWMU11 ABL IHU100 XIF EJECT * * * IHMU12 EQU * ST P,INTSAV IFT LINE12=0 ABL ILLINT XIF IFF LINE12=0 IFT CPU852=1 STR A1,A15 SAVE A1-A8 ON A15 STACK STR A2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF IFF LINE12=0 IFF CPU852=1 MSR 8,A15 XIF IFF LINE12=0 LDKL A6,DWMU12 ABL IHU100 XIF EJECT * * * FINDTC * * SEARCH TCA IN POLLINGLIST * * A2 CONTAINS TCA AT ENTRY * * A3 CONTAINS ADDRESS TO FOUND TC AT EXIT * A4 CONTAINS INDEX IN LIST TO FOUND TC * * A1 A3 A4 ARE DESTROYED * CR = (Z) : ACTIVE TCA FOUND * CR = (N) : INACTIVE TCA FOUND * CR = (P) : TCA NOT FOUND * * FINDTC EQU * ADKL A15,4 LD A4,PLIST,A6 GET LENGTH OF POLLINGLIST LDR A3,A6 ADK A3,PLIST ADR A3,A4 FIND10 EQU * LDR* A1,A3 GET TCA CWR A1,A2 RF(E) FIND40 ACTIVE TC FOUND ANK A1,/FF CWR A1,A2 RF(E) FIND30 INACTIVE TC FOUND SUK A3,2 SUK A4,2 RB(P) FIND10 GET NEXT TCA ADK A4,1 ABR* A15 RETURN FIND30 EQU * LDR* A1,A3 FIND40 EQU * ABR* A15 * * PARTAB EQU * * NLIST DATA /8001,/0283,/0485,/8607,/0889,/8A0B,/8C0D,/0E8F,/1091 DATA /9213,/9415,/1697,/9819,/1A9B,/1C9D,/9E1F,/20A1,/A223 DATA /A425,/26A7,/A829,/2AAB DATA /2CAD,/AE2F,/B031,/32B3,/34B5,/B637,/38B9,/BA3B,/BC3D DATA /3EBF,/40C1,/C243,/C445,/46C7,/C849,/4ACB,/4CCD,/CE4F DATA /D051,/52D3,/54D5,/D657,/58D9,/DA5B,/DC5D,/5EDF,/E061 DATA /62E3,/64E5,/E667,/68E9,/EA6B,/EC6D,/6EEF,/70F1,/F273 DATA /F475,/76F7,/F879,/7AFB,/7CFD,/FE7F LIST EJECT * * * * TEST LINE * * TST000 EQU * * ST A8,DWTA8,A6 * * START REQUEST TIMER * LDR A1,A6 CF A15,SETIME DATA TLTO,TIMACT ST A4,DWTATP,A6 * * CONNECT MODEM * LD A7,DWTA7,A6 ST A8,DWTA8,A7 CF A5,STINP LDR A1,A6 CF A15,SETIME DATA TES020,TIMMRY ST A4,DWTTP,A6 CF A5,READ CM* DWTTP,A6 RF TES030 TES020 EQU * LDR A6,A1 TES030 EQU * CM DWTTP,A6 LD A7,DWTA7,A6 LD A8,DWTA8,A7 LDK A5,STB ADR A5,A6 CF A5,HALTIN ANK A1,1 RF(NZ) TES330 MODEM NOT OPERABLE * * START INPUT AND SEND SYNCPATTERN * LDKL A1,RECPAT ST A1,STB,A7 LDK A1,STB-4 ADR A1,A7 ST A1,DWTA5,A7 CM ECBCW,A8 RESET BIT ERROR COUNTER CF A5,STINP CF A5,WRSYN * * TRANSMITT TEST PATTERN * TES100 EQU * LDK A4,0 BIT AND CHARACTER COUNTER LDKL A3,/1FF 1:ST SHIFT STATE TES110 EQU * LDR A2,A3 ANK A2,/FF CF A5,WRITE CWK A4,/1F8 RF(E) TES150 CF A5,PATGEN RB TES110 * * COMPLETE PATTERN TRAMSMITTED * TES150 EQU * LDK A2,PAD CF A5,WRITE RB TES150 EJECT * * * SYNCRONIZE INPUT * REC000 EQU * CF A5,READ RECPAT EQU * LDR A2,A2 RF(N) TES400 CWK A2,SYN RB(E) REC000 * * COMPARE RECEIVED PATTERN WITH TRANSMITTED * LDK A4,0 BIT AND CHARACTER COUNTER LDKL A3,/1FF 1:ST SHIFT STATE TES200 EQU * XRR A2,A3 ANK A2,/FF RF(Z) TES240 NO BIT ERRORS ECR A2,A2 LDR A2,A2 RF(NN) TES220 TES210 EQU * IM ECBCW,A8 TES220 EQU * SLL A2,1 RF(Z) TES240 RB(N) TES210 TES240 EQU * CWK A4,/1F8 RF(E) TES300 CF A5,READ CF A5,PATGEN LDR A2,A2 RF(N) TES400 RB TES200 * * COMPLETE PATTERN RECEIVED * TES300 EQU * CF A5,HALTIN LDKL A1,TES320 ST A1,STB,A6 ABL TDISP TES320 EQU * LDK A1,0 TES330 EQU * CM* DWTATP,A6 TES340 EQU * CM DWTATP,A6 IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO CF A5,DISCON CF A5,HALTIN ABL TDISP EJECT * * TIME OUT * TLTO EQU * LDR A6,A1 LD A7,DWTA7,A6 LD A5,DWTA5,A6 LDK A1,NORESP RB TES340 * * CARRIER DOWN * TES400 EQU * LDK A1,NORESP RB TES330 EJECT * * * PATTERN GENERATOR * * A3:= CURRENT SHIFT STATE * A4:= BIT AND CHARACTER COUNTER * PATGEN EQU * LDR A1,A3 SLL A1,4 XRR A1,A3 ANK A1,/10 BIT9 XOR BIT5 RF(Z) PAT100 LDKL A1,/200 ORR A3,A1 FEED BACK BIT5 XOR BIT9 PAT100 EQU * SRL A3,1 ADK A4,1 LDR A1,A4 ANK A1,/7 RB(NZ) PATGEN RTN A5 IFT BDA=1 EJECT * * * POLL AND SELECT ADDRESS CONVERTING ROUTINES AND TABLES * SELADR EQU * ANK A3,/7F SUK A3,/41 LC A3,SELTAB,A3 RTN A5 EJECT * * POLL ADDRESSES * POLTAB EQU * DATA /2041 DATA /4243 DATA /4445 DATA /4647 DATA /4849 DATA /5B2E DATA /3C28 DATA /2BFF * * SELECT ADDRESSES * SELTAB EQU * DATA /2D2F DATA /5354 DATA /5556 DATA /5758 DATA /595A DATA /7C2C DATA /255F DATA /3EFF XIF IFT RQLOGG=1 EJECT * * REQUEST LOGG * 1:ST WORD=DEVICE ADDRESS, ORDER * 2:ND WORD = RETURN CODE * 3:RD WORD = TID * REQLOG EQU * STR A2,A15 STR A3,A15 LD A3,REQPEK LD A2,DWTST,A6 RF(N) RQLRTN NO REQUEST LDR* A2,A6 SCR A2,A3 ADK A3,1 LC A2,DWTOR+1,A6 SCR A2,A3 ADK A3,1 LD A2,DWTECB,A6 OR A1,ECBRC,A2 STR A1,A3 RETURN CODE ADK A3,2 LD A2,10,A6 TTAB ADDRESS ADK A2,4 LDR* A2,A2 TID STR A2,A3 ADK A3,2 CWK A3,ENDLOG RF(NG) RQLRTN LDKL A3,REQBUF RQLRTN EQU * ST A3,REQPEK LDR* A3,A15 LDR* A2,A15 ADKL A15,4 ABR* A15 EJECT * * REQUEST LOGG AREA * * 1:ST WORD=DEVICE ADDRESS, ORDER * 2:ND WORD = RETURN CODE * 3:RD WORD = TID * * REQPEK DATA REQBUF REQBUF RES 300 ENDLOG DATA /FFFF,/FFFF,/FFFF XIF IFF LOGG=0 EJECT * * * INTERRUPT LOGGING ROUTINE * LOGOUT EQU * ORKL A2,/C000 RF LOG LOGSST EQU * ORKL A2,/8000 LOGIN EQU * LOG EQU * LD A1,LOGPNT CWK A2,/C000+PAD RF(E) PADLOG PAD OUTPUT CWK A2,SYN RF(E) SYNLOG SYN INPUT LOG010 STR A2,A1 ADK A1,2 CWK A1,LOGEND RF(NE) LOGRTN NOT END OF LOGBUF LDKL A1,LOGBUF RESET POINTER LOGRTN EQU * ST A1,LOGPNT ANKL A2,/FF ADKL A15,4 ABR* A15 * PADLOG EQU * * CW A2,-2,A1 RF(E) PAD10 CM PADOUT ADK A1,2 PAD10 ADKL A1,-2 IM PADOUT RB LOG010 * SYNLOG EQU * * CW A2,-2,A1 RF(E) SYN10 CM SYNIN ADK A1,2 SYN10 ADKL A1,-2 IM SYNIN RB LOG010 EJECT * * SYNIN DATA 0 PADOUT DATA 0 * * * LOGG AREA * * /C0XX XX = OUTPUT CHARACTER * /80XX XX = INPUT CHLC STATUS * LOGPNT DATA LOGBUF LOGBUF EQU * RES LOGG LOGEND DATA /FFFF XIF END