DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)   30300  RP04/05/06 FUNCTION DECISION TABLE

   (1)   40400  START I/O OPERATION

   (2)   14700  RP04/05/06 HARDWARE FUNCTION EXECUTION

   (2)   48200  RP04/RP05/RP06 CLASSIFY DRIVE TYPE AND SET PARA

   (2)   51800  RP04/05/06 REGISTER DUMP ROUTINE

   (2)   55700  RP04/RP05/RP06 DISK DRIVE INITIALIZATION

   (2)   60100  RP04/RP05/RP06 UNSOLICITED INTERRUPT ROUTINE

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page   1

01                                                                                                                               (1)



                                     0000   100 	.TITLE	DBDRIVER - RP04/05/06 DISK DRIVER

                                     0000   200 	.IDENT	/01/

                                     0000   300  

                                     0000   400 ;

                                     0000   500 ; COPYRIGHT (C) 1977

                                     0000   600 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

                                     0000   700 ;

                                     0000   800 ; THIS SOFTWARE IS FURNISHED UNDER  A LICENSE FOR USE ONLY  ON  A

                                     0000   900 ; SINGLE COMPUTER SYSTEM AND MAY BE  COPIED ONLY WITH  THE INCLU-

                                     0000  1000 ; SION OF  THE  ABOVE  COPYRIGHT NOTICE.  THIS SOFTWARE,  OR  ANY

                                     0000  1100 ; OTHER COPIES THEREOF, MAY NOT BE  PROVIDED  OR  OTHERWISE  MADE

                                     0000  1200 ; AVAILABLE TO ANY OTHER PERSON EXCEPT  FOR  USE  ON  SUCH SYSTEM

                                     0000  1300 ; AND TO  ONE WHO AGREES  TO  THESE LICENSE  TERMS.  TITLE TO AND

                                     0000  1400 ; OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.

                                     0000  1500 ;

                                     0000  1600 ; THE INFORMATION IN THIS SOFTWARE  IS  SUBJECT TO CHANGE WITHOUT

                                     0000  1700 ; NOTICE AND SHOULD NOT BE CONSTRUED  AS  A COMMITMENT BY DIGITAL

                                     0000  1800 ; EQUIPMENT CORPORATION.

                                     0000  1900 ;

                                     0000  2000 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS

                                     0000  2100 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

                                     0000  2200 ;

                                     0000  2300 ; D. N. CUTLER 30-JAN-77

                                     0000  2400 ;

                                     0000  2500 ; RP04/04/06 DISK DRIVER

                                     0000  2600 ;

                                     0000  2700 ; MACRO LIBRARY CALLS

                                     0000  2800 ;

                                     0000  2900  

                                     0000  3000 	$CRBDEF				;DEFINE CRB OFFSETS

                                     0000  3100 	$DDBDEF				;DEFINE DDB OFFSETS

                                     0000  3200 	$DPTDEF				;DEFINE DPT OFFSETS

                                     0000  3300 	$EMBDEF				;DEFINE EMB OFFSETS

                                     0000  3400 	$IDBDEF				;DEFINE IDB OFFSETS

                                     0000  3500 	$IODEF				;DEFINE I/O FUNCTION CODES

                                     0000  3600 	$IRPDEF				;DEFINE IRP OFFSETS

                                     0000  3700 	$MBADEF				;DEFINE MBA REGISTER OFFSETS

                                     0000  3800 	$UCBDEF				;DEFINE UCB OFFSETS

                                     0000  3900 	$VECDEF				;DEFINE INTERRUPT DISPATCH VECTOR OFFSETS

                                     0000  4000  

                                     0000  4100 ;

                                     0000  4200 ; LOCAL MACROS

                                     0000  4300 ;

                                     0000  4400 ; EXECUTE FUNCTION AND BRANCH ON RETRIABLE ERROR CONDITION

                                     0000  4500 ;

                                     0000  4600  

                                     0000  4700 	.MACRO	EXFUNC BDST,FCODE

                                     0000  4800 		.IF NB	FCODE

                                     0000  4900 		MOVZBL	#CD'FCODE,R0

                                     0000  5000 		.ENDC

                                     0000  5100 		BSBW	FEX

                                     0000  5200 		.BYTE	BDST-.-1

                                     0000  5300 	.ENDM

                                     0000  5400  

                                     0000  5500 ;

                                     0000  5600 ; GENERATE FUNCTION TABLE ENTRY AND CASE TABLE INDEX SYMBOL

                                     0000  5700 ;

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page   2

01                                                                                                                               (1)



                                     0000  5800  

                                     0000  5900 	.MACRO	GENF FCODE

                                     0000  6000 		CD'FCODE=.-FTAB

                                     0000  6100 		.BYTE	FCODE!RP_CS1_M_GO

                                     0000  6200 	.ENDM

                                     0000  6300  

                                     0000  6400 ;

                                     0000  6500 ; LOCAL SYMBOLS

                                     0000  6600 ;

                                     0000  6700 ; RP04/05/06 MASSBUS REGISTER OFFSETS

                                     0000  6800 ;

                                     0000  6900  

                                     0000  7000 	$DEFINI	RP

                                     0000  7100  

                                     0000  7200 $DEF	RP_CS1		.BLKL	1	;DRIVE CONTROL REGISTER

                                     0004  7300 	_VIELD	RP_CS1,0,<-		; DRIVE CONTROL REGISTER BIT DEFINITIONS

                                     0004  7400 		<GO,,M>,-		; GO BIT

                                     0004  7500 		<FCODE,5>-		; FUNCTION CODE

                                     0004  7600 	>				;

                                     0004  7700 $DEF	RP_DS		.BLKL	1	;DRIVE STATUS REGISTER

                                     0008  7800 	_VIELD	RP_DS,6,<-		; DRIVE STATUS REGISTER BIT DEFINITIONS

                                     0008  7900 		<VV,,M>,-		; VOLUME VALID

                                     0008  8000 		<DRY,,M>,-		; DRIVE READY

                                     0008  8100 		<DPR,,M>,-		; DRIVE PRESENT

                                     0008  8200 		<PGM,,M>,-		; PROGRAMMABLE

                                     0008  8300 		<LST,,M>,-		; LAST SECTOR TRANSFERED

                                     0008  8400 		<WRL,,M>,-		; DRIVE WRITE LOCKED

                                     0008  8500 		<MOL,,M>,-		; MEDIUM ONLINE

                                     0008  8600 		<PIP,,M>,-		; POSITIONING IN PROGRESS

                                     0008  8700 		<ERR,,M>,-		; COMPOSITE ERROR

                                     0008  8800 		<ATA,,M>-		; ATTENTION ACTIVE

                                     0008  8900 	>				;

                                     0008  9000 $DEF	RP_ER1		.BLKL	1	;ERROR REGISTER 1

                                     000C  9100 	_VIELD	RP_ER1,0,<-		; ERROR REGISTER 1 BIT DEFINITIONS

                                     000C  9200 		<ILF,,M>,-		; ILLEGAL FUNCTION

                                     000C  9300 		<ILR,,M>,-		; ILLEGAL REGISTER

                                     000C  9400 		<RMR,,M>,-		; REGISTER MODIFY REFUSED

                                     000C  9500 		<PAR,,M>,-		; PARITY ERROR

                                     000C  9600 		<FER,,M>,-		; FORMAT ERROR

                                     000C  9700 		<WCF,,M>,-		; WRITE CLOCK FAIL

                                     000C  9800 		<ECH,,M>,-		; ECC HARD ERROR

                                     000C  9900 		<HCE,,M>,-		; HEADER COMPARE ERROR

                                     000C 10000 		<HCRC,,M>,-		; HEADER CRC ERROR

                                     000C 10100 		<AOE,,M>,-		; ADDRESS OVERFLOW ERROR

                                     000C 10200 		<IAE,,M>,-		; ILLEGAL ADDRESS ERROR

                                     000C 10300 		<WLE,,M>,-		; WRITE LOCK ERROR

                                     000C 10400 		<DTE,,M>,-		; DRIVE TIMING ERROR

                                     000C 10500 		<OPI,,M>,-		; OPERATION INCOMPLETE

                                     000C 10600 		<UNS,,M>,-		; DRIVE UNSAFE

                                     000C 10700 		<DCK,,M>-		; DATA CHECK ERROR

                                     000C 10800 	>				;

                                     000C 10900 $DEF	RP_MR		.BLKL	1	;MAINTENANCE REGISTER

                                     0010 11000 $DEF	RP_AS		.BLKL	1	;ATTENTION SUMMARY REGISTER

                                     0014 11100 $DEF	RP_DA		.BLKL	1	;DESIRED SECTOR/TRACK ADDRESS REGISTER

                                     0018 11200 	_VIELD	RP_DA,0,<-		; DESIRED ADDRESS FIELD DEFINITIONS

                                     0018 11300 		<SA,5>,-		; DESIRED SECTOR ADDRESS

                                     0018 11400 		<,3>,-			; RESERVED BITS

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page   3

01                                                                                                                               (1)



                                     0018 11500 		<TA,5>-			; DESIRED TRACK ADDRESS

                                     0018 11600 	>				;

                                     0018 11700 $DEF	RP_DT		.BLKL	1	;DRIVE TYPE REGISTER

                                     001C 11800 	_VIELD	RP_DT,0,<-		; DRIVE TYPE REGISTER FIELD DEFINITIONS

                                     001C 11900 		<DTN,9>,-		; DRIVE TYPE NUMBER

                                     001C 12000 		<,2>,-			; RESERVED BITS

                                     001C 12100 		<DRQ,,M>-		; DRIVE REQUEST REQUIRED

                                     001C 12200 	>				;

                                     001C 12300 $DEF	RP_LA		.BLKL	1	;LOOKAHEAD REGISTER

                                     0020 12400 $DEF	RP_ER2		.BLKL	1	;ERROR REGISTER 2

                                     0024 12500 $DEF	RP_OF		.BLKL	1	;OFFSET REGISTER

                                     0028 12600 	_VIELD	RP_OF,0,<-		; OFFSET REGISTER BIT DEFINITIONS

                                     0028 12700 		<OFF,8>,-		; OFFSET VALUE

                                     0028 12800 		<DCK,,M>,-		; DATA CHECK IN PROGRESS (SOFTWARE)

                                     0028 12900 		<,1>,-			; RESERVED BIT

                                     0028 13000 		<HCI,,M>,-		; HEADER COMPARE INHIBIT

                                     0028 13100 		<ECI,,M>,-		; ECC INHIBIT

                                     0028 13200 		<FMT,,M>-		; 16-BIT FORMAT

                                     0028 13300 	>				;

                                     0028 13400 $DEF	RP_DC		.BLKL	1	;DESIRED CYLINDER ADDRESS

                                     002C 13500 $DEF	RP_CC		.BLKL	1	;CURRENT CYLINDER ADDRESS

                                     0030 13600 $DEF	RP_SN		.BLKL	1	;DRIVE SERIAL NUMBER

                                     0034 13700 $DEF	RP_ER3		.BLKL	1	;ERROR REGISTER 3

                                     0038 13800 	_VIELD	RP_ER3,14,<-		; ERROR REGISTER 3 BIT DEFINITIONS

                                     0038 13900 		<SKI,,M>-		; SEEK INCOMPLETE

                                     0038 14000 	>				;

                                     0038 14100 $DEF	RP_EC1		.BLKL	1	;ECC POSITION REGISTER

                                     003C 14200 	_VIELD	RP_EC1,0,<<POS,13>>	; ECC POSITION FIELD

                                     003C 14300 $DEF	RP_EC2		.BLKL	1	;ECC PATTERN REGISTER

                                     0040 14400 	_VIELD	RP_EC2,0,<<PAT,11>>	; ECC PATTERN FIELD

                                     0040 14500  

                                     0040 14600 	$DEFEND	RP

                                     0000 14700  

                                     0000 14800 ;

                                     0000 14900 ; DEFINE DEVICE DEPENDENT UNIT CONTROL BLOCK OFFSETS

                                     0000 15000 ;

                                     0000 15100  

                                     0000 15200 	$DEFINI	UCB

                                     0000 15300  

                           00000098  0000 15400 .=UCB$W_BCR+2				;

                                     0098 15500  

                                     0098 15600 $DEF	UCB$L_DB_SR	.BLKL	1	;SAVE MBA STATUS REGISTER

                                     009C 15700  

                                     009C 15800 	$DEFEND

                                     0000 15900  

                                     0000 16000 ;

                                     0000 16100 ; HARDWARE FUNCTION CODES

                                     0000 16200 ;

                                     0000 16300  

                           00000000  0000 16400 F_NOP=0*2				;NO OPERATION

                           00000002  0000 16500 F_UNLOAD=1*2				;UNLOAD DRIVE

                           00000004  0000 16600 F_SEEK=2*2				;SEEK CYLINDER

                           00000006  0000 16700 F_RECAL=3*2				;RECALIBRATE

                           00000008  0000 16800 F_DRVCLR=4*2				;DRIVE CLEAR

                           0000000A  0000 16900 F_RELEASE=5*2				;RELEASE DRIVE

                           0000000C  0000 17000 F_OFFSET=6*2				;OFFSET HEADS

                           0000000E  0000 17100 F_RETCENTER=7*2				;RETURN TO CENTERLINE

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page   4

01                                                                                                                               (1)



                           00000010  0000 17200 F_READPRESET=8*2			;READ IN PRESET

                           00000012  0000 17300 F_PACKACK=9*2				;PACK ACKNOWLEDGE

                           00000018  0000 17400 F_SEARCH=12*2				;SEARCH FOR SECTOR

                           00000018  0000 17500 F_SEARCHA=12*2				;SEARCH AHEAD FOR SECTOR

                           00000028  0000 17600 F_WRITECHECK=20*2			;WRITE CHECK DATA

                           0000002A  0000 17700 F_WRITECHECKH=21*2			;WRITE CHECK HEADER AND DATA

                           00000030  0000 17800 F_WRITEDATA=24*2			;WRITE DATA

                           00000032  0000 17900 F_WRITEHEAD=25*2			;WRITE HEADER AND DATA

                           00000038  0000 18000 F_READDATA=28*2				;READ DATA

                           0000003A  0000 18100 F_READHEAD=29*2				;READ HEADER AND DATA

                                     0000 18200  

                                     0000 18300 ;

                                     0000 18400 ; LOCAL DATA

                                     0000 18500 ;

                                     0000 18600 ; DRIVER PROLOGUE TABLE

                                     0000 18700 ;

                                     0000 18800  

                                     0000 18900 	DPTAB	-			;DEFINE DRIVER PROLOGUE TABLE

                                     0000 19000 		END=DB_END,-		;END OF DRIVER

                                     0000 19100 		ADAPTER=MBA,-		;ADAPTER TYPE

                                     0000 19200 		FLAGS=DPT$M_SVP,-	;SYSTEM PAGE TABLE ENTRY REQUIRED

                                     0000 19300 		UCBSIZE=156,-		;UCB SIZE

                                     0000 19400 		NAME=DBDRIVER		;DRIVER NAME

                                     001F 19500 	DPT_STORE INIT			;CONTROL BLOCK INIT VALUES

                                     001F 19600 	DPT_STORE DDB,DDB$L_ACPD,L,<^A\F11\> ;DEFAULT ACP NAME

                                     0026 19700 	DPT_STORE DDB,DDB$L_ACPD+3,B,2	;ACP CLASS

                                     002A 19800 	DPT_STORE UCB,UCB$B_FIPL,B,8	;FORK IPL

                                     002E 19900 	DPT_STORE UCB,UCB$L_DEVCHAR,L,-	;DEVICE CHARACTERISTICS

                                     002E 20000 		<DEV$M_FOD-		; FILES ORIENTED

                                     002E 20100 		!DEV$M_DIR-		; DIRECTORY STRUCTURED

                                     002E 20200 		!DEV$M_AVL-		; AVAILABLE

                                     002E 20300 		!DEV$M_ELG-		; ERROR LOGGING ENABLED

                                     002E 20400 		!DEV$M_SHR-		; SHAREABLE

                                     002E 20500 		!DEV$M_IDV-		; INPUT DEVICE

                                     002E 20600 		!DEV$M_ODV-		; OUTPUT DEVICE

                                     002E 20700 		!DEV$M_RND>		; RANDOM ACCESS

                                     0035 20800 	DPT_STORE UCB,UCB$B_DEVCLASS,B,DC$_DISK ;DEVICE CLASS

                                     0039 20900 	DPT_STORE UCB,UCB$W_DEVBUFSIZ,W,512 ;DEFAULT BUFFER SIZE

                                     003E 21000 	DPT_STORE UCB,UCB$B_SECTORS,B,22 ;NUMBER OF SECTORS PER TRACK

                                     0042 21100 	DPT_STORE UCB,UCB$B_TRACKS,B,19	;NUMBER OF TRACKS PER CYLINDER

                                     0046 21200 	DPT_STORE UCB,UCB$B_DIPL,B,21	;DEVICE IPL

                                     004A 21300 	DPT_STORE UCB,UCB$B_ERTCNT,B,8	;ERROR RETRY COUNT

                                     004E 21400 	DPT_STORE UCB,UCB$B_ERTMAX,B,8	;MAX ERROR RETRY COUNT

                                     0052 21500 	DPT_STORE REINIT		;CONTROL BLOCK RE-INIT VALUES

                                     0052 21600 	DPT_STORE CRB,CRB$L_INTD+VEC$L_UNITINIT,D,DB_RP0X_INIT ;UNIT INIT

                                     0057 21700 	DPT_STORE DDB,DDB$L_DDT,D,DB$DDT ;DDT ADDRESS

                                     005C 21800 	DPT_STORE END			;

                                     0000 21900  

                                     0000 22000 ;

                                     0000 22100 ; DRIVER DISPATCH TABLE

                                     0000 22200 ;

                                     0000 22300  

                                     0000 22400 	DDTAB	DB,-			;DRIVER DISPATCH TABLE

                                     0000 22500 		DB_STARTIO,-		;START I/O OPERATION

                                     0000 22600 		DB_UNSOLNT,-		;UNSOLICITED INTERRUPT

                                     0000 22700 		DB_FUNCTABLE,-		;FUNCTION DECISION TABLE

                                     0000 22800 		0,-			;CANCEL I/O ENTRY POINT

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page   5

