Autor Wątek: Joy Flash And SD ZX-81  (Przeczytany 3000 razy)

PitMakot

  • **
  • Wiadomości: 77
  • Miejsce pobytu:
    Kraków
Joy Flash And SD ZX-81
« dnia: 2024.04.08, 11:49:39 »
Powstał nowy interface do Zeddiego :)

JoyFlashAndSD

Cały projekt jest tu
https://github.com/dikdom/ZX81-JoyFlashAndSD

Video
https://www.youtube.com/watch?v=pkfTDKy5450


Jak by ktoś też był zainteresowany to można pisać do mnie na PW
Będe zamawiał płyki do tego.



PIC 14, ZX81, TS1000, ZX Spectrum, ZX Spectrum+, ZX Spectrum 128, ZX Spectrum +2, ZX Spectrum QL, Sinclair TV, FDD 3000, Timex TC2048, Unipolbrit, Elwro 800 Junior, TI 99/4A, BYTE, Robik, ZX80/81 by Wilco2009, Amstrad CPC-464, Amstrad CPC-6128, Amstrad PPC

Maryjan

  • *****
  • Wiadomości: 6704
  • Miejsce pobytu:
    Skarżysko-Kam.
  • Scotch whiskey and West Highland Terrier
Odp: Joy Flash And SD ZX-81
« Odpowiedź #1 dnia: 2024.04.08, 14:30:07 »
Fajne, fajne. Jakaś alternatywa dla ZX Pand-a.
"Co miałem powiedzieć - przeczytałem..." Nikodem Dyzma

Waldek

  • ***
  • Wiadomości: 215
  • Miejsce pobytu:
    Łużyce
Odp: Joy Flash And SD ZX-81
« Odpowiedź #2 dnia: 2024.04.08, 15:57:10 »
Szkoda tylko, że nie ma opcji "SAVE"

Maryjan

  • *****
  • Wiadomości: 6704
  • Miejsce pobytu:
    Skarżysko-Kam.
  • Scotch whiskey and West Highland Terrier
Odp: Joy Flash And SD ZX-81
« Odpowiedź #3 dnia: 2024.04.08, 16:19:23 »
No cóż Waldziu, nie można mieć wszystkiego :)
Może w kolejnej wersji firmware ... jak wyjdzie.
"Co miałem powiedzieć - przeczytałem..." Nikodem Dyzma

damik

  • Fresh rosin sniffer ;)
  • *****
  • Wiadomości: 2478
  • Miejsce pobytu:
    Generalnie Polska, głównie Bytom czasem Bielsko-Biała oraz okolice
  • ZX'owy i nie tylko...
Odp: Joy Flash And SD ZX-81
« Odpowiedź #4 dnia: 2024.05.27, 13:27:02 »
W przypływie odrobiny wolnego czasu na szybko zmontowałem ten IF.

Nie działa mi to jednak całkiem poprawnie ale też nie jest całkiem martwy.  ???
Po restarcie pojawiają się na ekranie przypadkowe biegające artefakty i napisy na ekranie są zupełnie nieczytelne, jakby jakieś timingi się sypały jednak po przyciśnięciu dowolnego klawisza z dolnego rzędu klawiatury pojawia się menu i widać nazwy plików.
Po zwolnieniu klawisza artefakty znów się pojawiają ale daje się w ciemno wybrać jakiś plik i go załadować, część gier się ładuje ale sieje "syfami" po ekranie.
Najlepiej wygląda 32KB Demo gdzie w trybie HiRes obraz jest w miarę poprawny jednak i tam biegają "szmaty" od czasu do czasu.

Może to wina układów GAL jakie zastosowałem, ale podmieniłem kilka (niestety o tych samych czasach propagacji bo wszystkie są z tej samej serii) i jest dalej to samo, podmiana RAM i EPROM też niewiele zmienia.
Możliwe że podmiana układów GAL o innej prędkości rozwiązała by problem, jednak nie mam zbytnio z czego wybierać.
Nie mam teraz zbytnio czasu na dalsze zabawy w uruchamianie, możliwe że to też kwestia doklejenia jakichś pojemności w odpowiednie miejsca ale to może kiedy indziej przewącham. ::)
Ciekaw jestem czy komuś udało się to już uruchomić i jakie zastosował tam elementy.



Wszystkiego po trochu: Schwarz, mydło i powidło... konsole, stare i nieco nowsze komputery oraz akcesoria i duperele.

