SUBROUTINE REGMAN (FUNC, REG, AUX) 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 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 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 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 ACADDR (11), ACTYPE (11), ACSUBS (11) INTEGER ACSBTY (11), ACBIAS (11) INTEGER REGSTK(120) COMMON /RMCOM/ ACADDR, ACTYPE, ACSUBS, ACSBTY, ACBIAS COMMON /RMCOM/ REGSTK INTEGER FUNC, REG, AUX INTEGER SRREG, SRX, CREG, CTREG, FREECT, MAXCT INTEGER RET, SRRET, ACX, PASS INTEGER STINS (3), AC (11, 5) EQUIVALENCE (ACADDR, AC) DATA STINS / 133, 134, 132 / RET=1 FREECT = AUX GO TO ( 100, 200, 300, 400, 500, 600, 700 ), FUNC 1 RETURN 100 CALL SET (0, ACADDR, 11) GO TO 1 200 ACADDR (REG) = 0 GO TO 1 300 CALL SET (0, STATUS, NRREGS) ACTHI = 0 ACTLO = 0 GO TO 1 400 IF (.NOT. (AUX .EQ. YREG .AND. BIAS (REG) .NE. 0))GO TO 13000 ACADDR (YREG) = 0 GO TO 13001 13000 CONTINUE DO 13002 ACX = 1, 5 AC (AUX, ACX) = AC (REG, ACX) 13002 CONTINUE 13001 CONTINUE ACADDR (NZREG) = REGS (AUX) DO 13004 ACX = 2, 5 AC (NZREG, ACX) = 0 13004 CONTINUE CALL DUMST ('REG4') GOTO (1,520,530,540),RET 500 SRREG = REG SRX = STATUS (SRREG) IF (.NOT. ( SRX .NE. 0 ))GO TO 13006 CALL DUMST ('REG5') FREECT = 1 IF (.NOT. (MODE (SRX) .EQ. SPMODE))GO TO 13008 RET=2 GO TO 600 520 CALL BLDOP (STINS (SRREG), WF5, 0, REGS (CREG), WF7) GO TO 13009 13008 CONTINUE IF (.NOT. (ACTHI .GT. YREG))GO TO 13010 CREG = ACTHI CTREG = REGS (CREG) CALL BLDOP (STINS (ACTLO), WF5, 0, CTREG, WF7) GO TO 13011 13010 CONTINUE IF (.NOT. (ACTLO .GT. YREG))GO TO 13012 CREG = ACTLO CTREG= REGS (CREG) CALL BLDOP (STINS (ACTHI), WF5, 1, CTREG, WF7) GO TO 13013 13012 CONTINUE RET=3 GO TO 600 530 CALL BLDOP (STINS (ACTLO), WF5, 0, CTREG, WF7) CALL BLDOP (STINS (ACTHI), WF5, 1, CTREG, WF7) STATUS (XREG) = 0 13013 CONTINUE 13011 CONTINUE ACTHI = 0 ACTLO = 0 13009 CONTINUE STATUS (SRREG) = 0 STATUS (CREG) = SRX NAMEX (SRX) = CTREG AUX = CREG RET=4 GO TO 400 13006 CONTINUE 540 ACADDR (SRREG) = 0 GO TO 1 600 MAXCT = NRREGS + 1 - FREECT DO 13014 PASS = 1, 2 DO 13016 CREG = 4, MAXCT IF (.NOT. (STATUS (CREG) .EQ. 0 .AND. (PASS .EQ. 2 .OR. ACADDR (CR 1EG) .EQ. 0)))GO TO 13018 IF (.NOT. (FREECT .EQ. 2 .AND. STATUS (CREG+1) .NE. 0))GO TO 13020 GO TO 13016 13020 CONTINUE IF (FUNC .EQ. 6) REG = CREG CTREG = REGS (CREG) GOTO (1,520,530,540),RET 13018 CONTINUE 13016 CONTINUE 13014 CONTINUE CALL FATAL (69) GOTO (1,520,530,540),RET 700 IF (AUX .NE. 0) CALL REGSRC (6, NAMEX (AUX), MODE (AUX), SUBX (AU 1X), SUBXM (AUX),BIAS (AUX), REG) GO TO 1 END