IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)      64  CREATE MAILBOX OR NETWORK UCB

   (1)     132  CONVERT DEVICE NAME AND UNIT

   (1)     170  FIND FREE I/O CHANNEL

   (1)     206  SEARCH FOR DEVICE

   (1)     364  UNLOCK I/O DATA BASE AND RETURN STATUS

   (1)     390  VERIFY I/O CHANNEL NUMBER

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page   1

01                                                                                                                               (1)



                                     0000     1 	.TITLE	IOSUBPAGD - PAGED I/O RELATED SUBROUTINES

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

                                     0000    24 ;

                                     0000    25 ; PAGED I/O RELATED SUBROUTINES

                                     0000    26 ;

                                     0000    27 ; MACRO LIBRARY CALLS

                                     0000    28 ;

                                     0000    29  

                                     0000    30 	$ACBDEF				;DEFINE AST CONTROL BLOCK

                                     0000    31 	$CCBDEF				;DEFINE CCB OFFSETS

                                     0000    32 	$CRBDEF				;DEFINE CRB OFFSETS

                                     0000    33 	$DDBDEF				;DEFINE DDB OFFSETS

                                     0000    34 	$DEVDEF				;DEFINE DEVICE CHARACTERISTICS

                                     0000    35 	$IPLDEF				;DEFINE IPL LEVELS

                                     0000    36 	$LOGDEF				;DEFINE LOG OFFSETS

                                     0000    37 	$PCBDEF				;DEFINE PCB OFFSETS

                                     0000    38 	$PRDEF				;DEFINE PROCESSOR REGISTERS

                                     0000    39 	$PRVDEF				;DEFINE PRIVILEGE BITS

                                     0000    40 	$PSLDEF				;DEFINE PROCESSOR STATUS FIELDS

                                     0000    41 	$SSDEF				;DEFINE SYSTEM STATUS VALUES

                                     0000    42 	$UCBDEF				;DEFINE UCB OFFSETS

                                     0000    43  

                                     0000    44 ;

                                     0000    45 ; LOCAL SYMBOLS

                                     0000    46 ;

                                     0000    47 ; CHARACTER DEFINITIONS

                                     0000    48 ;

                                     0000    49  

                           0000003A  0000    50 COLON=58				;COLON

                           00000039  0000    51 NINE=57					;DIGIT 9

                           00000041  0000    52 UCA=65					;UPPER CASE A

                           00000064  0000    53 UCZ=100					;UPPER CASE Z

                           0000005F  0000    54 UNDERSCORE=95				;UNDERSCORE

                           00000030  0000    55 ZERO=48					;DIGIT 0

                                     0000    56  

                                     0000    57 ;

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page   2

01                                                                                                                               (1)



                                     0000    58 ; LOCAL DATA

                                     0000    59 ;

                                     0000    60  

                                 00000000    61 	.PSECT	Y$EXEPAGED

         3A 57 55 21 43 41 21 5F 00' 0000    62 DEVCTL:	.ASCIC	/_!AC!UW:/		;DEVICE NAME CONVERSION CONTROL STRING

                                 08  0000       

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page   3

01              CREATE MAILBOX OR NETWORK UCB                                                                                    (1)



                                     0009    64 	.SBTTL	CREATE MAILBOX OR NETWORK UCB

                                     0009    65 ;+

                                     0009    66 ; IOC$CREATE_UCB - CREATE MAILBOX OR NETWORK UCB

                                     0009    67 ;

                                     0009    68 ; THIS ROUTINE IS CALLED TO CREATE A MAILBOX OR NETWORK UCB AND LINK IT INTO

                                     0009    69 ; THE I/O DATABASE.

                                     0009    70 ;

                                     0009    71 ; INPUTS:

                                     0009    72 ;

                                     0009    73 ;	R4 = CURRENT PROCESS PCB ADDRESS.

                                     0009    74 ;	R5 = ADDRESS OF CLONE UCB.

                                     0009    75 ;

                                     0009    76 ; OUTPUTS:

                                     0009    77 ;

                                     0009    78 ;	R0 LOW BIT CLEAR INDICATES FAILURE TO ALLOCATE UCB.

                                     0009    79 ;

                                     0009    80 ;		R0 = SS$_INSFMEM - INSUFFICIENT MEMORY TO ALLOCATE MAILBOX

                                     0009    81 ;			OR NETWORK UCB.

                                     0009    82 ;

                                     0009    83 ;	R0 LOW BIT SUCCESS INDICATES SUCCESSFUL CREATION.

                                     0009    84 ;

                                     0009    85 ;		R2 = ADDRESS OF ALLOCATED UCB.

                                     0009    86 ;

                                     0009    87 ;		CONTROL IS RETURNED WITH THE I/O DATABASE LOCKED FOR WRITE

                                     0009    88 ;		ACCESS.

                                     0009    89 ;-

                                     0009    90  

                                     0009    91 IOC$CREATE_UCB::			;CREATE MAILBOX OR NETWORK UCB

            51         08 A5     3C  0009    92 	MOVZWL	UCB$W_SIZE(R5),R1	;GET SIZE OF BLOCK TO ALLOCATE

                          FFF0'  30  000D    93 	BSBW	EXE$ALONONPAGED		;ALLOCATE BLOCK FROM NONPAGED MEMORY

            74            50     E9  0010    94 	BLBC	R0,40$			;IF LBC ALLOCATION FAILURE

                          34     BB  0013    95 	PUSHR	#^M<R2,R4,R5>		;SAVE REGISTERS

            65            51     28  0015    96 	MOVC	R1,(R5),(R2)		;COPY CLONE UCB TO NEW UCB

                          62         0018       

                          34     BA  0019    97 	POPR	#^M<R2,R4,R5>		;RESTORE REGISTERS

            62            52     D0  001B    98 	MOVL	R2,UCB$L_FQFL(R2)	;SET MESSAGE/REQUEST QUEUE FORWARD LINK

         04 A2            52     D0  001E    99 	MOVL	R2,UCB$L_FQBL(R2)	;SET MESSAGE/REQUEST QUEUE BACKWARD LINK

                       0C A2     7C  0022   100 	CLRQ	UCB$L_ASTQFL(R2)	;CLEAR AST QUEUE LISTHEAD/STATE AND NODENAME

                       14 A2     7C  0025   101 	CLRQ	UCB$W_MSGMAX(R2)	;CLEAR MESSAGE COUNTS/CONNECT NUMBERS

         1C A2         20 A4     D0  0028   102 	MOVL	PCB$L_UIC(R4),UCB$L_OWNUIC(R2) ;INSERT CREATOR UIC

         40 A2         40 A2     9E  002D   103 	MOVAB	UCB$L_IOQFL(R2),UCB$L_IOQFL(R2) ;SET I/O QUEUE FORWARD LINK

         44 A2         40 A2     9E  0032   104 	MOVAB	UCB$L_IOQFL(R2),UCB$L_IOQBL(R2) ;SET I/O QUEUE BACKWARD LINK

         50 A2            01     B0  0037   105 	MOVW	#1,UCB$W_REFC(R2)	;SET INITIAL REFERENCE COUNT

         58 A2            10     B0  003B   106 	MOVW	#UCB$M_ONLINE,UCB$W_STS(R2) ;SET INITIAL DEVICE INDEPENDENT STATUS

                       5A A2     B4  003F   107 	CLRW	UCB$W_DEVSTS(R2)	;CLEAR INITIAL DEVICE DEPENDENT STATUS

         5C A2         60 A4     D0  0042   108 	MOVL	PCB$L_PID(R4),UCB$L_CPID(R2) ;INSERT CREATOR PID

                       60 A2     D4  0047   109 	CLRL	UCB$L_OPCNT(R2)		;CLEAR COUNT OF OPERATIONS COMPLETED

                       68 A2     7C  004A   110 	CLRQ	UCB$L_SVAPTE(R2)	;CLEAR PTE ADDRESS, BYTE OFFSET, AND COUNT

                          FFB0'  30  004D   111 	BSBW	SCH$IOLOCKW		;LOCK I/O DATABASE FOR WRITE ACCESS

                       FC A5     B6  0050   112 10$:	INCW	UCB$W_MB_SEED(R5)	;INCREMENT MAILBOX/NETWORK UCB SEED

            50         FC A5     3C  0053   113 	MOVZWL	UCB$W_MB_SEED(R5),R0	;GET CURRENT MAILBOX/NETWORK SEED

            51         24 A5     D0  0057   114 	MOVL	UCB$L_DDB(R5),R1	;GET ADDRESS OF MAILBOX/NETWORK DDB

            51         D8 A1     9E  005B   115 	MOVAB	DDB$L_UCB-UCB$L_LINK(R1),R1 ;SET TO START AT FIRST UCB

            53            51     D0  005F   116 20$:	MOVL	R1,R3			;SAVE ADDRESS OF PREVIOUS UCB

            51         2C A3     D0  0062   117 	MOVL	UCB$L_LINK(R3),R1	;GET ADDRESS OF NEXT UCB

                          08     13  0066   118 	BEQL	30$			;IF EQL NONE

         48 A1            50     B1  0068   119 	CMPW	R0,UCB$W_UNIT(R1)	;UNIT NUMBER MATCH?

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page   4