01                                                                                                                               (1)



                                     0000 22900 		DB_REGDUMP,-		;REGISTER DUMP ROUTINE

                                     0000 23000 		<<RP_EC2+4+MBA$L_BCR+4+8>+<<3+5+1>*4>>,- ;DIAGNOSTIC BUFFER SIZE

                                     0000 23100 		<<RP_EC2+4+MBA$L_BCR+4+8>+<1*4>+<EMB$L_DV_REGSAV>> ;ERROR BUFFER SIZE

                                     0018 23200  

                                     0018 23300 ;

                                     0018 23400 ; DATA CHECK FUNCTION TRANSLATION TABLE

                                     0018 23500 ;

                                     0018 23600  

                                     0018 23700 CHECKTAB:				;

                                 0A' 0018 23800 	.BYTE	CDF_WRITECHECK		;WRITE DATA

                                 0A' 0019 23900 	.BYTE	CDF_WRITECHECK		;READ DATA

                                 0F' 001A 24000 	.BYTE	CDF_WRITECHECKH		;WRITE HEADER AND DATA

                                 0F' 001B 24100 	.BYTE	CDF_WRITECHECKH		;READ HEADER AND DATA

                                     001C 24200  

                                     001C 24300 ;

                                     001C 24400 ; RP0X DRIVE TYPE DESCRIPTOR TABLE

                                     001C 24500 ;

                                     001C 24600  

                                     001C 24700 DB_DTDESC:				;

                               0010  001C 24800 	.WORD	^X10			;RP04

                                 00' 001E 24900 	.BYTE	DT$_RP04		;

                               019B  001F 25000 	.WORD	411			;411 CYLINDERS PER PACK

                           00029F16  0021 25100 	.LONG	411*19*22		;MAXIMUM BLOCKS PER PACK

                           00000009  0025 25200 DB_DTDESCLEN=.-DB_DTDESC		;LENGTH OF DRIVE TYPE DESCRIPTOR

                               0011  0025 25300 	.WORD	^X11			;RP05

                                 00' 0027 25400 	.BYTE	DT$_RP05		;

                               019B  0028 25500 	.WORD	411			;411 CYLINDERS PER PACK

                           00029F16  002A 25600 	.LONG	411*19*22		;MAXIMUM BLOCKS PER PACK

                               0012  002E 25700 	.WORD	^X12			;RP06

                                 00' 0030 25800 	.BYTE	DT$_RP06		;

                               032F  0031 25900 	.WORD	815			;815 CYLINDERS PER PACK

                           000532BE  0033 26000 	.LONG	815*19*22		;MAXIMUM BLOCKS PER PACK

                               0000  0037 26100 	.WORD	0			;END OF TABLE

                           00000042  0039 26200 	.BLKB	DB_DTDESCLEN		;SPARE DRIVE TYPE SLOT

                                     0042 26300  

                                     0042 26400 ;

                                     0042 26500 ; HARDWARE I/O FUNCTION CODE TABLE

                                     0042 26600 ;

                                     0042 26700  

                                     0042 26800 FTAB:					;

                                     0042 26900 	GENF	F_NOP			;NO OPERATION

                                     0043 27000 	GENF	F_UNLOAD		;UNLOAD VOLUME

                                     0044 27100 	GENF	F_SEEK			;SEEK CYLINDER

                                     0045 27200 	GENF	F_RECAL			;RECALIBRATE

                                     0046 27300 	GENF	F_DRVCLR		;DRIVE CLEAR

                                     0047 27400 	GENF	F_RELEASE		;RELEASE PORT

                                     0048 27500 	GENF	F_OFFSET		;OFFSET HEADS

                                     0049 27600 	GENF	F_RETCENTER		;RETURN HEADS TO CENTERLINE

                                     004A 27700 	GENF	F_PACKACK		;PACK ACKNOWLEDGE

                                     004B 27800 	GENF	F_SEARCH		;SEARCH FOR SECTOR

                                     004C 27900 	GENF	F_WRITECHECK		;WRITE CHECK

                                     004D 28000 	GENF	F_WRITEDATA		;WRITE DATA

                                     004E 28100 	GENF	F_READDATA		;READ DATA

                                     004F 28200 	GENF	F_WRITEHEAD		;WRITE HEADER AND DATA

                                     0050 28300 	GENF	F_READHEAD		;READ HEADER AND DATA

                                     0051 28400 	GENF	F_WRITECHECKH		;WRITE CHECK HEADER AND DATA

                                     0052 28500 	GENF	F_READPRESET		;READ IN PRESET

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page   6

01                                                                                                                               (1)



                                     0053 28600 	GENF	F_SEARCHA		;SEARCH AHEAD FOR SECTOR

                                     0054 28700  

                                     0054 28800 ;

                                     0054 28900 ; OFFSET TABLE FOR RP06 - RP04 VALUES = RP06 VALUES * 2 & ^XFF

                                     0054 29000 ;

                                     0054 29100  

                                     0054 29200 OFFTAB:					;

                                 00  0054 29300 	.BYTE	0			;RETURN TO CENTERLINE

                                 08  0055 29400 	.BYTE	^X8			;+200 (+400)

                                 C8  0056 29500 	.BYTE	^XC8			;-200 (-400)

                                 10  0057 29600 	.BYTE	^X10			;+400 (+800)

                                 D0  0058 29700 	.BYTE	^XD0			;-400 (-800)

                                 18  0059 29800 	.BYTE	^X18			;+600 (+1200)

                                 D8  005A 29900 	.BYTE	^XD8			;-600 (-1200)

                                 00  005B 30000 	.BYTE	0			;RETURN TO CENTERLINE

                           00000008  005C 30100 OFFSIZ=.-OFFTAB				;SIZE OF OFFSET TABLE

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page   7

01              RP04/05/06 FUNCTION DECISION TABLE                                                                               (1)



                                     005C 30300 	.SBTTL	RP04/05/06 FUNCTION DECISION TABLE

                                     005C 30400 ;+

                                     005C 30500 ; RP04/05/06 FUNCTION DECISION TABLE

                                     005C 30600 ;-

                                     005C 30700  

                                     005C 30800 DB_FUNCTABLE:				;FUNCTION DECISION TABLE

                                     005C 30900 	FUNCTAB	,-			;LEGAL FUNCTIONS

                                     005C 31000 		<NOP,-			;NO OPERATION

                                     005C 31100 		 UNLOAD,-		;UNLOAD VOLUME

                                     005C 31200 		 SEEK,-			;SEEK CYLINDER

                                     005C 31300 		 RECAL,-		;RECALIBRATE

                                     005C 31400 		 DRVCLR,-		;DRIVE CLEAR

                                     005C 31500 		 RELEASE,-		;RELEASE PORT

                                     005C 31600 		 OFFSET,-		;OFFSET HEADS

                                     005C 31700 		 RETCENTER,-		;RETURN HEADS TO CENTERLINE

                                     005C 31800 		 PACKACK,-		;PACK ACKNOWLEDGE

                                     005C 31900 		 SEARCH,-		;SEARCH FOR SECTOR

                                     005C 32000 		 READPRESET,-		;READ IN PRESET

                                     005C 32100 		 SENSECHAR,-		;SENSE CHARACTERISTICS

                                     005C 32200 		 SETCHAR,-		;SET CHARACTERISTICS

                                     005C 32300 		 SENSEMODE,-		;SENSE MODE

                                     005C 32400 		 SETMODE,-		;SET MODE

                                     005C 32500 		 WRITECHECK,-		;WRITE CHECK

                                     005C 32600 		 WRITEHEAD,-		;WRITE HEADER AND DATA

                                     005C 32700 		 READHEAD,-		;READ HEADER AND DATA

                                     005C 32800 		 WRITECHECKH,-		;WRITE CHECK HEADER AND DATA

                                     005C 32900 		 READLBLK,-		;READ LOGICAL BLOCK

                                     005C 33000 		 WRITELBLK,-		;WRITE LOGICAL BLOCK

                                     005C 33100 		 READPBLK,-		;READ PHYSICAL BLOCK

                                     005C 33200 		 WRITEPBLK,-		;WRITE PHYSICAL BLOCK

                                     005C 33300 		 READVBLK,-		;READ VIRTUAL BLOCK

                                     005C 33400 		 WRITEVBLK,-		;WRITE VIRTUAL BLOCK

                                     005C 33500 		 ACCESS,-		;ACCESS FILE AND/OR FIND DIRECTORY ENTRY

                                     005C 33600 		 ACPCONTROL,-		;ACP CONTROL FUNCTION

                                     005C 33700 		 CREATE,-		;CREATE FILE AND/OR CREATE DIRECTORY ENTRY

                                     005C 33800 		 DEACCESS,-		;DEACCESS FILE

                                     005C 33900 		 DELETE,-		;DELETE FILE AND/OR DIRECTORY ENTRY

                                     005C 34000 		 MODIFY,-		;MODIFY FILE ATTRIBUTES

                                     005C 34100 		 MOUNT>			;MOUNT VOLUME

                                     0064 34200 	FUNCTAB	,-			;BUFFERED I/O FUNCTIONS

                                     0064 34300 		<NOP,-			;NO OPERATION

                                     0064 34400 		 UNLOAD,-		;UNLOAD VOLUME

                                     0064 34500 		 SEEK,-			;SEEK CYLINDER

                                     0064 34600 		 RECAL,-		;RECALIBRATE

                                     0064 34700 		 DRVCLR,-		;DRIVE CLEAR

                                     0064 34800 		 RELEASE,-		;RELEASE PORT

                                     0064 34900 		 OFFSET,-		;OFFSET HEADS

                                     0064 35000 		 RETCENTER,-		;RETURN HEADS TO CENTERLINE

                                     0064 35100 		 PACKACK,-		;PACK ACKNOWLEDGE

                                     0064 35200 		 SEARCH,-		;SEARCH FOR SECTOR

                                     0064 35300 		 READPRESET,-		;READ IN PRESET

                                     0064 35400 		 SENSECHAR,-		;SENSE CHARACTERISTICS

                                     0064 35500 		 SETCHAR,-		;SET CHARACTERISTICS

                                     0064 35600 		 SENSEMODE,-		;SENSE MODE

                                     0064 35700 		 SETMODE,-		;SET MODE

                                     0064 35800 		 ACCESS,-		;ACCESS FILE AND/OR FIND DIRECTORY ENTRY

                                     0064 35900 		 ACPCONTROL,-		;ACP CONTROL FUNCTION

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page   8

01              RP04/05/06 FUNCTION DECISION TABLE                                                                               (1)



                                     0064 36000 		 CREATE,-		;CREATE FILE AND/OR CREATE DIRECTORY ENTRY

                                     0064 36100 		 DEACCESS,-		;DEACCESS FILE

                                     0064 36200 		 DELETE,-		;DELETE FILE AND/OR DIRECTORY ENTRY

                                     0064 36300 		 MODIFY,-		;MODIFY FILE ATTRIBUTES

                                     0064 36400 		 MOUNT>			;MOUNT VOLUME

                                     006C 36500 	FUNCTAB	+ACP$READBLK,-		;READ FUNCTIONS

                                     006C 36600 		<READHEAD,-		;READ HEADER

                                     006C 36700 		 READLBLK,-		;READ LOGICAL BLOCK

                                     006C 36800 		 READPBLK,-		;READ PHYSICAL BLOCK

                                     006C 36900 		 READVBLK>		;READ VIRTUAL BLOCK

                                     0078 37000 	FUNCTAB	+ACP$WRITEBLK,-		;WRITE FUNCTIONS

                                     0078 37100 		<WRITECHECK,-		;WRITE CHECK

                                     0078 37200 		 WRITECHECKH,-		;WRITE CHECK HEADER AND DATA

                                     0078 37300 		 WRITEHEAD,-		;WRITE HEADER

                                     0078 37400 		 WRITELBLK,-		;WRITE LOGICAL BLOCK

                                     0078 37500 		 WRITEPBLK,-		;WRITE PHYSICAL BLOCK

                                     0078 37600 		 WRITEVBLK>		;WRITE VIRTUAL BLOCK

                                     0084 37700 	FUNCTAB	+ACP$ACCESS,<ACCESS,CREATE> ;ACCESS AND CREATE FILE OR DIRECTORY

                                     0090 37800 	FUNCTAB	+ACP$DEACCESS,<DEACCESS> ;DEACCESS FILE

                                     009C 37900 	FUNCTAB	+ACP$MODIFY,-		;

                                     009C 38000 		<ACPCONTROL,-		;ACP CONTROL FUNCTION

                                     009C 38100 		 DELETE,-		;DELETE FILE OR DIRECTORY ENTRY

                                     009C 38200 		 MODIFY>		;MODIFY FILE ATTRIBUTES

                                     00A8 38300 	FUNCTAB	+ACP$MOUNT,<MOUNT>	;MOUNT VOLUME

                                     00B4 38400 	FUNCTAB	+EXE$ZEROPARM,-		;ZERO PARAMETER FUNCTIONS

                                     00B4 38500 		<NOP,-			;NO OPERATION

                                     00B4 38600 		 UNLOAD,-		;UNLOAD VOLUME

                                     00B4 38700 		 RECAL,-		;RECALIBRATE

                                     00B4 38800 		 DRVCLR,-		;DRIVE CLEAR

                                     00B4 38900 		 RELEASE,-		;RELEASE PORT

                                     00B4 39000 		 RETCENTER,-		;RETURN HEADS TO CENTERLINE

                                     00B4 39100 		 READPRESET,-		;READ IN PRESET

                                     00B4 39200 		 PACKACK>		;PACK ACKNOWLEDGE

                                     00C0 39300 	FUNCTAB	+EXE$ONEPARM,-		;ONE PARAMETER FUNCTIONS

                                     00C0 39400 		<SEEK,-			;SEEK CYLINDER

                                     00C0 39500 		 OFFSET,-		;OFFSET HEADS

                                     00C0 39600 		 SEARCH>		;SEARCH FOR SECTOR

                                     00CC 39700 	FUNCTAB	+EXE$SENSEMODE,-	;

                                     00CC 39800 		<SENSECHAR,-		;SENSE CHARACTERISTICS

                                     00CC 39900 		 SENSEMODE>		;SENSE MODE

                                     00D8 40000 	FUNCTAB	+EXE$SETCHAR,-		;

                                     00D8 40100 		<SETCHAR,-		;SET CHARACTERISITCS

                                     00D8 40200 		 SETMODE>		;SET MODE

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page   9

01              START I/O OPERATION                                                                                              (1)



                                     00E4 40400 	.SBTTL	START I/O OPERATION

                                     00E4 40500 ;+

                                     00E4 40600 ; DB_STARTIO - START I/O OPERATION ON DEVICE UNIT

                                     00E4 40700 ;

                                     00E4 40800 ; THIS ENTRY POINT IS ENTERED TO START AN I/O OPERATION ON A DEVICE UNIT.

                                     00E4 40900 ;

                                     00E4 41000 ; INPUTS:

                                     00E4 41100 ;

                                     00E4 41200 ;	R3 = ADDRESS OF I/O PACKET.

                                     00E4 41300 ;	R5 = UCB ADDRESS OF DEVICE UNIT.

                                     00E4 41400 ;

                                     00E4 41500 ; OUTPUTS:

                                     00E4 41600 ;

                                     00E4 41700 ;	FUNCTION DEPENDENT PARAMETERS ARE STORED IN THE DEVICE UCB, THE ERROR

                                     00E4 41800 ;	RETRY COUNT IS RESET, AND THE FUNCTION IS EXECUTED. AT FUNCTION COMPLETION

                                     00E4 41900 ;	THE OPERATION IS TERMINATED THROUGH REQUEST COMPLETE.

                                     00E4 42000 ;-

                                     00E4 42100  

                                     00E4 42200 DB_STARTIO:				;START I/O OPERATION

         70 A5         71 A5     90  00E4 42300 	MOVB	UCB$B_ERTMAX(R5),UCB$B_ERTCNT(R5) ;INITIALIZE ERROR RETRY COUNT

         7E A5         20 A3     B0  00E9 42400 	MOVW	IRP$W_FUNC(R3),UCB$W_FUNC(R5) ;SAVE FUNCTION CODE AND MODIFIERS

            50         34 A3     D0  00EE 42500 	MOVL	IRP$L_MEDIA(R3),R0	;GET PARAMETER LONGWORD

                                     00F2 42600  

                                     00F2 42700 ;

                                     00F2 42800 ; MOVE FUNCTION DEPENDENT PARAMETERS TO UCB

                                     00F2 42900 ;

                                     00F2 43000  

                          00     EF  00F2 43100 10$:	EXTZV	#IRP$V_FCODE,#IRP$S_FCODE,- ;EXTRACT I/O FUNCTION CODE

         20 A3            06         00F4 43200 		IRP$W_FUNC(R3),R1	;

                          51         00F7       

            51            02     91  00F8 43300 	CMPB	#IO$_SEEK,R1 		;SEEK FUNCTION?

                          19     13  00FB 43400 	BEQL	20$			;IF EQL YES

            51            06     91  00FD 43500 	CMPB	#IO$_OFFSET,R1 		;OFFSET FUNCTION?

                          1B     13  0100 43600 	BEQL	30$			;IF EQL YES

            51            09     91  0102 43700 	CMPB	#IO$_SEARCH,R1		;SEARCH FUNCTION?

                          1D     13  0105 43800 	BEQL	40$			;IF EQL YES

       008C C5            50     D0  0107 43900 	MOVL	R0,UCB$W_DA(R5)		;STORE PARAMETER LONGWORD

            51            18     91  010C 44000 	CMPB	#IO$_WRITECHECKH,R1	;DISJOINT FUNCTION CODE?

                          18     1A  010F 44100 	BGTRU	50$			;IF GTRU NO

            51            09     A2  0111 44200 	SUBW	#IO$_WRITECHECKH-IO$_READHEAD-1,R1 ;CONVERT TO DENSE FUNCTION CODE

                          13     11  0114 44300 	BRB	50$			;

                                     0116 44400  

                                     0116 44500 ;

                                     0116 44600 ; SEEK FUNCTION - SET CYLINDER ADDRESS

                                     0116 44700 ;

                                     0116 44800  

       008E C5            50     B0  0116 44900 20$:	MOVW	R0,UCB$W_DC(R5)		;SET CYLINDER ADDRESS

                          0C     11  011B 45000 	BRB	50$			;

                                     011D 45100  

                                     011D 45200 ;

                                     011D 45300 ; OFFSET FUNCTION - SET CURRENT OFFSET VALUE

                                     011D 45400 ;

                                     011D 45500  

       008A C5            50     90  011D 45600 30$:	MOVB	R0,UCB$W_OFFSET(R5)	;SET OFFSET VALUE

                          05     11  0122 45700 	BRB	50$			;

                                     0124 45800  

                                     0124 45900 ;

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  10

