LOADDRIV        - LOAD A DEVICE DRIVER                           21-AUG-1978 22:27:21   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)    4000  DECLARATIONS

   (1)    9200  LOAD DRIVER

   (1)   17500  LOADER - LOAD THE DRIVER

LOADDRIV        - LOAD A DEVICE DRIVER                           21-AUG-1978 22:27:21   VAX-11 MACRO X0.3-11               Page   1

X01                                                                                                                              (1)



                                     0000   100 	.TITLE	LOADDRIV - LOAD A DEVICE DRIVER

                                     0000   200 	.IDENT	/X01/

                                     0000   300 

                                     0000   400 ;

                                     0000   500 ; COPYRIGHT (C) 1978

                                     0000   600 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

                                     0000   700 ;

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

                                     0000   900 ; COMPUTER  SYSTEM AND  MAY BE  COPIED ONLY WITH  THE INCLUSION OF THE

                                     0000  1000 ; ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE, OR ANY OTHER COPIES THEREOF,

                                     0000  1100 ; MAY NOT BE PROVIDED OR  OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON

                                     0000  1200 ; EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE

                                     0000  1300 ; TERMS.  TITLE TO AND  OWNERSHIP OF THE  SOFTWARE  SHALL AT ALL TIMES

                                     0000  1400 ; REMAIN IN DEC.

                                     0000  1500 ;

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

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

                                     0000  1800 ; 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 

                                     0000  2400 ;++

                                     0000  2500 ; FACILITY:	DEVICE DRIVER LOADER

                                     0000  2600 ;

                                     0000  2700 ; ABSTRACT:	LOAD A DRIVER

                                     0000  2800 ;

                                     0000  2900 ;

                                     0000  3000 ; ENVIRONMENT:	USER MODE PRIVILEGED CODE

                                     0000  3100 ;

                                     0000  3200 ; AUTHOR:	LEN KAWELL, CREATION DATE:8-JUN-78

                                     0000  3300 ;

                                     0000  3400 ; MODIFIED BY:

                                     0000  3500 ;

                                     0000  3600 ;	, : VERSION

                                     0000  3700 ; 01	- 

                                     0000  3800 ;--

LOADDRIV        - LOAD A DEVICE DRIVER                           21-AUG-1978 22:27:21   VAX-11 MACRO X0.3-11               Page   2

X01             DECLARATIONS                                                                                                     (1)



                                     0000  4000 	.SBTTL	DECLARATIONS

                                     0000  4100 

                                     0000  4200 

                                     0000  4300 ;

                                     0000  4400 ; INCLUDE FILES:

                                     0000  4500 ;

                                     0000  4800 

                                     0000  4900 ;

                                     0000  5000 ; MACROS:

                                     0000  5100 ;

                                     0000  5200 

                                     0000  5300 ;

                                     0000  5400 ; EQUATED SYMBOLS:

                                     0000  5500 ;

                           00000004  0000  5600 FILE_NAME =	4			;OFFSET TO FILE NAME ARG

                                     0000  5700 

                                     0000  5800 	$JPIDEF				;DEFINE SYS$GETJPI VALUES

                                     0000  5900 	$DPTDEF				;DEFINE DRIVER PROLOGUE TABLE

                                     0000  5950 	$DYNDEF				;DEFINE DYNAMIC MEMORY TYPES

                                     0000  6000 	$DDBDEF				;DEFINE DEVICE DATA BLOCK

                                     0000  6100 	$UCBDEF				;DEFINE UNIT CONTROL BLOCK

                                     0000  6200 	$PRDEF				;DEFINE PROCESSOR REGISTERS

                                     0000  6300 	$SYSGMSGDEF			;DEFINE SYSGEN MESSAGES

                                     0000  6400 

                                     0000  6500 ;

                                     0000  6600 ; OWN STORAGE:

                                     0000  6700 ;

                                 00000000  6800 	.PSECT	IOGEN$DATA	RD,WRT,NOEXE

                                     0000  6900 

                                     0000  7000 IN_FAB:					;INPUT FILE FAB

                                     0000  7100 	$FAB	FOP=UFO,-		; RMS WILL JUST OPEN IT

                                     0000  7200 		DNM=<SYS$SYSTEM:.EXE>	; DEFAULT FILE NAME

                                     0050  7300 

                                     0050  7400 GET_NEXT_FREE:				;GETJPI LIST TO GET ADDR OF NEXT

                                     0050  7500 					;FREE PAGE IN P0 SPACE

                               0004  0050  7600 	.WORD	4			; LENGTH OF LIST

                               0404  0052  7700 	.WORD	JPI$_FREP0VA		; REQUEST TYPE

                           00000060' 0054  7800 	.LONG	MAP_RANGE		; ADDRESS OF OUTPUT ARRAY

                           00000000  0058  7900 	.LONG	0			; UNUSED

                           00000000  005C  8000 	.LONG	0			; END-OF-LIST

                                     0060  8100 

                                     0060  8200 MAP_RANGE:				;MAP RANGE ARRAY

                           00000064  0060  8300 	.BLKL	1			; FIRST PAGE

                           1FFFFFFF  0064  8400 	.LONG	^X1FFFFFFF		; LAST PAGE

                                     0068  8500 

                                     0068  8600 

                                     0068  8700 RET_ADDR:				;MAP RANGE ARRAY RETURNED BY SYS

                           00000070  0068  8800 	.BLKL	2

                                     0070  8900 

                                     0070  9000 

LOADDRIV        - LOAD A DEVICE DRIVER                           21-AUG-1978 22:27:21   VAX-11 MACRO X0.3-11               Page   3

