

; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 1

; Digital Equipment Corporation

;

;	0001	MODULE MOUDK2 (

;	0002			LANGUAGE (BLISS32),

;	0003			IDENT = 'X0015'

;	0004			) =

;	0005	BEGIN

;	0006	

;	0007	!

;	0008	! Copyright (c) 1977

;	0009	! Digital Equipment Corporation, Maynard, Massachusetts 01754

;	0010	!

;	0011	! This software is furnished  under a license for use only on a single

;	0012	! computer  system and  may be  copied only with  the inclusion of the

;	0013	! above copyright notice.  This software, or any other copies thereof,

;	0014	! may not be provided or  otherwise made available to any other person

;	0015	! except for use on such system and to one who agrees to these license

;	0016	! terms.  Title to and  ownership of the  software  shall at all times

;	0017	! remain in DEC.

;	0018	!

;	0019	! The information in this software is subject to change without notice

;	0020	! and should  not be construed  as a commitment  by Digital  Equipment

;	0021	! Corporation.

;	0022	!

;	0023	! DEC assumes  no  responsibility  for  the use or  reliability of its

;	0024	! software on equipment which is not supplied by DEC.

;	0025	

;	0026	!++

;	0027	!

;	0028	! FACILITY:  MOUNT Utility Structure Level 2

;	0029	!

;	0030	! ABSTRACT:

;	0031	!

;	0032	!	This routine performs all of the mechanics of mounting a disk,

;	0033	!	given as input the parsed and partially validated command line.

;	0034	!

;	0035	! ENVIRONMENT:

;	0036	!

;	0037	!	STARLET operating system, including privileged system services

;	0038	!	and internal exec routines.

;	0039	!

;	0040	!--

;	0041	!

;	0042	!

;	0043	! AUTHOR:  Andrew C. Goldstein,	 CREATION DATE:  17-Oct-1977  17:41

;	0044	!

;	0045	! REVISION HISTORY:

;	0046	!

;	0047	!   Andrew C. Goldstein, 21-Nov-1977  15:58

;	0048	!   X0002 - Modify for files-11 structure level 2

;	0049	!

;	0050	!   Andrew C. Goldstein, 22-Dec-1977  14:22

;	0051	!   X0003 - File ID interface changes

;	0052	!

;	0053	!   Andrew C. Goldstein, 22-Dec-1977  14:41

;	0054	!   X0004 - Enable deallocation of shared devices

;	0055	!



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 1-1

; Digital Equipment Corporation

;

;	0056	!   Andrew C. Goldstein, 17-Jan-1978  1:38

;	0057	!   X0005 - Set reserved file count in VCB

;	0058	!

;	0059	!   Andrew C. Goldstein, 2-Feb-1978  16:50

;	0060	!   X0006 - Fix up index file EOF with highest file number

;	0061	!

;	0062	!   Andrew C. Goldstein, 12-Feb-1978  15:49

;	0063	!   X0007 - Make volume owner UIC of mounter on foreign mount

;	0064	!

;	0065	!   Andrew C. Goldstein, 21-Feb-1978  13:28

;	0066	!   X0008 - Add /DATACHECK switch

;	0067	!

;	0068	!   Andrew C. Goldstein, 11-May-78  14:09

;	0069	!   X0009 - Use values from SYSPARAM

;	0070	!

;	0071	!   Andrew C. Goldstein, 16-May-78  16:27

;	0072	!   X0010 - Set UNLOAD bit in UCB

;	0073	!

;	0074	!   Andrew C. Goldstein, 20-Jun-78  22:48

;	0075	!   X0011 - Add warning and informational messages

;	0076	!

;	0077	!   Andrew C. Goldstein, 26-Jun-78  14:14

;	0078	!   X0012 - Add error log entry on mount

;	0079	!

;	0080	!   Andrew C. Goldstein, 18-Jul-78  21:46

;	0081	!   X0013 - Use given volume label on foreign mount

;	0082	!

;	0083	!   Andrew C. Goldstein, 19-Jul-78  17:15

;	0084	!   X0014 - Fix ownership check on protection override

;	0085	!

;	0086	!   Andrew C. Goldstein, 17-Aug-78  15:50

;	0087	!   X0015 - Lock volume on bad primary index file header

;	0088	!

;	0089	!**

;	0090	

;	0091	

;	0092	LIBRARY 'SYS$LIBRARY:LIB.L32';

;	0093	REQUIRE 'SRC$:MOUDEF.B32';

;	0400	REQUIRE 'LIBD$:[VMSLIB.OBJ]MOUNTMSG.B32';

;	0500	

;	0501	

;	0502	FORWARD ROUTINE

;	0503		MOUNT_DISK2	: NOVALUE,	! main disk mounting routine

;	0504		MAKE_DISK_MOUNT,		! kernel mode mount routine

;	0505		SET_DATACHECK	: NOVALUE,	! set volume data check attributes

;	0506		KERNEL_HANDLER	: NOVALUE;	! kernel mode condition handler



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 2

; Digital Equipment Corporation

;

;	0507	!+

;	0508	!

;	0509	! Own storage for this module.

;	0510	!

;	0511	!-

;	0512	

;	0513	LITERAL

;	0514		WINDOW_SIZE	= 30*6;		! maximum index file window size

;	0515	

;	0516	OWN

;	0517		BUFFER		: BBLOCK [512],		! buffer for disk blocks

;	0518		PROTO_VCB	: BBLOCK [VCB$C_LENGTH], ! prototype VCB

;	0519		PROTO_FCB	: BBLOCK [FCB$C_LENGTH], ! prototype index file FCB

;	0520		PROTO_WCB	: BBLOCK [WCB$C_LENGTH+WINDOW_SIZE],

;	0521							! prototype index file window

;	0522		SYSEXV		: VECTOR [2],		! place to save system vectors

;	0523		VOLUME_UIC;				! owner UIC of volume



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 3

; Digital Equipment Corporation

;

;	0524	GLOBAL ROUTINE MOUNT_DISK2 : NOVALUE =

;	0525	

;	0526	!++

;	0527	!

;	0528	! FUNCTIONAL DESCRIPTION:

;	0529	!

;	0530	!	This routine performs all of the mechanics of mounting a structure

;	0531	!	level 2 disk, given as input the parsed and partially validated

;	0532	!	command line.

;	0533	!

;	0534	!

;	0535	! CALLING SEQUENCE:

;	0536	!	MOUNT_DISK ()

;	0537	!

;	0538	! INPUT PARAMETERS:

;	0539	!	NONE

;	0540	!

;	0541	! IMPLICIT INPUTS:

;	0542	!	MOUNT parser data base

;	0543	!	CHANNEL: channel number for I/O

;	0544	!	HOME_BLOCK: buffer containing volume home block

;	0545	!	HOMEBLOCK_LBN: LBN of home block

;	0546	!

;	0547	! OUTPUT PARAMETERS:

;	0548	!	NONE

;	0549	!

;	0550	! IMPLICIT OUTPUTS:

;	0551	!	NONE

;	0552	!

;	0553	! ROUTINE VALUE:

;	0554	!	NONE

;	0555	!

;	0556	! SIDE EFFECTS:

;	0557	!	volume mounted: VCB, etc., created, ACP started

;	0558	!

;	0559	!--

;	0560	

;	0561	BEGIN

;	0562	

;	0563	BUILTIN

;	0564		ROT,

;	0565		FFS,

;	0566		FFC;

;	0567	

;	0568	LINKAGE

;	0569		L_MAP_POINTER	= JSB :

;	0570				GLOBAL (COUNT = 6, LBN = 7, MAP_POINTER = 8);

;	0571	

;	0572	LABEL

;	0573		IDX_SCAN;			! index file bitmap scan loop

;	0574	

;	0575	GLOBAL REGISTER

;	0576		COUNT		= 6,		! number of blocks in storage map

;	0577		LBN		= 7,		! current LBN in use

;	0578		MAP_POINTER	= 8 : REF BBLOCK; ! pointer to scan map pointers



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 3-1

; Digital Equipment Corporation

;

;	0579	

;	0580	LOCAL

;	0581		PROCESS_UIC,			! UIC of this process

;	0582		PRIVILEGE_MASK	: REF BBLOCK,	! address of process privilege mask

;	0583		P,				! random pointer

;	0584		C,				! string count

;	0585		STATUS,				! utility status word

;	0586		IDX_EOF,			! end of file on index file

;	0587		FREE,				! number of free blocks on volume

;	0588		X,				! longword of bitmap

;	0589		B1,				! start point of bit scan

;	0590		B2;				! end point of bit scan

;	0591	

;	0592	EXTERNAL

;	0593		MOUNT_OPTIONS	: BITVECTOR,	! command option flags

;	0594		DEVICE_CHAR	: BBLOCK,	! device characteristics

;	0595		DEVICE_TABLE	: BBLOCKVECTOR [,DVT_LENGTH],

;	0596						! device data table

;	0597		DEV_INDEX,			! location of current device in table

;	0598		USER_STATUS,			! status return from some routines

;	0599		LABEL_STRING	: VECTOR,	! volume label string in command

;	0600		PHYS_NAME	: VECTOR,	! descriptor of physical device name

;	0601		DEVICE_COUNT,			! number of device specified

;	0602		DRIVE_COUNT	: VECTOR,	! number of drives per device

;	0603		WINDOW,				! command specified window size

;	0604		ACCESSED,			! command specified LRU limit

;	0605		EXTENSION,			! command specified default file extend

;	0606		HOME_BLOCK	: BBLOCK,	! buffer containing volume home block

;	0607		HOMEBLOCK_LBN,			! LBN of home block

;	0608		HEADER_LBN,			! LBN of current file header

;	0609		CURRENT_VCB	: REF BBLOCK,	! address of VCB being built

;	0610		CTL$GL_PHD	: REF BBLOCK ADDRESSING_MODE (ABSOLUTE),

;	0611						! vector page pointer to process header

;	0612		ACP$GB_WINDOW	: BYTE ADDRESSING_MODE (ABSOLUTE),

;	0613						! default window size for /SYSTEM

;	0614		ACP$GW_SYSACC	: WORD	ADDRESSING_MODE (ABSOLUTE);

;	0615						! default LRU limit for /SYSTEM

;	0616	

;	0617	EXTERNAL ROUTINE

;	0618		GET_UIC,			! get UIC of process

;	0619		CHECK_HEADER2,			! verify file header

;	0620		READ_BLOCK,			! read a block from the disk

;	0621		INIT_FCB2,			! initialize FCB

;	0622		TURN_WINDOW2,			! initialize window

;	0623		LEFT_ONE,			! leftmost one bit of value

;	0624		GET_MAP_POINTER	: L_MAP_POINTER; ! get value of file map pointer

;	0625	

;	0626	

;	0627	! For maximum safety, we do as much setup work in user mode as possible. We

;	0628	! read all of the disk blocks (index file and storage map headers and the

;	0629	! storage map) in user mode so that the program is abortable in case something

;	0630	! hangs. Prototype control blocks are built in local storage and are copied

;	0631	! into the system pool by the kernel mode routine.

;	0632	!

;	0633	! Get the process UIC and the volume owner UIC. Make the privilege checks



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 3-2

; Digital Equipment Corporation

;

;	0634	! for overriding volume protection and options requiring operator privilege.

;	0635	!

;	0636	

;	0637	IF .DEVICE_COUNT NEQ 1 OR .DRIVE_COUNT[0] GTR 1

;	0638	THEN ERR_EXIT (MOUN$_DEVICES);

;	0639	

;	0640	PROCESS_UIC = KERNEL_CALL (GET_UIC);

;	0641	PRIVILEGE_MASK = CTL$GL_PHD[PHD$Q_PRIVMSK];

;	0642	VOLUME_UIC = 0;

;	0643	IF .MOUNT_OPTIONS[OPT_IS_FILES11]

;	0644	THEN VOLUME_UIC = .HOME_BLOCK[HM2$L_VOLOWNER];

;	0645	

;	0646	IF  (

;	0647	    .MOUNT_OPTIONS[OPT_OVR_PRO]

;	0648	    AND NOT (.PRIVILEGE_MASK[PRV$V_VOLPRO]

;	0649			OR .VOLUME_UIC EQL 0

;	0650			OR .VOLUME_UIC EQL .PROCESS_UIC)

;	0651	    )

;	0652	

