

; Bliss-32 10.1-416	Monday 21-AUG-1978 19:15:13	DBB3:[RTL.SRC]FDEFIN.B32;6					Page 1

;

;00100  0001	MODULE FOR$DEFINE_FILE (	! FORTRAN DEFINE FILE Statement

;00200  0002		IDENT = '0-13'		! File: FDEFIN.B32

;00300  0003			) =

;00400  0004	BEGIN

;00500  0005	

;00600  0006	!

;00700  0007	!			  COPYRIGHT (c) 1977 BY

;00800  0008	!	      DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

;00900  0009	!

;01000  0010	! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED

;01100  0011	! ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE

;01200  0012	! INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER

;01300  0013	! COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY

;01400  0014	! OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY

;01500  0015	! TRANSFERRED.

;01600  0016	!

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

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

;01900  0019	! CORPORATION.

;02000  0020	!

;02100  0021	! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS

;02200  0022	! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.

;02300  0023	!

;02400  0024	

;02500  0025	!++

;02600  0026	! FACILITY: FORTRAN Support Library, user callable

;02700  0027	!

;02800  0028	! ABSTRACT:

;02900  0029	!

;03000  0030	!	Contains routines FOR$DEF_FILE_W and FOR$DEF_FILE,

;03100  0031	!	implementing the FORTRAN DEFINE FILE statement with

;03200  0032	!	word-length and longword-length associate variable arguments.

;03300  0033	!

;03400  0034	! ENVIRONMENT: Mixture of AST level or not.

;03500  0035	!

;03600  0036	! AUTHOR: Jonathan M. Taylor, CREATION DATE: 4-OCT-77

;03700  0037	!

;03800  0038	! MODIFIED BY:

;03900  0039	!

;04000  0040	! 	Jonathan M. Taylor, 4-OCT-77 : VERSION 0

;04100  0041	! 0-1	- original 

;04200  0042	! 0-2	- Fix MAXREC and RECORDSIZE bugs JMT 19-OCT-77

;04300  0043	! 0-3	- Call FOR$$CB_POP not _RET! JMT 19-OCT-77

;04400  0044	! 0-4	- Use FOR$K_abcmno4yz as E4TERNAL LITERALs.  TNH 27-Oct-77

;04500  0045	! 0-5	- remove MAXREC checking here.  JMT 22-Feb-78

;04600  0046	! 0-9	- RECORDSIZE max is 64K.  JMT 22-Feb-78

;04700  0047	! 0-10	- Global register CCB.  JMT 8-Apr-78

;04800  0048	! 0-11	- Change REQUIRE files for VAX system build.  DGP 28-Apr-78

;04810  0049	! 0-12	- Use JSB linkages.  TNH 22-May-78

;04820  0050	! 0-13	- Pass OPEN$K_LUN_MIN to FOR$$CB_PUSH.  TNH 22-May-78

;04900  0051	!--



; Bliss-32 10.1-416	Monday 21-AUG-1978 19:15:13	DBB3:[RTL.SRC]FDEFIN.B32;6					Page 2

;

;00100  0052	!

;00200  0053	! LINKAGES:

;00300  0054	!

;00500  0055	REQUIRE 'RTLIN:FLNK';		! Define all linkages

; %PRINT:	File: FLNK.B32; Version 1, edit 12, TNH 2-Aug-78

;00600  0277	

;00700  0278	!

;00800  0279	! TABLE OF CONTENTS:

;00900  0280	!

;01000  0281	

;01100  0282	FORWARD ROUTINE

;01200  0283		FOR$DEF_FILE_W: NOVALUE,	! DEFINE FILE with one-word assvar

;01300  0284		FOR$DEF_FILE: NOVALUE,		! DEFINE FILE with long-word assvar

;01400  0285		COMMON_DEF_FILE: NOVALUE;	! DEFINE FILE common code

;01500  0286	

;01600  0287	!

;01700  0288	! INCLUDE FILES:

;01800  0289	!

;01900  0290	

;02000  0291		REQUIRE 'RTLML:FERR';			! FORTRAN error number definitions

; %PRINT:	Filename: FERR.MDL! Version 0, edit 36, TNH 19-June-78

