Google
 

Trailing-Edge - PDP-10 Archives - BB-H311B-RM - rsx20f-swskit/listings/driver.l20
There are 3 other files named driver.l20 in the archive. Click here to see a list.
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00
TABLE OF CONTENTS

    19- 2075	TITLE PAGE
    20- 2110	COMMON PARAMETERS AND MACROS
    21- 2197	LP-20 DEVICE REGISTER DEFINITIONS
    22- 2267	COMMON DEVICE PARAMETER MODULE
    23- 2300	DEVICE STATUS BIT DEFINITIONS
    24- 2355	LP-20 COMMON DATA MODULE
    25- 2389	COMMON VARIABLES
    26- 2397	LP-20 DEVICE TABLES
    27- 2433	LP-20 DRIVER TASK MODULE
    28- 2473	LPINI	(INITIALIZE LP-20 TASK)
    29- 2531	LPLOOP	(LP-20 DRIVER TASK LOOP)
    30- 2558	LPIOD	(LP TASK I/O DONE)
    31- 2768	LPNIR	(LP TASK QUEUE I/O REQUEST)
    32- 2899	LPMKT	(LP TASK MARK-TIME REQUEST)
    33- 2971	SSTSLP	(SEND LP-20 STATUS TO -10)
    34- 3206	TESTLP	(START LP-20 GOING ON THREADED LIST)
    35- 3278	INITLP	(INITALIZE ALL LP'S)
    36- 3316	LP-20 INTERRUPT SERVICE MODULE
    37- 3348	$LPINT	(LP-20 INTERRUPT SERVICE ROUTINE)
    38- 3467	LP-20 COMMON SUBROUTINES MODULE
    38- 3506	..STLP	(START LP-20 OUTPUT)
    39- 3628	..SPLP	(STOP LP-20 OUTPUT)
    40- 3694	..AKLP	(ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
    41- 3731	..PTLP	(PUT BLOCK IN THREADED OUTPUT LIST)
    42- 3794	..DOLP	(INITIATE LP-20 TRANSFER)
    43- 3889	TITLE PAGE
    44- 3924	COMMON PARAMETERS AND MACROS
    45- 3952	CD-11 DEVICE REGISTER BIT DEFINITIONS
    46- 3980	CD-11 DRIVER COMMON DATA MODULE
    47- 4012	COMMON DATABASE DEFINITIONS
    48- 4044	CD-11 DRIVER TASK MODULE
    49- 4076	TASK INITIALIZATION
    50- 4110	CRLOOP (MAIN PROCESSING LOOP)
    51- 4229	SSTSCR	(SEND CD-11 STATUS TO -10)
    52- 4374	INITCR	(INITIALIZE CD-11)
    53- 4388	CD-11 DRIVER COMMON SUBROUTINES MODULE
    54- 4426	$CDINT	(CD-11 INTERRUPT SERVICE)
    55- 4455	..STCR	(START CD-11)
    56- 4484	..SPCR	(STOP CD-11)
    57- 4507	..AKCR	(READ CARD)
    58- 4537	TITLE PAGE
    59- 4579	MACROS AND PARAMETERS
    60- 4668	TASK DATA
    61- 4718	FIND THE TASK FILE
    62- 4883	INITIALIZE TASK FILE
    63- 4935	SETUP STD ENTRY
    64- 5043	SETUP LOGICAL UNIT TABLE FOR TASK
    65- 5161	RE-REQUEST TASK
    66- 5186	TASK FILE I/O ROUTINES
    67- 5275	ERROR PROCESSING
    68- 5365	END STATEMENT
RSXFC	-- RSX20F PARAMETER FIL	MACRO M1110  12-OCT-79 14:00  PAGE 1


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


     58						$RX11	=1	; INCLUDE FLOPPY DRIVER FOR TOPS-10/1091
     59					.ENDC			; $T1091
     60					.ENDC			; $TOP10
     61
     62					.IF DF	$TOP20
     63		000001 				$RX11	=1	; INCLUDE FLOPPY DRIVER
     64					.ENDC			; $TOP20
RSX20F	-- RESIDENT EXECUTIVE (	MACRO M1110  12-OCT-79 14:00  PAGE 2


     66						.TITLE	RSX20F	-- RESIDENT EXECUTIVE (SYSTEM DEFINITION)
     67						.IDENT	/013410/
     68						.ENABL	AMA
     69						.LIST	MEB
     70						.NLIST	CND
     71					;
     72					;                             COPYRIGHT (C) 1975, 1978 BY
     73					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
     74					;
     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 13-41
     91					;
     92					; MODIFIED BY:
     93					;
     94					; FUNCTION: THIS MODULE PROVIDES THE PARAMETERS FOR ASSEMBLY OF THE RSX20F EXEC.
RSX20F	-- RESIDENT EXECUTIVE (	MACRO M1110  12-OCT-79 14:00  PAGE 3


     96					;
     97					; SET VERSION OF RSX20F EXEC HERE
     98					;
     99		000013 			RSX$$V	=	13		; VERSION 13
    100		000041 			RSX$$E	=	41		; EDIT 41
    101					;
    102					; RELEASE VERSION
    103					;
    104		000126 			RSX$$K	=	'V		; KEY FOR RELEASE-TYPE
    105									; "V" -- RELEASE
    106									; "X" -- EXPERIMENTAL
    107									; "Y" -- FIELD/LOAD TEST
    108		000000 			RSX$$F	=	0		; DEFINE FORM AS NULL
    117		000102 			RSX$$F	=	'B		; TOPS-20 FORM OF THE EXEC.
    122					;
    123					; DTE-20 REGISTER OFFSETS
    124					;
    125		000036 			DAG3	=36
    126		000034 			STATD	=34
    127		000032 			DAG2	=32
    128		000030 			DAG1	=30
    129		000022 			T11AD	=22
    130		000020 			T10AD	=20
    131		000016 			T11BC	=16
    132		000010 			TNAD1	=10
    133		000012 			TNAD2	=12
    134		000006 			DXWD1	=6
    135		000004 			DXWD2	=4
    136		000002 			DXWD3	=2
RSX20F	-- RESIDENT EXECUTIVE (	MACRO M1110  12-OCT-79 14:00  PAGE 4


    138					;+
    139					; MACRO TO SET IDENT FOR EXEC MODULES.
    140					; FORMAT OF CALL IS:
    141					;	IDENT$	VERSION,EDIT
    142					; OR
    143					;	IDENT$	VERSION,EDIT,RSX$$F
    144					; IF MODULE CODING CHANGES WITH DIFFERENT FORMS
    145					;-
    146
    147						.MACRO	IDENT$ VER,EDT,FRM,NUM
    148						.IF	B,NUM
    149						.IF	B,FRM
    150						IDENT$	\VER,\EDT,0,0
    151						.IFF
    152						.IF	EQ,<FRM-'A>
    153						IDENT$	\VER,\EDT,A,0
    154						.IFF
    155						.IF	EQ,<FRM-'B>
    156						IDENT$	\VER,\EDT,B,0
    157						.IFF
    158						IDENT$	\VER,\EDT,E,0
    159						.ENDC
    160						.ENDC
    161						.ENDC
    162						.MEXIT
    163						.IFF
    164						.IF	GE,VER-10
    165						.IF	GE,EDT-10
    166						.LIST
    167						.IDENT	/'FRM'VER'EDT'0/
    168						.NLIST
    169						.IFF
    170						.LIST
    171						.IDENT	/'FRM'VER'0'EDT'0/
    172						.NLIST
    173						.ENDC
    174						.IFF
    175						.IF	GE,EDT-10
    176						.LIST
    177						.IDENT	/'FRM'0'VER'EDT'0/
    178						.NLIST
    179						.IFF
    180						.LIST
    181						.IDENT	/'FRM'0'VER'0'EDT'0/
    182						.NLIST
    183						.ENDC
    184						.ENDC
    185						.ENDC
    186						.ENDM	IDENT$
    187						.TITLE	ARITH
    188						.IDENT	/001000/
    189
    190					;
    191					;                             COPYRIGHT (C) 1972, 1978 BY
    192					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
    193					;
    194					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
ARITH	MACRO M1110  12-OCT-79 14:00  PAGE 4-1


    195					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
    196					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
    197					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
    198					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
    199					;
    200					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
    201					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
    202					;       CORPORATION.
    203					;
    204					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
    205					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
    206					;
    207					; VERSION 01-00
    208					;
    209					; D. N. CUTLER 10-FEB-72
    210
    211
    212						.MCALL	RETURN
    213
    214
    215					;+
    216					; **-$MUL-INTEGER MULTIPLY MAGNITUDE NUMBERS
    217					;
    218					; INPUTS:
    219					;
    220					;	R0=MULTIPLIER.
    221					;	R1=MULTIPLICAND.
    222					;
    223					; OUTPUTS:
    224					;
    225					;	DOUBLE WORD RESULT IS RETURNED WITH THE
    226					;	HIGH PART IN R0 AND THE LOW PART IN R1.
    227					;
    228					;	REGISTERS R2, R3, R4, AND R5 ARE PRESERVED ACROSS CALL.
    229					;-
    230
    231						.ENABL	LSB
    232	000000	010046 			$MUL::	MOV	R0,-(SP)	;SAVE R0 FOR ADDS
    233	000002	012746 	000021 			MOV	#21,-(SP)	;SET REPEAT COUNT
    234	000006	005000 				CLR	R0		;CLEAR HIGH PART
    235	000010	006000 			10$:	ROR	R0		;DOUBLE RIGHT SHIFT
    236	000012	006001 				ROR	R1		;
    237	000014	103003 				BCC	20$		;IF CC DO NOT ADD
    238	000016	066600 	000002 			ADD	2(SP),R0	;
    239	000022	000241 				CLC			;CLEAR CARRY INDICATOR
    240	000024	005316 			20$:	DEC	(SP)		;DECREMENT REPEAT COUNT
    241	000026	003370 				BGT	10$		;IF GT MORE TO GO
    242	000030	000415 				BR	50$		;EXIT TO CALLER
    243
    244					;+
    245					; **-$DIV-INTEGER DIVIDE MAGNITUDE NUMBERS
    246					;
    247					; INPUTS:
    248					;
    249					;	R0=DIVIDEND.
    250					;	R1=DIVISOR.
    251					;
ARITH	MACRO M1110  12-OCT-79 14:00  PAGE 4-2


    252					; OUTPUTS:
    253					;
    254					;	QUOTIENT IS RETURNED IN R0 AND REMAINDER IN R1.
    255					;
    256					;	REGISTERS R2, R3, R4, AND R5 ARE PRESERVED ACROSS CALL.
    257					;-
    258
    259	000032	012746 	000020 		$DIV::	MOV	#20,-(SP)	;SET LOOP COUNT
    260	000036	010146 				MOV	R1,-(SP)	;SAVE DIVISOR FOR SUBTRACTS
    261	000040	005001 				CLR	R1		;CLEAR REMAINDER
    262	000042	006300 			30$:	ASL	R0		;DOUBLE LEFT SHIFT
    263	000044	006101 				ROL	R1		;
    264	000046	020116 				CMP	R1,(SP)		;SUBTRACT OUT DIVISOR?
    265	000050	103402 				BLO	40$		;IF LO NO
    266	000052	161601 				SUB	(SP),R1		;SUBTRACT OUT DIVISOR
    267	000054	005200 				INC	R0		;ADD IN LOW BIT
    268	000056	005366 	000002 		40$:	DEC	2(SP)		;DECREMENT REPEAT COUNT
    269	000062	003367 				BGT	30$		;IF GT MORE TO GO
    270	000064	022626 			50$:	CMP	(SP)+,(SP)+	;CLEAN STACK
    271	000066					RETURN			;
	000066	000207 				RTS	PC
    272						.DSABL	LSB
DBDRV -- RP04/RP06 DRIVER	MACRO M1110  12-OCT-79 14:00  PAGE 5


    274						.TITLE	DBDRV -- RP04/RP06 DRIVER
    275						.IDENT	/010040/
    276						.LIST	MEB
    277					;
    278					;
    279					;
    280					;                             COPYRIGHT (C) 1974, 1978 BY
    281					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
    282					;
    283					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
    284					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
    285					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
    286					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
    287					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
    288					;
    289					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
    290					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
    291					;       CORPORATION.
    292					;
    293					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
    294					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
    295					;
    296					;
    297					;
    298					;
    299					;		AUTHOR:   D. N. CUTLER
    300					;		DATE:     2-JUL-74
    301					;		VERSION:  10-04
    302					;
    303					;
    304					;
    305					; MODIFICATIONS:
    306					;
    307					;	NO.		DATE		PROGRAMMER
    308					;	---		----		----------
    309					;	001		17-JUN-75	R. MCLEAN
    310					;	002		19-JUL-76	J. MASSE
    311					;	003		28-MAR-77	A. PECKHAM	FIX POWER FAIL RECOVERY
    312					;	004		27-JUL-77	R. BELANGER	ADD 18-BIT ECC CORRECTION
DBDRV -- RP04/RP06 DRIVER	MACRO M1110  12-OCT-79 14:00  PAGE 6


    314					;
    315					; CONDITIONAL ASSEMBLY SWITCH DEFINITIONS
    316					;
    317
    318		000001 			$DIRAC	=1
    319
    320					;R$$JPO	=1			;IF DEFINED, INCLUDE TRACK OFFSETTING
    321
    322		000001 			R$$E18 =1			; +++004 IF DEFINED, INCLUDE 18-BIT ECC CORRECTION
    323
    324					;R$$E16 =1			; +++004 IF DEFINED, INCLUDE 16-BIT ECC CORRECTION
    325
    326					;
    327					; MACRO LIBRARY CALLS
    328					;
    329
    330						.MCALL	WTSE$,CLEF$,MRKT$,QIOW$,DIR$,CALL,RETURN,.STKM,QIOSY$,WSIG$S
    331
    332	000070					QIOSY$
    333
    334
    335
    336					; DEVICE REGISTER AND STATUS BIT DEFINITIONS
    337
    338
    339		176700 			RPEXP=176700			;RPCS1 EXTERNAL PAGE ADDRESS
    340
    341
    342
    343		000000 			RPCS1=0				;CONTROL STATUS REGISTER 1
    344
    345		040000 			TRE=40000			;TRANSFER ERROR
    346		020000 			MCPE=20000			;MASSBUS CONTROL PARITY ERROR
    347		004000 			DVA=4000			;DRIVE AVAILABLE
    348
    349
    350
    351		000002 			RPWC=2				;WORD COUNT REGISTER
    352
    353		000004 			RPBA=4				;BUFFER ADDRESS REGISTER
    354
    355		000006 			RPDA=6				;DESIRED TRACK/SECTOR REGISTER
    356
    357
    358
    359		000010 			RPCS2=10			;CONTROL STATUS REGISTER 2
    360
    361		100000 			DLT=100000			;DATA LATE ERROR
    362		040000 			WCE=40000			;WRITE CHECK ERROR
    363		020000 			UPE=20000			;UNIBUS PARITY ERROR
    364		010000 			NED=10000			;NONEXISTENT DISK ERROR
    365		004000 			NEM=4000			;NONEXISTENT MEMORY ERROR
    366		002000 			PGE=2000			;PROGRAMMING ERROR
    367		001000 			MXF=1000			;MISSED TRANSFER ERROR
    368		000400 			MDPE=400			;MASSBUS DATA PARITY ERROR
    369
    370
DBDRV -- RP04/RP06 DRIVER	MACRO M1110  12-OCT-79 14:00  PAGE 6-1


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


    428		000046 			RPEC2=46			;ECC PATTERN REGISTER
    429
    430					;
    431					; ERROR RETRY COUNT
    432					;
    433
    434		000010 			RETRY=8.			;CONTROLLER ERROR RETRY COUNT
    435
    436
    437					; LOCAL DATA
    438					;
    439					;
    440
    441	000070				RPHD::	.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
    442
    443	000370				DBIOD:	WTSE$	E.IOD
	000370	   051 	   002 			.BYTE	41.,2
	000372	000000G				.WORD	E.IOD
    444
    445	000374				CLIOD:	CLEF$	E.IOD		;CLEAR I/O DONE FLAG
	000374	   037 	   002 			.BYTE	31.,2
	000376	000000G				.WORD	E.IOD
    446
    447	000400				RPWLO:	WTSE$	E.NIR		;WAIT FOR QIO
	000400	   051 	   002 			.BYTE	41.,2
	000402	000000G				.WORD	E.NIR
    448
    449	000404				MKDNR::	MRKT$	1,74.*10,0,0	;WAIT FOR FIX
	000404	   027 	   005 			.BYTE	23.,5
	000406	000001 				.WORD	1
	000410	001120 				.WORD	74.*10
	000412	000000 				.WORD	0
	000414	000000 				.WORD	0
    450
DBDRV -- RP04/RP06 DRIVER	MACRO M1110  12-OCT-79 14:00  PAGE 6-3


    451	000416				WFDNR::	WTSE$	1		;WAIT
	000416	   051 	   002 			.BYTE	41.,2
	000420	000001 				.WORD	1
    452
    453	000422				MSGDPB:	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
    454
    455	000442	   015 	   012 	   104 	DNMSG:	.ASCII	<15><12>"DB NOT RDY"<15><12>
	000445	   102 	   040 	   116
	000450	   117 	   124 	   040
	000453	   122 	   104 	   131
	000456	   015 	   012
    456
    457	000460	   015 	   012 	   104 	DUNS:	.ASCII	<15><12>"DB UNSAFE "<15><12>
	000463	   102 	   040 	   125
	000466	   116 	   123 	   101
	000471	   106 	   105 	   040
	000474	   015 	   012
    458						.EVEN
    459
    460		000016 			MSGSIZ	=14.			;MESSAGE SIZE
    461
    480
    482
    483	000476				ECCWRD:
    484	000476	000000 	000000 	000000 		.WORD	0,0,0
    485	000504				ECCMSK:
    486	000504	000000 	000000 	000000 		.WORD	0,0,0
    487
DBDRV -- RP04/RP06 DRIVER	MACRO M1110  12-OCT-79 14:00  PAGE 7


    490					;
    491					;+
    492					; **-DBINI-RH11-RP04 DISK PACK CONTROLLER INITIATOR
    493					;
    494					; THIS ROUTINE IS ENTERED FROM THE QUEUE I/O DIRECTIVE WHEN AN I/O REQUEST
    495					; IS QUEUED AND AT THE END OF A PREVIOUS I/O OPERATION TO PROPAGATE THE EXECU-
    496					; TION OF THE DRIVER. IF THE SPECIFIED CONTROLLER IS NOT BUSY, THEN AN ATTEMPT
    497					; IS MADE TO DEQUEUE THE NEXT I/O REQUEST. ELSE A RETURN TO THE CALLER IS
    498					; EXECUTED. IF THE DEQUEUE ATTEMPT IS SUCCESSFUL, THEN THE NEXT I/O OPER-
    499					; ATION IS INITIATED. A RETURN TO THE CALLER IS THEN EXECUTED.
    500					;
    501					; INPUTS:
    502					;
    503					;
    504					; OUTPUTS:
    505					;
    506					;	IF THE SPECIFIED CONTROLLER IS NOT BUSY AND AN I/O REQUEST IS WAIT-
    507					;	ING TO BE PROCESSED, THEN THE REQUEST IS DEQUEUED AND THE I/O OPER-
    508					;	ATION IS INITIATED.
    509					;-
    510
    511						.ENABL	LSB
    512
    513	000512				DBINI:	DIR$	#RPWLO		;WAIT FOR SOMETHING TO DO
	000512	012746 	000400'			MOV	#RPWLO,-(SP)
	000516	104375 				EMT	375
    514	000520	012700 	041104 			MOV	#"DB,R0		;DQ THE REQUEST
    515	000524					CALL	..DQRN
	000524	004737 	000000G			JSR	PC,..DQRN
    516	000530	103770 				BCS	DBINI		;NOTHING GO BACK TO SLEEP
    517
    532
    533	000532	010137 	000000G		4$:	MOV	R1,RPRNA	;SAVE THE REQUST NODE ADDRESS
    534	000536	010337 	000000G			MOV	R3,RPCNT	;SAVE THE TRANSFER SIZE
    535	000542	010237 	000000G			MOV	R2,RPUNIT	;SAVE UNIT NUMBER
    536	000546	010537 	000002G			MOV	R5,RPBUF+2	;SAVE THE XFER ADDRESS
    537	000552	006304 				ASL	R4		;SHIF TO CORRECT POSITION
    538	000554	006304 				ASL	R4
    539	000556	006304 				ASL	R4
    540	000560	006304 				ASL	R4
    541	000562	010437 	000000G			MOV	R4,RPBUF	;SAVE ADDRESS (HIGH ORDER)
    542	000566	052737 	000171 	000000G		BIS	#171,RPBUF	;ASSUME READ LOGICAL FUNCTION
    543	000574	122761 	000002 	000001G		CMPB	#IO.RLB/256.,R.FC+1(R1) ;READ LOGICAL FUNCTION?
    544	000602	001412 				BEQ	10$		;IF EQ YES
    545	000604	122761 	000001 	000001G		CMPB	#IO.WLB/256.,R.FC+1(R1)
    546	000612	001403 				BEQ	5$
    547	000614	012703 	177776 			MOV	#IE.IFC,R3
    548	000620	000553 				BR	46$
    549	000622				5$:
    550	000622	162737 	000010 	000000G		SUB	#10,RPBUF	;CONVERT TO WRITE LOGICAL FUNCTION
    551	000630	012737 	000010 	000000G	10$:	MOV	#RETRY,RPRTC	;SET RETRY COUNT
    552
    559
    560	000636	005002 				CLR	R2
    561	000640	156102 	000006G			BISB	R.PB+6(R1),R2
    562	000644	016100 	000010G			MOV	R.PB+10(R1),R0
    563	000650	010103 				MOV	R1,R3		;SAVE NODE ADDRESS
DBDRV -- RP04/RP06 DRIVER	MACRO M1110  12-OCT-79 14:00  PAGE 7-1


    564	000652	012701 	000020 			MOV	#16.,R1
    565
    566	000656	006300 			20$:	ASL	R0
    567	000660	006102 				ROL	R2		;
    568	000662	020227 	000574 			CMP	R2,#19.*20.	;PARTIAL REMAINDER LARGER THAN DIVISOR?
    569	000666	103403 				BLO	30$		;IF LO NO
    570	000670	162702 	000574 			SUB	#19.*20.,R2
    571	000674	005200 				INC	R0
    572	000676	005301 			30$:	DEC	R1
    573	000700	003366 				BGT	20$		;IF GT YES
    574	000702	010063 	000006G			MOV	R0,R.PB+6(R3)
    575	000706	010200 				MOV	R2,R0		;SET DIVIDEND TO TRACK/SECTOR REMAINDER
    576	000710	012701 	000024 			MOV	#20.,R1		;SET DIVISOR TO NUMBER OF SECTORS/TRACK
    577	000714					CALL	$DIV		;CALCULATE TRACK AND SECTOR
	000714	004737 	000032'			JSR	PC,$DIV
    578	000720	000300 				SWAB	R0		;SWAP TRACK TO HIGH BYTE
    579	000722	050100 				BIS	R1,R0		;MERGE TRACK
    580	000724	010063 	000010G			MOV	R0,R.PB+10(R3)
    581
    582					;
    583					; INITIATE I/O OPERATION
    584					;
    585
    586	000730	012703 	176710 		40$:	MOV	#RPEXP+RPCS2,R3	;GET ADDRESS OF CSR
    587	000734	012713 	000040 			MOV	#40,@R3		;CLEAR RH11+CONTROLLER
    588	000740	113713 	000000G			MOVB	RPUNIT,@R3
    589	000744	012703 	176700 			MOV	#RPEXP,R3
    590	000750	012713 	000021 		41$:	MOV	#21,@R3		; +++003 EXECUTE PACK ACK FUNCTION TO SET VV
    591	000754	032737 	000340 	177776 		BIT	#340,@#PS	;IN INTERRUPT SERVICE?
    592	000762	001007 				BNE	42$		;LEAVE IT ALONE -- MUST HAVE PORT HERE
    593	000764	032713 	004000 			BIT	#DVA,@R3	;DRIVE AVAILABLE?
    594	000770	001004 				BNE	42$		;YES -- USE IT
    595	000772					WSIG$S			;NO -- BETTER WAIT FOR IT
	000772	012746 				MOV	(PC)+,-(SP)
	000774	   061 	   001 			.BYTE	49.,1
	000776	104375 				EMT	375
    596	001000	000763 				BR	41$		;MAKE ANOTHER TRY
    597
    598	001002				42$:
    599	001002	012713 	000023 			MOV	#23,@R3		;PACK ACK AGAIN
    600	001006	032713 	004000 			BIT	#DVA,@R3	;WATCH FOR TIMING AND MISSING DRIVE
    601	001012	001756 				BEQ	41$		; MISSED IT -- TRY AGAIN
    602	001014	013702 	000000G		43$:	MOV	RPRNA,R2	;GET ADDRESS OF I/O PACKET
    603	001020	012703 	176710 			MOV	#RPEXP+RPCS2,R3	;POINT TO SECOND CSR
    604	001024	113713 	000000G			MOVB	RPUNIT,@R3 	;SELECT PROPER DRIVE
    605	001030	016243 	000010G			MOV	R.PB+10(R2),-(R3) ;INSERT TRACK/SECTOR ADDRESS
    606	001034	013743 	000002G			MOV	RPBUF+2,-(R3) 	;INSERT BUFFER ADDRESS
    607	001040	013743 	000000G			MOV	RPCNT,-(R3)	;INSERT NUMBER OF BYTES TO TRANSFER
    608	001044	006013 				ROR	@R3		;CONVERT TO WORD COUNT
    609	001046	005413 				NEG	@R3		;MAKE NEGATIVE WORD COUNT
    610	001050	005743 				TST	-(R3)		;POINT TO BEGINNING
    611
    621
    622	001052	012700 	000375 			MOV	#IE.DNR&377,R0	;ASSUME DRIVE NOT READY
    623	001056	016301 	000012 			MOV	RPDS(R3),R1	;GET CURRENT DRIVE STATUS
    624	001062	005101 				COM	R1		;COMPLEMENT STATUS
    625	001064	032701 	010300 			BIT	#MOL!DRY!VV,R1	;DRIVE READY?
DBDRV -- RP04/RP06 DRIVER	MACRO M1110  12-OCT-79 14:00  PAGE 7-2


    626	001070	001035 				BNE	47$		;IF NE NO
    627	001072	032763 	040000 	000014 		BIT	#UNS,RPER1(R3)	;DRIVE UNSAFE?
    628	001100	001052 				BNE	49$		;IF NE YES
    629	001102	016263 	000006G	000034 		MOV	R.PB+6(R2),RPDC(R3) ;SET DESIRED CYLINDER ADDRESS
    630	001110	013713 	000000G			MOV	RPBUF,@R3	;START FUNCTION
    631	001114	032737 	000340 	177776 		BIT	#340,@#PS	;CHECK FOR RESTART FROM INTERRUPT SERVICE LEVEL
    632	001122	001131 				BNE	85$		;YES -- RETURN FROM INTERRUPT
    633	001124					DIR$	#DBIOD		;WAIT FOR I/O DONE
	001124	012746 	000370'			MOV	#DBIOD,-(SP)
	001130	104375 				EMT	375
    634	001132					DIR$	#CLIOD		;CLEAR I/O DONE FLAG
	001132	012746 	000374'			MOV	#CLIOD,-(SP)
	001136	104375 				EMT	375
    635	001140	013701 	000000G			MOV	RPRNA,R1	;FIND THE REQUEST NODE
    636	001144	013703 	000000G			MOV	RPBUF,R3	;FIND THE I/O STATUS
    637	001150	013704 	000002G		46$:	MOV	RPBUF+2,R4	;BOTH HALVES
    638	001154					CALL	..IODN		;FINISH I/O
	001154	004737 	000000G			JSR	PC,..IODN
    639	001160	000137 	000512'			JMP	DBINI		;WAIT FOR NEXT
    640
    641	001164	012737 	000442'	000436'	47$:	MOV	#DNMSG,MSGDPB+Q.IOPL  ;SET FOR NOT READY MESSAGE
    642
    643	001172	032737 	000340 	177776 	48$:	BIT	#340,@#PS	;CHECK FOR ENTRY FROM PRI
    644	001200	001060 				BNE	60$		;YES -- GO RE-TRY
    645	001202					DIR$	#MSGDPB		;COMPLAIN
	001202	012746 	000422'			MOV	#MSGDPB,-(SP)
	001206	104375 				EMT	375
    646	001210					DIR$	#MKDNR		;WAIT FOR FIX
	001210	012746 	000404'			MOV	#MKDNR,-(SP)
	001214	104375 				EMT	375
    647	001216					DIR$	#WFDNR		;WAIT
	001216	012746 	000416'			MOV	#WFDNR,-(SP)
	001222	104375 				EMT	375
    648	001224	000641 				BR	40$		;AND TRY AGAIN
    649
    650	001226	012737 	000460'	000436'	49$:	MOV	#DUNS,MSGDPB+Q.IOPL  ;SET FOR UNSAFE MESSAGE
    651	001234	000756 				BR	48$		;TYPE MESSAGE
DBDRV -- RP04/RP06 DRIVER	MACRO M1110  12-OCT-79 14:00  PAGE 8


    653					;
    654					;+
    655					; **-.DBINT-RH11-RP04 DISK PACK CONTROLLER INTERRUPTS
    656					;-
    657					;
    658
    659	001236	010046 			.DBINT::MOV	R0,-(SP)	;SAVE REGISTERS
    660	001240	010146 				MOV	R1,-(SP)
    661	001242	010246 				MOV	R2,-(SP)
    662	001244	010346 				MOV	R3,-(SP)
    663	001246	012702 	176700 			MOV	#RPEXP,R2	;GET ADDRESS OF CSR
    664
    671
    672	001252	012700 	000001 			MOV	#IS.SUC&377,R0	;ASSUME SUCCESSFUL TRANSFER
    673	001256	032712 	060000 			BIT	#TRE!MCPE,@R2	;ANY ERRORS?
    674	001262	001432 				BEQ	70$		;IF EQ NO
    675	001264	012700 	000374 			MOV	#IE.VER&377,R0	;ASSUME UNRECOVERABLE ERROR
    676	001270	016201 	000014 			MOV	RPER1(R2),R1	;GET CONTENTS OF ERROR REGISTER
    677	001274	032701 	047007 			BIT	#UNS!WLE!IAE!AOE!RMR!ILR!ILF,R1	;HARD ERROR?
    678	001300	001004 				BNE	50$		;IF NE YES
    679	001302	032762 	014000 	000010 		BIT	#NED!NEM,RPCS2(R2) ;HARD ERROR?
    680	001310	001446 				BEQ	100$		;IF EQ NO
    681	001312	032701 	004000 		50$:	BIT	#WLE,R1		;WRITE LOCK ERROR?
    682	001316	001403 				BEQ	52$		;IF EQ NO
    683	001320	012700 	000364 			MOV	#IE.WLK&377,R0	;SET WRITE LOCK ERROR
    684	001324	000415 				BR	80$		;
    685
    686	001326	032701 	003000 		52$:	BIT	#IAE!AOE,R1	;CHECK FOR ILLEGAL CYL
    687	001332	001412 				BEQ	80$		;NO --  UNRECOVERABLE ERROR
    688	001334	012700 	000354 			MOV	#IE.BLK&377,R0	;SET ILLEGAL BLOCK
    689	001340	000407 				BR	80$		;AND RETURN
    690
    701
    702					;
    703					; DEVICE TIMEOUT RESULTS IN THE CURRENT OPERATION BEING REPEATED. TIMEOUTS ARE
    704					; USUALLY CAUSED BY POWERFAILURE BUT MAY ALSO BE THE RESULT OF A HARDWARE FAILURE
    705					;
    706
    707	001342	105337 	000000G		60$:	DECB	RPRTC		;RETRY FUNCTION?
    708
    714
    715	001346	003025 				BGT	82$		;IF GT YES
    716
    718
    719	001350	013701 	000000G		70$:	MOV	RPRNA,R1	;GET ADDRESS OF I/O PACKET
    720	001354	016101 	000002G			MOV	R.PB+2(R1),R1	;SET FINAL VALUE OF SECOND STATUS WORD
    721	001360				80$:				;REF LABEL
    722	001360	012712 	000013 			MOV	#13,@R2		;RELEASE DUAL PORT
    723	001364	010037 	000000G			MOV	R0,RPBUF	;SAVE THE STATUS
    724	001370	010137 	000002G			MOV	R1,RPBUF+2
    725	001374	052737 	000000G	000020G		BIS	#EF.IOD,RPTSK+A.EF	;SET I/O DONE
    726	001402					CALL	..DSEV		;DECLARE  SIG EVENT
	001402	004737 	000000G			JSR	PC,..DSEV
    727	001406	012603 			85$:	MOV	(SP)+,R3	;RESTORE REGISTERS
    728	001410	012602 				MOV	(SP)+,R2
    729	001412	012601 				MOV	(SP)+,R1
    730	001414	012600 				MOV	(SP)+,R0
DBDRV -- RP04/RP06 DRIVER	MACRO M1110  12-OCT-79 14:00  PAGE 8-1


    731	001416	000137 	000000G			JMP	@#..INTX	;RETURN FROM INTERRUPTS
    732
    733
    734	001422	000137 	000730'		82$:	JMP	40$
    735
    741
    742	001426	032762 	163400 	000010 	100$:	BIT	#DLT!WCE!UPE!PGE!MXF!MDPE,RPCS2(R2) ;CONTROLLER ERROR?
    743	001434	001342 				BNE	60$		;IF NE YES
    744
    751
    752	001436	005701 				TST	R1		;DATA CHECK ERROR?
    753	001440	100340 				BPL	60$		;IF PL NO
    754
    756
    757	001442	032701 	000100 			BIT	#ECH,R1		;ECC HARD ERROR?
    758	001446	001335 				BNE	60$		;IF NE YES
    759
    761
    762					;
    763					; START ECC CORRECTION PROCEDURE
    764					;
    765					; FIRST CALCULATE THE BYTE OFFSET TO THE START OF BLOCK TRANSFERED
    766					;
    767
    768	001450	016200 	000002 		105$:	MOV	RPWC(R2),R0	;GET NEGATIVE NUMBER OF WORDS REMAINING
    769	001454	006300 				ASL	R0		;CONVERT TO NEGATIVE BYTES REMAINING
    770	001456	063700 	000000G			ADD	RPCNT,R0	;CALCULATE NUMBER OF BYTES TRANSFERED
    771
    780
    781	001462	005300 				DEC	R0		;CALCULATE OFFSET TO START OF BLOCK
    782	001464	042700 	000777 		107$:	BIC	#777,R0		;CLEAR RESIDUE
    783
    791
    793
    794					;
    795					; 18-BIT ECC CORRECTION ROUTINES
    796					;
    797					; THE WORD IN ERROR AND THE WORD FOLLOWING IT ARE SET UP AS A TRIPLET
    798					; (TWO 18-BIT WORDS) AS IS THE ECC CORRECTION MASK FROM THE CONTROLLER.
    799					; THE MASK TRIPLET IS POSITIONED OVER THE DATA TRIPLET, CORRECTION IS
    800					; APPLIED, AND THE TWO DATA WORDS RETUNED TO THE BUFFER. THE CURRENT
    801					; OPERATION THEN PROCEEDS NORMALLY.
    802					;
    803	001470	016203 	000044 			MOV	RPEC1(R2),R3	; LOOK AT POSITION REGISTER
    804	001474	001731 				BEQ	80$		; INCORRIGIBLE IF .EQ. 0
    805	001476	010300 				MOV	R3,R0		; POSITION REGISTER TO R0
    806	001500	005300 				DEC	R0		; MINUS 1
    807	001502	012701 	000022 			MOV	#^D18,R1	; DIVIDE BY 18.
    808	001506					CALL	$DIV		; SO
	001506	004737 	000032'			JSR	PC,$DIV
    809					;
    810					; COMPUTE THE ADDRESS OF THE WORD IN ERROR
    811					;
    812					;	R0 -- WORD OFFSET IN TRANSFER
    813					;	R1 -- SHIFT COUNT FOR ECC MASK
    814					;	R2 -- BASE OF CONTROLLER REGISTERS
    815					;	R3 -- OFFSET INTO TRANSFER BUFFER
DBDRV -- RP04/RP06 DRIVER	MACRO M1110  12-OCT-79 14:00  PAGE 8-2


    816					;
    817	001512	006300 				ASL	R0		; CONVERT TO BYTE OFFSET
    818	001514	013703 	000002G			MOV	RPBUF+2,R3	; BUFFER ADDRESS TO R3
    819	001520	060003 				ADD	R0,R3		; POINT TO WORD IN ERROR
    820					;
    821					; CONSTRUCT THE CORRECTION MASK TRIPLET
    822					;
    823	001522	012700 	000512'			MOV	#ECCMSK+6,R0	; POINT TO THE MASK BUFFER
    824	001526	005040 				CLR	-(R0)		; CLEAR IT OUT
    825	001530	005040 				CLR	-(R0)		; SO
    826	001532	016240 	000046 			MOV	RPEC2(R2),-(R0)	; SET THE MASK WORD IN THE BUFFER
    827	001536					CALL	141$		; SHIFT IT INTO CORRECT POSITION
	001536	004737 	001666'			JSR	PC,141$
    828					;
    829					; CONSTRUCT THE ERROR DATA TRIPLET
    830					;
    831	001542	005723 				TST	(R3)+		; POINT TO THE SECOND ERROR WORD
    832	001544	012700 	000504'			MOV	#ECCWRD+6,R0	; POINT TO THE ECC WORD BUFFER
    833	001550	005040 				CLR	-(R0)		; CLEAR IT OUT
    834	001552	005040 				CLR	-(R0)		; SO
    835	001554	011340 				MOV	(R3),-(R0)	; SET SECOND ERROR WORD IN BUFFER
    836	001556	012701 	000022 			MOV	#^D18,R1	; SHIFT IT INTO THE HIGH 18. BITS
    837	001562					CALL	141$		; SO
	001562	004737 	001666'			JSR	PC,141$
    838	001566	014310 				MOV	-(R3),(R0)	; SET THE FIRST ERROR WORD IN THE BUFFER
    839	001570	012701 	000504'			MOV	#ECCMSK,R1	; POINT TO THE SHIFTED MASK
    840					;
    841					; APPLY CORRECTION TO EACH WORD IN THE DATA TRIPLET
    842					;
    843	001574					CALL	130$		; CORRECT BITS 00 THRU 16
	001574	004737 	001654'			JSR	PC,130$
    844	001600					CALL	130$		; CORRECT BITS 17 THRU 32
	001600	004737 	001654'			JSR	PC,130$
    845	001604					CALL	130$		; CORRECT BITS 33 THRU 36
	001604	004737 	001654'			JSR	PC,130$
    846					;
    847					; REPLACE THE ERROR WORDS WITH THOSE JUST CORRECTED
    848					;
    849	001610	162700 	000006 			SUB	#6,R0		; BACK THE POINTER UP
    850	001614	011023 				MOV	(R0),(R3)+	; SET FIRST CORRECTED WORD IN BUFFER
    851	001616	012701 	177756 			MOV	#-^D18,R1	; SHIFT COUNT TO R1
    852	001622					CALL	141$		; SHIFT SECOND CORRECTED WORD DOWN
	001622	004737 	001666'			JSR	PC,141$
    853	001626	011013 				MOV	(R0),(R3)	; SET SECOND CORRECTED WORD IN BUFFER
    854					;
    855					; CONTINUE OR TERMINATE PREVIOUS OPERATION
    856					;
    857
    859
    905
    906					;
    907					; SIXTH FINISH OR CONTINUE PREVIOUS FUNCTION
    908					;
    909
    910	001630	012700 	000001 			MOV	#IS.SUC&377,R0	;ASSUME SUCCESSFUL TRANSFER
    911	001634	112712 	000011 			MOVB	#11,@R2		;CLEAR DRIVE ERRORS
    912
DBDRV -- RP04/RP06 DRIVER	MACRO M1110  12-OCT-79 14:00  PAGE 8-3


    918
    919	001640	005762 	000002 			TST	RPWC(R2)	;ANY MORE WORDS TO TRANSFER?
    920
    922
    923	001644	001641 				BEQ	70$		;IF EQ NO
    924
    933
    934	001646	113712 	000000G			MOVB	RPBUF,@R2	;RESTART PREVIOUS OPERATION
    935	001652	000655 				BR	85$
    936
    938
    939					;
    940					; APPLY CORRECTION TO ONE WORD IN THE ERROR TRIPLET
    941					;
    942					; INPUTS:
    943					;
    944					;	R0 POINTS TO WORD IN DATA TRIPLET TO BE CORRECTED
    945					;	R1 POINTS TO WORD IN MASK TRIPLET TO BE APPLIED TO DATA
    946					;
    947					; OUTPUTS:
    948					;
    949					;	R0 POINTS TO THE NEXT WORD IN THE DATA TRIPLET
    950					;	R1 POINTS TO THE NEXT WORD IN THE MASK TRIPLET
    951					;
    952	001654				130$:
    953	001654	011146 				MOV	(R1),-(SP)	; CURRENT MASK TO STACK
    954	001656	041016 				BIC	(R0),(SP)	; .NOT. MASK .AND. DATA
    955	001660	042110 				BIC	(R1)+,(R0)	; .NOT. DATA .AND. MASK
    956	001662	052620 				BIS	(SP)+,(R0)+	; DATA .OR. MASK
    957	001664				140$:
    958	001664					RETURN			; FOR MORE
	001664	000207 				RTS	PC
    959					;
    960					; SHIFT A TRIPLET EITHER RIGHT OR LEFT
    961					;
    962					; INPUTS:
    963					;
    964					;	R0 POINTS TO TRIPLET TO BE SHIFTED
    965					;	R1 HAS SHIFT COUNT -
    966					;		.GT. 0 => SHIFT LEFT
    967					;		.EQ. 0 => NO SHIFT
    968					;		.LT. 0 => SHIFT RIGHT
    969					;
    970					; NO REGISTERS ALTERED
    971					;
    972	001666				141$:
    973	001666	010146 				MOV	R1,-(SP)	; SAVE SHIFT COUNT
    974	001670	100407 				BMI	143$		; SHIFT RIGHT IF NEGATIVE
    975	001672	001414 				BEQ	145$		; GO AWAY IF .EQ. 0
    976	001674				142$:
    977	001674	006320 				ASL	(R0)+		; SHIFT AWAY TO THE LEFT
    978	001676	006120 				ROL	(R0)+		; PROPAGATE CARRY
    979	001700	006110 				ROL	(R0)		; FOR ALL THREE WORDS
    980	001702	024040 				CMP	-(R0),-(R0)	; BACK THE POINTER UP
    981	001704	077105 				SOB	R1,142$		; LOOP TILL DONE
    982	001706	000406 				BR	145$		; EXIT
    983						;
DBDRV -- RP04/RP06 DRIVER	MACRO M1110  12-OCT-79 14:00  PAGE 8-4


    984	001710				143$:
    985	001710	005401 				NEG	R1		; SO "SOB" WORKS
    986	001712				144$:
    987	001712	006220 				ASR	(R0)+		; SHIFT THE TRIPLE WORD RIGHT
    988	001714	006020 				ROR	(R0)+		; PROPAGATE CARRY
    989	001716	006010 				ROR	(R0)		; ALL THE WAY
    990	001720	024040 				CMP	-(R0),-(R0)	; BACK THE POINTER UP
    991	001722	077105 				SOB	R1,144$		; TRY FOR MORE
    992	001724				145$:
    993	001724	012601 				MOV	(SP)+,R1	; RESTORE SHIFT COUNT
    994	001726					RETURN			; TO CALLER
	001726	000207 				RTS	PC
    995
    997
   1015
   1016					;
   1017					; OFFSET RECOVERY
   1018					;
   1019
   1086
   1087
   1088						.DSABL	LSB
DXDRV	MACRO M1110  12-OCT-79 14:00  PAGE 10


   1350						.TITLE	DXDRV
   1351						.IDENT	/007000/
   1352					;
   1353					;                             COPYRIGHT (C) 1975, 1978 BY
   1354					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   1355					;
   1356					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   1357					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   1358					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   1359					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   1360					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   1361					;
   1362					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   1363					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   1364					;       CORPORATION.
   1365					;
   1366					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   1367					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   1368					;
   1369					;
   1370					; DEC  ASSUMES NO  RESPONSIBILITY  FOR  THE  USE  OR RELIABILITY
   1371					; OF ITS  SOFTWARE ON  EQUIPMENT WHICH  IS NOT SUPPLIED BY DEC.
   1372					;
   1373					;
   1374					; VERSION:	07-00
   1375					; BY:		H. LEV
   1376					; RSX20F --	R. MCLEAN
   1377					; DATE:		16-JUN-75
   1378					;
   1379					;
   1380					; RX01 - RX11  FLOPPY DISK DRIVER
   1381					;
   1382					; FUNCTIONS RECOGNIZED:
   1383					;	IO.RPB	- READ PHYSICAL BLOCK (MAY READ ANY SECTOR ON DISK)
   1384					;	IO.WPB	- WRITE PHYSICAL BLOCK (MAY WRITE ANY SECTOR ON DISK)
   1385					;	IO.WDD	- WRITE DELETED DATA - WRITE ANY SECTOR ON DISK
   1386					;		  SETTING THE DELETED DATA MARK IN SECTOR HEADER
   1387					;	THE FOLLOWING TWO FUNCTION CODES OPERATE ON 256 WORD BLOCKS
   1388					;	OF DATA (4 SECTORS)  THE DRIVER AUTOMATICALLY INTERLEAVES
   1389					;	AND SKEWS SECTORS TO OPTIMIZE THE TRANSFER OF DATA
   1390					;	SO THAT A LONG READ/WRITE MAY BE DONE WITHOUT LOOSING
   1391					;	A REVOLUTION OF THE DISK.  THE INTERLEAVE FACTOR IS 2
   1392					;	AND THE SKEW FACTOR IS 6.
   1393					;	IO.RLB	- READ LOGICAL BLOCKS OF 256. WORDS
   1394					;	IO.WLB	- WRITE LOGICAL BLOCKS OF 256. WORDS.
   1395					;
   1396					;	IF DELETED DATA IS READ, THE STATUS CODE RETURNED WILL
   1397					;	BE IS.RDD, OTHERWISE IT IS IS.SUC
   1398					;
   1399					;
   1400					; MODIFICATIONS:
   1401					;
   1402					;	NO.	DATE		PROGRAMMER	PURPOSE
   1403					;	---	----		----------	-------
   1404					;	001	15-MAR-77	R. BELANGER	CONDITIONALLY ASSEMBLE
   1405					;						FLOPPY DRIVER
   1406					;	002	22-OCT-77	R. BELANGER	REMOVE CONDITIONALS
DXDRV	MACRO M1110  12-OCT-79 14:00  PAGE 11


   1408						.MCALL	QIOSY$,$DEF
   1409	001730					QIOSY$
   1410						.MCALL	.STKM,WTSE$,DIR$,CALL,RETURN
   1411	001730					$DEF
   1412					;
   1413					;
   1414					; EQUATED SYMBOLS
   1415					;
   1416		000020 			A.EF=20		;LOCAL DEFINITION BECAUSE OF NO COMPLEX GLOBLS
   1417		177170 			DXEXP=177170	;EXTERNAL PAGE ADDRESS
   1418					;
   1419		000010 			RETRY	=	8.		; ERROR RETRY COUNT
   1420		000040 			PHYBLK	=	40		; PHYSICAL BLOCK SUBFUNCTION CODE
   1421					;
   1422					;
   1423					; RX11 DEVICE REGISTER OFFSETS AND BIT DEFINITIONS
   1424					;
   1425					;
   1426		000000 			RXCS	=	0		; CONTROL STATUS REGISTER
   1427		000002 			RXDB	=	2		; DATA BUFFER
   1428		000020 			UNIT	=	20		; UNIT SELECT BIT
   1429		000040 			DONE	=	40		; RX11 DONE
   1430		000100 			INTEBL	=	100		; INTERRUPT ENABLE
   1431		000200 			TR	=	200		; RX11 TRANSFER READY BIT (CPU-SILO)
   1432		040000 			INIT	=	40000		; INITIALIZE RX11
   1433					;
   1434					;
   1435					; FUNCTION CODES
   1436					;
   1437		000001 			GO	=	1		; GO BIT
   1438		000001 			FILL	=	0!GO		; FILL SILO
   1439		000003 			EMPTY	=	2!GO		; EMPTY SILO
   1440		000005 			WRITE	=	4!GO		; WRITE A SECTOR
   1441		000007 			READ	=	6!GO		; READ A SECTOR
   1442		000015 			WRTDD	=	14!GO		; WRITE DELETED DATA
   1443					;
   1444	001730				DXHD::	.STKM	0,0,0,0,0,0,0,DXINI,174000,DXSTK
	001776	000000 	000000 	000000 		.WORD	0,0,0,0
	002004	000000
	002024	174000 	002240'	002210'		.WORD	174000,DXINI,DXSTK
	002060	000005 				.WORD	5
	002062	000000G				.WORD	TTPEN
	002064	000000 				.WORD	0
	002066	000000 				.WORD	0
	002070	000000 				.WORD	0
	002072	000000 				.WORD	0
	002074	000000 				.WORD	0
	002076	000000 				.WORD	0
	002100	000000 				.WORD	0
	002102	000000 				.WORD	0
	002104	000000 				.WORD	0
	002106	000000 				.WORD	0
	002210	000000 				.WORD	0
	002212	000000 				.WORD	0
	002214	000000 				.WORD	0
	002216	000000 				.WORD	0
	002220	000000 				.WORD	0
DXDRV	MACRO M1110  12-OCT-79 14:00  PAGE 11-1


	002222	000000 				.WORD	0
	002224	002240'				.WORD	DXINI
	002226	174000 				.WORD	174000
   1445					;
   1446	002230				WFPKT:	WTSE$	E.NIR
	002230	   051 	   002 			.BYTE	41.,2
	002232	000000G				.WORD	E.NIR
   1447					;
   1448	002234				DXIOD:	WTSE$	E.IOD
	002234	   051 	   002 			.BYTE	41.,2
	002236	000000G				.WORD	E.IOD
   1449					;
   1450					;
DXDRV	MACRO M1110  12-OCT-79 14:00  PAGE 12


   1452					;+
   1453					; *** - DXINI  FLOPPY DISK CONTROLLER INITIATOR
   1454					;
   1455					; THIS ROUTINE IS ENTERED FROM THE QIO DIRECTIVE WHEN AN I/O REQUEST
   1456					; IS QUEUED AND AT THE END OF A PREVIOUS I/O OPERATION TO PROPOGATE THE
   1457					; EXECUTION OF THE DRIVER.  IF THE SPECIFIED CONTROLLER IS NOT BUSY,
   1458					; THEN AN ATTEMPT IS MADE TO DEQUEUE THE NEXT I/O REQUEST.  OTHERWISE
   1459					; A RETURN TO THE CALLER IS EXECUTED.  IF THE DEQUEUE ATTEMPT IS SUCCESSFUL
   1460					; THE NEXT I/O OPERATION IS INITIATED.  A RETURN TO THE CALLER IS THEN
   1461					; EXECUTED.
   1462					;
   1463					; INPUTS:
   1464					;	R5 - ADDRESS OF UCB WHICH IS ASSOCIATED WITH CONTROLLER TO BE INITIATED
   1465					;
   1466					; OUTPUTS:
   1467					;	IF THE CONTROLLER ASSOCIATED WITH THE SPECIFIED UCB IS NOT
   1468					;	BUSY AND AN I/O REQUEST IS WAITING TO BE PROCESSED, THE REQUEST
   1469					;	IS DEQUEUED AND THE DRIVER INITIATES THE REQUESTED FUNCTION.
   1470					;
   1471					;-
   1472						.ENABL	LSB
   1473	002240				DXINI:	DIR$	#WFPKT		;WAIT FOR PACKET TO DO SOME WORK
	002240	012746 	002230'			MOV	#WFPKT,-(SP)
	002244	104375 				EMT	375
   1474	002246	012700 	054104 		5$:	MOV	#"DX,R0		;TRY TO DQ
   1475	002252					CALL	..DQRN		;DQ A PACKET
	002252	004737 	000000G			JSR	PC,..DQRN
   1476	002256	103770 				BCS	DXINI
   1477	002260	005702 				TST	R2
   1478	002262	001402 				BEQ	7$
   1479	002264	012702 	000020 			MOV	#UNIT,R2
   1480	002270	010237 	000000G		7$:	MOV	R2,DXUNIT	;SAVE UNIT NUMBER
   1481	002274	010537 	000000G			MOV	R5,DXBUF	;SAVE ADDRESS OF BUFFER
   1482	002300	010337 	000000G			MOV	R3,DXCNT	;SAVE BYTE COUNT
   1483	002304	010137 	000000G			MOV	R1,DXPKT	;SAVE THE PACKET
   1484	002310	122761 	000002 	000001G		CMPB	#IO.RLB/256.,R.FC+1(R1)	;CHECK FOR VALID FUNCTION
   1485	002316	001404 				BEQ	6$
   1486	002320	122761 	000001 	000001G		CMPB	#IO.WLB/256.,R.FC+1(R1)
   1487	002326	001062 				BNE	ILFCD
   1488	002330				6$:
   1489					;
   1490					; USAGE OF WORDS IN DXVCB
   1491					;	DXVCB+2 - LOGICAL OR PHYSICAL SECTOR NUMBER
   1492					;	DXVCB+4 - BYTES TO TRANSFER ON CURRENT SECTOR
   1493					;	DXVCB+6 - CURRENT FUNCTION CODE
   1494					;	DXVCB+10 - PHYSICAL SECTOR NUMBER(1-26.)
   1495					;	DXVCB+11 - PHYSICAL TRACK NUMBER (0-77.)
   1496					;	DXVCB+12 - STATUS REGISTER AFTER INTERRUPT
   1497					;
   1498					;
   1499					;
   1500					; INITIALIZE DRIVER
   1501					;
   1502	002330	012737 	000010 	000000G	10$:	MOV	#RETRY,DXRTC ; SET RETRY COUNT
   1503	002336	105761 	000006G			TSTB	R.PB+6(R1)	; HIGH BLOCK SPECIFIED?
   1504	002342	001161 				BNE	180$		;NO
   1505					;
DXDRV	MACRO M1110  12-OCT-79 14:00  PAGE 12-1


   1506					; SET UP FIRST BLOCK OR SECTOR NUMBER
   1507					;
   1508	002344	016100 	000010G		20$:	MOV	R.PB+10(R1),R0	; GET PHYSICAL OR LOGICAL BLOCK NUMBER
   1509	002350	132761 	000040 	000000G		BITB	#PHYBLK,R.FC(R1) ; IS IT READ/WRITE PHYSICAL
   1510	002356	001002 				BNE	30$		; YES
   1511	002360	006300 				ASL	R0		; CONVERT TO LOGICAL SECTOR NUMBER
   1512	002362	006300 				ASL	R0		; WHICH IS LBN*4
   1513	002364	010037 	000002G		30$:	MOV	R0,DXVCB+2	; STORE IT
   1514	002370	016137 	000000G	000006G		MOV	R.FC(R1),DXVCB+6 ; SAVE FUNCTION CODE
   1515	002376	012703 	177170 		35$:	MOV	#DXEXP,R3	; GET CSR ADDRESS
   1516	002402					CALL	TRKSEC		; CONVERT BLOCK NUMBER TO TRACK/SECTOR
	002402	004737 	003144'			JSR	PC,TRKSEC
   1517	002406	103537 				BCS	180$		; BAD BLOCK NUMBER
   1518	002410	012702 	000007 			MOV	#READ,R2	; ASSUME READ FUNCTION
   1519	002414	122737 	000001 	000007G		CMPB	#IO.WLB/256.,DXVCB+7 ; WRITE?
   1520	002422	001064 				BNE	95$		; NO
   1521					;
   1522					; FILL SILO BEFORE WRITE
   1523					;
   1524	002424					CALL	SETBUF		; SET UP BUFFER POINTER AND MAPPING REGISTER
	002424	004737 	003314'			JSR	PC,SETBUF
   1525	002430	010304 				MOV	R3,R4		; COPY CSR ADDRESS
   1526	002432	012724 	000001 			MOV	#FILL,(R4)+	; SET FILL BUFFER FUNCTION
   1527	002436	005002 			70$:	CLR	R2		; ASSUME NO DATA TO TRANSFER
   1528	002440	005301 				DEC	R1		; MORE DATA TO TRANSFER?
   1529	002442	002401 				BLT	74$		; NO
   1530	002444	112002 				MOVB	(R0)+,R2	; YES, GET NEXT BYTE
   1531	002446	132713 	000240 		74$:	BITB	#TR!DONE,@R3	; IS CONTROLLER READY FOR NEXT BYTE
   1532	002452	100402 				BMI	76$		; YES
   1533	002454	001774 				BEQ	74$		; NO, WAIT UNTIL IT IS
   1534	002456	000402 				BR	90$		; YES, SILO FULL
   1535	002460	110214 			76$:	MOVB	R2,@R4		; NO, PUT NEXT BYTE IN SILO
   1536	002462	000765 				BR	70$		; AND WAIT TILL IT'S ACCEPTED
   1537					;
   1538	002464	005701 			90$:	TST	R1		; TRANSFERED ALL REQUESTED BYTES
   1539	002466	100432 				BMI	140$		; YES
   1540	002470	000137 	003122'			JMP	DXRTY		;NO, ERROR
   1541					;
   1542	002474	012703 	000376 		ILFCD:	MOV	#IE.IFC&377,R3		;NO -- ILLEGAL FUNCTION
   1543	002500	000467 				BR	157$
   1544					;
   1545					;
   1546					; EMPTY SILO AFTER READ
   1547					;
   1548	002502	010304 			100$:	MOV	R3,R4		; GET CSR ADDRESS
   1549	002504	012724 	000003 			MOV	#EMPTY,(R4)+	; SET EMPTY BUFFER FUNCTION
   1550	002510					CALL	SETBUF		; SET BUFFER POINTER AND MAPPING REGISTER
	002510	004737 	003314'			JSR	PC,SETBUF
   1551	002514	132713 	000240 		110$:	BITB	#TR!DONE,@R3	; NEXT BYTE READY FOR US?
   1552	002520	100402 				BMI	114$		; YES
   1553	002522	001774 				BEQ	110$		; NO, WAIT TILL IT IS
   1554	002524	000405 				BR	120$		; NO, SILO IS EMPTY
   1555					;
   1556	002526	111402 			114$:	MOVB	@R4,R2		; GET NEXT BYTE
   1557	002530	005301 				DEC	R1		; DO WE WANT IT?
   1558	002532	002770 				BLT	110$		; NO
   1559	002534	110220 				MOVB	R2,(R0)+	; YES, PUT IT IN BUFFER
DXDRV	MACRO M1110  12-OCT-79 14:00  PAGE 12-2


   1560	002536	000766 				BR	110$		; GET NEXT BYTE
   1561					;
   1562	002540	005701 			120$:	TST	R1		; ALL BYTES TRANSFERED?
   1563	002542	003167 				BGT	DXRTY		; NO, ERROR
   1564	002544					CALL	NXTSEC		; UPDATE TO NEXT SECTOR
	002544	004737 	003272'			JSR	PC,NXTSEC
   1565	002550	001523 				BEQ	193$		; ALL DONE
   1566	002552	000711 				BR	35$		; CONTINUE
   1567					;
   1568					; INITIATE TRANSFER BETWEEN SILO AND DISK
   1569					;
   1570	002554	012702 	000005 		140$:	MOV	#WRITE,R2	; DEFAULT WRITE FUNCTION
   1571	002560	032737 	000004 	000006G		BIT	#4,DXVCB+6	; WRITE DELETED DATA?
   1572	002566	001402 				BEQ	150$		; NO
   1573	002570	012702 	000015 			MOV	#WRTDD,R2	; YES, SET WRITE DELETED DATA
   1574	002574				95$:
   1575	002574	053702 	000000G		150$:	BIS	DXUNIT,R2	; YES, SET TO SELECT UNIT
   1576	002600	010213 			152$:	MOV	R2,@R3		; INITIATE FUNCTION
   1577	002602					CALL	TRWAIT		; WAIT FOR REQUEST FOR SECTOR
	002602	004737 	003344'			JSR	PC,TRWAIT
   1578	002606	103545 				BCS	DXRTY		; ERROR
   1579	002610	113763 	000010G	000002 		MOVB	DXVCB+10,RXDB(R3) ; GIVE SECTOR NUMBER TO CONTROLLER
   1580	002616					CALL	TRWAIT		; WAIT
	002616	004737 	003344'			JSR	PC,TRWAIT
   1581	002622	103537 				BCS	DXRTY		; ERROR
   1582	002624	113763 	000011G	000002 		MOVB	DXVCB+11,RXDB(R3) ; GIVE TRACK NUMBER TO  CONTROLLER
   1583	002632				155$:
   1584	002632	052713 	000100 			BIS	#INTEBL,@R3	; ENABLE INTERRUPT
   1585					;
   1586	002636	032737 	000340 	177776 		BIT	#340,@#PS	;AT A PRIORITY?
   1587	002644	001116 				BNE	220$		;YES -- THEN EXIT INTERRUPT SERVICE
   1588	002646					DIR$	#DXIOD		;WAIT FOR I/O DONE
	002646	012746 	002234'			MOV	#DXIOD,-(SP)
	002652	104375 				EMT	375
   1589	002654	013703 	000000G			MOV	DXVCB,R3	;FIND THE I/O STATUS
   1590	002660	013704 	000002G		157$:	MOV	DXVCB+2,R4
   1591	002664	013701 	000000G			MOV	DXPKT,R1
   1592	002670					CALL	..IODN		;FINISH I/O
	002670	004737 	000000G			JSR	PC,..IODN
   1593	002674	042737 	000000G	000020G		BIC	#EF.IOD,DXTSK+A.EF	;CLEAR EVENT FLAG
   1594	002702	000137 	002240'			JMP	DXINI		;AND TRY AGAIN
   1595					;
   1596	002706	012703 	000354 		180$:	MOV	#IE.BLK&377,R3	;SET ILLEGAL BLOCK
   1597	002712	032737 	000340 	177776 	185$:	BIT	#340,@#PS		;FROM INT SERV?
   1598	002720	001757 				BEQ	157$		;NO -- RETURN TO CALLER
   1599	002722	000456 				BR	210$		;AND REPORT ERROR
   1600					;
   1601	002724	012703 	000374 		190$:	MOV	#IE.VER&377,R3		;RETURN UNRECOVERABLE ERROR
   1602	002730	000770 				BR	185$
   1603					;
DXDRV	MACRO M1110  12-OCT-79 14:00  PAGE 13


   1605					;+
   1606					; *** - $DXINT  - RX11 FLOPPY DISK INTERRUPT ENTRY POINT
   1607					;
   1608					;-
   1609	002732				$DXINT::			;;;
   1610	002732	010046 				MOV	R0,-(SP)	;;;SAVE REGISTERS
   1611	002734	010146 				MOV	R1,-(SP)
   1612	002736	010246 				MOV	R2,-(SP)
   1613	002740	010346 				MOV	R3,-(SP)
   1614	002742	010446 				MOV	R4,-(SP)
   1615	002744	010546 				MOV	R5,-(SP)
   1616					;
   1617					;
   1618	002746	012703 	177170 			MOV	#DXEXP,R3	;;; GET CSR ADDRESS
   1619	002752	016337 	000002 	000012G		MOV	2(R3),DXVCB+12 ;;; SAVE STATUS
   1620	002760	042713 	000100 			BIC	#INTEBL,@R3	;;; DISABLE INTERRUPTS
   1621	002764	005713 				TST	@R3		; ANY ERRORS?
   1622	002766	100455 				BMI	DXRTY		; YES
   1623	002770	106237 	000001G			ASRB	DXRTC+1		; INITIALIZE IN PROGRESS
   1624	002774	103407 				BCS	166$		;YES
   1625	002776	122737 	000002 	000007G	160$:	CMPB	#IO.RLB/256.,DXVCB+7 ; READ?
   1626	003004	001636 				BEQ	100$		; YES, GO EMPTY SILO
   1627	003006					CALL	NXTSEC		; NO, UPDATE TO NEXT SECTOR
	003006	004737 	003272'			JSR	PC,NXTSEC
   1628	003012	001414 				BEQ	195$		; ALL DONE
   1629	003014	000137 	002376'		166$:	JMP	35$		; WRITE MORE DATA
   1630					;
   1631					;
   1632	003020	032737 	000040 	000006G	193$:	BIT	#PHYBLK,DXVCB+6 ; IS THIS A READ PHYSICAL?
   1633	003026	001406 				BEQ	195$		; NO, THEN IGNORE DELETED DATA MARK
   1634	003030	012703 	000002 			MOV	#IS.RDD&377,R3	; YES, DEFAULT ON READ TO DELETED DATA
   1635	003034	032737 	000100 	000012G		BIT	#100,DXVCB+12 ; WAS DELETED DATA READ?
   1636	003042	001002 				BNE	200$		; YES
   1637	003044	012703 	000001 		195$:	MOV	#IS.SUC&377,R3	; NO, SET NORMAL SUCCESS
   1638	003050	013700 	000000G		200$:	MOV	DXPKT,R0	; GET I/O PACKET ADDRESS
   1639	003054	016000 	000002G			MOV	R.PB+2(R0),R0	; SET BYTES TRANSFERED
   1640	003060	010037 	000002G		210$:	MOV	R0,DXVCB+2	;SAVE DEVICE STATUS
   1641	003064	010337 	000000G			MOV	R3,DXVCB
   1642	003070	052737 	000000G	000020G		BIS	#EF.IOD,DXTSK+A.EF	;START TASK
   1643	003076					CALL	..DSEV		;DECLARE SIG EVENT
	003076	004737 	000000G			JSR	PC,..DSEV
   1644	003102	012605 			220$:	MOV	(SP)+,R5
   1645	003104	012604 				MOV	(SP)+,R4
   1646	003106	012603 				MOV	(SP)+,R3	;RESTORE REGISTERS
   1647	003110	012602 				MOV	(SP)+,R2
   1648	003112	012601 				MOV	(SP)+,R1
   1649	003114	012600 				MOV	(SP)+,R0
   1650	003116	000137 	000000G			JMP	@#..INTX
   1651					;
   1652					;
   1653					;
   1654					;
   1655					;
   1656					;
   1657					;
   1658					; RETRY LAST FUNCTION
   1659					;
DXDRV	MACRO M1110  12-OCT-79 14:00  PAGE 13-1


   1660	003122	105337 	000000G		DXRTY:	DECB	DXRTC		; ANY RETRIES LEFT?
   1661	003126	001676 				BEQ	190$		; NO, ERROR
   1662	003130	112737 	000001 	000001G		MOVB	#1,DXRTC+1	; YES, SET INITIALIZE IN PROGRESS
   1663	003136	012713 	040000 			MOV	#INIT,@R3	; INITIALIZE RX01 DRIVES
   1664	003142	000633 				BR	155$		; AND DO IT
   1665						.DSABL	LSB
DXDRV	MACRO M1110  12-OCT-79 14:00  PAGE 14


   1667					;+
   1668					; *** - TRKSEC  -  CONVERT LOGICAL OR PHYSICAL BLOCK NUMBER TO
   1669					;	TRACK-SECTOR PAIR
   1670					; FROM ALGORITHM BY J GILBERT MODIFIED BY H. JACOBS
   1671					;
   1672					; INPUT:
   1673					;	DXVCB+2 - LOGICAL SECTOR OR PHYSICAL SECTOR
   1674					;
   1675					; OUTPUT:
   1676					;	DXVCB+10 - SECTOR (1-26.)
   1677					;	DXVCB+11 - TRACK (0-77.)
   1678					;	C CLEAR - VALID BLOCK
   1679					;	C SET - BAD BLOCK NUMBER (PHYSICAL OR LOGICAL)
   1680					;
   1681					;-
   1682	003144	013701 	000002G		TRKSEC:	MOV	DXVCB+2,R1	; GET LOGICAL BLOCK OR PHYSICAL BLOCK
   1683	003150	012700 	000010 			MOV	#8.,R0		; SET LOOP COUNT
   1684	003154	012702 	006400 			MOV	#6400,R2	; SET DIVISOR
   1685	003160	020201 			1$:	CMP	R2,R1		; DOES 26 GO INTO DIVIDEND?
   1686	003162	101002 				BHI	2$		; BRANCH IF NOT, C CLEAR
   1687	003164	160201 				SUB	R2,R1		; SUBTRACT 26 FROM DIVIDEND
   1688	003166	000261 				SEC			; SET CARRY
   1689	003170	006101 			2$:	ROL	R1		; SHIFT DIVIDEND AND QUOTIENT
   1690	003172	005300 				DEC	R0		; DONE?
   1691	003174	003371 				BGT	1$		; NO, LOOP
   1692	003176	110100 				MOVB	R1,R0		; GET TRACK NUMBER
   1693	003200	105001 				CLRB	R1		; CLEAR TRACK NUMBER
   1694	003202	000301 				SWAB	R1		; SHIFT DONE SECTOR NUMBER
   1695	003204	032737 	000040 	000006G		BIT	#PHYBLK,DXVCB+6 ; IS IT PHYSICAL BLOCK NUMBER?
   1696	003212	001016 				BNE	10$		; YES
   1697	003214	022701 	000014 			CMP	#12.,R1		; NO, C=1 IF 13<=R1<=25
   1698	003220	006101 				ROL	R1		; DOUBLE FOR INTERLEAVE FACTOR
   1699	003222	006300 				ASL	R0		; ADD TRACK -TRACK SKEW
   1700	003224	060001 				ADD	R0,R1		; SKEW BY 2*TRACK
   1701	003226	060001 				ADD	R0,R1		; SKEW BY 4*TRACK
   1702	003230	060001 				ADD	R0,R1		; SKEW BY 6*TRACK
   1703	003232	006200 				ASR	R0		; RESTORE TRACK NUMBER
   1704	003234	012702 	000032 			MOV	#26.,R2		; SET MODULUS
   1705	003240	160201 			5$:	SUB	R2,R1		; MODULO SECTOR INTO RANGE -26. TO -1.
   1706	003242	002376 				BGE	5$		; LOOP TILL REMAINDER GOES NEG
   1707	003244	060201 				ADD	R2,R1		; CONVERT TO RANGE 0-25.
   1708	003246	005200 				INC	R0		; LBN0 STARTS ON TRACK 1
   1709	003250	005201 			10$:	INC	R1		; CONVERT TO RANGE 1-26.
   1710	003252	010137 	000010G			MOV	R1,DXVCB+10 	; SAVE SECTOR NUMBER
   1711	003256	110037 	000011G			MOVB	R0,DXVCB+11 	; SAVE TRACK NUMBER
   1712	003262	022737 	046400 	000010G		CMP	#77.*256.,DXVCB+10 ; IS IT VALID TRACK/SECTOR?
   1713	003270					RETURN			;
	003270	000207 				RTS	PC
DXDRV	MACRO M1110  12-OCT-79 14:00  PAGE 15


   1715					;
   1716					;+
   1717					; *** - NXTSEC  -  UPDATE BLOCK NUMBER , BUFFER ADDRESS
   1718					;			AND BUFFER POINTER
   1719					;
   1720					; INPUT:
   1721					;	DXVCB+2 - CURRENT BLOCK NUMBER
   1722					;	DXVCB+4 - BYTES TRANSFERRED DURING LAST FUNCTION
   1723					;	DXCNT - BYTES LEFT TO TRANSFER
   1724					;	DXBUF - BUFFER ADDRESS
   1725					;
   1726					; OUTPUT:
   1727					;	DXVCB+2 - UPDATED BLOCK NUMBER
   1728					;	DXBUF - UPDATED BY 128. BYTES
   1729					;	DXCNT - UPDATED BY NUMBER OF WORDS TRANSFERED
   1730					;	Z SET - ALL BYTES TRANSFERED
   1731					;	Z CLEAR - MORE BYTES TO TRANSFER
   1732					;	C CLEAR - VALID TRACK/SECTOR
   1733					;	C SET - BAD BLOCK NUMBER
   1734					;
   1735					;+
   1736	003272	005237 	000002G		NXTSEC:	INC	DXVCB+2		; UPDATE BLOCK NUMBER
   1737					;
   1738	003276	062737 	000200 	000000G		ADD	#128.,DXBUF ; UPDATE BUFFER POINTER
   1739					;
   1740	003304	163737 	000004G	000000G		SUB	DXVCB+4,DXCNT 	; UPDATE BYTES LEFT TO TRANSFER
   1741	003312					RETURN			;
	003312	000207 				RTS	PC
   1742					;
   1743					;+
   1744					; *** - SETBUF  -  SET UP BUFFER POINTER FOR CPU - SILO TRANSFERS
   1745					;
   1746					; INPUT:
   1747					;
   1748					; OUTPUT:
   1749					;	R0 - BUFFER ADDRESS
   1750					;	R1 - BYTES TO TRANSFER
   1751					;	IF MAPPED SYSTEM KISAR6 IS MAPPED TO BUFFER AND R1 IS BASE 140000
   1752					;
   1753					;-
   1754	003314	013700 	000000G		SETBUF:	MOV	DXBUF,R0	; GET BUFFER ADDRESS
   1755	003320	012701 	000200 			MOV	#128.,R1	; DEFAULT TO 128. BYTE TRANSFER
   1756	003324	023701 	000000G			CMP	DXCNT,R1	; 128. BYTES LEFT TO TRANSFER?
   1757	003330	103002 				BHIS	10$		; YES
   1758	003332	013701 	000000G			MOV	DXCNT,R1	; NO, GET RESIDUAL COUNT
   1759	003336	010137 	000004G		10$:	MOV	R1,DXVCB+4	; STORE COUNT OF BYTES TO TRANSFER
   1760					;
   1761	003342					RETURN			;
	003342	000207 				RTS	PC
   1762					;+
   1763					; *** - WAIT FOR TRANSFER REQUEST AND DONE
   1764					;
   1765					; INPUT:
   1766					;
   1767					; OUTPUT:
   1768					;	CC - TRANSFER REQUESTED
   1769					;	CS - NO TRANSFER REQUESTED
DXDRV	MACRO M1110  12-OCT-79 14:00  PAGE 15-1


   1770					;
   1771					;-
   1772	003344	000241 			TRWAIT:	CLC			; DEFAULT TO TRANSFER REQUESTED
   1773	003346	132713 	000240 		10$:	BITB	#TR!DONE,@R3	; CONTROLLER DONE?
   1774	003352	100402 				BMI	20$		; YES, AND TRANSFER REQUEST IS UP
   1775	003354	001774 				BEQ	10$		; NO, WAIT
   1776	003356	000261 				SEC			; SET NO TRANSFER REQUEST
   1777	003360				20$:	RETURN			;
	003360	000207 				RTS	PC
   1778
FEDRV	MACRO M1110  12-OCT-79 14:00  PAGE 16


   1781						.TITLE	FEDRV
   1782						.IDENT	/005000/
   1783		000001 			$DIRAC=1
   1784					;
   1785					;                             COPYRIGHT (C) 1975, 1978 BY
   1786					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   1787					;
   1788					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   1789					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   1790					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   1791					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   1792					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   1793					;
   1794					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   1795					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   1796					;       CORPORATION.
   1797					;
   1798					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   1799					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   1800					;
   1801					; VERSION 05-00
   1802					;
   1803					;	R. MCLEAN 25-JUN-75
   1804					;	A. PECKHAM 30-NOV-76
   1805					;
   1806					; FE PSEUDO DRIVER
   1807					;
   1808					; MACRO LIBRARY CALLS
   1809					;
   1810					;
   1811						.MCALL	.STKM,WTLO$,DIR$,.INH0,.ENB0,.ENB6,.INH6,.ENB,.INH
   1812						.MCALL	CALL,CALLR,RETURN
   1813					;
   1814					; EQUATED SYMBOLS
   1815					;
   1816		100000 			EF.SEP=100000	;SECONDARY PROTOCOL FLAG
   1817		000400 			EF.TEF=400	;DONE EVENT FLAG
   1818					;
   1819					; DIRECTIVES
   1820					;
   1821	003362				WFEF1:	WTLO$	1,EF.SEP!EF.NIR!EF.TEF	 ;WAIT FOR SOMETHING TO DO
	003362	   053 	   003 			.BYTE	43.,3
	003364	000001 				.WORD	1
	003366	000000C				.WORD	EF.SEP!EF.NIR!EF.TEF
   1822					;
   1823					;	DATA AREAS
   1824					;
   1825					;	FETBL SWITCHES
   1826					;
   1827		040000 			FE.DET=040000	;MORE DATA -11 TO -10 TO BE SENT
   1828		020000 			FE.DTE=020000	;MORE DATA -10 TO -11 EXPECTED
   1829		004000 			FE.SER=004000	;SERVICING -11 TRANSFER REQUEST
   1830		002000 			FE.STR=002000	;SERVICING -10 TRANSFER REQUEST
   1831
   1832	003370				FEHD::	.STKM	0,0,0,0,0,0,0,FEDRV,174000,FESTK
	003436	000000 	000000 	000000 		.WORD	0,0,0,0
	003444	000000
FEDRV	MACRO M1110  12-OCT-79 14:00  PAGE 16-1


	003464	174000 	003670'	003650'		.WORD	174000,FEDRV,FESTK
	003520	000005 				.WORD	5
	003522	000000G				.WORD	TTPEN
	003524	000000 				.WORD	0
	003526	000000 				.WORD	0
	003530	000000 				.WORD	0
	003532	000000 				.WORD	0
	003534	000000 				.WORD	0
	003536	000000 				.WORD	0
	003540	000000 				.WORD	0
	003542	000000 				.WORD	0
	003544	000000 				.WORD	0
	003546	000000 				.WORD	0
	003650	000000 				.WORD	0
	003652	000000 				.WORD	0
	003654	000000 				.WORD	0
	003656	000000 				.WORD	0
	003660	000000 				.WORD	0
	003662	000000 				.WORD	0
	003664	003670'				.WORD	FEDRV
	003666	174000 				.WORD	174000
FEDRV	MACRO M1110  12-OCT-79 14:00  PAGE 17


   1834	003670				FEDRV:	DIR$	#WFEF1		;WAIT TO GET STARTED
	003670	012746 	003362'			MOV	#WFEF1,-(SP)
	003674	104375 				EMT	375
   1835	003676					.INH0			;LOCK OUT DTE INTERRUPTS
	003676	013746 	177776 			MOV	@#PS,-(SP)
	003702	112737 	000140 	177776 		MOVB	#140,@#PS
   1836	003710	013700 	000020G		1$:	MOV	FETSK+A.EF,R0	;;;PICK UP THE EVENT FLAGS
   1837	003714	001435 				BEQ	5$		;;;EXIT IF NOTHING
   1838	003716	005037 	000020G			CLR	FETSK+A.EF	;;;CLEAR EVENT FLAGS
   1839	003722	032737 	000000G	000002G		BIT	#EF.PR1,.COMEF+2 ;;;PRIMARY PROTOCOL IN USE?
   1840	003730	001402 				BEQ	2$		;;;NO -- BETTER DUMP REQUEST'S
   1841	003732	005700 				TST	R0		;;;SECONDARY PROTOCOL CHANGE?
   1842	003734	100025 				BPL	5$		;;;NO -- CONTINUE
   1843					;
   1844					;	PRIMARY PROTOCOL HAS DIED - CLEAR OUT THE REQUEST QUEUE
   1845					;
   1846	003736	013701 	000000G		2$:	MOV	NODADR,R1	;;;GET CURRENT NODE
   1847	003742	005037 	000000G			CLR	NODADR		;;;DON'T BLOCK FE DRIVER
   1848	003746	005037 	000000G			CLR	STSWD		;;;CLEAR STATUS WORD BLOCK
   1849	003752	042737 	064000 	000000G		BIC	#FE.SER!FE.DET!FE.DTE,FETBL+0 ;;;NO ACTION ON FE0
   1850	003760	005701 				TST	R1		;;;WERE WE PROCESSING A NODE ?
   1851	003762	001005 				BNE	4$		;;;YES -- DO IT FIRST
   1852	003764	012700 	042506 		3$:	MOV	#"FE,R0		;;;PICK A NODE FROM THE QUEUE
   1853	003770					CALL	..DQRN		;;;DQ
	003770	004737 	000000G			JSR	PC,..DQRN
   1854	003774	103745 				BCS	1$
   1863	003776				4$:
   1865					;
   1866					;
   1867	003776	012703 	177761 		7$:	MOV	#IE.ABO,R3	;;;RETURN ABORTED
   1868	004002					CALL	..IODN		;;;FINISH I/O
	004002	004737 	000000G			JSR	PC,..IODN
   1869	004006	000766 				BR	3$		;;;AND TRY NEXT REQUEST
   1870					;
   1871					;	CHECK FOR EVENTS
   1872					;
   1873	004010				5$:	.ENB0			;;;ENABLE INTERRUPTS
	004010	004737 	000000G			JSR	PC,..ENB0
   1874	004014	032700 	000400 			BIT	#EF.TEF,R0	;CHECK TO SEE IF DONE
   1875	004020	001104 				BNE	IODN
   1876					;
   1877					;	MUST BE I/O REQUEST
   1878					;
   1879	004022	005737 	000000G			TST	NODADR		;BLOCKED?
   1880	004026	001320 				BNE	FEDRV		;YES -- DON'T DO ANYTHING ON QIO NOW
   1881	004030	012700 	042506 			MOV	#"FE,R0		;DQ FROM FE DRIVER
   1882	004034					CALL	..DQRN		;DQ
	004034	004737 	000000G			JSR	PC,..DQRN
   1883	004040	103713 				BCS	FEDRV		;NOTHING -- WAIT
   1884	004042	052737 	004000 	000000G		BIS	#FE.SER,FETBL+0	;FE0 BEING USED FOR -11 REQUEST
   1885	004050	010137 	000000G			MOV	R1,NODADR	;SAVE THE ADDRESS OF THE NODE
   1886	004054	010537 	000000G			MOV	R5,ADRSAV	;SAVE THE ADDRESS
   1887	004060	010337 	000000G			MOV	R3,BYTESA	;SAVE THE BYTE COUNT
   1888	004064	012702 	000000G			MOV	#TO10PK,R2	;SET UP PACKET ADDRESS
   1889	004070	010200 				MOV	R2,R0		;SAVE THE ADDRESS OF THE BUFFER
   1890	004072	012722 	000014 			MOV	#14,(R2)+	;STORE SIZE
   1891	004076	016122 	000000G			MOV	R.FC(R1),(R2)+	;SET UP THE FUNCTION CODE
FEDRV	MACRO M1110  12-OCT-79 14:00  PAGE 17-1


   1892	004102	005003 				CLR	R3		;FIND THE LUN
   1893	004104	156103 	000000G			BISB	R.LU(R1),R3	;SET UP THE LUT NUMBER
   1894	004110	001005 				BNE	10$		;EXEC REQUEST?
   1895	004112	012722 	041104 			MOV	#"DB,(R2)+	;DECLARE DB
   1896	004116	013722 	000000G			MOV	.RPUNT,(R2)+	;SET UNIT NUMBER
   1897	004122	000424 				BR	77$		;AND FINISH
   1898	004124	016104 	000000G		10$:	MOV	R.AT(R1),R4	;FIND THE ATL
   1899	004130	016404 	000000G			MOV	A.HA(R4),R4	;FIND THE HEADER ADDRESS
   1900	004134	006303 				ASL	R3		;MULTIPLY THE LUN BY 2
   1901	004136	006303 				ASL	R3
   1902	004140	060304 				ADD	R3,R4		;POINT TO CORRECT ENTRY
   1903	004142	016404 	177776G			MOV	H.LUT-2(R4),R4	;FIND THE LUT (FINALLY)
   1904	004146	016404 	000000G			MOV	U.RP(R4),R4	;DO REDIRECT
   1905	004152	012422 				MOV	(R4)+,(R2)+	;STORE THE DEVICE (ASCII CHARACTER)
   1906	004154	011422 				MOV	(R4),(R2)+	;STORE THE UNIT
   1907	004156	116104 	000000G			MOVB	R.DP(R1),R4	;FIND THE DPB SIZE
   1908	004162	162704 	000007 			SUB	#7,R4		;SUB PERMINENT ONES
   1909	004166	001002 				BNE	77$		;GOT A GOOD BYTE COUNT
   1910	004170	005037 	000000G			CLR	BYTESA		;NO CLEAR OUT BYTE COUNT
   1911	004174	016122 	000006G		77$:	MOV	R.PB+6(R1),(R2)+ ;STORE THE BLOCK NUMBER
   1912	004200	016122 	000010G			MOV	R.PB+10(R1),(R2)+
   1913	004204	013722 	000000G			MOV	BYTESA,(R2)+	;SET BYTE COUNT
   1914	004210	001403 				BEQ	78$		;IF MORE DATA MUST GO OUT
   1915	004212	052737 	040000 	000000G		BIS	#FE.DET,FETBL+0	;THEN SO INDICATE
   1916	004220				78$:	CALL	SNSTR		;START INDIRECT FUNCTION
	004220	004737 	004274'			JSR	PC,SNSTR
   1917	004224	005037 	000000G			CLR	STSWD
   1918	004230	000617 				BR	FEDRV		;AND WAIT
   1919
   1920	004232	013703 	000000G		IODN:	MOV	STSWD,R3	;SET I/O DONE
   1921	004236	013704 	000002G			MOV	STSWD+2,R4
   1922	004242	013701 	000000G			MOV	NODADR,R1	;SET NODE ADDRESS
   1923	004246	005037 	000000G			CLR	NODADR		;CLEAR INCASE OF ABORT
   1924	004252	005037 	000000G			CLR	STSWD		;CLEAR STATUS WORD
   1925	004256					CALL	..IODN		;SET I/O DONE
	004256	004737 	000000G			JSR	PC,..IODN
   1926	004262	042737 	064000 	000000G		BIC	#FE.SER!FE.DET!FE.DTE,FETBL+0 ;WE ARE FINISHED WITH -11 REQUEST
   1927	004270	000137 	003670'			JMP	FEDRV		;AND RETURN
   1928
   1929	004274	012701 	100000G		SNSTR:	MOV	#BC.STR+100000,R1 ;SET UP STRING DATA
   1930	004300	005002 				CLR	R2		;NO EVENT FLAG
   1931	004302	012703 	000000G			MOV	#D.FEPD,R3	;FE DEVICE
   1932	004306					CALLR	..STIN		;START INDIRECT
	004306	000137 	000000G			JMP	..STIN
FEDRV	MACRO M1110  12-OCT-79 14:00  PAGE 18


   1934					;
   1935					;	THE -10 HAS SENT AN ACK TO US - CONTINUE THE OPERATION
   1936					;	IF IT WAS A WRITE.
   1937					;
   1938	004312	032712 	040000 		.FEACK::BIT	#FE.DET,(R2)	;IS THERE DATA TO SEND ?
   1939	004316	001436 				BEQ	30$		;NO, IGNORE THE ACK.
   1940	004320	010046 				MOV	R0,-(SP)	;SAVE R0
   1941	004322	013700 	000000G			MOV	ADRSAV,R0	;PICK UP THE ADDRESS
   1942	004326	012701 	000100 			MOV	#64.,R1		;SET THE COUNT
   1943	004332	020137 	000000G			CMP	R1,BYTESA	;TOO BIG ??
   1944	004336	101402 				BLOS	10$		;NO - USE THIS COUNT
   1945	004340	013701 	000000G			MOV	BYTESA,R1	;YES - SEND WHAT'S LEFT
   1946	004344	060137 	000000G		10$:	ADD	R1,ADRSAV	;SET NEW ADDRESS
   1947	004350	160137 	000000G			SUB	R1,BYTESA	;AND BYTES LEFT
   1948	004354	001002 				BNE	20$		;IF NO MORE AFTER THIS
   1949	004356	042712 	040000 			BIC	#FE.DET,(R2)	;THEN SO INDICATE
   1950	004362				20$:	.INH6			;LOCK OUT INTERRUPTS
	004362	013746 	177776 			MOV	@#PS,-(SP)
	004366	112737 	000300 	177776 		MOVB	#300,@#PS
   1951	004374	014046 				MOV	-(R0),-(SP)	;;;SAVE MEMORY HERE
   1952	004376	010110 				MOV	R1,@R0		;;;STORE FIRST WORD TO10
   1953	004400					CALL	SNSTR		;;;START FUNCTION
	004400	004737 	004274'			JSR	PC,SNSTR
   1954	004404	012610 				MOV	(SP)+,@R0	;;;RESTORE FIRST WORD
   1955	004406					.ENB6			;;;ENABLE INTERRUPTS
	004406	012637 	177776 			MOV	(SP)+,@#PS
   1956	004412	012600 				MOV	(SP)+,R0	;RESTORE
   1957	004414				30$:	RETURN			;RETURN TO CALLER
	004414	000207 				RTS	PC
FEDRV	MACRO M1110  12-OCT-79 14:00  PAGE 19


   1959					;
   1960					;	START FE DEVICE QUEUE ENTRY
   1961					;
   1962					;	R0 -> THREAD BLOCK ENTRY
   1963					;	R2 -> FETBL ENTRY
   1964					;
   1965	004416	122760 	000000G	000007 	.FEST::	CMPB	#BC.STR,7(R0)	;FUNCTION STRING?
   1966	004424	001077 				BNE	IOABT		;NO -- ABORT I/O IN PROGRESS
   1967	004426	005005 				CLR	R5		;FIND THE BYTE SIZE
   1968	004430	156005 	000006 			BISB	6(R0),R5
   1969	004434	016004 	000004 			MOV	4(R0),R4	;SET UP THE NODE ADDRESS
   1970	004440	032712 	020000 			BIT	#FE.DTE,(R2)	;ARE WE EXPECTING DATA ?
   1971	004444	001040 				BNE	70$		;YES, INSERT IN BUFFER.
   1972	004446	012401 				MOV	(R4)+,R1	;CHECK TO SEE WHICH DIRECTION THIS FUNCTION IS
   1973	004450	100102 				BPL	FCN		;REQUEST TO DO A FUNCTION -- SPECIAL
   1974	004452	013703 	000000G			MOV	NODADR,R3	;A RETURN FUNCTION -
   1975	004456	066301 	000000G			ADD	R.FC(R3),R1	;IS IT THE LAST ONE WE SENT ?
   1976	004462	001100 				BNE	FCNBD		;NO -- ILLEGAL REQUEST -- QUIT
   1977	004464	122763 	000003 	000001G		CMPB	#IO.ATT/400,R.FC+1(R3) ;ACP FUNCTION CODE?
   1978	004472	001006 				BNE	40$		;NO -- LEAVE ADDRESSES ALONE
   1979	004474	016337 	000012G	000000G		MOV	R.PB+12(R3),BYTESA ;SET UP TO BYTE COUNT
   1980	004502	016337 	000004G	000000G		MOV	R.PB+4(R3),ADRSAV ;ALSO ADDRESS
   1981	004510	022424 			40$:	CMP	(R4)+,(R4)+	;MOVE OVER DEVICE/UNIT
   1982	004512	012437 	000000G			MOV	(R4)+,STSWD	;SAVE THE I/O STATUS
   1983	004516	012437 	000002G			MOV	(R4)+,STSWD+2	;BOTH HALVES
   1984	004522	052712 	020000 			BIS	#FE.DTE,(R2)	;INDICATE WE ARE EXPECTING DATA
   1985	004526	021437 	000000G			CMP	@R4,BYTESA	;BYTESIZE CORRECT?
   1986	004532	103002 				BHIS	50$		;YES -- CONTINUE
   1987	004534	011437 	000000G			MOV	@R4,BYTESA	;NO -- SET NEW ONE
   1988	004540	162705 	000014 		50$:	SUB	#14,R5		;SUBTRACT FIXED HEADER SIZE
   1989	004544	001410 				BEQ	60$		;AND QUIT IF NOTHING TO DO
   1990	004546	112477 	000000G		70$:	MOVB	(R4)+,@ADRSAV	;MOVE A BYTE
   1991	004552	005237 	000000G			INC	ADRSAV		;UPDATE BYTE POINTER
   1992	004556	005337 	000000G			DEC	BYTESA		;UPDATE BYTE COUNT
   1993	004562	001404 				BEQ	65$		;(IN CASE OF MISCOUNT)
   1994	004564	077510 				SOB	R5,70$		;AND DO UNTIL DONE
   1995	004566	005737 	000000G		60$:	TST	BYTESA		;ANYTHING TO DO?
   1996	004572	001005 				BNE	DONSTR		;YES -- DON'T SET I/O DONE FLAG
   1997	004574	042712 	020000 		65$:	BIC	#FE.DTE,(R2)	;NO MORE DATA EXPECTED
   1998	004600	052737 	000400 	000020G		BIS	#EF.TEF,FETSK+A.EF ;SET I/O DONE
   1999	004606				DONSTR:	CALL	..DECN		; RETURN NODE
	004606	004737 	000000G			JSR	PC,..DECN
   2000	004612	012703 	000000G			MOV	#D.FEPD,R3	;ACK THIS FUNCTION
   2001	004616	010205 				MOV	R2,R5
   2002	004620					CALLR	..SACK
	004620	000137 	000000G			JMP	..SACK
   2003
   2004	004624	013701 	000000G		IOABT:	MOV	NODADR,R1	;NODE IN PROGRESS?
   2008	004630	001766 				BEQ	DONSTR		;NO -- CONTINUE
   2010	004632	005037 	000000G			CLR	NODADR		;YES -- FIX IT WITH IE.ABO
   2011	004636	042737 	064000 	000000G		BIC	#FE.SER!FE.DET!FE.DTE,FETBL+0 ;FINISHED WITH -11 REQUEST
   2012	004644	012703 	177761 			MOV	#IE.ABO,R3
   2013	004650					CALL	..IODN		;QUIT IT
	004650	004737 	000000G			JSR	PC,..IODN
   2017	004654	000754 				BR	DONSTR		;AND DECLARE DONE
   2018					;
   2019					;	THIS IS A FUNCTION REQUEST FROM THE -10
FEDRV	MACRO M1110  12-OCT-79 14:00  PAGE 19-1


   2020					;
   2021	004656	022714 	042515 		FCN:	CMP	#"ME,(R4)	;IS IT MEMORY?
   2022	004662	001401 				BEQ	MEFCN		;YUP -- MUST BE OK
   2023	004664	000004 			FCNBD:	IOT			;NOPE -- CRASH
   2024
   2025	004666	052712 	002000 		MEFCN:	BIS	#FE.STR,(R2)	;WE ARE SERVICING -10 REQUEST
   2026	004672	012737 	000014 	000000G		MOV	#14,DNBLK	;INIT RETURN PACKET SIZE
   2027	004700	010137 	000000G			MOV	R1,DNFCN	;SET FUNCTION
   2028	004704	005437 	000000G			NEG	DNFCN		;AND NEGATE.
   2029	004710	012437 	000002G			MOV	(R4)+,DNFCN+2	;SAVE FUNCTION DEVICE
   2030	004714	012737 	000001 	000000G		MOV	#IS.SUC,DNSTS	;ASSUME A SUCCESSFUL ACCESS
   2031	004722	022424 				CMP	(R4)+,(R4)+	;MOVE OVER UNIT AND HIGH ORDER ADDRES
   2032	004724	012403 				MOV	(R4)+,R3	;PICK UP ADDRESS
   2033	004726	012405 				MOV	(R4)+,R5	;AND BYTE COUNT
   2034	004730	010537 	000002G			MOV	R5,DNSTS+2	;SAVE BYTE COUNT
   2035	004734					.INH			;LOCK OUT INTERRUPTS
	004734	013746 	177776 			MOV	PS,-(SP)
	004740	112737 	000340 	177776 		MOVB	#PR7,@#PS	;;
   2036	004746	013746 	000004 			MOV	@#4,-(SP)	;;;SAVE LOC 4
   2037	004752	012737 	005116'	000004 		MOV	#90$,@#4	;;;GO TO ILL MEM ROUTINE
   2038	004760	022701 	000400 			CMP	#IO.WLB,R1	;;;WRITE LOGICAL BLOCK?
   2039	004764	001003 				BNE	30$		;;;READ MEMORY REQUEST
   2040	004766	112423 			20$:	MOVB	(R4)+,(R3)+	;;;MOVE BYTES
   2041	004770	077502 				SOB	R5,20$		;;;UNTIL DONE
   2042	004772	000417 				BR	60$		;;;RETURN SUCCESS
   2043
   2044	004774	122760 	000014 	000006 	30$:	CMPB	#14,6(R0)	;;;ALL IN THIS PACKET?
   2045	005002	001010 				BNE	50$		;;;NO -- BAD FUNCTION
   2046	005004	012704 	000000G			MOV	#BLKTT,R4	;;;SET UP A PACKET TO ADD TO FUNCTION
   2047	005010	112324 			40$:	MOVB	(R3)+,(R4)+	;;;MOVE CORRESPONDING  BYTES
   2048	005012	077502 				SOB	R5,40$		;;;UNTIL DONE
   2049	005014	063737 	000002G	000000G		ADD	DNSTS+2,DNBLK	;;;INCLUDE RETURN BYTES IN PACKET
   2050	005022	000405 				BR	70$		;;;SET RETURN FUNCTION
   2051
   2052	005024	012737 	177777 	000000G	50$:	MOV	#IE.BAD,DNSTS	;;;RETURN BAD FUNCTION
   2053	005032	005037 	000002G		60$:	CLR	DNSTS+2		;;;NO BYTES TRANSFERRED
   2054	005036	012637 	000004 		70$:	MOV	(SP)+,@#4	;;;RESET LOC 4
   2055	005042					.ENB			;;;ENABLE INTERRUPTS
	005042	012637 	177776 			MOV	(SP)+,@#PS	;;
   2056	005046	013737 	000002G	000004G		MOV	DNSTS+2,DNSTS+4	;RETURN COUNT
   2057	005054	010203 				MOV	R2,R3		;COMPUTE FE NUMBER
   2058	005056	162703 	000000G			SUB	#FETBL,R3
   2059	005062	006203 				ASR	R3		;AND
   2060	005064	110337 	000001G			MOVB	R3,DNBLK+1	;SET IN RETURN PACKET
   2061	005070	010246 				MOV	R2,-(SP)	;SAVE FETBL POINTER
   2062	005072	010046 				MOV	R0,-(SP)	;AND STRING POINTER
   2063	005074	012700 	000000G			MOV	#DNBLK,R0	;SET DONE BLOCK ADDRESS
   2064	005100					CALL	SNSTR		;SEND STRING
	005100	004737 	004274'			JSR	PC,SNSTR
   2065	005104	012600 				MOV	(SP)+,R0	;RESTORE
   2066	005106	012602 				MOV	(SP)+,R2
   2067	005110	042712 	002000 			BIC	#FE.STR,(R2)	;FINISHED WITH -10 REQUEST
   2068	005114	000634 				BR	DONSTR		;AND QUIT
   2069
   2070	005116	022626 			90$:	CMP	(SP)+,(SP)+	;REMOVE TRAP STUFF
   2071	005120	012737 	177774 	000000G		MOV	#IE.VER,DNSTS	;RETURN RECOVERABLE ERROR
   2072	005126	000741 				BR	60$
FEDRV	MACRO M1110  12-OCT-79 14:00  PAGE 19-2


   2073
   2074						.TITLE	LPDRV	(LP-20 LINEPRINTER DRIVER FOR RSX10F)
   2075						.SBTTL	TITLE PAGE
   2076						.IDENT	/001000/
   2077					;
   2078					;                             COPYRIGHT (C) 1975, 1978 BY
   2079					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   2080					;
   2081					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   2082					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   2083					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   2084					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   2085					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   2086					;
   2087					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   2088					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   2089					;       CORPORATION.
   2090					;
   2091					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   2092					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   2093					;
   2094					;		MODULE: COMMON DEFINITIONS
   2095					;
   2096					;		VERSION: 01-00
   2097					;
   2098					;		AUTHOR: TOM PORCHER
   2099					;
   2100					;		DATE: 4-JUN-75
   2101					;
   2102					;
   2103					;	THIS MODULE CONTAINS:
   2104					;
   2105					;	1) COMMON PARAMETERS AND MACROS
   2106					;
   2107					;	2) LP-20 DEVICE REGISTER DEFINITIONS
   2108					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 20
COMMON PARAMETERS AND MACROS

   2110						.SBTTL	COMMON PARAMETERS AND MACROS
   2111					;
   2112					; PARAMETERS
   2113					;
   2114					;L$$P20=	2			;TWO LINEPRINTERS
   2115		000214 			LPALOC=	140.			;LINE ALLOCATION FOR EACH LP
   2116		000012 			LPRTRY=	10.			;# RETRYS ON ERRORS AND HUNG
   2117					;
   2118					; EVENT FLAGS
   2119					;
   2120		000001 			E.FLPD=	1			;(1) INTERRUPT LEVEL I/O DONE
   2121		000001 			 EF.LPD=BIT0
   2122		000002 			E.FLPC=	2			;(2) MARK-TIME
   2123		000002 			 EF.LPC=BIT1
   2124		000003 			E.FLPQ=	3			;(3) CTY OUTPUT QUEUE I/O REQUESTS
   2125		000004 			 EF.LPQ=BIT2
   2126									;(4) RESERVED FOR E.NIR (EXEC FLAG)
   2127		000005 			E.FLPS=	5			;(5) STATUS REQUEST (LOCAL TO SSTSLP)
   2128		000020 			 EF.LPS=BIT4
   2129		000006 			E.FLPW=	6			;(6) WAIT FOR LP-20 TO SETTLE AFTER FLUSH
   2130		000040 			 EF.LPW=BIT5
   2131					;
   2132					; MISC. MCALL'S
   2133					;
   2134					.MCALL QIOSY$,ALUN$,MRKT$,QIOW$,SPRA$S,SVTK$S,WSIG$S,WTLO$S,WTSE$S,DIR$
   2135					.MCALL $DEF,CALL,RETURN,.INH0,.INH,.ENB0,.ENB,PUSH,POP,.STKM
   2136	005130					$DEF
   2137	005130					QIOSY$
   2138						.ENABLE	AMA
   2139						.LIST	MEB
   2140					;
   2141					; COMMON MACROS
   2142					;
   2143					.MACRO SAVE LIST
   2144						PUSH	<LIST>
   2145					  .MACRO RESTORE
   2146					    $$$=0
   2147					    .IRP ITEM,<LIST>
   2148					      $$$=$$$+1
   2149					    .ENDM
   2150					    .REPT $$$
   2151					      $$$$=0
   2152					      .IRP ITEM,<LIST>
   2153					        $$$$=$$$$+1
   2154					        .IF EQ $$$$-$$$
   2155						  POP	ITEM
   2156					        .ENDC
   2157					      .ENDM
   2158					      $$$=$$$-1
   2159					    .ENDR
   2160					  .ENDM
   2161					.ENDM
   2162					;
   2163					; BITS IN T.HCBC WORD IN THREAD BLOCK
   2164					;
   2165		100000 			TB.DON=	BIT15			;THREAD BLOCK DONE *** MUST BE SIGN BIT ***
   2166		040000 			TB.ABO=	BIT14			;ABORTED BLOCK
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 20-1
COMMON PARAMETERS AND MACROS

   2167		020000 			TB.EOF=	BIT13			;BLOCK REPRESENTS EOF
   2168		010000 			TB.LPC=	BIT12			;LOAD PAGE COUNTER FUNCTION
   2169		004000 			TB.RMD=	BIT11			;TRANSLATION RAM DATA
   2170		002000 			TB.VFD=	BIT10			;VFU DATA
   2171		036000 			TB.SFN=	TB.EOF!TB.LPC!TB.RMD!TB.VFD ;SPECIAL FUNCTIONS
   2172					;
   2173					; QUEUE I/O -- THREAD BLOCK VALUES
   2174					;
   2175		000004 			PBTHRD=	4			;R.PB+4 IS START OF THREAD BLOCK
   2176					;
   2177		177774 			T.HEMA=	0-PBTHRD		;(BYTE) EXTENDED MEMORY ADDRESS BITS 4 & 5
   2178		177775 			T.HVFC=	1-PBTHRD		;(BYTE) VERTICAL FORMAT CONTROL CHARACTER
   2179		177776 			T.HIBC=	2-PBTHRD		;(WORD) INITIAL BYTE COUNT
   2180					;
   2181					;
   2182					; STUFF THAT SHOULD BE GLOBAL, BUT MACY11 DOESN'T LIKE COMPLEX GLOBALS
   2183					;
   2184		000377 			LOBYTE=	377
   2185		177400 			HIBYTE=	^C<LOBYTE>
   2186					;
   2187					;
   2188		000074 			.CYLTM=^D60
   2189					.MACRO	.INH4
   2190						MOV	@#PS,-(SP)
   2191						MOVB	#PR4,@#PS
   2192					.ENDM
   2193					.MACRO	.ENB4
   2194						MOV	(SP)+,@#PS
   2195					.ENDM
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 21
LP-20 DEVICE REGISTER DEFINITIONS

   2197						.SBTTL	LP-20 DEVICE REGISTER DEFINITIONS
   2198					;
   2199					;
   2200					; LP-20 DEVICE REGISTER DEFINITIONS
   2201					;
   2202					; *** NOTE THAT ALL OFFSETS AND ADDRESSES ARE RELATIVE TO LPCSRA ***
   2203					;
   2204					;LPEXPA==175400			;EXTERNAL PAGE ADDRESS OF LPCSRA
   2205					;LPEXPZ==20			;SIZE OF EXTERNAL PAGE ADDRESSES IN BYTES
   2206					;
   2207		000000 			LPCSRA==0			;CONTROL AND STATUS REGISTER A
   2208		100000 				ERR=	BIT15
   2209		040000 				PAGZRO=	BIT14
   2210		020000 				CHRINT=	BIT13
   2211		010000 				VFURDY=	BIT12
   2212		004000 				ONLINE=	BIT11
   2213		002000 				DELHLD=	BIT10
   2214		001000 				RSTERR=	BIT9
   2215		000400 				LOINIT=	BIT8
   2216					;
   2217		000200 				DONE=	BIT7
   2218		000100 				INTENB=	BIT6
   2219		000040 				BUSA17=	BIT5
   2220		000020 				BUSA16=	BIT4
   2221		000010 				MODE01=	BIT3
   2222		000004 				MODE00=	BIT2
   2223		000001 					TSTMOD=	1
   2224		000002 					VFULOD=	2
   2225		000003 					RAMLOD=	3
   2226		000002 				PARENB=	BIT1
   2227		000001 				GO=	BIT0
   2228					;
   2229		000002 			LPCSRB==2			;CONTROL AND STATUS REGISTER B
   2230					; BITS	15-13	NOT USED
   2231		010000 				LPTPBT=	BIT12
   2232		004000 				OPTVFU=	BIT11
   2233		002000 				TEST02=	BIT10
   2234		001000 				TEST01=	BIT9
   2235		000400 				TEST00=	BIT8
   2236					;
   2237		000200 				OFFLIN=	BIT7
   2238		000100 				VFUERR=	BIT6
   2239		000040 				LPTPAR=	BIT5
   2240		000020 				MEMPAR=	BIT4
   2241		000010 				RAMPAR=	BIT3
   2242		000004 				SYNTIM=	BIT2
   2243		000002 				DEMTIM=	BIT1
   2244		000001 				GOERR=	BIT0
   2245					;
   2246		000004 			LPBSAD==4			;BUS ADDRESS REGISTER
   2247					;
   2248		000006 			LPBCTR==6			;BYTE COUNT (2'S COMPLEMENT)
   2249					; BITS	15-12	NOT USED
   2250					;	11-0	BYTE COUNT
   2251					;
   2252		000010 			LPPCTR==10			;PAGE COUNTER
   2253					; BITS	15-12	NOT USED
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 21-1
LP-20 DEVICE REGISTER DEFINITIONS

   2254					;	11-0	PAGE COUNT
   2255					;
   2256		000012 			LPRAMD==12			;RAM DATA REGISTER
   2257					; BITS	15-13	NOT USED
   2258					;	12	RAM PARITY
   2259					;	11-0	RAM DATA
   2260					;
   2261		000014 			LPCBUF==14			;(BYTE) CHARACTER BUFFER REGISTER
   2262		000015 			LPCCTR==15			;(BYTE) COLUMN COUNT REGISTER
   2263					;
   2264		000016 			LPTDAT==16			;(BYTE) PRINTER DATA REGISTER
   2265		000017 			LPCKSM==17			;(BYTE) CHECKSUM REGISTER
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 22
COMMON DEVICE PARAMETER MODULE

   2267						.SBTTL	COMMON DEVICE PARAMETER MODULE
   2268					;
   2269					;                             COPYRIGHT (C) 1975, 1978 BY
   2270					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   2271					;
   2272					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   2273					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   2274					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   2275					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   2276					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   2277					;
   2278					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   2279					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   2280					;       CORPORATION.
   2281					;
   2282					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   2283					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   2284					;
   2285					;
   2286					;		MODULE: COMMON DEVICE PARAMETERS
   2287					;
   2288					;		VERSION: 01-00
   2289					;
   2290					;		AUTHOR: TOM PORCHER
   2291					;
   2292					;		DATE: 25-AUG-75
   2293					;
   2294					;
   2295					;	THIS MODULE CONTAINS:
   2296					;
   2297					;	1) DEVICE STATUS BIT DEFINITIONS
   2298					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 23
DEVICE STATUS BIT DEFINITIONS

   2300						.SBTTL	DEVICE STATUS BIT DEFINITIONS
   2301					;
   2302					; GENERAL FORM OF STATUS BLOCK
   2303					;
   2304					; WORD	0	STANDARD STAUS BITS (DV.XXX)
   2305					; 	1	DEVICE-DEPENDENT BITS (DD.XXX)
   2306					;	2	(HIGH BYTE) # BYTES OF DEVICE-DEPENDENT INFO TO FOLLOW
   2307					;		(LOW BYTE) # BYTES OF DEVICE REGISTERS TO FOLLOW
   2308					;	3-...	DEVICE DEPENDENT INFO (# BYTES IN WORD 2)
   2309					;	.-...	DEVICE REGISTERS (# BYTES IN WORD 2)
   2310					;
   2311					;
   2312					; STANDARD BITS (FIRST WORD OF STATUS)
   2313					;
   2314		000001 			DV.NXD=	BIT0			;NON-EX DEVICE
   2315		000002 			DV.OFL=	BIT1			;OFF-LINE
   2316		000004 			DV.OIR=	BIT2			;HARDWARE ERROR. OPERATOR INTERVENTION REQUIRED.
   2317		000010 			DV.SCN=	BIT3			;SOFTWARE CONDITON. ACKNOWLEDGE REQUIRED.
   2318		000020 			DV.IOP=	BIT4			;I/O IN PROGRESS
   2319		000040 			DV.EOF=	BIT5			;END-OF-FILE ENCOUNTERED
   2320		000100 			DV.LOG=	BIT6			;ERROR LOGGING REQUIRED
   2321		000200 			DV.URE=	BIT7			;UN-RECOVERABLE ERROR
   2322		000400 			DV.F11=	BIT8			;ERROR ON FROM -11 REQUEST
   2323		001000 			DV.HNG=	BIT9			;DEVICE HUNG
   2324					;
   2325					;
   2326					; DEVICE-DEPENDENT BITS (SECOND WORD OF STATUS)
   2327					;
   2328					; LP-20 LINEPRINTER
   2329					;
   2330		000001 			DD.PGZ=	BIT0			;PAGE COUNTER PASSED ZERO
   2331		000002 			DD.CHI=	BIT1			;CHARACTER INTERRUPT (FROM RAM)
   2332		000004 			DD.VFE=	BIT2			;VFU ERROR-- PAPER RE-ALIGNMENT REQUIRED
   2333		000010 			DD.LER=	BIT3			;ERROR FINDING/READING VF AND RAM FILE
   2334		000020 			DD.OVF=	BIT4			;PRINTER HAS OPTICAL VFU (AS OPPOSED TO DAVFU)
   2335		000040 			DD.RME=	BIT5			;RAM PARITY ERROR-- RELOAD REQUIRED
   2336					;
   2337					; DEVICE DEPNDENT INFO FOR LP-20 (2 BYTES):
   2338					; WORD	3	(LOW BYTE) ACCUMULATED CHECKSUM
   2339					;		(HIGH BYTE) RETRY COUNT
   2340					;
   2341					;	4-13	LP-20 DEVICE REGISTERS (16. BYTES)
   2342					;
   2343					;
   2344					; CD-11 CARD READER
   2345					;
   2346		000001 			DD.RCK=	BIT0			;READ (PHOTO) CHECK
   2347		000002 			DD.PCK=	BIT1			;PICK CHECK
   2348		000004 			DD.SCK=	BIT2			;STACK CHECK
   2349		000010 			DD.HEM=	BIT3			;HOPPER EMPTY
   2350		000020 			DD.SFL=	BIT4			;STACKER FULL
   2351					;
   2352					; DEVICE-DEPENDENT INFO FOR CD-11 (0 BYTES)
   2353					; WORD	3-6	DEVICE REGISTERS FOR CD-11 (8. BYTES)
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 24
LP-20 COMMON DATA MODULE

   2355						.SBTTL	LP-20 COMMON DATA MODULE
   2356					;
   2357					;                             COPYRIGHT (C) 1975, 1978 BY
   2358					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   2359					;
   2360					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   2361					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   2362					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   2363					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   2364					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   2365					;
   2366					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   2367					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   2368					;       CORPORATION.
   2369					;
   2370					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   2371					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   2372					;
   2373					;		MODULE: LP-20 COMMON DATA
   2374					;
   2375					;		VERSION: 01-00
   2376					;
   2377					;		AUTHOR: TOM PORCHER
   2378					;
   2379					;		DATE: 7-JUN-75
   2380					;
   2381					;
   2382					;	THIS MODULE CONTAINS:
   2383					;
   2384					;	1) COMMON VARIABLES
   2385					;
   2386					;	2) DEVICE TABLES
   2387					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 25
COMMON VARIABLES

   2389						.SBTTL	COMMON VARIABLES
   2390					;
   2391					; LP DRIVER TASK HEAD
   2392					;
   2393					;
   2394	005130				LPHD::	.STKM	0,0,0,0,0,0,0,LPINI,174000,LPSTK
	005176	000000 	000000 	000000 		.WORD	0,0,0,0
	005204	000000
	005224	174000 	005520'	005410'		.WORD	174000,LPINI,LPSTK
	005260	000005 				.WORD	5
	005262	000000G				.WORD	TTPEN
	005264	000000 				.WORD	0
	005266	000000 				.WORD	0
	005270	000000 				.WORD	0
	005272	000000 				.WORD	0
	005274	000000 				.WORD	0
	005276	000000 				.WORD	0
	005300	000000 				.WORD	0
	005302	000000 				.WORD	0
	005304	000000 				.WORD	0
	005306	000000 				.WORD	0
	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	005520'				.WORD	LPINI
	005426	174000 				.WORD	174000
   2395					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 26
LP-20 DEVICE TABLES

   2397						.SBTTL	LP-20 DEVICE TABLES
   2398
   2399					;
   2400					;	LP-20 STATUS BITS
   2401					;
   2402		100000 				LP.HNG=	BIT15		;LP DID NOT COMPLETE I/O IN 20 SEC
   2403									;SET BY MARK-TIME REQUEST
   2404									;CLEARED BY ..DOLP
   2405		040000 				LP.SST=	BIT14		;SEND STATUS OF THIS LP TO -10
   2406									;SET BY INTERRUPT SERVICE
   2407									;CHECKED BY TASK
   2408		020000 				LP.PZI=	BIT13		;PAGE-ZERO INTERRUPT ENABLE
   2409									;SET FROM RAM/VF LOAD FILE
   2410									;CHECKED ON PAGZRO INTERRUPTS
   2411		010000 				LP.MCH=	BIT12		;MULTI-CHARACTER PRINT OPERATION IN PROGRESS
   2412									; (ARROW MODE). SET ON UNDCHR INTERRUPT,
   2413									; CLEARED WHEN DONE SET.
   2414		004000 				LP.WAT=	BIT11		;THIS LP IS WAITING FOR A RESPONSE
   2415									; FROM THE -10, DUE TO PAGZRO, ERROR
   2416									; ON SOMETHING LIKE THAT. SET BY INTERRUPT
   2417									; SERVICE, CLEARED BY 'CONTINUE'
   2418									; FUNCTION FROM -10.
   2419		002000 				LP.CLR=	BIT10		;CLEAR RAM REQUIRED (DUE TO ERROR)
   2420									; SET BY SSTSLP, CHECKED AND CLEARED BY TESTLP
   2421		001000 				LP.LIP=	BIT9		;LOAD OF VFU AND RAM IN PROGRESS, SET
   2422									; BY START OF LOAD (IN LPIOD) AND CLEARED BY
   2423									; TRANSFER COMPLETE FOR RAM/VFU DATA.
   2424		000400 				LP.F10=	BIT8		;FROM-10 REQUEST HAS BEEN QUEUED
   2425									; SET BY ..STLP AND SPECIAL FUNCTIONS
   2426									; CLEARED WHEN QUEUE IS EMPTY OR ..SPLP
   2427		000200 				LP.EOF=	BIT7		;END-OF-FILE. SET BY EOF FUNCTION ENCOUNTERED
   2428									; IN THREADED LIST BY INTERRUPT SERVICE.
   2429									; CHECKED AND CLEARED BY TESTLP WHEN
   2430									; CHECKSUM IS CLEARED.
   2431		000003 				LP.UNT=	BIT1!BIT0	;(LOW BITS) UNIT # OF THIS LP.
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 27
LP-20 DRIVER TASK MODULE

   2433						.SBTTL	LP-20 DRIVER TASK MODULE
   2434					;
   2435					;                             COPYRIGHT (C) 1975, 1978 BY
   2436					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   2437					;
   2438					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   2439					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   2440					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   2441					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   2442					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   2443					;
   2444					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   2445					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   2446					;       CORPORATION.
   2447					;
   2448					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   2449					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   2450					;
   2451					;		MODULE: LP-20 DRIVER TASK
   2452					;
   2453					;		VERSION: 01-01
   2454					;
   2455					;		AUTHOR: TOM PORCHER
   2456					;
   2457					;		DATE: 4-JUN-75
   2458					;
   2459					;
   2460					;	THIS MODULE CONTAINS:
   2461					;
   2462					;	1) LPINI (LP-20 INITIALIZATION)
   2463					;
   2464					;	2) LPLOOP (LP-20 DRIVER TASK LOOP)
   2465					;
   2466					;	MODIFICATIONS:
   2467					;
   2468					;	NO.	DATE		PROGRAMMER	REASON
   2469					;	---	----		----------	------
   2470					;	001	28-FEB-77	A. PECKHAM	CHANGE LENGTH OF VFU RECORDS
   2471					;						TO 145 FROM 140
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 28
LPINI	(INITIALIZE LP-20 TASK)

   2473						.SBTTL	LPINI	(INITIALIZE LP-20 TASK)
   2474					;
   2475					;+
   2476					;
   2477					;	THIS IS THE LP-20 USER-LEVEL TASK. IT HANDLES QIO
   2478					; REQUESTS, OUTPUT ACKNOWLEDGEMNETS, AND HUNG-CHECKING.
   2479					;
   2480					;	LPINI IS CALLED WHEN THE TASK IS STARTED. IT RESETS THE
   2481					; LP-20 AND LOADS THE STANDARD VERTICAL FORMAT AND TRANSLATION
   2482					; RAM.  THE 10-SECOND MARK-TIME REQUEST IS ALSO ENTERED.
   2483					;
   2484					;-
   2485					;
   2486					;
   2487					; DIRECTIVE PARAMETER BLOCKS
   2488					;
   2489	005430				LPMRKT:
   2490	005430					MRKT$	E.FLPC,10.*.CYLTM,10.*.CYLTM ;MARK-TIME REQUEST FOR 10 SECONDS
	005430	   027 	   005 			.BYTE	23.,5
	005432	000002 				.WORD	E.FLPC
	005434	001130 				.WORD	10.*.CYLTM
	005436	001130 				.WORD	10.*.CYLTM
	005440	000000 				.WORD
   2491	005442				MKSCDP:
   2492	005442					MRKT$	E.FLPW,.CYLTM,0		;WAIT FOR 1 SECOND
	005442	   027 	   005 			.BYTE	23.,5
	005444	000006 				.WORD	E.FLPW
	005446	000074 				.WORD	.CYLTM
	005450	000000 				.WORD	0
	005452	000000 				.WORD
   2493					;
   2494	005454				LPSSTV:
   2495	005454	005456'				.WORD	LPTRP4		;WHERE TO GO ON TRAP-AT-4
   2496					;
   2497					; HERE ON A TRAP TO 4 (HOPEFULLY AN EXPECTED NON-EX LP)
   2498					;
   2499	005456				LPTRP4:
   2500	005456	021627 	007046'			CMP	(SP),#LPDINT	;THIS FROM MARK-TIME?
   2501	005462	001404 				BEQ	10$		;YES-- OK
   2502	005464	021627 	010476'			CMP	(SP),#LPDCLR	;HOW ABOUT INIT?
   2503	005470	001401 				BEQ	10$		;YES-- OK
   2504	005472	000004 				IOT			;***** FATAL-- BAD TRAP AT 4
   2505					;
   2506	005474				10$:
   2507	005474	005062 	000000G			CLR	LPCSA(R2)	;NON-EX LP-- SAY SO
   2508	005500	005003 				CLR	R3		; BOTH WAYS
   2509	005502	052766 	000001 	000002 		BIS	#BIT0,2(SP)	;SET CARRY ON STACK
   2510	005510	000002 				RTI			;RETURN TO INTERRUPTED ROUTINE
   2511					;
   2512					; HERE ON POWER-RECOVERY AST
   2513					;
   2514	005512				LPWRUP:
   2515	005512					CALL	INITLP		;INIT ALL LP'S
	005512	004737 	010426'			JSR	PC,INITLP
   2516	005516	000002 				RTI			;RETURN FROM AST
   2517					;
   2518					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 28-1
LPINI	(INITIALIZE LP-20 TASK)

   2519					; LPINI -- INITIALIZE LP'S
   2520					;
   2521	005520				LPINI:
   2522	005520	013737 	000000G	000000G		MOV	.CRTSK,LPEVFG	;SAVE OUR TASK ADDRESS
   2523	005526	062737 	000020 	000000G		ADD	#A.EF,LPEVFG	;MAKE THAT ADDR OF OUR EVENT FLAGS
   2524	005534	052777 	000060 	000000G		BIS	#EF.LPW!EF.LPS,@LPEVFG ;SAY STATUS BUFFER AVAILABLE AND NOT WAITING
   2525	005542					DIR$	#LPMRKT		;ENTER MARK-TIME REQUEST FOR 10 SECONDS
	005542	012746 	005430'			MOV	#LPMRKT,-(SP)
	005546	104375 				EMT	375
   2526	005550					SVTK$S	#LPSSTV,#1	;ENABLE FOR TRAP-AT-4 RECOGNITION
	005550	012746 	000001 			MOV	#1,-(SP)
	005554	012746 	005454'			MOV	#LPSSTV,-(SP)
	005560	012746 				MOV	(PC)+,-(SP)
	005562	   071 	   003 			.BYTE	57.,3
	005564	104375 				EMT	375
   2527	005566					SPRA$S	#LPWRUP		;SETUP POWER-UP AST
	005566	012746 	005512'			MOV	#LPWRUP,-(SP)
	005572	012746 				MOV	(PC)+,-(SP)
	005574	   155 	   002 			.BYTE	109.,2
	005576	104375 				EMT	375
   2528	005600					CALL	INITLP		;INIT ALL THE LP'S
	005600	004737 	010426'			JSR	PC,INITLP
   2529					;	BR	LPLOOP		;FALL INTO NORMAL PROCESSING LOOP
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 29
LPLOOP	(LP-20 DRIVER TASK LOOP)

   2531						.SBTTL	LPLOOP	(LP-20 DRIVER TASK LOOP)
   2532					;
   2533					;+
   2534					;
   2535					;	LPLOOP WAITS FOR AND DISPATCHES ON THE LP EVENT FLAGS,
   2536					; EF.LPD (INTERRUPT LEVEL I/O DONE), EF.NIR (QUEUE I/O REQUEST),
   2537					; AND EF.LPC (10 SECOND MARK-TIME REQUEST), IN THAT ORDER.
   2538					;
   2539					;-
   2540					;
   2541					;
   2542	005604				LPLOOP:
   2543	005604					WTLO$S	1,#EF.LPC!EF.LPD!EF.NIR ;WAIT FOR CLOCK (10 SECONDS)
	005604	012746 	000000C			MOV	#EF.LPC!EF.LPD!EF.NIR,-(SP)
	005610	012746 	000001 			MOV	#1,-(SP)
	005614	012746 				MOV	(PC)+,-(SP)
	005616	   053 	   003 			.BYTE	43.,3
	005620	104375 				EMT	375
   2544									; OR I/O DONE FROM ISR
   2545									; OR QIO REQUEST TO DO.
   2546	005622					.INH			;A FLAG SET-- LOCK OUT LP INTERRUPTS
	005622	013746 	177776 			MOV	PS,-(SP)
	005626	112737 	000340 	177776 		MOVB	#PR7,@#PS	;;
   2547	005634	017737 	000000G	000000G		MOV	@LPEVFG,LPCEVF	;GET CURRENT EVENT FLAGS
   2548	005642	042777 	000000C	000000G		BIC	#EF.LPC!EF.LPD!EF.NIR,@LPEVFG ;CLEAR THE FLAGS WE WAITED FOR
   2549	005650					.ENB			;RETORE IRPS
	005650	012637 	177776 			MOV	(SP)+,@#PS	;;
   2550	005654	005737 	000000G			TST	.LPPFL		;POWER FAIL?
   2551	005660	001404 				BEQ	10$		;NO -- CONTINUE
   2552	005662					CALL	INITLP
	005662	004737 	010426'			JSR	PC,INITLP
   2553	005666	005037 	000000G			CLR	.LPPFL
   2554	005672				10$:
   2555					;
   2556					;	BR	LPIOD		;TRY FOR EF.IOD (I/O DONE) FIRST
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 30
LPIOD	(LP TASK I/O DONE)

   2558						.SBTTL	LPIOD	(LP TASK I/O DONE)
   2559					;
   2560					;+
   2561					;
   2562					;	LPIOD IS DISPATCHED TO WHENEVER THE EVENT FLAG EF.LPD IS SET.
   2563					; THIS IS SET BY THE INTERRUPT SEVICE WHENEVER IT IS DONE WITH A BUFFER
   2564					; OR STATUS INFORMATION IS TO BE SENT TO THE -10 (IE. LP JUST CAME
   2565					; ONLINE).
   2566					;
   2567					;	EACH LP'S THREADED OUTPUT LIST IS SCANNED FOR DONE BUFFERS
   2568					; (INDICATED BY T.HCBC NEGATIVE). THESE ARE RETURNED TO THE FREE POOL,
   2569					; AND, IN THE CASE OF QUEUE I/O REQUESTS, ..IODN IS CALLED TO TELL
   2570					; THE REQUESTOR THAT I/O HAS BEEN COMPLETED. IF A QUEUE I/O REQUEST
   2571					; IS STOPPED IN THE MIDDLE OF A TRANSFER BECAUSE OF ERROR, THE
   2572					; ERROR INDICATION IS GIVEN TO ..IODN, AND THE REQUEST IS ABORTED.
   2573					;
   2574					;	AFTER THE THREADED LIST SCAN, THE LP STATUS IS SENT TO THE
   2575					; -10 (BY CALLING SSTSLP) IF THE LP.SST FLAG IS SET.
   2576					;
   2577					;	IF A BUFFER WAS COMPLETED, AND THERE IS EITHER NONE
   2578					; OR ONE BUFFER TO OUTPUT, A REQUEST TO SEND IS SENT TO THE -10
   2579					; (BY CALLING ..SACK).
   2580					;
   2581					;-
   2582					;
   2583	005672				LPIOD:
   2584	005672	032737 	000001 	000000G		BIT	#EF.LPD,LPCEVF	;I/O DONE?
   2585	005700	001504 				BEQ	99$		;NO-- TRY NEXT FLAG IN CHAIN
   2586	005702	012702 	000000G			MOV	#LPTBL,R2	;ADDRESS LPTBL (UNIT 0)
   2587	005706					PUSH	#L$$P20		;STACK COUNT OF LP'S TO LOOK AT
	005706	012746 	000002 			MOV	#L$$P20,-(SP)
   2588	005712				10$:
   2589	005712	005005 				CLR	R5		;AND INDICATE NO BUFFERS DONE
   2590	005714	016203 	000000G			MOV	LPCSA(R2),R3	;GET THE EXT PAGE ADDR OF THIS LP
   2591					;
   2592					; LOOP THROUGH THREADED LIST FOR THIS LP
   2593					;
   2594	005720				20$:
   2595	005720	016200 	000000G			MOV	LPTHD(R2),R0	;GET START OF LIST
   2596	005724	001411 				BEQ	80$		;DONE-- GO AWAY
   2597					;
   2598					; LOOK AT THIS THREAD BLOCK TO SEE IF DONE
   2599					;
   2600	005726				30$:
   2601	005726	005760 	000000G			TST	T.HCBC(R0)	;SEE IF DONE
   2602	005732	002471 				BLT	40$		;DONE-- PROCESS
   2603	005734	005762 	000000G			TST	LPITH(R2)	;IS I/O IN PROGRESS ON THIS BLOCK?
   2604	005740	001003 				BNE	80$		;YES-- WE ARE DONE WITH WHAT IS DONE
   2605					;
   2606					; LP STOPPED ON THIS ACTIVE THREAD BLOCK
   2607					;
   2608	005742	032712 	001000 			BIT	#LP.LIP,(R2)	;LOAD IN PROGRESS?
   2609	005746	001063 				BNE	40$		;YES-- TERMINATE IT, SINCE I/O STOPPED
   2610					;
   2611					; END OF LIST-- SEE IF WE SHOULD SEND STATUS AND/OR ACK
   2612					;
   2613	005750				80$:
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 30-1
LPIOD	(LP TASK I/O DONE)

   2614	005750	032712 	040000 			BIT	#LP.SST,(R2)	;TIME TO SEND STATUS?
   2615	005754	001402 				BEQ	81$		;NO-- HOW BOUT ACK?
   2616	005756					CALL	SSTSLP		;YES-- SEND STATUS TO -10
	005756	004737 	007234'			JSR	PC,SSTSLP
   2617	005762				81$:
   2618	005762	005700 				TST	R0		;ANYTHING LEFT TO DO?
   2619	005764	001411 				BEQ	84$		;NO-- SEND ACK
   2620	005766	032712 	004000 			BIT	#LP.WAT,(R2)	;ARE WE WAITING FOR RESPONSE?
   2621	005772	001026 				BNE	86$		;YES-- DON'T START OUPUT
   2622	005774	005762 	000000G			TST	LPITH(R2)	;NO-- IS LP GOING ALREADY?
   2623	006000	001023 				BNE	86$		;YES-- LEAVE IT GO
   2624	006002					CALL	TESTLP		;NO-- SEE IF LP CAN BE STARTED
	006002	004737 	010236'			JSR	PC,TESTLP
   2625	006006	000420 				BR	86$		;SEE IF ACK NEEDED
   2626					;
   2627					; QUEUE IS EMPTY-- RESET ALL FLAGS
   2628					;
   2629	006010				84$:
   2630	006010					.INH			;;;MAKE SURE DTE DOESN'T GIVE US SOMETHING
	006010	013746 	177776 			MOV	PS,-(SP)
	006014	112737 	000340 	177776 		MOVB	#PR7,@#PS	;;
   2631	006022	016200 	000000G			MOV	LPTHD(R2),R0	;;;GET THREAD POINTER
   2632	006026	001006 				BNE	85$		;;;OOPS-- LET'S GO AWAY, WE GOT SOMETHING
   2633	006030	032777 	000001 	000000G		BIT	#EF.LPD,@LPEVFG	;;;WILL WE BE BACK AGAIN?
   2634	006036	001002 				BNE	85$		;;;YES-- CATCH FLAGS NEXT TIME
   2635	006040	042712 	115400 			BIC	#LP.F10!LP.WAT!LP.LIP!LP.MCH!LP.HNG,(R2) ;;;SURELY OFF NOW
   2636	006044				85$:
   2637	006044					.ENB			;RESTORE INTERRUPTS
	006044	012637 	177776 			MOV	(SP)+,@#PS	;;
   2638	006050				86$:
   2639	006050	005705 				TST	R5		;DID WE REMOVE A BUFFER?
   2640	006052	001412 				BEQ	90$		;NO-- DON'T SEND ACK
   2641	006054	005700 				TST	R0		;YES-- ANY LEFT?
   2642	006056	001402 				BEQ	87$		;NONE-- SEND ACK
   2643	006060	005710 				TST	@R0		;IS THIS LAST BUFFER?
   2644	006062	001006 				BNE	90$		;NO-- SEND NOTHING
   2645	006064				87$:
   2646	006064	012700 	000000G			MOV	#LPTBL,R0	;ADDRESS BASE ADDR OF TABLE FOR ..SACK
   2647	006070	012703 	000000G			MOV	#D.CLPT,R3	;SAY LPT DEVICE CODE
   2648	006074					CALL	..SACK		;SEND THE ACK
	006074	004737 	000000G			JSR	PC,..SACK
   2649					;
   2650					; DONE WITH LP-- GET ANOTHER
   2651					;
   2652	006100				90$:
   2653	006100	062702 	000000G			ADD	#LPSIZE,R2	;BUMP TO NEXT LP IN TABLE
   2654	006104	005316 				DEC	(SP)		;DECREMENT COUNT
   2655	006106	003301 				BGT	10$		;BACK FOR MORE
   2656	006110	005726 				TST	(SP)+		;CLEAN STACK
   2657	006112				99$:
   2658	006112	000137 	006552'			JMP	LPNIR		;DONE-- TRY NEXT EVENT-FLAG
   2659					;
   2660					; THREAD BLOCK DONE-- REMOVE FROM LIST & DEALLOCATE
   2661					;
   2662	006116				40$:
   2663	006116	005703 				TST	R3		;LP EXIST???
   2664	006120	001564 				BEQ	49$		;NO-- GIVE UP
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 30-2
LPIOD	(LP TASK I/O DONE)

   2665	006122	032712 	001000 			BIT	#LP.LIP,(R2)	;LOAD IN PROGRESS (I.E. NOW COMPLETE)
   2666	006126	001424 				BEQ	41$		;NO-- GO ON
   2667					;
   2668	006130	042712 	001000 			BIC	#LP.LIP,(R2)	;YES-- NO LONGER SO
   2669	006134	042713 	000014 			BIC	#MODE00!MODE01,(R3) ;CLEAR LOAD MODE BITS
   2670	006140					PUSH	<R0,R3>		;SAVE EPA
	006140	010046 				MOV	R0,-(SP)
	006142	010346 				MOV	R3,-(SP)
   2671	006144	016200 	000000G			MOV	LPRMA(R2),R0	;GET RAM BUFFER ADDR
   2672	006150	016201 	000000G			MOV	LPRMZ(R2),R1	; AND DATA SIZE
   2673	006154	012703 	000000G			MOV	#.BGBUF,R3	;WE GOT IT FROM THE BIG BUFFER
   2674	006160					CALL	..DEC2		;RETURN THE BUFFER
	006160	004737 	000000G			JSR	PC,..DEC2
   2675	006164					POP	<R3,R0>		;RESTORE EPA
	006164	012603 				MOV	(SP)+,R3
	006166	012600 				MOV	(SP)+,R0
   2676	006170	005062 	000000G			CLR	LPRMA(R2)	;NO LONGER THERE
   2677	006174	005062 	000000G			CLR	LPRMC(R2)	; . .
   2678	006200				41$:
   2679	006200	016004 	000000G			MOV	T.HCBC(R0),R4	;GET COMPLETION STATUS
   2680	006204	032704 	040000 			BIT	#TB.ABO,R4	;ABORTED?
   2681	006210	001130 				BNE	49$		;YES-- LEAVE NOW
   2682	006212	032704 	036000 			BIT	#TB.SFN,R4	;SPECIAL FUNCTION?
   2683	006216	001525 				BEQ	49$		;NO-- GO ON
   2684					;
   2685	006220	032704 	020000 			BIT	#TB.EOF,R4	;EOF?
   2686	006224	001430 				BEQ	42$		;NO-- JUST GO ON
   2687	006226	016260 	000000G	000000G		MOV	LPRMA(R2),T.HCAD(R0) ;RAM/VFU DATA PRESENT?
   2688	006234	001003 				BNE	411$		;YES-- DO RAM/VFU LOAD
   2689	006236	052712 	040200 			BIS	#LP.EOF!LP.SST,(R2) ;NO-- NOTE THAT EOF HAS OCCURED
   2690	006242	000513 				BR	49$		;THAT'S IT FOR EOF IF NO RAM/VFU DATA
   2691	006244				411$:
   2692	006244	016260 	000000G	000000G		MOV	LPRMC(R2),T.HCBC(R0) ;SET BYTE COUNT= LAST ADDRESS
   2693	006252	166060 	000000G	000000G		SUB	T.HCAD(R0),T.HCBC(R0) ;MAKE IT A BYTE COUNT
   2694	006260	052712 	001000 			BIS	#LP.LIP,(R2)	;NOTE LOAD NOW IN PRGRESS
   2695	006264	052713 	000010 			BIS	#VFULOD*MODE00,(R3) ;ASSUME VFU LOAD
   2696	006270	026227 	000000G	001000 		CMP	LPRMZ(R2),#1000	;TRNASLATION RAM DATA?
   2697	006276	001224 				BNE	80$		;NO-- MUST BE VFU DATA
   2698	006300	052713 	000014 			BIS	#RAMLOD*MODE00,(R3) ;YES-- SET RAM LOAD MODE
   2699	006304	000621 				BR	80$		;START LP GOING ON THIS BLOCK
   2700	006306				42$:
   2701	006306	032704 	010000 			BIT	#TB.LPC,R4	;LOAD PAGE COUNTER FUNCTION?
   2702	006312	001413 				BEQ	43$		;NO-- GO ON
   2703	006314	042712 	020000 			BIC	#LP.PZI,(R2)	;ASSUME NO INTERRUPT ENABLE
   2704	006320	016001 	000000G			MOV	T.HCAD(R0),R1	;GET ADDRESS OF FUNCTION DATA
   2705	006324	016163 	000002 	000010 		MOV	2(R1),LPPCTR(R3) ;SET PAGE COUNTER
   2706	006332	002057 				BGE	49$		;BIT15=0-- NO INTERRUPT
   2707	006334	052712 	020000 			BIS	#LP.PZI,(R2)	;BIT15=1-- INTERRUPT ENABLE
   2708	006340	000454 				BR	49$		;ALL DONE
   2709	006342				43$:
   2710	006342					PUSH	<R3,R0>		;SAVE THIS THREAD BLOCK ADDRESS
	006342	010346 				MOV	R3,-(SP)
	006344	010046 				MOV	R0,-(SP)
   2711	006346	016201 	000000G			MOV	LPRMC(R2),R1	;GET CURRENT RAM DATA ADDRESS
   2712	006352	001026 				BNE	46$		;GOT IT-- PUT THIS DATA IN THAT BUFFER
   2713	006354	012700 	000000G			MOV	#.BGBUF,R0	;POINT TO BIG BUFFER FOR DATA BLOCK
   2714	006360	012701 	001000 			MOV	#1000,R1	;ASSUME TRANSLATION RAM DATA
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 30-3
LPIOD	(LP TASK I/O DONE)

   2715	006364	032704 	004000 			BIT	#TB.RMD,R4	;RAM DATA?
   2716	006370	001002 				BNE	44$		;YES-- GOT IT
   2717	006372	012701 	000444 			MOV	#<^D<145*2>+2+3>&<-4>,R1 ; +++001 NO-- VFU DATA-- GET MAX LENGTH
   2718	006376				44$:
   2719	006376					CALL	..ALC2		;GET A BUFFER
	006376	004737 	000000G			JSR	PC,..ALC2
   2720	006402	103004 				BCC	45$		;GOT IT-- GO ON
   2721	006404					WSIG$S			;NO GOT-- WAIT AN INSTANT
	006404	012746 				MOV	(PC)+,-(SP)
	006406	   061 	   001 			.BYTE	49.,1
	006410	104375 				EMT	375
   2722	006412	000771 				BR	44$		;TRY FOR BUFFER AGAIN
   2723	006414				45$:
   2724	006414	010162 	000000G			MOV	R1,LPRMZ(R2)	;STORE RAM DATA SIZE
   2725	006420	010001 				MOV	R0,R1		;COPY THAT BUFFER ADDRESS
   2726	006422	010162 	000000G			MOV	R1,LPRMA(R2)	;STORE RAM DATA ADDRESS
   2727	006426	011600 				MOV	(SP),R0		;RESTORE THREAD BLOCK ADDRESS
   2728	006430				46$:
   2729	006430	016203 	000000G			MOV	LPRMA(R2),R3	;COPY ADDRESS WHERE DATA GOES
   2730	006434	066203 	000000G			ADD	LPRMZ(R2),R3	;COMPUTE END OF BUFFER
   2731	006440	016000 	000000G			MOV	T.HCAD(R0),R0	;GET THE RAM DATA ADDRESS
   2732	006444	042704 	177400 			BIC	#HIBYTE,R4	;CLEAR TRASH IN BYTE COUNT
   2733	006450	001404 				BEQ	48$		;ALL DONE IF ZERO BYTE COUNT
   2734	006452				47$:
   2735	006452	020103 				CMP	R1,R3		;GOING BEYOND END OF BUFFER?
   2736	006454	103002 				BHIS	48$		;YES-- THAT'S ALL THE DATA WE CAN TAKE
   2737	006456	112021 				MOVB	(R0)+,(R1)+	;STORE A BYTE AWAY
   2738	006460	077404 				SOB	R4,47$		;LOOP FOR ALL BYTES OF DATA
   2739	006462				48$:
   2740	006462					POP	<R0,R3>		;RESTORE THE THREAD BLOCK POIINTER
	006462	012600 				MOV	(SP)+,R0
	006464	012603 				MOV	(SP)+,R3
   2741	006466	010162 	000000G			MOV	R1,LPRMC(R2)	;STORE CURRENT BYTE ADDRESS
   2742	006472				49$:
   2743	006472	011062 	000000G			MOV	@R0,LPTHD(R2)	;REMOVE THIS BUFFER
   2744	006476	016001 	000000G			MOV	T.HBCT(R0),R1	;GET SIZE OF THIS THREAD BLOCK
   2745	006502	001013 				BNE	60$		;NOT QIO-- JUST DEALLOCATE
   2746					;
   2747					; QUEUE I/O REQUEST DONE-- CALL ..IODN
   2748					;
   2749	006504					PUSH	R3		;SAVE EPA
	006504	010346 				MOV	R3,-(SP)
   2750	006506	110403 				MOVB	R4,R3		;GET QUEUE I/O STATUS
   2751	006510	016004 	177776 			MOV	T.HIBC(R0),R4	;GET INITAIL BYTE COUNT AS TRANSFER COUNT
   2752	006514	010001 				MOV	R0,R1		;COPY THREAD BLOCK ADDRESS
   2753	006516	162701 	000004G			SUB	#R.PB+PBTHRD,R1	;GET ADDRESS OF REAL QUEUE I/O NODE
   2754	006522					CALL	..IODN		;SAY I/O DONE
	006522	004737 	000000G			JSR	PC,..IODN
   2755	006526					POP	R3		;RESTORE EPA
	006526	012603 				MOV	(SP)+,R3
   2756	006530	000406 				BR	61$		;ALL DONE
   2757					;
   2758					; ALL DONE WITH THREAD BLOCK-- DEALLOCATE IT
   2759					;
   2760	006532				60$:
   2761	006532					CALL	..DECB		;DEALLOCATE THE BUFFER
	006532	004737 	000000G			JSR	PC,..DECB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 30-4
LPIOD	(LP TASK I/O DONE)

   2762	006536	032712 	000400 			BIT	#LP.F10,(R2)	;DOES -10 HAVE A REQUEST IN?
   2763	006542	001401 				BEQ	61$		;NO-- DON'T FLAG TO ACK
   2764	006544	010205 				MOV	R2,R5		;NOTE THAT WE DID SOMETHING
   2765	006546				61$:
   2766	006546	000137 	005720'			JMP	20$		;GET NEXT THREAD BLOCK FOR THIS LP
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 31
LPNIR	(LP TASK QUEUE I/O REQUEST)

   2768						.SBTTL	LPNIR	(LP TASK QUEUE I/O REQUEST)
   2769					;
   2770					;+
   2771					;
   2772					;	LPNIR IS DISPATCHED TO WHENEVER THE EVENT FLAG EF.NIR IS SET.
   2773					; THIS OCCURS WHEN ANOTHER TASK REQUESTS OUTPUT TO ANY LP. ALL LP'S
   2774					; ARE CHECKED FOR A REQUEST WAITING.
   2775					;
   2776					;	THE REQUEST IS QUEUED UP IN THE THREADED OUTPUT LIST
   2777					; FOR THIS LP, USING AN EXTENDED THREAD BLOCK. THIS BLOCK IS DISTINGUISHED
   2778					; AS A QUEUE I/O REQUEST BY T.HBCT BEING ZERO (THE LENGTH OF THE BLOCK
   2779					; IS T.HQRS).  THE ADDITIONAL INFORMATION IN THIS THREAD BLOCK IS:
   2780					;	T.HEMA --	(BYTE) EXTENDED MEMORY ADDRESS BITS (BITS 4 AND 5)
   2781					;	T.HVFC --	(BYTE) VERTICAL FORMAT CONTROL CHARACTER
   2782					;	T.HIBC --	INITIAL BYTE COUNT
   2783					;
   2784					;-
   2785					;
   2786						.ENABLE	LSB
   2787	006552				LPNIR:
   2788	006552	032737 	000000G	000000G		BIT	#EF.NIR,LPCEVF	;A QUEUE I/O REQUEST FOR US?
   2789	006560	001514 				BEQ	99$		;NO-- TRY NEXT IN CHAIN
   2790	006562	012700 	050114 			MOV	#"LP,R0		;SAY WE ARE A LP
   2791	006566					CALL	..DQRN		;GET A REQUEST
	006566	004737 	000000G			JSR	PC,..DQRN
   2792	006572	103507 				BCS	99$		;NONE-- DONE
   2793					;
   2794					; GOT QUEUE I/O REQUEST NODE-- ADDR IN R1
   2795					;
   2796					; REGISTERS RETURNED BY ..DQRN
   2797					;	R1 --	ADDRESS OF REQUEST NODE
   2798					;	R2 --	UNIT # OF REQUESTED DEVICE
   2799					;	R3 --	BYTE COUNT OF DATA
   2800					;	R4 --	EXTENDED ADDRESS BITS 16 AND 17 (IN BITS 4 AND 5)
   2801					;	R5 --	PHYSICAL ADDRESS OF DATA
   2802					;
   2803					; CHECK FOR FUNCTION CODES:
   2804					;	IO.WLB	OUTPUT BUFFER
   2805					;	IO.WVB	OUTPUT BUFFER
   2806					;	IO.KIL	FLUSH OUTPUT (CALL ..SPLP)
   2807					;	IO.DAC	CLOSE OUTPUT (TYPE <FF>)
   2808					;	IO.RVB	READ-- ILLEGAL FUNCTION
   2809					;	IO.RLB	READ-- ILLEGAL FUNCTION
   2810					;
   2811					; ALL OTHER FUNCTIONS ARE IGNORED
   2812					;
   2813	006574	006302 				ASL	R2		;MAKE UNIT IN WORDS
   2814	006576	016202 	000000G			MOV	LPUTBL(R2),R2	;GET ADDR OF LPTBL ENTRY FOR THIS LP
   2815	006602	116100 	000001G			MOVB	R.FC+1(R1),R0	;GET FUNCTION CODE FROM REQUEST NODE
   2816	006606	001430 				BEQ	20$		;EXPRESS FUNCTION-- LOOK AT IT
   2817	006610	122700 	000001 			CMPB	#IO.WLB/400,R0	;WRITE LOGICAL?
   2818	006614	001441 				BEQ	40$		;YES-- PRINT
   2819	006616	122700 	000022 			CMPB	#IO.WVB/400,R0	;WRITE VIRTUAL?
   2820	006622	001436 				BEQ	40$		;YES-- PRINT ALSO
   2821	006624	122700 	000002 			CMPB	#IO.RLB/400,R0	;READ LOGICAL????
   2822	006630	001414 				BEQ	15$		;YES-- ILLEGAL
   2823	006632	122700 	000021 			CMPB	#IO.RVB/400,R0	;READ VIRTUAL????
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 31-1
LPNIR	(LP TASK QUEUE I/O REQUEST)

   2824	006636	001411 				BEQ	15$		;YES-- ILLEGAL
   2825	006640	122700 	000020 			CMPB	#IO.DAC/400,R0	;CLOSE OUT FILE?
   2826	006644	001017 				BNE	30$		;NO-- ASSUME OK, GIVE SUCCESS
   2827					;
   2828					; IO.DAC -- CLOSE OUT FILE, SEND <FF>
   2829					;
   2830	006646	012705 	007000'			MOV	#VFCFF,R5	;SET ADDRESS TO POINT TO FORM-FEED
   2831	006652	012703 	000001 			MOV	#1,R3		;BYTE COUNT= 1
   2832	006656	005004 				CLR	R4		;NO EMA BITS
   2833	006660	000417 				BR	40$		;SEND LIKE QUEUE I/O
   2834					;
   2835					; ILLEGAL FUNCTION
   2836					;
   2837	006662				15$:
   2838	006662	012703 	177776 			MOV	#IE.IFC,R3	;SAY ILLEGAL
   2839	006666	000410 				BR	31$		;SO SAY IT
   2840					;
   2841					; IO.KIL-- FLUSH OUTPUT
   2842					;
   2843	006670				20$:
   2844	006670	022761 	000012 	000000G		CMP	#IO.KIL,R.FC(R1) ;THIS I/O KILL?
   2845	006676	001002 				BNE	30$		;NO-- IGNORE
   2846	006700					CALL	..SPLP		;FLUSH OUTPUT
	006700	004737 	011270'			JSR	PC,..SPLP
   2847					;
   2848					; IO.ATT, IO.DET-- IGNORE
   2849					;
   2850	006704				30$:
   2851	006704	012703 	000001 			MOV	#IS.SUC,R3	;SAY 'SUCCESS' TO ..IODN
   2852	006710				31$:
   2853	006710	005004 				CLR	R4		;NO BYTES TRANSFERRED
   2854	006712					CALL	..IODN		;RETURN PACKET TO REQUESTOR
	006712	004737 	000000G			JSR	PC,..IODN
   2855	006716	000715 				BR	LPNIR		;DONE-- TRY FOR SOME MORE
   2856					;
   2857					; IO.WLB, IO.WVB-- SEND DATA TO LP
   2858					;
   2859					; ENTER THIS REQUEST IN THREADED OUTPUT LIST
   2860					;
   2861	006720				40$:
   2862	006720	010100 				MOV	R1,R0		;COPY NODE ADDRESS
   2863	006722	062700 	000004G			ADD	#R.PB+PBTHRD,R0	;POINT TO THREAD BLOCK AREA OF R.PB
   2867	006726	116101 	000004G			MOVB	R.PB+4(R1),R1	;GET VERTICAL FORMAT CHARACTER
   2868	006732	005060 	000000G			CLR	T.HBCT(R0)	;NOTE THAT THIS IS A QIO REQUEST
   2869	006736	010560 	000000G			MOV	R5,T.HCAD(R0)	;SAVE PHYSICAL ADDR OF DATA
   2870	006742	010360 	000000G			MOV	R3,T.HCBC(R0)	; AND BYTE COUNT OF DATA
   2871	006746	110460 	177774 			MOVB	R4,T.HEMA(R0)	; AND EXTENDED MEMORY ADDR BITS
   2872					;
   2873	006752	012705 	006776'			MOV	#VFCTBL,R5	;YES-- POINT TO TABLE OF FORMAT CONTROL CHARACTERS
   2874	006756				55$:
   2875	006756	112560 	177775 			MOVB	(R5)+,T.HVFC(R0) ;GET THE CHARCTER TO CONTROL
   2876	006762	001402 				BEQ	60$		;END OF TABLE-- GIVE UP WITH NOTHING
   2877	006764	122501 				CMPB	(R5)+,R1	;MATCH THE VFC CHARACTER?
   2878	006766	001373 				BNE	55$		;NO-- LOOP UNTIL WE FIND ONE
   2879	006770				60$:
   2880	006770					CALL	..PTLP		;START LP ON THIS BUFFER, OR QUEUE UP
	006770	004737 	011522'			JSR	PC,..PTLP
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 31-2
LPNIR	(LP TASK QUEUE I/O REQUEST)

   2881	006774	000666 				BR	LPNIR		;LOOK FOR ANOTHER REQUEST
   2882					;
   2883					; VERTICAL FORMAT CONTROL CHARACTER TABLE FOR QUEUE I/O REQUESTS
   2884					;
   2885	006776				VFCTBL:
   2886	006776	   012 	   040 			.BYTE	12,' 		;<SPACE>	NEXT LINE
   2887	007000	   014 	   061 		VFCFF:	.BYTE	14,'1		;"1"		NEXT PAGE
   2888	007002	   015 	   053 			.BYTE	15,'+		;"+"		OVERPRINT
   2889	007004	   021 	   060 			.BYTE	21,'0		;"0"		DOUBLE SPACE
   2890	007006	   012 	   044 			.BYTE	12,'$		;"$"		PROMPTING OUTPUT
   2891	007010	   000 				.BYTE	0		;END OF TABLE
   2892						.EVEN
   2893					;
   2894					;
   2895	007012				99$:
   2896					;	BR	LPMKT		;NEXT IS MARK-TIME REQUESTS
   2897						.DSABLE LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 32
LPMKT	(LP TASK MARK-TIME REQUEST)

   2899						.SBTTL	LPMKT	(LP TASK MARK-TIME REQUEST)
   2900					;
   2901					;+
   2902					;	LPMKT IS DISPATCHED TO WHEN THE EF.LPC EVENT FLAG IS SET.
   2903					; THIS OCCURS EVERY 10. SECONDS.  EACH LP IS CHECKED TO SEE IF LP.HNG
   2904					; BIT HAS BEEN CLEARED BY ..DOLP (I/O COMPLETION) IF IT IS NOT
   2905					; IDLE. IF LP.HNG IS SET, NO I/O HAS OCCURED IN 10 SECONDS, SO
   2906					; 'GO' IS SET IN LPCSRA TO CONTINUE THE LP. LPHUNG IS INCREMENTED.
   2907					; IN ANY CASE, IF THE LP IS NOT IDLE, LP.HNG IS SET SO IT CAN BE
   2908					; CHECKED IN ANOTHER 10 SECONDS.
   2909					;
   2910					;-
   2911					;
   2912						.ENABLE	LSB
   2913	007012				LPMKT:
   2914	007012	032737 	000002 	000000G		BIT	#EF.LPC,LPCEVF	;IS MARK-TIME EVENT FLAG SET?
   2915	007020	001503 				BEQ	99$		;NO-- CHECK NEXT FLAG
   2916	007022	012705 	000002 			MOV	#L$$P20,R5	;SET UP # LP'S TO CHECK
   2917	007026	012702 	000000G			MOV	#LPTBL,R2	;ADDRESS DATA BLOCK FOR UNIT 0
   2918	007032				10$:
   2919	007032	016203 	000000G			MOV	LPCSA(R2),R3	;GET EXTERNAL PAGE ADDR
   2920	007036	001407 				BEQ	12$		;NON-EX LP-- SKIP THIS
   2921	007040	000241 				CLC			;CLEAR CARRY, IN CASE OF TRAP
   2922	007042	032713 	000100 			BIT	#INTENB,(R3)	;IS INTERRUPT-ENABLE STILL SET?
   2923	007046				LPDINT:
   2924	007046	103403 				BCS	12$		;TIME-OUT-- JUST SEND STATUS
   2925	007050	001002 				BNE	12$		;YES-- DON'T SET IT
   2926	007052	052713 	000100 			BIS	#INTENB,(R3)	;MAKE SURE WE STILL HAVE INTERRUPT ENABLE
   2927	007056				12$:
   2928	007056	032712 	004000 			BIT	#LP.WAT,(R2)	;WAITING?
   2929	007062	001047 				BNE	30$		;YES-- DON7T TRY TO CONTINUE
   2930	007064	005762 	000000G			TST	LPTHD(R2)	;ANY ACTIVE REQUESTS?
   2931	007070	001453 				BEQ	90$		;NONE-- LP IS IDLE
   2932	007072	032712 	100000 			BIT	#LP.HNG,(R2)	;NO I/O IN 10 SEC?
   2933	007076	001446 				BEQ	80$		;NO-- I/O CLEARED THIS BIT-- OK
   2934	007100	005762 	000000G			TST	LPITH(R2)	;IS I/O SUPPOSED TO BE IN PROGRSS?
   2935	007104	001436 				BEQ	30$		;NO-- SEE IF WE JUST CAME ON-LINE
   2936	007106	005703 				TST	R3		;DEVICE EXIST?
   2937	007110	001434 				BEQ	30$		;NON-EX LP-- FLUSH OUTPUT
   2938	007112	005237 	000000G			INC	LPHUNG		;COUNT # TIMES WE HAD TO START LP G9OING
   2939	007116	005362 	000000G			DEC	LPRTY(R2)	;ONE LESS TIME TO TRY
   2940	007122	002427 				BLT	30$		;NONE LEFT-- GIVE UP
   2941	007124					.INH4			;;;LOCK OUT LP INTERRUPTS
	007124	013746 	177776 			MOV	@#PS,-(SP)
	007130	112737 	000200 	177776 		MOVB	#PR4,@#PS
   2942	007136	105062 	000000G			CLRB	LPCSM+0(R2)	;;;CLEAR LOW BYTE SO NO CARRY
   2943	007142	066362 	000016 	000000G		ADD	LPCKSM-1(R3),LPCSM(R2) ;;;ACCUMULATE CHECKSUM (CLEARED BY GO)
   2944	007150	005763 	000006 			TST	LPBCTR(R3)	;;;DONE (BYTE COUNT=0)?
   2945	007154	001403 				BEQ	20$		;;;YES-- DO NEXT BUFFER
   2946	007156	052713 	000103 			BIS	#INTENB+PARENB+GO,(R3) ;;;NO-- JUST SET INT ENB AND GO
   2947	007162	000404 				BR	29$		;;;DO ANOTHER LP
   2948					;
   2949	007164				20$:
   2950	007164	016200 	000000G			MOV	LPITH(R2),R0	;;;GET CURRENT BUFFER ADDRESS
   2951	007170					CALL	..DOL1		;;;DONE-- DO NEXT BUFFER
	007170	004737 	011650'			JSR	PC,..DOL1
   2952	007174				29$:
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 32-1
LPMKT	(LP TASK MARK-TIME REQUEST)

   2953	007174					.ENB4			;ALLOW LP INTERRUPTS
	007174	012637 	177776 			MOV	(SP)+,@#PS
   2954	007200	000405 				BR	80$		;DONE WITH LP
   2955					;
   2956	007202				30$:
   2957	007202	052712 	040000 			BIS	#LP.SST,(R2)	;TIME TO SEND STATUS!!
   2958	007206	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;YES-- START IT UP AGAIN
   2959	007214				80$:
   2960	007214	052712 	100000 			BIS	#LP.HNG,(R2)	;SAY LP NO I/O
   2961									  ; THIS WILL BE CLEARED WHENEVER
   2962									  ; ANY I/O IS DONE TO LP
   2963	007220				90$:
   2964	007220	062702 	000000G			ADD	#LPSIZE,R2	;BUMP TO NEXT LP IN LPTBL
   2965	007224	005305 				DEC	R5		;TRY ALL
   2966	007226	003301 				BGT	10$		; LP'S
   2967	007230				99$:
   2968	007230	000137 	005604'			JMP	LPLOOP		;GO BACK TO WAITING
   2969						.DSABLE	LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 33
SSTSLP	(SEND LP-20 STATUS TO -10)

   2971						.SBTTL	SSTSLP	(SEND LP-20 STATUS TO -10)
   2972					;
   2973					;+
   2974					;
   2975					;	SSTSLP IS CALLED TO SEND THE LP-20 STATUS TO THE -10.
   2976					; IT IS INVOKED BY BOTH A REQUEST FOR STATUS FROM THE -10
   2977					; AND ANY LP-20 ERROR INDICATION, AS WELL AS PAGE COUNT ZERO
   2978					; (IF ENABLED) AND UNDEFINED CHARACTERS IN THE RAM.
   2979					;
   2980					;	TWO DEVICE-STSTUS WORDS ARE GENERATED,
   2981					; WITH THE STANDARD BITS (DV.XXX) IN THE FIRST WORD, AND THE
   2982					; FOLLOWING DEVICE-DEPENDENT BITS IN THE SECOND WORD:
   2983					;
   2984					;	DD.PGZ	PAGE COUNTER REACHED ZERO
   2985					;	DD.CHI	UNDEFINED CHARACTER IN RAM
   2986					;	DD.VFE	VFU ERROR (IMPLIES PAPER RE-ALIGNMENT REQUIRED)
   2987					;	DD.LER	ERROR FINDING/READING VFU AND RAM FILE
   2988					;	DD.OVF	OPTICAL VERTICAL FORMAT UNIT
   2989					;	DD.RME	RAM PARITY ERROR-- RELOAD REQUIRED
   2990					;
   2991					; THE STATUS BLOCK SENT TO THE -10 IS IN THE FOLLOWING FORMAT:
   2992					;
   2993					; WORD	0	STATUS WORD 0 (DV.XXX)
   2994					;	1	STATUS WORD 1 (DD.XXX)
   2995					;	2	(HIGH BYTE) # BYTES OF DEVICE DEPENDENT INFO (ALWAYS 2.)
   2996					;		(LOW BYTE) # BYTES OF DEVICE REGISTERS (ALWAYS 16.)
   2997					;	3	(LOW BYTE) ACCUMULATED CHECKSUM (HIGH BYTE) RETRY COUNT
   2998					; LP-20 DEVICE REGISTERS
   2999					;	4	LPCSRA
   3000					;	5	LPCSRB
   3001					;	6	LPBSAD
   3002					;	7	LPBCTR
   3003					;	10	LPPCTR
   3004					;	11	LPRAMD
   3005					;	12	LPCBUF/LPCCTR
   3006					;	13	LPTDAT/LPCKSM
   3007					;
   3008					; CALLED AT TASK LEVEL
   3009					;
   3010					; CALLING SEQUENCE:
   3011					;	R2 --	POINTER TO LPTBL ENTRY FOR THIS LP
   3012					;	R3 --	EXTERNAL PAGE ADDRESS FOR THIS LP
   3013					;
   3014					; EXIT CONDITIONS:
   3015					;
   3016					;	NO REGISTERS MODIFIED
   3017					;
   3018					;-
   3019					;
   3020						.ENABLE	LSB
   3021	007234				SSTSLP:
   3022	007234					SAVE	<R0,R1,R3,R4>	;SAVE USED CARS
	007234	010046 				MOV	R0,-(SP)
	007236	010146 				MOV	R1,-(SP)
	007240	010346 				MOV	R3,-(SP)
	007242	010446 				MOV	R4,-(SP)
   3023	007244	042712 	040000 			BIC	#LP.SST,(R2)	;CLEAR 'SEND STATUS' FLAG
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 33-1
SSTSLP	(SEND LP-20 STATUS TO -10)

   3024	007250	032777 	000020 	000000G	4$:	BIT	#EF.LPS,@LPEVFG	;IS OUR BUFFER AVAILABLE?
   3025	007256	001007 				BNE	5$		;YES-- DON'T WAIT
   3026	007260					WSIG$S			;NO-- WAIT FOR IT
	007260	012746 				MOV	(PC)+,-(SP)
	007262	   061 	   001 			.BYTE	49.,1
	007264	104375 				EMT	375
   3027	007266	032737 	000000G	000002G		BIT	#EF.PR1,.COMEF+2 ;IS PRIMARY PROTOCOL RUNNING ?
   3028	007274	001365 				BNE	4$		;YES-- STILL BUSY...
   3029	007276				5$:
   3030	007276	012700 	000004G			MOV	#LPSTBK+4,R0	;GET ADDRES OF BYTE COUNT WORD
   3031	007302	005010 				CLR	(R0)		;CLEAR IT (ASSUME NON-EX DEV)
   3032	007304	005040 				CLR	-(R0)		; AND SECOND WORD OF STATUS
   3033	007306	005040 				CLR	-(R0)		;AND FIRST WORD, WITH R0 POINTING TO IT
   3034	007310	005001 				CLR	R1		;CLEAR ERROR MESSAGE POINTER, TOO
   3035	007312	005703 				TST	R3		;GOT A EPA?
   3036	007314	001005 				BNE	10$		;GOT IT-- CHECK OUT LP STATUS
   3037	007316	052710 	000007 			BIS	#DV.NXD!DV.OIR!DV.OFL,(R0) ;NON-EX LP-- SAY SO
   3038	007322	012701 	007767'			MOV	#ERMNXD,R1	;PRINT ERROR ON CONSOLE, TOO
   3039	007326	000537 				BR	50$		;GO SEND THE ERROR
   3040					;
   3041	007330				10$:
   3042	007330	032712 	000200 			BIT	#LP.EOF,(R2)	;THIS AN EOF ENCOUNTERED?
   3043	007334	001402 				BEQ	11$		;NO-- GO ON
   3044	007336	052710 	000040 			BIS	#DV.EOF,(R0)	;YES-- SAY SO
   3045	007342				11$:
   3046	007342	032713 	004000 			BIT	#ONLINE,(R3)	;LP OFF-LINE?
   3047	007346	001004 				BNE	12$		;NO-- GO ON
   3048	007350	052710 	000006 			BIS	#DV.OFL!DV.OIR,(R0) ;YES-- SAY OFF-LINE
   3049	007354	012701 	010007'			MOV	#ERMOFL,R1	; AND TO CONSOLE
   3050	007360				12$:
   3051	007360	032713 	010000 			BIT	#VFURDY,(R3)	;VFU NOT READY?
   3052	007364	001007 				BNE	13$		;NO-- OK
   3053	007366	052760 	000004 	000002 		BIS	#DD.VFE,2(R0)	;YES-- SET SO IN DD WORD
   3054	007374	012701 	010022'			MOV	#ERMVFE,R1	;TELL CONSOLE
   3055	007400	052712 	002000 			BIS	#LP.CLR,(R2)	;NOTE RAM NEEDS TO BE RESET
   3056	007404				13$:
   3057	007404	032763 	000076 	000002 		BIT	#LPTPAR+MEMPAR+RAMPAR+SYNTIM+DEMTIM,LPCSRB(R3) ;FATAL ERROR?
   3058	007412	001404 				BEQ	14$		;NO-- ALL OK
   3059	007414	052710 	000100 			BIS	#DV.LOG,(R0)	;YES-- SAY BAD ERROR, AND ERROR-LOG IT
   3060	007420	012701 	010041'			MOV	#ERMHER,R1	;SAY SPLAT TO CONSOLE
   3061	007424				14$:
   3062	007424	016204 	000000G			MOV	LPTHD(R2),R4	;IS I/O LEFT TO DO?
   3063	007430	001002 				BNE	141$		;YES-- SAY SO
   3064	007432	005001 				CLR	R1		;NO-- DON'T SEND OFF-LINE/VFE
   3065	007434	000436 				BR	15$		;GO ON
   3066					;
   3067	007436				141$:
   3068	007436	052710 	000020 			BIS	#DV.IOP,(R0)	;SAY I/O IN PROGRESS
   3069	007442	005764 	000000G			TST	T.HBCT(R4)	;IS THIS A QUEUE I/O REQUEST?
   3070	007446	001002 				BNE	142$		;NO-- GO ON
   3071	007450	052710 	000400 			BIS	#DV.F11,(R0)	;YES-- SAY FROM -11
   3072	007454				142$:
   3073	007454	005762 	000000G			TST	LPRTY(R2)	;IS RETRY COUNT DOWN YET?
   3074	007460	002024 				BGE	15$		;NO-- GO ON
   3075	007462	052710 	000300 			BIS	#DV.URE!DV.LOG,(R0) ;SAY RETRY COUNT EXHAUSTED
   3076	007466	032712 	100000 			BIT	#LP.HNG,(R2)	;WAS DEVICE HUNG, TOO?
   3077	007472	001404 				BEQ	143$		;NO-- GO ON
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 33-2
SSTSLP	(SEND LP-20 STATUS TO -10)

   3078	007474	052710 	001004 			BIS	#DV.HNG!DV.OIR,(R0) ;YES-- SAY THAT TOO
   3079	007500	012701 	010056'			MOV	#ERMHNG,R1	;GET HUNG MESSAGE, TOO
   3080	007504				143$:
   3081	007504	032763 	000010 	000002 		BIT	#RAMPAR,LPCSRB(R3) ;RAM PARITY ERROR?
   3082	007512	001405 				BEQ	144$		;NO-- GO ON
   3083	007514	052760 	000040 	000002 		BIS	#DD.RME,2(R0)	;YES-- NOTE FATAL ERROR
   3084	007522	052712 	002000 			BIS	#LP.CLR,(R2)	;NOTE RAM NEEDS TO BE RESET
   3085	007526				144$:
   3086	007526					CALL	..SPLP		;RETRY COUNT EXHAUSTED-- GIVE UP OUTPUT
	007526	004737 	011270'			JSR	PC,..SPLP
   3087	007532				15$:
   3088	007532	032713 	040000 			BIT	#PAGZRO,(R3)	;PAGE-COUNT ZERO?
   3089	007536	001412 				BEQ	16$		;NO-- OK
   3090	007540	032712 	020000 			BIT	#LP.PZI,(R2)	;YES-- BUT ENABLED?
   3091	007544	001407 				BEQ	16$		;NO-- DON'T TELL HIM
   3092	007546	052710 	000010 			BIS	#DV.SCN,(R0)	;TELL -10 WE WANT HIM TO ACK
   3093	007552	052760 	000001 	000002 		BIS	#DD.PGZ,2(R0)	; FOR PAGE-ZERO
   3094	007560	052712 	004000 			BIS	#LP.WAT,(R2)	;REMEMBER TO WAIT
   3095	007564				16$:
   3096	007564	032713 	020000 			BIT	#CHRINT,(R3)	;UNDEFINED (INTERRUPT) CHARACTER?
   3097	007570	001407 				BEQ	17$		;NO-- GO ON
   3098	007572	052710 	000010 			BIS	#DV.SCN,(R0)	;NOTE TO WAIT
   3099	007576	052760 	000002 	000002 		BIS	#DD.CHI,2(R0)	; FOR UNDEF CHAR
   3100	007604	052712 	004000 			BIS	#LP.WAT,(R2)	; AND FOR US TO WAIT
   3101	007610				17$:
   3102	007610	032763 	004000 	000002 		BIT	#OPTVFU,LPCSRB(R3) ;THIS LP HAVE OPTICAL VFU?
   3103	007616	001403 				BEQ	18$		;NO-- MUST HAVE DAVFU (HOORAY)
   3104	007620	052760 	000020 	000002 		BIS	#DD.OVF,2(R0)	;YES-- SAY SO
   3105	007626				18$:
   3106					;
   3107					; ERROR CODE NOW IN LPSTBK+0 AND LPSTBK+2
   3108					;
   3109	007626				50$:
   3110	007626	032712 	000400 			BIT	#LP.F10,(R2)	;THIS A FROM-10 REQUEST?
   3111	007632	001115 				BNE	70$		;YES-- DON'T PRINT ON CONSOLE
   3112					;
   3113					; NON-10 REQUEST-- SEND CONSOLE A MESSAGE ABOUT OUR STATUS
   3114					;
   3115	007634	042712 	004000 			BIC	#LP.WAT,(R2)	;DON'T WAIT FOR NON-10 REQUEST
   3116	007640	005701 				TST	R1		;TELL OPR?
   3117	007642	001511 				BEQ	70$		;NO-- JUST SEND TO -10 ANYWAY
   3118	007644	012700 	007747'			MOV	#LPEMSX,R0	;GET ADDRESS OF END OF MESSAGE SO FAR
   3119	007650				51$:
   3120	007650	112120 				MOVB	(R1)+,(R0)+	;COPY A BYTE OF THE MESSAGE
   3121	007652	001376 				BNE	51$		; UNTIL ASCIZZZZZZZZ
   3122	007654	162700 	007734'			SUB	#LPEMSG,R0	;GET LENGTH OF MESSAGE
   3123	007660	010037 	007730'			MOV	R0,LPQDPB+Q.IOPL+2 ;SET LENGTH IN QIOW$ DPB
   3124	007664	011201 				MOV	(R2),R1		;GET UNIT
   3125	007666	042701 	177774 			BIC	#^C<LP.UNT>,R1	; NUMBER OF THIS LP
   3126	007672	062701 	000060 			ADD	#'0,R1		;MAKE IT ASCII
   3127	007676	110137 	007744'			MOVB	R1,LPERUN	;SAVE IN MESSAGE STRING
   3128	007702					DIR$	#LPQDPB		;DO QUEUE I/O TO CTY
	007702	012746 	007712'			MOV	#LPQDPB,-(SP)
	007706	104375 				EMT	375
   3129	007710	000466 				BR	70$		;SEE IF WE CAN CONTINUE
   3130					;
   3131	007712				LPQDPB:
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 33-3
SSTSLP	(SEND LP-20 STATUS TO -10)

   3132	007712					QIOW$	IO.WLB,1,E.FLPQ,1,0,0,<LPEMSG,0,0>
	007712	   003 	   011 			.BYTE	3,$$$ARG
	007714	000400 				.WORD	IO.WLB
	007716	000001 				.WORD	1
	007720	   003 	   001 			.BYTE	E.FLPQ,1
	007722	000000 				.WORD	0
	007724	000000 				.WORD	0
	007726	007734'				.WORD	LPEMSG
	007730	000000 				.WORD	0
	007732	000000 				.WORD	0
   3133	007734				LPEMSG:
   3134	007734	   015 	   012 	   052 		.ASCII	<15><12>/*** LP/
	007737	   052 	   052 	   040
	007742	   114 	   120
   3135	007744				LPERUN:
   3136	007744	   060 	   072 	   040 		.ASCII	/0: /
   3137	007747				LPEMSX:
   3138	007747					.BLKB	16.		;REST OF MESSAGE: MAX OF 16 BYTES
   3139	007767				ERMNXD:
   3140	007767	   116 	   117 	   116 		.ASCIZ	/NON-EX DEVICE/<15><12>
	007772	   055 	   105 	   130
	007775	   040 	   104 	   105
	010000	   126 	   111 	   103
	010003	   105 	   015 	   012
	010006	   000
   3141	010007				ERMOFL:
   3142	010007	   117 	   106 	   106 		.ASCIZ	/OFF-LINE/<15><12>
	010012	   055 	   114 	   111
	010015	   116 	   105 	   015
	010020	   012 	   000
   3143	010022				ERMVFE:
   3144	010022	   106 	   117 	   122 		.ASCIZ	/FORMAT ERROR/<15><12>
	010025	   115 	   101 	   124
	010030	   040 	   105 	   122
	010033	   122 	   117 	   122
	010036	   015 	   012 	   000
   3145	010041				ERMHER:
   3146	010041	   104 	   101 	   124 		.ASCIZ	/DATA ERROR/<15><12>
	010044	   101 	   040 	   105
	010047	   122 	   122 	   117
	010052	   122 	   015 	   012
	010055	   000
   3147	010056				ERMHNG:
   3148	010056	   110 	   125 	   116 		.ASCIZ	/HUNG/<15><12>
	010061	   107 	   015 	   012
	010064	   000
   3149						.EVEN
   3150					;
   3151					; HERE WE SEND THE STATUS BLOCK TO THE -10, R1= STATE CODE
   3152					;
   3153					;
   3154					; ASSEMBLE DEVICE INFO AND DEVICE REGISTERS
   3155					;
   3156	010066				70$:
   3157	010066	005703 				TST	R3		;NON-EX DEVICE?
   3158	010070	001417 				BEQ	72$		;YES-- DON'T STORE NON-EX DEVICE REGISTERS
   3159	010072	012700 	000004G			MOV	#LPSTBK+4,R0	;POINT TO STATUS RETURN BLOCK
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 33-4
SSTSLP	(SEND LP-20 STATUS TO -10)

   3160	010076	012720 	000000C			MOV	#<2.*BIT8>+<LPEXPZ*BIT0>,(R0)+ ;2 BYTES INFO, + DEV REG'S
   3161	010102	116220 	000001G			MOVB	LPCSM+1(R2),(R0)+ ;CHECKSUM
   3162	010106	012701 	000012 			MOV	#LPRTRY,R1	;GET INITIAL RETRY COUNT
   3163	010112	166201 	000000G			SUB	LPRTY(R2),R1	; - CURRENT COUNT= # RETRIES
   3164	010116	110120 				MOVB	R1,(R0)+	;HIGH BYTE-- # RETRIES
   3165	010120				71$:
   3166	010120	012320 				MOV	(R3)+,(R0)+	;(2) ... LP DEVICE REGISTERS
   3167	010122	022700 	000000C			CMP	#LPSTBK+LPSTLN,R0 ;DONE YET?
   3168	010126	101374 				BHI	71$		;NO-- KEEP ON LOOPING
   3169					;
   3170					; SET UP REGISTERS FOR ..STIN:
   3171					;	R0 --	ADDRESS OF BLOCK (FIRST WORD IS UNIT/BYTE COUNT)
   3172					;	R1 --	FUNCTION CODE + BIT15 (FOR INDIRECT FUNCTION)
   3173					;	R2 --	EVENT FLAG NUMBER TO BE SET WHEN BLOCK SENT
   3174					;	R3 --	DEVICE CODE (D.CLPT FOR THE LP-20)
   3175					;
   3176	010130				72$:
   3177	010130	012700 	000000G			MOV	#LPSTBK,R0	;SET UP ADDR FOR ..STIN
   3178	010134	011201 				MOV	(R2),R1		;GET UNIT NUMBER
   3179	010136	042701 	177774 			BIC	#^C<LP.UNT>,R1	; FROM LPSTS
   3180	010142	110140 				MOVB	R1,-(R0)	;HIGH BYTE HEADER: UNIT #
   3181	010144	112740 	000002G			MOVB	#LPSTLN+2,-(R0)	;LOW BYTE HEADER: SIZE OF BLOCK
   3182	010150	012701 	100000G			MOV	#BIT15+BC.HDS,R1 ;INDIRECT FUNCTION HERE IS DEVICE STATUS
   3183	010154					PUSH	R2		;SAVE LPTBL POINTER
	010154	010246 				MOV	R2,-(SP)
   3184	010156	012702 	000005 			MOV	#E.FLPS,R2	;EVENT FLAG NUMBER
   3185	010162	012703 	000000G			MOV	#D.CLPT,R3	;DEVICE LP
   3186	010166	042777 	000020 	000000G		BIC	#EF.LPS,@LPEVFG	;CLEAR BUFFER AVAILABLE FLAG
   3187	010174					CALL	..STIN		;SAVE FOR NOW
	010174	004737 	000000G			JSR	PC,..STIN
   3188	010200					POP	R2		;RESTORE LPTBL POINTER
	010200	012602 				MOV	(SP)+,R2
   3189	010202	103010 				BCC	80$		;FINISH UP
   3190					;
   3191					; ..STIN GAVE ERROR-- MUST SEND STATUS AGAIN LATER
   3192					;
   3193	010204				75$:
   3194	010204	052777 	000020 	000000G		BIS	#EF.LPS,@LPEVFG	;NOTE BUFFER STILL REALLY AVAILABLE
   3195	010212	032712 	000400 			BIT	#LP.F10,(R2)	;THIS A FROM-10 REQUEST
   3196	010216	001402 				BEQ	80$		;NO-- IGNORE THE ERROR
   3197	010220	052712 	040000 			BIS	#LP.SST,(R2)	;YES-- SEND STATUS AGAIN LATER
   3198					;
   3199					; FINISH UP
   3200					;
   3201	010224				80$:
   3202	010224					RESTORE			; AND REGISTERS
	010224	012604 				MOV	(SP)+,R4
	010226	012603 				MOV	(SP)+,R3
	010230	012601 				MOV	(SP)+,R1
	010232	012600 				MOV	(SP)+,R0
   3203	010234					RETURN			;RETURN FROM SSTSLP
	010234	000207 				RTS	PC
   3204						.DSABLE	LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 34
TESTLP	(START LP-20 GOING ON THREADED LIST)

   3206						.SBTTL	TESTLP	(START LP-20 GOING ON THREADED LIST)
   3207					;
   3208					;+
   3209					;	TESTLP IS CALLED TO START THE LP-20 ON A THREADED LIST.
   3210					; THE THREAD MUST BE SET UP, WITH THE POINTER BOTH IN R0 AND LPTHD.
   3211					;
   3212					; CALLED FROM TASK LEVEL
   3213					;
   3214					; CALLING SEQUENCE:
   3215					;	R0 --	THREAD POINTER (ALSO IN LPTHD)
   3216					;	R2 --	LPTBL ENTRY FOR THIS LP
   3217					;
   3218					; EXIT CONDITIONS:
   3219					;	R0 --	CURRENT OUTPUT THREAD POINTER
   3220					;	R3 --	EXTERNAL PAGE ADDRESS OF THIS LP
   3221					;
   3222					;-
   3223					;
   3224	010236				TESTLP:
   3225	010236	032713 	004000 			BIT	#ONLINE,(R3)	;OFF-LINE?
   3226	010242	001470 				BEQ	90$		;YES-- DO NOTHING
   3227					;
   3228	010244	032777 	000040 	000000G		BIT	#EF.LPW,@LPEVFG	;SHOULD WE WAIT FOR LP-20?
   3229	010252	001011 				BNE	10$		;NO-- GO ON
   3230					;
   3231					; MUST WAIT FOR 1-SEC FOR LP-20 TO SETTLE AFTER DOING AN ABORT TRANSFER
   3232					;
   3233	010254					DIR$	#MKSCDP		;SET MARK TIME REQUEST
	010254	012746 	005442'			MOV	#MKSCDP,-(SP)
	010260	104375 				EMT	375
   3234	010262	103405 				BCS	10$		;OH, WELL ...
   3235	010264					WTSE$S	#E.FLPW		;WAIT FOR THE FLAG
	010264	012746 	000006 			MOV	#E.FLPW,-(SP)
	010270	012746 				MOV	(PC)+,-(SP)
	010272	   051 	   002 			.BYTE	41.,2
	010274	104375 				EMT	375
   3236	010276				10$:
   3237	010276	032712 	002000 			BIT	#LP.CLR,(R2)	;TIME TO CLEAR THE RAM?
   3238	010302	001414 				BEQ	30$		;NO-- JUST GO ON
   3239	010304	042712 	002000 			BIC	#LP.CLR,(R2)	;RESET THE FLAG
   3240	010310	032712 	001000 			BIT	#LP.LIP,(R2)	;BUT RAM LOAD NOW IN PROGRESS??
   3241	010314	001007 				BNE	30$		;YES-- DON'T GO RESET IT
   3242					;
   3243					; RAM MUST BE CLEARED, SINCE WE GOT A RAMPAR/VFU ERROR
   3244					;
   3245	010316	105063 	000014 			CLRB	LPCBUF(R3)	;CLEAR RAM ADDRESS REGISTER
   3246	010322				20$:
   3247	010322	005063 	000012 			CLR	LPRAMD(R3)	;CLEAR A RAM WORD
   3248	010326	105263 	000014 			INCB	LPCBUF(R3)	;BUMP TO NEXT RAM ADDRESS
   3249	010332	001373 				BNE	20$		;NOT DONE-- GO ON TO NEXT WORD
   3250					;
   3251					; TIME TO START LP GOING
   3252					;
   3253	010334				30$:
   3254	010334	032712 	000200 			BIT	#LP.EOF,(R2)	;WE AT EOF TIME?
   3255	010340	001404 				BEQ	32$		;NO-- GO ON
   3256	010342	042712 	000200 			BIC	#LP.EOF,(R2)	;YES-- NO LONGER EOF
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 34-1
TESTLP	(START LP-20 GOING ON THREADED LIST)

   3257	010346	005062 	000000G			CLR	LPCSM(R2)	;RESET CHECKSUM AT EOF
   3258	010352				32$:
   3259	010352	032713 	040000 			BIT	#PAGZRO,(R3)	;PAGZRO SET?
   3260	010356	001403 				BEQ	34$		;NO-- GO ON
   3261	010360	016363 	000010 	000010 		MOV	LPPCTR(R3),LPPCTR(R3) ;YES-- RESET PAGZRO
   3262	010366				34$:
   3263	010366	005713 				TST	(R3)		;ERROR SET?
   3264	010370	100002 				BPL	40$		;NO-- GO ON
   3265	010372	052713 	001102 			BIS	#RSTERR+INTENB+PARENB,(R3) ;YES-- RESET IT
   3266	010376				40$:
   3267	010376					PUSH	R0		;SAVE THREAD POINTER
	010376	010046 				MOV	R0,-(SP)
   3268	010400					.INH4			;;; PREVENT LP INTERRUPTS
	010400	013746 	177776 			MOV	@#PS,-(SP)
	010404	112737 	000200 	177776 		MOVB	#PR4,@#PS
   3269	010412					CALL	..DOLP		;;;START LP GOING ON THE LIST
	010412	004737 	011664'			JSR	PC,..DOLP
   3270	010416					.ENB4			;;;DONE
	010416	012637 	177776 			MOV	(SP)+,@#PS
   3271	010422					POP	R0		;RESTORE LPTHD POINTER
	010422	012600 				MOV	(SP)+,R0
   3272					;
   3273					; ALL DONE
   3274					;
   3275	010424				90$:
   3276	010424					RETURN			;RETURN FROM TESTLP
	010424	000207 				RTS	PC
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 35
INITLP	(INITALIZE ALL LP'S)

   3278						.SBTTL	INITLP	(INITALIZE ALL LP'S)
   3279					;
   3280					;+
   3281					;	INITLP IS CALLED DURING INITIALIZATION AND ALSO ON POWER
   3282					; RECOVERY.
   3283					;
   3284					;	EACH LP IS RESET, AND LP.LDF IS SET TO LOAD THE CURRENT RAM
   3285					; AND VF.  LPCSA IS CLEARED FOR NON-EX LP'S
   3286					;
   3287					;-
   3288					;
   3289						.ENABLE	LSB
   3290	010426				INITLP::
   3291	010426					SAVE	<R2,R3,R5>	;SAVE OUR PRECIOUS REGISTERS
	010426	010246 				MOV	R2,-(SP)
	010430	010346 				MOV	R3,-(SP)
	010432	010546 				MOV	R5,-(SP)
   3292	010434	012705 	000002 			MOV	#L$$P20,R5	;GET # LP'S WE HAVE
   3293	010440	012702 	000000G			MOV	#LPTBL,R2	;ADDRESS LPTBL ENTRY FOR UNIT 0
   3294	010444				10$:
   3295	010444	011203 				MOV	(R2),R3		;GET THE
   3296	010446	042703 	177774 			BIC	#^C<LP.UNT>,R3	; UNIT #
   3297	010452	006303 				ASL	R3		; *2
   3298	010454	006303 				ASL	R3		; *4
   3299	010456	006303 				ASL	R3		; *8
   3300	010460	006303 				ASL	R3		; *16 BYTES PER UNIT
   3301	010462	062703 	000000G			ADD	#LPEXPA,R3	;GET EXTERNAL PAGE ADDRESS FOR THIS LP
   3302	010466	010362 	000000G			MOV	R3,LPCSA(R2)	;SAVE THIS ADDRESS
   3303	010472	012713 	001102 			MOV	#RSTERR+INTENB+PARENB,(R3) ;CLEAR LP
   3304	010476				LPDCLR:
   3305	010476	005062 	000000G			CLR	LPITH(R2)	;CLEAR INT-LEVEL POINTER TO THREADED LIST
   3306	010502				90$:
   3307	010502	062702 	000000G			ADD	#LPSIZE,R2	;BUMP TO NEXT LP'S ENTRY
   3308	010506	077522 				SOB	R5,10$		;LOOP FOR ALL LP'S
   3309
   3310	010510	052777 	000002 	000000G		BIS	#EF.LPC,@LPEVFG	;FORCE A HUNG CHECK NOW
   3311	010516					RESTORE			; THE REGISTERS TO THEIR RIGHTFUL (PITIFUL) CONDITION
	010516	012605 				MOV	(SP)+,R5
	010520	012603 				MOV	(SP)+,R3
	010522	012602 				MOV	(SP)+,R2
   3312	010524					RETURN			;RETURN FROM INITLP
	010524	000207 				RTS	PC
   3313					;
   3314						.DSABLE	LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 36
LP-20 INTERRUPT SERVICE MODULE

   3316						.SBTTL	LP-20 INTERRUPT SERVICE MODULE
   3317					;
   3318					;                             COPYRIGHT (C) 1975, 1978 BY
   3319					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   3320					;
   3321					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   3322					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   3323					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   3324					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   3325					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   3326					;
   3327					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   3328					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   3329					;       CORPORATION.
   3330					;
   3331					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   3332					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   3333					;
   3334					;		MODULE: LP-20 INTERRUPT SERVICE
   3335					;
   3336					;		VERSION: 01-00
   3337					;
   3338					;		AUTHOR: TOM PORCHER
   3339					;
   3340					;		DATE: 6-JUN-75
   3341					;
   3342					;
   3343					;	THIS MODULE CONTAINS:
   3344					;
   3345					;	1) $LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
   3346					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 37
$LPINT	(LP-20 INTERRUPT SERVICE ROUTINE)

   3348						.SBTTL	$LPINT	(LP-20 INTERRUPT SERVICE ROUTINE)
   3349					;
   3350					;+
   3351					;
   3352					;	$LPINT IS CALLED FROM THE INTERRUPT VECTOR FOR
   3353					; ANY OF THE LP-20'S.  THE UNIT NUMBER IS SAVED IN THE LOW-ORDER
   3354					; BITS (THE CC'S) OF THE PS IN THE TRAP VECTOR.
   3355					;
   3356					;	WHEN A DONE INTERRUPT OCCURS, THE NEXT BUFFER IS STARTED,
   3357					; UNLESS THIS IS A MULTI-CHARACTER OPERATION (IE. 'ARROW' MODE), IN
   3358					; WHICH CASE THE CURRENT BUFFER IS CONTINUED.
   3359					;
   3360					;	IF CHRINT (UNDEFINED CHARACTER -- INT BIT SET IN RAM) OCCURS,
   3361					; THE RAM DATA IS EXAMINED. IF IT IS '^', THE CHARACTER + 100,
   3362					; PRECEDED BY '^', IS PRINTED, ELSE OUTPUT IS
   3363					; STOPPED AND THE STATUS SENT TO THE -10 (INTERRUPT).
   3364					;
   3365					;	IF PAGZRO (PAGE COUNT REACHED ZERO) OCCURS AND THE LP.PZI
   3366					; (PAGE ZERO INTERRUPT) FLAG IN LPSTS (SET BY RAM/VF LOAD FILE) IS
   3367					; SET, OUTPUT IS STOPPED AND THE STATUS IS SENT TO THE -10. OTHERWISE,
   3368					; OUTPUT IS MERELY RESUMED AND PAGZRO IGNORED.
   3369					;
   3370					;	IF THE LP COMES ON-LINE, WHILE WAITING FOR OFF-LINE,
   3371					; OUTPUT IS RESUMED, AND THE NEW STATUS IS SENT TO THE -10.
   3372					;
   3373					;-
   3374					;
   3375	010526				$LPINT::
   3376	010526	013737 	177776 	000000G		MOV	@#PS,LPUNIT	;;;SAVE UNIT #
   3377	010534					SAVE	<R0,R2,R3>	;;;SAVE REGISTERS
	010534	010046 				MOV	R0,-(SP)
	010536	010246 				MOV	R2,-(SP)
	010540	010346 				MOV	R3,-(SP)
   3378	010542	013702 	000000G			MOV	LPUNIT,R2	;;;GET UNIT # BACK
   3379	010546	006302 				ASL	R2		;;;MAKE IT WORDS
   3380	010550	042702 	177774 			BIC	#^C<LP.UNT>,R2	;;;CLEAR GARBAGE BITS
   3381	010554	016202 	000000G			MOV	LPUTBL(R2),R2	;;;GET ADDR OF DEVICE STATUS BLOCK FOR THIS LP
   3382	010560	016203 	000000G			MOV	LPCSA(R2),R3	;;;GET EXT PAGE ADDR FOR CURRENT LP
   3383	010564	016200 	000000G			MOV	LPITH(R2),R0	;;;GET CURRENT THREAD BLOCK ADDR
   3384	010570	001517 				BEQ	80$		;;;IDLE-- JUST SEND DEVICE STATUS
   3385					;
   3386					; LP NOT IDLE-- SEE IF ERROR, PAGZRO, CHRINT, OR DONE
   3387					;
   3388	010572	105062 	000000G			CLRB	LPCSM+0(R2)	;;;INSURE NO CARRY
   3389	010576	066362 	000016 	000000G		ADD	LPCKSM-1(R3),LPCSM(R2) ;;;ACCUMULATE CHECKSUM
   3390	010604	032713 	160000 			BIT	#ERR+PAGZRO+CHRINT,(R3) ;;;ERROR, PAGZRO, OR CHRINT?
   3391	010610	001014 				BNE	30$		;;;YES-- STOP I/O AND PROCESS
   3392	010612	005763 	000006 			TST	LPBCTR(R3)	;;;DONE (BYTE COUNT=0)?
   3393	010616	001003 				BNE	20$		;;;NO-- JUST KEEP IT GOING
   3394	010620					CALL	..DOL1		;;;YES-- START NEXT BUFFER
	010620	004737 	011650'			JSR	PC,..DOL1
   3395	010624	000510 				BR	90$		;;;EXIT FROM IRP
   3396					;
   3397	010626				20$:
   3398	010626	005362 	000000G			DEC	LPRTY(R2)	;;;DECREMENT RETRY COUNT
   3399	010632	002403 				BLT	30$		;;;RAN OUT-- CHECK FOR A BIT SET, OR ASSUME ERROR
   3400	010634	052713 	000103 			BIS	#INTENB+PARENB+GO,(R3) ;;;MAKE SURE LP IS STILL GO-ING
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 37-1
$LPINT	(LP-20 INTERRUPT SERVICE ROUTINE)

   3401	010640	000502 				BR	90$		;;;AND EXIT
   3402					;
   3403					; ERROR, PAGZRO, OR CHRINT-- SAVE BYTE COUNT AND ADDRESS
   3404					; STOP I/O AND WAIT FOR CONTINUE
   3405					;
   3406	010642				30$:
   3407	010642	032712 	010000 			BIT	#LP.MCH,(R2)	;;;MULTI-CHAR PRINT OPERATION?
   3408	010646	001044 				BNE	40$		;;;YES-- DON'T SAVE BYTE COUNT AND ADDRESS
   3409	010650	005463 	000006 			NEG	LPBCTR(R3)	;;;GET # BYTES LEFT TO TRANSMIT
   3410	010654	016360 	000006 	000000G		MOV	LPBCTR(R3),T.HCBC(R0) ;;; INTO THREAD BLOCK TO CONTINUE
   3411	010662	016360 	000004 	000000G		MOV	LPBSAD(R3),T.HCAD(R0) ;;;ALSO CURRENT ADDRESS
   3412	010670	032713 	020000 			BIT	#CHRINT,(R3)	;;;THIS CHRINT INTERRUPT?
   3413	010674	001431 				BEQ	40$		;;;NO-- SEE IF PAGZRO
   3414	010676					PUSH	R2		;;;SAVE THE ADDRESS OF LPTBL
	010676	010246 				MOV	R2,-(SP)
   3415	010700	062702 	000000G			ADD	#LPMCB,R2	;;;POINT TO THE MULTI-CHAR BUFFER
   3416	010704	010263 	000004 			MOV	R2,LPBSAD(R3)	;;;POINT THE LP20 TO THAT BUFFER
   3417	010710	116312 	000012 			MOVB	LPRAMD+0(R3),(R2) ;;;GET RAM DATA CHARACTER
   3418	010714	122722 	000136 			CMPB	#'^,(R2)+	;;;ARROW MODE?
   3419	010720	001015 				BNE	39$		;;;NO-- INTERRUPT -10
   3420	010722	116312 	000014 			MOVB	LPCBUF(R3),(R2)	;;;YES-- GET THE CAUSING CHARACTER
   3421	010726	152712 	000100 			BISB	#100,(R2)	;;;MAKE IT ALPHABETIC
   3422	010732					POP	R2		;;;RESTORE LPTBL
	010732	012602 				MOV	(SP)+,R2
   3423	010734	052712 	010000 			BIS	#LP.MCH,(R2)	;;;SAY WE ARE DOING MULTI-CHARACTER
   3424	010740	012763 	177776 	000006 		MOV	#-2,LPBCTR(R3)	;;;SET BYTE COUNT TO TWO CHARACTERS
   3425	010746	012713 	000103 			MOV	#PARENB+INTENB+GO,(R3) ;;;START IT GOING ON THESE TWO CHARS
   3426	010752	000435 				BR	90$		;;;WAIT FOR DONE
   3427					;
   3428	010754				39$:	POP	R2		;;;INTERRUPT-- RESTORE LPTBL POINTER
	010754	012602 				MOV	(SP)+,R2
   3429	010756	000422 				BR	70$		;;; AND TELL -10
   3430					;
   3431					; ERROR OR PAGZRO
   3432					;
   3433	010760				40$:
   3434	010760	032713 	040000 			BIT	#PAGZRO,(R3)	;;;PAGZRO?
   3435	010764	001411 				BEQ	60$		;;;NO-- MUST BE ERROR
   3436	010766	032712 	020000 			BIT	#LP.PZI,(R2)	;;;YES-- IS PAGE ZERO INTERRUPT ENABLED?
   3437	010772	001014 				BNE	70$		;;;YES-- INTERRUPT AND WAIT
   3438	010774	016363 	000010 	000010 		MOV	LPPCTR(R3),LPPCTR(R3) ;;;NO-- RESET PAGZRO
   3439	011002					CALL	..DOLP		;;;NO-- JUST CONTINUE
	011002	004737 	011664'			JSR	PC,..DOLP
   3440	011006	000417 				BR	90$		;;;DONE WITH PAGZRO
   3441					;
   3442					; ERROR-- DECREMENT RETRY COUNT IF ANYTHING BUT OFF-LINE
   3443					;
   3444	011010				60$:
   3445	011010	032763 	000177 	000002 		BIT	#VFUERR+LPTPAR+MEMPAR+RAMPAR+SYNTIM+DEMTIM+GOERR,LPCSRB(R3)
   3446	011016	001402 				BEQ	70$		;;;NO ERRORS-- JUST SEND STATUS
   3447	011020	005362 	000000G			DEC	LPRTY(R2)	;;;YES-- DECREMENT RETRY COUNT NOW
   3448					;
   3449					; STOP I/O AND SEND STATUS TO -10
   3450					;
   3451	011024				70$:
   3452	011024	005062 	000000G			CLR	LPITH(R2)	;;;SAY I/O STOPPED
   3453					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 37-2
$LPINT	(LP-20 INTERRUPT SERVICE ROUTINE)

   3454					; SEND STATUS TO -10
   3455					;
   3456	011030				80$:
   3457	011030	052712 	040000 			BIS	#LP.SST,(R2)	;;;SAY SEND STATUS TO TASK
   3458	011034	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;;;SAY SOMETHING TO DO
   3459	011042					CALL	..DSEV		;;;SAY SIGNIFICANT EVENT
	011042	004737 	000000G			JSR	PC,..DSEV
   3460					;
   3461					; ALL DONE WITH INTERRUPT
   3462					;
   3463	011046				90$:
   3464	011046					RESTORE			;;; SAVED REGISTERS
	011046	012603 				MOV	(SP)+,R3
	011050	012602 				MOV	(SP)+,R2
	011052	012600 				MOV	(SP)+,R0
   3465	011054	000137 	000000G			JMP	..INTX		;;;RETURN FROM LP INTERRUPT
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 38
LP-20 COMMON SUBROUTINES MODULE

   3467						.SBTTL	LP-20 COMMON SUBROUTINES MODULE
   3468					;
   3469					;                             COPYRIGHT (C) 1975, 1978 BY
   3470					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   3471					;
   3472					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   3473					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   3474					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   3475					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   3476					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   3477					;
   3478					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   3479					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   3480					;       CORPORATION.
   3481					;
   3482					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   3483					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   3484					;
   3485					;		MODULE: LP-20 COMMON SUBROUTINES
   3486					;
   3487					;		VERSION: 01-00
   3488					;
   3489					;		AUTHOR: TOM PORCHER
   3490					;
   3491					;		DATE: 7-JUN-75
   3492					;
   3493					;
   3494					;	THIS MODULE CONTAINS:
   3495					;
   3496					;	1) ..STLP (START LP-20 OUTPUT)
   3497					;
   3498					;	2) ..SPLP (STOP LP-20 OUTPUT)
   3499					;
   3500					;	3) ..AKLP (ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
   3501					;
   3502					;	4) ..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
   3503					;
   3504					;	5) ..DOLP (INITIATE LP-20 TRANSFER)
   3505					;
   3506						.SBTTL	..STLP	(START LP-20 OUTPUT)
   3507					;
   3508					;+
   3509					;
   3510					;	..STLP IS CALLED ONLY FROM THE QUEUED PROTOCOL
   3511					; TASK TO PERFORM A FUNCTION ON THE SPECIFIED LP. THE
   3512					; FOLLOWING FUNCTIONS ARE RECOGNIZED HERE (FUNCTION CODE
   3513					; IN HIGH BYTE OF T.HCBC OF THREAD BLOCK):
   3514					;	BC.STR	STRING DATA
   3515					;	BC.RDS	RETURN DEVICE STATUS
   3516					;	BC.HDS	HERE IS DEVICE STATUS
   3517					;	BC.SDS	SPECIAL DEVICE OPERATION, FIRST WORD IS FUNCTION:
   3518					;		1 -- SET PAGE COUNTER
   3519					;	BC.LDR	LOAD TRANSLATION RAM
   3520					;	BC.LDV	LOAD VERTICAL FORMAT
   3521					;
   3522					; CALLED FROM TASK LEVEL
   3523					;
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 38-1
..STLP	(START LP-20 OUTPUT)

   3524					; CALLING SEQUENCE:
   3525					;	R0 --	ADDRESS OF THREAD BLOCK TO PROCESS
   3526					;	R2 --	ADDRESS OF LPTBL ENTRY FOR THIS LP
   3527					;
   3528					; EXIT CONDITIONS:
   3529					;
   3530					; NO REGISTERS MODIFIED
   3531					;
   3532					;-
   3533					;
   3534						.ENABLE	LSB
   3535	011060				..STLP::
   3536	011060					SAVE	<R1,R3,R4>
	011060	010146 				MOV	R1,-(SP)
	011062	010346 				MOV	R3,-(SP)
	011064	010446 				MOV	R4,-(SP)
   3537	011066	022702 	000000C			CMP	#LPTBL+<L$$P20*LPSIZE>,R2 ;THIS ONE OF US?
   3538	011072	101434 				BLOS	30$		;NO-- JUST SLIP AWAY
   3539	011074	052712 	000400 			BIS	#LP.F10,(R2)	;NOTE THAT THIS IS A FROM-10 REQUEST
   3540	011100	116004 	000001G			MOVB	T.HCBC+1(R0),R4	;GET FUNCTION CODE
   3541	011104	105060 	000001G			CLRB	T.HCBC+1(R0)	; AND CLEAR IT
   3542	011110	012703 	011130'			MOV	#BCFTAB,R3	;POINT TO FUNCTION DISPATCH TABLE
   3543	011114				10$:
   3544	011114	112301 				MOVB	(R3)+,R1	;GET A DISPATCH ADDRESS
   3545	011116	001413 				BEQ	BCFILF		;END-- ASSUME RETURN DEVICE STATUS
   3546	011120	122304 				CMPB	(R3)+,R4	;MATCH FUNCTION?
   3547	011122	001374 				BNE	10$		;NO-- LOOP TILL WE FIND FUNCTION
   3548	011124	000161 	011130'			JMP	BCFTAB(R1)	;PERFORM FUNCTION
   3549					;
   3550	011130				BCFTAB:
   3551	011130	   124 	   000G			.BYTE	BCFSTR-BCFTAB,BC.STR
   3552	011132	   016 	   000G			.BYTE	BCFRDS-BCFTAB,BC.RDS
   3553	011134	   062 	   000G			.BYTE	BCFHDS-BCFTAB,BC.HDS
   3554	011136	   042 	   000G			.BYTE	BCFSDO-BCFTAB,BC.SDS
   3555	011140	   102 	   000G			.BYTE	BCFLDR-BCFTAB,BC.LDR
   3556	011142	   110 	   000G			.BYTE	BCFLDV-BCFTAB,BC.LDV
   3557	011144	   000 				.BYTE	0
   3558						.EVEN
   3559					;
   3560					; ILLEGAL FUNCTION
   3561					;
   3562	011146				BCFILF:
   3563					;	BR	BCFRDS		;ILLEGAL FUNCTION-- JUST SEND STATUS FOR NOW
   3564					;
   3565					; RETURN DEVICE STATUS
   3566					;
   3567	011146				BCFRDS:
   3568	011146	052712 	040000 			BIS	#LP.SST,(R2)	;NOTE TO SEND STATUS NOW
   3569	011152	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;TELLL LP TASK TO DO SOMETHING
   3570	011160					CALL	..DSEV		;MAKE A SIGNIFICANT EVENT HAPPEN
	011160	004737 	000000G			JSR	PC,..DSEV
   3571					;
   3572					; THREAD BLOCK DONE-- DEALLOCATE
   3573					;
   3574	011164				30$:
   3575	011164					CALL	..DECN		;DEALLOCATE THREAD BLOCK
	011164	004737 	000000G			JSR	PC,..DECN
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 38-2
..STLP	(START LP-20 OUTPUT)

   3576	011170	000433 				BR	90$		;RESTORE AND RETURN
   3577					;
   3578					; SPECIAL DEVICE OPERATION
   3579					;
   3580	011172				BCFSDO:
   3581	011172	016001 	000000G			MOV	T.HCAD(R0),R1	;GET DATA ADDRESS
   3582	011176	022711 	000001 			CMP	#1,(R1)		;SET PAGE COUNTER?
   3583	011202	001361 				BNE	BCFILF		;NO-- ILLEGAL FUNCTION
   3584	011204	012701 	010000 			MOV	#TB.LPC,R1	;SAY SET PAGE COUNTER
   3585	011210	000415 				BR	40$		;QUEUE IT UP
   3586					;
   3587					; HERE IS DEVICE STATUS
   3588					;
   3589	011212				BCFHDS:
   3590	011212	016001 	000000G			MOV	T.HCAD(R0),R1	;GET ADDRESS
   3591	011216	032711 	000040 			BIT	#DV.EOF,(R1)	;EOF FOR LP?
   3592	011222	001751 				BEQ	BCFILF		;NO-- ILLEGAL STATUS
   3593	011224	012701 	020000 			MOV	#TB.EOF,R1	;YES-- SET FUNCTION
   3594	011230	000405 				BR	40$		;SEND IT TO QUEUE
   3595					;
   3596					; TRANSLATION RAM DATA
   3597					;
   3598	011232				BCFLDR:
   3599	011232	012701 	004000 			MOV	#TB.RMD,R1	;NOTE RAM DATA
   3600	011236	000402 				BR	40$		;SEND TO QUEUE
   3601					;
   3602					; VFU DATA
   3603					;
   3604	011240				BCFLDV:
   3605	011240	012701 	002000 			MOV	#TB.VFD,R1	;NOTE RAM DATA
   3606					;	BR	40$		;SEND TO QUEUE
   3607					;
   3608					; SPECIAL QUEUE ENTRY-- MARK BY TB.DON + FLAGS IN T.HCBC OF THREAD BLOCK
   3609					;
   3610	011244				40$:
   3611	011244	052701 	100000 			BIS	#TB.DON,R1	;FLAG BLOCK DONE TO INTERRUPT SERVICE
   3612	011250	050160 	000000G			BIS	R1,T.HCBC(R0)	;SET SPECIFIED FUNCTION
   3613					;	BR	BCFSTR		;PUT IN QUEUE
   3614					;
   3615					; QUEUE THREAD BLOCK TO LP-20
   3616					;
   3617	011254				BCFSTR:
   3618	011254					CALL	..PTLP		;SEND TO LP OR QUEUE UP
	011254	004737 	011522'			JSR	PC,..PTLP
   3619					;
   3620					; ALL DONE
   3621					;
   3622	011260				90$:
   3623	011260					RESTORE			;UN-SAVE REGISTRS
	011260	012604 				MOV	(SP)+,R4
	011262	012603 				MOV	(SP)+,R3
	011264	012601 				MOV	(SP)+,R1
   3624	011266					RETURN			; FROM ..STLP
	011266	000207 				RTS	PC
   3625					;
   3626						.DSABLE	LSB
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 39
..SPLP	(STOP LP-20 OUTPUT)

   3628						.SBTTL	..SPLP	(STOP LP-20 OUTPUT)
   3629					;
   3630					;+
   3631					;
   3632					;	..SPLP IS CALLED TO STOP OUTPUT TO THE LP-20 IMMEDIATELY
   3633					; AND RESET THE LP-20.  THIS ROUTINE FIRST CLEARS THE LP-20
   3634					; 'GO' BIT (TO STOP OUTPUT), THEN THREADS THROUGH THE OUTPUT LIST
   3635					; AND MARKS THE THREAD BLOCKS AS DONE BY SETTING T.HCBC TO IE.ABO.
   3636					;
   3637					;	QUEUE I/O REQUESTS ARE GIVEN THE ERROR RETURN 'IE.ABO'
   3638					; (OPERATION ABORTED) WHEN THE THREAD BLOCKS ARE PROCESSED BY THE TASK.
   3639					;
   3640					; CALLED FROM TASK LEVEL
   3641					;
   3642					; CALLING SEQUENCE:
   3643					;	R2 --	POINTER TO LPTBL ENTRY FOR THIS LP
   3644					;	CALL	..SPLP
   3645					;
   3646					; EXIT CONDITONS:
   3647					;
   3648					; NO REGISTERS MODIFIED
   3649					;
   3650					;-
   3651					;
   3652	011270				..SPLP::
   3653	011270					SAVE	<R0,R1,R3>	;SAVE MISC. REGISTERS
	011270	010046 				MOV	R0,-(SP)
	011272	010146 				MOV	R1,-(SP)
	011274	010346 				MOV	R3,-(SP)
   3654	011276	022702 	000000C			CMP	#LPTBL+<L$$P20*LPSIZE>,R2 ;THIS ONE OF US?
   3655	011302	101453 				BLOS	99$		;NO-- JUST LEAVE
   3656	011304	042712 	004000 			BIC	#LP.WAT,(R2)	;NO LONGER WAITING FOR ACK
   3657	011310	005762 	000000G			TST	LPRMA(R2)	;RAM DATA LOAD IN PROGRESS??
   3658	011314	001402 				BEQ	4$		;NO-- GO ON
   3659	011316	052712 	001000 			BIS	#LP.LIP,(R2)	;YES-- FLAG TO REMOVE IT AT LPTASK
   3660	011322				4$:
   3661	011322	005762 	000000G			TST	LPITH(R2)	;I/O IN PROGRESS?
   3662	011326	001403 				BEQ	5$		;NO-- JUST GO ON
   3663	011330	042777 	000040 	000000G		BIC	#EF.LPW,@LPEVFG	;YES-- MARK TO TIME OUT LP-20 WHEN WE STOP IT
   3664	011336				5$:
   3665	011336	005062 	000000G			CLR	LPITH(R2)	;CLEAR INTERRUPT LEVEL THREAD PTR
   3666	011342	016203 	000000G			MOV	LPCSA(R2),R3	;GET EXTERNAL PAGE ADDR
   3667	011346	001405 				BEQ	6$		;NON-EX LP
   3668	011350	012713 	001102 			MOV	#RSTERR+INTENB+PARENB,(R3) ;STOP LP-20
   3669	011354	016363 	000010 	000010 		MOV	LPPCTR(R3),LPPCTR(R3) ;RESET PAGZRO, TOO
   3670	011362				6$:
   3671	011362	016201 	000000G			MOV	LPTHD(R2),R1	;GET POINTER TO CURRENT THREADED LIST
   3672					;
   3673					; LOOP THROUGH THIS LIST AND MARK THE THREAD BLOCKS AS DONE
   3674					;
   3675	011366				10$:
   3676	011366	010100 				MOV	R1,R0		;GET ADDR OF NEXT BLOCK
   3677	011370	001413 				BEQ	90$		;THAT'S THE END
   3678	011372	011001 				MOV	@R0,R1		;GET ADDR OF NEXT NEXT BLOCK
   3679	011374	052760 	040000 	000000G		BIS	#TB.ABO,T.HCBC(R0) ;MARK BLOCK AS ABORTED
   3680	011402	005760 	000000G			TST	T.HCBC(R0)	;THIS THREAD BLOCK ALREADY DONE?
   3681	011406	002767 				BLT	10$		;YES-- LEAVE IT ALONE
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 39-1
..SPLP	(STOP LP-20 OUTPUT)

   3682	011410	012760 	140361 	000000G		MOV	#TB.DON!TB.ABO!<IE.ABO&LOBYTE>,T.HCBC(R0) ;MARK AS DONE, ABORTED
   3683	011416	000763 				BR	10$		;LOOP FOR ALL THINGS IN LIST
   3684					;
   3685					; ALL DONE WITH LIST
   3686					;
   3687	011420				90$:
   3688	011420	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;SAY I/O DONE TO LP TASK (RATHER... ABORTED)
   3689	011426					CALL	..DSEV		;MAKE A SIGNIFICANT EVENT HAPPEN
	011426	004737 	000000G			JSR	PC,..DSEV
   3690	011432				99$:
   3691	011432					RESTORE			;RESTORE SAVE REGISTERS
	011432	012603 				MOV	(SP)+,R3
	011434	012601 				MOV	(SP)+,R1
	011436	012600 				MOV	(SP)+,R0
   3692	011440					RETURN			;RETURN FORM ..SPLP
	011440	000207 				RTS	PC
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 40
..AKLP	(ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)

   3694						.SBTTL	..AKLP	(ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
   3695					;
   3696					;+
   3697					;
   3698					;	..AKLP IS CALLED BY ACKNOWLDGE OUTPUUT REQUEST FROM THE -10.
   3699					; THE LP.WAT FLAG IS CLEARED, AND THE CONDITION FLAGS CHRINT, PAGZRO
   3700					; ARE RESET.  OUTPUT IS RESUMED WHEN LP TASK RUNS.
   3701					;
   3702					; CALLED AT TASK LEVEL
   3703					;
   3704					; CALLING SEQUENCE:
   3705					;	R2 --	POINTER TO LPTBL ENTRY FOR THIS LP
   3706					;
   3707					; EXIT CONDITIONS:
   3708					;
   3709					;	NO REGISTERS MODIFIED
   3710					;
   3711					;-
   3712					;
   3713	011442				..AKLP::
   3714	011442					SAVE	<R3>		;SAVE USED R'S
	011442	010346 				MOV	R3,-(SP)
   3715	011444	022702 	000000C			CMP	#LPTBL+<L$$P20*LPSIZE>,R2 ;THIS AN LP???
   3716	011450	101422 				BLOS	90$		;NO-- JUST LEAVE
   3717	011452	042712 	004000 			BIC	#LP.WAT,(R2)	;NO LONGER WAITING
   3718	011456	005762 	000000G			TST	LPITH(R2)	;LP GOING?
   3719	011462	001015 				BNE	90$		;YES-- JUST GO AWAY
   3720	011464	016203 	000000G			MOV	LPCSA(R2),R3	;GET EXT PAGE ADDR OF THIS LP
   3721	011470	001405 				BEQ	10$		;NON-EX LP-- JUST GO AWAY
   3722	011472	016363 	000010 	000010 		MOV	LPPCTR(R3),LPPCTR(R3) ;RESET PAGZRO
   3723	011500	042713 	020000 			BIC	#CHRINT,(R3)	; AND CHRINT
   3724	011504				10$:
   3725	011504	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;START LP TASK
   3726	011512					CALL	..DSEV		; . .
	011512	004737 	000000G			JSR	PC,..DSEV
   3727	011516				90$:
   3728	011516					RESTORE			; USED R'S
	011516	012603 				MOV	(SP)+,R3
   3729	011520					RETURN			; FROM ..AKLP
	011520	000207 				RTS	PC
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 41
..PTLP	(PUT BLOCK IN THREADED OUTPUT LIST)

   3731						.SBTTL	..PTLP	(PUT BLOCK IN THREADED OUTPUT LIST)
   3732					;
   3733					;+
   3734					;
   3735					;	..PTLP IS CALLED TO SEND A BUFFER TO THE LP-20. THE
   3736					; BUFFER IS EITHER OUTPUT IMMEDIATELY OR, IF THE LP IS NOT IDLE,
   3737					; ADDED TO THE END OF THIS LP'S THREADED OUTPUT LIST.
   3738					;
   3739					; CALLED FROM TASK LEVEL
   3740					;
   3741					; CALLING SEQUENCE:
   3742					;	R0 --	ADDRESS OF THREAD BLOCK FOR THIS BUFFER
   3743					;	R2 --	POINTER TO LPTBL FOR THIS LP
   3744					;	CALL	..PTLP
   3745					;
   3746					; EXIT CONDITIONS:
   3747					;
   3748					; NO REGISTERS MODIFIED
   3749					;
   3750					;-
   3751					;
   3752	011522				..PTLP::
   3753	011522					SAVE	<R1,R3>	;SAVE USED REGISTERS
	011522	010146 				MOV	R1,-(SP)
	011524	010346 				MOV	R3,-(SP)
   3754	011526	005010 				CLR	@R0		;MARK END OF LIST
   3755	011530	012762 	000012 	000000G		MOV	#LPRTRY,LPRTY(R2) ;RESET RETRY COUNTER
   3756	011536	016203 	000000G			MOV	LPCSA(R2),R3	;GET LP EXTERNAL PAGE ADDRESS
   3757	011542	001404 				BEQ	5$		;OOPS-- NON-EX LP
   3758	011544	032713 	004000 			BIT	#ONLINE,(R3)	;OFF-LINE?
   3759	011550	001006 				BNE	7$		;NO-- JUST GO ON
   3760	011552	000403 				BR	6$		;OFF-LINE-- SEND STATUS
   3761					;
   3762	011554				5$:
   3763	011554	012760 	100277 	000000G		MOV	#TB.DON!<IE.OFL&LOBYTE>,T.HCBC(R0) ;NON-EX-LP-- MARK AS DONE, ERROR
   3764	011562				6$:
   3765	011562	052712 	040000 			BIS	#LP.SST,(R2)	;TIME TO RING THE -10
   3766	011566				7$:
   3767	011566					.INH0			;;LOCK OUT QUEUE'D PROTOCOL TASK
	011566	013746 	177776 			MOV	@#PS,-(SP)
	011572	112737 	000140 	177776 		MOVB	#140,@#PS
   3768	011600	016201 	000000G			MOV	LPTHD(R2),R1	;;GET CURRENT POINTER TO THREADED LIST
   3769	011604	001405 				BEQ	20$		;;NONE-- START LP GOING
   3770					;
   3771					; LP BUSY-- MUST FIND END OF THREADED LIST AND PUT THIS BUFFER THERE
   3772					;
   3773	011606				10$:
   3774	011606	010103 				MOV	R1,R3		;;COPY ADDR OF THREAD BLOCK
   3775	011610	011301 				MOV	@R3,R1		;;GET NEXT THREAD
   3776	011612	001375 				BNE	10$		;;NOT END-- KEEP ON LOOKING
   3777	011614	010013 				MOV	R0,@R3		;;END-- STORE CURRENT THREAD BLOCK AT END
   3778	011616	000407 				BR	90$		;;ALL DONE
   3779					;
   3780					; LP IDLE-- START IT GOING ON THIS BUFFER
   3781					;
   3782	011620				20$:
   3783	011620	010062 	000000G			MOV	R0,LPTHD(R2)	;;STORE START OF THREAD
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 41-1
..PTLP	(PUT BLOCK IN THREADED OUTPUT LIST)

   3784	011624	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;;TELL LP TASK TO START LP GOING
   3785	011632					CALL	..DSEV		;; WITH A SIGNIFICANT EVENT
	011632	004737 	000000G			JSR	PC,..DSEV
   3786					;
   3787					; ALL DONE
   3788					;
   3789	011636				90$:
   3790	011636					.ENB0			;RE-ENABLE IRPS
	011636	004737 	000000G			JSR	PC,..ENB0
   3791	011642					RESTORE			;RESTORE SAVED REGISTERS
	011642	012603 				MOV	(SP)+,R3
	011644	012601 				MOV	(SP)+,R1
   3792	011646					RETURN			;RETURN FROM ..PTLP
	011646	000207 				RTS	PC
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 42
..DOLP	(INITIATE LP-20 TRANSFER)

   3794						.SBTTL	..DOLP	(INITIATE LP-20 TRANSFER)
   3795					;
   3796					;+
   3797					;
   3798					;	..DOLP IS CALLED TO START AN LP GOING ON A SPECIFIED BUFFER.
   3799					; THE DEVICE RGISTERS ARE SET UP AND 'GO' IS SET TO START THE TRANSFER.
   3800					;
   3801					;	IF THE THREAD SPECIFIED IS ZERO, NOTHING IS DONE AND THE
   3802					; LP IS LEFT IDLE.
   3803					;
   3804					;	ENTER AT ..DOL1 TO OUTPUT NEXT BUFFER, UNLESS LP.MCH IS SET,
   3805					; IN WHICH CASE THE CURRENT BUFFER IS OUTPUT.  THIS IS USUALLY ONLY
   3806					; CALLED WHEN 'DONE' IS SET.
   3807					;
   3808					; CALLED AT INTERRUPT LEVEL (OR WITH INTERRUPTS DISABLED)
   3809					;
   3810					; CALLING SEQUENCE:
   3811					;	R0 --	ADDR OF THREAD BLOCK TO OUTPUT (ZERO IF END)
   3812					;	R2 --	ADDR OF LPTBL ENTRY FOR THIS LP
   3813					;	R3 --	EXTERNAL PAGE ADDRESS FOR THIS LP
   3814					;
   3815					; EXIT CONDITIONS:
   3816					;	R0 --	ADDR OF CURRENT THREAD BLOCK
   3817					;
   3818					; NO OTHER REGISTERS MODIFIED
   3819					;
   3820					;-
   3821					;
   3822						.ENABLE	LSB
   3823	011650				..DOL1::
   3824	011650	032712 	001000 			BIT	#LP.LIP,(R2)	;;;LOAD SUPPOSED TO BE IN PROGRESS?
   3825	011654	001020 				BNE	19$		;;;YES-- GO BACK TO TASK
   3826	011656	032712 	010000 			BIT	#LP.MCH,(R2)	;;;MULTI-CHARACTER OPERATION?
   3827	011662	001417 				BEQ	20$		;;;NO-- GET NEXT BUFFER
   3828									;;;YES-- GET (CONTINUE) CURRENT BUFFER
   3829	011664				..DOLP::
   3830	011664				10$:
   3831	011664	042712 	114000 			BIC	#LP.WAT!LP.MCH!LP.HNG,(R2) ;;;NOT WAITING, AND NOT MULTI-CHAR-ING
   3832	011670	010062 	000000G			MOV	R0,LPITH(R2)	;;;SAVE CURRENT BUFFER AS OUR INT-LEVEL BUFFER
   3833	011674	001463 				BEQ	90$		;;;GIVE UP IF END
   3834	011676	016063 	000000G	000006 		MOV	T.HCBC(R0),LPBCTR(R3) ;;;SAVE BYTE COUNT FOR LP (WILL NEG LATER)
   3835	011704	003020 				BGT	50$		;;;NOT DONE-- START OUTPUT
   3836					;
   3837	011706	032760 	036000 	000000G		BIT	#TB.SFN,T.HCBC(R0) ;;;SPECIAL FUNCTION?
   3838	011714	001402 				BEQ	20$		;;;NO-- JUST SET DONE
   3839	011716				19$:
   3840	011716	005000 				CLR	R0		;;;YES-- DON'T GET NEXT THREAD BLOCK
   3841	011720	000404 				BR	30$		;;;AND STOP I/O, REQUEST TASK LEVEL CODE
   3842					;
   3843					; THIS THREAD BLOCK DONE-- MARK IT BY -VE T.HCBC, SET I/O DONE
   3844					;  EVENT FLAG, AND START NEXT BUFFER.
   3845					;
   3846	011722				20$:
   3847	011722	012760 	100001 	000000G		MOV	#TB.DON!<IS.SUC&LOBYTE>,T.HCBC(R0) ;;;NOTE SUCCESS HERE
   3848	011730	011000 				MOV	@R0,R0		;;;GET ADDR OF NEXT BUFFER
   3849					;
   3850					; SET I/O DONE, GO ON TO NEXT THREAD BLOCK (ADDR IN R0)
LPDRV	(LP-20 LINEPRINTER DRIV	MACRO M1110  12-OCT-79 14:00  PAGE 42-1
..DOLP	(INITIATE LP-20 TRANSFER)

   3851					;
   3852	011732				30$:
   3853	011732	052777 	000001 	000000G		BIS	#EF.LPD,@LPEVFG	;;;SET LP I/O DONE EVENT FLAGE
   3854	011740					CALL	..DSEV		;;;MAKE A SIGNIFICANT EVENT
	011740	004737 	000000G			JSR	PC,..DSEV
   3855	011744	000747 				BR	10$		;;;DO NEXT BUFFER
   3856					;
   3857					; SET UP -VE BYTE COUNT AND EXTENDED MEMORY ADDRESS BITS
   3858					;
   3859	011746				50$:
   3860	011746	016063 	000000G	000004 		MOV	T.HCAD(R0),LPBSAD(R3) ;;;SAVE PHYSICAL ADDR FOR LP
   3861	011754	005463 	000006 			NEG	LPBCTR(R3)	;;;MAKE -VE # BYTES TO SEND
   3862	011760	042713 	000060 			BIC	#BUSA17+BUSA16,(R3) ;;;CLEAR EXTENDED MEMORY ADDR BITS
   3863	011764	005760 	000000G			TST	T.HBCT(R0)	;;;THIS QUEUE I/O REQUEST?
   3864	011770	001023 				BNE	59$		;;;NO-- ADDRESS IS IN LOW CORE
   3865	011772	116062 	177775 	000000G		MOVB	T.HVFC(R0),LPMCB(R2) ;;;SET TO PRINT VERTICAL FORMAT CHARACTER
   3866	012000	001415 				BEQ	58$		;;;NONE-- JUST START THE LP
   3867	012002	105060 	177775 			CLRB	T.HVFC(R0)	;;;YES-- CLEAR IT NOW
   3868	012006	012763 	000000G	000004 		MOV	#LPMCB,LPBSAD(R3) ;;;YES-- POINT TO THE FORMAT CHARACTER
   3869	012014	060263 	000004 			ADD	R2,LPBSAD(R3)	;;; FOR THIS LP
   3870	012020	012763 	177777 	000006 		MOV	#-1,LPBCTR(R3)	;;;ONLY 1 CHARACTER
   3871	012026	052712 	010000 			BIS	#LP.MCH,(R2)	;;;NOTE THAT WE ARE WORKING FROM LPMCB
   3872	012032	000402 				BR	59$		;;;START THE LP GOING
   3873					;
   3874	012034				58$:
   3875	012034	156013 	177774 			BISB	T.HEMA(R0),(R3)	;;;SET EXTENDED MEMORY BITS
   3876					;
   3877					; SET INTENB, PARENB, AND GO TO START LP GOING ON THIS BUFFER
   3878					;
   3879	012040				59$:
   3880	012040	052713 	000103 			BIS	#INTENB+PARENB+GO,(R3) ;;;START LP GOING
   3881					;
   3882					; ALL DONE-- RETURN
   3883					;
   3884	012044				90$:
   3885	012044					RETURN			;;;RETURN FROM ..DOLP/..DOL1
	012044	000207 				RTS	PC
   3886						.DSABLE	LSB
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 43
..DOLP	(INITIATE LP-20 TRANSFER)

   3888						.TITLE	CRDRV	(CD-11 DRIVER FOR RSX10F)
   3889						.SBTTL	TITLE PAGE
   3890						.IDENT	/001000/
   3891					;
   3892					;                             COPYRIGHT (C) 1975, 1978 BY
   3893					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   3894					;
   3895					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   3896					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   3897					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   3898					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   3899					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   3900					;
   3901					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   3902					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   3903					;       CORPORATION.
   3904					;
   3905					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   3906					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   3907					;
   3908					;		MODULE: COMMON DEFINITIONS
   3909					;
   3910					;		VERSION: 01-00
   3911					;
   3912					;		AUTHOR: TOM PORCHER
   3913					;
   3914					;		DATE: 25-SEP-75
   3915					;
   3916					;
   3917					;	THIS MODULE CONTAINS:
   3918					;
   3919					;	1) COMMON PARAMETERS AND MACROS
   3920					;
   3921					;	2) CD-11 DEVICE REGISTER DEFINITIONS
   3922					;
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 44
COMMON PARAMETERS AND MACROS

   3924						.SBTTL	COMMON PARAMETERS AND MACROS
   3925					;
   3926					; MISC. MCALLS
   3927					;
   3928					.MCALL MRKT$,SPRA$S,SVTK$S,WTLO$S,WTSE$S,WSIG$S
   3929					.MCALL DIR$,$DEF,CALL,RETURN,.INH,.ENB,PUSH,POP,.STKM
   3930	012046					$DEF
   3931						.ENABLE	AMA
   3932						.LIST	MEB
   3933					;
   3934					; PARAMETERS
   3935					;
   3936		000001 			C$$D11=	1			;ONLY 1 CD-11
   3937					;
   3938					; EVENT FLAGS
   3939					;
   3940		000001 			E.FCRC= 1			;CD-11 MARK-TIME REQUEST
   3941		000001 			 EF.CRC=BIT0
   3942		000002 			E.FCRD=	2			;I/O DONE FROM INTERRUPT LEVEL
   3943		000002 			 EF.CRD=BIT1
   3944		000003 			E.FCRS=	3			;BUFFER AVAILABLE FOR STATUS
   3945		000004 			 EF.CRS=BIT2
   3946		000004 			E.FCRB=	4			;DATA BUFFER AVAILABLE
   3947		000010 			 EF.CRB=BIT3
   3948					;
   3949					;
   3950		000074 			.CYLTM=60.
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 45
CD-11 DEVICE REGISTER BIT DEFINITIONS

   3952						.SBTTL	CD-11 DEVICE REGISTER BIT DEFINITIONS
   3953					;
   3954					;
   3955					;CDST==	177160			;CONTROL/STATUS REGISTER
   3956		100000 				CDSERR=	BIT15
   3957		040000 				CDSRCK=	BIT14
   3958		020000 				CDSEOF=	BIT13
   3959		010000 				CDSOFL=	BIT12
   3960		004000 				CDSDER=	BIT11
   3961		002000 				CDSDLT=	BIT10
   3962		001000 				CDSNXM=	BIT9
   3963		000400 				CDSPWC=	BIT8
   3964		000200 				CDSRDY=	BIT7
   3965		000100 				CDSIEN=	BIT6
   3966		000040 				CDSB17=	BIT5
   3967		000020 				CDSB16=	BIT4
   3968		000010 				CDSTOL=	BIT3
   3969		000004 				CDSHEM=	BIT2
   3970		000002 				CDSPAK=	BIT1
   3971		000001 				CDSRED=	BIT0
   3972					;CDCC==	177162			;COLUMN COUNT REGISTER
   3973					;CDBA==	177164			;BUS ADDRESS BITS 15-0
   3974					;CDDB==	177166			;DATA BUFFER REGISTER
   3975					;AFTER DATA TRANSFERS (CDSRDY= 1):
   3976		040000 				CDBRCK=	BIT14
   3977		020000 				CDBPCK=	BIT13
   3978		010000 				CDBSCK=	BIT12
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 46
CD-11 DRIVER COMMON DATA MODULE

   3980						.SBTTL	CD-11 DRIVER COMMON DATA MODULE
   3981					;
   3982					;                             COPYRIGHT (C) 1975, 1978 BY
   3983					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   3984					;
   3985					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   3986					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   3987					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   3988					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   3989					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   3990					;
   3991					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   3992					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   3993					;       CORPORATION.
   3994					;
   3995					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   3996					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   3997					;
   3998					;		MODULE: CD-11 DRIVER COMMON DATA
   3999					;
   4000					;		VERSION: 01-00
   4001					;
   4002					;		AUTHOR: TOM PORCHER
   4003					;
   4004					;		DATE: 25-AUG-75
   4005					;
   4006					;
   4007					;	THIS MODULE CONTAINS:
   4008					;
   4009					;	1) COMMON DATABASE DEFINITIONS
   4010					;
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 47
COMMON DATABASE DEFINITIONS

   4012						.SBTTL	COMMON DATABASE DEFINITIONS
   4013					;
   4014					;
   4015					; CR TASK STACK HEADER
   4016					;
   4017	012046				CRHD::	.STKM	0,0,0,0,0,0,0,CRINI,174000,CRSTK
	012114	000000 	000000 	000000 		.WORD	0,0,0,0
	012122	000000
	012142	174000 	012424'	012326'		.WORD	174000,CRINI,CRSTK
	012176	000005 				.WORD	5
	012200	000000G				.WORD	TTPEN
	012202	000000 				.WORD	0
	012204	000000 				.WORD	0
	012206	000000 				.WORD	0
	012210	000000 				.WORD	0
	012212	000000 				.WORD	0
	012214	000000 				.WORD	0
	012216	000000 				.WORD	0
	012220	000000 				.WORD	0
	012222	000000 				.WORD	0
	012224	000000 				.WORD	0
	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	012424'				.WORD	CRINI
	012344	174000 				.WORD	174000
   4018					;
   4019									;STATUS BITS:
   4020		100000 				CR.HNG=	BIT15		;CR IS HUNG, I.E. NO INPUT HAS OCCURED
   4021									; IN 10 SECONDS.  SET AND CHECKED BY
   4022									; MARK-TIME SERVICE, CLEARED BY I/O
   4023									; DONE AT INTERRUPT.
   4024		040000 				CR.SST=	BIT14		;A CHANGE IN DEVICE STATUS HAS OCCURED,
   4025									; OR THE -10 HAS REQUESTED THE STATUS OF
   4026									; THE CR.
   4027		020000 				CR.IOP=	BIT13		;I/O IN PROGRESS. SET WHEN READ CARD STARTED,
   4028									; CLEARED WHEN DONE INTERRUPT OCCURS.
   4029		010000 				CR.IOD=	BIT12		;I/O DONE FROM INTERRUPT LEVEL. SET WHEN A
   4030									; DATA BUFFER IS READY TO BE SENT TO THE -10.
   4031		004000 				CR.ACK=	BIT11		;ACKNOWLEDGE RECEIVED.  READ NEXT CARD.
   4032									; SET WHEN ACK RECEIVED FROM -10 (..AKCR).
   4033		002000 				CR.RHN=	BIT10		;READER HUNG DURING READ. SET BY MKT ROUTINE
   4034									; TESTED AND CLEARED BY SSTSCR
   4035		001000 				CR.NXD=	BIT9		;NON-EX CD-11. SET BY INITCR, CHECKED
   4036									; BEFORE TRANSFER STARTED.
   4037		000400 				CR.NSF=	BIT8		;NOT STACKER FULL.  SET WHEN ANY OTHER ERROR
   4038									; CONDITION IS SET.
   4039					;
   4040					; DIRECTIVE PARAMETER BLOCKS
   4041					;
   4042	012346				CRMRKT:	MRKT$	E.FCRC,10.*.CYLTM,10.*.CYLTM ;MARK-TIME REQUEST FOR 10 SECONDS
	012346	   027 	   005 			.BYTE	23.,5
	012350	000001 				.WORD	E.FCRC
	012352	001130 				.WORD	10.*.CYLTM
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 47-1
COMMON DATABASE DEFINITIONS

	012354	001130 				.WORD	10.*.CYLTM
	012356	000000 				.WORD
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 48
CD-11 DRIVER TASK MODULE

   4044						.SBTTL	CD-11 DRIVER TASK MODULE
   4045					;
   4046					;                             COPYRIGHT (C) 1975, 1978 BY
   4047					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4048					;
   4049					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4050					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4051					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4052					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4053					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4054					;
   4055					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4056					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4057					;       CORPORATION.
   4058					;
   4059					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4060					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4061					;
   4062					;		MODULE: CD-11 DRIVER TASK
   4063					;
   4064					;		VERSION: 01-00
   4065					;
   4066					;		AUTHOR: TOM PORCHER
   4067					;
   4068					;		DATE: 25-AUG-75
   4069					;
   4070					;
   4071					;	THIS MODULE CONTAINS:
   4072					;
   4073					;	1) TASK LEVEL SERVICE FOR CD-11
   4074					;
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 49
TASK INITIALIZATION

   4076						.SBTTL	TASK INITIALIZATION
   4077					;
   4078					; SST VECTOR TABLE
   4079					;
   4080	012360	012362'			CRSSTV:	.WORD	CRTRP4		;WHERE TO GO ON TRAP TO 4
   4081					;
   4082					; HERE ON TRAP TO 4, HOPEFULLY JUST NON-EX CR
   4083					;
   4084	012362	021627 	013074'		CRTRP4:	CMP	(SP),#CRDINT	;FROM MARK-TIME?
   4085	012366	001404 				BEQ	10$		;YES-- OK
   4086	012370	021627 	013626'			CMP	(SP),#CRDCLR	;OR FROM INIT?
   4087	012374	001401 				BEQ	10$		;YES-- ALSO OK
   4088	012376	000004 				IOT			;***** NO, NOT OUR T04 *****
   4089					;
   4090	012400	052737 	001000 	000000G	10$:	BIS	#CR.NXD,CRSTS	;SAY NON-EX CR
   4091	012406	052766 	000001 	000002 		BIS	#BIT0,2(SP)	;SET THE CARRY TO THE SST
   4092	012414	000002 				RTI			;RETURN TO INTERRPUTED ROUTINE
   4093					;
   4094					; HERE ON POWER-UP AST
   4095					;
   4096	012416				CRPWUP:	CALL	INITCR		;RESET THE CR
	012416	004737 	013612'			JSR	PC,INITCR
   4097	012422	000002 				RTI			;RETURN FROM AST
   4098					;
   4099					; HERE TO START CR TASK
   4100					;
   4101	012424	013737 	000000G	000000G	CRINI:	MOV	.CRTSK,CREVFG	;GET ADDRESS OF OUR TASK'S ENTRY
   4102	012432	062737 	000020 	000000G		ADD	#A.EF,CREVFG	;MAKE THAT ADDRESS OF OUR EVENT FLAGS
   4103	012440	052777 	000014 	000000G		BIS	#EF.CRB!EF.CRS,@CREVFG ;SAY OUR BUFFERS ARE AVAILABLE
   4104	012446					DIR$	#CRMRKT		;SETUP FOR 10-SECOND MARK-TIME'S
	012446	012746 	012346'			MOV	#CRMRKT,-(SP)
	012452	104375 				EMT	375
   4105	012454					SVTK$S	#CRSSTV,#1	;SETUP FOR TRAP-TO-4 RECOGNITION
	012454	012746 	000001 			MOV	#1,-(SP)
	012460	012746 	012360'			MOV	#CRSSTV,-(SP)
	012464	012746 				MOV	(PC)+,-(SP)
	012466	   071 	   003 			.BYTE	57.,3
	012470	104375 				EMT	375
   4106	012472					SPRA$S	#CRPWUP		;SETUP FOR POWER-UP AST
	012472	012746 	012416'			MOV	#CRPWUP,-(SP)
	012476	012746 				MOV	(PC)+,-(SP)
	012500	   155 	   002 			.BYTE	109.,2
	012502	104375 				EMT	375
   4107	012504					CALL	INITCR		;INITIALIZE CD-11 AND TABLES
	012504	004737 	013612'			JSR	PC,INITCR
   4108					;	BR	CRLOOP		;FALL INTO PROCESSING LOOP
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 50
CRLOOP (MAIN PROCESSING LOOP)

   4110						.SBTTL	CRLOOP (MAIN PROCESSING LOOP)
   4111					;
   4112					; WAIT  FOR EVENT FLAGS EF.CRC (10 SEC MARK-TIME), EF.CRD (I/O DONE).
   4113					;
   4114	012510				CRLOOP:	WTLO$S	1,#EF.CRC!EF.CRD ;WAIT FOR FLAGS
	012510	012746 	000003 			MOV	#EF.CRC!EF.CRD,-(SP)
	012514	012746 	000001 			MOV	#1,-(SP)
	012520	012746 				MOV	(PC)+,-(SP)
	012522	   053 	   003 			.BYTE	43.,3
	012524	104375 				EMT	375
   4115					;
   4116	012526					.INH			;;;A FLAG WAS SET-- LOCK OUT INTERRUPTS
	012526	013746 	177776 			MOV	PS,-(SP)
	012532	112737 	000340 	177776 		MOVB	#PR7,@#PS	;;
   4117	012540	017737 	000000G	000000G		MOV	@CREVFG,CRCEVF	;;;GET OUR CURRENT EVENT FLAGS
   4118	012546	042777 	000003 	000000G		BIC	#EF.CRC!EF.CRD,@CREVFG ;;;CLEAR THE FLAGS WE WAITED FOR
   4119	012554					.ENB			;INTERRUPTS: ON!
	012554	012637 	177776 			MOV	(SP)+,@#PS	;;
   4120	012560	005737 	000000G			TST	.CRPFL		;POWER FAIL?
   4121	012564	001404 				BEQ	10$		;NO -- FORGET IT
   4122	012566					CALL	INITCR		;YES -- INIT CR
	012566	004737 	013612'			JSR	PC,INITCR
   4123	012572	005037 	000000G			CLR	.CRPFL
   4124	012576				10$:
   4125					;
   4126					; SEE IF THIS IS EF.CRD (I/O DONE), AND FIND OUT WHY IT WAS SET.
   4127					;
   4128	012576	032737 	000002 	000000G	CRIOD:	BIT	#EF.CRD,CRCEVF	;THIS EF.CRD?
   4129	012604	001517 				BEQ	90$		;NO-- TRY FOR MARK-TIME
   4130					;
   4131					; SEE IF A BUFFER IS READY TO BE SENT TO THE -10 (CR.IOD SET BY INTERRUPT SERVICE)
   4132					;
   4133	012606	032737 	010000 	000000G		BIT	#CR.IOD,CRSTS	;WE FINISH A TRANSFER?
   4134	012614	001430 				BEQ	20$		;NO-- GO ON
   4135	012616	012700 	000000G			MOV	#CRBUFF,R0	;YES-- GET ADDRESS OF BUFFER
   4136					;
   4137					; WE MUST SEND A DATA BUFFER TO THE -10.  SET UP FOR ..STIN:
   4138					;	R0 --	ADDRESS OF BUFFER. FIRST WORD IS (LOW BYTE) BYTE COUNT
   4139					;		OF BUFFER (NOT INCLUDING HEADER WORD), (HIGH BYTE) UNIT #.
   4140					;	R1 --	BIT15+ FUNCTION CODE (BC.STR-- STRING DATA)
   4141					;	R2 --	EVENT FLAG TO SET WHEN DONE
   4142					;	R3 --	DEVICE CODE (D.CCDR)
   4143					;
   4144	012622	105040 				CLRB	-(R0)		;HIGH BYTE HEADER: UNIT # (ALWAYS 0)
   4145	012624	112740 	000000G			MOVB	#CRBFLN,-(R0)	;LOW BYTE HEADER: SIZE OF BUFFER
   4146	012630	012701 	100000G			MOV	#BIT15+BC.STR,R1 ;FUNCTION CODE: STRING DATA (INDIRECT FLAVOR)
   4147	012634	012702 	000004 			MOV	#E.FCRB,R2	;EVENT FLAG TO SET WHEN DONE
   4148	012640	012703 	000000G			MOV	#D.CCDR,R3	;DEVICE CODE: CDR
   4149	012644	042777 	000010 	000000G		BIC	#EF.CRB,@CREVFG	;ASSUME SUCCESS
   4150	012652					CALL	..STIN		;SEND TO -10
	012652	004737 	000000G			JSR	PC,..STIN
   4151	012656	103404 				BCS	10$		;GIVE UP-- PRIMARY PROTOCOL (DDT)
   4152	012660	042737 	112400 	000000G		BIC	#CR.IOD!CR.HNG!CR.RHN!CR.NSF,CRSTS ;OK-- NO LONGER BUFFER TO SEND
   4153	012666	000403 				BR	20$		;GO ON
   4154					;
   4155	012670	052777 	000010 	000000G	10$:	BIS	#EF.CRB,@CREVFG	;..STIN FAILED-- BUFFER STILL AVAILABLE
   4156					;
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 50-1
CRLOOP (MAIN PROCESSING LOOP)

   4157					; SEE IF STATUS IS TO BE SENT TO -10, EITHER BECAUSE OF A CHANGE IN
   4158					;  DEVICE STATUS OR A REQUEST FROM THE -10.
   4159					;
   4160	012676	032737 	040000 	000000G	20$:	BIT	#CR.SST,CRSTS	;TIME TO SEND DEVICE STATUS?
   4161	012704	001402 				BEQ	30$		;NO-- GO ON
   4162	012706					CALL	SSTSCR		;YES-- SEND SUCH TO -10
	012706	004737 	013204'			JSR	PC,SSTSCR
   4163					;
   4164					; SEE IF -10 WANTS US TO READ NEXT CARD, BY CR.ACK SET.
   4165					;
   4166	012712	032737 	004000 	000000G	30$:	BIT	#CR.ACK,CRSTS	;-10 WANT A CARD?
   4167	012720	001451 				BEQ	90$		;NO-- ALL DONE
   4168	012722	032737 	030000 	000000G		BIT	#CR.IOP!CR.IOD,CRSTS ;STILL I/O IN PROGRESS?
   4169	012730	001045 				BNE	90$		;YES-- COME BACK LATER WHEN WE ARE DONE
   4170	012732	042737 	106000 	000000G		BIC	#CR.ACK!CR.HNG!CR.RHN,CRSTS ;YES-- NO LONGER WANTING
   4171	012740	032737 	001000 	000000G		BIT	#CR.NXD,CRSTS	;THIS NON-EX CD-11?
   4172	012746	001017 				BNE	32$		;YES-- JUST SEND STATUS
   4173	012750	032777 	000010 	000000G	34$:	BIT	#EF.CRB,@CREVFG	;BUFFER AVAILABLE TO US YET?
   4174	012756	001007 				BNE	31$		;YES-- ALL OK
   4175	012760					WSIG$S			;WAIT FOR SOMETHING TO HAPPEN
	012760	012746 				MOV	(PC)+,-(SP)
	012762	   061 	   001 			.BYTE	49.,1
	012764	104375 				EMT	375
   4176	012766	032737 	000000G	000002G		BIT	#EF.PR1,.COMEF+2 ;IS PRIMARY PROTOCOL STILL RUNNING ?
   4177	012774	001365 				BNE	34$		;YES, SEE IF BUFFER IS NOW FREE.
   4178					;
   4179	012776	032737 	010000 	000000G	31$:	BIT	#CDSOFL,@#CDST	;CD-11 OFF-LINE?
   4180	013004	001403 				BEQ	33$		;NO-- LET'S START TRANSFER
   4181	013006				32$:	CALL	SSTSCR		;YES-- TELL -10
	013006	004737 	013204'			JSR	PC,SSTSCR
   4182	013012	000414 				BR	90$		; AND GO AWAY FOR NOW
   4183					;
   4184					; START TRNSFER OF CARD TO CRBUFF
   4185					;
   4186	013014	052737 	020000 	000000G	33$:	BIS	#CR.IOP,CRSTS	;SAY I/O NOW IN PROGRESS
   4187	013022	012737 	000000C	000000G		MOV	#-<CRBFLN/2>,@#CDCC ;INDICATE TO READ 80. COLUMNS
   4188	013030	012737 	000000G	000000G		MOV	#CRBUFF,@#CDBA	; INTO CRBUFF
   4189	013036	012737 	000101 	000000G		MOV	#CDSIEN!CDSRED,@#CDST ;START CARD GOING
   4190					;
   4191					; ALL DONE WITH EF.CRD
   4192					;
   4193	013044				90$:
   4194					;
   4195					; CHECK FOR MARK-TIME REQUEST (EF.CRC SET), THEN DO HUNG CHECK IF SO.
   4196					;
   4197						.ENABLE LSB
   4198	013044	032737 	000001 	000000G	CRMKT:	BIT	#EF.CRC,CRCEVF	;MARK-TIME REQUEST EVENT FLAG SET?
   4199	013052	001452 				BEQ	90$		;NO-- GO ON
   4200	013054	032737 	001000 	000000G		BIT	#CR.NXD,CRSTS	;NON-EX CR?
   4201	013062	001011 				BNE	9$		;YES-- SKIP INT-ENB STUFF
   4202	013064	000241 				CLC			;IN CASE OF TRAP
   4203	013066	032737 	000100 	000000G		BIT	#CDSIEN,@#CDST	;INT-ENB STILL SET?
   4204	013074	103404 			CRDINT:	BCS	9$		;NON-EX CR-- GO ON
   4205	013076	001003 				BNE	9$		;YES-- SKIP THE SET
   4206	013100	052737 	000100 	000000G		BIS	#CDSIEN,@#CDST	;YES-- MAKE SURE WE STILL HAVE INT-ENB
   4207	013106	032737 	074000 	000000G	9$:	BIT	#CR.SST!CR.IOD!CR.ACK!CR.IOP,CRSTS ;YES-- STUFF FOR US TO DO?
   4208	013114	001426 				BEQ	30$		;NO-- IDLE-- CLEAR HUNG FLAG
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 50-2
CRLOOP (MAIN PROCESSING LOOP)

   4209	013116	032737 	100000 	000000G		BIT	#CR.HNG,CRSTS	;WE BEEN HERE WITHIN 10 SECONDS?
   4210	013124	001416 				BEQ	20$		;NO-- SET HUNG FLAG SO WE WILL IN 10 SEC
   4211	013126	032737 	020000 	000000G		BIT	#CR.IOP,CRSTS	;YES-- WAS I/O IN PROGRESS
   4212	013134	001407 				BEQ	10$		;NO-- JUST PROCESS OTHER FLAGS
   4213	013136	052737 	042000 	000000G		BIS	#CR.RHN!CR.SST,CRSTS ;YES-- SAY READER HUNG
   4214	013144	005237 	000000G			INC	CRHUNG		;COUNT # TIMES HUNG
   4215	013150					CALL	INITCR		;RESET THE CD-11
	013150	004737 	013612'			JSR	PC,INITCR
   4216					;
   4217	013154	052777 	000002 	000000G	10$:	BIS	#EF.CRD,@CREVFG	;SAY TO LOOK AT THE FLAGS AGAIN
   4218					;
   4219	013162	052737 	100000 	000000G	20$:	BIS	#CR.HNG,CRSTS	;FLAG TO CHECK THIS AGAIN IN 10 SECONDS
   4220	013170	000403 				BR	90$		;ALL DONE
   4221					;
   4222	013172	042737 	102000 	000000G	30$:	BIC	#CR.HNG!CR.RHN,CRSTS	;NOTHING TO DO-- DON'T SAY WE ARE HUNG
   4223					;
   4224					; ALL DONE WITH EF.CRC
   4225					;
   4226	013200	000137 	012510'		90$:	JMP	CRLOOP		;BACK TO MAIN LOOP
   4227						.DSABLE	LSB
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 51
SSTSCR	(SEND CD-11 STATUS TO -10)

   4229						.SBTTL	SSTSCR	(SEND CD-11 STATUS TO -10)
   4230					;
   4231					;+
   4232					;
   4233					;	SSTSCR IS CALLED WHEN CR.SST IS SET, EITHER BY A CHANGE IN HARDWARE
   4234					; STATUS, OR ON REQUEST FROM THE -10.
   4235					;
   4236					;	THE STATUS PACKET IS ASSEMBLED INTO CRSTBK.  THE FORMAT OF THIS BLOCK
   4237					; IS AS FOLLOWS:
   4238					;
   4239					; WORD	0	STANDARD BITS (DV.XXX)
   4240					;	1	DEVICE DEPENDENT BITS (DD.XXX)
   4241					;	2	(HIGH BYTE) # BYTES OF DEVICE DEPENDENT INFO (ALWAYS 0)
   4242					;		(LOW BYTE) # BYTES OF DEVICE REGISTERS (ALWAYS 8.)
   4243					; CD-11 DEVICE REGISTERS
   4244					;	3	CDST
   4245					;	4	CDCC
   4246					;	5	CDBA
   4247					;	6	CDDB
   4248					;
   4249					; THE FOLLOWING BITS ARE USED IN THE STATUS WORDS:
   4250					;
   4251					;	DV.NXD	NON-EX DEVICE
   4252					;	DV.OFL	OFF-LINE
   4253					;	DV.OIR	HARD ERROR (DD.RCK, DD.PCK, DD.SCK)
   4254					;	DV.IOP	I/O IN PROGRESS (READING A CARD)
   4255					;	DV.EOF	E-O-F BUTTON PUSHED
   4256					;	DV.LOG	ERROR LOGGING REQUIRED
   4257					;	DV.HNG	DEVICE HUNG
   4258					;
   4259					;	DD.RCK	READ CHECK
   4260					;	DD.PCK	PICK CHECK
   4261					;	DD.SCK	STACK CHECK
   4262					;	DD.HEM	HOPPER EMPTY
   4263					;	DD.SFL	STACKER FULL
   4264					;
   4265					;-
   4266					;
   4267	013204	042737 	040000 	000000G	SSTSCR:	BIC	#CR.SST,CRSTS	;SAY STATUS SENT ALREADY
   4268	013212	032777 	000004 	000000G	60$:	BIT	#EF.CRS,@CREVFG	;IS STATUS BUFFER AVAILABLE?
   4269	013220	001007 				BNE	10$		;YES-- ASSEMBLE STATUS
   4270	013222					WSIG$S			;NO-- WAIT FOR IT TO BE THERE
	013222	012746 				MOV	(PC)+,-(SP)
	013224	   061 	   001 			.BYTE	49.,1
	013226	104375 				EMT	375
   4271	013230	032737 	000000G	000002G		BIT	#EF.PR1,.COMEF+2 ;IF PRIMARY PROTOCOL IS STILL RUNNING
   4272	013236	001365 				BNE	60$		;THEN CHECK IF STILL GOING
   4273					;
   4274					; ASSEMBLE STATUS INTO CRSTBK+0 CRSTBK+2
   4275					;
   4276	013240	012700 	000004G		10$:	MOV	#CRSTBK+4,R0	;GET ADDRESS OF STATUS BLOCK
   4277	013244	005010 				CLR	(R0)		;CLEAR BYTE COUNT WORD(ASSUME NON-EX DEV)
   4278	013246	005040 				CLR	-(R0)		; AND SECOND WORD OF STATUS
   4279	013250	010001 				MOV	R0,R1		;SAVE ADDR OF SECOND WORD
   4280	013252	005040 				CLR	-(R0)		; AND CLEAR FIRST WORD, R0 POINTS TO IT
   4281					;
   4282	013254	032737 	001000 	000000G		BIT	#CR.NXD,CRSTS	;NON-EX DEVICE?
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 51-1
SSTSCR	(SEND CD-11 STATUS TO -10)

   4283	013262	001403 				BEQ	101$		;NO-- GET REAL STATUS
   4284	013264	052710 	000007 			BIS	#DV.NXD!DV.OFL!DV.OIR,(R0) ;YES-- SAY NOT THERE
   4285	013270	000522 				BR	50$		;SEND THIS STATUS
   4286					;
   4287	013272	013703 	000000G		101$:	MOV	@#CDST,R3	;COPY DEVICE STATUS
   4288	013276	032703 	010000 			BIT	#CDSOFL,R3	;CD-11 OFF-LINE?
   4289	013302	001402 				BEQ	11$		;NO-- GO ON
   4290	013304	052710 	000006 			BIS	#DV.OFL!DV.OIR,(R0) ;YES-- SAY SO
   4291					;
   4292	013310	032737 	030000 	000000G	11$:	BIT	#CR.IOP!CR.IOD,CRSTS ;I/O STILL IN PROGRESS?
   4293	013316	001402 				BEQ	12$		;NO
   4294	013320	052710 	000020 			BIS	#DV.IOP,(R0)	;YES-- SAY SO
   4295					;
   4296	013324	032703 	020000 		12$:	BIT	#CDSEOF,R3	;E-O-F BUTTON PUSHED?
   4297	013330	001402 				BEQ	13$		;NO-- GO ON
   4298	013332	052710 	000040 			BIS	#DV.EOF,(R0)	;YES-- SAY EOF
   4299					;
   4300	013336	032737 	002000 	000000G	13$:	BIT	#CR.RHN,CRSTS	;READER HUNG?
   4301	013344	001402 				BEQ	14$		;NO-- GO ON
   4302	013346	052710 	001104 			BIS	#DV.HNG!DV.OIR!DV.LOG,(R0) ;YES-- SAY HUNG
   4303					;
   4304	013352	032703 	003000 		14$:	BIT	#CDSDLT!CDSNXM,R3 ;FATAL ERROR (DATA LATE, NXM)?
   4305	013356	001402 				BEQ	15$		;NO-- GO ON
   4306	013360	052710 	000300 			BIS	#DV.URE!DV.LOG,(R0) ;YES-- SAY SO
   4307					;
   4308	013364	032703 	000200 		15$:	BIT	#CDSRDY,R3	;BUT IS READER READY?
   4309	013370	001451 				BEQ	30$		;NO-- BITS ARE NOT VALID-- GO ON
   4310					;
   4311	013372	013704 	000000G			MOV	@#CDDB,R4	;YES-- GET ERROR BITS TO R4
   4312					;
   4313	013376	032704 	040000 			BIT	#CDBRCK,R4	;READ (PHOTO) CHECK?
   4314	013402	001402 				BEQ	16$		;NO
   4315	013404	052711 	000001 			BIS	#DD.RCK,(R1)	;YES
   4316					;
   4317	013410	032704 	020000 		16$:	BIT	#CDBPCK,R4	;PICK CHECK?
   4318	013414	001402 				BEQ	17$		;NO
   4319	013416	052711 	000002 			BIS	#DD.PCK,(R1)	;YES
   4320					;
   4321	013422	032704 	010000 		17$:	BIT	#CDBSCK,R4	;STACK CHECK?
   4322	013426	001402 				BEQ	18$		;NO
   4323	013430	052711 	000004 			BIS	#DD.SCK,(R1)	;YES
   4324					;
   4325	013434	005711 			18$:	TST	(R1)		;FATAL ERRROR DETECTED?
   4326	013436	001402 				BEQ	19$		;NO-- GO ON
   4327	013440	052710 	000100 			BIS	#DV.LOG,(R0)	;YES-- SAY ERROR LOGGING NEEDED
   4328					;
   4329	013444	032703 	000004 		19$:	BIT	#CDSHEM,R3	;HOPPER EMPTY?
   4330	013450	001402 				BEQ	20$		;NO-- GO ON
   4331	013452	052711 	000010 			BIS	#DD.HEM,(R1)	;YES
   4332					;
   4333	013456	005711 			20$:	TST	(R1)		;ANY ERROR BITS SET?
   4334	013460	001012 				BNE	21$		;YES-- NOT STACKER FULL
   4335	013462	032703 	040000 			BIT	#CDSRCK,R3	;IS THIS A READER CHECK?
   4336	013466	001412 				BEQ	23$		;NO-- CERTAINLY NOT STACKER FULL
   4337	013470	032737 	000400 	000000G		BIT	#CR.NSF,CRSTS	;WE DECIDE IT WASN'T STACKER FULL BEFORE?
   4338	013476	001006 				BNE	23$		;YES-- CAN'T BE STACKER FULL NOW
   4339	013500	052711 	000020 			BIS	#DD.SFL,(R1)	;NO-- READER CHECK & NO ERRORS => STACKER FULL
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 51-2
SSTSCR	(SEND CD-11 STATUS TO -10)

   4340	013504	000403 				BR	22$		;STACKER-FULL-- GO ON
   4341					;
   4342	013506	052737 	000400 	000000G	21$:	BIS	#CR.NSF,CRSTS	;FLAG THAT IT CAN'T BE STACKER FULL
   4343	013514				22$:
   4344	013514				23$:
   4345	013514	012703 	000000G		30$:	MOV	#CDST,R3	;ADDRESS CD CSR
   4346	013520	005721 				TST	(R1)+		;POINT TO FIRST WORD OF DEVICE REGISTERS IN STATUS BLOCK
   4347	013522	012721 	000000C			MOV	#<CDDB+2-CDST>,(R1)+ ;SAVE SIZE OF FOLLOWING BLOCK
   4348	013526	012321 			31$:	MOV	(R3)+,(R1)+	;MOVE A REGISTER
   4349	013530	022701 	000000C			CMP	#CRSTBK+CRSTLN,R1 ;MOVED 'EM ALL?
   4350	013534	101374 				BHI	31$		;NO-- LOOP FOR ALL OF THEM
   4351					;
   4352					; SET UP REGISTERS FOR ..STIN TO SEND BLOCK TO -10:
   4353					;	R0 --	POINTER TO STATUS BLOCK
   4354					;		FIRST WORD IS HEADER: (HIGH BYTE) UNIT # (LOW BYTE) BYTE COUNT OF BLCOK
   4355					;	R1 --	BIT15 (FOR INDIRECT FUNCTION) + FUNCTION CODE (BC.HDS)
   4356					;	R2 --	EVENT FLAG TO SET WHEN BLOCK DONE (EF.CRS)
   4357					;	R3 --	DEVICE CODE (D.CCDR)
   4358					;
   4359	013536	105040 			50$:	CLRB	-(R0)		;HIGH BYTE HEADER: UNIT # (ALWAYS 0)
   4360	013540	112740 	000000G			MOVB	#CRSTLN,-(R0)	;LOW BYTE: BYTE COUNT OF BLOCK (NOT INCLUDING HEADER)
   4361	013544	012701 	100000G			MOV	#BIT15+BC.HDS,R1 ;FUNCTION: HERE IS DEVICE STATUS (INDIRECT FLAVOR)
   4362	013550	012702 	000003 			MOV	#E.FCRS,R2	;EVENT FLAG TO SET WHEN DONE
   4363	013554	012703 	000000G			MOV	#D.CCDR,R3	;DEVICE CODE: CDR (OF COURSE)
   4364	013560	042777 	000004 	000000G		BIC	#EF.CRS,@CREVFG	;CLEAR BUFFER AVAILABLE FLAG
   4365	013566					CALL	..STIN		;SEND TO -10
	013566	004737 	000000G			JSR	PC,..STIN
   4366	013572	103006 				BCC	90$		;OK-- DONE
   4367	013574	052777 	000004 	000000G		BIS	#EF.CRS,@CREVFG	;FAILED-- BUFFER STILL AVAILABLE
   4368	013602	052737 	040000 	000000G		BIS	#CR.SST,CRSTS	;ERROR-- TRY AGAIN LATER
   4369					;
   4370					; ALL DONE
   4371					;
   4372	013610				90$:	RETURN			;ALL DONE FORM SSTSCR
	013610	000207 				RTS	PC
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 52
INITCR	(INITIALIZE CD-11)

   4374						.SBTTL	INITCR	(INITIALIZE CD-11)
   4375					;
   4376					;+
   4377					;
   4378					;	INITCR IS CALLED FROM TASK INITIALIZATION AND FROM POWER-UP
   4379					; ROUTINE TO RESET THE CD-11.
   4380					;
   4381					;-
   4382					;
   4383	013612	042737 	021000 	000000G	INITCR::BIC	#CR.IOP!CR.NXD,CRSTS ;NO LONGER I/O IN PROGRESS, ASSUME DEVICE EXISTS
   4384	013620	012737 	000400 	000000G		MOV	#CDSPWC,@#CDST	;DO POWER-CLEAR
   4385	013626	052777 	000001 	000000G	CRDCLR:	BIS	#EF.CRC,@CREVFG	;FORCE HUNG CHECK
   4386	013634					RETURN
	013634	000207 				RTS	PC
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 53
CD-11 DRIVER COMMON SUBROUTINES MODULE

   4388						.SBTTL	CD-11 DRIVER COMMON SUBROUTINES MODULE
   4389					;
   4390					;                             COPYRIGHT (C) 1975, 1978 BY
   4391					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4392					;
   4393					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4394					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4395					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4396					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4397					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4398					;
   4399					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4400					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4401					;       CORPORATION.
   4402					;
   4403					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4404					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4405					;
   4406					;		MODULE: CD-11 DRIVER COMMON SUBROUTINES
   4407					;
   4408					;		VERSION: 01-00
   4409					;
   4410					;		AUTHOR: TOM PORCHER
   4411					;
   4412					;		DATE: 25-AUG-75
   4413					;
   4414					;
   4415					;	THIS MODULE CONTAINS:
   4416					;
   4417					;	1) $CDINT (CD-11 INTERRUPT SERVICE ROUTINE)
   4418					;
   4419					;	2) ..STCR (START CD-11)
   4420					;
   4421					;	3) ..SPCR (STOP CD-11)
   4422					;
   4423					;	4) ..AKCR (READ CARD)
   4424					;
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 54
$CDINT	(CD-11 INTERRUPT SERVICE)

   4426						.SBTTL	$CDINT	(CD-11 INTERRUPT SERVICE)
   4427					;
   4428					;+
   4429					;
   4430					;	$CDINT IS CALLED FROM THE INTERRUPT VECTOR FOR THE CD-11.
   4431					; IT MERELY SAYS THAT I/O IS DONE BY SETTING CR.IOD IF I/O WAS
   4432					; IN PROGRESS (CR.IOP), AND REQUESTS STATUS IF AN ERROR HAS OCCURED.
   4433					;
   4434					;-
   4435					;
   4436	013636	105737 	000000G		$CDINT:: TSTB	@#CDST		;;;CD-11 READY?
   4437	013642	100025 				BPL	90$		;;;NO-- JUST GO AWAY
   4438	013644	032737 	020000 	000000G		BIT	#CR.IOP,CRSTS	;;;YES-- WERE WE I/O IN PROGRESS (READING)?
   4439	013652	001414 				BEQ	10$		;;;NO-- GO ON (SEE IF ERROR)
   4440	013654	042737 	020000 	000000G		BIC	#CR.IOP,CRSTS	;;;YES-- MUST BE DONE NOW
   4441	013662	005737 	000000G			TST	@#CDCC		;;;DID WE READ A CARD?
   4442	013666	001006 				BNE	10$		;;;NO-- MUST BE ERROR-- SEND STATUS NOW
   4443	013670	052737 	010000 	000000G		BIS	#CR.IOD,CRSTS	;;;SO MAKE TASK KNOW WE ARE DONE
   4444					;
   4445	013676	005737 	000000G			TST	@#CDST		;;;WAS THERE AN ERROR?
   4446	013702	100003 				BPL	20$		;;;NO-- GO ON
   4447					;
   4448	013704	052737 	040000 	000000G	10$:	BIS	#CR.SST,CRSTS	;;;YES-- SEND DEVICE STATUS
   4449	013712				20$:	CALL	IODNCR		;;;SAY I/O DONE TO TASK
	013712	004737 	014002'			JSR	PC,IODNCR
   4450					;
   4451					; ALL DONE WITH INTERRUPT
   4452					;
   4453	013716	000137 	000000G		90$:	JMP	..INTX		;;;FINISH OFF INTERRUPT
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 55
..STCR	(START CD-11)

   4455						.SBTTL	..STCR	(START CD-11)
   4456					;
   4457					;+
   4458					;
   4459					;	..STCR IS CALLED FROM THE QUEUED PROTOCOL TASK ON A REQUEST
   4460					; FOR STATUS.  NO OTHER REQUESTS TO THE CD-11 DRIVER ARE MADE THROUGH
   4461					; ..STCR.
   4462					;
   4463					;	THE STATUS IS REQUESTED TO THE CD-11 DRIVER TASK BY SETTING
   4464					; CR.SST AND EF.CRD.
   4465					;
   4466					; CALLING SEQUENCE:
   4467					;	R0 --	POINTER TO THREAD BLOCK (WILL JUST BE DEALLOCATED)
   4468					;	R2 --	POINTER TO CRTBL (MUST BE CRTBL+0)
   4469					;
   4470					; EXIT CONDITIONS:
   4471					;
   4472					;	NO REGISTERS MODIFIED
   4473					;
   4474					;-
   4475					;
   4476						.ENABLE	LSB
   4477	013722				..STCR::
   4478	013722					CALL	..DECN		;DE-ALLOCATE BLOCK
	013722	004737 	000000G			JSR	PC,..DECN
   4479	013726	020227 	000000G			CMP	R2,#CRTBL+0	;THIS CR0?
   4480	013732	001030 				BNE	99$		;NO-- GO AWAY
   4481	013734	052737 	040000 	000000G		BIS	#CR.SST,CRSTS	;YES-- MAKE STATUS HAPPEN
   4482	013742	000417 				BR	IODNCR		; AND MAKE TASK RECOGNIZE IT
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 56
..SPCR	(STOP CD-11)

   4484						.SBTTL	..SPCR	(STOP CD-11)
   4485					;
   4486					;+
   4487					;
   4488					;	..SPCR IS CALLED FROM THE QUEUED PROTOCOL TASK TO FLUSH
   4489					; INPUT FROM THE CD-11.  ANY I/O THAT IS IN PROGRESS IS STOPPED,
   4490					; AND NO FURTHER DATA IS SENT TO THE -10.
   4491					;
   4492					; CALLING SEQUENCE:
   4493					;	R2 --	POINTER TO CRTBL (MUST BE CRTBL+0)
   4494					;
   4495					; EXIT CONDITIONS:
   4496					;
   4497					; NO REGISTERS MODIFIED
   4498					;
   4499					;-
   4500					;
   4501	013744	020227 	000000G		..SPCR:: CMP	R2,#CRTBL+0	;THIS CR0?????
   4502	013750	001021 				BNE	99$		;NO-- GO AWAY
   4503	013752					CALL	INITCR		;RESET THE CD-11
	013752	004737 	013612'			JSR	PC,INITCR
   4504	013756	042737 	034000 	000000G		BIC	#CR.ACK!CR.IOD!CR.IOP,CRSTS ;SAY WE ARE HAPPY
   4505	013764					RETURN
	013764	000207 				RTS	PC
CRDRV	(CD-11 DRIVER FOR RSX10	MACRO M1110  12-OCT-79 14:00  PAGE 57
..AKCR	(READ CARD)

   4507						.SBTTL	..AKCR	(READ CARD)
   4508					;
   4509					;+
   4510					;
   4511					;	..AKCR IS CALLED FROM THE QUEUED PROTOCOL TASK ON AN ACKNOWLEDGE
   4512					; REQUEST FROM THE -10.  THIS IMPLIES THAT A CARD SHOULD BE READ.
   4513					;
   4514					; CALLING SEQUENCE:
   4515					;	R2 --	POINTER TO CRTBL (MUST BE CRTBL+0)
   4516					;
   4517					; EXIT CONDITIONS:
   4518					;
   4519					; NO REGISTERS MODIFIED
   4520					;
   4521					;-
   4522					;
   4523	013766	020227 	000000G		..AKCR:: CMP	R2,#CRTBL+0	;IS THIS CR0???
   4524	013772	001010 				BNE	99$		;NO-- GIVE UP
   4525	013774	052737 	004000 	000000G		BIS	#CR.ACK,CRSTS	;YES-- SAY TO READ A CARD
   4526					;	BR	IODNCR		;SET I/O DONE TO SAY SOMETHING TO DO TO TASK
   4527					;
   4528					; HERE TO SET I/O DONE (EF.CRD) TO CR TASK TO INDICATE SOMETHING TO DO.
   4529					;  ALSO SIGNIFICANT EVENT TO CAUSE CR TASK TO RUN.
   4530					;
   4531	014002	052777 	000002 	000000G	IODNCR:	BIS	#EF.CRD,@CREVFG	;SET EVENT FLAG
   4532	014010					CALL	..DSEV		; AND MAKE SIGN. EVENT TO WAKE TASK
	014010	004737 	000000G			JSR	PC,..DSEV
   4533	014014				99$:	RETURN			; FROM IODNCR
	014014	000207 				RTS	PC
   4534						.DSABLE	LSB
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 58
..AKCR	(READ CARD)

   4536						.TITLE	INSTAL -- TASK INSTALLER FOR RSX-20F
   4537						.SBTTL	TITLE PAGE
   4538						.IDENT	/010020/
   4539					;
   4540					;                             COPYRIGHT (C) 1975, 1978 BY
   4541					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4542					;
   4543					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4544					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4545					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4546					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4547					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4548					;
   4549					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4550					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4551					;       CORPORATION.
   4552					;
   4553					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4554					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4555					;
   4556					;		MODULE: INSTALL TASK FOR RSX-20F
   4557					;
   4558					;		VERSION: 10-01
   4559					;
   4560					;		AUTHOR: TOM PORCHER
   4561					;
   4562					;		DATE: 1-OCT-75
   4563					;
   4564					;
   4565					;	THIS MODULE CONTAINS:
   4566					;
   4567					;	-- CODE TO INSTALL A TASK IN RSX-20F
   4568					;
   4569					; MODIFICATIONS:
   4570					;
   4571					;	NO.	DATE		PROGRAMMER	PURPOSE
   4572					;	---	----		----------	-------
   4573					;	001	14-MAR-77	R. BELANGER	DEFINE THE END OF "INSTAL"
   4574					;						TO ALLOW DYNAMIC ALLOCATION
   4575					;						OF FREE POOL SPACE
   4576					;	002	30-MAY-78	R. BELANGER	MODIFY INSTAL TO MOUNT BOTH
   4577					;						DX0: AND DX1: AS SY:
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 59
MACROS AND PARAMETERS

   4579						.SBTTL	MACROS AND PARAMETERS
   4580					;
   4581					; SETUP ASSEMBLY CONDITIONS
   4582					;
   4583						.ENABLE	AMA
   4584						.LIST	MEB
   4585					;
   4586					; MISC. MCALL'S
   4587					;
   4588					.MCALL QIOSY$,ALUN$S,QIOW$S,RCVX$S,RQST$S,WSIG$S,.INH0,.ENB0,CALL,RETURN,PUSH,POP,.STKM,$DEF
   4589	014016					$DEF
   4590	014016					QIOSY$
   4591					;
   4592					; MACROS
   4593					;
   4594					.MACRO	MSG	A,B
   4595						.PSECT	TEXT
   4596					$$$=.
   4597						 .ASCIZ	\B\
   4598						.PSECT
   4599						 PUSH	#$$$
   4600						CALL	TYPMSG
   4601					.ENDM	MSG
   4602					;
   4603					.MACRO	ERR	A,B
   4604						MSG	<A>,<B>
   4605					.ENDM	ERR
   4606					;
   4607					.MACRO	ERRF	A,B
   4608						ERR	<A>,<B>
   4609						 BR	CLSFIL
   4610					.ENDM	ERRF
   4611					;
   4612					.MACRO	ERRN	A,B
   4613						ERR	<A>,<B>
   4614						 BR	RETNOD
   4615					.ENDM	ERRN
   4616					;
   4617					; PARAMETERS
   4618					;
   4619		000062 			DEFPRI=	50.			;DEFAULT TASK PRIORITY
   4620					;
   4621		000050 			U.SZ=50				;LOCAL DEF OF U.SZ
   4622		000001 			SF.TA=1		;LOCAL DEF OF TASK ACTIVE
   4623		040000 			SF.IR=40000	;LOCAL DEF FOR INSTAL REQUESTED
   4624					; LOGICAL UNIT NUMBER ASSIGNMENTS
   4625					;
   4626		000001 			CTYLUN=	1			;FOR I/O TO THE CTY **** MUST BE UNIT 1 ****
   4627		000002 			TSKLUN=	2			;FOR I/O TO TASK IMAGE FILE
   4628					;
   4629					; EVENT FLAGS
   4630					;
   4631		000001 			E.FQIO=	1			;WAIT FOR QUEUE I/O TO COMPLETE
   4632		000001 			 EF.QIO=BIT0
   4633					;
   4634					; HEADER BLOCK DEFINITIONS
   4635					;
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 59-1
MACROS AND PARAMETERS

   4636		000076 			H.IPC=	76			;INITIAL PC
   4637		000100 			H.ISP=	100			;INITIAL SP
   4638		000130 			H.NLUN=	130			;NUMBER OF LUNS FOR TASK
   4639		000132 			H.LUN=	132			;START OF LUN TABLE AREA
   4640					;
   4641					; LABEL BLOCK DEFINITIONS
   4642					;
   4643		000000 			L$BTSK=	0			;TASK NAME IN RAD50 (TWO WORDS)
   4644		000004 			L$BPAR=	4			;PARTITION NAME IN RAD50 (TWO WORDS)
   4645		000010 			L$BFLG=	10			;FLAG WORD
   4646		000012 			L$BPRI=	12			;DEFAULT TASK RUN PRIORITY
   4647		000014 			L$BLDZ=	14			;LOAD SIZE OF TASK IMAGE
   4648		000016 			L$BMXZ=	16			;MAX SIZE OF TASK
   4649		000020 			L$BSA=	20			;BASE ADDRESS OF TASK
   4650		000022 			L$BHRB=	22			;HEADER RELATIVE BLOCK IN TASK FILE
   4651		000024 			L$BBLK=	24			;# BLOCKS IN LABEL GROUP
   4652					;
   4653					; ACCESS CONTROL BITS
   4654					;
   4655		000200 			AC.ENA=	BIT7			;ENABLE ACCESS
   4656					;
   4657					; FILENAME BLOCK OFFSETS
   4658					;
   4659		000000 			N.FID=	0			;FILE-ID / SEQUENCE #
   4660		000006 			N.FNAM=	6			;FILENAME IN RADIX 50 (3 WORDS)
   4661		000014 			N.FTYP=	14			;FILE TYPE IN RADIX 50
   4662		000016 			N.FVER=	16			;FILE VERSION NUMBER
   4663		000020 			N.STAT=	20			;FLAGS
   4664		000022 			N.NEXT=	22			;CONTEXT SAVE FOR .FIND
   4665		000024 			N.DID=	24			;DIRECTORY ID
   4666		000034 			 S.DRFN=34			;WORDS OF FILE-NAME BLOCK USED FOR IO.FNA
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 60
TASK DATA

   4668						.SBTTL	TASK DATA
   4669					;
   4670					; TASK HEADER AND STACK
   4671					;
   4672	014016				INSHD::	.STKM	0,0,0,0,0,0,40,INSTAL,174000,INSTK
	014064	000000 	000000 	000000 		.WORD	0,0,0,0
	014072	000000
	014112	174000 	014636'	014276'		.WORD	174000,INSTAL,INSTK
	014146	000005 				.WORD	5
	014150	000000G				.WORD	TTPEN
	014152	000000 				.WORD	0
	014154	000000 				.WORD	0
	014156	000000 				.WORD	0
	014160	000000 				.WORD	0
	014162	000000 				.WORD	0
	014164	000000 				.WORD	0
	014166	000000 				.WORD	0
	014170	000000 				.WORD	0
	014172	000000 				.WORD	0
	014174	000000 				.WORD	0
	014276	000000 				.WORD	0
	014300	000000 				.WORD	0
	014302	000000 				.WORD	0
	014304	000000 				.WORD	0
	014306	000000 				.WORD	0
	014310	000000 				.WORD	0
	014312	014636'				.WORD	INSTAL
	014314	174000 				.WORD	174000
   4673					;
   4674	014316					.BLKB	40
   4675	014356				EXSP:
   4676					;
   4677					; LOCAL DATA
   4678					;
   4679	014356	   000 			DXFLAG:	.BYTE	0		; +++002 SECOND DX: MOUNT FLAG
   4680	014357	   000 			SYFLAG:	.BYTE	0		; +++002 SY: MOUNTED FLAG
   4681	014360				RCVBLK:	.BLKW	2		;RECEIVE DATA BUFFER: TRASH
   4682	014364				REQBLK:	.BLKW	13.		;REQUEST BLOCK FROM EXEC
   4683		014376'			STDADR=REQBLK+12		;ADDRESS OF OUR SYSTEM TASK DIRECTORY ENTRY
   4684	014416				PUDADR:	.BLKW	1		;PUD ENTRY ADDRESS OF DEVICE WHERE TASK FILE WAS FOUND
   4685	014420				LBLBLK:	.BLKW	1		;CURRENT VIRTUAL BLOCK NUMBER TO READ LABEL GROUP
   4686	014422				LBLNUM:	.BLKW	1		;NUMBER OF BLOCKS IN LABEL GROUP
   4687	014424				LBLBUF:	.BLKW	1		;ADDRESS OF LABEL BUFFER
   4688	014426				LBLBFE:	.BLKW	1		;ADDRESS OF END OF BUFFER (LBLBUF)+512.
   4689	014430				HDRBLK:	.BLKW	1		;CURRENT VIRTUAL BLOCK NUMBER TO READ HEADER
   4690	014432				HDRBUF:	.BLKW	1		;ADDRESS OF HEADER BLOCK BUFFER
   4691	014434				HDRBFE:	.BLKW	1		;ADDRESS OF END OF HEADER BUFFER
   4692	014436				FILBLK:	.BLKB	S.DRFN		;FILE-NAME BLOCK FOR TASK IMAGE FILE
   4693	014472				FILADR:	.BLKW	2		;STATISTISTICS BLOCK: DISK ADDRESS
   4694	014476				QIOSTS:	.BLKW	2		;I/O STATUS
   4695	014502				TYPBUF:	.BLKB	60.		;BUFFER FOR CTY OUTPUT
   4696					;
   4697					; PURE DATA
   4698					;
   4699	014576	   367 			ATCBLK:	.BYTE	-9.		;ATTIBUTE CONTROL: STATISTICS BLOCK, READ
   4700	014577	   004 				.BYTE	4.		;4 BYTES OF INFO
   4701	014600	014472'				.WORD	FILADR		;WHERE TO INFO TO
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 60-1
TASK DATA

   4702	014602	   000 	   000 			.BYTE	0,0		;END OF ATTRIBUTE CONTROL BLOCK
   4703					;
   4704	014604	   001 			MNTBLK:	.BYTE	1		;ACP CONTROL: MOUNT FUNCTION
   4705	014605	   001 				.BYTE	1		;STRING LENGTH: 1
   4706	014606	014610'				.WORD	1$		;ADDRESS OF STRING
   4707	014610	   072 			1$:	.ASCII	/:/
   4708						.EVEN
   4709					;
   4710					; DEVICE CONVERSION TABLE
   4711					;
   4712	014612	   124 	   111 	   124 	CNVTBL:	.ASCII	/TI//TT/
	014615	   124
   4713	014616	   103 	   117 	   124 		.ASCII	/CO//TT/
	014621	   124
   4714	014622	   103 	   111 	   124 		.ASCII	/CI//TT/
	014625	   124
   4715	014626	   103 	   114 	   114 		.ASCII	/CL//LP/
	014631	   120
   4716	014632	000000 	000000 			.WORD	0,0
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 61
FIND THE TASK FILE

   4718						.SBTTL	FIND THE TASK FILE
   4719					;
   4720					;
   4721					; HERE ON A REQUEST TO INSTALL A TASK FROM THE EXECUTIVE
   4722					;
   4723					; A SEND DATA PACKET IS SENT TO THIS TASK .INST. IN REQUEST
   4724					;  FOR A TASK WHICH IS NOT CURRENTLY INSTALLED. THE PACKET
   4725					;  HAS THE FOLLOWING FORMAT:
   4726					;
   4727					; WORD 0	TASK NAME IN RADIX 50 FORMAT
   4728					;      1	 (SECOND HALF)
   4729					;      2	PARTITION NAME IN RADIX 50 (IF SPECIFIED, OTHERWISE 0)
   4730					;      3	 (SECOND HALF)
   4731					;      4	RUN PRIORITY (IF SPECIFIED, OTHERWISE 0)
   4732					;	5	STD ADDRESS
   4733					;
   4734					;
   4735					; GET THE PACKET, OR EXIT IF NOTHING TO DO
   4736					;
   4737	014636				INSTAL::
   4738	014636	012706 	014356'			MOV	#EXSP,SP	;;ADD EXTRA STACK SPACE
   4739	014642					RCVX$S	,#RCVBLK	;;GET THE REQUEST OR EXIT IF NONE
	014642	012746 	014360'			MOV	#RCVBLK,-(SP)
	014646	005046 				CLR	-(SP)
	014650	005046 				CLR	-(SP)
	014652	012746 				MOV	(PC)+,-(SP)
	014654	   023 	   004 			.BYTE	19.,$$$T1
	014656	104375 				EMT	375
   4740	014660	103766 				BCS	INSTAL		;OOPS-- TRY AGAIN
   4741					;
   4742	014662					CALL	CLRBUF		; AND NO BUFFERS ALLOCATED
	014662	004737 	016432'			JSR	PC,CLRBUF
   4743	014666	105037 	014356'			CLRB	DXFLAG		; +++002 RESET THE RX01 FLAG
   4744					;
   4745					; SETUP TO LOOK ON DEVICE SY FOR THE TASK FIRST
   4746					;
   4747	014672	012705 	177730G			MOV	#.PUDBA-U.SZ,R5	;POINT TO START OF PUD'S TO SCAN IF NOT ON SY
   4748									;MINUS 1 FOR SY
   4749	014676	012700 	054523 			MOV	#"SY,R0		; +++002 DEVICE NAME (U.DN) TO R0
   4750	014702	005001 				CLR	R1		; +++002 UNIT NUMBER (U.UN) TO R1
   4751					;
   4752	014704				MNTSYD:				; +++002
   4753	014704					ALUN$S	#TSKLUN,R0,R1	; +++002 ASSIGN DEVICE SY0 TO TASK LUN
	014704	010146 				MOV	R1,-(SP)
	014706	010046 				MOV	R0,-(SP)
	014710	012746 	000002 			MOV	#TSKLUN,-(SP)
	014714	012746 				MOV	(PC)+,-(SP)
	014716	   007 	   004 			.BYTE	7.,4
	014720	104375 				EMT	375
   4754	014722	103557 				BCS	TASKNF		;NO DICE-- JUST TRY PUD SCAN
   4755					;
   4756	014724	013704 	000000G			MOV	.CRTSK,R4	;GOT IT-- GET ADDRESS
   4757	014730	016404 	000000G			MOV	A.HA(R4),R4	; OF OUR HEADER TO
   4758	014734	016404 	000136 			MOV	H.LUN+<4*<TSKLUN-1>>+0(R4),R4 ; FIND PUD ADDRESS OF SY
   4759	014740	016404 	000000G			MOV	U.RP(R4),R4	; BUT GET THE REAL DEVICE PUD ENTRY
   4760	014744	010437 	014416'			MOV	R4,PUDADR	;SAVE THIS PUD ADDRESS IN CASE WE DO FIND THE TASK
   4761	014750	005764 	000000G			TST	U.VA(R4)	;IS SY MOUNTED?
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 61-1
FIND THE TASK FILE

   4762	014754	001031 				BNE	SYMNTD		; +++002 YES -- DO THE SECOND FLOPPY CHECK
   4763					;
   4764					; SY IS NOT MOUNTED.  WE MUST MOUNT IT BEFORE WE CAN FIND ANYTHING
   4765					;
   4766					; NOTE--
   4767					;
   4768					;	IF THE SY: DEVICE BEING MOUNTED IS A FLOPPY (DX:) INSTAL WILL
   4769					;	ATTEMPT TO MOUNT THE OTHER UNIT AS WELL.
   4770					;
   4771	014756	012701 	014364'			MOV	#RCVBLK+4,R1	;GET A SCRATCH AREA
   4772	014762	012741 				MOV	(PC)+,-(R1)	;STORE
   4773	014764	003310 				 .RAD50	/ACP/		; THE NAME OF AN ACP
   4774	014766	016441 	000000G			MOV	U.DACP(R4),-(R1) ;  AND THE NAME OF THE ACP FOR THIS DEVICE
   4775	014772					CALL	..FSTD		;FIND THE STD ENTRY ADDRESS OF THE ACP
	014772	004737 	000000G			JSR	PC,..FSTD
   4776	014776	010264 	000000G			MOV	R2,U.ACP(R4)	;STORE THE STD ADDRESS OF THE ACP
   4777					;
   4778	015002	012700 	014010 			MOV	#IO.APV,R0	;SET TO DO PRIVILEGED ACP CONTROL
   4779	015006	005001 				CLR	R1		;NO FILE-ID
   4780	015010	012702 	014604'			MOV	#MNTBLK,R2	;ACP CONTROL FUNCTION BLOCK TO MOUNT
   4781	015014	005003 				CLR	R3		;NO ACCESS
   4782	015016	005004 				CLR	R4		;NO FILE-NAME BLOCK
   4783	015020					CALL	FILQIO		;DO A MOUNT ON SY
	015020	004737 	016732'			JSR	PC,FILQIO
   4784	015024	103005 				BCC	SYMNTD		;SUCCESS-- SAY WE DID THE MOUNT SO WE DON'T SCARE ANYBODY
   4785	015026					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
	015026	012746 	000000'			MOV	#$$$,-(SP)
	015032	004737 	017012'			JSR	PC,TYPMSG
   4786	015036	000511 				BR	TASKNF		;CERTAINLY NOT FOUND
   4787					;
   4788	015040				SYMNTD:
   4789	015040	013704 	014416'			MOV	PUDADR,R4	; +++002 PUD ADDRESS TO R4
   4790	015044	016400 	000000G			MOV	U.DN(R4),R0	; +++002 DEVICE NAME TO R0
   4791	015050	016401 	000000G			MOV	U.UN(R4),R1	; +++002 UNIT NUMBER TO R1
   4792	015054	022700 	054104 			CMP	#"DX,R0		; +++002 DID WE TRY TO MOUNT A FLOPPY??
   4793	015060	001011 				BNE	SYMNT1		; +++002 NO -- GO ON
   4794	015062	105737 	014356'			TSTB	DXFLAG		; +++002 YES -- HAVE WE DONE BOTH??
   4795	015066	001006 				BNE	SYMNT1		; +++002 YES -- GO ON
   4796	015070	105237 	014356'			INCB	DXFLAG		; +++002 NO -- MARK SECOND TIME AROUND
   4797	015074	005201 				INC	R1		; +++002 SET UP FOR "OTHER" FLOPPY
   4798	015076	042701 	177776 			BIC	#^C1,R1		; +++002 SO
   4799	015102	000700 				BR	MNTSYD		; +++002 AND DO IT...
   4800						;
   4801	015104				SYMNT1:				; +++002
   4802	015104	105737 	014357'			TSTB	SYFLAG		; +++002 SY: ALREADY MOUNTED??
   4803	015110	001006 				BNE	FNDFIL		; +++002 YES -- GO ON
   4804	015112					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 M1110  12-OCT-79 14:00  PAGE 61-2
FIND THE TASK FILE

	015112	012746 	000020'			MOV	#$$$,-(SP)
	015116	004737 	017012'			JSR	PC,TYPMSG
   4805	015122	105237 	014357'			INCB	SYFLAG		; +++002 MARK MOUNT DONE
   4806					;
   4807					; SET UP FILENAME BLOCK TO LOOK FOR [5,5] DIRECTORY IN MFD
   4808					;
   4809	015126				FNDFIL:
   4810	015126	012702 	014444'			MOV	#FILBLK+N.FNAM,R2 ;POINT TO FILE-NAME BLOCK
   4811	015132	012712 				MOV	(PC)+,(R2)	;SET FILENAME TO
   4812	015134	140123 				 .RAD50	/005/		; 005005
   4813	015136	012222 				MOV	(R2)+,(R2)+	;  BOTH HALVES
   4814	015140	005022 				CLR	(R2)+		;ONLY SIX CHARS
   4815	015142	012722 				MOV	(PC)+,(R2)+	;SET TYPE TO DIRECTORY
   4816	015144	015172 				 .RAD50	/DIR/		; FILE
   4817	015146	005022 				CLR	(R2)+		;VERSION, DON'T CARE
   4818	015150	005022 				CLR	(R2)+		;NO FLAGS
   4819	015152	005022 				CLR	(R2)+		;UNKOWN STUFF
   4820	015154	012712 	177777 			MOV	#-1,(R2)	;DIRECTORY ID:
   4821	015160	012222 				MOV	(R2)+,(R2)+	; (-1,-1) IS MFD
   4822	015162	012722 				MOV	(PC)+,(R2)+	;ALSO SET OWNER TO US
   4823	015164	   005 	   005 			 .BYTE	5,5		;THE UIC
   4824					;
   4825	015166					CALL	FILFNA		;LOOK UP DIRECTORY FOR [5,5]
	015166	004737 	016562'			JSR	PC,FILFNA
   4826	015172	103433 				BCS	TASKNF		;GIVE UP NOW IF NO DIRECTORY FOR US
   4827					;
   4828					; SETUP FILE-NAME BLOCK TO <TASK-NAME>.TSK[5,5]
   4829					;
   4830	015174	012701 	014364'			MOV	#REQBLK,R1	;ADDRESS REQUEST BLOCK
   4831	015200	012702 	014444'			MOV	#FILBLK+N.FNAM,R2 ; AND FILE-NAME BLOCK FOR LOOKUP
   4832	015204	021127 				CMP	(R1),(PC)+	;IS THIS
   4833	015206	131574 				 .RAD50	/.../		; AN MCR FUNCTION TASK?
   4834	015210	001004 				BNE	20$		;NO-- JUST LOOKUP THE TASK NAME
   4835	015212	005721 				TST	(R1)+		;YES-- SKIP THE DOTS
   4836	015214	012122 				MOV	(R1)+,(R2)+	;COPY THE LAST THREE CHARACTERS
   4837	015216	005022 				CLR	(R2)+		; AS THE WHOLE NAME
   4838	015220	000402 				BR	25$		;PROCEED.
   4839					;
   4840	015222				20$:
   4841	015222	012122 				MOV	(R1)+,(R2)+	;COPY TASK NAME
   4842	015224	012122 				MOV	(R1)+,(R2)+	; AS FILE NAME
   4843	015226				25$:
   4844	015226	005022 				CLR	(R2)+		;ONLY SIX CHARACTERS
   4845	015230	012722 				MOV	(PC)+,(R2)+	;SET FILE TYPE
   4846	015232	100003 				 .RAD50	/TSK/		; TO A TASK FILE
   4847	015234	005022 				CLR	(R2)+		;NO VERSION CARE
   4848	015236	005022 				CLR	(R2)+		;NO FLAGS
   4849	015240	005022 				CLR	(R2)+		;NO NOTHING
   4850	015242	012701 	014436'			MOV	#FILBLK+N.FID,R1 ;POINT TO FILE-ID OF DIRECTORY
   4851	015246	012122 				MOV	(R1)+,(R2)+	;COPY FILE-ID
   4852	015250	012122 				MOV	(R1)+,(R2)+	; SEQ #
   4853	015252	012122 				MOV	(R1)+,(R2)+	; OWNER
   4854					;
   4855					; DO A FIND FILE IN DIRECTORY FUNCTION TO GET FILE ID
   4856					;
   4857	015254					CALL	FILFNA		;FIND THE TASK (IF IT'S THERE)
	015254	004737 	016562'			JSR	PC,FILFNA
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 61-3
FIND THE TASK FILE

   4858	015260	103051 				BCC	TSKFND		;FOUND FILE-- GO READ IT AND CHECK IT OUT
   4859					;
   4860					; THE TASK FILE WAS NOT FOUND ON THIS DEVICE.  CONTINUE TO SCAN PUD
   4861					;  FOR ALL FILES-11 DEVICES SUCH THAT WE FIND THE TASK.
   4862					;
   4863	015262				TASKNF:
   4864	015262	062705 	000050 			ADD	#U.SZ,R5	;BUMP TO NEXT PUD ENTRY
   4865	015266	020527 	000000G			CMP	R5,#.PUDEA	;ARE WE AT THE END OF THE PUD?
   4866	015272	103027 				BHIS	TNFERR		;YES-- TASK NOT FOUND
   4867	015274	026505 	000000G			CMP	U.RP(R5),R5	;THIS DEVICE REDIRECTED?
   4868	015300	001370 				BNE	TASKNF		;YES-- WE WILL FIND THE REAL DEVICE
   4869	015302	132765 	000000G	000000G		BITB	#UF.TL,U.FB(R5)	;TASK LOADS ALLOWED FROM THIS DEVICE?
   4870	015310	001764 				BEQ	TASKNF		;NO-- DON'T EVEN TRY
   4871	015312	005765 	000000G			TST	U.VA(R5)	;VOLUME MOUNTED?
   4872	015316	001761 				BEQ	TASKNF		;NO-- DON'T TRY TO FIND FILE
   4873					;
   4874	015320					ALUN$S	#TSKLUN,U.DN(R5),U.UN(R5) ;YES-- ASSIGN TH CURRENT DEVICE TO US
	015320	016546 	000000G			MOV	U.UN(R5),-(SP)
	015324	016546 	000000G			MOV	U.DN(R5),-(SP)
	015330	012746 	000002 			MOV	#TSKLUN,-(SP)
	015334	012746 				MOV	(PC)+,-(SP)
	015336	   007 	   004 			.BYTE	7.,4
	015340	104375 				EMT	375
   4875	015342	103747 				BCS	TASKNF		;THIS SHOULD REALLY NEVER HAPPN
   4876	015344	010537 	014416'			MOV	R5,PUDADR	;OK-- SAVE THIS PUD ADDRESS IN CASE WE FIND THE FILE
   4877	015350	000666 				BR	FNDFIL		;OK-- GO LOOK FOR THE TASK FILE
   4878					;
   4879	015352				TNFERR:
   4880	015352					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
	015352	012746 	000033'			MOV	#$$$,-(SP)
	015356	004737 	017012'			JSR	PC,TYPMSG
   4881	015362	000137 	016266'			JMP	RETNOD		;GIVE UP
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 62
INITIALIZE TASK FILE

   4883						.SBTTL	INITIALIZE TASK FILE
   4884					;
   4885					; FILE ERRORS END UP HERE, GOING ON THERE WAY TO THERE
   4886					;
   4887	015366	000137 	016252'		FILERA:	JMP	FILERR		;OOPS
   4888					;
   4889					; ONE OF THE NODE/BUFFER REQUESTS FAILED-- GIVE ALL OF THEM BACK AND WAIT
   4890					;
   4891	015372				BUFAIL:	CALL	RETBUF		;RETURN ALL BUFFERS
	015372	004737 	016376'			JSR	PC,RETBUF
   4892	015376					WSIG$S			;WAIT FOR FREE
	015376	012746 				MOV	(PC)+,-(SP)
	015400	   061 	   001 			.BYTE	49.,1
	015402	104375 				EMT	375
   4893					;
   4894					; HERE WHEN A TASK FILE FOUND
   4895					;
   4896					; GET TWO BUFFERS FOR THE HEADER AND LABEL BLOCKS
   4897					;
   4898	015404	012700 	000000G		TSKFND:	MOV	#.BGBUF,R0	;POINT TO BIG FREE SPACE
   4899	015410	012701 	001000 			MOV	#512.,R1	;SET TO GET A BLOCK
   4900	015414					CALL	..ALC2		;GET ONE
	015414	004737 	000000G			JSR	PC,..ALC2
   4901	015420	103764 				BCS	BUFAIL		;FAILED-- RELEASE NODE AND WAIT
   4902	015422	010037 	014424'			MOV	R0,LBLBUF	;OK-- STORE THE ADDRESS FOR LABEL BLOCK BUFFER
   4903	015426	060100 				ADD	R1,R0		;GET END ADDRESS, TOO
   4904	015430	010037 	014426'			MOV	R0,LBLBFE	;SAVE THAT AS END OF BLOCK
   4905	015434	012700 	000000G			MOV	#.BGBUF,R0	;POINT TO BIG FREE LIST HEAD
   4906					;
   4907	015440					CALL	..ALC2		;GET A HEADER BUFFER, TOO
	015440	004737 	000000G			JSR	PC,..ALC2
   4908	015444	103752 				BCS	BUFAIL		;NONE-- GIVE IT ALL AWAY
   4909	015446	010037 	014432'			MOV	R0,HDRBUF	;GOT IT-- SAVE ADDRESS OF BLOCK
   4910	015452	060100 				ADD	R1,R0		;GET END, TOO
   4911	015454	010037 	014434'			MOV	R0,HDRBFE	;SAVE THE END OF HEADER BUFFER
   4912					;
   4913					; DO AN ACCESS FOR READ, WRITE ON THE TASK FILE THAT WE FOUND
   4914					;
   4915	015460	012700 	007000 			MOV	#IO.ACW,R0	;DO AN ACCESS FOR READ,WRITE
   4916	015464	012701 	014436'			MOV	#FILBLK+N.FID,R1 ;FILE BLOCK NOW HAS FILE-ID, SEQ# IN IT
   4917	015470	012702 	014576'			MOV	#ATCBLK,R2	;ATTRRIBUTE CONTROL BLOCK TO GET DISK ADDR OF FILE
   4918	015474	012703 				MOV	(PC)+,R3	;ENABLE
   4919	015476	   000 	   200 			 .BYTE	0,AC.ENA	; ACCESS
   4920	015500	005004 				CLR	R4		;NO FILE-NAME BLOCK NOW
   4921	015502					CALL	FILQIO		;DO THE ACCESS
	015502	004737 	016732'			JSR	PC,FILQIO
   4922	015506	103727 				BCS	FILERA		;NO DICE-- GIVE UP
   4923					;
   4924					; READ THE FIRST LABEL BLOCK AND THE FIRST BLOCK OF THE TASK HEADER
   4925					;
   4926	015510	005037 	014420'			CLR	LBLBLK		;START WITH BLOCK 0 (WILL BUMP TO VBN 1)
   4927	015514					CALL	REDLBL		;READ THE LABEL BLOCK
	015514	004737 	016660'			JSR	PC,REDLBL
   4928	015520	103722 				BCS	FILERA		;ERROR-- REPORT IT
   4929					;
   4930	015522	016137 	000022 	014430'		MOV	L$BHRB(R1),HDRBLK ;GET FIRST BLOCK OF HEADER
   4931	015530					CALL	REDHDR		;READ THE FIRST BLOCK OF THE HEADER
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 62-1
INITIALIZE TASK FILE

	015530	004737 	016616'			JSR	PC,REDHDR
   4932	015534	103714 				BCS	FILERA		;THAT'S-A-NO-GOOD
   4933					;	BR	SETSTD		;OK-- SET UP THE STD
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 63
SETUP STD ENTRY

   4935						.SBTTL	SETUP STD ENTRY
   4936					;
   4937					; WE HAVE THE LABEL BLOCK OF THE TASK FILE AND THE FIRST HEADER BLOCK
   4938					;	R1 --	ADDRESS OF LABEL BLOCK BUFFER
   4939					;	R2 --	ADDRESS OF HEADER BLOCK BUFFER
   4940					;
   4941	015536	013704 	014376'		SETSTD:	MOV	STDADR,R4	;ADDRESS OUR NEW-FOUND STD
   4942					;
   4943	015542	012703 	014370'			MOV	#REQBLK+4,R3	;POINT TO THE REQUEST INFO BLOCK
   4944	015546	022424 				CMP	(R4)+,(R4)+	;MOVE OVER NAME
   4945	015550	022121 				CMP	(R1)+,(R1)+	;(L$BTSK+0) (L$BTSK+2) SKIP OVER TASK NAME IN LABEL BLOCK
   4946					;
   4947					; FIND WHICH PARTITION TO INSTALL THE TASK INTO
   4948					; IF REQUEST DID NOT SPECIFY ONE, USE THE ONE SPECIFIED IN THE TASK FILE
   4949					;
   4950	015552	005713 				TST	(R3)		;PARTITION SPECIFIED IN REQUEST?
   4951	015554	001001 				BNE	20$		;YES-- LOOK FOR THAT ONE
   4952	015556	010103 				MOV	R1,R3		;NO-- (L$BPAR) USE PARTITION FROM TASK FILE
   4953					;
   4954					; FIND THE PARTITION WHERE WE BELONG
   4955					;
   4956	015560	022121 			20$:	CMP	(R1)+,(R1)+	;(L$BPAR+0) (L$BPAR+2) SKIP OVER PARTITION NAME IN LABEL
   4957	015562	012705 	000000G			MOV	#.TPDBA,R5	;START AT BEGINNING OF THE TASK PARTITION DIRECTORY
   4958					;
   4959	015566	026513 	000000G		21$:	CMP	T.PN+0(R5),(R3)	;FIRST HALF OF NAME MATCH?
   4960	015572	001004 				BNE	25$		;NO-- GO ON TO NEXT ENTRY
   4961	015574	026563 	000002G	000002 		CMP	T.PN+2(R5),2(R3) ;YES-- SECOND HALF MATCH?
   4962	015602	001432 				BEQ	PARFND		;YES-- WE FOUND THE PARTITION
   4963					;
   4964	015604	062705 	000000G		25$:	ADD	#T.SZ,R5	;NO-- BUMP TO NEXT ENTRY IN TPD
   4965	015610	020527 	000000G			CMP	R5,#.TPDEA	;ARE WE AT THE END OF THE DIRECTORY?
   4966	015614	103764 				BLO	21$		;NO-- KEEP LOOKING FOR OUR PARTITION
   4967	015616	010324 				MOV	R3,(R4)+	;YES-- PARTITION NOT FOUND-- SAVE ADDR OF NAME FOR ERR
   4968	015620					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
	015620	012746 	000052'			MOV	#$$$,-(SP)
	015624	004737 	017012'			JSR	PC,TYPMSG
	015630	000416 				 BR	CLSFIL
   4969					;
   4971	015632				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
	015632	012746 	000076'			MOV	#$$$,-(SP)
	015636	004737 	017012'			JSR	PC,TYPMSG
	015642	000411 				 BR	CLSFIL
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 63-1
SETUP STD ENTRY

   4973					;
   4974	015644				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
	015644	012746 	000125'			MOV	#$$$,-(SP)
	015650	004737 	017012'			JSR	PC,TYPMSG
	015654	000404 				 BR	CLSFIL
   4975					;
   4976	015656				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
	015656	012746 	000142'			MOV	#$$$,-(SP)
	015662	004737 	017012'			JSR	PC,TYPMSG
   4977					;
   4978	015666	000575 			CLSFIL:	BR	FILERX		;CLOSE FILE IF FILE OPERN & ERROR
   4979					;
   4980					; PARTITION FOUND-- SAVE THE ADDRESS IN THE STD AND CHECK IT OUT
   4981					;
   4982	015670	010524 			PARFND:	MOV	R5,(R4)+	;(S.TD) SET ADDRESS OF TPD ENTRY
   4983					;
   4984	015672	022121 				CMP	(R1)+,(R1)+		;(L$BFLG) SKIP TASK FLAGS
   4985	015674	005724 				TST	(R4)+		;(S.TF) FLAG TASK TO RETSTE ON EXIT
   4986					;
   4987	015676	112724 	000062 			MOVB	#DEFPRI,(R4)+	;NONE-- USE DEFAULT
   4988					;
   4989	015702	013700 	014416'			MOV	PUDADR,R0	;GET THE ADDRESS WHERE WE FOUND OUR FILE
   4990	015706	012703 	177777 			MOV	#-1,R3		;START THE COUNT AT ZERO
   4991	015712	162700 	000000G			SUB	#.PUDBA,R0	;MAKE R0 INDEX INTO PUD
   4992	015716	005203 			30$:	INC	R3		;BUMP THE INDEX
   4993	015720	162700 	000050 			SUB	#U.SZ,R0	;DIVIDE PUD ADDRESS
   4994	015724	002374 				BGE	30$		; BY THE ENTRY SIZE
   4995	015726	110324 				MOVB	R3,(R4)+	;(S.DI) SYSTEM DISK INDICATOR
   4996					;
   4997	015730	016524 	000000G			MOV	T.BA(R5),(R4)+	;(S.BA) BASE ADDRESS OF TASK (NO KT-11)
   5001	015734	012114 				MOV	(R1)+,(R4)	;(L$BLDZ) (S.LZ) LOAD SIZE OF TASK
   5002	015736	006314 				ASL	(R4)		;MAKE IT REAL ADDRESS (*64)
   5003	015740	006314 				ASL	(R4)		; . .
   5004	015742	006314 				ASL	(R4)		; . .
   5005	015744	006314 				ASL	(R4)		; . .
   5006	015746	006314 				ASL	(R4)		; . .
   5007	015750	006324 				ASL	(R4)+		; . .
   5009	015752	012114 				MOV	(R1)+,(R4)	;(L$BMXZ) (S.MZ) MAXIMUM SIZE OF TASK
   5011	015754	006314 				ASL	(R4)		;MAKE REAL ADDRESS (*64)
   5012	015756	006314 				ASL	(R4)		; . .
   5013	015760	006314 				ASL	(R4)		; . .
   5014	015762	006314 				ASL	(R4)		; . .
   5015	015764	006314 				ASL	(R4)		; . .
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 63-2
SETUP STD ENTRY

   5016	015766	006314 				ASL	(R4)		; . .
   5018	015770	026524 	000000G			CMP	T.PZ(R5),(R4)+	;WILL TASK FIT IN PARTITION SPECIFIED?
   5019	015774	103723 				BLO	TTBERR		;NO-- DON'T TRY TO INSTALL IT
   5021	015776	026521 	000000G			CMP	T.BA(R5),(R1)+	;(L$BSA) IS TASK ADDRESS SAME AS PARTITION ADDRESS?
   5022	016002	001313 				BNE	IPAERR		;NO-- DON'T INSTALL IT
   5026					;
   5027	016004	016224 	000076 			MOV	H.IPC(R2),(R4)+	;(S.PC) SET INTIAL PC FROM HEADER
   5028	016010	016224 	000100 			MOV	H.ISP(R2),(R4)+	;(S.SP) ALSO INITIAL SP
   5029	016014	022424 				CMP	(R4)+,(R4)+	;MOVE OVER SEND/REQUEST LISTHEAD
   5030	016016	005024 				CLR	(R4)+		;(S.SS) SST VECTOR TABLE ADDRESS
   5031					;
   5032	016020	013714 	014472'			MOV	FILADR+0,(R4)	;(S.DL+0) DISK ADDRESS OF TASK IMAGE
   5033	016024	012400 				MOV	(R4)+,R0	;COPY IT IN CASE IT'S ZERO
   5034	016026	013714 	014474'			MOV	FILADR+2,(R4)	;(S.DL+2) SECOND HALF OF DISK ADDRESS
   5035	016032	051400 				BIS	(R4),R0		;WERE BOTH WORDS ZERO?
   5036	016034	001710 				BEQ	TNCERR		;YES-- TASK FILE IS NOT CONTIGUOUS
   5037	016036	062114 				ADD	(R1)+,(R4)	;(L$BHRB) + RELATIVE BLOCK IN FILE= REAL ADDRESS
   5038	016040	005544 				ADC	-(R4)		;ADD THE CARRY BACK TO HIGH ORDER WORD
   5039					;
   5040	016042	012137 	014422'			MOV	(R1)+,LBLNUM	;(L$BBLK) SAVE # BLOCKS IN LABEL GROUP FOR LATER
   5041					;	BR	SETLUN		;NOW SET UP THE LUN'S
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 64
SETUP LOGICAL UNIT TABLE FOR TASK

   5043						.SBTTL	SETUP LOGICAL UNIT TABLE FOR TASK
   5044					;
   5045					; LOOP THROUGH SECOND AND THIRD LABEL BLOCKS FOR ALL 255 LUNS
   5046					;	R2 --	ADDRESS OF HEADER BLOCK BUFFER
   5047					;
   5048	016046	062702 	000130 		SETLUN:	ADD	#H.NLUN,R2	;POINT TO # LUNS, AND LUN TABLE IN HEADER
   5049	016052	012205 				MOV	(R2)+,R5	;(H.NLUN) GET # LUNS TO SET UP, POINT TO LUN TABLE IN HEADER
   5050	016054	001471 				BEQ	80$		;NONE-- JUST CLOSE FILE
   5051	016056	013701 	014426'			MOV	LBLBFE,R1	;FORCE READ OF NEXT LABEL BLOCK
   5052					;
   5053					; SEE IF WE MUST WRITE OUT THIS BLOCK AND READ NEXT BLOCK OF HEADER
   5054					;
   5055	016062				10$:	CALL	NXTHDR		;GO ON TO NEXT BLOCK?
	016062	004737 	016602'			JSR	PC,NXTHDR
   5056	016066	103471 				BCS	FILERR		;FAILED
   5057					;
   5058					; SEE IF WE NEED TO READ ANOTHER LABEL BLOCK
   5059					;
   5060	016070	020137 	014426'		20$:	CMP	R1,LBLBFE	;HAVE WE FINISHED THIS LABEL BLOCK?
   5061	016074	103410 				BLO	30$		;NO-- JUST GET ANOTHER ENTRY FROM IT
   5062	016076	005004 				CLR	R4		;YES-- ASSUME NO MORE TO DO
   5063	016100	023737 	014420'	014422'		CMP	LBLBLK,LBLNUM	;HAVE WE RUN OUT OF LABEL BLOCKS?
   5064	016106	002043 				BGE	60$		;YES-- READ NO MORE-- JUST ZERO
   5065	016110					CALL	REDLBL		;YES-- READ NEXT ONE
	016110	004737 	016660'			JSR	PC,REDLBL
   5066	016114	103456 				BCS	FILERR		;SPLAT
   5067					;
   5068					; FIND THE PUD ADDRESS OF THE DEVICE FROM THE LABEL BLOCK
   5069					;
   5070	016116	005711 			30$:	TST	(R1)		;IS THIS A ZERO ENTRY?
   5071	016120	001434 				BEQ	40$		;YES-- JUST STORE ZERO
   5072	016122	013704 	014416'			MOV	PUDADR,R4	;ASSUME DEVICE OV
   5073	016126	022711 	053117 			CMP	#"OV,(R1)	;THIS OVERLAY DEVICE?
   5074	016132	001430 				BEQ	50$		;YES-- WE HAVE PUD ADDRESS
   5075					;
   5076	016134	012704 	000000G		31$:	MOV	#.PUDBA,R4	;NO-- START SEARCHING THROUGH THE PUD
   5077					;
   5078	016140	021164 	000000G		33$:	CMP	(R1),U.DN(R4)	;THIS OUR DEVICE?
   5079	016144	001004 				BNE	35$		;NO-- TRY ANOTHER ONE
   5080	016146	126164 	000002 	000000G		CMPB	2(R1),U.UN(R4)	;YES-- RIGHT UNIT #
   5081	016154	001417 				BEQ	50$		;YES-- WE HAVE PUD ADDRESS IN R4
   5082					;
   5083	016156	062704 	000050 		35$:	ADD	#U.SZ,R4	;NO-- BUMP TO NEXT PUD ENTRY
   5084	016162	020427 	000000G			CMP	R4,#.PUDEA	;END OF PUD YET?
   5085	016166	103764 				BLO	33$		;NO-- LOOK AT THIS ENTRY
   5086					;
   5087	016170	012704 	014612'			MOV	#CNVTBL,R4	;ENTRY NOT FOUND-- SEE IF CONVERTIBLE DEVICE
   5088					;
   5089	016174	022411 			37$:	CMP	(R4)+,(R1)	;DEVICE MATCH?
   5090	016176	001403 				BEQ	38$		;YES-- GET THE CONVERTED NAME AND GO AWAY
   5091	016200	005724 				TST	(R4)+		;NO-- IS THIS END OF TABLE?
   5092	016202	001374 				BNE	37$		;NO-- KEEP ON LOOKING
   5093	016204	000402 				BR	40$		;YES-- DEVICE NOT FOUND-- STORE 0
   5094					;
   5095	016206	011411 			38$:	MOV	(R4),(R1)	;DEVICE FOUND IN CONVERSION TABLE--
   5096	016210	000751 				BR	31$		; SAVE AS NEW DEVICE AND SCAN PUD FOR IT
   5097					;
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 64-1
SETUP LOGICAL UNIT TABLE FOR TASK

   5098	016212	005004 			40$:	CLR	R4		;ENTRY NOT FOUND-- CLEAR THE PUD ADDRESS
   5099					;
   5100	016214	022121 			50$:	CMP	(R1)+,(R1)+	;SKIP OVER ENTRY IN LABEL BLOCK
   5101					;
   5102	016216	010422 			60$:	MOV	R4,(R2)+	;STORE THE PUD ADDRESS IN LUT IN HEADER
   5103	016220					CALL	NXTHDR		;SEE IF WE NEED ANOTHER HEADER BLOCK
	016220	004737 	016602'			JSR	PC,NXTHDR
   5104	016224	103412 				BCS	FILERR		;I/O ERROR-- GIVE UP
   5105	016226	005022 				CLR	(R2)+		;CLEAR SECOND WORD OF HEADER ENTRY
   5106					;
   5107	016230	077564 				SOB	R5,10$		;LOOP FOR ALL LUNS IN HEADER
   5108	016232					CALL	WRTHDR		;WRITE OTU THE LAST HEADER BLOCK
	016232	004737 	016630'			JSR	PC,WRTHDR
   5109	016236	103405 				BCS	FILERR		;FAILED
   5110					;
   5111					; ALL DONE WITH THE TASK FILE-- CLOSE IT UP
   5112					;
   5113	016240				80$:	CALL	RETBUF		;RETURN THE BUFFERS
	016240	004737 	016376'			JSR	PC,RETBUF
   5114	016244					CALL	FILCLS		;CLOSE THE FILE
	016244	004737 	016720'			JSR	PC,FILCLS
   5115	016250	103075 				BCC	REQTSK		;OK-- GO PUT US IN THE STD
   5116					;
   5117					; ALL FILE I/O ERRORS END UP HERE
   5118					;
   5119	016252				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
	016252	012746 	000173'			MOV	#$$$,-(SP)
	016256	004737 	017012'			JSR	PC,TYPMSG
   5120	016262				FILERX:	CALL	FILCLS		;GIVE CLOSE A TRY
	016262	004737 	016720'			JSR	PC,FILCLS
   5121					;
   5122	016266	012746 	016556'		RETNOD:	MOV	#ALLDON,-(SP)	;RETURN ALL BUFFERS AND STD NODE
   5123	016272					.INH0			;;OTHER ERROR-- MUST REMOVE TASK FROM THE STD
	016272	013746 	177776 			MOV	@#PS,-(SP)
	016276	112737 	000140 	177776 		MOVB	#140,@#PS
   5124	016304	012701 	014364'			MOV	#REQBLK,R1	;FIND THE STD OF THIS TASK
   5125	016310					CALL	..FSTD
	016310	004737 	000000G			JSR	PC,..FSTD
   5126	016314	001015 				BNE	60$		;CAN'T FIND IT?????
   5127	016316	162737 	000002 	000000G		SUB	#2,.STDTZ	;;ONE LESS ENTRY IN THE STD NOW
   5128	016324	013705 	000000G			MOV	.STDTZ,R5	;; SO GET NEW LENGTH
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 64-2
SETUP LOGICAL UNIT TABLE FOR TASK

   5129	016330	063705 	000000G			ADD	.STDTA,R5	;;MAKE ADDRESS OF LAST ENTRY IN THE TABLE
   5130	016334	005743 				TST	-(R3)		;;BACK UP THE POINTER
   5131					;
   5132	016336	020305 			50$:	CMP	R3,R5		;;AT END OF TABLE YET?
   5133	016340	101003 				BHI	60$		;;YES-- ALL DONE
   5134	016342	016323 	000002 			MOV	2(R3),(R3)+	;;NO-- MOVE ANOTHER ENTRY DOWN
   5135	016346	000773 				BR	50$		;;LOOP TO MOVE WHOLE TABLE DOWN
   5136					;
   5137	016350				60$:	.ENB0			;;RESTORE TASK SWITCHING
	016350	004737 	000000G			JSR	PC,..ENB0
   5138					;
   5139					; RETALL -- RETURN ALL BUFFERS AND STD NODE
   5140					;
   5141	016354	013701 	014376'		RETALL:	MOV	STDADR,R1	;GET THE STD ADDRESS
   5142	016360	001406 				BEQ	RETBUF		;NONE-- JUST RETURN THE BUFFERS
   5143	016362	012704 	000000G			MOV	#.POLLH,R4	;ADD IT TO THE FREE POOL
   5144	016366					CALL	..NADD		;PUT IT BACK
	016366	004737 	000000G			JSR	PC,..NADD
   5145	016372	005037 	014376'			CLR	STDADR		;NO MORE STD NODE
   5146					;
   5147	016376	012701 	001000 		RETBUF:	MOV	#512.,R1	;SET TO RETURN A BLOCK
   5148	016402	012703 	000000G			MOV	#.BGBUF,R3	; TO THE BIG BUFFER LIST HEAD
   5149	016406	013700 	014424'			MOV	LBLBUF,R0	;GET ADDRESS OF LABEL BLOCK BUFFER
   5150	016412	001402 				BEQ	20$		;NONE-- TRY HEADER BUFFER
   5151	016414					CALL	..DEC2		;DE-ALLOCATE THE BUFFER
	016414	004737 	000000G			JSR	PC,..DEC2
   5152					;
   5153	016420	013700 	014432'		20$:	MOV	HDRBUF,R0	;ALSO THE HEADER BUFFER
   5154	016424	001402 				BEQ	CLRBUF		;NONE-- JUST CLEAN UP
   5155	016426					CALL	..DEC2		;DE-ALLOCATE THE HEADER BUFFER
	016426	004737 	000000G			JSR	PC,..DEC2
   5156					;
   5157	016432	005037 	014424'		CLRBUF:	CLR	LBLBUF		;NO MORE LABEL BUFFER
   5158	016436	005037 	014432'			CLR	HDRBUF		; OR HEADER BUFFER
   5159	016442					RETURN			;THAT'S IT
	016442	000207 				RTS	PC
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 65
RE-REQUEST TASK

   5161						.SBTTL	RE-REQUEST TASK
   5162					;
   5163					; TASK REQUEST BLOCK IS STILL SET UP FROM CALL
   5164					;
   5165	016444				REQTSK:	.INH0			;INHIBIT TASK SWITCHING
	016444	013746 	177776 			MOV	@#PS,-(SP)
	016450	112737 	000140 	177776 		MOVB	#140,@#PS
   5166	016456	013704 	014376'			MOV	STDADR,R4	;FIND STD ADDRESS
   5167	016462	042764 	040001 	000000G		BIC	#SF.TA!SF.IR,S.FW(R4)	;CLEAR ACTIVE BIT SO IT CAN BE REQUESTED
   5168	016470	012700 	014364'			MOV	#REQBLK,R0
   5169	016474					RQST$S	R0,,REQBLK+10	;RE-REQUEST TASK
	016474	005046 				CLR	-(SP)
	016476	013746 	014374'			MOV	REQBLK+10,-(SP)
	016502	005046 				CLR	-(SP)
	016504	005046 				CLR	-(SP)
	016506	016046 	000002 			MOV	2(R0),-(SP)
	016512	011046 				MOV	(R0),-(SP)
	016514	012746 				MOV	(PC)+,-(SP)
	016516	   013 	   007 			.BYTE	11.,7
	016520	104375 				EMT	375
   5170	016522					.ENB0			;ENABLE TASK SWITCHING
	016522	004737 	000000G			JSR	PC,..ENB0
   5171	016526	005737 	000000G			TST	$DSW		;SUCCESS/FAILURE?
   5172	016532	100011 				BPL	ALLDON		;SUCCESS -- ALL OK
   5173					;
   5174					; REQUEST FAILED-- IF TASK ALREADY ACTIVE, THAT'S OK
   5175					;
   5176	016534	023727 	000000G	177771 		CMP	$DSW,#IE.ACT	;TASK ALREADY ACTIVE?
   5177	016542	001405 				BEQ	ALLDON		;YES-- WE ARE HAPPY
   5178					;
   5179	016544					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
	016544	012746 	000251'			MOV	#$$$,-(SP)
	016550	004737 	017012'			JSR	PC,TYPMSG
	016554	000644 				 BR	RETNOD
   5180					;
   5181					; ALL DONE-- GO BACK TO WAITING
   5182					;
   5183	016556	000137 	014636'		ALLDON:	JMP	INSTAL		;RETURN AND EXIT IF NO MORE TO DO
   5184					;
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 66
TASK FILE I/O ROUTINES

   5186						.SBTTL	TASK FILE I/O ROUTINES
   5187					;
   5188					; FILFNA -- DO A 'FIND NAME IN DIRECTORY' FUNCTION TO FIND A FILE
   5189					;	FILBLK --	FILE-NAME BLOCK SET UP FOR DESIRED FILE
   5190					;
   5191	016562	012700 	004400 		FILFNA:	MOV	#IO.FNA,R0	;DO A FIND FILE IN DIRECTORY
   5192	016566	005001 				CLR	R1		;NO FILE-ID
   5193	016570	005002 				CLR	R2		;NO ATTRIBUTES
   5194	016572	005003 				CLR	R3		;NO ACCESS
   5195	016574	012704 	014436'			MOV	#FILBLK,R4	;SET TO DO IT TO THE RIGHT FILE
   5196	016600	000454 				BR	FILQIO		;GO DO IT AND RETURN
   5197					;
   5198					; NXTHDR -- ROUTINE TO WRITE OUT CURRENT HEADER BLOCK AND READ NEXT ONE
   5199					;		IF AT END OF BLOCK.
   5200					;	R2 -- POINTER TO HEADER BUFFER (HDR). UPDATED TO HDR+0 IF END OF BLOCK
   5201					;
   5202	016602	023702 	014434'		NXTHDR:	CMP	HDRBFE,R2	;END OF HEADER BUFFER?
   5203	016606	101023 				BHI	RETXXX		;NO-- JUST RETURN
   5204	016610					CALL	WRTHDR		;YES-- WRITE OUT OLD HEADER
	016610	004737 	016630'			JSR	PC,WRTHDR
   5205	016614	103420 				BCS	RETXXX		;ERROR-- RETURN WITH IT
   5206					;	BR	REDHDR		;READ THE NEXT ONE
   5207					;
   5208					; REDHDR -- READ NEXT HEADER BLOBK
   5209					;
   5210	016616	005237 	014430'		REDHDR:	INC	HDRBLK		;BUMP TO NEXT BLOCK OF HEADER
   5211	016622	012700 	010400 			MOV	#IO.RVB,R0	;DO A READ
   5212	016626	000402 				BR	RWRHDR		;DO IT TO HEADER BLOCK
   5213					;
   5214					; WRTHDR -- WRITE CURRENT HEADER BLOCK
   5215					;
   5216	016630	012700 	011000 		WRTHDR:	MOV	#IO.WVB,R0	;DO A WRITE
   5217					;	BR	RWRHDR		;READ/WRITE A BLOCK
   5218					;
   5219					; RWRHDR -- READ/WRITE HEADER BLOCK
   5220					;	R0 -- READ/WRTIE FUNCTION CODE
   5221					;
   5222	016634				RWRHDR:	PUSH	R1		;SAVE THE LABEL POINTER
	016634	010146 				MOV	R1,-(SP)
   5223	016636	013701 	014432'			MOV	HDRBUF,R1		;POINT TO HEADER BUFFER
   5224	016642	013703 	014430'			MOV	HDRBLK,R3	;SET PROPER VBN
   5225	016646					CALL	RWRBLK		;DO A BLOCK
	016646	004737 	016712'			JSR	PC,RWRBLK
   5226	016652	010102 				MOV	R1,R2		;POINT R2 TO HDR BUFFER
   5227	016654					POP	R1		;RESTORE LABEL POINTER
	016654	012601 				MOV	(SP)+,R1
   5228	016656				RETXXX:	RETURN			;WITH CC-C SET/CLEAR BY RWRBLK
	016656	000207 				RTS	PC
   5229					;
   5230					; REDLBL -- READ NEXT LABEL BLOCK
   5231					;
   5232	016660				REDLBL:	PUSH	R2		;SAVE THE HEADER POINTER
	016660	010246 				MOV	R2,-(SP)
   5233	016662	012700 	010400 			MOV	#IO.RVB,R0	;DO A READ
   5234	016666	013701 	014424'			MOV	LBLBUF,R1		; TO THE LABEL BUFFER
   5235	016672	005237 	014420'			INC	LBLBLK		;BUMP TO NEXT LABEL BLOCK
   5236	016676	013703 	014420'			MOV	LBLBLK,R3	; AND SAVE AS VBN TO READ
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 66-1
TASK FILE I/O ROUTINES

   5237	016702					CALL	RWRBLK		;READ THE BLOCK
	016702	004737 	016712'			JSR	PC,RWRBLK
   5238	016706					POP	R2		;RESTORE THE HEADER POINTER
	016706	012602 				MOV	(SP)+,R2
   5239	016710					RETURN			;CC-C SET/CLEAR BY RWRBLK, R1 POINTS TO LBL BUFFER
	016710	000207 				RTS	PC
   5240					;
   5241					; RWRBLK -- READ/WRITE A BLOCK
   5242					;	R0 --	READ/WRITE FUNCTION CODE
   5243					;	R1 --	ADDRESS OF BUFFER
   5244					;	R3 --	VIRTUAL BLOCK NUMBER IN TASK FILE
   5245					;
   5246	016712	012702 	001000 		RWRBLK:	MOV	#512.,R2	;SET TO READ ONE BLOCK
   5247	016716	000405 				BR	FILQIO		;DO IT TO TASK FILE
   5248					;
   5249					; FILCLS -- DE-ACCESS THE TASK FILE
   5250					;
   5251	016720	012700 	010000 		FILCLS:	MOV	#IO.DAC,R0	;DE-ACCESS FUNCTION
   5252	016724	005001 				CLR	R1		;NO FILE-ID BLOCK
   5253	016726	005002 				CLR	R2		;NO ATTRIBUTES ALLOWED
   5254	016730	005004 				CLR	R4		;NO FILE-NAME BLOCK EITHER
   5255					;	BR	FILQIO		;DO IT TO TASK FILE
   5256					;
   5257					; FILQIO -- PERFORM QUEUE I/O FUNCTION ON THE TASK FILE
   5258					;	R0 --	FUNCTION CODE
   5259					;	R1 --	PARAMETER #1 (FILE-ID BLOCK OR BUFFER ADDRESS)
   5260					;	R2 --	PARAMETER #2 (ATTRIBUTE CONTROL BLOCK OR BUFFER LENGTH)
   5261					;	R3 --	PARAMETER #5 (ACCESS CONTROL OR VIRTUAL BLOCK NUMBER)
   5262					;	R4 --	PARAMETER #6 (FILENAME BLOCK)
   5263					;
   5264					; CC-C CLEAR IF SUCCESS, SET IF FAILURE.
   5265					;
   5266	016732				FILQIO:	QIOW$S	R0,#TSKLUN,#E.FQIO,,#QIOSTS,,<R1,R2,,,R3,R4>
	016732	010446 				MOV	R4,-(SP)
	016734	010346 				MOV	R3,-(SP)
	016736	005046 				CLR	-(SP)
	016740	005046 				CLR	-(SP)
	016742	010246 				MOV	R2,-(SP)
	016744	010146 				MOV	R1,-(SP)
	016746	005046 				CLR	-(SP)
	016750	012746 	014476'			MOV	#QIOSTS,-(SP)
	016754	005046 				CLR	-(SP)
	016756	112716 	000001 			MOVB	#E.FQIO,(SP)
	016762	012746 	000002 			MOV	#TSKLUN,-(SP)
	016766	010046 				MOV	R0,-(SP)
	016770	012746 				MOV	(PC)+,-(SP)
	016772	   003 	   014 			.BYTE	3,$$$T1
	016774	104375 				EMT	375
   5267	016776	103404 				BCS	90$		;GIVE UP
   5268					;
   5269	017000	105737 	014476'		30$:	TSTB	QIOSTS+0	;I/O SUCCESSFUL?
   5270	017004	002001 				BGE	90$		;YES-- JUST RETURN WITH CC-C CLEAR
   5271					;
   5272	017006	000261 			80$:	SEC			;NO-- RETURN ERROR
   5273	017010				90$:	RETURN			;RETURN FROM FILQIO
	017010	000207 				RTS	PC
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 67
ERROR PROCESSING

   5275						.SBTTL	ERROR PROCESSING
   5276					;
   5277					; TYPMSG -- TYPE A MESSAGE
   5278					;
   5279					; CALL:	PUSH	#<ADDRESS OF ASCIZ TEXT>
   5280					;	CALL	TYPMSG
   5281					;
   5282	017012				TYPMSG:	PUSH	<R0,R1,R2,R3,R4> ;SAVE USED REGISTERS
	017012	010046 				MOV	R0,-(SP)
	017014	010146 				MOV	R1,-(SP)
	017016	010246 				MOV	R2,-(SP)
	017020	010346 				MOV	R3,-(SP)
	017022	010446 				MOV	R4,-(SP)
   5283	017024	012704 	014502'			MOV	#TYPBUF,R4	;SET ADDRESS OF TYPEOUT BUFFER
   5284	017030	012703 	017322'			MOV	#INSMSG,R3	;GET 'INS --'
   5285	017034					CALL	PUTSTR		;PUT IT IN STRING
	017034	004737 	017214'			JSR	PC,PUTSTR
   5286	017040	016603 	000014 			MOV	14(SP),R3	;GET ADDRESS OF THE TEXT TO TYPE
   5287	017044					CALL	PUTSTR		;TYPE IT
	017044	004737 	017214'			JSR	PC,PUTSTR
   5288	017050	012703 	017334'			MOV	#TSKMSG,R3	;GET 'TSK= '
   5289	017054					CALL	PUTSTR		;PUT IT TOO
	017054	004737 	017214'			JSR	PC,PUTSTR
   5290	017060	012703 	014364'			MOV	#REQBLK,R3	;POINT TO .RAD50 /TASK-NAME/
   5291	017064					CALL	PUTR50		;PUT IT IN THERE, TOO
	017064	004737 	017224'			JSR	PC,PUTR50
   5292	017070	013702 	014376'			MOV	STDADR,R2	;GET THE ADDRESS OF THE STD
   5293	017074	016202 	000000G			MOV	S.TD(R2),R2	;GET ADDRESS OF .RAD50/PARTITION/
   5294	017100	001407 				BEQ	20$		;NONE-- SKIP THIS
   5295	017102	012703 	017343'			MOV	#PARMSG,R3	;SAY 'PAR= '
   5296	017106					CALL	PUTSTR		; . .
	017106	004737 	017214'			JSR	PC,PUTSTR
   5297	017112	010203 				MOV	R2,R3		;GET THE NAME ADDRESS
   5298	017114					CALL	PUTR50		;PUT IT IN STRING
	017114	004737 	017224'			JSR	PC,PUTR50
   5299					;
   5300	017120	112724 	000012 		20$:	MOVB	#12,(R4)+	;STORE LF
   5301	017124	112724 	000015 			MOVB	#15,(R4)+	;STORE CR
   5302	017130	012700 	014502'			MOV	#TYPBUF,R0	;GET ADDRESS OF BUFFER BACK
   5303	017134	160004 				SUB	R0,R4		;COMPUTE LENGTH OF STRING
   5304	017136					QIOW$S	#IO.WLB,#CTYLUN,#E.FQIO,,,,<R0,R4,#40>
	017136	012746 	000040 			MOV	#40,-(SP)
	017142	010446 				MOV	R4,-(SP)
	017144	010046 				MOV	R0,-(SP)
	017146	005046 				CLR	-(SP)
	017150	005046 				CLR	-(SP)
	017152	005046 				CLR	-(SP)
	017154	112716 	000001 			MOVB	#E.FQIO,(SP)
	017160	012746 	000001 			MOV	#CTYLUN,-(SP)
	017164	012746 	000400 			MOV	#IO.WLB,-(SP)
	017170	012746 				MOV	(PC)+,-(SP)
	017172	   003 	   011 			.BYTE	3,$$$T1
	017174	104375 				EMT	375
   5305	017176					POP	<R4,R3,R2,R1,R0> ;RESTORE THE REGISTERS
	017176	012604 				MOV	(SP)+,R4
	017200	012603 				MOV	(SP)+,R3
	017202	012602 				MOV	(SP)+,R2
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 67-1
ERROR PROCESSING

	017204	012601 				MOV	(SP)+,R1
	017206	012600 				MOV	(SP)+,R0
   5306	017210					POP	(SP)		;RESTORE PC OVER MESSAGE ADDRESS
	017210	012616 				MOV	(SP)+,(SP)
   5307	017212					RETURN			;THAT'S IT FOR TYPMSG
	017212	000207 				RTS	PC
   5308					;
   5309					; PUTSTR -- PUT STRING IN TYPE-OUT BUFFER
   5310					;	R3 --	ADDRESS OF ASCIZ STRING
   5311					;	R4 --	CURRENT POINTER TO TYPE-OUT BUFFER
   5312					;
   5313	017214	112324 			PUTSTR:	MOVB	(R3)+,(R4)+	;COPY A CHARACTER
   5314	017216	001376 				BNE	PUTSTR		; UNTIL ASCIZ
   5315	017220	105744 				TSTB	-(R4)		;BACK OVER ZERO BYTE
   5316	017222					RETURN			;RETURN FROM PUTSTR
	017222	000207 				RTS	PC
   5317					;
   5318					; PUTR50 -- PUT RADIX 50 NAME IN TYPE-OUT BUFFER
   5319					;	R3 --	ADDRESS OF TWO-WORD RADIX 50 BLOCK
   5320					;	R4 --	CURRENT POINTER TO TYPE-OUT BUFFER
   5321					;
   5322	017224	012300 			PUTR50:	MOV	(R3)+,R0	;GET FIRST 3 CHARS
   5323	017226					CALL	PUTR51		;TYPE 'EM
	017226	004737 	017234'			JSR	PC,PUTR51
   5324	017232	012300 				MOV	(R3)+,R0	;GET NEXT THREE CHARS
   5325					;	BR	PUTR51		;PUT THEM, TOO
   5326					;
   5327					; PUTR51 -- PUT 3 RADIX 50 CHARACTERS IN TYPE-OUT BUFFER
   5328					;	R0 --	RADIX 50 TEXT
   5329					;	R4 --	CURRENT POINTER TO TYPE-OUT BUFFER
   5330					;
   5331	017234	012702 	017276'		PUTR51:	MOV	#T50TBL,R2	;POINT TO TABLE OF DIVISORS
   5332					;
   5333	017240	012201 			20$:	MOV	(R2)+,R1	;GET NEXT DIVISOR
   5334	017242	001414 				BEQ	90$		;THREE HAVE BEEN DONE-- RETURN
   5335	017244					CALL	$DIV		;DIVIDE CURRENT TEXT BY 50**N
	017244	004737 	000032'			JSR	PC,$DIV
   5336	017250					PUSH	R1		;SAVE THE REMAINDER
	017250	010146 				MOV	R1,-(SP)
   5337	017252	012701 	017306'			MOV	#R50TBL,R1	;POINT TO CONVERSION TABLE
   5338					;
   5339	017256	061100 			30$:	ADD	(R1),R0		;CONVERT THE CHARACTER
   5340	017260	105721 				TSTB	(R1)+		;SKIP THE BYTE
   5341	017262	120021 				CMPB	R0,(R1)+	;HAVE WE FOUND THE CHAR YET?
   5342	017264	103774 				BLO	30$		;NO-- LOOP UNTIL WE DO
   5343					;
   5344	017266	110024 				MOVB	R0,(R4)+	;YES-- SAVE THE CHAR IN TEXT
   5345	017270					POP	R0		;RESTORE LAST REMAINDER AS NEW DIVIDEND
	017270	012600 				MOV	(SP)+,R0
   5346	017272	000762 				BR	20$		;GET ANOTHER CHARACTER
   5347					;
   5348	017274				90$:	RETURN			;FROM PUTR50/PUTR51
	017274	000207 				RTS	PC
   5349					;
   5350	017276	003100 	000050 	000001 	T50TBL:	.WORD	50*50,50,1,0	;TABLE OF DIVISORS
	017304	000000
   5351					;
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 67-2
ERROR PROCESSING

   5352	017306	   022 	   060 		R50TBL:	.BYTE	<'0-36>-<50-50>,'0 ;36-47: 0-9
   5353	017310	   366 	   045 			.BYTE	<'%-35>-<'0-36>,'% ;35   : %
   5354	017312	   012 	   056 			.BYTE	<'.-34>-<'%-35>,'. ;34   : .
   5355	017314	   367 	   044 			.BYTE	<'$-33>-<'.-34>,'$ ;33   : $
   5356	017316	   067 	   101 			.BYTE	<'A-01>-<'$-33>,'A ;01-32: A-Z
   5357	017320	   340 	   040 			.BYTE	<' -00>-<'A-01>,'  ;00   : <SPACE>
   5358						.EVEN
   5359					;
   5360	017322	   015 	   012 	   111 	INSMSG:	.ASCIZ	<15><12>/INS -- /
	017325	   116 	   123 	   040
	017330	   055 	   055 	   040
	017333	   000
   5361	017334	   040 	   040 	   124 	TSKMSG:	.ASCIZ	/  TSK=/
	017337	   123 	   113 	   075
	017342	   000
   5362	017343	   040 	   120 	   101 	PARMSG:	.ASCIZ	/ PAR=/
	017346	   122 	   075 	   000
   5363						.EVEN
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 68
END STATEMENT

   5365						.SBTTL	END STATEMENT
   5366		000001 				       .END
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 68-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  016556R  	CDSOFL= 010000   	DCOMST= 000001   	DS04  = 004000   	EF.CRS= 000004
AOE   = 001000   	CDSPAK= 000002   	DD.CHI= 000002   	DS05  = 002000   	EF.IOD= ****** GX
ATCBLK  014576R  	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  011212R  	CDSRED= 000001   	DD.PCK= 000002   	DTEFLG= 000444   	EF.LPS= 000020
BCFILF  011146R  	CDST  = ****** GX	DD.PGZ= 000001   	DTEF11= 000450   	EF.LPW= 000040
BCFLDR  011232R  	CDSTOL= 000010   	DD.RCK= 000001   	DTEMTD= 000455   	EF.NIR= ****** GX
BCFLDV  011240R  	CHNPNT= 000001   	DD.RME= 000040   	DTEMTI= 000456   	EF.PR1= ****** GX
BCFRDS  011146R  	CHRINT= 020000   	DD.SCK= 000004   	DUNS    000460R  	EF.QIO= 000001
BCFSDO  011172R  	CLIOD   000374R  	DD.SFL= 000020   	DUPE  = 000020   	EF.SEP= 100000
BCFSTR  011254R  	CLRBUF  016432R  	DD.VFE= 000004   	DURE  = 000004   	EF.TEF= 000400
BCFTAB  011130R  	CLSFIL  015666R  	DEFPRI= 000062   	DVA   = 004000   	EMPTY = 000003
BC.HDS= ****** GX	CNUPE = 000002   	DELHLD= 002000   	DV.EOF= 000040   	EPTR  = 000000
BC.LDR= ****** GX	CNVTBL  014612R  	DEMTIM= 000002   	DV.F11= 000400   	ERMHER  010041R
BC.LDV= ****** GX	CPE   = 000010   	DEP   = 010000   	DV.HNG= 001000   	ERMHNG  010056R
BC.RDS= ****** GX	CRBFLN= ****** GX	DEX   = 000400   	DV.IOP= 000020   	ERMNXD  007767R
BC.SDS= ****** GX	CRBUFF= ****** GX	DEXDON= 000004   	DV.LOG= 000100   	ERMOFL  010007R
BC.STR= ****** GX	CRCEVF= ****** GX	DEXWD1= 174406   	DV.NXD= 000001   	ERMVFE  010022R
BIT0  = 000001   	CRDCLR  013626R  	DEXWD2= 174404   	DV.OFL= 000002   	ERR   = 100000
BIT1  = 000002   	CRDINT  013074R  	DEXWD3= 174402   	DV.OIR= 000004   	ERR10C= 010000
BIT10 = 002000   	CREVFG= ****** GX	DFUNC = 000200   	DV.SCN= 000010   	ERR10S= 020000
BIT11 = 004000   	CRHD    012046RG 	DF.DMG= 000004   	DV.URE= 000200   	ERR11C= 000001
BIT12 = 010000   	CRHUNG= ****** GX	DF.DMN= 000007   	DXBUF = ****** GX	ERR11S= 000002
BIT13 = 020000   	CRINI   012424R  	DF.DOR= 000001   	DXCNT = ****** GX	EXSP    014356R
BIT14 = 040000   	CRIOD   012576R  	DF.EHG= 000010   	DXEXP = 177170   	E.FCRB= 000004
BIT15 = 100000   	CRLOOP  012510R  	DF.EHM= 000011   	DXFLAG  014356R  	E.FCRC= 000001
BIT2  = 000004   	CRMKT   013044R  	DF.EMG= 000005   	DXHD    001730RG 	E.FCRD= 000002
BIT3  = 000010   	CRMRKT  012346R  	DF.EMN= 000006   	DXINI   002240R  	E.FCRS= 000003
BIT4  = 000020   	CRPWUP  012416R  	DF.KLR= 000012   	DXIOD   002234R  	E.FLPC= 000002
BIT5  = 000040   	CRSSTV  012360R  	DF.KLW= 000013   	DXPKT = ****** GX	E.FLPD= 000001
BIT6  = 000100   	CRSTBK= ****** GX	DF.KLX= 000014   	DXRTC = ****** GX	E.FLPQ= 000003
BIT7  = 000200   	CRSTK   012326RG 	DF.OFF= 000002   	DXRTY   003122R  	E.FLPS= 000005
BIT8  = 000400   	CRSTLN= ****** GX	DF.ON = 000003   	DXSTK   002210RG 	E.FLPW= 000006
BIT9  = 001000   	CRSTS = ****** GX	DF.PDP= 000016   	DXTSK = ****** GX	E.FQIO= 000001
BLKTT = ****** GX	CRTBL = ****** GX	DF.PEX= 000015   	DXUNIT= ****** GX	E.IOD = ****** GX
BPARER= 000020   	CRTRP4  012362R  	DIAG1 = 174430   	DXVCB = ****** GX	E.NIR = ****** GX
BUFAIL  015372R  	CR.ACK= 004000   	DIAG2 = 174432   	DXWD1 = 000006   	FCN     004656R
BUSA16= 000020   	CR.HNG= 100000   	DIAG3 = 174436   	DXWD2 = 000004   	FCNBD   004664R
BUSA17= 000040   	CR.IOD= 010000   	DIKL10= 000010   	DXWD3 = 000002   	FEDRV   003670R
BYTESA= ****** GX	CR.IOP= 020000   	DLT   = 100000   	DXWRD1= 002000   	FEHD    003370RG
CDBA  = ****** GX	CR.NSF= 000400   	DLYCNT= 174400   	D$$H11= 000010   	FER   = 000020
CDBPCK= 020000   	CR.NXD= 001000   	DNBLK = ****** GX	D.CCDR= ****** GX	FESTK   003650RG
CDBRCK= 040000   	CR.RHN= 002000   	DNFCN = ****** GX	D.CLPT= ****** GX	FETBL = ****** GX
CDBSCK= 010000   	CR.SST= 040000   	DNMSG   000442R  	D.FEPD= ****** GX	FETSK = ****** GX
CDCC  = ****** GX	CS.EXP= 177670   	DNSTS = ****** GX	D1011 = 000040   	FE.DET= 040000
CDD   = 000020   	CTYLUN= 000001   	DONE  = 000200   	EBSEL = 000100   	FE.DTE= 020000
CDDB  = ****** GX	CYCLS = 000002   	DONSTR  004606R  	EBUSPC= 000020   	FE.SER= 004000
CDSB16= 000020   	C$$D11= 000001   	DON10C= 040000   	EBUSPS= 000004   	FE.STR= 002000
CDSB17= 000040   	C.LEEF= 000002   	DON10S= 100000   	ECCMSK  000504R  	FILADR  014472R
CDSDER= 004000   	DAG1  = 000030   	DON11C= 000100   	ECCWRD  000476R  	FILBLK  014436R
CDSDLT= 002000   	DAG2  = 000032   	DON11S= 000200   	ECH   = 000100   	FILCLS  016720R
CDSEOF= 020000   	DAG3  = 000036   	DPS4  = 040000   	ECI   = 004000   	FILERA  015366R
CDSERR= 100000   	DATE  = 000004   	DRESET= 000100   	EDONES= 040000   	FILERR  016252R
CDSHEM= 000004   	DBINI   000512R  	DRY   = 000200   	EF.CRB= 000010   	FILERX  016262R
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 68-2
SYMBOL TABLE

FILFNA  016562R  	IE.HFU= 177744   	INSMSG  017322R  	IO.RAL= 001010   	IS.SUC= 000001
FILL  = 000001   	IE.HWR= 177772   	INSTAL  014636RG 	IO.RAT= 013000   	KLPWRF= 000010
FILQIO  016732R  	IE.IDU= 177644   	INSTK   014276RG 	IO.RBC= 003000   	LBLBFE  014426R
FMT22 = 010000   	IE.IEF= 177637   	INTEBL= 000100   	IO.RCI= 015000   	LBLBLK  014420R
FNDFIL  015126R  	IE.IFC= 177776   	INTENB= 000100   	IO.RCV= 015000   	LBLBUF  014424R
FORPRO= 000020   	IE.IFU= 177747   	INTROF= 000010   	IO.RDB= 001200   	LBLNUM  014422R
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  014434R  	IE.ITI= 177643   	IOABT   004624R  	IO.RNA= 005400   	LPBSAD= 000004 G
HDRBLK  014430R  	IE.ITS= 177770   	IODN    004232R  	IO.RNC= 001004   	LPCBUF= 000014 G
HDRBUF  014432R  	IE.LCK= 177745   	IODNCR  014002R  	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  010476R
IE.ABO= 177761   	IE.NNC= 177674   	IO.CCI= 014000   	IO.SAO= 004000   	LPDINT  007046R
IE.ACT= 177771   	IE.NOD= 177751   	IO.CCT= 002460   	IO.SCS= 013000   	LPEMSG  007734R
IE.ADP= 177636   	IE.NSF= 177746   	IO.CLN= 003400   	IO.SDI= 013000   	LPEMSX  007747R
IE.ALN= 177736   	IE.OFL= 177677   	IO.CON= 015400   	IO.SDO= 012400   	LPERUN  007744R
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    005130RG
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   005520R
IE.BHD= 177700   	IE.RCN= 177722   	IO.DCT= 002470   	IO.SPB= 002420   	LPIOD   005672R
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  005604R
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   007012R
IE.BVR= 177701   	IE.SNC= 177735   	IO.ENA= 006000   	IO.STP= 016400   	LPMRKT  005430R
IE.BYT= 177755   	IE.SPC= 177772   	IO.EOF= 003000   	IO.SYN= 003040   	LPNIR   006552R
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  007712R
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  015632R  	LPSSTV  005454R
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   005410RG
IE.EOF= 177766   	ILF   = 000001   	IO.MCS= 013400   	IS.BV = 000005   	LPSTLN= ****** GX
IE.EOT= 177702   	ILFCD   002474R  	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  013612RG 	IO.MLO= 006000   	IS.PND= 000000   	LPTPAR= 000040
IE.FHE= 177705   	INITLP  010426RG 	IO.MOD= 003000   	IS.RDD= 000002   	LPTPBT= 010000
IE.FOP= 177713   	INSHD   014016RG 	IO.MSO= 005000   	IS.SET= 000002   	LPTRP4  005456R
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 68-3
SYMBOL TABLE

LPUNIT= ****** GX	ONLINE= 004000   	REDLBL  016660R  	R50TBL  017306R  	TO11BC= 174416
LPUTBL= ****** GX	OPI   = 020000   	REQBLK  014364R  	SCD   = 000040   	TO11BM= 020000
LPWRUP  005512R  	OPTVFU= 004000   	REQTSK  016444R  	SETBUF  003314R  	TO11DB= 004000
LP.CLR= 002000   	PAGZRO= 040000   	RETALL  016354R  	SETLUN  016046R  	TO11DN= 000200
LP.EOF= 000200   	PARENB= 000002   	RETBUF  016376R  	SETSTD  015536R  	TO11DT= 174426
LP.F10= 000400   	PARFND  015670R  	RETNOD  016266R  	SF.IR = 040000   	TO11ER= 000002
LP.HNG= 100000   	PARMSG  017343R  	RETRY = 000010   	SF.TA = 000001   	TR    = 000200
LP.LIP= 001000   	PBTHRD= 000004   	RETXXX  016656R  	SNSTR   004274R  	TRE   = 040000
LP.MCH= 010000   	PERCLR= 001000   	RFMAD0= 100000   	SSTSCR  013204R  	TRKSEC  003144R
LP.PZI= 020000   	PGE   = 002000   	RFMAD1= 040000   	SSTSLP  007234R  	TRWAIT  003344R
LP.SST= 040000   	PGM   = 001000   	RFMAD2= 020000   	STAT  = 174434   	TSKFND  015404R
LP.UNT= 000003   	PHYBLK= 000040   	RFMAD3= 010000   	STATD = 000034   	TSKLUN= 000002
LP.WAT= 004000   	PHYS  = 100000   	RM    = 000010   	STATUS= 000022   	TSKMSG  017334R
L$BBLK= 000024   	PIDENT= 000000   	RMR   = 000004   	STDADR= 014376R  	TSTMOD= 000001
L$BFLG= 000010   	PRI7  = 000340   	RPAS  = 000016   	STSWD = ****** GX	TTBERR  015644R
L$BHRB= 000022   	PROPNT= 000021   	RPBA  = 000004   	SWR   = 177570   	TTPEN = ****** GX
L$BLDZ= 000014   	PRTOFF= 004000   	RPBUF = ****** GX	SWSLLT= 100000   	TYPBUF  014502R
L$BMXZ= 000016   	PR0   = 000000   	RPCNT = ****** GX	SYFLAG  014357R  	TYPMSG  017012R
L$BPAR= 000004   	PR1   = 000040   	RPCS1 = 000000   	SYMNTD  015040R  	T.BA  = ****** GX
L$BPRI= 000012   	PR2   = 000100   	RPCS2 = 000010   	SYMNT1  015104R  	T.HBCT= ****** GX
L$BSA = 000020   	PR3   = 000140   	RPDA  = 000006   	SYNTIM= 000004   	T.HCAD= ****** GX
L$BTSK= 000000   	PR4   = 000200   	RPDBR = 000022   	S.DRFN= 000034   	T.HCBC= ****** GX
L$$P20= 000002   	PR5   = 000240   	RPDC  = 000034   	S.FW  = ****** GX	T.HEMA= 177774
MCPE  = 020000   	PR6   = 000300   	RPDS  = 000012   	S.TD  = ****** GX	T.HIBC= 177776
MDPE  = 000400   	PR7   = 000340   	RPDT  = 000026   	TASKNF  015262R  	T.HVFC= 177775
MEFCN   004666R  	PS    = 177776   	RPEC1 = 000044   	TB.ABO= 040000   	T.PN  = ****** GX
MEMPAR= 000020   	PSWW1 = 000005   	RPEC2 = 000046   	TB.DON= 100000   	T.PZ  = ****** GX
MKDNR   000404RG 	PSWW10= 000014   	RPER1 = 000014   	TB.EOF= 020000   	T.SZ  = ****** GX
MKSCDP  005442R  	PSWW11= 000015   	RPEXP = 176700   	TB.LPC= 010000   	T10AD = 000020
MNTBLK  014604R  	PSWW12= 000016   	RPHD    000070RG 	TB.RMD= 004000   	T11AD = 000022
MNTSYD  014704R  	PSWW13= 000017   	RPLA  = 000020   	TB.SFN= 036000   	T11BC = 000016
MODE00= 000004   	PSWW2 = 000006   	RPMR  = 000024   	TB.VFD= 002000   	T50TBL  017276R
MODE01= 000010   	PSWW3 = 000007   	RPOF  = 000032   	TENAD1= 174410   	UF.TL = ****** GX
MOL   = 010000   	PSWW4 = 000010   	RPRNA = ****** GX	TENAD2= 174412   	UNASG1= 000032
MPE11 = 001000   	PSWW5 = 000011   	RPRTC = ****** GX	TESTLP  010236R  	UNASG2= 000033
MSGDPB  000422R  	PSWW6 = 000012   	RPSN  = 000030   	TEST00= 000400   	UNASG3= 000034
MSGSIZ= 000016   	PSWW7 = 000013   	RPSTK   000350RG 	TEST01= 001000   	UNASG4= 000035
MXF   = 001000   	PUDADR  014416R  	RPTSK = ****** GX	TEST02= 002000   	UNASG5= 000036
M.KTAE= 000010   	PULSE = 000020   	RPUNIT= ****** GX	TNAD1 = 000010   	UNASG6= 000037
M.KTEF= 000002   	PUTR50  017224R  	RPWC  = 000002   	TNAD2 = 000012   	UNIT  = 000020
M.KTMG= 000004   	PUTR51  017234R  	RPWLO   000400R  	TNCERR  015656R  	UNS   = 040000
M.KTUN= 000006   	PUTSTR  017214R  	RSTERR= 001000   	TNFERR  015352R  	UPE   = 020000
NED   = 010000   	QIOSTS  014476R  	RSX$$E= 000041   	TOBM  = 000004   	U.ACP = ****** GX
NEM   = 004000   	QSIZE = 000023   	RSX$$F= 000102   	TOD   = 000003   	U.DACP= ****** GX
NODADR= ****** GX	Q.IOAE= 000012   	RSX$$K= 000126   	TOIP  = 000002   	U.DN  = ****** GX
NULSTP= 000040   	Q.IOEF= 000006   	RSX$$V= 000013   	TOIT  = 000001   	U.FB  = ****** GX
NUPE  = 000002   	Q.IOFN= 000002   	RWRBLK  016712R  	TO10  = 000200   	U.RP  = ****** GX
NXTHDR  016602R  	Q.IOLU= 000004   	RWRHDR  016634R  	TO10AD= 174420   	U.SZ  = 000050
NXTSEC  003272R  	Q.IOPL= 000014   	RXCS  = 000000   	TO10BC= 174414   	U.UN  = ****** GX
N.DID = 000024   	Q.IOPR= 000007   	RXDB  = 000002   	TO10BM= 000001   	U.VA  = ****** GX
N.FID = 000000   	Q.IOSB= 000010   	R$$E18= 000001   	TO10DB= 000400   	VFCFF   007000R
N.FNAM= 000006   	RAMIS0= 010000   	R$$11D= 000001   	TO10DN= 100000   	VFCTBL  006776R
N.FTYP= 000014   	RAMLOD= 000003   	R.AT  = ****** GX	TO10DT= 174424   	VFUERR= 000100
N.FVER= 000016   	RAMPAR= 000010   	R.DP  = ****** GX	TO10ER= 020000   	VFULOD= 000002
N.NEXT= 000022   	RCVBLK  014360R  	R.FC  = ****** GX	TO10PK= ****** GX	VFURDY= 010000
N.STAT= 000020   	READ  = 000007   	R.LU  = ****** GX	TO11  = 000100   	VV    = 000100
OFFLIN= 000200   	REDHDR  016616R  	R.PB  = ****** GX	TO11AD= 174422   	WCE   = 040000
INSTAL -- TASK INSTALLER FOR RS	MACRO M1110  12-OCT-79 14:00  PAGE 68-4
SYMBOL TABLE

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

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

VIRTUAL MEMORY USED:  12608 WORDS  ( 50 PAGES)
DYNAMIC MEMORY:  13540 WORDS  ( 52 PAGES)
ELAPSED TIME:  00:05:41
,[100,20]DRIVERS20.LST/-SP/CRF=[100,30]DRIVERS20.TMP
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

AC.ENA	= 000200	#59-4655    62-4919   
ADRSAV	= ******  GX	*17-1886    18-1941   *18-1946   *19-1980    19-1990   *19-1991   
ALLDON	  016556 R	 64-5122    65-5172    65-5177   #65-5183   
AOE   	= 001000	#6-391      8-677      8-686     
ATCBLK	  014576 R	#60-4699    62-4917   
A.EF  	= 000020	*8-725     #11-1416   *12-1593   *13-1642    17-1836   *17-1838   *19-1998    28-2523    49-4102   
A.HA  	= ******  GX	 17-1899    61-4757   
BCFHDS	  011212 R	 38-3553   #38-3589   
BCFILF	  011146 R	 38-3545   #38-3562    38-3583    38-3592   
BCFLDR	  011232 R	 38-3555   #38-3598   
BCFLDV	  011240 R	 38-3556   #38-3604   
BCFRDS	  011146 R	 38-3552   #38-3567   
BCFSDO	  011172 R	 38-3554   #38-3580   
BCFSTR	  011254 R	 38-3551   #38-3617   
BCFTAB	  011130 R	 38-3542    38-3548   #38-3550    38-3551    38-3552    38-3553    38-3554    38-3555    38-3556   
BC.HDS	= ******  GX	 33-3182    38-3553    51-4361   
BC.LDR	= ******  GX	 38-3555   
BC.LDV	= ******  GX	 38-3556   
BC.RDS	= ******  GX	 38-3552   
BC.SDS	= ******  GX	 38-3554   
BC.STR	= ******  GX	 17-1929    19-1965    38-3551    50-4146   
BIT0  	= 000001	#11-1411    20-2121   #20-2136    21-2227    21-2244    23-2314    23-2330    23-2346    26-2431   
                         28-2509    33-3160   #44-3930    44-3941    45-3971    49-4091   #59-4589    59-4632   
BIT1  	= 000002	#11-1411    20-2123   #20-2136    21-2226    21-2243    23-2315    23-2331    23-2347    26-2431   
                        #44-3930    44-3943    45-3970   #59-4589   
BIT10 	= 002000	#11-1411   #20-2136    20-2170    21-2213    21-2233    26-2419   #44-3930    45-3961    47-4033   
                        #59-4589   
BIT11 	= 004000	#11-1411   #20-2136    20-2169    21-2212    21-2232    26-2414   #44-3930    45-3960    47-4031   
                        #59-4589   
BIT12 	= 010000	#11-1411   #20-2136    20-2168    21-2211    21-2231    26-2411   #44-3930    45-3959    45-3978   
                         47-4029   #59-4589   
BIT13 	= 020000	#11-1411   #20-2136    20-2167    21-2210    26-2408   #44-3930    45-3958    45-3977    47-4027   
                        #59-4589   
BIT14 	= 040000	#11-1411   #20-2136    20-2166    21-2209    26-2405   #44-3930    45-3957    45-3976    47-4024   
                        #59-4589   
BIT15 	= 100000	#11-1411   #20-2136    20-2165    21-2208    26-2402    33-3182   #44-3930    45-3956    47-4020   
                         50-4146    51-4361   #59-4589   
BIT2  	= 000004	#11-1411    20-2125   #20-2136    21-2222    21-2242    23-2316    23-2332    23-2348   #44-3930   
                         44-3945    45-3969   #59-4589   
BIT3  	= 000010	#11-1411   #20-2136    21-2221    21-2241    23-2317    23-2333    23-2349   #44-3930    44-3947   
                         45-3968   #59-4589   
BIT4  	= 000020	#11-1411    20-2128   #20-2136    21-2220    21-2240    23-2318    23-2334    23-2350   #44-3930   
                         45-3967   #59-4589   
BIT5  	= 000040	#11-1411    20-2130   #20-2136    21-2219    21-2239    23-2319    23-2335   #44-3930    45-3966   
                        #59-4589   
BIT6  	= 000100	#11-1411   #20-2136    21-2218    21-2238    23-2320   #44-3930    45-3965   #59-4589   
BIT7  	= 000200	#11-1411   #20-2136    21-2217    21-2237    23-2321    26-2427   #44-3930    45-3964   #59-4589   
                         59-4655   
BIT8  	= 000400	#11-1411   #20-2136    21-2215    21-2235    23-2322    26-2424    33-3160   #44-3930    45-3963   
                         47-4037   #59-4589   
BIT9  	= 001000	#11-1411   #20-2136    21-2214    21-2234    23-2323    26-2421   #44-3930    45-3962    47-4035   
                        #59-4589   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 2

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

BLKTT 	= ******  GX	 19-2046   
BPARER	= 000020	#11-1411   #20-2136   #44-3930   #59-4589   
BUFAIL	  015372 R	#62-4891    62-4901    62-4908   
BUSA16	= 000020	#21-2220    42-3862   
BUSA17	= 000040	#21-2219    42-3862   
BYTESA	= ******  GX	*17-1887   *17-1910    17-1913    18-1943    18-1945   *18-1947   *19-1979    19-1985   *19-1987   
                        *19-1992    19-1995   
CDBA  	= ******  GX	 50-4188   
CDBPCK	= 020000	#45-3977    51-4317   
CDBRCK	= 040000	#45-3976    51-4313   
CDBSCK	= 010000	#45-3978    51-4321   
CDCC  	= ******  GX	 50-4187    54-4441   
CDD   	= 000020	#11-1411   #20-2136   #44-3930   #59-4589   
CDDB  	= ******  GX	 51-4311    51-4347   
CDSB16	= 000020	#45-3967   
CDSB17	= 000040	#45-3966   
CDSDER	= 004000	#45-3960   
CDSDLT	= 002000	#45-3961    51-4304   
CDSEOF	= 020000	#45-3958    51-4296   
CDSERR	= 100000	#45-3956   
CDSHEM	= 000004	#45-3969    51-4329   
CDSIEN	= 000100	#45-3965    50-4189    50-4203    50-4206   
CDSNXM	= 001000	#45-3962    51-4304   
CDSOFL	= 010000	#45-3959    50-4179    51-4288   
CDSPAK	= 000002	#45-3970   
CDSPWC	= 000400	#45-3963    52-4384   
CDSRCK	= 040000	#45-3957    51-4335   
CDSRDY	= 000200	#45-3964    51-4308   
CDSRED	= 000001	#45-3971    50-4189   
CDST  	= ******  GX	 50-4179    50-4189    50-4203    50-4206    51-4287    51-4345    51-4347    52-4384    54-4436   
                         54-4445   
CDSTOL	= 000010	#45-3968   
CHNPNT	= 000001	#11-1411   #20-2136   #44-3930   #59-4589   
CHRINT	= 020000	#21-2210    33-3096    37-3390    37-3412    40-3723   
CLIOD 	  000374 R	#6-445      7-634     
CLRBUF	  016432 R	 61-4742    61-4742    64-5154   #64-5157   
CLSFIL	  015666 R	 63-4968    63-4971    63-4974   #63-4978   
CNUPE 	= 000002	#11-1411   #20-2136   #44-3930   #59-4589   
CNVTBL	  014612 R	#60-4712    64-5087   
CPE   	= 000010	#6-397     
CRBFLN	= ******  GX	 50-4145    50-4187   
CRBUFF	= ******  GX	 50-4135    50-4188   
CRCEVF	= ******  GX	*50-4117    50-4128    50-4198   
CRDCLR	  013626 R	 49-4086   #52-4385   
CRDINT	  013074 R	 49-4084   #50-4204   
CREVFG	= ******  GX	*49-4101   *49-4102    49-4103    50-4117    50-4118    50-4149    50-4155    50-4173    50-4217   
                         51-4268    51-4364    51-4367    52-4385    57-4531   
CRHD  	  012046 RG	#47-4017   
CRHUNG	= ******  GX	*50-4214   
CRINI 	  012424 R	 47-4017    47-4017   #49-4101   
CRIOD 	  012576 R	#50-4128   
CRLOOP	  012510 R	#50-4114    50-4226   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 3

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

CRMKT 	  013044 R	#50-4198   
CRMRKT	  012346 R	#47-4042    49-4104   
CRPWUP	  012416 R	#49-4096    49-4106   
CRSSTV	  012360 R	#49-4080    49-4105   
CRSTBK	= ******  GX	 51-4276    51-4349   
CRSTK 	  012326 RG	 47-4017   #47-4017   
CRSTLN	= ******  GX	 51-4349    51-4360   
CRSTS 	= ******  GX	*49-4090    50-4133   *50-4152    50-4160    50-4166    50-4168   *50-4170    50-4171   *50-4186   
                         50-4200    50-4207    50-4209    50-4211   *50-4213   *50-4219   *50-4222   *51-4267    51-4282   
                         51-4292    51-4300    51-4337   *51-4342   *51-4368   *52-4383    54-4438   *54-4440   *54-4443   
                        *54-4448   *55-4481   *56-4504   *57-4525   
CRTBL 	= ******  GX	 55-4479    56-4501    57-4523   
CRTRP4	  012362 R	 49-4080   #49-4084   
CR.ACK	= 004000	#47-4031    50-4166    50-4170    50-4207    56-4504    57-4525   
CR.HNG	= 100000	#47-4020    50-4152    50-4170    50-4209    50-4219    50-4222   
CR.IOD	= 010000	#47-4029    50-4133    50-4152    50-4168    50-4207    51-4292    54-4443    56-4504   
CR.IOP	= 020000	#47-4027    50-4168    50-4186    50-4207    50-4211    51-4292    52-4383    54-4438    54-4440   
                         56-4504   
CR.NSF	= 000400	#47-4037    50-4152    51-4337    51-4342   
CR.NXD	= 001000	#47-4035    49-4090    50-4171    50-4200    51-4282    52-4383   
CR.RHN	= 002000	#47-4033    50-4152    50-4170    50-4213    50-4222    51-4300   
CR.SST	= 040000	#47-4024    50-4160    50-4207    50-4213    51-4267    51-4368    54-4448    55-4481   
CS.EXP	= 177670	#11-1411   #20-2136   #44-3930   #59-4589   
CTYLUN	= 000001	#59-4626    67-5304   
CYCLS 	= 000002	#11-1411   #20-2136   #44-3930   #59-4589   
C$$D11	= 000001	#44-3936   
C.LEEF	= 000002	#6-445     
DAG1  	= 000030	#3-128     
DAG2  	= 000032	#3-127     
DAG3  	= 000036	#3-125     
DATE  	= 000004	#11-1411   #20-2136   #44-3930   #59-4589   
DBINI 	  000512 R	 6-441      6-441     #7-513      7-516      7-639     
DBIOD 	  000370 R	#6-443      7-633     
DCK   	= 100000	#6-385     
DCOMST	= 000001	#11-1411   #20-2136   #44-3930   #59-4589   
DD.CHI	= 000002	#23-2331    33-3099   
DD.HEM	= 000010	#23-2349    51-4331   
DD.LER	= 000010	#23-2333   
DD.OVF	= 000020	#23-2334    33-3104   
DD.PCK	= 000002	#23-2347    51-4319   
DD.PGZ	= 000001	#23-2330    33-3093   
DD.RCK	= 000001	#23-2346    51-4315   
DD.RME	= 000040	#23-2335    33-3083   
DD.SCK	= 000004	#23-2348    51-4323   
DD.SFL	= 000020	#23-2350    51-4339   
DD.VFE	= 000004	#23-2332    33-3053   
DEFPRI	= 000062	#59-4619    63-4987   
DELHLD	= 002000	#21-2213   
DEMTIM	= 000002	#21-2243    33-3057    37-3445   
DEP   	= 010000	#11-1411   #20-2136   #44-3930   #59-4589   
DEX   	= 000400	#11-1411   #20-2136   #44-3930   #59-4589   
DEXDON	= 000004	#11-1411   #20-2136   #44-3930   #59-4589   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 4

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

DEXWD1	= 174406	#11-1411   #20-2136   #44-3930   #59-4589   
DEXWD2	= 174404	#11-1411   #20-2136   #44-3930   #59-4589   
DEXWD3	= 174402	#11-1411   #20-2136   #44-3930   #59-4589   
DFUNC 	= 000200	#11-1411   #20-2136   #44-3930   #59-4589   
DF.DMG	= 000004	#11-1411   #20-2136   #44-3930   #59-4589   
DF.DMN	= 000007	#11-1411   #20-2136   #44-3930   #59-4589   
DF.DOR	= 000001	#11-1411   #20-2136   #44-3930   #59-4589   
DF.EHG	= 000010	#11-1411   #20-2136   #44-3930   #59-4589   
DF.EHM	= 000011	#11-1411   #20-2136   #44-3930   #59-4589   
DF.EMG	= 000005	#11-1411   #20-2136   #44-3930   #59-4589   
DF.EMN	= 000006	#11-1411   #20-2136   #44-3930   #59-4589   
DF.KLR	= 000012	#11-1411   #20-2136   #44-3930   #59-4589   
DF.KLW	= 000013	#11-1411   #20-2136   #44-3930   #59-4589   
DF.KLX	= 000014	#11-1411   #20-2136   #44-3930   #59-4589   
DF.OFF	= 000002	#11-1411   #20-2136   #44-3930   #59-4589   
DF.ON 	= 000003	#11-1411   #20-2136   #44-3930   #59-4589   
DF.PDP	= 000016	#11-1411   #20-2136   #44-3930   #59-4589   
DF.PEX	= 000015	#11-1411   #20-2136   #44-3930   #59-4589   
DIAG1 	= 174430	#11-1411   #20-2136   #44-3930   #59-4589   
DIAG2 	= 174432	#11-1411   #20-2136   #44-3930   #59-4589   
DIAG3 	= 174436	#11-1411   #20-2136   #44-3930   #59-4589   
DIKL10	= 000010	#11-1411   #20-2136   #44-3930   #59-4589   
DLT   	= 100000	#6-361      8-742     
DLYCNT	= 174400	#11-1411   #20-2136   #44-3930   #59-4589   
DNBLK 	= ******  GX	*19-2026   *19-2049   *19-2060    19-2063   
DNFCN 	= ******  GX	*19-2027   *19-2028   *19-2029   
DNMSG 	  000442 R	#6-455      7-641     
DNSTS 	= ******  GX	*19-2030   *19-2034    19-2049   *19-2052   *19-2053    19-2056   *19-2056   *19-2071   
DONE  	= 000200	#11-1429    12-1531    12-1551    15-1773   #21-2217   
DONSTR	  004606 R	 19-1996   #19-1999    19-2008    19-2017    19-2068   
DON10C	= 040000	#11-1411   #20-2136   #44-3930   #59-4589   
DON10S	= 100000	#11-1411   #20-2136   #44-3930   #59-4589   
DON11C	= 000100	#11-1411   #20-2136   #44-3930   #59-4589   
DON11S	= 000200	#11-1411   #20-2136   #44-3930   #59-4589   
DPS4  	= 040000	#11-1411   #20-2136   #44-3930   #59-4589   
DRESET	= 000100	#11-1411   #20-2136   #44-3930   #59-4589   
DRY   	= 000200	#6-378      7-625     
DR.DTE	= 000011	#11-1411   #20-2136   #44-3930   #59-4589   
DSEND 	= 000004	#11-1411   #20-2136   #44-3930   #59-4589   
DS04  	= 004000	#11-1411   #20-2136   #44-3930   #59-4589   
DS05  	= 002000	#11-1411   #20-2136   #44-3930   #59-4589   
DS06  	= 001000	#11-1411   #20-2136   #44-3930   #59-4589   
DTE   	= 010000	#6-388     
DTECMD	= 000451	#11-1411   #20-2136   #44-3930   #59-4589   
DTEFLG	= 000444	#11-1411   #20-2136   #44-3930   #59-4589   
DTEF11	= 000450	#11-1411   #20-2136   #44-3930   #59-4589   
DTEMTD	= 000455	#11-1411   #20-2136   #44-3930   #59-4589   
DTEMTI	= 000456	#11-1411   #20-2136   #44-3930   #59-4589   
DUNS  	  000460 R	#6-457      7-650     
DUPE  	= 000020	#11-1411   #20-2136   #44-3930   #59-4589   
DURE  	= 000004	#11-1411   #20-2136   #44-3930   #59-4589   
DVA   	= 004000	#6-347      7-593      7-600     
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 5

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

DV.EOF	= 000040	#23-2319    33-3044    38-3591    51-4298   
DV.F11	= 000400	#23-2322    33-3071   
DV.HNG	= 001000	#23-2323    33-3078    51-4302   
DV.IOP	= 000020	#23-2318    33-3068    51-4294   
DV.LOG	= 000100	#23-2320    33-3059    33-3075    51-4302    51-4306    51-4327   
DV.NXD	= 000001	#23-2314    33-3037    51-4284   
DV.OFL	= 000002	#23-2315    33-3037    33-3048    51-4284    51-4290   
DV.OIR	= 000004	#23-2316    33-3037    33-3048    33-3078    51-4284    51-4290    51-4302   
DV.SCN	= 000010	#23-2317    33-3092    33-3098   
DV.URE	= 000200	#23-2321    33-3075    51-4306   
DXBUF 	= ******  GX	*12-1481   *15-1738    15-1754   
DXCNT 	= ******  GX	*12-1482   *15-1740    15-1756    15-1758   
DXEXP 	= 177170	#11-1417    12-1515    13-1618   
DXFLAG	  014356 R	#60-4679   *61-4743    61-4794   *61-4796   
DXHD  	  001730 RG	#11-1444   
DXINI 	  002240 R	 11-1444    11-1444   #12-1473    12-1476    12-1594   
DXIOD 	  002234 R	#11-1448    12-1588   
DXPKT 	= ******  GX	*12-1483    12-1591    13-1638   
DXRTC 	= ******  GX	*12-1502   *13-1623   *13-1660   *13-1662   
DXRTY 	  003122 R	 12-1540    12-1563    12-1578    12-1581    13-1622   #13-1660   
DXSTK 	  002210 RG	 11-1444   #11-1444   
DXTSK 	= ******  GX	*12-1593   *13-1642   
DXUNIT	= ******  GX	*12-1480    12-1575   
DXVCB 	= ******  GX	*12-1513   *12-1514    12-1519    12-1571    12-1579    12-1582    12-1589    12-1590   *13-1619   
                         13-1625    13-1632    13-1635   *13-1640   *13-1641    14-1682    14-1695   *14-1710   *14-1711   
                         14-1712   *15-1736    15-1740   *15-1759   
DXWD1 	= 000006	#3-134     
DXWD2 	= 000004	#3-135     
DXWD3 	= 000002	#3-136     
DXWRD1	= 002000	#11-1411   #20-2136   #44-3930   #59-4589   
D$$H11	= 000010	#1-45      
D.CCDR	= ******  GX	 50-4148    51-4363   
D.CLPT	= ******  GX	 30-2647    33-3185   
D.FEPD	= ******  GX	 17-1931    19-2000   
D1011 	= 000040	#11-1411   #20-2136   #44-3930   #59-4589   
EBSEL 	= 000100	#11-1411   #20-2136   #44-3930   #59-4589   
EBUSPC	= 000020	#11-1411   #20-2136   #44-3930   #59-4589   
EBUSPS	= 000004	#11-1411   #20-2136   #44-3930   #59-4589   
ECCMSK	  000504 R	#6-485      8-823      8-839     
ECCWRD	  000476 R	#6-483      8-832     
ECH   	= 000100	#6-394      8-757     
ECI   	= 004000	#6-420     
EDONES	= 040000	#11-1411   #20-2136   #44-3930   #59-4589   
EF.CRB	= 000010	#44-3947    49-4103    50-4149    50-4155    50-4173   
EF.CRC	= 000001	#44-3941    50-4114    50-4118    50-4198    52-4385   
EF.CRD	= 000002	#44-3943    50-4114    50-4118    50-4128    50-4217    57-4531   
EF.CRS	= 000004	#44-3945    49-4103    51-4268    51-4364    51-4367   
EF.IOD	= ******  GX	 8-725      12-1593    13-1642   
EF.LPC	= 000002	#20-2123    29-2543    29-2548    32-2914    35-3310   
EF.LPD	= 000001	#20-2121    29-2543    29-2548    30-2584    30-2633    32-2958    37-3458    38-3569    39-3688   
                         40-3725    41-3784    42-3853   
EF.LPQ	= 000004	#20-2125   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 6

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

EF.LPS	= 000020	#20-2128    28-2524    33-3024    33-3186    33-3194   
EF.LPW	= 000040	#20-2130    28-2524    34-3228    39-3663   
EF.NIR	= ******  GX	 16-1821    29-2543    29-2548    31-2788   
EF.PR1	= ******  GX	 17-1839    33-3027    50-4176    51-4271   
EF.QIO	= 000001	#59-4632   
EF.SEP	= 100000	#16-1816    16-1821   
EF.TEF	= 000400	#16-1817    16-1821    17-1874    19-1998   
EMPTY 	= 000003	#11-1439    12-1549   
EPTR  	= 000000	#11-1411   #20-2136   #44-3930   #59-4589   
ERMHER	  010041 R	 33-3060   #33-3145   
ERMHNG	  010056 R	 33-3079   #33-3147   
ERMNXD	  007767 R	 33-3038   #33-3139   
ERMOFL	  010007 R	 33-3049   #33-3141   
ERMVFE	  010022 R	 33-3054   #33-3143   
ERR   	= 100000	#6-374     #21-2208    37-3390   
ERR10C	= 010000	#11-1411   #20-2136   #44-3930   #59-4589   
ERR10S	= 020000	#11-1411   #20-2136   #44-3930   #59-4589   
ERR11C	= 000001	#11-1411   #20-2136   #44-3930   #59-4589   
ERR11S	= 000002	#11-1411   #20-2136   #44-3930   #59-4589   
EXSP  	  014356 R	#60-4675    61-4738   
E.FCRB	= 000004	#44-3946    50-4147   
E.FCRC	= 000001	#44-3940    47-4042   
E.FCRD	= 000002	#44-3942   
E.FCRS	= 000003	#44-3944    51-4362   
E.FLPC	= 000002	#20-2122    28-2490   
E.FLPD	= 000001	#20-2120   
E.FLPQ	= 000003	#20-2124    33-3132   
E.FLPS	= 000005	#20-2127    33-3184   
E.FLPW	= 000006	#20-2129    28-2492    34-3235   
E.FQIO	= 000001	#59-4631    66-5266    67-5304   
E.IOD 	= ******  GX	 6-443      6-445      11-1448   
E.NIR 	= ******  GX	 6-447      11-1446   
FCN   	  004656 R	 19-1973   #19-2021   
FCNBD 	  004664 R	 19-1976   #19-2023   
FEDRV 	  003670 R	 16-1832    16-1832   #17-1834    17-1880    17-1883    17-1918    17-1927   
FEHD  	  003370 RG	#16-1832   
FER   	= 000020	#6-396     
FESTK 	  003650 RG	 16-1832   #16-1832   
FETBL 	= ******  GX	*17-1849   *17-1884   *17-1915   *17-1926   *19-2011    19-2058   
FETSK 	= ******  GX	 17-1836   *17-1838   *19-1998   
FE.DET	= 040000	#16-1827    17-1849    17-1915    17-1926    18-1938    18-1949    19-2011   
FE.DTE	= 020000	#16-1828    17-1849    17-1926    19-1970    19-1984    19-1997    19-2011   
FE.SER	= 004000	#16-1829    17-1849    17-1884    17-1926    19-2011   
FE.STR	= 002000	#16-1830    19-2025    19-2067   
FILADR	  014472 R	#60-4693    60-4701    63-5032    63-5034   
FILBLK	  014436 R	#60-4692    61-4810    61-4831    61-4850    62-4916    66-5195   
FILCLS	  016720 R	 64-5114    64-5114    64-5120    64-5120   #66-5251   
FILERA	  015366 R	#62-4887    62-4922    62-4928    62-4932   
FILERR	  016252 R	 62-4887    64-5056    64-5066    64-5104    64-5109   #64-5119   
FILERX	  016262 R	 63-4978   #64-5120   
FILFNA	  016562 R	 61-4825    61-4825    61-4857    61-4857   #66-5191   
FILL  	= 000001	#11-1438    12-1526   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 7

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

FILQIO	  016732 R	 61-4783    61-4783    62-4921    62-4921    66-5196    66-5247   #66-5266   
FMT22 	= 010000	#6-419     
FNDFIL	  015126 R	 61-4803   #61-4809    61-4877   
FORPRO	= 000020	#11-1411   #20-2136   #44-3930   #59-4589   
GO    	= 000001	#11-1437    11-1438    11-1439    11-1440    11-1441    11-1442   #21-2227    32-2946    37-3400   
                         37-3425    42-3880   
GOERR 	= 000001	#21-2244    37-3445   
HCE   	= 000200	#6-393     
HCI   	= 002000	#6-421     
HCRC  	= 000400	#6-392     
HDRBFE	  014434 R	#60-4691   *62-4911    66-5202   
HDRBLK	  014430 R	#60-4689   *62-4930   *66-5210    66-5224   
HDRBUF	  014432 R	#60-4690   *62-4909    64-5153   *64-5158    66-5223   
HDR64 	= ******	 63-4998   
HIBYTE	= 177400	#11-1411   #20-2136   #20-2185    30-2732   #44-3930   #59-4589   
H.IPC 	= 000076	#59-4636    63-5027   
H.ISP 	= 000100	#59-4637    63-5028   
H.LUN 	= 000132	#59-4639    61-4758   
H.LUT 	= ******  GX	 17-1903   
H.NLUN	= 000130	#59-4638    64-5048   
IAE   	= 002000	#6-390      8-677      8-686     
IE.ABO	= 177761	 17-1867    19-2012    39-3682   
IE.ACT	= 177771	 65-5176   
IE.BAD	= 177777	 19-2052   
IE.BLK	= 177754	 8-688      12-1596   
IE.DNR	= 177775	 7-622     
IE.IFC	= 177776	 7-547      12-1542    31-2838   
IE.OFL	= 177677	 41-3763   
IE.VER	= 177774	 8-675      12-1601    19-2071   
IE.WLK	= 177764	 8-683     
IFLOP 	= 100000	#11-1411   #20-2136   #44-3930   #59-4589   
ILF   	= 000001	#6-400      8-677     
ILFCD 	  002474 R	 12-1487   #12-1542   
ILR   	= 000002	#6-399      8-677     
INIT  	= 040000	#11-1432    13-1663   
INITCR	  013612 RG	 49-4096    49-4096    49-4107    49-4107    50-4122    50-4122    50-4215    50-4215   #52-4383   
                         56-4503    56-4503   
INITLP	  010426 RG	 28-2515    28-2515    28-2528    28-2528    29-2552    29-2552   #35-3290   
INSHD 	  014016 RG	#60-4672   
INSMSG	  017322 R	 67-5284   #67-5360   
INSTAL	  014636 RG	 60-4672    60-4672   #61-4737    61-4740    65-5183   
INSTK 	  014276 RG	 60-4672   #60-4672   
INTEBL	= 000100	#11-1430    12-1584    13-1620   
INTENB	= 000100	#21-2218    32-2922    32-2926    32-2946    34-3265    35-3303    37-3400    37-3425    39-3668   
                         42-3880   
INTROF	= 000010	#11-1411   #20-2136   #44-3930   #59-4589   
INTRON	= 000040	#11-1411   #20-2136   #44-3930   #59-4589   
INTSON	= 000001	#11-1411   #20-2136   #44-3930   #59-4589   
INT10S	= 000400	#11-1411   #20-2136   #44-3930   #59-4589   
INT11C	= 002000	#11-1411   #20-2136   #44-3930   #59-4589   
INT11S	= 004000	#11-1411   #20-2136   #44-3930   #59-4589   
IOABT 	  004624 R	 19-1966   #19-2004   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 8

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

IODN  	  004232 R	 17-1875   #17-1920   
IODNCR	  014002 R	 54-4449    54-4449    55-4482   #57-4531   
IO.ACW	= 007000	 62-4915   
IO.APV	= 014010	 61-4778   
IO.ATT	= 001400	 19-1977   
IO.DAC	= 010000	 31-2825    66-5251   
IO.FNA	= 004400	 66-5191   
IO.KIL	= 000012	 31-2844   
IO.RLB	= 001000	 7-543      12-1484    13-1625    31-2821   
IO.RVB	= 010400	 31-2823    66-5211    66-5233   
IO.WLB	= 000400	 7-545      12-1486    12-1519    19-2038    31-2817    33-3132    67-5304   
IO.WVB	= 011000	 6-453      31-2819    66-5216   
IPAERR	  015632 R	#63-4971    63-5022   
IS.RDD	= 000002	 13-1634   
IS.SUC	= 000001	 8-672      8-910      13-1637    19-2030    31-2851    42-3847   
KLPWRF	= 000010	#11-1411   #20-2136   #44-3930   #59-4589   
KT11  	= ******	 63-4970    63-5020   
LBLBFE	  014426 R	#60-4688   *62-4904    64-5051    64-5060   
LBLBLK	  014420 R	#60-4685   *62-4926    64-5063   *66-5235    66-5236   
LBLBUF	  014424 R	#60-4687   *62-4902    64-5149   *64-5157    66-5234   
LBLNUM	  014422 R	#60-4686   *63-5040    64-5063   
LOAD11	= 000004	#11-1411   #20-2136   #44-3930   #59-4589   
LOBYTE	= 000377	#20-2184    20-2185    39-3682    41-3763    42-3847   
LOINIT	= 000400	#21-2215   
LPALOC	= 000214	#20-2115   
LPBCTR	= 000006  G	#21-2248    32-2944    37-3392   *37-3409    37-3410   *37-3424   *42-3834   *42-3861   *42-3870   
LPBSAD	= 000004  G	#21-2246    37-3411   *37-3416   *42-3860   *42-3868   *42-3869   
LPCBUF	= 000014  G	#21-2261   *34-3245   *34-3248    37-3420   
LPCCTR	= 000015  G	#21-2262   
LPCEVF	= ******  GX	*29-2547    30-2584    31-2788    32-2914   
LPCKSM	= 000017  G	#21-2265    32-2943    37-3389   
LPCSA 	= ******  GX	*28-2507    30-2590    32-2919   *35-3302    37-3382    39-3666    40-3720    41-3756   
LPCSM 	= ******  GX	*32-2942   *32-2943    33-3161   *34-3257   *37-3388   *37-3389   
LPCSRA	= 000000  G	#21-2207   
LPCSRB	= 000002  G	#21-2229    33-3057    33-3081    33-3102    37-3445   
LPDCLR	  010476 R	 28-2502   #35-3304   
LPDINT	  007046 R	 28-2500   #32-2923   
LPEMSG	  007734 R	 33-3122    33-3132   #33-3133   
LPEMSX	  007747 R	 33-3118   #33-3137   
LPERUN	  007744 R	*33-3127   #33-3135   
LPEVFG	= ******  GX	*28-2522   *28-2523    28-2524    29-2547    29-2548    30-2633    32-2958    33-3024    33-3186   
                         33-3194    34-3228    35-3310    37-3458    38-3569    39-3663    39-3688    40-3725    41-3784   
                         42-3853   
LPEXPA	= ******  GX	 35-3301   
LPEXPZ	= ******  GX	 33-3160   
LPHD  	  005130 RG	#25-2394   
LPHUNG	= ******  GX	*32-2938   
LPINI 	  005520 R	 25-2394    25-2394   #28-2521   
LPIOD 	  005672 R	#30-2583   
LPITH 	= ******  GX	 30-2603    30-2622    32-2934    32-2950   *35-3305    37-3383   *37-3452    39-3661   *39-3665   
                         40-3718   *42-3832   
LPLOOP	  005604 R	#29-2542    32-2968   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 9

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

LPMCB 	= ******  GX	 37-3415   *42-3865    42-3868   
LPMKT 	  007012 R	#32-2913   
LPMRKT	  005430 R	#28-2489    28-2525   
LPNIR 	  006552 R	 30-2658   #31-2787    31-2855    31-2881   
LPPCTR	= 000010  G	#21-2252   *30-2705    34-3261   *34-3261    37-3438   *37-3438    39-3669   *39-3669    40-3722   
                        *40-3722   
LPQDPB	  007712 R	*33-3123    33-3128   #33-3131   
LPRAMD	= 000012  G	#21-2256   *34-3247    37-3417   
LPRMA 	= ******  GX	 30-2671   *30-2676    30-2687   *30-2726    30-2729    39-3657   
LPRMC 	= ******  GX	*30-2677    30-2692    30-2711   *30-2741   
LPRMZ 	= ******  GX	 30-2672    30-2696   *30-2724    30-2730   
LPRTRY	= 000012	#20-2116    33-3162    41-3755   
LPRTY 	= ******  GX	*32-2939    33-3073    33-3163   *37-3398   *37-3447   *41-3755   
LPSIZE	= ******  GX	 30-2653    32-2964    35-3307    38-3537    39-3654    40-3715   
LPSSTV	  005454 R	#28-2494    28-2526   
LPSTBK	= ******  GX	 33-3030    33-3159    33-3167    33-3177   
LPSTK 	  005410 RG	 25-2394   #25-2394   
LPSTLN	= ******  GX	 33-3167    33-3181   
LPTBL 	= ******  GX	 30-2586    30-2646    32-2917    35-3293    38-3537    39-3654    40-3715   
LPTDAT	= 000016  G	#21-2264   
LPTHD 	= ******  GX	 30-2595    30-2631   *30-2743    32-2930    33-3062    39-3671    41-3768   *41-3783   
LPTPAR	= 000040	#21-2239    33-3057    37-3445   
LPTPBT	= 010000	#21-2231   
LPTRP4	  005456 R	 28-2495   #28-2499   
LPUNIT	= ******  GX	*37-3376    37-3378   
LPUTBL	= ******  GX	 31-2814    37-3381   
LPWRUP	  005512 R	#28-2514    28-2527   
LP.CLR	= 002000	#26-2419    33-3055    33-3084    34-3237    34-3239   
LP.EOF	= 000200	#26-2427    30-2689    33-3042    34-3254    34-3256   
LP.F10	= 000400	#26-2424    30-2635    30-2762    33-3110    33-3195    38-3539   
LP.HNG	= 100000	#26-2402    30-2635    32-2932    32-2960    33-3076    42-3831   
LP.LIP	= 001000	#26-2421    30-2608    30-2635    30-2665    30-2668    30-2694    34-3240    39-3659    42-3824   
LP.MCH	= 010000	#26-2411    30-2635    37-3407    37-3423    42-3826    42-3831    42-3871   
LP.PZI	= 020000	#26-2408    30-2703    30-2707    33-3090    37-3436   
LP.SST	= 040000	#26-2405    30-2614    30-2689    32-2957    33-3023    33-3197    37-3457    38-3568    41-3765   
LP.UNT	= 000003	#26-2431    33-3125    33-3179    35-3296    37-3380   
LP.WAT	= 004000	#26-2414    30-2620    30-2635    32-2928    33-3094    33-3100    33-3115    39-3656    40-3717   
                         42-3831   
L$BBLK	= 000024	#59-4651   
L$BFLG	= 000010	#59-4645   
L$BHRB	= 000022	#59-4650    62-4930   
L$BLDZ	= 000014	#59-4647   
L$BMXZ	= 000016	#59-4648   
L$BPAR	= 000004	#59-4644   
L$BPRI	= 000012	#59-4646   
L$BSA 	= 000020	#59-4649   
L$BTSK	= 000000	#59-4643   
L$$P20	= 000002	#1-39       30-2587    32-2916    35-3292    38-3537    39-3654    40-3715   
MCPE  	= 020000	#6-346      8-673     
MDPE  	= 000400	#6-368      8-742     
MEFCN 	  004666 R	 19-2022   #19-2025   
MEMPAR	= 000020	#21-2240    33-3057    37-3445   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 10

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

MKDNR 	  000404 RG	#6-449      7-646     
MKSCDP	  005442 R	#28-2491    34-3233   
MNTBLK	  014604 R	#60-4704    61-4780   
MNTSYD	  014704 R	#61-4752    61-4799   
MODE00	= 000004	#21-2222    30-2669    30-2695    30-2698   
MODE01	= 000010	#21-2221    30-2669   
MOL   	= 010000	#6-375      7-625     
MPE11 	= 001000	#11-1411   #20-2136   #44-3930   #59-4589   
MSGDPB	  000422 R	#6-453     *7-641      7-645     *7-650     
MSGSIZ	= 000016	 6-453     #6-460     
MXF   	= 001000	#6-367      8-742     
M.KTAE	= 000010	#6-449     #28-2490   #28-2492   #47-4042   
M.KTEF	= 000002	#6-449     #28-2490   #28-2492   #47-4042   
M.KTMG	= 000004	#6-449     #28-2490   #28-2492   #47-4042   
M.KTUN	= 000006	#6-449     #28-2490   #28-2492   #47-4042   
NED   	= 010000	#6-364      8-679     
NEM   	= 004000	#6-365      8-679     
NODADR	= ******  GX	 17-1846   *17-1847    17-1879   *17-1885    17-1922   *17-1923    19-1974    19-2004   *19-2010   
NULSTP	= 000040	#11-1411   #20-2136   #44-3930   #59-4589   
NUPE  	= 000002	#11-1411   #20-2136   #44-3930   #59-4589   
NXTHDR	  016602 R	 64-5055    64-5055    64-5103    64-5103   #66-5202   
NXTSEC	  003272 R	 12-1564    12-1564    13-1627    13-1627   #15-1736   
N.DID 	= 000024	#59-4665   
N.FID 	= 000000	#59-4659    61-4850    62-4916   
N.FNAM	= 000006	#59-4660    61-4810    61-4831   
N.FTYP	= 000014	#59-4661   
N.FVER	= 000016	#59-4662   
N.NEXT	= 000022	#59-4664   
N.STAT	= 000020	#59-4663   
OFFLIN	= 000200	#21-2237   
ONLINE	= 004000	#21-2212    33-3046    34-3225    41-3758   
OPI   	= 020000	#6-387     
OPTVFU	= 004000	#21-2232    33-3102   
PAGZRO	= 040000	#21-2209    33-3088    34-3259    37-3390    37-3434   
PARENB	= 000002	#21-2226    32-2946    34-3265    35-3303    37-3400    37-3425    39-3668    42-3880   
PARFND	  015670 R	 63-4962   #63-4982   
PARMSG	  017343 R	 67-5295   #67-5362   
PBTHRD	= 000004	#20-2175    20-2177    20-2178    20-2179    30-2753    31-2863    31-2864   
PERCLR	= 001000	#11-1411   #20-2136   #44-3930   #59-4589   
PGE   	= 002000	#6-366      8-742     
PGM   	= 001000	#6-377     
PHYBLK	= 000040	#11-1420    12-1509    13-1632    14-1695   
PHYS  	= 100000	#11-1411   #20-2136   #44-3930   #59-4589   
PIDENT	= 000000	#11-1411   #20-2136   #44-3930   #59-4589   
PRI7  	= 000340	#11-1411   #20-2136   #44-3930   #59-4589   
PROPNT	= 000021	#11-1411   #20-2136   #44-3930   #59-4589   
PRTOFF	= 004000	#11-1411   #20-2136   #44-3930   #59-4589   
PR0   	= 000000	#11-1411   #20-2136   #44-3930   #59-4589   
PR1   	= 000040	#11-1411   #20-2136   #44-3930   #59-4589   
PR2   	= 000100	#11-1411   #20-2136   #44-3930   #59-4589   
PR3   	= 000140	#11-1411   #20-2136   #44-3930   #59-4589   
PR4   	= 000200	#11-1411   #20-2136    32-2941    34-3268   #44-3930   #59-4589   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 11

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

PR5   	= 000240	#11-1411   #20-2136   #44-3930   #59-4589   
PR6   	= 000300	#11-1411   #20-2136   #44-3930   #59-4589   
PR7   	= 000340	#11-1411    19-2035   #20-2136    29-2546    30-2630   #44-3930    50-4116   #59-4589   
PS    	= 177776	 7-591      7-631      7-643     #11-1411    12-1586    12-1597    17-1835    17-1835    18-1950   
                         18-1950    18-1955    19-2035    19-2035    19-2055   #20-2136    29-2546    29-2546    29-2549   
                         30-2630    30-2630    30-2637    32-2941    32-2941    32-2953    34-3268    34-3268    34-3270   
                         37-3376    41-3767    41-3767   #44-3930    50-4116    50-4116    50-4119   #59-4589    64-5123   
                         64-5123    65-5165    65-5165   
PSWW1 	= 000005	#11-1411   #20-2136   #44-3930   #59-4589   
PSWW10	= 000014	#11-1411   #20-2136   #44-3930   #59-4589   
PSWW11	= 000015	#11-1411   #20-2136   #44-3930   #59-4589   
PSWW12	= 000016	#11-1411   #20-2136   #44-3930   #59-4589   
PSWW13	= 000017	#11-1411   #20-2136   #44-3930   #59-4589   
PSWW2 	= 000006	#11-1411   #20-2136   #44-3930   #59-4589   
PSWW3 	= 000007	#11-1411   #20-2136   #44-3930   #59-4589   
PSWW4 	= 000010	#11-1411   #20-2136   #44-3930   #59-4589   
PSWW5 	= 000011	#11-1411   #20-2136   #44-3930   #59-4589   
PSWW6 	= 000012	#11-1411   #20-2136   #44-3930   #59-4589   
PSWW7 	= 000013	#11-1411   #20-2136   #44-3930   #59-4589   
PUDADR	  014416 R	#60-4684   *61-4760    61-4789   *61-4876    63-4989    64-5072   
PULSE 	= 000020	#11-1411   #20-2136   #44-3930   #59-4589   
PUTR50	  017224 R	 67-5291    67-5291    67-5298    67-5298   #67-5322   
PUTR51	  017234 R	 67-5323    67-5323   #67-5331   
PUTSTR	  017214 R	 67-5285    67-5285    67-5287    67-5287    67-5289    67-5289    67-5296    67-5296   #67-5313   
                         67-5314   
QIOSTS	  014476 R	#60-4694    66-5266    66-5269   
QSIZE 	= 000023	#11-1411   #20-2136   #44-3930   #59-4589   
Q.IOAE	= 000012	#6-453     #33-3132   
Q.IOEF	= 000006	#6-453     #33-3132   
Q.IOFN	= 000002	#6-453     #33-3132   
Q.IOLU	= 000004	#6-453     #33-3132   
Q.IOPL	= 000014	#6-453     *7-641     *7-650     *33-3123   #33-3132   
Q.IOPR	= 000007	#6-453     #33-3132   
Q.IOSB	= 000010	#6-453     #33-3132   
RAMIS0	= 010000	#11-1411   #20-2136   #44-3930   #59-4589   
RAMLOD	= 000003	#21-2225    30-2698   
RAMPAR	= 000010	#21-2241    33-3057    33-3081    37-3445   
RCVBLK	  014360 R	#60-4681    61-4739    61-4771   
READ  	= 000007	#11-1441    12-1518   
REDHDR	  016616 R	 62-4931    62-4931   #66-5210   
REDLBL	  016660 R	 62-4927    62-4927    64-5065    64-5065   #66-5232   
REQBLK	  014364 R	#60-4682    60-4683    61-4830    63-4943    64-5124    65-5168    65-5169    67-5290   
REQTSK	  016444 R	 64-5115   #65-5165   
RETALL	  016354 R	#64-5141   
RETBUF	  016376 R	 62-4891    62-4891    64-5113    64-5113    64-5142   #64-5147   
RETNOD	  016266 R	 61-4881   #64-5122    65-5179   
RETRY 	= 000010	#6-434      7-551     #11-1419    12-1502   
RETXXX	  016656 R	 66-5203    66-5205   #66-5228   
RFMAD0	= 100000	#11-1411   #20-2136   #44-3930   #59-4589   
RFMAD1	= 040000	#11-1411   #20-2136   #44-3930   #59-4589   
RFMAD2	= 020000	#11-1411   #20-2136   #44-3930   #59-4589   
RFMAD3	= 010000	#11-1411   #20-2136   #44-3930   #59-4589   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 12

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

RM    	= 000010	#11-1411   #20-2136   #44-3930   #59-4589   
RMR   	= 000004	#6-398      8-677     
RPAS  	= 000016	#6-404     
RPBA  	= 000004	#6-353     
RPBUF 	= ******  GX	*7-536     *7-541     *7-542     *7-550      7-606      7-630      7-636      7-637     *8-723     
                        *8-724      8-818      8-934     
RPCNT 	= ******  GX	*7-534      7-607      8-770     
RPCS1 	= 000000	#6-343     
RPCS2 	= 000010	#6-359      7-586      7-603      8-679      8-742     
RPDA  	= 000006	#6-355     
RPDBR 	= 000022	#6-408     
RPDC  	= 000034	#6-424     *7-629     
RPDS  	= 000012	#6-372      7-623     
RPDT  	= 000026	#6-412     
RPEC1 	= 000044	#6-426      8-803     
RPEC2 	= 000046	#6-428      8-826     
RPER1 	= 000014	#6-383      7-627      8-676     
RPEXP 	= 176700	#6-339      7-586      7-589      7-603      8-663     
RPHD  	  000070 RG	#6-441     
RPLA  	= 000020	#6-406     
RPMR  	= 000024	#6-410     
RPOF  	= 000032	#6-417     
RPRNA 	= ******  GX	*7-533      7-602      7-635      8-719     
RPRTC 	= ******  GX	*7-551     *8-707     
RPSN  	= 000030	#6-414     
RPSTK 	  000350 RG	 6-441     #6-441     
RPTSK 	= ******  GX	*8-725     
RPUNIT	= ******  GX	*7-535      7-588      7-604     
RPWC  	= 000002	#6-351      8-768      8-919     
RPWLO 	  000400 R	#6-447      7-513     
RSTERR	= 001000	#21-2214    34-3265    35-3303    39-3668   
RSX$$E	= 000041	#3-100     
RSX$$F	= 000102	#3-108     #3-117      3-119     
RSX$$K	= 000126	#3-104     
RSX$$V	= 000013	#3-99      
RWRBLK	  016712 R	 66-5225    66-5225    66-5237    66-5237   #66-5246   
RWRHDR	  016634 R	 66-5212   #66-5222   
RXCS  	= 000000	#11-1426   
RXDB  	= 000002	#11-1427   *12-1579   *12-1582   
R$$E16	= ******	 8-860      8-998     
R$$E18	= 000001	#6-322      6-481      8-792      8-937     
R$$JPO	= ******	 6-462      7-553      7-612      8-665      8-772      8-784      8-913      8-1020    
R$$11D	= 000001	#1-48      
R.AT  	= ******  GX	 17-1898   
R.DP  	= ******  GX	 17-1907   
R.FC  	= ******  GX	 7-543      7-545      12-1484    12-1486    12-1509    12-1514    17-1891    19-1975    19-1977   
                         31-2815    31-2844   
R.LU  	= ******  GX	 17-1893   
R.PB  	= ******  GX	 7-561      7-562     *7-574     *7-580      7-605      7-629      8-720      12-1503    12-1508   
                         13-1639    17-1911    17-1912    19-1979    19-1980    30-2753    31-2863    31-2867   
R50TBL	  017306 R	 67-5337   #67-5352   
SCD   	= 000040	#11-1411   #20-2136   #44-3930   #59-4589   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 13

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

SETBUF	  003314 R	 12-1524    12-1524    12-1550    12-1550   #15-1754   
SETLUN	  016046 R	#64-5048   
SETSTD	  015536 R	#63-4941   
SF.IR 	= 040000	#59-4623    65-5167   
SF.TA 	= 000001	#59-4622    65-5167   
SNSTR 	  004274 R	 17-1916    17-1916   #17-1929    18-1953    18-1953    19-2064    19-2064   
SSTSCR	  013204 R	 50-4162    50-4162    50-4181    50-4181   #51-4267   
SSTSLP	  007234 R	 30-2616    30-2616   #33-3021   
STAT  	= 174434	#11-1411   #20-2136   #44-3930   #59-4589   
STATD 	= 000034	#3-126     
STATUS	= 000022	#11-1411   #20-2136   #44-3930   #59-4589   
STDADR	= 014376 R	#60-4683    63-4941    64-5141   *64-5145    65-5166    67-5292   
STSWD 	= ******  GX	*17-1848   *17-1917    17-1920    17-1921   *17-1924   *19-1982   *19-1983   
SWR   	= 177570	#11-1411   #20-2136   #44-3930   #59-4589   
SWSLLT	= 100000	#11-1411   #20-2136   #44-3930   #59-4589   
SYFLAG	  014357 R	#60-4680    61-4802   *61-4805   
SYMNTD	  015040 R	 61-4762    61-4784   #61-4788   
SYMNT1	  015104 R	 61-4793    61-4795   #61-4801   
SYNTIM	= 000004	#21-2242    33-3057    37-3445   
S.DRFN	= 000034	#59-4666    60-4692   
S.FW  	= ******  GX	*65-5167   
S.TD  	= ******  GX	 67-5293   
TASKNF	  015262 R	 61-4754    61-4786    61-4826   #61-4863    61-4868    61-4870    61-4872    61-4875   
TB.ABO	= 040000	#20-2166    30-2680    39-3679    39-3682   
TB.DON	= 100000	#20-2165    38-3611    39-3682    41-3763    42-3847   
TB.EOF	= 020000	#20-2167    20-2171    30-2685    38-3593   
TB.LPC	= 010000	#20-2168    20-2171    30-2701    38-3584   
TB.RMD	= 004000	#20-2169    20-2171    30-2715    38-3599   
TB.SFN	= 036000	#20-2171    30-2682    42-3837   
TB.VFD	= 002000	#20-2170    20-2171    38-3605   
TENAD1	= 174410	#11-1411   #20-2136   #44-3930   #59-4589   
TENAD2	= 174412	#11-1411   #20-2136   #44-3930   #59-4589   
TESTLP	  010236 R	 30-2624    30-2624   #34-3224   
TEST00	= 000400	#21-2235   
TEST01	= 001000	#21-2234   
TEST02	= 002000	#21-2233   
TNAD1 	= 000010	#3-132     
TNAD2 	= 000012	#3-133     
TNCERR	  015656 R	#63-4976    63-5036   
TNFERR	  015352 R	 61-4866   #61-4879   
TOBM  	= 000004	#11-1411   #20-2136   #44-3930   #59-4589   
TOD   	= 000003	#11-1411   #20-2136   #44-3930   #59-4589   
TOIP  	= 000002	#11-1411   #20-2136   #44-3930   #59-4589   
TOIT  	= 000001	#11-1411   #20-2136   #44-3930   #59-4589   
TO10  	= 000200	#11-1411   #20-2136   #44-3930   #59-4589   
TO10AD	= 174420	#11-1411   #20-2136   #44-3930   #59-4589   
TO10BC	= 174414	#11-1411   #20-2136   #44-3930   #59-4589   
TO10BM	= 000001	#11-1411   #20-2136   #44-3930   #59-4589   
TO10DB	= 000400	#11-1411   #20-2136   #44-3930   #59-4589   
TO10DN	= 100000	#11-1411   #20-2136   #44-3930   #59-4589   
TO10DT	= 174424	#11-1411   #20-2136   #44-3930   #59-4589   
TO10ER	= 020000	#11-1411   #20-2136   #44-3930   #59-4589   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 14

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

TO10PK	= ******  GX	 17-1888   
TO11  	= 000100	#11-1411   #20-2136   #44-3930   #59-4589   
TO11AD	= 174422	#11-1411   #20-2136   #44-3930   #59-4589   
TO11BC	= 174416	#11-1411   #20-2136   #44-3930   #59-4589   
TO11BM	= 020000	#11-1411   #20-2136   #44-3930   #59-4589   
TO11DB	= 004000	#11-1411   #20-2136   #44-3930   #59-4589   
TO11DN	= 000200	#11-1411   #20-2136   #44-3930   #59-4589   
TO11DT	= 174426	#11-1411   #20-2136   #44-3930   #59-4589   
TO11ER	= 000002	#11-1411   #20-2136   #44-3930   #59-4589   
TR    	= 000200	#11-1431    12-1531    12-1551    15-1773   
TRE   	= 040000	#6-345      8-673     
TRKSEC	  003144 R	 12-1516    12-1516   #14-1682   
TRWAIT	  003344 R	 12-1577    12-1577    12-1580    12-1580   #15-1772   
TSKFND	  015404 R	 61-4858   #62-4898   
TSKLUN	= 000002	#59-4627    61-4753    61-4758    61-4874    66-5266   
TSKMSG	  017334 R	 67-5288   #67-5361   
TSTMOD	= 000001	#21-2223   
TTBERR	  015644 R	#63-4974    63-5019   
TTPEN 	= ******  GX	 6-441      11-1444    16-1832    25-2394    47-4017    60-4672   
TYPBUF	  014502 R	#60-4695    67-5283    67-5302   
TYPMSG	  017012 R	 61-4785    61-4785    61-4804    61-4804    61-4880    61-4880    63-4968    63-4968    63-4971   
                         63-4971    63-4974    63-4974    63-4976    63-4976    64-5119    64-5119    65-5179    65-5179   
                        #67-5282   
T.BA  	= ******  GX	 63-4997    63-5021   
T.HBCT	= ******  GX	 30-2744   *31-2868    33-3069    42-3863   
T.HCAD	= ******  GX	*30-2687    30-2693    30-2704    30-2731   *31-2869   *37-3411    38-3581    38-3590    42-3860   
T.HCBC	= ******  GX	 30-2601    30-2679   *30-2692   *30-2693   *31-2870   *37-3410    38-3540   *38-3541   *38-3612   
                        *39-3679    39-3680   *39-3682   *41-3763    42-3834    42-3837   *42-3847   
T.HEMA	= 177774	#20-2177   *31-2871    42-3875   
T.HIBC	= 177776	#20-2179    30-2751    31-2864   
T.HVFC	= 177775	#20-2178   *31-2875    42-3865   *42-3867   
T.PN  	= ******  GX	 63-4959    63-4961   
T.PZ  	= ******  GX	 63-5018   
T.SZ  	= ******  GX	 63-4964   
T10AD 	= 000020	#3-130     
T11AD 	= 000022	#3-129     
T11BC 	= 000016	#3-131     
T50TBL	  017276 R	 67-5331   #67-5350   
UF.TL 	= ******  GX	 61-4869   
UNASG1	= 000032	#11-1411   #20-2136   #44-3930   #59-4589   
UNASG2	= 000033	#11-1411   #20-2136   #44-3930   #59-4589   
UNASG3	= 000034	#11-1411   #20-2136   #44-3930   #59-4589   
UNASG4	= 000035	#11-1411   #20-2136   #44-3930   #59-4589   
UNASG5	= 000036	#11-1411   #20-2136   #44-3930   #59-4589   
UNASG6	= 000037	#11-1411   #20-2136   #44-3930   #59-4589   
UNIT  	= 000020	#11-1428    12-1479   
UNS   	= 040000	#6-386      7-627      8-677     
UPE   	= 020000	#6-363      8-742     
U.ACP 	= ******  GX	*61-4776   
U.DACP	= ******  GX	 61-4774   
U.DN  	= ******  GX	 61-4790    61-4874    64-5078   
U.FB  	= ******  GX	 61-4869   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 15

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

U.RP  	= ******  GX	 17-1904    61-4759    61-4867   
U.SZ  	= 000050	#59-4621    61-4747    61-4864    63-4993    64-5083   
U.UN  	= ******  GX	 61-4791    61-4874    64-5080   
U.VA  	= ******  GX	 61-4761    61-4871   
VFCFF 	  007000 R	 31-2830   #31-2887   
VFCTBL	  006776 R	 31-2873   #31-2885   
VFUERR	= 000100	#21-2238    37-3445   
VFULOD	= 000002	#21-2224    30-2695   
VFURDY	= 010000	#21-2211    33-3051   
VV    	= 000100	#6-379      7-625     
WCE   	= 040000	#6-362      8-742     
WCF   	= 000040	#6-395     
WEP   	= 000010	#11-1411   #20-2136   #44-3930   #59-4589   
WFDNR 	  000416 RG	#6-451      7-647     
WFEF1 	  003362 R	#16-1821    17-1834   
WFPKT 	  002230 R	#11-1446    12-1473   
WLE   	= 004000	#6-389      8-677      8-681     
WRITE 	= 000005	#11-1440    12-1570   
WRL   	= 004000	#6-376     
WRTDD 	= 000015	#11-1442    12-1573   
WRTHDR	  016630 R	 64-5108    64-5108    66-5204    66-5204   #66-5216   
W.TSEF	= 000002	#6-443     #6-447     #6-451     #11-1446   #11-1448   
ZSTOP 	= 040000	#11-1411   #20-2136   #44-3930   #59-4589   
$CDINT	  013636 RG	#54-4436   
$CD11 	= 000001	#1-40      
$DBDTE	= 000001	#1-46      
$DH11 	= 000001	#1-44      
$DIRAC	= 000001	#6-318      7-518     #16-1783    17-1855    19-2005   
$DIV  	  000032 RG	#4-259      7-577      7-577      8-808      8-808      67-5335    67-5335   
$DSW  	= ******  GX	 65-5171    65-5176   
$DTA  	= ******	 8-1089    
$DTE  	= 000001	#1-47      
$DXINT	  002732 RG	#13-1609   
$FE   	= 000001	#1-42      
$F11  	= 000001	#1-43      
$LPINT	  010526 RG	#37-3375   
$LP20 	= 000001	#1-38      
$MUL  	  000000 RG	#4-232     
$RP04 	= 000001	#1-41      
$RX11 	= 000001	#1-63       10-1349   
$TOP10	= ******	 1-54       3-109     
$TOP20	= 000001	#1-36       1-62       3-116     
$T1091	= ******	 1-50      
$$    	= 000037	#7-515      7-515     #7-577      7-577     #7-638      7-638     #8-726      8-726     #8-808     
                         8-808     #8-827      8-827     #8-837      8-837     #8-843      8-843     #8-844      8-844     
                        #8-845      8-845     #8-852      8-852     #12-1475    12-1475   #12-1516    12-1516   #12-1524   
                         12-1524   #12-1550    12-1550   #12-1564    12-1564   #12-1577    12-1577   #12-1580    12-1580   
                        #12-1592    12-1592   #13-1627    13-1627   #13-1643    13-1643   #17-1853    17-1853   #17-1868   
                         17-1868   #17-1873    17-1873   #17-1882    17-1882   #17-1916    17-1916   #17-1925    17-1925   
                        #18-1953    18-1953   #19-1999    19-1999   #19-2013    19-2013   #19-2064    19-2064   #28-2515   
                         28-2515   #28-2528    28-2528   #29-2552    29-2552   #30-2616    30-2616   #30-2624    30-2624   
                        #30-2648    30-2648   #30-2674    30-2674   #30-2719    30-2719   #30-2754    30-2754   #30-2761   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 16

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

                         30-2761   #31-2791    31-2791   #31-2846    31-2846   #31-2854    31-2854   #31-2880    31-2880   
                        #32-2951    32-2951   #33-3086    33-3086   #33-3187    33-3187   #34-3269    34-3269   #37-3394   
                         37-3394   #37-3439    37-3439   #37-3459    37-3459   #38-3570    38-3570   #38-3575    38-3575   
                        #38-3618    38-3618   #39-3689    39-3689   #40-3726    40-3726   #41-3785    41-3785   #41-3790   
                         41-3790   #42-3854    42-3854   #49-4096    49-4096   #49-4107    49-4107   #50-4122    50-4122   
                        #50-4150    50-4150   #50-4162    50-4162   #50-4181    50-4181   #50-4215    50-4215   #51-4365   
                         51-4365   #54-4449    54-4449   #55-4478    55-4478   #56-4503    56-4503   #57-4532    57-4532   
                        #61-4742    61-4742   #61-4775    61-4775   #61-4783    61-4783   #61-4785    61-4785   #61-4804   
                         61-4804   #61-4825    61-4825   #61-4857    61-4857   #61-4880    61-4880   #62-4891    62-4891   
                        #62-4900    62-4900   #62-4907    62-4907   #62-4921    62-4921   #62-4927    62-4927   #62-4931   
                         62-4931   #63-4968    63-4968   #63-4971    63-4971   #63-4974    63-4974   #63-4976    63-4976   
                        #64-5055    64-5055   #64-5065    64-5065   #64-5103    64-5103   #64-5108    64-5108   #64-5113   
                         64-5113   #64-5114    64-5114   #64-5119    64-5119   #64-5120    64-5120   #64-5125    64-5125   
                        #64-5137    64-5137   #64-5144    64-5144   #64-5151    64-5151   #64-5155    64-5155   #65-5170   
                         65-5170   #65-5179    65-5179   #66-5204    66-5204   #66-5225    66-5225   #66-5237    66-5237   
                        #67-5285    67-5285   #67-5287    67-5287   #67-5289    67-5289   #67-5291    67-5291   #67-5296   
                         67-5296   #67-5298    67-5298   #67-5323    67-5323   #67-5335    67-5335   
$$$   	= 000251 R	#33-3202    33-3202   #33-3202    33-3202   #33-3202    33-3202   #33-3202    33-3202   #33-3202   
                         33-3202    33-3202    33-3202    33-3202    33-3202    33-3202   #33-3202    33-3202    33-3202   
                         33-3202    33-3202    33-3202   #33-3202    33-3202    33-3202    33-3202    33-3202    33-3202   
                        #33-3202    33-3202    33-3202    33-3202    33-3202    33-3202   #33-3202   #35-3311    35-3311   
                        #35-3311    35-3311   #35-3311    35-3311   #35-3311    35-3311    35-3311    35-3311    35-3311   
                         35-3311   #35-3311    35-3311    35-3311    35-3311    35-3311   #35-3311    35-3311    35-3311   
                         35-3311    35-3311   #35-3311   #37-3464    37-3464   #37-3464    37-3464   #37-3464    37-3464   
                        #37-3464    37-3464    37-3464    37-3464    37-3464    37-3464   #37-3464    37-3464    37-3464   
                         37-3464    37-3464   #37-3464    37-3464    37-3464    37-3464    37-3464   #37-3464   #38-3623   
                         38-3623   #38-3623    38-3623   #38-3623    38-3623   #38-3623    38-3623    38-3623    38-3623   
                         38-3623    38-3623   #38-3623    38-3623    38-3623    38-3623    38-3623   #38-3623    38-3623   
                         38-3623    38-3623    38-3623   #38-3623   #39-3691    39-3691   #39-3691    39-3691   #39-3691   
                         39-3691   #39-3691    39-3691    39-3691    39-3691    39-3691    39-3691   #39-3691    39-3691   
                         39-3691    39-3691    39-3691   #39-3691    39-3691    39-3691    39-3691    39-3691   #39-3691   
                        #40-3728    40-3728   #40-3728    40-3728    40-3728    40-3728   #40-3728   #41-3791    41-3791   
                        #41-3791    41-3791   #41-3791    41-3791    41-3791    41-3791    41-3791   #41-3791    41-3791   
                         41-3791    41-3791   #41-3791   #61-4785    61-4785   #61-4804    61-4804   #61-4880    61-4880   
                        #63-4968    63-4968   #63-4971    63-4971   #63-4974    63-4974   #63-4976    63-4976   #64-5119   
                         64-5119   #65-5179    65-5179   
$$$ARG	= 000003	#6-453      6-453     #6-453      6-453     #6-453      6-453     #33-3132    33-3132   #33-3132   
                         33-3132   #33-3132    33-3132   #33-3132    33-3132   #61-4753    61-4753   #61-4753    61-4753   
                        #61-4753    61-4753   #61-4753    61-4753    61-4753    61-4753    61-4753    61-4753    61-4753   
                         61-4753    61-4753    61-4753    61-4753   #61-4874    61-4874   #61-4874    61-4874   #61-4874   
                         61-4874   #61-4874    61-4874    61-4874    61-4874    61-4874    61-4874    61-4874    61-4874   
                         61-4874    61-4874    61-4874   #66-5266    66-5266    66-5266    66-5266    66-5266    66-5266   
                         66-5266    66-5266    66-5266    66-5266    66-5266    66-5266   #67-5304    67-5304    67-5304   
                         67-5304    67-5304    67-5304    67-5304    67-5304    67-5304    67-5304    67-5304    67-5304   
$$$GLB	= ******	 6-443      6-443      6-445      6-445      6-447      6-447      6-449      6-449      6-449     
                         6-449      6-449      6-451      6-451      6-453      6-453      6-453      6-453      6-453     
                         6-453      6-453      6-453      11-1446    11-1446    11-1448    11-1448    16-1821    28-2490   
                         28-2490    28-2490    28-2490    28-2490    28-2492    28-2492    28-2492    28-2492    28-2492   
                         33-3132    33-3132    33-3132    33-3132    33-3132    33-3132    33-3132    33-3132    47-4042   
                         47-4042    47-4042    47-4042    47-4042   
$$$OST	= 000012	#6-443      6-443      6-443     #6-443     #6-445      6-445      6-445     #6-445     #6-447     
                         6-447      6-447     #6-447     #6-449      6-449      6-449     #6-449      6-449      6-449     
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 17

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

                        #6-449      6-449      6-449     #6-449      6-449      6-449     #6-449     #6-451      6-451     
                         6-451     #6-451     #6-453      6-453      6-453     #6-453      6-453      6-453     #6-453     
                         6-453      6-453     #6-453      6-453      6-453     #6-453      6-453      6-453     #6-453     
                         6-453      6-453     #6-453      6-453     #11-1446    11-1446    11-1446   #11-1446   #11-1448   
                         11-1448    11-1448   #11-1448   #28-2490    28-2490    28-2490   #28-2490    28-2490    28-2490   
                        #28-2490    28-2490    28-2490   #28-2490    28-2490    28-2490   #28-2490   #28-2492    28-2492   
                         28-2492   #28-2492    28-2492    28-2492   #28-2492    28-2492    28-2492   #28-2492    28-2492   
                         28-2492   #28-2492   #33-3132    33-3132    33-3132   #33-3132    33-3132    33-3132   #33-3132   
                         33-3132    33-3132   #33-3132    33-3132    33-3132   #33-3132    33-3132    33-3132   #33-3132   
                         33-3132    33-3132   #33-3132    33-3132   #47-4042    47-4042    47-4042   #47-4042    47-4042   
                         47-4042   #47-4042    47-4042    47-4042   #47-4042    47-4042    47-4042   #47-4042   
$$$T1 	= 000011	#61-4739    61-4739   #66-5266    66-5266   #67-5304    67-5304   
$$$T2 	= 000000	#65-5169    65-5169   
$$$$  	= 000002	#33-3202    33-3202   #33-3202    33-3202    33-3202   #33-3202    33-3202    33-3202   #33-3202   
                         33-3202    33-3202   #33-3202    33-3202   #33-3202    33-3202   #33-3202    33-3202    33-3202   
                        #33-3202    33-3202    33-3202   #33-3202    33-3202    33-3202   #33-3202    33-3202   #33-3202   
                         33-3202   #33-3202    33-3202    33-3202   #33-3202    33-3202    33-3202   #33-3202    33-3202   
                         33-3202   #33-3202    33-3202   #33-3202    33-3202   #33-3202    33-3202    33-3202   #33-3202   
                         33-3202    33-3202   #33-3202    33-3202    33-3202   #33-3202    33-3202   #35-3311    35-3311   
                        #35-3311    35-3311    35-3311   #35-3311    35-3311    35-3311   #35-3311    35-3311   #35-3311   
                         35-3311   #35-3311    35-3311    35-3311   #35-3311    35-3311    35-3311   #35-3311    35-3311   
                        #35-3311    35-3311   #35-3311    35-3311    35-3311   #35-3311    35-3311    35-3311   #35-3311   
                         35-3311   #37-3464    37-3464   #37-3464    37-3464    37-3464   #37-3464    37-3464    37-3464   
                        #37-3464    37-3464   #37-3464    37-3464   #37-3464    37-3464    37-3464   #37-3464    37-3464   
                         37-3464   #37-3464    37-3464   #37-3464    37-3464   #37-3464    37-3464    37-3464   #37-3464   
                         37-3464    37-3464   #37-3464    37-3464   #38-3623    38-3623   #38-3623    38-3623    38-3623   
                        #38-3623    38-3623    38-3623   #38-3623    38-3623   #38-3623    38-3623   #38-3623    38-3623   
                         38-3623   #38-3623    38-3623    38-3623   #38-3623    38-3623   #38-3623    38-3623   #38-3623   
                         38-3623    38-3623   #38-3623    38-3623    38-3623   #38-3623    38-3623   #39-3691    39-3691   
                        #39-3691    39-3691    39-3691   #39-3691    39-3691    39-3691   #39-3691    39-3691   #39-3691   
                         39-3691   #39-3691    39-3691    39-3691   #39-3691    39-3691    39-3691   #39-3691    39-3691   
                        #39-3691    39-3691   #39-3691    39-3691    39-3691   #39-3691    39-3691    39-3691   #39-3691   
                         39-3691   #40-3728    40-3728   #40-3728    40-3728   #41-3791    41-3791   #41-3791    41-3791   
                         41-3791   #41-3791    41-3791   #41-3791    41-3791   #41-3791    41-3791    41-3791   #41-3791   
                         41-3791   
.BGBUF	= ******  GX	 30-2673    30-2713    62-4898    62-4905    64-5148   
.BRCLK	= 005000	#11-1411   #20-2136   #44-3930   #59-4589   
.CECLK	= 004000	#11-1411   #20-2136   #44-3930   #59-4589   
.CLRMR	= 006000	#11-1411   #20-2136   #44-3930   #59-4589   
.CLRUN	= 010000	#11-1411   #20-2136   #44-3930   #59-4589   
.COMEF	= ******  GX	 17-1839    33-3027    50-4176    51-4271   
.CONBT	= 012000	#11-1411   #20-2136   #44-3930   #59-4589   
.CRPFL	= ******  GX	 50-4120   *50-4123   
.CRTSK	= ******  GX	 28-2522    49-4101    61-4756   
.CSHRG	= 164000	#11-1411   #20-2136   #44-3930   #59-4589   
.CYLTM	= 000074	#20-2188    28-2490    28-2490    28-2492   #44-3950    47-4042    47-4042   
.DBINT	  001236 RG	#8-659     
.DRLTC	= 015000	#11-1411   #20-2136   #44-3930   #59-4589   
.DSACF	= 066000	#11-1411   #20-2136   #44-3930   #59-4589   
.DSIOJ	= 065000	#11-1411   #20-2136   #44-3930   #59-4589   
.EIOJA	= 067000	#11-1411   #20-2136   #44-3930   #59-4589   
.FEACK	  004312 RG	#18-1938   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 18

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

.FEST 	  004416 RG	#19-1965   
.GFNR 	= 102000	#11-1411   #20-2136   #44-3930   #59-4589   
.INICL	= 070000	#11-1411   #20-2136   #44-3930   #59-4589   
.IRLTC	= 014000	#11-1411   #20-2136   #44-3930   #59-4589   
.LCRDL	= 052000	#11-1411   #20-2136   #44-3930   #59-4589   
.LCRDR	= 051000	#11-1411   #20-2136   #44-3930   #59-4589   
.LCRM1	= 057000	#11-1411   #20-2136   #44-3930   #59-4589   
.LCRM2	= 056000	#11-1411   #20-2136   #44-3930   #59-4589   
.LCRM3	= 055000	#11-1411   #20-2136   #44-3930   #59-4589   
.LCRM4	= 054000	#11-1411   #20-2136   #44-3930   #59-4589   
.LCRM5	= 053000	#11-1411   #20-2136   #44-3930   #59-4589   
.LDAR 	= 077000	#11-1411   #20-2136   #44-3930   #59-4589   
.LDBRL	= 043000	#11-1411   #20-2136   #44-3930   #59-4589   
.LDBRR	= 042000	#11-1411   #20-2136   #44-3930   #59-4589   
.LDCK1	= 046000	#11-1411   #20-2136   #44-3930   #59-4589   
.LDCK2	= 047000	#11-1411   #20-2136   #44-3930   #59-4589   
.LDDIS	= 045000	#11-1411   #20-2136   #44-3930   #59-4589   
.LDRJD	= 064000	#11-1411   #20-2136   #44-3930   #59-4589   
.LDRJV	= 063000	#11-1411   #20-2136   #44-3930   #59-4589   
.LDRM1	= 060000	#11-1411   #20-2136   #44-3930   #59-4589   
.LDRM2	= 061000	#11-1411   #20-2136   #44-3930   #59-4589   
.LDRM3	= 062000	#11-1411   #20-2136   #44-3930   #59-4589   
.LDSEL	= 044000	#11-1411   #20-2136   #44-3930   #59-4589   
.LPPFL	= ******  GX	 29-2550   *29-2553   
.MEMRS	= 076000	#11-1411   #20-2136   #44-3930   #59-4589   
.PCAB1	= 150000	#11-1411   #20-2136   #44-3930   #59-4589   
.PCAB2	= 151000	#11-1411   #20-2136   #44-3930   #59-4589   
.PCAB3	= 152000	#11-1411   #20-2136   #44-3930   #59-4589   
.PCAB4	= 153000	#11-1411   #20-2136   #44-3930   #59-4589   
.POLLH	= ******  GX	 64-5143   
.PUDBA	= ******  GX	 61-4747    63-4991    64-5076   
.PUDEA	= ******  GX	 61-4865    64-5084   
.RCRM1	= 147000	#11-1411   #20-2136   #44-3930   #59-4589   
.RCRM2	= 146000	#11-1411   #20-2136   #44-3930   #59-4589   
.RCRM3	= 145000	#11-1411   #20-2136   #44-3930   #59-4589   
.RCRM4	= 144000	#11-1411   #20-2136   #44-3930   #59-4589   
.RCSPF	= 141000	#11-1411   #20-2136   #44-3930   #59-4589   
.RDJ14	= 134000	#11-1411   #20-2136   #44-3930   #59-4589   
.RDJ71	= 135000	#11-1411   #20-2136   #44-3930   #59-4589   
.RDMAB	= 133000	#11-1411   #20-2136   #44-3930   #59-4589   
.RPUNT	= ******  GX	 17-1896   
.SECLK	= 003000	#11-1411   #20-2136   #44-3930   #59-4589   
.SETMR	= 007000	#11-1411   #20-2136   #44-3930   #59-4589   
.SETRN	= 011000	#11-1411   #20-2136   #44-3930   #59-4589   
.SSCLK	= 002000	#11-1411   #20-2136   #44-3930   #59-4589   
.STDTA	= ******  GX	 64-5129   
.STDTZ	= ******  GX	*64-5127    64-5128   
.STPCL	= 000000	#11-1411   #20-2136   #44-3930   #59-4589   
.STRCL	= 001000	#11-1411   #20-2136   #44-3930   #59-4589   
.TPDBA	= ******  GX	 63-4957   
.TPDEA	= ******  GX	 63-4965   
.WRMBX	= 071000	#11-1411   #20-2136   #44-3930   #59-4589   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 19

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

..AKCR	  013766 RG	#57-4523   
..AKLP	  011442 RG	#40-3713   
..ALC2	= ******  GX	 30-2719    30-2719    62-4900    62-4900    62-4907    62-4907   
..DECB	= ******  GX	 30-2761    30-2761   
..DECN	= ******  GX	 19-1999    19-1999    38-3575    38-3575    55-4478    55-4478   
..DEC2	= ******  GX	 30-2674    30-2674    64-5151    64-5151    64-5155    64-5155   
..DOLP	  011664 RG	 34-3269    34-3269    37-3439    37-3439   #42-3829   
..DOL1	  011650 RG	 32-2951    32-2951    37-3394    37-3394   #42-3823   
..DQRN	= ******  GX	 7-515      7-515      12-1475    12-1475    17-1853    17-1853    17-1882    17-1882    31-2791   
                         31-2791   
..DSEV	= ******  GX	 8-726      8-726      13-1643    13-1643    37-3459    37-3459    38-3570    38-3570    39-3689   
                         39-3689    40-3726    40-3726    41-3785    41-3785    42-3854    42-3854    57-4532    57-4532   
..ENB0	= ******  GX	 17-1873    17-1873    41-3790    41-3790    64-5137    64-5137    65-5170    65-5170   
..FSTD	= ******  GX	 61-4775    61-4775    64-5125    64-5125   
..INTX	= ******  GX	 8-731      13-1650    37-3465    54-4453   
..IODN	= ******  GX	 7-638      7-638      12-1592    12-1592    17-1868    17-1868    17-1925    17-1925    19-2013   
                         19-2013    30-2754    30-2754    31-2854    31-2854   
..NADD	= ******  GX	 64-5144    64-5144   
..PTLP	  011522 RG	 31-2880    31-2880    38-3618    38-3618   #41-3752   
..SACK	= ******  GX	 19-2002    30-2648    30-2648   
..SPCR	  013744 RG	#56-4501   
..SPLP	  011270 RG	 31-2846    31-2846    33-3086    33-3086   #39-3652   
..STCR	  013722 RG	#55-4477   
..STIN	= ******  GX	 17-1932    33-3187    33-3187    50-4150    50-4150    51-4365    51-4365   
..STLP	  011060 RG	#38-3535   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 20

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

ALUN$ 		#20-2134   
ALUN$S		#59-4588    61-4753    61-4874   
CALL  		#6-330      7-515      7-577      7-638      8-726      8-808      8-827      8-837      8-843      8-844     
                 8-845      8-852     #11-1410    12-1475    12-1516    12-1524    12-1550    12-1564    12-1577    12-1580   
                 12-1592    13-1627    13-1643   #16-1812    17-1853    17-1868    17-1873    17-1882    17-1916    17-1925   
                 18-1953    19-1999    19-2013    19-2064   #20-2135    28-2515    28-2528    29-2552    30-2616    30-2624   
                 30-2648    30-2674    30-2719    30-2754    30-2761    31-2791    31-2846    31-2854    31-2880    32-2951   
                 33-3086    33-3187    34-3269    37-3394    37-3439    37-3459    38-3570    38-3575    38-3618    39-3689   
                 40-3726    41-3785    41-3790    42-3854   #44-3929    49-4096    49-4107    50-4122    50-4150    50-4162   
                 50-4181    50-4215    51-4365    54-4449    55-4478    56-4503    57-4532   #59-4588    61-4742    61-4775   
                 61-4783    61-4785    61-4804    61-4825    61-4857    61-4880    62-4891    62-4900    62-4907    62-4921   
                 62-4927    62-4931    63-4968    63-4971    63-4974    63-4976    64-5055    64-5065    64-5103    64-5108   
                 64-5113    64-5114    64-5119    64-5120    64-5125    64-5137    64-5144    64-5151    64-5155    65-5170   
                 65-5179    66-5204    66-5225    66-5237    67-5285    67-5287    67-5289    67-5291    67-5296    67-5298   
                 67-5323    67-5335   
CALLR 		#16-1812   #17-1932   #19-2002   
CLEF$ 		#6-330      6-445     
DIR$  		#6-330     #7-513     #7-595     #7-595     #7-633     #7-634     #7-645     #7-646     #7-647     #11-1410   
                #12-1473   #12-1588   #16-1811   #17-1834   #20-2134   #28-2525   #28-2526   #28-2526   #28-2527   #28-2527   
                #29-2543   #29-2543   #30-2721   #30-2721   #33-3026   #33-3026   #33-3128   #34-3233   #34-3235   #34-3235   
                #44-3929   #49-4104   #49-4105   #49-4105   #49-4106   #49-4106   #50-4114   #50-4114   #50-4175   #50-4175   
                #51-4270   #51-4270   #61-4739   #61-4739   #61-4753   #61-4753   #61-4874   #61-4874   #62-4892   #62-4892   
                #65-5169   #65-5169   #66-5266   #66-5266   #67-5304   #67-5304   
ERR   		#59-4603    61-4785    61-4880    63-4968    63-4971    63-4974    63-4976    64-5119    65-5179   
ERRF  		#59-4607   #63-4968   #63-4971   #63-4974   
ERRN  		#59-4612   #65-5179   
ERR$  		#7-513     #7-595     #7-633     #7-634     #7-645     #7-646     #7-647     #12-1473   #12-1588   #17-1834   
                #28-2525   #28-2526   #28-2527   #29-2543   #30-2721   #33-3026   #33-3128   #34-3233   #34-3235   #49-4104   
                #49-4105   #49-4106   #50-4114   #50-4175   #51-4270   #61-4739   #61-4753   #61-4874   #62-4892   #65-5169   
                #66-5266   #67-5304   
IDENT$		#4-147     
MOV$  		#28-2526    28-2526    28-2526   #28-2527    28-2527   #29-2543    29-2543   #34-3235    34-3235   #49-4105   
                 49-4105    49-4105   #49-4106    49-4106   #50-4114    50-4114   #61-4739    61-4739   #61-4753   #61-4753   
                 61-4753    61-4753    61-4753   #61-4874   #61-4874    61-4874    61-4874    61-4874   #65-5169    65-5169   
                #66-5266   #66-5266    66-5266    66-5266    66-5266    66-5266    66-5266    66-5266    66-5266    66-5266   
                 66-5266    66-5266   #67-5304   #67-5304    67-5304    67-5304    67-5304    67-5304    67-5304    67-5304   
                 67-5304   
MRKT$ 		#6-330     #6-449     #20-2134   #28-2490   #28-2492   #44-3928   #47-4042   
MSG   		#59-4594    61-4785    61-4804    61-4880    63-4968    63-4971    63-4974    63-4976    64-5119    65-5179   
MVB$  		#65-5169    65-5169   #66-5266    66-5266   #67-5304    67-5304   
NBL$  		#61-4753    61-4753   #61-4874    61-4874   
OFF$  		#6-443      6-443      6-443     #6-445      6-445      6-445     #6-447      6-447      6-447     #6-449     
                 6-449      6-449      6-449      6-449      6-449     #6-451      6-451      6-451     #6-453      6-453     
                 6-453      6-453      6-453      6-453      6-453      6-453      6-453     #11-1446    11-1446    11-1446   
                #11-1448    11-1448    11-1448   #28-2490    28-2490    28-2490    28-2490    28-2490    28-2490   #28-2492   
                 28-2492    28-2492    28-2492    28-2492    28-2492   #33-3132    33-3132    33-3132    33-3132    33-3132   
                 33-3132    33-3132    33-3132    33-3132   #47-4042    47-4042    47-4042    47-4042    47-4042    47-4042   
POP   		#20-2135   #30-2675   #30-2740   #30-2755   #33-3188   #33-3202   #33-3202   #33-3202   #33-3202   #34-3271   
                #35-3311   #35-3311   #35-3311   #37-3422   #37-3428   #37-3464   #37-3464   #37-3464   #38-3623   #38-3623   
                #38-3623   #39-3691   #39-3691   #39-3691   #40-3728   #41-3791   #41-3791   #44-3929   #59-4588   #66-5227   
                #66-5238   #67-5305   #67-5306   #67-5345   
PUSH  		#20-2135   #30-2587   #30-2670   #30-2710   #30-2749   #33-3022   #33-3183   #34-3267   #35-3291   #37-3377   
DRIVERS20  CREATED BY  MACRO  ON 12-OCT-79 AT 14:03	PAGE 21

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

                #37-3414   #38-3536   #39-3653   #40-3714   #41-3753   #44-3929   #59-4588   #61-4785   #61-4804   #61-4880   
                #63-4968   #63-4971   #63-4974   #63-4976   #64-5119   #65-5179   #66-5222   #66-5232   #67-5282   #67-5336   
QDPB$ 		#6-453     #6-453     #33-3132   #33-3132   
QDPB$S		#66-5266   #66-5266   #67-5304   #67-5304   
QIOSY$		#6-330     #6-332     #11-1408   #11-1409   #20-2134   #20-2137   #59-4588   #59-4590   
QIOW$ 		#6-330      6-453     #20-2134    33-3132   
QIOW$S		#59-4588   #66-5266   #67-5304   
RCVX$S		#59-4588    61-4739   
RESTOR		#33-3022    33-3202   #35-3291    35-3311   #37-3377    37-3464   #38-3536    38-3623   #39-3653    39-3691   
                #40-3714    40-3728   #41-3753    41-3791   
RETURN		#4-212     #4-271     #6-330     #8-958     #8-994     #11-1410   #14-1713   #15-1741   #15-1761   #15-1777   
                #16-1812   #18-1957   #20-2135   #33-3203   #34-3276   #35-3312   #38-3624   #39-3692   #40-3729   #41-3792   
                #42-3885   #44-3929   #51-4372   #52-4386   #56-4505   #57-4533   #59-4588   #64-5159   #66-5228   #66-5239   
                #66-5273   #67-5307   #67-5316   #67-5348   
RFA$  		#61-4739    61-4739   #65-5169    65-5169    65-5169   
RQST$S		#59-4588    65-5169   
RVP$  		#29-2543   #50-4114   #61-4753   #61-4753   #61-4874   #61-4874   #66-5266   #66-5266   #67-5304   #67-5304   
SAVE  		#20-2143    33-3022    35-3291    37-3377    38-3536    39-3653    40-3714    41-3753   
SPRA$S		#20-2134    28-2527   #44-3928    49-4106   
SVTK$S		#20-2134   #28-2526   #44-3928   #49-4105   
VDPB$S		#61-4739    61-4739   
WSIG$S		#6-330      7-595     #20-2134    30-2721    33-3026   #44-3928    50-4175    51-4270   #59-4588    62-4892   
WTLO$ 		#16-1811   #16-1821   
WTLO$S		#20-2134   #29-2543   #44-3928   #50-4114   
WTSE$ 		#6-330     #6-443     #6-447     #6-451     #11-1410   #11-1446   #11-1448   
WTSE$S		#20-2134   #34-3235   #44-3928   
$DEF  		#11-1408   #11-1411   #20-2135   #20-2136   #44-3929   #44-3930   #59-4588   #59-4589   
.ENB  		#16-1811    19-2055   #20-2135    29-2549    30-2637   #44-3929    50-4119   
.ENB0 		#16-1811    17-1873   #20-2135    41-3790   #59-4588    64-5137    65-5170   
.ENB4 		#20-2193    32-2953    34-3270   
.ENB6 		#16-1811    18-1955   
.INH  		#16-1811    19-2035   #20-2135    29-2546    30-2630   #44-3929    50-4116   
.INH0 		#16-1811   #17-1835   #20-2135   #41-3767   #59-4588   #64-5123   #65-5165   
.INH4 		#20-2189   #32-2941   #34-3268   
.INH6 		#16-1811   #18-1950   
.STKM 		#6-330     #6-441     #11-1410   #11-1444   #16-1811   #16-1832   #20-2135   #25-2394   #44-3929   #47-4017   
                #59-4588   #60-4672