;	0653	OR  (

;	0654	    (  .MOUNT_OPTIONS[OPT_WINDOW]

;	0655	    OR .MOUNT_OPTIONS[OPT_ACCESSED]

;	0656	    OR .MOUNT_OPTIONS[OPT_UNIQUEACP]

;	0657	    OR .MOUNT_OPTIONS[OPT_SAMEACP]

;	0658	    OR .MOUNT_OPTIONS[OPT_FILEACP]

;	0659	    )

;	0660	    AND NOT .PRIVILEGE_MASK[PRV$V_OPER]

;	0661	    )

;	0662	

;	0663	OR  (

;	0664	    .MOUNT_OPTIONS[OPT_GROUP]

;	0665	    AND NOT .PRIVILEGE_MASK [PRV$V_GRPNAM]

;	0666	    )

;	0667	

;	0668	OR  (

;	0669	    .MOUNT_OPTIONS[OPT_SYSTEM]

;	0670	    AND NOT .PRIVILEGE_MASK [PRV$V_SYSNAM]

;	0671	    )

;	0672	

;	0673	THEN ERR_EXIT (SS$_NOPRIV);

;	0674	

;	0675	IF .MOUNT_OPTIONS[OPT_FOREIGN]

;	0676	THEN VOLUME_UIC = .PROCESS_UIC;

;	0677	

;	0678	! First fill in the prototype VCB from the data in the home block.

;	0679	!

;	0680	

;	0681	CURRENT_VCB = PROTO_VCB;		! pointer used by CHECK_HEADER2

;	0682	CH$FILL (0, VCB$C_LENGTH, PROTO_VCB);	! init to zero

;	0683	PROTO_VCB[VCB$W_TRANS] = 1;		! transaction count

;	0684	PROTO_VCB[VCB$W_MCOUNT] = 1;		! mount count

;	0685	

;	0686	IF .MOUNT_OPTIONS[OPT_GROUP]

;	0687	THEN PROTO_VCB[VCB$V_GROUP] = 1;

;	0688	IF .MOUNT_OPTIONS[OPT_SYSTEM]



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 3-3

; Digital Equipment Corporation

;

;	0689	THEN PROTO_VCB[VCB$V_SYSTEM] = 1;

;	0690	

;	0691	IF .MOUNT_OPTIONS[OPT_IS_FILES11]

;	0692	AND NOT (.MOUNT_OPTIONS[OPT_FOREIGN] AND .MOUNT_OPTIONS[OPT_LABEL])

;	0693	THEN

;	0694						! volume label, blank filled

;	0695	    CH$MOVE (HM2$S_VOLNAME, HOME_BLOCK[HM2$T_VOLNAME], PROTO_VCB[VCB$T_VOLNAME])

;	0696	ELSE

;	0697	    CH$COPY (.LABEL_STRING[0], .LABEL_STRING[1], ' ',

;	0698		     VCB$S_VOLNAME, PROTO_VCB[VCB$T_VOLNAME]);

;	0699	

;	0700	IF NOT .MOUNT_OPTIONS[OPT_FOREIGN]

;	0701	THEN

;	0702	    BEGIN

;	0703	    PROTO_VCB[VCB$L_HOMELBN] = .HOMEBLOCK_LBN; ! home block LBN

;	0704	    PROTO_VCB[VCB$L_HOME2LBN] = .HOME_BLOCK[HM2$L_ALHOMELBN];

;	0705	

;	0706	    IF .PROTO_VCB[VCB$L_HOMELBN] EQL .PROTO_VCB[VCB$L_HOME2LBN]

;	0707	    THEN

;	0708		BEGIN

;	0709		PROTO_VCB[VCB$V_HOMBLKBAD] = 1;

;	0710		ERR_MESSAGE (MOUN$_HOMBLKBAD);

;	0711		END;

;	0712	

;	0713						! index file bitmap LBN

;	0714	    PROTO_VCB[VCB$L_IBMAPLBN] = .HOME_BLOCK[HM2$L_IBMAPLBN];

;	0715	    PROTO_VCB[VCB$L_IXHDR2LBN] = .HOME_BLOCK[HM2$L_ALTIDXLBN];

;	0716						! volume cluster factor

;	0717	    PROTO_VCB[VCB$W_CLUSTER] = .HOME_BLOCK[HM2$W_CLUSTER];

;	0718						! default window size

;	0719	    PROTO_VCB[VCB$B_WINDOW] = .HOME_BLOCK[HM2$B_WINDOW];

;	0720	    IF .PROTO_VCB[VCB$B_WINDOW] EQL 0

;	0721	    THEN PROTO_VCB[VCB$B_WINDOW] = 7;

;	0722	    IF .MOUNT_OPTIONS[OPT_SYSTEM]

;	0723	    THEN PROTO_VCB[VCB$B_WINDOW] = .ACP$GB_WINDOW;

;	0724	    IF .MOUNT_OPTIONS[OPT_WINDOW]

;	0725	    THEN PROTO_VCB[VCB$B_WINDOW] = .WINDOW;

;	0726						! directory LRU limit

;	0727	    PROTO_VCB[VCB$B_LRU_LIM] = .HOME_BLOCK[HM2$B_LRU_LIM];

;	0728	    IF .MOUNT_OPTIONS[OPT_SYSTEM]

;	0729	    THEN PROTO_VCB[VCB$B_LRU_LIM] = .ACP$GW_SYSACC;

;	0730	    IF .MOUNT_OPTIONS[OPT_ACCESSED]

;	0731	    THEN PROTO_VCB[VCB$B_LRU_LIM] = .ACCESSED;

;	0732						! default file extend

;	0733	    PROTO_VCB[VCB$W_EXTEND] = .HOME_BLOCK[HM2$W_EXTEND];

;	0734	    IF .PROTO_VCB[VCB$W_EXTEND] EQL 0

;	0735	    THEN PROTO_VCB[VCB$W_EXTEND] = 5;

;	0736	    IF .MOUNT_OPTIONS[OPT_EXTENSION]

;	0737	    THEN PROTO_VCB[VCB$W_EXTEND] = .EXTENSION;

;	0738						! index file bitmap size

;	0739	    PROTO_VCB[VCB$B_IBMAPSIZE] = .HOME_BLOCK[HM2$W_IBMAPSIZE];

;	0740	    IF .HOME_BLOCK[HM2$W_IBMAPSIZE] GTRU 255

;	0741	    THEN ERR_EXIT (SS$_FILESTRUCT);

;	0742						! maximum number of files

;	0743	    PROTO_VCB[VCB$L_MAXFILES] = .HOME_BLOCK[HM2$L_MAXFILES];



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 3-4

; Digital Equipment Corporation

;

;	0744	    IF .HOME_BLOCK[HM2$L_MAXFILES] GTRU 255^12

;	0745	    THEN ERR_EXIT (SS$_FILESTRUCT);

;	0746	

;	0747	    PROTO_VCB[VCB$B_RESFILES] = .HOME_BLOCK[HM2$W_RESFILES];

;	0748	    IF .HOME_BLOCK[HM2$W_RESFILES] GTRU 255

;	0749	    THEN ERR_EXIT (SS$_FILESTRUCT);

;	0750	

;	0751	! Now read the index file header, verify it, and initialize the prototype

;	0752	! index file FCB. If the primary header is no good, try for the secondary.

;	0753	!

;	0754	

;	0755	    HEADER_LBN = .PROTO_VCB[VCB$L_IBMAPLBN] + .PROTO_VCB[VCB$B_IBMAPSIZE];

;	0756	    STATUS = READ_BLOCK (.HEADER_LBN, BUFFER);

;	0757	    IF NOT .STATUS OR NOT CHECK_HEADER2 (BUFFER, UPLIT WORD (1, 1, 0))

;	0758	    THEN

;	0759		BEGIN

;	0760		USER_STATUS = 1;

;	0761		PROTO_VCB[VCB$V_IDXHDRBAD] = 1;

;	0762		PROTO_VCB[VCB$V_NOALLOC] = 1;

;	0763		ERR_MESSAGE (MOUN$_IDXHDRBAD);

;	0764		HEADER_LBN = .PROTO_VCB[VCB$L_IXHDR2LBN];

;	0765		STATUS = READ_BLOCK (.HEADER_LBN, BUFFER);

;	0766		END;

;	0767	    IF NOT .STATUS THEN ERR_EXIT (.STATUS);

;	0768	    IF NOT CHECK_HEADER2 (BUFFER, UPLIT WORD (1, 1, 0)) THEN ERR_EXIT ();

;	0769	

;	0770	    CH$FILL (0, FCB$C_LENGTH, PROTO_FCB);

;	0771	    PROTO_FCB[FCB$L_STVBN] = 1;

;	0772	    INIT_FCB2 (PROTO_FCB, BUFFER);

;	0773	    PROTO_FCB[FCB$W_ACNT] = 1;

;	0774	    IF NOT .MOUNT_OPTIONS[OPT_UNLOCK]

;	0775	    THEN PROTO_FCB[FCB$W_LCNT] = 1;

;	0776	

;	0777	! Build the prototype index file window.

;	0778	!

;	0779	

;	0780	    CH$FILL (0, WCB$C_LENGTH, PROTO_WCB);

;	0781	    PROTO_WCB[WCB$W_SIZE] = WCB$C_LENGTH + WINDOW_SIZE;

;	0782	    PROTO_WCB[WCB$V_READ] = 1;

;	0783	    IF NOT .MOUNT_OPTIONS[OPT_UNLOCK]

;	0784	    THEN PROTO_WCB[WCB$V_NOWRITE] = 1;

;	0785	    TURN_WINDOW2 (PROTO_WCB, BUFFER, 3, 1);

;	0786	

;	0787	! Scan the index file bitmap from the end backwards looking for the highest

;	0788	! file number. Compute its index file VBN and check against the index file

;	0789	! EOF. If the EOF is short, set the EOF delta high so that the first create

;	0790	! will update the index file header.

;	0791	!

;	0792	

;	0793	    IDX_SCAN: BEGIN

;	0794	    DECR J FROM .PROTO_VCB[VCB$B_IBMAPSIZE] - 1 TO 0

;	0795	    DO

;	0796		BEGIN

;	0797		MAP BUFFER : VECTOR;

;	0798		STATUS = READ_BLOCK (.PROTO_VCB[VCB$L_IBMAPLBN] + .J, BUFFER);



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 3-5

; Digital Equipment Corporation

;

;	0799		IF NOT .STATUS

;	0800		THEN

;	0801		    BEGIN

;	0802		    ERR_MESSAGE (MOUN$_IDXMAPERR, 0, .STATUS);

;	0803		    PROTO_VCB[VCB$V_NOALLOC] = 1;

;	0804		    IDX_EOF = 0;

;	0805		    LEAVE IDX_SCAN;

;	0806		    END;

;	0807	

;	0808		DECR I FROM 127 TO 0

;	0809		DO

;	0810		    BEGIN

;	0811		    IF .BUFFER[.I] NEQ 0

;	0812		    THEN

;	0813			BEGIN

;	0814			IDX_EOF = .J*4096 + .I*32 + LEFT_ONE (.BUFFER[.I])

;	0815				+ .PROTO_VCB[VCB$B_IBMAPSIZE] + .PROTO_VCB[VCB$W_CLUSTER]*4;

;	0816			LEAVE IDX_SCAN;

;	0817			END;

;	0818		    END;

;	0819		END;

;	0820	    END;				! end of block IDX_SCAN

;	0821	

;	0822	    IF .IDX_EOF GTRU .PROTO_FCB[FCB$L_EFBLK]

;	0823	    THEN

;	0824		BEGIN

;	0825		PROTO_FCB[FCB$L_EFBLK] = .IDX_EOF;

;	0826		PROTO_VCB[VCB$B_EOFDELTA] = 250;

;	0827		END;

;	0828	

;	0829	! Now read the storage map file header and find the starting LBN of the

;	0830	! storage map. Note that we skip the "storage control block", which is the

;	0831	! first block of the file. Note that the storage map size is computed from

;	0832	! the volume size and cluster factor, since the storage map file is rounded

;	0833	! up the the next cluster boundary.

;	0834	!

;	0835	

;	0836	    STATUS = READ_BLOCK (.PROTO_VCB[VCB$L_IBMAPLBN] + .PROTO_VCB[VCB$B_IBMAPSIZE] + 1, BUFFER);

;	0837	    IF NOT .STATUS OR NOT CHECK_HEADER2 (BUFFER, UPLIT WORD (2, 2, 0))

;	0838	    THEN

;	0839		BEGIN