01              CREATE MAILBOX OR NETWORK UCB                                                                                    (1)



                          E2     13  006C   120 	BEQL	10$			;IF EQL YES

                          EF     1A  006E   121 	BGTRU	20$			;IF GTRU CONTINUE SCAN

         48 A2            50     B0  0070   122 30$:	MOVW	R0,UCB$W_UNIT(R2)	;INSERT MAILBOX/NETWORK UNIT NUMBER

         2C A3            52     D0  0074   123 	MOVL	R2,UCB$L_LINK(R3)	;SET LINK TO NEW UCB IN PREVIOUS UCB

         2C A2            51     D0  0078   124 	MOVL	R1,UCB$L_LINK(R2)	;SET LINK TO NEXT UCB IN NEW UCB

            50         20 A5     D0  007C   125 	MOVL	UCB$L_CRB(R5),R0	;GET ADDRESS OF MAILBOX/NETWORK CRB

                       0C A0     B6  0080   126 	INCW	CRB$W_REFC(R0)		;UPDATE MAILBOX/NETWORK CRB REFERENCE COUNT

            50            01     3C  0083   127 	MOVZWL	#SS$_NORMAL,R0		;SET NORMAL COMPLETION STATUS

                                 05  0086   128 	RSB				;

            50       0124 8F     3C  0087   129 40$:	MOVZWL	#SS$_INSFMEM,R0		;SET INSUFFICIENT MEMORY STATUS

                                 05  008C   130 	RSB				;

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page   5

01              CONVERT DEVICE NAME AND UNIT                                                                                     (1)



                                     008D   132 	.SBTTL	CONVERT DEVICE NAME AND UNIT

                                     008D   133 ;+

                                     008D   134 ; IOC$CVT_DEVNAM - CONVERT DEVICE NAME AND UNIT

                                     008D   135 ;

                                     008D   136 ; THIS ROUTINE IS CALLED TO CONVERT A DEVICE NAME AND UNIT NUMBER TO A PHYSICAL

                                     008D   137 ; DEVICE NAME STRING.

                                     008D   138 ;

                                     008D   139 ; INPUTS:

                                     008D   140 ;

                                     008D   141 ;	R0 = LENGTH OF OUTPUT BUFFER.

                                     008D   142 ;	R1 = ADDRESS OF OUTPUT BUFFER.

                                     008D   143 ;	R6 = ADDRESS OF DEVICE UCB.

                                     008D   144 ;

                                     008D   145 ; OUTPUTS:

                                     008D   146 ;

                                     008D   147 ;	THE DEVICE NAME AND UNIT NUMBER ARE CONVERTED AND STORED IN THE SPECIFIED

                                     008D   148 ;	OUTPUT BUFFER. THE FOLLOWING REGISTER VALUES ARE RETURNED:

                                     008D   149 ;

                                     008D   150 ;		R0 = FINAL CONVERSION STATUS.

                                     008D   151 ;		R1 = LENGTH OF CONVERSION STRING.

                                     008D   152 ;

                                     008D   153 ;	R3 IS PRESERVED ACROSS CALL.

                                     008D   154 ;-

                                     008D   155  

                                     008D   156 IOC$CVT_DEVNAM::			;CONVERT DEVICE NAME AND UNIT

            7E            50     7D  008D   157 	MOVQ	R0,-(SP)		;SAVE OUTPUT BUFFER DESCRIPTOR

            52            5E     D0  0090   158 	MOVL	SP,R2			;SET ADDRESS OF OUTPUT BUFFER DESCRIPTOR

            51       FF69 CF     9E  0093   159 	MOVAB	DEVCTL,R1		;GET ADDRESS OF CONVERSION CONTROL STRING

            50            81     9A  0098   160 	MOVZBL	(R1)+,R0		;GET LENGTH OF CONVERSION CONTROL STRING

            7E            50     7D  009B   161 	MOVQ	R0,-(SP)		;SAVE CONVERSION CONTROL STRING DESCRIPTOR

            51            5E     D0  009E   162 	MOVL	SP,R1			;SET ADDRESS OF CONTROL STRING DESCRIPTOR

            50         24 A6     D0  00A1   163 	MOVL	UCB$L_DDB(R6),R0	;GET ADDRESS OF DDB

            50         14 A0     9E  00A5   164 	MOVAB	DDB$T_NAME(R0),R0	;GET ADDRESS OF DEVICE NAME

                                     00A9   165 	$FAO_S	(R1),(R1),(R2),R0,UCB$W_UNIT(R6) ;CONVERT DEVICE AND UNIT

            51            6E     3C  00BB   166 	MOVZWL	(SP),R1			;GET LENGTH OF OUTPUT STRING

            5E            10     C0  00BE   167 	ADDL	#16,SP			;REMOVE DESCRIPTORS FROM STACK

                                 05  00C1   168 	RSB				;

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page   6

01              FIND FREE I/O CHANNEL                                                                                            (1)



                                     00C2   170 	.SBTTL	FIND FREE I/O CHANNEL

                                     00C2   171 ;+

                                     00C2   172 ; IOC$FFCHAN - FIND FREE I/O CHANNEL

                                     00C2   173 ;

                                     00C2   174 ; THIS ROUTINE IS CALLED TO SEARCH THE I/O CHANNEL TABLE FOR A FREE CHANNEL.

                                     00C2   175 ;

                                     00C2   176 ; INPUTS:

                                     00C2   177 ;

                                     00C2   178 ;	NONE.

                                     00C2   179 ;

                                     00C2   180 ; OUTPUTS:

                                     00C2   181 ;

                                     00C2   182 ;	R0 LOW BIT CLEAR INDICATES FAILURE TO FIND FREE I/O CHANNEL.

                                     00C2   183 ;

                                     00C2   184 ;		R0 = SS$_NOIOCHAN - NO I/O CHANNEL AVAILABLE.

                                     00C2   185 ;

                                     00C2   186 ;	R0 LOW BIT SET INDICATES SUCCESS WITH:

                                     00C2   187 ;

                                     00C2   188 ;		R1 = AVAILABLE CHANNEL NUMBER.

                                     00C2   189 ;

                                     00C2   190 ;	R3 IS PRESERVED ACROSS CALL.

                                     00C2   191 ;-

                                     00C2   192  

                                     00C2   193 IOC$FFCHAN::				;FIND FREE I/O CHANNEL

            09   00000000'EF     C1  00C2   194 	ADDL3	CTL$GL_CCBBASE,#CCB$B_AMOD,R0	;BASE AND OFFSET TO TEST ASSIGNMENT

                          50         00C9       

            51            10     CE  00CA   195 	MNEGL	#CCB$C_LENGTH,R1	;SET STARTING CHANNEL INDEX

            52   00000000'9F     3C  00CD   196 	MOVZWL	@#CTL$GW_NMIOCH,R2	;GET NUMBER OF I/O CHANNELS

                          6041   95  00D4   197 10$:	TSTB	(R0)[R1] 		;CHANNEL ASSIGNED?

                          0C     13  00D7   198 	BEQL	20$			;IF EQL NO

            51            10     C2  00D9   199 	SUBL	#CCB$C_LENGTH,R1	;CALCULATE NEXT CHANNEL INDEX

            F5            52     F5  00DC   200 	SOBGTR	R2,10$			;ANY MORE CCB'S TO EXAMINE?

            50       01B4 8F     3C  00DF   201 	MOVZWL	#SS$_NOIOCHAN,R0	;INDICATE FAILURE

                                 05  00E4   202 	RSB				;

            50            01     3C  00E5   203 20$:	MOVZWL	#SS$_NORMAL,R0		;INDICATE SUCCESS

                                 05  00E8   204 	RSB				;

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page   7

