ENIAC'owe Spectrum
Przeróbka opisana w Informiku III/1987, w artykule "Jak z ZX SPECTRUM zrobić komputer. Zmieniamy architekturę
komputera." Wojciecha Apela.
Przeróbka jest bardzo interesująca. Szczególnie dlatego, że powstała w 1985 roku, czyli w tym samym czasie co ZX Spectrum 128K.
Został dodany zatrzask jako port pod adresem 62 (#3E - ULA jest wyłączana dla A7=0 i A6=0). Wyjścia tego zatrzasku zostały nazwane S0, S1, S2, S3, S4 (w tabelach pokazane również jako wartości binarne w zakresie %00000..%11111). Są również dwa dodatkowe przełączniki do wybierania konfiguracji. Pierwszy z nich nazwany został TRYB i wybiera pomiędzy trybami pracy ZX a CP/M. Drugi - BANK wybiera sprzętowo jeden z 2 banków 32kB RAM. W rezultacie możlwie jest kilka możliwych konfiguracji...
Mapa pamięci po przeróbce
Tabela 1. Przełącznik TRYB ustawiony na ZX.
Sekcja | Bank pamięci |
D (#C000..#FFFF) | | URAM3 S4=1 & BANK=1 | URAM1 S4=0 | BANK=0 |
C (#8000..#BFFF) | URAM2 S4=1 & BANK=1 | URAM0 S4=0 | BANK=0 |
B (#4000..#7FFF) | VRAM | |
A (#0000..#3FFF) | EPROM S0=0 | ROM S0=1 |
Tabela 2. Przełącznik TRYB ustawiony na CP/M.
Sekcja | Bank pamięci |
D (#C000..#FFFF) | | URAM3 | |
C (#8000..#BFFF) | URAM2 |
B (#4000..#7FFF) | VRAM S2=0 %xx0xx | URAM1 S2=1 %xx1xx |
A (#0000..#3FFF) | EPROM S0=0 %xxxx0 | ROM S0=1 & S1=0 %xxx01 | URAM0 S0=1 & S1=1 & S3=0 %x0x11 | URAM0* S0=1 & S1=1 & S3=1 %x1x11 |
URAM0, URAM1, URAM2, URAM3 - 4 × 16kB "górne" banki RAM
VRAM - 16kB "dolny" RAM z ekranem
ROM - oryginalny ROM
EPROM - 4kB albo 8kB EPROM startowy
URAM0* - z zabezpieczeniem zapisu
Podobna przeróbka
Zobacz alternatywne ROMy w linkach poniżej, a tam 80-LEC.ROM. Obsługuje on bank 32kB w dolnej połowie pamięci, przełączany przez bit 0 portu #FD. Dane mogą być skopiowane instrukcją MOVE z nieco pogmatwaną składnią.
Stracony pomysł
Jest to niesamowite, jak prosto było przerobić ZX Spectrum 48K na 64kB RAM w całej przestrzeni adresowej! (Co oznacza ROM oraz pamięć ekranu w oddzielnym banku.) Wystarczyło zastąpić 32kB RAM układami 64kB i podłączyć A15 do wejścia multipleksera (zamiast zworki). Nimniej linia A15 musiałaby być rozdzielona rezystorem 680om - wejście A15 ULA oraz logika górnej pamięci musiały by być za rezystorem.
Następnie dodajemy 74LS74, z którego potrzebny jest jeden zatrzask. Wejście /R powinno być podłączone do linii /RESET, wejście D do jednej z linii D5..D7, a /CLK do /WR sumowanego z /IORQGE (bramką OR z rezystora i diody). Tak więc zatrzask
(rejest jednobitowy) rozszerzał by port 254 używany przez ULA. Jeśli zapisane zostaje 0, używana jest normalna architektura 16kB ROM + 48kB RAM. Ale gdy do zatrzasku zostanie zapisane jest 1, jego niezanegowane wyjście wymusza (diodą) stan wysoki na tej części linii A15, która oddzielona jest rezystorem. Nie ma więc dostępu do ROM ani pamięci ekranu, a dekoder "górnej" pamięci włącza RAM dla calej przestrzeni 64kB.
Potrzebne części: osiem układów 4164, jeden 74LS74, dwa rezystory 680ohm, dwie diody 1N4148 i nieco drutu. Być może wyłącznik blokujący nową właściwość dla większej zgodności z niektórymi dziwnie napisanymi programami, które wykonują IN A,(#FE): OUT (#FE),A ...
Linki do innych stron
Zobacz również
- Alternative ROMs for ZX Spectrum
- Zmodyfikowane zawartości ROM ZX Spectrum.
- 4MB RAM upgrade : ZX Spectrum
- Rozszerzenie pamięci dla ZX Spectrum - 4MB RAM (DRAM).
| | CPC
Sam Coupé
MSX
Spectrum
Timex
Timex FDD
ZX81
|