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

⟦4d8cc4d2e⟧

    Length: 90866 (0x162f2)
    Notes: pts_type(SC)
    Names: »DRDC81.SC«

Derivation

└─⟦2a21e4bb5⟧ Bits:30009691 Philips computer tape "600408"
    └─⟦this⟧ »DRIVER/DRDC81.SC« 

PTS(SC)

 IDENT DRDC81	7.2-ADAPTED, IMPROVED: 78-01-12 
******************************************************* 
* 
*   PEAB-T , SOFTWARE FOR 6810 CONCENTRATOR 
* 
*   DRDC81 = BSC MASTER DATA
*            COMMUNICATION DRIVER 
* 
* 
* 
******************************************************* 
* 
*   THIS DRIVER PERFORMS DATA COMMUNICATION 
*   WITH TC'S CONNECTED TO THE CONCENTRATOR 
*   VIA LEASED 4-WIRE OR DIALED UP 2-WIRE LINES.
* 
*   LINE PROCEDURE: BSC MASTER FOR MULTIPOINT DATA LINK 
* 
******************************************************* 
* 
*   STANDARD USE OF REGISTERS : 
* 
*   A1  WORK REGISTER 
*   A2  I/O AND WORK REGISTER 
*   A3  WORK REGISTER 
*   A4  WORK REGISTER 
*   A5  STACK POINTER 
*   A6  OUTPUT DWT ADDRESS
*   A7  INPUT DWT ADDRESS 
*   A8  ECB ADDRESS 
* 
******************************************************* 
	EJECT
* 
******************************************************* 
* 
*	ENTRY POINTS
* 
******************************************************* 
* 
	ENTRY	DRMIAD	INPUT ACTIVATION
	ENTRY	DRMUAD	OUTPUT OR CONTROL ACTIVATION
	ENTRY	DRMON	RECOVERY AT POWER ON 
	ENTRY	IHMI01	INTERRUPT HANDLERS , INPUT AND OUTPUT 
	ENTRY	IHMI02 
	ENTRY	IHMI03,IHMI04,IHMI05,IHMI06,IHMI07,IHMI08,IHMI09,IHMI10,IHMI11,IHMI12
	ENTRY	IHMI12 
	ENTRY	IHMU01,IHMU02
	ENTRY	IHMU03,IHMU04,IHMU05,IHMU06,IHMU07,IHMU08,IHMU09,IHMU10,IHMU11,IHMU12
	ENTRY	IHMU12 
	ENTRY	DWMTAB 
	ENTRY	DWMU01,DWMU02,DWMU03	OUTPUT AND CONTROL DWT:S
	ENTRY	DWMU04,DWMU05,DWMU06 
	ENTRY	DWMU07,DWMU08,DWMU09 
	ENTRY	DWMU10,DWMU11,DWMU12 
	ENTRY	DWMI01,DWMI02,DWMI03	INPUT DWT:S 
	ENTRY	DWMI04,DWMI05,DWMI06 
	ENTRY	DWMI07,DWMI08,DWMI09 
	ENTRY	DWMI10,DWMI11,DWMI12 
	EJECT
* 
******************************************************* 
* 
*	EXTERNAL REFERENCES 
* 
******************************************************* 
* 
	EXTRN	TDISP	DISPATCHER ENTRY 
	EXTRN	TENDIO	REQUEST COMPLETION
	EXTRN	DISEND	THE ENTIES ABOVE TOGETHER 
	EXTRN	DISIOE	REQUEST ERROR 
	EXTRN	SETIME	SET TIMER CALL ADDRESS
	EXTRN	SETIMP 
	EXTRN	DWTST	DWT STATUS 
	EXTRN	DWTECB	DWT ECB ADDRESS 
	EXTRN	DWTOR	DWT ORDER
	EXTRN	ECBBA	ECB BUFFER ADDRESS 
	EXTRN	ECBRL	ECB REQUESTED LENGTH 
	EXTRN	ECBEL	ECB EFFECTIVE LENGTH 
	EXTRN	ECBRC	ECB RETURN CODE
	EXTRN	ECBCW	ECB CONTROL WORD 
	EXTRN	ILLINT 
	EXTRN	INTSAV 
	EJECT
* 
* 
**************************
*                        *
*        SYSTEM ADOPTION *
*                        *
**************************
* 
* 
* 
* 
*        CONDITIONAL ASSEMBLYy
***************************** 
* 
* 
* 
* 
X:A	EQU	0 
*	X:A UNEQUAL TO ZERO INCLUDES LINE NO 1, WITH POLLIST LENGTH = X:A 
* 
* 
X:B	EQU	0 
*	X:B UNEQUAL TO ZERO INCLUDES LINE NO 2, WITH POLLIST LENGTH = X:B 
* 
* 
X:C	EQU	0 
*	X:C UNEQUAL TO ZERO INCLUDES LINE NO 3, WITH POLLIST LENGTH = X:C 
* 
* 
X:D	EQU	0 
*	X:D UNEQUAL TO ZERO INCLUDES LINE NO 4, WOTH POLLIST LENGTH = X:D 
* 
* 
X:E	EQU	0 
*	X:E UNEQUAL TO ZERO INCLUDES LINE NO 5, WITH POLLIST LENGTH = X:E 
* 
* 
X:F	EQU	0 
*	X:F UNEQUAL TO ZERO INCLUDES LINE NO 6, WITH POLLIST LENGTH = X:F 
* 
* 
X:G	EQU	0 
*	X:G UNEQUAL TO ZERO INCLUDES LINE  NO 7, WITH POLLIST LENGTH = X:G
* 
* 
X:H	EQU	0 
*	X:H UNEQUAL TO ZERO INCLUDES LINE NO 8, WITH POLLIST LENGTH = X:H 
* 
* 
X:I	EQU	0 
*	X:I UNEQUAL TO ZERO INCLUDES LINE NO 9, WITH POLLIST LENGTH = X:I 
* 
* 
X:J	EQU	0 
*	X:J UNEQUAL TO ZERO INCLUDES LINE NO 10, WITH POLLIST LENGTH = X:J
* 
* 
X:K	EQU	0 
*	X:K UNEQUAL TO ZERO INCLUDES LINE NO 11, WITH POLLIST LENGTH = X:K
* 
* 
X:L	EQU	0 
*	X:L UNEQUAL TO ZERO INCLUDES LINE NO 12, WITH POLLIST LENGTH = X:L
* 
* 
* 
* 
X:M	EQU	0 
*	IF X:M = 1, INSTUCTION SET IS ADOPTED FOR 852 CPU 
* 
* 
X:N	EQU	350 
*	X:N = MAX BLOCKLENGTH 
* 
* 
X:O	EQU	0 
LOGG	EQU	X:O
*	IF X:O IS UNEQUAL TO ZERO, THE INTERRUPT LOGG IS INCLUDED.
*	LOGG AREA LENGTH = X:O
	EJECT
* 
* 
* 
X:P	EQU	-3
*	X:P = RETRY LIMIT FOR RECOVERY
* 
* 
X:Q	EQU	0 
BDA	EQU	X:Q 
*	IF X:Q = 1, TC ADDRESSES ARE ADAPTED FOR THE BANKDATA CASE: 
*	   INPUT = /41 -/4F  (A - O)
*	   OUTPUT = ADDRESSES ACCORDING TO IBM REMOTE CONTROL UNIT ADDRESSING 
* 
* 
X:R	EQU	0 
RQLOGG	EQU	X:R	FOR TEST PURPOSES ONLY 
*	IF X:R = 1, A REQUEST LOGG IS INCLUDED, SAVING
*	LINE NUMBER, ORDER, RETURN CODE AND TID FOR THE 100 LAST REQUESTS.
* 
* 
	EJECT
* 
******************************************************* 
* 
*	SYSTEM PARAMETERS 
* 
******************************************************* 
* 
LINE01	EQU	X:A	LENGTH OF POLLIST FOR LINE 01
LINE02	EQU	X:B	                           02
LINE03	EQU	X:C
LINE04	EQU	X:D
LINE05	EQU	X:E
LINE06	EQU	X:F
LINE07	EQU	X:G
LINE08	EQU	X:H
LINE09	EQU	X:I
LINE10	EQU	X:J
LINE11	EQU	X:K
LINE12	EQU	X:L
CPU852	EQU	X:M	EXCLUDES MULTIPLE LOAD AND STORE 
MAXTBL	EQU	X:N	MAX LENGTH OF TRANSMISSION BLOCK 
TIMRE4	EQU	2	RECEIVE TIMEOUT 4-WIRE (200MS) 
TIMMRY	EQU	5	MODEM READY TIME OUT 
TIMACT	EQU	100	ACTIVITY TIMER 
RTYLIM	EQU	X:P	RETRY LIMIT FOR RECOVERY 
SYNCO	EQU	-3	NUMBER OF SYN:S
DELAY	EQU	3	READ REQ DELAY AT STATUS POLL HALTED
	EJECT
* 
******************************************************* 
* 
*	DEVICE WORK AREA EQUATES
* 
******************************************************* 
* 
DWTTP	EQU	/10	DWT TIMER POINTER 
DWTATP	EQU	/12	ACTIVITY TIMER POINTER 
STB	EQU	/1E	STACK BASE
DWTSAV	EQU	/20	DWT SAVE AREA
DWTA5	EQU	DWTSAV+4	A5 
DWTA6	EQU	DWTSAV+6	A6 
DWTA7	EQU	DWTSAV+8	A7 
DWTA8	EQU	DWTSAV+10	A8
DWTRTY	EQU	/2C	DWT RETRY COUNTER
DWTBCC	EQU	/2E	DWT BCC COUNTER
DWTACK	EQU	/30	DWT ACK COUNTER
PACT	EQU	/32	LAST POLLED ACTIVE TC
PINACT	EQU	/34	LAST POLLED INACTIVE TC
PLIST	EQU	/36	POLLIST ADDRESS IN OUTPUT DWT 
TPUT	EQU	/14
TPUTC	EQU	/16 
TPINC	EQU	/18 
	EJECT
* 
* 
*	CONSTANTS 
* 
* 
BIT2	EQU	/2000
BIT5	EQU	/400 
BIT6	EQU	/200 
BIT7	EQU	/100 
BIT8	EQU	/80
BIT9	EQU	/40
BIT10	EQU	/20 
BIT11	EQU	/10 
BIT12	EQU	8 
BIT13	EQU	4 
BIT14	EQU	2 
BIT15	EQU	1 
* 
* 
	EJECT
* 
*	RETURN CODE EQUATES 
****************************
* 
* 
MODNOP	EQU	BIT15	MODEM NOT OPERABLE, ALL ORDERS 
NORESP	EQU	BIT14	NO RESPONSE, ORDER /00 
TCINPL	EQU	BIT14	TC ALLREADY IN POLLING LIST, ORDER /37 
POLPER	EQU	BIT14	POLLING ALLREADY PERMITTED, ORDER /27
INVTCA	EQU	BIT13	INVALID TCA, ORDER /02, /37
CODERR	EQU	BIT13	CODE NOT ALLOWED, ORDER /06
INCLEN	EQU	BIT12	INCORRECT LENGTH, ORDER /02
LSTOVF	EQU	BIT12	POLLIST OVERFLOW, ORDER /37
LINSTE	EQU	BIT11	LINE OPEN/CLOSED, ALL ORDERS 
TCINAC	EQU	BIT10	TC INACTIVE, ORDER /02, /06, /37 
TCNLST	EQU	BIT9	TC NOT IN POLL LIST, ORDER /06, /38 
POLHLT	EQU	BIT8	POLLING HALTED, ORDER /02 
RETRAN	EQU	BIT7	RETRANSMISSION, ORDER /02, /06
CALIND	EQU	BIT6	CALLING INDICATOR, NOT USED 
TCACT	EQU	BIT5	TC ACTIVE, OrDER /02 
TCBUSY	EQU	BIT2	TC BUSy, ORDER /06
* 
* 
	EJECT
