PARTNO XXXXX ; NAME U2; DATE August 30, 1991; REV 1 ; DESIGNER Dave Haynie ; COMPANY Commodore ; ASSEMBLY A3000+ ; LOCATION West Chester ; /************************************************************************/ /* */ /* A3000+ Gary+ Tower Address Decoder */ /* */ /************************************************************************/ /* Allowable Target Device Types: 22V10-10 */ /************************************************************************/ /* Clock: NONE */ /************************************************************************/ /* Free Pins: NONE */ /************************************************************************/ /* HISTORY */ /* DBH Aug 30: Brand stinking new */ /************************************************************************/ /** Inputs **/ PIN 1 = !BIGZ ; /* Is it real or memorex? */ PIN [2..6] = [A23..19] ; /* Local bus addresses */ PIN [7..11] = [A31..27] ; /* Common addresses */ PIN 13 = A26 ; /** Outputs **/ PIN 21 = !REGQUAL ; /* Register qualifier */ /** Bidirectionals **/ PIN [23..22] = [A25..24] ; /* Local bus addresses */ PIN [20..14] = [TA25..19] ; /* Translated addresses */ /** Declarations and Intermediate Variable Definitions **/ /* Main address of interest */ field addr = [A31..19]; /* Where the network controller sits */ netaddr = addr:[00D90000..00D9FFFF]; /* Where the reset stuff sits */ rstaddr = addr:[00DE0000..00DEFFFF]; /* The new Chip RAM space */ newchip = addr:[01000000..017FFFFF]; /* The new ROM space */ newrom = addr:[00E00000..00E7FFFF] # addr:[03C00000..03FFFFFF]; /** Logic Equations **/ /* The local addresses are only outputs when BIGZ is asserted. */ A25 = 'b'0; A25.OE = BIGZ; A24 = 'b'0; A24.OE = BIGZ; /* The Register qualifier tells the other PALs that we could be in the address space used by the new functions. This is for the keyboard lock, DSP reset, and network controller select. */ REGQUAL = rstaddr # netaddr; /* The address mapping functions are here. Basically, two mappings are necessary. Chip RAM is now located at $01000000-$017FFFFF, as well as the standard $00000000-$001fffff range. So Gary needs to be fooled. Similarly, ROM sits at $03C00000-$03FFFFFF and $00E00000-$00E7FFFF as well as the normal $00F80000-$00FFFFF. Translated addresses spoof this encoding. For Chip RAM, TA25..TA21 get forced low any time a new Chip space access takes place. For ROM, TA25 and TA24 get forced low, TA23..TA19 get forced high. TA25 = A25 & !newchip & !newrom; TA25.OE = !BIGZ; TA24 = A24 & !newchip & !newrom; TA24.OE = !BIGZ; TA23 = A23 & !newchip # newrom; TA22 = A22 & !newchip # newrom; TA21 = A21 & !newchip # newrom; TA20 = A20 # newrom; TA19 = A19 # newrom;