01              SEARCH FOR DEVICE                                                                                                (1)



                                     00E9   206 	.SBTTL	SEARCH FOR DEVICE

                                     00E9   207 ;+

                                     00E9   208 ; IOC$SEARCHDEV - SEARCH FOR PHYSICAL DEVICE

                                     00E9   209 ; IOC$SEARCHGEN - SEARCH FOR GENERIC DEVICE

                                     00E9   210 ;

                                     00E9   211 ; THIS ROUTINE IS CALLED TO SEARCH THE DEVICE DATA BASE FOR A SPECIFIED

                                     00E9   212 ; DEVICE. IT IS ASSUMED THAT THE DEVICE DATA BASE HAS BEEN LOCKED FOR

                                     00E9   213 ; READ ACCESS.

                                     00E9   214 ;

                                     00E9   215 ; INPUTS:

                                     00E9   216 ;

                                     00E9   217 ;	R1 = ADDRESS OF LOGICAL NAME STRING DESCRIPTOR.

                                     00E9   218 ;	R4 = CURRENT PROCESS PCB ADDRESS.

                                     00E9   219 ;

                                     00E9   220 ; OUTPUTS:

                                     00E9   221 ;

                                     00E9   222 ;	R0 LOW BIT CLEAR INDICATES FAILURE TO FIND DEVICE.

                                     00E9   223 ;

                                     00E9   224 ;		R0 = SS$_IVDEVNAM - INVALID DEVICE NAME.

                                     00E9   225 ;		R0 = SS$_NONLOCAL - NONLOCAL DEVICE.

                                     00E9   226 ;		R0 = SS$_NOSUCHDEV - NO SUCH DEVICE.

                                     00E9   227 ;

                                     00E9   228 ;	R0 LOW BIT SET INDICATES SUCCESS WITH:

                                     00E9   229 ;

                                     00E9   230 ;		R1 = UCB ADDRESS OF DEVICE UNIT.

                                     00E9   231 ;-

                                     00E9   232  

                                     00E9   233 	.ENABL	LSB

                                     00E9   234 IOC$SEARCHDEV::				;SEARCH FOR PHYSICAL DEVICE

            52            02     D0  00E9   235 	MOVL	#2,R2			;INDICATE PHYSICAL DEVICE SEARCH

                          03     11  00EC   236 	BRB	5$			;

                                     00EE   237 IOC$SEARCHGEN::				;SEARCH FOR GENERIC DEVICE

            52            01     D0  00EE   238 	MOVL	#1,R2			;INDICATE GENERIC DEVICE SEARCH

                     01F4 8F     BB  00F1   239 5$:	PUSHR	#^M<R2,R4,R5,R6,R7,R8>	;SAVE REGISTERS

            52         40 8F     9A  00F5   240 	MOVZBL	#LOG$C_NAMLENGTH,R2	;SET MAXIMUM LENGTH OF RESULT STRING

            5E            52     C2  00F9   241 	SUBL	R2,SP			;ALLOCATE SPACE FOR RESULT STRING

            53            5E     D0  00FC   242 	MOVL	SP,R3			;SET ADDRESS OF RESULTANT STRING

                          55     D4  00FF   243 	CLRL	R5			;SET TO SEARCH ALL NAME TABLES

                          FEFC'  30  0101   244 	BSBW	LOG$TRNSLOGNAME		;TRANSLATE LOGICAL NAME STRING

            68            50     E9  0104   245 	BLBC	R0,60$			;IF LBC RESULT STRING TOO LARGE

            54            51     D0  0107   246 	MOVL	R1,R4			;SAVE LENGTH OF RESULT STRING IN BYTES

                          65     13  010A   247 	BEQL	70$			;IF EQL INVALID DEVICE NAME

            55            5E     D0  010C   248 	MOVL	SP,R5			;SAVE ADDRESS OF RESULTANT STRING

            85         5F 8F     91  010F   249 	CMPB	#UNDERSCORE,(R5)+	;DEVICE NAME START WITH UNDERSCORE?

                          06     12  0113   250 	BNEQ	7$			;IF NEQ NO

                          54     D7  0115   251 	DECL	R4			;REDUCE LENGTH OF DEVICE NAME

                          58     13  0117   252 	BEQL	70$			;IF EQL INVALID DEVICE NAME

                          10     11  0119   253 	BRB	10$			;

            54            3A     3A  011B   254 7$:	LOCC	#^A/:/,R4,-(R5)		;SEARCH STRING FOR A COLON

                          75         011E       

                          0A     13  011F   255 	BEQL	10$			;IF EQL COLON NOT FOUND

                          50     D7  0121   256 	DECL	R0			;POSSIBLY A NODE NAME?

                          06     13  0123   257 	BEQL	10$			;IF EQL NO

         01 A1            3A     91  0125   258 	CMPB	#^A/:/,1(R1)		;NEXT CHARACTER A COLON?

                          3F     13  0129   259 	BEQL	50$			;IF EQL YES

            50            54     7D  012B   260 10$:	MOVQ	R4,R0			;COPY DEVICE NAME PARAMETERS

            61         64 8F     91  012E   261 20$:	CMPB	#UCZ,(R1)		;POSSIBLY UPPER CASE ALPHABETIC?

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page   8

01              SEARCH FOR DEVICE                                                                                                (1)



                          3D     1F  0132   262 	BLSSU	70$			;IF LSSU NO

            61         41 8F     91  0134   263 	CMPB	#UCA,(R1)		;UPPER CASE ALPHABETIC?

                          05     1A  0138   264 	BGTRU	30$			;IF GTRU NO

                          51     D6  013A   265 	INCL	R1			;POINT TO NEXT CHARACTER

            EF            50     F5  013C   266 	SOBGTR	R0,20$			;ANY MORE CHARACTERS TO SCAN?

                          56     D4  013F   267 30$:	CLRL	R6			;CLEAR UNIT NUMBER

            54            50     C2  0141   268 	SUBL	R0,R4			;CALCULATE LENGTH OF DEVICE NAME

                          2B     13  0144   269 	BEQL	70$			;IF EQL NO DEVICE NAME SPECIFIED

                          50     D7  0146   270 40$:	DECL	R0			;ANY MORE CHARACTERS IN STRING?

                          2E     19  0148   271 	BLSS	80$			;IF LSS NO

            52            81     9A  014A   272 	MOVZBL	(R1)+,R2		;GET NEXT CHARACTER

            52            3A     91  014D   273 	CMPB	#COLON,R2		;DEVICE NAME TERMINATOR?

                          26     13  0150   274 	BEQL	80$			;IF EQL YES

         40 AE            02     C8  0152   275 	BISL	#2,LOG$C_NAMLENGTH(SP)	;SET EXPLICIT UNIT NUMBER FLAG

            52            30     82  0156   276 	SUBB	#ZERO,R2		;POSSIBLY A DECIMAL DIGIT?

                          16     19  0159   277 	BLSS	70$			;IF LSS NO

            52            09     91  015B   278 	CMPB	#NINE-ZERO,R2		;DECIMAL DIGIT?

                          11     19  015E   279 	BLSS	70$			;IF LSS NO

            56            0A     A4  0160   280 	MULW	#10,R6			;SCALE UNIT NUMBER BY POWER OF TEN

                          0C     1D  0163   281 	BVS	70$			;IF VS OVERFLOW

            56            52     C0  0165   282 	ADDL	R2,R6			;ADD NEW DIGIT TO ACCUMULATION

                          DC     11  0168   283 	BRB	40$			;

                                     016A   284  

                                     016A   285 ;

                                     016A   286 ; NONLOCAL DEVICE

                                     016A   287 ;

                                     016A   288  

            50       08F0 8F     3C  016A   289 50$:	MOVZWL	#SS$_NONLOCAL,R0	;SET NONLOCAL DEVICE

                          41     11  016F   290 60$:	BRB	120$			;

                                     0171   291  

                                     0171   292 ;

                                     0171   293 ; INVALID DEVICE NAME

                                     0171   294 ;

                                     0171   295  

            50       0144 8F     3C  0171   296 70$:	MOVZWL	#SS$_IVDEVNAM,R0	;SET INVALID DEVICE NAME

                          3A     11  0176   297 	BRB	120$			;

                                     0178   298  

                                     0178   299 ;

                                     0178   300 ; SEARCH DEVICE DATA BASE FOR NAME/UNIT MATCH

                                     0178   301 ;

                                     0178   302  

            57            01     D0  0178   303 80$:	MOVL	#1,R7			;SET DEVICE NAME LENGTH ADJUSTMENT VALUE

            58   00000000'EF     DE  017B   304 	MOVAL	L^IOC$GL_DEVLIST-DDB$L_LINK,R8 ;GET ADDRESS OF I/O DATABASE LISTHEAD

                          37     10  0182   305 90$:	BSBB	SEARCHDEV		;SEARCH FOR DEVICE NAME MATCH

                          15     12  0184   306 	BNEQ	100$			;IF NEQ MATCH NOT FOUND

            08         40 AE     E8  0186   307 	BLBS	LOG$C_NAMLENGTH(SP),95$	;IF LBS GENERIC DEVICE NAME SEARCH

         15 A844       41 8F     91  018A   308 	CMPB	#^A/A/,DDB$T_NAME+1(R8)[R4] ;CONTROLLER 'A'?

                          F0     12  0190   309 	BNEQ	90$			;IF NEQ NO

                          43     10  0192   310 95$:	BSBB	SEARCHUNIT		;SEARCH FOR UNIT NUMBER MATCH

            1B            50     E8  0194   311 	BLBS	R0,120$			;IF LBS UNIT NUMBER MATCH FOUND

            E7         40 AE     E8  0197   312 	BLBS	LOG$C_NAMLENGTH(SP),90$	;IF LBS GENERIC DEVICE NAME SEARCH

                          57     D4  019B   313 100$:	CLRL	R7			;CLEAR DEVICE NAME LENGTH ADJUSTMENT VALUE

            58   00000000'EF     DE  019D   314 	MOVAL	L^IOC$GL_DEVLIST-DDB$L_LINK,R8 ;GET ADDRESS OF I/O DATABASE LISTHEAD

                          15     10  01A4   315 	BSBB	SEARCHDEV		;SEARCH FOR DEVICE NAME MATCH

                          05     12  01A6   316 	BNEQ	110$			;IF NEQ MATCH NOT FOUND

                          2D     10  01A8   317 	BSBB	SEARCHUNIT		;SEARCH FOR UNIT NUMBER MATCH

            05            50     E8  01AA   318 	BLBS	R0,120$			;IF LBS UNIT NUMBER MATCH FOUND

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page   9

