Google
 

Trailing-Edge - PDP-10 Archives - BB-H348C-RM_1982 - swskit-v21/listings/mcb/dup.list
There are no other files named dup.list in the archive.
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 3


      1						.TITLE	DUP
      2						.IDENT	/V01.07/
      3
      4					;
      5					; COPYRIGHT (C) 1978 BY
      6					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
      7					;
      8					;
      9					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED
     10					; ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE
     11					; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER
     12					; COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
     13					; OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY
     14					; TRANSFERRED.
     15					;
     16					; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE
     17					; AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT
     18					; CORPORATION.
     19					;
     20					; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS
     21					; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
     22					;
     23					;
     24					; MODULE DESCRIPTION:
     25					;
     26					;	DUP-11 DEVICE DRIVER MODULE
     27					;
     28					;
     29					; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING
     30					;
     31					; IDENT HISTORY:
     32					;
     33					; 1.00	10-FEB-78
     34					;	VERSION 2.0 RELEASE
     35					;
     36					; 1.01	17-NOV-78	BUREN HOFFMAN	;BH0001
     37					;	REMOVED DLT DEFINITION TO DDML.MAC, FOR INCLUSION
     38					;	IN NETLIB.  ALSO MADE MODIFICATIONS TO ACCOMODATE
     39					;	EVENT LOGGING.
     40					; 1.02	28-DEC-78	LEE WEBBER	;LW0002
     41					;	CORRECTED TYPO IN ERROR LOGGING CODE
     42					; 1.03	3-JAN-79	BUREN HOFFMAN	;BH0003
     43					;	FIXED YET ANOTHER BUG (YAB) IN EVENT LOGGING STUFF.
     44					; 1.04	12-JAN-79	BUREN HOFFMAN	;BH0004
     45					;	MODIFIED TO USE NEW $CMLOG (V1.01).
     46					; 1.05	30-JAN-79	BUREN HOFFMAN	;BH0005
     47					;	ADDED CODE TO ASSURE SIGN BIT SET IN REASON CODE FOR CMLOG CALL.
     48					; 1.06	1-FEB-79	BUREN HOFFMAN	;BH0006
     49					;	CHANGED TO GLOBAL INVOCATION OF LINE TABLE DEFINITION MACROS.
     50					; 1.07	2-FEB-79	BUREN HOFFMAN	;BH0007
     51					;	ADDED ERROR RETURN DETECTION IN COROUTINE CALL TO $CMLOG.
     52					;	ALSO, STARTED UTILIZING EVLDF$ MACRO FOR LOGGING SYMBOLS.
     53					;	OMITTED NEED FOR SIGN BIT SETTING IN 1.05.
     54					;
     55
     56					; MACRO LIBRARY CALLS
     57					;
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 3-1


     58						.MCALL	NHWDF$,$INTSX,$INTXT,INHIB$,ENABL$
     59						.MCALL	$LIBCL,CCBDF$,MDCDF$,DUPDF$,CMLDF$,DEVDF,EVLDF$                 ;BH0007
     60	000000					MDCDF$			; DEFINE MODEM CONTROL SYMBOLS                  ;**-2
     61	000000					NHWDF$			; DEFINE THE HARDWARE REGISTERS
     62	000000					CCBDF$			; DEFINE THE CCB OFFSETS
     63					                                                                                ;**-1
     64						.IF DF	R$$11D!I$$AS
     65
     66						.MCALL	PRCHD$
     67						PRCHD$	$DUPTB,DRIVER,CHAR	; DEFINE THE PROCESS HEADER
     68
     69						.ENDC
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 4


     71					;
     72					; LOCAL SYMBOL DEFINITIONS
     73					;
     74					; TRANSMITTER FLAGS
     75					;
     76		000010 			TINIT=	000010			; INITIAL TRANSMIT STATUS
     77		000020 			SEND=	000020			; TRANSMIT ENABLE
     78		000100 			TXINT=	000100			; TRANSMIT INTERRUPT ENABLE
     79		001000 			TXACT=	001000			; TRANSMIT ACTIVE
     80
     81		000400 			TSOM=	000400			; TRANSMIT START OF MESSAGE
     82		001000 			TEOM=	001000			; TRANSMIT END OF MESSAGE
     83
     84					;
     85					; RECEIVE CSR FLAGS
     86					;
     87		000020 			RCVEN=	000020			; RECEIVE ENABLE
     88		000100 			RXINT=	000100			; RECEIVE INTERRUPT ENABLE
     89		010000 			CRC=	010000			; RECEIVE CRC CHECK
     90		000400 			SSYN=	000400			; STRIP SYNC
     91		000522 			RINIT=	SSYN!RXINT!RCVEN!DTR	; INITIAL RECEIVE STATUS
     92
     93					;
     94					; MODEM STATUS FLAGS
     95					;
     96		000004 			RTS=	000004			; REQUEST TO SEND LEAD
     97		020000 			CTS=	020000			; CLEAR TO SEND
     98		000002 			DTR=	000002			; DATA TERMINAL READY
     99		001000 			DSR=	001000			; DATA SET READY
    100		040000 			RING=	040000			; RING INDICATOR
    101
    102					;
    103					; MISCELENIOUS FLAGS
    104					;
    105		100000 			INPRM=	100000			; INITIALIZATION FLAGS (DEC MODE)
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 5


    107					;                                                                               ;BH0001
    108					; DEFINE THE DUP DEVICE CODE                                                    ;BH0001
    109					;                                                                               ;BH0001
    110	000000					DEVDF                                                                   ;BH0001
    111	000000					EVLDF$                                                                  ;BH0007
    112					                                                                                ;BH0001
    113					;                                                                               ;BH0001
    114					; DEFINE THE EVENT LOGGING MAPPING TABLE                                        ;BH0001
    115					;                                                                               ;BH0001
    116	000000	000003 			ERRTB:	.WORD	ERRTBL		;**LENGTH OF TABLE                              ;BH0001
    117	000002	000400 	000023 			.WORD	CS.DCR,E$RCRC	; CRC ERROR                                     ;BH0007
    118	000006	000004 	000012 			.WORD	CS.ROV,E$ROVR	; RECEIVER OVERRUN                              ;BH0007
    119	000012	020000 	000006 			.WORD	CS.TMO,E$RRTO	; TIMEOUT                                       ;BH0007
    120		000003 			  ERRTBL=<.-ERRTB-2>/4                                                          ;BH0007
    121					                                                                                ;BH0004
    122					;                                                                               ;BH0004
    123					; DEFINE THE $CMLOG ARGUMENT BLOCK                                              ;BH0004
    124					;                                                                               ;BH0004
    125		000012 				LGDAT=10.		; HDR + 4*REGS = 5.WORDS = 10.BYTES             ;BH0007
    126	000016					CMLDF$	DUP,E$THDW,,DUP,ERRTB,LGDAT                                     ;BH0007
	000016	000000 			PDST:	.WORD	0		; LOGGING DESTINATION
	000020	000000 			PRSN:	.WORD	0		;    "    REASON
	000022	177777 			PDT1:	.WORD	-1		; FORMAT DEPENDENT ARG #1
	000024	000012 			PDT2:	.WORD	DUP		;   "        "      "  #2
	000026	000012 			PLNG:	.WORD	LGDAT		; BYTES OF COROUTINE-ADDED INFO
	000030	016130 			PNAM:	.RAD50	/DUP/		; PROCESS NAME
	000032	000003 			PTYP:	.WORD	E$THDW		; EVENT TYPE CODE
	000034	000000'			PTAB:	.WORD	ERRTB		; ERROR CODE MAPPING TABLE
	000036	000000 			PSTA:	.WORD	0		; STATE WORD FOR USE BY $CMLOG
    127		000022'				PLIN=PDT1	; SYS LINE #                                            ;BH0004
    128		000024'				PDID=PDT2	; DEVICE ID                                             ;BH0004
    129					                                                                                ;BH0006
    130	000040					DUPDF$	<:>,<=>,LST                                                     ;BH0006
					;
					; DEVICE LINE TABLE OFFSET DEFINITIONS
					;
	000000				.ASECT
		000000 				.=0
	000000				TIME::  .BLKB	1	; DEVICE DRIVER TIMER CELL
	000001				TIMS::  .BLKB	1	; DEVICE DRIVER INITIAL TIMEOUT
	000002				RINS::  .INT		; RECEIVE TRANSFER INSTRUCTION
						.EVEN
						.IF DF	M$$MGE
	000002					.BLKW	7
						.IFF
						.BLKW	2
						.ENDC
	000020				RDBF::  .BLKW	1	;         RECEIVE DATA ADDRESS
						.IF DF	M$$MGE
	000022				RBIAS:: .BLKW	1	;         RELOCATION BIAS
						.IFTF
	000024				RADD::  .BLKW	1	;         VIRTUAL ADDRESS
	000026				RCNT::  .BLKW	1	;         REMAINING COUNT
	000030				RPRI::  .PRI		;         PRIORITY
						.EVEN
	000030					.BLKW	1
	000032				RTHRD:: .BLKW	1	;         POINTER TO CURRENT BUFFER IN CCB
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 5-1


	000034				RFLAG:: .BLKW	1	;         FLAGS WORD
	000036				RPRIM:: .BLKW	1	;         PRIMARY CCB (CURRENT)
	000040				RSTAT:: .BLKW	1	;         DEVICE STATUS
	000042				RPCNT:: .BLKW	1	;         SIZE OF DATA IN NUMBERED MESSAGE
	000044				TINS::  .INT		; TRANSMIT TRANSFER INSTRUCTION
						.EVEN
						.IF DF	M$$MGE
	000044					.BLKW	7
						.IFF
						.BLKW	2
						.ENDC
	000062				TCSR::  .BLKW	1	;          CSR ADDRESS
						.IFT
	000064				TBIAS:: .BLKW	1	;          RELOCATION BIAS
						.IFTF
	000066				TADD::  .BLKW	1	;          VIRTUAL ADDRESS
	000070				TCNT::  .BLKW	1	;          REMAINING COUNT
	000072				TPRI::  .PRI		;          PRIORITY
						.EVEN
	000072					.BLKW	1
	000074				TSTAT:: .BLKW	1	;	   NEXT STATE
	000076				TTHRD:: .BLKW	1	;          POINTER TO CURRENT BUFFER IN CCB
	000100				TPRIM:: .BLKW	1	;          PRIMARY CCB (CURRENT)
	000102				TSEC::  .BLKW	1	;          SECONDARY CCB CHAIN
	000104				KICCB:: .BLKW	1	; ADDRESS OF CCB USED IN KILL
	000106				LINE::  .BLKW	1	; DEVICE SYSTEM LINE NUMBER
	000110				DUPCH:: .DVCHA		; DEVICE CHA. (LOADED BY .DVCHA) ONLY THE
						.EVEN
	000110					.BLKW	2
								;  FULL/HALF DUPLEX INDICATOR IS USED
	000114				DUPLG:: .BLKW	1	; EVENT LOGGING DESTINATION
	000116				HDRA::  .LIBR
						.EVEN
						.IF DF	M$$MGE
	000116					.BLKW	2
						.IFF
						.BLKW	1
						.ENDC
						.ENDC
	000122				DUPLN::			; LENGTH OF DUP LINE TABLE
	000040				.PSECT
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 6


    132					;+                                                                              ;**-2
    133					; **-$DUPTB-DUP11 DEVICE DRIVER DISPATCH TABLE
    134					;
    135					;-
    136
    137	000040	000630'			$DUPTB::.WORD	DPASX		; TRANSMIT ENABLE
    138	000042	001324'				.WORD	DPASR		; RECEIVE ENABLE (ASSIGN BUFFER)
    139	000044	001346'				.WORD	DPKIL		; KILL I/O
    140	000046	001466'				.WORD	DPCTL		; CONTROL INITIATION
    141	000050	001746'				.WORD	DPTIM		; TIME OUT
    142									; TRANSMIT COMPLETE (VIA INTERRUPT)
    143									; RECEIVE COMPLETE (VIA INTERRUPT)
    144									; KILL COMPLETE
    145									; CONTROL COMPLETE
    146
    147					;
    148					; **-CONTROL SUBFUNCTION DISPATCH TABLE
    149					;
    150
    151	000052	177777 			CTDSP:	.WORD	-1		; INITIALIZE
    152	000054	001472'				.WORD	DPSTR		; START
    153	000056	001574'				.WORD	DPSTP		; STOP
    154	000060	177777 				.WORD	-1		; EXIT
    155	000062	177777 				.WORD	-1		; MAINTANCE
    156	000064	177777 				.WORD	-1		; SET CHARACTERISTICS
    157	000066	177777 				.WORD	-1		; GET CHARACTERISTICS
    158	000070	177777 				.WORD	-1		; XON
    159	000072	177777 				.WORD	-1		; XOFF
    160	000074	001742'				.WORD	DPRNG		; LOOK FOR RING
    161	000076	001666'				.WORD	DPENB		; ENABLE LINE
    162	000100	001700'				.WORD	DPDIS		; DISABLE LINE
    163	000102	001710'				.WORD	DPMSN		; SENSE MODEM STATUS
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 7


    165					;+
    166					; **-$DUPRI-DUP11 RECEIVE INTERRUPT SERVICE ROUTINE
    167					;
    168					; THE DEVICE INTERRUPT IS VECTORED TO THE DEVICE LINE TABLE
    169					; BY THE HARDWARE AND THIS ROUTINE IS ENTERED BY A
    170					; 'JSR R5,$DUPRI' INSTRUCTION AT THE BEGINNING OF THE LINE
    171					; TABLE.
    172					;
    173					; INPUTS:
    174					;
    175					;	R5 = ADDRESS OF DEVICE LINE TABLE + 4
    176					;	STACK:
    177					;	0(SP) = SAVED R5
    178					;	2(SP) = INTERRUPTED BIAS
    179					;	4(SP) = INTERRUPTED PC
    180					;	6(SP) = INTERRUPTED PS
    181					;
    182					; OUTPUTS:
    183					;
    184					; ETC.
    185					;-
    186
    187	000104				$DUPRI::
    188	000104	010446 				MOV	R4,-(SP)	;;; SAVE R4
    189	000106	012504 				MOV	(R5)+,R4	;;; GET ADDRESS OF RECEIVER DATA BUFFER
    190	000110	011404 				MOV	(R4),R4		;;; GET CHARACTER AND FLAGS
    191	000112	100415 				BMI	DPRHO		;;; ANY ERROR IS RECEIVER OVERRUN
    192
    193						.IF DF	M$$MGE
    194
    195							.IF DF	R$$11D!I$$AS
    196
    197						MOV	KP.AR2,-(SP)	;;; SAVE CURRENT MAP
    198						MOV	(R5)+,KP.AR2	;;; MAP TO DATA BUFFER
    199
    200							.IFF
    201
    202	000114	016746 	172354 			MOV	KISAR6,-(SP)	;;; SAVE CURRENT MAP
    203	000120	012567 	172354 			MOV	(R5)+,KISAR6	;;; MAP TO DATA BUFFER
    204
    205							.ENDC
    206
    207						.IFTF
    208
    209	000124	110435 				MOVB	R4,@(R5)+	;;; STORE CHARACTER IN RECEIVE BUFFER
    210
    211						.IFT
    212
    213							.IF DF	R$$11D!I$$AS
    214
    215						MOV	(SP)+,KP.AR2	;;; RESTORE PREVIOUS MAPPING
    216
    217							.IFF
    218
    219	000126	012667 	172354 			MOV	(SP)+,KISAR6	;;; RESTORE PREVIOUS MAPPING
    220
    221							.ENDC
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 7-1


    222
    223						.ENDC
    224
    225	000132	005315 				DEC	(R5)		;;; DECREMENT REMAINING BYTE COUNT
    226	000134	001414 				BEQ	DPRCP		;;; IF EQ RECEIVE COMPLETE
    227	000136	005245 				INC	-(R5)		;;; ADVANCE BUFFER ADDRESS
    228	000140	012604 				MOV	(SP)+,R4	;;; RESTORE REGISTERS
    229	000142					$INTXT			;;; EXIT THE INTERRUPT
    230
    231					;
    232					; EXCEPTIONAL RECEIVE SERVICE ROUTINES
    233					;
    234					; HARDWARE OVERRUN
    235					;
    236						.ENABL	LSB
    237
    238	000146	062705 	000004 		DPRHO:	ADD	#<RCNT-RDBF-2>,R5 ;;; POINT TO COUNT CELL
    239	000152	012765 	100001 	000006 		MOV	#100001,RFLAG-RCNT(R5) ;;; SET FLAGS TO COMPLETE REQUEST AND
    240									;;; CLEAR RECEIVE ACTIVE ON EXIT
    241	000160	012765 	100004 	000012 		MOV	#CS.ERR+CS.ROV,RSTAT-RCNT(R5) ;;; SET OVERRUN STATUS
    242
    243					;
    244					; RECEIVE BYTE COUNT RUNOUT
    245					;
    246
    247	000166	010425 			DPRCP:	MOV	R4,(R5)+	;;; SAVE CRC FLAG AND POINT TO PRIORITY
    248	000170	016504 	177770 			MOV	RDBF-RPRI(R5),R4 ;;; GET RECEIVE DATA BUFFER ADDRESS
    249	000174	042744 	000100 			BIC	#RXINT,-(R4)	;;; CLEAR RECEIVER INTERRUPT ENABLE
    250	000200	012604 				MOV	(SP)+,R4	;;; RESTORE R4 SO '$INTSV' IS HAPPY
    251	000202					$INTSX			;;; DO A TRICKEY $INTSV (R5 PRESAVED BUT NOT R4)
    252	000206	010346 				MOV	R3,-(SP)	;;  SAVE AN ADDITIONAL REGISTER
    253	000210	005725 				TST	(R5)+		;;  POINT TO FLAGS WORD
    254	000212	006225 				ASR	(R5)+		;;  LOAD C-BIT FROM FLAGS (BIT 0)
    255	000214	103447 				BCS	20$		;;  IF CS DATA, POST COMPLETION
    256	000216	011504 				MOV	(R5),R4		;;  GET PRIMARY CCB ADDRESS
    257						.LIST MEB
    258	000220					$LIBCL	HDRA-RPRIM,R5,$DDHAR,SAV ;; CALL DDHAR THROUGH LINE TABLE
	000220	013746 	172354 			MOV	@#KISAR6,-(SP)
	000224	016537 	000060 	172354 		MOV	HDRA-RPRIM(R5),@#KISAR6
	000232	004737 	000000G			JSR	PC,@#$DDHAR
	000236	012637 	172354 			MOV	(SP)+,@#KISAR6
    259						.NLIST	MEB
    260	000242	006065 	177776 			ROR	-2(R5)		;;  SAVE 'FINAL SEEN' IN FLAGS (BIT 15 SET)
    261	000246	005703 				TST	R3		;;  EXAMINE BYTE COUNT FOR THIS MESSAGE
    262	000250	100420 				BMI	10$		;;  IF MI AN INVALID HEADER RECEIVED
    263	000252	001404 				BEQ	7$		;;  IF EQ SET TO RECEIVE REST OF HEADER
    264	000254	062703 	000002 			ADD	#2,R3		;;  ACCOUNT FOR BCC IN CURRENT COUNT
    265	000260	010365 	000004 			MOV	R3,RPCNT-RPRIM(R5) ;; SAVE DATA COUNT UNTIL HEADER CRC
    266									;;   IS CHECKED
    267	000264	012703 	000005 		7$:	MOV	#5,R3		;; GET REMAINING HEADER
    268	000270	005245 				INC	-(R5)		;;  MARK DATA IN PROGRESS IN FLAGS (BIT 0 SET)
    269	000272	060355 				ADD	R3,@-(R5)	;;  INCLUDE CURRENT COUNT IN TOTAL COUNT
    270	000274	062705 	177774 			ADD	#RCNT-RTHRD,R5	;;  POINT TO CURRENT COUNT
    271	000300	010315 				MOV	R3,(R5)		;;  SET UP CURRENT BYTE COUNT
    272	000302	005245 				INC	-(R5)		;;  MOVE BUFFER ADDRESS PAST BCC
    273
    274						.IF DF	M$$MGE
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 7-2


    275
    276	000304	016503 	177774 			MOV	-4(R5),R3	;;  GET ADDRESS OF RECEIVE DATA BUFFER
    277
    278						.IFF
    279
    280						MOV	-(R5),R3	;;  GET ADDRESS OF RECEIVE DATA BUFFER
    281
    282						.ENDC
    283
    284	000310	000463 				BR	REXT0		;;  FINISH IN COMMON CODE
    285
    286					;
    287					; INVALID HEADER RECEIVED
    288					;
    289
    290	000312	032703 	004000 		10$:	BIT	#CS.MTL,R3	;;  MESSAGE TO LONG ?
    291	000316	001035 				BNE	31$		;;  IF NE YES, POST COMPLETION
    292	000320	012504 				MOV	(R5)+,R4	;;  RECOVER PRIMARY CCB ADDRESS
    293	000322					CALL	BUFUSE		;;  SET UP THIS CCB AGAIN (CLEARS 'RSTAT')
    294	000326	016503 	177762 			MOV	RDBF-RPRIM(R5),R3 ;; SET POINTER TO REC. DAT. BUFF.
    295	000332	000456 				BR	40$		;;  CLEAR RECEIVE ACTIVE TO FORCE RESYNC
    296
    297					;
    298					; POST COMPLETION ON RECEIVE COMPLETE
    299					;
    300					;	R5 =  POINTS TO PRIMARY CCB ADDRESS
    301					;
    302
    303	000334	032765 	010000 	177770 	20$:	BIT	#CRC,RCNT-RPRIM(R5) ;;  IS CRC FLAG SET ?
    304	000342	001003 				BNE	25$		;;  IF NE, YES - CRC IS VALID
    305	000344	012703 	100400 			MOV	#CS.ERR+CS.DCR,R3 ;;  ELSE SET CRC ERROR STATUS FOR DLC
    306	000350	000420 				BR	31$		;; GO RETURN BUFFER
    307	000352	016565 	000004 	177770 	25$:	MOV	RPCNT-RPRIM(R5),RCNT-RPRIM(R5) ;; SET REMAINING COUNT
    308	000360	001413 				BEQ	30$		;; NONE SO END OF MESSAGE
    309	000362	066575 	000004 	177774 		ADD	RPCNT-RPRIM(R5),@RTHRD-RPRIM(R5) ;; SET TOTAL COUNT IN CCB
    310	000370	000261 				SEC			;; FORCE C BIT
    311	000372	006165 	177776 			ROL	RFLAG-RPRIM(R5)	;; PUT  Q SYN BACK & MARK NON HEADER
    312	000376	005265 	177766 			INC	RADD-RPRIM(R5)	;; INCLUDE LAST CHAR IN BUFFER
    313	000402	016503 	177762 			MOV	RDBF-RPRIM(R5),R3 ;; GET CSR FOR EXIT
    314	000406	000422 				BR	REXT		;; TAKE COMMON EXIT
    315	000410	005003 			30$:	CLR	R3		;; GET GOOD STATUS
    316	000412	012504 			31$:	MOV	(R5)+,R4	;;  GET PRIMARY CCB ADDRESS
    317	000414	051503 				BIS	(R5),R3		;;  PICK UP ADDITIONAL STATUS
    318					                                                                                ;BH0001
    319					; LOG ANY ABNORMALITY HERE                                                      ;BH0001
    320	000416	100006 				BPL	35$		; JUMP AHEAD IF NO ERROR                        ;BH0001
    321	000420	010546 				MOV	R5,-(SP)	; SAVE R5                                       ;BH0001
    322	000422	162705 	000040 			SUB	#RSTAT,R5	; POINT AT FIRST OF DLT                         ;BH0001
    323	000426					CALL	LOGGIT		; DO THE LOGGING                                ;BH0001
    324	000432	012605 				MOV	(SP)+,R5	; RESTORE R5                                    ;BH0001
    325	000434				35$:                                                                            ;BH0001
    326	000434					CALL	$DDRCP		;;  POST RECEIVE COMPLETION
    327	000440	016503 	177760 			MOV	RDBF-RSTAT(R5),R3 ;;  GET ADDRESS OF RECEIVE DATA BUFFER
    328	000444					CALL	BUFSET		;;  SET UP NEXT RECEIVE BUFFER
    329	000450	103405 				BCS	REXT1		;;  IF CS NO BUFFER AVAILABLE TURN OFF RECEIVER
    330	000452	001006 				BNE	40$		;;  IF NE CLEAR RECEIVE ACTIVE TO RESYNC
    331	000454	005065 	000004 		REXT:	CLR	RPCNT-RPRIM(R5)	;; RESET PARTIAL COUNT
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 7-3


    332	000460	052743 	000100 		REXT0:	BIS	#RXINT,-(R3)	;;  ENABLE RECEIVER INTERRUPTS
    333	000464	012603 			REXT1:	MOV	(SP)+,R3	;;  RESTORE R3
    334	000466					RETURN			;;  RETURN TO SYSTEM
    335
    336	000470				40$:				;;  REF LABEL
    337					;
    338					; CLEAR RECEIVE ACTIVE TO FORCE RESYNC
    339					;
    340					;	R3 = ADDRESS OF RECEIVE DAT BUFFER
    341					;	R5 = ADDRESS OF 'RPRIM'
    342					;
    343
    344	000470	005045 			DPCRA:	CLR	-(R5)		;;  CLEAR FLAGS WORD
    345	000472	042743 	000020 			BIC	#RCVEN,-(R3)	;;  CLEAR RECEIVE ACTIVE FOR RESYNC
    346	000476	005065 	000006 			CLR	RPCNT-RFLAG(R5)	;; RESET PARTIAL COUNT
    347	000502	052765 	010000 	000004 		BIS	#CS.RSN,RSTAT-RFLAG(R5) ;;  INDICATE A RESYNC
    348	000510	052713 	000522 			BIS	#RINIT,(R3)	;;  ENABLE RECEIVER
    349	000514	000763 				BR	REXT1		;;  FINISH IN COMMON CODE
    350
    351						.DSABL	LSB
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 8


    353					;+
    354					; **-$DUPTI-DUP11 TRANSMIT INTERRUPT SERVICE
    355					;
    356					;
    357					; THIS ROUTINE IS ENTERED ON A TRANSMITTER INTERRRUPT VIA
    358					; A 'JSR R5,DUPTI' WITH R5 CONTAINING THE ADDRESS OF THE
    359					; DEVICE LINE TABLE OFFSET BY 'TCSR'.
    360					;
    361					; INPUTS:
    362					;
    363					;	R5 = ADDRESS OF DEVICE LINE TABLE + 'TCSR'
    364					;	STACK CONTAINS:
    365					;	0(SP) = INTERRUPTED R5
    366					;	2(SP) = INTERRUPTED BIAS
    367					;	4(SP) = INTERRUPTED PC
    368					;	6(SP) = INTERRUPTED PS
    369					;
    370					; OUTPUTS:
    371					;
    372					; ETC.
    373					;-
    374						.ENABL	LSB
    375
    376	000516				$DUPTI::
    377	000516	010446 				MOV	R4,-(SP)	;;; SAVE R4
    378	000520	012504 				MOV	(R5)+,R4	;;; GET TRANSMITTER CSR ADDRESS
    379	000522	005724 				TST	(R4)+		;;; TEST FOR UNDERRUN
    380	000524	100416 				BMI	10$		;;; IF MI, UNDERRUN - WAIT FOR TIMEOUT
    381	000526	005365 	000004 			DEC	TCNT-TCSR-2(R5)	;;; DECEREMENT COUNT
    382	000532	001421 				BEQ	20$		;;; IF EQ, BYTE COUNT RUNOUT
    383
    384						.IF DF	M$$MGE
    385
    386							.IF DF	R$$11D!I$$AS
    387
    388						MOV	KP.AR2,-(SP)	;;; SAVE CURRENT MAPPING
    389						MOV	(R5)+,KP.AR2	;;; MAP TO DATA BUFFER
    390
    391							.IFF
    392
    393	000534	016746 	172354 			MOV	KISAR6,-(SP)	;;; SAVE CURRENT MAPPING
    394	000540	012567 	172354 			MOV	(R5)+,KISAR6	;;; MAP TO DATA BUFFER
    395
    396							.ENDC
    397
    398						.IFTF
    399
    400	000544	113514 				MOVB	@(R5)+,(R4)	;;; OUTPUT A CHARACTER
    401
    402						.IFT
    403
    404							.IF DF	R$$11D!I$$AS
    405
    406						MOV	(SP)+,KP.AR2	;;; RESTORE PREVIOUS MAPPING
    407
    408							.IFF
    409
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 8-1


    410	000546	012667 	172354 			MOV	(SP)+,KISAR6	;;; RESTORE PREVIOUS MAPPING
    411
    412							.ENDC
    413
    414						.IFTF
    415
    416	000552	005245 				INC	-(R5)		;;; UPDATE BUFFER ADDRESS
    417	000554	012604 				MOV	(SP)+,R4	;;; RESTORE R4
    418					;	MOV	(SP)+,R5	;;; RESTORE R5
    419					;	RTI			;;; EXIT INTERRUPT
    420	000556					$INTXT
    421
    422					;
    423					; TRANSMITTER UNDERRUN
    424					;
    425					; DISABLE TRANSMITTER INTERRUPTS AND WAIT FOR A TIMEOUT
    426					;
    427
    428	000562	152764 	000001 	000001 	10$:	BISB	#TSOM/400,1(R4)	;;; CLEAR UNDERRUN BIT
    429	000570	012765 	001110'	000010 		MOV	#TUNST,TSTAT-TCSR-2(R5) ;;; SET STATE TO DISABLE TRANSMITTER
    430
    431					;
    432					; TRANSMIT BYTE COUNT RUNOUT
    433					;
    434					; OUTPUT TO STATE PROCESSING ROUTINES:
    435					;
    436					;	R3 = ADDRESS OF TRANSMITTER CSR
    437					;	R5 = ADDRESS OF THREAD WORD CELL
    438					;
    439
    440	000576	062705 	000006 		20$:	ADD	#TPRI-TCSR-2,R5	;;; POINT TO PRIORITY DATA
    441	000602	042744 	000100 			BIC	#TXINT,-(R4)	;;; CLEAR INTERRUPT ENABLE
    442	000606	012604 				MOV	(SP)+,R4	;;; RESTORE R4 SO '$INTSV' IS HAPPY
    443	000610					$INTSX			;SAVE WITH R5 ON STACK BUT NOT R4
    444
    445						.IFT
    446
    447							.IF DF	R$$11D!I$$AS
    448
    449						MOV	#KP.AR2,-(SP)	;;; THIS ENTRY WAS FROM KERNEL MODE
    450						MOV	KP.AR2,-(SP)	;;; SAVE CURRENT MAPPING
    451
    452							.IFF
    453
    454	000614	016746 	172354 			MOV	KISAR6,-(SP)	;;  SAVE CURRENT MAPPING
    455
    456							.ENDC
    457
    458						.IFTF
    459
    460	000620	010346 				MOV	R3,-(SP)	;;  SAVE AN ADDITIONAL REGISTER
    461	000622	016503 	177766 			MOV	TCSR-TSTAT(R5),R3 ;;  GET TRANSMITTER CSR ADDRESS
    462	000626					CALLR	@(R5)+		;;  DISPATCH TO PROCESSING ROUTINE
    463
    464						.DSABL	LSB
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 9


    466					;+
    467					; **-DPASX-ASSIGN A TRANSMIT BUFFER
    468					;
    469					;
    470					; THIS ROUTINE IS ENTERED VIA THE MATRIX SWITCH TO
    471					; QUEUE A CCB FOR TRANSMISSION.
    472					;
    473					; INPUTS:
    474					;
    475					;	R4 = ADDRESS OF CCB TO TRANSMIT
    476					;	R5 = ADDRESS OF DEVICE LINE TABLE
    477					;
    478					; OUTPUTS:
    479					;
    480					;	IF THE TRANSMITTER IS IDLE, TRANSMISSION IS
    481					;	INITIATED; OTHERWISE, THE CCB (OR CHAIN) IS QUEUED TO
    482					;	THE END OF THE SECONDARY CHAIN.
    483					;
    484					; REGISTERS MODIFIED:
    485					;
    486					;	R3, R4, AND R5
    487					;-
    488
    489	000630				DPASX:
    490	000630	016503 	000062 			MOV	TCSR(R5),R3	; GET TRANSMITTER CSR ADDRESS
    491	000634	042713 	000100 			BIC	#TXINT,(R3)	; DISABLE TRANSMITTER INTERRUPTS
    492	000640	062705 	000100 			ADD	#TPRIM,R5	; POINT TO PRIMARY CELL
    493
    494						.IFT
    495
    496							.IF DF	R$$11D!I$$AS
    497
    498						MOV	#UPAR0+4,-(SP)	; SHOW ENTRY WAS FROM USER MODE
    499						MOV	UPAR0+4,-(SP)	; SAVE CURRENT MAPPING
    500
    501							.IFF
    502
    503	000644	016746 	172354 			MOV	KISAR6,-(SP)	; SAVE CURRENT MAPPING
    504
    505							.ENDC
    506
    507						.IFTF
    508
    509	000650	010346 				MOV	R3,-(SP)	; SAVE R3
    510	000652	005725 				TST	(R5)+		; PRIMARY ASSIGNED ?
    511	000654	001010 				BNE	10$		; IF NE, YES - QUEUE TO SECONDARY CHAIN
    512	000656					CALL	TBSET		; SET UP PRIMARY
    513	000662	032713 	001000 			BIT	#TXACT,(R3)	; TRANSMITTER ACTIVE ?
    514	000666	001411 				BEQ	STSTR		; IF EQ, NO - START IMMEDIATELY
    515	000670	012745 	000712'			MOV	#STSTR,-(R5)	; SET STATE FOR STARTUP
    516	000674	000467 				BR	WAITI		; WAIT FOR INTERRUPT
    517
    518	000676	010446 			10$:	MOV	R4,-(SP)	; SAVE POINTER TO FIRST CCB
    519	000700	010504 			20$:	MOV	R5,R4		; COPY POINTER TO CCB
    520	000702	011405 				MOV	(R4),R5		; GET NEXT CCB
    521	000704	001375 				BNE	20$		; IF NE, KEEP GOING
    522	000706	012614 				MOV	(SP)+,(R4)	; LINK NEW CCB CHAIN TO LAST CCB
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 9-1


    523	000710	000551 				BR	TEXT2		; FINISH IN COMMON CODE
    524
    525					;+
    526					; **-STSTR-STARTUP STATE PROCESSING
    527					;
    528					;-
    529
    530	000712	052763 	000004 	177774 	STSTR:	BIS	#RTS,-4(R3)	; ASSERT REQUEST TO SEND
    531	000720	052713 	000020 			BIS	#SEND,(R3)	; ENABLE TRANSMITTER
    532	000724	116565 	177703 	177702 		MOVB	TIMS-TTHRD(R5),TIME-TTHRD(R5) ; START TIMER
    533
    534					;+
    535					; **-STCTS-WAIT FOR CLEAR TO SEND STATE PROCESSING
    536					;
    537					;-
    538
    539	000732	032763 	020000 	177774 	STCTS:	BIT	#CTS,-4(R3)	; IS CLEAR TO SEND UP ?
    540	000740	001007 				BNE	STSYN		; IF NE, YES - START SYNC TRAIN
    541	000742	012745 	000732'			MOV	#STCTS,-(R5)	; SET STATE FOR CTS
    542	000746	012704 	000000G			MOV	#$PADB,R4	; SET ADDRESS OF PAD BUFFER
    543	000752	012746 	000400 			MOV	#TSOM,-(SP)	; SET TSOM, CLEAR TEOM
    544	000756	000510 				BR	TEXT1		; FINISH IN COMMON CODE
    545
    546					;+
    547					; **-STSYN-SYNC TRAIN REQUIRED STATE PROCESSING
    548					;
    549					;-
    550
    551	000760	012745 	001132'		STSYN:	MOV	#STDAT,-(R5)	; SET STATE FOR DATA
    552	000764	012704 	000000G			MOV	#$SYNB,R4	; SET ADDRESS OF SYNC BUFFER
    553	000770	012746 	000400 			MOV	#TSOM,-(SP)	; SET TSOM, CLEAR TEOM
    554	000774	000476 				BR	TEXT0		; FINISH IN COMMON CODE
    555
    556					;+
    557					; **-STCRC-SEND CRC STATE PROCESSING
    558					;
    559					;-
    560						.ENABL	LSB
    561
    562	000776	052763 	001000 	000002 	STCRC:	BIS	#TEOM,2(R3)	; SEND CRC
    563	001004					CALL	TPOST		; POST COMPLETION AND SET UP NEXT CCB
    564	001010	001011 				BNE	10$		; IF NE, NOTHING MORE TO SEND
    565	001012	012745 	001132'			MOV	#STDAT,-(R5)	; ASSUME NEXT STATE IS SEND SYNC'S
    566	001016	032764 	000040 	000006 		BIT	#CF.SYN,C.FLG-C.BUF(R4) ; ARE SYNC'S REQUIRED ?
    567	001024	001413 				BEQ	20$		; IF EQ, NO - LEAVE ASSUMED STATE
    568	001026	012715 	000760'			MOV	#STSYN,(R5)	; ELSE CHANGE STATE TO SEND SYNC'S
    569	001032	000410 				BR	20$		; WAIT FOR CRC TO BE SENT
    570
    571	001034	012745 	001072'		10$:	MOV	#STIDL,-(R5)	; SET STATE TO IDLE
    572	001040	042713 	000020 			BIC	#SEND,(R3)	; SHUT DOWN TRANSMITTER
    573	001044	032765 	000001 	000014 		BIT	#1,DUPCH-TSTAT(R5) ;FULL OR HALF DUPLEX
    574	001052	001413 				BEQ	30$		; IF EQ, FULL DUPLEX - EXIT
    575	001054				20$:				;
    576
    577					;+
    578					; **-WAITI-WAIT FOR INTERRUPT
    579					;
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 9-2


    580					;-
    581
    582	001054	012765 	000001 	177774 	WAITI:	MOV	#1,TCNT-TSTAT(R5) ; WAIT FOR ONE INTERRUPT
    583	001062	116565 	177705 	177704 		MOVB	TIMS-TSTAT(R5),TIME-TSTAT(R5) ; START TIMER
    584	001070	000461 				BR	TEXT2		; FINISH IN COMMON CODE
    585
    586					;+
    587					; **-STIDL-IDLE STATE PROCESSING
    588					;
    589					;-
    590
    591	001072	042763 	000004 	177774 	STIDL:	BIC	#RTS,-4(R3)	; DROP REQUEST TO SEND
    592	001100	005745 				TST	-(R5)		;
    593	001102	105065 	177704 		30$:	CLRB	TIME-TSTAT(R5)	; CLEAR TIMER
    594	001106	000454 				BR	TEXT3		; FINISH IN COMMON CODE
    595
    596						.DSABL	LSB
    597					;+
    598					; **-TUNST-TRANSMIT DATA UNDER RUN STATE
    599					;
    600					;	RETURN ALL TRANSMIT BUFFERS TO HIGHER LEVEL
    601					;-
    602	001110	062705 	177702 		TUNST:	ADD	#-TTHRD,R5	;;TIMEOUT EXPECTS DDM LINE TABLE POINTER
    603	001114	105015 				CLRB	(R5)			;;RESET TIMER
    604	001116					CALL	DPTIM			;;FAKE A TIMEOUT TO RETURN BUFFERS
    605	001122	012765 	001072'	000006 		MOV	#STIDL,TSEC-TSTAT(R5)	;;SET STATE TO IDLE
    606	001130	000443 				BR	TEXT3			;;TAKE COMMON EXIT
    607
    608
    609					;+
    610					; **-STDAT-DATA STATE PROCESSING
    611					;
    612					;-
    613
    614	001132	011504 			STDAT:	MOV	(R5),R4		; GET ADDRESS OF FLAGS WORD FROM THREAD
    615	001134	062715 	000010 			ADD	#C.FLG-C.STS,(R5) ; UPDATE THREAD POINTER
    616	001140	005724 				TST	(R4)+		; LAST BUFFER THIS CCB ? (BIT 15 SET)
    617	001142	100002 				BPL	10$		; IF PL, NO
    618	001144					CALL	TPOST		; POST COMPLETION AND SET UP NEXT CCB
    619	001150	012745 	001132'		10$:	MOV	#STDAT,-(R5)	; ASSUME DATA CONTINUES
    620	001154	032764 	000004 	000006 		BIT	#CF.EOM,C.FLG-C.BUF(R4) ; SEND CRC FOLLOWING THIS BUFFER ?
    621	001162	001402 				BEQ	20$		; IF EQ, NO - LEAVE ASSUMED STATE
    622	001164	012715 	000776'			MOV	#STCRC,(R5)	; ELSE CHANGE STATE FOR CRC TO BE SENT
    623	001170	005046 			20$:	CLR	-(SP)		; CLEAR TSOM, CLEAR TEOM
    624
    625					;+
    626					; **-TEXT0-COMMON EXIT ROUTINES
    627					; **-TEXT1-
    628					; **-TEXT2-
    629					; **-TEXT3-
    630					;
    631					;-
    632
    633	001172	116565 	177705 	177704 	TEXT0:	MOVB	TIMS-TSTAT(R5),TIME-TSTAT(R5) ; START TIMER
    634	001200	062705 	177770 		TEXT1:	ADD	#TCSR-TSTAT+2,R5 ; POINT TO CURRENT BUFFER CELL
    635
    636						.IFT
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 9-3


    637
    638	001204	012425 				MOV	(R4)+,(R5)+	; COPY RELOCATION BIAS
    639
    640						.IFF
    641
    642						TST	(R4)+		; SKIP OVER RELOCATION BIAS IN CCB
    643
    644						.IFTF
    645
    646	001206	012425 				MOV	(R4)+,(R5)+	; COPY VIRTUAL ADDRESS
    647	001210	011415 				MOV	(R4),(R5)	;   AND THE BYTE  COUNT
    648
    649						.IFT
    650
    651							.IF	DF,R$$11D!I$$AS
    652
    653						MOV	-4(R5),@6(SP)	; MAP TO DATA BUFFER (USER/KERNEL MODE)
    654
    655							.IFF
    656
    657	001212	016567 	177774 	172354 		MOV	-4(R5),KISAR6	; MAP TO DATA BUFFER
    658
    659							.ENDC
    660
    661						.IFTF
    662
    663	001220	157516 	177776 			BISB	@-2(R5),(SP)	; BUILD CHARACTER TO OUTPUT
    664	001224	005265 	177776 			INC	-2(R5)		; UPDATE VIRTUAL ADDRESS
    665	001230	012663 	000002 			MOV	(SP)+,2(R3)	; OUTPUT CHARACTER AND FLAGS
    666	001234	052713 	000100 		TEXT2:	BIS	#TXINT,(R3)	; ENABLE TRANSMITTER INTERRUPTS
    667	001240	012603 			TEXT3:	MOV	(SP)+,R3	; RESTORE R3
    668						.IFT
    669
    670							.IF DF	R$$11D!I$$AS
    671
    672						MOV	(SP)+,@(SP)+	; RESTORE PREVIOUS MAPPING (KERNEL/USER)
    673
    674							.IFF
    675
    676	001242	012667 	172354 			MOV	(SP)+,KISAR6	; RESTORE PREVIOUS MAPPING
    677
    678							.ENDC
    679
    680						.ENDC
    681
    682	001246	000261 				SEC			; SET C-BIT ASYNCHRONOUS COMPLETION
    683	001250					RETURN			; RETURN TO CALLER
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 10


    685					;+
    686					; **-TPOST-POST COMPLETION ON A CCB AND SETUP NEXT CCB
    687					;
    688					; INPUTS:
    689					;
    690					;	R5 = ADDRESS OF THREAD CELL
    691					;
    692					; OUTPUTS:
    693					;
    694					;	IF NE:
    695					;	R3 = ADDRESS OF TRANSMITTER DATA BUFFER
    696					;	R4 = ZERO
    697					;	R5 = ADDRESS OF THREAD POINTER CELL
    698					;
    699					;	IF EQ:
    700					;	R3 = ADDRESS OF TRANSMITTER DATA BUFFER
    701					;	R4 = ADDRESS OF FIRST BUFFER DESCRIPTOR
    702					;	R5 = ADDRESS OF THREAD POINTER CELL
    703					;-
    704
    705	001252	005003 			TPOST:	CLR	R3		; INDICATE NORMAL STATUS, NO ERRORS
    706	001254	005725 				TST	(R5)+		; POINT TO PRIMARY CELL
    707	001256	011504 				MOV	(R5),R4		; GET PRIMARY CCB ADDRESS
    708	001260	005025 				CLR	(R5)+		; CLEAR PRIMARY CELL
    709	001262					CALL	$DDXMP		; POST TRANSMIT COMPLETION
    710	001266	016503 	177760 			MOV	TCSR-TSEC(R5),R3 ; RECOVER TRANSMIT CSR ADDRESS
    711	001272	011504 				MOV	(R5),R4		; GET SECONDARY CCB ADDRESS (NEXT CCB)
    712	001274	001003 				BNE	TBSET		; IF NE, NO SECONDARY CCB TO SEND
    713	001276	062705 	177774 			ADD	#TTHRD-TSEC,R5	; POINT TO THREAD WORD (SET NOT EQUAL)
    714	001302					RETURN
    715
    716
    717					;+
    718					; **-TBSET-SET UP NEXT CCB
    719					;
    720					; INPUTS:
    721					;
    722					;	R4 = ADDRESS OF FIRST CCB IN A CHAIN
    723					;	R5 = ADDRESS OF SECONDARY CELL
    724					;
    725					; OUTPUTS:
    726					;
    727					;	R4 = ADDRESS OF FIRST BUFFER DESCRIPTOR
    728					;	R5 = ADDRESS OF THREAD POINTER CELL
    729					;-
    730
    731	001304	011415 			TBSET:	MOV	(R4),(R5)	; SET ADDRESS OF NEW SECONDARY IF ANY
    732	001306	005014 				CLR	(R4)		; CLEAR NEXT CCB POINTER IN NEW PRIMARY CCB
    733	001310	010445 				MOV	R4,-(R5)	; SET AS PRIMARY CCB
    734	001312	062704 	000012 			ADD	#C.STS,R4	; ADDRESS OF FIRST FLAGS WORD
    735	001316	010445 				MOV	R4,-(R5)	; SET ADDRESS AS THREAD POINTER
    736	001320	005024 				CLR	(R4)+		; POINT TO ADDRESS OF DATA BUFFER (SET EQ)
    737	001322					RETURN 			; RETURN TO CALLER
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 11


    739					;+
    740					; **-DPASR-ASSIGN A RECEIVE BUFFER
    741					;
    742					; THIS ROUTINE IS CALLED BY THE BUFFER POOL MANAGER WHEN
    743					; A BUFFER ALLOCATION REQUEST CAN BE SATISFIED.
    744					;
    745					; INPUTS:
    746					;
    747					;	R4 = ADDRESS OF CCB TO ASSIGN
    748					;	R5 = ADDRESS OF DEVICE LINE TABLE
    749					;
    750					; OUTPUTS:
    751					;
    752					;	THE BUFFER DESCRIBED BY THE CCB IS ASSIGNED TO THE
    753					;	RECEIVER.
    754					;
    755					; REGISTERS MODIFIED:
    756					;
    757					;	R4 AND R5
    758					;-
    759
    760	001324	062705 	000040 		DPASR:	ADD	#RSTAT,R5	; POINT TO STATUS WORD
    761	001330	012715 	000200 			MOV	#CS.BUF,(R5)	; MARK A PREVIOUS BUFFER ALLOCATION FAILURE
    762
    763					;+
    764					; **-DPAS1-REASSIGN AN EXISTING BUFFER
    765					;
    766					; THIS ROUTINE IS CALLED TO SET UP AN EXISTING RECEIVE BUFFER.  THE STATUS
    767					; IN 'RSTAT' IS SET UP PRIOR TO THE CALL.
    768					;
    769					;-
    770
    771	001334				DPAS1:	CALL	BUFALT		; ASSIGN THIS CCB AS PRIMARY
    772	001340	010346 				MOV	R3,-(SP)	; SAVE R3
    773	001342					CALLR	DPCRA		; START RECEIVER AND EXIT
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 12


    775					;+
    776					; **-DPKIL-KILL I/O
    777					;
    778					; INPUTS:
    779					;
    780					;	R3 = SUBFUNCTION CODE
    781					;	R5 = ADDRESS OF DEVICE LINE TABLE
    782					;
    783					; OUTPUTS:
    784					;
    785					;	AS DESCRIBED
    786					;
    787					;  REGISTERS MODIFIED:
    788					;
    789					;	R3, R4, AND R5
    790					;-
    791
    792	001346	122703 	000002 		DPKIL:	CMPB	#FS.CRA/400,R3	; KILL RECEIVER (RESYNC) ?
    793	001352	100403 				BMI	10$		; NO - TRANSMIT KILL
    794	001354	001425 				BEQ	20$		; YES - GO KILL RECEIVER
    795	001356					CALL	20$		; KILL RECIEVER AND TRANSMITTER
    796
    797	001362	000261 			10$:	SEC			;ASSUME A ASYNCH. COMPLETION
    798	001364					INHIB$			;DONT ALLOW INTERRUPT- AVOID RACE WITH TRANSMIT
    799									; DONE INTERRUPT
    800	001376	005765 	000100 			TST	TPRIM(R5)	;IS A TRANSMIT ACTIVE
    801	001402	001003 				BNE	12$		;YES
    802	001404	042716 	000001 			BIC	#1,(SP)		;CLEAR C BIT ASSUME A SYNCH. COMPLETION
    803	001410	000404 				BR	15$		;EXIT
    804
    805	001412	005075 	000062 		12$:	CLR	@TCSR(R5)	; DISABLE XMTER - LET TIMER FLUSH TRANSMITTER
    806	001416	010465 	000104 			MOV	R4,KICCB(R5)	; SAVE THE CALLING CCB
    807	001422				15$:	ENABL$			;ALLOW INTERRUPTS
    808	001426					RETURN			; RETURN TO CALLER
    809
    810	001430	010446 			20$:	MOV	R4,-(SP)	; SAVE THE CCB ADDRESS
    811	001432	016503 	000020 			MOV	RDBF(R5),R3	; GET RECEIVER DATA BUFFER ADDRESS
    812	001436	042763 	000100 	177776 		BIC	#RXINT,-2(R3)	; DISABLE RECEIVER INTERRUPTS
    813	001444	062705 	000036 			ADD	#RPRIM,R5	; POINT TO PRIMARY CCB ADDRESS
    814	001450	012504 				MOV	(R5)+,R4	; USE CURRENT BUFFER
    815	001452	001402 				BEQ	30$		; IF EQ, NO CURRENT BUFFER
    816	001454					CALL	DPAS1		; SET UP CURRENT RECEIVE BUFFER AGAIN
    817	001460	012604 			30$:	MOV	(SP)+,R4	; RESTORE THE CCB ADDRESS
    818	001462	000241 				CLC			; CLEAR C-BIT SYNCHRONOUS COMPLETION
    819	001464					RETURN			; RETURN TO CALLER
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 13


    821					;+
    822					; **-DPCTL-CONTROL FUNCTION DISPATCH
    823					;
    824					;
    825					; INPUTS:
    826					;
    827					;	R3 = SUBFUNCTTION  CODE
    828					;	R4 = ADDRESS OF CCB (OPTTIONAL)
    829					;	R5 = ADDRESS OF DEVICE LINE TABLE
    830					;
    831					; OUTPUTS:
    832					;	DISPATCHES THE PROPER SUBFUNCTION (NO RETURN)
    833					;
    834					;
    835					;-
    836
    837	001466				DPCTL:	CALLR	@CTDSP(R3)	; DISPATCH CONTROL FUNCTION
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 14


    839					;+
    840					; **-DPSTR-DEVICE START-UP
    841					;
    842					; THIS ROUTINE IS CALLED TO ACTIVATE THE DEVICE.
    843					;
    844					;-
    845
    846	001472	010446 			DPSTR:	MOV	R4,-(SP)	; SAVE THE CALLING CCB
    847	001474	016503 	000020 			MOV	RDBF(R5),R3	; GET RECEIVER DATA BUFFER ADDRESS
    848	001500	012713 	100000G			MOV	#$SYNC+INPRM,(R3) ; SET INITIAL PARAMETERS
    849	001504	005743 				TST	-(R3)		; POINT TO RECEIVER CSR
    850	001506	062705 	000040 			ADD	#RSTAT,R5	; POINT TO STATUS WORD
    851	001512					CALL	BUFSET		; ASSIGN A PRIMARY CCB (AND BUFFER)
    852	001516	103404 				BCS	20$		; IF CS GO TO TRANSMITTER
    853	001520	005065 	177776 			CLR	-2(R5)		; CLEAR THE FLAGS WORD
    854	001524	012713 	000522 			MOV	#RINIT,(R3)	; INITIALIZE RECEIVER
    855	001530	012763 	000010 	000004 	20$:	MOV	#TINIT,4(R3)	; TURN ON TRANSMITTER
    856	001536	116565 	000055 	177743 		MOVB	DUPCH+3-RPRIM(R5),TIMS-RPRIM(R5) ;SET DDM TIME INTERVAL
    857	001544	032765 	000001 	000052 		BIT	#1,DUPCH-RPRIM(R5); HALF DUPLEX
    858	001552	001005 				BNE	30$		; IF NE YES, DONT FORCE FD MODE
    859	001554	052713 	000004 			BIS	#RTS,(R3)	; ASSERT REQUEST TO SEND
    860	001560	042763 	000010 	000004 		BIC	#TINIT,4(R3)	; INDICATE FULL DUPLEX
    861	001566	012604 			30$:	MOV	(SP)+,R4	; RESTORE THE CALLING CCB
    862	001570	000241 				CLC			; CLEAR C-BIT SYNCHRONOUS COMPLETION
    863	001572					RETURN			; RETURN
    864
    865					;+
    866					; **-DPSTP-STOP DEVICE
    867					;
    868					; RETURN OUTSTANDING BUFFERS AND CLEAR TIMERS
    869					;-
    870
    871	001574	010446 			DPSTP:	MOV	R4,-(SP)	; SAVE THE CALLING CCB
    872	001576	016503 	000020 			MOV	RDBF(R5),R3	; GET RECEIVE DATA BUFFER ADDRESS
    873	001602	012743 	000002 			MOV	#DTR,-(R3)	; DISABLE RECEIVER - LEAVE DTR UP
    874	001606	005063 	000004 			CLR	4(R3)		; DISABLE TRANSMITTER
    875	001612	016504 	000036 			MOV	RPRIM(R5),R4	; GET PRIMARY RECEIVER CCB
    876	001616	001402 				BEQ	10$		; IF EQ, NONE ASSIGNED
    877	001620					CALL	$RDBRT		; RETURN BUFFER TO THE POOL
    878	001624	005065 	000036 		10$:	CLR	RPRIM(R5)	; CLEAR PRIMARY POINTER
    879	001630	016504 	000106 			MOV	LINE(R5),R4	; SET SYSTEM LINE NUMBER
    880	001634					CALL	$RDBQP		; REMOVE ANY WAIT REQUESTS
    881	001640	012604 				MOV	(SP)+,R4	; RESTORE THE SAVED CCB
    882	001642	005765 	000100 			TST	TPRIM(R5)	; IS ANYTHING ACTIVE
    883	001646	001003 				BNE	20$		; YES, SO SAVE FOR TIMEOUT
    884	001650					CALL	$DDCCP		; NO, SO GIVE THE COMPLETION NOW
    885	001654	000402 				BR	30$		; AND EXIT
    886
    887	001656	010465 	000104 		20$:	MOV	R4,KICCB(R5)	; SAVE THE CCB FOR LATER
    888	001662	000261 			30$:	SEC			; INDICATE ASYNCH
    889	001664					RETURN			; AND EXIT
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 16


    892					;+
    893					; **-DPENB - ENABLE LINE
    894					; **-DPDIS - DISABLE LINE
    895					; **-DPRNG - LOOK FOR RING
    896					; **-DPMSN - SENSE MODEM STATUS
    897					;
    898					;-
    899						.ENABL	LSB
    900
    901	001666	016503 	000020 		DPENB:	MOV	RDBF(R5),R3	; GET ADDRESS OF RECEIVER CSR +2
    902	001672	012743 	000002 			MOV	#DTR,-(R3)	; SET DATA TERMINAL READY
    903	001676	000421 				BR	15$		; JOIN COMMON CODE
    904
    905	001700	016503 	000020 		DPDIS:	MOV	RDBF(R5),R3	; GET ADDRESS OF RECEIVER CSR +2
    906	001704	005043 				CLR	-(R3)		; DISABLE RECEIVER AND TURN DTR OFF
    907	001706	000415 				BR	15$		; JOIN COMMON CODE
    908
    909	001710	005004 			DPMSN:	CLR	R4		;
    910	001712	016503 	000020 			MOV	RDBF(R5),R3	; GET ADDRESS OF RECEIVER CSR +2
    911	001716	032743 	001000 			BIT	#DSR,-(R3)	; IS DSR SET?
    912	001722	001402 				BEQ	10$		; NO
    913	001724	052704 	000002 			BIS	#MC.DSR,R4	; IF SO SET INDICATOR IN R4
    914	001730	032713 	040000 		10$:	BIT	#RING,@R3	; IS RING  SET?
    915	001734	001402 				BEQ	15$		; NO
    916	001736	052704 	000004 			BIS	#MC.RNG,R4	; IF SO SET INDICATOR IN R4
    917
    918	001742				DPRNG:
    919	001742	000241 			15$:	CLC			; CLEAR C-BIT SYNCHRONOUS COMPLETION
    920	001744					RETURN			; RETURN
    921
    922						.DSABL	LSB
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 17


    924					;+
    925					; **-DPTIM-TIMEOUT PROCESSING
    926					;
    927					;
    928					; THIS ROUTINE IS ENTERED WHEN A TIMEOUT OCCURS ON A TRANSMIT
    929					; MESSAGE.  THE TRANSMITTER IS DISABLED AND ALL OUTSTANDING
    930					; MESSAGES ARE RETURNED WITH A TIMEOUT ERROR
    931					;
    932					; INPUTS:
    933					;
    934					;	R5 = ADDRESS OF DEVICE LINE TABLE
    935					;
    936					;
    937					;
    938					;-
    939
    940	001746	016503 	000062 		DPTIM:	MOV	TCSR(R5),R3	; GET TRANSMITTER CSR ADDRESS
    941	001752	042763 	001400 	000002 		BIC	#TSOM+TEOM,2(R3) ; CLEAR TRANSMITTER FLAGS
    942	001760	042713 	000120 			BIC	#TXINT!SEND,(R3) ; DISABLE TRANSMITTER
    943	001764	062705 	000100 			ADD	#TPRIM,R5	; POINT TO PRIMARY POINTER
    944	001770	012504 				MOV	(R5)+,R4	; GET PRIMARY CCB ADDRESS
    945	001772	001422 				BEQ	20$		; IF EQ, NOTHING ACTIVE
    946	001774	012703 	120000 			MOV	#CS.ERR+CS.TMO,R3 ; SET TIMEOUT ERROR
    947	002000	162705 	000102 			SUB	#TSEC,R5	; POINT R5 AT FIRST OF LIST FOR LOGGING         ;BH0003
    948	002004					CALL	LOGGIT		; DO THE LOGGING                                ;BH0003
    949	002010	062705 	000102 			ADD	#TSEC,R5	; PUT R5 BACK WHERE FOLLOWING CODE WANTS IT     ;BH0003
    950	002014	011514 				MOV	(R5),(R4)	; LINK ANY SECONDARIES TO PRIMARY
    951	002016	005015 				CLR	(R5)		; CLEAR SECONDARY POINTER
    952	002020	005065 	177776 			CLR	TPRIM-TSEC(R5)	; CLEAR PRIMARY POINTER
    953	002024	011446 			10$:	MOV	(R4),-(SP)	; SAVE POINTER TO NEXT CCB
    954	002026	005014 				CLR	(R4)		; CLEAR THE LINK WORD
    955	002030					CALL	$DDXMP		; POST COMPLETION
    956	002034	012604 				MOV	(SP)+,R4	; GET ADDRESS OF NEXT CCB
    957	002036	001372 				BNE	10$		; IF NE, KEEP GOING
    958	002040	016504 	000002 		20$:	MOV	KICCB-TSEC(R5),R4 ; GET THE CCB FOR THE KILL
    959	002044	001413 				BEQ	100$		; NONE SO JUST EXIT
    960	002046	005065 	000002 			CLR	KICCB-TSEC(R5)	; CLEAR THE POINTER
    961	002052	122764 	000004 	000010 		CMPB	#FC.KIL,C.FNC(R4) ; IS THIS A KILL OR A CONTROL
    962	002060	001003 				BNE	30$		; CONTROL
    963	002062					CALL	$DDKCP		; AND RETURN A COMPLETION
    964	002066	000402 				BR	100$		; AND EXIT
    965
    966	002070				30$:	CALL	$DDCCP		; RETURN A CONTROL COMPLETE
    967	002074				100$:	RETURN			; RETURN TO CALLER
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 18


    969					;+                                                                              ;BH0001
    970					; ** - LOGGIT - ERROR LOGGING                                                   ;BH0001
    971					;                                                                               ;BH0001
    972					; THIS ROUTINE IS ENTERED WHEN A LOGGABLE EVENT OCCURS. THE EVENT               ;BH0001
    973					; INFORMATION IS SENT TO NICE, VIA THE ROUTINE $CMLOG.                          ;BH0001
    974					;                                                                               ;BH0001
    975					; INPUTS:                                                                       ;BH0001
    976					;	R3 = REASON CODE                                                        ;BH0001
    977					;	R5 = DEVICE LINE TABLE ADDRESS                                          ;BH0001
    978					;                                                                               ;BH0001
    979					; OUTPUTS:                                                                      ;BH0001
    980					;	MESSAGE IS SENT.                                                        ;BH0001
    981					;                                                                               ;BH0001
    982					; SIDE EFFECTS:                                                                 ;BH0001
    983					;	CALLING CONTEXT IS SAVED.                                               ;BH0001
    984					;                                                                               ;BH0001
    985					;-                                                                              ;BH0001
    986		120404 				LGERRS=CS.ERR!CS.DCR!CS.ROV!CS.TMO	;ERROR BITS                     ;BH0001
    987					                                                                                ;BH0001
    988	002076	016567 	000114 	175712 	LOGGIT:	MOV	DUPLG(R5),PDST	; SET LOGGING DESTINATION                       ;BH0004
    989	002104	001434 				BEQ	20$		; WE AREN'T ENABLED                             ;BH0004
    990	002106	010046 				MOV	R0,-(SP)	; SAVE R0                                       ;BH0004
    991	002110	010146 				MOV	R1,-(SP)	;   AND R1                                      ;BH0004
    992	002112	010367 	175702 			MOV	R3,PRSN		; COPY THE ERROR CODE                           ;BH0004
    993	002116	042767 	057373 	175674 		BIC	#^C<LGERRS>,PRSN ;ALLOW ONLY CERTAIN BITS                       ;BH0004
    994	002124	116567 	000106 	175670 		MOVB	LINE(R5),PLIN	; SET SYS LINE #                                ;BH0004
    995	002132	012700 	000016'			MOV	#PDST,R0	; POINT TO ARG BLOCK                            ;BH0004
    996	002136					CALL	$CMLOG		; LOG THIS EVENT >>>ENTER COROUTINE             ;BH0004
    997	002142	103413 				BCS	10$			; >>>$CMLOG POINTS R2 AT MSG BUFFER     ;BH0007
    998	002144	012722 				MOV	(PC)+,(R2)+		; >>>SET REG CODE & LENGTH OF DATA      ;BH0007
    999	002146	   001 	   010 			 .BYTE	E$DREG,8.		; >>>...                                ;BH0007
   1000	002150	016501 	000020 			MOV	RDBF(R5),R1		; >>>SET ADDR OF CSR                    ;BH0004
   1001	002154	162701 	000002 			SUB	#2,R1			; >>>POINT TO FIRST REGISTER            ;BH0004
   1002	002160	012122 				MOV	(R1)+,(R2)+		; >>>MOVE THE REGISTER                  ;BH0004
   1003	002162	012122 				MOV	(R1)+,(R2)+		; >>>...                                ;BH0004
   1004	002164	012122 				MOV	(R1)+,(R2)+		; >>>...                                ;BH0004
   1005	002166	012122 				MOV	(R1)+,(R2)+		; >>>...                                ;BH0004
   1006	002170					CALL	@(SP)+		; GO FINISH UP >>>EXIT COROUTINE                ;BH0004
   1007	002172	012601 			10$:	MOV	(SP)+,R1	; RESTORE REGISTERS                             ;BH0007
   1008	002174	012600 				MOV	(SP)+,R0	; ...                                           ;BH0004
   1009	002176				20$:	RETURN			; AND RETURN                                    ;BH0004
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 19


   1011					;+
   1012					; **-BUFSET-ALLOCATE AND SET UP A RECEIVE DATA BUFFER
   1013					; **-BUFUSE-SET UP A PREVIOUSLY ALLOCATED BUFFER
   1014					; **-BUFALT-ALTERNATE ENTRY FOR BUFUSE (STATUS IN 'RSTAT')
   1015					;
   1016					; THIS ROUTINE IS CALLED TO ALLOCATE A BUFFER FOR RECEIVE
   1017					; AND FORMAT THE LINE TABLE CORRECTLY.  AN ALTERNATE ENTRY
   1018					; PROVIDE LINE TABLE RE-FORMATTING FOR PREVIOUSLY ALLOCATED
   1019					; BUFFERS.
   1020					;
   1021					; INPUTS:
   1022					;	R4 = ADDRESS OF CCB (ENTRY AT BUFUSE ONLY)
   1023					;	R5 = POINTER TO 'RSTAT' IN LINE TABLE
   1024					;
   1025					; OUTPUTS:
   1026					;	R5 = POINTER TO PRIMARY CCB ADDRESS
   1027					;	C/SET = BUFFER ALLOCATE (ENTRY AT BUFSET)
   1028					;	C/CLEAR = BUFFER ALLOCATION FAILURE (ENTRY AT BUFSET)
   1029					;
   1030					; REGISTERS MODIFIED:
   1031					;	R4 AND R5
   1032					;-
   1033
   1034	002200				BUFSET:	CALL	$RDBGT		; ALLOCATE A RECEIVE DATA BUFFER
   1035	002204	041515 			BUFUSE:	BIC	(R5),(R5)	; CLEAR STATUS BITS (DONT MODIFY C-BIT)
   1036	002206	010445 			BUFALT:	MOV	R4,-(R5)	; STORE ADDRESS OF CCB IN RPRIM
   1037	002210	001006 				BNE	5$		; NONZERO SO BUFFER WAS ALLOCATED
   1038	002212	016504 	000050 			MOV	LINE-RPRIM(R5),R4 ; GET THE SYSTEM LINE NUMBER
   1039	002216					CALL	$RDBWT		; AND WAIT FOR A BUFFER
   1040	002222	000261 				SEC			; INDICATE FAILURE
   1041	002224	000422 				BR	10$		; AND EXIT
   1042
   1043	002226	016564 	000050 	000006 	5$:	MOV	LINE-RPRIM(R5),C.LIN(R4) ; SET SYSTEM LINE NUMBER AND CLEAR STATION
   1044	002234	112764 	000006 	000011 		MOVB	#FS.CIB!FS.DVC/400,C.MOD(R4) ; INDICATE DEVICE CHECKS BCC
   1045
   1046						.IF DF	M$$MGE
   1047
   1048	002242	062705 	177764 			ADD	#RBIAS-RPRIM,R5 ; POINT TO CURRENT RELOCATION BIAS
   1049	002246	062704 	000014 			ADD	#C.BUF,R4	; POINT TO FIRST BUFFER DESCRIPTOR
   1050	002252	012425 				MOV	(R4)+,(R5)+	; STORE RELOCATION BIAS IN CURRENT BIAS
   1051
   1052						.IFF
   1053
   1054						ADD	#RADD-RPRIM,R5	; POINT TO VIRTUAL ADDRESS
   1055						ADD	#C.BUF+2,R4	; POINT TO FIRST BUFFER DESCRIPTOR
   1056
   1057						.ENDC
   1058
   1059	002254	012425 				MOV	(R4)+,(R5)+	; STORE BUFFER ADDRESS AS CURRENT BUFFER
   1060	002256	012714 	000003 			MOV	#3,(R4)		; SET INITIAL BYTE COUNT IN CCB
   1061	002262	011425 				MOV	(R4),(R5)+	; SET HEADER BYTE COUNT AS CURRENT BYTE COUNT
   1062	002264	005725 				TST	(R5)+		; POINT TO THREAD
   1063	002266	010425 				MOV	R4,(R5)+	; STORE ADDRESS OF COUNT IN THREAD
   1064	002270	005725 				TST	(R5)+		; TEST FLAGS FOR EXIT
   1065	002272				10$:	RETURN			; RETURN
   1066
   1067		000001 				.END
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 19-1
SYMBOL TABLE