X01             LOAD DRIVER                                                                                                      (1)



                                     0070  9200 	.SBTTL	LOAD DRIVER

                                     0070  9300 

                                     0070  9400 ;++

                                     0070  9500 ; FUNCTIONAL DESCRIPTION:

                                     0070  9600 ;

                                     0070  9700 ;	This routine will load a device driver into the system pool

                                     0070  9800 ;	and if the same name driver was already loaded, it will

                                     0070  9900 ;	reinitialize all the control-blocks with info from the new

                                     0070 10000 ;	driver and unload the old driver.

                                     0070 10100 ;

                                     0070 10200 ; CALLING SEQUENCE:

                                     0070 10300 ;

                                     0070 10400 ;	CALL IOGEN$LOAD(FILE_NAME)

                                     0070 10500 ;

                                     0070 10600 ; INPUT PARAMETERS:

                                     0070 10700 ;

                                     0070 10800 ;	FILE_NAME(AP) = address of file name counted string

                                     0070 10900 ;

                                     0070 11000 ; IMPLICIT INPUTS:

                                     0070 11100 ;

                                     0070 11200 ;	NONE

                                     0070 11300 ;

                                     0070 11400 ; OUTPUT PARAMETERS:

                                     0070 11500 ;

                                     0070 11600 ;	IOGEN$GL_DPT = ADDR OF NEW DRIVER PROLOGUE TABLE

                                     0070 11700 ;

                                     0070 11800 ; IMPLICIT OUTPUTS:

                                     0070 11900 ;

                                     0070 12000 ;	NONE

                                     0070 12100 ;

                                     0070 12200 ; COMPLETION CODES:

                                     0070 12300 ;

                                     0070 12400 ;	R0 = STATUS OF LOAD OPERATION

                                     0070 12500 ;

                                     0070 12600 ; SIDE EFFECTS:

                                     0070 12700 ;

                                     0070 12800 ;	NONE

                                     0070 12900 ;

                                     0070 13000 ;--

                                 00000000 13100 	.PSECT	IOGEN$CODE	RD,EXE,NOWRT

                                     0000 13200 

                                     0000 13300 IOGEN$LOADDRIV::

                               0000  0000 13400 	.WORD	0

                                     0002 13500 ;

                                     0002 13600 ; OPEN THE DRIVER FILE FOR INPUT

                                     0002 13700 ;

            50         04 AC     D0  0002 13800 	MOVL	FILE_NAME(AP),R0	;GET ADDR OF FILE NAME STRING

            51       0000'CF     DE  0006 13900 	MOVAL	W^IN_FAB,R1		;GET ADDR OF INPUT FAB

         34 A1            80     90  000B 14000 	MOVB	(R0)+,FAB$B_FNS(R1)	;SET FILE NAME SIZE IN FAB

         2C A1            60     9E  000F 14100 	MOVAB	(R0),FAB$L_FNA(R1)	;SET FILE NAME ADDRESS IN FAB

                                     0013 14200 	$OPEN	(R1)			;OPEN THE FILE

            78            50     E9  001C 14300 	BLBC	R0,70$			;BR IF ERROR

                                     001F 14400 ;

                                     001F 14500 ; MAP THE INPUT FILE

                                     001F 14600 ;

                                     001F 14700 10$:	$GETJPI_S ITMLST=W^GET_NEXT_FREE ;GET ADDR OF NEXT FREE P0 PAGE

            60            50     E9  0034 14800 	BLBC	R0,70$			;BR IF ERROR

LOADDRIV        - LOAD A DEVICE DRIVER                           21-AUG-1978 22:27:21   VAX-11 MACRO X0.3-11               Page   4

X01             LOAD DRIVER                                                                                                      (1)



                                     0037 14900 	$CRMPSC_S CHAN=W^FAB$L_STV+IN_FAB,- ;MAP THE FILE

                                     0037 15000 		INADR=W^MAP_RANGE,-

                                     0037 15100 		RETADR=W^RET_ADDR,-

                                     0037 15200 		VBN=#2			; (SKIP IMAGE HEADER)

            39            50     E9  005B 15300 	BLBC	R0,70$			;BR IF ERROR

                                     005E 15400 ;

                                     005E 15500 ; CHANGE MODE TO KERNEL TO LOAD

                                     005E 15600 ;

                                     005E 15700 30$:

                                     005E 15800 	$CMKRNL_S W^LOADER,(AP)	;

                          50     DD  006B 15900 	PUSHL	R0			;SAVE STATUS

                                     006D 16000 ;

                                     006D 16100 ; DELETE THE INPUT FILE VIRTUAL ADDRESSES, DEASSIGN THE CHANNEL, AND RETURN

                                     006D 16200 ;

                                     006D 16300 40$:	$DELTVA_S W^RET_ADDR		;DELETE THE FILE SECTION PAGES

            03            50     E8  007C 16400 	BLBS	R0,50$			;BR IF SUCCESS

            6E            50     D0  007F 16500 	MOVL	R0,(SP)			;SAVE ERROR STATUS

                                     0082 16600 50$:	$DASSGN_S W^FAB$L_STV+IN_FAB	;DEASSIGN THE CHANNEL

            03            50     E8  008E 16700 	BLBS	R0,60$			;BR IF SUCCESS

            6E            50     D0  0091 16800 	MOVL	R0,(SP)			;SAVE ERROR STATUS

                          50   8ED0  0094 16900 60$:	POPL	R0			;RESTORE THE STATUS

                                     0097 17000 

                                     0097 17100 70$:

                                 04  0097 17200 	RET

                                     0098 17300 

LOADDRIV        - LOAD A DEVICE DRIVER                           21-AUG-1978 22:27:21   VAX-11 MACRO X0.3-11               Page   5

