SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)      82  QUEUE I/O REQUEST

   (1)     339  BUILD I/O PACKET FOR PAGE READ/WRITE

   (1)     447  COMPLETE I/O OPERATION

   (1)     499  QUEUE I/O PACKET TO DRIVER

   (1)     522  QUEUE I/O PACKET TO ACP

   (1)     559  INSERT I/O PACKET IN UNIT QUEUE

   (1)     582  INSERT I/O PACKET IN QUEUE BY PRIORITY

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page   1

02                                                                                                                               (1)



                                     0000     1 	.TITLE	SYSQIOREQ - SYSTEM SERVICE QUEUE I/O REQUEST

                                     0000     2 	.IDENT	/02/

                                     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 14-JUN-76

                                     0000    24 ;

                                     0000    25 ; MODIFIED BY: P. H. LIPMAN	1-MAY-78

                                     0000    26 ;

                                     0000    27 ; 02 	- REWROTE BUILDPKT FOR SEGMENTED VIRTUAL I/O

                                     0000    28 ;

                                     0000    29 ; SYSTEM SERVICE QUEUE I/O REQUEST

                                     0000    30 ;

                                     0000    31 ; MACRO LIBRARY CALLS

                                     0000    32 ;

                                     0000    33  

                                     0000    34 	$ACBDEF				;DEFINE ACB OFFSETS

                                     0000    35 	$AQBDEF				;DEFINE AQB OFFSETS

                                     0000    36 	$CADEF				;DEFINE CONDITIONAL ASSEMBLY PARAMETERS

                                     0000    37 	$CCBDEF				;DEFINE CCB OFFSETS

                                     0000    38 	$DDBDEF				;DEFINE DDB OFFSETS

                                     0000    39 	$DDTDEF				;DEFINE DDT OFFSETS

                                     0000    40 	$DYNDEF				;DEFINE DATA STRUCTURE TYPE CODES

                                     0000    41 	$IPLDEF				;DEFINE INTERRUPT PRIORITY LEVELS

                                     0000    42 	$IRPDEF				;DEFINE IRP OFFSETS

                                     0000    43 	$PCBDEF				;DEFINE PCB OFFSETS

                                     0000    44 	$PHDDEF				;DEFINE PHD OFFSETS

                                     0000    45 	$PRDEF				;DEFINE PROCESSOR REGISTERS

                                     0000    46 	$PRIDEF				;DEFINE PRIORITY CLASS INCREMENTS

                                     0000    47 	$PRVDEF				;DEFINE PRIVILEGE BITS

                                     0000    48 	$PSLDEF				;DEFINE PROCESSOR STATUS FIELDS

                                     0000    49 	$RSNDEF				;DEFINE RESOURCE WAIT NUMBERS

                                     0000    50 	$SECDEF				;DEFINE SEC OFFSETS

                                     0000    51 	$UCBDEF				;DEFINE UCB OFFSETS

                                     0000    52 	$VCBDEF				;DEFINE VCB OFFSETS

                                     0000    53 	$WCBDEF				;DEFINE WINDOW CONTROL BLOCK OFFSETS

                                     0000    54  

                                     0000    55 ;

                                     0000    56 ; LOCAL SYMBOLS

                                     0000    57 ;

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page   2

02                                                                                                                               (1)



                                     0000    58 ; ARGUMENT LIST OFFSET DEFINITIONS

                                     0000    59 ;

                                     0000    60  

                           00000004  0000    61 EFN=4					;EVENT FLAG NUMBER

                           00000008  0000    62 CHAN=8					;I/O CHANNEL NUMBER

                           0000000C  0000    63 FUNC=12					;I/O FUNCTION CODE

                           00000010  0000    64 IOSB=16					;ADDRESS OF I/O STATUS BLOCK

                           00000014  0000    65 ASTADR=20				;ADDRESS OF AST SERVICE ROUTINE

                           00000018  0000    66 ASTPRM=24				;AST SERVICE ROUTINE PARAMETER

                           0000001C  0000    67 P1=28					;FIRST FUNCTION DEPENDENT PARAMETER

                           00000020  0000    68 P2=32					;SECOND FUNCTION DEPENDENT PARAMETER

                           00000024  0000    69 P3=36					;THIRD FUNCTION DEPENDENT PARAMETER

                           00000028  0000    70 P4=40					;FOURTH FUNCTION DEPENDENT PARAMETER

                           0000002C  0000    71 P5=44					;FIFTH FUNCTION DEPENDENT PARAMETER

                           00000030  0000    72 P6=48					;SIXTH FUNCTION DEPENDENT PARAMETER

                                     0000    73  

                                     0000    74 ;

                                     0000    75 ; FUNCTION DECISION TABLE OFFSET DEFINITIONS

                                     0000    76 ;

                                     0000    77  

                           00000000  0000    78 LEGAL=0					;LEGAL FUNCTION MASK

                           00000008  0000    79 IOTYPE=8				;I/O FUNCTION TYPE MASK

                           00000010  0000    80 FDTACT=16				;ACTION ROUTINE MASKS

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page   3

02              QUEUE I/O REQUEST                                                                                                (1)



                                     0000    82 	.SBTTL	QUEUE I/O REQUEST

                                     0000    83 ;+

                                     0000    84 ; EXE$QIOREQ - QUEUE I/O REQUEST

                                     0000    85 ;

                                     0000    86 ; ***TBS***

                                     0000    87 ;

                                     0000    88 ; INPUTS:

                                     0000    89 ;

                                     0000    90 ;	EFN(AP) = EVENT FLAG NUMBER.

                                     0000    91 ;	CHAN(AP) = I/O CHANNEL NUMBER.

                                     0000    92 ;	FUNC(AP) = I/O FUNCTION CODE.

                                     0000    93 ;	IOSB(AP) = ADDRESS OF I/O STATUS BLOCK.

                                     0000    94 ;	ASTADR(AP) = ADDRESS OF AST SERVICE ROUTINE.

                                     0000    95 ;	ASTPRM(AP) = AST SERVICE ROUTINE PARAMETER.

                                     0000    96 ;	P1(AP) TO P6(AP) = FUNCTION DEPENDENT PARAMETERS.

                                     0000    97 ;

                                     0000    98 ;	R4 = CURRENT PROCESS PCB ADDRESS.

                                     0000    99 ;

                                     0000   100 ; OUTPUTS:

                                     0000   101 ;

                                     0000   102 ; ***TBS***

                                     0000   103 ;-

                                     0000   104  

                                     0000   105 	.ENABL	LSB

                               0FFC' 0000   106 	.ENTRY	EXE$QIO,^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,R11>

            53         04 AC     9A  0002   107 10$:	MOVZBL	EFN(AP),R3		;GET EVENT FLAG NUMBER

                          FFF7'  30  0006   108 	BSBW	SCH$CLREF		;CLEAR SPECIFIED EVENT FLAG

            0A            50     E9  0009   109 	BLBC	R0,13$			;IF LBC INVALID EVENT FLAG

            50         08 AC     3C  000C   110 	MOVZWL	CHAN(AP),R0		;GET CHANNEL NUMBER

                          FFED'  30  0010   111 	BSBW	IOC$VERIFYCHAN		;VERIFY CHANNEL NUMBER

            56            51     D0  0013   112 	MOVL	R1,R6			;SAVE ADDRESS OF CCB

            78            50     E9  0016   113 13$:	BLBC	R0,ERROR		;IF LBC INVALID CHANNEL

            55            66     D0  0019   114 	MOVL	CCB$L_UCB(R6),R5	;GET ASSIGNED DEVICE UCB ADDRESS

            59            52     D0  001C   115 	MOVL	R2,R9			;SAVE CHANNEL INDEX

            5A         0C AC     3C  001F   116 	MOVZWL	FUNC(AP),R10		;GET I/O FUNCTION CODE AND MODIFIERS

            5A   FFFFFFFF'8F     CB  0023   117 	BICL3	#^C<IO$M_FCODE>,R10,R7	;CLEAR ALL BUT I/O FUNCTION CODE

                          57         002A       

         34 A5            00'    E1  002B   118 	BBC	S^#DEV$V_SPL,UCB$L_DEVCHAR(R5),17$ ;IF CLR, DEVICE NOT SPOOLED

                          09         002F       

            57            00'    D1  0030   119 	CMPL	S^#IO$_LOGICAL,R7	;VIRTUAL I/O FUNCTION?

                          04     18  0033   120 	BGEQ	17$			;IF GEQ NO

            55         54 A5     D0  0035   121 	MOVL	UCB$L_AMB(R5),R5	;GET INTERMEDIATE DEVICE UCB ADDRESS

            50         24 A5     D0  0039   122 17$:	MOVL	UCB$L_DDB(R5),R0	;GET ADDRESS OF DDB

            50         0C A0     D0  003D   123 	MOVL	DDB$L_DDT(R0),R0	;GET ADDRESS OF DDT

            50         08 A0     C1  0041   124 	ADDL3	DDT$L_FDT(R0),R0,R8	;CALCULATE ADDRESS OF FDT

                          58         0045       

                          03     19  0046   125 	BLSS	20$			;IF LSS SYSTEM ADDRESS

            58            50     C2  0048   126 	SUBL	R0,R8			;SUBTRACT OUT BASE ADDRESS

            68            57     E1  004B   127 20$:	BBC	R7,LEGAL(R8),50$	;IF CLR, ILLEGAL I/O FUNCTION

                          31         004E       

         58 A5            04     E1  004F   128 	BBC	#UCB$V_ONLINE,UCB$W_STS(R5),60$ ;IF CLR, DEVICE OFFLINE

                          33         0053       

            51         10 AC     D0  0054   129 	MOVL	IOSB(AP),R1		;GET ADDRESS OF I/O STATUS BLOCK

                          08     13  0058   130 	BEQL	30$			;IF EQL NONE SPECIFIED

                                     005A   131 	IFNOWRT	#8,(R1),70$		;CAN I/O STATUS BLOCK BE WRITTEN?

                          61     7C  0060   132 	CLRQ	(R1)			;CLEAR I/O STATUS BLOCK

                          7E     DC  0062   133 30$:	MOVPSL	-(SP)			;READ CURRENT PSL

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page   4

