DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)     255  RM03 FUNCTION DECISION TABLE

   (1)     326  START I/O OPERATION

   (1)     706  RM03 HARDWARE FUNCTION EXECUTION

   (1)    1002  RM03 REGISTER DUMP ROUTINE

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page   1

01                                                                                                                               (1)



                                     0000     1 	.TITLE	DRDRIVER - RM03 DISK DRIVER

                                     0000     2 	.IDENT	/01/

                                     0000     3  

                                     0000     4 ;

                                     0000     5 ; COPYRIGHT (C) 1977

                                     0000     6 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

                                     0000     7 ;

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

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

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

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

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

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

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

                                     0000    15 ;

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

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

                                     0000    18 ; EQUIPMENT CORPORATION.

                                     0000    19 ;

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

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

                                     0000    22 ;

                                     0000    23 ; D. N. CUTLER, LEN KAWELL 23-NOV-77

                                     0000    24 ;

                                     0000    25 ; RM03 DISK DRIVER

                                     0000    26 ;

                                     0000    27 ; MACRO LIBRARY CALLS

                                     0000    28 ;

                                     0000    29  

                                     0000    30 	$CRBDEF				;DEFINE CRB OFFSETS

                                     0000    31 	$EMBDEF				;DEFINE EMB OFFSETS

                                     0000    32 	$IODEF				;DEFINE I/O FUNCTION CODES

                                     0000    33 	$IRPDEF				;DEFINE IRP OFFSETS

                                     0000    34 	$MBADEF				;DEFINE MBA REGISTER OFFSETS

                                     0000    35 	$PRDEF				;DEFINE PROCESSOR REGISTERS

                                     0000    36 	$UCBDEF				;DEFINE UCB OFFSETS

                                     0000    37 	$VECDEF				;DEFINE INTERRUPT DISPATCH VECTOR OFFSETS

                                     0000    38  

                                     0000    39 ;

                                     0000    40 ; LOCAL MACROS

                                     0000    41 ;

                                     0000    42 ; EXECUTE FUNCTION AND BRANCH ON RETRIABLE ERROR CONDITION

                                     0000    43 ;

                                     0000    44  

                                     0000    45 	.MACRO	EXFUNC BDST,FCODE

                                     0000    46 		.IF NB	FCODE

                                     0000    47 		MOVZBL	#CD'FCODE,R0

                                     0000    48 		.ENDC

                                     0000    49 		BSBW	FEX

                                     0000    50 		.BYTE	BDST-.-1

                                     0000    51 	.ENDM

                                     0000    52  

                                     0000    53 ;

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

                                     0000    55 ;

                                     0000    56  

                                     0000    57 	.MACRO	GENF FCODE

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page   2

01                                                                                                                               (1)



                                     0000    58 		CD'FCODE=.-FTAB

                                     0000    59 		.BYTE	FCODE!RM_CS1_M_GO

                                     0000    60 	.ENDM

                                     0000    61  

                                     0000    62 ;

                                     0000    63 ; LOCAL SYMBOLS

                                     0000    64 ;

                                     0000    65 ; RM03 MASSBUS REGISTER OFFSETS

                                     0000    66 ;

                                     0000    67  

                                     0000    68 	$DEFINI	RM

                                     0000    69  

                                     0000    70 $DEF	RM_CS1		.BLKL	1	;DRIVE CONTROL REGISTER

                                     0004    71 	_VIELD	RM_CS1,0,<-		; DRIVE CONTROL REGISTER BIT DEFINITIONS

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

                                     0004    73 		<FCODE,5>-		; FUNCTION CODE

                                     0004    74 	>				;

                                     0004    75 $DEF	RM_DS		.BLKL	1	;DRIVE STATUS REGISTER

                                     0008    76 	_VIELD	RM_DS,0,<-		; DRIVE STATUS REGISTER BIT DEFINITIONS

                                     0008    77 		<OM,,M>,-		; OFFSET MODE

                                     0008    78 		<,5>,-			; RESERVED BITS

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

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

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

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

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

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

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

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

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

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

                                     0008    89 	>				;

                                     0008    90 $DEF	RM_ER1		.BLKL	1	;ERROR REGISTER 1

                                     000C    91 	_VIELD	RM_ER1,0,<-		; ERROR REGISTER 1 BIT DEFINITIONS

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                                     000C   108 	>				;

                                     000C   109 $DEF	RM_MR		.BLKL	1	;MAINTENANCE REGISTER

                                     0010   110 $DEF	RM_AS		.BLKL	1	;ATTENTION SUMMARY REGISTER

                                     0014   111 $DEF	RM_DA		.BLKL	1	;DESIRED SECTOR/TRACK ADDRESS REGISTER

                                     0018   112 	_VIELD	RM_DA,0,<-		; DESIRED ADDRESS FIELD DEFINITIONS

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

                                     0018   114 		<,3>,-			; RESERVED BITS

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page   3

01                                                                                                                               (1)



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

                                     0018   116 	>				;

                                     0018   117 $DEF	RM_DT		.BLKL	1	;DRIVE TYPE REGISTER

                                     001C   118 	_VIELD	RM_DT,0,<-		; DRIVE TYPE REGISTER FIELD DEFINITIONS

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

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

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

                                     001C   122 	>				;

                                     001C   123 $DEF	RM_LA		.BLKL	1	;LOOKAHEAD REGISTER

                                     0020   124 $DEF	RM_SN		.BLKL	1	;SERIAL NUMBER REGISTER

                                     0024   125 $DEF	RM_OF		.BLKL	1	;OFFSET REGISTER

                                     0028   126 	_VIELD	RM_OF,0,<-		; OFFSET REGISTER BIT DEFINITIONS

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

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

                                     0028   129 		<OM,,M>,-		; OFFSET MODE (SOFTWARE)

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

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

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

                                     0028   133 	>				;

                                     0028   134 $DEF	RM_DC		.BLKL	1	;DESIRED CYLINDER ADDRESS

                                     002C   135 $DEF	RM_UNUSED	.BLKL	1	;UNUSED

                                     0030   136 $DEF	RM_MR2		.BLKL	1	;MAINTENANCE REGISTER 2

                                     0034   137 $DEF	RM_ER2		.BLKL	1	;ERROR REGISTER 2

                                     0038   138 	_VIELD	RM_ER2,3,<-		; ERROR REGISTER 2 BIT DEFINITIONS

                                     0038   139 		<DPE,,M>,-		; DATA PARITY ERROR

                                     0038   140 		<,3>,-			; RESERVED BITS

                                     0038   141 		<DVC,,M>,-		; DEVICE CHECK ERROR

                                     0038   142 		<,2>,-			; RESERVED BITS

                                     0038   143 		<LBC,,M>,-		; LOSS OF BIT CLOCK ERROR

                                     0038   144 		<LSC,,M>,-		; LOSS OF SYSTEM CLOCK ERROR

                                     0038   145 		<IVC,,M>,-		; INVALID COMMAND ERROR

                                     0038   146 		<OPE,,M>,-		; OPERATOR PLUG ERROR

                                     0038   147 		<SKI,,M>,-		; SEEK INCOMPLETE ERROR

                                     0038   148 		<BSE,,M>-		; BAD SECTOR ERROR

                                     0038   149 	>				;

                                     0038   150 $DEF	RM_EC1		.BLKL	1	;ECC POSITION REGISTER

                                     003C   151 	_VIELD	RM_EC1,0,<<POS,13>>	; ECC POSITION FIELD

                                     003C   152 $DEF	RM_EC2		.BLKL	1	;ECC PATTERN REGISTER

                                     0040   153 	_VIELD	RM_EC2,0,<<PAT,11>>	; ECC PATTERN FIELD

                                     0040   154  

                                     0040   155 	$DEFEND	RM

                                     0000   156  

                                     0000   157 ;

                                     0000   158 ; DEFINE DEVICE DEPENDENT UNIT CONTROL BLOCK OFFSETS

                                     0000   159 ;

                                     0000   160  

                                     0000   161 	$DEFINI	UCB

                                     0000   162  

                           00000094  0000   163 .=UCB$W_BCR+2				;

                                     0094   164  

                                     0094   165 $DEF	UCB$L_DR_SR	.BLKL	1	;SAVED MBA STATUS REGISTER

                                     0098   166 $DEF	UCB$W_DR_ER2	.BLKW	1	;SAVED RM03 ERROR REGISTER 2

                           0000009C  009A   167 			.BLKW	1	;SPARE UNUSED WORD

                                     009C   168  

                                     009C   169 	$DEFEND	UCB

                                     0000   170  

                                     0000   171 ;

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page   4

01                                                                                                                               (1)



                                     0000   172 ; HARDWARE FUNCTION CODES

                                     0000   173 ;

                                     0000   174  

                           00000000  0000   175 F_NOP=0*2				;NO OPERATION

                           00000004  0000   176 F_SEEK=2*2				;SEEK CYLINDER

                           00000006  0000   177 F_RECAL=3*2				;RECALIBRATE

                           00000008  0000   178 F_DRVCLR=4*2				;DRIVE CLEAR

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

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

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

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

                           00000012  0000   183 F_PACKACK=9*2				;PACK ACKNOWLEDGE

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

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

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

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

                           00000030  0000   188 F_WRITEDATA=24*2			;WRITE DATA

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

                           00000038  0000   190 F_READDATA=28*2				;READ DATA

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

                                     0000   192  

                                     0000   193 ;

                                     0000   194 ; LOCAL DATA

                                     0000   195 ;

                                     0000   196 ; DRIVER DISPATCH TABLE

                                     0000   197 ;

                                     0000   198  

                                 00000000   199 	.PSECT	WIONONPAGED

                                     0000   200 DR$DDT::				;ADDRESS OF DRIVER DISPATCH TABLE

                           0000009A' 0000   201 	.LONG	STARTIO			;START I/O OPERATION

                           000004BA' 0004   202 	.LONG	UNSOLNT			;UNSOLICITED INTERRUPT

                           00000036' 0008   203 	.LONG	FUNCTABLE		;FUNCTION DECISION TABLE

                           00000000  000C   204 	.LONG	0			;CANCEL I/O ENTRY POINT

                           00000476' 0010   205 	.LONG	REGDUMP			;REGISTER DUMP ROUTINE

                               0080' 0014   206 	.WORD	<RM_EC2+4+MBA$L_BCR+4+8>+<<3+5+1>*4> ;SIZE OF DIAGNOSTIC BUFFER

                               00B0' 0016   207 	.WORD	<RM_EC2+4+MBA$L_BCR+4+8>+<1*4>+<EMB$L_DV_REGSAV> ;SIZE OF ERROR BUFFER

                           00000000  0018   208 	.LONG	0			; NO UNIT INTIALIZATION

                                     001C   209  

                                     001C   210 ;

                                     001C   211 ; DATA CHECK FUNCTION TRANSLATION TABLE

                                     001C   212 ;

                                     001C   213  

                                     001C   214 CHECKTAB:				;

                                 0A' 001C   215 	.BYTE	CDF_WRITECHECK		;WRITE DATA

                                 0A' 001D   216 	.BYTE	CDF_WRITECHECK		;READ DATA

                                 0F' 001E   217 	.BYTE	CDF_WRITECHECKH		;WRITE HEADER AND DATA

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

                                     0020   219  

                                     0020   220 ;

                                     0020   221 ; HARDWARE I/O FUNCTION CODE TABLE

                                     0020   222 ;

                                     0020   223  

                                     0020   224 FTAB:					;

                                     0020   225 	GENF	F_NOP			;NO OPERATION

                                     0021   226 	GENF	F_NOP			;(NO UNLOAD FUNCTION)

                                     0022   227 	GENF	F_SEEK			;SEEK CYLINDER

                                     0023   228 	GENF	F_RECAL			;RECALIBRATE

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page   5

01                                                                                                                               (1)



                                     0024   229 	GENF	F_DRVCLR		;DRIVE CLEAR

                                     0025   230 	GENF	F_RELEASE		;RELEASE PORT

                                     0026   231 	GENF	F_OFFSET		;OFFSET HEADS

                                     0027   232 	GENF	F_RETCENTER		;RETURN HEADS TO CENTERLINE

                                     0028   233 	GENF	F_PACKACK		;PACK ACKNOWLEDGE

                                     0029   234 	GENF	F_SEARCH		;SEARCH FOR SECTOR

                                     002A   235 	GENF	F_WRITECHECK		;WRITE CHECK

                                     002B   236 	GENF	F_WRITEDATA		;WRITE DATA

                                     002C   237 	GENF	F_READDATA		;READ DATA

                                     002D   238 	GENF	F_WRITEHEAD		;WRITE HEADER AND DATA

                                     002E   239 	GENF	F_READHEAD		;READ HEADER AND DATA

                                     002F   240 	GENF	F_WRITECHECKH		;WRITE CHECK HEADER AND DATA

                                     0030   241 	GENF	F_READPRESET		;READ IN PRESET

                                     0031   242 	GENF	F_SEARCHA		;SEARCH AHEAD OF SECTOR

                                     0032   243  

                                     0032   244 ;

                                     0032   245 ; OFFSET TABLE FOR RM03

                                     0032   246 ;

                                     0032   247  

                                     0032   248 OFFTAB:					;

                                 00  0032   249 	.BYTE	0			;RETURN TO CENTERLINE

                                 01  0033   250 	.BYTE	^X01			;+ OFFSET (BIT 0 = OFFSET FLAG)

                                 81  0034   251 	.BYTE	^X81			;- OFFSET (BIT 0 = OFFSET FLAG)

                                 00  0035   252 	.BYTE	0			;RETURN TO CENTERLINE

                           00000004  0036   253 OFFSIZ=.-OFFTAB				;SIZE OF OFFSET TABLE

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page   6