A$$CHK= 000000   	C.FNC   000010   	E$DTHR= 000015   	FS.MSN= 014000   	PDST    000016R
A$$CPS= 000000   	C.LIN   000006   	E$DTIM= 000002   	FS.RNG= 011000   	PDT1    000022R
A$$PRI= 000000   	C.LNK   000000   	E$DTPC= 000014   	FS.RTN= 001000   	PDT2    000024R
A$$TRP= 000000   	C.MOD   000011   	E$DTXT= 000016   	FS.SET= 005000   	PIRQ  = 177772
BUFALT  002206R  	C.NSP   000004   	E$DUPT= 000004   	FS.STM= 000000   	PLIN  = 000022R
BUFSET  002200R  	C.RSV   000002   	E$RABO= 000017   	FS.STP= 002000   	PLNG    000026R
BUFUMP= 172354   	C.STA   000007   	E$RCRC= 000023   	FS.STR= 001000   	PMODE = 030000
BUFUSE  002204R  	C.STS   000012   	E$RDSC= 000005   	FS.TRM= 003000   	PNAM    000030R
CB.CCB= 000002   	DA    = 000010   	E$RFRM= 000024   	FS.XKL= 002000   	PRSN    000020R
CB.RDB= 000004   	DL    = 000004   	E$RHFE= 000016   	FS.XOF= 010000   	PR0   = 000000
CE.ABO= 100362   	DLA   = 000020   	E$RLIN= 000003   	FS.XON= 007000   	PR1   = 000040
CE.DIS= 100366   	DLV   = 000004   	E$RMOP= 000014   	F$$LVL= 000001   	PR2   = 000100
CE.ERR= 100370   	DMC   = 000014   	E$RMTL= 000013   	G$$TPP= 000000   	PR3   = 000140
CE.MOP= 100372   	DP    = 000000   	E$RNAK= 000032   	G$$TSS= 000000   	PR4   = 000200
CE.NTE= 100361   	DPASR   001324R  	E$RNXM= 000002   	G$$TTK= 000000   	PR5   = 000240
CE.RTE= 100376   	DPASX   000630R  	E$ROVR= 000012   	G$$WRD= 000000   	PR6   = 000300
CE.SRC= 100364   	DPAS1   001334R  	E$RPEC= 000022   	HDRA    000116 G 	PR7   = 000340
CE.TMO= 100374   	DPCRA   000470R  	E$RPEM= 000021   	INPRM = 100000   	PS    = 177776
CF.EOM= 000004   	DPCTL   001466R  	E$RPET= 000020   	I$$RAR= 000000   	PSTA    000036R
CF.HDR= 000020   	DPDIS   001700R  	E$RPRC= 000025   	I$$RDN= 000000   	PTAB    000034R
CF.LB = 100000   	DPENB   001666R  	E$RPWF= 000007   	KDP   = 000034   	PTYP    000032R
CF.SOM= 000010   	DPKIL   001346R  	E$RPWR= 000010   	KDZ   = 000036   	P$$DDC= 000001
CF.SYN= 000040   	DPMSN   001710R  	E$RRET= 000031   	KICCB   000104 G 	P$$P45= 000000
CF.TRN= 000100   	DPRCP   000166R  	E$RRTE= 000011   	KISAR0= 172340   	P$$WRD= 000000
CMODE = 140000   	DPRHO   000146R  	E$RRTO= 000006   	KISAR6= 172354   	Q$$OPT= 000010
CRC   = 010000   	DPRNG   001742R  	E$RSEL= 000030   	KL    = 000040   	RADD    000024 G
CS.ABO= 000100   	DPSTP   001574R  	E$RSIN= 000004   	K$$CNT= 177546   	RBIAS   000022 G
CS.BUF= 000200   	DPSTR   001472R  	E$RSRC= 000015   	K$$CSR= 177546   	RCNT    000026 G
CS.DCR= 000400   	DPTIM   001746R  	E$RTRN= 000026   	K$$LDC= 000000   	RCVEN = 000020
CS.DEV= 000002   	DQ    = 000006   	E$RUCL= 000001   	K$$TPS= 000074   	RDBF    000020 G
CS.DIS= 000040   	DSR   = 001000   	E$RXTO= 000027   	LD$LP = 000000   	REXT    000454R
CS.ENB= 000020   	DTE   = 000024   	E$TASC= 000001   	LGDAT = 000012   	REXT0   000460R
CS.EOF= 000001   	DTR   = 000002   	E$TASX= 000002   	LGERRS= 120404   	REXT1   000464R
CS.ERR= 100000   	DU    = 000002   	E$THDW= 000003   	LINE    000106 G 	RFLAG   000034 G
CS.HFE= 002000   	DUP   = 000012   	E$TSFT= 000004   	LOGGIT  002076R  	RING  = 040000
CS.LST= 040000   	DUPCH   000110 G 	E$TTOP= 000005   	L$$ASG= 000000   	RINIT = 000522
CS.MTL= 004000   	DUPLG   000114 G 	E$$XPR= 000000   	L$$DRV= 000000   	RINS    000002 G
CS.RNG= 000010   	DUPLN   000122 G 	FC.CCP= 000020   	L$$P11= 000001   	RPCNT   000042 G
CS.ROV= 000004   	DUV   = 000002   	FC.CTL= 000006   	L$$11R= 000000   	RPRI    000030 G
CS.RSN= 010000   	DV    = 000026   	FC.KCP= 000016   	MC.CAR= 000001   	RPRIM   000036 G
CS.SUC= 000001   	DZ    = 000030   	FC.KIL= 000004   	MC.CCB= 000200   	RSTAT   000040 G
CS.TMO= 020000   	D$$BUG= 177514   	FC.RCE= 000002   	MC.DSR= 000002   	RTHRD   000032 G
CTDSP   000052R  	D$$ISK= 000000   	FC.RCP= 000014   	MC.RNG= 000004   	RTS   = 000004
CTS   = 020000   	D$$L11= 000001   	FC.TIM= 000010   	MPAR  = 172100   	RXINT = 000100
C$$CKP= 000000   	D$$YNC= 000000   	FC.XCP= 000012   	MPCSR = 177746   	R$$DER= 000000
C$$ORE= 000400   	D$$YNM= 000000   	FC.XME= 000000   	MS.SCA= 000002   	R$$K11= 000001
C$$RSH= 177564   	ERRTB   000000R  	FS.AST= 000000   	MS.SYN= 000001   	R$$SND= 000000
C.BID   000003   	ERRTBL= 000003   	FS.CIB= 002000   	M$$CRB= 000124   	R$$11M= 000000
C.BUF   000014   	E$DDAT= 000003   	FS.CRA= 001000   	M$$CRX= 000000   	SEND  = 000020
C.BUF1  000014   	E$DDEV= 000005   	FS.DIS= 013000   	M$$FCS= 000000   	SSYN  = 000400
C.BUF2  000024   	E$DLPC= 000013   	FS.DVC= 001000   	M$$MGE= 000000   	STCRC   000776R
C.CNT   000020   	E$DMCD= 000012   	FS.ENB= 012000   	M$$OVR= 000000   	STCTS   000732R
C.CNT1  000020   	E$DNOD= 000011   	FS.GET= 006000   	N$$LDV= 000001   	STDAT   001132R
C.CNT2  000030   	E$DOSI= 000010   	FS.INI= 000000   	N$$MOV= 000010   	STIDL   001072R
C.FLG   000022   	E$DREC= 000007   	FS.KIL= 000000   	N$$SYS= 000001   	STSTR   000712R
C.FLG1  000022   	E$DREG= 000001   	FS.LTM= 001000   	N$$USR= 000001   	STSYN   000760R
C.FLG2  000032   	E$DRSN= 000006   	FS.MNT= 004000   	PDID  = 000024R  	SWR   = 177570
DUP	MACRO M1110  13-OCT-79 08:21  PAGE 19-2
SYMBOL TABLE