02              QUEUE I/O REQUEST                                                                                                (1)



            5B         3E A4     DE  0064   134 	MOVAL	PCB$W_BIOCNT(R4),R11	;SET FOR BUFFERED I/O FUNCTION

         08 A8            57     E0  0068   135 	BBS	R7,IOTYPE(R8),40$	;IF SET, BUFFERED I/O FUNCTION

                          04         006C       

            5B         44 A4     DE  006D   136 	MOVAL	PCB$W_DIOCNT(R4),R11	;SET FOR DIRECT I/O FUNCTION

            52            5B     D0  0071   137 40$:	MOVL	R11,R2			;SET ADDRESS OF USAGE COUNT WORD

                          FF89'  30  0074   138 	BSBW	EXE$SNGLEQUOTA		;CHECK UNIT QUOTA OF I/O FUNCTION TYPE

            17            50     E9  0077   139 	BLBC	R0,ERROR		;IF LBC QUOTA EXCEEDED

            45         04 A6     E9  007A   140 	BLBC	CCB$L_WIND(R6),GTPKT	;IF LBC ACCESS/DEACCESS NOT PENDING

                          27     11  007E   141 	BRB	75$			;

            50       0000'8F     3C  0080   142 50$:	MOVZWL	#SS$_ILLIOFUNC,R0	;SET ILLEGAL I/O FUNCTION STATUS

                          0A     11  0085   143 	BRB	ERROR			;

            50       0000'8F     3C  0087   144 60$:	MOVZWL	#SS$_DEVOFFLINE,R0	;SET DEVICE OFFLINE STATUS

                          03     11  008C   145 	BRB	ERROR			;

            50            00'    3C  008E   146 70$:	MOVZWL	S^#SS$_ACCVIO,R0	;SET ACCESS VIOLATION STATUS

                                     0091   147 ERROR:	SETIPL	#0			;ALLOW INTERRUPTS

                          50     DD  0094   148 	PUSHL	R0			;SAVE FINAL STATUS

            51         60 A4     D0  0096   149 	MOVL	PCB$L_PID(R4),R1	;GET PROCESS ID OF CURRENT PROCESS

            52            01     3C  009A   150 	MOVZWL	#PRI$_IOCOM,R2		;SET PRIORITY CLASS INCREMENT

            53         04 AC     9A  009D   151 	MOVZBL	EFN(AP),R3		;GET SPECIFIED EVENT FLAG NUMBER

                          FF5C'  30  00A1   152 	BSBW	SCH$POSTEF		;POST SPECIFIED EVENT FLAG

                          01     BA  00A4   153 	POPR	#^M<R0>			;RESTORE FINAL STATUS

                                 04  00A6   154 	RET				;

                                     00A7   155 75$:	SETIPL	#IPL$_SYNCH		;SYNCHRONIZE ACCESS TO SYSTEM DATA BASE

            50            13     DB  00AA   156 	MFPR	#PR$_ASTLVL,R0		;READ CURRENT AST LEVEL

                          06     13  00AD   157 	BEQL	80$			;IF EQL KERNEL AST QUEUED

            50            01     3C  00AF   158 	MOVZWL	#RSN$_ASTWAIT,R0	;SET AST WAIT RESOURCE NUMBER

                          FF4B'  30  00B2   159 	BSBW	SCH$RWAIT		;WAIT FOR AST

                                     00B5   160 80$:	SETIPL	#0			;ALLOW INTERRUPTS

                          FF47   31  00B8   161 	BRW	10$			;

                                     00BB   162  

                                     00BB   163 ;

                                     00BB   164 ; ALLOCATE REQUEST I/O PACKET

                                     00BB   165 ;

                                     00BB   166  

                          FF42'  30  00BB   167 ALLOC:	BSBW	EXE$ALLOCIRP		;ALLOCATE I/O REQUEST PACKET

            09            50     E8  00BE   168 	BLBS	R0,SUCCES		;IF LBS SUCCESSFUL ALLOCATION

                          CE     11  00C1   169 	BRB	ERROR			;

            52       0000'DF     0F  00C3   170 GTPKT:	REMQUE	@W^IOC$GL_IRPFL,R2	;GET I/O PACKET FROM LOOK ASIDE LIST

                          F1     1D  00C8   171 	BVS	ALLOC			;IF VS EMPTY LIST

                                     00CA   172 	.DSABL	LSB

                                     00CA   173  

                                     00CA   174 ;

                                     00CA   175 ; BUILD DEVICE INDEPENDENT PART OF I/O PACKET

                                     00CA   176 ;

                                     00CA   177  

                          6B     B7  00CA   178 SUCCES:	DECW	(R11)			;UPDATE I/O COUNT FOR FUNCTION TYPE

                       0A A6     B6  00CC   179 	INCW	CCB$W_IOC(R6)		;INCREMENT OUTSTANDING I/O ON CHANNEL

            53            52     D0  00CF   180 	MOVL	R2,R3			;COPY ADDRESS OF ALLOCATED I/O PACKET

            52            08     C0  00D2   181 	ADDL	#IRP$W_SIZE,R2		;POINT TO SIZE FIELD

            82       004C 8F     B0  00D5   182 	MOVW	#IRP$C_LENGTH,(R2)+	;INSERT LENGTH OF I/O PACKET

            82            0A     90  00DA   183 	MOVB	#DYN$C_IRP,(R2)+	;INSERT DATA STRUCTURE TYPE

            02            16     EF  00DD   184 	EXTZV	#PSL$V_PRVMOD,#PSL$S_PRVMOD,(SP),(R2) ;INSERT ACCESS MODE

            62            6E         00E0       

                          52     D6  00E2   185 	INCL	R2			;ADJUST PAST ACCESS MODE FIELD

            82         60 A4     D0  00E4   186 	MOVL	PCB$L_PID(R4),(R2)+	;INSERT PROCESS ID OF CURRENT PROCESS

            82         14 AC     7D  00E8   187 	MOVQ	ASTADR(AP),(R2)+	;INSERT AST ADDRESS AND PARAMETER

            50         04 A6     D0  00EC   188 	MOVL	CCB$L_WIND(R6),R0	;GET WINDOW ADDRESS

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page   5

02              QUEUE I/O REQUEST                                                                                                (1)



                          13     15  00F0   189 	BLEQ	10$			;IF LEQ NOT SECTION INDEX

            50            50     32  00F2   190 	CVTWL	R0,R0			;SIGN EXTEND SECTION INDEX

            51   00000000'9F     D0  00F5   191 	MOVL	@#CTL$GL_PHD,R1		;GET ADDRESS OF PROCESS HEADER

            51         20 A1     C0  00FC   192 	ADDL	PHD$L_PSTBASOFF(R1),R1	;CALCULATE BASE ADDRESS OF SECTION TABLE

            50         0C A140   D0  0100   193 	MOVL	SEC$L_WINDOW(R1)[R0],R0	;GET ADDRESS OF REAL WINDOW

            82            50     D0  0105   194 10$:	MOVL	R0,(R2)+		;INSERT WINDOW ADDRESS

            82            55     D0  0108   195 	MOVL	R5,(R2)+		;INSERT DEVICE UCB ADDRESS

            82            5A     B0  010B   196 	MOVW	R10,(R2)+		;INSERT I/O FUNCTION CODE

            82         04 AC     90  010E   197 	MOVB	EFN(AP),(R2)+		;INSERT EVENT FLAG NUMBER

            82         33 A4     90  0112   198 	MOVB	PCB$B_PRIB(R4),(R2)+	;INSERT PROCESS BASE PRIORITY

            82         10 AC     D0  0116   199 	MOVL	IOSB(AP),(R2)+		;INSERT I/O STATUS BLOCK ADDRESS

            82            59     3C  011A   200 	MOVZWL	R9,(R2)+		;INSERT CHANNEL INDEX AND ZERO STATUS

         08 A8            57     E1  011D   201 	BBC	R7,IOTYPE(R8),20$	;IF CLR, DIRECT I/O FUNCTION

                          04         0121       

         FE A2            01     A8  0122   202 	BISW	#IRP$M_BUFIO,-2(R2)	;SET TO BUFFERED I/O FUNCTION

                                     0126   203 20$:	IFPRIV	LOG_IO,30$		;PROCESS HAVE LOGICAL I/O PRIVILEGE?

                                     012B   204 	IFNPRIV	PHY_IO,40$		;PROCESS HAVE PHYSICAL I/O PRIVILEGE?

         FE A2       0200 8F     A8  0130   205 30$:	BISW	#IRP$M_PRIVIO,-2(R2)	;SET PRIVILEGED REQUESTER FLAG

                          62     7C  0136   206 40$:	CLRQ	(R2)			;CLEAR PTE ADDRESS, BYTE OFFSET, AND BYTE COUNT

                                     0138   207  

                                     0138   208 	.IF DF	CA$_MEASURE_IOT

                                     0138   209  

                          FEC5'  30  0138   210 	BSBW	PMS$START_RQ		;INSERT START OF I/O REQUEST MESSAGE

                                     013B   211  

                                     013B   212 	.ENDC

                                     013B   213  

                                     013B   214 ;

                                     013B   215 ; CHECK IF REQUESTING PROCESS HAS PRIVILEGE TO ACCESS DEVICE

                                     013B   216 ;

                                     013B   217  

            57            00'    D1  013B   218 ACCESS:	CMPL	S^#IO$_WRITEVBLK,R7	;POSSIBLY VIRTUAL READ OR WRITE?

                          20     1A  013E   219 	BGTRU	15$			;IF GTRU NO

            57            00'    D1  0140   220 	CMPL	S^#IO$_READVBLK,R7	;VIRTUAL READ OR WRITE?

                          1B     1F  0143   221 	BLSSU	15$			;IF LSSU NO

         34 A5            00'    E1  0145   222 	BBC	S^#DEV$V_FOD,UCB$L_DEVCHAR(R5),5$ ;IF CLR, NOT FILE DEVICE

                          0F         0149       

                                     014A   223  

                                     014A   224 ;

                                     014A   225 ; THE FOLLOWING TEST IS NECESSITATED BY THE SYSTEM INITIALIZATION SEQUENCE

                                     014A   226 ;

                                     014A   227  

                       18 A3     D5  014A   228 	TSTL	IRP$L_WIND(R3)		;WINDOW ADDRESS SPECIFIED?

                          11     12  014D   229 	BNEQ	15$			;IF NEQ YES

         34 A5            00'    E1  014F   230 	BBC	S^#DEV$V_MNT,UCB$L_DEVCHAR(R5),60$ ;IF CLR, DEVICE NOT MOUNTED

                          54         0153       

         34 A5            00'    E1  0154   231 	BBC	S^#DEV$V_FOR,UCB$L_DEVCHAR(R5),80$ ;IF CLR, MOUNTED STRUCTURED

                          57         0158       

                                     0159   232  

                                     0159   233 ;

                                     0159   234 ; CONVERT VIRTUAL READ/WRITE FUNCTION TO ITS LOGICAL COUNTERPART

                                     0159   235 ;

                                     0159   236  

            57            00'    C2  0159   237 5$:	SUBL	S^#IO$_READVBLK-IO$_READLBLK,R7 ;CONVERT TO LOGICAL FUNCTION

         20 A3            00'    A2  015C   238 	SUBW	S^#IO$_READVBLK-IO$_READLBLK,IRP$W_FUNC(R3) ;

            57            00'    D1  0160   239 15$:	CMPL	S^#IO$_LOGICAL,R7	;VIRTUAL I/O FUNCTION?

                          4B     19  0163   240 	BLSS	80$			;IF LSS YES

                                     0165   241  

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page   6