* 
******************************************************* 
* 
*	DWT STATUS WORD CONTENTS
* 
******************************************************* 
* 
*	DWTST   BIT #00 : 0 = DEVICE BUSY 
*	                  1 = DEVICE NOT BUSY 
*                BIT #6 : 1 = WAITING FOR CALL
*	        BIT #14 : 0 = POLLING PERMITTED 
*	                  1 = HALT POLLING INITIATED
*	        BIT #15 : 0 = LINE CLOSED 
*	                  1 = LINE OPEN 
* 
******************************************************* 
* 
*	CHLC  RECEIVER STATUS CONTENTS
* 
******************************************************* 
* 
*	STATUS : /00 = MODEM READY / CARRIER DETECTED 
*	       : /01 = MODEM NOT READY
*	       : /02 = THROUGHPUT ERROR 
*	       : /20 = CARRIER NOT DETECTED 
*	       : /40 = CALLING INDICATOR
* 
******************************************************* 
	EJECT
* 
******************************************************* 
* 
*	LINE CONTROL CHARACTER EQUATES
* 
******************************************************* 
* 
SYN	EQU	/16 
PAD	EQU	/7F	TRAILING PAD
DLE	EQU	/10	DATA LINK ESCAPE
EOT	EQU	/04	END OF TRANSMISSION 
ENQ	EQU	/85	ENQUIRY 
STX	EQU	/02	START OF TEXT 
ETX	EQU	/03	END OF TEXT 
ETB	EQU	/17	END OF TRANSMISSION BLOCK 
ETXP	EQU	/83	ETX WITH PARITY
ETBP	EQU	/97	ETB WITH PARITY
NAK	EQU	/15	NEGATIVE ACKNOWLEDGEMENT
GP	EQU	/22	GENERAL POLL 
PAR:0	EQU	/B0	ZERO (ODD PARITY) 
SEMIKO	EQU	/3B	SECOND CHARACTER IN WACK, AFTER DLE
	EJECT
* 
******************************************************* 
* 
*	CHLC DEVICE ADDRESS EQUATES 
* 
******************************************************* 
* 
DAMI01	EQU	/4	INPUT CHLC 1
DAMI02	EQU	/05	INPUT CHLC 2 
DAMI03	EQU	/06
DAMI04	EQU	/7 
DAMI05	EQU	/20
DAMI06	EQU	/21
DAMI07	EQU	/22
DAMI08	EQU	/23
DAMI09	EQU	/24
DAMI10	EQU	/25
DAMI11	EQU	/26
DAMI12	EQU	/27
DAMU01	EQU	/14	OUTPUT CHLC 1
DAMU02	EQU	/15	OUTPUT CHLC 2
DAMU03	EQU	/16
DAMU04	EQU	/17
DAMU05	EQU	/30
DAMU06	EQU	/31
DAMU07	EQU	/32
DAMU08	EQU	/33
DAMU09	EQU	/34
DAMU10	EQU	/35
DAMU11	EQU	/36
DAMU12	EQU	/37
* 
* 
* 
* 
* 
******************************************************* 
	EJECT
* 
* 
*	BSC MASTER CONFIGURATION TABLE
* 
* 
DWMTAB	DATA	DWMTE-*	TABLE LENGTH
	IFF	LINE01=0 
	DATA	DWMI01	DWT FOR INPUT ON LINE 1
	DATA	DWMU01	DWT FOR OUTPUT AND CONTROL ON LINE 1 
	XIF
	IFF	LINE02=0 
	DATA	DWMU02,DWMI02 
	XIF
	IFF	LINE03=0 
	DATA	DWMU03,DWMI03 
	XIF
	IFF	LINE04=0 
	DATA	DWMU04,DWMI04 
	XIF
	IFF	LINE05=0 
	DATA	DWMU05,DWMI05 
	XIF
	IFF	LINE06=0 
	DATA	DWMU06,DWMI06 
	XIF
	IFF	LINE07=0 
	DATA	DWMU07,DWMI07 
	XIF
	IFF	LINE08=0 
	DATA	DWMU08,DWMI08 
	XIF
	IFF	LINE09=0 
	DATA	DWMU09,DWMI09 
	XIF
	IFF	LINE10=0 
	DATA	DWMU10,DWMI10 
	XIF
	IFF	LINE11=0 
	DATA	DWMU11,DWMI11 
	XIF
	IFF	LINE12=0 
	DATA	DWMU12,DWMI12 
	XIF
DWMTE	EQU	* 
* 
* 
	EJECT
* 
* 
***************************** 
*                           * 
*	DEVICE WORK TABLES *
*                           * 
***************************** 
* 
* 
	IFF	LINE01=0 
* 
* 
*	DEVICE WORK TABLE FOR LINE 01, OUTPUT AND CONTROL 
* 
* 
DWMU01	EQU	*	TABLE ENTRY
	DATA	DAMU01	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMUAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU01	OUTPUT DWT ADDRESS 
	DATA	DWMI01	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	DATA	0	RETRY COUNTER 
	DATA	0	BCC COUNTER 
	DATA	0	ACK COUNTER 
	DATA	0	PACT
	DATA	0	PINACT
	EJECT
	DATA	LINE01+LINE01	LENGTH OF POLLIST 
	RES	LINE01	POLLIST 
	DATA	/FFFF 
* 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 01, INPUT
* 
* 
DWMI01	EQU	*	TABLE ENTRY
	DATA	DAMI01	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMIAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU01	OUTPUT DWT ADDRESS 
	DATA	DWMI01	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	XIF
	IFF	LINE02=0 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 02, OUTPUT AND CONTROL 
* 
* 
DWMU02	EQU	*	TABLE ENTRY
	DATA	DAMU02	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMUAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU02	OUTPUT DWT ADDRESS 
	DATA	DWMI02	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	DATA	0	RETRY COUNTER 
	DATA	0	BCC COUNTER 
	DATA	0	ACK COUNTER 
	DATA	0	PACT
	DATA	0	PINACT
	DATA	LINE02+LINE02 
	RES	LINE02 
	DATA	/FFFF 
* 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 02, INPUT
* 
* 
DWMI02	EQU	*	TABLE ENTRY
	DATA	DAMI02	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMIAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU02	OUTPUT DWT ADDRESS 
	DATA	DWMI02	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	XIF
	IFF	LINE03=0 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 03, OUTPUT AND CONTROL 
* 
* 
DWMU03	EQU	*	TABLE ENTRY
	DATA	DAMU03	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMUAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU03	OUTPUT DWT ADDRESS 
	DATA	DWMI03	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	DATA	0	RETRY COUNTER 
	DATA	0	BCC COUNTER 
	DATA	0	ACK COUNTER 
	DATA	0	PACT
	DATA	0	PINACT
	DATA	LINE03+LINE03 
	RES	LINE03 
	DATA	/FFFF 
* 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 03, INPUT
* 
* 
DWMI03	EQU	*	TABLE ENTRY
	DATA	DAMI03	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMIAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU03	OUTPUT DWT ADDRESS 
	DATA	DWMI03	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	XIF
	IFF	LINE04=0 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 04, OUTPUT AND CONTROL 
* 
* 
DWMU04	EQU	*	TABLE ENTRY
	DATA	DAMU04	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMUAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU04	OUTPUT DWT ADDRESS 
	DATA	DWMI04	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	DATA	0	RETRY COUNTER 
	DATA	0	BCC COUNTER 
	DATA	0	ACK COUNTER 
	DATA	0	PACT
	DATA	0	PINACT
	DATA	LINE04+LINE04 
	RES	LINE04 
	DATA	/FFFF 
* 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 04, INPUT
* 
* 
DWMI04	EQU	*	TABLE ENTRY
	DATA	DAMI04	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMIAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU04	OUTPUT DWT ADDRESS 
	DATA	DWMI04	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	XIF
	IFF	LINE05=0 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 05, OUTPUT AND CONTROL 
* 
* 
DWMU05	EQU	*	TABLE ENTRY
	DATA	DAMU05	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMUAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU05	OUTPUT DWT ADDRESS 
	DATA	DWMI05	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	DATA	0	RETRY COUNTER 
	DATA	0	BCC COUNTER 
	DATA	0	ACK COUNTER 
	DATA	0	PACT
	DATA	0	PINACT
	DATA	LINE05+LINE05 
	RES	LINE05 
	DATA	/FFFF 
* 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 05, INPUT
* 
* 
DWMI05	EQU	*	TABLE ENTRY
	DATA	DAMI05	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMIAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU05	OUTPUT DWT ADDRESS 
	DATA	DWMI05	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	XIF
	IFF	LINE06=0 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 06, OUTPUT AND CONTROL 
* 
* 
DWMU06	EQU	*	TABLE ENTRY
	DATA	DAMU06	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMUAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU06	OUTPUT DWT ADDRESS 
	DATA	DWMI06	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	DATA	0	RETRY COUNTER 
	DATA	0	BCC COUNTER 
	DATA	0	ACK COUNTER 
	DATA	0	PACT
	DATA	0	PINACT
	DATA	LINE06+LINE06 
	RES	LINE06 
	DATA	/FFFF 
* 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 06, INPUT
* 
* 
DWMI06	EQU	*	TABLE ENTRY
	DATA	DAMI06	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMIAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU06	OUTPUT DWT ADDRESS 
	DATA	DWMI06	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	XIF
	IFF	LINE07=0 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 07, OUTPUT AND CONTROL 
* 
* 
DWMU07	EQU	*	TABLE ENTRY
	DATA	DAMU07	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMUAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU07	OUTPUT DWT ADDRESS 
	DATA	DWMI07	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	DATA	0	RETRY COUNTER 
	DATA	0	BCC COUNTER 
	DATA	0	ACK COUNTER 
	DATA	0	PACT
	DATA	0	PINACT
	DATA	LINE07+LINE07 
	RES	LINE07 
	DATA	/FFFF 
* 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 07, INPUT
* 
* 
DWMI07	EQU	*	TABLE ENTRY
	DATA	DAMI07	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMIAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU07	OUTPUT DWT ADDRESS 
	DATA	DWMI07	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	XIF
	IFF	LINE08=0 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 08, OUTPUT AND CONTROL 
* 
* 
DWMU08	EQU	*	TABLE ENTRY
	DATA	DAMU08	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMUAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU08	OUTPUT DWT ADDRESS 
	DATA	DWMI08	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	DATA	0	RETRY COUNTER 
	DATA	0	BCC COUNTER 
	DATA	0	ACK COUNTER 
	DATA	0	PACT
	DATA	0	PINACT
	DATA	LINE08+LINE08 
	RES	LINE08 
	DATA	/FFFF 
* 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 08, INPUT
* 
* 
DWMI08	EQU	*	TABLE ENTRY
	DATA	DAMI08	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMIAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU08	OUTPUT DWT ADDRESS 
	DATA	DWMI08	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	XIF
	IFF	LINE09=0 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 09, OUTPUT AND CONTROL 
* 
* 
DWMU09	EQU	*	TABLE ENTRY
	DATA	DAMU09	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMUAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU09	OUTPUT DWT ADDRESS 
	DATA	DWMI09	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	DATA	0	RETRY COUNTER 
	DATA	0	BCC COUNTER 
	DATA	0	ACK COUNTER 
	DATA	0	PACT
	DATA	0	PINACT
	DATA	LINE09+LINE09 
	RES	LINE09 
	DATA	/FFFF 
* 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 09, INPUT
* 
* 
DWMI09	EQU	*	TABLE ENTRY
	DATA	DAMI09	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMIAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU09	OUTPUT DWT ADDRESS 
	DATA	DWMI09	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	XIF
	IFF	LINE10=0 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 10, OUTPUT AND CONTROL 
* 
* 
DWMU10	EQU	*	TABLE ENTRY
	DATA	DAMU10	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMUAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU10	OUTPUT DWT ADDRESS 
	DATA	DWMI10	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	DATA	0	RETRY COUNTER 
	DATA	0	BCC COUNTER 
	DATA	0	ACK COUNTER 
	DATA	0	PACT
	DATA	0	PINACT
	DATA	LINE10+LINE10 
	RES	LINE10 
	DATA	/FFFF 
* 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 10, INPUT
* 
* 
DWMI10	EQU	*	TABLE ENTRY
	DATA	DAMI10	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMIAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU10	OUTPUT DWT ADDRESS 
	DATA	DWMI10	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	XIF
	IFF	LINE11=0 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 11, OUTPUT AND CONTROL 
