IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)    6400  CREATE MAILBOX OR NETWORK UCB

   (1)   13200  CONVERT DEVICE NAME AND UNIT

   (1)   17000  FIND FREE I/O CHANNEL

   (1)   20400  SEARCH FOR DEVICE

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

   (1)   38500  VERIFY I/O CHANNEL NUMBER

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page   1

01                                                                                                                               (1)



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

                                     0000   200 	.IDENT	/01/

                                     0000   300  

                                     0000   400 ;

                                     0000   500 ; COPYRIGHT (C) 1977

                                     0000   600 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

                                     0000   700 ;

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

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

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

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

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

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

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

                                     0000  1500 ;

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

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

                                     0000  1800 ; EQUIPMENT CORPORATION.

                                     0000  1900 ;

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

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

                                     0000  2200 ;

                                     0000  2300 ; D. N. CUTLER 13-JUN-76

                                     0000  2400 ;

                                     0000  2500 ; PAGED I/O RELATED SUBROUTINES

                                     0000  2600 ;

                                     0000  2700 ; MACRO LIBRARY CALLS

                                     0000  2800 ;

                                     0000  2900  

                                     0000  3000 	$ACBDEF				;DEFINE AST CONTROL BLOCK

                                     0000  3100 	$CCBDEF				;DEFINE CCB OFFSETS

                                     0000  3200 	$CRBDEF				;DEFINE CRB OFFSETS

                                     0000  3300 	$DDBDEF				;DEFINE DDB OFFSETS

                                     0000  3400 	$DEVDEF				;DEFINE DEVICE CHARACTERISTICS

                                     0000  3500 	$IPLDEF				;DEFINE IPL LEVELS

                                     0000  3600 	$LOGDEF				;DEFINE LOG OFFSETS

                                     0000  3700 	$PCBDEF				;DEFINE PCB OFFSETS

                                     0000  3800 	$PRDEF				;DEFINE PROCESSOR REGISTERS

                                     0000  3900 	$PRVDEF				;DEFINE PRIVILEGE BITS

                                     0000  4000 	$PSLDEF				;DEFINE PROCESSOR STATUS FIELDS

                                     0000  4100 	$SSDEF				;DEFINE SYSTEM STATUS VALUES

                                     0000  4200 	$UCBDEF				;DEFINE UCB OFFSETS

                                     0000  4300  

                                     0000  4400 ;

                                     0000  4500 ; LOCAL SYMBOLS

                                     0000  4600 ;

                                     0000  4700 ; CHARACTER DEFINITIONS

                                     0000  4800 ;

                                     0000  4900  

                           0000003A  0000  5000 COLON=58				;COLON

                           00000039  0000  5100 NINE=57					;DIGIT 9

                           00000041  0000  5200 UCA=65					;UPPER CASE A

                           00000064  0000  5300 UCZ=100					;UPPER CASE Z

                           0000005F  0000  5400 UNDERSCORE=95				;UNDERSCORE

                           00000030  0000  5500 ZERO=48					;DIGIT 0

                                     0000  5600  

                                     0000  5700 ;

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page   2

01                                                                                                                               (1)



                                     0000  5800 ; LOCAL DATA

                                     0000  5900 ;

                                     0000  6000  

                                 00000000  6100 	.PSECT	Y$EXEPAGED

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

                                 08  0000       

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page   3

01              CREATE MAILBOX OR NETWORK UCB                                                                                    (1)



                                     0009  6400 	.SBTTL	CREATE MAILBOX OR NETWORK UCB

                                     0009  6500 ;+

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

                                     0009  6700 ;

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

                                     0009  6900 ; THE I/O DATABASE.

                                     0009  7000 ;

                                     0009  7100 ; INPUTS:

                                     0009  7200 ;

                                     0009  7300 ;	R4 = CURRENT PROCESS PCB ADDRESS.

                                     0009  7400 ;	R5 = ADDRESS OF CLONE UCB.

                                     0009  7500 ;

                                     0009  7600 ; OUTPUTS:

                                     0009  7700 ;

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

                                     0009  7900 ;

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

                                     0009  8100 ;			OR NETWORK UCB.

                                     0009  8200 ;

                                     0009  8300 ;	R0 LOW BIT SUCCESS INDICATES SUCCESSFUL CREATION.

                                     0009  8400 ;

                                     0009  8500 ;		R2 = ADDRESS OF ALLOCATED UCB.

                                     0009  8600 ;

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

                                     0009  8800 ;		ACCESS.

                                     0009  8900 ;-

                                     0009  9000  

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

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

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

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

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

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

                          62         0018       

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                          08     13  0066 11800 	BEQL	30$			;IF EQL NONE

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

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page   4

01              CREATE MAILBOX OR NETWORK UCB                                                                                    (1)



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

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

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

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

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

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

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

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

                                 05  0086 12800 	RSB				;

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

                                 05  008C 13000 	RSB				;

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page   5

01              CONVERT DEVICE NAME AND UNIT                                                                                     (1)



                                     008D 13200 	.SBTTL	CONVERT DEVICE NAME AND UNIT

                                     008D 13300 ;+

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

                                     008D 13500 ;

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

                                     008D 13700 ; DEVICE NAME STRING.

                                     008D 13800 ;

                                     008D 13900 ; INPUTS:

                                     008D 14000 ;

                                     008D 14100 ;	R0 = LENGTH OF OUTPUT BUFFER.

                                     008D 14200 ;	R1 = ADDRESS OF OUTPUT BUFFER.

                                     008D 14300 ;	R6 = ADDRESS OF DEVICE UCB.

                                     008D 14400 ;

                                     008D 14500 ; OUTPUTS:

                                     008D 14600 ;

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

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

                                     008D 14900 ;

                                     008D 15000 ;		R0 = FINAL CONVERSION STATUS.

                                     008D 15100 ;		R1 = LENGTH OF CONVERSION STRING.

                                     008D 15200 ;

                                     008D 15300 ;	R3 IS PRESERVED ACROSS CALL.

                                     008D 15400 ;-

                                     008D 15500  

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

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

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

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

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

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

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

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

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

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

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

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

                                 05  00C1 16800 	RSB				;

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page   6

