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