FALMAIN         - FAL MAINLINE                                   22-AUG-1978 01:14:03   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (2)      46  DECLARATIONS

   (3)      78  FAL$START - MAINLINE

   (4)     310  FAL$CHECK_SS - CHECK SYSTEM SERVICE STATUS CODE

   (5)     356  FAL$CHECK_RMS - CHECK RMS COMPLETION CODE

   (6)     407  FAL$GETPAGE - EXPAND PROGARM REGION

FALMAIN         - FAL MAINLINE                                   22-AUG-1978 01:14:03   VAX-11 MACRO X0.3-11               Page   1

X0.1-20                                                                                                                          (1)



                                     0000     1 	.TITLE	FALMAIN - FAL MAINLINE

                                     0000     2 	.IDENT	/X0.1-20/

                                     0000     3 

                                     0000     4 ;

                                     0000     5 ;			  COPYRIGHT (c) 1977, 1978 BY

                                     0000     6 ;	      DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

                                     0000     7 ;

                                     0000     8 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED

                                     0000     9 ; ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE

                                     0000    10 ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER

                                     0000    11 ; COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY

                                     0000    12 ; OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY

                                     0000    13 ; TRANSFERRED.

                                     0000    14 ;

                                     0000    15 ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE

                                     0000    16 ; AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT

                                     0000    17 ; CORPORATION.

                                     0000    18 ;

                                     0000    19 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS

                                     0000    20 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.

                                     0000    21 ;

                                     0000    22 

                                     0000    23 ;++

                                     0000    24 ; FACILITY: DECNET FILE ACCESS LISTENER (FAL)

                                     0000    25 ;

                                     0000    26 ; ABSTRACT:

                                     0000    27 ;

                                     0000    28 ;	FAL-32 IS A COMPONENT OF DECNET/VAX-11. IT PROVIDES ACCESS TO

                                     0000    29 ;	FILES, UNIT RECORD DEVICES, AND TERMINALS ON A VAX-11 NODE

                                     0000    30 ;	ON BEHALF OF PROCESSES EXECUTING ON ANY NODE OF THE DECNET

                                     0000    31 ;	COMMUNICATIONS NETWORK. FAL USES THE DATA ACCESS PROTOCOL (DAP)

                                     0000    32 ;	TO COMMUNICATE WITH THE REQUESTING PROCESS AND IT ACCESSES THE

                                     0000    33 ;	SPECIFIED VAX-11 FILE (OR DEVICE) THROUGH RMS-32.

                                     0000    34 ;

                                     0000    35 ; ENVIRONMENT:

                                     0000    36 ;

                                     0000    37 ;	THE FAL IMAGE EXECUTES IN THE CONTEXT OF A PROCESS CREATED BY

                                     0000    38 ;	NETACP. IT RUNS IN USER MODE AND REQUIRES NETWORK PRIVILEGE.

                                     0000    39 ;

                                     0000    40 ; AUTHOR: JAMES A. KRYCKA,	CREATION DATE: 16-JUN-77

                                     0000    41 ;

                                     0000    42 ; MODIFICATIONS:

                                     0000    43 ;

                                     0000    44 ;--

FALMAIN         - FAL MAINLINE                                   22-AUG-1978 01:14:03   VAX-11 MACRO X0.3-11               Page   2

X0.1-20         DECLARATIONS                                                                                                     (2)



                                     0000    46 	.SBTTL	DECLARATIONS

                                 00000000    47 	.PSECT	FAL$IMPURE	SHR,NOEXE,RD,WRT,BYTE

                                     0000    48 

                                     0000    49 ;

                                     0000    50 ; INCLUDE FILES:

                                     0000    51 ;

                                     0000    52 	$FALWRKDEF			; DEFINE FAL WORK AREA SYMBOLS

                                     0000    53 	MISC_SYMBOLS			; DEFINE MISCELLANEOUS FAL SYMBOLS

                                     0000    54 ;	.LIST	MEB

                                     0000    55 ;

                                     0000    56 ; MACROS:

                                     0000    57 ;

                                     0000    58 ;	NONE

                                     0000    59 ;

                                     0000    60 ; EQUATED SYMBOLS:

                                     0000    61 ;

                                     0000    62 ;	NONE

                                     0000    63 ;

                                     0000    64 ; OWN STORAGE:

                                     0000    65 ;

                                     0000    66 ; DEVICE NAME AND LOGICAL NAME DESCRIPTOR BLOCKS WITH TEXT

                                     0000    67 ;

                                     0000    68 

                                     0000    69 FAL$GQ_MBXNAM::				; DEVICE NAME DESCRIPTOR BLOCK

                                     0000    70 	QBLOCK	TEXT=<FAL$MAILBOX>	;  FOR ASSOCIATED MAILBOX

                                     0013    71 FAL$GQ_LNKNAM::				; DEVICE NAME DESCRIPTOR BLOCK

                                     0013    72 	QBLOCK	TEXT=<_NET:>		;  FOR THE LINK

                                     0020    73 FAL$GQ_SYSNAM::				; LOGICAL NAME DESCRIPTOR BLOCK

                                     0020    74 	QBLOCK	TEXT=<SYS$NET>		;  FOR SYS$NET

                                     002F    75 FAL$GQ_LOGNAM::				; LOGICAL NAME DESCRIPTOR BLOCK

                                     002F    76 	QBLOCK	TEXT=<FAL$LOG>		;  FOR FAL$LOG

