8bit Projects For Everyone

Find   for  

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.

Memory map

SectionMemory bank

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:

LD A,code
where 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.

Hardware versions

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.

Stereo sound

All 3 channels of AY are joined together and connected to transistor amplifier, then to MC1376 encoder.

Tell other people:

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

See also

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.



Forgot password?

SVI 738
Elwro Junior
Sam Coupé
TC 2048
TC 2068
TC 3256
TS 2068
UK 2086
FDD 3000
Elwro 500
MK 45
Amstrad CPC
Bosman 8
Jet 80
ZX Spectrum

If you see error on this page, describe here:

© 2009-12-28 21:50 Jarek Adamski, http://8bit.yarek.pl