01              START I/O OPERATION                                                                                              (1)



                                     0124 46000 ; SEARCH FUNCTION - SET SECTOR ADDRESS

                                     0124 46100 ;

                                     0124 46200  

       008C C5            50     90  0124 46300 40$:	MOVB	R0,UCB$W_DA(R5)		;SET SECTOR ADDRESS

                                     0129 46400  

                                     0129 46500 ;

                                     0129 46600 ; FINISH PREPROCESSING

                                     0129 46700 ;

                                     0129 46800  

         76 A5            51     90  0129 46900 50$:	MOVB	R1,UCB$B_FEX(R5)	;SAVE FUNCTION DISPATCH INDEX

            54         20 A5     D0  012D 47000 	MOVL	UCB$L_CRB(R5),R4	;GET ADDRESS OF CRB

            54         1C B4     D0  0131 47100 	MOVL	@CRB$L_INTD+VEC$L_IDB(R4),R4 ;GET FIRST CONTROLLER CSR ADDRESS

         5A A5            00     E4  0135 47200 	BBSC	#UCB$V_ECC,UCB$W_DEVSTS(R5),FDISPATCH ;CLEAR ECC CORRECTION MADE

                          00         0139       

                                     013A 47300  

                                     013A 47400 ;

                                     013A 47500 ; CENTRAL FUNCTION DISPATCH

                                     013A 47600 ;

                                     013A 47700  

                                     013A 47800 FDISPATCH:				;FUNCTION DISPATCH

            53         4C A5     D0  013A 47900 	MOVL	UCB$L_IRP(R5),R3	;RETRIEVE ADDRESS OF I/O PACKET

         2A A3            08     E0  013E 48000 	BBS	#IRP$V_PHYSIO,IRP$W_STS(R3),10$ ;IF SET, PHYSICAL I/O FUNCTION

                          0D         0142       

         58 A5            0B     E0  0143 48100 	BBS	#UCB$V_VALID,UCB$W_STS(R5),10$ ;IF SET, VOLUME SOFTWARE VALID

                          08         0147       

            50       0000'8F     3C  0148 48200 	MOVZWL	#SS$_VOLINV,R0		;SET VOLUME INVALID STATUS

                          03D5   31  014D 48300 	BRW	RESETXFR		;

                                     0150 48400  

                                     0150 48500 ;

                                     0150 48600 ; UNIT IS SOFTWARE VALID OR FUNCTION IS PHYSICAL I/O

                                     0150 48700 ;

                                     0150 48800  

            50         76 A5     9A  0150 48900 10$:	MOVZBL	UCB$B_FEX(R5),R0	;GET DISPATCH FUNCTION CODE

       008B C5            10     90  0154 49000 	MOVB	#RP_OF_M_FMT/256,UCB$W_OFFSET+1(R5) ;CLEAR ECI, HCI, AND SET FORMAT

       0095 C5            01     90  0159 49100 	MOVB	#1,UCB$B_OFFRTC(R5)	;SET INITIAL OFFSET RETRY COUNT

                     0094 C5     94  015E 49200 	CLRB	UCB$B_OFFNDX(R5)	;CLEAR INITIAL OFFSET TABLE INDEX

                                     0162 49300 	CASE	R0,<-			;DISPATCH TO FUNCTION HANDLING ROUTINE

                                     0162 49400 		WRITECHECK,-		;WRITE CHECK DATA

                                     0162 49500 		WRITEDATA,-		;WRITE DATA

                                     0162 49600 		READDATA,-		;READ DATA

                                     0162 49700 		WRITEHEAD,-		;WRITE HEADER AND DATA

                                     0162 49800 		READHEAD,-		;READ HEADER AND DATA

                                     0162 49900 		WRITECHECKH,-		;WRITE CHECK HEADER AND DATA

                                     0162 50000 		>,LIMIT=#CDF_WRITECHECK	;

                                     0172 50100  

                                     0172 50200 ;

                                     0172 50300 ; NO OPERATION, UNLOAD, SEEK, RECALIBRATE, DRIVE CLEAR, RELEASE, OFFSET,

                                     0172 50400 ; RETURN TO CENTER LINE, PACK ACKNOWLEDGE, SEARCH, AND READ IN PRESET

                                     0172 50500 ;

                                     0172 50600  

                                     0172 50700 NOP:					;NO OPERATION

                                     0172 50800 UNLOAD:					;UNLOAD DRIVE

                                     0172 50900 SEEK:					;SEEK CYLINDER

                                     0172 51000 RECAL:					;RECALIBRATE

                                     0172 51100 DRVCLR:					;DRIVE CLEAR

                                     0172 51200 RELEASE:				;RELEASE PORT

                                     0172 51300 OFFSET:					;OFFSET READ HEADS

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  11

01              START I/O OPERATION                                                                                              (1)



                                     0172 51400 RETCENTER:				;RETURN TO CENTERLINE

                                     0172 51500 PACKACK:				;PACK ACKNOWLEDGE

                                     0172 51600 SEARCH:					;SEARCH FOR SECTOR

                                     0172 51700 READPRESET:				;READIN PRESET

                                     0172 51800 	EXFUNC	RETRY			;EXECUTE HOUSEKEEPING FUNCTION

                          6B     11  0176 51900 	BRB	NORMAL			;

                                     0178 52000  

                                     0178 52100 ;

                                     0178 52200 ; WRITE CHECK DATA AND WRITE CHECK HEADER AND DATA

                                     0178 52300 ;

                                     0178 52400  

                                     0178 52500 WRITECHECK:				;WRITE CHECK DATA

                                     0178 52600 WRITECHECKH:				;WRITE CHECK HEADER AND DATA

         7E A5       4000 8F     AA  0178 52700 	BICW	#IO$M_DATACHECK,UCB$W_FUNC(R5) ;CLEAR DATA CHECK REQUEST

                                     017E 52800  

                                     017E 52900 ;

                                     017E 53000 ; WRITE DATA, WRITE HEADER AND DATA, WRITE CHECK DATA, AND WRITE CHECK HEADER

                                     017E 53100 ; AND DATA

                                     017E 53200 ;

                                     017E 53300  

                                     017E 53400 WRITEDATA:				;WRITE DATA

                                     017E 53500 WRITEHEAD:				;WRITE HEADER AND DATA

       008B C5            08     88  017E 53600 	BISB	#RP_OF_M_ECI/256,UCB$W_OFFSET+1(R5) ;INHIBIT ECC CORRECTION 

                                     0183 53700  

                                     0183 53800 ;

                                     0183 53900 ; READ DATA, READ HEADER AND DATA, WRITE DATA, WRITE HEADER AND DATA, WRITE

                                     0183 54000 ; CHECK DATA, AND WRITE CHECK HEADER AND DATA

                                     0183 54100 ;

                                     0183 54200  

                                     0183 54300 READDATA:				;READ DATA

                                     0183 54400 READHEAD:				;READ HEADER AND DATA

         7E A5            0C     E0  0183 54500 	BBS	#IO$V_INHSEEK,UCB$W_FUNC(R5),TRANRQCH ;IF SET, NO EXPLICIT SEEK

                          07         0187       

                                     0188 54600 	EXFUNC	RETRY,F_SEARCHA		;SEARCH AHEAD OF STARTING SECTOR

                                     018F 54700  

                                     018F 54800 ;

                                     018F 54900 ; DATA TRANSFER - REQUEST CHANNEL

                                     018F 55000 ;

                                     018F 55100  

                                     018F 55200 TRANRQCH:				;DATA TRANSFER REQUEST CHANNEL

                                     018F 55300 	REQPCHAN LOW			;REQUEST PRIMARY CHANNEL FOR TRANSFER

                                     0195 55400  

                                     0195 55500 ;

                                     0195 55600 ; DATA TRANSFER - CHANNEL ALREADY OWNED

                                     0195 55700 ;

                                     0195 55800  

                                     0195 55900 TRANNOCH:				;DATA TRANSFER CHANNEL OWNED

            50         76 A5     9A  0195 56000 	MOVZBL	UCB$B_FEX(R5),R0	;GET FUNCTION DISPATCH INDEX

                                     0199 56100 	EXFUNC	TRANXT			;EXECUTE TRANSFER FUNCTION

                                     019D 56200  

                                     019D 56300 ;

                                     019D 56400 ; DATA CHECK

                                     019D 56500 ;

                                     019D 56600  

                                     019D 56700 DATACHECK:				;DATA CHECK

         7E A5            0E     E1  019D 56800 	BBC	#IO$V_DATACHECK,UCB$W_FUNC(R5),NORMAL ;IF CLR, NO DATA CHECK

                          41         01A1       

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  12

01              START I/O OPERATION                                                                                              (1)



            50       0000'8F     3C  01A2 56900 	MOVZWL	#SS$_WASECC,R0		;ASSUME ECC CORRECTION WAS MADE

         5A A5            00     E0  01A7 57000 	BBS	#UCB$V_ECC,UCB$W_DEVSTS(R5),CHECKXT ;IF SET, ECC CORRECTION MADE

                          3A         01AB       

                                     01AC 57100 	RELCHAN				;RELEASE CHANNEL

       008B C5            19     90  01B2 57200 	MOVB	#<RP_OF_M_DCK!-		;SET DATA CHECK IN PROGRESS,

                                     01B7 57300 		RP_OF_M_ECI!-		;INHIBIT ECC CORRECTION, AND

                                     01B7 57400 		RP_OF_M_FMT>/256,UCB$W_OFFSET+1(R5) ;SET FORMAT

       0095 C5            01     90  01B7 57500 	MOVB	#1,UCB$B_OFFRTC(R5)	;SET INITIAL OFFSET RETRY COUNT

                     0094 C5     94  01BC 57600 	CLRB	UCB$B_OFFNDX(R5)	;CLEAR INITIAL OFFSET TABLE INDEX

            52         4C A5     D0  01C0 57700 	MOVL	UCB$L_IRP(R5),R2	;GET ADDRESS OF IRP

         68 A5         2C A2     7D  01C4 57800 	MOVQ	IRP$L_SVAPTE(R2),UCB$L_SVAPTE(R5) ;RESET TRANSFER PARAMETERS

       008C C5         34 A2     D0  01C9 57900 	MOVL	IRP$L_MEDIA(R2),UCB$W_DA(R5) ;

                                     01CF 58000  

                                     01CF 58100 ;

                                     01CF 58200 ; DATA CHECK RETRY

                                     01CF 58300 ;

                                     01CF 58400  

                                     01CF 58500 CHECKRETRY:				;DATA CHECK RETRY

                                     01CF 58600 	REQPCHAN LOW			;REQUEST PRIMARY CHANNEL FOR DATA CHECK

            50         76 A5     9A  01D5 58700 	MOVZBL	UCB$B_FEX(R5),R0	;GET FUNCTION DISPATCH INDEX

            50       FE2F CF40   9A  01D9 58800 	MOVZBL	CHECKTAB-CDF_WRITEDATA[R0],R0 ;GET CASE TABLE INDEX

                                     01DF 58900 	EXFUNC	TRANXT			;EXECUTE DATA CHECK FUNCTION

                                     01E3 59000  

                                     01E3 59100 ;

                                     01E3 59200 ; SUCCESSFUL OPERATION COMPLETION

                                     01E3 59300 ;

                                     01E3 59400  

                                     01E3 59500 NORMAL:					;

            50            00'    3C  01E3 59600 	MOVZWL	S^#SS$_NORMAL,R0		;SET NORMAL COMPLETION STATUS

                                     01E6 59700 CHECKXT:				;

                          0179   31  01E6 59800 	BRW	FUNCXT			;

                                     01E9 59900  

                                     01E9 60000 ;

                                     01E9 60100 ; TRANSFER ENDED WITH A RETRIABLE ERROR

                                     01E9 60200 ;

                                     01E9 60300  

                                     01E9 60400 TRANXT:					;TRANSFER EXIT

         77 A5            0B     91  01E9 60500 	CMPB	#CDF_WRITEDATA,UCB$B_CEX(R5) ;WRITE DATA FUNCTION?

                          16     13  01ED 60600 	BEQL	RETRY			;IF EQL YES

         77 A5            0D     91  01EF 60700 	CMPB	#CDF_WRITEHEAD,UCB$B_CEX(R5) ;WRITE HEADER FUNCTION?

                          10     13  01F3 60800 	BEQL	RETRY			;IF EQL YES

            51   00060F74 8F     D3  01F5 60900 	BITL	#MBA$M_SR_DLT!-		;DATA LATE OR,

                                     01FC 61000 		MBA$M_SR_INVMAP!-	;INVALID MAP REGISTER OR,

                                     01FC 61100 		MBA$M_SR_MAPPE!-	;MAP REGISTER PARITY ERROR OR,

                                     01FC 61200 		MBA$M_SR_MCPE!-		;MASSBUS CONTROL PARITY ERROR OR,

                                     01FC 61300 		MBA$M_SR_MDPE!-		;MASSBUS DATA PARITY ERROR OR,

                                     01FC 61400 		MBA$M_SR_MXF!-		;MISSED TRANSFER OR,

                                     01FC 61500 		MBA$M_SR_NED!-		;NONEXISTENT DISK OR,

                                     01FC 61600 		MBA$M_SR_RDS!-		;READ DATA SUBSTITUTE OR,

                                     01FC 61700 		MBA$M_SR_WCKLWR!-	;WRITE CHECK LOWER BYTE OR,

                                     01FC 61800 		MBA$M_SR_WCKUPR,R1	;WRITE CHECK UPPER BYTE?

                          07     12  01FC 61900 	BNEQ	RETRY			;IF NEQ YES - RETRY FUNCTION

            52       2038 8F     B3  01FE 62000 	BITW	#RP_ER1_M_FER!-		;FORMAT ERROR OR,

                                     0203 62100 		RP_ER1_M_OPI!-		;OPERATION INCOMPLETE OR,

                                     0203 62200 		RP_ER1_M_PAR!-		;PARITY ERROR OR,

                                     0203 62300 		RP_ER1_M_WCF,R2		;WRITE CLOCK FAIL?

                          03     13  0203 62400 	BEQL	ECC			;IF EQL NO

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  13

01              START I/O OPERATION                                                                                              (1)



                                     0205 62500 RETRY:					;

                          00C2   31  0205 62600 	BRW	RETRYERR		;RETRIABLE ERROR

                                     0208 62700  

                                     0208 62800 ;

                                     0208 62900 ; ECC, DRIVE TIMING, OR HEADER ERROR - APPLY ECC OR PERFORM OFFSET RECOVERY

                                     0208 63000 ;

                                     0208 63100  

                                     0208 63200 ECC:					;ECC CORRECTION

            50       0096 C5     3C  0208 63300 	MOVZWL	UCB$W_BCR(R5),R0	;GET NEGATIVE NUMBER OF BYTES REMAINING

            50         6E A5     A0  020D 63400 	ADDW	UCB$W_BCNT(R5),R0	;CALCULATE NUMBER OF BYTES TRANSFERED

            51            50     D0  0211 63500 	MOVL	R0,R1			;COPY NUMBER OF BYTES TRANSFERED

                          37     13  0214 63600 	BEQL	OFF			;IF EQL NONE - PERFORM OFFSET RECOVERY

            52       0180 8F     B3  0216 63700 	BITW	#RP_ER1_M_HCE!-		;HEADER COMPARE ERROR OR,

                                     021B 63800 		RP_ER1_M_HCRC,R2	;HEADER CRC ERROR?

                          02     12  021B 63900 	BNEQ	10$			;IF NEQ YES

                          50     D7  021D 64000 	DECL	R0			;SET TO TRUNCATE LAST BLOCK TRANSFERED

            50       01FF 8F     AA  021F 64100 10$:	BICW	#^X1FF,R0		;TRUNCATE RESIDUAL BYTES TRANSFERED

            52       11C0 8F     B3  0224 64200 	BITW	#RP_ER1_M_DTE!-		;DRIVE TIMING ERROR OR,

                                     0229 64300 		RP_ER1_M_ECH!-		;ECC HARD ERROR OR,

                                     0229 64400 		RP_ER1_M_HCE!-		;HEADER COMPARE ERROR OR,

                                     0229 64500 		RP_ER1_M_HCRC,R2	;HEADER CRC ERROR?

                          22     12  0229 64600 	BNEQ	OFF			;IF NEQ YES - PERFORM OFFSET RECOVERY

       008A C5            0B     E0  022B 64700 	BBS	#RP_OF_V_ECI,UCB$W_OFFSET(R5),OFF ;IF SET, ECC INHIBITED

                          1C         0230       

                          51     DD  0231 64800 	PUSHL	R1			;SAVE TOTAL NUMBER OF BYTES TRANSFERED

                 00000000'GF     16  0233 64900 	JSB	G^IOC$APPLYECC		;APPLY ECC CORRECTION

                          50   8ED0  0239 65000 	POPL	R0			;RETRIEVE TRANSFERED BYTE COUNT

                 00000000'GF     16  023C 65100 	JSB	G^IOC$UPDATRANSP	;UPDATE TRANSFER PARAMETERS

                       6E A5     B5  0242 65200 	TSTW	UCB$W_BCNT(R5)		;ANY MORE TO TRANSFER?

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  14

01              START I/O OPERATION                                                                                              (2)



                          03     13  0245   100 	BEQL	20$			;IF EQL NO

                          FF4B   31  0247   200 	BRW	TRANNOCH		;TRANSFER NEXT SEGMENT

                          FF50   31  024A   300 20$:	BRW	DATACHECK		;CHECK FOR WRITE CHECK

                                     024D   400  

                                     024D   500 ;

                                     024D   600 ; OFF - OFFSET RECOVERY

                                     024D   700 ;

                                     024D   800 ; THIS CODE IS EXECUTED WHEN A DRIVE TIMING ERROR, HEADER COMPARE, OR ECC

                                     024D   900 ; HARD ERROR IS DETECTED ON A READ FUNCTION.

                                     024D  1000 ;

                                     024D  1100  

                                     024D  1200 OFF:					;OFFSET RECOVERY

                          50     D5  024D  1300 	TSTL	R0			;ANY GOOD DATA TRANSFERED?

                          25     13  024F  1400 	BEQL	20$			;IF EQL NO

                                     0251  1500  

                                     0251  1600 ;

                                     0251  1700 ; THE TRANSFER ENDED IN AN ERROR BUT THERE WERE SECTORS TRANSFERED THAT

                                     0251  1800 ; CONTAINED GOOD DATA. SINCE THE ERROR COULD HAVE BEEN CAUSED BY A CYLIN-

                                     0251  1900 ; DER CROSSING, THE GOOD DATA IS SAVED AND THE TRANSFER IS RETRIED FROM THE

                                     0251  2000 ; POINT OF ERROR.

                                     0251  2100 ;

                                     0251  2200  

                 00000000'GF     16  0251  2300 	JSB	G^IOC$UPDATRANSP	;UPDATE TRANSFER PARAMETERS

                     0094 C5     94  0257  2400 	CLRB	UCB$B_OFFNDX(R5)	;RESET OFFSET TABLE INDEX

       0095 C5            10     90  025B  2500 10$:	MOVB	#16,UCB$B_OFFRTC(R5)	;SET OFFSET RETRY COUNT

       0094 C5            08     91  0260  2600 	CMPB	#OFFSIZ,UCB$B_OFFNDX(R5) ;ALL OFFSETS TRIED?

                          71     13  0265  2700 	BEQL	OFFSETERR		;IF EQL YES

                                     0267  2800 	RELCHAN				;RELEASE CHANNEL

                                     026D  2900 	EXFUNC	FATALERR,F_RETCENTER	;RETURN TO CENTERLINE

                          43     11  0274  3000 	BRB	50$			;

                                     0276  3100  

                                     0276  3200 ;

                                     0276  3300 ; NO GOOD DATA TRANSFERED - CHECK IF CHANGE IN OFFSET NEEDED

                                     0276  3400 ;

                                     0276  3500  

            52       90C0 8F     B3  0276  3600 20$:	BITW	#RP_ER1_M_DCK!-		;DATA CHECK OR,

                                     027B  3700 		RP_ER1_M_DTE!-		;DRIVE TIMING OR,

                                     027B  3800 		RP_ER1_M_ECH!-		;ECC HARD ERROR OR,

                                     027B  3900 		RP_ER1_M_HCE,R2		;HEADER COMPARE ERROR?

                          05     12  027B  4000 	BNEQ	30$			;IF NEQ YES

       008B C5            04     88  027D  4100 	BISB	#RP_OF_M_HCI/256,UCB$W_OFFSET+1(R5) ;SET HEADER COMPARE INHIBIT

                     0095 C5     97  0282  4200 30$:	DECB	UCB$B_OFFRTC(R5)	;CHANGE CURRENT OFFSET?

                          36     12  0286  4300 	BNEQ	60$			;IF NEQ NO

                     0094 C5     96  0288  4400 	INCB	UCB$B_OFFNDX(R5)	;UPDATE OFFSET TABLE INDEX

            50       0094 C5     9A  028C  4500 	MOVZBL	UCB$B_OFFNDX(R5),R0	;GET NEXT OFFSET TABLE INDEX

            50       FDBD CF40   9A  0291  4600 	MOVZBL	OFFTAB-1[R0],R0		;GET NEXT OFFSET VALUE?

                          C2     13  0297  4700 	BEQL	10$			;IF EQL RETURN TO CENTERLINE

         18 A3            02     D3  0299  4800 	BITL	#2,RP_DT(R3)		;RP06 DRIVE?

                          03     12  029D  4900 	BNEQ	40$			;IF NEQ YES

            50            02     C4  029F  5000 	MULL	#2,R0			;CONVERT TO RP04 OFFSET VALUE

       008A C5            50     90  02A2  5100 40$:	MOVB	R0,UCB$W_OFFSET(R5)	;SET NEW OFFSET VALUE

       0095 C5            02     90  02A7  5200 	MOVB	#2,UCB$B_OFFRTC(R5)	;SET OFFSET RETRY COUNT

                                     02AC  5300 	RELCHAN				;RELEASE CHANNEL

                                     02B2  5400 	EXFUNC	FATALERR,F_OFFSET	;OFFSET TO NEXT POSITION

       008B C5            04     8A  02B9  5500 50$:	BICB	#RP_OF_M_HCI/256,UCB$W_OFFSET+1(R5) ;CLEAR HEADER COMPARE INHIBIT

       008A C5            08     E0  02BE  5600 60$:	BBS	#RP_OF_V_DCK,UCB$W_OFFSET(R5),70$ ;IF SET, DATA CHECK FUNCTION

                          03         02C3       

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  15

