N5REG . DEFINES REGISTERS DIR EQU N5DIR $(1) . LIT SYSERR EQU N5ERRL+1 . ASSIGN A-REGISTER 00100000 . ARQ1 IS ENTRY POINT FOR SINGLE OPERAND. . ARQ2 IS ENTRY POINT FOR DOUBLE OPERAND. . THE PARAMETERS SPECIFY ADDRESSES OF THE OPERANDS. . DEST IS SET TO ZERO IF OPERATION WILL DESTROY THE A-REGISTER . ON EXIT PZERO TABLE IS SET WITH ALL A-REGISTER . INFORMATION. IF THE OPERAND IS ALREADY LOADED INTO . THE ASSIGNED REGISTER, THE LOADED FLAG IS SET TO 1 FOR . OP 1 AND 2 FOR OP 2; ZERO MEANS NOT LOADED. . IF THE OPERANDS WERE TRIADS THE A-REGISTERS ASSIGNED . THOSE TRIADS ARE DEASSIGNED. IF SUBEXPRESSIONS . ARE REFERENCED THEIR COUNTS ARE UPDATED. . IF THE REQUEST WAS NOT DESTRUCTIVE THE SYNONYMS . ARE UPDATED. ARQ3* S,H2 B11,AQ90 L,M AA5,4 . FLAG FOR SCRATCH REGISTER S AA5,LOADED SZ JFFLAG SZ PSEVEN+3 J AQ81 ARQ2* A,M B11,1 00100100 L,M AA5,2 00100200 S AA5,AQT3 00100250 S,H2 B11,AQ90 00100300 J AQ06 00100400 AQ02 L B11,AQ90 00100500 AN,M B11,1 00100540 J ARQ1+2 00100560 ARQ1* S,H2 B11,AQ90 00100600 SZ AQT3 00100650 L,M AA5,1 00100700 SZ PZERO+3 AQ06 S AA5,LOADED 00100900 SZ JFFLAG SET NON ZERO OF PART WORD OF REGISTER REQUIRED SZ KFFLAG USED TO CONTAIN REDUCED TRIAD UPPER REGISTER SZ DAFLAG NON ZERO IF REG WILL BE DEASSINGED IN GEN SX B11,AQTZ L BB2,0,B11 BB2=CORE ADD OF TRIAD OP 00100950 L,S1 BB5,*0,B11 TRIAD ID 00101000 L,H2 BB4,*0,B11 TRIAD, SYM OR N I=BB4 00101100 SX,H1 BB4,OP SET SIGN BEFORE REMOVING NEG BIY SX BB4,AQT4 SAVE FOR SIGN TP,XH2 *0,B11 IF NEG ANX,M BB4,0,*0 REMOVE BIT J *AQIDSW,BB5 BRANCH ON ID 00101200 AQIDSW SLJ ERRL REENT J AQ99 1 IND VAR J AQ12 2 VAR 00101500 J AQ11 3 CON 00101600 SLJ ERRL OFFSET REENT J AQ40 5 SUBEXP 00101800 J AQ50 6 TRIAD REF 00101900 J AQ80 . DO NOT TRY TO FIND A DROPOUT J AQ70 8 OPERATOR 00102100 SLJ ERRL REENT SLJ ERRL 012 SLJ ERRL 013 SLJ ERRL 014 J AQ80 015 J AQ80 DO NOT TRY TO FIND A LABEL . CONSTANT 00102300 AQ11 TZ,S2 0,BB2 TRIAD TYPE 00102400 J AQ30 IMMEDIATE CONSTANT 00102500 . VAR,IND VAR,OR CONSTANT IN SYM 00102600 AQ12 TNZ,T1 3,BB4 SYM,LINKA 00102700 J AQ80 OP NOT IN AN A-REG 00102800 L,S3 AA4,2,BB4 TNE,M AA4,067 J AQ80 AQ20 SZ,H2 OP OP,OFFSET SZ,T3 OP+1 OP,SUB 00103100 L,T1 B11,3,BB4 00103200 TNZ ARQFND TNZ,T1 JFFLAG J AQ605 00103250 J AQ80 DO NOT FIND WITH J FACTOR . IMMEDIATE CONSTANT 00103300 AQ30 L B11,LINKC B11=J 00103400 SZ OP+1 LMA,H2 AA5,0,BB2 ABS(TRIAD,C) 00103500 AQ32 TNZ B11 00103600 J AQ80 OP NOT IN AN A-REG 00103700 LMA,H1 AA4,AREGB2-1,B11 AREG,VAR 00103800 TNE AA4,AA5 00103900 J AQ66 L,S2 B11,AREGB2,B11 AREG,BLINK 00104100 J AQ32 00104200 . SUBEXPRESSION 00104500 AQ40 TNZ,S3 SUBEXD,BB4 SUBEXD,TLOC 00104600 J AQ80 SUBEXP NOT IN AN A-REG 00104700 TZ,T1 JFFLAG J AQ80 DO NOT FIND IN REG IF J FACTR INVOLVED S BB4,DAFLAG L,S3 BB3,SUBEXD,BB4 SUBEXD,TLOC BB3=J 00104800 TLEM,M BB3,12 J AQ79 S,T3 BB3,PZERO+3 PZERO, REG FIELD 00104900 L,S6 AA3,AREGB1-11,BB3 A AA3,KFFLAG S,S3 AA3,PZERO+3 SET UPPER BIT L,T2 AA3,AREGB1-12,BB3 AREG, SIGN 00105000 XOR AA3,AQT4 SIGN OF EXP OP AND,M AA4,0,*0 0400000 00105200 A,M AA5,PZERO 00105300 S,H2 AA5,PZERO 00105400 L,T2 AA5,TT7-TT1,BB2 TRIAD,NEXT OCC 00105500 A AA5,F50CTR 00105550 S,H1 AA5,AREGB1-11,BB3 AREG, NOCCUR 00105600 AN,M BB3,12 00105650 L,H2 AA5,SUBEXQ,BB4 LOGIFT L AA3,ARQCF1 TE,M AA3,1 JNZ AA3,ARQ41 TZ ARQFND J ARQ41 SKIP COUNTING AN,M AA5,1 S,H2 AA5,SUBEXQ,BB4 LOGIFT TZ DEST J AQ45 ARQ41 SZ,S3 SUBEXD,BB4 TZ,T1 SUBEXD,BB4 J AQ45 JZ AA5,AQ47 LAST OCCUR S BB4,AQT4 LMJ B11,SAVEA STORE A-REG L B11,AQT4 TP,XH2 AQT4 IF REG ANX,M B11,0,*0 REMOVE BIT S,T1 BB4,SUBEXD,B11 SUBEXD,PLOC J AQ47 AQ45 JNZ AA5,AQ68 S BB1,AQT5 S BB4,AQT4 L,T1 BB1,SUBEXD,BB4 PLOC TZ BB1 LMJ B11,DTEMP DEASSIGN TEMP L BB1,AQT5 L BB4,AQT4 AQ47 SZ,H1 AREGB1,BB3 J AQ68 . TRIAD REFERENCE 00105800 AQ50 TNZ,H2 TT11,BB4 TEST FOR TRIAD BEING REPLACED BY SOMETHING J AQ51 L B11,TT11,BB4 TP,XH2 TT11,BB4 ANX,M B11,0,*0 L AA3,TT11,BB4 TNZ,S3 TT11,BB4 S AA3,JFFLAG SSL AA3,22 AND,M AA3,1 S,S6 AA4,KFFLAG OFFSET IF ANY FOR COMPLEX PART OF IMAGNANRY L BB2,B11 SAVE BB2 FOR ASSIGN ROUTINES S AA3,ARQCF1 AND,M AA3,0360 J FACTOR FIELD TNZ AA4 S,H1 B11,KFFLAG FLAG FOR NOT DEASSIGNING L AA2,AQT4 AND AA2,(0400000) XOR AA3,0,B11 S AA4,0,B11 MOVE SIGN BIT FROM TRIAD TO ITS REPLACEMENT L,S1 BB5,0,B11 L,H2 BB4,0,B11 S BB4,AQT4 S,H1 BB4,OP SET BEFORE REMOVEING SIGN TP,XH2 0,B11 ANX,M BB4,0,*0 J *AQIDSW,BB5 AQ51 L,S2 AA5,TT3,BB4 TZ ARQFND J $+3 CALL IS ONLY FOR POSSIBLE DEASSIGNMT TZ,T1 JFFLAG DO NOT FIND IN REGISTER IF J FACTOR INVOLVED J AQ80 TNE,M AA5,15 00106000 J AQ54 SUBSCRIPT OPT 00106100 TNE,M AA5,19 00106200 J AQ98 OFFSET+OPT 00106300 S AA5,DAFLAG L,T3 BB3,TT6,BB4 TRIAD, REG FIELD B11=J 00106400 TNZ BB3 00106500 J AQ80 TRIAD NOT IN AN A-REG 00106600 S,T3 BB3,PZERO+3 PZERO WORD 4, REG FIELD 00106700 L,T2 AA3,AREGB1-12,BB3 AREG, SIGN 00106800 XOR AA3,AQT4 AND AA4,(0400000) 00107050 A,M AA5,PZERO 00107100 S,H2 AA5,PZERO 00107200 AN,M BB3,12 00107250 J AQ67 AQ54 L,H2 B11,TT2,BB4 SUBEXPRESSION NO. 00107400 TP,XH2 TT2,BB4 IF NEG ANX,M B11,0,*0 REMOE BIT L,M AA5,1 00107500 TZ,T1 JFFLAG J AQ56 TNZ ARQFND SKIP COUNTING TE,H2 AA5,SUBEXQ,B11 NUMBER OF USES LOGIFT J AQ56 NOT FINAL USE 00107700 L,S4 AA5,SUBEXD,B11 00107800 SSL AA5,3 SUBEXD,S1 00107900 JB AA5,AQ80 INC FINAL USE 00108000 AQ56 L AA5,AQT4 GET SIGN BIT ZRLVTM S,H1 AA5,OP ZRLVTM L,T3 AA5,TT2,BB4 TRIAD,TT2,DDDD 00108300 S,T3 AA5,OP+1 OP,SUB 00108400 L,S1 AA4,TT1,BB4 TRIAD,TT1,ID 00108500 TE,M AA4,6 00108600 J AQ92 NO OFFSET 00108700 L,H2 BB4,TT1,BB4 TRIAD TT1,N 00108800 NOP 0 00108900 TP,XH2 TT1,BB4 ANX,M BB4,0,*0 AQ57 L,H2 AA5,TT2,BB4 TRIAD, TT2 C 00109000 S,H2 AA5,OP OP, OFF 00109050 AQ58 L,H2 B11,TT1,BB4 TRIAD TT1,SYM(V) 00109100 TP,XH2 TT1,BB4 IF NEG ANX,M B11,0,*0 AQ60 L,T1 B11,3,B11 SYM,LINKA 00109300 AQ605 L,H2 AA4,OP OP, OFF 00109400 L,T3 AA5,OP+1 OP,SUB 00109500 AQ61 TNZ B11 00109600 J AQ80 OP NOT IN AN A-REG 00109700 TE,H2 AA4,AREGB2-1,B11 AREG,OFF 00109800 J AQ62 00109900 TNE,T3 AA5,AREGB2,B11 AREG1SUB 00110000 J AQ66 OP IS IN A A-REG 00110100 AQ62 L,S2 B11,AREGB2,B11 AREG,BLINK 00110200 J AQ61 00110300 AQ66 L,T3 AA3,OP+1 SUBSCRIPT NO. AND,M AA3,07777 L BB3,AA4 TZ,T1 JFFLAG J AQ66W TZ ARQFND SKIP COUNTING J AQ66W L AA3,ARQCF1 DO NOT COUNT AS IT WILL BE IN OPERAND TE,M AA3,1 IF IT CONTAINED J FACTOR AND NOT AIMAG JNZ AA3,AQ66W JZ AA4,AQ66W NOT SUBSCRIPTED L,H2 AA3,SUBEXQ,BB3 LOGIFT AN,M AA3,1 S,H2 AA3,SUBEXQ,BB3 LOGIFT JNZ AA3,AQ66W NOT FINAL OCCUR L,S3 BB3,SUBEXD,BB3 TLOC TLEM,M BB3,12 J $+2 B REG J AQ66F A REG L,M AA3,1 TE,S1 AA3,IRW2,BB3 IR,E J AQ66F NOT PERM ASSIGN S,S2 AA3,IRW2,BB3 IR,F J AQ66W AQ66F S BB3,SX AQ66W L,S4 BB3,AREGB2,B11 AREG,ENT A,M BB3,12 00110500 S,T3 BB3,PZERO+3 PZERO, REG FIELD 00110600 AN,M BB3,12 00110650 L,H1 AA3,AREGB2-1,B11 AREG,B (SIGN) 00110700 XOR,H1 AA3,OP OP,B (SIGN) 00110800 AND,M AA4,0,*0 0400000 00110900 A,M AA5,PZERO 00111000 S,H2 AA5,PZERO SET PZERO SIGN 00111100 AQ67 L,S6 AA5,AREGB1+1,BB3 AREG,F A,S6 AA5,KFFLAG S,S3 AA5,PZERO+3 PZERO, F 00111160 AQ68 L,H1 AA4,JFFLAG L,M AA5,0 TZ DAFLAG AND,M AA4,07400 TEST FOR J FACTOR TNZ ARQFND JNZ AA5,AQ68B TNZ KFFLAG AQ68A TNZ DEST LMJ B11,DAREG DEASSIGN A-REG 00111300 L AA5,KFFLAG TZ AA5 S,S6 AA5,AREGB1+1,BB3 AQ68B A,M BB3,12 J AQ89 00111400 . ID=OPERATOR 00111500 AQ70 L,T3 BB3,TT6-TT3,BB2 TRIAD TT6, REG FIELD TNZ BB3 J AQ80 TRIAD NOT IN AN A-REG 00111800 S,T3 BB3,PZERO+3 L,H2 AA4,0,BB2 TRIAD TT3,B (SIGN) AND AA4,(0400000) 00112200 A,M AA5,PZERO 00112300 S,H2 AA5,PZERO SET PZERO SIGN 00112400 L,S6 AA5,AREGB1-11,BB3 AREG,F S,S3 AA5,PZERO+3 PZERO, F 00112460 J AQ89 00112500 AQ79 SZ DEST AQ80 L AA5,LOADED 00112600 SZ JFFLAG IF TRIAD WAS NOT IN REGISTER CLEAR TE,M AA5,1 00112700 J AQ02 SEARCH A-REG TAB FOR OTHER OP 00112800 SZ LOADED OP NOT LOADED 00112900 AQ81 L BB3,(2,-2) L,M AA5,7 LOOP COUNT 7 00113100 AQ82 L,M AA4,0 AA4=T1 H1 00113800 L AA3,(0377777777777) AA3=T2 H1 00113900 AQ84 TNZ,S4 N0RGTB+3,*BB3 REGIS J AQ86 THIS REGISTER NOT AVAILABLE REGIS TNZ,S4 N0RGTB+2,BB3 . TEST IF SECOND OF PAIR IS AVAILABLE J AQ86 . IT WAS NOT L AA6,ARGREG SSL AA6,0,BB3 AND,M AA6,3 JNZ A13,AQ86 REGISTER IS IN USE BY CALLING SEQUENCE TNZ,H1 AREGB1,BB3 REGIS J AQ94 NO EXP OR TRIAD 00114100 L,S3 AA6,AREGB1,BB3 SSC AA6,3 SSL AA6,34 JNZ AA6,AQ86 PERMANENT ASSIGN TG,H1 AA4,AREGB1+1,BB3 AREG, NOCCUR J AQ86 00114300 L,S4 AA6,AREGB2+1,BB3 A,M AA6,12 TNE,T3 AA6,PZERO+3 . THE MAIN REGISTER FOR THIS GROUP CANNOT BE J AQ86 . REASSIGNED TNE AA6,AQTZ1 . TEST FOR JUST DEASSIGNED TRIAD BEING J AQ86 . USED AS SCRATCH REGISTER TNE AA6,AQTZ J AQ86 L,H1 AA4,AREGB1+1,BB3 AREG, NOCCUR S BB3,AQT1 00114500 S AA6,AQTZ1 . KEEP JUST RELEASED REGISTER FROM BEING AQ86 JGD AA5,AQ84 00114600 TNE AA3,(0377777777777) 00114700 J AQ96 00114800 L BB3,AQT2 00114900 AQ88 LMJ B11,DAREG DEASSIGN A-REG 00115000 A,M BB3,12 00115050 L AA6,LOADED TE,M AA6,4 J AQ88F S,T3 BB3,PSEVEN+3 . P7 USED ONLY FOR SCRATCH REGISTER J *AQ90 AQ88F S,T3 BB3,PZERO+3 . REG FIELD L,M AA5,PZERO 00115200 S,H2 AA5,PZERO PZERO,SIGN + 00115300 SZ,S3 PZERO+3 TZ ARQCF1 TEST FOR MAKING SYNONMS J AQ89 TZ DEST 00115400 LMJ B11,ASYM ADD NEW SYNONYM 00115500 AQ89 L,H2 B11,AQ90 00115540 L AA3,ASGNO 00115542 A,M AA3,1 00115544 S AA3,ASGNO 00115546 S,H2 AA3,AREGB3-12,BB3 AQ89B L,S1 AA3,*0,B11 TRIAD ID 00115541 L,H2 BB4,*0,B11 00115543 TP,XH2 *0,B11 IF NEG ANX,M BB4,0,*0 REMOVE BIT AQ89C TNZ ARQCF J $+3 TNZ LOADED J AQ89H TZ ARQFND J AQ89H IF NO COUNTING DO NOT DEASSIGN TRIADS TNE,M AA3,6 00115545 J AQ89D TRIAD REF 00115547 TE,M AA3,8 00115549 J AQ89H NOT AN OPERATOR 00115551 L BB4,0,B11 00115552 AN,M BB4,TT3 FORM TRIAD REF NO 00115553 NOP 0,0 00115555 AQ89D L,T3 BB5,TT6,BB4 TRIAD, FILM ADD 00115557 TZ,H2 TT11,BB4 J AQ89M TZ,T1 AQSAR . REGISTER WILL BE ASSIGNED WHEN INSTRUCTION IS GENE J $+3 TZ BB5 00115559 SZ,H1 AREGB1-12,BB5 DEASSIGN A-REG 00115561 SX BB5,AQTZ . FOR SCRATCH CONTAINS TRIAD L,T1 BB1,TT6,BB4 TRIAD, TEMP ADD 00115563 TZ BB1 00115565 LMJ B11,DTEMP DEASSIGN TEMP 00115567 AQ89H SZ AQSAR TNZ AQT3 J AQ89K 00115571 SZ AQT3 00115573 L B11,AQ90 00115575 AN,M B11,1 00115577 J AQ89B 00115579 AQ89K L B11,AQ90 00115581 TZ,T1 JFFLAG TEST IF TRIAD WAS J FACTOR SZ LOADED J 1,B11 00115583 AQ89M L B11,TT11,BB4 S B11,AQSAR L,S1 AA3,0,B11 L,H2 BB4,0,B11 TP,XH2 0,B11 ANX,M BB4,0,*0 J AQ89C J *AQ90 REENT AQ92 SZ,H2 OP OP,OFF 00115700 J AQ58 00115800 AQ94 L,S4 AA6,AREGB2+1,BB3 A,M AA6,12 TNE,T3 AA6,PZERO+3 J AQ86 TNZ,S4 AREGB1,BB3 AREG,NAS J AQ95 NO SYN ACTIVE 00116000 TNG,H2 AA3,AREGB3,BB3 J AQ86 00116150 L,H2 AA3,AREGB3,BB3 S BB3,AQT2 00116300 J AQ86 00116400 . SET AREG ENT TO INDICATE A-REG USED BY PROG 00116500 AQ95 S,S5 BB3,AREGB1+1,BB3 AREG,ENT 00116600 L,S2 B11,AREGB3+1,BB3 S,S1 B11,AREGB3+1,BB3 L A13,LOADED TE,M A13,4 J AQ88 TNE AA6,AQTZ J AQ86 J AQ88 00116700 AQ96 L,H2 BB3,AQT1 NOP 0 00116900 L AA5,AREGB1,BB3 AREG,EXP SSL AA5,24 L B11,AA5 L,S3 AA5,AREGB1,BB3 AREG,M 00117000 JB AA5,AQ97 A-REG CONTAINS A TRIAD 00117200 TZ,T1 SUBEXD,B11 SUBEXD,PLOC J AQ88 ALREADY IN TEMP 00117400 LMJ B11,SAVEA GEN SA INST 00117500 L,T1 B11,AREGB1,BB3 NOP 0,0 S,T1 BB4,SUBEXD,B11 SET TEMP ADD IN SUBEXD,PLOC J AQ88 00117700 AQ97 TZ,T1 TT6,B11 . TRIAD TT6,TEMP ADD J AQ88 TRIAD ALREADY IN TEMP 00117900 LMJ B11,SAVEA GEN SA INST 00118000 L,T1 B11,AREGB1,BB3 NOP S,T1 BB4,TT6,B11 J AQ88 00118200 AQ98 SZ,T3 OP+1 OP, SUB 00118220 J AQ57 00118260 AQ99 TZ,T1 3,BB4 SYM LINKA J AQ20 J AQ80 $(2) AQ90 J $-$ REENT DAFLAG +0 KFFLAG +0 HAS ONE IF TRIAD REDUCED TO UPPER REGISTER ON VARIABLE AIMAG AQSAR +0 NON ZERO IF TRIAD IS REFERENCED BY J FACTOR JFFLAG +0 NON ZERO IF PART OF REGISTER REQUIRED AQT1 + 0 00118300 AQT2 + 0 00118400 AQT3 + 0 AQTZ1 -5 . INITIALIZE A NO ZERO AQTZ -5 END