S$$WRG= 000000   	TEXT3   001240R  	TSTAT   000074 G 	WAITI   001054R  	$INTSX= ****** GX
S$$YSZ= 007600   	TIME    000000 G 	TTHRD   000076 G 	X$$DBT= 000000   	$INTX7= ****** GX
TADD    000066 G 	TIMS    000001 G 	TUNST   001110R  	$CMLOG= ****** GX	$PADB = ****** GX
TBIAS   000064 G 	TINIT = 000010   	TXACT = 001000   	$DDCCP= ****** GX	$RDBGT= ****** GX
TBSET   001304R  	TINS    000044 G 	TXINT = 000100   	$DDHAR= ****** GX	$RDBQP= ****** GX
TCNT    000070 G 	TPOST   001252R  	T$$KMG= 000000   	$DDKCP= ****** GX	$RDBRT= ****** GX
TCSR    000062 G 	TPRI    000072 G 	T$$MIN= 000000   	$DDRCP= ****** GX	$RDBWT= ****** GX
TEOM  = 001000   	TPRIM   000100 G 	UBMPR = 170200   	$DDXMP= ****** GX	$SYNB = ****** GX
TEXT0   001172R  	TPS   = 177564   	UISAR0= 177640   	$DUPRI  000104RG 	$SYNC = ****** GX
TEXT1   001200R  	TSEC    000102 G 	UISAR1= 177642   	$DUPTB  000040RG 	.BASEB= 140000
TEXT2   001234R  	TSOM  = 000400   	V$$CTR= 001000   	$DUPTI  000516RG