damik

  • Fresh rosin sniffer ;)
  • *****
  • Wiadomości: 2478
  • Miejsce pobytu:
    Generalnie Polska, głównie Bytom czasem Bielsko-Biała oraz okolice
  • ZX'owy i nie tylko...
Odp: Joy Flash And SD ZX-81
« Odpowiedź #5 dnia: 2024.05.27, 16:11:59 »
Po drobnej walce już chyba działa.  :D

Może trzeba będzie to jeszcze głębiej rozkminić bo nie bardzo podoba mi się to rozwiązanie ale doklejenie kondensatora ~100pF na pinach GAL20V8 pomiędzy masę a linię adresową A15 naprawia ten problem i obraz wydaje się być już stabilny bez artefaktów w trybie TXT oraz HiRes i wczytywanie programów też działa poprawnie. Sprawdzałem co prawda tylko kilka programów czytanych z pamięci 25Q64 ale wygląda póki co w miarę ok.
Być może to była kwestia mojego ZX81 lub mojego zbyt szybkiego GAL'a bo w projekcie były użyte 25ns, a ja dałem co miałem 20ns dla 20V8 i 7nS dla 22V10.  ;)



Wszystkiego po trochu: Schwarz, mydło i powidło... konsole, stare i nieco nowsze komputery oraz akcesoria i duperele.

KWF

  • Moderator
  • *****
  • Wiadomości: 6902
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • PCBway
Odp: Joy Flash And SD ZX-81
« Odpowiedź #6 dnia: 2024.05.28, 08:46:04 »
Ciekawy ten interfejs, ale te GALe. Dlaczego są w nim aż dwa takie układy, skoro jedno małe CPLD w PLCC zrobiłoby robotę. No i widać, nie jest tak prosto zmusić ten interfejs do działania.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

damik

  • Fresh rosin sniffer ;)
  • *****
  • Wiadomości: 2478
  • Miejsce pobytu:
    Generalnie Polska, głównie Bytom czasem Bielsko-Biała oraz okolice
  • ZX'owy i nie tylko...
Odp: Joy Flash And SD ZX-81
« Odpowiedź #7 dnia: 2024.05.28, 09:25:42 »
Nie do końca też rozumiem koncepcję stosowania GAL'i w obudowach PLCC kiedy łatwiej dostępne są w DIP i nie trzeba też dodatkowego adaptera PLCC do programatora... ale może miało być taniej i niekoniecznie bardziej Retro.  ;D

Warto jeszcze dopracować program do budowy wsadu dla wewn. pamięci W25Qxx, bo ten skrypt w Pythonie nie jest zbytnio przyjazny dla użytkownika, ale to może kwestia gustu. ;)

ZX-Pand jest moim zdaniem bardziej uniwersalny jednak ma to też swoją cenę a to cudo jest taką sprytną wgrywajką wcześniej przygotowanych programów podobnie jak Dandanator dla Speccy, no i można to sobie zbudować samemu niewielkim kosztem.
Jest też opcja wgrywania z karty uSD zamiast wewn. SPI Flash ale podobno jest to bardzo powolne w działaniu, jednak tego jeszcze nie testowałem, może jutro się tym pobawię.

Inną kwestią jest uruchamiane tego ustrojstwa, nie wiem czy to mój ZX81 jest jakiś oporny lub felerny (niemodyfikowana i niegrzebana sztuka jak z fabryki) czy to kwestia zastosowanych przeze mnie elementów, jednak autor pisze że zbudował ze 25 sztuk takich IF i nie miał z uruchomieniem większych problemów.
Możliwe że równania dla PLD nie są jeszcze do końca dopracowane, bo jak widać po komentarzach w kodzie źródłowym autor sporo z tym kombinował i są tam też dodatkowo jakieś nieużywane alternatywne równania. ;)
« Ostatnia zmiana: 2024.05.28, 09:41:57 wysłana przez damik »
Wszystkiego po trochu: Schwarz, mydło i powidło... konsole, stare i nieco nowsze komputery oraz akcesoria i duperele.

damik

  • Fresh rosin sniffer ;)
  • *****
  • Wiadomości: 2478
  • Miejsce pobytu:
    Generalnie Polska, głównie Bytom czasem Bielsko-Biała oraz okolice
  • ZX'owy i nie tylko...
Odp: Joy Flash And SD ZX-81
« Odpowiedź #8 dnia: 2024.05.29, 13:15:53 »
Dzisiaj przeprowadziłem kilka testów z kartą uSD.
Karta 16GB Fat32 z wgranymi programami inicjuje się wyraźnie dłużej niż wewnętrzny SPI Flash bo przy 20 plikach potrzebowało około 5 sekund gdzie SPI Flash pokazuje listę plików niemal natychmiast. Oczywiście im więcej będzie plików na karcie tym dłużej będzie się ładowała ich lista w menu.
Sam odczyt programów z karty jest już błyskawiczny.