01              RM03 FUNCTION DECISION TABLE                                                                                     (1)



                                     0036   255 	.SBTTL	RM03 FUNCTION DECISION TABLE

                                     0036   256 ;+

                                     0036   257 ; RM03 FUNCTION DECISION TABLE

                                     0036   258 ;-

                                     0036   259  

                                     0036   260 FUNCTABLE:				;FUNCTION DECISION TABLE

                                     0036   261 	FUNCTAB	,-			;LEGAL FUNCTIONS

                                     0036   262 		<NOP,-			;NO OPERATION

                                     0036   263 		 SEEK,-			;SEEK CYLINDER

                                     0036   264 		 RECAL,-		;RECALIBRATE

                                     0036   265 		 DRVCLR,-		;DRIVE CLEAR

                                     0036   266 		 RELEASE,-		;RELEASE PORT

                                     0036   267 		 OFFSET,-		;OFFSET HEADS

                                     0036   268 		 RETCENTER,-		;RETURN HEADS TO CENTERLINE

                                     0036   269 		 PACKACK,-		;PACK ACKNOWLEDGE

                                     0036   270 		 SEARCH,-		;SEARCH FOR SECTOR

                                     0036   271 		 READPRESET,-		;READ IN PRESET

                                     0036   272 		 WRITECHECK,-		;WRITE CHECK

                                     0036   273 		 WRITEHEAD,-		;WRITE HEADER AND DATA

                                     0036   274 		 READHEAD,-		;READ HEADER AND DATA

                                     0036   275 		 WRITECHECKH,-		;WRITE CHECK HEADER AND DATA

                                     0036   276 		 READLBLK,-		;READ LOGICAL BLOCK

                                     0036   277 		 WRITELBLK,-		;WRITE LOGICAL BLOCK

                                     0036   278 		 READPBLK,-		;READ PHYSICAL BLOCK

                                     0036   279 		 WRITEPBLK,-		;WRITE PHYSICAL BLOCK

                                     0036   280 		 READVBLK,-		;READ VIRTUAL BLOCK

                                     0036   281 		 WRITEVBLK,-		;WRITE VIRTUAL BLOCK

                                     0036   282 		 ACCESS,-		;ACCESS FILE AND/OR FIND DIRECTORY ENTRY

                                     0036   283 		 ACPCONTROL,-		;ACP CONTROL FUNCTION

                                     0036   284 		 CREATE,-		;CREATE FILE AND/OR CREATE DIRECTORY ENTRY

                                     0036   285 		 DEACCESS,-		;DEACCESS FILE

                                     0036   286 		 DELETE,-		;DELETE FILE AND/OR DIRECTORY ENTRY

                                     0036   287 		 MODIFY>		;MODIFY FILE ATTRIBUTES

                                     003E   288 	FUNCTAB	,-			;BUFFERED I/O FUNCTIONS

                                     003E   289 		<ACCESS,-		;ACCESS FILE AND/OR FIND DIRECTORY ENTRY

                                     003E   290 		 ACPCONTROL,-		;ACP CONTROL FUNCTION

                                     003E   291 		 CREATE,-		;CREATE FILE AND/OR CREATE DIRECTORY ENTRY

                                     003E   292 		 DEACCESS,-		;DEACCESS FILE

                                     003E   293 		 DELETE,-		;DELETE FILE AND/OR DIRECTORY ENTRY

                                     003E   294 		 MODIFY>		;MODIFY FILE ATTRIBUTES

                                     0046   295 	FUNCTAB	ACP$READBLK,-		;READ FUNCTIONS

                                     0046   296 		<READHEAD,-		;READ HEADER

                                     0046   297 		 READLBLK,-		;READ LOGICAL BLOCK

                                     0046   298 		 READPBLK,-		;READ PHYSICAL BLOCK

                                     0046   299 		 READVBLK>		;READ VIRTUAL BLOCK

                                     0052   300 	FUNCTAB	ACP$WRITEBLK,-		;WRITE FUNCTIONS

                                     0052   301 		<WRITECHECK,-		;WRITE CHECK

                                     0052   302 		 WRITECHECKH,-		;WRITE CHECK HEADER AND DATA

                                     0052   303 		 WRITEHEAD,-		;WRITE HEADER

                                     0052   304 		 WRITELBLK,-		;WRITE LOGICAL BLOCK

                                     0052   305 		 WRITEPBLK,-		;WRITE PHYSICAL BLOCK

                                     0052   306 		 WRITEVBLK>		;WRITE VIRTUAL BLOCK

                                     005E   307 	FUNCTAB	ACP$ACCESS,<ACCESS,CREATE> ;ACCESS AND CREATE FILE OR DIRECTORY

                                     006A   308 	FUNCTAB	ACP$DEACCESS,<DEACCESS>	;DEACCESS FILE

                                     0076   309 	FUNCTAB	ACP$MODIFY,-		;

                                     0076   310 		<ACPCONTROL,-		;ACP CONTROL FUNCTION

                                     0076   311 		 DELETE,-		;DELETE FILE OR DIRECTORY ENTRY

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page   7

01              RM03 FUNCTION DECISION TABLE                                                                                     (1)



                                     0076   312 		 MODIFY>		;MODIFY FILE ATTRIBUTES

                                     0082   313 	FUNCTAB	EXE$ZEROPARM,-		;ZERO PARAMETER FUNCTIONS

                                     0082   314 		<NOP,-			;NO OPERATION

                                     0082   315 		 RECAL,-		;RECALIBRATE

                                     0082   316 		 DRVCLR,-		;DRIVE CLEAR

                                     0082   317 		 RELEASE,-		;RELEASE PORT

                                     0082   318 		 RETCENTER,-		;RETURN HEADS TO CENTERLINE

                                     0082   319 		 READPRESET,-		;READ IN PRESET

                                     0082   320 		 PACKACK>		;PACK ACKNOWLEDGE

                                     008E   321 	FUNCTAB	EXE$ONEPARM,-		;ONE PARAMETER FUNCTIONS

                                     008E   322 		<SEEK,-			;SEEK CYLINDER

                                     008E   323 		 OFFSET,-		;OFFSET HEADS

                                     008E   324 		 SEARCH>		;SEARCH FOR SECTOR

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page   8

01              START I/O OPERATION                                                                                              (1)



                                     009A   326 	.SBTTL	START I/O OPERATION

                                     009A   327 ;+

                                     009A   328 ; STARTIO - START I/O OPERATION ON DEVICE UNIT

                                     009A   329 ;

                                     009A   330 ; THIS ENTRY POINT IS ENTERED TO START AN I/O OPERATION ON A DEVICE UNIT.

                                     009A   331 ;

                                     009A   332 ; INPUTS:

                                     009A   333 ;

                                     009A   334 ;	R3 = ADDRESS OF I/O PACKET.

                                     009A   335 ;	R5 = UCB ADDRESS OF DEVICE UNIT.

                                     009A   336 ;

                                     009A   337 ; OUTPUTS:

                                     009A   338 ;

                                     009A   339 ;	******OUTPUTS*******

                                     009A   340 ;-

                                     009A   341  

                                     009A   342 STARTIO:				;START I/O OPERATION

         70 A5         71 A5     90  009A   343 	MOVB	UCB$B_ERTMAX(R5),UCB$B_ERTCNT(R5) ;INITIALIZE ERROR RETRY COUNT

       0084 C5         20 A3     B0  009F   344 	MOVW	IRP$W_FUNC(R3),UCB$W_FUNC(R5) ;SAVE FUNCTION CODE AND MODIFIERS

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

                                     00A9   346  

                                     00A9   347 ;

                                     00A9   348 ; MOVE FUNCTION DEPENDENT PARAMETERS TO UCB

                                     00A9   349 ;

                                     00A9   350  

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

         20 A3            06         00AB   352 		IRP$W_FUNC(R3),R1	;

                          51         00AE       

            51            02     91  00AF   353 	CMPB	#IO$_SEEK,R1 		;SEEK FUNCTION?

                          19     13  00B2   354 	BEQL	20$			;IF EQL YES

            51            06     91  00B4   355 	CMPB	#IO$_OFFSET,R1 		;OFFSET FUNCTION?

                          1B     13  00B7   356 	BEQL	30$			;IF EQL YES

            51            09     91  00B9   357 	CMPB	#IO$_SEARCH,R1		;SEARCH FUNCTION?

                          1D     13  00BC   358 	BEQL	40$			;IF EQL YES

       0088 C5            50     D0  00BE   359 	MOVL	R0,UCB$W_DA(R5)		;STORE PARAMETER LONGWORD

            51            18     91  00C3   360 	CMPB	#IO$_WRITECHECKH,R1	;DISJOINT FUNCTION CODE?

                          18     1A  00C6   361 	BGTRU	50$			;IF GTRU NO

            51            09     A2  00C8   362 	SUBW	#IO$_WRITECHECKH-IO$_READHEAD-1,R1 ;CONVERT TO DENSE FUNCTION CODE

                          13     11  00CB   363 	BRB	50$			;

                                     00CD   364  

                                     00CD   365 ;

                                     00CD   366 ; SEEK FUNCTION - SET CYLINDER ADDRESS

                                     00CD   367 ;

                                     00CD   368  

       008A C5            50     B0  00CD   369 20$:	MOVW	R0,UCB$W_DC(R5)		;SET CYLINDER ADDRESS

                          0C     11  00D2   370 	BRB	50$			;

                                     00D4   371  

                                     00D4   372 ;

                                     00D4   373 ; OFFSET FUNCTION - SET CURRENT OFFSET VALUE

                                     00D4   374 ;

                                     00D4   375  

       0086 C5            50     90  00D4   376 30$:	MOVB	R0,UCB$W_OFFSET(R5)	;SET OFFSET VALUE

                          05     11  00D9   377 	BRB	50$			;

                                     00DB   378  

                                     00DB   379 ;

                                     00DB   380 ; SEARCH FUNCTION - SET SECTOR ADDRESS

                                     00DB   381 ;

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page   9

01              START I/O OPERATION                                                                                              (1)



                                     00DB   382  

       0088 C5            50     90  00DB   383 40$:	MOVB	R0,UCB$W_DA(R5)		;SET SECTOR ADDRESS

                                     00E0   384  

                                     00E0   385 ;

                                     00E0   386 ; FINISH PREPROCESSING

                                     00E0   387 ;

                                     00E0   388  

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

            54         20 A5     D0  00E4   390 	MOVL	UCB$L_CRB(R5),R4	;GET ADDRESS OF CRB

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

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

                          00         00F0       

                                     00F1   393  

                                     00F1   394 ;

                                     00F1   395 ; CENTRAL FUNCTION DISPATCH

                                     00F1   396 ;

                                     00F1   397  

                                     00F1   398 FDISPATCH:				;FUNCTION DISPATCH

            50         76 A5     9A  00F1   399 	MOVZBL	UCB$B_FEX(R5),R0	;GET DISPATCH FUNCTION CODE

         58 A5       0068 8F     AA  00F5   400 	BICW	#UCB$M_CANCEL!-		;CLEAR CANCEL I/O,

                                     00FB   401 		UCB$M_POWER!-		;POWERFAIL, AND

                                     00FB   402 		UCB$M_TIMOUT,UCB$W_STS(R5) ;TIMEOUT STATUS BITS

       0087 C5            10     90  00FB   403 	MOVB	#RM_OF_M_FMT/256,UCB$W_OFFSET+1(R5) ;CLEAR ECI, HCI, AND SET FORMAT

       0091 C5            01     90  0100   404 	MOVB	#1,UCB$B_OFFRTC(R5)	;SET INITIAL OFFSET RETRY COUNT

                     0090 C5     94  0105   405 	CLRB	UCB$B_OFFNDX(R5)	;CLEAR INITIAL OFFSET TABLE INDEX

                                     0109   406 	CASE	R0,<-			;DISPATCH TO FUNCTION HANDLING ROUTINE

                                     0109   407 		WRITECHECK,-		;WRITE CHECK DATA

                                     0109   408 		WRITEDATA,-		;WRITE DATA

                                     0109   409 		READDATA,-		;READ DATA

                                     0109   410 		WRITEHEAD,-		;WRITE HEADER AND DATA

                                     0109   411 		READHEAD,-		;READ HEADER AND DATA

                                     0109   412 		WRITECHECKH,-		;WRITE CHECK HEADER AND DATA

                                     0109   413 		>,LIMIT=#CDF_WRITECHECK	;

                                     0119   414  

                                     0119   415 ;

                                     0119   416 ; NO OPERATION, SEEK, RECALIBRATE, DRIVE CLEAR, RELEASE, OFFSET,

                                     0119   417 ; RETURN TO CENTER LINE, PACK ACKNOWLEDGE, SEARCH, AND READ IN PRESET

                                     0119   418 ;

                                     0119   419  

                                     0119   420 NOP:					;NO OPERATION

                                     0119   421 SEEK:					;SEEK CYLINDER

                                     0119   422 RECAL:					;RECALIBRATE

                                     0119   423 DRVCLR:					;DRIVE CLEAR

                                     0119   424 RELEASE:				;RELEASE PORT

                                     0119   425 OFFSET:					;OFFSET READ HEADS

                                     0119   426 RETCENTER:				;RETURN TO CENTERLINE

                                     0119   427 PACKACK:				;PACK ACKNOWLEDGE

                                     0119   428 SEARCH:					;SEARCH FOR SECTOR

                                     0119   429 READPRESET:				;READIN PRESET

                                     0119   430 	EXFUNC	RETRY			;EXECUTE HOUSEKEEPING FUNCTION

                          64     11  011D   431 	BRB	NORMAL			;

                                     011F   432  

                                     011F   433 ;

                                     011F   434 ; WRITE CHECK DATA AND WRITE CHECK HEADER AND DATA

                                     011F   435 ;

                                     011F   436  

                                     011F   437 WRITECHECK:				;WRITE CHECK DATA

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  10