;	0840		ERR_MESSAGE (MOUN$_MAPHDRBAD);

;	0841		PROTO_VCB[VCB$V_NOALLOC] = 1;

;	0842		END

;	0843	

;	0844	    ELSE

;	0845		BEGIN

;	0846		MAP_POINTER = BUFFER + .BUFFER[FH2$B_MPOFFSET]*2;

;	0847		GET_MAP_POINTER ();

;	0848		LBN = .LBN + 1;

;	0849		COUNT = ((.DEVICE_TABLE[.DEV_INDEX, DVT_VOLSIZE] + .PROTO_VCB[VCB$W_CLUSTER] - 1)

;	0850		  	/ .PROTO_VCB[VCB$W_CLUSTER] + 4095) / 4096;

;	0851		IF .COUNT GTRU 255

;	0852		THEN ERR_EXIT (SS$_FILESTRUCT);

;	0853	



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 3-6

; Digital Equipment Corporation

;

;	0854		PROTO_VCB[VCB$L_SBMAPLBN] = .LBN;

;	0855		PROTO_VCB[VCB$B_SBMAPSIZE] = .COUNT;

;	0856	

;	0857	! Scan the storage map to compute the number of free blocks on the volume.

;	0858	!

;	0859	

;	0860		FREE = 0;

;	0861		DECR J FROM .COUNT TO 1 DO

;	0862		    BEGIN

;	0863		    MAP BUFFER : VECTOR;

;	0864	

;	0865		    STATUS = READ_BLOCK (.LBN, BUFFER);

;	0866		    IF NOT .STATUS

;	0867		    THEN

;	0868			BEGIN

;	0869			ERR_MESSAGE (MOUN$_BITMAPERR, 0, .STATUS);

;	0870			PROTO_VCB[VCB$V_NOALLOC] = 1;

;	0871			FREE = 0;

;	0872			EXITLOOP;

;	0873			END;

;	0874	

;	0875		    INCR I FROM 0 TO 127 DO

;	0876			BEGIN

;	0877			X = .BUFFER[.I];

;	0878			IF .X NEQ 0

;	0879			THEN

;	0880			    BEGIN

;	0881			    B2 = 0;

;	0882			    WHILE 1 DO

;	0883				BEGIN

;	0884				IF FFS (B2, %REF (32-.B2), X, B1)

;	0885				THEN EXITLOOP;

;	0886				FFC (B1, %REF (32-.B1), X, B2);

;	0887				FREE = .FREE + .B2 - .B1;

;	0888				IF .B2 GEQ 32 THEN EXITLOOP;

;	0889				END;

;	0890			    END;

;	0891			END;

;	0892		    LBN = .LBN + 1;

;	0893		    END;

;	0894	

;	0895		PROTO_VCB[VCB$L_FREE] = .FREE * .PROTO_VCB[VCB$W_CLUSTER];

;	0896		END;

;	0897	

;	0898	    END;				! end of Files-11 specific mount processing

;	0899	

;	0900	! Finally call the kernel mode routine to make it all real. Note that all the

;	0901	! hookups, including generating the mounted volume list entry, are done

;	0902	! within one kernel mode call so that they are uninterruptible by the user.

;	0903	!

;	0904	

;	0905	STATUS = KERNEL_CALL (MAKE_DISK_MOUNT);

;	0906	IF NOT .STATUS THEN ERR_EXIT (.STATUS);

;	0907	

;	0908	! Announce that the volume is mounted.



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 3-7

; Digital Equipment Corporation

;

;	0909	!

;	0910	

;	0911	ERR_MESSAGE (MOUN$_MOUNTED, 3, VCB$S_VOLNAME, PROTO_VCB[VCB$T_VOLNAME], PHYS_NAME[0]);

;	0912	

;	0913	END;					! end of routine MOUNT_DISK2





							    .TITLE  MOUDK2

							    .IDENT  \X0015\



							    .PSECT  $PLIT$,NOWRT,NOEXE,2



					      00000 P.AAA:  .WORD   1, 1, 0						      ;

					      00006	    .BLKB   2

					      00008 P.AAB:  .WORD   1, 1, 0						      ;

					      0000E	    .BLKB   2

					      00010 P.AAC:  .WORD   2, 2, 0						      ;

					      00016	    .BLKB   2



							    .PSECT  $OWN$,NOEXE,2



					      00000 BUFFER: .BLKB   512

					      00200 PROTO_VCB:

							    .BLKB   84

					      00254 PROTO_FCB:

							    .BLKB   72

					      0029C PROTO_WCB:

							    .BLKB   216

					      00374 SYSEXV: .BLKB   8

					      0037C VOLUME_UIC:

							    .BLKB   4



							    .GLOBL  MOUNT_OPTIONS, DEVICE_CHAR, DEVICE_TABLE, DEV_INDEX

							    .GLOBL  USER_STATUS, LABEL_STRING, PHYS_NAME, DEVICE_COUNT

							    .GLOBL  DRIVE_COUNT, WINDOW, ACCESSED, EXTENSION, HOME_BLOCK

							    .GLOBL  HOMEBLOCK_LBN, HEADER_LBN, CURRENT_VCB, CTL$GL_PHD

							    .GLOBL  ACP$GB_WINDOW, ACP$GW_SYSACC, GET_UIC, CHECK_HEADER2

							    .GLOBL  READ_BLOCK, INIT_FCB2, TURN_WINDOW2, LEFT_ONE

							    .GLOBL  GET_MAP_POINTER, SYS$CMKRNL



							    .PSECT  $CODE$,NOWRT,2



					 0FFC 00000 	    .ENTRY  MOUNT_DISK2, Save R2,R3,R4,R5,R6,R7,R8,R9,R10,R11	      ; 0524

		         5A	0000G  CF  9E 00002 	    MOVAB   MOUNT_OPTIONS, R10					      ;

		         5B	0000'  CF  9E 00007 	    MOVAB   BUFFER, R11						      ;

		         01	0000G  CF  D1 0000C 	    CMPL    DEVICE_COUNT, #1					      ; 0637

				       07  12 00011 	    BNEQ    1$							      ;

		         01	0000G  CF  D1 00013 	    CMPL    DRIVE_COUNT, #1					      ;

				       0D  15 00018 	    BLEQ    2$							      ;

			    00728174   8F  DD 0001A 1$:     PUSHL   #7504244						      ; 0638

	      00000000G  00	       01  FB 00020 	    CALLS   #1, LIB$STOP					      ;

				       7E  D4 00027 2$:     CLRL    -(SP)						      ; 0640

				       5E  DD 00029 	    PUSHL   SP							      ;

				0000G  CF  9F 0002B 	    PUSHAB  GET_UIC						      ;

	      00000000G  9F	       03  FB 0002F 	    CALLS   #3, @#SYS$CMKRNL					      ;



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 3-8

; Digital Equipment Corporation

;

		         52	       50  D0 00036 	    MOVL    R0, PROCESS_UIC					      ;

		         50 00000000G  9F  D0 00039 	    MOVL    @#CTL$GL_PHD, PRIVILEGE_MASK			      ; 0641

				037C   CB  D4 00040 	    CLRL    VOLUME_UIC						      ; 0642

	   07	         6A	       21  E1 00044 	    BBC     #33, MOUNT_OPTIONS, 3$				      ; 0643

		  037C   CB	0000G  CF  D0 00048 	    MOVL    HOME_BLOCK+44, VOLUME_UIC				      ; 0644

	   11	         6A	       20  E1 0004F 3$:     BBC     #32, MOUNT_OPTIONS, 4$				      ; 0647

	   0D	         60	       15  E0 00053 	    BBS     #21, (PRIVILEGE_MASK), 4$				      ; 0648

				037C   CB  D5 00057 	    TSTL    VOLUME_UIC						      ; 0649

				       07  13 0005B 	    BEQL    4$							      ;

		         52	037C   CB  D1 0005D 	    CMPL    VOLUME_UIC, PROCESS_UIC				      ; 0650

				       2C  12 00062 	    BNEQ    8$							      ;

		         14	  03   AA  E8 00064 4$:     BLBS    MOUNT_OPTIONS+3, 5$					      ; 0654

	   0F	    03   AA	       01  E0 00068 	    BBS     #1, MOUNT_OPTIONS+3, 5$				      ; 0655

	   0A	    03   AA	       02  E0 0006D 	    BBS     #2, MOUNT_OPTIONS+3, 5$				      ; 0656

	   05	    03   AA	       03  E0 00072 	    BBS     #3, MOUNT_OPTIONS+3, 5$				      ; 0657

	   04	    03   AA	       04  E1 00077 	    BBC     #4, MOUNT_OPTIONS+3, 6$				      ; 0658

	   10	         60	       12  E1 0007C 5$:     BBC     #18, (PRIVILEGE_MASK), 8$				      ; 0660

	   04	         6A	       07  E1 00080 6$:     BBC     #7, MOUNT_OPTIONS, 7$				      ; 0664

	   08	         60	       03  E1 00084 	    BBC     #3, (PRIVILEGE_MASK), 8$				      ; 0665

		         0D	  01   AA  E9 00088 7$:     BLBC    MOUNT_OPTIONS+1, 9$					      ; 0669

	   09	         60	       02  E0 0008C 	    BBS     #2, (PRIVILEGE_MASK), 9$				      ; 0670

				       24  DD 00090 8$:     PUSHL   #36							      ; 0673

	      00000000G  00	       01  FB 00092 	    CALLS   #1, LIB$STOP					      ;

	   05	    01   AA	       03  E1 00099 9$:     BBC     #3, MOUNT_OPTIONS+1, 10$				      ; 0675

		  037C   CB	       52  D0 0009E 	    MOVL    PROCESS_UIC, VOLUME_UIC				      ; 0676

		  0000G  CF	0200   CB  9E 000A3 10$:    MOVAB   PROTO_VCB, CURRENT_VCB				      ; 0681

	   00	         6E	       00  2C 000AA 	    MOVC5   #0, (SP), #0, #84, PROTO_VCB			      ; 0682

		  0200   CB	0054   8F     000AE									      ;

		  020C   CB	       01  B0 000B4 	    MOVW    #1, PROTO_VCB+12					      ; 0683

		  024C   CB	       01  B0 000B9 	    MOVW    #1, PROTO_VCB+76					      ; 0684

	   06	         6A	       07  E1 000BE 	    BBC     #7, MOUNT_OPTIONS, 11$				      ; 0686

		  020B   CB	  40   8F  88 000C2 	    BISB2   #64, PROTO_VCB+11					      ; 0687

		         06	  01   AA  E9 000C8 11$:    BLBC    MOUNT_OPTIONS+1, 12$				      ; 0688

		  020B   CB	  80   8F  88 000CC 	    BISB2   #128, PROTO_VCB+11					      ; 0689

	   14	         6A	       21  E1 000D2 12$:    BBC     #33, MOUNT_OPTIONS, 14$				      ; 0691

	   05	    01   AA	       03  E1 000D6 	    BBC     #3, MOUNT_OPTIONS+1, 13$				      ; 0692

	   0A	    03   AA	       07  E0 000DB 	    BBS     #7, MOUNT_OPTIONS+3, 14$				      ;

    0214   CB	  0000G  CF	       0C  28 000E0 13$:    MOVC3   #12, HOME_BLOCK+472, PROTO_VCB+20			      ; 0695

				       0C  11 000E8 	    BRB     15$							      ; 0691

	   20	  0000G  DF	0000G  CF  2C 000EA 14$:    MOVC5   LABEL_STRING, @LABEL_STRING+4, #32, #12, PROTO_VCB+20     ; 0697

		  0214   CB	       0C     000F2									      ;

	   03	    01   AA	       03  E1 000F6 15$:    BBC     #3, MOUNT_OPTIONS+1, 16$				      ; 0700

				     0347  31 000FB 	    BRW     51$							      ;

		  0224   CB	0000G  CF  D0 000FE 16$:    MOVL    HOMEBLOCK_LBN, PROTO_VCB+36				      ; 0703

		  0228   CB	0000G  CF  D0 00105 	    MOVL    HOME_BLOCK+4, PROTO_VCB+40				      ; 0704

		  0228   CB	0224   CB  D1 0010C 	    CMPL    PROTO_VCB+36, PROTO_VCB+40				      ; 0706

				       12  12 00113 	    BNEQ    17$							      ;

		  020B   CB	       04  88 00115 	    BISB2   #4, PROTO_VCB+11					      ; 0709

			    00729000   8F  DD 0011A 	    PUSHL   #7507968						      ; 0710

	      00000000G  00	       01  FB 00120 	    CALLS   #1, LIB$SIGNAL					      ;

		  0230   CB	0000G  CF  D0 00127 17$:    MOVL    HOME_BLOCK+24, PROTO_VCB+48				      ; 0714

		  022C   CB	0000G  CF  D0 0012E 	    MOVL    HOME_BLOCK+8, PROTO_VCB+44				      ; 0715

		  023C   CB	0000G  CF  B0 00135 	    MOVW    HOME_BLOCK+14, PROTO_VCB+60				      ; 0717

		  0248   CB	0000G  CF  90 0013C 	    MOVB    HOME_BLOCK+68, PROTO_VCB+72				      ; 0719

				       05  12 00143 	    BNEQ    18$							      ; 0720



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 3-9

