ZX Spectrum + 128K
Uses 3 more ports than 48kB model:
- #7FFD (32765) - decoded as A15=0, A1=0 and /IORQ=0. Bits 0..5 are latched. Bits 0..2 select RAM bank in secton D. Bit 3 selects RAM bank to dispay screen (0 - RAM5, 1 - RAM7). Bit 4 selects ROM bank (0 - ROM0, 1 - ROM1). Bit 5, when set locks future writing to #7FFD port until reset. Reading #7FFD port is the same as writing #FF into it.
- #BFFD (49149) - write data byte into AY-3-8912 chip.
- #FFFD (65533) - select AY-3-8912 addres (D4..D7 ignored) and reading data byte.
RAM2 and RAM5 can be also paged into section D, but this is useles. Some software test this feature, but it is not recomended as some upgrades may not be correctly recognized.
The screen can be displayed from RAM5 (default) or RAM7. This is independent from other settings.
RAM1, RAM3, RAM5, RAM7 are slowed by ULA. (In +2A/+2B/+3 slowed banks are RAM4, RAM5, RAM6, RAM7.)
Some technical notes
When selecting the memory bank use the full #7FFD address, or at least structure like:
code is range #40..#5F. This means - always keep the A14 set (and A0..A7=#FD). Otherwise the program will not work on other models.
Most of ZX Spectrum + 128K is VERSION 6K © 1985.
There's a VERSION 9G with DB9 female slot for the RS232.
Port disabling - /IORQGE
It is good to upgrade /IORQGE (ULADIS) signal on edge slot to disable also memory bankswitching and AY. (This means: all internal port should be disabled when providing high state to /IORQGE input.)
There's no /IORQGE signal on edge slot. To build one, you need two NPN trasistors, 10kohm, 470ohm-1kohm resistors and some wire. Transistors can be mounted near the ROM chip with collectors connected to C41 +5V node and bases to wire connected to /IORQGE on edge slot (13 bottom). One emitter goes to A1 hole near HAL (IC29) and second with wire to upper node of R27 resistor (/IOULA). A1 is separated with the smaller resistor placed under ROM. The 10kohm resistor pulls transistor bases to ground.
Free the #1FFD port
It is also good to patch the #7FFD port decoder to include also A14 line - this allows to connect interfaces like ZX+3 ROM bankswitching (uses #1FFD port) and FDC (uses #2FFD and #3FFD ports).
To free the #1FFD port from decoder, you need one of two 1N4148 diodes and 470ohm-1kohm SMD resistor. Cut the track near pin 13 of HAL (IC29) and put the resistor there. Then the outter node of resistor connect with diode to pin 2 (A14) of HAL (IC29). Second diode you can place over or under the IC28 (74LS04), connecting pins 10 (inverted /WR) and 2 (#7FFD latch strobe before iversion). This diode prevents #7FFD port against writing #FF to it while IN operation.
All 3 channels of AY are joined together and connected to transistor amplifier, then to MC1376 encoder.
Files for download
- zx128fix.jpg 92.3kB (2005-08-07 00:38)
- Most left is ugraded keyboard slot. The PNP transitor over HAL (IC29) locks latch strobe when A14=0 (so port #1FFD is separated). Two NPN transistors near ROM support port disabling (/IORQGE line).
- zx128f.png 165.1kB (2001-09-05 02:00)
- Schematics of the digital part of ZX128.
- zx128a.png 86.2kB (2001-09-05 02:00)
- Analogue schematic diagram of ZX128.
- bright_idea.png 2.0kB (2001-09-05 02:00)
- For the original 128K, a modification to combine the BRIGHT signal with the RGB outputs.
Links to other pages
- [pl] Additional description of memory map and forum discussion.
- New ZX Spectrum clone
- Sinclair ZX Spectrum 48kB
- Sinclair ZX Spectrum 16kB/48kB.
- Sinclair ZX Spectrum +2
- Description of Sinclair ZX Spectrum +2 model, equiped with datarecorder.
- AY sound chip
- AY sound generator.