Google
 

Trailing-Edge - PDP-10 Archives - bb-x141b-bb - driver.l20
There are 3 other files named driver.l20 in the archive. Click here to see a list.
ARITH -- 16 BIT ARITHMETIC SIMU	MACRO M1113  03-APR-86 19:04
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 19:04  PAGE 1


      1						.TITLE	RSXFC	-- RSX20F PARAMETER FILE (TOPS-20 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-20 SYSTEM.
     32					;
     33					; EQUATED SYMBOLS
     34					;
     35		000001 				$TOP20	=1	; DEFINE TOPS-20 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						$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 19:04  PAGE 1-1


     58					.ENDC			; $T1091
     59					.ENDC			; $TOP10
     60
     61					.IF DF	$TOP20
     62		000001 				$RX11	=1	; INCLUDE FLOPPY DRIVER
     63					.ENDC			; $TOP20
RSXFC	-- RSX20F PARAMETER FIL	MACRO M1113  03-APR-86 19:04  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 19:04  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
    118		000102 			RSX$$F	=	'B		; TOPS-20 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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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
DBDRV -- RP04/RP06 DRIVER	MACRO M1113  03-APR-86 19:04  PAGE 12
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1447
   1448
   1450						.TITLE	DXDRV
   1451						.IDENT	/007000/
   1452					;
   1453					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   1454					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   1455					;			ALL RIGHTS RESERVED.
   1456					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   1457					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   1458					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   1459					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   1460					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   1461					;
   1462					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   1463					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   1464					;       CORPORATION.
   1465					;
   1466					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   1467					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   1468					;
   1469					;
   1470					; DEC  ASSUMES NO  RESPONSIBILITY  FOR  THE  USE  OR RELIABILITY
   1471					; OF ITS  SOFTWARE ON  EQUIPMENT WHICH  IS NOT SUPPLIED BY DEC.
   1472					;
   1473					;
   1474					; VERSION:	07-00
   1475					; BY:		H. LEV
   1476					; RSX20F --	R. MCLEAN
   1477					; DATE:		16-JUN-75
   1478					;
   1479					;
   1480					; RX01 - RX11  FLOPPY DISK DRIVER
   1481					;
   1482					; FUNCTIONS RECOGNIZED:
   1483					;	IO.RPB	- READ PHYSICAL BLOCK (MAY READ ANY SECTOR ON DISK)
   1484					;	IO.WPB	- WRITE PHYSICAL BLOCK (MAY WRITE ANY SECTOR ON DISK)
   1485					;	IO.WDD	- WRITE DELETED DATA - WRITE ANY SECTOR ON DISK
   1486					;		  SETTING THE DELETED DATA MARK IN SECTOR HEADER
   1487					;	THE FOLLOWING TWO FUNCTION CODES OPERATE ON 256 WORD BLOCKS
   1488					;	OF DATA (4 SECTORS)  THE DRIVER AUTOMATICALLY INTERLEAVES
   1489					;	AND SKEWS SECTORS TO OPTIMIZE THE TRANSFER OF DATA
   1490					;	SO THAT A LONG READ/WRITE MAY BE DONE WITHOUT LOOSING
   1491					;	A REVOLUTION OF THE DISK.  THE INTERLEAVE FACTOR IS 2
   1492					;	AND THE SKEW FACTOR IS 6.
   1493					;	IO.RLB	- READ LOGICAL BLOCKS OF 256. WORDS
   1494					;	IO.WLB	- WRITE LOGICAL BLOCKS OF 256. WORDS.
   1495					;
   1496					;	IF DELETED DATA IS READ, THE STATUS CODE RETURNED WILL
   1497					;	BE IS.RDD, OTHERWISE IT IS IS.SUC
   1498					;
   1499					;
   1500					; MODIFICATIONS:
   1501					;
   1502					;	NO.	DATE		PROGRAMMER	PURPOSE
   1503					;	---	----		----------	-------
   1504					;	001	15-MAR-77	R. BELANGER	CONDITIONALLY ASSEMBLE
DXDRV	MACRO M1113  03-APR-86 19:04  PAGE 12-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1505					;						FLOPPY DRIVER
   1506					;	002	22-OCT-77	R. BELANGER	REMOVE CONDITIONALS
DXDRV	MACRO M1113  03-APR-86 19:04  PAGE 13
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1508						.MCALL	QIOSY$,$DEF
   1509	002056					QIOSY$
   1510						.MCALL	.STKM,WTSE$,DIR$,CALL,RETURN
   1511	002056					$DEF
   1512					;
   1513					;
   1514					; EQUATED SYMBOLS
   1515					;
   1516		000020 			A.EF=20		;LOCAL DEFINITION BECAUSE OF NO COMPLEX GLOBLS
   1517		177170 			DXEXP=177170	;EXTERNAL PAGE ADDRESS
   1518					;
   1519		000010 			RETRY	=	8.		; ERROR RETRY COUNT
   1520		000040 			PHYBLK	=	40		; PHYSICAL BLOCK SUBFUNCTION CODE
   1521					;
   1522					;
   1523					; RX11 DEVICE REGISTER OFFSETS AND BIT DEFINITIONS
   1524					;
   1525					;
   1526		000000 			RXCS	=	0		; CONTROL STATUS REGISTER
   1527		000002 			RXDB	=	2		; DATA BUFFER
   1528		000020 			UNIT	=	20		; UNIT SELECT BIT
   1529		000040 			DONE	=	40		; RX11 DONE
   1530		000100 			INTEBL	=	100		; INTERRUPT ENABLE
   1531		000200 			TR	=	200		; RX11 TRANSFER READY BIT (CPU-SILO)
   1532		040000 			INIT	=	40000		; INITIALIZE RX11
   1533					;
   1534					;
   1535					; FUNCTION CODES
   1536					;
   1537		000001 			GO	=	1		; GO BIT
   1538		000001 			FILL	=	0!GO		; FILL SILO
   1539		000003 			EMPTY	=	2!GO		; EMPTY SILO
   1540		000005 			WRITE	=	4!GO		; WRITE A SECTOR
   1541		000007 			READ	=	6!GO		; READ A SECTOR
   1542		000015 			WRTDD	=	14!GO		; WRITE DELETED DATA
   1543					;
   1544	002056				DXHD::	.STKM	0,0,0,0,0,0,0,DXINI,174000,DXSTK
	002124	000000 	000000 	000000 		.WORD	0,0,0,0
	002132	000000
	002152	174000 	002366'	002336'		.WORD	174000,DXINI,DXSTK
	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
DXDRV	MACRO M1113  03-APR-86 19:04  PAGE 13-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

	002350	000000 				.WORD	0
	002352	002366'				.WORD	DXINI
	002354	174000 				.WORD	174000
   1545					;
   1546	002356				WFPKT:	WTSE$	E.NIR
	002356	   051 	   002 			.BYTE	41.,2
	002360	000000G				.WORD	E.NIR
   1547					;
   1548	002362				DXIOD:	WTSE$	E.IOD
	002362	   051 	   002 			.BYTE	41.,2
	002364	000000G				.WORD	E.IOD
   1549					;
   1550					;
DXDRV	MACRO M1113  03-APR-86 19:04  PAGE 14
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1552					;+
   1553					; *** - DXINI  FLOPPY DISK CONTROLLER INITIATOR
   1554					;
   1555					; THIS ROUTINE IS ENTERED FROM THE QIO DIRECTIVE WHEN AN I/O REQUEST
   1556					; IS QUEUED AND AT THE END OF A PREVIOUS I/O OPERATION TO PROPOGATE THE
   1557					; EXECUTION OF THE DRIVER.  IF THE SPECIFIED CONTROLLER IS NOT BUSY,
   1558					; THEN AN ATTEMPT IS MADE TO DEQUEUE THE NEXT I/O REQUEST.  OTHERWISE
   1559					; A RETURN TO THE CALLER IS EXECUTED.  IF THE DEQUEUE ATTEMPT IS SUCCESSFUL
   1560					; THE NEXT I/O OPERATION IS INITIATED.  A RETURN TO THE CALLER IS THEN
   1561					; EXECUTED.
   1562					;
   1563					; INPUTS:
   1564					;	R5 - ADDRESS OF UCB WHICH IS ASSOCIATED WITH CONTROLLER TO BE INITIATED
   1565					;
   1566					; OUTPUTS:
   1567					;	IF THE CONTROLLER ASSOCIATED WITH THE SPECIFIED UCB IS NOT
   1568					;	BUSY AND AN I/O REQUEST IS WAITING TO BE PROCESSED, THE REQUEST
   1569					;	IS DEQUEUED AND THE DRIVER INITIATES THE REQUESTED FUNCTION.
   1570					;
   1571					;-
   1572						.ENABL	LSB
   1573	002366				DXINI:	DIR$	#WFPKT		;WAIT FOR PACKET TO DO SOME WORK
	002366	012746 	002356'			MOV	#WFPKT,-(SP)
	002372	104375 				EMT	375
   1574	002374	012700 	054104 		5$:	MOV	#"DX,R0		;TRY TO DQ
   1575	002400					CALL	..DQRN		;DQ A PACKET
	002400	004737 	000000G			JSR	PC,..DQRN
   1576	002404	103770 				BCS	DXINI
   1577	002406	005702 				TST	R2
   1578	002410	001402 				BEQ	7$
   1579	002412	012702 	000020 			MOV	#UNIT,R2
   1580	002416	010237 	000000G		7$:	MOV	R2,DXUNIT	;SAVE UNIT NUMBER
   1581	002422	010537 	000000G			MOV	R5,DXBUF	;SAVE ADDRESS OF BUFFER
   1582	002426	010337 	000000G			MOV	R3,DXCNT	;SAVE BYTE COUNT
   1583	002432	010137 	000000G			MOV	R1,DXPKT	;SAVE THE PACKET
   1584	002436	122761 	000002 	000001G		CMPB	#IO.RLB/256.,R.FC+1(R1)	;CHECK FOR VALID FUNCTION
   1585	002444	001404 				BEQ	6$
   1586	002446	122761 	000001 	000001G		CMPB	#IO.WLB/256.,R.FC+1(R1)
   1587	002454	001062 				BNE	ILFCD
   1588	002456				6$:
   1589					;
   1590					; USAGE OF WORDS IN DXVCB
   1591					;	DXVCB+2 - LOGICAL OR PHYSICAL SECTOR NUMBER
   1592					;	DXVCB+4 - BYTES TO TRANSFER ON CURRENT SECTOR
   1593					;	DXVCB+6 - CURRENT FUNCTION CODE
   1594					;	DXVCB+10 - PHYSICAL SECTOR NUMBER(1-26.)
   1595					;	DXVCB+11 - PHYSICAL TRACK NUMBER (0-77.)
   1596					;	DXVCB+12 - STATUS REGISTER AFTER INTERRUPT
   1597					;
   1598					;
   1599					;
   1600					; INITIALIZE DRIVER
   1601					;
   1602	002456	012737 	000010 	000000G	10$:	MOV	#RETRY,DXRTC ; SET RETRY COUNT
   1603	002464	105761 	000006G			TSTB	R.PB+6(R1)	; HIGH BLOCK SPECIFIED?
   1604	002470	001161 				BNE	180$		;NO
   1605					;
DXDRV	MACRO M1113  03-APR-86 19:04  PAGE 14-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1606					; SET UP FIRST BLOCK OR SECTOR NUMBER
   1607					;
   1608	002472	016100 	000010G		20$:	MOV	R.PB+10(R1),R0	; GET PHYSICAL OR LOGICAL BLOCK NUMBER
   1609	002476	132761 	000040 	000000G		BITB	#PHYBLK,R.FC(R1) ; IS IT READ/WRITE PHYSICAL
   1610	002504	001002 				BNE	30$		; YES
   1611	002506	006300 				ASL	R0		; CONVERT TO LOGICAL SECTOR NUMBER
   1612	002510	006300 				ASL	R0		; WHICH IS LBN*4
   1613	002512	010037 	000002G		30$:	MOV	R0,DXVCB+2	; STORE IT
   1614	002516	016137 	000000G	000006G		MOV	R.FC(R1),DXVCB+6 ; SAVE FUNCTION CODE
   1615	002524	012703 	177170 		35$:	MOV	#DXEXP,R3	; GET CSR ADDRESS
   1616	002530					CALL	TRKSEC		; CONVERT BLOCK NUMBER TO TRACK/SECTOR
	002530	004737 	003272'			JSR	PC,TRKSEC
   1617	002534	103537 				BCS	180$		; BAD BLOCK NUMBER
   1618	002536	012702 	000007 			MOV	#READ,R2	; ASSUME READ FUNCTION
   1619	002542	122737 	000001 	000007G		CMPB	#IO.WLB/256.,DXVCB+7 ; WRITE?
   1620	002550	001064 				BNE	95$		; NO
   1621					;
   1622					; FILL SILO BEFORE WRITE
   1623					;
   1624	002552					CALL	SETBUF		; SET UP BUFFER POINTER AND MAPPING REGISTER
	002552	004737 	003442'			JSR	PC,SETBUF
   1625	002556	010304 				MOV	R3,R4		; COPY CSR ADDRESS
   1626	002560	012724 	000001 			MOV	#FILL,(R4)+	; SET FILL BUFFER FUNCTION
   1627	002564	005002 			70$:	CLR	R2		; ASSUME NO DATA TO TRANSFER
   1628	002566	005301 				DEC	R1		; MORE DATA TO TRANSFER?
   1629	002570	002401 				BLT	74$		; NO
   1630	002572	112002 				MOVB	(R0)+,R2	; YES, GET NEXT BYTE
   1631	002574	132713 	000240 		74$:	BITB	#TR!DONE,@R3	; IS CONTROLLER READY FOR NEXT BYTE
   1632	002600	100402 				BMI	76$		; YES
   1633	002602	001774 				BEQ	74$		; NO, WAIT UNTIL IT IS
   1634	002604	000402 				BR	90$		; YES, SILO FULL
   1635	002606	110214 			76$:	MOVB	R2,@R4		; NO, PUT NEXT BYTE IN SILO
   1636	002610	000765 				BR	70$		; AND WAIT TILL IT'S ACCEPTED
   1637					;
   1638	002612	005701 			90$:	TST	R1		; TRANSFERED ALL REQUESTED BYTES
   1639	002614	100432 				BMI	140$		; YES
   1640	002616	000137 	003250'			JMP	DXRTY		;NO, ERROR
   1641					;
   1642	002622	012703 	000376 		ILFCD:	MOV	#IE.IFC&377,R3		;NO -- ILLEGAL FUNCTION
   1643	002626	000467 				BR	157$
   1644					;
   1645					;
   1646					; EMPTY SILO AFTER READ
   1647					;
   1648	002630	010304 			100$:	MOV	R3,R4		; GET CSR ADDRESS
   1649	002632	012724 	000003 			MOV	#EMPTY,(R4)+	; SET EMPTY BUFFER FUNCTION
   1650	002636					CALL	SETBUF		; SET BUFFER POINTER AND MAPPING REGISTER
	002636	004737 	003442'			JSR	PC,SETBUF
   1651	002642	132713 	000240 		110$:	BITB	#TR!DONE,@R3	; NEXT BYTE READY FOR US?
   1652	002646	100402 				BMI	114$		; YES
   1653	002650	001774 				BEQ	110$		; NO, WAIT TILL IT IS
   1654	002652	000405 				BR	120$		; NO, SILO IS EMPTY
   1655					;
   1656	002654	111402 			114$:	MOVB	@R4,R2		; GET NEXT BYTE
   1657	002656	005301 				DEC	R1		; DO WE WANT IT?
   1658	002660	002770 				BLT	110$		; NO
   1659	002662	110220 				MOVB	R2,(R0)+	; YES, PUT IT IN BUFFER
DXDRV	MACRO M1113  03-APR-86 19:04  PAGE 14-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1660	002664	000766 				BR	110$		; GET NEXT BYTE
   1661					;
   1662	002666	005701 			120$:	TST	R1		; ALL BYTES TRANSFERED?
   1663	002670	003167 				BGT	DXRTY		; NO, ERROR
   1664	002672					CALL	NXTSEC		; UPDATE TO NEXT SECTOR
	002672	004737 	003420'			JSR	PC,NXTSEC
   1665	002676	001523 				BEQ	193$		; ALL DONE
   1666	002700	000711 				BR	35$		; CONTINUE
   1667					;
   1668					; INITIATE TRANSFER BETWEEN SILO AND DISK
   1669					;
   1670	002702	012702 	000005 		140$:	MOV	#WRITE,R2	; DEFAULT WRITE FUNCTION
   1671	002706	032737 	000004 	000006G		BIT	#4,DXVCB+6	; WRITE DELETED DATA?
   1672	002714	001402 				BEQ	150$		; NO
   1673	002716	012702 	000015 			MOV	#WRTDD,R2	; YES, SET WRITE DELETED DATA
   1674	002722				95$:
   1675	002722	053702 	000000G		150$:	BIS	DXUNIT,R2	; YES, SET TO SELECT UNIT
   1676	002726	010213 			152$:	MOV	R2,@R3		; INITIATE FUNCTION
   1677	002730					CALL	TRWAIT		; WAIT FOR REQUEST FOR SECTOR
	002730	004737 	003472'			JSR	PC,TRWAIT
   1678	002734	103545 				BCS	DXRTY		; ERROR
   1679	002736	113763 	000010G	000002 		MOVB	DXVCB+10,RXDB(R3) ; GIVE SECTOR NUMBER TO CONTROLLER
   1680	002744					CALL	TRWAIT		; WAIT
	002744	004737 	003472'			JSR	PC,TRWAIT
   1681	002750	103537 				BCS	DXRTY		; ERROR
   1682	002752	113763 	000011G	000002 		MOVB	DXVCB+11,RXDB(R3) ; GIVE TRACK NUMBER TO  CONTROLLER
   1683	002760				155$:
   1684	002760	052713 	000100 			BIS	#INTEBL,@R3	; ENABLE INTERRUPT
   1685					;
   1686	002764	032737 	000340 	177776 		BIT	#340,@#PS	;AT A PRIORITY?
   1687	002772	001116 				BNE	220$		;YES -- THEN EXIT INTERRUPT SERVICE
   1688	002774					DIR$	#DXIOD		;WAIT FOR I/O DONE
	002774	012746 	002362'			MOV	#DXIOD,-(SP)
	003000	104375 				EMT	375
   1689	003002	013703 	000000G			MOV	DXVCB,R3	;FIND THE I/O STATUS
   1690	003006	013704 	000002G		157$:	MOV	DXVCB+2,R4
   1691	003012	013701 	000000G			MOV	DXPKT,R1
   1692	003016					CALL	..IODN		;FINISH I/O
	003016	004737 	000000G			JSR	PC,..IODN
   1693	003022	042737 	000000G	000020G		BIC	#EF.IOD,DXTSK+A.EF	;CLEAR EVENT FLAG
   1694	003030	000137 	002366'			JMP	DXINI		;AND TRY AGAIN
   1695					;
   1696	003034	012703 	000354 		180$:	MOV	#IE.BLK&377,R3	;SET ILLEGAL BLOCK
   1697	003040	032737 	000340 	177776 	185$:	BIT	#340,@#PS		;FROM INT SERV?
   1698	003046	001757 				BEQ	157$		;NO -- RETURN TO CALLER
   1699	003050	000456 				BR	210$		;AND REPORT ERROR
   1700					;
   1701	003052	012703 	000374 		190$:	MOV	#IE.VER&377,R3		;RETURN UNRECOVERABLE ERROR
   1702	003056	000770 				BR	185$
   1703					;
DXDRV	MACRO M1113  03-APR-86 19:04  PAGE 15
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1705					;+
   1706					; *** - $DXINT  - RX11 FLOPPY DISK INTERRUPT ENTRY POINT
   1707					;
   1708					;-
   1709	003060				$DXINT::			;;;
   1710	003060	010046 				MOV	R0,-(SP)	;;;SAVE REGISTERS
   1711	003062	010146 				MOV	R1,-(SP)
   1712	003064	010246 				MOV	R2,-(SP)
   1713	003066	010346 				MOV	R3,-(SP)
   1714	003070	010446 				MOV	R4,-(SP)
   1715	003072	010546 				MOV	R5,-(SP)
   1716					;
   1717					;
   1718	003074	012703 	177170 			MOV	#DXEXP,R3	;;; GET CSR ADDRESS
   1719	003100	016337 	000002 	000012G		MOV	2(R3),DXVCB+12 ;;; SAVE STATUS
   1720	003106	042713 	000100 			BIC	#INTEBL,@R3	;;; DISABLE INTERRUPTS
   1721	003112	005713 				TST	@R3		; ANY ERRORS?
   1722	003114	100455 				BMI	DXRTY		; YES
   1723	003116	106237 	000001G			ASRB	DXRTC+1		; INITIALIZE IN PROGRESS
   1724	003122	103407 				BCS	166$		;YES
   1725	003124	122737 	000002 	000007G	160$:	CMPB	#IO.RLB/256.,DXVCB+7 ; READ?
   1726	003132	001636 				BEQ	100$		; YES, GO EMPTY SILO
   1727	003134					CALL	NXTSEC		; NO, UPDATE TO NEXT SECTOR
	003134	004737 	003420'			JSR	PC,NXTSEC
   1728	003140	001414 				BEQ	195$		; ALL DONE
   1729	003142	000137 	002524'		166$:	JMP	35$		; WRITE MORE DATA
   1730					;
   1731					;
   1732	003146	032737 	000040 	000006G	193$:	BIT	#PHYBLK,DXVCB+6 ; IS THIS A READ PHYSICAL?
   1733	003154	001406 				BEQ	195$		; NO, THEN IGNORE DELETED DATA MARK
   1734	003156	012703 	000002 			MOV	#IS.RDD&377,R3	; YES, DEFAULT ON READ TO DELETED DATA
   1735	003162	032737 	000100 	000012G		BIT	#100,DXVCB+12 ; WAS DELETED DATA READ?
   1736	003170	001002 				BNE	200$		; YES
   1737	003172	012703 	000001 		195$:	MOV	#IS.SUC&377,R3	; NO, SET NORMAL SUCCESS
   1738	003176	013700 	000000G		200$:	MOV	DXPKT,R0	; GET I/O PACKET ADDRESS
   1739	003202	016000 	000002G			MOV	R.PB+2(R0),R0	; SET BYTES TRANSFERED
   1740	003206	010037 	000002G		210$:	MOV	R0,DXVCB+2	;SAVE DEVICE STATUS
   1741	003212	010337 	000000G			MOV	R3,DXVCB
   1742	003216	052737 	000000G	000020G		BIS	#EF.IOD,DXTSK+A.EF	;START TASK
   1743	003224					CALL	..DSEV		;DECLARE SIG EVENT
	003224	004737 	000000G			JSR	PC,..DSEV
   1744	003230	012605 			220$:	MOV	(SP)+,R5
   1745	003232	012604 				MOV	(SP)+,R4
   1746	003234	012603 				MOV	(SP)+,R3	;RESTORE REGISTERS
   1747	003236	012602 				MOV	(SP)+,R2
   1748	003240	012601 				MOV	(SP)+,R1
   1749	003242	012600 				MOV	(SP)+,R0
   1750	003244	000137 	000000G			JMP	@#..INTX
   1751					;
   1752					;
   1753					;
   1754					;
   1755					;
   1756					;
   1757					;
   1758					; RETRY LAST FUNCTION
   1759					;
DXDRV	MACRO M1113  03-APR-86 19:04  PAGE 15-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1760	003250	105337 	000000G		DXRTY:	DECB	DXRTC		; ANY RETRIES LEFT?
   1761	003254	001676 				BEQ	190$		; NO, ERROR
   1762	003256	112737 	000001 	000001G		MOVB	#1,DXRTC+1	; YES, SET INITIALIZE IN PROGRESS
   1763	003264	012713 	040000 			MOV	#INIT,@R3	; INITIALIZE RX01 DRIVES
   1764	003270	000633 				BR	155$		; AND DO IT
   1765						.DSABL	LSB
DXDRV	MACRO M1113  03-APR-86 19:04  PAGE 16
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1767					;+
   1768					; *** - TRKSEC  -  CONVERT LOGICAL OR PHYSICAL BLOCK NUMBER TO
   1769					;	TRACK-SECTOR PAIR
   1770					; FROM ALGORITHM BY J GILBERT MODIFIED BY H. JACOBS
   1771					;
   1772					; INPUT:
   1773					;	DXVCB+2 - LOGICAL SECTOR OR PHYSICAL SECTOR
   1774					;
   1775					; OUTPUT:
   1776					;	DXVCB+10 - SECTOR (1-26.)
   1777					;	DXVCB+11 - TRACK (0-77.)
   1778					;	C CLEAR - VALID BLOCK
   1779					;	C SET - BAD BLOCK NUMBER (PHYSICAL OR LOGICAL)
   1780					;
   1781					;-
   1782	003272	013701 	000002G		TRKSEC:	MOV	DXVCB+2,R1	; GET LOGICAL BLOCK OR PHYSICAL BLOCK
   1783	003276	012700 	000010 			MOV	#8.,R0		; SET LOOP COUNT
   1784	003302	012702 	006400 			MOV	#6400,R2	; SET DIVISOR
   1785	003306	020201 			1$:	CMP	R2,R1		; DOES 26 GO INTO DIVIDEND?
   1786	003310	101002 				BHI	2$		; BRANCH IF NOT, C CLEAR
   1787	003312	160201 				SUB	R2,R1		; SUBTRACT 26 FROM DIVIDEND
   1788	003314	000261 				SEC			; SET CARRY
   1789	003316	006101 			2$:	ROL	R1		; SHIFT DIVIDEND AND QUOTIENT
   1790	003320	005300 				DEC	R0		; DONE?
   1791	003322	003371 				BGT	1$		; NO, LOOP
   1792	003324	110100 				MOVB	R1,R0		; GET TRACK NUMBER
   1793	003326	105001 				CLRB	R1		; CLEAR TRACK NUMBER
   1794	003330	000301 				SWAB	R1		; SHIFT DONE SECTOR NUMBER
   1795	003332	032737 	000040 	000006G		BIT	#PHYBLK,DXVCB+6 ; IS IT PHYSICAL BLOCK NUMBER?
   1796	003340	001016 				BNE	10$		; YES
   1797	003342	022701 	000014 			CMP	#12.,R1		; NO, C=1 IF 13<=R1<=25
   1798	003346	006101 				ROL	R1		; DOUBLE FOR INTERLEAVE FACTOR
   1799	003350	006300 				ASL	R0		; ADD TRACK -TRACK SKEW
   1800	003352	060001 				ADD	R0,R1		; SKEW BY 2*TRACK
   1801	003354	060001 				ADD	R0,R1		; SKEW BY 4*TRACK
   1802	003356	060001 				ADD	R0,R1		; SKEW BY 6*TRACK
   1803	003360	006200 				ASR	R0		; RESTORE TRACK NUMBER
   1804	003362	012702 	000032 			MOV	#26.,R2		; SET MODULUS
   1805	003366	160201 			5$:	SUB	R2,R1		; MODULO SECTOR INTO RANGE -26. TO -1.
   1806	003370	002376 				BGE	5$		; LOOP TILL REMAINDER GOES NEG
   1807	003372	060201 				ADD	R2,R1		; CONVERT TO RANGE 0-25.
   1808	003374	005200 				INC	R0		; LBN0 STARTS ON TRACK 1
   1809	003376	005201 			10$:	INC	R1		; CONVERT TO RANGE 1-26.
   1810	003400	010137 	000010G			MOV	R1,DXVCB+10 	; SAVE SECTOR NUMBER
   1811	003404	110037 	000011G			MOVB	R0,DXVCB+11 	; SAVE TRACK NUMBER
   1812	003410	022737 	046400 	000010G		CMP	#77.*256.,DXVCB+10 ; IS IT VALID TRACK/SECTOR?
   1813	003416					RETURN			;
	003416	000207 				RTS	PC
DXDRV	MACRO M1113  03-APR-86 19:04  PAGE 17
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1815					;
   1816					;+
   1817					; *** - NXTSEC  -  UPDATE BLOCK NUMBER , BUFFER ADDRESS
   1818					;			AND BUFFER POINTER
   1819					;
   1820					; INPUT:
   1821					;	DXVCB+2 - CURRENT BLOCK NUMBER
   1822					;	DXVCB+4 - BYTES TRANSFERRED DURING LAST FUNCTION
   1823					;	DXCNT - BYTES LEFT TO TRANSFER
   1824					;	DXBUF - BUFFER ADDRESS
   1825					;
   1826					; OUTPUT:
   1827					;	DXVCB+2 - UPDATED BLOCK NUMBER
   1828					;	DXBUF - UPDATED BY 128. BYTES
   1829					;	DXCNT - UPDATED BY NUMBER OF WORDS TRANSFERED
   1830					;	Z SET - ALL BYTES TRANSFERED
   1831					;	Z CLEAR - MORE BYTES TO TRANSFER
   1832					;	C CLEAR - VALID TRACK/SECTOR
   1833					;	C SET - BAD BLOCK NUMBER
   1834					;
   1835					;+
   1836	003420	005237 	000002G		NXTSEC:	INC	DXVCB+2		; UPDATE BLOCK NUMBER
   1837					;
   1838	003424	062737 	000200 	000000G		ADD	#128.,DXBUF ; UPDATE BUFFER POINTER
   1839					;
   1840	003432	163737 	000004G	000000G		SUB	DXVCB+4,DXCNT 	; UPDATE BYTES LEFT TO TRANSFER
   1841	003440					RETURN			;
	003440	000207 				RTS	PC
   1842					;
   1843					;+
   1844					; *** - SETBUF  -  SET UP BUFFER POINTER FOR CPU - SILO TRANSFERS
   1845					;
   1846					; INPUT:
   1847					;
   1848					; OUTPUT:
   1849					;	R0 - BUFFER ADDRESS
   1850					;	R1 - BYTES TO TRANSFER
   1851					;	IF MAPPED SYSTEM KISAR6 IS MAPPED TO BUFFER AND R1 IS BASE 140000
   1852					;
   1853					;-
   1854	003442	013700 	000000G		SETBUF:	MOV	DXBUF,R0	; GET BUFFER ADDRESS
   1855	003446	012701 	000200 			MOV	#128.,R1	; DEFAULT TO 128. BYTE TRANSFER
   1856	003452	023701 	000000G			CMP	DXCNT,R1	; 128. BYTES LEFT TO TRANSFER?
   1857	003456	103002 				BHIS	10$		; YES
   1858	003460	013701 	000000G			MOV	DXCNT,R1	; NO, GET RESIDUAL COUNT
   1859	003464	010137 	000004G		10$:	MOV	R1,DXVCB+4	; STORE COUNT OF BYTES TO TRANSFER
   1860					;
   1861	003470					RETURN			;
	003470	000207 				RTS	PC
   1862					;+
   1863					; *** - WAIT FOR TRANSFER REQUEST AND DONE
   1864					;
   1865					; INPUT:
   1866					;
   1867					; OUTPUT:
   1868					;	CC - TRANSFER REQUESTED
   1869					;	CS - NO TRANSFER REQUESTED
DXDRV	MACRO M1113  03-APR-86 19:04  PAGE 17-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1870					;
   1871					;-
   1872	003472	000241 			TRWAIT:	CLC			; DEFAULT TO TRANSFER REQUESTED
   1873	003474	132713 	000240 		10$:	BITB	#TR!DONE,@R3	; CONTROLLER DONE?
   1874	003500	100402 				BMI	20$		; YES, AND TRANSFER REQUEST IS UP
   1875	003502	001774 				BEQ	10$		; NO, WAIT
   1876	003504	000261 				SEC			; SET NO TRANSFER REQUEST
   1877	003506				20$:	RETURN			;
	003506	000207 				RTS	PC
   1878
DXDRV	MACRO M1113  03-APR-86 19:04  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	003510				WFEF1:	WTLO$	1,EF.SEP!EF.NIR!EF.TEF	 ;WAIT FOR SOMETHING TO DO
	003510	   053 	   003 			.BYTE	43.,3
	003512	000001 				.WORD	1
	003514	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 19:04  PAGE 18-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1935	003516				FEHD::	.STKM	0,0,0,0,0,0,0,FEDRV,174000,FESTK
	003564	000000 	000000 	000000 		.WORD	0,0,0,0
	003572	000000
	003612	174000 	004016'	003776'		.WORD	174000,FEDRV,FESTK
	003646	000005 				.WORD	5
	003650	000000G				.WORD	TTPEN
	003652	000000 				.WORD	0
	003654	000000 				.WORD	0
	003656	000000 				.WORD	0
	003660	000000 				.WORD	0
	003662	000000 				.WORD	0
	003664	000000 				.WORD	0
	003666	000000 				.WORD	0
	003670	000000 				.WORD	0
	003672	000000 				.WORD	0
	003674	000000 				.WORD	0
	003776	000000 				.WORD	0
	004000	000000 				.WORD	0
	004002	000000 				.WORD	0
	004004	000000 				.WORD	0
	004006	000000 				.WORD	0
	004010	000000 				.WORD	0
	004012	004016'				.WORD	FEDRV
	004014	174000 				.WORD	174000
FEDRV	MACRO M1113  03-APR-86 19:04  PAGE 19
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1937	004016				FEDRV:	DIR$	#WFEF1		;WAIT TO GET STARTED
	004016	012746 	003510'			MOV	#WFEF1,-(SP)
	004022	104375 				EMT	375
   1938	004024					.INH0			;LOCK OUT DTE INTERRUPTS
	004024	013746 	177776 			MOV	@#PS,-(SP)
	004030	112737 	000140 	177776 		MOVB	#140,@#PS
   1939	004036	013700 	000020G		1$:	MOV	FETSK+A.EF,R0	;;;PICK UP THE EVENT FLAGS
   1940	004042	001434 				BEQ	5$		;;;EXIT IF NOTHING
   1941	004044	005037 	000020G			CLR	FETSK+A.EF	;;;CLEAR EVENT FLAGS
   1942	004050	005737 	000002G			TST	.COMEF+2	;;; [4.1.1105] PRIMARY PROTOCOL IN USE?
   1943	004054	100002 				BPL	2$		;;; [4.1.1105] NO -- BETTER DUMP REQUEST'S
   1944	004056	005700 				TST	R0		;;;SECONDARY PROTOCOL CHANGE?
   1945	004060	100025 				BPL	5$		;;;NO -- CONTINUE
   1946					;
   1947					;	PRIMARY PROTOCOL HAS DIED - CLEAR OUT THE REQUEST QUEUE
   1948					;
   1949	004062	013701 	000000G		2$:	MOV	NODADR,R1	;;;GET CURRENT NODE
   1950	004066	005037 	000000G			CLR	NODADR		;;;DON'T BLOCK FE DRIVER
   1951	004072	005037 	000000G			CLR	STSWD		;;;CLEAR STATUS WORD BLOCK
   1952	004076	042737 	064000 	000000G		BIC	#FE.SER!FE.DET!FE.DTE,FETBL+0 ;;;NO ACTION ON FE0
   1953	004104	005701 				TST	R1		;;;WERE WE PROCESSING A NODE ?
   1954	004106	001005 				BNE	4$		;;;YES -- DO IT FIRST
   1955	004110	012700 	042506 		3$:	MOV	#"FE,R0		;;;PICK A NODE FROM THE QUEUE
   1956	004114					CALL	..DQRN		;;;DQ
	004114	004737 	000000G			JSR	PC,..DQRN
   1957	004120	103746 				BCS	1$
   1966	004122				4$:
   1968					;
   1969					;
   1970	004122	012703 	177761 		7$:	MOV	#IE.ABO,R3	;;;RETURN ABORTED
   1971	004126					CALL	..IODN		;;;FINISH I/O
	004126	004737 	000000G			JSR	PC,..IODN
   1972	004132	000766 				BR	3$		;;;AND TRY NEXT REQUEST
   1973					;
   1974					;	CHECK FOR EVENTS
   1975					;
   1976	004134				5$:	.ENB0			;;;ENABLE INTERRUPTS
	004134	004737 	000000G			JSR	PC,..ENB0
   1977	004140	032700 	000400 			BIT	#EF.TEF,R0	;CHECK TO SEE IF DONE
   1978	004144	001104 				BNE	IODN
   1979					;
   1980					;	MUST BE I/O REQUEST
   1981					;
   1982	004146	005737 	000000G			TST	NODADR		;BLOCKED?
   1983	004152	001321 				BNE	FEDRV		;YES -- DON'T DO ANYTHING ON QIO NOW
   1984	004154	012700 	042506 			MOV	#"FE,R0		;DQ FROM FE DRIVER
   1985	004160					CALL	..DQRN		;DQ
	004160	004737 	000000G			JSR	PC,..DQRN
   1986	004164	103714 				BCS	FEDRV		;NOTHING -- WAIT
   1987	004166	052737 	004000 	000000G		BIS	#FE.SER,FETBL+0	;FE0 BEING USED FOR -11 REQUEST
   1988	004174	010137 	000000G			MOV	R1,NODADR	;SAVE THE ADDRESS OF THE NODE
   1989	004200	010537 	000000G			MOV	R5,ADRSAV	;SAVE THE ADDRESS
   1990	004204	010337 	000000G			MOV	R3,BYTESA	;SAVE THE BYTE COUNT
   1991	004210	012702 	000000G			MOV	#TO10PK,R2	;SET UP PACKET ADDRESS
   1992	004214	010200 				MOV	R2,R0		;SAVE THE ADDRESS OF THE BUFFER
   1993	004216	012722 	000014 			MOV	#14,(R2)+	;STORE SIZE
   1994	004222	016122 	000000G			MOV	R.FC(R1),(R2)+	;SET UP THE FUNCTION CODE
FEDRV	MACRO M1113  03-APR-86 19:04  PAGE 19-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   1995	004226	005003 				CLR	R3		;FIND THE LUN
   1996	004230	156103 	000000G			BISB	R.LU(R1),R3	;SET UP THE LUT NUMBER
   1997	004234	001005 				BNE	10$		;EXEC REQUEST?
   1998	004236	012722 	041104 			MOV	#"DB,(R2)+	;DECLARE DB
   1999	004242	013722 	000000G			MOV	.RPUNT,(R2)+	;SET UNIT NUMBER
   2000	004246	000424 				BR	77$		;AND FINISH
   2001	004250	016104 	000000G		10$:	MOV	R.AT(R1),R4	;FIND THE ATL
   2002	004254	016404 	000000G			MOV	A.HA(R4),R4	;FIND THE HEADER ADDRESS
   2003	004260	006303 				ASL	R3		;MULTIPLY THE LUN BY 2
   2004	004262	006303 				ASL	R3
   2005	004264	060304 				ADD	R3,R4		;POINT TO CORRECT ENTRY
   2006	004266	016404 	177776G			MOV	H.LUT-2(R4),R4	;FIND THE LUT (FINALLY)
   2007	004272	016404 	000000G			MOV	U.RP(R4),R4	;DO REDIRECT
   2008	004276	012422 				MOV	(R4)+,(R2)+	;STORE THE DEVICE (ASCII CHARACTER)
   2009	004300	011422 				MOV	(R4),(R2)+	;STORE THE UNIT
   2010	004302	116104 	000000G			MOVB	R.DP(R1),R4	;FIND THE DPB SIZE
   2011	004306	162704 	000007 			SUB	#7,R4		;SUB PERMINENT ONES
   2012	004312	001002 				BNE	77$		;GOT A GOOD BYTE COUNT
   2013	004314	005037 	000000G			CLR	BYTESA		;NO CLEAR OUT BYTE COUNT
   2014	004320	016122 	000006G		77$:	MOV	R.PB+6(R1),(R2)+ ;STORE THE BLOCK NUMBER
   2015	004324	016122 	000010G			MOV	R.PB+10(R1),(R2)+
   2016	004330	013722 	000000G			MOV	BYTESA,(R2)+	;SET BYTE COUNT
   2017	004334	001403 				BEQ	78$		;IF MORE DATA MUST GO OUT
   2018	004336	052737 	040000 	000000G		BIS	#FE.DET,FETBL+0	;THEN SO INDICATE
   2019	004344				78$:	CALL	SNSTR		;START INDIRECT FUNCTION
	004344	004737 	004420'			JSR	PC,SNSTR
   2020	004350	005037 	000000G			CLR	STSWD
   2021	004354	000620 				BR	FEDRV		;AND WAIT
   2022
   2023	004356	013703 	000000G		IODN:	MOV	STSWD,R3	;SET I/O DONE
   2024	004362	013704 	000002G			MOV	STSWD+2,R4
   2025	004366	013701 	000000G			MOV	NODADR,R1	;SET NODE ADDRESS
   2026	004372	005037 	000000G			CLR	NODADR		;CLEAR INCASE OF ABORT
   2027	004376	005037 	000000G			CLR	STSWD		;CLEAR STATUS WORD
   2028	004402					CALL	..IODN		;SET I/O DONE
	004402	004737 	000000G			JSR	PC,..IODN
   2029	004406	042737 	064000 	000000G		BIC	#FE.SER!FE.DET!FE.DTE,FETBL+0 ;WE ARE FINISHED WITH -11 REQUEST
   2030	004414	000137 	004016'			JMP	FEDRV		;AND RETURN
   2031
   2032	004420	012701 	100000G		SNSTR:	MOV	#BC.STR+100000,R1 ;SET UP STRING DATA
   2033	004424	005002 				CLR	R2		;NO EVENT FLAG
   2034	004426	012703 	000000G			MOV	#D.FEPD,R3	;FE DEVICE
   2035	004432					CALLR	..STIN		;START INDIRECT
	004432	000137 	000000G			JMP	..STIN
FEDRV	MACRO M1113  03-APR-86 19:04  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	004436	032712 	040000 		.FEACK::BIT	#FE.DET,(R2)	;IS THERE DATA TO SEND ?
   2042	004442	001436 				BEQ	30$		;NO, IGNORE THE ACK.
   2043	004444	010046 				MOV	R0,-(SP)	;SAVE R0
   2044	004446	013700 	000000G			MOV	ADRSAV,R0	;PICK UP THE ADDRESS
   2045	004452	012701 	000100 			MOV	#64.,R1		;SET THE COUNT
   2046	004456	020137 	000000G			CMP	R1,BYTESA	;TOO BIG ??
   2047	004462	101402 				BLOS	10$		;NO - USE THIS COUNT
   2048	004464	013701 	000000G			MOV	BYTESA,R1	;YES - SEND WHAT'S LEFT
   2049	004470	060137 	000000G		10$:	ADD	R1,ADRSAV	;SET NEW ADDRESS
   2050	004474	160137 	000000G			SUB	R1,BYTESA	;AND BYTES LEFT
   2051	004500	001002 				BNE	20$		;IF NO MORE AFTER THIS
   2052	004502	042712 	040000 			BIC	#FE.DET,(R2)	;THEN SO INDICATE
   2053	004506				20$:	.INH6			;LOCK OUT INTERRUPTS
	004506	013746 	177776 			MOV	@#PS,-(SP)
	004512	112737 	000300 	177776 		MOVB	#300,@#PS
   2054	004520	014046 				MOV	-(R0),-(SP)	;;;SAVE MEMORY HERE
   2055	004522	010110 				MOV	R1,@R0		;;;STORE FIRST WORD TO10
   2056	004524					CALL	SNSTR		;;;START FUNCTION
	004524	004737 	004420'			JSR	PC,SNSTR
   2057	004530	012610 				MOV	(SP)+,@R0	;;;RESTORE FIRST WORD
   2058	004532					.ENB6			;;;ENABLE INTERRUPTS
	004532	012637 	177776 			MOV	(SP)+,@#PS
   2059	004536	012600 				MOV	(SP)+,R0	;RESTORE
   2060	004540				30$:	RETURN			;RETURN TO CALLER
	004540	000207 				RTS	PC
FEDRV	MACRO M1113  03-APR-86 19:04  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	004542	122760 	000000G	000007 	.FEST::	CMPB	#BC.STR,7(R0)	;FUNCTION STRING?
   2069	004550	001077 				BNE	IOABT		;NO -- ABORT I/O IN PROGRESS
   2070	004552	005005 				CLR	R5		;FIND THE BYTE SIZE
   2071	004554	156005 	000006 			BISB	6(R0),R5
   2072	004560	016004 	000004 			MOV	4(R0),R4	;SET UP THE NODE ADDRESS
   2073	004564	032712 	020000 			BIT	#FE.DTE,(R2)	;ARE WE EXPECTING DATA ?
   2074	004570	001040 				BNE	70$		;YES, INSERT IN BUFFER.
   2075	004572	012401 				MOV	(R4)+,R1	;CHECK TO SEE WHICH DIRECTION THIS FUNCTION IS
   2076	004574	100102 				BPL	FCN		;REQUEST TO DO A FUNCTION -- SPECIAL
   2077	004576	013703 	000000G			MOV	NODADR,R3	;A RETURN FUNCTION -
   2078	004602	066301 	000000G			ADD	R.FC(R3),R1	;IS IT THE LAST ONE WE SENT ?
   2079	004606	001100 				BNE	FCNBD		;NO -- ILLEGAL REQUEST -- QUIT
   2080	004610	122763 	000003 	000001G		CMPB	#IO.ATT/400,R.FC+1(R3) ;ACP FUNCTION CODE?
   2081	004616	001006 				BNE	40$		;NO -- LEAVE ADDRESSES ALONE
   2082	004620	016337 	000012G	000000G		MOV	R.PB+12(R3),BYTESA ;SET UP TO BYTE COUNT
   2083	004626	016337 	000004G	000000G		MOV	R.PB+4(R3),ADRSAV ;ALSO ADDRESS
   2084	004634	022424 			40$:	CMP	(R4)+,(R4)+	;MOVE OVER DEVICE/UNIT
   2085	004636	012437 	000000G			MOV	(R4)+,STSWD	;SAVE THE I/O STATUS
   2086	004642	012437 	000002G			MOV	(R4)+,STSWD+2	;BOTH HALVES
   2087	004646	052712 	020000 			BIS	#FE.DTE,(R2)	;INDICATE WE ARE EXPECTING DATA
   2088	004652	021437 	000000G			CMP	@R4,BYTESA	;BYTESIZE CORRECT?
   2089	004656	103002 				BHIS	50$		;YES -- CONTINUE
   2090	004660	011437 	000000G			MOV	@R4,BYTESA	;NO -- SET NEW ONE
   2091	004664	162705 	000014 		50$:	SUB	#14,R5		;SUBTRACT FIXED HEADER SIZE
   2092	004670	001410 				BEQ	60$		;AND QUIT IF NOTHING TO DO
   2093	004672	112477 	000000G		70$:	MOVB	(R4)+,@ADRSAV	;MOVE A BYTE
   2094	004676	005237 	000000G			INC	ADRSAV		;UPDATE BYTE POINTER
   2095	004702	005337 	000000G			DEC	BYTESA		;UPDATE BYTE COUNT
   2096	004706	001404 				BEQ	65$		;(IN CASE OF MISCOUNT)
   2097	004710	077510 				SOB	R5,70$		;AND DO UNTIL DONE
   2098	004712	005737 	000000G		60$:	TST	BYTESA		;ANYTHING TO DO?
   2099	004716	001005 				BNE	DONSTR		;YES -- DON'T SET I/O DONE FLAG
   2100	004720	042712 	020000 		65$:	BIC	#FE.DTE,(R2)	;NO MORE DATA EXPECTED
   2101	004724	052737 	000400 	000020G		BIS	#EF.TEF,FETSK+A.EF ;SET I/O DONE
   2102	004732				DONSTR:	CALL	..DECN		; RETURN NODE
	004732	004737 	000000G			JSR	PC,..DECN
   2103	004736	012703 	000000G			MOV	#D.FEPD,R3	;ACK THIS FUNCTION
   2104	004742	010205 				MOV	R2,R5
   2105	004744					CALLR	..SACK
	004744	000137 	000000G			JMP	..SACK
   2106
   2107	004750	013701 	000000G		IOABT:	MOV	NODADR,R1	;NODE IN PROGRESS?
   2111	004754	001766 				BEQ	DONSTR		;NO -- CONTINUE
   2113	004756	005037 	000000G			CLR	NODADR		;YES -- FIX IT WITH IE.ABO
   2114	004762	042737 	064000 	000000G		BIC	#FE.SER!FE.DET!FE.DTE,FETBL+0 ;FINISHED WITH -11 REQUEST
   2115	004770	012703 	177761 			MOV	#IE.ABO,R3
   2116	004774					CALL	..IODN		;QUIT IT
	004774	004737 	000000G			JSR	PC,..IODN
   2120	005000	000754 				BR	DONSTR		;AND DECLARE DONE
   2121					;
   2122					;	THIS IS A FUNCTION REQUEST FROM THE -10
FEDRV	MACRO M1113  03-APR-86 19:04  PAGE 21-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT

   2123					;
   2124	005002	022714 	042515 		FCN:	CMP	#"ME,(R4)	;IS IT MEMORY?
   2125	005006	001401 				BEQ	MEFCN		;YUP -- MUST BE OK
   2126	005010	000004 			FCNBD:	IOT			;NOPE -- CRASH
   2127
   2128	005012	052712 	002000 		MEFCN:	BIS	#FE.STR,(R2)	;WE ARE SERVICING -10 REQUEST
   2129	005016	012737 	000014 	000000G		MOV	#14,DNBLK	;INIT RETURN PACKET SIZE
   2130	005024	010137 	000000G			MOV	R1,DNFCN	;SET FUNCTION
   2131	005030	005437 	000000G			NEG	DNFCN		;AND NEGATE.
   2132	005034	012437 	000002G			MOV	(R4)+,DNFCN+2	;SAVE FUNCTION DEVICE
   2133	005040	012737 	000001 	000000G		MOV	#IS.SUC,DNSTS	;ASSUME A SUCCESSFUL ACCESS
   2134	005046	022424 				CMP	(R4)+,(R4)+	;MOVE OVER UNIT AND HIGH ORDER ADDRES
   2135	005050	012403 				MOV	(R4)+,R3	;PICK UP ADDRESS
   2136	005052	012405 				MOV	(R4)+,R5	;AND BYTE COUNT
   2137	005054	010537 	000002G			MOV	R5,DNSTS+2	;SAVE BYTE COUNT
   2138	005060					.INH			;LOCK OUT INTERRUPTS
	005060	013746 	177776 			MOV	PS,-(SP)
	005064	112737 	000340 	177776 		MOVB	#PR7,@#PS	;;
   2139	005072	013746 	000004 			MOV	@#4,-(SP)	;;;SAVE LOC 4
   2140	005076	012737 	005242'	000004 		MOV	#90$,@#4	;;;GO TO ILL MEM ROUTINE
   2141	005104	022701 	000400 			CMP	#IO.WLB,R1	;;;WRITE LOGICAL BLOCK?
   2142	005110	001003 				BNE	30$		;;;READ MEMORY REQUEST
   2143	005112	112423 			20$:	MOVB	(R4)+,(R3)+	;;;MOVE BYTES
   2144	005114	077502 				SOB	R5,20$		;;;UNTIL DONE
   2145	005116	000417 				BR	60$		;;;RETURN SUCCESS
   2146
   2147	005120	122760 	000014 	000006 	30$:	CMPB	#14,6(R0)	;;;ALL IN THIS PACKET?
   2148	005126	001010 				BNE	50$		;;;NO -- BAD FUNCTION
   2149	005130	012704 	000000G			MOV	#BLKTT,R4	;;;SET UP A PACKET TO ADD TO FUNCTION
   2150	005134	112324 			40$:	MOVB	(R3)+,(R4)+	;;;MOVE CORRESPONDING  BYTES
   2151	005136	077502 				SOB	R5,40$		;;;UNTIL DONE
   2152	005140	063737 	000002G	000000G		ADD	DNSTS+2,DNBLK	;;;INCLUDE RETURN BYTES IN PACKET
   2153	005146	000405 				BR	70$		;;;SET RETURN FUNCTION
   2154
   2155	005150	012737 	177777 	000000G	50$:	MOV	#IE.BAD,DNSTS	;;;RETURN BAD FUNCTION
   2156	005156	005037 	000002G		60$:	CLR	DNSTS+2		;;;NO BYTES TRANSFERRED
   2157	005162	012637 	000004 		70$:	MOV	(SP)+,@#4	;;;RESET LOC 4
   2158	005166					.ENB			;;;ENABLE INTERRUPTS
	005166	012637 	177776 			MOV	(SP)+,@#PS	;;
   2159	005172	013737 	000002G	000004G		MOV	DNSTS+2,DNSTS+4	;RETURN COUNT
   2160	005200	010203 				MOV	R2,R3		;COMPUTE FE NUMBER
   2161	005202	162703 	000000G			SUB	#FETBL,R3
   2162	005206	006203 				ASR	R3		;AND
   2163	005210	110337 	000001G			MOVB	R3,DNBLK+1	;SET IN RETURN PACKET
   2164	005214	010246 				MOV	R2,-(SP)	;SAVE FETBL POINTER
   2165	005216	010046 				MOV	R0,-(SP)	;AND STRING POINTER
   2166	005220	012700 	000000G			MOV	#DNBLK,R0	;SET DONE BLOCK ADDRESS
   2167	005224					CALL	SNSTR		;SEND STRING
	005224	004737 	004420'			JSR	PC,SNSTR
   2168	005230	012600 				MOV	(SP)+,R0	;RESTORE
   2169	005232	012602 				MOV	(SP)+,R2
   2170	005234	042712 	002000 			BIC	#FE.STR,(R2)	;FINISHED WITH -10 REQUEST
   2171	005240	000634 				BR	DONSTR		;AND QUIT
   2172
   2173	005242	022626 			90$:	CMP	(SP)+,(SP)+	;REMOVE TRAP STUFF
   2174	005244	012737 	177774 	000000G		MOV	#IE.VER,DNSTS	;RETURN RECOVERABLE ERROR
   2175	005252	000741 				BR	60$
FEDRV	MACRO M1113  03-APR-86 19:04  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 19:04  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	005254					$DEF
   2241	005254					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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  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 19:04  PAGE 27
COMMON VARIABLES

   2497						.SBTTL	COMMON VARIABLES
   2498					;
   2499					; LP DRIVER TASK HEAD
   2500					;
   2501					;
   2502	005254				LPHD::	.STKM	0,0,0,0,0,0,0,LPINI,174000,LPSTK
	005322	000000 	000000 	000000 		.WORD	0,0,0,0
	005330	000000
	005350	174000 	005644'	005534'		.WORD	174000,LPINI,LPSTK
	005404	000005 				.WORD	5
	005406	000000G				.WORD	TTPEN
	005410	000000 				.WORD	0
	005412	000000 				.WORD	0
	005414	000000 				.WORD	0
	005416	000000 				.WORD	0
	005420	000000 				.WORD	0
	005422	000000 				.WORD	0
	005424	000000 				.WORD	0
	005426	000000 				.WORD	0
	005430	000000 				.WORD	0
	005432	000000 				.WORD	0
	005534	000000 				.WORD	0
	005536	000000 				.WORD	0
	005540	000000 				.WORD	0
	005542	000000 				.WORD	0
	005544	000000 				.WORD	0
	005546	000000 				.WORD	0
	005550	005644'				.WORD	LPINI
	005552	174000 				.WORD	174000
   2503					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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 19:04  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 19:04  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	005554				LPMRKT:
   2604	005554					MRKT$	E.FLPC,10.*.CYLTM,10.*.CYLTM ;MARK-TIME REQUEST FOR 10 SECONDS
	005554	   027 	   005 			.BYTE	23.,5
	005556	000002 				.WORD	E.FLPC
	005560	001130 				.WORD	10.*.CYLTM
	005562	001130 				.WORD	10.*.CYLTM
	005564	000000 				.WORD
   2605	005566				MKSCDP:
   2606	005566					MRKT$	E.FLPW,.CYLTM,0		;WAIT FOR 1 SECOND
	005566	   027 	   005 			.BYTE	23.,5
	005570	000006 				.WORD	E.FLPW
	005572	000074 				.WORD	.CYLTM
	005574	000000 				.WORD	0
	005576	000000 				.WORD
   2607					;
   2608	005600				LPSSTV:
   2609	005600	005602'				.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	005602				LPTRP4:
   2614	005602	021627 	007172'			CMP	(SP),#LPDINT	;THIS FROM MARK-TIME?
   2615	005606	001404 				BEQ	10$		;YES-- OK
   2616	005610	021627 	010620'			CMP	(SP),#LPDCLR	;HOW ABOUT INIT?
   2617	005614	001401 				BEQ	10$		;YES-- OK
   2618	005616	000004 				IOT			;***** FATAL-- BAD TRAP AT 4
   2619					;
   2620	005620				10$:
   2621	005620	005062 	000000G			CLR	LPCSA(R2)	;NON-EX LP-- SAY SO
   2622	005624	005003 				CLR	R3		; BOTH WAYS
   2623	005626	052766 	000001 	000002 		BIS	#BIT0,2(SP)	;SET CARRY ON STACK
   2624	005634	000002 				RTI			;RETURN TO INTERRUPTED ROUTINE
   2625					;
   2626					; HERE ON POWER-RECOVERY AST
   2627					;
   2628	005636				LPWRUP:
   2629	005636					CALL	INITLP		;INIT ALL LP'S
	005636	004737 	010550'			JSR	PC,INITLP
   2630	005642	000002 				RTI			;RETURN FROM AST
   2631					;
   2632					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 30-1
LPINI	(INITIALIZE LP-20 TASK)

   2633					; LPINI -- INITIALIZE LP'S
   2634					;
   2635	005644				LPINI:
   2636	005644	013737 	000000G	000000G		MOV	.CRTSK,LPEVFG	;SAVE OUR TASK ADDRESS
   2637	005652	062737 	000020 	000000G		ADD	#A.EF,LPEVFG	;MAKE THAT ADDR OF OUR EVENT FLAGS
   2638	005660	052777 	000060 	000000G		BIS	#EF.LPW!EF.LPS,@LPEVFG ;SAY STATUS BUFFER AVAILABLE AND NOT WAITING
   2639	005666					DIR$	#LPMRKT		;ENTER MARK-TIME REQUEST FOR 10 SECONDS
	005666	012746 	005554'			MOV	#LPMRKT,-(SP)
	005672	104375 				EMT	375
   2640	005674					SVTK$S	#LPSSTV,#1	;ENABLE FOR TRAP-AT-4 RECOGNITION
	005674	012746 	000001 			MOV	#1,-(SP)
	005700	012746 	005600'			MOV	#LPSSTV,-(SP)
	005704	012746 				MOV	(PC)+,-(SP)
	005706	   071 	   003 			.BYTE	57.,3
	005710	104375 				EMT	375
   2641	005712					SPRA$S	#LPWRUP		;SETUP POWER-UP AST
	005712	012746 	005636'			MOV	#LPWRUP,-(SP)
	005716	012746 				MOV	(PC)+,-(SP)
	005720	   155 	   002 			.BYTE	109.,2
	005722	104375 				EMT	375
   2642	005724					CALL	INITLP		;INIT ALL THE LP'S
	005724	004737 	010550'			JSR	PC,INITLP
   2643					;	BR	LPLOOP		;FALL INTO NORMAL PROCESSING LOOP
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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	005730				LPLOOP:
   2657	005730					WTLO$S	1,#EF.LPC!EF.LPD!EF.NIR ;WAIT FOR CLOCK (10 SECONDS)
	005730	012746 	000000C			MOV	#EF.LPC!EF.LPD!EF.NIR,-(SP)
	005734	012746 	000001 			MOV	#1,-(SP)
	005740	012746 				MOV	(PC)+,-(SP)
	005742	   053 	   003 			.BYTE	43.,3
	005744	104375 				EMT	375
   2658									; OR I/O DONE FROM ISR
   2659									; OR QIO REQUEST TO DO.
   2660	005746					.INH			;A FLAG SET-- LOCK OUT LP INTERRUPTS
	005746	013746 	177776 			MOV	PS,-(SP)
	005752	112737 	000340 	177776 		MOVB	#PR7,@#PS	;;
   2661	005760	017737 	000000G	000000G		MOV	@LPEVFG,LPCEVF	;GET CURRENT EVENT FLAGS
   2662	005766	042777 	000000C	000000G		BIC	#EF.LPC!EF.LPD!EF.NIR,@LPEVFG ;CLEAR THE FLAGS WE WAITED FOR
   2663	005774					.ENB			;RETORE IRPS
	005774	012637 	177776 			MOV	(SP)+,@#PS	;;
   2664	006000	005737 	000000G			TST	.LPPFL		;POWER FAIL?
   2665	006004	001404 				BEQ	10$		;NO -- CONTINUE
   2666	006006					CALL	INITLP
	006006	004737 	010550'			JSR	PC,INITLP
   2667	006012	005037 	000000G			CLR	.LPPFL
   2668	006016				10$:
   2669					;
   2670					;	BR	LPIOD		;TRY FOR EF.IOD (I/O DONE) FIRST
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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	006016				LPIOD:
   2698	006016	032737 	000001 	000000G		BIT	#EF.LPD,LPCEVF	;I/O DONE?
   2699	006024	001504 				BEQ	99$		;NO-- TRY NEXT FLAG IN CHAIN
   2700	006026	012702 	000000G			MOV	#LPTBL,R2	;ADDRESS LPTBL (UNIT 0)
   2701	006032					PUSH	#L$$P20		;STACK COUNT OF LP'S TO LOOK AT
	006032	012746 	000002 			MOV	#L$$P20,-(SP)
   2702	006036				10$:
   2703	006036	005005 				CLR	R5		;AND INDICATE NO BUFFERS DONE
   2704	006040	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	006044				20$:
   2709	006044	016200 	000000G			MOV	LPTHD(R2),R0	;GET START OF LIST
   2710	006050	001411 				BEQ	80$		;DONE-- GO AWAY
   2711					;
   2712					; LOOK AT THIS THREAD BLOCK TO SEE IF DONE
   2713					;
   2714	006052				30$:
   2715	006052	005760 	000000G			TST	T.HCBC(R0)	;SEE IF DONE
   2716	006056	002471 				BLT	40$		;DONE-- PROCESS
   2717	006060	005762 	000000G			TST	LPITH(R2)	;IS I/O IN PROGRESS ON THIS BLOCK?
   2718	006064	001003 				BNE	80$		;YES-- WE ARE DONE WITH WHAT IS DONE
   2719					;
   2720					; LP STOPPED ON THIS ACTIVE THREAD BLOCK
   2721					;
   2722	006066	032712 	001000 			BIT	#LP.LIP,(R2)	;LOAD IN PROGRESS?
   2723	006072	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	006074				80$:
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 32-1
LPIOD	(LP TASK I/O DONE)

   2728	006074	032712 	040000 			BIT	#LP.SST,(R2)	;TIME TO SEND STATUS?
   2729	006100	001402 				BEQ	81$		;NO-- HOW BOUT ACK?
   2730	006102					CALL	SSTSLP		;YES-- SEND STATUS TO -10
	006102	004737 	007360'			JSR	PC,SSTSLP
   2731	006106				81$:
   2732	006106	005700 				TST	R0		;ANYTHING LEFT TO DO?
   2733	006110	001411 				BEQ	84$		;NO-- SEND ACK
   2734	006112	032712 	004000 			BIT	#LP.WAT,(R2)	;ARE WE WAITING FOR RESPONSE?
   2735	006116	001026 				BNE	86$		;YES-- DON'T START OUPUT
   2736	006120	005762 	000000G			TST	LPITH(R2)	;NO-- IS LP GOING ALREADY?
   2737	006124	001023 				BNE	86$		;YES-- LEAVE IT GO
   2738	006126					CALL	TESTLP		;NO-- SEE IF LP CAN BE STARTED
	006126	004737 	010360'			JSR	PC,TESTLP
   2739	006132	000420 				BR	86$		;SEE IF ACK NEEDED
   2740					;
   2741					; QUEUE IS EMPTY-- RESET ALL FLAGS
   2742					;
   2743	006134				84$:
   2744	006134					.INH			;;;MAKE SURE DTE DOESN'T GIVE US SOMETHING
	006134	013746 	177776 			MOV	PS,-(SP)
	006140	112737 	000340 	177776 		MOVB	#PR7,@#PS	;;
   2745	006146	016200 	000000G			MOV	LPTHD(R2),R0	;;;GET THREAD POINTER
   2746	006152	001006 				BNE	85$		;;;OOPS-- LET'S GO AWAY, WE GOT SOMETHING
   2747	006154	032777 	000001 	000000G		BIT	#EF.LPD,@LPEVFG	;;;WILL WE BE BACK AGAIN?
   2748	006162	001002 				BNE	85$		;;;YES-- CATCH FLAGS NEXT TIME
   2749	006164	042712 	115400 			BIC	#LP.F10!LP.WAT!LP.LIP!LP.MCH!LP.HNG,(R2) ;;;SURELY OFF NOW
   2750	006170				85$:
   2751	006170					.ENB			;RESTORE INTERRUPTS
	006170	012637 	177776 			MOV	(SP)+,@#PS	;;
   2752	006174				86$:
   2753	006174	005705 				TST	R5		;DID WE REMOVE A BUFFER?
   2754	006176	001412 				BEQ	90$		;NO-- DON'T SEND ACK
   2755	006200	005700 				TST	R0		;YES-- ANY LEFT?
   2756	006202	001402 				BEQ	87$		;NONE-- SEND ACK
   2757	006204	005710 				TST	@R0		;IS THIS LAST BUFFER?
   2758	006206	001006 				BNE	90$		;NO-- SEND NOTHING
   2759	006210				87$:
   2760	006210	012700 	000000G			MOV	#LPTBL,R0	;ADDRESS BASE ADDR OF TABLE FOR ..SACK
   2761	006214	012703 	000000G			MOV	#D.CLPT,R3	;SAY LPT DEVICE CODE
   2762	006220					CALL	..SACK		;SEND THE ACK
	006220	004737 	000000G			JSR	PC,..SACK
   2763					;
   2764					; DONE WITH LP-- GET ANOTHER
   2765					;
   2766	006224				90$:
   2767	006224	062702 	000000G			ADD	#LPSIZE,R2	;BUMP TO NEXT LP IN TABLE
   2768	006230	005316 				DEC	(SP)		;DECREMENT COUNT
   2769	006232	003301 				BGT	10$		;BACK FOR MORE
   2770	006234	005726 				TST	(SP)+		;CLEAN STACK
   2771	006236				99$:
   2772	006236	000137 	006676'			JMP	LPNIR		;DONE-- TRY NEXT EVENT-FLAG
   2773					;
   2774					; THREAD BLOCK DONE-- REMOVE FROM LIST & DEALLOCATE
   2775					;
   2776	006242				40$:
   2777	006242	005703 				TST	R3		;LP EXIST???
   2778	006244	001564 				BEQ	49$		;NO-- GIVE UP
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 32-2
LPIOD	(LP TASK I/O DONE)

   2779	006246	032712 	001000 			BIT	#LP.LIP,(R2)	;LOAD IN PROGRESS (I.E. NOW COMPLETE)
   2780	006252	001424 				BEQ	41$		;NO-- GO ON
   2781					;
   2782	006254	042712 	001000 			BIC	#LP.LIP,(R2)	;YES-- NO LONGER SO
   2783	006260	042713 	000014 			BIC	#MODE00!MODE01,(R3) ;CLEAR LOAD MODE BITS
   2784	006264					PUSH	<R0,R3>		;SAVE EPA
	006264	010046 				MOV	R0,-(SP)
	006266	010346 				MOV	R3,-(SP)
   2785	006270	016200 	000000G			MOV	LPRMA(R2),R0	;GET RAM BUFFER ADDR
   2786	006274	016201 	000000G			MOV	LPRMZ(R2),R1	; AND DATA SIZE
   2787	006300	012703 	000000G			MOV	#.BGBUF,R3	;WE GOT IT FROM THE BIG BUFFER
   2788	006304					CALL	..DEC2		;RETURN THE BUFFER
	006304	004737 	000000G			JSR	PC,..DEC2
   2789	006310					POP	<R3,R0>		;RESTORE EPA
	006310	012603 				MOV	(SP)+,R3
	006312	012600 				MOV	(SP)+,R0
   2790	006314	005062 	000000G			CLR	LPRMA(R2)	;NO LONGER THERE
   2791	006320	005062 	000000G			CLR	LPRMC(R2)	; . .
   2792	006324				41$:
   2793	006324	016004 	000000G			MOV	T.HCBC(R0),R4	;GET COMPLETION STATUS
   2794	006330	032704 	040000 			BIT	#TB.ABO,R4	;ABORTED?
   2795	006334	001130 				BNE	49$		;YES-- LEAVE NOW
   2796	006336	032704 	036000 			BIT	#TB.SFN,R4	;SPECIAL FUNCTION?
   2797	006342	001525 				BEQ	49$		;NO-- GO ON
   2798					;
   2799	006344	032704 	020000 			BIT	#TB.EOF,R4	;EOF?
   2800	006350	001430 				BEQ	42$		;NO-- JUST GO ON
   2801	006352	016260 	000000G	000000G		MOV	LPRMA(R2),T.HCAD(R0) ;RAM/VFU DATA PRESENT?
   2802	006360	001003 				BNE	411$		;YES-- DO RAM/VFU LOAD
   2803	006362	052712 	040200 			BIS	#LP.EOF!LP.SST,(R2) ;NO-- NOTE THAT EOF HAS OCCURED
   2804	006366	000513 				BR	49$		;THAT'S IT FOR EOF IF NO RAM/VFU DATA
   2805	006370				411$:
   2806	006370	016260 	000000G	000000G		MOV	LPRMC(R2),T.HCBC(R0) ;SET BYTE COUNT= LAST ADDRESS
   2807	006376	166060 	000000G	000000G		SUB	T.HCAD(R0),T.HCBC(R0) ;MAKE IT A BYTE COUNT
   2808	006404	052712 	001000 			BIS	#LP.LIP,(R2)	;NOTE LOAD NOW IN PRGRESS
   2809	006410	052713 	000010 			BIS	#VFULOD*MODE00,(R3) ;ASSUME VFU LOAD
   2810	006414	026227 	000000G	001000 		CMP	LPRMZ(R2),#1000	;TRNASLATION RAM DATA?
   2811	006422	001224 				BNE	80$		;NO-- MUST BE VFU DATA
   2812	006424	052713 	000014 			BIS	#RAMLOD*MODE00,(R3) ;YES-- SET RAM LOAD MODE
   2813	006430	000621 				BR	80$		;START LP GOING ON THIS BLOCK
   2814	006432				42$:
   2815	006432	032704 	010000 			BIT	#TB.LPC,R4	;LOAD PAGE COUNTER FUNCTION?
   2816	006436	001413 				BEQ	43$		;NO-- GO ON
   2817	006440	042712 	020000 			BIC	#LP.PZI,(R2)	;ASSUME NO INTERRUPT ENABLE
   2818	006444	016001 	000000G			MOV	T.HCAD(R0),R1	;GET ADDRESS OF FUNCTION DATA
   2819	006450	016163 	000002 	000010 		MOV	2(R1),LPPCTR(R3) ;SET PAGE COUNTER
   2820	006456	002057 				BGE	49$		;BIT15=0-- NO INTERRUPT
   2821	006460	052712 	020000 			BIS	#LP.PZI,(R2)	;BIT15=1-- INTERRUPT ENABLE
   2822	006464	000454 				BR	49$		;ALL DONE
   2823	006466				43$:
   2824	006466					PUSH	<R3,R0>		;SAVE THIS THREAD BLOCK ADDRESS
	006466	010346 				MOV	R3,-(SP)
	006470	010046 				MOV	R0,-(SP)
   2825	006472	016201 	000000G			MOV	LPRMC(R2),R1	;GET CURRENT RAM DATA ADDRESS
   2826	006476	001026 				BNE	46$		;GOT IT-- PUT THIS DATA IN THAT BUFFER
   2827	006500	012700 	000000G		431$:	MOV	#.BGBUF,R0	;[RCO 810408] POINT TO BIG BUFFER FOR DATA BLOCK
   2828	006504	012701 	001000 			MOV	#1000,R1	;ASSUME TRANSLATION RAM DATA
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 32-3
LPIOD	(LP TASK I/O DONE)

   2829	006510	032704 	004000 			BIT	#TB.RMD,R4	;RAM DATA?
   2830	006514	001002 				BNE	44$		;YES-- GOT IT
   2831	006516	012701 	000444 			MOV	#<^D<145*2>+2+3>&<-4>,R1 ; +++001 NO-- VFU DATA-- GET MAX LENGTH
   2832	006522				44$:
   2833	006522					CALL	..ALC2		;GET A BUFFER
	006522	004737 	000000G			JSR	PC,..ALC2
   2834	006526	103004 				BCC	45$		;GOT IT-- GO ON
   2835	006530					WSIG$S			;NO GOT-- WAIT AN INSTANT
	006530	012746 				MOV	(PC)+,-(SP)
	006532	   061 	   001 			.BYTE	49.,1
	006534	104375 				EMT	375
   2836	006536	000760 				BR	431$		;[RCO 810804] TRY FOR BUFFER AGAIN
   2837	006540				45$:
   2838	006540	010162 	000000G			MOV	R1,LPRMZ(R2)	;STORE RAM DATA SIZE
   2839	006544	010001 				MOV	R0,R1		;COPY THAT BUFFER ADDRESS
   2840	006546	010162 	000000G			MOV	R1,LPRMA(R2)	;STORE RAM DATA ADDRESS
   2841	006552	011600 				MOV	(SP),R0		;RESTORE THREAD BLOCK ADDRESS
   2842	006554				46$:
   2843	006554	016203 	000000G			MOV	LPRMA(R2),R3	;COPY ADDRESS WHERE DATA GOES
   2844	006560	066203 	000000G			ADD	LPRMZ(R2),R3	;COMPUTE END OF BUFFER
   2845	006564	016000 	000000G			MOV	T.HCAD(R0),R0	;GET THE RAM DATA ADDRESS
   2846	006570	042704 	177400 			BIC	#HIBYTE,R4	;CLEAR TRASH IN BYTE COUNT
   2847	006574	001404 				BEQ	48$		;ALL DONE IF ZERO BYTE COUNT
   2848	006576				47$:
   2849	006576	020103 				CMP	R1,R3		;GOING BEYOND END OF BUFFER?
   2850	006600	103002 				BHIS	48$		;YES-- THAT'S ALL THE DATA WE CAN TAKE
   2851	006602	112021 				MOVB	(R0)+,(R1)+	;STORE A BYTE AWAY
   2852	006604	077404 				SOB	R4,47$		;LOOP FOR ALL BYTES OF DATA
   2853	006606				48$:
   2854	006606					POP	<R0,R3>		;RESTORE THE THREAD BLOCK POIINTER
	006606	012600 				MOV	(SP)+,R0
	006610	012603 				MOV	(SP)+,R3
   2855	006612	010162 	000000G			MOV	R1,LPRMC(R2)	;STORE CURRENT BYTE ADDRESS
   2856	006616				49$:
   2857	006616	011062 	000000G			MOV	@R0,LPTHD(R2)	;REMOVE THIS BUFFER
   2858	006622	016001 	000000G			MOV	T.HBCT(R0),R1	;GET SIZE OF THIS THREAD BLOCK
   2859	006626	001013 				BNE	60$		;NOT QIO-- JUST DEALLOCATE
   2860					;
   2861					; QUEUE I/O REQUEST DONE-- CALL ..IODN
   2862					;
   2863	006630					PUSH	R3		;SAVE EPA
	006630	010346 				MOV	R3,-(SP)
   2864	006632	110403 				MOVB	R4,R3		;GET QUEUE I/O STATUS
   2865	006634	016004 	177776 			MOV	T.HIBC(R0),R4	;GET INITAIL BYTE COUNT AS TRANSFER COUNT
   2866	006640	010001 				MOV	R0,R1		;COPY THREAD BLOCK ADDRESS
   2867	006642	162701 	000004G			SUB	#R.PB+PBTHRD,R1	;GET ADDRESS OF REAL QUEUE I/O NODE
   2868	006646					CALL	..IODN		;SAY I/O DONE
	006646	004737 	000000G			JSR	PC,..IODN
   2869	006652					POP	R3		;RESTORE EPA
	006652	012603 				MOV	(SP)+,R3
   2870	006654	000406 				BR	61$		;ALL DONE
   2871					;
   2872					; ALL DONE WITH THREAD BLOCK-- DEALLOCATE IT
   2873					;
   2874	006656				60$:
   2875	006656					CALL	..DECB		;DEALLOCATE THE BUFFER
	006656	004737 	000000G			JSR	PC,..DECB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 32-4
LPIOD	(LP TASK I/O DONE)

   2876	006662	032712 	000400 			BIT	#LP.F10,(R2)	;DOES -10 HAVE A REQUEST IN?
   2877	006666	001401 				BEQ	61$		;NO-- DON'T FLAG TO ACK
   2878	006670	010205 				MOV	R2,R5		;NOTE THAT WE DID SOMETHING
   2879	006672				61$:
   2880	006672	000137 	006044'			JMP	20$		;GET NEXT THREAD BLOCK FOR THIS LP
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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	006676				LPNIR:
   2902	006676	032737 	000000G	000000G		BIT	#EF.NIR,LPCEVF	;A QUEUE I/O REQUEST FOR US?
   2903	006704	001514 				BEQ	99$		;NO-- TRY NEXT IN CHAIN
   2904	006706	012700 	050114 			MOV	#"LP,R0		;SAY WE ARE A LP
   2905	006712					CALL	..DQRN		;GET A REQUEST
	006712	004737 	000000G			JSR	PC,..DQRN
   2906	006716	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	006720	006302 				ASL	R2		;MAKE UNIT IN WORDS
   2928	006722	016202 	000000G			MOV	LPUTBL(R2),R2	;GET ADDR OF LPTBL ENTRY FOR THIS LP
   2929	006726	116100 	000001G			MOVB	R.FC+1(R1),R0	;GET FUNCTION CODE FROM REQUEST NODE
   2930	006732	001430 				BEQ	20$		;EXPRESS FUNCTION-- LOOK AT IT
   2931	006734	122700 	000001 			CMPB	#IO.WLB/400,R0	;WRITE LOGICAL?
   2932	006740	001441 				BEQ	40$		;YES-- PRINT
   2933	006742	122700 	000022 			CMPB	#IO.WVB/400,R0	;WRITE VIRTUAL?
   2934	006746	001436 				BEQ	40$		;YES-- PRINT ALSO
   2935	006750	122700 	000002 			CMPB	#IO.RLB/400,R0	;READ LOGICAL????
   2936	006754	001414 				BEQ	15$		;YES-- ILLEGAL
   2937	006756	122700 	000021 			CMPB	#IO.RVB/400,R0	;READ VIRTUAL????
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 33-1
LPNIR	(LP TASK QUEUE I/O REQUEST)

   2938	006762	001411 				BEQ	15$		;YES-- ILLEGAL
   2939	006764	122700 	000020 			CMPB	#IO.DAC/400,R0	;CLOSE OUT FILE?
   2940	006770	001017 				BNE	30$		;NO-- ASSUME OK, GIVE SUCCESS
   2941					;
   2942					; IO.DAC -- CLOSE OUT FILE, SEND <FF>
   2943					;
   2944	006772	012705 	007124'			MOV	#VFCFF,R5	;SET ADDRESS TO POINT TO FORM-FEED
   2945	006776	012703 	000001 			MOV	#1,R3		;BYTE COUNT= 1
   2946	007002	005004 				CLR	R4		;NO EMA BITS
   2947	007004	000417 				BR	40$		;SEND LIKE QUEUE I/O
   2948					;
   2949					; ILLEGAL FUNCTION
   2950					;
   2951	007006				15$:
   2952	007006	012703 	177776 			MOV	#IE.IFC,R3	;SAY ILLEGAL
   2953	007012	000410 				BR	31$		;SO SAY IT
   2954					;
   2955					; IO.KIL-- FLUSH OUTPUT
   2956					;
   2957	007014				20$:
   2958	007014	022761 	000012 	000000G		CMP	#IO.KIL,R.FC(R1) ;THIS I/O KILL?
   2959	007022	001002 				BNE	30$		;NO-- IGNORE
   2960	007024					CALL	..SPLP		;FLUSH OUTPUT
	007024	004737 	011414'			JSR	PC,..SPLP
   2961					;
   2962					; IO.ATT, IO.DET-- IGNORE
   2963					;
   2964	007030				30$:
   2965	007030	012703 	000001 			MOV	#IS.SUC,R3	;SAY 'SUCCESS' TO ..IODN
   2966	007034				31$:
   2967	007034	005004 				CLR	R4		;NO BYTES TRANSFERRED
   2968	007036					CALL	..IODN		;RETURN PACKET TO REQUESTOR
	007036	004737 	000000G			JSR	PC,..IODN
   2969	007042	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	007044				40$:
   2976	007044	010100 				MOV	R1,R0		;COPY NODE ADDRESS
   2977	007046	062700 	000004G			ADD	#R.PB+PBTHRD,R0	;POINT TO THREAD BLOCK AREA OF R.PB
   2981	007052	116101 	000004G			MOVB	R.PB+4(R1),R1	;GET VERTICAL FORMAT CHARACTER
   2982	007056	005060 	000000G			CLR	T.HBCT(R0)	;NOTE THAT THIS IS A QIO REQUEST
   2983	007062	010560 	000000G			MOV	R5,T.HCAD(R0)	;SAVE PHYSICAL ADDR OF DATA
   2984	007066	010360 	000000G			MOV	R3,T.HCBC(R0)	; AND BYTE COUNT OF DATA
   2985	007072	110460 	177774 			MOVB	R4,T.HEMA(R0)	; AND EXTENDED MEMORY ADDR BITS
   2986					;
   2987	007076	012705 	007122'			MOV	#VFCTBL,R5	;YES-- POINT TO TABLE OF FORMAT CONTROL CHARACTERS
   2988	007102				55$:
   2989	007102	112560 	177775 			MOVB	(R5)+,T.HVFC(R0) ;GET THE CHARCTER TO CONTROL
   2990	007106	001402 				BEQ	60$		;END OF TABLE-- GIVE UP WITH NOTHING
   2991	007110	122501 				CMPB	(R5)+,R1	;MATCH THE VFC CHARACTER?
   2992	007112	001373 				BNE	55$		;NO-- LOOP UNTIL WE FIND ONE
   2993	007114				60$:
   2994	007114					CALL	..PTLP		;START LP ON THIS BUFFER, OR QUEUE UP
	007114	004737 	011646'			JSR	PC,..PTLP
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 33-2
LPNIR	(LP TASK QUEUE I/O REQUEST)

   2995	007120	000666 				BR	LPNIR		;LOOK FOR ANOTHER REQUEST
   2996					;
   2997					; VERTICAL FORMAT CONTROL CHARACTER TABLE FOR QUEUE I/O REQUESTS
   2998					;
   2999	007122				VFCTBL:
   3000	007122	   012 	   040 			.BYTE	12,' 		;<SPACE>	NEXT LINE
   3001	007124	   014 	   061 		VFCFF:	.BYTE	14,'1		;"1"		NEXT PAGE
   3002	007126	   015 	   053 			.BYTE	15,'+		;"+"		OVERPRINT
   3003	007130	   021 	   060 			.BYTE	21,'0		;"0"		DOUBLE SPACE
   3004	007132	   012 	   044 			.BYTE	12,'$		;"$"		PROMPTING OUTPUT
   3005	007134	   000 				.BYTE	0		;END OF TABLE
   3006						.EVEN
   3007					;
   3008					;
   3009	007136				99$:
   3010					;	BR	LPMKT		;NEXT IS MARK-TIME REQUESTS
   3011						.DSABLE LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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	007136				LPMKT:
   3028	007136	032737 	000002 	000000G		BIT	#EF.LPC,LPCEVF	;IS MARK-TIME EVENT FLAG SET?
   3029	007144	001503 				BEQ	99$		;NO-- CHECK NEXT FLAG
   3030	007146	012705 	000002 			MOV	#L$$P20,R5	;SET UP # LP'S TO CHECK
   3031	007152	012702 	000000G			MOV	#LPTBL,R2	;ADDRESS DATA BLOCK FOR UNIT 0
   3032	007156				10$:
   3033	007156	016203 	000000G			MOV	LPCSA(R2),R3	;GET EXTERNAL PAGE ADDR
   3034	007162	001407 				BEQ	12$		;NON-EX LP-- SKIP THIS
   3035	007164	000241 				CLC			;CLEAR CARRY, IN CASE OF TRAP
   3036	007166	032713 	000100 			BIT	#INTENB,(R3)	;IS INTERRUPT-ENABLE STILL SET?
   3037	007172				LPDINT:
   3038	007172	103403 				BCS	12$		;TIME-OUT-- JUST SEND STATUS
   3039	007174	001002 				BNE	12$		;YES-- DON'T SET IT
   3040	007176	052713 	000100 			BIS	#INTENB,(R3)	;MAKE SURE WE STILL HAVE INTERRUPT ENABLE
   3041	007202				12$:
   3042	007202	032712 	004000 			BIT	#LP.WAT,(R2)	;WAITING?
   3043	007206	001047 				BNE	30$		;YES-- DON7T TRY TO CONTINUE
   3044	007210	005762 	000000G			TST	LPTHD(R2)	;ANY ACTIVE REQUESTS?
   3045	007214	001453 				BEQ	90$		;NONE-- LP IS IDLE
   3046	007216	032712 	100000 			BIT	#LP.HNG,(R2)	;NO I/O IN 10 SEC?
   3047	007222	001446 				BEQ	80$		;NO-- I/O CLEARED THIS BIT-- OK
   3048	007224	005762 	000000G			TST	LPITH(R2)	;IS I/O SUPPOSED TO BE IN PROGRSS?
   3049	007230	001436 				BEQ	30$		;NO-- SEE IF WE JUST CAME ON-LINE
   3050	007232	005703 				TST	R3		;DEVICE EXIST?
   3051	007234	001434 				BEQ	30$		;NON-EX LP-- FLUSH OUTPUT
   3052	007236	005237 	000000G			INC	LPHUNG		;COUNT # TIMES WE HAD TO START LP G9OING
   3053	007242	005362 	000000G			DEC	LPRTY(R2)	;ONE LESS TIME TO TRY
   3054	007246	002427 				BLT	30$		;NONE LEFT-- GIVE UP
   3055	007250					.INH4			;;;LOCK OUT LP INTERRUPTS
	007250	013746 	177776 			MOV	@#PS,-(SP)
	007254	112737 	000200 	177776 		MOVB	#PR4,@#PS
   3056	007262	105062 	000000G			CLRB	LPCSM+0(R2)	;;;CLEAR LOW BYTE SO NO CARRY
   3057	007266	066362 	000016 	000000G		ADD	LPCKSM-1(R3),LPCSM(R2) ;;;ACCUMULATE CHECKSUM (CLEARED BY GO)
   3058	007274	005763 	000006 			TST	LPBCTR(R3)	;;;DONE (BYTE COUNT=0)?
   3059	007300	001403 				BEQ	20$		;;;YES-- DO NEXT BUFFER
   3060	007302	052713 	000103 			BIS	#INTENB+PARENB+GO,(R3) ;;;NO-- JUST SET INT ENB AND GO
   3061	007306	000404 				BR	29$		;;;DO ANOTHER LP
   3062					;
   3063	007310				20$:
   3064	007310	016200 	000000G			MOV	LPITH(R2),R0	;;;GET CURRENT BUFFER ADDRESS
   3065	007314					CALL	..DOL1		;;;DONE-- DO NEXT BUFFER
	007314	004737 	011774'			JSR	PC,..DOL1
   3066	007320				29$:
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 34-1
LPMKT	(LP TASK MARK-TIME REQUEST)

   3067	007320					.ENB4			;ALLOW LP INTERRUPTS
	007320	012637 	177776 			MOV	(SP)+,@#PS
   3068	007324	000405 				BR	80$		;DONE WITH LP
   3069					;
   3070	007326				30$:
   3071	007326	052712 	040000 			BIS	#LP.SST,(R2)	;TIME TO SEND STATUS!!
   3072	007332	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;YES-- START IT UP AGAIN
   3073	007340				80$:
   3074	007340	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	007344				90$:
   3078	007344	062702 	000000G			ADD	#LPSIZE,R2	;BUMP TO NEXT LP IN LPTBL
   3079	007350	005305 				DEC	R5		;TRY ALL
   3080	007352	003301 				BGT	10$		; LP'S
   3081	007354				99$:
   3082	007354	000137 	005730'			JMP	LPLOOP		;GO BACK TO WAITING
   3083						.DSABLE	LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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	007360				SSTSLP:
   3136	007360					SAVE	<R0,R1,R3,R4>	;SAVE USED CARS
	007360	010046 				MOV	R0,-(SP)
	007362	010146 				MOV	R1,-(SP)
	007364	010346 				MOV	R3,-(SP)
	007366	010446 				MOV	R4,-(SP)
   3137	007370	042712 	040000 			BIC	#LP.SST,(R2)	;CLEAR 'SEND STATUS' FLAG
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 35-1
SSTSLP	(SEND LP-20 STATUS TO -10)

   3138	007374	032777 	000020 	000000G	4$:	BIT	#EF.LPS,@LPEVFG	;IS OUR BUFFER AVAILABLE?
   3139	007402	001006 				BNE	5$		;YES-- DON'T WAIT
   3140	007404					WSIG$S			;NO-- WAIT FOR IT
	007404	012746 				MOV	(PC)+,-(SP)
	007406	   061 	   001 			.BYTE	49.,1
	007410	104375 				EMT	375
   3141	007412	005737 	000002G			TST	.COMEF+2	; [4.1.1105] IS PRIMARY PROTOCOL RUNNING ?
   3142	007416	100766 				BMI	4$		; [4.1.1105] YES-- STILL BUSY...
   3143	007420				5$:
   3144	007420	012700 	000004G			MOV	#LPSTBK+4,R0	;GET ADDRES OF BYTE COUNT WORD
   3145	007424	005010 				CLR	(R0)		;CLEAR IT (ASSUME NON-EX DEV)
   3146	007426	005040 				CLR	-(R0)		; AND SECOND WORD OF STATUS
   3147	007430	005040 				CLR	-(R0)		;AND FIRST WORD, WITH R0 POINTING TO IT
   3148	007432	005001 				CLR	R1		;CLEAR ERROR MESSAGE POINTER, TOO
   3149	007434	005703 				TST	R3		;GOT A EPA?
   3150	007436	001005 				BNE	10$		;GOT IT-- CHECK OUT LP STATUS
   3151	007440	052710 	000007 			BIS	#DV.NXD!DV.OIR!DV.OFL,(R0) ;NON-EX LP-- SAY SO
   3152	007444	012701 	010111'			MOV	#ERMNXD,R1	;PRINT ERROR ON CONSOLE, TOO
   3153	007450	000537 				BR	50$		;GO SEND THE ERROR
   3154					;
   3155	007452				10$:
   3156	007452	032712 	000200 			BIT	#LP.EOF,(R2)	;THIS AN EOF ENCOUNTERED?
   3157	007456	001402 				BEQ	11$		;NO-- GO ON
   3158	007460	052710 	000040 			BIS	#DV.EOF,(R0)	;YES-- SAY SO
   3159	007464				11$:
   3160	007464	032713 	004000 			BIT	#ONLINE,(R3)	;LP OFF-LINE?
   3161	007470	001004 				BNE	12$		;NO-- GO ON
   3162	007472	052710 	000006 			BIS	#DV.OFL!DV.OIR,(R0) ;YES-- SAY OFF-LINE
   3163	007476	012701 	010131'			MOV	#ERMOFL,R1	; AND TO CONSOLE
   3164	007502				12$:
   3165	007502	032713 	010000 			BIT	#VFURDY,(R3)	;VFU NOT READY?
   3166	007506	001007 				BNE	13$		;NO-- OK
   3167	007510	052760 	000004 	000002 		BIS	#DD.VFE,2(R0)	;YES-- SET SO IN DD WORD
   3168	007516	012701 	010144'			MOV	#ERMVFE,R1	;TELL CONSOLE
   3169	007522	052712 	002000 			BIS	#LP.CLR,(R2)	;NOTE RAM NEEDS TO BE RESET
   3170	007526				13$:
   3171	007526	032763 	000076 	000002 		BIT	#LPTPAR+MEMPAR+RAMPAR+SYNTIM+DEMTIM,LPCSRB(R3) ;FATAL ERROR?
   3172	007534	001404 				BEQ	14$		;NO-- ALL OK
   3173	007536	052710 	000100 			BIS	#DV.LOG,(R0)	;YES-- SAY BAD ERROR, AND ERROR-LOG IT
   3174	007542	012701 	010163'			MOV	#ERMHER,R1	;SAY SPLAT TO CONSOLE
   3175	007546				14$:
   3176	007546	016204 	000000G			MOV	LPTHD(R2),R4	;IS I/O LEFT TO DO?
   3177	007552	001002 				BNE	141$		;YES-- SAY SO
   3178	007554	005001 				CLR	R1		;NO-- DON'T SEND OFF-LINE/VFE
   3179	007556	000436 				BR	15$		;GO ON
   3180					;
   3181	007560				141$:
   3182	007560	052710 	000020 			BIS	#DV.IOP,(R0)	;SAY I/O IN PROGRESS
   3183	007564	005764 	000000G			TST	T.HBCT(R4)	;IS THIS A QUEUE I/O REQUEST?
   3184	007570	001002 				BNE	142$		;NO-- GO ON
   3185	007572	052710 	000400 			BIS	#DV.F11,(R0)	;YES-- SAY FROM -11
   3186	007576				142$:
   3187	007576	005762 	000000G			TST	LPRTY(R2)	;IS RETRY COUNT DOWN YET?
   3188	007602	002024 				BGE	15$		;NO-- GO ON
   3189	007604	052710 	000300 			BIS	#DV.URE!DV.LOG,(R0) ;SAY RETRY COUNT EXHAUSTED
   3190	007610	032712 	100000 			BIT	#LP.HNG,(R2)	;WAS DEVICE HUNG, TOO?
   3191	007614	001404 				BEQ	143$		;NO-- GO ON
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 35-2
SSTSLP	(SEND LP-20 STATUS TO -10)

   3192	007616	052710 	001004 			BIS	#DV.HNG!DV.OIR,(R0) ;YES-- SAY THAT TOO
   3193	007622	012701 	010200'			MOV	#ERMHNG,R1	;GET HUNG MESSAGE, TOO
   3194	007626				143$:
   3195	007626	032763 	000010 	000002 		BIT	#RAMPAR,LPCSRB(R3) ;RAM PARITY ERROR?
   3196	007634	001405 				BEQ	144$		;NO-- GO ON
   3197	007636	052760 	000040 	000002 		BIS	#DD.RME,2(R0)	;YES-- NOTE FATAL ERROR
   3198	007644	052712 	002000 			BIS	#LP.CLR,(R2)	;NOTE RAM NEEDS TO BE RESET
   3199	007650				144$:
   3200	007650					CALL	..SPLP		;RETRY COUNT EXHAUSTED-- GIVE UP OUTPUT
	007650	004737 	011414'			JSR	PC,..SPLP
   3201	007654				15$:
   3202	007654	032713 	040000 			BIT	#PAGZRO,(R3)	;PAGE-COUNT ZERO?
   3203	007660	001412 				BEQ	16$		;NO-- OK
   3204	007662	032712 	020000 			BIT	#LP.PZI,(R2)	;YES-- BUT ENABLED?
   3205	007666	001407 				BEQ	16$		;NO-- DON'T TELL HIM
   3206	007670	052710 	000010 			BIS	#DV.SCN,(R0)	;TELL -10 WE WANT HIM TO ACK
   3207	007674	052760 	000001 	000002 		BIS	#DD.PGZ,2(R0)	; FOR PAGE-ZERO
   3208	007702	052712 	004000 			BIS	#LP.WAT,(R2)	;REMEMBER TO WAIT
   3209	007706				16$:
   3210	007706	032713 	020000 			BIT	#CHRINT,(R3)	;UNDEFINED (INTERRUPT) CHARACTER?
   3211	007712	001407 				BEQ	17$		;NO-- GO ON
   3212	007714	052710 	000010 			BIS	#DV.SCN,(R0)	;NOTE TO WAIT
   3213	007720	052760 	000002 	000002 		BIS	#DD.CHI,2(R0)	; FOR UNDEF CHAR
   3214	007726	052712 	004000 			BIS	#LP.WAT,(R2)	; AND FOR US TO WAIT
   3215	007732				17$:
   3216	007732	032763 	004000 	000002 		BIT	#OPTVFU,LPCSRB(R3) ;THIS LP HAVE OPTICAL VFU?
   3217	007740	001403 				BEQ	18$		;NO-- MUST HAVE DAVFU (HOORAY)
   3218	007742	052760 	000020 	000002 		BIS	#DD.OVF,2(R0)	;YES-- SAY SO
   3219	007750				18$:
   3220					;
   3221					; ERROR CODE NOW IN LPSTBK+0 AND LPSTBK+2
   3222					;
   3223	007750				50$:
   3224	007750	032712 	000400 			BIT	#LP.F10,(R2)	;THIS A FROM-10 REQUEST?
   3225	007754	001115 				BNE	70$		;YES-- DON'T PRINT ON CONSOLE
   3226					;
   3227					; NON-10 REQUEST-- SEND CONSOLE A MESSAGE ABOUT OUR STATUS
   3228					;
   3229	007756	042712 	004000 			BIC	#LP.WAT,(R2)	;DON'T WAIT FOR NON-10 REQUEST
   3230	007762	005701 				TST	R1		;TELL OPR?
   3231	007764	001511 				BEQ	70$		;NO-- JUST SEND TO -10 ANYWAY
   3232	007766	012700 	010071'			MOV	#LPEMSX,R0	;GET ADDRESS OF END OF MESSAGE SO FAR
   3233	007772				51$:
   3234	007772	112120 				MOVB	(R1)+,(R0)+	;COPY A BYTE OF THE MESSAGE
   3235	007774	001376 				BNE	51$		; UNTIL ASCIZZZZZZZZ
   3236	007776	162700 	010056'			SUB	#LPEMSG,R0	;GET LENGTH OF MESSAGE
   3237	010002	010037 	010052'			MOV	R0,LPQDPB+Q.IOPL+2 ;SET LENGTH IN QIOW$ DPB
   3238	010006	011201 				MOV	(R2),R1		;GET UNIT
   3239	010010	042701 	177774 			BIC	#^C<LP.UNT>,R1	; NUMBER OF THIS LP
   3240	010014	062701 	000060 			ADD	#'0,R1		;MAKE IT ASCII
   3241	010020	110137 	010066'			MOVB	R1,LPERUN	;SAVE IN MESSAGE STRING
   3242	010024					DIR$	#LPQDPB		;DO QUEUE I/O TO CTY
	010024	012746 	010034'			MOV	#LPQDPB,-(SP)
	010030	104375 				EMT	375
   3243	010032	000466 				BR	70$		;SEE IF WE CAN CONTINUE
   3244					;
   3245	010034				LPQDPB:
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 35-3
SSTSLP	(SEND LP-20 STATUS TO -10)

   3246	010034					QIOW$	IO.WLB,1,E.FLPQ,1,0,0,<LPEMSG,0,0>
	010034	   003 	   011 			.BYTE	3,$$$ARG
	010036	000400 				.WORD	IO.WLB
	010040	000001 				.WORD	1
	010042	   003 	   001 			.BYTE	E.FLPQ,1
	010044	000000 				.WORD	0
	010046	000000 				.WORD	0
	010050	010056'				.WORD	LPEMSG
	010052	000000 				.WORD	0
	010054	000000 				.WORD	0
   3247	010056				LPEMSG:
   3248	010056	   015 	   012 	   052 		.ASCII	<15><12>/*** LP/
	010061	   052 	   052 	   040
	010064	   114 	   120
   3249	010066				LPERUN:
   3250	010066	   060 	   072 	   040 		.ASCII	/0: /
   3251	010071				LPEMSX:
   3252	010071					.BLKB	16.		;REST OF MESSAGE: MAX OF 16 BYTES
   3253	010111				ERMNXD:
   3254	010111	   116 	   117 	   116 		.ASCIZ	/NON-EX DEVICE/<15><12>
	010114	   055 	   105 	   130
	010117	   040 	   104 	   105
	010122	   126 	   111 	   103
	010125	   105 	   015 	   012
	010130	   000
   3255	010131				ERMOFL:
   3256	010131	   117 	   106 	   106 		.ASCIZ	/OFF-LINE/<15><12>
	010134	   055 	   114 	   111
	010137	   116 	   105 	   015
	010142	   012 	   000
   3257	010144				ERMVFE:
   3258	010144	   106 	   117 	   122 		.ASCIZ	/FORMAT ERROR/<15><12>
	010147	   115 	   101 	   124
	010152	   040 	   105 	   122
	010155	   122 	   117 	   122
	010160	   015 	   012 	   000
   3259	010163				ERMHER:
   3260	010163	   104 	   101 	   124 		.ASCIZ	/DATA ERROR/<15><12>
	010166	   101 	   040 	   105
	010171	   122 	   122 	   117
	010174	   122 	   015 	   012
	010177	   000
   3261	010200				ERMHNG:
   3262	010200	   110 	   125 	   116 		.ASCIZ	/HUNG/<15><12>
	010203	   107 	   015 	   012
	010206	   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	010210				70$:
   3271	010210	005703 				TST	R3		;NON-EX DEVICE?
   3272	010212	001417 				BEQ	72$		;YES-- DON'T STORE NON-EX DEVICE REGISTERS
   3273	010214	012700 	000004G			MOV	#LPSTBK+4,R0	;POINT TO STATUS RETURN BLOCK
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 35-4
SSTSLP	(SEND LP-20 STATUS TO -10)

   3274	010220	012720 	000000C			MOV	#<2.*BIT8>+<LPEXPZ*BIT0>,(R0)+ ;2 BYTES INFO, + DEV REG'S
   3275	010224	116220 	000001G			MOVB	LPCSM+1(R2),(R0)+ ;CHECKSUM
   3276	010230	012701 	000012 			MOV	#LPRTRY,R1	;GET INITIAL RETRY COUNT
   3277	010234	166201 	000000G			SUB	LPRTY(R2),R1	; - CURRENT COUNT= # RETRIES
   3278	010240	110120 				MOVB	R1,(R0)+	;HIGH BYTE-- # RETRIES
   3279	010242				71$:
   3280	010242	012320 				MOV	(R3)+,(R0)+	;(2) ... LP DEVICE REGISTERS
   3281	010244	022700 	000000C			CMP	#LPSTBK+LPSTLN,R0 ;DONE YET?
   3282	010250	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	010252				72$:
   3291	010252	012700 	000000G			MOV	#LPSTBK,R0	;SET UP ADDR FOR ..STIN
   3292	010256	011201 				MOV	(R2),R1		;GET UNIT NUMBER
   3293	010260	042701 	177774 			BIC	#^C<LP.UNT>,R1	; FROM LPSTS
   3294	010264	110140 				MOVB	R1,-(R0)	;HIGH BYTE HEADER: UNIT #
   3295	010266	112740 	000002G			MOVB	#LPSTLN+2,-(R0)	;LOW BYTE HEADER: SIZE OF BLOCK
   3296	010272	012701 	100000G			MOV	#BIT15+BC.HDS,R1 ;INDIRECT FUNCTION HERE IS DEVICE STATUS
   3297	010276					PUSH	R2		;SAVE LPTBL POINTER
	010276	010246 				MOV	R2,-(SP)
   3298	010300	012702 	000005 			MOV	#E.FLPS,R2	;EVENT FLAG NUMBER
   3299	010304	012703 	000000G			MOV	#D.CLPT,R3	;DEVICE LP
   3300	010310	042777 	000020 	000000G		BIC	#EF.LPS,@LPEVFG	;CLEAR BUFFER AVAILABLE FLAG
   3301	010316					CALL	..STIN		;SAVE FOR NOW
	010316	004737 	000000G			JSR	PC,..STIN
   3302	010322					POP	R2		;RESTORE LPTBL POINTER
	010322	012602 				MOV	(SP)+,R2
   3303	010324	103010 				BCC	80$		;FINISH UP
   3304					;
   3305					; ..STIN GAVE ERROR-- MUST SEND STATUS AGAIN LATER
   3306					;
   3307	010326				75$:
   3308	010326	052777 	000020 	000000G		BIS	#EF.LPS,@LPEVFG	;NOTE BUFFER STILL REALLY AVAILABLE
   3309	010334	032712 	000400 			BIT	#LP.F10,(R2)	;THIS A FROM-10 REQUEST
   3310	010340	001402 				BEQ	80$		;NO-- IGNORE THE ERROR
   3311	010342	052712 	040000 			BIS	#LP.SST,(R2)	;YES-- SEND STATUS AGAIN LATER
   3312					;
   3313					; FINISH UP
   3314					;
   3315	010346				80$:
   3316	010346					RESTORE			; AND REGISTERS
	010346	012604 				MOV	(SP)+,R4
	010350	012603 				MOV	(SP)+,R3
	010352	012601 				MOV	(SP)+,R1
	010354	012600 				MOV	(SP)+,R0
   3317	010356					RETURN			;RETURN FROM SSTSLP
	010356	000207 				RTS	PC
   3318						.DSABLE	LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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	010360				TESTLP:
   3339	010360	032713 	004000 			BIT	#ONLINE,(R3)	;OFF-LINE?
   3340	010364	001470 				BEQ	90$		;YES-- DO NOTHING
   3341					;
   3342	010366	032777 	000040 	000000G		BIT	#EF.LPW,@LPEVFG	;SHOULD WE WAIT FOR LP-20?
   3343	010374	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	010376					DIR$	#MKSCDP		;SET MARK TIME REQUEST
	010376	012746 	005566'			MOV	#MKSCDP,-(SP)
	010402	104375 				EMT	375
   3348	010404	103405 				BCS	10$		;OH, WELL ...
   3349	010406					WTSE$S	#E.FLPW		;WAIT FOR THE FLAG
	010406	012746 	000006 			MOV	#E.FLPW,-(SP)
	010412	012746 				MOV	(PC)+,-(SP)
	010414	   051 	   002 			.BYTE	41.,2
	010416	104375 				EMT	375
   3350	010420				10$:
   3351	010420	032712 	002000 			BIT	#LP.CLR,(R2)	;TIME TO CLEAR THE RAM?
   3352	010424	001414 				BEQ	30$		;NO-- JUST GO ON
   3353	010426	042712 	002000 			BIC	#LP.CLR,(R2)	;RESET THE FLAG
   3354	010432	032712 	001000 			BIT	#LP.LIP,(R2)	;BUT RAM LOAD NOW IN PROGRESS??
   3355	010436	001007 				BNE	30$		;YES-- DON'T GO RESET IT
   3356					;
   3357					; RAM MUST BE CLEARED, SINCE WE GOT A RAMPAR/VFU ERROR
   3358					;
   3359	010440	105063 	000014 			CLRB	LPCBUF(R3)	;CLEAR RAM ADDRESS REGISTER
   3360	010444				20$:
   3361	010444	005063 	000012 			CLR	LPRAMD(R3)	;CLEAR A RAM WORD
   3362	010450	105263 	000014 			INCB	LPCBUF(R3)	;BUMP TO NEXT RAM ADDRESS
   3363	010454	001373 				BNE	20$		;NOT DONE-- GO ON TO NEXT WORD
   3364					;
   3365					; TIME TO START LP GOING
   3366					;
   3367	010456				30$:
   3368	010456	032712 	000200 			BIT	#LP.EOF,(R2)	;WE AT EOF TIME?
   3369	010462	001404 				BEQ	32$		;NO-- GO ON
   3370	010464	042712 	000200 			BIC	#LP.EOF,(R2)	;YES-- NO LONGER EOF
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 36-1
TESTLP	(START LP-20 GOING ON THREADED LIST)

   3371	010470	005062 	000000G			CLR	LPCSM(R2)	;RESET CHECKSUM AT EOF
   3372	010474				32$:
   3373	010474	032713 	040000 			BIT	#PAGZRO,(R3)	;PAGZRO SET?
   3374	010500	001403 				BEQ	34$		;NO-- GO ON
   3375	010502	016363 	000010 	000010 		MOV	LPPCTR(R3),LPPCTR(R3) ;YES-- RESET PAGZRO
   3376	010510				34$:
   3377	010510	005713 				TST	(R3)		;ERROR SET?
   3378	010512	100002 				BPL	40$		;NO-- GO ON
   3379	010514	052713 	001102 			BIS	#RSTERR+INTENB+PARENB,(R3) ;YES-- RESET IT
   3380	010520				40$:
   3381	010520					PUSH	R0		;SAVE THREAD POINTER
	010520	010046 				MOV	R0,-(SP)
   3382	010522					.INH4			;;; PREVENT LP INTERRUPTS
	010522	013746 	177776 			MOV	@#PS,-(SP)
	010526	112737 	000200 	177776 		MOVB	#PR4,@#PS
   3383	010534					CALL	..DOLP		;;;START LP GOING ON THE LIST
	010534	004737 	012010'			JSR	PC,..DOLP
   3384	010540					.ENB4			;;;DONE
	010540	012637 	177776 			MOV	(SP)+,@#PS
   3385	010544					POP	R0		;RESTORE LPTHD POINTER
	010544	012600 				MOV	(SP)+,R0
   3386					;
   3387					; ALL DONE
   3388					;
   3389	010546				90$:
   3390	010546					RETURN			;RETURN FROM TESTLP
	010546	000207 				RTS	PC
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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	010550				INITLP::
   3405	010550					SAVE	<R2,R3,R5>	;SAVE OUR PRECIOUS REGISTERS
	010550	010246 				MOV	R2,-(SP)
	010552	010346 				MOV	R3,-(SP)
	010554	010546 				MOV	R5,-(SP)
   3406	010556	012705 	000002 			MOV	#L$$P20,R5	;GET # LP'S WE HAVE
   3407	010562	012702 	000000G			MOV	#LPTBL,R2	;ADDRESS LPTBL ENTRY FOR UNIT 0
   3408	010566				10$:
   3409	010566	011203 				MOV	(R2),R3		;GET THE
   3410	010570	042703 	177774 			BIC	#^C<LP.UNT>,R3	; UNIT #
   3411	010574	006303 				ASL	R3		; *2
   3412	010576	006303 				ASL	R3		; *4
   3413	010600	006303 				ASL	R3		; *8
   3414	010602	006303 				ASL	R3		; *16 BYTES PER UNIT
   3415	010604	062703 	000000G			ADD	#LPEXPA,R3	;GET EXTERNAL PAGE ADDRESS FOR THIS LP
   3416	010610	010362 	000000G			MOV	R3,LPCSA(R2)	;SAVE THIS ADDRESS
   3417	010614	012713 	001102 			MOV	#RSTERR+INTENB+PARENB,(R3) ;CLEAR LP
   3418	010620				LPDCLR:
   3419	010620	005062 	000000G			CLR	LPITH(R2)	;CLEAR INT-LEVEL POINTER TO THREADED LIST
   3420	010624				90$:
   3421	010624	062702 	000000G			ADD	#LPSIZE,R2	;BUMP TO NEXT LP'S ENTRY
   3422	010630	077522 				SOB	R5,10$		;LOOP FOR ALL LP'S
   3423
   3424	010632	052777 	000002 	000000G		BIS	#EF.LPC,@LPEVFG	;FORCE A HUNG CHECK NOW
   3425	010640					RESTORE			; THE REGISTERS TO THEIR RIGHTFUL (PITIFUL) CONDITION
	010640	012605 				MOV	(SP)+,R5
	010642	012603 				MOV	(SP)+,R3
	010644	012602 				MOV	(SP)+,R2
   3426	010646					RETURN			;RETURN FROM INITLP
	010646	000207 				RTS	PC
   3427					;
   3428						.DSABLE	LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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 19:04  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	010650				$LPINT::
   3491	010650	013737 	177776 	000000G		MOV	@#PS,LPUNIT	;;;SAVE UNIT #
   3492	010656					SAVE	<R0,R2,R3>	;;;SAVE REGISTERS
	010656	010046 				MOV	R0,-(SP)
	010660	010246 				MOV	R2,-(SP)
	010662	010346 				MOV	R3,-(SP)
   3493	010664	013702 	000000G			MOV	LPUNIT,R2	;;;GET UNIT # BACK
   3494	010670	006302 				ASL	R2		;;;MAKE IT WORDS
   3495	010672	042702 	177774 			BIC	#^C<LP.UNT>,R2	;;;CLEAR GARBAGE BITS
   3496	010676	016202 	000000G			MOV	LPUTBL(R2),R2	;;;GET ADDR OF DEVICE STATUS BLOCK FOR THIS LP
   3497	010702	016203 	000000G			MOV	LPCSA(R2),R3	;;;GET EXT PAGE ADDR FOR CURRENT LP
   3498	010706	016200 	000000G			MOV	LPITH(R2),R0	;;;GET CURRENT THREAD BLOCK ADDR
   3499	010712	001520 				BEQ	80$		;;;IDLE-- JUST SEND DEVICE STATUS
   3500					;
   3501					; LP NOT IDLE-- SEE IF ERROR, PAGZRO, CHRINT, OR DONE
   3502					;
   3503	010714	105062 	000000G			CLRB	LPCSM+0(R2)	;;;INSURE NO CARRY
   3504	010720	066362 	000016 	000000G		ADD	LPCKSM-1(R3),LPCSM(R2) ;;;ACCUMULATE CHECKSUM
   3505	010726	032713 	160000 			BIT	#ERR+PAGZRO+CHRINT,(R3) ;;;ERROR, PAGZRO, OR CHRINT?
   3506	010732	001014 				BNE	30$		;;;YES-- STOP I/O AND PROCESS
   3507	010734	005763 	000006 			TST	LPBCTR(R3)	;;;DONE (BYTE COUNT=0)?
   3508	010740	001003 				BNE	20$		;;;NO-- JUST KEEP IT GOING
   3509	010742					CALL	..DOL1		;;;YES-- START NEXT BUFFER
	010742	004737 	011774'			JSR	PC,..DOL1
   3510	010746	000511 				BR	90$		;;;EXIT FROM IRP
   3511					;
   3512	010750				20$:
   3513	010750	005362 	000000G			DEC	LPRTY(R2)	;;;DECREMENT RETRY COUNT
   3514	010754	002403 				BLT	30$		;;;RAN OUT-- CHECK FOR A BIT SET, OR ASSUME ERROR
   3515	010756	052713 	000103 			BIS	#INTENB+PARENB+GO,(R3) ;;;MAKE SURE LP IS STILL GO-ING
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 39-1
$LPINT	(LP-20 INTERRUPT SERVICE ROUTINE)

   3516	010762	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	010764				30$:
   3522	010764	032712 	010000 			BIT	#LP.MCH,(R2)	;;;MULTI-CHAR PRINT OPERATION?
   3523	010770	001044 				BNE	40$		;;;YES-- DON'T SAVE BYTE COUNT AND ADDRESS
   3524	010772	005463 	000006 			NEG	LPBCTR(R3)	;;;GET # BYTES LEFT TO TRANSMIT
   3525	010776	016360 	000006 	000000G		MOV	LPBCTR(R3),T.HCBC(R0) ;;; INTO THREAD BLOCK TO CONTINUE
   3526	011004	016360 	000004 	000000G		MOV	LPBSAD(R3),T.HCAD(R0) ;;;ALSO CURRENT ADDRESS
   3527	011012	032713 	020000 			BIT	#CHRINT,(R3)	;;;THIS CHRINT INTERRUPT?
   3528	011016	001431 				BEQ	40$		;;;NO-- SEE IF PAGZRO
   3529	011020					PUSH	R2		;;;SAVE THE ADDRESS OF LPTBL
	011020	010246 				MOV	R2,-(SP)
   3530	011022	062702 	000000G			ADD	#LPMCB,R2	;;;POINT TO THE MULTI-CHAR BUFFER
   3531	011026	010263 	000004 			MOV	R2,LPBSAD(R3)	;;;POINT THE LP20 TO THAT BUFFER
   3532	011032	116312 	000012 			MOVB	LPRAMD+0(R3),(R2) ;;;GET RAM DATA CHARACTER
   3533	011036	122722 	000136 			CMPB	#'^,(R2)+	;;;ARROW MODE?
   3534	011042	001015 				BNE	39$		;;;NO-- INTERRUPT -10
   3535	011044	116312 	000014 			MOVB	LPCBUF(R3),(R2)	;;;YES-- GET THE CAUSING CHARACTER
   3536	011050	152712 	000100 			BISB	#100,(R2)	;;;MAKE IT ALPHABETIC
   3537	011054					POP	R2		;;;RESTORE LPTBL
	011054	012602 				MOV	(SP)+,R2
   3538	011056	052712 	010000 			BIS	#LP.MCH,(R2)	;;;SAY WE ARE DOING MULTI-CHARACTER
   3539	011062	012763 	177776 	000006 		MOV	#-2,LPBCTR(R3)	;;;SET BYTE COUNT TO TWO CHARACTERS
   3540	011070	012713 	000103 			MOV	#PARENB+INTENB+GO,(R3) ;;;START IT GOING ON THESE TWO CHARS
   3541	011074	000436 				BR	90$		;;;WAIT FOR DONE
   3542					;
   3543	011076				39$:	POP	R2		;;;INTERRUPT-- RESTORE LPTBL POINTER
	011076	012602 				MOV	(SP)+,R2
   3544	011100	000423 				BR	70$		;;; AND TELL -10
   3545					;
   3546					; ERROR OR PAGZRO
   3547					;
   3548	011102				40$:
   3549	011102	032713 	040000 			BIT	#PAGZRO,(R3)	;;;PAGZRO?
   3550	011106	001411 				BEQ	60$		;;;NO-- MUST BE ERROR
   3551	011110	032712 	020000 			BIT	#LP.PZI,(R2)	;;;YES-- IS PAGE ZERO INTERRUPT ENABLED?
   3552	011114	001015 				BNE	70$		;;;YES-- INTERRUPT AND WAIT
   3553	011116	016363 	000010 	000010 		MOV	LPPCTR(R3),LPPCTR(R3) ;;;NO-- RESET PAGZRO
   3554	011124					CALL	..DOLP		;;;NO-- JUST CONTINUE
	011124	004737 	012010'			JSR	PC,..DOLP
   3555	011130	000420 				BR	90$		;;;DONE WITH PAGZRO
   3556					;
   3557					; ERROR-- DECREMENT RETRY COUNT IF ANYTHING BUT OFF-LINE
   3558					;
   3559	011132				60$:
   3560	011132	032763 	000177 	000002 		BIT	#VFUERR+LPTPAR+MEMPAR+RAMPAR+SYNTIM+DEMTIM+GOERR,LPCSRB(R3)
   3561	011140	001403 				BEQ	70$		;;;NO ERRORS-- JUST SEND STATUS
   3562	011142	012762 	177777 	000000G		MOV	#-1,LPRTY(R2)	;;; ABOVE ERRORS ARE NOT RECOVERABLE
   3563					;
   3564					; STOP I/O AND SEND STATUS TO -10
   3565					;
   3566	011150				70$:
   3567	011150	005062 	000000G			CLR	LPITH(R2)	;;;SAY I/O STOPPED
   3568					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 39-2
$LPINT	(LP-20 INTERRUPT SERVICE ROUTINE)

   3569					; SEND STATUS TO -10
   3570					;
   3571	011154				80$:
   3572	011154	052712 	040000 			BIS	#LP.SST,(R2)	;;;SAY SEND STATUS TO TASK
   3573	011160	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;;;SAY SOMETHING TO DO
   3574	011166					CALL	..DSEV		;;;SAY SIGNIFICANT EVENT
	011166	004737 	000000G			JSR	PC,..DSEV
   3575					;
   3576					; ALL DONE WITH INTERRUPT
   3577					;
   3578	011172				90$:
   3579	011172					RESTORE			;;; SAVED REGISTERS
	011172	012603 				MOV	(SP)+,R3
	011174	012602 				MOV	(SP)+,R2
	011176	012600 				MOV	(SP)+,R0
   3580	011200	000137 	000000G			JMP	..INTX		;;;RETURN FROM LP INTERRUPT
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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 19:04  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	011204				..STLP::
   3652	011204					SAVE	<R1,R3,R4>
	011204	010146 				MOV	R1,-(SP)
	011206	010346 				MOV	R3,-(SP)
	011210	010446 				MOV	R4,-(SP)
   3653	011212	022702 	000000C			CMP	#LPTBL+<L$$P20*LPSIZE>,R2 ;THIS ONE OF US?
   3654	011216	101434 				BLOS	30$		;NO-- JUST SLIP AWAY
   3655	011220	052712 	000400 			BIS	#LP.F10,(R2)	;NOTE THAT THIS IS A FROM-10 REQUEST
   3656	011224	116004 	000001G			MOVB	T.HCBC+1(R0),R4	;GET FUNCTION CODE
   3657	011230	105060 	000001G			CLRB	T.HCBC+1(R0)	; AND CLEAR IT
   3658	011234	012703 	011254'			MOV	#BCFTAB,R3	;POINT TO FUNCTION DISPATCH TABLE
   3659	011240				10$:
   3660	011240	112301 				MOVB	(R3)+,R1	;GET A DISPATCH ADDRESS
   3661	011242	001413 				BEQ	BCFILF		;END-- ASSUME RETURN DEVICE STATUS
   3662	011244	122304 				CMPB	(R3)+,R4	;MATCH FUNCTION?
   3663	011246	001374 				BNE	10$		;NO-- LOOP TILL WE FIND FUNCTION
   3664	011250	000161 	011254'			JMP	BCFTAB(R1)	;PERFORM FUNCTION
   3665					;
   3666	011254				BCFTAB:
   3667	011254	   124 	   000G			.BYTE	BCFSTR-BCFTAB,BC.STR
   3668	011256	   016 	   000G			.BYTE	BCFRDS-BCFTAB,BC.RDS
   3669	011260	   062 	   000G			.BYTE	BCFHDS-BCFTAB,BC.HDS
   3670	011262	   042 	   000G			.BYTE	BCFSDO-BCFTAB,BC.SDS
   3671	011264	   102 	   000G			.BYTE	BCFLDR-BCFTAB,BC.LDR
   3672	011266	   110 	   000G			.BYTE	BCFLDV-BCFTAB,BC.LDV
   3673	011270	   000 				.BYTE	0
   3674						.EVEN
   3675					;
   3676					; ILLEGAL FUNCTION
   3677					;
   3678	011272				BCFILF:
   3679					;	BR	BCFRDS		;ILLEGAL FUNCTION-- JUST SEND STATUS FOR NOW
   3680					;
   3681					; RETURN DEVICE STATUS
   3682					;
   3683	011272				BCFRDS:
   3684	011272	052712 	040000 			BIS	#LP.SST,(R2)	;NOTE TO SEND STATUS NOW
   3685	011276	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;TELLL LP TASK TO DO SOMETHING
   3686	011304					CALL	..DSEV		;MAKE A SIGNIFICANT EVENT HAPPEN
	011304	004737 	000000G			JSR	PC,..DSEV
   3687					;
   3688					; THREAD BLOCK DONE-- DEALLOCATE
   3689					;
   3690	011310				30$:
   3691	011310					CALL	..DECN		;DEALLOCATE THREAD BLOCK
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 40-2
..STLP	(START LP-20 OUTPUT)

	011310	004737 	000000G			JSR	PC,..DECN
   3692	011314	000433 				BR	90$		;RESTORE AND RETURN
   3693					;
   3694					; SPECIAL DEVICE OPERATION
   3695					;
   3696	011316				BCFSDO:
   3697	011316	016001 	000000G			MOV	T.HCAD(R0),R1	;GET DATA ADDRESS
   3698	011322	022711 	000001 			CMP	#1,(R1)		;SET PAGE COUNTER?
   3699	011326	001361 				BNE	BCFILF		;NO-- ILLEGAL FUNCTION
   3700	011330	012701 	010000 			MOV	#TB.LPC,R1	;SAY SET PAGE COUNTER
   3701	011334	000415 				BR	40$		;QUEUE IT UP
   3702					;
   3703					; HERE IS DEVICE STATUS
   3704					;
   3705	011336				BCFHDS:
   3706	011336	016001 	000000G			MOV	T.HCAD(R0),R1	;GET ADDRESS
   3707	011342	032711 	000040 			BIT	#DV.EOF,(R1)	;EOF FOR LP?
   3708	011346	001751 				BEQ	BCFILF		;NO-- ILLEGAL STATUS
   3709	011350	012701 	020000 			MOV	#TB.EOF,R1	;YES-- SET FUNCTION
   3710	011354	000405 				BR	40$		;SEND IT TO QUEUE
   3711					;
   3712					; TRANSLATION RAM DATA
   3713					;
   3714	011356				BCFLDR:
   3715	011356	012701 	004000 			MOV	#TB.RMD,R1	;NOTE RAM DATA
   3716	011362	000402 				BR	40$		;SEND TO QUEUE
   3717					;
   3718					; VFU DATA
   3719					;
   3720	011364				BCFLDV:
   3721	011364	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	011370				40$:
   3727	011370	052701 	100000 			BIS	#TB.DON,R1	;FLAG BLOCK DONE TO INTERRUPT SERVICE
   3728	011374	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	011400				BCFSTR:
   3734	011400					CALL	..PTLP		;SEND TO LP OR QUEUE UP
	011400	004737 	011646'			JSR	PC,..PTLP
   3735					;
   3736					; ALL DONE
   3737					;
   3738	011404				90$:
   3739	011404					RESTORE			;UN-SAVE REGISTRS
	011404	012604 				MOV	(SP)+,R4
	011406	012603 				MOV	(SP)+,R3
	011410	012601 				MOV	(SP)+,R1
   3740	011412					RETURN			; FROM ..STLP
	011412	000207 				RTS	PC
   3741					;
   3742						.DSABLE	LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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	011414				..SPLP::
   3769	011414					SAVE	<R0,R1,R3>	;SAVE MISC. REGISTERS
	011414	010046 				MOV	R0,-(SP)
	011416	010146 				MOV	R1,-(SP)
	011420	010346 				MOV	R3,-(SP)
   3770	011422	022702 	000000C			CMP	#LPTBL+<L$$P20*LPSIZE>,R2 ;THIS ONE OF US?
   3771	011426	101453 				BLOS	99$		;NO-- JUST LEAVE
   3772	011430	042712 	004000 			BIC	#LP.WAT,(R2)	;NO LONGER WAITING FOR ACK
   3773	011434	005762 	000000G			TST	LPRMA(R2)	;RAM DATA LOAD IN PROGRESS??
   3774	011440	001402 				BEQ	4$		;NO-- GO ON
   3775	011442	052712 	001000 			BIS	#LP.LIP,(R2)	;YES-- FLAG TO REMOVE IT AT LPTASK
   3776	011446				4$:
   3777	011446	005762 	000000G			TST	LPITH(R2)	;I/O IN PROGRESS?
   3778	011452	001403 				BEQ	5$		;NO-- JUST GO ON
   3779	011454	042777 	000040 	000000G		BIC	#EF.LPW,@LPEVFG	;YES-- MARK TO TIME OUT LP-20 WHEN WE STOP IT
   3780	011462				5$:
   3781	011462	005062 	000000G			CLR	LPITH(R2)	;CLEAR INTERRUPT LEVEL THREAD PTR
   3782	011466	016203 	000000G			MOV	LPCSA(R2),R3	;GET EXTERNAL PAGE ADDR
   3783	011472	001405 				BEQ	6$		;NON-EX LP
   3784	011474	012713 	001102 			MOV	#RSTERR+INTENB+PARENB,(R3) ;STOP LP-20
   3785	011500	016363 	000010 	000010 		MOV	LPPCTR(R3),LPPCTR(R3) ;RESET PAGZRO, TOO
   3786	011506				6$:
   3787	011506	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	011512				10$:
   3792	011512	010100 				MOV	R1,R0		;GET ADDR OF NEXT BLOCK
   3793	011514	001413 				BEQ	90$		;THAT'S THE END
   3794	011516	011001 				MOV	@R0,R1		;GET ADDR OF NEXT NEXT BLOCK
   3795	011520	052760 	040000 	000000G		BIS	#TB.ABO,T.HCBC(R0) ;MARK BLOCK AS ABORTED
   3796	011526	005760 	000000G			TST	T.HCBC(R0)	;THIS THREAD BLOCK ALREADY DONE?
   3797	011532	002767 				BLT	10$		;YES-- LEAVE IT ALONE
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 41-1
..SPLP	(STOP LP-20 OUTPUT)

   3798	011534	012760 	140361 	000000G		MOV	#TB.DON!TB.ABO!<IE.ABO&LOBYTE>,T.HCBC(R0) ;MARK AS DONE, ABORTED
   3799	011542	000763 				BR	10$		;LOOP FOR ALL THINGS IN LIST
   3800					;
   3801					; ALL DONE WITH LIST
   3802					;
   3803	011544				90$:
   3804	011544	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;SAY I/O DONE TO LP TASK (RATHER... ABORTED)
   3805	011552					CALL	..DSEV		;MAKE A SIGNIFICANT EVENT HAPPEN
	011552	004737 	000000G			JSR	PC,..DSEV
   3806	011556				99$:
   3807	011556					RESTORE			;RESTORE SAVE REGISTERS
	011556	012603 				MOV	(SP)+,R3
	011560	012601 				MOV	(SP)+,R1
	011562	012600 				MOV	(SP)+,R0
   3808	011564					RETURN			;RETURN FORM ..SPLP
	011564	000207 				RTS	PC
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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	011566				..AKLP::
   3830	011566					SAVE	<R3>		;SAVE USED R'S
	011566	010346 				MOV	R3,-(SP)
   3831	011570	022702 	000000C			CMP	#LPTBL+<L$$P20*LPSIZE>,R2 ;THIS AN LP???
   3832	011574	101422 				BLOS	90$		;NO-- JUST LEAVE
   3833	011576	042712 	004000 			BIC	#LP.WAT,(R2)	;NO LONGER WAITING
   3834	011602	005762 	000000G			TST	LPITH(R2)	;LP GOING?
   3835	011606	001015 				BNE	90$		;YES-- JUST GO AWAY
   3836	011610	016203 	000000G			MOV	LPCSA(R2),R3	;GET EXT PAGE ADDR OF THIS LP
   3837	011614	001405 				BEQ	10$		;NON-EX LP-- JUST GO AWAY
   3838	011616	016363 	000010 	000010 		MOV	LPPCTR(R3),LPPCTR(R3) ;RESET PAGZRO
   3839	011624	042713 	020000 			BIC	#CHRINT,(R3)	; AND CHRINT
   3840	011630				10$:
   3841	011630	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;START LP TASK
   3842	011636					CALL	..DSEV		; . .
	011636	004737 	000000G			JSR	PC,..DSEV
   3843	011642				90$:
   3844	011642					RESTORE			; USED R'S
	011642	012603 				MOV	(SP)+,R3
   3845	011644					RETURN			; FROM ..AKLP
	011644	000207 				RTS	PC
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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	011646				..PTLP::
   3869	011646					SAVE	<R1,R3>	;SAVE USED REGISTERS
	011646	010146 				MOV	R1,-(SP)
	011650	010346 				MOV	R3,-(SP)
   3870	011652	005010 				CLR	@R0		;MARK END OF LIST
   3871	011654	012762 	000012 	000000G		MOV	#LPRTRY,LPRTY(R2) ;RESET RETRY COUNTER
   3872	011662	016203 	000000G			MOV	LPCSA(R2),R3	;GET LP EXTERNAL PAGE ADDRESS
   3873	011666	001404 				BEQ	5$		;OOPS-- NON-EX LP
   3874	011670	032713 	004000 			BIT	#ONLINE,(R3)	;OFF-LINE?
   3875	011674	001006 				BNE	7$		;NO-- JUST GO ON
   3876	011676	000403 				BR	6$		;OFF-LINE-- SEND STATUS
   3877					;
   3878	011700				5$:
   3879	011700	012760 	100277 	000000G		MOV	#TB.DON!<IE.OFL&LOBYTE>,T.HCBC(R0) ;NON-EX-LP-- MARK AS DONE, ERROR
   3880	011706				6$:
   3881	011706	052712 	040000 			BIS	#LP.SST,(R2)	;TIME TO RING THE -10
   3882	011712				7$:
   3883	011712					.INH0			;;LOCK OUT QUEUE'D PROTOCOL TASK
	011712	013746 	177776 			MOV	@#PS,-(SP)
	011716	112737 	000140 	177776 		MOVB	#140,@#PS
   3884	011724	016201 	000000G			MOV	LPTHD(R2),R1	;;GET CURRENT POINTER TO THREADED LIST
   3885	011730	001405 				BEQ	20$		;;NONE-- START LP GOING
   3886					;
   3887					; LP BUSY-- MUST FIND END OF THREADED LIST AND PUT THIS BUFFER THERE
   3888					;
   3889	011732				10$:
   3890	011732	010103 				MOV	R1,R3		;;COPY ADDR OF THREAD BLOCK
   3891	011734	011301 				MOV	@R3,R1		;;GET NEXT THREAD
   3892	011736	001375 				BNE	10$		;;NOT END-- KEEP ON LOOKING
   3893	011740	010013 				MOV	R0,@R3		;;END-- STORE CURRENT THREAD BLOCK AT END
   3894	011742	000407 				BR	90$		;;ALL DONE
   3895					;
   3896					; LP IDLE-- START IT GOING ON THIS BUFFER
   3897					;
   3898	011744				20$:
   3899	011744	010062 	000000G			MOV	R0,LPTHD(R2)	;;STORE START OF THREAD
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  PAGE 43-1
..PTLP	(PUT BLOCK IN THREADED OUTPUT LIST)

   3900	011750	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;;TELL LP TASK TO START LP GOING
   3901	011756					CALL	..DSEV		;; WITH A SIGNIFICANT EVENT
	011756	004737 	000000G			JSR	PC,..DSEV
   3902					;
   3903					; ALL DONE
   3904					;
   3905	011762				90$:
   3906	011762					.ENB0			;RE-ENABLE IRPS
	011762	004737 	000000G			JSR	PC,..ENB0
   3907	011766					RESTORE			;RESTORE SAVED REGISTERS
	011766	012603 				MOV	(SP)+,R3
	011770	012601 				MOV	(SP)+,R1
   3908	011772					RETURN			;RETURN FROM ..PTLP
	011772	000207 				RTS	PC
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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	011774				..DOL1::
   3940	011774	032712 	001000 			BIT	#LP.LIP,(R2)	;;;LOAD SUPPOSED TO BE IN PROGRESS?
   3941	012000	001020 				BNE	19$		;;;YES-- GO BACK TO TASK
   3942	012002	032712 	010000 			BIT	#LP.MCH,(R2)	;;;MULTI-CHARACTER OPERATION?
   3943	012006	001417 				BEQ	20$		;;;NO-- GET NEXT BUFFER
   3944									;;;YES-- GET (CONTINUE) CURRENT BUFFER
   3945	012010				..DOLP::
   3946	012010				10$:
   3947	012010	042712 	114000 			BIC	#LP.WAT!LP.MCH!LP.HNG,(R2) ;;;NOT WAITING, AND NOT MULTI-CHAR-ING
   3948	012014	010062 	000000G			MOV	R0,LPITH(R2)	;;;SAVE CURRENT BUFFER AS OUR INT-LEVEL BUFFER
   3949	012020	001463 				BEQ	90$		;;;GIVE UP IF END
   3950	012022	016063 	000000G	000006 		MOV	T.HCBC(R0),LPBCTR(R3) ;;;SAVE BYTE COUNT FOR LP (WILL NEG LATER)
   3951	012030	003020 				BGT	50$		;;;NOT DONE-- START OUTPUT
   3952					;
   3953	012032	032760 	036000 	000000G		BIT	#TB.SFN,T.HCBC(R0) ;;;SPECIAL FUNCTION?
   3954	012040	001402 				BEQ	20$		;;;NO-- JUST SET DONE
   3955	012042				19$:
   3956	012042	005000 				CLR	R0		;;;YES-- DON'T GET NEXT THREAD BLOCK
   3957	012044	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	012046				20$:
   3963	012046	012760 	100001 	000000G		MOV	#TB.DON!<IS.SUC&LOBYTE>,T.HCBC(R0) ;;;NOTE SUCCESS HERE
   3964	012054	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 19:04  PAGE 44-1
..DOLP	(INITIATE LP-20 TRANSFER)

   3967					;
   3968	012056				30$:
   3969	012056	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;;;SET LP I/O DONE EVENT FLAGE
   3970	012064					CALL	..DSEV		;;;MAKE A SIGNIFICANT EVENT
	012064	004737 	000000G			JSR	PC,..DSEV
   3971	012070	000747 				BR	10$		;;;DO NEXT BUFFER
   3972					;
   3973					; SET UP -VE BYTE COUNT AND EXTENDED MEMORY ADDRESS BITS
   3974					;
   3975	012072				50$:
   3976	012072	016063 	000000G	000004 		MOV	T.HCAD(R0),LPBSAD(R3) ;;;SAVE PHYSICAL ADDR FOR LP
   3977	012100	005463 	000006 			NEG	LPBCTR(R3)	;;;MAKE -VE # BYTES TO SEND
   3978	012104	042713 	000060 			BIC	#BUSA17+BUSA16,(R3) ;;;CLEAR EXTENDED MEMORY ADDR BITS
   3979	012110	005760 	000000G			TST	T.HBCT(R0)	;;;THIS QUEUE I/O REQUEST?
   3980	012114	001023 				BNE	59$		;;;NO-- ADDRESS IS IN LOW CORE
   3981	012116	116062 	177775 	000000G		MOVB	T.HVFC(R0),LPMCB(R2) ;;;SET TO PRINT VERTICAL FORMAT CHARACTER
   3982	012124	001415 				BEQ	58$		;;;NONE-- JUST START THE LP
   3983	012126	105060 	177775 			CLRB	T.HVFC(R0)	;;;YES-- CLEAR IT NOW
   3984	012132	012763 	000000G	000004 		MOV	#LPMCB,LPBSAD(R3) ;;;YES-- POINT TO THE FORMAT CHARACTER
   3985	012140	060263 	000004 			ADD	R2,LPBSAD(R3)	;;; FOR THIS LP
   3986	012144	012763 	177777 	000006 		MOV	#-1,LPBCTR(R3)	;;;ONLY 1 CHARACTER
   3987	012152	052712 	010000 			BIS	#LP.MCH,(R2)	;;;NOTE THAT WE ARE WORKING FROM LPMCB
   3988	012156	000402 				BR	59$		;;;START THE LP GOING
   3989					;
   3990	012160				58$:
   3991	012160	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	012164				59$:
   3996	012164	052713 	000103 			BIS	#INTENB+PARENB+GO,(R3) ;;;START LP GOING
   3997					;
   3998					; ALL DONE-- RETURN
   3999					;
   4000	012170				90$:
   4001	012170					RETURN			;;;RETURN FROM ..DOLP/..DOL1
	012170	000207 				RTS	PC
   4002						.DSABLE	LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1113  03-APR-86 19:04  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 19:04  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	012172					$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 19:04  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 19:04  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 19:04  PAGE 49
COMMON DATABASE DEFINITIONS

   4130						.SBTTL	COMMON DATABASE DEFINITIONS
   4131					;
   4132					;
   4133					; CR TASK STACK HEADER
   4134					;
   4135	012172				CRHD::	.STKM	0,0,0,0,0,0,0,CRINI,174000,CRSTK
	012240	000000 	000000 	000000 		.WORD	0,0,0,0
	012246	000000
	012266	174000 	012554'	012452'		.WORD	174000,CRINI,CRSTK
	012322	000005 				.WORD	5
	012324	000000G				.WORD	TTPEN
	012326	000000 				.WORD	0
	012330	000000 				.WORD	0
	012332	000000 				.WORD	0
	012334	000000 				.WORD	0
	012336	000000 				.WORD	0
	012340	000000 				.WORD	0
	012342	000000 				.WORD	0
	012344	000000 				.WORD	0
	012346	000000 				.WORD	0
	012350	000000 				.WORD	0
	012452	000000 				.WORD	0
	012454	000000 				.WORD	0
	012456	000000 				.WORD	0
	012460	000000 				.WORD	0
	012462	000000 				.WORD	0
	012464	000000 				.WORD	0
	012466	012554'				.WORD	CRINI
	012470	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	012472				CRMRKT:	MRKT$	E.FCRC,10.*.CYLTM,10.*.CYLTM ;MARK-TIME REQUEST FOR 10 SECONDS
	012472	   027 	   005 			.BYTE	23.,5
	012474	000001 				.WORD	E.FCRC
	012476	001130 				.WORD	10.*.CYLTM
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 19:04  PAGE 49-1
COMMON DATABASE DEFINITIONS

	012500	001130 				.WORD	10.*.CYLTM
	012502	000000 				.WORD
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 19:04  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 19:04  PAGE 51
TASK INITIALIZATION

   4197						.SBTTL	TASK INITIALIZATION
   4198					;
   4199					; SST VECTOR TABLE
   4200					;
   4201	012504	012506'			CRSSTV:	.WORD	CRTRP4		;WHERE TO GO ON TRAP TO 4
   4202					;
   4203					; HERE ON TRAP TO 4, HOPEFULLY JUST NON-EX CR
   4204					;
   4205	012506	021627 	013222'		CRTRP4:	CMP	(SP),#CRDINT	;FROM MARK-TIME?
   4206	012512	001404 				BEQ	10$		;YES-- OK
   4207	012514	021627 	013752'			CMP	(SP),#CRDCLR	;OR FROM INIT?
   4208	012520	001401 				BEQ	10$		;YES-- ALSO OK
   4209	012522	000004 				IOT			;***** NO, NOT OUR T04 *****
   4210					;
   4211	012524	005037 	000000G		10$:	CLR	CREXP		; [5.1566] CLEAR THE EXTERNAL PAGE ADDRESS
   4212	012530	052737 	001000 	000000G		BIS	#CR.NXD,CRSTS	;SAY NON-EX CR
   4213	012536	052766 	000001 	000002 		BIS	#BIT0,2(SP)	;SET THE CARRY TO THE SST
   4214	012544	000002 				RTI			;RETURN TO INTERRPUTED ROUTINE
   4215					;
   4216					; HERE ON POWER-UP AST
   4217					;
   4218	012546				CRPWUP:	CALL	INITCR		;RESET THE CR
	012546	004737 	013736'			JSR	PC,INITCR
   4219	012552	000002 				RTI			;RETURN FROM AST
   4220					;
   4221					; HERE TO START CR TASK
   4222					;
   4223	012554	013737 	000000G	000000G	CRINI:	MOV	.CRTSK,CREVFG	;GET ADDRESS OF OUR TASK'S ENTRY
   4224	012562	062737 	000020 	000000G		ADD	#A.EF,CREVFG	;MAKE THAT ADDRESS OF OUR EVENT FLAGS
   4225	012570	052777 	000014 	000000G		BIS	#EF.CRB!EF.CRS,@CREVFG ;SAY OUR BUFFERS ARE AVAILABLE
   4226	012576					DIR$	#CRMRKT		;SETUP FOR 10-SECOND MARK-TIME'S
	012576	012746 	012472'			MOV	#CRMRKT,-(SP)
	012602	104375 				EMT	375
   4227	012604					SVTK$S	#CRSSTV,#1	;SETUP FOR TRAP-TO-4 RECOGNITION
	012604	012746 	000001 			MOV	#1,-(SP)
	012610	012746 	012504'			MOV	#CRSSTV,-(SP)
	012614	012746 				MOV	(PC)+,-(SP)
	012616	   071 	   003 			.BYTE	57.,3
	012620	104375 				EMT	375
   4228	012622					SPRA$S	#CRPWUP		;SETUP FOR POWER-UP AST
	012622	012746 	012546'			MOV	#CRPWUP,-(SP)
	012626	012746 				MOV	(PC)+,-(SP)
	012630	   155 	   002 			.BYTE	109.,2
	012632	104375 				EMT	375
   4229	012634					CALL	INITCR		;INITIALIZE CD-11 AND TABLES
	012634	004737 	013736'			JSR	PC,INITCR
   4230					;	BR	CRLOOP		;FALL INTO PROCESSING LOOP
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 19:04  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	012640				CRLOOP:	WTLO$S	1,#EF.CRC!EF.CRD ;WAIT FOR FLAGS
	012640	012746 	000003 			MOV	#EF.CRC!EF.CRD,-(SP)
	012644	012746 	000001 			MOV	#1,-(SP)
	012650	012746 				MOV	(PC)+,-(SP)
	012652	   053 	   003 			.BYTE	43.,3
	012654	104375 				EMT	375
   4237					;
   4238	012656					.INH			;;;A FLAG WAS SET-- LOCK OUT INTERRUPTS
	012656	013746 	177776 			MOV	PS,-(SP)
	012662	112737 	000340 	177776 		MOVB	#PR7,@#PS	;;
   4239	012670	017737 	000000G	000000G		MOV	@CREVFG,CRCEVF	;;;GET OUR CURRENT EVENT FLAGS
   4240	012676	042777 	000003 	000000G		BIC	#EF.CRC!EF.CRD,@CREVFG ;;;CLEAR THE FLAGS WE WAITED FOR
   4241	012704					.ENB			;INTERRUPTS: ON!
	012704	012637 	177776 			MOV	(SP)+,@#PS	;;
   4242	012710	005737 	000000G			TST	.CRPFL		;POWER FAIL?
   4243	012714	001404 				BEQ	10$		;NO -- FORGET IT
   4244	012716					CALL	INITCR		;YES -- INIT CR
	012716	004737 	013736'			JSR	PC,INITCR
   4245	012722	005037 	000000G			CLR	.CRPFL
   4246	012726				10$:
   4247					;
   4248					; SEE IF THIS IS EF.CRD (I/O DONE), AND FIND OUT WHY IT WAS SET.
   4249					;
   4250	012726	032737 	000002 	000000G	CRIOD:	BIT	#EF.CRD,CRCEVF	;THIS EF.CRD?
   4251	012734	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	012736	032737 	010000 	000000G		BIT	#CR.IOD,CRSTS	;WE FINISH A TRANSFER?
   4256	012744	001430 				BEQ	20$		;NO-- GO ON
   4257	012746	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	012752	105040 				CLRB	-(R0)		;HIGH BYTE HEADER: UNIT # (ALWAYS 0)
   4267	012754	112740 	000000G			MOVB	#CRBFLN,-(R0)	;LOW BYTE HEADER: SIZE OF BUFFER
   4268	012760	012701 	100000G			MOV	#BIT15+BC.STR,R1 ;FUNCTION CODE: STRING DATA (INDIRECT FLAVOR)
   4269	012764	012702 	000004 			MOV	#E.FCRB,R2	;EVENT FLAG TO SET WHEN DONE
   4270	012770	012703 	000000G			MOV	#D.CCDR,R3	;DEVICE CODE: CDR
   4271	012774	042777 	000010 	000000G		BIC	#EF.CRB,@CREVFG	;ASSUME SUCCESS
   4272	013002					CALL	..STIN		;SEND TO -10
	013002	004737 	000000G			JSR	PC,..STIN
   4273	013006	103404 				BCS	10$		;GIVE UP-- PRIMARY PROTOCOL (DDT)
   4274	013010	042737 	112400 	000000G		BIC	#CR.IOD!CR.HNG!CR.RHN!CR.NSF,CRSTS ;OK-- NO LONGER BUFFER TO SEND
   4275	013016	000403 				BR	20$		;GO ON
   4276					;
   4277	013020	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 19:04  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	013026	032737 	040000 	000000G	20$:	BIT	#CR.SST,CRSTS	;TIME TO SEND DEVICE STATUS?
   4283	013034	001402 				BEQ	30$		;NO-- GO ON
   4284	013036					CALL	SSTSCR		;YES-- SEND SUCH TO -10
	013036	004737 	013332'			JSR	PC,SSTSCR
   4285					;
   4286					; SEE IF -10 WANTS US TO READ NEXT CARD, BY CR.ACK SET.
   4287					;
   4288	013042	032737 	004000 	000000G	30$:	BIT	#CR.ACK,CRSTS	;-10 WANT A CARD?
   4289	013050	001450 				BEQ	90$		;NO-- ALL DONE
   4290	013052	032737 	030000 	000000G		BIT	#CR.IOP!CR.IOD,CRSTS ;STILL I/O IN PROGRESS?
   4291	013060	001044 				BNE	90$		;YES-- COME BACK LATER WHEN WE ARE DONE
   4292	013062	042737 	106000 	000000G		BIC	#CR.ACK!CR.HNG!CR.RHN,CRSTS ;YES-- NO LONGER WANTING
   4293	013070	032737 	001000 	000000G		BIT	#CR.NXD,CRSTS	;THIS NON-EX CD-11?
   4294	013076	001016 				BNE	32$		;YES-- JUST SEND STATUS
   4295	013100	032777 	000010 	000000G	34$:	BIT	#EF.CRB,@CREVFG	;BUFFER AVAILABLE TO US YET?
   4296	013106	001006 				BNE	31$		;YES-- ALL OK
   4297	013110					WSIG$S			;WAIT FOR SOMETHING TO HAPPEN
	013110	012746 				MOV	(PC)+,-(SP)
	013112	   061 	   001 			.BYTE	49.,1
	013114	104375 				EMT	375
   4298	013116	005737 	000002G			TST	.COMEF+2	; [4.1.1105] IS PRIMARY PROTOCOL STILL RUNNING ?
   4299	013122	100766 				BMI	34$		; [4.1.1105] YES, SEE IF BUFFER IS NOW FREE.
   4300					;
   4301	013124	032737 	010000 	000000G	31$:	BIT	#CDSOFL,@#CDST	;CD-11 OFF-LINE?
   4302	013132	001403 				BEQ	33$		;NO-- LET'S START TRANSFER
   4303	013134				32$:	CALL	SSTSCR		;YES-- TELL -10
	013134	004737 	013332'			JSR	PC,SSTSCR
   4304	013140	000414 				BR	90$		; AND GO AWAY FOR NOW
   4305					;
   4306					; START TRNSFER OF CARD TO CRBUFF
   4307					;
   4308	013142	052737 	020000 	000000G	33$:	BIS	#CR.IOP,CRSTS	;SAY I/O NOW IN PROGRESS
   4309	013150	012737 	000000C	000000G		MOV	#-<CRBFLN/2>,@#CDCC ;INDICATE TO READ 80. COLUMNS
   4310	013156	012737 	000000G	000000G		MOV	#CRBUFF,@#CDBA	; INTO CRBUFF
   4311	013164	012737 	000101 	000000G		MOV	#CDSIEN!CDSRED,@#CDST ;START CARD GOING
   4312					;
   4313					; ALL DONE WITH EF.CRD
   4314					;
   4315	013172				90$:
   4316					;
   4317					; CHECK FOR MARK-TIME REQUEST (EF.CRC SET), THEN DO HUNG CHECK IF SO.
   4318					;
   4319						.ENABLE LSB
   4320	013172	032737 	000001 	000000G	CRMKT:	BIT	#EF.CRC,CRCEVF	;MARK-TIME REQUEST EVENT FLAG SET?
   4321	013200	001452 				BEQ	90$		;NO-- GO ON
   4322	013202	032737 	001000 	000000G		BIT	#CR.NXD,CRSTS	;NON-EX CR?
   4323	013210	001011 				BNE	9$		;YES-- SKIP INT-ENB STUFF
   4324	013212	000241 				CLC			;IN CASE OF TRAP
   4325	013214	032737 	000100 	000000G		BIT	#CDSIEN,@#CDST	;INT-ENB STILL SET?
   4326	013222	103404 			CRDINT:	BCS	9$		;NON-EX CR-- GO ON
   4327	013224	001003 				BNE	9$		;YES-- SKIP THE SET
   4328	013226	052737 	000100 	000000G		BIS	#CDSIEN,@#CDST	;YES-- MAKE SURE WE STILL HAVE INT-ENB
   4329	013234	032737 	074000 	000000G	9$:	BIT	#CR.SST!CR.IOD!CR.ACK!CR.IOP,CRSTS ;YES-- STUFF FOR US TO DO?
   4330	013242	001426 				BEQ	30$		;NO-- IDLE-- CLEAR HUNG FLAG
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 19:04  PAGE 52-2
CRLOOP (MAIN PROCESSING LOOP)

   4331	013244	032737 	100000 	000000G		BIT	#CR.HNG,CRSTS	;WE BEEN HERE WITHIN 10 SECONDS?
   4332	013252	001416 				BEQ	20$		;NO-- SET HUNG FLAG SO WE WILL IN 10 SEC
   4333	013254	032737 	020000 	000000G		BIT	#CR.IOP,CRSTS	;YES-- WAS I/O IN PROGRESS
   4334	013262	001407 				BEQ	10$		;NO-- JUST PROCESS OTHER FLAGS
   4335	013264	052737 	042000 	000000G		BIS	#CR.RHN!CR.SST,CRSTS ;YES-- SAY READER HUNG
   4336	013272	005237 	000000G			INC	CRHUNG		;COUNT # TIMES HUNG
   4337	013276					CALL	INITCR		;RESET THE CD-11
	013276	004737 	013736'			JSR	PC,INITCR
   4338					;
   4339	013302	052777 	000002 	000000G	10$:	BIS	#EF.CRD,@CREVFG	;SAY TO LOOK AT THE FLAGS AGAIN
   4340					;
   4341	013310	052737 	100000 	000000G	20$:	BIS	#CR.HNG,CRSTS	;FLAG TO CHECK THIS AGAIN IN 10 SECONDS
   4342	013316	000403 				BR	90$		;ALL DONE
   4343					;
   4344	013320	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	013326	000137 	012640'		90$:	JMP	CRLOOP		;BACK TO MAIN LOOP
   4349						.DSABLE	LSB
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 19:04  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	013332	042737 	040000 	000000G	SSTSCR:	BIC	#CR.SST,CRSTS	;SAY STATUS SENT ALREADY
   4390	013340	032777 	000004 	000000G	60$:	BIT	#EF.CRS,@CREVFG	;IS STATUS BUFFER AVAILABLE?
   4391	013346	001006 				BNE	10$		;YES-- ASSEMBLE STATUS
   4392	013350					WSIG$S			;NO-- WAIT FOR IT TO BE THERE
	013350	012746 				MOV	(PC)+,-(SP)
	013352	   061 	   001 			.BYTE	49.,1
	013354	104375 				EMT	375
   4393	013356	005737 	000002G			TST	.COMEF+2	; [4.1.1105] IF PRIMARY PROTOCOL IS STILL RUNNING
   4394	013362	100766 				BMI	60$		; [4.1.1105] THEN CHECK IF STILL GOING
   4395					;
   4396					; ASSEMBLE STATUS INTO CRSTBK+0 CRSTBK+2
   4397					;
   4398	013364	012700 	000004G		10$:	MOV	#CRSTBK+4,R0	;GET ADDRESS OF STATUS BLOCK
   4399	013370	005010 				CLR	(R0)		;CLEAR BYTE COUNT WORD(ASSUME NON-EX DEV)
   4400	013372	005040 				CLR	-(R0)		; AND SECOND WORD OF STATUS
   4401	013374	010001 				MOV	R0,R1		;SAVE ADDR OF SECOND WORD
   4402	013376	005040 				CLR	-(R0)		; AND CLEAR FIRST WORD, R0 POINTS TO IT
   4403					;
   4404	013400	032737 	001000 	000000G		BIT	#CR.NXD,CRSTS	;NON-EX DEVICE?
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 19:04  PAGE 53-1
SSTSCR	(SEND CD-11 STATUS TO -10)

   4405	013406	001403 				BEQ	101$		;NO-- GET REAL STATUS
   4406	013410	052710 	000007 			BIS	#DV.NXD!DV.OFL!DV.OIR,(R0) ;YES-- SAY NOT THERE
   4407	013414	000522 				BR	50$		;SEND THIS STATUS
   4408					;
   4409	013416	013703 	000000G		101$:	MOV	@#CDST,R3	;COPY DEVICE STATUS
   4410	013422	032703 	010000 			BIT	#CDSOFL,R3	;CD-11 OFF-LINE?
   4411	013426	001402 				BEQ	11$		;NO-- GO ON
   4412	013430	052710 	000006 			BIS	#DV.OFL!DV.OIR,(R0) ;YES-- SAY SO
   4413					;
   4414	013434	032737 	030000 	000000G	11$:	BIT	#CR.IOP!CR.IOD,CRSTS ;I/O STILL IN PROGRESS?
   4415	013442	001402 				BEQ	12$		;NO
   4416	013444	052710 	000020 			BIS	#DV.IOP,(R0)	;YES-- SAY SO
   4417					;
   4418	013450	032703 	020000 		12$:	BIT	#CDSEOF,R3	;E-O-F BUTTON PUSHED?
   4419	013454	001402 				BEQ	13$		;NO-- GO ON
   4420	013456	052710 	000040 			BIS	#DV.EOF,(R0)	;YES-- SAY EOF
   4421					;
   4422	013462	032737 	002000 	000000G	13$:	BIT	#CR.RHN,CRSTS	;READER HUNG?
   4423	013470	001402 				BEQ	14$		;NO-- GO ON
   4424	013472	052710 	001104 			BIS	#DV.HNG!DV.OIR!DV.LOG,(R0) ;YES-- SAY HUNG
   4425					;
   4426	013476	032703 	003000 		14$:	BIT	#CDSDLT!CDSNXM,R3 ;FATAL ERROR (DATA LATE, NXM)?
   4427	013502	001402 				BEQ	15$		;NO-- GO ON
   4428	013504	052710 	000300 			BIS	#DV.URE!DV.LOG,(R0) ;YES-- SAY SO
   4429					;
   4430	013510	032703 	000200 		15$:	BIT	#CDSRDY,R3	;BUT IS READER READY?
   4431	013514	001451 				BEQ	30$		;NO-- BITS ARE NOT VALID-- GO ON
   4432					;
   4433	013516	013704 	000000G			MOV	@#CDDB,R4	;YES-- GET ERROR BITS TO R4
   4434					;
   4435	013522	032704 	040000 			BIT	#CDBRCK,R4	;READ (PHOTO) CHECK?
   4436	013526	001402 				BEQ	16$		;NO
   4437	013530	052711 	000001 			BIS	#DD.RCK,(R1)	;YES
   4438					;
   4439	013534	032704 	020000 		16$:	BIT	#CDBPCK,R4	;PICK CHECK?
   4440	013540	001402 				BEQ	17$		;NO
   4441	013542	052711 	000002 			BIS	#DD.PCK,(R1)	;YES
   4442					;
   4443	013546	032704 	010000 		17$:	BIT	#CDBSCK,R4	;STACK CHECK?
   4444	013552	001402 				BEQ	18$		;NO
   4445	013554	052711 	000004 			BIS	#DD.SCK,(R1)	;YES
   4446					;
   4447	013560	005711 			18$:	TST	(R1)		;FATAL ERRROR DETECTED?
   4448	013562	001402 				BEQ	19$		;NO-- GO ON
   4449	013564	052710 	000100 			BIS	#DV.LOG,(R0)	;YES-- SAY ERROR LOGGING NEEDED
   4450					;
   4451	013570	032703 	000004 		19$:	BIT	#CDSHEM,R3	;HOPPER EMPTY?
   4452	013574	001402 				BEQ	20$		;NO-- GO ON
   4453	013576	052711 	000010 			BIS	#DD.HEM,(R1)	;YES
   4454					;
   4455	013602	005711 			20$:	TST	(R1)		;ANY ERROR BITS SET?
   4456	013604	001012 				BNE	21$		;YES-- NOT STACKER FULL
   4457	013606	032703 	040000 			BIT	#CDSRCK,R3	;IS THIS A READER CHECK?
   4458	013612	001412 				BEQ	23$		;NO-- CERTAINLY NOT STACKER FULL
   4459	013614	032737 	000400 	000000G		BIT	#CR.NSF,CRSTS	;WE DECIDE IT WASN'T STACKER FULL BEFORE?
   4460	013622	001006 				BNE	23$		;YES-- CAN'T BE STACKER FULL NOW
   4461	013624	052711 	000020 			BIS	#DD.SFL,(R1)	;NO-- READER CHECK & NO ERRORS => STACKER FULL
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 19:04  PAGE 53-2
SSTSCR	(SEND CD-11 STATUS TO -10)

   4462	013630	000403 				BR	22$		;STACKER-FULL-- GO ON
   4463					;
   4464	013632	052737 	000400 	000000G	21$:	BIS	#CR.NSF,CRSTS	;FLAG THAT IT CAN'T BE STACKER FULL
   4465	013640				22$:
   4466	013640				23$:
   4467	013640	012703 	000000G		30$:	MOV	#CDST,R3	;ADDRESS CD CSR
   4468	013644	005721 				TST	(R1)+		;POINT TO FIRST WORD OF DEVICE REGISTERS IN STATUS BLOCK
   4469	013646	012721 	000000C			MOV	#<CDDB+2-CDST>,(R1)+ ;SAVE SIZE OF FOLLOWING BLOCK
   4470	013652	012321 			31$:	MOV	(R3)+,(R1)+	;MOVE A REGISTER
   4471	013654	022701 	000000C			CMP	#CRSTBK+CRSTLN,R1 ;MOVED 'EM ALL?
   4472	013660	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	013662	105040 			50$:	CLRB	-(R0)		;HIGH BYTE HEADER: UNIT # (ALWAYS 0)
   4482	013664	112740 	000000G			MOVB	#CRSTLN,-(R0)	;LOW BYTE: BYTE COUNT OF BLOCK (NOT INCLUDING HEADER)
   4483	013670	012701 	100000G			MOV	#BIT15+BC.HDS,R1 ;FUNCTION: HERE IS DEVICE STATUS (INDIRECT FLAVOR)
   4484	013674	012702 	000003 			MOV	#E.FCRS,R2	;EVENT FLAG TO SET WHEN DONE
   4485	013700	012703 	000000G			MOV	#D.CCDR,R3	;DEVICE CODE: CDR (OF COURSE)
   4486	013704	042777 	000004 	000000G		BIC	#EF.CRS,@CREVFG	;CLEAR BUFFER AVAILABLE FLAG
   4487	013712					CALL	..STIN		;SEND TO -10
	013712	004737 	000000G			JSR	PC,..STIN
   4488	013716	103006 				BCC	90$		;OK-- DONE
   4489	013720	052777 	000004 	000000G		BIS	#EF.CRS,@CREVFG	;FAILED-- BUFFER STILL AVAILABLE
   4490	013726	052737 	040000 	000000G		BIS	#CR.SST,CRSTS	;ERROR-- TRY AGAIN LATER
   4491					;
   4492					; ALL DONE
   4493					;
   4494	013734				90$:	RETURN			;ALL DONE FORM SSTSCR
	013734	000207 				RTS	PC
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 19:04  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	013736	042737 	021000 	000000G	INITCR::BIC	#CR.IOP!CR.NXD,CRSTS ;NO LONGER I/O IN PROGRESS, ASSUME DEVICE EXISTS
   4506	013744	012737 	000400 	000000G		MOV	#CDSPWC,@#CDST	;DO POWER-CLEAR
   4507	013752	052777 	000001 	000000G	CRDCLR:	BIS	#EF.CRC,@CREVFG	;FORCE HUNG CHECK
   4508	013760					RETURN
	013760	000207 				RTS	PC
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 19:04  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 19:04  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	013762	105737 	000000G		$CDINT:: TSTB	@#CDST		;;;CD-11 READY?
   4560	013766	100026 				BPL	90$		;;;NO-- JUST GO AWAY
   4561	013770	032737 	020000 	000000G		BIT	#CR.IOP,CRSTS	;;;YES-- WERE WE I/O IN PROGRESS (READING)?
   4562	013776	001415 				BEQ	10$		;;;NO-- GO ON (SEE IF ERROR)
   4563	014000	042737 	020000 	000000G		BIC	#CR.IOP,CRSTS	;;;YES-- MUST BE DONE NOW
   4564	014006	005737 	000000G			TST	@#CDST		;;;[**]
   4565	014012	100407 				BMI	10$		;;;[**]
   4566	014014	005737 	000000G			TST	@#CDCC		;;;DID WE READ A CARD?
   4567	014020	001004 				BNE	10$		;;;NO-- MUST BE ERROR-- SEND STATUS NOW
   4568	014022	052737 	010000 	000000G		BIS	#CR.IOD,CRSTS	;;;SO MAKE TASK KNOW WE ARE DONE
   4569					;
   4570	014030	000403 				BR	20$		;;;[**]
   4571					;
   4572	014032	052737 	040000 	000000G	10$:	BIS	#CR.SST,CRSTS	;;;YES-- SEND DEVICE STATUS
   4573	014040				20$:	CALL	IODNCR		;;;SAY I/O DONE TO TASK
	014040	004737 	014130'			JSR	PC,IODNCR
   4574					;
   4575					; ALL DONE WITH INTERRUPT
   4576					;
   4577	014044	000137 	000000G		90$:	JMP	..INTX		;;;FINISH OFF INTERRUPT
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 19:04  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	014050				..STCR::
   4602	014050					CALL	..DECN		;DE-ALLOCATE BLOCK
	014050	004737 	000000G			JSR	PC,..DECN
   4603	014054	020227 	000000G			CMP	R2,#CRTBL+0	;THIS CR0?
   4604	014060	001030 				BNE	99$		;NO-- GO AWAY
   4605	014062	052737 	040000 	000000G		BIS	#CR.SST,CRSTS	;YES-- MAKE STATUS HAPPEN
   4606	014070	000417 				BR	IODNCR		; AND MAKE TASK RECOGNIZE IT
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 19:04  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	014072	020227 	000000G		..SPCR:: CMP	R2,#CRTBL+0	;THIS CR0?????
   4626	014076	001021 				BNE	99$		;NO-- GO AWAY
   4627	014100					CALL	INITCR		;RESET THE CD-11
	014100	004737 	013736'			JSR	PC,INITCR
   4628	014104	042737 	034000 	000000G		BIC	#CR.ACK!CR.IOD!CR.IOP,CRSTS ;SAY WE ARE HAPPY
   4629	014112					RETURN
	014112	000207 				RTS	PC
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 19:04  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	014114	020227 	000000G		..AKCR:: CMP	R2,#CRTBL+0	;IS THIS CR0???
   4648	014120	001010 				BNE	99$		;NO-- GIVE UP
   4649	014122	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	014130	052777 	000002 	000000G	IODNCR:	BIS	#EF.CRD,@CREVFG	;SET EVENT FLAG
   4656	014136					CALL	..DSEV		; AND MAKE SIGN. EVENT TO WAKE TASK
	014136	004737 	000000G			JSR	PC,..DSEV
   4657	014142				99$:	RETURN			; FROM IODNCR
	014142	000207 				RTS	PC
   4658						.DSABLE	LSB
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1113  03-APR-86 19:04  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 19:04  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	014144					$DEF
   4717	014144					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 19:04  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 19:04  PAGE 62
TASK DATA

   4795						.SBTTL	TASK DATA
   4796					;
   4797					; TASK HEADER AND STACK
   4798					;
   4799	014144				INSHD::	.STKM	0,0,0,0,0,0,40,INSTAL,174000,INSTK
	014212	000000 	000000 	000000 		.WORD	0,0,0,0
	014220	000000
	014240	174000 	015074'	014424'		.WORD	174000,INSTAL,INSTK
	014274	000005 				.WORD	5
	014276	000000G				.WORD	TTPEN
	014300	000000 				.WORD	0
	014302	000000 				.WORD	0
	014304	000000 				.WORD	0
	014306	000000 				.WORD	0
	014310	000000 				.WORD	0
	014312	000000 				.WORD	0
	014314	000000 				.WORD	0
	014316	000000 				.WORD	0
	014320	000000 				.WORD	0
	014322	000000 				.WORD	0
	014424	000000 				.WORD	0
	014426	000000 				.WORD	0
	014430	000000 				.WORD	0
	014432	000000 				.WORD	0
	014434	000000 				.WORD	0
	014436	000000 				.WORD	0
	014440	015074'				.WORD	INSTAL
	014442	174000 				.WORD	174000
   4800					;
   4801	014444					.BLKW	40
   4802	014544				EXSP::
   4803					;
   4804					; LOCAL DATA
   4805					;
   4806	014544	   000 			DXFLAG:	.BYTE	0		; +++002 SECOND DX: MOUNT FLAG
   4807	014545	   000 			SYFLAG:	.BYTE	0		; +++002 SY: MOUNTED FLAG
   4808	014546				RCVBLK:	.BLKW	2		;RECEIVE DATA BUFFER: TRASH
   4809	014552				REQBLK:	.BLKW	13.		;REQUEST BLOCK FROM EXEC
   4810		014564'			STDADR=REQBLK+12		;ADDRESS OF OUR SYSTEM TASK DIRECTORY ENTRY
   4811	014604				PUDADR:	.BLKW	1		;PUD ENTRY ADDRESS OF DEVICE WHERE TASK FILE WAS FOUND
   4812	014606				LBLBLK:	.BLKW	1		;CURRENT VIRTUAL BLOCK NUMBER TO READ LABEL GROUP
   4813	014610				LBLNUM:	.BLKW	1		;NUMBER OF BLOCKS IN LABEL GROUP
   4814	014612				LBLBUF:	.BLKW	1		;ADDRESS OF LABEL BUFFER
   4815	014614				LBLBFE:	.BLKW	1		;ADDRESS OF END OF BUFFER (LBLBUF)+512.
   4816	014616				HDRBLK:	.BLKW	1		;CURRENT VIRTUAL BLOCK NUMBER TO READ HEADER
   4817	014620				HDRBUF:	.BLKW	1		;ADDRESS OF HEADER BLOCK BUFFER
   4818	014622				HDRBFE:	.BLKW	1		;ADDRESS OF END OF HEADER BUFFER
   4819	014624				FILBLK:	.BLKB	S.DRFN		;FILE-NAME BLOCK FOR TASK IMAGE FILE
   4820	014660				FILADR:	.BLKW	2		;STATISTISTICS BLOCK: DISK ADDRESS
   4821	014664				QIOSTS:	.BLKW	2		;I/O STATUS
   4822	014670				TYPBUF:	.BLKB	100.		;BUFFER FOR CTY OUTPUT
   4823					;
   4824					; PURE DATA
   4825					;
   4826	015034	   367 			ATCBLK:	.BYTE	-9.		;ATTIBUTE CONTROL: STATISTICS BLOCK, READ
   4827	015035	   004 				.BYTE	4.		;4 BYTES OF INFO
   4828	015036	014660'				.WORD	FILADR		;WHERE TO INFO TO
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 62-1
TASK DATA

   4829	015040	   000 	   000 			.BYTE	0,0		;END OF ATTRIBUTE CONTROL BLOCK
   4830					;
   4831	015042	   001 			MNTBLK:	.BYTE	1		;ACP CONTROL: MOUNT FUNCTION
   4832	015043	   001 				.BYTE	1		;STRING LENGTH: 1
   4833	015044	015046'				.WORD	1$		;ADDRESS OF STRING
   4834	015046	   072 			1$:	.ASCII	/:/
   4835						.EVEN
   4836					;
   4837					; DEVICE CONVERSION TABLE
   4838					;
   4839	015050	   124 	   111 	   124 	CNVTBL:	.ASCII	/TI//TT/
	015053	   124
   4840	015054	   103 	   117 	   124 		.ASCII	/CO//TT/
	015057	   124
   4841	015060	   103 	   111 	   124 		.ASCII	/CI//TT/
	015063	   124
   4842	015064	   103 	   114 	   114 		.ASCII	/CL//LP/
	015067	   120
   4843	015070	000000 	000000 			.WORD	0,0
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  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	015074				INSTAL::
   4865	015074	012706 	014544'			MOV	#EXSP,SP	;;ADD EXTRA STACK SPACE
   4866	015100					RCVX$S	,#RCVBLK	;;GET THE REQUEST OR EXIT IF NONE
	015100	012746 	014546'			MOV	#RCVBLK,-(SP)
	015104	005046 				CLR	-(SP)
	015106	005046 				CLR	-(SP)
	015110	012746 				MOV	(PC)+,-(SP)
	015112	   023 	   004 			.BYTE	19.,$$$T1
	015114	104375 				EMT	375
   4867	015116	103766 				BCS	INSTAL		;OOPS-- TRY AGAIN
   4868					;
   4869	015120					CALL	CLRBUF		; AND NO BUFFERS ALLOCATED
	015120	004737 	016670'			JSR	PC,CLRBUF
   4870	015124	105037 	014544'			CLRB	DXFLAG		; +++002 RESET THE RX01 FLAG
   4871					;
   4872					; SETUP TO LOOK ON DEVICE SY FOR THE TASK FIRST
   4873					;
   4874	015130	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	015134	012700 	054523 			MOV	#"SY,R0		; +++002 DEVICE NAME (U.DN) TO R0
   4877	015140	005001 				CLR	R1		; +++002 UNIT NUMBER (U.UN) TO R1
   4878					;
   4879	015142				MNTSYD:				; +++002
   4880	015142					ALUN$S	#TSKLUN,R0,R1	; +++002 ASSIGN DEVICE SY0 TO TASK LUN
	015142	010146 				MOV	R1,-(SP)
	015144	010046 				MOV	R0,-(SP)
	015146	012746 	000002 			MOV	#TSKLUN,-(SP)
	015152	012746 				MOV	(PC)+,-(SP)
	015154	   007 	   004 			.BYTE	7.,4
	015156	104375 				EMT	375
   4881	015160	103557 				BCS	TASKNF		;NO DICE-- JUST TRY PUD SCAN
   4882					;
   4883	015162	013704 	000000G			MOV	.CRTSK,R4	;GOT IT-- GET ADDRESS
   4884	015166	016404 	000000G			MOV	A.HA(R4),R4	; OF OUR HEADER TO
   4885	015172	016404 	000136 			MOV	H.LUN+<4*<TSKLUN-1>>+0(R4),R4 ; FIND PUD ADDRESS OF SY
   4886	015176	016404 	000000G			MOV	U.RP(R4),R4	; BUT GET THE REAL DEVICE PUD ENTRY
   4887	015202	010437 	014604'			MOV	R4,PUDADR	;SAVE THIS PUD ADDRESS IN CASE WE DO FIND THE TASK
   4888	015206	005764 	000000G			TST	U.VA(R4)	;IS SY MOUNTED?
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 63-1
FIND THE TASK FILE

   4889	015212	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	015214	012701 	014552'			MOV	#RCVBLK+4,R1	;GET A SCRATCH AREA
   4899	015220	012741 				MOV	(PC)+,-(R1)	;STORE
   4900	015222	003310 				 .RAD50	/ACP/		; THE NAME OF AN ACP
   4901	015224	016441 	000000G			MOV	U.DACP(R4),-(R1) ;  AND THE NAME OF THE ACP FOR THIS DEVICE
   4902	015230					CALL	..FSTD		;FIND THE STD ENTRY ADDRESS OF THE ACP
	015230	004737 	000000G			JSR	PC,..FSTD
   4903	015234	010264 	000000G			MOV	R2,U.ACP(R4)	;STORE THE STD ADDRESS OF THE ACP
   4904					;
   4905	015240	012700 	014010 			MOV	#IO.APV,R0	;SET TO DO PRIVILEGED ACP CONTROL
   4906	015244	005001 				CLR	R1		;NO FILE-ID
   4907	015246	012702 	015042'			MOV	#MNTBLK,R2	;ACP CONTROL FUNCTION BLOCK TO MOUNT
   4908	015252	005003 				CLR	R3		;NO ACCESS
   4909	015254	005004 				CLR	R4		;NO FILE-NAME BLOCK
   4910	015256					CALL	FILQIO		;DO A MOUNT ON SY
	015256	004737 	017170'			JSR	PC,FILQIO
   4911	015262	103005 				BCC	SYMNTD		;SUCCESS-- SAY WE DID THE MOUNT SO WE DON'T SCARE ANYBODY
   4912	015264					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
	015264	012746 	000000'			MOV	#$$$,-(SP)
	015270	004737 	017250'			JSR	PC,TYPMSG
   4913	015274	000511 				BR	TASKNF		;CERTAINLY NOT FOUND
   4914					;
   4915	015276				SYMNTD:
   4916	015276	013704 	014604'			MOV	PUDADR,R4	; +++002 PUD ADDRESS TO R4
   4917	015302	016400 	000000G			MOV	U.DN(R4),R0	; +++002 DEVICE NAME TO R0
   4918	015306	016401 	000000G			MOV	U.UN(R4),R1	; +++002 UNIT NUMBER TO R1
   4919	015312	022700 	054104 			CMP	#"DX,R0		; +++002 DID WE TRY TO MOUNT A FLOPPY??
   4920	015316	001011 				BNE	SYMNT1		; +++002 NO -- GO ON
   4921	015320	105737 	014544'			TSTB	DXFLAG		; +++002 YES -- HAVE WE DONE BOTH??
   4922	015324	001006 				BNE	SYMNT1		; +++002 YES -- GO ON
   4923	015326	105237 	014544'			INCB	DXFLAG		; +++002 NO -- MARK SECOND TIME AROUND
   4924	015332	005201 				INC	R1		; +++002 SET UP FOR "OTHER" FLOPPY
   4925	015334	042701 	177776 			BIC	#^C1,R1		; +++002 SO
   4926	015340	000700 				BR	MNTSYD		; +++002 AND DO IT...
   4927						;
   4928	015342				SYMNT1:				; +++002
   4929	015342	105737 	014545'			TSTB	SYFLAG		; +++002 SY: ALREADY MOUNTED??
   4930	015346	001006 				BNE	FNDFIL		; +++002 YES -- GO ON
   4931	015350					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 19:04  PAGE 63-2
FIND THE TASK FILE

	015350	012746 	000020'			MOV	#$$$,-(SP)
	015354	004737 	017250'			JSR	PC,TYPMSG
   4932	015360	105237 	014545'			INCB	SYFLAG		; +++002 MARK MOUNT DONE
   4933					;
   4934					; SET UP FILENAME BLOCK TO LOOK FOR [5,5] DIRECTORY IN MFD
   4935					;
   4936	015364				FNDFIL:
   4937	015364	012702 	014632'			MOV	#FILBLK+N.FNAM,R2 ;POINT TO FILE-NAME BLOCK
   4938	015370	012712 				MOV	(PC)+,(R2)	;SET FILENAME TO
   4939	015372	140123 				 .RAD50	/005/		; 005005
   4940	015374	012222 				MOV	(R2)+,(R2)+	;  BOTH HALVES
   4941	015376	005022 				CLR	(R2)+		;ONLY SIX CHARS
   4942	015400	012722 				MOV	(PC)+,(R2)+	;SET TYPE TO DIRECTORY
   4943	015402	015172 				 .RAD50	/DIR/		; FILE
   4944	015404	005022 				CLR	(R2)+		;VERSION, DON'T CARE
   4945	015406	005022 				CLR	(R2)+		;NO FLAGS
   4946	015410	005022 				CLR	(R2)+		;UNKOWN STUFF
   4947	015412	012712 	177777 			MOV	#-1,(R2)	;DIRECTORY ID:
   4948	015416	012222 				MOV	(R2)+,(R2)+	; (-1,-1) IS MFD
   4949	015420	012722 				MOV	(PC)+,(R2)+	;ALSO SET OWNER TO US
   4950	015422	   005 	   005 			 .BYTE	5,5		;THE UIC
   4951					;
   4952	015424					CALL	FILFNA		;LOOK UP DIRECTORY FOR [5,5]
	015424	004737 	017020'			JSR	PC,FILFNA
   4953	015430	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	015432	012701 	014552'			MOV	#REQBLK,R1	;ADDRESS REQUEST BLOCK
   4958	015436	012702 	014632'			MOV	#FILBLK+N.FNAM,R2 ; AND FILE-NAME BLOCK FOR LOOKUP
   4959	015442	021127 				CMP	(R1),(PC)+	;IS THIS
   4960	015444	131574 				 .RAD50	/.../		; AN MCR FUNCTION TASK?
   4961	015446	001004 				BNE	20$		;NO-- JUST LOOKUP THE TASK NAME
   4962	015450	005721 				TST	(R1)+		;YES-- SKIP THE DOTS
   4963	015452	012122 				MOV	(R1)+,(R2)+	;COPY THE LAST THREE CHARACTERS
   4964	015454	005022 				CLR	(R2)+		; AS THE WHOLE NAME
   4965	015456	000402 				BR	25$		;PROCEED.
   4966					;
   4967	015460				20$:
   4968	015460	012122 				MOV	(R1)+,(R2)+	;COPY TASK NAME
   4969	015462	012122 				MOV	(R1)+,(R2)+	; AS FILE NAME
   4970	015464				25$:
   4971	015464	005022 				CLR	(R2)+		;ONLY SIX CHARACTERS
   4972	015466	012722 				MOV	(PC)+,(R2)+	;SET FILE TYPE
   4973	015470	100003 				 .RAD50	/TSK/		; TO A TASK FILE
   4974	015472	005022 				CLR	(R2)+		;NO VERSION CARE
   4975	015474	005022 				CLR	(R2)+		;NO FLAGS
   4976	015476	005022 				CLR	(R2)+		;NO NOTHING
   4977	015500	012701 	014624'			MOV	#FILBLK+N.FID,R1 ;POINT TO FILE-ID OF DIRECTORY
   4978	015504	012122 				MOV	(R1)+,(R2)+	;COPY FILE-ID
   4979	015506	012122 				MOV	(R1)+,(R2)+	; SEQ #
   4980	015510	012122 				MOV	(R1)+,(R2)+	; OWNER
   4981					;
   4982					; DO A FIND FILE IN DIRECTORY FUNCTION TO GET FILE ID
   4983					;
   4984	015512					CALL	FILFNA		;FIND THE TASK (IF IT'S THERE)
	015512	004737 	017020'			JSR	PC,FILFNA
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 63-3
FIND THE TASK FILE

   4985	015516	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	015520				TASKNF:
   4991	015520	062705 	000050 			ADD	#U.SZ,R5	;BUMP TO NEXT PUD ENTRY
   4992	015524	020527 	000000G			CMP	R5,#.PUDEA	;ARE WE AT THE END OF THE PUD?
   4993	015530	103027 				BHIS	TNFERR		;YES-- TASK NOT FOUND
   4994	015532	026505 	000000G			CMP	U.RP(R5),R5	;THIS DEVICE REDIRECTED?
   4995	015536	001370 				BNE	TASKNF		;YES-- WE WILL FIND THE REAL DEVICE
   4996	015540	132765 	000000G	000000G		BITB	#UF.TL,U.FB(R5)	;TASK LOADS ALLOWED FROM THIS DEVICE?
   4997	015546	001764 				BEQ	TASKNF		;NO-- DON'T EVEN TRY
   4998	015550	005765 	000000G			TST	U.VA(R5)	;VOLUME MOUNTED?
   4999	015554	001761 				BEQ	TASKNF		;NO-- DON'T TRY TO FIND FILE
   5000					;
   5001	015556					ALUN$S	#TSKLUN,U.DN(R5),U.UN(R5) ;YES-- ASSIGN TH CURRENT DEVICE TO US
	015556	016546 	000000G			MOV	U.UN(R5),-(SP)
	015562	016546 	000000G			MOV	U.DN(R5),-(SP)
	015566	012746 	000002 			MOV	#TSKLUN,-(SP)
	015572	012746 				MOV	(PC)+,-(SP)
	015574	   007 	   004 			.BYTE	7.,4
	015576	104375 				EMT	375
   5002	015600	103747 				BCS	TASKNF		;THIS SHOULD REALLY NEVER HAPPN
   5003	015602	010537 	014604'			MOV	R5,PUDADR	;OK-- SAVE THIS PUD ADDRESS IN CASE WE FIND THE FILE
   5004	015606	000666 				BR	FNDFIL		;OK-- GO LOOK FOR THE TASK FILE
   5005					;
   5006	015610				TNFERR:
   5007	015610					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
	015610	012746 	000033'			MOV	#$$$,-(SP)
	015614	004737 	017250'			JSR	PC,TYPMSG
   5008	015620	000137 	016524'			JMP	RETNOD		;GIVE UP
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  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	015624	000137 	016510'		FILERA:	JMP	FILERR		;OOPS
   5015					;
   5016					; ONE OF THE NODE/BUFFER REQUESTS FAILED-- GIVE ALL OF THEM BACK AND WAIT
   5017					;
   5018	015630				BUFAIL:	CALL	RETBUF		;RETURN ALL BUFFERS
	015630	004737 	016634'			JSR	PC,RETBUF
   5019	015634					WSIG$S			;WAIT FOR FREE
	015634	012746 				MOV	(PC)+,-(SP)
	015636	   061 	   001 			.BYTE	49.,1
	015640	104375 				EMT	375
   5020					;
   5021					; HERE WHEN A TASK FILE FOUND
   5022					;
   5023					; GET TWO BUFFERS FOR THE HEADER AND LABEL BLOCKS
   5024					;
   5025	015642	012700 	000000G		TSKFND:	MOV	#.BGBUF,R0	;POINT TO BIG FREE SPACE
   5026	015646	012701 	001000 			MOV	#512.,R1	;SET TO GET A BLOCK
   5027	015652					CALL	..ALC2		;GET ONE
	015652	004737 	000000G			JSR	PC,..ALC2
   5028	015656	103764 				BCS	BUFAIL		;FAILED-- RELEASE NODE AND WAIT
   5029	015660	010037 	014612'			MOV	R0,LBLBUF	;OK-- STORE THE ADDRESS FOR LABEL BLOCK BUFFER
   5030	015664	060100 				ADD	R1,R0		;GET END ADDRESS, TOO
   5031	015666	010037 	014614'			MOV	R0,LBLBFE	;SAVE THAT AS END OF BLOCK
   5032	015672	012700 	000000G			MOV	#.BGBUF,R0	;POINT TO BIG FREE LIST HEAD
   5033					;
   5034	015676					CALL	..ALC2		;GET A HEADER BUFFER, TOO
	015676	004737 	000000G			JSR	PC,..ALC2
   5035	015702	103752 				BCS	BUFAIL		;NONE-- GIVE IT ALL AWAY
   5036	015704	010037 	014620'			MOV	R0,HDRBUF	;GOT IT-- SAVE ADDRESS OF BLOCK
   5037	015710	060100 				ADD	R1,R0		;GET END, TOO
   5038	015712	010037 	014622'			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	015716	012700 	007000 			MOV	#IO.ACW,R0	;DO AN ACCESS FOR READ,WRITE
   5043	015722	012701 	014624'			MOV	#FILBLK+N.FID,R1 ;FILE BLOCK NOW HAS FILE-ID, SEQ# IN IT
   5044	015726	012702 	015034'			MOV	#ATCBLK,R2	;ATTRRIBUTE CONTROL BLOCK TO GET DISK ADDR OF FILE
   5045	015732	012703 				MOV	(PC)+,R3	;ENABLE
   5046	015734	   000 	   200 			 .BYTE	0,AC.ENA	; ACCESS
   5047	015736	005004 				CLR	R4		;NO FILE-NAME BLOCK NOW
   5048	015740					CALL	FILQIO		;DO THE ACCESS
	015740	004737 	017170'			JSR	PC,FILQIO
   5049	015744	103727 				BCS	FILERA		;NO DICE-- GIVE UP
   5050					;
   5051					; READ THE FIRST LABEL BLOCK AND THE FIRST BLOCK OF THE TASK HEADER
   5052					;
   5053	015746	005037 	014606'			CLR	LBLBLK		;START WITH BLOCK 0 (WILL BUMP TO VBN 1)
   5054	015752					CALL	REDLBL		;READ THE LABEL BLOCK
	015752	004737 	017116'			JSR	PC,REDLBL
   5055	015756	103722 				BCS	FILERA		;ERROR-- REPORT IT
   5056					;
   5057	015760	016137 	000022 	014616'		MOV	L$BHRB(R1),HDRBLK ;GET FIRST BLOCK OF HEADER
   5058	015766					CALL	REDHDR		;READ THE FIRST BLOCK OF THE HEADER
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 64-1
INITIALIZE TASK FILE

	015766	004737 	017054'			JSR	PC,REDHDR
   5059	015772	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 19:04  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	015774	013704 	014564'		SETSTD:	MOV	STDADR,R4	;ADDRESS OUR NEW-FOUND STD
   5069					;
   5070	016000	012703 	014556'			MOV	#REQBLK+4,R3	;POINT TO THE REQUEST INFO BLOCK
   5071	016004	022424 				CMP	(R4)+,(R4)+	;MOVE OVER NAME
   5072	016006	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	016010	005713 				TST	(R3)		;PARTITION SPECIFIED IN REQUEST?
   5078	016012	001001 				BNE	20$		;YES-- LOOK FOR THAT ONE
   5079	016014	010103 				MOV	R1,R3		;NO-- (L$BPAR) USE PARTITION FROM TASK FILE
   5080					;
   5081					; FIND THE PARTITION WHERE WE BELONG
   5082					;
   5083	016016	022121 			20$:	CMP	(R1)+,(R1)+	;(L$BPAR+0) (L$BPAR+2) SKIP OVER PARTITION NAME IN LABEL
   5084	016020	012705 	000000G			MOV	#.TPDBA,R5	;START AT BEGINNING OF THE TASK PARTITION DIRECTORY
   5085					;
   5086	016024	026513 	000000G		21$:	CMP	T.PN+0(R5),(R3)	;FIRST HALF OF NAME MATCH?
   5087	016030	001004 				BNE	25$		;NO-- GO ON TO NEXT ENTRY
   5088	016032	026563 	000002G	000002 		CMP	T.PN+2(R5),2(R3) ;YES-- SECOND HALF MATCH?
   5089	016040	001432 				BEQ	PARFND		;YES-- WE FOUND THE PARTITION
   5090					;
   5091	016042	062705 	000000G		25$:	ADD	#T.SZ,R5	;NO-- BUMP TO NEXT ENTRY IN TPD
   5092	016046	020527 	000000G			CMP	R5,#.TPDEA	;ARE WE AT THE END OF THE DIRECTORY?
   5093	016052	103764 				BLO	21$		;NO-- KEEP LOOKING FOR OUR PARTITION
   5094	016054	010324 				MOV	R3,(R4)+	;YES-- PARTITION NOT FOUND-- SAVE ADDR OF NAME FOR ERR
   5095	016056					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
	016056	012746 	000052'			MOV	#$$$,-(SP)
	016062	004737 	017250'			JSR	PC,TYPMSG
	016066	000416 				 BR	CLSFIL
   5096					;
   5098	016070				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
	016070	012746 	000076'			MOV	#$$$,-(SP)
	016074	004737 	017250'			JSR	PC,TYPMSG
	016100	000411 				 BR	CLSFIL
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 65-1
SETUP STD ENTRY

   5100					;
   5101	016102				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
	016102	012746 	000125'			MOV	#$$$,-(SP)
	016106	004737 	017250'			JSR	PC,TYPMSG
	016112	000404 				 BR	CLSFIL
   5102					;
   5103	016114				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
	016114	012746 	000142'			MOV	#$$$,-(SP)
	016120	004737 	017250'			JSR	PC,TYPMSG
   5104					;
   5105	016124	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	016126	010524 			PARFND:	MOV	R5,(R4)+	;(S.TD) SET ADDRESS OF TPD ENTRY
   5110					;
   5111	016130	022121 				CMP	(R1)+,(R1)+		;(L$BFLG) SKIP TASK FLAGS
   5112	016132	005724 				TST	(R4)+		;(S.TF) FLAG TASK TO RETSTE ON EXIT
   5113					;
   5114	016134	112724 	000062 			MOVB	#DEFPRI,(R4)+	;NONE-- USE DEFAULT
   5115					;
   5116	016140	013700 	014604'			MOV	PUDADR,R0	;GET THE ADDRESS WHERE WE FOUND OUR FILE
   5117	016144	012703 	177777 			MOV	#-1,R3		;START THE COUNT AT ZERO
   5118	016150	162700 	000000G			SUB	#.PUDBA,R0	;MAKE R0 INDEX INTO PUD
   5119	016154	005203 			30$:	INC	R3		;BUMP THE INDEX
   5120	016156	162700 	000050 			SUB	#U.SZ,R0	;DIVIDE PUD ADDRESS
   5121	016162	002374 				BGE	30$		; BY THE ENTRY SIZE
   5122	016164	110324 				MOVB	R3,(R4)+	;(S.DI) SYSTEM DISK INDICATOR
   5123					;
   5124	016166	016524 	000000G			MOV	T.BA(R5),(R4)+	;(S.BA) BASE ADDRESS OF TASK (NO KT-11)
   5128	016172	012114 				MOV	(R1)+,(R4)	;(L$BLDZ) (S.LZ) LOAD SIZE OF TASK
   5129	016174	006314 				ASL	(R4)		;MAKE IT REAL ADDRESS (*64)
   5130	016176	006314 				ASL	(R4)		; . .
   5131	016200	006314 				ASL	(R4)		; . .
   5132	016202	006314 				ASL	(R4)		; . .
   5133	016204	006314 				ASL	(R4)		; . .
   5134	016206	006324 				ASL	(R4)+		; . .
   5136	016210	012114 				MOV	(R1)+,(R4)	;(L$BMXZ) (S.MZ) MAXIMUM SIZE OF TASK
   5138	016212	006314 				ASL	(R4)		;MAKE REAL ADDRESS (*64)
   5139	016214	006314 				ASL	(R4)		; . .
   5140	016216	006314 				ASL	(R4)		; . .
   5141	016220	006314 				ASL	(R4)		; . .
   5142	016222	006314 				ASL	(R4)		; . .
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 65-2
SETUP STD ENTRY

   5143	016224	006314 				ASL	(R4)		; . .
   5145	016226	026524 	000000G			CMP	T.PZ(R5),(R4)+	;WILL TASK FIT IN PARTITION SPECIFIED?
   5146	016232	103723 				BLO	TTBERR		;NO-- DON'T TRY TO INSTALL IT
   5148	016234	026521 	000000G			CMP	T.BA(R5),(R1)+	;(L$BSA) IS TASK ADDRESS SAME AS PARTITION ADDRESS?
   5149	016240	001313 				BNE	IPAERR		;NO-- DON'T INSTALL IT
   5153					;
   5154	016242	016224 	000076 			MOV	H.IPC(R2),(R4)+	;(S.PC) SET INTIAL PC FROM HEADER
   5155	016246	016224 	000100 			MOV	H.ISP(R2),(R4)+	;(S.SP) ALSO INITIAL SP
   5156	016252	022424 				CMP	(R4)+,(R4)+	;MOVE OVER SEND/REQUEST LISTHEAD
   5157	016254	005024 				CLR	(R4)+		;(S.SS) SST VECTOR TABLE ADDRESS
   5158					;
   5159	016256	013714 	014660'			MOV	FILADR+0,(R4)	;(S.DL+0) DISK ADDRESS OF TASK IMAGE
   5160	016262	012400 				MOV	(R4)+,R0	;COPY IT IN CASE IT'S ZERO
   5161	016264	013714 	014662'			MOV	FILADR+2,(R4)	;(S.DL+2) SECOND HALF OF DISK ADDRESS
   5162	016270	051400 				BIS	(R4),R0		;WERE BOTH WORDS ZERO?
   5163	016272	001710 				BEQ	TNCERR		;YES-- TASK FILE IS NOT CONTIGUOUS
   5164	016274	062114 				ADD	(R1)+,(R4)	;(L$BHRB) + RELATIVE BLOCK IN FILE= REAL ADDRESS
   5165	016276	005544 				ADC	-(R4)		;ADD THE CARRY BACK TO HIGH ORDER WORD
   5166					;
   5167	016300	012137 	014610'			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 19:04  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	016304	062702 	000130 		SETLUN:	ADD	#H.NLUN,R2	;POINT TO # LUNS, AND LUN TABLE IN HEADER
   5176	016310	012205 				MOV	(R2)+,R5	;(H.NLUN) GET # LUNS TO SET UP, POINT TO LUN TABLE IN HEADER
   5177	016312	001471 				BEQ	80$		;NONE-- JUST CLOSE FILE
   5178	016314	013701 	014614'			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	016320				10$:	CALL	NXTHDR		;GO ON TO NEXT BLOCK?
	016320	004737 	017040'			JSR	PC,NXTHDR
   5183	016324	103471 				BCS	FILERR		;FAILED
   5184					;
   5185					; SEE IF WE NEED TO READ ANOTHER LABEL BLOCK
   5186					;
   5187	016326	020137 	014614'		20$:	CMP	R1,LBLBFE	;HAVE WE FINISHED THIS LABEL BLOCK?
   5188	016332	103410 				BLO	30$		;NO-- JUST GET ANOTHER ENTRY FROM IT
   5189	016334	005004 				CLR	R4		;YES-- ASSUME NO MORE TO DO
   5190	016336	023737 	014606'	014610'		CMP	LBLBLK,LBLNUM	;HAVE WE RUN OUT OF LABEL BLOCKS?
   5191	016344	002043 				BGE	60$		;YES-- READ NO MORE-- JUST ZERO
   5192	016346					CALL	REDLBL		;YES-- READ NEXT ONE
	016346	004737 	017116'			JSR	PC,REDLBL
   5193	016352	103456 				BCS	FILERR		;SPLAT
   5194					;
   5195					; FIND THE PUD ADDRESS OF THE DEVICE FROM THE LABEL BLOCK
   5196					;
   5197	016354	005711 			30$:	TST	(R1)		;IS THIS A ZERO ENTRY?
   5198	016356	001434 				BEQ	40$		;YES-- JUST STORE ZERO
   5199	016360	013704 	014604'			MOV	PUDADR,R4	;ASSUME DEVICE OV
   5200	016364	022711 	053117 			CMP	#"OV,(R1)	;THIS OVERLAY DEVICE?
   5201	016370	001430 				BEQ	50$		;YES-- WE HAVE PUD ADDRESS
   5202					;
   5203	016372	012704 	000000G		31$:	MOV	#.PUDBA,R4	;NO-- START SEARCHING THROUGH THE PUD
   5204					;
   5205	016376	021164 	000000G		33$:	CMP	(R1),U.DN(R4)	;THIS OUR DEVICE?
   5206	016402	001004 				BNE	35$		;NO-- TRY ANOTHER ONE
   5207	016404	126164 	000002 	000000G		CMPB	2(R1),U.UN(R4)	;YES-- RIGHT UNIT #
   5208	016412	001417 				BEQ	50$		;YES-- WE HAVE PUD ADDRESS IN R4
   5209					;
   5210	016414	062704 	000050 		35$:	ADD	#U.SZ,R4	;NO-- BUMP TO NEXT PUD ENTRY
   5211	016420	020427 	000000G			CMP	R4,#.PUDEA	;END OF PUD YET?
   5212	016424	103764 				BLO	33$		;NO-- LOOK AT THIS ENTRY
   5213					;
   5214	016426	012704 	015050'			MOV	#CNVTBL,R4	;ENTRY NOT FOUND-- SEE IF CONVERTIBLE DEVICE
   5215					;
   5216	016432	022411 			37$:	CMP	(R4)+,(R1)	;DEVICE MATCH?
   5217	016434	001403 				BEQ	38$		;YES-- GET THE CONVERTED NAME AND GO AWAY
   5218	016436	005724 				TST	(R4)+		;NO-- IS THIS END OF TABLE?
   5219	016440	001374 				BNE	37$		;NO-- KEEP ON LOOKING
   5220	016442	000402 				BR	40$		;YES-- DEVICE NOT FOUND-- STORE 0
   5221					;
   5222	016444	011411 			38$:	MOV	(R4),(R1)	;DEVICE FOUND IN CONVERSION TABLE--
   5223	016446	000751 				BR	31$		; SAVE AS NEW DEVICE AND SCAN PUD FOR IT
   5224					;
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 66-1
SETUP LOGICAL UNIT TABLE FOR TASK

   5225	016450	005004 			40$:	CLR	R4		;ENTRY NOT FOUND-- CLEAR THE PUD ADDRESS
   5226					;
   5227	016452	022121 			50$:	CMP	(R1)+,(R1)+	;SKIP OVER ENTRY IN LABEL BLOCK
   5228					;
   5229	016454	010422 			60$:	MOV	R4,(R2)+	;STORE THE PUD ADDRESS IN LUT IN HEADER
   5230	016456					CALL	NXTHDR		;SEE IF WE NEED ANOTHER HEADER BLOCK
	016456	004737 	017040'			JSR	PC,NXTHDR
   5231	016462	103412 				BCS	FILERR		;I/O ERROR-- GIVE UP
   5232	016464	005022 				CLR	(R2)+		;CLEAR SECOND WORD OF HEADER ENTRY
   5233					;
   5234	016466	077564 				SOB	R5,10$		;LOOP FOR ALL LUNS IN HEADER
   5235	016470					CALL	WRTHDR		;WRITE OTU THE LAST HEADER BLOCK
	016470	004737 	017066'			JSR	PC,WRTHDR
   5236	016474	103405 				BCS	FILERR		;FAILED
   5237					;
   5238					; ALL DONE WITH THE TASK FILE-- CLOSE IT UP
   5239					;
   5240	016476				80$:	CALL	RETBUF		;RETURN THE BUFFERS
	016476	004737 	016634'			JSR	PC,RETBUF
   5241	016502					CALL	FILCLS		;CLOSE THE FILE
	016502	004737 	017156'			JSR	PC,FILCLS
   5242	016506	103075 				BCC	REQTSK		;OK-- GO PUT US IN THE STD
   5243					;
   5244					; ALL FILE I/O ERRORS END UP HERE
   5245					;
   5246	016510				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
	016510	012746 	000173'			MOV	#$$$,-(SP)
	016514	004737 	017250'			JSR	PC,TYPMSG
   5247	016520				FILERX:	CALL	FILCLS		;GIVE CLOSE A TRY
	016520	004737 	017156'			JSR	PC,FILCLS
   5248					;
   5249	016524	012746 	017014'		RETNOD:	MOV	#ALLDON,-(SP)	;RETURN ALL BUFFERS AND STD NODE
   5250	016530					.INH0			;;OTHER ERROR-- MUST REMOVE TASK FROM THE STD
	016530	013746 	177776 			MOV	@#PS,-(SP)
	016534	112737 	000140 	177776 		MOVB	#140,@#PS
   5251	016542	012701 	014552'			MOV	#REQBLK,R1	;FIND THE STD OF THIS TASK
   5252	016546					CALL	..FSTD
	016546	004737 	000000G			JSR	PC,..FSTD
   5253	016552	001015 				BNE	60$		;CAN'T FIND IT?????
   5254	016554	162737 	000002 	000000G		SUB	#2,.STDTZ	;;ONE LESS ENTRY IN THE STD NOW
   5255	016562	013705 	000000G			MOV	.STDTZ,R5	;; SO GET NEW LENGTH
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 66-2
SETUP LOGICAL UNIT TABLE FOR TASK

   5256	016566	063705 	000000G			ADD	.STDTA,R5	;;MAKE ADDRESS OF LAST ENTRY IN THE TABLE
   5257	016572	005743 				TST	-(R3)		;;BACK UP THE POINTER
   5258					;
   5259	016574	020305 			50$:	CMP	R3,R5		;;AT END OF TABLE YET?
   5260	016576	101003 				BHI	60$		;;YES-- ALL DONE
   5261	016600	016323 	000002 			MOV	2(R3),(R3)+	;;NO-- MOVE ANOTHER ENTRY DOWN
   5262	016604	000773 				BR	50$		;;LOOP TO MOVE WHOLE TABLE DOWN
   5263					;
   5264	016606				60$:	.ENB0			;;RESTORE TASK SWITCHING
	016606	004737 	000000G			JSR	PC,..ENB0
   5265					;
   5266					; RETALL -- RETURN ALL BUFFERS AND STD NODE
   5267					;
   5268	016612	013701 	014564'		RETALL:	MOV	STDADR,R1	;GET THE STD ADDRESS
   5269	016616	001406 				BEQ	RETBUF		;NONE-- JUST RETURN THE BUFFERS
   5270	016620	012704 	000000G			MOV	#.POLLH,R4	;ADD IT TO THE FREE POOL
   5271	016624					CALL	..NADD		;PUT IT BACK
	016624	004737 	000000G			JSR	PC,..NADD
   5272	016630	005037 	014564'			CLR	STDADR		;NO MORE STD NODE
   5273					;
   5274	016634	012701 	001000 		RETBUF:	MOV	#512.,R1	;SET TO RETURN A BLOCK
   5275	016640	012703 	000000G			MOV	#.BGBUF,R3	; TO THE BIG BUFFER LIST HEAD
   5276	016644	013700 	014612'			MOV	LBLBUF,R0	;GET ADDRESS OF LABEL BLOCK BUFFER
   5277	016650	001402 				BEQ	20$		;NONE-- TRY HEADER BUFFER
   5278	016652					CALL	..DEC2		;DE-ALLOCATE THE BUFFER
	016652	004737 	000000G			JSR	PC,..DEC2
   5279					;
   5280	016656	013700 	014620'		20$:	MOV	HDRBUF,R0	;ALSO THE HEADER BUFFER
   5281	016662	001402 				BEQ	CLRBUF		;NONE-- JUST CLEAN UP
   5282	016664					CALL	..DEC2		;DE-ALLOCATE THE HEADER BUFFER
	016664	004737 	000000G			JSR	PC,..DEC2
   5283					;
   5284	016670	005037 	014612'		CLRBUF:	CLR	LBLBUF		;NO MORE LABEL BUFFER
   5285	016674	005037 	014620'			CLR	HDRBUF		; OR HEADER BUFFER
   5286	016700					RETURN			;THAT'S IT
	016700	000207 				RTS	PC
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 67
RE-REQUEST TASK

   5288						.SBTTL	RE-REQUEST TASK
   5289					;
   5290					; TASK REQUEST BLOCK IS STILL SET UP FROM CALL
   5291					;
   5292	016702				REQTSK:	.INH0			;INHIBIT TASK SWITCHING
	016702	013746 	177776 			MOV	@#PS,-(SP)
	016706	112737 	000140 	177776 		MOVB	#140,@#PS
   5293	016714	013704 	014564'			MOV	STDADR,R4	;FIND STD ADDRESS
   5294	016720	042764 	040001 	000000G		BIC	#SF.TA!SF.IR,S.FW(R4)	;CLEAR ACTIVE BIT SO IT CAN BE REQUESTED
   5295	016726	012700 	014552'			MOV	#REQBLK,R0
   5296	016732					RQST$S	R0,,REQBLK+10	;RE-REQUEST TASK
	016732	005046 				CLR	-(SP)
	016734	013746 	014562'			MOV	REQBLK+10,-(SP)
	016740	005046 				CLR	-(SP)
	016742	005046 				CLR	-(SP)
	016744	016046 	000002 			MOV	2(R0),-(SP)
	016750	011046 				MOV	(R0),-(SP)
	016752	012746 				MOV	(PC)+,-(SP)
	016754	   013 	   007 			.BYTE	11.,7
	016756	104375 				EMT	375
   5297	016760					.ENB0			;ENABLE TASK SWITCHING
	016760	004737 	000000G			JSR	PC,..ENB0
   5298	016764	005737 	000000G			TST	$DSW		;SUCCESS/FAILURE?
   5299	016770	100011 				BPL	ALLDON		;SUCCESS -- ALL OK
   5300					;
   5301					; REQUEST FAILED-- IF TASK ALREADY ACTIVE, THAT'S OK
   5302					;
   5303	016772	023727 	000000G	177771 		CMP	$DSW,#IE.ACT	;TASK ALREADY ACTIVE?
   5304	017000	001405 				BEQ	ALLDON		;YES-- WE ARE HAPPY
   5305					;
   5306	017002					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
	017002	012746 	000251'			MOV	#$$$,-(SP)
	017006	004737 	017250'			JSR	PC,TYPMSG
	017012	000644 				 BR	RETNOD
   5307					;
   5308					; ALL DONE-- GO BACK TO WAITING
   5309					;
   5310	017014	000137 	015074'		ALLDON:	JMP	INSTAL		;RETURN AND EXIT IF NO MORE TO DO
   5311					;
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  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	017020	012700 	004400 		FILFNA:	MOV	#IO.FNA,R0	;DO A FIND FILE IN DIRECTORY
   5319	017024	005001 				CLR	R1		;NO FILE-ID
   5320	017026	005002 				CLR	R2		;NO ATTRIBUTES
   5321	017030	005003 				CLR	R3		;NO ACCESS
   5322	017032	012704 	014624'			MOV	#FILBLK,R4	;SET TO DO IT TO THE RIGHT FILE
   5323	017036	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	017040	023702 	014622'		NXTHDR:	CMP	HDRBFE,R2	;END OF HEADER BUFFER?
   5330	017044	101023 				BHI	RETXXX		;NO-- JUST RETURN
   5331	017046					CALL	WRTHDR		;YES-- WRITE OUT OLD HEADER
	017046	004737 	017066'			JSR	PC,WRTHDR
   5332	017052	103420 				BCS	RETXXX		;ERROR-- RETURN WITH IT
   5333					;	BR	REDHDR		;READ THE NEXT ONE
   5334					;
   5335					; REDHDR -- READ NEXT HEADER BLOBK
   5336					;
   5337	017054	005237 	014616'		REDHDR:	INC	HDRBLK		;BUMP TO NEXT BLOCK OF HEADER
   5338	017060	012700 	010400 			MOV	#IO.RVB,R0	;DO A READ
   5339	017064	000402 				BR	RWRHDR		;DO IT TO HEADER BLOCK
   5340					;
   5341					; WRTHDR -- WRITE CURRENT HEADER BLOCK
   5342					;
   5343	017066	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	017072				RWRHDR:	PUSH	R1		;SAVE THE LABEL POINTER
	017072	010146 				MOV	R1,-(SP)
   5350	017074	013701 	014620'			MOV	HDRBUF,R1		;POINT TO HEADER BUFFER
   5351	017100	013703 	014616'			MOV	HDRBLK,R3	;SET PROPER VBN
   5352	017104					CALL	RWRBLK		;DO A BLOCK
	017104	004737 	017150'			JSR	PC,RWRBLK
   5353	017110	010102 				MOV	R1,R2		;POINT R2 TO HDR BUFFER
   5354	017112					POP	R1		;RESTORE LABEL POINTER
	017112	012601 				MOV	(SP)+,R1
   5355	017114				RETXXX:	RETURN			;WITH CC-C SET/CLEAR BY RWRBLK
	017114	000207 				RTS	PC
   5356					;
   5357					; REDLBL -- READ NEXT LABEL BLOCK
   5358					;
   5359	017116				REDLBL:	PUSH	R2		;SAVE THE HEADER POINTER
	017116	010246 				MOV	R2,-(SP)
   5360	017120	012700 	010400 			MOV	#IO.RVB,R0	;DO A READ
   5361	017124	013701 	014612'			MOV	LBLBUF,R1		; TO THE LABEL BUFFER
   5362	017130	005237 	014606'			INC	LBLBLK		;BUMP TO NEXT LABEL BLOCK
   5363	017134	013703 	014606'			MOV	LBLBLK,R3	; AND SAVE AS VBN TO READ
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 68-1
TASK FILE I/O ROUTINES

   5364	017140					CALL	RWRBLK		;READ THE BLOCK
	017140	004737 	017150'			JSR	PC,RWRBLK
   5365	017144					POP	R2		;RESTORE THE HEADER POINTER
	017144	012602 				MOV	(SP)+,R2
   5366	017146					RETURN			;CC-C SET/CLEAR BY RWRBLK, R1 POINTS TO LBL BUFFER
	017146	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	017150	012702 	001000 		RWRBLK:	MOV	#512.,R2	;SET TO READ ONE BLOCK
   5374	017154	000405 				BR	FILQIO		;DO IT TO TASK FILE
   5375					;
   5376					; FILCLS -- DE-ACCESS THE TASK FILE
   5377					;
   5378	017156	012700 	010000 		FILCLS:	MOV	#IO.DAC,R0	;DE-ACCESS FUNCTION
   5379	017162	005001 				CLR	R1		;NO FILE-ID BLOCK
   5380	017164	005002 				CLR	R2		;NO ATTRIBUTES ALLOWED
   5381	017166	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	017170				FILQIO:	QIOW$S	R0,#TSKLUN,#E.FQIO,,#QIOSTS,,<R1,R2,,,R3,R4>
	017170	010446 				MOV	R4,-(SP)
	017172	010346 				MOV	R3,-(SP)
	017174	005046 				CLR	-(SP)
	017176	005046 				CLR	-(SP)
	017200	010246 				MOV	R2,-(SP)
	017202	010146 				MOV	R1,-(SP)
	017204	005046 				CLR	-(SP)
	017206	012746 	014664'			MOV	#QIOSTS,-(SP)
	017212	005046 				CLR	-(SP)
	017214	112716 	000001 			MOVB	#E.FQIO,(SP)
	017220	012746 	000002 			MOV	#TSKLUN,-(SP)
	017224	010046 				MOV	R0,-(SP)
	017226	012746 				MOV	(PC)+,-(SP)
	017230	   003 	   014 			.BYTE	3,$$$T1
	017232	104375 				EMT	375
   5394	017234	103404 				BCS	90$		;GIVE UP
   5395					;
   5396	017236	105737 	014664'		30$:	TSTB	QIOSTS+0	;I/O SUCCESSFUL?
   5397	017242	002001 				BGE	90$		;YES-- JUST RETURN WITH CC-C CLEAR
   5398					;
   5399	017244	000261 			80$:	SEC			;NO-- RETURN ERROR
   5400	017246				90$:	RETURN			;RETURN FROM FILQIO
	017246	000207 				RTS	PC
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  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	017250				TYPMSG:	PUSH	<R0,R1,R2,R3,R4> ;SAVE USED REGISTERS
	017250	010046 				MOV	R0,-(SP)
	017252	010146 				MOV	R1,-(SP)
	017254	010246 				MOV	R2,-(SP)
	017256	010346 				MOV	R3,-(SP)
	017260	010446 				MOV	R4,-(SP)
   5410	017262	012704 	014670'			MOV	#TYPBUF,R4	;SET ADDRESS OF TYPEOUT BUFFER
   5411	017266	012703 	017560'			MOV	#INSMSG,R3	;GET 'INS --'
   5412	017272					CALL	PUTSTR		;PUT IT IN STRING
	017272	004737 	017452'			JSR	PC,PUTSTR
   5413	017276	016603 	000014 			MOV	14(SP),R3	;GET ADDRESS OF THE TEXT TO TYPE
   5414	017302					CALL	PUTSTR		;TYPE IT
	017302	004737 	017452'			JSR	PC,PUTSTR
   5415	017306	012703 	017572'			MOV	#TSKMSG,R3	;GET 'TSK= '
   5416	017312					CALL	PUTSTR		;PUT IT TOO
	017312	004737 	017452'			JSR	PC,PUTSTR
   5417	017316	012703 	014552'			MOV	#REQBLK,R3	;POINT TO .RAD50 /TASK-NAME/
   5418	017322					CALL	PUTR50		;PUT IT IN THERE, TOO
	017322	004737 	017462'			JSR	PC,PUTR50
   5419	017326	013702 	014564'			MOV	STDADR,R2	;GET THE ADDRESS OF THE STD
   5420	017332	016202 	000000G			MOV	S.TD(R2),R2	;GET ADDRESS OF .RAD50/PARTITION/
   5421	017336	001407 				BEQ	20$		;NONE-- SKIP THIS
   5422	017340	012703 	017601'			MOV	#PARMSG,R3	;SAY 'PAR= '
   5423	017344					CALL	PUTSTR		; . .
	017344	004737 	017452'			JSR	PC,PUTSTR
   5424	017350	010203 				MOV	R2,R3		;GET THE NAME ADDRESS
   5425	017352					CALL	PUTR50		;PUT IT IN STRING
	017352	004737 	017462'			JSR	PC,PUTR50
   5426					;
   5427	017356	112724 	000012 		20$:	MOVB	#12,(R4)+	;STORE LF
   5428	017362	112724 	000015 			MOVB	#15,(R4)+	;STORE CR
   5429	017366	012700 	014670'			MOV	#TYPBUF,R0	;GET ADDRESS OF BUFFER BACK
   5430	017372	160004 				SUB	R0,R4		;COMPUTE LENGTH OF STRING
   5431	017374					QIOW$S	#IO.WLB,#CTYLUN,#E.FQIO,,,,<R0,R4,#40>
	017374	012746 	000040 			MOV	#40,-(SP)
	017400	010446 				MOV	R4,-(SP)
	017402	010046 				MOV	R0,-(SP)
	017404	005046 				CLR	-(SP)
	017406	005046 				CLR	-(SP)
	017410	005046 				CLR	-(SP)
	017412	112716 	000001 			MOVB	#E.FQIO,(SP)
	017416	012746 	000001 			MOV	#CTYLUN,-(SP)
	017422	012746 	000400 			MOV	#IO.WLB,-(SP)
	017426	012746 				MOV	(PC)+,-(SP)
	017430	   003 	   011 			.BYTE	3,$$$T1
	017432	104375 				EMT	375
   5432	017434					POP	<R4,R3,R2,R1,R0> ;RESTORE THE REGISTERS
	017434	012604 				MOV	(SP)+,R4
	017436	012603 				MOV	(SP)+,R3
	017440	012602 				MOV	(SP)+,R2
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 69-1
ERROR PROCESSING

	017442	012601 				MOV	(SP)+,R1
	017444	012600 				MOV	(SP)+,R0
   5433	017446					POP	(SP)		;RESTORE PC OVER MESSAGE ADDRESS
	017446	012616 				MOV	(SP)+,(SP)
   5434	017450					RETURN			;THAT'S IT FOR TYPMSG
	017450	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	017452	112324 			PUTSTR:	MOVB	(R3)+,(R4)+	;COPY A CHARACTER
   5441	017454	001376 				BNE	PUTSTR		; UNTIL ASCIZ
   5442	017456	105744 				TSTB	-(R4)		;BACK OVER ZERO BYTE
   5443	017460					RETURN			;RETURN FROM PUTSTR
	017460	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	017462	012300 			PUTR50:	MOV	(R3)+,R0	;GET FIRST 3 CHARS
   5450	017464					CALL	PUTR51		;TYPE 'EM
	017464	004737 	017472'			JSR	PC,PUTR51
   5451	017470	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	017472	012702 	017534'		PUTR51:	MOV	#T50TBL,R2	;POINT TO TABLE OF DIVISORS
   5459					;
   5460	017476	012201 			20$:	MOV	(R2)+,R1	;GET NEXT DIVISOR
   5461	017500	001414 				BEQ	90$		;THREE HAVE BEEN DONE-- RETURN
   5462	017502					CALL	$DIV		;DIVIDE CURRENT TEXT BY 50**N
	017502	004737 	000032'			JSR	PC,$DIV
   5463	017506					PUSH	R1		;SAVE THE REMAINDER
	017506	010146 				MOV	R1,-(SP)
   5464	017510	012701 	017544'			MOV	#R50TBL,R1	;POINT TO CONVERSION TABLE
   5465					;
   5466	017514	061100 			30$:	ADD	(R1),R0		;CONVERT THE CHARACTER
   5467	017516	105721 				TSTB	(R1)+		;SKIP THE BYTE
   5468	017520	120021 				CMPB	R0,(R1)+	;HAVE WE FOUND THE CHAR YET?
   5469	017522	103774 				BLO	30$		;NO-- LOOP UNTIL WE DO
   5470					;
   5471	017524	110024 				MOVB	R0,(R4)+	;YES-- SAVE THE CHAR IN TEXT
   5472	017526					POP	R0		;RESTORE LAST REMAINDER AS NEW DIVIDEND
	017526	012600 				MOV	(SP)+,R0
   5473	017530	000762 				BR	20$		;GET ANOTHER CHARACTER
   5474					;
   5475	017532				90$:	RETURN			;FROM PUTR50/PUTR51
	017532	000207 				RTS	PC
   5476					;
   5477	017534	003100 	000050 	000001 	T50TBL:	.WORD	50*50,50,1,0	;TABLE OF DIVISORS
	017542	000000
   5478					;
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 69-2
ERROR PROCESSING

   5479	017544	   022 	   060 		R50TBL:	.BYTE	<'0-36>-<50-50>,'0 ;36-47: 0-9
   5480	017546	   366 	   045 			.BYTE	<'%-35>-<'0-36>,'% ;35   : %
   5481	017550	   012 	   056 			.BYTE	<'.-34>-<'%-35>,'. ;34   : .
   5482	017552	   367 	   044 			.BYTE	<'$-33>-<'.-34>,'$ ;33   : $
   5483	017554	   067 	   101 			.BYTE	<'A-01>-<'$-33>,'A ;01-32: A-Z
   5484	017556	   340 	   040 			.BYTE	<' -00>-<'A-01>,'  ;00   : <SPACE>
   5485						.EVEN
   5486					;
   5487	017560	   015 	   012 	   111 	INSMSG:	.ASCIZ	<15><12>/INS -- /
	017563	   116 	   123 	   040
	017566	   055 	   055 	   040
	017571	   000
   5488	017572	   040 	   040 	   124 	TSKMSG:	.ASCIZ	/  TSK=/
	017575	   123 	   113 	   075
	017600	   000
   5489	017601	   040 	   120 	   101 	PARMSG:	.ASCIZ	/ PAR=/
	017604	   122 	   075 	   000
   5490						.EVEN
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 70
END STATEMENT

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

AC.ENA= 000200   	CDSIEN= 000100   	DBIOD   000370R  	DR.DTE= 000011   	EF.CRC= 000001
ADRSAV= ****** GX	CDSNXM= 001000   	DCK   = 100000   	DSEND = 000004   	EF.CRD= 000002
ALLDON  017014R  	CDSOFL= 010000   	DCOMST= 000001   	DS04  = 004000   	EF.CRS= 000004
AOE   = 001000   	CDSPAK= 000002   	DD.CHI= 000002   	DS05  = 002000   	EF.IOD= ****** GX
ATCBLK  015034R  	CDSPWC= 000400   	DD.HEM= 000010   	DS06  = 001000   	EF.LPC= 000002
A.EF  = 000020   	CDSRCK= 040000   	DD.LER= 000010   	DTE   = 010000   	EF.LPD= 000001
A.HA  = ****** GX	CDSRDY= 000200   	DD.OVF= 000020   	DTECMD= 000451   	EF.LPQ= 000004
BCFHDS  011336R  	CDSRED= 000001   	DD.PCK= 000002   	DTEFLG= 000444   	EF.LPS= 000020
BCFILF  011272R  	CDST  = ****** GX	DD.PGZ= 000001   	DTEF11= 000450   	EF.LPW= 000040
BCFLDR  011356R  	CDSTOL= 000010   	DD.RCK= 000001   	DTEMTD= 000455   	EF.NIR= ****** GX
BCFLDV  011364R  	CHNPNT= 000001   	DD.RME= 000040   	DTEMTI= 000456   	EF.QIO= 000001
BCFRDS  011272R  	CHRINT= 020000   	DD.SCK= 000004   	DUNS    000460R  	EF.SEP= 100000
BCFSDO  011316R  	CLIOD   000374R  	DD.SFL= 000020   	DUPE  = 000020   	EF.TEF= 000400
BCFSTR  011400R  	CLRBUF  016670R  	DD.VFE= 000004   	DURE  = 000004   	EMPTY = 000003
BCFTAB  011254R  	CLSFIL  016124R  	DEFPRI= 000062   	DVA   = 004000   	EPTR  = 000000
BC.HDS= ****** GX	CNUPE = 000002   	DELHLD= 002000   	DV.EOF= 000040   	ERMHER  010163R
BC.LDR= ****** GX	CNVTBL  015050R  	DEMTIM= 000002   	DV.F11= 000400   	ERMHNG  010200R
BC.LDV= ****** GX	CPE   = 000010   	DEP   = 010000   	DV.HNG= 001000   	ERMNXD  010111R
BC.RDS= ****** GX	CPUNUM= 000002   	DEX   = 000400   	DV.IOP= 000020   	ERMOFL  010131R
BC.SDS= ****** GX	CRBFLN= ****** GX	DEXDON= 000004   	DV.LOG= 000100   	ERMVFE  010144R
BC.STR= ****** GX	CRBUFF= ****** GX	DEXWD1= 174406   	DV.NXD= 000001   	ERR   = 100000
BIT0  = 000001   	CRCEVF= ****** GX	DEXWD2= 174404   	DV.OFL= 000002   	ERR10C= 010000
BIT1  = 000002   	CRDCLR  013752R  	DEXWD3= 174402   	DV.OIR= 000004   	ERR10S= 020000
BIT10 = 002000   	CRDINT  013222R  	DFUNC = 000200   	DV.SCN= 000010   	ERR11C= 000001
BIT11 = 004000   	CREVFG= ****** GX	DF.DMG= 000004   	DV.URE= 000200   	ERR11S= 000002
BIT12 = 010000   	CREXP = ****** GX	DF.DMN= 000007   	DXBUF = ****** GX	EXSP    014544RG
BIT13 = 020000   	CRHD    012172RG 	DF.DOR= 000001   	DXCNT = ****** GX	E.FCRB= 000004
BIT14 = 040000   	CRHUNG= ****** GX	DF.EHG= 000010   	DXEXP = 177170   	E.FCRC= 000001
BIT15 = 100000   	CRINI   012554R  	DF.EHM= 000011   	DXFLAG  014544R  	E.FCRD= 000002
BIT2  = 000004   	CRIOD   012726R  	DF.EMG= 000005   	DXHD    002056RG 	E.FCRS= 000003
BIT3  = 000010   	CRLOOP  012640R  	DF.EMN= 000006   	DXINI   002366R  	E.FLPC= 000002
BIT4  = 000020   	CRMKT   013172R  	DF.KLR= 000012   	DXIOD   002362R  	E.FLPD= 000001
BIT5  = 000040   	CRMRKT  012472R  	DF.KLW= 000013   	DXPKT = ****** GX	E.FLPQ= 000003
BIT6  = 000100   	CRPWUP  012546R  	DF.KLX= 000014   	DXRTC = ****** GX	E.FLPS= 000005
BIT7  = 000200   	CRSSTV  012504R  	DF.OFF= 000002   	DXRTY   003250R  	E.FLPW= 000006
BIT8  = 000400   	CRSTBK= ****** GX	DF.ON = 000003   	DXSTK   002336RG 	E.FQIO= 000001
BIT9  = 001000   	CRSTK   012452RG 	DF.PDP= 000016   	DXTSK = ****** GX	E.IOD = ****** GX
BLKTT = ****** GX	CRSTLN= ****** GX	DF.PEX= 000015   	DXUNIT= ****** GX	E.NIR = ****** GX
BPARER= 000020   	CRSTS = ****** GX	DIAG1 = 174430   	DXVCB = ****** GX	FCN     005002R
BUFAIL  015630R  	CRTBL = ****** GX	DIAG2 = 174432   	DXWD1 = 000006   	FCNBD   005010R
BUSA16= 000020   	CRTRP4  012506R  	DIAG3 = 174436   	DXWD2 = 000004   	FEDRV   004016R
BUSA17= 000040   	CR.ACK= 004000   	DIKL10= 000010   	DXWD3 = 000002   	FEHD    003516RG
BYTESA= ****** GX	CR.HNG= 100000   	DLT   = 100000   	DXWRD1= 002000   	FER   = 000020
CDBA  = ****** GX	CR.IOD= 010000   	DLYCNT= 174400   	D$$H11= 000010   	FESTK   003776RG
CDBPCK= 020000   	CR.IOP= 020000   	DNBLK = ****** GX	D.CCDR= ****** GX	FETBL = ****** GX
CDBRCK= 040000   	CR.NSF= 000400   	DNFCN = ****** GX	D.CLPT= ****** GX	FETSK = ****** GX
CDBSCK= 010000   	CR.NXD= 001000   	DNMSG   000442R  	D.FEPD= ****** GX	FE.DET= 040000
CDCC  = ****** GX	CR.RHN= 002000   	DNSTS = ****** GX	D1011 = 000040   	FE.DTE= 020000
CDD   = 000020   	CR.SST= 040000   	DONE  = 000200   	EBSEL = 000100   	FE.SER= 004000
CDDB  = ****** GX	CS.EXP= 177670   	DONSTR  004732R  	EBUSPC= 000020   	FE.STR= 002000
CDSB16= 000020   	CTYLUN= 000001   	DON10C= 040000   	EBUSPS= 000004   	FILADR  014660R
CDSB17= 000040   	C$$D11= 000001   	DON10S= 100000   	ECCMSK  000504R  	FILBLK  014624R
CDSDER= 004000   	C.LEEF= 000002   	DON11C= 000100   	ECCWRD  000476R  	FILCLS  017156R
CDSDLT= 002000   	DAG1  = 000030   	DON11S= 000200   	ECH   = 000100   	FILERA  015624R
CDSEOF= 020000   	DAG2  = 000032   	DPS4  = 040000   	ECI   = 004000   	FILERR  016510R
CDSERR= 100000   	DAG3  = 000036   	DRESET= 000100   	EDONES= 040000   	FILERX  016520R
CDSHEM= 000004   	DBINI   000512R  	DRY   = 000200   	EF.CRB= 000010   	FILFNA  017020R
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 70-2
SYMBOL TABLE

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

LPUTBL= ****** GX	OPI   = 020000   	REQBLK  014552R  	SCD   = 000040   	TO11DB= 004000
LPWRUP  005636R  	OPTVFU= 004000   	REQTSK  016702R  	SETBUF  003442R  	TO11DN= 000200
LP.CLR= 002000   	PAGZRO= 040000   	RETALL  016612R  	SETLUN  016304R  	TO11DT= 174426
LP.EOF= 000200   	PARENB= 000002   	RETBUF  016634R  	SETSTD  015774R  	TO11ER= 000002
LP.F10= 000400   	PARFND  016126R  	RETNOD  016524R  	SF.IR = 040000   	TR    = 000200
LP.HNG= 100000   	PARMSG  017601R  	RETRY = 000010   	SF.TA = 000001   	TRE   = 040000
LP.LIP= 001000   	PBTHRD= 000004   	RETXXX  017114R  	SNSTR   004420R  	TRKSEC  003272R
LP.MCH= 010000   	PERCLR= 001000   	RFMAD0= 100000   	SSTSCR  013332R  	TRWAIT  003472R
LP.PZI= 020000   	PGE   = 002000   	RFMAD1= 040000   	SSTSLP  007360R  	TSKFND  015642R
LP.SST= 040000   	PGM   = 001000   	RFMAD2= 020000   	STAT  = 174434   	TSKLUN= 000002
LP.UNT= 000003   	PHYBLK= 000040   	RFMAD3= 010000   	STATD = 000034   	TSKMSG  017572R
LP.WAT= 004000   	PHYS  = 100000   	RM    = 000010   	STATUS= 000022   	TSTMOD= 000001
L$BBLK= 000024   	PIDENT= 000000   	RMR   = 000004   	STDADR= 014564R  	TTBERR  016102R
L$BFLG= 000010   	PRI7  = 000340   	RPAS  = 000016   	STSWD = ****** GX	TTPEN = ****** GX
L$BHRB= 000022   	PROPNT= 000021   	RPBA  = 000004   	SWR   = 177570   	TYPBUF  014670R
L$BLDZ= 000014   	PRTOFF= 004000   	RPBUF = ****** GX	SWSLLT= 100000   	TYPMSG  017250R
L$BMXZ= 000016   	PR0   = 000000   	RPCNT = ****** GX	SYFLAG  014545R  	T.BA  = ****** GX
L$BPAR= 000004   	PR1   = 000040   	RPCS1 = 000000   	SYMNTD  015276R  	T.HBCT= ****** GX
L$BPRI= 000012   	PR2   = 000100   	RPCS2 = 000010   	SYMNT1  015342R  	T.HCAD= ****** GX
L$BSA = 000020   	PR3   = 000140   	RPDA  = 000006   	SYNTIM= 000004   	T.HCBC= ****** GX
L$BTSK= 000000   	PR4   = 000200   	RPDBR = 000022   	S.DRFN= 000034   	T.HEMA= 177774
L$$P20= 000002   	PR5   = 000240   	RPDC  = 000034   	S.FW  = ****** GX	T.HIBC= 177776
MCPE  = 020000   	PR6   = 000300   	RPDS  = 000012   	S.TD  = ****** GX	T.HVFC= 177775
MDPE  = 000400   	PR7   = 000340   	RPDT  = 000026   	TASKNF  015520R  	T.PN  = ****** GX
MEFCN   005012R  	PS    = 177776   	RPEC1 = 000044   	TB.ABO= 040000   	T.PZ  = ****** GX
MEMPAR= 000020   	PSWW1 = 000005   	RPEC2 = 000046   	TB.DON= 100000   	T.SZ  = ****** GX
MKDNR   000404RG 	PSWW10= 000014   	RPER1 = 000014   	TB.EOF= 020000   	T10AD = 000020
MKSCDP  005566R  	PSWW11= 000015   	RPEXP = 176700   	TB.LPC= 010000   	T11AD = 000022
MNTBLK  015042R  	PSWW12= 000016   	RPHD    000070RG 	TB.RMD= 004000   	T11BC = 000016
MNTSYD  015142R  	PSWW13= 000017   	RPLA  = 000020   	TB.SFN= 036000   	T50TBL  017534R
MODE00= 000004   	PSWW2 = 000006   	RPMR  = 000024   	TB.VFD= 002000   	UF.TL = ****** GX
MODE01= 000010   	PSWW3 = 000007   	RPOF  = 000032   	TENAD1= 174410   	UNASG1= 000032
MOL   = 010000   	PSWW4 = 000010   	RPRNA = ****** GX	TENAD2= 174412   	UNASG2= 000033
MPE11 = 001000   	PSWW5 = 000011   	RPRTC = ****** GX	TESTLP  010360R  	UNASG3= 000034
MSGDPB  000422R  	PSWW6 = 000012   	RPSN  = 000030   	TEST00= 000400   	UNASG4= 000035
MSGSIZ= 000016   	PSWW7 = 000013   	RPSTK   000350RG 	TEST01= 001000   	UNASG5= 000036
MXF   = 001000   	PUDADR  014604R  	RPTSK = ****** GX	TEST02= 002000   	UNASG6= 000037
M.KTAE= 000010   	PULSE = 000020   	RPUNIT= ****** GX	TNAD1 = 000010   	UNIT  = 000020
M.KTEF= 000002   	PUTR50  017462R  	RPWC  = 000002   	TNAD2 = 000012   	UNS   = 040000
M.KTMG= 000004   	PUTR51  017472R  	RPWLO   000400R  	TNCERR  016114R  	UPE   = 020000
M.KTUN= 000006   	PUTSTR  017452R  	RSTERR= 001000   	TNFERR  015610R  	U.ACP = ****** GX
NED   = 010000   	QIOSTS  014664R  	RSX$$E= 000050   	TOBM  = 000004   	U.DACP= ****** GX
NEM   = 004000   	QSIZE = 000023   	RSX$$F= 000102   	TOIP  = 000002   	U.DN  = ****** GX
NODADR= ****** GX	Q.IOAE= 000012   	RSX$$K= 000126   	TOIT  = 000001   	U.FB  = ****** GX
NULSTP= 000040   	Q.IOEF= 000006   	RSX$$V= 000015   	TO10  = 000200   	U.RP  = ****** GX
NUPE  = 000002   	Q.IOFN= 000002   	RWRBLK  017150R  	TO10AD= 174420   	U.SZ  = 000050
NXTHDR  017040R  	Q.IOLU= 000004   	RWRHDR  017072R  	TO10BC= 174414   	U.UN  = ****** GX
NXTSEC  003420R  	Q.IOPL= 000014   	RXCS  = 000000   	TO10BM= 000001   	U.VA  = ****** GX
N.DID = 000024   	Q.IOPR= 000007   	RXDB  = 000002   	TO10DB= 000400   	VFCFF   007124R
N.FID = 000000   	Q.IOSB= 000010   	R$$E18= 000001   	TO10DN= 100000   	VFCTBL  007122R
N.FNAM= 000006   	RAMIS0= 010000   	R$$11D= 000001   	TO10DT= 174424   	VFUERR= 000100
N.FTYP= 000014   	RAMLOD= 000003   	R.AT  = ****** GX	TO10ER= 020000   	VFULOD= 000002
N.FVER= 000016   	RAMPAR= 000010   	R.DP  = ****** GX	TO10PK= ****** GX	VFURDY= 010000
N.NEXT= 000022   	RCVBLK  014546R  	R.FC  = ****** GX	TO11  = 000100   	VV    = 000100
N.STAT= 000020   	READ  = 000007   	R.LU  = ****** GX	TO11AD= 174422   	WCE   = 040000
OFFLIN= 000200   	REDHDR  017054R  	R.PB  = ****** GX	TO11BC= 174416   	WCF   = 000040
ONLINE= 004000   	REDLBL  017116R  	R50TBL  017544R  	TO11BM= 020000   	WEP   = 000010
INSTAL -- TASK INSTALLER FOR RS	MACRO M1113  03-APR-86 19:04  PAGE 70-4
SYMBOL TABLE

WFDNR   000416RG 	$TOP20= 000001   	.FEST   004542RG 	.PCAB2= 151000   	.TPDEA= ****** GX
WFEF1   003510R  	$$    = 000037   	.GFNR = 102000   	.PCAB3= 152000   	.WRMBX= 071000
WFPKT   002356R  	$$MSG = 000000   	.INICL= 070000   	.PCAB4= 153000   	..AKCR  014114RG
WLE   = 004000   	$$$   = 000251R     002	.IRLTC= 014000   	.POLLH= ****** GX	..AKLP  011566RG
WRITE = 000005   	$$$ARG= 000003   	.LCRDL= 052000   	.PUDBA= ****** GX	..ALCB= ****** GX
WRL   = 004000   	$$$OST= 000012   	.LCRDR= 051000   	.PUDEA= ****** GX	..ALC2= ****** GX
WRTDD = 000015   	$$$T1 = 000011   	.LCRM1= 057000   	.RCRM1= 147000   	..DECB= ****** GX
WRTHDR  017066R  	$$$T2 = 000000   	.LCRM2= 056000   	.RCRM2= 146000   	..DECN= ****** GX
W.TSEF= 000002   	$$$$  = 000002   	.LCRM3= 055000   	.RCRM3= 145000   	..DEC2= ****** GX
ZSTOP = 040000   	.BGBUF= ****** GX	.LCRM4= 054000   	.RCRM4= 144000   	..DOLP  012010RG
$CDINT  013762RG 	.BRCLK= 005000   	.LCRM5= 053000   	.RCSPF= 141000   	..DOL1  011774RG
$CD11 = 000001   	.CECLK= 004000   	.LDAR = 077000   	.RDJ14= 134000   	..DQRN= ****** GX
$DBDTE= 000001   	.CLRMR= 006000   	.LDBRL= 043000   	.RDJ71= 135000   	..DSEV= ****** GX
$DH11 = 000001   	.CLRUN= 010000   	.LDBRR= 042000   	.RDMAB= 133000   	..ENB0= ****** GX
$DIRAC= 000001   	.COMEF= ****** GX	.LDCK1= 046000   	.RPELC= ****** GX	..FSTD= ****** GX
$DIV    000032RG 	.CONBT= 012000   	.LDCK2= 047000   	.RPELQ= ****** GX	..INTX= ****** GX
$DSW  = ****** GX	.CRPFL= ****** GX	.LDDIS= 045000   	.RPUNT= ****** GX	..IODN= ****** GX
$DTE  = 000001   	.CRTSK= ****** GX	.LDRJD= 064000   	.SECLK= 003000   	..NADD= ****** GX
$DXINT  003060RG 	.CSHRG= 164000   	.LDRJV= 063000   	.SETMR= 007000   	..PTLP  011646RG
$FE   = 000001   	.CYLTM= 000074   	.LDRM1= 060000   	.SETRN= 011000   	..SACK= ****** GX
$F11  = 000001   	.DBINT  001236RG 	.LDRM2= 061000   	.SSCLK= 002000   	..SPCR  014072RG
$LPINT  010650RG 	.DRLTC= 015000   	.LDRM3= 062000   	.STDTA= ****** GX	..SPLP  011414RG
$LP20 = 000001   	.DSACF= 066000   	.LDSEL= 044000   	.STDTZ= ****** GX	..STCR  014050RG
$MUL    000000RG 	.DSIOJ= 065000   	.LPPFL= ****** GX	.STPCL= 000000   	..STIN= ****** GX
$RP04 = 000001   	.EIOJA= 067000   	.MEMRS= 076000   	.STRCL= 001000   	..STLP  011204RG
$RX11 = 000001   	.FEACK  004436RG 	.PCAB1= 150000   	.TPDBA= ****** GX	...GBL= 000000

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

VIRTUAL MEMORY USED:  12624 WORDS  ( 50 PAGES)
DYNAMIC MEMORY:  14438 WORDS  ( 55 PAGES)
ELAPSED TIME:  00:04:08
,[100,20]DRIVERS20.LST/-SP/CRF=[100,30]DRIVERS20.TMP
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	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	  017014 R	 66-5249    67-5299    67-5304   #67-5310   
AOE   	= 001000	#8-404      10-717     10-728    
ATCBLK	  015034 R	#62-4826    64-5044   
A.EF  	= 000020	*10-770    #13-1516   *14-1693   *15-1742    19-1939   *19-1941   *21-2101    30-2637    51-4224   
A.HA  	= ******  GX	 19-2002    63-4884   
BCFHDS	  011336 R	 40-3669   #40-3705   
BCFILF	  011272 R	 40-3661   #40-3678    40-3699    40-3708   
BCFLDR	  011356 R	 40-3671   #40-3714   
BCFLDV	  011364 R	 40-3672   #40-3720   
BCFRDS	  011272 R	 40-3668   #40-3683   
BCFSDO	  011316 R	 40-3670   #40-3696   
BCFSTR	  011400 R	 40-3667   #40-3733   
BCFTAB	  011254 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	#13-1511    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	#13-1511    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	#13-1511   #22-2240    22-2274    23-2317    23-2337    28-2527   #46-4047    47-4078    49-4151   
                        #61-4716   
BIT11 	= 004000	#13-1511   #22-2240    22-2273    23-2316    23-2336    28-2522   #46-4047    47-4077    49-4149   
                        #61-4716   
BIT12 	= 010000	#13-1511   #22-2240    22-2272    23-2315    23-2335    28-2519   #46-4047    47-4076    47-4095   
                         49-4147   #61-4716   
BIT13 	= 020000	#13-1511   #22-2240    22-2271    23-2314    28-2516   #46-4047    47-4075    47-4094    49-4145   
                        #61-4716   
BIT14 	= 040000	#13-1511   #22-2240    22-2270    23-2313    28-2513   #46-4047    47-4074    47-4093    49-4142   
                        #61-4716   
BIT15 	= 100000	#13-1511   #22-2240    22-2269    23-2312    28-2510    35-3296   #46-4047    47-4073    49-4138   
                         52-4268    53-4483   #61-4716   
BIT2  	= 000004	#13-1511    22-2229   #22-2240    23-2326    23-2346    25-2422    25-2438    25-2454   #46-4047   
                         46-4062    47-4086   #61-4716   
BIT3  	= 000010	#13-1511   #22-2240    23-2325    23-2345    25-2423    25-2439    25-2455   #46-4047    46-4064   
                         47-4085   #61-4716   
BIT4  	= 000020	#13-1511    22-2232   #22-2240    23-2324    23-2344    25-2424    25-2440    25-2456   #46-4047   
                         47-4084   #61-4716   
BIT5  	= 000040	#13-1511    22-2234   #22-2240    23-2323    23-2343    25-2425    25-2441   #46-4047    47-4083   
                        #61-4716   
BIT6  	= 000100	#13-1511   #22-2240    23-2322    23-2342    25-2426   #46-4047    47-4082   #61-4716   
BIT7  	= 000200	#13-1511   #22-2240    23-2321    23-2341    25-2427    28-2535   #46-4047    47-4081   #61-4716   
                         61-4782   
BIT8  	= 000400	#13-1511   #22-2240    23-2319    23-2339    25-2428    28-2532    35-3274   #46-4047    47-4080   
                         49-4155   #61-4716   
BIT9  	= 001000	#13-1511   #22-2240    23-2318    23-2338    25-2429    28-2529   #46-4047    47-4079    49-4153   
                        #61-4716   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 2

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

BLKTT 	= ******  GX	 21-2149   
BPARER	= 000020	#13-1511   #22-2240   #46-4047   #61-4716   
BUFAIL	  015630 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	#13-1511   #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	#13-1511   #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	  016670 R	 63-4869    63-4869    66-5281   #66-5284   
CLSFIL	  016124 R	 65-5095    65-5098    65-5101   #65-5105   
CNUPE 	= 000002	#13-1511   #22-2240   #46-4047   #61-4716   
CNVTBL	  015050 R	#62-4839    66-5214   
CPE   	= 000010	#8-410     
CPUNUM	= 000002	#13-1511   #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	  013752 R	 51-4207   #54-4507   
CRDINT	  013222 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  	  012172 RG	#49-4135   
CRHUNG	= ******  GX	*52-4336   
CRINI 	  012554 R	 49-4135    49-4135   #51-4223   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 3

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

CRIOD 	  012726 R	#52-4250   
CRLOOP	  012640 R	#52-4236    52-4348   
CRMKT 	  013172 R	#52-4320   
CRMRKT	  012472 R	#49-4160    51-4226   
CRPWUP	  012546 R	#51-4218    51-4228   
CRSSTV	  012504 R	#51-4201    51-4227   
CRSTBK	= ******  GX	 53-4398    53-4471   
CRSTK 	  012452 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	  012506 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	#13-1511   #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	#13-1511   #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	#13-1511   #22-2240   #46-4047   #61-4716   
DEX   	= 000400	#13-1511   #22-2240   #46-4047   #61-4716   
DEXDON	= 000004	#13-1511   #22-2240   #46-4047   #61-4716   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 4

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

DEXWD1	= 174406	#13-1511   #22-2240   #46-4047   #61-4716   
DEXWD2	= 174404	#13-1511   #22-2240   #46-4047   #61-4716   
DEXWD3	= 174402	#13-1511   #22-2240   #46-4047   #61-4716   
DFUNC 	= 000200	#13-1511   #22-2240   #46-4047   #61-4716   
DF.DMG	= 000004	#13-1511   #22-2240   #46-4047   #61-4716   
DF.DMN	= 000007	#13-1511   #22-2240   #46-4047   #61-4716   
DF.DOR	= 000001	#13-1511   #22-2240   #46-4047   #61-4716   
DF.EHG	= 000010	#13-1511   #22-2240   #46-4047   #61-4716   
DF.EHM	= 000011	#13-1511   #22-2240   #46-4047   #61-4716   
DF.EMG	= 000005	#13-1511   #22-2240   #46-4047   #61-4716   
DF.EMN	= 000006	#13-1511   #22-2240   #46-4047   #61-4716   
DF.KLR	= 000012	#13-1511   #22-2240   #46-4047   #61-4716   
DF.KLW	= 000013	#13-1511   #22-2240   #46-4047   #61-4716   
DF.KLX	= 000014	#13-1511   #22-2240   #46-4047   #61-4716   
DF.OFF	= 000002	#13-1511   #22-2240   #46-4047   #61-4716   
DF.ON 	= 000003	#13-1511   #22-2240   #46-4047   #61-4716   
DF.PDP	= 000016	#13-1511   #22-2240   #46-4047   #61-4716   
DF.PEX	= 000015	#13-1511   #22-2240   #46-4047   #61-4716   
DIAG1 	= 174430	#13-1511   #22-2240   #46-4047   #61-4716   
DIAG2 	= 174432	#13-1511   #22-2240   #46-4047   #61-4716   
DIAG3 	= 174436	#13-1511   #22-2240   #46-4047   #61-4716   
DIKL10	= 000010	#13-1511   #22-2240   #46-4047   #61-4716   
DLT   	= 100000	#8-374      10-793    
DLYCNT	= 174400	#13-1511   #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	#13-1529    14-1631    14-1651    17-1873   #23-2321   
DONSTR	  004732 R	 21-2099   #21-2102    21-2111    21-2120    21-2171   
DON10C	= 040000	#13-1511   #22-2240   #46-4047   #61-4716   
DON10S	= 100000	#13-1511   #22-2240   #46-4047   #61-4716   
DON11C	= 000100	#13-1511   #22-2240   #46-4047   #61-4716   
DON11S	= 000200	#13-1511   #22-2240   #46-4047   #61-4716   
DPS4  	= 040000	#13-1511   #22-2240   #46-4047   #61-4716   
DRESET	= 000100	#13-1511   #22-2240   #46-4047   #61-4716   
DRY   	= 000200	#8-391      9-659     
DR.DTE	= 000011	#13-1511   #22-2240   #46-4047   #61-4716   
DSEND 	= 000004	#13-1511   #22-2240   #46-4047   #61-4716   
DS04  	= 004000	#13-1511   #22-2240   #46-4047   #61-4716   
DS05  	= 002000	#13-1511   #22-2240   #46-4047   #61-4716   
DS06  	= 001000	#13-1511   #22-2240   #46-4047   #61-4716   
DTE   	= 010000	#8-401     
DTECMD	= 000451	#13-1511   #22-2240   #46-4047   #61-4716   
DTEFLG	= 000444	#13-1511   #22-2240   #46-4047   #61-4716   
DTEF11	= 000450	#13-1511   #22-2240   #46-4047   #61-4716   
DTEMTD	= 000455	#13-1511   #22-2240   #46-4047   #61-4716   
DTEMTI	= 000456	#13-1511   #22-2240   #46-4047   #61-4716   
DUNS  	  000460 R	#8-478      9-688     
DUPE  	= 000020	#13-1511   #22-2240   #46-4047   #61-4716   
DURE  	= 000004	#13-1511   #22-2240   #46-4047   #61-4716   
DVA   	= 004000	#8-360      9-625      9-632     
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 5

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

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   
DXBUF 	= ******  GX	*14-1581   *17-1838    17-1854   
DXCNT 	= ******  GX	*14-1582   *17-1840    17-1856    17-1858   
DXEXP 	= 177170	#13-1517    14-1615    15-1718   
DXFLAG	  014544 R	#62-4806   *63-4870    63-4921   *63-4923   
DXHD  	  002056 RG	#13-1544   
DXINI 	  002366 R	 13-1544    13-1544   #14-1573    14-1576    14-1694   
DXIOD 	  002362 R	#13-1548    14-1688   
DXPKT 	= ******  GX	*14-1583    14-1691    15-1738   
DXRTC 	= ******  GX	*14-1602   *15-1723   *15-1760   *15-1762   
DXRTY 	  003250 R	 14-1640    14-1663    14-1678    14-1681    15-1722   #15-1760   
DXSTK 	  002336 RG	 13-1544   #13-1544   
DXTSK 	= ******  GX	*14-1693   *15-1742   
DXUNIT	= ******  GX	*14-1580    14-1675   
DXVCB 	= ******  GX	*14-1613   *14-1614    14-1619    14-1671    14-1679    14-1682    14-1689    14-1690   *15-1719   
                         15-1725    15-1732    15-1735   *15-1740   *15-1741    16-1782    16-1795   *16-1810   *16-1811   
                         16-1812   *17-1836    17-1840   *17-1859   
DXWD1 	= 000006	#3-135     
DXWD2 	= 000004	#3-136     
DXWD3 	= 000002	#3-137     
DXWRD1	= 002000	#13-1511   #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	#13-1511   #22-2240   #46-4047   #61-4716   
EBSEL 	= 000100	#13-1511   #22-2240   #46-4047   #61-4716   
EBUSPC	= 000020	#13-1511   #22-2240   #46-4047   #61-4716   
EBUSPS	= 000004	#13-1511   #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	#13-1511   #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     14-1693    15-1742   
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   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 6

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

EF.LPS	= 000020	#22-2232    30-2638    35-3138    35-3300    35-3308   
EF.LPW	= 000040	#22-2234    30-2638    36-3342    41-3779   
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   
EMPTY 	= 000003	#13-1539    14-1649   
EPTR  	= 000000	#13-1511   #22-2240   #46-4047   #61-4716   
ERMHER	  010163 R	 35-3174   #35-3259   
ERMHNG	  010200 R	 35-3193   #35-3261   
ERMNXD	  010111 R	 35-3152   #35-3253   
ERMOFL	  010131 R	 35-3163   #35-3255   
ERMVFE	  010144 R	 35-3168   #35-3257   
ERR   	= 100000	#8-387     #23-2312    39-3505   
ERR10C	= 010000	#13-1511   #22-2240   #46-4047   #61-4716   
ERR10S	= 020000	#13-1511   #22-2240   #46-4047   #61-4716   
ERR11C	= 000001	#13-1511   #22-2240   #46-4047   #61-4716   
ERR11S	= 000002	#13-1511   #22-2240   #46-4047   #61-4716   
EXSP  	  014544 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      13-1548   
E.NIR 	= ******  GX	 8-464      13-1546   
FCN   	  005002 R	 21-2076   #21-2124   
FCNBD 	  005010 R	 21-2079   #21-2126   
FEDRV 	  004016 R	 18-1935    18-1935   #19-1937    19-1983    19-1986    19-2021    19-2030   
FEHD  	  003516 RG	#18-1935   
FER   	= 000020	#8-409     
FESTK 	  003776 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	  014660 R	#62-4820    62-4828    65-5159    65-5161   
FILBLK	  014624 R	#62-4819    63-4937    63-4958    63-4977    64-5043    68-5322   
FILCLS	  017156 R	 66-5241    66-5241    66-5247    66-5247   #68-5378   
FILERA	  015624 R	#64-5014    64-5049    64-5055    64-5059   
FILERR	  016510 R	 64-5014    66-5183    66-5193    66-5231    66-5236   #66-5246   
FILERX	  016520 R	 65-5105   #66-5247   
FILFNA	  017020 R	 63-4952    63-4952    63-4984    63-4984   #68-5318   
FILL  	= 000001	#13-1538    14-1626   
FILQIO	  017170 R	 63-4910    63-4910    64-5048    64-5048    68-5323    68-5374   #68-5393   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 7

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

FMT22 	= 010000	#8-432     
FNDFIL	  015364 R	 63-4930   #63-4936    63-5004   
FORPRO	= 000020	#13-1511   #22-2240   #46-4047   #61-4716   
GO    	= 000001	#13-1537    13-1538    13-1539    13-1540    13-1541    13-1542   #23-2331    34-3060    39-3515   
                         39-3540    44-3996   
GOERR 	= 000001	#23-2348    39-3560   
HCE   	= 000200	#8-406     
HCI   	= 002000	#8-434     
HCRC  	= 000400	#8-405     
HDRBFE	  014622 R	#62-4818   *64-5038    68-5329   
HDRBLK	  014616 R	#62-4816   *64-5057   *68-5337    68-5351   
HDRBUF	  014620 R	#62-4817   *64-5036    66-5280   *66-5285    68-5350   
HDR64 	= ******	 65-5125   
HIBYTE	= 177400	#13-1511   #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     14-1696   
IE.DNR	= 177775	 9-656     
IE.IFC	= 177776	 9-573      14-1642    33-2952   
IE.OFL	= 177677	 43-3879   
IE.VER	= 177774	 10-715     10-858     14-1701    21-2174   
IE.WLK	= 177764	 10-724    
IFLOP 	= 100000	#13-1511   #22-2240   #46-4047   #61-4716   
ILF   	= 000001	#8-413      10-717    
ILFCD 	  002622 R	 14-1587   #14-1642   
ILR   	= 000002	#8-412      10-717    
INIT  	= 040000	#13-1532    15-1763   
INITCR	  013736 RG	 51-4218    51-4218    51-4229    51-4229    52-4244    52-4244    52-4337    52-4337   #54-4505   
                         58-4627    58-4627   
INITLP	  010550 RG	 30-2629    30-2629    30-2642    30-2642    31-2666    31-2666   #37-3404   
INSHD 	  014144 RG	#62-4799   
INSMSG	  017560 R	 69-5411   #69-5487   
INSTAL	  015074 RG	 62-4799    62-4799   #63-4864    63-4867    67-5310   
INSTK 	  014424 RG	 62-4799   #62-4799   
INTEBL	= 000100	#13-1530    14-1684    15-1720   
INTENB	= 000100	#23-2322    34-3036    34-3040    34-3060    36-3379    37-3417    39-3515    39-3540    41-3784   
                         44-3996   
INTROF	= 000010	#13-1511   #22-2240   #46-4047   #61-4716   
INTRON	= 000040	#13-1511   #22-2240   #46-4047   #61-4716   
INTSON	= 000001	#13-1511   #22-2240   #46-4047   #61-4716   
INT10S	= 000400	#13-1511   #22-2240   #46-4047   #61-4716   
INT11C	= 002000	#13-1511   #22-2240   #46-4047   #61-4716   
INT11S	= 004000	#13-1511   #22-2240   #46-4047   #61-4716   
IOABT 	  004750 R	 21-2069   #21-2107   
IODN  	  004356 R	 19-1978   #19-2023   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 8

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

IODNCR	  014130 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      14-1584    15-1725    33-2935   
IO.RVB	= 010400	 33-2937    68-5338    68-5360   
IO.WLB	= 000400	 9-571      14-1586    14-1619    21-2141    33-2931    35-3246    69-5431   
IO.WVB	= 011000	 8-473      33-2933    68-5343   
IPAERR	  016070 R	#65-5098    65-5149   
IS.RDD	= 000002	 15-1734   
IS.SUC	= 000001	 10-712     10-966     15-1737    21-2133    33-2965    44-3963   
KLPWRF	= 000010	#13-1511   #22-2240   #46-4047   #61-4716   
KT11  	= ******	 65-5097    65-5147   
LBLBFE	  014614 R	#62-4815   *64-5031    66-5178    66-5187   
LBLBLK	  014606 R	#62-4812   *64-5053    66-5190   *68-5362    68-5363   
LBLBUF	  014612 R	#62-4814   *64-5029    66-5276   *66-5284    68-5361   
LBLNUM	  014610 R	#62-4813   *65-5167    66-5190   
LOAD11	= 000004	#13-1511   #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	  010620 R	 30-2616   #37-3418   
LPDINT	  007172 R	 30-2614   #34-3037   
LPEMSG	  010056 R	 35-3236    35-3246   #35-3247   
LPEMSX	  010071 R	 35-3232   #35-3251   
LPERUN	  010066 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  	  005254 RG	#27-2502   
LPHUNG	= ******  GX	*34-3052   
LPINI 	  005644 R	 27-2502    27-2502   #30-2635   
LPIOD 	  006016 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	  005730 R	#31-2656    34-3082   
LPMCB 	= ******  GX	 39-3530   *44-3981    44-3984   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 9

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

LPMKT 	  007136 R	#34-3027   
LPMRKT	  005554 R	#30-2603    30-2639   
LPNIR 	  006676 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	  010034 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   
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	  005600 R	#30-2608    30-2640   
LPSTBK	= ******  GX	 35-3144    35-3273    35-3281    35-3291   
LPSTK 	  005534 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	  005602 R	 30-2609   #30-2613   
LPUNIT	= ******  GX	*39-3491    39-3493   
LPUTBL	= ******  GX	 33-2928    39-3496   
LPWRUP	  005636 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 	  005012 R	 21-2125   #21-2128   
MEMPAR	= 000020	#23-2344    35-3171    39-3560   
MKDNR 	  000404 RG	#8-466      9-683     
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 10

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

MKSCDP	  005566 R	#30-2605    36-3347   
MNTBLK	  015042 R	#62-4831    63-4907   
MNTSYD	  015142 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	#13-1511   #22-2240   #46-4047   #61-4716   
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     #30-2604   #30-2606   #49-4160   
M.KTEF	= 000002	#8-467     #30-2604   #30-2606   #49-4160   
M.KTMG	= 000004	#8-467     #30-2604   #30-2606   #49-4160   
M.KTUN	= 000006	#8-467     #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   
NULSTP	= 000040	#13-1511   #22-2240   #46-4047   #61-4716   
NUPE  	= 000002	#13-1511   #22-2240   #46-4047   #61-4716   
NXTHDR	  017040 R	 66-5182    66-5182    66-5230    66-5230   #68-5329   
NXTSEC	  003420 R	 14-1664    14-1664    15-1727    15-1727   #17-1836   
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	  016126 R	 65-5089   #65-5109   
PARMSG	  017601 R	 69-5422   #69-5489   
PBTHRD	= 000004	#22-2279    22-2281    22-2282    22-2283    32-2867    33-2977    33-2978   
PERCLR	= 001000	#13-1511   #22-2240   #46-4047   #61-4716   
PGE   	= 002000	#8-379      10-793    
PGM   	= 001000	#8-390     
PHYBLK	= 000040	#13-1520    14-1609    15-1732    16-1795   
PHYS  	= 100000	#13-1511   #22-2240   #46-4047   #61-4716   
PIDENT	= 000000	#13-1511   #22-2240   #46-4047   #61-4716   
PRI7  	= 000340	#13-1511   #22-2240   #46-4047   #61-4716   
PROPNT	= 000021	#13-1511   #22-2240   #46-4047   #61-4716   
PRTOFF	= 004000	#13-1511   #22-2240   #46-4047   #61-4716   
PR0   	= 000000	#13-1511   #22-2240   #46-4047   #61-4716   
PR1   	= 000040	#13-1511   #22-2240   #46-4047   #61-4716   
PR2   	= 000100	#13-1511   #22-2240   #46-4047   #61-4716   
PR3   	= 000140	#13-1511   #22-2240   #46-4047   #61-4716   
PR4   	= 000200	#13-1511   #22-2240    34-3055    36-3382   #46-4047   #61-4716   
PR5   	= 000240	#13-1511   #22-2240   #46-4047   #61-4716   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 11

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

PR6   	= 000300	#13-1511   #22-2240   #46-4047   #61-4716   
PR7   	= 000340	#13-1511    21-2138   #22-2240    31-2660    32-2744   #46-4047    52-4238   #61-4716   
PS    	= 177776	 9-623      9-665      9-680     #13-1511    14-1686    14-1697    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   
PSWW1 	= 000005	#13-1511   #22-2240   #46-4047   #61-4716   
PSWW10	= 000014	#13-1511   #22-2240   #46-4047   #61-4716   
PSWW11	= 000015	#13-1511   #22-2240   #46-4047   #61-4716   
PSWW12	= 000016	#13-1511   #22-2240   #46-4047   #61-4716   
PSWW13	= 000017	#13-1511   #22-2240   #46-4047   #61-4716   
PSWW2 	= 000006	#13-1511   #22-2240   #46-4047   #61-4716   
PSWW3 	= 000007	#13-1511   #22-2240   #46-4047   #61-4716   
PSWW4 	= 000010	#13-1511   #22-2240   #46-4047   #61-4716   
PSWW5 	= 000011	#13-1511   #22-2240   #46-4047   #61-4716   
PSWW6 	= 000012	#13-1511   #22-2240   #46-4047   #61-4716   
PSWW7 	= 000013	#13-1511   #22-2240   #46-4047   #61-4716   
PUDADR	  014604 R	#62-4811   *63-4887    63-4916   *63-5003    65-5116    66-5199   
PULSE 	= 000020	#13-1511   #22-2240   #46-4047   #61-4716   
PUTR50	  017462 R	 69-5418    69-5418    69-5425    69-5425   #69-5449   
PUTR51	  017472 R	 69-5450    69-5450   #69-5458   
PUTSTR	  017452 R	 69-5412    69-5412    69-5414    69-5414    69-5416    69-5416    69-5423    69-5423   #69-5440   
                         69-5441   
QIOSTS	  014664 R	#62-4821    68-5393    68-5396   
QSIZE 	= 000023	#13-1511   #22-2240   #46-4047   #61-4716   
Q.IOAE	= 000012	#8-473     #35-3246   
Q.IOEF	= 000006	#8-473     #35-3246   
Q.IOFN	= 000002	#8-473     #35-3246   
Q.IOLU	= 000004	#8-473     #35-3246   
Q.IOPL	= 000014	#8-473     *9-677     *9-688     *35-3237   #35-3246   
Q.IOPR	= 000007	#8-473     #35-3246   
Q.IOSB	= 000010	#8-473     #35-3246   
RAMIS0	= 010000	#13-1511   #22-2240   #46-4047   #61-4716   
RAMLOD	= 000003	#23-2329    32-2812   
RAMPAR	= 000010	#23-2345    35-3171    35-3195    39-3560   
RCVBLK	  014546 R	#62-4808    63-4866    63-4898   
READ  	= 000007	#13-1541    14-1618   
REDHDR	  017054 R	 64-5058    64-5058   #68-5337   
REDLBL	  017116 R	 64-5054    64-5054    66-5192    66-5192   #68-5359   
REQBLK	  014552 R	#62-4809    62-4810    63-4957    65-5070    66-5251    67-5295    67-5296    69-5417   
REQTSK	  016702 R	 66-5242   #67-5292   
RETALL	  016612 R	#66-5268   
RETBUF	  016634 R	 64-5018    64-5018    66-5240    66-5240    66-5269   #66-5274   
RETNOD	  016524 R	 63-5008   #66-5249    67-5306   
RETRY 	= 000010	#8-447      9-579     #13-1519    14-1602   
RETXXX	  017114 R	 68-5330    68-5332   #68-5355   
RFMAD0	= 100000	#13-1511   #22-2240   #46-4047   #61-4716   
RFMAD1	= 040000	#13-1511   #22-2240   #46-4047   #61-4716   
RFMAD2	= 020000	#13-1511   #22-2240   #46-4047   #61-4716   
RFMAD3	= 010000	#13-1511   #22-2240   #46-4047   #61-4716   
RM    	= 000010	#13-1511   #22-2240   #46-4047   #61-4716   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 12

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

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    
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	= 000102	#3-109     #3-118      3-120     
RSX$$K	= 000126	#3-105     
RSX$$V	= 000015	#3-100     
RWRBLK	  017150 R	 68-5352    68-5352    68-5364    68-5364   #68-5373   
RWRHDR	  017072 R	 68-5339   #68-5349   
RXCS  	= 000000	#13-1526   
RXDB  	= 000002	#13-1527   *14-1679   *14-1682   
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      14-1584    14-1586    14-1609    14-1614    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     14-1603    14-1608   
                         15-1739    19-2014    19-2015    21-2082    21-2083    32-2867    33-2977    33-2981   
R50TBL	  017544 R	 69-5464   #69-5479   
SCD   	= 000040	#13-1511   #22-2240   #46-4047   #61-4716   
SETBUF	  003442 R	 14-1624    14-1624    14-1650    14-1650   #17-1854   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 13

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

SETLUN	  016304 R	#66-5175   
SETSTD	  015774 R	#65-5068   
SF.IR 	= 040000	#61-4750    67-5294   
SF.TA 	= 000001	#61-4749    67-5294   
SNSTR 	  004420 R	 19-2019    19-2019   #19-2032    20-2056    20-2056    21-2167    21-2167   
SSTSCR	  013332 R	 52-4284    52-4284    52-4303    52-4303   #53-4389   
SSTSLP	  007360 R	 32-2730    32-2730   #35-3135   
STAT  	= 174434	#13-1511   #22-2240   #46-4047   #61-4716   
STATD 	= 000034	#3-127     
STATUS	= 000022	#13-1511   #22-2240   #46-4047   #61-4716   
STDADR	= 014564 R	#62-4810    65-5068    66-5268   *66-5272    67-5293    69-5419   
STSWD 	= ******  GX	*19-1951   *19-2020    19-2023    19-2024   *19-2027   *21-2085   *21-2086   
SWR   	= 177570	#13-1511   #22-2240   #46-4047   #61-4716   
SWSLLT	= 100000	#13-1511   #22-2240   #46-4047   #61-4716   
SYFLAG	  014545 R	#62-4807    63-4929   *63-4932   
SYMNTD	  015276 R	 63-4889    63-4911   #63-4915   
SYMNT1	  015342 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	  015520 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	#13-1511   #22-2240   #46-4047   #61-4716   
TENAD2	= 174412	#13-1511   #22-2240   #46-4047   #61-4716   
TESTLP	  010360 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	  016114 R	#65-5103    65-5163   
TNFERR	  015610 R	 63-4993   #63-5006   
TOBM  	= 000004	#13-1511   #22-2240   #46-4047   #61-4716   
TOIP  	= 000002	#13-1511   #22-2240   #46-4047   #61-4716   
TOIT  	= 000001	#13-1511   #22-2240   #46-4047   #61-4716   
TO10  	= 000200	#13-1511   #22-2240   #46-4047   #61-4716   
TO10AD	= 174420	#13-1511   #22-2240   #46-4047   #61-4716   
TO10BC	= 174414	#13-1511   #22-2240   #46-4047   #61-4716   
TO10BM	= 000001	#13-1511   #22-2240   #46-4047   #61-4716   
TO10DB	= 000400	#13-1511   #22-2240   #46-4047   #61-4716   
TO10DN	= 100000	#13-1511   #22-2240   #46-4047   #61-4716   
TO10DT	= 174424	#13-1511   #22-2240   #46-4047   #61-4716   
TO10ER	= 020000	#13-1511   #22-2240   #46-4047   #61-4716   
TO10PK	= ******  GX	 19-1991   
TO11  	= 000100	#13-1511   #22-2240   #46-4047   #61-4716   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 14

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

TO11AD	= 174422	#13-1511   #22-2240   #46-4047   #61-4716   
TO11BC	= 174416	#13-1511   #22-2240   #46-4047   #61-4716   
TO11BM	= 020000	#13-1511   #22-2240   #46-4047   #61-4716   
TO11DB	= 004000	#13-1511   #22-2240   #46-4047   #61-4716   
TO11DN	= 000200	#13-1511   #22-2240   #46-4047   #61-4716   
TO11DT	= 174426	#13-1511   #22-2240   #46-4047   #61-4716   
TO11ER	= 000002	#13-1511   #22-2240   #46-4047   #61-4716   
TR    	= 000200	#13-1531    14-1631    14-1651    17-1873   
TRE   	= 040000	#8-358      10-713    
TRKSEC	  003272 R	 14-1616    14-1616   #16-1782   
TRWAIT	  003472 R	 14-1677    14-1677    14-1680    14-1680   #17-1872   
TSKFND	  015642 R	 63-4985   #64-5025   
TSKLUN	= 000002	#61-4754    63-4880    63-4885    63-5001    68-5393   
TSKMSG	  017572 R	 69-5415   #69-5488   
TSTMOD	= 000001	#23-2327   
TTBERR	  016102 R	#65-5101    65-5146   
TTPEN 	= ******  GX	 8-455      13-1544    18-1935    27-2502    49-4135    62-4799   
TYPBUF	  014670 R	#62-4822    69-5410    69-5429   
TYPMSG	  017250 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	  017534 R	 69-5458   #69-5477   
UF.TL 	= ******  GX	 63-4996   
UNASG1	= 000032	#13-1511   #22-2240   #46-4047   #61-4716   
UNASG2	= 000033	#13-1511   #22-2240   #46-4047   #61-4716   
UNASG3	= 000034	#13-1511   #22-2240   #46-4047   #61-4716   
UNASG4	= 000035	#13-1511   #22-2240   #46-4047   #61-4716   
UNASG5	= 000036	#13-1511   #22-2240   #46-4047   #61-4716   
UNASG6	= 000037	#13-1511   #22-2240   #46-4047   #61-4716   
UNIT  	= 000020	#13-1528    14-1579   
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   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 15

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

U.UN  	= ******  GX	 63-4918    63-5001    66-5207   
U.VA  	= ******  GX	 63-4888    63-4998   
VFCFF 	  007124 R	 33-2944   #33-3001   
VFCTBL	  007122 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	#13-1511   #22-2240   #46-4047   #61-4716   
WFDNR 	  000416 RG	#8-469      9-684     
WFEF1 	  003510 R	#18-1924    19-1937   
WFPKT 	  002356 R	#13-1546    14-1573   
WLE   	= 004000	#8-402      10-717     10-722    
WRITE 	= 000005	#13-1540    14-1670   
WRL   	= 004000	#8-389     
WRTDD 	= 000015	#13-1542    14-1673   
WRTHDR	  017066 R	 66-5235    66-5235    68-5331    68-5331   #68-5343   
W.TSEF	= 000002	#8-458     #8-464     #8-470     #13-1546   #13-1548   
ZSTOP 	= 040000	#13-1511   #22-2240   #46-4047   #61-4716   
$CDINT	  013762 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  	= ******	 10-1187   
$DTE  	= 000001	#1-46      
$DXINT	  003060 RG	#15-1709   
$FE   	= 000001	#1-41      
$F11  	= 000001	#1-42      
$LPINT	  010650 RG	#39-3490   
$LP20 	= 000001	#1-37      
$MUL  	  000000 RG	#6-237     
$RP04 	= 000001	#1-40      
$RX11 	= 000001	#1-62       12-1449   
$TOP10	= ******	 1-53       3-110     
$TOP20	= 000001	#1-35       1-61       3-117     
$T1091	= ******	 1-49      
$$    	= 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   #14-1575   
                         14-1575   #14-1616    14-1616   #14-1624    14-1624   #14-1650    14-1650   #14-1664    14-1664   
                        #14-1677    14-1677   #14-1680    14-1680   #14-1692    14-1692   #15-1727    15-1727   #15-1743   
                         15-1743   #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   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 16

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

                         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   
                         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     #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      13-1546    13-1546    13-1548    13-1548    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     
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 17

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

                         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     #13-1546    13-1546    13-1546   #13-1546   #13-1548   
                         13-1548    13-1548   #13-1548   #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   
$$$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	#13-1511   #22-2240   #46-4047   #61-4716   
.CECLK	= 004000	#13-1511   #22-2240   #46-4047   #61-4716   
.CLRMR	= 006000	#13-1511   #22-2240   #46-4047   #61-4716   
.CLRUN	= 010000	#13-1511   #22-2240   #46-4047   #61-4716   
.COMEF	= ******  GX	 10-1158    19-1942    35-3141    52-4298    53-4393   
.CONBT	= 012000	#13-1511   #22-2240   #46-4047   #61-4716   
.CRPFL	= ******  GX	 52-4242   *52-4245   
.CRTSK	= ******  GX	 30-2636    51-4223    63-4883   
.CSHRG	= 164000	#13-1511   #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	#13-1511   #22-2240   #46-4047   #61-4716   
.DSACF	= 066000	#13-1511   #22-2240   #46-4047   #61-4716   
.DSIOJ	= 065000	#13-1511   #22-2240   #46-4047   #61-4716   
.EIOJA	= 067000	#13-1511   #22-2240   #46-4047   #61-4716   
.FEACK	  004436 RG	#20-2041   
.FEST 	  004542 RG	#21-2068   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 18

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

.GFNR 	= 102000	#13-1511   #22-2240   #46-4047   #61-4716   
.INICL	= 070000	#13-1511   #22-2240   #46-4047   #61-4716   
.IRLTC	= 014000	#13-1511   #22-2240   #46-4047   #61-4716   
.LCRDL	= 052000	#13-1511   #22-2240   #46-4047   #61-4716   
.LCRDR	= 051000	#13-1511   #22-2240   #46-4047   #61-4716   
.LCRM1	= 057000	#13-1511   #22-2240   #46-4047   #61-4716   
.LCRM2	= 056000	#13-1511   #22-2240   #46-4047   #61-4716   
.LCRM3	= 055000	#13-1511   #22-2240   #46-4047   #61-4716   
.LCRM4	= 054000	#13-1511   #22-2240   #46-4047   #61-4716   
.LCRM5	= 053000	#13-1511   #22-2240   #46-4047   #61-4716   
.LDAR 	= 077000	#13-1511   #22-2240   #46-4047   #61-4716   
.LDBRL	= 043000	#13-1511   #22-2240   #46-4047   #61-4716   
.LDBRR	= 042000	#13-1511   #22-2240   #46-4047   #61-4716   
.LDCK1	= 046000	#13-1511   #22-2240   #46-4047   #61-4716   
.LDCK2	= 047000	#13-1511   #22-2240   #46-4047   #61-4716   
.LDDIS	= 045000	#13-1511   #22-2240   #46-4047   #61-4716   
.LDRJD	= 064000	#13-1511   #22-2240   #46-4047   #61-4716   
.LDRJV	= 063000	#13-1511   #22-2240   #46-4047   #61-4716   
.LDRM1	= 060000	#13-1511   #22-2240   #46-4047   #61-4716   
.LDRM2	= 061000	#13-1511   #22-2240   #46-4047   #61-4716   
.LDRM3	= 062000	#13-1511   #22-2240   #46-4047   #61-4716   
.LDSEL	= 044000	#13-1511   #22-2240   #46-4047   #61-4716   
.LPPFL	= ******  GX	 31-2664   *31-2667   
.MEMRS	= 076000	#13-1511   #22-2240   #46-4047   #61-4716   
.PCAB1	= 150000	#13-1511   #22-2240   #46-4047   #61-4716   
.PCAB2	= 151000	#13-1511   #22-2240   #46-4047   #61-4716   
.PCAB3	= 152000	#13-1511   #22-2240   #46-4047   #61-4716   
.PCAB4	= 153000	#13-1511   #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	#13-1511   #22-2240   #46-4047   #61-4716   
.RCRM2	= 146000	#13-1511   #22-2240   #46-4047   #61-4716   
.RCRM3	= 145000	#13-1511   #22-2240   #46-4047   #61-4716   
.RCRM4	= 144000	#13-1511   #22-2240   #46-4047   #61-4716   
.RCSPF	= 141000	#13-1511   #22-2240   #46-4047   #61-4716   
.RDJ14	= 134000	#13-1511   #22-2240   #46-4047   #61-4716   
.RDJ71	= 135000	#13-1511   #22-2240   #46-4047   #61-4716   
.RDMAB	= 133000	#13-1511   #22-2240   #46-4047   #61-4716   
.RPELC	= ******  GX	 10-1160   *10-1165   
.RPELQ	= ******  GX	 10-1166   
.RPUNT	= ******  GX	 19-1999   
.SECLK	= 003000	#13-1511   #22-2240   #46-4047   #61-4716   
.SETMR	= 007000	#13-1511   #22-2240   #46-4047   #61-4716   
.SETRN	= 011000	#13-1511   #22-2240   #46-4047   #61-4716   
.SSCLK	= 002000	#13-1511   #22-2240   #46-4047   #61-4716   
.STDTA	= ******  GX	 66-5256   
.STDTZ	= ******  GX	*66-5254    66-5255   
.STPCL	= 000000	#13-1511   #22-2240   #46-4047   #61-4716   
.STRCL	= 001000	#13-1511   #22-2240   #46-4047   #61-4716   
.TPDBA	= ******  GX	 65-5084   
.TPDEA	= ******  GX	 65-5092   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 19

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

.WRMBX	= 071000	#13-1511   #22-2240   #46-4047   #61-4716   
..AKCR	  014114 RG	#59-4647   
..AKLP	  011566 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	  012010 RG	 36-3383    36-3383    39-3554    39-3554   #44-3945   
..DOL1	  011774 RG	 34-3065    34-3065    39-3509    39-3509   #44-3939   
..DQRN	= ******  GX	 9-540      9-540      14-1575    14-1575    19-1956    19-1956    19-1985    19-1985    33-2905   
                         33-2905   
..DSEV	= ******  GX	 10-771     10-771     15-1743    15-1743    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     15-1750    39-3580    56-4577   
..IODN	= ******  GX	 9-673      9-673      14-1692    14-1692    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	  011646 RG	 33-2994    33-2994    40-3734    40-3734   #43-3868   
..SACK	= ******  GX	 21-2105    32-2762    32-2762   
..SPCR	  014072 RG	#58-4625   
..SPLP	  011414 RG	 33-2960    33-2960    35-3200    35-3200   #41-3768   
..STCR	  014050 RG	#57-4601   
..STIN	= ******  GX	 19-2035    35-3301    35-3301    52-4272    52-4272    53-4487    53-4487   
..STLP	  011204 RG	#40-3651   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	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   #13-1510    14-1575    14-1616    14-1624    14-1650    14-1664   
                 14-1677    14-1680    14-1692    15-1727    15-1743   #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     #13-1510   
                #14-1573   #14-1688   #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     #14-1573   #14-1688   #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     #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     #13-1546    13-1546    13-1546   
                #13-1548    13-1548    13-1548   #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   
PUSH  		#22-2239    32-2701    32-2784    32-2824    32-2863    35-3136    35-3297    36-3381    37-3405    39-3492   
DRIVERS20  CREATED BY  MACRO  ON 3-APR-86 AT 19:06	PAGE 21

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

                 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     #35-3246   #35-3246   
QDPB$S		#68-5393   #68-5393   #69-5431   #69-5431   
QIOSY$		#8-343     #8-345     #13-1508   #13-1509   #22-2238   #22-2241   #61-4715   #61-4717   
QIOW$ 		#8-343      8-473     #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   #13-1510   #16-1813   #17-1841   #17-1861   
                #17-1877   #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     #13-1510   #13-1546   #13-1548   
WTSE$S		#22-2238   #36-3349   #46-4045   
$DEF  		#13-1508   #13-1511   #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     #13-1510   #13-1544   #18-1914   #18-1935   #22-2239   #27-2502   #46-4046   #49-4135   
                #61-4715   #62-4799