01              FIND FREE I/O CHANNEL                                                                                            (1)



                                     00C2 17000 	.SBTTL	FIND FREE I/O CHANNEL

                                     00C2 17100 ;+

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

                                     00C2 17300 ;

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

                                     00C2 17500 ;

                                     00C2 17600 ; INPUTS:

                                     00C2 17700 ;

                                     00C2 17800 ;	NONE.

                                     00C2 17900 ;

                                     00C2 18000 ; OUTPUTS:

                                     00C2 18100 ;

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

                                     00C2 18300 ;

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

                                     00C2 18500 ;

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

                                     00C2 18700 ;

                                     00C2 18800 ;		R1 = AVAILABLE CHANNEL NUMBER.

                                     00C2 18900 ;

                                     00C2 19000 ;	R3 IS PRESERVED ACROSS CALL.

                                     00C2 19100 ;-

                                     00C2 19200  

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

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

                          50         00C9       

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

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

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

                          0E     13  00D7 19800 	BEQL	20$			;IF EQL NO

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

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

            50   000001B4'EF     3C  00DF 20100 	MOVZWL	SS$_NOIOCHAN,R0		;INDICATE FAILURE

                                 05  00E6 20150 	RSB				;

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

                                 05  00EA 20250 	RSB				;

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page   7

01              SEARCH FOR DEVICE                                                                                                (1)



                                     00EB 20400 	.SBTTL	SEARCH FOR DEVICE

                                     00EB 20500 ;+

                                     00EB 20600 ; IOC$SEARCHDEV - SEARCH FOR PHYSICAL DEVICE

                                     00EB 20700 ; IOC$SEARCHGEN - SEARCH FOR GENERIC DEVICE

                                     00EB 20800 ;

                                     00EB 20900 ; THIS ROUTINE IS CALLED TO SEARCH THE DEVICE DATA BASE FOR A SPECIFIED

                                     00EB 21000 ; DEVICE. IT IS ASSUMED THAT THE DEVICE DATA BASE HAS BEEN LOCKED FOR

                                     00EB 21100 ; READ ACCESS.

                                     00EB 21200 ;

                                     00EB 21300 ; INPUTS:

                                     00EB 21400 ;

                                     00EB 21500 ;	R1 = ADDRESS OF LOGICAL NAME STRING DESCRIPTOR.

                                     00EB 21600 ;	R4 = CURRENT PROCESS PCB ADDRESS.

                                     00EB 21700 ;

                                     00EB 21800 ; OUTPUTS:

                                     00EB 21900 ;

                                     00EB 22000 ;	R0 LOW BIT CLEAR INDICATES FAILURE TO FIND DEVICE.

                                     00EB 22100 ;

                                     00EB 22200 ;		R0 = SS$_IVDEVNAM - INVALID DEVICE NAME.

                                     00EB 22300 ;		R0 = SS$_NONLOCAL - NONLOCAL DEVICE.

                                     00EB 22400 ;		R0 = SS$_NOSUCHDEV - NO SUCH DEVICE.

                                     00EB 22500 ;

                                     00EB 22600 ;	R0 LOW BIT SET INDICATES SUCCESS WITH:

                                     00EB 22700 ;

                                     00EB 22800 ;		R1 = UCB ADDRESS OF DEVICE UNIT.

                                     00EB 22900 ;-

                                     00EB 23000  

                                     00EB 23100 	.ENABL	LSB

                                     00EB 23200 IOC$SEARCHDEV::				;SEARCH FOR PHYSICAL DEVICE

            52            02     D0  00EB 23300 	MOVL	#2,R2			;INDICATE PHYSICAL DEVICE SEARCH

                          03     11  00EE 23400 	BRB	5$			;

                                     00F0 23500 IOC$SEARCHGEN::				;SEARCH FOR GENERIC DEVICE

            52            01     D0  00F0 23600 	MOVL	#1,R2			;INDICATE GENERIC DEVICE SEARCH

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

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

            5E            52     C2  00FB 23900 	SUBL	R2,SP			;ALLOCATE SPACE FOR RESULT STRING

            53            5E     D0  00FE 24000 	MOVL	SP,R3			;SET ADDRESS OF RESULTANT STRING

                          55     D4  0101 24100 	CLRL	R5			;SET TO SEARCH ALL NAME TABLES

                          FEFA'  30  0103 24200 	BSBW	LOG$TRNSLOGNAME		;TRANSLATE LOGICAL NAME STRING

            68            50     E9  0106 24300 	BLBC	R0,60$			;IF LBC RESULT STRING TOO LARGE

            54            51     D0  0109 24400 	MOVL	R1,R4			;SAVE LENGTH OF RESULT STRING IN BYTES

                          65     13  010C 24500 	BEQL	70$			;IF EQL INVALID DEVICE NAME

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

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

                          06     12  0115 24800 	BNEQ	7$			;IF NEQ NO

                          54     D7  0117 24900 	DECL	R4			;REDUCE LENGTH OF DEVICE NAME

                          58     13  0119 25000 	BEQL	70$			;IF EQL INVALID DEVICE NAME

                          10     11  011B 25100 	BRB	10$			;

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

                          75         0120       

                          0A     13  0121 25300 	BEQL	10$			;IF EQL COLON NOT FOUND

                          50     D7  0123 25400 	DECL	R0			;POSSIBLY A NODE NAME?

                          06     13  0125 25500 	BEQL	10$			;IF EQL NO

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

                          3F     13  012B 25700 	BEQL	50$			;IF EQL YES

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

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

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page   8

