forum speccy.pl

Komputery z Z80 => TIMEX => Wątek zaczęty przez: aqqman w 2023.01.22, 12:52:18

Tytuł: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: aqqman w 2023.01.22, 12:52:18
Dandanator + Multiply 1.2 + Timex 2068

Dandanator działa, testy - PASS, 'widzi' Multiply - wciśnięcie "1" Pokazuje gui Multiply z informacją "Retrieving file names..."
i koniec, wisi w tym stanie. Na kartę wgrałem kilka plików - romy, tzx-y.
Kartę próbowałem formatować FAT, FAT32 nawet exFAT - (choć później doczytałem że biblioteka SD użyta w Multiply obsługuje tylko FAT i FAT32).
Ciekawostką jest fakt że kiedy po raz pierwszy włożyłem tą kartę (byłem przekonany że jest pusta), były na niej pliki z telefonu w którym kiedyś służyła - ot jakieś zdjęcia pliki tekstowe, i wówczas Multiply pokazało mi listę tych plików (niektóre, jakby wyrywkowo) i dało się strzałkami poruszać po tej liście. Wyjąłem kartę i sformatowałem w czytniku na PC. Później już kaplica. Karta nadal da się czytać i zapisywać na PC bez problemu.
O co może chodzić?
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: KWF w 2023.01.22, 13:18:28
Chyba jakaś niezgodność z Timexami, bo tu podobne zachowanie: https://www.speccy.pl/forum/index.php?topic=7044.msg102052#msg102052
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: Maryjan w 2023.01.22, 13:58:18
Tam się przypadkiem implementacja Kempston-a  nie sypie ?
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: aqqman w 2023.01.22, 14:01:10
Nie wiem, kempstony pokładowe mam wyrwane z korzeniami, zresztą i tak były na AY-greku (TC2068).
Jak to jest z tą zworką w dandanatorze od Joysticka? Ma być założona czy wyjęta?
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: Maryjan w 2023.01.22, 16:32:54
Założona - Kempston ON
Zdjęta - OFF
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: aqqman w 2023.01.22, 22:08:30
Rozumiem, ze zdjętą Multiply jest dla dana niewidoczne,z założoną działa jak opisałem czyli nie działa  :D
To dekodowanie adresu joysticka jest do .......... 'świeci' mi na przedziałach portów od #00-#1F, #40-#5F, #80 - #9F , #C0 - #DF i wszystko powyżej #FF analogicznie tak samo. Jak ja nienawidzę, uboższego niż ośmiobitowe, dekodowania adresu. Z tym od zawsze zdarzały się problemy.
Gdybym wiedział z którego portu korzysta Dandanator aby czytać bit RIGHT swojego portu joysticka, bo nie wydaje mi się że jest to #1F
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: pawelb w 2023.01.23, 00:48:30
Wychodzi na to że to urok Timexów.
Komunikacja miedzy Dandanator a multiply działa przez złącze db9 na nim.
Dandanator zleca działanie na serialu ( mogę się mylić ale tak wynikało z kodu do arduino)   a  Multiply oddaje dane z powrotem w paczkach o
długości 4bit. Może jakoś inaczej ta komunikacja działa - np. czasy transmisji  ponieważ ta komunikacja nie sprawdza danych i oczekuje w określonym czasie przypływ danych.
Możliwe jak jakiś "magik" weżmie się za wsad od GALa to może się uda zaadaptować dla Timexów. Ja nie potrafię :| .
Sprawdź działanie na Spectrumie lub jego klonie. Jak nie zadziała czytanie to trzeba sprawdzić kabelek Danator->Multiply - u mnie tasiemka się urwała bo była zlutowana na DB9 zamiast jak w oryginale spięta złączką.

Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: KWF w 2023.01.23, 07:43:13
Jeśli się nie mylę to wpis:
Kempston = IOREQ # RD # A5; /*Decode by A5 only*/
w pliku JED wsadu GALa wynika że joystick jest aktywowany tylko stanem niskim na tych trzech pinach (powyżej).
W GAL-u wszystko się niby zgadza.

Żadnym specem od Timexów nie jestem, a moje przemyślenia są takie:

1/ Dekodowanie Kempstona tylko po adresie A5, to żadna nowość i tak samo jest zrobione dla wewnętrznego interfejsu joysticka w TC2048. Należy pamiętać, że wewnętrzny Kempston w TC2048 jest na stałe i nie można go odłączyć bez modyfikacji komputera.