X01             LOADER - LOAD THE DRIVER                                                                                         (1)



                                     0098 17500 	.SBTTL	LOADER - LOAD THE DRIVER

                                     0098 17600 ;++

                                     0098 17700 ;

                                     0098 17800 ; LOADER - LOAD THE NEW DRIVER

                                     0098 17900 ;

                                     0098 18000 ;	Kernel mode routine to actually load the driver, initialize

                                     0098 18100 ;	any associated control blocks, and unload a previous driver.

                                     0098 18200 ;

                                     0098 18300 ; INPUTS:

                                     0098 18400 ;

                                     0098 18500 ;	RET_ADDR = ADDRESS OF MAPPED DRIVER SECTION

                                     0098 18600 ;

                                     0098 18700 ; OUTPUTS:

                                     0098 18800 ;

                                     0098 18900 ;	R0 = STATUS OF OPERATION

                                     0098 19000 ;	IOGEN$GL_DPT = ADDRESS OF NEW DRIVER PROLOGUE TABLE

                                     0098 19100 ;

                                     0098 19200 ;--

                                     0098 19300 LOADER:

                               0FFC  0098 19400 	.WORD	^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,R11>

                                     009A 19500 ;

                                     009A 19600 ; MOVE DRIVER TO NON-PAGED POOL

                                     009A 19700 ;

            59       0068'CF     D0  009A 19800 	MOVL	W^RET_ADDR,R9		;GET ADDR OF DRIVER PROLOGUE

            1E         0A A9     91  009F 19810 	CMPB	DPT$B_TYPE(R9),#DYN$C_DPT ;IS IT A VALID DRIVER PROLOGUE

                          08     13  00A3 19820 	BEQLU	5$			;BR IF YES

            50   007C8032 8F     D0  00A5 19830 	MOVL	#SYSG$_INVDPT,R0	;SET INVALID DPT ERROR

                                 04  00AC 19840 	RET				;...

                                     00AD 19850 

            51         08 A9     3C  00AD 19900 5$:	MOVZWL	DPT$W_SIZE(R9),R1	;GET SIZE OF DPT

                 00000000'GF     16  00B1 20000 	JSB	G^EXE$ALONONPAGED	;ALLOCATE NON-PAGED MEMORY

            06            50     E8  00B7 20100 	BLBS	R0,10$			;BR IF SUCCESS

            50       0000'8F     3C  00BA 20200 	MOVZWL	#SS$_INSFMEM,R0		;SET INSUFFICIENT MEMORY ERROR

                                 04  00BF 20300 	RET				;...EXIT

                                     00C0 20400 

            5A            51     7D  00C0 20500 10$:	MOVQ	R1,R10			;SAVE SIZE AND ADDR OF BUFFER

            69         08 A9     28  00C3 20600 	MOVC	DPT$W_SIZE(R9),(R9),(R11) ;MOVE DRIVER TO THE BUFFER

                          6B         00C7       

         08 AB            5A     B0  00C8 20700 	MOVW	R10,DPT$W_SIZE(R11)	;SET ACTUAL SIZE OF BUFFER

                                     00CC 20800 ;

                                     00CC 20900 ; SCAN DPT LIST TO CHECK IF DRIVER CURRENTLY LOADED

                                     00CC 21000 ;

                          FF31'  30  00CC 21100 	BSBW	IOGEN$LOCK_IODB		;LOCK THE I/O DATABASE

            59         16 AB     9E  00CF 21200 	MOVAB	DPT$T_NAME(R11),R9	;GET ADDR OF DRIVER NAME

            58            89     9A  00D3 21300 	MOVZBL	(R9)+,R8		;GET SIZE OF DRIVER NAME

            5A   00000000'GF     9E  00D6 21400 	MOVAB	G^IOC$GL_DPTLIST,R10	;GET ADDR OF DPT LIST

            54            5A     D0  00DD 21500 	MOVL	R10,R4			;SAVE IT

                                     00E0 21600 20$:

            5A            6A     D0  00E0 21700 	MOVL	DPT$L_FLINK(R10),R10	;GET ADDR OF NEXT DPT

            54            5A     D1  00E3 21800 	CMPL	R10,R4			;END OF LIST?

                          03     12  00E6 21900 	BNEQ	30$			;BR IF NOT

                          00FF   31  00E8 22000 	BRW	LINK_DPT		;ELSE NOT LOADED - JUST ADD TO LIST

            51         16 AA     9E  00EB 22100 30$:	MOVAB	DPT$T_NAME(R10),R1	;GET ADDR OF DRIVER NAME

            50            81     9A  00EF 22200 	MOVZBL	(R1)+,R0		;GET SIZE OF DRIVER NAME

            61            50     2D  00F2 22300 	CMPC5	R0,(R1),#0,R8,(R9)	;COMPARE DRIVER NAMES

            58            00         00F5       

                          69         00F7       

LOADDRIV        - LOAD A DEVICE DRIVER                           21-AUG-1978 22:27:21   VAX-11 MACRO X0.3-11               Page   6

