DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)     325  RK611-RK06/RK07 FUNCTION DECISION TABLE

   (1)     431  TEST ALIGNMENT OF BUFFER

   (1)     467  START I/O OPERATION

   (1)     817  RK611-RK06/RK07 HARDWARE FUNCTION EXECUTION

   (1)    1148  RK611-RK06/RK07 CLASSIFY DRIVE TYPE AND SET PAR

   (1)    1179  RK611-RK06/RK07 REGISTER DUMP ROUTINE

   (1)    1214  RK06/RK07 DISK DRIVE INITIALIZATION

   (1)    1267  RK611-RK06/RK07 UNSOLICITED INTERRUPT ROUTINE

   (1)    1295  WAIT FOR CONTROLLER READY

   (1)    1325  RK611 DISK CONTROLLER INTERRUPT DISPATCHER

   (1)    1433  RK611 DISK CONTROLLER INITIALIZATION

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page   1

01                                                                                                                               (1)



                                     0000     1 	.TITLE	DMDRIVER - RK611-RK06/RK07 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 12-MAR-77

                                     0000    24 ;

                                     0000    25 ; RK611-RK06/RK07 DISK DRIVER

                                     0000    26 ;

                                     0000    27 ; MACRO LIBRARY CALLS

                                     0000    28 ;

                                     0000    29  

                                     0000    30 	$ADPDEF				;DEFINE ADP OFFSETS

                                     0000    31 	$CRBDEF				;DEFINE CRB OFFSETS

                                     0000    32 	$DDBDEF				;DEFINE DDB OFFSETS

                                     0000    33 	$DPTDEF				;DEFINE DPT OFFSETS

                                     0000    34 	$EMBDEF				;DEFINE EMB OFFSETS

                                     0000    35 	$IDBDEF				;DEFINE IDB OFFSETS

                                     0000    36 	$IODEF				;DEFINE I/O FUNCTION CODES

                                     0000    37 	$IRPDEF				;DEFINE IRP OFFSETS

                                     0000    38 	$UBADEF				;DEFINE UBA REGISTER OFFSETS

                                     0000    39 	$UCBDEF				;DEFINE UCB OFFSETS

                                     0000    40 	$VECDEF				;DEFINE INTERRUPT DISPATCH VECTOR OFFSETS

                                     0000    41  

                                     0000    42 ;

                                     0000    43 ; LOCAL MACROS

                                     0000    44 ;

                                     0000    45 ; EXECUTE FUNCTION AND BRANCH ON RETRIABLE ERROR CONDITION

                                     0000    46 ;

                                     0000    47  

                                     0000    48 	.MACRO	EXFUNCH BDST,FCODE

                                     0000    49 		.IF NB	FCODE

                                     0000    50 		MOVZBL	#CD'FCODE,R3

                                     0000    51 		.ENDC

                                     0000    52 		BSBW	FEXH

                                     0000    53 		.BYTE	BDST-.-1

                                     0000    54 	.ENDM

                                     0000    55  

                                     0000    56 	.MACRO	EXFUNCL BDST,FCODE

                                     0000    57 		.IF NB	FCODE

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page   2

01                                                                                                                               (1)



                                     0000    58 		MOVZBL	#CD'FCODE,R3

                                     0000    59 		.ENDC

                                     0000    60 		BSBW	FEXL

                                     0000    61 		.BYTE	BDST-.-1

                                     0000    62 	.ENDM

                                     0000    63  

                                     0000    64 ;

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

                                     0000    66 ;

                                     0000    67  

                                     0000    68 	.MACRO	GENF FCODE

                                     0000    69 		CD'FCODE=.-FTAB/2

                                     0000    70 		.WORD	FCODE!RK_CS1_M_GO!RK_CS1_M_IE

                                     0000    71 	.ENDM

                                     0000    72  

                                     0000    73 ;

                                     0000    74 ; LOCAL SYMBOLS

                                     0000    75 ;

                                     0000    76 ; RK611-RK06/RK07 CONTROLLER REGISTER OFFSETS

                                     0000    77 ;

                                     0000    78  

                                     0000    79 	$DEFINI	RK

                                     0000    80  

                                     0000    81 $DEF	RK_CS1		.BLKW	1	;CONTROL STATUS REGISTER 1

                                     0002    82 	_VIELD	RK_CS1,0,<-		; CONTROL STATUS REGISTER 1 FIELD DEFINITIONS

                                     0002    83 		<GO,,M>,-		; GO BIT

                                     0002    84 		<FCODE,4>,-		; FUNCTION CODE

                                     0002    85 		<DPPE,,M>,-		; DATA PATH PURGE ERROR

                                     0002    86 		<IE,,M>,-		; INTERRUPT ENABLE

                                     0002    87 		<RDY,,M>,-		; CONTROLLER READY

                                     0002    88 		<MEX,2>,-		; MEMORY EXTENSION BITS

                                     0002    89 		<CDT,,M>,-		; CONTROLLER DRIVE TYPE

                                     0002    90 		<CTO,,M>,-		; CONTROLLER TIME OUT

                                     0002    91 		<CFMT,,M>,-		; CONTROLLER FORMAT ERROR

                                     0002    92 		<SPAR,,M>,-		; SERIAL BUS PARITY ERROR

                                     0002    93 		<DI,,M>,-		; DRIVE INTERRUPT

                                     0002    94 		<CERR,,M>-		; CONTROLLER ERROR

                                     0002    95 	>				;

                                     0002    96 $DEF	RK_WC		.BLKW	1	;WORD COUNT REGISTER

                                     0004    97 $DEF	RK_BA		.BLKW	1	;BUFFER ADDRESS REGISTER

                                     0006    98 $DEF	RK_DA		.BLKW	1	;DESIRED SECTOR/TRACK ADDRESS REGISTER

                                     0008    99 	_VIELD	RK_DA,0,<-		; DESIRED ADDRESS FIELD DEFINITIONS

                                     0008   100 		<SA,5>,-		; DESIRED SECTOR ADDRESS

                                     0008   101 		<,3>,-			; RESERVED BITS

                                     0008   102 		<TA,3>-			; DESIRED TRACK ADDRESS

                                     0008   103 	>				;

                                     0008   104 $DEF	RK_CS2		.BLKW	1	;CONTROL STATUS REGISTER 2

                                     000A   105 	_VIELD	RK_CS2,0,<-		; CONTROL STATUS REGISTER 2 FIELD DEFINITIONS

                                     000A   106 		<DS,3>,-		; DRIVE SELECT

                                     000A   107 		<RLS,,M>,-		; RELEASE DRIVE

                                     000A   108 		<BAI,,M>,-		; BUFFER ADDRESS INCREMENT INHIBIT

                                     000A   109 		<SCLR,,M>,-		; SUBSYSTEM CLEAR

                                     000A   110 		<IR,,M>,-		; INPUT READY

                                     000A   111 		<OR,,M>,-		; OUTPUT READY

                                     000A   112 		<UFE,,M>,-		; UNIT FIELD ERROR

                                     000A   113 		<MDS,,M>,-		; MULTIPLE DRIVE SELECT

                                     000A   114 		<PGE,,M>,-		; PROGRAMMING ERROR

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page   3

01                                                                                                                               (1)



                                     000A   115 		<NEM,,M>,-		; NONEXISTENT MEMORY

                                     000A   116 		<NED,,M>,-		; NONEXISTENT DRIVE

                                     000A   117 		<UPE,,M>,-		; UNIBUS PARITY ERROR

                                     000A   118 		<WCE,,M>,-		; WRITE CHECK ERROR

                                     000A   119 		<DLT,,M>-		; DATA LATE ERROR

                                     000A   120 	>				;

                                     000A   121 $DEF	RK_DS		.BLKW	1	;DRIVE STATUS REGISTER

                                     000C   122 	_VIELD	RK_DS,0,<-		; DRIVE STATUS REGISTER BIT DEFINTIONS

                                     000C   123 		<DRA,,M>,-		; DRIVE AVAILABLE

                                     000C   124 		<,1>,-			; RESERVED BIT

                                     000C   125 		<OFST,,M>,-		; DRIVE OFFSET

                                     000C   126 		<ACLO,,M>,-		; DRIVE AC LOW

                                     000C   127 		<DCLO,,M>,-		; DRIVE DC LOW

                                     000C   128 		<DROT,,M>,-		; DRIVE OFF TRACK

                                     000C   129 		<VV,,M>,-		; VOLUME VALID

                                     000C   130 		<DRDY,,M>,-		; DRIVE READY

                                     000C   131 		<DDT,,M>,-		; DRIVE DRIVE TYPE

                                     000C   132 		<,2>,-			; RESERVED BITS

                                     000C   133 		<WRL,,M>,-		; DRIVE WRITE LOCKED

                                     000C   134 		<,1>,-			; RESERVED BIT

                                     000C   135 		<PIP,,M>,-		; POSITIONING IN PROGRESS

                                     000C   136 		<DSC,,M>,-		; DRIVE STATUS CHANGE

                                     000C   137 		<SVAL,,M>-		; DRIVE STATUS VALID

                                     000C   138 	>				;

                                     000C   139 $DEF	RK_ER		.BLKW	1	;ERROR REGISTER

                                     000E   140 	_VIELD	RK_ER,0,<-		; ERROR REGISTER BIT DEFINITIONS

                                     000E   141 		<ILF,,M>,-		; ILLEGAL FUNCTION

                                     000E   142 		<SKI,,M>,-		; SEEK INCOMPLETE

                                     000E   143 		<NXF,,M>,-		; NONEXECUTABLE FUNCTION

                                     000E   144 		<DRPAR,,M>,-		; DRIVE PARITY ERROR

                                     000E   145 		<FMTE,,M>,-		; FORMAT ERROR

                                     000E   146 		<DTYE,,M>,-		; DRIVE TYPE ERROR

                                     000E   147 		<ECH,,M>,-		; ECC HARD ERROR

                                     000E   148 		<BSE,,M>,-		; BAD SECTOR ERROR

                                     000E   149 		<HVRC,,M>,-		; HEADER VRC ERROR

                                     000E   150 		<COE,,M>,-		; CYLINDER OVERFLOW ERROR

                                     000E   151 		<IDAE,,M>,-		; INVALID DISK ADDRESS ERROR

                                     000E   152 		<WLE,,M>,-		; WRITE LOCK ERROR

                                     000E   153 		<DTE,,M>,-		; DRIVE TIMING ERROR

                                     000E   154 		<OPI,,M>,-		; OPERATION INCOMPLETE

                                     000E   155 		<UNS,,M>,-		; DRIVE UNSAFE

                                     000E   156 		<DCK,,M>-		; DATA CHECK ERROR

                                     000E   157 	>				;

                                     000E   158 $DEF	RK_AS		.BLKW	1	;ATTENTION SUMMARY/OFFSET REGISTER

                                     0010   159 	_VIELD	RK_AS,0,<-		; ATTENSION SUMMARY/OFFSET REGISTER FIELDS

                                     0010   160 		<OF,7>,-		; DRIVE OFFSET

                                     0010   161 		<,1>,-			; RESERVED BIT

                                     0010   162 		<ATTN,8,M>-		; DRIVE ATTENTION SUMARY

                                     0010   163 	>				;

                                     0010   164 $DEF	RK_DC		.BLKW	1	;DESIRED CYLINDER ADDRESS

                                     0012   165 $DEF	RK_SPR		.BLKW	1	;UNUSED REGISTER

                                     0014   166 $DEF	RK_DB		.BLKW	1	;DATA BUFFER REGISTER

                                     0016   167 $DEF	RK_MR1		.BLKW	1	;MAINTENANCE REGISTER 1

                                     0018   168 	_VIELD	RK_MR1,0,<<MS,3>>	; MAINTENANCE REGISTER 1 FIELD DEFINITION

                                     0018   169 $DEF	RK_EC1		.BLKW	1	;ECC POSITION REGISTER

                                     001A   170 	_VIELD	RK_EC1,0,<<EPS,13>>	; ECC POSITION FIELD

                                     001A   171 $DEF	RK_EC2		.BLKW	1	;ECC PATTERN REGISTER

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page   4

01                                                                                                                               (1)



                                     001C   172 	_VIELD	RK_EC2,0,<<EPT,11>>	; ECC PATTERN FIELD

                                     001C   173 $DEF	RK_MR2		.BLKW	1	;MAINTENANCE REGISTER 2

                                     001E   174 $DEF	RK_MR3		.BLKW	1	;MAINTENANCE REGISTER 3

                                     0020   175  

                                     0020   176 	$DEFEND	RK

                                     0000   177  

                                     0000   178 ;

                                     0000   179 ; SOFTWARE STATUS IN UPPER BYTE OF OFFSET WORD

                                     0000   180 ;

                                     0000   181  

                                     0000   182 	_VIELD	DM,0,<-			;SOFTWARE STATUS BIT DEFINTIONS

                                     0000   183 		<ECI,,M>,-		; ECC INHIBIT

                                     0000   184 		<DCK,,M>-		; DATACHECK IN PROGRESS

                                     0000   185 	>				;

                                     0000   186  

                                     0000   187 ;

                                     0000   188 ; DEFINE DEVICE DEPENDENT UNIT CONTROL BLOCK  OFFSETS

                                     0000   189 ;

                                     0000   190  

                                     0000   191 	$DEFINI	UCB

                                     0000   192  

                           00000098  0000   193 .=UCB$W_BCR+2				;

                                     0098   194  

                                     0098   195 $DEF	UCB$W_DM_DTYP	.BLKW	1	;DRIVE TYPE MASK

                                     009A   196 $DEF	UCB$W_DM_CS1	.BLKW	1	;CONTROL STATUS REGISTER 1

                                     009C   197 $DEF	UCB$W_DM_WC	.BLKW	1	;WORK COUNT REGISTER

                                     009E   198 $DEF	UCB$W_DM_BA	.BLKW	1	;BUFFER ADDRESS REGISTER

                                     00A0   199 $DEF	UCB$W_DM_DA	.BLKW	1	;DISK ADDRESS REGISTER

                                     00A2   200 $DEF	UCB$W_DM_CS2	.BLKW	1	;CONTROL STATUS REGISTER 2

                                     00A4   201 $DEF	UCB$W_DM_DS	.BLKW	1	;DRIVE STATUS REGISTER

                                     00A6   202 $DEF	UCB$W_DM_ER	.BLKW	1	;ERROR REGISTER

                                     00A8   203 $DEF	UCB$W_DM_AS	.BLKW	1	;ATTENTION SUMMARY REGISTER

                                     00AA   204 $DEF	UCB$W_DM_DC	.BLKW	1	;DESIRED CYLINDER REGISTER

                                     00AC   205 $DEF	UCB$W_DM_MR1	.BLKW	1	;MAINTENANCE REGISTER 1

                                     00AE   206 $DEF	UCB$W_DM_MR2	.BLKW	1	;MAINTENANCE REGISTER 2

                                     00B0   207 $DEF	UCB$W_DM_MR3	.BLKW	1	;MAINTENANCE REGISTER 3

                                     00B2   208 $DEF	UCB$W_DM_DPN	.BLKW	1	;DATAPATH NUMBER

                                     00B4   209 $DEF	UCB$L_DM_DPR	.BLKL	1	;DATAPATH REGISTER

                                     00B8   210 $DEF	UCB$L_DM_FMPR	.BLKL	1	;FINAL MAP REGISTER

                                     00BC   211 $DEF	UCB$L_DM_PMPR	.BLKL	1	;PREVIOUS MAP REGISTER

                                     00C0   212 $DEF	UCB$W_DM_DB	.BLKW	3	;DATA BUFFER REGISTER

                           000000C8  00C6   213 			.BLKW	1	;SPARE USED WORD

                                     00C8   214  

                                     00C8   215 	$DEFEND	UCB

                                     0000   216  

                                     0000   217 ;

                                     0000   218 ; HARDWARE FUNCTION CODES

                                     0000   219 ;

                                     0000   220  

                           00000000  0000   221 F_NOP=0*2				;NO OPERATION (SELECT DRIVE)

                           00000006  0000   222 F_UNLOAD=3*2				;UNLOAD DRIVE

                           0000000E  0000   223 F_SEEK=7*2				;SEEK CYLINDER

                           0000000A  0000   224 F_RECAL=5*2				;RECALIBRATE

                           00000004  0000   225 F_DRVCLR=2*2				;DRIVE CLEAR

                           00000000  0000   226 F_RELEASE=0*2				;RELEASE DRIVE

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

                           0000000C  0000   228 F_RETCENTER=6*2				;RETURN TO CENTERLINE

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page   5

01                                                                                                                               (1)



                           00000002  0000   229 F_PACKACK=1*2				;PACK ACKNOWLEDGE

                           00000008  0000   230 F_STARTSPNDL=4*2			;START SPINDLE

                           00000018  0000   231 F_WRITECHECK=12*2			;WRITE CHECK DATA

                           00000012  0000   232 F_WRITEDATA=9*2				;WRITE DATA

                           00000016  0000   233 F_WRITEHEAD=11*2			;WRITE HEADER AND DATA

                           00000010  0000   234 F_READDATA=8*2				;READ DATA

                           00000014  0000   235 F_READHEAD=10*2				;READ HEADER AND DATA

                                     0000   236  

                                     0000   237 ;

                                     0000   238 ; LOCAL DATA

                                     0000   239 ;

                                     0000   240 ; DRIVER PROLOGUE TABLE

                                     0000   241 ;

                                     0000   242  

                                     0000   243 	DPTAB	-			;DEFINE DRIVER PROLOGUE TABLE

                                     0000   244 		END=DM_END,-		;END OF DRIVER

                                     0000   245 		ADAPTER=UBA,-		;ADAPTER TYPE

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

                                     0000   247 		UCBSIZE=200,-		;UCB SIZE

                                     0000   248 		NAME=DMDRIVER		;DRIVER NAME

                                     001F   249 	DPT_STORE INIT			;CONTROL BLOCK INIT VALUES

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

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

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

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

                                     002E   254 		<DEV$M_FOD-		; FILES ORIENTED

                                     002E   255 		!DEV$M_DIR-		; DIRECTORY STRUCTURED

                                     002E   256 		!DEV$M_AVL-		; AVAILABLE

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

                                     002E   258 		!DEV$M_SHR-		; SHAREABLE

                                     002E   259 		!DEV$M_IDV-		; INPUT DEVICE

                                     002E   260 		!DEV$M_ODV-		; OUTPUT DEVICE

                                     002E   261 		!DEV$M_RND>		; RANDOM ACCESS

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

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

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

                                     0042   265 	DPT_STORE UCB,UCB$B_TRACKS,B,3	;NUMBER OF TRACKS PER CYLINDER

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

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

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

                                     0052   269 	DPT_STORE REINIT		;CONTROL BLOCK RE-INIT VALUES

                                     0052   270 	DPT_STORE CRB,CRB$L_INTD+4,D,DM$INT ;INTERRUPT SERVICE ROUTINE ADDRESS

                                     0057   271 	DPT_STORE CRB,CRB$L_INTD+VEC$L_INITIAL,D,DM_RK611_INIT ;CONTROLLER INIT

                                     005C   272 	DPT_STORE CRB,CRB$L_INTD+VEC$L_UNITINIT,D,DM_RK0X_INIT ;UNIT INIT

                                     0061   273 	DPT_STORE DDB,DDB$L_DDT,D,DM$DDT ;DDT ADDRESS

                                     0066   274 	DPT_STORE END			;

                                     0000   275  

                                     0000   276 ;

                                     0000   277 ; DRIVER DISPATCH TABLE

                                     0000   278 ;

                                     0000   279  

                                     0000   280 	DDTAB	DM,-			;DRIVER DISPATCH TABLE

                                     0000   281 		DM_STARTIO,-		;START I/O OPERATION

                                     0000   282 		DM_UNSOLNT,-		;UNSOLICITED INTERRUPT

                                     0000   283 		DM_FUNCTABLE,-		;FUNCTION DECISION TABLE

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

                                     0000   285 		DM_REGDUMP,-		;REGISTER DUMP ROUTINE

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page   6