01              SEARCH FOR DEVICE                                                                                                (1)



                          3D     1F  0134 26000 	BLSSU	70$			;IF LSSU NO

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

                          05     1A  013A 26200 	BGTRU	30$			;IF GTRU NO

                          51     D6  013C 26300 	INCL	R1			;POINT TO NEXT CHARACTER

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

                          56     D4  0141 26500 30$:	CLRL	R6			;CLEAR UNIT NUMBER

            54            50     C2  0143 26600 	SUBL	R0,R4			;CALCULATE LENGTH OF DEVICE NAME

                          2B     13  0146 26700 	BEQL	70$			;IF EQL NO DEVICE NAME SPECIFIED

                          50     D7  0148 26800 40$:	DECL	R0			;ANY MORE CHARACTERS IN STRING?

                          2E     19  014A 26900 	BLSS	80$			;IF LSS NO

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

            52            3A     91  014F 27100 	CMPB	#COLON,R2		;DEVICE NAME TERMINATOR?

                          26     13  0152 27200 	BEQL	80$			;IF EQL YES

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

            52            30     82  0158 27400 	SUBB	#ZERO,R2		;POSSIBLY A DECIMAL DIGIT?

                          16     19  015B 27500 	BLSS	70$			;IF LSS NO

            52            09     91  015D 27600 	CMPB	#NINE-ZERO,R2		;DECIMAL DIGIT?

                          11     19  0160 27700 	BLSS	70$			;IF LSS NO

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

                          0C     1D  0165 27900 	BVS	70$			;IF VS OVERFLOW

            56            52     C0  0167 28000 	ADDL	R2,R6			;ADD NEW DIGIT TO ACCUMULATION

                          DC     11  016A 28100 	BRB	40$			;

                                     016C 28200  

                                     016C 28300 ;

                                     016C 28400 ; NONLOCAL DEVICE

                                     016C 28500 ;

                                     016C 28600  

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

                          35     11  0171 28800 60$:	BRB	120$			;

                                     0173 28900  

                                     0173 29000 ;

                                     0173 29100 ; INVALID DEVICE NAME

                                     0173 29200 ;

                                     0173 29300  

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

                          2E     11  0178 29500 	BRB	120$			;

                                     017A 29600  

                                     017A 29700 ;

                                     017A 29800 ; SEARCH DEVICE DATA BASE FOR NAME/UNIT MATCH

                                     017A 29900 ;

                                     017A 30000  

            57            01     D0  017A 30100 80$:	MOVL	#1,R7			;SET DEVICE NAME LENGTH ADJUSTMENT VALUE

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

                          2B     10  0184 30300 90$:	BSBB	SEARCHDEV		;SEARCH FOR DEVICE NAME MATCH

                          09     12  0186 30400 	BNEQ	100$			;IF NEQ MATCH NOT FOUND

                          43     10  0188 30500 	BSBB	SEARCHUNIT		;SEARCH FOR UNIT NUMBER MATCH

            1B            50     E8  018A 30600 	BLBS	R0,120$			;IF LBS UNIT NUMBER MATCH FOUND

            F3         40 AE     E8  018D 30700 	BLBS	LOG$C_NAMLENGTH(SP),90$	;IF LBS GENERIC DEVICE NAME SEARCH

                          57     D4  0191 30800 100$:	CLRL	R7			;CLEAR DEVICE NAME LENGTH ADJUSTMENT VALUE

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

                          15     10  019A 31000 	BSBB	SEARCHDEV		;SEARCH FOR DEVICE NAME MATCH

                          05     12  019C 31100 	BNEQ	110$			;IF NEQ MATCH NOT FOUND

                          2D     10  019E 31200 	BSBB	SEARCHUNIT		;SEARCH FOR UNIT NUMBER MATCH

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

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

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

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

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page   9

01              SEARCH FOR DEVICE                                                                                                (1)



                                 05  01B0 31700 	RSB				;

                                     01B1 31800 	.DSABL	LSB

                                     01B1 31900  

                                     01B1 32000 ;

                                     01B1 32100 ; SUBROUTINE TO SEARCH FOR DEVICE NAME MATCH

                                     01B1 32200 ;

                                     01B1 32300  

                                     01B1 32400 SEARCHDEV:				;SEARCH FOR DEVICE NAME

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

                          14     13  01B4 32600 	BEQL	20$			;IF EQL END OF LIST

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

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

                          51         01BD       

            54            51     91  01BE 32900 	CMPB	R1,R4			;LENGTH OF NAMES MATCH?

                          EE     12  01C1 33000 	BNEQ	10$			;IF NEQ NO

            60            54     29  01C3 33100 	CMPC	R4,(R0),(R5)		;COMPARE DEVICE NAMES

                          65         01C6       

                          E8     12  01C7 33200 	BNEQ	10$			;IF NEQ NAMES DO NOT MATCH

                                 05  01C9 33300 	RSB				;

                          58     D6  01CA 33400 20$:	INCL	R8			;INDICATE SEARCH FAILURE

                                 05  01CC 33500 	RSB				;

                                     01CD 33600  

                                     01CD 33700 ;

                                     01CD 33800 ; SUBROUTINE TO SEARCH FOR UNIT NUMBER MATCH

                                     01CD 33900 ;

                                     01CD 34000  

                                     01CD 34100 SEARCHUNIT:				;SEARCH FOR UNIT NUMBER

                          50     D4  01CD 34200 	CLRL	R0			;ASSUME SEARCH FAILURE

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

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

                          28     13  01D7 34500 	BEQL	40$			;IF EQL END OF LIST

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

                          08         01DD       

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

                          1B     13  01E2 34800 	BEQL	30$			;IF EQL YES

                          ED     11  01E4 34900 	BRB	10$			;

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

                          E8     12  01E9 35100 	BNEQ	10$			;IF NEQ NO

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

                          E3         01EF       

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

                          DE         01F4       

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

                          05         01F9       

                                     01FA 35500 	IFNPRIV	ALLSPOOL,10$		;PROCESS HAVE PRIVILEGE TO ALLOCATE?

                          50     D6  01FF 35600 30$:	INCL	R0			;INDICATE UNIT NUMBER MATCH

                                 05  0201 35700 40$:	RSB				;

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page  10

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



                                     0202 35900 	.SBTTL	UNLOCK I/O DATA BASE AND RETURN STATUS

                                     0202 36000 ;+

                                     0202 36100 ; IOC$UNLOCK - UNLOCK I/O DATA BASE AND RETURN STATUS

                                     0202 36200 ;

                                     0202 36300 ; THIS ROUTINE IS JUMPED TO AT THE END OF AN I/O RELATED SYSTEM SERVICE TO

                                     0202 36400 ; UNLOCK THE I/O DATA BASE, SET THE CURRENT PROCESSOR PRIORITY TO ZERO,

                                     0202 36500 ; AND TO RETURN STATUS TO THE CHANGE MODE DISPATCHER.

                                     0202 36600 ;

                                     0202 36700 ; INPUTS:

                                     0202 36800 ;

                                     0202 36900 ;	R0 = FINAL SYSTEM SERVICE STATUS VALUE.

                                     0202 37000 ;

                                     0202 37100 ; OUTPUTS:

                                     0202 37200 ;

                                     0202 37300 ;	THE I/O DATA BASE IS UNLOCKED, THE CURRENT PROCESSOR PRIORITY IS SET

                                     0202 37400 ;	TO ZERO, AND A RETURN TO THE CHANGE MODE DISPATCHER IS EXECUTED.

                                     0202 37500 ;-

                                     0202 37600  

                                     0202 37700 IOC$UNLOCK::				;UNLOCK I/O DATA BASE AND RETURN STATUS

                          50     DD  0202 37800 	PUSHL	R0			;SAVE FINAL SYSTEM SERVICE STATUS VALUE

            54   00000000'EF     D0  0204 37900 	MOVL	SCH$GL_CURPCB,R4	;GET CURRENT PROCESS PCB ADDRESS

                          FDF2'  30  020B 38000 	BSBW	SCH$IOUNLOCK		;UNLOCK I/O DATA BASE

                                     020E 38100 	SETIPL	#0			;ALLOW ALL INTERRUPTS

                          01     BA  0211 38200 	POPR	#^M<R0>			;RETRIEVE FINAL SERVICE STATUS VALUE

                                 04  0213 38300 	RET				;

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page  11

