

; Bliss-32 10.1-416	Monday 21-AUG-1978 23:09:35	DBB3:[F11B.SRC]CREATE.B32;14					Page 1

;

;	0001	MODULE CREATE (

;	0002			LANGUAGE (BLISS32),

;	0003			IDENT = 'B0028B'

;	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:  F11ACP Structure Level 2

;	0029	!

;	0030	! ABSTRACT:

;	0031	!

;	0032	!	This module processes the create function. It creates a file with the

;	0033	!	attributes requested, enters it in a directory if desired, and

;	0034	!	accesses it if requested.

;	0035	!

;	0036	! ENVIRONMENT:

;	0037	!

;	0038	!	STARLET operating system, including privileged system services

;	0039	!	and internal exec routines.

;	0040	!

;	0041	!--

;	0042	!

;	0043	!

;	0044	! AUTHOR:  Andrew C. Goldstein,	 CREATION DATE:  28-Mar-1977  15:05

;	0045	!

;	0046	! REVISION HISTORY:

;	0047	!

;	0048	!   Andrew C. Goldstein, 31-Mar-1977  13:10

;	0049	!   X0002 - Add ENTER subfunction

;	0050	!

;	0051	!   Andrew C. Goldstein, 1-Apr-1977  16:58

;	0052	!   X0003 - Move GET_FIB out of kernel mode

;	0053	!

;	0054	!   Andrew C. Goldstein, 8-Apr-1977  14:48

;	0055	!   X0004 - Add supersede subfunction



; Bliss-32 10.1-416	Monday 21-AUG-1978 23:09:35	DBB3:[F11B.SRC]CREATE.B32;14					Page 1-1

;

;	0056	!

;	0057	!   Andrew C. Goldstein, 12-Apr-1977  16:18

;	0058	!   X0005 - Modify for buffer management

;	0059	!

;	0060	!   Andrew C. Goldstein, 14-Apr-1977  10:38

;	0061	!   X0006 - Switch context area for secondary delete

;	0062	!

;	0063	!   Andrew C. Goldstein, 2-May-1977  16:30

;	0064	!   X0007 - Insert creation date and time

;	0065	!

;	0066	!   Andrew C. Goldstein, 3-May-1977  15:05

;	0067	!   X0008 - Add file protection check

;	0068	!

;	0069	!   Andrew C. Goldstein, 9-May-1977  19:55

;	0070	!   X0009 - Put write attributes and access under CREATE flag

;	0071	!

;	0072	!   Andrew C. Goldstein, 11-May-1977  13:11

;	0073	!   X0010 - Add mark for delete subfunction

;	0074	!

;	0075	!   Andrew C. Goldstein, 18-May-1977  14:48

;	0076	!   X0011 - Record file header address

;	0077	!

;	0078	!   Andrew C. Goldstein, 23-May-1977  15:44

;	0079	!   X0012 - Mark file header for re-read during directory operation

;	0080	!

;	0081	!   Andrew C. Goldstein, 12-Jul-1977  14:16

;	0082	!   X0013 - Move WRITE_ATTRIB out of kernel mode

;	0083	!

;	0084	!   Andrew C. Goldstein, 13-Jul-1977  15:32

;	0085	!   X0014 - Rework file header checksumming

;	0086	!

;	0087	!   Andrew C. Goldstein, 10-Aug-1977  15:30

;	0088	!   X0015 - Add multi-header support

;	0089	!

;	0090	!   Andrew C. Goldstein, 22-Aug-1977  14:21

;	0091	!   X0016 - Add supersede status code

;	0092	!

;	0093	!   Andrew C. Goldstein, 2-Nov-1977  13:30

;	0094	!   X0017 - Check window size parameter

;	0095	!

;	0096	!   Andrew C. Goldstein, 12-Dec-1977  13:22

;	0097	!   X0018 - file ID interface changes

;	0098	!

;	0099	!   Andrew C. Goldstein, 12-Dec-1977  15:09

;	0100	!   X0019 - Move header setup to CREATE_HEADER

;	0101	!

;	0102	!   Andrew C. Goldstein, 14-Dec-1977  14:10

;	0103	!   X0020 - Modify for structure level 2

;	0104	!

;	0105	!   Andrew C. Goldstein, 16-Jan-1978  10:42

;	0106	!   B0021 - Leave supersede bit set for cleanup

;	0107	!

;	0108	!   Andrew C. Goldstein, 22-Jan-1978  16:58

;	0109	!   B0022 - Change name in file header to ASCII

;	0110	!



; Bliss-32 10.1-416	Monday 21-AUG-1978 23:09:35	DBB3:[F11B.SRC]CREATE.B32;14					Page 1-2

;

;	0111	!   Andrew C. Goldstein, 24-Jan-1978  17:04

;	0112	!   B0023 - Fix file header initialization

;	0113	!

;	0114	!   Andrew C. Goldstein, 7-Mar-1978  21:46

;	0115	!   B0024 - Remove use of CLF_RFILEHDR

;	0116	!

;	0117	!   Andrew C. Goldstein, 4-May-78  22:12

;	0118	!   B0025 - Remove window size restriction

;	0119	!

;	0120	!   Andrew C. Goldstein, 6-Jun-78  0:53

;	0121	!   B0026 - Add implicit spooling support

;	0122	!

;	0123	!   Andrew C. Goldstein, 12-Jun-78  21:07

;	0124	!   B0027 - PCB vector name change

;	0125	!

;	0126	!   Andrew C. Goldstein, 28-Jun-78  16:37

;	0127	!   B0028 - Add allocation interlock, move extend to after write attributes

;	0128	!

;	0129	!**

;	0130	

;	0131	

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

;	0133	REQUIRE 'SRC$:FCPDEF.B32';



; Bliss-32 10.1-416	Monday 21-AUG-1978 23:09:35	DBB3:[F11B.SRC]CREATE.B32;14					Page 2

;

;	0482	GLOBAL ROUTINE CREATE =

;	0483	

;	0484	!++

;	0485	!

;	0486	! FUNCTIONAL DESCRIPTION:

;	0487	!

;	0488	!	This routine processes the CREATE function. It creates a file with the

;	0489	!	attributes requested, enters it in a directory if desired, and

;	0490	!	accesses the file if requested.

;	0491	!

;	0492	! CALLING SEQUENCE:

;	0493	!	CREATE ()

;	0494	!

;	0495	! INPUT PARAMETERS:

;	0496	!	NONE

;	0497	!

;	0498	! IMPLICIT INPUTS:

;	0499	!	CURRENT_VCB: VCB of volume

;	0500	!	IO_PACKET: packet of this I/O request

;	0501	!

;	0502	! OUTPUT PARAMETERS:

;	0503	!	NONE

;	0504	!

;	0505	! IMPLICIT OUTPUTS:

;	0506	!	PRIMARY_FCB: FCB of file if accessed

;	0507	!	CURRENT_WINDOW: window of file if accessed

;	0508	!	USER_STATUS: I/O status block of user

;	0509	!

;	0510	! ROUTINE VALUE:

;	0511	!	1 if successful

;	0512	!	0 if error

;	0513	!

;	0514	! SIDE EFFECTS:

;	0515	!	File created, blocks allocated, directory modified, file accessed, etc.

;	0516	!

;	0517	!--

;	0518	

;	0519	BEGIN

;	0520	

;	0521	LOCAL

;	0522		PACKET		: REF BBLOCK,	! address of I/O packet

;	0523		ABD		: REF BBLOCKVECTOR [,ABD$C_LENGTH],

;	0524						! buffer descriptors

;	0525		FIB		: REF BBLOCK,	! file identification block

;	0526		RESULT_LENGTH,			! length of result string from ENTER

;	0527		RESULT		: VECTOR [20, BYTE], ! result string from ENTER

;	0528		IDENT_AREA	: REF BBLOCK,	! pointer to file header ident area

;	0529		PCB		: REF BBLOCK,	! process control block of user

;	0530		MAP_AREA	: REF BBLOCK,	! file header map area

;	0531		IDX_FCB		: REF BBLOCK,	! FCB of index file

;	0532		FCB		: REF BBLOCK,	! FCB address

;	0533		HEADER		: REF BBLOCK,	! address of file header

;	0534		FUNCTION	: BLOCK [1];	! function code qualifiers

;	0535	

;	0536	EXTERNAL



; Bliss-32 10.1-416	Monday 21-AUG-1978 23:09:35	DBB3:[F11B.SRC]CREATE.B32;14					Page 2-1

;

;	0537		USER_STATUS	: VECTOR,	! I/O status block of user

;	0538		SCH$GL_PCBVEC	: REF VECTOR ADDRESSING_MODE (ABSOLUTE),

;	0539						! system PCB vector

;	0540		CURRENT_VCB	: REF BBLOCK,	! VCB of volume

;	0541		PRIMARY_FCB	: REF BBLOCK,	! FCB of file

;	0542		CURRENT_WINDOW	: REF BBLOCK,	! window for file

;	0543		IO_PACKET	: REF BBLOCK,	! I/O request packet

;	0544		FILE_HEADER	: REF BBLOCK,	! global address of file header

;	0545		NEW_FID,			! unrecorded file ID

;	0546		HEADER_LBN,			! LBN of current file header

;	0547		CURRENT_FIB	: REF BBLOCK,	! pointer to FIB in use

;	0548		SUPER_FID	: BBLOCK,	! file ID of superseded file

;	0549		SECOND_FIB	: BBLOCK,	! FIB for secondary operation

;	0550		CLEANUP_FLAGS	: BITVECTOR,	! cleanup action flags

;	0551		CONTEXT_START,			! start of context area

;	0552		CONTEXT_SAVE;			! start of context save area

;	0553	

;	0554	EXTERNAL LITERAL

;	0555		CONTEXT_SIZE;			! length of context save area

;	0556	

;	0557	EXTERNAL ROUTINE

;	0558		GET_FIB,			! get FIB for operation

;	0559		CHECK_PROTECT,			! check file protection

;	0560		CREATE_HEADER,			! create a file ID and header

;	0561		CHECKSUM,			! compute header checksum

;	0562		MARK_DIRTY,			! mark buffer for write-back

;	0563		WRITE_HEADER,			! write file header

;	0564		READ_HEADER,			! read file header

;	0565		ENTER,				! enter file in directory

;	0566		COPY_NAME,			! copy file name to result string

;	0567		CREATE_FCB,			! create an FCB

;	0568		CREATE_WINDOW,			! create a window

;	0569		MAKE_ACCESS,			! complete the access

;	0570		MARKDEL_FCB,			! mark FCB for delete

;	0571		WRITE_ATTRIB,			! write attributes

;	0572		EXTEND,				! extend the file

;	0573		MARK_DELETE,			! mark file for delete

;	0574		NEXT_HEADER,			! read next extension file header

;	0575		UPDATE_FCB;			! update file control block

;	0576	

;	0577	

;	0578	! Enable the deaccess cleanup if an access is taking place.

;	0579	!

;	0580	

;	0581	PACKET = .IO_PACKET;

;	0582	FUNCTION = .PACKET[IRP$W_FUNC];

;	0583	IF .FUNCTION[IO$V_ACCESS]

;	0584	THEN

;	0585	    BEGIN

;	0586	    CLEANUP_FLAGS[CLF_ZCHANNEL] = 1;

;	0587	    CLEANUP_FLAGS[CLF_DELWINDOW] = 1;

;	0588	    END;

;	0589	

;	0590	! Set up pointers to interesting control blocks.

;	0591	!



; Bliss-32 10.1-416	Monday 21-AUG-1978 23:09:35	DBB3:[F11B.SRC]CREATE.B32;14					Page 2-2

;

;	0592	

;	0593						! pointer to buffer descriptors

;	0594	ABD = .BBLOCK [.PACKET[IRP$L_SVAPTE], AIB$L_DESCRIPT];

;	0595	FIB = GET_FIB (.ABD);			! pointer to FIB

;	0596	

;	0597	IF .FIB[FIB$V_TRUNC]

;	0598	OR (.FUNCTION[IO$V_DELETE] AND NOT .FUNCTION[IO$V_ACCESS])

;	0599	OR (NOT .FUNCTION[IO$V_CREATE]

;	0600	    AND (.FIB[FIB$V_EXTEND]

;	0601		OR .PACKET[IRP$W_BCNT] GTR ABD$C_ATTRIB

;	0602		OR .FUNCTION[IO$V_ACCESS]

;	0603		)

;	0604	    )

;	0605	THEN ERR_EXIT (SS$_BADPARAM);

;	0606	

;	0607	IF .CURRENT_VCB[VCB$V_NOALLOC]

;	0608	THEN ERR_EXIT (SS$_WRITLCK);

;	0609	

;	0610	! Do the create if requested. Start by allocating a file number from the

;	0611	! index file bitmap and reading in the initial file header.

;	0612	!

;	0613	

;	0614	IF .FUNCTION[IO$V_CREATE]

;	0615	THEN

;	0616	    BEGIN

;	0617	    CHECK_PROTECT (CREATE_ACCESS, 0, 0);

;	0618	    IF .CURRENT_VCB[VCB$V_NOALLOC]

;	0619	    THEN ERR_EXIT (SS$_WRITLCK);

;	0620	    HEADER = CREATE_HEADER ();

;	0621	    CH$MOVE (FID$C_LENGTH, HEADER[FH2$W_FID], FIB[FIB$W_FID]);

;	0622	

;	0623	! Now build an initialized file header in the buffer.

;	0624	!

;	0625	

;	0626	    HEADER[FH2$B_IDOFFSET] = FH2$C_LENGTH / 2;

;	0627	    HEADER[FH2$B_MPOFFSET] = (FH2$C_LENGTH+FI2$C_LENGTH) / 2;

;	0628	    HEADER[FH2$B_ACOFFSET] = ($BYTEOFFSET (FH2$W_CHECKSUM)) / 2;

;	0629	    HEADER[FH2$B_RSOFFSET] = ($BYTEOFFSET (FH2$W_CHECKSUM)) / 2;

;	0630	    HEADER[FH2$W_SEG_NUM] = 0;

;	0631	    HEADER[FH2$W_STRUCLEV] = FH2$C_LEVEL2 + 1;

;	0632	

;	0633	    CH$FILL (0, 512 - $BYTEOFFSET(FH2$W_EXT_FID), HEADER[FH2$W_EXT_FID]);

;	0634	    PCB = .SCH$GL_PCBVEC[.(PACKET[IRP$L_PID])<0,16>];

;	0635	    HEADER[FH2$L_FILEOWNER] = .PCB[PCB$L_UIC];

;	0636	

;	0637	    IF .FUNCTION[IO$V_DELETE]

;	0638	    THEN HEADER[FH2$V_MARKDEL] = 1;

;	0639	

;	0640	    IF .CLEANUP_FLAGS[CLF_SPOOLFILE]

;	0641	    THEN HEADER[FH2$V_SPOOL] = 1;

;	0642	

;	0643	    NEW_FID = 0;			! new file ID is no longer unrecorded

;	0644	    MARK_DIRTY (.HEADER);

;	0645	    CLEANUP_FLAGS[CLF_DELFILE] = 1;

;	0646	    FILE_HEADER = .HEADER;		! record header address for cleanup



; Bliss-32 10.1-416	Monday 21-AUG-1978 23:09:35	DBB3:[F11B.SRC]CREATE.B32;14					Page 2-3

;

;	0647	    CHECKSUM (.HEADER);

;	0648	    END;

;	0649	

;	0650	! If a non-zero directory ID is supplied, enter the file in the directory.

;	0651	! Otherwise, just copy down the name string (if any) into the result string.

;	0652	! Note that directory operations are also nooped on spool files operations.

;	0653	!

;	0654	

;	0655	IF .CLEANUP_FLAGS[CLF_DIRECTORY] AND NOT .CLEANUP_FLAGS[CLF_SPOOLFILE]

;	0656	THEN

;	0657	    ENTER (.ABD, .FIB, RESULT_LENGTH, RESULT)

;	0658	ELSE

;	0659	    BEGIN

;	0660	    KERNEL_CALL (COPY_NAME, .ABD);

;	0661	    RESULT_LENGTH = .ABD[ABD$C_NAME, ABD$W_COUNT];

;	0662	    CH$MOVE (.RESULT_LENGTH,

;	0663		.ABD[ABD$C_NAME, ABD$W_TEXT] + ABD[ABD$C_NAME, ABD$W_TEXT] + 1, RESULT);

;	0664	    END;

;	0665	

;	0666	! Copy the file string into the header ident area. Then write attributes

;	0667	! as specified.

;	0668	!

;	0669	

;	0670	IF .FUNCTION[IO$V_CREATE]

;	0671	THEN

;	0672	    BEGIN

;	0673	    HEADER = READ_HEADER (FIB[FIB$W_FID], 0);

;	0674	

;	0675	    IDENT_AREA = .HEADER + .HEADER[FH2$B_IDOFFSET]*2;

;	0676	    CH$COPY (.RESULT_LENGTH, RESULT, ' ', FI2$S_FILENAME, IDENT_AREA[FI2$T_FILENAME]);

;	0677	    $GETTIM (TIMADR = IDENT_AREA[FI2$Q_CREDATE]);

;	0678	

;	0679	    IF .PACKET[IRP$W_BCNT] GTR ABD$C_ATTRIB

;	0680	    THEN WRITE_ATTRIB (.HEADER, .ABD);

;	0681	

;	0682	! If access is requested, access the file.

;	0683	!

;	0684	

;	0685	    IF .FUNCTION[IO$V_ACCESS]

;	0686	    THEN

;	0687		BEGIN

;	0688		FCB = KERNEL_CALL (CREATE_FCB, .HEADER);

;	0689		PRIMARY_FCB = .FCB;

;	0690	

;	0691		CURRENT_WINDOW = KERNEL_CALL (CREATE_WINDOW, .FIB[FIB$L_ACCTL],

;     P 0692		    .FIB[FIB$B_WSIZE], .HEADER, .PACKET[IRP$L_PID], .FCB);

;	0693		KERNEL_CALL (MAKE_ACCESS, .FCB, .CURRENT_WINDOW, .ABD);

;	0694		IF .FUNCTION[IO$V_DELETE]

;	0695		THEN KERNEL_CALL (MARKDEL_FCB, .FCB);

;	0696		END;

;	0697	

;	0698	! Now extend the file if requested.

;	0699	!

;	0700	

;	0701	    IF .FIB[FIB$V_EXTEND] THEN EXTEND (.FIB, .HEADER);



; Bliss-32 10.1-416	Monday 21-AUG-1978 23:09:35	DBB3:[F11B.SRC]CREATE.B32;14					Page 2-4

;

;	0702	    HEADER = .FILE_HEADER;

;	0703	    KERNEL_CALL (UPDATE_FCB, .HEADER);

;	0704	    CHECKSUM (.HEADER);

;	0705	    WRITE_HEADER ();

;	0706	    END;

;	0707	

;	0708	! If this is a supersede operation, delete the file that was removed during

;	0709	! the enter operation above. This must be done last since we cannot undo

;	0710	! a delete in cleaning up from a subsequent error. We first copy the primary

;	0711	! context into the context save area since this is a secondary operation.

;	0712	!

;	0713	

;	0714	IF .CLEANUP_FLAGS[CLF_SUPERSEDE]

;	0715	THEN

;	0716	    BEGIN

;	0717	    USER_STATUS[0] = SS$_SUPERSEDE;

;	0718	    CH$MOVE (CONTEXT_SIZE, CONTEXT_START, CONTEXT_SAVE);

;	0719	    CH$FILL (0, CONTEXT_SIZE, CONTEXT_START);

;	0720	    CH$COPY (FID$C_LENGTH, SUPER_FID, 0,

;	0721		     FIB$C_LENGTH - $BYTEOFFSET (FIB$W_FID), SECOND_FIB[FIB$W_FID]);

;	0722	    CURRENT_FIB = SECOND_FIB;

;	0723	    MARK_DELETE (SECOND_FIB);

;	0724	    END;

;	0725	

;	0726	

;	0727	RETURN 1;

;	0728	

;	0729	END;					! end of routine CREATE





							    .TITLE  CREATE

							    .IDENT  \B0028B\



							    .EXTRN  USER_STATUS, SCH$GL_PCBVEC, CURRENT_VCB, PRIMARY_FCB

							    .EXTRN  CURRENT_WINDOW, IO_PACKET, FILE_HEADER, NEW_FID

							    .EXTRN  HEADER_LBN, CURRENT_FIB, SUPER_FID, SECOND_FIB

							    .EXTRN  CLEANUP_FLAGS, CONTEXT_START, CONTEXT_SAVE, CONTEXT_SIZE

							    .EXTRN  GET_FIB, CHECK_PROTECT, CREATE_HEADER, CHECKSUM

							    .EXTRN  MARK_DIRTY, WRITE_HEADER, READ_HEADER, ENTER, COPY_NAME

							    .EXTRN  CREATE_FCB, CREATE_WINDOW, MAKE_ACCESS, MARKDEL_FCB

							    .EXTRN  WRITE_ATTRIB, EXTEND, MARK_DELETE, NEXT_HEADER

							    .EXTRN  UPDATE_FCB, SYS$CMKRNL, SYS$GETTIM



							    .PSECT  $CODE$,NOWRT,2



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

		         5E 	       18  C2 00002 	    SUBL2   #24, SP						      ;

		         59 	0000G  CF  D0 00005 	    MOVL    IO_PACKET, PACKET					      ; 0581

		         5B 	  20   A9  3C 0000A 	    MOVZWL  32(PACKET), FUNCTION				      ; 0582

	   07 	         5B 	       06  E1 0000E 	    BBC     #6, FUNCTION, 1$					      ; 0583

		  0000G  CF	0402   8F  A8 00012 	    BISW2   #1026, CLEANUP_FLAGS+2				      ; 0587

		         5A 	  2C   B9  D0 00019 1$:     MOVL    @44(PACKET), ABD					      ; 0594

				       5A  DD 0001D 	    PUSHL   ABD							      ; 0595

		  0000G  CF	       01  FB 0001F 	    CALLS   #1, GET_FIB						      ;

		         58 	       50  D0 00024 	    MOVL    R0, FIB						      ;



; Bliss-32 10.1-416	Monday 21-AUG-1978 23:09:35	DBB3:[F11B.SRC]CREATE.B32;14					Page 2-5

;

		         1B 	  17   A8  E8 00027 	    BLBS    23(FIB), 3$						      ; 0597

	   04 	         5B 	       08  E1 0002B 	    BBC     #8, FUNCTION, 2$					      ; 0598

	   13 	         5B 	       06  E1 0002F 	    BBC     #6, FUNCTION, 3$					      ;

	   13 	         5B 	       07  E0 00033 2$:     BBS     #7, FUNCTION, 4$					      ; 0599

	   0A 	    16   A8	       07  E0 00037 	    BBS     #7, 22(FIB), 3$					      ; 0600

		         05 	  32   A9  B1 0003C 	    CMPW    50(PACKET), #5					      ; 0601

				       04  1A 00040 	    BGTRU   3$							      ;

	   04 	         5B 	       06  E1 00042 	    BBC     #6, FUNCTION, 4$					      ; 0602

				       14  BF 00046 3$:     CHMU    #20							      ; 0605

				       28  11 00048 	    BRB     7$							      ;

		         50 	0000G  CF  D0 0004A 4$:     MOVL    CURRENT_VCB, R0					      ; 0607

	   1A 	    0B   A0	       04  E0 0004F 	    BBS     #4, 11(R0), 6$					      ;

	   03 	         5B 	       07  E0 00054 	    BBS     #7, FUNCTION, 5$					      ; 0614

				     0085  31 00058 	    BRW     11$							      ;

				       7E  7C 0005B 5$:     CLRQ    -(SP)						      ; 0617

				       03  DD 0005D 	    PUSHL   #3							      ;

		  0000G  CF	       03  FB 0005F 	    CALLS   #3, CHECK_PROTECT					      ;

		         50 	0000G  CF  D0 00064 	    MOVL    CURRENT_VCB, R0					      ; 0618

	   07 	    0B   A0	       04  E1 00069 	    BBC     #4, 11(R0), 8$					      ;

				025C   8F  BF 0006E 6$:     CHMU    #604						      ; 0619

				     01BF  31 00072 7$:     BRW     20$							      ;

		  0000G  CF	       00  FB 00075 8$:     CALLS   #0, CREATE_HEADER					      ; 0620

		         56 	       50  D0 0007A 	    MOVL    R0, HEADER						      ;

      04   A8	    08   A6	       06  28 0007D 	    MOVC3   #6, 8(HEADER), 4(FIB)				      ; 0621

		         66 	4126   8F  B0 00083 	    MOVW    #16678, (HEADER)					      ; 0626

		    02   A6	FFFF   8F  3C 00088 	    MOVZWL  #65535, 2(HEADER)					      ; 0628

		    06   A6	0201   8F  B0 0008E 	    MOVW    #513, 6(HEADER)					      ; 0631

	   00 	         6E 	       00  2C 00094 	    MOVC5   #0, (SP), #0, #498, 14(HEADER)			      ; 0633

		    0E   A6	01F2   8F     00098									      ;

		         51 00000000G  9F  D0 0009D 	    MOVL    @#SCH$GL_PCBVEC, R1					      ; 0634

		         50 	  0C   A9  3C 000A4 	    MOVZWL  12(PACKET), R0					      ;

		         50 	     6140  D0 000A8 	    MOVL    (R1)[R0], PCB					      ;

		    3C   A6	  20   A0  D0 000AC 	    MOVL    32(PCB), 60(HEADER)					      ; 0635

	   05 	         5B 	       08  E1 000B1 	    BBC     #8, FUNCTION, 9$					      ; 0637

		    35   A6	  80   8F  88 000B5 	    BISB2   #128, 53(HEADER)					      ; 0638

	   04 	  0000G  CF	       07  E1 000BA 9$:     BBC     #7, CLEANUP_FLAGS, 10$				      ; 0640

		    35   A6	       10  88 000C0 	    BISB2   #16, 53(HEADER)					      ; 0641

				0000G  CF  D4 000C4 10$:    CLRL    NEW_FID						      ; 0643

				       56  DD 000C8 	    PUSHL   HEADER						      ; 0644

		  0000G  CF	       01  FB 000CA 	    CALLS   #1, MARK_DIRTY					      ;

		  0000G  CF	       20  88 000CF 	    BISB2   #32, CLEANUP_FLAGS+2				      ; 0645

		  0000G  CF	       56  D0 000D4 	    MOVL    HEADER, FILE_HEADER					      ; 0646

				       56  DD 000D9 	    PUSHL   HEADER						      ; 0647

		  0000G  CF	       01  FB 000DB 	    CALLS   #1, CHECKSUM					      ;

	   17 	  0000G  CF	       06  E1 000E0 11$:    BBC     #6, CLEANUP_FLAGS, 12$				      ; 0655

	   11 	  0000G  CF	       07  E0 000E6 	    BBS     #7, CLEANUP_FLAGS, 12$				      ;

				  04   AE  9F 000EC 	    PUSHAB  RESULT						      ; 0657

				  04   AE  9F 000EF 	    PUSHAB  RESULT_LENGTH					      ;

				       58  DD 000F2 	    PUSHL   FIB							      ;

				       5A  DD 000F4 	    PUSHL   ABD							      ;

		  0000G  CF	       04  FB 000F6 	    CALLS   #4, ENTER						      ;

				       23  11 000FB 	    BRB     13$							      ; 0655

				       5A  DD 000FD 12$:    PUSHL   ABD							      ; 0660

				       01  DD 000FF 	    PUSHL   #1							      ;

				       5E  DD 00101 	    PUSHL   SP							      ;



; Bliss-32 10.1-416	Monday 21-AUG-1978 23:09:35	DBB3:[F11B.SRC]CREATE.B32;14					Page 2-6

;

				0000G  CF  9F 00103 	    PUSHAB  COPY_NAME						      ;

	      00000000G  9F	       04  FB 00107 	    CALLS   #4, @#SYS$CMKRNL					      ;

		         6E 	  12   AA  3C 0010E 	    MOVZWL  18(ABD), RESULT_LENGTH				      ; 0661

		         51 	  10   AA  9E 00112 	    MOVAB   16(ABD), R1						      ; 0663

		         50 	       61  3C 00116 	    MOVZWL  (R1), R0						      ;

      04   AE	    01 A140	       6E  28 00119 	    MOVC3   RESULT_LENGTH, 1(R1)[R0], RESULT			      ; 0662

	   03 	         5B 	       07  E0 00120 13$:    BBS     #7, FUNCTION, 14$					      ; 0670

				     00CE  31 00124 	    BRW     18$							      ;

				       7E  D4 00127 14$:    CLRL    -(SP)						      ; 0673

				  04   A8  9F 00129 	    PUSHAB  4(FIB)						      ;

		  0000G  CF	       02  FB 0012C 	    CALLS   #2, READ_HEADER					      ;

		         56 	       50  D0 00131 	    MOVL    R0, HEADER						      ;

		         50 	       66  9A 00134 	    MOVZBL  (HEADER), R0					      ; 0675

		         57 	     6640  3E 00137 	    MOVAW   (HEADER)[R0], IDENT_AREA				      ;

	   20 	    04   AE	       6E  2C 0013B 	    MOVC5   RESULT_LENGTH, RESULT, #32, #20, (IDENT_AREA)	      ; 0676

		         67 	       14     00140									      ;

				  16   A7  9F 00142 	    PUSHAB  22(IDENT_AREA)					      ; 0677

	      00000000G  9F	       01  FB 00145 	    CALLS   #1, @#SYS$GETTIM					      ;

		         05 	  32   A9  B1 0014C 	    CMPW    50(PACKET), #5					      ; 0679

				       09  1B 00150 	    BLEQU   15$							      ;

				0440   8F  BB 00152 	    PUSHR   #^M<R6,R10>						      ; 0680

		  0000G  CF	       02  FB 00156 	    CALLS   #2, WRITE_ATTRIB					      ;

	   66 	         5B 	       06  E1 0015B 15$:    BBC     #6, FUNCTION, 16$					      ; 0685

				       56  DD 0015F 	    PUSHL   HEADER						      ; 0688

				       01  DD 00161 	    PUSHL   #1							      ;

				       5E  DD 00163 	    PUSHL   SP							      ;

				0000G  CF  9F 00165 	    PUSHAB  CREATE_FCB						      ;

	      00000000G  9F	       04  FB 00169 	    CALLS   #4, @#SYS$CMKRNL					      ;

		         52 	       50  D0 00170 	    MOVL    R0, FCB						      ;

		  0000G  CF	       52  D0 00173 	    MOVL    FCB, PRIMARY_FCB					      ; 0689

				       52  DD 00178 	    PUSHL   FCB							      ; 0692

				  0C   A9  DD 0017A 	    PUSHL   12(PACKET)						      ;

				       56  DD 0017D 	    PUSHL   HEADER						      ;

		         7E 	  03   A8  98 0017F 	    CVTBL   3(FIB), -(SP)					      ;

				       68  DD 00183 	    PUSHL   (FIB)						      ;

				       05  DD 00185 	    PUSHL   #5							      ;

				       5E  DD 00187 	    PUSHL   SP							      ;

				0000G  CF  9F 00189 	    PUSHAB  CREATE_WINDOW					      ;

	      00000000G  9F	       08  FB 0018D 	    CALLS   #8, @#SYS$CMKRNL					      ;

		  0000G  CF	       50  D0 00194 	    MOVL    R0, CURRENT_WINDOW					      ;

				       5A  DD 00199 	    PUSHL   ABD							      ; 0693

				0000G  CF  DD 0019B 	    PUSHL   CURRENT_WINDOW					      ;

				       52  DD 0019F 	    PUSHL   FCB							      ;

				       03  DD 001A1 	    PUSHL   #3							      ;

				       5E  DD 001A3 	    PUSHL   SP							      ;

				0000G  CF  9F 001A5 	    PUSHAB  MAKE_ACCESS						      ;

	      00000000G  9F	       06  FB 001A9 	    CALLS   #6, @#SYS$CMKRNL					      ;

	   11 	         5B 	       08  E1 001B0 	    BBC     #8, FUNCTION, 16$					      ; 0694

				       52  DD 001B4 	    PUSHL   FCB							      ; 0695

				       01  DD 001B6 	    PUSHL   #1							      ;

				       5E  DD 001B8 	    PUSHL   SP							      ;

				0000G  CF  9F 001BA 	    PUSHAB  MARKDEL_FCB						      ;

	      00000000G  9F	       04  FB 001BE 	    CALLS   #4, @#SYS$CMKRNL					      ;

	   09 	    16   A8	       07  E1 001C5 16$:    BBC     #7, 22(FIB), 17$					      ; 0701

				       56  DD 001CA 	    PUSHL   HEADER						      ;



; Bliss-32 10.1-416	Monday 21-AUG-1978 23:09:35	DBB3:[F11B.SRC]CREATE.B32;14					Page 2-7

;

				       58  DD 001CC 	    PUSHL   FIB							      ;

		  0000G  CF	       02  FB 001CE 	    CALLS   #2, EXTEND						      ;

		         56 	0000G  CF  D0 001D3 17$:    MOVL    FILE_HEADER, HEADER					      ; 0702

				       56  DD 001D8 	    PUSHL   HEADER						      ; 0703

				       01  DD 001DA 	    PUSHL   #1							      ;

				       5E  DD 001DC 	    PUSHL   SP							      ;

				0000G  CF  9F 001DE 	    PUSHAB  UPDATE_FCB						      ;

	      00000000G  9F	       04  FB 001E2 	    CALLS   #4, @#SYS$CMKRNL					      ;

				       56  DD 001E9 	    PUSHL   HEADER						      ; 0704

		  0000G  CF	       01  FB 001EB 	    CALLS   #1, CHECKSUM					      ;

		  0000G  CF	       00  FB 001F0 	    CALLS   #0, WRITE_HEADER					      ; 0705

	   35 	  0000G  CF	       05  E1 001F5 18$:    BBC     #5, CLEANUP_FLAGS, 19$				      ; 0714

		  0000G  CF	0631   8F  3C 001FB 	    MOVZWL  #1585, USER_STATUS					      ; 0717

    0000G  CF	  0000G  CF	0000G  8F  28 00202 	    MOVC3   #CONTEXT_SIZE, CONTEXT_START, CONTEXT_SAVE		      ; 0718

	   00 	         6E 	       00  2C 0020C 	    MOVC5   #0, (SP), #0, #CONTEXT_SIZE, CONTEXT_START		      ; 0719

		  0000G  CF	0000G  8F     00210									      ;

	   00 	  0000G  CF	       06  2C 00216 	    MOVC5   #6, SUPER_FID, #0, #40, SECOND_FIB+4		      ; 0720

		  0000G  CF	       28     0021C									      ;

		  0000G  CF	0000G  CF  9E 00220 	    MOVAB   SECOND_FIB, CURRENT_FIB				      ; 0722

				0000G  CF  9F 00227 	    PUSHAB  SECOND_FIB						      ; 0723

		  0000G  CF	       01  FB 0022B 	    CALLS   #1, MARK_DELETE					      ;

		         50 	       01  D0 00230 19$:    MOVL    #1, R0						      ; 0727

					   04 00233 	    RET     							      ;

				       50  D4 00234 20$:    CLRL    R0							      ; 0482

					   04 00236 	    RET     							      ;



; Routine Size:  567 bytes





;	0730	

;	0731	END

;	0732	ELUDOM













;				       PSECT SUMMARY

;

;	Name		 Bytes			       Attributes

;

;  $CODE$         	   567  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        52         0       260







; Bliss-32 10.1-416	Monday 21-AUG-1978 23:09:35	DBB3:[F11B.SRC]CREATE.B32;14					Page 2-8

;







; Size:		567 code + 0 data bytes

; Run Time:	00:13.0

; Elapsed Time:	00:29.8

; Memory Used:	392 pages

; Compilation Complete

