

; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 1

; Digital Equipment Corporation

;

;	0001	MODULE SCANFILE (	

;	0002			IDENT = 'X01'

;	0003			) =

;	0004	BEGIN

;	0005	

;	0006	!

;	0007	! COPYRIGHT (C) 1978

;	0008	! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

;	0009	!

;	0010	! THIS SOFTWARE IS FURNISHED  UNDER A LICENSE FOR USE ONLY ON A SINGLE

;	0011	! COMPUTER  SYSTEM AND  MAY BE  COPIED ONLY WITH  THE INCLUSION OF THE

;	0012	! ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE, OR ANY OTHER COPIES THEREOF,

;	0013	! MAY NOT BE PROVIDED OR  OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON

;	0014	! EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE

;	0015	! TERMS.  TITLE TO AND  OWNERSHIP OF THE  SOFTWARE  SHALL AT ALL TIMES

;	0016	! REMAIN IN DEC.

;	0017	!

;	0018	! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE

;	0019	! AND SHOULD  NOT BE CONSTRUED  AS A COMMITMENT  BY DIGITAL  EQUIPMENT

;	0020	! CORPORATION.

;	0021	!

;	0022	! DEC ASSUMES  NO  RESPONSIBILITY  FOR  THE USE OR  RELIABILITY OF ITS

;	0023	! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

;	0024	

;	0025	!++

;	0026	! FACILITY:

;	0027	!	DYNAMIC BAD BLOCK UTILITY

;	0028	! ABSTRACT:

;	0029	!	THIS PROCESS EXAMINES FILES SUSPECTED OF CONTAINING BAD

;	0030	!	DISK BLOCKS. THOSE DISK BLOCKS VERIFIED TO BE BAD ARE ADDED

;	0031	!	TO THE BAD BLOCK FILE. THE OTHERS ARE RETURNED TO THE VOLUME

;	0032	!	FOR REUSE.

;	0033	! ENVIRONMENT:

;	0034	!	VAX/VMS OPERATING SYSTEM, VERSION 1.0

;	0035	! AUTHOR:THOMAS G. DOPIRAK	, CREATION DATE:5/16/78

;	0036	!

;	0037	! MODIFIED BY:

;	0038	!

;	0039	! 	, : VERSION

;	0040	! 01	- 

;	0041	!--



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 2

; Digital Equipment Corporation

;

;	0042	!

;	0043	! TABLE OF CONTENTS:

;	0044	!

;	0045	

;	0046	FORWARD ROUTINE

;	0047	    SCAN:NOVALUE,		!MAIN PROGRAM OF FILE PROCESSING LOGIC

;	0048	    GROUP_BLOCKTEST,		!ROUTINE TESTS 'GROUPS' OF BLOCKS

;	0049	    GROUP_RETURN,		!EXAMINES A GROUP OF BLOCKS WHEN ERROR DETECTED

;	0050	    CHECK_BADSTATUS,		!DETERMINES WHETHER A STATUS INDICATES A BAD BLOCK

;	0051	    NORMAL_COMPLETE:NOVALUE,	!CALLED AFTER NORMAL PROCESSING OF A FILE

;	0052	   ERROR_COMPLETE:NOVALUE,	!CALLED AFTER ABNORMAL PROCESSING OF A FILE

;	0053	    TRUNCATE,			!TRUNCATES A FILE CONTAINING NO BAD BLOCKS

;	0054	    TRUNCATE_BAD,		!TRUNCATES  A FILE CONTAINING A BAD BLOCK

;	0055	    BLOCKTEST,			!TESTS AN INDIVIDUAL BLOCK

;	0056	    POSITION_TO_EOF,		!ACCESSES A FILE AND DISCOVERS ITS SIZE

;	0057	    DO_QIOW			!DOES QIOW'S ANS CHECKS STATUS

;	0058		;		!

;	0059	

;	0060	!

;	0061	! INCLUDE FILES:

;	0062	!

;	0063	

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

;	0065	!

;	0066	! MACROS:

;	0067	!

;	0068	

;	0069	MACRO

;	0070	    DIRECTORY_ID=FIB[FIB$W_DID]%,		!START OF DIRECTORY ID

;	0071	        CSTRING[] = (UPLIT BYTE(%CHARCOUNT(%STRING(%REMAINING)),

;     M 0072			%STRING(%REMAINING)) )%

;	0073			;

;	0074	!

;	0075	!VARIOUS DEFINITIONS

;	0076	!

;	0077	

;	0078	LITERAL

;	0079	    BLOCK_TEST_SIZE=15,				!NUMBER OF BLOCKS IN A GROUP

;	0080	    GROUP_SIZE=BLOCK_TEST_SIZE*512,		!NUMBER OF BYTES IN A FROUP

;	0081	    TRIALS_TO_SUC=3;				!NUMBER OF TIMES A BLOCK MUST BE SUCCESSFULLY BE WRITTEN

;	0082							!BEFORE ITS DECLARED NO BAD

;	0083	!

;	0084	! OWN STORAGE:

;	0085	!

;	0086	

;	0087	OWN

;	0088	

;	0089	    !BLOCKS OF TEST DATA

;	0090	    !

;	0091	    DISK_TEXT:VECTOR[GROUP_SIZE,BYTE],

;	0092	    GROUP_TEST_DATA:VECTOR[GROUP_SIZE,BYTE],

;	0093	

;	0094	    READ_FAIL,				!LOGICAL INDICATING IF GROUP FAILED ON READ

;	0095	    TRUNC_BLOCK,			!FIRST VBN ACTUALLY REMOVED IN TRUNCATE

;	0096	    BAD_COUNT:INITIAL(0),		!COUNT OF BAD BLOCKS FOUND



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 2-1

; Digital Equipment Corporation

;

;	0097	    STARTING_BLOCK,			!FIRST VBN IN GROUP

;	0098	    LAST_BLOCK,				!LAST BLOCK IN A GROUP

;	0099	    IOSB:VECTOR[4,WORD] INITIAL(0,0),	!IOSB FOR DISK OPERATIONS

;	0100	    FIB:BLOCK[FIB$C_LENGTH,BYTE]	!FILE IDENTIFICATION BLOCK 

;	0101	    ;

;	0102	!

;	0103	! EQUATED SYMBOLS:

;	0104	!

;	0105	

;	0106	BIND

;	0107	

;	0108	    !

;	0109	    !SYMBOLS FOR TYPES OF BLOCK TEST RESULTS

;	0110	    !

;	0111		NORMAL_STS=0,		!TEST COMPLETED NORMALLY

;	0112		ERROR_STS=1,		!NON-RECOVERABLE ERROR

;	0113	        BAD_STS=2,		!BAD BLOCK INDICATED

;	0114	    TRUE=1,

;	0115	    FALSE=0,

;	0116	    FIB_DESC=UPLIT(FIB$C_LENGTH,FIB)

;	0117	    ;

;	0118	!

;	0119	! EXTERNAL REFERENCES:

;	0120	!

;	0121	

;	0122	EXTERNAL

;	0123	    CHANNEL:WORD,

;	0124	    MBX_CHANNEL:WORD,			!CHANNEL TO F11ACP MAILBOX

;	0125	    ACP_MAIL:BLOCK[,BYTE],		!BUFFER FROM F11ACP

;	0126	    OLD_UCB

;	0127	    ;

;	0128	

;	0129	EXTERNAL ROUTINE

;	0130	    SET_UCB;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 3

; Digital Equipment Corporation

;

;	0131	GLOBAL ROUTINE SCAN:NOVALUE=

;	0132	

;	0133	!++

;	0134	! FUNCTIONAL DESCRIPTION:

;	0135	!

;	0136	!	MAIN ROUTINE FOR FILE PROCESSING. CONTROLS THE 

;	0137	!	EXAMINATION OF THE FILE IN GROUPS AND THE RETURN

;	0138	!	OF THE FILES BLOCKS.

;	0139	!

;	0140	! FORMAL PARAMETERS:

;	0141	!

;	0142	!	NONE

;	0143	!

;	0144	! IMPLICIT INPUTS:

;	0145	!

;	0146	!	CHANNEL: CHANNEL TO SUSPECT DEVICE

;	0147	!	ACP_MAIL: MAIL FROM F11ACP

;	0148	!

;	0149	! IMPLICIT OUTPUTS:

;	0150	!

;	0151	!	NONE

;	0152	!

;	0153	! ROUTINE VALUE:

;	0154	! COMPLETION CODES:

;	0155	!

;	0156	!	NONE

;	0157	!

;	0158	! SIDE EFFECTS:

;	0159	!

;	0160	!	THE SUSPECT FILE IS RETURNED TO THE SYSTEM, BLOCKWISE.

;	0161	!

;	0162	!--

;	0163	

;	0164	BEGIN

;	0165	

;	0166	!++

;	0167	!CLEAR THE FIB

;	0168	!__