2/ Sianie Dandanatora po portach I/O przy TC2068 może powodować konflikty z portami zajętymi przez SCLD, a jest ich kilka (od 0xF4 do 0xFF). Możliwe, że SCLD dekoduje też metodą uproszczoną tylko po liniach A0, A1 i A3, z pominięciem pozostałych.   

3/ Wsad do GALa w Dandanatorze będzie trudno zmienić, ze względu na brak wolnych we/wy w tym układzie. Można zewnętrznie dołożyć dekodowanie adresu Kempstona po A5, A6 i A7. Mod w załączeniu, ale nie sądzę aby pomógł, skoro Kempston w TC2048 i tak będzie się odzywał siejąc po szynie danych. Dla TC2068 należałoby sprawdzić.

4/ W klonie Timmy w dekoderze Kempstona uwzględniłem A5, A6 i A7, ale tak samo jak w TC2048 jest on na stałe. Aby go wyłączyć należy wyjąć układ U5 (74LS540). Jeśli jego wyłączenie nie pozwala na poprawną pracę Multiply, to moim zdaniem są jakieś jazdy z 4-bitową transmisją na porcie 0x1F.

P.S.

Jak przygotowałiście program w Arduino, pod jaką konfigurację ZXa, bo z tego co widzę domyślnie jest ZX128K (linia nr 36 w Multiply_Arduino.ino) : https://github.com/mad3001/Multiply/blob/main/Src/Multiply_Arduino/Multiply_Arduino.ino
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: pawelb w 2023.01.23, 10:47:45
Osobiście nie robiłem kompilacji ze żródła. 
U siebie arduino było programowane z konfiguratora romów : dandanator-mini-10.4.1.jar


Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: aqqman w 2023.01.23, 11:39:02
SCLD w TC2068 wygląda że ma dekodowanie co najmniej 8 bitowe - nie sieje po innych portach, przynajmniej w przypadku portów odczytywanych. Kempstona jak w TC2048 fabrycznie tam nie było,a ten był w małych Timexach dekodowany na zewnątrz SCLD.
Zatem tak jak myślałem, grzebanie w sofcie Multiply.
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: aqqman w 2023.01.23, 18:10:42
Podłączyłem sam Dandanator do TIMEXa (bez Multiply) i przez RS do PC. Odpaliłem program ROM-generator. Przy próbie wczytania romu do flash pokazuje na borderze paseczki jakby wczytywał po czym zatrzymuje się z migoczącą ikonką bomby, ale progresbar stoi, i na tym koniec. Wersja płytki 2.1 więc ma już kynar i Rom-WR mod - sprawdziłem. Może jednak to nie Multiply sprawia problemy?

Obsługa RS-232 na Danie jest zrobiona softwareowo z liczeniem czasów taktami zegara, 128 ma inny trochę zegar CPU - czy to może rozjeżdżać transmisję?
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: aqqman w 2023.01.24, 17:03:31
Poodłączałem dodatki bo Dan pokazywał mi 128k a przy pozycji Multiply było 48k. Danadator musiał wykrywać dodatkowe banki pamięci stąd mu wychodziło 128k. Układ dekodowania rejestru pamięci - odłączony, dekoder AY a'la 128k - odłączony. Bez zmian.
Sam Danadator (bez Multiply) przy próbie wgrania ROMu niby wczytuje (border miga paskami), ale kiedy powinien zacząć zapisaywać Flash - stoi i na coś czeka, tylko miga ikonką bomby. Nie może zapisać flasha? czy ma jakiś błąd CRC? trudno powiedzieć. Czy jest ktoś komu z jakimkolwiek Timexem Danadator działa czy poprostu trafiłem na śmieć?
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: aqqman w 2023.01.25, 00:59:12
Straciłem pół dnia aby stwierdzić, że Dandanator nie lubi mojego portu COM w PC (oczywiście po konwersji poziomów), ale taki COM na USB już tak.
Póki co jest tak:
- Dan komunikuje się z PC, wgrywa rzeczy,jako test wgrałem oprócz aktualizacji Dana, DIagROM który nie chciał działać (obraz jak przy braku ROM), ale może taki jego urok w tych warunkach  nie wiem.
- Multiply dało się zaktualizować przez swoje ukryte miniUSB.
- Multiply czasem pokazuje śmieci na karcie ale najczęściej się zawiesza na 'Retrieving'
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: KWF w 2023.01.25, 08:30:29
- Multiply czasem pokazuje śmieci na karcie ale najczęściej się zawiesza na 'Retrieving'