01              START I/O OPERATION                                                                                              (1)



                                     011F   438 WRITECHECKH:				;WRITE CHECK HEADER AND DATA

       0084 C5            0E     E4  011F   439 	BBSC	#IO$V_DATACHECK,UCB$W_FUNC(R5),WRITEDATA ;CLEAR DATA CHECK REQUEST

                          00         0124       

                                     0125   440  

                                     0125   441 ;

                                     0125   442 ; WRITE DATA, WRITE HEADER AND DATA, WRITE CHECK DATA, AND WRITE CHECK HEADER

                                     0125   443 ; AND DATA

                                     0125   444 ;

                                     0125   445  

                                     0125   446 WRITEDATA:				;WRITE DATA

                                     0125   447 WRITEHEAD:				;WRITE HEADER AND DATA

       0087 C5            08     88  0125   448 	BISB	#RM_OF_M_ECI/256,UCB$W_OFFSET+1(R5) ;INHIBIT ECC CORRECTION 

                                     012A   449  

                                     012A   450 ;

                                     012A   451 ; READ DATA, READ HEADER AND DATA, WRITE DATA, WRITE HEADER AND DATA, WRITE

                                     012A   452 ; CHECK DATA, AND WRITE CHECK HEADER AND DATA

                                     012A   453 ;

                                     012A   454  

                                     012A   455 READDATA:				;READ DATA

                                     012A   456 READHEAD:				;READ HEADER AND DATA

       0084 C5            0C     E0  012A   457 	BBS	#IO$V_INHSEEK,UCB$W_FUNC(R5),TRANRQCH ;IF SET, NO EXPLICIT SEEK

                          07         012F       

                                     0130   458 	EXFUNC	RETRY,F_SEARCHA		;SEARCH AHEAD OF STARTING SECTOR

                                     0137   459  

                                     0137   460 ;

                                     0137   461 ; DATA TRANSFER - REQUEST CHANNEL

                                     0137   462 ;

                                     0137   463  

                                     0137   464 TRANRQCH:				;DATA TRANSFER REQUEST CHANNEL

                                     0137   465 	REQPCHAN LOW			;REQUEST PRIMARY CHANNEL FOR TRANSFER

                                     013A   466  

                                     013A   467 ;

                                     013A   468 ; DATA TRANSFER - CHANNEL ALREADY OWNED

                                     013A   469 ;

                                     013A   470  

                                     013A   471 TRANNOCH:				;DATA TRANSFER CHANNEL OWNED

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

                                     013E   473 	EXFUNC	TRANXT			;EXECUTE TRANSFER FUNCTION

                                     0142   474  

                                     0142   475 ;

                                     0142   476 ; DATA CHECK

                                     0142   477 ;

                                     0142   478  

                                     0142   479 DATACHECK:				;DATA CHECK

       0084 C5            0E     E1  0142   480 	BBC	#IO$V_DATACHECK,UCB$W_FUNC(R5),NORMAL ;IF CLR, NO DATA CHECK

                          3B         0147       

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

         5A A5            00     E0  014D   482 	BBS	#UCB$V_ECC,UCB$W_DEVSTS(R5),CHECKXT ;IF SET, ECC CORRECTION MADE

                          36         0151       

                                     0152   483 	RELCHAN				;RELEASE CHANNEL

       0087 C5            19     90  0155   484 	MOVB	#<RM_OF_M_DCK!-		;SET DATA CHECK IN PROGRESS,

                                     015A   485 		RM_OF_M_ECI!-		;INHIBIT ECC CORRECTION, AND

                                     015A   486 		RM_OF_M_FMT>/256,UCB$W_OFFSET+1(R5) ;SET FORMAT

       0091 C5            01     90  015A   487 	MOVB	#1,UCB$B_OFFRTC(R5)	;SET INITIAL OFFSET RETRY COUNT

                     0090 C5     94  015F   488 	CLRB	UCB$B_OFFNDX(R5)	;CLEAR INITIAL OFFSET TABLE INDEX

            52         4C A5     D0  0163   489 	MOVL	UCB$L_IRP(R5),R2	;GET ADDRESS OF IRP

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

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  11

01              START I/O OPERATION                                                                                              (1)



       0088 C5         34 A2     D0  016C   491 	MOVL	IRP$L_MEDIA(R2),UCB$W_DA(R5) ;

                                     0172   492  

                                     0172   493 ;

                                     0172   494 ; DATA CHECK RETRY

                                     0172   495 ;

                                     0172   496  

                                     0172   497 CHECKRETRY:				;DATA CHECK RETRY

                                     0172   498 	REQPCHAN LOW			;REQUEST PRIMARY CHANNEL FOR DATA CHECK

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

            50       FE93 CF40   9A  0179   500 	MOVZBL	CHECKTAB-CDF_WRITEDATA[R0],R0 ;GET CASE TABLE INDEX

                                     017F   501 	EXFUNC	TRANXT			;EXECUTE DATA CHECK FUNCTION

                                     0183   502  

                                     0183   503 ;

                                     0183   504 ; SUCCESSFUL OPERATION COMPLETION

                                     0183   505 ;

                                     0183   506  

                                     0183   507 NORMAL:					;

            50       0000'8F     3C  0183   508 	MOVZWL	#SS$_NORMAL,R0		;SET NORMAL COMPLETION STATUS

                                     0188   509 CHECKXT:				;

                          016C   31  0188   510 	BRW	FUNCXT			;

                                     018B   511  

                                     018B   512 ;

                                     018B   513 ; TRANSFER ENDED WITH A RETRIABLE ERROR

                                     018B   514 ;

                                     018B   515  

                                     018B   516 TRANXT:					;TRANSFER EXIT

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

                          1F     13  018F   518 	BEQL	RETRY			;IF EQL YES

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

                          19     13  0195   520 	BEQL	RETRY			;IF EQL YES

            51   00060F74 8F     D3  0197   521 	BITL	#MBA$M_SR_DLT!-		;DATA LATE OR,

                                     019E   522 		MBA$M_SR_INVMAP!-	;INVALID MAP REGISTER OR,

                                     019E   523 		MBA$M_SR_MAPPE!-	;MAP REGISTER PARITY ERROR OR,

                                     019E   524 		MBA$M_SR_MCPE!-		;MASSBUS CONTROL PARITY ERROR OR,

                                     019E   525 		MBA$M_SR_MDPE!-		;MASSBUS DATA PARITY ERROR OR,

                                     019E   526 		MBA$M_SR_MXF!-		;MISSED TRANSFER OR,

                                     019E   527 		MBA$M_SR_NED!-		;NONEXISTENT DISK OR,

                                     019E   528 		MBA$M_SR_RDS!-		;READ DATA SUBSTITUTE OR,

                                     019E   529 		MBA$M_SR_WCKLWR!-	;WRITE CHECK LOWER BYTE OR,

                                     019E   530 		MBA$M_SR_WCKUPR,R1	;WRITE CHECK UPPER BYTE?

                          10     12  019E   531 	BNEQ	RETRY			;IF NEQ YES - RETRY FUNCTION

       0098 C5       1C88 8F     B3  01A0   532 	BITW	#RM_ER2_M_DPE!-		;DATA PARITY ERROR OR,

                                     01A7   533 		RM_ER2_M_DVC!-		;DEVICE CHECK OR,

                                     01A7   534 		RM_ER2_M_LBC!-		;LOSS OF BIT CLOCK OR,

                                     01A7   535 		RM_ER2_M_LSC!-		;LOSS OF SYSTEM CLOCK OR,

                                     01A7   536 		RM_ER2_M_IVC,UCB$W_DR_ER2(R5) ;INVALID COMMAND?

                          07     12  01A7   537 	BNEQ	RETRY			;IF NEQ YES - RETRY FUNCTION

            52       20A8 8F     B3  01A9   538 	BITW	#RM_ER1_M_OPI!-		;OPERATION INCOMPLETE OR,

                                     01AE   539 		RM_ER1_M_PAR!-		;PARITY ERROR OR,

                                     01AE   540 		RM_ER1_M_HCE!-		;HEADER COMPARE ERROR OR,

                                     01AE   541 		RM_ER1_M_WCF,R2		;WRITE CLOCK FAIL?

                          03     13  01AE   542 	BEQL	ECC			;IF EQL NO

                                     01B0   543 RETRY:					;

                          00A2   31  01B0   544 	BRW	RETRYERR		;RETRIABLE ERROR

                                     01B3   545  

                                     01B3   546 ;

                                     01B3   547 ; ECC, DRIVE TIMING, OR HEADER ERROR - APPLY ECC OR PERFORM OFFSET RECOVERY

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  12

01              START I/O OPERATION                                                                                              (1)



                                     01B3   548 ;

                                     01B3   549  

                                     01B3   550 ECC:					;ECC CORRECTION

            50       0092 C5     3C  01B3   551 	MOVZWL	UCB$W_BCR(R5),R0	;GET NEGATIVE NUMBER OF BYTES REMAINING

            50         6E A5     A0  01B8   552 	ADDW	UCB$W_BCNT(R5),R0	;CALCULATE NUMBER OF BYTES TRANSFERED

            51            50     D0  01BC   553 	MOVL	R0,R1			;COPY NUMBER OF BYTES TRANSFERED

                          2E     13  01BF   554 	BEQL	OFF			;IF EQL NONE - PERFORM OFFSET RECOVERY

            52            08     E0  01C1   555 	BBS	#RM_ER1_V_HCRC,R2,10$	;IF SET, HEADER CRC ERROR

                          02         01C4       

                          50     D7  01C5   556 	DECL	R0			;SET TO TRUNCATE LAST BLOCK TRANSFERED

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

            52       1140 8F     B3  01CC   558 	BITW	#RM_ER1_M_DTE!-		;DRIVE TIMING ERROR OR,

                                     01D1   559 		RM_ER1_M_ECH!-		;ECC HARD ERROR OR,

                                     01D1   560 		RM_ER1_M_HCRC,R2	;HEADER CRC ERROR?

                          1C     12  01D1   561 	BNEQ	OFF			;IF NEQ YES - PERFORM OFFSET RECOVERY

       0086 C5            0B     E0  01D3   562 	BBS	#RM_OF_V_ECI,UCB$W_OFFSET(R5),OFF ;IF SET, ECC INHIBITED

                          16         01D8       

                          51     DD  01D9   563 	PUSHL	R1			;SAVE TOTAL NUMBER OF BYTES TRANSFERED

                          FE22'  30  01DB   564 	BSBW	IOC$APPLYECC		;APPLY ECC CORRECTION

                          50   8ED0  01DE   565 	POPL	R0			;RETRIEVE TRANSFERED BYTE COUNT

                          FE1C'  30  01E1   566 	BSBW	IOC$UPDATRANSP		;UPDATE TRANSFER PARAMETERS

                       6E A5     B5  01E4   567 	TSTW	UCB$W_BCNT(R5)		;ANY MORE TO TRANSFER?

                          03     13  01E7   568 	BEQL	20$			;IF EQL NO

                          FF4E   31  01E9   569 	BRW	TRANNOCH		;TRANSFER NEXT SEGMENT

                          FF53   31  01EC   570 20$:	BRW	DATACHECK		;CHECK FOR WRITE CHECK

                                     01EF   571  

                                     01EF   572 ;

                                     01EF   573 ; OFF - OFFSET RECOVERY

                                     01EF   574 ;

                                     01EF   575 ; THIS CODE IS EXECUTED WHEN A DRIVE TIMING ERROR, HEADER COMPARE, OR ECC

                                     01EF   576 ; HARD ERROR IS DETECTED ON A READ FUNCTION.

                                     01EF   577 ;

                                     01EF   578  

                                     01EF   579 OFF:					;OFFSET RECOVERY

                          50     D5  01EF   580 	TSTL	R0			;ANY GOOD DATA TRANSFERED?

                          1F     13  01F1   581 	BEQL	20$			;IF EQL NO

                                     01F3   582  

                                     01F3   583 ;

                                     01F3   584 ; THE TRANSFER ENDED IN AN ERROR BUT THERE WERE SECTORS TRANSFERED THAT

                                     01F3   585 ; CONTAINED GOOD DATA. SINCE THE ERROR COULD HAVE BEEN CAUSED BY A CYLIN-

                                     01F3   586 ; DER CROSSING, THE GOOD DATA IS SAVED AND THE TRANSFER IS RETRIED FROM THE

                                     01F3   587 ; POINT OF ERROR.

                                     01F3   588 ;

                                     01F3   589  

                          FE0A'  30  01F3   590 	BSBW	IOC$UPDATRANSP		;UPDATE TRANSFER PARAMETERS

                     0090 C5     94  01F6   591 	CLRB	UCB$B_OFFNDX(R5)	;RESET OFFSET TABLE INDEX

       0091 C5            10     90  01FA   592 10$:	MOVB	#16,UCB$B_OFFRTC(R5)	;SET OFFSET RETRY COUNT

                                     01FF   593 	RELCHAN				;RELEASE CHANNEL

       0086 C5       0200 8F     AA  0202   594 	BICW	#RM_OF_M_OM,UCB$W_OFFSET(R5) ;CLEAR OFFSET MODE

       0090 C5            04     91  0209   595 	CMPB	#OFFSIZ,UCB$B_OFFNDX(R5) ;ALL OFFSETS TRIED?

                          34     12  020E   596 	BNEQ	50$			;IF NEQ NO

                          64     11  0210   597 	BRB	FATALERR		;

                                     0212   598  

                                     0212   599 ;

                                     0212   600 ; NO GOOD DATA TRANSFERED - CHECK IF CHANGE IN OFFSET NEEDED

                                     0212   601 ;

                                     0212   602  

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  13

01              START I/O OPERATION                                                                                              (1)



            52       9040 8F     B3  0212   603 20$:	BITW	#RM_ER1_M_DCK!-		;DATA CHECK OR,

                                     0217   604 		RM_ER1_M_DTE!-		;DRIVE TIMING OR,

                                     0217   605 		RM_ER1_M_ECH,R2		;ECC HARD ERROR?

                          05     12  0217   606 	BNEQ	30$			;IF NEQ YES

       0087 C5            04     88  0219   607 	BISB	#RM_OF_M_HCI/256,UCB$W_OFFSET+1(R5) ;SET HEADER COMPARE INHIBIT

                     0091 C5     97  021E   608 30$:	DECB	UCB$B_OFFRTC(R5)	;CHANGE CURRENT OFFSET?

                          25     12  0222   609 	BNEQ	60$			;IF NEQ NO

                     0090 C5     96  0224   610 	INCB	UCB$B_OFFNDX(R5)	;UPDATE OFFSET TABLE INDEX

            50       0090 C5     9A  0228   611 	MOVZBL	UCB$B_OFFNDX(R5),R0	;GET NEXT OFFSET TABLE INDEX

       0086 C5       FDFF CF40   90  022D   612 	MOVB	OFFTAB-1[R0],UCB$W_OFFSET(R5) ;GET NEXT OFFSET VALUE

                          C3     13  0235   613 	BEQL	10$			;IF EQL RETURN TO CENTERLINE

       0091 C5            02     90  0237   614 	MOVB	#2,UCB$B_OFFRTC(R5)	;SET OFFSET RETRY COUNT

                                     023C   615 	RELCHAN				;RELEASE CHANNEL

       0087 C5            02     88  023F   616 	BISB	#RM_OF_M_OM/256,UCB$W_OFFSET+1(R5) ;SET OFFSET MODE

       0087 C5            04     8A  0244   617 50$:	BICB	#RM_OF_M_HCI/256,UCB$W_OFFSET+1(R5) ;CLEAR HEADER COMPARE INHIBIT

       0086 C5            08     E0  0249   618 60$:	BBS	#RM_OF_V_DCK,UCB$W_OFFSET(R5),70$ ;IF SET, DATA CHECK FUNCTION

                          03         024E       

                          FEE5   31  024F   619 	BRW	TRANRQCH		;TRY FUNCTION AGAIN

                          FF1D   31  0252   620 70$:	BRW	CHECKRETRY		;TRY DATA CHECK AGAIN

                                     0255   621  

                                     0255   622 ;

                                     0255   623 ; RETRIABLE ERROR

                                     0255   624 ;

                                     0255   625  

                                     0255   626 RETRYERR:				;RETRIABLE ERROR

       0098 C5            0E     E0  0255   627 	BBS	#RM_ER2_V_SKI,UCB$W_DR_ER2(R5),10$ ;IF SET, SEEK INCOMPLETE

                          04         025A       

            52            07     E1  025B   628 	BBC	#RM_ER1_V_HCE,R2,20$	;IF CLR, HEADER COMPARED

                          0C         025E       

                                     025F   629 10$:	EXFUNC	FATALERR,F_RECAL	;RECALIBRATE HEADS

            52       2000 8F     3C  0266   630 	MOVZWL	#RM_ER1_M_OPI,R2	;SET AN ERROR FOR CALLER TO SEE

                       70 A5     97  026B   631 20$:	DECB	UCB$B_ERTCNT(R5)	;ANY RETRIES LEFT?

                          06     13  026E   632 	BEQL	FATALERR		;IF EQL NO

                                     0270   633 	RELCHAN				;RELEASE CHANNEL IF OWNED

                          FE7B   31  0273   634 	BRW	FDISPATCH		;

                                     0276   635  

                                     0276   636 ;

                                     0276   637 ; FATAL CONTROLLER/DRIVE ERROR, ERROR RETRY COUNT EXHAUSTED, ERROR RETRY

                                     0276   638 ; INHIBITED, OR FINAL OFFSET TRIED

                                     0276   639 ;

                                     0276   640  

                                     0276   641 FATALERR:				;FATAL ERROR - SET STATUS

            50            0C     E1  0276   642 	BBC	#RM_DS_V_MOL,R0,10$	;IF CLR, MEDIUM OFFLINE

                          71         0279       

            50            06     E1  027A   643 	BBC	#RM_DS_V_VV,R0,20$	;IF CLR, VOLUME INVALID

                          74         027D       

            50       0000'8F     3C  027E   644 	MOVZWL	#SS$_UNSAFE,R0		;SET DRIVE UNSAFE STATUS

            52            0E     E0  0283   645 	BBS	#RM_ER1_V_UNS,R2,FUNCXT	;IF SET, DRIVE UNSAFE

                          70         0286       

            50       0000'8F     3C  0287   646 	MOVZWL	#SS$_OPINCOMPL,R0	;SET OPERATION INCOMPLETE STATUS

            52            0D     E0  028C   647 	BBS	#RM_ER1_V_OPI,R2,FUNCXT	;IF SET, OPERATION INCOMPLETE

                          67         028F       

            50       0000'8F     3C  0290   648 	MOVZWL	#SS$_FORMAT,R0		;SET FORMAT ERROR STATUS

            52            04     E0  0295   649 	BBS	#RM_ER1_V_FER,R2,FUNCXT	;IF SET, FORMAT ERROR

                          5E         0298       

                                     0299   650 ;	MOVZWL	#SS$_BADBLK,R0		;SET BAD BLOCK ERROR STATUS

                                     0299   651 ;	BBS	#RM_ER2_V_BSE,UCB$W_DR_ER2(R5),FUNCXT ;IF SET, BAD SECTOR ERROR

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  14