02              QUEUE I/O REQUEST                                                                                                (1)



                                     0165   242 ;

                                     0165   243 ; LOGICAL OR PHYSICAL I/O FUNCTION

                                     0165   244 ;

                                     0165   245  

                                     0165   246 	IFPRIV	PHY_IO,80$		;PROCESS HAVE PHYSICAL I/O PRIVILEGE?

            57            00'    D1  016A   247 	CMPL	S^#IO$_PHYSICAL,R7	;PHYSICAL I/O FUNCTION?

                          0C     19  016D   248 	BLSS	20$			;IF LSS NO

                                     016F   249 	IFNPRIV	LOG_IO,60$		;PROCESS HAVE LOGICAL I/O PRIVILEGE?

            50       0000'CF     9E  0174   250 	MOVAB	W^EXE$CHKPHYACCES,R0	;SET FOR PHYSICAL I/O FUNCTION CHECK

                          0A     11  0179   251 	BRB	30$			;

                                     017B   252  

                                     017B   253 ;

                                     017B   254 ; LOGICAL I/O FUNCTION

                                     017B   255 ;

                                     017B   256  

                                     017B   257 20$:	IFPRIV	LOG_IO,90$		;PROCESS HAVE LOGICAL I/O PRIVILEGE?

            50       0000'CF     9E  0180   258 	MOVAB	W^EXE$CHKLOGACCES,R0	;SET FOR LOGICAL I/O FUNCTION CHECK

                                     0185   259  

                                     0185   260 ;

                                     0185   261 ; PHYSICAL OR LOGICAL I/O FUNCTION - CHECK ACCESSIBILITY OF DEVICE

                                     0185   262 ;

                                     0185   263  

         34 A5            00'    E1  0185   264 30$:	BBC	S^#DEV$V_FOD,UCB$L_DEVCHAR(R5),40$ ;IF CLR, NOT FILE DEVICE

                          0C         0189       

         34 A5            00'    E1  018A   265 	BBC	S^#DEV$V_MNT,UCB$L_DEVCHAR(R5),60$ ;IF CLR, DEVICE NOT MOUNTED

                          19         018E       

         34 A5            00'    E1  018F   266 	BBC	S^#DEV$V_FOR,UCB$L_DEVCHAR(R5),60$ ;IF CLR, MOUNTED STRUCTURED

                          14         0193       

                          05     11  0194   267 	BRB	50$			;

         34 A5            00'    E1  0196   268 40$:	BBC	S^#DEV$V_SHR,UCB$L_DEVCHAR(R5),80$ ;IF CLR, DEVICE NOT SHAREABLE

                          15         019A       

            51         1A A5     3C  019B   269 50$:	MOVZWL	UCB$W_VPROT(R5),R1	;GET VOLUME PROTECTION MASK

            52         1C A5     D0  019F   270 	MOVL	UCB$L_OWNUIC(R5),R2	;GET VOLUME OWNER UIC

                          60     16  01A3   271 	JSB	(R0)			;CHECK ACCESS TO VOLUME

            08            50     E8  01A5   272 	BLBS	R0,80$			;IF LBS ACCESS ALLOWED

            50       0000'8F     3C  01A8   273 60$:	MOVZWL	#SS$_NOPRIV,R0		;SET NO PRIVILEGE STATUS

                          00D7   31  01AD   274 70$:	BRW	EXE$ABORTIO		;

                                     01B0   275  

                                     01B0   276 ;

                                     01B0   277 ; PROCESS HAS ACCESS TO DEVICE

                                     01B0   278 ;

                                     01B0   279  

            57            00'    D1  01B0   280 80$:	CMPL	S^#IO$_PHYSICAL,R7	;LOGICAL OR VIRTUAL I/O FUNCTION?

                          3B     19  01B3   281 	BLSS	90$			;IF LSS YES

         2A A3       0100 8F     A8  01B5   282 	BISW	#IRP$M_PHYSIO,IRP$W_STS(R3) ;SET PHYSICAL I/O FLAG

            59         30 AC     D0  01BB   283 	MOVL	P6(AP),R9		;GET ADDRESS OF DIAGNOSTIC BUFFER

                          2F     13  01BF   284 	BEQL	90$			;IF EQL NONE SPECIFIED

                                     01C1   285 	IFNPRIV	DIAGNOSE,60$		;PROCESS HAVE PRIVILEGE TO DIAGNOSE?

            51         24 A5     D0  01C6   286 	MOVL	UCB$L_DDB(R5),R1	;GET ADDRESS OF DDB

            51         0C A1     D0  01CA   287 	MOVL	DDB$L_DDT(R1),R1	;GET ADDRESS OF DDT

            51         14 A1     3C  01CE   288 	MOVZWL	DDT$W_DIAGBUF(R1),R1	;GET SIZE OF DIAGNOSTIC BUFFER

                          1C     13  01D2   289 	BEQL	90$			;IF EQL NO DIAGNOSTIC FUNCTIONS

                          53     DD  01D4   290 	PUSHL	R3			;SAVE I/O PACKET ADDRESS

                          FE27'  30  01D6   291 	BSBW	EXE$ALLOCBUF		;ALLOCATE DIAGNOSTIC BUFFER

                          53   8ED0  01D9   292 	POPL	R3			;RETRIEVE I/O PACKET ADDRESS

            CE            50     E9  01DC   293 	BLBC	R0,70$			;IF LBC ALLOCATION FAILURE

         44 A3            52     D0  01DF   294 	MOVL	R2,IRP$L_DIAGBUF(R3)	;SAVE ADDRESS OF DIAGNOSTIC BUFFER

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page   7

02              QUEUE I/O REQUEST                                                                                                (1)



            82         0C A2     9E  01E3   295 	MOVAB	12(R2),(R2)+		;SET POINTER TO DATA AREA

            62            59     D0  01E7   296 	MOVL	R9,(R2)			;SAVE USER ADDRESS OF DIAGNOSTIC BUFFER

         2A A3       0080 8F     A8  01EA   297 	BISW	#IRP$M_DIAGBUF,IRP$W_STS(R3) ;SET DIAGNOSTIC BUFFER PRESENT

                                     01F0   298  

                                     01F0   299 ;

                                     01F0   300 ; CHECK IF AST IS SPECIFIED

                                     01F0   301 ;

                                     01F0   302  

                       10 A3     D5  01F0   303 90$:	TSTL	IRP$L_AST(R3)		;AST ADDRESS SPECIFIED?

                          12     13  01F3   304 	BEQL	100$			;IF EQL NO

            50       0000'8F     3C  01F5   305 	MOVZWL	#SS$_EXQUOTA,R0		;ASSUME AST QUOTA EXCEEDED

                       3C A4     B5  01FA   306 	TSTW	PCB$W_ASTCNT(R4)	;AST QUEUE ENTRY QUOTA EXCEEDED?

                          AE     15  01FD   307 	BLEQ	70$			;IF LEQ YES

                       3C A4     B7  01FF   308 	DECW	PCB$W_ASTCNT(R4)	;UPDATE AVAILABLE AST QUEUE ENTRIES

         0B A3         40 8F     88  0202   309 	BISB	#ACB$M_QUOTA,IRP$B_RMOD(R3) ;SET AST QUOTA UPDATE FLAG

                                     0207   310  

                                     0207   311 ;

                                     0207   312 ; SCAN FUNCTION DECISION TABLE CALLING EACH SELECTED ACTION ROUTINE WITH:

                                     0207   313 ;

                                     0207   314 ;	R0 = SCRATCH.

                                     0207   315 ;	R1 = SCRATCH.

                                     0207   316 ;	R2 = SCRATCH.

                                     0207   317 ;	R3 = ADDRESS OF I/O REQUEST PACKET.

                                     0207   318 ;	R4 = CURRENT PROCESS PCB ADDRESS.

                                     0207   319 ;	R5 = ASSIGNED DEVICE UCB ADDRESS.

                                     0207   320 ;	R6 = ADDRESS OF CCB.

                                     0207   321 ;	R7 = I/O FUNCTION CODE BIT NUMBER.

                                     0207   322 ;	R8 = FUNCTION DECISION TABLE DISPATCH ADDRESS.

                                     0207   323 ;	R9 = SCRATCH.

                                     0207   324 ;	R10 = SCRATCH.

                                     0207   325 ;	R11 = SCRATCH.

                                     0207   326 ;	AP = ADDRESS OF FIRST FUNCTION DEPENDENT PARAMETER.

                                     0207   327 ;

                                     0207   328  

            58            04     C0  0207   329 100$:	ADDL	#FDTACT-12,R8		;POINT TO ACTION ROUTINE MASKS

            5C            1C     C0  020A   330 	ADDL	#P1,AP			;POINT TO FIRST FUNCTION DEPENDENT PARAMETER

            58            0C     C0  020D   331 110$:	ADDL	#12,R8			;POINT TO NEXT FUNCTION MASK

            68            57     E1  0210   332 	BBC	R7,(R8),110$		;IF CLR, THEN ACTION NOT SELECTED

                          F9         0213       

            58         08 A8     C1  0214   333 	ADDL3	8(R8),R8,R0		;CALCULATE ADDRESS OF ACTION ROUTINE

                          50         0218       

                          03     19  0219   334 	BLSS	120$			;IF LSS SYSTEM ADDRESS

            50            58     C2  021B   335 	SUBL	R8,R0			;SUBTRACT OUT BASE ADDRESS

                          60     16  021E   336 120$:	JSB	(R0)			;CALL ACTION ROUTINE

                          EB     11  0220   337 	BRB	110$			;

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page   8

02              BUILD I/O PACKET FOR PAGE READ/WRITE                                                                             (1)



                                     0222   339 	.SBTTL	BUILD I/O PACKET FOR PAGE READ/WRITE

                                     0222   340 ;+

                                     0222   341 ; EXE$BUILDPKTR - BUILD I/O PACKET FOR PAGE READ

                                     0222   342 ; EXE$BUILDPKTW - BUILD I/O PACKET FOR PAGE WRITE

                                     0222   343 ; EXE$BLDPKTSWPR - BUILD I/O PACKET FOR SWAP READ

                                     0222   344 ; EXE$BLDPKTSWPW - BUILD I/O PACKET FOR SWAP WRITE

                                     0222   345 ;

                                     0222   346 ; THIS ROUTINE IS CALLED TO FILL OUT AND QUEUE AN I/O PACKET

                                     0222   347 ; FOR A SWAPPING OR PAGING READ OR WRITE.

                                     0222   348 ;

                                     0222   349 ; INPUTS:

                                     0222   350 ;

                                     0222   351 ;	R0 = VIRTUAL BLOCK NUMBER

                                     0222   352 ;	R1 = NUMBER OF BYTES TO TRANSFER (PAGE INCREMENTS)

                                     0222   353 ;	R2 = WINDOW ADDRESS FOR MAPPING VBN TO LBN

                                     0222   354 ;	R3 = SYSTEM VIRTUAL ADDRESS OF PAGE TABLE ENTRY

                                     0222   355 ;	R4 = CURRENT PROCESS CONTROL BLOCK ADDRESS

                                     0222   356 ;	     PCB$W_DIOCNT(R4) IS ASSUMED GREATER THAN ZERO

                                     0222   357 ;	     AND MUST BE CHECKED BY THE CALLER.

                                     0222   358 ;	R5 = I/O REQUEST PACKET ADDRESS

                                     0222   359 ;	     WITH THE FOLLOWING FIELDS ALREADY FILLED IN

                                     0222   360 ;

                                     0222   361 ;	IRP$W_SIZE(R5) AND IRP$B_TYPE(R5)

                                     0222   362 ;	     FOR ENTRY AT EXE$BUILDPKTW THESE ARE FILLED IN BY THE CALLER

                                     0222   363 ;	     FOR ALL OTHER ENTRY POINTS THEY ARE FILLED IN BY THIS CODE.

                                     0222   364 ;	IRP$L_AST(R5) =

                                     0222   365 ;	     FOR PAGE READ CASE - SYSTEM VIRTUAL ADDRESS OF SLAVE (PROCESS)

                                     0222   366 ;		PAGE TABLE ENTRY FOR THE CASE OF A GLOBAL PAGE READ.

                                     0222   367 ;		THIS MUST BE 0 FOR A SYSTEM OR PROCESS PAGE READ.

                                     0222   368 ;	     FOR PAGE WRITE CASE - STANDARD QI/O AST ADDRESS

                                     0222   369 ;	     FOR SWAPIO CASE - THIS PARAMETER IS CURRENTLY NOT USED

                                     0222   370 ;

                                     0222   371 ;	IRP$L_ASTPRM(R5) =

                                     0222   372 ;	     FOR PAGE READ CASE - THE CONTENTS OF THE FAULTED PAGE TABLE ENTRY

                                     0222   373 ;		USED TO RECOVER THE ORIGINAL BACKING STORE ADDRESS WHEN A PAGE

                                     0222   374 ;		READ ERROR OCCURRED FOR A COPY ON REFERENCE PAGE.

                                     0222   375 ;	     FOR PAGE WRITE CASE - STANDARD QI/O AST PARAMETER

                                     0222   376 ;	     FOR SWAPIO CASE - ADDRESS OF KERNEL AST ROUTINE TO CALL

                                     0222   377 ;

                                     0222   378 ;	IRP$B_PRI(R5) = THE PRIORITY AT WHICH THE TRANSFER IS TO BE QUEUED

                                     0222   379 ;

                                     0222   380 ;	IRP$B_RMOD(R5) =

                                     0222   381 ;	    FOR PAGE WRITE CASE - STANDARD QI/O MODE OF REQUESTER

                                     0222   382 ;	    FOR ALL OTHER CASES - CONTAINS GARBAGE WHICH IS IGNORED

                                     0222   383 ;

                                     0222   384 ;	IRP$B_EFN(R5)  =

                                     0222   385 ;	    FOR PAGE WRITE CASE - STANDARD QI/O EVENT FLAG NUMBER

                                     0222   386 ;	    FOR ALL OTHER CASES - CONTAINS GARBAGE WHICH IS IGNORED

                                     0222   387 ;

                                     0222   388 ;	IRP$L_IOSB(R5) =

                                     0222   389 ;	    FOR PAGE WRITE CASE - STANDARD QI/O I/O STATUS BLOCK ADDRESS

                                     0222   390 ;	    FOR ALL OTHER CASES - CONTAINS GARBAGE WHICH IS IGNORED

                                     0222   391 ;

                                     0222   392 ; OUTPUTS:

                                     0222   393 ;

                                     0222   394 ;	R4,R5 ALTERED

                                     0222   395 ;-

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page   9