FALMAIN         - FAL MAINLINE                                   22-AUG-1978 01:14:03   VAX-11 MACRO X0.3-11               Page   3

X0.1-20         FAL$START - MAINLINE                                                                                             (3)



                                     003E    78 	.SBTTL	FAL$START - MAINLINE

                                 00000000    79 	.PSECT	FAL$CODE	NOSHR,EXE,RD,NOWRT,PAGE

                                     0000    80 

                                     0000    81 ;++

                                     0000    82 ; FUNCTIONAL DESCRIPTION:

                                     0000    83 ;

                                     0000    84 ;	FAL$START IS RESPONSIBLE FOR FAL INITIALIZATION AND TERMINATION.

                                     0000    85 ;	ONCE A LOGICAL LINK HAS BEEN ESTABLISHED BETWEEN FAL AND ITS

                                     0000    86 ;	REQUESTOR, CONTROL IS GIVEN TO FAL$STATE, THE STATE TRANSITION

                                     0000    87 ;	MODULE.

                                     0000    88 ;

                                     0000    89 ; CALLING SEQUENCE:

                                     0000    90 ;

                                     0000    91 ;	FAL IS INITIATED BY NETACP.

                                     0000    92 ;

                                     0000    93 ; INPUT PARAMETERS:

                                     0000    94 ;

                                     0000    95 ;	NONE

                                     0000    96 ;

                                     0000    97 ; IMPLICIT INPUTS:

                                     0000    98 ;

                                     0000    99 ;	LOGICAL NAME 'SYS$NET'

                                     0000   100 ;	LOGICAL NAME 'FAL$LOG'

                                     0000   101 ;

                                     0000   102 ; OUTPUT PARAMETERS:

                                     0000   103 ;

                                     0000   104 ;	NONE

                                     0000   105 ;

                                     0000   106 ; IMPLICIT OUTPUTS:

                                     0000   107 ;

                                     0000   108 ;	NONE

                                     0000   109 ;

                                     0000   110 ; COMPLETION CODES:

                                     0000   111 ;

                                     0000   112 ;	NONE

                                     0000   113 ;

                                     0000   114 ; SIDE EFFECTS:

                                     0000   115 ;

                                     0000   116 ;	NONE

                                     0000   117 ;

                                     0000   118 ;--

                                     0000   119 

                               0000' 0000   120 	.ENTRY	FAL$START,^M<>		; ENTRY POINT FROM EXECUTIVE

                                     0002   121 

                                     0002   122 ;

                                     0002   123 ; ALLOCATE SPACE FOR FAL WORK AREA ($FALWRKDEF SYMBOLS) WHICH INCLUDE

                                     0002   124 ; SPACE FOR THE FAB, RAB, NAM, DAP AND STB CONTROL BLOCKS ($FABDEF, $RABDEF,

                                     0002   125 ; $NAMDEF, $DAPDEF, AND FALSTBDEF SYMBOLS, RESPECTIVELY).

                                     0002   126 ;

                                     0002   127 

            51            02     D0  0002   128 	MOVL	#2,R1			; REQUEST 2 PAGES

                          01A1   30  0005   129 	BSBW	FAL$GETPAGE		; EXPAND PROGRAM REGION

            58            52     D0  0008   130 	MOVL	R2,R8			; SAVE ADDRESS OF WORK AREA

            59       0100 C8     9E  000B   131 	MOVAB	FAL$T_DAP(R8),R9	; GET ADDRESS OF DAP CONTROL BLOCK

            5A       0200 C8     DE  0010   132 	MOVAL	FAL$L_FAB(R8),R10	; GET ADDRESS OF FAB CONTROL BLOCK

            5B       0250 C8     DE  0015   133 	MOVAL	FAL$L_RAB(R8),R11	; GET ADDRESS OF RAB CONTROL BLOCK

                                     001A   134 

FALMAIN         - FAL MAINLINE                                   22-AUG-1978 01:14:03   VAX-11 MACRO X0.3-11               Page   4