01              START I/O OPERATION                                                                                              (1)



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

            52            0B     E0  029E   653 	BBS	#RM_ER1_V_WLE,R2,FUNCXT	;IF SET, WRITE LOCK ERROR

                          55         02A1       

            50       0000'8F     3C  02A2   654 	MOVZWL	#SS$_IVADDR,R0		;SET INVALID DISK ADDRESS STATUS

            52       0600 8F     B3  02A7   655 	BITW	#RM_ER1_M_AOE!-		;DISK ADDRESS OVERFLOW OR,

                                     02AC   656 		RM_ER1_M_IAE,R2		;INVALID DISK ADDRESS ERROR?

                          49     12  02AC   657 	BNEQ	FUNCXT			;IF NEQ YES

            50       0000'8F     3C  02AE   658 	MOVZWL	#SS$_DRVERR,R0		;SET DRIVE ERROR STATUS

            52       1027 8F     B3  02B3   659 	BITW	#RM_ER1_M_DTE!-		;DRIVE TIMING ERROR OR,

                                     02B8   660 		RM_ER1_M_ILF!-		;ILLEGAL FUNCTION OR,

                                     02B8   661 		RM_ER1_M_ILR!-		;ILLEGAL REGISTER OR,

                                     02B8   662 		RM_ER1_M_RMR!-		;REGISTER MODIFY REFUSE OR,

                                     02B8   663 		RM_ER1_M_WCF,R2		;WRITE CLOCK FAIL ERROR?

                          3D     12  02B8   664 	BNEQ	FUNCXT			;IF NEQ YES

            50       0000'8F     3C  02BA   665 	MOVZWL	#SS$_PARITY,R0		;SET PARITY ERROR STATUS

            52       81C8 8F     B3  02BF   666 	BITW	#RM_ER1_M_DCK!-		;DATA CHECK ERROR OR,

                                     02C4   667 		RM_ER1_M_ECH!-		;ECC HARD ERROR OR,

                                     02C4   668 		RM_ER1_M_HCE!-		;HEADER COMPARE ERROR OR,

                                     02C4   669 		RM_ER1_M_HCRC!-		;HEADER CRC ERROR OR,

                                     02C4   670 		RM_ER1_M_PAR,R2		;PARITY ERROR?

                          31     12  02C4   671 	BNEQ	FUNCXT			;IF NEQ YES

            51   00020064 8F     D3  02C6   672 	BITL	#MBA$M_SR_MAPPE!-	;MAP PARITY ERROR OR,

                                     02CD   673 		MBA$M_SR_MCPE!-		;MASSBUS CONTROL PARITY ERROR OR,

                                     02CD   674 		MBA$M_SR_MDPE!-		;MASSBUS DATA PARITY ERROR OR,

                                     02CD   675 		MBA$M_SR_RDS,R1		;READ DATA SUBSTITUTE?

                          28     12  02CD   676 	BNEQ	FUNCXT			;IF NEQ YES

            50       0000'8F     3C  02CF   677 	MOVZWL	#SS$_DATACHECK,R0	;SET DATA CHECK ERROR STATUS

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

                                     02D9   679 		MBA$M_SR_WCKUPR,R1	;WRITE CHECK ERROR UPPER BYTE?

                          1C     12  02D9   680 	BNEQ	FUNCXT			;IF NEQ YES

            50       0000'8F     3C  02DB   681 	MOVZWL	#SS$_NONEXDRV,R0	;SET NONEXISTENT DRIVE STATUS

            51            12     E0  02E0   682 	BBS	#MBA$V_SR_NED,R1,FUNCXT	;IF SET, NONEXISTENT DRIVE

                          13         02E3       

            50       0000'8F     3C  02E4   683 	MOVZWL	#SS$_CTRLERR,R0		;SET CONTROLLER ERROR STATUS

                          0C     11  02E9   684 	BRB	FUNCXT			;

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

                          05     11  02F0   686 	BRB	FUNCXT			;

            50       0000'8F     3C  02F2   687 20$:	MOVZWL	#SS$_VOLINV,R0		;SET VOLUME INVALID STATUS

                                     02F7   688  

                                     02F7   689 ;

                                     02F7   690 ; FUNCTION COMPLETION COMMON EXIT

                                     02F7   691 ;

                                     02F7   692  

                                     02F7   693 FUNCXT:					;FUNCTION EXIT

                          03     BB  02F7   694 	PUSHR	#^M<R0,R1>		;SAVE REGISTERS

                          FD04'  30  02F9   695 	BSBW	IOC$DIAGBUFILL		;FILL DIAGNOSTIC BUFFER IF PRESENT

                                     02FC   696 	RELCHAN				;RELEASE CHANNEL IF OWNED

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

                          12     1A  0303   698 	BGTRU	10$			;IF GTRU YES

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

                          0C     13  0309   700 	BEQL	10$			;IF EQL YES

            52         4C A5     D0  030B   701 	MOVL	UCB$L_IRP(R5),R2	;RETRIEVE ADDRESS OF IRP

         32 A2       0092 C5     A1  030F   702 	ADDW3	UCB$W_BCR(R5),IRP$W_BCNT(R2),2(SP) ;CALCULATE BYTES TRANSFERED

                       02 AE         0315       

                          03     BA  0317   703 10$:	POPR	#^M<R0,R1>		;RESTORE REGISTERS

                                     0319   704 	REQCOM				;COMPLETE REQUEST

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  15

01              RM03 HARDWARE FUNCTION EXECUTION                                                                                 (1)



                                     031C   706 	.SBTTL	RM03 HARDWARE FUNCTION EXECUTION

                                     031C   707 ;

                                     031C   708 ; FEX - RM03 HARDWARE FUNCTION EXECUTION

                                     031C   709 ;

                                     031C   710 ; THIS ROUTINE IS CALLED VIA A BSB WITH A BYTE IMMEDIATELY FOLLOWING THAT

                                     031C   711 ; SPECIFIES THE ADDRESS OF AN ERROR ROUTINE. ALL DATA IS ASSUMED TO HAVE BEEN

                                     031C   712 ; SET UP IN THE UCB BEFORE THE CALL. THE APPROPRIATE PARAMETERS ARE LOADED

                                     031C   713 ; INTO DEVICE REGISTERS AND THE FUNCTION IS INITIATED. IF THE FUNCTION IS AN

                                     031C   714 ; IMMEDIATE FUNCTION CONTROL RETURNS IMMEDIATELY. ELSE THE RETURN ADDRESS

                                     031C   715 ; IS STORED IN THE UCB AND A WAITFOR INTERRUPT IS EXECUTED. WHEN THE INTER-

                                     031C   716 ; RUPT OCCURS, CONTROL IS RETURNED TO THE CALLER.

                                     031C   717 ;

                                     031C   718 ; INPUTS:

                                     031C   719 ;

                                     031C   720 ;	R0 = FUNCTION TABLE DISPATCH INDEX.

                                     031C   721 ;	R3 = ADDRESS OF DRIVE CONTROL STATUS REGISTER 1.

                                     031C   722 ;	R4 = ADDRESS OF MBA CONFIGURATION STATUS REGISTER.

                                     031C   723 ;	R5 = DEVICE UNIT UCB ADDRESS.

                                     031C   724 ;

                                     031C   725 ;	00(SP) = RETURN ADDRESS OF CALLER.

                                     031C   726 ;	04(SP) = RETURN ADDRESS OF CALLER'S CALLER.

                                     031C   727 ;

                                     031C   728 ;	IMMEDIATELY FOLLOWING INLINE AT THE CALL SITE IS A BYTE WHICH CONTAINS

                                     031C   729 ;	A BRANCH DESTINATION TO AN ERROR RETRY ROUTINE.

                                     031C   730 ;

                                     031C   731 ; OUTPUTS:

                                     031C   732 ;

                                     031C   733 ;	THERE ARE FOUR EXITS FROM THIS ROUTINE:

                                     031C   734 ;

                                     031C   735 ;	1. SPECIAL CONDITION - THIS EXIT IS TAKEN IF A POWER FAILURE OCCURS

                                     031C   736 ;		OR THE OPERATION TIMES OUT. IT IS A JUMP TO THE APPROPRIATE

                                     031C   737 ;		ERROR ROUTINE.

                                     031C   738 ;

                                     031C   739 ;	2. FATAL ERROR - THIS EXIT IS TAKEN IF A FATAL CONTROLLER OR DRIVE

                                     031C   740 ;		ERROR OCCURS OR IF ANY ERROR OCCURS AND ERROR RETRY IS

                                     031C   741 ;		INHIBITED. IT IS A JUMP TO THE FATAL ERROR EXIT ROUTINE.

                                     031C   742 ;

                                     031C   743 ;	3. RETRIABLE ERROR - THIS EXIT IS TAKEN IF A RETRIABLE CONTROLLER

                                     031C   744 ;		OR DRIVE ERROR OCCURS AND ERROR RETRY IS NOT INHIBITED.

                                     031C   745 ;		IT CONSISTS OF TAKING THE ERROR BRANCH EXIT.

                                     031C   746 ;

                                     031C   747 ;	4. SUCCESSFUL OPERATION - THIS EXIT IS TAKEN IF NO ERROR OCCURS

                                     031C   748 ;		DURING THE OPERATION. IT CONSISTS OF A RETURN INLINE.

                                     031C   749 ;

                                     031C   750 ;	IN ALL CASES IF AN ERROR OCCURS, AN ATTEMPT IS MADE TO LOG THE ERROR.

                                     031C   751 ;

                                     031C   752 ;	IN ALL CASES FINAL DRIVE AND CONTROLLER REGISTERS ARE RETURNED VIA

                                     031C   753 ;	THE GENERAL REGISTERS R0, R1, AND R2, AND THE UCB.

                                     031C   754 ;

                                     031C   755 ;	R0 = DRIVE STATUS REGISTER.

                                     031C   756 ;	R1 = MBA STATUS REGISTER.

                                     031C   757 ;	R2 = DRIVE ERROR REGISTER 1.

                                     031C   758 ;

                                     031C   759 ;	UCB$W_EC1(R5) = ECC POSITION REGISTER.

                                     031C   760 ;	UCB$W_EC2(R5) = ECC PATTERN REGISTER.

                                     031C   761 ;	UCB$W_BCR(R5) = BYTE COUNT REGISTER.

                                     031C   762 ;	UCB$W_DR_ER2(R5) = DRIVE ERROR REGISTER 2.

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  16

01              RM03 HARDWARE FUNCTION EXECUTION                                                                                 (1)



                                     031C   763 ;

                                     031C   764  

                                     031C   765 FEX:					;FUNCTION EXECUTOR

                       7C A5   8ED0  031C   766 	POPL	UCB$L_DPC(R5)		;SAVE DRIVER PC VALUE

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

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

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

                                     032E   770 	CASE	R0,<-			;DISPATCH TO PROPER FUNCTION ROUTINE

                                     032E   771 		POSIT,-			;SEEK CYLINDER

                                     032E   772 		EXFNC,-			;RECALIBRATE

                                     032E   773 		IMMED,-			;DRIVE CLEAR

                                     032E   774 		IMMED,-			;RELEASE DRIVE

                                     032E   775 		IMMED,-			;OFFSET HEADS

                                     032E   776 		EXFNC,-			;RETURN TO CENTERLINE

                                     032E   777 		IMMED,-			;PACK ACKNOWLEDGE

                                     032E   778 		POSIT,-			;SEARCH FOR SECTOR

                                     032E   779 		XFER,-			;WRITE CHECK

                                     032E   780 		XFER,-			;WRITE DATA

                                     032E   781 		XFER,-			;READ DATA

                                     032E   782 		XFER,-			;WRITE HEADER AND DATA

                                     032E   783 		XFER,-			;READ HEADER AND DATA

                                     032E   784 		XFER,-			;WRITE CHECK HEADER AND DATA

                                     032E   785 		IMMED,-			;READIN PRESET

                                     032E   786 		SEARCHA,-		;SEARCH AHEAD

                                     032E   787 		>,LIMIT=#CDF_SEEK	;

                                     0352   788  

                                     0352   789 ;

                                     0352   790 ; IMMEDIATE FUNCTION EXECUTION

                                     0352   791 ;

                                     0352   792 ;	FUNCTIONS INCLUDE:

                                     0352   793 ;

                                     0352   794 ;		NO OPERATION,

                                     0352   795 ;		DRIVE CLEAR,

                                     0352   796 ;		RELEASE PORT,

                                     0352   797 ;		OFFSET,

                                     0352   798 ;		READ IN PRESET, AND

                                     0352   799 ;		PACK ACKNOWLEDGE.

                                     0352   800 ;

                                     0352   801 ; THESE FUNCTIONS ARE EXECUTED IMMEDIATELY AND THE FINAL DEVICE REGISTERS

                                     0352   802 ; ARE RETURNED TO THE CALLER.

                                     0352   803 ;

                                     0352   804  

                                     0352   805 IMMED:					;IMMEDIATE FUNCTION EXECUTION

                                     0352   806 	DSBINT				;DISABLE INTERRUPTS

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

                          6B         035C       

            63            09     9A  035D   808 	MOVZBL	#F_DRVCLR!1,RM_CS1(R3)	;CLEAR DRIVE ERRORS

            63       FCBB CF40   9A  0360   809 	MOVZBL	FTAB[R0],RM_CS1(R3)	;EXECUTE FUNCTION

                          60     11  0366   810 	BRB	ENBXIT			;

                                     0368   811 

                                     0368   812 ;

                                     0368   813 ; SEARCH AHEAD FUNCTION EXECUTION

                                     0368   814 ;

                                     0368   815 ; THIS FUNCTION MINIMIZES ROTATIONAL LATENCY BY SEARCHING FOR THE SECTOR THAT IS

                                     0368   816 ; FOUR SECTORS AHEAD OF THE STARTING SECTOR OF A TRANSFER.

                                     0368   817 ;

                                     0368   818 ; THE DESIRED CYLINDER, TRACK, AND SECTOR ADDRESS REGISTERS ARE LOADED, THE

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  17