;02100  0409		REQUIRE 'RTLIN:FOPN';			! File open parameters

; %PRINT:	Filename: FOPN.B32; version 0, edit 22, TNH, 30-May-78

;02200  0548		REQUIRE	'RTLML:FLUB';			! Logical Unit Block definitions

; %PRINT:	File: FLUB.MDL which produces FLUB.B32! Version 0, edit 30, TNH, 17-June-78

;02300  0716		REQUIRE 'RTLML:FPAR';			! Intermodule definitions

; %PRINT:	File: FPAR.MDL! version 0, edit 11, TNH, 30-May-78

;02400  0818		REQUIRE 'RTLIN:FMAC';			! Macros

; %PRINT:	Filename: FMAC.B32; Version 1, edit 29, TNH, 7-JUN-78

; %PRINT:	 REQUIRE FILE: LPSECT.B32, VERSION 01-5, TNH, 27-Jun-78

;02500  0998	!

;02600  0999	! MACROS:

;02700  1000	!	NONE

;02800  1001	

;02900  1002	!

;03000  1003	! EQUATED SYMBOLS:

;03100  1004	!

;03200  1005	

;03300  1006	LITERAL

;03400  1007		K__UNIT		= 4,		! offset from AP to find parameters

;03500  1008		K__MAX_REC	= 8,

;03600  1009		K__REC_SIZ	= 12,

;03700  1010		K__ASS_VAR	= 16;

;03800  1011	

;03900  1012	!

;04000  1013	! OWN STORAGE:

;04100  1014	!	NONE

;04200  1015	

;04300  1016	!

;04400  1017	! EXTERNAL REFERENCES:

;04500  1018	!

;04600  1019	

;04700  1020	EXTERNAL ROUTINE

;04800  1021		FOR$$ERR_ENDHND,		! error condition handler for ERR=, END=

;04900  1022		FOR$$SIGNAL_STO: NOVALUE,	! convert error number and signal



; Bliss-32 10.1-416	Monday 21-AUG-1978 19:15:13	DBB3:[RTL.SRC]FDEFIN.B32;6					Page 2-1

;

;05000  1023		FOR$$CB_PUSH: JSB_CB_PUSH NOVALUE,	! create LUB/ISB/RAB, if needed

;05100  1024		FOR$$CB_POP: JSB_CB_POP NOVALUE;	! return I/O system to previous state

;05200  1025	

;05300  1026	!

;05400  1027	! PSECT DECLARATIONS:

;05500  1028	!

;05600  1029	

;05700  1030		DECLARE_PSECTS (FOR);		! declare PSECTS for FOR$ facility



; Bliss-32 10.1-416	Monday 21-AUG-1978 19:15:13	DBB3:[RTL.SRC]FDEFIN.B32;6					Page 3

;

;00100  1031	GLOBAL ROUTINE FOR$DEF_FILE_W (

;00200  1032		UNIT,

;00300  1033		MAX_REC,

;00400  1034		REC_SIZ,

;00500  1035		ASS_VAR)

;00600  1036		: NOVALUE =

;00700  1037	

;00800  1038	!++

;00900  1039	! FUNCTIONAL DESCRIPTION:

;01000  1040	!

;01100  1041	!	Call Common routine to perform DEFINE FILE for one-word

;01200  1042	!	associated variable.  The argument list is passed in toto.

;01300  1043	!

;01400  1044	! FORMAL PARAMETERS:

;01500  1045	!

;01600  1046	!	UNIT.rl.v		Logical unit number

;01700  1047	!	MAX_REC.rl.v		Maximum record number

;01800  1048	!	REC_SIZ.rl.v		Record buffer size

;01900  1049	!	ASS_VAR			Address of associated variable

;02000  1050	!

;02100  1051	! IMPLICIT INPUTS:

;02200  1052	!

;02300  1053	!	See description of COMMON_DEF_FILE

;02400  1054	!

;02500  1055	! IMPLICIT OUTPUTS:

;02600  1056	!

;02700  1057	!	See description of COMMON_DEF_FILE

;02800  1058	!

;02900  1059	! ROUTINE VALUE: NONE