02              BUILD I/O PACKET FOR PAGE READ/WRITE                                                                             (1)



                                     0222   396 

                                     0222   397 	.ENABL	LSB

                                     0222   398 EXE$BLDPKTSWPR::			;BUILD SWAP READ PACKET

                                 DD  0222   399 	PUSHL	#<<IRP$M_SWAPIO ! IRP$M_VIRTUAL ! IRP$M_FUNC>@16 -

                 00520000'8F         0223   400 		! IO$_READPBLK>		;SET FOR READ FUNCTION

                          16     11  0228   401 	BRB	10$			;

                                     022A   402 EXE$BLDPKTSWPW::			;BUILD SWAP WRITE PACKET

                                 DD  022A   403 	PUSHL	#<<IRP$M_SWAPIO ! IRP$M_VIRTUAL>@16 -

                 00500000'8F         022B   404 		! IO$_WRITEPBLK>	;SET FOR WRITE FUNCTION

                          0E     11  0230   405 	BRB	10$			;

                                     0232   406 EXE$BUILDPKTW::				;BUILD I/O PACKET FOR PAGE WRITE

                                 DD  0232   407 	PUSHL	#<<IRP$M_PAGIO ! IRP$M_VIRTUAL>@16 -

                 00140000'8F         0233   408 		! IO$_WRITEPBLK>	;SET FOR WRITE FUNCTION

                          10     11  0238   409 	BRB	20$			;

                                     023A   410 EXE$BUILDPKTR::				;BUILD I/O PACKET FOR PAGE READ

                                 DD  023A   411 	PUSHL	#<<IRP$M_PAGIO ! IRP$M_VIRTUAL ! IRP$M_FUNC>@16 -

                 00160000'8F         023B   412 		! IO$_READPBLK>		;SET FOR READ FUNCTION

                                 F0  0240   413 10$:	INSV	#<DYN$C_IRP@16 ! IRP$C_LENGTH>,- ;SET SIZE

            00   000A004C 8F         0241   414 		#0,#24,IRP$W_SIZE(R5)	;AND TYPE OF PACKET

         08 A5            18         0247       

         2C A5            53     D0  024A   415 20$:	MOVL	R3,IRP$L_SVAPTE(R5)	;SYSTEM VIRTUAL ADR OF PAGE TABLE ENTRY

         44 A5            53     D0  024E   416 	MOVL	R3,IRP$L_DIAGBUF(R5)	;NEED COPY OF ORIGINAL FOR SEGMENTED XFERS

            53            55     D0  0252   417 	MOVL	R5,R3			;PACKET ADDRESS TO R3

            55            8E     D0  0255   418 	MOVL	(SP)+,R5		;GET FUNCTION AND STATUS BITS

         20 A3            55     B0  0258   419 	MOVW	R5,IRP$W_FUNC(R3)	;SET FUNCTION CODE

                                     025C   420 

                                     025C   421 	ASSUME	IRP$W_STS EQ IRP$W_CHAN+2

                          55     B4  025C   422 	CLRW	R5			;ZERO THE CHANNEL

         28 A3            55     D0  025E   423 	MOVL	R5,IRP$W_CHAN(R3)	;SET CHANNEL AND STATUS

            55         10 A2     D0  0262   424 	MOVL	WCB$L_ORGUCB(R2),R5	;GET UCB ADDRESS FROM WINDOW

         1C A3            55     D0  0266   425 	MOVL	R5,IRP$L_UCB(R3)	;SET UCB ADDRESS

         0C A3         60 A4     D0  026A   426 	MOVL	PCB$L_PID(R4),IRP$L_PID(R3) ;PROCESS ID FROM PCB

         40 A3            50     D0  026F   427 	MOVL	R0,IRP$L_SEGVBN(R3)	;STARTING VIRTUAL BLOCK NUMBER

         18 A3            52     D0  0273   428 	MOVL	R2,IRP$L_WIND(R3)	;WINDOW ADDRESS

                                     0277   429 

                                     0277   430 	ASSUME	IRP$W_BCNT EQ IRP$W_BOFF+2

            51            10     9C  0277   431 	ROTL	#16,R1,IRP$W_BOFF(R3)	;ZERO BYTE OFFSET, SET BYTE COUNT

                       30 A3         027A       

                                     027C   432 

                                     027C   433 	ASSUME	IRP$W_OBCNT EQ IRP$W_ABCNT+2

            51            10     9C  027C   434 	ROTL	#16,R1,IRP$W_ABCNT(R3)	;ZERO ACCUMULATED BYTE COUNT

                       3C A3         027F       

                                     0281   435 					;SET ORIGINAL BYTE COUNT

                                     0281   436 

                                     0281   437 	.IF	DF,CA$_MEASURE_IOT

                                     0281   438 

                          FD7C'  30  0281   439 	BSBW	PMS$START_RQ		;INSERT START OF I/O REQUEST MESSAGE

                                     0284   440 

                                     0284   441 	.ENDC

                                     0284   442 

                          FD79'  31  0284   443 	BRW	IOC$QNXTSEG1		;QUEUE THE FIRST SEGMENT OF THE I/O REQUEST

                                     0287   444 					;AND RETURN

                                     0287   445 	.DSABL	LSB

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page  10

02              COMPLETE I/O OPERATION                                                                                           (1)



                                     0287   447 	.SBTTL	COMPLETE I/O OPERATION

                                     0287   448 ;+

                                     0287   449 ; EXE$ABORTIO - ABORT I/O OPERATION

                                     0287   450 ;

                                     0287   451 ; THIS ROUTINE IS JUMPED TO FROM A FUNCTION DECISION TABLE ACTION ROUTINE

                                     0287   452 ; TO FINISH AN I/O OPERATION WITHOUT RETURNING THE FINAL I/O STATUS.

                                     0287   453 ;

                                     0287   454 ; EXE$FINISHIO - FINISH I/O OPERATION

                                     0287   455 ;

                                     0287   456 ; THIS ROUTINE IS JUMPED TO FROM A FUNCTION DECISION TABLE ACTION ROUTINE

                                     0287   457 ; TO FINISH AN I/O OPERATION AND RETURN THE FINAL I/O STATUS.

                                     0287   458 ;

                                     0287   459 ; EXE$FINISHIOC - FINISH I/O OPERATION WITH SECOND I/O STATUS LONGWORD CLEARED

                                     0287   460 ;

                                     0287   461 ; THIS ROUTINE IS JUMPED TO FROM A FUNCTION DESCISION TABLE ACTION ROUTINE

                                     0287   462 ; TO FINISH AN I/O OPERATION AND RETURN THE FINAL I/O STATUS WITH THE

                                     0287   463 ; SECOND I/O STATUS LONGWORD CLEARED.

                                     0287   464 ;

                                     0287   465 ; INPUTS:

                                     0287   466 ;

                                     0287   467 ;	R0 = FIRST LONGWORD OF FINAL I/O STATUS.

                                     0287   468 ;	R1 = SECOND LONGWORD OF FINAL I/O STATUS.

                                     0287   469 ;	R3 = ADDRESS OF I/O REQUEST PACKET.

                                     0287   470 ;	R4 = CURRENT PROCESS PCB ADDRESS.

                                     0287   471 ;	R5 = UCB ADDRESS OF DEVICE UNIT.

                                     0287   472 ;

                                     0287   473 ; OUTPUTS:

                                     0287   474 ;

                                     0287   475 ;	THE FINAL I/O STATUS IS STORED IN THE I/O PACKET AND THE PACKET IS

                                     0287   476 ;	INSERTED IN THE I/O POST PROCESSING QUEUE. A SOFTWARE INTERRUPT

                                     0287   477 ;	IS GENERATED TO INITIATE I/O POST PROCESSING AND THE FIRST WORD

                                     0287   478 ;	OF THE FINAL I/O STATUS IS RETURNED AS THE SERVICE STATUS.

                                     0287   479 ;-

                                     0287   480  

                                     0287   481 	.ENABL	LSB

                                     0287   482 EXE$ABORTIO::				;ABORT I/O OPERATION

                       24 A3     D4  0287   483 	CLRL	IRP$L_IOSB(R3)		;CLEAR ADDRESS OF I/O STATUS BLOCK

         0B A3            06     E5  028A   484 	BBCC	#ACB$V_QUOTA,IRP$B_RMOD(R3),10$ ;IF CLR, NO AST SPECIFIED

                          11         028E       

                       3C A4     B6  028F   485 	INCW	PCB$W_ASTCNT(R4)	;UPDATE AVAILABLE AST QUEUE ENTRIES

                          0C     11  0292   486 	BRB	10$			;

                                     0294   487 EXE$FINISHIOC::				;FINISH I/O OPERATION CLEAR SECOND LONGWORD

                          51     D4  0294   488 	CLRL	R1			;CLEAR SECOND I/O STATUS LONGWORD

                                     0296   489 EXE$FINISHIO::				;FINISH I/O OPERATION

                       60 A5     D6  0296   490 	INCL	UCB$L_OPCNT(R5)		;INCREMENT OPERATIONS COMPLETED

         34 A3            50     7D  0299   491 	MOVQ	R0,IRP$L_MEDIA(R3)	;STORE FINAL I/O STATUS

            50            00'    3C  029D   492 	MOVZWL	S^#SS$_NORMAL,R0	;SET NORMAL COMPLETION STATUS

       0000'DF            63     0E  02A0   493 10$:	INSQUE	(R3),@W^IOC$GL_PSBL	;INSERT I/O PACKET IN POST PROCESS QUEUE

                          28     12  02A5   494 	BNEQ	QIORETURN		;IF NEQ NOT FIRST ENTRY IN QUEUE

                                     02A7   495 	SOFTINT	#IPL$_IOPOST		;INITIATE SOFTWARE INTERRUPT

                          23     11  02AA   496 	BRB	QIORETURN		;

                                     02AC   497 	.DSABL	LSB

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page  11

