SUBROUTINE GENDO 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 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 SUBXB (20), WFOP (20), WFOPND (20) INTEGER SUBOP (20), WFSOP (20) EQUIVALENCE (STK (1, 6), SUBXB (1)) EQUIVALENCE (STK (1, 10), WFOP (1)) EQUIVALENCE (STK (1, 11), WFOPND (1)) EQUIVALENCE (STK (1, 12), SUBOP (1)) EQUIVALENCE (STK (1, 13), WFSOP (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 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 OPTS, WFTS, BIASTS, TSUBX INTEGER DUMMY, TSUBXB, TSUBOP, TWFSOP INTEGER NAMXTS INTEGER MAGIC (28) INTEGER NLOPS LOGICAL NLTEST DATA MAGIC / 32, 32, 64, 64, 64, 64, 1 -32, -64, 64, 0, 0, 0,0, 0, -160, -96, 1 -128, 0, 0, 0,0, 0, 0,64, 65, 33, 0, 0/ 1 IF (.NOT. (MODE (SIDE) .EQ. SPMODE .AND. THIS .EQ. HI))GO TO 13000 OPTS = LDAI IF (SIDE .EQ. RIGHT) OPTS = OPTS + MAGIC (BASE) CALL BLDOP (OPTS, WF5, 0, NULLX, WF7) GO TO 13001 13000 CONTINUE OPTS = OPCODE (SIDE) BIASTS = BIAS (SIDE) WFTS = WFOPND (SIDE) TSUBX = SUBX (SIDE) NAMXTS = NAMEX (SIDE) IF (.NOT. (SIDE .EQ. RIGHT))GO TO 13002 OPTS = OPTS + MAGIC (BASE) GO TO 13003 13002 CONTINUE IF (.NOT. (NLTEST (NAMXTS, REGBIT)))GO TO 13004 CALL GENTRA (NLOPS (REGNUM, NAMXTS), AREG) RETURN 13004 CONTINUE 13003 CONTINUE IF (TSUBX .NE. 0) GO TO 200 IF (.NOT. (THIS .EQ. HI))GO TO 13006 IF (.NOT. (WFTS .LE. WF8))GO TO 13008 BIASTS = BIASTS + 1 GO TO 13009 13008 CONTINUE WFTS = WFTS + 1 13009 CONTINUE 13006 CONTINUE 100 CALL BLDOP (OPTS, WFOP (SIDE), BIASTS, NAMXTS, WFTS) 13001 CONTINUE IF (.NOT. EZSTA) ACTREG (THIS) = AREG RETURN 200 IF (.NOT. (NLTEST (TSUBX, REGBIT)))GO TO 13010 TS = NLOPS (REGNUM, TSUBX) IF (.NOT. (TS .EQ. AREG))GO TO 13012 CALL REGMAN (SAVREG, YREG, DUMMY) CALL BLDBLK (168, WF4) SUBX (SIDE) = REGS (YREG) GO TO 13013 13012 CONTINUE IF (TS .EQ. XREG) OPTS = OPTS + 4 13013 CONTINUE IF (.NOT. (THIS .EQ. HI))GO TO 13014 IF (.NOT. (OPCODE (SIDE) .EQ. 177))GO TO 13016 CALL BLDBLK (200, WF4) CALL REGMAN (CLRACX, YREG, 0) GO TO 13017 13016 CONTINUE BIASTS = BIASTS + 1 13017 CONTINUE 13014 CONTINUE GO TO 13011 13010 CONTINUE TSUBXB = SUBXB (SIDE) IF (.NOT. (THIS .EQ. HI))GO TO 13018 IF (.NOT. (OPCODE (SIDE) .EQ. 177))GO TO 13020 TSUBXB = TSUBXB + 1 GO TO 13021 13020 CONTINUE BIASTS = BIASTS + 1 13021 CONTINUE 13018 CONTINUE TSUBOP = SUBOP (SIDE) TWFSOP = WFSOP (SIDE) CALL REGSRC (7, TSUBOP, TWFSOP, TSUBX, 0, TSUBXB, 0) IF (TSUBOP .GE. 0) CALL BLDOP (TSUBOP, TWFSOP, TSUBXB, TSUBX, WF7) 13011 CONTINUE GO TO 100 END