01                                                                                                                               (1)



                                     0000   286 		<<<RK_MR3+2-4+8>*2>+<<3+5+1>*4>>,- ;SIZE OF DIAGNOSTIC BUFFER

                                     0000   287 		<<<RK_MR3+2-4+8>*2>+<1*4>+<EMB$L_DV_REGSAV>> ;SIZE OF ERROR BUFFER

                                     0018   288  

                                     0018   289 ;

                                     0018   290 ; HARDWARE I/O FUNCTION CODE TABLE

                                     0018   291 ;

                                     0018   292  

                                     0018   293 FTAB:					;

                                     0018   294 	GENF	F_NOP			;NO OPERATION

                                     001A   295 	GENF	F_UNLOAD		;UNLOAD VOLUME

                                     001C   296 	GENF	F_SEEK			;SEEK CYLINDER

                                     001E   297 	GENF	F_RECAL			;RECALIBRATE

                                     0020   298 	GENF	F_DRVCLR		;DRIVE CLEAR

                                     0022   299 	GENF	F_RELEASE		;RELEASE PORT

                                     0024   300 	GENF	F_OFFSET		;OFFSET HEADS

                                     0026   301 	GENF	F_RETCENTER		;RETURN HEADS TO CENTERLINE

                                     0028   302 	GENF	F_PACKACK		;PACK ACKNOWLEDGE

                                     002A   303 	GENF	F_STARTSPNDL		;START SPINDLE

                                     002C   304 	GENF	F_WRITECHECK		;WRITE CHECK

                                     002E   305 	GENF	F_WRITEDATA		;WRITE DATA

                                     0030   306 	GENF	F_READDATA		;READ DATA

                                     0032   307 	GENF	F_WRITEHEAD		;WRITE HEADERS

                                     0034   308 	GENF	F_READHEAD		;READ HEADER

                                     0036   309  

                                     0036   310 ;

                                     0036   311 ; OFFSET TABLE FOR RK611-RK06/RK07

                                     0036   312 ;

                                     0036   313  

                                     0036   314 OFFTAB:					;

                                 00  0036   315 	.BYTE	0			;RETURN TO CENTERLINE

                                 10  0037   316 	.BYTE	^X10			;+400

                                 90  0038   317 	.BYTE	^X90			;-400

                                 20  0039   318 	.BYTE	^X20			;+800

                                 A0  003A   319 	.BYTE	^XA0			;-800

                                 30  003B   320 	.BYTE	^X30			;+1200

                                 B0  003C   321 	.BYTE	^XB0			;-1200

                                 00  003D   322 	.BYTE	0			;RETURN TO CENTERLINE

                           00000008  003E   323 OFFSIZ=.-OFFTAB				;SIZE OF OFFSET TABLE

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page   7

01              RK611-RK06/RK07 FUNCTION DECISION TABLE                                                                          (1)



                                     003E   325 	.SBTTL	RK611-RK06/RK07 FUNCTION DECISION TABLE

                                     003E   326 ;+

                                     003E   327 ; RK611-RK06/RK07 FUNCTION DECISION TABLE

                                     003E   328 ;-

                                     003E   329  

                                     003E   330 DM_FUNCTABLE:				;FUNCTION DECISION TABLE

                                     003E   331 	FUNCTAB	,-			;LEGAL FUNCTIONS

                                     003E   332 		<NOP,-			;NO OPERATION

                                     003E   333 		 UNLOAD,-		;UNLOAD VOLUME

                                     003E   334 		 SEEK,-			;SEEK CYLINDER

                                     003E   335 		 RECAL,-		;RECALIBRATE

                                     003E   336 		 DRVCLR,-		;DRIVE CLEAR

                                     003E   337 		 RELEASE,-		;RELEASE PORT

                                     003E   338 		 OFFSET,-		;OFFSET HEADS

                                     003E   339 		 RETCENTER,-		;RETURN HEADS TO CENTERLINE

                                     003E   340 		 PACKACK,-		;PACK ACKNOWLEDGE

                                     003E   341 		 STARTSPNDL,-		;START SPINDLE

                                     003E   342 		 SENSECHAR,-		;SENSE CHARACTERISTICS

                                     003E   343 		 SETCHAR,-		;SET CHARACTERISITCS

                                     003E   344 		 SENSEMODE,-		;SENSE MODE

                                     003E   345 		 SETMODE,-		;SET MODE

                                     003E   346 		 WRITECHECK,-		;WRITE CHECK

                                     003E   347 		 WRITEHEAD,-		;WRITE HEADERS

                                     003E   348 		 READHEAD,-		;READ HEADER

                                     003E   349 		 READLBLK,-		;READ LOGICAL BLOCK

                                     003E   350 		 WRITELBLK,-		;WRITE LOGICAL BLOCK

                                     003E   351 		 READPBLK,-		;READ PHYSICAL BLOCK

                                     003E   352 		 WRITEPBLK,-		;WRITE PHYSICAL BLOCK

                                     003E   353 		 READVBLK,-		;READ VIRTUAL BLOCK

                                     003E   354 		 WRITEVBLK,-		;WRITE VIRTUAL BLOCK

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

                                     003E   356 		 ACPCONTROL,-		;ACP CONTROL FUNCTION

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

                                     003E   358 		 DEACCESS,-		;DEACCESS FILE

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

                                     003E   360 		 MODIFY,-		;MODIFY FILE ATTRIBUTES

                                     003E   361 		 MOUNT>			;MOUNT VOLUME

                                     0046   362 	FUNCTAB	,-			;BUFFERED I/O FUNCTIONS

                                     0046   363 		<NOP,-			;NO OPERATION

                                     0046   364 		 UNLOAD,-		;UNLOAD VOLUME

                                     0046   365 		 SEEK,-			;SEEK CYLINDER

                                     0046   366 		 RECAL,-		;RECALIBRATE

                                     0046   367 		 DRVCLR,-		;DRIVE CLEAR

                                     0046   368 		 RELEASE,-		;RELEASE PORT

                                     0046   369 		 OFFSET,-		;OFFSET HEADS

                                     0046   370 		 RETCENTER,-		;RETURN HEADS TO CENTERLINE

                                     0046   371 		 PACKACK,-		;PACK ACKNOWLEDGE

                                     0046   372 		 STARTSPNDL,-		;START SPINDLE

                                     0046   373 		 SENSECHAR,-		;SENSE CHARACTERISTICS

                                     0046   374 		 SETCHAR,-		;SET CHARACTERISITCS

                                     0046   375 		 SENSEMODE,-		;SENSE MODE

                                     0046   376 		 SETMODE,-		;SET MODE

                                     0046   377 		 ACCESS,-		;ACCESS FILE AND/OR FIND DIRECTORY ENTRY

                                     0046   378 		 ACPCONTROL,-		;ACP CONTROL FUNCTION

                                     0046   379 		 CREATE,-		;CREATE FILE AND/OR CREATE DIRECTORY ENTRY

                                     0046   380 		 DEACCESS,-		;DEACCESS FILE

                                     0046   381 		 DELETE,-		;DELETE FILE AND/OR DIRECTORY ENTRY

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page   8

01              RK611-RK06/RK07 FUNCTION DECISION TABLE                                                                          (1)



                                     0046   382 		 MODIFY,-		;MODIFY FILE ATTRIBUTES

                                     0046   383 		 MOUNT>			;MOUNT VOLUME

                                     004E   384 	FUNCTAB	DM_ALIGN,-		;TEST ALIGNMENT FUNCTIONS

                                     004E   385 		<READHEAD,-		;READ HEADER

                                     004E   386 		 READLBLK,-		;READ LOGICAL BLOCK

                                     004E   387 		 READPBLK,-		;READ PHYSICAL BLOCK

                                     004E   388 		 READVBLK,-		;READ VIRTUAL BLOCK

                                     004E   389 		 WRITECHECK,-		;WRITE CHECK

                                     004E   390 		 WRITEHEAD,-		;WRITE HEADERS

                                     004E   391 		 WRITELBLK,-		;WRITE LOGICAL BLOCK

                                     004E   392 		 WRITEPBLK,-		;WRITE PHYSICAL BLOCK

                                     004E   393 		 WRITEVBLK>		;WRITE VIRTUAL BLOCK

                                     005A   394 	FUNCTAB	+ACP$READBLK,-		;READ FUNCTIONS

                                     005A   395 		<READHEAD,-		;READ HEADER

                                     005A   396 		 READLBLK,-		;READ LOGICAL BLOCK

                                     005A   397 		 READPBLK,-		;READ PHYSICAL BLOCK

                                     005A   398 		 READVBLK>		;READ VIRTUAL BLOCK

                                     0066   399 	FUNCTAB	+ACP$WRITEBLK,-		;WRITE FUNCTIONS

                                     0066   400 		<WRITECHECK,-		;WRITE CHECK

                                     0066   401 		 WRITEHEAD,-		;WRITE HEADERS

                                     0066   402 		 WRITELBLK,-		;WRITE LOGICAL BLOCK

                                     0066   403 		 WRITEPBLK,-		;WRITE PHYSICAL BLOCK

                                     0066   404 		 WRITEVBLK>		;WRITE VIRTUAL BLOCK

                                     0072   405 	FUNCTAB	+ACP$ACCESS,<ACCESS,CREATE> ;ACCESS AND CREATE FILE OR DIRECTORY

                                     007E   406 	FUNCTAB	+ACP$DEACCESS,<DEACCESS> ;DEACCESS FILE

                                     008A   407 	FUNCTAB	+ACP$MODIFY,-		;

                                     008A   408 		<ACPCONTROL,-		;ACP CONTROL FUNCTION

                                     008A   409 		 DELETE,-		;DELETE FILE OR DIRECTORY ENTRY

                                     008A   410 		 MODIFY>		;MODIFY FILE ATTRIBUTES

                                     0096   411 	FUNCTAB	+ACP$MOUNT,<MOUNT>	;MOUNT VOLUME

                                     00A2   412 	FUNCTAB	+EXE$ZEROPARM,-		;ZERO PARAMETER FUNCTIONS

                                     00A2   413 		<NOP,-			;NO OPERATION

                                     00A2   414 		 UNLOAD,-		;UNLOAD VOLUME

                                     00A2   415 		 RECAL,-		;RECALIBRATE

                                     00A2   416 		 DRVCLR,-		;DRIVE CLEAR

                                     00A2   417 		 RELEASE,-		;RELEASE PORT

                                     00A2   418 		 RETCENTER,-		;RETURN HEADS TO CENTERLINE

                                     00A2   419 		 STARTSPNDL,-		;START SPINDLE

                                     00A2   420 		 PACKACK>		;PACK ACKNOWLEDGE

                                     00AE   421 	FUNCTAB	+EXE$ONEPARM,-		;ONE PARAMETER FUNCTIONS

                                     00AE   422 		<SEEK,-			;SEEK CYLINDER

                                     00AE   423 		 OFFSET>		;OFFSET HEADS

                                     00BA   424 	FUNCTAB	+EXE$SENSEMODE,-		;

                                     00BA   425 		<SENSECHAR,-		;SENSE CHARACTERISTICS

                                     00BA   426 		 SENSEMODE>		;SENSE MODE

                                     00C6   427 	FUNCTAB	+EXE$SETCHAR,-		;

                                     00C6   428 		<SETCHAR,-		;SET CHARACTERISTICS

                                     00C6   429 		 SETMODE>		;SET MODE

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page   9

01              TEST ALIGNMENT OF BUFFER                                                                                         (1)



                                     00D2   431 	.SBTTL	TEST ALIGNMENT OF BUFFER

                                     00D2   432 ;+

                                     00D2   433 ; DM_ALIGN - TEST ALIGNMENT OF BUFFER

                                     00D2   434 ;

                                     00D2   435 ; THIS ROUTINE IS CALLED FROM THE FUNCTION DECISION TABLE DISPATCHER TO CHECK THE

                                     00D2   436 ; ALIGNMENT OF THE BUFFER.

                                     00D2   437 ;

                                     00D2   438 ; INPUTS:

                                     00D2   439 ;

                                     00D2   440 ;	R0 = SCRATCH.

                                     00D2   441 ;	R1 = SCRATCH.

                                     00D2   442 ;	R2 = SCRATCH.

                                     00D2   443 ;	R3 = ADDRESS OF I/O REQUEST PACKET.

                                     00D2   444 ;	R4 = CURRENT PROCESS PCB ADDRESS.

                                     00D2   445 ;	R5 = ASSIGNED DEVICE UCB ADDRESS.

                                     00D2   446 ;	R6 = ADDRESS OF CCB.

                                     00D2   447 ;	R7 = I/O FUNCTION CODE.

                                     00D2   448 ;	R8 = FUNCTION DECISION TABLE DISPATCH ADDRESS.

                                     00D2   449 ;	R9 = SCRATCH.

                                     00D2   450 ;	R10 = SCRATCH.

                                     00D2   451 ;	R11 = SCRATCH.

                                     00D2   452 ;	AP = ADDRESS OF FIRST FUNCTION DEPENDENT PARAMETER.

                                     00D2   453 ;

                                     00D2   454 ; OUTPUTS:

                                     00D2   455 ;

                                     00D2   456 ;	THE BUFFER BYTE COUNT IS CHECKED FOR BEING EQUAL TO 0 MOD 2. IF THE CHECK

                                     00D2   457 ;	FAILS, THEN THE I/O OPERATION IS TERMINATED WITH AN ERROR. ELSE A RETURN

                                     00D2   458 ;	TO THE FUNCTION DECISION TABLE DISPATCHER IS EXECUTED.

                                     00D2   459 ;-

                                     00D2   460  

                                     00D2   461 DM_ALIGN:				;

         04 AC            00     E0  00D2   462 	BBS	#0,4(AP),10$		;IF SET, ODD BYTE COUNT

                          01         00D6       

                                 05  00D7   463 	RSB				;

            50       0000'8F     3C  00D8   464 10$:	MOVZWL	#SS$_BUFBYTALI,R0	;SET BUFFER ALIGNMENT STATUS

                 00000000'GF     17  00DD   465 	JMP	G^EXE$ABORTIO		;

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  10

01              START I/O OPERATION                                                                                              (1)



                                     00E3   467 	.SBTTL	START I/O OPERATION

                                     00E3   468 ;+

                                     00E3   469 ; STARTIO - START I/O OPERATION ON DEVICE UNIT

                                     00E3   470 ;

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

                                     00E3   472 ;

                                     00E3   473 ; INPUTS:

                                     00E3   474 ;

                                     00E3   475 ;	R3 = ADDRESS OF I/O PACKET.

                                     00E3   476 ;	R5 = UCB ADDRESS OF DEVICE UNIT.

                                     00E3   477 ;

                                     00E3   478 ; OUTPUTS:

                                     00E3   479 ;

                                     00E3   480 ;	FUNCTION DEPENDENT PARAMETERS ARE STORED IN THE DEVICE UCB, THE ERROR

                                     00E3   481 ;	RETRY COUNT IS RESET, AND THE FUNCTION IS EXECUTED. AT FUNCTION COMPLETION

                                     00E3   482 ;	THE OPERATION IS TERMINATED THROUGH REQUEST COMPLETE.

                                     00E3   483 ;-

                                     00E3   484  

                                     00E3   485 DM_STARTIO:				;START I/O OPERATION

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

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

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

                                     00F1   489  

                                     00F1   490 ;

                                     00F1   491 ; MOVE FUNCTION DEPENDENT PARAMETERS TO UCB

                                     00F1   492 ;

                                     00F1   493  

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

         20 A3            06         00F3   495 		IRP$W_FUNC(R3),R1	;

                          51         00F6       

            51            02     91  00F7   496 	CMPB	#IO$_SEEK,R1 		;SEEK FUNCTION?

                          19     13  00FA   497 	BEQL	20$			;IF EQL YES

            51            07     91  00FC   498 	CMPB	#IO$_RETCENTER,R1	;RETURN HEADS TO CENTERLINE?

                          1B     13  00FF   499 	BEQL	30$			;IF EQL YES

            51            06     91  0101   500 	CMPB	#IO$_OFFSET,R1 		;OFFSET FUNCTION?

                          18     13  0104   501 	BEQL	40$			;IF EQL YES

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

            51            19     91  010B   503 	CMPB	#IO$_STARTSPNDL,R1	;DISJOINT FUNCTION CODE?

                          13     1A  010E   504 	BGTRU	50$			;IF GTRU NO

            51            10     A2  0110   505 	SUBW	#IO$_STARTSPNDL-IO$_SEARCH,R1 ;CONVERT TO DENSE FUNCTION CODE

                          0E     11  0113   506 	BRB	50$			;

                                     0115   507  

                                     0115   508 ;

                                     0115   509 ; SEEK FUNCTION - SET CYLINDER ADDRESS

                                     0115   510 ;

                                     0115   511  

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

                          07     11  011A   513 	BRB	50$			;

                                     011C   514  

                                     011C   515 ;

                                     011C   516 ; RETURN HEADS TO CENTERLINE FUNCTION - CLEAR OFFSET VALUE

                                     011C   517 ;

                                     011C   518  

                          50     D4  011C   519 30$:	CLRL	R0			;CLEAR OFFSET VALUE

                                     011E   520  

                                     011E   521 ;

                                     011E   522 ; OFFSET FUNCTION - SET CURRENT OFFSET VALUE

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  11

01              START I/O OPERATION                                                                                              (1)



                                     011E   523 ;

                                     011E   524  

       008A C5            50     90  011E   525 40$:	MOVB	R0,UCB$W_OFFSET(R5)	;SET OFFSET VALUE

                                     0123   526  

                                     0123   527 ;

                                     0123   528 ; FINISH PREPROCESSING

                                     0123   529 ;

                                     0123   530  

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

         5A A5            03     AA  0127   532 	BICW	#UCB$M_ECC!-		;CLEAR ECC CORRECTION MADE AND,

                                     012B   533 		UCB$M_DIAGBUF,UCB$W_DEVSTS(R5) ;DIAGNOSTIC BUFFER PRESENT

         2A A3            07     E1  012B   534 	BBC	#IRP$V_DIAGBUF,IRP$W_STS(R3),FDISPATCH ;IF CLR, NO BUFFER

                          04         012F       

         5A A5            02     A8  0130   535 	BISW	#UCB$M_DIAGBUF,UCB$W_DEVSTS(R5) ;SET DIAGNOSTIC BUFFER PRESENT

                                     0134   536  

                                     0134   537 ;

                                     0134   538 ; CENTRAL FUNCTION DISPATCH

                                     0134   539 ;

                                     0134   540  

                                     0134   541 FDISPATCH:				;FUNCTION DISPATCH

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

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

                          0D         013C       

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

                          08         0141       

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

                          047A   31  0147   546 	BRW	RESETXFR		;

                                     014A   547  

                                     014A   548 ;

                                     014A   549 ; UNIT IS SOFTWARE VALID OR FUNCTION IS PHYSICAL I/O

                                     014A   550 ;

                                     014A   551  

                     008B C5     94  014A   552 10$:	CLRB	UCB$W_OFFSET+1(R5)	;CLEAR ECC INHIBIT AND DATACHECK IN PROGRESS

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

                     0094 C5     94  0153   554 	CLRB	UCB$B_OFFNDX(R5)	;CLEAR INITIAL OFFSET TABLE INDEX

            53         76 A5     9A  0157   555 	MOVZBL	UCB$B_FEX(R5),R3	;GET FUNCTION DISPATCH INDEX

                                     015B   556 	CASE	R3,<-			;DISPATCH TO FUNCTION HANDLING ROUTINE

                                     015B   557 		WRITECHECK,-		;WRITE CHECK DATA

                                     015B   558 		WRITEDATA,-		;WRITE DATA

                                     015B   559 		READDATA,-		;READ DATA

                                     015B   560 		WRITEHEAD,-		;WRITE HEADER

                                     015B   561 		READHEAD,-		;READ HEADER

                                     015B   562 		>,LIMIT=#CDF_WRITECHECK	;

                                     0169   563  

                                     0169   564 ;

                                     0169   565 ; NO OPERATION, UNLOAD, SEEK, RECALIBRATE, DRIVE CLEAR, RELEASE, OFFSET,

                                     0169   566 ; RETURN TO CENTER LINE, PACK ACKNOWLEDGE, AND START SPINDLE

                                     0169   567 ;

                                     0169   568  

                                     0169   569 NOP:					;NO OPERATION

                                     0169   570 UNLOAD:					;UNLOAD DRIVE

                                     0169   571 SEEK:					;SEEK CYLINDER

                                     0169   572 RECAL:					;RECALIBRATE

                                     0169   573 DRVCLR:					;DRIVE CLEAR

                                     0169   574 RELEASE:				;RELEASE PORT

                                     0169   575 OFFSET:					;OFFSET READ HEADS

                                     0169   576 RETCENTER:				;RETURN TO CENTERLINE

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  12