;	0169	

;	0170	    CH$FILL(0,FIB$C_LENGTH,FIB);

;	0171	

;	0172	!*

;	0173	!INITIALIZE ACCESS TO A FILE AND INITIALIZE LAST_BLOCK

;	0174	

;	0175	    IF

;	0176	        NOT POSITION_TO_EOF()

;	0177	    THEN

;	0178		RETURN;

;	0179	

;	0180	!*

;	0181	!LOOP THROUGH ALL GROUPS IN THE FILE

;	0182	

;	0183	    WHILE TRUE DO

;	0184		BEGIN

;	0185		



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 3-1

; Digital Equipment Corporation

;

;	0186		!*

;	0187		!FIND START OF GROUP TO TEST

;	0188	

;	0189		IF

;	0190		    .LAST_BLOCK LSSU BLOCK_TEST_SIZE

;	0191	        THEN

;	0192		    STARTING_BLOCK=1

;	0193		ELSE

;	0194		    STARTING_BLOCK=.LAST_BLOCK-BLOCK_TEST_SIZE+1;

;	0195	

;	0196		!*

;	0197		!TEST GROUP OF BLOCKS

;	0198		!ACTION DEPENDS UPON WHETHER ANY 'BAD' BLOCKS FOUND

;	0199	

;	0200		    CASE CHECK_BADSTATUS(GROUP_BLOCKTEST()) FROM NORMAL_STS TO BAD_STS OF

;	0201			SET

;	0202			[NORMAL_STS]:			!SUCCESSFUL TEST

;	0203			    !++

;	0204			    !CHECK TO SEE IF FINISHED

;	0205			    !__

;	0206			   IF

;	0207				.STARTING_BLOCK EQLU 1

;	0208			    THEN

;	0209				BEGIN

;	0210				NORMAL_COMPLETE();

;	0211				RETURN

;	0212				END

;	0213			    ELSE

;	0214				LAST_BLOCK=.STARTING_BLOCK-1;

;	0215			[ERROR_STS]:			!ERROR BUT NOT BADBLOCK ERROR

;	0216			    BEGIN

;	0217			    ERROR_COMPLETE();

;	0218			    RETURN

;	0219			    END;

;	0220		

;	0221			[BAD_STS]:		!BADBLOCK FOUND,SCAN INDIVIDUAL BLOCKS

;	0222			    BEGIN

;	0223			    IF

;	0224				NOT GROUP_RETURN()

;	0225			    THEN

;	0226				BEGIN

;	0227				ERROR_COMPLETE();

;	0228				RETURN

;	0229				END;

;	0230			    IF

;	0231				(.STARTING_BLOCK EQLU 1) OR

;	0232				(.TRUNC_BLOCK LEQ 1)

;	0233			    THEN

;	0234				BEGIN

;	0235				NORMAL_COMPLETE();

;	0236				RETURN

;	0237				END

;	0238			    ELSE

;	0239				LAST_BLOCK=.TRUNC_BLOCK-1

;	0240			    END;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 3-2

; Digital Equipment Corporation

;

;	0241			TES;

;	0242		END

;	0243	END;





							    .TITLE  SCANFILE

							    .IDENT  \X01\



							    .PSECT  $PLIT$,NOWRT,NOEXE,2



					      00000 P.AAA:  .LONG   44							      ;

					      00004 	    .ADDRESS  FIB						      ;



							    .PSECT  $OWN$,NOEXE,2



					      00000 DISK_TEXT:

							    .BLKB   7680

					      01E00 GROUP_TEST_DATA:

							    .BLKB   7680

					      03C00 READ_FAIL:

							    .BLKB   4

					      03C04 TRUNC_BLOCK:

							    .BLKB   4

					      03C08 BAD_COUNT:

							    .LONG   0							      ;

					      03C0C STARTING_BLOCK:

							    .BLKB   4

					      03C10 LAST_BLOCK:

							    .BLKB   4

					      03C14 IOSB:   .LONG   0, 0						      ;

					      03C1C FIB:    .BLKB   44



						    NORMAL_STS=		0

						    ERROR_STS=		1

						    BAD_STS=		2

						    TRUE=		1

						    FALSE=		0

						    FIB_DESC=		P.AAA

							    .GLOBL  CHANNEL, MBX_CHANNEL, ACP_MAIL, OLD_UCB, SET_UCB



							    .PSECT  $CODE$,NOWRT,2



					 083C 00000 	    .ENTRY  SCAN, Save R2,R3,R4,R5,R11				      ; 0131

		         5B	0000'  CF  9E 00002 	    MOVAB   STARTING_BLOCK, R11					      ;

	   00	         6E	       00  2C 00007 	    MOVC5   #0, (SP), #0, #44, FIB				      ; 0170

		    10   AB	       2C     0000B									      ;

		  0000V  CF	       00  FB 0000E 	    CALLS   #0, POSITION_TO_EOF					      ; 0176

		         59	       50  E9 00013 	    BLBC    R0, 11$						      ;

		         0F	  04   AB  D1 00016 1$:     CMPL    LAST_BLOCK, #15					      ; 0190

				       05  1E 0001A 	    BGEQU   2$							      ;

		         6B	       01  D0 0001C 	    MOVL    #1, STARTING_BLOCK					      ; 0192

				       05  11 0001F 	    BRB     3$							      ; 0189

	   6B	    04   AB	       0E  C3 00021 2$:     SUBL3   #14, LAST_BLOCK, STARTING_BLOCK			      ; 0194

		  0000V  CF	       00  FB 00026 3$:     CALLS   #0, GROUP_BLOCKTEST					      ; 0200

				       50  DD 0002B 	    PUSHL   R0							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 3-3

; Digital Equipment Corporation

;

		  0000V  CF	       01  FB 0002D 	    CALLS   #1, CHECK_BADSTATUS					      ;

	   02	         00	       50  CF 00032 	    CASEL   R0, #0, #2						      ;

	 0012	       001A	     0006     00036 4$:     .WORD   5$-4$,-						      ;

								    7$-4$,-						      ;

								    6$-4$						      ;

		         01	       6B  D1 0003C 5$:     CMPL    STARTING_BLOCK, #1					      ; 0207

				       20  13 0003F 	    BEQL    9$							      ;

      04   AB	         6B	       01  C3 00041 	    SUBL3   #1, STARTING_BLOCK, LAST_BLOCK			      ; 0214

				       CE  11 00046 	    BRB     1$							      ; 0200

		  0000V  CF	       00  FB 00048 6$:     CALLS   #0, GROUP_RETURN					      ; 0224

		         06	       50  E8 0004D 	    BLBS    R0, 8$						      ;

		  0000V  CF	       00  FB 00050 7$:     CALLS   #0, ERROR_COMPLETE					      ; 0227

					   04 00055 	    RET     							      ; 0228

		         01	       6B  D1 00056 8$:     CMPL    STARTING_BLOCK, #1					      ; 0231

				       06  13 00059 	    BEQL    9$							      ;

		         01	  F8   AB  D1 0005B 	    CMPL    TRUNC_BLOCK, #1					      ; 0232

				       06  14 0005F 	    BGTR    10$							      ;

		  0000V  CF	       00  FB 00061 9$:     CALLS   #0, NORMAL_COMPLETE					      ; 0235

					   04 00066 	    RET     							      ; 0236

      04   AB	    F8   AB	       01  C3 00067 10$:    SUBL3   #1, TRUNC_BLOCK, LAST_BLOCK				      ; 0239

				       A7  11 0006D 	    BRB     1$							      ; 0183

					   04 0006F 11$:    RET     							      ; 0131



; Routine Size:  112 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 4

; Digital Equipment Corporation

;

;	0244	ROUTINE POSITION_TO_EOF=

;	0245	

;	0246	!++

;	0247	! FUNCTIONAL DESCRIPTION:

;	0248	!

;	0249	!	ROUTINE INITIALIZES THE FIB, ACCESSES THE FILE WHOSE

;	0250	!	FID IS THE ACP_MAIL, AND DETERMINES THE FILES LENGTH

;	0251	!	IN BLOCKS

;	0252	!

;	0253	! FORMAL PARAMETERS:

;	0254	!

;	0255	!	NONE

;	0256	!

;	0257	! IMPLICIT INPUTS:

;	0258	!

;	0259	!	ACP_MAIL[BBS$W_FID]: FILE ID OF SUSPECT FILE

;	0260	!

;	0261	! IMPLICIT OUTPUTS:

;	0262	!

;	0263	!	LAST_BLOCK: TOTAL NUMBER OF BLOCKS IN FILE

;	0264	!	FIB: ASSORTED FIELDS SET BY IO$_ACCESS

;	0265	!

;	0266	! ROUTINE VALUE:

;	0267	! COMPLETION CODES:

;	0268	!

;	0269	!	IF IO$_ACCESS FAILS THEN THAT CODE IS RETURNED