X0.1-20         FAL$START - MAINLINE                                                                                             (3)



                                     001A   135 ;

                                     001A   136 ; TRANSLATE THE LOGICAL NAME 'FAL$LOG' TO DETERMINE WHAT TYPE OF INFORMATION

                                     001A   137 ; IS TO BE LOGGED TO THE PRINT FILE, IF ANY.

                                     001A   138 ;

                                     001A   139 

            57         2C A8     7E  001A   140 	MOVAQ	FAL$Q_NCB(R8),R7	; GET ADDRESS OF DESCRIPTOR

            67         40 8F     9A  001E   141 	MOVZBL	#FAL$K_NCBBUF,(R7)	; STORE BUFFER SIZE

         04 A7       0080 C8     9E  0022   142 	MOVAB	FAL$T_NCBBUF(R8),4(R7)	; STORE BUFFER ADDRESS

                                     0028   143 	$TRNLOG_S LOGNAM=W^FAL$GQ_LOGNAM- ; ADDRESS OF LOGICAL NAME DESCRIPTOR

                                     0028   144 		RSLLEN=(R7)-		; STORE EQUIVALENCE STRING SIZE

                                     0028   145 		RSLBUF=(R7)		; PUT EQUIVALENCE STRING IN BUFFER

            34            50     E9  003D   146 	BLBC	R0,10$			; BRANCH IF NO TRANSLATION

            01            67     B1  0040   147 	CMPW	(R7),#1			; IS EQUIVANENCE STRING PROPER SIZE?

                          2F     12  0043   148 	BNEQ	10$			; IF NOT, TREAT AS NO TRANSLATION

            30         04 B7     91  0045   149 	CMPB	@4(R7),#^A\0\		; CHECK FOR SMALLEST OCTAL DIGIT

                          29     1F  0049   150 	BLSSU	10$			; BRANCH IF OUT-OF-RANGE

            37         04 B7     91  004B   151 	CMPB	@4(R7),#^A\7\		; CHECK FOR LARGEST OCTAL DIGIT

                          23     1A  004F   152 	BGTRU	10$			; BRANCH IF OUT-OF-RANGE

                          30     83  0051   153 	SUBB3	#^A\0\,@4(R7),-		; CONVERT SINGLE ASCII OCTAL DIGIT

       0000'CF         04 B7         0053   154 		W^FAL$GB_LOG		;  TO BINARY MASK AND STORE IT

                                     0058   155 

                                     0058   156 ;

                                     0058   157 ; CREATE THE PRINT FILE.

                                     0058   158 ;

                                     0058   159 

                                     0058   160 	$CREATE	FAB=W^FAL$PRTFAB	; CREATE THE FILE

                                     0063   161 	CHECK_RMS			; CHECK COMPLETION CODE

                                     0066   162 	$CONNECT RAB=W^FAL$PRTRAB	; ESTABLISH RECORD STREAM

                                     0071   163 	CHECK_RMS			; CHECK COMPLETION CODE

                                     0074   164 

                                     0074   165 ;

                                     0074   166 ; CREATE A TEMPORARY MAILBOX THAT WILL BE USED AS THE ASSOCIATED LINK

                                     0074   167 ; CHANNEL MAILBOX AND ASSIGN A CHANNEL TO IT.

                                     0074   168 ;

                                     0074   169 

                                     0074   170 10$:	$CREMBX_S CHAN=FAL$W_MBXCHN(R8)- ; STORE CHANNEL #

                                     0074   171 		MAXMSG=#FAL$K_MBXBUF-	; SPECIFY LARGEST MESSAGE

                                     0074   172 		BUFQUO=#FAL$K_MBXQUOTA- ; SPECIFY BUFFER QUOTA

                                     0074   173 		PROMSK=#FAL$K_MBXPROT-	; SPECIFY PROTECTION FOR MAILBOX

                                     0074   174 		LOGNAM=W^FAL$GQ_MBXNAM	; LOGICAL NAME OF MAILBOX

                                     0094   175 	CHECK_SS			; CHECK STATUS CODE

                                     0097   176 

                                     0097   177 ;

                                     0097   178 ; CREATE A CONTROL/INFORMATION PATH TO NETACP IN PREPARATION FOR

                                     0097   179 ; NON-TRANSPARENT NETWORK I/O. ALSO ASSOCIATE A MAILBOX WITH THE

                                     0097   180 ; CHANNEL.

                                     0097   181 ;

                                     0097   182 

                                     0097   183 	$ASSIGN_S DEVNAM=W^FAL$GQ_LNKNAM- ; "NET0:" REFERS TO NETACP

                                     0097   184 		CHAN=FAL$W_LNKCHN(R8)-	; STORE CHANNEL #

                                     0097   185 		MBXNAM=W^FAL$GQ_MBXNAM	; SPECIFY ASSOCIATED MAILBOX

                                     00AB   186 	CHECK_SS			; CHECK STATUS CODE

                                     00AE   187 

                                     00AE   188 ;

                                     00AE   189 ; TRANSLATE THE LOGICAL NAME 'SYS$NET'. IT'S EQUIVALENCE STRING IS

                                     00AE   190 ; SET-UP BY NETACP TO BE THE ENTIRE NETWORK CONNECT BLOCK (NCB) WHICH

                                     00AE   191 ; IS REQUIRED TO GAIN NON-TRANSPARENT ACCESS TO THE NETWORK.

FALMAIN         - FAL MAINLINE                                   22-AUG-1978 01:14:03   VAX-11 MACRO X0.3-11               Page   5