; Digital Equipment Corporation

;

		  0248   CB	       07  90 00145 	    MOVB    #7, PROTO_VCB+72					      ; 0721

		         09	  01   AA  E9 0014A 18$:    BLBC    MOUNT_OPTIONS+1, 19$				      ; 0722

		  0248   CB 00000000G  9F  90 0014E 	    MOVB    @#ACP$GB_WINDOW, PROTO_VCB+72			      ; 0723

		         07	  03   AA  E9 00157 19$:    BLBC    MOUNT_OPTIONS+3, 20$				      ; 0724

		  0248   CB	0000G  CF  90 0015B 	    MOVB    WINDOW, PROTO_VCB+72				      ; 0725

		  0249   CB	0000G  CF  90 00162 20$:    MOVB    HOME_BLOCK+69, PROTO_VCB+73				      ; 0727

		         09	  01   AA  E9 00169 	    BLBC    MOUNT_OPTIONS+1, 21$				      ; 0728

		  0249   CB 00000000G  9F  90 0016D 	    MOVB    @#ACP$GW_SYSACC, PROTO_VCB+73			      ; 0729

	   07	    03   AA	       01  E1 00176 21$:    BBC     #1, MOUNT_OPTIONS+3, 22$				      ; 0730

		  0249   CB	0000G  CF  90 0017B 	    MOVB    ACCESSED, PROTO_VCB+73				      ; 0731

		  023E   CB	0000G  CF  B0 00182 22$:    MOVW    HOME_BLOCK+70, PROTO_VCB+62				      ; 0733

				       05  12 00189 	    BNEQ    23$							      ; 0734

		  023E   CB	       05  B0 0018B 	    MOVW    #5, PROTO_VCB+62					      ; 0735

	   07	    02   AA	       07  E1 00190 23$:    BBC     #7, MOUNT_OPTIONS+2, 24$				      ; 0736

		  023E   CB	0000G  CF  B0 00195 	    MOVW    EXTENSION, PROTO_VCB+62				      ; 0737

		  0238   CB	0000G  CF  90 0019C 24$:    MOVB    HOME_BLOCK+32, PROTO_VCB+56				      ; 0739

		  00FF   8F	0000G  CF  B1 001A3 	    CMPW    HOME_BLOCK+32, #255					      ; 0740

				       0C  1B 001AA 	    BLEQU   25$							      ;

		         7E	08C0   8F  3C 001AC 	    MOVZWL  #2240, -(SP)					      ; 0741

	      00000000G  00	       01  FB 001B1 	    CALLS   #1, LIB$STOP					      ;

		  0244   CB	0000G  CF  D0 001B8 25$:    MOVL    HOME_BLOCK+28, PROTO_VCB+68				      ; 0743

	      000FF000   8F	0000G  CF  D1 001BF 	    CMPL    HOME_BLOCK+28, #1044480				      ; 0744

				       0C  1B 001C8 	    BLEQU   26$							      ;

		         7E	08C0   8F  3C 001CA 	    MOVZWL  #2240, -(SP)					      ; 0745

	      00000000G  00	       01  FB 001CF 	    CALLS   #1, LIB$STOP					      ;

		  024F   CB	0000G  CF  90 001D6 26$:    MOVB    HOME_BLOCK+34, PROTO_VCB+79				      ; 0747

		  00FF   8F	0000G  CF  B1 001DD 	    CMPW    HOME_BLOCK+34, #255					      ; 0748

				       0C  1B 001E4 	    BLEQU   27$							      ;

		         7E	08C0   8F  3C 001E6 	    MOVZWL  #2240, -(SP)					      ; 0749

	      00000000G  00	       01  FB 001EB 	    CALLS   #1, LIB$STOP					      ;

		         50	0238   CB  9A 001F2 27$:    MOVZBL  PROTO_VCB+56, R0					      ; 0755

    0000G  CF	  0230   CB	       50  C1 001F7 	    ADDL3   R0, PROTO_VCB+48, HEADER_LBN			      ;

				       5B  DD 001FF 	    PUSHL   R11							      ; 0756

				0000G  CF  DD 00201 	    PUSHL   HEADER_LBN						      ;

		  0000G  CF	       02  FB 00205 	    CALLS   #2, READ_BLOCK					      ;

		         59	       50  D0 0020A 	    MOVL    R0, STATUS						      ;

		         0E	       59  E9 0020D 	    BLBC    STATUS, 28$						      ; 0757

				0000'  CF  9F 00210 	    PUSHAB  P.AAA						      ;

				       5B  DD 00214 	    PUSHL   R11							      ;

		  0000G  CF	       02  FB 00216 	    CALLS   #2, CHECK_HEADER2					      ;

		         2C	       50  E8 0021B 	    BLBS    R0, 29$						      ;

		  0000G  CF	       01  D0 0021E 28$:    MOVL    #1, USER_STATUS					      ; 0760

		  020B   CB	       18  88 00223 	    BISB2   #24, PROTO_VCB+11					      ; 0762

			    00729008   8F  DD 00228 	    PUSHL   #7507976						      ; 0763

	      00000000G  00	       01  FB 0022E 	    CALLS   #1, LIB$SIGNAL					      ;

		  0000G  CF	022C   CB  D0 00235 	    MOVL    PROTO_VCB+44, HEADER_LBN				      ; 0764

				       5B  DD 0023C 	    PUSHL   R11							      ; 0765

				0000G  CF  DD 0023E 	    PUSHL   HEADER_LBN						      ;

		  0000G  CF	       02  FB 00242 	    CALLS   #2, READ_BLOCK					      ;

		         59	       50  D0 00247 	    MOVL    R0, STATUS						      ;

		         09	       59  E8 0024A 29$:    BLBS    STATUS, 30$						      ; 0767

				       59  DD 0024D 	    PUSHL   STATUS						      ;

	      00000000G  00	       01  FB 0024F 	    CALLS   #1, LIB$STOP					      ;

				0000'  CF  9F 00256 30$:    PUSHAB  P.AAB						      ; 0768

				       5B  DD 0025A 	    PUSHL   R11							      ;



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 3-10

; Digital Equipment Corporation

;

		  0000G  CF	       02  FB 0025C 	    CALLS   #2, CHECK_HEADER2					      ;

		         09	       50  E8 00261 	    BLBS    R0, 31$						      ;

				       7E  D4 00264 	    CLRL    -(SP)						      ;

	      00000000G  00	       01  FB 00266 	    CALLS   #1, LIB$STOP					      ;

	   00	         6E	       00  2C 0026D 31$:    MOVC5   #0, (SP), #0, #72, PROTO_FCB			      ; 0770

		  0254   CB	0048   8F     00271									      ;

		  027C   CB	       01  D0 00277 	    MOVL    #1, PROTO_FCB+40					      ; 0771

				       5B  DD 0027C 	    PUSHL   R11							      ; 0772

				0254   CB  9F 0027E 	    PUSHAB  PROTO_FCB						      ;

		  0000G  CF	       02  FB 00282 	    CALLS   #2, INIT_FCB2					      ;

		  026C   CB	       01  B0 00287 	    MOVW    #1, PROTO_FCB+24					      ; 0773

	   05	    01   AA	       02  E0 0028C 	    BBS     #2, MOUNT_OPTIONS+1, 32$				      ; 0774

		  026E   CB	       01  B0 00291 	    MOVW    #1, PROTO_FCB+26					      ; 0775

	   00	         6E	       00  2C 00296 32$:    MOVC5   #0, (SP), #0, #36, PROTO_WCB			      ; 0780

		  029C   CB	       24     0029A									      ;

		  02A4   CB	  D8   8F  9B 0029E 	    MOVZBW  #216, PROTO_WCB+8					      ; 0781

		  02A7   CB	       01  88 002A4 	    BISB2   #1, PROTO_WCB+11					      ; 0782

	   05	    01   AA	       02  E0 002A9 	    BBS     #2, MOUNT_OPTIONS+1, 33$				      ; 0783

		  02B0   CB	       01  88 002AE 	    BISB2   #1, PROTO_WCB+20					      ; 0784

				       01  DD 002B3 33$:    PUSHL   #1							      ; 0785

				       03  DD 002B5 	    PUSHL   #3							      ;

				       5B  DD 002B7 	    PUSHL   R11							      ;

				029C   CB  9F 002B9 	    PUSHAB  PROTO_WCB						      ;

		  0000G  CF	       04  FB 002BD 	    CALLS   #4, TURN_WINDOW2					      ;

		         54	0238   CB  9A 002C2 	    MOVZBL  PROTO_VCB+56, J					      ; 0794

				       62  11 002C7 	    BRB     38$							      ;

				       5B  DD 002C9 34$:    PUSHL   R11							      ; 0524

				0230 DB44  9F 002CB 	    PUSHAB  @PROTO_VCB+48[J]					      ; 0798

		  0000G  CF	       02  FB 002D0 	    CALLS   #2, READ_BLOCK					      ;

		         59	       50  D0 002D5 	    MOVL    R0, STATUS						      ;

		         1A	       59  E8 002D8 	    BLBS    STATUS, 35$						      ; 0799

				       59  DD 002DB 	    PUSHL   STATUS						      ; 0802

				       7E  D4 002DD 	    CLRL    -(SP)						      ;

			    00729018   8F  DD 002DF 	    PUSHL   #7507992						      ;

	      00000000G  00	       03  FB 002E5 	    CALLS   #3, LIB$SIGNAL					      ;

		  020B   CB	       10  88 002EC 	    BISB2   #16, PROTO_VCB+11					      ; 0803

				       55  D4 002F1 	    CLRL    IDX_EOF						      ; 0804

				       39  11 002F3 	    BRB     39$							      ; 0805

		         52	  7F   8F  9A 002F5 35$:    MOVZBL  #127, I						      ; 0808

		         51	     6B42  D0 002F9 36$:    MOVL    BUFFER[I], R1					      ; 0811

				       29  13 002FD 	    BEQL    37$							      ;

	   50	         54	       0C  78 002FF 	    ASHL    #12, J, R0						      ; 0814

	   53	         52	       05  78 00303 	    ASHL    #5, I, R3						      ;

		         53	       50  C0 00307 	    ADDL2   R0, R3						      ;

				       51  DD 0030A 	    PUSHL   R1							      ;

		  0000G  CF	       01  FB 0030C 	    CALLS   #1, LEFT_ONE					      ;

	   51	         53	       50  C1 00311 	    ADDL3   R0, R3, R1						      ;

		         50	0238   CB  9A 00315 	    MOVZBL  PROTO_VCB+56, R0					      ; 0815

		         51	       50  C0 0031A 	    ADDL2   R0, R1						      ;

		         50	023C   CB  3C 0031D 	    MOVZWL  PROTO_VCB+60, R0					      ;

		         55	     6140  DE 00322 	    MOVAL   (R1)[R0], IDX_EOF					      ;

				       06  11 00326 	    BRB     39$							      ; 0816

		         CE	       52  F4 00328 37$:    SOBGEQ  I, 36$						      ; 0808

		         9B	       54  F4 0032B 38$:    SOBGEQ  J, 34$						      ; 0794

		  0294   CB	       55  D1 0032E 39$:    CMPL    IDX_EOF, PROTO_FCB+64				      ; 0822



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 3-11

; Digital Equipment Corporation