01              RM03 HARDWARE FUNCTION EXECUTION                                                                                 (1)



                                     0368   819 ; FUNCTION IS INITIATED, AND A WAITFOR INTERRUPT IS EXECUTED. WHEN THE INTER-

                                     0368   820 ; RUPT OCCURS, THE FINAL DEVICE REGISTERS ARE RETURNED TO THE CALLER.

                                     0368   821 ;

                                     0368   822 

                                     0368   823 SEARCHA:				;

            51       0088 C5     3C  0368   824 	MOVZWL	UCB$W_DA(R5),R1		;GET DESIRED TRACK AND SECTOR ADDRESS

            51            04     82  036D   825 	SUBB	#4,R1			;COMPUTE FOUR SECTORS BEFORE IT

                          04     18  0370   826 	BGEQ	10$			;IF GEQ BEFORE SECTOR ZERO

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

         14 A3            51     D0  0376   828 10$:	MOVL	R1,RM_DA(R3)		;SET TRACK AND SECTOR ADDRESS

                          11     11  037A   829 	BRB	LDCYL			;

                                     037C   830  

                                     037C   831 ;

                                     037C   832 ; TRANSFER FUNCTION EXECUTION

                                     037C   833 ;

                                     037C   834 ;	FUNCTIONS INCLUDE:

                                     037C   835 ;

                                     037C   836 ;		WRITE CHECK,

                                     037C   837 ;		WRITE CHECK HEADER AND DATA,

                                     037C   838 ;		WRITE DATA,

                                     037C   839 ;		WRITE HEADER AND DATA,

                                     037C   840 ;		READ DATA, AND

                                     037C   841 ;		READ HEADER AND DATA.

                                     037C   842 ;

                                     037C   843 ; THE MAP REGISTERS, BYTE COUNT REGISTER, AND VIRTUAL ADDRESS REGISTER ARE

                                     037C   844 ; LOADED FOLLOWED BY THE DESIRED CYLINDER, TRACK, AND SECTOR ADDRESS REGISTERS.

                                     037C   845 ; THE FUNCTION IS INITIATED AND A WAITFOR INTERRUPT IS EXECUTED. WHEN THE

                                     037C   846 ; INTERRUPT OCCURS, THE FINAL DEVICE REGISTERS ARE RETURNED TO THE CALLER.

                                     037C   847 ;

                                     037C   848 ; IT ASSUMED THAT THE CALLER OWNS THE CHANNEL ON WHICH THE I/O IS TO OCCUR.

                                     037C   849 ;

                                     037C   850  

                                     037C   851 XFER:					;TRANSFER FUNCTION EXECUTION

         08 A4            00     D2  037C   852 	MCOML	#0,MBA$L_SR(R4)		;CLEAR MASSBUS ADAPTER ERRORS

                                     0380   853 	LOADMBA				;LOAD MAP, BYTE COUNT, AND VIRTUAL ADDRESS

            50         77 A5     9A  0383   854 	MOVZBL	UCB$B_CEX(R5),R0	;RETRIEVE FUNCTION TABLE INDEX

                                     0387   855  

                                     0387   856 ;

                                     0387   857 ; POSITIONING FUNCTION EXECUTION

                                     0387   858 ;

                                     0387   859 ;	FUNCTIONS INCLUDE:

                                     0387   860 ;

                                     0387   861 ;		SEEK CYLINDER, AND

                                     0387   862 ;		SEARCH FOR SECTOR.

                                     0387   863 ;

                                     0387   864 ; THE DESIRED CYLINDER, TRACK, AND SECTOR ADDRESS REGISTERS ARE LOADED, THE

                                     0387   865 ; FUNCTION IS INITIATED, AND A WAITFOR INTERRUPT IS EXECUTED. WHEN THE INTER-

                                     0387   866 ; RUPT OCCURS, THE FINAL DEVICE REGISTERS ARE RETURNED TO THE CALLER.

                                     0387   867 ;

                                     0387   868  

                                     0387   869 POSIT:					;POSITION FUNCTION EXECUTION

         14 A3       0088 C5     3C  0387   870 	MOVZWL	UCB$W_DA(R5),RM_DA(R3)	;SET DESIRED TRACK AND SECTOR ADDRESS

                                     038D   871 LDCYL:					;

         28 A3       008A C5     3C  038D   872 	MOVZWL	UCB$W_DC(R5),RM_DC(R3)	;SET DESIRED CYLINDER ADDRESS

                                     0393   873  

                                     0393   874 ;

                                     0393   875 ; INTERRUPT WAIT FUNCTION EXECUTION

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  18

01              RM03 HARDWARE FUNCTION EXECUTION                                                                                 (1)



                                     0393   876 ;

                                     0393   877 ;	FUNCTIONS INCLUDE:

                                     0393   878 ;

                                     0393   879 ;		RECALIBRATE, AND

                                     0393   880 ;		RETURN TO CENTERLINE.

                                     0393   881 ;

                                     0393   882 ; THE OFFSET REGISTER IS LOADED, THE FUNCTION IS INITIATED, AND A WAITFOR

                                     0393   883 ; INTERRUPT IS EXECUTED. WHEN THE INTERRUPT OCCURS, THE FINAL DEVICE REGISTERS

                                     0393   884 ; ARE RETURNED TO THE CALLER.

                                     0393   885 ;

                                     0393   886  

                                     0393   887 EXFNC:					;EXECUTE FUNCTION

            63            09     9A  0393   888 	MOVZBL	#F_DRVCLR!1,RM_CS1(R3)	;CLEAR DRIVE ERRORS

       0086 C5            09     E1  0396   889 	BBC	#RM_OF_V_OM,UCB$W_OFFSET(R5),10$ ;IF CLR, NO OFFSET ACTIVE

                          03         039B       

            63            0D     9A  039C   890 	MOVZBL	#F_OFFSET!1,RM_CS1(R3)	;SET DRIVE IN OFFSET MODE

                                     039F   891 10$:	DSBINT				;DISABLE INTERRUPTS

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

                          1E         03A9       

         24 A3       0086 C5     3C  03AA   893 	MOVZWL	UCB$W_OFFSET(R5),RM_OF(R3) ;SET FORMAT, INHIBIT BITS, AND OFFSET

            63       FC6B CF40   9A  03B0   894 	MOVZBL	FTAB[R0],RM_CS1(R3)	;INITIATE FUNCTION

                                     03B6   895 	WFIKPCH	RETREG,#6		;WAITFOR INTERRUPT AND KEEP CHANNEL

       0094 C5         08 A4     D0  03BD   896 	MOVL	MBA$L_SR(R4),UCB$L_DR_SR(R5) ;SAVE FINAL CONTROLLER STATUS

                                     03C3   897 	IOFORK				;CREATE FORK PROCESS

                          03     11  03C6   898 	BRB	RETREG			;

                                     03C8   899  

                                     03C8   900 ;

                                     03C8   901 ; ENABLE INTERRUPTS

                                     03C8   902 ;

                                     03C8   903  

                                     03C8   904 ENBXIT:					;

                                     03C8   905 	ENBINT				;ENABLE INTERRUPTS

                                     03CB   906  

                                     03CB   907 ;

                                     03CB   908 ; RETURN REGISTERS

                                     03CB   909 ;

                                     03CB   910  

                                     03CB   911 RETREG:					;RETURN FINAL DEVICE REGISTERS

       0098 C5         34 A3     F7  03CB   912 	CVTLW	RM_ER2(R3),UCB$W_DR_ER2(R5) ;SAVE ERROR REGISTER 2

       008C C5         38 A3     F7  03D1   913 	CVTLW	RM_EC1(R3),UCB$W_EC1(R5) ;SAVE ECC POSITION REGISTER

       008E C5         3C A3     F7  03D7   914 	CVTLW	RM_EC2(R3),UCB$W_EC2(R5) ;SAVE ECC PATTERN REGISTER

       0092 C5         10 A4     F7  03DD   915 	CVTLW	MBA$L_BCR(R4),UCB$W_BCR(R5) ;SAVE BYTE COUNT REGISTER

            50         04 A3     D0  03E3   916 	MOVL	RM_DS(R3),R0		;GET CONTENTS OF DRIVE STATUS REGISTER

            51       0094 C5     D0  03E7   917 	MOVL	UCB$L_DR_SR(R5),R1	;RETRIEVE FINAL CONTROLLER STATUS

            52         08 A3     D0  03EC   918 	MOVL	RM_ER1(R3),R2		;GET CONTENTS OF DRIVE ERROR REGISTER 1

         58 A5       0060 8F     B3  03F0   919 	BITW	#UCB$M_POWER!-		;POWER FAIL OR DEVICE TIMEOUT?

                                     03F6   920 		UCB$M_TIMOUT,UCB$W_STS(R5) ;

                          63     12  03F6   921 	BNEQ	40$			;IF NEQ YES - SPECIAL CONDITION

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

                          2A     1A  03FC   923 	BGTRU	10$			;IF GTRU YES

         77 A5            10     91  03FE   924 	CMPB	#CDF_READPRESET,UCB$B_CEX(R5) ;READIN PRESET FUNCTION?

                          24     13  0402   925 	BEQL	10$			;IF EQL YES

                                     0404   926  

                                     0404   927 ;

                                     0404   928 ; CONTROLLER RELATED FUNCTION

                                     0404   929 ;

                                     0404   930  

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  19

01              RM03 HARDWARE FUNCTION EXECUTION                                                                                 (1)



            51   000E1FFF 8F     D3  0404   931 	BITL	#MBA$M_ERROR,R1		;ANY CONTROLLER ERRORS?

                          48     13  040B   932 	BEQL	30$			;IF EQL NO

                          FBF0'  30  040D   933 	BSBW	ERL$DEVICERR		;ALLOCATE AND FILL ERROR MESSAGE BUFFER

       0084 C5            0F     E0  0410   934 	BBS	#IO$V_INHRETRY,UCB$W_FUNC(R5),50$ ;IF SET, RETRY INHIBITED

                          5D         0415       

            51   0008000B 8F     D3  0416   935 	BITL	#MBA$M_SR_ERCONF!-	;ERROR CONFIRMATION OR,

                                     041D   936 		MBA$M_SR_ISTO!-		;INTERFACE SEQUENCE TIMEOUT OR,

                                     041D   937 		MBA$M_SR_PGE!-		;PROGRAMMING ERROR OR,

                                     041D   938 		MBA$M_SR_RDTO,R1	;READ TIMEOUT?

                          54     12  041D   939 	BNEQ	50$			;IF NEQ YES - FATAL CONTROLLER ERROR

            51   00060FF4 8F     D3  041F   940 	BITL	#MBA$M_SR_DLT!-		;DATA LATE OR,

                                     0426   941 		MBA$M_SR_INVMAP!-	;INVALID MAP REGISTER OR,

                                     0426   942 		MBA$M_SR_MAPPE!-	;MAP REGISTER PARITY ERROR OR,

                                     0426   943 		MBA$M_SR_MBEXC!-	;MASSBUS EXCEPTION OR,

                                     0426   944 		MBA$M_SR_MCPE!-		;MASSBUS CONTROL PARITY ERROR OR,

                                     0426   945 		MBA$M_SR_MDPE!-		;MASSBUS DATA PARITY ERROR OR,

                                     0426   946 		MBA$M_SR_MXF!-		;MISSED TRANSFER OR,

                                     0426   947 		MBA$M_SR_NED!-		;NONEXISTENT DRIVE OR,

                                     0426   948 		MBA$M_SR_RDS!-		;READ DATA SUBSTITUTE OR,

                                     0426   949 		MBA$M_SR_WCKLWR!-	;WRITE CHECK LOWER BYTE OR,

                                     0426   950 		MBA$M_SR_WCKUPR,R1	;WRITE CHECK UPPER BYTE?

                          0D     12  0426   951 	BNEQ	20$			;IF NEQ YES - RETRIABLE CONTROLLER ERROR

                                     0428   952  

                                     0428   953 ;

                                     0428   954 ; DRIVE RELATED FUNCTION

                                     0428   955 ;

                                     0428   956  

            50            0E     E1  0428   957 10$:	BBC	#RM_DS_V_ERR,R0,30$	;IF CLR, NO DRIVE ERRORS

                          29         042B       

                          FBD1'  30  042C   958 	BSBW	ERL$DEVICERR		;ALLOCATE AND FILL ERROR MESSAGE BUFFER

       0084 C5            0F     E0  042F   959 	BBS	#IO$V_INHRETRY,UCB$W_FUNC(R5),50$ ;IF SET, RETRY INHIBITED

                          3E         0434       

            50            0C     E1  0435   960 20$:	BBC	#RM_DS_V_MOL,R0,50$	;IF CLR, MEDIUM OFFLINE

                          3A         0438       

            50            06     E1  0439   961 	BBC	#RM_DS_V_VV,R0,50$	;IF CLR, INVALID VOLUME

                          36         043C       

            52       4E17 8F     B3  043D   962 	BITW	#RM_ER1_M_AOE!-		;ADDRESS OVERFLOW OR,

                                     0442   963 		RM_ER1_M_FER!-		;FORMAT ERROR OR,

                                     0442   964 		RM_ER1_M_IAE!-		;INVALID ADDRESS OR,

                                     0442   965 		RM_ER1_M_ILF!-		;ILLEGAL FUNCTION OR,

                                     0442   966 		RM_ER1_M_ILR!-		;ILLEGAL REGISTER OR,

                                     0442   967 		RM_ER1_M_RMR!-		;REGISTER MODIFY REFUSE OR,

                                     0442   968 		RM_ER1_M_UNS!-		;DRIVE UNSAFE OR,

                                     0442   969 		RM_ER1_M_WLE,R2		;WRITE LOCK ERROR?

                          2F     12  0442   970 	BNEQ	50$			;IF NEQ YES - FATAL DRIVE ERROR

       0098 C5       A000 8F     B3  0444   971 	BITW	#RM_ER2_M_BSE!-		;BAD SECTOR ERROR OR,

                                     044B   972 		RM_ER2_M_OPE,UCB$W_DR_ER2(R5) ;OPERATOR PLUG ERROR?

                          26     12  044B   973 	BNEQ	50$			;IF NEQ YES - FATAL DRIVE ERROR

                                     044D   974  

                                     044D   975 ;

                                     044D   976 ; RETRIABLE ERROR EXIT

                                     044D   977 ;

                                     044D   978  

            7E         7C B5     98  044D   979 	CVTBL	@UCB$L_DPC(R5),-(SP)	;GET BRANCH DISPLACEMENT

         7C A5            8E     C0  0451   980 	ADDL	(SP)+,UCB$L_DPC(R5)	;CALCULATE RETURN ADDRESS - 1

                       7C A5     D6  0455   981 30$:	INCL	UCB$L_DPC(R5)		;ADJUST TO CORRECT RETURN ADDRESS

                       7C B5     17  0458   982 	JMP	@UCB$L_DPC(R5)		;RETURN TO DRIVER

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  20