X0.1-20         FAL$START - MAINLINE                                                                                             (3)



                                     00AE   192 ;

                                     00AE   193 

            57         2C A8     7E  00AE   194 	MOVAQ	FAL$Q_NCB(R8),R7	; GET ADDRESS OF NCB DESCRIPTOR

            67         40 8F     9A  00B2   195 	MOVZBL	#FAL$K_NCBBUF,(R7)	; STORE BUFFER SIZE

         04 A7       0080 C8     9E  00B6   196 	MOVAB	FAL$T_NCBBUF(R8),4(R7)	; STORE BUFFER ADDRESS

                                     00BC   197 	$TRNLOG_S LOGNAM=W^FAL$GQ_SYSNAM- ; ADDRESS OF LOGICAL NAME DESCRIPTOR

                                     00BC   198 		RSLLEN=(R7)-		; UPDATE SIZE IN NCB DESCRIPTOR

                                     00BC   199 		RSLBUF=(R7)		; PUT EQUIVALENCE STRING IN NCB

                                     00D1   200 	CHECK_SS			; CHECK STATUS CODE

                                     00D4   201 

                                     00D4   202 ;++

                                     00D4   203 ; THE GENERAL FORMAT OF THE EQUIVALENCE STRING DERIVED FROM SYS$NET IS:

                                     00D4   204 ;

                                     00D4   205 ;	nodespec::"objecttype=taskid/netacp_string"

                                     00D4   206 ;

                                     00D4   207 ; THE FOLLOWING WILL BE OUTPUT TO THE PRINT FILE:

                                     00D4   208 ;

                                     00D4   209 ;	nodespec::"objecttype=taskid"

                                     00D4   210 ;

                                     00D4   211 ; THE FOLLOWING WILL BE PUT INTO THE NCB FOR A CONNECT ACCEPT WITHOUT

                                     00D4   212 ; USERDATA:

                                     00D4   213 ;

                                     00D4   214 ;	nodespec::"objecttype=taskid/next_two_bytes"

                                     00D4   215 ;--

                                     00D4   216 

            67            2F     3A  00D4   217 	LOCC	#^A\/\,(R7),@4(R7)	; FIND TASKID DELIMITER

                       04 B7         00D7       

                          03     12  00D9   218 	BNEQ	20$			; BRANCH IF SLASH FOUND

                          00A8   31  00DB   219 	BRW	FAL$EXIT_TO_VMS		; FATAL ERROR!!

                                     00DE   220 

                                     00DE   221 ;

                                     00DE   222 ; OUTPUT THE IDENTITY OF THE REQUESTOR TO THE PRINT FILE.

                                     00DE   223 ;

                                     00DE   224 

            52            51     D0  00DE   225 20$:	MOVL	R1,R2			; SAVE ADDRESS OF SLASH

                                 E1  00E1   226 	BBC	#FAL$V_LOG_STAT,-	; LOG STATISTICAL INFORMATION?

       0000'CF            00         00E2   227 		W^FAL$GB_LOG,30$	;  BRANCH IF NO

                          29         00E6       

            81            22     90  00E7   228 	MOVB	#^A\"\,(R1)+		; OVERLAY SLASH TO TRUNCATE STRING

            51         04 A7     C3  00EA   229 	SUBL3	4(R7),R1,(R7)		; UPDATE STRING SIZE IN DESCRIPTOR

                          67         00EE       

                                     00EF   230 	$FAO_S	CTRSTR=W^FAL$GQ_CALLER-	; FORMAT THE MESSAGE

                                     00EF   231 		OUTLEN=W^FAL$GW_PRTLEN-	;

                                     00EF   232 		OUTBUF=W^FAL$GQ_PRTBUF-	;

                                     00EF   233 		P1=#FAL$GT_VERSION-	; FAL VERSION NUMBER STRING ADDRESS

                                     00EF   234 		P2=R7			; ADDRESS OF STRING DESCRIPTOR

                                     010A   235 	CHECK_SS			; CHECK STATUS CODE

                          FEF0'  30  010D   236 	BSBW	FAL$PRINT_FAO		; PRINT MESSAGE

                                     0110   237 

                                     0110   238 ;

                                     0110   239 ; RESPOND TO THE CONNECT INITIATE WITH A CONNECT CONFIRM (WITHOUT USERDATA)

                                     0110   240 ; TO COMPLETE THE LOGICAL LINK.

                                     0110   241 ;

                                     0110   242 

            82            2F     90  0110   243 30$:	MOVB	#^A\/\,(R2)+		; RESTORE SLASH TO STRING

                          82     B5  0113   244 	TSTW	(R2)+			; SKIP OVER FIRST TWO BYTES OF 

                                     0115   245 					;  NETACP_STRING DATA

FALMAIN         - FAL MAINLINE                                   22-AUG-1978 01:14:03   VAX-11 MACRO X0.3-11               Page   6

