Jak z ZX-Spectrum zrobić komputer
Ta notka to jakiś ślad wydarzeń z 1985 roku. Po prostu gdzieś w necie znalazłem angielskie streszczenie mojego artykułu, wydanego jako ksero w 200 egz. a potem przedrukowanego przez jedną z pierwszych gazet komputerowych w tym kraju.
Streszczenie to znalazłem tu:
http://8bit.yarek.pl/upgrade/zx.eniac/index.html a wygląda ono tak (bo cytuję w całości). (dopisek z 2019 - w plikach jest załącznik z PDF, a jest też druga notka na ten temat, zawierająca skan mojego artykułu z Bajtka -> Jak z ZX-Spectrum zrobić komputer - skan artykułu z gazety)
ENIAC'owe Spectrum
Upgrade described in Informik III/1987, in article "Jak z ZX SPECTRUM zrobić komputer. Zmieniamy architekturę komputera." ("How to make a computer from ZX SPECTRUM. We change architecture of computer.") by Wojciech Apel.
The upgrade is very interesting. Especially because it was designed in year 1985, the same time when ZX Spectrum 128K.
A latch was added as a port at 62 (#3E) address (ULA is disabled for A7=0 and A6=0). Ouputs of this latch are called S0, S1, S2, S3, S4 (in tables shown also as binary values range %00000..%11111). Also there are two extra switches to select confuguration. First of them is called TRYB and selects between ZX and CP/M modes. Second switch is called BANK and selects 32kB bank. As a result there are several possible configurations...
Memory map after upgrade
Section | Memory bank | ||
---|---|---|---|
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 |
Section | Memory bank | |||
---|---|---|---|---|
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 "upper" RAM banks
VRAM - 16kB "lower" RAM with screen
ROM - original ROM
EPROM - 4kB or 8kB boot EPROM
URAM0* - with write protection
Similar upgrade
Please have a look for a link to alternative ROMs balow and the 80-LEC.ROM there. It has support for 32kB bank in lower half of memory, switched by bit 0 of #FD port. Data can be copied with MOVE command and strange syntax.
Missed idea
It is incredible, how easy could the ZX Spectrum 48K be upgraded to get 64kB RAM all RAM mode! (The ROM and video RAM are in separate bank.) It was enough to replace 32kB RAM with 64kB chips and connect A15 to multiplexer input (in place of jumper). But A15 line must be separated with 680ohm resistor - the ULA A15 input and the top memory logic circuit must be behind it.
Then we add 74LS74, of which we need only one latch is needed. The /R input should be connected to /RESET line, D input to one of lines D5..D7 and /CLK to /WR ORed /IORQGE ORed (with 680ohm resistor and diode). So the latch (1bit register) expands the 254 port used by ULA. When 0 is written, the normal 16kB ROM + 48kB RAM architecture is used. But when 1 is written to latch, its non-inverted output forces (with diode) high state on the part of A15 line sepated by resistor. So there's no access to ROM and VRAM, while "upper" memoy decoder activates RAM for all 64kB of address space.
Needed parts: eigth 4164 chips, one 74LS74, two 680ohm resistors, two 1N4148 diodes and some wires. Perhaps a switch to lock this feature for better compatibility with some strange written software, that uses IN A,(#FE): OUT (#FE),A
...
I niedawno pojawiło się to jeszcze raz, tyle że po polsku:
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
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 |
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
...
Kategorie: informatyka, _blog
Słowa kluczowe: zx-spectrum, cp/m, klub eniac, ds ondraszek, politechnika śląska
Pliki
- ENIACowe Spectrum - Wojciech Apel -- 8bit Projects For Everyone.pdf
- jak-z-zx-spectrum-skan.pdf
- zx16.jpg
- zx17.jpg
- zx18.jpg
- zx19.jpg
- zx20.jpg
- zx21.jpg
- zx22.jpg
- zx23.jpg
Komentarze: (2)
jamjest, January 8, 2012 10:31 Skomentuj komentarz
Witam!
Dziś 8-01-2011 trafiłem w necie na Twoją stronę . Bardzo ciekawa!
Jednocześnie chcę osobiście podziękować za mnóstwo frajdy z eniacowego Spectrum ,które przerobiłem po artykule z informika ;-)
Było kilka błędów w schemacie , jak zwykle w przedrukach, ale poprawiłem i ten egzemplarz spektrusia mam działajacy do dziś ,choć stacja Timex padła...
Dzięki za ideę. Praca z takim spektrusiem to full radocha. Każdy loader hakerski i program został prze ze mnie dzieki sztuczkom pamięci "odbezpieczony" i przerobiony :-)
Szczęścia !
Mariusz