* 
* 
DWMU11	EQU	*	TABLE ENTRY
	DATA	DAMU11	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMUAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU11	OUTPUT DWT ADDRESS 
	DATA	DWMI11	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	DATA	0	RETRY COUNTER 
	DATA	0	BCC COUNTER 
	DATA	0	ACK COUNTER 
	DATA	0	PACT
	DATA	0	PINACT
	DATA	LINE11+LINE11 
	RES	LINE11 
	DATA	/FFFF 
* 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 11, INPUT
* 
* 
DWMI11	EQU	*	TABLE ENTRY
	DATA	DAMI11	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMIAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU11	OUTPUT DWT ADDRESS 
	DATA	DWMI11	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	XIF
	IFF	LINE12=0 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE !2, OUTPUT AND CONTROL 
* 
* 
DWMU12	EQU	*	TABLE ENTRY
	DATA	DAMU12	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMUAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU12	OUTPUT DWT ADDRESS 
	DATA	DWMI12	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	DATA	0	RETRY COUNTER 
	DATA	0	BCC COUNTER 
	DATA	0	ACK COUNTER 
	DATA	0	PACT
	DATA	0	PINACT
	DATA	LINE12+LINE12 
	RES	LINE12 
	DATA	/FFFF 
* 
	EJECT
* 
* 
*	DEVICE WORK TABLE FOR LINE 12, INPUT
* 
* 
DWMI12	EQU	*	TABLE ENTRY
	DATA	DAMI12	DEVICE ADDRESS 
	DATA	/8000	STATUS , /8000 MEANS DEVICE READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	DRMIAD	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TASK QUEUE FOR THIS DEVICE
	DATA	0	TIMER POINTER 
	DATA	0	ACTIVITY TIMER POINTER
	DATA	0,0,0,0,0,0	SUBROUTINE STACK
	RES	3	SAVE AREA FOR A3-A5
	DATA	DWMU12	OUTPUT DWT ADDRESS 
	DATA	DWMI12	INPUT DWT ADDRESS
	DATA	0	SAVE AREA FOR A8
	XIF
	EJECT
* 
* 
* 
* 
* 
* 
******************************************************* 
* 
* 
*	D R I V E R  A C T I V A T I O N
* 
* 
******************************************************* 
******************************************************* 
* 
* 
* 
* 
* 
	EJECT
******************************************************* 
* 
*	INPUT REQUESTS
* 
******************************************************* 
* 
* 
DRMIAD	DATA	MIACT	DWT REFERENCE 
* 
* 
MIACT	EQU	* 
	SUK	A7,2 
	RF(Z)	RD	ORDER 01: READ
MIA100	ABL	DISIOE	ILLEGAL ORDER 
* 
* 
*	ORDER 02 : READ 
* 
* 
RD	EQU	*
	LD	A1,DWTST,A6	GET STATUS
	LDR	A2,A1
	ANK	A1,1 
	RF(NZ)	RD400	LINE OPEN 
RD100	EQU	* 
	LDK	A1,LINSTE	RC: WRONG LINE STATUS
RD200	EQU	* 
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	CF	A15,TENDIO	COMPLETE REQUEST 
RD300	EQU	* 
	ABL	TDISP	GO TO DISPATCHER 
RD400	EQU	* 
	LCR	A1,A6
	ANK	A1,/40 
	RB(Z)	RD300	4-WIRE 
	ANK	A2,4 
	RB(Z)	RD300
RD450	EQU	* 
	CF	A5,READ	WAIT FOR CALL 
	CW	A2,/8040
	RB(NE)	RD450 
	LDKL	A1,/200 
	XRS	A2,DWTST,A6	RESET WAIT BIT 
	CF	A5,HALTIN 
	LDKL	A1,CALIND	RC: CALLING INDICATOR 
	RB	RD200 
	EJECT
******************************************************* 
* 
*	OUTPUT AND CONTROL REQUESTS 
* 
******************************************************* 
* 
* 
DRMUAD	DATA	MUACT	DWT REFERENCE 
* 
* 
MUACT	EQU	* 
	LDR	A7,A7
	RF(Z)	TEST	ORDER 00, TEST LINE 
	SUK	A7,6 
	ABL(Z)	WRT	ORDER 06: WRITE 
	SUK	A7,/22-6 
	RF(Z)	OLIN	ORDER 22, OPEN LINE 
	SUK	A7,2 
	ABL(Z)	CLIN	ORDER 24, CLOSE LINE 
	SUK	A7,2 
	ABL(Z)	CLIN	ORDER 26,HALT POLLING
	SUK	A7,1 
	ABL(Z)	CLIN	ORDER 27, START POLLING
	SUK	A7,/37-/27 
	ABL(Z)	OTC	ORDER 37: OPEN TC 
	SUK	A7,1 
	ABL(Z)	WRT150	ORDER 38,CLOSE TC
	RB	MIA100	ILLEGAL ORDER
	EJECT
* 
* 
*        ORDER 00  TEST LINE
* 
TEST	EQU	*
	LD	A1,DWTST,A6	GET STATUS
	ANK	A1,1 
	RB(NZ)	RD100	LINE NOT CLOSED 
	ABL	TST000 
	EJECT
* 
* 
*	CW = 0 : OPEN LINE
* 
* 
OLIN	EQU	*
	LD	A7,DWTA7,A6 
	LD	A1,DWTST,A6	GET STATUS
	ANK	A1,1 
	RB(NZ)	RD100	LINE ALREADY OPENED 
	LD	A1,PLIST,A6	GET LENGTH OF POLLIST 
	LDR	A2,A1
	ADR	A1,A6
OLI100	EQU	*
	CM	PLIST,A1	DELETE POLLIST 
	SUK	A1,2 
	SUK	A2,2 
	RB(NZ)	OLI100	NOT END OF LIST
	CM	PACT,A6 
	CM	PINACT,A6 
	LD	A7,DWTSAV+8,A6
OLI105	EQU	*
	CF	A5,HALTIN 
	CF	A5,STINP	CONNECT MODEM
	LDR	A1,A6
	CF	A15,SETIME
	DATA	OLI110,TIMMRY 
	ST	A4,DWTTP,A6 
	CF	A5,READ 
	CM*	DWTTP,A6 
	RF	OLI115
OLI110	EQU	*	STATUS INT. OR TIME OUT
	LDR	A6,A1
OLI115	EQU	*
	CM	DWTTP,A6
	LDK	A5,STB	IF TIME OUT 
	LD	A7,DWTA7,A6 
	ADR	A5,A6
	CF	A5,HALTIN 
	ANK	A1,1 
	RF(NZ)	OLI160	MODEM NOT OPERABLE 
	LDK	A1,1 
	ORS	A1,DWTST,A6	INDICATE LINE OPEN 
	ORS	A1,DWTST,A7
	LD	A1,DWTATP,A6
	RF(NZ)	OLI120	RECOVERY AT POWER ON 
	LDK	A1,0 
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	CF	A15,TENDIO	COMPLETE REQUEST 
OLI120	EQU	*
	LCR	A1,A6
	ANK	A1,/40 
	RF(Z)	OLI130	4-WIRE LINE, INIT. IDLE OUTPUT
	CF	A5,DISCON	DISCONNECT MODEM
	LDKL	A3,200
	ORS	A3,DWTST,A7	INDICATE WAITING FOR CALL
	RB	RD300 
OLI130	EQU	*
	LDR	A1,A6
	LDR	A4,A6
	ADK	A4,DWTATP
	LDR*	A2,A4 
	ABL(NZ)	BMM	RECOVERY AT POWER ON 
	CF	A15,SETIMP	SET ACTIVITY TIMER 
	DATA	OLI150,TIMACT 
	ABL	BMM	ENTER BASIC MASTER MODE
* 
* 
*        ACTVITY TIME OUT 
* 
OLI150	EQU	*
	INH
	LDR	A6,A1
	LD	A7,DWTA7,A6 
	CM	DWTATP,A6	CLEAR TIMER POINTER 
	LDK	A5,STB 
	ADR	A5,A6
OLI160	EQU	*
	CF	A5,DISCON 
	CF	A5,HALTIN 
	LDK	A1,MODNOP	RC: MOD NOT OP 
	LD	A8,DWTECB,A6
	RF(Z)	OLI165 
	CM	ECBRC,A8
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	CF	A15,TENDIO
OLI165	EQU	*
	LDR	A6,A7
	LD	A8,DWTECB,A6
	RF(Z)	OLI170 
	CM	ECBRC,A8
OLI170	EQU	*
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	ABL	DISEND 
* 
* 
*        CLOSE LINE / HALT POLLING
* 
* 
CLIN	EQU	*
	LD	A1,DWTST,A6	GET STATUS
	ANK	A1,1 
	ABL(Z)	RD100	LINE ALREADY CLOSED 

	ABL	TDISP
	EJECT
* 
* 
*	ORDER 37 : OPEN TC
* 
* 
OTC	EQU	* 
	LD	A7,DWTA7,A6 
	LD	A1,DWTST,A7	GET STATUS
	LDR	A2,A1
	ANK	A1,1 
	ABL(Z)	RD100	SEQ ERROR 
	ANKL	A2,/200 
	RF(NZ)	OTC110	WAITING FOR CALL 
	LD	A2,ECBCW,A8	GET TCA 
	SUK	A2,/41 
	RF(N)	OTC100	INVALID TC ADDRESS
	SUK	A2,/5A-/41 
	ABL(NP)	TDISP
OTC100	EQU	*
	LDK	A1,INVTCA	RC : INVALID ADDRESS 
	RB	OLI170
OTC110	EQU	*
	LDKL	A1,CALIND	RC: CALLING INDICATOR 
	RB	OLI170
	EJECT
* 
* 
*	ORDER 06 : WRITE
* 
* 
WRT	EQU	* 
	LC*	A2,ECBBA,A8	TCA
WRT105	EQU	*
	LD	A1,DWTST,A6 
	ANK	A1,1 
	ABL(Z)	RD100	SEQ ERROR 
	ANK	A2,/7F 
	CF	A15,FINDTC	SEARCH FOR TCA IN POLLINGLIST
	RF(P)	WRT130	TC NOT IN P-LIST
	RF(N)	WRT110	TCA INACTIVE
	SC	A4,DWTOR,A6	SAVE INDEX IN POLLIST 
WRT107	EQU	*
	ABL	TDISP
WRT110	EQU	*
	SC	A4,DWTOR,A6	SAVE INDEX IN POLLIST 
	LD	A1,DWTOR,A6 
	ANK	A1,/FF 
	SUK	A1,/38 
	RB(Z)	WRT107 
	LDK	A1,TCINAC	RC: TC INACTIVE
WRT120	EQU	*
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	ABL	DISEND 
WRT130	EQU	*
	LDK	A1,TCNLST	RC: TC NOT IN POLLIST
	RB	WRT120
* 
* 
*        ORDER 38: CLOSE TC 
* 
WRT150	EQU	*
	LD	A2,ECBCW,A8	TCA 
	RB	WRT105
	EJECT
* 
******************************************************* 
******************************************************* 
* 
* 
*	R E C O V E R Y  A T  P O W E R  O N
* 
* 
******************************************************* 
******************************************************* 
* 
DRMON	EQU	* 
	INH
	LD	A3,DWMTAB	TABLE LENGTH
DRM000	EQU	*
	SUK	A3,2 
	RF(Z)	DRM300	END ODF TABLE 
	LD	A6,DWMTAB,A3	DWT ADDRESS
	LD	A1,DWTST,A6 
	LDR	A2,A1
	LDR*	A4,A6 
	ANK	A2,1 
	RF(Z)	DRM200	LINE CLOSED 
	ANK	A4,/10 
	RF(NZ)	DRM250	OUTPUT DWT 
DRM100	EQU	*	INPUT DWT
	ANKL	A1,/8000
	RB(NZ)	DRM000	NO REQUEST 
	LD	A8,DWTECB,A6
	LD	A2,ECBEL,A8 
	RB(Z)	DRM000	NO COMPLETE MESSAGE RECEIVED
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	CF	A15,TENDIO	COMPLETE RQUEST , RC = 0 
	RB	DRM000
DRM200	EQU	*
	ANK	A4,/10 
	RB(Z)	DRM000	INPUT DWT 
	ANKL	A1,/8000
	RB(NZ)	DRM000	NO RQUEST
	LD	A1,DWTOR,A6	GET ORDER 
	ANK	A1,/FF 
	SUK	A1,/22 
	RB(NZ)	DRM000
