A4092-dev/GALs/u202.pld
2025-06-05 15:16:01 -07:00

119 lines
3.7 KiB
Plaintext

PARTNO 391583-02 ;
NAME U202 ;
DATE June 30, 1992 ;
REV 0 ;
DESIGNER Dave Haynie ;
COMPANY Commodore ;
ASSEMBLY A4091 ;
LOCATION West Chester ;
DEVICE g22V10 ;
/************************************************************************/
/* */
/* A4091 AutoConfig */
/* */
/* This device manages various aspects of autoconfiguration, along */
/* with some address decoding and Zorro III signal generation. */
/* */
/************************************************************************/
/* */
/* DEVICE DATA: */
/* */
/* Device: 22V10-15 */
/* Clock: NONE */
/* Unused: NONE */
/* */
/************************************************************************/
/* */
/* REVISION HISTORY: */
/* */
/* DBH Jun 20: Original version. */
/* */
/************************************************************************/
/** INPUTS: **/
PIN 1 = !MATCH ; /* Address comparator match. */
PIN [2..7] = [A6..1] ; /* Low order address, A1 is really A8 */
PIN 8 = READ ; /* Z3 read strobe. */
PIN 9 = !DS3 ; /* Z3 high order data strobe. */
PIN 10 = FCS ; /* Z3 full cycle strobe. */
PIN 11 = FC1 ; /* Function codes */
PIN 13 = FC0 ;
PIN 14 = !BERR ; /* Bus error */
PIN 15 = !CFGIN ; /* Configuration chain input */
PIN 16 = !RST ; /* Z3 reset strobe. */
PIN 17 = !SHUNT ; /* Z2 configuration shunt. */
/** OUTPUTS: **/
PIN 18 = !CFGOUT ; /* Configuration chain output */
PIN 19 = CFGLT ; /* Configuration address latch */
PIN 20 = !CINH ; /* Z3 cache inhibit */
PIN 22 = !SLAVE ; /* Normal slave response to Z3 bus. */
PIN 23 = !INTSPC ; /* Partially qualified interrupt decode. */
/** USED INTERNALLY: **/
PIN 21 = !SHUTUP ; /* Card is Shut up. */
/** INTERNAL TERMS: **/
/* Valid processor access space? */
cpuspace = FC0 & FC1;
dataspace = !FC1 & FC0;
/* The low-order addresses. */
field addr = [A6..A1];
/** OUTPUT TERMS: **/
/* The board configuration is really quite simple. If there's a
write to the configuration register space, the configuration address
is latched and we pass configuration out. If the system is shunted
(eg, in a Zorro II backplane), configuration out goes immediately.
Note that the configuration read registers are actually supplied by
the first part of the boot ROM. */
CFGLT = addr:44 & dataspace & FCS & !READ & CFGIN & DS3 & !BERR & !RST & !SHUTUP
# CFGLT & !RST;
/* CFGOUT must be activated when board is SHUTUP so the next card in
the config chain can be addressed. */
CFGOUT = CFGLT & !RST & !FCS
# SHUTUP & !RST & !FCS
# CFGOUT & !RST
# SHUNT;
/* A write to the SHUTUP address completely deactivates the board.
But only while not configured, so CFGLT must block SHUTUP */
/* SHUTUP must block generation of CFGLT, SLAVE, CINH and INTSPC */
SHUTUP = addr:4c & dataspace & FCS & !READ & CFGIN & DS3 & !BERR & !RST & !CFGLT
# SHUTUP & !RST;
/* The slave signal is drive from here for any normal access. When it isn't
being driven, it is tri-stated, since the interrupt response logic may
also drive SLAVE. */
SLAVE = 'b'1;
SLAVE.OE = !SHUTUP & CFGIN & MATCH & dataspace & FCS & !RST;
/* The cache should be inhibited for any access to the board. Actually, it
doesn't matter if we cache ROM, but there's no reason to since its not
execute-in-place ROM so no performance is lost making it uncached too. */
CINH = 'b'1;
CINH.OE = !SHUTUP & CFGIN & MATCH & dataspace & FCS & !RST;
/* This signal partially qualifies the decode for interrupt response cycles.
We want to respond to INT2, of course in CPU space only. The rest of
the decode takes place in U203, including the real A1. */
INTSPC = !SHUTUP & CFGIN & CFGOUT & FC0 & FC1 & !RST & !A3 & A2;
INTSPC.OE = 'b'1;