. CAN NOT BE HANDELED WITH OPTION LETTERS $(0) RES 50 PREQ +'COMP ' . FLAG FOR DESTROYED COMP* S,H2 B11,COMPX J $+2 J *COMPX COMPRX LMJ B11,GX J COMP1 ERROR NO SPECIFICATIONS TE,M A0,'(' J COMP2 SYNTAX ERROR COMP7 . LMJ B11,NGX6 +3 S A2,FLDSV TNE A2,('DAT ') J CDTA1 TNE A2,('ADR ') J COMPJ TNE A2,('CON ') J COMP11 TNE A2,('PRO ') REAL D.P. PROPAGATION J COMP17 TNE A2,('ALC ') 131K J COMP51 131K TNE A2,('GEN ') 131K J COMP53 131K TNE A2,('DEB ') J COMP60 TNE A2,('LIB ') . EXEC 8 LIBRARY FOR MACRO/INCLUDE. J COML1 TNE A2,('RET ') . RETN=NOP J RET TNE A2,('REL ') J COMRL TNE A2,('BAN ') J COMBK TE A2,('FLD ') J COMP3 UNKNOWN SPECIFICATION LMJ B11,GX J COMP2 SYNTAX ERROR TE,M A0,'=' J COMP2 COMPA LMJ B11,GX J COMP2 L,M A4,1 TE,M A0,'R' J COMP5 TZ,S1 COMPF1 TEST PREVIOUS USE OF OPTION J COMP6 DUPLICATE USE OF OPTION S,S1 A4,COMPF1 S,H2 A4,COMFL FLAG FOR REST OF COMPILER COMP4 LMJ B11,GX J COMP2 TE,M A0,')' J COMP2A COMP45 LMJ B11,GX J COMPX TE,M A0,',' J COMP2 J COMPRX COMP5 TE,M A0,'L' J COMP8 TZ,S1 COMPF1 J COMP6 DUMLICATE USE OF OPTIN S,S1 A4,COMPF1 SZ,H2 COMFL FLAG FOR REST OF COMPILER J COMP4 COMP8 TE,M A0,'Q' J COMP81 TZ,S2 COMPF1 J COMP6 S,S2 A4,COMPF1 L,M A4,01503 S,S2 A4,COMFL SSL A4,6 S,S1 A4,COMFL L A4,(1*/25) COMP80 OR A4,PARTBL+32 SET QUARTED WORD SENSITIVE S A5,PARTBL+32 J COMP4 COMP81 TE,M A0,'T' J COMP83 TZ,S2 COMPF1 J COMP6 S,S2 A4,COMPF1 L,M A4,01400 S,S2 A4,COMFL SSL A4,6 S,S1 A4,COMFL L A4,(1*/26) SET THIRD WORD SENSITIVE J COMP80 COMP83 TE,M A0,'A' J COMP3 UNKNOWN SPECIFICATION LMJ B11,NGX6 +2 TE A2,('BS ') J COMP3 SR,S3 R15,CRRELN FLD=ABS J COMP4 COMP2A TE,M A0,',' J COMP2 L A0,FLDSV TE A0,('FLD ') J COMP7 J COMPA CDTA1 LMJ B11,NGX6 +2 TE A2,('A= ') J COMP3 LMJ B11,NGX6 +3 TNE A2,('IBM ') J CDTA2 TNE A2,('CON ') J COMDCN DATA CONVERSION ALLOWED TE A2,('SHO ') J COMP3 LMJ B11,NGX6 +2 TE A2,('RT ') J COMP3 S,H2 A2,COMDT J COMP4 COMPJ LMJ B11,NGX6 +4 TE A2,('=IND ') J COMP3 S A2,CRUAL J COMP4 COMDCN S A2,CRCRDT SET FLAG TO ALLOW CONVERSION LMJ B11,GX J COMP2 TE,M A0,'V' J COMP2 J COMP4 COMP11 LMJ B11,NGX6 +5 TE A2,('=REAL ') J COMP3 S A2,CRCNVT J COMP4 COMP17 LMJ B11,NGX6 + 6 L,M B11,0 TNE A2,('P=RLON') L,M B11,1 TNE A2,('P=RLOF') L,M B11,2 TNE A2,('P=DPON') L,M B11,3 TNE A2,('P=DPOF') L,M B11,4 EX COMPTB,B11 J COMP4 COMPTB J COMP3 S,H1 R15,CRCOMP RLON SZ,H1 CRCOMP RLOF S,H2 R15,CRCOMP DPON SZ,H2 CRCOMP DPOF CDTA2 S,H1 A2,COMDT J COMP4 COMRL LMJ B11,NGX6 +6 TE A2,('N=NOMZ') J COMP3 SZ,S2 CRRELN DON'T GENERATE ADDS OF ZERO J COMP4 COMP51 LMJ B11,GX . SET FLAGS FOR DYNAMIC LOC CNTR ASSIGNMNT131K J COMP2 . EOS 131K SZ A1 131K TNE,M A0,'V' . GET INDEX TO COMP52 TABLE 131K L,M A1,1 131K TNE,M A0,'T' . TEMP L,M A1,2 131K TNE,M A0,'I' 131K L,M A1,3 131K TNE,M A0,'A' YNCNT L,M A1,4 YNCNT TNE,M A0,'C' . CONSTANTS L,M A1,5 JZ A1,COMP3 . UNKNOWN SPEC 131K LMJ B11,GX 131K J COMP2 . EOS 131K TE,M A0,'=' 131K J COMP2 . BAD SYNTAX 131K LMJ B11,GX 131K J COMP2 . EOS 131K SZ A2 131K TNE,M A0,'O' . GET INDEX TO EXEQUTE TABLE 131K L,M A2,1 131K TNE,M A0,'E' 131K L,M A2,2 131K JZ A2,COMP3 . UNKNOWN SPEC 131K EX $+1,A2 . SET FLAG IN CRALC 131K J COMP4 131K EX COMP52,A1 . ODD LOC COUNTER 131K COMP52 EX COMP52+5,A1 . EVEN LOC CNTR S,S3 A2,CRALC 131K S,S2 A2,CRALC 131K S,S1 A2,CRALC 131K S,S4 A2,CRALC YNCNT S,S5 A2,CRALC . CONSTANTS SZ,S3 CRALC 131K SZ,S2 CRALC 131K SZ,S1 CRALC 131K SZ,S4 CRALC DYNC SZ,S5 CRALC . CONSTANTS COMP53 LMJ B11,NGX6 131K + 6 131K TNE A2,('=NOTRA') J COP54 TNE A2,('=CMBNK') J COP59 TE A2,('=LARGE') 131K J COMP54 131L COMP55 . S,S6 A2,CR131K L A2,(0777777) 131K S A2,MAXD . MAX DIMENSION SIZE 131K J COMP4 131K COMP54 TE A2,('=LIBRY') 131L J COMP59 TZ CROWN S A2,CRLIBR . SET LIBRARY COMPATABILITY FLAG 131L L,M A2,1 131L S,S1 A2,TFDA$ . ENABLE $ SCAN 131L TZ CROWN J COMP55 J COMP4 COP54 S,S6 A2,CRAGDG INHIBIT SETTING NERU0 J COMP4 COP59 S,S1 A2,CRNCCB . SHOW ROUTINE WILL BE USED IN . A COMMON BANK J COMP4 COMP59 TE A2,('=SYMTB') TEST FOR GENERATING SYMBOL TABLE J COM59J S,S1 A2,CRDGSY J COMP4 COM59J TE A2,('=LNAME') J COM59K S,S6 A2,SCNBRK . FLAG FOR LONG NAMES J COMP4 COM59K TE A2,('=VARSQ') J COM59S S,S1 A2,CRVRSQ . FLAG FOR VARIABLE LENCTH SEQUENCE LMJ B11,GX J COMP2 . PREMATURE EOF TNE,M A0,'/' J $+3 . SCAN FOR VARIABLE NAME SZ FNXT REREAD LAST CHARACTER J COMP4 . SLJ TON$ LMJ B11,GIT . GET NAME OF VARIABLE FOR NU OF ARGS J COMP2 . PREMATURE EOF TE,M A2,3 . INSURE ITEM IS A VARIABLE J COMP2 . BAD NEWS LMJ B11,GLG1 . SEE IF IT IS SYM TABLE SHOULD NOT BE LMJ B11,SLTI . ENTER IN SYMBOL TABLE L,H1 A2,2,A1 . GET MODE AND TYPE FIELDS AND,M A2,7 JNZ A3,COMPVSA . BAD NEWS NOT A VARIABLE AND,M A2,070 . CHECK TYPE TG,M A3,020 . ONLY INTEGER UNASSIGNED AREOK J COMPVSA . BAD TYPE L,M A3,010 . SET AS INTEGER VARIABLE S,S3 A3,2,A1 S,S3 A3,3,A1 . GIVE A PHONY DEFINITION POINT TZ CRVRSY . TEST MULTIPLE VARSQ DIRECTIVES J COMPVSB S,H2 A1,CRVRSY . SHOW VARIABLE EXISTS J COMP4 . CONTINGUE SCANNIN COMPILER STATEMENT COMPVSA S,H2 A1,SYMV . SAVE FOR ERROR MESSAGE LMJ B11,PERR FORM6 031,132,SYMV J COMP4 COMPVSB LMJ B11,PERR FORM6 1,133,0 . MULTIPLE VARSQ DIRECTIVES J COMP4 COM59S TE A2,('=INSST') J COMP3 S,S3 A2,CRJOPT SET FLAG FOR SORTING GENERATED CODE J COMP4 COMP60 LMJ B11,NGX6 + 5 TE A2,('UG=ON ') J COMP3 S A2,CRDBUG J COMP4 RET LMJ B11,NGX6 +5 TE A2,('N=NOP ') J COMP3 S,S1 R15,CRFLGS J COMP4 . COMFIL* . AT THIS POINT A MACRO FILE CARD IS PROCESSED MACWRI S,H2 B11,COMPX MACWRI LMJ B11,GX MACWRI J COMP2 MACWRI TE,M A0,'(' MACWRI J COMP2 MACWRI . INITIALIZE FILE TABLE TO SEND TO F60 MACWRI DL A0,(' ') MACWRI DS A0,MWFLTB+1 SET FILE NAME MACWRI DS A0,MWFLTB+3 SET ELEMENT NAME MACWRI DS A0,MWFLTB+7 SET VERSION NAME MACWRI SZ,S2 MWFLTB CLEAR TYPE OF FILE MACWRI S A0,COMFLL FLAG FOR FILE STTEMENT MACWRI LMJ B11,SCEX GET FILE NUMBER MACWRI J COMP2 MACWRI S,S3 A3,MWFLTB MACWRI L A4,FILUN MACWRI S A3,FILUN MACWRI AN,M A4,1 MACWRI TLE A3,A4 MACWRI J COMFE1 NOT IN SEQUENCE MACWRI L A0,PARFLG MACWRI SZ PARFLG MACWRI TNE,M A0,')' MACWRI J COMFLA NO SPECIAL LIST INFO MACWRI TE,M A0,',' MACWRI J COMP2 BAD SYNTAX MACWRI LMJ B11,SCEX GET LIST INFO MACWRI J COMP2 BAD SYNTAX IN EXPRESSION MACWRI L A0,FILUN MACWRI S,S2 A3,MACWRI,A0 SAVE LIST INFO MACWRI L A0,PARFLG MACWRI COMFLA TE,M A0,')' MACWRI J COMP2 MACWRI J COML1 . GO PROCESS FILE NAME . THIS SECTION PARSES THE COMPILER BANK STATEMENT THAT IS USED TO FLOAT . COMPILER GENERATED CODE. . THE SYNTAX OF THIS STATEMENT IS AS FOLLOWS. . COMPILER (BANKN=XN,S) . N CAN HAVE THE VALUES I,V,T AND A . I IS AN INSTRUCTION . V IS VARIABLES . T IS TEMP . A IS ARRAY . XN CAN BE X1 TO X10 AND DESIGNATES A REGISTER TO FLOAT THE DESIGNATED . COUNTER ON. . S CAN HAVE TWO FORMS. . IT CAN HAVE THE LETTERS I,V,T,A,O,E WHICH SIGNIFIES THE START OF A . GIVEN COUNTER SHOULD BE SUBTRACTED FROM THE RELOCATION FOR EACH . INSTRUCTION UNDER THE NAMED COUNTER. . THE LETTERS O OR E SIGNIFIES THE LOWEST NUMBERED ODD OR EVEN COUNTER. . IF S STARTS WITH AN ASTERISK, THEN IT IS AN EXTERNAL NAME WHOSE . LOCATION WILL BE SUBTRACTED FROM EACH INSTRUCTION. . THIS COMMAND SETS THE TABLE BSTC1 WHICH HAS ENTRIES . BSTC2 INSTRUCTIONS . BSTC3 CONSTANTS . BSTC5 VARIABLES . BSTC6 ARRAYS . THE FORMAT OF THESE ENTRIES IS AS FOLLOWS . S1 IF NON ZERO IS REGISTER TO FLOAT ON . S2 IS TYPE OF H2: 0 IS COUNTER NUMBER: 1 IS EXTERNAL SYMBOL. . H2 IS EITHER COUNTER NUMBER OR SYM REF OF EXTERNAL SYMBOL. COMBK SZ A10 LMJ B11,NGX6 +3 TNE A2,('KI= ') L,M A10,2 INSTRUCTIONS TNE A2,('KV= ') L,M A10,5 VARIABLES TNE A2,('KT= ') L,M A10,3 . TEMP TNE A2,('KC= ') L,M A10,7 . CONSTANTS TNE A2,('KA= ') L,M A10,4 ARRAYS TNE,M A10,4 FORCE ARRAYS TO HAVE ADDRESS IN S,S4 A10,CR131K INDEX REGISTER FOR THIS OPTION JZ A10,COMP3 UNRECOGNIZED SYNTAX LMJ B11,GIT J COMP2 END OF STATEMENT TE,M A2,3 TES FOR VARIABLE J COMP3 UNRECOGNIZED SYNTAX TE,M A0,',' J COMP3 INVALID SEPARATOR L A3,GITV L,M R1,BCNT L A1,(1,0) SSL A3,18 TG A3,(0300000) AN A3,(0260000) CHANGE X TO E SE,H1 A3,REGNAM,*A1 J COMP3 UNRECOGNIZED BASE REGISTER L,H2 A0,REGNAM-1,A1 TG,M A0,11 TEST THAT REGISTER IS USABLE J COMP3 L B11,A10 S,S1 A0,BSTC1,B11 SET BASE REGISTER FOR PROPER COUNTER TNE,M A10,3 . FOR TEMP SET DBANK INSTS ALSO S,S1 A0,BSTC1+6 SZ,S1 N0RGTB+1,A0 . REMOVE FROM CONSIDERATION SZ,S2 N0RGTB+1,A0 LR FNXT,R8 DISCARD COMMA LMJ B11,GX J COMP2 END OF STATEMENT IS BAD TNE,M A0,'*' J COMBKX AN EXTERNAL SYMBOL SZ A9 TNE,M A0,'A' ARRAYS L,M A9,5 TNE,M A0,'I' L,M A9,3 TNE,M A0,'C' L,M A9,8 . CONSTANTS TNE,M A0,'V' VARIABLES L,M A9,6 TNE,M A0,'T' CONSTANTS AND TEMPS L,M A9,4 TNE,M A0,'O' ODD COUNTER L,M A9,2 TNE,M A0,'E' EVEN L,M A9,1 JZ A9,COMP3 BAD SYNTAX AN,M A9,1 L B11,A10 S,H2 A9,BSTC1,B11 LOC CNTR TO BIAS WITH J COMP4 COMBKX . S R15,EXTDUP . ALLOW SAME EXTERNAL SYMBOL ON MORE THA LMJ B11,EXT . ONE BANK CARDS S,H1 B1,3,A1 . MARK AS IF DEFINED L B11,A10 S,H2 A1,BSTC1,B11 SYM REF OF EXTERNAL BIAS SR,S2 R15,BSTC1,B11 FLAG FOR EXTERNAL REFERENCE TE,M A10,3 J $+3 S,H2 A1,BSTC1+6 S,S2 R15,BSTC1+6 . MARK AS EXTERNAL STMBOL SZ FNXT J COMP4 COML1 . THIS SECTION PROCESSES (LIB=FILENAME<,...>). FILES . SPECIFIED ARE ASSIGNED HERE AND REMAIN SO THROUGHOUT PHASE 1. . LIBRARIES WILL BE SEARCHED IN ORDER: TPF$, 'LIB=' FILES IN . ORDER OF APPEARANCE, AND FINALLY SYS$*RLIB$. . LMJ B11,GX J COMP2 EOS TE,M A0,'=' J CFLAM DYNC LMJ B11,GX DYNC J COMP2 EQUALS MUST BE FOLLOWED BY SOMETHING DYNC SZ FNXT IF EQUALF FOLLWED BY COMMA THEN THERE IS DYNC TNE,M A0,',' ONLY AN ELEMENT NO FILE DYNC J CMFLK DYNC COMLN L,M A6,48 CHAR COUNT L,M A7,COMFNM NAME BUFFER PTR. SZ A9 PAREN COUNT SZ A10 KEY FIELD CHAR COUNT L,M A0,7 BLANK FILENAME OUT. L A2,(' ') S A2,COMFNM,A0 JGD A0,$-1 L,M A8,5 SHIFT COUNT COMLNC LMJ B11,GX J COMFLJ TEST FOR FILE STATEMENT MACWRI DL A2,(00100002040040000000000) DSL A2,0,A0 IDENTIFY CHARACTER JNB A3,COMLS JMP IF NORMAL CHARACTER TNE,M A0,',' J COMLE COMMA, END OF NAME. TNE,M A0,'/' L,M A10,7 IGNORE () FOR NEXT 6 CHAR. JGD A10,COMLS TNE,M A0,'(' A,M A9,1 BUMP PAREN LEVEL UP (CYCLE) TE,M A0,')' J COMLS JGD A9,COMLS BUMP PAREN LEVEL DOWN J COMLE ZERO-LEVEL RIGHT PAREN. END. COMLS JGD A6,$+4 STORE THE CHARACTER. L,M A1,COMLD1 FILENAME TOO LONG. L,M A10,' ' FORCE FLUSH OF STRING J COMLDG EDIT DIAGNOSTIC. LSSL A11,6 A A11,A0 JGD A8,COMLNC L A0,A7 WORD FINISHED. S A11,0,A0 A,M A7,1 J COMLNC-1 COMLE L A10,A0 SAVE TERMINATING CHAR. LSSL A11,6 FINISH OFF LAST WORD. A,M A11,' ' JGD A8,$-2 L A0,A7 S A11,0,A0 TNE,M A6,48 ZERO LENGTH OK, J COMLNX SKIP PROCESSING. . . L A6,USERFC USER FILE INDEX. A,M A6,1 TE,M A6,USERFM J COML2 LMJ B11,PERR EXCEEDED MAX FILES. FORM6 021,115,(USERFM) J COMLNX COML2 L A14,COMUSE+1 GENERATE NEXT NAME MACWRI A,M A14,0100 MACWRI AND,M A14,07700 TEST OVERFLOW FROM 9 MACWRI TG,M A15,07200 MACWRI A,M A14,06700 BCD ADD TO NEXT DIGIT MACWRI S A14,COMUSE+1 SET NEXT NAME IN IMAGE MACWRI S A14,COMASG+2 L A8,A14 AN,M A8,','-' ' REMOVE COMMA EXEC 8 S A8,COMFRE+2 DL A0,COMUSE DS A0,CSFIMG L A0,(10,CSFIMG) ER CSF$ ATTACH INTERNAL NAME. TP A0 J COML7 . @USE NOT ACCEPTED. L A0,(4,COMASG) ER CSF$ ASSIGN THE FILE. L A1,A6 INDEX FILENAME TABLE. EXEC 8 TP A0 J COML5 . @ASG NOT ACCEPTED, MAY BE OK. SSC A0,33 . IF NOT PREVIOUSLY FIXASG JB A0,COML3 . ASSIGNED, FIXASG S A8,USERFT+USERFM,A1 . INDICATE NOT PREV ASSIGNED. TZ COMFLL SZ,H2 USERFT+USERFM,A1 COML3 S A8,USERFT,A1 SET SELECTED NAME. S A6,USERFC SAVE INDEX. . . COMLNX L A0,A10 THE CHAR WHICH GOT US HERE. TNE,M A0,')' J COMP45 END OF SPECIFICATION. TNE,M A0,',' J COMFLK TEST FO FILE STATEMENT MACWRI LMJ B11,GX J COMP2 EOS J COMLNX+1 . . COML5 SSL A0,33 . NEG STATUS FROM @ASG. JNB A0,COML6 EXEC 8 SZ USERFT+USERFM,A1 ALREADY ASSIGNED. TNE,M A0,1 . TEST MORE WRONG. EXEC 8 J COML3 COML6 L A0,(3,COMFRE) . @ASG FAILED. FREE THE @USE. ER CSF$ COML7 L,M A1,COMLD3 UNABLE-TO-ASSIGN DIAG. . . COMLDG L,H1 A0,CRE A,M A0,0100 . ADD OF ONE TO T1 S,H1 A0,CRE L,M A3,4,A1 EDIT DIAGNOSTIC THRU F60 L,M A1,4 MACWRI A A3,(-1,0) MACWRI L A0,0,*A3 MACWRI S A0,COMLDX,A1 MACWRI JGD A1,$-2 MACWRI L A0,(1,COMLDX) L,M A1,15 . LENGTH L,M A2,0 . NO TERMINATING CONTROL WORDS L,M A3,0 . FORCE TO FIELDATA LMJ B11,W60F . INSERT ITEM IN FILE J COMLNX COML8 L,M A1,COMLD4 EDIT A REMARK. J COMLDG+3 . MACWRI COMFLJ TNZ COMFLL MACWRI J COMP2 MACWRI J COMFLE COMFLK TNZ COMFLL MACWRI J COMP45 MACWRI J COMFLD CFLAM TNZ COMFLL DYNC J COMP2 ERROR IF NOT MACRO FILE DYNC J COMPX EXIT IF NO EQUALS DYNC COMFLE L,M A2,2 MACWRI S,S2 A2,MWFLTB SET FILE ONLY MACWRI J $+2 MACWRI COMFLD L,M A2,1 MACWRI L A3,FILUN MACWRI S,S1 A2,MACWRI,A3 SET FLAG THAT UNIT DEFINED MACWRI DL A0,COMASG+1 DSC A0,6 MACWRI S A1,MWFLTB+1 SET FILE NAME MACWRI TZ,S2 MWFLTB MACWRI J COMFLG NO ELEMENT JUST FILE MACWRI CMFLJ . ENTRY POINT FOR EXEC 11 ELEMENTS DYNC SLJ SCAN12 GET 12 CHARACTER ELEMENT NAME MACWRI DS A6,MWFLTB+3 MACWRI TE,M A0,'/' MACWRI J COMFLG NO VERSION GIVEN MACWRI SLJ SCAN12 MACWRI DS A6,MWFLTB+7 MACWRI COMFLG L A0,(1,MWFLTB) MACWRI L,M A1,15 . LENGTH L,M A2,0 . NO TERMINATING CONTROL WORDS L,M A3,0 . FORCE TO FIELDATA LMJ B11,W60F J COMPX MACWRI CMFLK L,M A2,1 MACWRI L A3,FILUN MACWRI S,S1 A2,MACWRI,A3 MACWRI LR FNXT,R8 J CMFLJ MACWRI SCA12R SZ A6 MACWRI SZ A7 MACWRI L,M A3,11 MACWRI SC12B LMJ B11,GX MACWRI J SC12E MACWRI TNE,M A0,'/' MACWRI J SC12E MACWRI LDSL A6,6 MACWRI A A7,A0 MACWRI JGD A3,SC12B MACWRI SC12E JN A3,*SCAN12 FINISHED MACWRI LDSL A6,6 MACWRI A,M A7,' ' MACWRI AN,M A3,1 MACWRI J SC12E MACWRI COMFE1 LMJ B11,PERR MACWRI FORM6 1,179,0 MACWRI J COMPX MACWRI . COMP1 LMJ B11,PERR FORM6 1,199,0 ERROR NO SPECIFICATIONS J COMPX COMP2 LMJ B11,PERR SYNTAX ERROR FORM6 1,200,0 J COMPX COMP3 LMJ B11,PERR UNKNOWN COMPILER SPECIFICATION FORM6 1,201,0 J COMPX COMP6 LMJ B11,PERR DUPLICATE USE OF COMPILER FORM6 1,202,0 J COMPX COMLD1 +0110001,72 'FILE NAME TOO LONG: ' COMLD2 +0110001,72 'UNACCEPTABLE FILENAME:' COMLD3 +0110001,72 'UNABLE TO ASSIGN FILE' COMLD4 +0110003,72 'MACRO/INCLUDE LIBRARY:' 'N1ARG ' N1ARG* S,H2 B11,AREX . SLJ TON$ SZ LIJNAM . SET NON ZERO WITH LIJ BANK NAME SZ LIJSYM . CLEAR POSSIBLE SYM POINTER LMJ B11,SGX SAVE GX REGS L B5,(1,0) STRING INDEX SZ A6 REG TO BUILD UP ARG SPEC L,M A7,1 S,S1 A7,TFDA$ S A7,MACDSV L A7,(1,0) ARG COUNT AND ERROR FLG ARG2 LMJ B11,GIT GET NAME J ARX1 EOS TE,M A2,3 J ARX2 NOT A NAME L FNXT,R8 TNE,M A0,',' J ARG2 COMMA TE,M A0,'(' J ARX3 COMMA OR PAREN NOT FOUND ARG3 LMJ B11,GX J ARX1 EOS L,M A6,6 ERROR VALUE TE,M A0,'/' TNE,M A0,'L' SZ A6 LOC OF ARG TNE,M A0,'V' L,M A6,1 VAL OF ARG TNE,M A0,'R' L,M A6,2 FUNC RETURN TNE,M A0,'C' L,M A6,3 SUBPROG CALL TNE,M A0,'W' L,M A6,4 WALKBACK TNE,M A0,'I' . EQUIVALENT TO LXI INSTRUCTION L,M A6,5 TNE,M A6,6 J ARX4 BAD SUBFIELD TNE,M A0,'/' J $+5 TEST FOR INCREMENTING ARG COUNT LMJ B11,GX GET CHAR J ARX1 EOS TE,M A0,'/' J ARX5 MISSING SLASH TE,M A6,5 TLE,M A6,2 A,M A7,1 INC ARG CNT SSC A6,30 LMJ B11,GIT GET NEXT UNIT J ARX1 EOS L FNXT,R8 L A3,GITV TNE,M A2,12 TEST FOR / J ARG81 L A11,GITV . SAVE TYPE OF CALL TE A3,('T ') TNE A3,('SLJ ') J ARG8 SLJ TNE A3,('LIJ ') J ARG6B TNE A3,('LDJ ') J ARG6C TE A3,('ER ') J ARG6 A,M A6,1 EX J ARG8 ARG6 TNE A3,('LMJ ') J ARG6D TE,M A0,',' . TEST FOR SPLIT REGISTER FIELD J ARG7 JZ A6,ARG6IM . IMMEDIATE L TYPE TE,M A6,0500 . TEST LXI J ARX2 A,M A6,04000 . SHOW IMMEDIATE ARGUMENT PRESENT S,H1 A0,LIJSYM . MARK AS LIJ ARGUMENT J ARG7 ARG6IM A,M A6,04000 . SHOW IMMMEDIATE ARGUMENT PRESENT S,H1 A0,LIBSYM .MARK AS IMMEDIATE BIAS J ARG7 ARG6D TE,M A0,'(' J ARX4 BAD SUBFIELD A,M A6,1 LMJ LMJ B11,GIT GET REG J ARX1 EOS L FNXT,R8 TNE,M A0,',' . TEST FOR IMMEDIATE ARG FIELD J ARG6L TE,M A0,')' J ARX4 BAD SUBFIELD LMJ B11,GX J ARX1 L A3,GITV ARG6Q L,M R1,BCNT . SEARCH ONLY B'S J $+2 ARG7 L,M R1,REGCNT SEARCH ALL REGS L A1,(1,0) SSL A3,18 TG A3,(0300000) TEST FOR X AN A3,(0260000) CHANGE X TO B SE,H1 A3,REGNAM,*A1 SEARCH FOR REG J ARX4 BAD SUBFIELD A,H2 A6,REGNAM-1,A1 REG NO TNE,M A0,',' . COMMMA IMPLIES BANK NAME J ARG6Y ARG8 TE,M A0,'/' J ARX5 MISSING SLASH LMJ B11,GX GET CHAR J ARX1 EOS ARG81 SSC A6,29 SHIFT 7 TE,M A0,',' TNE,M A0,')' J ARG4J TNE,M A0,'I' A,M A6,3 INTEGER TNE,M A0,'R' A,M A6,5 TNE,M A0,'D' A,M A6,7 D.P. TNE,M A0,'C' A,M A6,9 COMP JB A6,$+2 TEST FOR BIT J ARX4 BAD SUBFIELD LMJ B11,GX GET CHAR J ARX1 EOS ARG4 SSL A6,1 GET RID OF TEST BIT S A6,STRING,*B5 STORE SPEC TNE,M A0,',' J ARG3 GET NEXT SPEC TE,M A0,')' J ARX6 MISSING COMMA OR PAREN A A7,(0770000) S A7,STRING,*B5 END OF STRING LMJ B11,GX TEST FOR EOS J $+2 J ARX7 ) BEFORE EOS L,M A1,0,B5 JB A1,$+2 AN,M A1,2 SSL A1,1 HALF SPEC CNT, LESS 1 IF EVEN L,M A0,2,A1 . A0=NUM OF WORDS TO REQUEST MTFSYM TZ,H1 LIJSYM A,M A0,1 . SAVE SPACE FOR SYM POINTER TZ,H1 LIBSYM A,M A0,1 . SAVE SPACE FOR SYM TO BIAS POINTER LMJ B11,PRQEST . REQUEST PERM SPACE IN SYM FOR ARGS MTFSYM SLJ SYMOF . ERROR SYM OVERFLOW MTFSYM L A2,A0 . A0=(TOP OF BLOCK,BOTTOM OF BLOCK) MTFSYM SSL A2,18 . A2=LOC IN SYM OF BLOCK TOP MTFSYM AN,M A2,SYM S,H2 A2,EXTC1 LOC OF SPEC STRING LXI,M A2,1 L B5,(1,0) ARG5 L A4,STRING,*B5 MOVE SPECS TO END OF SYM S,H1 A4,SYM,A2 L A4,STRING,*B5 S,H2 A4,SYM,*A2 JGD A1,ARG5 L,M A2,SYM,A2 . GET LOCATION FOR EXT TO SET TZ,H1 LIJSYM S A2,LIJSYM . SYM POINTER TO IMMEDIATE ARGUMENT A,M A2,1 TZ,H1 LIBSYM S A2,LIBSYM . SYM POINTER TO IMMEDIATE BIAS LMJ B11,RGX RESTORE GX REGS LMJ B11,EXT FINISH STMT SCAN ARX SZ EXTC1 L B5,(1,0) S B5,PARFLG . INHIBIT TRACE MODE J *AREX ARG6B A,M A6,020 . FLAG FOR LIJ J ARG6D ARG6C A,M A6,040 . FLAG FOR LDJ J ARG6D ARX1 LMJ B11,PERR FORM6 0,4,0 FOLLOWING STMT INCOMPLETE J ARX ARX3 LMJ B11,PERR FORM6 0,221,0 MISSING , OR ( J ARX ARX4 LMJ B11,PERR FORM6 0,222,0 BAD SUBFIELD SZ A6 LMJ B11,GX J ARX1 TE,M A0,',' TNE,M A0,')' J ARG4+1 J ARX4+3 ARX5 LMJ B11,PERR FORM6 0,223,0 MISSING SLASH J ARX4+2 ARX6 LMJ B11,PERR FORM6 0,224,0 MISSING , OR ) J ARX4+2 ARX7 LMJ B11,PERR FORM6 0,82,0 STMT TOO LONG J ARX ARX2 LMJ B11,PERR FORM6 0,226,0 UNRECOGNIZABLE ELEMENT L A3,GITV TNE A3,(', ') J ARG2 TNE A3,('( ') L FNXT,R8 J ARG3 TNE,M A0,',' J ARG2 TNE,M A0,'(' J ARG3 LMJ B11,GX J ARX1 J $-6 ARG6L L A10,GITV . SAVE THRU NEXT GITV CALL LMJ B11,GIT . GET NAME OF BANK J ARX1 . EOS BAD L FNXT,R8 TE,M A0,')' J ARX4 . BAD SUBFIELD LMJ B11,GX J ARX1 . PREMATURE EOS TE,M A2,3 . TEST FOR IDENTIFIER J ARX2 . UNRECOGNIZED ELEMENT L A1,GITV . NAME OF BANK S A1,LIJNXX L A3,A10 . RESTORE NAME OF REGISTERS J ARG6Q . JOIN REGISTER SEARCH ARG4J TNZ LIJNXX . SECOND REGISTER FIELD FOR LIJ/LDJ J ARG4 L,M R1,BCNT . SEARCH ONLY B'S L A3,LIJNXX SZ LIJNXX L A1,(1,0) SSL A3,18 TG A3,(0300000) . TEST FOR X AN A3,(0260000) . CHANGE X TO B SE,H1 A3,REGNAM,*A1 . SEARCH FOR REGISTER EQUIVALENCE J ARX4 . BAD REGISTER NAME L,H2 A4,REGNAM-1,A1 . REGISTER NUMBER LSSC A4,1 . ADJUST FOR ARG4 A A6,A4 TE A11,('LMJ ') A A6,(1,0) . MARK AS SPECIAL LIJ J ARG4 ARG6Y LMJ B11,GIT . GET BANK NAME J ARX1 . PREMATURE EOS TE,M A2,3 J ARX2 . BAD ELEMENT L A4,GITV L FNXT,R8 . ALLOW SKIP BY SLASH AN,M A7,1 . DO NOT COUNT BANK AS ARGUMENT TOP,M A6,0100 . TEST LXI OR LOAD J ARG6YI S A4,LIJNAM . SAVE NAME OF BANK J ARG8 ARG6YI S A4,LIBNAM . SAVE NAME OF BIAS J ARG8 N1REG* . THIS IS THE REGISTER STATEMENT. ITS SYNTAX IS REGIST . REGISTER /SAVE/ B1,B2,...B5/USE/A0,A1,A2 REGIST S,H2 B11,N1RG90 SAVE EXIT REGIST TZ N0RGTB REGIST J N1RE10 ERROR SECOND REGISTER STATEMENT WITHIN ONE REGISTM LMJ B11,GX REGIST J N1RE12 PREMATURE EOS/BAD SYNTAX REGIST TE,M A0,'/' REGIST J N1RE11 BAD SYNTAX NO SLASH REGIST L,M A0,15 REGIST SZ N0RGTB+1,A0 ON REGISTER STATEMENT CLEAR TABLES REGIST JGD A0,$-1 OF INITIALIZED VALUES REGIST SN,H2 A0,N0RGTB FLAG FOR FIRST REGISTER STATEMENT REGIST N1RG20 LMJ B11,GIT REGIST J N1RE12 REGIST L A4,GITV REGIST TNE A4,('SAVE ') REGIST J N1RESV REGIST TNE A4,('USE ') REGIST J N1REUS REGIST LMJ B11,PERR REGIST FORM6 1,260,0 IMPROPER SYNTAX REGIST N1RGXT L B5,(1,0) J *N1RG90 N1RE10 LMJ B11,PERR REGIST FORM6 1,266,0 REGIST J N1RGXT SECOND REGISTER STATEMENT REGIST N1RE11 LMJ B11,PERR REGIST FORM6 1,261,0 REGIST J N1RGXT REGIST N1RE12 LMJ B11,PERR REGIST FORM6 1,4,0 . STMT END PREMATURELY J N1RGXT REGIST N1RG13 LMJ B11,PERR REGIST FORM6 1,263,0 REGIST J N1RGXT REGIST N1RESV L,M B5,0 REGIST L A0,GXX REGIST TE,M A0,'/' REGIST J N1RE11 REGIST L FNXT,R8 DISCARD SLAHS REGIST LMJ B11,GX J N1RGXT TE,M A0,'/' J $+3 L FNXT,R8 J N1RG20 SZ FNXT N1RG36 LMJ B11,GIT REGIST J N1RGXT L,H1 A4,GITV REGIST TG A4,(0300000) TEST FOR X AN A4,(0260000) CHANGE X TO B L A0,(1,0) REGIST L,M A1,0 REGIST N1RG40 L,M R1,16 SE,H1 A4,REGNAM,*A0 REGIST J N1RG50 REGIST L,M A5,1 REGIST L,M A2,16 MSI A2,A1 COMPUTE OFFSET IN REGISTER TABLE REGIST AN,M A0,0,A2 REGIST EX N1RGTB,B5 SET REGISTER TABLE ENTRY REGIST L A0,GXX REGIST L FNXT,R8 REGIST TNE,M A0,'/' REGIST J N1RG20 REGIST TE,M A0,',' REGIST J N1RGXT REGIST J N1RG36 GET NEXT REGISTER SETTING REGIST N1REUS L,M B5,1 SET MAJOR EXECUTE INDEX REGIST J N1RESV+1 REGIST N1RG50 A,M A1,1 A1 CONTAINS 0 TO 2 FOR THREE TYPES OF REGISTERREGIST TNE,M A1,3 REGIST J N1RG13 REGISTER NAME UNRECOGNIZED REGIST J N1RG40 REGIST N1RGTB EX N1RGTS,A1 SAVE TABLE REGIST EX N1RTU,A1 USE STORES REGIST N1RGTS S,S1 A5,N0RGTB,A0 REGIST S,S3 A5,N0RGTB,A0 REGIST S,S5 A5,N0RGTB,A0 REGIST N1RTU S,S2 A5,N0RGTB,A0 REGIST S,S4 A5,N0RGTB,A0 REGIST S,S6 A5,N0RGTB,A0 REGIST N1MON* . PROCESS MONITOR STATEMENT MONITO S,H2 B11,N1MNXT MONITO S,H1 B11,CRMON CODE FOR CALLING SEQUENCE VALIDATION MONITO L,M A0,1 INITIALIZE DIMENSIONED LENGTH S A0,MNDTT+7 LMJ B11,GX MONITO J N1MNQ MONITO SZ FNXT REUSE CHARACTER MONITO N1MNA LMJ B11,GIT MONITO J N1MNXT ALL FINISHED MONITO TE,M A2,3 MONITO J N1MNEA . NO VARIALBE WHER EXPECTED MONITO LMJ B11,GLG1 MONITO J N1MNEB VARIABLE NOT PREVIOUSLY DIMENSIONED MONITO L,S3 A2,2,A1 MONITO AND,M A2,7 MONITO TE,M A3,5 MONITO JNZ A3,N1MNEC IDENTIFIER IS NOT VARIABLE MONITO TNZ,H2 3,A1 MONITO J N1MNED IDENTIFIER IS NOT DIMENSIONED MONITO SLJ N1MOSB MONITO J N1MNSQ MONITO N1MOSJ A A1,(0120402,0) S A1,SLOUT,*B9 MONITO L A0,MAUNQ MONITO A,M A0,1 MONITO S A0,MAUNQ GET UNIQUE NAME FOR LENGTH MONITO L,M A3,3 MONITO LMJ B11,MACEBD MONITO S A2,GITV MONITO L A2,MAUPFX . FIRST TWO CHARACTERS OF UNIQUE NAMES S,S2 A2,GITV . SIMULATE STORE IN T1 SSL A2,6 S,S1 A2,GITV LMJ B11,GLS MAKE SYM ENTRY FOR LENGTH MONITO NOP . MONITO S,H2 A1,MNDTT+1 MONITO L,M A2,1 MONITO S,H1 A2,3,A1 MAKE LOOK DEFINED MONITO L,M A2,010 MONITO S,S3 A2,2,A1 SET TO INTEGER VARIABLE MONITO A A1,(0120403,0) MONITO S A1,SLOUT,*B9 MONITO L A1,SLOUT-2,B9 POINTER TO DIMENSIONED VARIABLE MONITO L FNXT,R8 MONITO L A0,GXX MONITO TE,M A0,'(' MONITO J N1MN2 USE GIVEN DIMENSIONS MONITO N1MN7A LMJ B11,SCEX J N1MNEF IMPROPER EXPANSION FOR DIMENSION MONITO TNZ MNDTT+7 NON ZERO, GET PRODUCT OF DIMENSIONS J N1MN7 MSI A3,MNDTT+7 FORM PRODUCT S A3,MNDTT+7 L A0,PARFLG GET DELIMITER TNE,M A0,',' J N1MN7A THERE IS MORE LMJ B11,GX MONITO NOP . MONITO N1MN7 SZ PARFLG MONITO S A3,MNDTT+7 MONITO L A0,(1,MNDTT) MONITO L,M A1,15 . LENGTH L,M A2,0 . NO TERMINATING CONTROL WORDS L,M A3,0 . FORCE TO FIELDATA LMJ B11,W60F LMJ B11,PSDP MONITO N1MN6 J *N1MOSB MONITO N1MNSQ L A0,GXX MONITO TNE,M A0,',' MONITO J N1MNA IF NOT COMMA BETWEEN GROUPS QUIT MONITO LMJ B11,GX MONITO J *N1MNXT J N1MN6 MONITO N1MN25 L R1,0,*A0 CTABD S R1,VARDIM,*A2 MONITO JGD A5,N1MN14 MONITO N1MN26 L,H2 A1,MNDTT+1 MONITO A A1,(020000,0) MONITO S A1,STRING,*B5 LEFT SIDE OF EQUALS MONITO LMJ B11,SLIS84 FORM CONSTANT ITEM MONITO S A4,STRING,*B5 MONITO AN A2,(1,1) MONITO N1MN27 L A0,VARDIM,A2 MONITO A A0,(07700,0) FLAG FOR VARIABLE DIMENSION MONITO S A0,STRING,*B5 MONITO L A0,(0101440,0) S A0,STRING,*B5 * OPERATOR JGD A2,N1MN27 MONITO L A1,(0100100,0) EQUALS OP MONITO S A1,STRING,*B5 MONITO L A1,(0120100,0) A,M A1,0,B1 . INSERT SEQUENCE NUMBER A,M B1,1 . INCREASE SEQUENCE NUMBER S A1,STRING,*B5 STATEMENT TYPE MONITO LMJ B11,PSDP MONITO J N1MN6 MONITO N1MNQ S,H2 B11,CRMON MONITO J N1MNXT SET FLAG TO MONOTOR ALL DIMENSIONED VARIABLESMONITO N1MNJQ L A0,SYMV . GLS ALTERS SYMV DS A0,N1MNSR DS A2,N1MNSR+2 MONITO DS A4,N1MNSR+4 MONITO S FNXT,N1MNSR+7 MONITO S B9,N1MNSR+8 MONITO S B11,N1MNSR+6 MONITO L A0,SLOUT S A0,N1MNSR+9 SZ SLOUT SZ MNDTT+7 SLJ N1MOSB MONITO L A0,N1MNSR+9 S A0,SLOUT L B9,N1MNSR+8 MONITO L B11,N1MNSR+6 MONITO DL A0,N1MNSR MONITO S A0,SYMV DL A2,N1MNSR+2 MONITO DL A4,N1MNSR+4 MONITO L FNXT,N1MNSR+7 MONITO J N1MNSD MONITO MNDTT . START OF ITEMS FOR PSUEDO DATA STATEMENT MONITO +030000,0 MONITO +020040,0 . LENGTH REF MONITO +070100,0 MONITO +01001,0,0 . EQUAL OPERATOR MONITO +0124300,0 . STTEMENT TYPE MONITO +0330000,0 MONITO +0510000,0 . INTEGER CONSTANT MONITO +0 . LENGTH TO BE FILLED IN MONITO +0570000,0 MONITO +0600000,0 MONITO . THIS SECTION PLACES ENTRIES IN COMMON BLOCKS TO FLAG . LIBRARY THAT A LARGE COR COMPILATION IS PRESENT N1LCLB* J $-$ L A1,('NINT$$') S A1,GITV SLJ CM305S . MAKE ENTRY FOR COMMON BLOCK S A2,R4 L B10,(1,0) . INDEX FOR PRESYM SLJ CM401S . MAKE ENTRY FOR VARIABLE NAME S,H2 A1,NINT$A+1 . SYM REF FOR VARIABLE L,M A2,010 S,S3 A2,2,A1 L A0,(1,NINT$A) L,M A1,15 . LENGTH L,M A2,0 . NO TERMINATING CONTROL WORDS L,M A3,0 . FORCE TO FIELDATA LMJ B11,W60F . INSERT ITEM IN F60 L A0,(-0105,-1) S A0,MLINK L,M A0,PRESYM+10 LXI,M A0,0,B10 LMJ B11,MTLT SLJ SYMOF J *N1LCLB . RETURN TO CALLER NINT$A +030000,0 . DATA STATEMENT ID +020040,0 . NINT$$ REFERENCE 040100,9 . INITIALIZE 9TH CELL IN BLOCK +0101740,0 +070100,0 +01001,0,0 . EQUALS OPERATOR 0124300,0 +0330000,0 . END OF LIST +0510000,0 . INTEGER VARIABLE +01 . DATA WORD +0570000,0 . END OF CONSTANTS +0600000,0 . END OF DATA STATEMENT +0570000,0 +0600000,0 . END OF DATA STATEMENT $(0) . N1MN2 L,M A9,1 MONITO L,S2 A4,2,A1 MONITO AND,M A4,7 MONITO AN,M A5,1 NUMBER OF DIMENSIONS MONITO L,M A4,1 MONITO L,H2 A0,3,A1 CTAB POINTER MONITO A A0,(1,0) MONITO L A2,(1,0) MONITO N1MN14 TE,S1 A9,0,A0 CTABD J N1MN25 MONITO TZ,S2 0,A0 CTABD J $+3 IS DIM A PARAMETER MONITO MSI,H2 A4,0,*A0 . NO CTABD J $+2 MONITO MSI,H2 A4,*0,*A0 . USE CURRENT VALUE CTABD JGD A5,N1MN14 MONITO N1MN15 TZ,M 0,A2 ANY VARIABLE DIMENSIONED MONITO J N1MN26 YES MONITO S A4,A3 MONITO J N1MN7 MONITO N1MNEA LMJ B11,PERR MONITO FORM6 031,272,GITV MONITO J N1MNXT N1MNEB LMJ B11,PERR MONITO FORM6 031,268,GITV MONITO J N1MNXT N1MNEC LMJ B11,PERR MONITO FORM6 031,269,GITV MONITO J N1MNXT N1MNED LMJ B11,PERR MONITO FORM6 031,270,GITV MONITO J N1MNXT N1MNEF LMJ B11,PERR MONITO FORM6 01,271,0 MONITO SZ PARFLG MONITO J N1MN6 MONITO REGNAM* +'ZZ',0 LEAVE SPACE FOR B0 REGIST +'B1 ',1 REGIST + 'B2 ',2 + 'B3 ',3 + 'B4 ',4 + 'B5 ',5 + 'B6 ',6 + 'B7 ',7 + 'B8 ',8 + 'B9 ',9 + 'B10',10 + 'B11',11 + 'B12',12 + 'B13',13 + 'B14',14 + 'B15',15 + 'A0 ',12 + 'A1 ',13 + 'A2 ',14 + 'A3 ',15 RE1 + 'A4 ',16 + 'A5 ',17 + 'A6 ',18 + 'A7 ',19 + 'A8 ',20 + 'A9 ',21 + 'A10',22 + 'A11',23 + 'A12',24 + 'A13',25 + 'A14',26 + 'A15',27 +'ZZ',0 LEAVE SPACE FOR R0 REGIST + 'R1 ',30 + 'R2 ',31 + 'R3 ',32 + 'R4 ',33 + 'R5 ',34 + 'R6 ',35 + 'R7 ',36 + 'R8 ',37 + 'R9 ',38 + 'R10',39 + 'R11',40 + 'R12',41 + 'R13',42 + 'R14',43 RE2 + 'R15',44 BCNT EQU RE1-REGNAM REGCNT EQU RE2-REGNAM+1 AREX J $-$ N1RG90 J $-$ N1MOSB J $-$ J N1MOSJ N1MNSD* J $-$ J N1MNJQ N1MNXT J $-$ SCAN12 J $-$ J SCA12R COMFLL +0 . FLAG FOR FILE STATEMENTS LIJNXX +0 . TEMPORARY STORAGE FOR ARG PROCESSING COMPX J $-$ FLDSV RES 1 LOOPTZ INFO 2 0 END