File: F4.LS of Disk: V50/Source/Source-Listing-PAL-3
(Source file text) 


/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 1

		/OS/8 FORTRAN F4 (PASS ONE)
		/
		/ VERSION 5A WVDM 9-OCT-80
		/
		/	OS/8 FORTRAN COMPILER - PASS 1
		/
		/	BY:  HANK MAURER
		/	UPDATED BY: R.LARY + M. HURLEY + WVDM
		/
		/
	0005		VERSON=5
	0001		PATCH="A&77
	7757		MREAD=7757
	7776		SBLOCK=7776
		/
		/CHANGES FOR MAINTENANCE RELEASE (S.R.):

		/1.	BUMPED VERSION NUMBER TO 304
		/2.	INCLUDED PATCH SEQ #4 (OCT DSN) FOR SF ERROR FIX
		/3.	INCLUDED PATCH SEQ #6 (TEMP VARS IN ASF)
		/4.	FIXED PROBLEM IN DATA STATEMENT
		/5.	STOPPED HALT AFTER OT ERROR BY CONVERTING LOGICAL
		/	VARS TO INTEGER IN ARITHMETIC IF STATEMENT
		/6.	FIXED BUG RE /A AND .RA EXTENSION

		/LAST MINUTE CHANGES:

		/7.	ALLOWED PARITY INPUT
		/8.	IGNORE NULLS ON INPUT
		/9.	FIXED BUG RE IGNORING LAST LINE IF IN ERROR
		/	OR IN FACT IGNORING ANY LAST LINE IF NO END STATEMENT
		/10.	ALLOW MULTIPLE INPUT FILES
		/
		/
		/CHANGES FOR OS/8 V3D AND OS/78 BY P.T.

		/1.	PATCH LEVEL NOW CONTAINED IN LOCATION 1130
		/2.	V3D UPDATE CHANGES WVDM
		/3.	ADAPTED TO CCL-DEVICE WVDM

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 2

	0001		*1
000001  6232		CIF	30
000002  5001		JMP	1		/FOR SYMBIONT
	0007		*7
000007  0001	LINENO,	1			/2.01/ LINE NUMBER
000010  0000	X10,	0			/AUTO INDEX REGISTERS
000011  0000	X11,	0
000012  0000	X12,	0
000013  0111	NEXT,	FREE-1			/FREE SPACE POINTER
000014  4677	STACK,	STACKS-1		/STACK POINTER
000015  0000	CHRPTR,	0			/INPUT BUFFER POINTER
000016  0000	X16,	0
000017  0000	X17,	0
000020  4677	STKLVL,	STACKS-1		/STACK BASE LEVEL
000021  0000	BUCKET,	0			/FIRST CHAR OF NAME
000022  0000	WORD1,	0			/SIX WORD LITERAL BUFFER
000023  0000	WORD2,	0
000024  0000	WORD3,	0
000025  0000	WORD4,	0
000026  0000	WORD5,	0
000027  0000	WORD6,	0
000030  0000	ACO,	0			/FLOATING AC OVERFLOW WORD
000031  0000	OP1,	0			/SEVEN WORD OPERAND FOR "NUMBER"
000032  0000	OP2,	0
000033  0000	OP3,	0
000034  0000	OP4,	0
000035  0000	OP5,	0
000036  0000	OP6,	0
000037  0000	OPO,	0
000040  0000	CHAR,	0			/ICHAR PUTS CHARACTER HERE
000041  0000	NOCODE,	0			/IS 1 IF CODE GENERATION OFF
000042  0000	NCHARS,	0			/SIZE OF INPUT LINE
000043  0000	NUMELM,	0			/NUMBER OF VARS IN TYPED LIST
000044  0000	TEMP,	0
000045  0000	TEMP2,	0
000046  0000	DECPT,	0			/SET 1 IF NUMBER CONTAINED .
000047  0000	ESWIT,	0			/1 FOR E  0 FOR D
000050  0000	NDIGIT,	0			/NUMBER OF DIGITS TO RIGHT OF .
000051  3256	HCHAR,	HCOUNT			/HOLLERITH GETTER ROUTINE
000052  0000	SNUM,	0			/POINTER TO ST ENTRY FOR STMT NUMBER
000053  0000	IFSWIT,	0			/=1 IF INSIDE LOGICAL IF
000054  0000	EXPON,	0			/HOLDS EXPONENT FOR CONVERSION
000055  0617	TMPFIL,	0617;2224;2216;2415	/PASS1 OUTPUT FILE
000056  2224
000057  2216
000060  2415
000061  0000		0;0;0;0			/PASS2 OUTPUT FILE
000062  0000
000063  0000
000064  0000
000065  0000	DOEND,	0			/SET 1 IF THIS STMT WAS A IF,
						/GOTO, RETURN, PAUSE, OR STOP
000066  0000	THSNUM,	0			/CURRENT STATEMENT NUMBER
000067  0000	DIMNUM,	0			/LINEARIZED SS FOR EQ
000070  0000	DPRDCT,	0			/HOLDS DIMENSION PRODUCT

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 2-1