02              QUEUE I/O PACKET TO DRIVER                                                                                       (1)



                                     02AC   499 	.SBTTL	QUEUE I/O PACKET TO DRIVER

                                     02AC   500 ;+

                                     02AC   501 ; EXE$QIODRVPKT - QUEUE I/O PACKET TO DRIVER

                                     02AC   502 ;

                                     02AC   503 ; THIS ROUTINE IS JUMPED TO FROM A FUNCTION DECISION TABLE ACTION ROUTINE

                                     02AC   504 ; TO QUEUE AN I/O PACKET TO THE APPROPRIATE DRIVER.

                                     02AC   505 ;

                                     02AC   506 ; INPUTS:

                                     02AC   507 ;

                                     02AC   508 ;	R3 = ADDRESS OF I/O REQUEST PACKET.

                                     02AC   509 ;	R4 = CURRENT PROCESS PCB ADDRESS.

                                     02AC   510 ;	R5 = UCB ADDRESS OF DEVICE UNIT.

                                     02AC   511 ;

                                     02AC   512 ; OUTPUTS:

                                     02AC   513 ;

                                     02AC   514 ;	THE I/O PACKET IS QUEUED BY PRIORITY IN THE APPROPRIATE DEVICE

                                     02AC   515 ;	QUEUE AND A NORMAL COMPLETION STATUS IS RETURNED.

                                     02AC   516 ;-

                                     02AC   517  

                                     02AC   518 EXE$QIODRVPKT::				;QUEUE I/O PACKET

                          25     10  02AC   519 	BSBB	EXE$INSIOQ		;INSERT I/O PACKET IN DEVICE QUEUE

                          1A     11  02AE   520 	BRB	EXE$QIORETURN		;

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page  12

02              QUEUE I/O PACKET TO ACP                                                                                          (1)



                                     02B0   522 	.SBTTL	QUEUE I/O PACKET TO ACP

                                     02B0   523 ;+

                                     02B0   524 ; EXE$QIOACPPKT - QUEUE I/O PACKET TO ACP

                                     02B0   525 ;

                                     02B0   526 ; THIS ROUTINE IS JUMPED TO FROM A FUNCTION DECISION TABLE ACTION ROUTINE

                                     02B0   527 ; TO QUEUE AN I/O PACKET TO THE APPROPRIATE ACP.

                                     02B0   528 ;

                                     02B0   529 ; INPUTS:

                                     02B0   530 ;

                                     02B0   531 ;	R3 = ADDRESS OF I/O REQUEST PACKET.

                                     02B0   532 ;	R4 = CURRENT PROCESS PCB ADDRESS.

                                     02B0   533 ;	R5 = UCB ADDRESS OF DEVICE UNIT.

                                     02B0   534 ;

                                     02B0   535 ;	CURRENT IPL MUST BE AT SYNCH OR HIGHER LEVEL.

                                     02B0   536 ;

                                     02B0   537 ; OUTPUTS:

                                     02B0   538 ;

                                     02B0   539 ;	R4 ALTERED

                                     02B0   540 ;	THE I/O PACKET IS QUEUED AT THE END OF THE APPROPRIATE ACP QUEUE

                                     02B0   541 ;	AND A NORMAL COMPLETION STATUS IS RETURNED.

                                     02B0   542 ;-

                                     02B0   543  

                                     02B0   544 EXE$QIOACPPKT::				;QUEUE I/O PACKET TO ACP

            52         30 A5     D0  02B0   545 	MOVL	UCB$L_VCB(R5),R2	;GET ADDRESS OF VCB

            52         10 A2     D0  02B4   546 	MOVL	VCB$L_AQB(R2),R2	;GET ADDRESS OF ACP AQB

                          34     10  02B8   547 	BSBB	EXE$INSERTIRP		;INSERT I/O PACKET IN ACP QUEUE

                          0E     12  02BA   548 	BNEQ	EXE$QIORETURN		;IF NEQ NOT FIRST ENTRY IN QUEUE

            51         0C A2     D0  02BC   549 	MOVL	AQB$L_ACPPID(R2),R1	;GET ACP PROCESS ID

                          FD3D'  30  02C0   550 	BSBW	SCH$WAKE		;WAKE UP ACP PROCESS

            04            50     E8  02C3   551 	BLBS	R0,EXE$QIORETURN	;IF LBS ACP STILL PRESENT

                                     02C6   552 	BUG_CHECK NONEXSTACP		;NONEXISTENT ACP PROCESS

                                     02CA   553 EXE$QIORETURN::				;QUEUE I/O REQUEST COMPLETION STATUS RETURN

            50       0000'8F     3C  02CA   554 	MOVZWL	#SS$_NORMAL,R0		;SET NORMAL COMPLETION STATUS

                                     02CF   555 QIORETURN:				;RETURN SPECIFIED STATUS

                                     02CF   556 	SETIPL	#0			;ALLOW ALL INTERRUPTS

                                 04  02D2   557 	RET				;

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page  13

02              INSERT I/O PACKET IN UNIT QUEUE                                                                                  (1)



                                     02D3   559 	.SBTTL	INSERT I/O PACKET IN UNIT QUEUE

                                     02D3   560 ;+

                                     02D3   561 ; EXE$INSIOQ - INSERT I/O PACKET IN UNIT QUEUE

                                     02D3   562 ;

                                     02D3   563 ; THIS ROUTINE IS CALLED TO INSERT AN I/O PACKET IN A UNIT QUEUE AND CALL

                                     02D3   564 ; THE APPROPRIATE I/O DRIVER IF THE UNIT IS NOT BUSY.

                                     02D3   565 ;

                                     02D3   566 ; INPUTS:

                                     02D3   567 ;

                                     02D3   568 ;	R3 = ADDRESS OF I/O REQUEST PACKET.

                                     02D3   569 ;	R5 = UCB ADDRESS OF DEVICE UNIT.

                                     02D3   570 ;-

                                     02D3   571  

                                     02D3   572 EXE$INSIOQ::				;INSERT IN I/O QUEUE

                                     02D3   573 	DSBINT	UCB$B_FIPL(R5)		;RAISE IPL TO FORK LEVEL

         58 A5            08     E2  02DA   574 	BBSS	#UCB$V_BSY,UCB$W_STS(R5),10$ ;IF SET, THEN DEVICE IS BUSY

                          05         02DE       

                          FD1E'  30  02DF   575 	BSBW	IOC$INITIATE		;INITIATE I/O FUNCTION

                          06     11  02E2   576 	BRB	20$			;

            52         40 A5     DE  02E4   577 10$:	MOVAL	UCB$L_IOQFL(R5),R2	;GET ADDRESS OF I/O QUEUE LISTHEAD

                          04     10  02E8   578 	BSBB	EXE$INSERTIRP		;INSERT I/O PACKET IN DEVICE QUEUE

                                     02EA   579 20$:	ENBINT				;ENABLE INTERRUPTS

                                 05  02ED   580 	RSB				;

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page  14

02              INSERT I/O PACKET IN QUEUE BY PRIORITY                                                                           (1)



                                     02EE   582 	.SBTTL	INSERT I/O PACKET IN QUEUE BY PRIORITY

                                     02EE   583 ;+

                                     02EE   584 ; EXE$INSERTIRP - INSERT I/O PACKET IN QUEUE BY PRIORITY

                                     02EE   585 ;

                                     02EE   586 ; THIS ROUTINE IS CALLED TO INSERT AN I/O PACKET IN A SPECIFIED QUEUE BY

                                     02EE   587 ; PRIORITY.

                                     02EE   588 ;

                                     02EE   589 ; INPUTS:

                                     02EE   590 ;

                                     02EE   591 ;	R2 = ADDRESS OF QUEUE LISTHEAD.

                                     02EE   592 ;	R3 = ADDRESS OF I/O PACKET.

                                     02EE   593 ;

                                     02EE   594 ;	CURRENT IPL MUST BE THE FORK LEVEL OF THE RESPECTIVE DRIVER PROCESS

                                     02EE   595 ;	OR HIGHER.

                                     02EE   596 ;

                                     02EE   597 ; OUTPUTS:

                                     02EE   598 ;

                                     02EE   599 ;	THE I/O PACKET IS INSERTED IN THE SPECIFIED QUEUE BY PRIORITY AND

                                     02EE   600 ;	THE 'Z' CONDITION CODE IS RETURNED TO THE CALLER.

                                     02EE   601 ;

                                     02EE   602 ;		'Z' = 1 = ENTRY WAS FIRST ENTRY IN THE QUEUE.

                                     02EE   603 ;

                                     02EE   604 ;		'Z' = 0 = ENTRIES WERE ALREADY IN THE QUEUE.

                                     02EE   605 ;

                                     02EE   606 ;	R2 AND R3 ARE PRESERVED ACROSS THE CALL.

                                     02EE   607 ;-

                                     02EE   608  

                                     02EE   609 EXE$INSERTIRP::				;INSERT I/O PACKET IN QUEUE BY PRIORITY

            51            52     D0  02EE   610 	MOVL	R2,R1			;COPY LISTHEAD ADDRESS

            51         04 A1     D0  02F1   611 10$:	MOVL	IRP$L_IOQBL(R1),R1	;GET ADDRESS OF NEXT ENTRY

            51            52     D1  02F5   612 	CMPL	R2,R1			;END OF QUEUE?

                          07     13  02F8   613 	BEQL	20$			;IF EQL YES

         23 A1         23 A3     91  02FA   614 	CMPB	IRP$B_PRI(R3),IRP$B_PRI(R1) ;NEW ENTRY PRIORITY GREATER?

                          F0     1F  02FF   615 	BLSSU	10$			;IF LSS YES

            61            63     0E  0301   616 20$:	INSQUE	IRP$L_IOQFL(R3),IRP$L_IOQFL(R1) ;INSERT PACKET IN I/O QUEUE

                                 05  0304   617 	RSB				;

                                     0305   618  

                                     0305   619 	.END

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page  15

SYMBOL TABLE                                                                                                                     (1)



ACB$B_RMOD       0000000B            CTL$GL_PHD       ********   X   01   DYN$C_SSB      = 0000001D            

ACB$B_TYPE       0000000A            DDB$B_ACPCLASS   00000013            DYN$C_TQE      = 0000000F            

ACB$L_AST        00000010            DDB$B_TYPE       0000000A            DYN$C_TYPAHD   = 00000014            

ACB$L_ASTPRM     00000014            DDB$C_LENGTH     00000034            DYN$C_UCB      = 00000010            

ACB$L_ASTQBL     00000004            DDB$K_LENGTH     00000034            DYN$C_VCB      = 00000011            

ACB$L_ASTQFL     00000000            DDB$L_ACPD       00000010            DYN$C_WCB      = 00000012            

ACB$L_KAST       00000018            DDB$L_DDT        0000000C            EFN            = 00000004            

ACB$L_PID        0000000C            DDB$L_LINK       00000000            ERROR            00000091 R     01   

ACB$M_QUOTA    = 00000040            DDB$L_UCB        00000004            EXE$ABORTIO      00000287 RG    01   

ACB$S_MODE     = 00000002            DDB$T_DRVNAME    00000024            EXE$ALLOCBUF     ********   X   01   

ACB$V_KAST     = 00000007            DDB$T_NAME       00000014            EXE$ALLOCIRP     ********   X   01   

ACB$V_MODE     = 00000000            DDB$W_SIZE       00000008            EXE$BLDPKTSWPR   00000222 RG    01   

ACB$V_QUOTA    = 00000006            DDT$L_CANCEL     0000000C            EXE$BLDPKTSWPW   0000022A RG    01   

ACB$W_SIZE       00000008            DDT$L_FDT        00000008            EXE$BUILDPKTR    0000023A RG    01   

ACCESS           0000013B R     01   DDT$L_INIT       00000018            EXE$BUILDPKTW    00000232 RG    01   