01              START I/O OPERATION                                                                                              (1)



                                     0169   577 PACKACK:				;PACK ACKNOWLEDGE

                                     0169   578 STARTSPNDL:				;START SPINDLE

                                     0169   579 	EXFUNCH	RETRY			;EXECUTE HOUSEKEEPING FUNCTION

                          52     11  016D   580 	BRB	NORMAL			;

                                     016F   581  

                                     016F   582 ;

                                     016F   583 ; WRITE CHECK DATA, WRITE HEADERS, AND READ HEAD

                                     016F   584 ;

                                     016F   585  

                                     016F   586 WRITECHECK:				;WRITE CHECK DATA

                                     016F   587 WRITEHEAD:				;WRITE HEADERS

                                     016F   588 READHEAD:				;READ HEADER

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

                                     0175   590  

                                     0175   591 ;

                                     0175   592 ; WRITE DATA, WRITE CHECK DATA, WRITE HEADERS, AND READ HEADER

                                     0175   593 ;

                                     0175   594  

                                     0175   595 WRITEDATA:				;WRITE DATA

       008B C5            01     88  0175   596 	BISB	#DM_M_ECI,UCB$W_OFFSET+1(R5) ;SET ECC INHIBIT

                                     017A   597  

                                     017A   598 ;

                                     017A   599 ; READ DATA, WRITE DATA, WRITE CHECK DATA, WRITE HEADERS, AND READ HEADER

                                     017A   600 ;

                                     017A   601  

                                     017A   602 READDATA:				;READ DATA

         7E A5            0C     E0  017A   603 	BBS	#IO$V_INHSEEK,UCB$W_FUNC(R5),TRANSFR ;IF SET, NO EXPLICIT SEEK

                          07         017E       

                                     017F   604 	EXFUNCH	RETRY,F_SEEK		;SEEK DESIRED CYLINDER

                                     0186   605  

                                     0186   606 ;

                                     0186   607 ; DATA TRANSFER

                                     0186   608 ;

                                     0186   609  

                                     0186   610 TRANSFR:				;DATA TRANSFER REQUEST CHANNEL

            53         76 A5     9A  0186   611 	MOVZBL	UCB$B_FEX(R5),R3	;GET FUNCTION DISPATCH INDEX

                                     018A   612 	EXFUNCL	TRANXT			;EXECUTE TRANSFER FUNCTION

                                     018E   613  

                                     018E   614 ;

                                     018E   615 ; DATA CHECK

                                     018E   616 ;

                                     018E   617  

                                     018E   618 DATACHECK:				;DATA CHECK

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

                          2E         0192       

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

         7E A5            00     E0  0198   621 	BBS	#UCB$V_ECC,UCB$W_FUNC(R5),CHECKXT ;IF SET, ECC CORRECTION MADE

                          27         019C       

       008B C5            03     90  019D   622 	MOVB	#DM_M_DCK!-		;SET DATA CHECK IN PROGRESS

                                     01A2   623 		DM_M_ECI,UCB$W_OFFSET+1(R5) ;AND INHIBIT ECC CORRECTION

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

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

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

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

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

                                     01BA   629  

                                     01BA   630 ;

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  13

01              START I/O OPERATION                                                                                              (1)



                                     01BA   631 ; DATA CHECK RETRY

                                     01BA   632 ;

                                     01BA   633  

                                     01BA   634 CHECKRETRY:				;DATA CHECK RETRY

                                     01BA   635 	EXFUNCL	TRANXT,F_WRITECHECK	;EXECUTE WRITECHECK FUNCTION

                                     01C1   636  

                                     01C1   637 ;

                                     01C1   638 ; SUCCESSFUL OPERATION COMPLETION

                                     01C1   639 ;

                                     01C1   640  

                                     01C1   641 NORMAL:					;

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

                                     01C4   643 CHECKXT:				;

                          0139   31  01C4   644 	BRW	FUNCXT			;

                                     01C7   645  

                                     01C7   646 ;

                                     01C7   647 ; TRANSFER ENDED WITH A RETRIABLE ERROR

                                     01C7   648 ;

                                     01C7   649  

                                     01C7   650 TRANXT:					;TRANSFER EXIT

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

                          1B     13  01CB   652 	BEQL	RETRY			;IF EQL YES

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

                          15     13  01D1   654 	BEQL	RETRY			;IF EQL YES

            51       2820 8F     B3  01D3   655 	BITW	#RK_CS1_M_CTO!-		;CONTROLLER TIMEOUT OR,

                                     01D8   656 		RK_CS1_M_DPPE!-		;DATAPATH PURGE ERROR OR,

                                     01D8   657 		RK_CS1_M_SPAR,R1	;SERIAL BUS PARITY ERROR?

                          0E     12  01D8   658 	BNEQ	RETRY			;IF NEQ YES

            52       E800 8F     B3  01DA   659 	BITW	#RK_CS2_M_DLT!-		;DATA LATE OR,

                                     01DF   660 		RK_CS2_M_UPE!-		;UNIBUS PARITY ERROR OR,

                                     01DF   661 		RK_CS2_M_NEM!-		;NONEXISTENT MEMORY OR,

                                     01DF   662 		RK_CS2_M_WCE,R2		;WRITE CHECK ERROR?

                          07     12  01DF   663 	BNEQ	RETRY			;IF NEQ YES

            53       200A 8F     B3  01E1   664 	BITW	#RK_ER_M_DRPAR!-	;DRIVE PARITY ERROR OR,

                                     01E6   665 		RK_ER_M_OPI!-		;OPERATION INCOMPLETE OR,

                                     01E6   666 		RK_ER_M_SKI,R3		;SEEK INCOMPLETE?

                          03     13  01E6   667 	BEQL	ECC			;IF EQL NO

                                     01E8   668 RETRY:					;

                          008D   31  01E8   669 	BRW	RETRYERR		;RETRIABLE ERROR

                                     01EB   670  

                                     01EB   671 ;

                                     01EB   672 ; ECC, DRIVE TIMING, OR HEADER ERROR - APPLY ECC OR PERFORM OFFSET RECOVERY

                                     01EB   673 ;

                                     01EB   674  

                                     01EB   675 ECC:					;ECC CORRECTION

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

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

            51            50     D0  01F4   678 	MOVL	R0,R1			;COPY NUMBER OF BYTES TRANSFERED

                          34     13  01F7   679 	BEQL	OFF			;IF EQL NONE - PERFORM OFFSET RECOVERY

            53            08     E0  01F9   680 	BBS	#RK_ER_V_HVRC,R3,10$	;IF SET, HEADER VRC ERROR

                          02         01FC       

                          50     D7  01FD   681 	DECL	R0			;SET TO TRUNCATE LAST BLOCK TRANSFERED

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

            53       1140 8F     B3  0204   683 	BITW	#RK_ER_M_DTE!-		;DRIVE TIMING ERROR OR,

                                     0209   684 		RK_ER_M_ECH!-		;ECC HARD ERROR OR,

                                     0209   685 		RK_ER_M_HVRC,R3		;HEADER VRC ERROR?

                          22     12  0209   686 	BNEQ	OFF			;IF NEQ YES - PERFORM OFFSET RECOVERY

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  14

01              START I/O OPERATION                                                                                              (1)



       008B C5            00     E0  020B   687 	BBS	#DM_V_ECI,UCB$W_OFFSET+1(R5),OFF ;IF SET, ECC INHIBITED

                          1C         0210       

                          51     DD  0211   688 	PUSHL	R1			;SAVE TOTAL NUMBER OF BYTES TRANSFERED

                 00000000'GF     16  0213   689 	JSB	G^IOC$APPLYECC		;APPLY ECC CORRECTION

                          50   8ED0  0219   690 	POPL	R0			;RETRIEVE TRANSFERED BYTE COUNT

                 00000000'GF     16  021C   691 	JSB	G^IOC$UPDATRANSP	;UPDATE TRANSFER PARAMETERS

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

                          03     13  0225   693 	BEQL	20$			;IF EQL NO

                          FF5C   31  0227   694 	BRW	TRANSFR			;TRANSFER NEXT SEGMENT

                          FF61   31  022A   695 20$:	BRW	DATACHECK		;CHECK FOR WRITE CHECK

                                     022D   696  

                                     022D   697 ;

                                     022D   698 ; OFF - OFFSET RECOVERY

                                     022D   699 ;

                                     022D   700 ; THIS CODE IS EXECUTED WHEN A DRIVE TIMING ERROR, HEADER VRC, OR ECC HARD

                                     022D   701 ; ERROR IS DETECTED ON A READ FUNCTION.

                                     022D   702 ;

                                     022D   703  

                                     022D   704 OFF:					;OFFSET RECOVERY

                          50     D5  022D   705 	TSTL	R0			;ANY GOOD DATA TRANSFERED?

                          0C     13  022F   706 	BEQL	10$			;IF EQL NO

                                     0231   707  

                                     0231   708 ;

                                     0231   709 ; THE TRANSFER ENDED IN AN ERROR BUT THERE WERE SECTORS TRANSFERED THAT

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

                                     0231   711 ; DER CROSSING, THE GOOD DATA IS SAVED AND THE TRANSFER IS RETRIED FROM THE

                                     0231   712 ; POINT OF ERROR.

                                     0231   713 ;

                                     0231   714  

                 00000000'GF     16  0231   715 	JSB	G^IOC$UPDATRANSP	;UPDATE TRANSFER PARAMETERS

                     0094 C5     94  0237   716 	CLRB	UCB$B_OFFNDX(R5)	;RESET OFFSET TABLE INDEX

                          0B     11  023B   717 	BRB	20$			;

                                     023D   718  

                                     023D   719 ;

                                     023D   720 ; NO GOOD DATA TRANSFERED - CHECK IF CHANGE IN OFFSET NEEDED

                                     023D   721 ;

                                     023D   722  

                     0095 C5     97  023D   723 10$:	DECB	UCB$B_OFFRTC(R5)	;CHANGE CURRENT OFFSET?

                          29     12  0241   724 	BNEQ	40$			;IF NEQ NO

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

                     0094 C5     96  0248   726 20$:	INCB	UCB$B_OFFNDX(R5)	;UPDATE OFFSET TABLE INDEX

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

            50            08     91  0251   728 	CMPB	#OFFSIZ,R0		;ALL OFFSETS TRIED?

                          38     13  0254   729 	BEQL	OFFSETERR		;IF EQL YES

       008A C5       FDDA CF40   90  0256   730 	MOVB	OFFTAB-1[R0],UCB$W_OFFSET(R5) ;SET NEXT OFFSET VALUE

                          05     12  025E   731 	BNEQ	30$			;IF NEQ NOT OFFSET ZERO

       0095 C5            10     90  0260   732 	MOVB	#16,UCB$B_OFFRTC(R5)	;SET OFFSET RETRY COUNT

                                     0265   733 30$:	EXFUNCH	FATALERR,F_OFFSET	;OFFSET TO NEXT POSITION

       008B C5            01     E0  026C   734 40$:	BBS	#DM_V_DCK,UCB$W_OFFSET+1(R5),50$ ;IF SET, DATA CHECK FUNCTION

                          03         0271       

                          FF11   31  0272   735 	BRW	TRANSFR			;TRY FUNCTION AGAIN

                          FF42   31  0275   736 50$:	BRW	CHECKRETRY		;TRY DATA CHECK AGAIN

                                     0278   737  

                                     0278   738 ;

                                     0278   739 ; RETRIABLE ERROR

                                     0278   740 ;

                                     0278   741  

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  15

01              START I/O OPERATION                                                                                              (1)



                                     0278   742 RETRYERR:				;RETRIABLE ERROR

                       70 A5     97  0278   743 	DECB	UCB$B_ERTCNT(R5)	;ANY RETRIES LEFT?

                          16     13  027B   744 	BEQL	FATALERR		;IF EQL NO

            53       2002 8F     B3  027D   745 	BITW	#RK_ER_M_OPI!-		;OPERATION INCOMPLETE OR,

                                     0282   746 		RK_ER_M_SKI,R3		;SEEK INCOMPLETE?

                          07     13  0282   747 	BEQL	10$			;IF EQL NO

                                     0284   748 	EXFUNCH	FATALERR,F_RECAL	;RECALIBRATE DRIVE

                          FEA6   31  028B   749 10$:	BRW	FDISPATCH		;

                                     028E   750  

                                     028E   751 ;

                                     028E   752 ; ALL OFFSETS TRIED - RETRIEVE FINAL TRANSFER STATUS

                                     028E   753 ;

                                     028E   754  

                                     028E   755 OFFSETERR:				;OFFSET RECOVERY ERROR

            51       009A C5     3C  028E   756 	MOVZWL	UCB$W_DM_CS1(R5),R1	;RETRIEVE CONTROL STATUS REGISTER 1

                                     0293   757  

                                     0293   758 ;

                                     0293   759 ; FATAL CONTROLLER/DRIVE ERROR, ERROR RETRY COUNT EXHAUSTED, ERROR RETRY

                                     0293   760 ; INHIBITED, OR FINAL OFFSET TRIED

                                     0293   761 ;

                                     0293   762  

                                     0293   763 FATALERR:				;FATAL ERROR - SET STATUS

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

       00A4 C5            06     E1  0298   765 	BBC	#RK_DS_V_VV,UCB$W_DM_DS(R5),FUNCXT ;IF CLR, VOLUME INVALID

                          62         029D       

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

            53            0E     E0  02A3   767 	BBS	#RK_ER_V_UNS,R3,FUNCXT	;IF SET, DRIVE UNSAFE

                          59         02A6       

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

            53            30     B3  02AC   769 	BITW	#RK_ER_M_DTYE!-		;DRIVE TYPE ERROR OR,

                                     02AF   770 		RK_ER_M_FMTE,R3		;FORMAT ERROR?

                          4F     12  02AF   771 	BNEQ	FUNCXT			;IF NEQ YES

            50       0000'8F     3C  02B1   772 	MOVZWL	#SS$_WRITLCK,R0		;SET WRITE LOCK ERROR

            53            0B     E0  02B6   773 	BBS	#RK_ER_V_WLE,R3,FUNCXT	;IF SET, WRITE LOCK ERROR

                          46         02B9       

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

            53       0600 8F     B3  02BF   775 	BITW	#RK_ER_M_COE!-		;CYLINDER ADDRESS OVERFLOW OR,

                                     02C4   776 		RK_ER_M_IDAE,R3		;INVALID DISK ADDRESS ERROR?

                          3A     12  02C4   777 	BNEQ	FUNCXT			;IF NEQ YES

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

            53       3007 8F     B3  02CB   779 	BITW	#RK_ER_M_DTE!-		;DRIVE TIMING ERROR OR,

                                     02D0   780 		RK_ER_M_ILF!-		;ILLEGAL FUNCTION OR,

                                     02D0   781 		RK_ER_M_NXF!-		;NONEXECUTABLE FUNCTION OR,

                                     02D0   782 		RK_ER_M_OPI!-		;OPERATION INCOMPLETE OR,

                                     02D0   783 		RK_ER_M_SKI,R3		;SEEK INCOMPLETE?

                          2E     12  02D0   784 	BNEQ	FUNCXT			;IF NEQ YES

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

            53       81C8 8F     B3  02D7   786 	BITW	#RK_ER_M_BSE!-		;BAD SECTOR ERROR OR,

                                     02DC   787 		RK_ER_M_DCK!-		;DATA CHECK ERROR OR,

                                     02DC   788 		RK_ER_M_DRPAR!-		;DRIVE PARITY ERROR OR,

                                     02DC   789 		RK_ER_M_ECH!-		;ECC HARD ERROR OR,

                                     02DC   790 		RK_ER_M_HVRC,R3		;HEADER VRC ERROR?

                          22     12  02DC   791 	BNEQ	FUNCXT			;IF NEQ YES

            51       2020 8F     B3  02DE   792 	BITW	#RK_CS1_M_DPPE!-	;DATAPATH PURGE ERROR OR,

                                     02E3   793 		RK_CS1_M_SPAR,R1	;SERIAL BUS PARITY ERROR?

                          1B     12  02E3   794 	BNEQ	FUNCXT			;IF NEQ YES

            52            0D     E0  02E5   795 	BBS	#RK_CS2_V_UPE,R2,FUNCXT	;IF SET, UNIBUS PARITY ERROR

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  16

01              START I/O OPERATION                                                                                              (1)



                          17         02E8       

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

            52            0E     E0  02EE   797 	BBS	#RK_CS2_V_WCE,R2,FUNCXT	;IF SET, WRITE CHECK ERROR

                          0E         02F1       

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

            52            0C     E0  02F7   799 	BBS	#RK_CS2_V_NED,R2,FUNCXT	;IF SET, NONEXISTENT DRIVE

                          05         02FA       

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

                                     0300   801  

                                     0300   802 ;

                                     0300   803 ; FUNCTION COMPLETION COMMON EXIT

                                     0300   804 ;

                                     0300   805  

                                     0300   806 FUNCXT:					;FUNCTION EXIT

                          50     DD  0300   807 	PUSHL	R0			;SAVE FINAL REQUEST STATUS

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

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

                          0C     1A  030C   810 	BGTRU	10$			;IF GTRU YES

            53         4C A5     D0  030E   811 	MOVL	UCB$L_IRP(R5),R3	;RETRIEVE ADDRESS OF IRP

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

                       02 AE         0318       

                          51     D4  031A   813 10$:	CLRL	R1			;CLEAR SECOND STATUS LONGWORD

                          50   8ED0  031C   814 	POPL	R0			;RETRIEVE FINAL REQUEST STATUS

                                     031F   815 	REQCOM				;COMPLETE REQUEST

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  17

01              RK611-RK06/RK07 HARDWARE FUNCTION EXECUTION                                                                      (1)



                                     0325   817 	.SBTTL	RK611-RK06/RK07 HARDWARE FUNCTION EXECUTION

                                     0325   818 ;

                                     0325   819 ; FEXH - RK611-RK06/RK07 HARDWARE FUNCTION EXECUTION (HIGH PRIORITY)

                                     0325   820 ; FEXL - RK611-RK06/RK07 HARDWARE FUNCTION EXECUTION (LOW PRIORITY)

                                     0325   821 ;

                                     0325   822 ; THIS ROUTINE IS CALLED VIA A BSB WITH A BYTE IMMEDIATELY FOLLOWING THAT

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

                                     0325   824 ; SET UP IN THE UCB BEFORE THE CALL. THE APPROPRIATE PARAMETERS ARE LOADED

                                     0325   825 ; INTO DEVICE REGISTERS AND THE FUNCTION IS INITIATED. THE RETURN ADDRESS

                                     0325   826 ; IS STORED IN THE UCB AND A WAITFOR INTERRUPT IS EXECUTED. WHEN THE INTER-

                                     0325   827 ; RUPT OCCURS, CONTROL IS RETURNED TO THE CALLER.

                                     0325   828 ;

                                     0325   829 ; INPUTS:

                                     0325   830 ;

                                     0325   831 ;	R3 = FUNCTION TABLE DISPATCH INDEX.

                                     0325   832 ;	R4 = ADDRESS OF CONTROL STATUS REGISTER 1.

                                     0325   833 ;	R5 = DEVICE UNIT UCB ADDRESS.

                                     0325   834 ;

                                     0325   835 ;	00(SP) = RETURN ADDRESS OF CALLER.

                                     0325   836 ;	04(SP) = RETURN ADDRESS OF CALLER'S CALLER.

                                     0325   837 ;

                                     0325   838 ;	IMMEDIATELY FOLLOWING INLINE AT THE CALL SITE IS A BYTE WHICH CONTAINS

                                     0325   839 ;	A BRANCH DESTINATION TO AN ERROR RETRY ROUTINE.

                                     0325   840 ;

                                     0325   841 ; OUTPUTS:

                                     0325   842 ;

                                     0325   843 ;	THERE ARE FOUR EXITS FROM THIS ROUTINE:

                                     0325   844 ;

                                     0325   845 ;	1. SPECIAL CONDITION - THIS EXIT IS TAKEN IF A POWER FAILURE OCCURS

                                     0325   846 ;		OR THE OPERATION TIMES OUT. IT IS A JUMP TO THE APPROPRIATE

                                     0325   847 ;		ERROR ROUTINE.

                                     0325   848 ;

                                     0325   849 ;	2. FATAL ERROR - THIS EXIT IS TAKEN IF A FATAL CONTROLLER OR DRIVE

                                     0325   850 ;		ERROR OCCURS OR IF ANY ERROR OCCURS AND ERROR RETRY IS

                                     0325   851 ;		INHIBITED. IT IS A JUMP TO THE FATAL ERROR EXIT ROUTINE.

                                     0325   852 ;

                                     0325   853 ;	3. RETRIABLE ERROR - THIS EXIT IS TAKEN IF A RETRIABLE CONTROLLER

                                     0325   854 ;		OR DRIVE ERROR OCCURS AND ERROR RETRY IS NOT INHIBITED.

                                     0325   855 ;		IT CONSISTS OF TAKING THE ERROR BRANCH EXIT.

                                     0325   856 ;

                                     0325   857 ;	4. SUCCESSFUL OPERATION - THIS EXIT IS TAKEN IF NO ERROR OCCURS

                                     0325   858 ;		DURING THE OPERATION. IT CONSISTS OF A RETURN INLINE.

                                     0325   859 ;

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

                                     0325   861 ;

                                     0325   862 ;	IN ALL CASES FINAL DRIVE AND CONTROLLER REGISTERS ARE RETURNED VIA

                                     0325   863 ;	THE GENERAL REGISTERS R1, R2, AND R3, AND THE UCB.

                                     0325   864 ;

                                     0325   865 ;	R1 = CONTROL STATUS REGISTER 1.

                                     0325   866 ;	R2 = CONTROL STATUS REGISTER 2.

                                     0325   867 ;	R3 = ERROR REGISTER.

                                     0325   868 ;

                                     0325   869 ;	UCB$W_EC1(R5) = ECC POSITION REGISTER.

                                     0325   870 ;	UCB$W_EC2(R5) = ECC PATTERN REGISTER.

                                     0325   871 ;	UCB$W_BCR(R5) = BYTE COUNT REGISTER.

                                     0325   872 ;

                                     0325   873  

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  18