. ABS.	000122	   000
      	002274	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  9627 WORDS  ( 38 PAGES)
DYNAMIC MEMORY:  11116 WORDS  ( 42 PAGES)
ELAPSED TIME:  00:00:47
DUP,[131,34]DUP/CR/-SP=[130,10]NETLIB/ML,RSXTMP/PA:1,[131,10]DUP
DUP        CREATED BY  MACRO  ON 13-OCT-79 AT 08:21	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

BUFALT	  002206 R	 11-771    #19-1036   
BUFSET	  002200 R	 7-328      14-851    #19-1034   
BUFUMP	= 172354	#3-61      
BUFUSE	  002204 R	 7-293     #19-1035   
CF.EOM	= 000004	 9-620     
CF.SYN	= 000040	 9-566     
CMODE 	= 140000	#3-61      
CRC   	= 010000	#4-89       7-303     
CS.BUF	= 000200	 11-761    
CS.DCR	= 000400	 5-117      7-305      18-986    
CS.ERR	= 100000	 7-241      7-305      17-946     18-986    
CS.MTL	= 004000	 7-290     
CS.ROV	= 000004	 5-118      7-241      18-986    
CS.RSN	= 010000	 7-347     
CS.TMO	= 020000	 5-119      17-946     18-986    
CTDSP 	  000052 R	#6-151      13-837    
CTS   	= 020000	#4-97       9-539     
C.BUF 	  000014	 9-566      9-620      19-1049   
C.FLG 	  000022	 9-566      9-615      9-620     
C.FNC 	  000010	 17-961    
C.LIN 	  000006	*19-1043   
C.MOD 	  000011	*19-1044   
C.STS 	  000012	 9-615      10-734    
DPASR 	  001324 R	 6-138     #11-760    
DPASX 	  000630 R	 6-137     #9-489     
DPAS1 	  001334 R	#11-771     12-816    
DPCRA 	  000470 R	#7-344      11-773    
DPCTL 	  001466 R	 6-140     #13-837    
DPDIS 	  001700 R	 6-162     #16-905    
DPENB 	  001666 R	 6-161     #16-901    
DPKIL 	  001346 R	 6-139     #12-792    
DPMSN 	  001710 R	 6-163     #16-909    
DPRCP 	  000166 R	 7-226     #7-247     
DPRHO 	  000146 R	 7-191     #7-238     
DPRNG 	  001742 R	 6-160     #16-918    
DPSTP 	  001574 R	 6-153     #14-871    
DPSTR 	  001472 R	 6-152     #14-846    
DPTIM 	  001746 R	 6-141      9-604     #17-940    
DSR   	= 001000	#4-99       16-911    
DTR   	= 000002	 4-91      #4-98       14-873     16-902    
DUP   	= 000012	 5-126     
DUPCH 	  000110  G	#5-130      9-573      14-856     14-857    
DUPLG 	  000114  G	#5-130      18-988    
DUPLN 	  000122  G	#5-130     
ERRTB 	  000000 R	#5-116      5-120      5-126     
ERRTBL	= 000003	 5-116     #5-120     
E$DREG	= 000001	 18-999    
E$RCRC	= 000023	 5-117     
E$ROVR	= 000012	 5-118     
E$RRTO	= 000006	 5-119     
E$THDW	= 000003	 5-126     
FC.KIL	= 000004	 17-961    
DUP        CREATED BY  MACRO  ON 13-OCT-79 AT 08:21	PAGE 2

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

