I decided to tackle the low-mode problem first, especially when I realized that using the extra bank switch output (nominally BA17) could generate the N-1 bank address by jumpering it to BA14 and using its output enable to force a zero in $4000-$7FFF. After most of a day's work, and having to rewire the board twice before even getting the GAL programmed, I got Xenophobe running. (that was one of the games that wouldn't work at all earlier) I got up to the delta-level base before the xenos broke my puffer gun and kicked my ass.
So I'm going to add another jumper point to my schematic, because, after all, someone might want to make a copy-cart of Klax or something. That makes three modes (8-48K with a 7402, 128K w/RAM, 128K low-mode) that fit in the GAL socket so far. Hooking up a Pokey eventually is going to be interesting, and I'm probably going to hang it off of another hot-glued board.
I still need to figure out what's wrong with the RAM, and then I'll see about getting some photos of my frankenboard. (It's not quite the ultracart yet... maybe superdupercart?)
// Atari 7800 supercart 128K ROM + 8/16K RAM or 128K ROM + 16K ROM chip 20V8R; // 20V8 registered mode pin 1 CLK; pin 24 VCC; pin 2 CLK2; pin 23 P_23; pin 3 RW; pin 22 LCO; pin 4 P_4; pin 21 !RAMCS; pin 5 A14; pin 20 !ROMCS; pin 6 A15; pin 19 BA14; pin 7 P_7; pin 18 BA15; pin 8 D4; pin 17 BA16; pin 9 D0; pin 16 BA17; pin 10 D1; pin 15 !OEO; pin 11 D2; pin 14 D3; pin 12 GND; pin 13 !OE; BA14 := D0; BA15 := D1; BA16 := D2; ROMCS = A15 & RW; // 8000-FFFF read RAMCS = !A15 & A14 & CLK2; // 4000-7FFF !LCO = A15 & !A14 & !RW & CLK2; // 8000-BFFF write OEO = !A14; // output bank select at 8000-BFFF // 20V8R needs OE term for non-registered pins ROMCS.OE = 1; LCO.OE = 1; OEO.OE = 1; RAMCS.OE = 1; BA17.OE = 1;
// Atari 7800 supercart 128K ROM with bank 6 at $4000-$7FFF // this configuration needs a jumper between pins 16 and 19 chip 20V8R; // 20V8 registered mode pin 1 CLK; pin 24 VCC; pin 2 CLK2; pin 23 P_23; pin 3 RW; pin 22 LCO; pin 4 P_4; pin 21 !RAMCS; pin 5 A14; pin 20 !ROMCS; pin 6 A15; pin 19 BA14; pin 7 P_7; pin 18 BA15; pin 8 D4; pin 17 BA16; pin 9 D0; pin 16 ZA14; pin 10 D1; pin 15 !OEO; pin 11 D2; pin 14 D3; pin 12 GND; pin 13 !OE; BA14 := D0; BA15 := D1; BA16 := D2; ROMCS = A15 & RW | // 8000-FFFF read A14 & RW; // 4000-7FFF read, C000-FFFF read RAMCS = 0; // RAM not used in this configuration !LCO = A15 & !A14 & !RW & CLK2; // 8000-BFFF write OEO = !A14; // output bank select at 8000-BFFF ZA14 = 0; // drives BA14 low to select bank 6 // 20V8R needs OE term for non-registered pins ROMCS.OE = 1; LCO.OE = 1; OEO.OE = 1; RAMCS.OE = 1; ZA14.OE = !A15 & A14 & RW; // 4000-7FFF read, to drive BA14 low and select bank 6
Edited by Bruce Tomlin, Sun Jul 10, 2005 1:05 PM.