;

				       0A  1B 00333 	    BLEQU   40$							      ;

		  0294   CB	       55  D0 00335 	    MOVL    IDX_EOF, PROTO_FCB+64				      ; 0825

		  024E   CB	       06  8E 0033A 	    MNEGB   #6, PROTO_VCB+78					      ; 0826

				       5B  DD 0033F 40$:    PUSHL   R11							      ; 0836

		         50	0238   CB  9A 00341 	    MOVZBL  PROTO_VCB+56, R0					      ;

		         50	0230   CB  C0 00346 	    ADDL2   PROTO_VCB+48, R0					      ;

				  01   A0  9F 0034B 	    PUSHAB  1(R0)						      ;

		  0000G  CF	       02  FB 0034E 	    CALLS   #2, READ_BLOCK					      ;

		         59	       50  D0 00353 	    MOVL    R0, STATUS						      ;

		         0E	       59  E9 00356 	    BLBC    STATUS, 41$						      ; 0837

				0000'  CF  9F 00359 	    PUSHAB  P.AAC						      ;

				       5B  DD 0035D 	    PUSHL   R11							      ;

		  0000G  CF	       02  FB 0035F 	    CALLS   #2, CHECK_HEADER2					      ;

		         15	       50  E8 00364 	    BLBS    R0, 42$						      ;

			    00729010   8F  DD 00367 41$:    PUSHL   #7507984						      ; 0840

	      00000000G  00	       01  FB 0036D 	    CALLS   #1, LIB$SIGNAL					      ;

		  020B   CB	       10  88 00374 	    BISB2   #16, PROTO_VCB+11					      ; 0841

				     00C9  31 00379 	    BRW     51$							      ; 0837

		         50	  01   AB  9A 0037C 42$:    MOVZBL  BUFFER+1, R0					      ; 0846

		         58	     6B40  3E 00380 	    MOVAW   BUFFER[R0], MAP_POINTER				      ;

				     0000  30 00384 	    BSBW    GET_MAP_POINTER					      ; 0847

				       57  D6 00387 	    INCL    LBN							      ; 0848

	   50	  0000G  CF	       04  78 00389 	    ASHL    #4, DEV_INDEX, R0					      ; 0849

		         51	023C   CB  3C 0038F 	    MOVZWL  PROTO_VCB+60, R1					      ;

				0000GCF40  9F 00394 	    PUSHAB  DEVICE_TABLE+8[R0]					      ;

	   50	         9E	       51  C1 00399 	    ADDL3   R1, @(SP)+, R0					      ;

				       50  D7 0039D 	    DECL    R0							      ;

		         51	023C   CB  3C 0039F 	    MOVZWL  PROTO_VCB+60, R1					      ; 0850

		         50	       51  C6 003A4 	    DIVL2   R1, R0						      ;

		         50	0FFF   C0  9E 003A7 	    MOVAB   4095(R0), R0					      ; 0849

	   56	         50 00001000   8F  C7 003AC 	    DIVL3   #4096, R0, COUNT					      ; 0850

	      000000FF   8F	       56  D1 003B4 	    CMPL    COUNT, #255						      ; 0851

				       0C  1B 003BB 	    BLEQU   43$							      ;

		         7E	08C0   8F  3C 003BD 	    MOVZWL  #2240, -(SP)					      ; 0852

	      00000000G  00	       01  FB 003C2 	    CALLS   #1, LIB$STOP					      ;

		  0234   CB	       57  D0 003C9 43$:    MOVL    LBN, PROTO_VCB+52					      ; 0854

		  0239   CB	       56  90 003CE 	    MOVB    COUNT, PROTO_VCB+57					      ; 0855

				       52  D4 003D3 	    CLRL    FREE						      ; 0860

				       56  D6 003D5 	    INCL    J							      ; 0861

				       5E  11 003D7 	    BRB     49$							      ;

				0880   8F  BB 003D9 44$:    PUSHR   #^M<R7,R11>						      ; 0865

		  0000G  CF	       02  FB 003DD 	    CALLS   #2, READ_BLOCK					      ;

		         59	       50  D0 003E2 	    MOVL    R0, STATUS						      ;

		         1A	       59  E8 003E5 	    BLBS    STATUS, 45$						      ; 0866

				       59  DD 003E8 	    PUSHL   STATUS						      ; 0869

				       7E  D4 003EA 	    CLRL    -(SP)						      ;

			    00729020   8F  DD 003EC 	    PUSHL   #7508000						      ;

	      00000000G  00	       03  FB 003F2 	    CALLS   #3, LIB$SIGNAL					      ;

		  020B   CB	       10  88 003F9 	    BISB2   #16, PROTO_VCB+11					      ; 0870

				       52  D4 003FE 	    CLRL    FREE						      ; 0871

				       38  11 00400 	    BRB     50$							      ; 0872

				       50  D4 00402 45$:    CLRL    I							      ; 0875

		         54	     6B40  D0 00404 46$:    MOVL    BUFFER[I], X					      ; 0877

				       23  13 00408 	    BEQL    48$							      ; 0878

				       53  D4 0040A 	    CLRL    B2							      ; 0881



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 3-12

; Digital Equipment Corporation

;

	   51	         20	       53  C3 0040C 47$:    SUBL3   B2, #32, R1						      ; 0884

	   54	         51	       53  EA 00410 	    FFS     B2, R1, X, B1					      ;

				       55     00414									      ;

				       16  13 00415 	    BEQL    48$							      ;

	   51	         20	       55  C3 00417 	    SUBL3   B1, #32, R1						      ; 0886

	   54	         51	       55  EB 0041B 	    FFC     B1, R1, X, B2					      ;

				       53     0041F									      ;

	   51	         52	       53  C1 00420 	    ADDL3   B2, FREE, R1					      ; 0887

	   52	         51	       55  C3 00424 	    SUBL3   B1, R1, FREE					      ;

		         20	       53  D1 00428 	    CMPL    B2, #32						      ; 0888

				       DF  19 0042B 	    BLSS    47$							      ;

	   CF	         50 0000007F   8F  F3 0042D 48$:    AOBLEQ  #127, I, 46$					      ; 0875

				       57  D6 00435 	    INCL    LBN							      ; 0892

		         9F	       56  F5 00437 49$:    SOBGTR  J, 44$						      ; 0861

		         50	023C   CB  3C 0043A 50$:    MOVZWL  PROTO_VCB+60, R0					      ; 0895

    0240   CB	         52	       50  C5 0043F 	    MULL3   R0, FREE, PROTO_VCB+64				      ;

				       7E  D4 00445 51$:    CLRL    -(SP)						      ; 0905

				       5E  DD 00447 	    PUSHL   SP							      ;

				0000V  CF  9F 00449 	    PUSHAB  MAKE_DISK_MOUNT					      ;

	      00000000G  9F	       03  FB 0044D 	    CALLS   #3, @#SYS$CMKRNL					      ;

		         59	       50  D0 00454 	    MOVL    R0, STATUS						      ;

		         09	       59  E8 00457 	    BLBS    STATUS, 52$						      ; 0906

				       59  DD 0045A 	    PUSHL   STATUS						      ;

	      00000000G  00	       01  FB 0045C 	    CALLS   #1, LIB$STOP					      ;

				0000G  CF  9F 00463 52$:    PUSHAB  PHYS_NAME						      ; 0911

				0214   CB  9F 00467 	    PUSHAB  PROTO_VCB+20					      ;

				       0C  DD 0046B 	    PUSHL   #12							      ;

				       03  DD 0046D 	    PUSHL   #3							      ;

			    0072A003   8F  DD 0046F 	    PUSHL   #7512067						      ;

	      00000000G  00	       05  FB 00475 	    CALLS   #5, LIB$SIGNAL					      ;

					   04 0047C 	    RET     							      ; 0524



; Routine Size:  1149 bytes







; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 4

; Digital Equipment Corporation

;

;	0914	ROUTINE MAKE_DISK_MOUNT =

;	0915	

;	0916	!++

;	0917	!

;	0918	! FUNCTIONAL DESCRIPTION:

;	0919	!

;	0920	!	This routine does all of the data base manipulation needed to get

;	0921	!	a volume actually mounted. It allocates the real VCB, FCB, and

;	0922	!	window, and hooks then all together. It also starts up the ACP

;	0923	!	gets the mounted volume list entry made.

;	0924	!

;	0925	!

;	0926	! CALLING SEQUENCE:

;	0927	!	MAKE_DISK_MOUNT ()

;	0928	!

;	0929	! INPUT PARAMETERS:

;	0930	!	NONE

;	0931	!

;	0932	! IMPLICIT INPUTS:

;	0933	!	MOUNT parser data base

;	0934	!	own storage of this module

;	0935	!

;	0936	! OUTPUT PARAMETERS:

;	0937	!	NONE

;	0938	!

;	0939	! IMPLICIT OUTPUTS:

;	0940	!	NONE

;	0941	!

;	0942	! ROUTINE VALUE:

;	0943	!	1 if successful

;	0944	!	status values if not

;	0945	!

;	0946	! SIDE EFFECTS:

;	0947	!	volume mounted

;	0948	!

;	0949	!--

;	0950	

;	0951	BEGIN

;	0952	

;	0953	BUILTIN

;	0954		INSQUE;

;	0955	

;	0956	LOCAL

;	0957		WINDOW_SIZE,			! size in bytes needed for window

;	0958		UCB		: REF BBLOCK;	! pointer to volume UCB

;	0959	

;	0960	EXTERNAL

;	0961		MOUNT_OPTIONS	: BITVECTOR,	! command parser options

;	0962		CLEANUP_FLAGS	: BITVECTOR,	! cleanup action flags

;	0963		CHANNEL,			! channel assigned to device

;	0964		HOME_BLOCK	: BBLOCK,	! buffer containing home block

;	0965		OWNER_UIC,			! owner UIC from command

;	0966		PROTECTION,			! volume protection from command

;	0967		REAL_VCB	: REF BBLOCK,	! address of VCB allocated

;	0968		REAL_FCB	: REF BBLOCK,	! address of FCB allocated



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 4-1

; Digital Equipment Corporation

;

;	0969		REAL_WCB	: REF BBLOCK,	! address of window allocated

;	0970		CTL$GL_VOLUMES	: ADDRESSING_MODE (ABSOLUTE);

;	0971						! count of volumes mounted by process

;	0972	

;	0973	EXTERNAL ROUTINE

;	0974		GET_CHANNELUCB,			! get UCB assigned to channel

;	0975		ALLOCATE_MEM,			! allocate system dynamic memory

;	0976		START_ACP,			! start and connect ACP to device

;	0977		LOCK_IODB,			! lock I/O database mutex

;	0978		UNLOCK_IODB,			! unlock I/O database mutex

;	0979		ALLOC_LOGNAME,			! create logical name and MTL blocks

;	0980		ENTER_LOGNAME,			! enter logical name and MTL in lists

;	0981		SEND_ERRLOG;			! send message to error logger

;	0982	

;	0983	

;	0984	! Disable the kernel exception vectors and enable our condition handler.

;	0985	! Then allocate all of the required control blocks. We allocate them in

;	0986	! advance to avoid having to back out of some awkward situations later on.

;	0987	! The one exception is the AQB, which is either found or allocated by

;	0988	! START_ACP.

;	0989	!

;	0990	

;	0991	ENABLE KERNEL_HANDLER;

;	0992	$SETEXV (VECTOR = 0, PRVHND = SYSEXV[0]);

;	0993	$SETEXV (VECTOR = 1, PRVHND = SYSEXV[1]);

;	0994	

;	0995	! ***** For debug: If the previous handler addresses are found to be in

;	0996	! process space, put them back since they belong to the debugger.

;	0997	!

;	0998	

;	0999	IF .SYSEXV[0] GTR 0

;	1000	THEN $SETEXV (VECTOR = 0, ADDRES = .SYSEXV[0]);

;	1001	IF .SYSEXV[1] GTR 0

;	1002	THEN $SETEXV (VECTOR = 1, ADDRES = .SYSEXV[1]);

;	1003	

;	1004	REAL_VCB = ALLOCATE_MEM (VCB$C_LENGTH, 0);

;	1005	REAL_VCB[VCB$B_TYPE] = DYN$C_VCB;

;	1006	CH$MOVE (VCB$C_LENGTH-11, PROTO_VCB+11, .REAL_VCB+11);

;	1007	

;	1008	IF NOT .MOUNT_OPTIONS[OPT_FOREIGN]

;	1009	THEN

;	1010	    BEGIN

;	1011	    REAL_VCB[VCB$L_FCBFL] = REAL_VCB[VCB$L_FCBFL];

;	1012	    REAL_VCB[VCB$L_FCBBL] = REAL_VCB[VCB$L_FCBFL];

;	1013	

