Rozszerzenie pamięci RAM

Rozszerzenie pamięci RAM dla ZX Spectrum nadesłane przez Wondera

Pytania i uwagi proszę kierować na adres skrzynki pocztowej: wonder34@poczta.fm

RAM w ZX Spectrum w podstawowej wersji miał rozmiar jedynie 48kB, z czego ok. 6kB zajmuje pamięć ekranu. Programista ma do dyspozycji znacznie mniej pamięci (po szczegóły odsyłam mapy pamięci ZX Spectrum) niż 48kB. Zanim narodził się model ZX Spectrum 128, powstało kilka rodzajów rozszerzeń pamięci. Niezależnie od rozwiązania, cel był zawsze jeden - dostęp do dodatkowych banków pamięci, w których mogły znajdować się dane lub kod programu. W Polsce popularność zdobyło rozszerzenie RAM do 80kB (poprzez dodanie 1 banku 32kB) opisywanie niegdyś w "Bajtku". Opisywany układ, nazwany przeze mnie roboczo "80kB Wonder" również polega na dodaniu 32kB pamięci RAM, również wykorzystuje kości pamięci ram o podwójnej pojemności (warto najpierw przeczytać wspomniany wyżej opis popularnego rozszerzenia do 80kB). Różni się jednak od niego czymś dość istotnym. Przełączanie banków odbywa się dokładnie tak samo, jak w ZX Spectrum 128. Zaraz, ktoś spyta, jak to jest, że tak samo przełącza się banki pamięci w rozszerzeniu do 80kB jak w modelu 128k? Co z brakującymi 48k? Otóż tej pamięci po prostu nie ma. Efekt jest taki, że część oprogramowania dla ZX Spectrum 128k będzie działać tak, jak na modelu 128k, zaś część będzie wymagała drobnych przeróbek. Oczywiście pozostanie też część programów, których nadal nie będzie dało się uruchomić, bo to rozszerzenie oferuje tylko dodatkowe 32kB. Poniżej cytuję fragment opisu działania układu nadesłanego przez Wondera:

Teraz trochę o schemacie. Dekoder 138 dekoduje
trzy adresy:
 65533 (FFFD) - numer rejestru AY.
 49149 (BFFD) - dana wpisywana do rejestru AY.
 32765 (7FFD) - rejestr przełączający banki pamięci.
Bity 0 i 2 tego rejestru wybierają odpowiedni bank pamięci.
nr bitu 7 6 5 4 3 2 1 0
        x x x x x 0 0 0 - bank 0
        x x x x x 0 0 1 - bank 1
        x x x x x 0 1 0 - bank 0
        x x x x x 0 1 1 - bank 1
        x x x x x 1 0 0 - bank 2
        x x x x x 1 0 1 - bank 0
        x x x x x 1 1 0 - bank 2
        x x x x x 1 1 1 - bank 0

FFFF -------------------
     |     |     |     |
     |  0  |  1  |  2  |
     |     |     |     |
C000 -------------------
     |     |
     |  3  |
     |     |
8000 -------
     |     |
     |VRAM |
     |     |
4000 -------
     |     |
     | ROM |
     |     |
0000 -------

x - wartość nieistotna, właściwie bit 1 też jest nieważny.
W sumie wartości 1 i 3 wybierają bank 1,
      a wartości 4 i 6 wybierają bank 2. Już nie pamiętam
dlaczego wybrałem ten układ. Chyba dlatego że większość
gier wybiera jeden z tych banków na dane dla muzyki na AY.
Wyłącznik S2 umożliwia odłączenie dodatkowej pamięci.
To dlatego że niektóre gry korzystają z więcej niż dwóch
banków, lub wybierają banki 1 i 3, czy 4 i 6, a te pary
to przecież ten sam bank. Gry używające dwóch banków łatwo
można przystosować do pracy z tym rozszerzeniem. A te które
korzystają tylko z banków 1 i 4 lub 3 i 6, same działają bez
potrzeby przeróbek. Przycisk S1 to reset, zastosowałem
układ 121 aby po resecie zachować zawartość banków 2 i 3.
Jeśli komuś na tym nie zależy to można ten układ pominąć.
Końcówkę 5 bramki IC5B należy wtedy dołączyć do masy,
a przycisk S2 podłączyć do wyprowadzenia 4 tej bramki.
Wyjście bramki łączymy z układem reset komputera, czyli np.
z plusem kondensatora C27. Sam kondensator C27 należy wylutować.
Bramki IC6A oraz IC6B sterują układem AY 3-8910, reszta
układu AY tak jak na schemacie (*)
(*) mowa o schemacie modułu muzycznego AY-3-8910

Poniżej w postaci plików graficznych (GIF) są do pobrania:
Schemat
Projekt płytki


Powrót do strony głównej...