;03000  1060	! COMPLETION CODES:

;03100  1061	!

;03200  1062	!	NONE

;03300  1063	!

;03400  1064	! SIDE EFFECTS:

;03500  1065	!

;03600  1066	!	See description of COMMON_DEF_FILE

;03700  1067	!

;03800  1068	!--

;03900  1069	

;04000  1070	    BEGIN

;04100  1071	

;04200  1072	    BUILTIN

;04300  1073		AP;

;04400  1074	

;04500  1075	    COMMON_DEF_FILE (.AP, 0);

;04600  1076	

;04700  1077	    END;





							    .TITLE  FOR$DEFINE_FILE

							    .IDENT  \0-13\



							    .EXTRN  FOR$$ERR_ENDHND, FOR$$SIGNAL_STO, FOR$$CB_PUSH

							    .EXTRN  FOR$$CB_POP





; Bliss-32 10.1-416	Monday 21-AUG-1978 19:15:13	DBB3:[RTL.SRC]FDEFIN.B32;6					Page 3-1

;

							    .PSECT  FOR$CODE,NOWRT,  SHR,  PIC,2



					 0000 00000 	    .ENTRY  FOR$DEF_FILE_W, Save nothing			      ; 1031

				       7E  D4 00002 	    CLRL    -(SP)						      ; 1075

				       5C  DD 00004 	    PUSHL   AP							      ;

		  0000V  CF	       02  FB 00006 	    CALLS   #2, COMMON_DEF_FILE					      ;

					   04 0000B 	    RET     							      ; 1031



; Routine Size:  12 bytes







; Bliss-32 10.1-416	Monday 21-AUG-1978 19:15:13	DBB3:[RTL.SRC]FDEFIN.B32;6					Page 4

;

;00100  1078	GLOBAL ROUTINE FOR$DEF_FILE (

;00200  1079		UNIT,

;00300  1080		MAX_REC,

;00400  1081		REC_SIZ,

;00500  1082		ASS_VAR)

;00600  1083		: NOVALUE =

;00700  1084	

;00800  1085	!++

;00900  1086	! FUNCTIONAL DESCRIPTION:

;01000  1087	!

;01100  1088	!	Call Common routine to perform DEFINE FILE for longword

;01200  1089	!	associated variable.  The argument list is passed in toto.

;01300  1090	!

;01400  1091	! FORMAL PARAMETERS:

;01500  1092	!

;01600  1093	!	UNIT.rl.v		Logical unit number

;01700  1094	!	MAX_REC.rl.v		Maximum record number

;01800  1095	!	REC_SIZ.rl.v		Record buffer size

;01900  1096	!	ASS_VAR			Address of associated variable

;02000  1097	!

;02100  1098	! IMPLICIT INPUTS:

;02200  1099	!

;02300  1100	!	See description of COMMON_DEF_FILE

;02400  1101	!

;02500  1102	! IMPLICIT OUTPUTS:

;02600  1103	!

;02700  1104	!	See description of COMMON_DEF_FILE

;02800  1105	!

;02900  1106	! ROUTINE VALUE: NONE

;03000  1107	! COMPLETION CODES:

;03100  1108	!

;03200  1109	!	NONE

;03300  1110	!

;03400  1111	! SIDE EFFECTS:

;03500  1112	!

;03600  1113	!	See description of COMMON_DEF_FILE

;03700  1114	!

;03800  1115	!--

;03900  1116	

;04000  1117	    BEGIN

;04100  1118	

;04200  1119	    BUILTIN

;04300  1120		AP;

;04400  1121	

;04500  1122	    COMMON_DEF_FILE (.AP, 1);

;04600  1123	

;04700  1124	    END;











					 0000 0000C 	    .ENTRY  FOR$DEF_FILE, Save nothing				      ; 1078

				       01  DD 0000E 	    PUSHL   #1							      ; 1122

				       5C  DD 00010 	    PUSHL   AP							      ;



; Bliss-32 10.1-416	Monday 21-AUG-1978 19:15:13	DBB3:[RTL.SRC]FDEFIN.B32;6					Page 4-1