DRM250	EQU	*
	LD	A7,DWTA7,A6 
	LDK	A4,DWTTP 
	ADR	A4,A7
	LDR*	A1,A4 
	RF(Z)	DRM275 
	CM*	DWTTP,A7 
DRM275	EQU	*
	LDR	A1,A6
	CF	A15,SETIMP
	DATA	DRM400
	DATA	TIMMRY
	RB	DRM000
DRM300	RTN	A15
* 
*	REOPEN LINE 
* 
DRM400	EQU	*
	LDR	A6,A1
	LD	A7,DWTA7,A6 
	CM	DWTTP,A7
	LDK	A5,STB 
	ADR	A5,A6
	ABL	OLI105	REOPEN LINE 
	EJECT
* 
******************************************************* 
******************************************************* 
* 
* 
*	P R O C E D U R E  C O N T R O L  P A R T 
* 
* 
******************************************************* 
******************************************************* 
* 
******************************************************* 
* 
*	BMM : BASIC MASTER MODE 
* 
******************************************************* 
BMM	EQU	* 
	LDK	A5,STB 
	ADR	A5,A6
	CF	A5,STOUT
	LDKL	A1,BMM100 
	STR	A1,A5	RETURN ADDRESS 
	SUK	A5,4 
	ST	A5,DWTA5,A6	SAVE STACKPOINTER 
	LDK	A2,PAD 
	LDR*	A1,A6	DEVICE ADDRESS
	ADR*	A1,P	INSTRUCTION CODE 
	CIO	A2,0,0 
	EXR	A1	WRITE PAD 
	RF(NA)	BMM100
	ABL	TDISP
BMM100	EQU	*
	LDKL	A2,-TIMACT
	ST	A2,DWTTP,A6	RESTART ACTIVITY TIMER
	LDK	A2,PAD 
	CF	A5,WRITE
	LD	A1,DWTST,A6	GET OUTPUT STATUS 
	RF(NN)	OUTPUT	OUTPUT OR CONTROL REQUEST
	LD	A1,DWTST,A7	GET INPUT STATUS
	ABL(NN)	POLL	READ REQUEST
	RB	BMM 
	EJECT
* 
* 
*	OUTPUT : PERFORM OUTPUT OR CONTROL REQUEST
* 
* 
OUTPUT	EQU	*
	CF	A5,HALTUT 
	LD	A8,DWTECB,A6	GET ECB ADDRESS
	ST	A8,DWTA8,A6	LOAD A8 INTERUPT REGISTERS
	ST	A8,DWTA8,A7 
	LD	A1,DWTOR,A6	GET ORDER 
	ANK	A1,/FF 
	SUK	A1,6 
	ABL(Z)	SELECT	ORDER 06 : WRITE 
	SUK	A1,/24-6 
	RF(Z)	OUT400	ORDER 24 : CLOSE LINE 
	SUK	A1,2 
	RF(Z)	OUT200	ORDER 26 : HALT POLLING 
	SUK	A1,1 
	RF(Z)	OUT350	ORDER 27: START POLLING 
	SUK	A1,/10 
	RF(Z)	OUT100	ORDER 37 : OPEN TC
* 
* 
*	ORDER 38 : CLOSE TC 
* 
* 
	LC	A3,DWTOR,A6	GET INDEX IN POLLIST
	ANK	A3,/FF 
	ADR	A3,A6
	CM	PLIST,A3	DELETE TCA 
	RF	OUT300	COMPLETE REQUEST 
	EJECT
* 
* 
*	ORDER 37 : OPEN TC
* 
* 
OUT100	EQU	*
	LD	A2,ECBCW,A8	GET TCA 
	CF	A15,FINDTC	CHECK IF IT'S ALREADY THERE
	RF(P)	OUT105	TCA NOT FOUND 
	LDK	A1,TCINPL	SET RETURN CODE : TCA ALREADY IN LIST
	RF	OUT310
OUT105	EQU	*
	LDK	A2,0 
	CF	A15,FINDTC	SEARCH EMPTY PLACE IN POLLINGLIST
	RF(Z)	OUT110 
	LDK	A1,LSTOVF	SET RETURN CODE : POLLINGLIST OVERFLOW 
	RF	OUT310	COMPLETE REQUEST 
OUT110	EQU	*
	SC	A4,DWTOR,A6	SAVE INDEX IN POLLIST 
	LD	A1,ECBCW,A8	GET TCA 
	ORKL	A1,/8000	SET TC INACTIVE
	STR	A1,A3	INSERT TCA IN POLLINGLIST
	ANK	A1,/7F 
	LDKL	A2,RTYLIM 
	ST	A2,DWTRTY,A6	RESET RETRY COUNTER
	IFF	BDA=1
	ORK	A1,/20	MODIFY TCA FOR SELECTING
	XIF
	LDR	A3,A1
	IFT	BDA=1
	CF	A5,SELADR 
	XIF
OUT120	EQU	*
	LDK	A4,/20	STA 
	CF	A5,SEPOSE	SEND SELECT SEQUENCE
	CF	A5,READTO	WAIT FOR REPLY WITH TIME SUPERVISION
	LDR	A2,A2
	RF(N)	OUT130 
OUT125	EQU	*
	CF	A5,READP
	RB(NN)	OUT125	WAIT FOR END OF TRANSMISSION 
	CF	A5,HALTIN	DLE,0 RECEIVED HALT INPUT 
	CF	A5,WREOT	SEND EOT 
	LD	A3,ECBCW,A8 
	ANK	A3,/7F 
	LC	A2,DWTOR,A6	GET INDEX IN POLLIST
	ANK	A2,/FF 
	ADR	A2,A6
	ADK	A2,PLIST 
	STR	A3,A2	SET TC ACTIVE
	LD	A1,PACT,A6
	RF(NZ)	OUT300	NOT FIRST IN LIST
	ST	A2,PACT,A6
	RF	OUT300
OUT130	EQU	*
	CF	A5,HALTIN	HALT INPUT
	IM	DWTRTY,A6	INCREASE RETRY COUNTER
	RB(L)	OUT120	LIMIT NOT YET REACHED, TRY AGAIN
	LD	A1,PINACT,A6
	RF(NZ)	OUT150	NOT FIRST IN LIST
	LC	A2,DWTOR,A6	GET INDEX IN POLLIST
	ANK	A2,/FF 
	ADR	A2,A6
	ADK	A2,PLIST 
	ST	A2,PINACT,A6
OUT150	EQU	*
	LDK	A1,TCINAC	SET RETURN CODE : TC INACTIVE
	RF	OUT310
	EJECT
* 
* 
*        ORDER /26 : HALT POLLING 
* 
* 
OUT200	EQU	*
	LDK	A1,2 
	ORS	A1,DWTST,A7	NO POLLING 
	LDK	A1,POLHLT	RC:POLL HALTED 
	LDR	A6,A7
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	CF	A15,TENDIO
	LD	A6,DWTA6,A7	RELOAD A6 
OUT300	EQU	*
	LDK	A1,0 
OUT310	EQU	*
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	CF	A15,TENDIO	COMPLETE REQUEST 
	ABL	BMM
* 
* 
OUT350	EQU	*	START POLLING
	LD	A1,DWTST,A7 
	ANK	A1,2 
	RF(Z)	OUT360	POLLING PERMITTED 
	XRS	A1,DWTST,A7
	RB	OUT300
OUT360	EQU	*
	LDK	A1,POLPER
	RB	OUT310
	EJECT
* 
* 
*        ORDER /24 : CLOSE LINE 
* 
* 
OUT400	EQU	*
	CF	A5,DISCON	DISCONNECT MODEM
	LD	A1,DWTATP,A6
	RF(Z)	OUT410 
	CM*	DWTATP,A6
	CM	DWTATP,A6 
OUT410	EQU	*
	LDK	A1,0 
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	CF	A15,TENDIO
	LDK	A1,LINSTE
	LDR	A6,A7
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	ABL	DISEND 
	EJECT
* 
* 
* 
* 
******************************************************* 
******************************************************* 
* 
* 
*	P R O C E D U R E  T R A N S F E R  P A R T 
* 
* 
******************************************************* 
******************************************************* 
* 
* 
*	POLL : PERFORM READ REQUEST 
* 
* 
POLL	EQU	*
	ANK	A1,2 
	RF(Z)	POL100 
	LDR	A1,A6
	CF	A5,SETIME 
	DATA	POLL10,DELAY
	ST	A4,DWTTP,A6 
	ABL	READ10	RETURN TO INTERRUPTED PROGRAM 
POLL10	EQU	*	AFTER DELAY
	LDR	A6,A1	RELOAD A6
	LD	A7,DWTA7,A6	RELOAD A7 
	LD	A8,DWTECB,A7
	CM	ECBRC,A8
	LDK	A1,POLHLT	RC: POLL HALTED
	RF	POL225
POL100	EQU	*
	LD	A8,DWTECB,A7
	ST	A8,DWTA8,A6 
	ST	A8,DWTA8,A7 
	CM	ECBRC,A8
	CM	ECBEL,A8
	LD	A1,PACT,A6
	RF(Z)	POL130	NO ACTIVE TCA PRESENT 
POL110	EQU	*
	ADK	A1,2 
	LDR*	A3,A1	GET NEXT TCA
	RB(Z)	POL110	EMPTY PLACE 
	RF(NN)	POL150	ACTIVE TC FOUND
	ADK	A3,1 
	RB(NZ)	POL110	INACTIVE TCA 
	LDK	A1,PLIST	END OF POLLIST
	ADR	A1,A6
POL120	EQU	*
	ST	A1,PACT,A6	UPDATE 'PACT'
POL130	EQU	*
	LD	A1,PINACT,A6
	ABL(Z)	BMM100	NO INACTIVE TC PRESENT 
POL132	EQU	*
	ADK	A1,2	NEXT POS IN LIST
	CW	A1,PINACT,A6
	RF(E)	POL134	LIST SCANNED
	LDR*	A3,A1 
	RB(NN)	POL132	NOT INACTIVE TC
	ADK	A3,1 
	RF(NZ)	POL138	INACTIVE TC FOUND
	LDK	A1,PLIST	END OF LIST REACHED 
	ADR	A1,A6
	RB	POL132
POL134	EQU	*
	LDR*	A3,A1 
	RF(N)	POL140	INACTIVE TC FOUND 
	CM	PINACT,A6	NO INACTIVE TC IN LIST
	ABL	BMM100 
POL138	EQU	*
	SUK	A3,1 
POL140	EQU	*
	ST	A1,PINACT,A6	UPPDATE PINACT 
	LDK	A1,/FF 
	SC	A1,DWTOR,A7	INDICATE INACTIVE TC
	LDKL	A2,-1	NO RECOVERY BY REOPENING
	RF	POL200
POL150	EQU	*
	ST	A1,PACT,A6	UPPDATE PACT 
	LDK	A1,0 
	SC	A1,DWTOR,A7	INDICATE ACTIVE TC
	LDKL	A2,RTYLIM 
POL200	EQU	*	INITIATE POLLING 
	ST	A2,DWTRTY,A6	RESET RETRYCOUNTER 
	SC*	A3,ECBBA,A8	SC*ORE TCA 
	IFT	BDA=1
	ANK	A3,/7F 
	SUK	A3,/41	TABLE INDEX 
	LC	A3,POLTAB,A3
	XIF
	LDK	A4,GP	LOAD GP
POL210	EQU	*
	CF	A5,SEPOLL	SEND POLL SEQUENCE
POL212	EQU	*
	CF	A5,READTO	WAIT FOR REPLY
	LDR	A2,A2
	RF(NN)	POL230
POL215	EQU	*
	CF	A5,HALTIN 
	ANK	A1,1 
	ABL(NZ)	OLI160	MODEM NOT OPERABLE
	IM	DWTRTY,A6 
	RB(N)	POL210	LIMIT NOT REACHED , TRY AGAIN 
	CF	A5,EOTOUT	SEND EOT
	LD	A1,DWTOR,A7 
	ABL(N)	BMM100	TC ALLREADY INACTIVE 
POL220	EQU	*
	LC*	A3,ECBBA,A8
	ANK	A3,/7F 
	ORKL	A3,/8000	SET TC INACTIVE
	ST*	A3,PACT,A6 
	LD	A2,PINACT,A6
	RF(NZ)	POL224
	LD	A1,PACT,A6
	ST	A1,PINACT,A6