01              START I/O OPERATION                                                                                              (2)



                          FEC8   31  02C4  5700 	BRW	TRANRQCH		;TRY FUNCTION AGAIN

                          FF05   31  02C7  5800 70$:	BRW	CHECKRETRY		;TRY DATA CHECK AGAIN

                                     02CA  5900  

                                     02CA  6000 ;

                                     02CA  6100 ; RETRIABLE ERROR

                                     02CA  6200 ;

                                     02CA  6300  

                                     02CA  6400 RETRYERR:				;RETRIABLE ERROR

                       70 A5     97  02CA  6500 	DECB	UCB$B_ERTCNT(R5)	;ANY RETRIES LEFT?

                          12     13  02CD  6600 	BEQL	FATALERR		;IF EQL NO

                                     02CF  6700 	RELCHAN				;RELEASE CHANNEL IF OWNED

                          FE62   31  02D5  6800 	BRW	FDISPATCH		;

                                     02D8  6900  

                                     02D8  7000 ;

                                     02D8  7100 ; ALL OFFSETS TRIED - RETRIEVE FINAL TRANSFER STATUS

                                     02D8  7200 ;

                                     02D8  7300  

                                     02D8  7400 OFFSETERR:				;OFFSET RECOVERY ERROR

            50         04 A3     D0  02D8  7500 	MOVL	RP_DS(R3),R0		;RETRIEVE FINAL DRIVE STATUS

            51       0098 C5     D0  02DC  7600 	MOVL	UCB$L_DB_SR(R5),R1	;RETRIEVE FINAL ERROR STATUS

                                     02E1  7700  

                                     02E1  7800 ;

                                     02E1  7900 ; FATAL CONTROLLER/DRIVE ERROR, ERROR RETRY COUNT EXHAUSTED, ERROR RETRY

                                     02E1  8000 ; INHIBITED, OR FINAL OFFSET TRIED

                                     02E1  8100 ;

                                     02E1  8200  

                                     02E1  8300 FATALERR:				;FATAL ERROR - SET STATUS

            50            0C     E1  02E1  8400 	BBC	#RP_DS_V_MOL,R0,10$	;IF CLR, MEDIUM OFFLINE

                          71         02E4       

            50            06     E1  02E5  8500 	BBC	#RP_DS_V_VV,R0,20$	;IF CLR, VOLUME INVALID

                          74         02E8       

            50       0000'8F     3C  02E9  8600 	MOVZWL	#SS$_UNSAFE,R0		;SET DRIVE UNSAFE STATUS

            52            0E     E0  02EE  8700 	BBS	#RP_ER1_V_UNS,R2,FUNCXT	;IF SET, DRIVE UNSAFE

                          70         02F1       

            50       0000'8F     3C  02F2  8800 	MOVZWL	#SS$_OPINCOMPL,R0	;SET OPERATION INCOMPLETE STATUS

            52            0D     E0  02F7  8900 	BBS	#RP_ER1_V_OPI,R2,FUNCXT	;IF SET, OPERATION INCOMPLETE

                          67         02FA       

            50       0000'8F     3C  02FB  9000 	MOVZWL	#SS$_FORMAT,R0		;SET FORMAT ERROR STATUS

            52            04     E0  0300  9100 	BBS	#RP_ER1_V_FER,R2,FUNCXT	;IF SET, FORMAT ERROR

                          5E         0303       

            50       0000'8F     3C  0304  9200 	MOVZWL	#SS$_WRITLCK,R0		;SET WRITE LOCK ERROR STATUS

            52            0B     E0  0309  9300 	BBS	#RP_ER1_V_WLE,R2,FUNCXT	;IF SET, WRITE LOCK ERROR

                          55         030C       

            50       0000'8F     3C  030D  9400 	MOVZWL	#SS$_IVADDR,R0		;SET INVALID DISK ADDRESS STATUS

            52       0600 8F     B3  0312  9500 	BITW	#RP_ER1_M_AOE!-		;DISK ADDRESS OVERFLOW OR,

                                     0317  9600 		RP_ER1_M_IAE,R2		;INVALID DISK ADDRESS ERROR?

                          49     12  0317  9700 	BNEQ	FUNCXT			;IF NEQ YES

            50       0000'8F     3C  0319  9800 	MOVZWL	#SS$_DRVERR,R0		;SET DRIVE ERROR STATUS

            52       1027 8F     B3  031E  9900 	BITW	#RP_ER1_M_DTE!-		;DRIVE TIMING ERROR OR,

                                     0323 10000 		RP_ER1_M_ILF!-		;ILLEGAL FUNCTION OR,

                                     0323 10100 		RP_ER1_M_ILR!-		;ILLEGAL REGISTER OR,

                                     0323 10200 		RP_ER1_M_RMR!-		;REGISTER MODIFY REFUSE OR,

                                     0323 10300 		RP_ER1_M_WCF,R2		;WRITE CLOCK FAIL ERROR?

                          3D     12  0323 10400 	BNEQ	FUNCXT			;IF NEQ YES

            50       0000'8F     3C  0325 10500 	MOVZWL	#SS$_PARITY,R0		;SET PARITY ERROR STATUS

            52       81C8 8F     B3  032A 10600 	BITW	#RP_ER1_M_DCK!-		;DATA CHECK ERROR OR,

                                     032F 10700 		RP_ER1_M_ECH!-		;ECC HARD ERROR OR,

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  16

01              START I/O OPERATION                                                                                              (2)



                                     032F 10800 		RP_ER1_M_HCE!-		;HEADER COMPARE ERROR OR,

                                     032F 10900 		RP_ER1_M_HCRC!-		;HEADER CRC ERROR OR,

                                     032F 11000 		RP_ER1_M_PAR,R2		;PARITY ERROR?

                          31     12  032F 11100 	BNEQ	FUNCXT			;IF NEQ YES

            51   00020064 8F     D3  0331 11200 	BITL	#MBA$M_SR_MAPPE!-	;MAP PARITY ERROR OR,

                                     0338 11300 		MBA$M_SR_MCPE!-		;MASSBUS CONTROL PARITY ERROR OR,

                                     0338 11400 		MBA$M_SR_MDPE!-		;MASSBUS DATA PARITY ERROR OR,

                                     0338 11500 		MBA$M_SR_RDS,R1		;READ DATA SUBSTITUTE?

                          28     12  0338 11600 	BNEQ	FUNCXT			;IF NEQ YES

            50       0000'8F     3C  033A 11700 	MOVZWL	#SS$_DATACHECK,R0	;SET DATA CHECK ERROR STATUS

            51       0600 8F     B3  033F 11800 	BITW	#MBA$M_SR_WCKLWR!-	;WRITE CHECK ERROR LOWER BYTE OR,

                                     0344 11900 		MBA$M_SR_WCKUPR,R1	;WRITE CHECK ERROR UPPER BYTE?

                          1C     12  0344 12000 	BNEQ	FUNCXT			;IF NEQ YES

            50       0000'8F     3C  0346 12100 	MOVZWL	#SS$_NONEXDRV,R0	;SET NONEXISTENT DRIVE STATUS

            51            12     E0  034B 12200 	BBS	#MBA$V_SR_NED,R1,FUNCXT	;IF SET, NONEXISTENT DRIVE

                          13         034E       

            50       0000'8F     3C  034F 12300 	MOVZWL	#SS$_CTRLERR,R0		;SET CONTROLLER ERROR STATUS

                          0C     11  0354 12400 	BRB	FUNCXT			;

            50       0000'8F     3C  0356 12500 10$:	MOVZWL	#SS$_MEDOFL,R0		;SET MEDIUM OFFLINE STATUS

                          05     11  035B 12600 	BRB	FUNCXT			;

            50       0000'8F     3C  035D 12700 20$:	MOVZWL	#SS$_VOLINV,R0		;SET VOLUME INVALID STATUS

                                     0362 12800  

                                     0362 12900 ;

                                     0362 13000 ; FUNCTION COMPLETION COMMON EXIT

                                     0362 13100 ;

                                     0362 13200  

                                     0362 13300 FUNCXT:					;FUNCTION EXIT

                          50     DD  0362 13400 	PUSHL	R0			;SAVE FINAL REQUEST STATUS

                 00000000'GF     16  0364 13500 	JSB	G^IOC$DIAGBUFILL	;FILL DIAGNOSTIC BUFFER IF PRESENT

                                     036A 13600 	RELCHAN				;RELEASE CHANNEL IF OWNED

         76 A5            0A     91  0370 13700 	CMPB	#CDF_WRITECHECK,UCB$B_FEX(R5) ;DRIVE RELATED FUNCTION?

                          12     1A  0374 13800 	BGTRU	10$			;IF GTRU YES

         76 A5            10     91  0376 13900 	CMPB	#CDF_READPRESET,UCB$B_FEX(R5) ;READIN PRESET FUNCTION?

                          0C     13  037A 14000 	BEQL	10$			;IF EQL YES

            53         4C A5     D0  037C 14100 	MOVL	UCB$L_IRP(R5),R3	;RETRIEVE ADDRESS OF IRP

         32 A3       0096 C5     A1  0380 14200 	ADDW3	UCB$W_BCR(R5),IRP$W_BCNT(R3),2(SP) ;CALCULATE BYTES TRANSFERED

                       02 AE         0386       

                          51     D4  0388 14300 10$:	CLRL	R1			;CLEAR SECOND STATUS LONGWORD

                          50   8ED0  038A 14400 	POPL	R0			;RETRIEVE FINAL REQUEST STATUS

                                     038D 14500 	REQCOM				;COMPLETE REQUEST

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  17

01              RP04/05/06 HARDWARE FUNCTION EXECUTION                                                                           (2)



                                     0393 14700 	.SBTTL	RP04/05/06 HARDWARE FUNCTION EXECUTION

                                     0393 14800 ;

                                     0393 14900 ; FEX - RP04/05/06 HARDWARE FUNCTION EXECUTION

                                     0393 15000 ;

                                     0393 15100 ; THIS ROUTINE IS CALLED VIA A BSB WITH A BYTE IMMEDIATELY FOLLOWING THAT

                                     0393 15200 ; SPECIFIES THE ADDRESS OF AN ERROR ROUTINE. ALL DATA IS ASSUMED TO HAVE BEEN

                                     0393 15300 ; SET UP IN THE UCB BEFORE THE CALL. THE APPROPRIATE PARAMETERS ARE LOADED

                                     0393 15400 ; INTO DEVICE REGISTERS AND THE FUNCTION IS INITIATED. IF THE FUNCTION IS AN

                                     0393 15500 ; IMMEDIATE FUNCTION CONTROL RETURNS IMMEDIATELY. ELSE THE RETURN ADDRESS

                                     0393 15600 ; IS STORED IN THE UCB AND A WAITFOR INTERRUPT IS EXECUTED. WHEN THE INTER-

                                     0393 15700 ; RUPT OCCURS, CONTROL IS RETURNED TO THE CALLER.

                                     0393 15800 ;

                                     0393 15900 ; INPUTS:

                                     0393 16000 ;

                                     0393 16100 ;	R0 = FUNCTION TABLE DISPATCH INDEX.

                                     0393 16200 ;	R3 = ADDRESS OF DRIVE CONTROL STATUS REGISTER 1.

                                     0393 16300 ;	R4 = ADDRESS OF MBA CONFIGURATION STATUS REGISTER.

                                     0393 16400 ;	R5 = DEVICE UNIT UCB ADDRESS.

                                     0393 16500 ;

                                     0393 16600 ;	00(SP) = RETURN ADDRESS OF CALLER.

                                     0393 16700 ;	04(SP) = RETURN ADDRESS OF CALLER'S CALLER.

                                     0393 16800 ;

                                     0393 16900 ;	IMMEDIATELY FOLLOWING INLINE AT THE CALL SITE IS A BYTE WHICH CONTAINS

                                     0393 17000 ;	A BRANCH DESTINATION TO AN ERROR RETRY ROUTINE.

                                     0393 17100 ;

                                     0393 17200 ; OUTPUTS:

                                     0393 17300 ;

                                     0393 17400 ;	THERE ARE FOUR EXITS FROM THIS ROUTINE:

                                     0393 17500 ;

                                     0393 17600 ;	1. SPECIAL CONDITION - THIS EXIT IS TAKEN IF A POWER FAILURE OCCURS

                                     0393 17700 ;		OR THE OPERATION TIMES OUT. IT IS A JUMP TO THE APPROPRIATE

                                     0393 17800 ;		ERROR ROUTINE.

                                     0393 17900 ;

                                     0393 18000 ;	2. FATAL ERROR - THIS EXIT IS TAKEN IF A FATAL CONTROLLER OR DRIVE

                                     0393 18100 ;		ERROR OCCURS OR IF ANY ERROR OCCURS AND ERROR RETRY IS

                                     0393 18200 ;		INHIBITED. IT IS A JUMP TO THE FATAL ERROR EXIT ROUTINE.

                                     0393 18300 ;

                                     0393 18400 ;	3. RETRIABLE ERROR - THIS EXIT IS TAKEN IF A RETRIABLE CONTROLLER

                                     0393 18500 ;		OR DRIVE ERROR OCCURS AND ERROR RETRY IS NOT INHIBITED.

                                     0393 18600 ;		IT CONSISTS OF TAKING THE ERROR BRANCH EXIT.

                                     0393 18700 ;

                                     0393 18800 ;	4. SUCCESSFUL OPERATION - THIS EXIT IS TAKEN IF NO ERROR OCCURS

                                     0393 18900 ;		DURING THE OPERATION. IT CONSISTS OF A RETURN INLINE.

                                     0393 19000 ;

                                     0393 19100 ;	IN ALL CASES IF AN ERROR OCCURS, AN ATTEMPT IS MADE TO LOG THE ERROR.

                                     0393 19200 ;

                                     0393 19300 ;	IN ALL CASES FINAL DRIVE AND CONTROLLER REGISTERS ARE RETURNED VIA

                                     0393 19400 ;	THE GENERAL REGISTERS R0, R1, AND R2, AND THE UCB.

                                     0393 19500 ;

                                     0393 19600 ;	R0 = DRIVE STATUS REGISTER.

                                     0393 19700 ;	R1 = MBA STATUS REGISTER.

                                     0393 19800 ;	R2 = DRIVE ERROR REGISTER 1.

                                     0393 19900 ;

                                     0393 20000 ;	UCB$W_EC1(R5) = ECC POSITION REGISTER.

                                     0393 20100 ;	UCB$W_EC2(R5) = ECC PATTERN REGISTER.

                                     0393 20200 ;	UCB$W_BCR(R5) = BYTE COUNT REGISTER.

                                     0393 20300 ;

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  18

