Google
 

Trailing-Edge - PDP-10 Archives - BB-H348C-RM_1982 - swskit-v21/listings/mcb/dmc.list
There are no other files named dmc.list in the archive.
DMC	MACRO M1110  27-DEC-79 09:13
TABLE OF CONTENTS

     3-   58	LOCAL DEFINITIONS
     4-   91	DMC11	DEFINITIONS
     5-  126	LINE TABLE DEFINITIONS
     6-  176	FUNCTION DISPATCH TABLES
     7-  218	INTERRUPT DISPATCH TABLES
     8-  248	OTHER TABLE DEFINITIONS
     9-  273	$$DMC  - COMMON INTERRUPT ENTRY ROUTINE
    10-  318	RECVIN - RECEIVE INPUT TRANSFER INTERRUPT SERVICE
    10-  319	XMITIN - TRANSMIT INPUT TRANSFER INTERRUPT SERVICE
    11-  350	PROCD  - REQUEST PROCEDURE ERROR INTERRUPT SERVICE
    12-  371	RCVOUT - RECEIVE OUTPUT TRANSFER INTERRUPT SERVICE
    12-  372	XMTOUT - TRANSMIT OUTPUT TRANSFER INTERRUPT SERVICE
    13-  420	SETDMC - DMC BA/CC SET UP SUBROUTINE
    14-  532	CTRLO  - CONTROL OUT INTERRUPT SERVICE
    17-  644	TMOUT  - TIMEOUT SERVICE ROUTINE
    18-  707	TIMRST - TIMER RESET ROUTINE
    19-  729	XMTENB - TRANSMIT ENABLE REQUEST SERVICE ROUTINE
    20-  754	RCVENB - RECEIVE ENABLE REQUEST SERVICE ROUTINE
    21-  786	CTRL   - CONTROL REQUEST SERVICE ROUTINE
    27-  985	CLRQS  - QUEUE CLEAN UP SUBROUTINE
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 3


      1						.TITLE	DMC
      2						.IDENT	/V01.10/
      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					;	DMC-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	B. HOFFMAN	;BH0001
     37					;	MODIFICATIONS TO ACCOMODATE EVENT LOGGING.
     38					; 1.02	22-DEC-78	B. HOFFMAN	;BH0002
     39					;	PREVENT LOGGING OF "PROCEDURE ERRORS", SINCE THEY ARE
     40					;	NOT REALLY ERRORS, AND OCCUR FREQUENTLY.
     41					; 1.03	12-JAN-79	B. HOFFMAN	;BH0003
     42					;	MODIFIED TO USE NEW $CMLOG (V1.01).
     43					; 1.04	30-JAN-79	B. HOFFMAN	;BH0004
     44					;	FIXED BUG IN PLACEMENT OF LOGGIT CODE - THE
     45					;	CTRLO CODE WAS FALLING INTO IT
     46					; 1.05	30-JAN-79	B. HOFFMAN	;BH0005
     47					;	ADDED ANOTHER LOGGING POINT IN CODE TO CATCH TIMEOUTS.
     48					;	ALSO ASSURED REASON CODE SIGN BIT SET IN CALL TO $CMLOG.
     49					; 1.06	1-FEB-79	B. HOFFMAN	;BH0006
     50					;	CHANGED TO GLOBAL INVOCATION OF LINE TABLE DEFINITION MACROS.
     51					; 1.07	2-FEB-79	B. HOFFMAN	;BH0007
     52					;	ADDED ERROR RETURN DETECTION IN COROUTINE CALL TO $CMLOG.
     53					;	ALSO, STARTED UTILIZING EVLDF$ MACRO FOR LOGGING SYMBOLS.
     54					;	OMITTED SIGN BIT REQMT OF 1.05.
     55					; 1.10	27-DEC-79 SCOTT G. ROBINSON ;SR0010
     56					;	REMOVE CODE TO LOG TIMEOUT EVENTS, BUT ALLOW A PATCH TO
     57					;	REENABLE THEM.
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 3-1
LOCAL DEFINITIONS

     58						.SBTTL	LOCAL DEFINITIONS
     59
     60	000000					.PSECT
     61					;
     62					; MACRO LIBRARY CALLS
     63					;
     64						.MCALL	$INTSX
     65						.MCALL	CCBDF$,HWDDF$,DMCDF$,DEVDF,CMLDF$,EVLDF$                        ;BH0007
     66						.MCALL	$ENQ,$DEQ,SAVRG,RESRG                                           ;**-1
     67	000000					CCBDF$			; DEFINE CCB OFFSETS
     68	000000					HWDDF$			; DEFINE HARDWARE REGISTERS
     69
     70
     71					;
     72					; BIT DEFINTIONS
     73					;
     74		000001 			BIT00=	000001
     75		000002 			BIT01=	000002
     76		000004 			BIT02=	000004
     77		000010 			BIT03=	000010
     78		000020 			BIT04=	000020
     79		000040 			BIT05=	000040
     80		000100 			BIT06=	000100
     81		000200 			BIT07=	000200
     82		000400 			BIT08=	000400
     83		001000 			BIT09=	001000
     84		002000 			BIT10=	002000
     85		004000 			BIT11=	004000
     86		010000 			BIT12=	010000
     87		020000 			BIT13=	020000
     88		040000 			BIT14=	040000
     89		100000 			BIT15=	100000
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 4
DMC11	DEFINITIONS

     91						.SBTTL	DMC11	DEFINITIONS
     92					;
     93					; DMC11 DEFINITIONS
     94					;
     95
     96		100000 			RUN=	BIT15			; MICROPROCESSOR RUN BIT (KMC ONLY)
     97		040000 			MC=	BIT14			; MASTER CLEAR
     98
     99		000200 			RDYI=	BIT07			; READY FOR INPUT TRANSFER
    100		000200 			RDYO=	BIT07			; READY FOR OUTPUT TRANSFER
    101		000100 			IEI=	BIT06			; RDYI INTERRUPT ENABLE
    102		000100 			IEO=	BIT06			; RDYO INTERRUPT ENABLE
    103		000040 			RQI=	BIT05			; REQUEST FOR INPUT TRANSFER
    104
    105		000000 			XMT=	0			; INPUT TRANSFER TYPE XMIT BA/CC
    106		000001 			CTRLI=	BIT00			; INPUT TRANSFER TYPE CONTROL IN
    107		000003 			BASEI=	BIT00+BIT01		; INPUT TRANSFER TYPE BASE IN
    108		000004 			RCV=	BIT02			; INPUT TRANSFER TYPE RECV BA/CC
    109
    110		000004 			ORUN=	BIT02			; OVERRUN ERROR
    111		001000 			PROC=	BIT09			; PROCEDURE ERROR
    112		000003 			NFLTER=	BIT00+BIT01		; NON-FATAL ERRORS MASK
    113		000770 			FTLFL=	BIT03+BIT04+BIT05+BIT06+BIT07+BIT08 ; FATAL ERROR MASK
    114
    115		002000 			HD=	BIT10			; HALF DUPLEX FLAG
    116		004000 			SCND=	BIT11			; SECONDARY STATION BIT
    117		000400 			MOP=	BIT08			; MOP MAINTAINANCE MODE BIT
    118
    119					;
    120					; STATE DEFINITIONS
    121					;
    122		000001 			STSTP=	001			; STOP IN PROGRESS
    123		000002 			STDIS=	002			; DISABLE LINE IN PROGRESS
    124		000200 			STMC=	200			; DMC MICRO-PROCESSOR IS STOPPED
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 5
LINE TABLE DEFINITIONS

    126						.SBTTL	LINE TABLE DEFINITIONS
    127
    128					;
    129					; DMC11 LINE TABLE OFFSET DEFINITIONS
    130					;
    131
    132	000000					DMCDF$	<:>,<=>,LST                                                     ;BH0006
					;
					; DMC LINE TABLE OFFSETS
					;
	000000				.ASECT
		000000 				.=0
	000000					.INT
						.EVEN
						.IF DF	M$$MGE
	000000					.BLKW	7
						.IFF
						.BLKW	2
						.ENDC
		177724 				..OFF.=-<<.*2>+20>
		177724 				.=..OFF.
	177724				D.IVCT::		; INPUT INTERRUPT TRANSFER VECTOR
	177724					.INT		; INPUT INTERRUPT TRANSFER VECTOR
						.EVEN
						.IF DF	M$$MGE
	177724					.BLKW	7
						.IFF
						.BLKW	2
						.ENDC
	177742					.PRI		; ^C< DEVICE PRIORITY >
						.EVEN
	177742					.BLKW	1
	177744				D.SEL0::.CSR		; ADDRESS OF DMC SEL0 REGISTER
						.EVEN
	177744					.BLKW	1
	177746					.BLKW	1	; OFFSET TO INTERRUPT SERVICE DISPATCH TABLE
		000030 			D.OFFI== -.
	177750					.BLKW	1	; OFFSET TO START OF LINE TABLE
	177752				D.OVCT::		; OUTPUT INTERRUPT TRANSFER VECTOR
	177752					.INT		; OUTPUT INTERRUPT TRANSFER VECTOR
						.EVEN
						.IF DF	M$$MGE
	177752					.BLKW	7
						.IFF
						.BLKW	2
						.ENDC
	177770					.PRI		; ^C< DEVICE PRIORITY >
						.EVEN
	177770					.BLKW	1
	177772				D.SEL2::.CSR		; ADDRESS OF DMC SEL2 REGISTER
						.EVEN
	177772					.BLKW	1
	177774					.BLKW	1	; OFFSET TO INTERRUPT SERVICE DISPATCH TABLE
		000002 			D.OFFO== -.
	177776					.BLKW	1	; OFFSET TO START OF LINE TABLE
		000054 			D.OFFS== .-D.IVCT
	000000				D.TIMR::.BLKB	1	; LINE TABLE TIMER CELL
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 5-1
LINE TABLE DEFINITIONS

	000001				D.TIME::.BLKB	1	; TIMER RESET VALUE CELL
	000002				D.RAQC::.BLKB	1	; MINUS THE CURRENT NUMBER OF RECV BUFFERS ASSIG
	000003				D.RBFC::.BLKB	1	; MINUS THE MAXIMUM NUMBER OF RECV BUFFERS ASSIG
	000004				D.RAWQ::.LSTHD		; RECV BUFFERS AWAITING ASSIGNMENT QUEUE
						.EVEN
	000004					.BLKW	2
	000010				D.RASQ::.LSTHD		; RECV BUFFERS ASSIGNED TO DMC QUEUE
						.EVEN
	000010					.BLKW	2
	000014				D.XAQC::.BLKB	1	; MINUS THE CURRENT NUMBER OF XMIT BUFFERS ASSIG
	000015				D.XBFC::.BLKB	1	; MINUS THE MAXIMUM NUMBER OF XMIT BUFFERS ASSIG
	000016				D.XAWQ::.LSTHD		; XMIT BUFFERS AWAITING ASSIGNMENT QUEUE
						.EVEN
	000016					.BLKW	2
	000022				D.XASQ::.LSTHD		; XMIT BUFFERS ASSIGNED TO DMC QUEUE
						.EVEN
	000022					.BLKW	2
	000026				D.LINE::.BLKW	1	; SYSTEM LINE NUMBER
	000030				D.LBIA::
						.IF DF	M$$MGE
	000030					.BLKW	1	; DMC LINE TABLE BIAS ADDRESS
						.ENDC
	000032				D.LVA:: .BLKW	1	; DMC LINE TABLE VIRTUAL ADDRESS
	000034				D.ERRS::.BLKW	1	; PENDING STATUS WORD
	000036				D.CFNC::.BLKW	1	; CONTROL FUNCTION IN PROGRESS
	000040				D.PFNC::.LSTHD		; PENDING CONTROL FUNCTION QUEUE
						.EVEN
	000040					.BLKW	2
	000044				D.STAT::.BLKW	1	; STATE FLAGS
	000046				D.PLEX::.DVCHA		; DEVICE CHARACTERISTICS
						.EVEN
	000046					.BLKW	2
	000052				D.TLZ:: .BLKW	1	; THE TIME COUNTERS WHERE LAST ZEROED
	000054				D.XMT:: .BLKW	1	; NUMBER OF BLOCKS TRANSMITTED
	000056				D.RCV:: .BLKW	1	; NUMBER OF BLOCKS RECEIVED
	000060				D.LREC::.BLKB	6	; ERROR COUNTER VALUES FROM LAST READ OF BASE TA
	000066				D.LOGG::.BLKW	1	; EVENT LOGGING DESTINATION
		000144 			D.LEN==.-..OFF.
	000000				.PSECT
    133					                                                                                ;BH0001
    134					;                                                                               ;BH0001
    135					; DEFINE THE DMC DEVICE CODE                                                    ;BH0001
    136					;                                                                               ;BH0001
    137	000000					DEVDF                                                                   ;BH0001
    138	000000					EVLDF$                                                                  ;BH0007
    139					                                                                                ;BH0007
    140					;                                                                               ;BH0007
    141					;NOW DEFINE THE ERROR REPORTING MAP                                             ;BH0007
    142					;                                                                               ;BH0007
    143	000000	000010 			ERRTB:	.WORD	ERRTBL		;**LENGTH OF TABLE                              ;BH0007
    144	000002	000001 	000011 			.WORD	BIT00,E$RRTE	; RETRANSMISSION THRESHOLD EXCEEDED             ;BH0007
    145	000006	000002 	000006 			.WORD	BIT01,E$RRTO	; TIMEOUT                                       ;BH0007
    146	000012	000004 	000012 			.WORD	BIT02,E$ROVR	; OVERRUN                                       ;BH0007
    147	000016	000010 	000014 			.WORD	BIT03,E$RMOP	; MAINT MSG RECEIVED DURING NORMAL OPERATIONS   ;BH0007
    148	000022	000020 	000013 			.WORD	BIT04,E$RMTL	; LOST DATA - MSG TOO LONG                      ;BH0007
    149	000026	000100 	000005 			.WORD	BIT06,E$RDSC	; DISCONNECT - MODEM TRANSITION                 ;BH0007
    150	000032	000200 	000015 			.WORD	BIT07,E$RSRC	; DDCMP START RECEIVED                          ;BH0007
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 5-2
LINE TABLE DEFINITIONS

    151	000036	000400 	000002 			.WORD	BIT08,E$RNXM	; NXM                                           ;BH0007
    152		000010 			  ERRTBL=<.-ERRTB-2>/4                                                          ;BH0007
    153					                                                                                ;BH0006
    154					;                                                                               ;BH0006
    155					; DEFINE THE $CMLOG ARGUMENT BLOCK                                              ;BH0006
    156					;                                                                               ;BH0006
    157		000012 				LGDAT=10.	; HDR + 4*REG = 5.WORDS = 10.BYTES                      ;BH0007
    158	000042					CMLDF$	DMC,E$THDW,,DMC,ERRTB,LGDAT                                     ;BH0007
	000042	000000 			PDST:	.WORD	0		; LOGGING DESTINATION
	000044	000000 			PRSN:	.WORD	0		;    "    REASON
	000046	177777 			PDT1:	.WORD	-1		; FORMAT DEPENDENT ARG #1
	000050	000014 			PDT2:	.WORD	DMC		;   "        "      "  #2
	000052	000012 			PLNG:	.WORD	LGDAT		; BYTES OF COROUTINE-ADDED INFO
	000054	015413 			PNAM:	.RAD50	/DMC/		; PROCESS NAME
	000056	000003 			PTYP:	.WORD	E$THDW		; EVENT TYPE CODE
	000060	000000'			PTAB:	.WORD	ERRTB		; ERROR CODE MAPPING TABLE
	000062	000000 			PSTA:	.WORD	0		; STATE WORD FOR USE BY $CMLOG
    159		000046'				PLIN=PDT1	;LINE #                                                 ;BH0006
    160		000050'				PDID=PDT2	;DEVICE ID                                              ;BH0006
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 6
LINE TABLE DEFINITIONS

    162						.IF	DF	R$$11D!I$$AS
    163					;+
    164					;
    165					;	DEFINE PROCESS HEADER
    166					;
    167					;-
    168						.MCALL	PRCHD$
    169						.LIST	ME
    170						PRCHD$	$DMCTB,DRIVER
    171						.NLIST	ME
    172						.ENDC
    173
    174
    175
    176						.SBTTL	FUNCTION DISPATCH TABLES
    177
    178					;
    179					; FUNCTION CODE DISPATCH TABLE
    180					;
    181	000064				$DMCTB::
    182	000064	001562'				.WORD	XMTENB		; TRANSMIT ENABLE
    183	000066	001604'				.WORD	RCVENB		; RECEIVE ENABLE
    184	000070	000071'				.WORD	.+1		; KILL I/O
    185	000072	001636'				.WORD	CTRL		; CONTROL
    186	000074	001330'				.WORD	TMOUT		; TIMEOUT
    187									; TRANSMIT COMPLETE (DEVICE INTERRUPT)
    188									; RECEIVE COMPLETE (DEVICE INTERRUPT)
    189									; KILL COMPLETE
    190									; CONTROL COMPLETE
    191
    192
    193					;
    194					; RECEIVE ENABLE SUB-FUNCTION DISPATCH TABLE
    195					;
    196	000076				RCVDSP:
    197	000076	000000G				.WORD	$RDBRT		; NORMAL BUFFER RETURN
    198	000100	001610'				.WORD	RCVBFW		; BUFFER RETURN FROM WAIT QUEUE REQUEST
    199
    200					;
    201					; CONTROL SUB-FUNCTION DISPATCH TABLE
    202					;
    203	000102				CNTDSP:
    204	000102	000103'				.WORD	.+1		; INTITIALIZE
    205	000104	001672'				.WORD	START		; START
    206	000106	002210'				.WORD	STOP		; STOP
    207	000110	000111'				.WORD	.+1		; TERMINATE
    208	000112	001664'				.WORD	STRMOP		; START MOP MODE
    209	000114	000115'				.WORD	.+1		; SET LINE CHARACTERISTICS
    210	000116	000117'				.WORD	.+1		; GET LINE CHARACTERISTICS
    211	000120	000121'				.WORD	.+1		; XON
    212	000122	000123'				.WORD	.+1		; XOFF
    213	000124	002410'				.WORD	RING		; LOOK FOR RING
    214	000126	002402'				.WORD	ENABL		; ENABLE LINE
    215	000130	002276'				.WORD	DISABL		; DISABLE LINE
    216									; MODEM SENSE
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 7
INTERRUPT DISPATCH TABLES

    218						.SBTTL	INTERRUPT DISPATCH TABLES
    219
    220					;
    221					; INPUT INTERRUPT DISPATCH TABLE
    222					;
    223
    224		000132'			DMCITB=.
    225	000132	000302'				.WORD	XMITIN
    226	000134	000135'				.WORD	.+1
    227	000136	000320'				.WORD	PROCD
    228	000140	000320'				.WORD	PROCD
    229	000142	000274'				.WORD	RECVIN
    230	000144	000145'				.WORD	.+1
    231	000146	000320'				.WORD	PROCD
    232					;	.WORD	.+1
    233
    234					;
    235					; OUTPUT INTERRUPT DISPATCH TABLE
    236					;
    237
    238		000016 			DMCOTB==.-DMCITB
    239	000150	000426'				.WORD	XMTOUT
    240	000152	001102'				.WORD	CTRLO
    241	000154	000155'				.WORD	.+1
    242	000156	000157'				.WORD	.+1
    243	000160	000326'				.WORD	RCVOUT
    244	000162	001102'				.WORD	CTRLO
    245					;	.WORD	.+1
    246					;	.WORD	.+1
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 8
OTHER TABLE DEFINITIONS

    248						.SBTTL	OTHER TABLE DEFINITIONS
    249
    250					;
    251					; ERROR STATUS DEFINITION TABLE
    252					;
    253	000164	100376 	001324'		ERTBL:	.WORD	CE.RTE,NFTER	; BIT 0 - RECEVIE THRESHOLD EXCEEDED
    254	000170	100374 	001324'			.WORD	CE.TMO,NFTER	; BIT 1 - REP THRESHOLD EXCEEDED
    255	000174	000000 	000522'			.WORD	0,SETDMC	; BIT 2 - OVERRUN (NO RECV BUFFER)
    256	000200	100372 	001320'			.WORD	CE.MOP,FTLER	; BIT 3 - MOP MESSAGE RECEIVED
    257	000204	100370 	001320'			.WORD	CE.ERR,FTLER	; BIT 4 - LOST DATA (MESSAGE TOO LONG)
    258	000210	100370 	001320'			.WORD	CE.ERR,FTLER	; BIT 5 - RESERVED
    259	000214	100366 	001324'			.WORD	CE.DIS,NFTER	; BIT 6 - DISCONNECT
    260	000220	100364 	001320'			.WORD	CE.SRC,FTLER	; BIT 7 - START RECEIVED
    261	000224	100370 	001320'			.WORD	CE.ERR,FTLER	; BIT 8 - NXM
    262	000230	100366 	001256'			.WORD	CE.DIS,PRCER	; BIT 9 - PROCEDURE ERROR
    263
    264					;
    265					; MEMORY EXTENSION BIT TABLE
    266					;
    267
    268	000234	   000 			MEBTAB:	.BYTE	0
    269	000235	   100 				.BYTE	100
    270	000236	   200 				.BYTE	200
    271	000237	   300 				.BYTE	300
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 9
$$DMC  - COMMON INTERRUPT ENTRY ROUTINE

    273						.SBTTL	$$DMC  - COMMON INTERRUPT ENTRY ROUTINE
    274					;+
    275					; **- $$DMC - COMMON INTERRUPT ENTRY ROUTINE
    276					;
    277					; THIS IS A COMMON ROUTINE FOR BOTH INPUT AND OUTPUT INTERRUPT
    278					; SERVICING. ALL INTERRUPTS ARE VECTORED THROUGH UNIQUE LINE TABLES
    279					; TO $$DMC. THE FOUR WORDS FOLLOWING THE VECTOR TO $$DMC IN THE
    280					; LINE TABLE ARE:
    281					;	1) ^C< DEVICE PRIORITY >
    282					;	2) CSR ADDRESS (SEL0 - INPUT OR SEL2 - OUTPUT)
    283					;	3) OFFSET TO PROPER INTERRUPT SERVICE DISPATCH TABLE
    284					;	4) OFFSET TO START OF LINE TABLE
    285					;
    286					; INPUTS:
    287					;	R0,R1,R2,R3,R4 - ORIGINAL CONTENTS FROM INTERRUPT
    288					;	R5 = POINTER TO DEVICE PRIORITY WORD IN LINE TABLE
    289					;
    290					; OUTPUTS: (ON DISPATCH TO INTERRUPT SERVICE ROUTINE)
    291					;	R3 = ADDRESS OF PROPER SEL REGISTER
    292					;	R4 - SCRATCH
    293					;	R5 = POINTER TO START OF LINE TABLE
    294					;	R0,R1,R2 - MUST BE SAVED BEFORE USE
    295					;-
    296
    297	000240				$$DMC::
    298	000240					$INTSX			;;; DROP TO DEVICE PRIORITY AND SAVE R4
    299	000244					SAVRG	<R3>		;;; SAVE REGISTER
    300	000246	012503 				MOV	(R5)+,R3	;;; GET ADDRESS OF SEL REGISTER
    301	000250	011304 				MOV	@R3,R4		;;; GET CONTENTS OF SEL REGISTER
    302
    303						.IF DF	X$$BUG		;;; ? DEBUG ?
    304						BIT	#IEI!IEO,R4	;;; ? EITHER IEI OR IEO MUST BE SET
    305						BEQ	.		;;; ? ERROR IF NOT
    306						BIT	#RDYI!RDYO,R4	;;; ? EITHER RDYI OR RDYO MUST BE SET
    307						BEQ	.		;;; ? ERROR IF NOT
    308						.ENDC			;;; ? END DEBUG ?
    309
    310	000252	042704 	177770 			BIC	#^C7,R4		;;; LEAVE ONLY FUNCTION CODE BITS
    311	000256	006304 				ASL	R4		;;; MAKE IT A WORD INDEX
    312	000260	062504 				ADD	(R5)+,R4	;;; ADD OFFSET TO PROPER DISPATCH TABLE
    313	000262	061505 				ADD	(R5),R5		;;; MOVE POINTER TO START OF LINE TABLE
    314	000264					CALL	@DMCITB(R4)	;;; DISPATCH TO INTERRUPT SERVICE ROUTINE
    315	000270					RESRG	<R3>		;;; RESTORE REGISTER
    316	000272					RETURN			;;; EXIT INTERRUPT
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 10
RECVIN - RECEIVE INPUT TRANSFER INTERRUPT SERVICE

    318						.SBTTL	RECVIN - RECEIVE INPUT TRANSFER INTERRUPT SERVICE
    319						.SBTTL	XMITIN - TRANSMIT INPUT TRANSFER INTERRUPT SERVICE
    320					;+
    321					; **- RECVIN - RECIEVE INPUT TRANSFER INTERRUPT SERVICE ROUTINE
    322					; **- XMITIN - TRANSMIT INPUT TRANSFER INTERRUPT SERVICE ROUTINE
    323					;
    324					; THIS INTERRUPT IS CAUSED BY RDYI COMING UP WITH IEI SET.
    325					; IT INDICATES THAT THE DMC IS READY TO ACCEPT A BUFFER ADDRESS
    326					; AND BYTE COUNT FOR A TRANSFER.
    327					;
    328					; INPUTS:
    329					;	R3 = ADDRESS OF SEL0 REGISTER
    330					;	R4 - SCRATCH
    331					;	R5 = POINTER TO START OF LINE TABLE
    332					;
    333					; OUTPUTS: (ON CALL TO SETBUF)
    334					;	R3 = ADDRESS OF SEL0 REGISTER
    335					;	R4 = OFFSET TO EITHER D.RAWQ OR D.XAWQ IN LINE TABLE
    336					;	R5 = POINTER TO START OF LINE TABLE
    337					;-
    338
    339						.ENABL LSB
    340	000274	012704 	000004 		RECVIN:	MOV	#D.RAWQ,R4	;;; GET OFFSET TO D.RAWQ
    341	000300	000402 				BR	10$		;;; JOIN COMMON CODE
    342
    343	000302	012704 	000016 		XMITIN:	MOV	#D.XAWQ,R4	;;; GET OFFSET TO D.XAWQ
    344	000306	042713 	000100 		10$:	BIC	#IEI,@R3	;;; CLEAR RDYI INTERRUPT ENABLE
    345	000312	105015 				CLRB	(R5)		;;; CANCEL COMPLETION TIMER
    346	000314					CALLR	SETBUF		;;; GO ASSIGN BUFFER TO DMC
    347									;;; AND RETURN
    348						.DSABL	LSB
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 11
PROCD  - REQUEST PROCEDURE ERROR INTERRUPT SERVICE

    350						.SBTTL	PROCD  - REQUEST PROCEDURE ERROR INTERRUPT SERVICE
    351					;+
    352					; **- PROCD - REQUEST PROCEDURE ERROR INTERRUPT SERVICE ROUTINE
    353					;
    354					; THIS INTERRUPT IS CAUSED BY RDYI COMING UP WITH IEI SET.
    355					; PROCEDURE ERRORS ARE USED TO SYNCHRONIZE WITH THE DMC MICRO-PROCESSOR.
    356					; THEY ENABLE ALL COMPLETIONS QUEUED INTERNALLY IN THE DMC TO
    357					; BE RETURNED TO THE DRIVER BEFORE THE DMC IS MASTER CLEARED.
    358					;
    359					; INPUTS:
    360					;	R3 = ADDRESS OF SEL0 REGISTER
    361					;	R4 - SCRATCH
    362					;	R5 = POINTER TO START OF LINE TABLE
    363					;
    364					; OUTPUTS:
    365					;	THE PROCEDURE ERROR IS SPRUNG.
    366					;-
    367
    368	000320	042713 	000140 		PROCD:	BIC	#RQI+IEI,@R3	;;; SPRING PROCEDURE ERROR
    369	000324					RETURN			;;; AND RETURN
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 12
RCVOUT - RECEIVE OUTPUT TRANSFER INTERRUPT SERVICE

    371						.SBTTL	RCVOUT - RECEIVE OUTPUT TRANSFER INTERRUPT SERVICE
    372						.SBTTL	XMTOUT - TRANSMIT OUTPUT TRANSFER INTERRUPT SERVICE
    373					;+
    374					; **- RCVOUT - RECEIVE OUTPUT TRANSFER INTERRUPT SERVICE ROUTINE
    375					; **- XMTOUT - TRANSMIT OUTPUT TRANSFER INTERRUPT SERVICE ROUTINE
    376					;
    377					; THIS INTERRUPT IS CAUSED BY RDYO COMING UP WHILE IEO IS SET.
    378					; IT INDICATES THAT THE DMC HAS COMPLETED A (RECV/XMIT) TRANSFER
    379					; REQUEST. THE ROUTINE ALSO POSTS THESE COMPLETIONS TO THE LLC.
    380					;
    381					; INPUTS:
    382					;	R3 = ADDRESS OF SEL2 REGISTER
    383					;	R4 - SCRATCH
    384					;	R5 = POINTER TO START OF LINE TABLE
    385					;
    386					; OUTPUTS: (ON CALL TO SETDMC)
    387					;	R3 = ADDRESS OF SEL0 REGISTER
    388					;	R4 - SCRATCH
    389					;	R5 = POINTER TO START OF LINE TABLE
    390					;-
    391
    392						.ENABL LSB
    393	000326				RCVOUT:	$DEQ	R5,D.RASQ,R4	;;; GET CCB OF RECIEVE BUFFER THAT JUST COMPLETED
    394	000356	105365 	000002 			DECB	D.RAQC(R5)	;;; ADJUST COUNT OF BUFFERS ASSIGNED TO DMC
    395	000362	016364 	000004 	000020 		MOV	4(R3),C.CNT(R4)	;;; GET RECV BYTE COUNT
    396	000370	042764 	140000 	000020 		BIC	#140000,C.CNT(R4) ;;; CLEAR EXTENDED MEMORY BITS
    397	000376					SAVRG	<R3>		;;; SAVE REGISTER
    398	000400	012703 	000001 			MOV	#CS.SUC,R3	;;; SIGNAL SUCCESSFUL COMPLETION
    399	000404					CALL	$RCCMP		;;; POST RECEIVE COMPLETE
    400	000410	022765 	177777 	000056 		CMP	#-1,D.RCV(R5)	;;; IS COUNT ABOUT TO OVERFLOW?
    401	000416	001434 				BEQ	10$		;;; IF EQ, YES THEN DON'T INCREMENT COUNT
    402	000420	005265 	000056 			INC	D.RCV(R5)	;;; INCREMENT # OF BLOCKS RECEIVED
    403	000424	000431 				BR	10$		;;; JOIN COMMON CODE
    404
    405	000426				XMTOUT:	$DEQ	R5,D.XASQ,R4	;;; GET CCB OF TRANSMIT BUFFER THAT JUST COMPLETED
    406	000456	105365 	000014 			DECB	D.XAQC(R5)	;;; ADJUST COUNT OF BUFFERS ASSIGNED TO DMC
    407	000462					SAVRG	<R3>		;;; SAVE REGISTER
    408	000464	012703 	000001 			MOV	#CS.SUC,R3	;;; SIGNAL SUCCESSFUL COMPLETION
    409	000470					CALL	$XMCMP		;;; POST TRANSMIT COMPLETE
    410	000474	022765 	177777 	000054 		CMP	#-1,D.XMT(R5)	;;; IS COUNT ABOUT TO OVERFLOW?
    411	000502	001402 				BEQ	10$		;;; IF EQ, YES THEN DON'T INCREMENT COUNT
    412	000504	005265 	000054 			INC	D.XMT(R5)	;;; INCREMENT # OF BLOCKS TRANSMITTED
    413	000510				10$:	RESRG	<R3>		;;; RESTORE REGISTER
    414	000512	042713 	000200 			BIC	#RDYO,@R3	;;; RELEASE DMC DATA PORT
    415	000516	005743 				TST	-(R3)		;;; POINT R3 TO SEL0 REGISTER
    416	000520	105015 				CLRB	(R5)		;;; CANCEL COMPLETION TIMER
    417									;;; FALL INTO SETDMC TO
    418									;;; TO ASSIGN MORE BUFFERS TO DMC
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 13
SETDMC - DMC BA/CC SET UP SUBROUTINE

    420						.SBTTL	SETDMC - DMC BA/CC SET UP SUBROUTINE
    421					;+
    422					; **- SETDMC - DMC BA/CC SET UP SUBROUTINE
    423					;
    424					; THIS SUBROUTINE TRIES TO ASSIGN AS MANY RECEIVE AND TRANSMIT
    425					; BUFFERS THAT ARE PERMITTED TO THE DMC. IT ALWAYS GIVES PRIORITY
    426					; TO ASSIGNING RECEIVE BUFFERS BEFORE TRANSMIT. IT IS CALLED ON
    427					; EACH TRANSMIT AND RECEIVE COMPLETION AND ON EACH TRANSMIT ENABLE
    428					;
    429					; INPUTS:
    430					;	R3 = ADDRESS OF SEL0 REGISTER
    431					;	R4 - SCRATCH
    432					;	R5 = POINTER TO START OF LINE TABLE
    433					;
    434					; OUTPUTS: (ON RETURN TO CALLER)
    435					;	R3 = ADDRESS OF SEL0 REGISTER
    436					;	R4 - DESTROYED
    437					;	R5 = POINTER TO START OF LINE TABLE
    438					;-
    439
    440						.ENABL	LSB
    441	000522				SETDMC:	SAVRG	<R5>		;;; SAVE REGISTER
    442	000524	005725 			5$:	TST	(R5)+		;;; MOVE POINTER TO D.RAQC
    443	000526	132525 				BITB	(R5)+,(R5)+	;;; CAN THE DMC ACCEPT ANY MORE RECV BUFFERS?
    444	000530	001435 				BEQ	20$		;;; NO
    445	000532	005715 				TST	@R5		;;; ANY RECEIVE BUFFERS AWAITING ASSIGNMENT
    446	000534	001030 				BNE	12$		;;; YES
    447	000536					CALL	$RDBGT		;;; NO - TRY TO ALLOCATE A RECV DATA BUFFER
    448	000542	103012 				BCC	10$		;;; ALLOCATION SUCCEEDED
    449	000544	005765 	000004 			TST	D.RASQ-D.RAWQ(R5) ;;; ARE THERE ANY BUFFERS CURRENTLY ASSIGNED TO DMC?
    450	000550	001025 				BNE	20$		;;; IF NE, YES - DON'T QUEUE A BUFFER WAIT REQUEST
    451	000552	016504 	000022 			MOV	D.LINE-D.RAWQ(R5),R4 ;;; ALLOCATION FAILED - GET LINE NUMBER
    452	000556					CALL	$RDBWT		;;; QUEUE BUFFER WAIT REQUEST
    453	000562	105265 	177776 			INCB	D.RAQC-D.RAWQ(R5) ;;; ADJUST BUFFER COUNT
    454	000566	000416 				BR	20$		;;; GO TRY TRANSMIT REQUESTS
    455
    456	000570				10$:	$ENQ	R5,,R4		;;; PUT RECV BUFFER IN AWAITING ASSIGNMENT QUEUE
    457	000610	016564 	000022 	000006 		MOV	D.LINE-D.RAWQ(R5),C.LIN(R4) ;;; PUT SYSTEM LINE NUMBER IN CCB
    458	000616	012704 	000044 		12$:	MOV	#RQI+RCV,R4	;;; GET INPUT REQUEST TYPE AND RQI CODE
    459	000622	000410 				BR	25$		;;; JOIN COMMON CODE
    460
    461	000624	062705 	000010 		20$:	ADD	#D.XAQC-D.RAWQ,R5 ;;; MOVE LINE TABLE POINTER TO XMIT QUEUE COUNT
    462	000630	132525 				BITB	(R5)+,(R5)+	;;; CAN THE DMC ACCEPT ANY MORE TRANSMIT BUFFERS?
    463	000632	001521 				BEQ	60$		;;; NO
    464	000634	005715 				TST	@R5		;;; ANY TRANSMIT BUFFERS AWAITING ASSIGNMENT
    465	000636	001517 				BEQ	60$		;;; NO
    466	000640	012704 	000040 			MOV	#RQI+XMT,R4	;;; GET INPUT TRANSFER TYPE AND RQI CODE
    467	000644	032713 	000040 		25$:	BIT	#RQI,@R3	;;; IS RQI SET?
    468	000650	001112 				BNE	60$		;;; YES - JUST BE PATIENT, WE'RE WAITING FOR AN INTERRUP
    469					;
    470					;	THE FOLLOWING LOOP WAITS FOR RDYI TO DROP.  IF RDYI DOES NOT
    471					;	DROP BEFORE THIS LOOP EXITS THE BUFFER ASSIGNMENT WILL EITHER
    472					;	BE MADE ON THE NEXT COMPLETION INTERRUPT, TRANSMIT/RECEIVE
    473					;	REQUEST, CONTROL OUT INTERRUPT (NO RECEIVE BUFFER ASSIGNED), OR
    474					;	A SOFTWARE TIMEOUT.  IF THE TIMER CATCHES THE CONDITION THERE
    475					;	COULD BE A DELAY IN TRANSMISSION IN THE RANGE OF 1 CLOCK TICK
    476					;	TO 1 SECOND (DUE TO GRANULARITY OF TIMER). NOTE THE DMC DOES NOT
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 13-1
SETDMC - DMC BA/CC SET UP SUBROUTINE

    477					;	INTERRUPT WHEN THE PORT BECOMES AVAILABLE (I.E. RDYI DROPS).
    478					;
    479	000652					CALL	WAITS		;;; WAIT FOR RDYI TO GO DOWN
    480	000656	103415 				BCS	35$		;;; IF CS, RDYI IS STILL UP
    481
    482	000660	110413 			28$:	MOVB	R4,@R3		;;; SET RQI AND INPUT TYPE CODE
    483	000662	032763 	000200 	000002 		BIT	#RDYO,2(R3)	;;; IS RDYO SET?
    484	000670	001003 				BNE	30$		;;; YES - SET IEI AND LET RDYO INTERRUPT
    485					;
    486					;	THE FOLLOWING LOOP WAITS FOR RDYI TO COME UP. THE LOOP CATCHES
    487					;	THE TIMES THAT THE MICRO-PROCESSOR RESPONDS QUICKLY AND THERFORE
    488					;	AVOIDS THE INTERRUPT EXIT AND RE-INTERRUPT PROCESSING.
    489					;
    490	000672					CALL	WAITS		;;; WAIT FOR RDYI TO COME UP
    491	000676	103016 				BCC	50$		;;; IF CC, RDYI IS UP, GO ASSIGN BUFFER
    492
    493	000700	052713 	000100 		30$:	BIS	#IEI,@R3	;;; SET RDYI INTERRUPT ENABLE
    494	000704	000240 				NOP			;;; TIME DELAY
    495	000706	052713 	000100 			BIS	#IEI,@R3	;;; SET IEI AGAIN - RACE IN HARDWARE
    496
    497	000712				35$:	RESRG	<R5>		;;; RESTORE ORIGINAL LINE TABLE POINTER
    498	000714	112715 	000001 			MOVB	#1,(R5)		;;; START TIMER
    499	000720	152765 	000001 	000045 		BISB	#1,D.STAT+1(R5)	;;; SET FLAG TO CATCH RDYI LATE DROPPING
    500									;;; INCASE NO OTHER EVENT DRIVES US BACK TO SETDMC
    501	000726					RETURN			;;; RETURN TO CALLER
    502
    503
    504	000730				SETBUF:	SAVRG	<R5>		;;; ENTRY FROM RDYI INTERRUPT ROUTINES
    505	000732	060405 				ADD	R4,R5		;;; ADD OFFSET TO POINT TO PROPER LISTHEAD
    506	000734	105265 	177776 		50$:	INCB	-2(R5)		;;; INCREMENT NUMBER OF BUFFERS ASSIGNED TO DMC
    507	000740					$DEQ	R5,,R4		;;; GET NEXT BUFFER TO BE ASSIGNED
    508	000756	022525 				CMP	(R5)+,(R5)+	;;; MOVE POINTER TO ASSIGNED QUEUE
    509	000760					$ENQ	R5,,R4		;;; ADD BUFFER TO ASSIGNED QUEUE
    510	001000					SAVRG	<R1,R2,R3>	;;; SAVE REGISTERS
    511	001006	010301 				MOV	R3,R1		;;; COPY SEL0 REGISTER ADDRESS
    512	001010	016403 	000014 			MOV	C.BUF(R4),R3	;;; GET BUFFER BIAS
    513	001014	016402 	000016 			MOV	C.BUF+2(R4),R2	;;; GET BUFFER VIRTUAL ADDRESS
    514	001020					CALL	$CNV18		;;; CALCULATE 18-BIT UNIBUS ADDRESS
    515	001024	022121 				CMP	(R1)+,(R1)+	;;; MOVE POINTER TO SEL4 REGISTER
    516	001026	010221 				MOV	R2,(R1)+	;;; PUT LOW ORDER 16-BITS OF ADDRESS IN SEL4
    517	001030	016411 	000020 			MOV	C.CNT(R4),@R1	;;; PUT BYTE COUNT IN SEL6 REGISTER
    518	001034	042711 	140000 			BIC	#140000,@R1	;;; CLEAR EXTENDED MEMORY BITS
    519	001040	156361 	000234'	000001 		BISB	MEBTAB(R3),1(R1) ;;; SET EXTENDED MEMORY BITS IN SEL6
    520	001046					RESRG	<R3,R2,R1>	;;; RESTORE REGISTERS
    521	001054	042713 	000040 			BIC	#RQI,@R3	;;; RELEASE DMC DATA PORT
    522	001060	011605 				MOV	(SP),R5		;;; RESTORE ORIGINAL LINE TABLE POINTER
    523	001062	105015 				CLRB	(R5)		;;; CANCEL COMPLETION TIMER
    524	001064	105065 	000045 			CLRB	D.STAT+1(R5)	;;; CLEAR RDYI LATE FLAG
    525	001070					CALL	TIMRST		;;; RESTART COMPLETION TIMER IF NECESSARY
    526	001074	000613 				BR	5$		;;; GO CHECK FOR MORE BUFFERS TO ASSIGN
    527
    528	001076				60$:	RESRG	<R5>		;;; RESTORE ORIGINAL LINE TABLE POINTER
    529	001100					RETURN			;;; RETURN TO CALLER
    530						.DSABL	LSB
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 14
CTRLO  - CONTROL OUT INTERRUPT SERVICE

    532						.SBTTL	CTRLO  - CONTROL OUT INTERRUPT SERVICE
    533
    534					;+
    535					; **- CTRLO - CONTROL OUT INTERRUPT SERVICE ROUTINE
    536					;
    537					; THIS ROUTINE SERVICES ALL CONTROL OUT INTERRUPTS. THE POSSIBLE
    538					; ERRORS CAN BE DIVIDED INTO FOUR GROUPS:
    539					;	1) FATAL ERRORS -	ALL FATAL ERRORS CAUSE ALL REQUESTS TO BE
    540					;				RETURNED TO THE LLC WITH ERRORS
    541					;	2) NON-FATAL ERRORS -	THE NON-FATAL ERROR IS SIMPLY REPORTED TO
    542					;				THE HIGHER LEVEL (LLC).
    543					;	3) OVERRUN ERRORS -	THIS IS A WARNING THAT A MESSAGE WAS RECEIVED
    544					;				BUT THERE WAS NO RECEIVE BUFFER ASSIGNED.
    545					;	4) PROCEDURE ERRORS -	PROC ERRORS ARE USED TO  SYNCHRONIZE THE SHUT
    546					;				DOWN PROCESS WITH THE DMC.
    547					;
    548					; INPUTS:
    549					;	R3 = ADDRESS OF SEL2 REGISTER
    550					;	R4 - SCRATCH
    551					;	R5 = POINTER TO START OF LINE TABLE
    552					;-
    553
    554	001102	016304 	000004 		CTRLO:	MOV	4(R3),R4	;;; GET ERROR CODE
    555	001106	042704 	176000 			BIC	#176000,R4	;;; CLEAR EXTRANIOUS BITS
    556	001112					CALL	LOGGIT		;;; LOG THIS ERROR                              ;BH0003
    557
    558						.IF DF	X$$BUG		;;; ? DEBUG ?
    559						BEQ	.		;;; ? ERROR IF NO ERROR CODE
    560						.ENDC			;;; ? END DEBUG ?
    561
    562	001116	042713 	000200 			BIC	#RDYO,@R3	;;; RELEASE DMC DATA PORT
    563	001122	005743 				TST	-(R3)		;;; POINT TO SEL0 REGISTER
    564	001124					SAVRG	<R2>		;;; SAVE ADDITIONAL REGISTER
    565	001126	012702 	177777 			MOV	#-1,R2		;;; BIT SHIFT TO FIND FIRST ERROR BIT SET
    566	001132	005202 			5$:	INC	R2		;;; BUMP INDEX
    567	001134	006204 				ASR	R4		;;; THIS BIT SET?
    568	001136	103375 				BCC	5$		;;; NO - GO TRY NEXT ONE
    569	001140	006302 				ASL	R2		;;; OTHERWISE MULTIPLY BY 4
    570	001142	006302 				ASL	R2		;;; ...
    571	001144	062702 	000164'			ADD	#ERTBL,R2	;;; COMPUTE ADDRESS INTO ERROR TABLE
    572	001150	012204 				MOV	(R2)+,R4	;;; GET STATUS CODE
    573	001152					CALL	@(R2)+		;;; DISPATCH TO ERROR SERVICE ROUTINE
    574	001154					RESRG	<R2>		;;; RESTORE REGISTER
    575	001156					RETURN			;;; RETURN
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 15
CTRLO  - CONTROL OUT INTERRUPT SERVICE

    577					;+                                                                              ;BH0003
    578					; ** LOGGIT                                                                     ;BH0003
    579					;                                                                               ;BH0003
    580					; INPUTS:                                                                       ;BH0003
    581					;	R3 = ADDR OF SEL2 REGISTER                                              ;BH0003
    582					;	R4 = ERROR CODE                                                         ;BH0003
    583					;	R5 = DLT ADDRESS                                                        ;BH0003
    584					;                                                                               ;BH0003
    585					; INSIDE THE COROUTINE CALL, R2 WILL BE USED TO DEPOSIT INFO IN THE             ;BH0003
    586					; BUFFER.  HOWEVER, THE ORIGINAL CONTENTS OF R2 WILL BE RESTORED BY             ;BH0003
    587					; $CMLOG UPON COROUTINE COMPLETION.                                             ;BH0003
    588					;-                                                                              ;BH0003
    589					                                                                                ;BH0003
    590	001160	032704 	001000 		LOGGIT:	BIT	#PROC,R4	;;; PROCEDURE ERROR ?                           ;BH0002
    591	001164	001033 				BNE	20$		;;; YES, SO SKIP LOGGING EFFORT, BECAUSE        ;BH0002
    592									;;;   THIS IS NOT REALLY AN ERROR.              ;BH0002
    593	001166	016567 	000066 	176646 		MOV	D.LOGG(R5),PDST	;;; SET LOGGING DESTINATION                     ;BH0003
    594	001174	001427 				BEQ	20$		;;; WE AREN'T ENABLED                           ;BH0003
    595	001176	010046 				MOV	R0,-(SP)	;;; SAVE R0                                     ;BH0003
    596	001200	010146 				MOV	R1,-(SP)	;;;   AND R1                                    ;BH0003
    597	001202	010467 	176636 			MOV	R4,PRSN		;;; SET THE ERROR CODE                          ;BH0003
    598	001206	116567 	000026 	176632 		MOVB	D.LINE(R5),PLIN ;;;    SYS LINE #                               ;BH0003
    599	001214	012700 	000042'			MOV	#PDST,R0	;;; POINT TO ARG BLOCK                          ;BH0003
    600	001220					CALL	$CMLOG		;;; LOG IT >>>ENTER COROUTINE                   ;BH0003
    601	001224	103411 				BCS	1$			;;; >>>$CMLOG POINTS R2 AT MSG BUFFER   ;BH0007
    602	001226	012722 				MOV	(PC)+,(R2)+		;;; >>>SET REGISTER CODE &              ;BH0007
    603	001230	   001 	   010 			 .BYTE	E$DREG,8.		;;; >>> LENGTH OF REGISTER DATA         ;BH0007
    604	001232	010301 				MOV	R3,R1			;;; >>>COPY SEL2 POINTER                ;BH0003
    605	001234	005741 				TST	-(R1)			;;; >>>POINT IT TO SEL0                 ;BH0003
    606	001236	012122 				MOV	(R1)+,(R2)+		;;; >>>MOVE THE SEL CONTENT             ;BH0003
    607	001240	012122 				MOV	(R1)+,(R2)+		;;; >>>                                 ;BH0003
    608	001242	012122 				MOV	(R1)+,(R2)+		;;; >>>                                 ;BH0003
    609	001244	012122 				MOV	(R1)+,(R2)+		;;; >>>                                 ;BH0003
    610	001246					CALL	@(SP)+		;;; BACK TO $CMLOG TO FINISH >>>EXIT COROUTINE  ;BH0003
    611	001250	012601 			1$:	MOV	(SP)+,R1	;;; RESTORE REGISTERS                           ;BH0007
    612	001252	012600 				MOV	(SP)+,R0	;;; ...                                         ;BH0003
    613	001254				20$:	RETURN                                                                  ;BH0004
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 16
CTRLO  - CONTROL OUT INTERRUPT SERVICE

    615						.ENABL	LSB
    616					;
    617					; PROCEDURE ERROR
    618					;
    619	001256				PRCER:	CALL	7$		;;; DO FATAL ERROR PROCESSING
    620	001262	132765 	000001 	000044 		BITB	#STSTP,D.STAT(R5) ;;; STOP PENDING?
    621	001270	001403 				BEQ	5$		;;; NO - MUST BE DISABLE LINE PENDING
    622	001272	052713 	040000 			BIS	#MC,@R3		;;; MASTER CLEAR DMC TO ASSERT DTR
    623	001276	000461 				BR	REDSP		;;; GO RESTART ANY BLOCKED CONTROL FUNCTIONS
    624
    625	001300	112715 	000003 		5$:	MOVB	#3,(R5)		;;; START DISCONNECT TIMER
    626	001304					RETURN			;;; RETURN
    627
    628	001306	105015 			7$:	CLRB	(R5)		;;; CANCEL COMPLETION TIMER
    629	001310	152765 	000200 	000044 		BISB	#STMC,D.STAT(R5) ;;; INDICATE DMC MICRO-PROCESSOR STOPPED
    630	001316					RETURN
    631
    632					;
    633					; FATAL ERROR
    634					;
    635	001320				FTLER:	CALL	7$		;;; DO FATAL ERROR PROCESSING
    636
    637
    638					;
    639					; NON-FATAL ERROR
    640					;
    641	001324	010403 			NFTER:	MOV	R4,R3		;;; COPY ERROR CODE
    642	001326	000426 				BR	10$		;;; GO REPORT ERROR TO LLC
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 17
TMOUT  - TIMEOUT SERVICE ROUTINE

    644						.SBTTL	TMOUT  - TIMEOUT SERVICE ROUTINE
    645					;+
    646					; **- TMOUT - TIMEOUT SERVICE ROUTINE
    647					;
    648					; THIS ROUTINE IS ENTERED FOR ANY OF THE FOLLOWING REASONS:
    649					;	1) COMPLETION TIMER FIRED. THE DMC HAS FAILED TO RESPOND
    650					;	   WITHIN A PREDETERMINED AMOUNT OF TIME.
    651					;	2) DISCONNECT TIMER HAS FIRED. LINE DISABLE
    652					;	   HAS COMPLETED.
    653					;	3) TIMER FIRED THAT WAS STARTED WHEN A PREVIOUS FATAL
    654					;	   ERROR COULDN'T BE REPORTED BECAUSE OF A RESOURCE
    655					;	   ALLOCATION FAILURE.
    656					;
    657					; INPUTS:
    658					;	R5 = POINTER TO START OF LINE TABLE
    659					;	R0,R1,R2,R3,R4 - AVAILABLE FOR USE WITHOUT SAVING
    660					;
    661					;-
    662
    663	001330	016503 	000034 		TMOUT:	MOV	D.ERRS(R5),R3	;;; ANY OUTSTANDING ERRORS UNREPORTED?
    664	001334	001023 				BNE	10$		;;; YES - GO POST ASYNCHRONOUS ERROR
    665	001336	132765 	000003 	000044 		BITB	#STDIS!STSTP,D.STAT(R5) ;;; DISABLE LINE OR STOP IN PROGRESS?
    666	001344	001036 				BNE	REDSP		;;; YES
    667	001346	105765 	000045 			TSTB	D.STAT+1(R5)	;;; DID WE JUST CATCH THE RDYI LATE DROP PROBLEM?
    668	001352	001404 				BEQ	9$		;;; IF EQ, NO - THEN IT'S A REAL DEVICE TIMEOUT
    669	001354	105065 	000045 			CLRB	D.STAT+1(R5)	;;; CLEAR FLAG
    670	001360					CALLR	SETDMC		;;; GO TRY TO GET DMC STARTED UP AGAIN
    671
    672	001364	016503 	177772 		9$:	MOV	D.SEL2(R5),R3	;;; SET ARGS FOR LOGGIT CALL                    ;BH0005
    673	001370	012704 	000002 			MOV	#BIT01,R4	;;; THIS IS TMO FLAG                            ;BH0005
    674	001374	000401 				BR	1$		;;; DON'T LOG IT BUT ALLOW A                    ;SR0010
    675	001376	001160'				.WORD	LOGGIT		;;; A PATCH OF THE BR TO JSR TO                 ;SR0010
    676	001400				1$:				;;; REENABLE                                    ;SR0010
    677	001400	012703 	100374 			MOV	#CE.TMO,R3	;;; CONTINUE WITH ERROR PROCESSING              ;BH0005
    678					                                                                                ;**-1
    679	001404	005065 	000034 		10$:	CLR	D.ERRS(R5)	;;; CLEAR PENDING ERROR INDICATOR
    680	001410	016502 	000026 			MOV	D.LINE(R5),R2	;;; GET SYSTEM LINE NUMBER
    681	001414					CALL	$ASCMP		;;; POST ASYNCHRONOUS ERROR TO LLC
    682	001420	103007 				BCC	20$		;;; IF CC OPERATION SUCEEDED
    683	001422	032703 	000770 			BIT	#FTLFL,R3	;;; ALLOCATION FAILURE - REPORTING FATAL ERROR?
    684	001426	001404 				BEQ	20$		;;; NO - FORGET ERROR
    685	001430	010365 	000034 			MOV	R3,D.ERRS(R5)	;;; YES - STORE FATAL ERROR CODE
    686	001434	112715 	000002 			MOVB	#2,(R5)		;;; TRY AGAIN IN 2 SECONDS
    687	001440				20$:	RETURN			;;; RETURN
    688
    689						;*** NOTE : ALL CONTROL REQUEST ROUTINES MUST EITHER
    690						;***	NOT USE REGISTERS R0,R1,R2 OR THE REGISTERS
    691						;***	MUST BE SAVED HERE BEFORE DISPATCHING PENDING
    692						;***	REQUESTS OR THE CONTROL REQUEST CANNOT BE QUEUED.
    693						;***	SINCE THESE CONTROL FUNCTION ROUTINES RUN AT BOTH
    694						;***	INTERRUPT LEVEL AND TIMER LEVEL.
    695
    696	001442	016504 	000036 		REDSP:	MOV	D.CFNC(R5),R4	;;; ANY CONTROL FUNCTIONS IN PROGRESS?
    697	001446	001014 				BNE	30$		;;; IF NE, YES GO REDISPATCH
    698	001450				25$:	$DEQ	R5,D.PFNC,R4,40$ ;;; ANY PENDING CONTROL FUNCTIONS?
    699	001500	005065 	000036 		30$:	CLR	D.CFNC(R5)	;;; CLEAR CONTROL IN PROGRESS CELL
    700	001504	116403 	000011 			MOVB	C.MOD(R4),R3	;;; YES - GET SUBFUNCTION CODE
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 17-1
TMOUT  - TIMEOUT SERVICE ROUTINE

    701	001510					CALL	CTRL		;;; DISPATCH REQUEST
    702	001514	005765 	000036 			TST	D.CFNC(R5)	;;; CONTROL FUNCTION IN PROGRESS?
    703	001520	001753 				BEQ	25$		;;; IF EQ, NO - LOOP TILL DONE WITH PENDING REQUESTS
    704	001522				40$:	RETURN			;;; OTHERWISE RETURN
    705						.DSABL	LSB
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 18
TIMRST - TIMER RESET ROUTINE

    707						.SBTTL	TIMRST - TIMER RESET ROUTINE
    708					;+
    709					; **- TIMRST - TIMER RESET ROUTINE
    710					;
    711					; THIS ROUTINE DESIDES IF THE TIMER SHOULD BE RESTARTED AND IF SO
    712					; IT THEN RESTARTS IT.
    713					;
    714					; INPUTS:
    715					;	R5 = POINTER TO START OF LINE TABLE
    716					;-
    717
    718	001524	132765 	000201 	000044 	TIMRST:	BITB	#STSTP!STMC,D.STAT(R5) ;;; STOP PENDING OR DEVICE STOPPED?
    719	001532	001012 				BNE	10$		;;; YES - DON'T RESTART TIMER
    720	001534	005765 	000022 			TST	D.XASQ(R5)	;;; ARE THERE ANY XMIT BUFFERS ASSIGNED TO THE DMC?
    721	001540	001003 				BNE	5$		;;; YES - GO RESTART TIMER
    722	001542	005765 	000034 			TST	D.ERRS(R5)	;;; ARE THERE ANY UNREPORTED ERRORS?
    723	001546	001404 				BEQ	10$		;;; NO - THEN DON'T RESTART TIMER
    724	001550	105715 			5$:	TSTB	(R5)		;;; IS THE TIMER ALREADY GOING?
    725	001552	001002 				BNE	10$		;;; YES - DON'T BOTHER RESTARTING IT
    726	001554	116515 	000001 			MOVB	D.TIME(R5),(R5) ;;; RESTART TIMER
    727	001560				10$:	RETURN			;;; RETURN
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 19
XMTENB - TRANSMIT ENABLE REQUEST SERVICE ROUTINE

    729						.SBTTL	XMTENB - TRANSMIT ENABLE REQUEST SERVICE ROUTINE
    730					;+
    731					; **- XMTENB - TRANSMIT ENABLE SERVICE ROUTINE
    732					;
    733					; THIS ROUTINE SERVICES ALL TRANSMIT ENABLE REQUESTS FROM
    734					; THE LLC LEVEL.
    735					;
    736					; INPUTS:
    737					;	R4 = POINTER TO FIRST OR ONLY CCB IN CHAIN
    738					;	R5 = POINTER TO START OF LINE TABLE
    739					;
    740					; OUTPUTS: (ON CALL TO SETDMC)
    741					;	R3 = ADDRESS OF SEL0 REGISTER
    742					;	R4 - SCRATCH
    743					;	R5 = POINTER TO START OF LINE TABLE
    744					;-
    745
    746						.ENABL	LSB
    747	001562	010503 			XMTENB:	MOV	R5,R3		;; COPY POINTER TO START OF LINE TABLE
    748	001564	062703 	000016 			ADD	#D.XAWQ,R3	;; ADD OFFSET TO AWAITING ASSIGNMENT QUEUE
    749	001570					CALL	$CMQIN		;; QUEUE SINGLE OR CHAIN OF CCB(S)
    750	001574	016503 	177744 		10$:	MOV	D.SEL0(R5),R3	;; GET ADDRESS OF SEL0 REGISTER
    751	001600					CALLR	SETDMC		;; GO ASSIGN AS MANY BUFFERS TO THE DMC AS POSSIBLE
    752									;; AND RETURN
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 20
RCVENB - RECEIVE ENABLE REQUEST SERVICE ROUTINE

    754						.SBTTL	RCVENB - RECEIVE ENABLE REQUEST SERVICE ROUTINE
    755					;+
    756					; **- RCVENB - RECEIVE ENABLE REQUEST SERVICE ROUTINE
    757					;
    758					; THIS ROUTINE SERVICES ALL RECEIVE ENABLE REQUESTS FROM THE LLC LEVEL
    759					; AND ALL COMPLETIONS OF BUUFER WAIT REQUESTS.
    760					;
    761					; INPUTS:
    762					;	R3 = SUBFUNCTION CODE (AS A WORD INDEX)
    763					;	R4 = ADDRESS OF CCB
    764					;	R5 = POINTER TO START OF LINE TABLE
    765					;
    766					; OUTPUTS: (THE PROPER SERVICE ROUTINE IS CALLED WITH:)
    767					;	R4 = ADDRESS OF CCB
    768					;	R5 = POINTER TO START OF LINE TABLE
    769					;-
    770
    771	001604				RCVENB:	CALLR	@RCVDSP(R3)	;; CALL PROPER SERVICE ROUTINE
    772									;; AND RETURN
    773
    774
    775
    776					;
    777					; RCVBFW - COMPLETION OF BUFFER WAIT REQUEST
    778					;
    779
    780	001610				RCVBFW:	$ENQ	R5,D.RAWQ,R4	;; QUEUE BUFFER TO AWAITING ASSIGNMENT QUEUE
    781	001630	105365 	000002 			DECB	D.RAQC(R5)	;; ADJUST BUFFER COUNT FOR WAIT COMPLETION
    782	001634	000757 				BR	10$		;; GO TRY TO ASSIGN BUFFER TO DMC
    783
    784						.DSABL	LSB
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 21
CTRL   - CONTROL REQUEST SERVICE ROUTINE

    786						.SBTTL	CTRL   - CONTROL REQUEST SERVICE ROUTINE
    787					;+
    788					; **- CTRL - CONTROL REQUEST SERVICE ROUTINE
    789					;
    790					; THIS ROUTNIE SERVICES ALL CONTROL REQUESTS FROM THE LLC LEVEL.
    791					; THE ROUTINE DISPATCHS TO THE PROPER SERVICE ROUTINE BASED
    792					; ON THE SUBFUNCTION CODE.
    793					;
    794					; INPUTS:
    795					;	R3 = REQUEST SUBFUNCTION CODE (AS A WORD INDEX)
    796					;	R4 = ADDRESS OF CCB
    797					;	R5 = POINTER TO START OF LINE TABLE
    798					;
    799					; OUTPUTS: (ON CALL TO SERVICE ROUTINE)
    800					;	R3 = REQUEST SUBFUNCTION CODE
    801					;	R4 = ADDRESS OF CCB
    802					;	R5 = POINTER TO START OF LINE TABLE
    803					;-
    804
    805	001636				CTRL:	CALLR	@CNTDSP(R3)	;; DISPATCH TO PROPER SERVICE ROUTINE
    806									;; AND RETURN
    807
    808
    809
    810					;
    811					; QCTRL - QUEUE CONTROL REQUEST FOR LATER EXECUTION
    812					;
    813
    814	001642				QCTRL:	$ENQ	R5,D.PFNC,R4	;; QUEUE CONTROL REQUEST (STOP OR DISCONNECT IS PENDING)
    815	001662					RETURN			;; RETURN
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 22
CTRL   - CONTROL REQUEST SERVICE ROUTINE

    817						.ENABL	LSB
    818					;
    819					; START MOP MODE
    820					;
    821
    822	001664	012746 	006400 		STRMOP:	MOV	#MOP!HD!SCND,-(SP) ;; SET INDICATOR FOR MOP MODE (ALSO SET HALF-DUPLEX)
    823	001670	000401 				BR	5$		;; JOIN COMMON CODE
    824
    825					;
    826					; START
    827					;
    828
    829	001672	005046 			START:	CLR	-(SP)		;; SET INDICATOR FOR NORMAL MODE
    830	001674	005065 	000044 		5$:	CLR	D.STAT(R5)	;; CLEAR STATE
    831	001700	016503 	177744 			MOV	D.SEL0(R5),R3	;; GET ADDRESS OF SEL0 REGISTER
    832					;
    833					; ASSIGN BASE TABLE
    834					;
    835	001704					CALL	BASEIN		;; ASSIGN BASE TABLE TO DMC
    836	001710	103443 				BCS	20$		;; IF CS - ERROR DMC IS NOT RESPONDING
    837					;
    838					; SET CHARACTERISTICS (CONTROL IN)
    839					;
    840	001712	112713 	000041 			MOVB	#RQI+CTRLI,@R3	;; GET INPUT REQUEST AND RQI CODE
    841	001716					CALL	WAITL		;; WAIT FOR RDYI TO COME UP
    842	001722	103436 				BCS	20$		;; IF CS - ERROR DMC IS NOT RESPONDING
    843	001724	005063 	000006 			CLR	6(R3)		;; ASSUME FULL DUPLEX,PRIMARY STATION, AND NORMAL MODE
    844	001730	032765 	000001 	000046 		BIT	#BIT00,D.PLEX(R5) ;; FULL OR HALF DUPLEX?
    845	001736	001403 				BEQ	10$		;; FULL
    846	001740	052763 	006000 	000006 		BIS	#HD+SCND,6(R3)	;; HALF - SET HALF DUPLEX AND SECONDARY STATION
    847	001746	051663 	000006 		10$:	BIS	(SP),6(R3)	;; SET MODE
    848	001752	042713 	000040 			BIC	#RQI,@R3	;; RELEASE DMC DATA PORT
    849	001756					CALL	WAITL		;; WAIT FOR RDYI TO GO DOWN
    850	001762	103416 				BCS	20$		;; IF CS - ERROR DMC IS NOT RESPONDING
    851					;
    852					; SET UP QUOTA OF RECEIVE BUFFERS
    853					;
    854	001764					SAVRG	<R4>		;; SAVE REGISTER
    855	001766	116504 	000051 			MOVB	D.PLEX+3(R5),R4	;; GET QUOTA OF RECEIVE BUFFERS (POSITIVE #)
    856	001772	105404 				NEGB	R4		;; MAKE IT A MINUS COUNT
    857	001774	110465 	000002 			MOVB	R4,D.RAQC(R5)	;; SET UP RECEIVE BUFFER QUOTA
    858	002000	110465 	000003 			MOVB	R4,D.RBFC(R5)	;; ...
    859	002004					CALL	SETDMC		;; GO ASSIGN RECEIVE BUFFERS
    860	002010					RESRG	<R4>		;; RESTORE REGISTER
    861	002012	012703 	000001 			MOV	#CS.SUC,R3	;; SIGNAL SUCCESSFUL COMPLETION
    862	002016	000402 				BR	25$		;; GO POST START COMPLETE
    863
    864	002020	012703 	100362 		20$:	MOV	#CE.ABO,R3	;; GET ERROR COMPLETION CODE
    865	002024	005726 			25$:	TST	(SP)+		;; CLEAN UP STACK
    866	002026					CALLR	$CTCMP		;; POST START COMPLETE
    867									;; AND RETURN
    868						.DSABL	LSB
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 23
CTRL   - CONTROL REQUEST SERVICE ROUTINE

    870						.ENABL	LSB
    871
    872	002032	012746 	000020 		WAITS:	MOV	#20,-(SP)	;; STORE SHORT WAIT LOOP COUNT
    873	002036	000402 				BR	5$		;; JOIN COMMON CODE
    874
    875	002040	012746 	000200 		WAITL:	MOV	#200,-(SP)	;; STORE LONG WAIT LOOP COUNT
    876	002044	000241 			5$:	CLC			;; ASSUME SUCCESSFUL COMPLETION
    877	002046	132713 	000240 		10$:	BITB	#RDYI+RQI,@R3	;; ARE BOTH RDYI & RQI CLEAR?
    878	002052	001411 				BEQ	20$		;; YES - THEN WE WERE WAITING FOR RDYI TO CLEAR
    879	002054	132713 	000200 			BITB	#RDYI,@R3	;; NO - THEN IS RDYI SET?
    880	002060	001403 				BEQ	15$		;; NO - LOOP
    881	002062	132713 	000040 			BITB	#RQI,@R3	;; YES - THEN IS RQI ALSO SET?
    882	002066	001003 				BNE	20$		;; YES - THEN WE WERE WAITING FOR RDYI TO COME UP
    883	002070	005316 			15$:	DEC	(SP)		;; LOOP TIL END OR PROPER CONDITION
    884	002072	001365 				BNE	10$		;; ...
    885	002074	000261 				SEC			;; SET C-BIT TO INDICATE ERROR
    886	002076	005226 			20$:	INC	(SP)+		;; CLEAN UP STACK AND DON'T ALTER C-BIT
    887	002100					RETURN			;; RETURN
    888						.DSABL	LSB
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 24
CTRL   - CONTROL REQUEST SERVICE ROUTINE

    890
    891	002102	052713 	040000 		BASEIN:	BIS	#MC,@R3		;; MASTER CLEAR THE DMC
    892					;
    893					; NOTE: THE FOLLOWING INSTRUCTION IS NEEDED ONLY ON KMC BOARDS
    894					;
    895	002106	012713 	100000 			MOV	#RUN,@R3	;; SET MICRO-PROCESSOR RUN BIT
    896	002112	052763 	000100 	000002 		BIS	#IEO,2(R3)	;; SET OUTPUT INTERRUPT ENABLE
    897	002120	112713 	000043 			MOVB	#RQI+BASEI,@R3	;; SET REQUEST AND RQI CODES
    898	002124					CALL	WAITL		;; WAIT FOR RDYI TO COME UP
    899	002130	103426 				BCS	10$		;; IF CS - ERROR DMC IS NOT RESPONDING
    900	002132					SAVRG	<R4,R2,R3>	;; SAVE REGISTERS
    901	002140	016503 	000030 			MOV	D.LBIA(R5),R3	;; GET BASE TABLE BIAS ADDRESS
    902	002144	016502 	000032 			MOV	D.LVA(R5),R2	;; GET BASE TABLE VIRTUAL ADDRESS
    903	002150					CALL	$CNV18		;; CONVERT TO 18-BIT UNIBUS ADDRESS
    904	002154	010304 				MOV	R3,R4		;; COPY EXTENDED MEMORY BITS
    905	002156					RESRG	<R3>		;; RESTORE REGISTER
    906	002160	010263 	000004 			MOV	R2,4(R3)	;; STORE LOW ORDER 16-BITS OF BASE TABLE ADDRESS IN SEL4
    907	002164					RESRG	<R2>		;; RESTORE REGISTER
    908	002166	116463 	000234'	000007 		MOVB	MEBTAB(R4),7(R3) ;; STORE EXTENDED MEMORY BITS IN SEL6
    909	002174					RESRG	<R4>		;; RESTORE REGISTER
    910	002176	042713 	000040 			BIC	#RQI,@R3	;; RELEASE DMC DATA PORT
    911	002202					CALL	WAITL		;; WAIT FOR RDYI TO GO DOWN
    912	002206				10$:	RETURN			;; RETURN
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 25
CTRL   - CONTROL REQUEST SERVICE ROUTINE

    914					;
    915					; STOP
    916					;
    917
    918						.ENABL	LSB
    919	002210	005765 	000036 		STOP:	TST	D.CFNC(R5)	;; IS THERE A CONTROL FUNCTION IN PROGRESS?
    920	002214	001402 				BEQ	5$		;; IF EQ, NO
    921	002216					CALLR	QCTRL		;; OTHERWISE QUEUE REQUEST FOR LATER
    922
    923	002222	132765 	000001 	000044 	5$:	BITB	#STSTP,D.STAT(R5) ;; IS THERE A STOP PENDING?
    924	002230	001014 				BNE	20$		;; IF EQ, YES - THEN GO DO IT
    925	002232	132765 	000200 	000044 		BITB	#STMC,D.STAT(R5) ;; IS THE DMC ALREADY STOPPED?
    926	002240	001404 				BEQ	10$		;; IF EQ, NO - GO STOP THE DMC MICRO-PROCESSOR
    927	002242					CALL	20$		;; OTHERWISE JUST DO CLEAN-UP
    928	002246					CALLR	REDSP		;; GO DISPATCH ANY PENDING CONTROL REQUESTS
    929
    930	002252	152765 	000001 	000044 	10$:	BISB	#STSTP,D.STAT(R5) ;; SET STOP PENDING STATE BIT
    931	002260	000427 				BR	40$		;; JOIN COMMON CODE
    932
    933	002262	142765 	000001 	000044 	20$:	BICB	#STSTP,D.STAT(R5) ;; CLEAR STOP PENDING STATE
    934	002270					CALL	CLRQS		;; GO CLEAN UP ALL QUEUES
    935	002274	000436 				BR	60$		;; JOIN COMMON CODE
    936
    937					;
    938					; DISABLE LINE
    939					;
    940
    941	002276	005765 	000036 		DISABL:	TST	D.CFNC(R5)	;; IS THERE A CONTROL FUNCTION IN PROGRESS?
    942	002302	001402 				BEQ	30$		;; IF EQ, NO
    943	002304					CALLR	QCTRL		;; OTHERWISE QUEUE REQUEST
    944
    945	002310	132765 	000002 	000044 	30$:	BITB	#STDIS,D.STAT(R5) ;; IS THERE A DISABLE PENDING?
    946	002316	001020 				BNE	50$		;; YES - THEN GO DO IT
    947	002320	152765 	000002 	000044 		BISB	#STDIS,D.STAT(R5) ;; SET DISABLE PENDING STATE BIT
    948	002326	016503 	177744 			MOV	D.SEL0(R5),R3	;; GET ADDRESS OF THE SEL 0 REGISTER
    949	002332					CALL	BASEIN		;; MASTER CLEAR DMC AND REASSIGN BASE TABLE
    950	002336	103410 				BCS	50$		;; IF CS, DMC IS BROKEN RETURN COMPLETION
    951	002340	052775 	000142 	177744 	40$:	BIS	#142,@D.SEL0(R5) ;; REQUEST A PROCEDURE ERROR
    952	002346	112715 	000003 			MOVB	#3,(R5)		;; START DISABLE COMPLETION TIMER
    953	002352	010465 	000036 			MOV	R4,D.CFNC(R5)	;; STORE CCB FOR CONTROL REQUEST IN PROGRESS
    954	002356					RETURN			;; RETURN
    955
    956	002360	005075 	177772 		50$:	CLR	@D.SEL2(R5)	;; MAKE SURE OUTPUT INTERRUPT ENABLE IS CLEAR
    957	002364	142765 	000002 	000044 		BICB	#STDIS,D.STAT(R5) ;; CLEAR DISABLE PENDING STATE BIT
    958	002372	012703 	000001 		60$:	MOV	#CS.SUC,R3	;; SIGNAL SUCCESSFUL COMPLETION
    959	002376					CALLR	$CTCMP		;; POST CONTROL COMPLETE
    960									;; AND RETURN
    961						.DSABL	LSB
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 26
CTRL   - CONTROL REQUEST SERVICE ROUTINE

    963					;
    964					; INIT - INTIALIZE
    965					; EXIT - TERMINATE
    966					;
    967	002402				INIT:
    968	002402				EXIT:				;; NOP FOR NOW
    969
    970					;
    971					; GET - GET LINE CHARACTERISTICS
    972					; SET - SET LINE CHARACTERISTICS
    973					;
    974	002402				GET:				;; NOP FOR NOW
    975	002402				SET:
    976
    977					;
    978					; RING - LOOK FOR RING
    979					; ENABLE - ENABLE THE DEVICE
    980					;
    981	002402	052775 	040000 	177744 	ENABL:	BIS	#MC,@D.SEL0(R5)	;; MASTER CLEAR DMC TO ASSERT DTR
    982	002410	012703 	000001 		RING:	MOV	#CS.SUC,R3	;; INDICATE SUCCESSFUL COMPLETION
    983	002414					CALLR	$CTCMP		;; POST COMPLETION TO LLC
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 27
CLRQS  - QUEUE CLEAN UP SUBROUTINE

    985						.SBTTL	CLRQS  - QUEUE CLEAN UP SUBROUTINE
    986					;+
    987					; **- CLRQS - QUEUE CLEAN UP SUBROUTINE
    988					;
    989					; THIS SUBROUTINE CLEANS ALL THE REQUESTS OUT OF THE LINE TABLE QUEUES.
    990					; IT RETURNS ALL RECEIVE BUFFERS TO THE POOL AND RETURNS ALL TRANSMIT REQUESTS
    991					; WITH ABORT ERRORS.
    992					;
    993					; INPUTS:
    994					;	R5 = POINTER TO START OF LINE TABLE
    995					;
    996					;-
    997
    998	002420				CLRQS:	SAVRG	<R4>		;; SAVE REGISTER
    999	002422	016504 	000026 			MOV	D.LINE(R5),R4	;; GET SYSTEM LINE NUMBER
   1000	002426					CALL	$RDBQP		;; PURGE ALL BUFFER WAIT REQUESTS
   1001	002432	105015 				CLRB	(R5)		;; CANCEL COMPLETION TIMER
   1002
   1003	002434	116565 	000003 	000002 		MOVB	D.RBFC(R5),D.RAQC(R5) ;; RESET NUMBER OF RECV BUFFERS CURRENTLY ASSIGNAB
   1004	002442	116565 	000015 	000014 		MOVB	D.XBFC(R5),D.XAQC(R5) ;; RESET NUMBER OF XMIT BUFFERS CURRENTLY ASSIGNAB
   1005	002450				10$:	$DEQ	R5,D.XASQ,R4,20$ ;; GET NEXT CCB FROM ASSIGNED TO DMC QUEUE
   1006	002500	012703 	100362 			MOV	#CE.ABO,R3	;; GET ABORT ERROR CODE
   1007	002504					CALL	$XMCMP		;; POST TRANSMIT COMPLETE
   1008	002510	000757 				BR	10$		;; LOOP TILL QUEUE IS EMPTY
   1009
   1010	002512				20$:	$DEQ	R5,D.XAWQ,R4,30$ ;; GET NEXT CCB FROM AWAITING ASSIGNMENT QUEUE
   1011	002542	012703 	100362 			MOV	#CE.ABO,R3	;; GET ABORT ERROR CODE
   1012	002546					CALL	$XMCMP		;; POST TRANSMIT COMPLETE
   1013	002552	000757 				BR	20$		;; LOOP TILL QUEUE IS EMPTY
   1014
   1015	002554				30$:	$DEQ	R5,D.RASQ,R4,40$ ;; GET NEXT CCB FROM ASSIGNED TO DMC QUEUE
   1016	002604					CALL	$RDBRT		;; RETURN BUFFER TO POOL
   1017	002610	000761 				BR	30$		;; LOOP TILL QUEUE IS EMPTY
   1018
   1019	002612				40$:	$DEQ	R5,D.RAWQ,R4,50$ ;; GET NEXT CCB FROM AWAITING ASSIGNMENT QUEUE
   1020	002642					CALL	$RDBRT		;; RETURN BUFFER TO POOL
   1021	002646	000761 				BR	40$		;; LOOP TILL QUEUE IS EMPTY
   1022
   1023	002650				50$:	RESRG	<R4>		;; RESTORE REGISTER
   1024	002652					RETURN			;; RETURN
   1025
   1026
   1027
   1028		000001 				.END
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 27-1
SYMBOL TABLE

A$$CHK= 000000   	CTRL    001636R  	D.OVCT  177752 G 	E$RRTO= 000006   	F$$LVL= 000001
A$$CPS= 000000   	CTRLI = 000001   	D.PFNC  000040 G 	E$RSEL= 000030   	GET     002402R
A$$PRI= 000000   	CTRLO   001102R  	D.PLEX  000046 G 	E$RSIN= 000004   	G$$TPP= 000000
A$$TRP= 000000   	C$$CKP= 000000   	D.RAQC  000002 G 	E$RSRC= 000015   	G$$TSS= 000000
BASEI = 000003   	C$$ORE= 000400   	D.RASQ  000010 G 	E$RTRN= 000026   	G$$TTK= 000000
BASEIN  002102R  	C$$RSH= 177564   	D.RAWQ  000004 G 	E$RUCL= 000001   	G$$WRD= 000000
BIT00 = 000001   	C.BID   000003   	D.RBFC  000003 G 	E$RXTO= 000027   	HD    = 002000
BIT01 = 000002   	C.BUF   000014   	D.RCV   000056 G 	E$TASC= 000001   	IEI   = 000100
BIT02 = 000004   	C.BUF1  000014   	D.SEL0  177744 G 	E$TASX= 000002   	IEO   = 000100
BIT03 = 000010   	C.BUF2  000024   	D.SEL2  177772 G 	E$THDW= 000003   	INIT    002402R
BIT04 = 000020   	C.CNT   000020   	D.STAT  000044 G 	E$TSFT= 000004   	I$$RAR= 000000
BIT05 = 000040   	C.CNT1  000020   	D.TIME  000001 G 	E$TTOP= 000005   	I$$RDN= 000000
BIT06 = 000100   	C.CNT2  000030   	D.TIMR  000000 G 	E$$XPR= 000000   	KDP   = 000034
BIT07 = 000200   	C.FLG   000022   	D.TLZ   000052 G 	FC.CCP= 000020   	KDSAR0= 172360
BIT08 = 000400   	C.FLG1  000022   	D.XAQC  000014 G 	FC.CTL= 000006   	KDSDR0= 172320
BIT09 = 001000   	C.FLG2  000032   	D.XASQ  000022 G 	FC.KCP= 000016   	KDZ   = 000036
BIT10 = 002000   	C.FNC   000010   	D.XAWQ  000016 G 	FC.KIL= 000004   	KISAR0= 172340
BIT11 = 004000   	C.LIN   000006   	D.XBFC  000015 G 	FC.RCE= 000002   	KISAR5= 172352
BIT12 = 010000   	C.LNK   000000   	D.XMT   000054 G 	FC.RCP= 000014   	KISAR6= 172354
BIT13 = 020000   	C.MOD   000011   	ENABL   002402R  	FC.TIM= 000010   	KISAR7= 172356
BIT14 = 040000   	C.NSP   000004   	ERRTB   000000R  	FC.XCP= 000012   	KISDR0= 172300
BIT15 = 100000   	C.RSV   000002   	ERRTBL= 000010   	FC.XME= 000000   	KISDR6= 172314
CB.CCB= 000002   	C.STA   000007   	ERTBL   000164R  	FE.CAL= 000040   	KISDR7= 172316
CB.RDB= 000004   	C.STS   000012   	EXIT    002402R  	FE.DRV= 000010   	KL    = 000040
CE.ABO= 100362   	DA    = 000010   	E$DDAT= 000003   	FE.EXP= 000200   	K$$CNT= 177546
CE.DIS= 100366   	DISABL  002276R  	E$DDEV= 000005   	FE.EXT= 000001   	K$$CSR= 177546
CE.ERR= 100370   	DL    = 000004   	E$DLPC= 000013   	FE.EXV= 000004   	K$$LDC= 000000
CE.MOP= 100372   	DLA   = 000020   	E$DMCD= 000012   	FE.LSI= 000400   	K$$TPS= 000074
CE.NTE= 100361   	DLV   = 000004   	E$DNOD= 000011   	FE.MUP= 000002   	LD$LP = 000000
CE.RTE= 100376   	DMC   = 000014   	E$DOSI= 000010   	FE.MXT= 040000   	LGDAT = 000012
CE.SRC= 100364   	DMCITB= 000132R  	E$DREC= 000007   	FE.NLG= 100000   	LOGGIT  001160R
CE.TMO= 100374   	DMCOTB= 000016 G 	E$DREG= 000001   	FE.PKT= 000100   	L$$ASG= 000000
CF.EOM= 000004   	DP    = 000000   	E$DRSN= 000006   	FE.PLA= 000020   	L$$DRV= 000000
CF.HDR= 000020   	DQ    = 000006   	E$DTHR= 000015   	FS.AST= 000000   	L$$P11= 000001
CF.LB = 100000   	DTE   = 000024   	E$DTIM= 000002   	FS.CIB= 002000   	L$$11R= 000000
CF.SOM= 000010   	DU    = 000002   	E$DTPC= 000014   	FS.CRA= 001000   	MC    = 040000
CF.SYN= 000040   	DUP   = 000012   	E$DTXT= 000016   	FS.DIS= 013000   	MEBTAB  000234R
CF.TRN= 000100   	DUV   = 000002   	E$DUPT= 000004   	FS.DVC= 001000   	MOP   = 000400
CLRQS   002420R  	DV    = 000026   	E$RABO= 000017   	FS.ENB= 012000   	MPAR  = 172100
CMODE = 140000   	DZ    = 000030   	E$RCRC= 000023   	FS.GET= 006000   	MPCSR = 177746
CNTDSP  000102R  	D$$BUG= 177514   	E$RDSC= 000005   	FS.INI= 000000   	M$$CRB= 000124
CS.ABO= 000100   	D$$ISK= 000000   	E$RFRM= 000024   	FS.KIL= 000000   	M$$CRX= 000000
CS.BUF= 000200   	D$$L11= 000001   	E$RHFE= 000016   	FS.LTM= 001000   	M$$FCS= 000000
CS.DCR= 000400   	D$$YNC= 000000   	E$RLIN= 000003   	FS.MNT= 004000   	M$$MGE= 000000
CS.DEV= 000002   	D$$YNM= 000000   	E$RMOP= 000014   	FS.MSN= 014000   	M$$OVR= 000000
CS.DIS= 000040   	D.CFNC  000036 G 	E$RMTL= 000013   	FS.RNG= 011000   	NFLTER= 000003
CS.ENB= 000020   	D.ERRS  000034 G 	E$RNAK= 000032   	FS.RTN= 001000   	NFTER   001324R
CS.EOF= 000001   	D.IVCT  177724 G 	E$RNXM= 000002   	FS.SET= 005000   	N$$LDV= 000001
CS.ERR= 100000   	D.LBIA  000030 G 	E$ROVR= 000012   	FS.STM= 000000   	N$$MOV= 000010
CS.HFE= 002000   	D.LEN = 000144 G 	E$RPEC= 000022   	FS.STP= 002000   	N$$SYS= 000001
CS.LST= 040000   	D.LINE  000026 G 	E$RPEM= 000021   	FS.STR= 001000   	N$$USR= 000001
CS.MTL= 004000   	D.LOGG  000066 G 	E$RPET= 000020   	FS.TRM= 003000   	ORUN  = 000004
CS.RNG= 000010   	D.LREC  000060 G 	E$RPRC= 000025   	FS.XKL= 002000   	PDID  = 000050R
CS.ROV= 000004   	D.LVA   000032 G 	E$RPWF= 000007   	FS.XOF= 010000   	PDST    000042R
CS.RSN= 010000   	D.OFFI= 000030 G 	E$RPWR= 000010   	FS.XON= 007000   	PDT1    000046R
CS.SUC= 000001   	D.OFFO= 000002 G 	E$RRET= 000031   	FTLER   001320R  	PDT2    000050R
CS.TMO= 020000   	D.OFFS= 000054 G 	E$RRTE= 000011   	FTLFL = 000770   	PIRQ  = 177772
DMC	MACRO M1110  27-DEC-79 09:13  PAGE 27-2
SYMBOL TABLE

PLIN  = 000046R  	P$$WRD= 000000   	SCND  = 004000   	T$$KMG= 000000   	XMT   = 000000
PLNG    000052R  	QCTRL   001642R  	SET     002402R  	T$$MIN= 000000   	XMTENB  001562R
PMODE = 030000   	Q$$OPT= 000010   	SETBUF  000730R  	UBMPR = 170200   	XMTOUT  000426R
PNAM    000054R  	RCV   = 000004   	SETDMC  000522R  	UDSAR0= 177660   	X$$DBT= 000000
PRCER   001256R  	RCVBFW  001610R  	SISDR0= 172200   	UDSDR0= 177620   	$ASCMP= ****** GX
PROC  = 001000   	RCVDSP  000076R  	SR0   = 177572   	UISAR0= 177640   	$CMLOG= ****** GX
PROCD   000320R  	RCVENB  001604R  	SR3   = 172516   	UISAR4= 177650   	$CMQIN= ****** GX
PRSN    000044R  	RCVOUT  000326R  	START   001672R  	UISAR5= 177652   	$CNV18= ****** GX
PR0   = 000000   	RDYI  = 000200   	STDIS = 000002   	UISAR6= 177654   	$CTCMP= ****** GX
PR1   = 000040   	RDYO  = 000200   	STMC  = 000200   	UISAR7= 177656   	$DMCTB  000064RG
PR4   = 000200   	RECVIN  000274R  	STOP    002210R  	UISDR0= 177600   	$INTSX= ****** GX
PR5   = 000240   	REDSP   001442R  	STRMOP  001664R  	UISDR4= 177610   	$RCCMP= ****** GX
PR6   = 000300   	RING    002410R  	STSTP = 000001   	UISDR5= 177612   	$RDBGT= ****** GX
PR7   = 000340   	RQI   = 000040   	SWR   = 177570   	UISDR6= 177614   	$RDBQP= ****** GX
PS    = 177776   	RUN   = 100000   	S$$WRG= 000000   	UISDR7= 177616   	$RDBRT= ****** GX
PSTA    000062R  	R$$DER= 000000   	S$$YSZ= 007600   	V$$CTR= 001000   	$RDBWT= ****** GX
PTAB    000060R  	R$$K11= 000001   	TIMRST  001524R  	WAITL   002040R  	$XMCMP= ****** GX
PTYP    000056R  	R$$SND= 000000   	TMOUT   001330R  	WAITS   002032R  	$$DMC   000240RG
P$$P45= 000000   	R$$11M= 000000   	TPS   = 177564   	XMITIN  000302R  	..OFF.= 177724

. ABS.	177776	   000
      	002654	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  9617 WORDS  ( 38 PAGES)
DYNAMIC MEMORY:  11116 WORDS  ( 42 PAGES)
ELAPSED TIME:  00:01:05
DMC,[131,34]DMC/CR=[130,10]NETLIB/ML,RSXMC4/PA:1,[131,10]DMC
DMC        CREATED BY  MACRO  ON 27-DEC-79 AT 09:14	PAGE 1
SYMBOL CROSS REFERENCE                                  CREF         
SYMBOL	VALUE		REFERENCES
BASEI 	= 000003	#4-107      24-897    
BASEIN	  002102 R	 22-835    #24-891     25-949    
BIT00 	= 000001	#3-74       4-106      4-107      4-112      5-144      22-844    
BIT01 	= 000002	#3-75       4-107      4-112      5-145      17-673    
BIT02 	= 000004	#3-76       4-108      4-110      5-146     
BIT03 	= 000010	#3-77       4-113      5-147     
BIT04 	= 000020	#3-78       4-113      5-148     
BIT05 	= 000040	#3-79       4-103      4-113     
BIT06 	= 000100	#3-80       4-101      4-102      4-113      5-149     
BIT07 	= 000200	#3-81       4-99       4-100      4-113      5-150     
BIT08 	= 000400	#3-82       4-113      4-117      5-151     
BIT09 	= 001000	#3-83       4-111     
BIT10 	= 002000	#3-84       4-115     
BIT11 	= 004000	#3-85       4-116     
BIT12 	= 010000	#3-86      
BIT13 	= 020000	#3-87      
BIT14 	= 040000	#3-88       4-97      
BIT15 	= 100000	#3-89       4-96      
CE.ABO	= 100362	 22-864     27-1006    27-1011   
CE.DIS	= 100366	 8-259      8-262     
CE.ERR	= 100370	 8-257      8-258      8-261     
CE.MOP	= 100372	 8-256     
CE.RTE	= 100376	 8-253     
CE.SRC	= 100364	 8-260     
CE.TMO	= 100374	 8-254      17-677    
CLRQS 	  002420 R	 25-934    #27-998    
CNTDSP	  000102 R	#6-203      21-805    
CS.LST	= 040000	 13-456     13-509     20-780     21-814    
CS.SUC	= 000001	 12-398     12-408     22-861     25-958     26-982    
CTRL  	  001636 R	 6-185      17-701    #21-805    
CTRLI 	= 000001	#4-106      22-840    
CTRLO 	  001102 R	 7-240      7-244     #14-554    
C.BUF 	  000014	 13-512     13-513    
C.CNT 	  000020	*12-395    *12-396     13-517    
C.LIN 	  000006	*13-457    
C.MOD 	  000011	 17-700    
C.STS 	  000012	*13-456    *13-509    *20-780    *21-814    
DISABL	  002276 R	 6-215     #25-941    
DMC   	= 000014	 5-158     
DMCITB	= 000132 R	#7-224      7-238      9-314     
DMCOTB	= 000016  G	#7-238     
D.CFNC	  000036  G	#5-132      17-696    *17-699     17-702     25-919     25-941    *25-953    
D.ERRS	  000034  G	#5-132      17-663    *17-679    *17-685     18-722    
D.IVCT	  177724  G	#5-132      5-132     
D.LBIA	  000030  G	#5-132      24-901    
D.LEN 	= 000144  G	#5-132     
D.LINE	  000026  G	#5-132      13-451     13-457     15-598     17-680     27-999    
D.LOGG	  000066  G	#5-132      15-593    
D.LREC	  000060  G	#5-132     
D.LVA 	  000032  G	#5-132      24-902    
D.OFFI	= 000030  G	#5-132     
D.OFFO	= 000002  G	#5-132     
DMC        CREATED BY  MACRO  ON 27-DEC-79 AT 09:14	PAGE 2
SYMBOL CROSS REFERENCE                                  CREF         
SYMBOL	VALUE		REFERENCES
D.OFFS	= 000054  G	#5-132     
D.OVCT	  177752  G	#5-132     
D.PFNC	  000040  G	#5-132      17-698    *17-698    *17-698     17-698    *17-698     21-814    *21-814    
D.PLEX	  000046  G	#5-132      22-844     22-855    
D.RAQC	  000002  G	#5-132     *12-394    *13-453    *20-781    *22-857    *27-1003   
D.RASQ	  000010  G	#5-132      12-393    *12-393    *12-393     12-393    *12-393     13-449     27-1015   *27-1015   
                        *27-1015    27-1015   *27-1015   
D.RAWQ	  000004  G	#5-132      10-340     13-449     13-451    *13-453     13-457     13-461     20-780    *20-780    
                         27-1019   *27-1019   *27-1019    27-1019   *27-1019   
D.RBFC	  000003  G	#5-132     *22-858     27-1003   
D.RCV 	  000056  G	#5-132      12-400    *12-402    
D.SEL0	  177744  G	#5-132      19-750     22-831     25-948     25-951     26-981    
D.SEL2	  177772  G	#5-132      17-672     25-956    
D.STAT	  000044  G	#5-132     *13-499    *13-524     16-620    *16-629     17-665     17-667    *17-669     18-718    
                        *22-830     25-923     25-925    *25-930    *25-933     25-945    *25-947    *25-957    
D.TIME	  000001  G	#5-132      18-726    
D.TIMR	  000000  G	#5-132     
D.TLZ 	  000052  G	#5-132     
D.XAQC	  000014  G	#5-132     *12-406     13-461    *27-1004   
D.XASQ	  000022  G	#5-132      12-405    *12-405    *12-405     12-405    *12-405     18-720     27-1005   *27-1005   
                        *27-1005    27-1005   *27-1005   
D.XAWQ	  000016  G	#5-132      10-343     19-748     27-1010   *27-1010   *27-1010    27-1010   *27-1010   
D.XBFC	  000015  G	#5-132      27-1004   
D.XMT 	  000054  G	#5-132      12-410    *12-412    
ENABL 	  002402 R	 6-214     #26-981    
ERRTB 	  000000 R	#5-143      5-152      5-158     
ERRTBL	= 000010	 5-143     #5-152     
ERTBL 	  000164 R	#8-253      14-571    
EXIT  	  002402 R	#26-968    
E$DREG	= 000001	 15-603    
E$RDSC	= 000005	 5-149     
E$RMOP	= 000014	 5-147     
E$RMTL	= 000013	 5-148     
E$RNXM	= 000002	 5-151     
E$ROVR	= 000012	 5-146     
E$RRTE	= 000011	 5-144     
E$RRTO	= 000006	 5-145     
E$RSRC	= 000015	 5-150     
E$THDW	= 000003	 5-158     
FTLER 	  001320 R	 8-256      8-257      8-258      8-260      8-261     #16-635    
FTLFL 	= 000770	#4-113      17-683    
GET   	  002402 R	#26-974    
HD    	= 002000	#4-115      22-822     22-846    
IEI   	= 000100	#4-101      10-344     11-368     13-493     13-495    
IEO   	= 000100	#4-102      24-896    
INIT  	  002402 R	#26-967    
I$$AS 	= ******	 6-162     
LGDAT 	= 000012	#5-157      5-158     
LOGGIT	  001160 R	 14-556    #15-590     17-675    
MC    	= 040000	#4-97       16-622     24-891     26-981    
MEBTAB	  000234 R	#8-268      13-519     24-908    
MOP   	= 000400	#4-117      22-822    
DMC        CREATED BY  MACRO  ON 27-DEC-79 AT 09:14	PAGE 3
SYMBOL CROSS REFERENCE                                  CREF         
SYMBOL	VALUE		REFERENCES
M$$MGE	= 000000	 5-132      5-132      5-132      5-132     
NFLTER	= 000003	#4-112     
NFTER 	  001324 R	 8-253      8-254      8-259     #16-641    
ORUN  	= 000004	#4-110     
PDID  	= 000050 R	#5-160     
PDST  	  000042 R	#5-158     *15-593     15-599    
PDT1  	  000046 R	#5-158      5-159     
PDT2  	  000050 R	#5-158      5-160     
PLIN  	= 000046 R	#5-159     *15-598    
PLNG  	  000052 R	#5-158     
PNAM  	  000054 R	#5-158     
PRCER 	  001256 R	 8-262     #16-619    
PROC  	= 001000	#4-111      15-590    
PROCD 	  000320 R	 7-227      7-228      7-231     #11-368    
PRSN  	  000044 R	#5-158     *15-597    
PSTA  	  000062 R	#5-158     
PTAB  	  000060 R	#5-158     
PTYP  	  000056 R	#5-158     
QCTRL 	  001642 R	#21-814     25-921     25-943    
RCV   	= 000004	#4-108      13-458    
RCVBFW	  001610 R	 6-198     #20-780    
RCVDSP	  000076 R	#6-196      20-771    
RCVENB	  001604 R	 6-183     #20-771    
RCVOUT	  000326 R	 7-243     #12-393    
RDYI  	= 000200	#4-99       23-877     23-879    
RDYO  	= 000200	#4-100      12-414     13-483     14-562    
RECVIN	  000274 R	 7-229     #10-340    
REDSP 	  001442 R	 16-623     17-666    #17-696     25-928    
RING  	  002410 R	 6-213     #26-982    
RQI   	= 000040	#4-103      11-368     13-458     13-466     13-467     13-521     22-840     22-848     23-877    
                         23-881     24-897     24-910    
RUN   	= 100000	#4-96       24-895    
R$$11D	= ******	 6-162     
SCND  	= 004000	#4-116      22-822     22-846    
SET   	  002402 R	#26-975    
SETBUF	  000730 R	 10-346    #13-504    
SETDMC	  000522 R	 8-255     #13-441     17-670     19-751     22-859    
START 	  001672 R	 6-205     #22-829    
STDIS 	= 000002	#4-123      17-665     25-945     25-947     25-957    
STMC  	= 000200	#4-124      16-629     18-718     25-925    
STOP  	  002210 R	 6-206     #25-919    
STRMOP	  001664 R	 6-208     #22-822    
STSTP 	= 000001	#4-122      16-620     17-665     18-718     25-923     25-930     25-933    
TIMRST	  001524 R	 13-525    #18-718    
TMOUT 	  001330 R	 6-186     #17-663    
WAITL 	  002040 R	 22-841     22-849    #23-875     24-898     24-911    
WAITS 	  002032 R	 13-479     13-490    #23-872    
XMITIN	  000302 R	 7-225     #10-343    
XMT   	= 000000	#4-105      13-466    
XMTENB	  001562 R	 6-182     #19-747    
XMTOUT	  000426 R	 7-239     #12-405    
X$$BUG	= ******	 9-303      14-558    
DMC        CREATED BY  MACRO  ON 27-DEC-79 AT 09:14	PAGE 4
SYMBOL CROSS REFERENCE                                  CREF         
SYMBOL	VALUE		REFERENCES
$ASCMP	= ******  GX	 17-681    
$CMLOG	= ******  GX	 15-600    
$CMQIN	= ******  GX	 19-749    
$CNV18	= ******  GX	 13-514     24-903    
$CTCMP	= ******  GX	 22-866     25-959     26-983    
$DMCTB	  000064 RG	#6-181     
$INTSX	= ******  GX	 9-298     
$RCCMP	= ******  GX	 12-399    
$RDBGT	= ******  GX	 13-447    
$RDBQP	= ******  GX	 27-1000   
$RDBRT	= ******  GX	 6-197      27-1016    27-1020   
$RDBWT	= ******  GX	 13-452    
$XMCMP	= ******  GX	 12-409     27-1007    27-1012   
$$DMC 	  000240 RG	#9-297     
..OFF.	= 177724	#5-132      5-132      5-132     
DMC        CREATED BY  MACRO  ON 27-DEC-79 AT 09:14	PAGE 5
MACRO CROSS REFERENCE                                   CREF         
MACRO NAME	REFERENCES
CALL  		 9-314      12-399     12-409     13-447     13-452     13-479     13-490     13-514     13-525     14-556    
                 14-573     15-600     15-610     16-619     16-635     17-681     17-701     19-749     22-835     22-841    
                 22-849     22-859     24-898     24-903     24-911     25-927     25-934     25-949     27-1000    27-1007   
                 27-1012    27-1016    27-1020   
CALLR 		#10-346    #17-670    #19-751    #20-771    #21-805    #22-866    #25-921    #25-928    #25-943    #25-959    
                #26-983    
CCBDF$		#3-65      #3-67      
CMLDF$		#3-65      #5-158     
DEVDF 		#3-65      #5-137     
DMCDF$		#3-65       5-132     
EVLDF$		#3-65       5-138     
HWDDF$		#3-65      #3-68      
RESRG 		#3-66       9-315      12-413     13-497     13-520     13-528     14-574     22-860     24-905     24-907    
                 24-909     27-1023   
RETURN		 9-316      11-369     13-501     13-529     14-575     15-613     16-626     16-630     17-687     17-704    
                 18-727     21-815     23-887     24-912     25-954     27-1024   
SAVRG 		#3-66       9-299      12-397     12-407     13-441     13-504     13-510     14-564     22-854     24-900    
                 27-998    
TMPDF$		#5-132     #5-132     
$DEQ  		#3-66      #12-393    #12-405    #13-507    #17-698    #27-1005   #27-1010   #27-1015   #27-1019   
$ENQ  		#3-66      #13-456    #13-509    #20-780    #21-814    
$INTSX		#3-64      #9-298     
.BIN  		#5-132     
.CNB  		#5-132     
.CNW  		#5-132     
.CORE 		#5-132     
.CSR  		#5-132      5-132      5-132     
.DVCHA		#5-132     #5-132     
.INT  		#5-132     #5-132     #5-132     #5-132     
.INT1 		#5-132     
.INT2 		#5-132     
.INT3 		#5-132     
.LFLHD		#5-132     
.LIBR 		#5-132     
.LINKS		#5-132     
.LSTHD		#5-132      5-132      5-132      5-132      5-132      5-132     
.LTAB 		#5-132     
.MPLHD		#5-132     
.POOL 		#5-132     
.PRI  		#5-132     #5-132     #5-132     
.SCOM 		#5-132     
.SECSR		#5-132     
.SLNB 		#5-132     
.SLNW 		#5-132     
.STNB 		#5-132     
.STNW 		#5-132     
.UNB  		#5-132     
.UNW  		#5-132     
.VFY  		#5-132