. THIS SECTION OF CODE CHECKS A TRIAD FOR MODE CONVERSIONS AND . REORDERS A TRIAD FOR MAXIMUM MATCHING DURING SEARCHING RGS . REGISTER DEFINITIONS CONTR . TRIAD DEFINITIONS $(1) . LIT . ILEXP* LX B1,(1,0) . INDEX FOR SORT LX B4,(1,0) . INDEX FOR STA POWERS TO MULTIPLY TOGETHER LX B2,(1,0) . INDEX FOR STACK S A0,A5 SZ,S1 F31CT CLEAR SIGN FIELD SLJ SETF31 SET SO NESTED USE OF IN LINE GENERATION WORKS L A0,A5 S A0,ILXEX . SAVE LAST EXPONENT USED SZ ILXOP . SET TO EXPRESSION NUMBER IF OPERAND IS L,S1 A14,COPND1 L,H2 A15,COPND1 . EXPRESSION NUMBER TNE,M A14,5 . TEST IF OPERAND IS EXPRESSION S A15,ILXOP . SAVE EXPRESSION NUMBER SZ ILXP . FLAG WORD JNBL A14,COPND2,0,S3 4 ILEXP1 . EXPONENT IS NOT NEGATIVE JE A15,F31-1,NSEQN,S2 014 ILEXP2 . LAST OPERATOR WAS * TNE,M A15,013 J ILEXP5 . WAS A DIVIDE SR,S1 R4,ILXP . FLAG TO CREATE DIVISION LR R15,(0101300,0) . INSERT DIVIDE OPERATOR SR R15,SORT,*B1 ILEXP1 JNB A0,ILEXP3-2 . FIRST POWER IS NOT NECESSARY MVW COPND1 N3STCK SZ,H2 ILRS LR R15,ILRS SR R15,STA,*B4 MVW COPND1 ILDP ILEXP3 SSL A0,1 JZ A0,ILEXIT . ALL POWERS HAVE BEEN USED NOP 0,0,*B2 SX,H2 B2,ILSV SX,H2 B2,ILRS JNB A0,$+3 . THIS POWER IS NOT NEEDED IN FINAL PRODUCT LR R15,ILRS SR R15,STA,*B4 ILCXA LR R15,ILSV SR R15,SORT,*B1 LR R15,(0101400,0) . THIS FORMS THE POWER SR R15,SORT,*B1 LR R15,ILDP SR R15,SORT,*B1 ILX6 LR R15,ILDP SR R15,SORT,*B1 MVW ILRS ILDP . NEXT ITEM TO BE SQUARED J ILEXP3 ILEXIT LA,M A2,0,B4 . NUMBER OF ASTERISKS TNE,M A2,1 SR,S2 R4,STA . FLAG FOR NO OPERATORS JGD A2,$+3 XER 90 . SHOULD NEVER GET HERE ILX7A JGD A2,ILX7 LR,M R1,0,B4 . NUMBER OF OPERANDS LXM,M B4,0 ILX8A JGD R1,ILX8 TZ,S1 ILXP . FLAG FOR FINAL ONE J ILX9 ILX9A LR R15,(0360000,00) SR R15,SORT,*B1 MVW SORT,0,M ILGT,0,H2 L A0,GEXFL LR R15,GETF . SAVE GET FLAG SR R15,GEXFLP,*A0 S A0,GEXFL L,M R15,3 S R15,GETF . FLAG TO READ FROM SORT MVW COPER,0,S3 SORT-1,B1,S3 . MOVE SIGN J GET ILX9 LR R15,(030100,1) SR R15,SORT,*B1 J ILX9A ILX7 LR R15,(0101400,0) SR R15,SORT,*B1 J ILX7A ILX8 LR R15,STA,*B4 SR R15,SORT,*B1 J ILX8A ILEXP2 MVW 01013,0,M F31-1,NSEQN,T1 . CHANGE LAST OPERATOR TO DIVIDE J ILEXP1 ILEXP5 LA,S3 A2,COPND2 AND,M A2,073 SA,S3 A3,COPND2 . MAKE MINUS SIGN PLUS MVW 01014,0,M F31-1,NSEQN,T1 . CHANGE TO MULTIPLY J ILEXP1 LWSLR LX,H2 B1,CTRST . THIS ROUTINE LOWERS STACK LEVELIN TRAID FORMER ANX,M B1,11 SX B1,CTRST MVW TRST,B1 COPER MVW TRST+1,B1 COPND1 MVW TRST+2,B1 COPND2 MVW TRST+3,B1 CONRD MVW TRST+4,B1 MA MVW TRST+5,B1 MB MVW TRST+6,B1 EMODE MVW TRST+7,B1 MODET MVW TRST+8,B1 PEROP MVW TRST+9,B1 CHTS . EXIT OF ROUTINE CHT MVW TRST+10,B1 SUBSC 131K J *LWSL UPSLR LX,H2 B1,CTRST . CURRENT AVAILABLE LOCATION IN TRST REENT MVW COPER TRST,B1 MVW COPND1 TRST+1,B1 MVW COPND2 TRST+2,B1 MVW CONRD TRST+3,B1 MVW MA TRST+4,B1 MVW MB TRST+5,B1 MVW EMODE TRST+6,B1 MVW MODET TRST+7,B1 MVW PEROP TRST+8,B1 MVW CHTS TRST+9,B1 . EXIT OF ROUTINE CHT MVW SUBSC TRST+10,B1 131K AX,M B1,11 SX B1,CTRST TLEM,M B1,LTRST J *UPSL XER 80 RECURSION LEVEL EXCEEDED $(2) . ILDP +0 . SAVES NEXT ITEM TO BE DOUBLED LWSL* J $-$ REENT J LWSLR REENT UPSL* J $-$ REENT J UPSLR REENT LIT END