ZX81 32K

Z ZX Spectrum Wiki
Wersja Klaudiusz (dyskusja | edycje) z dnia 14:20, 18 paź 2018

(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Rendering

Opis

Moduł 32KB

Modyfikcja ta polega na rozszerzeniu wewnętrznej pamięci w ZX81/TS1000 z 1KB/2KB do 32KB w obszarze 8K - 40K. Do tego celu została zaprojektowany moduł na którym znajduje się układ pamięci statycznej o pojemności 32KB oraz dekoder adresów (74HC251). Schemat jego jest dość dobrze znany w świecie ZX81 nazwą: "Barebones Internal 32K RAM mapped 8K-40K". Cała idea wykorzystania multiplexera 8:1 została stworzona przez Wilfa Rigtera w 2005r.

Należy zacząć do pobieżnego opisu 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.

Wracając 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 prawidłową odpowiedzią, ponieważ jest to standardowa wartość dla RAMTOPu przy 16K pamięci RAM. Z zasady konstrukcji ZX81, BASIC korzysta z obszaru 16K-32K. W takim razie 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

W efekcie mamy wiecej miejsca dla zmiennych BASICa czy linii programu.


Montaż

Układ 32KB zamontowany na PCB wydanie 1

W zasadzie pierwsze kroki są identyczne z rozszerzeniem RAMu do 16KB i zostały one opisane na stronie ZX81 16K. Po wlutowaniu nowej podstawki pod układ pamięci i zworki L2, instalujemy moduł w podstawce oraz wykonujemy 8 połączeń kynarem. Pięć linii adresowych A11 do A15 jest dostępne przy złączu klawiatury i podłączamy je następująco:

  • A11 - D1
  • A12 - D3
  • A13 - D5
  • A14 - D7
  • A15 - D8

Dodatkowo odnajdujemy na płytce ZX81 dogodne miejsca do których należy podłączyć się pod linie:


Dokumentacja


Linki