SUBROUTINE ARAGEN 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 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 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 RET, RET1, RET2 INTEGER TRANS INTEGER BCODE (3, 3) INTEGER NLOPS LOGICAL NLTEST DATA BCODE / 169, 173, 165, 162, 174, 166, 160, 172, 164/ 1 IF (MORE) GO TO 54 IF (RSTKX .NE. 0) CALL REGSRC (5, NAMEX (RSTKX), 0, 0, 0, 0, 0) 1000 TS = LEFT CONTINUE 13000 CONTINUE COL = 4 NLX = NAMEX (TS) IF (.NOT. (NLTEST (NLX, REGBIT)))GO TO 13002 IF (.NOT. (MODE (TS) .EQ. SPMODE))GO TO 13004 COL = NLOPS (REGNUM, NLX) GO TO 13005 13004 CONTINUE COL = 5 13005 CONTINUE GO TO 13003 13002 CONTINUE IF (.NOT. (NLX .EQ. STPTRX))GO TO 13006 COL = 6 GO TO 13007 13006 CONTINUE IF (.NOT. (SUBX (TS) .EQ. STPTRX))GO TO 13008 COL = 7 IF (MODE (TS) .EQ. DPMODE) COL = 8 13008 CONTINUE 13007 CONTINUE 13003 CONTINUE IF (.NOT.(TS .EQ. LEFT))GO TO 13001 ROW = COL TS = RIGHT GO TO 13000 13001 CONTINUE GO TO ( 2, 2, 2, 40, 50, 2, 2, 2), ROW 1 RETURN 2 MORE = .TRUE. RETURN 40 GO TO (41, 42, 43, 44, 45, 46, 47, 48 ), COL 41 CALL GENLA GO TO 1 42 CALL GENLXY (XREG) GO TO 1 43 CALL GENLXY (YREG) GO TO 1 44 IF (.NOT. (MODE (RIGHT) .EQ. DPMODE .AND. NAMEX (LEFT) .EQ. NAMEX 1(RIGHT)))GO TO 13010 CALL GENLXY (XREG) THIS = HI CALL GENDO THIS = LOW GO TO 54 13010 CONTINUE CALL GENLA 440 SIDE = RIGHT CALL GENDO CALL REGMAN (SETREG, AREG, RSTKX) IF (.NOT. (MODE (RIGHT) .EQ. SPMODE))GO TO 13012 MODE (LEFT) = SPMODE GO TO 1 13012 CONTINUE SIDE = LEFT CALL GENMOV SIDE = RIGHT CALL GENDO MODE (LEFT) = DPMODE GO TO 1 45 CALL GENLXY (XREG) THIS = HI CALL GENDO MODE (LEFT) = DPMODE GO TO 1 46 CALL GENLXY (XREG) CALL BLDBLK (154, WF4) ACTLO = XREG GO TO 1 47 CALL GENLA CALL BLDBLK (72, WF4) ACTLO = AREG GO TO 1 48 THIS = HI CALL GENLA CALL BLDBLK (72, WF4) ACTHI = 0 THIS = LOW CALL GENDO CALL BLDBLK (72, WF4) ACTLO = 0 GO TO 1 50 IF (.NOT. (STAREG .EQ. 0))GO TO 13014 STAREG = LEFT ACTHI = AREG ACTLO = XREG 13014 CONTINUE GO TO (51, 52, 53, 54, 55, 56, 57, 58 ), COL 51 CONTINUE 52 CONTINUE 53 STATUS (ACTHI) = 0 ACTHI = 0 NAMEX (LEFT) = REGS (ACTLO) MODE (LEFT) = SPMODE GO TO 1000 54 MORE = .FALSE. IF (MODE (RIGHT) .EQ. SPMODE) GO TO 53 IF (.NOT. (ACTHI .EQ. AREG))GO TO 13016 THIS = HI OTHER = LOW 13016 CONTINUE IF (OPCODE (RIGHT) .EQ. LDAZP .OR. OPCODE (RIGHT) .EQ. LDAABS) EZS 1TA = .TRUE. GO TO 440 55 IF (.NOT. (ACTHI .EQ. AREG))GO TO 13018 IF (.NOT. (ACTLO .GT. YREG))GO TO 13020 CALL BLDOP (166, WF5, 0, REGS (ACTLO), WF7) CALL BLDOP ( 9, WF5, 0, NULLX, WF7) 13020 CONTINUE GO TO 13019 13018 CONTINUE IF (.NOT. (ACTHI .EQ. XREG))GO TO 13022 IF (.NOT. (ACTLO .EQ. AREG))GO TO 13024 CALL REGMAN (CTFREE, ACTLO, 1) CALL BLDOP (STAZP, WF5, 0, REGS (ACTLO), WF7) 13024 CONTINUE CALL BLDOP (134, WF5, 1, REGS (ACTLO), WF7) CALL BLDOP (166, WF5, 0, REGS (ACTLO), WF7) CALL BLDOP (LDAZP, WF5, 1, REGS (ACTLO), WF7) GO TO 13023 13022 CONTINUE CALL REGMAN (SAVREG, XREG, DUMMY) CALL BLDBLK (TAX, WF4) CALL BLDOP (LDAZP, WF5, 1, REGS (ACTHI), WF7) 13023 CONTINUE 13019 CONTINUE STATUS (ACTLO) = 0 STATUS (ACTHI) = 0 ACTLO = XREG ACTHI = AREG GO TO 1 56 CONTINUE 57 GO TO 51 58 IF (.NOT. (ACTHI .GT. YREG))GO TO 13026 CALL BLDOP (STAZP, WF5, 0, REGS (ACTHI), WF7) NAMEX (LEFT) = REGS (ACTHI) STAREG = 0 ACTHI = 0 ACTLO = 0 GO TO 48 13026 CONTINUE IF (.NOT. (ACTHI .EQ. AREG))GO TO 13028 CALL BLDBLK (72, WF4) IF (.NOT. (ACTLO .EQ. XREG))GO TO 13030 CALL BLDBLK (TXA, WF4) GO TO 13031 13030 CONTINUE CALL BLDOP (LDAZP, WF5, 0, REGS (ACTLO), WF7) 13031 CONTINUE GO TO 13029 13028 CONTINUE IF (.NOT. (ACTLO .EQ. AREG))GO TO 13032 CALL REGMAN (CTFREE, ACTLO, 1) CALL BLDOP (STAZP, WF5, 0, REGS (ACTLO), WF7) 13032 CONTINUE CALL BLDBLK (TXA, WF4) CALL BLDBLK ( 72, WF4) CALL BLDOP (LDAZP, WF5, 0, REGS (ACTLO), WF7) 13029 CONTINUE CALL BLDBLK (72, WF4) STATUS (ACTHI) = 0 ACTHI = 0 STATUS (ACTLO) = 0 ACTLO = 0 GO TO 1 END