;	1014	    REAL_FCB = ALLOCATE_MEM (FCB$C_LENGTH, 0);

;	1015	    REAL_FCB[FCB$B_TYPE] = DYN$C_FCB;

;	1016	    CH$MOVE (FCB$C_LENGTH-11, PROTO_FCB+11, .REAL_FCB+11);

;	1017	    REAL_FCB[FCB$L_WLFL] = REAL_FCB[FCB$L_WLFL];

;	1018	    REAL_FCB[FCB$L_WLBL] = REAL_FCB[FCB$L_WLFL];

;	1019	    INSQUE (.REAL_FCB, REAL_VCB[VCB$L_FCBFL]);

;	1020	

;	1021	    WINDOW_SIZE = WCB$C_LENGTH + MAXU (.PROTO_WCB[WCB$W_NMAP] + 2, 6) * 6;

;	1022	    REAL_WCB = ALLOCATE_MEM (.WINDOW_SIZE, 0);

;	1023	    REAL_WCB[WCB$B_TYPE] = DYN$C_WCB;



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 4-2

; Digital Equipment Corporation

;

;	1024	    CH$MOVE (.WINDOW_SIZE-11, PROTO_WCB+11, .REAL_WCB+11);

;	1025	    REAL_WCB[WCB$L_FCB] = .REAL_FCB;

;	1026	    INSQUE (.REAL_WCB, REAL_FCB[FCB$L_WLFL]);

;	1027	    END;

;	1028	

;	1029	ALLOC_LOGNAME ();

;	1030	

;	1031	! All data blocks except the AQB are now allocated. First set up the

;	1032	! volume ownership and protection in the VCB. Now hook up the blocks

;	1033	! to the device data base and start the ACP.

;	1034	!

;	1035	

;	1036	UCB = GET_CHANNELUCB (.CHANNEL);

;	1037	REAL_VCB[VCB$L_RVT] = .UCB;

;	1038	

;	1039	UCB[UCB$V_UNLOAD] = 1;

;	1040	UCB[UCB$L_OWNUIC] = .VOLUME_UIC;

;	1041	IF .MOUNT_OPTIONS[OPT_OWNER_UIC]

;	1042	THEN UCB[UCB$L_OWNUIC] = .OWNER_UIC;

;	1043	

;	1044	IF .MOUNT_OPTIONS[OPT_FOREIGN]

;	1045	THEN UCB[UCB$W_VPROT] = %X'FF00'

;	1046	ELSE UCB[UCB$W_VPROT] = .HOME_BLOCK[HM2$W_PROTECT];

;	1047	IF .MOUNT_OPTIONS[OPT_GROUP]

;	1048	THEN UCB[UCB$W_VPROT] = .UCB[UCB$W_VPROT] OR %X'F000';

;	1049	IF .MOUNT_OPTIONS[OPT_PROTECTION]

;	1050	THEN UCB[UCB$W_VPROT] = .PROTECTION;

;	1051	

;	1052	IF NOT .MOUNT_OPTIONS[OPT_FOREIGN]

;	1053	THEN

;	1054	    BEGIN

;	1055	    REAL_WCB[WCB$L_ORGUCB] = .UCB;

;	1056	    START_ACP (.UCB, .REAL_VCB, AQB$K_F11V2);

;	1057	    END

;	1058	ELSE

;	1059	    BEGIN

;	1060	    LOCK_IODB ();

;	1061	    UCB[UCB$L_VCB] = .REAL_VCB;

;	1062	    UCB[UCB$L_DEVCHAR] = .UCB[UCB$L_DEVCHAR]

;	1063				OR (DEV$M_MNT OR DEV$M_DIR OR DEV$M_FOR);

;	1064	    SET_DATACHECK (.UCB, 0);

;	1065	    UNLOCK_IODB ();

;	1066	    END;

;	1067	

;	1068	IF .MOUNT_OPTIONS[OPT_NOSHARE] AND .CLEANUP_FLAGS[CLF_DEALLOCATE]

;	1069	THEN UCB[UCB$V_DEADMO] = 1;

;	1070	

;	1071	IF NOT .MOUNT_OPTIONS[OPT_WRITE]

;	1072	THEN BBLOCK [UCB[UCB$L_DEVCHAR], DEV$V_SWL] = 1;

;	1073	

;	1074	! If the device is being mounted /NOSHARE, clear the allocation access

;	1075	! mode in the UCB to make the allocation permanent. Otherwise set it to

;	1076	! user mode to allow deallocation by this image.

;	1077	!

;	1078	



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 4-3

; Digital Equipment Corporation

;

;	1079	IF .MOUNT_OPTIONS[OPT_NOSHARE]

;	1080	THEN UCB[UCB$B_AMOD] = 0

;	1081	ELSE UCB[UCB$B_AMOD] = 3;

;	1082	

;	1083	! Enter the logical name for the volume; bump the user's volume mount count,

;	1084	! and make the error log entry for the mount.

;	1085	!

;	1086	

;	1087	ENTER_LOGNAME (.UCB, .REAL_VCB);

;	1088	CTL$GL_VOLUMES = .CTL$GL_VOLUMES + 1;

;	1089	SEND_ERRLOG (1, .UCB);

;	1090	

;	1091	! Restore the system exception vectors.

;	1092	!

;	1093	

;	1094	$SETEXV (VECTOR = 0, ADDRES = .SYSEXV[0]);

;	1095	$SETEXV (VECTOR = 1, ADDRES = .SYSEXV[1]);

;	1096	

;	1097	RETURN 1;

;	1098	

;	1099	END;					! end of routine MAKE_DISK_MOUNT







							    .GLOBL  CLEANUP_FLAGS, CHANNEL, OWNER_UIC, PROTECTION

							    .GLOBL  REAL_VCB, REAL_FCB, REAL_WCB, CTL$GL_VOLUMES, GET_CHANNELUCB

							    .GLOBL  ALLOCATE_MEM, START_ACP, LOCK_IODB, UNLOCK_IODB

							    .GLOBL  ALLOC_LOGNAME, ENTER_LOGNAME, SEND_ERRLOG, SYS$SETEXV



					 0FFC 0047D MAKE_DISK_MOUNT:

							    .WORD   Save R2,R3,R4,R5,R6,R7,R8,R9,R10,R11		      ; 0914

		         57	0000G  CF  9E 0047F 	    MOVAB   ALLOCATE_MEM, R7					      ;

		         58	0000G  CF  9E 00484 	    MOVAB   REAL_VCB, R8					      ;

		         59	0000G  CF  9E 00489 	    MOVAB   MOUNT_OPTIONS, R9					      ;

		         5A	0000'  CF  9E 0048E 	    MOVAB   SYSEXV, R10						      ;

		         5B 00000000G  9F  9E 00493 	    MOVAB   @#SYS$SETEXV, R11					      ;

		         6D 000001A9   EF  DE 0049A 	    MOVAL   16$, (FP)						      ; 0951

				       5A  DD 004A1 	    PUSHL   R10							      ; 0992

				       7E  7C 004A3 	    CLRQ    -(SP)						      ;

				       7E  D4 004A5 	    CLRL    -(SP)						      ;

		         6B	       04  FB 004A7 	    CALLS   #4, SYS$SETEXV					      ;

				  04   AA  9F 004AA 	    PUSHAB  SYSEXV+4						      ; 0993

				       7E  7C 004AD 	    CLRQ    -(SP)						      ;

				       01  DD 004AF 	    PUSHL   #1							      ;

		         6B	       04  FB 004B1 	    CALLS   #4, SYS$SETEXV					      ;

		         50	       6A  D0 004B4 	    MOVL    SYSEXV, R0						      ; 0999

				       09  15 004B7 	    BLEQ    1$							      ;

				       7E  7C 004B9 	    CLRQ    -(SP)						      ; 1000

				       50  DD 004BB 	    PUSHL   R0							      ;

				       7E  D4 004BD 	    CLRL    -(SP)						      ;

		         6B	       04  FB 004BF 	    CALLS   #4, SYS$SETEXV					      ;

		         50	  04   AA  D0 004C2 1$:     MOVL    SYSEXV+4, R0					      ; 1001

				       09  15 004C6 	    BLEQ    2$							      ;

				       7E  7C 004C8 	    CLRQ    -(SP)						      ; 1002

				       50  DD 004CA 	    PUSHL   R0							      ;



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 4-4

; Digital Equipment Corporation

;

				       01  DD 004CC 	    PUSHL   #1							      ;

		         6B	       04  FB 004CE 	    CALLS   #4, SYS$SETEXV					      ;

				       7E  D4 004D1 2$:     CLRL    -(SP)						      ; 1004

		         7E	  54   8F  9A 004D3 	    MOVZBL  #84, -(SP)						      ;

		         67	       02  FB 004D7 	    CALLS   #2, ALLOCATE_MEM					      ;

		         68	       50  D0 004DA 	    MOVL    R0, REAL_VCB					      ;

		         56	       68  D0 004DD 	    MOVL    REAL_VCB, R6					      ; 1005

		    0A   A6	       11  90 004E0 	    MOVB    #17, 10(R6)						      ;

      0B   A6	  FE97   CA	0049   8F  28 004E4 	    MOVC3   #73, PROTO_VCB+11, 11(R6)				      ; 1006

	   76	    01   A9	       03  E0 004ED 	    BBS     #3, MOUNT_OPTIONS+1, 4$				      ; 1008

		         66	       56  D0 004F2 	    MOVL    R6, (R6)						      ; 1011

		    04   A6	       56  D0 004F5 	    MOVL    R6, 4(R6)						      ; 1012

				       7E  D4 004F9 	    CLRL    -(SP)						      ; 1014

		         7E	  48   8F  9A 004FB 	    MOVZBL  #72, -(SP)						      ;

		         67	       02  FB 004FF 	    CALLS   #2, ALLOCATE_MEM					      ;

		  0000G  CF	       50  D0 00502 	    MOVL    R0, REAL_FCB					      ;

		         56	0000G  CF  D0 00507 	    MOVL    REAL_FCB, R6					      ; 1015

		    0A   A6	       07  90 0050C 	    MOVB    #7, 10(R6)						      ;

      0B   A6	  FEEB   CA	       3D  28 00510 	    MOVC3   #61, PROTO_FCB+11, 11(R6)				      ; 1016

		    10   A6	  10   A6  9E 00517 	    MOVAB   16(R6), 16(R6)					      ; 1017

		    14   A6	  10   A6  9E 0051C 	    MOVAB   16(R6), 20(R6)					      ; 1018

		    00   B8	       66  0E 00521 	    INSQUE  (R6), @REAL_VCB					      ; 1019

		         50	FF3E   CA  3C 00525 	    MOVZWL  PROTO_WCB+22, R0					      ; 1021

		         50	       02  C0 0052A 	    ADDL2   #2, R0						      ;

		         06	       50  D1 0052D 	    CMPL    R0, #6						      ;

				       03  1E 00530 	    BGEQU   3$							      ;

		         50	       06  D0 00532 	    MOVL    #6, R0						      ;

		         50	       06  C4 00535 3$:     MULL2   #6, R0						      ;

	   52	         50	       24  C1 00538 	    ADDL3   #36, R0, WINDOW_SIZE				      ;

				       7E  D4 0053C 	    CLRL    -(SP)						      ; 1022

				       52  DD 0053E 	    PUSHL   WINDOW_SIZE						      ;

		         67	       02  FB 00540 	    CALLS   #2, ALLOCATE_MEM					      ;

		  0000G  CF	       50  D0 00543 	    MOVL    R0, REAL_WCB					      ;

		         56	0000G  CF  D0 00548 	    MOVL    REAL_WCB, R6					      ; 1023

		    0A   A6	       12  90 0054D 	    MOVB    #18, 10(R6)						      ;

		         52	       0B  C2 00551 	    SUBL2   #11, R2						      ; 1024

      0B   A6	  FF33   CA	       52  28 00554 	    MOVC3   R2, PROTO_WCB+11, 11(R6)				      ;

		         50	0000G  CF  D0 0055B 	    MOVL    REAL_FCB, R0					      ; 1025

		    18   A6	       50  D0 00560 	    MOVL    R0, 24(R6)						      ;

		    10   A0	       66  0E 00564 	    INSQUE  (R6), 16(R0)					      ; 1026

		  0000G  CF	       00  FB 00568 4$:     CALLS   #0, ALLOC_LOGNAME					      ; 1029

				0000G  CF  DD 0056D 	    PUSHL   CHANNEL						      ; 1036

		  0000G  CF	       01  FB 00571 	    CALLS   #1, GET_CHANNELUCB					      ;

		         52	       50  D0 00576 	    MOVL    R0, UCB						      ;

		         51	       68  D0 00579 	    MOVL    REAL_VCB, R1					      ; 1037

		    20   A1	       52  D0 0057C 	    MOVL    UCB, 32(R1)						      ;

		    59   A2	       10  88 00580 	    BISB2   #16, 89(UCB)					      ; 1039

		    1C   A2	  08   AA  D0 00584 	    MOVL    VOLUME_UIC, 28(UCB)					      ; 1040

	   06	    02   A9	       02  E1 00589 	    BBC     #2, MOUNT_OPTIONS+2, 5$				      ; 1041

		    1C   A2	0000G  CF  D0 0058E 	    MOVL    OWNER_UIC, 28(UCB)					      ; 1042

		         50	  1A   A2  9E 00594 5$:     MOVAB   26(UCB), R0						      ; 1045

	   07	    01   A9	       03  E1 00598 	    BBC     #3, MOUNT_OPTIONS+1, 6$				      ; 1044

		         60	FF00   8F  B0 0059D 	    MOVW    #-256, (R0)						      ; 1045

				       05  11 005A2 	    BRB     7$							      ; 1044

		         60	0000G  CF  B0 005A4 6$:     MOVW    HOME_BLOCK+52, (R0)					      ; 1046



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 4-5