X0.1-20         FAL$START - MAINLINE                                                                                             (3)



            82            22     90  0115   246 	MOVB	#^A\"\,(R2)+		; TRUNCATE STRING HERE

            52         04 A7     C3  0118   247 	SUBL3	4(R7),R2,(R7)		; UPDATE STRING SIZE IN NCB DESCRIPTOR

                          67         011C       

                                     011D   248 	$QIOW_S	EFN=#XMTEFN-		; ISSUE THE ACCESS FUNCTION

                                     011D   249 		CHAN=FAL$W_LNKCHN(R8)-	;

                                     011D   250 		FUNC=#IO$_ACCESS!IO$M_ACCESS- ;

                                     011D   251 		IOSB=FAL$Q_LNKIOSB(R8)-	;

                                     011D   252 		P1=0-			; MUST BE ZERO

                                     011D   253 		P2=R7			; ADDRESS OF NCB DESCRIPTOR

                                     013C   254 	CHECK_SS			; CHECK STATUS CODE

                                     013F   255 

                                     013F   256 ;

                                     013F   257 ; OUTPUT LINK ESTABLISHED MESSAGE TO THE PRINT FILE.

                                     013F   258 ;

                                     013F   259 

                                 E1  013F   260 	BBC	#FAL$V_LOG_STAT,-	; LOG STATISTICAL INFORMATION?

       0000'CF            00         0140   261 		W^FAL$GB_LOG,40$	;  BRANCH IF NO

                          2D         0144       

                                     0145   262 	$GETTIM_S TIMADR=W^FAL$GQ_TIME0	; GET CURRENT DATE AND TIME

                                     0150   263 	CHECK_SS			; CHECK STATUS CODE

                                     0153   264 	$FAO_S	CTRSTR=W^FAL$GQ_LINKUP-	; FORMAT THE MESSAGE

                                     0153   265 		OUTLEN=W^FAL$GW_PRTLEN-	;

                                     0153   266 		OUTBUF=W^FAL$GQ_PRTBUF-	;

                                     0153   267 		P1=#FAL$GQ_TIME0	; ABSOLUTE DATE AND TIME ADDRESS

                                     016C   268 	CHECK_SS			; CHECK STATUS CODE

                          FE8E'  30  016F   269 	BSBW	FAL$PRINT_FAO		; PRINT MESSAGE

                                     0172   270 

                                     0172   271 ;

                                     0172   272 ; ISSUE READ WITH AST FOR ASSOCIATED MAILBOX SO THAT FAL WILL BE NOTIFIED

                                     0172   273 ; OF A CHANGE IN THE STATUS OF THE LINK SUCH AS PARTNER EXITED OR OF THE

                                     0172   274 ; RECEIPT OF AN INTERRUPT MESSAGE.

                                     0172   275 ;

                                     0172   276 

                          FE8B'  30  0172   277 40$:	BSBW	FAL$MBX_READ		;

                                     0175   278 

                                     0175   279 ;

                                     0175   280 ; TRANSFER CONTROL TO STATE TRANSITION ROUTINE.

                                     0175   281 ;

                                     0175   282 

            52       0000'CF     9E  0175   283 	MOVAB	W^FAL$STATE_TABLE,R2	; GET STATE TRANSITION TABLE ADDRESS

                          FE83'  30  017A   284 	BSBW	W^FAL$STATE		;

                                     017D   285 

                                     017D   286 ;

                                     017D   287 ; ISSUE A DISCONNECT ABORT TO DESTROY THE LOGICAL LINK.

                                     017D   288 ;

                                     017D   289 

                                     017D   290 ;	$QIOW_S	EFN=#XMTEFN-		; ISSUE THE DEACCESS FUNCTION

                                     017D   291 ;		CHAN=FAL$W_LNKCHN(R8)-	;

                                     017D   292 ;		FUNC=#IO$_DEACCESS!IO$M_ABORT- ;

                                     017D   293 ;		IOSB=FAL$Q_LNKIOSB(R8)- ;

                                     017D   294 ;		P1=0-			; MUST BE ZERO

                                     017D   295 ;		P2=#0			; SPECIFY NO USERDATA

                                     017D   296 ;	CHECK_SS			; CHECK STATUS CODE

                                     017D   297 

                                     017D   298 FAL$TERMINATE::				; CONTROL POINT

                                     017D   299 

                                     017D   300 ;

FALMAIN         - FAL MAINLINE                                   22-AUG-1978 01:14:03   VAX-11 MACRO X0.3-11               Page   7

X0.1-20         FAL$START - MAINLINE                                                                                             (3)



                                     017D   301 ; OUTPUT LINK TERMINATED MESSAGE AND STATISTICS TO THE PRINT FILE.

                                     017D   302 ;

                                     017D   303 

       0000'CF            00     E1  017D   304 	BBC	#FAL$V_LOG_STAT,W^FAL$GB_LOG,FAL$EXIT_TO_VMS

                          03         0182       

                                     0183   305 					; BRANCH IF PRINTOUT NOT DESIRED

                          FE7A'  30  0183   306 	BSBW	FAL$STATISTICS		; COMPUTE AND PRINT STATISTICS

                                     0186   307 FAL$EXIT_TO_VMS::			;

                                     0186   308 	$EXIT_S				; EXIT TO VMS

FALMAIN         - FAL MAINLINE                                   22-AUG-1978 01:14:03   VAX-11 MACRO X0.3-11               Page   8