01              RK611-RK06/RK07 HARDWARE FUNCTION EXECUTION                                                                      (1)



                                     0325   874 	.ENABL	LSB

                                     0325   875 FEXH:					;FUNCTION EXECUTOR (HIGH PRIORITY)

            52   00000000'GF     9E  0325   876 	MOVAB	G^IOC$REQPCHANH,R2	;SET ADDRESS OF REQUEST CHANNEL ROUTINE

                          07     11  032C   877 	BRB	10$			;

                                     032E   878 FEXL:					;FUNCTION EXECUTOR (LOW PRIORITY)

            52   00000000'GF     9E  032E   879 	MOVAB	G^IOC$REQPCHANL,R2	;SET ADDRESS OF REQUEST CHANNEL ROUTINE

                     0080 C5   8ED0  0335   880 10$:	POPL	UCB$L_DPC(R5)		;SAVE DRIVER PC VALUE

         77 A5            53     90  033A   881 	MOVB	R3,UCB$B_CEX(R5)	;SAVE CASE INDEX

                          62     16  033E   882 	JSB	(R2)			;REQUEST CHANNEL

            52         48 A5     3C  0340   883 	MOVZWL	UCB$W_UNIT(R5),R2	;GET DEVICE UNIT NUMBER

                                     0344   884 	CASE	R3,<-			;DISPATCH TO PROPER FUNCTION ROUTINE

                                     0344   885 		IMMED,-			;NO OPERATION

                                     0344   886 		IMMED,-			;UNLOAD VOLUME

                                     0344   887 		POSIT,-			;SEEK CYLINDER

                                     0344   888 		POSIT,-			;RECALIBRATE

                                     0344   889 		IMMED,-			;DRIVE CLEAR

                                     0344   890 		RELES,-			;RELEASE DRIVE

                                     0344   891 		POSIT,-			;OFFSET HEADS

                                     0344   892 		POSIT,-			;RETURN TO CENTERLINE

                                     0344   893 		IMMED,-			;PACK ACKNOWLEDGE

                                     0344   894 		IMMED,-			;START SPINDLE

                                     0344   895 		>			;

                          0090   31  035C   896 	BRW	XFER			;TRANSFER FUNCTION

                                     035F   897 	.DSABL	LSB

                                     035F   898  

                                     035F   899 ;

                                     035F   900 ; IMMEDIATE FUNCTION EXECUTION

                                     035F   901 ;

                                     035F   902 ;	FUNCTIONS INCLUDE:

                                     035F   903 ;

                                     035F   904 ;		NO OPERATION,

                                     035F   905 ;		UNLOAD VOLUME,

                                     035F   906 ;		DRIVE CLEAR,

                                     035F   907 ;		RELEASE PORT,

                                     035F   908 ;		PACK ACKNOWLEDGE, AND

                                     035F   909 ;		START SPINDLE.

                                     035F   910 ;

                                     035F   911 ; INTERRUPTS ARE LOCKED OUT, THE APPROPRIATE FUNCTION IS INITIATED WITH

                                     035F   912 ; INTERRUPT ENABLE, AND A WAITFOR INTERRUPT AND KEEP CHANNEL IS EXECUTED.

                                     035F   913 ;

                                     035F   914 ; THESE FUNCTIONS ALL EXECUTE WITHIN A VERY SHORT TIME (15 US), BUT ARE

                                     035F   915 ; VERY INFREQUENT AND THEREFORE ARE DONE WITH INTERRUPTS TO AVOID AN EXTRA

                                     035F   916 ; SET OF REGISTER SAVE LOGIC.

                                     035F   917 ;

                                     035F   918  

                                     035F   919 RELES:					;RELEASE PORT

            52            08     A8  035F   920 	BISW	#RK_CS2_M_RLS,R2	;SET PORT RELEASE BIT

                                     0362   921 IMMED:					;IMMEDIATE FUNCTION EXECUTION

                                     0362   922 	DSBINT				;DISABLE INTERRUPTS

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

                          7C         036C       

         08 A4            52     B0  036D   924 	MOVW	R2,RK_CS2(R4)		;SET UNIT NUMBER

       FC9F CF43     0098 C5     A9  0371   925 	BISW3	UCB$W_DM_DTYP(R5),FTAB[R3],RK_CS1(R4) ;EXECUTE FUNCTION

                          64         0379       

                                     037A   926 	WFIKPCH	RLSCHN,#2		;WAITFOR INTERRUPT

                                     0384   927 	IOFORK				;CREATE FORK PROCESS

                          01A4   31  038A   928 	BRW	RLSCHN			;

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  19

01              RK611-RK06/RK07 HARDWARE FUNCTION EXECUTION                                                                      (1)



                                     038D   929  

                                     038D   930 ;

                                     038D   931 ; POSITIONING FUNCTION EXECUTION

                                     038D   932 ;

                                     038D   933 ;	FUNCTIONS INCLUDE:

                                     038D   934 ;

                                     038D   935 ;		SEEK CYLINDER,

                                     038D   936 ;		RECALIBRATE,

                                     038D   937 ;		OFFSET HEADS, AND

                                     038D   938 ;		RETURN HEADS TO CENTERLINE.

                                     038D   939 ;

                                     038D   940 ; THE OFFSET REGISTER AND CYLINDER ADDRESS REGISTERS ARE LOADED, INTERRUPTS

                                     038D   941 ; ARE LOCKED OUT, AND THE APPROPRIATE POSITIONING FUNCTION IS INITIATED

                                     038D   942 ; WITHOUT INTERRUPT ENABLE. THE CONTROLLER IS THEN POLLED FOR READY, DEVICE

                                     038D   943 ; INTERRUPTS ARE ENABLED, AND A WAITFOR INTERRUPT AND RELEASE CHANNEL IS

                                     038D   944 ; EXECUTED.

                                     038D   945 ;

                                     038D   946  

                                     038D   947 POSIT:					;POSITIONING FUNCTION

                                     038D   948 	DSBINT				;DISABLE INTERRUPTS

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

                          51         0397       

         0E A4       008A C5     B0  0398   950 	MOVW	UCB$W_OFFSET(R5),RK_AS(R4) ;SET OFFSET VALUE

         10 A4       008E C5     B0  039E   951 	MOVW	UCB$W_DC(R5),RK_DC(R4)	;SET DESIRED CYLINDER ADDRESS

         08 A4            52     B0  03A4   952 	MOVW	R2,RK_CS2(R4)		;SET UNIT NUMBER

       FC68 CF43     0098 C5     A9  03A8   953 	BISW3	UCB$W_DM_DTYP(R5),FTAB[R3],RK_CS1(R4) ;EXECUTE FUNCTION

                          64         03B0       

                          033B   30  03B1   954 	BSBW	DM_WAIT			;WAIT FOR FUNCTION TO COMPLETE

                                     03B4   955 	WFIRLCH	RETREG,#6		;WAITFOR INTERRUPT

                                     03BE   956 	DSBINT				;DISABLE INTERRUPTS

         58 A5            05     E0  03C4   957 	BBS	#UCB$V_POWER,UCB$W_STS(R5),10$ ;IF SET, POWER FAILURE

                          14         03C8       

         0A A4       0080 8F     B3  03C9   958 	BITW	#RK_DS_M_DRDY,RK_DS(R4)	;DRIVE READY?

                          0C     12  03CF   959 	BNEQ	10$			;IF NEQ YES

                                     03D1   960 	WFIKPCH	RETREG,#6		;WAITFOR INTERRUPT

                          03     11  03DB   961 	BRB	20$			;

                                     03DD   962 10$:	ENBINT				;ENABLE INTERRUPTS

                                     03E0   963 20$:	IOFORK				;CREATE FORK PROCESS

                          014E   31  03E6   964 	BRW	RETREG			;

                                     03E9   965 ENBXIT:					;

                                     03E9   966 	ENBINT				;

                          0142   31  03EC   967 	BRW	RLSCHN			;

                                     03EF   968  

                                     03EF   969 ;

                                     03EF   970 ; TRANSFER FUNCTION EXECUTION

                                     03EF   971 ;

                                     03EF   972 ;	FUNCTIONS INCLUDE:

                                     03EF   973 ;

                                     03EF   974 ;		WRITE CHECK,

                                     03EF   975 ;		WRITE DATA,

                                     03EF   976 ;		WRITE HEADERS,

                                     03EF   977 ;		READ DATA, AND

                                     03EF   978 ;		READ HEADER.

                                     03EF   979 ;

                                     03EF   980 ; A UNIBUS DATAPATH IS REQUESTED FOLLOWED BY THE APPROPRIATE NUMBER OF MAP

                                     03EF   981 ; REGISTERS REQUIRED FOR THE TRANSFER. THE TRANSFER PARAMETERS ARE LOADED  

                                     03EF   982 ; INTO THE DEVICE REGISTERS, INTERRUPTS ARE LOCKED OUT, THE FUNCTION IS

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  20

01              RK611-RK06/RK07 HARDWARE FUNCTION EXECUTION                                                                      (1)



                                     03EF   983 ; INITIATED, AND A WAITFOR INTERRUPT AND KEEP CHANNEL IS EXECUTED.

                                     03EF   984 ;

                                     03EF   985  

                                     03EF   986 XFER:					;TRANSFER FUNCTION EXECUTION

                                     03EF   987 	REQDPR				;REQUEST DATAPATH

                                     03F5   988 	REQMPR				;REQUEST MAP REGISTERS

                                     03FB   989 	LOADUBA				;LOAD UNIBUS MAP REGISTERS

            50         6E A5     3C  0401   990 	MOVZWL	UCB$W_BCNT(R5),R0	;GET TRANSFER BYTE COUNT

            50            02     C6  0405   991 	DIVL	#2,R0			;CALCULATE TRANSFER WORD COUNT

                                     0408   992 	DSBINT	UCB$B_DIPL(R5)		;DISABLE DEVICE INTERRUPTS

         02 A4            50     AE  040F   993 	MNEGW	R0,RK_WC(R4)		;SET TRANSFER WORD COUNT

            50         6C A5     3C  0413   994 	MOVZWL	UCB$W_BOFF(R5),R0	;GET BYTE OFFSET IN PAGE

            51         20 A5     D0  0417   995 	MOVL	UCB$L_CRB(R5),R1	;GET ADDRESS OF CRB

            09         24 A1     F0  041B   996 	INSV	CRB$L_INTD+VEC$W_MAPREG(R1),#9,#7,R0 ;INSERT HIGH 7 BITS OF ADDRESS

            50            07         041F       

         04 A4            50     B0  0421   997 	MOVW	R0,RK_BA(R4)		;SET BUFFER ADDRESS

            02            07     EF  0425   998 	EXTZV	#7,#2,CRB$L_INTD+VEC$W_MAPREG(R1),R0 ;GET MEMORY EXTENSION BITS

            50         24 A1         0428       

            50            08     78  042B   999 	ASHL	#8,R0,R0		;SHIFT LEFT ONE BYTE

                          50         042E       

            50       FBE4 CF43   A8  042F  1000 	BISW	FTAB[R3],R0		;MERGE FUNCTION CODE

         06 A4       008C C5     B0  0435  1001 	MOVW	UCB$W_DA(R5),RK_DA(R4)	;SET DESIRED TRACK AND SECTOR ADDRESS

         10 A4       008E C5     B0  043B  1002 	MOVW	UCB$W_DC(R5),RK_DC(R4)	;SET DESIRED CYLINDER ADDRESS

         08 A4         48 A5     B0  0441  1003 	MOVW	UCB$W_UNIT(R5),RK_CS2(R4) ;SET UNIT NUMBER

                                     0446  1004 	SETIPL	#31			;DISABLE INTERRUPTS

         58 A5            05     E1  0449  1005 	BBC	#UCB$V_POWER,UCB$W_STS(R5),10$ ;IF CLR, NO POWER FAILURE

                          06         044D       

                                     044E  1006 	ENBINT				;ENABLE INTERRUPTS

                          00D1   31  0451  1007 	BRW	60$			;

            50       0098 C5     A9  0454  1008 10$:	BISW3	UCB$W_DM_DTYP(R5),R0,RK_CS1(R4) ;EXECUTE FUNCTION

                          64         0459       

                                     045A  1009 	WFIKPCH	60$,#6			;WAITFOR INTERRUPT AND KEEP CHANNEL

                                     0464  1010 	IOFORK				;CREATE FORK PROCESS

            53         20 A5     D0  046A  1011 	MOVL	UCB$L_CRB(R5),R3	;GET ADDRESS OF CRB

            52         28 B3     D0  046E  1012 	MOVL	@CRB$L_INTD+VEC$L_ADP(R3),R2 ;GET ADDRESS OF CONFIGURATION REGISTER

                          00     EF  0472  1013 	EXTZV	#VEC$V_DATAPATH,#VEC$S_DATAPATH,- ;EXTRACT DATAPATH NUMBER

         27 A3            07         0474  1014 		CRB$L_INTD+VEC$B_DATAPATH(R3),R1 ;

                          51         0477       

            01            1F     78  0478  1015 	ASHL	#UBA$V_DPR_BNE,#1,UBA$L_DPR(R2)[R1] ;PURGE DATAPATH

                       40 A241       047B       

         40 A241          01     78  047E  1016 	ASHL	#31-UBA$V_DPR_XMTER,UBA$L_DPR(R2)[R1],R0 ;ANY TRANSMISSION ERROR?

                          50         0483       

                          16     18  0484  1017 	BGEQ	20$			;IF GEQ NO

       009A C5       8020 8F     A8  0486  1018 	BISW	#RK_CS1_M_CERR!-	;SET CONTROLLER ERROR AND,

                                     048D  1019 		RK_CS1_M_DPPE,UCB$W_DM_CS1(R5) ;DATAPATH PURGE ERROR

                     00A2 C5     B4  048D  1020 	CLRW	UCB$W_DM_CS2(R5)	;CLEAR CONTROL STATUS REGISTER 2

                     00A6 C5     B4  0491  1021 	CLRW	UCB$W_DM_ER(R5)		;CLEAR ERROR REGISTER

       00A4 C5       FFBF 8F     AA  0495  1022 	BICW	#^C<RK_DS_M_VV>,UCB$W_DM_DS(R5) ;CLEAR ALL BUT VOLUME VALID

       009A C5            0F     E0  049C  1023 20$:	BBS	#RK_CS1_V_CERR,UCB$W_DM_CS1(R5),30$ ;IF SET , DEVICE ERRORS

                          05         04A1       

         5A A5            01     E1  04A2  1024 	BBC	#UCB$V_DIAGBUF,UCB$W_DEVSTS(R5),40$ ;IF CLR, NO DIAGNOSTIC BUFFER

                          44         04A6       

       00B2 C5            51     B0  04A7  1025 30$:	MOVW	R1,UCB$W_DM_DPN(R5)	;SAVE DATAPATH NUMBER

       00B4 C5         40 A241   D0  04AC  1026 	MOVL	UBA$L_DPR(R2)[R1],UCB$L_DM_DPR(R5) ;SAVE DATAPATH REGISTER

            07            09     EF  04B3  1027 	EXTZV	#9,#7,UCB$W_DM_BA(R5),R0 ;GET LOW BITS OF FINAL MAP REGISTER NUMBER

            50       009E C5         04B6       

            07       009B C5     F0  04BA  1028 	INSV	UCB$W_DM_CS1+1(R5),#7,#2,R0 ;INSERT HIGH BITS OF FINAL MAP REGISTER

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  21

01              RK611-RK06/RK07 HARDWARE FUNCTION EXECUTION                                                                      (1)



            50            02         04BF       

            50       01EF 8F     B1  04C1  1029 	CMPW	#495,R0			;LEGAL MAP REGISTER NUMBER?

                          05     18  04C6  1030 	BGEQ	35$			;IF GEQ YES

            50       01EF 8F     3C  04C8  1031 	MOVZWL	#495,R0			;RESTRICT MAP REGISTER NUMBER

       00B8 C5       0800 C240   D0  04CD  1032 35$:	MOVL	UBA$L_MAP(R2)[R0],UCB$L_DM_FMPR(R5) ;SAVE FINAL MAP REGISTER

                     00BC C5     D4  04D5  1033 	CLRL	UCB$L_DM_PMPR(R5)	;CLEAR PREVIOUS MAP REGISTER CONTENTS

                          50     D7  04D9  1034 	DECL	R0			;CALCULATE PREVIOUS MAP REGISTER NUMBER

                          00     EC  04DB  1035 	CMPV	#VEC$V_MAPREG,#VEC$S_MAPREG,- ;ANY PREVIOUS MAP REGISTER?

         24 A3            0F         04DD  1036 		CRB$L_INTD+VEC$W_MAPREG(R3),R0 ;

                          50         04E0       

                          08     14  04E1  1037 	BGTR	40$			;IF GTR NO

       00BC C5       0800 C240   D0  04E3  1038 	MOVL	UBA$L_MAP(R2)[R0],UCB$L_DM_PMPR(R5) ;SAVE PREVIOUS MAP REGISTER

       009C C5            02     A5  04EB  1039 40$:	MULW3	#2,UCB$W_DM_WC(R5),UCB$W_BCR(R5) ;CONVERT WORD COUNT TO BYTE COUNT

                     0096 C5         04F0       

       009A C5            0F     E0  04F3  1040 	BBS	#RK_CS1_V_CERR,UCB$W_DM_CS1(R5),60$ ;IF SET, DEVICE ERRORS

                          2C         04F8       

         77 A5            0E     91  04F9  1041 	CMPB	#CDF_READHEAD,UCB$B_CEX(R5) ;READ HEADER FUNCTION?

                          26     12  04FD  1042 	BNEQ	60$			;IF NEQ NO

                       68 A5     DD  04FF  1043 	PUSHL	UCB$L_SVAPTE(R5)	;SAVE ADDRESS OF PTE

            51       00C0 C5     9E  0502  1044 	MOVAB	UCB$W_DM_DB(R5),R1	;SET ADDRESS OF INTERNAL BUFFER

            52            06     D0  0507  1045 	MOVL	#6,R2			;SET NUMBER OF BYTES TO MOVE

         6E A5            52     B1  050A  1046 	CMPW	R2,UCB$W_BCNT(R5)	;ROOM FOR FULL HEADER?

                          04     1F  050E  1047 	BLSSU	50$			;IF LSSU YES

            52         6E A5     3C  0510  1048 	MOVZWL	UCB$W_BCNT(R5),R2	;SET LENGTH OF PARTIAL HEADER

            52         6E A5     A3  0514  1049 50$:	SUBW3	UCB$W_BCNT(R5),R2,UCB$W_BCR(R5) ;CALCULATE TRANSFER BYTE COUNT

                     0096 C5         0518       

                 00000000'GF     16  051B  1050 	JSB	G^IOC$MOVTOUSER		;MOVE HEADER TO USER BUFFER

                       68 A5   8ED0  0521  1051 	POPL	UCB$L_SVAPTE(R5)	;RESTORE ADDRESS OF PTE

                                     0525  1052 60$:	RELDPR				;RELEASE DATA PATH

                                     052B  1053 	RELMPR				;RELEASE MAP REGISTERS

                                     0531  1054 RLSCHN:					;

                                     0531  1055 	RELCHAN				;RELEASE CHANNEL

                                     0537  1056  

                                     0537  1057 ;

                                     0537  1058 ; RETURN REGISTERS

                                     0537  1059 ;

                                     0537  1060  

                                     0537  1061 	.ENABL	LSB

                                     0537  1062 RETREG:					;RETURN FINAL DEVICE REGISTERS

            51       009A C5     3C  0537  1063 	MOVZWL	UCB$W_DM_CS1(R5),R1	;RETRIEVE CONTROL STATUS REGISTER 1

            52       00A2 C5     3C  053C  1064 	MOVZWL	UCB$W_DM_CS2(R5),R2	;RETRIEVE CONTROL STATUS REGISTER 2

            53       00A6 C5     3C  0541  1065 	MOVZWL	UCB$W_DM_ER(R5),R3	;RETRIEVE ERROR REGISTER

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

                                     054C  1067 		UCB$M_TIMOUT,UCB$W_STS(R5) ;

                          38     12  054C  1068 	BNEQ	30$			;IF NEQ YES - SPECIAL CONDITION

            51            0F     E1  054E  1069 	BBC	#RK_CS1_V_CERR,R1,10$	;IF CLR, NO ERRORS

                          29         0551       

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

         7E A5            0F     E0  0558  1071 	BBS	#IO$V_INHRETRY,UCB$W_FUNC(R5),20$ ;IF SET, RETRY INHIBITED

                          26         055C       

            52       1700 8F     B3  055D  1072 	BITW	#RK_CS2_M_MDS!-		;MULTIPLE DRIVE SELECT OR,

                                     0562  1073 		RK_CS2_M_NED!-		;NONEXISTENT DISK OR,

                                     0562  1074 		RK_CS2_M_PGE!-		;PROGRAMMING ERROR OR,

                                     0562  1075 		RK_CS2_M_UFE,R2		;UNIT FIELD ERROR?

                          1F     12  0562  1076 	BNEQ	20$			;IF NEQ YES

            53       4EB5 8F     B3  0564  1077 	BITW	#RK_ER_M_BSE!-		;BAD SECTOR ERROR OR,

                                     0569  1078 		RK_ER_M_COE!-		;CYLINDER ADDRESS OVERFLOW OR,

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  22