; Digital Equipment Corporation

;

	   05	         69	       07  E1 005A9 7$:     BBC     #7, MOUNT_OPTIONS, 8$				      ; 1047

		    01   A0	  F0   8F  88 005AD 	    BISB2   #240, 1(R0)						      ; 1048

	   05	    02   A9	       01  E1 005B2 8$:     BBC     #1, MOUNT_OPTIONS+2, 9$				      ; 1049

		         60	0000G  CF  B0 005B7 	    MOVW    PROTECTION, (R0)					      ; 1050

	   16	    01   A9	       03  E0 005BC 9$:     BBS     #3, MOUNT_OPTIONS+1, 10$				      ; 1052

		         50	0000G  CF  D0 005C1 	    MOVL    REAL_WCB, R0					      ; 1055

		    10   A0	       52  D0 005C6 	    MOVL    UCB, 16(R0)						      ;

				       02  DD 005CA 	    PUSHL   #2							      ; 1056

				       51  DD 005CC 	    PUSHL   R1							      ;

				       52  DD 005CE 	    PUSHL   UCB							      ;

		  0000G  CF	       03  FB 005D0 	    CALLS   #3, START_ACP					      ;

				       1F  11 005D5 	    BRB     11$							      ; 1052

		  0000G  CF	       00  FB 005D7 10$:    CALLS   #0, LOCK_IODB					      ; 1060

		    30   A2	       68  D0 005DC 	    MOVL    REAL_VCB, 48(UCB)					      ; 1061

		    34   A2 01080008   8F  C8 005E0 	    BISL2   #17301512, 52(UCB)					      ; 1063

				       7E  D4 005E8 	    CLRL    -(SP)						      ; 1064

				       52  DD 005EA 	    PUSHL   UCB							      ;

		  0000V  CF	       02  FB 005EC 	    CALLS   #2, SET_DATACHECK					      ;

		  0000G  CF	       00  FB 005F1 	    CALLS   #0, UNLOCK_IODB					      ; 1065

	   0A	         69	       04  E1 005F6 11$:    BBC     #4, MOUNT_OPTIONS, 12$				      ; 1068

	   04	  0000G  CF	       01  E1 005FA 	    BBC     #1, CLEANUP_FLAGS, 12$				      ;

		    59   A2	       04  88 00600 	    BISB2   #4, 89(UCB)						      ; 1069

	   04	    01   A9	       01  E0 00604 12$:    BBS     #1, MOUNT_OPTIONS+1, 13$				      ; 1071

		    37   A2	       02  88 00609 	    BISB2   #2, 55(UCB)						      ; 1072

	   05	         69	       04  E1 0060D 13$:    BBC     #4, MOUNT_OPTIONS, 14$				      ; 1079

				  53   A2  94 00611 	    CLRB    83(UCB)						      ; 1080

				       04  11 00614 	    BRB     15$							      ; 1079

		    53   A2	       03  90 00616 14$:    MOVB    #3, 83(UCB)						      ; 1081

				       68  DD 0061A 15$:    PUSHL   REAL_VCB						      ; 1087

				       52  DD 0061C 	    PUSHL   UCB							      ;

		  0000G  CF	       02  FB 0061E 	    CALLS   #2, ENTER_LOGNAME					      ;

			    00000000G  9F  D6 00623 	    INCL    @#CTL$GL_VOLUMES					      ; 1088

				       52  DD 00629 	    PUSHL   UCB							      ; 1089

				       01  DD 0062B 	    PUSHL   #1							      ;

		  0000G  CF	       02  FB 0062D 	    CALLS   #2, SEND_ERRLOG					      ;

				       7E  7C 00632 	    CLRQ    -(SP)						      ; 1094

				       6A  DD 00634 	    PUSHL   SYSEXV						      ;

				       7E  D4 00636 	    CLRL    -(SP)						      ;

		         6B	       04  FB 00638 	    CALLS   #4, SYS$SETEXV					      ;

				       7E  7C 0063B 	    CLRQ    -(SP)						      ; 1095

				  04   AA  DD 0063D 	    PUSHL   SYSEXV+4						      ;

				       01  DD 00640 	    PUSHL   #1							      ;

		         6B	       04  FB 00642 	    CALLS   #4, SYS$SETEXV					      ;

		         50	       01  D0 00645 	    MOVL    #1, R0						      ; 1097

					   04 00648 	    RET     							      ; 0914

					 0000 00649 16$:    .WORD   Save nothing					      ; 0951

				       7E  D4 0064B 	    CLRL    -(SP)						      ;

				       5E  DD 0064D 	    PUSHL   SP							      ;

		         7E	  04   AC  7D 0064F 	    MOVQ    4(AP), -(SP)					      ;

		  0000V  CF	       03  FB 00653 	    CALLS   #3, KERNEL_HANDLER					      ;

					   04 00658 	    RET     							      ;



; Routine Size:  476 bytes







; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 4-6

; Digital Equipment Corporation

;



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 5

; Digital Equipment Corporation

;

;	1100	GLOBAL ROUTINE SET_DATACHECK (UCB, HOME_BLOCK) : NOVALUE =

;	1101	

;	1102	!++

;	1103	!

;	1104	! FUNCTIONAL DESCRIPTION:

;	1105	!

;	1106	!	This routine sets the read and write check bits in the indicated UCB

;	1107	!	according to the command switches and the volume characteristics.

;	1108	!

;	1109	!

;	1110	! CALLING SEQUENCE:

;	1111	!	SET_DATACHECK (ARG1, ARG2)

;	1112	!

;	1113	! INPUT PARAMETERS:

;	1114	!	ARG2: address of home block or 0

;	1115	!

;	1116	! IMPLICIT INPUTS:

;	1117	!	MOUNT_OPTIONS: datacheck qualifier bits

;	1118	!

;	1119	! OUTPUT PARAMETERS:

;	1120	!	ARG1: address of UCB

;	1121	!

;	1122	! IMPLICIT OUTPUTS:

;	1123	!	NONE

;	1124	!

;	1125	! ROUTINE VALUE:

;	1126	!	NONE

;	1127	!

;	1128	! SIDE EFFECTS:

;	1129	!	NONE

;	1130	!

;	1131	!--

;	1132	

;	1133	BEGIN

;	1134	

;	1135	MAP

;	1136		UCB		: REF BBLOCK,	! UCB arg

;	1137		HOME_BLOCK	: REF BBLOCK;	! home block arg

;	1138	

;	1139	EXTERNAL

;	1140		MOUNT_OPTIONS	: BITVECTOR;	! parser option flags

;	1141	

;	1142	! The read and write check attributes to be set are simply the inclusive

;	1143	! OR of the read and write check volume attributes and the command options.

;	1144	!

;	1145	

;	1146	BBLOCK [UCB[UCB$L_DEVCHAR], DEV$V_RCK] = .MOUNT_OPTIONS[OPT_READCHECK]

;	1147	    OR (IF .HOME_BLOCK NEQ 0

;	1148		THEN .HOME_BLOCK[HM2$V_READCHECK]

;	1149		ELSE 0

;	1150		);

;	1151	

;	1152	BBLOCK [UCB[UCB$L_DEVCHAR], DEV$V_WCK] = .MOUNT_OPTIONS[OPT_WRITECHECK]

;	1153	    OR (IF .HOME_BLOCK NEQ 0

;	1154		THEN .HOME_BLOCK[HM2$V_WRITCHECK]



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 5-1

; Digital Equipment Corporation

;

;	1155		ELSE 0

;	1156		);

;	1157	

;	1158	END;					! end of routine SET_DATACHECK











					 000C 00659 	    .ENTRY  SET_DATACHECK, Save R2,R3				      ; 1100

		         50	  04   AC  D0 0065B 	    MOVL    UCB, R0						      ; 1146

    0000G  CF	         01	       23  EF 0065F 	    EXTZV   #35, #1, MOUNT_OPTIONS, R2				      ;

				       52     00665									      ;

		         51	  08   AC  D0 00666 	    MOVL    HOME_BLOCK, R1					      ; 1147

				       08  13 0066A 	    BEQL    1$							      ;

      2A   A1	         01	       00  EF 0066C 	    EXTZV   #0, #1, 42(R1), R1					      ;

				       51     00671									      ;

				       02  11 00672 	    BRB     2$							      ;

				       51  D4 00674 1$:     CLRL    R1							      ;

	   53	         51	       52  89 00676 2$:     BISB3   R2, R1, R3						      ;

	   01	         06	       53  F0 0067A 	    INSV    R3, #6, #1, 55(R0)					      ;

				  37   A0     0067E									      ;

    0000G  CF	         01	       24  EF 00680 	    EXTZV   #36, #1, MOUNT_OPTIONS, R2				      ; 1152

				       52     00686									      ;

		         51	  08   AC  D0 00687 	    MOVL    HOME_BLOCK, R1					      ; 1153

				       08  13 0068B 	    BEQL    3$							      ;

      2A   A1	         01	       01  EF 0068D 	    EXTZV   #1, #1, 42(R1), R1					      ;

				       51     00692									      ;

				       02  11 00693 	    BRB     4$							      ;

				       51  D4 00695 3$:     CLRL    R1							      ;

	   53	         51	       52  89 00697 4$:     BISB3   R2, R1, R3						      ;

	   01	         07	       53  F0 0069B 	    INSV    R3, #7, #1, 55(R0)					      ;

				  37   A0     0069F									      ;

					   04 006A1 	    RET     							      ; 1100



; Routine Size:  73 bytes







; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 6

; Digital Equipment Corporation

;

;	1159	ROUTINE KERNEL_HANDLER (SIGNAL, MECHANISM) : NOVALUE =

;	1160	

;	1161	!++

;	1162	!

;	1163	! FUNCTIONAL DESCRIPTION:

;	1164	!

;	1165	!	This routine is the condition handler for all of the kernel mode

;	1166	!	code. It undoes any damage done so far and returns the error

;	1167	!	status to the user mode caller.

;	1168	!

;	1169	!

;	1170	! CALLING SEQUENCE:

;	1171	!	KERNEL_HANDLER (ARG1, ARG2)

;	1172	!

;	1173	! INPUT PARAMETERS:

;	1174	!	ARG1: address of signal vector

;	1175	!	ARG2: address of mechanism vector

;	1176	!

;	1177	! IMPLICIT INPUTS:

;	1178	!	global pointers to blocks allocated

;	1179	!

;	1180	! OUTPUT PARAMETERS:

;	1181	!	NONE

;	1182	!

;	1183	! IMPLICIT OUTPUTS:

;	1184	!	NONE

;	1185	!

;	1186	! ROUTINE VALUE:

;	1187	!	NONE

;	1188	!

;	1189	! SIDE EFFECTS:

;	1190	!	stack unwound, allocations undone

;	1191	!

;	1192	!--

;	1193	

;	1194	BEGIN

;	1195	

;	1196	MAP

;	1197		SIGNAL		: REF BBLOCK,	! signal vector

;	1198		MECHANISM	: REF BBLOCK;	! mechanism vector

;	1199	

