|
|
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: 100408 (0x18838)
Notes: pts_type(SC)
Names: »DRDC81.SC«
└─⟦13e5fd45a⟧ Bits:30009699 Philips computer tape "600507"
└─⟦this⟧ »TOSSWORK/DRDC81.SC«
└─⟦bc20f3abf⟧ Bits:30009670 Philips computer tape "600126"
└─⟦this⟧ »TOSSWORK/DRDC81.SC«
IDENT DRDC81 REL 11.0 81-01-26 870105041100 =4, ERROR IN ABORT ROUTINE PRR 10.0 80-02-15 =3, ABORT ROUTINE FOR REL 11.0 PRR 10.0 80-02-15 =2, DC:MIN HEADER REL 10.1 80-01-08 =1,POWER UP 79-10-19 ******************************************************* * * PEAB-T , SOFTWARE FOR 6800 CONCENTRATOR * * DRDC81 = BSC MASTER DATA COMMUNICATION * * * * * * * ******************************************************* * * 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 DC81ON RECOVERY AT POWER ON ENTRY IH8101 INTERRUPT HANDLERS , INPUT AND OUTPUT ENTRY IH8103 ENTRY IH8105,IH8107,IH8109,IH8111,IH8113,IH8115,IH8117,IH8119,IH8121,IH8123 ENTRY IH8123 ENTRY IH8102,IH8104 ENTRY IH8106,IH8108,IH8110,IH8112,IH8114,IH8116,IH8118,IH8120,IH8122,IH8124 ENTRY IH8124 ENTRY DW8102,DW8104,DW8106 OUTPUT AND CONTROL DWT:S ENTRY DW8108,DW8110,DW8112 ENTRY DW8114,DW8116,DW8118 ENTRY DW8120,DW8122,DW8124 ENTRY DW8101,DW8103,DW8105 INPUT DWT:S ENTRY DW8107,DW8109,DW8111 ENTRY DW8113,DW8115,DW8117 ENTRY DW8119,DW8121,DW8123 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 EXTRN PFPOST WAIT FOR POWER UP IF SET =1 EJECT * * ************************** * * * SYSTEM ADOPTION * * * ************************** * * * * * CONDITIONAL ASSEMBLYy ***************************** * * * * X:A EQU 1 * X:A = NUMBER OF LINES HANDLED BY DRDC81 HILINO EQU X:A HIGHEST LINE NUMBER IN SYSTEM * * X:B EQU 10 * X:B = LENGTH OF POLL LIST PLTLEN EQU X:B POLL LIST LENGTH * * X:C EQU 350 * X:C = MAX BLOCKLENGTH MAXTBL EQU X:C MAX LENGTH OF TRANSMISSION BLOCK * * X:D EQU 400 LOGG EQU X:D * IF X:D IS UNEQUAL TO ZERO, THE INTERRUPT LOGG IS INCLUDED. * LOGG AREA LENGTH = X:D * * X:E EQU 3 * X:E = RETRY LIMIT FOR RECOVERY RTYSYS EQU X:E RETRY LIMIT FOR RECOVERY ( SYSGEN ) * X:F EQU 0 * SALCUZ EQU X:F IF =X:F DC CONTROL UNIT 6834 =1 DC CONTROL UNIT 6857 * IFF SALCUZ=1 * * * X:G EQU /22 * X:G = INPUT DEVICE ADDRESS FOR LINE 01 * * X:H EQU /4 * X:H = INPUT DEVICE ADDRESS FOR LINE 02 * * X:I EQU /5 * X:I = INPUT DEVICE ADDRESS FOR LINE 03 * * X:J EQU /6 * X:J = INPUT DEVICE ADDRESS FOR LINE 04 * * X:K EQU /7 * X:K = INPUT DEVICE ADDRESS FOR LINE 05 * * X:L EQU /20 * X:L = INPUT DEVICE ADDRESS FOR LINE 06 * * X:M EQU /21 * X:M = INPUT DEVICE ADDRESS FOR LINE 07 * * X:N EQU /23 * X:N = INPUT DEVICE ADDRESS FOR LINE 08 * * X:O EQU /24 * X:O = INPUT DEVICE ADDRESS FOR LINE 09 * * X:P EQU /25 * X:P = INPUT DEVICE ADDRESS FOR LINE 10 * * X:Q EQU /26 * X:Q = INPUT DEVICE ADDRESS FOR LINE 11 * * X:R EQU /27 * X:R = INPUT DEVICE ADDRESS FOR LINE 12 * * * XIF IFT SALCUZ=1 * * * X:G EQU /0A * X:G = INPUT DEVICE ADDRESS FOR LINE 01 * * * X:H EQU /1A * X:H = INPUT DEVICE ADDRESS FOR LINE 02 * * * * * XIF * * X:S EQU 1000 MMU-BUFFER SIZE * X:S = BUFFER SIZE IN WORDS TBUFL EQU X:S * * MMUPAG EQU 0 * IF MMUPAG = 1 MMU-PAGING IS INCLUDED * CPU852 EQU 1 IF CPU852=1 NO MULTIPLE STORE/LOAD IF CPU852=0 INCLUDES MULTIPLE STORE/LOAD =0 * * DEVIND EQU 2 BUFLEN EQU TBUFL+TBUFL MMU BUFFER SIZE EJECT * ******************************************************* * * SYSTEM PARAMETERS * ******************************************************* * LINE01 EQU PLTLEN LINE02 EQU PLTLEN LINE03 EQU PLTLEN LINE04 EQU PLTLEN LINE05 EQU PLTLEN LINE06 EQU PLTLEN LINE07 EQU PLTLEN LINE08 EQU PLTLEN LINE09 EQU PLTLEN LINE10 EQU PLTLEN LINE11 EQU PLTLEN LINE12 EQU PLTLEN TIMRE4 EQU 2 RECEIVE TIMEOUT 4-WIRE (200MS) TIMMRY EQU 5 MODEM READY TIME OUT TIMACT EQU 150 ACTIVITY TIMER RTYLIM EQU -RTYSYS RETRY LIMIT FOR RECOVERY NUMSYN EQU -3 NUMBER OF SYN:S DELAY EQU 1 READ REQ DELAY AT STATUS POLL HALTED BSYTIM EQU 50 TIME OUT FOR TC BUSY TIMENQ EQU 40 TIME OUT FOR ENQ BDA EQU 0 * IF BDA = 1, TC ADDRESSES ARE ADAPTED FOR THE BANKDATA CASE: * INPUT = /41 -/4F (A - O) * OUTPUT = ADDRESSES ACCORDING TO IBM REMOTE CONTROL UNIT ADDRESSING RQLOGG EQU 0 FOR TEST PURPOSES ONLY * IF RQLOGG = 1, A REQUEST LOGG IS INCLUDED, SAVING * LINE NUMBER, ORDER, RETURN CODE AND TID FOR THE 100 LAST REQUESTS. EJECT * * * CONSTANTS * * BIT0 EQU /8000 BIT1 EQU /4000 BIT2 EQU /2000 BIT3 EQU /1000 BIT4 EQU /800 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 ********************************************************* * * APPLICATION INTERFACE : ORDERS AND RETURNCODES * ********************************************************** * * ORDERS * * /00 - TEST LINE * /02 - READ * /06 - WRITE * /22 - OPEN LINE * /24 - CLOSE LINE * /26 - HALT POLLING * /27 - START POLLING * /37 - OPEN TC * /38 - CLOSE TC EJECT * * RETURN CODES: * * STATUS WORD - 0 REQUEST COMPLETED AS EXPECTED * * STATUS WORD =/ 0 SEE BITS BELOW * * COMPLT EQU 0 STATUS =0 * 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 CODERR EQU BIT13 CODE NOT ALLOWED, ORDER /06 INCLEN EQU BIT12 INCORRECT LENGTH, ORDER /02 TCINAC EQU BIT11 TC INACTIVE, ORDER /02, /06, /37 TCBUSY EQU BIT10 TC BUS , ORDER /06 RETRAN EQU BIT7 RETRANSMISSION, ORDER /02, /06 CALIND EQU BIT6 CALLING INDICATOR, NOT USED LINSTE EQU BIT4+BIT0 LINE OPEN/CLOSED, ALL ORDERS POLHLT EQU BIT4+BIT0 POLLING HALTED, ORDER/02 TCACT EQU BIT2 TC ACTIVE, ORDER /02 LSTOVF EQU BIT0 POLLIST OVERFLOW, ORDER /37 TCNLST EQU BIT0 TC NOT IN POLL LIST, ORDER /06, /38 INVTCA EQU BIT0 INVALID TCA, ORDER /02, /37 EJECT * ******************************************************* * * DEVICE WORK AREA EQUATES * ******************************************************* * IFT MMUPAG=0 DWTDRD EQU /10 START OF DRIVER DEFINED PART OF DWT XIF * IFF MMUPAG=0 DWTDRD EQU /14 START OF DRIVER DEFINED PART OF DWT XIF * DWTTP EQU DWTDRD+/00 DWT TIMER POINTER DWTATP EQU DWTDRD+/02 ACTIVITY TIMER POINTER STB EQU DWTDRD+/0E STACK BASE DWTSAV EQU DWTDRD+/10 DWT SAVE AREA DWTA5 EQU DWTSAV+4 A5 DWTA6 EQU DWTSAV+6 A6 DWTA7 EQU DWTSAV+8 A7 DWTA8 EQU DWTSAV+10 A8 DWTST1 EQU DWTDRD+/1C CU 6857 STATUS IND O/P : =0 O/P NOT ACT >0 O/P ACT I/P : =0 I/P NOT ACT >0 I/P ACT DWTRTY EQU DWTDRD+/1E DWT RETRY COUNTER DWTBCC EQU DWTDRD+/20 DWT BCC COUNTER DWTACK EQU DWTDRD+/22 DWT ACK COUNTER PACT EQU DWTDRD+/24 LAST POLLED ACTIVE TC PINACT EQU DWTDRD+/26 LAST POLLED INACTIVE TC PLIST EQU DWTDRD+/28 POLLIST ADDRESS IN OUTPUT DWT TPCONT EQU /14 TP ERROR COUNTER SYNCON EQU DWTATP SYN COUNTER (DWTATP,A7) EJECT * * * * CONDITIONAL ASSEMBLY PARAMETERS * IFF LINE01=0 MLIN01 EQU 1 AT LEAST 1 LINE IFF HILINO=1 MLIN02 EQU 1 AT LEAST 2 LINES IFF HILINO=2 MLIN03 EQU 1 AT LEAST 3 LINES IFF HILINO=3 MLIN04 EQU 1 AT LEAST 4 LINES IFF HILINO=4 MLIN05 EQU 1 AT LEAST 5LINES IFF HILINO=5 MLIN06 EQU 1 AT LEAST 6 LINES IFF HILINO=6 MLIN07 EQU 1 AT LEAST 7 LINES IFF HILINO=7 MLIN08 EQU 1 AT LEAST 8 LINES IFF HILINO=8 MLIN09 EQU 1 AT LEAST 9 LINES IFF HILINO=9 MLIN10 EQU 1 AT LEAST 10 LINES IFF HILINO=10 MLIN11 EQU 1 AT LEAST 11 LINES IFF HILINO=11 MLIN12 EQU 1 12 LINES XIF IFF HILINO=12 MLIN12 EQU 0 LESS THAN 12 IFF HILINO=11 MLIN11 EQU 0 LESS THAN 11 IFF HILINO=10 MLIN10 EQU 0 LESS THAN 10 IFF HILINO=9 MLIN09 EQU 0 LESS THAN 09 IFF HILINO=8 MLIN08 EQU 0 LESS THAN 8 IFF HILINO=7 MLIN07 EQU 9 LESS THAN 7 IFF HILINO=6 MLIN06 EQU 0 LESS THAN 6 IFF HILINO=5 MLIN05 EQU 0 LESS THAN 5 IFF HILINO=4 MLIN04 EQU 0 LESS THAN 4 IFF HILINO=3 MLIN03 EQU 0 LESS THAN 3 IFF HILINO=2 MLIN02 EQU 0 LESS THAN 2 XIF IFT LINE01=0 MLIN01 EQU 0 XIF EJECT * ******************************************************* * * DWT STATUS WORD CONTENTS * ******************************************************* * * DWTST BIT #00 : 0 = DEVICE BUSY * 1 = DEVICE NOT BUSY * BIT 13 : 1 = TC BUSY * 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 * ***************************************************************** * * * LINE CONTROL UIT CONTROL EQU:S AND SST STATUS BITS * ***************************************************************** * IFT SALCUZ=1 CBNPAR EQU /0 NO PARITY CBEPAR EQU /4 EVEN CHAR PARITY CBOPAR EQU /C ODD CHAR PARITY PARITY EQU CBNPAR ODD PARITY FOR ASCII XIF IFF SALCUZ=1 CBDISC EQU /0 DISCONNECT MODEM FROM LINE CBSTOP EQU /0 CIO STOP XIF IFT SALCUZ=1 CBDISC EQU /1 CIO DISCONNECT MODEM FROM LINE CBSTOP EQU /0 CIO STOP CU XIF * * * * SBNOOP EQU /1 SST STAUS MODEM NOT OPERABEL SBTHRU EQU /02 THROUGHPUT ERROR SBPARI EQU /04 CHAR PAR ERROR SBCARR EQU /20 CARRIER OFF SBCALL EQU /40 INCOMMING CALL SBERR EQU /27 SBNOOP,SBTHRU,SBPARI,SBCARR SBCRCL EQU /60 SBCARR,SBCALL EJECT * ******************************************************* * * CHLC DEVICE ADDRESS EQUATES * ******************************************************* * DAMI01 EQU X:G INPUT CHLC 1 DAMI02 EQU X:H IFF SALCUZ=1 * * DAMI03 EQU X:I DAMI04 EQU X:J DAMI05 EQU X:K DAMI06 EQU X:L DAMI07 EQU X:M DAMI08 EQU X:N DAMI09 EQU X:O DAMI10 EQU X:P DAMI11 EQU X:Q DAMI12 EQU X:R DAMU01 EQU DAMI01+/10 OUTPUT CHLC 1 DAMU02 EQU DAMI02+/10 DAMU03 EQU DAMI03+/10 DAMU04 EQU DAMI04+/10 DAMU05 EQU DAMI05+/10 DAMU06 EQU DAMI06+/10 DAMU07 EQU DAMI07+/10 DAMU08 EQU DAMI08+/10 DAMU09 EQU DAMI09+/10 DAMU10 EQU DAMI10+/10 DAMU11 EQU DAMI11+/10 DAMU12 EQU DAMI12+/10 * XIF * * * IFT SALCUZ=1 * DAMU01 EQU DAMI01+1 OUTPUT CHLC 1 DAMU02 EQU DAMI02+1 * XIF EJECT * * * BSC MASTER CONFIGURATION TABLE * * DWMTAB DATA DWMTE-* TABLE LENGTH DATA DW8101 DWT FOR INPUT ON LINE 1 DATA DW8102 DWT FOR OUTPUT AND CONTROL ON LINE 1 IFF HILINO=1 DATA DW8104,DW8103 IFF HILINO=2 DATA DW8106,DW8105 IFF HILINO=3 DATA DW8108,DW8107 IFF HILINO=4 DATA DW8110,DW8109 IFF HILINO=5 DATA DW8112,DW8111 IFF HILINO=6 DATA DW8114,DW8113 IFF HILINO=7 DATA DW8116,DW8115 IFF HILINO=8 DATA DW8118,DW8117 IFF HILINO=9 DATA DW8120,DW8119 IFF HILINO=10 DATA DW8122,DW8121 IFF HILINO=11 DATA DW8124,DW8123 XIF DWMTE EQU * * * EJECT * * ***************************** * * * DEVICE WORK TABLES * * * ***************************** * IFF LINE01=0 * * * DEVICE WORK TABLE FOR LINE 01, OUTPUT AND CONTROL * * DW8102 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 IFT MMUPAG=1 DATA 0 ADDRESS OF USER ECB DATA MECB02 ADDRESS OF DRIVER ECB XIF IFT MLIN01=1 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 DW8102 OUTPUT DWT ADDRESS DATA DW8101 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND 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 * IFT MMUPAG=1 MECB02 DATA 0,DCBF02,0,0,0,0 DRIVER ECB DCBF02 RES TBUFL+1 OUTPUT MMU-BUFFER XIF IFT MLIN01=1 EJECT * * * DEVICE WORK TABLE FOR LINE 01, INPUT * * DW8101 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 IFT MMUPAG=1 DATA 0 ADDRESS OF USER ECB DATA MECB01 DRIVER ECB XIF IFF LINE01=0 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 DW8102 OUTPUT DWT ADDRESS DATA DW8101 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND IFT MMUPAG=1 MECB01 DATA 0,DCBF01,0,0,0,0 DRIVER ECB DCBF01 RES TBUFL+1 INPUT MMU BUFFER XIF IFT MLIN02=1 EJECT * * * DEVICE WORK TABLE FOR LINE 02, OUTPUT AND CONTROL * * DW8104 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 IFT MMUPAG=1 DATA 0 ADDRESS OF USER ECB DATA MECB04 DRIVER ECB XIF IFT MLIN02=1 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 DW8104 OUTPUT DWT ADDRESS DATA DW8103 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND 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 IFT MMUPAG=1 MECB04 DATA 0,DCBF04,0,0,0,0 DRIVER ECB DCBF04 RES TBUFL+1 OUTPUT MMU BUFFER XIF IFT MLIN02=1 * EJECT * * * DEVICE WORK TABLE FOR LINE 02, INPUT * * DW8103 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 IFT MMUPAG=1 DATA 0 ADDRESS OF USER ECB DATA MECB03 DRIVER ECB XIF IFT MLIN02=1 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 DW8104 OUTPUT DWT ADDRESS DATA DW8103 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND IFT MMUPAG=1 MECB03 DATA 0,DCBF03,0,0,0,0 DRIVER ECB DCBF03 RES TBUFL+1 INPUT MMUBUFFER XIF IFT MLIN03=1 EJECT * * * DEVICE WORK TABLE FOR LINE 03, OUTPUT AND CONTROL * * DW8106 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB06 XIF IFT MLIN03=1 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 DW8106 OUTPUT DWT ADDRESS DATA DW8105 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND 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 IFT MMUPAG=1 MECB06 DATA 0,DCBF06,0,0,0,0 DRIVER ECB DCBF06 RES TBUFL+1 OUTPUT MMU BUFFER XIF IFT MLIN03=1 * EJECT * * * DEVICE WORK TABLE FOR LINE 03, INPUT * * DW8105 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB05 DRIVER ECB XIF IFT MLIN03=1 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 DW8106 OUTPUT DWT ADDRESS DATA DW8105 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND IFT MMUPAG=1 MECB05 DATA 0,DCBF05,0,0,0,0 DRIVER ECB DCBF05 RES TBUFL+1 XIF IFT MLIN04=1 EJECT * * * DEVICE WORK TABLE FOR LINE 04, OUTPUT AND CONTROL * * DW8108 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 IFT MMUPAG=1 DATA 0 ADDRESS OF USER ECB DATA MECB08 DRIVER ECB XIF IFT MLIN04=1 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 DW8108 OUTPUT DWT ADDRESS DATA DW8107 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND 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 IFT MMUPAG=1 MECB08 DATA 0,DCBF08,0,0,0,0 DRIVER ECB DCBF08 RES TBUFL+1 OUTPUT MMU BUFFER XIF IFT MLIN04=1 * EJECT * * * DEVICE WORK TABLE FOR LINE 04, INPUT * * DW8107 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 IFT MMUPAG=1 DATA 0 USER BUFFER DATA MECB07 DRIVER ECB XIF IFT MLIN04=1 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 DW8108 OUTPUT DWT ADDRESS DATA DW8107 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND MECB07 DATA 0,DCBF07,0,0,0,0 DRIVER ECB DCBF07 RES TBUFL+1 MMU BUFFER INPUT XIF IFT MLIN05=1 EJECT * * * DEVICE WORK TABLE FOR LINE 05, OUTPUT AND CONTROL * * DW8110 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB10 DRIVER ECB XIF IFT MLIN05=1 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 DW8110 OUTPUT DWT ADDRESS DATA DW8109 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND 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 IFT MMUPAG=1 MECB10 DATA 0,DCBF10,0,0,0,0 DRIVER ECB DCBF10 RES TBUFL+1 MMUBUFFER OUTPUT XIF IFT MLIN05=1 * EJECT * * * DEVICE WORK TABLE FOR LINE 05, INPUT * * DW8109 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB09 DRIVER ECB XIF IFT MLIN05=1 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 DW8110 OUTPUT DWT ADDRESS DATA DW8109 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND IFT MMUPAG=1 MECB09 DATA 0,DCBF09,0,0,0,0 DRIVER ECB DCBF09 RES TBUFL+1 MMU BUFFER INPUT XIF IFT MLIN06=1 EJECT * * * DEVICE WORK TABLE FOR LINE 06, OUTPUT AND CONTROL * * DW8112 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB12 DRIVER ECB XIF IFT MLIN06=1 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 DW8112 OUTPUT DWT ADDRESS DATA DW8111 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND 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 MECB12 DATA 00,DCBF12,0,0,0,0 DRIVER ECB DCBF12 RES TBUFL+1 XIF IFT MLIN06=1 * EJECT * * * DEVICE WORK TABLE FOR LINE 06, INPUT * * DW8111 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB11 DRIVER ECB XIF IFT MLIN06=1 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 DW8112 OUTPUT DWT ADDRESS DATA DW8111 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND IFT MMUPAG=1 MECB11 DATA 0,DCBF11,0,0,0,0 DRIVER ECB DCBF11 RES TBUFL+1 MMU BUFFER INPUT XIF IFT MLIN07=1 EJECT * * * DEVICE WORK TABLE FOR LINE 07, OUTPUT AND CONTROL * * DW8114 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 IFT MMUPAG=1 DATA 0 USERECB DATA MECB14 DRIVER ECB XIF IFT MLIN07=1 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 DW8114 OUTPUT DWT ADDRESS DATA DW8113 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND 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 IFT MMUPAG=1 MECB14 DATA 0,DCBF14,0,0,0,0 DRIVER ECB DCBF14 RES TBUFL+1 XIF IFT MLIN07=1 * EJECT * * * DEVICE WORK TABLE FOR LINE 07, INPUT * * DW8113 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB13 DRIVER ECB XIF IFT MLIN07=1 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 DW8114 OUTPUT DWT ADDRESS DATA DW8113 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND IFT MMUPAG=1 MECB13 DATA 0,DCBF13,0,0,0,0 DRIVER ECB DCBF13 RES TBUFL+1 MMU BUFFER INPUT XIF IFT MLIN08=1 EJECT * * * DEVICE WORK TABLE FOR LINE 08, OUTPUT AND CONTROL * * DW8116 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB16 DRIVER ECB XIF IFT MLIN08=1 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 DW8116 OUTPUT DWT ADDRESS DATA DW8115 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND 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 IFT MMUPAG=1 MECB16 DATA 0,DCBF16,0,0,0,0 DRIVER ECB DCBF16 RES TBUFL+1 MMU OUTPUT BUFFER XIF IFT MLIN08=1 * EJECT * * * DEVICE WORK TABLE FOR LINE 08, INPUT * * DW8115 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB15 DRIVER ECB XIF IFT MLIN08=1 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 DW8116 OUTPUT DWT ADDRESS DATA DW8115 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND IFT MMUPAG=1 MECB15 DATA 0,DCBF15,0,0,0,0 DRIVER ECB DCBF15 RES TBUFL+1 MMU BUFFER INPUT XIF IFT MLIN09=1 EJECT * * * DEVICE WORK TABLE FOR LINE 09, OUTPUT AND CONTROL * * DW8118 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB18 DRIVER ECB XIF IFT MLIN09=1 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 DW8118 OUTPUT DWT ADDRESS DATA DW8117 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND 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 IFT MMUPAG=1 MECB18 DATA 0,DCBF18,0,0,0,0 DRIVER ECB DCBF18 RES TBUFL+1 MMUBUFFER OUTPUT XIF IFT MLIN09=1 * EJECT * * * DEVICE WORK TABLE FOR LINE 09, INPUT * * DW8117 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB17 DRIVER ECB XIF IFT MLIN09=1 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 DW8118 OUTPUT DWT ADDRESS DATA DW8117 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND IFT MMUPAG=1 MECB17 DATA 0,DCBF17,0,0,0,0 DRIVER ECB DCBF17 RES TBUFL+1 MMU BUFFER INPUT XIF IFT MLIN10=1 EJECT * * * DEVICE WORK TABLE FOR LINE 10, OUTPUT AND CONTROL * * DW8120 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB20 DRIVER ECB XIF IFT MLIN10=1 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 DW8120 OUTPUT DWT ADDRESS DATA DW8119 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND 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 IFT MMUPAG=1 MECB20 DATA 0,DCBF20,0,0,0,0 DRIVER ECB DCBF20 RES TBUFL+1 MMUBUFFER OUTPUT XIF IFT MLIN10=1 * EJECT * * * DEVICE WORK TABLE FOR LINE 10, INPUT * * DW8119 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB19 DRIVER ECB XIF IFT MLIN10=1 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 DW8120 OUTPUT DWT ADDRESS DATA DW8119 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND IFT MMUPAG=1 MECB19 DATA 0,DCBF19,0,0,0,0 DRIVER ECB DCBF19 RES TBUFL+1 MMU BUFFER INPUT XIF IFT MLIN11=1 EJECT * * * DEVICE WORK TABLE FOR LINE 11, OUTPUT AND CONTROL * * DW8122 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB22 DRIVER ECB XIF IFT MLIN11=1 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 DW8122 OUTPUT DWT ADDRESS DATA DW8121 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND 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 IFT MMUPAG=1 MECB22 DATA 0,DCBF22,0,0,0,0 DRIVER ECB DCBF22 RES TBUFL+1 MMUBUFFER OUTPUT XIF IFT MLIN11=1 * EJECT * * * DEVICE WORK TABLE FOR LINE 11, INPUT * * DW8121 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB21 DRIVER ECB XIF IFT MLIN11=1 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 DW8122 OUTPUT DWT ADDRESS DATA DW8121 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND IFT MMUPAG=1 MECB21 DATA 0,DCBF21,0,0,0,0 DRIVER ECB DCBF21 RES TBUFL+1 MMU BUFFER INPUT XIF IFT MLIN12=1 EJECT * * * DEVICE WORK TABLE FOR LINE !2, OUTPUT AND CONTROL * * DW8124 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB24 DRIVER ECB XIF IFT MLIN12=1 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 DW8124 OUTPUT DWT ADDRESS DATA DW8123 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND 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 IFT MMUPAG=1 MECB24 DATA 0,DCBF24,0,0,0,0 DRIVER ECB DCBF24 RES TBUFL+1 MMU BUFFER OUTPUT XIF IFT MLIN12=1 * EJECT * * * DEVICE WORK TABLE FOR LINE 12, INPUT * * DW8123 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 IFT MMUPAG=1 DATA 0 USER ECB DATA MECB23 DRIVER ECB XIF IFT MLIN12=1 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 DW8124 OUTPUT DWT ADDRESS DATA DW8123 INPUT DWT ADDRESS DATA 0 SAVE AREA FOR A8 DATA 0 CU 6857 I/O IND IFT MMUPAG=1 MECB23 DATA 0,DCBF23,0,0,0,0 DRIVER ECB DCBF23 RES TBUFL+1 MMU BUFFER INPUT XIF XIF IFF HILINO=12 EJECT * * * * DUMMY ENTRIES * * DW8123 EQU * DW8124 EQU * IH8123 EQU * IH8124 EQU * IFF HILINO=11 DW8121 EQU * DW8122 EQU * IH8121 EQU * IH8122 EQU * IFF HILINO=10 DW8119 EQU * DW8120 EQU * IH8119 EQU * IH8120 EQU * IFF HILINO=9 DW8117 EQU * DW8118 EQU * IH8117 EQU * IH8118 EQU * IFF HILINO=8 DW8115 EQU * DW8116 EQU * IH8115 EQU * IH8116 EQU * IFF HILINO=7 DW8113 EQU * DW8114 EQU * IH8113 EQU * IH8114 EQU * IFF HILINO=6 DW8111 EQU * DW8112 EQU * IH8111 EQU * IH8112 EQU * IFF HILINO=5 DW8109 EQU * DW8110 EQU * IH8109 EQU * IH8110 EQU * IFF HILINO=4 DW8107 EQU * DW8108 EQU * IH8107 EQU * IH8108 EQU * IFF HILINO=3 DW8105 EQU * DW8106 EQU * IH8105 EQU * IH8106 EQU * IFF HILINO=2 DW8103 EQU * DW8104 EQU * IH8103 EQU * IH8104 EQU * ST P,INTSAV ABL ILLINT XIF EJECT * * * * * * ******************************************************* * * * D R I V E R A C T I V A T I O N * * ******************************************************* ******************************************************* * * * * * EJECT ******************************************************* * * INPUT REQUESTS * ******************************************************* * * * * ACTIVATION BLOCK * DATA BUFLEN DATA DEVIND DRMIAD DATA MIACT DWT REFERENCE DATA ABORT ADDRESS OF ABORT ROUTINE DATA 0,0 DC:MIN HEADER =2 * * MIACT EQU * SUK A7,2 RF(Z) RD ORDER 01: READ MIA100 ABL DISIOE ILLEGAL ORDER * * * ORDER 02 : READ * * RD EQU * IFT MMUPAG=1 LD A2,ECBRL,A8 REQUESTED LENGTH CWK A2,BUFLEN SIZE OK? ABL(G) IL:LEN ILLEGAL LENGTH XIF LD A1,DWTST,A6 GET STATUS LDR A2,A1 ANK A1,1 RF(NZ) RD400 LINE OPEN RD100 EQU * LDKL 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 * ******************************************************* * * * * ACTIVATION BLOCK * DATA BUFLEN DATA DEVIND DRMUAD DATA MUACT DWT REFERENCE DATA ABORT ABORT ROUTINE DATA 0,0 DC:MIN HEADER =2 * * 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 LD A1,DWTST,A6 ANK A1,1 RF(NZ) OLI130 RECOVERY AT POWER ON LDK A1,1 ORS A1,DWTST,A6 INDICATE LINE OPEN ORS A1,DWTST,A7 LDK A1,0 IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO COMPLETE REQUEST OLI130 EQU * LDR A1,A6 LDR A4,A6 ADK A4,DWTATP 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 LDK A5,STB ADR A5,A6 OLI160 EQU * CF A5,DISCON 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 * LDKL A1,INVTCA RC : INVALID ADDRESS RB OLI170 OTC110 EQU * LDKL A1,CALIND RC: CALLING INDICATOR RB OLI170 EJECT * * * ORDER 06 : WRITE * * WRT EQU * IFT MMUPAG=1 LD A2,ECBRL,A8 REQUESTED LENGTH? CWK A2,BUFLEN GREATER THAN MMU BUFFER LENGTH RF(G) IL:LEN ILLEGAL LENGTH XIF 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 * LDKL A1,TCNLST RC: TC NOT IN POLLIST RB WRT120 * * * ORDER 38: CLOSE TC * WRT150 EQU * LD A2,ECBCW,A8 TCA RB WRT105 ************************************************************************** * * ILLEGAL LENGTH * ************************************************************************* IL:LEN EQU * LDKL A1,INCLEN ILLEGAL LENGTH ABL DISEND DISPATCHER EJECT ************************************************************************* * * ABORT ROUTINE * ************************************************************************ ABORT EQU * LD A2,DWTTP,A6 TIMER POINTER =4 RF(Z) AB:10 NO TIMER RUNNING CM* DWTTP,A6 CLEAR TIMER CM DWTTP,A6 CLEAR TIMER POINTER AB:10 EQU * AB:RTN EQU * . =3 ABL DISEND COMPLETE REQUEST =3 EJECT * ******************************************************* ******************************************************* * * * R E C O V E R Y A T P O W E R O N * * ******************************************************* ******************************************************* * DC81ON EQU * INH LD A3,DWMTAB TABLE LENGTH DRM000 EQU * SUK A3,2 RF(Z) DRM300 END ODF TABLE LD A6,DWMTAB,A3 DWT ADDRESS IFT SALCUZ=1 CF A15,CINIT CLEAR I/O CU IND. XIF 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 * LDK A5,STB LD A7,DWTA7,A6 ADR A5,A6 CF A5,DISC05 CLEAR ANY RUNNING TIMER LDR A1,A6 CF A15,SETIME DATA DRM400 DATA TIMMRY ST A4,DWTTP,A6 RB DRM000 DRM300 RTN A15 * * REOPEN LINE * DRM400 EQU * LDR A6,A1 LD A7,DWTA7,A6 CM DWTTP,A6 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 * ******************************************************* BMM000 EQU * ENTRY AFTER TENDIO LDKL A1,TDISP STR A1,A15 LDKL A1,/C040 STR A1,A15 SUKL A15,16 BMM010 EQU * RESTART ACTIVITY TIMER LDKL A1,-TIMACT ST* A1,DWTATP,A6 BMM EQU * CHECK IF ANYTHING TO DO LD A1,DWTST,A6 GET OUTPUT STATUS RF(NN) OUTPUT OUTPUT OR CONTROL REQUEST BMM100 EQU * LD A1,DWTST,A7 GET INPUT STATUS ABL(NN) POLL READ REQUEST BMM200 EQU * ENTRY AFTER ACTIVITY WITHOUT I/O CF A5,STOUT LDK A2,PAD CF A5,WRITE RB BMM010 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 RF OUT300 TC ALLREADY IN LIST OUT105 EQU * LDK A2,0 CF A15,FINDTC SEARCH EMPTY PLACE IN POLLINGLIST RF(Z) OUT110 LDKL 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 LDKL A1,POLHLT RC:POLL HALTED LDR A6,A7 IFT RQLOGG=1 CF A15,REQLOG XIF LDK A1,COMPLT RC = COMPLETED CF A15,TENDIO LD A6,DWTA6,A7 RELOAD A6 OUT300 EQU * LDK A1,COMPLT RC = COMPLETE OUT310 EQU * IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO COMPLETE REQUEST ABL BMM000 * * OUT350 EQU * START POLLING LD A1,DWTST,A7 ANK A1,2 RB(Z) OUT300 POLLING ALLREADY PERMITTED XRS A1,DWTST,A7 RB OUT300 EJECT * * * ORDER /24 : CLOSE LINE * * OUT400 EQU * CF A5,DISCON DISCONNECT MODEM LDK A1,COMPLT STATUS COMPLETE IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO LDKL 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 * POLL HALTED CF A5,HALTUT LDR A1,A7 CF A15,SETIME DATA POLL10,DELAY ST A4,DWTTP,A7 ABL READ10 POLL10 EQU * COMPLETE READREQ AFTER DELAY LDR A7,A1 RELOAD A7 LD A6,DWTA6,A7 RELOAD A6 CM DWTTP,A7 LDK A5,STB ADR A5,A6 LD A8,DWTECB,A7 CM ECBRC,A8 RESET RETURN CODE LDKL A1,POLHLT 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 ST A1,PACT,A6 UPDATE 'PACT' POL130 EQU * LD A1,PINACT,A6 ABL(Z) BMM200 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 BMM200 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,SEPOSE 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 POL220 EQU * CF A5,WREOT LD A1,DWTOR,A7 ABL(N) BMM010 TC ALLREADY INACTIVE 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 * LDR A6,A7 IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO END READ REQ LD A6,DWTA6,A7 RESTORE A6 ABL BMM000 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 POL240 EQU * CF A5,HALTIN LD A1,DWTOR,A7 ABL(NN) BMM010 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 * 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 CWK A2,SYN RB(E) MIP100 SKIP SYN XRS A2,DWTBCC,A6 CALCULATE BCC CWK A2,ETB RF(E) MIP210 ETB RECEIVED CWK A2,ETX ABL(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 * LDK A3,0 INDICATE BLOCK RECOVERY MIP135 EQU * CF A5,HALTIN 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,REDLTS WAIT FOR REPLY CWK A2,STX RF(E) MIP160 CWK A2,ENQ RB(E) MIP135 MIP145 EQU * CWK A2,EOT ABL(E) POL240 EOT RECEIVED 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 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 MIP215 EQU * CF A5,REDLTS CWK A2,STX RB(E) MIP105 CWK A2,ENQ RB(NE) MIP145 CF A5,HALTIN LDK A1,1 XRS A1,DWTACK,A6 IM DWTRTY,A6 RB(NL) MIP200 CF A5,WRACK RB MIP215 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,REDLTS WAIT FOR EOT OR ENQ 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 EJECT * * * SELECT : TRANSFER MESSAGE TO TC * * SELECT EQU * LD A1,DWTST,A6 ANK A1,4 RF(NZ) SEL160 TC BUSY 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 CF A5,HALTIN ANK A1,1 ABL(NZ) OLI160 MOD NOT OP SEL110 EQU * 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) BMM000 NOT 1:ST INACTIVE TC ST A2,PINACT,A6 ABL BMM000 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 * LD A1,DWTTP,A6 ABL(NZ) BMM100 TIME SUPERVISIOM ALLREADY STARTED LDR A1,A6 CF A15,SETIME DATA SEL150,BSYTIM ST A4,DWTTP,A6 ABL BMM100 SEL150 EQU * TC BUSY TIME OUT LDR A6,A1 LDK A5,STB ADR A5,A6 LD A7,DWTA7,A6 CM DWTTP,A6 CLEAR TIMER POINTER LDK A1,4 ORS A1,DWTST,A6 INDICATE TC BUSY ABL READ10 RETURN SEL160 EQU * COMPLETE REQUEST, TC BUSY LDK A1,4 XRS A1,DWTST,A6 RESET STATUS 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 BMM000 EJECT * * * MUT : MESSAGE OUTPUT * * MUT EQU * LD A1,DWTTP,A6 RF(Z) MUT000 CM* DWTTP,A6 CM DWTTP,A6 MUT000 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 CF A15,REQLOG XIF CF A15,TENDIO COMPLETE WRITE REQUEST ABL BMM000 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 LDK A1,1 XRS A1,DWTACK,A6 NGR A4,A4 ADR A3,A4 ADS A4,ECBEL,A8 LDKL A1,RETRAN ORS A1,ECBRC,A8 ABL 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 CF A5,WRSYN START OUTPUT AND SEND SYN LDK A2,EOT CF A5,WRITE SEND EOT LDK A2,PAD CF A5,WRITE SEND PAD 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 CF A5,HALTUT TERMINATE OUTPUT RTN A5 IFT SALCUZ=1 EJECT * * * * CINIT : INITIALIZE LINE CONTROL UNIT INFO * CINIT EQU * CM DWTST1,A6 CLEAR I/O ACTIVE IND. ADKL A15,4 INCREMENT STACK POINTER ABR* A15 RETURN TO CALLER XIF EJECT * * * START TRANSMITTER AND SEND SYN * * WRSYN EQU * CF A5,STOUT START TRANSMITTER WRSY10 EQU * LDKL A2,NUMSYN NUMBER OF SYNC CHARACTERS ST A2,SYNCON,A7 WRSY20 EQU * LDK A2,SYN CF A5,WRITE IM SYNCON,A7 RB(NZ) WRSY20 RTN A5 EJECT * * * WREOT : SEND SINGLE EOT * * WREOT EQU * CF A5,WRSYN START OUTPUT AND SEND SYN LDK A2,EOT CF A5,WRITE SEND EOT WRE10 EQU * LDK A2,PAD CF A5,WRITE SEND PAD LDK A2,PAD CF A5,WRITE CF A5,HALTUT TERMINATE OUTPUT RTN A5 * * * WRENQ : SEND SINGLE ENQ * * WRENQ EQU * CF A5,WRSYN START OUTPUT AND SEND SYN LDK A2,ENQ CF A5,WRITE SEND ENQ RB WRE10 EJECT * * * WRNAK : SEND SINGLE NAK * * WRNAK EQU * CF A5,WRSYN START OUTPUT AND SEND SYN LDK A2,NAK CF A5,WRITE SEND NAK RB WRE10 * * * 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 WRE10 EJECT * * * STINP : CONNECT MODEM/START RECEIVER * * STINP EQU * LD A1,PFPOST =1 ABL(NZ) TDISP WAIT FOR POWER UP =1 IFF SALCUZ=1 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 XIF IFT SALCUZ=1 LDK A2,PARITY DEF.PARITY LDR* A1,A7 ADR* A1,P CIO A2,1,0 CIO START INPUT EXR A1 EXECUTE START COM. ABL(NA) SST055 HW NOT PRESENT OR ERR. LDK A2,SYN LDR* A1,A7 GET OTR INST. ADR* A1,P OTR A2,1,0 EXR A1 ABL(NA) SST055 HW NOT PRESENT OR ERE. ST A1,DWTST1,A7 SET I/P ACTIVE RTN A5 XIF * * * STOUT : START TRANSMITTER * * STOUT EQU * LD A1,PFPOST =1 ABL(NZ) TDISP WAIT FOR POWER UP =1 IFF SALCUZ=1 LDR* A1,A6 ADR* A1,P CIO A2,1,0 EXR A1 RF(NA) STOU10 RF WRI200 STOU10 EQU * RTN A5 XIF IFT SALCUZ=1 LD A1,DWTST1,A6 O/P ALREADY ACTIVE ? RF(NZ) STOUT3 YES RETURN LDK A2,PARITY DEF.PARITY LDR* A1,A6 ADR* A1,P CIO A2,1,0 EXR A1 CIO START WITH PARITY RF(A) STOUT2 ACCEPTED LDR* A1,A6 NOT ACC. ADR* A1,P SST A2,0 EXR A1 CHECK SST RF(A) STOUT1 HLT STOUT1 EQU * LDK A2,PARITY RETRY CIO LDR* A1,A6 ADR* A1,P CIO A2,1,0 CIO START COM. EXR A1 STOUT2 EQU * LDK A2,SYN SYN PATTERN LDR* A1,A6 ADR* A1,P OTR A2,1,0 OTR SYN EXR A1 RF(NA) STOUT3 NOT ACCEPTED ST A1,DWTST1,A6 SET O/P ACTIVE RF WRI200 ACCEPTED WAIT FOR INT STOUT3 EQU * RTN A5 XIF EJECT * * * DISCON : DISCONNECT MODEM * * DISCON EQU * LDK A1,0 SC A1,DWTST+1,A6 SC A1,DWTST+1,A7 LDR* A1,A7 ADR* A1,P IFF SALCUZ=1 CIO A2,1,0 XIF IFT SALCUZ=1 CIO A2,0,0 XIF LDK A2,CBDISC DISCONNECT EXR A1 DISC05 EQU * LD A1,DWTATP,A6 RF(Z) DISC10 CM* DWTATP,A6 CM DWTATP,A6 DISC10 EQU * LD A1,DWTTP,A6 RF(Z) DISC20 CM* DWTTP,A6 CM DWTTP,A6 DISC20 EQU * LD A1,DWTTP,A7 RF(Z) DISC30 CM* DWTTP,A7 CM DWTTP,A7 DISC30 EQU * RTN A5 * * * HALTIN : HALT LINE INPUT * * HALTIN EQU * ST A2,DWTST1,A7 SAVE A2 LDK A2,CBSTOP STOP I/P LDR* A1,A7 ADR* A1,P CIO A2,0,0 EXR A1 ORKL A1,/840 A1:= SST INSTR EXR A1 LDR A1,A2 LD A2,DWTST1,A7 RELOAD A2 CM DWTST1,A7 CLEAAR I/P ACTIVE RTN A5 * * * HALTUT : HALT LINE OUTPUT * * HALTUT EQU * IFT SALCUZ=1 LDK A2,CBSTOP STOP O/P XIF LDR* A1,A6 ADR* A1,P CIO A2,0,0 EXR A1 IFT SALCUZ=1 LD A1,DWTST1,A6 O/P ACTIVE ? RF(Z) HALTU1 NO NO INTERRUPT THEN CF A5,WRI200 WAIT FOR INTERRUPT HALTU1 EQU * XIF LDR* A1,A6 ADR* A1,P SST A2,0 EXR A1 IFT SALCUZ=1 CM DWTST1,A6 CLEAR O/P ACTIVE IND XIF RTN A5 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 IFT SALCUZ=1 CM DWTST1,A6 CLEAR O/P ACTIVE FLAG XIF ANK A1,SBNOOP MODEM NOT OPERABLE ? ABL(NZ) TDISP YES WAIT FOR MAIN BMM LOOP IM TPCONT,A7 COUNT TP-ERRORS LDK A5,STB ADR A5,A6 ABL BMM RESTART REQUEST 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 READT0 EQU * ST A4,DWTTP,A7 STORE TIMER POINTER LD A4,DWTSAV+2,A7 RESYNC EQU * RESYNCRONIZE IFT SALCUZ=1 CF A5,HALTIN STOP I/P BEFORE XIF 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 * * * REDLTS: READ WITH LONG TIME SUPERVISION * REDLTS EQU * ST A4,DWTSAV+2,A7 LDR A1,A7 CF A15,SETIME DATA RET040,TIMENQ RB READT0 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 EJECT * * SAVE 8 REG ON STACK * SAVER EQU * IFT CPU852=1 ST A2,2,A15 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 LD A2,16,A15 ST A1,16,A15 ABR A2 XIF IFF CPU852=1 ST A8,-10,A15 LD A8,4,A15 ADKL A15,4 MSR 7,A15 SUKL A15,2 ABR A8 XIF EJECT ******************************************************* * * INTERRUPT HANDLER , CHLC RECEIVER * ******************************************************* * * * IH8101 EQU * ST P,INTSAV CF A15,SAVER LDKL A7,DW8101 INR A2,0,DAMI01 GET CHARACTER FROM LINR ABL(NA) SSTIN 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 IFF HILINO=1 EJECT * * * IH8103 EQU * ST P,INTSAV CF A15,SAVER LDKL A7,DW8103 INR A2,0,DAMI02 GET CHARACTER FROM LINE RB(A) IHI100 ABL SSTIN IFF HILINO=2 EJECT * * * IH8105 EQU * ST P,INTSAV CF A15,SAVER LDKL A7,DW8105 INR A2,0,DAMI03 GET CHARACTER FROM LINE RB(A) IHI100 ABL SSTIN IFF HILINO=3 EJECT * * * IH8107 EQU * ST P,INTSAV CF A15,SAVER LDKL A7,DW8107 INR A2,0,DAMI04 GET CHARACTER FROM LINE RB(A) IHI100 RF SSTIN IFF HILINO=4 EJECT * * * IH8109 EQU * ST P,INTSAV CF A15,SAVER LDKL A7,DW8109 INR A2,0,DAMI05 GET CHARACTER FROM LINE RB(A) IHI100 RF SSTIN IFF HILINO=5 EJECT * * * IH8111 EQU * ST P,INTSAV CF A15,SAVER LDKL A7,DW8111 INR A2,0,DAMI06 GET CHARACTER FROM LINE RB(A) IHI100 RF SSTIN IFF HILINO=6 EJECT * * * IH8113 EQU * ST P,INTSAV CF A15,SAVER LDKL A7,DW8113 INR A2,0,DAMI07 GET CHARACTER FROM LINE RB(A) IHI100 RF SSTIN IFF HILINO=7 EJECT * * * IH8115 EQU * ST P,INTSAV CF A15,SAVER LDKL A7,DW8115 INR A2,0,DAMI08 GET CHARACTER FROM LINE RB(A) IHI100 RF SSTIN IFF HILINO=8 EJECT * * * IH8117 EQU * ST P,INTSAV CF A15,SAVER LDKL A7,DW8117 INR A2,0,DAMI09 GET CHARACTER FROM LINE ABL(A) IHI100 RF SSTIN IFF HILINO=9 EJECT * * * IH8119 EQU * ST P,INTSAV CF A15,SAVER LDKL A7,DW8119 INR A2,0,DAMI10 GET CHARACTER FROM LINE ABL(A) IHI100 RF SSTIN IFF HILINO=10 EJECT * * * IH8121 EQU * ST P,INTSAV CF A15,SAVER LDKL A7,DW8121 INR A2,0,DAMI11 GET CHARACTER FROM LINE ABL(A) IHI100 RF SSTIN IFF HILINO=11 EJECT * * * IH8123 EQU * ST P,INTSAV CF A15,SAVER LDKL A7,DW8123 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 IFF SALCUZ=1 LDR* A1,A7 ADR* A1,P CIO A2,1,0 LDKL A2,/116 EXR A1 START INPUT XIF ABL READ10 SST030 EQU * ANK A1,SBCARR CARRIER OFF ? RF(NZ) SST69A YES LDR A1,A2 RELOAD STATUS ANK A1,SBTHRU RF(Z) SST050 IFT SALCUZ=1 CM DWTST1,A7 CLEAR I/O IND. XIF IM TPCONT,A7 COUNT TP ERRORS LD A1,DWTTP,A7 RF(Z) SST040 CM* DWTTP,A7 CM DWTTP,A7 SST040 EQU * LDK A5,STB ADR A5,A6 ABL BMM RESTART REQUEST SST050 EQU * LDR A1,A2 ANK A1,SBNOOP RF(Z) SST070 SST055 EQU * CLOSE LINE LDK A5,STB ADR A5,A6 CF A5,DISCON SST65 EQU * IFT SALCUZ=1 CM DWTST1,A7 CLEAR I/P ACTIVE FLAG XIF 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 SST69A EQU * IFT SALCUZ=1 LD A1,DWTST1,A7 GET I/O IND. ABL(Z) TDISP INACTIV GO TDISP XIF SST070 EQU * ORKL A2,/8000 NO CARRIER OR CALLING INDICATOR ABL IHI200 EJECT ******************************************************* * * INTERRUPT HANDLER , CHLC TRANSMITTER * ******************************************************* * * * IH8102 EQU * ST P,INTSAV CF A15,SAVER LDKL A6,DW8102 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 IFF HILINO=1 EJECT * * * IH8104 EQU * ST P,INTSAV CF A15,SAVER LDKL A6,DW8104 RB IHU100 IFF HILINO=2 EJECT * * * IH8106 EQU * ST P,INTSAV CF A15,SAVER LDKL A6,DW8106 RB IHU100 IFF HILINO=3 EJECT * * * IH8108 EQU * ST P,INTSAV CF A15,SAVER LDKL A6,DW8108 RB IHU100 IFF HILINO=4 EJECT * * * IH8110 EQU * ST P,INTSAV CF A15,SAVER LDKL A6,DW8110 RB IHU100 IFF HILINO=5 EJECT * * * IH8112 EQU * ST P,INTSAV CF A15,SAVER LDKL A6,DW8112 RB IHU100 IFF HILINO=6 EJECT * * * IH8114 EQU * ST P,INTSAV CF A15,SAVER LDKL A6,DW8114 RB IHU100 IFF HILINO=7 EJECT * * * IH8116 EQU * ST P,INTSAV CF A15,SAVER LDKL A6,DW8116 RB IHU100 IFF HILINO=8 EJECT * * * IH8118 EQU * ST P,INTSAV CF A15,SAVER LDKL A6,DW8118 RB IHU100 IFF HILINO=9 EJECT * * * IH8120 EQU * ST P,INTSAV CF A15,SAVER LDKL A6,DW8120 ABL IHU100 IFF HILINO=10 EJECT * * * IH8122 EQU * ST P,INTSAV CF A15,SAVER LDKL A6,DW8122 ABL IHU100 IFF HILINO=11 EJECT * * * IH8124 EQU * ST P,INTSAV CF A15,SAVER LDKL A6,DW8124 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 * TES340 EQU * IFT RQLOGG=1 CF A15,REQLOG XIF CF A15,TENDIO CF A5,DISCON 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