01              VERIFY I/O CHANNEL NUMBER                                                                                        (1)



                                     0214 38500 	.SBTTL	VERIFY I/O CHANNEL NUMBER

                                     0214 38600 ;+

                                     0214 38700 ; IOC$VERIFYCHAN - VERIFY I/O CHANNEL NUMBER

                                     0214 38800 ;

                                     0214 38900 ; THIS ROUTINE IS CALLED TO VERIFY AND TRANSLATE AN I/O CHANNEL NUMBER TO

                                     0214 39000 ; A CCB ADDRESS. THE CHANNEL IS CHECKED FOR ACCESSIBILITY BY THE PREVIOUS

                                     0214 39100 ; ACCESS MODE.

                                     0214 39200 ;

                                     0214 39300 ; INPUTS:

                                     0214 39400 ;

                                     0214 39500 ;	R0 = I/O CHANNEL NUMBER.

                                     0214 39600 ;

                                     0214 39700 ; OUTPUTS:

                                     0214 39800 ;

                                     0214 39900 ;	R0 LOW BIT CLEAR INDICATES FAILURE TO VERIFY.

                                     0214 40000 ;

                                     0214 40100 ;		R0 = SS$_IVCHAN - INVALID CHANNEL NUMBER.

                                     0214 40200 ;		R0 = SS$_NOPRIV - NO PRIVILEGE TO ACCESS CHANNEL.

                                     0214 40300 ;

                                     0214 40400 ;	R0 LOW BIT SET INDICATES VERIFY SUCCESS WITH:

                                     0214 40500 ;

                                     0214 40600 ;		R1 = ADDRESS OF CCB.

                                     0214 40700 ;		R2 = CHANNEL INDEX.

                                     0214 40800 ;-

                                     0214 40900  

                                     0214 41000 IOC$VERIFYCHAN::			;VERIFY I/O CHANNEL NUMBER

            50            0F     AA  0214 41100 	BICW	#CCB$C_LENGTH-1,R0	;CLEAR EXTRANEOUS LOW ORDER BITS

                          28     13  0217 41200 	BEQL	10$			;IF EQL INVALID CHANNEL

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

                          1F     1E  0220 41400 	BGEQU	10$			;IF GEQU NO

            52            50     CE  0222 41500 	MNEGL	R0,R2			;CONVERT TO CHANNEL INDEX

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

                          53     DC  022D 41700 	MOVPSL	R3			;READ CURRENT PSL

            02            16     EF  022F 41800 	EXTZV	#PSL$V_PRVMOD,#PSL$S_PRVMOD,R3,R3 ;EXTRACT PREVIOUS MODE FIELD

            53            53         0232       

            50            24     3C  0234 41900 	MOVZWL	#SS$_NOPRIV,R0		;ASSUME CALLER DOES NOT HAVE PRIVILEGE

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

                          09     18  023B 42100 	BGEQ	20$			;IF GEQ NO

            50            00     E3  023D 42200 	BBCS	#0,R0,20$		;INDICATE SUCCESS

                          05         0240       

            50       013C 8F     3C  0241 42300 10$:	MOVZWL	#SS$_IVCHAN,R0		;SET INVALID CHANNEL

                                 05  0246 42400 20$:	RSB				;

                                     0247 42500  

                                     0247 42600 	.END

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page  12

SYMBOL TABLE                                                                                                                     (1)



$$T2           = 00000005            DEV$M_DMT      = 00200000            IPL$_ASTDEL    = 00000002            

ACB$B_RMOD       0000000B            DEV$M_ELG      = 00400000            IPL$_HWCLK     = 00000018            

ACB$B_TYPE       0000000A            DEV$M_FOD      = 00004000            IPL$_IOPOST    = 00000004            

ACB$L_AST        00000010            DEV$M_FOR      = 01000000            IPL$_MAILBOX   = 0000000B            

ACB$L_ASTPRM     00000014            DEV$M_GEN      = 00020000            IPL$_POWER     = 0000001F            

ACB$L_ASTQBL     00000004            DEV$M_IDV      = 04000000            IPL$_QUEUEAST  = 00000006            

ACB$L_ASTQFL     00000000            DEV$M_MBX      = 00100000            IPL$_SCHED     = 00000003            

ACB$L_KAST       00000018            DEV$M_MNT      = 00080000            IPL$_SYNCH     = 00000007            

ACB$L_PID        0000000C            DEV$M_NET      = 00002000            IPL$_TIMER     = 00000007            

ACB$M_QUOTA    = 00000040            DEV$M_ODV      = 08000000            LOG$B_AMOD       0000000E            