;	1200	LOCAL

;	1201		P		: REF BBLOCK,	! pointer to scan system lists

;	1202		AREA;				! allocation area code

;	1203	

;	1204	EXTERNAL

;	1205		MOUNT_OPTIONS	: BITVECTOR,	! command parser options

;	1206		CLEANUP_FLAGS	: BITVECTOR,	! cleanup action flags

;	1207		MAILBOX_CHANNEL,		! channel number of ACP mailbox

;	1208		REAL_VCB	: REF BBLOCK,	! address of VCB allocated

;	1209		REAL_FCB	: REF BBLOCK,	! address of FCB allocated

;	1210		REAL_WCB	: REF BBLOCK,	! address of window allocated

;	1211		REAL_AQB	: REF BBLOCK,	! address of AQB allocated

;	1212		LOG_ENTRY	: REF BBLOCK,	! address of logical name allocated

;	1213		MTL_ENTRY	: REF BBLOCK,	! address of mounted volume list entry



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 6-1

; Digital Equipment Corporation

;

;	1214		IOC$GL_AQBLIST	: REF BBLOCK ADDRESSING_MODE (ABSOLUTE);

;	1215						! system AQB list

;	1216	

;	1217	EXTERNAL ROUTINE

;	1218		LOCK_IODB,			! interlock system I/O database

;	1219		UNLOCK_IODB,			! unlock system I/O database

;	1220		DEALLOCATE_MEM;			! deallocate system dynamic memory

;	1221	

;	1222	

;	1223	! Deallocate whatever control blocks exist to wherever they came from.

;	1224	!

;	1225	

;	1226	IF .SIGNAL[CHF$L_SIG_NAME] NEQ SS$_UNWIND

;	1227	THEN

;	1228	    BEGIN

;	1229	

;	1230	! Restore the system exception vectors.

;	1231	!

;	1232	

;	1233	    $SETEXV (VECTOR = 0, ADDRES = .SYSEXV[0]);

;	1234	    $SETEXV (VECTOR = 1, ADDRES = .SYSEXV[1]);

;	1235	

;	1236	! If there is a mailbox in existence, deassign its channel, thereby

;	1237	! deleting the mailbox.

;	1238	!

;	1239	

;	1240	    IF .CLEANUP_FLAGS[CLF_DEASSMBX]

;	1241	    THEN

;	1242		$DASSGN (CHAN = .MAILBOX_CHANNEL);

;	1243	

;	1244	! If we have created an AQB but no ACP, we must remove the AQB from the

;	1245	! system list.

;	1246	!

;	1247	

;	1248	    IF .CLEANUP_FLAGS[CLF_DELAQB]

;	1249	    THEN

;	1250		BEGIN

;	1251		LOCK_IODB ();

;	1252		P = .IOC$GL_AQBLIST;

;	1253		IF .P EQL .REAL_AQB

;	1254		THEN

;	1255		    IOC$GL_AQBLIST = .REAL_AQB[AQB$L_LINK]

;	1256		ELSE

;	1257		    BEGIN

;	1258		    UNTIL .P[AQB$L_LINK] EQL .REAL_AQB

;	1259		    DO P = .P[AQB$L_LINK];

;	1260		    P[AQB$L_LINK] = .REAL_AQB[AQB$L_LINK];

;	1261		    END;

;	1262		DEALLOCATE_MEM (.REAL_AQB, 0);

;	1263		UNLOCK_IODB ();

;	1264		END;

;	1265	

;	1266	    AREA = 2;				! assume process allocation area

;	1267	    IF .MOUNT_OPTIONS[OPT_GROUP]

;	1268	    OR .MOUNT_OPTIONS[OPT_SYSTEM]



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 6-2

; Digital Equipment Corporation

;

;	1269	    THEN AREA = 1;			! system paged pool if system or group

;	1270	

;	1271	    IF .REAL_VCB NEQ 0

;	1272	    THEN DEALLOCATE_MEM (.REAL_VCB, 0);

;	1273	

;	1274	    IF .REAL_FCB NEQ 0

;	1275	    THEN DEALLOCATE_MEM (.REAL_FCB, 0);

;	1276	

;	1277	    IF .REAL_WCB NEQ 0

;	1278	    THEN DEALLOCATE_MEM (.REAL_WCB, 0);

;	1279	

;	1280	    IF .LOG_ENTRY NEQ 0

;	1281	    THEN DEALLOCATE_MEM (.LOG_ENTRY, .AREA);

;	1282	

;	1283	    IF .MTL_ENTRY NEQ 0

;	1284	    THEN DEALLOCATE_MEM (.MTL_ENTRY, .AREA);

;	1285	

;	1286	! Return the condition code in R0.

;	1287	!

;	1288	

;	1289	    MECHANISM[CHF$L_MCH_SAVR0] = .SIGNAL[CHF$L_SIG_NAME];

;	1290	    $UNWIND ();

;	1291	

;	1292	    END;

;	1293	END;					! end of routine KERNEL_HANDLER







							    .GLOBL  MAILBOX_CHANNEL, REAL_AQB, LOG_ENTRY, MTL_ENTRY

							    .GLOBL  IOC$GL_AQBLIST, DEALLOCATE_MEM, SYS$DASSGN, SYS$UNWIND



					 0E0C 006A2 KERNEL_HANDLER:

							    .WORD   Save R2,R3,R9,R10,R11				      ; 1159

		         59 00000000G  9F  9E 006A4 	    MOVAB   @#IOC$GL_AQBLIST, R9				      ;

		         5A 00000000G  9F  9E 006AB 	    MOVAB   @#SYS$SETEXV, R10					      ;

		         5B	0000G  CF  9E 006B2 	    MOVAB   DEALLOCATE_MEM, R11					      ;

		         53	  04   AC  D0 006B7 	    MOVL    SIGNAL, R3						      ; 1226

	      00000920   8F	  04   A3  D1 006BB 	    CMPL    4(R3), #2336					      ;

				       01  12 006C3 	    BNEQ    1$							      ;

					   04 006C5 	    RET     							      ;

				       7E  7C 006C6 1$:     CLRQ    -(SP)						      ; 1233

				0000'  CF  DD 006C8 	    PUSHL   SYSEXV						      ;

				       7E  D4 006CC 	    CLRL    -(SP)						      ;

		         6A	       04  FB 006CE 	    CALLS   #4, SYS$SETEXV					      ;

				       7E  7C 006D1 	    CLRQ    -(SP)						      ; 1234

				0000'  CF  DD 006D3 	    PUSHL   SYSEXV+4						      ;

				       01  DD 006D7 	    PUSHL   #1							      ;

		         6A	       04  FB 006D9 	    CALLS   #4, SYS$SETEXV					      ;

	   0B	  0000G  CF	       03  E1 006DC 	    BBC     #3, CLEANUP_FLAGS, 2$				      ; 1240

				0000G  CF  DD 006E2 	    PUSHL   MAILBOX_CHANNEL					      ; 1242

	      00000000G  9F	       01  FB 006E6 	    CALLS   #1, @#SYS$DASSGN					      ;

	   35	  0000G  CF	       02  E1 006ED 2$:     BBC     #2, CLEANUP_FLAGS, 6$				      ; 1248

		  0000G  CF	       00  FB 006F3 	    CALLS   #0, LOCK_IODB					      ; 1251

		         50	       69  D0 006F8 	    MOVL    IOC$GL_AQBLIST, P					      ; 1252

		         51	0000G  CF  D0 006FB 	    MOVL    REAL_AQB, R1					      ; 1253



; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 6-3

; Digital Equipment Corporation

;

		         51	       50  D1 00700 	    CMPL    P, R1						      ;

				       06  12 00703 	    BNEQ    3$							      ;

		         69	  10   A1  D0 00705 	    MOVL    16(R1), IOC$GL_AQBLIST				      ; 1255

				       11  11 00709 	    BRB     5$							      ; 1253

		         51	  10   A0  D1 0070B 3$:     CMPL    16(P), R1						      ; 1258

				       06  13 0070F 	    BEQL    4$							      ;

		         50	  10   A0  D0 00711 	    MOVL    16(P), P						      ; 1259

				       F4  11 00715 	    BRB     3$							      ; 1258

		    10   A0	  10   A1  D0 00717 4$:     MOVL    16(R1), 16(P)					      ; 1260

				       7E  D4 0071C 5$:     CLRL    -(SP)						      ; 1262

				       51  DD 0071E 	    PUSHL   R1							      ;

		         6B	       02  FB 00720 	    CALLS   #2, DEALLOCATE_MEM					      ;

		  0000G  CF	       00  FB 00723 	    CALLS   #0, UNLOCK_IODB					      ; 1263

		         52	       02  D0 00728 6$:     MOVL    #2, AREA						      ; 1266

	   05	  0000G  CF	       07  E0 0072B 	    BBS     #7, MOUNT_OPTIONS, 7$				      ; 1267

		         03	0000G  CF  E9 00731 	    BLBC    MOUNT_OPTIONS+1, 8$					      ; 1268

		         52	       01  D0 00736 7$:     MOVL    #1, AREA						      ; 1269

		         50	0000G  CF  D0 00739 8$:     MOVL    REAL_VCB, R0					      ; 1271

				       07  13 0073E 	    BEQL    9$							      ;

				       7E  D4 00740 	    CLRL    -(SP)						      ; 1272

				       50  DD 00742 	    PUSHL   R0							      ;

		         6B	       02  FB 00744 	    CALLS   #2, DEALLOCATE_MEM					      ;

		         50	0000G  CF  D0 00747 9$:     MOVL    REAL_FCB, R0					      ; 1274

				       07  13 0074C 	    BEQL    10$							      ;

				       7E  D4 0074E 	    CLRL    -(SP)						      ; 1275

				       50  DD 00750 	    PUSHL   R0							      ;

		         6B	       02  FB 00752 	    CALLS   #2, DEALLOCATE_MEM					      ;

		         50	0000G  CF  D0 00755 10$:    MOVL    REAL_WCB, R0					      ; 1277

				       07  13 0075A 	    BEQL    11$							      ;

				       7E  D4 0075C 	    CLRL    -(SP)						      ; 1278

				       50  DD 0075E 	    PUSHL   R0							      ;

		         6B	       02  FB 00760 	    CALLS   #2, DEALLOCATE_MEM					      ;

		         50	0000G  CF  D0 00763 11$:    MOVL    LOG_ENTRY, R0					      ; 1280

				       05  13 00768 	    BEQL    12$							      ;

				       05  BB 0076A 	    PUSHR   #^M<R0,R2>						      ; 1281

		         6B	       02  FB 0076C 	    CALLS   #2, DEALLOCATE_MEM					      ;

		         50	0000G  CF  D0 0076F 12$:    MOVL    MTL_ENTRY, R0					      ; 1283

				       05  13 00774 	    BEQL    13$							      ;

				       05  BB 00776 	    PUSHR   #^M<R0,R2>						      ; 1284

		         6B	       02  FB 00778 	    CALLS   #2, DEALLOCATE_MEM					      ;

		         50	  08   AC  D0 0077B 13$:    MOVL    MECHANISM, R0					      ; 1289

		    0C   A0	  04   A3  D0 0077F 	    MOVL    4(R3), 12(R0)					      ;

				       7E  7C 00784 	    CLRQ    -(SP)						      ; 1290

	      00000000G  9F	       02  FB 00786 	    CALLS   #2, @#SYS$UNWIND					      ;

					   04 0078D 14$:    RET     							      ; 1159



; Routine Size:  236 bytes





;	1294	

;	1295	END

;	1296	ELUDOM









; Bliss-32 7.352	Saturday 21-AUG-1978 23:55:37	DBB3:[MOUNT.SRC]MOUDK2.B32;20					Page 6-4

; Digital Equipment Corporation

;



							    .GLOBL  LIB$SIGNAL, LIB$STOP



;				       PSECT SUMMARY

;

;	Name		 Bytes			       Attributes

;

;  $OWN$          	   896    WRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $PLIT$         	    24  NOWRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $CODE$         	  1934  NOWRT,  RD ,  EXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)









;				LIBRARY STATISTICS

;

;					     -------- Symbols --------    Blocks

;	File				     Total    Loaded   Percent      Read

;

;  DBA4:[SYSLIB]LIB.L32;1		      5582        97         1       299











; Size:		1934 code + 920 data bytes

; Run Time:	01:02.0

; Elapsed Time:	02:33.0

; Memory Used:	486 pages

; Compilation Complete

