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

⟦dbdd6f317⟧

    Length: 132318 (0x204de)
    Notes: pts_type(SC)
    Names: »DRDC17.SC«

Derivation

└─⟦13e5fd45a⟧ Bits:30009699 Philips computer tape "600507"
    └─⟦this⟧ »TOSSWORK/DRDC17.SC« 
└─⟦bc20f3abf⟧ Bits:30009670 Philips computer tape "600126"
    └─⟦this⟧ »TOSSWORK/DRDC17.SC« 

PTS(SC)

	IDENT	DRDC17	REL 11.0 81-07-07 870105041100

			=11, ASS ERR WHEN USING MSV2 
			=10, ITB TRANSMISSION INCLUDED 
			=9, ABORT ROUTINE NOT RE-ENTRANT 
			REL 11.0 81-05-22
			=8, CLEARING OF TIMER POINTER
			=7, MULTIPLE USE OF IMPORTANT REGISTER 
			=6, PROBLEMS AT POWER ON 
			REL 11.0 81-05-12
			=5, ASS ERR WHEN ASCII CODE IS USED
			=4, CONTROL IF O/P INT ALLOWED 
			=3, TIMER HANDLING ERROR 
			=2, INCOMPLETE LOGG FUNCTION 
			=1, HALT O/P ERROR (SALCUZ)
			REL 11.0 81-03-30

******************************************************* 
* 
*   PHILIPS ELECTRONIC INDUSTRIES - TERMINAL DIVISION. PEAB-T 
* 
*   DATA COMMUNICATION DRIVER FOR PTS 6800
* 
*   LINE PROCEDURE: BSC CONTENTION/SIEMENS MSV2 
* 
* 
* 
* 
* 
******************************************************* 
* 
*   STANDARD USE OF REGISTERS : 
* 
*   A1  WORK REGISTER 
*   A2  I/O AND WORK REGISTER 
*   A3  WORK REGISTER 
*   A4  WORK REGISTER 
*   A5  STACK POINTER 
*   A6  DWT ADDRESS 
*   A7  BCC ACCUMULATOR 
*   A8  ECB ADDRESS 
* 
******************************************************* 
	EJECT
* 
******************************************************* 
* 
*	ENTRY POINTS
* 
******************************************************* 
* 
	ENTRY	DC17ON	RECOVERY AT POWER ON
* 
* INTERRUPT HANDLERS
* 
	ENTRY	IH1701	LINE 01 INPUT 
	ENTRY	IH1702	        OUTPUT
	ENTRY	IH1703	LINE 02 INPUT 
	ENTRY	IH1704	        OUTPUT
	ENTRY	IH1705	LINE 03 INPUT 
	ENTRY	IH1706	        OUTPUT
	ENTRY	IH1707	LINE 04 INPUT 
	ENTRY	IH1708	        OUTPUT
* 
* DEVICE WORK TABLES
* 
	ENTRY	DW1701	LINE 01 DWT 
	ENTRY	DW1702	LINE 02 DWT 
	ENTRY	DW1703	LINE 03 DWT 
	ENTRY	DW1704	LINE 04 DWT 
	EJECT
* 
******************************************************* 
* 
*	EXTERNAL REFERENCES 
* 
******************************************************* 
* 
	EXTRN	TDISP	DISPATCHER ENTRY 
	EXTRN	TENDIO	REQUEST COMPLETION
	EXTRN	DISEND	REQUEST COMPLETION+DISPATCHING
	EXTRN	DISIOE	REQUEST ERROR 
	EXTRN	SETIME	SET TIMER CALL ADDRESS
	EXTRN	DWTST	DWT STATUS 
	EXTRN	DWTECB	DWT ECB ADDRESS 
	EXTRN	DWTOR	DWT ORDER
	EXTRN	ECBBA	ECB BUFFER ADDRESS 
	EXTRN	ECBRL	ECB REQUESTED LENGTH 
	EXTRN	ECBEL	ECB EFFECTIVE LENGTH 
	EXTRN	ECBRC	ECB RETURN CODE
	EXTRN	ECBCW1	ECB CONTROL-WORD 1
	EXTRN	ECBCW2	ECB CONTROL-WORD 2
	EXTRN	TASCII	CODE CONV. TABLE EBCDIC-ASCII 
	EXTRN	TEBCDIC	CODE CONV. TABLE ASCII-EBCDIC
	EXTRN	INTSAV	SAVE AREA FOR INTERRUPTS
	EXTRN	ILLINT	ILLEGAL INTERRUPT 
	EXTRN	SAVE8	MONITOR ROUTINE FOR SAVEING A1-A8
	EXTRN	PFPOST	WAIT FOR POWER UP IF SET	 
	EXTRN	DCSRST	RESET STATISTIC AREA
	EXTRN	DCSUPR	UPDATE COUNTER IN STATISTIC AREA
	EXTRN	DCSRED	READ STATISTIC AREA 
	EXTRN	LKMRQE	ABORT NOT PERMITTED	=9
	EXTRN	DWTWAT	WAIT/ACTIVATE INDICATOR	=9
	EJECT
* 
* 
*	FORMAT DEFINITIONS
* 
BYTE	FORM	8,8 
	EJECT
* 
* 
*   PARAMETERS FOR CONDITIONALLY ASSEMBLY 
* 
* 
X:A	EQU	1	<=4 
NLINE	EQU	X:A	NUMBER OF COMMUNICATION LINES 

X:B	EQU	1 
BSC	EQU	X:B	IF = 0. SIEMENS MSV2 PROCEDURE
			IF = 1. BSC PROCEDURE
X:C	EQU	1 
CODE	EQU	X:C	IF = 0. ASCII CODE 
			IF = 1. EBCDIC CODE
X:D	EQU	10
TBID	EQU	X:D	BID TIME OUT VALUE (X100 MS) 

X:E	EQU	0 
COMPRS	EQU	X:E	IF =1, SPACE COMPR./DECOMPR. PERFORMED 

X:F	EQU	0 
IDLELN	EQU	X:F	IF =1, IDLE LINE ACTIVITY INCLUDED TO
			HOLD A 2-WIRE SWITCHED LINE
			IN CASE OF NO COMMUNICATION ACTIVITY 

X:G	EQU	0 
STAT	EQU	X:G	IF =1, STATISTIC COLLECTION INCLUDED 

X:H	EQU	0 
LOGG	EQU	X:H	IF NOT ZERO INTERRUPT LOG INCLUDED 
			LOGG = LOG AREA LENGTH PER LINE

X:I	EQU	0		 
SALCUZ	EQU	X:I	IF =0 DC CONTROL UNIT 6834 	 
			IF =1 DC CONTROL UNIT 6857/SALCUZ
	IFT	SALCUZ=1 
X:J	EQU	/0A 
DAMI01	EQU	X:J	INPUT DEVICE ADDR LINE 01

X:K	EQU	/0B 
DAMI02	EQU	X:K	INPUT DEVICE ADDR LINE 02

X:L	EQU	/0C 
DAMI03	EQU	X:L	INPUT DEVICE ADDR LINE 03

X:M	EQU	/0D 
DAMI04	EQU	X:M	INPUT DEVICE ADDR LINE 04
	XIF
	IFF	SALCUZ=1 
X:J	EQU	/02 
DAMI01	EQU	X:J	INPUT DEVICE ADDR LINE 01

X:K	EQU	/22 
DAMI02	EQU	X:K	INPUT DEVICE ADDR LINE 02

X:L	EQU	/04 
DAMI03	EQU	X:L	INPUT DEVICE ADDR LINE 03

X:M	EQU	/05 
DAMI04	EQU	X:M	INPUT DEVICE ADDR LINE 04
	XIF

X:N	EQU	0 
TBUFL	EQU	X:N	MMU BUFFER SIZE IN WORDS
* 
* 
*	A PROGRAM VERSION USING TOSS MMU PAGING 
*	IS OBTAINED BY SETTING MMUPAG EQU 1 
* 
MMUPAG	EQU	0
* 
*	A PROGRAM VERSION USING THE EXTENDED INSTRUCTION
*	SET IS OBTAINED BY SETTING CPU852 EQU 0 
* 
CPU852	EQU	1
* 
* 
	EJECT
* 
******************************************************* 
* 
*	SYSTEM PARAMETERS 
* 
******************************************************* 
* 
DEVIND	EQU	2	DEVICE INDEX 