01              SEARCH FOR DEVICE                                                                                                (1)



            50       0908 8F     3C  01AD   319 110$:	MOVZWL	#SS$_NOSUCHDEV,R0	;SET NO SUCH DEVICE

            5E         40 AE     9E  01B2   320 120$:	MOVAB	LOG$C_NAMLENGTH(SP),SP	;REMOVE DEVICE NAME STRING FROM STACK

                     01F4 8F     BA  01B6   321 	POPR	#^M<R2,R4,R5,R6,R7,R8>	;RESTORE REGISTERS

                                 05  01BA   322 	RSB				;

                                     01BB   323 	.DSABL	LSB

                                     01BB   324  

                                     01BB   325 ;

                                     01BB   326 ; SUBROUTINE TO SEARCH FOR DEVICE NAME MATCH

                                     01BB   327 ;

                                     01BB   328  

                                     01BB   329 SEARCHDEV:				;SEARCH FOR DEVICE NAME

            58            68     D0  01BB   330 10$:	MOVL	DDB$L_LINK(R8),R8	;GET ADDRESS OF NEXT DDB

                          14     13  01BE   331 	BEQL	20$			;IF EQL END OF LIST

            50         14 A8     DE  01C0   332 	MOVAL	DDB$T_NAME(R8),R0	;GET ADDRESS OF GENERIC DEVICE NAME

            80            57     83  01C4   333 	SUBB3	R7,(R0)+,R1		;CALCULATE LENGTH OF STRING TO COMPARE

                          51         01C7       

            54            51     91  01C8   334 	CMPB	R1,R4			;LENGTH OF NAMES MATCH?

                          EE     12  01CB   335 	BNEQ	10$			;IF NEQ NO

            60            54     29  01CD   336 	CMPC	R4,(R0),(R5)		;COMPARE DEVICE NAMES

                          65         01D0       

                          E8     12  01D1   337 	BNEQ	10$			;IF NEQ NAMES DO NOT MATCH

                                 05  01D3   338 	RSB				;

                          58     D6  01D4   339 20$:	INCL	R8			;INDICATE SEARCH FAILURE

                                 05  01D6   340 	RSB				;

                                     01D7   341  

                                     01D7   342 ;

                                     01D7   343 ; SUBROUTINE TO SEARCH FOR UNIT NUMBER MATCH

                                     01D7   344 ;

                                     01D7   345  

                                     01D7   346 SEARCHUNIT:				;SEARCH FOR UNIT NUMBER

                          50     D4  01D7   347 	CLRL	R0			;ASSUME SEARCH FAILURE

            51         D8 A8     DE  01D9   348 	MOVAL	DDB$L_UCB-UCB$L_LINK(R8),R1 ;GET ADDRESS OF NEXT UCB ADDRESS

            51         2C A1     D0  01DD   349 10$:	MOVL	UCB$L_LINK(R1),R1	;GET ADDRESS OF NEXT UCB

                          28     13  01E1   350 	BEQL	40$			;IF EQL END OF LIST

         44 AE            01     E1  01E3   351 	BBC	#1,LOG$C_NAMLENGTH+4(SP),20$ ;IF CLR, GENERIC SEARCH

                          08         01E7       

         48 A1            56     B1  01E8   352 	CMPW	R6,UCB$W_UNIT(R1)	;UNIT NUMBER MATCH?

                          1B     13  01EC   353 	BEQL	30$			;IF EQL YES

                          ED     11  01EE   354 	BRB	10$			;

                       50 A1     B5  01F0   355 20$:	TSTW	UCB$W_REFC(R1)		;REFERENCE COUNT ZERO?

                          E8     12  01F3   356 	BNEQ	10$			;IF NEQ NO

         34 A1            17     E0  01F5   357 	BBS	#DEV$V_ALL,UCB$L_DEVCHAR(R1),10$ ;IF SET, DEVICE ALLOCATED

                          E3         01F9       

         34 A1            13     E0  01FA   358 	BBS	#DEV$V_MNT,UCB$L_DEVCHAR(R1),10$ ;IF SET, DEVICE MOUNTED

                          DE         01FE       

         34 A1            06     E1  01FF   359 	BBC	#DEV$V_SPL,UCB$L_DEVCHAR(R1),30$ ;IF CLR, DEVICE NOT SPOOLED

                          05         0203       

                                     0204   360 	IFNPRIV	ALLSPOOL,10$		;PROCESS HAVE PRIVILEGE TO ALLOCATE?

                          50     D6  0209   361 30$:	INCL	R0			;INDICATE UNIT NUMBER MATCH

                                 05  020B   362 40$:	RSB				;

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page  10