Dołączyłem zdjęcie ekranu z menu ale z uwagi na kiepski wyświetlacz mojego monitora obraz jest trochę nieostry.
Kolejne fotki pokazują zmontowany IF i jego drugą stronę gdzie widać doklejony podczas uruchamiania kondensator 100pF.

Kolejną modyfikacją była zamiana rezystora R2 z 100 Ohm na 510 Ohm bo światło diody odczytu danych trochę raziło w oczy. ;)


« Ostatnia zmiana: 2024.05.29, 13:27:43 wysłana przez damik »
Wszystkiego po trochu: Schwarz, mydło i powidło... konsole, stare i nieco nowsze komputery oraz akcesoria i duperele.

KWF

  • Moderator
  • *****
  • Wiadomości: 6902
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • PCBway
Odp: Joy Flash And SD ZX-81
« Odpowiedź #9 dnia: 2024.05.29, 14:34:11 »
Zapuść jakiś MEMTEST do ZX81, bo mnie ciekawi, gdzie zmapowano 32K w tym interfejsie oraz jeśli możesz sprawdź go z grami H.E.R.O i Beamrider (https://problemkaputt.de/zx.htm).
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

damik

  • Fresh rosin sniffer ;)
  • *****
  • Wiadomości: 2478
  • Miejsce pobytu:
    Generalnie Polska, głównie Bytom czasem Bielsko-Biała oraz okolice
  • ZX'owy i nie tylko...
Odp: Joy Flash And SD ZX-81
« Odpowiedź #10 dnia: 2024.05.29, 14:51:18 »
Sprawdzę te gry ale po weekendzie bo teraz już czasowo nie dam rady do tego usiąść.
W każdym razie demo w HiRes dla 32KB działa mi poprawnie.

Podeślij proszę jakiś sensowny Memtest dla ZX81, bo nie bardzo wiem który jest sprawdzony i godny zaufania.
Wszystkiego po trochu: Schwarz, mydło i powidło... konsole, stare i nieco nowsze komputery oraz akcesoria i duperele.

KWF

  • Moderator
  • *****
  • Wiadomości: 6902
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • PCBway
Odp: Joy Flash And SD ZX-81
« Odpowiedź #11 dnia: 2024.05.29, 14:56:27 »
Jakie demo masz do 32K?

Programy do testowania ZX81 w załączonym ZIPie.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

damik

  • Fresh rosin sniffer ;)
  • *****
  • Wiadomości: 2478
  • Miejsce pobytu:
    Generalnie Polska, głównie Bytom czasem Bielsko-Biała oraz okolice
  • ZX'owy i nie tylko...
Odp: Joy Flash And SD ZX-81
« Odpowiedź #12 dnia: 2024.05.29, 15:05:39 »
Dzięki za Tools'y, po weekendzie to posprawdzam :)

Testowane u mnie wcześniej demo 32KB to takie ło:
https://www.youtube.com/watch?v=Tu6TVt1ei-I

Na moim ZX81 wczytane tym IF wygląda całkiem tak samo jak na tym filmiku z YT... ;)
« Ostatnia zmiana: 2024.05.29, 15:40:20 wysłana przez damik »
Wszystkiego po trochu: Schwarz, mydło i powidło... konsole, stare i nieco nowsze komputery oraz akcesoria i duperele.

damik

  • Fresh rosin sniffer ;)
  • *****
  • Wiadomości: 2478
  • Miejsce pobytu:
    Generalnie Polska, głównie Bytom czasem Bielsko-Biała oraz okolice
  • ZX'owy i nie tylko...
Odp: Joy Flash And SD ZX-81
« Odpowiedź #13 dnia: 2024.06.10, 13:04:39 »
Sprawdziłem grę Beamrider i działa poprawnie natomiast gry HERO nie znalazłem w formacie .p, a niestety format .81 nie jest tam wczytywany.
Sprawdziłem też RAM podesłanymi programami, screen'y w załączniku, jednak nie jestem z tego mądry bo dziwnie mi to wygląda.   ::)