POL224	EQU	*
	LDK	A1,TCINAC	SET RETURN CODE : TC INACTIVE
POL225	EQU	*
	CF	A5,HALTUT 
	LDR	A6,A7
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	CF	A15,TENDIO	END READ REQ 
	LD	A6,DWTA6,A7	RESTORE A6
	ABL	BMM
POL230	EQU	*
	CWK	A2,STX 
	RF(E)	MIP	STX RECEIVED 
	CWK	A2,EOT 
	RF(E)	POL240 
POL235	EQU	*
	CF	A5,READP	WAIT FOR CARRIER DOWN
	RB(NN)	POL235
	RB	POL215
POL240	EQU	*
	CF	A5,HALTIN 
	LD	A1,DWTOR,A7 
	ABL(NN)	BMM100	TC NOT INACTIVE 
POL245	EQU	*
	LC*	A3,ECBBA,A8
	ANK	A3,/7F	MASK TCA
	ST*	A3,PINACT,A6	SET TC ACTIVE 
	LD	A3,PACT,A6
	RF(NZ)	POL250
	LD	A1,PINACT,A6
	ST	A1,PACT,A6
POL250	EQU	*
	LDKL	A1,TCACT	RC: TC ACTIVE
	RB	POL225
	EJECT
* 
* 
*	MIP : MESSAGE INPUT 
* 
* 
MIP	EQU	* 
	CF	A5,HALTUT 
	LDKL	A1,RTYLIM 
	ST	A1,DWTRTY,A6	RESET RETRY COUNTER
MIP050	EQU	*
	LDK	A4,2	BUFFER POINTER
	CM	DWTACK,A6	RESET ACK COUNTER 
	CM	DWTBCC,A6	RESET BCC COUNTER 
	CF	A5,READP	READ TCA 
	RF(NZ)	MIP110	SST OR PAR ERROR 
	XRS	A2,DWTBCC,A6 
	IFT	BDA=0
	CC*	A2,ECBBA,A8
	RF(NE)	MIP110
	XIF
MIP100	EQU	*
	CF	A5,READP	READ NEXT CHARACTER
	RF(N)	MIP130	SST 
	RF(NZ)	MIP110	PARITY ERROR 
	XRS	A2,DWTBCC,A6	CALCULATE BCC 
	CWK	A2,ETB 
	RF(E)	MIP210	ETB RECEIVED
	CWK	A2,ETX 
	RF(E)	MIP220	ETX RECEIVED
	LDR	A3,A4
	AD	A3,ECBBA,A8 
	SCR	A2,A3
	ADK	A4,1 
MIP105	EQU	*
	CW	A4,ECBRL,A8 
	RB(NG)	MIP100
	CF	A5,READ 
	RF(N)	MIP130 
	XRS	A2,DWTBCC,A6 
	CWK	A2,ETX 
	RF(E)	MIP220 
MIP110	EQU	*	PARITY ERROR, BUFFER OVERFLOW
	CF	A5,READP	WAIT FOR END OF TRANSMISSION BLOCK 
	RF(N)	MIP130	STATUS INTERRUPT
	CWK	A2,ETB 
	RF(E)	MIP120	ETB RECEIVED
	CWK	A2,ETX 
	RB(NE)	MIP110	NOT END OF BLOCK 
MIP120	EQU	*
	CF	A5,READ	READ BCC
MIP130	EQU	*
	CF	A5,HALTIN 
	LDK	A3,0	INDICATE BLOCK RECOVERY 
	IM	DWTRTY,A6 
	RF(NL)	MIP200	RETRY LIMIT OVERFLOW 
	CF	A5,WRNAK	SEND NAK 
	LDKL	A2,RETRAN 
	ORS	A2,ECBRC,A8	PRELOAD RC: RETRANSMISSION 
MIP140	EQU	*
	CF	A5,READTO	WAIT FOR REPLY
	CWK	A2,STX 
	RF(E)	MIP160 
MIP145	EQU	*
	CWK	A2,EOT 
	RF(E)	MIP270 
	LDR	A2,A2
	RF(N)	MIP155	TIME OUT
MIP150	EQU	*
	CF	A5,READP
	RB(NN)	MIP150	WAIT FOR END OF TRANSMISSION 
	LDKL	A1,RETRAN 
	ORS	A1,ECBRC,A8
MIP155	EQU	*
	CF	A5,HALTIN 
	ANK	A1,1 
	ABL(NZ)	OLI160 
	IM	DWTRTY,A6 
	RF(NL)	MIP200	RETRY LIMIT OVERFLOW 
	CF	A5,WRENQ	SEND ENQ 
	RB	MIP140
MIP160	EQU	*
	LDR	A3,A3
	RB(NZ)	MIP105	RECEIVE NEXT BLOCK 
	SUKL	A4,MAXTBL 
	RB(N)	MIP050	1:ST BLOCK
	SUK	A4,1 
	RB(E)	MIP050	1:ST BLOCK
	LDK	A1,0 
MIP165	EQU	*
	ADK	A1,1 
	SUKL	A4,MAXTBL 
	RB(NN)	MIP165
	LDK	A4,1 
MIP170	EQU	*
	ADKL	A4,MAXTBL 
	SUK	A1,1 
	RB(P)	MIP170 
	CM	DWTBCC,A6 
	RB	MIP100
MIP200	EQU	*
	CF	A5,WREOT	SEND EOT 
	CM	ECBRC,A8
	CW	A4,ECBRL,A8 
	RF(G)	MIP260	BUFFER OVERFLOW 
	CM	ECBEL,A8
	LD	A1,DWTOR,A7 
	RF(N)	MIP280	ALREADY INACTIVE
	ABL	POL220 
MIP210	EQU	*
	CF	A5,READP	READ BCC 
	RB(NZ)	MIP130	PARITY ERROR 
	CW	A2,DWTBCC,A6
	RB(NE)	MIP130	BCC ERROR
	CM	DWTBCC,A6 
	CF	A5,HALTIN	HALT INPUT
	CF	A5,WRACK	SEND ACK 0/1 
	LDKL	A1,RTYLIM 
	ST	A1,DWTRTY,A6	RESET RETRY COUNTER
	CF	A5,READTO 
	CWK	A2,STX 
	RB(E)	MIP105 
	RB	MIP145
MIP220	EQU	*
	CF	A5,READP	READ BCC 
	RB(NZ)	MIP130	PARITY ERROR 
	CW	A2,DWTBCC,A6
	RB(NE)	MIP130	BCC ERROR
MIP225	EQU	*
	CF	A5,HALTIN	HALT INPUT
	CF	A5,WRACK	SEND ACK 0/1 
	ST	A4,ECBEL,A8 
	CF	A5,READTO	WAIT FOR EOT
	CF	A5,HALTIN 
	LDR	A2,A2
	RF(N)	MIP230	TIMEOUT HAS OCCURRED
	CWK	A2,ENQ 
	RF(NE)	MIP240
	LDK	A1,1	ENQ HAS BEEN RECEIVED 
	XRS	A1,DWTACK,A6	INCREASE ACK COUNTER
	LDKL	A2,RETRAN 
	ORS	A2,ECBRC,A8	PRELOAD RC: RETRANSMISSION 
	IM	DWTRTY,A6 
	RB(NL)	MIP200	RETRY LIMIT OVERFLOW 
	RB	MIP225	REPEAT LAST ACK
MIP230	EQU	*
	CF	A5,HALTIN 
	CF	A5,WREOT	SEND EOT 
MIP240	EQU	*
	LDK	A1,0 
	LD	A2,DWTOR,A7 
	ABL(NN)	POL225	TC NOT INACTIVE 
	ABL	POL245	SET TC ACTIVE 
MIP260	EQU	*	BUFFER OVERFLOw
	CM	ECBRC,A8
	LDK	A1,INCLEN	RC: INCORRECT LENGTH 
	ABL	POL225 
MIP270	EQU	*
	CF	A5,HALTIN 
MIP280	EQU	*
	CF	A5,STOUT
	CF	A5,EOTOUT 
	ABL	BMM100 
	EJECT
* 
* 
*	SELECT : TRANSFER MESSAGE TO TC 
* 
* 
SELECT	EQU	*
	LDKL	A1,RTYLIM 
	ST	A1,DWTRTY,A6	RESET RETRY COUNTER
SEL100	EQU	*
	LD	A4,ECBBA,A8	GET BUFFER ADDRESS
	LCR	A3,A4	GET TCA
	IFF	BDA=1
	ORK	A3,/20	MODIFY TCA
	XIF
	IFT	BDA=1
	CF	A5,SELADR 
	XIF
	LC	A4,2,A4	GET STA 
	ANK	A4,/FF 
	CF	A5,SEPOSE	SEND SELECTSEQUENCE 
	CF	A5,READTO	WAIT FOR REPLY
	LDR	A2,A2
	RF(NN)	SEL120
SEL110	EQU	*
	CF	A5,HALTIN 
	ANK	A1,1 
	ABL(NZ)	OLI160	MOD NOT OP
	IM	DWTRTY,A6	RECEIVE TIMEOUT 
	RB(N)	SEL100	LIMIT NOT REACHED , TRY AGAIN 
SEL115	EQU	*
	CF	A5,WREOT
	CM	ECBRC,A8
	LDK	A1,TCINAC	RC: TV INACTIVE
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	CF	A15,TENDIO	COMPLETE WRITE REQUEST 
	LC*	A3,ECBBA,A8
	ANK	A3,/7F 
	LC	A2,DWTOR,A6	GET INDEX IN POLLIST
	ANK	A2,/FF 
	ADR	A2,A6
	ADK	A2,PLIST 
	ORKL	A3,/8000	SET TC INACTIVE
	STR	A3,A2
	LD	A1,PINACT,A6
	ABL(NZ)	BMM	NOT 1:ST INACTIVE TC 
	ST	A2,PINACT,A6
	ABL	BMM
SEL120	EQU	*
	CWK	A2,DLE 
	RB(NE)	SEL110	INVALID REPLY
	CF	A5,READ	GET NEXT CHARACTER
	CF	A5,HALTIN 
	CWK	A2,PAR:0 
	RF(E)	MUT	ACK 0 RECEIVED 
	CWK	A2,SEMIKO
	RB(NE)	SEL110	INVALID REPLY
SEL130	EQU	*
	LDKL	A1,TCBUSY	RC: TC BUSY 
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	CF	A15,TENDIO	COMPLETE WRITE REQUEST 
	CF	A5,WREOT	SEND EOT 
	ABL	BMM
	EJECT
* 
* 
*	MUT : MESSAGE OUTPUT
* 
* 
MUT	EQU	* 
	CM	DWTACK,A6	RESET ACK COUNTER 
	LDK	A3,3	BUFFER INDEX
	ST	A3,ECBEL,A8 
	AD	A3,ECBBA,A8 
MUT100	EQU	*
	LDKL	A1,RTYLIM 
	ST	A1,DWTRTY,A6	RESET RETRY COUNTER
MUT110	EQU	*
	CM	DWTBCC,A6	RESET BCC COUNTER 
	CF	A5,WRSYN	START TRANSMITTER AND SEND SYN 
	LDK	A2,STX 
	CF	A5,WRITE	SEND STX 
	LDK	A4,0	RESET CHARACTER COUNTER 
MUT120	EQU	*
	LD	A1,ECBEL,A8 
	CW	A1,ECBRL,A8 
	RF(E)	MUT150	END OF MESSAGE REACHED
	CWK	A4,MAXTBL
	RF(E)	MUT140	END OF TRANSMISSION BLOCK REACHED 
	LCR	A2,A3
	IM	ECBEL,A8
	ADK	A3,1 
	ADK	A4,1	INCREMENT BLOCK INDEX 
	ANK	A2,/7F 
	CWK	A2,ETX 
	RF(E)	MUT135 
	CWK	A2,ETB 
	RF(E)	MUT135 
MUT130	EQU	*
	XRS	A2,DWTBCC,A6	UPDATE BCC COUNTER
	CF	A5,WRITEP	SEND ONE CHARACTER
	RB	MUT120
MUT135	EQU	*
	LDK	A1,CODERR	RC: CODE CHECK ERROR 
	ORS	A1,ECBRC,A8
	LDK	A2,/20	REPLACE ILLEGAL CHARACTER 
	RB	MUT130