X0.1-20         FAL$CHECK_SS - CHECK SYSTEM SERVICE STATUS CODE                                                                  (4)



                                     018F   310 	.SBTTL	FAL$CHECK_SS - CHECK SYSTEM SERVICE STATUS CODE

                                 0000018F   311 	.PSECT	FAL$CODE	NOSHR,EXE,RD,NOWRT,BYTE

                                     018F   312 

                                     018F   313 ;++

                                     018F   314 ; FUNCTIONAL DESCRIPTION:

                                     018F   315 ;

                                     018F   316 ;	FAL$CHECK_SS CHECKS THE STATUS CODE IN R0 FOLLOWING A CALL TO A

                                     018F   317 ;	SYSTEM SERVICE. IF FAILURE IS INDICATED, THE IMAGE IS TERMINATED

                                     018F   318 ;	WITH R0 AS THE EXIT COMPLETION CODE.

                                     018F   319 ;

                                     018F   320 ; CALLING SEQUENCE:

                                     018F   321 ;

                                     018F   322 ;	BSB/JSB	FAL$CHECK_SS

                                     018F   323 ;

                                     018F   324 ; INPUT PARAMETERS:

                                     018F   325 ;

                                     018F   326 ;	R0	SYSTEM SERVICE STATUS CODE

                                     018F   327 ;

                                     018F   328 ; IMPLICIT INPUTS:

                                     018F   329 ;

                                     018F   330 ;	NONE

                                     018F   331 ;

                                     018F   332 ; OUTPUT PARAMETERS:

                                     018F   333 ;

                                     018F   334 ;	NONE

                                     018F   335 ;

                                     018F   336 ; IMPLICIT OUTPUTS:

                                     018F   337 ;

                                     018F   338 ;	NONE

                                     018F   339 ;

                                     018F   340 ; COMPLETION CODES:

                                     018F   341 ;

                                     018F   342 ;	NONE

                                     018F   343 ;

                                     018F   344 ; SIDE EFFECTS:

                                     018F   345 ;

                                     018F   346 ;	IF THE SYSTEM SERVICE INDICATES FAILURE, THE IMAGE IS TERMINATED

                                     018F   347 ;	WITH R0 AS THE EXIT COMPLETION CODE.

                                     018F   348 ;

                                     018F   349 ;--

                                     018F   350 

                                     018F   351 FAL$CHECK_SS::				; CONTROL POINT

            03            50     E8  018F   352 	BLBS	R0,10$			; WAS SYSTEM SERVICE SUCCESSFUL?

                          FFF1   31  0192   353 	BRW	FAL$EXIT_TO_VMS		; EXIT TO VMS

                                 05  0195   354 10$:	RSB				; YES, EXIT

FALMAIN         - FAL MAINLINE                                   22-AUG-1978 01:14:03   VAX-11 MACRO X0.3-11               Page   9

X0.1-20         FAL$CHECK_RMS - CHECK RMS COMPLETION CODE                                                                        (5)



                                     0196   356 	.SBTTL	FAL$CHECK_RMS - CHECK RMS COMPLETION CODE

                                 00000196   357 	.PSECT	FAL$CODE	NOSHR,EXE,RD,NOWRT,BYTE

                                     0196   358 

                                     0196   359 ;++

                                     0196   360 ; FUNCTIONAL DESCRIPTION:

                                     0196   361 ;

                                     0196   362 ;	FAL$CHECK_RMS CHECKS THE COMPLETION CODE IN R0 FOLLOWING A CALL

                                     0196   363 ;	TO RMS. IF FAILURE (EXCEPT END-OF-FILE) IS INDICATED, THE IMAGE

                                     0196   364 ;	IS TERMINATED WITH R0 AS THE EXIT COMPLETION CODE.

                                     0196   365 ;

                                     0196   366 ; CALLING SEQUENCE:

                                     0196   367 ;

                                     0196   368 ;	BSB/JSB	FAL$CHECK_RMS

                                     0196   369 ;

                                     0196   370 ; INPUT PARAMETERS:

                                     0196   371 ;

                                     0196   372 ;	R0	RMS COMPLETION CODE

                                     0196   373 ;

                                     0196   374 ; IMPLICIT INPUTS:

                                     0196   375 ;

                                     0196   376 ;	NONE

                                     0196   377 ;

                                     0196   378 ; OUTPUT PARAMETERS:

                                     0196   379 ;

                                     0196   380 ;	R1	COMPLETION CODE

                                     0196   381 ;

                                     0196   382 ; IMPLICIT OUTPUTS:

                                     0196   383 ;

                                     0196   384 ;	NONE

                                     0196   385 ;

                                     0196   386 ; COMPLETION CODES:

                                     0196   387 ;

                                     0196   388 ;	R1	0 = RMS COMPLETION CODE IS END-OF-FILE (RMS$_EOF)

                                     0196   389 ;		1 = SUCCESS

                                     0196   390 ;

                                     0196   391 ; SIDE EFFECTS:

                                     0196   392 ;

                                     0196   393 ;	IF THE RMS COMPLETION CODE INDICATES FAILURE (EXCEPT END-OF-FILE),

                                     0196   394 ;	THE IMAGE IS TERMINATED WITH R0 AS THE EXIT COMPLETION CODE.

                                     0196   395 ;

                                     0196   396 ;--

                                     0196   397 

                                     0196   398 FAL$CHECK_RMS::				; CONTROL POINT

            51            01     D0  0196   399 	MOVL	#1,R1			; SET RETURN CODE TO SUCCESS

            0C            50     E8  0199   400 	BLBS	R0,20$			; WAS RMS FUNCTION SUCCESSFUL?

       0000'8F            50     B1  019C   401 	CMPW	R0,#<RMS$_EOF&^XFFFF>	; NO, CHECK FOR END-OF-FILE

                          03     13  01A1   402 	BEQLU	10$			; OK, IF END-OF-FILE

                          FFE0   31  01A3   403 	BRW	FAL$EXIT_TO_VMS		; EXIT TO VMS

                          51     D4  01A6   404 10$:	CLRL	R1			; INDICATE END-OF-FILE CONDITION

                                 05  01A8   405 20$:	RSB				; EXIT

