Google
 

Trailing-Edge - PDP-10 Archives - bb-x141b-bb - driver.l10
There are 3 other files named driver.l10 in the archive. Click here to see a list.
ARITH -- 16 BIT ARITHMETIC SIMU	MACRO M1113  03-APR-86 20:48
TABLE OF CONTENTS

     6-  192	ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
    21- 2179	TITLE PAGE
    22- 2214	COMMON PARAMETERS AND MACROS
    23- 2301	LP-20 DEVICE REGISTER DEFINITIONS
    24- 2373	COMMON DEVICE PARAMETER MODULE
    25- 2406	DEVICE STATUS BIT DEFINITIONS
    26- 2463	LP-20 COMMON DATA MODULE
    27- 2497	COMMON VARIABLES
    28- 2505	LP-20 DEVICE TABLES
    29- 2543	LP-20 DRIVER TASK MODULE
    30- 2587	LPINI	(INITIALIZE LP-20 TASK)
    31- 2645	LPLOOP	(LP-20 DRIVER TASK LOOP)
    32- 2672	LPIOD	(LP TASK I/O DONE)
    33- 2882	LPNIR	(LP TASK QUEUE I/O REQUEST)
    34- 3013	LPMKT	(LP TASK MARK-TIME REQUEST)
    35- 3085	SSTSLP	(SEND LP-20 STATUS TO -10)
    36- 3320	TESTLP	(START LP-20 GOING ON THREADED LIST)
    37- 3392	INITLP	(INITALIZE ALL LP'S)
    38- 3431	LP-20 INTERRUPT SERVICE MODULE
    39- 3463	$LPINT	(LP-20 INTERRUPT SERVICE ROUTINE)
    40- 3583	LP-20 COMMON SUBROUTINES MODULE
    40- 3622	..STLP	(START LP-20 OUTPUT)
    41- 3744	..SPLP	(STOP LP-20 OUTPUT)
    42- 3810	..AKLP	(ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
    43- 3847	..PTLP	(PUT BLOCK IN THREADED OUTPUT LIST)
    44- 3910	..DOLP	(INITIATE LP-20 TRANSFER)
    45- 4006	TITLE PAGE
    46- 4041	COMMON PARAMETERS AND MACROS
    47- 4069	CD-11 DEVICE REGISTER BIT DEFINITIONS
    48- 4098	CD-11 DRIVER COMMON DATA MODULE
    49- 4130	COMMON DATABASE DEFINITIONS
    50- 4163	CD-11 DRIVER TASK MODULE
    51- 4197	TASK INITIALIZATION
    52- 4232	CRLOOP (MAIN PROCESSING LOOP)
    53- 4351	SSTSCR	(SEND CD-11 STATUS TO -10)
    54- 4496	INITCR	(INITIALIZE CD-11)
    55- 4511	CD-11 DRIVER COMMON SUBROUTINES MODULE
    56- 4549	$CDINT	(CD-11 INTERRUPT SERVICE)
    57- 4579	..STCR	(START CD-11)
    58- 4608	..SPCR	(STOP CD-11)
    59- 4631	..AKCR	(READ CARD)
    60- 4662	TITLE PAGE
    61- 4706	MACROS AND PARAMETERS
    62- 4795	TASK DATA
    63- 4845	FIND THE TASK FILE
    64- 5010	INITIALIZE TASK FILE
    65- 5062	SETUP STD ENTRY
    66- 5170	SETUP LOGICAL UNIT TABLE FOR TASK
    67- 5288	RE-REQUEST TASK
    68- 5313	TASK FILE I/O ROUTINES
    69- 5402	ERROR PROCESSING
    70- 5492	END STATEMENT
RSXFC	-- RSX20F PARAMETER FIL	MACRO M1113  03-APR-86 20:48  PAGE 1


      1						.TITLE	RSXFC	-- RSX20F PARAMETER FILE (TOPS-10 SYSTEM DEFINITION)
      2						.IDENT	/013100/
      3					;
      4					;                             COPYRIGHT (C) 1977, 1978, 1985 BY
      5					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
      6					;				ALL RIGHTS RESERVED
      7					;
      8					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
      9					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
     10					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
     11					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
     12					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
     13					;
     14					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
     15					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
     16					;       CORPORATION.
     17					;
     18					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
     19					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
     20					;
     21					; VERSION 13-10
     22					;
     23					; ALAN D. PECKHAM  19-APR-77
     24					;
     25					; MODIFIED BY:
     26					;
     27					;		R. BELANGER -- ELIMINATE 1090T "ARPA" CONFIGURATTION
     28					;		R. BELANGER -- ADD 1091 CONFIGURATION
     29					;
     30					; FUNCTION: THIS MODULE PROVIDES THE PARAMETERS FOR ASSEMBLY OF RSX20F FOR
     31					;  THE TOPS-10 SYSTEM.
     32					;
     33					; EQUATED SYMBOLS
     34					;
     35		000001 				$TOP10	=1	; DEFINE TOPS-10 OPTION
     36
     37		000001 				$LP20	=1	; INCLUDE LP20 DRIVER
     38		000002 				L$$P20	=2	; INCLUDE 2 LP-20'S
     39		000001 				$CD11	=1	; INCLUDE CD11 CARD READER DRIVER
     40		000001 				$RP04	=1	; INCLUDE RP04 DISK DRIVER
     41		000001 				$FE	=1	; INCLUDE FE PSEUDO-DEVICE DRIVER
     42		000001 				$F11	=1	; INCLUDE FILES-11 ACP
     43		000001 				$DH11	=1	; INCLUDE DH11 DRIVER
     44		000010 				D$$H11	=8.	; INCLUDE 8 DH-11'S
     45		000001 				$DBDTE	=1	; INCLUDE DTE20 DEBUGGING CODE
     46		000001 				$DTE	=1	; INCLUDE DTE20 DTE DRIVER
     47		000001 				R$$11D	=1	; RSX-11D BASE
     48
     49					.IF DF	$T1091
     50						$TOP10	=1	; DEFINE TOPS-10 BASE FOR 1091
     51					.ENDC			; $T1091
     52
     53					.IF DF	$TOP10
     54					.IF NDF	$T1091
     55		000001 				$DTA	=1	; INCLUDE DECTAPE DRIVER FOR TOPS-10
     56					.IFF
     57						$RX11	=1	; INCLUDE FLOPPY DRIVER FOR TOPS-10/1091
RSXFC	-- RSX20F PARAMETER FIL	MACRO M1113  03-APR-86 20:48  PAGE 1-1


     58					.ENDC			; $T1091
     59					.ENDC			; $TOP10
     60
     61					.IF DF	$TOP20
     62						$RX11	=1	; INCLUDE FLOPPY DRIVER
     63					.ENDC			; $TOP20
RSXFC	-- RSX20F PARAMETER FIL	MACRO M1113  03-APR-86 20:48  PAGE 2


     65
     66						.TITLE	RSX20F	-- RESIDENT EXECUTIVE (SYSTEM DEFINITION)
     67						.IDENT	/015500/
     68						.ENABL	AMA
     69						.LIST	MEB
     70						.NLIST	CND
     71					;
     72					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
     73					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
     74					;			ALL RIGHTS RESERVED
     75					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
     76					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
     77					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
     78					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
     79					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
     80					;
     81					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
     82					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
     83					;       CORPORATION.
     84					;
     85					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
     86					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
     87					;
     88					; R.  MCLEAN   19-MAR-75
     89					;
     90					;	VERSION 15-50
     91					;
     92					; MODIFIED BY:
     93					;
     94					;
     95					;
RSX20F	-- RESIDENT EXECUTIVE (	MACRO M1113  03-APR-86 20:48  PAGE 3


     97					;
     98					; SET VERSION OF RSX20F EXEC HERE
     99					;
    100		000015 			RSX$$V	=	15		; VERSION 15
    101		000050 			RSX$$E	=	50		; EDIT 50
    102					;
    103					; RELEASE VERSION
    104					;
    105		000126 			RSX$$K	=	'V		; KEY FOR RELEASE-TYPE
    106									; "X" -- EXPERIMENTAL
    107									; "Y" -- FIELD/LOAD TEST
    108									; "V" -- RELEASE
    109		000000 			RSX$$F	=	0		; DEFINE FORM AS NULL
    112		000101 			RSX$$F	=	'A		; TOPS-10 FORM OF THE EXEC.
    123					;
    124					; DTE-20 REGISTER OFFSETS
    125					;
    126		000036 			DAG3	=36
    127		000034 			STATD	=34
    128		000032 			DAG2	=32
    129		000030 			DAG1	=30
    130		000022 			T11AD	=22
    131		000020 			T10AD	=20
    132		000016 			T11BC	=16
    133		000010 			TNAD1	=10
    134		000012 			TNAD2	=12
    135		000006 			DXWD1	=6
    136		000004 			DXWD2	=4
    137		000002 			DXWD3	=2
RSX20F	-- RESIDENT EXECUTIVE (	MACRO M1113  03-APR-86 20:48  PAGE 4


    139					;+
    140					; MACRO TO SET IDENT FOR EXEC MODULES.
    141					; FORMAT OF CALL IS:
    142					;	IDENT$	VERSION,EDIT
    143					; OR
    144					;	IDENT$	VERSION,EDIT,RSX$$F
    145					; IF MODULE CODING CHANGES WITH DIFFERENT FORMS
    146					;-
    147
    148						.MACRO	IDENT$ VER,EDT,FRM,NUM
    149						.IF	B,NUM
    150						.IF	B,FRM
    151						IDENT$	\VER,\EDT,0,0
    152						.IFF
    153						.IF	EQ,<FRM-'A>
    154						IDENT$	\VER,\EDT,A,0
    155						.IFF
    156						.IF	EQ,<FRM-'B>
    157						IDENT$	\VER,\EDT,B,0
    158						.IFF
    159						IDENT$	\VER,\EDT,E,0
    160						.ENDC
    161						.ENDC
    162						.ENDC
    163						.MEXIT
    164						.IFF
    165						.IF	GE,VER-10
    166						.IF	GE,EDT-10
    167						.LIST
    168						.IDENT	/'FRM'VER'EDT'0/
    169						.NLIST
    170						.IFF
    171						.LIST
    172						.IDENT	/'FRM'VER'0'EDT'0/
    173						.NLIST
    174						.ENDC
    175						.IFF
    176						.IF	GE,EDT-10
    177						.LIST
    178						.IDENT	/'FRM'0'VER'EDT'0/
    179						.NLIST
    180						.IFF
    181						.LIST
    182						.IDENT	/'FRM'0'VER'0'EDT'0/
    183						.NLIST
    184						.ENDC
    185						.ENDC
    186						.ENDC
    187						.ENDM	IDENT$
RSX20F	-- RESIDENT EXECUTIVE (	MACRO M1113  03-APR-86 20:48  PAGE 6


    190
    191						.TITLE	ARITH -- 16 BIT ARITHMETIC SIMULATOR
    192						.SBTTL	ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
    193						.IDENT	/001000/
    194
    195					;
    196					;                             COPYRIGHT (C) 1972, 1984, 1985 BY
    197					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
    198					;			ALL RIGHTS RESERVED.
    199					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
    200					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
    201					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
    202					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
    203					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
    204					;
    205					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
    206					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
    207					;       CORPORATION.
    208					;
    209					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
    210					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
    211					;
    212					; VERSION 01-00
    213					;
    214					; D. N. CUTLER 10-FEB-72
    215
    216
    217						.MCALL	RETURN
    218
    219
    220					;+
    221					; **-$MUL-INTEGER MULTIPLY MAGNITUDE NUMBERS
    222					;
    223					; INPUTS:
    224					;
    225					;	R0=MULTIPLIER.
    226					;	R1=MULTIPLICAND.
    227					;
    228					; OUTPUTS:
    229					;
    230					;	DOUBLE WORD RESULT IS RETURNED WITH THE
    231					;	HIGH PART IN R0 AND THE LOW PART IN R1.
    232					;
    233					;	REGISTERS R2, R3, R4, AND R5 ARE PRESERVED ACROSS CALL.
    234					;-
    235
    236						.ENABL	LSB
    237	000000	010046 			$MUL::	MOV	R0,-(SP)	;SAVE R0 FOR ADDS
    238	000002	012746 	000021 			MOV	#21,-(SP)	;SET REPEAT COUNT
    239	000006	005000 				CLR	R0		;CLEAR HIGH PART
    240	000010	006000 			10$:	ROR	R0		;DOUBLE RIGHT SHIFT
    241	000012	006001 				ROR	R1		;
    242	000014	103003 				BCC	20$		;IF CC DO NOT ADD
    243	000016	066600 	000002 			ADD	2(SP),R0	;
    244	000022	000241 				CLC			;CLEAR CARRY INDICATOR
    245	000024	005316 			20$:	DEC	(SP)		;DECREMENT REPEAT COUNT
    246	000026	003370 				BGT	10$		;IF GT MORE TO GO
ARITH -- 16 BIT ARITHMETIC SIMU	MACRO M1113  03-APR-86 20:48  PAGE 6-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

    247	000030	000415 				BR	50$		;EXIT TO CALLER
    248
    249					;+
    250					; **-$DIV-INTEGER DIVIDE MAGNITUDE NUMBERS
    251					;
    252					; INPUTS:
    253					;
    254					;	R0=DIVIDEND.
    255					;	R1=DIVISOR.
    256					;
    257					; OUTPUTS:
    258					;
    259					;	QUOTIENT IS RETURNED IN R0 AND REMAINDER IN R1.
    260					;
    261					;	REGISTERS R2, R3, R4, AND R5 ARE PRESERVED ACROSS CALL.
    262					;-
    263
    264	000032	012746 	000020 		$DIV::	MOV	#20,-(SP)	;SET LOOP COUNT
    265	000036	010146 				MOV	R1,-(SP)	;SAVE DIVISOR FOR SUBTRACTS
    266	000040	005001 				CLR	R1		;CLEAR REMAINDER
    267	000042	006300 			30$:	ASL	R0		;DOUBLE LEFT SHIFT
    268	000044	006101 				ROL	R1		;
    269	000046	020116 				CMP	R1,(SP)		;SUBTRACT OUT DIVISOR?
    270	000050	103402 				BLO	40$		;IF LO NO
    271	000052	161601 				SUB	(SP),R1		;SUBTRACT OUT DIVISOR
    272	000054	005200 				INC	R0		;ADD IN LOW BIT
    273	000056	005366 	000002 		40$:	DEC	2(SP)		;DECREMENT REPEAT COUNT
    274	000062	003367 				BGT	30$		;IF GT MORE TO GO
    275	000064	022626 			50$:	CMP	(SP)+,(SP)+	;CLEAN STACK
    276	000066					RETURN			;
	000066	000207 				RTS	PC
    277						.DSABL	LSB
ARITH -- 16 BIT ARITHMETIC SIMU	MACRO M1113  03-APR-86 20:48  PAGE 7
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

    279
    280
    281						.TITLE	DBDRV -- RP04/RP06 DRIVER
    282						.IDENT	/014440/
    283						.LIST	MEB
    284					;
    285					;
    286					;
    287					;                             COPYRIGHT (C) 1974, 1984, 1985 BY
    288					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
    289					;			ALL RIGHTS RESERVED.
    290					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
    291					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
    292					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
    293					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
    294					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
    295					;
    296					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
    297					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
    298					;       CORPORATION.
    299					;
    300					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
    301					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
    302					;
    303					;
    304					;
    305					;
    306					;		AUTHOR:   D. N. CUTLER
    307					;		DATE:     2-JUL-74
    308					;		VERSION:  14-44
    309					;
    310					;
    311					;
    312					; MODIFICATIONS:
    313					;
    314					;	NO.		DATE		PROGRAMMER
    315					;	---		----		----------
    316					;	001		17-JUN-75	R. MCLEAN
    317					;	002		19-JUL-76	J. MASSE
    318					;	003		28-MAR-77	A. PECKHAM	FIX POWER FAIL RECOVERY
    319					;	004		27-JUL-77	R. BELANGER	ADD 18-BIT ECC CORRECTION
    320					;   TCO 5.1003		14-SEP-79	R. BELANGER	FIX BUG IN DUAL-PORT LOGIC
    321					;   TCO 5.1009		15-0CT-79	R. BELANGER	ADD RH-11 ERROR LOGGING
    322					;   TCO 4.1.1105	11-MAR-80	R. BELANGER	CHANGE "EF.PR1" RECOGNITION
    323					;   RCO 5.0000		04-AUG-81	D. DEUFEL/S. LEAPLINE
    324					;							FIX BUG IN ECC CORRECTION
    325					;
DBDRV -- RP04/RP06 DRIVER	MACRO M1113  03-APR-86 20:48  PAGE 8
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

    327					;
    328					; CONDITIONAL ASSEMBLY SWITCH DEFINITIONS
    329					;
    330
    331		000001 			$DIRAC	=1
    332
    333					;R$$JPO	=1			; IF DEFINED, INCLUDE TRACK OFFSETTING
    334
    335		000001 			R$$E18 =1			; +++004 IF DEFINED, INCLUDE 18-BIT ECC CORRECTION
    336
    337					;R$$E16 =1			; +++004 IF DEFINED, INCLUDE 16-BIT ECC CORRECTION
    338
    339					;
    340					; MACRO LIBRARY CALLS
    341					;
    342
    343						.MCALL	WTSE$,CLEF$,MRKT$,QIOW$,DIR$,CALL,RETURN,.STKM,QIOSY$,WSIG$S
    344
    345	000070					QIOSY$
    346
    347
    348
    349					; DEVICE REGISTER AND STATUS BIT DEFINITIONS
    350
    351
    352		176700 			RPEXP=176700			; RPCS1 EXTERNAL PAGE ADDRESS
    353
    354
    355
    356		000000 			RPCS1=0				; CONTROL STATUS REGISTER 1
    357
    358		040000 			TRE=40000			; TRANSFER ERROR
    359		020000 			MCPE=20000			; MASSBUS CONTROL PARITY ERROR
    360		004000 			DVA=4000			; DRIVE AVAILABLE
    361
    362
    363
    364		000002 			RPWC=2				; WORD COUNT REGISTER
    365
    366		000004 			RPBA=4				; BUFFER ADDRESS REGISTER
    367
    368		000006 			RPDA=6				; DESIRED TRACK/SECTOR REGISTER
    369
    370
    371
    372		000010 			RPCS2=10			; CONTROL STATUS REGISTER 2
    373
    374		100000 			DLT=100000			; DATA LATE ERROR
    375		040000 			WCE=40000			; WRITE CHECK ERROR
    376		020000 			UPE=20000			; UNIBUS PARITY ERROR
    377		010000 			NED=10000			; NONEXISTENT DISK ERROR
    378		004000 			NEM=4000			; NONEXISTENT MEMORY ERROR
    379		002000 			PGE=2000			; PROGRAMMING ERROR
    380		001000 			MXF=1000			; MISSED TRANSFER ERROR
    381		000400 			MDPE=400			; MASSBUS DATA PARITY ERROR
    382
    383
DBDRV -- RP04/RP06 DRIVER	MACRO M1113  03-APR-86 20:48  PAGE 8-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

    384
    385		000012 			RPDS=12				; DRIVE STATUS REGISTER
    386
    387		040000 			ERR=40000			; ERROR SUMMARY BIT
    388		010000 			MOL=10000			; MEDIUM ONLINE
    389		004000 			WRL=4000			; WRITE LOCKED DRIVE
    390		001000 			PGM=1000			; PROGRAM MODE
    391		000200 			DRY=200				; DRIVE READY
    392		000100 			VV=100				; VOLUME VALID
    393
    394
    395
    396		000014 			RPER1=14			; ERROR SUMMARY REGISTER
    397
    398		100000 			DCK=100000			; DATA CHECK ERROR
    399		040000 			UNS=40000			; DRIVE UNSAFE
    400		020000 			OPI=20000			; OPERATION INCOMPLETE
    401		010000 			DTE=10000			; DRIVE TIMING ERROR
    402		004000 			WLE=4000			; WRITE LOCK ERROR
    403		002000 			IAE=2000			; INVALID DISK ADDRESS
    404		001000 			AOE=1000			; ADDRESS OVERFLOW
    405		000400 			HCRC=400			; HEADER CRC ERROR
    406		000200 			HCE=200				; HEADER COMPARE ERROR
    407		000100 			ECH=100				; ECC HARD ERROR
    408		000040 			WCF=40				; WRITE CLOCK FAILURE
    409		000020 			FER=20				; FORMAT ERROR
    410		000010 			CPE=10				; CONTROL BUS PARITY ERROR
    411		000004 			RMR=4				; REGISTER MODIFY REFUSED
    412		000002 			ILR=2				; ILLEGAL REGISTER
    413		000001 			ILF=1				; ILLEGAL FUNCTION
    414
    415
    416
    417		000016 			RPAS=16				; ATTENTION SUMMARY REGISTER
    418
    419		000020 			RPLA=20				; LOOKAHEAD REGISTER
    420
    421		000022 			RPDBR=22			; DATA BUFFER REGISTER
    422
    423		000024 			RPMR=24				; MAINTENENCE REGISTER
    424
    425		000026 			RPDT=26				; DRIVE TYPE REGISTER
    426
    427		000030 			RPSN=30				; DRIVE SERIAL NUMBER
    428
    429
    430		000032 			RPOF=32				; DRIVE OFFSET REGISTER
    431
    432		010000 			FMT22=10000			; FORMAT (1=16 BIT)
    433		004000 			ECI=4000			; ECC INHIBIT
    434		002000 			HCI=2000			; HEADER COMPARE INHIBIT
    435
    436
    437		000034 			RPDC=34				; DESIRED CYLINDER NUMBER
    438
    439		000044 			RPEC1=44			; ECC POSITION REGISTER
    440
DBDRV -- RP04/RP06 DRIVER	MACRO M1113  03-APR-86 20:48  PAGE 8-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

    441		000046 			RPEC2=46			; ECC PATTERN REGISTER
    442
    443					;
    444					; ERROR RETRY COUNT
    445					;
    446
    447		000010 			RETRY=8.			; CONTROLLER ERROR RETRY COUNT
    448
    449
    450					; LOCAL DATA
    451					;
    452					;
    453
    454	000070				RPHD::
    455	000070					.STKM	0,0,0,0,0,0,0,DBINI,174000,RPSTK
	000136	000000 	000000 	000000 		.WORD	0,0,0,0
	000144	000000
	000164	174000 	000512'	000350'		.WORD	174000,DBINI,RPSTK
	000220	000005 				.WORD	5
	000222	000000G				.WORD	TTPEN
	000224	000000 				.WORD	0
	000226	000000 				.WORD	0
	000230	000000 				.WORD	0
	000232	000000 				.WORD	0
	000234	000000 				.WORD	0
	000236	000000 				.WORD	0
	000240	000000 				.WORD	0
	000242	000000 				.WORD	0
	000244	000000 				.WORD	0
	000246	000000 				.WORD	0
	000350	000000 				.WORD	0
	000352	000000 				.WORD	0
	000354	000000 				.WORD	0
	000356	000000 				.WORD	0
	000360	000000 				.WORD	0
	000362	000000 				.WORD	0
	000364	000512'				.WORD	DBINI
	000366	174000 				.WORD	174000
    456
    457	000370				DBIOD:
    458	000370					WTSE$	E.IOD
	000370	   051 	   002 			.BYTE	41.,2
	000372	000000G				.WORD	E.IOD
    459
    460	000374				CLIOD:
    461	000374					CLEF$	E.IOD		; CLEAR I/O DONE FLAG
	000374	   037 	   002 			.BYTE	31.,2
	000376	000000G				.WORD	E.IOD
    462
    463	000400				RPWLO:
    464	000400					WTSE$	E.NIR		; WAIT FOR QIO
	000400	   051 	   002 			.BYTE	41.,2
	000402	000000G				.WORD	E.NIR
    465
    466	000404				MKDNR::
    467	000404					MRKT$	1,74.*10,0,0	; WAIT FOR FIX
	000404	   027 	   005 			.BYTE	23.,5
DBDRV -- RP04/RP06 DRIVER	MACRO M1113  03-APR-86 20:48  PAGE 8-3
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

	000406	000001 				.WORD	1
	000410	001120 				.WORD	74.*10
	000412	000000 				.WORD	0
	000414	000000 				.WORD	0
    468
    469	000416				WFDNR::
    470	000416					WTSE$	1		; WAIT
	000416	   051 	   002 			.BYTE	41.,2
	000420	000001 				.WORD	1
    471
    472	000422				MSGDPB:
    473	000422					QIOW$	IO.WVB,1,1,1,0,0,<,MSGSIZ>
	000422	   003 	   010 			.BYTE	3,$$$ARG
	000424	011000 				.WORD	IO.WVB
	000426	000001 				.WORD	1
	000430	   001 	   001 			.BYTE	1,1
	000432	000000 				.WORD	0
	000434	000000 				.WORD	0
	000436	000000 				.WORD
	000440	000016 				.WORD	MSGSIZ
    474
    475	000442				DNMSG:
    476	000442	   015 	   012 	   104 		.ASCII	<15><12>"DB NOT RDY"<15><12>
	000445	   102 	   040 	   116
	000450	   117 	   124 	   040
	000453	   122 	   104 	   131
	000456	   015 	   012
    477
    478	000460				DUNS:
    479	000460	   015 	   012 	   104 		.ASCII	<15><12>"DB UNSAFE "<15><12>
	000463	   102 	   040 	   125
	000466	   116 	   123 	   101
	000471	   106 	   105 	   040
	000474	   015 	   012
    480						.EVEN
    481
    482		000016 			MSGSIZ	=14.			; MESSAGE SIZE
    483
    504
    506
    507	000476				ECCWRD:
    508	000476	000000 	000000 	000000 		.WORD	0,0,0
    509	000504				ECCMSK:
    510	000504	000000 	000000 	000000 		.WORD	0,0,0
    511
DBDRV -- RP04/RP06 DRIVER	MACRO M1113  03-APR-86 20:48  PAGE 9
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

    514					;
    515					;+
    516					; **-DBINI-RH11-RP04 DISK PACK CONTROLLER INITIATOR
    517					;
    518					; THIS ROUTINE IS ENTERED FROM THE QUEUE I/O DIRECTIVE WHEN AN I/O REQUEST
    519					; IS QUEUED AND AT THE END OF A PREVIOUS I/O OPERATION TO PROPAGATE THE EXECU-
    520					; TION OF THE DRIVER. IF THE SPECIFIED CONTROLLER IS NOT BUSY, THEN AN ATTEMPT
    521					; IS MADE TO DEQUEUE THE NEXT I/O REQUEST. ELSE A RETURN TO THE CALLER IS
    522					; EXECUTED. IF THE DEQUEUE ATTEMPT IS SUCCESSFUL, THEN THE NEXT I/O OPER-
    523					; ATION IS INITIATED. A RETURN TO THE CALLER IS THEN EXECUTED.
    524					;
    525					; INPUTS:
    526					;
    527					;
    528					; OUTPUTS:
    529					;
    530					;	IF THE SPECIFIED CONTROLLER IS NOT BUSY AND AN I/O REQUEST IS WAIT-
    531					;	ING TO BE PROCESSED, THEN THE REQUEST IS DEQUEUED AND THE I/O OPER-
    532					;	ATION IS INITIATED.
    533					;-
    534
    535						.ENABL	LSB
    536
    537	000512				DBINI:
    538	000512					DIR$	#RPWLO		; WAIT FOR SOMETHING TO DO
	000512	012746 	000400'			MOV	#RPWLO,-(SP)
	000516	104375 				EMT	375
    539	000520	012700 	041104 			MOV	#"DB,R0		; DQ THE REQUEST
    540	000524					CALL	..DQRN
	000524	004737 	000000G			JSR	PC,..DQRN
    541	000530	103770 				BCS	DBINI		; NOTHING GO BACK TO SLEEP
    542
    557
    558	000532				4$:
    559	000532	010137 	000000G			MOV	R1,RPRNA	; SAVE THE REQUST NODE ADDRESS
    560	000536	010337 	000000G			MOV	R3,RPCNT	; SAVE THE TRANSFER SIZE
    561	000542	010237 	000000G			MOV	R2,RPUNIT	; SAVE UNIT NUMBER
    562	000546	010537 	000002G			MOV	R5,RPBUF+2	; SAVE THE XFER ADDRESS
    563	000552	006304 				ASL	R4		; SHIF TO CORRECT POSITION
    564	000554	006304 				ASL	R4
    565	000556	006304 				ASL	R4
    566	000560	006304 				ASL	R4
    567	000562	010437 	000000G			MOV	R4,RPBUF	; SAVE ADDRESS (HIGH ORDER)
    568	000566	052737 	000171 	000000G		BIS	#171,RPBUF	; ASSUME READ LOGICAL FUNCTION
    569	000574	122761 	000002 	000001G		CMPB	#IO.RLB/256.,R.FC+1(R1) ; READ LOGICAL FUNCTION?
    570	000602	001412 				BEQ	10$		; IF EQ YES
    571	000604	122761 	000001 	000001G		CMPB	#IO.WLB/256.,R.FC+1(R1)
    572	000612	001403 				BEQ	5$
    573	000614	012703 	177776 			MOV	#IE.IFC,R3
    574	000620	000553 				BR	46$
    575						;
    576	000622				5$:
    577	000622	162737 	000010 	000000G		SUB	#10,RPBUF	; CONVERT TO WRITE LOGICAL FUNCTION
    578	000630				10$:
    579	000630	012737 	000010 	000000G		MOV	#RETRY,RPRTC	; SET RETRY COUNT
    580
    587
DBDRV -- RP04/RP06 DRIVER	MACRO M1113  03-APR-86 20:48  PAGE 9-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

    588	000636	005002 				CLR	R2
    589	000640	156102 	000006G			BISB	R.PB+6(R1),R2
    590	000644	016100 	000010G			MOV	R.PB+10(R1),R0
    591	000650	010103 				MOV	R1,R3		; SAVE NODE ADDRESS
    592	000652	012701 	000020 			MOV	#16.,R1
    593
    594	000656				20$:
    595	000656	006300 				ASL	R0
    596	000660	006102 				ROL	R2		;
    597	000662	020227 	000574 			CMP	R2,#19.*20.	; PARTIAL REMAINDER LARGER THAN DIVISOR?
    598	000666	103403 				BLO	30$		; IF LO NO
    599	000670	162702 	000574 			SUB	#19.*20.,R2
    600	000674	005200 				INC	R0
    601	000676				30$:
    602	000676	005301 				DEC	R1
    603	000700	003366 				BGT	20$		; IF GT YES
    604	000702	010063 	000006G			MOV	R0,R.PB+6(R3)
    605	000706	010200 				MOV	R2,R0		; SET DIVIDEND TO TRACK/SECTOR REMAINDER
    606	000710	012701 	000024 			MOV	#20.,R1		; SET DIVISOR TO NUMBER OF SECTORS/TRACK
    607	000714					CALL	$DIV		; CALCULATE TRACK AND SECTOR
	000714	004737 	000032'			JSR	PC,$DIV
    608	000720	000300 				SWAB	R0		; SWAP TRACK TO HIGH BYTE
    609	000722	050100 				BIS	R1,R0		; MERGE TRACK
    610	000724	010063 	000010G			MOV	R0,R.PB+10(R3)
    611
    612					;
    613					; INITIATE I/O OPERATION
    614					;
    615
    616	000730				40$:
    617	000730	012703 	176710 			MOV	#RPEXP+RPCS2,R3	; GET ADDRESS OF CSR
    618	000734	012713 	000040 			MOV	#40,@R3		; CLEAR RH11+CONTROLLER
    619	000740	113713 	000000G			MOVB	RPUNIT,@R3
    620	000744	012703 	176700 			MOV	#RPEXP,R3
    621	000750				41$:
    622	000750	012713 	000023 			MOV	#23,@R3		; [5.1003] EXECUTE PACK ACK FUNCTION TO SET VV
    623	000754	032737 	000340 	177776 		BIT	#340,@#PS	; IN INTERRUPT SERVICE?
    624	000762	001007 				BNE	42$		; LEAVE IT ALONE -- MUST HAVE PORT HERE
    625	000764	032713 	004000 			BIT	#DVA,@R3	; DRIVE AVAILABLE?
    626	000770	001004 				BNE	42$		; YES -- USE IT
    627	000772					WSIG$S			; NO -- BETTER WAIT FOR IT
	000772	012746 				MOV	(PC)+,-(SP)
	000774	   061 	   001 			.BYTE	49.,1
	000776	104375 				EMT	375
    628	001000	000763 				BR	41$		; MAKE ANOTHER TRY
    629						;
    630	001002				42$:
    631	001002	012713 	000023 			MOV	#23,@R3		; PACK ACK AGAIN
    632	001006	032713 	004000 			BIT	#DVA,@R3	; WATCH FOR TIMING AND MISSING DRIVE
    633	001012	001756 				BEQ	41$		; MISSED IT -- TRY AGAIN
    634	001014				43$:
    635	001014	013702 	000000G			MOV	RPRNA,R2	; GET ADDRESS OF I/O PACKET
    636	001020	012703 	176710 			MOV	#RPEXP+RPCS2,R3	; POINT TO SECOND CSR
    637	001024	113713 	000000G			MOVB	RPUNIT,@R3 	; SELECT PROPER DRIVE
    638	001030	016243 	000010G			MOV	R.PB+10(R2),-(R3) ; INSERT TRACK/SECTOR ADDRESS
    639	001034	013743 	000002G			MOV	RPBUF+2,-(R3) 	; INSERT BUFFER ADDRESS
    640	001040	013743 	000000G			MOV	RPCNT,-(R3)	; INSERT NUMBER OF BYTES TO TRANSFER
DBDRV -- RP04/RP06 DRIVER	MACRO M1113  03-APR-86 20:48  PAGE 9-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

    641	001044	006013 				ROR	@R3		; CONVERT TO WORD COUNT
    642	001046	005413 				NEG	@R3		; MAKE NEGATIVE WORD COUNT
    643	001050	005743 				TST	-(R3)		; POINT TO BEGINNING
    644
    655
    656	001052	012700 	000375 			MOV	#IE.DNR&377,R0	; ASSUME DRIVE NOT READY
    657	001056	016301 	000012 			MOV	RPDS(R3),R1	; GET CURRENT DRIVE STATUS
    658	001062	005101 				COM	R1		; COMPLEMENT STATUS
    659	001064	032701 	010300 			BIT	#MOL!DRY!VV,R1	; DRIVE READY?
    660	001070	001035 				BNE	47$		; IF NE NO
    661	001072	032763 	040000 	000014 		BIT	#UNS,RPER1(R3)	; DRIVE UNSAFE?
    662	001100	001052 				BNE	49$		; IF NE YES
    663	001102	016263 	000006G	000034 		MOV	R.PB+6(R2),RPDC(R3) ; SET DESIRED CYLINDER ADDRESS
    664	001110	013713 	000000G			MOV	RPBUF,@R3	; START FUNCTION
    665	001114	032737 	000340 	177776 		BIT	#340,@#PS	; CHECK FOR RESTART FROM INTERRUPT SERVICE LEVEL
    666	001122	001136 				BNE	85$		; YES -- RETURN FROM INTERRUPT
    667	001124					DIR$	#DBIOD		; WAIT FOR I/O DONE
	001124	012746 	000370'			MOV	#DBIOD,-(SP)
	001130	104375 				EMT	375
    668	001132					DIR$	#CLIOD		; CLEAR I/O DONE FLAG
	001132	012746 	000374'			MOV	#CLIOD,-(SP)
	001136	104375 				EMT	375
    669	001140	013701 	000000G			MOV	RPRNA,R1	; FIND THE REQUEST NODE
    670	001144	013703 	000000G			MOV	RPBUF,R3	; FIND THE I/O STATUS
    671	001150				46$:
    672	001150	013704 	000002G			MOV	RPBUF+2,R4	; BOTH HALVES
    673	001154					CALL	..IODN		; FINISH I/O
	001154	004737 	000000G			JSR	PC,..IODN
    674	001160	000137 	000512'			JMP	DBINI		; WAIT FOR NEXT
    675						;
    676	001164				47$:
    677	001164	012737 	000442'	000436'		MOV	#DNMSG,MSGDPB+Q.IOPL  ; SET FOR NOT READY MESSAGE
    678
    679	001172				48$:
    680	001172	032737 	000340 	177776 		BIT	#340,@#PS	; CHECK FOR ENTRY FROM PRI
    681	001200	001060 				BNE	60$		; YES -- GO RE-TRY
    682	001202					DIR$	#MSGDPB		; COMPLAIN
	001202	012746 	000422'			MOV	#MSGDPB,-(SP)
	001206	104375 				EMT	375
    683	001210					DIR$	#MKDNR		; WAIT FOR FIX
	001210	012746 	000404'			MOV	#MKDNR,-(SP)
	001214	104375 				EMT	375
    684	001216					DIR$	#WFDNR		; WAIT
	001216	012746 	000416'			MOV	#WFDNR,-(SP)
	001222	104375 				EMT	375
    685	001224	000641 				BR	40$		; AND TRY AGAIN
    686						;
    687	001226				49$:
    688	001226	012737 	000460'	000436'		MOV	#DUNS,MSGDPB+Q.IOPL  ; SET FOR UNSAFE MESSAGE
    689	001234	000756 				BR	48$		; TYPE MESSAGE
    690						;
DBDRV -- RP04/RP06 DRIVER	MACRO M1113  03-APR-86 20:48  PAGE 10
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

    692					;
    693					;+
    694					; **-.DBINT-RH11-RP04 DISK PACK CONTROLLER INTERRUPTS
    695					;-
    696					;
    697
    698	001236				.DBINT::
    699	001236	010046 				MOV	R0,-(SP)	;;; SAVE REGISTERS
    700	001240	010146 				MOV	R1,-(SP)
    701	001242	010246 				MOV	R2,-(SP)
    702	001244	010346 				MOV	R3,-(SP)
    703	001246	012702 	176700 			MOV	#RPEXP,R2	;;; GET ADDRESS OF CSR
    704
    711
    712	001252	012700 	000001 			MOV	#IS.SUC&377,R0	;;; ASSUME SUCCESSFUL TRANSFER
    713	001256	032712 	060000 			BIT	#TRE!MCPE,@R2	;;; ANY ERRORS?
    714	001262	001432 				BEQ	70$		;;; IF EQ NO
    715	001264	012700 	000374 			MOV	#IE.VER&377,R0	;;; ASSUME UNRECOVERABLE ERROR
    716	001270	016201 	000014 			MOV	RPER1(R2),R1	;;; GET CONTENTS OF ERROR REGISTER
    717	001274	032701 	047007 			BIT	#UNS!WLE!IAE!AOE!RMR!ILR!ILF,R1	;;; HARD ERROR?
    718	001300	001004 				BNE	50$		;;; IF NE YES
    719	001302	032762 	014000 	000010 		BIT	#NED!NEM,RPCS2(R2) ;;; HARD ERROR?
    720	001310	001453 				BEQ	100$		;;; IF EQ NO
    721	001312				50$:
    722	001312	032701 	004000 			BIT	#WLE,R1		;;; WRITE LOCK ERROR?
    723	001316	001403 				BEQ	52$		;;; IF EQ NO
    724	001320	012700 	000364 			MOV	#IE.WLK&377,R0	;;; SET WRITE LOCK ERROR
    725	001324	000415 				BR	80$		;;;
    726						;
    727	001326				52$:
    728	001326	032701 	003000 			BIT	#IAE!AOE,R1	;;; CHECK FOR ILLEGAL CYL
    729	001332	001412 				BEQ	80$		;;; NO --  UNRECOVERABLE ERROR
    730	001334	012700 	000354 			MOV	#IE.BLK&377,R0	;;; SET ILLEGAL BLOCK
    731	001340	000407 				BR	80$		;;; AND RETURN
    732						;
    744
    745					;
    746					; DEVICE TIMEOUT RESULTS IN THE CURRENT OPERATION BEING REPEATED. TIMEOUTS ARE
    747					; USUALLY CAUSED BY POWERFAILURE BUT MAY ALSO BE THE RESULT OF A HARDWARE FAILURE
    748					;
    749
    750	001342				60$:
    751	001342	105337 	000000G			DECB	RPRTC		;;; RETRY FUNCTION?
    752
    758
    759	001346	003032 				BGT	82$		;;; IF GT YES
    760
    762
    763	001350				70$:
    764	001350	013701 	000000G			MOV	RPRNA,R1	;;; GET ADDRESS OF I/O PACKET
    765	001354	016101 	000002G			MOV	R.PB+2(R1),R1	;;; SET FINAL VALUE OF SECOND STATUS WORD
    766	001360				80$:				;;; REF LABEL
    767	001360	012712 	000013 			MOV	#13,@R2		;;; RELEASE DUAL PORT
    768	001364	010037 	000000G			MOV	R0,RPBUF	;;; SAVE THE STATUS
    769	001370	010137 	000002G			MOV	R1,RPBUF+2
    770	001374	052737 	000000G	000020G		BIS	#EF.IOD,RPTSK+A.EF ;;; SET I/O DONE
    771	001402					CALL	..DSEV		;;; DECLARE SIG EVENT
DBDRV -- RP04/RP06 DRIVER	MACRO M1113  03-APR-86 20:48  PAGE 10-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

	001402	004737 	000000G			JSR	PC,..DSEV
    772	001406	105737 	000000G			TSTB	RPBUF+0		;;; [5.1009] DID WE GET AN ERROR??
    773	001412	100002 				BPL	85$		;;; [5.1009] NO -- GO ON
    774	001414					CALL	300$		;;; [5.1009] YES -- QUEUE UP AN ERROR LOG REQUEST
	001414	004737 	001750'			JSR	PC,300$
    775	001420				85$:
    776	001420	012603 				MOV	(SP)+,R3	;;; RESTORE REGISTERS
    777	001422	012602 				MOV	(SP)+,R2
    778	001424	012601 				MOV	(SP)+,R1
    779	001426	012600 				MOV	(SP)+,R0
    780	001430	000137 	000000G			JMP	@#..INTX	;;; RETURN FROM INTERRUPTS
    781						;
    782	001434				82$:
    783	001434	000137 	000730'			JMP	40$
    784						;
    791
    792	001440				100$:
    793	001440	032762 	163400 	000010 		BIT	#DLT!WCE!UPE!PGE!MXF!MDPE,RPCS2(R2) ;;; CONTROLLER ERROR?
    794	001446	001335 				BNE	60$		;;; IF NE YES
    795
    802
    803	001450	005701 				TST	R1		;;; DATA CHECK ERROR?
    804	001452	100333 				BPL	60$		;;; IF PL NO
    805
    807
    808	001454	032701 	000100 			BIT	#ECH,R1		;;; ECC HARD ERROR?
    809	001460	001330 				BNE	60$		;;; IF NE YES
    810
    812
    813					;
    814					; START ECC CORRECTION PROCEDURE
    815					;
    816					; FIRST CALCULATE THE BYTE OFFSET TO THE START OF BLOCK TRANSFERED
    817					;
    818
    819	001462				105$:
    820	001462	016203 	000002 			MOV	RPWC(R2),R3	;;; GET NEGATIVE NUMBER OF WORDS REMAINING
    821	001466	006303 				ASL	R3		;;; CONVERT TO NEGATIVE BYTES REMAINING
    822	001470	063703 	000000G			ADD	RPCNT,R3	;;; CALCULATE NUMBER OF BYTES TRANSFERED
    823
    832
    833	001474	005303 				DEC	R3		;;; CALCULATE OFFSET TO START OF BLOCK
    834	001476				107$:
    835	001476	042703 	000777 			BIC	#777,R3		;;; CLEAR RESIDUE
    836
    844
    846
    847					;
    848					; 18-BIT ECC CORRECTION ROUTINES
    849					;
    850					; THE WORD IN ERROR AND THE WORD FOLLOWING IT ARE SET UP AS A TRIPLET
    851					; (TWO 18-BIT WORDS) AS IS THE ECC CORRECTION MASK FROM THE CONTROLLER.
    852					; THE MASK TRIPLET IS POSITIONED OVER THE DATA TRIPLET, CORRECTION IS
    853					; APPLIED, AND THE TWO DATA WORDS RETUNED TO THE BUFFER. THE CURRENT
    854					; OPERATION THEN PROCEEDS NORMALLY.
    855					;
    856	001502	016200 	000044 			MOV	RPEC1(R2),R0	;;; LOOK AT POSITION REGISTER
DBDRV -- RP04/RP06 DRIVER	MACRO M1113  03-APR-86 20:48  PAGE 10-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

    857	001506	001003 				BNE	109$		;;; 5.000 BRANCH IF OK
    858	001510	112700 	000374 			MOVB	#IE.VER&377,R0	;;; 5.000 INDICATE ERROR
    859	001514	000721 				BR	80$		;;; AND EXIT
    860	001516	005300 			109$:	DEC	R0		;;; MINUS 1
    861	001520	012701 	000022 			MOV	#^D18,R1	;;; DIVIDE BY 18.
    862	001524					CALL	$DIV		;;; SO
	001524	004737 	000032'			JSR	PC,$DIV
    863					;
    864					; COMPUTE THE ADDRESS OF THE WORD IN ERROR
    865					;
    866					;	R0 -- WORD OFFSET IN TRANSFER
    867					;	R1 -- SHIFT COUNT FOR ECC MASK
    868					;	R2 -- BASE OF CONTROLLER REGISTERS
    869					;	R3 -- OFFSET INTO TRANSFER BUFFER
    870					;
    871	001530	006300 				ASL	R0		;;; CONVERT TO BYTE OFFSET
    872	001532	063703 	000002G			ADD	RPBUF+2,R3	;;; BUFFER ADDRESS TO R3
    873	001536	060003 				ADD	R0,R3		;;; POINT TO WORD IN ERROR
    874					;
    875					; CONSTRUCT THE CORRECTION MASK TRIPLET
    876					;
    877	001540	012700 	000512'			MOV	#ECCMSK+6,R0	;;; POINT TO THE MASK BUFFER
    878	001544	005040 				CLR	-(R0)		;;; CLEAR IT OUT
    879	001546	005040 				CLR	-(R0)		;;; SO
    880	001550	016240 	000046 			MOV	RPEC2(R2),-(R0)	;;; SET THE MASK WORD IN THE BUFFER
    881	001554					CALL	141$		;;; SHIFT IT INTO CORRECT POSITION
	001554	004737 	001704'			JSR	PC,141$
    882					;
    883					; CONSTRUCT THE ERROR DATA TRIPLET
    884					;
    885	001560	005723 				TST	(R3)+		;;; POINT TO THE SECOND ERROR WORD
    886	001562	012700 	000504'			MOV	#ECCWRD+6,R0	;;; POINT TO THE ECC WORD BUFFER
    887	001566	005040 				CLR	-(R0)		;;; CLEAR IT OUT
    888	001570	005040 				CLR	-(R0)		;;; SO
    889	001572	011340 				MOV	(R3),-(R0)	;;; SET SECOND ERROR WORD IN BUFFER
    890	001574	012701 	000022 			MOV	#^D18,R1	;;; SHIFT IT INTO THE HIGH 18. BITS
    891	001600					CALL	141$		;;; SO
	001600	004737 	001704'			JSR	PC,141$
    892	001604	014310 				MOV	-(R3),(R0)	;;; SET THE FIRST ERROR WORD IN THE BUFFER
    893	001606	012701 	000504'			MOV	#ECCMSK,R1	;;; POINT TO THE SHIFTED MASK
    894					;
    895					; APPLY CORRECTION TO EACH WORD IN THE DATA TRIPLET
    896					;
    897	001612					CALL	130$		;;; CORRECT BITS 00 THRU 16
	001612	004737 	001672'			JSR	PC,130$
    898	001616					CALL	130$		;;; CORRECT BITS 17 THRU 32
	001616	004737 	001672'			JSR	PC,130$
    899	001622					CALL	130$		;;; CORRECT BITS 33 THRU 36
	001622	004737 	001672'			JSR	PC,130$
    900					;
    901					; REPLACE THE ERROR WORDS WITH THOSE JUST CORRECTED
    902					;
    903	001626	162700 	000006 			SUB	#6,R0		;;; BACK THE POINTER UP
    904	001632	011023 				MOV	(R0),(R3)+	;;; SET FIRST CORRECTED WORD IN BUFFER
    905	001634	012701 	177756 			MOV	#-^D18,R1	;;; SHIFT COUNT TO R1
    906	001640					CALL	141$		;;; SHIFT SECOND CORRECTED WORD DOWN
	001640	004737 	001704'			JSR	PC,141$
DBDRV -- RP04/RP06 DRIVER	MACRO M1113  03-APR-86 20:48  PAGE 10-3
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

    907	001644	011013 				MOV	(R0),(R3)	;;; SET SECOND CORRECTED WORD IN BUFFER
    908					;
    909					; CONTINUE OR TERMINATE PREVIOUS OPERATION
    910					;
    911
    913
    961
    962					;
    963					; SIXTH FINISH OR CONTINUE PREVIOUS FUNCTION
    964					;
    965
    966	001646	012700 	000001 			MOV	#IS.SUC&377,R0	;;; ASSUME SUCCESSFUL TRANSFER
    967	001652	112712 	000011 			MOVB	#11,@R2		;;; CLEAR DRIVE ERRORS
    968
    974
    975	001656	005762 	000002 			TST	RPWC(R2)	;;; ANY MORE WORDS TO TRANSFER?
    976
    978
    979	001662	001632 				BEQ	70$		;;; IF EQ NO
    980
    989
    990	001664	113712 	000000G			MOVB	RPBUF,@R2	;;; RESTART PREVIOUS OPERATION
    991	001670	000653 				BR	85$
    992						;
    994
    995					;
    996					; APPLY CORRECTION TO ONE WORD IN THE ERROR TRIPLET
    997					;
    998					; INPUTS:
    999					;
   1000					;	R0 POINTS TO WORD IN DATA TRIPLET TO BE CORRECTED
   1001					;	R1 POINTS TO WORD IN MASK TRIPLET TO BE APPLIED TO DATA
   1002					;
   1003					; OUTPUTS:
   1004					;
   1005					;	R0 POINTS TO THE NEXT WORD IN THE DATA TRIPLET
   1006					;	R1 POINTS TO THE NEXT WORD IN THE MASK TRIPLET
   1007					;
   1008	001672				130$:
   1009	001672	011146 				MOV	(R1),-(SP)	;;; CURRENT MASK TO STACK
   1010	001674	041016 				BIC	(R0),(SP)	;;; .NOT. MASK .AND. DATA
   1011	001676	042110 				BIC	(R1)+,(R0)	;;; .NOT. DATA .AND. MASK
   1012	001700	052620 				BIS	(SP)+,(R0)+	;;; DATA .OR. MASK
   1013	001702				140$:
   1014	001702					RETURN			;;; FOR MORE
	001702	000207 				RTS	PC
   1015					;
   1016					; SHIFT A TRIPLET EITHER RIGHT OR LEFT
   1017					;
   1018					; INPUTS:
   1019					;
   1020					;	R0 POINTS TO TRIPLET TO BE SHIFTED
   1021					;	R1 HAS SHIFT COUNT -
   1022					;		.GT. 0 => SHIFT LEFT
   1023					;		.EQ. 0 => NO SHIFT
   1024					;		.LT. 0 => SHIFT RIGHT
   1025					;
DBDRV -- RP04/RP06 DRIVER	MACRO M1113  03-APR-86 20:48  PAGE 10-4
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1026					; NO REGISTERS ALTERED
   1027					;
   1028	001704				141$:
   1029	001704	010146 				MOV	R1,-(SP)	;;; SAVE SHIFT COUNT
   1030	001706	100407 				BMI	143$		;;; SHIFT RIGHT IF NEGATIVE
   1031	001710	001415 				BEQ	145$		;;; GO AWAY IF .EQ. 0
   1032	001712				142$:
   1033	001712	006320 				ASL	(R0)+		;;; SHIFT AWAY TO THE LEFT
   1034	001714	006120 				ROL	(R0)+		;;; PROPAGATE CARRY
   1035	001716	006110 				ROL	(R0)		;;; FOR ALL THREE WORDS
   1036	001720	024040 				CMP	-(R0),-(R0)	;;; BACK THE POINTER UP
   1037	001722	077105 				SOB	R1,142$		;;; LOOP TILL DONE
   1038	001724	000407 				BR	145$		;;; EXIT
   1039						;
   1040	001726				143$:
   1041	001726	005401 				NEG	R1		;;;  SO "SOB" WORKS
   1042	001730				144$:
   1043	001730	022020 				CMP	(R0)+,(R0)+	;;; 5.000 ADVANCE THE POINTER
   1044	001732	000241 				CLC			;;; 5.000 CLEAR THE CARRY BIT
   1045	001734	006010 				ROR	(R0)		;;; 5.000
   1046	001736	006040 				ROR	-(R0)		;;; 5.000
   1047	001740	006040 				ROR	-(R0)		;;; 5.000
   1048	001742	077106 				SOB	R1,144$		;;; TRY FOR MORE
   1049	001744				145$:
   1050	001744	012601 				MOV	(SP)+,R1	;;; RESTORE SHIFT COUNT
   1051	001746					RETURN			;;; TO CALLER
	001746	000207 				RTS	PC
   1052
   1054
   1074
   1075					;
   1076					; OFFSET RECOVERY
   1077					;
   1078
   1157	001750				300$:
   1158	001750	005737 	000002G			TST	.COMEF+2	;;; [4.1.1105] PRIMARY PROTOCOL RUNNING??
   1159	001754	100037 				BPL	340$		;;; [4.1.1105] NO -- JUST EXIT
   1160	001756	022737 	000002 	000000G		CMP	#2,.RPELC	;;; [5.1009] YES -- IS THERE SPACE IN THE QUEUE
   1161	001764	001433 				BEQ	340$		;;; [5.1009] NO -- EXIT
   1162	001766	012701 	000052 			MOV	#52,R1		;;; [5.1009] YES -- ALLOCATE A PACKET
   1163	001772					CALL	..ALCB		;;; [5.1009] SO
	001772	004737 	000000G			JSR	PC,..ALCB
   1164	001776	103426 				BCS	340$		;;; [5.1009] ERROR IF CC-C IS SET
   1165	002000	005237 	000000G			INC	.RPELC		;;; [5.1009] COUNT THIS NODE
   1166	002004	012702 	000000G			MOV	#.RPELQ,R2	;;; [5.1009] LISTHEAD POINTER TO R2
   1167	002010				310$:
   1168	002010	011203 				MOV	(R2),R3		;;; [5.1009] FIND THE END OF THE LIST
   1169	002012	001402 				BEQ	320$		;;; [5.1009] FOUND IT -- GO ON
   1170	002014	010303 				MOV	R3,R3		;;; [5.1009] NOT YET
   1171	002016	000774 				BR	310$		;;; [5.1009] TRY AGAIN
   1172						;
   1173	002020				320$:
   1174	002020	010012 				MOV	R0,(R2)		;;; [5.1009] LINK NEW NODE
   1175	002022	005020 				CLR	(R0)+		;;; [5.1009] MARK END OF LIST
   1176	002024	010120 				MOV	R1,(R0)+	;;; [5.1009] SET NODE SIZE
   1177	002026	012720 	000046 			MOV	#46,(R0)+	;;; [5.1009] SET TRANSFER SIZE
   1178	002032	012720 	000300 			MOV	#DV.LOG!DV.URE,(R0)+ ;;; [5.1009] SET STANDARD STATUS
DBDRV -- RP04/RP06 DRIVER	MACRO M1113  03-APR-86 20:48  PAGE 10-5
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1179	002036	012701 	176700 			MOV	#RPEXP,R1	;;; [5.1009] POINT TO BASE OF DEVICE REGISTERS
   1180	002042	010120 				MOV	R1,(R0)+	;;; [5.1009] SET THAT IN PACKET
   1181	002044	012702 	000020 			MOV	#20,R2		;;; [5.1009] SET SIZE OF DEVICE
   1182	002050				330$:
   1183	002050	012120 				MOV	(R1)+,(R0)+	;;; [5.1009] LOAD UP THE PACKET
   1184	002052	077202 				SOB	R2,330$		;;; [5.1009] SO
   1185	002054				340$:
   1186	002054					RETURN			;;; [5.1009] TO CALLER
	002054	000207 				RTS	PC
   1188						.TITLE	DTDRV
   1189						.IDENT	/007000/
   1190					;
   1191					;
   1192					;
   1193					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   1194					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   1195					;			ALL RIGHTS RESERVED.
   1196					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   1197					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   1198					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   1199					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   1200					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   1201					;
   1202					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   1203					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   1204					;       CORPORATION.
   1205					;
   1206					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   1207					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   1208					;
   1209					; VERSION 07-00
   1210					;
   1211					;	R. MCLEAN 5-JUN-75
   1212					;
   1213					; TC11 DECTAPE CONTROLLER DRIVER
   1214					;
   1215					; MODIFICATIONS:
   1216					;
   1217					;	NO.	DATE		PROGRAMMER	PURPOSE
   1218					;	---	----		----------	-------
   1219					;	001	15-MAR-77	R. BELANGER	CONDITIONALLY
   1220					;						ASSEMBLE DECTAPE DRIVER
   1221					;	002	04-APR-77	A. PECKHAM	FIX BUG IN I/O DONE SERVICE
   1222					;	22-0CT-77		R. BELANGER	REMOVE CONDITIONALS
DTDRV	MACRO M1113  03-APR-86 20:48  PAGE 11
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1224					; MACRO LIBRARY CALLS
   1225					;
   1226					;
   1227						.MCALL	QIOSY$,$DEF
   1228						.MCALL	.STKM,WTSE$,QIOW$,MRKT$,DIR$,CALL,RETURN
   1229	002056					$DEF
   1230	002056					QIOSY$
   1231					;
   1232					;
   1233		000020 			A.EF=20		;TEMP DEFINITION OF A.EF BECAUSE MACY WON'T ACCEPT COMPLEX GLOBLS
   1234					;
   1235					; EQUATED SYMBOLS
   1236					;
   1237					;
   1238		000005 			RETRY=5.			;ERROR RETRY COUNT
   1239					;
   1240		177340 			DTEXP=177340			;EXTERNAL PAGE ADDRESS OF DTA'S
   1241					;
   1242					; DIRECTIVES
   1243					;
   1244					;
   1245	002056				DTHD::	.STKM	0,0,0,0,0,0,0,DTINI,174000,DTSTK
	002124	000000 	000000 	000000 		.WORD	0,0,0,0
	002132	000000
	002152	174000 	002442'	002336'		.WORD	174000,DTINI,DTSTK
	002206	000005 				.WORD	5
	002210	000000G				.WORD	TTPEN
	002212	000000 				.WORD	0
	002214	000000 				.WORD	0
	002216	000000 				.WORD	0
	002220	000000 				.WORD	0
	002222	000000 				.WORD	0
	002224	000000 				.WORD	0
	002226	000000 				.WORD	0
	002230	000000 				.WORD	0
	002232	000000 				.WORD	0
	002234	000000 				.WORD	0
	002336	000000 				.WORD	0
	002340	000000 				.WORD	0
	002342	000000 				.WORD	0
	002344	000000 				.WORD	0
	002346	000000 				.WORD	0
	002350	000000 				.WORD	0
	002352	002442'				.WORD	DTINI
	002354	174000 				.WORD	174000
   1246					;
   1247	002356				WFDTQ:	WTSE$	E.NIR
	002356	   051 	   002 			.BYTE	41.,2
	002360	000000G				.WORD	E.NIR
   1248					;
   1249	002362				WFDTD:	WTSE$	E.IOD
	002362	   051 	   002 			.BYTE	41.,2
	002364	000000G				.WORD	E.IOD
   1250					;
   1251	002366				DTNRM:	QIOW$	IO.WLB,1,1,0,0,0,<NTRDMS,NTRDSZ>
	002366	   003 	   010 			.BYTE	3,$$$ARG
	002370	000400 				.WORD	IO.WLB
DTDRV	MACRO M1113  03-APR-86 20:48  PAGE 11-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

	002372	000001 				.WORD	1
	002374	   001 	   000 			.BYTE	1,0
	002376	000000 				.WORD	0
	002400	000000 				.WORD	0
	002402	002424'				.WORD	NTRDMS
	002404	000016 				.WORD	NTRDSZ
   1252					;
   1253	002406				MRKDT:	MRKT$	2,74*10,0,0
	002406	   027 	   005 			.BYTE	23.,5
	002410	000002 				.WORD	2
	002412	000740 				.WORD	74*10
	002414	000000 				.WORD	0
	002416	000000 				.WORD	0
   1254					;
   1255	002420				WFMKT:	WTSE$	2
	002420	   051 	   002 			.BYTE	41.,2
	002422	000002 				.WORD	2
   1256					;
   1257	002424	   012 	   015 	   104 	NTRDMS:	.ASCII	<12><15>"DT NOT RDY"<15><12>
	002427	   124 	   040 	   116
	002432	   117 	   124 	   040
	002435	   122 	   104 	   131
	002440	   015 	   012
   1258		000016 			NTRDSZ=.-NTRDMS
   1259						.EVEN
   1260					;
   1261					; DRIVER DISPATCH TABLE
   1262					;
   1263					;
   1264					;+
   1265					; **-DTINI-TC11 DECTAPE CONTROLLER INITIATOR
   1266					;
   1267					; THIS ROUTINE IS ENTERED FROM THE QUEUE I/O DIRECTIVE WHEN AN I/O REQUEST
   1268					; IS QUEUED AND AT THE END OF A PREVIOUS I/O OPERATION TO PROPAGATE THE EXECU-
   1269					; TION OF THE DRIVER. IF THE SPECIFIED CONTROLLER IS NOT BUSY, THEN AN ATTEMPT
   1270					; IS MADE TO DEQUEUE THE NEXT I/O REQUEST. ELSE A RETURN TO THE CALLER IS
   1271					; EXECUTED. IF THE DEQUEUE ATTEMPT IS SUCCESSFUL, THEN THE NEXT I/O OPER-
   1272					; ATION IS INITIATED. A RETURN TO THE CALLER IS THEN EXECUTED.
   1273					;
   1274					; INPUTS:
   1275					;
   1276					;
   1277					; OUTPUTS:
   1278					;
   1279					;	IF THE SPECIFIED CONTROLLER IS NOT BUSY AND AN I/O REQUEST IS WAIT-
   1280					;	ING TO BE PROCESSED, THEN THE REQUEST IS DEQUEUED AND THE I/O OPER-
   1281					;	ATION IS INITIATED.
   1282					;-
   1283					;
   1284						.ENABL	LSB
   1285					;
   1286	002442				DTINI:	DIR$	#WFDTQ		;WAIT FOR SOMETHING TO BE QUEUE'S
	002442	012746 	002356'			MOV	#WFDTQ,-(SP)
	002446	104375 				EMT	375
   1287	002450	012700 	052104 			MOV	#"DT,R0		;FIND THE UNIT NUMBER OF THE DT
   1288	002454					CALL	..DQRN		;;DEQUEUE REQUEST
	002454	004737 	000000G			JSR	PC,..DQRN
DTDRV	MACRO M1113  03-APR-86 20:48  PAGE 11-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1289	002460	103770 				BCS	DTINI
   1290	002462	010337 	000000G			MOV	R3,DTCNT	;SAVE COUNT
   1291	002466	010437 	000000G			MOV	R4,DTBUF
   1292	002472	010537 	000002G			MOV	R5,DTBUF+2
   1293
   1294	002476	012737 	000005 	000000G		MOV	#RETRY,DTRTC ;SET RETRY COUNT
   1295	002504	012700 	000001G			MOV	#DTBUF+1,R0
   1296	002510	110210 				MOVB	R2,@R0		;INSERT DRIVE NUMBER
   1297	002512	152740 	000115 			BISB	#115,-(R0)	;ASSUME WRITE LOGICAL FUNCTION
   1298	002516	122761 	000001 	000001G		CMPB	#IO.WLB/256.,R.FC+1(R1) ;WRITE LOGICAL FUNCTION?
   1299	002524	001406 				BEQ	10$		;IF EQ YES
   1300	002526	042710 	000010 			BIC	#10,@R0		;CONVERT TO READ LOGICAL FUNCTION
   1301	002532	122761 	000002 	000001G		CMPB	#IO.RLB/256.,R.FC+1(R1) ;READ LOGICAL?
   1302	002540	001074 				BNE	767$		;NO -- BAD FUNCTION
   1303	002542	032761 	000100 	000000G	10$:	BIT	#IO.WLV&377,R.FC(R1) ;REVERSE DIRECTION?
   1304	002550	001402 				BEQ	20$		;IF EQ NO
   1305	002552	052710 	004000 			BIS	#4000,@R0	;SET REVERSE DIRECTION BIT
   1306	002556	012703 	000354 		20$:	MOV	#IE.BLK&377,R3	;ASSUME ILLEGAL BLOCK NUMBER
   1307	002562	016102 	000010G			MOV	R.PB+10(R1),R2	;GET LOW PART OF LOGICAL BLOCK NUMBER
   1308	002566	020227 	001102 			CMP	R2,#1102	;LEGAL BLOCK NUMBER?
   1309	002572	103052 				BHIS	66$		; +++002 IF HIS NO
   1310	002574	105761 	000006G			TSTB	R.PB+6(R1)	;HIGH PART OF LOGICAL BLOCK NUMBER ZERO?
   1311	002600	001045 				BNE	50$		;IF NE NO
   1312	002602	010237 	000000G			MOV	R2,DTCW2	;SET LOGICAL BLOCK NUMBER
   1313
   1314					;
   1315					;
   1316
   1317	002606	005037 	177340 		DTOUT:	CLR	@#DTEXP		;;;CLEAR INTERRUPT ENABLE
   1318					;
   1319					;
   1320					; INITIATE I/O OPERATION
   1321					;
   1322					;
   1323	002612	012700 	177346 		30$:	MOV	#DTEXP+6,R0	;GET ADDRESS OF COMMAND REGISTER
   1324	002616	013710 	000002G			MOV	DTBUF+2,@R0	;INSERT BUFFER ADDRESS
   1325	002622	013740 	000000G			MOV	DTCNT,-(R0)	;INSERT LENGTH OF TRANSFER IN BYTES
   1326	002626	005037 	000000G			CLR	DTCW3		;CLEAR FINAL ERROR STATUS
   1327	002632	006010 				ROR	@R0		;CONVERT LENGTH TO WORD COUNT
   1328	002634	005410 				NEG	@R0		;MAKE NEGATIVE WORD COUNT
   1329	002636	113740 	000001G			MOVB	DTBUF+1,-(R0) ;INSERT UNIT AND DIRECTION BIT
   1330	002642	112740 	000011 			MOVB	#11,-(R0)	;STOP TRANSPORT (SELECT UNIT)
   1331	002646	032710 	100200 		35$:	BIT	#100200,@R0	;SELECT ERROR?
   1332	002652	100432 				BMI	40$		;IF MI YES
   1333	002654	001774 				BEQ	35$		;IF EQ DRIVE NOT SELECTED
   1334	002656	112737 	000010 	000001G		MOVB	#8.,DTRTC+1	;SET TAPE ROCK COUNT
   1335	002664	042737 	000000G	000020G		BIC	#EF.IOD,DTTSK+A.EF ;CLEAR EVENT FLAG
   1336	002672	112710 	000103 			MOVB	#103,@R0	;START SEARCH FOR BLOCK.
   1337	002676	032737 	000340 	177776 		BIT	#340,@#PS	;AT PRI LEVEL?
   1338	002704	001176 				BNE	140$		;YES -- RETURN THROUGH INTERRUPT SERVICE
   1339	002706					DIR$	#WFDTD		;WAIT FOR I/O DONE
	002706	012746 	002362'			MOV	#WFDTD,-(SP)
	002712	104375 				EMT	375
   1340	002714	013703 	000000G		50$:	MOV	DTBUF,R3	;SET UP FOR I/O DONE
   1341	002720	013704 	000000G		66$:	MOV	DTCNT,R4
   1342	002724					CALL	..IODN
	002724	004737 	000000G			JSR	PC,..IODN
DTDRV	MACRO M1113  03-APR-86 20:48  PAGE 11-3
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1343	002730	000644 				BR	DTINI		;WAIT FOR ANOTHER
   1344	002732	012703 	177776 		767$:	MOV	#IE.IFC,R3
   1345	002736	000770 				BR	66$
   1346					;
   1347					;
   1348					;
   1349					;
   1350					;
   1351					; OUTPUT SELECT ERROR MESSAGE
   1352					;
   1353					;
   1354	002740	032737 	000340 	177776 	40$:	BIT	#340,@#PS		;CHECK FOR INT SERV
   1355	002746	001135 				BNE	175$		;TOUGH
   1356	002750					DIR$	#DTNRM		;COMPLAIN
	002750	012746 	002366'			MOV	#DTNRM,-(SP)
	002754	104375 				EMT	375
   1357	002756					DIR$	#MRKDT		;MARK TIME ON SELECT ERROR
	002756	012746 	002406'			MOV	#MRKDT,-(SP)
	002762	104375 				EMT	375
   1358	002764					DIR$	#WFMKT		;WAIT FOR MARK TIME
	002764	012746 	002420'			MOV	#WFMKT,-(SP)
	002770	104375 				EMT	375
   1359	002772	000705 				BR	DTOUT		;AND TRY AGAIN
   1360					;
   1361
   1362					;+
   1363					; **-$DTINT-TC11 DECTAPE CONTROLLER INTERUPTS
   1364					;-
   1365					;
   1366	002774				$DTINT::			;;;REF LABEL
   1367					;
   1368					;
   1369					;
   1370					;
   1371	002774	010046 				MOV	R0,-(SP)	;;;SAVE REGISTERS
   1372	002776	010246 				MOV	R2,-(SP)
   1373	003000	010346 				MOV	R3,-(SP)
   1374					;
   1375					;
   1376					;
   1377					;
   1378	003002	012703 	177342 			MOV	#DTEXP+2,R3	;;;SET UP ADDRESS OF DT
   1379	003006	032713 	000002 			BIT	#2,@R3		;;;BLOCK SEARCH IN PROGRESS?
   1380	003012	001462 				BEQ	150$		;;;IF EQ NO
   1381	003014	005713 				TST	@R3		;;;SEARCH ERROR?
   1382	003016	100011 				BPL	70$		;;;IF PL NO
   1383	003020	005743 				TST	-(R3)		;;;END ZONE?
   1384	003022	100436 				BMI	110$		;;;IF MI YES
   1385	003024	032723 	020000 			BIT	#20000,(R3)+	;;;MARK TRACK ERROR?
   1386	003030	001045 				BNE	120$		;;;IF NE YES-TRY TO BYPASS IT
   1387	003032	012737 	100000 	000000G	60$:	MOV	#100000,DTCW3 ;;;SET UNRECOVERALBE ERROR
   1388	003040	000454 				BR	160$		;;;
   1389	003042	016346 	000006 		70$:	MOV	6(R3),-(SP)	;;;GET CURRENT BLOCK NUMBER
   1390	003046	123763 	000001G	000001 		CMPB	DTBUF+1,1(R3) ;;;MOVING IN FINAL DIRECTION?
   1391	003054	001003 				BNE	80$		;;;IF NE NO
   1392	003056	021637 	000000G			CMP	@SP,DTCW2	;;;BLOCK NUMBER MATCH?
   1393	003062	001432 				BEQ	130$		;;;IF EQ YES
DTDRV	MACRO M1113  03-APR-86 20:48  PAGE 11-4
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1394	003064	032713 	004000 		80$:	BIT	#4000,@R3	;;;MOVING IN FORWARD DIRECTION?
   1395	003070	001405 				BEQ	90$		;;;IF EQ YES
   1396	003072	062716 	000002 			ADD	#2,@SP		;;;ADD TURN AROUND BIAS
   1397	003076	023726 	000000G			CMP	DTCW2,(SP)+	;;;TURN AROUND NECESSARY?
   1398	003102	000404 				BR	100$		;;;
   1399	003104	162716 	000002 		90$:	SUB	#2,@SP		;;;SUBTRACT TURN AROUND BIAS
   1400	003110	022637 	000000G			CMP	(SP)+,DTCW2	;;;TURN AROUND NECESSARY?
   1401	003114	003413 			100$:	BLE	120$		;;;IF LE NO
   1402	003116	005743 				TST	-(R3)		;;;POINT TO ERROR REGISTER
   1403	003120	005723 			110$:	TST	(R3)+		;;;POINT TO COMMAND REGISTER
   1404	003122	105337 	000001G			DECB	DTRTC+1		;;;DRIVE HUNG?
   1405	003126	002741 				BLT	60$		;;;IF LT YES
   1406	003130	012746 	004000 			MOV	#4000,-(SP)	;;;GET DIRECTION BIT
   1407	003134	041316 				BIC	@R3,@SP		;;;.NOT.COMMAND REGISTER.AND.DIRECTION BIT
   1408	003136	042713 	004000 			BIC	#4000,@R3	;;;.NOT.DIRECTION BIT.ANL.OMMAND REGISTER
   1409	003142	052613 				BIS	(SP)+,@R3	;;;DIRECTION BIT.OR.COMMAND REGISTER
   1410	003144	005213 			120$:	INC	@R3		;;;CONTINUE SEARCH
   1411	003146	000455 				BR	140$		;;;
   1412	003150	005726 			130$:	TST	(SP)+		;;;REMOVE BLOCK NUMBER FROM STACK
   1413	003152	013713 	000000G			MOV	DTBUF,@R3	;;;START READ/WRITE FUNCTION
   1414	003156	000451 				BR	140$
   1415	003160	005713 			150$:	TST	@R3		;;;ANY ERRORS?
   1416	003162	100003 				BPL	160$		;;;IF PL NO
   1417	003164	016337 	177776 	000000G		MOV	-2(R3),DTCW3	;;;SAVE ERROR STATUS
   1418	003172	112713 	000011 		160$:	MOVB	#11,@R3		;;;STOP TAPE MOTION
   1419	003176	012700 	000001 			MOV	#IS.SUC&377,R0	;ASSUME SUCCESSFUL COMPLETION
   1420	003202	013702 	000000G			MOV	DTCW3,R2	;RETRIEVE FINAL STATUS
   1421	003206	001417 				BEQ	180$		;IF EQ SUCCESS
   1422	003210	032702 	063000 			BIT	#63000,R2	;RECOVERABLE ERROR?
   1423	003214	001405 				BEQ	170$		;IF EQ NO
   1424	003216	105337 	000000G			DECB	DTRTC		;ANY MORE RETRIES?
   1425	003222	003402 				BLE	170$		;IF LE NO
   1426	003224	000137 	002612'			JMP	30$		;TRY AGAIN
   1427	003230	012700 	000364 		170$:	MOV	#IE.WLK&377,R0	;ASSUME DRIVE WRITE LOCKED
   1428	003234	032702 	010000 			BIT	#10000,R2	;DRIVE WRITE LOCKED?
   1429	003240	001002 				BNE	180$		;IF NE YES
   1430	003242	012700 	000374 		175$:	MOV	#IE.VER&377,R0	;UNRECOVERABLE ERROR
   1431	003246	013703 	177344 		180$:	MOV	DTEXP+4,R3
   1432	003252	160303 				SUB	R3,R3
   1433	003254	063703 	000000G			ADD	DTCNT,R3
   1434	003260	010037 	000000G			MOV	R0,DTBUF	;SAVE I/O STATUS
   1435	003264	010337 	000002G			MOV	R3,DTBUF+2
   1436	003270	052737 	000000G	000020G		BIS	#EF.IOD,DTTSK+A.EF	;SET EVENT FLAG
   1437	003276					CALL	..DSEV
	003276	004737 	000000G			JSR	PC,..DSEV
   1438	003302	012603 			140$:	MOV	(SP)+,R3
   1439	003304	012602 				MOV	(SP)+,R2
   1440	003306	012600 				MOV	(SP)+,R0
   1441	003310	000137 	000000G			JMP	..INTX		;RETURN FROM INTERRUPT
   1442					;
   1443						.DSABL	LSB
   1444					;
DTDRV	MACRO M1113  03-APR-86 20:48  PAGE 12
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1447
   1448
DTDRV	MACRO M1113  03-APR-86 20:48  PAGE 18
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1881
   1882
   1883						.TITLE	FEDRV
   1884						.IDENT	/014220/
   1885		000001 			$DIRAC=1
   1886					;
   1887					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   1888					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   1889					;			ALL RIGHTS RESERVED.
   1890					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   1891					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   1892					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   1893					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   1894					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   1895					;
   1896					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   1897					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   1898					;       CORPORATION.
   1899					;
   1900					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   1901					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   1902					;
   1903					; VERSION 14-22
   1904					;
   1905					;	R. MCLEAN 25-JUN-75
   1906					;	A. PECKHAM 30-NOV-76
   1907					; TCO 4.1.1105	11-MAR-80	R. BELANGER	CHANGE "EF.PR1" RECOGNITION
   1908					;
   1909					; FE PSEUDO DRIVER
   1910					;
   1911					; MACRO LIBRARY CALLS
   1912					;
   1913					;
   1914						.MCALL	.STKM,WTLO$,DIR$,.INH0,.ENB0,.ENB6,.INH6,.ENB,.INH
   1915						.MCALL	CALL,CALLR,RETURN
   1916					;
   1917					; EQUATED SYMBOLS
   1918					;
   1919		100000 			EF.SEP=100000	;SECONDARY PROTOCOL FLAG
   1920		000400 			EF.TEF=400	;DONE EVENT FLAG
   1921					;
   1922					; DIRECTIVES
   1923					;
   1924	003314				WFEF1:	WTLO$	1,EF.SEP!EF.NIR!EF.TEF	 ;WAIT FOR SOMETHING TO DO
	003314	   053 	   003 			.BYTE	43.,3
	003316	000001 				.WORD	1
	003320	000000C				.WORD	EF.SEP!EF.NIR!EF.TEF
   1925					;
   1926					;	DATA AREAS
   1927					;
   1928					;	FETBL SWITCHES
   1929					;
   1930		040000 			FE.DET=040000	;MORE DATA -11 TO -10 TO BE SENT
   1931		020000 			FE.DTE=020000	;MORE DATA -10 TO -11 EXPECTED
   1932		004000 			FE.SER=004000	;SERVICING -11 TRANSFER REQUEST
   1933		002000 			FE.STR=002000	;SERVICING -10 TRANSFER REQUEST
   1934
FEDRV	MACRO M1113  03-APR-86 20:48  PAGE 18-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1935	003322				FEHD::	.STKM	0,0,0,0,0,0,0,FEDRV,174000,FESTK
	003370	000000 	000000 	000000 		.WORD	0,0,0,0
	003376	000000
	003416	174000 	003622'	003602'		.WORD	174000,FEDRV,FESTK
	003452	000005 				.WORD	5
	003454	000000G				.WORD	TTPEN
	003456	000000 				.WORD	0
	003460	000000 				.WORD	0
	003462	000000 				.WORD	0
	003464	000000 				.WORD	0
	003466	000000 				.WORD	0
	003470	000000 				.WORD	0
	003472	000000 				.WORD	0
	003474	000000 				.WORD	0
	003476	000000 				.WORD	0
	003500	000000 				.WORD	0
	003602	000000 				.WORD	0
	003604	000000 				.WORD	0
	003606	000000 				.WORD	0
	003610	000000 				.WORD	0
	003612	000000 				.WORD	0
	003614	000000 				.WORD	0
	003616	003622'				.WORD	FEDRV
	003620	174000 				.WORD	174000
FEDRV	MACRO M1113  03-APR-86 20:48  PAGE 19
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1937	003622				FEDRV:	DIR$	#WFEF1		;WAIT TO GET STARTED
	003622	012746 	003314'			MOV	#WFEF1,-(SP)
	003626	104375 				EMT	375
   1938	003630					.INH0			;LOCK OUT DTE INTERRUPTS
	003630	013746 	177776 			MOV	@#PS,-(SP)
	003634	112737 	000140 	177776 		MOVB	#140,@#PS
   1939	003642	013700 	000020G		1$:	MOV	FETSK+A.EF,R0	;;;PICK UP THE EVENT FLAGS
   1940	003646	001434 				BEQ	5$		;;;EXIT IF NOTHING
   1941	003650	005037 	000020G			CLR	FETSK+A.EF	;;;CLEAR EVENT FLAGS
   1942	003654	005737 	000002G			TST	.COMEF+2	;;; [4.1.1105] PRIMARY PROTOCOL IN USE?
   1943	003660	100002 				BPL	2$		;;; [4.1.1105] NO -- BETTER DUMP REQUEST'S
   1944	003662	005700 				TST	R0		;;;SECONDARY PROTOCOL CHANGE?
   1945	003664	100025 				BPL	5$		;;;NO -- CONTINUE
   1946					;
   1947					;	PRIMARY PROTOCOL HAS DIED - CLEAR OUT THE REQUEST QUEUE
   1948					;
   1949	003666	013701 	000000G		2$:	MOV	NODADR,R1	;;;GET CURRENT NODE
   1950	003672	005037 	000000G			CLR	NODADR		;;;DON'T BLOCK FE DRIVER
   1951	003676	005037 	000000G			CLR	STSWD		;;;CLEAR STATUS WORD BLOCK
   1952	003702	042737 	064000 	000000G		BIC	#FE.SER!FE.DET!FE.DTE,FETBL+0 ;;;NO ACTION ON FE0
   1953	003710	005701 				TST	R1		;;;WERE WE PROCESSING A NODE ?
   1954	003712	001005 				BNE	4$		;;;YES -- DO IT FIRST
   1955	003714	012700 	042506 		3$:	MOV	#"FE,R0		;;;PICK A NODE FROM THE QUEUE
   1956	003720					CALL	..DQRN		;;;DQ
	003720	004737 	000000G			JSR	PC,..DQRN
   1957	003724	103746 				BCS	1$
   1966	003726				4$:
   1968					;
   1969					;
   1970	003726	012703 	177761 		7$:	MOV	#IE.ABO,R3	;;;RETURN ABORTED
   1971	003732					CALL	..IODN		;;;FINISH I/O
	003732	004737 	000000G			JSR	PC,..IODN
   1972	003736	000766 				BR	3$		;;;AND TRY NEXT REQUEST
   1973					;
   1974					;	CHECK FOR EVENTS
   1975					;
   1976	003740				5$:	.ENB0			;;;ENABLE INTERRUPTS
	003740	004737 	000000G			JSR	PC,..ENB0
   1977	003744	032700 	000400 			BIT	#EF.TEF,R0	;CHECK TO SEE IF DONE
   1978	003750	001104 				BNE	IODN
   1979					;
   1980					;	MUST BE I/O REQUEST
   1981					;
   1982	003752	005737 	000000G			TST	NODADR		;BLOCKED?
   1983	003756	001321 				BNE	FEDRV		;YES -- DON'T DO ANYTHING ON QIO NOW
   1984	003760	012700 	042506 			MOV	#"FE,R0		;DQ FROM FE DRIVER
   1985	003764					CALL	..DQRN		;DQ
	003764	004737 	000000G			JSR	PC,..DQRN
   1986	003770	103714 				BCS	FEDRV		;NOTHING -- WAIT
   1987	003772	052737 	004000 	000000G		BIS	#FE.SER,FETBL+0	;FE0 BEING USED FOR -11 REQUEST
   1988	004000	010137 	000000G			MOV	R1,NODADR	;SAVE THE ADDRESS OF THE NODE
   1989	004004	010537 	000000G			MOV	R5,ADRSAV	;SAVE THE ADDRESS
   1990	004010	010337 	000000G			MOV	R3,BYTESA	;SAVE THE BYTE COUNT
   1991	004014	012702 	000000G			MOV	#TO10PK,R2	;SET UP PACKET ADDRESS
   1992	004020	010200 				MOV	R2,R0		;SAVE THE ADDRESS OF THE BUFFER
   1993	004022	012722 	000014 			MOV	#14,(R2)+	;STORE SIZE
   1994	004026	016122 	000000G			MOV	R.FC(R1),(R2)+	;SET UP THE FUNCTION CODE
FEDRV	MACRO M1113  03-APR-86 20:48  PAGE 19-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1995	004032	005003 				CLR	R3		;FIND THE LUN
   1996	004034	156103 	000000G			BISB	R.LU(R1),R3	;SET UP THE LUT NUMBER
   1997	004040	001005 				BNE	10$		;EXEC REQUEST?
   1998	004042	012722 	041104 			MOV	#"DB,(R2)+	;DECLARE DB
   1999	004046	013722 	000000G			MOV	.RPUNT,(R2)+	;SET UNIT NUMBER
   2000	004052	000424 				BR	77$		;AND FINISH
   2001	004054	016104 	000000G		10$:	MOV	R.AT(R1),R4	;FIND THE ATL
   2002	004060	016404 	000000G			MOV	A.HA(R4),R4	;FIND THE HEADER ADDRESS
   2003	004064	006303 				ASL	R3		;MULTIPLY THE LUN BY 2
   2004	004066	006303 				ASL	R3
   2005	004070	060304 				ADD	R3,R4		;POINT TO CORRECT ENTRY
   2006	004072	016404 	177776G			MOV	H.LUT-2(R4),R4	;FIND THE LUT (FINALLY)
   2007	004076	016404 	000000G			MOV	U.RP(R4),R4	;DO REDIRECT
   2008	004102	012422 				MOV	(R4)+,(R2)+	;STORE THE DEVICE (ASCII CHARACTER)
   2009	004104	011422 				MOV	(R4),(R2)+	;STORE THE UNIT
   2010	004106	116104 	000000G			MOVB	R.DP(R1),R4	;FIND THE DPB SIZE
   2011	004112	162704 	000007 			SUB	#7,R4		;SUB PERMINENT ONES
   2012	004116	001002 				BNE	77$		;GOT A GOOD BYTE COUNT
   2013	004120	005037 	000000G			CLR	BYTESA		;NO CLEAR OUT BYTE COUNT
   2014	004124	016122 	000006G		77$:	MOV	R.PB+6(R1),(R2)+ ;STORE THE BLOCK NUMBER
   2015	004130	016122 	000010G			MOV	R.PB+10(R1),(R2)+
   2016	004134	013722 	000000G			MOV	BYTESA,(R2)+	;SET BYTE COUNT
   2017	004140	001403 				BEQ	78$		;IF MORE DATA MUST GO OUT
   2018	004142	052737 	040000 	000000G		BIS	#FE.DET,FETBL+0	;THEN SO INDICATE
   2019	004150				78$:	CALL	SNSTR		;START INDIRECT FUNCTION
	004150	004737 	004224'			JSR	PC,SNSTR
   2020	004154	005037 	000000G			CLR	STSWD
   2021	004160	000620 				BR	FEDRV		;AND WAIT
   2022
   2023	004162	013703 	000000G		IODN:	MOV	STSWD,R3	;SET I/O DONE
   2024	004166	013704 	000002G			MOV	STSWD+2,R4
   2025	004172	013701 	000000G			MOV	NODADR,R1	;SET NODE ADDRESS
   2026	004176	005037 	000000G			CLR	NODADR		;CLEAR INCASE OF ABORT
   2027	004202	005037 	000000G			CLR	STSWD		;CLEAR STATUS WORD
   2028	004206					CALL	..IODN		;SET I/O DONE
	004206	004737 	000000G			JSR	PC,..IODN
   2029	004212	042737 	064000 	000000G		BIC	#FE.SER!FE.DET!FE.DTE,FETBL+0 ;WE ARE FINISHED WITH -11 REQUEST
   2030	004220	000137 	003622'			JMP	FEDRV		;AND RETURN
   2031
   2032	004224	012701 	100000G		SNSTR:	MOV	#BC.STR+100000,R1 ;SET UP STRING DATA
   2033	004230	005002 				CLR	R2		;NO EVENT FLAG
   2034	004232	012703 	000000G			MOV	#D.FEPD,R3	;FE DEVICE
   2035	004236					CALLR	..STIN		;START INDIRECT
	004236	000137 	000000G			JMP	..STIN
FEDRV	MACRO M1113  03-APR-86 20:48  PAGE 20
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   2037					;
   2038					;	THE -10 HAS SENT AN ACK TO US - CONTINUE THE OPERATION
   2039					;	IF IT WAS A WRITE.
   2040					;
   2041	004242	032712 	040000 		.FEACK::BIT	#FE.DET,(R2)	;IS THERE DATA TO SEND ?
   2042	004246	001436 				BEQ	30$		;NO, IGNORE THE ACK.
   2043	004250	010046 				MOV	R0,-(SP)	;SAVE R0
   2044	004252	013700 	000000G			MOV	ADRSAV,R0	;PICK UP THE ADDRESS
   2045	004256	012701 	000100 			MOV	#64.,R1		;SET THE COUNT
   2046	004262	020137 	000000G			CMP	R1,BYTESA	;TOO BIG ??
   2047	004266	101402 				BLOS	10$		;NO - USE THIS COUNT
   2048	004270	013701 	000000G			MOV	BYTESA,R1	;YES - SEND WHAT'S LEFT
   2049	004274	060137 	000000G		10$:	ADD	R1,ADRSAV	;SET NEW ADDRESS
   2050	004300	160137 	000000G			SUB	R1,BYTESA	;AND BYTES LEFT
   2051	004304	001002 				BNE	20$		;IF NO MORE AFTER THIS
   2052	004306	042712 	040000 			BIC	#FE.DET,(R2)	;THEN SO INDICATE
   2053	004312				20$:	.INH6			;LOCK OUT INTERRUPTS
	004312	013746 	177776 			MOV	@#PS,-(SP)
	004316	112737 	000300 	177776 		MOVB	#300,@#PS
   2054	004324	014046 				MOV	-(R0),-(SP)	;;;SAVE MEMORY HERE
   2055	004326	010110 				MOV	R1,@R0		;;;STORE FIRST WORD TO10
   2056	004330					CALL	SNSTR		;;;START FUNCTION
	004330	004737 	004224'			JSR	PC,SNSTR
   2057	004334	012610 				MOV	(SP)+,@R0	;;;RESTORE FIRST WORD
   2058	004336					.ENB6			;;;ENABLE INTERRUPTS
	004336	012637 	177776 			MOV	(SP)+,@#PS
   2059	004342	012600 				MOV	(SP)+,R0	;RESTORE
   2060	004344				30$:	RETURN			;RETURN TO CALLER
	004344	000207 				RTS	PC
FEDRV	MACRO M1113  03-APR-86 20:48  PAGE 21
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   2062					;
   2063					;	START FE DEVICE QUEUE ENTRY
   2064					;
   2065					;	R0 -> THREAD BLOCK ENTRY
   2066					;	R2 -> FETBL ENTRY
   2067					;
   2068	004346	122760 	000000G	000007 	.FEST::	CMPB	#BC.STR,7(R0)	;FUNCTION STRING?
   2069	004354	001077 				BNE	IOABT		;NO -- ABORT I/O IN PROGRESS
   2070	004356	005005 				CLR	R5		;FIND THE BYTE SIZE
   2071	004360	156005 	000006 			BISB	6(R0),R5
   2072	004364	016004 	000004 			MOV	4(R0),R4	;SET UP THE NODE ADDRESS
   2073	004370	032712 	020000 			BIT	#FE.DTE,(R2)	;ARE WE EXPECTING DATA ?
   2074	004374	001040 				BNE	70$		;YES, INSERT IN BUFFER.
   2075	004376	012401 				MOV	(R4)+,R1	;CHECK TO SEE WHICH DIRECTION THIS FUNCTION IS
   2076	004400	100102 				BPL	FCN		;REQUEST TO DO A FUNCTION -- SPECIAL
   2077	004402	013703 	000000G			MOV	NODADR,R3	;A RETURN FUNCTION -
   2078	004406	066301 	000000G			ADD	R.FC(R3),R1	;IS IT THE LAST ONE WE SENT ?
   2079	004412	001100 				BNE	FCNBD		;NO -- ILLEGAL REQUEST -- QUIT
   2080	004414	122763 	000003 	000001G		CMPB	#IO.ATT/400,R.FC+1(R3) ;ACP FUNCTION CODE?
   2081	004422	001006 				BNE	40$		;NO -- LEAVE ADDRESSES ALONE
   2082	004424	016337 	000012G	000000G		MOV	R.PB+12(R3),BYTESA ;SET UP TO BYTE COUNT
   2083	004432	016337 	000004G	000000G		MOV	R.PB+4(R3),ADRSAV ;ALSO ADDRESS
   2084	004440	022424 			40$:	CMP	(R4)+,(R4)+	;MOVE OVER DEVICE/UNIT
   2085	004442	012437 	000000G			MOV	(R4)+,STSWD	;SAVE THE I/O STATUS
   2086	004446	012437 	000002G			MOV	(R4)+,STSWD+2	;BOTH HALVES
   2087	004452	052712 	020000 			BIS	#FE.DTE,(R2)	;INDICATE WE ARE EXPECTING DATA
   2088	004456	021437 	000000G			CMP	@R4,BYTESA	;BYTESIZE CORRECT?
   2089	004462	103002 				BHIS	50$		;YES -- CONTINUE
   2090	004464	011437 	000000G			MOV	@R4,BYTESA	;NO -- SET NEW ONE
   2091	004470	162705 	000014 		50$:	SUB	#14,R5		;SUBTRACT FIXED HEADER SIZE
   2092	004474	001410 				BEQ	60$		;AND QUIT IF NOTHING TO DO
   2093	004476	112477 	000000G		70$:	MOVB	(R4)+,@ADRSAV	;MOVE A BYTE
   2094	004502	005237 	000000G			INC	ADRSAV		;UPDATE BYTE POINTER
   2095	004506	005337 	000000G			DEC	BYTESA		;UPDATE BYTE COUNT
   2096	004512	001404 				BEQ	65$		;(IN CASE OF MISCOUNT)
   2097	004514	077510 				SOB	R5,70$		;AND DO UNTIL DONE
   2098	004516	005737 	000000G		60$:	TST	BYTESA		;ANYTHING TO DO?
   2099	004522	001005 				BNE	DONSTR		;YES -- DON'T SET I/O DONE FLAG
   2100	004524	042712 	020000 		65$:	BIC	#FE.DTE,(R2)	;NO MORE DATA EXPECTED
   2101	004530	052737 	000400 	000020G		BIS	#EF.TEF,FETSK+A.EF ;SET I/O DONE
   2102	004536				DONSTR:	CALL	..DECN		; RETURN NODE
	004536	004737 	000000G			JSR	PC,..DECN
   2103	004542	012703 	000000G			MOV	#D.FEPD,R3	;ACK THIS FUNCTION
   2104	004546	010205 				MOV	R2,R5
   2105	004550					CALLR	..SACK
	004550	000137 	000000G			JMP	..SACK
   2106
   2107	004554	013701 	000000G		IOABT:	MOV	NODADR,R1	;NODE IN PROGRESS?
   2111	004560	001766 				BEQ	DONSTR		;NO -- CONTINUE
   2113	004562	005037 	000000G			CLR	NODADR		;YES -- FIX IT WITH IE.ABO
   2114	004566	042737 	064000 	000000G		BIC	#FE.SER!FE.DET!FE.DTE,FETBL+0 ;FINISHED WITH -11 REQUEST
   2115	004574	012703 	177761 			MOV	#IE.ABO,R3
   2116	004600					CALL	..IODN		;QUIT IT
	004600	004737 	000000G			JSR	PC,..IODN
   2120	004604	000754 				BR	DONSTR		;AND DECLARE DONE
   2121					;
   2122					;	THIS IS A FUNCTION REQUEST FROM THE -10
FEDRV	MACRO M1113  03-APR-86 20:48  PAGE 21-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   2123					;
   2124	004606	022714 	042515 		FCN:	CMP	#"ME,(R4)	;IS IT MEMORY?
   2125	004612	001401 				BEQ	MEFCN		;YUP -- MUST BE OK
   2126	004614	000004 			FCNBD:	IOT			;NOPE -- CRASH
   2127
   2128	004616	052712 	002000 		MEFCN:	BIS	#FE.STR,(R2)	;WE ARE SERVICING -10 REQUEST
   2129	004622	012737 	000014 	000000G		MOV	#14,DNBLK	;INIT RETURN PACKET SIZE
   2130	004630	010137 	000000G			MOV	R1,DNFCN	;SET FUNCTION
   2131	004634	005437 	000000G			NEG	DNFCN		;AND NEGATE.
   2132	004640	012437 	000002G			MOV	(R4)+,DNFCN+2	;SAVE FUNCTION DEVICE
   2133	004644	012737 	000001 	000000G		MOV	#IS.SUC,DNSTS	;ASSUME A SUCCESSFUL ACCESS
   2134	004652	022424 				CMP	(R4)+,(R4)+	;MOVE OVER UNIT AND HIGH ORDER ADDRES
   2135	004654	012403 				MOV	(R4)+,R3	;PICK UP ADDRESS
   2136	004656	012405 				MOV	(R4)+,R5	;AND BYTE COUNT
   2137	004660	010537 	000002G			MOV	R5,DNSTS+2	;SAVE BYTE COUNT
   2138	004664					.INH			;LOCK OUT INTERRUPTS
	004664	013746 	177776 			MOV	PS,-(SP)
	004670	112737 	000340 	177776 		MOVB	#PR7,@#PS	;;
   2139	004676	013746 	000004 			MOV	@#4,-(SP)	;;;SAVE LOC 4
   2140	004702	012737 	005046'	000004 		MOV	#90$,@#4	;;;GO TO ILL MEM ROUTINE
   2141	004710	022701 	000400 			CMP	#IO.WLB,R1	;;;WRITE LOGICAL BLOCK?
   2142	004714	001003 				BNE	30$		;;;READ MEMORY REQUEST
   2143	004716	112423 			20$:	MOVB	(R4)+,(R3)+	;;;MOVE BYTES
   2144	004720	077502 				SOB	R5,20$		;;;UNTIL DONE
   2145	004722	000417 				BR	60$		;;;RETURN SUCCESS
   2146
   2147	004724	122760 	000014 	000006 	30$:	CMPB	#14,6(R0)	;;;ALL IN THIS PACKET?
   2148	004732	001010 				BNE	50$		;;;NO -- BAD FUNCTION
   2149	004734	012704 	000000G			MOV	#BLKTT,R4	;;;SET UP A PACKET TO ADD TO FUNCTION
   2150	004740	112324 			40$:	MOVB	(R3)+,(R4)+	;;;MOVE CORRESPONDING  BYTES
   2151	004742	077502 				SOB	R5,40$		;;;UNTIL DONE
   2152	004744	063737 	000002G	000000G		ADD	DNSTS+2,DNBLK	;;;INCLUDE RETURN BYTES IN PACKET
   2153	004752	000405 				BR	70$		;;;SET RETURN FUNCTION
   2154
   2155	004754	012737 	177777 	000000G	50$:	MOV	#IE.BAD,DNSTS	;;;RETURN BAD FUNCTION
   2156	004762	005037 	000002G		60$:	CLR	DNSTS+2		;;;NO BYTES TRANSFERRED
   2157	004766	012637 	000004 		70$:	MOV	(SP)+,@#4	;;;RESET LOC 4
   2158	004772					.ENB			;;;ENABLE INTERRUPTS
	004772	012637 	177776 			MOV	(SP)+,@#PS	;;
   2159	004776	013737 	000002G	000004G		MOV	DNSTS+2,DNSTS+4	;RETURN COUNT
   2160	005004	010203 				MOV	R2,R3		;COMPUTE FE NUMBER
   2161	005006	162703 	000000G			SUB	#FETBL,R3
   2162	005012	006203 				ASR	R3		;AND
   2163	005014	110337 	000001G			MOVB	R3,DNBLK+1	;SET IN RETURN PACKET
   2164	005020	010246 				MOV	R2,-(SP)	;SAVE FETBL POINTER
   2165	005022	010046 				MOV	R0,-(SP)	;AND STRING POINTER
   2166	005024	012700 	000000G			MOV	#DNBLK,R0	;SET DONE BLOCK ADDRESS
   2167	005030					CALL	SNSTR		;SEND STRING
	005030	004737 	004224'			JSR	PC,SNSTR
   2168	005034	012600 				MOV	(SP)+,R0	;RESTORE
   2169	005036	012602 				MOV	(SP)+,R2
   2170	005040	042712 	002000 			BIC	#FE.STR,(R2)	;FINISHED WITH -10 REQUEST
   2171	005044	000634 				BR	DONSTR		;AND QUIT
   2172
   2173	005046	022626 			90$:	CMP	(SP)+,(SP)+	;REMOVE TRAP STUFF
   2174	005050	012737 	177774 	000000G		MOV	#IE.VER,DNSTS	;RETURN RECOVERABLE ERROR
   2175	005056	000741 				BR	60$
FEDRV	MACRO M1113  03-APR-86 20:48  PAGE 21-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   2176
   2177
   2178						.TITLE	LPDRV	(LP-20 LINEPRINTER DRIVER FOR RSX10F)
   2179						.SBTTL	TITLE PAGE
   2180						.IDENT	/001000/
   2181					;
   2182					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   2183					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   2184					;			ALL RIGHTS RESERVED.
   2185					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   2186					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   2187					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   2188					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   2189					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   2190					;
   2191					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   2192					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   2193					;       CORPORATION.
   2194					;
   2195					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   2196					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   2197					;
   2198					;		MODULE: COMMON DEFINITIONS
   2199					;
   2200					;		VERSION: 01-00
   2201					;
   2202					;		AUTHOR: TOM PORCHER
   2203					;
   2204					;		DATE: 4-JUN-75
   2205					;
   2206					;
   2207					;	THIS MODULE CONTAINS:
   2208					;
   2209					;	1) COMMON PARAMETERS AND MACROS
   2210					;
   2211					;	2) LP-20 DEVICE REGISTER DEFINITIONS
   2212					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 22
COMMON PARAMETERS AND MACROS

   2214						.SBTTL	COMMON PARAMETERS AND MACROS
   2215					;
   2216					; PARAMETERS
   2217					;
   2218					;L$$P20=	2			;TWO LINEPRINTERS
   2219		000214 			LPALOC=	140.			;LINE ALLOCATION FOR EACH LP
   2220		000012 			LPRTRY=	10.			;# RETRYS ON ERRORS AND HUNG
   2221					;
   2222					; EVENT FLAGS
   2223					;
   2224		000001 			E.FLPD=	1			;(1) INTERRUPT LEVEL I/O DONE
   2225		000001 			 EF.LPD=BIT0
   2226		000002 			E.FLPC=	2			;(2) MARK-TIME
   2227		000002 			 EF.LPC=BIT1
   2228		000003 			E.FLPQ=	3			;(3) CTY OUTPUT QUEUE I/O REQUESTS
   2229		000004 			 EF.LPQ=BIT2
   2230									;(4) RESERVED FOR E.NIR (EXEC FLAG)
   2231		000005 			E.FLPS=	5			;(5) STATUS REQUEST (LOCAL TO SSTSLP)
   2232		000020 			 EF.LPS=BIT4
   2233		000006 			E.FLPW=	6			;(6) WAIT FOR LP-20 TO SETTLE AFTER FLUSH
   2234		000040 			 EF.LPW=BIT5
   2235					;
   2236					; MISC. MCALL'S
   2237					;
   2238					.MCALL QIOSY$,ALUN$,MRKT$,QIOW$,SPRA$S,SVTK$S,WSIG$S,WTLO$S,WTSE$S,DIR$
   2239					.MCALL $DEF,CALL,RETURN,.INH0,.INH,.ENB0,.ENB,PUSH,POP,.STKM
   2240	005060					$DEF
   2241	005060					QIOSY$
   2242						.ENABLE	AMA
   2243						.LIST	MEB
   2244					;
   2245					; COMMON MACROS
   2246					;
   2247					.MACRO SAVE LIST
   2248						PUSH	<LIST>
   2249					  .MACRO RESTORE
   2250					    $$$=0
   2251					    .IRP ITEM,<LIST>
   2252					      $$$=$$$+1
   2253					    .ENDM
   2254					    .REPT $$$
   2255					      $$$$=0
   2256					      .IRP ITEM,<LIST>
   2257					        $$$$=$$$$+1
   2258					        .IF EQ $$$$-$$$
   2259						  POP	ITEM
   2260					        .ENDC
   2261					      .ENDM
   2262					      $$$=$$$-1
   2263					    .ENDR
   2264					  .ENDM
   2265					.ENDM
   2266					;
   2267					; BITS IN T.HCBC WORD IN THREAD BLOCK
   2268					;
   2269		100000 			TB.DON=	BIT15			;THREAD BLOCK DONE *** MUST BE SIGN BIT ***
   2270		040000 			TB.ABO=	BIT14			;ABORTED BLOCK
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 22-1
COMMON PARAMETERS AND MACROS

   2271		020000 			TB.EOF=	BIT13			;BLOCK REPRESENTS EOF
   2272		010000 			TB.LPC=	BIT12			;LOAD PAGE COUNTER FUNCTION
   2273		004000 			TB.RMD=	BIT11			;TRANSLATION RAM DATA
   2274		002000 			TB.VFD=	BIT10			;VFU DATA
   2275		036000 			TB.SFN=	TB.EOF!TB.LPC!TB.RMD!TB.VFD ;SPECIAL FUNCTIONS
   2276					;
   2277					; QUEUE I/O -- THREAD BLOCK VALUES
   2278					;
   2279		000004 			PBTHRD=	4			;R.PB+4 IS START OF THREAD BLOCK
   2280					;
   2281		177774 			T.HEMA=	0-PBTHRD		;(BYTE) EXTENDED MEMORY ADDRESS BITS 4 & 5
   2282		177775 			T.HVFC=	1-PBTHRD		;(BYTE) VERTICAL FORMAT CONTROL CHARACTER
   2283		177776 			T.HIBC=	2-PBTHRD		;(WORD) INITIAL BYTE COUNT
   2284					;
   2285					;
   2286					; STUFF THAT SHOULD BE GLOBAL, BUT MACY11 DOESN'T LIKE COMPLEX GLOBALS
   2287					;
   2288		000377 			LOBYTE=	377
   2289		177400 			HIBYTE=	^C<LOBYTE>
   2290					;
   2291					;
   2292		000074 			.CYLTM=^D60
   2293					.MACRO	.INH4
   2294						MOV	@#PS,-(SP)
   2295						MOVB	#PR4,@#PS
   2296					.ENDM
   2297					.MACRO	.ENB4
   2298						MOV	(SP)+,@#PS
   2299					.ENDM
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 23
LP-20 DEVICE REGISTER DEFINITIONS

   2301						.SBTTL	LP-20 DEVICE REGISTER DEFINITIONS
   2302					;
   2303					;
   2304					; LP-20 DEVICE REGISTER DEFINITIONS
   2305					;
   2306					; *** NOTE THAT ALL OFFSETS AND ADDRESSES ARE RELATIVE TO LPCSRA ***
   2307					;
   2308					;LPEXPA==175400			;EXTERNAL PAGE ADDRESS OF LPCSRA
   2309					;LPEXPZ==20			;SIZE OF EXTERNAL PAGE ADDRESSES IN BYTES
   2310					;
   2311		000000 			LPCSRA==0			;CONTROL AND STATUS REGISTER A
   2312		100000 				ERR=	BIT15
   2313		040000 				PAGZRO=	BIT14
   2314		020000 				CHRINT=	BIT13
   2315		010000 				VFURDY=	BIT12
   2316		004000 				ONLINE=	BIT11
   2317		002000 				DELHLD=	BIT10
   2318		001000 				RSTERR=	BIT9
   2319		000400 				LOINIT=	BIT8
   2320					;
   2321		000200 				DONE=	BIT7
   2322		000100 				INTENB=	BIT6
   2323		000040 				BUSA17=	BIT5
   2324		000020 				BUSA16=	BIT4
   2325		000010 				MODE01=	BIT3
   2326		000004 				MODE00=	BIT2
   2327		000001 					TSTMOD=	1
   2328		000002 					VFULOD=	2
   2329		000003 					RAMLOD=	3
   2330		000002 				PARENB=	BIT1
   2331		000001 				GO=	BIT0
   2332					;
   2333		000002 			LPCSRB==2			;CONTROL AND STATUS REGISTER B
   2334					; BITS	15-13	NOT USED
   2335		010000 				LPTPBT=	BIT12
   2336		004000 				OPTVFU=	BIT11
   2337		002000 				TEST02=	BIT10
   2338		001000 				TEST01=	BIT9
   2339		000400 				TEST00=	BIT8
   2340					;
   2341		000200 				OFFLIN=	BIT7
   2342		000100 				VFUERR=	BIT6
   2343		000040 				LPTPAR=	BIT5
   2344		000020 				MEMPAR=	BIT4
   2345		000010 				RAMPAR=	BIT3
   2346		000004 				SYNTIM=	BIT2
   2347		000002 				DEMTIM=	BIT1
   2348		000001 				GOERR=	BIT0
   2349					;
   2350		000004 			LPBSAD==4			;BUS ADDRESS REGISTER
   2351					;
   2352		000006 			LPBCTR==6			;BYTE COUNT (2'S COMPLEMENT)
   2353					; BITS	15-12	NOT USED
   2354					;	11-0	BYTE COUNT
   2355					;
   2356		000010 			LPPCTR==10			;PAGE COUNTER
   2357					; BITS	15-12	NOT USED
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 23-1
LP-20 DEVICE REGISTER DEFINITIONS

   2358					;	11-0	PAGE COUNT
   2359					;
   2360		000012 			LPRAMD==12			;RAM DATA REGISTER
   2361					; BITS	15-13	NOT USED
   2362					;	12	RAM PARITY
   2363					;	11-0	RAM DATA
   2364					;
   2365		000014 			LPCBUF==14			;(BYTE) CHARACTER BUFFER REGISTER
   2366		000015 			LPCCTR==15			;(BYTE) COLUMN COUNT REGISTER
   2367					;
   2368		000016 			LPTDAT==16			;(BYTE) PRINTER DATA REGISTER
   2369		000017 			LPCKSM==17			;(BYTE) CHECKSUM REGISTER
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 24
LP-20 DEVICE REGISTER DEFINITIONS

   2371
   2372
   2373						.SBTTL	COMMON DEVICE PARAMETER MODULE
   2374					;
   2375					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   2376					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   2377					;			ALL RIGHTS RESERVED.
   2378					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   2379					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   2380					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   2381					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   2382					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   2383					;
   2384					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   2385					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   2386					;       CORPORATION.
   2387					;
   2388					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   2389					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   2390					;
   2391					;
   2392					;		MODULE: COMMON DEVICE PARAMETERS
   2393					;
   2394					;		VERSION: 01-00
   2395					;
   2396					;		AUTHOR: TOM PORCHER
   2397					;
   2398					;		DATE: 25-AUG-75
   2399					;
   2400					;
   2401					;	THIS MODULE CONTAINS:
   2402					;
   2403					;	1) DEVICE STATUS BIT DEFINITIONS
   2404					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 25
DEVICE STATUS BIT DEFINITIONS

   2406						.SBTTL	DEVICE STATUS BIT DEFINITIONS
   2407					;
   2408					; GENERAL FORM OF STATUS BLOCK
   2409					;
   2410					; WORD	0	STANDARD STAUS BITS (DV.XXX)
   2411					; 	1	DEVICE-DEPENDENT BITS (DD.XXX)
   2412					;	2	(HIGH BYTE) # BYTES OF DEVICE-DEPENDENT INFO TO FOLLOW
   2413					;		(LOW BYTE) # BYTES OF DEVICE REGISTERS TO FOLLOW
   2414					;	3-...	DEVICE DEPENDENT INFO (# BYTES IN WORD 2)
   2415					;	.-...	DEVICE REGISTERS (# BYTES IN WORD 2)
   2416					;
   2417					;
   2418					; STANDARD BITS (FIRST WORD OF STATUS)
   2419					;
   2420		000001 			DV.NXD=	BIT0			;NON-EX DEVICE
   2421		000002 			DV.OFL=	BIT1			;OFF-LINE
   2422		000004 			DV.OIR=	BIT2			;HARDWARE ERROR. OPERATOR INTERVENTION REQUIRED.
   2423		000010 			DV.SCN=	BIT3			;SOFTWARE CONDITON. ACKNOWLEDGE REQUIRED.
   2424		000020 			DV.IOP=	BIT4			;I/O IN PROGRESS
   2425		000040 			DV.EOF=	BIT5			;END-OF-FILE ENCOUNTERED
   2426		000100 			DV.LOG=	BIT6			;ERROR LOGGING REQUIRED
   2427		000200 			DV.URE=	BIT7			;UN-RECOVERABLE ERROR
   2428		000400 			DV.F11=	BIT8			;ERROR ON FROM -11 REQUEST
   2429		001000 			DV.HNG=	BIT9			;DEVICE HUNG
   2430					;
   2431					;
   2432					; DEVICE-DEPENDENT BITS (SECOND WORD OF STATUS)
   2433					;
   2434					; LP-20 LINEPRINTER
   2435					;
   2436		000001 			DD.PGZ=	BIT0			;PAGE COUNTER PASSED ZERO
   2437		000002 			DD.CHI=	BIT1			;CHARACTER INTERRUPT (FROM RAM)
   2438		000004 			DD.VFE=	BIT2			;VFU ERROR-- PAPER RE-ALIGNMENT REQUIRED
   2439		000010 			DD.LER=	BIT3			;ERROR FINDING/READING VF AND RAM FILE
   2440		000020 			DD.OVF=	BIT4			;PRINTER HAS OPTICAL VFU (AS OPPOSED TO DAVFU)
   2441		000040 			DD.RME=	BIT5			;RAM PARITY ERROR-- RELOAD REQUIRED
   2442					;
   2443					; DEVICE DEPNDENT INFO FOR LP-20 (2 BYTES):
   2444					; WORD	3	(LOW BYTE) ACCUMULATED CHECKSUM
   2445					;		(HIGH BYTE) RETRY COUNT
   2446					;
   2447					;	4-13	LP-20 DEVICE REGISTERS (16. BYTES)
   2448					;
   2449					;
   2450					; CD-11 CARD READER
   2451					;
   2452		000001 			DD.RCK=	BIT0			;READ (PHOTO) CHECK
   2453		000002 			DD.PCK=	BIT1			;PICK CHECK
   2454		000004 			DD.SCK=	BIT2			;STACK CHECK
   2455		000010 			DD.HEM=	BIT3			;HOPPER EMPTY
   2456		000020 			DD.SFL=	BIT4			;STACKER FULL
   2457					;
   2458					; DEVICE-DEPENDENT INFO FOR CD-11 (0 BYTES)
   2459					; WORD	3-6	DEVICE REGISTERS FOR CD-11 (8. BYTES)
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 26
DEVICE STATUS BIT DEFINITIONS

   2461
   2462
   2463						.SBTTL	LP-20 COMMON DATA MODULE
   2464					;
   2465					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   2466					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   2467					;			ALL RIGHTS RESERVED.
   2468					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   2469					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   2470					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   2471					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   2472					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   2473					;
   2474					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   2475					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   2476					;       CORPORATION.
   2477					;
   2478					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   2479					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   2480					;
   2481					;		MODULE: LP-20 COMMON DATA
   2482					;
   2483					;		VERSION: 01-00
   2484					;
   2485					;		AUTHOR: TOM PORCHER
   2486					;
   2487					;		DATE: 7-JUN-75
   2488					;
   2489					;
   2490					;	THIS MODULE CONTAINS:
   2491					;
   2492					;	1) COMMON VARIABLES
   2493					;
   2494					;	2) DEVICE TABLES
   2495					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 27
COMMON VARIABLES

   2497						.SBTTL	COMMON VARIABLES
   2498					;
   2499					; LP DRIVER TASK HEAD
   2500					;
   2501					;
   2502	005060				LPHD::	.STKM	0,0,0,0,0,0,0,LPINI,174000,LPSTK
	005126	000000 	000000 	000000 		.WORD	0,0,0,0
	005134	000000
	005154	174000 	005450'	005340'		.WORD	174000,LPINI,LPSTK
	005210	000005 				.WORD	5
	005212	000000G				.WORD	TTPEN
	005214	000000 				.WORD	0
	005216	000000 				.WORD	0
	005220	000000 				.WORD	0
	005222	000000 				.WORD	0
	005224	000000 				.WORD	0
	005226	000000 				.WORD	0
	005230	000000 				.WORD	0
	005232	000000 				.WORD	0
	005234	000000 				.WORD	0
	005236	000000 				.WORD	0
	005340	000000 				.WORD	0
	005342	000000 				.WORD	0
	005344	000000 				.WORD	0
	005346	000000 				.WORD	0
	005350	000000 				.WORD	0
	005352	000000 				.WORD	0
	005354	005450'				.WORD	LPINI
	005356	174000 				.WORD	174000
   2503					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 28
LP-20 DEVICE TABLES

   2505						.SBTTL	LP-20 DEVICE TABLES
   2506
   2507					;
   2508					;	LP-20 STATUS BITS
   2509					;
   2510		100000 				LP.HNG=	BIT15		;LP DID NOT COMPLETE I/O IN 20 SEC
   2511									;SET BY MARK-TIME REQUEST
   2512									;CLEARED BY ..DOLP
   2513		040000 				LP.SST=	BIT14		;SEND STATUS OF THIS LP TO -10
   2514									;SET BY INTERRUPT SERVICE
   2515									;CHECKED BY TASK
   2516		020000 				LP.PZI=	BIT13		;PAGE-ZERO INTERRUPT ENABLE
   2517									;SET FROM RAM/VF LOAD FILE
   2518									;CHECKED ON PAGZRO INTERRUPTS
   2519		010000 				LP.MCH=	BIT12		;MULTI-CHARACTER PRINT OPERATION IN PROGRESS
   2520									; (ARROW MODE). SET ON UNDCHR INTERRUPT,
   2521									; CLEARED WHEN DONE SET.
   2522		004000 				LP.WAT=	BIT11		;THIS LP IS WAITING FOR A RESPONSE
   2523									; FROM THE -10, DUE TO PAGZRO, ERROR
   2524									; ON SOMETHING LIKE THAT. SET BY INTERRUPT
   2525									; SERVICE, CLEARED BY 'CONTINUE'
   2526									; FUNCTION FROM -10.
   2527		002000 				LP.CLR=	BIT10		;CLEAR RAM REQUIRED (DUE TO ERROR)
   2528									; SET BY SSTSLP, CHECKED AND CLEARED BY TESTLP
   2529		001000 				LP.LIP=	BIT9		;LOAD OF VFU AND RAM IN PROGRESS, SET
   2530									; BY START OF LOAD (IN LPIOD) AND CLEARED BY
   2531									; TRANSFER COMPLETE FOR RAM/VFU DATA.
   2532		000400 				LP.F10=	BIT8		;FROM-10 REQUEST HAS BEEN QUEUED
   2533									; SET BY ..STLP AND SPECIAL FUNCTIONS
   2534									; CLEARED WHEN QUEUE IS EMPTY OR ..SPLP
   2535		000200 				LP.EOF=	BIT7		;END-OF-FILE. SET BY EOF FUNCTION ENCOUNTERED
   2536									; IN THREADED LIST BY INTERRUPT SERVICE.
   2537									; CHECKED AND CLEARED BY TESTLP WHEN
   2538									; CHECKSUM IS CLEARED.
   2539		000003 				LP.UNT=	BIT1!BIT0	;(LOW BITS) UNIT # OF THIS LP.
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 29
LP-20 DEVICE TABLES

   2541
   2542
   2543						.SBTTL	LP-20 DRIVER TASK MODULE
   2544					;
   2545					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   2546					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   2547					;			ALL RIGTHS RESERVED.
   2548					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   2549					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   2550					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   2551					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   2552					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   2553					;
   2554					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   2555					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   2556					;       CORPORATION.
   2557					;
   2558					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   2559					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   2560					;
   2561					;		MODULE: LP-20 DRIVER TASK
   2562					;
   2563					;		VERSION: 14-43
   2564					;
   2565					;		AUTHOR: TOM PORCHER
   2566					;
   2567					;		DATE: 4-JUN-75
   2568					;
   2569					;
   2570					;	THIS MODULE CONTAINS:
   2571					;
   2572					;	1) LPINI (LP-20 INITIALIZATION)
   2573					;
   2574					;	2) LPLOOP (LP-20 DRIVER TASK LOOP)
   2575					;
   2576					;	MODIFICATIONS:
   2577					;
   2578					;	NO.	DATE		PROGRAMMER	REASON
   2579					;	---	----		----------	------
   2580					;	001	28-FEB-77	A. PECKHAM	CHANGE LENGTH OF VFU RECORDS
   2581					;						TO 145 FROM 140
   2582					; TCO 4.1.1105	11-MAR-80	R. BELANGER	CHANGE "EF.PR1" RECOGNITION
   2583					; RCO 810804	04-AUG-81	S. LEAPLINE	RESET R0 WHEN BUFFER ALLOCATE
   2584					;						FAILS
   2585					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 30
LPINI	(INITIALIZE LP-20 TASK)

   2587						.SBTTL	LPINI	(INITIALIZE LP-20 TASK)
   2588					;
   2589					;+
   2590					;
   2591					;	THIS IS THE LP-20 USER-LEVEL TASK. IT HANDLES QIO
   2592					; REQUESTS, OUTPUT ACKNOWLEDGEMNETS, AND HUNG-CHECKING.
   2593					;
   2594					;	LPINI IS CALLED WHEN THE TASK IS STARTED. IT RESETS THE
   2595					; LP-20 AND LOADS THE STANDARD VERTICAL FORMAT AND TRANSLATION
   2596					; RAM.  THE 10-SECOND MARK-TIME REQUEST IS ALSO ENTERED.
   2597					;
   2598					;-
   2599					;
   2600					;
   2601					; DIRECTIVE PARAMETER BLOCKS
   2602					;
   2603	005360				LPMRKT:
   2604	005360					MRKT$	E.FLPC,10.*.CYLTM,10.*.CYLTM ;MARK-TIME REQUEST FOR 10 SECONDS
	005360	   027 	   005 			.BYTE	23.,5
	005362	000002 				.WORD	E.FLPC
	005364	001130 				.WORD	10.*.CYLTM
	005366	001130 				.WORD	10.*.CYLTM
	005370	000000 				.WORD
   2605	005372				MKSCDP:
   2606	005372					MRKT$	E.FLPW,.CYLTM,0		;WAIT FOR 1 SECOND
	005372	   027 	   005 			.BYTE	23.,5
	005374	000006 				.WORD	E.FLPW
	005376	000074 				.WORD	.CYLTM
	005400	000000 				.WORD	0
	005402	000000 				.WORD
   2607					;
   2608	005404				LPSSTV:
   2609	005404	005406'				.WORD	LPTRP4		;WHERE TO GO ON TRAP-AT-4
   2610					;
   2611					; HERE ON A TRAP TO 4 (HOPEFULLY AN EXPECTED NON-EX LP)
   2612					;
   2613	005406				LPTRP4:
   2614	005406	021627 	006776'			CMP	(SP),#LPDINT	;THIS FROM MARK-TIME?
   2615	005412	001404 				BEQ	10$		;YES-- OK
   2616	005414	021627 	010424'			CMP	(SP),#LPDCLR	;HOW ABOUT INIT?
   2617	005420	001401 				BEQ	10$		;YES-- OK
   2618	005422	000004 				IOT			;***** FATAL-- BAD TRAP AT 4
   2619					;
   2620	005424				10$:
   2621	005424	005062 	000000G			CLR	LPCSA(R2)	;NON-EX LP-- SAY SO
   2622	005430	005003 				CLR	R3		; BOTH WAYS
   2623	005432	052766 	000001 	000002 		BIS	#BIT0,2(SP)	;SET CARRY ON STACK
   2624	005440	000002 				RTI			;RETURN TO INTERRUPTED ROUTINE
   2625					;
   2626					; HERE ON POWER-RECOVERY AST
   2627					;
   2628	005442				LPWRUP:
   2629	005442					CALL	INITLP		;INIT ALL LP'S
	005442	004737 	010354'			JSR	PC,INITLP
   2630	005446	000002 				RTI			;RETURN FROM AST
   2631					;
   2632					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 30-1
LPINI	(INITIALIZE LP-20 TASK)

   2633					; LPINI -- INITIALIZE LP'S
   2634					;
   2635	005450				LPINI:
   2636	005450	013737 	000000G	000000G		MOV	.CRTSK,LPEVFG	;SAVE OUR TASK ADDRESS
   2637	005456	062737 	000020 	000000G		ADD	#A.EF,LPEVFG	;MAKE THAT ADDR OF OUR EVENT FLAGS
   2638	005464	052777 	000060 	000000G		BIS	#EF.LPW!EF.LPS,@LPEVFG ;SAY STATUS BUFFER AVAILABLE AND NOT WAITING
   2639	005472					DIR$	#LPMRKT		;ENTER MARK-TIME REQUEST FOR 10 SECONDS
	005472	012746 	005360'			MOV	#LPMRKT,-(SP)
	005476	104375 				EMT	375
   2640	005500					SVTK$S	#LPSSTV,#1	;ENABLE FOR TRAP-AT-4 RECOGNITION
	005500	012746 	000001 			MOV	#1,-(SP)
	005504	012746 	005404'			MOV	#LPSSTV,-(SP)
	005510	012746 				MOV	(PC)+,-(SP)
	005512	   071 	   003 			.BYTE	57.,3
	005514	104375 				EMT	375
   2641	005516					SPRA$S	#LPWRUP		;SETUP POWER-UP AST
	005516	012746 	005442'			MOV	#LPWRUP,-(SP)
	005522	012746 				MOV	(PC)+,-(SP)
	005524	   155 	   002 			.BYTE	109.,2
	005526	104375 				EMT	375
   2642	005530					CALL	INITLP		;INIT ALL THE LP'S
	005530	004737 	010354'			JSR	PC,INITLP
   2643					;	BR	LPLOOP		;FALL INTO NORMAL PROCESSING LOOP
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 31
LPLOOP	(LP-20 DRIVER TASK LOOP)

   2645						.SBTTL	LPLOOP	(LP-20 DRIVER TASK LOOP)
   2646					;
   2647					;+
   2648					;
   2649					;	LPLOOP WAITS FOR AND DISPATCHES ON THE LP EVENT FLAGS,
   2650					; EF.LPD (INTERRUPT LEVEL I/O DONE), EF.NIR (QUEUE I/O REQUEST),
   2651					; AND EF.LPC (10 SECOND MARK-TIME REQUEST), IN THAT ORDER.
   2652					;
   2653					;-
   2654					;
   2655					;
   2656	005534				LPLOOP:
   2657	005534					WTLO$S	1,#EF.LPC!EF.LPD!EF.NIR ;WAIT FOR CLOCK (10 SECONDS)
	005534	012746 	000000C			MOV	#EF.LPC!EF.LPD!EF.NIR,-(SP)
	005540	012746 	000001 			MOV	#1,-(SP)
	005544	012746 				MOV	(PC)+,-(SP)
	005546	   053 	   003 			.BYTE	43.,3
	005550	104375 				EMT	375
   2658									; OR I/O DONE FROM ISR
   2659									; OR QIO REQUEST TO DO.
   2660	005552					.INH			;A FLAG SET-- LOCK OUT LP INTERRUPTS
	005552	013746 	177776 			MOV	PS,-(SP)
	005556	112737 	000340 	177776 		MOVB	#PR7,@#PS	;;
   2661	005564	017737 	000000G	000000G		MOV	@LPEVFG,LPCEVF	;GET CURRENT EVENT FLAGS
   2662	005572	042777 	000000C	000000G		BIC	#EF.LPC!EF.LPD!EF.NIR,@LPEVFG ;CLEAR THE FLAGS WE WAITED FOR
   2663	005600					.ENB			;RETORE IRPS
	005600	012637 	177776 			MOV	(SP)+,@#PS	;;
   2664	005604	005737 	000000G			TST	.LPPFL		;POWER FAIL?
   2665	005610	001404 				BEQ	10$		;NO -- CONTINUE
   2666	005612					CALL	INITLP
	005612	004737 	010354'			JSR	PC,INITLP
   2667	005616	005037 	000000G			CLR	.LPPFL
   2668	005622				10$:
   2669					;
   2670					;	BR	LPIOD		;TRY FOR EF.IOD (I/O DONE) FIRST
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 32
LPIOD	(LP TASK I/O DONE)

   2672						.SBTTL	LPIOD	(LP TASK I/O DONE)
   2673					;
   2674					;+
   2675					;
   2676					;	LPIOD IS DISPATCHED TO WHENEVER THE EVENT FLAG EF.LPD IS SET.
   2677					; THIS IS SET BY THE INTERRUPT SEVICE WHENEVER IT IS DONE WITH A BUFFER
   2678					; OR STATUS INFORMATION IS TO BE SENT TO THE -10 (IE. LP JUST CAME
   2679					; ONLINE).
   2680					;
   2681					;	EACH LP'S THREADED OUTPUT LIST IS SCANNED FOR DONE BUFFERS
   2682					; (INDICATED BY T.HCBC NEGATIVE). THESE ARE RETURNED TO THE FREE POOL,
   2683					; AND, IN THE CASE OF QUEUE I/O REQUESTS, ..IODN IS CALLED TO TELL
   2684					; THE REQUESTOR THAT I/O HAS BEEN COMPLETED. IF A QUEUE I/O REQUEST
   2685					; IS STOPPED IN THE MIDDLE OF A TRANSFER BECAUSE OF ERROR, THE
   2686					; ERROR INDICATION IS GIVEN TO ..IODN, AND THE REQUEST IS ABORTED.
   2687					;
   2688					;	AFTER THE THREADED LIST SCAN, THE LP STATUS IS SENT TO THE
   2689					; -10 (BY CALLING SSTSLP) IF THE LP.SST FLAG IS SET.
   2690					;
   2691					;	IF A BUFFER WAS COMPLETED, AND THERE IS EITHER NONE
   2692					; OR ONE BUFFER TO OUTPUT, A REQUEST TO SEND IS SENT TO THE -10
   2693					; (BY CALLING ..SACK).
   2694					;
   2695					;-
   2696					;
   2697	005622				LPIOD:
   2698	005622	032737 	000001 	000000G		BIT	#EF.LPD,LPCEVF	;I/O DONE?
   2699	005630	001504 				BEQ	99$		;NO-- TRY NEXT FLAG IN CHAIN
   2700	005632	012702 	000000G			MOV	#LPTBL,R2	;ADDRESS LPTBL (UNIT 0)
   2701	005636					PUSH	#L$$P20		;STACK COUNT OF LP'S TO LOOK AT
	005636	012746 	000002 			MOV	#L$$P20,-(SP)
   2702	005642				10$:
   2703	005642	005005 				CLR	R5		;AND INDICATE NO BUFFERS DONE
   2704	005644	016203 	000000G			MOV	LPCSA(R2),R3	;GET THE EXT PAGE ADDR OF THIS LP
   2705					;
   2706					; LOOP THROUGH THREADED LIST FOR THIS LP
   2707					;
   2708	005650				20$:
   2709	005650	016200 	000000G			MOV	LPTHD(R2),R0	;GET START OF LIST
   2710	005654	001411 				BEQ	80$		;DONE-- GO AWAY
   2711					;
   2712					; LOOK AT THIS THREAD BLOCK TO SEE IF DONE
   2713					;
   2714	005656				30$:
   2715	005656	005760 	000000G			TST	T.HCBC(R0)	;SEE IF DONE
   2716	005662	002471 				BLT	40$		;DONE-- PROCESS
   2717	005664	005762 	000000G			TST	LPITH(R2)	;IS I/O IN PROGRESS ON THIS BLOCK?
   2718	005670	001003 				BNE	80$		;YES-- WE ARE DONE WITH WHAT IS DONE
   2719					;
   2720					; LP STOPPED ON THIS ACTIVE THREAD BLOCK
   2721					;
   2722	005672	032712 	001000 			BIT	#LP.LIP,(R2)	;LOAD IN PROGRESS?
   2723	005676	001063 				BNE	40$		;YES-- TERMINATE IT, SINCE I/O STOPPED
   2724					;
   2725					; END OF LIST-- SEE IF WE SHOULD SEND STATUS AND/OR ACK
   2726					;
   2727	005700				80$:
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 32-1
LPIOD	(LP TASK I/O DONE)

   2728	005700	032712 	040000 			BIT	#LP.SST,(R2)	;TIME TO SEND STATUS?
   2729	005704	001402 				BEQ	81$		;NO-- HOW BOUT ACK?
   2730	005706					CALL	SSTSLP		;YES-- SEND STATUS TO -10
	005706	004737 	007164'			JSR	PC,SSTSLP
   2731	005712				81$:
   2732	005712	005700 				TST	R0		;ANYTHING LEFT TO DO?
   2733	005714	001411 				BEQ	84$		;NO-- SEND ACK
   2734	005716	032712 	004000 			BIT	#LP.WAT,(R2)	;ARE WE WAITING FOR RESPONSE?
   2735	005722	001026 				BNE	86$		;YES-- DON'T START OUPUT
   2736	005724	005762 	000000G			TST	LPITH(R2)	;NO-- IS LP GOING ALREADY?
   2737	005730	001023 				BNE	86$		;YES-- LEAVE IT GO
   2738	005732					CALL	TESTLP		;NO-- SEE IF LP CAN BE STARTED
	005732	004737 	010164'			JSR	PC,TESTLP
   2739	005736	000420 				BR	86$		;SEE IF ACK NEEDED
   2740					;
   2741					; QUEUE IS EMPTY-- RESET ALL FLAGS
   2742					;
   2743	005740				84$:
   2744	005740					.INH			;;;MAKE SURE DTE DOESN'T GIVE US SOMETHING
	005740	013746 	177776 			MOV	PS,-(SP)
	005744	112737 	000340 	177776 		MOVB	#PR7,@#PS	;;
   2745	005752	016200 	000000G			MOV	LPTHD(R2),R0	;;;GET THREAD POINTER
   2746	005756	001006 				BNE	85$		;;;OOPS-- LET'S GO AWAY, WE GOT SOMETHING
   2747	005760	032777 	000001 	000000G		BIT	#EF.LPD,@LPEVFG	;;;WILL WE BE BACK AGAIN?
   2748	005766	001002 				BNE	85$		;;;YES-- CATCH FLAGS NEXT TIME
   2749	005770	042712 	115400 			BIC	#LP.F10!LP.WAT!LP.LIP!LP.MCH!LP.HNG,(R2) ;;;SURELY OFF NOW
   2750	005774				85$:
   2751	005774					.ENB			;RESTORE INTERRUPTS
	005774	012637 	177776 			MOV	(SP)+,@#PS	;;
   2752	006000				86$:
   2753	006000	005705 				TST	R5		;DID WE REMOVE A BUFFER?
   2754	006002	001412 				BEQ	90$		;NO-- DON'T SEND ACK
   2755	006004	005700 				TST	R0		;YES-- ANY LEFT?
   2756	006006	001402 				BEQ	87$		;NONE-- SEND ACK
   2757	006010	005710 				TST	@R0		;IS THIS LAST BUFFER?
   2758	006012	001006 				BNE	90$		;NO-- SEND NOTHING
   2759	006014				87$:
   2760	006014	012700 	000000G			MOV	#LPTBL,R0	;ADDRESS BASE ADDR OF TABLE FOR ..SACK
   2761	006020	012703 	000000G			MOV	#D.CLPT,R3	;SAY LPT DEVICE CODE
   2762	006024					CALL	..SACK		;SEND THE ACK
	006024	004737 	000000G			JSR	PC,..SACK
   2763					;
   2764					; DONE WITH LP-- GET ANOTHER
   2765					;
   2766	006030				90$:
   2767	006030	062702 	000000G			ADD	#LPSIZE,R2	;BUMP TO NEXT LP IN TABLE
   2768	006034	005316 				DEC	(SP)		;DECREMENT COUNT
   2769	006036	003301 				BGT	10$		;BACK FOR MORE
   2770	006040	005726 				TST	(SP)+		;CLEAN STACK
   2771	006042				99$:
   2772	006042	000137 	006502'			JMP	LPNIR		;DONE-- TRY NEXT EVENT-FLAG
   2773					;
   2774					; THREAD BLOCK DONE-- REMOVE FROM LIST & DEALLOCATE
   2775					;
   2776	006046				40$:
   2777	006046	005703 				TST	R3		;LP EXIST???
   2778	006050	001564 				BEQ	49$		;NO-- GIVE UP
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 32-2
LPIOD	(LP TASK I/O DONE)

   2779	006052	032712 	001000 			BIT	#LP.LIP,(R2)	;LOAD IN PROGRESS (I.E. NOW COMPLETE)
   2780	006056	001424 				BEQ	41$		;NO-- GO ON
   2781					;
   2782	006060	042712 	001000 			BIC	#LP.LIP,(R2)	;YES-- NO LONGER SO
   2783	006064	042713 	000014 			BIC	#MODE00!MODE01,(R3) ;CLEAR LOAD MODE BITS
   2784	006070					PUSH	<R0,R3>		;SAVE EPA
	006070	010046 				MOV	R0,-(SP)
	006072	010346 				MOV	R3,-(SP)
   2785	006074	016200 	000000G			MOV	LPRMA(R2),R0	;GET RAM BUFFER ADDR
   2786	006100	016201 	000000G			MOV	LPRMZ(R2),R1	; AND DATA SIZE
   2787	006104	012703 	000000G			MOV	#.BGBUF,R3	;WE GOT IT FROM THE BIG BUFFER
   2788	006110					CALL	..DEC2		;RETURN THE BUFFER
	006110	004737 	000000G			JSR	PC,..DEC2
   2789	006114					POP	<R3,R0>		;RESTORE EPA
	006114	012603 				MOV	(SP)+,R3
	006116	012600 				MOV	(SP)+,R0
   2790	006120	005062 	000000G			CLR	LPRMA(R2)	;NO LONGER THERE
   2791	006124	005062 	000000G			CLR	LPRMC(R2)	; . .
   2792	006130				41$:
   2793	006130	016004 	000000G			MOV	T.HCBC(R0),R4	;GET COMPLETION STATUS
   2794	006134	032704 	040000 			BIT	#TB.ABO,R4	;ABORTED?
   2795	006140	001130 				BNE	49$		;YES-- LEAVE NOW
   2796	006142	032704 	036000 			BIT	#TB.SFN,R4	;SPECIAL FUNCTION?
   2797	006146	001525 				BEQ	49$		;NO-- GO ON
   2798					;
   2799	006150	032704 	020000 			BIT	#TB.EOF,R4	;EOF?
   2800	006154	001430 				BEQ	42$		;NO-- JUST GO ON
   2801	006156	016260 	000000G	000000G		MOV	LPRMA(R2),T.HCAD(R0) ;RAM/VFU DATA PRESENT?
   2802	006164	001003 				BNE	411$		;YES-- DO RAM/VFU LOAD
   2803	006166	052712 	040200 			BIS	#LP.EOF!LP.SST,(R2) ;NO-- NOTE THAT EOF HAS OCCURED
   2804	006172	000513 				BR	49$		;THAT'S IT FOR EOF IF NO RAM/VFU DATA
   2805	006174				411$:
   2806	006174	016260 	000000G	000000G		MOV	LPRMC(R2),T.HCBC(R0) ;SET BYTE COUNT= LAST ADDRESS
   2807	006202	166060 	000000G	000000G		SUB	T.HCAD(R0),T.HCBC(R0) ;MAKE IT A BYTE COUNT
   2808	006210	052712 	001000 			BIS	#LP.LIP,(R2)	;NOTE LOAD NOW IN PRGRESS
   2809	006214	052713 	000010 			BIS	#VFULOD*MODE00,(R3) ;ASSUME VFU LOAD
   2810	006220	026227 	000000G	001000 		CMP	LPRMZ(R2),#1000	;TRNASLATION RAM DATA?
   2811	006226	001224 				BNE	80$		;NO-- MUST BE VFU DATA
   2812	006230	052713 	000014 			BIS	#RAMLOD*MODE00,(R3) ;YES-- SET RAM LOAD MODE
   2813	006234	000621 				BR	80$		;START LP GOING ON THIS BLOCK
   2814	006236				42$:
   2815	006236	032704 	010000 			BIT	#TB.LPC,R4	;LOAD PAGE COUNTER FUNCTION?
   2816	006242	001413 				BEQ	43$		;NO-- GO ON
   2817	006244	042712 	020000 			BIC	#LP.PZI,(R2)	;ASSUME NO INTERRUPT ENABLE
   2818	006250	016001 	000000G			MOV	T.HCAD(R0),R1	;GET ADDRESS OF FUNCTION DATA
   2819	006254	016163 	000002 	000010 		MOV	2(R1),LPPCTR(R3) ;SET PAGE COUNTER
   2820	006262	002057 				BGE	49$		;BIT15=0-- NO INTERRUPT
   2821	006264	052712 	020000 			BIS	#LP.PZI,(R2)	;BIT15=1-- INTERRUPT ENABLE
   2822	006270	000454 				BR	49$		;ALL DONE
   2823	006272				43$:
   2824	006272					PUSH	<R3,R0>		;SAVE THIS THREAD BLOCK ADDRESS
	006272	010346 				MOV	R3,-(SP)
	006274	010046 				MOV	R0,-(SP)
   2825	006276	016201 	000000G			MOV	LPRMC(R2),R1	;GET CURRENT RAM DATA ADDRESS
   2826	006302	001026 				BNE	46$		;GOT IT-- PUT THIS DATA IN THAT BUFFER
   2827	006304	012700 	000000G		431$:	MOV	#.BGBUF,R0	;[RCO 810408] POINT TO BIG BUFFER FOR DATA BLOCK
   2828	006310	012701 	001000 			MOV	#1000,R1	;ASSUME TRANSLATION RAM DATA
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 32-3
LPIOD	(LP TASK I/O DONE)

   2829	006314	032704 	004000 			BIT	#TB.RMD,R4	;RAM DATA?
   2830	006320	001002 				BNE	44$		;YES-- GOT IT
   2831	006322	012701 	000444 			MOV	#<^D<145*2>+2+3>&<-4>,R1 ; +++001 NO-- VFU DATA-- GET MAX LENGTH
   2832	006326				44$:
   2833	006326					CALL	..ALC2		;GET A BUFFER
	006326	004737 	000000G			JSR	PC,..ALC2
   2834	006332	103004 				BCC	45$		;GOT IT-- GO ON
   2835	006334					WSIG$S			;NO GOT-- WAIT AN INSTANT
	006334	012746 				MOV	(PC)+,-(SP)
	006336	   061 	   001 			.BYTE	49.,1
	006340	104375 				EMT	375
   2836	006342	000760 				BR	431$		;[RCO 810804] TRY FOR BUFFER AGAIN
   2837	006344				45$:
   2838	006344	010162 	000000G			MOV	R1,LPRMZ(R2)	;STORE RAM DATA SIZE
   2839	006350	010001 				MOV	R0,R1		;COPY THAT BUFFER ADDRESS
   2840	006352	010162 	000000G			MOV	R1,LPRMA(R2)	;STORE RAM DATA ADDRESS
   2841	006356	011600 				MOV	(SP),R0		;RESTORE THREAD BLOCK ADDRESS
   2842	006360				46$:
   2843	006360	016203 	000000G			MOV	LPRMA(R2),R3	;COPY ADDRESS WHERE DATA GOES
   2844	006364	066203 	000000G			ADD	LPRMZ(R2),R3	;COMPUTE END OF BUFFER
   2845	006370	016000 	000000G			MOV	T.HCAD(R0),R0	;GET THE RAM DATA ADDRESS
   2846	006374	042704 	177400 			BIC	#HIBYTE,R4	;CLEAR TRASH IN BYTE COUNT
   2847	006400	001404 				BEQ	48$		;ALL DONE IF ZERO BYTE COUNT
   2848	006402				47$:
   2849	006402	020103 				CMP	R1,R3		;GOING BEYOND END OF BUFFER?
   2850	006404	103002 				BHIS	48$		;YES-- THAT'S ALL THE DATA WE CAN TAKE
   2851	006406	112021 				MOVB	(R0)+,(R1)+	;STORE A BYTE AWAY
   2852	006410	077404 				SOB	R4,47$		;LOOP FOR ALL BYTES OF DATA
   2853	006412				48$:
   2854	006412					POP	<R0,R3>		;RESTORE THE THREAD BLOCK POIINTER
	006412	012600 				MOV	(SP)+,R0
	006414	012603 				MOV	(SP)+,R3
   2855	006416	010162 	000000G			MOV	R1,LPRMC(R2)	;STORE CURRENT BYTE ADDRESS
   2856	006422				49$:
   2857	006422	011062 	000000G			MOV	@R0,LPTHD(R2)	;REMOVE THIS BUFFER
   2858	006426	016001 	000000G			MOV	T.HBCT(R0),R1	;GET SIZE OF THIS THREAD BLOCK
   2859	006432	001013 				BNE	60$		;NOT QIO-- JUST DEALLOCATE
   2860					;
   2861					; QUEUE I/O REQUEST DONE-- CALL ..IODN
   2862					;
   2863	006434					PUSH	R3		;SAVE EPA
	006434	010346 				MOV	R3,-(SP)
   2864	006436	110403 				MOVB	R4,R3		;GET QUEUE I/O STATUS
   2865	006440	016004 	177776 			MOV	T.HIBC(R0),R4	;GET INITAIL BYTE COUNT AS TRANSFER COUNT
   2866	006444	010001 				MOV	R0,R1		;COPY THREAD BLOCK ADDRESS
   2867	006446	162701 	000004G			SUB	#R.PB+PBTHRD,R1	;GET ADDRESS OF REAL QUEUE I/O NODE
   2868	006452					CALL	..IODN		;SAY I/O DONE
	006452	004737 	000000G			JSR	PC,..IODN
   2869	006456					POP	R3		;RESTORE EPA
	006456	012603 				MOV	(SP)+,R3
   2870	006460	000406 				BR	61$		;ALL DONE
   2871					;
   2872					; ALL DONE WITH THREAD BLOCK-- DEALLOCATE IT
   2873					;
   2874	006462				60$:
   2875	006462					CALL	..DECB		;DEALLOCATE THE BUFFER
	006462	004737 	000000G			JSR	PC,..DECB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 32-4
LPIOD	(LP TASK I/O DONE)

   2876	006466	032712 	000400 			BIT	#LP.F10,(R2)	;DOES -10 HAVE A REQUEST IN?
   2877	006472	001401 				BEQ	61$		;NO-- DON'T FLAG TO ACK
   2878	006474	010205 				MOV	R2,R5		;NOTE THAT WE DID SOMETHING
   2879	006476				61$:
   2880	006476	000137 	005650'			JMP	20$		;GET NEXT THREAD BLOCK FOR THIS LP
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 33
LPNIR	(LP TASK QUEUE I/O REQUEST)

   2882						.SBTTL	LPNIR	(LP TASK QUEUE I/O REQUEST)
   2883					;
   2884					;+
   2885					;
   2886					;	LPNIR IS DISPATCHED TO WHENEVER THE EVENT FLAG EF.NIR IS SET.
   2887					; THIS OCCURS WHEN ANOTHER TASK REQUESTS OUTPUT TO ANY LP. ALL LP'S
   2888					; ARE CHECKED FOR A REQUEST WAITING.
   2889					;
   2890					;	THE REQUEST IS QUEUED UP IN THE THREADED OUTPUT LIST
   2891					; FOR THIS LP, USING AN EXTENDED THREAD BLOCK. THIS BLOCK IS DISTINGUISHED
   2892					; AS A QUEUE I/O REQUEST BY T.HBCT BEING ZERO (THE LENGTH OF THE BLOCK
   2893					; IS T.HQRS).  THE ADDITIONAL INFORMATION IN THIS THREAD BLOCK IS:
   2894					;	T.HEMA --	(BYTE) EXTENDED MEMORY ADDRESS BITS (BITS 4 AND 5)
   2895					;	T.HVFC --	(BYTE) VERTICAL FORMAT CONTROL CHARACTER
   2896					;	T.HIBC --	INITIAL BYTE COUNT
   2897					;
   2898					;-
   2899					;
   2900						.ENABLE	LSB
   2901	006502				LPNIR:
   2902	006502	032737 	000000G	000000G		BIT	#EF.NIR,LPCEVF	;A QUEUE I/O REQUEST FOR US?
   2903	006510	001514 				BEQ	99$		;NO-- TRY NEXT IN CHAIN
   2904	006512	012700 	050114 			MOV	#"LP,R0		;SAY WE ARE A LP
   2905	006516					CALL	..DQRN		;GET A REQUEST
	006516	004737 	000000G			JSR	PC,..DQRN
   2906	006522	103507 				BCS	99$		;NONE-- DONE
   2907					;
   2908					; GOT QUEUE I/O REQUEST NODE-- ADDR IN R1
   2909					;
   2910					; REGISTERS RETURNED BY ..DQRN
   2911					;	R1 --	ADDRESS OF REQUEST NODE
   2912					;	R2 --	UNIT # OF REQUESTED DEVICE
   2913					;	R3 --	BYTE COUNT OF DATA
   2914					;	R4 --	EXTENDED ADDRESS BITS 16 AND 17 (IN BITS 4 AND 5)
   2915					;	R5 --	PHYSICAL ADDRESS OF DATA
   2916					;
   2917					; CHECK FOR FUNCTION CODES:
   2918					;	IO.WLB	OUTPUT BUFFER
   2919					;	IO.WVB	OUTPUT BUFFER
   2920					;	IO.KIL	FLUSH OUTPUT (CALL ..SPLP)
   2921					;	IO.DAC	CLOSE OUTPUT (TYPE <FF>)
   2922					;	IO.RVB	READ-- ILLEGAL FUNCTION
   2923					;	IO.RLB	READ-- ILLEGAL FUNCTION
   2924					;
   2925					; ALL OTHER FUNCTIONS ARE IGNORED
   2926					;
   2927	006524	006302 				ASL	R2		;MAKE UNIT IN WORDS
   2928	006526	016202 	000000G			MOV	LPUTBL(R2),R2	;GET ADDR OF LPTBL ENTRY FOR THIS LP
   2929	006532	116100 	000001G			MOVB	R.FC+1(R1),R0	;GET FUNCTION CODE FROM REQUEST NODE
   2930	006536	001430 				BEQ	20$		;EXPRESS FUNCTION-- LOOK AT IT
   2931	006540	122700 	000001 			CMPB	#IO.WLB/400,R0	;WRITE LOGICAL?
   2932	006544	001441 				BEQ	40$		;YES-- PRINT
   2933	006546	122700 	000022 			CMPB	#IO.WVB/400,R0	;WRITE VIRTUAL?
   2934	006552	001436 				BEQ	40$		;YES-- PRINT ALSO
   2935	006554	122700 	000002 			CMPB	#IO.RLB/400,R0	;READ LOGICAL????
   2936	006560	001414 				BEQ	15$		;YES-- ILLEGAL
   2937	006562	122700 	000021 			CMPB	#IO.RVB/400,R0	;READ VIRTUAL????
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 33-1
LPNIR	(LP TASK QUEUE I/O REQUEST)

   2938	006566	001411 				BEQ	15$		;YES-- ILLEGAL
   2939	006570	122700 	000020 			CMPB	#IO.DAC/400,R0	;CLOSE OUT FILE?
   2940	006574	001017 				BNE	30$		;NO-- ASSUME OK, GIVE SUCCESS
   2941					;
   2942					; IO.DAC -- CLOSE OUT FILE, SEND <FF>
   2943					;
   2944	006576	012705 	006730'			MOV	#VFCFF,R5	;SET ADDRESS TO POINT TO FORM-FEED
   2945	006602	012703 	000001 			MOV	#1,R3		;BYTE COUNT= 1
   2946	006606	005004 				CLR	R4		;NO EMA BITS
   2947	006610	000417 				BR	40$		;SEND LIKE QUEUE I/O
   2948					;
   2949					; ILLEGAL FUNCTION
   2950					;
   2951	006612				15$:
   2952	006612	012703 	177776 			MOV	#IE.IFC,R3	;SAY ILLEGAL
   2953	006616	000410 				BR	31$		;SO SAY IT
   2954					;
   2955					; IO.KIL-- FLUSH OUTPUT
   2956					;
   2957	006620				20$:
   2958	006620	022761 	000012 	000000G		CMP	#IO.KIL,R.FC(R1) ;THIS I/O KILL?
   2959	006626	001002 				BNE	30$		;NO-- IGNORE
   2960	006630					CALL	..SPLP		;FLUSH OUTPUT
	006630	004737 	011220'			JSR	PC,..SPLP
   2961					;
   2962					; IO.ATT, IO.DET-- IGNORE
   2963					;
   2964	006634				30$:
   2965	006634	012703 	000001 			MOV	#IS.SUC,R3	;SAY 'SUCCESS' TO ..IODN
   2966	006640				31$:
   2967	006640	005004 				CLR	R4		;NO BYTES TRANSFERRED
   2968	006642					CALL	..IODN		;RETURN PACKET TO REQUESTOR
	006642	004737 	000000G			JSR	PC,..IODN
   2969	006646	000715 				BR	LPNIR		;DONE-- TRY FOR SOME MORE
   2970					;
   2971					; IO.WLB, IO.WVB-- SEND DATA TO LP
   2972					;
   2973					; ENTER THIS REQUEST IN THREADED OUTPUT LIST
   2974					;
   2975	006650				40$:
   2976	006650	010100 				MOV	R1,R0		;COPY NODE ADDRESS
   2977	006652	062700 	000004G			ADD	#R.PB+PBTHRD,R0	;POINT TO THREAD BLOCK AREA OF R.PB
   2981	006656	116101 	000004G			MOVB	R.PB+4(R1),R1	;GET VERTICAL FORMAT CHARACTER
   2982	006662	005060 	000000G			CLR	T.HBCT(R0)	;NOTE THAT THIS IS A QIO REQUEST
   2983	006666	010560 	000000G			MOV	R5,T.HCAD(R0)	;SAVE PHYSICAL ADDR OF DATA
   2984	006672	010360 	000000G			MOV	R3,T.HCBC(R0)	; AND BYTE COUNT OF DATA
   2985	006676	110460 	177774 			MOVB	R4,T.HEMA(R0)	; AND EXTENDED MEMORY ADDR BITS
   2986					;
   2987	006702	012705 	006726'			MOV	#VFCTBL,R5	;YES-- POINT TO TABLE OF FORMAT CONTROL CHARACTERS
   2988	006706				55$:
   2989	006706	112560 	177775 			MOVB	(R5)+,T.HVFC(R0) ;GET THE CHARCTER TO CONTROL
   2990	006712	001402 				BEQ	60$		;END OF TABLE-- GIVE UP WITH NOTHING
   2991	006714	122501 				CMPB	(R5)+,R1	;MATCH THE VFC CHARACTER?
   2992	006716	001373 				BNE	55$		;NO-- LOOP UNTIL WE FIND ONE
   2993	006720				60$:
   2994	006720					CALL	..PTLP		;START LP ON THIS BUFFER, OR QUEUE UP
	006720	004737 	011452'			JSR	PC,..PTLP
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 33-2
LPNIR	(LP TASK QUEUE I/O REQUEST)

   2995	006724	000666 				BR	LPNIR		;LOOK FOR ANOTHER REQUEST
   2996					;
   2997					; VERTICAL FORMAT CONTROL CHARACTER TABLE FOR QUEUE I/O REQUESTS
   2998					;
   2999	006726				VFCTBL:
   3000	006726	   012 	   040 			.BYTE	12,' 		;<SPACE>	NEXT LINE
   3001	006730	   014 	   061 		VFCFF:	.BYTE	14,'1		;"1"		NEXT PAGE
   3002	006732	   015 	   053 			.BYTE	15,'+		;"+"		OVERPRINT
   3003	006734	   021 	   060 			.BYTE	21,'0		;"0"		DOUBLE SPACE
   3004	006736	   012 	   044 			.BYTE	12,'$		;"$"		PROMPTING OUTPUT
   3005	006740	   000 				.BYTE	0		;END OF TABLE
   3006						.EVEN
   3007					;
   3008					;
   3009	006742				99$:
   3010					;	BR	LPMKT		;NEXT IS MARK-TIME REQUESTS
   3011						.DSABLE LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 34
LPMKT	(LP TASK MARK-TIME REQUEST)

   3013						.SBTTL	LPMKT	(LP TASK MARK-TIME REQUEST)
   3014					;
   3015					;+
   3016					;	LPMKT IS DISPATCHED TO WHEN THE EF.LPC EVENT FLAG IS SET.
   3017					; THIS OCCURS EVERY 10. SECONDS.  EACH LP IS CHECKED TO SEE IF LP.HNG
   3018					; BIT HAS BEEN CLEARED BY ..DOLP (I/O COMPLETION) IF IT IS NOT
   3019					; IDLE. IF LP.HNG IS SET, NO I/O HAS OCCURED IN 10 SECONDS, SO
   3020					; 'GO' IS SET IN LPCSRA TO CONTINUE THE LP. LPHUNG IS INCREMENTED.
   3021					; IN ANY CASE, IF THE LP IS NOT IDLE, LP.HNG IS SET SO IT CAN BE
   3022					; CHECKED IN ANOTHER 10 SECONDS.
   3023					;
   3024					;-
   3025					;
   3026						.ENABLE	LSB
   3027	006742				LPMKT:
   3028	006742	032737 	000002 	000000G		BIT	#EF.LPC,LPCEVF	;IS MARK-TIME EVENT FLAG SET?
   3029	006750	001503 				BEQ	99$		;NO-- CHECK NEXT FLAG
   3030	006752	012705 	000002 			MOV	#L$$P20,R5	;SET UP # LP'S TO CHECK
   3031	006756	012702 	000000G			MOV	#LPTBL,R2	;ADDRESS DATA BLOCK FOR UNIT 0
   3032	006762				10$:
   3033	006762	016203 	000000G			MOV	LPCSA(R2),R3	;GET EXTERNAL PAGE ADDR
   3034	006766	001407 				BEQ	12$		;NON-EX LP-- SKIP THIS
   3035	006770	000241 				CLC			;CLEAR CARRY, IN CASE OF TRAP
   3036	006772	032713 	000100 			BIT	#INTENB,(R3)	;IS INTERRUPT-ENABLE STILL SET?
   3037	006776				LPDINT:
   3038	006776	103403 				BCS	12$		;TIME-OUT-- JUST SEND STATUS
   3039	007000	001002 				BNE	12$		;YES-- DON'T SET IT
   3040	007002	052713 	000100 			BIS	#INTENB,(R3)	;MAKE SURE WE STILL HAVE INTERRUPT ENABLE
   3041	007006				12$:
   3042	007006	032712 	004000 			BIT	#LP.WAT,(R2)	;WAITING?
   3043	007012	001047 				BNE	30$		;YES-- DON7T TRY TO CONTINUE
   3044	007014	005762 	000000G			TST	LPTHD(R2)	;ANY ACTIVE REQUESTS?
   3045	007020	001453 				BEQ	90$		;NONE-- LP IS IDLE
   3046	007022	032712 	100000 			BIT	#LP.HNG,(R2)	;NO I/O IN 10 SEC?
   3047	007026	001446 				BEQ	80$		;NO-- I/O CLEARED THIS BIT-- OK
   3048	007030	005762 	000000G			TST	LPITH(R2)	;IS I/O SUPPOSED TO BE IN PROGRSS?
   3049	007034	001436 				BEQ	30$		;NO-- SEE IF WE JUST CAME ON-LINE
   3050	007036	005703 				TST	R3		;DEVICE EXIST?
   3051	007040	001434 				BEQ	30$		;NON-EX LP-- FLUSH OUTPUT
   3052	007042	005237 	000000G			INC	LPHUNG		;COUNT # TIMES WE HAD TO START LP G9OING
   3053	007046	005362 	000000G			DEC	LPRTY(R2)	;ONE LESS TIME TO TRY
   3054	007052	002427 				BLT	30$		;NONE LEFT-- GIVE UP
   3055	007054					.INH4			;;;LOCK OUT LP INTERRUPTS
	007054	013746 	177776 			MOV	@#PS,-(SP)
	007060	112737 	000200 	177776 		MOVB	#PR4,@#PS
   3056	007066	105062 	000000G			CLRB	LPCSM+0(R2)	;;;CLEAR LOW BYTE SO NO CARRY
   3057	007072	066362 	000016 	000000G		ADD	LPCKSM-1(R3),LPCSM(R2) ;;;ACCUMULATE CHECKSUM (CLEARED BY GO)
   3058	007100	005763 	000006 			TST	LPBCTR(R3)	;;;DONE (BYTE COUNT=0)?
   3059	007104	001403 				BEQ	20$		;;;YES-- DO NEXT BUFFER
   3060	007106	052713 	000103 			BIS	#INTENB+PARENB+GO,(R3) ;;;NO-- JUST SET INT ENB AND GO
   3061	007112	000404 				BR	29$		;;;DO ANOTHER LP
   3062					;
   3063	007114				20$:
   3064	007114	016200 	000000G			MOV	LPITH(R2),R0	;;;GET CURRENT BUFFER ADDRESS
   3065	007120					CALL	..DOL1		;;;DONE-- DO NEXT BUFFER
	007120	004737 	011600'			JSR	PC,..DOL1
   3066	007124				29$:
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 34-1
LPMKT	(LP TASK MARK-TIME REQUEST)

   3067	007124					.ENB4			;ALLOW LP INTERRUPTS
	007124	012637 	177776 			MOV	(SP)+,@#PS
   3068	007130	000405 				BR	80$		;DONE WITH LP
   3069					;
   3070	007132				30$:
   3071	007132	052712 	040000 			BIS	#LP.SST,(R2)	;TIME TO SEND STATUS!!
   3072	007136	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;YES-- START IT UP AGAIN
   3073	007144				80$:
   3074	007144	052712 	100000 			BIS	#LP.HNG,(R2)	;SAY LP NO I/O
   3075									  ; THIS WILL BE CLEARED WHENEVER
   3076									  ; ANY I/O IS DONE TO LP
   3077	007150				90$:
   3078	007150	062702 	000000G			ADD	#LPSIZE,R2	;BUMP TO NEXT LP IN LPTBL
   3079	007154	005305 				DEC	R5		;TRY ALL
   3080	007156	003301 				BGT	10$		; LP'S
   3081	007160				99$:
   3082	007160	000137 	005534'			JMP	LPLOOP		;GO BACK TO WAITING
   3083						.DSABLE	LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 35
SSTSLP	(SEND LP-20 STATUS TO -10)

   3085						.SBTTL	SSTSLP	(SEND LP-20 STATUS TO -10)
   3086					;
   3087					;+
   3088					;
   3089					;	SSTSLP IS CALLED TO SEND THE LP-20 STATUS TO THE -10.
   3090					; IT IS INVOKED BY BOTH A REQUEST FOR STATUS FROM THE -10
   3091					; AND ANY LP-20 ERROR INDICATION, AS WELL AS PAGE COUNT ZERO
   3092					; (IF ENABLED) AND UNDEFINED CHARACTERS IN THE RAM.
   3093					;
   3094					;	TWO DEVICE-STSTUS WORDS ARE GENERATED,
   3095					; WITH THE STANDARD BITS (DV.XXX) IN THE FIRST WORD, AND THE
   3096					; FOLLOWING DEVICE-DEPENDENT BITS IN THE SECOND WORD:
   3097					;
   3098					;	DD.PGZ	PAGE COUNTER REACHED ZERO
   3099					;	DD.CHI	UNDEFINED CHARACTER IN RAM
   3100					;	DD.VFE	VFU ERROR (IMPLIES PAPER RE-ALIGNMENT REQUIRED)
   3101					;	DD.LER	ERROR FINDING/READING VFU AND RAM FILE
   3102					;	DD.OVF	OPTICAL VERTICAL FORMAT UNIT
   3103					;	DD.RME	RAM PARITY ERROR-- RELOAD REQUIRED
   3104					;
   3105					; THE STATUS BLOCK SENT TO THE -10 IS IN THE FOLLOWING FORMAT:
   3106					;
   3107					; WORD	0	STATUS WORD 0 (DV.XXX)
   3108					;	1	STATUS WORD 1 (DD.XXX)
   3109					;	2	(HIGH BYTE) # BYTES OF DEVICE DEPENDENT INFO (ALWAYS 2.)
   3110					;		(LOW BYTE) # BYTES OF DEVICE REGISTERS (ALWAYS 16.)
   3111					;	3	(LOW BYTE) ACCUMULATED CHECKSUM (HIGH BYTE) RETRY COUNT
   3112					; LP-20 DEVICE REGISTERS
   3113					;	4	LPCSRA
   3114					;	5	LPCSRB
   3115					;	6	LPBSAD
   3116					;	7	LPBCTR
   3117					;	10	LPPCTR
   3118					;	11	LPRAMD
   3119					;	12	LPCBUF/LPCCTR
   3120					;	13	LPTDAT/LPCKSM
   3121					;
   3122					; CALLED AT TASK LEVEL
   3123					;
   3124					; CALLING SEQUENCE:
   3125					;	R2 --	POINTER TO LPTBL ENTRY FOR THIS LP
   3126					;	R3 --	EXTERNAL PAGE ADDRESS FOR THIS LP
   3127					;
   3128					; EXIT CONDITIONS:
   3129					;
   3130					;	NO REGISTERS MODIFIED
   3131					;
   3132					;-
   3133					;
   3134						.ENABLE	LSB
   3135	007164				SSTSLP:
   3136	007164					SAVE	<R0,R1,R3,R4>	;SAVE USED CARS
	007164	010046 				MOV	R0,-(SP)
	007166	010146 				MOV	R1,-(SP)
	007170	010346 				MOV	R3,-(SP)
	007172	010446 				MOV	R4,-(SP)
   3137	007174	042712 	040000 			BIC	#LP.SST,(R2)	;CLEAR 'SEND STATUS' FLAG
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 35-1
SSTSLP	(SEND LP-20 STATUS TO -10)

   3138	007200	032777 	000020 	000000G	4$:	BIT	#EF.LPS,@LPEVFG	;IS OUR BUFFER AVAILABLE?
   3139	007206	001006 				BNE	5$		;YES-- DON'T WAIT
   3140	007210					WSIG$S			;NO-- WAIT FOR IT
	007210	012746 				MOV	(PC)+,-(SP)
	007212	   061 	   001 			.BYTE	49.,1
	007214	104375 				EMT	375
   3141	007216	005737 	000002G			TST	.COMEF+2	; [4.1.1105] IS PRIMARY PROTOCOL RUNNING ?
   3142	007222	100766 				BMI	4$		; [4.1.1105] YES-- STILL BUSY...
   3143	007224				5$:
   3144	007224	012700 	000004G			MOV	#LPSTBK+4,R0	;GET ADDRES OF BYTE COUNT WORD
   3145	007230	005010 				CLR	(R0)		;CLEAR IT (ASSUME NON-EX DEV)
   3146	007232	005040 				CLR	-(R0)		; AND SECOND WORD OF STATUS
   3147	007234	005040 				CLR	-(R0)		;AND FIRST WORD, WITH R0 POINTING TO IT
   3148	007236	005001 				CLR	R1		;CLEAR ERROR MESSAGE POINTER, TOO
   3149	007240	005703 				TST	R3		;GOT A EPA?
   3150	007242	001005 				BNE	10$		;GOT IT-- CHECK OUT LP STATUS
   3151	007244	052710 	000007 			BIS	#DV.NXD!DV.OIR!DV.OFL,(R0) ;NON-EX LP-- SAY SO
   3152	007250	012701 	007715'			MOV	#ERMNXD,R1	;PRINT ERROR ON CONSOLE, TOO
   3153	007254	000537 				BR	50$		;GO SEND THE ERROR
   3154					;
   3155	007256				10$:
   3156	007256	032712 	000200 			BIT	#LP.EOF,(R2)	;THIS AN EOF ENCOUNTERED?
   3157	007262	001402 				BEQ	11$		;NO-- GO ON
   3158	007264	052710 	000040 			BIS	#DV.EOF,(R0)	;YES-- SAY SO
   3159	007270				11$:
   3160	007270	032713 	004000 			BIT	#ONLINE,(R3)	;LP OFF-LINE?
   3161	007274	001004 				BNE	12$		;NO-- GO ON
   3162	007276	052710 	000006 			BIS	#DV.OFL!DV.OIR,(R0) ;YES-- SAY OFF-LINE
   3163	007302	012701 	007735'			MOV	#ERMOFL,R1	; AND TO CONSOLE
   3164	007306				12$:
   3165	007306	032713 	010000 			BIT	#VFURDY,(R3)	;VFU NOT READY?
   3166	007312	001007 				BNE	13$		;NO-- OK
   3167	007314	052760 	000004 	000002 		BIS	#DD.VFE,2(R0)	;YES-- SET SO IN DD WORD
   3168	007322	012701 	007750'			MOV	#ERMVFE,R1	;TELL CONSOLE
   3169	007326	052712 	002000 			BIS	#LP.CLR,(R2)	;NOTE RAM NEEDS TO BE RESET
   3170	007332				13$:
   3171	007332	032763 	000076 	000002 		BIT	#LPTPAR+MEMPAR+RAMPAR+SYNTIM+DEMTIM,LPCSRB(R3) ;FATAL ERROR?
   3172	007340	001404 				BEQ	14$		;NO-- ALL OK
   3173	007342	052710 	000100 			BIS	#DV.LOG,(R0)	;YES-- SAY BAD ERROR, AND ERROR-LOG IT
   3174	007346	012701 	007767'			MOV	#ERMHER,R1	;SAY SPLAT TO CONSOLE
   3175	007352				14$:
   3176	007352	016204 	000000G			MOV	LPTHD(R2),R4	;IS I/O LEFT TO DO?
   3177	007356	001002 				BNE	141$		;YES-- SAY SO
   3178	007360	005001 				CLR	R1		;NO-- DON'T SEND OFF-LINE/VFE
   3179	007362	000436 				BR	15$		;GO ON
   3180					;
   3181	007364				141$:
   3182	007364	052710 	000020 			BIS	#DV.IOP,(R0)	;SAY I/O IN PROGRESS
   3183	007370	005764 	000000G			TST	T.HBCT(R4)	;IS THIS A QUEUE I/O REQUEST?
   3184	007374	001002 				BNE	142$		;NO-- GO ON
   3185	007376	052710 	000400 			BIS	#DV.F11,(R0)	;YES-- SAY FROM -11
   3186	007402				142$:
   3187	007402	005762 	000000G			TST	LPRTY(R2)	;IS RETRY COUNT DOWN YET?
   3188	007406	002024 				BGE	15$		;NO-- GO ON
   3189	007410	052710 	000300 			BIS	#DV.URE!DV.LOG,(R0) ;SAY RETRY COUNT EXHAUSTED
   3190	007414	032712 	100000 			BIT	#LP.HNG,(R2)	;WAS DEVICE HUNG, TOO?
   3191	007420	001404 				BEQ	143$		;NO-- GO ON
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 35-2
SSTSLP	(SEND LP-20 STATUS TO -10)

   3192	007422	052710 	001004 			BIS	#DV.HNG!DV.OIR,(R0) ;YES-- SAY THAT TOO
   3193	007426	012701 	010004'			MOV	#ERMHNG,R1	;GET HUNG MESSAGE, TOO
   3194	007432				143$:
   3195	007432	032763 	000010 	000002 		BIT	#RAMPAR,LPCSRB(R3) ;RAM PARITY ERROR?
   3196	007440	001405 				BEQ	144$		;NO-- GO ON
   3197	007442	052760 	000040 	000002 		BIS	#DD.RME,2(R0)	;YES-- NOTE FATAL ERROR
   3198	007450	052712 	002000 			BIS	#LP.CLR,(R2)	;NOTE RAM NEEDS TO BE RESET
   3199	007454				144$:
   3200	007454					CALL	..SPLP		;RETRY COUNT EXHAUSTED-- GIVE UP OUTPUT
	007454	004737 	011220'			JSR	PC,..SPLP
   3201	007460				15$:
   3202	007460	032713 	040000 			BIT	#PAGZRO,(R3)	;PAGE-COUNT ZERO?
   3203	007464	001412 				BEQ	16$		;NO-- OK
   3204	007466	032712 	020000 			BIT	#LP.PZI,(R2)	;YES-- BUT ENABLED?
   3205	007472	001407 				BEQ	16$		;NO-- DON'T TELL HIM
   3206	007474	052710 	000010 			BIS	#DV.SCN,(R0)	;TELL -10 WE WANT HIM TO ACK
   3207	007500	052760 	000001 	000002 		BIS	#DD.PGZ,2(R0)	; FOR PAGE-ZERO
   3208	007506	052712 	004000 			BIS	#LP.WAT,(R2)	;REMEMBER TO WAIT
   3209	007512				16$:
   3210	007512	032713 	020000 			BIT	#CHRINT,(R3)	;UNDEFINED (INTERRUPT) CHARACTER?
   3211	007516	001407 				BEQ	17$		;NO-- GO ON
   3212	007520	052710 	000010 			BIS	#DV.SCN,(R0)	;NOTE TO WAIT
   3213	007524	052760 	000002 	000002 		BIS	#DD.CHI,2(R0)	; FOR UNDEF CHAR
   3214	007532	052712 	004000 			BIS	#LP.WAT,(R2)	; AND FOR US TO WAIT
   3215	007536				17$:
   3216	007536	032763 	004000 	000002 		BIT	#OPTVFU,LPCSRB(R3) ;THIS LP HAVE OPTICAL VFU?
   3217	007544	001403 				BEQ	18$		;NO-- MUST HAVE DAVFU (HOORAY)
   3218	007546	052760 	000020 	000002 		BIS	#DD.OVF,2(R0)	;YES-- SAY SO
   3219	007554				18$:
   3220					;
   3221					; ERROR CODE NOW IN LPSTBK+0 AND LPSTBK+2
   3222					;
   3223	007554				50$:
   3224	007554	032712 	000400 			BIT	#LP.F10,(R2)	;THIS A FROM-10 REQUEST?
   3225	007560	001115 				BNE	70$		;YES-- DON'T PRINT ON CONSOLE
   3226					;
   3227					; NON-10 REQUEST-- SEND CONSOLE A MESSAGE ABOUT OUR STATUS
   3228					;
   3229	007562	042712 	004000 			BIC	#LP.WAT,(R2)	;DON'T WAIT FOR NON-10 REQUEST
   3230	007566	005701 				TST	R1		;TELL OPR?
   3231	007570	001511 				BEQ	70$		;NO-- JUST SEND TO -10 ANYWAY
   3232	007572	012700 	007675'			MOV	#LPEMSX,R0	;GET ADDRESS OF END OF MESSAGE SO FAR
   3233	007576				51$:
   3234	007576	112120 				MOVB	(R1)+,(R0)+	;COPY A BYTE OF THE MESSAGE
   3235	007600	001376 				BNE	51$		; UNTIL ASCIZZZZZZZZ
   3236	007602	162700 	007662'			SUB	#LPEMSG,R0	;GET LENGTH OF MESSAGE
   3237	007606	010037 	007656'			MOV	R0,LPQDPB+Q.IOPL+2 ;SET LENGTH IN QIOW$ DPB
   3238	007612	011201 				MOV	(R2),R1		;GET UNIT
   3239	007614	042701 	177774 			BIC	#^C<LP.UNT>,R1	; NUMBER OF THIS LP
   3240	007620	062701 	000060 			ADD	#'0,R1		;MAKE IT ASCII
   3241	007624	110137 	007672'			MOVB	R1,LPERUN	;SAVE IN MESSAGE STRING
   3242	007630					DIR$	#LPQDPB		;DO QUEUE I/O TO CTY
	007630	012746 	007640'			MOV	#LPQDPB,-(SP)
	007634	104375 				EMT	375
   3243	007636	000466 				BR	70$		;SEE IF WE CAN CONTINUE
   3244					;
   3245	007640				LPQDPB:
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 35-3
SSTSLP	(SEND LP-20 STATUS TO -10)

   3246	007640					QIOW$	IO.WLB,1,E.FLPQ,1,0,0,<LPEMSG,0,0>
	007640	   003 	   011 			.BYTE	3,$$$ARG
	007642	000400 				.WORD	IO.WLB
	007644	000001 				.WORD	1
	007646	   003 	   001 			.BYTE	E.FLPQ,1
	007650	000000 				.WORD	0
	007652	000000 				.WORD	0
	007654	007662'				.WORD	LPEMSG
	007656	000000 				.WORD	0
	007660	000000 				.WORD	0
   3247	007662				LPEMSG:
   3248	007662	   015 	   012 	   052 		.ASCII	<15><12>/*** LP/
	007665	   052 	   052 	   040
	007670	   114 	   120
   3249	007672				LPERUN:
   3250	007672	   060 	   072 	   040 		.ASCII	/0: /
   3251	007675				LPEMSX:
   3252	007675					.BLKB	16.		;REST OF MESSAGE: MAX OF 16 BYTES
   3253	007715				ERMNXD:
   3254	007715	   116 	   117 	   116 		.ASCIZ	/NON-EX DEVICE/<15><12>
	007720	   055 	   105 	   130
	007723	   040 	   104 	   105
	007726	   126 	   111 	   103
	007731	   105 	   015 	   012
	007734	   000
   3255	007735				ERMOFL:
   3256	007735	   117 	   106 	   106 		.ASCIZ	/OFF-LINE/<15><12>
	007740	   055 	   114 	   111
	007743	   116 	   105 	   015
	007746	   012 	   000
   3257	007750				ERMVFE:
   3258	007750	   106 	   117 	   122 		.ASCIZ	/FORMAT ERROR/<15><12>
	007753	   115 	   101 	   124
	007756	   040 	   105 	   122
	007761	   122 	   117 	   122
	007764	   015 	   012 	   000
   3259	007767				ERMHER:
   3260	007767	   104 	   101 	   124 		.ASCIZ	/DATA ERROR/<15><12>
	007772	   101 	   040 	   105
	007775	   122 	   122 	   117
	010000	   122 	   015 	   012
	010003	   000
   3261	010004				ERMHNG:
   3262	010004	   110 	   125 	   116 		.ASCIZ	/HUNG/<15><12>
	010007	   107 	   015 	   012
	010012	   000
   3263						.EVEN
   3264					;
   3265					; HERE WE SEND THE STATUS BLOCK TO THE -10, R1= STATE CODE
   3266					;
   3267					;
   3268					; ASSEMBLE DEVICE INFO AND DEVICE REGISTERS
   3269					;
   3270	010014				70$:
   3271	010014	005703 				TST	R3		;NON-EX DEVICE?
   3272	010016	001417 				BEQ	72$		;YES-- DON'T STORE NON-EX DEVICE REGISTERS
   3273	010020	012700 	000004G			MOV	#LPSTBK+4,R0	;POINT TO STATUS RETURN BLOCK
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 35-4
SSTSLP	(SEND LP-20 STATUS TO -10)

   3274	010024	012720 	000000C			MOV	#<2.*BIT8>+<LPEXPZ*BIT0>,(R0)+ ;2 BYTES INFO, + DEV REG'S
   3275	010030	116220 	000001G			MOVB	LPCSM+1(R2),(R0)+ ;CHECKSUM
   3276	010034	012701 	000012 			MOV	#LPRTRY,R1	;GET INITIAL RETRY COUNT
   3277	010040	166201 	000000G			SUB	LPRTY(R2),R1	; - CURRENT COUNT= # RETRIES
   3278	010044	110120 				MOVB	R1,(R0)+	;HIGH BYTE-- # RETRIES
   3279	010046				71$:
   3280	010046	012320 				MOV	(R3)+,(R0)+	;(2) ... LP DEVICE REGISTERS
   3281	010050	022700 	000000C			CMP	#LPSTBK+LPSTLN,R0 ;DONE YET?
   3282	010054	101374 				BHI	71$		;NO-- KEEP ON LOOPING
   3283					;
   3284					; SET UP REGISTERS FOR ..STIN:
   3285					;	R0 --	ADDRESS OF BLOCK (FIRST WORD IS UNIT/BYTE COUNT)
   3286					;	R1 --	FUNCTION CODE + BIT15 (FOR INDIRECT FUNCTION)
   3287					;	R2 --	EVENT FLAG NUMBER TO BE SET WHEN BLOCK SENT
   3288					;	R3 --	DEVICE CODE (D.CLPT FOR THE LP-20)
   3289					;
   3290	010056				72$:
   3291	010056	012700 	000000G			MOV	#LPSTBK,R0	;SET UP ADDR FOR ..STIN
   3292	010062	011201 				MOV	(R2),R1		;GET UNIT NUMBER
   3293	010064	042701 	177774 			BIC	#^C<LP.UNT>,R1	; FROM LPSTS
   3294	010070	110140 				MOVB	R1,-(R0)	;HIGH BYTE HEADER: UNIT #
   3295	010072	112740 	000002G			MOVB	#LPSTLN+2,-(R0)	;LOW BYTE HEADER: SIZE OF BLOCK
   3296	010076	012701 	100000G			MOV	#BIT15+BC.HDS,R1 ;INDIRECT FUNCTION HERE IS DEVICE STATUS
   3297	010102					PUSH	R2		;SAVE LPTBL POINTER
	010102	010246 				MOV	R2,-(SP)
   3298	010104	012702 	000005 			MOV	#E.FLPS,R2	;EVENT FLAG NUMBER
   3299	010110	012703 	000000G			MOV	#D.CLPT,R3	;DEVICE LP
   3300	010114	042777 	000020 	000000G		BIC	#EF.LPS,@LPEVFG	;CLEAR BUFFER AVAILABLE FLAG
   3301	010122					CALL	..STIN		;SAVE FOR NOW
	010122	004737 	000000G			JSR	PC,..STIN
   3302	010126					POP	R2		;RESTORE LPTBL POINTER
	010126	012602 				MOV	(SP)+,R2
   3303	010130	103010 				BCC	80$		;FINISH UP
   3304					;
   3305					; ..STIN GAVE ERROR-- MUST SEND STATUS AGAIN LATER
   3306					;
   3307	010132				75$:
   3308	010132	052777 	000020 	000000G		BIS	#EF.LPS,@LPEVFG	;NOTE BUFFER STILL REALLY AVAILABLE
   3309	010140	032712 	000400 			BIT	#LP.F10,(R2)	;THIS A FROM-10 REQUEST
   3310	010144	001402 				BEQ	80$		;NO-- IGNORE THE ERROR
   3311	010146	052712 	040000 			BIS	#LP.SST,(R2)	;YES-- SEND STATUS AGAIN LATER
   3312					;
   3313					; FINISH UP
   3314					;
   3315	010152				80$:
   3316	010152					RESTORE			; AND REGISTERS
	010152	012604 				MOV	(SP)+,R4
	010154	012603 				MOV	(SP)+,R3
	010156	012601 				MOV	(SP)+,R1
	010160	012600 				MOV	(SP)+,R0
   3317	010162					RETURN			;RETURN FROM SSTSLP
	010162	000207 				RTS	PC
   3318						.DSABLE	LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 36
TESTLP	(START LP-20 GOING ON THREADED LIST)

   3320						.SBTTL	TESTLP	(START LP-20 GOING ON THREADED LIST)
   3321					;
   3322					;+
   3323					;	TESTLP IS CALLED TO START THE LP-20 ON A THREADED LIST.
   3324					; THE THREAD MUST BE SET UP, WITH THE POINTER BOTH IN R0 AND LPTHD.
   3325					;
   3326					; CALLED FROM TASK LEVEL
   3327					;
   3328					; CALLING SEQUENCE:
   3329					;	R0 --	THREAD POINTER (ALSO IN LPTHD)
   3330					;	R2 --	LPTBL ENTRY FOR THIS LP
   3331					;
   3332					; EXIT CONDITIONS:
   3333					;	R0 --	CURRENT OUTPUT THREAD POINTER
   3334					;	R3 --	EXTERNAL PAGE ADDRESS OF THIS LP
   3335					;
   3336					;-
   3337					;
   3338	010164				TESTLP:
   3339	010164	032713 	004000 			BIT	#ONLINE,(R3)	;OFF-LINE?
   3340	010170	001470 				BEQ	90$		;YES-- DO NOTHING
   3341					;
   3342	010172	032777 	000040 	000000G		BIT	#EF.LPW,@LPEVFG	;SHOULD WE WAIT FOR LP-20?
   3343	010200	001011 				BNE	10$		;NO-- GO ON
   3344					;
   3345					; MUST WAIT FOR 1-SEC FOR LP-20 TO SETTLE AFTER DOING AN ABORT TRANSFER
   3346					;
   3347	010202					DIR$	#MKSCDP		;SET MARK TIME REQUEST
	010202	012746 	005372'			MOV	#MKSCDP,-(SP)
	010206	104375 				EMT	375
   3348	010210	103405 				BCS	10$		;OH, WELL ...
   3349	010212					WTSE$S	#E.FLPW		;WAIT FOR THE FLAG
	010212	012746 	000006 			MOV	#E.FLPW,-(SP)
	010216	012746 				MOV	(PC)+,-(SP)
	010220	   051 	   002 			.BYTE	41.,2
	010222	104375 				EMT	375
   3350	010224				10$:
   3351	010224	032712 	002000 			BIT	#LP.CLR,(R2)	;TIME TO CLEAR THE RAM?
   3352	010230	001414 				BEQ	30$		;NO-- JUST GO ON
   3353	010232	042712 	002000 			BIC	#LP.CLR,(R2)	;RESET THE FLAG
   3354	010236	032712 	001000 			BIT	#LP.LIP,(R2)	;BUT RAM LOAD NOW IN PROGRESS??
   3355	010242	001007 				BNE	30$		;YES-- DON'T GO RESET IT
   3356					;
   3357					; RAM MUST BE CLEARED, SINCE WE GOT A RAMPAR/VFU ERROR
   3358					;
   3359	010244	105063 	000014 			CLRB	LPCBUF(R3)	;CLEAR RAM ADDRESS REGISTER
   3360	010250				20$:
   3361	010250	005063 	000012 			CLR	LPRAMD(R3)	;CLEAR A RAM WORD
   3362	010254	105263 	000014 			INCB	LPCBUF(R3)	;BUMP TO NEXT RAM ADDRESS
   3363	010260	001373 				BNE	20$		;NOT DONE-- GO ON TO NEXT WORD
   3364					;
   3365					; TIME TO START LP GOING
   3366					;
   3367	010262				30$:
   3368	010262	032712 	000200 			BIT	#LP.EOF,(R2)	;WE AT EOF TIME?
   3369	010266	001404 				BEQ	32$		;NO-- GO ON
   3370	010270	042712 	000200 			BIC	#LP.EOF,(R2)	;YES-- NO LONGER EOF
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 36-1
TESTLP	(START LP-20 GOING ON THREADED LIST)

   3371	010274	005062 	000000G			CLR	LPCSM(R2)	;RESET CHECKSUM AT EOF
   3372	010300				32$:
   3373	010300	032713 	040000 			BIT	#PAGZRO,(R3)	;PAGZRO SET?
   3374	010304	001403 				BEQ	34$		;NO-- GO ON
   3375	010306	016363 	000010 	000010 		MOV	LPPCTR(R3),LPPCTR(R3) ;YES-- RESET PAGZRO
   3376	010314				34$:
   3377	010314	005713 				TST	(R3)		;ERROR SET?
   3378	010316	100002 				BPL	40$		;NO-- GO ON
   3379	010320	052713 	001102 			BIS	#RSTERR+INTENB+PARENB,(R3) ;YES-- RESET IT
   3380	010324				40$:
   3381	010324					PUSH	R0		;SAVE THREAD POINTER
	010324	010046 				MOV	R0,-(SP)
   3382	010326					.INH4			;;; PREVENT LP INTERRUPTS
	010326	013746 	177776 			MOV	@#PS,-(SP)
	010332	112737 	000200 	177776 		MOVB	#PR4,@#PS
   3383	010340					CALL	..DOLP		;;;START LP GOING ON THE LIST
	010340	004737 	011614'			JSR	PC,..DOLP
   3384	010344					.ENB4			;;;DONE
	010344	012637 	177776 			MOV	(SP)+,@#PS
   3385	010350					POP	R0		;RESTORE LPTHD POINTER
	010350	012600 				MOV	(SP)+,R0
   3386					;
   3387					; ALL DONE
   3388					;
   3389	010352				90$:
   3390	010352					RETURN			;RETURN FROM TESTLP
	010352	000207 				RTS	PC
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 37
INITLP	(INITALIZE ALL LP'S)

   3392						.SBTTL	INITLP	(INITALIZE ALL LP'S)
   3393					;
   3394					;+
   3395					;	INITLP IS CALLED DURING INITIALIZATION AND ALSO ON POWER
   3396					; RECOVERY.
   3397					;
   3398					;	EACH LP IS RESET, AND LP.LDF IS SET TO LOAD THE CURRENT RAM
   3399					; AND VF.  LPCSA IS CLEARED FOR NON-EX LP'S
   3400					;
   3401					;-
   3402					;
   3403						.ENABLE	LSB
   3404	010354				INITLP::
   3405	010354					SAVE	<R2,R3,R5>	;SAVE OUR PRECIOUS REGISTERS
	010354	010246 				MOV	R2,-(SP)
	010356	010346 				MOV	R3,-(SP)
	010360	010546 				MOV	R5,-(SP)
   3406	010362	012705 	000002 			MOV	#L$$P20,R5	;GET # LP'S WE HAVE
   3407	010366	012702 	000000G			MOV	#LPTBL,R2	;ADDRESS LPTBL ENTRY FOR UNIT 0
   3408	010372				10$:
   3409	010372	011203 				MOV	(R2),R3		;GET THE
   3410	010374	042703 	177774 			BIC	#^C<LP.UNT>,R3	; UNIT #
   3411	010400	006303 				ASL	R3		; *2
   3412	010402	006303 				ASL	R3		; *4
   3413	010404	006303 				ASL	R3		; *8
   3414	010406	006303 				ASL	R3		; *16 BYTES PER UNIT
   3415	010410	062703 	000000G			ADD	#LPEXPA,R3	;GET EXTERNAL PAGE ADDRESS FOR THIS LP
   3416	010414	010362 	000000G			MOV	R3,LPCSA(R2)	;SAVE THIS ADDRESS
   3417	010420	012713 	001102 			MOV	#RSTERR+INTENB+PARENB,(R3) ;CLEAR LP
   3418	010424				LPDCLR:
   3419	010424	005062 	000000G			CLR	LPITH(R2)	;CLEAR INT-LEVEL POINTER TO THREADED LIST
   3420	010430				90$:
   3421	010430	062702 	000000G			ADD	#LPSIZE,R2	;BUMP TO NEXT LP'S ENTRY
   3422	010434	077522 				SOB	R5,10$		;LOOP FOR ALL LP'S
   3423
   3424	010436	052777 	000002 	000000G		BIS	#EF.LPC,@LPEVFG	;FORCE A HUNG CHECK NOW
   3425	010444					RESTORE			; THE REGISTERS TO THEIR RIGHTFUL (PITIFUL) CONDITION
	010444	012605 				MOV	(SP)+,R5
	010446	012603 				MOV	(SP)+,R3
	010450	012602 				MOV	(SP)+,R2
   3426	010452					RETURN			;RETURN FROM INITLP
	010452	000207 				RTS	PC
   3427					;
   3428						.DSABLE	LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 38
INITLP	(INITALIZE ALL LP'S)

   3430
   3431						.SBTTL	LP-20 INTERRUPT SERVICE MODULE
   3432					;
   3433					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   3434					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   3435					;			ALL RIGHTS RESERVED.
   3436					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   3437					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   3438					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   3439					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   3440					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   3441					;
   3442					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   3443					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   3444					;       CORPORATION.
   3445					;
   3446					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   3447					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   3448					;
   3449					;		MODULE: LP-20 INTERRUPT SERVICE
   3450					;
   3451					;		VERSION: 01-01
   3452					;
   3453					;		AUTHOR: TOM PORCHER
   3454					;
   3455					;		DATE: 6-JUN-75
   3456					;
   3457					;
   3458					;	THIS MODULE CONTAINS:
   3459					;
   3460					;	1) $LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
   3461					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 39
$LPINT	(LP-20 INTERRUPT SERVICE ROUTINE)

   3463						.SBTTL	$LPINT	(LP-20 INTERRUPT SERVICE ROUTINE)
   3464					;
   3465					;+
   3466					;
   3467					;	$LPINT IS CALLED FROM THE INTERRUPT VECTOR FOR
   3468					; ANY OF THE LP-20'S.  THE UNIT NUMBER IS SAVED IN THE LOW-ORDER
   3469					; BITS (THE CC'S) OF THE PS IN THE TRAP VECTOR.
   3470					;
   3471					;	WHEN A DONE INTERRUPT OCCURS, THE NEXT BUFFER IS STARTED,
   3472					; UNLESS THIS IS A MULTI-CHARACTER OPERATION (IE. 'ARROW' MODE), IN
   3473					; WHICH CASE THE CURRENT BUFFER IS CONTINUED.
   3474					;
   3475					;	IF CHRINT (UNDEFINED CHARACTER -- INT BIT SET IN RAM) OCCURS,
   3476					; THE RAM DATA IS EXAMINED. IF IT IS '^', THE CHARACTER + 100,
   3477					; PRECEDED BY '^', IS PRINTED, ELSE OUTPUT IS
   3478					; STOPPED AND THE STATUS SENT TO THE -10 (INTERRUPT).
   3479					;
   3480					;	IF PAGZRO (PAGE COUNT REACHED ZERO) OCCURS AND THE LP.PZI
   3481					; (PAGE ZERO INTERRUPT) FLAG IN LPSTS (SET BY RAM/VF LOAD FILE) IS
   3482					; SET, OUTPUT IS STOPPED AND THE STATUS IS SENT TO THE -10. OTHERWISE,
   3483					; OUTPUT IS MERELY RESUMED AND PAGZRO IGNORED.
   3484					;
   3485					;	IF THE LP COMES ON-LINE, WHILE WAITING FOR OFF-LINE,
   3486					; OUTPUT IS RESUMED, AND THE NEW STATUS IS SENT TO THE -10.
   3487					;
   3488					;-
   3489					;
   3490	010454				$LPINT::
   3491	010454	013737 	177776 	000000G		MOV	@#PS,LPUNIT	;;;SAVE UNIT #
   3492	010462					SAVE	<R0,R2,R3>	;;;SAVE REGISTERS
	010462	010046 				MOV	R0,-(SP)
	010464	010246 				MOV	R2,-(SP)
	010466	010346 				MOV	R3,-(SP)
   3493	010470	013702 	000000G			MOV	LPUNIT,R2	;;;GET UNIT # BACK
   3494	010474	006302 				ASL	R2		;;;MAKE IT WORDS
   3495	010476	042702 	177774 			BIC	#^C<LP.UNT>,R2	;;;CLEAR GARBAGE BITS
   3496	010502	016202 	000000G			MOV	LPUTBL(R2),R2	;;;GET ADDR OF DEVICE STATUS BLOCK FOR THIS LP
   3497	010506	016203 	000000G			MOV	LPCSA(R2),R3	;;;GET EXT PAGE ADDR FOR CURRENT LP
   3498	010512	016200 	000000G			MOV	LPITH(R2),R0	;;;GET CURRENT THREAD BLOCK ADDR
   3499	010516	001520 				BEQ	80$		;;;IDLE-- JUST SEND DEVICE STATUS
   3500					;
   3501					; LP NOT IDLE-- SEE IF ERROR, PAGZRO, CHRINT, OR DONE
   3502					;
   3503	010520	105062 	000000G			CLRB	LPCSM+0(R2)	;;;INSURE NO CARRY
   3504	010524	066362 	000016 	000000G		ADD	LPCKSM-1(R3),LPCSM(R2) ;;;ACCUMULATE CHECKSUM
   3505	010532	032713 	160000 			BIT	#ERR+PAGZRO+CHRINT,(R3) ;;;ERROR, PAGZRO, OR CHRINT?
   3506	010536	001014 				BNE	30$		;;;YES-- STOP I/O AND PROCESS
   3507	010540	005763 	000006 			TST	LPBCTR(R3)	;;;DONE (BYTE COUNT=0)?
   3508	010544	001003 				BNE	20$		;;;NO-- JUST KEEP IT GOING
   3509	010546					CALL	..DOL1		;;;YES-- START NEXT BUFFER
	010546	004737 	011600'			JSR	PC,..DOL1
   3510	010552	000511 				BR	90$		;;;EXIT FROM IRP
   3511					;
   3512	010554				20$:
   3513	010554	005362 	000000G			DEC	LPRTY(R2)	;;;DECREMENT RETRY COUNT
   3514	010560	002403 				BLT	30$		;;;RAN OUT-- CHECK FOR A BIT SET, OR ASSUME ERROR
   3515	010562	052713 	000103 			BIS	#INTENB+PARENB+GO,(R3) ;;;MAKE SURE LP IS STILL GO-ING
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 39-1
$LPINT	(LP-20 INTERRUPT SERVICE ROUTINE)

   3516	010566	000503 				BR	90$		;;;AND EXIT
   3517					;
   3518					; ERROR, PAGZRO, OR CHRINT-- SAVE BYTE COUNT AND ADDRESS
   3519					; STOP I/O AND WAIT FOR CONTINUE
   3520					;
   3521	010570				30$:
   3522	010570	032712 	010000 			BIT	#LP.MCH,(R2)	;;;MULTI-CHAR PRINT OPERATION?
   3523	010574	001044 				BNE	40$		;;;YES-- DON'T SAVE BYTE COUNT AND ADDRESS
   3524	010576	005463 	000006 			NEG	LPBCTR(R3)	;;;GET # BYTES LEFT TO TRANSMIT
   3525	010602	016360 	000006 	000000G		MOV	LPBCTR(R3),T.HCBC(R0) ;;; INTO THREAD BLOCK TO CONTINUE
   3526	010610	016360 	000004 	000000G		MOV	LPBSAD(R3),T.HCAD(R0) ;;;ALSO CURRENT ADDRESS
   3527	010616	032713 	020000 			BIT	#CHRINT,(R3)	;;;THIS CHRINT INTERRUPT?
   3528	010622	001431 				BEQ	40$		;;;NO-- SEE IF PAGZRO
   3529	010624					PUSH	R2		;;;SAVE THE ADDRESS OF LPTBL
	010624	010246 				MOV	R2,-(SP)
   3530	010626	062702 	000000G			ADD	#LPMCB,R2	;;;POINT TO THE MULTI-CHAR BUFFER
   3531	010632	010263 	000004 			MOV	R2,LPBSAD(R3)	;;;POINT THE LP20 TO THAT BUFFER
   3532	010636	116312 	000012 			MOVB	LPRAMD+0(R3),(R2) ;;;GET RAM DATA CHARACTER
   3533	010642	122722 	000136 			CMPB	#'^,(R2)+	;;;ARROW MODE?
   3534	010646	001015 				BNE	39$		;;;NO-- INTERRUPT -10
   3535	010650	116312 	000014 			MOVB	LPCBUF(R3),(R2)	;;;YES-- GET THE CAUSING CHARACTER
   3536	010654	152712 	000100 			BISB	#100,(R2)	;;;MAKE IT ALPHABETIC
   3537	010660					POP	R2		;;;RESTORE LPTBL
	010660	012602 				MOV	(SP)+,R2
   3538	010662	052712 	010000 			BIS	#LP.MCH,(R2)	;;;SAY WE ARE DOING MULTI-CHARACTER
   3539	010666	012763 	177776 	000006 		MOV	#-2,LPBCTR(R3)	;;;SET BYTE COUNT TO TWO CHARACTERS
   3540	010674	012713 	000103 			MOV	#PARENB+INTENB+GO,(R3) ;;;START IT GOING ON THESE TWO CHARS
   3541	010700	000436 				BR	90$		;;;WAIT FOR DONE
   3542					;
   3543	010702				39$:	POP	R2		;;;INTERRUPT-- RESTORE LPTBL POINTER
	010702	012602 				MOV	(SP)+,R2
   3544	010704	000423 				BR	70$		;;; AND TELL -10
   3545					;
   3546					; ERROR OR PAGZRO
   3547					;
   3548	010706				40$:
   3549	010706	032713 	040000 			BIT	#PAGZRO,(R3)	;;;PAGZRO?
   3550	010712	001411 				BEQ	60$		;;;NO-- MUST BE ERROR
   3551	010714	032712 	020000 			BIT	#LP.PZI,(R2)	;;;YES-- IS PAGE ZERO INTERRUPT ENABLED?
   3552	010720	001015 				BNE	70$		;;;YES-- INTERRUPT AND WAIT
   3553	010722	016363 	000010 	000010 		MOV	LPPCTR(R3),LPPCTR(R3) ;;;NO-- RESET PAGZRO
   3554	010730					CALL	..DOLP		;;;NO-- JUST CONTINUE
	010730	004737 	011614'			JSR	PC,..DOLP
   3555	010734	000420 				BR	90$		;;;DONE WITH PAGZRO
   3556					;
   3557					; ERROR-- DECREMENT RETRY COUNT IF ANYTHING BUT OFF-LINE
   3558					;
   3559	010736				60$:
   3560	010736	032763 	000177 	000002 		BIT	#VFUERR+LPTPAR+MEMPAR+RAMPAR+SYNTIM+DEMTIM+GOERR,LPCSRB(R3)
   3561	010744	001403 				BEQ	70$		;;;NO ERRORS-- JUST SEND STATUS
   3562	010746	012762 	177777 	000000G		MOV	#-1,LPRTY(R2)	;;; ABOVE ERRORS ARE NOT RECOVERABLE
   3563					;
   3564					; STOP I/O AND SEND STATUS TO -10
   3565					;
   3566	010754				70$:
   3567	010754	005062 	000000G			CLR	LPITH(R2)	;;;SAY I/O STOPPED
   3568					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 39-2
$LPINT	(LP-20 INTERRUPT SERVICE ROUTINE)

   3569					; SEND STATUS TO -10
   3570					;
   3571	010760				80$:
   3572	010760	052712 	040000 			BIS	#LP.SST,(R2)	;;;SAY SEND STATUS TO TASK
   3573	010764	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;;;SAY SOMETHING TO DO
   3574	010772					CALL	..DSEV		;;;SAY SIGNIFICANT EVENT
	010772	004737 	000000G			JSR	PC,..DSEV
   3575					;
   3576					; ALL DONE WITH INTERRUPT
   3577					;
   3578	010776				90$:
   3579	010776					RESTORE			;;; SAVED REGISTERS
	010776	012603 				MOV	(SP)+,R3
	011000	012602 				MOV	(SP)+,R2
	011002	012600 				MOV	(SP)+,R0
   3580	011004	000137 	000000G			JMP	..INTX		;;;RETURN FROM LP INTERRUPT
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 40
$LPINT	(LP-20 INTERRUPT SERVICE ROUTINE)

   3582
   3583						.SBTTL	LP-20 COMMON SUBROUTINES MODULE
   3584					;
   3585					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   3586					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   3587					;			ALL RIGHTS RESERVED.
   3588					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   3589					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   3590					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   3591					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   3592					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   3593					;
   3594					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   3595					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   3596					;       CORPORATION.
   3597					;
   3598					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   3599					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   3600					;
   3601					;		MODULE: LP-20 COMMON SUBROUTINES
   3602					;
   3603					;		VERSION: 01-00
   3604					;
   3605					;		AUTHOR: TOM PORCHER
   3606					;
   3607					;		DATE: 7-JUN-75
   3608					;
   3609					;
   3610					;	THIS MODULE CONTAINS:
   3611					;
   3612					;	1) ..STLP (START LP-20 OUTPUT)
   3613					;
   3614					;	2) ..SPLP (STOP LP-20 OUTPUT)
   3615					;
   3616					;	3) ..AKLP (ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
   3617					;
   3618					;	4) ..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
   3619					;
   3620					;	5) ..DOLP (INITIATE LP-20 TRANSFER)
   3621					;
   3622						.SBTTL	..STLP	(START LP-20 OUTPUT)
   3623					;
   3624					;+
   3625					;
   3626					;	..STLP IS CALLED ONLY FROM THE QUEUED PROTOCOL
   3627					; TASK TO PERFORM A FUNCTION ON THE SPECIFIED LP. THE
   3628					; FOLLOWING FUNCTIONS ARE RECOGNIZED HERE (FUNCTION CODE
   3629					; IN HIGH BYTE OF T.HCBC OF THREAD BLOCK):
   3630					;	BC.STR	STRING DATA
   3631					;	BC.RDS	RETURN DEVICE STATUS
   3632					;	BC.HDS	HERE IS DEVICE STATUS
   3633					;	BC.SDS	SPECIAL DEVICE OPERATION, FIRST WORD IS FUNCTION:
   3634					;		1 -- SET PAGE COUNTER
   3635					;	BC.LDR	LOAD TRANSLATION RAM
   3636					;	BC.LDV	LOAD VERTICAL FORMAT
   3637					;
   3638					; CALLED FROM TASK LEVEL
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 40-1
..STLP	(START LP-20 OUTPUT)

   3639					;
   3640					; CALLING SEQUENCE:
   3641					;	R0 --	ADDRESS OF THREAD BLOCK TO PROCESS
   3642					;	R2 --	ADDRESS OF LPTBL ENTRY FOR THIS LP
   3643					;
   3644					; EXIT CONDITIONS:
   3645					;
   3646					; NO REGISTERS MODIFIED
   3647					;
   3648					;-
   3649					;
   3650						.ENABLE	LSB
   3651	011010				..STLP::
   3652	011010					SAVE	<R1,R3,R4>
	011010	010146 				MOV	R1,-(SP)
	011012	010346 				MOV	R3,-(SP)
	011014	010446 				MOV	R4,-(SP)
   3653	011016	022702 	000000C			CMP	#LPTBL+<L$$P20*LPSIZE>,R2 ;THIS ONE OF US?
   3654	011022	101434 				BLOS	30$		;NO-- JUST SLIP AWAY
   3655	011024	052712 	000400 			BIS	#LP.F10,(R2)	;NOTE THAT THIS IS A FROM-10 REQUEST
   3656	011030	116004 	000001G			MOVB	T.HCBC+1(R0),R4	;GET FUNCTION CODE
   3657	011034	105060 	000001G			CLRB	T.HCBC+1(R0)	; AND CLEAR IT
   3658	011040	012703 	011060'			MOV	#BCFTAB,R3	;POINT TO FUNCTION DISPATCH TABLE
   3659	011044				10$:
   3660	011044	112301 				MOVB	(R3)+,R1	;GET A DISPATCH ADDRESS
   3661	011046	001413 				BEQ	BCFILF		;END-- ASSUME RETURN DEVICE STATUS
   3662	011050	122304 				CMPB	(R3)+,R4	;MATCH FUNCTION?
   3663	011052	001374 				BNE	10$		;NO-- LOOP TILL WE FIND FUNCTION
   3664	011054	000161 	011060'			JMP	BCFTAB(R1)	;PERFORM FUNCTION
   3665					;
   3666	011060				BCFTAB:
   3667	011060	   124 	   000G			.BYTE	BCFSTR-BCFTAB,BC.STR
   3668	011062	   016 	   000G			.BYTE	BCFRDS-BCFTAB,BC.RDS
   3669	011064	   062 	   000G			.BYTE	BCFHDS-BCFTAB,BC.HDS
   3670	011066	   042 	   000G			.BYTE	BCFSDO-BCFTAB,BC.SDS
   3671	011070	   102 	   000G			.BYTE	BCFLDR-BCFTAB,BC.LDR
   3672	011072	   110 	   000G			.BYTE	BCFLDV-BCFTAB,BC.LDV
   3673	011074	   000 				.BYTE	0
   3674						.EVEN
   3675					;
   3676					; ILLEGAL FUNCTION
   3677					;
   3678	011076				BCFILF:
   3679					;	BR	BCFRDS		;ILLEGAL FUNCTION-- JUST SEND STATUS FOR NOW
   3680					;
   3681					; RETURN DEVICE STATUS
   3682					;
   3683	011076				BCFRDS:
   3684	011076	052712 	040000 			BIS	#LP.SST,(R2)	;NOTE TO SEND STATUS NOW
   3685	011102	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;TELLL LP TASK TO DO SOMETHING
   3686	011110					CALL	..DSEV		;MAKE A SIGNIFICANT EVENT HAPPEN
	011110	004737 	000000G			JSR	PC,..DSEV
   3687					;
   3688					; THREAD BLOCK DONE-- DEALLOCATE
   3689					;
   3690	011114				30$:
   3691	011114					CALL	..DECN		;DEALLOCATE THREAD BLOCK
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 40-2
..STLP	(START LP-20 OUTPUT)

	011114	004737 	000000G			JSR	PC,..DECN
   3692	011120	000433 				BR	90$		;RESTORE AND RETURN
   3693					;
   3694					; SPECIAL DEVICE OPERATION
   3695					;
   3696	011122				BCFSDO:
   3697	011122	016001 	000000G			MOV	T.HCAD(R0),R1	;GET DATA ADDRESS
   3698	011126	022711 	000001 			CMP	#1,(R1)		;SET PAGE COUNTER?
   3699	011132	001361 				BNE	BCFILF		;NO-- ILLEGAL FUNCTION
   3700	011134	012701 	010000 			MOV	#TB.LPC,R1	;SAY SET PAGE COUNTER
   3701	011140	000415 				BR	40$		;QUEUE IT UP
   3702					;
   3703					; HERE IS DEVICE STATUS
   3704					;
   3705	011142				BCFHDS:
   3706	011142	016001 	000000G			MOV	T.HCAD(R0),R1	;GET ADDRESS
   3707	011146	032711 	000040 			BIT	#DV.EOF,(R1)	;EOF FOR LP?
   3708	011152	001751 				BEQ	BCFILF		;NO-- ILLEGAL STATUS
   3709	011154	012701 	020000 			MOV	#TB.EOF,R1	;YES-- SET FUNCTION
   3710	011160	000405 				BR	40$		;SEND IT TO QUEUE
   3711					;
   3712					; TRANSLATION RAM DATA
   3713					;
   3714	011162				BCFLDR:
   3715	011162	012701 	004000 			MOV	#TB.RMD,R1	;NOTE RAM DATA
   3716	011166	000402 				BR	40$		;SEND TO QUEUE
   3717					;
   3718					; VFU DATA
   3719					;
   3720	011170				BCFLDV:
   3721	011170	012701 	002000 			MOV	#TB.VFD,R1	;NOTE RAM DATA
   3722					;	BR	40$		;SEND TO QUEUE
   3723					;
   3724					; SPECIAL QUEUE ENTRY-- MARK BY TB.DON + FLAGS IN T.HCBC OF THREAD BLOCK
   3725					;
   3726	011174				40$:
   3727	011174	052701 	100000 			BIS	#TB.DON,R1	;FLAG BLOCK DONE TO INTERRUPT SERVICE
   3728	011200	050160 	000000G			BIS	R1,T.HCBC(R0)	;SET SPECIFIED FUNCTION
   3729					;	BR	BCFSTR		;PUT IN QUEUE
   3730					;
   3731					; QUEUE THREAD BLOCK TO LP-20
   3732					;
   3733	011204				BCFSTR:
   3734	011204					CALL	..PTLP		;SEND TO LP OR QUEUE UP
	011204	004737 	011452'			JSR	PC,..PTLP
   3735					;
   3736					; ALL DONE
   3737					;
   3738	011210				90$:
   3739	011210					RESTORE			;UN-SAVE REGISTRS
	011210	012604 				MOV	(SP)+,R4
	011212	012603 				MOV	(SP)+,R3
	011214	012601 				MOV	(SP)+,R1
   3740	011216					RETURN			; FROM ..STLP
	011216	000207 				RTS	PC
   3741					;
   3742						.DSABLE	LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 41
..SPLP	(STOP LP-20 OUTPUT)

   3744						.SBTTL	..SPLP	(STOP LP-20 OUTPUT)
   3745					;
   3746					;+
   3747					;
   3748					;	..SPLP IS CALLED TO STOP OUTPUT TO THE LP-20 IMMEDIATELY
   3749					; AND RESET THE LP-20.  THIS ROUTINE FIRST CLEARS THE LP-20
   3750					; 'GO' BIT (TO STOP OUTPUT), THEN THREADS THROUGH THE OUTPUT LIST
   3751					; AND MARKS THE THREAD BLOCKS AS DONE BY SETTING T.HCBC TO IE.ABO.
   3752					;
   3753					;	QUEUE I/O REQUESTS ARE GIVEN THE ERROR RETURN 'IE.ABO'
   3754					; (OPERATION ABORTED) WHEN THE THREAD BLOCKS ARE PROCESSED BY THE TASK.
   3755					;
   3756					; CALLED FROM TASK LEVEL
   3757					;
   3758					; CALLING SEQUENCE:
   3759					;	R2 --	POINTER TO LPTBL ENTRY FOR THIS LP
   3760					;	CALL	..SPLP
   3761					;
   3762					; EXIT CONDITONS:
   3763					;
   3764					; NO REGISTERS MODIFIED
   3765					;
   3766					;-
   3767					;
   3768	011220				..SPLP::
   3769	011220					SAVE	<R0,R1,R3>	;SAVE MISC. REGISTERS
	011220	010046 				MOV	R0,-(SP)
	011222	010146 				MOV	R1,-(SP)
	011224	010346 				MOV	R3,-(SP)
   3770	011226	022702 	000000C			CMP	#LPTBL+<L$$P20*LPSIZE>,R2 ;THIS ONE OF US?
   3771	011232	101453 				BLOS	99$		;NO-- JUST LEAVE
   3772	011234	042712 	004000 			BIC	#LP.WAT,(R2)	;NO LONGER WAITING FOR ACK
   3773	011240	005762 	000000G			TST	LPRMA(R2)	;RAM DATA LOAD IN PROGRESS??
   3774	011244	001402 				BEQ	4$		;NO-- GO ON
   3775	011246	052712 	001000 			BIS	#LP.LIP,(R2)	;YES-- FLAG TO REMOVE IT AT LPTASK
   3776	011252				4$:
   3777	011252	005762 	000000G			TST	LPITH(R2)	;I/O IN PROGRESS?
   3778	011256	001403 				BEQ	5$		;NO-- JUST GO ON
   3779	011260	042777 	000040 	000000G		BIC	#EF.LPW,@LPEVFG	;YES-- MARK TO TIME OUT LP-20 WHEN WE STOP IT
   3780	011266				5$:
   3781	011266	005062 	000000G			CLR	LPITH(R2)	;CLEAR INTERRUPT LEVEL THREAD PTR
   3782	011272	016203 	000000G			MOV	LPCSA(R2),R3	;GET EXTERNAL PAGE ADDR
   3783	011276	001405 				BEQ	6$		;NON-EX LP
   3784	011300	012713 	001102 			MOV	#RSTERR+INTENB+PARENB,(R3) ;STOP LP-20
   3785	011304	016363 	000010 	000010 		MOV	LPPCTR(R3),LPPCTR(R3) ;RESET PAGZRO, TOO
   3786	011312				6$:
   3787	011312	016201 	000000G			MOV	LPTHD(R2),R1	;GET POINTER TO CURRENT THREADED LIST
   3788					;
   3789					; LOOP THROUGH THIS LIST AND MARK THE THREAD BLOCKS AS DONE
   3790					;
   3791	011316				10$:
   3792	011316	010100 				MOV	R1,R0		;GET ADDR OF NEXT BLOCK
   3793	011320	001413 				BEQ	90$		;THAT'S THE END
   3794	011322	011001 				MOV	@R0,R1		;GET ADDR OF NEXT NEXT BLOCK
   3795	011324	052760 	040000 	000000G		BIS	#TB.ABO,T.HCBC(R0) ;MARK BLOCK AS ABORTED
   3796	011332	005760 	000000G			TST	T.HCBC(R0)	;THIS THREAD BLOCK ALREADY DONE?
   3797	011336	002767 				BLT	10$		;YES-- LEAVE IT ALONE
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 41-1
..SPLP	(STOP LP-20 OUTPUT)

   3798	011340	012760 	140361 	000000G		MOV	#TB.DON!TB.ABO!<IE.ABO&LOBYTE>,T.HCBC(R0) ;MARK AS DONE, ABORTED
   3799	011346	000763 				BR	10$		;LOOP FOR ALL THINGS IN LIST
   3800					;
   3801					; ALL DONE WITH LIST
   3802					;
   3803	011350				90$:
   3804	011350	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;SAY I/O DONE TO LP TASK (RATHER... ABORTED)
   3805	011356					CALL	..DSEV		;MAKE A SIGNIFICANT EVENT HAPPEN
	011356	004737 	000000G			JSR	PC,..DSEV
   3806	011362				99$:
   3807	011362					RESTORE			;RESTORE SAVE REGISTERS
	011362	012603 				MOV	(SP)+,R3
	011364	012601 				MOV	(SP)+,R1
	011366	012600 				MOV	(SP)+,R0
   3808	011370					RETURN			;RETURN FORM ..SPLP
	011370	000207 				RTS	PC
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 42
..AKLP	(ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)

   3810						.SBTTL	..AKLP	(ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
   3811					;
   3812					;+
   3813					;
   3814					;	..AKLP IS CALLED BY ACKNOWLDGE OUTPUUT REQUEST FROM THE -10.
   3815					; THE LP.WAT FLAG IS CLEARED, AND THE CONDITION FLAGS CHRINT, PAGZRO
   3816					; ARE RESET.  OUTPUT IS RESUMED WHEN LP TASK RUNS.
   3817					;
   3818					; CALLED AT TASK LEVEL
   3819					;
   3820					; CALLING SEQUENCE:
   3821					;	R2 --	POINTER TO LPTBL ENTRY FOR THIS LP
   3822					;
   3823					; EXIT CONDITIONS:
   3824					;
   3825					;	NO REGISTERS MODIFIED
   3826					;
   3827					;-
   3828					;
   3829	011372				..AKLP::
   3830	011372					SAVE	<R3>		;SAVE USED R'S
	011372	010346 				MOV	R3,-(SP)
   3831	011374	022702 	000000C			CMP	#LPTBL+<L$$P20*LPSIZE>,R2 ;THIS AN LP???
   3832	011400	101422 				BLOS	90$		;NO-- JUST LEAVE
   3833	011402	042712 	004000 			BIC	#LP.WAT,(R2)	;NO LONGER WAITING
   3834	011406	005762 	000000G			TST	LPITH(R2)	;LP GOING?
   3835	011412	001015 				BNE	90$		;YES-- JUST GO AWAY
   3836	011414	016203 	000000G			MOV	LPCSA(R2),R3	;GET EXT PAGE ADDR OF THIS LP
   3837	011420	001405 				BEQ	10$		;NON-EX LP-- JUST GO AWAY
   3838	011422	016363 	000010 	000010 		MOV	LPPCTR(R3),LPPCTR(R3) ;RESET PAGZRO
   3839	011430	042713 	020000 			BIC	#CHRINT,(R3)	; AND CHRINT
   3840	011434				10$:
   3841	011434	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;START LP TASK
   3842	011442					CALL	..DSEV		; . .
	011442	004737 	000000G			JSR	PC,..DSEV
   3843	011446				90$:
   3844	011446					RESTORE			; USED R'S
	011446	012603 				MOV	(SP)+,R3
   3845	011450					RETURN			; FROM ..AKLP
	011450	000207 				RTS	PC
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 43
..PTLP	(PUT BLOCK IN THREADED OUTPUT LIST)

   3847						.SBTTL	..PTLP	(PUT BLOCK IN THREADED OUTPUT LIST)
   3848					;
   3849					;+
   3850					;
   3851					;	..PTLP IS CALLED TO SEND A BUFFER TO THE LP-20. THE
   3852					; BUFFER IS EITHER OUTPUT IMMEDIATELY OR, IF THE LP IS NOT IDLE,
   3853					; ADDED TO THE END OF THIS LP'S THREADED OUTPUT LIST.
   3854					;
   3855					; CALLED FROM TASK LEVEL
   3856					;
   3857					; CALLING SEQUENCE:
   3858					;	R0 --	ADDRESS OF THREAD BLOCK FOR THIS BUFFER
   3859					;	R2 --	POINTER TO LPTBL FOR THIS LP
   3860					;	CALL	..PTLP
   3861					;
   3862					; EXIT CONDITIONS:
   3863					;
   3864					; NO REGISTERS MODIFIED
   3865					;
   3866					;-
   3867					;
   3868	011452				..PTLP::
   3869	011452					SAVE	<R1,R3>	;SAVE USED REGISTERS
	011452	010146 				MOV	R1,-(SP)
	011454	010346 				MOV	R3,-(SP)
   3870	011456	005010 				CLR	@R0		;MARK END OF LIST
   3871	011460	012762 	000012 	000000G		MOV	#LPRTRY,LPRTY(R2) ;RESET RETRY COUNTER
   3872	011466	016203 	000000G			MOV	LPCSA(R2),R3	;GET LP EXTERNAL PAGE ADDRESS
   3873	011472	001404 				BEQ	5$		;OOPS-- NON-EX LP
   3874	011474	032713 	004000 			BIT	#ONLINE,(R3)	;OFF-LINE?
   3875	011500	001006 				BNE	7$		;NO-- JUST GO ON
   3876	011502	000403 				BR	6$		;OFF-LINE-- SEND STATUS
   3877					;
   3878	011504				5$:
   3879	011504	012760 	100277 	000000G		MOV	#TB.DON!<IE.OFL&LOBYTE>,T.HCBC(R0) ;NON-EX-LP-- MARK AS DONE, ERROR
   3880	011512				6$:
   3881	011512	052712 	040000 			BIS	#LP.SST,(R2)	;TIME TO RING THE -10
   3882	011516				7$:
   3883	011516					.INH0			;;LOCK OUT QUEUE'D PROTOCOL TASK
	011516	013746 	177776 			MOV	@#PS,-(SP)
	011522	112737 	000140 	177776 		MOVB	#140,@#PS
   3884	011530	016201 	000000G			MOV	LPTHD(R2),R1	;;GET CURRENT POINTER TO THREADED LIST
   3885	011534	001405 				BEQ	20$		;;NONE-- START LP GOING
   3886					;
   3887					; LP BUSY-- MUST FIND END OF THREADED LIST AND PUT THIS BUFFER THERE
   3888					;
   3889	011536				10$:
   3890	011536	010103 				MOV	R1,R3		;;COPY ADDR OF THREAD BLOCK
   3891	011540	011301 				MOV	@R3,R1		;;GET NEXT THREAD
   3892	011542	001375 				BNE	10$		;;NOT END-- KEEP ON LOOKING
   3893	011544	010013 				MOV	R0,@R3		;;END-- STORE CURRENT THREAD BLOCK AT END
   3894	011546	000407 				BR	90$		;;ALL DONE
   3895					;
   3896					; LP IDLE-- START IT GOING ON THIS BUFFER
   3897					;
   3898	011550				20$:
   3899	011550	010062 	000000G			MOV	R0,LPTHD(R2)	;;STORE START OF THREAD
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 43-1
..PTLP	(PUT BLOCK IN THREADED OUTPUT LIST)

   3900	011554	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;;TELL LP TASK TO START LP GOING
   3901	011562					CALL	..DSEV		;; WITH A SIGNIFICANT EVENT
	011562	004737 	000000G			JSR	PC,..DSEV
   3902					;
   3903					; ALL DONE
   3904					;
   3905	011566				90$:
   3906	011566					.ENB0			;RE-ENABLE IRPS
	011566	004737 	000000G			JSR	PC,..ENB0
   3907	011572					RESTORE			;RESTORE SAVED REGISTERS
	011572	012603 				MOV	(SP)+,R3
	011574	012601 				MOV	(SP)+,R1
   3908	011576					RETURN			;RETURN FROM ..PTLP
	011576	000207 				RTS	PC
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 44
..DOLP	(INITIATE LP-20 TRANSFER)

   3910						.SBTTL	..DOLP	(INITIATE LP-20 TRANSFER)
   3911					;
   3912					;+
   3913					;
   3914					;	..DOLP IS CALLED TO START AN LP GOING ON A SPECIFIED BUFFER.
   3915					; THE DEVICE RGISTERS ARE SET UP AND 'GO' IS SET TO START THE TRANSFER.
   3916					;
   3917					;	IF THE THREAD SPECIFIED IS ZERO, NOTHING IS DONE AND THE
   3918					; LP IS LEFT IDLE.
   3919					;
   3920					;	ENTER AT ..DOL1 TO OUTPUT NEXT BUFFER, UNLESS LP.MCH IS SET,
   3921					; IN WHICH CASE THE CURRENT BUFFER IS OUTPUT.  THIS IS USUALLY ONLY
   3922					; CALLED WHEN 'DONE' IS SET.
   3923					;
   3924					; CALLED AT INTERRUPT LEVEL (OR WITH INTERRUPTS DISABLED)
   3925					;
   3926					; CALLING SEQUENCE:
   3927					;	R0 --	ADDR OF THREAD BLOCK TO OUTPUT (ZERO IF END)
   3928					;	R2 --	ADDR OF LPTBL ENTRY FOR THIS LP
   3929					;	R3 --	EXTERNAL PAGE ADDRESS FOR THIS LP
   3930					;
   3931					; EXIT CONDITIONS:
   3932					;	R0 --	ADDR OF CURRENT THREAD BLOCK
   3933					;
   3934					; NO OTHER REGISTERS MODIFIED
   3935					;
   3936					;-
   3937					;
   3938						.ENABLE	LSB
   3939	011600				..DOL1::
   3940	011600	032712 	001000 			BIT	#LP.LIP,(R2)	;;;LOAD SUPPOSED TO BE IN PROGRESS?
   3941	011604	001020 				BNE	19$		;;;YES-- GO BACK TO TASK
   3942	011606	032712 	010000 			BIT	#LP.MCH,(R2)	;;;MULTI-CHARACTER OPERATION?
   3943	011612	001417 				BEQ	20$		;;;NO-- GET NEXT BUFFER
   3944									;;;YES-- GET (CONTINUE) CURRENT BUFFER
   3945	011614				..DOLP::
   3946	011614				10$:
   3947	011614	042712 	114000 			BIC	#LP.WAT!LP.MCH!LP.HNG,(R2) ;;;NOT WAITING, AND NOT MULTI-CHAR-ING
   3948	011620	010062 	000000G			MOV	R0,LPITH(R2)	;;;SAVE CURRENT BUFFER AS OUR INT-LEVEL BUFFER
   3949	011624	001463 				BEQ	90$		;;;GIVE UP IF END
   3950	011626	016063 	000000G	000006 		MOV	T.HCBC(R0),LPBCTR(R3) ;;;SAVE BYTE COUNT FOR LP (WILL NEG LATER)
   3951	011634	003020 				BGT	50$		;;;NOT DONE-- START OUTPUT
   3952					;
   3953	011636	032760 	036000 	000000G		BIT	#TB.SFN,T.HCBC(R0) ;;;SPECIAL FUNCTION?
   3954	011644	001402 				BEQ	20$		;;;NO-- JUST SET DONE
   3955	011646				19$:
   3956	011646	005000 				CLR	R0		;;;YES-- DON'T GET NEXT THREAD BLOCK
   3957	011650	000404 				BR	30$		;;;AND STOP I/O, REQUEST TASK LEVEL CODE
   3958					;
   3959					; THIS THREAD BLOCK DONE-- MARK IT BY -VE T.HCBC, SET I/O DONE
   3960					;  EVENT FLAG, AND START NEXT BUFFER.
   3961					;
   3962	011652				20$:
   3963	011652	012760 	100001 	000000G		MOV	#TB.DON!<IS.SUC&LOBYTE>,T.HCBC(R0) ;;;NOTE SUCCESS HERE
   3964	011660	011000 				MOV	@R0,R0		;;;GET ADDR OF NEXT BUFFER
   3965					;
   3966					; SET I/O DONE, GO ON TO NEXT THREAD BLOCK (ADDR IN R0)
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 44-1
..DOLP	(INITIATE LP-20 TRANSFER)

   3967					;
   3968	011662				30$:
   3969	011662	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;;;SET LP I/O DONE EVENT FLAGE
   3970	011670					CALL	..DSEV		;;;MAKE A SIGNIFICANT EVENT
	011670	004737 	000000G			JSR	PC,..DSEV
   3971	011674	000747 				BR	10$		;;;DO NEXT BUFFER
   3972					;
   3973					; SET UP -VE BYTE COUNT AND EXTENDED MEMORY ADDRESS BITS
   3974					;
   3975	011676				50$:
   3976	011676	016063 	000000G	000004 		MOV	T.HCAD(R0),LPBSAD(R3) ;;;SAVE PHYSICAL ADDR FOR LP
   3977	011704	005463 	000006 			NEG	LPBCTR(R3)	;;;MAKE -VE # BYTES TO SEND
   3978	011710	042713 	000060 			BIC	#BUSA17+BUSA16,(R3) ;;;CLEAR EXTENDED MEMORY ADDR BITS
   3979	011714	005760 	000000G			TST	T.HBCT(R0)	;;;THIS QUEUE I/O REQUEST?
   3980	011720	001023 				BNE	59$		;;;NO-- ADDRESS IS IN LOW CORE
   3981	011722	116062 	177775 	000000G		MOVB	T.HVFC(R0),LPMCB(R2) ;;;SET TO PRINT VERTICAL FORMAT CHARACTER
   3982	011730	001415 				BEQ	58$		;;;NONE-- JUST START THE LP
   3983	011732	105060 	177775 			CLRB	T.HVFC(R0)	;;;YES-- CLEAR IT NOW
   3984	011736	012763 	000000G	000004 		MOV	#LPMCB,LPBSAD(R3) ;;;YES-- POINT TO THE FORMAT CHARACTER
   3985	011744	060263 	000004 			ADD	R2,LPBSAD(R3)	;;; FOR THIS LP
   3986	011750	012763 	177777 	000006 		MOV	#-1,LPBCTR(R3)	;;;ONLY 1 CHARACTER
   3987	011756	052712 	010000 			BIS	#LP.MCH,(R2)	;;;NOTE THAT WE ARE WORKING FROM LPMCB
   3988	011762	000402 				BR	59$		;;;START THE LP GOING
   3989					;
   3990	011764				58$:
   3991	011764	156013 	177774 			BISB	T.HEMA(R0),(R3)	;;;SET EXTENDED MEMORY BITS
   3992					;
   3993					; SET INTENB, PARENB, AND GO TO START LP GOING ON THIS BUFFER
   3994					;
   3995	011770				59$:
   3996	011770	052713 	000103 			BIS	#INTENB+PARENB+GO,(R3) ;;;START LP GOING
   3997					;
   3998					; ALL DONE-- RETURN
   3999					;
   4000	011774				90$:
   4001	011774					RETURN			;;;RETURN FROM ..DOLP/..DOL1
	011774	000207 				RTS	PC
   4002						.DSABLE	LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 20:48  PAGE 45
..DOLP	(INITIATE LP-20 TRANSFER)

   4004
   4005						.TITLE	CRDRV	(CD-11 DRIVER FOR RSX10F)
   4006						.SBTTL	TITLE PAGE
   4007						.IDENT	/001000/
   4008					;
   4009					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   4010					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4011					;			ALL RIGHTS RESERVED.
   4012					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4013					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4014					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4015					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4016					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4017					;
   4018					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4019					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4020					;       CORPORATION.
   4021					;
   4022					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4023					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4024					;
   4025					;		MODULE: COMMON DEFINITIONS
   4026					;
   4027					;		VERSION: 01-00
   4028					;
   4029					;		AUTHOR: TOM PORCHER
   4030					;
   4031					;		DATE: 25-SEP-75
   4032					;
   4033					;
   4034					;	THIS MODULE CONTAINS:
   4035					;
   4036					;	1) COMMON PARAMETERS AND MACROS
   4037					;
   4038					;	2) CD-11 DEVICE REGISTER DEFINITIONS
   4039					;
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 46
COMMON PARAMETERS AND MACROS

   4041						.SBTTL	COMMON PARAMETERS AND MACROS
   4042					;
   4043					; MISC. MCALLS
   4044					;
   4045					.MCALL MRKT$,SPRA$S,SVTK$S,WTLO$S,WTSE$S,WSIG$S
   4046					.MCALL DIR$,$DEF,CALL,RETURN,.INH,.ENB,PUSH,POP,.STKM
   4047	011776					$DEF
   4048						.ENABLE	AMA
   4049						.LIST	MEB
   4050					;
   4051					; PARAMETERS
   4052					;
   4053		000001 			C$$D11=	1			;ONLY 1 CD-11
   4054					;
   4055					; EVENT FLAGS
   4056					;
   4057		000001 			E.FCRC= 1			;CD-11 MARK-TIME REQUEST
   4058		000001 			 EF.CRC=BIT0
   4059		000002 			E.FCRD=	2			;I/O DONE FROM INTERRUPT LEVEL
   4060		000002 			 EF.CRD=BIT1
   4061		000003 			E.FCRS=	3			;BUFFER AVAILABLE FOR STATUS
   4062		000004 			 EF.CRS=BIT2
   4063		000004 			E.FCRB=	4			;DATA BUFFER AVAILABLE
   4064		000010 			 EF.CRB=BIT3
   4065					;
   4066					;
   4067		000074 			.CYLTM=60.
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 47
CD-11 DEVICE REGISTER BIT DEFINITIONS

   4069						.SBTTL	CD-11 DEVICE REGISTER BIT DEFINITIONS
   4070					;
   4071					;
   4072					;CDST==	177160			;CONTROL/STATUS REGISTER
   4073		100000 				CDSERR=	BIT15
   4074		040000 				CDSRCK=	BIT14
   4075		020000 				CDSEOF=	BIT13
   4076		010000 				CDSOFL=	BIT12
   4077		004000 				CDSDER=	BIT11
   4078		002000 				CDSDLT=	BIT10
   4079		001000 				CDSNXM=	BIT9
   4080		000400 				CDSPWC=	BIT8
   4081		000200 				CDSRDY=	BIT7
   4082		000100 				CDSIEN=	BIT6
   4083		000040 				CDSB17=	BIT5
   4084		000020 				CDSB16=	BIT4
   4085		000010 				CDSTOL=	BIT3
   4086		000004 				CDSHEM=	BIT2
   4087		000002 				CDSPAK=	BIT1
   4088		000001 				CDSRED=	BIT0
   4089					;CDCC==	177162			;COLUMN COUNT REGISTER
   4090					;CDBA==	177164			;BUS ADDRESS BITS 15-0
   4091					;CDDB==	177166			;DATA BUFFER REGISTER
   4092					;AFTER DATA TRANSFERS (CDSRDY= 1):
   4093		040000 				CDBRCK=	BIT14
   4094		020000 				CDBPCK=	BIT13
   4095		010000 				CDBSCK=	BIT12
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 48
CD-11 DEVICE REGISTER BIT DEFINITIONS

   4097
   4098						.SBTTL	CD-11 DRIVER COMMON DATA MODULE
   4099					;
   4100					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   4101					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4102					;			ALL RIGHTS RESERVED.
   4103					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4104					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4105					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4106					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4107					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4108					;
   4109					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4110					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4111					;       CORPORATION.
   4112					;
   4113					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4114					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4115					;
   4116					;		MODULE: CD-11 DRIVER COMMON DATA
   4117					;
   4118					;		VERSION: 01-00
   4119					;
   4120					;		AUTHOR: TOM PORCHER
   4121					;
   4122					;		DATE: 25-AUG-75
   4123					;
   4124					;
   4125					;	THIS MODULE CONTAINS:
   4126					;
   4127					;	1) COMMON DATABASE DEFINITIONS
   4128					;
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 49
COMMON DATABASE DEFINITIONS

   4130						.SBTTL	COMMON DATABASE DEFINITIONS
   4131					;
   4132					;
   4133					; CR TASK STACK HEADER
   4134					;
   4135	011776				CRHD::	.STKM	0,0,0,0,0,0,0,CRINI,174000,CRSTK
	012044	000000 	000000 	000000 		.WORD	0,0,0,0
	012052	000000
	012072	174000 	012360'	012256'		.WORD	174000,CRINI,CRSTK
	012126	000005 				.WORD	5
	012130	000000G				.WORD	TTPEN
	012132	000000 				.WORD	0
	012134	000000 				.WORD	0
	012136	000000 				.WORD	0
	012140	000000 				.WORD	0
	012142	000000 				.WORD	0
	012144	000000 				.WORD	0
	012146	000000 				.WORD	0
	012150	000000 				.WORD	0
	012152	000000 				.WORD	0
	012154	000000 				.WORD	0
	012256	000000 				.WORD	0
	012260	000000 				.WORD	0
	012262	000000 				.WORD	0
	012264	000000 				.WORD	0
	012266	000000 				.WORD	0
	012270	000000 				.WORD	0
	012272	012360'				.WORD	CRINI
	012274	174000 				.WORD	174000
   4136					;
   4137									;STATUS BITS:
   4138		100000 				CR.HNG=	BIT15		;CR IS HUNG, I.E. NO INPUT HAS OCCURED
   4139									; IN 10 SECONDS.  SET AND CHECKED BY
   4140									; MARK-TIME SERVICE, CLEARED BY I/O
   4141									; DONE AT INTERRUPT.
   4142		040000 				CR.SST=	BIT14		;A CHANGE IN DEVICE STATUS HAS OCCURED,
   4143									; OR THE -10 HAS REQUESTED THE STATUS OF
   4144									; THE CR.
   4145		020000 				CR.IOP=	BIT13		;I/O IN PROGRESS. SET WHEN READ CARD STARTED,
   4146									; CLEARED WHEN DONE INTERRUPT OCCURS.
   4147		010000 				CR.IOD=	BIT12		;I/O DONE FROM INTERRUPT LEVEL. SET WHEN A
   4148									; DATA BUFFER IS READY TO BE SENT TO THE -10.
   4149		004000 				CR.ACK=	BIT11		;ACKNOWLEDGE RECEIVED.  READ NEXT CARD.
   4150									; SET WHEN ACK RECEIVED FROM -10 (..AKCR).
   4151		002000 				CR.RHN=	BIT10		;READER HUNG DURING READ. SET BY MKT ROUTINE
   4152									; TESTED AND CLEARED BY SSTSCR
   4153		001000 				CR.NXD=	BIT9		;NON-EX CD-11. SET BY INITCR, CHECKED
   4154									; BEFORE TRANSFER STARTED.
   4155		000400 				CR.NSF=	BIT8		;NOT STACKER FULL.  SET WHEN ANY OTHER ERROR
   4156									; CONDITION IS SET.
   4157					;
   4158					; DIRECTIVE PARAMETER BLOCKS
   4159					;
   4160	012276				CRMRKT:	MRKT$	E.FCRC,10.*.CYLTM,10.*.CYLTM ;MARK-TIME REQUEST FOR 10 SECONDS
	012276	   027 	   005 			.BYTE	23.,5
	012300	000001 				.WORD	E.FCRC
	012302	001130 				.WORD	10.*.CYLTM
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 49-1
COMMON DATABASE DEFINITIONS

	012304	001130 				.WORD	10.*.CYLTM
	012306	000000 				.WORD
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 50
COMMON DATABASE DEFINITIONS

   4162
   4163						.SBTTL	CD-11 DRIVER TASK MODULE
   4164					;
   4165					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   4166					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4167					;			ALL RIGHTS RESERVED.
   4168					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4169					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4170					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4171					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4172					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4173					;
   4174					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4175					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4176					;       CORPORATION.
   4177					;
   4178					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4179					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4180					;
   4181					;		MODULE: CD-11 DRIVER TASK
   4182					;
   4183					;		VERSION: 14-45
   4184					;
   4185					;		AUTHOR: TOM PORCHER
   4186					;
   4187					;		DATE: 25-AUG-75
   4188					;
   4189					;
   4190					;	THIS MODULE CONTAINS:
   4191					;
   4192					;	1) TASK LEVEL SERVICE FOR CD-11
   4193					;
   4194					;   TCO 4.1.1105	11-MAR-80	R. BELANGER	CHANGE "EF.PR1" RECOGNITION
   4195					;   TCO 5.1566		12-OCT-81	S. LEAPLINE	CLEAR CREXP IF DEVICE DOES NOT EXIST
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 51
TASK INITIALIZATION

   4197						.SBTTL	TASK INITIALIZATION
   4198					;
   4199					; SST VECTOR TABLE
   4200					;
   4201	012310	012312'			CRSSTV:	.WORD	CRTRP4		;WHERE TO GO ON TRAP TO 4
   4202					;
   4203					; HERE ON TRAP TO 4, HOPEFULLY JUST NON-EX CR
   4204					;
   4205	012312	021627 	013026'		CRTRP4:	CMP	(SP),#CRDINT	;FROM MARK-TIME?
   4206	012316	001404 				BEQ	10$		;YES-- OK
   4207	012320	021627 	013556'			CMP	(SP),#CRDCLR	;OR FROM INIT?
   4208	012324	001401 				BEQ	10$		;YES-- ALSO OK
   4209	012326	000004 				IOT			;***** NO, NOT OUR T04 *****
   4210					;
   4211	012330	005037 	000000G		10$:	CLR	CREXP		; [5.1566] CLEAR THE EXTERNAL PAGE ADDRESS
   4212	012334	052737 	001000 	000000G		BIS	#CR.NXD,CRSTS	;SAY NON-EX CR
   4213	012342	052766 	000001 	000002 		BIS	#BIT0,2(SP)	;SET THE CARRY TO THE SST
   4214	012350	000002 				RTI			;RETURN TO INTERRPUTED ROUTINE
   4215					;
   4216					; HERE ON POWER-UP AST
   4217					;
   4218	012352				CRPWUP:	CALL	INITCR		;RESET THE CR
	012352	004737 	013542'			JSR	PC,INITCR
   4219	012356	000002 				RTI			;RETURN FROM AST
   4220					;
   4221					; HERE TO START CR TASK
   4222					;
   4223	012360	013737 	000000G	000000G	CRINI:	MOV	.CRTSK,CREVFG	;GET ADDRESS OF OUR TASK'S ENTRY
   4224	012366	062737 	000020 	000000G		ADD	#A.EF,CREVFG	;MAKE THAT ADDRESS OF OUR EVENT FLAGS
   4225	012374	052777 	000014 	000000G		BIS	#EF.CRB!EF.CRS,@CREVFG ;SAY OUR BUFFERS ARE AVAILABLE
   4226	012402					DIR$	#CRMRKT		;SETUP FOR 10-SECOND MARK-TIME'S
	012402	012746 	012276'			MOV	#CRMRKT,-(SP)
	012406	104375 				EMT	375
   4227	012410					SVTK$S	#CRSSTV,#1	;SETUP FOR TRAP-TO-4 RECOGNITION
	012410	012746 	000001 			MOV	#1,-(SP)
	012414	012746 	012310'			MOV	#CRSSTV,-(SP)
	012420	012746 				MOV	(PC)+,-(SP)
	012422	   071 	   003 			.BYTE	57.,3
	012424	104375 				EMT	375
   4228	012426					SPRA$S	#CRPWUP		;SETUP FOR POWER-UP AST
	012426	012746 	012352'			MOV	#CRPWUP,-(SP)
	012432	012746 				MOV	(PC)+,-(SP)
	012434	   155 	   002 			.BYTE	109.,2
	012436	104375 				EMT	375
   4229	012440					CALL	INITCR		;INITIALIZE CD-11 AND TABLES
	012440	004737 	013542'			JSR	PC,INITCR
   4230					;	BR	CRLOOP		;FALL INTO PROCESSING LOOP
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 52
CRLOOP (MAIN PROCESSING LOOP)

   4232						.SBTTL	CRLOOP (MAIN PROCESSING LOOP)
   4233					;
   4234					; WAIT  FOR EVENT FLAGS EF.CRC (10 SEC MARK-TIME), EF.CRD (I/O DONE).
   4235					;
   4236	012444				CRLOOP:	WTLO$S	1,#EF.CRC!EF.CRD ;WAIT FOR FLAGS
	012444	012746 	000003 			MOV	#EF.CRC!EF.CRD,-(SP)
	012450	012746 	000001 			MOV	#1,-(SP)
	012454	012746 				MOV	(PC)+,-(SP)
	012456	   053 	   003 			.BYTE	43.,3
	012460	104375 				EMT	375
   4237					;
   4238	012462					.INH			;;;A FLAG WAS SET-- LOCK OUT INTERRUPTS
	012462	013746 	177776 			MOV	PS,-(SP)
	012466	112737 	000340 	177776 		MOVB	#PR7,@#PS	;;
   4239	012474	017737 	000000G	000000G		MOV	@CREVFG,CRCEVF	;;;GET OUR CURRENT EVENT FLAGS
   4240	012502	042777 	000003 	000000G		BIC	#EF.CRC!EF.CRD,@CREVFG ;;;CLEAR THE FLAGS WE WAITED FOR
   4241	012510					.ENB			;INTERRUPTS: ON!
	012510	012637 	177776 			MOV	(SP)+,@#PS	;;
   4242	012514	005737 	000000G			TST	.CRPFL		;POWER FAIL?
   4243	012520	001404 				BEQ	10$		;NO -- FORGET IT
   4244	012522					CALL	INITCR		;YES -- INIT CR
	012522	004737 	013542'			JSR	PC,INITCR
   4245	012526	005037 	000000G			CLR	.CRPFL
   4246	012532				10$:
   4247					;
   4248					; SEE IF THIS IS EF.CRD (I/O DONE), AND FIND OUT WHY IT WAS SET.
   4249					;
   4250	012532	032737 	000002 	000000G	CRIOD:	BIT	#EF.CRD,CRCEVF	;THIS EF.CRD?
   4251	012540	001516 				BEQ	90$		;NO-- TRY FOR MARK-TIME
   4252					;
   4253					; SEE IF A BUFFER IS READY TO BE SENT TO THE -10 (CR.IOD SET BY INTERRUPT SERVICE)
   4254					;
   4255	012542	032737 	010000 	000000G		BIT	#CR.IOD,CRSTS	;WE FINISH A TRANSFER?
   4256	012550	001430 				BEQ	20$		;NO-- GO ON
   4257	012552	012700 	000000G			MOV	#CRBUFF,R0	;YES-- GET ADDRESS OF BUFFER
   4258					;
   4259					; WE MUST SEND A DATA BUFFER TO THE -10.  SET UP FOR ..STIN:
   4260					;	R0 --	ADDRESS OF BUFFER. FIRST WORD IS (LOW BYTE) BYTE COUNT
   4261					;		OF BUFFER (NOT INCLUDING HEADER WORD), (HIGH BYTE) UNIT #.
   4262					;	R1 --	BIT15+ FUNCTION CODE (BC.STR-- STRING DATA)
   4263					;	R2 --	EVENT FLAG TO SET WHEN DONE
   4264					;	R3 --	DEVICE CODE (D.CCDR)
   4265					;
   4266	012556	105040 				CLRB	-(R0)		;HIGH BYTE HEADER: UNIT # (ALWAYS 0)
   4267	012560	112740 	000000G			MOVB	#CRBFLN,-(R0)	;LOW BYTE HEADER: SIZE OF BUFFER
   4268	012564	012701 	100000G			MOV	#BIT15+BC.STR,R1 ;FUNCTION CODE: STRING DATA (INDIRECT FLAVOR)
   4269	012570	012702 	000004 			MOV	#E.FCRB,R2	;EVENT FLAG TO SET WHEN DONE
   4270	012574	012703 	000000G			MOV	#D.CCDR,R3	;DEVICE CODE: CDR
   4271	012600	042777 	000010 	000000G		BIC	#EF.CRB,@CREVFG	;ASSUME SUCCESS
   4272	012606					CALL	..STIN		;SEND TO -10
	012606	004737 	000000G			JSR	PC,..STIN
   4273	012612	103404 				BCS	10$		;GIVE UP-- PRIMARY PROTOCOL (DDT)
   4274	012614	042737 	112400 	000000G		BIC	#CR.IOD!CR.HNG!CR.RHN!CR.NSF,CRSTS ;OK-- NO LONGER BUFFER TO SEND
   4275	012622	000403 				BR	20$		;GO ON
   4276					;
   4277	012624	052777 	000010 	000000G	10$:	BIS	#EF.CRB,@CREVFG	;..STIN FAILED-- BUFFER STILL AVAILABLE
   4278					;
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 52-1
CRLOOP (MAIN PROCESSING LOOP)

   4279					; SEE IF STATUS IS TO BE SENT TO -10, EITHER BECAUSE OF A CHANGE IN
   4280					;  DEVICE STATUS OR A REQUEST FROM THE -10.
   4281					;
   4282	012632	032737 	040000 	000000G	20$:	BIT	#CR.SST,CRSTS	;TIME TO SEND DEVICE STATUS?
   4283	012640	001402 				BEQ	30$		;NO-- GO ON
   4284	012642					CALL	SSTSCR		;YES-- SEND SUCH TO -10
	012642	004737 	013136'			JSR	PC,SSTSCR
   4285					;
   4286					; SEE IF -10 WANTS US TO READ NEXT CARD, BY CR.ACK SET.
   4287					;
   4288	012646	032737 	004000 	000000G	30$:	BIT	#CR.ACK,CRSTS	;-10 WANT A CARD?
   4289	012654	001450 				BEQ	90$		;NO-- ALL DONE
   4290	012656	032737 	030000 	000000G		BIT	#CR.IOP!CR.IOD,CRSTS ;STILL I/O IN PROGRESS?
   4291	012664	001044 				BNE	90$		;YES-- COME BACK LATER WHEN WE ARE DONE
   4292	012666	042737 	106000 	000000G		BIC	#CR.ACK!CR.HNG!CR.RHN,CRSTS ;YES-- NO LONGER WANTING
   4293	012674	032737 	001000 	000000G		BIT	#CR.NXD,CRSTS	;THIS NON-EX CD-11?
   4294	012702	001016 				BNE	32$		;YES-- JUST SEND STATUS
   4295	012704	032777 	000010 	000000G	34$:	BIT	#EF.CRB,@CREVFG	;BUFFER AVAILABLE TO US YET?
   4296	012712	001006 				BNE	31$		;YES-- ALL OK
   4297	012714					WSIG$S			;WAIT FOR SOMETHING TO HAPPEN
	012714	012746 				MOV	(PC)+,-(SP)
	012716	   061 	   001 			.BYTE	49.,1
	012720	104375 				EMT	375
   4298	012722	005737 	000002G			TST	.COMEF+2	; [4.1.1105] IS PRIMARY PROTOCOL STILL RUNNING ?
   4299	012726	100766 				BMI	34$		; [4.1.1105] YES, SEE IF BUFFER IS NOW FREE.
   4300					;
   4301	012730	032737 	010000 	000000G	31$:	BIT	#CDSOFL,@#CDST	;CD-11 OFF-LINE?
   4302	012736	001403 				BEQ	33$		;NO-- LET'S START TRANSFER
   4303	012740				32$:	CALL	SSTSCR		;YES-- TELL -10
	012740	004737 	013136'			JSR	PC,SSTSCR
   4304	012744	000414 				BR	90$		; AND GO AWAY FOR NOW
   4305					;
   4306					; START TRNSFER OF CARD TO CRBUFF
   4307					;
   4308	012746	052737 	020000 	000000G	33$:	BIS	#CR.IOP,CRSTS	;SAY I/O NOW IN PROGRESS
   4309	012754	012737 	000000C	000000G		MOV	#-<CRBFLN/2>,@#CDCC ;INDICATE TO READ 80. COLUMNS
   4310	012762	012737 	000000G	000000G		MOV	#CRBUFF,@#CDBA	; INTO CRBUFF
   4311	012770	012737 	000101 	000000G		MOV	#CDSIEN!CDSRED,@#CDST ;START CARD GOING
   4312					;
   4313					; ALL DONE WITH EF.CRD
   4314					;
   4315	012776				90$:
   4316					;
   4317					; CHECK FOR MARK-TIME REQUEST (EF.CRC SET), THEN DO HUNG CHECK IF SO.
   4318					;
   4319						.ENABLE LSB
   4320	012776	032737 	000001 	000000G	CRMKT:	BIT	#EF.CRC,CRCEVF	;MARK-TIME REQUEST EVENT FLAG SET?
   4321	013004	001452 				BEQ	90$		;NO-- GO ON
   4322	013006	032737 	001000 	000000G		BIT	#CR.NXD,CRSTS	;NON-EX CR?
   4323	013014	001011 				BNE	9$		;YES-- SKIP INT-ENB STUFF
   4324	013016	000241 				CLC			;IN CASE OF TRAP
   4325	013020	032737 	000100 	000000G		BIT	#CDSIEN,@#CDST	;INT-ENB STILL SET?
   4326	013026	103404 			CRDINT:	BCS	9$		;NON-EX CR-- GO ON
   4327	013030	001003 				BNE	9$		;YES-- SKIP THE SET
   4328	013032	052737 	000100 	000000G		BIS	#CDSIEN,@#CDST	;YES-- MAKE SURE WE STILL HAVE INT-ENB
   4329	013040	032737 	074000 	000000G	9$:	BIT	#CR.SST!CR.IOD!CR.ACK!CR.IOP,CRSTS ;YES-- STUFF FOR US TO DO?
   4330	013046	001426 				BEQ	30$		;NO-- IDLE-- CLEAR HUNG FLAG
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 52-2
CRLOOP (MAIN PROCESSING LOOP)

   4331	013050	032737 	100000 	000000G		BIT	#CR.HNG,CRSTS	;WE BEEN HERE WITHIN 10 SECONDS?
   4332	013056	001416 				BEQ	20$		;NO-- SET HUNG FLAG SO WE WILL IN 10 SEC
   4333	013060	032737 	020000 	000000G		BIT	#CR.IOP,CRSTS	;YES-- WAS I/O IN PROGRESS
   4334	013066	001407 				BEQ	10$		;NO-- JUST PROCESS OTHER FLAGS
   4335	013070	052737 	042000 	000000G		BIS	#CR.RHN!CR.SST,CRSTS ;YES-- SAY READER HUNG
   4336	013076	005237 	000000G			INC	CRHUNG		;COUNT # TIMES HUNG
   4337	013102					CALL	INITCR		;RESET THE CD-11
	013102	004737 	013542'			JSR	PC,INITCR
   4338					;
   4339	013106	052777 	000002 	000000G	10$:	BIS	#EF.CRD,@CREVFG	;SAY TO LOOK AT THE FLAGS AGAIN
   4340					;
   4341	013114	052737 	100000 	000000G	20$:	BIS	#CR.HNG,CRSTS	;FLAG TO CHECK THIS AGAIN IN 10 SECONDS
   4342	013122	000403 				BR	90$		;ALL DONE
   4343					;
   4344	013124	042737 	102000 	000000G	30$:	BIC	#CR.HNG!CR.RHN,CRSTS	;NOTHING TO DO-- DON'T SAY WE ARE HUNG
   4345					;
   4346					; ALL DONE WITH EF.CRC
   4347					;
   4348	013132	000137 	012444'		90$:	JMP	CRLOOP		;BACK TO MAIN LOOP
   4349						.DSABLE	LSB
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 53
SSTSCR	(SEND CD-11 STATUS TO -10)

   4351						.SBTTL	SSTSCR	(SEND CD-11 STATUS TO -10)
   4352					;
   4353					;+
   4354					;
   4355					;	SSTSCR IS CALLED WHEN CR.SST IS SET, EITHER BY A CHANGE IN HARDWARE
   4356					; STATUS, OR ON REQUEST FROM THE -10.
   4357					;
   4358					;	THE STATUS PACKET IS ASSEMBLED INTO CRSTBK.  THE FORMAT OF THIS BLOCK
   4359					; IS AS FOLLOWS:
   4360					;
   4361					; WORD	0	STANDARD BITS (DV.XXX)
   4362					;	1	DEVICE DEPENDENT BITS (DD.XXX)
   4363					;	2	(HIGH BYTE) # BYTES OF DEVICE DEPENDENT INFO (ALWAYS 0)
   4364					;		(LOW BYTE) # BYTES OF DEVICE REGISTERS (ALWAYS 8.)
   4365					; CD-11 DEVICE REGISTERS
   4366					;	3	CDST
   4367					;	4	CDCC
   4368					;	5	CDBA
   4369					;	6	CDDB
   4370					;
   4371					; THE FOLLOWING BITS ARE USED IN THE STATUS WORDS:
   4372					;
   4373					;	DV.NXD	NON-EX DEVICE
   4374					;	DV.OFL	OFF-LINE
   4375					;	DV.OIR	HARD ERROR (DD.RCK, DD.PCK, DD.SCK)
   4376					;	DV.IOP	I/O IN PROGRESS (READING A CARD)
   4377					;	DV.EOF	E-O-F BUTTON PUSHED
   4378					;	DV.LOG	ERROR LOGGING REQUIRED
   4379					;	DV.HNG	DEVICE HUNG
   4380					;
   4381					;	DD.RCK	READ CHECK
   4382					;	DD.PCK	PICK CHECK
   4383					;	DD.SCK	STACK CHECK
   4384					;	DD.HEM	HOPPER EMPTY
   4385					;	DD.SFL	STACKER FULL
   4386					;
   4387					;-
   4388					;
   4389	013136	042737 	040000 	000000G	SSTSCR:	BIC	#CR.SST,CRSTS	;SAY STATUS SENT ALREADY
   4390	013144	032777 	000004 	000000G	60$:	BIT	#EF.CRS,@CREVFG	;IS STATUS BUFFER AVAILABLE?
   4391	013152	001006 				BNE	10$		;YES-- ASSEMBLE STATUS
   4392	013154					WSIG$S			;NO-- WAIT FOR IT TO BE THERE
	013154	012746 				MOV	(PC)+,-(SP)
	013156	   061 	   001 			.BYTE	49.,1
	013160	104375 				EMT	375
   4393	013162	005737 	000002G			TST	.COMEF+2	; [4.1.1105] IF PRIMARY PROTOCOL IS STILL RUNNING
   4394	013166	100766 				BMI	60$		; [4.1.1105] THEN CHECK IF STILL GOING
   4395					;
   4396					; ASSEMBLE STATUS INTO CRSTBK+0 CRSTBK+2
   4397					;
   4398	013170	012700 	000004G		10$:	MOV	#CRSTBK+4,R0	;GET ADDRESS OF STATUS BLOCK
   4399	013174	005010 				CLR	(R0)		;CLEAR BYTE COUNT WORD(ASSUME NON-EX DEV)
   4400	013176	005040 				CLR	-(R0)		; AND SECOND WORD OF STATUS
   4401	013200	010001 				MOV	R0,R1		;SAVE ADDR OF SECOND WORD
   4402	013202	005040 				CLR	-(R0)		; AND CLEAR FIRST WORD, R0 POINTS TO IT
   4403					;
   4404	013204	032737 	001000 	000000G		BIT	#CR.NXD,CRSTS	;NON-EX DEVICE?
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 53-1
SSTSCR	(SEND CD-11 STATUS TO -10)

   4405	013212	001403 				BEQ	101$		;NO-- GET REAL STATUS
   4406	013214	052710 	000007 			BIS	#DV.NXD!DV.OFL!DV.OIR,(R0) ;YES-- SAY NOT THERE
   4407	013220	000522 				BR	50$		;SEND THIS STATUS
   4408					;
   4409	013222	013703 	000000G		101$:	MOV	@#CDST,R3	;COPY DEVICE STATUS
   4410	013226	032703 	010000 			BIT	#CDSOFL,R3	;CD-11 OFF-LINE?
   4411	013232	001402 				BEQ	11$		;NO-- GO ON
   4412	013234	052710 	000006 			BIS	#DV.OFL!DV.OIR,(R0) ;YES-- SAY SO
   4413					;
   4414	013240	032737 	030000 	000000G	11$:	BIT	#CR.IOP!CR.IOD,CRSTS ;I/O STILL IN PROGRESS?
   4415	013246	001402 				BEQ	12$		;NO
   4416	013250	052710 	000020 			BIS	#DV.IOP,(R0)	;YES-- SAY SO
   4417					;
   4418	013254	032703 	020000 		12$:	BIT	#CDSEOF,R3	;E-O-F BUTTON PUSHED?
   4419	013260	001402 				BEQ	13$		;NO-- GO ON
   4420	013262	052710 	000040 			BIS	#DV.EOF,(R0)	;YES-- SAY EOF
   4421					;
   4422	013266	032737 	002000 	000000G	13$:	BIT	#CR.RHN,CRSTS	;READER HUNG?
   4423	013274	001402 				BEQ	14$		;NO-- GO ON
   4424	013276	052710 	001104 			BIS	#DV.HNG!DV.OIR!DV.LOG,(R0) ;YES-- SAY HUNG
   4425					;
   4426	013302	032703 	003000 		14$:	BIT	#CDSDLT!CDSNXM,R3 ;FATAL ERROR (DATA LATE, NXM)?
   4427	013306	001402 				BEQ	15$		;NO-- GO ON
   4428	013310	052710 	000300 			BIS	#DV.URE!DV.LOG,(R0) ;YES-- SAY SO
   4429					;
   4430	013314	032703 	000200 		15$:	BIT	#CDSRDY,R3	;BUT IS READER READY?
   4431	013320	001451 				BEQ	30$		;NO-- BITS ARE NOT VALID-- GO ON
   4432					;
   4433	013322	013704 	000000G			MOV	@#CDDB,R4	;YES-- GET ERROR BITS TO R4
   4434					;
   4435	013326	032704 	040000 			BIT	#CDBRCK,R4	;READ (PHOTO) CHECK?
   4436	013332	001402 				BEQ	16$		;NO
   4437	013334	052711 	000001 			BIS	#DD.RCK,(R1)	;YES
   4438					;
   4439	013340	032704 	020000 		16$:	BIT	#CDBPCK,R4	;PICK CHECK?
   4440	013344	001402 				BEQ	17$		;NO
   4441	013346	052711 	000002 			BIS	#DD.PCK,(R1)	;YES
   4442					;
   4443	013352	032704 	010000 		17$:	BIT	#CDBSCK,R4	;STACK CHECK?
   4444	013356	001402 				BEQ	18$		;NO
   4445	013360	052711 	000004 			BIS	#DD.SCK,(R1)	;YES
   4446					;
   4447	013364	005711 			18$:	TST	(R1)		;FATAL ERRROR DETECTED?
   4448	013366	001402 				BEQ	19$		;NO-- GO ON
   4449	013370	052710 	000100 			BIS	#DV.LOG,(R0)	;YES-- SAY ERROR LOGGING NEEDED
   4450					;
   4451	013374	032703 	000004 		19$:	BIT	#CDSHEM,R3	;HOPPER EMPTY?
   4452	013400	001402 				BEQ	20$		;NO-- GO ON
   4453	013402	052711 	000010 			BIS	#DD.HEM,(R1)	;YES
   4454					;
   4455	013406	005711 			20$:	TST	(R1)		;ANY ERROR BITS SET?
   4456	013410	001012 				BNE	21$		;YES-- NOT STACKER FULL
   4457	013412	032703 	040000 			BIT	#CDSRCK,R3	;IS THIS A READER CHECK?
   4458	013416	001412 				BEQ	23$		;NO-- CERTAINLY NOT STACKER FULL
   4459	013420	032737 	000400 	000000G		BIT	#CR.NSF,CRSTS	;WE DECIDE IT WASN'T STACKER FULL BEFORE?
   4460	013426	001006 				BNE	23$		;YES-- CAN'T BE STACKER FULL NOW
   4461	013430	052711 	000020 			BIS	#DD.SFL,(R1)	;NO-- READER CHECK & NO ERRORS => STACKER FULL
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 53-2
SSTSCR	(SEND CD-11 STATUS TO -10)

   4462	013434	000403 				BR	22$		;STACKER-FULL-- GO ON
   4463					;
   4464	013436	052737 	000400 	000000G	21$:	BIS	#CR.NSF,CRSTS	;FLAG THAT IT CAN'T BE STACKER FULL
   4465	013444				22$:
   4466	013444				23$:
   4467	013444	012703 	000000G		30$:	MOV	#CDST,R3	;ADDRESS CD CSR
   4468	013450	005721 				TST	(R1)+		;POINT TO FIRST WORD OF DEVICE REGISTERS IN STATUS BLOCK
   4469	013452	012721 	000000C			MOV	#<CDDB+2-CDST>,(R1)+ ;SAVE SIZE OF FOLLOWING BLOCK
   4470	013456	012321 			31$:	MOV	(R3)+,(R1)+	;MOVE A REGISTER
   4471	013460	022701 	000000C			CMP	#CRSTBK+CRSTLN,R1 ;MOVED 'EM ALL?
   4472	013464	101374 				BHI	31$		;NO-- LOOP FOR ALL OF THEM
   4473					;
   4474					; SET UP REGISTERS FOR ..STIN TO SEND BLOCK TO -10:
   4475					;	R0 --	POINTER TO STATUS BLOCK
   4476					;		FIRST WORD IS HEADER: (HIGH BYTE) UNIT # (LOW BYTE) BYTE COUNT OF BLCOK
   4477					;	R1 --	BIT15 (FOR INDIRECT FUNCTION) + FUNCTION CODE (BC.HDS)
   4478					;	R2 --	EVENT FLAG TO SET WHEN BLOCK DONE (EF.CRS)
   4479					;	R3 --	DEVICE CODE (D.CCDR)
   4480					;
   4481	013466	105040 			50$:	CLRB	-(R0)		;HIGH BYTE HEADER: UNIT # (ALWAYS 0)
   4482	013470	112740 	000000G			MOVB	#CRSTLN,-(R0)	;LOW BYTE: BYTE COUNT OF BLOCK (NOT INCLUDING HEADER)
   4483	013474	012701 	100000G			MOV	#BIT15+BC.HDS,R1 ;FUNCTION: HERE IS DEVICE STATUS (INDIRECT FLAVOR)
   4484	013500	012702 	000003 			MOV	#E.FCRS,R2	;EVENT FLAG TO SET WHEN DONE
   4485	013504	012703 	000000G			MOV	#D.CCDR,R3	;DEVICE CODE: CDR (OF COURSE)
   4486	013510	042777 	000004 	000000G		BIC	#EF.CRS,@CREVFG	;CLEAR BUFFER AVAILABLE FLAG
   4487	013516					CALL	..STIN		;SEND TO -10
	013516	004737 	000000G			JSR	PC,..STIN
   4488	013522	103006 				BCC	90$		;OK-- DONE
   4489	013524	052777 	000004 	000000G		BIS	#EF.CRS,@CREVFG	;FAILED-- BUFFER STILL AVAILABLE
   4490	013532	052737 	040000 	000000G		BIS	#CR.SST,CRSTS	;ERROR-- TRY AGAIN LATER
   4491					;
   4492					; ALL DONE
   4493					;
   4494	013540				90$:	RETURN			;ALL DONE FORM SSTSCR
	013540	000207 				RTS	PC
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 54
INITCR	(INITIALIZE CD-11)

   4496						.SBTTL	INITCR	(INITIALIZE CD-11)
   4497					;
   4498					;+
   4499					;
   4500					;	INITCR IS CALLED FROM TASK INITIALIZATION AND FROM POWER-UP
   4501					; ROUTINE TO RESET THE CD-11.
   4502					;
   4503					;-
   4504					;
   4505	013542	042737 	021000 	000000G	INITCR::BIC	#CR.IOP!CR.NXD,CRSTS ;NO LONGER I/O IN PROGRESS, ASSUME DEVICE EXISTS
   4506	013550	012737 	000400 	000000G		MOV	#CDSPWC,@#CDST	;DO POWER-CLEAR
   4507	013556	052777 	000001 	000000G	CRDCLR:	BIS	#EF.CRC,@CREVFG	;FORCE HUNG CHECK
   4508	013564					RETURN
	013564	000207 				RTS	PC
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 55
INITCR	(INITIALIZE CD-11)

   4510
   4511						.SBTTL	CD-11 DRIVER COMMON SUBROUTINES MODULE
   4512					;
   4513					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   4514					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4515					;			ALL RIGHTS RESERVED.
   4516					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4517					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4518					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4519					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4520					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4521					;
   4522					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4523					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4524					;       CORPORATION.
   4525					;
   4526					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4527					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4528					;
   4529					;		MODULE: CD-11 DRIVER COMMON SUBROUTINES
   4530					;
   4531					;		VERSION: 01-00
   4532					;
   4533					;		AUTHOR: TOM PORCHER
   4534					;
   4535					;		DATE: 25-AUG-75
   4536					;
   4537					;
   4538					;	THIS MODULE CONTAINS:
   4539					;
   4540					;	1) $CDINT (CD-11 INTERRUPT SERVICE ROUTINE)
   4541					;
   4542					;	2) ..STCR (START CD-11)
   4543					;
   4544					;	3) ..SPCR (STOP CD-11)
   4545					;
   4546					;	4) ..AKCR (READ CARD)
   4547					;
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 56
$CDINT	(CD-11 INTERRUPT SERVICE)

   4549						.SBTTL	$CDINT	(CD-11 INTERRUPT SERVICE)
   4550					;
   4551					;+
   4552					;
   4553					;	$CDINT IS CALLED FROM THE INTERRUPT VECTOR FOR THE CD-11.
   4554					; IT MERELY SAYS THAT I/O IS DONE BY SETTING CR.IOD IF I/O WAS
   4555					; IN PROGRESS (CR.IOP), AND REQUESTS STATUS IF AN ERROR HAS OCCURED.
   4556					;
   4557					;-
   4558					;
   4559	013566	105737 	000000G		$CDINT:: TSTB	@#CDST		;;;CD-11 READY?
   4560	013572	100026 				BPL	90$		;;;NO-- JUST GO AWAY
   4561	013574	032737 	020000 	000000G		BIT	#CR.IOP,CRSTS	;;;YES-- WERE WE I/O IN PROGRESS (READING)?
   4562	013602	001415 				BEQ	10$		;;;NO-- GO ON (SEE IF ERROR)
   4563	013604	042737 	020000 	000000G		BIC	#CR.IOP,CRSTS	;;;YES-- MUST BE DONE NOW
   4564	013612	005737 	000000G			TST	@#CDST		;;;[**]
   4565	013616	100407 				BMI	10$		;;;[**]
   4566	013620	005737 	000000G			TST	@#CDCC		;;;DID WE READ A CARD?
   4567	013624	001004 				BNE	10$		;;;NO-- MUST BE ERROR-- SEND STATUS NOW
   4568	013626	052737 	010000 	000000G		BIS	#CR.IOD,CRSTS	;;;SO MAKE TASK KNOW WE ARE DONE
   4569					;
   4570	013634	000403 				BR	20$		;;;[**]
   4571					;
   4572	013636	052737 	040000 	000000G	10$:	BIS	#CR.SST,CRSTS	;;;YES-- SEND DEVICE STATUS
   4573	013644				20$:	CALL	IODNCR		;;;SAY I/O DONE TO TASK
	013644	004737 	013734'			JSR	PC,IODNCR
   4574					;
   4575					; ALL DONE WITH INTERRUPT
   4576					;
   4577	013650	000137 	000000G		90$:	JMP	..INTX		;;;FINISH OFF INTERRUPT
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 57
..STCR	(START CD-11)

   4579						.SBTTL	..STCR	(START CD-11)
   4580					;
   4581					;+
   4582					;
   4583					;	..STCR IS CALLED FROM THE QUEUED PROTOCOL TASK ON A REQUEST
   4584					; FOR STATUS.  NO OTHER REQUESTS TO THE CD-11 DRIVER ARE MADE THROUGH
   4585					; ..STCR.
   4586					;
   4587					;	THE STATUS IS REQUESTED TO THE CD-11 DRIVER TASK BY SETTING
   4588					; CR.SST AND EF.CRD.
   4589					;
   4590					; CALLING SEQUENCE:
   4591					;	R0 --	POINTER TO THREAD BLOCK (WILL JUST BE DEALLOCATED)
   4592					;	R2 --	POINTER TO CRTBL (MUST BE CRTBL+0)
   4593					;
   4594					; EXIT CONDITIONS:
   4595					;
   4596					;	NO REGISTERS MODIFIED
   4597					;
   4598					;-
   4599					;
   4600						.ENABLE	LSB
   4601	013654				..STCR::
   4602	013654					CALL	..DECN		;DE-ALLOCATE BLOCK
	013654	004737 	000000G			JSR	PC,..DECN
   4603	013660	020227 	000000G			CMP	R2,#CRTBL+0	;THIS CR0?
   4604	013664	001030 				BNE	99$		;NO-- GO AWAY
   4605	013666	052737 	040000 	000000G		BIS	#CR.SST,CRSTS	;YES-- MAKE STATUS HAPPEN
   4606	013674	000417 				BR	IODNCR		; AND MAKE TASK RECOGNIZE IT
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 58
..SPCR	(STOP CD-11)

   4608						.SBTTL	..SPCR	(STOP CD-11)
   4609					;
   4610					;+
   4611					;
   4612					;	..SPCR IS CALLED FROM THE QUEUED PROTOCOL TASK TO FLUSH
   4613					; INPUT FROM THE CD-11.  ANY I/O THAT IS IN PROGRESS IS STOPPED,
   4614					; AND NO FURTHER DATA IS SENT TO THE -10.
   4615					;
   4616					; CALLING SEQUENCE:
   4617					;	R2 --	POINTER TO CRTBL (MUST BE CRTBL+0)
   4618					;
   4619					; EXIT CONDITIONS:
   4620					;
   4621					; NO REGISTERS MODIFIED
   4622					;
   4623					;-
   4624					;
   4625	013676	020227 	000000G		..SPCR:: CMP	R2,#CRTBL+0	;THIS CR0?????
   4626	013702	001021 				BNE	99$		;NO-- GO AWAY
   4627	013704					CALL	INITCR		;RESET THE CD-11
	013704	004737 	013542'			JSR	PC,INITCR
   4628	013710	042737 	034000 	000000G		BIC	#CR.ACK!CR.IOD!CR.IOP,CRSTS ;SAY WE ARE HAPPY
   4629	013716					RETURN
	013716	000207 				RTS	PC
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 59
..AKCR	(READ CARD)

   4631						.SBTTL	..AKCR	(READ CARD)
   4632					;
   4633					;+
   4634					;
   4635					;	..AKCR IS CALLED FROM THE QUEUED PROTOCOL TASK ON AN ACKNOWLEDGE
   4636					; REQUEST FROM THE -10.  THIS IMPLIES THAT A CARD SHOULD BE READ.
   4637					;
   4638					; CALLING SEQUENCE:
   4639					;	R2 --	POINTER TO CRTBL (MUST BE CRTBL+0)
   4640					;
   4641					; EXIT CONDITIONS:
   4642					;
   4643					; NO REGISTERS MODIFIED
   4644					;
   4645					;-
   4646					;
   4647	013720	020227 	000000G		..AKCR:: CMP	R2,#CRTBL+0	;IS THIS CR0???
   4648	013724	001010 				BNE	99$		;NO-- GIVE UP
   4649	013726	052737 	004000 	000000G		BIS	#CR.ACK,CRSTS	;YES-- SAY TO READ A CARD
   4650					;	BR	IODNCR		;SET I/O DONE TO SAY SOMETHING TO DO TO TASK
   4651					;
   4652					; HERE TO SET I/O DONE (EF.CRD) TO CR TASK TO INDICATE SOMETHING TO DO.
   4653					;  ALSO SIGNIFICANT EVENT TO CAUSE CR TASK TO RUN.
   4654					;
   4655	013734	052777 	000002 	000000G	IODNCR:	BIS	#EF.CRD,@CREVFG	;SET EVENT FLAG
   4656	013742					CALL	..DSEV		; AND MAKE SIGN. EVENT TO WAKE TASK
	013742	004737 	000000G			JSR	PC,..DSEV
   4657	013746				99$:	RETURN			; FROM IODNCR
	013746	000207 				RTS	PC
   4658						.DSABLE	LSB
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 20:48  PAGE 60
..AKCR	(READ CARD)

   4660
   4661						.TITLE	INSTAL -- TASK INSTALLER FOR RSX-20F
   4662						.SBTTL	TITLE PAGE
   4663						.IDENT	/014440/
   4664					;
   4665					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   4666					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4667					;			ALL RIGHTS RESERVED.
   4668					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4669					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4670					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4671					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4672					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4673					;
   4674					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4675					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4676					;       CORPORATION.
   4677					;
   4678					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4679					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4680					;
   4681					;		MODULE: INSTALL TASK FOR RSX-20F
   4682					;
   4683					;		VERSION: 14-44
   4684					;
   4685					;		AUTHOR: TOM PORCHER
   4686					;
   4687					;		DATE: 1-OCT-75
   4688					;
   4689					;
   4690					;	THIS MODULE CONTAINS:
   4691					;
   4692					;	-- CODE TO INSTALL A TASK IN RSX-20F
   4693					;
   4694					; MODIFICATIONS:
   4695					;
   4696					;	NO.	DATE		PROGRAMMER	PURPOSE
   4697					;	---	----		----------	-------
   4698					;	001	14-MAR-77	R. BELANGER	DEFINE THE END OF "INSTAL"
   4699					;						TO ALLOW DYNAMIC ALLOCATION
   4700					;						OF FREE POOL SPACE
   4701					;	002	30-MAY-78	R. BELANGER	MODIFY INSTAL TO MOUNT BOTH
   4702					;						DX0: AND DX1: AS SY:
   4703					;	003	18-AUG-81	S. LEAPLINE	EXTEND STACK AREA
   4704					;	004	28-AUG-81	S. LEAPLINE	MAKE TYPBUF BIGGER
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 61
MACROS AND PARAMETERS

   4706						.SBTTL	MACROS AND PARAMETERS
   4707					;
   4708					; SETUP ASSEMBLY CONDITIONS
   4709					;
   4710						.ENABLE	AMA
   4711						.LIST	MEB
   4712					;
   4713					; MISC. MCALL'S
   4714					;
   4715					.MCALL QIOSY$,ALUN$S,QIOW$S,RCVX$S,RQST$S,WSIG$S,.INH0,.ENB0,CALL,RETURN,PUSH,POP,.STKM,$DEF
   4716	013750					$DEF
   4717	013750					QIOSY$
   4718					;
   4719					; MACROS
   4720					;
   4721					.MACRO	MSG	A,B
   4722						.PSECT	TEXT
   4723					$$$=.
   4724						 .ASCIZ	\B\
   4725						.PSECT
   4726						 PUSH	#$$$
   4727						CALL	TYPMSG
   4728					.ENDM	MSG
   4729					;
   4730					.MACRO	ERR	A,B
   4731						MSG	<A>,<B>
   4732					.ENDM	ERR
   4733					;
   4734					.MACRO	ERRF	A,B
   4735						ERR	<A>,<B>
   4736						 BR	CLSFIL
   4737					.ENDM	ERRF
   4738					;
   4739					.MACRO	ERRN	A,B
   4740						ERR	<A>,<B>
   4741						 BR	RETNOD
   4742					.ENDM	ERRN
   4743					;
   4744					; PARAMETERS
   4745					;
   4746		000062 			DEFPRI=	50.			;DEFAULT TASK PRIORITY
   4747					;
   4748		000050 			U.SZ=50				;LOCAL DEF OF U.SZ
   4749		000001 			SF.TA=1		;LOCAL DEF OF TASK ACTIVE
   4750		040000 			SF.IR=40000	;LOCAL DEF FOR INSTAL REQUESTED
   4751					; LOGICAL UNIT NUMBER ASSIGNMENTS
   4752					;
   4753		000001 			CTYLUN=	1			;FOR I/O TO THE CTY **** MUST BE UNIT 1 ****
   4754		000002 			TSKLUN=	2			;FOR I/O TO TASK IMAGE FILE
   4755					;
   4756					; EVENT FLAGS
   4757					;
   4758		000001 			E.FQIO=	1			;WAIT FOR QUEUE I/O TO COMPLETE
   4759		000001 			 EF.QIO=BIT0
   4760					;
   4761					; HEADER BLOCK DEFINITIONS
   4762					;
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 61-1
MACROS AND PARAMETERS

   4763		000076 			H.IPC=	76			;INITIAL PC
   4764		000100 			H.ISP=	100			;INITIAL SP
   4765		000130 			H.NLUN=	130			;NUMBER OF LUNS FOR TASK
   4766		000132 			H.LUN=	132			;START OF LUN TABLE AREA
   4767					;
   4768					; LABEL BLOCK DEFINITIONS
   4769					;
   4770		000000 			L$BTSK=	0			;TASK NAME IN RAD50 (TWO WORDS)
   4771		000004 			L$BPAR=	4			;PARTITION NAME IN RAD50 (TWO WORDS)
   4772		000010 			L$BFLG=	10			;FLAG WORD
   4773		000012 			L$BPRI=	12			;DEFAULT TASK RUN PRIORITY
   4774		000014 			L$BLDZ=	14			;LOAD SIZE OF TASK IMAGE
   4775		000016 			L$BMXZ=	16			;MAX SIZE OF TASK
   4776		000020 			L$BSA=	20			;BASE ADDRESS OF TASK
   4777		000022 			L$BHRB=	22			;HEADER RELATIVE BLOCK IN TASK FILE
   4778		000024 			L$BBLK=	24			;# BLOCKS IN LABEL GROUP
   4779					;
   4780					; ACCESS CONTROL BITS
   4781					;
   4782		000200 			AC.ENA=	BIT7			;ENABLE ACCESS
   4783					;
   4784					; FILENAME BLOCK OFFSETS
   4785					;
   4786		000000 			N.FID=	0			;FILE-ID / SEQUENCE #
   4787		000006 			N.FNAM=	6			;FILENAME IN RADIX 50 (3 WORDS)
   4788		000014 			N.FTYP=	14			;FILE TYPE IN RADIX 50
   4789		000016 			N.FVER=	16			;FILE VERSION NUMBER
   4790		000020 			N.STAT=	20			;FLAGS
   4791		000022 			N.NEXT=	22			;CONTEXT SAVE FOR .FIND
   4792		000024 			N.DID=	24			;DIRECTORY ID
   4793		000034 			 S.DRFN=34			;WORDS OF FILE-NAME BLOCK USED FOR IO.FNA
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 62
TASK DATA

   4795						.SBTTL	TASK DATA
   4796					;
   4797					; TASK HEADER AND STACK
   4798					;
   4799	013750				INSHD::	.STKM	0,0,0,0,0,0,40,INSTAL,174000,INSTK
	014016	000000 	000000 	000000 		.WORD	0,0,0,0
	014024	000000
	014044	174000 	014700'	014230'		.WORD	174000,INSTAL,INSTK
	014100	000005 				.WORD	5
	014102	000000G				.WORD	TTPEN
	014104	000000 				.WORD	0
	014106	000000 				.WORD	0
	014110	000000 				.WORD	0
	014112	000000 				.WORD	0
	014114	000000 				.WORD	0
	014116	000000 				.WORD	0
	014120	000000 				.WORD	0
	014122	000000 				.WORD	0
	014124	000000 				.WORD	0
	014126	000000 				.WORD	0
	014230	000000 				.WORD	0
	014232	000000 				.WORD	0
	014234	000000 				.WORD	0
	014236	000000 				.WORD	0
	014240	000000 				.WORD	0
	014242	000000 				.WORD	0
	014244	014700'				.WORD	INSTAL
	014246	174000 				.WORD	174000
   4800					;
   4801	014250					.BLKW	40
   4802	014350				EXSP::
   4803					;
   4804					; LOCAL DATA
   4805					;
   4806	014350	   000 			DXFLAG:	.BYTE	0		; +++002 SECOND DX: MOUNT FLAG
   4807	014351	   000 			SYFLAG:	.BYTE	0		; +++002 SY: MOUNTED FLAG
   4808	014352				RCVBLK:	.BLKW	2		;RECEIVE DATA BUFFER: TRASH
   4809	014356				REQBLK:	.BLKW	13.		;REQUEST BLOCK FROM EXEC
   4810		014370'			STDADR=REQBLK+12		;ADDRESS OF OUR SYSTEM TASK DIRECTORY ENTRY
   4811	014410				PUDADR:	.BLKW	1		;PUD ENTRY ADDRESS OF DEVICE WHERE TASK FILE WAS FOUND
   4812	014412				LBLBLK:	.BLKW	1		;CURRENT VIRTUAL BLOCK NUMBER TO READ LABEL GROUP
   4813	014414				LBLNUM:	.BLKW	1		;NUMBER OF BLOCKS IN LABEL GROUP
   4814	014416				LBLBUF:	.BLKW	1		;ADDRESS OF LABEL BUFFER
   4815	014420				LBLBFE:	.BLKW	1		;ADDRESS OF END OF BUFFER (LBLBUF)+512.
   4816	014422				HDRBLK:	.BLKW	1		;CURRENT VIRTUAL BLOCK NUMBER TO READ HEADER
   4817	014424				HDRBUF:	.BLKW	1		;ADDRESS OF HEADER BLOCK BUFFER
   4818	014426				HDRBFE:	.BLKW	1		;ADDRESS OF END OF HEADER BUFFER
   4819	014430				FILBLK:	.BLKB	S.DRFN		;FILE-NAME BLOCK FOR TASK IMAGE FILE
   4820	014464				FILADR:	.BLKW	2		;STATISTISTICS BLOCK: DISK ADDRESS
   4821	014470				QIOSTS:	.BLKW	2		;I/O STATUS
   4822	014474				TYPBUF:	.BLKB	100.		;BUFFER FOR CTY OUTPUT
   4823					;
   4824					; PURE DATA
   4825					;
   4826	014640	   367 			ATCBLK:	.BYTE	-9.		;ATTIBUTE CONTROL: STATISTICS BLOCK, READ
   4827	014641	   004 				.BYTE	4.		;4 BYTES OF INFO
   4828	014642	014464'				.WORD	FILADR		;WHERE TO INFO TO
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 62-1
TASK DATA

   4829	014644	   000 	   000 			.BYTE	0,0		;END OF ATTRIBUTE CONTROL BLOCK
   4830					;
   4831	014646	   001 			MNTBLK:	.BYTE	1		;ACP CONTROL: MOUNT FUNCTION
   4832	014647	   001 				.BYTE	1		;STRING LENGTH: 1
   4833	014650	014652'				.WORD	1$		;ADDRESS OF STRING
   4834	014652	   072 			1$:	.ASCII	/:/
   4835						.EVEN
   4836					;
   4837					; DEVICE CONVERSION TABLE
   4838					;
   4839	014654	   124 	   111 	   124 	CNVTBL:	.ASCII	/TI//TT/
	014657	   124
   4840	014660	   103 	   117 	   124 		.ASCII	/CO//TT/
	014663	   124
   4841	014664	   103 	   111 	   124 		.ASCII	/CI//TT/
	014667	   124
   4842	014670	   103 	   114 	   114 		.ASCII	/CL//LP/
	014673	   120
   4843	014674	000000 	000000 			.WORD	0,0
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 63
FIND THE TASK FILE

   4845						.SBTTL	FIND THE TASK FILE
   4846					;
   4847					;
   4848					; HERE ON A REQUEST TO INSTALL A TASK FROM THE EXECUTIVE
   4849					;
   4850					; A SEND DATA PACKET IS SENT TO THIS TASK .INST. IN REQUEST
   4851					;  FOR A TASK WHICH IS NOT CURRENTLY INSTALLED. THE PACKET
   4852					;  HAS THE FOLLOWING FORMAT:
   4853					;
   4854					; WORD 0	TASK NAME IN RADIX 50 FORMAT
   4855					;      1	 (SECOND HALF)
   4856					;      2	PARTITION NAME IN RADIX 50 (IF SPECIFIED, OTHERWISE 0)
   4857					;      3	 (SECOND HALF)
   4858					;      4	RUN PRIORITY (IF SPECIFIED, OTHERWISE 0)
   4859					;	5	STD ADDRESS
   4860					;
   4861					;
   4862					; GET THE PACKET, OR EXIT IF NOTHING TO DO
   4863					;
   4864	014700				INSTAL::
   4865	014700	012706 	014350'			MOV	#EXSP,SP	;;ADD EXTRA STACK SPACE
   4866	014704					RCVX$S	,#RCVBLK	;;GET THE REQUEST OR EXIT IF NONE
	014704	012746 	014352'			MOV	#RCVBLK,-(SP)
	014710	005046 				CLR	-(SP)
	014712	005046 				CLR	-(SP)
	014714	012746 				MOV	(PC)+,-(SP)
	014716	   023 	   004 			.BYTE	19.,$$$T1
	014720	104375 				EMT	375
   4867	014722	103766 				BCS	INSTAL		;OOPS-- TRY AGAIN
   4868					;
   4869	014724					CALL	CLRBUF		; AND NO BUFFERS ALLOCATED
	014724	004737 	016474'			JSR	PC,CLRBUF
   4870	014730	105037 	014350'			CLRB	DXFLAG		; +++002 RESET THE RX01 FLAG
   4871					;
   4872					; SETUP TO LOOK ON DEVICE SY FOR THE TASK FIRST
   4873					;
   4874	014734	012705 	177730G			MOV	#.PUDBA-U.SZ,R5	;POINT TO START OF PUD'S TO SCAN IF NOT ON SY
   4875									;MINUS 1 FOR SY
   4876	014740	012700 	054523 			MOV	#"SY,R0		; +++002 DEVICE NAME (U.DN) TO R0
   4877	014744	005001 				CLR	R1		; +++002 UNIT NUMBER (U.UN) TO R1
   4878					;
   4879	014746				MNTSYD:				; +++002
   4880	014746					ALUN$S	#TSKLUN,R0,R1	; +++002 ASSIGN DEVICE SY0 TO TASK LUN
	014746	010146 				MOV	R1,-(SP)
	014750	010046 				MOV	R0,-(SP)
	014752	012746 	000002 			MOV	#TSKLUN,-(SP)
	014756	012746 				MOV	(PC)+,-(SP)
	014760	   007 	   004 			.BYTE	7.,4
	014762	104375 				EMT	375
   4881	014764	103557 				BCS	TASKNF		;NO DICE-- JUST TRY PUD SCAN
   4882					;
   4883	014766	013704 	000000G			MOV	.CRTSK,R4	;GOT IT-- GET ADDRESS
   4884	014772	016404 	000000G			MOV	A.HA(R4),R4	; OF OUR HEADER TO
   4885	014776	016404 	000136 			MOV	H.LUN+<4*<TSKLUN-1>>+0(R4),R4 ; FIND PUD ADDRESS OF SY
   4886	015002	016404 	000000G			MOV	U.RP(R4),R4	; BUT GET THE REAL DEVICE PUD ENTRY
   4887	015006	010437 	014410'			MOV	R4,PUDADR	;SAVE THIS PUD ADDRESS IN CASE WE DO FIND THE TASK
   4888	015012	005764 	000000G			TST	U.VA(R4)	;IS SY MOUNTED?
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 63-1
FIND THE TASK FILE

   4889	015016	001031 				BNE	SYMNTD		; +++002 YES -- DO THE SECOND FLOPPY CHECK
   4890					;
   4891					; SY IS NOT MOUNTED.  WE MUST MOUNT IT BEFORE WE CAN FIND ANYTHING
   4892					;
   4893					; NOTE--
   4894					;
   4895					;	IF THE SY: DEVICE BEING MOUNTED IS A FLOPPY (DX:) INSTAL WILL
   4896					;	ATTEMPT TO MOUNT THE OTHER UNIT AS WELL.
   4897					;
   4898	015020	012701 	014356'			MOV	#RCVBLK+4,R1	;GET A SCRATCH AREA
   4899	015024	012741 				MOV	(PC)+,-(R1)	;STORE
   4900	015026	003310 				 .RAD50	/ACP/		; THE NAME OF AN ACP
   4901	015030	016441 	000000G			MOV	U.DACP(R4),-(R1) ;  AND THE NAME OF THE ACP FOR THIS DEVICE
   4902	015034					CALL	..FSTD		;FIND THE STD ENTRY ADDRESS OF THE ACP
	015034	004737 	000000G			JSR	PC,..FSTD
   4903	015040	010264 	000000G			MOV	R2,U.ACP(R4)	;STORE THE STD ADDRESS OF THE ACP
   4904					;
   4905	015044	012700 	014010 			MOV	#IO.APV,R0	;SET TO DO PRIVILEGED ACP CONTROL
   4906	015050	005001 				CLR	R1		;NO FILE-ID
   4907	015052	012702 	014646'			MOV	#MNTBLK,R2	;ACP CONTROL FUNCTION BLOCK TO MOUNT
   4908	015056	005003 				CLR	R3		;NO ACCESS
   4909	015060	005004 				CLR	R4		;NO FILE-NAME BLOCK
   4910	015062					CALL	FILQIO		;DO A MOUNT ON SY
	015062	004737 	016774'			JSR	PC,FILQIO
   4911	015066	103005 				BCC	SYMNTD		;SUCCESS-- SAY WE DID THE MOUNT SO WE DON'T SCARE ANYBODY
   4912	015070					ERR	MSF,<MOUNT SY FAILED>
	000000	   115 	   117 	   125 		 .ASCIZ	\MOUNT SY FAILED\
	000003	   116 	   124 	   040
	000006	   123 	   131 	   040
	000011	   106 	   101 	   111
	000014	   114 	   105 	   104
	000017	   000
	015070	012746 	000000'			MOV	#$$$,-(SP)
	015074	004737 	017054'			JSR	PC,TYPMSG
   4913	015100	000511 				BR	TASKNF		;CERTAINLY NOT FOUND
   4914					;
   4915	015102				SYMNTD:
   4916	015102	013704 	014410'			MOV	PUDADR,R4	; +++002 PUD ADDRESS TO R4
   4917	015106	016400 	000000G			MOV	U.DN(R4),R0	; +++002 DEVICE NAME TO R0
   4918	015112	016401 	000000G			MOV	U.UN(R4),R1	; +++002 UNIT NUMBER TO R1
   4919	015116	022700 	054104 			CMP	#"DX,R0		; +++002 DID WE TRY TO MOUNT A FLOPPY??
   4920	015122	001011 				BNE	SYMNT1		; +++002 NO -- GO ON
   4921	015124	105737 	014350'			TSTB	DXFLAG		; +++002 YES -- HAVE WE DONE BOTH??
   4922	015130	001006 				BNE	SYMNT1		; +++002 YES -- GO ON
   4923	015132	105237 	014350'			INCB	DXFLAG		; +++002 NO -- MARK SECOND TIME AROUND
   4924	015136	005201 				INC	R1		; +++002 SET UP FOR "OTHER" FLOPPY
   4925	015140	042701 	177776 			BIC	#^C1,R1		; +++002 SO
   4926	015144	000700 				BR	MNTSYD		; +++002 AND DO IT...
   4927						;
   4928	015146				SYMNT1:				; +++002
   4929	015146	105737 	014351'			TSTB	SYFLAG		; +++002 SY: ALREADY MOUNTED??
   4930	015152	001006 				BNE	FNDFIL		; +++002 YES -- GO ON
   4931	015154					MSG	SYM,<SY MOUNTED>
	000020	   123 	   131 	   040 		 .ASCIZ	\SY MOUNTED\
	000023	   115 	   117 	   125
	000026	   116 	   124 	   105
	000031	   104 	   000
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 63-2
FIND THE TASK FILE

	015154	012746 	000020'			MOV	#$$$,-(SP)
	015160	004737 	017054'			JSR	PC,TYPMSG
   4932	015164	105237 	014351'			INCB	SYFLAG		; +++002 MARK MOUNT DONE
   4933					;
   4934					; SET UP FILENAME BLOCK TO LOOK FOR [5,5] DIRECTORY IN MFD
   4935					;
   4936	015170				FNDFIL:
   4937	015170	012702 	014436'			MOV	#FILBLK+N.FNAM,R2 ;POINT TO FILE-NAME BLOCK
   4938	015174	012712 				MOV	(PC)+,(R2)	;SET FILENAME TO
   4939	015176	140123 				 .RAD50	/005/		; 005005
   4940	015200	012222 				MOV	(R2)+,(R2)+	;  BOTH HALVES
   4941	015202	005022 				CLR	(R2)+		;ONLY SIX CHARS
   4942	015204	012722 				MOV	(PC)+,(R2)+	;SET TYPE TO DIRECTORY
   4943	015206	015172 				 .RAD50	/DIR/		; FILE
   4944	015210	005022 				CLR	(R2)+		;VERSION, DON'T CARE
   4945	015212	005022 				CLR	(R2)+		;NO FLAGS
   4946	015214	005022 				CLR	(R2)+		;UNKOWN STUFF
   4947	015216	012712 	177777 			MOV	#-1,(R2)	;DIRECTORY ID:
   4948	015222	012222 				MOV	(R2)+,(R2)+	; (-1,-1) IS MFD
   4949	015224	012722 				MOV	(PC)+,(R2)+	;ALSO SET OWNER TO US
   4950	015226	   005 	   005 			 .BYTE	5,5		;THE UIC
   4951					;
   4952	015230					CALL	FILFNA		;LOOK UP DIRECTORY FOR [5,5]
	015230	004737 	016624'			JSR	PC,FILFNA
   4953	015234	103433 				BCS	TASKNF		;GIVE UP NOW IF NO DIRECTORY FOR US
   4954					;
   4955					; SETUP FILE-NAME BLOCK TO <TASK-NAME>.TSK[5,5]
   4956					;
   4957	015236	012701 	014356'			MOV	#REQBLK,R1	;ADDRESS REQUEST BLOCK
   4958	015242	012702 	014436'			MOV	#FILBLK+N.FNAM,R2 ; AND FILE-NAME BLOCK FOR LOOKUP
   4959	015246	021127 				CMP	(R1),(PC)+	;IS THIS
   4960	015250	131574 				 .RAD50	/.../		; AN MCR FUNCTION TASK?
   4961	015252	001004 				BNE	20$		;NO-- JUST LOOKUP THE TASK NAME
   4962	015254	005721 				TST	(R1)+		;YES-- SKIP THE DOTS
   4963	015256	012122 				MOV	(R1)+,(R2)+	;COPY THE LAST THREE CHARACTERS
   4964	015260	005022 				CLR	(R2)+		; AS THE WHOLE NAME
   4965	015262	000402 				BR	25$		;PROCEED.
   4966					;
   4967	015264				20$:
   4968	015264	012122 				MOV	(R1)+,(R2)+	;COPY TASK NAME
   4969	015266	012122 				MOV	(R1)+,(R2)+	; AS FILE NAME
   4970	015270				25$:
   4971	015270	005022 				CLR	(R2)+		;ONLY SIX CHARACTERS
   4972	015272	012722 				MOV	(PC)+,(R2)+	;SET FILE TYPE
   4973	015274	100003 				 .RAD50	/TSK/		; TO A TASK FILE
   4974	015276	005022 				CLR	(R2)+		;NO VERSION CARE
   4975	015300	005022 				CLR	(R2)+		;NO FLAGS
   4976	015302	005022 				CLR	(R2)+		;NO NOTHING
   4977	015304	012701 	014430'			MOV	#FILBLK+N.FID,R1 ;POINT TO FILE-ID OF DIRECTORY
   4978	015310	012122 				MOV	(R1)+,(R2)+	;COPY FILE-ID
   4979	015312	012122 				MOV	(R1)+,(R2)+	; SEQ #
   4980	015314	012122 				MOV	(R1)+,(R2)+	; OWNER
   4981					;
   4982					; DO A FIND FILE IN DIRECTORY FUNCTION TO GET FILE ID
   4983					;
   4984	015316					CALL	FILFNA		;FIND THE TASK (IF IT'S THERE)
	015316	004737 	016624'			JSR	PC,FILFNA
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 63-3
FIND THE TASK FILE

   4985	015322	103051 				BCC	TSKFND		;FOUND FILE-- GO READ IT AND CHECK IT OUT
   4986					;
   4987					; THE TASK FILE WAS NOT FOUND ON THIS DEVICE.  CONTINUE TO SCAN PUD
   4988					;  FOR ALL FILES-11 DEVICES SUCH THAT WE FIND THE TASK.
   4989					;
   4990	015324				TASKNF:
   4991	015324	062705 	000050 			ADD	#U.SZ,R5	;BUMP TO NEXT PUD ENTRY
   4992	015330	020527 	000000G			CMP	R5,#.PUDEA	;ARE WE AT THE END OF THE PUD?
   4993	015334	103027 				BHIS	TNFERR		;YES-- TASK NOT FOUND
   4994	015336	026505 	000000G			CMP	U.RP(R5),R5	;THIS DEVICE REDIRECTED?
   4995	015342	001370 				BNE	TASKNF		;YES-- WE WILL FIND THE REAL DEVICE
   4996	015344	132765 	000000G	000000G		BITB	#UF.TL,U.FB(R5)	;TASK LOADS ALLOWED FROM THIS DEVICE?
   4997	015352	001764 				BEQ	TASKNF		;NO-- DON'T EVEN TRY
   4998	015354	005765 	000000G			TST	U.VA(R5)	;VOLUME MOUNTED?
   4999	015360	001761 				BEQ	TASKNF		;NO-- DON'T TRY TO FIND FILE
   5000					;
   5001	015362					ALUN$S	#TSKLUN,U.DN(R5),U.UN(R5) ;YES-- ASSIGN TH CURRENT DEVICE TO US
	015362	016546 	000000G			MOV	U.UN(R5),-(SP)
	015366	016546 	000000G			MOV	U.DN(R5),-(SP)
	015372	012746 	000002 			MOV	#TSKLUN,-(SP)
	015376	012746 				MOV	(PC)+,-(SP)
	015400	   007 	   004 			.BYTE	7.,4
	015402	104375 				EMT	375
   5002	015404	103747 				BCS	TASKNF		;THIS SHOULD REALLY NEVER HAPPN
   5003	015406	010537 	014410'			MOV	R5,PUDADR	;OK-- SAVE THIS PUD ADDRESS IN CASE WE FIND THE FILE
   5004	015412	000666 				BR	FNDFIL		;OK-- GO LOOK FOR THE TASK FILE
   5005					;
   5006	015414				TNFERR:
   5007	015414					ERR	TNF,<TASK NOT FOUND>
	000033	   124 	   101 	   123 		 .ASCIZ	\TASK NOT FOUND\
	000036	   113 	   040 	   116
	000041	   117 	   124 	   040
	000044	   106 	   117 	   125
	000047	   116 	   104 	   000
	015414	012746 	000033'			MOV	#$$$,-(SP)
	015420	004737 	017054'			JSR	PC,TYPMSG
   5008	015424	000137 	016330'			JMP	RETNOD		;GIVE UP
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 64
INITIALIZE TASK FILE

   5010						.SBTTL	INITIALIZE TASK FILE
   5011					;
   5012					; FILE ERRORS END UP HERE, GOING ON THERE WAY TO THERE
   5013					;
   5014	015430	000137 	016314'		FILERA:	JMP	FILERR		;OOPS
   5015					;
   5016					; ONE OF THE NODE/BUFFER REQUESTS FAILED-- GIVE ALL OF THEM BACK AND WAIT
   5017					;
   5018	015434				BUFAIL:	CALL	RETBUF		;RETURN ALL BUFFERS
	015434	004737 	016440'			JSR	PC,RETBUF
   5019	015440					WSIG$S			;WAIT FOR FREE
	015440	012746 				MOV	(PC)+,-(SP)
	015442	   061 	   001 			.BYTE	49.,1
	015444	104375 				EMT	375
   5020					;
   5021					; HERE WHEN A TASK FILE FOUND
   5022					;
   5023					; GET TWO BUFFERS FOR THE HEADER AND LABEL BLOCKS
   5024					;
   5025	015446	012700 	000000G		TSKFND:	MOV	#.BGBUF,R0	;POINT TO BIG FREE SPACE
   5026	015452	012701 	001000 			MOV	#512.,R1	;SET TO GET A BLOCK
   5027	015456					CALL	..ALC2		;GET ONE
	015456	004737 	000000G			JSR	PC,..ALC2
   5028	015462	103764 				BCS	BUFAIL		;FAILED-- RELEASE NODE AND WAIT
   5029	015464	010037 	014416'			MOV	R0,LBLBUF	;OK-- STORE THE ADDRESS FOR LABEL BLOCK BUFFER
   5030	015470	060100 				ADD	R1,R0		;GET END ADDRESS, TOO
   5031	015472	010037 	014420'			MOV	R0,LBLBFE	;SAVE THAT AS END OF BLOCK
   5032	015476	012700 	000000G			MOV	#.BGBUF,R0	;POINT TO BIG FREE LIST HEAD
   5033					;
   5034	015502					CALL	..ALC2		;GET A HEADER BUFFER, TOO
	015502	004737 	000000G			JSR	PC,..ALC2
   5035	015506	103752 				BCS	BUFAIL		;NONE-- GIVE IT ALL AWAY
   5036	015510	010037 	014424'			MOV	R0,HDRBUF	;GOT IT-- SAVE ADDRESS OF BLOCK
   5037	015514	060100 				ADD	R1,R0		;GET END, TOO
   5038	015516	010037 	014426'			MOV	R0,HDRBFE	;SAVE THE END OF HEADER BUFFER
   5039					;
   5040					; DO AN ACCESS FOR READ, WRITE ON THE TASK FILE THAT WE FOUND
   5041					;
   5042	015522	012700 	007000 			MOV	#IO.ACW,R0	;DO AN ACCESS FOR READ,WRITE
   5043	015526	012701 	014430'			MOV	#FILBLK+N.FID,R1 ;FILE BLOCK NOW HAS FILE-ID, SEQ# IN IT
   5044	015532	012702 	014640'			MOV	#ATCBLK,R2	;ATTRRIBUTE CONTROL BLOCK TO GET DISK ADDR OF FILE
   5045	015536	012703 				MOV	(PC)+,R3	;ENABLE
   5046	015540	   000 	   200 			 .BYTE	0,AC.ENA	; ACCESS
   5047	015542	005004 				CLR	R4		;NO FILE-NAME BLOCK NOW
   5048	015544					CALL	FILQIO		;DO THE ACCESS
	015544	004737 	016774'			JSR	PC,FILQIO
   5049	015550	103727 				BCS	FILERA		;NO DICE-- GIVE UP
   5050					;
   5051					; READ THE FIRST LABEL BLOCK AND THE FIRST BLOCK OF THE TASK HEADER
   5052					;
   5053	015552	005037 	014412'			CLR	LBLBLK		;START WITH BLOCK 0 (WILL BUMP TO VBN 1)
   5054	015556					CALL	REDLBL		;READ THE LABEL BLOCK
	015556	004737 	016722'			JSR	PC,REDLBL
   5055	015562	103722 				BCS	FILERA		;ERROR-- REPORT IT
   5056					;
   5057	015564	016137 	000022 	014422'		MOV	L$BHRB(R1),HDRBLK ;GET FIRST BLOCK OF HEADER
   5058	015572					CALL	REDHDR		;READ THE FIRST BLOCK OF THE HEADER
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 64-1
INITIALIZE TASK FILE

	015572	004737 	016660'			JSR	PC,REDHDR
   5059	015576	103714 				BCS	FILERA		;THAT'S-A-NO-GOOD
   5060					;	BR	SETSTD		;OK-- SET UP THE STD
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 65
SETUP STD ENTRY

   5062						.SBTTL	SETUP STD ENTRY
   5063					;
   5064					; WE HAVE THE LABEL BLOCK OF THE TASK FILE AND THE FIRST HEADER BLOCK
   5065					;	R1 --	ADDRESS OF LABEL BLOCK BUFFER
   5066					;	R2 --	ADDRESS OF HEADER BLOCK BUFFER
   5067					;
   5068	015600	013704 	014370'		SETSTD:	MOV	STDADR,R4	;ADDRESS OUR NEW-FOUND STD
   5069					;
   5070	015604	012703 	014362'			MOV	#REQBLK+4,R3	;POINT TO THE REQUEST INFO BLOCK
   5071	015610	022424 				CMP	(R4)+,(R4)+	;MOVE OVER NAME
   5072	015612	022121 				CMP	(R1)+,(R1)+	;(L$BTSK+0) (L$BTSK+2) SKIP OVER TASK NAME IN LABEL BLOCK
   5073					;
   5074					; FIND WHICH PARTITION TO INSTALL THE TASK INTO
   5075					; IF REQUEST DID NOT SPECIFY ONE, USE THE ONE SPECIFIED IN THE TASK FILE
   5076					;
   5077	015614	005713 				TST	(R3)		;PARTITION SPECIFIED IN REQUEST?
   5078	015616	001001 				BNE	20$		;YES-- LOOK FOR THAT ONE
   5079	015620	010103 				MOV	R1,R3		;NO-- (L$BPAR) USE PARTITION FROM TASK FILE
   5080					;
   5081					; FIND THE PARTITION WHERE WE BELONG
   5082					;
   5083	015622	022121 			20$:	CMP	(R1)+,(R1)+	;(L$BPAR+0) (L$BPAR+2) SKIP OVER PARTITION NAME IN LABEL
   5084	015624	012705 	000000G			MOV	#.TPDBA,R5	;START AT BEGINNING OF THE TASK PARTITION DIRECTORY
   5085					;
   5086	015630	026513 	000000G		21$:	CMP	T.PN+0(R5),(R3)	;FIRST HALF OF NAME MATCH?
   5087	015634	001004 				BNE	25$		;NO-- GO ON TO NEXT ENTRY
   5088	015636	026563 	000002G	000002 		CMP	T.PN+2(R5),2(R3) ;YES-- SECOND HALF MATCH?
   5089	015644	001432 				BEQ	PARFND		;YES-- WE FOUND THE PARTITION
   5090					;
   5091	015646	062705 	000000G		25$:	ADD	#T.SZ,R5	;NO-- BUMP TO NEXT ENTRY IN TPD
   5092	015652	020527 	000000G			CMP	R5,#.TPDEA	;ARE WE AT THE END OF THE DIRECTORY?
   5093	015656	103764 				BLO	21$		;NO-- KEEP LOOKING FOR OUR PARTITION
   5094	015660	010324 				MOV	R3,(R4)+	;YES-- PARTITION NOT FOUND-- SAVE ADDR OF NAME FOR ERR
   5095	015662					ERRF	PNF,<PARTITION NOT FOUND>
	000052	   120 	   101 	   122 		 .ASCIZ	\PARTITION NOT FOUND\
	000055	   124 	   111 	   124
	000060	   111 	   117 	   116
	000063	   040 	   116 	   117
	000066	   124 	   040 	   106
	000071	   117 	   125 	   116
	000074	   104 	   000
	015662	012746 	000052'			MOV	#$$$,-(SP)
	015666	004737 	017054'			JSR	PC,TYPMSG
	015672	000416 				 BR	CLSFIL
   5096					;
   5098	015674				IPAERR:	ERRF	IPA,<INVALID PARITITION ADR>
	000076	   111 	   116 	   126 		 .ASCIZ	\INVALID PARITITION ADR\
	000101	   101 	   114 	   111
	000104	   104 	   040 	   120
	000107	   101 	   122 	   111
	000112	   124 	   111 	   124
	000115	   111 	   117 	   116
	000120	   040 	   101 	   104
	000123	   122 	   000
	015674	012746 	000076'			MOV	#$$$,-(SP)
	015700	004737 	017054'			JSR	PC,TYPMSG
	015704	000411 				 BR	CLSFIL
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 65-1
SETUP STD ENTRY

   5100					;
   5101	015706				TTBERR:	ERRF	TTB,<TASK TOO BIG>
	000125	   124 	   101 	   123 		 .ASCIZ	\TASK TOO BIG\
	000130	   113 	   040 	   124
	000133	   117 	   117 	   040
	000136	   102 	   111 	   107
	000141	   000
	015706	012746 	000125'			MOV	#$$$,-(SP)
	015712	004737 	017054'			JSR	PC,TYPMSG
	015716	000404 				 BR	CLSFIL
   5102					;
   5103	015720				TNCERR:	ERR	TNC,<TASK FILE NOT CONTIGUOUS>
	000142	   124 	   101 	   123 		 .ASCIZ	\TASK FILE NOT CONTIGUOUS\
	000145	   113 	   040 	   106
	000150	   111 	   114 	   105
	000153	   040 	   116 	   117
	000156	   124 	   040 	   103
	000161	   117 	   116 	   124
	000164	   111 	   107 	   125
	000167	   117 	   125 	   123
	000172	   000
	015720	012746 	000142'			MOV	#$$$,-(SP)
	015724	004737 	017054'			JSR	PC,TYPMSG
   5104					;
   5105	015730	000575 			CLSFIL:	BR	FILERX		;CLOSE FILE IF FILE OPERN & ERROR
   5106					;
   5107					; PARTITION FOUND-- SAVE THE ADDRESS IN THE STD AND CHECK IT OUT
   5108					;
   5109	015732	010524 			PARFND:	MOV	R5,(R4)+	;(S.TD) SET ADDRESS OF TPD ENTRY
   5110					;
   5111	015734	022121 				CMP	(R1)+,(R1)+		;(L$BFLG) SKIP TASK FLAGS
   5112	015736	005724 				TST	(R4)+		;(S.TF) FLAG TASK TO RETSTE ON EXIT
   5113					;
   5114	015740	112724 	000062 			MOVB	#DEFPRI,(R4)+	;NONE-- USE DEFAULT
   5115					;
   5116	015744	013700 	014410'			MOV	PUDADR,R0	;GET THE ADDRESS WHERE WE FOUND OUR FILE
   5117	015750	012703 	177777 			MOV	#-1,R3		;START THE COUNT AT ZERO
   5118	015754	162700 	000000G			SUB	#.PUDBA,R0	;MAKE R0 INDEX INTO PUD
   5119	015760	005203 			30$:	INC	R3		;BUMP THE INDEX
   5120	015762	162700 	000050 			SUB	#U.SZ,R0	;DIVIDE PUD ADDRESS
   5121	015766	002374 				BGE	30$		; BY THE ENTRY SIZE
   5122	015770	110324 				MOVB	R3,(R4)+	;(S.DI) SYSTEM DISK INDICATOR
   5123					;
   5124	015772	016524 	000000G			MOV	T.BA(R5),(R4)+	;(S.BA) BASE ADDRESS OF TASK (NO KT-11)
   5128	015776	012114 				MOV	(R1)+,(R4)	;(L$BLDZ) (S.LZ) LOAD SIZE OF TASK
   5129	016000	006314 				ASL	(R4)		;MAKE IT REAL ADDRESS (*64)
   5130	016002	006314 				ASL	(R4)		; . .
   5131	016004	006314 				ASL	(R4)		; . .
   5132	016006	006314 				ASL	(R4)		; . .
   5133	016010	006314 				ASL	(R4)		; . .
   5134	016012	006324 				ASL	(R4)+		; . .
   5136	016014	012114 				MOV	(R1)+,(R4)	;(L$BMXZ) (S.MZ) MAXIMUM SIZE OF TASK
   5138	016016	006314 				ASL	(R4)		;MAKE REAL ADDRESS (*64)
   5139	016020	006314 				ASL	(R4)		; . .
   5140	016022	006314 				ASL	(R4)		; . .
   5141	016024	006314 				ASL	(R4)		; . .
   5142	016026	006314 				ASL	(R4)		; . .
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 65-2
SETUP STD ENTRY

   5143	016030	006314 				ASL	(R4)		; . .
   5145	016032	026524 	000000G			CMP	T.PZ(R5),(R4)+	;WILL TASK FIT IN PARTITION SPECIFIED?
   5146	016036	103723 				BLO	TTBERR		;NO-- DON'T TRY TO INSTALL IT
   5148	016040	026521 	000000G			CMP	T.BA(R5),(R1)+	;(L$BSA) IS TASK ADDRESS SAME AS PARTITION ADDRESS?
   5149	016044	001313 				BNE	IPAERR		;NO-- DON'T INSTALL IT
   5153					;
   5154	016046	016224 	000076 			MOV	H.IPC(R2),(R4)+	;(S.PC) SET INTIAL PC FROM HEADER
   5155	016052	016224 	000100 			MOV	H.ISP(R2),(R4)+	;(S.SP) ALSO INITIAL SP
   5156	016056	022424 				CMP	(R4)+,(R4)+	;MOVE OVER SEND/REQUEST LISTHEAD
   5157	016060	005024 				CLR	(R4)+		;(S.SS) SST VECTOR TABLE ADDRESS
   5158					;
   5159	016062	013714 	014464'			MOV	FILADR+0,(R4)	;(S.DL+0) DISK ADDRESS OF TASK IMAGE
   5160	016066	012400 				MOV	(R4)+,R0	;COPY IT IN CASE IT'S ZERO
   5161	016070	013714 	014466'			MOV	FILADR+2,(R4)	;(S.DL+2) SECOND HALF OF DISK ADDRESS
   5162	016074	051400 				BIS	(R4),R0		;WERE BOTH WORDS ZERO?
   5163	016076	001710 				BEQ	TNCERR		;YES-- TASK FILE IS NOT CONTIGUOUS
   5164	016100	062114 				ADD	(R1)+,(R4)	;(L$BHRB) + RELATIVE BLOCK IN FILE= REAL ADDRESS
   5165	016102	005544 				ADC	-(R4)		;ADD THE CARRY BACK TO HIGH ORDER WORD
   5166					;
   5167	016104	012137 	014414'			MOV	(R1)+,LBLNUM	;(L$BBLK) SAVE # BLOCKS IN LABEL GROUP FOR LATER
   5168					;	BR	SETLUN		;NOW SET UP THE LUN'S
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 66
SETUP LOGICAL UNIT TABLE FOR TASK

   5170						.SBTTL	SETUP LOGICAL UNIT TABLE FOR TASK
   5171					;
   5172					; LOOP THROUGH SECOND AND THIRD LABEL BLOCKS FOR ALL 255 LUNS
   5173					;	R2 --	ADDRESS OF HEADER BLOCK BUFFER
   5174					;
   5175	016110	062702 	000130 		SETLUN:	ADD	#H.NLUN,R2	;POINT TO # LUNS, AND LUN TABLE IN HEADER
   5176	016114	012205 				MOV	(R2)+,R5	;(H.NLUN) GET # LUNS TO SET UP, POINT TO LUN TABLE IN HEADER
   5177	016116	001471 				BEQ	80$		;NONE-- JUST CLOSE FILE
   5178	016120	013701 	014420'			MOV	LBLBFE,R1	;FORCE READ OF NEXT LABEL BLOCK
   5179					;
   5180					; SEE IF WE MUST WRITE OUT THIS BLOCK AND READ NEXT BLOCK OF HEADER
   5181					;
   5182	016124				10$:	CALL	NXTHDR		;GO ON TO NEXT BLOCK?
	016124	004737 	016644'			JSR	PC,NXTHDR
   5183	016130	103471 				BCS	FILERR		;FAILED
   5184					;
   5185					; SEE IF WE NEED TO READ ANOTHER LABEL BLOCK
   5186					;
   5187	016132	020137 	014420'		20$:	CMP	R1,LBLBFE	;HAVE WE FINISHED THIS LABEL BLOCK?
   5188	016136	103410 				BLO	30$		;NO-- JUST GET ANOTHER ENTRY FROM IT
   5189	016140	005004 				CLR	R4		;YES-- ASSUME NO MORE TO DO
   5190	016142	023737 	014412'	014414'		CMP	LBLBLK,LBLNUM	;HAVE WE RUN OUT OF LABEL BLOCKS?
   5191	016150	002043 				BGE	60$		;YES-- READ NO MORE-- JUST ZERO
   5192	016152					CALL	REDLBL		;YES-- READ NEXT ONE
	016152	004737 	016722'			JSR	PC,REDLBL
   5193	016156	103456 				BCS	FILERR		;SPLAT
   5194					;
   5195					; FIND THE PUD ADDRESS OF THE DEVICE FROM THE LABEL BLOCK
   5196					;
   5197	016160	005711 			30$:	TST	(R1)		;IS THIS A ZERO ENTRY?
   5198	016162	001434 				BEQ	40$		;YES-- JUST STORE ZERO
   5199	016164	013704 	014410'			MOV	PUDADR,R4	;ASSUME DEVICE OV
   5200	016170	022711 	053117 			CMP	#"OV,(R1)	;THIS OVERLAY DEVICE?
   5201	016174	001430 				BEQ	50$		;YES-- WE HAVE PUD ADDRESS
   5202					;
   5203	016176	012704 	000000G		31$:	MOV	#.PUDBA,R4	;NO-- START SEARCHING THROUGH THE PUD
   5204					;
   5205	016202	021164 	000000G		33$:	CMP	(R1),U.DN(R4)	;THIS OUR DEVICE?
   5206	016206	001004 				BNE	35$		;NO-- TRY ANOTHER ONE
   5207	016210	126164 	000002 	000000G		CMPB	2(R1),U.UN(R4)	;YES-- RIGHT UNIT #
   5208	016216	001417 				BEQ	50$		;YES-- WE HAVE PUD ADDRESS IN R4
   5209					;
   5210	016220	062704 	000050 		35$:	ADD	#U.SZ,R4	;NO-- BUMP TO NEXT PUD ENTRY
   5211	016224	020427 	000000G			CMP	R4,#.PUDEA	;END OF PUD YET?
   5212	016230	103764 				BLO	33$		;NO-- LOOK AT THIS ENTRY
   5213					;
   5214	016232	012704 	014654'			MOV	#CNVTBL,R4	;ENTRY NOT FOUND-- SEE IF CONVERTIBLE DEVICE
   5215					;
   5216	016236	022411 			37$:	CMP	(R4)+,(R1)	;DEVICE MATCH?
   5217	016240	001403 				BEQ	38$		;YES-- GET THE CONVERTED NAME AND GO AWAY
   5218	016242	005724 				TST	(R4)+		;NO-- IS THIS END OF TABLE?
   5219	016244	001374 				BNE	37$		;NO-- KEEP ON LOOKING
   5220	016246	000402 				BR	40$		;YES-- DEVICE NOT FOUND-- STORE 0
   5221					;
   5222	016250	011411 			38$:	MOV	(R4),(R1)	;DEVICE FOUND IN CONVERSION TABLE--
   5223	016252	000751 				BR	31$		; SAVE AS NEW DEVICE AND SCAN PUD FOR IT
   5224					;
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 66-1
SETUP LOGICAL UNIT TABLE FOR TASK

   5225	016254	005004 			40$:	CLR	R4		;ENTRY NOT FOUND-- CLEAR THE PUD ADDRESS
   5226					;
   5227	016256	022121 			50$:	CMP	(R1)+,(R1)+	;SKIP OVER ENTRY IN LABEL BLOCK
   5228					;
   5229	016260	010422 			60$:	MOV	R4,(R2)+	;STORE THE PUD ADDRESS IN LUT IN HEADER
   5230	016262					CALL	NXTHDR		;SEE IF WE NEED ANOTHER HEADER BLOCK
	016262	004737 	016644'			JSR	PC,NXTHDR
   5231	016266	103412 				BCS	FILERR		;I/O ERROR-- GIVE UP
   5232	016270	005022 				CLR	(R2)+		;CLEAR SECOND WORD OF HEADER ENTRY
   5233					;
   5234	016272	077564 				SOB	R5,10$		;LOOP FOR ALL LUNS IN HEADER
   5235	016274					CALL	WRTHDR		;WRITE OTU THE LAST HEADER BLOCK
	016274	004737 	016672'			JSR	PC,WRTHDR
   5236	016300	103405 				BCS	FILERR		;FAILED
   5237					;
   5238					; ALL DONE WITH THE TASK FILE-- CLOSE IT UP
   5239					;
   5240	016302				80$:	CALL	RETBUF		;RETURN THE BUFFERS
	016302	004737 	016440'			JSR	PC,RETBUF
   5241	016306					CALL	FILCLS		;CLOSE THE FILE
	016306	004737 	016762'			JSR	PC,FILCLS
   5242	016312	103075 				BCC	REQTSK		;OK-- GO PUT US IN THE STD
   5243					;
   5244					; ALL FILE I/O ERRORS END UP HERE
   5245					;
   5246	016314				FILERR:	ERR	IOE,<WRITE LOCKED DEVICE OR I/O ERROR ON TASK FILE>
	000173	   127 	   122 	   111 		 .ASCIZ	\WRITE LOCKED DEVICE OR I/O ERROR ON TASK FILE\
	000176	   124 	   105 	   040
	000201	   114 	   117 	   103
	000204	   113 	   105 	   104
	000207	   040 	   104 	   105
	000212	   126 	   111 	   103
	000215	   105 	   040 	   117
	000220	   122 	   040 	   111
	000223	   057 	   117 	   040
	000226	   105 	   122 	   122
	000231	   117 	   122 	   040
	000234	   117 	   116 	   040
	000237	   124 	   101 	   123
	000242	   113 	   040 	   106
	000245	   111 	   114 	   105
	000250	   000
	016314	012746 	000173'			MOV	#$$$,-(SP)
	016320	004737 	017054'			JSR	PC,TYPMSG
   5247	016324				FILERX:	CALL	FILCLS		;GIVE CLOSE A TRY
	016324	004737 	016762'			JSR	PC,FILCLS
   5248					;
   5249	016330	012746 	016620'		RETNOD:	MOV	#ALLDON,-(SP)	;RETURN ALL BUFFERS AND STD NODE
   5250	016334					.INH0			;;OTHER ERROR-- MUST REMOVE TASK FROM THE STD
	016334	013746 	177776 			MOV	@#PS,-(SP)
	016340	112737 	000140 	177776 		MOVB	#140,@#PS
   5251	016346	012701 	014356'			MOV	#REQBLK,R1	;FIND THE STD OF THIS TASK
   5252	016352					CALL	..FSTD
	016352	004737 	000000G			JSR	PC,..FSTD
   5253	016356	001015 				BNE	60$		;CAN'T FIND IT?????
   5254	016360	162737 	000002 	000000G		SUB	#2,.STDTZ	;;ONE LESS ENTRY IN THE STD NOW
   5255	016366	013705 	000000G			MOV	.STDTZ,R5	;; SO GET NEW LENGTH
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 66-2
SETUP LOGICAL UNIT TABLE FOR TASK

   5256	016372	063705 	000000G			ADD	.STDTA,R5	;;MAKE ADDRESS OF LAST ENTRY IN THE TABLE
   5257	016376	005743 				TST	-(R3)		;;BACK UP THE POINTER
   5258					;
   5259	016400	020305 			50$:	CMP	R3,R5		;;AT END OF TABLE YET?
   5260	016402	101003 				BHI	60$		;;YES-- ALL DONE
   5261	016404	016323 	000002 			MOV	2(R3),(R3)+	;;NO-- MOVE ANOTHER ENTRY DOWN
   5262	016410	000773 				BR	50$		;;LOOP TO MOVE WHOLE TABLE DOWN
   5263					;
   5264	016412				60$:	.ENB0			;;RESTORE TASK SWITCHING
	016412	004737 	000000G			JSR	PC,..ENB0
   5265					;
   5266					; RETALL -- RETURN ALL BUFFERS AND STD NODE
   5267					;
   5268	016416	013701 	014370'		RETALL:	MOV	STDADR,R1	;GET THE STD ADDRESS
   5269	016422	001406 				BEQ	RETBUF		;NONE-- JUST RETURN THE BUFFERS
   5270	016424	012704 	000000G			MOV	#.POLLH,R4	;ADD IT TO THE FREE POOL
   5271	016430					CALL	..NADD		;PUT IT BACK
	016430	004737 	000000G			JSR	PC,..NADD
   5272	016434	005037 	014370'			CLR	STDADR		;NO MORE STD NODE
   5273					;
   5274	016440	012701 	001000 		RETBUF:	MOV	#512.,R1	;SET TO RETURN A BLOCK
   5275	016444	012703 	000000G			MOV	#.BGBUF,R3	; TO THE BIG BUFFER LIST HEAD
   5276	016450	013700 	014416'			MOV	LBLBUF,R0	;GET ADDRESS OF LABEL BLOCK BUFFER
   5277	016454	001402 				BEQ	20$		;NONE-- TRY HEADER BUFFER
   5278	016456					CALL	..DEC2		;DE-ALLOCATE THE BUFFER
	016456	004737 	000000G			JSR	PC,..DEC2
   5279					;
   5280	016462	013700 	014424'		20$:	MOV	HDRBUF,R0	;ALSO THE HEADER BUFFER
   5281	016466	001402 				BEQ	CLRBUF		;NONE-- JUST CLEAN UP
   5282	016470					CALL	..DEC2		;DE-ALLOCATE THE HEADER BUFFER
	016470	004737 	000000G			JSR	PC,..DEC2
   5283					;
   5284	016474	005037 	014416'		CLRBUF:	CLR	LBLBUF		;NO MORE LABEL BUFFER
   5285	016500	005037 	014424'			CLR	HDRBUF		; OR HEADER BUFFER
   5286	016504					RETURN			;THAT'S IT
	016504	000207 				RTS	PC
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 67
RE-REQUEST TASK

   5288						.SBTTL	RE-REQUEST TASK
   5289					;
   5290					; TASK REQUEST BLOCK IS STILL SET UP FROM CALL
   5291					;
   5292	016506				REQTSK:	.INH0			;INHIBIT TASK SWITCHING
	016506	013746 	177776 			MOV	@#PS,-(SP)
	016512	112737 	000140 	177776 		MOVB	#140,@#PS
   5293	016520	013704 	014370'			MOV	STDADR,R4	;FIND STD ADDRESS
   5294	016524	042764 	040001 	000000G		BIC	#SF.TA!SF.IR,S.FW(R4)	;CLEAR ACTIVE BIT SO IT CAN BE REQUESTED
   5295	016532	012700 	014356'			MOV	#REQBLK,R0
   5296	016536					RQST$S	R0,,REQBLK+10	;RE-REQUEST TASK
	016536	005046 				CLR	-(SP)
	016540	013746 	014366'			MOV	REQBLK+10,-(SP)
	016544	005046 				CLR	-(SP)
	016546	005046 				CLR	-(SP)
	016550	016046 	000002 			MOV	2(R0),-(SP)
	016554	011046 				MOV	(R0),-(SP)
	016556	012746 				MOV	(PC)+,-(SP)
	016560	   013 	   007 			.BYTE	11.,7
	016562	104375 				EMT	375
   5297	016564					.ENB0			;ENABLE TASK SWITCHING
	016564	004737 	000000G			JSR	PC,..ENB0
   5298	016570	005737 	000000G			TST	$DSW		;SUCCESS/FAILURE?
   5299	016574	100011 				BPL	ALLDON		;SUCCESS -- ALL OK
   5300					;
   5301					; REQUEST FAILED-- IF TASK ALREADY ACTIVE, THAT'S OK
   5302					;
   5303	016576	023727 	000000G	177771 		CMP	$DSW,#IE.ACT	;TASK ALREADY ACTIVE?
   5304	016604	001405 				BEQ	ALLDON		;YES-- WE ARE HAPPY
   5305					;
   5306	016606					ERRN	TRF,<TASK REQUEST FAILED>
	000251	   124 	   101 	   123 		 .ASCIZ	\TASK REQUEST FAILED\
	000254	   113 	   040 	   122
	000257	   105 	   121 	   125
	000262	   105 	   123 	   124
	000265	   040 	   106 	   101
	000270	   111 	   114 	   105
	000273	   104 	   000
	016606	012746 	000251'			MOV	#$$$,-(SP)
	016612	004737 	017054'			JSR	PC,TYPMSG
	016616	000644 				 BR	RETNOD
   5307					;
   5308					; ALL DONE-- GO BACK TO WAITING
   5309					;
   5310	016620	000137 	014700'		ALLDON:	JMP	INSTAL		;RETURN AND EXIT IF NO MORE TO DO
   5311					;
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 68
TASK FILE I/O ROUTINES

   5313						.SBTTL	TASK FILE I/O ROUTINES
   5314					;
   5315					; FILFNA -- DO A 'FIND NAME IN DIRECTORY' FUNCTION TO FIND A FILE
   5316					;	FILBLK --	FILE-NAME BLOCK SET UP FOR DESIRED FILE
   5317					;
   5318	016624	012700 	004400 		FILFNA:	MOV	#IO.FNA,R0	;DO A FIND FILE IN DIRECTORY
   5319	016630	005001 				CLR	R1		;NO FILE-ID
   5320	016632	005002 				CLR	R2		;NO ATTRIBUTES
   5321	016634	005003 				CLR	R3		;NO ACCESS
   5322	016636	012704 	014430'			MOV	#FILBLK,R4	;SET TO DO IT TO THE RIGHT FILE
   5323	016642	000454 				BR	FILQIO		;GO DO IT AND RETURN
   5324					;
   5325					; NXTHDR -- ROUTINE TO WRITE OUT CURRENT HEADER BLOCK AND READ NEXT ONE
   5326					;		IF AT END OF BLOCK.
   5327					;	R2 -- POINTER TO HEADER BUFFER (HDR). UPDATED TO HDR+0 IF END OF BLOCK
   5328					;
   5329	016644	023702 	014426'		NXTHDR:	CMP	HDRBFE,R2	;END OF HEADER BUFFER?
   5330	016650	101023 				BHI	RETXXX		;NO-- JUST RETURN
   5331	016652					CALL	WRTHDR		;YES-- WRITE OUT OLD HEADER
	016652	004737 	016672'			JSR	PC,WRTHDR
   5332	016656	103420 				BCS	RETXXX		;ERROR-- RETURN WITH IT
   5333					;	BR	REDHDR		;READ THE NEXT ONE
   5334					;
   5335					; REDHDR -- READ NEXT HEADER BLOBK
   5336					;
   5337	016660	005237 	014422'		REDHDR:	INC	HDRBLK		;BUMP TO NEXT BLOCK OF HEADER
   5338	016664	012700 	010400 			MOV	#IO.RVB,R0	;DO A READ
   5339	016670	000402 				BR	RWRHDR		;DO IT TO HEADER BLOCK
   5340					;
   5341					; WRTHDR -- WRITE CURRENT HEADER BLOCK
   5342					;
   5343	016672	012700 	011000 		WRTHDR:	MOV	#IO.WVB,R0	;DO A WRITE
   5344					;	BR	RWRHDR		;READ/WRITE A BLOCK
   5345					;
   5346					; RWRHDR -- READ/WRITE HEADER BLOCK
   5347					;	R0 -- READ/WRTIE FUNCTION CODE
   5348					;
   5349	016676				RWRHDR:	PUSH	R1		;SAVE THE LABEL POINTER
	016676	010146 				MOV	R1,-(SP)
   5350	016700	013701 	014424'			MOV	HDRBUF,R1		;POINT TO HEADER BUFFER
   5351	016704	013703 	014422'			MOV	HDRBLK,R3	;SET PROPER VBN
   5352	016710					CALL	RWRBLK		;DO A BLOCK
	016710	004737 	016754'			JSR	PC,RWRBLK
   5353	016714	010102 				MOV	R1,R2		;POINT R2 TO HDR BUFFER
   5354	016716					POP	R1		;RESTORE LABEL POINTER
	016716	012601 				MOV	(SP)+,R1
   5355	016720				RETXXX:	RETURN			;WITH CC-C SET/CLEAR BY RWRBLK
	016720	000207 				RTS	PC
   5356					;
   5357					; REDLBL -- READ NEXT LABEL BLOCK
   5358					;
   5359	016722				REDLBL:	PUSH	R2		;SAVE THE HEADER POINTER
	016722	010246 				MOV	R2,-(SP)
   5360	016724	012700 	010400 			MOV	#IO.RVB,R0	;DO A READ
   5361	016730	013701 	014416'			MOV	LBLBUF,R1		; TO THE LABEL BUFFER
   5362	016734	005237 	014412'			INC	LBLBLK		;BUMP TO NEXT LABEL BLOCK
   5363	016740	013703 	014412'			MOV	LBLBLK,R3	; AND SAVE AS VBN TO READ
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 68-1
TASK FILE I/O ROUTINES

   5364	016744					CALL	RWRBLK		;READ THE BLOCK
	016744	004737 	016754'			JSR	PC,RWRBLK
   5365	016750					POP	R2		;RESTORE THE HEADER POINTER
	016750	012602 				MOV	(SP)+,R2
   5366	016752					RETURN			;CC-C SET/CLEAR BY RWRBLK, R1 POINTS TO LBL BUFFER
	016752	000207 				RTS	PC
   5367					;
   5368					; RWRBLK -- READ/WRITE A BLOCK
   5369					;	R0 --	READ/WRITE FUNCTION CODE
   5370					;	R1 --	ADDRESS OF BUFFER
   5371					;	R3 --	VIRTUAL BLOCK NUMBER IN TASK FILE
   5372					;
   5373	016754	012702 	001000 		RWRBLK:	MOV	#512.,R2	;SET TO READ ONE BLOCK
   5374	016760	000405 				BR	FILQIO		;DO IT TO TASK FILE
   5375					;
   5376					; FILCLS -- DE-ACCESS THE TASK FILE
   5377					;
   5378	016762	012700 	010000 		FILCLS:	MOV	#IO.DAC,R0	;DE-ACCESS FUNCTION
   5379	016766	005001 				CLR	R1		;NO FILE-ID BLOCK
   5380	016770	005002 				CLR	R2		;NO ATTRIBUTES ALLOWED
   5381	016772	005004 				CLR	R4		;NO FILE-NAME BLOCK EITHER
   5382					;	BR	FILQIO		;DO IT TO TASK FILE
   5383					;
   5384					; FILQIO -- PERFORM QUEUE I/O FUNCTION ON THE TASK FILE
   5385					;	R0 --	FUNCTION CODE
   5386					;	R1 --	PARAMETER #1 (FILE-ID BLOCK OR BUFFER ADDRESS)
   5387					;	R2 --	PARAMETER #2 (ATTRIBUTE CONTROL BLOCK OR BUFFER LENGTH)
   5388					;	R3 --	PARAMETER #5 (ACCESS CONTROL OR VIRTUAL BLOCK NUMBER)
   5389					;	R4 --	PARAMETER #6 (FILENAME BLOCK)
   5390					;
   5391					; CC-C CLEAR IF SUCCESS, SET IF FAILURE.
   5392					;
   5393	016774				FILQIO:	QIOW$S	R0,#TSKLUN,#E.FQIO,,#QIOSTS,,<R1,R2,,,R3,R4>
	016774	010446 				MOV	R4,-(SP)
	016776	010346 				MOV	R3,-(SP)
	017000	005046 				CLR	-(SP)
	017002	005046 				CLR	-(SP)
	017004	010246 				MOV	R2,-(SP)
	017006	010146 				MOV	R1,-(SP)
	017010	005046 				CLR	-(SP)
	017012	012746 	014470'			MOV	#QIOSTS,-(SP)
	017016	005046 				CLR	-(SP)
	017020	112716 	000001 			MOVB	#E.FQIO,(SP)
	017024	012746 	000002 			MOV	#TSKLUN,-(SP)
	017030	010046 				MOV	R0,-(SP)
	017032	012746 				MOV	(PC)+,-(SP)
	017034	   003 	   014 			.BYTE	3,$$$T1
	017036	104375 				EMT	375
   5394	017040	103404 				BCS	90$		;GIVE UP
   5395					;
   5396	017042	105737 	014470'		30$:	TSTB	QIOSTS+0	;I/O SUCCESSFUL?
   5397	017046	002001 				BGE	90$		;YES-- JUST RETURN WITH CC-C CLEAR
   5398					;
   5399	017050	000261 			80$:	SEC			;NO-- RETURN ERROR
   5400	017052				90$:	RETURN			;RETURN FROM FILQIO
	017052	000207 				RTS	PC
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 69
ERROR PROCESSING

   5402						.SBTTL	ERROR PROCESSING
   5403					;
   5404					; TYPMSG -- TYPE A MESSAGE
   5405					;
   5406					; CALL:	PUSH	#<ADDRESS OF ASCIZ TEXT>
   5407					;	CALL	TYPMSG
   5408					;
   5409	017054				TYPMSG:	PUSH	<R0,R1,R2,R3,R4> ;SAVE USED REGISTERS
	017054	010046 				MOV	R0,-(SP)
	017056	010146 				MOV	R1,-(SP)
	017060	010246 				MOV	R2,-(SP)
	017062	010346 				MOV	R3,-(SP)
	017064	010446 				MOV	R4,-(SP)
   5410	017066	012704 	014474'			MOV	#TYPBUF,R4	;SET ADDRESS OF TYPEOUT BUFFER
   5411	017072	012703 	017364'			MOV	#INSMSG,R3	;GET 'INS --'
   5412	017076					CALL	PUTSTR		;PUT IT IN STRING
	017076	004737 	017256'			JSR	PC,PUTSTR
   5413	017102	016603 	000014 			MOV	14(SP),R3	;GET ADDRESS OF THE TEXT TO TYPE
   5414	017106					CALL	PUTSTR		;TYPE IT
	017106	004737 	017256'			JSR	PC,PUTSTR
   5415	017112	012703 	017376'			MOV	#TSKMSG,R3	;GET 'TSK= '
   5416	017116					CALL	PUTSTR		;PUT IT TOO
	017116	004737 	017256'			JSR	PC,PUTSTR
   5417	017122	012703 	014356'			MOV	#REQBLK,R3	;POINT TO .RAD50 /TASK-NAME/
   5418	017126					CALL	PUTR50		;PUT IT IN THERE, TOO
	017126	004737 	017266'			JSR	PC,PUTR50
   5419	017132	013702 	014370'			MOV	STDADR,R2	;GET THE ADDRESS OF THE STD
   5420	017136	016202 	000000G			MOV	S.TD(R2),R2	;GET ADDRESS OF .RAD50/PARTITION/
   5421	017142	001407 				BEQ	20$		;NONE-- SKIP THIS
   5422	017144	012703 	017405'			MOV	#PARMSG,R3	;SAY 'PAR= '
   5423	017150					CALL	PUTSTR		; . .
	017150	004737 	017256'			JSR	PC,PUTSTR
   5424	017154	010203 				MOV	R2,R3		;GET THE NAME ADDRESS
   5425	017156					CALL	PUTR50		;PUT IT IN STRING
	017156	004737 	017266'			JSR	PC,PUTR50
   5426					;
   5427	017162	112724 	000012 		20$:	MOVB	#12,(R4)+	;STORE LF
   5428	017166	112724 	000015 			MOVB	#15,(R4)+	;STORE CR
   5429	017172	012700 	014474'			MOV	#TYPBUF,R0	;GET ADDRESS OF BUFFER BACK
   5430	017176	160004 				SUB	R0,R4		;COMPUTE LENGTH OF STRING
   5431	017200					QIOW$S	#IO.WLB,#CTYLUN,#E.FQIO,,,,<R0,R4,#40>
	017200	012746 	000040 			MOV	#40,-(SP)
	017204	010446 				MOV	R4,-(SP)
	017206	010046 				MOV	R0,-(SP)
	017210	005046 				CLR	-(SP)
	017212	005046 				CLR	-(SP)
	017214	005046 				CLR	-(SP)
	017216	112716 	000001 			MOVB	#E.FQIO,(SP)
	017222	012746 	000001 			MOV	#CTYLUN,-(SP)
	017226	012746 	000400 			MOV	#IO.WLB,-(SP)
	017232	012746 				MOV	(PC)+,-(SP)
	017234	   003 	   011 			.BYTE	3,$$$T1
	017236	104375 				EMT	375
   5432	017240					POP	<R4,R3,R2,R1,R0> ;RESTORE THE REGISTERS
	017240	012604 				MOV	(SP)+,R4
	017242	012603 				MOV	(SP)+,R3
	017244	012602 				MOV	(SP)+,R2
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 69-1
ERROR PROCESSING

	017246	012601 				MOV	(SP)+,R1
	017250	012600 				MOV	(SP)+,R0
   5433	017252					POP	(SP)		;RESTORE PC OVER MESSAGE ADDRESS
	017252	012616 				MOV	(SP)+,(SP)
   5434	017254					RETURN			;THAT'S IT FOR TYPMSG
	017254	000207 				RTS	PC
   5435					;
   5436					; PUTSTR -- PUT STRING IN TYPE-OUT BUFFER
   5437					;	R3 --	ADDRESS OF ASCIZ STRING
   5438					;	R4 --	CURRENT POINTER TO TYPE-OUT BUFFER
   5439					;
   5440	017256	112324 			PUTSTR:	MOVB	(R3)+,(R4)+	;COPY A CHARACTER
   5441	017260	001376 				BNE	PUTSTR		; UNTIL ASCIZ
   5442	017262	105744 				TSTB	-(R4)		;BACK OVER ZERO BYTE
   5443	017264					RETURN			;RETURN FROM PUTSTR
	017264	000207 				RTS	PC
   5444					;
   5445					; PUTR50 -- PUT RADIX 50 NAME IN TYPE-OUT BUFFER
   5446					;	R3 --	ADDRESS OF TWO-WORD RADIX 50 BLOCK
   5447					;	R4 --	CURRENT POINTER TO TYPE-OUT BUFFER
   5448					;
   5449	017266	012300 			PUTR50:	MOV	(R3)+,R0	;GET FIRST 3 CHARS
   5450	017270					CALL	PUTR51		;TYPE 'EM
	017270	004737 	017276'			JSR	PC,PUTR51
   5451	017274	012300 				MOV	(R3)+,R0	;GET NEXT THREE CHARS
   5452					;	BR	PUTR51		;PUT THEM, TOO
   5453					;
   5454					; PUTR51 -- PUT 3 RADIX 50 CHARACTERS IN TYPE-OUT BUFFER
   5455					;	R0 --	RADIX 50 TEXT
   5456					;	R4 --	CURRENT POINTER TO TYPE-OUT BUFFER
   5457					;
   5458	017276	012702 	017340'		PUTR51:	MOV	#T50TBL,R2	;POINT TO TABLE OF DIVISORS
   5459					;
   5460	017302	012201 			20$:	MOV	(R2)+,R1	;GET NEXT DIVISOR
   5461	017304	001414 				BEQ	90$		;THREE HAVE BEEN DONE-- RETURN
   5462	017306					CALL	$DIV		;DIVIDE CURRENT TEXT BY 50**N
	017306	004737 	000032'			JSR	PC,$DIV
   5463	017312					PUSH	R1		;SAVE THE REMAINDER
	017312	010146 				MOV	R1,-(SP)
   5464	017314	012701 	017350'			MOV	#R50TBL,R1	;POINT TO CONVERSION TABLE
   5465					;
   5466	017320	061100 			30$:	ADD	(R1),R0		;CONVERT THE CHARACTER
   5467	017322	105721 				TSTB	(R1)+		;SKIP THE BYTE
   5468	017324	120021 				CMPB	R0,(R1)+	;HAVE WE FOUND THE CHAR YET?
   5469	017326	103774 				BLO	30$		;NO-- LOOP UNTIL WE DO
   5470					;
   5471	017330	110024 				MOVB	R0,(R4)+	;YES-- SAVE THE CHAR IN TEXT
   5472	017332					POP	R0		;RESTORE LAST REMAINDER AS NEW DIVIDEND
	017332	012600 				MOV	(SP)+,R0
   5473	017334	000762 				BR	20$		;GET ANOTHER CHARACTER
   5474					;
   5475	017336				90$:	RETURN			;FROM PUTR50/PUTR51
	017336	000207 				RTS	PC
   5476					;
   5477	017340	003100 	000050 	000001 	T50TBL:	.WORD	50*50,50,1,0	;TABLE OF DIVISORS
	017346	000000
   5478					;
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 69-2
ERROR PROCESSING

   5479	017350	   022 	   060 		R50TBL:	.BYTE	<'0-36>-<50-50>,'0 ;36-47: 0-9
   5480	017352	   366 	   045 			.BYTE	<'%-35>-<'0-36>,'% ;35   : %
   5481	017354	   012 	   056 			.BYTE	<'.-34>-<'%-35>,'. ;34   : .
   5482	017356	   367 	   044 			.BYTE	<'$-33>-<'.-34>,'$ ;33   : $
   5483	017360	   067 	   101 			.BYTE	<'A-01>-<'$-33>,'A ;01-32: A-Z
   5484	017362	   340 	   040 			.BYTE	<' -00>-<'A-01>,'  ;00   : <SPACE>
   5485						.EVEN
   5486					;
   5487	017364	   015 	   012 	   111 	INSMSG:	.ASCIZ	<15><12>/INS -- /
	017367	   116 	   123 	   040
	017372	   055 	   055 	   040
	017375	   000
   5488	017376	   040 	   040 	   124 	TSKMSG:	.ASCIZ	/  TSK=/
	017401	   123 	   113 	   075
	017404	   000
   5489	017405	   040 	   120 	   101 	PARMSG:	.ASCIZ	/ PAR=/
	017410	   122 	   075 	   000
   5490						.EVEN
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 70
END STATEMENT

   5492						.SBTTL	END STATEMENT
   5493		000001 				       .END
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 70-1
SYMBOL TABLE

AC.ENA= 000200   	CDSIEN= 000100   	DBIOD   000370R  	DR.DTE= 000011   	EF.CRD= 000002
ADRSAV= ****** GX	CDSNXM= 001000   	DCK   = 100000   	DSEND = 000004   	EF.CRS= 000004
ALLDON  016620R  	CDSOFL= 010000   	DCOMST= 000001   	DS04  = 004000   	EF.IOD= ****** GX
AOE   = 001000   	CDSPAK= 000002   	DD.CHI= 000002   	DS05  = 002000   	EF.LPC= 000002
ATCBLK  014640R  	CDSPWC= 000400   	DD.HEM= 000010   	DS06  = 001000   	EF.LPD= 000001
A.EF  = 000020   	CDSRCK= 040000   	DD.LER= 000010   	DTBUF = ****** GX	EF.LPQ= 000004
A.HA  = ****** GX	CDSRDY= 000200   	DD.OVF= 000020   	DTCNT = ****** GX	EF.LPS= 000020
BCFHDS  011142R  	CDSRED= 000001   	DD.PCK= 000002   	DTCW2 = ****** GX	EF.LPW= 000040
BCFILF  011076R  	CDST  = ****** GX	DD.PGZ= 000001   	DTCW3 = ****** GX	EF.NIR= ****** GX
BCFLDR  011162R  	CDSTOL= 000010   	DD.RCK= 000001   	DTE   = 010000   	EF.QIO= 000001
BCFLDV  011170R  	CHNPNT= 000001   	DD.RME= 000040   	DTECMD= 000451   	EF.SEP= 100000
BCFRDS  011076R  	CHRINT= 020000   	DD.SCK= 000004   	DTEFLG= 000444   	EF.TEF= 000400
BCFSDO  011122R  	CLIOD   000374R  	DD.SFL= 000020   	DTEF11= 000450   	EPTR  = 000000
BCFSTR  011204R  	CLRBUF  016474R  	DD.VFE= 000004   	DTEMTD= 000455   	ERMHER  007767R
BCFTAB  011060R  	CLSFIL  015730R  	DEFPRI= 000062   	DTEMTI= 000456   	ERMHNG  010004R
BC.HDS= ****** GX	CNUPE = 000002   	DELHLD= 002000   	DTEXP = 177340   	ERMNXD  007715R
BC.LDR= ****** GX	CNVTBL  014654R  	DEMTIM= 000002   	DTHD    002056RG 	ERMOFL  007735R
BC.LDV= ****** GX	CPE   = 000010   	DEP   = 010000   	DTINI   002442R  	ERMVFE  007750R
BC.RDS= ****** GX	CPUNUM= 000002   	DEX   = 000400   	DTNRM   002366R  	ERR   = 100000
BC.SDS= ****** GX	CRBFLN= ****** GX	DEXDON= 000004   	DTOUT   002606R  	ERR10C= 010000
BC.STR= ****** GX	CRBUFF= ****** GX	DEXWD1= 174406   	DTRTC = ****** GX	ERR10S= 020000
BIT0  = 000001   	CRCEVF= ****** GX	DEXWD2= 174404   	DTSTK   002336RG 	ERR11C= 000001
BIT1  = 000002   	CRDCLR  013556R  	DEXWD3= 174402   	DTTSK = ****** GX	ERR11S= 000002
BIT10 = 002000   	CRDINT  013026R  	DFUNC = 000200   	DUNS    000460R  	EXSP    014350RG
BIT11 = 004000   	CREVFG= ****** GX	DF.DMG= 000004   	DUPE  = 000020   	E.FCRB= 000004
BIT12 = 010000   	CREXP = ****** GX	DF.DMN= 000007   	DURE  = 000004   	E.FCRC= 000001
BIT13 = 020000   	CRHD    011776RG 	DF.DOR= 000001   	DVA   = 004000   	E.FCRD= 000002
BIT14 = 040000   	CRHUNG= ****** GX	DF.EHG= 000010   	DV.EOF= 000040   	E.FCRS= 000003
BIT15 = 100000   	CRINI   012360R  	DF.EHM= 000011   	DV.F11= 000400   	E.FLPC= 000002
BIT2  = 000004   	CRIOD   012532R  	DF.EMG= 000005   	DV.HNG= 001000   	E.FLPD= 000001
BIT3  = 000010   	CRLOOP  012444R  	DF.EMN= 000006   	DV.IOP= 000020   	E.FLPQ= 000003
BIT4  = 000020   	CRMKT   012776R  	DF.KLR= 000012   	DV.LOG= 000100   	E.FLPS= 000005
BIT5  = 000040   	CRMRKT  012276R  	DF.KLW= 000013   	DV.NXD= 000001   	E.FLPW= 000006
BIT6  = 000100   	CRPWUP  012352R  	DF.KLX= 000014   	DV.OFL= 000002   	E.FQIO= 000001
BIT7  = 000200   	CRSSTV  012310R  	DF.OFF= 000002   	DV.OIR= 000004   	E.IOD = ****** GX
BIT8  = 000400   	CRSTBK= ****** GX	DF.ON = 000003   	DV.SCN= 000010   	E.NIR = ****** GX
BIT9  = 001000   	CRSTK   012256RG 	DF.PDP= 000016   	DV.URE= 000200   	FCN     004606R
BLKTT = ****** GX	CRSTLN= ****** GX	DF.PEX= 000015   	DXFLAG  014350R  	FCNBD   004614R
BPARER= 000020   	CRSTS = ****** GX	DIAG1 = 174430   	DXWD1 = 000006   	FEDRV   003622R
BUFAIL  015434R  	CRTBL = ****** GX	DIAG2 = 174432   	DXWD2 = 000004   	FEHD    003322RG
BUSA16= 000020   	CRTRP4  012312R  	DIAG3 = 174436   	DXWD3 = 000002   	FER   = 000020
BUSA17= 000040   	CR.ACK= 004000   	DIKL10= 000010   	DXWRD1= 002000   	FESTK   003602RG
BYTESA= ****** GX	CR.HNG= 100000   	DLT   = 100000   	D$$H11= 000010   	FETBL = ****** GX
CDBA  = ****** GX	CR.IOD= 010000   	DLYCNT= 174400   	D.CCDR= ****** GX	FETSK = ****** GX
CDBPCK= 020000   	CR.IOP= 020000   	DNBLK = ****** GX	D.CLPT= ****** GX	FE.DET= 040000
CDBRCK= 040000   	CR.NSF= 000400   	DNFCN = ****** GX	D.FEPD= ****** GX	FE.DTE= 020000
CDBSCK= 010000   	CR.NXD= 001000   	DNMSG   000442R  	D1011 = 000040   	FE.SER= 004000
CDCC  = ****** GX	CR.RHN= 002000   	DNSTS = ****** GX	EBSEL = 000100   	FE.STR= 002000
CDD   = 000020   	CR.SST= 040000   	DONE  = 000200   	EBUSPC= 000020   	FILADR  014464R
CDDB  = ****** GX	CS.EXP= 177670   	DONSTR  004536R  	EBUSPS= 000004   	FILBLK  014430R
CDSB16= 000020   	CTYLUN= 000001   	DON10C= 040000   	ECCMSK  000504R  	FILCLS  016762R
CDSB17= 000040   	C$$D11= 000001   	DON10S= 100000   	ECCWRD  000476R  	FILERA  015430R
CDSDER= 004000   	C.LEEF= 000002   	DON11C= 000100   	ECH   = 000100   	FILERR  016314R
CDSDLT= 002000   	DAG1  = 000030   	DON11S= 000200   	ECI   = 004000   	FILERX  016324R
CDSEOF= 020000   	DAG2  = 000032   	DPS4  = 040000   	EDONES= 040000   	FILFNA  016624R
CDSERR= 100000   	DAG3  = 000036   	DRESET= 000100   	EF.CRB= 000010   	FILQIO  016774R
CDSHEM= 000004   	DBINI   000512R  	DRY   = 000200   	EF.CRC= 000001   	FMT22 = 010000
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 70-2
SYMBOL TABLE

FNDFIL  015170R  	IE.IFC= 177776   	INTSON= 000001   	IO.REL= 013400   	LOBYTE= 000377
FORPRO= 000020   	IE.IFU= 177747   	INT10S= 000400   	IO.RHD= 001010   	LOINIT= 000400
GO    = 000001   	IE.ILL= 177726   	INT11C= 002000   	IO.RLB= 001000   	LPALOC= 000214
GOERR = 000001   	IE.ILU= 177640   	INT11S= 004000   	IO.RLV= 001100   	LPBCTR= 000006 G
HCE   = 000200   	IE.INS= 177776   	IOABT   004554R  	IO.RNA= 005400   	LPBSAD= 000004 G
HCI   = 002000   	IE.IPR= 177641   	IODN    004162R  	IO.RNC= 001004   	LPCBUF= 000014 G
HCRC  = 000400   	IE.ISQ= 177703   	IODNCR  013734R  	IO.RNE= 001020   	LPCCTR= 000015 G
HDRBFE  014426R  	IE.ITI= 177643   	IO.ACE= 007400   	IO.RTC= 003400   	LPCEVF= ****** GX
HDRBLK  014422R  	IE.ITS= 177770   	IO.ACR= 006400   	IO.RTI= 016400   	LPCKSM= 000017 G
HDRBUF  014424R  	IE.LCK= 177745   	IO.ACW= 007000   	IO.RTK= 000060   	LPCSA = ****** GX
HIBYTE= 177400   	IE.LNL= 177646   	IO.ADS= 014000   	IO.RVB= 010400   	LPCSM = ****** GX
H.IPC = 000076   	IE.MBK= 177721   	IO.APC= 014000   	IO.RWD= 002400   	LPCSRA= 000000 G
H.ISP = 000100   	IE.MOD= 177753   	IO.APV= 014010   	IO.RWU= 002540   	LPCSRB= 000002 G
H.LUN = 000132   	IE.NBF= 177731   	IO.ATT= 001400   	IO.R1C= 002400   	LPDCLR  010424R
H.LUT = ****** GX	IE.NBK= 177727   	IO.CCI= 014000   	IO.SAO= 004000   	LPDINT  006776R
H.NLUN= 000130   	IE.NFI= 177704   	IO.CCT= 002460   	IO.SCS= 013000   	LPEMSG  007662R
IAE   = 002000   	IE.NLN= 177733   	IO.CLN= 003400   	IO.SDI= 013000   	LPEMSX  007675R
IE.ABO= 177761   	IE.NNC= 177674   	IO.CON= 015400   	IO.SDO= 012400   	LPERUN  007672R
IE.ACT= 177771   	IE.NOD= 177751   	IO.CRC= 001020   	IO.SEC= 002520   	LPEVFG= ****** GX
IE.ADP= 177636   	IE.NSF= 177746   	IO.CRE= 012000   	IO.SEM= 002440   	LPEXPA= ****** GX
IE.ALN= 177736   	IE.OFL= 177677   	IO.CTI= 015400   	IO.SHT= 002410   	LPEXPZ= ****** GX
IE.AST= 177660   	IE.ONP= 177773   	IO.CTL= 016400   	IO.SLO= 005400   	LPHD    005060RG
IE.BAD= 177777   	IE.OVR= 177756   	IO.DAC= 010000   	IO.SMO= 002560   	LPHUNG= ****** GX
IE.BBE= 177710   	IE.PRI= 177760   	IO.DCI= 014400   	IO.SNM= 002450   	LPINI   005450R
IE.BDI= 177714   	IE.RAC= 177724   	IO.DCT= 002470   	IO.SPB= 002420   	LPIOD   005622R
IE.BDR= 177716   	IE.RAT= 177723   	IO.DEL= 012400   	IO.SPF= 002440   	LPITH = ****** GX
IE.BDV= 177711   	IE.RBG= 177730   	IO.DET= 002000   	IO.SSO= 004400   	LPLOOP  005534R
IE.BHD= 177700   	IE.RCN= 177722   	IO.DIS= 016000   	IO.SST= 002430   	LPMCB = ****** GX
IE.BLK= 177754   	IE.RER= 177740   	IO.DTI= 016000   	IO.STC= 002500   	LPMKT   006742R
IE.BNM= 177712   	IE.RNM= 177715   	IO.ENA= 006000   	IO.STP= 016400   	LPMRKT  005360R
IE.BTF= 177675   	IE.RSU= 177757   	IO.EOF= 003000   	IO.SYN= 003040   	LPNIR   006502R
IE.BTP= 177725   	IE.SDP= 177635   	IO.ESA= 002500   	IO.TRM= 002410   	LPPCTR= 000010 G
IE.BVR= 177701   	IE.SNC= 177735   	IO.EXT= 011400   	IO.UNL= 000042   	LPQDPB  007640R
IE.BYT= 177755   	IE.SPC= 177772   	IO.FDX= 003020   	IO.WAT= 013400   	LPRAMD= 000012 G
IE.CKP= 177766   	IE.SQC= 177734   	IO.FNA= 004400   	IO.WLB= 000400   	LPRMA = ****** GX
IE.CKS= 177742   	IE.SRE= 177762   	IO.HDX= 003010   	IO.WLS= 000410   	LPRMC = ****** GX
IE.CLO= 177732   	IE.STK= 177706   	IO.HIS= 015000   	IO.WLV= 000500   	LPRMZ = ****** GX
IE.CON= 177752   	IE.ULN= 177773   	IO.INL= 002400   	IO.WVB= 011000   	LPRTRY= 000012
IE.DAA= 177770   	IE.UPN= 177777   	IO.ITI= 017000   	IO.XMT= 014400   	LPRTY = ****** GX
IE.DAO= 177763   	IE.VER= 177774   	IO.KIL= 000012   	IO.XNA= 014410   	LPSIZE= ****** GX
IE.DFU= 177750   	IE.WAC= 177743   	IO.LED= 012000   	IPAERR  015674R  	LPSSTV  005404R
IE.DNA= 177771   	IE.WAT= 177741   	IO.LOV= 001010   	IQ.Q  = 000002   	LPSTBK= ****** GX
IE.DNR= 177775   	IE.WER= 177737   	IO.LTK= 000050   	IQ.X  = 000001   	LPSTK   005340RG
IE.DUN= 177767   	IE.WLK= 177764   	IO.MCS= 013400   	IS.BV = 000005   	LPSTLN= ****** GX
IE.DUP= 177707   	IE.2DV= 177720   	IO.MDA= 016000   	IS.CLR= 000000   	LPTBL = ****** GX
IE.EBX= 177776   	IFLOP = 100000   	IO.MDI= 014400   	IS.CR = 006401   	LPTDAT= 000016 G
IE.EOF= 177766   	ILF   = 000001   	IO.MDO= 015400   	IS.ESC= 015401   	LPTHD = ****** GX
IE.EOT= 177702   	ILR   = 000002   	IO.MLO= 006000   	IS.PND= 000000   	LPTPAR= 000040
IE.EOV= 177765   	INITCR  013542RG 	IO.MOD= 003000   	IS.RDD= 000002   	LPTPBT= 010000
IE.EXP= 177676   	INITLP  010354RG 	IO.MSO= 005000   	IS.SET= 000002   	LPTRP4  005406R
IE.FEX= 177717   	INSHD   013750RG 	IO.RAL= 001010   	IS.SUC= 000001   	LPUNIT= ****** GX
IE.FHE= 177705   	INSMSG  017364R  	IO.RAT= 013000   	KLPWRF= 000010   	LPUTBL= ****** GX
IE.FOP= 177713   	INSTAL  014700RG 	IO.RBC= 003000   	LBLBFE  014420R  	LPWRUP  005442R
IE.HFU= 177744   	INSTK   014230RG 	IO.RCI= 015000   	LBLBLK  014412R  	LP.CLR= 002000
IE.HWR= 177772   	INTENB= 000100   	IO.RCV= 015000   	LBLBUF  014416R  	LP.EOF= 000200
IE.IDU= 177644   	INTROF= 000010   	IO.RDB= 001200   	LBLNUM  014414R  	LP.F10= 000400
IE.IEF= 177637   	INTRON= 000040   	IO.RDN= 000022   	LOAD11= 000004   	LP.HNG= 100000
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 70-3
SYMBOL TABLE

LP.LIP= 001000   	PARFND  015732R  	RETXXX  016720R  	STAT  = 174434   	TTBERR  015706R
LP.MCH= 010000   	PARMSG  017405R  	RFMAD0= 100000   	STATD = 000034   	TTPEN = ****** GX
LP.PZI= 020000   	PBTHRD= 000004   	RFMAD1= 040000   	STATUS= 000022   	TYPBUF  014474R
LP.SST= 040000   	PERCLR= 001000   	RFMAD2= 020000   	STDADR= 014370R  	TYPMSG  017054R
LP.UNT= 000003   	PGE   = 002000   	RFMAD3= 010000   	STSWD = ****** GX	T.BA  = ****** GX
LP.WAT= 004000   	PGM   = 001000   	RM    = 000010   	SWR   = 177570   	T.HBCT= ****** GX
L$BBLK= 000024   	PHYS  = 100000   	RMR   = 000004   	SWSLLT= 100000   	T.HCAD= ****** GX
L$BFLG= 000010   	PIDENT= 000000   	RPAS  = 000016   	SYFLAG  014351R  	T.HCBC= ****** GX
L$BHRB= 000022   	PRI7  = 000340   	RPBA  = 000004   	SYMNTD  015102R  	T.HEMA= 177774
L$BLDZ= 000014   	PROPNT= 000021   	RPBUF = ****** GX	SYMNT1  015146R  	T.HIBC= 177776
L$BMXZ= 000016   	PRTOFF= 004000   	RPCNT = ****** GX	SYNTIM= 000004   	T.HVFC= 177775
L$BPAR= 000004   	PR0   = 000000   	RPCS1 = 000000   	S.DRFN= 000034   	T.PN  = ****** GX
L$BPRI= 000012   	PR1   = 000040   	RPCS2 = 000010   	S.FW  = ****** GX	T.PZ  = ****** GX
L$BSA = 000020   	PR2   = 000100   	RPDA  = 000006   	S.TD  = ****** GX	T.SZ  = ****** GX
L$BTSK= 000000   	PR3   = 000140   	RPDBR = 000022   	TASKNF  015324R  	T10AD = 000020
L$$P20= 000002   	PR4   = 000200   	RPDC  = 000034   	TB.ABO= 040000   	T11AD = 000022
MCPE  = 020000   	PR5   = 000240   	RPDS  = 000012   	TB.DON= 100000   	T11BC = 000016
MDPE  = 000400   	PR6   = 000300   	RPDT  = 000026   	TB.EOF= 020000   	T50TBL  017340R
MEFCN   004616R  	PR7   = 000340   	RPEC1 = 000044   	TB.LPC= 010000   	UF.TL = ****** GX
MEMPAR= 000020   	PS    = 177776   	RPEC2 = 000046   	TB.RMD= 004000   	UNASG1= 000032
MKDNR   000404RG 	PSWW1 = 000005   	RPER1 = 000014   	TB.SFN= 036000   	UNASG2= 000033
MKSCDP  005372R  	PSWW10= 000014   	RPEXP = 176700   	TB.VFD= 002000   	UNASG3= 000034
MNTBLK  014646R  	PSWW11= 000015   	RPHD    000070RG 	TENAD1= 174410   	UNASG4= 000035
MNTSYD  014746R  	PSWW12= 000016   	RPLA  = 000020   	TENAD2= 174412   	UNASG5= 000036
MODE00= 000004   	PSWW13= 000017   	RPMR  = 000024   	TESTLP  010164R  	UNASG6= 000037
MODE01= 000010   	PSWW2 = 000006   	RPOF  = 000032   	TEST00= 000400   	UNS   = 040000
MOL   = 010000   	PSWW3 = 000007   	RPRNA = ****** GX	TEST01= 001000   	UPE   = 020000
MPE11 = 001000   	PSWW4 = 000010   	RPRTC = ****** GX	TEST02= 002000   	U.ACP = ****** GX
MRKDT   002406R  	PSWW5 = 000011   	RPSN  = 000030   	TNAD1 = 000010   	U.DACP= ****** GX
MSGDPB  000422R  	PSWW6 = 000012   	RPSTK   000350RG 	TNAD2 = 000012   	U.DN  = ****** GX
MSGSIZ= 000016   	PSWW7 = 000013   	RPTSK = ****** GX	TNCERR  015720R  	U.FB  = ****** GX
MXF   = 001000   	PUDADR  014410R  	RPUNIT= ****** GX	TNFERR  015414R  	U.RP  = ****** GX
M.KTAE= 000010   	PULSE = 000020   	RPWC  = 000002   	TOBM  = 000004   	U.SZ  = 000050
M.KTEF= 000002   	PUTR50  017266R  	RPWLO   000400R  	TOIP  = 000002   	U.UN  = ****** GX
M.KTMG= 000004   	PUTR51  017276R  	RSTERR= 001000   	TOIT  = 000001   	U.VA  = ****** GX
M.KTUN= 000006   	PUTSTR  017256R  	RSX$$E= 000050   	TO10  = 000200   	VFCFF   006730R
NED   = 010000   	QIOSTS  014470R  	RSX$$F= 000101   	TO10AD= 174420   	VFCTBL  006726R
NEM   = 004000   	QSIZE = 000023   	RSX$$K= 000126   	TO10BC= 174414   	VFUERR= 000100
NODADR= ****** GX	Q.IOAE= 000012   	RSX$$V= 000015   	TO10BM= 000001   	VFULOD= 000002
NTRDMS  002424R  	Q.IOEF= 000006   	RWRBLK  016754R  	TO10DB= 000400   	VFURDY= 010000
NTRDSZ= 000016   	Q.IOFN= 000002   	RWRHDR  016676R  	TO10DN= 100000   	VV    = 000100
NULSTP= 000040   	Q.IOLU= 000004   	R$$E18= 000001   	TO10DT= 174424   	WCE   = 040000
NUPE  = 000002   	Q.IOPL= 000014   	R$$11D= 000001   	TO10ER= 020000   	WCF   = 000040
NXTHDR  016644R  	Q.IOPR= 000007   	R.AT  = ****** GX	TO10PK= ****** GX	WEP   = 000010
N.DID = 000024   	Q.IOSB= 000010   	R.DP  = ****** GX	TO11  = 000100   	WFDNR   000416RG
N.FID = 000000   	RAMIS0= 010000   	R.FC  = ****** GX	TO11AD= 174422   	WFDTD   002362R
N.FNAM= 000006   	RAMLOD= 000003   	R.LU  = ****** GX	TO11BC= 174416   	WFDTQ   002356R
N.FTYP= 000014   	RAMPAR= 000010   	R.PB  = ****** GX	TO11BM= 020000   	WFEF1   003314R
N.FVER= 000016   	RCVBLK  014352R  	R50TBL  017350R  	TO11DB= 004000   	WFMKT   002420R
N.NEXT= 000022   	REDHDR  016660R  	SCD   = 000040   	TO11DN= 000200   	WLE   = 004000
N.STAT= 000020   	REDLBL  016722R  	SETLUN  016110R  	TO11DT= 174426   	WRL   = 004000
OFFLIN= 000200   	REQBLK  014356R  	SETSTD  015600R  	TO11ER= 000002   	WRTHDR  016672R
ONLINE= 004000   	REQTSK  016506R  	SF.IR = 040000   	TRE   = 040000   	W.TSEF= 000002
OPI   = 020000   	RETALL  016416R  	SF.TA = 000001   	TSKFND  015446R  	ZSTOP = 040000
OPTVFU= 004000   	RETBUF  016440R  	SNSTR   004224R  	TSKLUN= 000002   	$CDINT  013566RG
PAGZRO= 040000   	RETNOD  016330R  	SSTSCR  013136R  	TSKMSG  017376R  	$CD11 = 000001
PARENB= 000002   	RETRY = 000005   	SSTSLP  007164R  	TSTMOD= 000001   	$DBDTE= 000001
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 20:48  PAGE 70-4
SYMBOL TABLE

$DH11 = 000001   	.CECLK= 004000   	.LCRM4= 054000   	.RCRM1= 147000   	..AKLP  011372RG
$DIRAC= 000001   	.CLRMR= 006000   	.LCRM5= 053000   	.RCRM2= 146000   	..ALCB= ****** GX
$DIV    000032RG 	.CLRUN= 010000   	.LDAR = 077000   	.RCRM3= 145000   	..ALC2= ****** GX
$DSW  = ****** GX	.COMEF= ****** GX	.LDBRL= 043000   	.RCRM4= 144000   	..DECB= ****** GX
$DTA  = 000001   	.CONBT= 012000   	.LDBRR= 042000   	.RCSPF= 141000   	..DECN= ****** GX
$DTE  = 000001   	.CRPFL= ****** GX	.LDCK1= 046000   	.RDJ14= 134000   	..DEC2= ****** GX
$DTINT  002774RG 	.CRTSK= ****** GX	.LDCK2= 047000   	.RDJ71= 135000   	..DOLP  011614RG
$FE   = 000001   	.CSHRG= 164000   	.LDDIS= 045000   	.RDMAB= 133000   	..DOL1  011600RG
$F11  = 000001   	.CYLTM= 000074   	.LDRJD= 064000   	.RPELC= ****** GX	..DQRN= ****** GX
$LPINT  010454RG 	.DBINT  001236RG 	.LDRJV= 063000   	.RPELQ= ****** GX	..DSEV= ****** GX
$LP20 = 000001   	.DRLTC= 015000   	.LDRM1= 060000   	.RPUNT= ****** GX	..ENB0= ****** GX
$MUL    000000RG 	.DSACF= 066000   	.LDRM2= 061000   	.SECLK= 003000   	..FSTD= ****** GX
$RP04 = 000001   	.DSIOJ= 065000   	.LDRM3= 062000   	.SETMR= 007000   	..INTX= ****** GX
$TOP10= 000001   	.EIOJA= 067000   	.LDSEL= 044000   	.SETRN= 011000   	..IODN= ****** GX
$$    = 000037   	.FEACK  004242RG 	.LPPFL= ****** GX	.SSCLK= 002000   	..NADD= ****** GX
$$MSG = 000000   	.FEST   004346RG 	.MEMRS= 076000   	.STDTA= ****** GX	..PTLP  011452RG
$$$   = 000251R     002	.GFNR = 102000   	.PCAB1= 150000   	.STDTZ= ****** GX	..SACK= ****** GX
$$$ARG= 000003   	.INICL= 070000   	.PCAB2= 151000   	.STPCL= 000000   	..SPCR  013676RG
$$$OST= 000012   	.IRLTC= 014000   	.PCAB3= 152000   	.STRCL= 001000   	..SPLP  011220RG
$$$T1 = 000011   	.LCRDL= 052000   	.PCAB4= 153000   	.TPDBA= ****** GX	..STCR  013654RG
$$$T2 = 000000   	.LCRDR= 051000   	.POLLH= ****** GX	.TPDEA= ****** GX	..STIN= ****** GX
$$$$  = 000002   	.LCRM1= 057000   	.PUDBA= ****** GX	.WRMBX= 071000   	..STLP  011010RG
.BGBUF= ****** GX	.LCRM2= 056000   	.PUDEA= ****** GX	..AKCR  013720RG 	...GBL= 000000
.BRCLK= 005000   	.LCRM3= 055000

. ABS.	000000	   000
      	017414	   001
TEXT  	000275	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  12480 WORDS  ( 49 PAGES)
DYNAMIC MEMORY:  13382 WORDS  ( 51 PAGES)
ELAPSED TIME:  00:04:02
,[100,20]DRIVERS10.LST/-SP/CRF=[100,30]DRIVERS10.TMP
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

AC.ENA	= 000200	#61-4782    64-5046   
ADRSAV	= ******  GX	*19-1989    20-2044   *20-2049   *21-2083    21-2093   *21-2094   
ALLDON	  016620 R	 66-5249    67-5299    67-5304   #67-5310   
AOE   	= 001000	#8-404      10-717     10-728    
ATCBLK	  014640 R	#62-4826    64-5044   
A.EF  	= 000020	*10-770    #11-1233   *11-1335   *11-1436    19-1939   *19-1941   *21-2101    30-2637    51-4224   
A.HA  	= ******  GX	 19-2002    63-4884   
BCFHDS	  011142 R	 40-3669   #40-3705   
BCFILF	  011076 R	 40-3661   #40-3678    40-3699    40-3708   
BCFLDR	  011162 R	 40-3671   #40-3714   
BCFLDV	  011170 R	 40-3672   #40-3720   
BCFRDS	  011076 R	 40-3668   #40-3683   
BCFSDO	  011122 R	 40-3670   #40-3696   
BCFSTR	  011204 R	 40-3667   #40-3733   
BCFTAB	  011060 R	 40-3658    40-3664   #40-3666    40-3667    40-3668    40-3669    40-3670    40-3671    40-3672   
BC.HDS	= ******  GX	 35-3296    40-3669    53-4483   
BC.LDR	= ******  GX	 40-3671   
BC.LDV	= ******  GX	 40-3672   
BC.RDS	= ******  GX	 40-3668   
BC.SDS	= ******  GX	 40-3670   
BC.STR	= ******  GX	 19-2032    21-2068    40-3667    52-4268   
BIT0  	= 000001	#11-1229    22-2225   #22-2240    23-2331    23-2348    25-2420    25-2436    25-2452    28-2539   
                         30-2623    35-3274   #46-4047    46-4058    47-4088    51-4213   #61-4716    61-4759   
BIT1  	= 000002	#11-1229    22-2227   #22-2240    23-2330    23-2347    25-2421    25-2437    25-2453    28-2539   
                        #46-4047    46-4060    47-4087   #61-4716   
BIT10 	= 002000	#11-1229   #22-2240    22-2274    23-2317    23-2337    28-2527   #46-4047    47-4078    49-4151   
                        #61-4716   
BIT11 	= 004000	#11-1229   #22-2240    22-2273    23-2316    23-2336    28-2522   #46-4047    47-4077    49-4149   
                        #61-4716   
BIT12 	= 010000	#11-1229   #22-2240    22-2272    23-2315    23-2335    28-2519   #46-4047    47-4076    47-4095   
                         49-4147   #61-4716   
BIT13 	= 020000	#11-1229   #22-2240    22-2271    23-2314    28-2516   #46-4047    47-4075    47-4094    49-4145   
                        #61-4716   
BIT14 	= 040000	#11-1229   #22-2240    22-2270    23-2313    28-2513   #46-4047    47-4074    47-4093    49-4142   
                        #61-4716   
BIT15 	= 100000	#11-1229   #22-2240    22-2269    23-2312    28-2510    35-3296   #46-4047    47-4073    49-4138   
                         52-4268    53-4483   #61-4716   
BIT2  	= 000004	#11-1229    22-2229   #22-2240    23-2326    23-2346    25-2422    25-2438    25-2454   #46-4047   
                         46-4062    47-4086   #61-4716   
BIT3  	= 000010	#11-1229   #22-2240    23-2325    23-2345    25-2423    25-2439    25-2455   #46-4047    46-4064   
                         47-4085   #61-4716   
BIT4  	= 000020	#11-1229    22-2232   #22-2240    23-2324    23-2344    25-2424    25-2440    25-2456   #46-4047   
                         47-4084   #61-4716   
BIT5  	= 000040	#11-1229    22-2234   #22-2240    23-2323    23-2343    25-2425    25-2441   #46-4047    47-4083   
                        #61-4716   
BIT6  	= 000100	#11-1229   #22-2240    23-2322    23-2342    25-2426   #46-4047    47-4082   #61-4716   
BIT7  	= 000200	#11-1229   #22-2240    23-2321    23-2341    25-2427    28-2535   #46-4047    47-4081   #61-4716   
                         61-4782   
BIT8  	= 000400	#11-1229   #22-2240    23-2319    23-2339    25-2428    28-2532    35-3274   #46-4047    47-4080   
                         49-4155   #61-4716   
BIT9  	= 001000	#11-1229   #22-2240    23-2318    23-2338    25-2429    28-2529   #46-4047    47-4079    49-4153   
                        #61-4716   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 2

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

BLKTT 	= ******  GX	 21-2149   
BPARER	= 000020	#11-1229   #22-2240   #46-4047   #61-4716   
BUFAIL	  015434 R	#64-5018    64-5028    64-5035   
BUSA16	= 000020	#23-2324    44-3978   
BUSA17	= 000040	#23-2323    44-3978   
BYTESA	= ******  GX	*19-1990   *19-2013    19-2016    20-2046    20-2048   *20-2050   *21-2082    21-2088   *21-2090   
                        *21-2095    21-2098   
CDBA  	= ******  GX	*52-4310   
CDBPCK	= 020000	#47-4094    53-4439   
CDBRCK	= 040000	#47-4093    53-4435   
CDBSCK	= 010000	#47-4095    53-4443   
CDCC  	= ******  GX	*52-4309    56-4566   
CDD   	= 000020	#11-1229   #22-2240   #46-4047   #61-4716   
CDDB  	= ******  GX	 53-4433    53-4469   
CDSB16	= 000020	#47-4084   
CDSB17	= 000040	#47-4083   
CDSDER	= 004000	#47-4077   
CDSDLT	= 002000	#47-4078    53-4426   
CDSEOF	= 020000	#47-4075    53-4418   
CDSERR	= 100000	#47-4073   
CDSHEM	= 000004	#47-4086    53-4451   
CDSIEN	= 000100	#47-4082    52-4311    52-4325    52-4328   
CDSNXM	= 001000	#47-4079    53-4426   
CDSOFL	= 010000	#47-4076    52-4301    53-4410   
CDSPAK	= 000002	#47-4087   
CDSPWC	= 000400	#47-4080    54-4506   
CDSRCK	= 040000	#47-4074    53-4457   
CDSRDY	= 000200	#47-4081    53-4430   
CDSRED	= 000001	#47-4088    52-4311   
CDST  	= ******  GX	 52-4301   *52-4311    52-4325   *52-4328    53-4409    53-4467    53-4469   *54-4506    56-4559   
                         56-4564   
CDSTOL	= 000010	#47-4085   
CHNPNT	= 000001	#11-1229   #22-2240   #46-4047   #61-4716   
CHRINT	= 020000	#23-2314    35-3210    39-3505    39-3527    42-3839   
CLIOD 	  000374 R	#8-460      9-668     
CLRBUF	  016474 R	 63-4869    63-4869    66-5281   #66-5284   
CLSFIL	  015730 R	 65-5095    65-5098    65-5101   #65-5105   
CNUPE 	= 000002	#11-1229   #22-2240   #46-4047   #61-4716   
CNVTBL	  014654 R	#62-4839    66-5214   
CPE   	= 000010	#8-410     
CPUNUM	= 000002	#11-1229   #22-2240   #46-4047   #61-4716   
CRBFLN	= ******  GX	 52-4267    52-4309   
CRBUFF	= ******  GX	 52-4257    52-4310   
CRCEVF	= ******  GX	*52-4239    52-4250    52-4320   
CRDCLR	  013556 R	 51-4207   #54-4507   
CRDINT	  013026 R	 51-4205   #52-4326   
CREVFG	= ******  GX	*51-4223   *51-4224    51-4225    52-4239    52-4240    52-4271    52-4277    52-4295    52-4339   
                         53-4390    53-4486    53-4489    54-4507    59-4655   
CREXP 	= ******  GX	*51-4211   
CRHD  	  011776 RG	#49-4135   
CRHUNG	= ******  GX	*52-4336   
CRINI 	  012360 R	 49-4135    49-4135   #51-4223   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 3

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

CRIOD 	  012532 R	#52-4250   
CRLOOP	  012444 R	#52-4236    52-4348   
CRMKT 	  012776 R	#52-4320   
CRMRKT	  012276 R	#49-4160    51-4226   
CRPWUP	  012352 R	#51-4218    51-4228   
CRSSTV	  012310 R	#51-4201    51-4227   
CRSTBK	= ******  GX	 53-4398    53-4471   
CRSTK 	  012256 RG	 49-4135   #49-4135   
CRSTLN	= ******  GX	 53-4471    53-4482   
CRSTS 	= ******  GX	*51-4212    52-4255   *52-4274    52-4282    52-4288    52-4290   *52-4292    52-4293   *52-4308   
                         52-4322    52-4329    52-4331    52-4333   *52-4335   *52-4341   *52-4344   *53-4389    53-4404   
                         53-4414    53-4422    53-4459   *53-4464   *53-4490   *54-4505    56-4561   *56-4563   *56-4568   
                        *56-4572   *57-4605   *58-4628   *59-4649   
CRTBL 	= ******  GX	 57-4603    58-4625    59-4647   
CRTRP4	  012312 R	 51-4201   #51-4205   
CR.ACK	= 004000	#49-4149    52-4288    52-4292    52-4329    58-4628    59-4649   
CR.HNG	= 100000	#49-4138    52-4274    52-4292    52-4331    52-4341    52-4344   
CR.IOD	= 010000	#49-4147    52-4255    52-4274    52-4290    52-4329    53-4414    56-4568    58-4628   
CR.IOP	= 020000	#49-4145    52-4290    52-4308    52-4329    52-4333    53-4414    54-4505    56-4561    56-4563   
                         58-4628   
CR.NSF	= 000400	#49-4155    52-4274    53-4459    53-4464   
CR.NXD	= 001000	#49-4153    51-4212    52-4293    52-4322    53-4404    54-4505   
CR.RHN	= 002000	#49-4151    52-4274    52-4292    52-4335    52-4344    53-4422   
CR.SST	= 040000	#49-4142    52-4282    52-4329    52-4335    53-4389    53-4490    56-4572    57-4605   
CS.EXP	= 177670	#11-1229   #22-2240   #46-4047   #61-4716   
CTYLUN	= 000001	#61-4753    69-5431   
C$$D11	= 000001	#46-4053   
C.LEEF	= 000002	#8-461     
DAG1  	= 000030	#3-129     
DAG2  	= 000032	#3-128     
DAG3  	= 000036	#3-126     
DBINI 	  000512 R	 8-455      8-455     #9-537      9-541      9-674     
DBIOD 	  000370 R	#8-457      9-667     
DCK   	= 100000	#8-398     
DCOMST	= 000001	#11-1229   #22-2240   #46-4047   #61-4716   
DD.CHI	= 000002	#25-2437    35-3213   
DD.HEM	= 000010	#25-2455    53-4453   
DD.LER	= 000010	#25-2439   
DD.OVF	= 000020	#25-2440    35-3218   
DD.PCK	= 000002	#25-2453    53-4441   
DD.PGZ	= 000001	#25-2436    35-3207   
DD.RCK	= 000001	#25-2452    53-4437   
DD.RME	= 000040	#25-2441    35-3197   
DD.SCK	= 000004	#25-2454    53-4445   
DD.SFL	= 000020	#25-2456    53-4461   
DD.VFE	= 000004	#25-2438    35-3167   
DEFPRI	= 000062	#61-4746    65-5114   
DELHLD	= 002000	#23-2317   
DEMTIM	= 000002	#23-2347    35-3171    39-3560   
DEP   	= 010000	#11-1229   #22-2240   #46-4047   #61-4716   
DEX   	= 000400	#11-1229   #22-2240   #46-4047   #61-4716   
DEXDON	= 000004	#11-1229   #22-2240   #46-4047   #61-4716   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 4

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

DEXWD1	= 174406	#11-1229   #22-2240   #46-4047   #61-4716   
DEXWD2	= 174404	#11-1229   #22-2240   #46-4047   #61-4716   
DEXWD3	= 174402	#11-1229   #22-2240   #46-4047   #61-4716   
DFUNC 	= 000200	#11-1229   #22-2240   #46-4047   #61-4716   
DF.DMG	= 000004	#11-1229   #22-2240   #46-4047   #61-4716   
DF.DMN	= 000007	#11-1229   #22-2240   #46-4047   #61-4716   
DF.DOR	= 000001	#11-1229   #22-2240   #46-4047   #61-4716   
DF.EHG	= 000010	#11-1229   #22-2240   #46-4047   #61-4716   
DF.EHM	= 000011	#11-1229   #22-2240   #46-4047   #61-4716   
DF.EMG	= 000005	#11-1229   #22-2240   #46-4047   #61-4716   
DF.EMN	= 000006	#11-1229   #22-2240   #46-4047   #61-4716   
DF.KLR	= 000012	#11-1229   #22-2240   #46-4047   #61-4716   
DF.KLW	= 000013	#11-1229   #22-2240   #46-4047   #61-4716   
DF.KLX	= 000014	#11-1229   #22-2240   #46-4047   #61-4716   
DF.OFF	= 000002	#11-1229   #22-2240   #46-4047   #61-4716   
DF.ON 	= 000003	#11-1229   #22-2240   #46-4047   #61-4716   
DF.PDP	= 000016	#11-1229   #22-2240   #46-4047   #61-4716   
DF.PEX	= 000015	#11-1229   #22-2240   #46-4047   #61-4716   
DIAG1 	= 174430	#11-1229   #22-2240   #46-4047   #61-4716   
DIAG2 	= 174432	#11-1229   #22-2240   #46-4047   #61-4716   
DIAG3 	= 174436	#11-1229   #22-2240   #46-4047   #61-4716   
DIKL10	= 000010	#11-1229   #22-2240   #46-4047   #61-4716   
DLT   	= 100000	#8-374      10-793    
DLYCNT	= 174400	#11-1229   #22-2240   #46-4047   #61-4716   
DNBLK 	= ******  GX	*21-2129   *21-2152   *21-2163    21-2166   
DNFCN 	= ******  GX	*21-2130   *21-2131   *21-2132   
DNMSG 	  000442 R	#8-475      9-677     
DNSTS 	= ******  GX	*21-2133   *21-2137    21-2152   *21-2155   *21-2156    21-2159   *21-2159   *21-2174   
DONE  	= 000200	#23-2321   
DONSTR	  004536 R	 21-2099   #21-2102    21-2111    21-2120    21-2171   
DON10C	= 040000	#11-1229   #22-2240   #46-4047   #61-4716   
DON10S	= 100000	#11-1229   #22-2240   #46-4047   #61-4716   
DON11C	= 000100	#11-1229   #22-2240   #46-4047   #61-4716   
DON11S	= 000200	#11-1229   #22-2240   #46-4047   #61-4716   
DPS4  	= 040000	#11-1229   #22-2240   #46-4047   #61-4716   
DRESET	= 000100	#11-1229   #22-2240   #46-4047   #61-4716   
DRY   	= 000200	#8-391      9-659     
DR.DTE	= 000011	#11-1229   #22-2240   #46-4047   #61-4716   
DSEND 	= 000004	#11-1229   #22-2240   #46-4047   #61-4716   
DS04  	= 004000	#11-1229   #22-2240   #46-4047   #61-4716   
DS05  	= 002000	#11-1229   #22-2240   #46-4047   #61-4716   
DS06  	= 001000	#11-1229   #22-2240   #46-4047   #61-4716   
DTBUF 	= ******  GX	*11-1291   *11-1292    11-1295    11-1324    11-1329    11-1340    11-1390    11-1413   *11-1434   
                        *11-1435   
DTCNT 	= ******  GX	*11-1290    11-1325    11-1341    11-1433   
DTCW2 	= ******  GX	*11-1312    11-1392    11-1397    11-1400   
DTCW3 	= ******  GX	*11-1326   *11-1387   *11-1417    11-1420   
DTE   	= 010000	#8-401     
DTECMD	= 000451	#11-1229   #22-2240   #46-4047   #61-4716   
DTEFLG	= 000444	#11-1229   #22-2240   #46-4047   #61-4716   
DTEF11	= 000450	#11-1229   #22-2240   #46-4047   #61-4716   
DTEMTD	= 000455	#11-1229   #22-2240   #46-4047   #61-4716   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 5

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

DTEMTI	= 000456	#11-1229   #22-2240   #46-4047   #61-4716   
DTEXP 	= 177340	#11-1240   *11-1317    11-1323    11-1378    11-1431   
DTHD  	  002056 RG	#11-1245   
DTINI 	  002442 R	 11-1245    11-1245   #11-1286    11-1289    11-1343   
DTNRM 	  002366 R	#11-1251    11-1356   
DTOUT 	  002606 R	#11-1317    11-1359   
DTRTC 	= ******  GX	*11-1294   *11-1334   *11-1404   *11-1424   
DTSTK 	  002336 RG	 11-1245   #11-1245   
DTTSK 	= ******  GX	*11-1335   *11-1436   
DUNS  	  000460 R	#8-478      9-688     
DUPE  	= 000020	#11-1229   #22-2240   #46-4047   #61-4716   
DURE  	= 000004	#11-1229   #22-2240   #46-4047   #61-4716   
DVA   	= 004000	#8-360      9-625      9-632     
DV.EOF	= 000040	#25-2425    35-3158    40-3707    53-4420   
DV.F11	= 000400	#25-2428    35-3185   
DV.HNG	= 001000	#25-2429    35-3192    53-4424   
DV.IOP	= 000020	#25-2424    35-3182    53-4416   
DV.LOG	= 000100	 10-1178   #25-2426    35-3173    35-3189    53-4424    53-4428    53-4449   
DV.NXD	= 000001	#25-2420    35-3151    53-4406   
DV.OFL	= 000002	#25-2421    35-3151    35-3162    53-4406    53-4412   
DV.OIR	= 000004	#25-2422    35-3151    35-3162    35-3192    53-4406    53-4412    53-4424   
DV.SCN	= 000010	#25-2423    35-3206    35-3212   
DV.URE	= 000200	 10-1178   #25-2427    35-3189    53-4428   
DXFLAG	  014350 R	#62-4806   *63-4870    63-4921   *63-4923   
DXWD1 	= 000006	#3-135     
DXWD2 	= 000004	#3-136     
DXWD3 	= 000002	#3-137     
DXWRD1	= 002000	#11-1229   #22-2240   #46-4047   #61-4716   
D$$H11	= 000010	#1-44      
D.CCDR	= ******  GX	 52-4270    53-4485   
D.CLPT	= ******  GX	 32-2761    35-3299   
D.FEPD	= ******  GX	 19-2034    21-2103   
D1011 	= 000040	#11-1229   #22-2240   #46-4047   #61-4716   
EBSEL 	= 000100	#11-1229   #22-2240   #46-4047   #61-4716   
EBUSPC	= 000020	#11-1229   #22-2240   #46-4047   #61-4716   
EBUSPS	= 000004	#11-1229   #22-2240   #46-4047   #61-4716   
ECCMSK	  000504 R	#8-509      10-877     10-893    
ECCWRD	  000476 R	#8-507      10-886    
ECH   	= 000100	#8-407      10-808    
ECI   	= 004000	#8-433     
EDONES	= 040000	#11-1229   #22-2240   #46-4047   #61-4716   
EF.CRB	= 000010	#46-4064    51-4225    52-4271    52-4277    52-4295   
EF.CRC	= 000001	#46-4058    52-4236    52-4240    52-4320    54-4507   
EF.CRD	= 000002	#46-4060    52-4236    52-4240    52-4250    52-4339    59-4655   
EF.CRS	= 000004	#46-4062    51-4225    53-4390    53-4486    53-4489   
EF.IOD	= ******  GX	 10-770     11-1335    11-1436   
EF.LPC	= 000002	#22-2227    31-2657    31-2662    34-3028    37-3424   
EF.LPD	= 000001	#22-2225    31-2657    31-2662    32-2698    32-2747    34-3072    39-3573    40-3685    41-3804   
                         42-3841    43-3900    44-3969   
EF.LPQ	= 000004	#22-2229   
EF.LPS	= 000020	#22-2232    30-2638    35-3138    35-3300    35-3308   
EF.LPW	= 000040	#22-2234    30-2638    36-3342    41-3779   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 6

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

EF.NIR	= ******  GX	 18-1924    31-2657    31-2662    33-2902   
EF.QIO	= 000001	#61-4759   
EF.SEP	= 100000	#18-1919    18-1924   
EF.TEF	= 000400	#18-1920    18-1924    19-1977    21-2101   
EPTR  	= 000000	#11-1229   #22-2240   #46-4047   #61-4716   
ERMHER	  007767 R	 35-3174   #35-3259   
ERMHNG	  010004 R	 35-3193   #35-3261   
ERMNXD	  007715 R	 35-3152   #35-3253   
ERMOFL	  007735 R	 35-3163   #35-3255   
ERMVFE	  007750 R	 35-3168   #35-3257   
ERR   	= 100000	#8-387     #23-2312    39-3505   
ERR10C	= 010000	#11-1229   #22-2240   #46-4047   #61-4716   
ERR10S	= 020000	#11-1229   #22-2240   #46-4047   #61-4716   
ERR11C	= 000001	#11-1229   #22-2240   #46-4047   #61-4716   
ERR11S	= 000002	#11-1229   #22-2240   #46-4047   #61-4716   
EXSP  	  014350 RG	#62-4802    63-4865   
E.FCRB	= 000004	#46-4063    52-4269   
E.FCRC	= 000001	#46-4057    49-4160   
E.FCRD	= 000002	#46-4059   
E.FCRS	= 000003	#46-4061    53-4484   
E.FLPC	= 000002	#22-2226    30-2604   
E.FLPD	= 000001	#22-2224   
E.FLPQ	= 000003	#22-2228    35-3246   
E.FLPS	= 000005	#22-2231    35-3298   
E.FLPW	= 000006	#22-2233    30-2606    36-3349   
E.FQIO	= 000001	#61-4758    68-5393    69-5431   
E.IOD 	= ******  GX	 8-458      8-461      11-1249   
E.NIR 	= ******  GX	 8-464      11-1247   
FCN   	  004606 R	 21-2076   #21-2124   
FCNBD 	  004614 R	 21-2079   #21-2126   
FEDRV 	  003622 R	 18-1935    18-1935   #19-1937    19-1983    19-1986    19-2021    19-2030   
FEHD  	  003322 RG	#18-1935   
FER   	= 000020	#8-409     
FESTK 	  003602 RG	 18-1935   #18-1935   
FETBL 	= ******  GX	*19-1952   *19-1987   *19-2018   *19-2029   *21-2114    21-2161   
FETSK 	= ******  GX	 19-1939   *19-1941   *21-2101   
FE.DET	= 040000	#18-1930    19-1952    19-2018    19-2029    20-2041    20-2052    21-2114   
FE.DTE	= 020000	#18-1931    19-1952    19-2029    21-2073    21-2087    21-2100    21-2114   
FE.SER	= 004000	#18-1932    19-1952    19-1987    19-2029    21-2114   
FE.STR	= 002000	#18-1933    21-2128    21-2170   
FILADR	  014464 R	#62-4820    62-4828    65-5159    65-5161   
FILBLK	  014430 R	#62-4819    63-4937    63-4958    63-4977    64-5043    68-5322   
FILCLS	  016762 R	 66-5241    66-5241    66-5247    66-5247   #68-5378   
FILERA	  015430 R	#64-5014    64-5049    64-5055    64-5059   
FILERR	  016314 R	 64-5014    66-5183    66-5193    66-5231    66-5236   #66-5246   
FILERX	  016324 R	 65-5105   #66-5247   
FILFNA	  016624 R	 63-4952    63-4952    63-4984    63-4984   #68-5318   
FILQIO	  016774 R	 63-4910    63-4910    64-5048    64-5048    68-5323    68-5374   #68-5393   
FMT22 	= 010000	#8-432     
FNDFIL	  015170 R	 63-4930   #63-4936    63-5004   
FORPRO	= 000020	#11-1229   #22-2240   #46-4047   #61-4716   
GO    	= 000001	#23-2331    34-3060    39-3515    39-3540    44-3996   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 7

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

GOERR 	= 000001	#23-2348    39-3560   
HCE   	= 000200	#8-406     
HCI   	= 002000	#8-434     
HCRC  	= 000400	#8-405     
HDRBFE	  014426 R	#62-4818   *64-5038    68-5329   
HDRBLK	  014422 R	#62-4816   *64-5057   *68-5337    68-5351   
HDRBUF	  014424 R	#62-4817   *64-5036    66-5280   *66-5285    68-5350   
HDR64 	= ******	 65-5125   
HIBYTE	= 177400	#11-1229   #22-2240   #22-2289    32-2846   #46-4047   #61-4716   
H.IPC 	= 000076	#61-4763    65-5154   
H.ISP 	= 000100	#61-4764    65-5155   
H.LUN 	= 000132	#61-4766    63-4885   
H.LUT 	= ******  GX	 19-2006   
H.NLUN	= 000130	#61-4765    66-5175   
IAE   	= 002000	#8-403      10-717     10-728    
IE.ABO	= 177761	 19-1970    21-2115    41-3798   
IE.ACT	= 177771	 67-5303   
IE.BAD	= 177777	 21-2155   
IE.BLK	= 177754	 10-730     11-1306   
IE.DNR	= 177775	 9-656     
IE.IFC	= 177776	 9-573      11-1344    33-2952   
IE.OFL	= 177677	 43-3879   
IE.VER	= 177774	 10-715     10-858     11-1430    21-2174   
IE.WLK	= 177764	 10-724     11-1427   
IFLOP 	= 100000	#11-1229   #22-2240   #46-4047   #61-4716   
ILF   	= 000001	#8-413      10-717    
ILR   	= 000002	#8-412      10-717    
INITCR	  013542 RG	 51-4218    51-4218    51-4229    51-4229    52-4244    52-4244    52-4337    52-4337   #54-4505   
                         58-4627    58-4627   
INITLP	  010354 RG	 30-2629    30-2629    30-2642    30-2642    31-2666    31-2666   #37-3404   
INSHD 	  013750 RG	#62-4799   
INSMSG	  017364 R	 69-5411   #69-5487   
INSTAL	  014700 RG	 62-4799    62-4799   #63-4864    63-4867    67-5310   
INSTK 	  014230 RG	 62-4799   #62-4799   
INTENB	= 000100	#23-2322    34-3036    34-3040    34-3060    36-3379    37-3417    39-3515    39-3540    41-3784   
                         44-3996   
INTROF	= 000010	#11-1229   #22-2240   #46-4047   #61-4716   
INTRON	= 000040	#11-1229   #22-2240   #46-4047   #61-4716   
INTSON	= 000001	#11-1229   #22-2240   #46-4047   #61-4716   
INT10S	= 000400	#11-1229   #22-2240   #46-4047   #61-4716   
INT11C	= 002000	#11-1229   #22-2240   #46-4047   #61-4716   
INT11S	= 004000	#11-1229   #22-2240   #46-4047   #61-4716   
IOABT 	  004554 R	 21-2069   #21-2107   
IODN  	  004162 R	 19-1978   #19-2023   
IODNCR	  013734 R	 56-4573    56-4573    57-4606   #59-4655   
IO.ACW	= 007000	 64-5042   
IO.APV	= 014010	 63-4905   
IO.ATT	= 001400	 21-2080   
IO.DAC	= 010000	 33-2939    68-5378   
IO.FNA	= 004400	 68-5318   
IO.KIL	= 000012	 33-2958   
IO.RLB	= 001000	 9-569      11-1301    33-2935   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 8

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

IO.RVB	= 010400	 33-2937    68-5338    68-5360   
IO.WLB	= 000400	 9-571      11-1251    11-1298    21-2141    33-2931    35-3246    69-5431   
IO.WLV	= 000500	 11-1303   
IO.WVB	= 011000	 8-473      33-2933    68-5343   
IPAERR	  015674 R	#65-5098    65-5149   
IS.SUC	= 000001	 10-712     10-966     11-1419    21-2133    33-2965    44-3963   
KLPWRF	= 000010	#11-1229   #22-2240   #46-4047   #61-4716   
KT11  	= ******	 65-5097    65-5147   
LBLBFE	  014420 R	#62-4815   *64-5031    66-5178    66-5187   
LBLBLK	  014412 R	#62-4812   *64-5053    66-5190   *68-5362    68-5363   
LBLBUF	  014416 R	#62-4814   *64-5029    66-5276   *66-5284    68-5361   
LBLNUM	  014414 R	#62-4813   *65-5167    66-5190   
LOAD11	= 000004	#11-1229   #22-2240   #46-4047   #61-4716   
LOBYTE	= 000377	#22-2288    22-2289    41-3798    43-3879    44-3963   
LOINIT	= 000400	#23-2319   
LPALOC	= 000214	#22-2219   
LPBCTR	= 000006  G	#23-2352    34-3058    39-3507   *39-3524    39-3525   *39-3539   *44-3950   *44-3977   *44-3986   
LPBSAD	= 000004  G	#23-2350    39-3526   *39-3531   *44-3976   *44-3984   *44-3985   
LPCBUF	= 000014  G	#23-2365   *36-3359   *36-3362    39-3535   
LPCCTR	= 000015  G	#23-2366   
LPCEVF	= ******  GX	*31-2661    32-2698    33-2902    34-3028   
LPCKSM	= 000017  G	#23-2369    34-3057    39-3504   
LPCSA 	= ******  GX	*30-2621    32-2704    34-3033   *37-3416    39-3497    41-3782    42-3836    43-3872   
LPCSM 	= ******  GX	*34-3056   *34-3057    35-3275   *36-3371   *39-3503   *39-3504   
LPCSRA	= 000000  G	#23-2311   
LPCSRB	= 000002  G	#23-2333    35-3171    35-3195    35-3216    39-3560   
LPDCLR	  010424 R	 30-2616   #37-3418   
LPDINT	  006776 R	 30-2614   #34-3037   
LPEMSG	  007662 R	 35-3236    35-3246   #35-3247   
LPEMSX	  007675 R	 35-3232   #35-3251   
LPERUN	  007672 R	*35-3241   #35-3249   
LPEVFG	= ******  GX	*30-2636   *30-2637    30-2638    31-2661    31-2662    32-2747    34-3072    35-3138    35-3300   
                         35-3308    36-3342    37-3424    39-3573    40-3685    41-3779    41-3804    42-3841    43-3900   
                         44-3969   
LPEXPA	= ******  GX	 37-3415   
LPEXPZ	= ******  GX	 35-3274   
LPHD  	  005060 RG	#27-2502   
LPHUNG	= ******  GX	*34-3052   
LPINI 	  005450 R	 27-2502    27-2502   #30-2635   
LPIOD 	  005622 R	#32-2697   
LPITH 	= ******  GX	 32-2717    32-2736    34-3048    34-3064   *37-3419    39-3498   *39-3567    41-3777   *41-3781   
                         42-3834   *44-3948   
LPLOOP	  005534 R	#31-2656    34-3082   
LPMCB 	= ******  GX	 39-3530   *44-3981    44-3984   
LPMKT 	  006742 R	#34-3027   
LPMRKT	  005360 R	#30-2603    30-2639   
LPNIR 	  006502 R	 32-2772   #33-2901    33-2969    33-2995   
LPPCTR	= 000010  G	#23-2356   *32-2819    36-3375   *36-3375    39-3553   *39-3553    41-3785   *41-3785    42-3838   
                        *42-3838   
LPQDPB	  007640 R	*35-3237    35-3242   #35-3245   
LPRAMD	= 000012  G	#23-2360   *36-3361    39-3532   
LPRMA 	= ******  GX	 32-2785   *32-2790    32-2801   *32-2840    32-2843    41-3773   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 9

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

LPRMC 	= ******  GX	*32-2791    32-2806    32-2825   *32-2855   
LPRMZ 	= ******  GX	 32-2786    32-2810   *32-2838    32-2844   
LPRTRY	= 000012	#22-2220    35-3276    43-3871   
LPRTY 	= ******  GX	*34-3053    35-3187    35-3277   *39-3513   *39-3562   *43-3871   
LPSIZE	= ******  GX	 32-2767    34-3078    37-3421    40-3653    41-3770    42-3831   
LPSSTV	  005404 R	#30-2608    30-2640   
LPSTBK	= ******  GX	 35-3144    35-3273    35-3281    35-3291   
LPSTK 	  005340 RG	 27-2502   #27-2502   
LPSTLN	= ******  GX	 35-3281    35-3295   
LPTBL 	= ******  GX	 32-2700    32-2760    34-3031    37-3407    40-3653    41-3770    42-3831   
LPTDAT	= 000016  G	#23-2368   
LPTHD 	= ******  GX	 32-2709    32-2745   *32-2857    34-3044    35-3176    41-3787    43-3884   *43-3899   
LPTPAR	= 000040	#23-2343    35-3171    39-3560   
LPTPBT	= 010000	#23-2335   
LPTRP4	  005406 R	 30-2609   #30-2613   
LPUNIT	= ******  GX	*39-3491    39-3493   
LPUTBL	= ******  GX	 33-2928    39-3496   
LPWRUP	  005442 R	#30-2628    30-2641   
LP.CLR	= 002000	#28-2527    35-3169    35-3198    36-3351    36-3353   
LP.EOF	= 000200	#28-2535    32-2803    35-3156    36-3368    36-3370   
LP.F10	= 000400	#28-2532    32-2749    32-2876    35-3224    35-3309    40-3655   
LP.HNG	= 100000	#28-2510    32-2749    34-3046    34-3074    35-3190    44-3947   
LP.LIP	= 001000	#28-2529    32-2722    32-2749    32-2779    32-2782    32-2808    36-3354    41-3775    44-3940   
LP.MCH	= 010000	#28-2519    32-2749    39-3522    39-3538    44-3942    44-3947    44-3987   
LP.PZI	= 020000	#28-2516    32-2817    32-2821    35-3204    39-3551   
LP.SST	= 040000	#28-2513    32-2728    32-2803    34-3071    35-3137    35-3311    39-3572    40-3684    43-3881   
LP.UNT	= 000003	#28-2539    35-3239    35-3293    37-3410    39-3495   
LP.WAT	= 004000	#28-2522    32-2734    32-2749    34-3042    35-3208    35-3214    35-3229    41-3772    42-3833   
                         44-3947   
L$BBLK	= 000024	#61-4778   
L$BFLG	= 000010	#61-4772   
L$BHRB	= 000022	#61-4777    64-5057   
L$BLDZ	= 000014	#61-4774   
L$BMXZ	= 000016	#61-4775   
L$BPAR	= 000004	#61-4771   
L$BPRI	= 000012	#61-4773   
L$BSA 	= 000020	#61-4776   
L$BTSK	= 000000	#61-4770   
L$$P20	= 000002	#1-38       32-2701    34-3030    37-3406    40-3653    41-3770    42-3831   
MCPE  	= 020000	#8-359      10-713    
MDPE  	= 000400	#8-381      10-793    
MEFCN 	  004616 R	 21-2125   #21-2128   
MEMPAR	= 000020	#23-2344    35-3171    39-3560   
MKDNR 	  000404 RG	#8-466      9-683     
MKSCDP	  005372 R	#30-2605    36-3347   
MNTBLK	  014646 R	#62-4831    63-4907   
MNTSYD	  014746 R	#63-4879    63-4926   
MODE00	= 000004	#23-2326    32-2783    32-2809    32-2812   
MODE01	= 000010	#23-2325    32-2783   
MOL   	= 010000	#8-388      9-659     
MPE11 	= 001000	#11-1229   #22-2240   #46-4047   #61-4716   
MRKDT 	  002406 R	#11-1253    11-1357   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 10

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

MSGDPB	  000422 R	#8-472     *9-677      9-682     *9-688     
MSGSIZ	= 000016	 8-473     #8-482     
MXF   	= 001000	#8-380      10-793    
M.KTAE	= 000010	#8-467     #11-1253   #30-2604   #30-2606   #49-4160   
M.KTEF	= 000002	#8-467     #11-1253   #30-2604   #30-2606   #49-4160   
M.KTMG	= 000004	#8-467     #11-1253   #30-2604   #30-2606   #49-4160   
M.KTUN	= 000006	#8-467     #11-1253   #30-2604   #30-2606   #49-4160   
NED   	= 010000	#8-377      10-719    
NEM   	= 004000	#8-378      10-719    
NODADR	= ******  GX	 19-1949   *19-1950    19-1982   *19-1988    19-2025   *19-2026    21-2077    21-2107   *21-2113   
NTRDMS	  002424 R	 11-1251   #11-1257    11-1258   
NTRDSZ	= 000016	 11-1251   #11-1258   
NULSTP	= 000040	#11-1229   #22-2240   #46-4047   #61-4716   
NUPE  	= 000002	#11-1229   #22-2240   #46-4047   #61-4716   
NXTHDR	  016644 R	 66-5182    66-5182    66-5230    66-5230   #68-5329   
N.DID 	= 000024	#61-4792   
N.FID 	= 000000	#61-4786    63-4977    64-5043   
N.FNAM	= 000006	#61-4787    63-4937    63-4958   
N.FTYP	= 000014	#61-4788   
N.FVER	= 000016	#61-4789   
N.NEXT	= 000022	#61-4791   
N.STAT	= 000020	#61-4790   
OFFLIN	= 000200	#23-2341   
ONLINE	= 004000	#23-2316    35-3160    36-3339    43-3874   
OPI   	= 020000	#8-400     
OPTVFU	= 004000	#23-2336    35-3216   
PAGZRO	= 040000	#23-2313    35-3202    36-3373    39-3505    39-3549   
PARENB	= 000002	#23-2330    34-3060    36-3379    37-3417    39-3515    39-3540    41-3784    44-3996   
PARFND	  015732 R	 65-5089   #65-5109   
PARMSG	  017405 R	 69-5422   #69-5489   
PBTHRD	= 000004	#22-2279    22-2281    22-2282    22-2283    32-2867    33-2977    33-2978   
PERCLR	= 001000	#11-1229   #22-2240   #46-4047   #61-4716   
PGE   	= 002000	#8-379      10-793    
PGM   	= 001000	#8-390     
PHYS  	= 100000	#11-1229   #22-2240   #46-4047   #61-4716   
PIDENT	= 000000	#11-1229   #22-2240   #46-4047   #61-4716   
PRI7  	= 000340	#11-1229   #22-2240   #46-4047   #61-4716   
PROPNT	= 000021	#11-1229   #22-2240   #46-4047   #61-4716   
PRTOFF	= 004000	#11-1229   #22-2240   #46-4047   #61-4716   
PR0   	= 000000	#11-1229   #22-2240   #46-4047   #61-4716   
PR1   	= 000040	#11-1229   #22-2240   #46-4047   #61-4716   
PR2   	= 000100	#11-1229   #22-2240   #46-4047   #61-4716   
PR3   	= 000140	#11-1229   #22-2240   #46-4047   #61-4716   
PR4   	= 000200	#11-1229   #22-2240    34-3055    36-3382   #46-4047   #61-4716   
PR5   	= 000240	#11-1229   #22-2240   #46-4047   #61-4716   
PR6   	= 000300	#11-1229   #22-2240   #46-4047   #61-4716   
PR7   	= 000340	#11-1229    21-2138   #22-2240    31-2660    32-2744   #46-4047    52-4238   #61-4716   
PS    	= 177776	 9-623      9-665      9-680     #11-1229    11-1337    11-1354    19-1938   *19-1938    20-2053   
                        *20-2053   *20-2058    21-2138   *21-2138   *21-2158   #22-2240    31-2660   *31-2660   *31-2663   
                         32-2744   *32-2744   *32-2751    34-3055   *34-3055   *34-3067    36-3382   *36-3382   *36-3384   
                         39-3491    43-3883   *43-3883   #46-4047    52-4238   *52-4238   *52-4241   #61-4716    66-5250   
                        *66-5250    67-5292   *67-5292   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 11

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

PSWW1 	= 000005	#11-1229   #22-2240   #46-4047   #61-4716   
PSWW10	= 000014	#11-1229   #22-2240   #46-4047   #61-4716   
PSWW11	= 000015	#11-1229   #22-2240   #46-4047   #61-4716   
PSWW12	= 000016	#11-1229   #22-2240   #46-4047   #61-4716   
PSWW13	= 000017	#11-1229   #22-2240   #46-4047   #61-4716   
PSWW2 	= 000006	#11-1229   #22-2240   #46-4047   #61-4716   
PSWW3 	= 000007	#11-1229   #22-2240   #46-4047   #61-4716   
PSWW4 	= 000010	#11-1229   #22-2240   #46-4047   #61-4716   
PSWW5 	= 000011	#11-1229   #22-2240   #46-4047   #61-4716   
PSWW6 	= 000012	#11-1229   #22-2240   #46-4047   #61-4716   
PSWW7 	= 000013	#11-1229   #22-2240   #46-4047   #61-4716   
PUDADR	  014410 R	#62-4811   *63-4887    63-4916   *63-5003    65-5116    66-5199   
PULSE 	= 000020	#11-1229   #22-2240   #46-4047   #61-4716   
PUTR50	  017266 R	 69-5418    69-5418    69-5425    69-5425   #69-5449   
PUTR51	  017276 R	 69-5450    69-5450   #69-5458   
PUTSTR	  017256 R	 69-5412    69-5412    69-5414    69-5414    69-5416    69-5416    69-5423    69-5423   #69-5440   
                         69-5441   
QIOSTS	  014470 R	#62-4821    68-5393    68-5396   
QSIZE 	= 000023	#11-1229   #22-2240   #46-4047   #61-4716   
Q.IOAE	= 000012	#8-473     #11-1251   #35-3246   
Q.IOEF	= 000006	#8-473     #11-1251   #35-3246   
Q.IOFN	= 000002	#8-473     #11-1251   #35-3246   
Q.IOLU	= 000004	#8-473     #11-1251   #35-3246   
Q.IOPL	= 000014	#8-473     *9-677     *9-688     #11-1251   *35-3237   #35-3246   
Q.IOPR	= 000007	#8-473     #11-1251   #35-3246   
Q.IOSB	= 000010	#8-473     #11-1251   #35-3246   
RAMIS0	= 010000	#11-1229   #22-2240   #46-4047   #61-4716   
RAMLOD	= 000003	#23-2329    32-2812   
RAMPAR	= 000010	#23-2345    35-3171    35-3195    39-3560   
RCVBLK	  014352 R	#62-4808    63-4866    63-4898   
REDHDR	  016660 R	 64-5058    64-5058   #68-5337   
REDLBL	  016722 R	 64-5054    64-5054    66-5192    66-5192   #68-5359   
REQBLK	  014356 R	#62-4809    62-4810    63-4957    65-5070    66-5251    67-5295    67-5296    69-5417   
REQTSK	  016506 R	 66-5242   #67-5292   
RETALL	  016416 R	#66-5268   
RETBUF	  016440 R	 64-5018    64-5018    66-5240    66-5240    66-5269   #66-5274   
RETNOD	  016330 R	 63-5008   #66-5249    67-5306   
RETRY 	= 000005	#8-447      9-579     #11-1238    11-1294   
RETXXX	  016720 R	 68-5330    68-5332   #68-5355   
RFMAD0	= 100000	#11-1229   #22-2240   #46-4047   #61-4716   
RFMAD1	= 040000	#11-1229   #22-2240   #46-4047   #61-4716   
RFMAD2	= 020000	#11-1229   #22-2240   #46-4047   #61-4716   
RFMAD3	= 010000	#11-1229   #22-2240   #46-4047   #61-4716   
RM    	= 000010	#11-1229   #22-2240   #46-4047   #61-4716   
RMR   	= 000004	#8-411      10-717    
RPAS  	= 000016	#8-417     
RPBA  	= 000004	#8-366     
RPBUF 	= ******  GX	*9-562     *9-567     *9-568     *9-577      9-639      9-664      9-670      9-672     *10-768    
                        *10-769     10-772     10-872     10-990    
RPCNT 	= ******  GX	*9-560      9-640      10-822    
RPCS1 	= 000000	#8-356     
RPCS2 	= 000010	#8-372      9-617      9-636      10-719     10-793    
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 12

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

RPDA  	= 000006	#8-368     
RPDBR 	= 000022	#8-421     
RPDC  	= 000034	#8-437     *9-663     
RPDS  	= 000012	#8-385      9-657     
RPDT  	= 000026	#8-425     
RPEC1 	= 000044	#8-439      10-856    
RPEC2 	= 000046	#8-441      10-880    
RPER1 	= 000014	#8-396      9-661      10-716    
RPEXP 	= 176700	#8-352      9-617      9-620      9-636      10-703     10-1179   
RPHD  	  000070 RG	#8-454     
RPLA  	= 000020	#8-419     
RPMR  	= 000024	#8-423     
RPOF  	= 000032	#8-430     
RPRNA 	= ******  GX	*9-559      9-635      9-669      10-764    
RPRTC 	= ******  GX	*9-579     *10-751    
RPSN  	= 000030	#8-427     
RPSTK 	  000350 RG	 8-455     #8-455     
RPTSK 	= ******  GX	*10-770    
RPUNIT	= ******  GX	*9-561      9-619      9-637     
RPWC  	= 000002	#8-364      10-820     10-975    
RPWLO 	  000400 R	#8-463      9-538     
RSTERR	= 001000	#23-2318    36-3379    37-3417    41-3784   
RSX$$E	= 000050	#3-101     
RSX$$F	= 000101	#3-109     #3-112      3-120     
RSX$$K	= 000126	#3-105     
RSX$$V	= 000015	#3-100     
RWRBLK	  016754 R	 68-5352    68-5352    68-5364    68-5364   #68-5373   
RWRHDR	  016676 R	 68-5339   #68-5349   
R$$E16	= ******	 10-914     10-1055   
R$$E18	= 000001	#8-335      8-505      10-845     10-993    
R$$JPO	= ******	 8-484      9-581      9-645      10-705     10-824     10-837     10-969     10-1079   
R$$11D	= 000001	#1-47      
R.AT  	= ******  GX	 19-2001   
R.DP  	= ******  GX	 19-2010   
R.FC  	= ******  GX	 9-569      9-571      11-1298    11-1301    11-1303    19-1994    21-2078    21-2080    33-2929   
                         33-2958   
R.LU  	= ******  GX	 19-1996   
R.PB  	= ******  GX	 9-589      9-590     *9-604     *9-610      9-638      9-663      10-765     11-1307    11-1310   
                         19-2014    19-2015    21-2082    21-2083    32-2867    33-2977    33-2981   
R50TBL	  017350 R	 69-5464   #69-5479   
SCD   	= 000040	#11-1229   #22-2240   #46-4047   #61-4716   
SETLUN	  016110 R	#66-5175   
SETSTD	  015600 R	#65-5068   
SF.IR 	= 040000	#61-4750    67-5294   
SF.TA 	= 000001	#61-4749    67-5294   
SNSTR 	  004224 R	 19-2019    19-2019   #19-2032    20-2056    20-2056    21-2167    21-2167   
SSTSCR	  013136 R	 52-4284    52-4284    52-4303    52-4303   #53-4389   
SSTSLP	  007164 R	 32-2730    32-2730   #35-3135   
STAT  	= 174434	#11-1229   #22-2240   #46-4047   #61-4716   
STATD 	= 000034	#3-127     
STATUS	= 000022	#11-1229   #22-2240   #46-4047   #61-4716   
STDADR	= 014370 R	#62-4810    65-5068    66-5268   *66-5272    67-5293    69-5419   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 13

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

STSWD 	= ******  GX	*19-1951   *19-2020    19-2023    19-2024   *19-2027   *21-2085   *21-2086   
SWR   	= 177570	#11-1229   #22-2240   #46-4047   #61-4716   
SWSLLT	= 100000	#11-1229   #22-2240   #46-4047   #61-4716   
SYFLAG	  014351 R	#62-4807    63-4929   *63-4932   
SYMNTD	  015102 R	 63-4889    63-4911   #63-4915   
SYMNT1	  015146 R	 63-4920    63-4922   #63-4928   
SYNTIM	= 000004	#23-2346    35-3171    39-3560   
S.DRFN	= 000034	#61-4793    62-4819   
S.FW  	= ******  GX	*67-5294   
S.TD  	= ******  GX	 69-5420   
TASKNF	  015324 R	 63-4881    63-4913    63-4953   #63-4990    63-4995    63-4997    63-4999    63-5002   
TB.ABO	= 040000	#22-2270    32-2794    41-3795    41-3798   
TB.DON	= 100000	#22-2269    40-3727    41-3798    43-3879    44-3963   
TB.EOF	= 020000	#22-2271    22-2275    32-2799    40-3709   
TB.LPC	= 010000	#22-2272    22-2275    32-2815    40-3700   
TB.RMD	= 004000	#22-2273    22-2275    32-2829    40-3715   
TB.SFN	= 036000	#22-2275    32-2796    44-3953   
TB.VFD	= 002000	#22-2274    22-2275    40-3721   
TENAD1	= 174410	#11-1229   #22-2240   #46-4047   #61-4716   
TENAD2	= 174412	#11-1229   #22-2240   #46-4047   #61-4716   
TESTLP	  010164 R	 32-2738    32-2738   #36-3338   
TEST00	= 000400	#23-2339   
TEST01	= 001000	#23-2338   
TEST02	= 002000	#23-2337   
TNAD1 	= 000010	#3-133     
TNAD2 	= 000012	#3-134     
TNCERR	  015720 R	#65-5103    65-5163   
TNFERR	  015414 R	 63-4993   #63-5006   
TOBM  	= 000004	#11-1229   #22-2240   #46-4047   #61-4716   
TOIP  	= 000002	#11-1229   #22-2240   #46-4047   #61-4716   
TOIT  	= 000001	#11-1229   #22-2240   #46-4047   #61-4716   
TO10  	= 000200	#11-1229   #22-2240   #46-4047   #61-4716   
TO10AD	= 174420	#11-1229   #22-2240   #46-4047   #61-4716   
TO10BC	= 174414	#11-1229   #22-2240   #46-4047   #61-4716   
TO10BM	= 000001	#11-1229   #22-2240   #46-4047   #61-4716   
TO10DB	= 000400	#11-1229   #22-2240   #46-4047   #61-4716   
TO10DN	= 100000	#11-1229   #22-2240   #46-4047   #61-4716   
TO10DT	= 174424	#11-1229   #22-2240   #46-4047   #61-4716   
TO10ER	= 020000	#11-1229   #22-2240   #46-4047   #61-4716   
TO10PK	= ******  GX	 19-1991   
TO11  	= 000100	#11-1229   #22-2240   #46-4047   #61-4716   
TO11AD	= 174422	#11-1229   #22-2240   #46-4047   #61-4716   
TO11BC	= 174416	#11-1229   #22-2240   #46-4047   #61-4716   
TO11BM	= 020000	#11-1229   #22-2240   #46-4047   #61-4716   
TO11DB	= 004000	#11-1229   #22-2240   #46-4047   #61-4716   
TO11DN	= 000200	#11-1229   #22-2240   #46-4047   #61-4716   
TO11DT	= 174426	#11-1229   #22-2240   #46-4047   #61-4716   
TO11ER	= 000002	#11-1229   #22-2240   #46-4047   #61-4716   
TRE   	= 040000	#8-358      10-713    
TSKFND	  015446 R	 63-4985   #64-5025   
TSKLUN	= 000002	#61-4754    63-4880    63-4885    63-5001    68-5393   
TSKMSG	  017376 R	 69-5415   #69-5488   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 14

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

TSTMOD	= 000001	#23-2327   
TTBERR	  015706 R	#65-5101    65-5146   
TTPEN 	= ******  GX	 8-455      11-1245    18-1935    27-2502    49-4135    62-4799   
TYPBUF	  014474 R	#62-4822    69-5410    69-5429   
TYPMSG	  017054 R	 63-4912    63-4912    63-4931    63-4931    63-5007    63-5007    65-5095    65-5095    65-5098   
                         65-5098    65-5101    65-5101    65-5103    65-5103    66-5246    66-5246    67-5306    67-5306   
                        #69-5409   
T.BA  	= ******  GX	 65-5124    65-5148   
T.HBCT	= ******  GX	 32-2858   *33-2982    35-3183    44-3979   
T.HCAD	= ******  GX	*32-2801    32-2807    32-2818    32-2845   *33-2983   *39-3526    40-3697    40-3706    44-3976   
T.HCBC	= ******  GX	 32-2715    32-2793   *32-2806   *32-2807   *33-2984   *39-3525    40-3656   *40-3657   *40-3728   
                        *41-3795    41-3796   *41-3798   *43-3879    44-3950    44-3953   *44-3963   
T.HEMA	= 177774	#22-2281   *33-2985    44-3991   
T.HIBC	= 177776	#22-2283    32-2865    33-2978   
T.HVFC	= 177775	#22-2282   *33-2989    44-3981   *44-3983   
T.PN  	= ******  GX	 65-5086    65-5088   
T.PZ  	= ******  GX	 65-5145   
T.SZ  	= ******  GX	 65-5091   
T10AD 	= 000020	#3-131     
T11AD 	= 000022	#3-130     
T11BC 	= 000016	#3-132     
T50TBL	  017340 R	 69-5458   #69-5477   
UF.TL 	= ******  GX	 63-4996   
UNASG1	= 000032	#11-1229   #22-2240   #46-4047   #61-4716   
UNASG2	= 000033	#11-1229   #22-2240   #46-4047   #61-4716   
UNASG3	= 000034	#11-1229   #22-2240   #46-4047   #61-4716   
UNASG4	= 000035	#11-1229   #22-2240   #46-4047   #61-4716   
UNASG5	= 000036	#11-1229   #22-2240   #46-4047   #61-4716   
UNASG6	= 000037	#11-1229   #22-2240   #46-4047   #61-4716   
UNS   	= 040000	#8-399      9-661      10-717    
UPE   	= 020000	#8-376      10-793    
U.ACP 	= ******  GX	*63-4903   
U.DACP	= ******  GX	 63-4901   
U.DN  	= ******  GX	 63-4917    63-5001    66-5205   
U.FB  	= ******  GX	 63-4996   
U.RP  	= ******  GX	 19-2007    63-4886    63-4994   
U.SZ  	= 000050	#61-4748    63-4874    63-4991    65-5120    66-5210   
U.UN  	= ******  GX	 63-4918    63-5001    66-5207   
U.VA  	= ******  GX	 63-4888    63-4998   
VFCFF 	  006730 R	 33-2944   #33-3001   
VFCTBL	  006726 R	 33-2987   #33-2999   
VFUERR	= 000100	#23-2342    39-3560   
VFULOD	= 000002	#23-2328    32-2809   
VFURDY	= 010000	#23-2315    35-3165   
VV    	= 000100	#8-392      9-659     
WCE   	= 040000	#8-375      10-793    
WCF   	= 000040	#8-408     
WEP   	= 000010	#11-1229   #22-2240   #46-4047   #61-4716   
WFDNR 	  000416 RG	#8-469      9-684     
WFDTD 	  002362 R	#11-1249    11-1339   
WFDTQ 	  002356 R	#11-1247    11-1286   
WFEF1 	  003314 R	#18-1924    19-1937   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 15

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

WFMKT 	  002420 R	#11-1255    11-1358   
WLE   	= 004000	#8-402      10-717     10-722    
WRL   	= 004000	#8-389     
WRTHDR	  016672 R	 66-5235    66-5235    68-5331    68-5331   #68-5343   
W.TSEF	= 000002	#8-458     #8-464     #8-470     #11-1247   #11-1249   #11-1255   
ZSTOP 	= 040000	#11-1229   #22-2240   #46-4047   #61-4716   
$CDINT	  013566 RG	#56-4559   
$CD11 	= 000001	#1-39      
$DBDTE	= 000001	#1-45      
$DH11 	= 000001	#1-43      
$DIRAC	= 000001	#8-331      9-543     #18-1885    19-1958    21-2108   
$DIV  	  000032 RG	#6-264      9-607      9-607      10-862     10-862     69-5462    69-5462   
$DSW  	= ******  GX	 67-5298    67-5303   
$DTA  	= 000001	#1-55       10-1187   
$DTE  	= 000001	#1-46      
$DTINT	  002774 RG	#11-1366   
$FE   	= 000001	#1-41      
$F11  	= 000001	#1-42      
$LPINT	  010454 RG	#39-3490   
$LP20 	= 000001	#1-37      
$MUL  	  000000 RG	#6-237     
$RP04 	= 000001	#1-40      
$RX11 	= ******	 12-1449   
$TOP10	= 000001	#1-35       1-53       3-110     
$TOP20	= ******	 1-61       3-117     
$T1091	= ******	 1-49       1-54       3-111     
$$    	= 000037	#9-540      9-540     #9-607      9-607     #9-673      9-673     #10-771     10-771    #10-774    
                         10-774    #10-862     10-862    #10-881     10-881    #10-891     10-891    #10-897     10-897    
                        #10-898     10-898    #10-899     10-899    #10-906     10-906    #10-1163    10-1163   #11-1288   
                         11-1288   #11-1342    11-1342   #11-1437    11-1437   #19-1956    19-1956   #19-1971    19-1971   
                        #19-1976    19-1976   #19-1985    19-1985   #19-2019    19-2019   #19-2028    19-2028   #20-2056   
                         20-2056   #21-2102    21-2102   #21-2116    21-2116   #21-2167    21-2167   #30-2629    30-2629   
                        #30-2642    30-2642   #31-2666    31-2666   #32-2730    32-2730   #32-2738    32-2738   #32-2762   
                         32-2762   #32-2788    32-2788   #32-2833    32-2833   #32-2868    32-2868   #32-2875    32-2875   
                        #33-2905    33-2905   #33-2960    33-2960   #33-2968    33-2968   #33-2994    33-2994   #34-3065   
                         34-3065   #35-3200    35-3200   #35-3301    35-3301   #36-3383    36-3383   #39-3509    39-3509   
                        #39-3554    39-3554   #39-3574    39-3574   #40-3686    40-3686   #40-3691    40-3691   #40-3734   
                         40-3734   #41-3805    41-3805   #42-3842    42-3842   #43-3901    43-3901   #43-3906    43-3906   
                        #44-3970    44-3970   #51-4218    51-4218   #51-4229    51-4229   #52-4244    52-4244   #52-4272   
                         52-4272   #52-4284    52-4284   #52-4303    52-4303   #52-4337    52-4337   #53-4487    53-4487   
                        #56-4573    56-4573   #57-4602    57-4602   #58-4627    58-4627   #59-4656    59-4656   #63-4869   
                         63-4869   #63-4902    63-4902   #63-4910    63-4910   #63-4912    63-4912   #63-4931    63-4931   
                        #63-4952    63-4952   #63-4984    63-4984   #63-5007    63-5007   #64-5018    64-5018   #64-5027   
                         64-5027   #64-5034    64-5034   #64-5048    64-5048   #64-5054    64-5054   #64-5058    64-5058   
                        #65-5095    65-5095   #65-5098    65-5098   #65-5101    65-5101   #65-5103    65-5103   #66-5182   
                         66-5182   #66-5192    66-5192   #66-5230    66-5230   #66-5235    66-5235   #66-5240    66-5240   
                        #66-5241    66-5241   #66-5246    66-5246   #66-5247    66-5247   #66-5252    66-5252   #66-5264   
                         66-5264   #66-5271    66-5271   #66-5278    66-5278   #66-5282    66-5282   #67-5297    67-5297   
                        #67-5306    67-5306   #68-5331    68-5331   #68-5352    68-5352   #68-5364    68-5364   #69-5412   
                         69-5412   #69-5414    69-5414   #69-5416    69-5416   #69-5418    69-5418   #69-5423    69-5423   
                        #69-5425    69-5425   #69-5450    69-5450   #69-5462    69-5462   
$$$   	= 000251 R	#35-3316    35-3316   #35-3316    35-3316   #35-3316    35-3316   #35-3316    35-3316   #35-3316   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 16

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

                         35-3316    35-3316    35-3316    35-3316    35-3316    35-3316   #35-3316    35-3316    35-3316   
                         35-3316    35-3316    35-3316   #35-3316    35-3316    35-3316    35-3316    35-3316    35-3316   
                        #35-3316    35-3316    35-3316    35-3316    35-3316    35-3316   #35-3316   #37-3425    37-3425   
                        #37-3425    37-3425   #37-3425    37-3425   #37-3425    37-3425    37-3425    37-3425    37-3425   
                         37-3425   #37-3425    37-3425    37-3425    37-3425    37-3425   #37-3425    37-3425    37-3425   
                         37-3425    37-3425   #37-3425   #39-3579    39-3579   #39-3579    39-3579   #39-3579    39-3579   
                        #39-3579    39-3579    39-3579    39-3579    39-3579    39-3579   #39-3579    39-3579    39-3579   
                         39-3579    39-3579   #39-3579    39-3579    39-3579    39-3579    39-3579   #39-3579   #40-3739   
                         40-3739   #40-3739    40-3739   #40-3739    40-3739   #40-3739    40-3739    40-3739    40-3739   
                         40-3739    40-3739   #40-3739    40-3739    40-3739    40-3739    40-3739   #40-3739    40-3739   
                         40-3739    40-3739    40-3739   #40-3739   #41-3807    41-3807   #41-3807    41-3807   #41-3807   
                         41-3807   #41-3807    41-3807    41-3807    41-3807    41-3807    41-3807   #41-3807    41-3807   
                         41-3807    41-3807    41-3807   #41-3807    41-3807    41-3807    41-3807    41-3807   #41-3807   
                        #42-3844    42-3844   #42-3844    42-3844    42-3844    42-3844   #42-3844   #43-3907    43-3907   
                        #43-3907    43-3907   #43-3907    43-3907    43-3907    43-3907    43-3907   #43-3907    43-3907   
                         43-3907    43-3907   #43-3907   #63-4912    63-4912   #63-4931    63-4931   #63-5007    63-5007   
                        #65-5095    65-5095   #65-5098    65-5098   #65-5101    65-5101   #65-5103    65-5103   #66-5246   
                         66-5246   #67-5306    67-5306   
$$$ARG	= 000003	#8-473      8-473     #8-473      8-473     #8-473      8-473     #11-1251    11-1251   #11-1251   
                         11-1251   #11-1251    11-1251   #35-3246    35-3246   #35-3246    35-3246   #35-3246    35-3246   
                        #35-3246    35-3246   #63-4880    63-4880   #63-4880    63-4880   #63-4880    63-4880   #63-4880   
                         63-4880    63-4880    63-4880    63-4880    63-4880    63-4880    63-4880    63-4880    63-4880   
                         63-4880   #63-5001    63-5001   #63-5001    63-5001   #63-5001    63-5001   #63-5001    63-5001   
                         63-5001    63-5001    63-5001    63-5001    63-5001    63-5001    63-5001    63-5001    63-5001   
                        #68-5393    68-5393    68-5393    68-5393    68-5393    68-5393    68-5393    68-5393    68-5393   
                         68-5393    68-5393    68-5393   #69-5431    69-5431    69-5431    69-5431    69-5431    69-5431   
                         69-5431    69-5431    69-5431    69-5431    69-5431    69-5431   
$$$GLB	= ******	 8-458      8-458      8-461      8-461      8-464      8-464      8-467      8-467      8-467     
                         8-467      8-467      8-470      8-470      8-473      8-473      8-473      8-473      8-473     
                         8-473      8-473      8-473      11-1247    11-1247    11-1249    11-1249    11-1251    11-1251   
                         11-1251    11-1251    11-1251    11-1251    11-1251    11-1251    11-1253    11-1253    11-1253   
                         11-1253    11-1253    11-1255    11-1255    18-1924    30-2604    30-2604    30-2604    30-2604   
                         30-2604    30-2606    30-2606    30-2606    30-2606    30-2606    35-3246    35-3246    35-3246   
                         35-3246    35-3246    35-3246    35-3246    35-3246    49-4160    49-4160    49-4160    49-4160   
                         49-4160   
$$$OST	= 000012	#8-458      8-458      8-458     #8-458     #8-461      8-461      8-461     #8-461     #8-464     
                         8-464      8-464     #8-464     #8-467      8-467      8-467     #8-467      8-467      8-467     
                        #8-467      8-467      8-467     #8-467      8-467      8-467     #8-467     #8-470      8-470     
                         8-470     #8-470     #8-473      8-473      8-473     #8-473      8-473      8-473     #8-473     
                         8-473      8-473     #8-473      8-473      8-473     #8-473      8-473      8-473     #8-473     
                         8-473      8-473     #8-473      8-473     #11-1247    11-1247    11-1247   #11-1247   #11-1249   
                         11-1249    11-1249   #11-1249   #11-1251    11-1251    11-1251   #11-1251    11-1251    11-1251   
                        #11-1251    11-1251    11-1251   #11-1251    11-1251    11-1251   #11-1251    11-1251    11-1251   
                        #11-1251    11-1251    11-1251   #11-1251    11-1251   #11-1253    11-1253    11-1253   #11-1253   
                         11-1253    11-1253   #11-1253    11-1253    11-1253   #11-1253    11-1253    11-1253   #11-1253   
                        #11-1255    11-1255    11-1255   #11-1255   #30-2604    30-2604    30-2604   #30-2604    30-2604   
                         30-2604   #30-2604    30-2604    30-2604   #30-2604    30-2604    30-2604   #30-2604   #30-2606   
                         30-2606    30-2606   #30-2606    30-2606    30-2606   #30-2606    30-2606    30-2606   #30-2606   
                         30-2606    30-2606   #30-2606   #35-3246    35-3246    35-3246   #35-3246    35-3246    35-3246   
                        #35-3246    35-3246    35-3246   #35-3246    35-3246    35-3246   #35-3246    35-3246    35-3246   
                        #35-3246    35-3246    35-3246   #35-3246    35-3246   #49-4160    49-4160    49-4160   #49-4160   
                         49-4160    49-4160   #49-4160    49-4160    49-4160   #49-4160    49-4160    49-4160   #49-4160   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 17

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

$$$T1 	= 000011	#63-4866    63-4866   #68-5393    68-5393   #69-5431    69-5431   
$$$T2 	= 000000	#67-5296    67-5296   
$$$$  	= 000002	#35-3316    35-3316   #35-3316    35-3316    35-3316   #35-3316    35-3316    35-3316   #35-3316   
                         35-3316    35-3316   #35-3316    35-3316   #35-3316    35-3316   #35-3316    35-3316    35-3316   
                        #35-3316    35-3316    35-3316   #35-3316    35-3316    35-3316   #35-3316    35-3316   #35-3316   
                         35-3316   #35-3316    35-3316    35-3316   #35-3316    35-3316    35-3316   #35-3316    35-3316   
                         35-3316   #35-3316    35-3316   #35-3316    35-3316   #35-3316    35-3316    35-3316   #35-3316   
                         35-3316    35-3316   #35-3316    35-3316    35-3316   #35-3316    35-3316   #37-3425    37-3425   
                        #37-3425    37-3425    37-3425   #37-3425    37-3425    37-3425   #37-3425    37-3425   #37-3425   
                         37-3425   #37-3425    37-3425    37-3425   #37-3425    37-3425    37-3425   #37-3425    37-3425   
                        #37-3425    37-3425   #37-3425    37-3425    37-3425   #37-3425    37-3425    37-3425   #37-3425   
                         37-3425   #39-3579    39-3579   #39-3579    39-3579    39-3579   #39-3579    39-3579    39-3579   
                        #39-3579    39-3579   #39-3579    39-3579   #39-3579    39-3579    39-3579   #39-3579    39-3579   
                         39-3579   #39-3579    39-3579   #39-3579    39-3579   #39-3579    39-3579    39-3579   #39-3579   
                         39-3579    39-3579   #39-3579    39-3579   #40-3739    40-3739   #40-3739    40-3739    40-3739   
                        #40-3739    40-3739    40-3739   #40-3739    40-3739   #40-3739    40-3739   #40-3739    40-3739   
                         40-3739   #40-3739    40-3739    40-3739   #40-3739    40-3739   #40-3739    40-3739   #40-3739   
                         40-3739    40-3739   #40-3739    40-3739    40-3739   #40-3739    40-3739   #41-3807    41-3807   
                        #41-3807    41-3807    41-3807   #41-3807    41-3807    41-3807   #41-3807    41-3807   #41-3807   
                         41-3807   #41-3807    41-3807    41-3807   #41-3807    41-3807    41-3807   #41-3807    41-3807   
                        #41-3807    41-3807   #41-3807    41-3807    41-3807   #41-3807    41-3807    41-3807   #41-3807   
                         41-3807   #42-3844    42-3844   #42-3844    42-3844   #43-3907    43-3907   #43-3907    43-3907   
                         43-3907   #43-3907    43-3907   #43-3907    43-3907   #43-3907    43-3907    43-3907   #43-3907   
                         43-3907   
.BGBUF	= ******  GX	 32-2787    32-2827    64-5025    64-5032    66-5275   
.BRCLK	= 005000	#11-1229   #22-2240   #46-4047   #61-4716   
.CECLK	= 004000	#11-1229   #22-2240   #46-4047   #61-4716   
.CLRMR	= 006000	#11-1229   #22-2240   #46-4047   #61-4716   
.CLRUN	= 010000	#11-1229   #22-2240   #46-4047   #61-4716   
.COMEF	= ******  GX	 10-1158    19-1942    35-3141    52-4298    53-4393   
.CONBT	= 012000	#11-1229   #22-2240   #46-4047   #61-4716   
.CRPFL	= ******  GX	 52-4242   *52-4245   
.CRTSK	= ******  GX	 30-2636    51-4223    63-4883   
.CSHRG	= 164000	#11-1229   #22-2240   #46-4047   #61-4716   
.CYLTM	= 000074	#22-2292    30-2604    30-2604    30-2606   #46-4067    49-4160    49-4160   
.DBINT	  001236 RG	#10-698    
.DRLTC	= 015000	#11-1229   #22-2240   #46-4047   #61-4716   
.DSACF	= 066000	#11-1229   #22-2240   #46-4047   #61-4716   
.DSIOJ	= 065000	#11-1229   #22-2240   #46-4047   #61-4716   
.EIOJA	= 067000	#11-1229   #22-2240   #46-4047   #61-4716   
.FEACK	  004242 RG	#20-2041   
.FEST 	  004346 RG	#21-2068   
.GFNR 	= 102000	#11-1229   #22-2240   #46-4047   #61-4716   
.INICL	= 070000	#11-1229   #22-2240   #46-4047   #61-4716   
.IRLTC	= 014000	#11-1229   #22-2240   #46-4047   #61-4716   
.LCRDL	= 052000	#11-1229   #22-2240   #46-4047   #61-4716   
.LCRDR	= 051000	#11-1229   #22-2240   #46-4047   #61-4716   
.LCRM1	= 057000	#11-1229   #22-2240   #46-4047   #61-4716   
.LCRM2	= 056000	#11-1229   #22-2240   #46-4047   #61-4716   
.LCRM3	= 055000	#11-1229   #22-2240   #46-4047   #61-4716   
.LCRM4	= 054000	#11-1229   #22-2240   #46-4047   #61-4716   
.LCRM5	= 053000	#11-1229   #22-2240   #46-4047   #61-4716   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 18

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

.LDAR 	= 077000	#11-1229   #22-2240   #46-4047   #61-4716   
.LDBRL	= 043000	#11-1229   #22-2240   #46-4047   #61-4716   
.LDBRR	= 042000	#11-1229   #22-2240   #46-4047   #61-4716   
.LDCK1	= 046000	#11-1229   #22-2240   #46-4047   #61-4716   
.LDCK2	= 047000	#11-1229   #22-2240   #46-4047   #61-4716   
.LDDIS	= 045000	#11-1229   #22-2240   #46-4047   #61-4716   
.LDRJD	= 064000	#11-1229   #22-2240   #46-4047   #61-4716   
.LDRJV	= 063000	#11-1229   #22-2240   #46-4047   #61-4716   
.LDRM1	= 060000	#11-1229   #22-2240   #46-4047   #61-4716   
.LDRM2	= 061000	#11-1229   #22-2240   #46-4047   #61-4716   
.LDRM3	= 062000	#11-1229   #22-2240   #46-4047   #61-4716   
.LDSEL	= 044000	#11-1229   #22-2240   #46-4047   #61-4716   
.LPPFL	= ******  GX	 31-2664   *31-2667   
.MEMRS	= 076000	#11-1229   #22-2240   #46-4047   #61-4716   
.PCAB1	= 150000	#11-1229   #22-2240   #46-4047   #61-4716   
.PCAB2	= 151000	#11-1229   #22-2240   #46-4047   #61-4716   
.PCAB3	= 152000	#11-1229   #22-2240   #46-4047   #61-4716   
.PCAB4	= 153000	#11-1229   #22-2240   #46-4047   #61-4716   
.POLLH	= ******  GX	 66-5270   
.PUDBA	= ******  GX	 63-4874    65-5118    66-5203   
.PUDEA	= ******  GX	 63-4992    66-5211   
.RCRM1	= 147000	#11-1229   #22-2240   #46-4047   #61-4716   
.RCRM2	= 146000	#11-1229   #22-2240   #46-4047   #61-4716   
.RCRM3	= 145000	#11-1229   #22-2240   #46-4047   #61-4716   
.RCRM4	= 144000	#11-1229   #22-2240   #46-4047   #61-4716   
.RCSPF	= 141000	#11-1229   #22-2240   #46-4047   #61-4716   
.RDJ14	= 134000	#11-1229   #22-2240   #46-4047   #61-4716   
.RDJ71	= 135000	#11-1229   #22-2240   #46-4047   #61-4716   
.RDMAB	= 133000	#11-1229   #22-2240   #46-4047   #61-4716   
.RPELC	= ******  GX	 10-1160   *10-1165   
.RPELQ	= ******  GX	 10-1166   
.RPUNT	= ******  GX	 19-1999   
.SECLK	= 003000	#11-1229   #22-2240   #46-4047   #61-4716   
.SETMR	= 007000	#11-1229   #22-2240   #46-4047   #61-4716   
.SETRN	= 011000	#11-1229   #22-2240   #46-4047   #61-4716   
.SSCLK	= 002000	#11-1229   #22-2240   #46-4047   #61-4716   
.STDTA	= ******  GX	 66-5256   
.STDTZ	= ******  GX	*66-5254    66-5255   
.STPCL	= 000000	#11-1229   #22-2240   #46-4047   #61-4716   
.STRCL	= 001000	#11-1229   #22-2240   #46-4047   #61-4716   
.TPDBA	= ******  GX	 65-5084   
.TPDEA	= ******  GX	 65-5092   
.WRMBX	= 071000	#11-1229   #22-2240   #46-4047   #61-4716   
..AKCR	  013720 RG	#59-4647   
..AKLP	  011372 RG	#42-3829   
..ALCB	= ******  GX	 10-1163    10-1163   
..ALC2	= ******  GX	 32-2833    32-2833    64-5027    64-5027    64-5034    64-5034   
..DECB	= ******  GX	 32-2875    32-2875   
..DECN	= ******  GX	 21-2102    21-2102    40-3691    40-3691    57-4602    57-4602   
..DEC2	= ******  GX	 32-2788    32-2788    66-5278    66-5278    66-5282    66-5282   
..DOLP	  011614 RG	 36-3383    36-3383    39-3554    39-3554   #44-3945   
..DOL1	  011600 RG	 34-3065    34-3065    39-3509    39-3509   #44-3939   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 19

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

..DQRN	= ******  GX	 9-540      9-540      11-1288    11-1288    19-1956    19-1956    19-1985    19-1985    33-2905   
                         33-2905   
..DSEV	= ******  GX	 10-771     10-771     11-1437    11-1437    39-3574    39-3574    40-3686    40-3686    41-3805   
                         41-3805    42-3842    42-3842    43-3901    43-3901    44-3970    44-3970    59-4656    59-4656   
..ENB0	= ******  GX	 19-1976    19-1976    43-3906    43-3906    66-5264    66-5264    67-5297    67-5297   
..FSTD	= ******  GX	 63-4902    63-4902    66-5252    66-5252   
..INTX	= ******  GX	 10-780     11-1441    39-3580    56-4577   
..IODN	= ******  GX	 9-673      9-673      11-1342    11-1342    19-1971    19-1971    19-2028    19-2028    21-2116   
                         21-2116    32-2868    32-2868    33-2968    33-2968   
..NADD	= ******  GX	 66-5271    66-5271   
..PTLP	  011452 RG	 33-2994    33-2994    40-3734    40-3734   #43-3868   
..SACK	= ******  GX	 21-2105    32-2762    32-2762   
..SPCR	  013676 RG	#58-4625   
..SPLP	  011220 RG	 33-2960    33-2960    35-3200    35-3200   #41-3768   
..STCR	  013654 RG	#57-4601   
..STIN	= ******  GX	 19-2035    35-3301    35-3301    52-4272    52-4272    53-4487    53-4487   
..STLP	  011010 RG	#40-3651   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 20

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

ALUN$ 		#22-2238   
ALUN$S		#61-4715   #63-4880   #63-5001   
CALL  		#8-343      9-540      9-607      9-673      10-771     10-774     10-862     10-881     10-891     10-897    
                 10-898     10-899     10-906     10-1163   #11-1228    11-1288    11-1342    11-1437   #18-1915    19-1956   
                 19-1971    19-1976    19-1985    19-2019    19-2028    20-2056    21-2102    21-2116    21-2167   #22-2239   
                 30-2629    30-2642    31-2666    32-2730    32-2738    32-2762    32-2788    32-2833    32-2868    32-2875   
                 33-2905    33-2960    33-2968    33-2994    34-3065    35-3200    35-3301    36-3383    39-3509    39-3554   
                 39-3574    40-3686    40-3691    40-3734    41-3805    42-3842    43-3901    43-3906    44-3970   #46-4046   
                 51-4218    51-4229    52-4244    52-4272    52-4284    52-4303    52-4337    53-4487    56-4573    57-4602   
                 58-4627    59-4656   #61-4715    63-4869    63-4902    63-4910    63-4912    63-4931    63-4952    63-4984   
                 63-5007    64-5018    64-5027    64-5034    64-5048    64-5054    64-5058    65-5095    65-5098    65-5101   
                 65-5103    66-5182    66-5192    66-5230    66-5235    66-5240    66-5241    66-5246    66-5247    66-5252   
                 66-5264    66-5271    66-5278    66-5282    67-5297    67-5306    68-5331    68-5352    68-5364    69-5412   
                 69-5414    69-5416    69-5418    69-5423    69-5425    69-5450    69-5462   
CALLR 		#18-1915    19-2035    21-2105   
CLEF$ 		#8-343      8-461     
DIR$  		#8-343     #9-538     #9-627     #9-627     #9-667     #9-668     #9-682     #9-683     #9-684     #11-1228   
                #11-1286   #11-1339   #11-1356   #11-1357   #11-1358   #18-1914   #19-1937   #22-2238   #30-2639   #30-2640   
                #30-2640   #30-2641   #30-2641   #31-2657   #31-2657   #32-2835   #32-2835   #35-3140   #35-3140   #35-3242   
                #36-3347   #36-3349   #36-3349   #46-4046   #51-4226   #51-4227   #51-4227   #51-4228   #51-4228   #52-4236   
                #52-4236   #52-4297   #52-4297   #53-4392   #53-4392   #63-4866   #63-4866   #63-4880   #63-4880   #63-5001   
                #63-5001   #64-5019   #64-5019   #67-5296   #67-5296   #68-5393   #68-5393   #69-5431   #69-5431   
ERR   		#61-4730   #63-4912   #63-5007   #65-5095   #65-5098   #65-5101   #65-5103   #66-5246   #67-5306   
ERRF  		#61-4734    65-5095    65-5098    65-5101   
ERRN  		#61-4739    67-5306   
ERR$  		#9-538     #9-627     #9-667     #9-668     #9-682     #9-683     #9-684     #11-1286   #11-1339   #11-1356   
                #11-1357   #11-1358   #19-1937   #30-2639   #30-2640   #30-2641   #31-2657   #32-2835   #35-3140   #35-3242   
                #36-3347   #36-3349   #51-4226   #51-4227   #51-4228   #52-4236   #52-4297   #53-4392   #63-4866   #63-4880   
                #63-5001   #64-5019   #67-5296   #68-5393   #69-5431   
IDENT$		#4-148     
MOV$  		#30-2640   #30-2640   #30-2640   #30-2641   #30-2641   #31-2657   #31-2657   #36-3349   #36-3349   #51-4227   
                #51-4227   #51-4227   #51-4228   #51-4228   #52-4236   #52-4236   #63-4866   #63-4866   #63-4880   #63-4880   
                #63-4880   #63-4880   #63-4880   #63-5001   #63-5001   #63-5001   #63-5001   #63-5001   #67-5296   #67-5296   
                #68-5393   #68-5393   #68-5393   #68-5393   #68-5393   #68-5393   #68-5393   #68-5393   #68-5393   #68-5393   
                #68-5393   #68-5393   #69-5431   #69-5431   #69-5431   #69-5431   #69-5431   #69-5431   #69-5431   #69-5431   
                #69-5431   
MRKT$ 		#8-343     #8-467     #11-1228   #11-1253   #22-2238   #30-2604   #30-2606   #46-4045   #49-4160   
MSG   		#61-4721   #63-4912   #63-4931   #63-5007   #65-5095   #65-5098   #65-5101   #65-5103   #66-5246   #67-5306   
MVB$  		#67-5296   #67-5296   #68-5393   #68-5393   #69-5431   #69-5431   
NBL$  		#63-4880   #63-4880   #63-5001   #63-5001   
OFF$  		#8-458      8-458      8-458     #8-461      8-461      8-461     #8-464      8-464      8-464     #8-467     
                 8-467      8-467      8-467      8-467      8-467     #8-470      8-470      8-470     #8-473      8-473     
                 8-473      8-473      8-473      8-473      8-473      8-473      8-473     #11-1247    11-1247    11-1247   
                #11-1249    11-1249    11-1249   #11-1251    11-1251    11-1251    11-1251    11-1251    11-1251    11-1251   
                 11-1251    11-1251   #11-1253    11-1253    11-1253    11-1253    11-1253    11-1253   #11-1255    11-1255   
                 11-1255   #30-2604    30-2604    30-2604    30-2604    30-2604    30-2604   #30-2606    30-2606    30-2606   
                 30-2606    30-2606    30-2606   #35-3246    35-3246    35-3246    35-3246    35-3246    35-3246    35-3246   
                 35-3246    35-3246   #49-4160    49-4160    49-4160    49-4160    49-4160    49-4160   
POP   		#22-2239    32-2789    32-2854    32-2869    35-3302    35-3316    35-3316    35-3316    35-3316    36-3385   
                 37-3425    37-3425    37-3425    39-3537    39-3543    39-3579    39-3579    39-3579    40-3739    40-3739   
                 40-3739    41-3807    41-3807    41-3807    42-3844    43-3907    43-3907   #46-4046   #61-4715    68-5354   
                 68-5365    69-5432    69-5433    69-5472   
DRIVERS10  CREATED BY  MACRO  ON 3-APR-86 AT 20:50	PAGE 21

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

PUSH  		#22-2239    32-2701    32-2784    32-2824    32-2863    35-3136    35-3297    36-3381    37-3405    39-3492   
                 39-3529    40-3652    41-3769    42-3830    43-3869   #46-4046   #61-4715    63-4912    63-4931    63-5007   
                 65-5095    65-5098    65-5101    65-5103    66-5246    67-5306    68-5349    68-5359    69-5409    69-5463   
QDPB$ 		#8-473     #8-473     #11-1251   #11-1251   #35-3246   #35-3246   
QDPB$S		#68-5393    68-5393   #69-5431    69-5431   
QIOSY$		#8-343     #8-345     #11-1227   #11-1230   #22-2238   #22-2241   #61-4715   #61-4717   
QIOW$ 		#8-343      8-473     #11-1228    11-1251   #22-2238    35-3246   
QIOW$S		#61-4715    68-5393    69-5431   
RCVX$S		#61-4715   #63-4866   
RESTOR		#35-3136   #35-3316   #37-3405   #37-3425   #39-3492   #39-3579   #40-3652   #40-3739   #41-3769   #41-3807   
                #42-3830   #42-3844   #43-3869   #43-3907   
RETURN		#6-217     #6-276     #8-343     #10-1014   #10-1051   #10-1186   #11-1228   #18-1915   #20-2060   #22-2239   
                #35-3317   #36-3390   #37-3426   #40-3740   #41-3808   #42-3845   #43-3908   #44-4001   #46-4046   #53-4494   
                #54-4508   #58-4629   #59-4657   #61-4715   #66-5286   #68-5355   #68-5366   #68-5400   #69-5434   #69-5443   
                #69-5475   
RFA$  		#63-4866   #63-4866   #67-5296   #67-5296   #67-5296   
RQST$S		#61-4715   #67-5296   
RVP$  		#31-2657   #52-4236   #63-4880    63-4880   #63-5001    63-5001   #68-5393    68-5393   #69-5431    69-5431   
SAVE  		#22-2247   #35-3136   #37-3405   #39-3492   #40-3652   #41-3769   #42-3830   #43-3869   
SPRA$S		#22-2238   #30-2641   #46-4045   #51-4228   
SVTK$S		#22-2238    30-2640   #46-4045    51-4227   
VDPB$S		#63-4866   #63-4866   
WSIG$S		#8-343      9-627     #22-2238    32-2835    35-3140   #46-4045    52-4297    53-4392   #61-4715    64-5019   
WTLO$ 		#18-1914    18-1924   
WTLO$S		#22-2238    31-2657   #46-4045    52-4236   
WTSE$ 		#8-343     #8-458     #8-464     #8-470     #11-1228   #11-1247   #11-1249   #11-1255   
WTSE$S		#22-2238    36-3349   #46-4045   
$DEF  		#11-1227   #11-1229   #22-2239   #22-2240   #46-4046   #46-4047   #61-4715   #61-4716   
.ENB  		#18-1914   #21-2158   #22-2239   #31-2663   #32-2751   #46-4046   #52-4241   
.ENB0 		#18-1914    19-1976   #22-2239    43-3906   #61-4715    66-5264    67-5297   
.ENB4 		#22-2297   #34-3067   #36-3384   
.ENB6 		#18-1914    20-2058   
.INH  		#18-1914    21-2138   #22-2239    31-2660    32-2744   #46-4046    52-4238   
.INH0 		#18-1914    19-1938   #22-2239    43-3883   #61-4715    66-5250    67-5292   
.INH4 		#22-2293    34-3055    36-3382   
.INH6 		#18-1914    20-2053   
.STKM 		#8-343     #8-455     #11-1228   #11-1245   #18-1914   #18-1935   #22-2239   #27-2502   #46-4046   #49-4135   
                #61-4715   #62-4799