ACB$S_MODE     = 00000002            DEV$M_RCK      = 40000000            LOG$B_TABLE      0000000B            

ACB$V_KAST     = 00000007            DEV$M_REC      = 00000001            LOG$B_TYPE       0000000A            

ACB$V_MODE     = 00000000            DEV$M_RND      = 10000000            LOG$C_GROUP    = 00000001            

ACB$V_QUOTA    = 00000006            DEV$M_RTM      = 20000000            LOG$C_LENGTH     00000014            

ACB$W_SIZE       00000008            DEV$M_SDI      = 00000010            LOG$C_NAMLENGTH= 00000040            

BIT...         = 00000000            DEV$M_SHR      = 00010000            LOG$C_PROCESS  = 00000002            

CCB$B_AMOD       00000009            DEV$M_SPL      = 00000040            LOG$C_SYSTEM   = 00000000            

CCB$B_STS        00000008            DEV$M_SQD      = 00000020            LOG$K_LENGTH     00000014            

CCB$C_LENGTH     00000010            DEV$M_SWL      = 02000000            LOG$L_LTBL       00000004            

CCB$K_LENGTH     00000010            DEV$M_TRM      = 00000004            LOG$L_LTFL       00000000            

CCB$L_DIRP       0000000C            DEV$M_WCK      = 80000000            LOG$L_MBXUCB     00000010            

CCB$L_UCB        00000000            DEV$V_ALL      = 00000017            LOG$TRNSLOGNAME  ********   X   03   

CCB$L_WIND       00000004            DEV$V_AVL      = 00000012            LOG$T_NAME       00000014            

CCB$W_IOC        0000000A            DEV$V_CCL      = 00000001            LOG$W_GROUP      0000000C            

COLON          = 0000003A            DEV$V_DIR      = 00000003            LOG$W_SIZE       00000008            

CRB$B_MASK       0000000E            DEV$V_DMT      = 00000015            NINE           = 00000039            

CRB$B_TT_ATTN    00000004            DEV$V_ELG      = 00000016            PCB$B_ASTACT     0000000C            

CRB$B_TT_EXPEC   00000005            DEV$V_FOD      = 0000000E            PCB$B_ASTEN      0000000D            

CRB$B_TYPE       0000000A            DEV$V_FOR      = 00000018            PCB$B_PRI        0000000B            

CRB$C_LENGTH     00000028            DEV$V_GEN      = 00000011            PCB$B_PRIB       00000033            

CRB$K_LENGTH     00000028            DEV$V_IDV      = 0000001A            PCB$B_TYPE       0000000A            

CRB$L_INTD       00000014            DEV$V_MBX      = 00000014            PCB$B_WEFC       00000032            

CRB$L_LINK       00000010            DEV$V_MNT      = 00000013            PCB$C_LENGTH     0000007C            

CRB$L_TT_DIAL    00000000            DEV$V_NET      = 0000000D            PCB$K_LENGTH     0000007C            

CRB$L_WQBL       00000004            DEV$V_ODV      = 0000001B            PCB$L_ASTQBL     00000014            

CRB$L_WQFL       00000000            DEV$V_RCK      = 0000001E            PCB$L_ASTQFL     00000010            

CRB$M_BSY      = 00000001            DEV$V_REC      = 00000000            PCB$L_EFC2P      00000058            

CRB$V_BSY      = 00000000            DEV$V_RND      = 0000001C            PCB$L_EFC3P      0000005C            

CRB$W_REFC       0000000C            DEV$V_RTM      = 0000001D            PCB$L_EFCS       00000050            

CRB$W_SIZE       00000008            DEV$V_SDI      = 00000004            PCB$L_EFCU       00000054            

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

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

CTL$GW_NMIOCH    ********   X   03   DEV$V_SQD      = 00000005            PCB$L_PHD        00000064            

DDB$B_ACPCLASS   00000013            DEV$V_SWL      = 00000019            PCB$L_PHYPCB     00000018            

DDB$B_TYPE       0000000A            DEV$V_TRM      = 00000002            PCB$L_PID        00000060            

DDB$C_LENGTH     00000014            DEV$V_WCK      = 0000001F            PCB$L_PQB        0000004C            

DDB$K_LENGTH     00000014            DEVCTL           00000000 R     03   PCB$L_SQBL       00000004            

DDB$L_ACPD       00000010            EXE$ALONONPAGED  ********   X   03   PCB$L_SQFL       00000000            

DDB$L_DDT        0000000C            GBL...         = 00000000            PCB$L_STS        00000028            

DDB$L_LINK       00000000            IOC$CREATE_UCB   00000009 RG    03   PCB$L_UIC        00000020            

DDB$L_UCB        00000004            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    000000EB RG    03   PCB$V_ASTPEN   = 00000011            

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

DEV$M_CCL      = 00000002            IOC$UNLOCK       00000202 RG    03   PCB$V_DELPEN   = 00000001            

DEV$M_DIR      = 00000008            IOC$VERIFYCHAN   00000214 RG    03   PCB$V_FORCPEN  = 00000002            

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page  13

SYMBOL TABLE                                                                                                                     (1)



PCB$V_HIBER    = 00000013            PR$_SBIQC      = 00000036            PSL$M_PRVMOD   = 00C00000            

PCB$V_INQUAN   = 00000003            PR$_SBIS       = 00000031            PSL$M_SAFBITS  = 000037FF            

PCB$V_LOGIN    = 00000014            PR$_SBISC      = 00000032            PSL$M_TBIT     = 00000010            

PCB$V_NOACNT   = 0000000F            PR$_SBITA      = 00000035            PSL$M_TP       = 40000000            

PCB$V_PHDRES   = 00000012            PR$_SBR        = 0000000C            PSL$S_CURMOD   = 00000002            

PCB$V_PSWAPM   = 00000004            PR$_SCBB       = 00000011            PSL$S_IPL      = 00000005            

PCB$V_RES      = 00000000            PR$_SID        = 0000003E            PSL$S_PRVMOD   = 00000002            

PCB$V_RESPEN   = 00000005            PR$_SIRR       = 00000014            PSL$V_CM       = 0000001F            

PCB$V_SSFEXC   = 00000006            PR$_SISR       = 00000015            PSL$V_CURMOD   = 00000018            

