SUBROUTINE IO 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 IOSTEP INTEGER IONX INTEGER PACKET INTEGER IOFLAG INTEGER IOINDX INTEGER IONAME (6) INTEGER ICLP03 COMMON /IOC/ IOSTEP COMMON /IOC/ IONX COMMON /IOC/ PACKET COMMON /IOC/ IOFLAG COMMON /IOC/ IOINDX COMMON /IOC/ IONAME COMMON /IOC/ ICLP03 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 NAME (9) COMMON /NLNAME/ NAME INTEGER FCHRTS INTEGER SCFLAG INTEGER QMODE INTEGER LBIAS INTEGER SCOUNT INTEGER QINDEX LOGICAL NOTINQ COMMON /SRCEX/ FCHRTS COMMON /SRCEX/ SCFLAG COMMON /SRCEX/ QMODE COMMON /SRCEX/ LBIAS COMMON /SRCEX/ SCOUNT COMMON /SRCEX/ QINDEX COMMON /SRCEX/ NOTINQ LOGICAL MSEEN, SMSEEN, ZFLAG INTEGER SMODE, TPFLAG, DEFMOD, LEVEL INTEGER STOAC, OP COMMON /BPO/ MSEEN, SMSEEN, ZFLAG COMMON /BPO/ SMODE, TPFLAG, DEFMOD, LEVEL COMMON /BPO/ STOAC, OP 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 LOCFLG (20) EQUIVALENCE (STK (1, 7), LOCFLG (1)) INTEGER OSTACK (20) EQUIVALENCE (STK (1, 8), OSTACK (1)) 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 LEVELB, NLEVEL, LLEVEL, ILEVEL, CLEVEL INTEGER ICLP04 COMMON /LEVELS/ LEVELB, NLEVEL, LLEVEL, ILEVEL, CLEVEL COMMON /LEVELS/ ICLP04 INTEGER PLEVEL, STOPS (20) INTEGER CNLSID (9), CNLTLI (9), CNLEND (9) INTEGER CLX, CPLOC (30) INTEGER NESTX, PNESTX INTEGER RELLEV, RELCNT, TRUEF LOGICAL RELPAS INTEGER CMPFLG INTEGER ILB INTEGER BRCT, BROK, TNESTX COMMON /COMP/ PLEVEL, STOPS COMMON /COMP/ CNLSID, CNLTLI, CNLEND COMMON /COMP/ CLX, CPLOC COMMON /COMP/ NESTX, PNESTX COMMON /COMP/ RELLEV, RELCNT, TRUEF COMMON /COMP/ RELPAS COMMON /COMP/ CMPFLG COMMON /COMP/ ILB COMMON /COMP/ BRCT, BROK, TNESTX 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 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 ADCINX INTEGER ANDINX INTEGER ASLINX INTEGER BITINX INTEGER CMPINX INTEGER CPXINX INTEGER CPYINX INTEGER DECINX INTEGER EORINX INTEGER INCINX INTEGER JMPINX INTEGER JSRINX INTEGER LDAINX INTEGER LDXINX INTEGER LDYINX INTEGER LSRINX INTEGER ORAINX INTEGER ROLINX INTEGER RORINX INTEGER SBCINX INTEGER STAINX INTEGER STXINX INTEGER STYINX INTEGER ICLP07 COMMON /OPINX/ ADCINX, ANDINX, ASLINX, BITINX, CMPINX COMMON /OPINX/ CPXINX, CPYINX, DECINX, EORINX, INCINX COMMON /OPINX/ JMPINX, JSRINX, LDAINX, LDXINX, LDYINX COMMON /OPINX/ LSRINX, ORAINX, ROLINX, RORINX, SBCINX COMMON /OPINX/ STAINX, STXINX, STYINX COMMON /OPINX/ ICLP07 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 BRACEX, SELX, LSX, SELXB INTEGER FUNCNT, FSCNT, FRCNT, FUNVAL INTEGER NRFLS, ARGSIZ, PARCNT INTEGER BSTACK (10), SUBENT (40) INTEGER FLS (6), PARSAV, FLSAVE (6) INTEGER WHSTRT (30), WHLOW (10), WHHIGH (10) INTEGER LOOPT (10), LOOPE (10), LOOPF (10) COMMON /BRACE/ BRACEX, SELX, LSX, SELXB COMMON /BRACE/ FUNCNT, FSCNT, FRCNT, FUNVAL COMMON /BRACE/ NRFLS, ARGSIZ, PARCNT COMMON /BRACE/ WHSTRT, BSTACK, SUBENT COMMON /BRACE/ FLS, PARSAV, FLSAVE EQUIVALENCE (WHSTRT, LOOPT) EQUIVALENCE (WHLOW, LOOPE, WHSTRT (11)) EQUIVALENCE (WHHIGH, LOOPF, WHSTRT (21)) 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 IOTS, IOSTOP, RET, OPTS INTEGER IOSUFX (11), TS, IPKT(3), OPKT (3) INTEGER ENTNUM, NLOPS, SNMLST, GCHAR LOGICAL NLTEST DATA IPKT / 1353,'.B','UF'/ DATA OPKT / 1349,'.B','UF'/ DATA IOSUFX /'SP', 'DP', 'ST', 'HX', 'UN', 'LN', 'EJ', 'MC', 'P 1C', 'TA', 'BL'/ IF (.NOT. (OP .EQ. GTR))GO TO 13000 IOSTOP = LESS IONX = 4 PACKET = -1 GO TO 13001 13000 CONTINUE IOSTOP = GTR IONX = 1 PACKET = -2 13001 CONTINUE LEVELB = ILEVEL IF (.NOT. (NEXTOP .EQ. SEMIC))GO TO 13002 PACKET = NAMEX (OPX) CALL BLDPO 13002 CONTINUE IF (.NOT. (NAMEX (OPX) .NE. 0))GO TO 13004 IOSTEP = 5 RET=1 GO TO 100 5 CONTINUE 13004 CONTINUE QVALUE = 0 RELPAS = .FALSE. CONTINUE 13006 CONTINUE SCOUNT = 0 CALL PEEK IF (.NOT. (PEEKS .EQ. ARROW .OR. PEEKS .EQ. LESSEQ))GO TO 13008 CALL FNZS IOSTEP = PEEKS - 14 GOTO 10 13008 CONTINUE IF (.NOT. (PEEKS .EQ. EQUAL))GO TO 13010 IOSTEP = 10 GOTO 10 13010 CONTINUE IF (.NOT. (PEEKS .EQ. COLON))GO TO 13012 IOSTEP = 11 10 CALL FNZS GO TO 13013 13012 CONTINUE IF (.NOT. (PEEKS .EQ. UPARO .OR. PEEKS .EQ. IOSTOP .OR. PEEKS .EQ. 1 SEMIC .OR. PEEKS .EQ. COMMA))GO TO 13014 CALL ADVAN GOTO 20 13014 CONTINUE IOTYPE = 0 QVALUE = 0 DEFMOD = 0 SCOUNT = 0 STOAC = 0 CALL BLDPO NEXTX = OPX OSTACK (NEXTX) = IAND (OSTACK (NEXTX), -64) + COMMA IOTS = NAMEX (NEXTX) IF (NLTEST (IOTS, REGBIT)) CALL GENER (SAVCAL) IF (LOCFLG (NEXTX) .NE. 0) CALL FAULTP (66) IF (NEXTOP .NE. COLON) CALL FAULTP (33) IF (.NOT. (IOTYPE .NE. 0))GO TO 13016 IOSTEP = IOTYPE + 3 - ST GO TO 13017 13016 CONTINUE IF (NLOPS (DFINED, NLX) .EQ. 0) CALL NLSET (NLX, IOBIT) IF (.NOT. (.NOT.SMSEEN .AND. (QVALUE .NE. 0 .OR. NLTEST (NLX, STR 1BIT))))GO TO 13018 QVALUE = 0 IOSTEP = 3 GO TO 13019 13018 CONTINUE IOSTEP = MODE (NEXTX) + 1 13019 CONTINUE 13017 CONTINUE OPX = OPX + 1 13013 CONTINUE 15 CALL BLDPO CALL DUMST ('IO ') NEXTX = OPX - 1 IF (.NOT. (IOSTEP .EQ. 3))GO TO 13020 IF (.NOT. (NAMEX (NEXTX) .EQ. 0))GO TO 13022 NUMBER = SCOUNT NAMEX (NEXTX) = ENTNUM (NLX) 13022 CONTINUE GO TO 13021 13020 CONTINUE IF (IOSTEP .EQ. 6 .AND. NAMEX (OPX) .EQ. 0) IOSTEP = 7 13021 CONTINUE SCOUNT = 0 RET=2 GO TO 100 20 IF (.NOT.(NEXTOP .NE. IOSTOP))GO TO 13007 IF (.NOT. (NEXTOP .EQ. SEMIC))GO TO 13024 IOSTEP = 6 NUMBER = 1 CALL CLRSTK (OPX) NAMEX (OPX) = ENTNUM (NLX) RET=3 GO TO 100 25 CONTINUE GO TO 13025 13024 CONTINUE IF (.NOT. (NEXTOP .EQ. UPARO))GO TO 13026 IOSTEP = 6 GOTO 15 13026 CONTINUE 13025 CONTINUE GO TO 13006 13007 CONTINUE CALL REGMAN (CLRSTA, 0, 0) NEXTOP = COMMA LEVELB = LLEVEL OPX = 2 RETURN 100 IF (.NOT. (IOSTEP .LT. 5))GO TO 13028 TS = 3 GO TO 13029 13028 CONTINUE TS = 2 OPX = OPX + 1 13029 CONTINUE IF (IOSTEP .EQ. 7) GO TO 120 110 CALL CLRSTK (OPX) NAMEX (OPX) = FLS (TS) NEXTX = OPX - 1 LOCFLG (NEXTX) = 1 MODE (OPX) = DPMODE MODE (NEXTX) = DPMODE ACTHI = 0 ACTLO = 0 CALL REGMAN (CLRSTA, 0, 0) CALL SETUP (LDAINX, NEXTX) CALL SETUP (STAINX, OPX) OPTS = NEXTOP NEXTOP = COMMA CALL GEN (ARROW, NEXTX, OPX) NEXTOP = OPTS IF (.NOT. (TS .EQ. 3))GO TO 13030 TS = 2 OPX = OPX - 1 GO TO 110 13030 CONTINUE IF (.NOT. (TS .EQ. 2))GO TO 13032 120 TS = 1 NEXTX = OPX - 1 CALL CLRSTK (NEXTX) IF (.NOT. (PACKET .LT. 0))GO TO 13034 IF (.NOT. (PACKET .EQ. -1))GO TO 13036 CALL MOVE (IPKT, NAME, 3) GO TO 13037 13036 CONTINUE CALL MOVE (OPKT, NAME, 3) 13037 CONTINUE NAMEX (NEXTX) = SNMLST (NLX) GO TO 13035 13034 CONTINUE NAMEX (NEXTX) = PACKET 13035 CONTINUE GO TO 110 13032 CONTINUE CALL MOVE (IONAME (IONX), NAME, 3) NAME (4) = IOSUFX (IOSTEP) TS = SNMLST (TS) CALL BLDOP (32, WF8, 0, TS, WF7) OPX = OPX - 1 GOTO (5,20,25),RET END