01              RP04/05/06 HARDWARE FUNCTION EXECUTION                                                                           (2)



                                     0393 20400  

                                     0393 20500 FEX:					;FUNCTION EXECUTOR

                     0080 C5   8ED0  0393 20600 	POPL	UCB$L_DPC(R5)		;SAVE DRIVER PC VALUE

         77 A5            50     90  0398 20700 	MOVB	R0,UCB$B_CEX(R5)	;SAVE CASE INDEX

            53         75 A5     9A  039C 20800 	MOVZBL	UCB$B_SLAVE+1(R5),R3	;GET DRIVE OFFSET CONSTANT

            53       0400 C443   DE  03A0 20900 	MOVAL	MBA$L_ERB(R4)[R3],R3	;GET ADDRESS OF DRIVE REGISTERS

                                     03A6 21000 	CASE	R0,<-			;DISPATCH TO PROPER FUNCTION ROUTINE

                                     03A6 21100 		POSIT,-			;SEEK CYLINDER

                                     03A6 21200 		EXFNC,-			;RECALIBRATE

                                     03A6 21300 		IMMED,-			;DRIVE CLEAR

                                     03A6 21400 		IMMED,-			;RELEASE DRIVE

                                     03A6 21500 		EXFNC,-			;OFFSET HEADS

                                     03A6 21600 		EXFNC,-			;RETURN TO CENTERLINE

                                     03A6 21700 		IMMED,-			;PACK ACKNOWLEDGE

                                     03A6 21800 		POSIT,-			;SEARCH FOR SECTOR

                                     03A6 21900 		XFER,-			;WRITE CHECK

                                     03A6 22000 		XFER,-			;WRITE DATA

                                     03A6 22100 		XFER,-			;READ DATA

                                     03A6 22200 		XFER,-			;WRITE HEADER AND DATA

                                     03A6 22300 		XFER,-			;READ HEADER AND DATA

                                     03A6 22400 		XFER,-			;WRITE CHECK HEADER AND DATA

                                     03A6 22500 		IMMED,-			;READIN PRESET

                                     03A6 22600 		SEARCHA,-		;SEARCH AHEAD FOR SECTOR

                                     03A6 22700 		>,LIMIT=#CDF_SEEK	;

                                     03CA 22800  

                                     03CA 22900 ;

                                     03CA 23000 ; IMMEDIATE FUNCTION EXECUTION

                                     03CA 23100 ;

                                     03CA 23200 ;	FUNCTIONS INCLUDE:

                                     03CA 23300 ;

                                     03CA 23400 ;		NO OPERATION,

                                     03CA 23500 ;		UNLOAD VOLUME,

                                     03CA 23600 ;		DRIVE CLEAR,

                                     03CA 23700 ;		RELEASE PORT,

                                     03CA 23800 ;		READ IN PRESET, AND

                                     03CA 23900 ;		PACK ACKNOWLEDGE.

                                     03CA 24000 ;

                                     03CA 24100 ; THESE FUNCTIONS ARE EXECUTED IMMEDIATELY AND THE FINAL DEVICE REGISTERS

                                     03CA 24200 ; ARE RETURNED TO THE CALLER.

                                     03CA 24300 ;

                                     03CA 24400  

                                     03CA 24500 IMMED:					;IMMEDIATE FUNCTION EXECUTION

                                     03CA 24600 	DSBINT				;DISABLE INTERRUPTS

         58 A5            05     E0  03D0 24700 	BBS	#UCB$V_POWER,UCB$W_STS(R5),10$ ;IF SET, POWER HAS FAILED

                          09         03D4       

            63            09     9A  03D5 24800 	MOVZBL	#F_DRVCLR!1,RP_CS1(R3)	;CLEAR DRIVE ERRORS

            63       FC65 CF40   9A  03D8 24900 	MOVZBL	FTAB[R0],RP_CS1(R3)	;EXECUTE FUNCTION

                          78     11  03DE 25000 10$:	BRB	ENBXIT			;

                                     03E0 25100  

                                     03E0 25200 ;

                                     03E0 25300 ; SEARCH AHEAD FUNCTION EXECUTION

                                     03E0 25400 ;

                                     03E0 25500 ; THIS FUNCTION MINIMIZES ROTATIONAL LATENCY BY SEARCHING FOR THE SECTOR THAT IS

                                     03E0 25600 ; FOUR SECTORS AHEAD OF THE STARTING SECTOR OF A TRANSFER.

                                     03E0 25700 ;

                                     03E0 25800 ; THE DESIRED CYLINDER, TRACK, AND SECTOR ADDRESS REGISTERS ARE LOADED, THE

                                     03E0 25900 ; FUNCTION IS INITIATED, AND A WAITFOR INTERRUPT IS EXECUTED. WHEN THE INTER-

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  19

01              RP04/05/06 HARDWARE FUNCTION EXECUTION                                                                           (2)



                                     03E0 26000 ; RUPT OCCURS, THE FINAL DEVICE REGISTERS ARE RETURNED TO THE CALLER.

                                     03E0 26100 ;

                                     03E0 26200  

                                     03E0 26300 SEARCHA:				;

            51       008C C5     3C  03E0 26400 	MOVZWL	UCB$W_DA(R5),R1		;GET DESIRED TRACK AND SECTOR ADDRESS

            51            04     82  03E5 26500 	SUBB	#4,R1			;COMPUTE FOUR SECTORS BEFORE SPECIFIED SECTOR

                          04     18  03E8 26600 	BGEQ	10$			;IF GEQ BEFORE SECTOR ZERO

            51         3C A5     80  03EA 26700 	ADDB	UCB$B_SECTORS(R5),R1	;CONVERT TO AFTER SECTOR ZERO

         14 A3            51     D0  03EE 26800 10$:	MOVL	R1,RP_DA(R3)		;SET TRACK AND SECTOR ADDRESS

                          14     11  03F2 26900 	BRB	LDCYL			;

                                     03F4 27000  

                                     03F4 27100 ;

                                     03F4 27200 ; TRANSFER FUNCTION EXECUTION

                                     03F4 27300 ;

                                     03F4 27400 ;	FUNCTIONS INCLUDE:

                                     03F4 27500 ;

                                     03F4 27600 ;		WRITE CHECK,

                                     03F4 27700 ;		WRITE CHECK HEADER AND DATA,

                                     03F4 27800 ;		WRITE DATA,

                                     03F4 27900 ;		WRITE HEADER AND DATA,

                                     03F4 28000 ;		READ DATA, AND

                                     03F4 28100 ;		READ HEADER AND DATA.

                                     03F4 28200 ;

                                     03F4 28300 ; THE MAP REGISTERS, BYTE COUNT REGISTER, AND VIRTUAL ADDRESS REGISTER ARE

                                     03F4 28400 ; LOADED FOLLOWED BY THE DESIRED CYLINDER, TRACK, AND SECTOR ADDRESS REGISTERS.

                                     03F4 28500 ; THE FUNCTION IS INITIATED AND A WAITFOR INTERRUPT IS EXECUTED. WHEN THE

                                     03F4 28600 ; INTERRUPT OCCURS, THE FINAL DEVICE REGISTERS ARE RETURNED TO THE CALLER.

                                     03F4 28700 ;

                                     03F4 28800 ; IT ASSUMED THAT THE CALLER OWNS THE CHANNEL ON WHICH THE I/O IS TO OCCUR.

                                     03F4 28900 ;

                                     03F4 29000  

                                     03F4 29100 XFER:					;TRANSFER FUNCTION EXECUTION

         08 A4            00     D2  03F4 29200 	MCOML	#0,MBA$L_SR(R4)		;CLEAR MASSBUS ADAPTER ERRORS

                                     03F8 29300 	LOADMBA				;LOAD MAP, BYTE COUNT, AND VIRTUAL ADDRESS

            50         77 A5     9A  03FE 29400 	MOVZBL	UCB$B_CEX(R5),R0	;RETRIEVE FUNCTION TABLE INDEX

                                     0402 29500  

                                     0402 29600 ;

                                     0402 29700 ; POSITIONING FUNCTION EXECUTION

                                     0402 29800 ;

                                     0402 29900 ;	FUNCTIONS INCLUDE:

                                     0402 30000 ;

                                     0402 30100 ;		SEEK CYLINDER, AND

                                     0402 30200 ;		SEARCH FOR SECTOR.

                                     0402 30300 ;

                                     0402 30400 ; THE DESIRED CYLINDER, TRACK, AND SECTOR ADDRESS REGISTERS ARE LOADED, THE

                                     0402 30500 ; FUNCTION IS INITIATED, AND A WAITFOR INTERRUPT IS EXECUTED. WHEN THE INTER-

                                     0402 30600 ; RUPT OCCURS, THE FINAL DEVICE REGISTERS ARE RETURNED TO THE CALLER.

                                     0402 30700 ;

                                     0402 30800  

                                     0402 30900 POSIT:					;POSITION FUNCTION EXECUTION

         14 A3       008C C5     3C  0402 31000 	MOVZWL	UCB$W_DA(R5),RP_DA(R3)	;SET DESIRED TRACK AND SECTOR ADDRESS

                                     0408 31100 LDCYL:					;

         28 A3       008E C5     3C  0408 31200 	MOVZWL	UCB$W_DC(R5),RP_DC(R3)	;SET DESIRED CYLINDER ADDRESS

                                     040E 31300  

                                     040E 31400 ;

                                     040E 31500 ; INTERRUPT WAIT FUNCTION EXECUTION

                                     040E 31600 ;

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  20

01              RP04/05/06 HARDWARE FUNCTION EXECUTION                                                                           (2)



                                     040E 31700 ;	FUNCTIONS INCLUDE:

                                     040E 31800 ;

                                     040E 31900 ;		OFFSET HEADS,

                                     040E 32000 ;		RECALIBRATE, AND

                                     040E 32100 ;		RETURN TO CENTERLINE.

                                     040E 32200 ;

                                     040E 32300 ; THE OFFSET REGISTER IS LOADED, THE FUNCTION IS INITIATED, AND A WAITFOR

                                     040E 32400 ; INTERRUPT IS EXECUTED. WHEN THE INTERRUPT OCCURS, THE FINAL DEVICE REGISTERS

                                     040E 32500 ; ARE RETURNED TO THE CALLER.

                                     040E 32600 ;

                                     040E 32700  

                                     040E 32800 EXFNC:					;EXECUTE FUNCTION

                                     040E 32900 	DSBINT				;DISABLE INTERRUPTS

         58 A5            05     E0  0414 33000 	BBS	#UCB$V_POWER,UCB$W_STS(R5),ENBXIT ;IF SET, POWER FAILED

                          3F         0418       

            63            09     9A  0419 33100 	MOVZBL	#F_DRVCLR!1,RP_CS1(R3)	;CLEAR DRIVE ERRORS

         24 A3       008A C5     3C  041C 33200 	MOVZWL	UCB$W_OFFSET(R5),RP_OF(R3) ;SET FORMAT, INHIBIT BITS, AND OFFSET

         04 A3            13     78  0422 33300 	ASHL	#31-RP_DS_V_MOL,RP_DS(R3),R2 ;MEDIUM ONLINE?

                          52         0426       

                          1E     18  0427 33400 	BGEQ	10$			;IF GEQ NO

            63       FC14 CF40   9A  0429 33500 	MOVZBL	FTAB[R0],RP_CS1(R3)	;INITIATE FUNCTION

                                     042F 33600 	WFIKPCH	RETREG,#15		;WAITFOR INTERRUPT AND KEEP CHANNEL

       0098 C5         08 A4     D0  0439 33700 	MOVL	MBA$L_SR(R4),UCB$L_DB_SR(R5) ;SAVE FINAL CONTROLLER STATUS

                                     043F 33800 	IOFORK				;CREATE FORK PROCESS

                          14     11  0445 33900 	BRB	RETREG			;

                                     0447 34000  

                                     0447 34100 ;

                                     0447 34200 ; MEDIUM OFFLINE AT START OF FUNCTION

                                     0447 34300 ;

                                     0447 34400  

                                     0447 34500 10$:	ENBINT				;ENABLE INTERRUPTS

                       77 A5     94  044A 34600 	CLRB	UCB$B_CEX(R5)		;FORCE DRIVE FUNCTION

            50       4000 8F     3C  044D 34700 	MOVZWL	#RP_DS_M_ERR,R0		;SET DRIVE ERROR

                     0098 C5     D4  0452 34800 	CLRL	UCB$L_DB_SR(R5)		;CLEAR SAVED MBA STATUS REGISTER

                          19     11  0456 34900 	BRB	ERROR			;

                                     0458 35000  

                                     0458 35100 ;

                                     0458 35200 ; ENABLE INTERRUPTS

                                     0458 35300 ;

                                     0458 35400  

                                     0458 35500 ENBXIT:					;

                                     0458 35600 	ENBINT				;ENABLE INTERRUPTS

                                     045B 35700  

                                     045B 35800 ;

                                     045B 35900 ; RETURN REGISTERS

                                     045B 36000 ;

                                     045B 36100  

                                     045B 36200 	.ENABL	LSB

                                     045B 36300 RETREG:					;RETURN FINAL DEVICE REGISTERS

       0090 C5         38 A3     F7  045B 36400 	CVTLW	RP_EC1(R3),UCB$W_EC1(R5) ;SAVE ECC POSITION REGISTER

       0092 C5         3C A3     F7  0461 36500 	CVTLW	RP_EC2(R3),UCB$W_EC2(R5) ;SAVE ECC PATTERN REGISTER

       0096 C5         10 A4     F7  0467 36600 	CVTLW	MBA$L_BCR(R4),UCB$W_BCR(R5) ;SAVE BYTE COUNT REGISTER

            50         04 A3     D0  046D 36700 	MOVL	RP_DS(R3),R0		;GET CONTENTS OF DRIVE STATUS REGISTER

                                     0471 36800 ERROR:					;

            51       0098 C5     D0  0471 36900 	MOVL	UCB$L_DB_SR(R5),R1	;RETRIEVE FINAL CONTROLLER STATUS

            52         08 A3     D0  0476 37000 	MOVL	RP_ER1(R3),R2		;GET CONTENTS OF DRIVE ERROR REGISTER 1

         58 A5       0060 8F     B3  047A 37100 	BITW	#UCB$M_POWER!-		;POWER FAIL OR DEVICE TIMEOUT?

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  21

01              RP04/05/06 HARDWARE FUNCTION EXECUTION                                                                           (2)



                                     0480 37200 		UCB$M_TIMOUT,UCB$W_STS(R5) ;

                          65     12  0480 37300 	BNEQ	50$			;IF NEQ YES - SPECIAL CONDITION

         77 A5            0A     91  0482 37400 	CMPB	#CDF_WRITECHECK,UCB$B_CEX(R5) ;DRIVE RELATED FUNCTION?

                          2C     1A  0486 37500 	BGTRU	10$			;IF GTRU YES

         77 A5            10     91  0488 37600 	CMPB	#CDF_READPRESET,UCB$B_CEX(R5) ;READIN PRESET FUNCTION?

                          26     13  048C 37700 	BEQL	10$			;IF EQL YES

                                     048E 37800  

                                     048E 37900 ;

                                     048E 38000 ; CONTROLLER RELATED FUNCTION

                                     048E 38100 ;

                                     048E 38200  

            51   000E1FFF 8F     D3  048E 38300 	BITL	#MBA$M_ERROR,R1		;ANY CONTROLLER ERRORS?

                          45     13  0495 38400 	BEQL	30$			;IF EQL NO

                 00000000'GF     16  0497 38500 	JSB	G^ERL$DEVICERR		;ALLOCATE AND FILL ERROR MESSAGE BUFFER

         7E A5            0F     E0  049D 38600 	BBS	#IO$V_INHRETRY,UCB$W_FUNC(R5),40$ ;IF SET, RETRY INHIBITED

                          42         04A1       

            51   0008000B 8F     D3  04A2 38700 	BITL	#MBA$M_SR_ERCONF!-	;ERROR CONFIRMATION OR,

                                     04A9 38800 		MBA$M_SR_ISTO!-		;INTERFACE SEQUENCE TIMEOUT OR,

                                     04A9 38900 		MBA$M_SR_PGE!-		;PROGRAMMING ERROR OR,

                                     04A9 39000 		MBA$M_SR_RDTO,R1	;READ TIMEOUT?

                          39     12  04A9 39100 	BNEQ	40$			;IF NEQ YES - FATAL CONTROLLER ERROR

            51   00060FF4 8F     D3  04AB 39200 	BITL	#MBA$M_SR_DLT!-		;DATA LATE OR,

                                     04B2 39300 		MBA$M_SR_INVMAP!-	;INVALID MAP REGISTER OR,

                                     04B2 39400 		MBA$M_SR_MAPPE!-	;MAP REGISTER PARITY ERROR OR,

                                     04B2 39500 		MBA$M_SR_MBEXC!-	;MASSBUS EXCEPTION OR,

                                     04B2 39600 		MBA$M_SR_MCPE!-		;MASSBUS CONTROL PARITY ERROR OR,

                                     04B2 39700 		MBA$M_SR_MDPE!-		;MASSBUS DATA PARITY ERROR OR,

                                     04B2 39800 		MBA$M_SR_MXF!-		;MISSED TRANSFER OR,

                                     04B2 39900 		MBA$M_SR_NED!-		;NONEXISTENT DRIVE OR,

                                     04B2 40000 		MBA$M_SR_RDS!-		;READ DATA SUBSTITUTE OR,

                                     04B2 40100 		MBA$M_SR_WCKLWR!-	;WRITE CHECK LOWER BYTE OR,

                                     04B2 40200 		MBA$M_SR_WCKUPR,R1	;WRITE CHECK UPPER BYTE?

                          0F     12  04B2 40300 	BNEQ	20$			;IF NEQ YES - RETRIABLE CONTROLLER ERROR

                                     04B4 40400  

                                     04B4 40500 ;

                                     04B4 40600 ; DRIVE RELATED FUNCTION

                                     04B4 40700 ;

                                     04B4 40800  

            50            0E     E1  04B4 40900 10$:	BBC	#RP_DS_V_ERR,R0,30$	;IF CLR, NO DRIVE ERRORS

                          24         04B7       

                 00000000'GF     16  04B8 41000 	JSB	G^ERL$DEVICERR		;ALLOCATE AND FILL ERROR MESSAGE BUFFER

         7E A5            0F     E0  04BE 41100 	BBS	#IO$V_INHRETRY,UCB$W_FUNC(R5),40$ ;IF SET, RETRY INHIBITED

                          21         04C2       

            50            0C     E1  04C3 41200 20$:	BBC	#RP_DS_V_MOL,R0,40$	;IF CLR, MEDIUM OFFLINE

                          1D         04C6       

            50            06     E1  04C7 41300 	BBC	#RP_DS_V_VV,R0,40$	;IF CLR, INVALID VOLUME

                          19         04CA       

            52       4E07 8F     B3  04CB 41400 	BITW	#RP_ER1_M_AOE!-		;ADDRESS OVERFLOW OR,

                                     04D0 41500 		RP_ER1_M_IAE!-		;INVALID ADDRESS OR,

                                     04D0 41600 		RP_ER1_M_ILF!-		;ILLEGAL FUNCTION OR,

                                     04D0 41700 		RP_ER1_M_ILR!-		;ILLEGAL REGISTER OR,

                                     04D0 41800 		RP_ER1_M_RMR!-		;REGISTER MODIFY REFUSE OR,

                                     04D0 41900 		RP_ER1_M_UNS!-		;DRIVE UNSAFE OR,

                                     04D0 42000 		RP_ER1_M_WLE,R2		;WRITE LOCK ERROR?

                          12     12  04D0 42100 	BNEQ	40$			;IF NEQ YES - FATAL DRIVE ERROR

                                     04D2 42200  

                                     04D2 42300 ;

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  22