FALMAIN         - FAL MAINLINE                                   22-AUG-1978 01:14:03   VAX-11 MACRO X0.3-11               Page  10

X0.1-20         FAL$GETPAGE - EXPAND PROGARM REGION                                                                              (6)



                                     01A9   407 	.SBTTL	FAL$GETPAGE - EXPAND PROGARM REGION

                                 000001A9   408 	.PSECT	FAL$CODE	NOSHR,EXE,RD,NOWRT,BYTE

                                     01A9   409 

                                     01A9   410 ;++

                                     01A9   411 ; FUNCTIONAL DESCRIPTION:

                                     01A9   412 ;

                                     01A9   413 ;	FAL$GETPAGE EXPANDS THE PROGRAM REGION BY THE NUMBER OF PAGES

                                     01A9   414 ;	SPECIFIED.

                                     01A9   415 ;

                                     01A9   416 ; CALLING SEQUENCE:

                                     01A9   417 ;

                                     01A9   418 ;	BSB/JSB	FAL$GETPAGE

                                     01A9   419 ;

                                     01A9   420 ; INPUT PARAMETERS:

                                     01A9   421 ;

                                     01A9   422 ;	R1	# OF PAGES TO ALLOCATE

                                     01A9   423 ;

                                     01A9   424 ; IMPLICIT INPUTS:

                                     01A9   425 ;

                                     01A9   426 ;	NONE

                                     01A9   427 ;

                                     01A9   428 ; OUTPUT PARAMETERS:

                                     01A9   429 ;

                                     01A9   430 ;	R0-R1	DESTROYED

                                     01A9   431 ;	R2	ADDRESS OF FIRST BYTE ALLOCATED

                                     01A9   432 ;	R3	ADDRESS OF LAST BYTE ALLOCATED

                                     01A9   433 ;

                                     01A9   434 ; IMPLICIT OUTPUTS:

                                     01A9   435 ;

                                     01A9   436 ;	NONE

                                     01A9   437 ;

                                     01A9   438 ; COMPLETION CODES:

                                     01A9   439 ;

                                     01A9   440 ;	NONE

                                     01A9   441 ;

                                     01A9   442 ; SIDE EFFECTS:

                                     01A9   443 ;

                                     01A9   444 ;	THE VIRTUAL ADDRESS SPACE OF THE IMAGE IS EXPANDED.

                                     01A9   445 ;

                                     01A9   446 ;--

                                     01A9   447 

                                     01A9   448 FAL$GETPAGE::				; CONTROL POINT

                          7E     7C  01A9   449 	CLRQ	-(SP)			; FORM ARRAY TO RECEIVE ADDRESS BOUNDS

            50            5E     D0  01AB   450 	MOVL	SP,R0			;  AND SAVE ITS ADDRESS

                                     01AE   451 	$EXPREG_S PAGCNT=R1-		; ALLOCATE SPACE

                                     01AE   452 		RETADR=(R0)		;

                                     01BD   453 	CHECK_SS			; BRANCH ON FAILURE

            52            8E     7D  01C0   454 	MOVQ	(SP)+,R2		; STORE FIRST AND LAST ADDRESSES

                                 05  01C3   455 	RSB				; EXIT

                                     01C4   456 	.END	FAL$START

FALMAIN         - FAL MAINLINE                                   22-AUG-1978 01:14:03   VAX-11 MACRO X0.3-11               Page  11

SYMBOL TABLE                                                                                                                     (6)



$$.TMP1        = 00000001            FAL$T_BUFFER     00000380            

$$.TMP2        = 000000CF            FAL$T_DAP        00000100            

$$T1           = 00000001            FAL$T_MBXBUF     00000080            

$$T2           = 00000004            FAL$T_NCBBUF     00000080            

BIT...         = 00000018            FAL$T_RESULTANT  00000300            