;

		  0000V  CF	       02  FB 00012 	    CALLS   #2, COMMON_DEF_FILE					      ;

					   04 00017 	    RET     							      ; 1078



; Routine Size:  12 bytes







; Bliss-32 10.1-416	Monday 21-AUG-1978 19:15:13	DBB3:[RTL.SRC]FDEFIN.B32;6					Page 5

;

;00100  1125	ROUTINE COMMON_DEF_FILE (

;00200  1126	    OLD_AP,

;00300  1127	    FLAG)

;00400  1128	    : NOVALUE =

;00500  1129	

;00600  1130	!++

;00700  1131	! FUNCTIONAL DESCRIPTION:

;00800  1132	!

;00900  1133	!	Get a LUB for this unit and set some LUB entries according

;01000  1134	!	to values passed to our caller.

;01100  1135	!

;01200  1136	! FORMAL PARAMETERS:

;01300  1137	!

;01400  1138	!	OLD_AP			Address of the arg list that was passed

;01500  1139	!				to our caller

;01600  1140	!	FLAG			Length of users associated variable:

;01700  1141	!					0 - word

;01800  1142	!					1 - longword

;01900  1143	!

;02000  1144	! IMPLICIT INPUTS:

;02100  1145	!

;02200  1146	!	LUB$V_DIRECT		This unit as previously been specified

;02300  1147	!				for direct access by an OPEN statement or

;02400  1148	!				DEFINE FILE.

;02500  1149	!	LUB$V_OPENED		This unit has already been opened by

;02600  1150	!				OPEN statement or default open.

;02700  1151	!

;02800  1152	! IMPLICIT OUTPUTS:

;02900  1153	!

;03000  1154	!	LUB$V_DIRECT		1

;03100  1155	!	LUB$V_UNFORMAT		1

;03200  1156	!	LUB$V_ASS_VAR_L		set to the value of FLAG

;03300  1157	!	LUB$A_ASSOC_VAR		address of associated variable

;03400  1158	!	LUB$L_REC_MAX		set according to MAX_REC parameter passed

;03500  1159	!	LUB$W_RBUF_SIZE		set from REC_SIZ parameter passed

;03600  1160	!

;03700  1161	! ROUTINE VALUE: NONE

;03800  1162	! COMPLETION CODES:

;03900  1163	!

;04000  1164	!	NONE

;04100  1165	!

;04200  1166	! SIDE EFFECTS:

;04300  1167	!

;04400  1168	!	SIGNAL_STOPs:

;04500  1169	!		FOR$_UNIALLOPE	if the unit is already open

;04600  1170	!		FOR$_DUPFILSPE if a define file has already been done on this unit

;04700  1171	!		FOR$_RECSPEERR if the REC_SIZE parameter is out of range

;04800  1172	!		FOR$_RECNUMOUT if the MAX_REC parameter is invalid.

;04900  1173	!

;05000  1174	!--

;05100  1175	

;05200  1176	    BEGIN

;05300  1177	

;05400  1178	    GLOBAL REGISTER

;05500  1179		CCB = 11: REF BLOCK[, BYTE];



; Bliss-32 10.1-416	Monday 21-AUG-1978 19:15:13	DBB3:[RTL.SRC]FDEFIN.B32;6					Page 5-1

;

;05600  1180	

;05700  1181	    LOCAL

;05800  1182		L_UNWIND_ACTION: VOLATILE,	! Unwind action code (FOR$K_UNWIND{POP or NOP})

;05900  1183		L_UNWIND_DEPTH: VOLATILE,	! Number of additional frames to unwind if error

;06000  1184		A_ERR_ADR: VOLATILE,		! Indicates to error handler that

;06100  1185		A_END_ADR: VOLATILE;		! there are no ERR and END= addresses

;06200  1186	

;06300  1187	    ENABLE

;06400  1188		FOR$$ERR_ENDHND (L_UNWIND_ACTION, A_ERR_ADR, A_END_ADR, L_UNWIND_DEPTH);

;06500  1189						! pass info to error handler

;06600  1190	

;06700  1191	    !+

;06800  1192	    ! Set up error handler conditions in case CB_PUSH bombs

;06900  1193	    !-