;	0270	!

;	0271	! SIDE EFFECTS:

;	0272	!

;	0273	!	NONE

;	0274	!

;	0275	!--

;	0276	

;	0277	BEGIN

;	0278	

;	0279	

;	0280	OWN

;	0281	    STAT_BLOCK:VECTOR[5,WORD],		!SPACE FOR FILE STATISTICS BLOCK

;	0282						!RETURNED BY IO$_ACCESS

;	0283	    ATTRIBUTES:VECTOR[3]

;	0284			    INITIAL(ATR$C_STATBLK^16+10,STAT_BLOCK,0)

;	0285	    ;

;	0286	

;	0287	!*

;	0288	!SET FILE ACCESS ATTRIBUTES

;	0289	

;	0290	    FIB[FIB$V_WRITE]=1;

;	0291	    FIB[FIB$V_TRUNC]=1;

;	0292	!*

;	0293	!PUSH FILE ID INTO FIB

;	0294	

;	0295	    CH$MOVE(6,ACP_MAIL[BBS$W_FID],FIB[FIB$W_FID]);

;	0296	

;	0297	!*

;	0298	!OPEN THE SPECIFIED FILE AND GET ITS SIZE IN BLOCKS



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 4-1

; Digital Equipment Corporation

;

;	0299	

;	0300	    DO_QIOW(IO$_ACCESS+IO$M_ACCESS,FIB_DESC,0,0,0,ATTRIBUTES);

;	0301	

;	0302	!*

;	0303	!MOVE THE WORD SWAPPED VIRTUAL BLOCK NUMBER 

;	0304	

;	0305	    LAST_BLOCK<0,16>=.STAT_BLOCK[3];

;	0306	    LAST_BLOCK<16,16>=.STAT_BLOCK[2];

;	0307	

;	0308	    RETURN TRUE

;	0309	END;







							    .PSECT  $OWN$,NOEXE,2



					      03C48 STAT_BLOCK:

							    .BLKB   10

					      03C52	    .BLKB   2

					      03C54 ATTRIBUTES:

							    .LONG   589834						      ;

					      03C58 	    .ADDRESS  STAT_BLOCK					      ;

					      03C5C 	    .LONG   0							      ;







							    .PSECT  $CODE$,NOWRT,2



					 083C 00070 POSITION_TO_EOF:

							    .WORD   Save R2,R3,R4,R5,R11				      ; 0244

		         5B	0000'  CF  9E 00072 	    MOVAB   LAST_BLOCK, R11					      ;

		    0D   AB	       01  88 00077 	    BISB2   #1, FIB+1						      ; 0290

		    23   AB	       01  88 0007B 	    BISB2   #1, FIB+23						      ; 0291

      10   AB	  0000G  CF	       06  28 0007F 	    MOVC3   #6, ACP_MAIL+12, FIB+4				      ; 0295

				  44   AB  9F 00086 	    PUSHAB  ATTRIBUTES						      ; 0300

				       7E  7C 00089 	    CLRQ    -(SP)						      ;

				       7E  D4 0008B 	    CLRL    -(SP)						      ;

				0000'  CF  9F 0008D 	    PUSHAB  FIB_DESC						      ; 0244

		         7E	  72   8F  9A 00091 	    MOVZBL  #114, -(SP)						      ; 0300

		  0000V  CF	       06  FB 00095 	    CALLS   #6, DO_QIOW						      ;

		         6B	  3E   AB  B0 0009A 	    MOVW    STAT_BLOCK+6, LAST_BLOCK				      ; 0305

		    02   AB	  3C   AB  B0 0009E 	    MOVW    STAT_BLOCK+4, LAST_BLOCK+2				      ; 0306

		         50	       01  D0 000A3 	    MOVL    #1, R0						      ; 0308

					   04 000A6 	    RET     							      ; 0244



; Routine Size:  55 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 5

; Digital Equipment Corporation

;

;	0310	ROUTINE TRUNCATE(VBN)=

;	0311	

;	0312	!++

;	0313	! FUNCTIONAL DESCRIPTION:

;	0314	!

;	0315	!	ROUTINE TRUNCATES OF THE END OF THE CURRENT FILE

;	0316	!	STARTING AT THE INDICATED BLOCK NUMBER. BECAUSE OF

;	0317	!	CLUSTERING NOT ALL BLOCKS REQUESTED MAY BE TRUNCATED

;	0318	!	,LAST BLOCK TRUNCATED IS PLACED INTO TRUNC_BLOCK.

;	0319	!

;	0320	! FORMAL PARAMETERS:

;	0321	!

;	0322	!	VBN: VIRTUAL BLOCK AT WHICH TO START TRUNCATE

;	0323	!

;	0324	! IMPLICIT INPUTS:

;	0325	!

;	0326	!	NONE

;	0327	!

;	0328	! IMPLICIT OUTPUTS:

;	0329	!

;	0330	!	NONE

;	0331	!

;	0332	! ROUTINE VALUE:

;	0333	! COMPLETION CODES:

;	0334	!

;	0335	!	STATUS OF IO$_MODIFY OPERATION IS RETURNED

;	0336	!

;	0337	! SIDE EFFECTS:

;	0338	!

;	0339	!	NONE

;	0340	!

;	0341	!--

;	0342	

;	0343	BEGIN

;	0344	LOCAL

;	0345	   STATUS;

;	0346	

;	0347	!*

;	0348	!SET BLOCK TO TRUNCATE AT

;	0349	

;	0350	    FIB[FIB$L_EXVBN]=.VBN;

;	0351	

;	0352	!*

;	0353	!TRUNCATE A PIECE OFF OF FILE

;	0354	

;	0355	    STATUS=DO_QIOW(IO$_MODIFY,FIB_DESC,0,0,0,0);

;	0356	!*

;	0357	!CLEAR SIZE FIELD 

;	0358	

;	0359	    FIB[FIB$L_EXSZ]=0;

;	0360	

;	0361	!*

;	0362	!CHECK FOR ROUNDING FROM CLUSTERING

;	0363	

;	0364	    IF



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 5-1

; Digital Equipment Corporation

;

;	0365		.VBN NEQ .FIB[FIB$L_EXVBN]

;	0366	    THEN

;	0367		TRUNC_BLOCK=.FIB[FIB$L_EXVBN]

;	0368	    ELSE

;	0369		TRUNC_BLOCK=.VBN;

;	0370	

;	0371	    RETURN .STATUS

;	0372	

;	0373	END;











					 0800 000A7 TRUNCATE:

							    .WORD   Save R11						      ; 0310

		         5B	0000'  CF  9E 000A9 	    MOVAB   FIB+28, R11						      ;

		         6B	  04   AC  D0 000AE 	    MOVL    VBN, FIB+28						      ; 0350

				       7E  7C 000B2 	    CLRQ    -(SP)						      ; 0355

				       7E  7C 000B4 	    CLRQ    -(SP)						      ;

				0000'  CF  9F 000B6 	    PUSHAB  FIB_DESC						      ; 0310

				       36  DD 000BA 	    PUSHL   #54							      ; 0355

		  0000V  CF	       06  FB 000BC 	    CALLS   #6, DO_QIOW						      ;

				  FC   AB  D4 000C1 	    CLRL    FIB+24						      ; 0359

		         6B	  04   AC  D1 000C4 	    CMPL    VBN, FIB+28						      ; 0365

				       05  13 000C8 	    BEQL    1$							      ;

		    CC   AB	       6B  D0 000CA 	    MOVL    FIB+28, TRUNC_BLOCK					      ; 0367

					   04 000CE 	    RET     							      ; 0364

		    CC   AB	  04   AC  D0 000CF 1$:     MOVL    VBN, TRUNC_BLOCK					      ; 0369

					   04 000D4 	    RET     							      ; 0310



; Routine Size:  46 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 6

; Digital Equipment Corporation

;

;	0374	ROUTINE TRUNCATE_BAD(VBN)=

;	0375	

;	0376	!++

;	0377	! FUNCTIONAL DESCRIPTION:

;	0378	!

;	0379	!	TRUNCATE_BAD PERFORMS 2 TRUNCATIO OPERATIONS.