FAL$B_VALUE      00000010            FAL$V_ATT_MSG  = 00000001            

FAL$CHECK_RMS    00000196 RG    04   FAL$V_BLOCK_IO = 00000009            

FAL$CHECK_SS     0000018F RG    04   FAL$V_CNF_MSG  = 00000000            

FAL$C_WRKBLN     00000400            FAL$V_CONNECT  = 00000002            

FAL$EXIT_TO_VMS  00000186 RG    04   FAL$V_EOF      = 0000000A            

FAL$GB_LOG       ********   X   04   FAL$V_FILE_MODE= 00000008            

FAL$GETPAGE      000001A9 RG    04   FAL$V_LOG_MSG  = 00000001            

FAL$GQ_CALLER    ********   X   04   FAL$V_LOG_STAT = 00000000            

FAL$GQ_LINKUP    ********   X   04   FAL$V_MBXAST   = 00000012            

FAL$GQ_LNKNAM    00000013 RG    02   FAL$V_RCVAST   = 00000010            

FAL$GQ_LOGNAM    0000002F RG    02   FAL$V_XMTAST   = 00000011            

FAL$GQ_MBXNAM    00000000 RG    02   FAL$W_ACTUALSIZ  00000016            

FAL$GQ_PRTBUF    ********   X   04   FAL$W_LNKCHN     00000018            

FAL$GQ_SYSNAM    00000020 RG    02   FAL$W_MAXDAPSIZ  00000014            

FAL$GQ_TIME0     ********   X   04   FAL$W_MBXCHN     0000001A            

FAL$GT_VERSION   ********   X   04   GBL...         = 00000000            

FAL$GW_PRTLEN    ********   X   04   IO$M_ACCESS      ********   X   04   

FAL$K_BUFFERSIZ= 00000080            IO$_ACCESS       ********   X   04   

FAL$K_DAP      = 000000C0            MBXEFN         = 00000003            

FAL$K_FAB      = 00000050            RCVEFN         = 00000001            

FAL$K_MBXBUF   = 00000040            RMS$_EOF         ********   X   04   

FAL$K_MBXPROT  = 00000000            SYS$ASSIGN       ********   X   04   

FAL$K_MBXQUOTA = 00000200            SYS$CONNECT      ********  GX   04   

FAL$K_NAM      = 00000038            SYS$CREATE       ********  GX   04   

FAL$K_NCBBUF   = 00000040            SYS$CREMBX       ********   X   04   

FAL$K_RAB      = 00000044            SYS$EXIT         ********   X   04   

FAL$K_RESULTSIZ= 00000080            SYS$EXPREG       ********   X   04   

FAL$K_STB      = 00000020            SYS$FAO          ********   X   04   

FAL$K_WRKBLN     00000400            SYS$GETTIM       ********   X   04   

FAL$L_FAB        00000200            SYS$QIOW         ********   X   04   

FAL$L_NAM        00000294            SYS$TRNLOG       ********   X   04   

FAL$L_RAB        00000250            XMTEFN         = 00000002            

FAL$L_SPARE      0000004C            

FAL$L_STB        000000C0            

FAL$MBX_READ     ********   X   04   

FAL$PRINT_FAO    ********   X   04   

FAL$PRTFAB       ********   X   04   

FAL$PRTRAB       ********   X   04   

FAL$Q_BOUNDS     00000034            

FAL$Q_FLG        00000000            

FAL$Q_LNKIOSB    0000001C            

FAL$Q_MBX        0000002C            

FAL$Q_MBXIOSB    00000024            

FAL$Q_NCB        0000002C            

FAL$Q_RCV        0000003C            

FAL$Q_STATE_CTX  00000008            

FAL$Q_XMT        00000044            

FAL$START        00000000 RG    04   

FAL$STATE        ********   X   04   

FAL$STATE_TABLE  ********   X   04   

FAL$STATISTICS   ********   X   04   

FAL$TERMINATE    0000017D RG    04   

FALMAIN         - FAL MAINLINE                                   22-AUG-1978 01:14:03   VAX-11 MACRO X0.3-11               Page  12

PROGRAM SECTION SYNOPSIS                                                                                                         (6)







PROGRAM SECTION SYNOPSIS



.  ABS  .        00000000      00     NOPIC   USR   CON   ABS   LCL NOSHR NOEXE NORD  NOWRT BYTE  

. BLANK .        00000000      01     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

FAL$IMPURE       0000003E      02     NOPIC   USR   CON   REL   LCL   SHR NOEXE   RD    WRT BYTE  

$ABS$            00000400      03     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  

FAL$CODE         000001C4      04     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT PAGE  





THERE WERE NO ERRORS OR WARNINGS.

20484. BYTES LEFT IN FREE MEMORY POOL.

318. BYTES OF RECLAIMED MEMORY.

OBJ$:FALMAIN,LIS$:FALMAIN/-SP=LIB$:FAL.MLB/ML,SRC$:FALMAIN

46 MLB DIR RDS - 352 GETS TO DEFINE 27 MACROS. 14 INTER. FILE WRITES. 