01              RP04/05/06 HARDWARE FUNCTION EXECUTION                                                                           (2)



                                     04D2 42400 ; RETRIABLE ERROR EXIT

                                     04D2 42500 ;

                                     04D2 42600  

            7E       0080 D5     98  04D2 42700 	CVTBL	@UCB$L_DPC(R5),-(SP)	;GET BRANCH DISPLACEMENT

       0080 C5            8E     C0  04D7 42800 	ADDL	(SP)+,UCB$L_DPC(R5)	;CALCULATE RETURN ADDRESS - 1

                     0080 C5     D6  04DC 42900 30$:	INCL	UCB$L_DPC(R5)		;ADJUST TO CORRECT RETURN ADDRESS

                     0080 D5     17  04E0 43000 	JMP	@UCB$L_DPC(R5)		;RETURN TO DRIVER

                                     04E4 43100  

                                     04E4 43200 ;

                                     04E4 43300 ; FATAL CONTROLLER OR DRIVE ERROR

                                     04E4 43400 ;

                                     04E4 43500  

                          FDFA   31  04E4 43600 40$:	BRW	FATALERR		;

                                     04E7 43700  

                                     04E7 43800 ;

                                     04E7 43900 ; SPECIAL CONDITION (POWER FAILURE OR DEVICE TIME OUT)

                                     04E7 44000 ;

                                     04E7 44100  

         58 A5            05     E4  04E7 44200 50$:	BBSC	#UCB$V_POWER,UCB$W_STS(R5),70$ ;IF SET, POWER FAILURE

                          46         04EB       

                                     04EC 44300  

                                     04EC 44400 ;

                                     04EC 44500 ; DEVICE TIME OUT

                                     04EC 44600 ;

                                     04EC 44700  

                 00000000'GF     16  04EC 44800 	JSB	G^ERL$DEVICTMO		;LOG DEVICE TIME OUT

            53         20 A5     D0  04F2 44900 	MOVL	UCB$L_CRB(R5),R3	;GET ADDRESS OF CRB

            53         1C A3     D0  04F6 45000 	MOVL	CRB$L_INTD+VEC$L_IDB(R3),R3 ;GET ADDRESS OF IDB

         04 A3            55     D1  04FA 45100 	CMPL	R5,IDB$L_OWNER(R3)	;DEVICE OWN CONTROLLER?

                          08     12  04FE 45200 	BNEQ	60$			;IF NEQ NO

         04 A4            01     D0  0500 45300 	MOVL	#MBA$M_CR_INIT,MBA$L_CR(R4) ;INITIALIZE ENTIRE MBA

         04 A4            04     D0  0504 45400 	MOVL	#MBA$M_CR_IE,MBA$L_CR(R4) ;ENABLE DEVICE INTERRUPTS

                                     0508 45500 60$:	SETIPL	UCB$B_FIPL(R5)		;LOWER TO FORK LEVEL

            50       0000'8F     3C  050C 45600 	MOVZWL	#SS$_TIMEOUT,R0		;SET DEVICE TIMEOUT STATUS

                       70 A5     97  0511 45700 	DECB	UCB$B_ERTCNT(R5)	;ANY ERROR RETRIES REMAINING?

                          0F     13  0514 45800 	BEQL	RESETXFR		;IF EQL NO

                                     0516 45900 	RELCHAN				;RELEASE CHANNEL IF OWNED

         58 A5       0040 8F     AA  051C 46000 	BICW	#UCB$M_TIMOUT,UCB$W_STS(R5) ;CLEAR TIME OUT STATUS

                          FC15   31  0522 46100 	BRW	FDISPATCH		;

                                     0525 46200  

                                     0525 46300 ;

                                     0525 46400 ; RESET TRANSFER BYTE COUNT TO ZERO

                                     0525 46500 ;

                                     0525 46600  

                                     0525 46700 RESETXFR:				;

            53         4C A5     D0  0525 46800 	MOVL	UCB$L_IRP(R5),R3	;RETRIEVE ADDRESS OF I/O PACKET

       0096 C5         32 A3     AE  0529 46900 	MNEGW	IRP$W_BCNT(R3),UCB$W_BCR(R5) ;RESET TRANSFER BYTE COUNT

                          FE30   31  052F 47000 	BRW	FUNCXT			;

                                     0532 47100  

                                     0532 47200 ;

                                     0532 47300 ; POWER FAILURE

                                     0532 47400 ;

                                     0532 47500  

                                     0532 47600 70$:	RELCHAN				;RELEASE CHANNEL

            53         4C A5     D0  0538 47700 	MOVL	UCB$L_IRP(R5),R3	;RETRIEVE ADDRESS OF I/O PACKET

         68 A5         2C A3     7D  053C 47800 	MOVQ	IRP$L_SVAPTE(R3),UCB$L_SVAPTE(R5) ;RESTORE TRANSFER PARAMETERS

                          FBA0   31  0541 47900 	BRW	DB_STARTIO			;

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  23

01              RP04/05/06 HARDWARE FUNCTION EXECUTION                                                                           (2)



                                     0544 48000 	.DSABL	LSB

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  24

01              RP04/RP05/RP06 CLASSIFY DRIVE TYPE AND SET PARA                                                                  (2)



                                     0544 48200 	.SBTTL	RP04/RP05/RP06 CLASSIFY DRIVE TYPE AND SET PARAMETERS

                                     0544 48300 ;

                                     0544 48400 ; DB_DTYPE - RP04/RP05/RP06 CLASSIFY DRIVE TYPE AND SET PARAMETERS

                                     0544 48500 ;

                                     0544 48600 ; THIS ROUTINE IS CALLED WHEN AN UNSOLICITED INTERRUPT OCCURS ON A DRIVE, DURING

                                     0544 48700 ; SYSTEM INITIALIZATION, AND AT POWER RECOVERY TO DETERMINE THE DRIVE TYPE AND

                                     0544 48800 ; SET UNIT PARAMETERS.

                                     0544 48900 ;

                                     0544 49000 ; INPUTS:

                                     0544 49100 ;

                                     0544 49200 ;	R3 = ADDRESS OF DRIVE CONTROL REGISTER.

                                     0544 49300 ;	R4 = ADDRESS OF MBA CONFIGURATION STATUS REGISTER.

                                     0544 49400 ;	R5 = DEVICE UNIT UCB ADDRESS.

                                     0544 49500 ;

                                     0544 49600 ; OUTPUTS:

                                     0544 49700 ;

                                     0544 49800 ;	THE DRIVE STATUS REGISTER IS INTERROGATED AND UNIT PARAMETERS ARE SET.

                                     0544 49900 ;

                                     0544 50000  

                                     0544 50100 DB_DTYPE:				;CLASSIFY DRIVE TYPE AND SET PARAMETERS

                       18 A3     DD  0544 50200 	PUSHL	RP_DT(R3)		;READ DRIVE TYPE REGISTER

            6E       FE00 8F     AA  0547 50300 	BICW	#^C<^X1FF>,(SP)		;CLEAR EXTRANEOUS BITS

            52       FACC CF     9E  054C 50400 	MOVAB	DB_DTDESC,R2		;GET ADDRESS OF DESCRIPTOR TABLE

            82            6E     B1  0551 50500 10$:	CMPW	(SP),(R2)+		;DRIVE TYPE MATCH?

                          0E     13  0554 50600 	BEQL	20$			;IF EQL YES

            52            07     C0  0556 50700 	ADDL	#DB_DTDESCLEN-2,R2	;ADVANCE TO NEXT ENTRY

                          62     B5  0559 50800 	TSTW	(R2)			;END OF TABLE?

                          F4     12  055B 50900 	BNEQ	10$			;IF NEQ NO

         58 A5            10     AA  055D 51000 	BICW	#UCB$M_ONLINE,UCB$W_STS(R5) ;SET UNIT OFFLINE

            52            07     C2  0561 51100 	SUBL	#DB_DTDESCLEN-2,R2	;BACK UP TO LAST DRIVE DESCRIPTOR

         39 A5            82     90  0564 51200 20$:	MOVB	(R2)+,UCB$B_DEVTYPE(R5)	;SET DEVICE TYPE

         3E A5            82     B0  0568 51300 	MOVW	(R2)+,UCB$W_CYLINDERS(R5) ;SET NUMBER OF CYLINDERS PER PACK

       0084 C5            62     D0  056C 51400 	MOVL	(R2),UCB$L_MAXBLOCK(R5) ;SET MAXIMUM BLOCKS PER PACK

                          8E     D5  0571 51500 	TSTL	(SP)+			;REMOVE DRIVE TYPE FROM STACK

                                 05  0573 51600 	RSB				;

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  25

01              RP04/05/06 REGISTER DUMP ROUTINE                                                                                 (2)



                                     0574 51800 	.SBTTL	RP04/05/06 REGISTER DUMP ROUTINE

                                     0574 51900 ;

                                     0574 52000 ; DB_REGDUMP - RP04/05/06 REGISTER DUMP ROUTINE

                                     0574 52100 ;

                                     0574 52200 ; THIS ROUTINE IS CALLED TO SAVE THE CONTROLLER AND DRIVE REGISTERS IN A

                                     0574 52300 ; SPECIFIED BUFFER. IT IS CALLED FROM THE DEVICE ERROR LOGGING ROUTINE AND

                                     0574 52400 ; FROM THE DIAGNOSTIC BUFFER FILL ROUTINE.

                                     0574 52500 ;

                                     0574 52600 ; INPUTS:

                                     0574 52700 ;

                                     0574 52800 ;	R0 = ADDRESS OF REGISTER SAVE BUFFER.

                                     0574 52900 ;	R4 = ADDRESS OF ADAPTER CONFIGURATION REGISTER.

                                     0574 53000 ;	R5 = DEVICE UNIT UCB ADDRESS.

                                     0574 53100 ;

                                     0574 53200 ; OUTPUTS:

                                     0574 53300 ;

                                     0574 53400 ;	THE CONTROLLER AND DRIVE REGISTERS ARE SAVED IN THE SPECIFIED BUFFER.

                                     0574 53500 ;

                                     0574 53600  

                                     0574 53700 DB_REGDUMP:				;RP04/05/06 REGISTER DUMP ROUTINE

            80            17     D0  0574 53800 	MOVL	#<RP_EC2+4+MBA$L_BCR+4+8>/4,(R0)+ ;INSERT NUMBER OF DEVICE REGISTERS

            80            64     D0  0577 53900 	MOVL	MBA$L_CSR(R4),(R0)+	;SAVE CONFIGURATION REGISTER

            80         04 A4     D0  057A 54000 	MOVL	MBA$L_CR(R4),(R0)+	;SAVE CONTROL REGISTER

            80       0098 C5     D0  057E 54100 	MOVL	UCB$L_DB_SR(R5),(R0)+	;SAVE STATUS REGISTER

            80         0C A4     D0  0583 54200 	MOVL	MBA$L_VAR(R4),(R0)+	;SAVE VIRTUAL ADDRESS REGISTER

            80         10 A4     D0  0587 54300 	MOVL	MBA$L_BCR(R4),(R0)+	;SAVE BYTE COUNT REGISTER

            08            09     EF  058B 54400 	EXTZV	#9,#8,-8(R0),R1		;GET FINAL MAP REGISTER NUMBER

            51         F8 A0         058E       

            80       0800 C441   D0  0591 54500 	MOVL	MBA$L_MAP(R4)[R1],(R0)+	;SAVE FINAL MAP REGISTER CONTENTS

                          80     D4  0597 54600 	CLRL	(R0)+			;ASSUME NO PREVIOUS MAP REGISTER

                          51     D7  0599 54700 	DECL	R1			;CALCULATE PREVIOUS MAP REGISTER NUMBER

                          07     19  059B 54800 	BLSS	10$			;IF LSS NONE

         FC A0       0800 C441   D0  059D 54900 	MOVL	MBA$L_MAP(R4)[R1],-4(R0) ;SAVE PREVIOUS MAP REGISTER CONTENTS

            51            10     9A  05A4 55000 10$:	MOVZBL	#<RP_EC2+4>/4,R1	;SET NUMBER OF DRIVE REGISTERS TO SAVE

            52         75 A5     9A  05A7 55100 	MOVZBL	UCB$B_SLAVE+1(R5),R2	;GET DRIVE OFFSET CONSTANT

            52       0400 C442   DE  05AB 55200 	MOVAL	MBA$L_ERB(R4)[R2],R2	;GET ADDRESS OF DRIVE REGISTERS

            80            82     D0  05B1 55300 20$:	MOVL	(R2)+,(R0)+		;SAVE DRIVE REGISTER

            FA            51     F5  05B4 55400 	SOBGTR	R1,20$			;ANY MORE TO SAVE?

                                 05  05B7 55500 	RSB				;

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  26

01              RP04/RP05/RP06 DISK DRIVE INITIALIZATION                                                                         (2)



                                     05B8 55700 	.SBTTL	RP04/RP05/RP06 DISK DRIVE INITIALIZATION

                                     05B8 55800 ;

                                     05B8 55900 ; DB_RP0X_INIT - RP04/RP05/RP06 DISK DRIVE INITIALIZATION

                                     05B8 56000 ;

                                     05B8 56100 ; THIS ROUTINE IS CALLED AT SYSTEM INITIALIZATION AND AT POWER RECOVERY TO SET

                                     05B8 56200 ; DRIVE PARAMETERS AND TO WAIT FOR ONLINE DRIVES TO SPIN UP.

                                     05B8 56300 ;

                                     05B8 56400 ; INPUTS:

                                     05B8 56500 ;

                                     05B8 56600 ;	R4 = ADDRESS OF MBA CONFIGURATION STATUS REGISTER.

                                     05B8 56700 ;	R5 = DEVICE UNIT UCB ADDRESS.

                                     05B8 56800 ;

                                     05B8 56900 ; OUTPUTS:

                                     05B8 57000 ;

                                     05B8 57100 ;	UNIT PARAMETERS ARE ESTABLISHED AND THE DRIVE IS SPUN UP IF IT WAS ONLINE.

                                     05B8 57200 ;

                                     05B8 57300  

                                     05B8 57400 DB_RP0X_INIT:				;RP04/RP05/RP06 DISK DRIVE INITIALIZATION

            53         48 A5     3C  05B8 57500 	MOVZWL	UCB$W_UNIT(R5),R3	;GET DRIVE UNIT NUMBER

         74 A5            53     90  05BC 57600 	MOVB	R3,UCB$B_SLAVE(R5)	;SET SLAVE UNIT NUMBER

            53            20     C4  05C0 57700 	MULL	#<1@7>/4,R3		;CALCULATE DRIVE OFFSET CONSTANT

         75 A5            53     90  05C3 57800 	MOVB	R3,UCB$B_SLAVE+1(R5)	;SET DRIVE OFFSET CONSTANT

            53       0400 C443   DE  05C7 57900 	MOVAL	MBA$L_ERB(R4)[R3],R3	;GET ADDRESS OF DRIVE CONTROL REGISTER

            63            09     9A  05CD 58000 	MOVZBL	#F_DRVCLR!1,RP_CS1(R3)	;CLEAR DRIVE

            7E         58 A5     3C  05D0 58100 	MOVZWL	UCB$W_STS(R5),-(SP)	;SAVE CURRENT UNIT STATUS

                       08 A4     DD  05D4 58200 	PUSHL	MBA$L_SR(R4)		;READ MBA STATUS REGISTER

         58 A5       0810 8F     AA  05D7 58300 	BICW	#UCB$M_ONLINE!UCB$M_VALID,UCB$W_STS(R5) ;SET UNIT OFFLINE/INVALID

            6E            12     E0  05DD 58400 	BBS	#MBA$V_SR_NED,(SP),40$	;IF SET, NONEXISTENT DISK

                          32         05E0       

         58 A5            10     A8  05E1 58500 	BISW	#UCB$M_ONLINE,UCB$W_STS(R5) ;SET UNIT ONLINE

                          FF5C   30  05E5 58600 	BSBW	DB_DTYPE		;CLASSIFY DRIVE TYPE

         58 A5            04     E1  05E8 58700 	BBC	#UCB$V_ONLINE,UCB$W_STS(R5),30$ ;IF CLR, UNKNOWN DRIVE TYPE

                          23         05EC       

         04 AE            0B     E1  05ED 58800 	BBC	#UCB$V_VALID,4(SP),30$	;IF CLR, VOLUME SOFTWARE INVALID

                          1E         05F1       

            63            09     9A  05F2 58900 10$:	MOVZBL	#F_DRVCLR!1,RP_CS1(R3)	;CLEAR DRIVE

            63            13     9A  05F5 59000 	MOVZBL	#F_PACKACK!1,RP_CS1(R3)	;ACKNOWLEDGE PACK

         04 A3            19     78  05F8 59100 	ASHL	#31-RP_DS_V_VV,RP_DS(R3),R2 ;VOLUME VALID?

                          52         05FC       

                          0B     19  05FD 59200 	BLSS	20$			;IF LSS YES

                 00000000'GF     16  05FF 59300 	JSB	G^EXE$PWRTIMCHK		;CHECK FOR MAXIMUM TIME EXCEEDED

            EA            50     E8  0605 59400 	BLBS	R0,10$			;IF LBS MORE TIME TO GO

                          06     11  0608 59500 	BRB	30$			;

         58 A5       0800 8F     A8  060A 59600 20$:	BISW	#UCB$M_VALID,UCB$W_STS(R5) ;SET VOLUME SOFTWARE VALID

            63            09     9A  0610 59700 30$:	MOVZBL	#F_DRVCLR!1,RP_CS1(R3)	;CLEAR DRIVE

            8E            8E     C9  0613 59800 40$:	BISL3	(SP)+,(SP)+,MBA$L_SR(R4) ;CLEAR MBA STATUS

                       08 A4         0616       

                                 05  0618 59900 	RSB				;

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  27

01              RP04/RP05/RP06 UNSOLICITED INTERRUPT ROUTINE                                                                     (2)



                                     0619 60100 	.SBTTL	RP04/RP05/RP06 UNSOLICITED INTERRUPT ROUTINE

                                     0619 60200 ;

                                     0619 60300 ; DB_UNSOLNT - RP04/RP05/RP06 UNSOLICITED INTERRUPT ROUTINE

                                     0619 60400 ;

                                     0619 60500 ; THIS ROUTINE IS CALLED WHEN AN UNSOLICITED ATTENTION CONDITION IS DETECTED FOR

                                     0619 60600 ; AN RP04, RP05, OR RP06 DRIVE.

                                     0619 60700 ;

                                     0619 60800 ; INPUTS:

                                     0619 60900 ;

                                     0619 61000 ;	R4 = ADDRESS OF CONFIGURATION STATUS REGISTER.

                                     0619 61100 ;	R5 = DEVICE UNIT UCB ADDRESS.

                                     0619 61200 ;

                                     0619 61300 ; OUTPUTS:

                                     0619 61400 ;

                                     0619 61500 ;	IF VOLUME VALID IS CLEAR, THEN SOFTWARE VOLUME VALID IS CLEARED. THE

                                     0619 61600 ;	UNIT STATUS IS CHANGED TO ONLINE AND THE DRIVE TYPE AND PARAMETERS ARE

                                     0619 61700 ;	CLASSIFIED.

                                     0619 61800 ;

                                     0619 61900  

                                     0619 62000 DB_UNSOLNT:				;RP04/RP05/RP06 UNSOLICITED INTERRUPTS

            53         75 A5     9A  0619 62100 	MOVZBL	UCB$B_SLAVE+1(R5),R3	;GET DRIVE OFFSET CONSTANT

            53       0400 C443   DE  061D 62200 	MOVAL	MBA$L_ERB(R4)[R3],R3	;GET ADDRESS OF DRIVE CONTROL REGISTER

         58 A5            10     A8  0623 62300 	BISW	#UCB$M_ONLINE,UCB$W_STS(R5) ;SET UNIT ONLINE

                          FF1A   30  0627 62400 	BSBW	DB_DTYPE		;CLASSIFY DRIVE TYPE

         58 A5            04     E1  062A 62500 	BBC	#UCB$V_ONLINE,UCB$W_STS(R5),10$ ;IF CLR, UNKNOWN DRIVE TYPE

                          13         062E       

         58 A5            0B     E1  062F 62600 	BBC	#UCB$V_VALID,UCB$W_STS(R5),20$ ;IF CLR, VOLUME SOFTWARE INVALID

                          14         0633       

         04 A3            13     78  0634 62700 	ASHL	#31-RP_DS_V_MOL,RP_DS(R3),R2 ;MEDIUM ONLINE?

                          52         0638       

                          07     18  0639 62800 	BGEQ	10$			;IF GEQ NO

         04 A3            19     78  063B 62900 	ASHL	#31-RP_DS_V_VV,RP_DS(R3),R2 ;VOLUME VALID?

                          52         063F       

                          06     19  0640 63000 	BLSS	20$			;IF LSS YES

         58 A5       0800 8F     AA  0642 63100 10$:	BICW	#UCB$M_VALID,UCB$W_STS(R5) ;CLEAR SOFTWARE VOLUME VALID

                                 05  0648 63200 20$:	RSB				;

                                     0649 63300 DB_END:					;ADDRESS OF LAST LOCATION IN DRIVER

                                     0649 63400  

                                     0649 63500 	.END

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  28

