. THIS SECTION OF CODE CHECKS A TRIAD FOR MODE CONVERSIONS AND . REORDERS A TRIAD FOR MAXIMUM MATCHING DURING SEARCHING RGS . REGISTER DEFINITION CONTR . TRIAD DEFINITIONS IDX EQU 1 . DIAGNOSTICS PERMITTED . THIS SECTION OF CODE CHECKS TO SEE WHETHER ANY ONE SINGLE TERM IN 26710 . A SUBSCRIPT IS AN INDUCTION VARIABLE WITHOUT MULTIPLIERS. IF IT IS 26720 . THE INDUCTION VARIABLE IS ADDED TO A DUMMY TO FORM A TRIAD WHICH 26730 . IS CONVERTED TO A SUBEXPRESSION WHICH CAN BE BROUGHT TO THE TOP A LOOP 26740 $(1) . $(2) . REENT CHTS* J $ . EXIT 26750 SX,H2 B11,$-1 . SAVE EXIT J CHTS2X $(1) . REENT CHTS2X . DO IDX=1 , TZ DX2 267510 DO IDX=1 , SLJ XD2 . PRINT INTERNAL DIAGNOSTIC 2 267520 TNZ,H2 CR131K J CHTXXX 131K L,S2 A0,COPER 131K TG,M A0,017 . TEST FOR ARITH OPERATOR 131K J CHTCMA . TEST FOR COMMA 131K CHTOFP . 131K MVW SUDMVR SSDMVR . SAVE DUMMY VAR ITEM OBJECT OF 01016 131K SZ SUDMVR . AND CLEAR 131K L,S1 A1,COPND1 131K L A0,COPND1 131K SLJ CHTCMC . CHECK FOR COMMON 131K S A0,COPND1 131K L,S1 A1,COPND2 131K L A0,COPND2 131K SLJ CHTCMC . CHECK IF COMMON 131K S A0,COPND2 131K MVW SSDMVR SUDMVR . RESTORE FLAG 131K MVW COPER F31,NSEQN . RESET IN CASE OF = WHICH IS NOT REPLACED131K SZ NEGARG 131K J CHTXXX 131K CHTCMA TNE,M A0,16 . TEST FOR FUNC 131K J $+3 TE,M A0,021 . OR COMMA 131K J CHTXXX 131K L B6,FNC L,S1 A0,FNX,B6 . THESE ALSO EXPAND 131K L,S3 A15,FNX,B6 TE,M A15,044 LOC CAN STAND 18 BIT ADDRESS TE,M A0,1 . INTRINSIC ALWAYS 131K S B6,NEGARG . OTHERWISE ONLY ON NEGATIVE ARGS 131K J CHTOFP . INTRINSIC COMMA 131K . THIS SECTION CHANGES REFERENCES TO COMMON INTO OFSETS FROM THE BEGINING 131K . OF COMMON 131K CHCMCR TNE,M A1,2 EENT J CHTCMJ TNE,M A1,1 131 TNE A1,SUBSC J CHTCMC 131 TEP,M A0,0100000 J CHTCMJ ALREADY CONVERTED TO SYM REFERENCE SBT A14,LOOP,A0,S4,4 . MARK FOR MATERIALIZATION TOP A0,(07700,0) LXM,H2 A0,LOOP+1,A0 A A0,(010000,0) CHTCMJ TZ NEGARG 131 TEP A0,(4,0) 131 TZ NEGARG 131K TEP A0,(4,0) 131K TN 1,A0 131K J CHTCMC 131K TZ,S1 2,A0 131K J CHTDMY . CHECK FOR DUMMY 131K CHTC1 TNZ,S1 BSTC1+4 . TEST FOR BANKING J CHTC1J L,S3 A1,2,A0 AND,M A1,7 . ONLY SUPPLY 18 BIT ADDRESSING FOR DUMM TE,M A2,5 . WHEN BANKING OPTION IS SET J CHTCMC CHTC1J SLJ UPSL MVW (0102300,0) F31,NSEQN . OFSET + 131K S R15,COPER 131K MVW (040100,0) F31+1,NSEQN . OFSET OF ZERO 131K S R15,COPND2 131K S A0,COPND1 . COMMON VAR 131K L,S3 A0,COPND1 131K S,S3 A0,F31,NSEQN 131K SZ,S3 COPND1 131K LMJ B11,CHTS+1 . RE-ENTER CHTS 131K NOP 0 131K SLJ LWSL 131K L A0,A5 . RESULT TO A0 131K J *CHTCMC 131K CHTDMY L,S3 A1,2,A0 131K AND,M A1,7 131K TNE,M A2,5 131K S A2,SUDMFL . DUMMY IN OFFSET FLAG 131K J CHTC1 131K CHTXXX . 131K TNZ,S6 SUBSC TEST IF SUBSCRIPT CAN HAVE INDUCTION VARIABLE J CHT JE A15,COPND1,0,T1 0100 CHTS1 . TEST FOR INDUCTION VARIABLE CHTS4 JNE A15,COPND2,0,T1 0100 CHT . TEST FOR INDUCTION VARIABLE JE A15,COPER,0,T1 PLUSM CHTS2 . TESTS FOR + 26810 J CHT 26820 CHTS1 JE A15,COPER,0,T1 PLUSM CHTS3 . TESTS FOR + 26830 J CHTS4 26840 CHTS2 LA A15,COPND1 SAVE OPERAND 26850 SA A15,BCPND1 26860 SZ COPND1 MVW 7,0,M COPND1,0,S1 . FORM DUMMY WITH 7 LMJ B9,TSEIX . INSERT DUMMY ITEM 268800 MVW 01012,0,M COPER,0,T1 . RESTORE + 268850 LA A15,BCPND1 RESTORE OPERAND 26890 SA A15,COPND1 26900 LA A15,SUBNO NUMBER OF EXPRESSION JUST FORMED 26910 SA A15,COPND2 26920 J CHT 26930 CHTS3 LA A15,COPND2 SAVES OPERAND 26940 SA A15,BCPND1 MVW COPND1 COPND2 . FIX SO TWO CASES GIVE SAME EXPRESSION J CHTS2+2 . THIS SECTION IS ENTERED WHEN A TRIAD IS REDUCED TO AN ITEM HC* LX B11,CHTS LA,S3 A12,COPER . PUT SIGN OF OPERATOR XOR,S3 A12,CONRD . ON TO REDUCED TRIAD S,S3 A13,CONRD L A5,CONRD J 0,B11 . THIS SECTION OF CODE CHECKS A TRIAD FOR NECESSARY CONVERSION OPERATNS 27040 CHT* LA,H2 A0,COPND1 27050 SZ MOOP . CLEAR FOR FUNCTIONS 270550 LA,015 A2,COPND1 ID FROM COPND1 27060 LA,014 A1,COPND1 TYPE FROM COPND1 27070 LMJ B11,CHTA DETERMINE MODE 27080 SA A15,MA MODE OF COPND1 27090 LA,1 A0,COPND2 SYMBOL TABLE REFERENCE 27100 LA,014 A1,COPND2 TYPE FROM COPND2 27110 LA,015 A2,COPND2 ID FROM COPND2 27120 LMJ B11,CHTA 27130 LX B6,FNC . LOADS LEVEL OF FUNCTION NESTING 27140 TP FNC SLJ XERV SA A15,MB 27160 CHT3B TV A0,COPER,0,S2 26 OPTYP . BRANCH ON OPERATOR TYPE TNZ MA J CHC3 TNZ MB J CHC3 L,M A0,7 TNE A0,MA J CHC3X TNE A0,MB J CHC3X CHTB3 LA A1,MB MSI,M A1,6 BVER2 AA A1,MA 27480 AN,M A1,7 BVER2 AA A1,R3 . START OF MODE TABLE FOR CURRENT OPERATOR LA,013 A14,COPER 27510 LR,012 R1,0,A1 LOADS EXTRA DIGITS FOR OPERATOR 27520 TNZ,S6 COPER SR,S6 R1,COPER . EXTRA DIGITS FOR OPERATOR TZ,05 0,A1 TEST TO SEE IF PROPAGATED 27540 . DOUBLE PRECISSION SIGNIFICANT 27550 J CHTGA . THEY ARE CHTH LA A4,0,A1 27570 CHT3 SA A4,MODET 27580 TP,XH2 MODET SZ,S6 COPER CHT3E MVW MODET,0,S3 EMODE . MOVE EXPRESSION MODE TNZ,013 MODET TEST CC 27600 J CHC3 GENERATE PROGRAMMER ERROR 27610 . NOTICE FOR ILLEGAL MODE 27620 TZ,014 MODET 27630 J CHC4 CONVERSIONS ARE NEEDED FOR OPERAND 1 27640 CHT9 TNZ,015 MODET 27650 J CSC GO CHECK FOR SPEC CONSTANTS 0 AND 1 27660 J CHTB CHTB4 TNZ MA . LABELS ARE NOT ALLOWED IN INTRINSIC J $+3 . OR STATEMENT FUNCTIONS OR NORMAL TZ MB . FUNCTIONS IN STATEMENT FUNCTIONS J CHT6A1 L,S3 A4,FNX,B6 TNE,M A4,044 TEST FOR LOC J CHT6A1 L A4,A1 BVER1 XERF ERRAX BVER1 L A1,A4 BVER1 J CHT6A1 CHTDV* L,M R3,MODT+72 JNE A15,COPND2,0,S1 3 CHT3B+4 JE A15,COPND1,0,S1 3 CHT3B+4 . DIVISION WILL BE DONE AT COMPILE L,H2 A1,COPND2 VALUE OF CONSTANT OR SYM REF TNZ,S2 COPND2 CHECK FOR IMMEDIATE CONSTANT J CHTDV3 CHTDV4 ANU,M A1,1 CHECK FOR DIVISION BY POWER AND A1,A2 2 AS THIS WILL BE CHANGED JZ A2,CHT3B+4 CHTDV2 L A1,MA SLJ UPSL EX CHTDVX,A1 OR,S3 A14,COPER SA,S3 A15,COPER . SET DUMMY OR REAL FLAG MVW (030100,1) COPND1 SR R4,RCPF . SET SO INTEGERS WILL BE COMPUTED FRACTIONALLY LMJ B11,CHTS+1 J CHTDV1 SLJ LWSL . IF RETURN IS HERE PERSUMPTION J CSCD2 . DIVIDE CHECK INTERRUPT OCCURRED CHTDV3 L A1,MB TE,M A1,1 J CHTDV2 L A1,0,A1 J CHTDV4 CHTDV1 L A1,EMODE BVER1 SLJ LWSL S A5,COPND2 BVER1 MVW 0101400,0,M COPER,0,H1 . SET OPERATOR TO MULTIPLY CLEAR SIGN SA A1,MB SZ RCPF J CHT CHTDV9* SLJ LWSL SZ RCPF LR,M R3,MODT+72 J CHT3B+4 CHT6C* MVW 7,0,M EMODE . SET MODE FOR COMMA J $+3 CHT6CJ* . ENTRY FOR COLON MVW MA EMODE . TRANSFER MODE OF FUNCTION L,S1 A1,FNX,B6 TNE,M A1,1 J CHTB4 TEST FOR LABELS IN INTRINSIC FUNCTIONS L,S2 A15,COPER TNE,M A15,021 TEST FOR COMMA SZ,H2 COPER TZ,S1 FNX,B6 J CHT6A1 L,H2 A0,FNX,B6 SYM LOC L,H2 A2,2,A0 'STRING' LOC JZ A2,CHT6A1 . NOT A NON-STANDARD SUBPROGRAM AND,M A2,0177777 JZ A3,CHT6A1 NO ARGUMENT STATEMENT L A2,A3 L,S2 A14,FNX,B6 ARG COUNT JZ A14,CHT6A5 FIRST ARG L,M A3,1 TP INTRX,B6 SET UP HALFWORD POINTER SZ A3 LM A2,INTRX,B6 'STRING' INDEX TNE,M A15,020 J CHT6A4+4 COLON FOR MORE THAN ONE ARG A,M A14,1 L A0,MB ARG TYPE CHT6A2 S,S2 A14,FNX,B6 STORE ARG COUNT L,M A4,5 L,S1 A15,SYM,A2 JGD A3,$+3 FIND NEXT HALFWORD L,S4 A15,SYM,*A2 L,M A3,1 AN,M A4,1 JZ A4,CHTP TOO LONG BETWEEN ARGS TNE,M A15,077 J CHT6A6 TOO MANY ARGS TNE,M A15,5 . TEST LXI FUNCTION J $+3 TG,M A15,2 J CHT6A2+2 L,S3 A1,SYM,A2 TZ A3 GET CONVERTION TYPE L,S6 A1,SYM-1,A2 EX CHTM,A0 CHTMD(START MODE,FINAL MODE) TNZ A3 LN A2,A2 S A2,INTRX,B6 SAVE 'STRING' INDEX TZ,S3 FNX,B6 J CHT6A3 ARG IS IN CONPND1 L,S1 A1,COPND2 L A0,COPND2 S A4,SVA4 DS A2,SVA2 S A14,SVA14 JZ A15,$+3 . BNO INDEXING FOR LOCS TZ,H2 CR131K SLJ CHTCMC SUPPLY INDEXING FOR LARGE COGE L B6,FNC S A0,COPND2 DL A2,SVA2 L A4,SVA4 L A14,SVA14 JZ A4,*CHT6DN NO MODE CHANGE SLJ CHTC2 CONVERT CONPND2 L B6,FNC J *CHT6DN CHT6A3 L,S1 A1,COPND1 L A0,COPND1 S A4,SVA4 DS A2,SVA2 S A14,SVA14 JZ A15,$+3 . NO INDEXING FOR LOCS TZ,H2 CR131K SLJ CHTCMC SUPPLY INDEXING FOR LARGE CORE L B6,FNC S A0,COPND1 DL A2,SVA2 L A4,SVA4 L A14,SVA14 JZ A4,CHT6A4-3 NO MODE CHANGE SLJ CHTB2 CONVERT CONPND1 L B6,FNC L,S2 A14,FNX,B6 L,M A3,1 TP INTRX,B6 SZ A3 LM A2,INTRX,B6 SZ,S3 FNX,B6 CLEAR FLAG J CHT6A2-2 CHT6A4 L,M A3,1 TP INTRX,B6 SZ A3 LM A2,INTRX,B6 L,M A4,5 L,S1 A15,SYM,A2 JGD A3,$+3 L,S4 A15,SYM,*A2 L,M A3,1 AN,M A4,1 JZ A4,CHTP+1 TE,M A15,077 SEARCH END OF 'STRING' J CHT6A4+5 L,S3 A4,SYM,A2 TZ A3 GET ARG NO. L,S6 A4,SYM-1,A2 AN A4,A14 COMPARE ARG COUNTS JZ A4,CHT6A1 J CHT6A7 CHT6A5 L,M A14,1 INITIALIZE ARG COUNT L,M A3,1 INITIALIZE HALFWORD POINTER LXI,M A2,1 'STRING' INDEX L,M A0,CHT6A4 S,H2 A0,CHT6DN TE,M A15,021 J CHT6A2-1 COLON L,M A0,CHT6A1 S,H2 A0,CHT6DN L A0,MA LOAD TYPE S,S3 R4,FNX,B6 COPND1 J CHT6A2 CHTM L,M A4,0 ZERO IS TYPE FOR LABELS L,S1 A4,CHTMD,A1 L,S2 A4,CHTMD,A1 L,S3 A4,CHTMD,A1 L,S4 A4,CHTMD,A1 CHTP L,M A4,0 LOGICAL L,M A4,0 BOOLEAN NO MODE CHANGE CHT6A6 L,H2 A0,FNX,B6 S A0,CHE1+1 XERF CHE1 TOO MANY ARGS L,H2 A1,FNX,B6 SZ,H2 2,A1 J CHT6A1 CHT6A7 L,H2 A0,FNX,B6 S A0,CHE2+1 XERF CHE2 TOO FEW ARGS J CHT6A1 CHT6A1 L,S1 A1,FNX,B6 TE,M A1,3 JNZ A1,CHT8,A1 CHT6B* SZ AEX . IS FROM EXPONENT 27990 SR R4,NGCN . FLAG TO PUT - CONSTANTS IN SYMBOL TABLE LA,7 A15,COPND1 FROM INTRINSIC OR STATEMENT FUNCTIONS 28000 TNZ RELCF RELATIONAL CONSTNAT FLAG TE,M A15,0301 TESTS FOR IMMEDIATE CONSTANT 28010 J CHT7F LA,3 A4,COPND1 LOADS IMMEDIATE CONSTANT 28030 XSLT 1,CRIHL,013 28040 SA,1 A1,COPND1 STORES SYMBOL TABLE REFERENCE 28050 SZ,014 COPND1 CHANGES TYPE OF CONSTANTS 28060 J CHT7F+3 CHT7 SLJ CHT7SB J CHT7XT CH7SBR JNE A15,COPND2,0,T1 0301 CHT8F . WAS NOT AN IMMEDIATE CONREENT TZ RELCF RELATINAL CONSTANT FLAG J CHT8F LA,3 A4,COPND2 28080 XSLT 1,CRIHL,013 28090 SA,1 A1,COPND2 SZ,014 COPND2 CHANGES TYPE OF CONSTANT 28100 J CHT8F+3 CHT8Z SZ NGCN J CHT7SB CHT7XT L A0,RELCF SZ RELCF JNZ A0,CSCRL TNZ AEX J CHT7XY L,M R3,MODT+108 J CHT3B+4 CHT7XY L,S1 A1,FNX,B6 TE,M A1,3 TEST FOR MAGIC FUNCTION J ROTS L A0,COPER,0,S2 J CHT8W1 CHT7F JNE A15,COPND1,0,S1 3 CHT7 . THIS SECTION REMOVES NEGATIVE JNBL A14,COPND1,0,S3 4 CHT7 . CONSTANTS AS FUNCTION ARGUMENTS SLJ UPSL MVW (030100,0) COPND2 MVW (0101200,0) COPER LMJ B11,CHTS+1 J CHT7F1 XER 97 . HAD TO REDUCE TO CONSTANT CHT7F1 SLJ LWSL BVER1 S A5,COPND1 BVER1 J CHT7 CHT8 J ROTS EXTERNAL FUNCTION J CHT8W1 INTRINSIC FUNCTION BVER1 J ILSF GO STORE ARGUMENTS FOR STATEMENT FUNC. BVER1 CHT8W1 L,S3 A1,FNX,B6 LOAD INTRINSIC OR AUTO MATH FUNC NO. BVER1 TNZ,011 INTRX,B6 . TESTS E FIELD IN INTRX 281600 J CHTF3 CONVERT ARGUMENTS IN THIS CASE 28170 TE,M A0,16 28180 J CHT8C A, HAD BEEN FOUND 28190 J CHTF4 CHT8F JNE A15,COPND2,0,S1 3 CHT8Z . THIS SECTION REMOVES NEGATIVE JNBL A14,COPND2,0,S3 4 CHT8Z . CONSTANTS AS FUNCTION ARGUMENTS SLJ UPSL MVW (030100,0) COPND1 MVW (0101200,0) COPER LMJ B11,CHTS+1 J CHT8F1 XER 97 . HAD TO REDUCE TO CONSTANT CHT8F1 SLJ LWSL BVER1 S A5,COPND2 J CHT8Z CHTFCM TN,T3 COPER SR,S6 R5,F31-1,NSEQN . MARK COLON OF FLD FOR NO CONVERSIONS MVW MB EMODE . TRANSFER TRUE MODE OF EXPRESSION SR R4,NGCN L,M A15,013 TNE,H2 A15,CTRST TEST FOR SECOND OR THIRD COMMA SLJ CHT7SB J CSC CHTFCL L,M A3,056 J CSCFXD J CSCFXD CHTF4 JE A2,COPER,0,S6 077 CHTFCL . ETV A2,MB 7 7 CHTF4W CHT8A CHTF4W J CHTFLC TEST FOR LOC LA,015 A3,INTRX,B6 1 INTEGER 28220 LA,014 A3,INTRX,B6 2 REAL 28230 LA,013 A3,INTRX,B6 3 DOUBLE 28240 LA,012 A3,INTRX,B6 4 COMPLEX 28250 L,S1 A3,INTRX,B6 . TREAT LOGICAL AS INTEGER J CHT8V1 BOOLEAN CHTFLC L,S3 A3,FNX,B6 TNE,M A3,044 TEST FOR LOC J CHTF9 J CHT8V1 TREAT ZERO AS BOOLEAN CHT8A JZ A3,CHTF9 . MODE AND FUNCTION ARE COMPATIBLE TLE,M A3,074 J CHTF2W BVER1 J $-073,A3 J CHT2Y CONVERT TO COMPLEX J CHT2F FLOAT ARGUMENT 075 BVER1 J CHT8B FUNCTION SHOULD BE DELETED 076 BVER1 J CHC3 AN ERROR SHOULD BE INDICATED 077 BVER1 CHTF2W S,S3 A3,FNX,B6 STORE NEW NO. OF INTR OR AUTO MATH FUNC. BVER1 CHTF2 SA,H2 A3,COPER 283300 CSCFX SZ COPND1 MVW 7,0,M COPND1,0,S1 L,S6 A3,COPER BVER1 L,S1 A15,FNX,B6 BVER1 TNE,M A15,3 IS FUNCTION AUTO MATH BVER1 J CSCF3W YES BVER1 TNE,M A3,044 J CSCLOC TNE,M A3,053 . TEST FOR DINT J CHDINT TE,M A3,062 TEST FOR BOOL J CHT8V2 L,S3 A4,COPND2 . SIGN OF BOOL OPERAND XOR,S3 A4,COPER SIGN ON BOOL OPERATOR S,S3 A5,COPER . RESULTANT SIGN SZ,S3 COPND2 CHT8V2 . CSCFXD L,S6 A14,MINTX,A3 OR,S5 A14,COPER . SET BIT SO THAT J2 WILL BE SA,S5 A15,COPER . SET SO THIS FUNCTION CAN NOT MOVE CSCF3W L,M A13,3 BVER1 L,S1 A0,MINTX,A3 MODE OF INTRINSIC FUNCTION BVER1 TE,M A3,056 . TEST FOR FLD FUNCTION J CSJF3A L,H2 A2,FNX,B6 . SYM REFERENCE OF FUNCTION L,S1 A2,0,A2 . FIRST LETTER OF NAME TE,M A2,013 . IF NOT 'F' MUST BE SUBST$ J CHCOL . GO PROCESS CHARACTER COLON S A0,EMODE J ROTSA CSJF3A . TE,S1 A13,FNX,B6 BVER1 J CSCF3A BVER1 L,S3 A0,MINTX,A3 MODE OF AUTO MATH FUNCTION BVER1 S A0,MA CSCF3A S A0,EMODE BVER1 TNE,S1 A13,FNX,B6 AUTO MATH FUNCTION J ROTS LMJ B9,TSXFXI L,S1 A0,SUBNO TNE,M A0,5 J ROTSY MVW (050000) SUBNO,0,H1 S A5,CONRD J HC . CHT8V1 L,M A3,0 BOOLEAN (OR TYPELESS) MODE TE,M A1,044 TEST FOR LOC TNE,M A1,061 TEST FOR COMPL J CHTF9 L,S1 A2,FNX,B6 TNE,M A2,3 J CHT8A . IGNORE BOOLEAN FOR MAGIC FUNCTIONS L,S6 A2,INTRX,B6 IS FUNCTION BOOLEAN TNE,M A2,024 J CHT8A FLD TG,M A2,013 L,M A3,076 . YES REMOVE FUNCTION COLON J CHT8A CSCLOC SLJ CHT7SB MATERIALIZE FOR LOC AN IMMEDIATE CONSTANT L,S1 A15,COPND2 ARGUMENT OF LOC FUNCTION TE,M A15,5 TEST IF ARGUMENT IS EXPRESSION J CSCLC1 SXLOC A3 COPND2,0,T3 REENT L,S6 A0,0,A3 . OPERATOR IN EXPRESION TNE,M A0,017 TEST FOR SUBSCRIPT J CSCLC2 LOCOPT TNE,M A0,023 TEST FOR OFFSET J CSCLC1 XERF ERR24 CSCLC1 L,S6 A3,COPER AN,M A15,2 131K JNZ A15,CSCFXD . COPND2 NOT A VARIABLE 131K L,H2 A0,COPND2 . SYM 131K L,S1 A15,1,A0 131K TOP,M A15,010 131K A,M A15,010 . SET G4 CALL BY NAME 131K S,S1 A15,1,A0 131K J CSCFXD . A LOC OF A SUBSCRIPTED VARIABLE WITH ZERO OFFSET CAN BE LOCOPT . REPLACED WITH VALUE USED TO LOAD SUBSCRIPT IF OFFSET IS ZERO LOCOPT CSCLC2 L,T2 A0,0,A3 SUBSCRIPT NUMBER LOCOPT S A0,A10 LOCOPT L,T1 A1,0,A3 OFFSET NUMBER LOCOPT S A1,A11 LOCOPT SXLOC A1 A1 TZ,T2 0,A1 TEST FOR ZERO OFFSET LOCOPT J CSCLC1 LOCOPT L,T1 A1,0,A1 POINTER TO VARIABLE LOCOPT LSSL A1,2 LOCOPT A,H2 A1,CRISYM TZ,H2 1,A1 LOCOPT J CSCLC1 RELATIVE STORAGE ASSIGNEMENT IS NON ZERO LOCOPT SXLOC A0 A0 LNKSBX L,T1 A1,0,A0 VALUEIN SUBSCRIPT LOCOPT L,S5 A2,0,A0 LOCOPT SSL A2,3 EXTRACT TYPE LOCOPT TE,M A2,2 LOCOPT J CSCLC1 WAS NOT AN EXPRESSION LOCOPT SXLOC A0 A1 LNKSBX L,S6 A2,0,A0 OP TYPE LOCOPT TE,M A2,020 LOCOPT J CSCLC1 NO FUNCTION LOCOPT L,S6 A2,1,A0 LOCOPT TE,M A2,044 LOCOPT J CSCLC1 WAS NOT LOC FUNCTION LOCOPT L,S3 A2,1,A0 LOCOPT SSL A2,4 LOCOPT JNZ A2,CSCLC1 TEST FOR SIGN BITS LOCOPT S,H2 A1,CONRD SET COLLAPSED VALUE LOCOPT L A2,(050000) LOCOPT S,H1 A2,CONRD LOCOPT L,T1 A0,1,A3 NUMBER OF 17 OP LOCOPT LMJ B11,DELZ LOCOPT L A0,A10 NUMBER OF SUBSCRIPT LOCOPT LMJ B11,DELZ LOCOPT L A0,A11 NUMBER OF OFFSET OPERATOR LOCOPT LMJ B11,DELZ LOCOPT DFL FNC 1 . REDUCE FUNCTION FOR DISCARDED LOC LOCOPT J HC LOCOPT . CHT2Y L A0,(030100,0) SET RESULT TO ZERO J CHT8B+1 GO THROW COLON AWAY CHT2F L,M A4,017 NUMBER OF FLOAT FUNCTION BVER1 S,S2 A4,MODET SLJ CHTC2 FLOAT ARGUMENT BVER1 J CHT GO RECOMPUTE MODES BVER1 CHDINT SLJ CHDNTX J CSCFXD CDNTXR L A4,(0207400,0) REENT L,M A5,0 XSLT 2,CRDHL,033 . INSERT DOUBLE PRECISSION CONSTANT L A3,(030000,0) CONSTANT ITEM A,M A3,0,A1 SYM REF OF DP CONSTANT S A3,CRDINT L,H2 A3,COPER J *CHDNTX CHTF9 SA,S6 A1,COPER . STORE NUMBER OF INTRINSIC FUNCTION J CSCFX CHC3X LA,S2 A0,COPER TG,M A0,3 . DUMMY PERMITTED FOR =,.OR.,.AND. J CHC3 TNE,M A0,1 GENERALIZED UNIT MUST BE MATERIALIZED J CHCGIO CHC3X2 L A0,MA TG A0,MB . EMODE IS SET TO MODE OTHER THAN DUMMY L A0,MB S A0,EMODE J CSC CHC3 L A15,MA TE,M A15,5 J CHC3E TE A15,MB J CHC3E LA,S2 A15,COPER TNE,M A15,012 J CHC3L1 . IT WAS A PLUS TNE,M A15,014 J CHC3L2 . IT WAS A MULTIPLY CHC3E XERF ERRAX+2 . INVALID MODE SR R4,EMODE . SET SO ERROR WILL NOT BLOW UP COMPILER J CSC 28360 CHCGIO L A0,COPND1 TNE A0,(070000,071) J CHCGIA TE A0,(070000,074) . TEST FOR TRANS (DEFINE FILE) TNE A0,(070000,075) TEST FOR SIZE - ENCODE J $+3 TE A0,(070000,076) TEST FOR UNIT J CHC3X2 CHCGIA . L,T1 A0,COPND2 TE,M A0,0301 J CHC3X2 L,H2 A4,COPND2 L,S3 A3,COPND2 TEP,M A3,4 LN A4,A4 XSLT 1,CRIHL,013 SZ,S2 COPND2 S,H2 A1,COPND2 J CHC3X2 CHT8B L A0,COPND2 IF INTRINSIC FUNCTION TNE A0,CONRD HAD CONSTANTS FOR ARGUMENTS J CHT8B3 IT WILL HAVE REDUCED TO A COMMA S A0,CONRD L B6,FNC L A0,FNX,B6 TNZ,S6 2,A0 TEST FOR INTRINSIC FUNCTION WITH COMMA J CHT8B3 L A0,CONRD L,S1 A1,CONRD TE,M A1,5 J CHT8B4 ERROR NOT EXPRESSION SXLOC A0 A0 LNKSBX L,S6 A1,0,A0 TNZ,H1 CHMDCQ TNE,M A1,11 J CHT8B3 TE,M A1,17 TEST FOR COMMA J CHT8B4 CHT8B3 L,S1 A1,CONRD TNE,M A1,3 J CHT8B5 TE,M A2,1 J $+4 L,S3 A1,FNX,B6 TNE,M A1,6 J CHTF9 CHT8B5 . L,S3 A14,COPND1 . SIGN ON FUNCTION SZ,H1 CHMDCQ XOR,S3 A14,COPND2 . SIGN OF ARGUMENT S,S3 A15,CONRD DFL FNC 1 . WHEN FUNCTION IS REMOVED COUNT IS REDUCED SLJ CHDNTX J HC DELETES FUNCT AS IT IS NOT NECESSARY 28380 CHC3L1 SR,S2 R6,COPER . CHANGE TO .OR. L,M R15,5 S,S1 R15,EMODE SET TYPE TO LOGICAL J CHT3B CHC3L2 L,M R15,3 S,S2 R15,COPER . CHANGE TO .AND. L,M R15,5 S,S1 R15,EMODE SET TYPE TO LOGICAL J CHT3B CHT8C JNBL A0,INTRX,B6,S6 040 $+6 . INDICATE ERROR 28390 AND,M A0,067 28400 LA A0,A1 PSUEDO OPERATION NO. 28410 J CHTB3 28420 CHT8B4 L A0,FNC FUNCTION LEVEL L A0,FNX,A0 SYM TABLE REF L A0,0,A0 S A0,ERRAX+9 NAME OF FUNCTION XERF ERRAX+8 . TOO MANY ARGUMENTS 284300 L A0,(030100,0) SET PAIR OF ARGUMENTS TO 0 S A0,CONRD J HC CHTGA LA,010 A2,0,A1 NUMBER OF DP MODE WORD 28520 TZ,H2 SUBLV J CHTH . DO NOT PROPAGATE INTO SUBSCRIPT AND,M A14,1 28530 JNZ A15,CHC1 COPER DID IMPLY DOUBLE PRECISSION 28540 LA,011 A2,0,A1 28550 AND,M A14,2 28560 JZ A15,CHTH 28570 CHC2 AND,M A2,7 28580 JZ A3,CHTH 285900 LA A4,SPMO,A3 28600 J CHT3 28610 CHC1 JZ A2,CHTH 286200 LA A4,DPMO,A2 28630 J CHT3 28640 CHTF1 LA,013 A3,FNX,B6 28650 J CHTF2 28660 . THIS NEXT SECTION CHECKS THE MODE OF ARGUMENTS AND CONVERTS IF 28770 . NECESSARY. IF A CONVERSION IS PUT IN AN ERROR MESSAGE IS PUT OUT 28780 CHTF3 TE,M A0,17 28790 J CHT3FQ L,S1 A0,FNX,B6 BVER1 TNE,M A0,3 IS THIS AUTO MATH FUNC ATAN2 BVER1 J CHTF3X YES BVER1 CHTF3Y L,S6 A0,COPER TNE,M A0,077 . TEST FOR SECOND COMMA IN FLD FUNCTION J CHTFCM TE,M A0,014 . CHARACTER LEFT OF EQUALS TNE,M A0,015 . CHARACTER RIGHT OF EQUALS J CHF3YJ . SAVE ARGUMENTS FOR LATER PERMUTION TG,M A0,011 IS SPECIAL COMMA A BOOLEAN FUNCTION BVER2 J CHTF3W YES BVER2 LA,S6 A0,INTRX,B6 288100 J CHT3B+1 CHF3YJ S A0,SFDPX,B6 . SAVE COMMA TYPE J ILSF . GO FILE ARGUMENTS CHT3FQ L A0,(030000077674) FUNCTION NO.'S FOR CONVERSION L,S3 A1,FNX,B6 GET INTRINSIC FUNCTION NUMBER SSL A0,0,A1 IS THIS ONE TO BE CONVERTED JNB A0,CHTF4 L A0,MA TNE A0,MB J CHTF4 L,M R3,MODT S,H1 R3,CHMDCQ S,H2 R3,CHMDCQ J CHTB3 CHTF3X L,M A0,1 IF BOTH ARGUMENTS INTEGER BVER1 TNE A0,MA BOTH MUST BE CONVERTED TO REAL BVER1 TE A0,MB BVER1 J CHTF3Y BVER1 L,M R3,MODT+252 J CHTB3 CHTF3W L,M R15,6 S R15,EMODE SET EXPRESSION MODE TO BOOLEAN J ROTS BVER2 CHTSC* MV MA,EMODE . FOR OFFSET AND CONNECTOR TNZ SUDMFL J ROTS SZ SUDMFL L,H2 A0,COPND1 TE,H2 A0,N5RGFC . SPECIAL VARIABLE THAT IS LOC OF TEMP TNE,H2 A0,N5RGFB . SPECIAL VARIABLE THAT IS LOC OF CALLING J CHTDMC L,S3 A0,2,A0 TEST FOR DUMMY ARGUMENT AND,M A0,070 TNE,M A1,060 . IF CHARACTER SUBSCRIPT J ROTS . IS ABSORBED INTO SUBSTRING AND,M A0,7 WITH CONSTANT SUBSCRIPT TNE,M A1,5 . TEST FOR DUMMY ARGUMENT J CHTDMC . TNZ,S1 BSTC1+4 . TEST FOR BANKED ARRAYS J ROTS . THIS SECTION CHANGES CONSTANT SUBSCRIPTS OF DUMMY ARGUMENTS INTO . A FORM WHERE THE BASE ADDRESS OF ARRAY IS IN INDEX REGISTER . ON ENTRY COPER IS OFFSET OPERATOR . COPND1 IS POINTER TO ARRAY . COPND2 IS OFFSET ITEM CHTDMC SLJ UPSL SZ CHT11 . CLEAR TO BE USED AS FLAG JBL A0,COPND2,,S3 4 CHTDM3 L,H2 A0,COPND2 131K TLE,M A0,*0 . TEST FOR OFSET OUT OF RANGE 131K J CHTDM1 131K TZ,S4 COPND2 . TEST SIZE 131K CHTDM4 SLJ ROTSYA L,M R15,3 S,S1 R15,COPND2 . MAKE ITEM CONSTANT MVW COPND2 CHT11 . AND SAVE 131K L,M A1,040 131K S,S6 A1,F31,NSEQN . FLAG FOR PH6, IGNORE OFSET 131K CHTDM1 . 131K MVW DOSXTF SDXTF . SAVE AND SET ZERO LEVEL ALLOW 131K SR R4,DOSXTF L A0,(0102000,044) LOC FUNCTION OPERATOR S A0,COPER L A0,COPND1 SBT A14,1,A0,S1,4 SHOW USE IN EXPRESSION S A0,COPND2 L A0,(070000,0) FORCE BOTH OPERANDS TO BE INEGER S A0,COPND1 SR R4,MB MVW SUBSC SSUBSC . REMEMBER FOR LATER SR R4,SUBSC LMJ B9,TSXFX L A1,(030100,0) . DUMMY TO FORCE LOC FUNCTION L,H2 A0,COPND2 . TEST FOR SPECIAL CALLING TE,H2 A0,N5RGFC . VARIABLE THAT IS LOC OF CALLING SEQ TNE,H2 A0,N5RGFB . OR LOC OF TEMP S A1,CHT11 TNZ CHT11 . TEST ADDITION TO SUBSCRIPT J CHTDM2 131K MVW CHT11 COPND2 . THEN 131K MVW SUBNO COPND1 . ADD 131K MVW (0101200,0) COPER . OFSET 131K LMJ B9,TSEX . TO LOC 131K CHTDM2 MVW SUBNO COPND1 131K MVW (070000,0) COPND2 MVW (0101600,0) COPER TZ SSUBSC J $+3 131K TNZ,H2 LOOPNU KEEP SUBSCRIPT FROM HAVING DEFINE AT D P ON LY . WHEN THIS BIT IS SET THE SUBSCRIPT CAN MOVE PAST LABLES S,S5 R4,SUBSC PAST LABELS LMJ B9,TSEX MVW SDXTF DOSXTF . RESTORE FLAG 131K MVW SUBNO CHT11 SLJ LWSL SZ,S3 COPER MVW F31,NSEQN,S6 COPER,0,S6 S R4,DMSBCN . FLAG FOR CREATED SUBSCRIPT MVW F31+1,NSEQN COPND2 . PERHAPS OFFSET ALTERED LMJ B9,TSEX WHICH WILL BE ASSIGNED LOCATION ZERO MVW SUBNO COPND1 MVW CHT11 COPND2 L,S3 A0,F31,NSEQN 131K MVW (0101700,0) COPER S,S3 A0,COPER LMJ B9,TSEX SZ SUDMVR L B11,CHTS L A5,SUBNO J 1,B11 . THE NEXT SECTION CHANGES VARIOUS NEGATIVE OFFSETS INTO POSITIVE . ONES BY SUBTRACTING THE LARGEST NEGATIVE OFFSET FROM THE SUBSCRIPT CHTDM3 L,XH2 A4,CRMXOF . LARGEST NEGATIVE OFFSET LM A5,A4 TG,M A5,07777 J CHTDM4 S,H2 A5,CHT11 L,M A0,030100 S,H1 A0,CHT11 L,M A3,0 TP A4 L,M A3,4 S,S3 A3,CHT11 . SET SIGN L,H2 A3,COPND2 . VALUE OF OFFSET TG,M A3,07777 J CHTDM4 LN A3,A3 AN A3,A4 S,H2 A3,F31+1,NSEQN . SET NEW POSITIVE OFFSET SZ,S3 F31+1,NSEQN L,M A3,060 S,S6 A3,F31,NSEQN . TELL PHASE 6 HOW TO EDIT J CHTDM1 . THIS NEXT SECTION CHECKS FOR IMMEDIATE CONSTANTS IN EXPONENTIATION 28840 . IT ALSO DETERMINES IF THE CODING SHOULD BE DONE IN LINE 28850 CHTL* L,M R3,MODT+108 L,H2 A0,COPND2 . VALUE OF EXPONENT JNE A15,COPND2,0,T1 0301 CHTLA . NO IMMED CONSTANT 28920 . LOOK FOR SYM. TABLE 28930 TG,M A0,64 J CHTLB CHTLC SR R4,MOOP,0,S4 J CHT3B+4 . GO CHECK FOR NECESSARY CONVERSIONS CHTLB SR R4,AEX 28960 L,S1 A15,COPND1 TE,S1 A15,COPND2 J CHT6B+1 TE,M A15,3 . TEST IF BOTH ARE CONSTANTS J CHT6B+1 L,M R3,MODT+36 . USE MULTIPLY OR ADD J CHT3B+4 CHTLA LA A3,COPND2 29020 JNE A15,COPND2,0,S1 3 CHTLB . EXPNT NOT CONSTANT LA A14,0,A3 L,S3 A15,2,A3 TEST FOR DOUBLE PRECISION TEP,M A15,010 J CHTLD TEP,M A15,040 TEST FOR COMPLEX J CHTLB FA A14,(0233000,0) TE A14,0,A3 J CHTLB . EXPONENT IS NOT INTEGRAL TG A14,(64.0) J CHTLB . EXPONENT IS TOO LARGE CHTLE L A0,COPND2 L A1,MB L,S6 A0,CHDFMX,A1 IFL FNC 1 SLJ CNVT 29140 J CHTLB S A5,COPND2 J CHTLC GO CHANGE FLAG 29160 CHTLD L A15,3,A3 DFA A14,CHTLDX TE A14,0,A3 J CHTLB TG A14,(64.0D) J CHTLB J CHTLE CHTLDX +0207400,0 +0 CHTDF* SR R4,EMODE . SET MODE TO INTEGER FOR DEFINER JE A15,COPND1,0,S1 5 CHTDFS . CHECK FOR ADDITION OF CONSTANT JNE A15,COPND1,0,S1 3 CHTDFM L A0,OFPLUS . LOCATION OF OFFSET PLUS ITEM TZ,S1 BSTC1+4 . TEST FOR BANKING A,M A0,2 . SKIP PAST ADD OF REGISTER L,H2 A2,COPND1 VALUE OF SUBSCRIPT TZ,S2 COPND1 J CHDFI L,S3 A3,2,A2 SSL A3,3 TE,M A3,1 J CHTDFM L A2,0,A2 GET VALUE FROM SYMBOL TABLE CHDFI . JNBL A14,COPND1,0,S3 4 $+4 LN A2,A2 L,H2 A3,1,A0 VALUE OF OLD OFFSET TNZ,S2 1,A0 TEST FR IMMEDIATE CONSTANT L A3,0,A3 IF VALUE LARGER THAN 11 BITS IT IS IN SYMBOL TABLE JNBL A14,1,A0,S3 4 $+4 LN A3,A3 SZ,S3 1,A0 A A2,A3 RESULTANT VALUE OF OFFSET SZ SUBSC SLEAR FACT WE WERE IN A SUBSCRIPT JP A2,$+3 L,M R15,4 S,S3 R15,1,A0 STORE A 4 FOR NEGATIVE BIT LM A2,A2 S,H2 A2,1,A0 NEW VALUE OF OFFSET SR,S2 R4,1,A0 . SHOW IMMEDIATE CONSTANT CHTDFA L,S3 A1,F31-1,NSEQN SAVE SIGN FROM 1017 OPERATOR MVW 0,A0 F31-1,NSEQN S,S3 A1,F31-1,NSEQN PLACE ON 1023 OPERATOR L B6,SUBLV MVW N3SBTE,B6,S3 GETF AN,M B6,1 S B6,SUBLV MVW 1,A0 F31,NSEQN MVW 2,A0 CONRD SN,H2 A0,SUDMFL FLAG FOR CONSTANT SUBSCRIPT AX,M NSEQN,1 SZ,S3 COPER CLEAR OUT SIGN BIT J HC CHTDFS SXLOC A3 COPND1,0,T3 LNKSBX L,M B1,CHTDFX LOCATION TO REFORM JNE A15,0,A3,S6 012 CHTDFM CHECK FOR PLUS AS OPERATOR S B1,CHTFLG SET SO SIGNS WILL LOOK LIKE INPUT ITEMS LMJ B10,SXT SZ CHTFLG L,S3 A14,COPND1 XOR,S3 A14,1,B1 SET SIGN BACK FROM OPERATOR THAT WAS PERMUTED OFF S,S3 A15,1,B1 XOR,S3 A14,2,B1 S,S3 A15,2,B1 L,M A15,3 L,M B1,0 L,M B2,1 TNE,S1 A15,CHTDFX+1,B1 J CHTDFY ANX,M B2,1 AX,M B1,1 TE,S1 A15,CHTDFX+1,B1 J CHTDFM NEITHER OPERAND WAS CONSTANT CHTDFY L A0,OFPLUS TZ,S1 BSTC1+4 . TEST FOR BANKING A,M A0,2 . SKIP PAST ADD OF REGISTER L,XH2 A2,CHTDFX+1,B1 TZ,S2 CHTDFX+1,B1 TEST FOR IMEDIATE CONSTANT J CHTD22 L,S3 A3,2,A2 SSL A3,3 TE,M A3,1 J CHTDFM L A2,0,A2 VALUE IS IN SYMBOL TABLE CHTD22 . JNBL A14,CHTDFX+1,B1,S3 4 $+4 IF SIGN WERE TRANSFERED LN A2,A2 IT WILL NOT BE PART OF ADDRESS PART OF ITEM L,H2 A3,1,A0 TNZ,S2 1,A0 L A3,0,A3 IF LARGER THAN 11 BITS IT IS IN SYMBOL TABLE JNBL A14,1,A0,S3 4 $+4 LN A3,A3 VALUE OF OFFSET A A2,A3 TZ,S4 COPER JN A2,CHTDFM SZ,S3 1,A0 JP A2,$+3 L,M R15,4 S,S3 R15,1,A0 SET SIGN NEGATIVE SM,H2 A2,1,A0 NEW VALUE OF OFFSET S,S2 R4,1,A0 TNZ,S4 1,A0 J CHTDF1 L,H2 A4,1,A0 SZ,S2 1,A0 XSLT 1,CRIHL,013 L A0,OFPLUS TZ,S1 BSTC1+4 . TEST FOR BANKING A,M A0,2 . SKIP PAST ADD OF REGISTER S,H2 A1,1,A0 CHTDF1 L A0,COPND1 JNE A15,CHTDFX+1,B2,S1 5 CHTDFQ L,H2 A2,CHTDFX+1,B2 IF EXPRESSION CAME FROM STATEMENT SXLOC A2 A2 FUNCTION DEFINITION POINT ARE NOT LNKSBX SXLOC A3 A0 PROPAGATED NORMALLY LNKSBX MVW 2,A3 2,A2 TP 3,A2 J CHTDFQ EXPRESSION HAS BEEN MOVED SO IT CANT SEPARATE LR,M R2,1 MASK TO PROPAGE BIT BACK WHICH L,S4 A14,1,A2 SAYS SUBSCRIPT MUST BE BROKEN UP MLU,S4 A14,1,A3 S,S4 A15,1,A2 CHTDFQ . CHTDQF MVW CHTDFX+1,B2 COPND1 REPLACE EXPRESSION WITH ITS VALUE CHTDFV LMJ B11,DELZ REMOVE ONLY LAST INSTRUCTION J ROTS CHTDFM LA A0,MA EX CHDFMX,A0 BRAMCH ON MODE OF COPND1 S,S1 A0,MODET NUMBER OF INTRINSIC FUNCTION J CHTB THROW IN CONVERT OPERATOR . THIS SECTION INSERTS THE NECESSARY CONVERSION OPERATOR FOR OPERAND 2 29170 CHC4 L,S2 A4,MODET NUMBER OF INTRINSIL FUNCTION SLJ CHTC2 BVER1 L A0,CHMDCQ SZ,H2 CHMDCQ L B6,FNC JZ A0,CHT9 L A0,COPND2 L,S1 A15,COPND2 TNE,M A15,3 S A0,CONRD J CHTF4 CHTC2R SLJ UPSL REENT S,H2 A4,COPER STORE FUNCTION NUMBER BVER1 MVW (070000,0) COPND1 . DUMMY ITEM 292300 MVW 0102000,0,M COPER,0,H1 OCT 1 LMJ B9,TSXFX . PUT CONVERT OP INTO TABLES 292600 L A5,EMODE SLJ LWSL S A5,MB MODE OF CONVERT OPERATOR IS MODE OF B MV SUBNO,COPND2 . TRANSFERS ITEM FOR EXPRESSION 29290 MVW (050000) SUBNO,0,H1 J *CHTC2 BVER1 . THIS SECTION INSERTS THE NECESSARY CONVERSION OPERATOR FOR OPERAND 1 29310 CHTB L,S1 A4,MODET NUMBER OF INTRINSIC FUNCTION BVER1 SLJ CHTB2 BVER1 J CSC GO CHECK FOR SPECIAL CONSTANTS BVER1 CHTB2R SLJ UPSL REENT MVW MA MB MVW COPND1 COPND2 S,H2 A4,COPER STORE FUNCTION NUMBER BVER1 MVW (070000,0) COPND1 . DUMMY ITEM 293700 MVW 0102000,0,M COPER,0,H1 OCT 1 LMJ B9,TSXFX . PUT CONVERT OP INTO TABLES 294000 L A5,EMODE SLJ LWSL S A5,MA MODE OF CONVERT OPERATOR IS MODE OF A L,S1 A0,COPND1 MVW SUBNO COPND1 MVW (050000) SUBNO,0,H1 TNE,M A0,3 J CHTB3J JE A15,COPER,0,S2 15 CHT TNZ SUBSC IF CONVERT WITHIN SUBSCRIPT FORCE IT OUT J *CHTB2 BVER1 SXLOC A0 SUBNO,0,T3 LNKSBX SBT A14,1,A0,S4,1 SET J1 SO CONVERT WILL SEPARATE L,T3 A4,2,A0 CHANGE TO A NONZERO LEVEL TNE A4,(-0) EXPRESSION IF CONVERT IS WITHIN SUBSCRIPT SZ,S6 2,A0 SR R4,SUBSV J CSC CHTB3J JNE A15,COPER,0,S2 13 CHT SZ,S6 COPER J CHT . THIS SECTION DETERMINES THE MODE OF THE OPERAND WHOSE ID IS A2 AND 29460 . WHOSE SYMBOL TABLE REFERENCE IS A0, WHOSE TYPE IS A1, AND WHOSE ID IS 29470 . IN A2 29480 CHTA AV A2 14 CHTAX . BRANCH ON OPERAND ID J 0,B11 CHTAX SLJ XERV 0 ERROR L,M A15,1 1 J CHTA3 2 J CHTA7 3 L,M A15,1 4 J CHTA4 5 SLJ XERV 6 J CHTA8 SLJ XERV 8 L,M A15,1 9 SLJ XERV 10 SLJ XERV 11 STATEMENT LABEL SLJ XERV 12 GEN LABEL L,M A15,0 13 STATEMENT REF L,M A15,0 14 FORMAT REF CHTA3 LA,016 A14,070 MASK TO LOAD MODE WITH 29710 AND,013 A14,2,A0 29720 SSL A15,3 29730 TNE,M A15,7 L,M A15,6 . TREAT OCTAL AS BOOLEAN J 0,B11 29740 CHTA4 L,S3 A14,SUBEXD,A0 AND,M A14,7 EXTRACT MODE OF SUBEXPRESSION J 0,B11 BVER2 CHTA1 L,M A15,1 J 0,B11 29790 CHTA7 JZ A1,CHTA3 29830 TE,M A1,2 J CHTA1 LA,M A15,5 J 0,B11 CHTA8 L,M A15,7 TNE,M A1,077 J CHTA3 L,S2 A1,COPER . TEST FOR PLUS OPERATOR TNE,M A1,012 L,M A15,1 . SET TYPE TO INTEGER J 0,B11 . THIS SECTION REORDERS A TRIAD FOR MAXIMUM SEARCHING AND ALSO CHECKS 31350 . FOR SPECIAL CASES SUCH AS A/A A-A AND AN OPERATOR ASSOCIATED WITH 31360 . TWO CONSTANTS 31370 ROT* LA,H2 A0,COPND1 31420 TNE,H2 A0,COPND2 31430 J ROT5 31440 ROT2 LR R15,OPNDFL JGD R15,ROT3-1 SR R15,OPNDFL ROT1 LA,012 A0,PEROP 31580 SSL A0,3 TLE,016 A0,3 31600 J $+2,A0 31610 J ROT33 J ROT4 G=0 31630 J ROT4 J ROT3 G=2 31650 J ROTS S R15,OPNDFL ROT3* L,S2 A1,COPER TE,M A1,10 TEST FOR PLUS J ROT33 ROTPL* . THIS SECTION SEEKS TO COMBINE CONSTANTS WHEN THE FOLLOWING . COMBINATION OCCURS EXP +C +C THAT IS EXP PLUS A CONSTANT FORMS . A TRIAD WHICH HAS TO BE DESTROYED AND REFORMED WHEN A CONSTANT IS ADDED . TO IT JE A15,MA 5 ROTPLL ROTPLN JE A15,MB 5 ROTPLM ROTPL2 . JNE A15,COPND1,0,S1 3 ROTPLC JNE A15,COPND2,0,S1 5 ROT33 ROTPLD SXLOC A3 COPND2,0,T3 SXLOC L,M B1,CHTDFX LOCATION TO REFORM L,S6 A15,0,A3 IF OPERATORS ARE THE SAME TRY TO LOCOPT TNE A15,A1 COMBINE CONSTANTS LOCOPT J ROTPLY LOCOPT TNE,M A1,10 LOCOPT J ROTPLB TEST FOR ADDS T OFFSETS ECT LOCOPT TE,M A15,11 MULTIPLY CAN OCCUR WITH DIVIDE LOCOPT J ROT33 LOCOPT ROTPLY . LOCOPT L,S5 A14,0,A3 AND,M A14,070 TNE,M A15,040 J ROTPLA JZ A15,ROTPLA AND,M A14,7 TNE,M A15,4 J ROTPLA JNZ A15,ROT33 ROTPLA S B1,CHTFLG SET SO SIGNS WILL LOOK LIKE INPUT ITEMS LMJ B10,SXT SZ CHTFLG L,S3 A13,COPND2 XOR,S3 A13,0,B1 XOR,S3 A14,1,B1 SET SIGN BACK FROM OPERATOR THAT WAS PERMUTED OFF S,S3 A15,1,B1 L,S2 A13,0,B1 LOCOPT TE,M A13,10 TEST FOR PLUS BEFORE SETTING SIGN TO BOTH LOCOPT J $+3 LOCOPT XOR,S3 A14,2,B1 S,S3 A15,2,B1 L,S1 A15,1,B1 TE,M A15,3 COPND1 WAS THE NN CONSTANT ITEM J ROTPLT LOCOPT L A14,1,B1 L A15,2,B1 S A15,1,B1 S A14,2,B1 ROTPLW . LOCOPT SLJ UPSL L A0,COPND2 LOCOPT S A0,BCPND1 SAVE EXPRESSION LOCOPT MVW CHTDFX+2 COPND2 . SZ,S3 COPER SET SIGN PLUS SZ,S3 CHTDFX LOCOPT L A13,CHTDFX LOCOPT L A14,COPND1 LOCOPT L A15,COPND2 LOCOPT S A15,CONFCF SET TO IHNIBIT NON INTEGRAL DIVDES LOCOPT SLJ CAR LOCOPT J ROTOV LOCOPT J ROTPLV CONSTANTS COULD NT COMBINE LOCOPT SLJ LWSL SZ CONFCF LOCOPT S A15,COPND1 SET RESLT LOCOPT L A0,BCPND1 LOCOPT LMJ B11,DELZ LOCOPT MVW CHTDFX+1 COPND2 J RTPLJ ROTPLL L,S3 A14,COPND1 AND,M A14,4 JZ A15,ROTPLN SLJ UPSL MVW (030100,1) COPND2 SZ,S3 COPND1 MVW (0102100,013) COPER LMJ B9,TSEX L A5,SUBNO SLJ LWSL S A5,COPND1 J ROT33 ROTPLM L,S3 A14,COPND2 AND,M A14,4 JZ A15,ROTPL2 SLJ UPSL MVW (030100,1) COPND1 SZ,S3 COPND2 MVW (0102100,013) COPER LMJ B9,TSEX L A5,SUBNO SLJ LWSL S A5,COPND2 MVW COPER,0,S3 COPND2,0,S3 SZ,S3 COPER J ROT33 ROTPLV SLJ LWSL LOCOPT SZ CONFCF LOCOPT J ROT33 COMBINATION COULD NOT BE MADE LOCOPT ROTPLT L,S2 A13,0,B1 LOCOPT TNE,M A13,11 LOCOPT J ROT33 SKIP IF DIVIDING INTO A CONSTANT LOCOPT J ROTPLW LOCOPT ROTPLC TE,M A15,5 J ROT33 JNE A15,COPND2,0,S1 3 ROT33 L A15,COPND1 L A14,COPND2 S A14,COPND1 S A15,COPND2 J ROTPLD ROTPLB TE,M A15,020 . LOOK FOR LOC FUNC 131K J ROT33 131K JNE A15,1,A3,S6 044 ROT33 131K L,S3 A14,COPND2 AND,M A14,4 NO OPTIMIZATION JNZ A15,ROT33 LOC FUNCTION ROUTINE L,H2 A0,COPND1 . CONST ITEM 131K TZ,S2 COPND1 131K J ROTPLE . NOT A SYM CONST 131K L,S3 A1,2,A0 . GET 131K SSL A1,3 . TYPE 131K TE,M A1,1 131K J ROT33 . NOT INTEGER 131K L A0,0,A0 . VALUE 131K TG,M A0,07777 TEST IF TOO BIG TO ADD TOOFFSET J ROT33 ROTPLE S A0,SVOPND . IS SAVED 131K L,S3 A13,COPER 131K XOR,S3 A13,COPND1 131K TEP,M A14,4 . TEST FOR NEG 131K SN A0,SVOPND 131K S B1,CHTFLG . MAKE ITEMS LOOK LIKE F30 131K LMJ B10,SXT 131K SZ CHTFLG 131K L A3,1,B1 . OBJECT OF LOC 131K SZ A13 . ASSUMED OFFSET 131K JE A15,1,B1,S1 2 ROTPLF . LOC(VAR) 131K TE,M A15,5 131K J ROT33 . NOT LOC(SBX) 131K SXLOC A3 A3 . LOOK FOR OFFSET PLUS SXLOC JNE A15,0,A3,S6 023 ROT33 . ACCEPT NO SUBSTITUTES 131K LMJ B10,SXT . MAKE ITEMS LOOK LIKE F50 131K L A3,2,B1 . VAR ITEM 131K L,XH2 A13,1,B1 . VALUE OF OFFSET 131K ROTPLF L,S3 A0,2,A3 131K AND,M A0,7 131K JNZ A1,ROT33 . EXIT DUMMY 131K SLJ UPSL 131K MVW DOSXTF SDXTF . SAVE ZERO LEVEL FLAG 131K S R4,DOSXTF . AND SET 131K S A3,COPND1 . VAR 131K A A13,SVOPND . CONST+OFFSET 131K SM A13,COPND2 . TO CONST ITEM 131K L,M A14,040100 . CONST ID 131K TP A13 131K A,M A14,4 . AND SIGN 131K S,H1 A14,COPND2 131K MVW (0102300,0) COPER . OFFSET PLUS 131K LMJ B9,TSEX 131K MVW (070000,0) COPND1 . DUMMY 131K MVW SUBNO COPND2 . OFFSET EXP 131K MVW (0102000,044) COPER . LOC 131K LMJ B9,TSXFX 131K L A0,SUBNO . SAVE FINAL EXPRESION 131K SLJ LWSL . DOWN STACK 131K MVW SDXTF DOSXTF . RESTORE ZERO LEVEL FLAG S A0,CONRD . UNTIL NOW 131K L A0,COPND2 . ORIGINAL LOC 131K LMJ B11,DEL+1 131K J HC 131K RTPLJ L A10,COPND2 L A3,COPND2 L,S1 A1,COPND2 TE,M A1,5 TEST FOR SUBEXPRESSION J CHT TEST FOR REMOVING ONE OPERAND LOCOPT SXLOC A3 A3 LNKSBX LMJ B11,ITVSY J CHT TEST FOR REMOVING ONE OPERAND LOCOPT ROT33* TZ,S6 COPER J ROTS . DO NOT PERMUTE SPECIAL OPERATIONS ETV A0,PEROP,0,S1 2 9 ROT6 . JUMP ON B ROT4 L A13,COPER LA A14,COPND1 31690 LA A15,COPND2 31700 SLJ CAR EVALUATE THE TWO CONSTANTS 31710 J $+4 . .ERROR EXIT 31720 J ROT3 . REDUCTION COULD NOT BE MADE 31730 SA A15,CONRD STORES RESULT 31740 J HC RETURN TO TRIAD FORMER 31750 ROTOV* XERF ERRAX+16 . CONSTANTS COULD NOT BE COMBINED TNZ CNVFLG J ROT3 L A15,FNC AN A15,DAD DECRMENT FOR FUNCTION BUT NOT FOR COMMA S A15,FNC J *CNVT ROT5 LA,014 A0,COPER OPERATOR TYPE 31770 LA,S1 A15,COPND1 TE,S1 A15,COPND2 J ROT2 TNE,016 A0,11 31780 J ROTD3 FORM 1 FOR RESULT OPER WAS DIVIDE 31790 TE,016 A0,10 31800 J ROT2 TZ NGCN CKIP COMBINING FUNCTION ARGUMENTS J ROT2 LA,S3 A4,COPND1 . TEST IF EITHER HAS UNARY MINUS 31830 XOR,S3 A4,COPND2 31840 AND,M A5,4 318410 JZ A6,ROT2 SLJ RDEL LA A1,(030100,0) SA A1,CONRD 31890 J HC RETURN TO TRIAD FORMER 31900 ROT6 J ROT7 B=0 31910 J ROTB B=1 31920 J ROTA . IN ORDER TO MAKE AS MANY TRIADS LOOK ALIKE AS POSSIBLE, FOR . +,*,AND / THE SIGN OF COPND1 IS XORED AGAINST ITSELF . COPND2 AND COPER. FOR .EQ. AND .NE. THE SAME EXCEPT THE . OPERATOR IS LEFT ALONE WHILE FOR THE REMAINING RELATIONALS . THE XORING IS AGAINST THE OPERATOR SUBTYPE. IN ADDITION . THE OPERATOR SIGN (.NOT.) OF RELATIONS IS XORED AGAINST . THE SUBTYPE AND SET TO ZERO ROTA L,S3 A13,COPND1 . ALWAYS TAKE MINUS SIGN OFF OF COPND1 AND,M A13,4 TZ,H2 POLG J ROTS . DO NOT PERMUTE SIGNS IN SUBSCRIPT TERMS ROTA6 TV A0,PEROP,0,S2 5 ROTA1 ROTA1 J ROTA5 . *,/ J ROTA3 .GE,GT,LE,LT J ROTS .OTHER J ROTA4 .NE,EQ J ROTA2 . + J ROTA7 ROTA2 TZ SUBSC J ROTS XOR,S3 A14,COPER SA,S3 A15,COPER XOR,S3 A14,COPND2 S,S3 A15,COPND2 SZ,S3 COPND1 J ROTS ROTA3 LMJ B10,RTESOP XOR,S3 A14,COPND2 S,S3 A15,COPND2 SSL A14,2 XOR,S2 A14,COPER S,S2 A15,COPER SZ,S3 COPND1 L,S3 A13,COPER BUG U127 SSL A13,2 BUG U127 AND,M A13,1 BUG U127 JNB A14,ROTS . JUMP IF NO .NOT. HANGER ON COPER U127 L,S2 A13,COPER BUG U127 XOR,M A13,016 S,S2 A14,COPER BUG U127 SZ,S3 COPER . REMOVE THE .NOT. HANGER BUG U127 J ROTS BUG U127 ROTA4 LMJ B10,RTESOP ROTA4A L,S3 A13,COPER SSL A13,2 AND,M A13,1 XOR,S2 A14,COPER S,S2 A15,COPER SZ,S3 COPER J ROTS RTESOP L A0,NSEQN AN,M A0,1 L,S1 A15,F31,A0 TE,M A15,10 AN,M A0,1 L,S2 A15,F31,A0 TLE,M A15,020 TLE,M A15,4 J 0,B10 J ROTS ROTA5 TZ SUBSC J ROTS SZ,S3 COPND1 . FOR * AND / XOR,S3 A14,COPER S,S3 A15,COPER L,S3 A12,COPND2 . COPND1 IS XORED AGAINST ITSELF AND SZ,S3 COPND2 . THE OPERATOR THE COPND2 IS TREATED XOR,S3 A12,COPER . THE SAME WAY S,S3 A13,COPER J ROTS ROTA7 L,S3 A14,COPER XOR,S3 A14,COPND1 S,S3 A15,COPND1 XOR,S3 A14,COPND2 S,S3 A15,COPND2 J ROTA4A . NOT(A OR/AND B)=(NOTA AND/OR NOTB) ROT7 L,M A4,6 CHECK OPERANDS FOR BOOLEAN MODE BVER2 TE A4,MA IF EITHER BOOLEAN, DO NOT PERMUTE BVER2 TNE A4,MB BVER2 J ROTA BVER2 L A4,COPND1 BVER2 L,M A5,3 TNE,S1 A5,COPND1 A A4,(0200000,0) L A6,COPND2 L,S1 A7,COPND2 TNE,M A7,3 A A6,(0200000,0) AND A4,(0770000777777) AND A6,(0770000777777) TLE A5,A7 J ROTA NO INTERCHANGE REQUIRED 32020 ROT8 LA A0,COPND1 32030 LA A1,COPND2 32040 SA A0,COPND2 32050 SA A1,COPND1 32060 J ROTA 32070 ROTB L,M A4,6 BVER2 TE A4,MA BVER2 TNE A4,MB BVER2 J ROTA BVER2 L,H2 A4,COPND1 BVER2 TG,H2 A4,COPND2 J ROTA COP A4,COPER,S2 . CHANGES OPERATOR TYPE J ROT8 32120 ROTS* L,S2 A0,COPER TZ SUDMVR . TEST FOR DUMMY ARGUMENT J ROTSDM . IT WAS A DUMMY ARGUMENT TNZ,S1 BSTC1+4 . TEST FOR BANKING J ROT131 . CONTINUE JNE A15,COPER,0,T1 01016 ROT131 L A0,OFPLUS A,M A0,2 . ITEMS ARE PUSHED BY TWO FOR BANKING TZ,S6 0,A0 . SEE IF OFFSET ALREADY MODIFIED J ROTSA L A1,2,A0 . SYM POINTER OF SUBSCRIPTED VAR L,H2 A3,1,A0 . VALUE OR SYN PTR TO OFFSET TNZ,S2 1,A0 . TEST IF IMMEDIATE L A3,0,A3 . VALUE FROM SYM TABLE JNBL A14,1,A0,S3 4 ROTSDM1 . TEST I LN A3,A3 . COMPLIMENT OFFSET ROTSDM1 A,H2 A3,1,A1 . ADD RELATIVE STORAGE ASSIGNMENT JP A3,ROT131 . NO PROBLEMS SLJ UPSL L,XH2 A4,CRMXOF LM A5,A4 . GET VALUE OF LARGEST NEGATIVE OFFSET S,H2 A5,COPND2 . SET TO ADD TO SUBSCRIPT L,M A3,0 TP A4 L,M A3,4 . DETERMINE SIGN FOR OPERAND S,S3 A3,COPND2 . SET SIGN ON OPERAND L,M A3,0301 . ID FOR IMMEDIATE CONSTANT S,T1 A3,COPND2 LN,H2 A3,1,A0 . CURRENT VALUE OF OFFSET AN A3,A4 . COMPUTE POSITIVE OFFSET S,H2 A3,1,A0 . STORE NEW POSITIVE OFFSET SZ,S3 1,A0 . CLEAR NEGATIVE CARD L,M A3,060 S,S6 A3,0,A0 . TELL PHASE VI HOW TO EDIT S R4,MB . SET MODE TO INTEGER L A0,(0101200,0) . PLUS OPERATOR S A0,COPER LMJ B9,TSEX L A5,SUBNO SLJ LWSL S A5,COPND1 . REPLACE SUM IN SUBSCRIPT J ROTSA ROTSDM JNE A15,COPER,0,T1 01016 ROTSA SLJ UPSL L A0,(0102000,044) LOC FUNCTION OPERATOR S A0,COPER L A0,SUDMVR SYM REF OF SUBSCRIPTED VARIABLE SBT A14,1,A0,S1,4 SHOW USE IN EXPRESSION S A0,COPND2 L A0,(070000,0) S A0,COPND1 SZ SUDMVR MVW DOSXTF SDXTF . SAVE AND RESTORE ZERO LEVEL FLAG 131K S R4,DOSXTF SR R4,MB LMJ B9,TSXFX L A0,OFPLUS L,H2 A3,1,A0 131K TNZ,S2 1,A0 L A3,0,A3 JBL A14,1,A0,S3 4 NONGA . IF OFFSET NEGATIVE TLE,M A3,*0 . OR OUT OF RANGE 131K J ROTSB 131K NONGC . RETURN FOR OUT OF RANGE L,M A1,040 131K S,S6 A1,0,A0 . SET IGNORE FLAG 131K MVW 1,A0 COPND2 131K L,M R15,3 S,S1 R15,COPND2 MAKE ITEM A CONSTANT NONGB MVW SUBNO COPND1 MVW (0101200,0) COPER L,H2 A1,COPND2 L A4,A1 TNZ,S2 COPND2 L A4,0,A1 TG,M A4,07777 SLJ ROTSYA . MAKE SYM ENTRY L,M R15,3 S,S1 R15,COPND2 CONVERT OFFSET TO CONSTNAT AND ADD TO SUBSCRIPT LMJ B9,TSEX ROTSB L A0,SUBNO S A0,COPND2 L A0,(0101200,0) S A0,COPER L,H2 B1,CTRST LX A0,TRST-10,B1 S A0,COPND1 LMJ B9,TSEX 131K SLJ LWSL MVW SUBNO COPND1 131K LMJ B9,TSEX 131K MVW SDXTF DOSXTF . RESTORE FLAG 131K J ROTSY 131K NONGA L,XH2 A4,CRMXOF . LARGEST NEGATIVE OFFSET LM A5,A4 TG,M A5,07777 . TEST FOR RANGE J NONGC . ONLY OPTIMMIZE IMMEDIATES S,H2 A5,COPND2 . SET TO ADD TO SUBSCRIPT L,M A3,0 TP A4 L,M A3,4 . SET NEGATIVE; MOST LIKELY S,S3 A3,COPND2 L,M A3,0301 . ID FOR IMMEDIATE CONSTANT S,T1 A3,COPND2 L,H2 A3,1,A0 . CURRENT VALUE OF OFFSET TG,M A3,07777 J NONGC LN A3,A3 AN A3,A4 . COMPUT POSITIVE OFFSET S,H2 A3,1,A0 . STORE NEW POSITIVE OFFSET SZ,S3 1,A0 . CLEAR NEGATIVE SIGN L,M A3,060 S,S6 A3,0,A0 . TELL PHASE 6 HOW TO EDIT J NONGB ROTSA* LMJ B9,TSEX ROTSY LX B11,CHTS L A5,SUBNO J 1,B11 RTSYAR SZ,S2 COPND2 XSLT 1,CRIHL,013 S,H2 A1,COPND2 J *ROTSYA 131K . ROT131 EXPEXTS ONE OF TWO THINGS 131K . 1) AN OFSET PLUS 131K . IN THIS CASE IF 131K CODE IS TO BE GENERATED AN ADDITIONAL DEFINER 131K . AND CONECTOR IS MADE WITH THE SIGN OF THE OFSET + ON THE CONECTOR 131K . 2) A SUBSCRIPT DEFINER 131K . IN THIS CASE THE OFSET + IS FLAGED SO IT WILL NOT COME THRU THIS 131K . MECANISM A SECOND TIME 131K . IN EITHER CASE IF CR131K IS SET THE LOC OF THE VARIABLE ( OR , FOR 131K . COMMON , THE 1ST ELEMENT OF THE BLOCK ) IS MOVED TO THE SUBSCRIPT . 131K . IF THE CONTENTS OF THE U FEILD WILL SET BIT 17 OR 18 THEN THE OFSET IS 131K . MOVED TO THE SUBSCRIPT ALSO . 131K ROT131 MVW COPND1 SVOPND 131K . SLJ TON$ SZ OFPLSF TE,M A0,023 . OFSET + 131K J ROTK 131K TZ,S4 COPER 131K J ROTSA . UGNORE IF PART OF DEFINER 131K L,M A0,F31,NSEQN 131K MVW 0,A0,S3 SBVSGN . SAVE SIGN OF OFSET PLUS 131K SZ,S3 0,A0 . CLEAR SIGN OF OFSET PLUS 131K L A2,COPND1 . KLUDGE COPND1 131K S A2,2,A0 . SO LATER CODE CAN FIND IT 131K TZ,T3 CR131K S A0,OFPLSF 131K MVW (070000,0) SVOPND 131K MVW SUBSC SSUBSC . REMEMBER FOR LATER 131K J ROTK6J ROTK TNE,M A0,016 131K TNZ SUBSC 131K J ROTSA . NOT A TRUE SUBSCRIPT CONECTOR 131K L,S4 A0,COPER TNE,M A0,077 J ROTSA L A0,OFPLUS . LOC OF OFSET PLUS ITEM 131K S,S4 R5,0,A0 . SET IGNORE FLAG 131K TZ,S1 BSTC1+4 . TEST FOR BANKING A,M A0,2 . SKIP PAST ADD OF REGISTER S R4,SSUBSC . MAKE DUMMY SETTING 131K ROTK6J L A1,2,A0 L,H2 A3,1,A0 TNZ,S2 1,A0 TEST IF OFFSET IN SYMBOL TABLE L A3,0,A3 GET VALUE OF OFFSET L A4,A3 JNBL A14,1,A0,S3 4 $+4 . VALUE OF 131K LN A4,A4 . OFSET 131K A,H2 A4,1,A1 . ADD REL STOR1GE ASSIGNMENT 131K L,H2 A5,1,A1 131K TNZ,T3 CR131K J ROTK5 . NOT 131K CODE 131K L A3,ARYITM 131K TP 1,A1 131K TZ,S1 2,A1 131K J ROTK1 . NOT IN COMMON 131K L,H1 A2,1,A1 131K AND,M A2,07777 . GET STORAGE CLASS 131K AN A3,CRSTC4 131K L A13,A3 AN,M A3,1 TG,H2 A3,CRC TEST IN RANGE J ROTK1+1 SLJ FNLBCK FIND LABELED COMMON BLOCK ENTRY L,H1 A3,1,B10 . SYM POINTER TO FIRST ENTRY IN BLOCK A A3,(020000,0) . AND MAKE VAR ITEM FOR SUBNO 131K . IN THIS SECTION IF THE OFSET IS OUT OF RANGE REPLACE SUBNO WITH THE 131K . OFSET SUBEXPRESION 131K ROTK1 S A3,SUBNO 131K SBT A14,1,A1,S1,4 . SET BIT TO SHOW USE IN TRIAD 131K MVW DOSXTF SDXTF . SAVE ZERO LEVEL ALLOW 131K S R4,DOSXTF . AND SET 131K JN A4,$+3 131K AN,M A4,0177777 131K JN A4,ROTK2 . WITHIN RANGE 131K S A0,A15 . SAVE FOR A BIT . TP A4 . SLJ TON$ L,M A6,0 L A9,A4 L,M A8,0 JN A9,ROTKJ2 L,M A8,5 . COUNT 54K INCREMENTS FOR EDITING L,M A6,0177777 . FIRST INCREMENT OF 65K ROTKJ1 TLE,M A9,0177777 . TEST IF RESIDUAL OVER 65K J ROTKJ2 . IT WAS NOT A,M A6,0177777 . BOOST COMMON OFFSET BY 65K AN,M A9,0177777 . REDUCE RESIDUAL BY 65K A,M A8,4 . TELL PHASE VI TO ADD ANOTHER 65K J ROTKJ1 . LOOP AGAIN ROTKJ2 JNZ A8,ROTKJ5 L A6,A9 SZ A9 ROTKJ5 LM A4,A6 . SET TO MAKE SYM TABLE ITEM LM A7,A9 XSLT 1,CRIHL,013 LXI,M A1,0 . REMOVE INCREMENT A A1,(040000,0) . FORM SYM TABLE ITEM TP A6 A A1,(04,0) . SET NEGATIVE BIT S A1,A6 TLE,M A7,07777 . SEE IF RESIDUAL CAN BE IMMEDIATE J ROTKJ3 L A4,A7 . SET TO MAKE SYM TABLE ITEM XSLT 1,CRIHL,013 . PUT INTEGER CONSTANT IN SYM TABLE LXI,M A1,0 . REMOVE INCREMENT A A1,(040000,0) S A1,A7 J $+2 ROTKJ3 A A7,(040100,0) TP A9 . TEST SIGN OF OFFSET A A7,(04,0) L A0,A15 . RESTORE A0 SLJ UPSL 131K S R4,SUBSC . SET SUBSCRIPT FLAG 131K S R4,MB 131K MVW SUBNO COPND1 . VARIABLE 131K S A6,COPND2 . MULTIPLE OF 65K S A7,1,A0 . RESIDUAL OFFSET MVW 0,A0 COPER . OFSET + 131K L,S6 A1,0,A0 131K A A1,A8 . ADD EDITING BITS FOR PHASE VI A,M A1,040 131K S,S6 A1,0,A0 . PH6 FLAG, OFSET HAS BEEN MOVED 131K LMJ B9,TSEX . MAKE SUBEXPRESION 131K L,M R15,5 S,S1 R15,SUBNO J ROTK2+1 131K . NOW THE LOC OF SUBNO IS TAKEN 131K ROTK2 SLJ UPSL 131K S R4,SUBSC . SET SUBSCRIPT FLAG 131K S R4,MB 131K MVW (070000,0) COPND1 . DUMMY 131K MVW SUBNO COPND2 131K MVW (0102000,044) COPER . LOC FUNCTION 131K LMJ B9,TSXFX . ENTER TSEX W/OUT CHANGING FUNC LEVEL 131K L,M R15,5 S,S1 R15,SUBNO MVW SUBNO COPND1 131K . ON ENTERING THIS SECTION COPND1 WILL CONTAIN A LOC FUNC FROM ABOVEOR AN 131K . OFSET FROM ROTK5,SVOPND HAS A SUBSCRIPT FOR A DEFINER OR A DUMMY FOR AN 131K . OFSET +. 131K ROTK3 MVW SVOPND COPND2 131K L A0,(0101200,0) . PLUS FOR DEFINER 131K TZ OFPLSF . OR 131K L A0,(0101600,0) . DEFINER FOR OFSET + 131K S A0,COPER . TO COPER 131K TZ SSUBSC . IF NOT ALREADY SET 131K J $+3 131K TNZ,H2 LOOPNU . AND AT ZERO LOOP 131K S,S5 R4,SUBSC . ALLOW SUBSCRIPTS TO FLOAT 131K TZ OFPLSF LOCCMP J ROTK9 LOCCMP L,S1 A3,COPND2 LOCCMP TE,M A3,5 LOCCMP J ROTK9 LOCCMP SXLOC A3 COPND2,0,T3 LNKSBX L,S6 A13,0,A3 L,M A14,010 TOP,S4 A14,3,A3 S,S5 R4,SUBSC DO NOT LET SUM COME APART TE,M A13,012 TEST FOR PLUS J ROTK9 L,M B1,CHTDFX LOCCMP S B1,CHTFLG LOCCMP LMJ B10,SXT REFORM EXPRESSION LOCCMP SZ CHTFLG LOCCMP L,S3 A13,COPND2 SET SIGN BACK THAT WAS TAKEN OFF LOCCMP XOR,S3 A13,0,B1 LOCCMP XOR,S3 A14,1,B1 LOCCMP S,S3 A15,1,B1 LOCCMP XOR,S3 A14,2,B1 LOCCMP S,S3 A15,2,B1 LOCCMP L A11,COPND1 LOCCMP AND A11,(0777700,0777777) LOCCMP L A13,1,B1 LOCCMP AND A13,(0777700,0777777) LOCCMP TE A12,A14 LOCCMP J ROTLCA TRY OTHER OPERAND LOCCMP ROTLCB L,S3 A13,COPND1 LOCCMP XOR,S3 A13,1,B1 LOCCMP AND,M A14,4 LOCCMP JZ A15,ROTK9 EXPRESSIONS DO NOT DIFFER IN SIGN LOCCMP L A0,COPND1 LOCCMP LMJ B11,DELZ REDUCE USES OF LO EXPRESSION LOCCMP L A0,COPND1 LOCCMP LMJ B11,DELZ LOCCMP L A0,COPND2 LOCCMP LMJ B11,DELZ REDUCE BY ONE USE OF OTHER EXPRESSION LOCCMP L A5,2,B1 REULT AFTER LOC FUCNTION CANCELLATION LOCCMP SLJ LWSL LOCCMP S A5,COPND1 LOCCMP MVW SDXTF DOSXTF LOCCMP TZ OFPLSF J ROTSA LOCCMP L,M A0,077 S,S4 A0,COPER J CHTDF ROTLCA L A13,2,B1 LOCCMP AND A13,(0777700,0777777) LOCCMP TE A12,A14 LOCCMP J ROTK9 LOCCMP L A14,1,B1 LOCCMP L A15,2,B1 LOCCMP S A14,2,B1 LOCCMP S A15,1,B1 LOCCMP J ROTLCB LOCCMP ROTK9 . LOCCMP LMJ B9,TSEX 131K SLJ LWSL 131K MVW SDXTF DOSXTF . RESTORE FLAG 131K TNZ OFPLSF 131K J ROTK4 . DEFINER 131K L A0,OFPLSF 131K MVW 2,A0 COPND1 131K MVW 1,A0 COPND2 131K MVW 0,A0 COPER 131K MVW SUBNO SVOPND . SAVE DEFINER SUBEXPRESION 131K S R4,DMSBCN LMJ B9,TSEX 131K MVW SUBNO COPND1 . OFSET 131K MVW SVOPND COPND2 . DEFINER 131K MVW (0101700,0) COPER . CONECTOR 131K MVW SBVSGN COPER,0,S3 . SIGN TO CONECTOR 131K LMJ B9,TSEX 131K SZ DMSBCN 131K SZ OFPLSF 131K J ROTSY 131K ROTK4 MVW SUBNO COPND1 . FINISH DEFINER WITH NEW SUBSCRIPT 131K J ROTSA 131K ROTK5 L A1,0,A1 S A1,ERR28+1 L A1,(-01000) TZ,S1 BSTC1+4 . TEST FOR BANKING SZ A1 L A2,(0177777) L,S2 A15,COPER TE,M A15,016 TEST SUBSCRIPT DEFINER S A0,OFPLSF TNW A1,A4 . TEST OUT OF RANGE 131K J ROTSA 131K SLJ UPSL 131K JZ A5,$+3 TW A1,A5 . TEST RSA OUT OF RANGE 131K J ROTK7 131K S R4,MB L,M A1,040 131K MVW 1,A0 COPND1 131K ROTK6 L,M R15,3 S,S1 R15,COPND1 MAKE OFFSET A CONSTNAT S,S6 A1,0,A0 . PH6 FLAG 131K J ROTK3 131K ROTK7 SM A4,A5 131K TP A4 131K A A5,(04,0) 131K S A5,COPND1 1315 L,H2 A4,COPND1 S,H2 A0,ROTK7L XSLT 1,CRIHL,013 S,H2 A1,COPND1 XERF ERR28 L,M A1,041 L A0,ROTK7L J ROTK6 131K . THIS SECTION GENERATES AN ITEM OF ONE WITH THE PROPER SIGN 32600 . WHEN A DIVISION WITH 2 EQUAL OPERANDS WAS DISCOVERED 32610 ROTD3 LA A1,(030100,1) LA A12,COPND1 . RESULT IS NEGATIVE IF EITHER XOR A12,COPND2 . OPERAND IS MINUS AND A13,(04,0) 326700 OR A14,A1 326800 SA A15,CONRD 326850 L,S1 A15,COPND1 SLJ RDEL J HC RDELR TE,M A15,5 . THIS SECTION REMOVES AN EXPRESSION REENT . WHEN IT COMBINES WITH ITSELF REENT J *RDEL . FORM A CONSTANT L A0,COPND1 LMJ B11,DEL+1 . TWO USES OF THE EXPRESSION ARE REMOVED L A0,COPND1 LMJ B11,DEL+1 . A SECOND USE OF EXPRESION IS REMOVED J *RDEL . THIS SECTION FORMS POLISH REPRESENTING EXPONENTIATION WHICH SHOULD . BE DONE IN LINE. THE POLISH IS FORMED IN A REGION CALLED . SORT. A31 ITEM CAUSES THE ITEM WHICH WAS JUST FORMED TO BE . SAVED IN STACK AT THE LOCATION IN H2 OF THE ITEM A 32 ITEM . IS REPLACED BY THE ITEM SAVED IN STACK AT THE LOCATION GIVEN . IN H2 OF THE ITEM. $(2) . CHT11 +0 TEMP FOR REFORMING SUBSCRIPTS CHMDCQ* +0 CHT6DN J $-$ . HOLDS INDRECT JUMP ADDRESS ROTK7L +0 SVOPND EQU CHT11 131K OFPLSF + 0 131K SBVSGN + 0 131K SSUBSC + 0 131K SDXTF + 0 131K SSDMVR + 0 131K CHTDFX* RES 3 $(1) . CHDFMX SLJ XERV 0 J ROTS 1 INTEGER L,M A0,020 2 REAL L,M A0,026 3 DOULE PRECISSION L,M A0,046 4 COMPLEX J ROTS 5 LOGICAL J ROTS BOOLEAN NO CONVERSION J $+1 . 7 DUMMY MIGHT BE ADD OF REGISTER TNZ,S1 COPND1 SLJ XERV . ORDINARY DUMMY J ROTS . ADD OF REGISTER $(2) . CHE1 + 0,0,0303,22 + 0 CHE2 + 0,0,0303,21 + 0 $(1) . CHTMD + (0,0,0,0,0,0) CONVERSION MATRIX + (0,4,026,4,0,0) + (017,0,025,027,0,0) + (047,041,0,065,0,0) + (051,052,066,0,0,0) $(2) . CHTCMC J $-$ REENT J CHCMCR REENT CHT7SB J $-$ REENT J CH7SBR REENT CHDNTX J $-$ REENT J CDNTXR REENT CHTC2 J $-$ REENT J CHTC2R REENT CHTB2 J $-$ REENT J CHTB2R REENT ROTSYA J $-$ REENT J RTSYAR REENT RDEL J $-$ REENT J RDELR REENT SVA2 +0 SVA3 +0 SVA4 +0 SVA14 +0 LIT END