

; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 1

; Digital Equipment Corporation

;

;	0001	MODULE WTATTR (

;	0002			LANGUAGE (BLISS32),

;	0003			IDENT = 'A0001A'

;	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:  MTAACP

;	0029	!

;	0030	! ABSTRACT:

;	0031	!	THIS MODULE HANDLES THE WRITING OF ATTRIBUTES ON A CREATE

;	0032	!

;	0033	! ENVIRONMENT:

;	0034	!

;	0035	!	STARLET OPERATING SYSTEM, INCLUDING PRIVILEGED SYSTEM SERVICES

;	0036	!	AND INTERNAL EXEC ROUTINES.

;	0037	!

;	0038	!--

;	0039	!

;	0040	!

;	0041	! AUTHOR:  D. H. GILLESPIE,	 CREATION DATE:  2-JUN-77

;	0042	  

;	0043	!

;	0044	! REVISION HISTORY:

;	0045	!

;	0046	!   D. H. Gillespie, 21-Mar-1978  11:22

;	0047	!   X0002 - UPDATE TO DATE CHANGE MADE BY ANDY

;	0048	!

;	0049	!   D. H. Gillespie, 15-May-78  8:51

;	0050	!   A0001 - change CURRENT_VCB to a register

;	0051	!

;	0052	!**

;	0053	

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

;	0055	REQUIRE 'SRC$:MTADEF.B32';



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 1-1

; Digital Equipment Corporation

;

;	0351	

;	0352	FORWARD ROUTINE

;	0353		WRITE_ATTRIBUTE	: COMMON_CALL NOVALUE,	!WRITE ATTRIBUTES, MAIN ROUTINE

;	0354		WEXPIREDT	: COMMON_CALL NOVALUE,	!WRITE EXPIRATION DATE INTO HDR1

;	0355		WLABELAST	: COMMON_CALL NOVALUE,	!WRITE LABEL AST ATTRIBUTE

;	0356		WRECATTR	: COMMON_CALL NOVALUE,	!WRITE RECORD ATTRIBUTES

;	0357		WFILENAME	: COMMON_CALL NOVALUE,	!WRITE FILE NAME INTO NAME BLOCK

;	0358		WFILETYPE	: COMMON_CALL NOVALUE,	!WRITE FILE TYPE INTO NAME BLOCK

;	0359		WFILEVER	: COMMON_CALL NOVALUE,	!WRITE FILE VERSION INTO NAME BLOCK

;	0360		WBLOCKSZ	: COMMON_CALL NOVALUE,	!WRITE BLOCK SIZE 

;	0361		WCREDATE	: COMMON_CALL NOVALUE,	!WRITE 64-BIT CREATE DATE

;	0362		WEXPDATE	: COMMON_CALL NOVALUE,	!WRITE 64_BIT EXPIRATION DATE

;	0363		WBINDATE	: COMMON_CALL NOVALUE;	!WRITE 64_BIT DATE

;	0364	

;	0365	EXTERNAL

;	0366		HDR1		: REF BBLOCK,		!ADDRESS OF HDR1 LABEL

;	0367		HDR2		: REF BBLOCK,		!ADDRESS OF HDR2 LABEL

;	0368		NMBLOCK		: BBLOCK[10];		!NAME BLOCK

;	0369	

;	0370	

;	0371	EXTERNAL ROUTINE

;	0372		COMPLETE_USRLBL	: NOVALUE;		!COMPLETE USER LABEL AST PROCESSING

;	0373	

;	0374	OWN

;	0375		BLOCKSZ,				!BLOCK SIZE

;	0376		MRS		: WORD;			!MAXIMUM RECORD LENGTH

;	0377	

;	0378	BIND

;	0379		CVT5		 =	DESCRIPTOR('!5ZW');

;	0380	



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 2

; Digital Equipment Corporation

;

;	0381	GLOBAL ROUTINE WRITE_ATTRIBUTE : COMMON_CALL NOVALUE  =

;	0382	

;	0383	!++

;	0384	!

;	0385	! FUNCTIONAL DESCRIPTION:

;	0386	!	THIS ROUTINE WRITES ATTRIBUTES INTO HDR1 AND HDR2

;	0387	!

;	0388	! CALLING SEQUENCE:

;	0389	!	WRITE_ATTRIBUTE()

;	0390	!

;	0391	! INPUT PARAMETERS:

;	0392	!	NONE

;	0393	!

;	0394	! IMPLICIT INPUTS:

;	0395	!	IO_PACKET - ADDRESS OF CURRENT IO REQUEST PACKET

;	0396	!	CURRENT_VCB - ADDRESS OF CURRENT VCB

;	0397	!

;	0398	! OUTPUT PARAMETERS:

;	0399	!	NONE

;	0400	!

;	0401	! IMPLICIT OUTPUTS:

;	0402	!	NONE

;	0403	!

;	0404	! ROUTINE VALUE:

;	0405	!	NONE

;	0406	!

;	0407	! SIDE EFFECTS:

;	0408	!	NONE

;	0409	!

;	0410	!--

;	0411	

;	0412	BEGIN

;	0413	

;	0414	EXTERNAL REGISTER

;	0415		COMMON_REG;

;	0416	

;	0417	

;	0418	

;	0419	EXTERNAL ROUTINE

;	0420		SYS$FAO:	ADDRESSING_MODE(ABSOLUTE);	!FORMATTED ASCII OUTPUT

;	0421	

;	0422	EXTERNAL

;	0423		ATR_TABLE:	BLOCKVECTOR[MAX_ATTR_CODE,1],	!ATTRIBUTE TABLE

;	0424		IO_PACKET:	REF BBLOCK;			!ADDRESS OF CURRENT IO REQUEST PACKET

;	0425	

;	0426	MACRO	EQLLEN	= 0,24,8,0%;

;	0427	MACRO	MAX	= 0,0,8,0%;

;	0428	

;	0429	BIND

;	0430	ILLEGAL	= UPLIT(512+2048) : BITVECTOR,		!FILE HEADER, USER LABLES

;	0431	

;	0432	CALL	= UPLIT(8+16+32+64+128+1024+65536+262144) : BITVECTOR,

;	0433	TABLE	= UPLIT(

;	0434			WRECATTR,

;	0435			WFILENAME,



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 2-1

; Digital Equipment Corporation

;

;	0436			WFILETYPE,

;	0437			WFILEVER,

;	0438			WEXPIREDT,

;	0439			WBLOCKSZ,

;	0440			WCREDATE,

;	0441			WEXPDATE) : VECTOR[8,LONG];

;	0442	

;	0443	LOCAL

;	0444		DESCR:		VECTOR [2],				!DESCRIPTOR OF OUTPUT FOR FAO

;	0445		PACKET:		REF BBLOCK,				!IO PACKET ADDRESS

;	0446		ABD:		REF BBLOCKVECTOR [,ABD$C_LENGTH],	!ADDRESS OF DESCRIPTOR VECTOR

;	0447		BITS,							!NUMBER OF BITS SET

;	0448		P,							!POINTER TO ATTRIBUTE

;	0449		CODE,							!ATTRIBUTE CODE

;	0450		COUNT;							!NUMBER OF CHAR IN ATTRIBUTE

;	0451	

;	0452	

;	0453	PACKET = .IO_PACKET;

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

;	0455	MRS = 0;							!DEFAULT RECORD SIZE

;	0456	BLOCKSZ = 512;							!DEFAULT RECORD SIZE

;	0457	

;	0458	INCRU I FROM ABD$C_ATTRIB TO .PACKET[IRP$W_BCNT] -1 DO

;	0459	    BEGIN

;	0460	    P = .ABD[.I,ABD$W_TEXT] + ABD[.I,ABD$W_TEXT];

;	0461	    COUNT = .ABD[.I,ABD$W_COUNT];

;	0462	    CODE = .(.P)<0,8> - 1;

;	0463	    P = .P + 1;

;	0464	    IF .CODE GTRU MAX_ATTR_CODE - 1

;	0465	    THEN ERR_EXIT(SS$_BADATTRIB);

;	0466	    IF .ILLEGAL[.CODE] THEN ERR_EXIT(SS$_BADATTRIB);

;	0467	

;	0468	! CHECK ATTRIBUTE LENGTH

;	0469	    IF .ATR_TABLE[.CODE,EQLLEN]

;	0470	    THEN

;	0471		BEGIN

;	0472		IF .COUNT NEQU .ATR_TABLE[.CODE,MAX] THEN ERR_EXIT(SS$_BADATTRIB);

;	0473		END

;	0474	    ELSE IF .COUNT GTRU .ATR_TABLE[.CODE,MAX] THEN ERR_EXIT(SS$_BADATTRIB);

;	0475	

;	0476	    IF .CALL[.CODE] THEN

;	0477		BEGIN

;	0478		BITS = 0;

;	0479		INCRU I FROM 0 TO .CODE - 1 DO			 	!COUNT THE BITS

;	0480		    BEGIN

;	0481		    IF .CALL[.I] THEN BITS = .BITS + 1;

;	0482		    END;

;	0483		(.TABLE[.BITS])(.P,.COUNT);

;	0484		END;

;	0485	    END;

;	0486	

;	0487	

;	0488	! AFTER BOTH BLOCKSIZE AND MAXIMUM RECORD SIZE ATTRIBUTES HAVE BEEN PROCESSED

;	0489	! THEN DETERMINE THE VALUE OF RECLEN IN HDR2

;	0490	IF .MRS EQLU 0



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 2-2

; Digital Equipment Corporation

;

;	0491	THEN CH$MOVE(HD2$S_BLOCKLEN,HDR2[HD2$T_BLOCKLEN],HDR2[HD2$T_RECLEN])

;	0492	ELSE

;	0493	    BEGIN

;	0494	    IF .HDR2[HD2$B_RECFORMAT] EQL 'D'

;	0495	    THEN MRS = .MRS + 4;					!COUNT OVERHEAD FOR ANSI 'D' RECORD

;	0496	    DESCR[0] = HD2$S_RECLEN;					!FAO OUTPUT DESCRIPTOR

;	0497	    DESCR[1] = HDR2[HD2$T_RECLEN];

;	0498	    SYS$FAO(CVT5,,DESCR,.MRS);

;	0499	    END;

;	0500	

;	0501	! NOW CHECK THAT THE BLOCK SIZE IS VALID AND THAT THE RECORD SIZE IS NOT BIGGER

;	0502	! THEN THE BLOCK SIZE

;	0503	IF .BLOCKSZ LSSU 18 OR .MRS GTRU .BLOCKSZ THEN ERR_EXIT(SS$_BADATTRIB);

;	0504	

;	0505	END;							!END OF ROUTINE





							    .TITLE  WTATTR

							    .IDENT  \A0001A\



							    .PSECT  $CODE$,NOWRT,2



					      00000 P.AAB:  .ASCII  \!5ZW\						      ;

					      00004 P.AAA:  .LONG   4							      ;

					      00008 	    .ADDRESS  P.AAB						      ;

					      0000C P.AAC:  .LONG   2560						      ;

					      00010 P.AAD:  .LONG   328952						      ;

					      00014 P.AAE:  .ADDRESS  WRECATTR , WFILENAME , WFILETYPE , WFILEVER , -	      ;

								    WEXPIREDT , WBLOCKSZ , WCREDATE , WEXPDATE		      ;



							    .PSECT  $LOCKEDD1$,NOEXE,2



					      00000 BLOCKSZ:.BLKB   4

					      00004 MRS:    .BLKB   2



						    CVT5=		P.AAA

						    ILLEGAL=		P.AAC

						    CALL=		P.AAD

						    TABLE=		P.AAE

							    .GLOBL  HDR1, HDR2, NMBLOCK, COMPLETE_USRLBL, SYS$FAO

							    .GLOBL  ATR_TABLE, IO_PACKET



							    .PSECT  $CODE$,NOWRT,2



					 07FC 00034 	    .ENTRY  WRITE_ATTRIBUTE, Save R2,R3,R4,R5,R6,R7,R8,R9,R10	      ; 0381

		         59	  D7   AF  9E 00036 	    MOVAB   CALL, R9						      ;

		         5A	0000'  CF  9E 0003A 	    MOVAB   MRS, R10						      ;

		         5E	       08  C2 0003F 	    SUBL2   #8, SP						      ;

		         50	0000G  CF  D0 00042 	    MOVL    IO_PACKET, PACKET					      ; 0453

		         55	  2C   B0  D0 00047 	    MOVL    @44(PACKET), ABD					      ; 0454

				       6A  B4 0004B 	    CLRW    MRS							      ; 0455

		    FC   AA	0200   8F  3C 0004D 	    MOVZWL  #512, BLOCKSZ					      ; 0456

		         58	  32   A0  3C 00053 	    MOVZWL  50(PACKET), R8					      ; 0458

				       58  D7 00057 	    DECL    R8							      ;

		         52	       05  D0 00059 	    MOVL    #5, I						      ;



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 2-3

; Digital Equipment Corporation

;

				       68  11 0005C 	    BRB     11$							      ;

		         50	     6542  7E 0005E 1$:     MOVAQ   (ABD)[I], R0					      ; 0460

		         56	       60  3C 00062 	    MOVZWL  (R0), P						      ;

		         56	       50  C0 00065 	    ADDL2   R0, P						      ;

				  02 A542  7F 00068 	    PUSHAQ  2(ABD)[I]						      ; 0461

		         57	       9E  3C 0006C 	    MOVZWL  @(SP)+, COUNT					      ;

		         53	       86  9A 0006F 	    MOVZBL  (P)+, CODE						      ; 0462

				       53  D7 00072 	    DECL    CODE						      ;

		         18	       53  D1 00074 	    CMPL    CODE, #24						      ; 0464

				       02  1B 00077 	    BLEQU   2$							      ;

				       34  BF 00079 	    CHMU    #52							      ; 0465

	   02	    FC   A9	       53  E1 0007B 2$:     BBC     CODE, ILLEGAL, 3$					      ; 0466

				       34  BF 00080 	    CHMU    #52							      ;

		         50	0000GCF43  DE 00082 3$:     MOVAL   ATR_TABLE[CODE], R0					      ; 0469

		         09	  03   A0  E9 00088 	    BLBC    3(R0), 4$						      ;

	   60	         08	       00  ED 0008C 	    CMPZV   #0, #8, (R0), COUNT					      ; 0472

				       57     00090									      ;

				       0B  13 00091 	    BEQL    6$							      ;

				       07  11 00093 	    BRB     5$							      ;

	   60	         08	       00  ED 00095 4$:     CMPZV   #0, #8, (R0), COUNT					      ; 0474

				       57     00099									      ;

				       02  1E 0009A 	    BGEQU   6$							      ;

				       34  BF 0009C 5$:     CHMU    #52							      ;

	   22	         69	       53  E1 0009E 6$:     BBC     CODE, CALL, 10$					      ; 0476

				       54  D4 000A2 	    CLRL    BITS						      ; 0478

	   51	         53	       01  C3 000A4 	    SUBL3   #1, CODE, R1					      ; 0479

				       50  D4 000A8 	    CLRL    I							      ;

				       08  11 000AA 	    BRB     9$							      ;

	   02	         69	       50  E1 000AC 7$:     BBC     I, CALL, 8$						      ; 0481

				       54  D6 000B0 	    INCL    BITS						      ;

				       50  D6 000B2 8$:     INCL    I							      ; 0479

		         51	       50  D1 000B4 9$:     CMPL    I, R1						      ;

				       F3  1B 000B7 	    BLEQU   7$							      ;

		         50	  04 A944  D0 000B9 	    MOVL    TABLE[BITS], R0					      ; 0483

		         7E	       56  7D 000BE 	    MOVQ    P, -(SP)						      ;

		         60	       02  FB 000C1 	    CALLS   #2, (R0)						      ;

				       52  D6 000C4 10$:    INCL    I							      ; 0458

		         58	       52  D1 000C6 11$:    CMPL    I, R8						      ;

				       93  1B 000C9 	    BLEQU   1$							      ;

		         56	0000G  CF  D0 000CB 	    MOVL    HDR2, R6						      ; 0491

				       6A  B5 000D0 	    TSTW    MRS							      ; 0490

				       08  12 000D2 	    BNEQ    12$							      ;

      0A   A6	    05   A6	       05  28 000D4 	    MOVC3   #5, 5(R6), 10(R6)					      ; 0491

				       24  11 000DA 	    BRB     14$							      ; 0490

		    44   8F	  04   A6  91 000DC 12$:    CMPB    4(R6), #68						      ; 0494

				       03  12 000E1 	    BNEQ    13$							      ;

		         6A	       04  A0 000E3 	    ADDW2   #4, MRS						      ; 0495

		         6E	       05  D0 000E6 13$:    MOVL    #5, DESCR						      ; 0496

		    04   AE	  0A   A6  9E 000E9 	    MOVAB   10(R6), DESCR+4					      ; 0497

		         7E	       6A  3C 000EE 	    MOVZWL  MRS, -(SP)						      ; 0498

				  04   AE  9F 000F1 	    PUSHAB  DESCR						      ;

				       7E  D4 000F4 	    CLRL    -(SP)						      ;

				  F4   A9  9F 000F6 	    PUSHAB  CVT5						      ; 0381

	      00000000G  9F	       04  FB 000F9 	    CALLS   #4, @#SYS$FAO					      ; 0498

		         12	  FC   AA  D1 00100 14$:    CMPL    BLOCKSZ, #18					      ; 0503



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 2-4

; Digital Equipment Corporation

;

				       08  1F 00104 	    BLSSU   15$							      ;

	   6A	         10	       00  ED 00106 	    CMPZV   #0, #16, MRS, BLOCKSZ				      ;

				  FC   AA     0010A									      ;

				       02  1B 0010C 	    BLEQU   16$							      ;

				       34  BF 0010E 15$:    CHMU    #52							      ;

					   04 00110 16$:    RET     							      ; 0381



; Routine Size:  221 bytes







; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 3

; Digital Equipment Corporation

;

;	0506	ROUTINE WEXPIREDT(PTER,COUNT) : COMMON_CALL NOVALUE  =

;	0507	

;	0508	!++

;	0509	!

;	0510	! FUNCTIONAL DESCRIPTION:

;	0511	!	THIS ROUTINE PUTS THE EXPIRATION ATTRIBUTE IN HDR1

;	0512	!

;	0513	! CALLING SEQUENCE:

;	0514	!	WEXPIREDT(ARG1,ARG2)

;	0515	!

;	0516	! INPUT PARAMETERS:

;	0517	!	ARG1 - ADDRESS OF ATTRIBUTE(DDMMMYY)

;	0518	!	ARG2 - NUMBER OF CHARACTERS IN ATTRIBUTE

;	0519	!

;	0520	! IMPLICIT INPUTS:

;	0521	!	CURRENT_VCB - ADDRESS OF CURRENT VCB

;	0522	!

;	0523	! OUTPUT PARAMETERS:

;	0524	!	NONE

;	0525	!

;	0526	! IMPLICIT OUTPUTS:

;	0527	!	EXPIRATION DATE IN HDR1 UPDATED

;	0528	!

;	0529	! ROUTINE VALUE:

;	0530	!	NONE

;	0531	!

;	0532	! SIDE EFFECTS:

;	0533	!	NONE

;	0534	!

;	0535	! USER ERRORS:

;	0536	!	SS$_BADATTRIB - ATTRIBUTE LENGTH MUST EQUAL 7 OR ILLEGAL DATE

;	0537	!

;	0538	!--

;	0539	

;	0540	BEGIN

;	0541	

;	0542	EXTERNAL REGISTER

;	0543		COMMON_REG;

;	0544	

;	0545	LOCAL

;	0546		DATE:		VECTOR [12,BYTE];		!WORK AREA FOR DATE WITH DASHES

;	0547	

;	0548	EXTERNAL ROUTINE

;	0549		CONVDATE_R2J;					!CONVERT DATE FROM REG TO JULIAN(ANSI)

;	0550	

;	0551	! NOW FORMAT DD-MMM-YYYY FROM DDMMMYY

;	0552	(DATE)<0,16> = .(.PTER);

;	0553	(DATE+2)<0,8> = '-';

;	0554	(DATE+3)<0,24> = .(.PTER+2);

;	0555	IF .(.PTER+5)<0,16> GEQU '60'

;	0556	THEN (DATE+6)<0,24> = '-19'

;	0557	ELSE (DATE+6)<0,24> = '-20';

;	0558	(DATE+9)<0,16> = .(.PTER+5);

;	0559	IF NOT CONVDATE_R2J(DATE,BBLOCK[.HDR1,HD1$T_EXPIREDT])

;	0560	THEN ERR_EXIT(SS$_BADATTRIB);



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 3-1

; Digital Equipment Corporation

;

;	0561	

;	0562	END;					!END OF ROUTINE







							    .GLOBL  CONVDATE_R2J



					 0000 00111 WEXPIREDT:

							    .WORD   Save nothing					      ; 0506

		         5E	       0C  C2 00113 	    SUBL2   #12, SP						      ;

		         50	  04   AC  D0 00116 	    MOVL    PTER, R0						      ; 0552

		         6E	       60  B0 0011A 	    MOVW    (R0), DATE						      ;

		    02   AE	       2D  90 0011D 	    MOVB    #45, DATE+2						      ; 0553

	   18	         00	  02   A0  F0 00121 	    INSV    2(R0), #0, #24, DATE+3				      ; 0554

				  03   AE     00126									      ;

		  3036   8F	  05   A0  B1 00128 	    CMPW    5(R0), #12342					      ; 0555

				       0C  1F 0012E 	    BLSSU   1$							      ;

	   18	         00 0039312D   8F  F0 00130 	    INSV    #3748141, #0, #24, DATE+6				      ; 0556

				  06   AE     00138									      ;

				       0A  11 0013A 	    BRB     2$							      ; 0555

	   18	         00 0030322D   8F  F0 0013C 1$:     INSV    #3158573, #0, #24, DATE+6				      ; 0557

				  06   AE     00144									      ;

		    09   AE	  05   A0  B0 00146 2$:     MOVW    5(R0), DATE+9					      ; 0558

	   7E	  0000G  CF	       2F  C1 0014B 	    ADDL3   #47, HDR1, -(SP)					      ; 0559

				  04   AE  9F 00151 	    PUSHAB  DATE						      ;

		  0000G  CF	       02  FB 00154 	    CALLS   #2, CONVDATE_R2J					      ;

		         02	       50  E8 00159 	    BLBS    R0, 3$						      ;

				       34  BF 0015C 	    CHMU    #52							      ; 0560

					   04 0015E 3$:     RET     							      ; 0506



; Routine Size:  78 bytes





;	0563	



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 4

; Digital Equipment Corporation

;

;	0564	ROUTINE WRECATTR(PTER,COUNT) : COMMON_CALL NOVALUE  =

;	0565	

;	0566	!++

;	0567	!

;	0568	! FUNCTIONAL DESCRIPTION:

;	0569	!	THIS ROUTINE RECORDS USER ATTRIBUTES IN HDR2

;	0570	!

;	0571	! CALLING SEQUENCE:

;	0572	!	WRECATTR(ARG1,ARG2)

;	0573	!

;	0574	! INPUT PARAMETERS:

;	0575	!	ARG1 - ADDRESS OF ATTRIBUTE

;	0576	!	ARG2 - SIZE OF ATTRIBUTE

;	0577	!

;	0578	! IMPLICIT INPUTS:

;	0579	!	NONE

;	0580	!

;	0581	! OUTPUT PARAMETERS:

;	0582	!	NONE

;	0583	!

;	0584	! IMPLICIT OUTPUTS:

;	0585	!	HDR2 UPDATED TO REFLECT USER ATTRIBUTES

;	0586	! ROUTINE VALUE:

;	0587	!	NONE

;	0588	!

;	0589	! SIDE EFFECTS:

;	0590	!	NONE

;	0591	!

;	0592	!--

;	0593	

;	0594	BEGIN

;	0595	

;	0596	LITERAL

;	0597		RECTYPE_LEN 	= 5;

;	0598	

;	0599	BIND

;	0600		RECTYPE_ANSI	= UPLIT BYTE('UFDVS') : VECTOR [,BYTE],

;	0601		RECTYPE_FILE11	= UPLIT BYTE(0,1,2,3,0) : VECTOR [,BYTE];

;	0602	

;	0603	EXTERNAL REGISTER

;	0604		COMMON_REG;

;	0605	

;	0606	LOCAL

;	0607		PARTIAL_CNT;					!PARTIAL COUNT FOR MOVE ATTRIBUTES

;	0608	

;	0609	MAP

;	0610		PTER:		REF BBLOCK;			!ADDRESS OF ATTRIBUTE

;	0611	

;	0612	! IS RECORD TYPE PRESENT

;	0613	IF .COUNT GEQU $BYTEOFFSET(FAT$B_RATTRIB)

;	0614	THEN

;	0615	    BEGIN

;	0616	    HDR2[HD2$B_RECFORMAT] = %C'U';

;	0617	

;	0618	    DECR I FROM RECTYPE_LEN - 1 TO 0 DO



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 4-1

; Digital Equipment Corporation

;

;	0619		BEGIN

;	0620		IF .RECTYPE_FILE11[.I] EQL .PTER[FAT$B_RTYPE]

;	0621		THEN HDR2[HD2$B_RECFORMAT] = .RECTYPE_ANSI[.I];

;	0622		END;

;	0623	! U IS UNACCEPTABLE FOR INTERCHANGE TAPES

;	0624	    IF .CURRENT_VCB[VCB$V_INTCHG] AND .HDR2[HD2$B_RECFORMAT] EQLU 'U'

;	0625	    THEN ERR_EXIT(SS$_BADATTRIB);

;	0626	

;	0627	! 'V' IS NOT ANSI SO CHANGE IT TO D

;	0628	    IF .HDR2[HD2$B_RECFORMAT] EQLU 'V'

;	0629	    THEN HDR2[HD2$B_RECFORMAT] = 'D';

;	0630	    END;

;	0631	

;	0632	! IS RECORD ATTRIBUTE PRESENT?

;	0633	PARTIAL_CNT = .COUNT;

;	0634	IF .PARTIAL_CNT GTRU 20 THEN PARTIAL_CNT = 20;

;	0635	CH$COPY(.PARTIAL_CNT,.PTER,0,HD2$S_RECATR1,HDR2[HD2$T_RECATR1]);

;	0636	PARTIAL_CNT = .COUNT - .PARTIAL_CNT;

;	0637	CH$COPY(.PARTIAL_CNT,.PTER+HD2$S_RECATR1,0,HD2$S_RECATR2,HDR2[HD2$T_RECATR2]);

;	0638	MRS = .(.HDR2 + $BYTEOFFSET(HD2$T_RECATR1) + $BYTEOFFSET(FAT$W_RSIZE))<0,16>;

;	0639	IF .MRS EQL 0 THEN

;	0640	MRS = .(.HDR2 + $BYTEOFFSET(HD2$T_RECATR1) + $BYTEOFFSET(FAT$W_MAXREC))<0,16>;

;	0641	END;					!END OF ROUTINE







					      0015F	    .BLKB   1

					      00160 P.AAF:  .ASCII  \UFDVS\						      ;

					      00165	    .BLKB   3

					      00168 P.AAG:  .BYTE   0, 1, 2, 3, 0					      ;

					      0016D	    .BLKB   3



						    RECTYPE_ANSI=	P.AAF

						    RECTYPE_FILE11=	P.AAG





					 07FC 00170 WRECATTR:

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

		         5A	0000G  CF  9E 00172 	    MOVAB   HDR2, R10						      ;

		         01	  08   AC  D1 00177 	    CMPL    COUNT, #1						      ; 0613

				       39  1F 0017B 	    BLSSU   4$							      ;

		         51	       6A  D0 0017D 	    MOVL    HDR2, R1						      ; 0616

		    04   A1	  55   8F  90 00180 	    MOVB    #85, 4(R1)						      ;

		         50	       04  D0 00185 	    MOVL    #4, I						      ; 0618

		    04   BC	  DC AF40  91 00188 1$:     CMPB    RECTYPE_FILE11[I], @PTER				      ; 0620

				       06  12 0018E 	    BNEQ    2$							      ;

		    04   A1	  CC AF40  90 00190 	    MOVB    RECTYPE_ANSI[I], 4(R1)				      ; 0621

		         EF	       50  F4 00196 2$:     SOBGEQ  I, 1$						      ; 0618

	   09	    2C   AB	       04  E1 00199 	    BBC     #4, 44(CURRENT_VCB), 3$				      ; 0624

		    55   8F	  04   A1  91 0019E 	    CMPB    4(R1), #85						      ;

				       02  12 001A3 	    BNEQ    3$							      ;

				       34  BF 001A5 	    CHMU    #52							      ; 0625

		         50	       6A  D0 001A7 3$:     MOVL    HDR2, R0						      ; 0628

		    56   8F	  04   A0  91 001AA 	    CMPB    4(R0), #86						      ;

				       05  12 001AF 	    BNEQ    4$							      ;



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 4-2

; Digital Equipment Corporation

;

		    04   A0	  44   8F  90 001B1 	    MOVB    #68, 4(R0)						      ; 0629

		         57	  08   AC  D0 001B6 4$:     MOVL    COUNT, PARTIAL_CNT					      ; 0633

		         14	       57  D1 001BA 	    CMPL    PARTIAL_CNT, #20					      ; 0634

				       03  1B 001BD 	    BLEQU   5$							      ;

		         57	       14  D0 001BF 	    MOVL    #20, PARTIAL_CNT					      ;

		         58	  04   AC  D0 001C2 5$:     MOVL    PTER, R8						      ; 0635

		         56	       6A  D0 001C6 	    MOVL    HDR2, R6						      ;

		         59	  0F   A6  9E 001C9 	    MOVAB   15(R6), R9						      ;

	   00	         68	       57  2C 001CD 	    MOVC5   PARTIAL_CNT, (R8), #0, #20, (R9)			      ;

		         69	       14     001D1									      ;

	   57	    08   AC	       57  C3 001D3 	    SUBL3   PARTIAL_CNT, COUNT, PARTIAL_CNT			      ; 0636

	   00	    14   A8	       57  2C 001D8 	    MOVC5   PARTIAL_CNT, 20(R8), #0, #12, 37(R6)		      ; 0637

		    25   A6	       0C     001DD									      ;

		  0000'  CF	  02   A9  B0 001E0 	    MOVW    2(R9), MRS						      ; 0638

				       06  12 001E6 	    BNEQ    6$							      ; 0639

		  0000'  CF	  10   A9  B0 001E8 	    MOVW    16(R9), MRS						      ; 0640

					   04 001EE 6$:     RET     							      ; 0564



; Routine Size:  127 bytes





;	0642	



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 5

; Digital Equipment Corporation

;

;	0643	ROUTINE WFILENAME(PTER,COUNT) : COMMON_CALL NOVALUE  =

;	0644	

;	0645	!++

;	0646	!

;	0647	! FUNCTIONAL DESCRIPTION:

;	0648	!	THIS ROUTINE FORMATS NAME BLOCK

;	0649	!

;	0650	! CALLING SEQUENCE:

;	0651	!	WFILENAME(ARG1,ARG2)

;	0652	!

;	0653	! INPUT PARAMETERS:

;	0654	!	ARG1 - ADDRESS OF ATTRIBUTE

;	0655	!	ARG2 - LENGTH OF ATTRIBUTE

;	0656	!

;	0657	! IMPLICIT INPUTS:

;	0658	!	NMBLOCK - 10 CHARACTER BLOCK

;	0659	!

;	0660	! OUTPUT PARAMETERS:

;	0661	!	NONE

;	0662	!

;	0663	! IMPLICIT OUTPUTS:

;	0664	!	NONE

;	0665	!

;	0666	! ROUTINE VALUE:

;	0667	!	NONE

;	0668	!

;	0669	! SIDE EFFECTS:

;	0670	!	NONE

;	0671	!

;	0672	!--

;	0673	

;	0674	BEGIN

;	0675	

;	0676	EXTERNAL REGISTER

;	0677		COMMON_REG;

;	0678	

;	0679	

;	0680	CH$MOVE(.COUNT,.PTER,NMBLOCK);

;	0681	END;					!END OF ROUTINE











					 003C 001EF WFILENAME:

							    .WORD   Save R2,R3,R4,R5					      ; 0643

    0000G  CF	    04   BC	  08   AC  28 001F1 	    MOVC3   COUNT, @PTER, NMBLOCK				      ; 0680

					   04 001F9 	    RET     							      ; 0643



; Routine Size:  11 bytes





;	0682	



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 6

; Digital Equipment Corporation

;

;	0683	ROUTINE WFILETYPE(PTER,COUNT) : COMMON_CALL NOVALUE  =

;	0684	

;	0685	!++

;	0686	!

;	0687	! FUNCTIONAL DESCRIPTION:

;	0688	!	THIS ROUTINE PUTS FILE TYPE ATTRIBUTE INTO NAME BLOCK

;	0689	!

;	0690	! CALLING SEQUENCE:

;	0691	!	WFILETYPE(ARG1,ARG2)

;	0692	!

;	0693	! INPUT PARAMETERS:

;	0694	!	ARG1 - ADDRESS OF ATTRIBUTE

;	0695	!	ARG2 - LENGTH OF ATTRIBUTE

;	0696	!

;	0697	! IMPLICIT INPUTS:

;	0698	!	NONE

;	0699	!

;	0700	! OUTPUT PARAMETERS:

;	0701	!	NONE

;	0702	!

;	0703	! IMPLICIT OUTPUTS:

;	0704	!	NMBLOCK - 10 CHARACTER NAME BLOCK

;	0705	!

;	0706	! ROUTINE VALUE:

;	0707	!	NONE

;	0708	!

;	0709	! SIDE EFFECTS:

;	0710	!	NONE

;	0711	!

;	0712	!--

;	0713	

;	0714	BEGIN

;	0715	

;	0716	EXTERNAL REGISTER

;	0717		COMMON_REG;

;	0718	

;	0719	CH$MOVE(.COUNT,.PTER,NMBLOCK+6);

;	0720	END;					!END OF ROUTINE











					 003C 001FA WFILETYPE:

							    .WORD   Save R2,R3,R4,R5					      ; 0683

    0000G  CF	    04   BC	  08   AC  28 001FC 	    MOVC3   COUNT, @PTER, NMBLOCK+6				      ; 0719

					   04 00204 	    RET     							      ; 0683



; Routine Size:  11 bytes





;	0721	



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 7

; Digital Equipment Corporation

;

;	0722	ROUTINE WFILEVER(PTER,COUNT) : COMMON_CALL NOVALUE  =

;	0723	

;	0724	!++

;	0725	!

;	0726	! FUNCTIONAL DESCRIPTION:

;	0727	!	THIS ROUTINE PUTS FILE VERSION ATTRIBUTES INTO NAME BLOCK

;	0728	!

;	0729	! CALLING SEQUENCE:

;	0730	!	WFILEVER(ARG1,ARG2)

;	0731	!

;	0732	! INPUT PARAMETERS:

;	0733	!	ARG1 - ADDRESS OF ATTRIBUTE

;	0734	!	ARG2 - LENGTH OF ATTRIBUTE

;	0735	!

;	0736	! IMPLICIT INPUTS:

;	0737	!	NONE

;	0738	!

;	0739	! OUTPUT PARAMETERS:

;	0740	!	NONE

;	0741	!

;	0742	! IMPLICIT OUTPUTS:

;	0743	!	NMBLOCK - 10 CHARACTER NAME BLOCK

;	0744	!

;	0745	! ROUTINE VALUE:

;	0746	!	NONE

;	0747	!

;	0748	! SIDE EFFECTS:

;	0749	!	NONE

;	0750	!

;	0751	!--

;	0752	

;	0753	BEGIN

;	0754	

;	0755	EXTERNAL REGISTER

;	0756		COMMON_REG;

;	0757	

;	0758	

;	0759	CH$MOVE(.COUNT,.PTER,NMBLOCK+8);

;	0760	END;				!END OF ROUTINE











					 003C 00205 WFILEVER:

							    .WORD   Save R2,R3,R4,R5					      ; 0722

    0000G  CF	    04   BC	  08   AC  28 00207 	    MOVC3   COUNT, @PTER, NMBLOCK+8				      ; 0759

					   04 0020F 	    RET     							      ; 0722



; Routine Size:  11 bytes





;	0761	



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 8

; Digital Equipment Corporation

;

;	0762	GLOBAL ROUTINE WBLOCKSZ(ADDR,LENGTH) : COMMON_CALL NOVALUE  =

;	0763	

;	0764	!++

;	0765	!

;	0766	! FUNCTIONAL DESCRIPTION:

;	0767	!	THIS ROUTINE WRITES THE BLOCK SIZE AND IF INTERCHANGE WAS

;	0768	!	SPECIFIED ON MOUNT THEN THE BLOCK LENGTH MUST BE LESS THAN 2049.

;	0769	!

;	0770	! CALLING SEQUENCE:

;	0771	!	WBLOCKSZ(ARG1,ARG2)

;	0772	!

;	0773	! INPUT PARAMETERS:

;	0774	!	ARG1 - ADDRESS OF ATTRIBUTE

;	0775	!	ARG2 - LENGTH OF ATTRIBUTE

;	0776	!

;	0777	! IMPLICIT INPUTS:

;	0778	!	NONE

;	0779	!

;	0780	! OUTPUT PARAMETERS:

;	0781	!	NONE

;	0782	!

;	0783	! IMPLICIT OUTPUTS:

;	0784	!	BLOCK SIZE WRITTEN TO HDR2

;	0785	!

;	0786	! ROUTINE VALUE:

;	0787	!	NONE

;	0788	!

;	0789	! SIDE EFFECTS:

;	0790	!	NONE

;	0791	!

;	0792	! USER ERRORS:

;	0793	!	SS$_BADATTRIB - BLOCK SIZE ATTRIBUTE NEQ TO 2

;	0794	!	SS$_NOTINTBLSZ - BLOCK SIZE ON INTERCHANGE TAPE NOT <=2049

;	0795	!--

;	0796	

;	0797	BEGIN

;	0798	

;	0799	EXTERNAL REGISTER

;	0800		COMMON_REG;

;	0801	

;	0802	

;	0803	MAP

;	0804		ADDR		: REF VECTOR[,BYTE];	!ADDRESS OF ATTRIBUTE

;	0805	

;	0806	LOCAL

;	0807		DESCR		: VECTOR [2];

;	0808	

;	0809	EXTERNAL ROUTINE

;	0810		SYS$FAO		: ADDRESSING_MODE(ABSOLUTE);	!FORMATTED ASCII OUTPUT

;	0811	

;	0812	

;	0813	BLOCKSZ = .(.ADDR)<0,16>;

;	0814	IF .CURRENT_VCB[VCB$V_INTCHG] THEN 

;	0815	    IF .BLOCKSZ GTRU 2048 THEN ERR_EXIT (SS$_NOTINTBLSZ);

;	0816	DESCR[0] = HD2$S_BLOCKLEN;



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 8-1

; Digital Equipment Corporation

;

;	0817	DESCR[1] = HDR2[HD2$T_BLOCKLEN];

;	0818	SYS$FAO(CVT5,0,DESCR,.BLOCKSZ);

;	0819	END;				!END OF ROUTINE











					 0400 00210 	    .ENTRY  WBLOCKSZ, Save R10					      ; 0762

		         5A	0000'  CF  9E 00212 	    MOVAB   BLOCKSZ, R10					      ;

		         5E	       08  C2 00217 	    SUBL2   #8, SP						      ;

		         6A	  04   BC  3C 0021A 	    MOVZWL  @ADDR, BLOCKSZ					      ; 0813

	   0D	    2C   AB	       04  E1 0021E 	    BBC     #4, 44(CURRENT_VCB), 1$				      ; 0814

	      00000800   8F	       6A  D1 00223 	    CMPL    BLOCKSZ, #2048					      ; 0815

				       04  1B 0022A 	    BLEQU   1$							      ;

				01D4   8F  BF 0022C 	    CHMU    #468						      ;

		         6E	       05  D0 00230 1$:     MOVL    #5, DESCR						      ; 0816

      04   AE	  0000G  CF	       05  C1 00233 	    ADDL3   #5, HDR2, DESCR+4					      ; 0817

				       6A  DD 0023A 	    PUSHL   BLOCKSZ						      ; 0818

				  04   AE  9F 0023C 	    PUSHAB  DESCR						      ;

				       7E  D4 0023F 	    CLRL    -(SP)						      ;

				FDBF   CF  9F 00241 	    PUSHAB  CVT5						      ; 0762

	      00000000G  9F	       04  FB 00245 	    CALLS   #4, @#SYS$FAO					      ; 0818

					   04 0024C 	    RET     							      ; 0762



; Routine Size:  61 bytes







; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 9

; Digital Equipment Corporation

;

;	0820	ROUTINE WBINDATE(INPUT,INPLEN,OUTPUT) : COMMON_CALL NOVALUE  =

;	0821	

;	0822	!++

;	0823	!

;	0824	! FUNCTIONAL DESCRIPTION:

;	0825	!	THIS ROUTINE CONVERTS A 64 BIT INPUT DATE TO AN ANSI JULIAN DATE

;	0826	!

;	0827	! CALLING SEQUENCE:

;	0828	!	WBINDATE(ARG1,ARG2,ARG3)

;	0829	!

;	0830	! INPUT PARAMETERS:

;	0831	!	ARG1 - ADDRESS OF 64 BIT DATE

;	0832	!	ARG2 - LENGTH OF DATE

;	0833	!	ARG3 - ADDRESS FOR JULIAN DATE TO PLACED

;	0834	!

;	0835	! IMPLICIT INPUTS:

;	0836	!	NONE

;	0837	!

;	0838	! OUTPUT PARAMETERS:

;	0839	!	ARG3 - ADDRESS WHICH RECEIVES JULIAN DATE

;	0840	!

;	0841	! IMPLICIT OUTPUTS:

;	0842	!	NONE

;	0843	!

;	0844	! ROUTINE VALUE:

;	0845	!	NONE

;	0846	!

;	0847	! SIDE EFFECTS:

;	0848	!	NONE

;	0849	!

;	0850	! USER ERRORS:

;	0851	!	SS$_BADATTRIB - ATTRIBUTE LENGTH NEQ 8

;	0852	!

;	0853	!--

;	0854	

;	0855	BEGIN

;	0856	

;	0857	EXTERNAL REGISTER

;	0858		COMMON_REG;

;	0859	

;	0860	

;	0861	LOCAL

;	0862		REGDATE		: VECTOR [12,BYTE],

;	0863		REGDESC		: VECTOR [2];

;	0864	

;	0865	EXTERNAL ROUTINE

;	0866		SYS$ASCTIM	: ADDRESSING_MODE(ABSOLUTE),

;	0867		CONVDATE_R2J;

;	0868	

;	0869	REGDESC[0] = 12;

;	0870	REGDESC[1] = REGDATE;

;	0871	SYS$ASCTIM(0,REGDESC,.INPUT,0);

;	0872	CONVDATE_R2J(REGDATE,.OUTPUT);

;	0873	END;				!END OF ROUTINE





; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 9-1

; Digital Equipment Corporation

;





							    .GLOBL  SYS$ASCTIM



					 0000 0024D WBINDATE:

							    .WORD   Save nothing					      ; 0820

		         5E	       10  C2 0024F 	    SUBL2   #16, SP						      ;

				       0C  DD 00252 	    PUSHL   #12							      ; 0869

		    04   AE	  08   AE  9E 00254 	    MOVAB   REGDATE, REGDESC+4					      ; 0870

				       7E  D4 00259 	    CLRL    -(SP)						      ; 0871

				  04   AC  DD 0025B 	    PUSHL   INPUT						      ;

				  08   AE  9F 0025E 	    PUSHAB  REGDESC						      ;

				       7E  D4 00261 	    CLRL    -(SP)						      ;

	      00000000G  9F	       04  FB 00263 	    CALLS   #4, @#SYS$ASCTIM					      ;

				  0C   AC  DD 0026A 	    PUSHL   OUTPUT						      ; 0872

				  0C   AE  9F 0026D 	    PUSHAB  REGDATE						      ;

		  0000G  CF	       02  FB 00270 	    CALLS   #2, CONVDATE_R2J					      ;

					   04 00275 	    RET     							      ; 0820



; Routine Size:  41 bytes







; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 10

; Digital Equipment Corporation

;

;	0874	ROUTINE WCREDATE(ADDR,LENGTH) : COMMON_CALL NOVALUE  =

;	0875	

;	0876	!++

;	0877	!

;	0878	! FUNCTIONAL DESCRIPTION:

;	0879	!	THIS ROUTINE WRITES THE CREATION DATE GIVEN IN 64 BIT FORMAT

;	0880	!

;	0881	! CALLING SEQUENCE:

;	0882	!	WCREDATE(ARG1,ARG2)

;	0883	!

;	0884	! INPUT PARAMETERS:

;	0885	!	ARG1 - ADDRESS OF ATTRIBUTE

;	0886	!	ARG2 - LENGTH OF ATTRIBUTE

;	0887	!

;	0888	! IMPLICIT INPUTS:

;	0889	!	NONE

;	0890	!

;	0891	! OUTPUT PARAMETERS:

;	0892	!	NONE

;	0893	!

;	0894	! IMPLICIT OUTPUTS:

;	0895	!	CREATION DATE CHANGED IN HDR1

;	0896	!

;	0897	! ROUTINE VALUE:

;	0898	!	NONE

;	0899	!

;	0900	! SIDE EFFECTS:

;	0901	!	NONE

;	0902	!

;	0903	! USER ERRORS:

;	0904	!	SS$_BADATTRIB - ATTRIBUTE LENGTH MUST = 8

;	0905	!--

;	0906	

;	0907	BEGIN

;	0908	

;	0909	EXTERNAL REGISTER

;	0910		COMMON_REG;

;	0911	

;	0912	

;	0913	WBINDATE(.ADDR,.LENGTH,BBLOCK[.HDR1,HD1$T_CREATEDT]);

;	0914	END;					!END OF ROUTINE











					 0000 00276 WCREDATE:

							    .WORD   Save nothing					      ; 0874

	   7E	  0000G  CF	       29  C1 00278 	    ADDL3   #41, HDR1, -(SP)					      ; 0913

		         7E	  04   AC  7D 0027E 	    MOVQ    ADDR, -(SP)						      ;

		    C7   AF	       03  FB 00282 	    CALLS   #3, WBINDATE					      ;

					   04 00286 	    RET     							      ; 0874



; Routine Size:  17 bytes





; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 10-1

; Digital Equipment Corporation

;



;	0915	



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 11

; Digital Equipment Corporation

;

;	0916	ROUTINE WEXPDATE(ADDR,LENGTH) : COMMON_CALL NOVALUE  =

;	0917	

;	0918	!++

;	0919	!

;	0920	! FUNCTIONAL DESCRIPTION:

;	0921	!	THIS ROUTINE WRITES THE EXPIRATION DATE GIVEN THE 64 BIT EXPIRATION

;	0922	!	DATE ATTRIBUTE

;	0923	!

;	0924	! CALLING SEQUENCE:

;	0925	!	WEXPDATE(ARG1,ARG2)

;	0926	!

;	0927	! INPUT PARAMETERS:

;	0928	!	ARG1 - ADDRESS OF ATTRIBUTE

;	0929	!	ARG2 - LENGTH OF ATTRIBUTE

;	0930	!

;	0931	! IMPLICIT INPUTS:

;	0932	!	NONE

;	0933	!

;	0934	! OUTPUT PARAMETERS:

;	0935	!	NONE

;	0936	!

;	0937	! IMPLICIT OUTPUTS:

;	0938	!	EXPIRATION DATE IN HDR1 CHANGED

;	0939	!

;	0940	! ROUTINE VALUE:

;	0941	!	NONE

;	0942	!

;	0943	! SIDE EFFECTS:

;	0944	!	NONE

;	0945	!

;	0946	! USER ERRORS:

;	0947	!	SS$_BADATTRIB - ATTRIBUTE LENGTH NEQ 8

;	0948	!

;	0949	!--

;	0950	

;	0951	BEGIN

;	0952	

;	0953	EXTERNAL REGISTER

;	0954		COMMON_REG;

;	0955	

;	0956	

;	0957	WBINDATE(.ADDR,.LENGTH,BBLOCK[.HDR1,HD1$T_EXPIREDT]);

;	0958	END;					!END OF ROUTINE











					 0000 00287 WEXPDATE:

							    .WORD   Save nothing					      ; 0916

	   7E	  0000G  CF	       2F  C1 00289 	    ADDL3   #47, HDR1, -(SP)					      ; 0957

		         7E	  04   AC  7D 0028F 	    MOVQ    ADDR, -(SP)						      ;

		    B6   AF	       03  FB 00293 	    CALLS   #3, WBINDATE					      ;

					   04 00297 	    RET     							      ; 0916





; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 11-1

; Digital Equipment Corporation

;

; Routine Size:  17 bytes





;	0959	

;	0960	



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 12

; Digital Equipment Corporation

;

;	0961	ROUTINE WLABELAST(ATTRIBUTE) : COMMON_CALL NOVALUE  =

;	0962	

;	0963	!++

;	0964	!

;	0965	! FUNCTIONAL DESCRIPTION:

;	0966	!	THIS ROUTINE VALIDATES AND STORES THE USER'S SUPPLIED AST CONTROL BLOCK

;	0967	!

;	0968	! CALLING SEQUENCE:

;	0969	!	WLABELAST(ARG1)

;	0970	!

;	0971	! INPUT PARAMETERS:

;	0972	!	ARG1	- ADDRESS OF ATTRIBUTE

;	0973	!

;	0974	! IMPLICIT INPUTS:

;	0975	!	CURRENT_VCB - ADDRESS OF CURRENT VOLUME CONTROL BLOCK

;	0976	!

;	0977	! OUTPUT PARAMETERS:

;	0978	!	NONE

;	0979	!

;	0980	! IMPLICIT OUTPUTS:

;	0981	!	NONE

;	0982	!

;	0983	! ROUTINE VALUE:

;	0984	!	NONE

;	0985	!

;	0986	! SIDE EFFECTS:

;	0987	!	NONE

;	0988	!

;	0989	! USER ERRORS:

;	0990	!	NONE

;	0991	!

;	0992	!--

;	0993	

;	0994	BEGIN

;	0995	

;	0996	EXTERNAL REGISTER

;	0997		COMMON_REG;

;	0998	

;	0999	

;	1000	LOCAL

;	1001		AST		: REF BBLOCK,	!USER SUPPLIED AST CONTROL BLOCK

;	1002		FUNCTION	: BBLOCK[1],	!IO FUNCTION CODE AND MODIFIERS

;	1003		LENGTH,

;	1004		MODE;

;	1005	

;	1006	EXTERNAL

;	1007		IO_PACKET	: REF BBLOCK;	!ADDRESS OF IO REQUEST PACKET

;	1008	

;	1009	FUNCTION = .IO_PACKET[IRP$W_FUNC];

;	1010	AST = ..ATTRIBUTE;			!PARAMETER IS ADDRESS OF ATTRIBUTE

;	1011	MODE = 0;

;	1012	LENGTH = 4;

;	1013	BEGIN

;	1014	BUILTIN PROBER;

;	1015	IF .AST NEQ 0



; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 12-1

; Digital Equipment Corporation

;

;	1016	AND (NOT PROBER(MODE,LENGTH,.AST)

;	1017	OR .AST[ACB$B_TYPE] NEQ DYN$C_ACB

;	1018	OR NOT .FUNCTION[IO$V_ACCESS]) THEN ERR_EXIT(SS$_ILLLBLAST);

;	1019	END;

;	1020	

;	1021	! WON'T RETURN ANY AST OTHER THAN THE CURRENTLY RECORDED ONE

;	1022	KERNEL_CALL(COMPLETE_USRLBL,.AST,0);

;	1023	END;







							    .GLOBL  SYS$CMKRNL



					 000C 00298 WLABELAST:

							    .WORD   Save R2,R3						      ; 0961

		         50	0000G  CF  D0 0029A 	    MOVL    IO_PACKET, R0					      ; 1009

		         53	  20   A0  3C 0029F 	    MOVZWL  32(R0), FUNCTION					      ;

		         50	  04   BC  D0 002A3 	    MOVL    @ATTRIBUTE, AST					      ; 1010

		         51	       04  7D 002A7 	    MOVQ    #4, LENGTH						      ; 1012

				       50  D5 002AA 	    TSTL    AST							      ; 1015

				       14  13 002AC 	    BEQL    2$							      ;

	   60	         51	       52  0C 002AE 	    PROBER  MODE, LENGTH, (AST)					      ; 1016

				       0A  13 002B2 	    BEQL    1$							      ;

		         02	  0A   A0  91 002B4 	    CMPB    10(AST), #2						      ; 1017

				       04  12 002B8 	    BNEQ    1$							      ;

	   04	         53	       06  E0 002BA 	    BBS     #6, FUNCTION, 2$					      ; 1018

				0968   8F  BF 002BE 1$:     CHMU    #2408						      ;

				       7E  D4 002C2 2$:     CLRL    -(SP)						      ; 1022

				       50  DD 002C4 	    PUSHL   AST							      ;

				       02  DD 002C6 	    PUSHL   #2							      ;

				       5E  DD 002C8 	    PUSHL   SP							      ;

				0000G  CF  9F 002CA 	    PUSHAB  COMPLETE_USRLBL					      ;

	      00000000G  9F	       05  FB 002CE 	    CALLS   #5, @#SYS$CMKRNL					      ;

					   04 002D5 	    RET     							      ; 0961



; Routine Size:  62 bytes







; Bliss-32 7.352	Saturday 21-AUG-1978 23:46:31	DBB3:[MTAACP.SRC]WTATTR.B32;10					Page 13

; Digital Equipment Corporation

;

;	1024	END

;	1025	ELUDOM













;				       PSECT SUMMARY

;

;	Name		 Bytes			       Attributes

;

;  $LOCKEDD1$     	     6    WRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $CODE$         	   726  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        37         0       246











; Size:		657 code + 75 data bytes

; Run Time:	00:18.7

; Elapsed Time:	00:44.1

; Memory Used:	308 pages

; Compilation Complete