BUFLEN	EQU	TBUFL+TBUFL	MMU BUFFER SIZE
* 
*	OUTPUT DEVICE ADDRESSES 
* 
	IFT	SALCUZ=1 
BIAS	EQU	1	OUTPUT-INPUT DEVICE ADDRESS
	XIF
	IFF	SALCUZ=1 
BIAS	EQU	/10	OUTPUT-INPUT DEVICE ADDRESS
	XIF

SPEED	EQU	1	IF =1, HIGH SPEED (CT111) 
* 
ITBUSE	EQU	0	IF =1, ITB TO USER BUFFER
* 
ITBTRM	EQU	0	IF =1, ITB IS TRANSMITTED AFTER 80 CHA-	=10
			RACTERS. IF NON-TRANSP. MODE IS USED, ITB	=10
			IS ALSO TRANSMITTED AFTER AN EM-CHARACTER	=10
			IF PRESENT IN SEND BUFFER, ALL ACCORDING	=10 
			TO THE IBM 2780 PROTOCOL. SPAC	=10 
			COMP/DECOMP IS NOT ALLOWED IF ITBTRM=1	=10 
* 
* 
*	RETRY LIMITS
* 
L:ENQ	EQU	3	COUNT OUT AFTER 3 ENQ:S 
L:WACK	EQU	15	COUNT OUT AFTER 15 WACK:S 
L:RTR	EQU	4	COUNT OUT AFTER 4 TRANSMISSIONS 
	EJECT
* 
*	PROCEDURE TIMEOUT VALUES
* 
T:BID	EQU	TBID	BID TIMER, STANDARD IS 1 S 
T:TTD	EQU	20	TEMPORARY TEXT DELAY TIMER 
T:WACK	EQU	20	TIMER FOR SENDING WACK
T:ENQ	EQU	30	TIMER FOR SENDING ENQ, IN CASE 
			OF NO ANSWER FROM THE SLAVE
T:MACT	EQU	240	TIMER CHECKING THAT MASTER IS ACTIVE 
T:MOD	EQU	10	MODEM READY TIMER
T:WRT	EQU	50	TIMER CHECKING MODEM DURING O/P
T:MERR	EQU	T:MACT	MODEM ERROR SUPERV. TIMER IN MASTER MODE
*T:SERR	EQU	3*(L:ENQ+1)	MODEM ERROR SUPERV. TIMER IN SLAVE MODE 
T:IDLE	EQU	150	IDLE TIMER FOR SWITCHED LINES
* 
*	OPTION CODE EQUATES 
* 
O:TRP	EQU	/02	TRANSPARENT TRANSMISSION
O:ETX	EQU	/01	BLOCK END CHARACTER = ETX 
O:RVI	EQU	/01	ACKNOWLEDGE LAST BLOCK WITH RVI 
* 
	IFT	SPEED=1
LSPEED	EQU	/0200	HIGH SPEED SELECTION 6834
	XIF
	IFT	SPEED=0
LSPEED	EQU	0	LOW SPEED SELECTION 6834 
	XIF
	IFT	COMPRS=1  		 
* 
*	SPACE COMPRESION CONSTANTS
* 
SP:MAX	EQU	43	MAX NO OF SPACES COMPR <64	 
			MUST BE ADJUSTED TO LINE SPEED	
			<22 FOR  SPEED =9600 BPS	
			<43            =4800 BPS 
			=63            <4800 BPS	
SP:MIN	EQU	2	MIN NO OF SPACES	
SP:CHB	EQU	/40	SPACE COUNT CHAR SPECIAL BIT	
SP:CHM	EQU	/3F	SPACE COUNT CHAR MASK	 
SP:ASC	EQU	/20	ASCII SPACE CHAR FOR DECOMPR	
*				 
	XIF			 
* 
* 
	EJECT
**************************************************
* 
* APPLICATION INTERFACE; ORDERS AND RETURN CODES
* 
**************************************************
* 
* ORDERS: 
* 
*	/21 - OPEN
* 
*	/22 - CLOSE 
* 
*	/24 - CONNECT ACTIVE
* 
*	/27 - CONNECT PASSIVE 
* 
*	/2F - DISCONNECT
* 
*	/02 - RECEIVE 
* 
*	/06 - SEND
* 
*	/00 - READ STATUS 
* 
*	/38 - SET STATUS
* 
*	/2D - READ/RESET STATISTICS 
* 
*	/39 - SET TIMEOUT 
* 
	EJECT