X01             LOADER - LOAD THE DRIVER                                                                                         (1)



                          E6     12  00F8 22400 	BNEQ	20$			;BR IF NOT EQUAL

                       0B AA     95  00FA 22500 	TSTB	DPT$B_REFC(R10)		;ANY DDB'S CONNECTED TO IT?

                          03     12  00FD 22600 	BNEQ	BUSY_CHECK		;BR IF YES

                          00CB   31  00FF 22700 	BRW	UNLOAD			;ELSE - JUST UNLOAD IT

                                     0102 22800 ;

                                     0102 22900 ; SCAN DEVICE DATABASE TO CHECK THAT ANY DEVICES THAT WILL USE

                                     0102 23000 ; THE NEW DRIVER ARE NOT BUSY

                                     0102 23100 ;

                                     0102 23200 BUSY_CHECK:

                                     0102 23300 	DSBINT				;DISABLE INTERRUPTS

            56   00000000'GF     DE  0108 23400 	MOVAL	G^IOC$GL_DEVLIST,R6	;GET ADDRESS OF DEVICE LISTHEAD

            56            66     D0  010F 23500 10$:	MOVL	DDB$L_LINK(R6),R6	;GET ADDR OF NEXT DDB

                          2A     13  0112 23600 	BEQL	UNLOAD_CHK		;BR IF NONE - NONE ARE BUSY

            51         24 A6     9E  0114 23610 	MOVAB	DDB$T_DRVNAME(R6),R1	;GET ADDR OF DRIVER NAME

            50            81     9A  0118 23620 	MOVZBL	(R1)+,R0		;GET SIZE OF DRIVER NAME

            61            50     2D  011B 23630 	CMPC5	R0,(R1),#0,R8,(R9)	;DRIVER NAMES MATCH?

            58            00         011E       

                          69         0120       

                          EC     12  0121 23640 	BNEQ	10$			;BR IF NOT

            57         04 A6     D0  0123 23700 	MOVL	DDB$L_UCB(R6),R7	;GET ADDR OF FIRST UCB

                          E6     13  0127 23800 	BEQL	10$			;BR IF NONE

         58 A7            08     E0  0129 23900 20$:	BBS	#UCB$V_BSY,UCB$W_STS(R7),30$ ;BR IF DRIVER BUSY

                          08         012D       

            57         2C A7     D0  012E 24000 	MOVL	UCB$L_LINK(R7),R7	;GET ADDR OF NEXT UCB

                          DB     13  0132 24100 	BEQL	10$			;BR IF NONE

                          F3     11  0134 24200 	BRB	20$			;CONTINUE CHECKING UCB'S

                                     0136 24300 

            56       0000'8F     3C  0136 24400 30$:	MOVZWL	#SS$_DEVACTIVE,R6	;SET ERROR STATUS

                          0079   31  013B 24500 	BRW	ERROR			;...EXIT

                                     013E 24502 ;

                                     013E 24504 ; CHECK IF CURRENT DRIVER CAN BE UNLOADED

                                     013E 24506 ;

                                     013E 24508 UNLOAD_CHK:

         0D AA            02     E0  013E 24510 	BBS	#DPT$V_NOUNLOAD,DPT$B_FLAGS(R10),10$ ;BR IF NOT TO BE UNLOADED

                          16         0142       

            50         14 AA     B0  0143 24512 	MOVW	DPT$W_UNLOAD(R10),R0	;GET ADDR OF UNLOAD ACTION ROUTINE

                          1A     13  0147 24514 	BEQL	REINIT			;BR IF NONE

            50            5A     C0  0149 24516 	ADDL	R10,R0			;GET ADDR OF UNLOAD ROUTINE

                     1FC0 8F     BB  014C 24518 	PUSHR	#^M<R6,R7,R8,R9,R10,R11,AP> ;SAVE REGISTERS

                          60     16  0150 24520 	JSB	(R0)			;CALL THE UNLOAD ROUTINE

                     1FC0 8F     BA  0152 24522 	POPR	#^M<R6,R7,R8,R9,R10,R11,AP> ;RESTORE REGISTERS

            0A            50     E8  0156 24524 	BLBS	R0,REINIT		;BR IF OK TO UNLOAD

                                     0159 24526 

            56   007C8012 8F     D0  0159 24528 10$:	MOVL	#SYSG$_NOUNLOAD,R6	;SET ERROR STATUS

                          0054   31  0160 24530 	BRW	ERROR			;...EXIT

                                     0163 24600 ;

                                     0163 24700 ; RE-SCAN DDB LIST TO FIND DDB'S CONNECTED TO CURRENT DRIVER

                                     0163 24800 ; AND RE-INIT THE ASSOCIATED CONTROL BLOCKS

                                     0163 24900 ;

                                     0163 25000 REINIT:

            56   00000000'GF     DE  0163 25100 	MOVAL	G^IOC$GL_DEVLIST,R6	;GET ADDRESS OF DEVICE LIST

            56            66     D0  016A 25200 10$:	MOVL	DDB$L_LINK(R6),R6	;GET ADDR OF NEXT DDB

                          5B     13  016D 25300 	BEQL	UNLOAD_ENBINT		;BR IF NONE

            51         24 A6     9E  016F 25400 	MOVAB	DDB$T_DRVNAME(R6),R1	;GET ADDR OF DRIVER NAME

            50            81     9A  0173 25500 	MOVZBL	(R1)+,R0		;GET SIZE OF DRIVER NAME

            61            50     2D  0176 25600 	CMPC5	R0,(R1),#0,R8,(R9)	;DRIVER NAMES MATCH?

            58            00         0179       

LOADDRIV        - LOAD A DEVICE DRIVER                           21-AUG-1978 22:27:21   VAX-11 MACRO X0.3-11               Page   7