01              RK611-RK06/RK07 HARDWARE FUNCTION EXECUTION                                                                      (1)



                                     0569  1079 		RK_ER_M_DTYE!-		;DRIVE TYPE ERROR OR,

                                     0569  1080 		RK_ER_M_FMTE!-		;FORMAT ERROR OR,

                                     0569  1081 		RK_ER_M_IDAE!-		;INVALID DISK ADDRESS ERROR OR,

                                     0569  1082 		RK_ER_M_ILF!-		;ILLEGAL FUNCTION OR,

                                     0569  1083 		RK_ER_M_NXF!-		;NONEXECUTABLE FUNCTION OR,

                                     0569  1084 		RK_ER_M_UNS!-		;DRIVE UNSAFE OR,

                                     0569  1085 		RK_ER_M_WLE,R3		;WRITE LOCK ERROR?

                          18     12  0569  1086 	BNEQ	20$			;IF NEQ YES

       00A4 C5            06     E1  056B  1087 	BBC	#RK_DS_V_VV,UCB$W_DM_DS(R5),20$ ;IF CLR, VOLUME INVALID

                          12         0570       

                                     0571  1088  

                                     0571  1089 ;

                                     0571  1090 ; RETRIABLE ERROR EXIT

                                     0571  1091 ;

                                     0571  1092  

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

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

                     0080 C5     D6  057B  1095 10$:	INCL	UCB$L_DPC(R5)		;ADJUST TO CORRECT RETURN ADDRESS

                     0080 D5     17  057F  1096 	JMP	@UCB$L_DPC(R5)		;RETURN TO DRIVER

                                     0583  1097  

                                     0583  1098 ;

                                     0583  1099 ; FATAL CONTROLLER OR DRIVE ERROR EXIT

                                     0583  1100 ;

                                     0583  1101  

                          FD0D   31  0583  1102 20$:	BRW	FATALERR		;

                                     0586  1103  

                                     0586  1104 ;

                                     0586  1105 ; SPECIAL CONDITION (POWER FAILURE OR DEVICE TIME OUT)

                                     0586  1106 ;

                                     0586  1107  

         58 A5            05     E4  0586  1108 30$:	BBSC	#UCB$V_POWER,UCB$W_STS(R5),50$ ;IF SET, POWER FAILURE

                          46         058A       

                                     058B  1109  

                                     058B  1110 ;

                                     058B  1111 ; DEVICE TIME OUT

                                     058B  1112 ;

                                     058B  1113  

                 00000000'GF     16  058B  1114 	JSB	G^ERL$DEVICTMO		;LOG DEVICE TIME OUT

            53         20 A5     D0  0591  1115 	MOVL	UCB$L_CRB(R5),R3	;GET ADDRESS OF CRB

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

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

                          08     12  059D  1118 	BNEQ	40$			;IF NEQ NO

         08 A4            20     B0  059F  1119 	MOVW	#RK_CS2_M_SCLR,RK_CS2(R4) ;CLEAR ENTIRE RK611 SUBSYSTEM

            64         40 8F     9B  05A3  1120 	MOVZBW	#RK_CS1_M_IE,RK_CS1(R4)	;ENABLE DEVICE INTERRUPTS

                                     05A7  1121 40$:	SETIPL	UCB$B_FIPL(R5)		;LOWER TO FORK LEVEL

            50       0000'8F     3C  05AB  1122 	MOVZWL	#SS$_TIMEOUT,R0		;SET DEVICE TIMEOUT STATUS

                       70 A5     97  05B0  1123 	DECB	UCB$B_ERTCNT(R5)	;ANY ERROR RETRIES REMAINING?

                          0F     13  05B3  1124 	BEQL	RESETXFR		;IF EQL NO

                                     05B5  1125 	RELCHAN				;RELEASE CHANNEL IF OWNED

         58 A5       0040 8F     AA  05BB  1126 	BICW	#UCB$M_TIMOUT,UCB$W_STS(R5) ;CLEAR TIME OUT STATUS

                          FB70   31  05C1  1127 	BRW	FDISPATCH		;

                                     05C4  1128  

                                     05C4  1129 ;

                                     05C4  1130 ; RESET TRANSFER BYTE COUNT TO ZERO

                                     05C4  1131 ;

                                     05C4  1132  

                                     05C4  1133 RESETXFR:				;

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  23

01              RK611-RK06/RK07 HARDWARE FUNCTION EXECUTION                                                                      (1)



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

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

                          FD2F   31  05CE  1136 	BRW	FUNCXT			;

                                     05D1  1137  

                                     05D1  1138 ;

                                     05D1  1139 ; POWER FAILURE

                                     05D1  1140 ;

                                     05D1  1141  

                                     05D1  1142 50$:	RELCHAN				;RELEASE CHANNEL IF OWNED

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

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

                          FB00   31  05E0  1145 	BRW	DM_STARTIO		;

                                     05E3  1146 	.DSABL	LSB

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  24

01              RK611-RK06/RK07 CLASSIFY DRIVE TYPE AND SET PAR                                                                  (1)



                                     05E3  1148 	.SBTTL	RK611-RK06/RK07 CLASSIFY DRIVE TYPE AND SET PARAMETERS

                                     05E3  1149 ;

                                     05E3  1150 ; DM_DTYPE - RK611-RK06/RK07 CLASSIFY DRIVE TYPE AND SET PARAMETERS

                                     05E3  1151 ;

                                     05E3  1152 ; THIS ROUTINE IS CALLED WHEN AN UNSOLICITED INTERRUPT OCCURS ON A DRIVE, DURING

                                     05E3  1153 ; SYSTEM INITIALIZATION, AND AT POWER RECOVERY TO DETERMINE THE DRIVE TYPE AND

                                     05E3  1154 ; SET UNIT PARAMETERS.

                                     05E3  1155 ;

                                     05E3  1156 ; INPUTS:

                                     05E3  1157 ;

                                     05E3  1158 ;	R4 = ADDRESS OF CONTROL STATUS REGISTER 1.

                                     05E3  1159 ;	R5 = DEVICE UNIT UCB ADDRESS.

                                     05E3  1160 ;

                                     05E3  1161 ; OUTPUTS:

                                     05E3  1162 ;

                                     05E3  1163 ;	THE DRIVE STATUS REGISTER IS INTERROGATED AND UNIT PARAMETERS ARE SET.

                                     05E3  1164 ;

                                     05E3  1165  

                                     05E3  1166 DM_DTYPE:				;CLASSIFY DRIVE TYPE AND SET UNIT PARAMETERS

         39 A5            00'    90  05E3  1167 	MOVB	S^#DT$_RK06,UCB$B_DEVTYPE(R5) ;SET RK06 DEVICE TYPE

         3E A5       019B 8F     B0  05E7  1168 	MOVW	#411,UCB$W_CYLINDERS(R5) ;SET NUMBER OF RK06 CYLINDERS

       0084 C5       69F6 8F     3C  05ED  1169 	MOVZWL	#411*3*22,UCB$L_MAXBLOCK(R5) ;SET MAXIMUM BLOCK NUMBER

                     0098 C5     B4  05F4  1170 	CLRW	UCB$W_DM_DTYP(R5)	;SET RK06 CONTROLLER DRIVE TYPE

         0A A4       0100 8F     B3  05F8  1171 	BITW	#RK_DS_M_DDT,RK_DS(R4)	;RK06 DRIVE?

                          18     13  05FE  1172 	BEQL	10$			;IF EQL YES

         39 A5            00'    90  0600  1173 	MOVB	S^#DT$_RK07,UCB$B_DEVTYPE(R5) ;SET RK07 DEVICE TYPE

         3E A5       032F 8F     B0  0604  1174 	MOVW	#815,UCB$W_CYLINDERS(R5) ;SET NUMBER OF RK07 CYLINDERS

       0084 C5       D21E 8F     3C  060A  1175 	MOVZWL	#815*3*22,UCB$L_MAXBLOCK(R5) ;SET MAXIMUM BLOCK NUMBER

       0098 C5       0400 8F     A8  0611  1176 	BISW	#RK_CS1_M_CDT,UCB$W_DM_DTYP(R5) ;SET RK07 CONTROLLER DRIVE TYPE

                                 05  0618  1177 10$:	RSB				;

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  25

01              RK611-RK06/RK07 REGISTER DUMP ROUTINE                                                                            (1)



                                     0619  1179 	.SBTTL	RK611-RK06/RK07 REGISTER DUMP ROUTINE

                                     0619  1180 ;

                                     0619  1181 ; DM_REGDUMP - RK611-RK06/RK07 REGISTER DUMP ROUTINE

                                     0619  1182 ;

                                     0619  1183 ; THIS ROUTINE IS CALLED TO SAVE THE CONTROLLER AND DRIVE REGISTERS IN A

                                     0619  1184 ; SPECIFIED BUFFER. IT IS CALLED FROM THE DEVICE ERROR LOGGING ROUTINE AND

                                     0619  1185 ; FROM THE DIAGNOSTIC BUFFER FILL ROUTINE.

                                     0619  1186 ;

                                     0619  1187 ; INPUTS:

                                     0619  1188 ;

                                     0619  1189 ;	R0 = ADDRESS OF REGISTER SAVE BUFFER.

                                     0619  1190 ;	R4 = ADDRESS OF CONTROL STATUS REGISTER 1.

                                     0619  1191 ;	R5 = DEVICE UNIT UCB ADDRESS.

                                     0619  1192 ;

                                     0619  1193 ; OUTPUTS:

                                     0619  1194 ;

                                     0619  1195 ;	THE CONTROLLER AND DRIVE REGISTERS ARE SAVED IN THE SPECIFIED BUFFER.

                                     0619  1196 ;

                                     0619  1197  

                                     0619  1198 DM_REGDUMP:				;RK611-RK06/RK07 REGISTER DUMP ROUTINE

            80            12     D0  0619  1199 	MOVL	#<RK_MR3+2-4+8>/2,(R0)+	;INSERT NUMBER OF DEVICE REGISTERS

            51       009A C5     DE  061C  1200 	MOVAL	UCB$W_DM_CS1(R5),R1	;GET ADDRESS OF SAVED DEVICE REGISTERS

            52            0A     D0  0621  1201 	MOVL	#<RK_MR1+2-4>/2,R2	;SET NUMBER OF REGISTERS TO MOVE

            80            81     3C  0624  1202 10$:	MOVZWL	(R1)+,(R0)+		;MOVE REGISTER TO BUFFER

            FA            52     F5  0627  1203 	SOBGTR	R2,10$			;ANY MORE TO MOVE?

            80       0090 C5     3C  062A  1204 	MOVZWL	UCB$W_EC1(R5),(R0)+	;INSERT ECC POSITION REGISTER

            80       0092 C5     3C  062F  1205 	MOVZWL	UCB$W_EC2(R5),(R0)+	;INSERT ECC PATTERN REGISTER

            80            81     3C  0634  1206 	MOVZWL	(R1)+,(R0)+		;INSERT MAINTENANCE REGISTER 2

            80            81     3C  0637  1207 	MOVZWL	(R1)+,(R0)+		;INSERT MAINTENANCE REGISTER 3

            80            81     3C  063A  1208 	MOVZWL	(R1)+,(R0)+		;INSERT DATAPATH NUMBER

            80            81     D0  063D  1209 	MOVL	(R1)+,(R0)+		;INSERT DATAPATH REGISTER

            80            81     D0  0640  1210 	MOVL	(R1)+,(R0)+		;INSERT FINAL MAP REGISTER

            80            61     D0  0643  1211 	MOVL	(R1),(R0)+		;INSERT PREVIOUS MAP REGISTER

                                 05  0646  1212 	RSB				;

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  26

01              RK06/RK07 DISK DRIVE INITIALIZATION                                                                              (1)



                                     0647  1214 	.SBTTL	RK06/RK07 DISK DRIVE INITIALIZATION

                                     0647  1215 ;

                                     0647  1216 ; DM_RK0X_INIT - RK06/RK07 DISK DRIVE INITIALIZATION

                                     0647  1217 ;

                                     0647  1218 ; THIS ROUTINE IS CALLED AT SYSTEM INITIALIZATION AND AT POWER RECOVERY TO SET

                                     0647  1219 ; DRIVE PARAMETERS AND TO WAIT FOR ONLINE DRIVES TO SPIN UP.

                                     0647  1220 ;

                                     0647  1221 ; INPUTS:

                                     0647  1222 ;

                                     0647  1223 ;	R4 = ADDRESS OF CONTROL STATUS REGISTER 1.

                                     0647  1224 ;	R5 = DEVICE UNIT UCB ADDRESS.

                                     0647  1225 ;

                                     0647  1226 ; OUTPUTS:

                                     0647  1227 ;

                                     0647  1228 ;	UNIT PARAMETERS ARE ESTABLISHED AND THE DRIVE IS SPUN UP IF IT WAS ONLINE.

                                     0647  1229 ;

                                     0647  1230  

                                     0647  1231 DM_RK0X_INIT:				;RK06/RK07 UNIT INITIALIZATION

            64       8000 8F     B0  0647  1232 	MOVW	#RK_CS1_M_CERR,RK_CS1(R4) ;CLEAR CONTROLLER ERRORS

         08 A4         48 A5     B0  064C  1233 	MOVW	UCB$W_UNIT(R5),RK_CS2(R4) ;SET UNIT NUMBER

            64            05     B0  0651  1234 	MOVW	#F_DRVCLR!1,RK_CS1(R4)	;CLEAR DRIVE AND OBTAIN STATUS

                          0098   30  0654  1235 	BSBW	DM_WAIT			;WAIT FOR FUNCTION TO COMPLETE

                          FF89   30  0657  1236 	BSBW	DM_DTYPE		;CLASSIFY DRIVE TYPE

            53         58 A5     3C  065A  1237 	MOVZWL	UCB$W_STS(R5),R3	;SAVE CURRENT UNIT STATUS

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

         08 A4       1000 8F     B3  0664  1239 	BITW	#RK_CS2_M_NED,RK_CS2(R4) ;NONEXISTENT DISK?

                          5E     12  066A  1240 	BNEQ	50$			;IF NEQ YES

         58 A5            10     A8  066C  1241 	BISW	#UCB$M_ONLINE,UCB$W_STS(R5) ;SET UNIT ONLINE

            53            0B     E1  0670  1242 	BBC	#UCB$V_VALID,R3,40$	;IF CLR, VOLUME SOFTWARE INVALID

                          43         0673       

            64       8000 8F     B0  0674  1243 10$:	MOVW	#RK_CS1_M_CERR,RK_CS1(R4) ;CLEAR CONTROLLER ERRORS

         08 A4         48 A5     B0  0679  1244 	MOVW	UCB$W_UNIT(R5),RK_CS2(R4) ;SET UNIT NUMBER

            05       0098 C5     A9  067E  1245 	BISW3	UCB$W_DM_DTYP(R5),#F_DRVCLR!1,RK_CS1(R4) ;CLEAR DRIVE

                          64         0683       

                          0068   30  0684  1246 	BSBW	DM_WAIT			;WAIT FOR FUNCTION TO COMPLETE

            64       8000 8F     B3  0687  1247 	BITW	#RK_CS1_M_CERR,RK_CS1(R4) ;ANY CONTROLLER ERRORS?

                          08     12  068C  1248 	BNEQ	20$			;IF NEQ YES

         0A A4       0080 8F     B3  068E  1249 	BITW	#RK_DS_M_DRDY,RK_DS(R4)	;DRIVE READY?

                          0B     12  0694  1250 	BNEQ	30$			;IF NEQ YES

                 00000000'GF     16  0696  1251 20$:	JSB	G^EXE$PWRTIMCHK		;CHECK FOR MAXIMUM TIME EXCEEDED

            D5            50     E8  069C  1252 	BLBS	R0,10$			;IF LBS MORE TIME TO GO

                          16     11  069F  1253 	BRB	40$			;

            03       0098 C5     A9  06A1  1254 30$:	BISW3	UCB$W_DM_DTYP(R5),#F_PACKACK!1,RK_CS1(R4) ;ACKNOWLEDGE PACK

                          64         06A6       

                          0045   30  06A7  1255 	BSBW	DM_WAIT			;WAIT FOR FUNCTION TO COMPLETE

            64       8000 8F     B3  06AA  1256 	BITW	#RK_CS1_M_CERR,RK_CS1(R4) ;ANY CONTROLLER ERRORS?

                          06     12  06AF  1257 	BNEQ	40$			;IF NEQ YES

         58 A5       0800 8F     A8  06B1  1258 	BISW	#UCB$M_VALID,UCB$W_STS(R5) ;SET VOLUME SOFTWARE VALID

            64       8000 8F     B0  06B7  1259 40$:	MOVW	#RK_CS1_M_CERR,RK_CS1(R4) ;CLEAR CONTROLLER ERRORS

         08 A4         48 A5     B0  06BC  1260 	MOVW	UCB$W_UNIT(R5),RK_CS2(R4) ;SET UNIT NUMBER

            05       0098 C5     A9  06C1  1261 	BISW3	UCB$W_DM_DTYP(R5),#F_DRVCLR!1,RK_CS1(R4) ;CLEAR DRIVE

                          64         06C6       

                          0025   30  06C7  1262 	BSBW	DM_WAIT			;WAIT FOR FUNCTION TO COMPLETE

            64       8000 8F     B0  06CA  1263 50$:	MOVW	#RK_CS1_M_CERR,RK_CS1(R4) ;CLEAR CONTROLLER ERRORS

            64         40 8F     9B  06CF  1264 	MOVZBW	#RK_CS1_M_IE,RK_CS1(R4)	;ENABLE DEVICE INTERRUPTS

                                 05  06D3  1265 	RSB				;

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  27