FS.CIB	= 002000	 19-1044   
FS.CRA	= 001000	 12-792    
FS.DVC	= 001000	 19-1044   
HDRA  	  000116  G	#5-130      7-258     
INPRM 	= 100000	#4-105      14-848    
I$$AS 	= ******	 3-61       3-64       7-195      7-213      8-386      8-404      8-447      9-496      9-651     
                         9-670     
KICCB 	  000104  G	#5-130     *12-806    *14-887     17-958    *17-960    
KISAR0	= 172340	#3-61      
KISAR6	= 172354	#3-61       7-202     *7-203     *7-219      7-258      7-258      7-258      8-393     *8-394     
                        *8-410      8-454      9-503     *9-657     *9-676     
LGDAT 	= 000012	#5-125      5-126     
LGERRS	= 120404	#18-986     18-993    
LINE  	  000106  G	#5-130      14-879     18-994     19-1038    19-1043   
LOGGIT	  002076 R	 7-323      17-948    #18-988    
L$$SI1	= ******	 12-798     12-807    
MC.DSR	= 000002	 16-913    
MC.RNG	= 000004	 16-916    
MPAR  	= 172100	#3-61      
MPCSR 	= 177746	#3-61      
M$$MGE	= 000000	 3-61       5-130      5-130      5-130      5-130      7-193      7-258      7-274      8-384     
                         19-1046   
