I've got various friends with a T48 or similar PROM programmer which we also try to use to dump ROMs from vintage 8- and 16-bit systems. Unfortunately, they don't have definitions that enable reading of ROMs from many of the vintage parts, particularly 23xx and the like, so I'm finally getting to the point where I feel I should build my own system to do this. I know I could hack on some Arduino thing with a modern ATMega or ARM CPU, but if I'm going to be hacking on code, I'd rather do it on a vintage-era system (where I already have good development tools) than bring in yet more modern tools that I wouldn't use for anything else. And besides, 8-bit assembly hacking is just more fun (for me) than programming in C++.
To start with, using PIO instead of trying to hook the ROM up directly to a bus seems to me obviously the better approach to take: while it's going to be slower, this gets around a whole load of potential timing issues (especially if running the code on a relatively fast machine) as well as giving you much more direct control over pins without having to do any hardware for them. (For example, you can handle inverted chip select lines in software.)
So I now have a pile of SuperAKI-80 boards which seem ideal for this since they have gobs of PIO. As well as the 16 bits of Z80PIO that come along with the Toshiba TMPZ84C015BF (Z80 CPU, CGC, CTC and PIO) it has a Toshiba 82C265, essentially two 8255 chips in on unit, adding another 48 pins of GPIO that, handily, are all together on a 50P (2×25) 0.1" header along with GND and Vcc. This lets me easily bring out a ribbon cable to whatever on the other end, whether it be a socket on a board, an edge connector to a ROM cartridge (e.g., Atari VCS), or whatever.
Obviously I'm going to have to have some sort of definitions for what is on what pins: GND, Vcc, D0‥D7 or D0‥15; A0‥A18 (or maybe higher if I find myself with a >256 Kword ROM), chip selects and pins that need to be held at a particular level.
One of my main worries about this is accidentally driving output pins and creating short circuits, but it would also be nice to have auto-detection of potential errors in hook-up. Does anybody have any ideas on how to deal with these concerns?
To start with, using PIO instead of trying to hook the ROM up directly to a bus seems to me obviously the better approach to take: while it's going to be slower, this gets around a whole load of potential timing issues (especially if running the code on a relatively fast machine) as well as giving you much more direct control over pins without having to do any hardware for them. (For example, you can handle inverted chip select lines in software.)
So I now have a pile of SuperAKI-80 boards which seem ideal for this since they have gobs of PIO. As well as the 16 bits of Z80PIO that come along with the Toshiba TMPZ84C015BF (Z80 CPU, CGC, CTC and PIO) it has a Toshiba 82C265, essentially two 8255 chips in on unit, adding another 48 pins of GPIO that, handily, are all together on a 50P (2×25) 0.1" header along with GND and Vcc. This lets me easily bring out a ribbon cable to whatever on the other end, whether it be a socket on a board, an edge connector to a ROM cartridge (e.g., Atari VCS), or whatever.
Obviously I'm going to have to have some sort of definitions for what is on what pins: GND, Vcc, D0‥D7 or D0‥15; A0‥A18 (or maybe higher if I find myself with a >256 Kword ROM), chip selects and pins that need to be held at a particular level.
One of my main worries about this is accidentally driving output pins and creating short circuits, but it would also be nice to have auto-detection of potential errors in hook-up. Does anybody have any ideas on how to deal with these concerns?