X01             LOADER - LOAD THE DRIVER                                                                                         (1)



                          69         017B       

                          EC     12  017C 25700 	BNEQ	10$			;BR IF NO

                                     017E 25800 

            54            5B     D0  017E 25900 	MOVL	R11,R4			;SET ADDR OF DPT

            55         04 A6     D0  0181 26000 	MOVL	DDB$L_UCB(R6),R5	;SET ADDR OF UCB

                 00000000'GF     16  0185 26100 20$:	JSB	G^IOC$REINITDRV		;RE-INIT DRIVER DATABASE

            11            50     E9  018B 26200 	BLBC	R0,30$			;BR IF ERROR

                       0B AA     97  018E 26300 	DECB	DPT$B_REFC(R10)		;DEC REF COUNT OF CURRENT DRIVER

                       0B AB     96  0191 26400 	INCB	DPT$B_REFC(R11)		;INC REF COUNT OF NEW DRIVER

            55         2C A5     D0  0194 26500 	MOVL	UCB$L_LINK(R5),R5	;GET ADDR OF NEXT UCB

                          EB     12  0198 26600 	BNEQ	20$			;BR IF THERE IS ONE

                          FE63'  30  019A 26602 	BSBW	IOGEN$CNTRL_INI		;RE-INIT THE CONTROLLER

                          CB     11  019D 26604 	BRB	10$			;CHECK NEXT DDB

                                     019F 26800 

            56   007C800A 8F     D0  019F 26900 30$:	MOVL	#SYSG$_INVDPTINI,R6	;SET ERROR STATUS

                          53     D7  01A6 27000 	DECL	R3			;DECREMENT INIT TABLE POINTER

            53            5B     C3  01A8 27100 	SUBL3	R11,R3,W^IOGEN$GL_DPT ;SAVE TABLE OFFSET FOR DEBUGGING

                     0000'CF         01AB       

            54            5A     D0  01AE 27200 	MOVL	R10,R4			;SET ADDR OF CURRENT UCB

                 00000000'GF     16  01B1 27300 	JSB	G^IOC$REINITDRV		;TRY TO UNDO ANY DAMAGE

                                     01B7 27400 ;

                                     01B7 27500 ; ERROR LOADING NEW DRIVER - UNLOAD IT

                                     01B7 27600 ;

                                     01B7 27700 ERROR:

                                     01B7 27800 	ENBINT				;ENABLE INTERRUPTS

            50            5B     D0  01BA 27900 	MOVL	R11,R0			;SET ADDR OF DRIVER

                 00000000'GF     16  01BD 28000 	JSB	G^EXE$DEANONPAGED	;DEALLOCATE ITS STORAGE

                          FE3A'  30  01C3 28100 	BSBW	IOGEN$UNLK_IODB		;UNLOCK THE I/O DATABASE

            50            56     D0  01C6 28200 	MOVL	R6,R0			;SET ERROR STATUS

                                 04  01C9 28300 	RET

                                     01CA 28400 

                                     01CA 28500 ;

                                     01CA 28600 ; UNLOAD CURRENTLY LOADED DRIVER

                                     01CA 28700 ;

                                     01CA 28800 UNLOAD_ENBINT:

                                     01CA 28900 	ENBINT				;RE-ENABLE INTERRUPTS

                                     01CD 29000 UNLOAD:

                       0B AA     95  01CD 29100 	TSTB	DPT$B_REFC(R10)		;ANY REFERENCES LEFT?

                          18     12  01D0 29200 	BNEQ	LINK_DPT		;BR IF YES

            5A            6A     0F  01D2 29300 	REMQUE	(R10),R10		;REMOVE DPT FROM LIST

            50   00000000'GF     9E  01D5 29400 	MOVAB	G^EXE$INIT,R0		;GET ADDR OF TOP OF EXEC

            50            5A     D1  01DC 29500 	CMPL	R10,R0			;DRIVER IN EXEC?

                          09     1F  01DF 29600 	BLSSU	LINK_DPT		;BR IF YES

            50            5A     D0  01E1 29700 	MOVL	R10,R0			;SET ADDR OF DPT

                 00000000'GF     16  01E4 29800 	JSB	G^EXE$DEANONPAGED	;DEALLOCATE BUFFER

                                     01EA 29900 ;

                                     01EA 30000 ; LINK NEW DRIVER INTO DPT LIST

                                     01EA 30100 ;

                                     01EA 30200 LINK_DPT:

   00000000'GF            6B     0E  01EA 30300 	INSQUE	(R11),G^IOC$GL_DPTLIST	;INSERT NEW DRIVER INTO DPT LIST

                          FE0C'  30  01F1 30400 	BSBW	IOGEN$UNLK_IODB		;UNLOCK THE I/O DATABASE

       0000'CF            5B     D0  01F4 30500 	MOVL	R11,W^IOGEN$GL_DPT	;SAVE ADDR OF PROLOGUE TABLE

            50            01     D0  01F9 30600 	MOVL	#1,R0			;SET SUCCESS

                                 04  01FC 30700 	RET

                                     01FD 30800 

                                     01FD 30900 	.END

LOADDRIV        - LOAD A DEVICE DRIVER                           21-AUG-1978 22:27:21   VAX-11 MACRO X0.3-11               Page   8

SYMBOL TABLE                                                                                                                     (1)



$$.TAB         = 00000000 R     03   DYN$C_KFH      = 00000026            FAB$L_JNL        00000020            

$$.TABEND      = 00000050 R     03   DYN$C_KFI      = 00000018            FAB$L_MRN        00000038            

$$.TMP         = 00020000            DYN$C_LOG      = 0000000B            FAB$L_NAM        00000028            

$$.TMP1        = 00000001            DYN$C_MTL      = 00000019            FAB$L_SDC        00000044            

$$.TMP2        = 00000061            DYN$C_MVL      = 00000016            FAB$L_STS        00000008            

$$.TMPX        = 00000000 R     04   DYN$C_NDB      = 0000001C            FAB$L_STV        0000000C            

$$.TMPX1       = 0000000F            DYN$C_NET      = 00000017            FAB$L_XAB        00000024            

$$T1           = 00000000            DYN$C_PBH      = 00000020            FAB$M_BIO      = 00000020            

BIT...         = 00000004            DYN$C_PCB      = 0000000C            FAB$M_BLK      = 00000008            

BUSY_CHECK       00000102 R     05   DYN$C_PDB      = 00000021            FAB$M_BRO      = 00000040            

DDB$B_ACPCLASS   00000013            DYN$C_PFL      = 00000023            FAB$M_CBT      = 00200000            

DDB$B_TYPE       0000000A            DYN$C_PIB      = 00000022            FAB$M_CIF      = 02000000            

DDB$C_LENGTH     00000034            DYN$C_PQB      = 0000000D            FAB$M_CR       = 00000002            

DDB$K_LENGTH     00000034            DYN$C_PTR      = 00000025            FAB$M_CTG      = 00100000            

DDB$L_ACPD       00000010            DYN$C_RVT      = 0000000E            FAB$M_DEL      = 00000004            

DDB$L_DDT        0000000C            DYN$C_SFT      = 00000024            FAB$M_DFW      = 00000020            

