For the ZX81 there were countless projects about RAM expansions - nevertheless here’s another one, developed by the ZX-TEAM: the ZX81 Giant will give you up to 144kB memory! At first is always one question about how much memory is needed and another how the memory has to be mapped. The Giant is really not any simple expansion unit - it gives you RAM, EPROM and also EEPROM memory. Total there are included: 32kB for EPROM, 8kB for EEPROM and 56kB for RAM. Moreover the whole concept gives you also the opportunity to enlarge RAM up to 1MB or more if you need.

The Giant is an additional PCB which will be plugged into the RAM and ROM socket of the ZX81. As you will know, the Z80 can only address up to 64kB of memory so you have to switch "banks" if you want to apply more. Most suitable for the ZX81 is to divide the address space in eight banks of 8 kB size. The Giant switches two banks: a lower and an upper bank. The lower bank is located at addresses between 8192 and 16393 and includes an 32k x 8 EPROM (27256) and an 32k x 8 RAM. In the 8-16k area so you get eight banks. The upper bank encloses two 8k banks between 49152 to 65535. On the Giant alone is no need to switch here, because there’s only memory for one upper bank. But in addition the megabyte-card uses this area for 64 banks of 16k.

Now I’ve described the contents of 8-16k and 48-64k. What’s between? At first the ordinary BASIC area from 16384 to 32767 with 16k RAM. Followed from 32768 to 40959 by an 8k RAM-IC which is wired parallel to the ROM, so it may be used for alternating CHAR sets. An 8k EEPROM follows then up from 40960 to 49151 which can be write-protected. It is also possible to use this socket for another 8k RAM IC.

The last socket is for the ROM. You must rewrite the original ROM IC into an 8k-EPROM. A larger EPROM (16k or 32k) can also contain other systems, like the Husband Forth ROM or ASZMIC. So there is also a bankswitch here, but only with an ordinary switch.

Bankswitch in the 8-16k area is managed by the Poke-card. Thus detects a POKE 8,x instruction and latches the value. The lower nibble (Bits 0 to 3) is decoded by a LS154 to 16 lines. PK3GAL generates the select signals for the RAM and EPROM from the /CS input. In order of this, the Giant is switched at the lower bank by POKE 8,5 to POKE 8,8 for RAM and by POKE 8,9 to POKE 8,12 for EPROM.

The inner logic of the PK3GAL is:

POKE 8,x /CS /CSRAM /CSEPROM A13* A14*  
5 L L H L L
6 L L H H L
7 L L H L H
8 L L H H H
9 L H L L L
10 L H L H L
11 L H L L H
12 L H L H H
(X means: L or H, doesn't care)


How to construct:

At first you need a ZX81 PCB (issue 1 for the ZX-TEAM-GIANT PCB-layout!) with sockets for RAM and ROM. The diodes in the keyboard-addresslines must be removed and at the old cathode-side a socketstrip must be soldered in. Remove the keyboard-connector too. Then solder the keyboard diodes and the connector in the Giant PCB. The Giant PCB gets pinrows at the soldering side, so you may remove it from the ZX81. On the ZX81 PCB the connection from CPU A15 to ULA Pin18 must be opened. Then connect ULA Pin18, /RD and /M1 signals to the Giant. For this, no sockets are needed. At last connect the Giant to the Poke-card with 5 wires.

Layout of the Giant PCB

Circuit diagram

Kai Fischer, ZX-TEAM, mailto: kai.fischer