;07000  1194	

;07100  1195	    L_UNWIND_ACTION = FOR$K_UNWINDNOP;

;07200  1196	    L_UNWIND_DEPTH = 1;

;07300  1197	    A_ERR_ADR = A_END_ADR = 0;

;07400  1198	

;07500  1199	    !+

;07600  1200	    ! Get a LUB for this logical unit.

;07700  1201	    ! On return, CCB points to current control block.

;07800  1202	    !-

;07900  1203	

;08000  1204	    FOR$$CB_PUSH (.(.OLD_AP+K__UNIT), OPEN$K_LUN_MIN);

;08100  1205	

;08200  1206	    !+

;08300  1207	    ! Unwind action (if an error occurs) is now to pop a LUB.

;08400  1208	    !-

;08500  1209	

;08600  1210	    L_UNWIND_ACTION = FOR$K_UNWINDPOP;

;08700  1211	

;08800  1212	    !+

;08900  1213	    ! Check the LUB for errors...

;09000  1214	    !-

;09100  1215	

;09200  1216	    IF .CCB[LUB$V_OPENED]

;09300  1217	    THEN

;09400  1218		FOR$$SIGNAL_STO (FOR$K_UNIALROPE);

;09500  1219	    IF .CCB[LUB$V_DIRECT]

;09600  1220	    THEN

;09700  1221		FOR$$SIGNAL_STO (FOR$K_DUPFILSPE);	! DEFINE FILE after DEFINE FILE

;09800  1222	

;09900  1223	    !+

;10000  1224	    ! Place appropriate information in the LUB from users parameters.

;10100  1225	    !-

;10200  1226	

;10300  1227	    CCB[LUB$V_DIRECT] = 1;

;10400  1228	    CCB[LUB$V_UNFORMAT] = 1;

;10500  1229	    CCB[LUB$V_ASS_VAR_L] = .FLAG;			! FLAG says longword assvar or not

;10600  1230	    CCB[LUB$A_ASSOC_VAR] = .(.OLD_AP + K__ASS_VAR);

;10700  1231	    CCB[LUB$L_REC_MAX] = .(.OLD_AP + K__MAX_REC);

;10800  1232	    IF .(.OLD_AP + K__REC_SIZ)*2 GTRU 65535

;10900  1233	    THEN

;11000  1234		FOR$$SIGNAL_STO (FOR$K_RECSPEERR);



; Bliss-32 10.1-416	Monday 21-AUG-1978 19:15:13	DBB3:[RTL.SRC]FDEFIN.B32;6					Page 5-2

;

;11100  1235	    CCB[LUB$W_RBUF_SIZE] = .(.OLD_AP + K__REC_SIZ)*2;

;11200  1236	

;11300  1237	    !+

;11400  1238	    ! Return the I/O system to its previous state.

;11500  1239	    !-

;11600  1240	

;11700  1241	    FOR$$CB_POP();

;11800  1242	    RETURN;