01              RK611-RK06/RK07 UNSOLICITED INTERRUPT ROUTINE                                                                    (1)



                                     06D4  1267 	.SBTTL	RK611-RK06/RK07 UNSOLICITED INTERRUPT ROUTINE

                                     06D4  1268 ;

                                     06D4  1269 ; DM_UNSOLNT - RK611-RK06/RK07 UNSOLICITED INTERRUPT ROUTINE

                                     06D4  1270 ;

                                     06D4  1271 ; THIS ROUTINE IS CALLED WHEN AN UNSOLICITED ATTENTION CONDITION IS DETECTED FOR

                                     06D4  1272 ; AN RK06 OR RK07 DRIVE.

                                     06D4  1273 ;

                                     06D4  1274 ; INPUTS:

                                     06D4  1275 ;

                                     06D4  1276 ;	R4 = ADDRESS OF CONTROL STATUS REGISTER 1.

                                     06D4  1277 ;	R5 = DEVICE UNIT UCB ADDRESS.

                                     06D4  1278 ;

                                     06D4  1279 ; OUTPUTS:

                                     06D4  1280 ;

                                     06D4  1281 ;	IF VOLUME VALID IS CLEAR, THEN SOFTWARE VOLUME VALID IS CLEARED. THE

                                     06D4  1282 ;	UNIT STATUS IS CHANGED TO ONLINE AND THE DRIVE TYPE AND PARAMETERS ARE

                                     06D4  1283 ;	CLASSIFIED.

                                     06D4  1284 ;

                                     06D4  1285  

                                     06D4  1286 DM_UNSOLNT:				;RK611-RK06/RK07 UNSOLICITED INTERRUPT

         58 A5            10     A8  06D4  1287 	BISW	#UCB$M_ONLINE,UCB$W_STS(R5) ;SET UNIT ONLINE

                          FF08   30  06D8  1288 	BSBW	DM_DTYPE		;CLASSIFY DRIVE TYPE

         58 A5            0B     E1  06DB  1289 	BBC	#UCB$V_VALID,UCB$W_STS(R5),10$ ;IF CLR, VOLUME SOFTWARE INVALID

                          0E         06DF       

         0A A4       0040 8F     B3  06E0  1290 	BITW	#RK_DS_M_VV,RK_DS(R4)	;VOLUME VALID?

                          06     12  06E6  1291 	BNEQ	10$			;IF NEQ YES

         58 A5       0800 8F     AA  06E8  1292 	BICW	#UCB$M_VALID,UCB$W_STS(R5) ;CLEAR SOFTWARE VOLUME VALID

                                 05  06EE  1293 10$:	RSB				;

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  28

01              WAIT FOR CONTROLLER READY                                                                                        (1)



                                     06EF  1295 	.SBTTL	WAIT FOR CONTROLLER READY

                                     06EF  1296 ;

                                     06EF  1297 ; DM_WAIT - WAIT FOR CONTROLLER READY

                                     06EF  1298 ;

                                     06EF  1299 ; THIS SUBROUTINE IS CALLED TO POLL THE RK611 CONTROLLER FOR READY. A MAX-

                                     06EF  1300 ; IMUM OF APPROXIMATELY 20 US ELAPSES BEFORE CONTROL IS RETURNED TO THE

                                     06EF  1301 ; CALLER.

                                     06EF  1302 ;

                                     06EF  1303  

                                     06EF  1304 DM_WAIT:					;WAIT FOR CONTROLLER READY

                          52     DD  06EF  1305 	PUSHL	R2			;SAVE REGISTER

                                     06F1  1306 	DSBINT				;DISABLE INTERRUPTS

            52            00'    DB  06F7  1307 	MFPR	S^#PR$_ICR,R2		;READ INTERVAL COUNT REGISTER

            52            14     C0  06FA  1308 	ADDL	#20,R2			;CALCULATE EXPIRATION TIME

                          11     19  06FD  1309 	BLSS	20$			;IF LSS NO WRAP AROUND

            52       D8F0 C2     3E  06FF  1310 	MOVAW	-10000(R2),R2		;CALCULATE WRAP AROUND VALUE

                          64     95  0704  1311 10$:	TSTB	RK_CS1(R4)		;CONTROLLER READY?

                          14     19  0706  1312 	BLSS	30$			;IF LSS YES

            7E            00'    DB  0708  1313 	MFPR	S^#PR$_ICR,-(SP)	;READ INTERVAL COUNT REGISTER

            52            8E     D1  070B  1314 	CMPL	(SP)+,R2		;TIME TO WRAP AROUND?

                          F4     14  070E  1315 	BGTR	10$			;IF GTR NO

                          64     95  0710  1316 20$:	TSTB	RK_CS1(R4)		;CONTROL READY?

                          08     19  0712  1317 	BLSS	30$			;IF LSS YES

            7E            00'    DB  0714  1318 	MFPR	S^#PR$_ICR,-(SP)	;READ INTERVAL COUNT REGISTER

            52            8E     D1  0717  1319 	CMPL	(SP)+,R2		;TIME EXPIRE YET?

                          F4     19  071A  1320 	BLSS	20$			;IF LSS NO

                                     071C  1321 30$:	ENBINT				;ENABLE INTERRUPTS

                          52   8ED0  071F  1322 	POPL	R2			;RESTORE REGISTER

                                 05  0722  1323 	RSB				;

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  29

01              RK611 DISK CONTROLLER INTERRUPT DISPATCHER                                                                       (1)



                                     0723  1325 	.SBTTL	RK611 DISK CONTROLLER INTERRUPT DISPATCHER

                                     0723  1326 ;+

                                     0723  1327 ; DM$INT - RK611 DISK CONTROLLER INTERRUPT DISPATCHER

                                     0723  1328 ;

                                     0723  1329 ; THIS ROUTINE IS ENTERED VIA A JSB INSTRUCTION WHEN AN INTERRUPT OCCURS

                                     0723  1330 ; ON AN RK611 DISK CONTROLLER. THE STATE OF THE STACK ON ENTRY IS:

                                     0723  1331 ;

                                     0723  1332 ;	00(SP) = ADDRESS OF IDB ADDRESS.

                                     0723  1333 ;	04(SP) = SAVED R2.

                                     0723  1334 ;	08(SP) = SAVED R3.

                                     0723  1335 ;	12(SP) = SAVED R4.

                                     0723  1336 ;	16(SP) = SAVED R5.

                                     0723  1337 ;	20(SP) = INTERRUPT PC.

                                     0723  1338 ;	24(SP) = INTERRUPT PSL.

                                     0723  1339 ;

                                     0723  1340 ; INTERRUPT DISPATCHING OCCURS AS FOLLOWS:

                                     0723  1341 ;

                                     0723  1342 ;	IF THE INTERRUPTING CONTROLLER IS CURRENTLY OWNED AND THE OWNER

                                     0723  1343 ;	UNIT IS EXPECTING AN INTERRUPT, THEN THAT UNIT IS DISPATCHED FIRST.

                                     0723  1344 ;	ALL OTHER UNITS ARE DISPATCHED BY READING THE ATTENTION SUMMARY

                                     0723  1345 ;	REGISTER AND SCANNING FOR UNITS THAT HAVE ATTENTION SET. AS EACH

                                     0723  1346 ;	UNIT IS FOUND,  A TEST IS MADE TO DETERMINE IF AN INTERRUPT IS

                                     0723  1347 ;	EXPECTED ON THE UNIT. IF YES, THEN THE DRIVER IS CALLED AT ITS

                                     0723  1348 ;	INTERRUPT RETURN ADDRESS. ELSE THE DRIVER IS CALLED AT ITS UNSOL-

                                     0723  1349 ;	ICITED INTERRUPT ADDRESS. AS EACH CALL TO THE DRIVER RETURNS, THE

                                     0723  1350 ;	ATTENTION SUMMARY REGISTER IS REREAD AND AN ATTEMPT IS MADE TO FIND

                                     0723  1351 ;	ANOTHER UNIT TO DISPATCH. WHEN NO UNITS REQUESTING ATTENTION REMAIN,

                                     0723  1352 ;	THE INTERRUPT IS DISMISSED.

                                     0723  1353 ;-

                                     0723  1354  

                                     0723  1355 DM$INT::				;RK611 DISK CONTROLLER INTERRUPT DISPATCHER

            53         00 BE     D0  0723  1356 	MOVL	@(SP),R3		;GET ADDRESS OF IDB

            54            63     D0  0727  1357 	MOVL	IDB$L_CSR(R3),R4	;GET ADDRESS OF CONTROL STATUS REGISTER 1

            55         04 A3     D0  072A  1358 	MOVL	IDB$L_OWNER(R3),R5	;GET OWNER UNIT UCB ADDRESS

                          05     13  072E  1359 	BEQL	10$			;IF EQL NO OWNER

         58 A5            01     E4  0730  1360 	BBSC	#UCB$V_INT,UCB$W_STS(R5),30$ ;IF SET, INTERRUPT EXPECTED

                          3D         0734       

            64       8000 8F     B0  0735  1361 10$:	MOVW	#RK_CS1_M_CERR,RK_CS1(R4) ;CLEAR CONTROLLER

            52         0E A4     3C  073A  1362 	MOVZWL	RK_AS(R4),R2		;READ ATTENTION SUMMARY REGISTER

            08            08     EA  073E  1363 	FFS	#8,#8,R2,R2		;FIND FIRST UNIT REQUESTING ATTENTION

            52            52         0741       

                          11     12  0743  1364 	BNEQ	20$			;IF NEQ UNIT FOUND

            64         40 8F     9B  0745  1365 	MOVZBW	#RK_CS1_M_IE,RK_CS1(R4)	;ENABLE DEVICE INTERRUPTS

            5E            04     C0  0749  1366 	ADDL	#4,SP			;CLEAN STACK

            50            8E     7D  074C  1367 	MOVQ	(SP)+,R0		;RESTORE REGISTERS

            52            8E     7D  074F  1368 	MOVQ	(SP)+,R2		;

            54            8E     7D  0752  1369 	MOVQ	(SP)+,R4		;

                                 02  0755  1370 	REI				;

            52            08     C2  0756  1371 20$:	SUBL	#8,R2			;CALCULATE UNIT NUMBER

         08 A4            52     B0  0759  1372 	MOVW	R2,RK_CS2(R4)		;SET UNIT NUMBER

            55         10 A342   D0  075D  1373 	MOVL	IDB$L_UCBLST(R3)[R2],R5	;GET ADDRESS OF UCB

                          7A     13  0762  1374 	BEQL	80$			;IF EQL NO CORRESPONDING UNIT

            01       0098 C5     A9  0764  1375 	BISW3	UCB$W_DM_DTYP(R5),#F_NOP!1,RK_CS1(R4) ;SELECT DRIVE AND GET STATUS

                          64         0769       

                          FF82   30  076A  1376 	BSBW	DM_WAIT			;WAIT FOR CONTROLLER READY

         58 A5            01     E5  076D  1377 	BBCC	#UCB$V_INT,UCB$W_STS(R5),70$ ;IF CLR, INTERRUPT NOT EXPECTED

                          54         0771       

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  30

01              RK611 DISK CONTROLLER INTERRUPT DISPATCHER                                                                       (1)



         77 A5            0E     91  0772  1378 30$:	CMPB	#CDF_READHEAD,UCB$B_CEX(R5) ;READ HEADER FUNCTION?

                          12     12  0776  1379 	BNEQ	40$			;IF NEQ NO

       00C0 C5         14 A4     B0  0778  1380 	MOVW	RK_DB(R4),UCB$W_DM_DB(R5) ;SAVE SECTOR HEADER INFORMATION

       00C2 C5         14 A4     B0  077E  1381 	MOVW	RK_DB(R4),UCB$W_DM_DB+2(R5) ;

       00C4 C5         14 A4     B0  0784  1382 	MOVW	RK_DB(R4),UCB$W_DM_DB+4(R5) ;

            52            64     9E  078A  1383 40$:	MOVAB	RK_CS1(R4),R2		;GET ADDRESS OF CONTROL STATUS REGISTER 1

            53       009A C5     9E  078D  1384 	MOVAB	UCB$W_DM_CS1(R5),R3	;GET ADDRESS OF REGISTER SAVE AREA

            83            82     B0  0792  1385 	MOVW	(R2)+,(R3)+		;SAVE CONTROL STATUS REGISTER 1

                          65     19  0795  1386 	BLSS	100$			;IF LSS ERROR ENCOUNTERED

         5A A5            01     E0  0797  1387 	BBS	#UCB$V_DIAGBUF,UCB$W_DEVSTS(R5),100$ ;IF SET, DIAGNOSTIC BUFFER

                          60         079B       

            83            82     B0  079C  1388 	MOVW	(R2)+,(R3)+		;SAVE WORD COUNT REGISTER

            63            62     B0  079F  1389 	MOVW	(R2),(R3)		;SAVE BUFFER ADDRESS REGISTER

            53         10 A5     7D  07A2  1390 50$:	MOVQ	UCB$L_FR3(R5),R3	;RESTORE DRIVER CONTEXT

                       0C B5     16  07A6  1391 	JSB	@UCB$L_FPC(R5)		;CALL DRIVER AT INTERRUPT RETURN ADDRESS

            53         00 BE     D0  07A9  1392 	MOVL	@(SP),R3		;GET ADDRESS OF IDB

            54            63     D0  07AD  1393 	MOVL	IDB$L_CSR(R3),R4	;GET ADDRESS OF CONTROL STATUS REGISTER 1

            64       8000 8F     B0  07B0  1394 60$:	MOVW	#RK_CS1_M_CERR,RK_CS1(R4) ;CLEAR CONTROLLER

         08 A4         48 A5     B0  07B5  1395 	MOVW	UCB$W_UNIT(R5),RK_CS2(R4) ;SET UNIT NUMBER

            05       0098 C5     A9  07BA  1396 	BISW3	UCB$W_DM_DTYP(R5),#F_DRVCLR!1,RK_CS1(R4) ;CLEAR DRIVE ERRORS

                          64         07BF       

                          FF2C   30  07C0  1397 	BSBW	DM_WAIT			;WAIT FOR CONTROLLER READY

                          FF6F   31  07C3  1398 	BRW	10$			;

                          FF0B   30  07C6  1399 70$:	BSBW	DM_UNSOLNT		;CALL UNSOLICITED INTERRUPT ROUTINE

            53         00 BE     D0  07C9  1400 	MOVL	@(SP),R3		;GET ADDRESS OF IDB

            54            63     D0  07CD  1401 	MOVL	IDB$L_CSR(R3),R4	;GET ADDRESS OF CONTROL STATUS REGISTER 1

            64       8000 8F     B3  07D0  1402 	BITW	#RK_CS1_M_CERR,RK_CS1(R4) ;ANY ERROR CONDITION PRESENT?

                          D9     13  07D5  1403 	BEQL	60$			;IF EQL NO

         08 A4            20     B0  07D7  1404 	MOVW	#RK_CS2_M_SCLR,RK_CS2(R4) ;CLEAR ENTIRE RK611 SUBSYSTEM

                          FF57   31  07DB  1405 	BRW	10$			;

            64       0405 8F     B0  07DE  1406 80$:	MOVW	#RK_CS1_M_CDT!F_DRVCLR!1,RK_CS1(R4) ;CLEAR RK07 DRIVE

                          FF09   30  07E3  1407 	BSBW	DM_WAIT			;WAIT FOR FUNCTION TO COMPLETE

                          64     B5  07E6  1408 	TSTW	RK_CS1(R4)		;SUCCESSFUL COMPLETION?

                          0F     18  07E8  1409 	BGEQ	90$			;IF GEQ YES

            64       8000 8F     B0  07EA  1410 	MOVW	#RK_CS1_M_CERR,RK_CS1(R4) ;CLEAR CONTROLLER

         08 A4            52     B0  07EF  1411 	MOVW	R2,RK_CS2(R4)		;SET UNIT NUMBER

            64            05     B0  07F3  1412 	MOVW	#F_DRVCLR!1,RK_CS1(R4)	;CLEAR RK06 DRIVE

                          FEF6   30  07F6  1413 	BSBW	DM_WAIT			;WAIT FOR FUNCTION TO COMPLETE

                          FF39   31  07F9  1414 90$:	BRW	10$			;

            83            82     B0  07FC  1415 100$:	MOVW	(R2)+,(R3)+		;SAVE WORD COUNT REGISTER

            83            82     B0  07FF  1416 	MOVW	(R2)+,(R3)+		;SAVE BUFFER ADDRESS REGISTER

            83            82     B0  0802  1417 	MOVW	(R2)+,(R3)+		;SAVE DESIRED SECTOR/TRACK ADDRESS REGISTER

            83            82     B0  0805  1418 	MOVW	(R2)+,(R3)+		;SAVE CONTROL STATUS REGISTER 2

            83            82     B0  0808  1419 	MOVW	(R2)+,(R3)+		;SAVE DRIVE STATUS REGISTER

            83            82     B0  080B  1420 	MOVW	(R2)+,(R3)+		;SAVE ERROR REGISTER

            83            82     B0  080E  1421 	MOVW	(R2)+,(R3)+		;SAVE ATTENTION SUMMARY/OFFSET REGISTER

            83            82     B0  0811  1422 	MOVW	(R2)+,(R3)+		;SAVE DESIRED CYLINDER ADDRESS REGISTER

            52            04     C0  0814  1423 	ADDL	#4,R2			;POINT TO MAINTENANCE REGISTER 1

            83            82     B0  0817  1424 	MOVW	(R2)+,(R3)+		;SAVE MAINTENANCE REGISTER 1

       0090 C5            82     B0  081A  1425 	MOVW	(R2)+,UCB$W_EC1(R5)	;SAVE ECC POSITION REGISTER

       0092 C5            82     B0  081F  1426 	MOVW	(R2)+,UCB$W_EC2(R5)	;SAVE ECC PATTERN REGISTER

            83            82     B0  0824  1427 	MOVW	(R2)+,(R3)+		;SAVE MAINTENANCE REGISTER 2

            63            62     B0  0827  1428 	MOVW	(R2),(R3)		;SAVE MAINTENANCE REGISTER 3

       00A2 C5            09     E1  082A  1429 	BBC	#RK_CS2_V_MDS,UCB$W_DM_CS2(R5),110$ ;IF CLR, NO MULTI-DRIVE SELECT

                          04         082F       

         08 A4            20     B0  0830  1430 	MOVW	#RK_CS2_M_SCLR,RK_CS2(R4) ;CLEAR ENTIRE SUBSYSTEM

                          FF6B   31  0834  1431 110$:	BRW	50$			;

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  31

01              RK611 DISK CONTROLLER INITIALIZATION                                                                             (1)



                                     0837  1433 	.SBTTL	RK611 DISK CONTROLLER INITIALIZATION

                                     0837  1434 ;+

                                     0837  1435 ; DM_RK611_INIT - RK611 DISK CONTROLLER INITIALIZATION

                                     0837  1436 ;

                                     0837  1437 ; THIS ROUTINE IS CALLED VIA A JSB INSTRUCTION AT SYSTEM STARTUP AND AFTER

                                     0837  1438 ; A POWER RECOVERY RESTART TO ALLOW INITIALIZATION OF RK611 DISK CONTROLLERS.

                                     0837  1439 ; 

                                     0837  1440 ; INPUTS:

                                     0837  1441 ;

                                     0837  1442 ;	R0 = SCRATCH.

                                     0837  1443 ;	R1 = SCRATCH.

                                     0837  1444 ;	R2 = SCRATCH.

                                     0837  1445 ;	R3 = SCRATCH.

                                     0837  1446 ;	R4 = ADDRESS OF CONTROL STATUS REGISTER 1.

                                     0837  1447 ;	R5 = ADDRESS OF CONTROLLER IDB.

                                     0837  1448 ;

                                     0837  1449 ;	ALL INTERRUPTS ARE LOCKED OUT.

                                     0837  1450 ;

                                     0837  1451 ; OUTPUTS:

                                     0837  1452 ;

                                     0837  1453 ;	THE RK611 CONTROLLER IS INITIALIZED AND INTERRUPTS ARE ENABLED.

                                     0837  1454 ;-

                                     0837  1455  

                                     0837  1456 DM_RK611_INIT:				;RK611 DISK CONTROLLER INITIALIZATION

         08 A4            20     B0  0837  1457 	MOVW	#RK_CS2_M_SCLR,RK_CS2(R4) ;CLEAR CONTROLLER AND ALL DRIVES

            64         40 8F     9B  083B  1458 	MOVZBW	#RK_CS1_M_IE,RK_CS1(R4)	;ENABLE DEVICE INTERRUPTS

                                 05  083F  1459 	RSB				;

                                     0840  1460 DM_END:					;ADDRESS OF LAST LOCATION IN DRIVER

                                     0840  1461  

                                     0840  1462 	.END

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  32

SYMBOL TABLE                                                                                                                     (1)



$$OP           = 00000002            CRB$L_WQBL       00000004            DPT$T_NAME       00000016            