01              UNLOCK I/O DATA BASE AND RETURN STATUS                                                                           (1)



                                     020C   364 	.SBTTL	UNLOCK I/O DATA BASE AND RETURN STATUS

                                     020C   365 ;+

                                     020C   366 ; IOC$UNLOCK - UNLOCK I/O DATA BASE AND RETURN STATUS

                                     020C   367 ;

                                     020C   368 ; THIS ROUTINE IS JUMPED TO AT THE END OF AN I/O RELATED SYSTEM SERVICE TO

                                     020C   369 ; UNLOCK THE I/O DATA BASE, SET THE CURRENT PROCESSOR PRIORITY TO ZERO,

                                     020C   370 ; AND TO RETURN STATUS TO THE CHANGE MODE DISPATCHER.

                                     020C   371 ;

                                     020C   372 ; INPUTS:

                                     020C   373 ;

                                     020C   374 ;	R0 = FINAL SYSTEM SERVICE STATUS VALUE.

                                     020C   375 ;

                                     020C   376 ; OUTPUTS:

                                     020C   377 ;

                                     020C   378 ;	THE I/O DATA BASE IS UNLOCKED, THE CURRENT PROCESSOR PRIORITY IS SET

                                     020C   379 ;	TO ZERO, AND A RETURN TO THE CHANGE MODE DISPATCHER IS EXECUTED.

                                     020C   380 ;-

                                     020C   381  

                                     020C   382 IOC$UNLOCK::				;UNLOCK I/O DATA BASE AND RETURN STATUS

                          50     DD  020C   383 	PUSHL	R0			;SAVE FINAL SYSTEM SERVICE STATUS VALUE

            54   00000000'EF     D0  020E   384 	MOVL	SCH$GL_CURPCB,R4	;GET CURRENT PROCESS PCB ADDRESS

                          FDE8'  30  0215   385 	BSBW	SCH$IOUNLOCK		;UNLOCK I/O DATA BASE

                                     0218   386 	SETIPL	#0			;ALLOW ALL INTERRUPTS

                          01     BA  021B   387 	POPR	#^M<R0>			;RETRIEVE FINAL SERVICE STATUS VALUE

                                 04  021D   388 	RET				;

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page  11

01              VERIFY I/O CHANNEL NUMBER                                                                                        (1)



                                     021E   390 	.SBTTL	VERIFY I/O CHANNEL NUMBER

                                     021E   391 ;+

                                     021E   392 ; IOC$VERIFYCHAN - VERIFY I/O CHANNEL NUMBER

                                     021E   393 ;

                                     021E   394 ; THIS ROUTINE IS CALLED TO VERIFY AND TRANSLATE AN I/O CHANNEL NUMBER TO

                                     021E   395 ; A CCB ADDRESS. THE CHANNEL IS CHECKED FOR ACCESSIBILITY BY THE PREVIOUS

                                     021E   396 ; ACCESS MODE.

                                     021E   397 ;

                                     021E   398 ; INPUTS:

                                     021E   399 ;

                                     021E   400 ;	R0 = I/O CHANNEL NUMBER.

                                     021E   401 ;

                                     021E   402 ; OUTPUTS:

                                     021E   403 ;

                                     021E   404 ;	R0 LOW BIT CLEAR INDICATES FAILURE TO VERIFY.

                                     021E   405 ;

                                     021E   406 ;		R0 = SS$_IVCHAN - INVALID CHANNEL NUMBER.

                                     021E   407 ;		R0 = SS$_NOPRIV - NO PRIVILEGE TO ACCESS CHANNEL.

                                     021E   408 ;		R1 = ADDRESS OF CCB IF R0 = SS$_NOPRIV

                                     021E   409 ;

                                     021E   410 ;	R0 LOW BIT SET INDICATES VERIFY SUCCESS WITH:

                                     021E   411 ;

                                     021E   412 ;		R1 = ADDRESS OF CCB.

                                     021E   413 ;		R2 = CHANNEL INDEX.

                                     021E   414 ;-

                                     021E   415  

                                     021E   416 IOC$VERIFYCHAN::			;VERIFY I/O CHANNEL NUMBER

            50            0F     AA  021E   417 	BICW	#CCB$C_LENGTH-1,R0	;CLEAR EXTRANEOUS LOW ORDER BITS

                          28     13  0221   418 	BEQL	10$			;IF EQL INVALID CHANNEL

   00000000'9F            50     B1  0223   419 	CMPW	R0,@#CTL$GW_CHINDX	;LEGAL CHANNEL NUMBER?

                          1F     1E  022A   420 	BGEQU	10$			;IF GEQU NO

            52            50     CE  022C   421 	MNEGL	R0,R2			;CONVERT TO CHANNEL INDEX

            51   00000000'FF42   9E  022F   422 	MOVAB	@CTL$GL_CCBBASE[R2],R1	;GET ADDRESS OF CORRESPONDING CCB

                          53     DC  0237   423 	MOVPSL	R3			;READ CURRENT PSL

            02            16     EF  0239   424 	EXTZV	#PSL$V_PRVMOD,#PSL$S_PRVMOD,R3,R3 ;EXTRACT PREVIOUS MODE FIELD

            53            53         023C       

            50            24     3C  023E   425 	MOVZWL	#SS$_NOPRIV,R0		;ASSUME CALLER DOES NOT HAVE PRIVILEGE

         09 A1            53     91  0241   426 	CMPB	R3,CCB$B_AMOD(R1)	;CALLER HAVE PRIVILEGE TO ACCESS CHANNEL?

                          09     18  0245   427 	BGEQ	20$			;IF GEQ NO

            50            00     E3  0247   428 	BBCS	#0,R0,20$		;INDICATE SUCCESS

                          05         024A       

            50       013C 8F     3C  024B   429 10$:	MOVZWL	#SS$_IVCHAN,R0		;SET INVALID CHANNEL

                                 05  0250   430 20$:	RSB				;

                                     0251   431  

                                     0251   432 	.END

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page  12

SYMBOL TABLE                                                                                                                     (1)



$$T2           = 00000005            DEV$M_CCL      = 00000002            IOC$UNLOCK       0000020C RG    03   

ACB$B_RMOD       0000000B            DEV$M_DIR      = 00000008            IOC$VERIFYCHAN   0000021E RG    03   

ACB$B_TYPE       0000000A            DEV$M_DMT      = 00200000            IPL$_ASTDEL    = 00000002            

ACB$L_AST        00000010            DEV$M_ELG      = 00400000            IPL$_HWCLK     = 00000018            

ACB$L_ASTPRM     00000014            DEV$M_FOD      = 00004000            IPL$_IOPOST    = 00000004            

ACB$L_ASTQBL     00000004            DEV$M_FOR      = 01000000            IPL$_MAILBOX   = 0000000B            

ACB$L_ASTQFL     00000000            DEV$M_GEN      = 00020000            IPL$_POWER     = 0000001F            

ACB$L_KAST       00000018            DEV$M_IDV      = 04000000            IPL$_QUEUEAST  = 00000006            

ACB$L_PID        0000000C            DEV$M_MBX      = 00100000            IPL$_SCHED     = 00000003            

ACB$M_QUOTA    = 00000040            DEV$M_MNT      = 00080000            IPL$_SYNCH     = 00000007            

ACB$S_MODE     = 00000002            DEV$M_NET      = 00002000            IPL$_TIMER     = 00000007            

ACB$V_KAST     = 00000007            DEV$M_ODV      = 08000000            LOG$B_AMOD       0000000E            

ACB$V_MODE     = 00000000            DEV$M_RCK      = 40000000            LOG$B_TABLE      0000000B            

ACB$V_QUOTA    = 00000006            DEV$M_REC      = 00000001            LOG$B_TYPE       0000000A            

ACB$W_SIZE       00000008            DEV$M_RND      = 10000000            LOG$C_GROUP    = 00000001            

BIT...         = 00000000            DEV$M_RTM      = 20000000            LOG$C_LENGTH     00000014            

CCB$B_AMOD       00000009            DEV$M_SDI      = 00000010            LOG$C_NAMLENGTH= 00000040            

CCB$B_STS        00000008            DEV$M_SHR      = 00010000            LOG$C_PROCESS  = 00000002            

CCB$C_LENGTH     00000010            DEV$M_SPL      = 00000040            LOG$C_SYSTEM   = 00000000            

CCB$K_LENGTH     00000010            DEV$M_SQD      = 00000020            LOG$K_LENGTH     00000014            

CCB$L_DIRP       0000000C            DEV$M_SWL      = 02000000            LOG$L_LTBL       00000004            

CCB$L_UCB        00000000            DEV$M_TRM      = 00000004            LOG$L_LTFL       00000000            

CCB$L_WIND       00000004            DEV$M_WCK      = 80000000            LOG$L_MBXUCB     00000010            

CCB$W_IOC        0000000A            DEV$V_ALL      = 00000017            LOG$TRNSLOGNAME  ********   X   03   

COLON          = 0000003A            DEV$V_AVL      = 00000012            LOG$T_NAME       00000014            

CRB$B_MASK       0000000E            DEV$V_CCL      = 00000001            LOG$W_GROUP      0000000C            

CRB$B_TT_ATTN    00000004            DEV$V_DIR      = 00000003            LOG$W_SIZE       00000008            

