Flash D0 - 128kB PEROM
Przeróbka ta powstała jako wsparcie dla rozszerzenia ZX4MB (4MB RAM dla ZX Spectrum), aczkolwiek może działać bez niego. Docelowy sprzęt to komputery zgodne ze Spectrum, ale może być używana w innych konstrukcjach, które używają 16kB ROM.
- Uruchamia się ze strony 0 ROM.
- Może obsługiwać pułapki TR-DOS (TRETRAP).
- Może reagować na bit 4 portu #7FFD od przełączania ROM w ZX128.
- Może być wyłączone przez /ROMCS=1 na złączu krawędziowym.
- Wymaga aby sygnał /CS zawierał /MREQ.
- Przeznaczone dla układów pamięci 29C010 lub 29F010 (128kB).
- Układ pamięci 29C020 lub 29F020 (256kB) może być podłączony po niewielkiej modyfikacji schematu (dodatkowy zatrzask 1bit i nieco inne rozwiązanie zasilania).
- Układy 29C040 lub 29F040 (512kB) mogą być użyte z dodatkową logiką.
- Może pracować bez rozszerzenia 4MB RAM - ma uproszczony dekoder portu.
- Może zawierać ZXVGS z małym romdyskiem (32kB do 64kB).
- Może ustawiać banki rozszerzenia 4MB memory po resecie.
EPROM - Flash EERPOM - PEROM
Płytka FlashD0 może pracować z układami EPROM, Flash EEPROM i PEROM. Różnica między nimi jest w funkcjonalności zapisu. Układy EPROM (np. 27C010) nie mogą zostać w ogóle przeprogramowane (wymagają sprzętowego programatora EPROM). W układach Flash EEPROM (np. 29F010) wyczyszczony a następnie zaprogramowany może zostać sektor wielkości 16kB lub 32kB. To może być zrobione, ale zajmuje zauważalny czas i wymaga dużego bufora RAM na przechowanie niezmienionych obszarów. W układach PEROM (np. 29C010) rozmiar sektora to 128 bajtów, co pozwala na użycie takiego układu podobnie jak dyskietki.
Bity 0..3 - strona ROM
Można wybrać jedną z 16 ROM stron (dla PEROM 29C020). W przypadku 29C010, strony 0..7 są tymi samymi, co 8..15.
Jeśli zamontowane jest również rozszerzenie ZX4MB, nie ma zapotrzebowania na więcej stron ROM. ROM może być symulowany przez RAM zabezpieczony przed zapisem. Niemniej zabezpieczone przez zapisem strony RAM nie mogą obsługiwać przełączania ROM ZX128 ani pułapek TR-DOS.
Bit 4 - zabezpieczenie przed zapisem
Dla zwiększenia bezpieczeństwa zamontowane jest sprzętowe zabezpieczenie przed zapisem. Jeśli bit 4 w porcie #D0 jest wyzerowany, PEROM jest zabezpieczony. Gdy blokada zapisu jest wyłączona, to przypadkowy zapis prawdopodobnie nie uszkodzi zawartości PEROM, ale przełączy go w tryb odczytu statusu, co spowoduje zresetowanie komputera. Aby przeprogramować PEROM, bit ten musi zostać ustawiony w numerze wybranego banku.
Bit 5 - przełączanie portem #7FFD
Linia A14 (pin 27 w podstawce 28pin) powinna być podłączona przez rezystor 1kom do wyjścia bitu 4 zapisanego w porcie #7FFD, o ile obwód zgodności z ZX128 jest obecny. Dodatkowe przełączanie jest aktywne jeśli bit 5 w porcie 208 (#D0) zostanie ustawiony i daje efekt dwóch banków ROM jak w ZX Spectrum 128K.
Bit 6 - pułapki TR-DOS
Linia A15 (pin 1 w podstawce 28) powinien być podłączony przez rezystor 1kom do linii /M1 Z80CPU. Umożliwia to emulację TR-DOS, ponieważ system ten ma punkty wejściowe pod generatorem znaków (#3D00..#3DFF), więc przełączanie linią /M1 daje inne dane dla normalnego odczytu, a inne dla instrukcji skoków w tym obszarze.
Bit 7 - wybór ROM/RAM
Bit 7 włącza PEROM, jeśli zostanie ustawiony. Służy to współpracy z rozszerzeniem 4MB RAM, gdzie wartości #00..#7F wybierają stronę RAM.
Opcja EXROM
Specjalnie dla komputerów Timex 2068 zostało zaprojektowane dodatkowa wejście EXROM. Jeśli jest ono w stanie niskim, PEROM pracuje normalnie (jak powyżej). Podłączenie tego wejścia do stanu wysokiego przełącza PEROM w tryb EXROM. Na wejściu A16 PEROM wymuszony jest stan wysoki, a działanie bitów 5 (ZX128) i 6 (TRETRAP) zostaje zablokowane. W trybie EXROM, na piny 27 i 1 podstawki powinny zostać podane dodatkowym multiplekserem sygnały A14 i A15 procesora Z80 (zamiast bitu 4 portu #7FFD i /M1). Da to blok 64kB ROM w banku EXROM, stworzonego ze stron 4..7 albo 12..15.
Sprzęt przełączający
Jest 8 wyjść z zatrzasku Q0..Q7, odpowiednio dla linii danych D0..D7. Wyjątkiem jest Q3, które zawsze zatrzaskuje 1, więc dalej jest nazwane QH.
QH jest ustawiane pierwszym zapisem do portu i zerowane poprzez resetowanie (/RES=0).
PEROM jest wyłączony (tranzystorem) tylko jeśli Q7=0 i QH=1.
Zaraz po zresetowaniu wszystkie wyjścia zatrzasku są wyzerowane. Ponieważ Q7=0, ROM powinien być wyłączony, ale nie jest, ponieważ jednocześnie QH=0. Wybrana jest strona 0 ROM, a pierwsza wartość zapisana do portu #D0 powinna mieć ustawiony bit 7 (#80..#FF). Kolejne zapisy do portu #D0 z wyzerowanym bitem 7 wyłączają PEROM (a włączają stronę RAM, jeśli rozszerzenie 4MB RAM jest obecne).
Wartość wpisana do portu #D0 | Wejścia PEROM 128kB
|
A16 | A15 | A14
|
%0xxxxxxx | /ROMCS=1 (PEROM wyłączony)
|
%100xxCBA | C | B | A
|
%101xxCBx | C | B | A14 z podstawki bit 4 portu #7FFD
|
%110xxCxA | C | A15 z podstawki /M1 | A
|
%111xxCxx | C | A15 z podstawki /M1 | A14 z podstawki bit 4 portu #7FFD
|
Dekoder musi dekodować A0=0, A1=0, /WR=0, ponieważ sygnały te nie są dekodowane w rozszerzeniu 4MB RAM, oraz linię wyboru z dekodera rozszerzenia 4MB RAM. Jesli rozszerzenie 4MB RAM nie jest zainstalowane, powinny być sprawdzone następujące warunki: A2=0, A3=0, A4=1, A5=0, A6=1, A7=1 oraz /IORQ=0.
W ZX Spectrum dostęp do portu ULA musi być zablokowany przy dostępie do portów #D0..#D3 (A2=0 lub A5=0 powinny podciągać linię /IOULA do stanu wysokiego).
Przykładowa (zalecana) mapa pamięci
- ROM0 zawiera zmodyfikowany kod ZXROM, przeznaczony dla interfejsów, które nie aktywują portów #D0..#D3. Zaraz po zresetowaniu przełącza na ROM2.
- ROM1 i ROM3 obsługują pułapki TR-DOS (TRETRAP). ROM1 jest używany (wybierany) dla pobierania rozkazu (/M1=0), ROM3 dla odczytu danych (/M1=1). Obydwa mają tę samą zawartość, z wyjątkiem obszaru #3C00..#3FFF, gdzie w ROM1 są instrukcje skoku, a w ROM3 jest normalny generator znaków. Punkty wejściowe ZXVGS przełączają do kodu w ROM2.
- ROM2 jest głównym kodem ZXVGS. Kod ten używa strony RAM do przechowywania zmiennych. Może również testować sprzęt albo wczytywać kod ZXVGS z dysku twardego do RAM.
- ROM4 i ROM5 są wolne do zapisania plików romdysku, albo innych zestawów ROM. (Dla trybu 2068, ROM4 może być wypełniony kodem 8kB EXROM, a ROM5 zawierać 2068 Home ROM.)
- ROM6 i ROM7 pozwalają na pracę komputera jako ZX Spectrum 128kB (o ile obwód zgodności z ZX128 jest obecny).
| pierwsze 64kB A16=0 | drugie 64kB A16=1
|
bit 4 portu #7FFD | /M1=0 | /M1=1 | A15=0 | A15=1
|
0 | ROM0
%10000000 ZXROM (boot)
| ROM2
%10000010 kod ZXVGS
| ROM4
%10000100 (EXROM 2068)
| ROM6
%10100110 ZX128 ROM0
|
1 | ROM1
%11000001 pułapki TR-DOS
| ROM3
%11000011 ZXROM (ZXVGS)
| ROM5
%10000101 (Home 2068)
| ROM7
%10100111 ZX128 ROM1
|
Zewnętrzne interfejsy, które używają pułapek sprzętowych (+D, TI-of-TTL, itp.) oraz aktywują 4MB RAM, powinny zapisywać wartość #80 (128) do portu #D0 (208) dla ROM ZX48 albo #A6 (166) dla ROM ZX128 (bit 4 w porcie #7FFD przełącza bank).
Dla większego bezpieczeństwa, strony ROM powinny zostać sprawdzone przed użyciem, czy zawierają właściwą zawartość. Na przykład, FlashD0 przeznaczony dla Timex Sinclair 2068 może zawierać ROM 2068 w stronie ROM0, a strony ROM4..ROM7 mogą być użyte na dodatkowy kod EXROM.
Experyment - symulacja Microdrive
FlashD0 może zostać równiez użyty do symulowania Interface 1 z kasetką Microdrive. Wymaga to pewnych zmian kodu Interface 1 (przełączanie programowe i inne procedury odczytu i zapisu sektora). Do użycia jest 128kB. 16kB to ROM BASIC, 8kB zajmie kod z Interface 1. W najprostszym rozwiązaniu na sektor symulowanego Microdrive trzeba zarezerwować 640 bajtów (594 bajty zaokrąglone w górę do granicy sektora PEROM). Czyli w 16kB będzie 25 sektorów i 384 bajty na kod czytający i programujący sektor, umieszczony na każdej stronie PEROM (oprócz ROM BASIC). Razem da to 162 sektory, czyli 81kB na dane.
Obecna wersja
W obecnej wersji FlashD0 (v004) dekodowane są: A0, A1, A5, A6, /WR i /IORQ. Wejście /IORQ powinno być sterowane linią wybierającą z dekodera rozszerzenia 4MB RAM.
Jeśli FlashD0 jest montowany łącznie z Z80JOY w ZX Spectrum, płytki na siebie zachodzą. Z80JOY musi być zamontowane wyżej (np. FlashD0 przylutowane bezpośrednio do płytki, a Z80JOY umieszczone w dodatkowej podstawce).
Wersja v003 przerobiona do zgodności z v004 działa bez problemów w Timex Computer 2048 (z przeróbką TC2144). Sygnał /CE jest blokowany sygnałem /MREQ poprzez tranzystor NPN (BC337).
Flash D0 - 512kB PEROM
Układy AT29C010 nie są już produkowane w wersji DIL i może być problem z ich nabyciem. Aby wyeliminować ten problem, powstała płytka-przejściówka v201 umożliwiająca podłączenie PEROM w obudowie PLCC (SMD). Jednocześnie znalazło się na niej miejsce dla dodatkowego zatrzasku i układu przełączającego dla obsługi układu AT29C040 (512kB). Płytka nie pracuje samodzielnie i wymaga zamontowania pod spodem FlashD0 v003, v004 albo v005.
Układ AT29C040 ma sektory wielkości 512 bajtów i tyle musi być przeprogramowane jednorazowo.
Bit 3 - dodatkowe strony PEROM
Przy wyzerowanym bicie 3 w wartości zapisanej do portu 208 (#D0), układ działa w trybie zgodności z 128kB PEROM, czyli dostępne są strony 0..7, z przełączaniem opisanym wcześniej. Ustawienie bitu 3 zmienia przełączanie. Jedną z 32 stron wybiera się po prostu bitami 0, 1, 2, 5, 6. Strony 0..7 odpowiadają stronom dostępnym w trybie 128kB.
Strona | Wartość zapisana do portu 208 (#D0) |
do odczytu | do programowania |
ROM00 | %10001000 #88 136 | %10011000 #98 152 |
ROM01 | %10001001 #89 137 | %10011001 #99 153 |
ROM02 | %10001010 #8A 138 | %10011010 #9A 154 |
ROM03 | %10001011 #8B 139 | %10011011 #9B 155 |
ROM04 | %10001100 #8C 140 | %10011100 #9C 156 |
ROM05 | %10001101 #8D 141 | %10011101 #9D 157 |
ROM06 | %10001110 #8E 142 | %10011110 #9E 158 |
ROM07 | %10001111 #8F 143 | %10011111 #9F 159 |
ROM08 | %10101000 #A8 168 | %10111000 #B8 184 |
ROM09 | %10101001 #A9 169 | %10111001 #B9 185 |
ROM10 | %10101010 #AA 170 | %10111010 #BA 186 |
ROM11 | %10101011 #AB 171 | %10111011 #BB 187 |
ROM12 | %10101100 #AC 172 | %10111100 #BC 188 |
ROM13 | %10101101 #AD 173 | %10111101 #BD 189 |
ROM14 | %10101110 #AE 174 | %10111110 #BE 190 |
ROM15 | %10101111 #AF 175 | %10111111 #BF 191 |
ROM16 | %11001000 #C8 200 | %11011000 #D8 216 |
ROM17 | %11001001 #C9 201 | %11011001 #D9 217 |
ROM18 | %11001010 #CA 202 | %11011010 #DA 218 |
ROM19 | %11001011 #CB 203 | %11011011 #DB 219 |
ROM20 | %11001100 #CC 204 | %11011100 #DC 220 |
ROM21 | %11001101 #CD 205 | %11011101 #DD 221 |
ROM22 | %11001110 #CE 206 | %11011110 #DE 222 |
ROM23 | %11001111 #CF 207 | %11011111 #DF 223 |
ROM24 | %11101000 #E8 232 | %11111000 #F8 248 |
ROM25 | %11101001 #E9 233 | %11111001 #F9 249 |
ROM26 | %11101010 #EA 234 | %11111010 #FA 250 |
ROM27 | %11101011 #EB 235 | %11111011 #FB 251 |
ROM28 | %11101100 #EC 236 | %11111100 #FC 252 |
ROM29 | %11101101 #ED 237 | %11111101 #FD 253 |
ROM30 | %11101110 #EE 238 | %11111110 #FE 254 |
ROM31 | %11101111 #EF 239 | %11111111 #FF 255 |
Pliki do pobrania
- info-en.html 18.6kB (2007-05-10 01:15)
- [en] FlashD0 - instrukcja użytkowania.
- info-pl.html 20.0kB (2006-06-05 19:53)
- [pl] FlashD0 - instrukcja użytkowania.
- fld0prog2.zip 16.8kB (2006-04-23 21:31)
- ROM0 z kodem programującym. Wczytaj nową zawartość pod 32768 i użyj USR 1460X do zaprogramowania strony X (0..7). Tylko sekory 128B. Jedynie zmienione sektory są przeprogramowywane. Dodane bezpieczne skoki do banków.
- fld0-004.zip 33.1kB (2006-04-03 21:14)
- Projekt v004. Dodana obsługa EXROM. Pliki danych Eagle i Tango PCB.
- fd0prog.zip 1.8kB (2005-08-21 23:21)
- Prosty kod programujący FlashD0. Kod, który napisał Pera Putnik został dostosowany do FlashD0 (tylko 29C010). Działa, ale powinien testować bit 6, a nie 7.
- fld0-003.zip 25.3kB (2004-07-27 12:45)
- (stare) Projekt prototypu v003 - pliki danych Eagle i Tango PCB.
Linki do innych stron- ../../topic/t-98.html
- [en] Opis na forum. Przeróbka FlashD0 dla modeli Timex 2068. Drugie 64kB PEROM pojawia się w banku EXROM.
- http://members.tripod.com/~piters/zxfl_sch.htm
- [en] Inny pomysł na podłączenie Flash - Pera Putnik - port #A9 (169).
Zobacz również
- 4MB RAM upgrade : ZX Spectrum
- Rozszerzenie pamięci dla ZX Spectrum - 4MB RAM (DRAM).
- YABUS.TF
- Dwa złącza YABUS dla komputerów Timex FDD 3000 oraz rozbudowa pamięci (4MB RAM).
- ZXVGS FD0 - FlashD0 (128kB PEROM)
- ZXVGS dla FlashD0 (128kB PEROM) dla ZX Spectrum. Pracuje z 128kB, TC2144 oraz 4MB RAM. Obsługuje wiele interfejsów IDE oraz dyskietkowych.
- ROM, EPROM, EEPROM, PEROM
- Pamięci z równoległymi liniami adresu i danych.
| | CPC
Sam Coupé
MSX
Spectrum
Timex
Timex FDD
ZX81
|