PCB$V_SSFEXCE  = 00000007            PR$_SLR        = 0000000D            PSL$V_DV       = 00000007            

PCB$V_SSFEXCS  = 00000008            PR$_SSP        = 00000002            PSL$V_FPD      = 0000001B            

PCB$V_SSFEXCU  = 00000009            PR$_TBIA       = 00000039            PSL$V_FU       = 00000006            

PCB$V_SSRWAIT  = 0000000A            PR$_TBIS       = 0000003A            PSL$V_IPL      = 00000010            

PCB$V_SUSPEN   = 0000000B            PR$_TODR       = 0000001B            PSL$V_IS       = 0000001A            

PCB$V_SWPVBN   = 00000010            PR$_TXCS       = 00000022            PSL$V_IV       = 00000005            

PCB$V_WAKEPEN  = 0000000C            PR$_TXDB       = 00000023            PSL$V_PRVMOD   = 00000016            

PCB$V_WALL     = 0000000D            PR$_USP        = 00000003            PSL$V_TBIT     = 00000004            

PCB$W_APTCNT     00000034            PR$_WCSA       = 0000002C            PSL$V_TP       = 0000001E            

PCB$W_ASTCNT     0000003C            PR$_WCSD       = 0000002D            SCH$GL_CURPCB    ********   X   03   

PCB$W_BIOCNT     0000003E            PRV$V_ALLSPOOL = 00000004            SCH$IOLOCKW      ********   X   03   

PCB$W_BIOLM      00000040            PRV$V_BUGCHK   = 00000017            SCH$IOUNLOCK     ********   X   03   

PCB$W_BYTCNT     00000042            PRV$V_CMEXEC   = 00000001            SEARCHDEV        000001B1 R     03   

PCB$W_BYTLM      00000068            PRV$V_CMKRNL   = 00000000            SEARCHUNIT       000001CD R     03   

PCB$W_DIOCNT     00000044            PRV$V_DETACH   = 00000005            SS$_ABORT      = 0000002C            

PCB$W_DIOLM      00000046            PRV$V_DEVCHAR  = 00000011            SS$_ACCONFLICT = 00000800            

PCB$W_FILCNT     00000048            PRV$V_DIAGNOSE = 00000006            SS$_ACCVIO     = 0000000C            

PCB$W_GPGCNT     00000038            PRV$V_EXQUOTA  = 00000013            SS$_ARITH      = 00000404            

PCB$W_GRP        00000022            PRV$V_GROUP    = 00000008            SS$_ASTFLT     = 0000040C            

PCB$W_MEM        00000020            PRV$V_GRPNAM   = 00000003            SS$_BADATTRIB  = 00000034            

PCB$W_MTXCNT     0000000E            PRV$V_LOG_IO   = 00000007            SS$_BADCHKSUM  = 00000808            

PCB$W_PPGCNT     0000003A            PRV$V_NETMBX   = 00000014            SS$_BADESCAPE  = 0000003C            

PCB$W_PRCCNT     0000006A            PRV$V_NOACNT   = 00000009            SS$_BADFILEHDR = 00000810            

PCB$W_SIZE       00000008            PRV$V_OPER     = 00000012            SS$_BADFILENAME= 00000818            

PCB$W_STATE      00000030            PRV$V_PHY_IO   = 00000016            SS$_BADFILEVER = 00000820            

PCB$W_TMBU       00000036            PRV$V_PRMCEB   = 0000000A            SS$_BADIMGHDR  = 00000044            

PCB$W_TQCNT      0000004A            PRV$V_PRMGBL   = 00000018            SS$_BADIRECTORY= 00000828            

PR$_ACCR       = 00000029            PRV$V_PRMMBX   = 0000000B            SS$_BADPARAM   = 00000014            

PR$_ACCS       = 00000028            PRV$V_PSWAPM   = 0000000C            SS$_BADSTACK   = 000002B4            

PR$_ASTLVL     = 00000013            PRV$V_SETPRI   = 0000000D            SS$_BEGOFFILE  = 00000938            

PR$_ESP        = 00000001            PRV$V_SETPRV   = 0000000E            SS$_BLOCKCNTERR= 00000940            

PR$_ICCS       = 00000018            PRV$V_SYSGBL   = 00000019            SS$_BREAK      = 00000414            

PR$_ICR        = 0000001A            PRV$V_SYSNAM   = 00000002            SS$_BUFFEROVF  = 00000601            

PR$_IPL        = 00000012            PRV$V_TMPMBX   = 0000000F            SS$_BUGCHECK   = 000002A4            

PR$_ISP        = 00000004            PRV$V_VOLPRO   = 00000015            SS$_CANCEL     = 00000830            

PR$_KSP        = 00000000            PRV$V_WORLD    = 00000010            SS$_CHANINTLK  = 0000004C            

PR$_MAPEN      = 00000038            PSL$C_EXEC     = 00000001            SS$_CLIFRCEXT  = 00000980            

PR$_NICR       = 00000019            PSL$C_KERNEL   = 00000000            SS$_CMODSUPR   = 0000041C            

PR$_P0BR       = 00000008            PSL$C_SUPER    = 00000002            SS$_CMODUSER   = 00000424            

PR$_P0LR       = 00000009            PSL$C_USER     = 00000003            SS$_COMPAT     = 0000042C            

PR$_P1BR       = 0000000A            PSL$M_CM       = 80000000            SS$_CONTINUE   = 00000001            

PR$_P1LR       = 0000000B            PSL$M_CURMOD   = 03000000            SS$_CONTROLC   = 00000651            

PR$_PCBB       = 00000010            PSL$M_DV       = 00000080            SS$_CONTROLO   = 00000609            

PR$_RXCS       = 00000020            PSL$M_FPD      = 08000000            SS$_CONTROLY   = 00000611            

PR$_RXDB       = 00000021            PSL$M_FU       = 00000040            SS$_CREATED    = 00000619            

PR$_SBIER      = 00000034            PSL$M_IPL      = 001F0000            SS$_CTRLERR    = 00000054            

PR$_SBIFS      = 00000030            PSL$M_IS       = 04000000            SS$_DATACHECK  = 0000005C            