SYMBOL TABLE                                                                                                                     (2)



$$OP           = 00000002            DC$_DISK         ********   X   03   EMB$B_DV_ERTMAX  00000011            

ACP$ACCESS       ********   X   04   DDB$B_ACPCLASS   00000013            EMB$B_DV_SLAVE   0000003A            

ACP$DEACCESS     ********   X   04   DDB$B_TYPE       0000000A            EMB$B_DV_TYPE    0000001D            

ACP$MODIFY       ********   X   04   DDB$C_LENGTH     00000034            EMB$B_VALID      00000003            

ACP$MOUNT        ********   X   04   DDB$K_LENGTH     00000034            EMB$C_AW       = 00000007            

ACP$READBLK      ********   X   04   DDB$L_ACPD       00000010            EMB$C_BE       = 00000004            

ACP$WRITEBLK     ********   X   04   DDB$L_DDT        0000000C            EMB$C_CR       = 00000025            

AT$_MBA          ********   X   03   DDB$L_LINK       00000000            EMB$C_CS       = 00000020            

BIT...         = 0000000B            DDB$L_UCB        00000004            EMB$C_DE       = 00000001            

CDF_DRVCLR     = 00000004            DDB$T_DRVNAME    00000024            EMB$C_DT       = 00000060            

CDF_NOP        = 00000000            DDB$T_NAME       00000014            EMB$C_HE       = 00000008            

CDF_OFFSET     = 00000006            DDB$W_SIZE       00000008            EMB$C_LENGTH     00000004            

CDF_PACKACK    = 00000008            DEV$M_AVL        ********   X   03   EMB$C_MC       = 00000002            

CDF_READDATA   = 0000000C            DEV$M_DIR        ********   X   03   EMB$C_NF       = 00000023            

CDF_READHEAD   = 0000000E            DEV$M_ELG        ********   X   03   EMB$C_NM       = 0000002A            

CDF_READPRESET = 00000010            DEV$M_FOD        ********   X   03   EMB$C_OM       = 00000029            

CDF_RECAL      = 00000003            DEV$M_IDV        ********   X   03   EMB$C_SA       = 00000005            

CDF_RELEASE    = 00000005            DEV$M_ODV        ********   X   03   EMB$C_SBC      = 00000028            

CDF_RETCENTER  = 00000007            DEV$M_RND        ********   X   03   EMB$C_SE       = 00000006            

CDF_SEARCH     = 00000009            DEV$M_SHR        ********   X   03   EMB$C_SS       = 00000027            

CDF_SEARCHA    = 00000011            DPT$B_ADPTYPE    0000000C            EMB$C_TS       = 00000026            

CDF_SEEK       = 00000002            DPT$B_FLAGS      0000000D            EMB$C_TS_LENGTH  00000010            

CDF_UNLOAD     = 00000001            DPT$B_REFC       0000000B            EMB$C_UBC      = 00000070            

CDF_WRITECHECK = 0000000A            DPT$B_TYPE       0000000A            EMB$C_UI       = 00000061            

CDF_WRITECHECKH= 0000000F            DPT$C_LENGTH     00000022            EMB$C_VD       = 00000041            

CDF_WRITEDATA  = 0000000B            DPT$INITAB       0000001F R     03   EMB$C_VM       = 00000040            

CDF_WRITEHEAD  = 0000000D            DPT$K_LENGTH     00000022            EMB$C_WS       = 00000024            

CHECKRETRY       000001CF R     04   DPT$L_BLINK      00000004            EMB$K_AW       = 00000007            

CHECKTAB         00000018 R     04   DPT$L_FLINK      00000000            EMB$K_BE       = 00000004            

CHECKXT          000001E6 R     04   DPT$M_NOUNLOAD = 00000004            EMB$K_CR       = 00000025            

CRB$B_MASK       0000000E            DPT$M_SUBCNTRL = 00000001            EMB$K_CS       = 00000020            

CRB$B_TT_ATTN    00000004            DPT$M_SVP      = 00000002            EMB$K_DE       = 00000001            

CRB$B_TT_EXPEC   00000005            DPT$REINITAB     00000052 R     03   EMB$K_DT       = 00000060            

CRB$B_TYPE       0000000A            DPT$TAB          00000000 R     03   EMB$K_HE       = 00000008            

CRB$C_LENGTH     00000038            DPT$T_NAME       00000016            EMB$K_LENGTH     00000004            

CRB$K_LENGTH     00000038            DPT$V_NOUNLOAD = 00000002            EMB$K_MC       = 00000002            

CRB$L_INTD       00000014            DPT$V_SUBCNTRL = 00000000            EMB$K_NF       = 00000023            

CRB$L_INTD2      00000038            DPT$V_SVP      = 00000001            EMB$K_NM       = 0000002A            

CRB$L_LINK       00000010            DPT$W_INITTAB    00000010            EMB$K_OM       = 00000029            

CRB$L_TT_DIAL    00000000            DPT$W_REINITTAB  00000012            EMB$K_SA       = 00000005            

CRB$L_WQBL       00000004            DPT$W_SIZE       00000008            EMB$K_SBC      = 00000028            

CRB$L_WQFL       00000000            DPT$W_UCBSIZE    0000000E            EMB$K_SE       = 00000006            

CRB$M_BSY      = 00000001            DPT$W_UNLOAD     00000014            EMB$K_SS       = 00000027            

CRB$V_BSY      = 00000000            DRVCLR           00000172 R     04   EMB$K_TS       = 00000026            

CRB$W_REFC       0000000C            DT$_RP04         ********   X   04   EMB$K_TS_LENGTH  00000010            

CRB$W_SIZE       00000008            DT$_RP05         ********   X   04   EMB$K_UBC      = 00000070            

DATACHECK        0000019D R     04   DT$_RP06         ********   X   04   EMB$K_UI       = 00000061            

DB$DDT           00000000 RG    04   DYN$C_CRB        ********   X   03   EMB$K_VD       = 00000041            

DB_DTDESC        0000001C R     04   DYN$C_DDB        ********   X   03   EMB$K_VM       = 00000040            

DB_DTDESCLEN   = 00000009            DYN$C_DPT        ********   X   03   EMB$K_WS       = 00000024            

DB_DTYPE         00000544 R     04   DYN$C_UCB        ********   X   03   EMB$L_DV_CHAR    00000036            

DB_END           00000649 R     04   ECC              00000208 R     04   EMB$L_DV_MEDIA   00000026            

DB_FUNCTABLE     0000005C R     04   EMB$B_BUFIND     00000002            EMB$L_DV_OPCNT   0000002E            

DB_REGDUMP       00000574 R     04   EMB$B_DEVCLS     00000005            EMB$L_DV_OWNUIC  00000032            

DB_RP0X_INIT     000005B8 R     04   EMB$B_DEVTYP     00000004            EMB$L_DV_REGSAV  0000004E            

DB_STARTIO       000000E4 R     04   EMB$B_DV_CLASS   0000001C            EMB$L_DV_RQPID   0000001E            

DB_UNSOLNT       00000619 R     04   EMB$B_DV_ERTCNT  00000010            EMB$Q_DV_IOSB    00000012            

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  29

SYMBOL TABLE                                                                                                                     (2)



EMB$Q_DV_TIME    00000006            IDB$L_CSR        00000000            IO$V_DMOUNT    = 0000000A            

EMB$Q_HD_TIME    00000006            IDB$L_OWNER      00000004            IO$V_DSABLMBX  = 0000000A            

EMB$Q_TS_TIME    00000006            IDB$L_UCBLST     00000010            IO$V_ENABLMBX  = 00000007            

EMB$T_DV_NAME    0000003E            IDB$W_SIZE       00000008            IO$V_FCODE     = 00000000            

EMB$W_DV_BCNT    00000024            IMMED            000003CA R     04   IO$V_HANGUP    = 00000009            

EMB$W_DV_BOFF    00000022            IO$M_ABORT     = 00000100            IO$V_INHERLOG  = 0000000B            

EMB$W_DV_DEVSTS  0000001A            IO$M_ACCESS    = 00000040            IO$V_INHEXTGAP = 0000000C            

EMB$W_DV_ENTRY   00000004            IO$M_ATTNAST   = 00000100            IO$V_INHRETRY  = 0000000F            

EMB$W_DV_ERRCNT  0000002C            IO$M_BINARY    = 00000040            IO$V_INHSEEK   = 0000000C            

EMB$W_DV_ERRSEQ  0000000E            IO$M_CANCTRLO  = 00000040            IO$V_INTERRUPT = 00000006            

EMB$W_DV_FUNC    0000003C            IO$M_COMMOD    = 00000040            IO$V_INTSKIP   = 00000008            

EMB$W_DV_UNIT    0000002A            IO$M_CREATE    = 00000080            IO$V_MOUNT     = 00000009            

EMB$W_HD_ENTRY   00000004            IO$M_CTRLCAST  = 00000100            IO$V_NOECHO    = 00000006            

EMB$W_HD_ERRSEQ  0000000E            IO$M_CTRLYAST  = 00000080            IO$V_NOFILTR   = 00000009            

EMB$W_SIZE       00000000            IO$M_CVTLOW    = 00000100            IO$V_NOFORMAT  = 00000008            

EMB$W_TS_ENTRY   00000004            IO$M_DATACHECK = 00004000            IO$V_NOW       = 00000006            

EMB$W_TS_ERRSEQ  0000000E            IO$M_DELETE    = 00000100            IO$V_NOWAIT    = 00000007            

ENBXIT           00000458 R     04   IO$M_DMOUNT    = 00000400            IO$V_PACKED    = 00000007            

ERL$DEVICERR     ********   X   04   IO$M_DSABLMBX  = 00000400            IO$V_PURGE     = 0000000B            

ERL$DEVICTMO     ********   X   04   IO$M_ENABLMBX  = 00000080            IO$V_READATTN  = 00000007            

ERROR            00000471 R     04   IO$M_FCODE     = 0000003F            IO$V_REVERSE   = 00000006            

EXE$IOFORK       ********   X   04   IO$M_HANGUP    = 00000200            IO$V_SHUTDOWN  = 00000007            

EXE$ONEPARM      ********   X   04   IO$M_INHERLOG  = 00000800            IO$V_STARTUP   = 00000006            

EXE$PWRTIMCHK    ********   X   04   IO$M_INHEXTGAP = 00001000            IO$V_SYNCH     = 00000009            

EXE$SENSEMODE    ********   X   04   IO$M_INHRETRY  = 00008000            IO$V_TIMED     = 00000007            

EXE$SETCHAR      ********   X   04   IO$M_INHSEEK   = 00001000            IO$V_TRMNOECHO = 0000000C            

EXE$ZEROPARM     ********   X   04   IO$M_INTERRUPT = 00000040            IO$V_WRTATTN   = 00000008            

EXFNC            0000040E R     04   IO$M_INTSKIP   = 00000100            IO$_ACCESS     = 00000032            

FATALERR         000002E1 R     04   IO$M_MOUNT     = 00000200            IO$_ACPCONTROL = 00000038            

FDISPATCH        0000013A R     04   IO$M_NOECHO    = 00000040            IO$_CREATE     = 00000033            

FEX              00000393 R     04   IO$M_NOFILTR   = 00000200            IO$_DEACCESS   = 00000034            

FTAB             00000042 R     04   IO$M_NOFORMAT  = 00000100            IO$_DELETE     = 00000035            

FUNCXT           00000362 R     04   IO$M_NOW       = 00000040            IO$_DIAGNOSE   = 0000001D            

F_DRVCLR       = 00000008            IO$M_NOWAIT    = 00000080            IO$_DRVCLR     = 00000004            

F_NOP          = 00000000            IO$M_PACKED    = 00000080            IO$_ERASETAPE  = 00000006            

F_OFFSET       = 0000000C            IO$M_PURGE     = 00000800            IO$_LOGICAL    = 0000002F            

F_PACKACK      = 00000012            IO$M_READATTN  = 00000080            IO$_MODIFY     = 00000036            

F_READDATA     = 00000038            IO$M_REVERSE   = 00000040            IO$_MOUNT      = 00000039            

F_READHEAD     = 0000003A            IO$M_SHUTDOWN  = 00000080            IO$_NOP        = 00000000            

F_READPRESET   = 00000010            IO$M_STARTUP   = 00000040            IO$_OFFSET     = 00000006            

F_RECAL        = 00000006            IO$M_SYNCH     = 00000200            IO$_PACKACK    = 00000008            

F_RELEASE      = 0000000A            IO$M_TIMED     = 00000080            IO$_PHYSICAL   = 0000001F            

F_RETCENTER    = 0000000E            IO$M_TRMNOECHO = 00001000            IO$_READHEAD   = 0000000E            

F_SEARCH       = 00000018            IO$M_WRTATTN   = 00000100            IO$_READLBLK   = 00000021            

F_SEARCHA      = 00000018            IO$S_FCODE     = 00000006            IO$_READPBLK   = 0000000C            

F_SEEK         = 00000004            IO$V_ABORT     = 00000008            IO$_READPRESET = 00000019            

F_UNLOAD       = 00000002            IO$V_ACCESS    = 00000006            IO$_READPROMPT = 00000037            

F_WRITECHECK   = 00000028            IO$V_ATTNAST   = 00000008            IO$_READTRACKD = 00000010            

F_WRITECHECKH  = 0000002A            IO$V_BINARY    = 00000006            IO$_READVBLK   = 00000031            

F_WRITEDATA    = 00000030            IO$V_CANCTRLO  = 00000006            IO$_RECAL      = 00000003            

F_WRITEHEAD    = 00000032            IO$V_COMMOD    = 00000006            IO$_RELEASE    = 00000005            

GBL...         = 00000000            IO$V_CREATE    = 00000007            IO$_RETCENTER  = 00000007            

IDB$B_TYPE       0000000A            IO$V_CTRLCAST  = 00000008            IO$_REWIND     = 00000024            

IDB$B_UNITS      0000000B            IO$V_CTRLYAST  = 00000007            IO$_REWINDOFF  = 00000022            

IDB$C_LENGTH     00000030            IO$V_CVTLOW    = 00000008            IO$_SEARCH     = 00000009            

IDB$K_LENGTH     00000030            IO$V_DATACHECK = 0000000E            IO$_SEEK       = 00000002            

IDB$L_ADP        0000000C            IO$V_DELETE    = 00000008            IO$_SENSECHAR  = 0000001B            

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  30

SYMBOL TABLE                                                                                                                     (2)



IO$_SENSEMODE  = 00000027            IRP$M_PAGIO    = 00000004            MBA$M_SR_DLT   = 00000800            

IO$_SETCHAR    = 0000001A            IRP$M_PHYSIO   = 00000100            MBA$M_SR_DTABT = 00001000            

IO$_SETMODE    = 00000023            IRP$M_PRIVIO   = 00000200            MBA$M_SR_DTBUSY= 80000000            

IO$_SKIPFILE   = 00000025            IRP$M_SWAPIO   = 00000040            MBA$M_SR_DTCOMP= 00002000            

IO$_SKIPRECORD = 00000026            IRP$M_VIRTUAL  = 00000010            MBA$M_SR_ERCONF= 00000008            

IO$_SPACEFILE  = 00000002            IRP$Q_NT_PRVMSK  0000003C            MBA$M_SR_INVMAP= 00000010            

IO$_SPACERECORD= 00000009            IRP$S_FCODE    = 00000006            MBA$M_SR_ISTO  = 00000002            

IO$_STARTSPNDL = 00000019            IRP$S_FMOD     = 0000000A            MBA$M_SR_MAPPE = 00000020            

IO$_UNLOAD     = 00000001            IRP$S_MODE     = 00000002            MBA$M_SR_MBEXC = 00000080            

IO$_VIRTUAL    = 0000003F            IRP$V_BUFIO    = 00000000            MBA$M_SR_MCPE  = 00020000            

IO$_WRITECHECK = 0000000A            IRP$V_CHAINED  = 00000005            MBA$M_SR_MDPE  = 00000040            

IO$_WRITECHECKH= 00000018            IRP$V_COMPLX   = 00000003            MBA$M_SR_MXF   = 00000100            

IO$_WRITEHEAD  = 0000000D            IRP$V_DIAGBUF  = 00000007            MBA$M_SR_NED   = 00040000            

IO$_WRITELBLK  = 00000020            IRP$V_FCODE    = 00000000            MBA$M_SR_NRCONF= 40000000            

IO$_WRITEMARK  = 0000001C            IRP$V_FMOD     = 00000006            MBA$M_SR_PGE   = 00080000            

IO$_WRITEOF    = 00000028            IRP$V_FUNC     = 00000001            MBA$M_SR_RDS   = 00000004            

IO$_WRITEPBLK  = 0000000B            IRP$V_MBXIO    = 0000000A            MBA$M_SR_RDTO  = 00000001            

IO$_WRITETRACKD= 0000000F            IRP$V_MODE     = 00000000            MBA$M_SR_WCKLWR= 00000200            

IO$_WRITEVBLK  = 00000030            IRP$V_PAGIO    = 00000002            MBA$M_SR_WCKUPR= 00000400            

IOC$APPLYECC     ********   X   04   IRP$V_PHYSIO   = 00000008            MBA$S_CSR_ADCOD= 00000008            

IOC$DIAGBUFILL   ********   X   04   IRP$V_PRIVIO   = 00000009            MBA$S_ERB_UNIT = 00000003            

IOC$LOADMBAMAP   ********   X   04   IRP$V_SWAPIO   = 00000006            MBA$V_CR_ABORT = 00000001            

IOC$RELCHAN      ********   X   04   IRP$V_VIRTUAL  = 00000004            MBA$V_CR_IE    = 00000002            