ALLOC            000000BB R     01   DDT$L_REGDUMP    00000010            EXE$CHKLOGACCES  ********   X   01   

AQB$B_ACPTYPE    00000015            DDT$L_START      00000000            EXE$CHKPHYACCES  ********   X   01   

AQB$B_CLASS      00000016            DDT$L_UNSOLINT   00000004            EXE$FINISHIO     00000296 RG    01   

AQB$B_MNTCNT     0000000B            DDT$W_DIAGBUF    00000014            EXE$FINISHIOC    00000294 RG    01   

AQB$B_STATUS     00000014            DDT$W_ERRORBUF   00000016            EXE$INSERTIRP    000002EE RG    01   

AQB$B_TYPE       0000000A            DEV$V_FOD        ********   X   01   EXE$INSIOQ       000002D3 RG    01   

AQB$C_LENGTH     00000018            DEV$V_FOR        ********   X   01   EXE$QIO          00000000 RG    01   

AQB$K_F11V1    = 00000001            DEV$V_MNT        ********   X   01   EXE$QIOACPPKT    000002B0 RG    01   

AQB$K_F11V2    = 00000002            DEV$V_SHR        ********   X   01   EXE$QIODRVPKT    000002AC RG    01   

AQB$K_LENGTH     00000018            DEV$V_SPL        ********   X   01   EXE$QIORETURN    000002CA RG    01   

AQB$K_MTA      = 00000003            DYN$C_ACB      = 00000002            EXE$SNGLEQUOTA   ********   X   01   

AQB$K_NET      = 00000004            DYN$C_ADP      = 00000001            FDTACT         = 00000010            

AQB$K_UNDEFINED= 00000000            DYN$C_AQB      = 00000003            FUNC           = 0000000C            

AQB$L_ACPPID     0000000C            DYN$C_BRDCST   = 0000001A            GBL...         = 00000000            

AQB$L_ACPQBL     00000004            DYN$C_BUFIO    = 00000013            GTPKT            000000C3 R     01   

AQB$L_ACPQFL     00000000            DYN$C_CEB      = 00000004            IO$M_FCODE       ********   X   01   

AQB$L_LINK       00000010            DYN$C_CRB      = 00000005            IO$_LOGICAL      ********   X   01   

AQB$M_CREATING = 00000008            DYN$C_CXB      = 0000001B            IO$_PHYSICAL     ********   X   01   

AQB$M_DEFCLASS = 00000002            DYN$C_DDB      = 00000006            IO$_READLBLK     ********   X   01   

AQB$M_DEFSYS   = 00000004            DYN$C_DPT      = 0000001E            IO$_READPBLK     ********   X   01   

AQB$M_UNIQUE   = 00000001            DYN$C_FCB      = 00000007            IO$_READVBLK     ********   X   01   

AQB$V_CREATING = 00000003            DYN$C_FRK      = 00000008            IO$_WRITEPBLK    ********   X   01   

AQB$V_DEFCLASS = 00000001            DYN$C_GSD      = 00000015            IO$_WRITEVBLK    ********   X   01   

AQB$V_DEFSYS   = 00000002            DYN$C_IDB      = 00000009            IOC$GL_IRPFL     ********   X   01   

AQB$V_UNIQUE   = 00000000            DYN$C_IRP      = 0000000A            IOC$GL_PSBL      ********   X   01   

AQB$W_SIZE       00000008            DYN$C_JPB      = 0000001F            IOC$INITIATE     ********   X   01   

ASTADR         = 00000014            DYN$C_KFH      = 00000026            IOC$QNXTSEG1     ********   X   01   

ASTPRM         = 00000018            DYN$C_KFI      = 00000018            IOC$VERIFYCHAN   ********   X   01   

BIT...         = 0000000C            DYN$C_LOG      = 0000000B            IOSB           = 00000010            

BUG$_NONEXSTACP  ********   X   01   DYN$C_MTL      = 00000019            IOTYPE         = 00000008            

CA$_MEASURE    = 00000002            DYN$C_MVL      = 00000016            IPL$_ASTDEL    = 00000002            

CA$_MEASURE_IOT= 00000004            DYN$C_NDB      = 0000001C            IPL$_HWCLK     = 00000018            

CA$_SIMULATOR  = 00000001            DYN$C_NET      = 00000017            IPL$_IOPOST    = 00000004            

CCB$B_AMOD       00000009            DYN$C_PBH      = 00000020            IPL$_MAILBOX   = 0000000B            

CCB$B_STS        00000008            DYN$C_PCB      = 0000000C            IPL$_POWER     = 0000001F            

CCB$C_LENGTH     00000010            DYN$C_PDB      = 00000021            IPL$_QUEUEAST  = 00000006            

CCB$K_LENGTH     00000010            DYN$C_PFL      = 00000023            IPL$_SCHED     = 00000003            

CCB$L_DIRP       0000000C            DYN$C_PIB      = 00000022            IPL$_SYNCH     = 00000007            

CCB$L_UCB        00000000            DYN$C_PQB      = 0000000D            IPL$_TIMER     = 00000007            

CCB$L_WIND       00000004            DYN$C_PTR      = 00000025            IRP$B_CARCON     00000038            

CCB$W_IOC        0000000A            DYN$C_RVT      = 0000000E            IRP$B_EFN        00000022            

CHAN           = 00000008            DYN$C_SFT      = 00000024            IRP$B_PRI        00000023            

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page  16

SYMBOL TABLE                                                                                                                     (1)



IRP$B_RMOD       0000000B            IRP$W_TT_PRMPT   0000003C            PCB$V_WAKEPEN  = 0000000C            

IRP$B_TYPE       0000000A            LEGAL          = 00000000            PCB$V_WALL     = 0000000D            

IRP$C_LENGTH     0000004C            P1             = 0000001C            PCB$W_APTCNT     00000034            

IRP$K_LENGTH     0000004C            P2             = 00000020            PCB$W_ASTCNT     0000003C            

IRP$L_AST        00000010            P3             = 00000024            PCB$W_BIOCNT     0000003E            

IRP$L_ASTPRM     00000014            P4             = 00000028            PCB$W_BIOLM      00000040            

IRP$L_DIAGBUF    00000044            P5             = 0000002C            PCB$W_BYTCNT     00000042            

IRP$L_IOQBL      00000004            P6             = 00000030            PCB$W_BYTLM      00000068            

IRP$L_IOQFL      00000000            PCB$B_ASTACT     0000000C            PCB$W_DIOCNT     00000044            

IRP$L_IOSB       00000024            PCB$B_ASTEN      0000000D            PCB$W_DIOLM      00000046            

IRP$L_IOST1      00000034            PCB$B_PRI        0000000B            PCB$W_FILCNT     00000048            

IRP$L_IOST2      00000038            PCB$B_PRIB       00000033            PCB$W_GPGCNT     00000038            

IRP$L_MEDIA      00000034            PCB$B_TYPE       0000000A            PCB$W_GRP        00000022            

IRP$L_PID        0000000C            PCB$B_WEFC       00000032            PCB$W_MEM        00000020            

IRP$L_SEGVBN     00000040            PCB$C_LENGTH     0000007C            PCB$W_MTXCNT     0000000E            

IRP$L_SEQNUM     00000048            PCB$K_LENGTH     0000007C            PCB$W_PPGCNT     0000003A            

IRP$L_SVAPTE     0000002C            PCB$L_ASTQBL     00000014            PCB$W_PRCCNT     0000006A            

IRP$L_TT_TERM    00000038            PCB$L_ASTQFL     00000010            PCB$W_SIZE       00000008            

IRP$L_UCB        0000001C            PCB$L_EFC2P      00000058            PCB$W_STATE      00000030            

IRP$L_WIND       00000018            PCB$L_EFC3P      0000005C            PCB$W_TMBU       00000036            

IRP$M_BUFIO    = 00000001            PCB$L_EFCS       00000050            PCB$W_TQCNT      0000004A            

IRP$M_CHAINED  = 00000020            PCB$L_EFCU       00000054            PHD$B_ASTLVL     000000CF            

IRP$M_COMPLX   = 00000008            PCB$L_EFWM       0000004C            PHD$B_DFPFC      00000038            

IRP$M_DIAGBUF  = 00000080            PCB$L_OWNER      0000001C            PHD$B_PAGFIL     0000001F            

IRP$M_FUNC     = 00000002            PCB$L_PHD        00000064            PHD$B_PGTBPFC    00000039            

IRP$M_MBXIO    = 00000400            PCB$L_PHYPCB     00000018            PHD$C_LENGTH     00000118            

IRP$M_PAGIO    = 00000004            PCB$L_PID        00000060            PHD$C_PHDPAGCTX= 00000008            

IRP$M_PHYSIO   = 00000100            PCB$L_PQB        0000004C            PHD$K_LENGTH     00000118            

IRP$M_PRIVIO   = 00000200            PCB$L_SQBL       00000004            PHD$L_BIOCNT     00000054            

IRP$M_SWAPIO   = 00000040            PCB$L_SQFL       00000000            PHD$L_CPULIM     00000058            

IRP$M_VIRTUAL  = 00000010            PCB$L_STS        00000028            PHD$L_CPUTIM     0000003C            

IRP$Q_NT_PRVMSK  0000003C            PCB$L_UIC        00000020            PHD$L_DIOCNT     00000050            

IRP$S_FCODE    = 00000006            PCB$L_WSSWP      00000024            PHD$L_ESP        0000007C            

IRP$S_FMOD     = 0000000A            PCB$L_WTIME      0000002C            PHD$L_FREP0VA    00000028            

IRP$S_MODE     = 00000002            PCB$T_LNAME      0000006C            PHD$L_FREP1VA    00000030            

IRP$V_BUFIO    = 00000000            PCB$V_ASTPEN   = 00000011            PHD$L_FREPTECNT  0000002C            

IRP$V_CHAINED  = 00000005            PCB$V_BATCH    = 0000000E            PHD$L_KSP        00000078            

IRP$V_COMPLX   = 00000003            PCB$V_DELPEN   = 00000001            PHD$L_P0BR       000000C8            

IRP$V_DIAGBUF  = 00000007            PCB$V_FORCPEN  = 00000002            PHD$L_P0LRASTL   000000CC            

IRP$V_FCODE    = 00000000            PCB$V_HIBER    = 00000013            PHD$L_P1BR       000000D0            

IRP$V_FMOD     = 00000006            PCB$V_INQUAN   = 00000003            PHD$L_P1LR       000000D4            

IRP$V_FUNC     = 00000001            PCB$V_LOGIN    = 00000014            PHD$L_PAGEFLTS   0000004C            

IRP$V_MBXIO    = 0000000A            PCB$V_NETWRK   = 00000015            PHD$L_PAGFIL     0000001C            

IRP$V_MODE     = 00000000            PCB$V_NOACNT   = 0000000F            PHD$L_PC         000000C0            

IRP$V_PAGIO    = 00000002            PCB$V_NODELET  = 00000017            PHD$L_PCB        00000078            

IRP$V_PHYSIO   = 00000008            PCB$V_PHDRES   = 00000012            PHD$L_PGFLCNT    00000034            

IRP$V_PRIVIO   = 00000009            PCB$V_PSWAPM   = 00000004            PHD$L_PGFLQUOTA  0000005C            

IRP$V_SWAPIO   = 00000006            PCB$V_PWRAST   = 00000016            PHD$L_PSL        000000C4            

IRP$V_VIRTUAL  = 00000004            PCB$V_RES      = 00000000            PHD$L_PSTBASOFF  00000020            

IRP$W_ABCNT      0000003C            PCB$V_RESPEN   = 00000005            PHD$L_PTWSLELCK  00000064            

