Modification for rom selection
Contents |
Rom switching
The Spectrum 128 is a wonderful machine, but sometimes you just want something slightly different. So, i decided that what i really needed was a way of selecting which roms are in use. This is distinctly optional, but i like it anyway. I also build a custom cartrage port. I didnt use the Interface 2 version because i have no IF/2 cartrages and no immedate prospect of getting any.
Theory
Swapping romsets when the computer is running is a bad idea, and not terribly useful, so to get around this, i decided to make it so you only change roms when you reset the computer.
Four buttons have been provided, three to select alternate romsets within the Rom, and a fourth to select the cart slot. The three ROM buttons are coded via Diode logic to a 2 bit binary number (With "00" being the default if no buttons are pressed) and the fourth button is passed through.
These three signal are latched by half a 74LS174 which is clocked from the reset line.
The output from this is fed directly to A15 and A16 of the ROM chip.
Indication of the rom in use is provided using Diode logic and a set of 74LS04's
To support the cart slot, some additional logic is provided for the CS lines by the gates of a 74LS00
This requires a 128Kbyte EEprom chip, which four sets of roms written. (A set being 32K) I chose:
- Spectrum 128K Rom ("Toastrack")
- Spectrum +2 Rom
- Spectrum 48K rom (For this, i had to double the rom up)
- Spectrum GW rom (Again, this needed to be doubled)
Note that the LEDs and button circuitry is mounted on a seperate board which i mounted on the keyboard. This consisted of the Diode logic and a 74LS04 which provides in the inverters in beige section.
Schematic
NOte that this schematic is complete, although as i wired most of the ROM wires previously and re-used this. (The main change being that the A15 and A16 were wired to 0v instead of to the latch.)
If i were wiring this directly to a normal speccy via the edge connector, I would also have to wire the edge connector's /ROMCS High, and provide another one, probably using a 74LS32, whcih would be
RomCS = (A14 OR A15 OR /MEMRQ)
Finished product
File:Speccy romsel finished.jpg
