. THIS SECTION CHECKS TO SEE IF EITHER OR BOTH OPERANDS ARE CONSTANTS. 29860 . IF THEY ARE BOTH CONSTANTS THE EXPRESSION IS EVALUATED. IF EITHER 29870 . OPERAND IS ZERO OR ONE THE TRIAD IS EVALUATED 29880 RGS . REGISTER DEFINITIONS CONTR . TRIAD DEFINITIONS $(1) . LIT . CSC* LA,S2 A0,COPER TG,M A0,10 J CSCRL NOT RELATIONAL TG,M A0,4 J CSCRLA . ISOLATE .OR. .AND. OPERATORS TLE,M A0,2 J CSCRLA L,S1 A15,F31-1,NSEQN . TEST FOR RELATIONAL COMBINING WITH TE,M A15,8 . WITH ARITHMETIC OPERATORS J CSCRLA L,S2 A15,F31-1,NSEQN TLE,M A15,10 . MAKE SPECIAL CASE OUT OF J CSCRLA . PLUS, MULTIPLY, DIVIDE AND EXPONENTIAT TG,M A15,14 J CSCRLA L,S3 A14,COPND1 AND,M A14,4 JZ A15,CSCRLB SLJ UPSL MVW (030100,1) COPND2 SZ,S3 COPND1 MVW (0102100,013) COPER LMJ B9,TSEX L A5,SUBNO SLJ LWSL S A5,COPND1 CSCRLB L,S3 A14,COPND2 AND,M A14,4 JZ A15,CSCRLA SLJ UPSL MVW (030100,1) COPND1 SZ,S3 COPND2 MVW (0102100,013) COPER LMJ B9,TSEX L A5,SUBNO SLJ LWSL S A5,COPND2 CSCRLA TLE,M A0,4 J CSCRL PUT OBJECT OF RELATION IN SYM TABLE S A0,RELCF NEGATIVELY IF IT IS A CONSTANT J CHT6B CSCRL* L,S2 A0,COPER CSC5 SR R6,OPNDFL . USED TO COUNT NUMBER OF CONSTANTS IN TRIAD EX PERMT,A0 . TRANSFERS CURRENT PERMUTATION KEYS OR CSC51 SR R15,PEROP . JUMPS DEPENDING ON JE A0,COPND1,0,S1 3 CSC2 . TEST FOR CONSTANT 29930 CSC1 JNE A0,COPND2,0,S1 3 ROT . COPND2 NOT A CONSTANT 29940 L A0,OPNDFL ANA,M A0,1 S A0,OPNDFL JNBL A0,PEROP,0,S5 7 ROT . SKIP IF K=0 29960 LX A2,MB 299700 LX,M B10,1 . INDEX FOR SECOND OPERAND LMJ B11,ZRNE . DETERMINE IF COPND2 WAS ZERO OR ONE 29990 J CSCD PERFORM NECESSARY EVALUATION ON COPND 30000 CSC2 L A0,OPNDFL ANA,M A0,1 S A0,OPNDFL JE A0,COPND2,0,S1 3 CSC3 . SKIP OPTIMIZING IF BOTH CONSTANTS JNBL A0,PEROP,0,S4 7 CSC1 . H=0, CHECK SECOND OPERAND 30020 LX A2,MA 300300 LX,M B10,0 . INDEX FOR SECOND OPERAND 30040 LMJ B11,ZRNE . DETERMINE IF COPND1 WAS ZERO OR ONE 30050 J CSCC PERFORM NECESSARY EVALUTION ON COPND1 30060 CSC3 L A0,OPNDFL ANA,M A0,1 S A0,OPNDFL J ROT . COMBINED CSC4 TZ,T1 MODET . SEE IF ANY CONVERSIONS WERE DONE J CSC61 LR R15,(020202000000) TNZ,S4 MOOP . TEST FOR IN LINE EXPONENTIATION J CSC51 LA,H2 A0,COPND2 . VALUE OF EXPONENT JZ A0,CSCD3 J ILEXP . GENERATE POLISH FOR IN LINE CODING CSC61 SZ,S6 COPER . CLEAR PREVIOUS EXP NUMBER J CHT . THIS SECTION DETERMINES IF THE CONSTANT IS EITHER ZERO OR ONE. CONTP 30080 . IS SET TO 2 FOR ZERO, 1 FOR ONE AND 3 FOR MINUS ONE. 30090 ZRNE LA,H2 A1,COPND1,B10 . SYM TABLE REF 30100 SZ CONTP 30110 TZ,S2 COPND1,B10 . TEST FOR IMMEDIATE CONSTANT 30120 J CSCA7 CONSTANT WAS ON ITEM 30130 LMA A4,0,A1 FIRST WORD OF SYM TABLE REFERENCE 30140 JZ A4,CSCA4 . FIRST WORD IN SYM IS ZERO L,S3 A5,2,A1 SSL A5,3 TNE,M A5,1 J 0,B11 CONSTANT IN INTEGER AND IS NOT ZERO OR ONE TNE A4,(0200000,0) J CSCA4 TNE A4,(0200140,0) J CSCA2 TE A4,(1.0) J 0,B11 . EXIT 30190 EX $+1,A2 . JUMP ON MODE 30200 J 0,B11 . UNASSIGNED 30210 J 0,B11 . AN INTEGER ONE IN SYM IS SHIPPED 30220 J CSCA1 REAL 30230 J CSCA2 DOUBLE 30240 J CSCA3 COMPLEX 30250 J 0,B11 LOGICAL 30260 J 0,B11 FRACTIONAL 30270 J 0,B11 UNASSIGNED 30280 CSCA1 SR R4,CONTP SET FLAG TO INDICATE CONSTANT WAS 1. 30290 J 0,B11 30320 CSCA2 LMA A5,3,A1 FOURTH WORD OF SYMBOL TABLE 30330 TE A5,(0.0) . LEAST SIGNIFICANT PART OF D.P. ZERO 303400 J 0,B11 30350 J CSCA1 SET FLAG TO INDICATE CONSTANT WAS 1 30360 CSCA3 LA A5,3,A1 FOURTH WORD OF SYMBOL TABLE 30370 JZ A5,CSCA1 . FOURTH WORD IS ZERO J 0,B11 30400 CSCA4 TNE,M A2,3 30410 J CSCA6 CONSTANT MIGHT BE DOUBLE PRECISION ZE 30420 TE,M A2,4 30430 J CSCA5 CONSTANT IS NOT COMPLEX 30440 CSCA6 LA A5,3,A1 FOURTH WORD OF SYMBOL TABLE 30450 JNZ A5,0,B11 . FOURTH WORD IS NOT ZERO CSCA5 SR R6,CONTP 30480 J 0,B11 TYPE IS SET TO 2 TO INDICATE ZERO 30490 CSCA7 TNZ,H2 COPND1,B10 30500 J CSCA5 30510 JNE A15,COPND1,B10,H2 1 0,B11 305200 SR R4,CONTP 30530 J 0,B11 30550 . THIS SECTION ELIMINATES CONSTANTS 0 AND 1 FROM OPERAND 1 30570 CSCC L A15,CONTP JZ A15,CSC1 CONSTANT WAS NOT 0 OR 1 30590 TE,016 A15,2 30600 J CSCC2 LOOK AT J 30610 LA,012 A13,PEROP LOADS H 30620 AND,016 A13,07 30630 TNE,016 A14,1 30640 J CSCC1 H=1 30650 TE,016 A14,2 30660 J CSC1 30670 CSCC4 MV COPND1,CONRD . TRANSFER REDUCED TRIAD 30680 L A0,COPND2 LMJ B11,DELJ J HC RETURN TO TRIAD FORMER 30690 CSCC1 MV COPND2,CONRD . TRANSFER REDUCED TRIAD 30700 L A0,COPND1 LMJ B11,DELJ J HC RETURN TO TRIAD FORMER 30710 CSCC2 LA,011 A13,PEROP LOADS J 30720 AND,016 A13,070 30730 TNE,016 A14,020 30740 J CSCC3 J=2 30750 TE,016 A14,030 30760 J CSC1 J IS NOT EQUAL TO 3 30770 MV COPND2,CONRD . TRANSFER REDUCED TRIAD 30780 LA,S3 A12,COPND1 . IF EITHER BUT NOT BOTH OPERANDS XOR,S3 A12,COPND2 . WERE NEGATIVE THE RESULT IS S,S3 A13,CONRD J HC 30850 CSCC3 TE,016 A15,1 30860 J CSC1 CONTP NOT EQUAL TO ONE 30870 MV COPND1,CONRD . TRANSFER REDUCED TRIAD 30880 J HC 30890 . THIS SECTION ELIMINATES CONSTANTS 0 AND 1 FROM OPERAND 2 30960 CSCD L A15,CONTP JZ A15,ROT GO REORDER THE TRIAD 30980 TNE,M A15,2 30990 J CSCD1 CONSTANT WAS ZERO 31000 LA,010 A13,PEROP 31010 TLE,M A13,7 31020 J ROT L=0 31030 MV COPND1,CONRD . TRANSFER REDUCED TRIAD 31040 LA,S3 A12,COPND1 . IF EITHER BUT NOT BOTH OPERANDS XOR,S3 A12,COPND2 . WERE NEGATIVE THE RESULT IS S,S3 A13,CONRD J HC CSCD1 LA,M A1,7 31180 AND,011 A1,PEROP 31190 NOP 0 31200 J $+1,A2 J ROT K=0 31220 J CSCC4 K=1 31230 J CSCC1 K=2 31240 J CSCD2 K=3 31250 J CSCD3 K=4 31260 J ROT K=5 31270 J ROT K=6 31280 J ROT K=7 31290 CSCD2* XERF ERRAX+4 . DIVISION BY ZERO MVW (030100,0) CONRD J CSCD3J CSCD3 MVW (030100,1) CONRD CSCD3J L A0,COPND1 LMJ B11,DELJ J HC 31330 CSCCM JE A15,COPER,0,S6 07 N3FLD . GO COMPUTE SHIFT COUNTS TNE,M A15,077 J CSCFL GO TEST FOR FLD OF CONSTANT TE,M A15,6 . TEST FOR COMPLEX J $+3 L,M R15,4 SR R15,EMODE JZ A15,ROTS TG,M A15,12 J ROTS L,M A15,3 TE,S1 A15,COPND1 J CSCMOD TE,S1 A15,COPND2 J CSCMOD SLJ CARCOM J ROTS ERROR EXIT S A5,CONRD J HC CSCMOD L,S6 A15,COPER TNE A15,EMODE TE,M A15,1 J ROTS L,T1 A0,COPND2 TNE,M A0,0301 J CSCMA CSCMB . L,M A0,075 S,S6 A0,COPER L,M A15,01013 S,T1 A15,COPER J CSCRL CSCMA TE,H2 A15,COPND2 J CSCMB MVW (030100,0) CONRD J CSCD3J . REPLACE RESULT BY ZERO CSCFL SXLOC A3 COPND1,0,H2 L,S6 A15,1,A3 TE,M A15,7 J CSCFLJ L,S1 A15,COPND2 TE,M A15,3 J CSCFLS . TEST FOR MINUS SIGN L,S5 A15,0,A3 TE,M A15,044 J ROTS BOTH FLD LIMITS ARE CONSTANTS L,T1 A1,0,A3 STARTING BIT L,T2 A2,0,A3 WIDTH L,H2 A0,COPND2 TNZ,S2 COPND2 TEST FOR SHORT CONSTNAT L A0,0,A0 GET VALUE FROM SYMBOL TABLE L,M A15,4 TEP,S3 A15,COPND2 LN A0,A0 COMPLEMENT CONSTANT LSSC A0,0,A1 SSL A0,0,A2 L A4,A0 TLE,M A4,07777 J CSCFLA XSLT 1,CRIHL,013 AU A1,(030000,0) CSCFLB S A2,CONRD L,S3 A0,F31-1,NSEQN MOVE SIGN ON FLD CON S,S3 A0,CONRD L A0,COPND1 LMJ B11,DEL AN,M NSEQN,1 REMOVE FLD AND ASSOCIATED COLON LMJ B11,GET1 DISCARD VARIABLE ITEM FOR FLD L A0,FNC DECREASE FUNCTION LEVEL WHEN AN,M A0,1 S A0,FNC FLD COLON IS DISCARDED L A0,NOPER SUBTRACT OUT FLD COLON AN,M A0,1 S A0,NOPER J HC CSCFLJ . FORCE VARIABLES IN FLD TO LEFT OF EQUALS TO BE SEEN BY NAME L,S1 A15,COPND2 TE,M A15,2 . TEST FOR VARIABLE J ROTS L,H2 A0,COPND2 L,S3 A14,2,A0 . GET MODE FIELD AND,M A14,7 TE,M A15,5 . TEST FOR DUMMY ARGUMENT J ROTS SBT A14,1,A0,S1,010 . SET CALL BY NAME J ROTS CSCFLA L A2,A0 A A2,(030100,0) J CSCFLB CSCFLS L,S3 A4,COPND2 TOP,M A4,4 J ROTS SLJ UPSL SZ,S3 COPND2 . REMOVE MINUS SIGN MVW (070000,0) COPND1 . DUMMY FOR INTRINSIC FUNCTION MVW (0102000,061) COPER . COMPL FUNCTION LMJ B9,TSXFX L A5,SUBNO SLJ LWSL S A5,COPND2 J ROTS PERMT SLJ XERV . 0 ERROR J ROTS . 1 = LR R15,(0500100000) . 2 .OR. LR R15,(0500100000) . 3 .AND. LR R15,(0300100000) . 4 .EQ. LR R15,(0300100000) . 5 .NE. LR R15,(010103100000) . 6 .LT. LR R15,(010103100000) . 7 .GT. LR R15,(010103100000) . 8 .GE. LR R15,(010103100000) . 9 .LE. LR R15,(0401,010100) + LR R15,(020000020310) . 11 / LR R15,(0,023210) . 12 * J CSC4 . 13 ** J ROTS . SUBSCRIPT DEFWER J ROTS . SUBSCRIPT CONNECTOR J ROTS . FUNCTION J CSCCM SLJ XERV . BLANK J ROTS . OFFSET + SLJ XERV . 20 SLJ XERV . 21 SLJ XERV . 22 SLJ XERV . 23 J ROTS . 24 CONCATENATION END