8bit Projects For Everyone


Czy jest   dla  

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
A16A15A14
%0xxxxxxx/ROMCS=1 (PEROM wyłączony)
%100xxCBACBA
%101xxCBxCBA14 z podstawki
bit 4 portu #7FFD
%110xxCxACA15 z podstawki
/M1
A
%111xxCxxCA15 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=1A15=0A15=1
0ROM0
%10000000
ZXROM (boot)
ROM2
%10000010
kod ZXVGS
ROM4
%10000100
(EXROM 2068)
ROM6
%10100110
ZX128 ROM0
1ROM1
%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.

StronaWartość zapisana do portu 208 (#D0)
do odczytudo 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


Powiedz innym:

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.

E-mail:

Hasło:



Przypomnieć hasło?

Rejestracja?
CPC
4MB RAM
Flash ROM
To 128
Sam Coupé
SAM512
Portfix
YABUS.Z80RTC
Z80JOY
MSX
Mapper 4MB
MSX-2 SVI738
Spectrum
FlashD0
8251
AY
Eniac'owe
Dock
Gama 192
Keyboard
ROM replacer
SamRam
TC2144
To 128K
To +3
Wonder RAM
Z80JOY
ZX 4MB
ZXMUX
Timex
Memory
Timex FDD
YABUS.TF
YABUS.TF3
TI-of-TTL
ZX81
Memory

Jeśli widzisz błąd na tej stronie, opisz tutaj:

© 2009-12-28 21:50 Jarek Adamski, http://8bit.yarek.pl