Podmieniłem też z powodzeniem GAL22V10-7 od Lattice na PALCE22V10-25 od AMD (bo tylko taki znalazłem w szufladzie) ponieważ GAL zbytnio się grzał i teraz jest już termicznie ok oraz port JOY'a działa poprawnie na PALCE22V10 pomimo że programator (Labtool-48) pyskował że mu się suma kontrolna wsadu nie zgadza.  ;)
« Ostatnia zmiana: 2024.06.10, 14:37:23 wysłana przez damik »
Wszystkiego po trochu: Schwarz, mydło i powidło... konsole, stare i nieco nowsze komputery oraz akcesoria i duperele.

dikdom

  • *
  • Wiadomości: 3
  • Miejsce pobytu:
    Budapest
Odp: Joy Flash And SD ZX-81
« Odpowiedź #14 dnia: 2024.06.26, 10:55:17 »
Hello guys,

Cześć chłopaki,

(jeśli pozwolisz mi przejść na angielski, daj mi znać. To jest tekst przetłumaczony przez Google...)
Więc możesz pytać, próbuję odpowiedzieć.

Bardzo się cieszę, że znalazłeś mój wózek i z niego korzystasz, ale po pierwsze, karta rev4 nie jest tak idealna, jak chciałem. Musisz zrozumieć, że chciałem, aby to rozszerzenie było tanim wózkiem, dzięki któremu mój ZX81 będzie użyteczny, dlatego na wózku znajduje się chip flash SPI (2-4-8-16MB). To było łatwe. Chciałem też grać w gry, więc zaimplementowałem Kempston Joy I/F. Ciekawostka: Znalazłem 3 gry, które współpracują z Kempston I/F, żadna z nich nie działała. Dwa z nich zostały naprawione przez autora gry, jednak nie pozwolił mi na włączenie jego gier do flasha (jeśli ktoś chce, niech pobierze...).
Z biegiem czasu zdałem sobie sprawę, że radzenie sobie z radością nie jest tak proste, jak na C64 czy w moim ukochanym TVC. Więc dla przyjemności zaimplementowałem obsługę kursora, ale wymagało to znacznie większego GAL (nawet bawiłem się z GAL26V12, ale strasznie mi się nie udało). Tak czy inaczej, pierwotnie właściwą GAL był 16v8...
Nigdy nie planowałem stosowania DIP GAL, ponieważ zajmowały one większą powierzchnię płytki drukowanej, chciałem, aby płytka była mała i schludna.
Tak, chciałem też mieć je fabrycznie przylutowane, więc aż do wersji 3 gniazda PLCC były SMD (nienawidziłem ich instalować). Zwykle zamawiam w JLC, ale oni nie mieli gniazd SMD PLCC.
Gdy radość wzrosła, przyszedł do mnie facet i zapytał, dlaczego nie zrobiłem czytnika kart SD, bo znacznie by to zwiększyło użyteczność... No cóż, użycie interfejsu SPI karty SD to nie problem, ale biblioteka obsługujący kartę nie było takie proste. Jest to biblioteka FatFs skompilowana przez kompilator z88dk (sprawdź napisy: w menu SD naciśnij „C”). Pamięć EEPROM 27C512 ma 4 banki po 16 tys. Pierwszy bank zawiera układ flash (i jego menu), trzeci i czwarty bank zawiera bibliotekę FatFs i jej menu... FatFs nie mieszczą się w 16kB (0000-3FFFF ZX).

W wózku znajduje się 32kB RAM. Wewnętrzna pamięć RAM jest stale wyłączona. 4000-7FFF to pierwszy blok 16kB zewnętrznej pamięci RAM. 8000-BFFF to drugi bank lub pamięć RAM (nie można stąd wykonać kodu). C000-FFFF jest zwierciadłem obszaru 4000-7FFF. Cały obszar pamięci RAM jest również włączony, gdy procesor Z80 jest w fazie /RFSH, a A14-A15 jest w dowolnym miejscu innym niż 00b (to sprawia, że ​​wózek obsługuje WRX, jeśli się nie mylę).

Problem z wózkiem polega na tym, że ULA może czytać obrazy postaci tylko z wewnętrznej pamięci ROM. Zatem wózek wyłącza zewnętrzną pamięć ROM i włącza wewnętrzną pamięć ROM, gdy procesor jest w fazie /RFSH, wartość /MREQ jest niska, a wartości A14 i A15 wynoszą 00b. Problem leży w dokładnym określeniu czasu.
Niektóre ZX81 lubią mieć /MREQ w równaniu, inne nie (zwłaszcza przebudowana maszyna ZX81+38)...
A co gorsza, znaleźliśmy rzadki przypadek, gdy żaden z nich nie działał poprawnie. Maszyną, która nie działała, była płyta z wydania 1 z ULA 184 i wewnętrzną pamięcią ROM oznaczoną jako 649. Nie twierdzę, że to nigdy nie zadziała, ale u nas ten konkretny typ nie działał.