01              RM03 HARDWARE FUNCTION EXECUTION                                                                                 (1)



                                     045B   983  

                                     045B   984 ;

                                     045B   985 ; SPECIAL CONDITION EXIT

                                     045B   986 ;

                                     045B   987  

         77 A5            0A     91  045B   988 40$:	CMPB	#CDF_WRITECHECK,UCB$B_CEX(R5) ;DRIVE RELATED FUNCTION?

                          0A     1A  045F   989 	BGTRU	45$			;IF GTRU YES

         77 A5            10     91  0461   990 	CMPB	#CDF_READPRESET,UCB$B_CEX(R5) ;DRIVE RELATED FUNCTION?

                          04     1B  0465   991 	BLEQU	45$			;IF LEQU YES

         04 A4            02     D0  0467   992 	MOVL	#MBA$M_CR_ABORT,MBA$L_CR(R4) ;ABORT CURRENT TRANSFER

                                     046B   993 45$:	SETIPL	UCB$B_FIPL(R5)		;LOWER IPL TO DRIVE FOK LEVEL

         04 A4            04     D0  046F   994 	MOVL	#MBA$M_CR_IE,MBA$L_CR(R4) ;ENABLE MBA INTERRUPTS

                                     0473   995  

                                     0473   996 ;

                                     0473   997 ; FATAL CONTROLLER OR DRIVE ERROR EXIT

                                     0473   998 ;

                                     0473   999  

                          FE00   31  0473  1000 50$:	BRW	FATALERR		;

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  21

01              RM03 REGISTER DUMP ROUTINE                                                                                       (1)



                                     0476  1002 	.SBTTL	RM03 REGISTER DUMP ROUTINE

                                     0476  1003 ;

                                     0476  1004 ; REGDUMP - RM03 REGISTER DUMP ROUTINE

                                     0476  1005 ;

                                     0476  1006 ; THIS ROUTINE IS CALLED TO SAVE THE CONTROLLER AND DRIVE REGISTERS IN A

                                     0476  1007 ; SPECIFIED BUFFER. IT IS CALLED FROM THE DEVICE ERROR LOGGING ROUTINE AND

                                     0476  1008 ; FROM THE DIAGNOSTIC BUFFER FILL ROUTINE.

                                     0476  1009 ;

                                     0476  1010 ; INPUTS:

                                     0476  1011 ;

                                     0476  1012 ;	R0 = ADDRESS OF REGISTER SAVE BUFFER.

                                     0476  1013 ;	R4 = ADDRESS OF ADAPTER CONFIGURATION REGISTER.

                                     0476  1014 ;	R5 = DEVICE UNIT UCB ADDRESS.

                                     0476  1015 ;

                                     0476  1016 ; OUTPUTS:

                                     0476  1017 ;

                                     0476  1018 ;	THE CONTROLLER AND DRIVE REGISTERS ARE SAVED IN THE SPECIFIED BUFFER.

                                     0476  1019 ;

                                     0476  1020  

                                     0476  1021 REGDUMP:				;RM03 REGISTER DUMP ROUTINE

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

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

            80         04 A4     D0  047C  1024 	MOVL	MBA$L_CR(R4),(R0)+	;SAVE CONTROL REGISTER

            80       0094 C5     D0  0480  1025 	MOVL	UCB$L_DR_SR(R5),(R0)+	;SAVE STATUS REGISTER

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

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

            08            09     EF  048D  1028 	EXTZV	#9,#8,-8(R0),R1		;GET FINAL MAP REGISTER NUMBER

            51         F8 A0         0490       

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

                          80     D4  0499  1030 	CLRL	(R0)+			;ASSUME NO PREVIOUS MAP REGISTER

                          51     D7  049B  1031 	DECL	R1			;CALCULATE PREVIOUS MAP REGISTER NUMBER

                          07     19  049D  1032 	BLSS	10$			;IF LSS NONE

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

            51            10     9A  04A6  1034 10$:	MOVZBL	#<RM_EC2+4>/4,R1	;SET NUMBER OF DRIVE REGISTERS TO SAVE

            52         75 A5     9A  04A9  1035 	MOVZBL	UCB$B_SLAVE+1(R5),R2	;GET DRIVE OFFSET CONSTANT

            52       0400 C442   DE  04AD  1036 	MOVAL	MBA$L_ERB(R4)[R2],R2	;GET ADDRESS OF DRIVE REGISTERS

            80            82     D0  04B3  1037 20$:	MOVL	(R2)+,(R0)+		;SAVE DRIVE REGISTER

            FA            51     F5  04B6  1038 	SOBGTR	R1,20$			;ANY MORE TO SAVE?

                                 05  04B9  1039 	RSB				;

                                     04BA  1040  

                                 05  04BA  1041 UNSOLNT:	RSB			;******TEMP*******

                                     04BB  1042  

                                     04BB  1043 	.END

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  22

SYMBOL TABLE                                                                                                                     (1)



ACP$ACCESS       ********   X   03   EMB$C_CS       = 00000020            EMB$L_CR_P1BR    00000070            

ACP$DEACCESS     ********   X   03   EMB$C_DE       = 00000001            EMB$L_CR_P1LR    00000074            

ACP$MODIFY       ********   X   03   EMB$C_DT       = 00000096            EMB$L_CR_PC      00000060            

ACP$READBLK      ********   X   03   EMB$C_LENGTH     00000004            EMB$L_CR_PCBB    00000080            

ACP$WRITEBLK     ********   X   03   EMB$C_OM       = 00000028            EMB$L_CR_PSL     00000064            

BIT...         = 0000000B            EMB$C_SS       = 00000027            EMB$L_CR_R0      00000024            

CDF_DRVCLR     = 00000004            EMB$C_SS_LENGTH  00000012            EMB$L_CR_R1      00000028            

CDF_NOP        = 00000001            EMB$C_TS       = 00000026            EMB$L_CR_R10     0000004C            

CDF_OFFSET     = 00000006            EMB$C_TS_LENGTH  00000010            EMB$L_CR_R11     00000050            

CDF_PACKACK    = 00000008            EMB$C_UI       = 00000061            EMB$L_CR_R2      0000002C            

CDF_READDATA   = 0000000C            EMB$C_VD       = 00000041            EMB$L_CR_R3      00000030            

CDF_READHEAD   = 0000000E            EMB$C_VM       = 00000040            EMB$L_CR_R4      00000034            

CDF_READPRESET = 00000010            EMB$C_WS       = 00000024            EMB$L_CR_R5      00000038            

CDF_RECAL      = 00000003            EMB$K_BC_LENGTH  0000006E            EMB$L_CR_R6      0000003C            

CDF_RELEASE    = 00000005            EMB$K_CR       = 00000025            EMB$L_CR_R7      00000040            

CDF_RETCENTER  = 00000007            EMB$K_CR_LENGTH  000000FA            EMB$L_CR_R8      00000044            

CDF_SEARCH     = 00000009            EMB$K_LENGTH     00000004            EMB$L_CR_R9      00000048            

CDF_SEARCHA    = 00000011            EMB$K_MC       = 00000002            EMB$L_CR_SBIER   000000AC            

CDF_SEEK       = 00000002            EMB$K_SBC      = 00000028            EMB$L_CR_SBIFS   000000A0            

CDF_WRITECHECK = 0000000A            EMB$K_SS_LENGTH  00000012            EMB$L_CR_SBIMT   000000A8            

CDF_WRITECHECKH= 0000000F            EMB$K_TS_LENGTH  00000010            EMB$L_CR_SBIS    000000B4            

CDF_WRITEDATA  = 0000000B            EMB$K_UBC      = 00000080            EMB$L_CR_SBISC   000000A4            

CDF_WRITEHEAD  = 0000000D            EMB$L_BC_AP      00000054            EMB$L_CR_SBITA   000000B0            

CHECKRETRY       00000172 R     03   EMB$L_BC_CODE    00000068            EMB$L_CR_SBR     00000078            

CHECKTAB         0000001C R     03   EMB$L_BC_ESP     00000014            EMB$L_CR_SCBB    00000084            

CHECKXT          00000188 R     03   EMB$L_BC_FP      00000058            EMB$L_CR_SISR    0000008C            

CRB$B_MASK       0000000E            EMB$L_BC_ISP     00000020            EMB$L_CR_SLR     0000007C            

CRB$B_TT_ATTN    00000004            EMB$L_BC_KSP     00000010            EMB$L_CR_SP      0000005C            

CRB$B_TT_EXPEC   00000005            EMB$L_BC_PC      00000060            EMB$L_CR_SSP     00000018            

CRB$B_TYPE       0000000A            EMB$L_BC_PSL     00000064            EMB$L_CR_TODR    00000098            

CRB$C_LENGTH     00000028            EMB$L_BC_R0      00000024            EMB$L_CR_USP     0000001C            

CRB$K_LENGTH     00000028            EMB$L_BC_R1      00000028            EMB$L_DV_CHAR    00000038            

CRB$L_INTD       00000014            EMB$L_BC_R10     0000004C            EMB$L_DV_ERRSEQ  0000001C            

CRB$L_LINK       00000010            EMB$L_BC_R11     00000050            EMB$L_DV_MEDIA   00000028            

CRB$L_TT_DIAL    00000000            EMB$L_BC_R2      0000002C            EMB$L_DV_OPCNT   00000030            

CRB$L_WQBL       00000004            EMB$L_BC_R3      00000030            EMB$L_DV_OWNUIC  00000034            

CRB$L_WQFL       00000000            EMB$L_BC_R4      00000034            EMB$L_DV_REGSAV  00000050            

CRB$M_BSY      = 00000001            EMB$L_BC_R5      00000038            EMB$L_DV_RQPID   00000020            

CRB$V_BSY      = 00000000            EMB$L_BC_R6      0000003C            EMB$Q_BC_TIME    00000006            

CRB$W_REFC       0000000C            EMB$L_BC_R7      00000040            EMB$Q_CR_TIME    00000006            

CRB$W_SIZE       00000008            EMB$L_BC_R8      00000044            EMB$Q_DV_ERTIME  00000014            

DATACHECK        00000142 R     03   EMB$L_BC_R9      00000048            EMB$Q_DV_IOSB    00000008            

DR$DDT           00000000 RG    03   EMB$L_BC_SP      0000005C            EMB$Q_SS_TIME    00000006            

DRVCLR           00000119 R     03   EMB$L_BC_SSP     00000018            EMB$Q_TS_TIME    00000006            

ECC              000001B3 R     03   EMB$L_BC_USP     0000001C            EMB$T_DV_NAME    00000040            

EMB$B_BC_PCB     0000006E            EMB$L_CR_ACCS    0000009C            EMB$W_BC_ENTRY   00000004            

EMB$B_BUFIND     00000002            EMB$L_CR_AP      00000054            EMB$W_BC_ERRSEQ  0000000E            

EMB$B_DV_CLASS   00000012            EMB$L_CR_ASTLVL  00000088            EMB$W_BC_PCBSZ   0000006C            

EMB$B_DV_ERTCNT  00000006            EMB$L_CR_CODE    000000F4            EMB$W_CR_ENTRY   00000004            

EMB$B_DV_ERTMAX  00000007            EMB$L_CR_ESP     00000014            EMB$W_CR_ERRSEQ  0000000E            

EMB$B_DV_SLAVE   0000003C            EMB$L_CR_FP      00000058            EMB$W_CR_PCBSZ   000000F8            

EMB$B_DV_TYPE    00000013            EMB$L_CR_ICCS    00000090            EMB$W_DV_BCNT    00000026            

EMB$B_SS_MSGTXT  00000012            EMB$L_CR_ICR     00000094            EMB$W_DV_BOFF    00000024            

EMB$B_VALID      00000003            EMB$L_CR_ISP     00000020            EMB$W_DV_DEVSTS  00000010            

EMB$C_BC_LENGTH  0000006E            EMB$L_CR_KSP     00000010            EMB$W_DV_ENTRY   00000004            

EMB$C_BE       = 00000004            EMB$L_CR_P0BR    00000068            EMB$W_DV_ERRCNT  0000002E            

EMB$C_CR_LENGTH  000000FA            EMB$L_CR_P0LR    0000006C            EMB$W_DV_FUNC    0000003E            

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  23

SYMBOL TABLE                                                                                                                     (1)



EMB$W_DV_UNIT    0000002C            IO$M_INHRETRY  = 00008000            IO$V_WRTATTN   = 00000008            

EMB$W_SIZE       00000000            IO$M_INHSEEK   = 00001000            IO$_ACCESS     = 00000032            

EMB$W_SS_ENTRY   00000004            IO$M_INTERRUPT = 00000040            IO$_ACPCONTROL = 00000038            

EMB$W_SS_ERRSEQ  0000000E            IO$M_MOUNT     = 00000200            IO$_CREATE     = 00000033            

EMB$W_SS_MSGSZ   00000010            IO$M_NOECHO    = 00000040            IO$_DEACCESS   = 00000034            