PDID  	= 000024 R	#5-128     
PDST  	  000016 R	#5-126     *18-988     18-995    
PDT1  	  000022 R	#5-126      5-127     
PDT2  	  000024 R	#5-126      5-128     
PIRQ  	= 177772	#3-61      
PLIN  	= 000022 R	#5-127     *18-994    
PLNG  	  000026 R	#5-126     
PMODE 	= 030000	#3-61      
PNAM  	  000030 R	#5-126     
PRSN  	  000020 R	#5-126     *18-992    *18-993    
PR0   	= 000000	#3-61      
PR1   	= 000040	#3-61      
PR2   	= 000100	#3-61      
PR3   	= 000140	#3-61      
PR4   	= 000200	#3-61      
PR5   	= 000240	#3-61      
PR6   	= 000300	#3-61      
PR7   	= 000340	#3-61       12-798    
PS    	= 177776	#3-61       12-798     12-798     12-807    
PSTA  	  000036 R	#5-126     
PTAB  	  000034 R	#5-126     
PTYP  	  000032 R	#5-126     
RADD  	  000024  G	#5-130     *7-312     
RBIAS 	  000022  G	#5-130      19-1048   
RCNT  	  000026  G	#5-130      7-238     *7-239     *7-241      7-270      7-303     *7-307     
RCVEN 	= 000020	#4-87       4-91       7-345     
RDBF  	  000020  G	#5-130      7-238      7-248      7-294      7-313      7-327      12-811     14-847     14-872    
                         16-901     16-905     16-910     18-1000   