MUT140	EQU	*
	LDK	A2,ETBP
	RF	MUT160
MUT150	EQU	*
	LDK	A2,ETXP
MUT160	EQU	*
	XRS	A2,DWTBCC,A6	UPDATE BCC
	CF	A5,WRITE	SEND ETB / ETX 
	LD	A2,DWTBCC,A6
	CF	A5,WRITEP	SEND BCC
	LDK	A2,PAD 
	CF	A5,WRITE	SEND PAD 
	LDK	A1,1 
	XRS	A1,DWTACK,A6	INCREASE ACK COUNTER
	CF	A5,HALTUT	TERMINATE OUTPUT
MUT170	EQU	*
	CF	A5,READTO	WAIT FOR REPLY
	LDR	A2,A2
	RF(NN)	MUT190
MUT180	EQU	*	TIME OUT, UNDEFINED REPLY
	CF	A5,HALTIN 
	LDKL	A1,RETRAN 
	ORS	A1,ECBRC,A8	PRELOAD RC: RETRANSMISSION 
	IM	DWTRTY,A6 
	ABL(NL)	SEL115	RETRY LIMIT OVERFLOW
	CF	A5,WRENQ	SEND ENQ 
	RB	MUT170
MUT190	EQU	*
	CWK	A2,DLE 
	RF(NE)	MUT220
	CF	A5,READ	DLE RECEIVED
	CF	A5,HALTIN	HALT INPUT
	CWK	A2,SEMIKO
	RF(E)	MUT250	WACK
	LD	A1,DWTACK,A6
	RF(Z)	MUT210 
	CWK	A2,'1' 
	RB(NE)	MUT180
MUT200	EQU	*	CORRECT ACKK RECEIVED
	LD	A1,ECBEL,A8 
	CW	A1,ECBRL,A8 
	RB(NE)	MUT100	NOT END OF MESSAGE 
MUT205	EQU	*	TRANSFER COMPLETE
	CF	A5,WREOT	SEND EOT 
	LDK	A1,0 
	IFT	RQLOGG=1 
	XIF
	CF	A15,TENDIO	COMPLETE WRITE REQUEST 
	ABL	BMM
MUT210	EQU	*
	CWK	A2,PAR:0 
	RB(E)	MUT200	ACK 0 RECEIVED
	RB	MUT180
MUT220	EQU	*
	CF	A5,HALTIN 
	CWK	A2,NAK 
	RF(NE)	MUT230
MUT225	EQU	*	NAK OR ENQ RECEIVED
	IM	DWTRTY,A6 
	ABL(NL)	SEL115	RETRY LIMIT OVERFLOW
	NGR	A4,A4
	ADR	A3,A4
	ADS	A4,ECBEL,A8
	LDKL	A1,RETRAN 
	ORS	A1,ECBRC,A8
	RB	MUT110
MUT230	EQU	*
	CWK	A2,ENQ 
	RB(E)	MUT225	ENQ RECEIVED
	RB	MUT180
MUT250	EQU	*	WACK RECEIVED
	LD	A1,ECBEL,A8 
	CW	A1,ECBRL,A8 
	RB(E)	MUT205	COMPLETE MESSAGE TRANFERED
	ABL	SEL130	TC BUSY 
	EJECT
* 
* 
*	SEPOSE : SEND POLL OR SELECT SEQUENCE 
* 
*	ON ENTRY A3 CONTAINS TCA (S/P)
*	         A4 CONTAINS STA / GP 
* 
* 
SEPOSE	EQU	*	START OUTPUT AND SEND SYN
	CF	A5,STOUT
	CF	A5,SEPOLL 
	CF	A5,HALTUT 
	RTN	A5 
SEPOLL	EQU	*
	CF	A5,EOTOUT 
	CF	A5,WRSY10	SEND SYN
	LDR	A2,A3
	CF	A5,WRITEP	SEND TCA (P/S)
	LDR	A2,A3
	CF	A5,WRITEP 
	LDR	A2,A4
	CF	A5,WRITEP	SEND STA / GP 
	LDR	A2,A4
	CF	A5,WRITEP 
	LDK	A2,ENQ 
	CF	A5,WRITE	SEND ENQ 
	LDK	A2,PAD 
	CF	A5,WRITE
	LDK	A2,PAD 
	CF	A5,WRITE
	RTN	A5 
	EJECT
* 
* 
*	START TRANSMITTER AND SEND SYN
* 
* 
WRSYN	EQU	* 
	CF	A5,STOUT	START TRANSMITTER
WRSY10	EQU	*
	LDKL	A2,SYNCO	NUMBER OF SYNC CHARACTERS
	ST	A2,DWTATP,A7
WRSY20	EQU	*
	LDK	A2,SYN 
	CF	A5,WRITE
	IM	DWTATP,A7 
	RB(NZ)	WRSY20
	RTN	A5 
	EJECT
* 
* 
*	WREOT : SEND SINGLE EOT 
* 
* 
WREOT	EQU	* 
	CF	A5,STOUT
	CF	A5,EOTOUT 
	CF	A5,HALTUT 
	RTN	A5 
EOTOUT	EQU	*
	CF	A5,WRSY10 
	LDK	A2,EOT 
	CF	A5,WRITE	SEND EOT 
WRE10	EQU	* 
	LDK	A2,PAD 
	CF	A5,WRITE	SEND PAD 
	RTN	A5 
* 
* 
*	WRENQ : SEND SINGLE ENQ 
* 
* 
WRENQ	EQU	* 
	CF	A5,WRSYN	START OUTPUT AND SEND SYN
	LDK	A2,ENQ 
	CF	A5,WRITE	SEND ENQ 
WRE000	EQU	*
	LDK	A2,PAD 
	CF	A5,WRITE
	CF	A5,HALTUT 
	RTN	A5 
	EJECT
* 
* 
*	WRNAK : SEND SINGLE NAK 
* 
* 
WRNAK	EQU	* 
	CF	A5,WRSYN	START OUTPUT AND SEND SYN
	LDK	A2,NAK 
	CF	A5,WRITE	SEND NAK 
	RB	WRE000
* 
* 
*	WRACK : SEND ACK-0 OR ACK-1 
* 
* 
WRACK	EQU	* 
	CF	A5,WRSYN	START OUTPUT AND SEND SYN
	LDK	A2,DLE 
	CF	A5,WRITE	SEND DLE 
	LDK	A2,1 
	XRS	A2,DWTACK,A6	INCREASE ACK COUNTER
	LD	A2,DWTACK,A6
	RF(NZ)	WRA10 
	LDK	A2,PAR:0 
	RF	WRA20 
WRA10	EQU	* 
	LDK	A2,'1' 
WRA20	EQU	* 
	CF	A5,WRITE	SEND '0' OR '1'
	RB	WRE000
	EJECT
* 
* 
*	STINP : CONNECT MODEM/START RECEIVER
* 
* 
STINP	EQU	* 
	LDR*	A1,A7 
	ADR*	A1,P
	CIO	A2,1,0 
	LDKL	A2,/100+SYN 
	EXR	A1 
	ABL(NA)	SST055	HW NOT PRESENT OR ERRONEUS
	RTN	A5 
* 
* 
*	STOUT : START TRANSMITTER 
* 
* 
STOUT	EQU	* 
	LDR*	A1,A6 
	ADR*	A1,P
	CIO	A2,1,0 
	EXR	A1 
	RF(NA)	STOU10
	RF	WRI200
STOU10	EQU	*
	RTN	A5 
	EJECT
* 
* 
*	DISCON : DISCONNECT MODEM 
* 
* 
DISCON	EQU	*
	LDK	A1,0 
	SC	A1,DWTST+1,A6 
	SC	A1,DWTST+1,A7 
	CF	A5,HALTIN 
	CF	A5,HALTUT 
	LDR*	A1,A7 
	ADR*	A1,P
	CIO	A2,1,0 
	LDK	A2,0	DISCONNECT
	EXR	A1 
	RTN	A5 
* 
* 
*	HALTIN : HALT LINE INPUT
* 
* 
HALTIN	EQU	*
	LDR*	A1,A7 
HALTIO	EQU	*
	ADR*	A1,P
	CIO	A1,0,0 
	EXR	A1 
	ORKL	A1,/840	A1:= SST INSTR
	EXR	A1 
	RTN	A5 
* 
* 
*	HALTUT : HALT LINE OUTPUT 
* 
* 
HALTUT	EQU	*
	LDR*	A1,A6 
	RB	HALTIO
	EJECT
* 
* 
*	WRITEP : GENERATE PARITY AND SEND CHARACTER 
* 
* 
WRITEP	EQU	*
	ANK	A2,/7F 
	LC	A2,PARTAB,A2
* 
* 
*	WRITE : TRANSMIT ONE CHARACTER
* 
* 
WRITE	EQU	* 
	LDR*	A1,A6	GET DEVICE ADDRESS
	ADR*	A1,P
	OTR	A2,0,0 
	EXR	A1 
	RF(NA)	WRI300
	IFF	LOGG=0 
	CF	A15,LOGOUT
	XIF
WRI200	EQU	*
	ST	A3,DWTSAV,A6
	ST	A4,DWTSAV+2,A6
	ST	A5,DWTSAV+4,A6
	RF	READ10
WRI300	EQU	*
	LDR*	A1,A6 
	ADR*	A1,P
	SST	A1,0 
	EXR	A1 
	ST	A1,TPUT,A7	SAVE HW STATUS 
	IM	TPUTC,A7
	ABL	BMM	TP ERROR RECOVERY
	EJECT
* 
* 
*	READTO : READ WITH TIME SUPERVISION 
*	         FOR 2-/4-WIRE LINE 
* 
* 
READTO	EQU	*
	ST	A4,DWTSAV+2,A7
	LDR	A1,A7
	CF	A15,SETIME	START RECEIVE TIMER
	DATA	RET040
	DATA	TIMRE4
	ST	A4,DWTTP,A7	STORE TIMER POINTER 
	LD	A4,DWTSAV+2,A7
RESYNC	EQU	*	RESYNCRONIZE 
	CF	A5,STINP
RES20	EQU	* 
	CF	A5,READ	WAIT FOR SYN
	LDR	A2,A2
	RB(N)	RESYNC	STATUS INTERRUPT
	CWK	A2,SYN 
	RB(E)	RES20	SYN RECEIVED WAIT FOR NEXT 
	CM*	DWTTP,A7	HALT RECEIVE TIMER
	CM	DWTTP,A7
	RTN	A5 
	EJECT
RET040	EQU	*	TIME OUT ENTRY 
	LDR	A7,A1
	CM	DWTTP,A7
	LDK	A5,4 
	ADS	A5,DWTA5,A7
	LDKL	A2,/8000
RETO50	EQU	*
	ABL	IHI200 
	EJECT
* 
* 
*	READP : READ CHARACTER AND CHECK PARITY 
*	        ON PARITY ERROR CR POSITIVE 
* 
* 
READP	EQU	* 
	CF	A5,READ	READ CHARACTER
	ADK	A5,4 
	LDR	A2,A2
	RF(N)	REDRET	STATUS INTERRUPT
	LDR	A1,A2
	ANK	A2,/7F 
	CC	A1,PARTAB,A2
	RF(N)	READP1 
REDRET	ABR*	A5
READP1	ADK	A1,1 
	RB	REDRET
	EJECT
* 
*	READ : SAVE REGISTER A3-A5
*	       RELOAD REGISTER A1-A8 FROM A15 STACK 
*	       RETURN TO INTERRUPTED PROGRAM
* 
READ	EQU	*
	ST	A3,DWTSAV,A7
	ST	A4,DWTSAV+2,A7
	ST	A5,DWTSAV+4,A7
READ05	EQU	*
READ10	EQU	*
	IFT	CPU852=1 
	LDR*	A8,A15
	LDR*	A7,A15
	LDR*	A6,A15
	LDR*	A5,A15
	LDR*	A4,A15
	LDR*	A3,A15
	LDR*	A2,A15
	LDR*	A1,A15
	XIF
	IFF	CPU852=1 
	MLR	8,A15
	XIF
	RTN	A15
* 
* 
* 
DUMDUM	EQU	*-2	DUMMY DWT
	DATA	/0001	STATUS BUSY, CLOSED 
	EJECT
