PARTNO XXXXX ; NAME U4; DATE September 23, 1991 ; REV 5 ; DESIGNER Dave Haynie ; COMPANY Commodore ; ASSEMBLY A3000+ ; LOCATION West Chester ; /************************************************************************/ /* */ /* A3000+ Gary+ Tower Function Generator */ /* */ /************************************************************************/ /* Allowable Target Device Types: 22V10-10 */ /************************************************************************/ /* Clock: !CPUCLK */ /************************************************************************/ /* Free Pins: NONE */ /************************************************************************/ /* HISTORY */ /* DBH Aug 30: Brand stinking new */ /* DBH Sep 1: Fixed KBREN and VOVL equations */ /* DBH Sep 1: Fixed NETDS and DSPRST equations */ /* DBH Sep 19: Qualified timer with network select */ /* DBH Sep 19: Changed around clocking stuff */ /* DBH Sep 23: Various fixes to NET, VOVL, D0 */ /************************************************************************/ /** Inputs **/ PIN 1 = NCPUCLK ; /* System clock */ PIN 2 = !ROM ; /* ROM select */ PIN 3 = !CIA0 ; /* CIA select */ PIN 4 = !IKBRST ; /* Incoming keyboard reset */ PIN 5 = !RSTREG ; /* Register qualifiers */ PIN 6 = !DSPREG ; PIN 7 = !NETREG ; PIN 8 = !REGQUAL ; PIN 9 = RW ; /* 68030 read/write strobe */ PIN 10 = !RST ; /* I/O reset */ PIN 11 = !AS ; /* 68030 address strobe */ PIN 13 = !POWERUP ; /* Power up reset */ /** Outputs **/ PIN 14 = !DSPRST ; /* DSP reset output */ PIN 15 = D0 ; /* Data line */ PIN 16 = !NETCS ; /* Network chip select */ PIN 17 = !NETDS ; /* ... and data strobes */ PIN 18 = VOVL ; /* Virtual ROM overlay */ PIN 19 = !KBRST ; /* Keyboard reset */ PIN 20 = !KBREN ; /* Keyboard enable */ /** Used Internally **/ PIN 21 = !T0 ; /* Timer count */ PIN 22 = !T1 ; PIN 23 = !TERM ; /* Termination indicator */ /** Declarations and Intermediate Variable Definitions **/ /* Basic valid cycle */ cpucycle = AS & !RST; /* Here are the fully qualified selects and all */ netsel = cpucycle & REGQUAL & NETREG; dspsel = cpucycle & REGQUAL & DSPREG; rstsel = cpucycle & REGQUAL & RSTREG; romsel = cpucycle & ROM; /* When do we want the termination? */ termsel = netsel # romsel; /** Logic Equations **/ /* The DSP reset function. It must power up asserted, so that the DSP doesn't find itself running out in E-space. It also responds to reset register writes, so I can trun it on when the time is right. */ DSPRST = POWERUP # RST # dspsel & !RW & !D0 # !dspsel & DSPRST; /* The data line reads back the DSPRST setting. */ D0 = DSPRST; D0.OE = dspsel & RW; /* The network is selected and strobed here, the strobe a slight delay from the chip select. */ NETCS = netsel; NETDS = netsel & T0 # netsel & T1; /* The virtual overlay function. This should be asserted on any reset, and held until the CIA 0 is selected. */ VOVL = RST # VOVL & !CIA0; /* The keyboard stuff. If KBREN is asserted, the keyboard reset from Gary goes out on the Gary+ keyboard reset line. If not, only a powerup will reset the system out from Gary+. The KBREN line itself is asserted on powerup and latched until changed by the CPU. */ KBRST = IKBRST & KBREN # POWERUP; KBREN = POWERUP # !POWERUP & rstsel & !D0 # !POWERUP & !rstsel & KBREN; /* The counters are responsible for measuring 200ns for Network Chip or ROM select cycle termination. */ T0.D = termsel & !T0 & !T1 # termsel & T1; T0.AR = RST; T1.D = termsel & T0 # termsel & T1; T1.AR = RST; TERM.D = termsel & T1 & T0; TERM.AR = RST;