DDB$L_LINK       00000000            DYN$C_SSB      = 0000001D            FAB$M_DLT      = 00008000            

DDB$L_UCB        00000004            DYN$C_TQE      = 0000000F            FAB$M_DMO      = 00001000            

DDB$T_DRVNAME    00000024            DYN$C_TYPAHD   = 00000014            FAB$M_ESC      = 08000000            

DDB$T_NAME       00000014            DYN$C_UCB      = 00000010            FAB$M_EXE      = 00000080            

DDB$W_SIZE       00000008            DYN$C_VCB      = 00000011            FAB$M_FTN      = 00000001            

DPT$B_ADPTYPE    0000000C            DYN$C_WCB      = 00000012            FAB$M_GET      = 00000002            

DPT$B_FLAGS      0000000D            ERROR            000001B7 R     05   FAB$M_INP      = 00080000            

DPT$B_REFC       0000000B            EXE$ALONONPAGED  ********   X   05   FAB$M_JNL      = 00400000            

DPT$B_TYPE       0000000A            EXE$DEANONPAGED  ********   X   05   FAB$M_KFO      = 40000000            

DPT$C_LENGTH     00000022            EXE$INIT         ********   X   05   FAB$M_MSE      = 00000010            

DPT$K_LENGTH     00000022            FAB$B_BID        00000000            FAB$M_MXV      = 00000002            

DPT$L_BLINK      00000004            FAB$B_BKS        0000003E            FAB$M_NAM      = 01000000            

DPT$L_FLINK      00000000            FAB$B_BLN        00000001            FAB$M_NEF      = 00000400            

DPT$M_NOUNLOAD = 00000004            FAB$B_DNS        00000035            FAB$M_NFS      = 00010000            

DPT$M_SUBCNTRL = 00000001            FAB$B_FAC        00000016            FAB$M_NIL      = 00000020            

DPT$M_SVP      = 00000002            FAB$B_FNS        00000034            FAB$M_OFP      = 20000000            

DPT$T_NAME       00000016            FAB$B_FSZ        0000003F            FAB$M_POS      = 00000100            

DPT$V_NOUNLOAD = 00000002            FAB$B_ORG        0000001D            FAB$M_PPF      = 00040000            

DPT$V_SUBCNTRL = 00000000            FAB$B_RAT        0000001E            FAB$M_PPF_IND  = 00004000            

DPT$V_SVP      = 00000001            FAB$B_RFM        0000001F            FAB$M_PPF_RAT  = 00003FC0            

DPT$W_INITTAB    00000010            FAB$B_RTV        0000001C            FAB$M_PRN      = 00000004            

DPT$W_REINITTAB  00000012            FAB$B_SHR        00000017            FAB$M_PUT      = 00000001            

DPT$W_SIZE       00000008            FAB$C_BID      = 00000003            FAB$M_RCK      = 00800000            

DPT$W_UCBSIZE    0000000E            FAB$C_BLN        00000050            FAB$M_RWC      = 00000800            

DPT$W_UNLOAD     00000014            FAB$C_FIX      = 00000001            FAB$M_RWO      = 00000080            

DYN$C_ACB      = 00000002            FAB$C_HSH      = 00000030            FAB$M_SCF      = 00004000            

DYN$C_ADP      = 00000001            FAB$C_IDX      = 00000020            FAB$M_SHRDEL   = 00000004            

DYN$C_AQB      = 00000003            FAB$C_MAXRFM   = 00000003            FAB$M_SHRGET   = 00000002            

DYN$C_BRDCST   = 0000001A            FAB$C_REL      = 00000010            FAB$M_SHRPUT   = 00000001            

DYN$C_BUFIO    = 00000013            FAB$C_RFM_DFLT = 00000002            FAB$M_SHRUPD   = 00000008            

DYN$C_CEB      = 00000004            FAB$C_SEQ      = 00000000            FAB$M_SPL      = 00002000            

DYN$C_CRB      = 00000005            FAB$C_UDF      = 00000000            FAB$M_SQO      = 00000040            

DYN$C_CXB      = 0000001B            FAB$C_VAR      = 00000002            FAB$M_SUP      = 00000004            

DYN$C_DDB      = 00000006            FAB$C_VFC      = 00000003            FAB$M_TEF      = 10000000            

DYN$C_DPT      = 0000001E            FAB$K_BLN        00000050            FAB$M_TMD      = 00000010            

DYN$C_FCB      = 00000007            FAB$L_ALQ        00000010            FAB$M_TMP      = 00000008            

DYN$C_FRK      = 00000008            FAB$L_CTX        00000018            FAB$M_TRN      = 00000010            

DYN$C_GSD      = 00000015            FAB$L_DEV        00000040            FAB$M_UFM      = 04000000            

DYN$C_IDB      = 00000009            FAB$L_DNA        00000030            FAB$M_UFO      = 00020000            

DYN$C_IRP      = 0000000A            FAB$L_FNA        0000002C            FAB$M_UPD      = 00000008            

DYN$C_JPB      = 0000001F            FAB$L_FOP        00000004            FAB$M_UPI      = 00000040            

LOADDRIV        - LOAD A DEVICE DRIVER                           21-AUG-1978 22:27:21   VAX-11 MACRO X0.3-11               Page   9

SYMBOL TABLE                                                                                                                     (1)



FAB$M_WCK      = 00000200            FAB$W_IFI        00000002            JPI$_PGFLQUOTA = 0000040E            

FAB$S_ORG      = 00000004            FAB$W_MRS        00000036            JPI$_PID       = 00000319            

FAB$S_PPF_RAT  = 00000008            FILE_NAME      = 00000004            JPI$_PPGCNT    = 0000030D            

FAB$V_BIO      = 00000005            GBL...         = 00000000            JPI$_PRCCNT    = 0000031B            

