SUBROUTINE UGEN INTEGER ADDR, ADRFLG, CUROP, NEXTOP, CFLAG INTEGER PI, XBBL, XA, XF, XZERO, DPVFLG INTEGER LC, LCI, LODLCI, LODLCV, LDLCVO, MAXLCV INTEGER NEXT, NUMBER, I, IOTYPE INTEGER J, K, L, LABNLX, M, N INTEGER PSYMB, SYMBOL, TOP, VALFLG, QVALUE INTEGER OPTOPX, OPNXTX, TOPX, NEXTX INTEGER DUMMY, OVCHN, PEEKS INTEGER LO, CI, CO, LOGICF, LOCSUP INTEGER VAREF, INPUTJ, LCTS, CRUCNT, FLTCNT INTEGER ICLP05 LOGICAL ENDOK,CONEND COMMON /LOGOS/ ADDR, ADRFLG, CUROP, NEXTOP, CFLAG COMMON /LOGOS/ PI, XBBL, XA, XF, XZERO, DPVFLG COMMON /LOGOS/ LC, LCI, LODLCI, LODLCV, LDLCVO, MAXLCV COMMON /LOGOS/ NEXT, NUMBER, I, IOTYPE COMMON /LOGOS/ J, K, L, LABNLX, M, N COMMON /LOGOS/ PSYMB, SYMBOL, TOP, VALFLG, QVALUE COMMON /LOGOS/ OPTOPX, OPNXTX, TOPX, NEXTX COMMON /LOGOS/ DUMMY, OVCHN, PEEKS COMMON /LOGOS/ LO, CI, CO, LOGICF, LOCSUP COMMON /LOGOS/ VAREF, INPUTJ, LCTS, CRUCNT, FLTCNT COMMON /LOGOS/ ICLP05 COMMON /LOGOS/ ENDOK,CONEND INTEGER WOPTR, WO (64), TLI, TL (128) INTEGER BO, SS, SS2, NRFCH COMMON /SCR1/ WOPTR, WO, TLI, TL COMMON /SCR1/ BO, SS, SS2, NRFCH INTEGER OP, LEFT, RIGHT, LSTKX, RSTKX INTEGER TS, LOAD, BASE INTEGER THIS, OTHER, SIDE, HI, LOW INTEGER INTBR, ROW, COL, INREG, OUTREG INTEGER BCC, BNE INTEGER CLC, JMP, LDAABS, LDAI, LDAZP INTEGER SBCI, SEC, STAZP, TAX, TXA LOGICAL COMZER, EZSTA, MORE COMMON /GCOM/ OP, LEFT, RIGHT, LSTKX, RSTKX COMMON /GCOM/ TS, LOAD, BASE COMMON /GCOM/ THIS, OTHER, SIDE, HI, LOW COMMON /GCOM/ INTBR, ROW, COL, INREG, OUTREG COMMON /GCOM/ BCC, BNE COMMON /GCOM/ CLC, JMP, LDAABS, LDAI, LDAZP COMMON /GCOM/ SBCI, SEC, STAZP, TAX, TXA COMMON /GCOM/ COMZER, EZSTA, MORE INTEGER GENRET INTEGER MODEX INTEGER RAWMDX INTEGER SPTR INTEGER TSTSTK INTEGER SWAP INTEGER TOPDP INTEGER NEXTDP INTEGER TOPSP INTEGER NEXTSP INTEGER SAVCAL INTEGER OUT INTEGER GETSP INTEGER SMODEX INTEGER SETX INTEGER ICLP02 COMMON /GENC/ GENRET COMMON /GENC/ MODEX COMMON /GENC/ RAWMDX COMMON /GENC/ SPTR COMMON /GENC/ TSTSTK COMMON /GENC/ SWAP COMMON /GENC/ TOPDP COMMON /GENC/ NEXTDP COMMON /GENC/ TOPSP COMMON /GENC/ NEXTSP COMMON /GENC/ SAVCAL COMMON /GENC/ OUT COMMON /GENC/ GETSP COMMON /GENC/ SMODEX COMMON /GENC/ SETX COMMON /GENC/ ICLP02 INTEGER NI, NJ, NK INTEGER NSIZE INTEGER NLX, FNLX, REMNLX, OVNLX, TNAME INTEGER NLSTRT, NLSTOP, NLSIZE, SRCHST INTEGER NTSTRT INTEGER NTSTOP INTEGER NTSIZE INTEGER PARFLG INTEGER SPARFL INTEGER NLWRDS INTEGER TX INTEGER NLENO INTEGER STDMD INTEGER MSHIFT INTEGER REGCNT INTEGER NULLX INTEGER STPTRX INTEGER SPMODE INTEGER DPMODE INTEGER SPECMD INTEGER ENFLAG INTEGER DFINED INTEGER CVALUE INTEGER NLXLCI INTEGER ENEXTD INTEGER NAMAT0 INTEGER NAMCON INTEGER NLMODE INTEGER PARBIT INTEGER OPBIT INTEGER LOCALB INTEGER REGBIT INTEGER EXTBIT INTEGER STRBIT INTEGER DPBIT INTEGER CBIT INTEGER PBIT INTEGER EPBIT INTEGER IOBIT INTEGER ARBIT INTEGER EXDBIT INTEGER TPLBIT INTEGER USEBIT INTEGER LCMASK INTEGER MDMASK INTEGER NAMLOC, REGNUM COMMON /NLIST/ NI COMMON /NLIST/ NJ COMMON /NLIST/ NK COMMON /NLIST/ NSIZE COMMON /NLIST/ NLX COMMON /NLIST/ FNLX COMMON /NLIST/ REMNLX COMMON /NLIST/ OVNLX COMMON /NLIST/ TNAME COMMON /NLIST/ NLSTRT COMMON /NLIST/ NLSTOP COMMON /NLIST/ NLSIZE COMMON /NLIST/ SRCHST COMMON /NLIST/ NTSTRT COMMON /NLIST/ NTSTOP COMMON /NLIST/ NTSIZE COMMON /NLIST/ PARFLG COMMON /NLIST/ SPARFL COMMON /NLIST/ NLWRDS COMMON /NLIST/ TX COMMON /NLIST/ NLENO COMMON /NLIST/ STDMD COMMON /NLIST/ MSHIFT COMMON /NLIST/ REGCNT COMMON /NLIST/ NULLX COMMON /NLIST/ STPTRX COMMON /NLIST/ SPMODE COMMON /NLIST/ DPMODE COMMON /NLIST/ SPECMD COMMON /NLIST/ ENFLAG COMMON /NLIST/ DFINED COMMON /NLIST/ CVALUE COMMON /NLIST/ NLXLCI COMMON /NLIST/ ENEXTD COMMON /NLIST/ NAMAT0 COMMON /NLIST/ NAMCON COMMON /NLIST/ NLMODE COMMON /NLIST/ PARBIT COMMON /NLIST/ OPBIT COMMON /NLIST/ LOCALB COMMON /NLIST/ REGBIT COMMON /NLIST/ EXTBIT COMMON /NLIST/ STRBIT COMMON /NLIST/ DPBIT COMMON /NLIST/ CBIT COMMON /NLIST/ PBIT COMMON /NLIST/ EPBIT COMMON /NLIST/ IOBIT COMMON /NLIST/ ARBIT COMMON /NLIST/ EXDBIT COMMON /NLIST/ TPLBIT COMMON /NLIST/ USEBIT COMMON /NLIST/ LCMASK COMMON /NLIST/ MDMASK COMMON /NLIST/ NAMLOC, REGNUM INTEGER NINE INTEGER COMMA, SEMIC, PERIOD, COLON, FOR, DOOP, WHILE INTEGER RBRACE, LBRACE, RETOP, CRUTCH INTEGER LPAREN, RPAREN, LBK, RBK INTEGER EQUAL, NEQUAL, GTR, GEQ, LESS, LESSEQ, ARROW INTEGER PLUS, MINUS, MULT, DIVIDE, MODOP INTEGER OROP, ANDOP, AOROP, XOROP, AANDOP INTEGER LSHIFT, RSHIFT, LCYCLE, RCYCLE, ALSHFT, ARSHFT INTEGER NEG, UPARO, DNARO, COM INTEGER LOC, GIZZY, QUOTE, ZRL, TEMPL INTEGER SP, DP, ST, HEX INTEGER ATSIGN INTEGER ICLP06 COMMON /OPERS/ NINE COMMON /OPERS/ COMMA, SEMIC, PERIOD, COLON, FOR, DOOP, WHILE COMMON /OPERS/ RBRACE, LBRACE, RETOP, CRUTCH COMMON /OPERS/ LPAREN, RPAREN, LBK, RBK COMMON /OPERS/ EQUAL, NEQUAL, GTR, GEQ, LESS, LESSEQ, ARROW COMMON /OPERS/ PLUS, MINUS, MULT, DIVIDE, MODOP COMMON /OPERS/ OROP, ANDOP, AOROP, XOROP, AANDOP COMMON /OPERS/ LSHIFT, RSHIFT, LCYCLE, RCYCLE, ALSHFT, ARSHFT COMMON /OPERS/ NEG, UPARO, DNARO, COM COMMON /OPERS/ LOC, GIZZY, QUOTE, ZRL, TEMPL COMMON /OPERS/ SP, DP, ST, HEX COMMON /OPERS/ ATSIGN COMMON /OPERS/ ICLP06 INTEGER AREG, XREG, YREG, NRREGS INTEGER STATUS (10), STAREG, STXREG, STYREG INTEGER REGS (10) INTEGER ACTREG (2), ACTLO, ACTHI INTEGER NZREG INTEGER ICLP10 COMMON / REGS / AREG, XREG, YREG, NRREGS COMMON / REGS / STATUS, REGS, ACTREG, NZREG COMMON / REGS / ICLP10 EQUIVALENCE (ACTLO, ACTREG (1)) EQUIVALENCE (ACTHI, ACTREG (2)) EQUIVALENCE (STAREG, STATUS (1)) EQUIVALENCE (STXREG, STATUS (2)) EQUIVALENCE (STYREG, STATUS (3)) INTEGER CLRACV INTEGER CLRACX INTEGER CLRSTA INTEGER TRAREG INTEGER SAVREG INTEGER CTFREE INTEGER SETREG INTEGER ICLP11 COMMON /RMCODE/ CLRACV, CLRACX, CLRSTA, TRAREG, SAVREG COMMON /RMCODE/ CTFREE, SETREG COMMON /RMCODE/ ICLP11 INTEGER STK (20, 13) INTEGER NAMEX (40) INTEGER OPX, STKSIZ, OCBIT, FUNBIT, SBIAS INTEGER ICLP14 COMMON /SDEFS/ STK, OPX, STKSIZ, OCBIT, FUNBIT, SBIAS COMMON /SDEFS/ ICLP14 EQUIVALENCE (STK (1,1), NAMEX (1)) INTEGER MODE (40), SUBX (20), SUBXM (20), BIAS (40) EQUIVALENCE (STK (1, 3), MODE (1)) EQUIVALENCE (STK (1, 2), SUBX (1)) EQUIVALENCE (STK (1, 4), SUBXM (1)) EQUIVALENCE (STK (1, 5), BIAS (1)) INTEGER OPCODE (20) EQUIVALENCE (STK (1, 9), OPCODE (1)) INTEGER WF1,WF2,WF3,WF4,WF5,WF6,WF7,WF8,WF9,WF10,WF11,WF12,WF13,W 1F14,WF15,WF16,WF17 INTEGER ICLP16 COMMON / WF / WF1,WF2,WF3,WF4,WF5,WF6,WF7,WF8,WF9,WF10,WF11,WF12 1,WF13,WF14,WF15,WF16,WF17 COMMON / WF / ICLP16 INTEGER OPTS, INCTLI, UMODE, OPTYPE, TSTK, LEFTTS INTEGER OP1, OP2 INTEGER NLOPS LOGICAL NLTEST DATA TSTK / 20/ OPTS = OP - NEG + 1 LEFTTS = LEFT SIDE = RIGHT UMODE = MODE (SIDE) OPTYPE = 4 NLX = NAMEX (SIDE) IF (.NOT. (NLTEST (NLX, REGBIT)))GO TO 13058 OPTYPE = NLOPS (REGNUM, NLX) IF (.NOT. (STATUS (OPTYPE) .EQ. 0))GO TO 13060 STATUS (OPTYPE) = SIDE ACTHI = AREG ACTLO = OPTYPE 13060 CONTINUE IF (.NOT. (UMODE .EQ. SPMODE))GO TO 13062 ACTHI = 0 GO TO 13063 13062 CONTINUE OPTYPE = 5 13063 CONTINUE 13058 CONTINUE GO TO (100, 200, 300, 400), OPTS 1 RETURN 100 CALL REGMAN (SAVREG, AREG, DUMMY) IF (ACTLO .EQ. XREG) CALL REGMAN (SAVREG, XREG, DUMMY) IF (ACTLO .EQ. YREG) CALL REGMAN (SAVREG, YREG, DUMMY) CALL BLDOP (169, WF5, 0, NULLX, WF7) CALL BLDBLK (SEC, WF4) CALL GENDO IF (.NOT. (UMODE .EQ. DPMODE))GO TO 13064 CALL REGMAN (SAVREG, XREG, DUMMY) CALL BLDBLK (TAX, WF4) ACTLO = XREG CALL BLDOP (169, WF5, 0, NULLX, WF7) THIS = HI CALL GENDO 13064 CONTINUE CALL REGMAN (CLRACX, AREG, 0) GOTO 1 200 IF (LEFT .NE. 0) CALL REGSRC (5, NAMEX (LEFT), 0, 0, 0, 0, 0) GO TO (210, 220, 230, 240, 250), OPTYPE 210 CALL BLDBLK (CLC, WF4) CALL BLDOP (105, WF5, 1, NULLX, WF7) CALL REGMAN (CLRACX, AREG, 0) GO TO 1 220 CALL BLDBLK (232, WF4) GO TO 1 230 CALL BLDBLK (200, WF4) CALL REGMAN (CLRACX, YREG, 0) GO TO 1 240 IF (.NOT. (IAND (OPCODE (SIDE), 7) .EQ. 5))GO TO 13066 CALL GENDO IF (.NOT. (UMODE .EQ. DPMODE))GO TO 13068 INCTLI = TLI TLI = TLI + 1 CALL BLDOP (BNE, WF5, 0, INCTLI, WF9) THIS = HI CALL GENDO CALL DEFTL (INCTLI) CALL REGMAN (CLRACX, NZREG, 0) GO TO 1 13068 CONTINUE GO TO 13067 13066 CONTINUE OP1 = CLC OP2 = 105 GO TO 500 13067 CONTINUE GO TO 345 250 OP = PLUS 251 MORE = .TRUE. LEFT = RIGHT RIGHT = TSTK CALL STSET (RIGHT, NULLX, SPMODE, 1, LDAI, WF5, WF7) GO TO 1 300 IF (LEFT .NE. 0) CALL REGSRC (5, NAMEX (LEFT), 0, 0, 0, 0, 0) GO TO (310, 320, 330, 340, 350), OPTYPE 310 CALL BLDBLK (SEC, WF4) CALL BLDOP (233, WF5, 1, NULLX, WF7) GO TO 1 320 CALL BLDBLK (202, WF4) GO TO 1 330 CALL BLDBLK (136, WF4) CALL REGMAN (CLRACX, YREG, 0) GO TO 1 340 IF (.NOT. (UMODE .EQ. SPMODE .AND. IAND (OPCODE (SIDE), 7) .EQ. 5) 1)GO TO 13070 CALL GENDO GO TO 13071 13070 CONTINUE OP1 = SEC OP2 = 233 GO TO 500 13071 CONTINUE 345 CALL REGMAN (SETREG, NZREG, LEFTTS) GO TO 1 350 OP = MINUS GO TO 251 400 GO TO (440, 420, 430, 440, 440), OPTYPE 420 CALL GENTRA (XREG, AREG) GO TO 440 430 CALL GENTRA (YREG, AREG) 440 IF (.NOT. (STAREG .NE. SIDE))GO TO 13072 CALL REGMAN (SAVREG, AREG, DUMMY) CALL GENDO 13072 CONTINUE CALL BLDOP (73, WF5, 255, NULLX, WF7) CALL REGMAN (CLRACX, AREG, 0) IF (UMODE .EQ. SPMODE) GO TO 1 LEFT = SIDE CALL GENMOV CALL BLDOP (73, WF5, 255, NULLX, WF7) GO TO 1 500 CALL REGMAN (SAVREG, AREG, DUMMY) DO 13074 THIS = LOW, HI LEFT = SIDE RIGHT = 0 IF (.NOT. (THIS .EQ. LOW))GO TO 13076 CALL GENDO CALL BLDBLK (OP1, WF4) GO TO 13077 13076 CONTINUE IF (.NOT. (NEXTOP .GT. RBRACE))GO TO 13078 CALL REGMAN (SAVREG, XREG, DUMMY) CALL BLDBLK (TAX, WF4) 13078 CONTINUE CALL GENDO 13077 CONTINUE CALL BLDOP (OP2, WF5, 2-THIS, NULLX, WF7) RIGHT = SIDE LEFT = 0 BASE = ARROW - EQUAL + 1 CALL GENDO IF (.NOT. (UMODE .EQ. SPMODE))GO TO 13080 GO TO 13075 13080 CONTINUE IF (NEXTOP .GT. RBRACE) ACTLO = XREG 13074 CONTINUE 13075 CONTINUE CALL REGMAN (SETREG, AREG, LEFTTS) CALL GENER (OUT) GO TO 345 END