******************************************************* 
* 
*	INTERRUPT HANDLER , CHLC RECEIVER 
* 
******************************************************* 
* 
* 
* 
IHMI01	EQU	*
	ST	P,INTSAV
	IFT	LINE01=0 
	ABL	ILLINT 
DWMU01	EQU	*	DUMMY ENTRY
DWMI01	EQU	DUMDUM 
	XIF
	IFF	LINE01=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE01=0 
	IFF	CPU852=1 
	MSR	A8,A15 
	XIF
	IFF	LINE01=0 
	LDKL	A7,DWMI01 
	INR	A2,0,DAMI01	GET CHARACTER FROM LINR
	ABL(NA)	SSTIN
	XIF
IHI100	EQU	*
	IFF	LOGG=0 
	CF	A15,LOGIN 
	XIF
IHI200	EQU	*
	LD	A3,DWTSAV,A7
	LD	A4,DWTSAV+2,A7
	LD	A5,DWTSAV+4,A7
	LD	A6,DWTA6,A7 
	LD	A8,DWTA8,A7 
	RTN	A5 
	EJECT
* 
* 
* 
IHMI02	EQU	*
	ST	P,INTSAV
	IFT	LINE02=0 
	ABL	ILLINT 
DWMU02	EQU	*
DWMI02	EQU	DUMDUM 
	XIF
	IFF	LINE02=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE02=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE02=0 
	LDKL	A7,DWMI02 
	INR	A2,0,DAMI02	GET CHARACTER FROM LINE
	RB(A)	IHI100 
	ABL	SSTIN
	XIF
	EJECT
* 
* 
* 
IHMI03	EQU	*
	ST	P,INTSAV
	IFT	LINE03=0 
	ABL	ILLINT 
DWMU03	EQU	*	DUMMY
DWMI03	EQU	DUMDUM 
	XIF
	IFF	LINE03=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE03=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE03=0 
	LDKL	A7,DWMI03 
	INR	A2,0,DAMI03	GET CHARACTER FROM LINE
	RB(A)	IHI100 
	ABL	SSTIN
	XIF
	EJECT
* 
* 
* 
IHMI04	EQU	*
	ST	P,INTSAV
	IFT	LINE04=0 
	ABL	ILLINT 
DWMU04	EQU	*	DUMMY
DWMI04	EQU	DUMDUM 
	XIF
	IFF	LINE04=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE04=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE04=0 
	LDKL	A7,DWMI04 
	INR	A2,0,DAMI04	GET CHARACTER FROM LINE
	RB(A)	IHI100 
	RF	SSTIN 
	XIF
	EJECT
* 
* 
* 
IHMI05	EQU	*
	ST	P,INTSAV
	IFT	LINE05=0 
	ABL	ILLINT 
DWMU05	EQU	*	DUMMY
DWMI05	EQU	DUMDUM 
	XIF
	IFF	LINE05=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE05=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE05=0 
	LDKL	A7,DWMI05 
	INR	A2,0,DAMI05	GET CHARACTER FROM LINE
	RB(A)	IHI100 
	RF	SSTIN 
	XIF
	EJECT
* 
* 
* 
IHMI06	EQU	*
	ST	P,INTSAV
	IFT	LINE06=0 
	ABL	ILLINT 
DWMU06	EQU	*	DUMMY
DWMI06	EQU	DUMDUM 
	XIF
	IFF	LINE06=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE06=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE06=0 
	LDKL	A7,DWMI06 
	INR	A2,0,DAMI06	GET CHARACTER FROM LINE
	RB(A)	IHI100 
	RF	SSTIN 
	XIF
	EJECT
* 
* 
* 
IHMI07	EQU	*
	ST	P,INTSAV
	IFT	LINE07=0 
	ABL	ILLINT 
DWMU07	EQU	*	DUMMY
DWMI07	EQU	DUMDUM 
	XIF
	IFF	LINE07=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE07=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE07=0 
	LDKL	A7,DWMI07 
	INR	A2,0,DAMI07	GET CHARACTER FROM LINE
	RB(A)	IHI100 
	RF	SSTIN 
	XIF
	EJECT
* 
* 
* 
IHMI08	EQU	*
	ST	P,INTSAV
	IFT	LINE08=0 
	ABL	ILLINT 
DWMU08	EQU	*	DUMMY
DWMI08	EQU	DUMDUM 
	XIF
	IFF	LINE08=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE08=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE08=0 
	LDKL	A7,DWMI08 
	INR	A2,0,DAMI08	GET CHARACTER FROM LINE
	RB(A)	IHI100 
	RF	SSTIN 
	XIF
	EJECT
* 
* 
* 
IHMI09	EQU	*
	ST	P,INTSAV
	IFT	LINE09=0 
	ABL	ILLINT 
DWMU09	EQU	*	DUMMYS 
DWMI09	EQU	DUMDUM 
	XIF
	IFF	LINE09=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE09=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE09=0 
	LDKL	A7,DWMI09 
	INR	A2,0,DAMI09	GET CHARACTER FROM LINE
	ABL(A)	IHI100
	RF	SSTIN 
	XIF
	EJECT
* 
* 
* 
IHMI10	EQU	*
	ST	P,INTSAV
	IFT	LINE10=0 
	ABL	ILLINT 
DWMU10	EQU	*	DUMMY
DWMI10	EQU	DUMDUM 
	XIF
	IFF	LINE10=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE10=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE10=0 
	LDKL	A7,DWMI10 
	INR	A2,0,DAMI10	GET CHARACTER FROM LINE
	ABL(A)	IHI100
	RF	SSTIN 
	XIF
	EJECT
* 
* 
* 
IHMI11	EQU	*
	ST	P,INTSAV
	IFT	LINE11=0 
	ABL	ILLINT 
DWMU11	EQU	*	DUMMY
DWMI11	EQU	DUMDUM 
	XIF
	IFF	LINE11=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE11=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE11=0 
	LDKL	A7,DWMI11 
	INR	A2,0,DAMI11	GET CHARACTER FROM LINE
	ABL(A)	IHI100
	RF	SSTIN 
	XIF
	EJECT
* 
* 
* 
IHMI12	EQU	*
	ST	P,INTSAV
	IFT	LINE12=0 
	ABL	ILLINT 
DWMU12	EQU	*	DUMMY
DWMI12	EQU	DUMDUM 
	XIF
	IFF	LINE12=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE12=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE12=0 
	LDKL	A7,DWMI12 
	INR	A2,0,DAMI12	GET CHARACTER FROM LINE
	ABL(A)	IHI100
	RF	SSTIN 
	XIF
	EJECT
******************************************************* 
* 
*	STATUS INTERRUPT HANDLER , CHLC RECEIVER
* 
******************************************************* 
* 
* 
* 
SSTIN	EQU	* 
	LD	A6,DWTA6,A7 
	LDR*	A1,A7 
	ADR*	A1,P
	SST	A2,0 
	EXR	A1 
	IFF	LOGG=0 
	CF	A15,LOGSST
	XIF
	LDR	A1,A2
	RF(NZ)	SST030
	LDR*	A1,A7 
	ADR*	A1,P
	CIO	A2,1,0 
	LDKL	A2,/116 
	EXR	A1	START INPUT 
	ABL	READ10 
SST030	EQU	*
	ANK	A1,2 
	RF(Z)	SST050 
	IM	TPINC,A7	COUNT TP ERRORS
	LD	A1,DWTTP,A7	GET RUNNING POINTER 
	RF(Z)	SST040 
	CM*	DWTTP,A7 
	CM	DWTTP,A7
SST040	EQU	*
	ABL	BMM	TP ERROR RECOVERY
SST050	EQU	*
	LDR	A1,A2
	ANK	A1,1 
	RF(Z)	SST070 
SST055	EQU	*	CLOSE LINE 
	LDK	A5,STB 
	ADR	A5,A6
	CF	A5,DISCON 
	CF	A5,HALTIN 
	LD	A1,DWTTP,A7 
	RF(Z)	SST60
	CM*	DWTTP,A7 
	CM	DWTTP,A7
SST60	EQU	* 
	LD	A1,DWTATP,A6
	RF(Z)	SST65
	CM*	DWTATP,A6
	CM	DWTATP,A6 
SST65	EQU	* 
	LDK	A1,MODNOP	RC: MODEM NOT OPERABLE 
	LD	A8,DWTECB,A6
	RF(Z)	SST067 
	CM	ECBRC,A8
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	CF	A15,TENDIO
SST067	EQU	*
	LDR	A6,A7
	LD	A8,DWTECB,A6
	RF(Z)	SST069 
	CM	ECBRC,A8
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
SST069	EQU	*
	ABL	DISEND 
SST070	EQU	*
	ORKL	A2,/8000	NO CARRIER OR CALLING INDICATOR
	ABL	IHI200 
	EJECT
******************************************************* 
* 
*	INTERRUPT HANDLER , CHLC TRANSMITTER
* 
******************************************************* 
* 
* 
* 
IHMU01	EQU	*
	ST	P,INTSAV
	IFT	LINE01=0 
	ABL	ILLINT 
	XIF
	IFF	LINE01=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE01=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE01=0 
	LDKL	A6,DWMU01 
	XIF
IHU100	EQU	*
	LD	A3,DWTSAV,A6
	LD	A4,DWTSAV+2,A6
	LD	A5,DWTSAV+4,A6
	LD	A7,DWTA7,A6 
	LD	A8,DWTA8,A6 
	RTN	A5 
	EJECT
* 
* 
* 
IHMU02	EQU	*
	ST	P,INTSAV
	IFT	LINE02=0 
	ABL	ILLINT 
	XIF
	IFF	LINE02=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE02=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE02=0 
	LDKL	A6,DWMU02 
	RB	IHU100
	XIF
	EJECT
* 
* 
* 
IHMU03	EQU	*
	ST	P,INTSAV
	IFT	LINE03=0 
	ABL	ILLINT 
	XIF
	IFF	LINE03=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE03=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE03=0 
	LDKL	A6,DWMU03 
	RB	IHU100
	XIF
	EJECT
* 
* 
* 
IHMU04	EQU	*
	ST	P,INTSAV
	IFT	LINE04=0 
	ABL	ILLINT 
	XIF
	IFF	LINE04=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE04=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE04=0 
	LDKL	A6,DWMU04 
	RB	IHU100
	XIF
	EJECT
* 
* 
* 
IHMU05	EQU	*
	ST	P,INTSAV
	IFT	LINE05=0 
	ABL	ILLINT 
	XIF
	IFF	LINE05=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE05=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE05=0 
	LDKL	A6,DWMU05 
	RB	IHU100
	XIF
	EJECT
* 
* 
* 
IHMU06	EQU	*
	ST	P,INTSAV
	IFT	LINE06=0 
	ABL	ILLINT 
	XIF
	IFF	LINE06=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE06=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE06=0 
	LDKL	A6,DWMU06 
	RB	IHU100
	XIF
	EJECT
* 
* 
* 
IHMU07	EQU	*
	ST	P,INTSAV
	IFT	LINE07=0 
	ABL	ILLINT 
	XIF
	IFF	LINE07=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE07=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE07=0 
	LDKL	A6,DWMU07 
	RB	IHU100
	XIF
	EJECT
* 
* 
* 
IHMU08	EQU	*
	ST	P,INTSAV
	IFT	LINE08=0 
	ABL	ILLINT 
	XIF
	IFF	LINE08=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE08=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE08=0 
	LDKL	A6,DWMU08 
	RB	IHU100
	XIF
	EJECT
* 
* 
* 
IHMU09	EQU	*
	ST	P,INTSAV
	IFT	LINE09=0 
	ABL	ILLINT 
	XIF
	IFF	LINE09=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE09=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE09=0 
	LDKL	A6,DWMU09 
	RB	IHU100
	XIF
	EJECT
* 
* 
* 
IHMU10	EQU	*
	ST	P,INTSAV
	IFT	LINE10=0 
	ABL	ILLINT 
	XIF
	IFF	LINE10=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE10=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE10=0 
	LDKL	A6,DWMU10 
	ABL	IHU100 
	XIF
	EJECT
* 
* 
* 
IHMU11	EQU	*
	ST	P,INTSAV
	IFT	LINE11=0 
	ABL	ILLINT 
	XIF
	IFF	LINE11=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE11=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE11=0 
	LDKL	A6,DWMU11 
	ABL	IHU100 
	XIF
	EJECT