* RETURN CODES: 
* 
*     STATUS WORD = 0   REQUEST COMPLETED NORMALLY
* 
*        "    "  <> 0   ABNORMAL RETURN (SEE BIT EQU'S BELOW) 
* 
**************************************************************
* 
BIT0	EQU	/8000	REQUEST ERROR
BIT1	EQU	/4000	REQUEST ABORTED
BIT2	EQU	/2000	DATA INTERRUPT E.I. RVI OR ENQ 
BIT3	EQU	/1000	END OF DATA UNITS E.I. EOT 
BIT4	EQU	/0800	DATA SEGMENT E.I ETB RECEIVED
BIT5	EQU	/0400	QUALIFIED DATA UNIT (TRANSP. DATA REC.)
BIT6	EQU	/0200	DLE EOT RECEIVED (SWITCHED CONNECTIONS)
BIT7	EQU	/0100	NOT USED 
BIT8	EQU	/80	NOT USED 
BIT9	EQU	/40	TIMEOUT
BIT10	EQU	/20	DATA CANCELLED (EOT ON MESS. BLOCK) 
BIT11	EQU	/10	SEQUENCE ERROR
BIT12	EQU	/08	INCORR. BUFFER LENGTH 
BIT13	EQU	/04	NOT USED
BIT14	EQU	/02	LOGICAL CONNECTION ERROR
BIT15	EQU	/01	PHYSICAL CONNECTION ERROR 
	EJECT
* 
*	RETURN CODE EQUATES 
* 
R:OK	EQU	0	REQUEST COMPLETED NORMALY

R:RERR	EQU	BIT0	REQUEST ERROR 

R:INT	EQU	BIT2	ENQ ON 'BID' OR RVI ON MESS BLOCK

R:EOT	EQU	BIT3	EOT RECEIVED TO COMPLETE A MESSAGE 
			RECEPTION, OR MAX NBR'S OF WACKS 
			RECEIVED ON A TRANSMITTED BLOCK

R:ETB	EQU	BIT4	MESS BLOCK ENDED WITH ETB RECEIVED 

R:TRP	EQU	BIT5	TRANSPARENT DATA RECEIVED

R:NCON	EQU	BIT6	DLE EOT RECEIVED, INDICATING
			DISCONN. OF THE PHYSICAL CONNECTION
			(SWITCHED CONNECTIONS ONLY)

R:TERR	EQU	BIT9	TIMEOUT 

R:CANC	EQU	BIT10	EOT RECEIVED ON A MESS BLOCK 

R:SERR	EQU	BIT11	SEQUENCE ERROR 

R:LERR	EQU	BIT12	INCORRECT BUFF. LENGTH 

R:CERR	EQU	BIT14	LOGICAL CONNECTION ERROR 
			E.G. NO ANSWER OR WRONG ANSWER 

R:MNOP	EQU	BIT15	MODEM ERROR
	IFT	STAT=1 
	EJECT
************************************************************* 
* 
*	STATISTIC EQU:S 
*	USED IN CALLS FOR UPDATE OF COUNTERS
* 
*	THE FORMAT OF THE PARAMETER-1 IN CALL TO DCSUPR/DCSUPD
*	IS: 
*	BITS   XYZZZZZZ  WHERE X=1IF PARAMETER-2 USED AS INCREMENT
*	                           ELSE INCREMENT WITH +1 
*	                       Y=1 IF DOUBLE WORD COUNTER 
*	                       ZZZZZZ= COUNTER INDEX AS LISTED BELOW
* 
************************************************************* 
	 
* 
*	LINK LEVEL COUNTERS 
	 
CSSRBL	EQU	/10	SYNCH DATA BLOCKS RECEIVED 
CSSRBY	EQU	/11	  "   DATA BLOCKS REJECTED BUFFER BUSY 
			(NBR OF TRANSMITTED WACK'S)
CSSRBO	EQU	/12	  "   DATA BLOCKS REJECTED BUFFER OVERFLOW 
CSSRAB	EQU	/13	  "   DATA BLOCKS REJECTED ABORTED 
			(EOT RESPONSE TO A DATA BLOCK
			DUE TO A DISCONNECT REQUEST) 
CSSRPE	EQU	/14	  "   DATA BLOCKS REJECTED PARITY ERROR
			OR DUE TO A BCC ERROR
CSSTBL	EQU	/15	  "   DATA BLOCKS TRANSMITTED
CSSTRT	EQU	/16	  "   DATA BLOCKS RETRANSMITTED
CSSTAB	EQU	/17	  "   DATA BLOCKS ABORTED
			(EOT RECEIVED AS RESPONSE TO 
			A DATA BLOCK)
	 
*	DTE/DCE LEVEL COUNTERS
	 
CSCDTE	EQU	/28	DTE NOT OPERABLE 
			(START I/P, OR START O/P NOT ACCEPTED) 
CSCDIT	EQU	/29	I/P THROUGHPUT ERROR 
CSCDOT	EQU	/2A	O/P THROUGHPUT ERROR 
CSCDCE	EQU	/2B	DCE NOT OPERABLE 
	XIF
	EJECT
************************************************* 
* 
* DEVICE WORK AREAS 
* 
**********************************************
* 
* DWT STATUS WORD 
* 
*	DWTST   BIT #00 : 0 = DEVICE BUSY 
*	                  1 = DEVICE NOT BUSY 
* 
S:BID	EQU	BIT10	BID SEQUENCE IN PROGRESS
S:EOT	EQU	BIT11	EOT HAS BEEN RECEIVED 
S:BACK	EQU	BIT12	BLOCK ACKNOWLEDGED WITH WACK 
S:NCON	EQU	BIT13	NO PHYSICAL CONNECTION EXISTS
S:CERR	EQU	BIT14	DATA LINK DOWN 
S:MNOP	EQU	BIT15	MODEM NOT OPERABLE 
	EJECT
******************************************************* 
* 
*	LINE CONTROL CHARACTER EQUATES
* 
******************************************************* 
* 
A:SPAC	EQU	/20	ASCII SPACE CHARACTER
A:SYN	EQU	/16	ASCII SYNCHRONOUS IDLE
A:ETB	EQU	/17	ASCII ETB CHARACTER 
A:GS	EQU	/1D	ASCII GROUP SEPARATOR CHARACTER
* 
* 
C:PAD	EQU	/FF	TRAILING PAD
C:DLE	EQU	/10	DATA LINK ESCAPE
C:SOH	EQU	/01	START OF HEADING	 
C:STX	EQU	/02	START OF TEXT 
C:ETX	EQU	/03	END OF TEXT 
C:EM	EQU	/19	END OF MEDIA CHARACTER	=10 
	IFT	CODE=0 
C:SYN	EQU	/16	SYNCHRONOUS IDLE
C:EOT	EQU	/04	END OF TRANSMISSION 
C:ENQ	EQU	/05	ENQUIRY 
C:ETB	EQU	/17	END OF TRANSMISSION BLOCK 
C:NAK	EQU	/15	NEGATIVE ACKNOWLEDGEMENT
C:RVI	EQU	/3C	SEC CHAR IN RVI SEQUENCE
C:ACK0	EQU	/30	SEC CHAR IN ACK 0 SEQUENCE 
C:ACK1	EQU	/31	SEC CHAR IN ACK 1 SEQUENCE 
GS	EQU	/1D	GROUP SEPARATOR	 
C:SPAC	EQU	/20	SPACE CHARACTER
C:ITB	EQU	/1F	UNIT SEPARATOR	 
C:PAR	EQU	/80	ASCII PARITY BIT
	XIF
	IFT	CODE=0 
	IFT	BSC=1
C:WACK	EQU	/3B	SEC CHAR IN WACK SEQUENCE
	XIF
	IFT	CODE=0 
	IFT	BSC=0
C:WACK	EQU	/BF	SEC CHAR IN WABT SEQUENCE
			SIEMENS MSV2 PROCEDURE 
	XIF
	IFT	CODE=1  	EBCDIC CHARACTER EQUATES
C:SYN	EQU	/32	SYNCHRONOUS IDLE
C:EOT	EQU	/37	END OF TRANSMISSION 
C:ENQ	EQU	/2D	ENQUIRY 
C:ETB	EQU	/26	END OF TRANSMISSION BLOCK 
C:NAK	EQU	/3D	NEGATIVE ACKNOWLEDGMENT 
	IFT	BSC=1
C:WACK	EQU	/6B	SEC CHAR IN WACK SEQUENCE
	XIF
	IFT	CODE=1 
	IFT	BSC=0
C:WACK	EQU	/7F	WABT CODE FOR MSV2	=11 
	XIF
	IFT	CODE=1 
C:RVI	EQU	/7C	SEC CHAR IN RVI SEQUENCE
C:ACK0	EQU	/70	SEC CHAR IN ACK 0 SEQUENCE 
C:ACK1	EQU	/61	SEC CHAR IN ACK 1 SEQUENCE 
IGS	EQU	/1D	GROUP SEPARATOR	
GS	EQU	IGS	RENAME IGS	
C:SPACE	EQU	/40	SPACE CHARACTER 
IUS	EQU	/1F	UNIT SEPARATOR	 
C:ITB	EQU	IUS	RENAME ITB
C:PAR	EQU	/00	NO PARITY BIT IN EBCDIC 
	XIF
	EJECT
************************************************************* 
* 
*	LINE CONTROL UNIT FUNCTION CONTROL EQU:S
* 
************************************************************* 
* 
	IFF	SALCUZ=1  		 
C:CARR	EQU	/100	CARRIER ON	 
C:CRSP	EQU	C:CARR+LSPEED	CARRIER ON + SPEED SELECTION 
	XIF			 
* 
* 
	EJECT
*************************************************** 
* 
*	LINE CONTROL UNIT SST STATUS BITS 
* 
*************************************************** 
* 
S:THRU	EQU	/02	           THROUGHPUT ERROR	 
	IFT	SALCUZ=1  		 
S:PARE	EQU	/04	           CHAR PARITY ERROR	
	XIF			 
S:CARR	EQU	/20	           CARRIER OFF	
S:CALL	EQU	/40	           INCOMING CALL	
* 
	IFT	SALCUZ=1  		 
S:ERR	EQU	/27	S:MNOP,S:THRU,S:PARE,S:CARR 
	XIF			 
	IFF	SALCUZ=1  		 
S:ERR	EQU	/23	S:MNOP,S:THRU,S:CARR
	XIF
	EJECT
******************************************************
* 
*	LINE CONTROL UNIT INSTRUCTIONS
* 
******************************************************
* 
HLTI:P	CIO	A2,0,0	HALT INPUT CU DEVICE
* 
SSTI:P	SST	A2,0	GET INPUT CU DEVICE STATUS
* 
STAI:P	CIO	A2,1,0	START INPUT CU DEVICE 
* 
HLTO:P	CIO	A2,0,0	HALT OUTPUT CU DEVICE 
* 
SSTO:P	SST	A2,0	GET OUTPUT CU DEVICE STATUS 
* 
STAO:P	CIO	A2,1,0	START OUTPUT CU DEVICE
* 
INR:A2	INR	A2,0,0	GET CHARACTE FROM CU DEVICE 
* 
OTR:A2	OTR	A2,0,0	OUTPUT CHARACTER TO CU DEVICE 
* 
	IFT	SALCUZ=1 
OTR:SY	OTR	A2,1,0	SPECIFIES SYN PATTERN TO 'SALCUZ' 
CIODIS	EQU	HLTI:P	DISCONNECT MODEM
	XIF
	IFF	SALCUZ=1 
CIODIS	EQU	STAI:P	DISCONNECT MODEM
	XIF
* 
	EJECT
* 
*	DLS MODE EQUATES
* 
*	MAIN MODES
* 
CNTRL	EQU	/0000	CONTROL MODE
RECEIV	EQU	/0200	RECEIVE MODE 
SEND	EQU	/0400	SEND MODE
* 
*	SUB MODES 
* 
INIT	EQU	0	INITIAL SUB MODE 
WCALL	EQU	2	WAIT FOR CALL 
NOLCON	EQU	4	NO LOGICAL CONNECTION MODE 
WACK0 	EQU	6	WAIT FOR ACK 0 MODE
WACKD	EQU	2	WACK DELAY
WSTX	EQU	4	WAIT FOR STX 
NONTRP	EQU	6	NON-TRANSPARENT RECEIVE MODE 
TRANSP	EQU	8	TRANSPARENT RECEIVE MODE 
LRECOV	EQU	/A	LINK RECOVERY MODE
WNAK	EQU	2	WAIT FOR NAK AFTER TTD 
WACK	EQU	4	WAIT FOR ACKNOWLEDGMENT
	EJECT
*********************************************************************** 
* 
*	INDEX FOR ALL BY THE DRIVER USED CHARACTERS, FOR THE DIFFERENT
*	TIMEOUTS, AND FOR SST INTERRUPTS. THE INDEX ARE USED TOGETHER 
*	WITH THE DLS MODE TO MAKE A BRANCH TO THE CORRESPONDING 
*	EVENT HANDLER.
* 
***************************************************************** 
* 
I:RQT	EQU	0	REQUEST TIMEOUT AND ABORT INDEX 
I:PRT	EQU	2	PROCEDURE TIMEOUT INDEX 
I:SST	EQU	4	SST INTERRUPT INDEX 
I:SYN	EQU	6	INDEX FOR THE SYN CHARACTER 
I:STX	EQU	8	       ''     STX     ''
I:ITB	EQU	/A	      ''     ITB     ''
I:ETB	EQU	/C	      ''     ETB     ''
I:ETX	EQU	/E	      ''     ETX     ''
I:EOT	EQU	/10	     ''     EOT     ''
I:DLE	EQU	/12	     ''     DLE     ''
I:NAK	EQU	/14	     ''     NAK     ''
I:ENQ	EQU	/16	     ''     ENQ     ''
I:GS	EQU	/18	      ''     GS      ''
I:CHR	EQU	/1A	INDEX FOR A DATA CHARACTER
	EJECT
**************************************
* 
*	DWT DISPLACEMENTS 
* 
**************************************
* 
	IFT	STAT=0 
DWTDRD	EQU	/10	START OF DRIVER DEFINED PART 
	XIF
	IFT	STAT=1 
DWTDRD	EQU	/1A
	XIF
* 
	IFT	MMUPAG=0 
START	EQU	DWTDRD
	XIF
* 
	IFT	MMUPAG=1 
START	EQU	DWTDRD+4
	XIF
* 
	IFT	STAT=1 
DWTSBU	EQU	START-/A	DWT DC REL OFFSET TO STATISTIC BUFFER 
DWTCHD	EQU	START-8	DWT DC REL LINK TO HEAD DWT
DWTCHN	EQU	START-6	DWT DC REL LINK TO NEXT DWT
DWTLAD	EQU	START-4	DWT LOCAL DTE ADDRESS
DWTSUB	EQU	START-2	POSSIBLE SUB ADDRESS 
	XIF
DWTTIM	EQU	START	APPLICATION TIMEOUT VALUE
DWTMOD	EQU	START+2	ACTUAL MODE OF THE DLS 
DWTCON	EQU	START+4	TYPE OF CONNECTION 
DWTTRM	EQU	START+6	TRANSMISSION MODE
DWTABT	EQU	START+8	ABORT INDICATOR
DWTINP	EQU	START+/0A	INUT INDICATOR 
DWTOUT	EQU	START+/0C	OUTPUT ACTIVE INDICATOR
DWTPTP	EQU	START+/0E	PROCEDURE TIMER POINTER
DWTRTP	EQU	START+/10	REQUEST TIMER POINTER
DWTMTP	EQU	START+/12	MODEM SUPERVISORY TIMER POINTER
DWTITP	EQU	START+/14	IDLE TIMER POINTER 
DWTCTP	EQU	START+/16	MODEM CONNECTION TIMER POINTER 
DWTETR	EQU	START+/18	ENQ COUNTER
DWTWTR	EQU	START+/1A	WACK COUNTER 
DWTRTR	EQU	START+/1C	RETRANSMISSION COUNTER 
DWTLRS	EQU	START+/1E	LAST RESPONSE
DWTCNT	EQU	START+/20	ACK COUNTER
DWTDLE	EQU	START+/22	DLE INDICATOR
DWTCMP	EQU	START+/24	SPACE COMPRESSION WORK AREA
	IFT	CPU852=0 
DWTSAV	EQU	START+/26	SAVE AREA FOR REGISTERS A1-A8
DWTSTB	EQU	START+/4C	STACK BASE (6 LEVEL STACK) 
	XIF
	IFT	CPU852=1 
DWTSAV	EQU	START+/26	SAVE AREA FOR REGISTERS A3-A5,A7,A8
DWTSTB	EQU	START+/46	STACK BASE (6 LEVELS STACK)
	XIF
	IFT	ITBTRM=1		=10
DWTITB	EQU	START+/48	CHARACTER COUNTER FOR ITB	=10
	XIF			=10
	EJECT
* 
******************************************************* 
******************************************************* 
* 
* 
*	D R I V E R  A C T I V A T I O N
* 
* 
******************************************************* 
******************************************************* 
* 
* 
	DATA	BUFLEN
	DATA	DEVIND	DEVICE INDEX 
DRMAD	DATA	DRMACT	DWT REFERENCE 
	DATA	ABORT	ABORT ROUTINE ADDRESS 
	DATA	0,0	DC:MIN HEADER	
* 
* 
DRMACT	EQU	*
	LDK	A5,DWTSTB	SET UP A5 STACK BASE 
	ADR	A5,A6	IN CASE OF I/O START 
	LD	A1,DWTMOD,A6	GET DATA LINK STATION (DLS) MODE 
	SUK	A7,0 
	RF(Z)	READST	READ STATUS 

	SUK	A7,/22 
	ABL(Z)	CLOSE	DISCONNECT THE MODEM
	SUK	A7,/2D-/22 
	RF(Z)	RRSTAT	READ/RESET STATISTICS 

	SUK	A7,/38-/2D 
	RF(Z)	SETST	SET STATUS 

	SUK	A7,/39-/38 
	RF(Z)	SETTIM	SET TIMEOUT 

	ADK	A7,/39	LOAD A7 WITH ORIGINAL ORDER 
	LD	A2,DWTST,A6	GET LINE STATUS 
	ANK	A2,S:MNOP	MODEM OK ? 
	RF(NZ)	DCEERR	NO 

	SUK	A7,/02 
	ABL(Z)	REC000	RECEIVE A MESSAGE BLOCK
	SUK	A7,/06-/02 
	ABL(Z)	SEND00	TRANSMIT A MESSAGE BLOCK 
	SUK	A7,/21-/06 
	ABL(Z)	OPEN	CONNECT MODEM
	SUK	A7,/24-/21 
	ABL(Z)	CONACT	TRY TO BECOME MASTER 
	SUK	A7,/27-/24 
	ABL(Z)	CONPAS	LOOK FOR A DATA LINK 'BID' 
	SUK	A7,/2F-/27 
	ABL(Z)	DISCON	DISCONNECT THE DATA LINK 
	ABL	DISIOE	ILLEGAL ORDER 
	EJECT

***************************************** 
* 
*	MAIN ABORT ENTRY
* 
***************************************** 
* 
ABORT	EQU	*	. 
	LD	A1,DWTABT,A6	ABORT ALLOWED ?	=9 
	RF(NN)	ABOR10	YES	=9 
	CM	DWTWAT,A6	INDICATE NO WAIT	=9 
	ABL	LKMRQE	RC=ABORT NOT PERMITTED	=9 
ABOR10	EQU	*		=9
	RF(NZ)	RTN:OK	AN EARLIER ABORT IN PROGRESS	=9
	LDK	A5,DWTSTB	SET A5 STACK BASE
	ADR	A5,A6	IN CASE IT WILL BE USED
				=9
	LDK	A1,I:RQT	INDEX FOR ABORT (=REQUEST TIMEOUT)
	IM	DWTABT,A6	INDICATE ABORT ISSUED 
	ABL	JUMP	BRANCH TO CORRECT ABORT HANDLER 
	EJECT
*********************************************** 
* 
*	REQUEST COMPLETION PART 
* 
*********************************************** 

*	MODEM OR CU ERROR 
* 
DCEERR	EQU	*
	LDK	A1,R:MNOP
	RF	CMPLT 
* 
*	LOGICAL CONNECTION ERROR
* 
CONERR	EQU	*
	LDK	A1,R:CERR
	RF	CMPLT 
* 
*	BUFFER LENGTH DISAGREMENT 
* 
LENERR	EQU	*
	LDK	A1,R:LERR
	RF	CMPLT 
* 
*	SEQUENCE ERROR
* 
SEQERR	EQU	*
	LDK	A1,R:SERR
	RF	CMPLT 
* 
*	REQUESTED TIMER HAS EXPIRED 
* 
TIMERR	EQU	*
	LDK	A1,R:TERR
	RF	CMPLT 
	EJECT
* 
*	BLOCK ENDED WITH ETB RECEIVED 
* 
ETBRTN	EQU	*
	LDKL	A1,R:ETB
	RF	CMPLT 
* 
*	EOT RECEIVED
* 
EOTRTN	EQU	*
	LDKL	A1,R:EOT
	RF	CMPLT 
* 
*	ENQ ON 'BID' OR RVI ON A MESSAGE BLOCK RECEIVED 
* 
INTRTN	EQU	*
	LDKL	A1,R:INT
	RF	CMPLT 
* 
*	REQUEST ERROR 
* 
REQERR	EQU	*
	LDKL	A1,R:RERR 
	RF	CMPLT 
* 
*	REQUEST COMPLETED SUCCESSFULLY
* 
RTN:OK	EQU	*
	LDK	A1,R:OK
CMPLT	EQU	* 
	ABL	DISEND	TENDIO+DISPATCH 
	EJECT
******************************************************************
* 
*	REQUEST HANDLER FOR THE SET TIMEOUT REQUEST 
* 
******************************************************************
* 
SETTIM	EQU	*
	LD	A1,ECBCW1,A8	GET TIMEOUT VALUE
	ST	A1,DWTTIM,A6	SAVE IN DWT
	RB	RTN:OK	COMPLETE THE REQUEST 
	EJECT
************************************************************
* 
*	REQUEST HANDLER FOR THE SET STATUS REQUEST
* 
************************************************************
* 
SETST	EQU	* 
	LDR	A1,A1	'INITIAL CONTROL' MODE ? 
	RB(NZ)	SEQERR	NO, WRONG MODE 
	LD	A1,ECBCW1,A8	GET CONNECTION TYPE (SWITCHED/LEASED)
	ST	A1,DWTCON,A6	SAVE IN DWT
	RB	RTN:OK	COMPLETE THE REQUEST 
	EJECT
******************************************************************
* 
*	REQUEST HANDLER FOR THE READ STATUS REQUEST 
* 
******************************************************************
* 
READST	EQU	*
	LDK	A1,0	PRESET STATUS 
	LD	A2,DWTMOD,A6	GET OPERATIONAL MODE 
	RF(Z)	READ20	INITIAL CONTROL MODE
	LDK	A1,/2	INDICATE DTE-DCE INTERFACE ACTIVE
	LD	A2,DWTST,A6 
	ANK	A2,1	MODEM OK ?
	RF(NZ)	READ20	NO 
	ADK	A1,/1	INDICATE MODEM OK
READ10	EQU	*
	CWK	A3,CNTRL+NOLCON	DATA LINK UP ? 
	RF(E)	READ20	NO
	XRK	A1,/10	INDICATE DATA LINK UP 
READ20	EQU	*
	LD	A2,DWTCON,A6	GET TYPE OF CONNECTION 
	RF(Z)	READ30	LEASED CONNECTION 
	SLL	A2,8	PUT BIT IN RIGHT POSITION 
	XRR	A1,A2	INDICATE SWITCHED CONNECTION 
READ30	EQU	*
	ST	A1,ECBCW1,A8	STORE STATUS IN CONTROL-WORD 1 
	RB	RTN:OK	COMPLETE THE REQUEST 
	EJECT
********************************************************************
* 
*	REQUEST HANDLER FOR THE READ/RESET STATISTICS REQUEST 
* 
********************************************************************
* 
RRSTAT	EQU	*
	IFF	STAT=1 
	RB	REQERR	STATISTIC OPTION NOT INCLUDED
	XIF
	IFT	STAT=1 
	CF	A15,DCSRED	GET STATISTIC COUNTERS TO 'USER' BUFFER
	LDR	A1,A1	FUNCTION COMPLETED NORMALLY ?
	RB(NZ)	REQERR	NO, SOMETHING WAS WRONG
	LC	A1,ECBCW1,A8
	ANK	A1,/FF	GET REQUEST OPTION
	SUK	A1,/43	RESET STATISTIC AREA ?
	RB(NZ)	RTN:OK	NO, COMPLETE REQUEST 
	CF	A15,DCSRST	RESET STATISTIC AREA 
	RB	RTN:OK	COMPLETE REQUEST 
	XIF
	EJECT
********************************************************************* 
* 
*	 REQUEST HANDLER FOR THE OPEN REQUEST 
* 
********************************************************************* 
* 
OPEN	EQU	*
	LDR	A1,A1	GET OPERATIONAL MODE 
	RB(NZ)	RTN:OK	LINE ALREADY OPEN
	LD	A1,DWTCON,A6	SWITCHED CONNECTION ?
	RB(NZ)	RTN:OK	YES,JUST COMPLETE THE REQUEST
	LDKL	A1,/8000
	ANS	A1,DWTST,A6	RESET LINE STATUS
	CF	A5,ACTDCE	CONNECT MODEM 
	LDR	A1,A1	MODEM OK ? 
	RF(N)	OPEN10	NO
	LDK	A1,R:OK	RC=0 
	RF	OPEN20
OPEN10	EQU	*
	LDK	A1,R:MNOP	RC=MODEM NOT OPERABLE
OPEN20	EQU	*
	CF	A15,TENDIO	COMPLETE THE REQUEST 
OPEN30	EQU	*
	LDKL	A1,CNTRL+NOLCON 
	ST	A1,DWTMOD,A6	SET 'NO LOGICAL CONNECTION' MODE 
				=9
	LDK	A1,/FF		=9 
	ANS	A1,DWTABT,A6	ABORT ALLOWED	=9
	LD	A1,DWTST,A6 
	ANK	A1,S:MNOP	MODEM OK ? 
	ABL(NZ)	MODR30	NO, TRY TO RECONNECT MODEM
			WITHOUT TIME SUPERVISION 
	RF	NCON65	MODEM OK, START I/P
	EJECT
* 
*	TIMEOUT AND ABORT ENTRY IN INITIAL CONTROL MODE 
* 
OPEN40	EQU	*
	CF	A15,CMCTIM	KILL MODEM CONNECTION TIMER IF RUNNING 
	CF	A5,DISCM	DISCONNECT MODEM 
	RF	NCON85
	EJECT
* 
*	INPUT CHARACTER HANDLERS IN 'NO LOGICAL CONNECTION' MODE
* 
* 
*	SYN CHARACTER RECEIVED
* 
NCON	EQU	*
	ABL	BRM010	READ ANOTHER CHARACTER
* 
*	DLE RECEIVED
* 
NCON10	EQU	*
	LD	A1,DWTCON,A6	LEAST CONNECTION ? 
	RF(Z)	NCON65	YES, RESTART INPUT
	CF	A5,READ	READ A CHARACTER
	SUK	A2,C:EOT	EOT CHARACTER ? 
	RB(NZ)	NCON	NO, TAKE AS TERMINAL 'ID'
	CF	A5,CHKPAD	CHECK TRAILING PAD
NCON20	EQU	*
	RB(NZ)	NCON	NOT A PAD, TAKE AS 'ID'
* 
*	(SYN),DLE,EOT,PAD RECEIVED ON A SWITCHED CONNECTION 
* 
NCON25	EQU	*
	LDKL	A1,R:NCON	CONNECTION BROKEN LOGICALLY & PHYSICALLY
NCON30	EQU	*
	LDK	A3,S:NCON
	ORS	A3,DWTST,A6	INDICATE CONNECTION BROKEN, IF NO REQ. 
	LD	A2,DWTST,A6	ANY REQUEST ? 
	RF(N)	NCON35	NO
	CF	A15,TENDIO	COMPLETE THE REQUEST 
	XRS	A3,DWTST,A6	RESET CONNECTION BROKEN BIT
NCON35	EQU	*
	CF	A5,DISCM	DISCONNECT MODEM 
	CM	DWTMOD,A6	SET INITIAL CONTROL MODE
	CF	A15,CPRTIM	CLEAR PROCEDURE TIMER
	CF	A15,CRQTIM	CLEAR REQUST TIMER 
	CM	DWTABT,A6	INDICATE ABORT RECOV COMPLETED
	LDKL	A1,/8000+S:NCON 
	ANS	A1,DWTST,A6	CLEAR LINE STATUS
				=9
	ABL	TDISP
* 
*	ENQ RECEIVED
* 
NCON40	EQU	*
	CF	A5,CHKPAD	CHECK TRAILING PAD
	RF(NZ)	NCON60	NOT A PAD
	LD	A1,DWTST,A6	ANY REQUEST ? 
	RF(N)	NCON45	NO
	CF	A5,ENQINT	PREPARE TO ANSWER THE 'BID' 
	ABL	RTN:OK	COMPLETE THE REQUEST
NCON45	EQU	*
	CF	A5,TREOT	SEND EOT 
	LD	A1,DWTMOD,A6	GET DLS MODE 
	CWK	A1,CNTRL+WACK0	CONNECT ACTIVE REQUEST ISSUED ? 
	RF(E)	CON040	YES, SEND ENQ 
	RF	NCON65	NO, START I/P
* 
*	EOT RECEIVED
* 
NCON50	EQU	*
	CF	A5,CHKPAD	CHECK TRAILING PAD
	RF(Z)	NCON65	PAD OK,RESTART I/P
* 
*	NOT ALLOWED CHARACTER RECEIVED
* 
NCON60	EQU	*
	LD	A1,DWTCON,A6	SWITCHED CONNECTION ?
	RB(NZ)	NCON	YES, TAKE AS TERMINAL'ID'
NCON65	EQU	*
	ABL	BRM	RESTART INPUT
* 
*	SST INTERRUPT 
* 
NCON70	EQU	*
	ANK	A2,S:MNOP	MODEM OK ? 
	RB(Z)	NCON65	YES, RESTART INPUT
	ORS	A2,DWTST,A6	INDICATE MODEM ERROR 
	LD	A1,DWTST,A6	ANY REQUEST ? 
	RF(N)	NCON80	NO
	LD	A1,DWTRTP,A6	REQUEST TIMER RUNNING ?
	RF(NZ)	NCON80	YES, WAIT FOR TIMEOUT
	LDK	A1,R:MNOP	RC=MODEM NOT OP
	CF	A15,TENDIO	COMPLETE REQUEST 
NCON80	EQU	*
	ABL	MODR30	TRY TO RECONNECT MODEM
			WITHOUT TIME SUPERVISION 
	EJECT
* 
*	TIMEOUT AND ABORT ENTRY IN 'NO CONNECTION' MODE 
* 
NCON85	EQU	*
	CF	A15,CRQTIM	KILL REQUEST TIMER 
	LD	A1,DWTABT,A6	ABORT ISSUED ? 
	RF(Z)	NCON95	NO
NCON90	EQU	*
	CM	DWTABT,A6	INDICATE ABORT RECOV COMPLETED
	ABL	RTN:OK	COMPLETE WITH RC=0	 
NCON95	EQU	*
	ABL	TIMERR	COMPLETE WITH RC=TIMEOUT STATUS 
	EJECT
********************************************************
* 
*	 REQUEST HANDLER FOR THE CLOSE REQUEST
* 
********************************************************
* 
CLOSE	EQU	* 
	LDR	A1,A1	GET OPERATIONAL MODE 
	ABL(Z)	RTN:OK	LINE ALREADY CLOSED
	LD	A2,DWTCON,A6	SWITCHED CONNECTION ?
	RF(NZ)	CLOS10	YES
	CWK	A1,CNTRL+NOLCON	'NO LOGICAL CONNECTION' MODE ? 
	RF(NE)	CLOS30
CLOS00	EQU	*
	CF	A15,CMCTIM	KILL MODEM CONNECTION TIMER (IF RUNNING) 
	LDK	A1,R:OK	RC=0 
	RB	NCON30	COMPLETE THE REQUEST 
CLOS10	EQU	*
	CWK	A1,CNTRL+NOLCON	DATA LINK UP ? 
	RF(E)	CLOS20	NO
	CWK	A1,SEND+WNAK	WAITING FOR NAK AFTER TTD ? 
	ABL(E)	TDISP	YES, QUEUE THE REQUEST
	CWK	A1,SEND+INIT	INITIAL SEND MODE ? 
	RF(NE)	CLOS30
CLOS20	EQU	*
	CM	DWTMOD,A6	SET 'INITIAL CONTROL' MODE
	LD	A1,DWTST,A6	GET LINE STATUS 
	ANK	A1,S:MNOP	MODEM OK ? 
	RB(NZ)	CLOS00	NO, SKIP TRANSMISSION OF DLE EOT 
				=9
	LDKL	A1,/8000		=9
	ORS	A1,DWTABT,A6	ABORT NOT PERMITTED	=9
	CF	A5,TRSYN	START O/P, AND SEND SYN
	LDK	A2,C:DLE 
	CF	A5,WRITE	SEND DLE 
	CF	A5,TREOT5	SEND EOT PAD AND HALT O/P 
	RB	CLOS00	DISCONNECT MODEM AND COMLETE REQUEST 
CLOS30	EQU	*
	LD	A1,DWTST,A6	GET STATUS
	ANK	A1,S:MNOP	MODEM OK ? 
* 
*	MODEM RECOVERY IN PROGRESS IF BIT SET 
* 
	ABL	SEQERR	FOR THE MOMENT, SEQUENCE ERROR
	EJECT
**********************************************************************
* 
*	 REQUEST HANDLER FOR THE CONNECT ACTIVE REQUEST 
* 
***************************************************************** 
* 
CONACT	EQU	*
	LD	A2,DWTCON,A6	LEASED CONNECTION ?
	RF(Z)	CON020	YES 
	LDR	A1,A1	ANY PHYSICAL CONNECTION ?
	RF(NZ)	CON020	YES
	LD	A1,DWTTIM,A6	TIME VALUE SPECIFIED ? 
	RF(Z)	CON010	NO
	CF	A15,SRQTIM	START TIME SUPERVISION OF PHYS CON PHASE 
CON010	EQU	*
	CF	A5,ACTDCE	TRY TO CONNECT MODEM
	LDR	A1,A1	CONNECTION SUCCESSFUL ?
	RB(N)	CON010	NO, TRY AGAIN 
	CF	A15,CRQTIM	NO TIME SUPERV. OF LOGICAL CONN. PHASE 
	RF	CON030
CON020	EQU	*
	CWK	A1,CNTRL+NOLCON	'NO LOGICAL CONNECTION' MODE ? 
	ABL(NE)	SEQERR	NO, REQUEST ISSUED IN WRONG MODE
CON030	EQU	*
	LDK	A1,WACK0 
	SC	A1,DWTMOD+1,A6	SET WAIT FOR ACK0 MODE 
*	PREPARE RETRY COUNTERS
* 
	LDKL	A1,-L:ENQ+1 
	ST	A1,DWTETR,A6	MAX NBRS OF T-O OR NAK'S 
	LDKL	A1,-L:WACK+1
	ST	A1,DWTWTR,A6	MAX NBRS OF ACCEPTED WACK'S
	LD	A1,DWTOUT,A6	OUTPUT IN PROGRESS (EOT) ? 
	ABL(NZ)	TDISP	YES WAIT UNTIL O/P COMPLETED 
CON040	EQU	*
	LD	A1,DWTABT,A6	ABORT ISSUED ? 
	RF(NZ)	CON060	YES, SEND EOT
	CF	A5,TRENQ	NO, SEND ENQ 
	LDK	A1,T:BID 
	CF	A15,SPRTIM	START PROCEDURE TIMER
CON050	EQU	*
	ABL	BRM	START INPUT
	EJECT
* 
*	ABORT ISSUED OR A RETRY LIMIT REACHED 
* 
CON060	EQU	*
	CF	A5,TREOT	SEND EOT 
CON070	EQU	*
	LDK	A1,R:CERR	PRESET RETURN CODE 
CON080	EQU	*
	LDKL	A2,CNTRL+NOLCON 
	ST	A2,DWTMOD,A6	SET 'NO LOGICAL CONNECTION' MODE 
	LD	A2,DWTABT,A6	ABORT ISSUED ? 
	RF(Z)	CON090	NO
	CM	DWTABT,A6	INDICATE ABORT RECOV COMPLETED
	RB	CON050	START INPUT
CON090	EQU	*
	CF	A15,TENDIO	COMPLETE THE REQUEST 
	RB	CON050	START INPUT
	EJECT
* 
*	INPUT CHARACTER HANDLERS IN WAIT FOR ACK0 MODE
* 

* 
*	SYN RECEIVED
* 
CON100	EQU	*
	ABL	BRM010	READ ANOTHER CHARACTER
* 
*	DLE RECEIVED
* 
CON110	EQU	*
	CF	A5,READ 
	LDR	A4,A2	SAVE CHARACTER 
	CF	A5,CHKPAD	CHECK TRAILING PAD
	RF(NZ)	CON210	NOT A PAD
	LDR	A2,A4	RESTORE LAST RECEIVED CHARACTER
	CWK	A2,C:ACK0+C:PAR	ACK0 RECEIVED ?
	RF(NE)	CON130	NO 
	CF	A5,HLTINP	HALT INPUT
	CF	A15,CPRTIM	KILL PROCEDURE TIMER 
	LD	A1,DWTABT,A6	ABORT ISSUED ? 
	RB(NZ)	CON060	YES, SEND EOT
* 
*	PREPARE FOR TRANSMITTING A MESSAGE BLOCK
* 
	CM	DWTTRM,A6	DEFAULT NON TRANSPARENT MODE
	LDK	A1,1 
	ST	A1,DWTCNT,A6	UPDATE ACK COUNTER 
	LDKL	A1,SEND+INIT
	ST	A1,DWTMOD,A6	SET INITIAL TRANSMIT MODE
	LDK	A1,T:TTD 
	CF	A15,SPRTIM	START PROCEDURE TIMER FOR TEXT DELAY 
	ABL	RTN:OK	COMPLETE REQUEST AND DISPATCH 
CON130	EQU	*
	CWK	A2,C:WACK	WACK RECEIVED ?
	RF(NE)	CON140	NO 
	CF	A15,CPRTIM	KILL PROCEDURE TIMER 
	IM	DWTWTR,A6	MAX NBR OF WACK RECEIVED ?
	RB(P)	CON060	YES, SEND EOT 
	RB	CON040	NO, SEND ANOTHER ENQ 
CON140	EQU	*
	LD	A1,DWTCON,A6	LEAST CONNECTION ? 
	RB(Z)	CON050	YES, WRONG SEQ. RESTART INPUT 
	SUK	A2,C:EOT	EOT RECEIVED ?
	RB(NZ)	CON100	NO, TAKE AS 'ID' AND READ ANOTHER CHAR 
* 
*	DLE,EOT,PAD RECEIVED ON A SWITCHED CONNECTION 
* 
CON150	EQU	*
	ABL	NCON25 
	EJECT
* 
*	ENQ RECEIVED ON ENQ 
* 
CON160	EQU	*
	CF	A5,CHKPAD	CHECK TRAILING PAD
	RF(NZ)	CON210	NOT A PAD
	CF	A15,CPRTIM	KILL TIMER 
	LD	A1,DWTABT,A6	ABORT ISSUED ? 
	RB(NZ)	CON060	YES, SEND EOT
	CF	A5,ENQINT	PREPARE AFTER RECEIVING ENQ 
	LDK	A1,S:BID 
	ORS	A1,DWTST,A6	DISCONNECT ALLOWED DESPITE OF WACK 
	ABL	INTRTN	NOTIFY APPLICATION ABOUT ENQ
* 
*	NAK RECEIVED
* 
CON170	EQU	*
	CF	A5,CHKPAD	CHECK TRAILING PAD
	RF(NZ)	CON210	NOT A PAD
	CF	A15,CPRTIM	KILL PROCEDURE TIMER 
CON180	EQU	*
	IM	DWTETR,A6	MAX NBR OF TRANSMITTED ENQ ?
	RB(P)	CON060	YES, SEND EOT 
	RB	CON040	NO, SEND ENQ 
	EJECT
* 
*	EOT RECEIVED
* 
CON190	EQU	*
	CF	A5,CHKPAD	CHECK TRAILING PAD
	RF(NZ)	CON210	NOT A PAD
CON200	EQU	*
	CF	A5,HLTINP 
	CF	A15,CPRTIM
	RB	CON070	EOT RECEIVED, TAKE PROPER ACTION 
* 
*	ANY CHARACTER BUT SYN, DLE, ENQ, NAK OR EOT 
* 
CON210	EQU	*
	LD	A1,DWTCON,A6	SWITCHED LINES ? 
	RB(NZ)	CON100	YES, TAKE AS 'ID'
	RB	CON050	N0, RESTART INPUT
* 
*	PROCEDURE TIMEOUT 
* 
CON220	EQU	*
	RB	CON180
* 
*	SST INTERRUPT 
* 
CON230	EQU	*
	ABL	MODREC	BRANCH TO COMMON SST HANDLER
* 
*	ABORT ENTRY IN 'WAIT FOR ACK0' MODE 
* 
CON240	EQU	*
	ABL	RTN:OK	COMLETE ABORT, BUT DON'T CLEAR FLAG 
	EJECT
***************************************************************** 
* 
*	TIMEUOT ENTRY FOR SENDING TEMPORARY TEXT DELAY (TTD) SEQUENCE 
* 
***************************************************************** 
TTDDEL	EQU	*
	LDK	A1,WNAK
	SC	A1,DWTMOD+1,A6	SET WAIT FOR NAK MODE
TTD010	EQU	*
	LDKL	A1,-L:ENQ 
	ST	A1,DWTETR,A6	LIMIT BEFORE SENDING EOT 
TTD015	EQU	*
	CF	A5,TRTTD	SEND TTD SEQUENCE
TTD020	EQU	*
	LDK	A1,T:ENQ 
	CF	A15,SPRTIM	START PROCEDURE TIMER
	ABL	BRM	START INPUT
	EJECT
* 
*	INPUT CHARACTER HANDLERS IN WAIT FOR NAK MODE 
* 

* 
*	SYN RECEIVED
* 
TTD030	EQU	*
	ABL	BRM010	READ ANOTHER CHARACTER
* 
*	NAK RECEIVED
* 
TTD040	EQU	*
	CF	A5,CHKPAD	CHECK TRAILING PAD
TTD050	EQU	*
	RF(NZ)	TTD090	NOT A PAD
	CF	A5,HLTINP	HALT INPUT
	CF	A15,CPRTIM	KILL TIMER 
	LDK	A1,INIT
	SC	A1,DWTMOD+1,A6	SET INITIAL TRANSMIT MODE
	LD	A1,DWTST,A6	ANY REQUEST ??
	RF(N)	TTD080	NO
	LD	A1,DWTOR,A6	GET ORDER 
	ANK	A1,/FF 
	SUK	A1,/06	WRITE ORDER ? 
	ABL(Z)	SEN035	YES, START OUTPUT
	SUK	A1,/22-/06	CLOSE ORDER ? 
	ABL(Z)	CLOS20	YES
	EJECT
* 
*	DISCONNECT REQUEST PRESENT
* 
TTD060	EQU	*
	LDKL	A1,CNTRL+NOLCON 
	ST	A1,DWTMOD,A6	SET 'NO LOGICAL CONNECTION' MODE 
	LDK	A1,R:OK	RC=0 
	CF	A15,TENDIO	COMPLETE THE REQUEST 
	ABL	NCON45	SEND EOT
TTD080	EQU	*
	LDK	A1,T:TTD 
	CF	A15,SPRTIM	RESTART TTD TIMER
	ABL	TDISP	WAIT FOR REQUEST OR TIMEOUT
* 
*	NOT ALLOWED CHARACTER RECEIVED
* 
TTD090	EQU	*
	ABL	BRM	RESTART INPUT
* 
*	PROCEDURE TIMEOUT 
* 
TTD100	EQU	*
	IM	DWTETR,A6	RETRY LIMIT REACHED ? 
	RB(NP)	TTD015	NO, RETRANSMIT TTD SEQUENCE
TTD105	EQU	*
	CF	A5,TREOT	YES, SEND EOT
	LD	A1,DWTST,A6	ANY REQUEST ? 
	ABL(N)	WACK90	NO 
	LD	A1,DWTOR,A6 
	ANK	A1,/FF	GET ORDER 
	SUK	A1,/06	SEND ?
	ABL(Z)	CON070	YES
	SUK	A1,/22-/06	CLOSE ? 
	ABL(Z)	CLOS20	YES
	LDK	A1,R:OK	DISCONNECT REQ. PRESENT => RC=0
	ABL	OPEN20 
* 
*	SST INTERRUPT 
* 
TTD120	EQU	*
	ABL	MODREC	BRANCH TO COMMON SST HANDLER
* 
*	ABORT ENTRY IN WAIT FOR NAK MODE
* 
TTD150	EQU	*
	CM	DWTABT,A6	ABORT RECOVERY COMPLETED
	ABL	RTN:OK	COMPLETE ABORT
	EJECT
**************************************************************
* 
*	 REQUEST HANDLER FOR THE CONNECT PASSIVE REQUEST
* 
**************************************************************
* 
CONPAS	EQU	*
	LD	A2,DWTCON,A6	SWITCHED CONNECTION ?
	RF(NZ)	CONP10	YES
CONP00	EQU	*
	CWK	A1,CNTRL+NOLCON
	ABL(NE)	SEQERR	REQUEST ISSUED IN WRONG MODE
	RF	CONP15
CONP10	EQU	*
	CWK	A1,CNTRL+INIT	PHYSICAL CONNECTION ESTABLISHED ?
	RB(NE)	CONP00	YES
CONP15	EQU	*
	LD	A1,DWTTIM,A6	GET TIMEOUT VALUE
	RF(Z)	CONP20	NO TIME SUPERVISION WANTED
	CF	A15,SRQTIM	START REQUEST TIMER
CONP20	EQU	*
	LD	A1,DWTMOD,A6	ANY PHYSICAL CONNECTION ESTABLISHED ?
	ABL(NZ)	TDISP	YES, WAIT FOR A 'BID'
	EJECT
* 
*	PREPARATION FOR CONNECT PASSIVE ON SWITCHED LINES 
*	WHEN NO PHYSICAL CONNECTION IS ESTABLISHED
* 
* 
CONP30	EQU	*
	LDK	A1,WCALL 
	SC	A1,DWTMOD,A6	SET 'WAIT FOR CALL' MODE 
CONP40	EQU	*
	CF	A5,DISCM	PUT 'CU' IN EXECUTE MODE 
	IM	DWTINP	INDICATE INPUT ALLOWED 
	CF	A5,READ	GO TO DISPATCHER AND WAIT FOR A CALL
* 
*	CHECK INCOMMING SATUS 
* 
CONP50	EQU	*
	ANK	A2,S:CALL
	RB(Z)	CONP40	NOT A INCOMMING CALL
* 
*	AN INCOMMING CALL RECEIVED
* 
* 
	CF	A5,ACTDCE	CONNECT MODEM 
	LDR	A2,A1	MODEM OPERABLE ? 
	ABL(Z)	OPEN30	YES
	LDK	A1,R:MNOP	RC=MODEM NOT OP
	ABL	NCON30 
	EJECT
* 
*	TIMEOUT AND ABORT ENTRY IN 'WAIT FOR CALL' MODE 
* 
CONP60	EQU	*
	CM	DWTMOD,A6	SET 'INITIAL CONTROL' MODE
	ABL	OPEN40 
	EJECT
********************************************************* 
* 
*	TIMEOUT ENTRY FOR SENDING WACK
* 
********************************************************* 
* 
WACK00	EQU	*
	LDK	A1,WACKD 
	SC	A1,DWTMOD+1,A6	SET 'WACK DELAY' MODE
	CF	A5,TRWACK	SEND WACK 
	IFT	STAT=1 
	LDK	A1,CSSRBY
	CF	A15,DCSUPR	INCREMENT BUFFER BUSY COUNTER
	XIF
WACK05	EQU	*
	LDK	A1,T:MACT
	CF	A15,SPRTIM	START MASTER ACTIVITY TIMER
	LD	A1,DWTST,A6 
	ANK	A1,S:BID	DISCONNECT ALLOWED DESPITE OF WACK ?
	RF(NZ)	WACK0A	YES
	LDK	A1,S:BACK
	ORS	A1,DWTST,A6	INDICATE DIOSCONNECT NOT ALLOWED 
WACK0A	EQU	*
	ABL	BRM	START INPUT
	EJECT
* 
*	INPUT CHARACTER HANDLERS IN 'WACK DELAY' MODE 
* 
* 
*	SYN CHARACTER RECEIVED
* 
WACK10	EQU	*
	ABL	BRM010	READ ANOTHER CHARACTER
* 
*	DLE RECEIVED
* 
WACK15	EQU	*
	LD	A1,DWTCON,A6	LEASED CONNECTION ?
	RF(Z)	WACK60	YES, NOT ALLOWED CHARACTER
	CF	A5,READ	READ ANOTHER CHARACTER
WACK20	EQU	*
	SUK	A2,C:EOT	EOT RECEIVED ?
	RF(NZ)	WACK60	NO 
	CF	A5,CHKPAD	CHECK TRAILING PAD
	RF(NZ)	WACK60	NOT A PAD
	ABL	NCON25 
* 
*	EOT RECEIVED
* 
WACK25	EQU	*
	CF	A5,CHKPAD	CHECK TRAILING PAD
	RF(NZ)	WACK60	NOT A PAD
WACK30	EQU	*
	CF	A15,CPRTIM	KILL MASTER ACTIVITY TIMER 
	CF	A15,CRQTIM	CLEAR REQUEST TIMER IF RUNNING 
	CF	A5,HLTINP	HALT I/P
	LD	A1,DWTST,A6	ANY PRESENT REQUEST ? 
	RF(N)	WACK40	NO
	LDKL	A1,R:EOT	RC=EOT RECEIVED
	LD	A2,DWTOR,A6	GET ORDER 
	SUK	A2,/02	RECEIVE ORDER ? 
	RF(Z)	WACK35	YES 
	LDK	A1,R:OK	NO, DISCONNECT => RC=0 
WACK35	EQU	*
	ABL	OPEN20 
WACK40	EQU	*
	LDK	A1,S:EOT 
	ORS	A1,DWTST,A6	REMEMBER EOT FOR FUTURE REQUEST
	ABL	OPEN30 
* 
*	ENQ RECEIVED
* 
WACK45	EQU	*
	CF	A5,CHKPAD	CHECK TRAILING PAD
	RF(NZ)	WACK60	NOT A PAD
	CF	A5,HLTINP	HALT INPUT
	CF	A15,CPRTIM	STOP MASTER ACTIVITY TIMER 
	LDK	A1,INIT
	SC	A1,DWTMOD+1,A6	SET INITIAL RECEIVE MODE 
	LD	A1,DWTST,A6	ANY REQUEST ? 
	RF(N)	WACK50	NO
	LD	A1,DWTOR,A6 
	ANK	A1,/FF	GET ORDER 
	SUK	A1,/02	RECEIVE ORDER ? 
	ABL(Z)	REC070	YES
	RF	DISC30	NO, DISCONNECT ORDER 
WACK50	EQU	*
	LDK	A1,T:WACK
	CF	A15,SPRTIM	RESTART WACK TIMER 
	ABL	TDISP
* 
*	ENTRY FOR NOT ALLOWED CHARACTERS
* 
WACK60	EQU	*
	ABL	BRM	RESTART INPUT
* 
*	SST INTERRUPT IN 'WACK DELAY' MODE
* 
WACK70	EQU	*
	ABL	MODREC	BRANCH TO COMMON SST HANDLER
* 
*	ABORT AND REQUEST TIMEOUT ENTRY 
* 
WACK80	EQU	*
	ABL	NCON85	
* 
*	MSV2 TIMEOUT ENTRY. NO ACTION HAS BEEN TAKEN BY THE 
*	MASTER ON THE LAST RESPONSE WITHIN A PREDEFINED TIME. 
* 
WACK85	EQU	*
	CF	A15,CRQTIM	KILL REQUEST TIMER IF RUNNING
	LD	A1,DWTST,A6	GET LINE STATUS 
	RF(N)	WACK90	NO REQUEST PRESENT
	LD	A1,DWTOR,A6	GET ORDER 
	ANK	A1,/FF 
	SUK	A1,/2F	DISCONNECT ?
	ABL(NZ)	CON070	NO
	RF	DISC40
WACK90	EQU	*
	LDK	A1,S:CERR
	ORS	A1,DWTST,A6	SET CONNECTION ERROR 
	ABL	OPEN30 
	EJECT

Full view