CRB$B_TT_EXPEC   00000005            DEV$V_DMT      = 00000015            NINE           = 00000039            

CRB$B_TYPE       0000000A            DEV$V_ELG      = 00000016            PCB$B_ASTACT     0000000C            

CRB$C_LENGTH     00000038            DEV$V_FOD      = 0000000E            PCB$B_ASTEN      0000000D            

CRB$K_LENGTH     00000038            DEV$V_FOR      = 00000018            PCB$B_PRI        0000000B            

CRB$L_INTD       00000014            DEV$V_GEN      = 00000011            PCB$B_PRIB       00000033            

CRB$L_INTD2      00000038            DEV$V_IDV      = 0000001A            PCB$B_TYPE       0000000A            

CRB$L_LINK       00000010            DEV$V_MBX      = 00000014            PCB$B_WEFC       00000032            

CRB$L_TT_DIAL    00000000            DEV$V_MNT      = 00000013            PCB$C_LENGTH     0000007C            

CRB$L_WQBL       00000004            DEV$V_NET      = 0000000D            PCB$K_LENGTH     0000007C            

CRB$L_WQFL       00000000            DEV$V_ODV      = 0000001B            PCB$L_ASTQBL     00000014            

CRB$M_BSY      = 00000001            DEV$V_RCK      = 0000001E            PCB$L_ASTQFL     00000010            

CRB$V_BSY      = 00000000            DEV$V_REC      = 00000000            PCB$L_EFC2P      00000058            

CRB$W_REFC       0000000C            DEV$V_RND      = 0000001C            PCB$L_EFC3P      0000005C            

CRB$W_SIZE       00000008            DEV$V_RTM      = 0000001D            PCB$L_EFCS       00000050            

CTL$GL_CCBBASE   ********   X   03   DEV$V_SDI      = 00000004            PCB$L_EFCU       00000054            

CTL$GW_CHINDX    ********   X   03   DEV$V_SHR      = 00000010            PCB$L_EFWM       0000004C            

CTL$GW_NMIOCH    ********   X   03   DEV$V_SPL      = 00000006            PCB$L_OWNER      0000001C            

DDB$B_ACPCLASS   00000013            DEV$V_SQD      = 00000005            PCB$L_PHD        00000064            

DDB$B_TYPE       0000000A            DEV$V_SWL      = 00000019            PCB$L_PHYPCB     00000018            

DDB$C_LENGTH     00000034            DEV$V_TRM      = 00000002            PCB$L_PID        00000060            

DDB$K_LENGTH     00000034            DEV$V_WCK      = 0000001F            PCB$L_PQB        0000004C            

DDB$L_ACPD       00000010            DEVCTL           00000000 R     03   PCB$L_SQBL       00000004            

DDB$L_DDT        0000000C            EXE$ALONONPAGED  ********   X   03   PCB$L_SQFL       00000000            

DDB$L_LINK       00000000            GBL...         = 00000000            PCB$L_STS        00000028            

DDB$L_UCB        00000004            IOC$CREATE_UCB   00000009 RG    03   PCB$L_UIC        00000020            

DDB$T_DRVNAME    00000024            IOC$CVT_DEVNAM   0000008D RG    03   PCB$L_WSSWP      00000024            

DDB$T_NAME       00000014            IOC$FFCHAN       000000C2 RG    03   PCB$L_WTIME      0000002C            

DDB$W_SIZE       00000008            IOC$GL_DEVLIST   ********   X   03   PCB$T_LNAME      0000006C            

DEV$M_ALL      = 00800000            IOC$SEARCHDEV    000000E9 RG    03   PCB$V_ASTPEN   = 00000011            

DEV$M_AVL      = 00040000            IOC$SEARCHGEN    000000EE RG    03   PCB$V_BATCH    = 0000000E            

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page  13

SYMBOL TABLE                                                                                                                     (1)



PCB$V_DELPEN   = 00000001            PR$_PME        = 0000003D            PSL$M_DV       = 00000080            

PCB$V_FORCPEN  = 00000002            PR$_RXCS       = 00000020            PSL$M_FPD      = 08000000            

PCB$V_HIBER    = 00000013            PR$_RXDB       = 00000021            PSL$M_FU       = 00000040            

PCB$V_INQUAN   = 00000003            PR$_SBIER      = 00000034            PSL$M_IPL      = 001F0000            

PCB$V_LOGIN    = 00000014            PR$_SBIFS      = 00000030            PSL$M_IS       = 04000000            

PCB$V_NETWRK   = 00000015            PR$_SBIMT      = 00000033            PSL$M_IV       = 00000020            

PCB$V_NOACNT   = 0000000F            PR$_SBIQC      = 00000036            PSL$M_PRVMOD   = 00C00000            

PCB$V_NODELET  = 00000017            PR$_SBIS       = 00000031            PSL$M_SAFBITS  = 000037FF            

PCB$V_PHDRES   = 00000012            PR$_SBISC      = 00000032            PSL$M_TBIT     = 00000010            

PCB$V_PSWAPM   = 00000004            PR$_SBITA      = 00000035            PSL$M_TP       = 40000000            

PCB$V_PWRAST   = 00000016            PR$_SBR        = 0000000C            PSL$S_CURMOD   = 00000002            

PCB$V_RES      = 00000000            PR$_SCBB       = 00000011            PSL$S_IPL      = 00000005            

PCB$V_RESPEN   = 00000005            PR$_SID        = 0000003E            PSL$S_PRVMOD   = 00000002            

PCB$V_SSFEXC   = 00000006            PR$_SIRR       = 00000014            PSL$V_CM       = 0000001F            

PCB$V_SSFEXCE  = 00000007            PR$_SISR       = 00000015            PSL$V_CURMOD   = 00000018            

PCB$V_SSFEXCS  = 00000008            PR$_SLR        = 0000000D            PSL$V_DV       = 00000007            

PCB$V_SSFEXCU  = 00000009            PR$_SSP        = 00000002            PSL$V_FPD      = 0000001B            

PCB$V_SSRWAIT  = 0000000A            PR$_TBIA       = 00000039            PSL$V_FU       = 00000006            

PCB$V_SUSPEN   = 0000000B            PR$_TBIS       = 0000003A            PSL$V_IPL      = 00000010            

PCB$V_SWPVBN   = 00000010            PR$_TODR       = 0000001B            PSL$V_IS       = 0000001A            

PCB$V_WAKEPEN  = 0000000C            PR$_TXCS       = 00000022            PSL$V_IV       = 00000005            

PCB$V_WALL     = 0000000D            PR$_TXDB       = 00000023            PSL$V_PRVMOD   = 00000016            

PCB$W_APTCNT     00000034            PR$_USP        = 00000003            PSL$V_TBIT     = 00000004            

PCB$W_ASTCNT     0000003C            PR$_WCSA       = 0000002C            PSL$V_TP       = 0000001E            

PCB$W_BIOCNT     0000003E            PR$_WCSD       = 0000002D            SCH$GL_CURPCB    ********   X   03   

PCB$W_BIOLM      00000040            PRV$V_ALLSPOOL = 00000004            SCH$IOLOCKW      ********   X   03   

PCB$W_BYTCNT     00000042            PRV$V_BUGCHK   = 00000017            SCH$IOUNLOCK     ********   X   03   

PCB$W_BYTLM      00000068            PRV$V_CMEXEC   = 00000001            SEARCHDEV        000001BB R     03   

PCB$W_DIOCNT     00000044            PRV$V_CMKRNL   = 00000000            SEARCHUNIT       000001D7 R     03   

PCB$W_DIOLM      00000046            PRV$V_DETACH   = 00000005            SS$_ABORT      = 0000002C            

PCB$W_FILCNT     00000048            PRV$V_DIAGNOSE = 00000006            SS$_ACCONFLICT = 00000800            

PCB$W_GPGCNT     00000038            PRV$V_EXQUOTA  = 00000013            SS$_ACCVIO     = 0000000C            

PCB$W_GRP        00000022            PRV$V_GROUP    = 00000008            SS$_ACPVAFUL   = 000002FC            

PCB$W_MEM        00000020            PRV$V_GRPNAM   = 00000003            SS$_ARTRES     = 00000474            

PCB$W_MTXCNT     0000000E            PRV$V_LOG_IO   = 00000007            SS$_ASTFLT     = 0000040C            