ACP$ACCESS       ********   X   04   CRB$L_WQFL       00000000            DPT$V_NOUNLOAD = 00000002            

ACP$DEACCESS     ********   X   04   CRB$M_BSY      = 00000001            DPT$V_SUBCNTRL = 00000000            

ACP$MODIFY       ********   X   04   CRB$V_BSY      = 00000000            DPT$V_SVP      = 00000001            

ACP$MOUNT        ********   X   04   CRB$W_REFC       0000000C            DPT$W_INITTAB    00000010            

ACP$READBLK      ********   X   04   CRB$W_SIZE       00000008            DPT$W_REINITTAB  00000012            

ACP$WRITEBLK     ********   X   04   DATACHECK        0000018E R     04   DPT$W_SIZE       00000008            

ADP$B_NUMBER     0000000B            DC$_DISK         ********   X   03   DPT$W_UCBSIZE    0000000E            

ADP$B_TYPE       0000000A            DDB$B_ACPCLASS   00000013            DPT$W_UNLOAD     00000014            

ADP$C_MBAADPLEN  00000014            DDB$B_TYPE       0000000A            DRVCLR           00000169 R     04   

ADP$C_NUMDATAP = 00000010            DDB$C_LENGTH     00000034            DT$_RK06         ********   X   04   

ADP$C_UBAADPLEN  00000070            DDB$K_LENGTH     00000034            DT$_RK07         ********   X   04   

ADP$K_MBAADPLEN  00000014            DDB$L_ACPD       00000010            DYN$C_CRB        ********   X   03   

ADP$K_UBAADPLEN  00000070            DDB$L_DDT        0000000C            DYN$C_DDB        ********   X   03   

ADP$L_CRB        00000010            DDB$L_LINK       00000000            DYN$C_DPT        ********   X   03   

ADP$L_CSR        00000000            DDB$L_UCB        00000004            DYN$C_UCB        ********   X   03   

ADP$L_DPQBL      00000018            DDB$T_DRVNAME    00000024            ECC              000001EB R     04   

ADP$L_DPQFL      00000014            DDB$T_NAME       00000014            EMB$B_BUFIND     00000002            

ADP$L_INTD       00000064            DDB$W_SIZE       00000008            EMB$B_DEVCLS     00000005            

ADP$L_LINK       00000004            DEV$M_AVL        ********   X   03   EMB$B_DEVTYP     00000004            

ADP$L_MRQBL      00000020            DEV$M_DIR        ********   X   03   EMB$B_DV_CLASS   0000001C            

ADP$L_MRQFL      0000001C            DEV$M_ELG        ********   X   03   EMB$B_DV_ERTCNT  00000010            

ADP$L_VECTOR     00000010            DEV$M_FOD        ********   X   03   EMB$B_DV_ERTMAX  00000011            

ADP$W_ADPTYPE    0000000E            DEV$M_IDV        ********   X   03   EMB$B_DV_SLAVE   0000003A            

ADP$W_DPBITMAP   00000024            DEV$M_ODV        ********   X   03   EMB$B_DV_TYPE    0000001D            

ADP$W_MRBITMAP   00000026            DEV$M_RND        ********   X   03   EMB$B_VALID      00000003            

ADP$W_SIZE       00000008            DEV$M_SHR        ********   X   03   EMB$C_AW       = 00000007            

ADP$W_TR         0000000C            DM$DDT           00000000 RG    04   EMB$C_BE       = 00000004            

AT$_UBA          ********   X   03   DM$INT           00000723 RG    04   EMB$C_CR       = 00000025            

BIT...         = 00000002            DM_ALIGN         000000D2 R     04   EMB$C_CS       = 00000020            

CDF_DRVCLR     = 00000004            DM_DTYPE         000005E3 R     04   EMB$C_DE       = 00000001            

CDF_NOP        = 00000000            DM_END           00000840 R     04   EMB$C_DT       = 00000060            

CDF_OFFSET     = 00000006            DM_FUNCTABLE     0000003E R     04   EMB$C_HE       = 00000008            

CDF_PACKACK    = 00000008            DM_M_DCK       = 00000002            EMB$C_LENGTH     00000004            

CDF_READDATA   = 0000000C            DM_M_ECI       = 00000001            EMB$C_MC       = 00000002            

CDF_READHEAD   = 0000000E            DM_REGDUMP       00000619 R     04   EMB$C_NF       = 00000023            

CDF_RECAL      = 00000003            DM_RK0X_INIT     00000647 R     04   EMB$C_NM       = 0000002A            

CDF_RELEASE    = 00000005            DM_RK611_INIT    00000837 R     04   EMB$C_OM       = 00000029            

CDF_RETCENTER  = 00000007            DM_STARTIO       000000E3 R     04   EMB$C_SA       = 00000005            

CDF_SEEK       = 00000002            DM_UNSOLNT       000006D4 R     04   EMB$C_SBC      = 00000028            

CDF_STARTSPNDL = 00000009            DM_V_DCK       = 00000001            EMB$C_SE       = 00000006            

CDF_UNLOAD     = 00000001            DM_V_ECI       = 00000000            EMB$C_SS       = 00000027            

CDF_WRITECHECK = 0000000A            DM_WAIT          000006EF R     04   EMB$C_TS       = 00000026            

CDF_WRITEDATA  = 0000000B            DPT$B_ADPTYPE    0000000C            EMB$C_TS_LENGTH  00000010            

CDF_WRITEHEAD  = 0000000D            DPT$B_FLAGS      0000000D            EMB$C_UBC      = 00000070            

CHECKRETRY       000001BA R     04   DPT$B_REFC       0000000B            EMB$C_UI       = 00000061            

CHECKXT          000001C4 R     04   DPT$B_TYPE       0000000A            EMB$C_VD       = 00000041            

CRB$B_MASK       0000000E            DPT$C_LENGTH     00000022            EMB$C_VM       = 00000040            

CRB$B_TT_ATTN    00000004            DPT$INITAB       0000001F R     03   EMB$C_WS       = 00000024            

CRB$B_TT_EXPEC   00000005            DPT$K_LENGTH     00000022            EMB$K_AW       = 00000007            

CRB$B_TYPE       0000000A            DPT$L_BLINK      00000004            EMB$K_BE       = 00000004            

CRB$C_LENGTH     00000038            DPT$L_FLINK      00000000            EMB$K_CR       = 00000025            

CRB$K_LENGTH     00000038            DPT$M_NOUNLOAD = 00000004            EMB$K_CS       = 00000020            

CRB$L_INTD       00000014            DPT$M_SUBCNTRL = 00000001            EMB$K_DE       = 00000001            

CRB$L_INTD2      00000038            DPT$M_SVP      = 00000002            EMB$K_DT       = 00000060            

CRB$L_LINK       00000010            DPT$REINITAB     00000052 R     03   EMB$K_HE       = 00000008            

CRB$L_TT_DIAL    00000000            DPT$TAB          00000000 R     03   EMB$K_LENGTH     00000004            

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  33

SYMBOL TABLE                                                                                                                     (1)



EMB$K_MC       = 00000002            F_OFFSET       = 0000000C            IO$M_SHUTDOWN  = 00000080            

EMB$K_NF       = 00000023            F_PACKACK      = 00000002            IO$M_STARTUP   = 00000040            

EMB$K_NM       = 0000002A            F_READDATA     = 00000010            IO$M_SYNCH     = 00000200            

EMB$K_OM       = 00000029            F_READHEAD     = 00000014            IO$M_TIMED     = 00000080            

EMB$K_SA       = 00000005            F_RECAL        = 0000000A            IO$M_TRMNOECHO = 00001000            

EMB$K_SBC      = 00000028            F_RELEASE      = 00000000            IO$M_WRTATTN   = 00000100            

EMB$K_SE       = 00000006            F_RETCENTER    = 0000000C            IO$S_FCODE     = 00000006            

EMB$K_SS       = 00000027            F_SEEK         = 0000000E            IO$V_ABORT     = 00000008            

EMB$K_TS       = 00000026            F_STARTSPNDL   = 00000008            IO$V_ACCESS    = 00000006            

EMB$K_TS_LENGTH  00000010            F_UNLOAD       = 00000006            IO$V_ATTNAST   = 00000008            

EMB$K_UBC      = 00000070            F_WRITECHECK   = 00000018            IO$V_BINARY    = 00000006            

EMB$K_UI       = 00000061            F_WRITEDATA    = 00000012            IO$V_CANCTRLO  = 00000006            

EMB$K_VD       = 00000041            F_WRITEHEAD    = 00000016            IO$V_COMMOD    = 00000006            

EMB$K_VM       = 00000040            GBL...         = 00000000            IO$V_CREATE    = 00000007            

EMB$K_WS       = 00000024            IDB$B_TYPE       0000000A            IO$V_CTRLCAST  = 00000008            

EMB$L_DV_CHAR    00000036            IDB$B_UNITS      0000000B            IO$V_CTRLYAST  = 00000007            

EMB$L_DV_MEDIA   00000026            IDB$C_LENGTH     00000030            IO$V_CVTLOW    = 00000008            

EMB$L_DV_OPCNT   0000002E            IDB$K_LENGTH     00000030            IO$V_DATACHECK = 0000000E            

EMB$L_DV_OWNUIC  00000032            IDB$L_ADP        0000000C            IO$V_DELETE    = 00000008            

EMB$L_DV_REGSAV  0000004E            IDB$L_CSR        00000000            IO$V_DMOUNT    = 0000000A            

EMB$L_DV_RQPID   0000001E            IDB$L_OWNER      00000004            IO$V_DSABLMBX  = 0000000A            

EMB$Q_DV_IOSB    00000012            IDB$L_UCBLST     00000010            IO$V_ENABLMBX  = 00000007            

EMB$Q_DV_TIME    00000006            IDB$W_SIZE       00000008            IO$V_FCODE     = 00000000            

EMB$Q_HD_TIME    00000006            IMMED            00000362 R     04   IO$V_HANGUP    = 00000009            

EMB$Q_TS_TIME    00000006            IO$M_ABORT     = 00000100            IO$V_INHERLOG  = 0000000B            

EMB$T_DV_NAME    0000003E            IO$M_ACCESS    = 00000040            IO$V_INHEXTGAP = 0000000C            

EMB$W_DV_BCNT    00000024            IO$M_ATTNAST   = 00000100            IO$V_INHRETRY  = 0000000F            

EMB$W_DV_BOFF    00000022            IO$M_BINARY    = 00000040            IO$V_INHSEEK   = 0000000C            

EMB$W_DV_DEVSTS  0000001A            IO$M_CANCTRLO  = 00000040            IO$V_INTERRUPT = 00000006            

EMB$W_DV_ENTRY   00000004            IO$M_COMMOD    = 00000040            IO$V_INTSKIP   = 00000008            

EMB$W_DV_ERRCNT  0000002C            IO$M_CREATE    = 00000080            IO$V_MOUNT     = 00000009            

EMB$W_DV_ERRSEQ  0000000E            IO$M_CTRLCAST  = 00000100            IO$V_NOECHO    = 00000006            

EMB$W_DV_FUNC    0000003C            IO$M_CTRLYAST  = 00000080            IO$V_NOFILTR   = 00000009            

EMB$W_DV_UNIT    0000002A            IO$M_CVTLOW    = 00000100            IO$V_NOFORMAT  = 00000008            

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

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

EMB$W_SIZE       00000000            IO$M_DMOUNT    = 00000400            IO$V_PACKED    = 00000007            

EMB$W_TS_ENTRY   00000004            IO$M_DSABLMBX  = 00000400            IO$V_PURGE     = 0000000B            

EMB$W_TS_ERRSEQ  0000000E            IO$M_ENABLMBX  = 00000080            IO$V_READATTN  = 00000007            

ENBXIT           000003E9 R     04   IO$M_FCODE     = 0000003F            IO$V_REVERSE   = 00000006            

ERL$DEVICERR     ********   X   04   IO$M_HANGUP    = 00000200            IO$V_SHUTDOWN  = 00000007            

ERL$DEVICTMO     ********   X   04   IO$M_INHERLOG  = 00000800            IO$V_STARTUP   = 00000006            

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

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

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

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

EXE$SENSEMODE    ********   X   04   IO$M_INTSKIP   = 00000100            IO$_ACCESS     = 00000032            

EXE$SETCHAR      ********   X   04   IO$M_MOUNT     = 00000200            IO$_ACPCONTROL = 00000038            

EXE$ZEROPARM     ********   X   04   IO$M_NOECHO    = 00000040            IO$_CREATE     = 00000033            

FATALERR         00000293 R     04   IO$M_NOFILTR   = 00000200            IO$_DEACCESS   = 00000034            

FDISPATCH        00000134 R     04   IO$M_NOFORMAT  = 00000100            IO$_DELETE     = 00000035            

FEXH             00000325 R     04   IO$M_NOW       = 00000040            IO$_DIAGNOSE   = 0000001D            

FEXL             0000032E R     04   IO$M_NOWAIT    = 00000080            IO$_DRVCLR     = 00000004            

FTAB             00000018 R     04   IO$M_PACKED    = 00000080            IO$_ERASETAPE  = 00000006            

FUNCXT           00000300 R     04   IO$M_PURGE     = 00000800            IO$_LOGICAL    = 0000002F            

F_DRVCLR       = 00000004            IO$M_READATTN  = 00000080            IO$_MODIFY     = 00000036            

F_NOP          = 00000000            IO$M_REVERSE   = 00000040            IO$_MOUNT      = 00000039            

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  34

SYMBOL TABLE                                                                                                                     (1)



IO$_NOP        = 00000000            IRP$B_RMOD       0000000B            IRP$W_TT_PRMPT   0000003C            

IO$_OFFSET     = 00000006            IRP$B_TYPE       0000000A            MASKH          = 00000008            

IO$_PACKACK    = 00000008            IRP$C_LENGTH     0000004C            MASKL          = 04000000            

IO$_PHYSICAL   = 0000001F            IRP$K_LENGTH     0000004C            NOP              00000169 R     04   

IO$_READHEAD   = 0000000E            IRP$L_AST        00000010            NORMAL           000001C1 R     04   

IO$_READLBLK   = 00000021            IRP$L_ASTPRM     00000014            OFF              0000022D R     04   

IO$_READPBLK   = 0000000C            IRP$L_DIAGBUF    00000044            OFFSET           00000169 R     04   

IO$_READPRESET = 00000019            IRP$L_IOQBL      00000004            OFFSETERR        0000028E R     04   

IO$_READPROMPT = 00000037            IRP$L_IOQFL      00000000            OFFSIZ         = 00000008            

IO$_READTRACKD = 00000010            IRP$L_IOSB       00000024            OFFTAB           00000036 R     04   

IO$_READVBLK   = 00000031            IRP$L_IOST1      00000034            PACKACK          00000169 R     04   

IO$_RECAL      = 00000003            IRP$L_IOST2      00000038            POSIT            0000038D R     04   

IO$_RELEASE    = 00000005            IRP$L_MEDIA      00000034            PR$_ICR          ********   X   04   

IO$_RETCENTER  = 00000007            IRP$L_PID        0000000C            PR$_IPL          ********   X   04   

IO$_REWIND     = 00000024            IRP$L_SEGVBN     00000040            READDATA         0000017A R     04   

IO$_REWINDOFF  = 00000022            IRP$L_SEQNUM     00000048            READHEAD         0000016F R     04   

IO$_SEARCH     = 00000009            IRP$L_SVAPTE     0000002C            RECAL            00000169 R     04   

IO$_SEEK       = 00000002            IRP$L_TT_TERM    00000038            RELEASE          00000169 R     04   

IO$_SENSECHAR  = 0000001B            IRP$L_UCB        0000001C            RELES            0000035F R     04   

IO$_SENSEMODE  = 00000027            IRP$L_WIND       00000018            RESETXFR         000005C4 R     04   

IO$_SETCHAR    = 0000001A            IRP$M_BUFIO    = 00000001            RETCENTER        00000169 R     04   

IO$_SETMODE    = 00000023            IRP$M_CHAINED  = 00000020            RETREG           00000537 R     04   

IO$_SKIPFILE   = 00000025            IRP$M_COMPLX   = 00000008            RETRY            000001E8 R     04   

IO$_SKIPRECORD = 00000026            IRP$M_DIAGBUF  = 00000080            RETRYERR         00000278 R     04   

IO$_SPACEFILE  = 00000002            IRP$M_FUNC     = 00000002            RK_AS            0000000E            

IO$_SPACERECORD= 00000009            IRP$M_MBXIO    = 00000400            RK_AS_M_ATTN   = 0000FF00            

IO$_STARTSPNDL = 00000019            IRP$M_PAGIO    = 00000004            RK_AS_S_ATTN   = 00000008            

IO$_UNLOAD     = 00000001            IRP$M_PHYSIO   = 00000100            RK_AS_S_OF     = 00000007            

IO$_VIRTUAL    = 0000003F            IRP$M_PRIVIO   = 00000200            RK_AS_V_ATTN   = 00000008            

IO$_WRITECHECK = 0000000A            IRP$M_SWAPIO   = 00000040            RK_AS_V_OF     = 00000000            

IO$_WRITECHECKH= 00000018            IRP$M_VIRTUAL  = 00000010            RK_BA            00000004            

IO$_WRITEHEAD  = 0000000D            IRP$Q_NT_PRVMSK  0000003C            RK_CS1           00000000            

IO$_WRITELBLK  = 00000020            IRP$S_FCODE    = 00000006            RK_CS1_M_CDT   = 00000400            

IO$_WRITEMARK  = 0000001C            IRP$S_FMOD     = 0000000A            RK_CS1_M_CERR  = 00008000            

IO$_WRITEOF    = 00000028            IRP$S_MODE     = 00000002            RK_CS1_M_CFMT  = 00001000            

IO$_WRITEPBLK  = 0000000B            IRP$V_BUFIO    = 00000000            RK_CS1_M_CTO   = 00000800            

IO$_WRITETRACKD= 0000000F            IRP$V_CHAINED  = 00000005            RK_CS1_M_DI    = 00004000            

IO$_WRITEVBLK  = 00000030            IRP$V_COMPLX   = 00000003            RK_CS1_M_DPPE  = 00000020            

IOC$APPLYECC     ********   X   04   IRP$V_DIAGBUF  = 00000007            RK_CS1_M_GO    = 00000001            

IOC$DIAGBUFILL   ********   X   04   IRP$V_FCODE    = 00000000            RK_CS1_M_IE    = 00000040            

IOC$LOADUBAMAP   ********   X   04   IRP$V_FMOD     = 00000006            RK_CS1_M_RDY   = 00000080            

IOC$MOVTOUSER    ********   X   04   IRP$V_FUNC     = 00000001            RK_CS1_M_SPAR  = 00002000            

IOC$RELCHAN      ********   X   04   IRP$V_MBXIO    = 0000000A            RK_CS1_S_FCODE = 00000004            

IOC$RELDATAP     ********   X   04   IRP$V_MODE     = 00000000            RK_CS1_S_MEX   = 00000002            

IOC$RELMAPREG    ********   X   04   IRP$V_PAGIO    = 00000002            RK_CS1_V_CDT   = 0000000A            

IOC$REQCOM       ********   X   04   IRP$V_PHYSIO   = 00000008            RK_CS1_V_CERR  = 0000000F            

IOC$REQDATAP     ********   X   04   IRP$V_PRIVIO   = 00000009            RK_CS1_V_CFMT  = 0000000C            

IOC$REQMAPREG    ********   X   04   IRP$V_SWAPIO   = 00000006            RK_CS1_V_CTO   = 0000000B            

IOC$REQPCHANH    ********   X   04   IRP$V_VIRTUAL  = 00000004            RK_CS1_V_DI    = 0000000E            

IOC$REQPCHANL    ********   X   04   IRP$W_ABCNT      0000003C            RK_CS1_V_DPPE  = 00000005            

IOC$RETURN       ********   X   04   IRP$W_BCNT       00000032            RK_CS1_V_FCODE = 00000001            

IOC$UPDATRANSP   ********   X   04   IRP$W_BOFF       00000030            RK_CS1_V_GO    = 00000000            

IOC$WFIKPCH      ********   X   04   IRP$W_CHAN       00000028            RK_CS1_V_IE    = 00000006            

IOC$WFIRLCH      ********   X   04   IRP$W_FUNC       00000020            RK_CS1_V_MEX   = 00000008            

IRP$B_CARCON     00000038            IRP$W_OBCNT      0000003E            RK_CS1_V_RDY   = 00000007            