PR$_SBIMT      = 00000033            PSL$M_IV       = 00000020            SS$_DATAOVERUN = 00000838            

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page  14

SYMBOL TABLE                                                                                                                     (1)



SS$_DEBUG      = 0000046C            SS$_IVADDR     = 00000134            SS$_RADRMOD    = 0000044C            

SS$_DEVACTIVE  = 000002C4            SS$_IVCHAN     = 0000013C            SS$_REJECT     = 00000294            

SS$_DEVALLOC   = 00000840            SS$_IVCHNLSEC  = 0000026C            SS$_REMOTE     = 00000649            

SS$_DEVALRALLOC= 00000641            SS$_IVDEVNAM   = 00000144            SS$_RESIGNAL   = 00000918            

SS$_DEVASSIGN  = 00000848            SS$_IVGSDNAM   = 0000014C            SS$_RESULTOVF  = 00000214            

SS$_DEVFOREIGN = 00000064            SS$_IVLOGNAM   = 00000154            SS$_ROPRAND    = 00000454            

SS$_DEVICEFULL = 00000850            SS$_IVLOGTAB   = 0000015C            SS$_SECTBLFUL  = 0000021C            

SS$_DEVMOUNT   = 0000006C            SS$_IVPROTECT  = 000002F4            SS$_SSFAIL     = 0000045C            

SS$_DEVNOTALLOC= 00000858            SS$_IVQUOTAL   = 00000164            SS$_SUPERSEDE  = 00000631            

SS$_DEVNOTMBX  = 00000074            SS$_IVSECFLG   = 0000016C            SS$_TAPEPOSLOST= 00000224            

SS$_DEVNOTMOUNT= 0000007C            SS$_IVSECIDCTL = 000002E4            SS$_TBIT       = 00000464            

SS$_DEVOFFLINE = 00000084            SS$_IVSSRQ     = 00000174            SS$_TIMEOUT    = 0000022C            

SS$_DIRFULL    = 00000860            SS$_IVSTSFLG   = 0000017C            SS$_TOOMANYVER = 00000990            

SS$_DRVERR     = 0000008C            SS$_IVTIME     = 00000184            SS$_TOOMUCHDATA= 0000029C            

SS$_DUPFILENAME= 00000868            SS$_LENVIO     = 0000018C            SS$_UNASEFC    = 00000234            

SS$_DUPLNAM    = 00000094            SS$_LKWSETFUL  = 00000194            SS$_UNSAFE     = 0000023C            

SS$_ENDOFFILE  = 00000870            SS$_MBFULL     = 000008D8            SS$_UNWIND     = 00000920            

SS$_ENDOFTAPE  = 00000878            SS$_MBTOOSML   = 0000019C            SS$_UNWINDING  = 00000928            

SS$_ENDOFUSRLBL= 00000970            SS$_MCHECK     = 000002BC            SS$_VASFULL    = 00000244            

SS$_EXQUOTA    = 0000001C            SS$_MEDOFL     = 000001A4            SS$_VECINUSE   = 0000024C            

SS$_EXTIDXFILE = 00000880            SS$_MSGNOTFND  = 00000621            SS$_VOLINV     = 00000254            

SS$_FCPREADERR = 00000888            SS$_MUSTCLOSEFL= 00000948            SS$_WAITUSRLBL = 00000950            

SS$_FCPREPSTN  = 00000988            SS$_NODATA     = 000001AC            SS$_WASCLR     = 00000001            

SS$_FCPREWNDERR= 00000890            SS$_NOHANDLER  = 000008F8            SS$_WASECC     = 00000639            

SS$_FCPSPACERR = 00000898            SS$_NOHOMEBLK  = 000008E0            SS$_WASSET     = 00000009            

SS$_FCPWRITERR = 000008A0            SS$_NOIOCHAN   = 000001B4            SS$_WRITLCK    = 0000025C            

SS$_FILACCERR  = 0000009C            SS$_NOLINKS    = 0000027C            SYS$FAO          ********   X   03   

SS$_FILALRACC  = 000000A4            SS$_NOLOGNAM   = 000001BC            UCA            = 00000041            

SS$_FILELOCKED = 000008A8            SS$_NOMBX      = 00000274            UCB$B_AMOD       00000053            

SS$_FILENUMCHK = 000008B0            SS$_NOMOREFILES= 00000930            UCB$B_CEX        00000077            

SS$_FILESEQCHK = 000008B8            SS$_NONEXDRV   = 000001C4            UCB$B_CM1        0000004A            

SS$_FILESTRUCT = 000008C0            SS$_NONEXPR    = 000008E8            UCB$B_CM2        0000004B            

SS$_FILNOTACC  = 000000AC            SS$_NONLOCAL   = 000008F0            UCB$B_DEVCLASS   00000038            

SS$_FILNOTCNTG = 000002AC            SS$_NOPRIV     = 00000024            UCB$B_DEVTYPE    00000039            

SS$_FILNOTEXP  = 000000B4            SS$_NORMAL     = 00000001            UCB$B_DIPL       00000052            

SS$_FORMAT     = 000000BC            SS$_NOSIGNAL   = 00000900            UCB$B_DX_SCTCNT  FFFFFFFE            

SS$_GPTFULL    = 000000C4            SS$_NOSOLICIT  = 00000284            UCB$B_DX_SPARE   FFFFFFFF            

SS$_GSDFULL    = 000000CC            SS$_NOSUCHDEV  = 00000908            UCB$B_ERTCNT     00000070            

SS$_GSDNOTXXX  = 000000D4            SS$_NOSUCHFILE = 00000910            UCB$B_ERTMAX     00000071            

SS$_HANGUP     = 000002CC            SS$_NOSUCHNODE = 0000028C            UCB$B_ESCAPE     0000004B            

SS$_HEADERFULL = 000008C8            SS$_NOSUCHSEC  = 00000978            UCB$B_FEX        00000076            

SS$_IDXFILEFULL= 000008D0            SS$_NOTAPEOP   = 00000264            UCB$B_FIPL       0000000B            

SS$_ILLBLKNUM  = 000000DC            SS$_NOTFILEDEV = 000001CC            UCB$B_LOCSRV     0000003C            