FAB$V_BLK      = 00000003            GET_NEXT_FREE    00000050 R     03   JPI$_PRCLM     = 00000408            

FAB$V_BRO      = 00000006            IN_FAB           00000000 R     03   JPI$_PRCNAM    = 0000031C            

FAB$V_CBT      = 00000015            IOC$GL_DEVLIST   ********   X   05   JPI$_PRI       = 00000302            

FAB$V_CIF      = 00000019            IOC$GL_DPTLIST   ********   X   05   JPI$_PRIB      = 00000309            

FAB$V_CR       = 00000001            IOC$REINITDRV    ********   X   05   JPI$_PROCPRIV  = 00000204            

FAB$V_CTG      = 00000014            IOGEN$CNTRL_INI  ********   X   05   JPI$_STATE     = 00000306            

FAB$V_DEL      = 00000002            IOGEN$GL_DPT     ********   X   05   JPI$_STS       = 00000305            

FAB$V_DFW      = 00000005            IOGEN$LOADDRIV   00000000 RG    05   JPI$_TMBU      = 0000030B            

FAB$V_DLT      = 0000000F            IOGEN$LOCK_IODB  ********   X   05   JPI$_TQCNT     = 00000315            

FAB$V_DMO      = 0000000C            IOGEN$UNLK_IODB  ********   X   05   JPI$_TQLM      = 00000410            

FAB$V_ESC      = 0000001B            JPI$C_ADRTYPE  = 00000001            JPI$_UIC       = 00000304            

FAB$V_EXE      = 00000007            JPI$C_CTLTYPE  = 00000002            JPI$_USERNAME  = 00000202            

FAB$V_FTN      = 00000000            JPI$C_LISTEND  = 00000000            JPI$_VIRTPEAK  = 00000200            

FAB$V_GET      = 00000001            JPI$C_PCBTYPE  = 00000003            JPI$_VOLUMES   = 00000205            

FAB$V_INP      = 00000013            JPI$C_PHDTYPE  = 00000004            JPI$_WSAUTH    = 00000401            

FAB$V_JNL      = 00000016            JPI$_ACCOUNT   = 00000203            JPI$_WSPEAK    = 00000201            

FAB$V_KFO      = 0000001E            JPI$_APTCNT    = 0000030A            JPI$_WSQUOTA   = 00000402            

FAB$V_MSE      = 00000004            JPI$_ASTACT    = 00000300            JPI$_WSSIZE    = 00000411            

FAB$V_MXV      = 00000001            JPI$_ASTCNT    = 0000030E            LINK_DPT         000001EA R     05   

FAB$V_NAM      = 00000018            JPI$_ASTEN     = 00000301            LOADER           00000098 R     05   

FAB$V_NEF      = 0000000A            JPI$_ASTLM     = 00000409            MAP_RANGE        00000060 R     03   

FAB$V_NFS      = 00000010            JPI$_BIOCNT    = 0000030F            PR$_ACCR       = 00000029            

FAB$V_NIL      = 00000005            JPI$_BIOLM     = 00000310            PR$_ACCS       = 00000028            

FAB$V_OFP      = 0000001D            JPI$_BUFIO     = 0000040C            PR$_ASTLVL     = 00000013            

FAB$V_ORG      = 00000004            JPI$_BYTCNT    = 00000311            PR$_ESP        = 00000001            

FAB$V_POS      = 00000008            JPI$_BYTLM     = 0000031A            PR$_ICCS       = 00000018            

FAB$V_PPF      = 00000012            JPI$_CPULIM    = 0000040D            PR$_ICR        = 0000001A            

FAB$V_PPF_IND  = 0000000E            JPI$_CPUTIM    = 00000407            PR$_IPL        = 00000012            

FAB$V_PPF_RAT  = 00000006            JPI$_CURPRIV   = 00000400            PR$_ISP        = 00000004            

FAB$V_PRN      = 00000002            JPI$_DFPFC     = 00000406            PR$_KSP        = 00000000            

FAB$V_PUT      = 00000000            JPI$_DFWSCNT   = 00000403            PR$_MAPEN      = 00000038            

FAB$V_RCK      = 00000017            JPI$_DIOCNT    = 00000312            PR$_NICR       = 00000019            

FAB$V_RWC      = 0000000B            JPI$_DIOLM     = 00000313            PR$_P0BR       = 00000008            

FAB$V_RWO      = 00000007            JPI$_DIRIO     = 0000040B            PR$_P0LR       = 00000009            

FAB$V_SCF      = 0000000E            JPI$_EFCS      = 00000317            PR$_P1BR       = 0000000A            

FAB$V_SHRDEL   = 00000002            JPI$_EFCU      = 00000318            PR$_P1LR       = 0000000B            

FAB$V_SHRGET   = 00000001            JPI$_EFWM      = 00000316            PR$_PCBB       = 00000010            

FAB$V_SHRPUT   = 00000000            JPI$_EXCVEC    = 00000100            PR$_PME        = 0000003D            

FAB$V_SHRUPD   = 00000003            JPI$_FILCNT    = 00000314            PR$_RXCS       = 00000020            

FAB$V_SPL      = 0000000D            JPI$_FILLM     = 0000040F            PR$_RXDB       = 00000021            

FAB$V_SQO      = 00000006            JPI$_FINALEXC  = 00000101            PR$_SBIER      = 00000034            

FAB$V_SUP      = 00000002            JPI$_FREP0VA   = 00000404            PR$_SBIFS      = 00000030            

FAB$V_TEF      = 0000001C            JPI$_FREP1VA   = 00000405            PR$_SBIMT      = 00000033            

FAB$V_TMD      = 00000004            JPI$_GPGCNT    = 0000030C            PR$_SBIQC      = 00000036            

FAB$V_TMP      = 00000003            JPI$_GRP       = 00000308            PR$_SBIS       = 00000031            