Kondensator na linii A15 może zniekształcić sygnał i przesunąć taktowanie. Dobrze byłoby mieć generowany sygnał o częstotliwości 6,5 MHz, jakiś licznik i start, aby włączyć wewnętrzną pamięć ROM na niskim poziomie /RFSH i /MREQ oraz zwolnić połowę zegara (6,5 MHz) później niż te sygnały. Ale nie można tego zrobić za pomocą chipa GAL.
Ktoś wspomniał powyżej o CPLD. Główną przyczyną, dla której nie korzystałem z CPLD, jest to, że ich nie znam. (i chciałem, żeby ta karta była prosta i tania...). Nie jest to najlepsza decyzja w moim życiu, ale jednak. To coś czyta karty SD – przez większość czasu!! :)

Aha, jeszcze jedno. Z karty SD nie będziesz mógł załadować programów o rozmiarze większym niż 16kB, ponieważ procedury obsługi SD znajdują się w 0000-7FFF w RAM. Program jest ładowany do 8000-BFFF i kopiowany z powrotem do 4000-7FFF przed jego wykonaniem.

--- original English ---
So you may ask, I try to answer.

I'm really glad that you find my cart and use it, but the first thing is that the rev4 card is not that perfect I wanted to be. You need to understand that I wanted that extension a cheap cart that makes my ZX81 usable, that is why the SPI (2-4-8-16MB) flash chip is on the cart. That was easy. I wanted to play games also, so I implemented the Kempston joy i/f. Funfact: I have found 3 games that work with Kempston I/F, none of them worked. Two of them was fixed by the author of the game, but he didn't allow me to include his games in the flash (if anyone wants it, download it...).
As time passed I realized that joy handling is not that straightforward as like on C64 or my beloved TVC. So I implemented the cursor handling for the joy, but it required a way larger GAL (I even played around with the GAL26V12, but I failed terribly). Anyway, originally the right GAL was a 16v8...
I never planned with DIP GALs, as they consumed larger pcb area, I wanted the pcb small and neat.
Yep, I also wanted to have them factory soldered, so up until rev3 the PLCC sockets were SMD (I hated putting them up). I usually order from JLC and they didn't have SMD plcc sockets..
After the joy was enhanced a guy came to me asking why I didn't do SD card reader, it would make it much more usable... Well, using the SPI interface of the SD card is not a bit deal, but the library that handles the card was not that easy. It is the FatFs library compiled by z88dk compiler (check the credits: in SD menu press 'C'). The 27C512 EEPROM has 4x 16k banks. 1st bank contains the flash IC (and its menu), the 3rd and 4th banks contains the FatFs lib and its menu... FatFs couldn't fit in 16kB (ZX's 0000-3FFFF).

There is 32kB RAM on the cart. The internal RAM is constantly disabled. 4000-7FFF is the first 16kB block of the external RAM. 8000-BFFF is the second bank or the RAM (code cannot be executed from here). C000-FFFF is the mirror of the 4000-7FFF area. The complete RAM area is also enabled when the Z80 CPU is the /RFSH phase and A14-A15 is anything but 00b (this makes the cart WRX capable if I'm not mistaken).

The problem of the cart lies in the fact that ULA can read the character images only from the internal ROM. So the cart turns off the external ROM and enables internal ROM when CPU is in /RFSH phase, /MREQ is low and A14 and A15 is 00b. The problem lies in the exact timing.
Some ZX81 likes to have /MREQ in the equation, some don't (especially the ZX81+38 rebuilt machine) ...
And to make things even worse we have found a rare case, when none of them works properly. The machine that didn't work was an Issue 1 board with ULA 184 and an internal ROM marked as 649. I don't say that this will never work, but for us that specific type didn't work.. 

A capacitor on the A15 line could distort the signal and shift the timing. It would be good to have a 6.5MHz signal generated and some counter and start enable the internal ROM on /RFSH and /MREQ low, and release one half clock (6.5MHz) later than these signals are released. But this cannot be done with the GAL chip.
Someone mentioned the CPLD above. The major cause I didn't use CPLD is because I don't know them. (and wanted to have this card simple and cheap...). Not the best decision in my life, but still. This thingie reads SD card - most of the time!! :)

Oh, one more thing. From SD card you will not be able to load more that 16kB programs, because SD handling routines are located in 0000-7FFF in RAM. The program is loaded into 8000-BFFF and copied back to 4000-7FFF before executing it..