SS$_ILLCNTRFUNC= 000000E4            SS$_NOTINTBLSZ = 000001D4            UCB$B_OFFNDX     00000090            

SS$_ILLEFC     = 000000EC            SS$_NOTLABELMT = 000001DC            UCB$B_OFFRTC     00000091            

SS$_ILLIOFUNC  = 000000F4            SS$_NOTNETDEV  = 000002EC            UCB$B_REMSRV     0000003D            

SS$_ILLLBLAST  = 00000968            SS$_NOTRAN     = 00000629            UCB$B_SECTORS    0000003C            

SS$_ILLPAGCNT  = 000000FC            SS$_NOTSQDEV   = 000001E4            UCB$B_SLAVE      00000074            

SS$_ILLSEQOP   = 000002DC            SS$_OPCCUS     = 00000434            UCB$B_SPR        00000075            

SS$_ILLSER     = 00000104            SS$_OPCDEC     = 0000043C            UCB$B_STATE      00000052            

SS$_ILLUSRLBLRD= 00000958            SS$_OPINCOMPL  = 000002D4            UCB$B_TRACKS     0000003D            

SS$_ILLUSRLBLWT= 00000960            SS$_PAGOWNVIO  = 000001EC            UCB$B_TYPE       0000000A            

SS$_INCVOLLABEL= 0000010C            SS$_PAGRDERR   = 00000444            UCB$B_VERTSZ     0000003F            

SS$_INSFARG    = 00000114            SS$_PARITY     = 000001F4            UCB$C_LENGTH     00000074            

SS$_INSFMEM    = 00000124            SS$_PARTESCAPE = 000001FC            UCB$C_LOGLNK   = 00000001            

SS$_INSFRAME   = 0000012C            SS$_PFMBSY     = 00000204            UCB$K_LENGTH     00000074            

SS$_INSFWSL    = 0000011C            SS$_PSTFULL    = 0000020C            UCB$L_AMB        00000054            

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   VAX-11 MACRO X0.3-11               Page  15

SYMBOL TABLE                                                                                                                     (1)



UCB$L_ASTQBL     00000010            UCB$M_PRMMBX   = 00000001            UCB$W_FUNC       00000084            

UCB$L_ASTQFL     0000000C            UCB$M_TIM      = 00000001            UCB$W_MB_SEED    FFFFFFFC            

UCB$L_CPID       0000005C            UCB$M_TIMOUT   = 00000040            UCB$W_MSGCNT     00000016            

UCB$L_CRB        00000020            UCB$M_TT_NOTIF = 00000004            UCB$W_MSGMAX     00000014            

UCB$L_DDB        00000024            UCB$M_TT_TIMO  = 00000002            UCB$W_NT_CHAN    0000007C            

UCB$L_DEVCHAR    00000034            UCB$M_VALID    = 00000800            UCB$W_OFFSET     00000086            

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

UCB$L_DPC        0000007C            UCB$S_LTYPE    = 00000002            UCB$W_SIZE       00000008            

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

UCB$L_DX_BFPNT   FFFFFFF4            UCB$V_BACKP    = 00000005            UCB$W_STS        00000058            

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

UCB$L_DX_RXDB    FFFFFFF8            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   00000080            UCB$V_MSGACK   = 00000004            

UCB$L_MEDIA      00000088            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_NT_NONTR = 00000006            

UCB$L_RQBL       00000004            UCB$V_NT_SDP   = 00000003            

UCB$L_RQFL       00000000            UCB$V_ONLINE   = 00000004            

UCB$L_SVAPTE     00000068            UCB$V_POWER    = 00000005            

UCB$L_SVPN       00000064            UCB$V_PRMMBX   = 00000000            

UCB$L_TTCHAR     0000003C            UCB$V_SEGFLO   = 00000002            

UCB$L_VCB        00000030            UCB$V_TIM      = 00000000            

UCB$M_BSY      = 00000100            UCB$V_TIMOUT   = 00000006            

UCB$M_CANCEL   = 00000008            UCB$V_TT_NOTIF = 00000002            

UCB$M_DEADMO   = 00000400            UCB$V_TT_TIMO  = 00000001            

UCB$M_DELMBX   = 00000002            UCB$V_VALID    = 0000000B            

UCB$M_DIAGBUF  = 00000002            UCB$W_BCNT       0000006E            

UCB$M_DX_WRITE = 00000008            UCB$W_BCR        00000092            

UCB$M_ECC      = 00000001            UCB$W_BOFF       0000006C            

UCB$M_ERLOGIP  = 00000004            UCB$W_BUFQUO     00000018            

UCB$M_INT      = 00000002            UCB$W_BYTESTOGO  0000003E            

UCB$M_INTTYPE  = 00000080            UCB$W_CHARGE     0000004A            

UCB$M_JOB      = 00000001            UCB$W_CYLINDERS  0000003E            

UCB$M_MOUNTING = 00000200            UCB$W_DA         00000088            

UCB$M_NOCNVRT  = 00000004            UCB$W_DC         0000008A            

UCB$M_NT_BFROVF= 00000004            UCB$W_DEVBUFSIZ  0000003A            

UCB$M_NT_BREAK = 00000020            UCB$W_DEVSTS     0000005A            

UCB$M_NT_NAME  = 00000010            UCB$W_DSTADDR    00000018            

UCB$M_NT_NONTR = 00000040            UCB$W_DX_BCR     FFFFFFFC            

UCB$M_NT_SDP   = 00000008            UCB$W_EC1        0000008C            

UCB$M_ONLINE   = 00000010            UCB$W_EC2        0000008E            

UCB$M_POWER    = 00000020            UCB$W_ERRCNT     00000072            

IOSUBPAGD       - PAGED I/O RELATED SUBROUTINES                  21-AUG-1978 23:28:04   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$            FFFFFFFF      02     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  

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





THERE WERE NO ERRORS OR WARNINGS.

8126. BYTES LEFT IN FREE MEMORY POOL.

3082. BYTES OF RECLAIMED MEMORY.

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

8 MLB DIR RDS - 987 GETS TO DEFINE 26 MACROS. 78 INTER. FILE WRITES. 