IOC$REQCOM       ********   X   04   IRP$W_ABCNT      0000003C            MBA$V_CR_INIT  = 00000000            

IOC$REQPCHANL    ********   X   04   IRP$W_BCNT       00000032            MBA$V_CSR_ADCOD= 00000000            

IOC$RETURN       ********   X   04   IRP$W_BOFF       00000030            MBA$V_CSR_MT   = 0000001B            

IOC$UPDATRANSP   ********   X   04   IRP$W_CHAN       00000028            MBA$V_CSR_OT   = 00000015            

IOC$WFIKPCH      ********   X   04   IRP$W_FUNC       00000020            MBA$V_CSR_PD   = 00000017            

IRP$B_CARCON     00000038            IRP$W_OBCNT      0000003E            MBA$V_CSR_PE   = 0000001F            

IRP$B_EFN        00000022            IRP$W_SIZE       00000008            MBA$V_CSR_PU   = 00000016            

IRP$B_PRI        00000023            IRP$W_STS        0000002A            MBA$V_CSR_URD  = 0000001D            

IRP$B_RMOD       0000000B            IRP$W_TT_PRMPT   0000003C            MBA$V_CSR_WS   = 0000001E            

IRP$B_TYPE       0000000A            LDCYL            00000408 R     04   MBA$V_CSR_XMFLT= 0000001A            

IRP$C_LENGTH     0000004C            MASKH          = 00000008            MBA$V_ERB_UNIT = 00000007            

IRP$K_LENGTH     0000004C            MASKL          = 04000000            MBA$V_SR_ATTN  = 00000010            

IRP$L_AST        00000010            MBA$L_AS         00000410            MBA$V_SR_CRD   = 0000001D            

IRP$L_ASTPRM     00000014            MBA$L_BCR        00000010            MBA$V_SR_DLT   = 0000000B            

IRP$L_DIAGBUF    00000044            MBA$L_CR         00000004            MBA$V_SR_DTABT = 0000000C            

IRP$L_IOQBL      00000004            MBA$L_CSR        00000000            MBA$V_SR_DTBUSY= 0000001F            

IRP$L_IOQFL      00000000            MBA$L_ERB        00000400            MBA$V_SR_DTCOMP= 0000000D            

IRP$L_IOSB       00000024            MBA$L_MAP        00000800            MBA$V_SR_ERCONF= 00000003            

IRP$L_IOST1      00000034            MBA$L_SR         00000008            MBA$V_SR_INVMAP= 00000004            

IRP$L_IOST2      00000038            MBA$L_VAR        0000000C            MBA$V_SR_ISTO  = 00000001            

IRP$L_MEDIA      00000034            MBA$M_CR_ABORT = 00000002            MBA$V_SR_MAPPE = 00000005            

IRP$L_PID        0000000C            MBA$M_CR_IE    = 00000004            MBA$V_SR_MBEXC = 00000007            

IRP$L_SEGVBN     00000040            MBA$M_CR_INIT  = 00000001            MBA$V_SR_MCPE  = 00000011            

IRP$L_SEQNUM     00000048            MBA$M_CSR_MT   = 08000000            MBA$V_SR_MDPE  = 00000006            

IRP$L_SVAPTE     0000002C            MBA$M_CSR_OT   = 00200000            MBA$V_SR_MXF   = 00000008            

IRP$L_TT_TERM    00000038            MBA$M_CSR_PD   = 00800000            MBA$V_SR_NED   = 00000012            

IRP$L_UCB        0000001C            MBA$M_CSR_PE   = 80000000            MBA$V_SR_NRCONF= 0000001E            

IRP$L_WIND       00000018            MBA$M_CSR_PU   = 00400000            MBA$V_SR_PGE   = 00000013            

IRP$M_BUFIO    = 00000001            MBA$M_CSR_URD  = 20000000            MBA$V_SR_RDS   = 00000002            

IRP$M_CHAINED  = 00000020            MBA$M_CSR_WS   = 40000000            MBA$V_SR_RDTO  = 00000000            

IRP$M_COMPLX   = 00000008            MBA$M_CSR_XMFLT= 04000000            MBA$V_SR_WCKLWR= 00000009            

IRP$M_DIAGBUF  = 00000080            MBA$M_ERROR    = 000E1FFF            MBA$V_SR_WCKUPR= 0000000A            

IRP$M_FUNC     = 00000002            MBA$M_SR_ATTN  = 00010000            NOP              00000172 R     04   

IRP$M_MBXIO    = 00000400            MBA$M_SR_CRD   = 20000000            NORMAL           000001E3 R     04   

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  31

SYMBOL TABLE                                                                                                                     (2)



OFF              0000024D R     04   RP_EC1           00000038            SEARCH           00000172 R     04   

OFFSET           00000172 R     04   RP_EC1_S_POS   = 0000000D            SEARCHA          000003E0 R     04   

OFFSETERR        000002D8 R     04   RP_EC1_V_POS   = 00000000            SEEK             00000172 R     04   

OFFSIZ         = 00000008            RP_EC2           0000003C            SS$_CTRLERR      ********   X   04   

OFFTAB           00000054 R     04   RP_EC2_S_PAT   = 0000000B            SS$_DATACHECK    ********   X   04   

PACKACK          00000172 R     04   RP_EC2_V_PAT   = 00000000            SS$_DRVERR       ********   X   04   

POSIT            00000402 R     04   RP_ER1           00000008            SS$_FORMAT       ********   X   04   

PR$_IPL          ********   X   04   RP_ER1_M_AOE   = 00000200            SS$_IVADDR       ********   X   04   

READDATA         00000183 R     04   RP_ER1_M_DCK   = 00008000            SS$_MEDOFL       ********   X   04   

READHEAD         00000183 R     04   RP_ER1_M_DTE   = 00001000            SS$_NONEXDRV     ********   X   04   

READPRESET       00000172 R     04   RP_ER1_M_ECH   = 00000040            SS$_NORMAL       ********   X   04   

RECAL            00000172 R     04   RP_ER1_M_FER   = 00000010            SS$_OPINCOMPL    ********   X   04   

RELEASE          00000172 R     04   RP_ER1_M_HCE   = 00000080            SS$_PARITY       ********   X   04   

RESETXFR         00000525 R     04   RP_ER1_M_HCRC  = 00000100            SS$_TIMEOUT      ********   X   04   

RETCENTER        00000172 R     04   RP_ER1_M_IAE   = 00000400            SS$_UNSAFE       ********   X   04   

RETREG           0000045B R     04   RP_ER1_M_ILF   = 00000001            SS$_VOLINV       ********   X   04   

RETRY            00000205 R     04   RP_ER1_M_ILR   = 00000002            SS$_WASECC       ********   X   04   

RETRYERR         000002CA R     04   RP_ER1_M_OPI   = 00002000            SS$_WRITLCK      ********   X   04   

RP_AS            00000010            RP_ER1_M_PAR   = 00000008            TRANNOCH         00000195 R     04   

RP_CC            0000002C            RP_ER1_M_RMR   = 00000004            TRANRQCH         0000018F R     04   

RP_CS1           00000000            RP_ER1_M_UNS   = 00004000            TRANXT           000001E9 R     04   

RP_CS1_M_GO    = 00000001            RP_ER1_M_WCF   = 00000020            UCB$B_AMOD       00000053            

RP_CS1_S_FCODE = 00000005            RP_ER1_M_WLE   = 00000800            UCB$B_CEX        00000077            

RP_CS1_V_FCODE = 00000001            RP_ER1_V_AOE   = 00000009            UCB$B_CM1        0000004A            

RP_CS1_V_GO    = 00000000            RP_ER1_V_DCK   = 0000000F            UCB$B_CM2        0000004B            

RP_DA            00000014            RP_ER1_V_DTE   = 0000000C            UCB$B_DEVCLASS   00000038            

RP_DA_S_SA     = 00000005            RP_ER1_V_ECH   = 00000006            UCB$B_DEVTYPE    00000039            

RP_DA_S_TA     = 00000005            RP_ER1_V_FER   = 00000004            UCB$B_DIPL       00000052            

RP_DA_V_SA     = 00000000            RP_ER1_V_HCE   = 00000007            UCB$B_DX_SCTCNT  000000A6            

RP_DA_V_TA     = 00000008            RP_ER1_V_HCRC  = 00000008            UCB$B_ERTCNT     00000070            

RP_DC            00000028            RP_ER1_V_IAE   = 0000000A            UCB$B_ERTMAX     00000071            

RP_DS            00000004            RP_ER1_V_ILF   = 00000000            UCB$B_ESCAPE     0000004B            

RP_DS_M_ATA    = 00008000            RP_ER1_V_ILR   = 00000001            UCB$B_FEX        00000076            

RP_DS_M_DPR    = 00000100            RP_ER1_V_OPI   = 0000000D            UCB$B_FIPL       0000000B            

RP_DS_M_DRY    = 00000080            RP_ER1_V_PAR   = 00000003            UCB$B_LOCSRV     0000003C            

RP_DS_M_ERR    = 00004000            RP_ER1_V_RMR   = 00000002            UCB$B_OFFNDX     00000094            

RP_DS_M_LST    = 00000400            RP_ER1_V_UNS   = 0000000E            UCB$B_OFFRTC     00000095            

RP_DS_M_MOL    = 00001000            RP_ER1_V_WCF   = 00000005            UCB$B_REMSRV     0000003D            

RP_DS_M_PGM    = 00000200            RP_ER1_V_WLE   = 0000000B            UCB$B_SECTORS    0000003C            

RP_DS_M_PIP    = 00002000            RP_ER2           00000020            UCB$B_SLAVE      00000074            

RP_DS_M_VV     = 00000040            RP_ER3           00000034            UCB$B_SPR        00000075            

RP_DS_M_WRL    = 00000800            RP_ER3_M_SKI   = 00004000            UCB$B_STATE      00000052            

RP_DS_V_ATA    = 0000000F            RP_ER3_V_SKI   = 0000000E            UCB$B_TRACKS     0000003D            

RP_DS_V_DPR    = 00000008            RP_LA            0000001C            UCB$B_TYPE       0000000A            

RP_DS_V_DRY    = 00000007            RP_MR            0000000C            UCB$B_VERTSZ     0000003F            

RP_DS_V_ERR    = 0000000E            RP_OF            00000024            UCB$C_LENGTH     00000074            

RP_DS_V_LST    = 0000000A            RP_OF_M_DCK    = 00000100            UCB$C_LOGLNK   = 00000001            

RP_DS_V_MOL    = 0000000C            RP_OF_M_ECI    = 00000800            UCB$K_LENGTH     00000074            

RP_DS_V_PGM    = 00000009            RP_OF_M_FMT    = 00001000            UCB$L_AMB        00000054            

RP_DS_V_PIP    = 0000000D            RP_OF_M_HCI    = 00000400            UCB$L_ASTQBL     00000010            

RP_DS_V_VV     = 00000006            RP_OF_S_OFF    = 00000008            UCB$L_ASTQFL     0000000C            

RP_DS_V_WRL    = 0000000B            RP_OF_V_DCK    = 00000008            UCB$L_CPID       0000005C            

RP_DT            00000018            RP_OF_V_ECI    = 0000000B            UCB$L_CRB        00000020            

RP_DT_M_DRQ    = 00000800            RP_OF_V_FMT    = 0000000C            UCB$L_DB_SR      00000098            

RP_DT_S_DTN    = 00000009            RP_OF_V_HCI    = 0000000A            UCB$L_DDB        00000024            

RP_DT_V_DRQ    = 0000000B            RP_OF_V_OFF    = 00000000            UCB$L_DEVCHAR    00000034            

RP_DT_V_DTN    = 00000000            RP_SN            00000030            UCB$L_DEVDEPEND  0000003C            

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  32

SYMBOL TABLE                                                                                                                     (2)



UCB$L_DPC        00000080            UCB$S_LTYPE    = 00000002            UCB$W_SIZE       00000008            

UCB$L_DUETIM     0000005C            UCB$T_PARTNER    0000000C            UCB$W_SRCADDR    0000001A            

UCB$L_DX_BFPNT   0000009C            UCB$V_BACKP    = 00000005            UCB$W_STS        00000058            

UCB$L_DX_BUF     00000098            UCB$V_BSY      = 00000008            UCB$W_UNIT       00000048            

UCB$L_DX_RXDB    000000A0            UCB$V_CANCEL   = 00000003            UCB$W_VPROT      0000001A            

UCB$L_EMB        00000078            UCB$V_DEADMO   = 0000000A            UNLOAD           00000172 R     04   

UCB$L_FIRST      00000014            UCB$V_DELMBX   = 00000001            VEC$B_DATAPATH   00000013            

UCB$L_FPC        0000000C            UCB$V_DIAGBUF  = 00000001            VEC$B_NUMREG     00000012            

UCB$L_FQBL       00000004            UCB$V_DX_WRITE = 00000003            VEC$C_LENGTH     00000024            

UCB$L_FQFL       00000000            UCB$V_ECC      = 00000000            VEC$K_LENGTH     00000024            

UCB$L_FR3        00000010            UCB$V_ERLOGIP  = 00000002            VEC$L_ADP        00000014            

UCB$L_FR4        00000014            UCB$V_INT      = 00000001            VEC$L_IDB        00000008            

UCB$L_IOQBL      00000044            UCB$V_INTTYPE  = 00000007            VEC$L_INITIAL    0000000C            

UCB$L_IOQFL      00000040            UCB$V_JOB      = 00000000            VEC$L_START      0000001C            

UCB$L_IRP        0000004C            UCB$V_LNKPRI   = 00000006            VEC$L_UNITDISC   00000020            

UCB$L_LINK       0000002C            UCB$V_LTYPE    = 00000000            VEC$L_UNITINIT   00000018            

UCB$L_LOGADR     00000064            UCB$V_MOUNTING = 00000009            VEC$M_MAPLOCK  = 00008000            

UCB$L_MAXBLOCK   00000084            UCB$V_MSGACK   = 00000004            VEC$M_PATHLOCK = 00000080            

UCB$L_MEDIA      0000008C            UCB$V_MSGFLO   = 00000003            VEC$Q_DISPATCH   00000000            

UCB$L_NT_DATSSB  00000074            UCB$V_NOCNVRT  = 00000002            VEC$S_DATAPATH = 00000007            

UCB$L_NT_INTSSB  00000078            UCB$V_NT_BFROVF= 00000002            VEC$S_MAPREG   = 0000000F            

UCB$L_OPCNT      00000060            UCB$V_NT_BREAK = 00000005            VEC$V_DATAPATH = 00000000            

UCB$L_OWNUIC     0000001C            UCB$V_NT_NAME  = 00000004            VEC$V_MAPLOCK  = 0000000F            

UCB$L_PID        00000028            UCB$V_ONLINE   = 00000004            VEC$V_MAPREG   = 00000000            

UCB$L_RQBL       00000004            UCB$V_POWER    = 00000005            VEC$V_PATHLOCK = 00000007            

UCB$L_RQFL       00000000            UCB$V_PRMMBX   = 00000000            VEC$W_MAPREG     00000010            

UCB$L_SVAPTE     00000068            UCB$V_SEGFLO   = 00000002            WRITECHECK       00000178 R     04   

UCB$L_SVPN       00000064            UCB$V_TIM      = 00000000            WRITECHECKH      00000178 R     04   

UCB$L_TTCHAR     0000003C            UCB$V_TIMOUT   = 00000006            WRITEDATA        0000017E R     04   

UCB$L_VCB        00000030            UCB$V_TT_NOTIF = 00000002            WRITEHEAD        0000017E R     04   

UCB$M_BACKP    = 00000020            UCB$V_TT_TIMO  = 00000001            XFER             000003F4 R     04   

UCB$M_BSY      = 00000100            UCB$V_UNLOAD   = 0000000C            

UCB$M_CANCEL   = 00000008            UCB$V_VALID    = 0000000B            

UCB$M_DEADMO   = 00000400            UCB$W_BCNT       0000006E            

UCB$M_DELMBX   = 00000002            UCB$W_BCR        00000096            

UCB$M_DIAGBUF  = 00000002            UCB$W_BOFF       0000006C            

UCB$M_DX_WRITE = 00000008            UCB$W_BUFQUO     00000018            

UCB$M_ECC      = 00000001            UCB$W_BYTESTOGO  0000003E            

UCB$M_ERLOGIP  = 00000004            UCB$W_CHARGE     0000004A            

UCB$M_INT      = 00000002            UCB$W_CYLINDERS  0000003E            

UCB$M_INTTYPE  = 00000080            UCB$W_DA         0000008C            

UCB$M_JOB      = 00000001            UCB$W_DC         0000008E            

UCB$M_MOUNTING = 00000200            UCB$W_DEVBUFSIZ  0000003A            

UCB$M_NOCNVRT  = 00000004            UCB$W_DEVSTS     0000005A            

UCB$M_NT_BFROVF= 00000004            UCB$W_DIRSEQ     00000088            

UCB$M_NT_BREAK = 00000020            UCB$W_DSTADDR    00000018            

UCB$M_NT_NAME  = 00000010            UCB$W_DX_BCR     000000A4            

UCB$M_ONLINE   = 00000010            UCB$W_EC1        00000090            

UCB$M_POWER    = 00000020            UCB$W_EC2        00000092            

UCB$M_PRMMBX   = 00000001            UCB$W_ERRCNT     00000072            

UCB$M_TIM      = 00000001            UCB$W_FUNC       0000007E            

UCB$M_TIMOUT   = 00000040            UCB$W_MB_SEED    FFFFFFFC            

UCB$M_TT_NOTIF = 00000004            UCB$W_MSGCNT     00000016            

UCB$M_TT_TIMO  = 00000002            UCB$W_MSGMAX     00000014            

UCB$M_UNLOAD   = 00001000            UCB$W_NT_CHAN    0000007C            

UCB$M_VALID    = 00000800            UCB$W_OFFSET     0000008A            

UCB$S_LNKPRI   = 00000002            UCB$W_REFC       00000050            

DBDRIVER        - RP04/05/06 DISK DRIVER                         21-AUG-1978 20:48:46   VAX-11 MACRO X0.3-11               Page  33

PROGRAM SECTION SYNOPSIS                                                                                                         (2)







PROGRAM SECTION SYNOPSIS



.  ABS  .        00000000      00     NOPIC   USR   CON   ABS   LCL NOSHR NOEXE NORD  NOWRT BYTE  

. BLANK .        00000000      01     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

$ABS$            FFFFFFFE      02     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  

$$$105_PROLOGUE  0000005D      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

$$$115_DRIVER    00000649      04     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT LONG  





THERE WERE NO ERRORS OR WARNINGS.

4844. BYTES LEFT IN FREE MEMORY POOL.

48. BYTES OF RECLAIMED MEMORY.

OBJ$:DBDRIVER,LIS$:DBDRIVER/-SP=EXECML$/ML,SRC$:DBDRIVER

23 MLB DIR RDS - 1102 GETS TO DEFINE 39 MACROS. 102 INTER. FILE WRITES. 