PCB$W_PPGCNT     0000003A            PRV$V_MOUNT    = 00000011            SS$_BADATTRIB  = 00000034            

PCB$W_PRCCNT     0000006A            PRV$V_NETMBX   = 00000014            SS$_BADCHKSUM  = 00000808            

PCB$W_SIZE       00000008            PRV$V_NOACNT   = 00000009            SS$_BADESCAPE  = 0000003C            

PCB$W_STATE      00000030            PRV$V_OPER     = 00000012            SS$_BADFILEHDR = 00000810            

PCB$W_TMBU       00000036            PRV$V_PHY_IO   = 00000016            SS$_BADFILENAME= 00000818            

PCB$W_TQCNT      0000004A            PRV$V_PRMCEB   = 0000000A            SS$_BADFILEVER = 00000820            

PR$_ACCR       = 00000029            PRV$V_PRMGBL   = 00000018            SS$_BADIMGHDR  = 00000044            

PR$_ACCS       = 00000028            PRV$V_PRMMBX   = 0000000B            SS$_BADIRECTORY= 00000828            

PR$_ASTLVL     = 00000013            PRV$V_PSWAPM   = 0000000C            SS$_BADPARAM   = 00000014            

PR$_ESP        = 00000001            PRV$V_SETPRI   = 0000000D            SS$_BADSTACK   = 000002B4            

PR$_ICCS       = 00000018            PRV$V_SETPRV   = 0000000E            SS$_BEGOFFILE  = 00000938            

PR$_ICR        = 0000001A            PRV$V_SYSGBL   = 00000019            SS$_BLOCKCNTERR= 00000940            

PR$_IPL        = 00000012            PRV$V_SYSNAM   = 00000002            SS$_BREAK      = 00000414            

PR$_ISP        = 00000004            PRV$V_TMPMBX   = 0000000F            SS$_BUFBYTALI  = 0000030C            

PR$_KSP        = 00000000            PRV$V_VOLPRO   = 00000015            SS$_BUFFEROVF  = 00000601            

PR$_MAPEN      = 00000038            PRV$V_WORLD    = 00000010            SS$_BUGCHECK   = 000002A4            

PR$_NICR       = 00000019            PSL$C_EXEC     = 00000001            SS$_CANCEL     = 00000830            

PR$_P0BR       = 00000008            PSL$C_KERNEL   = 00000000            SS$_CHANINTLK  = 0000004C            

PR$_P0LR       = 00000009            PSL$C_SUPER    = 00000002            SS$_CLIFRCEXT  = 00000980            

PR$_P1BR       = 0000000A            PSL$C_USER     = 00000003            SS$_CMODSUPR   = 0000041C            

PR$_P1LR       = 0000000B            PSL$M_CM       = 80000000            SS$_CMODUSER   = 00000424            

PR$_PCBB       = 00000010            PSL$M_CURMOD   = 03000000            SS$_COMPAT     = 0000042C            

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page  14

SYMBOL TABLE                                                                                                                     (1)



SS$_CONTINUE   = 00000001            SS$_ILLLBLAST  = 00000968            SS$_NOTAPEOP   = 00000264            

SS$_CONTROLC   = 00000651            SS$_ILLPAGCNT  = 000000FC            SS$_NOTFILEDEV = 000001CC            

SS$_CONTROLO   = 00000609            SS$_ILLSEQOP   = 000002DC            SS$_NOTINTBLSZ = 000001D4            

SS$_CONTROLY   = 00000611            SS$_ILLSER     = 00000104            SS$_NOTLABELMT = 000001DC            

SS$_CREATED    = 00000619            SS$_ILLUSRLBLRD= 00000958            SS$_NOTMODIFIED= 00000659            

SS$_CTRLERR    = 00000054            SS$_ILLUSRLBLWT= 00000960            SS$_NOTNETDEV  = 000002EC            

SS$_DATACHECK  = 0000005C            SS$_INCVOLLABEL= 0000010C            SS$_NOTRAN     = 00000629            

SS$_DATAOVERUN = 00000838            SS$_INSFARG    = 00000114            SS$_NOTSQDEV   = 000001E4            

SS$_DEBUG      = 0000046C            SS$_INSFMEM    = 00000124            SS$_OPCCUS     = 00000434            

SS$_DECOVF     = 000004A4            SS$_INSFRAME   = 0000012C            SS$_OPCDEC     = 0000043C            

SS$_DEVACTIVE  = 000002C4            SS$_INSFWSL    = 0000011C            SS$_OPINCOMPL  = 000002D4            

SS$_DEVALLOC   = 00000840            SS$_INTDIV     = 00000484            SS$_PAGOWNVIO  = 000001EC            

SS$_DEVALRALLOC= 00000641            SS$_INTOVF     = 0000047C            SS$_PAGRDERR   = 00000444            

SS$_DEVASSIGN  = 00000848            SS$_IVADDR     = 00000134            SS$_PARITY     = 000001F4            

SS$_DEVFOREIGN = 00000064            SS$_IVCHAN     = 0000013C            SS$_PARTESCAPE = 000001FC            

SS$_DEVICEFULL = 00000850            SS$_IVCHNLSEC  = 0000026C            SS$_PFMBSY     = 00000204            

SS$_DEVMOUNT   = 0000006C            SS$_IVDEVNAM   = 00000144            SS$_PLHLDR     = 00000404            

SS$_DEVNOTALLOC= 00000858            SS$_IVGSDNAM   = 0000014C            SS$_PSTFULL    = 0000020C            

SS$_DEVNOTMBX  = 00000074            SS$_IVLOGNAM   = 00000154            SS$_RADRMOD    = 0000044C            

SS$_DEVNOTMOUNT= 0000007C            SS$_IVLOGTAB   = 0000015C            SS$_REJECT     = 00000294            

SS$_DEVOFFLINE = 00000084            SS$_IVPROTECT  = 000002F4            SS$_REMOTE     = 00000649            

SS$_DIRFULL    = 00000860            SS$_IVQUOTAL   = 00000164            SS$_RESIGNAL   = 00000918            

SS$_DRVERR     = 0000008C            SS$_IVSECFLG   = 0000016C            SS$_RESULTOVF  = 00000214            

SS$_DUPFILENAME= 00000868            SS$_IVSECIDCTL = 000002E4            SS$_ROPRAND    = 00000454            

SS$_DUPLNAM    = 00000094            SS$_IVSSRQ     = 00000174            SS$_SECTBLFUL  = 0000021C            

SS$_ENDOFFILE  = 00000870            SS$_IVSTSFLG   = 0000017C            SS$_SSFAIL     = 0000045C            

SS$_ENDOFTAPE  = 00000878            SS$_IVTIME     = 00000184            SS$_SUBRNG     = 000004AC            

SS$_ENDOFUSRLBL= 00000970            SS$_LCKPAGFUL  = 000000D4            SS$_SUPERSEDE  = 00000631            

SS$_EXQUOTA    = 0000001C            SS$_LENVIO     = 0000018C            SS$_TAPEPOSLOST= 00000224            

SS$_EXTIDXFILE = 00000880            SS$_LKWSETFUL  = 00000194            SS$_TBIT       = 00000464            

SS$_FCPREADERR = 00000888            SS$_MBFULL     = 000008D8            SS$_TIMEOUT    = 0000022C            

SS$_FCPREPSTN  = 00000988            SS$_MBTOOSML   = 0000019C            SS$_TOOMANYVER = 00000990            

SS$_FCPREWNDERR= 00000890            SS$_MCHECK     = 000002BC            SS$_TOOMUCHDATA= 0000029C            

SS$_FCPSPACERR = 00000898            SS$_MEDOFL     = 000001A4            SS$_UNASEFC    = 00000234            

SS$_FCPWRITERR = 000008A0            SS$_MSGNOTFND  = 00000621            SS$_UNSAFE     = 0000023C            

SS$_FILACCERR  = 0000009C            SS$_MTLBLLONG  = 00000304            SS$_UNWIND     = 00000920            

SS$_FILALRACC  = 000000A4            SS$_MUSTCLOSEFL= 00000948            SS$_UNWINDING  = 00000928            

SS$_FILELOCKED = 000008A8            SS$_NOAQB      = 00000314            SS$_VASFULL    = 00000244            