IRP$W_BCNT       00000032            PCB$V_SSFEXC   = 00000006            PHD$L_PTWSLEVAL  00000068            

IRP$W_BOFF       00000030            PCB$V_SSFEXCE  = 00000007            PHD$L_R0         00000088            

IRP$W_CHAN       00000028            PCB$V_SSFEXCS  = 00000008            PHD$L_R1         0000008C            

IRP$W_FUNC       00000020            PCB$V_SSFEXCU  = 00000009            PHD$L_R10        000000B0            

IRP$W_OBCNT      0000003E            PCB$V_SSRWAIT  = 0000000A            PHD$L_R11        000000B4            

IRP$W_SIZE       00000008            PCB$V_SUSPEN   = 0000000B            PHD$L_R12        000000B8            

IRP$W_STS        0000002A            PCB$V_SWPVBN   = 00000010            PHD$L_R13        000000BC            

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page  17

SYMBOL TABLE                                                                                                                     (1)



PHD$L_R2         00000090            PR$_ICR        = 0000001A            PRV$V_PRMCEB   = 0000000A            

PHD$L_R3         00000094            PR$_IPL        = 00000012            PRV$V_PRMGBL   = 00000018            

PHD$L_R4         00000098            PR$_ISP        = 00000004            PRV$V_PRMMBX   = 0000000B            

PHD$L_R5         0000009C            PR$_KSP        = 00000000            PRV$V_PSWAPM   = 0000000C            

PHD$L_R6         000000A0            PR$_MAPEN      = 00000038            PRV$V_SETPRI   = 0000000D            

PHD$L_R7         000000A4            PR$_NICR       = 00000019            PRV$V_SETPRV   = 0000000E            

PHD$L_R8         000000A8            PR$_P0BR       = 00000008            PRV$V_SYSGBL   = 00000019            

PHD$L_R9         000000AC            PR$_P0LR       = 00000009            PRV$V_SYSNAM   = 00000002            

PHD$L_REFERFLT   00000014            PR$_P1BR       = 0000000A            PRV$V_TMPMBX   = 0000000F            

PHD$L_SSP        00000080            PR$_P1LR       = 0000000B            PRV$V_VOLPRO   = 00000015            

PHD$L_USP        00000084            PR$_PCBB       = 00000010            PRV$V_WORLD    = 00000010            

PHD$L_WSL        00000118            PR$_PME        = 0000003D            PSL$C_EXEC     = 00000001            

PHD$M_DALCSTX  = 00000002            PR$_RXCS       = 00000020            PSL$C_KERNEL   = 00000000            

PHD$M_PFMFLG   = 00000001            PR$_RXDB       = 00000021            PSL$C_SUPER    = 00000002            

PHD$M_WSPEAKCHK= 00000004            PR$_SBIER      = 00000034            PSL$C_USER     = 00000003            

PHD$Q_PRIVMSK    00000000            PR$_SBIFS      = 00000030            PSL$M_CM       = 80000000            

PHD$S_ASTLVL   = 00000008            PR$_SBIMT      = 00000033            PSL$M_CURMOD   = 03000000            

PHD$S_P0LR     = 00000018            PR$_SBIQC      = 00000036            PSL$M_DV       = 00000080            

PHD$V_ASTLVL   = 00000018            PR$_SBIS       = 00000031            PSL$M_FPD      = 08000000            

PHD$V_DALCSTX  = 00000001            PR$_SBISC      = 00000032            PSL$M_FU       = 00000040            

PHD$V_P0LR     = 00000000            PR$_SBITA      = 00000035            PSL$M_IPL      = 001F0000            

PHD$V_PFMFLG   = 00000000            PR$_SBR        = 0000000C            PSL$M_IS       = 04000000            

PHD$V_WSPEAKCHK= 00000002            PR$_SCBB       = 00000011            PSL$M_IV       = 00000020            

PHD$W_ASTLM      00000044            PR$_SID        = 0000003E            PSL$M_PRVMOD   = 00C00000            

PHD$W_BAK        00000048            PR$_SIRR       = 00000014            PSL$M_SAFBITS  = 000037FF            

PHD$W_DFWSCNT    0000001A            PR$_SISR       = 00000015            PSL$M_TBIT     = 00000010            

PHD$W_EMPTPG     000000D8            PR$_SLR        = 0000000D            PSL$M_TP       = 40000000            

PHD$W_EXTDYNWS   00000076            PR$_SSP        = 00000002            PSL$S_CURMOD   = 00000002            

PHD$W_FILLM      00000060            PR$_TBIA       = 00000039            PSL$S_IPL      = 00000005            

PHD$W_FLAGS      0000003A            PR$_TBIS       = 0000003A            PSL$S_PRVMOD   = 00000002            

PHD$W_PHVINDEX   00000046            PR$_TODR       = 0000001B            PSL$V_CM       = 0000001F            

PHD$W_PRCLM      00000042            PR$_TXCS       = 00000022            PSL$V_CURMOD   = 00000018            

PHD$W_PST        00000020            PR$_TXDB       = 00000023            PSL$V_DV       = 00000007            

PHD$W_PSTBASMAX  0000004A            PR$_USP        = 00000003            PSL$V_FPD      = 0000001B            

PHD$W_PSTFREE    00000026            PR$_WCSA       = 0000002C            PSL$V_FU       = 00000006            

PHD$W_PSTLAST    00000024            PR$_WCSD       = 0000002D            PSL$V_IPL      = 00000010            

PHD$W_PTCNTACT   00000070            PRI$_IOCOM     = 00000001            PSL$V_IS       = 0000001A            

PHD$W_PTCNTLCK   0000006C            PRI$_NULL      = 00000000            PSL$V_IV       = 00000005            

PHD$W_PTCNTMAX   00000072            PRI$_RESAVL    = 00000002            PSL$V_PRVMOD   = 00000016            

PHD$W_PTCNTVAL   0000006E            PRI$_TICOM     = 00000004            PSL$V_TBIT     = 00000004            

PHD$W_QUANT      00000040            PRI$_TIMER     = 00000002            PSL$V_TP       = 0000001E            

PHD$W_TQLM       00000062            PRI$_TOCOM     = 00000003            QIORETURN        000002CF R     01   

PHD$W_WSAUTH     0000000A            PRV$V_ALLSPOOL = 00000004            RSN$_ASTWAIT   = 00000001            

PHD$W_WSDYN      0000000E            PRV$V_BUGCHK   = 00000017            RSN$_BRKTHRU   = 00000006            

PHD$W_WSFLUID    00000074            PRV$V_CMEXEC   = 00000001            RSN$_IACLOCK   = 00000007            

PHD$W_WSLAST     00000012            PRV$V_CMKRNL   = 00000000            RSN$_MAILBOX   = 00000002            

PHD$W_WSLIST     00000008            PRV$V_DETACH   = 00000005            RSN$_NPDYNMEM  = 00000003            

PHD$W_WSLOCK     0000000C            PRV$V_DIAGNOSE = 00000006            RSN$_PGDYNMEM  = 00000005            

PHD$W_WSLX       0000004A            PRV$V_EXQUOTA  = 00000013            RSN$_PGFILE    = 00000004            

PHD$W_WSNEXT     00000010            PRV$V_GROUP    = 00000008            SCH$CLREF        ********   X   01   

PHD$W_WSQUOTA    00000018            PRV$V_GRPNAM   = 00000003            SCH$POSTEF       ********   X   01   

PMS$START_RQ     ********   X   01   PRV$V_LOG_IO   = 00000007            SCH$RWAIT        ********   X   01   

PR$_ACCR       = 00000029            PRV$V_MOUNT    = 00000011            SCH$WAKE         ********   X   01   

PR$_ACCS       = 00000028            PRV$V_NETMBX   = 00000014            SEC$B_AMOD       00000015            

PR$_ASTLVL     = 00000013            PRV$V_NOACNT   = 00000009            SEC$B_PFC        0000000B            

PR$_ESP        = 00000001            PRV$V_OPER     = 00000012            SEC$C_LENGTH     00000020            

PR$_ICCS       = 00000018            PRV$V_PHY_IO   = 00000016            SEC$K_LENGTH     00000020            

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page  18

SYMBOL TABLE                                                                                                                     (1)



SEC$K_MATALL   = 00000000            UCB$B_FIPL       0000000B            UCB$M_DELMBX   = 00000002            

SEC$K_MATEQU   = 00000001            UCB$B_LOCSRV     0000003C            UCB$M_DIAGBUF  = 00000002            

SEC$K_MATLEQ   = 00000002            UCB$B_OFFNDX     00000094            UCB$M_DX_WRITE = 00000008            

SEC$L_CCB        00000000            UCB$B_OFFRTC     00000095            UCB$M_ECC      = 00000001            

SEC$L_GSD        00000000            UCB$B_REMSRV     0000003D            UCB$M_ERLOGIP  = 00000004            

SEC$L_PAGCNT     0000001C            UCB$B_SECTORS    0000003C            UCB$M_INT      = 00000002            

SEC$L_REFCNT     00000018            UCB$B_SLAVE      00000074            UCB$M_INTTYPE  = 00000080            

SEC$L_VBN        00000010            UCB$B_SPR        00000075            UCB$M_JOB      = 00000001            

SEC$L_VPXPFC     00000008            UCB$B_STATE      00000052            UCB$M_MOUNTING = 00000200            

SEC$L_WINDOW     0000000C            UCB$B_TRACKS     0000003D            UCB$M_NOCNVRT  = 00000004            

SEC$M_AMOD     = 00000300            UCB$B_TYPE       0000000A            UCB$M_NT_BFROVF= 00000004            

SEC$M_CRF      = 00000002            UCB$B_VERTSZ     0000003F            UCB$M_NT_BREAK = 00000020            

SEC$M_DZRO     = 00000004            UCB$C_LENGTH     00000074            UCB$M_NT_NAME  = 00000010            

SEC$M_GBL      = 00000001            UCB$C_LOGLNK   = 00000001            UCB$M_ONLINE   = 00000010            

SEC$M_PERM     = 00004000            UCB$K_LENGTH     00000074            UCB$M_POWER    = 00000020            

SEC$M_SYSGBL   = 00008000            UCB$L_AMB        00000054            UCB$M_PRMMBX   = 00000001            

SEC$M_WRT      = 00000008            UCB$L_ASTQBL     00000010            UCB$M_TIM      = 00000001            

SEC$S_AMOD     = 00000002            UCB$L_ASTQFL     0000000C            UCB$M_TIMOUT   = 00000040            

SEC$S_CRF      = 00000001            UCB$L_CPID       0000005C            UCB$M_TT_NOTIF = 00000004            

SEC$S_DZRO     = 00000001            UCB$L_CRB        00000020            UCB$M_TT_TIMO  = 00000002            

SEC$S_GBL      = 00000001            UCB$L_DDB        00000024            UCB$M_UNLOAD   = 00001000            

SEC$S_PERM     = 00000001            UCB$L_DEVCHAR    00000034            UCB$M_VALID    = 00000800            

SEC$S_PFC      = 00000008            UCB$L_DEVDEPEND  0000003C            UCB$S_LNKPRI   = 00000002            

SEC$S_SYSGBL   = 00000001            UCB$L_DPC        00000080            UCB$S_LTYPE    = 00000002            

SEC$S_VPX      = 00000016            UCB$L_DUETIM     0000005C            UCB$T_PARTNER    0000000C            

SEC$S_WRT      = 00000001            UCB$L_DX_BFPNT   0000009C            UCB$V_BACKP    = 00000005            

SEC$V_AMOD     = 00000008            UCB$L_DX_BUF     00000098            UCB$V_BSY      = 00000008            