;	0380	!	ALL BLOCKS AFTER(HIGHER VBN'S) ARE RETURNED TO

;	0381	!	THE SYSTEM VIA A CALL TO TRUNCATE. THE CURRENT

;	0382	!	VBN KNOWN AS 'BAD' IS TRUNCATED OFF THE CURRENT FILE

;	0383	!	AND ONTO THE BAD BLOCK FILE. DUE TO CLUSTERING, MORE BLOCKS

;	0384	!	THAN REQUESTED MAY BE ADDED TO THE BAD BLOCK FILE AND

;	0385	!	TRUNC_BLOCK IS SET TO THE LAST BLOCK ADDED.

;	0386	!

;	0387	! FORMAL PARAMETERS:

;	0388	!

;	0389	!	VBN: VIRTUAL BLOCK NUMBER OF BLOCK TO MARK BAD

;	0390	!

;	0391	! IMPLICIT INPUTS:

;	0392	!

;	0393	!	NONE

;	0394	!

;	0395	! IMPLICIT OUTPUTS:

;	0396	!

;	0397	!	TRUNC_BLOCK: LAST BLOCK(LOWEST VBN) ADDED TO BAD BLOCK FILE

;	0398	!

;	0399	! ROUTINE VALUE:

;	0400	! COMPLETION CODES:

;	0401	!

;	0402	!	IF EITHER TRUNCATE OPERATION FAILS THEN THAT STATUS IF RETURNED

;	0403	!

;	0404	! SIDE EFFECTS:

;	0405	!

;	0406	!	NONE

;	0407	!

;	0408	!--

;	0409	

;	0410	BEGIN

;	0411	LOCAL

;	0412	   STATUS;

;	0413	

;	0414	    BAD_COUNT=.BAD_COUNT+1;

;	0415	!*

;	0416	!TRUNCATE OFF GOOD PORTIONS OF FILE

;	0417	

;	0418	    STATUS=TRUNCATE(.VBN+1);

;	0419	    IF

;	0420		(.STATUS NEQ SS$_NORMAL) AND

;	0421		(.STATUS NEQ SS$_ENDOFFILE)

;	0422	    THEN

;	0423		RETURN .STATUS;

;	0424	!*

;	0425	!SET BLOCK TO TRUNCATE AT

;	0426	

;	0427	    FIB[FIB$L_EXVBN]=.VBN;

;	0428	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 6-1

; Digital Equipment Corporation

;

;	0429	!*

;	0430	!NOTE RETURN IS TO BAD BLOCK FILE

;	0431	

;	0432	    FIB[FIB$V_MARKBAD]=1;

;	0433	

;	0434	!*

;	0435	!TRUNCATE A PIECE OFF OF FILL

;	0436	

;	0437	    STATUS=DO_QIOW(IO$_MODIFY,FIB_DESC,0,0,0,0);

;	0438	!*

;	0439	!CLEAR SIZE FIELD 

;	0440	

;	0441	    FIB[FIB$L_EXSZ]=0;

;	0442	

;	0443	!*

;	0444	!CHECK FOR ROUNDING FROM CLUSTERING

;	0445	

;	0446	    IF

;	0447		.VBN NEQ .FIB[FIB$L_EXVBN]

;	0448	    THEN

;	0449		TRUNC_BLOCK=.FIB[FIB$L_EXVBN]

;	0450	    ELSE

;	0451		TRUNC_BLOCK=.VBN;

;	0452	

;	0453	

;	0454	!*

;	0455	!CLEAR MARK BAD INDICATOR

;	0456	

;	0457	    FIB[FIB$V_MARKBAD]=0;

;	0458	    RETURN .STATUS

;	0459	

;	0460	END;











					 0804 000D5 TRUNCATE_BAD:

							    .WORD   Save R2,R11						      ; 0374

		         5B	0000'  CF  9E 000D7 	    MOVAB   FIB+28, R11						      ;

				  D0   AB  D6 000DC 	    INCL    BAD_COUNT						      ; 0414

	   7E	    04   AC	       01  C1 000DF 	    ADDL3   #1, VBN, -(SP)					      ; 0418

		    BF   AF	       01  FB 000E4 	    CALLS   #1, TRUNCATE					      ;

		         52	       50  D0 000E8 	    MOVL    R0, STATUS						      ;

		         01	       52  D1 000EB 	    CMPL    STATUS, #1						      ; 0420

				       09  13 000EE 	    BEQL    1$							      ;

	      00000870   8F	       52  D1 000F0 	    CMPL    STATUS, #2160					      ; 0421

				       32  12 000F7 	    BNEQ    4$							      ;

		         6B	  04   AC  D0 000F9 1$:     MOVL    VBN, FIB+28						      ; 0427

		    FB   AB	       04  88 000FD 	    BISB2   #4, FIB+23						      ; 0432

				       7E  7C 00101 	    CLRQ    -(SP)						      ; 0437

				       7E  7C 00103 	    CLRQ    -(SP)						      ;

				0000'  CF  9F 00105 	    PUSHAB  FIB_DESC						      ; 0374

				       36  DD 00109 	    PUSHL   #54							      ; 0437

		  0000V  CF	       06  FB 0010B 	    CALLS   #6, DO_QIOW						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 6-2

; Digital Equipment Corporation

;

		         52	       50  D0 00110 	    MOVL    R0, STATUS						      ;

				  FC   AB  D4 00113 	    CLRL    FIB+24						      ; 0441

		         6B	  04   AC  D1 00116 	    CMPL    VBN, FIB+28						      ; 0447

				       06  13 0011A 	    BEQL    2$							      ;

		    CC   AB	       6B  D0 0011C 	    MOVL    FIB+28, TRUNC_BLOCK					      ; 0449

				       05  11 00120 	    BRB     3$							      ; 0446

		    CC   AB	  04   AC  D0 00122 2$:     MOVL    VBN, TRUNC_BLOCK					      ; 0451

		    FB   AB	       04  8A 00127 3$:     BICB2   #4, FIB+23						      ; 0457

		         50	       52  D0 0012B 4$:     MOVL    STATUS, R0						      ; 0458

					   04 0012E 	    RET     							      ; 0374



; Routine Size:  90 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 7

; Digital Equipment Corporation

;

;	0461	ROUTINE BLOCKTEST(VBN)=

;	0462	

;	0463	!++

;	0464	! FUNCTIONAL DESCRIPTION:

;	0465	!

;	0466	!	THIS ROUTINE TESTS A SINGLE VIRTUAL BLOCK

;	0467	!	FOR 'BADNESS' . THE ROUTINE READS THE BLOCK A NUMBER

;	0468	!	OF TIMES, CHECKING FOR A DATA SENSITIVE CONDITION, AND THEN

;	0469	!	WRITES AND READS BACK THE WORST CASE PATTERN. UPON ANY 

;	0470	!	ABNORMAL CONDITION THE ROUTINE EXITS WITH THAT STATUS.

;	0471	!

;	0472	! FORMAL PARAMETERS:

;	0473	!

;	0474	!	VBN: VIRTUAL BLOCK TO BE TESTED

;	0475	!

;	0476	! IMPLICIT INPUTS:

;	0477	!

;	0478	!	READ_FAIL: A LOGICAL VARIABLE, WHEN TRUE INDICATES  THAT

;	0479	!	    GROUP_BLOCKTEST ENCOUNTERED AN ERROR WHILE READING THE

;	0480	!	    USER DATA ON THE CURRENT GROUP. THIS DIRECTS BLOCKTEST

;	0481	!	    TO READ THE INDIVIDUAL BLOCKS BEFORE OVERWRITING THEM

;	0482	!

;	0483	! IMPLICIT OUTPUTS:

;	0484	!

;	0485	!	NONE

;	0486	!

;	0487	! ROUTINE VALUE:

;	0488	! COMPLETION CODES:

;	0489	!

;	0490	!	IF ANY QIOW FAILS THEN ITS STATUS IS RETURNED

;	0491	!

;	0492	! SIDE EFFECTS:

;	0493	!

;	0494	!	NONE

;	0495	!

;	0496	!--

;	0497	

;	0498	BEGIN

;	0499	

;	0500	LOCAL

;	0501	    STATUS;

;	0502	

;	0503	!*

;	0504	!IF GROUP TEST FAILED IN DATA DEPENDENT MANNER

;	0505	!READ THE BLOCK BEFORE OVER WRITING IT

;	0506	

;	0507	    IF

;	0508		.READ_FAIL

;	0509	    THEN

;	0510		INCR TEST_INDEX FROM 1 TO TRIALS_TO_SUC DO

;	0511		    IF

;	0512			NOT (STATUS=DO_QIOW(IO$_READVBLK+IO$M_INHRETRY,DISK_TEXT,512,.VBN,0,0))

;	0513		    THEN

;	0514			RETURN .STATUS;

;	0515	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 7-1

; Digital Equipment Corporation

;

;	0516	!*

;	0517	!BLOCK MUST PASS READ/WRITE TEST MULTIPLE BEFORE BEING MARKED GOOD

;	0518	

;	0519	    INCR TEST_INDEX FROM 1 TO TRIALS_TO_SUC DO

;	0520		BEGIN

;	0521		!*

;	0522		!WRITE TO THE INDICATED  DISK BLOCK

;	0523	

;	0524	    	IF

;	0525		    NOT(STATUS=DO_QIOW(IO$_WRITEVBLK+IO$M_INHRETRY,GROUP_TEST_DATA,512,.VBN,0,0))

;	0526	        THEN

;	0527		    RETURN .STATUS;

;	0528	

;	0529		!*

;	0530		!TRY AND READ IT BACK

;	0531	

;	0532		    IF

;	0533		        NOT(STATUS=DO_QIOW(IO$_READVBLK+IO$M_INHRETRY,DISK_TEXT,512,.VBN,0,0))

;	0534		    THEN

;	0535		        RETURN .STATUS;

;	0536	

;	0537	

;	0538		!*

;	0539		!MAKE SURE ITS THE SAME

;	0540	

;	0541		    IF

;	0542			CH$EQL(512,GROUP_TEST_DATA,512,DISK_TEXT)

;	0543		    THEN

;	0544			RETURN TRUE

;	0545		    ELSE

;	0546			RETURN SS$_PARITY

;	0547		END

;	0548	

;	0549	END;











					 0C3C 0012F BLOCKTEST:

							    .WORD   Save R2,R3,R4,R5,R10,R11				      ; 0461

		         5A	0000V  CF  9E 00131 	    MOVAB   DO_QIOW, R10					      ;

		         5B	0000'  CF  9E 00136 	    MOVAB   DISK_TEXT, R11					      ;

		         21	3C00   CB  E9 0013B 	    BLBC    READ_FAIL, 2$					      ; 0508

		         52	       01  D0 00140 	    MOVL    #1, TEST_INDEX					      ; 0510

				       7E  7C 00143 1$:     CLRQ    -(SP)						      ; 0512

				  04   AC  DD 00145 	    PUSHL   VBN							      ;

		         7E	0200   8F  3C 00148 	    MOVZWL  #512, -(SP)						      ;

				       5B  DD 0014D 	    PUSHL   R11							      ;

		         7E	8031   8F  3C 0014F 	    MOVZWL  #32817, -(SP)					      ;

		         6A	       06  FB 00154 	    CALLS   #6, DO_QIOW						      ;

		         54	       50  D0 00157 	    MOVL    R0, STATUS						      ;

		         3D	       54  E9 0015A 	    BLBC    STATUS, 3$						      ;

	   E2	         52	       03  F3 0015D 	    AOBLEQ  #3, TEST_INDEX, 1$					      ; 0510

		         55	       01  D0 00161 2$:     MOVL    #1, TEST_INDEX					      ; 0519



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 7-2

; Digital Equipment Corporation

;

				       7E  7C 00164 	    CLRQ    -(SP)						      ; 0525

				  04   AC  DD 00166 	    PUSHL   VBN							      ;

		         7E	0200   8F  3C 00169 	    MOVZWL  #512, -(SP)						      ;

				1E00   CB  9F 0016E 	    PUSHAB  GROUP_TEST_DATA					      ;

		         7E	8030   8F  3C 00172 	    MOVZWL  #32816, -(SP)					      ;

		         6A	       06  FB 00177 	    CALLS   #6, DO_QIOW						      ;

		         54	       50  D0 0017A 	    MOVL    R0, STATUS						      ;

		         1A	       54  E9 0017D 	    BLBC    STATUS, 3$						      ;

				       7E  7C 00180 	    CLRQ    -(SP)						      ; 0533

				  04   AC  DD 00182 	    PUSHL   VBN							      ;

		         7E	0200   8F  3C 00185 	    MOVZWL  #512, -(SP)						      ;

				       5B  DD 0018A 	    PUSHL   R11							      ;

		         7E	8031   8F  3C 0018C 	    MOVZWL  #32817, -(SP)					      ;

		         6A	       06  FB 00191 	    CALLS   #6, DO_QIOW						      ;

		         54	       50  D0 00194 	    MOVL    R0, STATUS						      ;

		         04	       54  E8 00197 	    BLBS    STATUS, 4$						      ;

		         50	       54  D0 0019A 3$:     MOVL    STATUS, R0						      ; 0535

					   04 0019D 	    RET     							      ;

	   6B	  1E00   CB	0200   8F  29 0019E 4$:     CMPC3   #512, GROUP_TEST_DATA, DISK_TEXT			      ; 0542

				       04  12 001A6 	    BNEQ    5$							      ;

		         50	       01  D0 001A8 	    MOVL    #1, R0						      ; 0544

					   04 001AB 	    RET     							      ;

		         50	01F4   8F  3C 001AC 5$:     MOVZWL  #500, R0						      ; 0546

					   04 001B1 	    RET     							      ; 0461



; Routine Size:  131 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 8

; Digital Equipment Corporation

;

;	0550	ROUTINE GROUP_BLOCKTEST=

;	0551	

;	0552	!++

;	0553	! FUNCTIONAL DESCRIPTION:

;	0554	!

;	0555	!	ROUTINE TESTS GROUPS OF VIRTUALLY CONTIGUOUS BLOCKS FOR

;	0556	!	"BADNESS". SHOULD ANY OF THE IO OPERATIONS FAIL

;	0557	!	THE STATUS IS IMMEDIATELY RETURNED. GROUPS ARE READ

;	0558	!	SEVERAL TIMES FOR ERROR.

;	0559	!	A WORST CASE IS WRITTEN TO THE GROUP AND THEN READ BACK.

;	0560	!	THE READ DATA IS COMPARED WITH THAT WRITTEN

;	0561	!

;	0562	! FORMAL PARAMETERS:

;	0563	!

;	0564	!	NONE

;	0565	!

;	0566	! IMPLICIT INPUTS:

;	0567	!

;	0568	!	STARTING_BLOCK: FIRST VIRTUAL BLOCK IN GROUP

;	0569	!	LAST_BLOCK: LAST VIRTUAL BLOCK IN GROUP

;	0570	!

;	0571	! IMPLICIT OUTPUTS:

;	0572	!

;	0573	!	NONE

;	0574	!

;	0575	! ROUTINE VALUE:

;	0576	! COMPLETION CODES:

;	0577	!

;	0578	!	NONE

;	0579	!

;	0580	! SIDE EFFECTS:

;	0581	!

;	0582	!	NONE

;	0583	!

;	0584	!--

;	0585	

;	0586	BEGIN

;	0587	

;	0588	LOCAL

;	0589	    CURRENT_SIZE,

;	0590	    STATUS;

;	0591	

;	0592	

;	0593	!*

;	0594	!FOR SHORT FILES OR FOR THE START OF A FILE, GROUP SIZE MAY BE SHORTER

;	0595	!THAN THE DEFAULT

;	0596	

;	0597	    IF

;	0598		.STARTING_BLOCK EQL 1

;	0599	    THEN

;	0600		CURRENT_SIZE=.LAST_BLOCK*512

;	0601	    ELSE

;	0602		CURRENT_SIZE=GROUP_SIZE;

;	0603	!*

;	0604	!DEFAULT THAT FAILURES WILL NOT BE DATA SENSITIVE



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 8-1

; Digital Equipment Corporation

;

;	0605	

;	0606	    READ_FAIL=FALSE;

;	0607	

;	0608	!*

;	0609	!GROUP FAILURE MAY BE DATA SENSITIVE

;	0610	!READ SEVERAL TIMES BEFORE PASSING TO WRITE/READ TESTING

;	0611	

;	0612	    INCR TEST_INDEX FROM 1 TO TRIALS_TO_SUC DO

;	0613		IF

;	0614		    NOT (STATUS=DO_QIOW(IO$_READVBLK+IO$M_INHRETRY,DISK_TEXT,.CURRENT_SIZE,.STARTING_BLOCK,0,0))

;	0615		THEN

;	0616		    BEGIN

;	0617		    READ_FAIL=TRUE;

;	0618		    RETURN .STATUS

;	0619		    END;

;	0620	!*

;	0621	!GROUP MUST PASS WRITE/READ TEST MULTIPLE TIMES BEFORE 

;	0622	!BEING CONSIDERED GOOD

;	0623	

;	0624	    INCR TEST_INDEX FROM 1 TO TRIALS_TO_SUC DO

;	0625		BEGIN

;	0626		!*

;	0627		!WRITE TO THE INDICATED  DISK BLOCK

;	0628	

;	0629		    IF

;	0630			NOT(STATUS=DO_QIOW(IO$_WRITEVBLK+IO$M_INHRETRY,GROUP_TEST_DATA,.CURRENT_SIZE,.STARTING_BLOCK,0,0))

;	0631		    THEN

;	0632			RETURN .STATUS;

;	0633	

;	0634		!*

;	0635		!TRY AND READ IT BACK

;	0636	

;	0637		    IF

;	0638		        NOT(STATUS=DO_QIOW(IO$_READVBLK+IO$M_INHRETRY,DISK_TEXT,.CURRENT_SIZE,.STARTING_BLOCK,0,0))

;	0639		    THEN

;	0640		        RETURN .STATUS;

;	0641	

;	0642	

;	0643		!*

;	0644		!MAKE SURE ITS THE SAME

;	0645	

;	0646		    IF

;	0647			CH$EQL(.CURRENT_SIZE,GROUP_TEST_DATA,.CURRENT_SIZE,DISK_TEXT)

;	0648		    THEN

;	0649			RETURN TRUE

;	0650		    ELSE

;	0651			RETURN SS$_PARITY

;	0652	        END

;	0653	

;	0654	END;













; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 8-2

; Digital Equipment Corporation

;

					 0C7C 001B2 GROUP_BLOCKTEST:

							    .WORD   Save R2,R3,R4,R5,R6,R10,R11				      ; 0550

		         5A	0000V  CF  9E 001B4 	    MOVAB   DO_QIOW, R10					      ;

		         5B	0000'  CF  9E 001B9 	    MOVAB   STARTING_BLOCK, R11					      ;

		         01	       6B  D1 001BE 	    CMPL    STARTING_BLOCK, #1					      ; 0598

				       07  12 001C1 	    BNEQ    1$							      ;

	   55	    04   AB	       09  78 001C3 	    ASHL    #9, LAST_BLOCK, CURRENT_SIZE			      ; 0600

				       05  11 001C8 	    BRB     2$							      ; 0597

		         55	1E00   8F  3C 001CA 1$:     MOVZWL  #7680, CURRENT_SIZE					      ; 0602

				  F4   AB  D4 001CF 2$:     CLRL    READ_FAIL						      ; 0606

		         52	       01  D0 001D2 	    MOVL    #1, TEST_INDEX					      ; 0612

				       7E  7C 001D5 3$:     CLRQ    -(SP)						      ; 0614

				       6B  DD 001D7 	    PUSHL   STARTING_BLOCK					      ;

				       55  DD 001D9 	    PUSHL   CURRENT_SIZE					      ;

				C3F4   CB  9F 001DB 	    PUSHAB  DISK_TEXT						      ;

		         7E	8031   8F  3C 001DF 	    MOVZWL  #32817, -(SP)					      ;

		         6A	       06  FB 001E4 	    CALLS   #6, DO_QIOW						      ;

		         54	       50  D0 001E7 	    MOVL    R0, STATUS						      ;

		         06	       54  E8 001EA 	    BLBS    STATUS, 4$						      ;

		    F4   AB	       01  D0 001ED 	    MOVL    #1, READ_FAIL					      ; 0617

				       37  11 001F1 	    BRB     5$							      ; 0618

	   DE	         52	       03  F3 001F3 4$:     AOBLEQ  #3, TEST_INDEX, 3$					      ; 0612

		         56	       01  D0 001F7 	    MOVL    #1, TEST_INDEX					      ; 0624

				       7E  7C 001FA 	    CLRQ    -(SP)						      ; 0630

				       6B  DD 001FC 	    PUSHL   STARTING_BLOCK					      ;

				       55  DD 001FE 	    PUSHL   CURRENT_SIZE					      ;

				E1F4   CB  9F 00200 	    PUSHAB  GROUP_TEST_DATA					      ;

		         7E	8030   8F  3C 00204 	    MOVZWL  #32816, -(SP)					      ;

		         6A	       06  FB 00209 	    CALLS   #6, DO_QIOW						      ;

		         54	       50  D0 0020C 	    MOVL    R0, STATUS						      ;

		         18	       54  E9 0020F 	    BLBC    STATUS, 5$						      ;

				       7E  7C 00212 	    CLRQ    -(SP)						      ; 0638

				       6B  DD 00214 	    PUSHL   STARTING_BLOCK					      ;

				       55  DD 00216 	    PUSHL   CURRENT_SIZE					      ;

				C3F4   CB  9F 00218 	    PUSHAB  DISK_TEXT						      ;

		         7E	8031   8F  3C 0021C 	    MOVZWL  #32817, -(SP)					      ;

		         6A	       06  FB 00221 	    CALLS   #6, DO_QIOW						      ;

		         54	       50  D0 00224 	    MOVL    R0, STATUS						      ;

		         04	       54  E8 00227 	    BLBS    STATUS, 6$						      ;

		         50	       54  D0 0022A 5$:     MOVL    STATUS, R0						      ; 0640

					   04 0022D 	    RET     							      ;

    C3F4   CB	  E1F4   CB	       55  29 0022E 6$:     CMPC3   CURRENT_SIZE, GROUP_TEST_DATA, DISK_TEXT		      ; 0647

				       04  12 00236 	    BNEQ    7$							      ;

		         50	       01  D0 00238 	    MOVL    #1, R0						      ; 0649

					   04 0023B 	    RET     							      ;

		         50	01F4   8F  3C 0023C 7$:     MOVZWL  #500, R0						      ; 0651

					   04 00241 	    RET     							      ; 0550



; Routine Size:  144 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 9

; Digital Equipment Corporation

;

;	0655	ROUTINE DO_QIOW(FUNCTION,P1,P2,P3,P4,P5)=

;	0656	

;	0657	!++

;	0658	! FUNCTIONAL DESCRIPTION:

;	0659	!

;	0660	!	COMMON ROUTINE FOR PERFORMING $QIOW SYSTEM SERVICE

;	0661	!

;	0662	! FORMAL PARAMETERS:

;	0663	!

;	0664	!	FUNCTION:THE QIOW FUNCTION CODE

;	0665	!	P1:	THE ADDRESS OF THE P1 PARAMETER

;	0666	!	P2:	THE ADDRESS OF THE P2 PARAMETER

;	0667	!	P3:	THE ADDRESS OF THE P3 PARAMETER

;	0668	!	P4:	THE ADDRESS OF THE P4 PARAMETER

;	0669	!

;	0670	! IMPLICIT INPUTS:

;	0671	!

;	0672	!	CHANNEL:	THE CHANNEL NUMBER TO THE FILES ACP

;	0673	!	IOSB:		THE IO STATUS BLOCK

;	0674	!

;	0675	! IMPLICIT OUTPUTS:

;	0676	!

;	0677	!	NONE

;	0678	!

;	0679	! ROUTINE VALUE:

;	0680	! COMPLETION CODES:

;	0681	!

;	0682	!	RETURNS THE SYSTEM SERVICE CODE FOR THE $QIOW

;	0683	

;	0684	!

;	0685	! SIDE EFFECTS:

;	0686	!

;	0687	!	NONE

;	0688	!

;	0689	!--

;	0690	

;	0691	BEGIN

;	0692	LOCAL

;	0693	    STATUS;

;	0694	!*

;	0695	!DO QIOW AND CHECK IO SERVICE RETURN

;	0696	

;	0697	    IF

;	0698		NOT (STATUS=$QIOW(CHAN=.CHANNEL,IOSB=IOSB,

;     P 0699			FUNC=.FUNCTION,

;     P 0700			P1=.P1,

;     P 0701			P2=.P2,

;     P 0702			P3=.P3,

;     P 0703			P4=.P4,

;     P 0704			P5=.P5))

;	0705	    THEN

;	0706		RETURN .STATUS;

;	0707	

;	0708	!*

;	0709	!CHECK IO COMPLETION RETURN



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 9-1

; Digital Equipment Corporation

;

;	0710	

;	0711	    IF

;	0712		NOT .IOSB[0]

;	0713	    THEN

;	0714		RETURN .IOSB[0]

;	0715	    ELSE

;	0716	        RETURN TRUE

;	0717	

;	0718	END;







							    .GLOBL  SYS$QIOW



					 0800 00242 DO_QIOW:.WORD   Save R11						      ; 0655

		         5B	0000'  CF  9E 00244 	    MOVAB   IOSB, R11						      ;

				       7E  D4 00249 	    CLRL    -(SP)						      ; 0704

		         7E	  14   AC  7D 0024B 	    MOVQ    P4, -(SP)						      ;

		         7E	  0C   AC  7D 0024F 	    MOVQ    P2, -(SP)						      ;

				  08   AC  DD 00253 	    PUSHL   P1							      ;

				       7E  7C 00256 	    CLRQ    -(SP)						      ;

				       5B  DD 00258 	    PUSHL   R11							      ;

				  04   AC  DD 0025A 	    PUSHL   FUNCTION						      ;

		         7E	0000G  CF  3C 0025D 	    MOVZWL  CHANNEL, -(SP)					      ;

				       7E  D4 00262 	    CLRL    -(SP)						      ;

	      00000000G  9F	       0C  FB 00264 	    CALLS   #12, @#SYS$QIOW					      ;

		         0A	       50  E9 0026B 	    BLBC    STATUS, 2$						      ; 0698

		         04	       6B  E8 0026E 	    BLBS    IOSB, 1$						      ; 0712

		         50	       6B  3C 00271 	    MOVZWL  IOSB, R0						      ; 0714

					   04 00274 	    RET     							      ;

		         50	       01  D0 00275 1$:     MOVL    #1, R0						      ; 0716

					   04 00278 2$:     RET     							      ; 0655



; Routine Size:  55 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 10

; Digital Equipment Corporation

;

;	0719	GLOBAL ROUTINE DATA_INIT:NOVALUE=

;	0720	

;	0721	!++

;	0722	! FUNCTIONAL DESCRIPTION:

;	0723	!

;	0724	!	INITIALIZES TEST BLOCKS WITH THE WORST CASE PATTERN

;	0725	!

;	0726	! FORMAL PARAMETERS:

;	0727	!

;	0728	!	NONE

;	0729	!

;	0730	! IMPLICIT INPUTS:

;	0731	!

;	0732	!	GROUP_TEST_DATA: BUFFER USED TO WRITE GROUPS OF BLOCKS

;	0733	!

;	0734	! IMPLICIT OUTPUTS:

;	0735	!

;	0736	!	NONE

;	0737	!

;	0738	! ROUTINE VALUE:

;	0739	! COMPLETION CODES:

;	0740	!

;	0741	!	NONE

;	0742	!

;	0743	! SIDE EFFECTS:

;	0744	!

;	0745	!	NONE

;	0746	!

;	0747	!--

;	0748	

;	0749	BEGIN

;	0750	REGISTER

;	0751	    POINTER,

;	0752	    END_POINTER;

;	0753	LITERAL

;	0754	    WORST_CASE_PAT=%O'165555'^16+%O'133333';

;	0755	

;	0756	!*

;	0757	!INIT POINTERS TO BUFFER

;	0758	

;	0759	    POINTER=GROUP_TEST_DATA[0];

;	0760	    END_POINTER=(GROUP_SIZE^-4)+.POINTER;

;	0761	

;	0762	!*

;	0763	!FILL BUFFER WITH WORST CASE PATTERN

;	0764	

;	0765	    WHILE .POINTER NEQU .END_POINTER DO

;	0766		BEGIN

;	0767		.POINTER=WORST_CASE_PAT;

;	0768		POINTER=.POINTER+4

;	0769		END;

;	0770	

;	0771	    RETURN

;	0772	

;	0773	    



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 10-1

; Digital Equipment Corporation

;

;	0774	    END;











					 0000 00279 	    .ENTRY  DATA_INIT, Save nothing				      ; 0719

		         50	0000'  CF  9E 0027B 	    MOVAB   GROUP_TEST_DATA, POINTER				      ; 0759

		         51	01E0   C0  9E 00280 	    MOVAB   480(R0), END_POINTER				      ; 0760

		         51	       50  D1 00285 1$:     CMPL    POINTER, END_POINTER				      ; 0765

				       09  13 00288 	    BEQL    2$							      ;

		         80 EB6DB6DB   8F  D0 0028A 	    MOVL    #-345131301, (POINTER)+				      ; 0767

				       F2  11 00291 	    BRB     1$							      ; 0765

					   04 00293 2$:     RET     							      ; 0719



; Routine Size:  27 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 11

; Digital Equipment Corporation

;

;	0775	ROUTINE CHECK_BADSTATUS(STATUS)=

;	0776	

;	0777	!++

;	0778	! FUNCTIONAL DESCRIPTION:

;	0779	!

;	0780	!	ROUTINE CLASSIFYS THE SYSTEM SERVICE CODES THAT IT RECEIVES

;	0781	!	AS INPUT INTO 3 CATAGORIES

;	0782	!		NORMAL_STS:  SS$_NORMAL

;	0783	!		BAD_STS: DEVICE ERROR INDICATING A BAD BLOCK

;	0784	!		ERROR_STS: UNRECOVERABLE DEVICE ERROR

;	0785	!

;	0786	! FORMAL PARAMETERS:

;	0787	!

;	0788	!	STATUS: A SYSTEM SERVICE CODE

;	0789	!

;	0790	! IMPLICIT INPUTS:

;	0791	!

;	0792	!	NONE

;	0793	!

;	0794	! IMPLICIT OUTPUTS:

;	0795	!

;	0796	!	NONE

;	0797	!

;	0798	! ROUTINE VALUE:

;	0799	! COMPLETION CODES:

;	0800	!	RETURNS AS A VALUE ON OF THE 3 ABOVE MENTIONED CODES

;	0801	!		NORMAL_STS,ERROR_STS,BAD_STS

;	0802	!	NONE

;	0803	!

;	0804	! SIDE EFFECTS:

;	0805	!

;	0806	!	NONE

;	0807	!

;	0808	!--

;	0809	

;	0810	BEGIN

;	0811	

;	0812	!*

;	0813	!POSSIBLE IO CODES ARE DIVIDED INTO THREE CASES

;	0814	!GOOD BLOCKS,BAD BLOCKS AND SEVERE DEVICE ERRORS

;	0815	

;	0816	SELECTONE .STATUS OF

;	0817	    SET

;	0818	    [SS$_NORMAL]:RETURN NORMAL_STS;

;	0819	    [SS$_PARITY,

;	0820		SS$_CTRLERR,

;	0821		SS$_DRVERR]: RETURN BAD_STS;

;	0822	    [OTHERWISE]:RETURN ERROR_STS

;	0823	    TES;

;	0824	END;













; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 11-1

; Digital Equipment Corporation

;

					 0000 00294 CHECK_BADSTATUS:

							    .WORD   Save nothing					      ; 0775

		         50	  04   AC  D0 00296 	    MOVL    STATUS, R0						      ; 0816

		         01	       50  D1 0029A 	    CMPL    R0, #1						      ;

				       23  13 0029D 	    BEQL    3$							      ;

	      00000054   8F	       50  D1 0029F 	    CMPL    R0, #84						      ;

				       12  13 002A6 	    BEQL    1$							      ;

	      0000008C   8F	       50  D1 002A8 	    CMPL    R0, #140						      ;

				       09  13 002AF 	    BEQL    1$							      ;

	      000001F4   8F	       50  D1 002B1 	    CMPL    R0, #500						      ;

				       04  12 002B8 	    BNEQ    2$							      ;

		         50	       02  D0 002BA 1$:     MOVL    #2, R0						      ; 0821

					   04 002BD 	    RET     							      ;

		         50	       01  D0 002BE 2$:     MOVL    #1, R0						      ; 0822

					   04 002C1 	    RET     							      ;

				       50  D4 002C2 3$:     CLRL    R0							      ; 0775

					   04 002C4 	    RET     							      ;



; Routine Size:  49 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 12

; Digital Equipment Corporation

;

;	0825	ROUTINE NORMAL_COMPLETE:NOVALUE=

;	0826	

;	0827	!++

;	0828	! FUNCTIONAL DESCRIPTION:

;	0829	!

;	0830	!	CALLED AFTER ENTIRE FILE HAS BEEN SCANNED FOR BAD BLOCKS

;	0831	!	ANY OF THE FILE REMAINING IS GOOD AND SHOULD BE

;	0832	!	RETURNED TO THE VOLUME. FILE IS DELETED AND DEACCESSED

;	0833	!

;	0834	! FORMAL PARAMETERS:

;	0835	!

;	0836	!	NONE

;	0837	!

;	0838	! IMPLICIT INPUTS:

;	0839	!

;	0840	!	FIB: FILE IDENTIFICATION OF CURRENT FILE

;	0841	!

;	0842	! IMPLICIT OUTPUTS:

;	0843	!

;	0844	!	NONE

;	0845	!

;	0846	! ROUTINE VALUE:

;	0847	! COMPLETION CODES:

;	0848	!

;	0849	!	NONE

;	0850	!

;	0851	! SIDE EFFECTS:

;	0852	!

;	0853	!	NONE

;	0854	!

;	0855	!--

;	0856	

;	0857	BEGIN

;	0858	LOCAL

;	0859	    STATUS;

;	0860	

;	0861	!*

;	0862	!TRUNCATE ANY OF THE FILE THAT REMAINS

;	0863	

;	0864	    STATUS=TRUNCATE(1);

;	0865	    IF

;	0866		(.STATUS NEQ SS$_NORMAL) AND

;	0867		(.STATUS NEQ SS$_ENDOFFILE)

;	0868	    THEN

;	0869		BEGIN

;	0870		ERROR_COMPLETE();

;	0871		RETURN

;	0872		END;

;	0873	

;	0874	!*

;	0875	!DELETE THE FILE

;	0876	

;	0877	    IF

;	0878	        NOT DO_QIOW(IO$_DELETE+IO$M_DELETE,FIB_DESC,0,0,0,0)

;	0879	    THEN



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 12-1

; Digital Equipment Corporation

;

;	0880		BEGIN

;	0881		ERROR_COMPLETE();

;	0882		RETURN

;	0883		END;

;	0884	

;	0885	!*

;	0886	!DEACCESS THE FILE

;	0887	

;	0888	    DO_QIOW(IO$_DEACCESS,FIB_DESC,0,0,0,0);

;	0889	

;	0890	RETURN 

;	0891	END;











					 0000 002C5 NORMAL_COMPLETE:

							    .WORD   Save nothing					      ; 0825

				       01  DD 002C7 	    PUSHL   #1							      ; 0864

		  FDD9   CF	       01  FB 002C9 	    CALLS   #1, TRUNCATE					      ;

		         01	       50  D1 002CE 	    CMPL    STATUS, #1						      ; 0866

				       09  13 002D1 	    BEQL    1$							      ;

	      00000870   8F	       50  D1 002D3 	    CMPL    STATUS, #2160					      ; 0867

				       15  12 002DA 	    BNEQ    2$							      ;

				       7E  7C 002DC 1$:     CLRQ    -(SP)						      ; 0878

				       7E  7C 002DE 	    CLRQ    -(SP)						      ;

				0000'  CF  9F 002E0 	    PUSHAB  FIB_DESC						      ; 0825

		         7E	0135   8F  3C 002E4 	    MOVZWL  #309, -(SP)						      ; 0878

		  FF54   CF	       06  FB 002E9 	    CALLS   #6, DO_QIOW						      ;

		         06	       50  E8 002EE 	    BLBS    R0, 3$						      ;

		  0000V  CF	       00  FB 002F1 2$:     CALLS   #0, ERROR_COMPLETE					      ; 0881

					   04 002F6 	    RET     							      ; 0882

				       7E  7C 002F7 3$:     CLRQ    -(SP)						      ; 0888

				       7E  7C 002F9 	    CLRQ    -(SP)						      ;

				0000'  CF  9F 002FB 	    PUSHAB  FIB_DESC						      ; 0825

				       34  DD 002FF 	    PUSHL   #52							      ; 0888

		  FF3C   CF	       06  FB 00301 	    CALLS   #6, DO_QIOW						      ;

					   04 00306 	    RET     							      ; 0825



; Routine Size:  66 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 13

; Digital Equipment Corporation

;

;	0892	ROUTINE ERROR_COMPLETE:NOVALUE=

;	0893	

;	0894	!++

;	0895	! FUNCTIONAL DESCRIPTION:

;	0896	!

;	0897	!	CALLED WHEN A FATAL DEVICE ERROR OR SYSTEM SERVICE ERROR

;	0898	!	IS ENCOUNTERED DURING PROCESSING. THE CURRENT FILE IS DEACCESSED

;	0899	!

;	0900	! FORMAL PARAMETERS:

;	0901	!

;	0902	!	NONE

;	0903	!

;	0904	! IMPLICIT INPUTS:

;	0905	!

;	0906	!	NONE

;	0907	!

;	0908	! IMPLICIT OUTPUTS:

;	0909	!

;	0910	!	NONE

;	0911	!

;	0912	! ROUTINE VALUE:

;	0913	! COMPLETION CODES:

;	0914	!

;	0915	!	NONE

;	0916	!

;	0917	! SIDE EFFECTS:

;	0918	!

;	0919	!	NONE

;	0920	!

;	0921	!--

;	0922	

;	0923	BEGIN

;	0924	

;	0925	!*

;	0926	!DEACCESS THE FILE

;	0927	

;	0928	   DO_QIOW(IO$_DEACCESS,FIB_DESC,0,0,0,0);

;	0929	

;	0930	

;	0931	RETURN

;	0932	END;











					 0000 00307 ERROR_COMPLETE:

							    .WORD   Save nothing					      ; 0892

				       7E  7C 00309 	    CLRQ    -(SP)						      ; 0928

				       7E  7C 0030B 	    CLRQ    -(SP)						      ;

				0000'  CF  9F 0030D 	    PUSHAB  FIB_DESC						      ; 0892

				       34  DD 00311 	    PUSHL   #52							      ; 0928

		  FF2A   CF	       06  FB 00313 	    CALLS   #6, DO_QIOW						      ;

					   04 00318 	    RET     							      ; 0892





; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 13-1

; Digital Equipment Corporation

;

; Routine Size:  18 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 14

; Digital Equipment Corporation

;

;	0933	ROUTINE GROUP_RETURN=

;	0934	!++

;	0935	! FUNCTIONAL DESCRIPTION:

;	0936	!

;	0937	!

;	0938	!	CALLED WHEN A BAD BLOCK ERROR IS ENCOUNTERED  BY

;	0939	!	GROUP BLOCK TESTING. THE INDIVIDUAL BLOCKS IN A GROUP

;	0940	!	ARE TESTED FOR "BADNESS" AND TRUNCATED OFF THE CURRENT

;	0941	!	FILE AND INTO THE BAD BLOCK FILE WHEN FOUND

;	0942	! FORMAL PARAMETERS:

;	0943	!

;	0944	!	NONE

;	0945	!

;	0946	! IMPLICIT INPUTS:

;	0947	!

;	0948	!	STARTING_BLOCK: FIRST BLOCK IN GROUP

;	0949	!	LAST_BLOCK: LAST BLOCK IN GROUP

;	0950	!

;	0951	! IMPLICIT OUTPUTS:

;	0952	!

;	0953	!	NONE

;	0954	!

;	0955	! ROUTINE VALUE:

;	0956	! COMPLETION CODES:

;	0957	!

;	0958	!	NONE

;	0959	!

;	0960	! SIDE EFFECTS:

;	0961	!

;	0962	!	NONE

;	0963	!

;	0964	!--

;	0965	

;	0966	BEGIN

;	0967	LOCAL

;	0968	    VBN;

;	0969	

;	0970	!*

;	0971	!INDIVIDUALLY CONSIDER ALL BLOCKS IN THE GROUP

;	0972	!RETURN EACH TO THE BADBLOCK FILE OR FREE SPACE

;	0973	

;	0974	VBN=.LAST_BLOCK;

;	0975	WHILE TRUE DO

;	0976	    BEGIN

;	0977	

;	0978	    CASE CHECK_BADSTATUS(BLOCKTEST(.VBN)) 

;	0979		FROM NORMAL_STS TO BAD_STS OF

;	0980		SET

;	0981	

;	0982		[NORMAL_STS]:TRUNC_BLOCK=.VBN;

;	0983	

;	0984	        [ERROR_STS]:RETURN FALSE;

;	0985	

;	0986	        [BAD_STS]:TRUNCATE_BAD(.VBN);

;	0987	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 14-1

; Digital Equipment Corporation

;

;	0988		TES;

;	0989		VBN=.TRUNC_BLOCK-1;

;	0990		IF

;	0991		    .VBN LSS .STARTING_BLOCK

;	0992		THEN

;	0993		    RETURN TRUE

;	0994	    END

;	0995	

;	0996	END;











					 0804 00319 GROUP_RETURN:

							    .WORD   Save R2,R11						      ; 0933

		         5B	0000'  CF  9E 0031B 	    MOVAB   TRUNC_BLOCK, R11					      ;

		         52	  0C   AB  D0 00320 	    MOVL    LAST_BLOCK, VBN					      ; 0974

				       52  DD 00324 1$:     PUSHL   VBN							      ; 0978

		  FE04   CF	       01  FB 00326 	    CALLS   #1, BLOCKTEST					      ;

				       50  DD 0032B 	    PUSHL   R0							      ;

		  FF62   CF	       01  FB 0032D 	    CALLS   #1, CHECK_BADSTATUS					      ;

	   02	         00	       50  CF 00332 	    CASEL   R0, #0, #2						      ;

	 000E	       000B	     0006     00336 2$:     .WORD   3$-2$,-						      ;

								    4$-2$,-						      ;

								    5$-2$						      ;

		         6B	       52  D0 0033C 3$:     MOVL    VBN, TRUNC_BLOCK					      ; 0982

				       0A  11 0033F 	    BRB     6$							      ; 0978

				       50  D4 00341 4$:     CLRL    R0							      ; 0984

					   04 00343 	    RET     							      ;

				       52  DD 00344 5$:     PUSHL   VBN							      ; 0986

		  FD8A   CF	       01  FB 00346 	    CALLS   #1, TRUNCATE_BAD					      ;

	   52	         6B	       01  C3 0034B 6$:     SUBL3   #1, TRUNC_BLOCK, VBN				      ; 0989

		    08   AB	       52  D1 0034F 	    CMPL    VBN, STARTING_BLOCK					      ; 0991

				       CF  18 00353 	    BGEQ    1$							      ;

		         50	       01  D0 00355 	    MOVL    #1, R0						      ; 0993

					   04 00358 	    RET     							      ; 0933



; Routine Size:  64 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:54:37	DBB3:[BADBLK.SRC]SCANFILE.B32;18				Page 15

; Digital Equipment Corporation

;

;	0997	END				!End of module

;	0998	ELUDOM













;				       PSECT SUMMARY

;

;	Name		 Bytes			       Attributes

;

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

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

;  $CODE$         	   857  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        25         0       242











; Size:		857 code + 15464 data bytes

; Run Time:	00:17.4

; Elapsed Time:	00:34.6

; Memory Used:	271 pages

; Compilation Complete