FAB$V_TRN      = 00000004            JPI$_LASTADR   = 00000102            PR$_SBISC      = 00000032            

FAB$V_UFM      = 0000001A            JPI$_LASTCTL   = 00000207            PR$_SBITA      = 00000035            

FAB$V_UFO      = 00000011            JPI$_LASTPCB   = 0000031D            PR$_SBR        = 0000000C            

FAB$V_UPD      = 00000003            JPI$_LASTPHD   = 00000412            PR$_SCBB       = 00000011            

FAB$V_UPI      = 00000006            JPI$_LOGINTIM  = 00000206            PR$_SID        = 0000003E            

FAB$V_WCK      = 00000009            JPI$_MEM       = 00000307            PR$_SIRR       = 00000014            

FAB$W_BLS        0000003C            JPI$_OWNER     = 00000303            PR$_SISR       = 00000015            

FAB$W_DEQ        00000014            JPI$_PAGEFLTS  = 0000040A            PR$_SLR        = 0000000D            

LOADDRIV        - LOAD A DEVICE DRIVER                           21-AUG-1978 22:27:21   VAX-11 MACRO X0.3-11               Page  10

SYMBOL TABLE                                                                                                                     (1)



PR$_SSP        = 00000002            UCB$L_CRB        00000020            UCB$M_TT_TIMO  = 00000002            

PR$_TBIA       = 00000039            UCB$L_DDB        00000024            UCB$M_UNLOAD   = 00001000            

PR$_TBIS       = 0000003A            UCB$L_DEVCHAR    00000034            UCB$M_VALID    = 00000800            

PR$_TODR       = 0000001B            UCB$L_DEVDEPEND  0000003C            UCB$S_LNKPRI   = 00000002            

PR$_TXCS       = 00000022            UCB$L_DPC        00000080            UCB$S_LTYPE    = 00000002            

PR$_TXDB       = 00000023            UCB$L_DUETIM     0000005C            UCB$T_PARTNER    0000000C            

PR$_USP        = 00000003            UCB$L_DX_BFPNT   0000009C            UCB$V_BACKP    = 00000005            

PR$_WCSA       = 0000002C            UCB$L_DX_BUF     00000098            UCB$V_BSY      = 00000008            

PR$_WCSD       = 0000002D            UCB$L_DX_RXDB    000000A0            UCB$V_CANCEL   = 00000003            

REINIT           00000163 R     05   UCB$L_EMB        00000078            UCB$V_DEADMO   = 0000000A            

RET_ADDR         00000068 R     03   UCB$L_FIRST      00000014            UCB$V_DELMBX   = 00000001            

SS$_DEVACTIVE    ********   X   05   UCB$L_FPC        0000000C            UCB$V_DIAGBUF  = 00000001            

SS$_INSFMEM      ********   X   05   UCB$L_FQBL       00000004            UCB$V_DX_WRITE = 00000003            

SYS$CMKRNL       ********   X   05   UCB$L_FQFL       00000000            UCB$V_ECC      = 00000000            

SYS$CRMPSC       ********   X   05   UCB$L_FR3        00000010            UCB$V_ERLOGIP  = 00000002            

SYS$DASSGN       ********   X   05   UCB$L_FR4        00000014            UCB$V_INT      = 00000001            

SYS$DELTVA       ********   X   05   UCB$L_IOQBL      00000044            UCB$V_INTTYPE  = 00000007            

SYS$GETJPI       ********   X   05   UCB$L_IOQFL      00000040            UCB$V_JOB      = 00000000            

SYS$OPEN         ********  GX   05   UCB$L_IRP        0000004C            UCB$V_LNKPRI   = 00000006            

SYSG$_INVDPT   = 007C8032            UCB$L_LINK       0000002C            UCB$V_LTYPE    = 00000000            

SYSG$_INVDPTINI= 007C800A            UCB$L_LOGADR     00000064            UCB$V_MOUNTING = 00000009            

SYSG$_INVVEC   = 007C802A            UCB$L_MAXBLOCK   00000084            UCB$V_MSGACK   = 00000004            

SYSG$_NOUNLOAD = 007C8012            UCB$L_MEDIA      0000008C            UCB$V_MSGFLO   = 00000003            

SYSG$_SPTFULL  = 007C8022            UCB$L_NT_DATSSB  00000074            UCB$V_NOCNVRT  = 00000002            

SYSG$_VECINUSE = 007C801A            UCB$L_NT_INTSSB  00000078            UCB$V_NT_BFROVF= 00000002            

SYSGN$_FACILITY= 0000007C            UCB$L_OPCNT      00000060            UCB$V_NT_BREAK = 00000005            

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

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

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

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

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

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

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

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

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

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

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

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

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            

LOADDRIV        - LOAD A DEVICE DRIVER                           21-AUG-1978 22:27:21   VAX-11 MACRO X0.3-11               Page  11

SYMBOL TABLE                                                                                                                     (1)



UCB$W_MSGMAX     00000014            

UCB$W_NT_CHAN    0000007C            

UCB$W_OFFSET     0000008A            

UCB$W_REFC       00000050            

UCB$W_SIZE       00000008            

UCB$W_SRCADDR    0000001A            

UCB$W_STS        00000058            

UCB$W_UNIT       00000048            

UCB$W_VPROT      0000001A            

UNLOAD           000001CD R     05   

UNLOAD_CHK       0000013E R     05   

UNLOAD_ENBINT    000001CA R     05   





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  

IOGEN$DATA       00000070      03     NOPIC   USR   CON   REL   LCL NOSHR NOEXE   RD    WRT BYTE  

$RMSNAM          0000000F      04     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

IOGEN$CODE       000001FD      05     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

7568. BYTES LEFT IN FREE MEMORY POOL.

2226. BYTES OF RECLAIMED MEMORY.

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

26 MLB DIR RDS - 990 GETS TO DEFINE 37 MACROS. 62 INTER. FILE WRITES. 

