DataMuseum.dk

Presents historical artifacts from the history of:

Philips Data Systems

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Philips Data Systems

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦106860e4d⟧

    Length: 100730 (0x1897a)
    Notes: pts_type(SC)
    Names: »DRDC81.SC«

Derivation

└─⟦173d42e04⟧ Bits:30009663 Philips computer tape "600105"
    └─⟦this⟧ »TOSSWORK/DRDC81.SC« 

PTS(SC)

	IDENT DRDC81 	REL 10.0 80-03-14 870105041000 

			=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	A1,DWTTP	TIMER POINTER
	RF(Z)	AB:10	NO TIMER RUNNING 
	CM*	DWTTP,A6	CLEAR TIMER 
	CM	DWTTP,A6	CLEAR TIMER POINTER
AB:10	EQU	* 
AB:RTN	EQU	*
	IFT	CPU852=1 
	ADKL	A15,4 
	ABR*	A15 
	XIF
	IFF	CPU852=1 
	RTN	A15
	XIF
	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

Full view