Coś z komunikacją, składaniem paczek 4-bitowych w słowa, liczeniem taktów Z80. Jeśli liczniki w Dan i Multipy są skalowane taktami 128K, to stąd mogą być jazdy przy Timexie. Ale z drugiej strony jeśli działa z 48K to dlaczego nie działa z TC.

Swoją drogą miałem podobne objawy przy komunikacji (niestabilna lub jej brak) Jupitera ACE z kartą SD, jeśli w Jupiterze był kwarc 6,5536 MHz zamiast 6,50 MHz. Tam też odczyt był synchronizowany z taktami procesora.
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: aqqman w 2023.01.25, 19:44:21
Też nad tym myślałem, dlatego wypiąłem modyfikację pamięci, tak aby Dan rozpoznawał Timexa jako 48k. Teraz zarówno przy pozycji Multiply w menu jak i na szczycie menu jest "48k", choć w ROMie Dana nie doszukałem się zmiennego timingu w zależności od wersji sprzętu. Może w czasie kompilacji jest to ustalane, nie wiem. Wgranie nowszej wersji ROM Dandanatora (z gotowca) nic nie zmieniło. Jeszcze poszukam innej karty pamięci - może tu leży przyczyna.
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: aqqman w 2023.01.26, 05:36:37
Działa... musiałem zwiększyć sporo opóźnienia przy przesyłaniu nibble w Arduino, skompilowac i wrzucić na Multiply. Co autor miał na myśli tworząc ten kod nie wiem  ::)
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: KWF w 2023.01.26, 07:40:08
Gratulacje i super, że działa. Czy mógłbyś wrzucić swoje poprawki w kodzie Arduino dla innych?
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: aqqman w 2023.01.26, 09:08:26
Oczywiście.
Multiply-main\Src\Multiply_Arduino\incDelayDefs.h
#define Dly4SNAus 29 //29
#define Dly4Z80us 29 //29
#define Dly4SCRus 29 //29
#define Dly4SINGLEus 50 //35
#define Dly4ROMSETus 29 //29
#define Dly4NIBBLEus 30 //9
#define Dly4DIRLISTus 30 //29 Depends on number of directory entries. Watch out
#define DlyANSWERus 29 //29
#define DlyLAUNCHms 10 //10
#define DlyROMSETms 5 //5
#define DlyTAPms 5 //5
Wartości oryginalne w komentarzu //
To 30 // 9 to sporo ale wolałem się upewnić bo wtedy Z80 czeka na Arduino a nie odwrotnie. Można poeksperymentować z mniejszymi wartościami - mnie pasuje.
Wersja Multiply 1.2
Wersja Dandanator 10.4
Nie testowałem tego długo tylko na kilku plikach sna. Możliwe że 30 to dużo -próbowałem 11,12,13 było lepiej ale ładowało listing plików raz na 3 próby. Przy 30 pliki się ładowały, program odpalał.
Z80 sprawdza 1 bit przez rotację i po tym wnioskuje że dostał paczkę. Arduino wysyła bez potwierdzania odbioru.
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: pawelb w 2023.01.26, 10:05:11
Super!!!
Gratulacje,
Małe info o kompilacji wsadu do arduino:
biblioteka SdFat ma być w wersji z serii 1.x w przeciwnym przypadku trzeba by poprawić kod wsadu by działało z 2.x

Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: pawelb w 2023.01.27, 11:07:29
Taki offtopic.
Marzy mi sie by Multiply czytało pliki z internetu podobnie jak fujinet.
Źródłem dany byłaby strona zxifno.dk. lub lokalny serwer.
Wymaganie to połączenie po wifi i dodanie/zamiana funkcjonalności czytania kart uSD.
W teorii jest to do zrobienia bo można podmienić bibliotekę na swoją która udaje sdFAT i zamiast operacji na uSD to operuje na zasobie WiFi.
Może się kiedyś doczekamy takiej funkcjonalności -  u mnie brak czasu by w to się zagłębić :|.
Tytuł: Odp: Dandanator + Multiply - nie czyta karty (Timex)
Wiadomość wysłana przez: aqqman w 2023.02.14, 15:39:36
Mhm, a mnie sie marzy coś co pozwoliłoby na SAVE, LOAD + wgrywanie jak z Multiply, i wszystko na jedną kartę SD. Coś jak ESXDOS tylko bez udziwnień typu totalnie przenicowany ROM i komendy litera po literze. Snapshot mi nie chce działać na Danie.