* 
* 
* 
IHMU12	EQU	*
	ST	P,INTSAV
	IFT	LINE12=0 
	ABL	ILLINT 
	XIF
	IFF	LINE12=0 
	IFT	CPU852=1 
	STR	A1,A15	SAVE A1-A8 ON A15 STACK 
	STR	A2,A15 
	STR	A3,A15 
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	XIF
	IFF	LINE12=0 
	IFF	CPU852=1 
	MSR	8,A15
	XIF
	IFF	LINE12=0 
	LDKL	A6,DWMU12 
	ABL	IHU100 
	XIF
	EJECT
* 
* 
*	FINDTC
* 
*	SEARCH TCA IN POLLINGLIST 
* 
*	A2 CONTAINS TCA AT ENTRY
* 
*	A3 CONTAINS ADDRESS TO FOUND TC AT EXIT 
*	A4 CONTAINS INDEX IN LIST TO FOUND TC 
* 
*	A1 A3 A4 ARE DESTROYED
*	CR = (Z) : ACTIVE TCA FOUND 
*	CR = (N) : INACTIVE TCA FOUND 
*	CR = (P) : TCA NOT FOUND
* 
* 
FINDTC	EQU	*
	ADKL	A15,4 
	LD	A4,PLIST,A6	GET LENGTH OF POLLINGLIST 
	LDR	A3,A6
	ADK	A3,PLIST 
	ADR	A3,A4
FIND10	EQU	*
	LDR*	A1,A3	GET TCA 
	CWR	A1,A2
	RF(E)	FIND40	ACTIVE TC FOUND 
	ANK	A1,/FF 
	CWR	A1,A2
	RF(E)	FIND30	INACTIVE TC FOUND 
	SUK	A3,2 
	SUK	A4,2 
	RB(P)	FIND10	GET NEXT TCA
	ADK	A4,1 
	ABR*	A15	RETURN
FIND30	EQU	*
	LDR*	A1,A3 
FIND40	EQU	*
	ABR*	A15 
* 
* 
PARTAB	EQU	*
* 
	NLIST
 	DATA	/8001,/0283,/0485,/8607,/0889,/8A0B,/8C0D,/0E8F,/1091
	DATA	/9213,/9415,/1697,/9819,/1A9B,/1C9D,/9E1F,/20A1,/A223 
	DATA	/A425,/26A7,/A829,/2AAB 
	DATA	/2CAD,/AE2F,/B031,/32B3,/34B5,/B637,/38B9,/BA3B,/BC3D 
	DATA	/3EBF,/40C1,/C243,/C445,/46C7,/C849,/4ACB,/4CCD,/CE4F 
	DATA	/D051,/52D3,/54D5,/D657,/58D9,/DA5B,/DC5D,/5EDF,/E061 
	DATA	/62E3,/64E5,/E667,/68E9,/EA6B,/EC6D,/6EEF,/70F1,/F273 
	DATA	/F475,/76F7,/F879,/7AFB,/7CFD,/FE7F 
	LIST 
	EJECT
* 
* 
* 
*        TEST LINE
* 
* 
TST000	EQU	*
* 
	ST	A8,DWTA8,A6 
* 
*	START REQUEST TIMER 
* 
	LDR	A1,A6
	CF	A15,SETIME
	DATA	TLTO,TIMACT 
	ST	A4,DWTATP,A6
* 
*	CONNECT MODEM 
* 
	LD	A7,DWTA7,A6 
	ST	A8,DWTA8,A7 
	CF	A5,STINP
	LDR	A1,A6
	CF	A15,SETIME
	DATA	TES020,TIMMRY 
	ST	A4,DWTTP,A6 
	CF	A5,READ 
	CM*	DWTTP,A6 
	RF	TES030
TES020	EQU	*
	LDR	A6,A1
TES030	EQU	*
	CM	DWTTP,A6
	LD	A7,DWTA7,A6 
	LD	A8,DWTA8,A7 
	LDK	A5,STB 
	ADR	A5,A6
	CF	A5,HALTIN 
	ANK	A1,1 
	RF(NZ)	TES330	MODEM NOT OPERABLE 
* 
*	START INPUT AND SEND SYNCPATTERN
* 
	LDKL	A1,RECPAT 
	ST	A1,STB,A7 
	LDK	A1,STB-4 
	ADR	A1,A7
	ST	A1,DWTA5,A7 
	CM	ECBCW,A8	RESET BIT ERROR COUNTER
	CF	A5,STINP
	CF	A5,WRSYN
* 
*	TRANSMITT TEST PATTERN
* 
TES100	EQU	*
	LDK	A4,0	BIT AND CHARACTER COUNTER 
	LDKL	A3,/1FF	1:ST SHIFT STATE
TES110	EQU	*
	LDR	A2,A3
	ANK	A2,/FF 
	CF	A5,WRITE
	CWK	A4,/1F8
	RF(E)	TES150 
	CF	A5,PATGEN 
	RB	TES110
* 
*	COMPLETE PATTERN TRAMSMITTED
* 
TES150	EQU	*
	LDK	A2,PAD 
	CF	A5,WRITE
	RB	TES150
	EJECT
* 
* 
*	SYNCRONIZE INPUT
* 
REC000	EQU	*
	CF	A5,READ 
RECPAT	EQU	*
	LDR	A2,A2
	RF(N)	TES400 
	CWK	A2,SYN 
	RB(E)	REC000 
* 
*	COMPARE RECEIVED PATTERN WITH TRANSMITTED 
* 
	LDK	A4,0	BIT AND CHARACTER COUNTER 
	LDKL	A3,/1FF	1:ST SHIFT STATE
TES200	EQU	*
	XRR	A2,A3
	ANK	A2,/FF 
	RF(Z)	TES240	NO BIT ERRORS 
	ECR	A2,A2
	LDR	A2,A2
	RF(NN)	TES220
TES210	EQU	*
	IM	ECBCW,A8
TES220	EQU	*
	SLL	A2,1 
	RF(Z)	TES240 
	RB(N)	TES210 
TES240	EQU	*
	CWK	A4,/1F8
	RF(E)	TES300 
	CF	A5,READ 
	CF	A5,PATGEN 
	LDR	A2,A2
	RF(N)	TES400 
	RB	TES200
* 
*	COMPLETE PATTERN RECEIVED 
* 
TES300	EQU	*
	CF	A5,HALTIN 
	LDKL	A1,TES320 
	ST	A1,STB,A6 
	ABL	TDISP
TES320	EQU	*
	LDK	A1,0 
TES330	EQU	*
	CM*	DWTATP,A6
TES340	EQU	*
	CM	DWTATP,A6 
	IFT	RQLOGG=1 
	CF	A15,REQLOG
	XIF
	CF	A15,TENDIO
	CF	A5,DISCON 
	CF	A5,HALTIN 
	ABL	TDISP
	EJECT
* 
*	TIME OUT
* 
TLTO	EQU	*
	LDR	A6,A1
	LD	A7,DWTA7,A6 
	LD	A5,DWTA5,A6 
	LDK	A1,NORESP
	RB	TES340
* 
*	CARRIER DOWN
* 
TES400	EQU	*
	LDK	A1,NORESP
	RB	TES330
	EJECT
* 
* 
*	PATTERN GENERATOR 
* 
*	A3:= CURRENT SHIFT STATE
*	A4:= BIT AND CHARACTER COUNTER
* 
PATGEN	EQU	*
	LDR	A1,A3
	SLL	A1,4 
	XRR	A1,A3
	ANK	A1,/10	BIT9 XOR BIT5 
	RF(Z)	PAT100 
	LDKL	A1,/200 
	ORR	A3,A1	FEED BACK BIT5 XOR BIT9
PAT100	EQU	*
	SRL	A3,1 
	ADK	A4,1 
	LDR	A1,A4
	ANK	A1,/7
	RB(NZ)	PATGEN
	RTN	A5 
	IFT	BDA=1
	EJECT
* 
* 
*	POLL AND SELECT ADDRESS CONVERTING ROUTINES AND TABLES
* 
SELADR	EQU	*
	ANK	A3,/7F 
	SUK	A3,/41 
	LC	A3,SELTAB,A3
	RTN	A5 
	EJECT
* 
*	POLL ADDRESSES
* 
POLTAB	EQU	*
	DATA	/2041 
	DATA	/4243 
	DATA	/4445 
	DATA	/4647 
	DATA	/4849 
	DATA	/5B2E 
	DATA	/3C28 
	DATA	/2BFF 
* 
*	SELECT ADDRESSES
* 
SELTAB	EQU	*
	DATA	/2D2F 
	DATA	/5354 
	DATA	/5556 
	DATA	/5758 
	DATA	/595A 
	DATA	/7C2C 
	DATA	/255F 
	DATA	/3EFF 
	XIF
	IFT	RQLOGG=1 
	EJECT
* 
*	REQUEST LOGG
*	   1:ST WORD=DEVICE ADDRESS, ORDER
*	   2:ND WORD = RETURN CODE
*	   3:RD WORD = TID
* 
REQLOG	EQU	*
	STR	A2,A15 
	STR	A3,A15 
	LD	A3,REQPEK 
	LD	A2,DWTST,A6 
	RF(N)	RQLRTN	NO REQUEST
	LDR*	A2,A6 
	SCR	A2,A3
	ADK	A3,1 
	LC	A2,DWTOR+1,A6 
	SCR	A2,A3
	ADK	A3,1 
	LD	A2,DWTECB,A6
	OR	A1,ECBRC,A2 
	STR	A1,A3	RETURN CODE
	ADK	A3,2 
	LD	A2,10,A6	TTAB ADDRESS 
	ADK	A2,4 
	LDR*	A2,A2	TID 
	STR	A2,A3
	ADK	A3,2 
	CWK	A3,ENDLOG
	RF(NG)	RQLRTN
	LDKL	A3,REQBUF 
RQLRTN	EQU	*
	ST	A3,REQPEK 
	LDR*	A3,A15
	LDR*	A2,A15
	ADKL	A15,4 
	ABR*	A15 
	EJECT
* 
*	REQUEST LOGG AREA 
* 
*	   1:ST WORD=DEVICE ADDRESS, ORDER
*	   2:ND WORD = RETURN CODE
*	   3:RD WORD = TID
* 
* 
REQPEK	DATA	REQBUF
REQBUF	RES	300
ENDLOG	DATA	/FFFF,/FFFF,/FFFF 
	XIF
	IFF	LOGG=0 
	EJECT
* 
* 
*           INTERRUPT LOGGING ROUTINE 
* 
LOGOUT	EQU	*
	ORKL	A2,/C000
	RF	LOG 
LOGSST	EQU	*
	ORKL	A2,/8000
LOGIN	EQU	* 
LOG	EQU	* 
	LD	A1,LOGPNT 
	CWK	A2,/C000+PAD 
	RF(E)	PADLOG	PAD OUTPUT
	CWK	A2,SYN 
	RF(E)	SYNLOG	SYN INPUT 
LOG010	STR	A2,A1
	ADK	A1,2 
	CWK	A1,LOGEND
	RF(NE)	LOGRTN	NOT END OF LOGBUF
	LDKL	A1,LOGBUF	RESET POINTER 
LOGRTN	EQU	*
	ST	A1,LOGPNT 
	ANKL	A2,/FF
	ADKL	A15,4 
	ABR*	A15 
* 
PADLOG	EQU	*
* 
	CW	A2,-2,A1
	RF(E)	PAD10
	CM	PADOUT
	ADK	A1,2 
PAD10	ADKL	A1,-2
	IM	PADOUT
	RB	LOG010
* 
SYNLOG	EQU	*
* 
	CW	A2,-2,A1
	RF(E)	SYN10
	CM	SYNIN 
	ADK	A1,2 
SYN10	ADKL	A1,-2
	IM	SYNIN 
	RB	LOG010
	EJECT
* 
* 
SYNIN	DATA	0
PADOUT	DATA	0 
* 
* 
*        LOGG AREA
* 
*        /C0XX  XX = OUTPUT CHARACTER 
*        /80XX  XX = INPUT CHLC STATUS
* 
LOGPNT	DATA	LOGBUF
LOGBUF	EQU	*
	RES	LOGG 
LOGEND	DATA	/FFFF 
	XIF
	END

Full view