SEC$V_CRF      = 00000001            UCB$L_DX_RXDB    000000A0            UCB$V_CANCEL   = 00000003            

SEC$V_DZRO     = 00000002            UCB$L_EMB        00000078            UCB$V_DEADMO   = 0000000A            

SEC$V_GBL      = 00000000            UCB$L_FIRST      00000014            UCB$V_DELMBX   = 00000001            

SEC$V_PERM     = 0000000E            UCB$L_FPC        0000000C            UCB$V_DIAGBUF  = 00000001            

SEC$V_PFC      = 00000018            UCB$L_FQBL       00000004            UCB$V_DX_WRITE = 00000003            

SEC$V_SYSGBL   = 0000000F            UCB$L_FQFL       00000000            UCB$V_ECC      = 00000000            

SEC$V_VPX      = 00000000            UCB$L_FR3        00000010            UCB$V_ERLOGIP  = 00000002            

SEC$V_WRT      = 00000003            UCB$L_FR4        00000014            UCB$V_INT      = 00000001            

SEC$W_FLAGS      00000014            UCB$L_IOQBL      00000044            UCB$V_INTTYPE  = 00000007            

SEC$W_SECXBL     00000006            UCB$L_IOQFL      00000040            UCB$V_JOB      = 00000000            

SEC$W_SECXFL     00000004            UCB$L_IRP        0000004C            UCB$V_LNKPRI   = 00000006            

SS$_ACCVIO       ********   X   01   UCB$L_LINK       0000002C            UCB$V_LTYPE    = 00000000            

SS$_DEVOFFLINE   ********   X   01   UCB$L_LOGADR     00000064            UCB$V_MOUNTING = 00000009            

SS$_EXQUOTA      ********   X   01   UCB$L_MAXBLOCK   00000084            UCB$V_MSGACK   = 00000004            

SS$_ILLIOFUNC    ********   X   01   UCB$L_MEDIA      0000008C            UCB$V_MSGFLO   = 00000003            

SS$_NOPRIV       ********   X   01   UCB$L_NT_DATSSB  00000074            UCB$V_NOCNVRT  = 00000002            

SS$_NORMAL       ********   X   01   UCB$L_NT_INTSSB  00000078            UCB$V_NT_BFROVF= 00000002            

SUCCES           000000CA R     01   UCB$L_OPCNT      00000060            UCB$V_NT_BREAK = 00000005            

UCB$B_AMOD       00000053            UCB$L_OWNUIC     0000001C            UCB$V_NT_NAME  = 00000004            

UCB$B_CEX        00000077            UCB$L_PID        00000028            UCB$V_ONLINE   = 00000004            

UCB$B_CM1        0000004A            UCB$L_RQBL       00000004            UCB$V_POWER    = 00000005            

UCB$B_CM2        0000004B            UCB$L_RQFL       00000000            UCB$V_PRMMBX   = 00000000            

UCB$B_DEVCLASS   00000038            UCB$L_SVAPTE     00000068            UCB$V_SEGFLO   = 00000002            

UCB$B_DEVTYPE    00000039            UCB$L_SVPN       00000064            UCB$V_TIM      = 00000000            

UCB$B_DIPL       00000052            UCB$L_TTCHAR     0000003C            UCB$V_TIMOUT   = 00000006            

UCB$B_DX_SCTCNT  000000A6            UCB$L_VCB        00000030            UCB$V_TT_NOTIF = 00000002            

UCB$B_ERTCNT     00000070            UCB$M_BACKP    = 00000020            UCB$V_TT_TIMO  = 00000001            

UCB$B_ERTMAX     00000071            UCB$M_BSY      = 00000100            UCB$V_UNLOAD   = 0000000C            

UCB$B_ESCAPE     0000004B            UCB$M_CANCEL   = 00000008            UCB$V_VALID    = 0000000B            

UCB$B_FEX        00000076            UCB$M_DEADMO   = 00000400            UCB$W_BCNT       0000006E            

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page  19

SYMBOL TABLE                                                                                                                     (1)



UCB$W_BCR        00000096            VCB$L_IXHDR2LBN  0000002C            WCB$C_LENGTH     00000024            

UCB$W_BOFF       0000006C            VCB$L_MAXFILES   00000044            WCB$C_MAP        00000024            

UCB$W_BUFQUO     00000018            VCB$L_MVL        00000034            WCB$K_LENGTH     00000024            

UCB$W_BYTESTOGO  0000003E            VCB$L_RVT        00000020            WCB$K_MAP        00000024            

UCB$W_CHARGE     0000004A            VCB$L_SBMAPLBN   00000034            WCB$L_FCB        00000018            

UCB$W_CYLINDERS  0000003E            VCB$L_START_FID  00000028            WCB$L_LBN        00000002            

UCB$W_DA         0000008C            VCB$L_ST_RECORD  00000030            WCB$L_ORGUCB     00000010            

UCB$W_DC         0000008E            VCB$L_USRLBLAST  00000044            WCB$L_P1_LBN     00000026            

UCB$W_DEVBUFSIZ  0000003A            VCB$L_VPBL       00000040            WCB$L_P2_LBN     0000002C            

UCB$W_DEVSTS     0000005A            VCB$L_VPFL       0000003C            WCB$L_PID        0000000C            

UCB$W_DIRSEQ     00000088            VCB$L_WCB        00000038            WCB$L_PREVLBN    FFFFFFFC            

UCB$W_DSTADDR    00000018            VCB$M_CANCELIO = 00000020            WCB$L_RVT        0000001C            

UCB$W_DX_BCR     000000A4            VCB$M_MUSTCLOSE= 00000040            WCB$L_STVBN      00000020            

UCB$W_EC1        00000090            VCB$M_NOWRITE  = 00000080            WCB$L_WLBL       00000004            

UCB$W_EC2        00000092            VCB$M_WAIMOUVOL= 00000004            WCB$L_WLFL       00000000            

UCB$W_ERRCNT     00000072            VCB$M_WAIREWIND= 00000008            WCB$M_NOTFCP   = 00000004            

UCB$W_FUNC       0000007E            VCB$M_WAIUSRLBL= 00000010            WCB$M_READ     = 00000001            

UCB$W_MB_SEED    FFFFFFFC            VCB$T_QNAME      0000000C            WCB$M_SHRWCB   = 00000008            

UCB$W_MSGCNT     00000016            VCB$T_VOLNAME    00000014            WCB$M_WRITE    = 00000002            

UCB$W_MSGMAX     00000014            VCB$V_CANCELIO = 00000005            WCB$V_DLOCK    = 00000001            

UCB$W_NT_CHAN    0000007C            VCB$V_EBCDIC   = 00000005            WCB$V_NOREAD   = 0000000A            

UCB$W_OFFSET     0000008A            VCB$V_EXTFID   = 00000005            WCB$V_NOTFCP   = 00000002            

UCB$W_REFC       00000050            VCB$V_GROUP    = 00000006            WCB$V_NOTRUNC  = 0000000B            

UCB$W_SIZE       00000008            VCB$V_HOMBLKBAD= 00000002            WCB$V_NOWRITE  = 00000000            

UCB$W_SRCADDR    0000001A            VCB$V_IDXHDRBAD= 00000003            WCB$V_READ     = 00000000            

UCB$W_STS        00000058            VCB$V_INTCHG   = 00000004            WCB$V_READCK   = 00000009            

UCB$W_UNIT       00000048            VCB$V_LOGICEOVS= 00000001            WCB$V_SEQONLY  = 00000006            

UCB$W_VPROT      0000001A            VCB$V_MUSTCLOSE= 00000006            WCB$V_SHRWCB   = 00000003            

VCB$B_CUR_RVN    0000002F            VCB$V_NOALLOC  = 00000004            WCB$V_SPOOL    = 00000004            

VCB$B_EOFDELTA   0000004E            VCB$V_NOWRITE  = 00000007            WCB$V_WRITE    = 00000001            

VCB$B_IBMAPSIZE  00000038            VCB$V_OVRACC   = 00000001            WCB$V_WRITEAC  = 00000008            

VCB$B_IBMAPVBN   0000003A            VCB$V_OVREXP   = 00000000            WCB$V_WRITECK  = 00000005            

VCB$B_LRU_LIM    00000049            VCB$V_OVRLBL   = 00000002            WCB$W_ACON       00000014            

VCB$B_QNAMECNT   0000000B            VCB$V_OVRSETID = 00000003            WCB$W_COUNT      00000000            

VCB$B_RESFILES   0000004F            VCB$V_PARTFILE = 00000000            WCB$W_NMAP       00000016            

VCB$B_SBMAPSIZE  00000039            VCB$V_STARFILE = 00000008            WCB$W_P1_COUNT   00000024            

VCB$B_SBMAPVBN   0000003B            VCB$V_SYSTEM   = 00000007            WCB$W_P2_COUNT   0000002A            

VCB$B_STATUS     0000000B            VCB$V_WAIMOUVOL= 00000002            WCB$W_PREVCOUNT  FFFFFFFA            

VCB$B_TM         0000002E            VCB$V_WAIREWIND= 00000003            WCB$W_REFCNT     0000000E            

VCB$B_TYPE       0000000A            VCB$V_WAIUSRLBL= 00000004            WCB$W_SIZE       00000008            

VCB$B_WINDOW     00000048            VCB$V_WRITE_IF = 00000000            

VCB$C_COMLEN     00000024            VCB$V_WRITE_SM = 00000001            

VCB$C_LENGTH     00000054            VCB$W_CLUSTER    0000003C            

VCB$C_MRKLEN     0000000B            VCB$W_CUR_NUM    00000024            

VCB$K_COMLEN     00000024            VCB$W_CUR_SEQ    00000026            

VCB$K_LENGTH     00000054            VCB$W_EXTEND     0000003E            

VCB$K_MRKLEN     0000000B            VCB$W_FILEPROT   0000004A            

VCB$L_AQB        00000010            VCB$W_MCOUNT     0000004C            

VCB$L_BLOCKBL    00000004            VCB$W_MODE       0000002C            

VCB$L_BLOCKFL    00000000            VCB$W_RECORDSZ   00000050            

VCB$L_CUR_FID    00000024            VCB$W_RVN        0000000E            

VCB$L_FCBBL      00000004            VCB$W_SIZE       00000008            

VCB$L_FCBFL      00000000            VCB$W_START_NUM  00000028            

VCB$L_FREE       00000040            VCB$W_START_SEQ  0000002A            

VCB$L_HOME2LBN   00000028            VCB$W_TRANS      0000000C            

VCB$L_HOMELBN    00000024            WCB$B_ACCESS     0000000B            

VCB$L_IBMAPLBN   00000030            WCB$B_TYPE       0000000A            

SYSQIOREQ       - SYSTEM SERVICE QUEUE I/O REQUEST               21-AUG-1978 20:40:14   VAX-11 MACRO X0.3-11               Page  20

PROGRAM SECTION SYNOPSIS                                                                                                         (1)







PROGRAM SECTION SYNOPSIS



.  ABS  .        00000000      00     NOPIC   USR   CON   ABS   LCL NOSHR NOEXE NORD  NOWRT BYTE  

. BLANK .        00000305      01     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

$ABS$            FFFFFFFE      02     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

3540. BYTES LEFT IN FREE MEMORY POOL.

2792. BYTES OF RECLAIMED MEMORY.

OBJ$:SYSQIOREQ,LIS$:SYSQIOREQ/-SP=EXECML$/ML,SRC$:SYSQIOREQ

21 MLB DIR RDS - 1378 GETS TO DEFINE 38 MACROS. 95 INTER. FILE WRITES. 