SS$_FILENUMCHK = 000008B0            SS$_NODATA     = 000001AC            SS$_VECINUSE   = 0000024C            

SS$_FILESEQCHK = 000008B8            SS$_NOHANDLER  = 000008F8            SS$_VOLINV     = 00000254            

SS$_FILESTRUCT = 000008C0            SS$_NOHOMEBLK  = 000008E0            SS$_WAITUSRLBL = 00000950            

SS$_FILNOTACC  = 000000AC            SS$_NOIOCHAN   = 000001B4            SS$_WASCLR     = 00000001            

SS$_FILNOTCNTG = 000002AC            SS$_NOLINKS    = 0000027C            SS$_WASECC     = 00000639            

SS$_FILNOTEXP  = 000000B4            SS$_NOLOGNAM   = 000001BC            SS$_WASSET     = 00000009            

SS$_FLTDIV     = 00000494            SS$_NOMBX      = 00000274            SS$_WRITLCK    = 0000025C            

SS$_FLTOVF     = 0000048C            SS$_NOMOREFILES= 00000930            SS$_WRONGACP   = 0000031C            

SS$_FLTUND     = 0000049C            SS$_NONEXDRV   = 000001C4            SYS$FAO          ********   X   03   

SS$_FORMAT     = 000000BC            SS$_NONEXPR    = 000008E8            UCA            = 00000041            

SS$_GPTFULL    = 000000C4            SS$_NONLOCAL   = 000008F0            UCB$B_AMOD       00000053            

SS$_GSDFULL    = 000000CC            SS$_NOPRIV     = 00000024            UCB$B_CEX        00000077            

SS$_HANGUP     = 000002CC            SS$_NORMAL     = 00000001            UCB$B_CM1        0000004A            

SS$_HEADERFULL = 000008C8            SS$_NOSIGNAL   = 00000900            UCB$B_CM2        0000004B            

SS$_IDXFILEFULL= 000008D0            SS$_NOSOLICIT  = 00000284            UCB$B_DEVCLASS   00000038            

SS$_ILLBLKNUM  = 000000DC            SS$_NOSUCHDEV  = 00000908            UCB$B_DEVTYPE    00000039            

SS$_ILLCNTRFUNC= 000000E4            SS$_NOSUCHFILE = 00000910            UCB$B_DIPL       00000052            

SS$_ILLEFC     = 000000EC            SS$_NOSUCHNODE = 0000028C            UCB$B_DX_SCTCNT  000000A6            

SS$_ILLIOFUNC  = 000000F4            SS$_NOSUCHSEC  = 00000978            UCB$B_ERTCNT     00000070            

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page  15

SYMBOL TABLE                                                                                                                     (1)



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            

UCB$B_FIPL       0000000B            UCB$M_DELMBX   = 00000002            UCB$W_BCR        00000096            

UCB$B_LOCSRV     0000003C            UCB$M_DIAGBUF  = 00000002            UCB$W_BOFF       0000006C            

UCB$B_OFFNDX     00000094            UCB$M_DX_WRITE = 00000008            UCB$W_BUFQUO     00000018            

UCB$B_OFFRTC     00000095            UCB$M_ECC      = 00000001            UCB$W_BYTESTOGO  0000003E            

UCB$B_REMSRV     0000003D            UCB$M_ERLOGIP  = 00000004            UCB$W_CHARGE     0000004A            

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

UCB$B_SLAVE      00000074            UCB$M_INTTYPE  = 00000080            UCB$W_DA         0000008C            

UCB$B_SPR        00000075            UCB$M_JOB      = 00000001            UCB$W_DC         0000008E            

UCB$B_STATE      00000052            UCB$M_MOUNTING = 00000200            UCB$W_DEVBUFSIZ  0000003A            

UCB$B_TRACKS     0000003D            UCB$M_NOCNVRT  = 00000004            UCB$W_DEVSTS     0000005A            

UCB$B_TYPE       0000000A            UCB$M_NT_BFROVF= 00000004            UCB$W_DIRSEQ     00000088            

UCB$B_VERTSZ     0000003F            UCB$M_NT_BREAK = 00000020            UCB$W_DSTADDR    00000018            

UCB$C_LENGTH     00000074            UCB$M_NT_NAME  = 00000010            UCB$W_DX_BCR     000000A4            

UCB$C_LOGLNK   = 00000001            UCB$M_ONLINE   = 00000010            UCB$W_EC1        00000090            

UCB$K_LENGTH     00000074            UCB$M_POWER    = 00000020            UCB$W_EC2        00000092            

UCB$L_AMB        00000054            UCB$M_PRMMBX   = 00000001            UCB$W_ERRCNT     00000072            

UCB$L_ASTQBL     00000010            UCB$M_TIM      = 00000001            UCB$W_FUNC       0000007E            

UCB$L_ASTQFL     0000000C            UCB$M_TIMOUT   = 00000040            UCB$W_MB_SEED    FFFFFFFC            

UCB$L_CPID       0000005C            UCB$M_TT_NOTIF = 00000004            UCB$W_MSGCNT     00000016            

UCB$L_CRB        00000020            UCB$M_TT_TIMO  = 00000002            UCB$W_MSGMAX     00000014            

UCB$L_DDB        00000024            UCB$M_UNLOAD   = 00001000            UCB$W_NT_CHAN    0000007C            

UCB$L_DEVCHAR    00000034            UCB$M_VALID    = 00000800            UCB$W_OFFSET     0000008A            

UCB$L_DEVDEPEND  0000003C            UCB$S_LNKPRI   = 00000002            UCB$W_REFC       00000050            

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

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

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

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

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

UCB$L_EMB        00000078            UCB$V_DEADMO   = 0000000A            UCZ            = 00000064            

UCB$L_FIRST      00000014            UCB$V_DELMBX   = 00000001            UNDERSCORE     = 0000005F            

UCB$L_FPC        0000000C            UCB$V_DIAGBUF  = 00000001            ZERO           = 00000030            

UCB$L_FQBL       00000004            UCB$V_DX_WRITE = 00000003            

UCB$L_FQFL       00000000            UCB$V_ECC      = 00000000            

UCB$L_FR3        00000010            UCB$V_ERLOGIP  = 00000002            

UCB$L_FR4        00000014            UCB$V_INT      = 00000001            

UCB$L_IOQBL      00000044            UCB$V_INTTYPE  = 00000007            

UCB$L_IOQFL      00000040            UCB$V_JOB      = 00000000            

UCB$L_IRP        0000004C            UCB$V_LNKPRI   = 00000006            

UCB$L_LINK       0000002C            UCB$V_LTYPE    = 00000000            

UCB$L_LOGADR     00000064            UCB$V_MOUNTING = 00000009            

UCB$L_MAXBLOCK   00000084            UCB$V_MSGACK   = 00000004            

UCB$L_MEDIA      0000008C            UCB$V_MSGFLO   = 00000003            

UCB$L_NT_DATSSB  00000074            UCB$V_NOCNVRT  = 00000002            

UCB$L_NT_INTSSB  00000078            UCB$V_NT_BFROVF= 00000002            

UCB$L_OPCNT      00000060            UCB$V_NT_BREAK = 00000005            

UCB$L_OWNUIC     0000001C            UCB$V_NT_NAME  = 00000004            

UCB$L_PID        00000028            UCB$V_ONLINE   = 00000004            

UCB$L_RQBL       00000004            UCB$V_POWER    = 00000005            

UCB$L_RQFL       00000000            UCB$V_PRMMBX   = 00000000            

UCB$L_SVAPTE     00000068            UCB$V_SEGFLO   = 00000002            

UCB$L_SVPN       00000064            UCB$V_TIM      = 00000000            

UCB$L_TTCHAR     0000003C            UCB$V_TIMOUT   = 00000006            

UCB$L_VCB        00000030            UCB$V_TT_NOTIF = 00000002            

UCB$M_BACKP    = 00000020            UCB$V_TT_TIMO  = 00000001            

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 19:55:26   VAX-11 MACRO X0.3-11               Page  16

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  

Y$EXEPAGED       00000251      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

7368. BYTES LEFT IN FREE MEMORY POOL.

3412. BYTES OF RECLAIMED MEMORY.

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

8 MLB DIR RDS - 1023 GETS TO DEFINE 26 MACROS. 80 INTER. FILE WRITES. 