000071  0000	EQTEMP,	0			/TEMP FOR EQUIVALENCE
000072  0000	MQ,	0			/MQ FOR 12 BIT MULTIPLY
000073  0000	MASTER,	0			/POINTER TO MASTER IN EQUIV GROUP
000074  0000	MNUM,	0			/LINEARIZED SS FOR MASTER
000075  0000	NSLAVE,	0			/NUMBER OF SLAVES IN GROUP
000076  0000	PASS2O,	0			/START OF PASS 2 OVERLAY SECTION
000077  0000	OUFILE,	0			/START OF PASS1 OUTPUT FILE
000100  0000	DSERES,	0			/MAGIC NUMBER
000101  0105	PROGNM,	MAIN			/POINTER TO PROG NAME
000102  0000	ARGLST,	0			/POINTER TO ARG LIST
000103  0000	FUNCTN,	0			/0=MAIN, 1=FUNCTION, -2=SUBROUTINE
000104  0000	SETBIT,	0			/TEMPS FOR DECLARATION SCANNER
000105  0000	BADBIT,	0
000106  0000	DOINDX,	0			/POINTER TO DO INDEX FOR DO LOOPS
000107  0000	TLTEMP,	0			/TEMP FOR TYPE ROUTINE
000110  0000	OWTEMP,	0			/TEMP FOR OUTWRD
000111  7676	CNT72,	-102			/72 COLUMN COUNTER
000112  0000	DPUSED,	0			/=1 IF DOUBLE HARDWARE USED
000113  0005	VERS,	VERSON			/VERSION NUMBER
000114  7567	M211,	-211
000115  0211	P211,	211
000116  0240	P240,	240
000117  6305	IXLNP5,	LINE+5			/**
000120  6300	IXLINE,	LINE
000121  6277	IXLINM,	LINE-1
000122  0000	STMJMP,	0		/FOR DEFINE FILE

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 3

		/ OPCODES AND EQUS
	0100		MAXHOL=100		/MAXIMUM HOLLERITH LITERAL
	4600		COMREG=4600		/INTER-PASS COMMUNICATION REGION
	4700		STACKS=4700		/STACK AREA
	6200		NAME1=6200		/NAME AND HOLLERITH BUFFER (WAS 6400)**
	6300		LINE=6300		/LINE BUFFER (WAS 6500)**
	6600		INBUF=6600		/INPUT BUFFER (FIELD 1)
	7200		OUBUF=7200		/OUTPUT BUFFER (DITTO)
	7200		INDEVH=7200		/INPUT DEVICE HANDLER (WAS 7400)**
	0022		PAUSOP=22
	0023		DPUSH=PAUSOP+1
	0024		BINRD1=DPUSH+1		/OPCODE DEFINITIONS
	0025		FMTRD1=BINRD1+1
	0026		RCLOSE=FMTRD1+1
	0027		DARD1=RCLOSE+1
	0030		BINWR1=DARD1+1
	0031		FMTWR1=BINWR1+1
	0032		WCLOSE=FMTWR1+1
	0033		DAWR1=WCLOSE+1
	0034		DEFFIL=DAWR1+1
	0035		ASFDEF=DEFFIL+1
	0036		ARGSOP=ASFDEF+1
	0037		EOLCOD=ARGSOP+1
	0040		ERRCOD=EOLCOD+1
	0041		RETOPR=ERRCOD+1
	0042		REWOPR=RETOPR+1
	0043		STOROP=REWOPR+1
	0044		ENDOPR=STOROP+1
	0045		DEFLBL=ENDOPR+1
	0046		DOFINI=DEFLBL+1
	0047		ARTHIF=DOFINI+1
	0050		LIFBGN=ARTHIF+1
	0051		DOBEGN=LIFBGN+1
	0052		ENDFOP=DOBEGN+1
	0053		STOPOP=ENDFOP+1
	0054		ASNOPR=STOPOP+1
	0055		BAKOPR=ASNOPR+1
	0056		FMTOPR=BAKOPR+1
	0057		GO2OPR=FMTOPR+1
	0060		CGO2OP=GO2OPR+1
	0061		AGO2OP=CGO2OP+1
	0062		IOLMNT=AGO2OP+1
	0063		DATELM=IOLMNT+1
	0064		DREPTC=DATELM+1
	0065		DATAST=DREPTC+1
	0066		ENDELM=DATAST+1
	0067		PRGSTK=ENDELM+1
	0070		DOSTOR=PRGSTK+1
		/ ASSEMBLE STATEMENT
	0200		PAGE
000200  6212	RDLOOP,	CIF	10		/FOR OS/8 2 PG HANDLERS**
000201  4577		JMS I	[ICHAR		/GET CHAR FROM INPUT FILE
000202  5231		JMP	ENDLIN		/END LINE OR CR
000203  1114		TAD	M211		/CHECK FOR TAB**
000204  7450		SNA

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 3-1

000205  1377		TAD	(240-211	/CONVERT TO BLANK
000206  1115		TAD	P211		/**
000207  3415		DCA I	CHRPTR		/SAVE CHAR
000210  2111		ISZ	CNT72		/PAST COLUMN 72 ?
000211  7410		SKP
000212  5224		JMP	SKPLIN		/SKIP 73 TO 80
000213  1015		TAD	CHRPTR
000214  7141		CIA CLL
000215  1376		TAD	(LINE+670
000216  7630		SZL CLA			/TEST FOR TOO MANY CONTINUATIONS
000217  5200		JMP	RDLOOP
000220  4576		JMS I	[ERMSG		/LINE TOO LONG
000221  1424		1424
000222  1016	SKPCOM,	TAD	X16		/RESTORE CHRPTR
000223  3015		DCA	CHRPTR
000224  6212	SKPLIN,	CIF	10		/**
000225  4577		JMS I	[ICHAR		/SKIP REST OF LINE
000226  5231		JMP	ENDLIN
000227  7200		CLA
000230  5224		JMP	SKPLIN
000231  1015	ENDLIN,	TAD	CHRPTR		/SAVE CHAR POSITION
000232  3016		DCA	X16
000233  1015		TAD	CHRPTR
000234  3010		DCA	X10		/SAVE POSITION FOR COMMENT CHECK
000235  1375		TAD	(-102		/SET COLUMN COUNT
000236  3111		DCA	CNT72
000237  1350		TAD	M6
000240  3042		DCA	NCHARS
000241  6212	GET6,	CIF	10		/**
000242  4577		JMS I	[ICHAR		/GET FIRST 6 CHARS
000243  5256		JMP	SHORTL		/IGNORE SHORT LINES
000244  1114		TAD	M211		/IS CHAR A TAB ? **
000245  7640		SZA CLA
000246  5261		JMP	NOTAB		/NO
000247  1116		TAD	P240		/TREAT FIRST TAB AS SIX BLANKS
000250  3415		DCA I	CHRPTR
000251  2042		ISZ	NCHARS
000252  5247		JMP	.-3
000253  1116		TAD	P240		/FAKE CONTINUATION CHECK
000254  3040		DCA	CHAR
000255  5265		JMP	CCHECK		/GO TO COMMENT CHECK
000256  1016	SHORTL,	TAD	X16		/RESET CHAR POINTER
000257  3015		DCA	CHRPTR		/TO IGNORE SHORT LINES
000260  5231		JMP	ENDLIN
000261  1040	NOTAB,	TAD	CHAR
000262  3415		DCA I	CHRPTR
000263  2042		ISZ	NCHARS
000264  5241		JMP	GET6		/LOOP
000265  1410	CCHECK,	TAD I	X10		/IS IT A COMMENT ?
000266  1374		TAD	(-303
000267  7650		SNA CLA
000270  5222		JMP	SKPCOM		/COMMENT, SKIP REST
000271  1040	NOCMNT,	TAD	CHAR		/WAS SIXTH CHAR A BLANK ?
000272  1352		TAD	MMM240
000273  7650		SNA CLA

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 3-2

000274  5300		JMP	GOTLIN		/YES, NO MORE CONTINUATIONS
000275  1016	CCARD,	TAD	X16		/IGNORE THESE SIX CHARACTERS
000276  3015		DCA	CHRPTR
000277  5200		JMP	RDLOOP		/CONTINUE WITH THIS LINE
000300  1015	GOTLIN,	TAD	CHRPTR		/COMPUTE -NCHARS-1
000301  7041		CIA
000302  1373		TAD	(LINE+4
000303  3042		DCA	NCHARS
000304  1175		TAD	[LINE-1		/RESET CHAR POINTER
000305  3015		DCA	CHRPTR
000306  4574		JMS I	[CKCTLC		/CHECK FOR CONTROL C
000307  3066	LINE1,	DCA	THSNUM		/ZERO CURRENT STMT NUMBER
000310  7130		CLL CML RAR		/SET LABEL DEFINE BIT
000311  4573		JMS I	[STMNUM		/GO LOOK FOR LABEL
000312  5321		JMP	COMPIL		/NONE THERE
000313  1052		TAD	SNUM		/SAVE STATEMENT NUMBER
000314  3066		DCA	THSNUM
000315  1372		TAD	(DEFLBL		/OUTPUT DEFINITION FOR THIS LABEL
000316  4572		JMS I	[OUTWRD
000317  1052		TAD	SNUM
000320  4572		JMS I	[OUTWRD		/FOLLOWED BY THE LABEL ADDRESS
000321  4571	COMPIL,	JMS I	[SAVECP
000322  2007		ISZ	LINENO		/2.01/ PUT LINE NUMBER
000323  1007		TAD	LINENO		/2.01/ INTO MQ
000324  7421		7421			/2.01/
000325  7201		CLA IAC
000326  3041		DCA	NOCODE		/SET NOCODE SWITCH
000327  4576		JMS I	[ERMSG		/SET UP DEFAULT ERROR MESSAGE
000330  1513		1513
000331  4570		JMS I	[LEXPR		/IS IT ARITHMETIC ?
000332  5361		JMP	NOTAR		/NO
000333  4567		JMS I	[GETC		/LOOK FOR =
000334  5361		JMP	NOTAR		/NOT ARITHMETIC
000335  1355		TAD	MMM275		/=
000336  7650		SNA CLA
000337  4566		JMS I	[EXPR		/SCAN LEFT PART
000340  5361		JMP	NOTAR
000341  4576		JMS I	[ERMSG		/SET MESSAGE TO ILLEGAL OPERATOR
000342  1720		1720
000343  2042		ISZ	NCHARS		/SHOULD BE NOTHING LEFT
000344  5361		JMP	NOTAR		/IF THERE IS, ITS NOT ARITHMETIC
000345  4565	ITSAR,	JMS I	[RESTCP		/RESTORE TO START OF LINE
000346  3041		DCA	NOCODE		/ALLON CODE
000347  4570		JMS I	[LEXPR		/GET LEFT SIDE
000350  7772	M6,	-6			/V3C MUST BE HERE
000351  4567		JMS I	[GETC		/SKIP =
000352  7540	MMM240,	-240			/SHOULD NEVER GET HERE
000353  7200		CLA
000354  4566		JMS  I	[EXPR		/GET RIGHT SIDE
000355  7503	MMM275,	-275			/SHOULD NEVER GET HERE
000356  1371		TAD	(STOROP		/OUTPUT STORE
000357  4572		JMS I	[OUTWRD
000360  5564		JMP I	[NEXTST		/DO NEXT LINE
000361  4565	NOTAR,	JMS I	[RESTCP		/RESTART LINE
000362  3041		DCA	NOCODE

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 3-3

000363  4571		JMS I	[SAVECP		/RESAVE CHAR POSITION
000364  1370		TAD	(CMDLST-1
000365  3010		DCA	X10
000366  5767		JMP I	(CMDLUP		/GO SEARCH FOR KEYWORD

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 4

		/ KEYWORD SEARCH
000367  0400
000370  5777
000371  0043
000372  0045
000373  6304
000374  7475
000375  7676
000376  7170
000377  0027
	0400		PAGE
000400  6211	CMDLUP,	CDF	10		/TABLE IN FIELD ONE
000401  1410		TAD I	X10		/GET NEXT 2 CHARS OF KEYWORD
000402  7440		SZA
000403  5213		JMP	CMDLP2		/NOT DONE YET
000404  7144		CLL CMA RAL		/REMOVE CHAR POS FROM STACK
000405  1014		TAD	STACK
000406  3014		DCA	STACK
000407  1410		TAD I	X10		/GET ROUTINE ADDRESS
000410  6201		CDF
000411  3122		DCA	STMJMP
000412  5522		JMP I	STMJMP		/JUMP TO THE ROUTINE
000413  3044	CMDLP2,	DCA	TEMP		/SAVE THE TWO CHARS
000414  6201		CDF
000415  4563		JMS I	[GET2C		/GET TWO CHARS FROM THE INPUT
000416  5222		JMP	.+4		/NOT ENOUGH CHARS, CAN'T BE THIS ONE
000417  1044		TAD	TEMP		/COMPARE
000420  7650		SNA CLA
000421  5200		JMP	CMDLUP		/MATCHES, KEEP GOING
000422  4565		JMS I	[RESTCP		/RESTORE CHAR POS
000423  2014		ISZ	STACK
000424  2014		ISZ	STACK		/AND SAVE IT AGAIN
000425  6211		CDF	10
000426  1410		TAD I	X10		/FIND END OF THIS COMMAND
000427  7640		SZA CLA
000430  5226		JMP	.-2
000431  2010		ISZ	X10		/SKIP ROUTINE ADDRESS
000432  1410		TAD I	X10		/IS THE LIST EXHAUSTED ?
000433  7440		SZA
000434  5213		JMP	CMDLP2		/NO, GO AGAIN
000435  4576	BADCMD,	JMS I	[ERMSG		/TREAT AS BAD ARITHMETIC STMT
000436  0000	ERCODE,	0

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 5

		/ END OF STMT PROC
		NEXTLN,
		NEXTST,
000437  1020	DOENDR,	TAD	STKLVL		/RESET STACK POINTER
000440  3014		DCA	STACK
000441  4562		JMS I	[POP		/LOOK FOR DO END
000442  7041		CIA
000443  1066		TAD	THSNUM		/DOES THIS LINE END A DO LOOP ?
000444  7640		SZA CLA
000445  5262		JMP	NODOND		/NO, REPLACE STACK AND COMPILE STMT
000446  1377		TAD	(DOFINI
000447  4572		JMS I	[OUTWRD		/OUTPUT DO END COMMAND
000450  4562		JMS I	[POP		/GET INDEX VARIABLE
000451  4572		JMS I	[OUTWRD
000452  1014		TAD	STACK		/RESET STACK BASE LEVEL
000453  3020		DCA	STKLVL
000454  1065		TAD	DOEND		/WAS THIS A LEGAL ENDING STMT ?
000455  7640		SZA CLA
000456  4576		JMS I	[ERMSG
000457  0504		0504			/DO END ERROR
000460  3065		DCA	DOEND		/KILL SWITCH
000461  5237		JMP	DOENDR
000462  2014	NODOND,	ISZ	STACK		/REPLACE STACK ENTRY
000463  3065		DCA	DOEND		/KILL SWITCH
000464  1376		TAD	(EOLCOD		/OUTPUT EOL CODE
000465  4572		JMS I	[OUTWRD
000466  3236		DCA	ERCODE		/RESET ERROR CODE
000467  3053		DCA	IFSWIT		/KILL IF SWITCH
000470  1375		TAD	(-6		/MOVE FIRST 6 CHARS
000471  3042		DCA	NCHARS
000472  1175		TAD	[LINE-1		/INTO START OF BUFFER
000473  3015		DCA	CHRPTR
000474  1416		TAD I	X16
000475  3415		DCA I	CHRPTR
000476  2042		ISZ	NCHARS
000477  5274		JMP	.-3
000500  5774		JMP I	(RDLOOP

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 6

		/ GOTO'S
000501  2065	GOTO,	ISZ	DOEND		/DO END ILLEGAL
000502  4573		JMS I	[STMNUM		/IS IT A SIMPLE GOTO ?
000503  5311		JMP	CMPGO2		/NO, SEE IF ITS A COMPUTED ONE
000504  1373		TAD	(GO2OPR		/OUTPUT GOTO OPERATOR
000505  4572		JMS I	[OUTWRD
000506  1052		TAD	SNUM		/FOLLOWED BY STMT NUMBER
000507  4572		JMS I	[OUTWRD
000510  5564		JMP I	[NEXTST
000511  4567	CMPGO2,	JMS I	[GETC		/LOOK FOR (
000512  5365		JMP	BADGO2		/BAD GOTO
000513  1372		TAD	(-250
000514  7640		SZA CLA
000515  5357		JMP	ASNGO2		/NOT ( , MAYBE ITS AN ASSIGNED GOTO
000516  1014		TAD	STACK		/SAVE STACK POSITION
000517  3012		DCA	X12
000520  3044		DCA	TEMP		/ZERO BRANCH COUNTER
000521  4573	GO2LUP,	JMS I	[STMNUM		/GET NEXT STMT NUMBER
000522  5365		JMP	BADGO2		/MUST BE THERE
000523  1052		TAD	SNUM
000524  4561		JMS I	[PUSH		/SAVE IT TEMPORARILY
000525  2044		ISZ	TEMP		/BUMP BRANCH COUNT
000526  4560		JMS I	[COMARP		/LOOK FOR COMMA OR RIGHT PAREN
000527  5365		JMP	BADGO2		/NEITHER
000530  5321		JMP	GO2LUP		/COMMA, GO GET NEXT LABEL
000531  4567		JMS I	[GETC		/SKIP NEXT CHAR (ITS A COMMA)
000532  5365		JMP	BADGO2
000533  7200		CLA
000534  1044		TAD	TEMP		/SAVE COUNT
000535  4561		JMS I	[PUSH		/ON STACK
000536  4566		JMS I	[EXPR		/COMPILE INDEX EXPR
000537  5564		JMP I	[NEXTST
000540  1371		TAD	(CGO2OP		/OUTPUT COMPUTED GOTO OPERATOR
000541  4572		JMS I	[OUTWRD
000542  4562		JMS I	[POP		/GET COUNT
000543  7041		CIA
000544  3044		DCA	TEMP		/SAVE COMPLEMENT
000545  1044		TAD	TEMP
000546  7041		CIA
000547  4572		JMS I	[OUTWRD		/OUTPUT COUNT
000550  1012		TAD	X12		/RESTORE STACK POINTER
000551  3014		DCA	STACK
000552  1412		TAD I	X12		/MOVE STMT NUMBERS TO OUTPUT
000553  4572		JMS I	[OUTWRD
000554  2044		ISZ	TEMP
000555  5352		JMP	.-3
000556  5564		JMP I	[NEXTST
000557  4557	ASNGO2,	JMS I	[BACK1		/PUT BACK NON (
000560  4570		JMS I	[LEXPR		/GET ASSIGN VAR
000561  5365		JMP	BADGO2
000562  1370		TAD	(AGO2OP		/OUTPUT GOTO OPERATOR
000563  4572		JMS I	[OUTWRD
000564  5564		JMP I	[NEXTST
000565  4576	BADGO2,	JMS I	[ERMSG
000566  0724		0724

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 6-1

000567  5564		JMP I	[NEXTST

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 7

		/ I/O STATEMENTS
000570  0061
000571  0060
000572  7530
000573  0057
000574  0200
000575  7772
000576  0037
000577  0046
	0600		PAGE
000600  0000	RDWR,	0			/SUBR FOR IO STATEMENTS
000601  4556		JMS I	[CHECKC		/LOOK FOR (
000602  7530	M250,	-250
000603  5275		JMP	BADRD
000604  4566		JMS I	[EXPR		/COMPILE UNIT
000605  5555		JMP I	[BADCMD
000606  4560		JMS I	[COMARP
000607  5777' 		JMP	DAQUOT		/LOOK FOR ' (DIRECT ACCESS I/O)
000610  5347		JMP	RDFMT		/,
000611  1376		TAD	(BINRD1		/FORMATLESS READ/WRITE
000612  1600	IOSTRT,	TAD I	RDWR		/ADD ADJUSTOR
000613  4572		JMS I	[OUTWRD		/OUTPUT BINARY READ
000614  4561	IOLIST,	JMS I	[PUSH		/MARK STACK
000615  4567		JMS I	[GETC		/IS IT AN IMPLIED DO ?
000616  5340		JMP	ENDIOL		/NO, END OF LIST
000617  1202		TAD	M250
000620  7640		SZA CLA
000621  5300		JMP	TRYIOE		/NO, LOOK FOR IO ELEMENT
000622  4571		JMS I	[SAVECP		/SAVE CHAR POS AT START OF IDO
000623  3337		DCA	IDOPAR		/ZERO PAREN COUNTER
000624  4577	FINDND,	JMS I	[GETNAM		/GET A NAME IF THERE IS ONE
000625  0067	XPURGE,	PRGSTK			/DON'T WORRY ITS A NOP
000626  4567		JMS I	[GETC		/GET A CHAR
000627  5340		JMP	ENDIOL
000630  1360		TAD	M251		/IS IT A ) ?
000631  7450		SNA
000632  5270		JMP	RPIOL		/YES
000633  7001		IAC			/IS IT ( ?
000634  7450		SNA
000635  5266		JMP	LPIOL		/YES
000636  1375		TAD	(250-275	/IS IT = ?
000637  7640		SZA CLA
000640  5224		JMP	FINDND		/NONE OF THESE
000641  1337		TAD	IDOPAR		/IS PAREN COUNT 0 ?
000642  7640		SZA CLA
000643  5224		JMP	FINDND		/NO, ITS FROM AN INNER LOOP
000644  4554		JMS I	[LOOKUP		/THIS ELEMENT IS THE DO INDEX
000645  3106		DCA	DOINDX
000646  4774		JMS I	(DOSTUF		/COMPILE THE LOOP
000647  5275		JMP	BADIOL		/ERROR IN DO PARMS
000650  4556		JMS I	[CHECKC		/MUST HAVE )
000651  7527		-251
000652  5275		JMP	BADIOL
000653  1015		TAD	CHRPTR		/SAVE CHAR POSITION
000654  3044		DCA	TEMP

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 7-1

000655  1042		TAD	NCHARS
000656  3045		DCA	TEMP2
000657  4565		JMS I	[RESTCP		/RESTORE TO START OF IMPLIED LOOP
000660  1045		TAD	TEMP2		/NOW SAVE POS AFTER LOOP
000661  4561		JMS I	[PUSH
000662  1044		TAD	TEMP
000663  4561		JMS I	[PUSH
000664  1106		TAD	DOINDX		/AND DO INDEX
000665  5214		JMP	IOLIST
000666  2337	LPIOL,	ISZ	IDOPAR		/( INCREASES COUNT
000667  5224		JMP	FINDND
000670  7040	RPIOL,	CMA			/) DECREASES COUNT
000671  1337		TAD	IDOPAR
000672  7500		SMA
000673  5223		JMP	FINDND-1
000674  7200		CLA
		BADIOL,
000675  4576	BADRD,	JMS I	[ERMSG		/BAD IO STMT
000676  2227		2227
000677  5564		JMP I	[NEXTST
000700  4557	TRYIOE,	JMS I	[BACK1		/PUT BACK NON (
000701  4570		JMS I	[LEXPR		/GET IOLIST ELEMENT
000702  5275		JMP	BADRD		/NOT THERE, ERROR
000703  4567		JMS I	[GETC		/LOOK FOR A COMMA
000704  5310		JMP	.+4		/EOL
000705  1373		TAD	(-254
000706  7440		SZA
000707  5313		JMP	NOTIOL		/NOT AN ELEMENT
000710  1372		TAD	(IOLMNT		/OUTPUT OPCODE
000711  4572		JMS I	[OUTWRD
000712  5215		JMP	IOLIST+1
000713  1371	NOTIOL,	TAD	(254-275	/IS IT AN = (END OF IDO)
000714  7640		SZA CLA
000715  5275		JMP	BADIOL		/NO, BAD
000716  4562		JMS I	[POP		/GET STUFF FROM THE STACK
000717  7450		SNA
000720  5275		JMP	BADIOL		/ZERO IS BAD
000721  3106		DCA	DOINDX		/THIS IS THE INDEX
000722  4565		JMS I	[RESTCP		/GET THE CHAR POSITION
000723  1225		TAD	XPURGE		/OUTPUT PURGE OPERATOR
000724  4572		JMS I	[OUTWRD		/BECAUSE AN EXTRA IS ON THE STK
000725  1370		TAD	(DOFINI		/END LOOP
000726  4572		JMS I	[OUTWRD
000727  1106		TAD	DOINDX
000730  4572		JMS I	[OUTWRD
000731  4567		JMS I	[GETC		/END OF LIST ?
000732  5340		JMP	ENDIOL
000733  1373		TAD	(-254
000734  7640		SZA CLA
000735  5275		JMP	BADIOL		/MUST BE A COMMA
000736  5215		JMP	IOLIST+1
000737  0000	IDOPAR,	0
000740  4562	ENDIOL,	JMS I	[POP		/IS THE MARK THERE ?
000741  7640		SZA CLA
000742  5275		JMP	BADRD		/NO, ERROR

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 7-2

000743  1600		TAD I	RDWR
000744  1367		TAD	(RCLOSE		/END OF IO OPERATION
000745  4572		JMS I	[OUTWRD
000746  5564		JMP I	[NEXTST
000747  4573	RDFMT,	JMS I	[STMNUM		/LOOK FOR FMT LINE NUMBER
000750  5363		JMP	RTFMT
000751  4572		JMS I	[OUTWRD		/OUTPUT PUSH COMMAND
000752  1052		TAD	SNUM		/OUTPUT STMT NUMBER OF FORMAT
000753  4572		JMS I	[OUTWRD
000754  1366	RDLIST,	TAD	(FMTRD1		/START OF FORMATTED READ
000755  1600		TAD I	RDWR		/ADD ADJUSTOR
000756  4572		JMS I	[OUTWRD
000757  4556		JMS I	[CHECKC		/LOOK FOR )
000760  7527	M251,	-251
000761  5275		JMP	BADRD
000762  5214		JMP	IOLIST		/GO GET IO LIST
000763  4570	RTFMT,	JMS I	[LEXPR		/GET R.T. FORMAT
000764  5275		JMP	BADRD
000765  5354		JMP	RDLIST		/GET LIST

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 8

		/DIRECT ACCESS I/O
000766  0025
000767  0026
000770  0046
000771  7757
000772  0062
000773  7524
000774  2324
000775  7753
000776  0024
000777  1000
	1000		PAGE
001000  4557	DAQUOT,	JMS I	[BACK1
001001  4556		JMS I	[CHECKC		/LOOK FOR '
001002  7531		-247
001003  5777' 		JMP	BADRD		/SYNTAX IS NO GOOD
001004  4566		JMS I	[EXPR		/GET RECORD NUMBER EXPR
001005  5777' 		JMP	BADRD
001006  4556		JMS I	[CHECKC		/LOOK FOR )
001007  7527		-251
001010  5777' 		JMP	BADRD
001011  1376		TAD	(DARD1		/DIRECT ACCESS OPEN
001012  5775' 		JMP	IOSTRT
001013  5564	FIND,	JMP I	[NEXTST		/COOL ISN'T IT ?
001014  4566	DFINFL,	JMS I	[EXPR		/COMPILE UNIT
001015  5261		JMP	BADDEF		/BAD DEFINE STMT
001016  3122		DCA	STMJMP		/PERMIT VARIABLE FOR LOG UNIT
001017  4556		JMS I	[CHECKC		/(
001020  7530		-250
001021  5261		JMP	BADDEF
001022  4566		JMS I	[EXPR		/NUMBER OF RECORDS
001023  5261		JMP	BADDEF
001024  4556		JMS I	[CHECKC		/,
001025  7524		-254
001026  5261		JMP	BADDEF
001027  4566		JMS I	[EXPR		/RECORD SIZE
001030  5261		JMP	BADDEF
001031  4556		JMS I	[CHECKC		/,
001032  7524		-254
001033  5261		JMP	BADDEF
001034  4556		JMS I	[CHECKC		/U
001035  7453		-325
001036  5261		JMP	BADDEF
001037  4556		JMS I	[CHECKC		/,
001040  7524	MCOMA,	-254
001041  5261		JMP	BADDEF
001042  4577		JMS I	[GETNAM		/GET INDEX VARIABLE
001043  5261		JMP	BADDEF
001044  4572		JMS I	[OUTWRD
001045  4554		JMS I	[LOOKUP
001046  4572		JMS I	[OUTWRD		/OUTPUT INDEX VAR
001047  1374		TAD	(DEFFIL		/OUTPUT DEFINE OPERATOR
001050  4572		JMS I	[OUTWRD
001051  4556		JMS I	[CHECKC		/)
001052  7527		-251

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 8-1

001053  5261		JMP	BADDEF
001054  4567		JMS I	[GETC		/ANOTHER DEFINE ?
001055  5564		JMP I	[NEXTST
001056  1240		TAD	MCOMA		/, ?
001057  7650		SNA CLA
001060  5214		JMP	DFINFL		/YES, ANOTHER FILE
001061  4576	BADDEF,	JMS I	[ERMSG		/BAD DEFINE FILE STMT
001062  0406		0406
001063  5564		JMP I	[NEXTST
001064  0000	RESTCP,	0			/RESTORE CHAR POSITION FROM STACK
001065  4562		JMS I	[POP
001066  3015		DCA	CHRPTR
001067  4562		JMS I	[POP
001070  3042		DCA	NCHARS
001071  5664		JMP I	RESTCP
001072  4556	INTEGE,	JMS I	[CHECKC		/INTEGER STMT
001073  7456		-322
001074  5555		JMP I	[BADCMD
001075  4553		JMS I	[TYPLST
001076  0101		0101
001077  0100		0100
001100  7000		NOP
001101  5564		JMP I	[NEXTST
001102  4556	PAUZE,	JMS I	[CHECKC		/LOOK FOR E
001103  7473		-305
001104  5555		JMP I	[BADCMD
001105  4567		JMS I	[GETC		/ANY EXPR ?
001106  5315		JMP	NOARGP		/MAKE IT PAUSE 1
001107  4557		JMS I	[BACK1		/PUT IT BACK
001110  4566		JMS I	[EXPR		/GET PAUSE NUMBER
001111  0022	XPAUZ,	PAUSOP
001112  1311	OPAUZ,	TAD	XPAUZ		/OUTPUT PAUSE OPERATOR
001113  4572		JMS I	[OUTWRD
001114  5564		JMP I	[NEXTST
001115  4572	NOARGP,	JMS I	[OUTWRD		/PUSH 1.0
001116  1152		TAD	[ONE
001117  4572		JMS I	[OUTWRD
001120  5312		JMP	OPAUZ		/GO PUT OPERATOR
001121  4773	READ,	JMS I	(RDWR		/COMPILE READ STMT
001122  0000		0
001123  4556	WRITE,	JMS I	[CHECKC		/LOOK FOR E
001124  7473		-305
001125  5555		JMP I	[BADCMD
001126  4773		JMS I	(RDWR		/COMPILE WRITE
001127  0004		BINWR1-BINRD1
001130  6501	CKCTLC,	VERSON^100+PATCH+6000	/CHECK FOR CONTROL C
001131  1372		TAD	(7600
001132  6034		KRS
001133  1371		TAD	(-7603		/^C
001134  7650		SNA CLA
001135  6031		KSF
001136  5730		JMP I	CKCTLC
001137  5772		JMP I	(7600

001140  3022	XOCTAL,	DCA	WORD1		/**

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 8-2

001141  3023		DCA	WORD2
001142  3024		DCA	WORD3		/STATEMENT NUM LEFT THERE**
001143  3026		DCA	WORD5
001144  3027		DCA	WORD6
001145  3025	XCTAL1,	DCA	WORD4
001146  4551		JMS I	[DIGIT		/GET NEXT DIGIT
001147  5360		JMP	ENDOXT		/NO DIGITS LEFT
001150  0150		AND	[7		/THROW AWAY SOME BITS
001151  3044		DCA	TEMP
001152  4770		JMS I	(AL1		/MOVE WORD LEFT THREE
001153  4770		JMS I	(AL1
001154  4770		JMS I	(AL1
001155  1025		TAD	WORD4		/ADD DIGIT TO WORD4
001156  1044		TAD	TEMP
001157  5345		JMP	XCTAL1		/LOOP
001160  1023	ENDOXT,	TAD	WORD2		/PUT WORDS INTO THE LEFT PLACE
001161  3022		DCA	WORD1
001162  1024		TAD	WORD3
001163  3023		DCA	WORD2
001164  1025		TAD	WORD4
001165  3024		DCA	WORD3
001166  5767' 		JMP	DATAFP		/GO STUFF IT AWAY

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 9

		/ DIMENSION, COMMON, REAL
001167  6056
001170  5344
001171  0175
001172  7600
001173  0600
001174  0034
001175  0612
001176  0027
001177  0675
	1200		PAGE
001200  4547	DIMENS,	JMS I	[IFCHEK
001201  4556		JMS I	[CHECKC		/CHECK FOR "N"
001202  7462		-316
001203  5555		JMP I	[BADCMD		/NO GOOD
001204  4553		JMS I	[TYPLST		/PROCESS LIST
001205  0000		0000			/DIMENSION IS THE SIMPLEST CASE
001206  0000		0000
001207  7000		NOP			/ERROR RETURN
001210  5564		JMP I	[NEXTST
001211  4547	REAL,	JMS I	[IFCHEK		/CHECK FOR INSIDE IF
001212  4553		JMS I	[TYPLST		/PROCESS LIST
001213  0102		0102			/TYPE-REAL
001214  0100		0100
001215  7000		NOP
001216  5564		JMP I	[NEXTST
001217  4556	COMPLE,	JMS I	[CHECKC		/CHECK FOR "X"
001220  7450		-330
001221  5555		JMP I	[BADCMD
001222  4547		JMS I	[IFCHEK
001223  4553		JMS I	[TYPLST		/PROCESS COMPLEX LIST
001224  0103		0103
001225  0100		0100
001226  7000		NOP
001227  7201		CLA IAC			/SET DP SWITCH
001230  3112		DCA	DPUSED
001231  5564		JMP I	[NEXTST
001232  4547	COMMON,	JMS I	[IFCHEK		/BAD INSIDE LOGICAL IF
001233  4567		JMS I	[GETC		/CHECK FOR SLASH
001234  5555		JMP I	[BADCMD
001235  1243		TAD	M257
001236  7640		SZA CLA
001237  5324		JMP	BLANKC		/MUST BE BLANK COMMON
001240  4577		JMS I	[GETNAM		/GET NAME OF COMMON
001241  5320		JMP	DBLSLS		/MIGHT BE //
001242  4556		JMS I	[CHECKC		/LOOK FOR /
001243  7521	M257,	-257
001244  5330		JMP	BADCOM
001245  4554		JMS I	[LOOKUP		/LOOKUP COMMON NAME
001246  7001		IAC
001247  3333		DCA	COMNAM		/SAVE ADDR OF TYPE WORD
001250  6211		CDF	10
001251  1733		TAD I	COMNAM		/LOOK AT TYPE
001252  7440		SZA
001253  1377		TAD	(-111		/MUST BE COMMON OR UNDEF.

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 9-1

001254  7640		SZA CLA
001255  5330		JMP	BADCOM
001256  1376		TAD	(111		/SET CORRECT BITS
001257  3733		DCA I	COMNAM
001260  6201		CDF
001261  4553	DOCOMN,	JMS I	[TYPLST		/HANDLE LIST
001262  4000		4000
001263  5460		5460
001264  5564		JMP I	[NEXTST
001265  1012		TAD	X12
001266  3014		DCA	STACK		/RESET STACK
001267  6211		CDF	10
001270  2333		ISZ	COMNAM		/POINTER TO COMMON INFO
001271  3413		DCA I	NEXT		/ZERO NEXT PTR WORD
001272  1733		TAD I	COMNAM		/LOOK FOR END OF LIST
001273  7450		SNA
001274  5277		JMP	EOCL		/THIS IS IT
001275  3333		DCA	COMNAM		/PROCEED DOWN LIST
001276  5272		JMP	.-4
001277  1013	EOCL,	TAD	NEXT		/HOOK IN NEXT PART
001300  3733		DCA I	COMNAM
001301  1043		TAD	NUMELM
001302  3413		DCA I	NEXT		/NUMBER IN THIS PART
001303  1043		TAD	NUMELM
001304  7041		CIA
001305  3043		DCA	NUMELM
001306  6201		CDF
001307  1412		TAD I	X12		/MOVE VARIABLE PTRS
001310  6211		CDF	10
001311  3413		DCA I	NEXT
001312  2043		ISZ	NUMELM
001313  5306		JMP	.-5
001314  6201		CDF
001315  4567		JMS I	[GETC		/ANOTHER BLOCK ?
001316  5564		JMP I	[NEXTST		/NO
001317  5235		JMP	COMMON+3	/MAYBE
001320  4556	DBLSLS,	JMS I	[CHECKC		/LOOK FOR SECOND SLASH
001321  7521		-257
001322  5330		JMP	BADCOM
001323  7410		SKP
001324  4557	BLANKC,	JMS I	[BACK1		/PUT BACK NON SLASH
001325  1375		TAD	(BLNKCN		/USE BLANK COMMON
001326  3333		DCA	COMNAM
001327  5261		JMP	DOCOMN
001330  4576	BADCOM,	JMS I	[ERMSG		/ERROR IN COMMON STMT
001331  0317		0317
001332  5564		JMP I	[NEXTST
001333  0000	COMNAM,	0

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 10

		/ EXTERNAL, FORMAT, BACKSPACE
001334  4553	EXTERN,	JMS I	[TYPLST		/PROCESS LIST
001335  1000		1000
001336  6660		6660
001337  7000		NOP
001340  5564		JMP I	[NEXTST
001341  1374	FORMAT,	TAD	(FMTOPR		/OUTPUT FORMAT OPERATOR
001342  4572		JMS I	[OUTWRD
001343  1042		TAD	NCHARS		/GET NUMBER OF WORDS
001344  7041		CIA
001345  7110		CLL RAR			/NWORDS=(NCHARS+1)/2
001346  4572	FMTLUP,	JMS I	[OUTWRD		/OUTPUT IT
001347  4546		JMS I	[GETCWB		/GET THE CHARS
001350  5564		JMP I	[NEXTST		/NO MORE
001351  0145		AND	[77
001352  7106		CLL RTL			/SHIFT LEFT 6
001353  7006		RTL
001354  7006		RTL
001355  3044		DCA	TEMP
001356  4546		JMS I	[GETCWB		/GET OTHER HALF
001357  7000		NOP			/IGNORE END OF LINE
001360  0145		AND	[77
001361  1044		TAD	TEMP		/PUT THEM TOGETHER
001362  5346		JMP	FMTLUP		/LOOP
			/NOTE : THE ENTIRE FORMAT INCLUDING PARENTHESIS ()
			/	IS PASSED TO THE CODE
001363  4556	BACKSP,	JMS I	[CHECKC		/CHECK FOR "E"
001364  7473		-305
001365  5555		JMP I	[BADCMD
001366  4566		JMS I	[EXPR		/COMPILE UNIT EXPR
001367  5555		JMP I	[BADCMD
001370  1373		TAD	(BAKOPR		/OUTPUT BACKSPACE OPERATOR
001371  4572		JMS I	[OUTWRD
001372  5564		JMP I	[NEXTST

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 11

		/ OUTPUT ROUTINE
001373  0055
001374  0056
001375  0021
001376  0111
001377  7667
	1400		PAGE
001400  7200	OUPTR,	OUBUF
001401  7377	OCOUNT,	-401
001402  0000	OUTWRD,	0			/OUTPUT ROUTINE
001403  3110		DCA	OWTEMP		/SAVE WORD
001404  1041		TAD	NOCODE
001405  7640		SZA CLA
001406  5602		JMP I	OUTWRD		/COOL IT IF NOCODE
001407  2201		ISZ	OCOUNT		/TEST FOR BUFFER FULL
001410  5216		JMP	NOWRIT		/STILL SOME ROOM
001411  4225		JMS	OUDUMP		/DUMP THE BUFFER
001412  1235		TAD	OUBLOK-1	/RESET BUFFER PARAMETERS
001413  3200		DCA	OUPTR
001414  1377		TAD	(-400
001415  3201		DCA	OCOUNT
001416  1110	NOWRIT,	TAD	OWTEMP		/PUT WORD
001417  6211		CDF	10
001420  3600		DCA I	OUPTR		/INTO BUFFER
001421  6201		CDF
001422  2200		ISZ	OUPTR		/MOVE POINTER
001423  5602		JMP I	OUTWRD
001424  0000	OULEN,	0			/NUMBER OF BLOCKS LEFT IN HOLE
001425  0000	OUDUMP,	0			/DUMP OUT BUFFER
001426  1224		TAD	OULEN		/ANY ROOM LEFT ?
001427  7450		SNA
001430  5243		JMP	OUERR
001431  7001		IAC
001432  3224		DCA	OULEN
001433  4776		JMS I	(7607		/CALL SYSTEM HANDLER
001434  4210		4210
001435  7200		OUBUF
001436  0000	OUBLOK,	0
001437  5243		JMP	OUERR
001440  2236		ISZ	OUBLOK		/INCREMENT BLOCK NUMBER
001441  2271		ISZ	FILSIZ		/ALSO SIZE OF FILE
001442  5625		JMP I	OUDUMP
001443  4544	OUERR,	JMS I	[MESSAG		/ERROR IN WRITING OR OPENING FILE
001444  0317		317
001445  0306		306

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 12

		/ END PASS ONE
001446  4556	XEND,	JMS I	[CHECKC		/LOOK FOR "D"
001447  7474		-304
001450  5555		JMP I	[BADCMD
001451  4567		JMS I	[GETC		/END MUST BE ALL
001452  5255		JMP	ENDX
001453  7700	L7700,	SMA CLA			/NEVER SKIPS
001454  5555		JMP I	[BADCMD
001455  6201	ENDX,	CDF 0
001456  1375		TAD	(ENDOPR		/OUTPUT END OF FILE
001457  4572		JMS I	[OUTWRD
001460  4225		JMS	OUDUMP		/DUMP BUFFER
001461  6212		CIF	10
001462  4653		JMS I	L7700		/LOCK MONITOR IN
001463  0010		10
001464  6212		CIF	10
001465  7201		CLA IAC
001466  4767		JMS I	L200		/CLOSE TEMP FILE
001467  0004		4
001470  0055		TMPFIL
001471  0000	FILSIZ,	0
001472  5243		JMP	OUERR
001473  6212		CIF	10
001474  7201		CLA IAC
001475  4767		JMS I	L200		/OPEN PASS 2 OUTPUT FILE
001476  0003	L3,	3
001477  0061	OBLK,	TMPFIL+4		/STARTING BLOCK
001500  0000		0			/SIZE
001501  5243		JMP	OUERR		/ERROR
001502  1374		TAD	(COMREG-1	/SAVE IMPORTANT STUFF
001503  3010		DCA	X10
001504  1013		TAD	NEXT		/ADDR OF FREE SPACE
001505  3410		DCA I	X10
001506  1020		TAD	STKLVL		/STACK LEVEL
001507  3410		DCA I	X10
001510  1077		TAD	OUFILE		/START OF PASS1 OUTPUT FILE
001511  3410		DCA I	X10
001512  1271		TAD	FILSIZ		/ALSO THE SIZE
001513  3410		DCA I	X10
001514  1076		TAD	PASS2O		/START OF PASS2 OVERLAY
001515  3410		DCA I	X10
001516  1277		TAD	OBLK		/START OF PASS2 OUTPUT FILE
001517  3410		DCA I	X10
001520  1300		TAD	OBLK+1		/AND MAX SIZE
001521  3410		DCA I	X10
001522  1101		TAD	PROGNM		/POINTER TO PROG NAME
001523  3410		DCA I	X10
001524  1102		TAD	ARGLST		/AND ARG LIST
001525  3410		DCA I	X10
001526  1103		TAD	FUNCTN		/AND PROG SWITCH
001527  3410		DCA I	X10
001530  1112		TAD	DPUSED		/STORE THE DP SWITCH
001531  3410		DCA I	X10
001532  1113		TAD	VERS		/AND THE VERSION NUMBER
001533  3410		DCA I	X10

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 12-1

001534  1773		TAD I	(MREAD-1	/ON CCL-DEVICE
001535  6212		CIF	10
001536  4767		JMS I	L200		/CHAIN TO PASS TWO
001537  0006		6
001540  0000	PASS2B,	0			/FILLED BY ONCE ONLY CODE FOR PASS 1
		/--------------------------------------------------
001541  1372	RETURN,	TAD	(RETOPR		/OUTPUT RETURN CODE
001542  4572		JMS I	[OUTWRD
001543  2065		ISZ	DOEND		/DO END ILLEGAL HERE
001544  5564		JMP I	[NEXTST
001545  0000	COMARP,	0			/LOOK FOR COMMA OR RIGHT PAREN
001546  4567		JMS I	[GETC
001547  5745		JMP I	COMARP
001550  1143		TAD	[-254		/COMMA ?
001551  7450		SNA
001552  5357		JMP	.+5
001553  1276		TAD	L3		/RIGHT PAREN ?
001554  7640		SZA CLA
001555  5745		JMP I	COMARP
001556  2345		ISZ	COMARP
001557  2345		ISZ	COMARP		/COMMA INCR ONCE
001560  5745		JMP I	COMARP
001561  4556	LOGICA,	JMS I	[CHECKC		/LOOK FOR L
001562  7464		-314
001563  5555		JMP I	[BADCMD		/NO GOOD
001564  4553		JMS I	[TYPLST		/PROCESS LIST
001565  0105		0105
001566  0100		0100
001567  0200	L200,	0200			/NOP
001570  5564		JMP I	[NEXTST

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 13

		/ EQUIVALENCE (UGH!)
001572  0041
001573  7756
001574  4577
001575  0044
001576  7607
001577  7400
	1600		PAGE
001600  4547	EQUIV,	JMS I	[IFCHEK		/BAD WITH IF
001601  4556		JMS I	[CHECKC		/LOOK FOR "E"
001602  7473		-305
001603  5555		JMP I	[BADCMD
001604  4556	EQVLUP,	JMS I	[CHECKC		/LOOK FOR (
001605  7530		-250
001606  5275		JMP	BADEQU
001607  1014		TAD	STACK		/SAVE STACK POS
001610  3017		DCA	X17
001611  3075		DCA	NSLAVE		/NUMBER OF SLAVES = 0
001612  4542		JMS I	[GETSS		/GET THE MASTER
001613  5275		JMP	BADEQU
001614  6211	SVMSTR,	CDF	10		/1.03/ CHECK FOR ALREADY EQUIVALENCED
001615  1445		TAD I	TEMP2		/1.03/
001616  6201		CDF			/1.03/
001617  0377		AND	(200		/1.03/ (AS A SLAVE)
001620  7640		SZA CLA			/1.03/
001621  5337		JMP	DOFUNY	/3.01/BACK UP TO ITS MASTER
001622  1045		TAD	TEMP2		/SAVE THE MASTER TYPE ADDRESS
001623  3073		DCA	MASTER
001624  3336		DCA	SFUDGE	/3.01/CLEAR OFFSET FUDGE
001625  1067		TAD	DIMNUM		/SAVE THE MASTER SUBSCRIPT
001626  3074		DCA	MNUM
001627  4560	GETSLV,	JMS I	[COMARP		/LOOK FOR , OR )
001630  5275		JMP	BADEQU
001631  5303		JMP	DOSLAV		/,
001632  1075		TAD	NSLAVE		/COMPLEMENT THE NUMBER OF SLAVES
001633  7450		SNA
001634  5270		JMP	ENDGRP		/NO SLAVES
001635  7041		CIA
001636  3075		DCA	NSLAVE
001637  1017		TAD	X17		/RESTACK THE STORE
001640  3014		DCA	STACK
001641  1417	EQLOOP,	TAD I	X17		/GET NEXT SUBSCRIPT NUMBER
001642  3044		DCA	TEMP
001643  1417		TAD I	X17		/AND NEXT TYPE WORD ADDRESS
001644  3045		DCA	TEMP2
001645  6211		CDF	10
001646  1445		TAD I	TEMP2		/LOOK AT TYPE WORD
001647  1377		TAD	(200		/SET EQUIVALENCE BIT
001650  3445		DCA I	TEMP2
001651  2045		ISZ	TEMP2		/MOVE TO EQUIVALENCE/DIMENSION PTR
001652  1445		TAD I	TEMP2		/PROPAGATE DIMENSION POINTER
001653  3413		DCA I	NEXT		/TO EQUIVALENCE INFO BLOCK
001654  1013		TAD	NEXT		/NOW STORE EQ INFO BLK ADDRESS
001655  3445		DCA I	TEMP2		/INTO EQ-DIM POINTER WORD
001656  7240		CLA CMA

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 13-1

001657  1073		TAD	MASTER		/STORE S.T. ADDR OF MASTER
001660  3413		DCA I	NEXT		/INTO THE EQUIVALENCE BLOCK
001661  1074		TAD	MNUM		/OUTPUT NUMBERS
001662  3413		DCA I	NEXT
001663  1044		TAD	TEMP
001664  3413		DCA I	NEXT
001665  6201		CDF
001666  2075		ISZ	NSLAVE		/ANY MORE SLAVES ?
001667  5241		JMP	EQLOOP		/YES, EQUIVALENCE NOT YET ATTAINED
001670  4567	ENDGRP,	JMS I	[GETC		/FINI, ALL VARIABLES ARE CREATED
001671  5564		JMP I	[NEXTST		/EQUIVALENCED
001672  1376		TAD	(-254		/IS NEXT CHAR A COMMA ?
001673  7650		SNA CLA
001674  5204		JMP	EQVLUP		/IF YES, DO NEXT GROUP
001675  4576	BADEQU,	JMS I	[ERMSG		/SYNTAX ERROR IN EQUIVALENCE
001676  2123		2123
001677  5564		JMP I	[NEXTST
001700  4576	EQUCOM,	JMS I	[ERMSG		/MULTIPLE LEVELS OF EQUIVALENCE OR
001701  2114		2114			/MORE THAN ONE COMMON VARIABLE
001702  5564		JMP I	[NEXTST
001703  2075	DOSLAV,	ISZ	NSLAVE		/ANOTHER SLAVE VARIABLE
001704  4542		JMS I	[GETSS		/GET THE GOODS
001705  5275		JMP	BADEQU
001706  6211		CDF	10
001707  1445		TAD I	TEMP2		/LOOK AT THE TYPE
001710  7700		SMA CLA
001711  5323		JMP	SVSLAV		/IT ISN'T IN COMMON
001712  1473		TAD I	MASTER		/LOOK AT THE MASTERS TYPE
001713  7710		SPA CLA
001714  5300		JMP	EQUCOM		/MASTER IS IN COMMON TOO .. BAD
001715  6201		CDF
001716  1074		TAD	MNUM		/SAVE THE MAGIC NUMBER
001717  4561		JMS I	[PUSH
001720  1073		TAD	MASTER
001721  4561		JMS I	[PUSH		/AND THE S.T. ADDRESS
001722  5214		JMP	SVMSTR		/NOW GO MAKE THE NEW ONE MASTER
001723  1445	SVSLAV,	TAD I	TEMP2		/1.03/ PREVIOUSLY EQUIVALENCED ?
001724  0377		AND	(200		/1.03/
001725  7640		SZA CLA			/1.03/
001726  5300		JMP	EQUCOM		/1.03/ YES, ERROR
001727  1067		TAD	DIMNUM		/SAVE THE NEW SLAVE
001730  1336		TAD	SFUDGE	/3.01/ADD OFFSET FUDGE
001731  6201		CDF
001732  4561		JMS I	[PUSH
001733  1045		TAD	TEMP2
001734  4561		JMS I	[PUSH
001735  5227		JMP	GETSLV		/AND GO GET THE NEXT SLAVE

001736  0000	SFUDGE,	0

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 14

		/ROUTINE TO HANDLE TRIVIAL CASES OF EQUIVALENCE CHAINING
		/THIS WHOLE PAGE IS 3.01

001737  7201	DOFUNY,	CLA IAC
001740  1045		TAD	TEMP2
001741  3073		DCA	MASTER	/GET POINTER TO EQUIVALENCE BLOCK
001742  6211		CDF 10
001743  1473		TAD I	MASTER
001744  3012		DCA	X12
001745  7201		CLA IAC
001746  1412		TAD I	X12	/GET ADDRESS OF "REAL" MASTER'S
001747  3073		DCA	MASTER	/TYPE WORD
001750  1412		TAD I	X12
001751  1067		TAD	DIMNUM
001752  3074		DCA	MNUM	/OFFSETS ARE ADDITIVE
001753  1412		TAD I	X12
001754  3336		DCA	SFUDGE	/SAVE OTHER HALF OF OFFSET TO ADD
001755  6201		CDF		/TO SLAVES
001756  5227		JMP	GETSLV	/            (PRAY)
001776  7524
001777  0200
	2000		PAGE

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 15

		/ EQUIVALENCE (UGH!)
002000  1420	O1420,	1420		/1.03/ MUST BE FIRST ON PAGE
002001  0000	GETSS,	0		/GET THE LINEARIZED SUBSCRIPT
002002  3067		DCA	DIMNUM
002003  4577		JMS I	[GETNAM		/GET THE VARIABLE
002004  5601		JMP I	GETSS
002005  4554		JMS I	[LOOKUP
002006  7001		IAC			/ADDRESS OF TYPE WORD
002007  3045		DCA	TEMP2
002010  6211		CDF	10
002011  1445		TAD I	TEMP2
002012  6201		CDF
002013  0200	O200,	AND	O1420		/1.03/ EXT, STMTFUN, SUBARG ?
002014  7640		SZA CLA
002015  5601		JMP I	GETSS
002016  1014		TAD	STACK
002017  3012		DCA	X12		/SAVE STACK POSITION
002020  3044		DCA	TEMP		/ZERO NUMBER OF DIMENSIONS
002021  1045		TAD	TEMP2
002022  7001		IAC
002023  3071		DCA	EQTEMP		/ADDRESS OF EQ-DIM POINTER
002024  4567		JMS I	[GETC
002025  5601		JMP I	GETSS
002026  1377		TAD	(-250		/LOOK FOR (
002027  7650		SNA CLA
002030  5233		JMP	DIMGET-1	/OK
002031  4557		JMS I	[BACK1
002032  5325		JMP	RGETSS
002033  3067		DCA	DIMNUM		/DATA CALLS GETSS WITH AC = 7777
002034  4776	DIMGET,	JMS I	(SMLNUM		/GET A SUBSCRIPT
002035  7240		CLA CMA
002036  1054		TAD	EXPON		/SS-1
002037  4561		JMS I	[PUSH		/SAVE SS
002040  2044		ISZ	TEMP		/BUMP COUNT OF SS
002041  4560		JMS I	[COMARP		/LOOK FOR , OR )
002042  5601		JMP I	GETSS
002043  5234		JMP	DIMGET		/,
002044  7201		CLA IAC			/)
002045  3070		DCA	DPRDCT		/SET DIMENSION PRODUCT TO 1
002046  1012		TAD	X12		/RESTORE STACK POSITION
002047  3014		DCA	STACK
002050  1044		TAD	TEMP		/COMPLEMENT NUMBER OF SS
002051  7041		CIA
002052  3044		DCA	TEMP
002053  6211		CDF	10
002054  7132		CLL CML RTR		/2000
002055  0445		AND I	TEMP2		/HAS VARIABLE BEEN DIMENSIONED ?
002056  7650		SNA CLA
002057  5601		JMP I	GETSS		/NO, THATS BAD
002060  1471		TAD I	EQTEMP		/GET ADDRESS OF DIMENSION BLOCK
002061  3071		DCA	EQTEMP
002062  1471		TAD I	EQTEMP		/IS NUMBER OF DIMENSIONS
002063  1044		TAD	TEMP		/EQUAL TO NUMBER OF SUBSCRIPTS ?
002064  7640		SZA CLA
002065  5327		JMP	TRY1SS		/1.03/ SEE IF ITS ONE SUBSCRIPT

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 15-1

002066  7307		CLA CLL IAC RTL		/+4 WVDM
002067  1071		TAD	EQTEMP		/+ ADDRESS OF COUNT WORD
002070  3071		DCA	EQTEMP		/GIVES ADDRESS 1 BEFORE FIRST DIMENSION
002071  6201	LINEAR,	CDF
002072  1412		TAD I	X12		/GET NEXT SS - 1
002073  3072		DCA	MQ
002074  1070		TAD	DPRDCT		/MULTIPLY BY THE DIMENSION PRODUCT
002075  4337		JMS	MUL12		/WHERE D.P. = 1,D1,D1D2,D1D2D3,...
002076  1067		TAD	DIMNUM		/ACCUMULATE THE SUM
002077  3067		DCA	DIMNUM
002100  6211		CDF	10
002101  1471		TAD I	EQTEMP		/ADDR OF LITERAL
002102  7001		IAC
002103  3011		DCA	X11		/WORKING POINTER TO VALUE
002104  1411		TAD I	X11		/GET DIMENSION INTO FAC
002105  3022		DCA	WORD1
002106  1411		TAD I	X11
002107  3023		DCA	WORD2
002110  1411		TAD I	X11
002111  3024		DCA	WORD3
002112  6201		CDF
002113  4541		JMS I	[FIXNUM		/GO FIX IT
002114  3072		DCA	MQ
002115  1070		TAD	DPRDCT		/OF THE D.P. SERIES (ABOVE)
002116  4337		JMS	MUL12
002117  3070		DCA	DPRDCT
002120  7201		CLA IAC			/V3C BUMP POSITION POINTER
002121  1071		TAD	EQTEMP
002122  3071		DCA	EQTEMP
002123  2044		ISZ	TEMP		/ANY MORE SS ?
002124  5271		JMP	LINEAR		/YES
002125  2201	RGETSS,	ISZ	GETSS
002126  5601		JMP I	GETSS
002127  7201	TRY1SS,	CLA IAC			/1.03/
002130  1044		TAD	TEMP		/1.03/ ONLY ONE SS ?
002131  7640		SZA CLA			/1.03/
002132  5601		JMP I	GETSS		/1.03/ MORE, THATS NO GOOD
002133  6201		CDF			/1.03/
002134  1412		TAD I	X12		/1.03/ GET THE SUBSCRIPT
002135  3067		DCA	DIMNUM		/1.03/ AND RETURN IT
002136  5325		JMP	RGETSS		/1.03/
002137  0000	MUL12,	0			/12 BIT UNSIGNED MULTIPLY
002140  3032		DCA	OP2		/SAVE OPERAND
002141  1375		TAD	(-15		/SET SHIFT COUNT
002142  3034		DCA	SC
002143  5352		JMP	STMUL
002144  1033	M12LUP,	TAD	AC
002145  7420		SNL
002146  5351		JMP	.+3
002147  7100		CLL
002150  1032		TAD	OP2
002151  7010		RAR
002152  3033	STMUL,	DCA	AC
002153  1072		TAD	MQ
002154  7010		RAR

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 15-2

002155  3072		DCA	MQ
002156  2034		ISZ	SC
002157  5344		JMP	M12LUP
002160  1072		TAD	MQ		/RETURN VALUE
002161  5737		JMP I	MUL12
	0033		AC=OP3
	0034		SC=OP4

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 16

		/ IF STATEMENTS
002175  7763
002176  5200
002177  7530
	2200		PAGE
002200  4566	IF,	JMS I	[EXPR		/COMPILE CONDITION EXPRESSION
002201  5555		JMP I	[BADCMD
002202  4573		JMS I	[STMNUM		/IS IT ARITHMETIC IF ?
002203  5224		JMP	LOGIF
002204  1377		TAD	(ARTHIF		/START IF COMMAND
002205  4572		JMS I	[OUTWRD
002206  7146		CLL CMA RTL
002207  3044		DCA	TEMP
002210  2065		ISZ	DOEND		/DO END ILLEGAL HERE
002211  5217		JMP	IFLABL		/GET IF LABELS
002212  4556	IFLOOP,	JMS I	[CHECKC		/LOOK FOR ,
002213  7524		-254
002214  5564		JMP I	[NEXTST
002215  4573		JMS I	[STMNUM		/GET NEXT STMT NUMBER
002216  5235		JMP	BADIF
002217  1052	IFLABL,	TAD	SNUM		/OUTPUT LABEL
002220  4572		JMS I	[OUTWRD
002221  2044		ISZ	TEMP
002222  5212		JMP	IFLOOP
002223  5564		JMP I	[NEXTST
002224  4231	LOGIF,	JMS	IFCHEK		/IF()IF()... NOT LEGAL
002225  2053		ISZ	IFSWIT		/CLEAR IF SWITCH
002226  1376		TAD	(LIFBGN		/START LOGICAL IF
002227  4572		JMS I	[OUTWRD
002230  5775		JMP I	(COMPIL		/COMPILE THE STATEMENT
		DOSWT,
002231  0000	IFCHEK,	0			/CHECK IF SWITCH
002232  1053		TAD	IFSWIT
002233  7650		SNA CLA
002234  5631		JMP I	IFCHEK
002235  4576	BADIF,	JMS I	[ERMSG
002236  1111		1111
002237  5564		JMP I	[NEXTST

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 17

		/ CALL STMT
002240  4571	CALL,	JMS I	[SAVECP		/SAVE CHAR POS
002241  4577		JMS I	[GETNAM		/GET SUBROUTINE NAME
002242  5275		JMP	BADCAL		/NO NAME HERE IS BAD
002243  4554		JMS I	[LOOKUP		/GET ADDRESS OF TYPE WORD
002244  7001		IAC
002245  3044		DCA	TEMP
002246  6211		CDF	10
002247  1444		TAD I	TEMP		/LOOK AT TYPE
002250  0374		AND	(6640		/ANYTHING BUT EXT OR ARG ?
002251  7640		SZA CLA
002252  5275		JMP	BADCAL		/YES, BAD
002253  1444		TAD I	TEMP		/SET EXT BIT
002254  0373		AND	(137		/LEAVE TYPE AND ARG BITS
002255  1372		TAD	(1000
002256  3444		DCA I	TEMP
002257  6201		CDF
002260  4565		JMS I	[RESTCP		/RESTORE CHAR POS
002261  7201		CLA IAC			/SIGNAL THAT THIS IS A CALL
002262  4570		JMS I	[LEXPR		/COMPILE IT
002263  0070	XSTORE,	DOSTOR			/DON'T WORRY VIRGINIA, ITS A NOP
002264  1110		TAD	OWTEMP		/WHAT WAS THE LAST THING OUT ?
002265  7100		CLL
002266  1371		TAD	(-63		/IF LESS THAN 63
002267  7620		SNL CLA
002270  5564		JMP I	[NEXTST		/IT WAS AN ARG COUNT
002271  1140		TAD	[ARGSOP		/OTHERWISE IT WAS AN ARG LESS CALL
002272  4572		JMS I	[OUTWRD		/SO TELL PASS 2 ABOUT IT
002273  4572		JMS I	[OUTWRD
002274  5564		JMP I	[NEXTST
002275  4576	BADCAL,	JMS I	[ERMSG
002276  2316		2316
002277  5564		JMP I	[NEXTST

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 18

		/ DO DAH, DO DAH
002300  4547	DO,	JMS I	[IFCHEK		/IF(...)DO   IS ILLEGAL
002301  4573		JMS I	[STMNUM		/LOOK FOR ENDING STMT NUMBER
002302  5555		JMP I	[BADCMD
002303  4577		JMS I	[GETNAM		/LOOKUP INDEX VARIABLE
002304  5555		JMP I	[BADCMD
002305  4554		JMS I	[LOOKUP
002306  3106		DCA	DOINDX
002307  4556		JMS I	[CHECKC		/LOOK FOR =
002310  7503		-275
002311  5555		JMP I	[BADCMD
002312  2065		ISZ	DOEND		/CAN'T END DO LOOP ON A DO
002313  4324		JMS	DOSTUF		/GET DO PARAMETERS
002314  5361		JMP	BADDO
002315  1106		TAD	DOINDX		/PUSH DO INDEX
002316  4561		JMS I	[PUSH
002317  1052		TAD	SNUM		/PUSH ENDING STMT NUMBER
002320  4561		JMS I	[PUSH
002321  1014		TAD	STACK
002322  3020		DCA	STKLVL		/SAVE NEW STACK BASE
002323  5564		JMP I	[NEXTST

002324  0000	DOSTUF,	0			/SUBR FOR DO LOOP STUFF
002325  4572		JMS I	[OUTWRD		/OUTPUT DO INDEX
002326  1106		TAD	DOINDX
002327  4572		JMS I	[OUTWRD
002330  4566		JMS I	[EXPR		/GET EXPR FOR INITIAL VALUE
002331  5724		JMP I	DOSTUF
002332  1263		TAD	XSTORE		/YES
002333  4572		JMS I	[OUTWRD
002334  4556		JMS I	[CHECKC		/LOOK FOR COMMA
002335  7524	N254,	-254
002336  5724		JMP I	DOSTUF
002337  4566		JMS I	[EXPR		/GET EXPR FOR FINAL VALUE
002340  5724		JMP I	DOSTUF
002341  4567		JMS I	[GETC		/LOOK FOR A COMMA
002342  5355		JMP	STEP1		/USE STEP OF 1
002343  1335		TAD	N254
002344  7640		SZA CLA
002345  5354		JMP	STEP1-1
002346  4566		JMS I	[EXPR		/GET EXPR FOR STEP
002347  5724		JMP I	DOSTUF
002350  2324	DORET,	ISZ	DOSTUF
002351  1370		TAD	(DOBEGN		/DO BEGIN OPERATOR
002352  4572		JMS I	[OUTWRD
002353  5724		JMP I	DOSTUF
002354  4557		JMS I	[BACK1		/PUT BACK NON , (OFFICER BELOW LT.)
002355  4572	STEP1,	JMS I	[OUTWRD		/OUTPUT A PUSH 1.0
002356  1367		TAD	(ONE
002357  4572		JMS I	[OUTWRD
002360  5350		JMP	DORET		/FINISH DO STUFF
002361  4576	BADDO,	JMS I	[ERMSG		/BAD DO COMMAND
002362  0417		0417
002363  5564		JMP I	[NEXTST
002364  4576	BDERR,	JMS I	[ERMSG		/ILLEGAL IN BLOCK DATA

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 18-1

002365  0223		0223
002366  5564		JMP I	[NEXTST

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 19

		/ TYPE STATEMENT SUBROUTINE
002367  0063
002370  0051
002371  7715
002372  1000
002373  0137
002374  6640
002375  0321
002376  0050
002377  0047
	2400		PAGE
002400  0000	TYPLST,	0			/HANDLE LIST FOR TYPE DELL
002401  1014		TAD	STACK
002402  3012		DCA	X12		/SAVE STACK POINTER
002403  3043		DCA	NUMELM
002404  1600		TAD I	TYPLST		/GET SET BITS
002405  3104		DCA	SETBIT
002406  2200		ISZ	TYPLST
002407  1600		TAD I	TYPLST		/AND ILLEGAL BITS
002410  3105		DCA	BADBIT
002411  2200		ISZ	TYPLST
002412  4577	LSTLUP,	JMS I	[GETNAM		/GET VARIABLE
002413  5320		JMP	BADLST
002414  4554		JMS I	[LOOKUP		/S.T. SEARCH
002415  3107		DCA	TLTEMP		/SAVE VAR ADDRESS
002416  1107		TAD	TLTEMP		/PUT IT ON THE STACK
002417  2107		ISZ	TLTEMP		/NOW POINT TO TYPE WORD
002420  4561		JMS I	[PUSH		/INCREMENT NUMBER
002421  2043		ISZ	NUMELM		/INCREMENT NUMBER
002422  6211		CDF	10
002423  1507		TAD I	TLTEMP		/COMPARE TYPES
002424  0105		AND	BADBIT		/CHECK FOR ILLEGAL BITS
002425  7640		SZA CLA
002426  5326		JMP	TYPAGN		/ATTEMPT TO RE-TYPE
002427  1104		TAD	SETBIT		/GET SET BITS
002430  7040		CMA			/GENERATE MASK
002431  0507		AND I	TLTEMP
002432  1104		TAD	SETBIT		/DO THE SET
002433  3507		DCA I	TLTEMP		/BUT NOT DIMENSION BIT
002434  6201		CDF
002435  4567	GETDIM,	JMS I	[GETC
002436  5340		JMP	EOL
002437  1377		TAD	(-250		/LOOK FOR (
002440  7440		SZA
002441  5334		JMP	NOTDIM		/NOT DIMENSIONED
002442  7201		CLA IAC			/INITIALIZE MAGIC NUMBER
002443  3100		DCA	DSERES
002444  7201		CLA IAC
002445  3070		DCA	DPRDCT		/AND DIMENSION PRODUCT
002446  1014		TAD	STACK
002447  3017		DCA	X17		/SAVE STACK POINTER
002450  3045		DCA	TEMP2		/DIMENSION COUNT=0
002451  5776		JMP I	(DIMLUP		/GET DIMENSIONS
002452  1017	PUTDIM,	TAD	X17
002453  3014		DCA	STACK		/RESTORE STACK

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 19-1

002454  6211		CDF	10
002455  1375		TAD	(3400		/DIM, EXT, SF ?
002456  0507		AND I	TLTEMP
002457  7640		SZA CLA
002460  5331		JMP	DIMAGN		/ATTEMPT TP RE-DIMENSION
002461  7132		CLL CML	RTR
002462  1507		TAD I	TLTEMP		/SET DIMENSION BIT
002463  3507		DCA I	TLTEMP
002464  2107		ISZ	TLTEMP
002465  1045		TAD	TEMP2		/NUMBER OF DIMS.
002466  3413		DCA I	NEXT
002467  1507		TAD I	TLTEMP		/GET EQUIVALENCE POINTER
002470  7440		SZA
002471  3107		DCA	TLTEMP
002472  1013		TAD	NEXT		/STORE POINTER TO
002473  3507		DCA I	TLTEMP		/DIMENSION INFORMATION
002474  1070		TAD	DPRDCT		/SAVE DIM PRODUCT
002475  3413		DCA I	NEXT
002476  1100		TAD	DSERES		/AND MAGIC NUMBER
002477  3413		DCA I	NEXT
002500  3413		DCA I	NEXT		/ZERO MAGIC LITERAL POINTER
002501  1045		TAD	TEMP2
002502  7041		CIA
002503  3045		DCA	TEMP2		/LEAVE LAST DIM
002504  6201		CDF
002505  1417	MOVDIM,	TAD I	X17		/1.03/ GET THE DIMENSION
002506  6211		CDF	10		/1.03/
002507  3413		DCA I	NEXT		/1.03/ INTO THE DIMENSION INFO BLOCK
002510  6201		CDF			/1.03/
002511  2045		ISZ	TEMP2		/1.03/
002512  5305		JMP	MOVDIM		/1.03/
002513  4567	NEXTEL,	JMS I	[GETC		/LOOK FOR ,
002514  5340		JMP	TLRETN
002515  1374		TAD	(-254
002516  7650		SNA CLA
002517  5212		JMP	LSTLUP		/OK, GET NEXT MEMBER
002520  4576	BADLST,	JMS I	[ERMSG		/ERROR IN LIST
002521  2404		2404
002522  5600		JMP I	TYPLST
002523  4576	BADDIM,	JMS I	[ERMSG		/DIMENSION ERROR
002524  0204		0204
002525  5600		JMP I	TYPLST
002526  4576	TYPAGN,	JMS I	[ERMSG
002527  2224		2224			/RE-TYPE
002530  5235		JMP	GETDIM
002531  4576	DIMAGN,	JMS I	[ERMSG		/ATTEMPT TO RE DIMENSION
002532  2204		2204
002533  5313		JMP	NEXTEL
002534  1373	NOTDIM,	TAD	(250-254	/IS IT A COMMA?
002535  7640		SZA CLA
002536  5320		JMP	BADLST
002537  5212		JMP	LSTLUP		/GET NEXT ELEMENT
		EOL,
002540  2200	TLRETN,	ISZ	TYPLST
002541  5600		JMP I	TYPLST		/TAKE OK EXIT

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 19-2

002542  4556	ENDFIL,	JMS I	[CHECKC		/LOOK FOR "E"
002543  7473		-305
002544  5555		JMP I	[BADCMD
002545  4566		JMS I	[EXPR		/COMPILE UNIT
002546  5555		JMP I	[BADCMD
002547  1372		TAD	(ENDFOP		/OUTPUT ENDFILE OPERATOR
002550  4572		JMS I	[OUTWRD
002551  5564		JMP I	[NEXTST
002552  4556	DOUBLE,	JMS I	[CHECKC		/LOOK FOR N
002553  7462		-316
002554  5555		JMP I	[BADCMD
			
002555  4547		JMS I	[IFCHEK		/NOT ON AN IF
002556  4553		JMS I	[TYPLST		/PROCESS LIST
002557  0104		0104
002560  0100		0100
002561  7000		NOP
002562  7201		CLA IAC			/SET THE DP SWITCH
002563  3112		DCA	DPUSED
002564  5564		JMP I	[NEXTST

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 20

		/ SYMBOL TABLE LOOKERUPPER
002572  0052
002573  7774
002574  7524
002575  3400
002576  3460
002577  7530
	2600		PAGE
002600  0000	LOOKUP,	0			/SYMBOL TABLE LOOKUP FOR VARIABLE ENTRY
002601  1041		TAD	NOCODE		/IS THIS IN NOCODE MODE ?
002602  7640		SZA CLA
002603  5600		JMP I	LOOKUP		/YES, DO NOTHING
002604  1021		TAD	BUCKET
002605  1377		TAD	(ALIST-1	/GET START OF CORRECT BUCKET
002606  6211		CDF	10
002607  3300	LOOK,	DCA	OLDN3		/SAVE ADDR OF PREVIOUS ENTRY
002610  1700		TAD I	OLDN3		/GET ADDR OF NEXT ENTRY
002611  7450		SNA
002612  5244		JMP	HOOKIN		/NO NEXT ENTRY, ATTACH NEW ENTRY
002613  1376		TAD	(2		/SKIP OVER TYPE AND DIM POINTER
002614  3010		DCA	X10
002615  1375		TAD	(NAME1
002616  3302		DCA	PNAME		/SETUP POINTER TO NAME
002617  6201		CDF
002620  1702	CHKNAM,	TAD I	PNAME		/GET WORD NAME
002621  7141		CIA CLL
002622  6211		CDF	10
002623  1410		TAD I	X10		/COMPARE WITH THIS ENTRY
002624  7640		SZA CLA
002625  5240		JMP	NOTSAM		/DIFFERENT
002626  6201		CDF
002627  1702		TAD I	PNAME
002630  0145		AND	[77		/WAS THIS THE END OF NAME?
002631  2302		ISZ	PNAME
002632  7640		SZA CLA
002633  5220		JMP	CHKNAM		/NO, KEEP COMPARING
002634  6211		CDF	10
002635  1700	RLOOKU,	TAD I	OLDN3		/GET ADDR OF START OF ENTRY
002636  6201		CDF			/AND RETURN IT IN THE AC
002637  5600		JMP I	LOOKUP		/RETURN ADDR OF SYMBOL
002640  7430	NOTSAM,	SZL
002641  5244		JMP	HOOKIN		/NEW SYMBOL <CURRENT ONE
002642  1700		TAD I	OLDN3
002643  5207		JMP	LOOK		/CONTINUE SEARCH
002644  1700	HOOKIN,	TAD I	OLDN3		/HOOK NEW ENTRY INTO LIST
002645  3413		DCA I	NEXT
002646  1013		TAD	NEXT
002647  3700		DCA I	OLDN3
002650  3413		DCA I	NEXT		/ZERO TYPE WORD
002651  3413		DCA I	NEXT		/ZERO EQUIVALENCE/DIMENSION POINTER
002652  1375		TAD	(NAME1		/PREPARE TO STICK IN THE NAME
002653  3302		DCA	PNAME
002654  6201		CDF
002655  1702	ENTERN,	TAD I	PNAME		/MOVE NAME INTO S.T.
002656  6211		CDF	10

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 20-1

002657  3413		DCA I	NEXT
002660  6201		CDF
002661  1702		TAD I	PNAME
002662  2302		ISZ	PNAME		/END OF NAME?
002663  0145		AND	[77
002664  7640		SZA CLA
002665  5255		JMP	ENTERN		/NO, KEEP GOING
002666  6211		CDF	10
002667  1013	STCHEK,	TAD	NEXT		/CHECK FOR S.T. OVERFLOW
002670  7141		CIA CLL
002671  1374		TAD	(4740		/5000 STARTS PASS2 SKELETON TABLES
002672  7630		SZL CLA
002673  5235		JMP	RLOOKU
002674  6201		CDF
002675  4576		JMS I	[ERMSG		/S.T. FULL
002676  2324		2324
002677  5773		JMP I	(ENDX		/TREAT AS END OF INPUT
002700  0000	OLDN3,	0			/ADDR OF PREVIOUS ENTRY
002701  0000	N3SIZE,	0			/SIZE OF ENTRY
		LTEMP,
		PNAME,				/POINTER TO NAME BUFFER
002702  0000	LUKUP2,	0			/LOOKUP FOR FIXED LENGTH SYMBOLS
002703  1702		TAD I	LUKUP2		/GET THE BUCKET START
002704  3300		DCA	OLDN3		/SAVE IT AS THE PREVIOUS ENTRY
002705  2302		ISZ	LUKUP2
002706  1702		TAD I	LUKUP2		/GET THE ENTRY SIZE
002707  2302		ISZ	LUKUP2
002710  3301		DCA	N3SIZE
002711  1302		TAD	LUKUP2		/SAVE RETURN ADDR
002712  3200		DCA	LOOKUP
002713  1041		TAD	NOCODE		/IS CODE GENERATION OFF ?
002714  7640		SZA CLA
002715  5600		JMP I	LOOKUP		/YES, JUST RETURN
002716  6211		CDF	10
002717  1700	LOOK2,	TAD I	OLDN3		/GET ADDR OF NEXT ENTRY
002720  7450		SNA
002721  5347		JMP	HOKIN2		/IF 0 ITS END OF LIST
002722  7001		IAC
002723  3010		DCA	X10		/START OF VALUE INFO
002724  1372		TAD	(WORD1-1	/SETUP POINTER TO PROTOTYPE
002725  3011		DCA	X11
002726  1301		TAD	N3SIZE		/AND TEMP OF ENTRY SIZE
002727  3302		DCA	LTEMP
002730  6201	CHKVAL,	CDF
002731  1411		TAD I	X11
002732  7141		CIA CLL			/COMPARE THIS WORD OF THE VALUE
002733  6211		CDF	10
002734  1410		TAD I	X10
002735  7640		SZA CLA
002736  5342		JMP	NOTSM2		/NOT THIS ONE
002737  2302		ISZ	LTEMP		/INCR SIZE COUNT
002740  5330		JMP	CHKVAL		/MORE STUFF
002741  5235		JMP	RLOOKU		/RETURN WITH THE GOODS
002742  7430	NOTSM2,	SZL
002743  5347		JMP	HOKIN2		/NEW SYMBOL < CURRENT ONE

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 20-2

002744  1700		TAD I	OLDN3		/CONTINUE SEARCH
002745  3300		DCA	OLDN3
002746  5317		JMP	LOOK2
002747  1700	HOKIN2,	TAD I	OLDN3		/HOOK NEW ENTRY INTO LIST
002750  3413		DCA I	NEXT
002751  1013		TAD	NEXT
002752  3700		DCA I	OLDN3
002753  1372		TAD	(WORD1-1	/PREPARE TO STICK IN THE VALUE
002754  3011		DCA	X11
002755  3413		DCA I	NEXT		/ZERO TYPE WORD
002756  6201		CDF
002757  1411	ENTERV,	TAD I	X11		/MOVE VALUE INTO S.T.
002760  6211		CDF	10
002761  3413		DCA I	NEXT
002762  2301		ISZ	N3SIZE		/INCR SIZE COUNT
002763  5356		JMP	ENTERV-1
002764  5267		JMP	STCHEK		/STORE TYPE AND CHECK FOR OVERFLOW
002765  1371	STOP,	TAD	(STOPOP		/OUTPUT STOP OPERATOR
002766  4572		JMS I	[OUTWRD
002767  2065		ISZ	DOEND		/DO ILLEGAL ON STOP
002770  5564		JMP I	[NEXTST

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 21

		/ EXPRESSION ANALYZER
002771  0053
002772  0021
002773  1455
002774  4740
002775  6200
002776  0002
002777  0022
	3000		PAGE
003000  0000	EXPR,	0			/POLISHIZE EXPRESSION
003001  1200		TAD	EXPR
003002  4561		JMS I	[PUSH		/SAVE RETURN ADDR
003003  4561		JMS I	[PUSH		/MARK STACK
003004  4567	UNOPR,	JMS I	[GETC		/LOOK FOR UNARY OPERATOR
003005  5356		JMP	MISARG		/THERE HAS TO BE AN OPERAND
003006  1377		TAD	(-253		/UNARY+(NOP)
003007  7450		SNA
003010  5204		JMP	UNOPR
003011  1376		TAD	(253-255	/UNARY-
003012  7450		SNA
003013  5240		JMP	UMINUS
003014  1375		TAD	(255-256	/.NOT.
003015  7640		SZA CLA
003016  5243		JMP	OPRAND
003017  3021		DCA	BUCKET		/FOR CKNOT
003020  4774		JMS I	(TRUFAL		/.TRUE. OR .FALSE. ?
003021  5231		JMP	CKNOT		/NEITHER, IS IT >.NOT.
003022  5225		JMP	.+3		/.TRUE.
003023  1373		TAD	(NOTOPR		/FALSE=.NOT.TRUE
003024  4561		JMS I	[PUSH
003025  4572		JMS I	[OUTWRD
003026  1372		TAD	(TRUE
003027  4572		JMS I	[OUTWRD
003030  5771		JMP I	(NOSS
003031  1021	CKNOT,	TAD	BUCKET
003032  1370		TAD	(-16
003033  7640		SZA CLA
003034  5243		JMP	OPRAND		/MIGHT BE LITERAL .XXXXXX
003035  1373		TAD	(NOTOPR		/PUSH .NOT. OPERATOR
003036  4561		JMS I	[PUSH
003037  5204		JMP	UNOPR
003040  1367	UMINUS,	TAD	(UMOPR		/PUSH UNARY MINUS
003041  4561		JMS I	[PUSH
003042  5204		JMP	UNOPR
003043  4557	OPRAND,	JMS I	[BACK1		/PUT BACK NON UNARY OPERATOR
003044  4577		JMS I	[GETNAM		/LOOK FOR VARIABLE REFERENCE
003045  5250		JMP	NOTVAR		/NOPE.
003046  4554		JMS I	[LOOKUP		/SYMBOL TABLE SEARCH
003047  5537		JMP I	[OPR8R		/GO OUTPUT PUSH-VAR
003050  4536	NOTVAR,	JMS I	[NUMBER		/LOOK FOR A LITERAL
003051  5276		JMP	NOTNUM		/NO KIND OF NUMBER
003052  5264		JMP	HOLCHK		/INTEGER
003053  5260		JMP	DPLIT		/DOUBLE PRECISION
003054  4535	FPLIT,	JMS I	[LUKUP2		/FLOATING, ENTER INTO TABLE
003055  0056		FPLIST

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 21-1

003056  7775		-3
003057  5534		JMP I	[OPR8RL		/PUSH VARIABLE, NO SUBSCRIPTS
003060  4535	DPLIT,	JMS I	[LUKUP2		/DOUBLE-PREC., ENTER IN TABLE
003061  0057		DPLIST
003062  7772		-6
003063  5534		JMP I	[OPR8RL
003064  4567	HOLCHK,	JMS I	[GETC		/IS THIS HOLLERITH?
003065  5272		JMP	.+5
003066  1366		TAD	(-310
003067  7650		SNA CLA
003070  5765		JMP I	(HFIELD		/YES
003071  4557		JMS I	[BACK1
003072  4535		JMS I	[LUKUP2		/FIND THE ENTRY
003073  0060		INTLST
003074  7775		-3
003075  5534		JMP I	[OPR8RL
003076  4567	NOTNUM,	JMS I	[GETC		/LOOK FOR COMPLEX LITERAL
003077  5356		JMP	MISARG		/MISSING OPERAND
003100  1364		TAD	(-250		/OPEN PAREN?
003101  7440		SZA
003102  5763' 		JMP	QUOTE		/GO LOOK FOR A STRING
003103  4571		JMS I	[SAVECP		/SAVE CHAR POSITION
003104  4536		JMS I	[NUMBER		/GET REAL PART
003105  5762		JMP I	(NCMPLX		/NO NUMBER
003106  7410		SKP			/INTEGER-OK
003107  5762		JMP I	(NCMPLX		/DOUBLE-NOT LEGAL FOR COMPLEX
003110  4556		JMS I	[CHECKC		/LOOK FOR ,
003111  7524		-254
003112  5762		JMP I	(NCMPLX		/NO, CAN'T BE COMPLEX LIT.
003113  1022		TAD	WORD1		/SAVE REAL PART
003114  3044		DCA	TEMP
003115  1023		TAD	WORD2
003116  3045		DCA	TEMP2
003117  1024		TAD	WORD3
003120  3040		DCA	CHAR
003121  4536		JMS I	[NUMBER		/GET IMAGINARY PART
003122  5353		JMP	BADCL		/NOT THERE, BAD
003123  7410		SKP			/I
003124  5353		JMP	BADCL		/D-BAD
003125  4556		JMS I	[CHECKC		/LOOK FOR )
003126  7527		-251
003127  5353		JMP	BADCL		/NO ) BAD
003130  1022		TAD	WORD1		/PUT IMAGINARY PART
003131  3025		DCA	WORD4
003132  1023		TAD	WORD2		/INTO SECOND AHLF
003133  3026		DCA	WORD5
003134  1024		TAD	WORD3		/OF COMPLEX LITERAL
003135  3027		DCA	WORD6
003136  1044		TAD	TEMP		/NOW RESTORE REAL PART
003137  3022		DCA	WORD1
003140  1045		TAD	TEMP2
003141  3023		DCA	WORD2
003142  1040		TAD	CHAR
003143  3024		DCA	WORD3
003144  7144		CLL CMA RAL		/REMOVE CHAR POS FROM STACK

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 21-2

003145  1014		TAD	STACK		/SINCE OTHERWISE IT GOES OUT
003146  3014		DCA	STACK		/AS CODE
003147  4535		JMS I	[LUKUP2		/WHICH WE WILL NOW SEARCH
003150  0061		CMPLST			/USE COMPLEX LIST
003151  7772		-6
003152  5534		JMP I	[OPR8RL
003153  4576	BADCL,	JMS I	[ERMSG		/BAD COMPLEX LITERAL
003154  0314		0314
003155  5533		JMP I	[BADEXP
003156  4576	MISARG,	JMS I	[ERMSG		/MISSING OPERAND
003157  1517		1517
003160  5533		JMP I	[BADEXP

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 22

		/ EXPRESSION ANALYZER
003162  3267
003163  3342
003164  7530
003165  3220
003166  7470
003167  4414
003170  7762
003171  3447
003172  0102
003173  4412
003174  4044
003175  7777
003176  7776
003177  7525
	3200		PAGE
003200  0000	HQUOTE,	0			/SUBR FOR QUOTE STRINGS
003201  4546		JMS I	[GETCWB		/GET CHAR
003202  5247		JMP	BADH
003203  1132		TAD	[-247		/IS IT '
003204  7440		SZA
003205  5215		JMP	NOTQ2		/NO
003206  4546		JMS I	[GETCWB
003207  5252		JMP	LUHOL
003210  1132		TAD	[-247		/LOOK FOR ''
003211  7650		SNA CLA
003212  5215		JMP	NOTQ2		/REPLACE '' BY '
003213  4557		JMS I	[BACK1		/ITS END OF STRING
003214  5252		JMP	LUHOL
003215  1131	NOTQ2,	TAD	[247		/RESTORE CHAR
003216  0145		AND	[77
003217  5600		JMP I	HQUOTE
003220  4541	HFIELD,	JMS I	[FIXNUM		/INTEGERIZE NUMBER
003221  7450		SNA
003222  5247		JMP	BADH		/ZERO IS BAD
003223  7140		CMA CLL
003224  3044		DCA	TEMP
003225  1377		TAD	(HCOUNT		/SET SUBR POINTER
003226  3051	DOHOL,	DCA	HCHAR
003227  1376		TAD	(-MAXHOL	/SET COUNTER FOR MAX
003230  3266		DCA	HOLCTR
003231  1375		TAD	(NAME1		/SET UP NAME POINTER
003232  3045		DCA	TEMP2
003233  3445	PAKHOL,	DCA I	TEMP2		/PACK HOLLERITH STRING
003234  4451		JMS I	HCHAR
003235  7106		CLL RTL
003236  7006		RTL
003237  7006		RTL
003240  3445		DCA I	TEMP2
003241  4451		JMS I	HCHAR
003242  1445		TAD I	TEMP2
003243  3445		DCA I	TEMP2
003244  2045		ISZ	TEMP2
003245  2266		ISZ	HOLCTR		/CHECK FOR TOO MANY
003246  5233		JMP	PAKHOL

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 22-1

003247  4576	BADH,	JMS I	[ERMSG		/BAD OR TOO BIG HOLLERITH FIELD
003250  1017		1017
003251  5533		JMP I	[BADEXP
003252  1374	LUHOL,	TAD	(33		/LOOK UP THIS LITERAL
003253  3021		DCA	BUCKET
003254  4554		JMS I	[LOOKUP
003255  5534		JMP I	[OPR8RL
003256  0000	HCOUNT,	0
003257  2044		ISZ	TEMP		/CHECK COUNT
003260  7410		SKP
003261  5252		JMP	LUHOL		/EXPIRED
003262  4546		JMS I	[GETCWB		/GET CHAR
003263  5247		JMP	BADH
003264  0145		AND	[77		/6-BIT IZE IT
003265  5656		JMP I	HCOUNT
003266  0000	HOLCTR,	0			/COUNTER FOR HOLLERITH FIELDS
003267  4565	NCMPLX,	JMS I	[RESTCP		/NOT COMPLEX LITERAL
003270  4566		JMS I	[EXPR		/MUST BE SUB EXPRESSION
003271  5301		JMP	BADEXP
003272  4567		JMS I	[GETC		/LOOK FOR )
003273  5277		JMP	PARMM
003274  1373		TAD	(-251
003275  7650		SNA CLA
003276  5772		JMP I	(NOSS		/NO SUBSCRIPT LEGAL AFTER SUB EXPR
003277  4576	PARMM,	JMS I	[ERMSG		/MISSING )
003300  1515		1515
003301  4562	BADEXP,	JMS I	[POP		/BAD EXPRESSION,
003302  7640		SZA CLA
003303  5301		JMP	BADEXP		/LOOK FOR STACK MARKER
003304  4562		JMS I	[POP
003305  3044		DCA	TEMP		/RETURN ADDR.
003306  5444		JMP I	TEMP
003307  4557		JMS I	[BACK1		/PUT BACK TEMINAL CHAR
003310  4562	ENDEXP,	JMS I	[POP		/GET NEXT THING FROM STACK
003311  7450		SNA
003312  5320		JMP	EXPDUN		/IF ZERO, FINISH
003313  7001		IAC			/GET ADDR OF OPERATION NUMBER
003314  3044		DCA	TEMP
003315  1444		TAD I	TEMP		/GET OPERATOR VALUE
003316  4572		JMS I	[OUTWRD		/OUTPUT OPERATOR XXXXXX
003317  5310		JMP	ENDEXP		/LOOP
003320  4562	EXPDUN,	JMS I	[POP		/GET RETURN ADDR
003321  7001		IAC
003322  3044		DCA	TEMP
003323  5444		JMP I	TEMP
003324  0000	LETTER,	0			/GET A LETTER
003325  4567		JMS I	[GETC
003326  5724		JMP I	LETTER
003327  1371		TAD	(-301
003330  7510		SPA
003331  5340		JMP	NLETR
003332  1370		TAD	(301-333
003333  7500		SMA
003334  5340		JMP	NLETR
003335  1374		TAD	(33

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 22-2

003336  2324		ISZ	LETTER
003337  5724		JMP I	LETTER
003340  4557	NLETR,	JMS I	[BACK1
003341  5724		JMP I	LETTER
003342  1367	QUOTE,	TAD	(250-247	/IS IT '
003343  7640		SZA CLA
003344  5766' 		JMP	MISARG		/NO, OPERAND IS MISSING
003345  1365		TAD	(HQUOTE		/SET SUBR POINTER
003346  5226		JMP	DOHOL
003347  0000	CHECKC,	0			/CHECK FOR A SINGLE CHAR
003350  1747		TAD I	CHECKC		/GET THE CHAR
003351  3361		DCA	CCTEMP
003352  2347		ISZ	CHECKC		/SKIP PAST THE CHAR
003353  4567		JMS I	[GETC		/GET CHAR FROM INPUT
003354  5747		JMP I	CHECKC		/DIDN'T MAKE IT
003355  1361		TAD	CCTEMP		/IS THIS IT ?
003356  7650		SNA CLA
003357  2347		ISZ	CHECKC		/YES
003360  5747		JMP I	CHECKC
003361  0000	CCTEMP,	0

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 23

		/ EXPRESSION ANALYZER
003365  3200
003366  3156
003367  0001
003370  7746
003371  7477
003372  3447
003373  7527
003374  0033
003375  6200
003376  7700
003377  3256
	3400		PAGE
003400  4576	BADFSS,	JMS I	[ERMSG
003401  2323		2323
003402  5533		JMP I	[BADEXP
003403  3044	OPR8R,	DCA	TEMP
003404  4572		JMS I	[OUTWRD		/PUSH
003405  1044		TAD	TEMP
003406  4572		JMS I	[OUTWRD		/OUTPUT OPERAND PTR
003407  4567		JMS I	[GETC
003410  5530		JMP I	[ENDEXP
003411  1377		TAD	(-250		/IS IT S.S. OR FUNCTION
003412  7440		SZA
003413  5776' 		JMP	NOTFSS
003414  1122		TAD	STMJMP
003415  1375		TAD	(-DFINFL
003416  7650		SNA	CLA		/FOR D.F.,PERMIT VARPARENS
003417  5776' 		JMP	NOTFSS
003420  2044		ISZ	TEMP		/LOOK AT TYPE
003421  6211		CDF	10
003422  1374		TAD	(3420		/DIM, EXT, SF, OR ARG ?
003423  0444		AND I	TEMP
003424  7640		SZA CLA
003425  5231		JMP	NOTFUN		/NOT A FUNCTION REFERENCE
003426  1444		TAD I	TEMP
003427  1373		TAD	(1000		/SET EXT BIT
003430  3444		DCA I	TEMP
003431  6201	NOTFUN,	CDF
003432  7410		SKP
003433  4562		JMS I	[POP		/PUT COUNT INTO AC
003434  7001	SSFUN,	IAC			/INCREMENT ARG COUNT
003435  4561		JMS I	[PUSH		/SAVE IT ON THE STACK
003436  4566		JMS I	[EXPR		/GET ARG (OR S.S.)
003437  5533		JMP I	[BADEXP
003440  4560		JMS I	[COMARP		/LOOK FOR , OR )
003441  5200		JMP	BADFSS		/NEITHER
003442  5233		JMP	SSFUN-1		/, GET NEXT ARG (SUBSCRIPT?)
003443  1372		TAD	(ARGSOP		/YES, OUTPUT ARGLIST OPER
003444  4572		JMS I	[OUTWRD
003445  4562		JMS I	[POP		/AND THE COUNT
003446  4572		JMS I	[OUTWRD
003447  4567	NOSS,	JMS I	[GETC		/GET NEXT CHAR
003450  5530		JMP I	[ENDEXP
003451  1371		TAD	(-253		/PREPARE IT

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 23-1

003452  5770' 		JMP	NOTFSS+1
003453  3044	OPR8RL,	DCA	TEMP		/SAVE ADDR OF LITERAL
003454  4572		JMS I	[OUTWRD
003455  1044		TAD	TEMP
003456  4572		JMS I	[OUTWRD
003457  5247		JMP	NOSS

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 24

		/ TYPLST PART TWO
003460  4536	DIMLUP,	JMS I	[NUMBER		/GET DIMENSION
003461  5315		JMP	VARDIM		/MAYBE ITS VAR DIM ?
003462  5265		JMP	.+3		/OK, INTEGER
003463  5767' 		JMP	BADDIM
003464  5767' 		JMP	BADDIM		/DP AND FP ARE BAD
003465  4541		JMS I	[FIXNUM		/FIX IT FOR SOME STUFF
003466  3072		DCA	MQ
003467  1070		TAD	DPRDCT		/GET NEW DIMENSION PRODUCT
003470  4527		JMS I	[MUL12
003471  3070		DCA	DPRDCT
003472  2045		ISZ	TEMP2		/INCREMENT DIM COUNT
003473  1023		TAD	WORD2		/IF WORD2 OR AC NON ZERO
003474  1033		TAD	AC		/DIM IS TOO BIG 
003475  7640		SZA CLA			/1.03/
003476  5767' 		JMP	BADDIM		/1.03/
003477  4766		JMS I	(ANORM		/1.03/ RENORMALIZE THE NUMBER
003500  4535		JMS I	[LUKUP2		/1.03/ ENTER IT INTO LITERAL LIST
003501  0060		INTLST			/1.03/
003502  7775		-3			/1.03/
003503  4561	PSHDIM,	JMS I	[PUSH		/1.03/ AND SAVE ON THE STACK
003504  4560		JMS I	[COMARP		/LOOK FOR , OR )
003505  5767' 		JMP	BADDIM
003506  7410		SKP			/COMMA MEANS ANOTHER DIM FOLLOWS
003507  5765' 		JMP	PUTDIM		/) MEANS END OF DIMS
003510  1100		TAD	DSERES		/FORM NEXT VALUE OF MAGIC NUMBER
003511  1070		TAD	DPRDCT
003512  3100		DCA	DSERES
003513  5260		JMP	DIMLUP		/NOW LOOP FOR NEXT DIM
003514  0000	VDTEMP,	0
003515  6211	VARDIM,	CDF	10		/IS ARRAY AN ARG ?
003516  1507		TAD I	TLTEMP
003517  6201		CDF
003520  0364		AND	(20
003521  7650		SNA CLA
003522  5767' 		JMP	BADDIM		/NO, BAD DIMENSION
003523  4577		JMS I	[GETNAM		/OK, GET DIMENSION
003524  5767' 		JMP	BADDIM
003525  4554		JMS I	[LOOKUP
003526  7001		IAC
003527  3314		DCA	VDTEMP		/ADDR OF TYPE WORD
003530  6211		CDF	10		/IS THA VARIABLE AN ARG ?
003531  1714		TAD I	VDTEMP
003532  0364		AND	(20
003533  6201		CDF
003534  7650		SNA CLA
003535  5767' 		JMP	BADDIM		/NO, THATS BAD
003536  3070		DCA	DPRDCT		/3.02 ZERO DIM PRODUCT
003537  2045		ISZ	TEMP2		/INCREMENT DIM COUNT
003540  7040		CMA			/1.03/
003541  1314		TAD	VDTEMP		/1.03/ SAVE DIMENSION VARIABLE
003542  5303		JMP	PSHDIM		/3.02 SAVE DIM ON STACK
003543  0000	MESSAG,	0			/PRINT PASS1 IMMEDIATE ERROR
003544  1743		TAD I	MESSAG		/GET CHAR ONE
003545  2343		ISZ	MESSAG

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 24-1

003546  4763		JMS I	(TTYOUT
003547  1743		TAD I	MESSAG		/GET CHAR TWO
003550  4763		JMS I	(TTYOUT
003551  1362		TAD	(215		/CR
003552  4763		JMS I	(TTYOUT
003553  1361		TAD	(212		/LF
003554  4763		JMS I	(TTYOUT
003555  5760		JMP I	(7605		/EXIT TO MONITOR

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 25

		/ EXPRESSION ANALYZER REVISITED
003560  7605
003561  0212
003562  0215
003563  4355
003564  0020
003565  2452
003566  5463
003567  2523
003570  3601
003571  7525
003572  0036
003573  1000
003574  3420
003575  6764
003576  3600
003577  7530
	3600		PAGE
003600  1377	NOTFSS,	TAD	(250-253	/IS IT +
003601  7440		SZA
003602  5205		JMP	.+3
003603  1376		TAD	(ADDOPR		/YES
003604  5303		JMP	GOTOPR
003605  1375		TAD	(253-255	/IS IT -
003606  7440		SZA
003607  5212		JMP	.+3
003610  1374		TAD	(SUBOPR		/YES
003611  5303		JMP	GOTOPR
003612  1373		TAD	(255-252	/IS IT *
003613  7440		SZA
003614  5227		JMP	NOTMUL		/NO
003615  4567		JMS I	[GETC
003616  5225		JMP	NOTEXP
003617  1372		TAD	(-252		/IS IT **
003620  7640		SZA CLA
003621  5224		JMP	.+3
003622  1371		TAD	(EXPOPR		/YES
003623  5303		JMP	GOTOPR
003624  4557		JMS I	[BACK1
003625  1370	NOTEXP,	TAD	(MULOPR		/IT WAS *
003626  5303		JMP	GOTOPR
003627  1367	NOTMUL,	TAD	(252-257	/IS IT /
003630  7440		SZA
003631  5234		JMP	.+3
003632  1366		TAD	(DIVOPR		/YES
003633  5303		JMP	GOTOPR
003634  7001		IAC			/IS IT .
003635  7640		SZA CLA
003636  5765		JMP I	(ENDEXP-1	/NO, END OF EXPR
003637  4250		JMS	CKEOPR		/LOOK FOR EXTENDED OPERATOR
003640  5300		JMP	BADOPR		/NONE THERE
003641  4556		JMS I	[CHECKC		/CHECK FOR CLOSING .
003642  7522		-256
003643  5300		JMP	BADOPR		/NOT THERE
003644  6211		CDF 10		/3.01/

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 25-1

003645  1410		TAD I	X10		/GET OPERATOR POINTER
003646  6201		CDF
003647  5303		JMP	GOTOPR
003650  0000	CKEOPR,	0			/CHECK FOR EXTENDED OPERATOR
003651  4577		JMS I	[GETNAM		/GET NAME
003652  5650		JMP I	CKEOPR		/NONE
003653  1364		TAD	(OPRLST-1	/PTR TO LIST
003654  3010		DCA	X10
003655  6211	OPRLUP,	CDF 10		/3.01/
003656  1410		TAD I	X10		/COMPARE FIRST CHAR
003657  6201		CDF 0
003660  7450		SNA
003661  5650		JMP I	CKEOPR		/END OF LIST
003662  1021		TAD	BUCKET
003663  7640		SZA CLA
003664  5275		JMP	NOTHIS		/NOT THIS ONE
003665  6211		CDF 10		/3.01/
003666  1410		TAD I	X10
003667  6201		CDF
003670  1763		TAD I	(NAME1		/COMPARE 2ND AND 3RD
003671  7640		SZA CLA
003672  5276		JMP	NOTHIS+1	/NOT THIS ONE
003673  2250		ISZ	CKEOPR		/BUMP RETURN
003674  5650		JMP I	CKEOPR
003675  2010	NOTHIS,	ISZ	X10		/BUMP LIST PTR
003676  2010		ISZ	X10		/AGAIN
003677  5255		JMP	OPRLUP		/KEEP GOING
003700  4576	BADOPR,	JMS I	[ERMSG		/NOT LEGAL EXT. OPER.
003701  1720		1720
003702  5533		JMP I	[BADEXP
003703  3022	GOTOPR,	DCA	NEWOP		/SAVE NEWEST OPER.
003704  4562		JMS I	[POP		/GET STACK TOP
003705  7450		SNA
003706  5316		JMP	PUSH2		/EMPTY
003707  3023		DCA	OLDOP
003710  1423		TAD I	OLDOP		/COMPARE PREC.
003711  7041		CIA
003712  1422		TAD I	NEWOP		/NEW-OLD
003713  7750		SPA SNA	CLA
003714  5322		JMP	OUTOLD		/OLD>NEW
003715  1023		TAD	OLDOP
003716  4561	PUSH2,	JMS I	[PUSH		/OLD < NEW
003717  1022		TAD	NEWOP		/GO PUSH BOTH
003720  4561		JMS I	[PUSH
003721  5762		JMP I	(UNOPR		/GO LOOK FOR NEXT OPERAND
003722  2023	OUTOLD,	ISZ	OLDOP		/OUTPUT OPERATOR
003723  1423		TAD I	OLDOP
003724  4572		JMS I	[OUTWRD
003725  5304		JMP	GOTOPR+1	/TRY NEXT STACK ELEMENT
	0022		NEWOP=WORD1
	0023		OLDOP=WORD2

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 26

		/ UTILITIES
003726  0000	GETCWB,	0			/GET A CHARACTER (PRESERVE BLANKS)
003727  2042		ISZ	NCHARS
003730  5334		JMP	.+4
003731  7240		CLA CMA
003732  3042		DCA	NCHARS		/RESET NCHARS
003733  5726		JMP I	GETCWB
003734  2326		ISZ	GETCWB
003735  1415		TAD I	CHRPTR		/GET THE CHAR
003736  5726		JMP I	GETCWB
003737  0000	SAVECP,	0			/SAVE CHAR POSITION
003740  1042		TAD	NCHARS
003741  4561		JMS I	[PUSH
003742  1015		TAD	CHRPTR
003743  4561		JMS I	[PUSH
003744  5737		JMP I	SAVECP
003745  0000	FIXNUM,	0			/FIX FAC (I'M MOVING IT AGAIN)
003746  1022		TAD	WORD1		/IS IT FIXED ?
003747  1361		TAD	(-27
003750  7450		SNA
003751  5356		JMP	RETFN		/YES, EXPONENT IS 23
003752  7700		SMA CLA
003753  5745		JMP I	FIXNUM		/BAD IF EXP IS >23
003754  4760		JMS I	(AR1		/RIGHT SHIFT ONE
003755  5346		JMP	FIXNUM+1	/TEST AGAIN
003756  1024	RETFN,	TAD	WORD3		/RETURN LOWEST 12 BITS
003757  5745		JMP I	FIXNUM

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 27

		/ UTILITIES
003760  5316
003761  7751
003762  3004
003763  6200
003764  5413
003765  3307
003766  4406
003767  7773
003770  4404
003771  4410
003772  7526
003773  0003
003774  4402
003775  7776
003776  4400
003777  7775
	4000		PAGE
004000  0000	GETC,	0			/GET A CHARACTER (IGNORING BLANKS)
004001  2042		ISZ	NCHARS
004002  5206		JMP	.+4
004003  7240		CLA CMA
004004  3042		DCA	NCHARS
004005  5600		JMP I	GETC
004006  1415		TAD I	CHRPTR
004007  1377		TAD	(-240		/IS IT A BLANK
004010  7450		SNA
004011  5201		JMP	GETC+1		/YES IGNORE IT
004012  1376		TAD	(240		/FIX CHAR
004013  2200		ISZ	GETC
004014  5600		JMP I	GETC
004015  0000	ERMSG,	0			/ERROR MESSAGE HANDLER
004016  6201		CDF
004017  1041		TAD	NOCODE		/IS CODE GENERATION ON ?
004020  7640		SZA CLA
004021  5230		JMP	NOTOUT		/NO
004022  1375		TAD	(ERRCOD		/ERROR CODE TO OUTPUT FILE
004023  4572		JMS I	[OUTWRD
004024  1615		TAD I	ERMSG
004025  2215		ISZ	ERMSG
004026  4572		JMS I	[OUTWRD
004027  5615		JMP I	ERMSG		/RETURN
004030  1615	NOTOUT,	TAD I	ERMSG		/SAVE THE ERROR CODE
004031  2215		ISZ	ERMSG
004032  3774' 		DCA	ERCODE
004033  5615		JMP I	ERMSG
004034  0000	POP,	0			/PUT TOP OF STACK INTO AC
004035  1014		TAD	STACK
004036  3215		DCA	ERMSG
004037  7240		CLA CMA
004040  1014		TAD	STACK
004041  3014		DCA	STACK		/DECREMENT STACK POINTER
004042  1615		TAD I	ERMSG
004043  5634		JMP I	POP
004044  0000	TRUFAL,	0			/CHECK FOR LOGICAL LITERALS

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 27-1

004045  4577		JMS I	[GETNAM
004046  5644		JMP I	TRUFAL
004047  4556		JMS I	[CHECKC		/LOOK FOR TERMINAL .
004050  7522		-256
004051  5644		JMP I	TRUFAL
004052  1021		TAD	BUCKET		/LOOK AT FIRST CHAR
004053  1373		TAD	(-24
004054  7450		SNA
004055  5262		JMP	.+5		/ITS "T"
004056  1372		TAD	(24-6
004057  7640		SZA CLA
004060  5644		JMP I	TRUFAL		/ITS NEITHER
004061  2244		ISZ	TRUFAL		/ITS "F"
004062  2244		ISZ	TRUFAL
004063  5644		JMP I	TRUFAL

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 28

		/ LEFT HALF EXPRESSION ANALYZER
004064  0000	LEXPR,	0			/GET LEFT HAND EXPRESSION
004065  3364		DCA	LETEMP		/SAVE CALL SWITCH
004066  4577		JMS I	[GETNAM		/LOOK FOR VAR NAME
004067  5351		JMP	MSNGOP		/MUST BE THERE
004070  4572		JMS I	[OUTWRD		/OUTPUT A ZERO (PUSH)
004071  4554		JMS I	[LOOKUP		/SEEK OUT ENTRY FOR THIS VAR
004072  3044		DCA	TEMP
004073  1044		TAD	TEMP
004074  4572		JMS I	[OUTWRD
004075  4567		JMS I	[GETC		/LOOK FOR DIMENSIONS
004076  5347		JMP	LEXPOK		/NO (
004077  1371		TAD	(-250
004100  7640		SZA CLA
004101  5346		JMP	LEXPOK-1	/NO (
004102  2044		ISZ	TEMP		/LOOK AT TYPE
004103  6211		CDF	10
004104  7132		CLL CML RTR		/DIMENSIONED ?
004105  0444		AND I	TEMP
004106  1364		TAD	LETEMP		/OR A CALL ?
004107  1041		TAD	NOCODE		/OR CODE OFF ?
004110  7640		SZA CLA
004111  5327		JMP	NOTSF		/YES, NOT AN ARITHMETIC S.F.
004112  1444		TAD I	TEMP
004113  0370		AND	(1420		/EXT, SF, OR ARG ?
004114  7650		SNA CLA			/V3C
004115  1126		TAD	[-M6		/SEE IF CALLED FROM SPECIAL PLACE
004116  1264		TAD	LEXPR		/V3C  COMPARE WITH ENTRY PT
004117  7640		SZA CLA
004120  5361		JMP	ASFERR		/THIS IS BAD IF SO
004121  1444		TAD I	TEMP
004122  1367		TAD	(400
004123  3444		DCA I	TEMP		/SET A.S.F. BIT
004124  6201		CDF
004125  1366		TAD	(ASFDEF		/DEFINE ASF
004126  4572		JMS I	[OUTWRD
004127  6201	NOTSF,	CDF
004130  7410		SKP
004131  4562		JMS I	[POP		/ARG COUNT TO AC
004132  7001	SSLOOP,	IAC			/INCREMENT SS COUNT
004133  4561		JMS I	[PUSH		/SAVE ON THE STACK
004134  4566		JMS I	[EXPR		/COMPILE SUBSCRIPT
004135  5356		JMP	FSSBAD+2	/ERROR WITHIN SS
004136  4560		JMS I	[COMARP		/LOOK FOR , OR )
004137  5354		JMP	FSSBAD		/NEITHER (THERE WAS A BUG HERE)
004140  5331		JMP	SSLOOP-1	/, GET NEXT ARG/SS
004141  1365		TAD	(ARGSOP		/OUTPUT SS OPERATOR
004142  4572		JMS I	[OUTWRD
004143  4562		JMS I	[POP		/THEN COUNT
004144  4572		JMS I	[OUTWRD
004145  7410		SKP
004146  4557		JMS I	[BACK1		/PUT BACK A CHARACTER
004147  2264	LEXPOK,	ISZ	LEXPR
004150  5664		JMP I	LEXPR		/RETURN
004151  4576	MSNGOP,	JMS I	[ERMSG		/MISSING OPERAND

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 28-1

004152  1517		1517
004153  5664		JMP I	LEXPR
004154  4576	FSSBAD,	JMS I	[ERMSG		/MISSING COMMA OR CLOSE PARENTHESIS
004155  2323		2323
004156  4562		JMS I	[POP		/GET ARG COUNT OFF STACK
004157  7200		CLA
004160  5664		JMP I	LEXPR
004161  4576	ASFERR,	JMS I	[ERMSG		/BAD ARITHMETIC STMT FUNCTION
004162  2306		2306
004163  5327		JMP	NOTSF		/DO THE REST OF THE ASF DEF
004164  0000	LETEMP,	0

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 29

		/UTILITIES
004165  0036
004166  0035
004167  0400
004170  1420
004171  7530
004172  0016
004173  7754
004174  0436
004175  0040
004176  0240
004177  7540
	4200		PAGE
		G2CTMP,
004200  0000	PUSH,	0			/PUT AC ONTO STACK
004201  3414		DCA I	STACK		/STORE
004202  1377		TAD	(STACKS+100	/CHECK FOR STACK OVERFLOW
004203  7141		CIA CLL
004204  1014		TAD	STACK
004205  7620		SNL CLA
004206  5600		JMP I	PUSH		/OK, RETURN
004207  3041		DCA	NOCODE		/SET CODE GENERATION ON
004210  4576		JMS I	[ERMSG
004211  2004		2004
004212  5564		JMP I	[NEXTST
004213  0000	GET2C,	0			/GET 2 SIX BIT CHARS INTO ONE WPRD
004214  4567		JMS I	[GETC		/GET FIRST CHAR
004215  5613		JMP I	GET2C
004216  0145		AND	[77
004217  7106		CLL RTL
004220  7006		RTL
004221  7006		RTL
004222  3200		DCA	G2CTMP
004223  4567		JMS I	[GETC		/GET SECOND CHAR
004224  5613		JMP I	GET2C
004225  2213		ISZ	GET2C		/FIX RETURN ADDR
004226  0145		AND	[77
004227  1200		TAD	G2CTMP
004230  5613		JMP I	GET2C
004231  0000	STMNUM,	0			/PICK UP STATEMENT NUMBER
004232  3025		DCA	WORD4		/SAVE DEFINED BIT (IF ANY)
004233  3023		DCA	WORD2		/ZERO SOME STUFF
004234  3024		DCA	WORD3
004235  4317		JMS	DIGIT		/GET A DIGIT
004236  5631		JMP I	STMNUM		/NONE THERE, NO STMT NUMBER
004237  1376		TAD	(-60		/IS IT A LEADING 0 ?
004240  7450		SNA
004241  5235		JMP	.-4		/YES, IGNORE IT
004242  1375		TAD	(60
004243  7106		CLL RTL
004244  7006		RTL
004245  7006		RTL
004246  3022		DCA	WORD1
004247  4317		JMS	DIGIT		/GET SECOND DIGIT
004250  5273		JMP	ENDNUM		/END OF NUMBER

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 29-1

004251  1022		TAD	WORD1
004252  3022		DCA	WORD1		/COMBINE FIRST AND SECOND
004253  4317		JMS	DIGIT
004254  5273		JMP	ENDNUM
004255  7106		CLL RTL
004256  7006		RTL
004257  7006		RTL
004260  3023		DCA	WORD2
004261  4317		JMS	DIGIT
004262  5273		JMP	ENDNUM		/COMBINE THIRD AND FOURTH
004263  1023		TAD	WORD2
004264  3023		DCA	WORD2
004265  4317		JMS	DIGIT		/GET FIFTH DIGIT
004266  5273		JMP	ENDNUM
004267  7106		CLL RTL
004270  7006		RTL
004271  7006		RTL
004272  3024		DCA	WORD3
004273  4535	ENDNUM,	JMS I	[LUKUP2		/LOOK UP IN S.T.
004274  0062		SNLIST			/STMT NUMBER LIST
004275  7775		-3
004276  2231		ISZ	STMNUM
004277  3052		DCA	SNUM		/SAVE S.T. ADDRESS OF LABEL
004300  6211		CDF	10		/SET TYPE WORD
004301  1052		TAD	SNUM		/GET ADDR OF TYPE
004302  7001		IAC
004303  3317		DCA	SNTEMP
004304  1717		TAD I	SNTEMP		/GET TYPE WORD
004305  7100		CLL
004306  1025		TAD	WORD4		/PUT IN THE DEFINITION BIT
004307  7420		SNL
004310  3717		DCA I	SNTEMP		/RESTORE IT IF NOT MULTIPLE DEFN
004311  6201		CDF
004312  7620		SNL CLA
004313  5631		JMP I	STMNUM
004314  4576		JMS I	[ERMSG
004315  1514		1514
004316  5631		JMP I	STMNUM
		SNTEMP,
004317  0000	DIGIT,	0			/GET A DIGIT
004320  4567		JMS I	[GETC		/GET A CHAR
004321  5717		JMP I	DIGIT
004322  1374		TAD	(-272		/IS IT > 271 (9)
004323  7500		SMA
004324  5333		JMP	NODIGT		/YES, ITS GREATER
004325  1373		TAD	(272-260	/IS IT < 260 (0)
004326  7510		SPA
004327  5333		JMP	NODIGT		/YES, ITS LESS
004330  1375		TAD	(60
004331  2317		ISZ	DIGIT
004332  5717		JMP I	DIGIT		/TAKE SUCCESSFUL RETURN
004333  4557	NODIGT,	JMS I	[BACK1		/RESTORE NON DIGIT
004334  5717		JMP I	DIGIT
004335  4573	ASSIGN,	JMS I	[STMNUM		/GET STMT NUMBER
004336  5352		JMP	BADASN

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 29-2

004337  4563		JMS I	[GET2C		/LOOK FOR "TO"
004340  5352		JMP	BADASN
004341  1372		TAD	(-2417
004342  7650		SNA CLA
004343  4570		JMS I	[LEXPR		/GET ASSIGN VARIABLE
004344  5352		JMP	BADASN
004345  1371		TAD	(ASNOPR		/OUTPUT ASSIGN OPERATOR
004346  4572		JMS I	[OUTWRD
004347  1052		TAD	SNUM		/NOW STMT NUMBER
004350  4572		JMS I	[OUTWRD
004351  5564		JMP I	[NEXTST
004352  4576	BADASN,	JMS I	[ERMSG
004353  0123		0123
004354  5564		JMP I	[NEXTST
004355  0000	TTYOUT,	0			/TTY OUTPUT ROUTINE
004356  6046		TLS
004357  6041		TSF
004360  5357		JMP	.-1
004361  7200		CLA
004362  5755		JMP I	TTYOUT

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 30

		/ PRECEDENCE TABLE
004371  0054
004372  5361
004373  0012
004374  7506
004375  0060
004376  7720
004377  5000
	4400		PAGE
004400  0100	ADDOPR,	100
004401  0001		1
004402  0100	SUBOPR,	100
004403  0002		2
004404  0200	MULOPR,	200
004405  0003		3
004406  0200	DIVOPR,	200
004407  0004		4
004410  0500	EXPOPR,	500
004411  0005		5
004412  0030	NOTOPR,	30
004413  0006		6
004414  0400	UMOPR,	400
004415  0007		7
004416  0040	EQOPR,	40
004417  0016		16
004420  0040	NEOPR,	40
004421  0017		17
004422  0040	GEOPR,	40
004423  0010		10
004424  0040	GTOPR,	40
004425  0011		11
004426  0040	LEOPR,	40
004427  0012		12
004430  0040	LTOPR,	40
004431  0013		13
004432  0020	ANDOPR,	20
004433  0014		14
004434  0010	OROPR,	10
004435  0015		15
004436  0007	XOROPR,	7
004437  0020		20
004440  0007	EQVOPR,	7
004441  0021		21

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 31

		/ UTILITY ROUTINES
004442  0000	BACK1,	0			/BACK UP ONE CHAR
004443  7240		CLA CMA
004444  1042		TAD	NCHARS
004445  3042		DCA	NCHARS
004446  7240		CLA CMA
004447  1015		TAD	CHRPTR
004450  3015		DCA	CHRPTR
004451  5642		JMP I	BACK1
004452  0000	OADD,	0			/ADD OPERAND TO FAC
004453  7100		CLL
004454  1037		TAD	OPO
004455  1030		TAD	ACO
004456  3030		DCA	ACO
004457  7004		RAL
004460  1036		TAD	OP6
004461  1027		TAD	WORD6
004462  3027		DCA	WORD6
004463  7004		RAL
004464  1035		TAD	OP5
004465  1026		TAD	WORD5
004466  3026		DCA	WORD5
004467  7004		RAL
004470  1034		TAD	OP4
004471  1025		TAD	WORD4
004472  3025		DCA	WORD4
004473  7004		RAL
004474  1033		TAD	OP3
004475  1024		TAD	WORD3
004476  3024		DCA	WORD3
004477  7004		RAL
004500  1032		TAD	OP2
004501  1023		TAD	WORD2
004502  3023		DCA	WORD2
004503  5652		JMP I	OADD

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 32

		/ FLOATING POINT DIVIDE ROUTINE
	4600		PAGE
004600  0000	FPDIV,	0
004601  4670		JMS I	DAR1		/UNNORMALIZE AC BY ONE
004602  1031		TAD	OP1		/COMPUTE FINAL EXPONENT
004603  7041		CIA
004604  1022		TAD	WORD1
004605  3031		DCA	OP1		/AND SAVE IT
004606  1272		TAD	DM74		/SET ITERATION COUNTER
004607  3267		DCA	DITCNT
004610  1023		TAD	WORD2
004611  7004		RAL			/INITIALIZE LINK
004612  7210	FPDVLP,	CLA RAR			/COMPARE SIGNS
004613  1032		TAD	OP2
004614  7710		SPA CLA
004615  5220		JMP	.+3
004616  1273		TAD	OPMAC		/NEGATE OPERAND
004617  4674		JMS I	DFNEG
004620  4675		JMS I	DOADD		/ADD OPERAND AND FAC
004621  1266		TAD	D6		/RIGHT SHIFT QUOTIENT
004622  7004		RAL			/PRESERVING ADD OVERFLOW BIT
004623  3266		DCA	D6
004624  1265		TAD	D5
004625  7004		RAL
004626  3265		DCA	D5
004627  1264		TAD	D4
004630  7004		RAL
004631  3264		DCA	D4
004632  1263		TAD	D3
004633  7004		RAL
004634  3263		DCA	D3
004635  1262		TAD	D2
004636  7004		RAL
004637  3262		DCA	D2
004640  4671		JMS I	DAL1		/LEFT SHIFT FAC ONE
004641  2267		ISZ	DITCNT		/TEST ITERATION COUNT
004642  5212		JMP	FPDVLP
004643  1031		TAD	OP1		/PUT QUOTIENT INTO FAC
004644  3022		DCA	WORD1
004645  1262		TAD	D2
004646  3023		DCA	WORD2
004647  1263		TAD	D3
004650  3024		DCA	WORD3
004651  1264		TAD	D4
004652  3025		DCA	WORD4
004653  1265		TAD	D5
004654  3026		DCA	WORD5
004655  1266		TAD	D6
004656  3027		DCA	WORD6
004657  3030		DCA	ACO
004660  4676		JMS I	DNORM		/NORMALIZE
004661  5600		JMP I	FPDIV
004662  0000	D2,	0
004663  0000	D3,	0
004664  0000	D4,	0

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 32-1

004665  0000	D5,	0
004666  0000	D6,	0
004667  0000	DITCNT,	0
004670  5316	DAR1,	AR1
004671  5344	DAL1,	AL1
004672  7704	DM74,	-74
004673  0007	OPMAC,	OPO-ACO
004674  5530	DFNEG,	NEGFAC
004675  4452	DOADD,	OADD
004676  5463	DNORM,	ANORM
	4677		*STACKS-1
004677  7777		-1			/TO PREVENT SPURIOUS DO ENDS

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 33

		/ NUMERIC CONVERSION ROUTINE
	5000		PAGE
005000  0000	NUMBER,	0			/GENERAL NUMBER CONVERSION ROUTINE
005001  3047		DCA	ESWIT		/ZERO E/D SWITCH
005002  3046		DCA	DECPT		/ZERO DECIMAL POINT SWITCH
005003  3022		DCA	WORD1		/ZERO FAC
005004  3023		DCA	WORD2
005005  3024		DCA	WORD3
005006  3025		DCA	WORD4
005007  3026		DCA	WORD5
005010  3027		DCA	WORD6
005011  3030		DCA	ACO
005012  3216		DCA	SIGN		/CLEAR SIGN SWITCH
005013  4567		JMS I	[GETC		/GET A CHAR
005014  5600		JMP I	NUMBER		/NO CHAR IS NO NUMBER
005015  4326		JMS	CHKSGN		/CHECK FOR SIGN
005016  0000	SIGN,	0			/THIS SWITCH GETS SET
005017  3050		DCA	NDIGIT		/ZERO DIGIT COUNT
005020  4551	CONVLP,	JMS I	[DIGIT		/GET A DIGIT
005021  5256		JMP	TRYDEC		/IS THERE A DECIMAL POINT ?
005022  0125		AND	[17
005023  3355		DCA	NXTDGT		/SAVE THE DIGIT
005024  2050		ISZ	NDIGIT		/INCR NUMBER OF DIGITS
005025  1023		TAD	WORD2		/PREPARE TO MULT BY 10
005026  3032		DCA	OP2
005027  1024		TAD	WORD3
005030  3033		DCA	OP3
005031  1025		TAD	WORD4
005032  3034		DCA	OP4
005033  1026		TAD	WORD5
005034  3035		DCA	OP5
005035  1027		TAD	WORD6
005036  3036		DCA	OP6
005037  1030		TAD	ACO
005040  3037		DCA	OPO
005041  4777		JMS I	(AL1		/DOUBLE FAC
005042  4777		JMS I	(AL1		/DOUBLE AGAIN
005043  4776		JMS I	(OADD		/TIMES FIVE
005044  4777		JMS I	(AL1		/ONE MORE DOUBLING IS TIMES 10
005045  3032		DCA	OP2
005046  3033		DCA	OP3		/PUT NEWEST DIGIT INTO OPERAND
005047  3034		DCA	OP4
005050  3035		DCA	OP5
005051  3036		DCA	OP6
005052  1355		TAD	NXTDGT
005053  3037		DCA	OPO
005054  4776		JMS I	(OADD		/ADD IN NEWEST DIGIT
005055  5220		JMP	CONVLP
005056  1046	TRYDEC,	TAD	DECPT		/DECIMAL ALREADY ?
005057  7640		SZA CLA
005060  5310		JMP	TRYE2		/YES, LOOK FOR EXPONENT
005061  4567		JMS I	[GETC		/LOOK FOR .
005062  5273		JMP	DIGTST		/SEE IF THERE WAS ANYTHING
005063  1375		TAD	(-256
005064  7440		SZA

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 33-1

005065  5302		JMP	TRYE1		/TRY FOR E
005066  4571		JMS I	[SAVECP		/SAVE CHAR POS
005067  4774		JMS I	(CKEOPR		/CHECK FOR SPECIAL CASE OF LIT.RE.
005070  5277		JMP	NOLDRE		/NOT LIT.RE.
005071  4565		JMS I	[RESTCP
005072  4557		JMS I	[BACK1		/PUT BACK .  IT BELONGS TO RELATIONAL
005073  1050	DIGTST,	TAD	NDIGIT		/ANY DIGITS ?
005074  7650		SNA CLA
005075  5600		JMP I	NUMBER		/NO, NO NUMBER
005076  5316		JMP	INTEGR		/TAKE INTEGER EXIT
005077  2046	NOLDRE,	ISZ	DECPT		/SET DECIMAL POINT SW
005100  4565		JMS I	[RESTCP		/RESTORE CHAR POS
005101  5217		JMP	CONVLP-1	/LOOP FOR OTHER DIGITS
005102  4557	TRYE1,	JMS I	[BACK1		/PUT BACK NON .
005103  1050		TAD	NDIGIT		/ANY DIGITS YET ?
005104  7650		SNA CLA
005105  5600		JMP I	NUMBER		/NO, NO NUMBER
005106  4337		JMS	EORD		/LOOK OR E OR D
005107  5316		JMP	INTEGR
005110  4337	TRYE2,	JMS	EORD		/LOOK FOR E OR D
005111  2200	FPNUM,	ISZ	NUMBER
005112  2200		ISZ	NUMBER
005113  3054		DCA	EXPON		/ZERO EXPONENT
005114  4773		JMS I	(DODEC		/HANDLE DIGITS RIGHT OF .
005115  5321		JMP	DOSIGN-1	/GO DO SIGN
005116  1372	INTEGR,	TAD	(107		/PUT IN EXPONNT
005117  3022		DCA	WORD1
005120  4771		JMS I	(ANORM		/NORMALIZE
005121  2200		ISZ	NUMBER		/BUMP RETURN
005122  1216	DOSIGN,	TAD	SIGN		/CHECK THE SIGN
005123  7640		SZA CLA
005124  4770		JMS I	(NEGFAC		/NEGATE IF NEGATIVE
005125  5600		JMP I	NUMBER		/RETURN
005126  0000	CHKSGN,	0			/CHECK FOR SIGN
005127  1367		TAD	(-255		/IS IT - ?
005130  7450		SNA
005131  2726		ISZ I	CHKSGN		/YES, SET SWITCH
005132  7440		SZA
005133  1366		TAD	(255-253	/IS IT + ?
005134  7640		SZA CLA
005135  4557		JMS I	[BACK1		/RETURN CHAR OTHERWISE
005136  5726		JMP I	CHKSGN
005137  0000	EORD,	0			/LOOK FOR E OR D
005140  4567		JMS I	[GETC		/LOOK FOR E OR D
005141  5737		JMP I	EORD
005142  1365		TAD	(-304
005143  7110		CLL RAR
005144  7640		SZA CLA		/E OR D?
005145  5353		JMP	NOEORD	/NO
005146  7430		SZL
005147  2047		ISZ	ESWIT	/SET SWITCH IF E
005150  7420		SNL
005151  2112		ISZ	DPUSED	/SET D.P. SWITCH IF D
005152  5764		JMP I	(GETEXP		/OK, GET EXPONENT
005153  4557	NOEORD,	JMS I	[BACK1		/PUT IT BACK CAUSE ITS NOT OURS

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 33-2

005154  5737		JMP I	EORD
005155  0000	NXTDGT,	0
005156  4566	REWIND,	JMS I	[EXPR		/COMPILE UNIT
005157  5564		JMP I	[NEXTST
005160  1363		TAD	(REWOPR		/OUTPUT REWIND OPERATOR
005161  4572		JMS I	[OUTWRD
005162  5564		JMP I	[NEXTST

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 34

		/ NUMERIC CONVERSION ROUTINE
005163  0042
005164  5215
005165  7474
005166  0002
005167  7523
005170  5530
005171  5463
005172  0107
005173  5237
005174  3650
005175  7522
005176  4452
005177  5344
	5200		PAGE
005200  0000	SMLNUM,	0			/INPUT A NUMBER <= 4095
005201  3054	EXPLUP,	DCA	EXPON		/ZERO THE EXPONENT
005202  4551		JMS I	[DIGIT		/GET THE NEXT DIGIT
005203  5600		JMP I	SMLNUM		/NUMBER DONE
005204  0125		AND	[17
005205  3037		DCA	OPO		/SAVE THE DIGIT
005206  1054		TAD	EXPON		/MULT BY 10
005207  7104		CLL RAL
005210  7104		CLL RAL
005211  1054		TAD	EXPON
005212  7104		CLL RAL
005213  1037		TAD	OPO		/ADD IN DIGIT
005214  5201		JMP	EXPLUP		/STORE BACK INTO EXPONENT
005215  3221	GETEXP,	DCA	ESIGN		/ZERO EXPONENT SIGN SWITCH
005216  4567		JMS I	[GETC		/GET A CHAR
005217  5777		JMP I	(FPNUM+1
005220  4776		JMS I	(CHKSGN		/IS IT A SIGN
		FPRTNE,
005221  0000	ESIGN,	0			/THIS IS THE SWITCH TO SET
005222  4200		JMS	SMLNUM		/GO GET THE EXPONENT
005223  1221	FIXEXP,	TAD	ESIGN		/CHECK EXPONENT SIGN
005224  7650		SNA CLA
005225  5231		JMP	.+4
005226  1054		TAD	EXPON		/COMPLEMENT EXPONENT
005227  7041		CIA
005230  3054		DCA	EXPON
005231  4237		JMS	DODEC		/GO HANLE EXPONENT
005232  7126		CLL CML RTL		/BUMP RETURN BY TWO (DP) OR 3 (FP)
005233  1047		TAD	ESWIT		/DEPENDING ON E/D SWITCH
005234  1536		TAD I	[NUMBER
005235  3536		DCA I	[NUMBER
005236  5775		JMP I	(DOSIGN		/CHECK THE SIGN
005237  0000	DODEC,	0
005240  1342		TAD	DO107		/NORMALIZE THE NUMBER
005241  3022		DCA	WORD1
005242  4774		JMS I	(ANORM
005243  1046		TAD	DECPT		/WAS THERE A DECIMAL POINT ?
005244  7640		SZA CLA
005245  1050		TAD	NDIGIT		/HOW MANY DIGITS TO THE RIGHT ?
005246  7041		CIA

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 34-1

005247  1054		TAD	EXPON		/SUBTRACT THAT NUMBER FROM EXP
005250  7500		SMA
005251  5256		JMP	POSEXP		/EXPONENT IS POSITIVE
005252  7041		CIA
005253  3054		DCA	EXPON		/ONLY NEED ABS VALUE
005254  1373		TAD	(FPDIV		/DO DIVIDES
005255  5260		JMP	.+3
005256  3054	POSEXP,	DCA	EXPON
005257  1372		TAD	(FPMUL		/DO MULTIPLIES
005260  3221		DCA	FPRTNE		/MULTIPLY/DIVIDE ROUTINE
005261  1371		TAD	(PETABL-1	/POWERS OF TEN TABLE
005262  3017		DCA	X17
005263  1054	EXPMUL,	TAD	EXPON		/LOOK AT THE EXPONENT
005264  7450		SNA
005265  5637		JMP I	DODEC		/IF 0 ITS THRU
005266  7110		CLL RAR
005267  3054		DCA	EXPON		/PUT LOWEST BIT INTO LINK
005270  7420		SNL
005271  5313		JMP	SKPEXP		/THIS ONE DOESN'T COUNT
005272  6211		CDF 10		/3.01/
005273  1417		TAD I	X17		/MOVE FACTOR INTO OPERAND
005274  3031		DCA	OP1
005275  1417		TAD I	X17
005276  3032		DCA	OP2
005277  1417		TAD I	X17
005300  3033		DCA	OP3
005301  1417		TAD I	X17
005302  3034		DCA	OP4
005303  1417		TAD I	X17
005304  3035		DCA	OP5
005305  1417		TAD I	X17
005306  3036		DCA	OP6
005307  3037		DCA	OPO
005310  6201		CDF
005311  4621		JMS I	FPRTNE		/MULTIPLY OR DIVIDE BY THIS FACTOR
005312  5263		JMP	EXPMUL		/CHECK NEXT BIT
005313  1017	SKPEXP,	TAD	X17		/SKIP OVER THIS FACTOR
005314  1370		TAD	(6
005315  5262		JMP	EXPMUL-1
005316  0000	AR1,	0			/SHIFT FAC RIGHT ONE
005317  1023		TAD	WORD2
005320  7110		CLL RAR
005321  3023		DCA	WORD2
005322  1024		TAD	WORD3
005323  7010		RAR
005324  3024		DCA	WORD3
005325  1025		TAD	WORD4
005326  7010		RAR
005327  3025		DCA	WORD4
005330  1026		TAD	WORD5
005331  7010		RAR
005332  3026		DCA	WORD5
005333  1027		TAD	WORD6
005334  7010		RAR
005335  3027		DCA	WORD6

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 34-2

005336  1030		TAD	ACO
005337  7010		RAR
005340  3030		DCA	ACO
005341  2022		ISZ	WORD1
005342  0107	DO107,	107
005343  5716		JMP I	AR1

005344  0000	AL1,	0			/SHIFT FAC LEFT ONE
005345  1030		TAD	ACO
005346  7104		CLL RAL
005347  3030		DCA	ACO
005350  1027		TAD	WORD6
005351  7004		RAL
005352  3027		DCA	WORD6
005353  1026		TAD	WORD5
005354  7004		RAL
005355  3026		DCA	WORD5
005356  1025		TAD	WORD4
005357  7004		RAL
005360  3025		DCA	WORD4
005361  1024		TAD	WORD3
005362  7004		RAL
005363  3024		DCA	WORD3
005364  1023		TAD	WORD2
005365  7004		RAL
005366  3023		DCA	WORD2
005367  5744		JMP I	AL1

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 35

		/ NUMERIC CONVERSION ROUTINE
005370  0006
005371  5452
005372  5400
005373  4600
005374  5463
005375  5122
005376  5126
005377  5112
	5400		PAGE
005400  0000	FPMUL,	0			/FLOATING MULTIPLY ROUTINE
005401  1022		TAD	WORD1		/COMPUTE NEW EXPONENT
005402  1031		TAD	OP1
005403  3031		DCA	OP1
005404  1023		TAD	WORD2		/SAVE AC MANTISSA
005405  3256		DCA	TW2
005406  1024		TAD	WORD3
005407  3257		DCA	TW3
005410  1025		TAD	WORD4
005411  3260		DCA	TW4
005412  1026		TAD	WORD5
005413  3261		DCA	TW5
005414  1027		TAD	WORD6
005415  3262		DCA	TW6
005416  1377		TAD	(-74		/SET ITERATION COUNTER
005417  3352		DCA	ITRCNT
005420  3023		DCA	WORD2		/ZERO FAC MANTISSA
005421  3024		DCA	WORD3
005422  3025		DCA	WORD4
005423  3026		DCA	WORD5
005424  3027		DCA	WORD6
005425  3030		DCA	ACO
005426  4776	MULLUP,	JMS I	(AR1		/SHIFT FAC RIGHT ONE
005427  1256		TAD	TW2		/SHIFT MULTIPLIER RIGHT
005430  7110		CLL RAR
005431  3256		DCA	TW2
005432  1257		TAD	TW3
005433  7010		RAR
005434  3257		DCA	TW3
005435  1260		TAD	TW4
005436  7010		RAR
005437  3260		DCA	TW4
005440  1261		TAD	TW5
005441  7010		RAR
005442  3261		DCA	TW5
005443  1262		TAD	TW6
005444  7010		RAR
005445  3262		DCA	TW6
005446  7430		SZL
005447  4775		JMS I	(OADD		/ADD IF LINK IS ONE
005450  2352		ISZ	ITRCNT		/BUMP COUNT
005451  5226		JMP	MULLUP		/LOOP
005452  1031		TAD	OP1		/PUT IN CORRECT EXPONENT
005453  3022		DCA	WORD1
005454  4774		JMS I	(ANORM		/NORMALIZE THE RESULT

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 35-1

005455  5600		JMP I	FPMUL
005456  0000	TW2,	0
005457  0000	TW3,	0
005460  0000	TW4,	0
005461  0000	TW5,	0
005462  0000	TW6,	0
005463  0000	ANORM,	0			/NORMALIZE FAC
005464  1023		TAD	WORD2		/IS MANTISSA 0 ?
005465  7450		SNA
005466  1024		TAD	WORD3
005467  7450		SNA
005470  1025		TAD	WORD4
005471  7450		SNA
005472  1026		TAD	WORD5
005473  7450		SNA
005474  1027		TAD	WORD6
005475  7450		SNA
005476  1030		TAD	ACO
005477  7650		SNA CLA
005500  5326		JMP	ZEXP		/YES, ZERO EXPONENT
005501  7332	NORMLP,	CLA CLL CML RTR		/IS HIGH ORDER MANTISSA = 6000
005502  1023		TAD	WORD2
005503  7440		SZA
005504  5317		JMP	NO6000		/NO, SKIP THIS STUFF
005505  1024		TAD	WORD3		/YES, IS THE REST 0 ?
005506  7450		SNA
005507  1025		TAD	WORD4
005510  7450		SNA
005511  1026		TAD	WORD5
005512  7450		SNA
005513  1027		TAD	WORD6
005514  7450		SNA
005515  1030		TAD	ACO
005516  7640		SZA CLA			/SKIP IF 600000 ... 0000
005517  7710	NO6000,	SPA CLA
005520  5663		JMP I	ANORM		/NORM IS DONE WHEN BITS DIFFER
005521  4773		JMS I	(AL1		/SHIFT LEFT ONE
005522  7240		CLA CMA			/DECREMENT EXPONENT
005523  1022		TAD	WORD1
005524  3022		DCA	WORD1
005525  5301		JMP	NORMLP		/LOOP
005526  3022	ZEXP,	DCA	WORD1
005527  5663		JMP I	ANORM
005530  0000	NEGFAC,	0			/NEGATE FAC
005531  1372		TAD	(ACO		/GET POINTER TO OPERAND
005532  3350		DCA	NFPTR
005533  1371		TAD	(-6		/SIX WORD NEGATE
005534  3351		DCA	NFCNT
005535  7100		CLL
005536  7004	NFLOOP,	RAL
005537  1750		TAD I	NFPTR		/GET NEXT WORD
005540  7161		CLL CML CIA
005541  3750		DCA I	NFPTR		/RESTORE AFTER COMPLEMENTING
005542  7260		CML CLA CMA		/LINK GETS COMPLEMENTED ONCE HERE
005543  1350		TAD	NFPTR		/AND ONCE AGAIN HERE

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 35-2

005544  3350		DCA	NFPTR		/RESTORE DECREMENTED POINTER
005545  2351		ISZ	NFCNT
005546  5336		JMP	NFLOOP
005547  5730		JMP I	NEGFAC
005550  0000	NFPTR,	0
005551  0000	NFCNT,	0
		ITRCNT,
005552  0000	DHLRTH,	0			/HOLLERITH IN DATA SUBR
005553  2044		ISZ	TEMP
005554  7410		SKP
005555  5752		JMP I	DHLRTH
005556  2352		ISZ	DHLRTH
005557  4546		JMS I	[GETCWB
005560  5770' 		JMP	DHOLER
005561  5752		JMP I	DHLRTH

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 36

		/ VARIABLE SCANNER
005570  5725
005571  7772
005572  0030
005573  5344
005574  5463
005575  4452
005576  5316
005577  7704
	5600		PAGE
005600  0000	GETNAM,	0			/GET VARIABLE NAME
005601  4777' 		JMS	LETTER		/FIRST CHAR MUST BE ALPHABETIC
005602  5600		JMP I	GETNAM		/NO VARIABLE
005603  3021		DCA	BUCKET		/FIRST ONE IS THE BUCKET
005604  1376		TAD	(NAME1
005605  3240		DCA	NPTR		/POINTER TO NAME BUFFER
005606  7146		CLL CMA RTL		/SIX CHARS MAX (3 WORDS)
005607  3775' 		DCA	NCNT
005610  4777' 	PAKLUP,	JMS	LETTER		/GET A LETTER
005611  7410		SKP
005612  5215		JMP	.+3		/WE GOT IT
005613  4551		JMS I	[DIGIT		/NO LETTER, IS IT A DIGIT ?
005614  5224		JMP	NDONE		/NO, NAMES OVER
005615  7106		CLL RTL
005616  7006		RTL
005617  7006		RTL			/MOVE CHAR TO A HIGHER PLACE
005620  3640		DCA I	NPTR		/STORE IT
005621  2775' 		ISZ	NCNT		/BUMP COUNTER
005622  5227		JMP	MORNAM		/MORE TO COME
005623  7410		SKP
005624  3640	NDONE,	DCA I	NPTR		/ZERO NEXT WORD
005625  2200		ISZ	GETNAM		/FIX RETURN ADDR
005626  5600		JMP I	GETNAM
005627  4777' 	MORNAM,	JMS	LETTER		/GET NEXT CHAR
005630  7410		SKP
005631  5234		JMP	.+3		/ITS A LETTER
005632  4551		JMS I	[DIGIT
005633  5225		JMP	NDONE+1		/NO GOOD, NAMES OVER
005634  1640		TAD I	NPTR
005635  3640		DCA I	NPTR		/COMBINE TWO CHARS
005636  2240		ISZ	NPTR
005637  5210		JMP	PAKLUP
005640  0000	NPTR,	0
	4452		NCNT=OADD

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 37

		/ DATA STATEMENT
005641  4547	DATA,	JMS I	[IFCHEK		/IF(..)DATA   ????
005642  1374		TAD	(DATAST		/START DATA STATEMENT
005643  4572		JMS I	[OUTWRD
005644  7240	DATLUP,	CLA CMA			/SET DIMNUM = -1 IF NO SUBSCRIPTS
005645  4542		JMS I	[GETSS		/GET LIST ELEMENT
005646  5322		JMP	DATAER
005647  1373		TAD	(DPUSH		/OUTPUT DPUSH OPERATOR
005650  4572		JMS I	[OUTWRD
005651  7040		CMA
005652  1045		TAD	TEMP2		/FOLLOWED BY POINTER
005653  4572		JMS I	[OUTWRD
005654  1067		TAD	DIMNUM		/FOLLOWED BY NUMBER
005655  4572		JMS I	[OUTWRD
005656  6211		CDF	10
005657  1445		TAD I	TEMP2		/LOOK AT TYE TYPE
005660  0372		AND	(20		/IS IT AN ARG ?
005661  6201		CDF
005662  7640		SZA CLA
005663  5322		JMP	DATAER		/YES, THATS BAD
005664  4567		JMS I	[GETC		/, ?
005665  5322		JMP	DATAER
005666  1371		TAD	(-254
005667  7450		SNA
005670  5244		JMP	DATLUP		/LOOK FOR MORE
005671  1370		TAD	(254-257	// ?
005672  7640		SZA CLA
005673  5322		JMP	DATAER
005674  5767' 		JMP	DLOOP2		/GO LOOK FOR ELEMENT
005675  1366	DATA3,	TAD	(WORD1-1
005676  3010		DCA	X10		/POINTER TO THE GOODS
005677  1410		TAD I	X10		/THEN STUFF
005700  4572		JMS I	[OUTWRD
005701  2044		ISZ	TEMP
005702  5277		JMP	.-3
005703  1365	NXTDE,	TAD	(ENDELM		/OUTPUT END OF ELEMENT
005704  4572		JMS I	[OUTWRD
005705  4567		JMS I	[GETC		/LOOK FOR COMMA
005706  5322		JMP	DATAER
005707  1371		TAD	(-254
005710  7450		SNA
005711  5767' 		JMP	DLOOP2		/YES, GET MORE DATA
005712  1370		TAD	(254-257	/SLASH ?
005713  7640		SZA CLA
005714  5322		JMP	DATAER		/NO, ERROR
005715  4567		JMS I	[GETC		/ANOTHER DATA GROUP ?
005716  5564		JMP I	[NEXTST		/NO
005717  1371		TAD	(-254		/COMMA ?
005720  7650		SNA CLA
005721  5242		JMP	DATA+1		/START A NEW DATA STMT
005722  4576	DATAER,	JMS I	[ERMSG
005723  0401		0401			/OK WHEN THIS IS AN AND
005724  5564		JMP I	[NEXTST
005725  4576	DHOLER,	JMS I	[ERMSG
005726  0410		0410			/HOLLERITH DATA ERROR

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 37-1

005727  5564		JMP I	[NEXTST
005730  0000	DQUOTE,	0			/GET CHAR FOR QUOTED DATA
005731  4546		JMS I	[GETCWB
005732  5325		JMP	DHOLER
005733  1132		TAD	[-247
005734  7440		SZA
005735  5345		JMP	DNOTQ2
005736  4546		JMS I	[GETCWB
005737  5730		JMP I	DQUOTE
005740  1132		TAD	[-247
005741  7650		SNA CLA
005742  5345		JMP	DNOTQ2		/REPLACE '' BY '
005743  4557		JMS I	[BACK1
005744  5730		JMP I	DQUOTE
005745  1131	DNOTQ2,	TAD	[247		/FIX CHAR
005746  2330		ISZ	DQUOTE
005747  5730		JMP I	DQUOTE
005750  0000	OUT3WD,	0			/2.02/ OUTPUT 3 WORDS 
005751  1152		TAD	[DATELM		/2.02/ OUTPUT ELEMENT HEAD
005752  4572		JMS I	[OUTWRD		/2.02/
005753  1364		TAD	(3		/2.02/ AND SIZE
005754  4572		JMS I	[OUTWRD		/2.02/
005755  1022		TAD	WORD1		/2.02/ NOW THREE WORDS
005756  4572		JMS I	[OUTWRD		/2.02/
005757  1023		TAD	WORD2		/2.02/
005760  4572		JMS I	[OUTWRD		/2.02/
005761  1024		TAD	WORD3		/2.02/
005762  4572		JMS I	[OUTWRD		/2.02/
005763  5750		JMP I	OUT3WD		/2.02/

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 38

		/ DATA STATEMENT
005764  0003
005765  0066
005766  0021
005767  6000
005770  7775
005771  7524
005772  0020
005773  0023
005774  0065
005775  4452
005776  6200
005777  3324
	6000		PAGE
006000  4567	DLOOP2,	JMS I	[GETC
006001  5777' 		JMP	DATAER
006002  1376		TAD	(-250		/IS CHAR ( ?
006003  7440		SZA
006004  5225		JMP	NOCMPD		/NO, NOT COMPLEX DATA
006005  4536		JMS I	[NUMBER		/GET REAL PART
006006  5777' 		JMP	DATAER
006007  7410		SKP
006010  5777' 		JMP	DATAER		/DP IS NG WITH COMPLEX
006011  4775' 		JMS	OUT3WD		/2.02/ OUTPUT 3 WORDS
006012  4556		JMS I	[CHECKC		/LOOK FOR COMMA
006013  7524		-254
006014  5777' 		JMP	DATAER		/BAD IF NOT THERE
006015  4536		JMS I	[NUMBER		/GET IMAGINARY PART
006016  5777' 		JMP	DATAER
006017  7410		SKP
006020  5777' 		JMP	DATAER
006021  4556		JMS I	[CHECKC		/LOOK FOR )
006022  7527		-251
006023  5777' 		JMP	DATAER		/NOT THERE
006024  5256		JMP	DATAFP		/GO MOVE IMAGINARY PART
006025  7001	NOCMPD,	IAC			/IS IT QUOTED STRING ?
006026  7440		SZA
006027  5232		JMP	NQUOTD		/NO
006030  1374		TAD	(DQUOTE		/GET SUBR ADDRESS
006031  5301		JMP	HOLDAT		/GO HANDLE IT
006032  1373	NQUOTD,	TAD	(247-317	/IS IT AN O (OCTAL)
006033  7450		SNA
006034  5772		JMP I	(XOCTAL		/YES
006035  1371		TAD	(317-256	/IS IT .
006036  7650		SNA CLA
006037  4770		JMS I	(TRUFAL		/CHECK FOR TRUE OR FALSE
006040  5251		JMP	NOTF		/NO TRUE-FALSE, TRY NUMBER
006041  7132		CLL CML RTR		/2000
006042  3023		DCA	WORD2
006043  1023		TAD	WORD2
006044  7640		SZA CLA
006045  7001		IAC
006046  3022		DCA	WORD1		/TRUE=1.0  FALSE=0.0
006047  3024		DCA	WORD3
006050  5256		JMP	DATAFP		/GO PUT IT

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 38-1

006051  4557	NOTF,	JMS I	[BACK1		/PUT BACK CHAR
006052  4536		JMS I	[NUMBER		/TRY FOR A NUMBER
006053  5777' 		JMP	DATAER		/ELEMENT MISSING
006054  5266		JMP	TRYHOS		/IF INTEGER, TRY FOR H OR *
006055  1367		TAD	(-3
006056  1367	DATAFP,	TAD	(-3		/FP DATA
006057  3044		DCA	TEMP		/SIZE OF ITEM
006060  1152		TAD	[DATELM		/DATA ELEMENT SIGNAL
006061  4572		JMS I	[OUTWRD
006062  1044		TAD	TEMP		/THEN SIZE
006063  7041		CIA			/ALWAYS POSITIVE
006064  4572		JMS I	[OUTWRD
006065  5766' 		JMP	DATA3		/GO OUTPUT THE DATA
006066  4567	TRYHOS,	JMS I	[GETC		/LOOK FOR H
006067  5777' 		JMP	DATAER
006070  1365		TAD	(-310
006071  7440		SZA
006072  5343		JMP	TRYSTR		/NOT H, MAYBE ITS *
006073  4541		JMS I	[FIXNUM		/INTEGERIZE IT
006074  7450		SNA
006075  5764' 		JMP	DHOLER		/HOLLERITH DATA ERROR
006076  7040		CMA
006077  3044		DCA	TEMP		/SAVE COUNT
006100  1363		TAD	(DHLRTH		/GET SUBR POINTER
006101  3051	HOLDAT,	DCA	HCHAR
006102  7146		CLL CMA RTL		/2.02/ COUNT
006103  3045		DCA	TEMP2		/2.02/ BY THREES
006104  1362		TAD	(WORD1-1	/2.02/
006105  3010		DCA	X10		/2.02/ POINTER
006106  4451	HDLOOP,	JMS I	HCHAR		/GET A CHAR
006107  5326		JMP	EOHD		/2.02/
006110  0145		AND	[77		/6 BITIZE IT
006111  7106		CLL RTL
006112  7006		RTL
006113  7006		RTL			/UPPER-PART-OF-WORDIZE
006114  3024		DCA	WORD3		/2.02/ STORAGIZE IT
006115  4451		JMS I	HCHAR		/GET ANOTHER
006116  5333		JMP	LASTHD		/LAST HALF WORD MUST GO OUT
006117  0145		AND	[77
006120  1024		TAD	WORD3		/2.02/ COMBINIZE THE TWO HALVES
006121  3410		DCA I	X10		/2.02/ STORE IT
006122  2045		ISZ	TEMP2		/2.02/ THREE AT A TIME
006123  5306		JMP	HDLOOP		/2.02/
006124  4775' 		JMS	OUT3WD		/2.02/ OUTPUT THREE
006125  5302		JMP	HOLDAT+1	/2.02/ GO DO NEXT THREE WDS
006126  7126	EOHD,	CLL CML RTL		/2.02/ ANY CHARS IN THIS SET ?
006127  1045		TAD	TEMP2		/2.02/
006130  7710		SPA CLA			/2.02/
006131  5761' 		JMP	NXTDE		/2.02/ NO, DO NEXT ELEMENT
006132  5336		JMP	.+4		/2.02/ YES, FILL IT OUT
006133  1024	LASTHD,	TAD	WORD3		/2.02/ FILL OUT LOWER CHAR
006134  1360		TAD	(40		/2.02/ WITH A BLANK
006135  3410		DCA I	X10		/2.02/
006136  1357		TAD	(4040		/2.02/ THEN FILL REST
006137  3410		DCA I	X10		/2.02/ WITH BLANKS

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 38-2

006140  1357		TAD	(4040		/2.02/
006141  3410		DCA I	X10		/2.02/
006142  5256		JMP	DATAFP		/2.02/ GO OUTPUT IT
006143  1356	TRYSTR,	TAD	(310-252	/*
006144  7650		SNA CLA
006145  5350		JMP	.+3
006146  4557		JMS I	[BACK1		/PUT BACK THAT CHAR
006147  5256		JMP	DATAFP		/ITS JUST AN INTEGER
006150  1355		TAD	(DREPTC		/REPETITION COUNT
006151  4572		JMS I	[OUTWRD
006152  4541		JMS I	[FIXNUM
006153  4572		JMS I	[OUTWRD		/OUTPUT COUNT
006154  5200		JMP	DLOOP2		/LOOP

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 39

		/ INITIALIZE READ IN
006155  0064
006156  0036
006157  4040
006160  0040
006161  5703
006162  0021
006163  5552
006164  5725
006165  7470
006166  5675
006167  7775
006170  4044
006171  0041
006172  1140
006173  7730
006174  5730
006175  5750
006176  7530
006177  5722
	6400		*6400
006400  1272	INITLN,	TAD	IX7772		/READ FIRST SIX CHARS
006401  3044		DCA	TEMP
006402  1121		TAD	IXLINM
006403  3015		DCA	CHRPTR
006404  6212	INITLP,	CIF	10
006405  4577		JMS I	[ICHAR		/READ A CHAR
006406  5200		JMP	INITLN
006407  1273		TAD	IXM211		/TAB ?
006410  7640		SZA CLA
006411  5217		JMP	NIXTAB		/NO THIS ONE
006412  1267		TAD	IX0240
006413  3415		DCA I	CHRPTR
006414  2044		ISZ	TEMP
006415  5212		JMP	.-3
006416  5223		JMP	CHKCOM		/DO COMMENT CHECK
006417  1040	NIXTAB,	TAD	CHAR
006420  3415		DCA I	CHRPTR		/STORE THE CHAR
006421  2044		ISZ	TEMP
006422  5204		JMP	INITLP
006423  1520	CHKCOM,	TAD I	IXLINE		/COMMENT ?
006424  1266		TAD	IXM303
006425  7650		SNA CLA
006426  5256		JMP	IGNORE		/IGNORE IT
006427  1517		TAD I	IXLNP5		/CONTINUATION ?
006430  1265		TAD	IXM240
006431  7640		SZA CLA
006432  5256		JMP	IGNORE
006433  1274		TAD	IX7700		/FIX CALL
006434  6211		CDF	10		/SEE WHAT HAPPENS WHEN YOU MOVE A ROUTINE**
006435  3664		DCA I	IXINCL
006436  6201		CDF			/**
006437  6212		CIF	10
006440  4670		JMS I	IX200		/REMOVE MONITOR
006441  0011		11

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 39-1

006442  6211		CDF	10		/FIX FIELD ONE STUFF
006443  1653		TAD I	MOV1
006444  3654		DCA I	MOV2
006445  2253		ISZ	MOV1
006446  2254		ISZ	MOV2
006447  2255		ISZ	MOVCNT
006450  5243		JMP	.-5
006451  6201		CDF
006452  5663		JMP I	IXRDFS		/LOOK FOR PROG HEADER
006453  2020	MOV1,	2020
006454  0020	MOV2,	20
006455  7620	MOVCNT,	-160
006456  6212	IGNORE,	CIF	10		/**
006457  4577		JMS I	[ICHAR		/SKIP TILL CARRIAGE RETURN
006460  5200		JMP	INITLN
006461  7200		CLA
006462  5256		JMP	IGNORE
006463  6600	IXRDFS,	RDFRST
006464  5754	IXINCL,	INCALL
006465  7540	IXM240,	-240
006466  7475	IXM303,	-303
006467  0240	IX0240,	0240
006470  0200	IX200,	200
006471  7600	IX7600,	7600
006472  7772	IX7772,	7772
006473  7567	IXM211,	-211
006474  7700	IX7700,	7700		/V3C

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 40

		/ SEARCH FOR PROGRAM HEADER
	6600		PAGE
006600  6212	RDFRST,	CIF	10		/**
006601  4577		JMS I	[ICHAR		/THIS IS A DUPLICATE OF THE CODE
006602  5232		JMP	ENDLNF		/AT LABEL 'RDLOOP' , ONLY THE
006603  1377		TAD	(-211
006604  7450		SNA
006605  1376		TAD	(240-211
006606  1375		TAD	(211
006607  3415		DCA I	CHRPTR		/NAMES HAVE BEEN CHANGED TO
006610  2111		ISZ	CNT72
006611  7410		SKP
006612  5223		JMP	SKPFL2
006613  1015		TAD	CHRPTR		/PROTECT THE ASSEMBLY
006614  7141		CIA CLL			/(IT GETS THE FIRST LINE
006615  1374		TAD	(LINE+270	/WHICH MAY BE SUBROUTINE OR 
		/FUNCTION. 1ST LINE SHORTER THAN REST BEC OF BUFFER OVERWRITES**
006616  7630		SZL CLA			/OR SOMETHING ELSE, IN WHICH CASE
006617  5200		JMP	RDFRST		/ITS THE MAIN PROGRAM)
006620  4576		JMS I	[ERMSG		/LINE TOO LONG
006621  1424		1424
006622  5267		JMP	SKPFL		/SKIP REST
006623  6212	SKPFL2,	CIF	10		/**
006624  4577		JMS I	[ICHAR
006625  5232		JMP	ENDLNF
006626  7200		CLA
006627  5223		JMP	SKPFL2
006630  1016	SKPCMF,	TAD	X16		/BY ORDER OF THE EMPEROR
006631  3015		DCA	CHRPTR		/MARIO DE NOBILI
006632  1015	ENDLNF,	TAD	CHRPTR
006633  3016		DCA	X16
006634  1015		TAD	CHRPTR
006635  3010		DCA	X10
006636  1373		TAD	(-102
006637  3111		DCA	CNT72
006640  1372		TAD	(-6
006641  3042		DCA	NCHARS
006642  6212	GET6F,	CIF	10		/**
006643  4577		JMS I	[ICHAR
006644  5230		JMP	SKPCMF
006645  1377		TAD	(-211
006646  7640		SZA CLA
006647  5257		JMP	NOTABF
006650  1371		TAD	(240
006651  3415		DCA I	CHRPTR
006652  2042		ISZ	NCHARS
006653  5250		JMP	.-3
006654  1371		TAD	(240
006655  3040		DCA	CHAR
006656  5263		JMP	CCHEKF
006657  1040	NOTABF,	TAD	CHAR
006660  3415		DCA I	CHRPTR
006661  2042		ISZ	NCHARS
006662  5242		JMP	GET6F
006663  1410	CCHEKF,	TAD I	X10

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 40-1

006664  1370		TAD	(-303
006665  7640		SZA CLA
006666  5274		JMP	NOCMTF
006667  6212	SKPFL,	CIF	10		/**
006670  4577		JMS I	[ICHAR
006671  5230		JMP	SKPCMF
006672  7200		CLA
006673  5267		JMP	SKPFL
006674  1040	NOCMTF,	TAD	CHAR
006675  1367		TAD	(-240
006676  7650		SNA CLA
006677  5303		JMP	GOTFST
006700  1016	CCARDF,	TAD	X16
006701  3015		DCA	CHRPTR
006702  5200		JMP	RDFRST
006703  1015	GOTFST,	TAD	CHRPTR
006704  7041		CIA
006705  1366		TAD	(LINE+4
006706  3042		DCA	NCHARS
006707  1175		TAD	[LINE-1
006710  3015		DCA	CHRPTR
006711  4571		JMS I	[SAVECP
006712  1365		TAD	(HDRLST-1
006713  3010		DCA	X10		/PREPARE TO SEARCH THE LIST
006714  6211	CLOOP1,	CDF 10			/(FNC NAMES UP IN FLD 1)**
006715  1410		TAD I	X10		/OF LEGAL HEADER LINES
006716  6201		CDF
006717  7440		SZA			/CODE IS AS UNDER 'CMDLUP'
006720  5331		JMP	CLOOP2
006721  7244		CLA CMA RAL
006722  1014		TAD	STACK
006723  3014		DCA	STACK
006724  6211		CDF	10		/**
006725  1410		TAD I	X10
006726  6201		CDF
006727  3044		DCA	TEMP
006730  5444		JMP I	TEMP
006731  3044	CLOOP2,	DCA	TEMP
006732  4563		JMS I	[GET2C
006733  5356		JMP	BADCMF
006734  7041		CIA
006735  1044		TAD	TEMP
006736  7650		SNA CLA
006737  5314		JMP	CLOOP1
006740  6211	SEARCH,	CDF	10		/**
006741  1410		TAD I	X10
006742  6201		CDF
006743  7640		SZA CLA
006744  5340		JMP	SEARCH
006745  2010		ISZ	X10
006746  4565		JMS I	[RESTCP
006747  2014		ISZ	STACK
006750  2014		ISZ	STACK
006751  6211		CDF	10		/**
006752  1410		TAD I	X10

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 40-2

006753  6201		CDF
006754  7440		SZA
006755  5331		JMP	CLOOP2
006756  4565	BADCMF,	JMS I	[RESTCP		/NOT A FUNCTION OR SUBROUTINE
006757  5764		JMP I	(LINE1		/SO GO TO MAIN PART OF COMPILER
006760  4544	BADDIE,	JMS I	[MESSAG		/SOMETHING MISSING FROM SYS
006761  0323		323			/S
006762  0331		331			/Y

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 41

		/ ANALYZE PROGRAM HEADER
006764  0307
006765  2377
006766  6304
006767  7540
006770  7475
006771  0240
006772  7772
006773  7676
006774  6570
006775  0211
006776  0027
006777  7567
	7000		PAGE
007000  7240	SUBRTN,	CLA CMA			/SET TO -1 FOR SUBR
007001  5217		JMP	XXXFUN+1
007002  1377	REAFUN,	TAD	(102		/SET TYPE TO REAL
007003  3027		DCA	TYPE
007004  5216		JMP	XXXFUN
007005  7001	LOGFUN,	IAC			/SET TYPE OF FUN
007006  7001	DBLFUN,	IAC			/WITH DOUBLEMINT GUM !
007007  7001	CMPFUN,	IAC
007010  7001		IAC
007011  1376	INTFUN,	TAD	(101
007012  3027		DCA	TYPE
007013  4556		JMS I	[CHECKC		/LOOK FOR 'N'
007014  7462		-316
007015  5315		JMP	BADBGN
007016  7201	XXXFUN,	CLA IAC
007017  3103		DCA	FUNCTN		/SET SWITCH
007020  6211		CDF	10		/1.05/ KILL ENTRY FOR 'MAIN'
007021  3775		DCA I	(ALIST+14	/1.05/ BUT DO IT BEFORE THE M BUCKET
007022  6201		CDF			/1.05/ CONTAINS ANYTHING USEFULL
007023  4577		JMS I	[GETNAM		/GET FUNC/SUBR NAME
007024  5315		JMP	BADBGN
007025  4554		JMS I	[LOOKUP		/PUT INTO SYMBOL TABLE
007026  3101		DCA	PROGNM
007027  1101		TAD	PROGNM		/SET UP TYPE
007030  7001		IAC
007031  3044		DCA	TEMP
007032  1014		TAD	STACK
007033  3012		DCA	X12		/SAVE POINTER
007034  3045		DCA	TEMP2		/ZERO ARG COUNTER
007035  6211		CDF	10
007036  1027		TAD	TYPE		/PUT IN THE TYPE BITS
007037  1374		TAD	(1000
007040  3444		DCA I	TEMP
007041  6201		CDF
007042  4556		JMS I	[CHECKC		/LOOK OFR (
007043  7530		-250
007044  5312		JMP	ISITFN		/IS IT A FUNCTION ?
007045  4577	ARGLUP,	JMS I	[GETNAM		/GET THE ARG
007046  5315		JMP	BADBGN
007047  4554		JMS I	[LOOKUP
007050  7001		IAC

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 41-1

007051  3044		DCA	TEMP		/ADDR OF TYPE WORD
007052  6211		CDF	10
007053  1444		TAD I	TEMP
007054  7640		SZA CLA
007055  5315		JMP	BADBGN		/ALREADY AN ARG
007056  1373		TAD	(20
007057  3444		DCA I	TEMP
007060  6201		CDF
007061  7040		CMA
007062  1044		TAD	TEMP		/OUTPUT ADDR OF ARG
007063  4561		JMS I	[PUSH
007064  2045		ISZ	TEMP2		/KEEP COUNT
007065  4560		JMS I	[COMARP		/LOOK FOR , OR )
007066  5315		JMP	BADBGN		/NEITHER
007067  5245		JMP	ARGLUP		/,
007070  1045		TAD	TEMP2		/) HOW MANY ARGS ?
007071  6211		CDF	10
007072  3413		DCA I	NEXT		/INTO ARG LIST
007073  1045		TAD	TEMP2
007074  7041		CIA
007075  3045		DCA	TEMP2
007076  1013		TAD	NEXT		/SAVE ADDR OF ARG LIST
007077  3102		DCA	ARGLST
007100  6201		CDF
007101  1012		TAD	X12		/RESTORE THE STACK
007102  3014		DCA	STACK
007103  1412	MOVARG,	TAD I	X12		/PUT ARGS INTO ARG LIST
007104  6211		CDF	10
007105  3413		DCA I	NEXT
007106  6201		CDF
007107  2045		ISZ	TEMP2
007110  5303		JMP	MOVARG
007111  5564		JMP I	[NEXTST		/DO NEXT LINE
	0027		TYPE=WORD6
007112  1103	ISITFN,	TAD	FUNCTN		/IS IT A FUNCTION
007113  7750		SPA SNA CLA		/WITH NO ARGS ?
007114  5564		JMP I	[NEXTST		/NO, WE'RE OK
007115  4576	BADBGN,	JMS I	[ERMSG
007116  2010		2010
007117  5564		JMP I	[NEXTST
007120  4556	BDATA,	JMS I	[CHECKC		/LOOK FOR A
007121  7477		-301
007122  5315		JMP	BADBGN
007123  7144		CLL CMA RAL		/SET FUNCTION SWITCH
007124  3103		DCA	FUNCTN		/2.02/ STORE IT DUMMY!!
007125  1372		TAD	(BDLIST-1	/POINTER TO LIST OF PATCHES
007126  3010		DCA	X10
007127  6211	BDLOOP,	CDF	10
007130  1410		TAD I	X10		/GET PATCH LOCATION
007131  6201		CDF
007132  7450		SNA
007133  5564		JMP I	[NEXTST		/NO MORE PATCHES
007134  3044		DCA	TEMP		/SAVE PATCH ADDRESS
007135  1340		TAD	BADJMP		/GET ERROR JUMP
007136  3444		DCA I	TEMP		/STORE IT

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 41-2

007137  5327		JMP	BDLOOP		/LOOP
007140  5524	BADJMP,	JMP I	[BDERR

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 42

		/ INITIAL SYMBOL TABLE
007172  0112
007173  0020
007174  1000
007175  0037
007176  0101
007177  0102
000124  2364
000125  0017
000126  7430
000127  2137
000130  3310
000131  0247
000132  7531
000133  3301
000134  3453
000135  2702
000136  5000
000137  3403
000140  0036
000141  3745
000142  2001
000143  7524
000144  3543
000145  0077
000146  3726
000147  2231
000150  0007
000151  4317
000152  0063
000153  2400
000154  2600
000155  0435
000156  3347
000157  4442
000160  1545
000161  4200
000162  4034
000163  4213
000164  0437
000165  1064
000166  3000
000167  4000
000170  4064
000171  3737
000172  1402
000173  4231
000174  1130
000175  6277
000176  4015
000177  5600
	0001		FIELD	1
	2020		*2020
			NOPUNC
	0020		*20

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 42-1

			ENPUNC
010020  0000		0
010021  0111	BLNKCN,	111;0			/BLANK COMMON SLOT
010022  0000
010023  0000	ALIST,	0;0;0;0;0;0;0;0;0;0;0;0;MAIN;0;0;0;0;0;0;0;0;0;0;0;0;0
010024  0000
010025  0000
010026  0000
010027  0000
010030  0000
010031  0000
010032  0000
010033  0000
010034  0000
010035  0000
010036  0000
010037  0105
010040  0000
010041  0000
010042  0000
010043  0000
010044  0000
010045  0000
010046  0000
010047  0000
010050  0000
010051  0000
010052  0000
010053  0000
010054  0000
010055  0000	HOLIST,	0
010056  0000	FPLIST,	0
010057  0000	DPLIST,	0
010060  0063	INTLST,	ONE
010061  0000	CMPLST,	0
010062  0000	SNLIST,	0
010063  0070	ONE,	THREE;0;1;2000;0
010064  0000
010065  0001
010066  2000
010067  0000
010070  0075	THREE,	SIX;0;2;3000;0
010071  0000
010072  0002
010073  3000
010074  0000
010075  0000	SIX,	0;0;3;3000;0
010076  0000
010077  0003
010100  3000
010101  0000
010102  0000	TRUE,	0;0145;0
010103  0145
010104  0000
010105  0000	MAIN,	0;1000;0;0111;1600

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 42-2

010106  1000
010107  0000
010110  0111
010111  1600
010112  0000	FREE,	0

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 43

		/ BLOCK DATA PATCH LIST
010113  2200	BDLIST,	IF			/BLOCK DATA PATCH LIST
010114  2552		DOUBLE
010115  2300		DO
010116  0501		GOTO
010117  2240		CALL
010120  1121		READ
010121  5156		REWIND
010122  2542		ENDFIL
010123  1341		FORMAT
010124  1123		WRITE
010125  1363		BACKSP
010126  4335		ASSIGN
010127  2765		STOP
010130  1102		PAUZE
010131  1014		DFINFL
010132  1013		FIND
010133  0345		ITSAR
010134  0000		0

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 44

		/ INITIALIZATION
	2200		*2200
012200  7410	START,	SKP			/NON-CHAINED ENTRY POINT
012201  5206		JMP	.+5		/CCL ENTRY
012202  6213		CIF CDF 10		/START HERE
012203  4777		JMS I	(200		/COMMAND DECODE
012204  0005		5
012205  0624		0624			/DEFAULT EXT IS  .FT
012206  1736		TAD I	L7600		/IS AN OUTPUT FILE GIVEN ?
012207  7650		SNA CLA
012210  5320		JMP	MYFILE		/NO, USE FORTRN.TM
012211  1743	MOVOFN,	TAD I	OFNAME		/MOVE NAME INTO PAGE 0
012212  6201		CDF
012213  3744		DCA I	NAMEOF
012214  6211		CDF	10
012215  2344		ISZ	NAMEOF
012216  2343		ISZ	OFNAME
012217  2346		ISZ	OFNSIZ
012220  5211		JMP	MOVOFN
012221  1776	EXTEST,	TAD I	(7604		/SET DEFAULT EXTENSIONS
012222  7440		SZA
012223  5233		JMP	EXTSET
012224  1775		TAD I	(7643
012225  7510		SPA 
012226  5336		JMP	GETRA		/A WAS SET.USE RA
012227  0350		AND	L41		/CHECK FOR L+G
012230  7650		SNA	CLA
012231  1374		TAD	(0610		/USE RL
012232  1373		TAD	(1404		/USE LD
012233  3776	EXTSET,	DCA I	(7604
012234  1776		TAD I	(7604
012235  6201		CDF	0
012236  3747		DCA I	NAMF
012237  6211		CDF	10
012240  1772		TAD I	(7611
012241  7450		SNA
012242  1371		TAD	(1423		/.LS FOR LISTING
012243  3772		DCA I	(7611
012244  1770		TAD I	(7616
012245  7450		SNA
012246  1367		TAD	(1520		/.MP FOR LOAD MAP
012247  3770		DCA I	(7616
012250  1766		TAD I	(7644		/GET /R SWITCH
012251  0365		AND	(-100-1		/CLEAR IT
012252  7000		NOP			/FOR FRTS
012253  3766		DCA I	(7644
012254  7201	EFILE,	CLA IAC			/OPEN PASS1 OUTPUT FILE
012255  4777		JMS I	(200
012256  0003		3
012257  2504	OBLOK,	TMPFL2
012260  0000	OSIZE,	0
012261  5341		JMP	OBAD		/BADDIE
012262  6201		CDF
012263  1257		TAD	OBLOK		/SAVE STARTING BLOCK
012264  3764		DCA I	(OUBLOK

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 44-1

012265  1257		TAD	OBLOK
012266  3763		DCA I	(OUFILE
012267  1260		TAD	OSIZE
012270  3762		DCA I	(OULEN
012271  1761		TAD I	(SBLOCK		/GET CCL-DEVICE
012272  3260		DCA	OSIZE		/TEMP
012273  6211		CDF	10
012274  1260		TAD	OSIZE		/ON CCL-DEVICE
012275  4777		JMS I	(200		/GET PASS2
012276  0002		2
012277  2510	SPASS2,	PASS2N
012300  0000		0
012301  5341		JMP	OBAD
012302  1260		TAD	OSIZE		/ON CCL-DEVICE
012303  4777		JMS I	(200
012304  0002		2
012305  2514	SP2O,	PAS2ON			/GET PASS2 OVERLAY
012306  0000		0
012307  5341		JMP	OBAD
012310  6201		CDF			/SAVE PASS2 AND PASS2O BLOCKS
012311  1277		TAD	SPASS2
012312  3760		DCA I	(PASS2B
012313  1305		TAD	SP2O		/SKIP FIRST BLOCK
012314  7001		IAC			/ITS THE CORE TABLE
012315  3757		DCA I	(PASS2O
012316  6202		CIF
012317  5756		JMP I	(INITLN		/GO START COMPILE
		/------------------------------------------------------
012320  6201	MYFILE,	CDF			/PUT DEFAULT INTO 17600
012321  1745		TAD I	NAMOF
012322  3744		DCA I	NAMEOF
012323  1745		TAD I	NAMOF		/ALSO INTO PAGE 0
012324  6211		CDF	10
012325  3743		DCA I	OFNAME
012326  2345		ISZ	NAMOF
012327  2344		ISZ	NAMEOF
012330  2343		ISZ	OFNAME
012331  2346		ISZ	OFNSIZ
012332  5320		JMP	MYFILE
012333  7201		CLA IAC			/SET DEV TO SYS
012334  3736		DCA I	L7600
012335  5221		JMP	EXTEST		/GO OPEN FILE
		L7600,
012336  7600	GETRA,	7600			/CLA
012337  1355		TAD	(2201		/V3C USE RA
012340  5233		JMP	EXTSET

012341  6203	OBAD,	CIF CDF
012342  5754		JMP I	(BADDIE

012343  7601	OFNAME,	7601			/IGNORE DEVICE (ALWAYS USE SYS)
012344  0061	NAMEOF,	TMPFIL+4
012345  0055	NAMOF,	TMPFIL
012346  7775	OFNSIZ,	-3
012347  0064	NAMF,	TMPFIL+7

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 44-2

012350  0041	L41,	41
012354  6760
012355  2201
012356  6400
012357  0076
012360  1540
012361  7776
012362  1424
012363  0077
012364  1436
012365  7677
012366  7644
012367  1520
012370  7616
012371  1423
012372  7611
012373  1404
012374  0610
012375  7643
012376  7604
012377  0200
	2400		PAGE

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 45

		/ PROGRAM HEADER LIST
012400  1116	HDRLST,	TEXT	'INTEGERFUNCTIO'
012401  2405
012402  0705
012403  2206
012404  2516
012405  0324
012406  1117
012407  0000
012410  7011		INTFUN
012411  2205		TEXT	'REALFUNCTION'
012412  0114
012413  0625
012414  1603
012415  2411
012416  1716
012417  0000
012420  7002		REAFUN
012421  0317		TEXT	'COMPLEXFUNCTIO'
012422  1520
012423  1405
012424  3006
012425  2516
012426  0324
012427  1117
012430  0000
012431  7007		CMPFUN
012432  0417		TEXT	'DOUBLEPRECISIONFUNCTIO'
012433  2502
012434  1405
012435  2022
012436  0503
012437  1123
012440  1117
012441  1606
012442  2516
012443  0324
012444  1117
012445  0000
012446  7006		DBLFUN
012447  1417		TEXT	'LOGICALFUNCTIO'
012450  0711
012451  0301
012452  1406
012453  2516
012454  0324
012455  1117
012456  0000
012457  7005		LOGFUN
012460  0625		TEXT	'FUNCTION'
012461  1603
012462  2411
012463  1716
012464  0000
012465  7016		XXXFUN

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 45-1

012466  2325		TEXT	'SUBROUTINE'
012467  0222
012470  1725
012471  2411
012472  1605
012473  0000
012474  7000		SUBRTN
012475  0214		TEXT	'BLOCKDAT'
012476  1703
012477  1304
012500  0124
012501  0000
012502  7120		BDATA
012503  0000		0
012504  0617	TMPFL2,	FILENAME FORTRN.TM
012505  2224
012506  2216
012507  2415
012510  2001	PASS2N,	FILENAME PASS2.SV
012511  2323
012512  6200
012513  2326
012514  2001	PAS2ON,	FILENAME PASS2O.SV
012515  2323
012516  6217
012517  2326

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 46

		/ PS-8 FILE INPUT ROUTINES
		/NEED TWO PAGES BEC. MOVING ICHAR OUT OF FIELD 1 REQUIRES
		/ALOT OF FIELD DIDDLING.
	5400		*5400
015400  1377	MORCHR,	TAD	(214		/FIX CHAR
015401  6201		CDF	0		/**
015402  3613		DCA I	QCHAR
015403  6211		CDF	10
015404  1776		TAD I	(ICHAR
015405  7001		IAC			/UPDATE ADDR
015406  3212		DCA	TCHAR
015407  6203		CIF CDF	0
015410  1613		TAD I	QCHAR		/RETURN VALUE IN AC
015411  5612		JMP I	TCHAR
015412  0000	TCHAR,	0
015413  0040	QCHAR,	CHAR
		/ EXTENDED OPERATOR LIST
015414  7777	OPRLST,	-01;-1604;ANDOPR
015415  6174
015416  4432
015417  7761		-17;-2200;OROPR
015420  5600
015421  4434
015422  7773		-05;-2100;EQOPR
015423  5700
015424  4416
015425  7762		-16;-0500;NEOPR
015426  7300
015427  4420
015430  7771		-07;-0500;GEOPR
015431  7300
015432  4422
015433  7771		-07;-2400;GTOPR
015434  5400
015435  4424
015436  7764		-14;-0500;LEOPR
015437  7300
015440  4426
015441  7764		-14;-2400;LTOPR
015442  5400
015443  4430
015444  7750		-30;-1722;XOROPR
015445  6056
015446  4436
015447  7773		-05;-2126;EQVOPR
015450  5652
015451  4440
015452  0000		0
		/ EXPONENT TABLE
015453  0004	PETABL,	0004;2400;0000		/1E1
015454  2400
015455  0000
015456  0000		0000;0000;0000
015457  0000
015460  0000

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 46-1

015461  0007		0007;3100;0000		/1E2
015462  3100
015463  0000
015464  0000		0000;0000;0000
015465  0000
015466  0000
015467  0016		0016;2342;0000		/1E4
015470  2342
015471  0000
015472  0000		0000;0000;0000
015473  0000
015474  0000
015475  0033		0033;2765;7020		/1E8
015476  2765
015477  7020
015500  0000		0000;0000;0000
015501  0000
015502  0000
015503  0066		0066;2160;6744		/1E16
015504  2160
015505  6744
015506  6770		6770;1000;0
015507  1000
015510  0000
015511  0153		0153;2356;1326		/1E32
015512  2356
015513  1326
015514  6501		6501;2670;2655
015515  2670
015516  2655
015517  0325		0325;3023;6017		/1E64
015520  3023
015521  6017
015522  5117		5117;7747;6466
015523  7747
015524  6466
015525  0652		0652;2235;6443		/1E128
015526  2235
015527  6443
015530  7114		7114;0164;6145
015531  0164
015532  6145
015533  1523		1523;2523;7565		/1E256
015534  2523
015535  7565
015536  7734		7734;7374;7357
015537  7374
015540  7357
015541  3245		3245;3430;6320		/1E512
015542  3430
015543  6320
015544  2565		2565;1407;2176
015545  1407
015546  2176
015547  0211	ENDSTM,	211;"E;"N;"D;215;211;215;232	/V3C

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 46-2

015550  0305
015551  0316
015552  0304
015553  0215
015554  0211
015555  0215
015556  0232
		/FAKE END STATEMENT USED IF PROGRAM HAS NONE

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 47

015576  5600
015577  0214
	5600		PAGE

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 48

		/MAIN PART OF OS/8 INPUT ROUTINES

015600  0000	ICHAR,	0			/READ CHAR FROM INPUT FILE
015601  6211		CDF	10
015602  2250		ISZ	INJMP		/BUMP THREE WAY UNPACK SWITCH
015603  2320		ISZ	INCHCT
015604  5250	INJMPP,	JMP	INJMP
		/	CDF			**
015605  1317		TAD	INEOF		/DID LAST READ YEILD END OF FILE ?
015606  7650		SNA CLA
015607  5212		JMP	INGBUF		/NO, DO ANOTHER READ
015610  4320	GETNEW,	JMS	INNEWF		/OPEN A NEW INPUT FILE
015611  5243		JMP	ENDIN		/END OF INPUT
015612  1353	INGBUF,	TAD	INCTR		/BUMP RECORD COUNTER
015613  7101		CLL IAC
015614  7420		SNL
015615  3353		DCA	INCTR		/RESTORE IF IT HASN'T OVERFLOWED
015616  7430		SZL
015617  2317		ISZ	INEOF		/SET END OF FILE SWITCH
015620  6211		CDF	10		/**
015621  6202		CIF	0		/**
015622  4733		JMS I	INHNDL		/DO THE READ
015623  0210		0210			/ONE BLOCK TO FIELD 1
015624  6600	INBUFP,	INBUF
015625  0000	INREC,	0
015626  5237		JMP	INERR		/HANDLER ERROR
015627  2225	INBREC,	ISZ	INREC		/BUMP RECORD NUMBER
015630  1224		TAD	INBUFP		/RESET BUFFER POINTER
015631  3355	SVIBPT,	DCA	INPTR		/V3C
015632  1377		TAD	(-601		/SET CHAR COUNT
015633  3320		DCA	INCHCT
015634  1204		TAD	INJMPP		/RESET THREE WAY JUMP SWITCH
015635  3250		DCA	INJMP
015636  5201		JMP	ICHAR+1		/GO AGAIN
015637  2317	INERR,	ISZ	INEOF		/EITHER EOF OR BADDIE
015640  7700		SMA CLA
015641  5227		JMP	INBREC		/END OF FILE, DO NEXT FILE
015642  5245		JMP	TERR		/INPUT ERROR, GIVE I F AND EXIT
015643  1376	ENDIN,	TAD	(ENDSTM		/V3C IF NO END STATEMENT, FORCE ONE
015644  5231		JMP	SVIBPT

		/ENDIN,	TAD	INCALL		/END OF INPUT IS USR IN CORE ?
		/	TAD	(-200
		/	CIF	0		/**
		/	SZA CLA
		/	JMP I	(ENDX		/NO, ITS END OF PROG
015645  4775	TERR,	JMS I	(MESSAG		/YES, BAD INPUT. WAS SQ.BRCK**
015646  0311		311
015647  0306		306
015650  7402	INJMP,	HLT			/3 WAY CHAR UNPACK BRANCH
015651  5272		JMP	ICHAR1
015652  5266		JMP	ICHAR2
015653  1204	ICHAR3,	TAD	INJMPP		/RESET JUMP SWITCH
015654  3250		DCA	INJMP
015655  1755		TAD I	INPTR

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 48-1

015656  0374		AND	(7400		/COMBINE THE HIGH ORDER BITS
015657  7112		CLL RTR			/OF THE TWO WORDS
015660  7012		RTR
015661  1315		TAD	INTMP		/TO FORM THE THIRD CHAR
015662  7012		RTR
015663  7012		RTR
015664  2355		ISZ	INPTR		/BUMP WORD POINTER
015665  5273		JMP	ICHAR1+1	/DO SOME COMMON STUFF
015666  1755	ICHAR2,	TAD I	INPTR		/SAVE THE HIGH ORDER BITS
015667  0374		AND	(7400
015670  3315		DCA	INTMP		/FOR THE THIRD CHAR
015671  2355		ISZ	INPTR		/GO TO THE SECOND WORD
015672  1755	ICHAR1,	TAD I	INPTR		/GET THE LOW 8 BITS
		/	CDF
015673  0373		AND	(177		/AND I MEAN ONLY 8 !!
015674  7450		SNA			/V3C YOU WERE WRONG - YOU MEANT ONLY 7
015675  5201		JMP	ICHAR+1
015676  1372		TAD	(-32		/IS IT ^Z (END OF FILE)
015677  7450		SNA
015700  5210		JMP	GETNEW		/YES, LOOK FOR THE NEXT FILE
015701  1371		TAD	(232-212
015702  7450		SNA
015703  5201		JMP	ICHAR+1		/IGNORE LINE FEEDS
015704  1370		TAD	(212-215
015705  7450		SNA
015706  5313		JMP 	ICHARN		/RETURN ON CARRIAGE RETURN **
015707  7001		IAC
015710  7450		SNA
015711  5201		JMP	ICHAR+1		/IGNORE FORM FEEDS
015712  5767		JMP I	(MORCHR		/**
015713  6203	ICHARN,	CIF CDF	0
015714  5600		JMP I	ICHAR
015715  0000	INTMP,	0
015716  7617	INFPTR,	7617			/POINTER TO INPUT FILE LIST
015717  0001	INEOF,	1
		INCHCT,
015720  7777	INNEWF,	-1			/FETCH HANDLER FOR NEXT FILE
015721  6201		CDF	0		/**
015722  1366		TAD	(INDEVH+1		/THIS IS WHERE IT GOES **
015723  3333		DCA	INHNDL
015724  6211		CDF	10
015725  1716		TAD I	INFPTR		/GET NEXT INPUT FILE INFO
015726  7450		SNA
015727  5720		JMP I	INNEWF		/NO MORE FILES
015730  6211		CDF	10		/WAS CIF 10**
015731  4754		JMS I	INCALL		/CALL MONITOR
015732  0001		1			/FETCH HANDLER
015733  0000	INHNDL,	0			/ENTRY ADDR GOES HERE
015734  5242		JMP	INERR+3		/THIS CAN'T HAPPEN HERE
015735  1716		TAD I	INFPTR		/GET LENGTH
015736  0365		AND	(7760
015737  7440		SZA			/A ZERO HERE MEANS >=256 BLOCKS
015740  1364		TAD	(17		/PUT IN SOME MORE BITS
015741  7132		CLL CML RTR
015742  7012		RTR

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 48-2

015743  3353		DCA	INCTR		/STORE LENGTH OF FILE
015744  2316		ISZ	INFPTR
015745  1716		TAD I	INFPTR		/GET STARTING RECORD NUMBER
015746  3225		DCA	INREC
015747  2316		ISZ	INFPTR
015750  3317		DCA	INEOF		/CLEAR EOF FLAG
015751  2320		ISZ	INNEWF
015752  5720		JMP I	INNEWF
015753  0000	INCTR,	0
015754  0200	INCALL,	200			/CHANGED TO 7700 AFTER FIRST TIME
015755  0000	INPTR,	0
015764  0017
015765  7760
015766  7201
015767  5400
015770  7775
015771  0020
015772  7746
015773  0177
015774  7400
015775  3543
015776  5547
015777  7177
	6000		PAGE

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 49

		/ KEYWORD LIST
016000  6672	CMDLST,	-1106;0;IF		/IF
016001  0000
016002  2200
016003  7361		-0417
016004  5276		-2502
016005  6373		-1405
016006  5756		-2022
016007  7275		-0503
016010  6655		-1123
016011  6661		-1117;0;DOUBLE		/DOUBLE PRECISION
016012  0000
016013  2552
016014  7361		-0417;0;DO		/DO
016015  0000
016016  2300
016017  7061		-0717
016020  5361		-2417;0;GOTO		/GOTO
016021  0000
016022  0501
016023  7461		-0317
016024  6263		-1515
016025  6062		-1716;0;COMMON		/COMMON
016026  0000
016027  1232
016030  7461		-0317
016031  6260		-1520
016032  6373		-1405;0;COMPLE		/COMPLEX
016033  0000
016034  1217
016035  7461		-0317
016036  6154		-1624
016037  6662		-1116
016040  5273		-2505;0;NEXTST		/CONTINUE
016041  0000
016042  0437
016043  7477		-0301
016044  6364		-1414;0;CALL		/CALL
016045  0000
016046  2240
016047  5573		-2205
016050  7664		-0114;0;REAL		/REAL
016051  0000
016052  1211
016053  5573		-2205
016054  7674		-0104;0;READ		/READ
016055  0000
016056  1121
016057  5573		-2205
016060  5067		-2711
016061  6174		-1604;0;REWIND		/REWIND
016062  0000
016063  5156
016064  5573		-2205
016065  5353		-2425

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 49-1

016066  5562		-2216;0;RETURN		/RETURN
016067  0000
016070  1541
016071  7262		-0516
016072  7372		-0406
016073  6664		-1114;0;ENDFIL		/ENDFILE
016074  0000
016075  2542
016076  7262		-0516;0;XEND		/END
016077  0000
016100  1446
016101  7367		-0411
016102  6273		-1505
016103  6155		-1623
016104  6661		-1117;0;DIMENS		/DIMENSION
016105  0000
016106  1200
016107  7377		-0401
016110  5377		-2401;0;DATA		/DATA
016111  0000
016112  5641
016113  7161		-0617
016114  5563		-2215
016115  7654		-0124;0;FORMAT		/FORMAT
016116  0000
016117  1341
016120  5056		-2722
016121  6654		-1124;0;WRITE		/WRITE
016122  0000
016123  1123
016124  7257		-0521
016125  5267		-2511
016126  5177		-2601
016127  6373		-1405
016130  6175		-1603;0;EQUIV		/EQUIVALENCE
016131  0000
016132  1600
016133  7373		-0405
016134  7167		-0611
016135  6173		-1605
016136  7167		-0611
016137  6373		-1405;0;DFINFL		/DEFINEFILE
016140  0000
016141  1014
016142  6662		-1116
016143  5373		-2405
016144  7073		-0705;0;INTEGE		/INTEGER
016145  0000
016146  1072
016147  6361		-1417
016150  7067		-0711
016151  7477		-0301;0;LOGICA		/LOGICAL
016152  0000
016153  1561
016154  7250		-0530

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 49-2

016155  5373		-2405
016156  5562		-2216
016157  7664		-0114;0;EXTERN		/EXTERNAL
016160  0000
016161  1334
016162  7577		-0201
016163  7465		-0313
016164  5460		-2320
016165  7675		-0103;0;BACKSP		/BACKSPACE
016166  0000
016167  1363
016170  7655		-0123
016171  5467		-2311
016172  7062		-0716;0;ASSIGN		/ASSIGN
016173  0000
016174  4335
016175  5777		-2001
016176  5255		-2523;0;PAUZE		/PAUSE
016177  0000
016200  1102
016201  5454		-2324
016202  6060		-1720;0;STOP		/STOP
016203  0000
016204  2765
016205  7167		-0611
016206  6174		-1604;0;FIND		/FIND
016207  0000
016210  1013
016211  0000		0			/END OF LIST

	6400		PAGE
	0001		FIELD 1
	2200		*START
			$

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 50

AC     0033      CCARDF 6700      DIMENS 1200      ENDSTM 5547
ACO    0030      CCHECK 0265      DIMGET 2034      ENDX   1455
ADDOPR 4400      CCHEKF 6663      DIMLUP 3460      ENTERN 2655
AGO2OP 0061      CCTEMP 3361      DIMNUM 0067      ENTERV 2757
ALIST  0023      CGO2OP 0060      DITCNT 4667      EOCL   1277
AL1    5344      CHAR   0040      DIVOPR 4406      EOHD   6126
ANDOPR 4432      CHECKC 3347      DLOOP2 6000      EOL    2540
ANORM  5463      CHKCOM 6423      DM74   4672      EOLCOD 0037
ARGLST 0102      CHKNAM 2620      DNORM  4676      EORD   5137
ARGLUP 7045      CHKSGN 5126      DNOTQ2 5745      EQLOOP 1641
ARGSOP 0036      CHKVAL 2730      DO     2300      EQOPR  4416
ARTHIF 0047      CHRPTR 0015      DOADD  4675      EQTEMP 0071
AR1    5316      CKCTLC 1130      DOBEGN 0051      EQUCOM 1700
ASFDEF 0035      CKEOPR 3650      DOCOMN 1261      EQUIV  1600
ASFERR 4161      CKNOT  3031      DODEC  5237      EQVLUP 1604
ASNGO2 0557      CLOOP1 6714      DOEND  0065      EQVOPR 4440
ASNOPR 0054      CLOOP2 6731      DOENDR 0437      ERCODE 0436
ASSIGN 4335      CMDLP2 0413      DOFINI 0046      ERMSG  4015
BACKSP 1363      CMDLST 6000      DOFUNY 1737      ERRCOD 0040
BACK1  4442      CMDLUP 0400      DOHOL  3226      ESIGN  5221
BADASN 4352      CMPFUN 7007      DOINDX 0106      ESWIT  0047
BADBGN 7115      CMPGO2 0511      DORET  2350      EXPDUN 3320
BADBIT 0105      CMPLST 0061      DOSIGN 5122      EXPLUP 5201
BADCAL 2275      CNT72  0111      DOSLAV 1703      EXPMUL 5263
BADCL  3153      COMARP 1545      DOSTOR 0070      EXPON  0054
BADCMD 0435      COMMON 1232      DOSTUF 2324      EXPOPR 4410
BADCMF 6756      COMNAM 1333      DOSWT  2231      EXPR   3000
BADCOM 1330      COMPIL 0321      DOUBLE 2552      EXTERN 1334
BADDEF 1061      COMPLE 1217      DO107  5342      EXTEST 2221
BADDIE 6760      COMREG 4600      DPLIST 0057      EXTSET 2233
BADDIM 2523      CONVLP 5020      DPLIT  3060      FILSIZ 1471
BADDO  2361      DAL1   4671      DPRDCT 0070      FIND   1013
BADEQU 1675      DAQUOT 1000      DPUSED 0112      FINDND 0624
BADEXP 3301      DARD1  0027      DPUSH  0023      FIXEXP 5223
BADFSS 3400      DAR1   4670      DQUOTE 5730      FIXNUM 3745
BADGO2 0565      DATA   5641      DREPTC 0064      FMTLUP 1346
BADH   3247      DATAER 5722      DSERES 0100      FMTOPR 0056
BADIF  2235      DATAFP 6056      D2     4662      FMTRD1 0025
BADIOL 0675      DATAST 0065      D3     4663      FMTWR1 0031
BADJMP 7140      DATA3  5675      D4     4664      FORMAT 1341
BADLST 2520      DATELM 0063      D5     4665      FPDIV  4600
BADOPR 3700      DATLUP 5644      D6     4666      FPDVLP 4612
BADRD  0675      DAWR1  0033      EFILE  2254      FPLIST 0056
BAKOPR 0055      DBLFUN 7006      ENDELM 0066      FPLIT  3054
BDATA  7120      DBLSLS 1320      ENDEXP 3310      FPMUL  5400
BDERR  2364      DECPT  0046      ENDFIL 2542      FPNUM  5111
BDLIST 0113      DEFFIL 0034      ENDFOP 0052      FPRTNE 5221
BDLOOP 7127      DEFLBL 0045      ENDGRP 1670      FREE   0112
BINRD1 0024      DFINFL 1014      ENDIN  5643      FSSBAD 4154
BINWR1 0030      DFNEG  4674      ENDIOL 0740      FUNCTN 0103
BLANKC 1324      DHLRTH 5552      ENDLIN 0231      GEOPR  4422
BLNKCN 0021      DHOLER 5725      ENDLNF 6632      GETC   4000
BUCKET 0021      DIGIT  4317      ENDNUM 4273      GETCWB 3726
CALL   2240      DIGTST 5073      ENDOPR 0044      GETDIM 2435
CCARD  0275      DIMAGN 2531      ENDOXT 1160      GETEXP 5215

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 50-1

GETNAM 5600      INJMPP 5604      L7700  1453      NOCMTF 6674
GETNEW 5610      INNEWF 5720      MAIN   0105      NOCODE 0041
GETRA  2336      INPTR  5755      MASTER 0073      NODIGT 4333
GETSLV 1627      INREC  5625      MAXHOL 0100      NODOND 0462
GETSS  2001      INTEGE 1072      MCOMA  1040      NOEORD 5153
GET2C  4213      INTEGR 5116      MESSAG 3543      NOLDRE 5077
GET6   0241      INTFUN 7011      MISARG 3156      NORMLP 5501
GET6F  6642      INTLST 0060      MMM240 0352      NOSS   3447
GOTFST 6703      INTMP  5715      MMM275 0355      NOTAB  0261
GOTLIN 0300      IOLIST 0614      MNUM   0074      NOTABF 6657
GOTO   0501      IOLMNT 0062      MORCHR 5400      NOTAR  0361
GOTOPR 3703      IOSTRT 0612      MORNAM 5627      NOTDIM 2534
GO2LUP 0521      ISITFN 7112      MOVARG 7103      NOTEXP 3625
GO2OPR 0057      ITRCNT 5552      MOVCNT 6455      NOTF   6051
GTOPR  4424      ITSAR  0345      MOVDIM 2505      NOTFSS 3600
G2CTMP 4200      IXINCL 6464      MOVOFN 2211      NOTFUN 3431
HCHAR  0051      IXLINE 0120      MOV1   6453      NOTHIS 3675
HCOUNT 3256      IXLINM 0121      MOV2   6454      NOTIOL 0713
HDLOOP 6106      IXLNP5 0117      MQ     0072      NOTMUL 3627
HDRLST 2400      IXM211 6473      MREAD  7757      NOTNUM 3076
HFIELD 3220      IXM240 6465      MSNGOP 4151      NOTOPR 4412
HOKIN2 2747      IXM303 6466      MULLUP 5426      NOTOUT 4030
HOLCHK 3064      IXRDFS 6463      MULOPR 4404      NOTQ2  3215
HOLCTR 3266      IX0240 6467      MUL12  2137      NOTSAM 2640
HOLDAT 6101      IX200  6470      MYFILE 2320      NOTSF  4127
HOLIST 0055      IX7600 6471      M12LUP 2144      NOTSM2 2742
HOOKIN 2644      IX7700 6474      M211   0114      NOTVAR 3050
HQUOTE 3200      IX7772 6472      M250   0602      NOWRIT 1416
ICHAR  5600      LASTHD 6133      M251   0760      NO6000 5517
ICHARN 5713      LEOPR  4426      M257   1243      NPTR   5640
ICHAR1 5672      LETEMP 4164      M6     0350      NQUOTD 6032
ICHAR2 5666      LETTER 3324      NAMEOF 2344      NSLAVE 0075
ICHAR3 5653      LEXPOK 4147      NAME1  6200      NUMBER 5000
IDOPAR 0737      LEXPR  4064      NAMF   2347      NUMELM 0043
IF     2200      LIFBGN 0050      NAMOF  2345      NXTDE  5703
IFCHEK 2231      LINE   6300      NCHARS 0042      NXTDGT 5155
IFLABL 2217      LINEAR 2071      NCMPLX 3267      N254   2335
IFLOOP 2212      LINENO 0007      NCNT   4452      N3SIZE 2701
IFSWIT 0053      LINE1  0307      NDIGIT 0050      OADD   4452
IGNORE 6456      LOGFUN 7005      NDONE  5624      OBAD   2341
INBREC 5627      LOGICA 1561      NEGFAC 5530      OBLK   1477
INBUF  6600      LOGIF  2224      NEOPR  4420      OBLOK  2257
INBUFP 5624      LOOK   2607      NEWOP  0022      OCOUNT 1401
INCALL 5754      LOOKUP 2600      NEXT   0013      OFNAME 2343
INCHCT 5720      LOOK2  2717      NEXTEL 2513      OFNSIZ 2346
INCTR  5753      LPIOL  0666      NEXTLN 0437      OLDN3  2700
INDEVH 7200      LSTLUP 2412      NEXTST 0437      OLDOP  0023
INEOF  5717      LTEMP  2702      NFCNT  5551      ONE    0063
INERR  5637      LTOPR  4430      NFLOOP 5536      OPAUZ  1112
INFPTR 5716      LUHOL  3252      NFPTR  5550      OPMAC  4673
INGBUF 5612      LUKUP2 2702      NIXTAB 6417      OPO    0037
INHNDL 5733      L200   1567      NLETR  3340      OPRAND 3043
INITLN 6400      L3     1476      NOARGP 1115      OPRLST 5414
INITLP 6404      L41    2350      NOCMNT 0271      OPRLUP 3655
INJMP  5650      L7600  2336      NOCMPD 6025      OPR8R  3403

/OS/8 FORTRAN F4 (PASS ONE)		  PAL8-V50X 06-MAR-92 PAGE 50-2

OPR8RL 3453      RESTCP 1064      THSNUM 0066      
OP1    0031      RETFN  3756      TLRETN 2540      
OP2    0032      RETOPR 0041      TLTEMP 0107      
OP3    0033      RETURN 1541      TMPFIL 0055      
OP4    0034      REWIND 5156      TMPFL2 2504      
OP5    0035      REWOPR 0042      TRUE   0102      
OP6    0036      RGETSS 2125      TRUFAL 4044      
OROPR  4434      RLOOKU 2635      TRYDEC 5056      
OSIZE  2260      RPIOL  0670      TRYE1  5102      
OUBLOK 1436      RTFMT  0763      TRYE2  5110      
OUBUF  7200      SAVECP 3737      TRYHOS 6066      
OUDUMP 1425      SBLOCK 7776      TRYIOE 0700      
OUERR  1443      SC     0034      TRYSTR 6143      
OUFILE 0077      SEARCH 6740      TRY1SS 2127      
OULEN  1424      SETBIT 0104      TTYOUT 4355      
OUPTR  1400      SFUDGE 1736      TW2    5456      
OUTOLD 3722      SHORTL 0256      TW3    5457      
OUTWRD 1402      SIGN   5016      TW4    5460      
OUT3WD 5750      SIX    0075      TW5    5461      
OWTEMP 0110      SKPCMF 6630      TW6    5462      
O1420  2000      SKPCOM 0222      TYPAGN 2526      
O200   2013      SKPEXP 5313      TYPE   0027      
PAKHOL 3233      SKPFL  6667      TYPLST 2400      
PAKLUP 5610      SKPFL2 6623      UMINUS 3040      
PARMM  3277      SKPLIN 0224      UMOPR  4414      
PASS2B 1540      SMLNUM 5200      UNOPR  3004      
PASS2N 2510      SNLIST 0062      VARDIM 3515      
PASS2O 0076      SNTEMP 4317      VDTEMP 3514      
PAS2ON 2514      SNUM   0052      VERS   0113      
PATCH  0001      SPASS2 2277      VERSON 0005      
PAUSOP 0022      SP2O   2305      WCLOSE 0032      
PAUZE  1102      SSFUN  3434      WORD1  0022      
PETABL 5453      SSLOOP 4132      WORD2  0023      
PNAME  2702      STACK  0014      WORD3  0024      
POP    4034      STACKS 4700      WORD4  0025      
POSEXP 5256      START  2200      WORD5  0026      
PRGSTK 0067      STCHEK 2667      WORD6  0027      
PROGNM 0101      STEP1  2355      WRITE  1123      
PSHDIM 3503      STKLVL 0020      XCTAL1 1145      
PUSH   4200      STMJMP 0122      XEND   1446      
PUSH2  3716      STMNUM 4231      XOCTAL 1140      
PUTDIM 2452      STMUL  2152      XOROPR 4436      
P211   0115      STOP   2765      XPAUZ  1111      
P240   0116      STOPOP 0053      XPURGE 0625      
QCHAR  5413      STOROP 0043      XSTORE 2263      
QUOTE  3342      SUBOPR 4402      XXXFUN 7016      
RCLOSE 0026      SUBRTN 7000      X10    0010      
RDFMT  0747      SVIBPT 5631      X11    0011      
RDFRST 6600      SVMSTR 1614      X12    0012      
RDLIST 0754      SVSLAV 1723      X16    0016      
RDLOOP 0200      TCHAR  5412      X17    0017      
RDWR   0600      TEMP   0044      ZEXP   5526      
READ   1121      TEMP2  0045      
REAFUN 7002      TERR   5645      
REAL   1211      THREE  0070      



ERRORS DETECTED: 0
LINKS GENERATED: 42