REXT  	  000454 R	 7-314     #7-331     
REXT0 	  000460 R	 7-284     #7-332     
DUP        CREATED BY  MACRO  ON 13-OCT-79 AT 08:21	PAGE 3

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

REXT1 	  000464 R	 7-329     #7-333      7-349     
RFLAG 	  000034  G	#5-130     *7-239     *7-311     *7-346     *7-347     
RING  	= 040000	#4-100      16-914    
RINIT 	= 000522	#4-91       7-348      14-854    
RINS  	  000002  G	#5-130     
RPCNT 	  000042  G	#5-130     *7-265      7-307      7-309     *7-331     *7-346     
RPRI  	  000030  G	#5-130      7-248     
RPRIM 	  000036  G	#5-130      7-258     *7-265      7-294      7-303      7-307     *7-307      7-309      7-309     
                        *7-311     *7-312      7-313     *7-331      12-813     14-856    *14-856     14-857     14-875    
                        *14-878     19-1038    19-1043    19-1048   
RSTAT 	  000040  G	#5-130     *7-241      7-322      7-327     *7-347      11-760     14-850    
RTHRD 	  000032  G	#5-130      7-270      7-309     
RTS   	= 000004	#4-96       9-530      9-591      14-859    
RXINT 	= 000100	#4-88       4-91       7-249      7-332      12-812    
R$$11D	= ******	 3-61       3-64       7-195      7-213      8-386      8-404      8-447      9-496      9-651     
                         9-670     
