Chyba czas napisać, na jakiej zasadzie działa ten moduł. Schemat jego jest dość dobrze znany w świecie ZX81, a cała idea wykorzystania multiplexera 8:1 została stworzona przez Wilfa Rigtera pod nazwą:
"Barebones Internal 32K RAM mapped 8K-40K".
Zacząć należałoby od organizacji pamięci w ZX81 oraz paru wyjaśnień:
0K-8K - obszar ROMu
8K-16K - zakres ten może być wykorzystany przez programy w kodzie maszynowym i jest wykorzystywany przez programy z Hi-Res oparte o WRX. Ten obszar pamięci nie jest inicjowany i sprawdzany przez procedury ROMu po resecie czy włączeniu zasilania, a także przez wydaniu komendy "NEW"
16K-32K - typowy zakres adresów gdzie urzędują programy w BASICu, łącznie z tymi, które mają wstawki w kodzie maszynowym. Programy Hi-Res mogą być wykonywane z tego obszaru o ile RAM jest dostępny podczas wykonywania RFSH.
32K-40K - zakres ten można wykorzystać jako obszar zmiennych w przypadku dużych programów (np. deklaracja zmiennych DIM). Programy w kodzie maszynowym mogą być przechowywane w tym obszarze pamięci, ale przed ich wykonaniem, należy przenieść je poniżej 32K. Ten zakres można też wykorzystać dla zmienionej zawartości ROMu, ale tablica znaków i semigrafiki zostaje niezmienna i będzie pobierana z oryginalnej zawartości ROMu w obszarze 0K-8K.
A teraz wracamy do dekodera. Układ 74HC251 posiada 8 wejść, które zostały wykorzystane do wyboru obszarów pamięci ZX81 w następujący sposób:
I0 = 00-08K = Vcc = RAM wyłączony, ROM włączony
I1 = 08-16K = GND = RAM włączony, ROM wyłączony
I2 = 16-24K = GND = RAM włączony, ROM wyłączony
I3 = 24-32K = GND = RAM włączony, ROM wyłączony
I4 = 32-40K = GND = RAM włączony, ROM wyłączony
I5 = 40-48K = Vcc = RAM wyłączony, ROM włączony
I6 = 48-56K = M1 = jeżeli M1 = 0 -> echo obszaru RAM 16-24K
I7 = 56-64K = M1 = jeżeli M1 = 0 -> echo obszaru RAM 24-32K
Po zainstalowaniu modułu i wydaniu komendy:
PRINT PEEK 16388+256*PEEK 16389
Otrzymamy odpowiedź:
32768
Co jest oczekiwane, ponieważ jest to standardowa wartość dla RAMTOPu przy 16K pamięci RAM. Z zasady konstrukcji ZX81, BASIC korzysta z obszaru 16K-32K. A gdzie pozostałe 16K? Miało być przecież 32K? 8K jest w obszarze poza dostępem dla BASICa (8K-16K), a do drugiego 8K które jest pomiędzy 32K a 40K musimy dostać się. Należy podnieść RAMTOP:
POKE 16389,160
NEW
Sprawdzenie:
PRINT PEEK 16388+256*PEEK 16389
Na ekranie zobaczymy:
40960
No i mamy wiecej miejsca dla zmiennych BASICa czy linii programu.
![Smiley :)](https://www.speccy.pl/forum/Smileys/aaron/smiley.gif)
Jeżeli ktoś szuka więcej na ten temat, polecam wątek
Wilf's 64K rampack - (battery backup not working) na forum poświęconym TS1000. Powyższe informacje pochodzą z tego co tam napisał Wilf.