IRP$B_EFN        00000022            IRP$W_SIZE       00000008            RK_CS1_V_SPAR  = 0000000D            

IRP$B_PRI        00000023            IRP$W_STS        0000002A            RK_CS2           00000008            

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  35

SYMBOL TABLE                                                                                                                     (1)



RK_CS2_M_BAI   = 00000010            RK_DS_V_SVAL   = 0000000F            SS$_NONEXDRV     ********   X   04   

RK_CS2_M_DLT   = 00008000            RK_DS_V_VV     = 00000006            SS$_NORMAL       ********   X   04   

RK_CS2_M_IR    = 00000040            RK_DS_V_WRL    = 0000000B            SS$_PARITY       ********   X   04   

RK_CS2_M_MDS   = 00000200            RK_EC1           00000018            SS$_TIMEOUT      ********   X   04   

RK_CS2_M_NED   = 00001000            RK_EC1_S_EPS   = 0000000D            SS$_UNSAFE       ********   X   04   

RK_CS2_M_NEM   = 00000800            RK_EC1_V_EPS   = 00000000            SS$_VOLINV       ********   X   04   

RK_CS2_M_OR    = 00000080            RK_EC2           0000001A            SS$_WASECC       ********   X   04   

RK_CS2_M_PGE   = 00000400            RK_EC2_S_EPT   = 0000000B            SS$_WRITLCK      ********   X   04   

RK_CS2_M_RLS   = 00000008            RK_EC2_V_EPT   = 00000000            STARTSPNDL       00000169 R     04   

RK_CS2_M_SCLR  = 00000020            RK_ER            0000000C            TRANSFR          00000186 R     04   

RK_CS2_M_UFE   = 00000100            RK_ER_M_BSE    = 00000080            TRANXT           000001C7 R     04   

RK_CS2_M_UPE   = 00002000            RK_ER_M_COE    = 00000200            UBA$L_BRRVR      00000030            

RK_CS2_M_WCE   = 00004000            RK_ER_M_DCK    = 00008000            UBA$L_BRSVR      00000020            

RK_CS2_S_DS    = 00000003            RK_ER_M_DRPAR  = 00000008            UBA$L_CR         00000004            

RK_CS2_V_BAI   = 00000004            RK_ER_M_DTE    = 00001000            UBA$L_CSR        00000000            

RK_CS2_V_DLT   = 0000000F            RK_ER_M_DTYE   = 00000020            UBA$L_DCR        0000000C            

RK_CS2_V_DS    = 00000000            RK_ER_M_ECH    = 00000040            UBA$L_DPR        00000040            

RK_CS2_V_IR    = 00000006            RK_ER_M_FMTE   = 00000010            UBA$L_FMER       00000010            

RK_CS2_V_MDS   = 00000009            RK_ER_M_HVRC   = 00000100            UBA$L_FUBAR      00000014            

RK_CS2_V_NED   = 0000000C            RK_ER_M_IDAE   = 00000400            UBA$L_MAP        00000800            

RK_CS2_V_NEM   = 0000000B            RK_ER_M_ILF    = 00000001            UBA$L_SR         00000008            

RK_CS2_V_OR    = 00000007            RK_ER_M_NXF    = 00000004            UBA$M_BRRVR_AIR= 80000000            

RK_CS2_V_PGE   = 0000000A            RK_ER_M_OPI    = 00002000            UBA$M_CR_ARLVL = 00000180            

RK_CS2_V_RLS   = 00000003            RK_ER_M_SKI    = 00000002            UBA$M_CR_BRIE  = 00000020            

RK_CS2_V_SCLR  = 00000005            RK_ER_M_UNS    = 00004000            UBA$M_CR_CNFIE = 00000004            

RK_CS2_V_UFE   = 00000008            RK_ER_M_WLE    = 00000800            UBA$M_CR_IFSIE = 00000040            

RK_CS2_V_UPE   = 0000000D            RK_ER_V_BSE    = 00000007            UBA$M_CR_INIT  = 00000001            

RK_CS2_V_WCE   = 0000000E            RK_ER_V_COE    = 00000009            UBA$M_CR_SUEFIE= 00000008            

RK_DA            00000006            RK_ER_V_DCK    = 0000000F            UBA$M_CR_UBPF  = 00000002            

RK_DA_S_SA     = 00000005            RK_ER_V_DRPAR  = 00000003            UBA$M_CR_USEFIE= 00000010            

RK_DA_S_TA     = 00000003            RK_ER_V_DTE    = 0000000C            UBA$M_CSR_IS   = 10000000            

RK_DA_V_SA     = 00000000            RK_ER_V_DTYE   = 00000005            UBA$M_CSR_MT   = 08000000            

RK_DA_V_TA     = 00000008            RK_ER_V_ECH    = 00000006            UBA$M_CSR_OT   = 00200000            

RK_DB            00000014            RK_ER_V_FMTE   = 00000004            UBA$M_CSR_PD   = 00800000            

RK_DC            00000010            RK_ER_V_HVRC   = 00000008            UBA$M_CSR_PE   = 80000000            

RK_DS            0000000A            RK_ER_V_IDAE   = 0000000A            UBA$M_CSR_PU   = 00400000            

RK_DS_M_ACLO   = 00000008            RK_ER_V_ILF    = 00000000            UBA$M_CSR_UBIC = 00010000            

RK_DS_M_DCLO   = 00000010            RK_ER_V_NXF    = 00000002            UBA$M_CSR_UBIIP= 00040000            

RK_DS_M_DDT    = 00000100            RK_ER_V_OPI    = 0000000D            UBA$M_CSR_UBPDN= 00020000            

RK_DS_M_DRA    = 00000001            RK_ER_V_SKI    = 00000001            UBA$M_CSR_URD  = 20000000            

RK_DS_M_DRDY   = 00000080            RK_ER_V_UNS    = 0000000E            UBA$M_CSR_WS   = 40000000            

RK_DS_M_DROT   = 00000020            RK_ER_V_WLE    = 0000000B            UBA$M_CSR_XMFLT= 04000000            

RK_DS_M_DSC    = 00004000            RK_MR1           00000016            UBA$M_DPR_BNE  = 80000000            

RK_DS_M_OFST   = 00000004            RK_MR1_S_MS    = 00000003            UBA$M_DPR_DPF  = 20000000            

RK_DS_M_PIP    = 00002000            RK_MR1_V_MS    = 00000000            UBA$M_DPR_XMTER= 40000000            

RK_DS_M_SVAL   = 00008000            RK_MR2           0000001C            UBA$M_MAP_BO   = 02000000            

RK_DS_M_VV     = 00000040            RK_MR3           0000001E            UBA$M_MAP_VALID= 80000000            

RK_DS_M_WRL    = 00000800            RK_SPR           00000012            UBA$M_SR_BRID  = 00000800            

RK_DS_V_ACLO   = 00000003            RK_WC            00000002            UBA$M_SR_BRSVF = 10000000            

RK_DS_V_DCLO   = 00000004            RLSCHN           00000531 R     04   UBA$M_SR_CRD   = 00000100            

RK_DS_V_DDT    = 00000008            SEEK             00000169 R     04   UBA$M_SR_CXTER = 00000080            

RK_DS_V_DRA    = 00000000            SS$_BUFBYTALI    ********   X   04   UBA$M_SR_CXTMO = 00000040            

RK_DS_V_DRDY   = 00000007            SS$_CTRLERR      ********   X   04   UBA$M_SR_DPPE  = 00000020            

RK_DS_V_DROT   = 00000005            SS$_DATACHECK    ********   X   04   UBA$M_SR_IVMR  = 00000010            

RK_DS_V_DSC    = 0000000E            SS$_DRVERR       ********   X   04   UBA$M_SR_LER   = 00000004            

RK_DS_V_OFST   = 00000002            SS$_FORMAT       ********   X   04   UBA$M_SR_MRPE  = 00000008            

RK_DS_V_PIP    = 0000000D            SS$_IVADDR       ********   X   04   UBA$M_SR_RDS   = 00000200            

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  36

SYMBOL TABLE                                                                                                                     (1)



UBA$M_SR_RDTO  = 00000400            UBA$V_SR_DPPE  = 00000005            UCB$L_FQFL       00000000            

UBA$M_SR_RIE   = 20000000            UBA$V_SR_IVMR  = 00000004            UCB$L_FR3        00000010            

UBA$M_SR_SSYNC = 00000001            UBA$V_SR_LER   = 00000002            UCB$L_FR4        00000014            

UBA$M_SR_UBIFS = 40000000            UBA$V_SR_MRPE  = 00000003            UCB$L_IOQBL      00000044            

UBA$M_SR_UBSTO = 00000002            UBA$V_SR_RDS   = 00000009            UCB$L_IOQFL      00000040            

UBA$S_BRRVR_IVA= 00000010            UBA$V_SR_RDTO  = 0000000A            UCB$L_IRP        0000004C            

UBA$S_CR_ARLVL = 00000002            UBA$V_SR_RIE   = 0000001D            UCB$L_LINK       0000002C            

UBA$S_CR_MRDSB = 00000005            UBA$V_SR_SSYNC = 00000000            UCB$L_LOGADR     00000064            

UBA$S_CSR_ADCOD= 00000008            UBA$V_SR_UBIFS = 0000001E            UCB$L_MAXBLOCK   00000084            

UBA$S_DPR_ADDR = 00000010            UBA$V_SR_UBSTO = 00000001            UCB$L_MEDIA      0000008C            

UBA$S_DPR_STATE= 00000008            UCB$B_AMOD       00000053            UCB$L_NT_DATSSB  00000074            

UBA$S_FMER_MRN = 00000009            UCB$B_CEX        00000077            UCB$L_NT_INTSSB  00000078            

UBA$S_FUBAR_ADR= 00000012            UCB$B_CM1        0000004A            UCB$L_OPCNT      00000060            

UBA$S_MAP_ADDR = 00000015            UCB$B_CM2        0000004B            UCB$L_OWNUIC     0000001C            

UBA$S_MAP_DPD  = 00000004            UCB$B_DEVCLASS   00000038            UCB$L_PID        00000028            

UBA$S_SR_BRRVF = 00000004            UCB$B_DEVTYPE    00000039            UCB$L_RQBL       00000004            

UBA$V_BRRVR_AIR= 0000001F            UCB$B_DIPL       00000052            UCB$L_RQFL       00000000            

UBA$V_BRRVR_IVA= 00000000            UCB$B_DX_SCTCNT  000000A6            UCB$L_SVAPTE     00000068            

UBA$V_CR_ARLVL = 00000007            UCB$B_ERTCNT     00000070            UCB$L_SVPN       00000064            

UBA$V_CR_BRIE  = 00000005            UCB$B_ERTMAX     00000071            UCB$L_TTCHAR     0000003C            

UBA$V_CR_CNFIE = 00000002            UCB$B_ESCAPE     0000004B            UCB$L_VCB        00000030            

UBA$V_CR_IFSIE = 00000006            UCB$B_FEX        00000076            UCB$M_BACKP    = 00000020            

UBA$V_CR_INIT  = 00000000            UCB$B_FIPL       0000000B            UCB$M_BSY      = 00000100            

UBA$V_CR_MRDSB = 0000001A            UCB$B_LOCSRV     0000003C            UCB$M_CANCEL   = 00000008            

UBA$V_CR_SUEFIE= 00000003            UCB$B_OFFNDX     00000094            UCB$M_DEADMO   = 00000400            

UBA$V_CR_UBPF  = 00000001            UCB$B_OFFRTC     00000095            UCB$M_DELMBX   = 00000002            

UBA$V_CR_USEFIE= 00000004            UCB$B_REMSRV     0000003D            UCB$M_DIAGBUF  = 00000002            

UBA$V_CSR_ADCOD= 00000000            UCB$B_SECTORS    0000003C            UCB$M_DX_WRITE = 00000008            

UBA$V_CSR_IS   = 0000001C            UCB$B_SLAVE      00000074            UCB$M_ECC      = 00000001            

UBA$V_CSR_MT   = 0000001B            UCB$B_SPR        00000075            UCB$M_ERLOGIP  = 00000004            

UBA$V_CSR_OT   = 00000015            UCB$B_STATE      00000052            UCB$M_INT      = 00000002            

UBA$V_CSR_PD   = 00000017            UCB$B_TRACKS     0000003D            UCB$M_INTTYPE  = 00000080            

UBA$V_CSR_PE   = 0000001F            UCB$B_TYPE       0000000A            UCB$M_JOB      = 00000001            

UBA$V_CSR_PU   = 00000016            UCB$B_VERTSZ     0000003F            UCB$M_MOUNTING = 00000200            

UBA$V_CSR_UBIC = 00000010            UCB$C_LENGTH     00000074            UCB$M_NOCNVRT  = 00000004            

UBA$V_CSR_UBIIP= 00000012            UCB$C_LOGLNK   = 00000001            UCB$M_NT_BFROVF= 00000004            

UBA$V_CSR_UBPDN= 00000011            UCB$K_LENGTH     00000074            UCB$M_NT_BREAK = 00000020            

UBA$V_CSR_URD  = 0000001D            UCB$L_AMB        00000054            UCB$M_NT_NAME  = 00000010            

UBA$V_CSR_WS   = 0000001E            UCB$L_ASTQBL     00000010            UCB$M_ONLINE   = 00000010            

UBA$V_CSR_XMFLT= 0000001A            UCB$L_ASTQFL     0000000C            UCB$M_POWER    = 00000020            

UBA$V_DPR_ADDR = 00000000            UCB$L_CPID       0000005C            UCB$M_PRMMBX   = 00000001            

UBA$V_DPR_BNE  = 0000001F            UCB$L_CRB        00000020            UCB$M_TIM      = 00000001            

UBA$V_DPR_DPF  = 0000001D            UCB$L_DDB        00000024            UCB$M_TIMOUT   = 00000040            

UBA$V_DPR_STATE= 00000010            UCB$L_DEVCHAR    00000034            UCB$M_TT_NOTIF = 00000004            

UBA$V_DPR_XMTER= 0000001E            UCB$L_DEVDEPEND  0000003C            UCB$M_TT_TIMO  = 00000002            

UBA$V_FMER_MRN = 00000000            UCB$L_DM_DPR     000000B4            UCB$M_UNLOAD   = 00001000            

UBA$V_FUBAR_ADR= 00000000            UCB$L_DM_FMPR    000000B8            UCB$M_VALID    = 00000800            

UBA$V_MAP_ADDR = 00000000            UCB$L_DM_PMPR    000000BC            UCB$S_LNKPRI   = 00000002            

UBA$V_MAP_BO   = 00000019            UCB$L_DPC        00000080            UCB$S_LTYPE    = 00000002            

UBA$V_MAP_DPD  = 00000015            UCB$L_DUETIM     0000005C            UCB$T_PARTNER    0000000C            

UBA$V_MAP_VALID= 0000001F            UCB$L_DX_BFPNT   0000009C            UCB$V_BACKP    = 00000005            

UBA$V_SR_BRID  = 0000000B            UCB$L_DX_BUF     00000098            UCB$V_BSY      = 00000008            

UBA$V_SR_BRRVF = 00000018            UCB$L_DX_RXDB    000000A0            UCB$V_CANCEL   = 00000003            

UBA$V_SR_BRSVF = 0000001C            UCB$L_EMB        00000078            UCB$V_DEADMO   = 0000000A            

UBA$V_SR_CRD   = 00000008            UCB$L_FIRST      00000014            UCB$V_DELMBX   = 00000001            

UBA$V_SR_CXTER = 00000007            UCB$L_FPC        0000000C            UCB$V_DIAGBUF  = 00000001            

UBA$V_SR_CXTMO = 00000006            UCB$L_FQBL       00000004            UCB$V_DX_WRITE = 00000003            

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  37

SYMBOL TABLE                                                                                                                     (1)



UCB$V_ECC      = 00000000            UCB$W_MB_SEED    FFFFFFFC            

UCB$V_ERLOGIP  = 00000002            UCB$W_MSGCNT     00000016            

UCB$V_INT      = 00000001            UCB$W_MSGMAX     00000014            

UCB$V_INTTYPE  = 00000007            UCB$W_NT_CHAN    0000007C            

UCB$V_JOB      = 00000000            UCB$W_OFFSET     0000008A            

UCB$V_LNKPRI   = 00000006            UCB$W_REFC       00000050            

UCB$V_LTYPE    = 00000000            UCB$W_SIZE       00000008            

UCB$V_MOUNTING = 00000009            UCB$W_SRCADDR    0000001A            

UCB$V_MSGACK   = 00000004            UCB$W_STS        00000058            

UCB$V_MSGFLO   = 00000003            UCB$W_UNIT       00000048            

UCB$V_NOCNVRT  = 00000002            UCB$W_VPROT      0000001A            

UCB$V_NT_BFROVF= 00000002            UNLOAD           00000169 R     04   

UCB$V_NT_BREAK = 00000005            VEC$B_DATAPATH   00000013            

UCB$V_NT_NAME  = 00000004            VEC$B_NUMREG     00000012            

UCB$V_ONLINE   = 00000004            VEC$C_LENGTH     00000024            

UCB$V_POWER    = 00000005            VEC$K_LENGTH     00000024            

UCB$V_PRMMBX   = 00000000            VEC$L_ADP        00000014            

UCB$V_SEGFLO   = 00000002            VEC$L_IDB        00000008            

UCB$V_TIM      = 00000000            VEC$L_INITIAL    0000000C            

UCB$V_TIMOUT   = 00000006            VEC$L_START      0000001C            

UCB$V_TT_NOTIF = 00000002            VEC$L_UNITDISC   00000020            

UCB$V_TT_TIMO  = 00000001            VEC$L_UNITINIT   00000018            

UCB$V_UNLOAD   = 0000000C            VEC$M_MAPLOCK  = 00008000            

UCB$V_VALID    = 0000000B            VEC$M_PATHLOCK = 00000080            

UCB$W_BCNT       0000006E            VEC$Q_DISPATCH   00000000            

UCB$W_BCR        00000096            VEC$S_DATAPATH = 00000007            

UCB$W_BOFF       0000006C            VEC$S_MAPREG   = 0000000F            

UCB$W_BUFQUO     00000018            VEC$V_DATAPATH = 00000000            

UCB$W_BYTESTOGO  0000003E            VEC$V_MAPLOCK  = 0000000F            

UCB$W_CHARGE     0000004A            VEC$V_MAPREG   = 00000000            

UCB$W_CYLINDERS  0000003E            VEC$V_PATHLOCK = 00000007            

UCB$W_DA         0000008C            VEC$W_MAPREG     00000010            

UCB$W_DC         0000008E            WRITECHECK       0000016F R     04   

UCB$W_DEVBUFSIZ  0000003A            WRITEDATA        00000175 R     04   

UCB$W_DEVSTS     0000005A            WRITEHEAD        0000016F R     04   

UCB$W_DIRSEQ     00000088            XFER             000003EF R     04   

UCB$W_DM_AS      000000A8            

UCB$W_DM_BA      0000009E            

UCB$W_DM_CS1     0000009A            

UCB$W_DM_CS2     000000A2            

UCB$W_DM_DA      000000A0            

UCB$W_DM_DB      000000C0            

UCB$W_DM_DC      000000AA            

UCB$W_DM_DPN     000000B2            

UCB$W_DM_DS      000000A4            

UCB$W_DM_DTYP    00000098            

UCB$W_DM_ER      000000A6            

UCB$W_DM_MR1     000000AC            

UCB$W_DM_MR2     000000AE            

UCB$W_DM_MR3     000000B0            

UCB$W_DM_WC      0000009C            

UCB$W_DSTADDR    00000018            

UCB$W_DX_BCR     000000A4            

UCB$W_EC1        00000090            

UCB$W_EC2        00000092            

UCB$W_ERRCNT     00000072            

UCB$W_FUNC       0000007E            

DMDRIVER        - RK611-RK06/RK07 DISK DRIVER                    21-AUG-1978 20:49:58   VAX-11 MACRO X0.3-11               Page  38

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

$$$105_PROLOGUE  00000067      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

$$$115_DRIVER    00000840      04     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT LONG  





THERE WERE NO ERRORS OR WARNINGS.

1422. BYTES LEFT IN FREE MEMORY POOL.

52. BYTES OF RECLAIMED MEMORY.

OBJ$:DMDRIVER,LIS$:DMDRIVER/-SP=EXECML$/ML,SRC$:DMDRIVER

27 MLB DIR RDS - 1164 GETS TO DEFINE 44 MACROS. 119 INTER. FILE WRITES. 