EMB$W_TS_ENTRY   00000004            IO$M_NOFILTR   = 00000200            IO$_DELETE     = 00000035            

EMB$W_TS_ERRSEQ  0000000E            IO$M_NOFORMAT  = 00000100            IO$_DIAGNOSE   = 0000001D            

ENBXIT           000003C8 R     03   IO$M_NOW       = 00000040            IO$_DRVCLR     = 00000004            

ERL$DEVICERR     ********   X   03   IO$M_NOWAIT    = 00000080            IO$_ERASETAPE  = 00000006            

EXE$IOFORK       ********   X   03   IO$M_PACKED    = 00000080            IO$_LOGICAL    = 0000002F            

EXE$ONEPARM      ********   X   03   IO$M_PURGE     = 00000800            IO$_MODIFY     = 00000036            

EXE$ZEROPARM     ********   X   03   IO$M_READATTN  = 00000080            IO$_MOUNT      = 00000039            

EXFNC            00000393 R     03   IO$M_REVERSE   = 00000040            IO$_NOP        = 00000000            

FATALERR         00000276 R     03   IO$M_SHUTDOWN  = 00000080            IO$_OFFSET     = 00000006            

FDISPATCH        000000F1 R     03   IO$M_STARTUP   = 00000040            IO$_PACKACK    = 00000008            

FEX              0000031C R     03   IO$M_SYNCH     = 00000200            IO$_PHYSICAL   = 0000001F            

FTAB             00000020 R     03   IO$M_TIMED     = 00000080            IO$_READHEAD   = 0000000E            

FUNCTABLE        00000036 R     03   IO$M_TRMNOECHO = 00001000            IO$_READLBLK   = 00000021            

FUNCXT           000002F7 R     03   IO$M_WRTATTN   = 00000100            IO$_READPBLK   = 0000000C            

F_DRVCLR       = 00000008            IO$S_FCODE     = 00000006            IO$_READPRESET = 00000019            

F_NOP          = 00000000            IO$V_ABORT     = 00000008            IO$_READPROMPT = 00000037            

F_OFFSET       = 0000000C            IO$V_ACCESS    = 00000006            IO$_READTRACKD = 00000010            

F_PACKACK      = 00000012            IO$V_ATTNAST   = 00000008            IO$_READVBLK   = 00000031            

F_READDATA     = 00000038            IO$V_BINARY    = 00000006            IO$_RECAL      = 00000003            

F_READHEAD     = 0000003A            IO$V_CANCTRLO  = 00000006            IO$_RELEASE    = 00000005            

F_READPRESET   = 00000010            IO$V_COMMOD    = 00000006            IO$_RETCENTER  = 00000007            

F_RECAL        = 00000006            IO$V_CREATE    = 00000007            IO$_REWIND     = 00000024            

F_RELEASE      = 0000000A            IO$V_CTRLCAST  = 00000008            IO$_REWINDOFF  = 00000022            

F_RETCENTER    = 0000000E            IO$V_CTRLYAST  = 00000007            IO$_SEARCH     = 00000009            

F_SEARCH       = 00000018            IO$V_CVTLOW    = 00000008            IO$_SEEK       = 00000002            

F_SEARCHA      = 00000018            IO$V_DATACHECK = 0000000E            IO$_SENSECHAR  = 0000001B            

F_SEEK         = 00000004            IO$V_DELETE    = 00000008            IO$_SENSEMODE  = 00000027            

F_WRITECHECK   = 00000028            IO$V_DMOUNT    = 0000000A            IO$_SETCHAR    = 0000001A            

F_WRITECHECKH  = 0000002A            IO$V_DSABLMBX  = 0000000A            IO$_SETMODE    = 00000023            

F_WRITEDATA    = 00000030            IO$V_ENABLMBX  = 00000007            IO$_SKIPFILE   = 00000025            

F_WRITEHEAD    = 00000032            IO$V_FCODE     = 00000000            IO$_SKIPRECORD = 00000026            

GBL...         = 00000000            IO$V_HANGUP    = 00000009            IO$_SPACEFILE  = 00000002            

IMMED            00000352 R     03   IO$V_INHERLOG  = 0000000B            IO$_SPACERECORD= 00000009            

IO$M_ABORT     = 00000100            IO$V_INHEXTGAP = 0000000C            IO$_STARTSPNDL = 00000019            

IO$M_ACCESS    = 00000040            IO$V_INHRETRY  = 0000000F            IO$_UNLOAD     = 00000001            

IO$M_ATTNAST   = 00000100            IO$V_INHSEEK   = 0000000C            IO$_VIRTUAL    = 0000003F            

IO$M_BINARY    = 00000040            IO$V_INTERRUPT = 00000006            IO$_WRITECHECK = 0000000A            

IO$M_CANCTRLO  = 00000040            IO$V_MOUNT     = 00000009            IO$_WRITECHECKH= 00000018            

IO$M_COMMOD    = 00000040            IO$V_NOECHO    = 00000006            IO$_WRITEHEAD  = 0000000D            

IO$M_CREATE    = 00000080            IO$V_NOFILTR   = 00000009            IO$_WRITELBLK  = 00000020            

IO$M_CTRLCAST  = 00000100            IO$V_NOFORMAT  = 00000008            IO$_WRITEMARK  = 0000001C            

IO$M_CTRLYAST  = 00000080            IO$V_NOW       = 00000006            IO$_WRITEOF    = 00000028            

IO$M_CVTLOW    = 00000100            IO$V_NOWAIT    = 00000007            IO$_WRITEPBLK  = 0000000B            

IO$M_DATACHECK = 00004000            IO$V_PACKED    = 00000007            IO$_WRITETRACKD= 0000000F            

IO$M_DELETE    = 00000100            IO$V_PURGE     = 0000000B            IO$_WRITEVBLK  = 00000030            

IO$M_DMOUNT    = 00000400            IO$V_READATTN  = 00000007            IOC$APPLYECC     ********   X   03   

IO$M_DSABLMBX  = 00000400            IO$V_REVERSE   = 00000006            IOC$DIAGBUFILL   ********   X   03   

IO$M_ENABLMBX  = 00000080            IO$V_SHUTDOWN  = 00000007            IOC$LOADMBAMAP   ********   X   03   

IO$M_FCODE     = 0000003F            IO$V_STARTUP   = 00000006            IOC$RELCHAN      ********   X   03   

IO$M_HANGUP    = 00000200            IO$V_SYNCH     = 00000009            IOC$REQCOM       ********   X   03   

IO$M_INHERLOG  = 00000800            IO$V_TIMED     = 00000007            IOC$REQPCHANL    ********   X   03   

IO$M_INHEXTGAP = 00001000            IO$V_TRMNOECHO = 0000000C            IOC$UPDATRANSP   ********   X   03   

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  24

SYMBOL TABLE                                                                                                                     (1)



IOC$WFIKPCH      ********   X   03   IRP$W_STS        0000002A            MBA$V_CSR_URD  = 0000001D            

IRP$B_CARCON     00000038            IRP$W_TT_PRMPT   0000003C            MBA$V_CSR_WS   = 0000001E            

IRP$B_EFN        00000022            LDCYL            0000038D R     03   MBA$V_CSR_XMFLT= 0000001A            

IRP$B_PRI        00000023            MASKH          = 00000000            MBA$V_ERB_UNIT = 00000007            

IRP$B_RMOD       0000000B            MASKL          = 00000244            MBA$V_SR_ATTN  = 00000010            

IRP$B_TYPE       0000000A            MBA$L_AS         00000410            MBA$V_SR_CRD   = 0000001D            

IRP$C_LENGTH     0000004C            MBA$L_BCR        00000010            MBA$V_SR_DLT   = 0000000B            

IRP$K_LENGTH     0000004C            MBA$L_CR         00000004            MBA$V_SR_DTABT = 0000000C            

IRP$L_AST        00000010            MBA$L_CSR        00000000            MBA$V_SR_DTBUSY= 0000001F            

IRP$L_ASTPRM     00000014            MBA$L_ERB        00000400            MBA$V_SR_DTCOMP= 0000000D            

IRP$L_DIAGBUF    00000044            MBA$L_MAP        00000800            MBA$V_SR_ERCONF= 00000003            

IRP$L_IOQBL      00000004            MBA$L_SR         00000008            MBA$V_SR_INVMAP= 00000004            

IRP$L_IOQFL      00000000            MBA$L_VAR        0000000C            MBA$V_SR_ISTO  = 00000001            

IRP$L_IOSB       00000024            MBA$M_CR_ABORT = 00000002            MBA$V_SR_MAPPE = 00000005            

IRP$L_IOST1      00000034            MBA$M_CR_IE    = 00000004            MBA$V_SR_MBEXC = 00000007            

IRP$L_IOST2      00000038            MBA$M_CR_INIT  = 00000001            MBA$V_SR_MCPE  = 00000011            

IRP$L_MEDIA      00000034            MBA$M_CSR_MT   = 08000000            MBA$V_SR_MDPE  = 00000006            

IRP$L_PID        0000000C            MBA$M_CSR_OT   = 00200000            MBA$V_SR_MXF   = 00000008            

IRP$L_SEGVBN     00000040            MBA$M_CSR_PD   = 00800000            MBA$V_SR_NED   = 00000012            

IRP$L_SEQNUM     00000048            MBA$M_CSR_PE   = 80000000            MBA$V_SR_NRCONF= 0000001E            

IRP$L_SVAPTE     0000002C            MBA$M_CSR_PU   = 00400000            MBA$V_SR_PGE   = 00000013            

IRP$L_TT_TERM    00000038            MBA$M_CSR_URD  = 20000000            MBA$V_SR_RDS   = 00000002            

IRP$L_UCB        0000001C            MBA$M_CSR_WS   = 40000000            MBA$V_SR_RDTO  = 00000000            

IRP$L_WIND       00000018            MBA$M_CSR_XMFLT= 04000000            MBA$V_SR_WCKLWR= 00000009            

IRP$M_BUFIO    = 00000001            MBA$M_ERROR    = 000E1FFF            MBA$V_SR_WCKUPR= 0000000A            

IRP$M_CHAINED  = 00000020            MBA$M_SR_ATTN  = 00010000            NOP              00000119 R     03   

IRP$M_COMPLX   = 00000008            MBA$M_SR_CRD   = 20000000            NORMAL           00000183 R     03   

IRP$M_DIAGBUF  = 00000080            MBA$M_SR_DLT   = 00000800            OFF              000001EF R     03   

IRP$M_FUNC     = 00000002            MBA$M_SR_DTABT = 00001000            OFFSET           00000119 R     03   

IRP$M_PAGIO    = 00000004            MBA$M_SR_DTBUSY= 80000000            OFFSIZ         = 00000004            

IRP$M_PHYSIO   = 00000100            MBA$M_SR_DTCOMP= 00002000            OFFTAB           00000032 R     03   

IRP$M_PRIVIO   = 00000200            MBA$M_SR_ERCONF= 00000008            PACKACK          00000119 R     03   

IRP$M_SWAPIO   = 00000040            MBA$M_SR_INVMAP= 00000010            POSIT            00000387 R     03   

IRP$M_VIRTUAL  = 00000010            MBA$M_SR_ISTO  = 00000002            PR$_ACCR       = 00000029            

IRP$S_FCODE    = 00000006            MBA$M_SR_MAPPE = 00000020            PR$_ACCS       = 00000028            

IRP$S_FMOD     = 0000000A            MBA$M_SR_MBEXC = 00000080            PR$_ASTLVL     = 00000013            

IRP$S_MODE     = 00000002            MBA$M_SR_MCPE  = 00020000            PR$_ESP        = 00000001            

IRP$V_BUFIO    = 00000000            MBA$M_SR_MDPE  = 00000040            PR$_ICCS       = 00000018            

IRP$V_CHAINED  = 00000005            MBA$M_SR_MXF   = 00000100            PR$_ICR        = 0000001A            

IRP$V_COMPLX   = 00000003            MBA$M_SR_NED   = 00040000            PR$_IPL        = 00000012            

IRP$V_DIAGBUF  = 00000007            MBA$M_SR_NRCONF= 40000000            PR$_ISP        = 00000004            

IRP$V_FCODE    = 00000000            MBA$M_SR_PGE   = 00080000            PR$_KSP        = 00000000            

IRP$V_FMOD     = 00000006            MBA$M_SR_RDS   = 00000004            PR$_MAPEN      = 00000038            

IRP$V_FUNC     = 00000001            MBA$M_SR_RDTO  = 00000001            PR$_NICR       = 00000019            

IRP$V_MODE     = 00000000            MBA$M_SR_WCKLWR= 00000200            PR$_P0BR       = 00000008            

IRP$V_PAGIO    = 00000002            MBA$M_SR_WCKUPR= 00000400            PR$_P0LR       = 00000009            

IRP$V_PHYSIO   = 00000008            MBA$S_CSR_ADCOD= 00000008            PR$_P1BR       = 0000000A            

IRP$V_PRIVIO   = 00000009            MBA$S_ERB_UNIT = 00000003            PR$_P1LR       = 0000000B            

IRP$V_SWAPIO   = 00000006            MBA$V_CR_ABORT = 00000001            PR$_PCBB       = 00000010            

IRP$V_VIRTUAL  = 00000004            MBA$V_CR_IE    = 00000002            PR$_RXCS       = 00000020            

IRP$W_ABCNT      0000003C            MBA$V_CR_INIT  = 00000000            PR$_RXDB       = 00000021            

IRP$W_BCNT       00000032            MBA$V_CSR_ADCOD= 00000000            PR$_SBIER      = 00000034            

IRP$W_BOFF       00000030            MBA$V_CSR_MT   = 0000001B            PR$_SBIFS      = 00000030            

IRP$W_CHAN       00000028            MBA$V_CSR_OT   = 00000015            PR$_SBIMT      = 00000033            

IRP$W_FUNC       00000020            MBA$V_CSR_PD   = 00000017            PR$_SBIQC      = 00000036            

IRP$W_OBCNT      0000003E            MBA$V_CSR_PE   = 0000001F            PR$_SBIS       = 00000031            

IRP$W_SIZE       00000008            MBA$V_CSR_PU   = 00000016            PR$_SBISC      = 00000032            

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  25

SYMBOL TABLE                                                                                                                     (1)



PR$_SBITA      = 00000035            RM_DS_V_PGM    = 00000009            RM_ER2_V_BSE   = 0000000F            

PR$_SBR        = 0000000C            RM_DS_V_PIP    = 0000000D            RM_ER2_V_DPE   = 00000003            

PR$_SCBB       = 00000011            RM_DS_V_VV     = 00000006            RM_ER2_V_DVC   = 00000007            

PR$_SID        = 0000003E            RM_DS_V_WRL    = 0000000B            RM_ER2_V_IVC   = 0000000C            

PR$_SIRR       = 00000014            RM_DT            00000018            RM_ER2_V_LBC   = 0000000A            