SEND  	= 000020	#4-77       9-531      9-572      17-942    
SSYN  	= 000400	#4-90       4-91      
STCRC 	  000776 R	#9-562      9-622     
STCTS 	  000732 R	#9-539      9-541     
STDAT 	  001132 R	 9-551      9-565     #9-614      9-619     
STIDL 	  001072 R	 9-571     #9-591      9-605     
STSTR 	  000712 R	 9-514      9-515     #9-530     
STSYN 	  000760 R	 9-540     #9-551      9-568     
SWR   	= 177570	#3-61      
TADD  	  000066  G	#5-130     
TBIAS 	  000064  G	#5-130     
TBSET 	  001304 R	 9-512      10-712    #10-731    
TCNT  	  000070  G	#5-130     *8-381     *9-582     
TCSR  	  000062  G	#5-130     *8-381     *8-429      8-440      8-461      9-490      9-634      10-710     12-805    
                         17-940    
TEOM  	= 001000	#4-82       9-562      17-941    
TEXT0 	  001172 R	 9-554     #9-633     
TEXT1 	  001200 R	 9-544     #9-634     
TEXT2 	  001234 R	 9-523      9-584     #9-666     
TEXT3 	  001240 R	 9-594      9-606     #9-667     
TIME  	  000000  G	#5-130     *9-532     *9-583     *9-593     *9-633     
TIMS  	  000001  G	#5-130      9-532      9-583      9-633     *14-856    
TINIT 	= 000010	#4-76       14-855     14-860    
TINS  	  000044  G	#5-130     
TPOST 	  001252 R	 9-563      9-618     #10-705    
TPRI  	  000072  G	#5-130      8-440     
TPRIM 	  000100  G	#5-130      9-492      12-800     14-882     17-943    *17-952    
TPS   	= 177564	#3-61      
TSEC  	  000102  G	#5-130     *9-605      10-710     10-713     17-947     17-949    *17-952     17-958    *17-960    
TSOM  	= 000400	#4-81       8-428      9-543      9-553      17-941    
TSTAT 	  000074  G	#5-130     *8-429      8-461      9-573     *9-582      9-583     *9-583     *9-593     *9-605     
                         9-633     *9-633      9-634     
TTHRD 	  000076  G	#5-130      9-532     *9-532      9-602      10-713    
TUNST 	  001110 R	 8-429     #9-602     
TXACT 	= 001000	#4-79       9-513     
TXINT 	= 000100	#4-78       8-441      9-491      9-666      17-942    
DUP        CREATED BY  MACRO  ON 13-OCT-79 AT 08:21	PAGE 4

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

UBMPR 	= 170200	#3-61      
UISAR0	= 177640	#3-61      
UISAR1	= 177642	#3-61      
WAITI 	  001054 R	 9-516     #9-582     
$CMLOG	= ******  GX	 18-996    
$DDCCP	= ******  GX	 14-884     17-966    
$DDHAR	= ******  GX	 7-258     
$DDKCP	= ******  GX	 17-963    
$DDRCP	= ******  GX	 7-326     
$DDXMP	= ******  GX	 10-709     17-955    
$DUPRI	  000104 RG	#7-187     
$DUPTB	  000040 RG	#6-137     
$DUPTI	  000516 RG	#8-376     
$INTSX	= ******  GX	 7-251      8-443     
$INTX7	= ******  GX	 7-229      8-420     
$PADB 	= ******  GX	 9-542     
$RDBGT	= ******  GX	 19-1034   
$RDBQP	= ******  GX	 14-880    
$RDBRT	= ******  GX	 14-877    
$RDBWT	= ******  GX	 19-1039   
$SYNB 	= ******  GX	 9-552     
$SYNC 	= ******  GX	 14-848    
.BASEB	= 140000	#3-61      
DUP        CREATED BY  MACRO  ON 13-OCT-79 AT 08:21	PAGE 5

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

CALL  		 7-258      7-293      7-323      7-326      7-328      9-512      9-563      9-604      9-618      10-709    
                 11-771     12-795     12-816     14-851     14-877     14-880     14-884     17-948     17-955     17-963    
                 17-966     18-996     18-1006    19-1034    19-1039   
CALLR 		#7-229     #8-420     #8-462     #11-773    #13-837    
CCBDF$		#3-59      #3-62      
CMLDF$		#3-59      #5-126     
DEVDF 		#3-59      #5-110     
DUPDF$		#3-59       5-130     
ENABL$		#3-58      #12-807    
EVLDF$		#3-59       5-111     
INHIB$		#3-58       12-798    
MDCDF$		#3-59      #3-60      
NHWDF$		#3-58      #3-61      
RETURN		#7-334     #9-683     #10-714    #10-737    #12-808    #12-819    #14-863    #14-889    #16-920    #17-967    
                #18-1009   #19-1065   
TMPDF$		#5-130     #5-130     
$INTSX		#3-58      #7-251     #8-443     
$INTXT		#3-58      #7-229     #8-420     
$LIBCL		#3-59      #7-258     
.BIN  		#5-130     
.CNB  		#5-130     
.CNW  		#5-130     
.CORE 		#5-130     
.CSR  		#5-130     
.DVCHA		#5-130     #5-130     
.INT  		#5-130     #5-130     #5-130     
.INT1 		#5-130     
.INT2 		#5-130     
.INT3 		#5-130     
.LFLHD		#5-130     
.LIBR 		#5-130      5-130     
.LINKS		#5-130     
.LSTHD		#5-130     
.LTAB 		#5-130     
.MPLHD		#5-130     
.POOL 		#5-130     
.PRI  		#5-130     #5-130     #5-130     
.SCOM 		#5-130     
.SECSR		#5-130     
.SLNB 		#5-130     
.SLNW 		#5-130     
.STNB 		#5-130     
.STNW 		#5-130     
.UNB  		#5-130     
.UNW  		#5-130     
.VFY  		#5-130