;11900  1243	    END;











					 081C 00018 COMMON_DEF_FILE:

							    .WORD   Save R2,R3,R4,R11					      ; 1125

		         54 	0000G  CF  9E 0001A 	    MOVAB   FOR$$SIGNAL_STO, R4					      ;

		         5E 	       0C  C2 0001F 	    SUBL2   #12, SP						      ;

				  04   AE  D4 00022 	    CLRL    L_UNWIND_DEPTH					      ; 1176

				       7E  D4 00025 	    CLRL    A_END_ADR						      ;

				  04   AE  D4 00027 	    CLRL    A_ERR_ADR						      ;

				  0C   AE  D4 0002A 	    CLRL    L_UNWIND_ACTION					      ;

		         6D 00000063   EF  DE 0002D 	    MOVAL   4$, (FP)						      ;

		    0C   AE	       01  D0 00034 	    MOVL    #1, L_UNWIND_ACTION					      ; 1195

		    08   AE	       01  D0 00038 	    MOVL    #1, L_UNWIND_DEPTH					      ; 1196

				       6E  D4 0003C 	    CLRL    A_END_ADR						      ; 1197

				  04   AE  D4 0003E 	    CLRL    A_ERR_ADR						      ;

		         53 	  04   AC  D0 00041 	    MOVL    OLD_AP, R3						      ; 1204

		         52 	  04   A3  D0 00045 	    MOVL    4(R3), R2						      ;

				       50  D4 00049 	    CLRL    R0							      ;

				     0000G 30 0004B 	    BSBW    FOR$$CB_PUSH					      ;

				  0C   AE  D4 0004E 	    CLRL    L_UNWIND_ACTION					      ; 1210

		         52 	  FC   AB  9E 00051 	    MOVAB   -4(CCB), R2						      ; 1216

		         05 	       62  E9 00055 	    BLBC    (R2), 1$						      ;

				       22  DD 00058 	    PUSHL   #34							      ; 1218

		         64 	       01  FB 0005A 	    CALLS   #1, FOR$$SIGNAL_STO					      ;

	   05 	         62 	       04  E1 0005D 1$:     BBC     #4, (R2), 2$					      ; 1219

				       15  DD 00061 	    PUSHL   #21							      ; 1221

		         64 	       01  FB 00063 	    CALLS   #1, FOR$$SIGNAL_STO					      ;

		         62 	0210   8F  A8 00066 2$:     BISW2   #528, (R2)						      ; 1228

	   01 	         0C 	  08   AC  F0 0006B 	    INSV    FLAG, #12, #1, (R2)					      ; 1229

				       62     00070									      ;

		    DC   AB	  10   A3  D0 00071 	    MOVL    16(R3), -36(CCB)					      ; 1230

		    E4   AB	  08   A3  D0 00076 	    MOVL    8(R3), -28(CCB)					      ; 1231

	   52 	    0C   A3	       01  78 0007B 	    ASHL    #1, 12(R3), R2					      ; 1232

	      0000FFFF   8F	       52  D1 00080 	    CMPL    R2, #65535						      ;

				       05  1B 00087 	    BLEQU   3$							      ;

				       2C  DD 00089 	    PUSHL   #44							      ; 1234

		         64 	       01  FB 0008B 	    CALLS   #1, FOR$$SIGNAL_STO					      ;

		    DA   AB	       52  B0 0008E 3$:     MOVW    R2, -38(CCB)					      ; 1235

				     0000G 30 00092 	    BSBW    FOR$$CB_POP						      ; 1241

					   04 00095 	    RET     							      ; 1125

					 0000 00096 4$:     .WORD   Save nothing					      ; 1176

		         50 	  08   AC  D0 00098 	    MOVL    8(AP), R0						      ;

		         50 	  04   A0  D0 0009C 	    MOVL    4(R0), R0						      ;



; Bliss-32 10.1-416	Monday 21-AUG-1978 19:15:13	DBB3:[RTL.SRC]FDEFIN.B32;6					Page 5-3

;

				  F8   A0  9F 000A0 	    PUSHAB  L_UNWIND_DEPTH					      ;

				  F0   A0  9F 000A3 	    PUSHAB  A_END_ADR						      ;

				  F4   A0  9F 000A6 	    PUSHAB  A_ERR_ADR						      ;

				  FC   A0  9F 000A9 	    PUSHAB  L_UNWIND_ACTION					      ;

				       04  DD 000AC 	    PUSHL   #4							      ;

				       5E  DD 000AE 	    PUSHL   SP							      ;

		         7E 	  04   AC  7D 000B0 	    MOVQ    4(AP), -(SP)					      ;

		  0000G  CF	       03  FB 000B4 	    CALLS   #3, FOR$$ERR_ENDHND					      ;

					   04 000B9 	    RET     							      ;



; Routine Size:  162 bytes





;12000  1244	

;12100  1245	END				!End of module

;12200  1246	ELUDOM













;				       PSECT SUMMARY

;

;	Name		 Bytes			       Attributes

;

;  FOR$CODE       	   186  NOWRT,  RD ,  EXE,  SHR,  LCL,  REL,  CON,  PIC,ALIGN(2)











; Size:		186 code + 0 data bytes

; Run Time:	00:08.2

; Elapsed Time:	00:18.8

; Memory Used:	69 pages

; Compilation Complete