PR$_SISR       = 00000015            RM_DT_M_DRQ    = 00000800            RM_ER2_V_LSC   = 0000000B            

PR$_SLR        = 0000000D            RM_DT_S_DTN    = 00000009            RM_ER2_V_OPE   = 0000000D            

PR$_SSP        = 00000002            RM_DT_V_DRQ    = 0000000B            RM_ER2_V_SKI   = 0000000E            

PR$_TBIA       = 00000039            RM_DT_V_DTN    = 00000000            RM_LA            0000001C            

PR$_TBIS       = 0000003A            RM_EC1           00000038            RM_MR            0000000C            

PR$_TODR       = 0000001B            RM_EC1_S_POS   = 0000000D            RM_MR2           00000030            

PR$_TXCS       = 00000022            RM_EC1_V_POS   = 00000000            RM_OF            00000024            

PR$_TXDB       = 00000023            RM_EC2           0000003C            RM_OF_M_DCK    = 00000100            

PR$_USP        = 00000003            RM_EC2_S_PAT   = 0000000B            RM_OF_M_ECI    = 00000800            

PR$_WCSA       = 0000002C            RM_EC2_V_PAT   = 00000000            RM_OF_M_FMT    = 00001000            

PR$_WCSD       = 0000002D            RM_ER1           00000008            RM_OF_M_HCI    = 00000400            

READDATA         0000012A R     03   RM_ER1_M_AOE   = 00000200            RM_OF_M_OM     = 00000200            

READHEAD         0000012A R     03   RM_ER1_M_DCK   = 00008000            RM_OF_S_OFF    = 00000008            

READPRESET       00000119 R     03   RM_ER1_M_DTE   = 00001000            RM_OF_V_DCK    = 00000008            

RECAL            00000119 R     03   RM_ER1_M_ECH   = 00000040            RM_OF_V_ECI    = 0000000B            

REGDUMP          00000476 R     03   RM_ER1_M_FER   = 00000010            RM_OF_V_FMT    = 0000000C            

RELEASE          00000119 R     03   RM_ER1_M_HCE   = 00000080            RM_OF_V_HCI    = 0000000A            

RETCENTER        00000119 R     03   RM_ER1_M_HCRC  = 00000100            RM_OF_V_OFF    = 00000000            

RETREG           000003CB R     03   RM_ER1_M_IAE   = 00000400            RM_OF_V_OM     = 00000009            

RETRY            000001B0 R     03   RM_ER1_M_ILF   = 00000001            RM_SN            00000020            

RETRYERR         00000255 R     03   RM_ER1_M_ILR   = 00000002            RM_UNUSED        0000002C            

RM_AS            00000010            RM_ER1_M_OPI   = 00002000            SEARCH           00000119 R     03   

RM_CS1           00000000            RM_ER1_M_PAR   = 00000008            SEARCHA          00000368 R     03   

RM_CS1_M_GO    = 00000001            RM_ER1_M_RMR   = 00000004            SEEK             00000119 R     03   

RM_CS1_S_FCODE = 00000005            RM_ER1_M_UNS   = 00004000            SS$_CTRLERR      ********   X   03   

RM_CS1_V_FCODE = 00000001            RM_ER1_M_WCF   = 00000020            SS$_DATACHECK    ********   X   03   

RM_CS1_V_GO    = 00000000            RM_ER1_M_WLE   = 00000800            SS$_DRVERR       ********   X   03   

RM_DA            00000014            RM_ER1_V_AOE   = 00000009            SS$_FORMAT       ********   X   03   

RM_DA_S_SA     = 00000005            RM_ER1_V_DCK   = 0000000F            SS$_IVADDR       ********   X   03   

RM_DA_S_TA     = 00000005            RM_ER1_V_DTE   = 0000000C            SS$_MEDOFL       ********   X   03   

RM_DA_V_SA     = 00000000            RM_ER1_V_ECH   = 00000006            SS$_NONEXDRV     ********   X   03   

RM_DA_V_TA     = 00000008            RM_ER1_V_FER   = 00000004            SS$_NORMAL       ********   X   03   

RM_DC            00000028            RM_ER1_V_HCE   = 00000007            SS$_OPINCOMPL    ********   X   03   

RM_DS            00000004            RM_ER1_V_HCRC  = 00000008            SS$_PARITY       ********   X   03   

RM_DS_M_ATA    = 00008000            RM_ER1_V_IAE   = 0000000A            SS$_UNSAFE       ********   X   03   

RM_DS_M_DPR    = 00000100            RM_ER1_V_ILF   = 00000000            SS$_VOLINV       ********   X   03   

RM_DS_M_DRY    = 00000080            RM_ER1_V_ILR   = 00000001            SS$_WASECC       ********   X   03   

RM_DS_M_ERR    = 00004000            RM_ER1_V_OPI   = 0000000D            SS$_WRITLCK      ********   X   03   

RM_DS_M_LST    = 00000400            RM_ER1_V_PAR   = 00000003            STARTIO          0000009A R     03   

RM_DS_M_MOL    = 00001000            RM_ER1_V_RMR   = 00000002            TRANNOCH         0000013A R     03   

RM_DS_M_OM     = 00000001            RM_ER1_V_UNS   = 0000000E            TRANRQCH         00000137 R     03   

RM_DS_M_PGM    = 00000200            RM_ER1_V_WCF   = 00000005            TRANXT           0000018B R     03   

RM_DS_M_PIP    = 00002000            RM_ER1_V_WLE   = 0000000B            UCB$B_AMOD       00000053            

RM_DS_M_VV     = 00000040            RM_ER2           00000034            UCB$B_CEX        00000077            

RM_DS_M_WRL    = 00000800            RM_ER2_M_BSE   = 00008000            UCB$B_CM1        0000004A            

RM_DS_V_ATA    = 0000000F            RM_ER2_M_DPE   = 00000008            UCB$B_CM2        0000004B            

RM_DS_V_DPR    = 00000008            RM_ER2_M_DVC   = 00000080            UCB$B_DEVCLASS   00000038            

RM_DS_V_DRY    = 00000007            RM_ER2_M_IVC   = 00001000            UCB$B_DEVTYPE    00000039            

RM_DS_V_ERR    = 0000000E            RM_ER2_M_LBC   = 00000400            UCB$B_DIPL       00000052            

RM_DS_V_LST    = 0000000A            RM_ER2_M_LSC   = 00000800            UCB$B_DX_SCTCNT  FFFFFFFE            

RM_DS_V_MOL    = 0000000C            RM_ER2_M_OPE   = 00002000            UCB$B_DX_SPARE   FFFFFFFF            

RM_DS_V_OM     = 00000000            RM_ER2_M_SKI   = 00004000            UCB$B_ERTCNT     00000070            

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  26

SYMBOL TABLE                                                                                                                     (1)



UCB$B_ERTMAX     00000071            UCB$M_BSY      = 00000100            UCB$V_TIMOUT   = 00000006            

UCB$B_ESCAPE     0000004B            UCB$M_CANCEL   = 00000008            UCB$V_TT_NOTIF = 00000002            

UCB$B_FEX        00000076            UCB$M_DEADMO   = 00000400            UCB$V_TT_TIMO  = 00000001            

UCB$B_FIPL       0000000B            UCB$M_DELMBX   = 00000002            UCB$V_VALID    = 0000000B            

UCB$B_LOCSRV     0000003C            UCB$M_DIAGBUF  = 00000002            UCB$W_BCNT       0000006E            

UCB$B_OFFNDX     00000090            UCB$M_DX_WRITE = 00000008            UCB$W_BCR        00000092            

UCB$B_OFFRTC     00000091            UCB$M_ECC      = 00000001            UCB$W_BOFF       0000006C            

UCB$B_REMSRV     0000003D            UCB$M_ERLOGIP  = 00000004            UCB$W_BUFQUO     00000018            

UCB$B_SECTORS    0000003C            UCB$M_INT      = 00000002            UCB$W_BYTESTOGO  0000003E            

UCB$B_SLAVE      00000074            UCB$M_INTTYPE  = 00000080            UCB$W_CHARGE     0000004A            

UCB$B_SPR        00000075            UCB$M_JOB      = 00000001            UCB$W_CYLINDERS  0000003E            

UCB$B_STATE      00000052            UCB$M_MOUNTING = 00000200            UCB$W_DA         00000088            

UCB$B_TRACKS     0000003D            UCB$M_NOCNVRT  = 00000004            UCB$W_DC         0000008A            

UCB$B_TYPE       0000000A            UCB$M_NT_BFROVF= 00000004            UCB$W_DEVBUFSIZ  0000003A            

UCB$B_VERTSZ     0000003F            UCB$M_NT_BREAK = 00000020            UCB$W_DEVSTS     0000005A            

UCB$C_LENGTH     00000074            UCB$M_NT_NAME  = 00000010            UCB$W_DR_ER2     00000098            

UCB$C_LOGLNK   = 00000001            UCB$M_NT_NONTR = 00000040            UCB$W_DSTADDR    00000018            

UCB$K_LENGTH     00000074            UCB$M_NT_SDP   = 00000008            UCB$W_DX_BCR     FFFFFFFC            

UCB$L_AMB        00000054            UCB$M_ONLINE   = 00000010            UCB$W_EC1        0000008C            

UCB$L_ASTQBL     00000010            UCB$M_POWER    = 00000020            UCB$W_EC2        0000008E            

UCB$L_ASTQFL     0000000C            UCB$M_PRMMBX   = 00000001            UCB$W_ERRCNT     00000072            

UCB$L_CPID       0000005C            UCB$M_TIM      = 00000001            UCB$W_FUNC       00000084            

UCB$L_CRB        00000020            UCB$M_TIMOUT   = 00000040            UCB$W_MB_SEED    FFFFFFFC            

UCB$L_DDB        00000024            UCB$M_TT_NOTIF = 00000004            UCB$W_MSGCNT     00000016            

UCB$L_DEVCHAR    00000034            UCB$M_TT_TIMO  = 00000002            UCB$W_MSGMAX     00000014            

UCB$L_DEVDEPEND  0000003C            UCB$M_VALID    = 00000800            UCB$W_NT_CHAN    0000007C            

UCB$L_DPC        0000007C            UCB$S_LNKPRI   = 00000002            UCB$W_OFFSET     00000086            

UCB$L_DR_SR      00000094            UCB$S_LTYPE    = 00000002            UCB$W_REFC       00000050            

UCB$L_DUETIM     0000005C            UCB$T_PARTNER    0000000C            UCB$W_SIZE       00000008            

UCB$L_DX_BFPNT   FFFFFFF4            UCB$V_BACKP    = 00000005            UCB$W_SRCADDR    0000001A            

UCB$L_DX_BUF     FFFFFFF0            UCB$V_BSY      = 00000008            UCB$W_STS        00000058            

UCB$L_DX_RXDB    FFFFFFF8            UCB$V_CANCEL   = 00000003            UCB$W_UNIT       00000048            

UCB$L_EMB        00000078            UCB$V_DEADMO   = 0000000A            UCB$W_VPROT      0000001A            

UCB$L_FIRST      00000014            UCB$V_DELMBX   = 00000001            UNSOLNT          000004BA R     03   

UCB$L_FPC        0000000C            UCB$V_DIAGBUF  = 00000001            VEC$B_DATAPATH   00000013            

UCB$L_FQBL       00000004            UCB$V_DX_WRITE = 00000003            VEC$B_NUMREG     00000012            

UCB$L_FQFL       00000000            UCB$V_ECC      = 00000000            VEC$L_ADP        00000014            

UCB$L_FR3        00000010            UCB$V_ERLOGIP  = 00000002            VEC$L_IDB        00000008            

UCB$L_FR4        00000014            UCB$V_INT      = 00000001            VEC$L_INITIAL    0000000C            

UCB$L_IOQBL      00000044            UCB$V_INTTYPE  = 00000007            VEC$L_TT_DISC    00000020            

UCB$L_IOQFL      00000040            UCB$V_JOB      = 00000000            VEC$L_TT_ILINE   00000018            

UCB$L_IRP        0000004C            UCB$V_LNKPRI   = 00000006            VEC$L_TT_STRTIO  0000001C            

UCB$L_LINK       0000002C            UCB$V_LTYPE    = 00000000            VEC$M_MAPLOCK  = 00008000            

UCB$L_LOGADR     00000064            UCB$V_MOUNTING = 00000009            VEC$M_PATHLOCK = 00000080            

UCB$L_MAXBLOCK   00000080            UCB$V_MSGACK   = 00000004            VEC$Q_DISPATCH   00000000            

UCB$L_MEDIA      00000088            UCB$V_MSGFLO   = 00000003            VEC$S_DATAPATH = 00000007            

UCB$L_NT_DATSSB  00000074            UCB$V_NOCNVRT  = 00000002            VEC$S_MAPREG   = 0000000F            

UCB$L_NT_INTSSB  00000078            UCB$V_NT_BFROVF= 00000002            VEC$V_DATAPATH = 00000000            

UCB$L_OPCNT      00000060            UCB$V_NT_BREAK = 00000005            VEC$V_MAPLOCK  = 0000000F            

UCB$L_OWNUIC     0000001C            UCB$V_NT_NAME  = 00000004            VEC$V_MAPREG   = 00000000            

UCB$L_PID        00000028            UCB$V_NT_NONTR = 00000006            VEC$V_PATHLOCK = 00000007            

UCB$L_RQBL       00000004            UCB$V_NT_SDP   = 00000003            VEC$W_MAPREG     00000010            

UCB$L_RQFL       00000000            UCB$V_ONLINE   = 00000004            WRITECHECK       0000011F R     03   

UCB$L_SVAPTE     00000068            UCB$V_POWER    = 00000005            WRITECHECKH      0000011F R     03   

UCB$L_SVPN       00000064            UCB$V_PRMMBX   = 00000000            WRITEDATA        00000125 R     03   

UCB$L_TTCHAR     0000003C            UCB$V_SEGFLO   = 00000002            WRITEHEAD        00000125 R     03   

UCB$L_VCB        00000030            UCB$V_TIM      = 00000000            XFER             0000037C R     03   

DRDRIVER        - RM03 DISK DRIVER                               21-AUG-1978 23:52:24   VAX-11 MACRO X0.3-11               Page  27

PROGRAM SECTION SYNOPSIS                                                                                                         (1)







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$            FFFFFFFF      02     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  

WIONONPAGED      000004BB      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

5788. BYTES LEFT IN FREE MEMORY POOL.

52. BYTES OF RECLAIMED MEMORY.

OBJ$:DRDRIVER,LIS$:DRDRIVER/-SP=LIB$:LIB/ML,SRC$:DRDRIVER

20 MLB DIR RDS - 1084 GETS TO DEFINE 29 MACROS. 98 INTER. FILE WRITES. 

