Autor Wątek: FDD3000 - Schemat z sieci - Realizacja  (Przeczytany 1846 razy)

ArturM

  • **
  • Wiadomości: 97
  • Miejsce pobytu:
    GZM
FDD3000 - Schemat z sieci - Realizacja
« dnia: 2023.12.06, 12:12:05 »
Będzie mały elaborat, sorry.  8)

Zacznijmy od początku. Znajomy kupił lata temu stację FDD3 (pudełkową, z układami EFGJ) na katowickiej giełdzie. Okazało się, że jest uszkodzona. Z powodu braku czasu, czy innego powodu, ta stacja przeleżała ładnych kilkanaście lat. Ostatecznie chcieliśmy ją ożywić - co się udało i usterkę opisałem w innym z Moich wątków.

Lecz jeszcze przed naprawą stacji pojawił się pomysł by na podstawie schematu zrobić zamienną płytę kontrolera stacji. Przecież po sieci dawno krążył schemat FDD3000 na układach TTL z pamięcią DRAM i nie było tam układu ULA. Pisałem o Moich wątpliwościach co do układu sterującego RAS/CAS pamięci jaki tam zastosowano, no ale jak nie wykonasz to się nie przekonasz... :D
I w taki sposób powstała tymczasowa płyta - taki Proof of Concept - na podstawie tegoż schematu. Możecie ją zobaczyć na zdjęciu. Główna logika trafiła na dolną płytę, a DRAM plus multipleksery na dodatkowej płytce. Zadbałem o to by znaleźć układy z odświeżaniem 7 bitowym. Z80 jest dość wybredny.

Oczywiście nie odpaliło to od pierwszego włączenia. Najpierw myślałem, że to problem ze źle zrobioną logiką w układzie GAL (U2) i powstało kilka wersji. Jak już wszystkie możliwości się wyczerpały to zacząłem myśleć nad wymianą płytki DRAM na taką która zawiera 64KB ale na pamięci statycznej i taka płytka powstała. Widać ją leżącą na napędzie. Zawiera kości z cache starych płyt głównych i386 i i486 - bo miałem ich sporo z demontażu tych płyt - oraz prosty dekoder na 74HCT00.
Dalej stacja nie chciała współpracować. O ile układ WD1770 dawał jakieś oznaki życia, np. przesuwając głowicę na ścieżkę zerową, to TOS nawet nie próbował się wczytać. I dosłownie paręnaście dni temu mnie natchnęło. :P Przecież my tu mamy do czynienia z FDD3000 a nie FDD3 i całkiem możliwe, że wgrany TFBOOT.BIN z Trójki nie pasuje.

Przeprogramowałem EEPROM na ten z FDD3000 i... TOS się wczytał, a nawet zgłosił chęć do pracy. Czyli problemem nie był ani RAM, ani GAL, tylko to, że TFBOOT próbował szukać sygnału DRQ nie na tym porcie co trzeba.  ::) Ale nie uprzedzajmy faktów. Skoro działa z pamięcią SRAM to teraz pora na płytkę-zagadkę z DRAM. Po podmianie stacja nie ruszyła - czyli jednak cały układ przerzutnikowy jest wadliwy... No nie do końca. Przecież na symulacji w symulatorze logicznym to ma prawo działać!
Przyglądając się innym rozwiązaniom generacji sygnałów RAS/CAS to w 90% opóźnienia są robione na układach RC i z reguły są to bardzo krótkie czasy. W pewnym artykule dotyczącym spinania pamięci DRAM z Z80 przeczytałem o możliwości zrobienia tego synchronicznie, ale tam wykorzstano sygnał zegarowy sprzed podziału. Może taktowanie tego układu prędkością CPU to za mało? Bo przecież zanim pojawi się CAS to minie jakieś 2,5 taktu, a tam już Z80 niecierpliwie czeka na dane.

Przekrosowałem sygnał zegarowy na CLK8M, może tu jest "czeski" błąd na schemacie. Niestety niewiele to zmieniło, dalej TOS się nie wczytuje. Mamy do dyspozycji tylko jeszcze jeden sygnał zegarowy 16MHz prosto z tranzystora. Po przekrosowaniu... TOS się wczytuje. Czyli timingi są ważne, a ktoś w TIMEX projektując ten układ, albo go źle narysował, albo też mieli ten sam problem i taka wersja nie wyszła z fazy prototypu, i woleli użyć sprawdzonej ULA, która nie będzie wydziwiać co do bitowości odświeżania DRAM. Nie wiadomo...

Cóż. Nasz PoC zadziałał w końcu, ale czy na pewno działa dobrze. Nie mam wolnego układu UART więc tego przetestować nie mogę - bo nie będziemy "rwać" kontrolera z działającej stacji. Komunikacja z ZX działa. Stacja się przedstawia. Da się wykonywać polecenia systemu TOS z poziomu ZX BASIC. Nawet da się formatować dyskietki - zdjęcie kolejne.

Natchnęło mnie też by stacji zamontować tylko 8KB RAM. Na pająka zrobłem płytkę z inwerterem i jednym układem 6164, z zapasów kości cache a jakże. TOS próbował się wczytać, ale przy 3 ścieżce się poddał. :D I teraz pojawiło się pytanie ile pamięci tak naprawdę widzi system w stacji? TOS zadowoli się 16KB RAM, ale do uruchomienia CP/M trzeba już 64KB. Zatem spróbujmy i CP/M 2.2.

Program terminala się wczytał i uruchomił, ale po wyświetleniu ponaglenia o dyskietce systemowej nic się nie dzieje. Mimo, iż użyłem dwóch różnych kopii, CP/M sie nie zgłasza. Ba! Nawet nie słychać by się ładował. Stacja po zresetowaniu się nie odzywa, a terminal zostaje z wyświetlonym komunikatem.



I tu zaczyna się właściwa część dlaczego powstał ten wątek. Skoro na FDD35 i na FDD-X działa zarówno TOS jak i CP/M, a to też są klony robione na podstawie wersji TTL, to coś dalej musi być nie tak z tym schematem/setupem.

1. Czy problemem może być brak zamontowanego układu UART? Osobiście nie sądzę by CP/M uważał go jako "must have". A przynajmniej do samego załadowania systemu.

2. Idąc za ciosem, wyciągnąłem sobie boot sektor z dyskietki systemowej CP/M i tam aktywnie wykorzystywane są przerwania z układu WD1770 - patrz dezasemblacja z moimi komentarzami. O ile mam sygnał INTRQ przepuszczony przez GALa - który tylko go neguje - i doprowadzony jest on do Z80, to zastanawiam się czy tam jeszcze nie ma jakiejś logiki z nim związanej. Przecież przepuszczanie go przez PALa tylko w celu inwersji byłoby marnowaniem termów, równie dobrze może to zrobić jeden z buforów - tak jak to robi z sygnałem RESET i CLK4M.

3. Czyżby płytka pamięci DRAM i o dziwo SRAM nie działała prawidłowo, i nie ma dostępnych pełnych 64KB? Był może jakiś program diagnostyczny do FDD3000, który uruchomiony w pamięci stacji mógłby to przetestować?



trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: FDD3000 - Schemat z sieci - Realizacja
« Odpowiedź #1 dnia: 2023.12.06, 12:53:10 »
Widzę, że terminal polbritowski. CP/M też? Bo one nie działają zamiennie z wersjami TMX.

ArturM

  • **
  • Wiadomości: 97
  • Miejsce pobytu:
    GZM
Odp: FDD3000 - Schemat z sieci - Realizacja
« Odpowiedź #2 dnia: 2023.12.06, 13:40:37 »
Używałem kopii zrobionej z dyskietek, które mam do stacji. Na mojej FDD3000 (dużej) jak, i na emulatorze fuse obie się ze sobą dogadują i CP/M się uruchamia.

pear

  • *****
  • Wiadomości: 5511
  • Miejsce pobytu:
    Będzin
  • Z80 only
Odp: FDD3000 - Schemat z sieci - Realizacja
« Odpowiedź #3 dnia: 2023.12.06, 13:44:07 »
Tu masz równania z GAL-a FDD35 https://github.com/maciejgruszecki/FDD35/tree/main/PLD
Nie ma tam żadnej magii.
UART nie jest potrzebny do pracy, jeśli nie korzystasz z portów RS-232.
ZX/Enterprise/CPC/Robotron/C128D

ArturM

  • **
  • Wiadomości: 97
  • Miejsce pobytu:
    GZM
Odp: FDD3000 - Schemat z sieci - Realizacja
« Odpowiedź #4 dnia: 2023.12.06, 13:53:07 »
Znam to repo i też brałem je pod uwagę.
Choć jest mała nieścisłość - przynajmniej tak uważam - schemat vs GAL. Otóż na schemacie FDD35 masz sygnał ~64KB na pinie 1, a w równaniach występuje ~RFSH...

tapy

  • ***
  • Wiadomości: 226
  • Z80 & CP/M
Odp: FDD3000 - Schemat z sieci - Realizacja
« Odpowiedź #5 dnia: 2023.12.06, 14:44:04 »
Gdzie widzisz tą nieścisłość? Sygnał ~RFSH służy tu do wyłączania ROM w trybie CP/M które wymaga dolnego RAM do działania.
Edit. Nie przeanalizowałem jednak schematu, jednak nie jest od używany do tego celu.
« Ostatnia zmiana: 2023.12.06, 15:05:38 wysłana przez tapy »

ArturM

  • **
  • Wiadomości: 97
  • Miejsce pobytu:
    GZM
Odp: FDD3000 - Schemat z sieci - Realizacja
« Odpowiedź #6 dnia: 2023.12.24, 18:40:50 »
Przedstawiona tekstowa treść logiki pochodzi chyba z jakiegoś prototypu, gdzie jeszcze były eksperymenty, czy dla pamięci statycznej nie wycinać cykli odświeżania. (IMO nie trzeba tego robić bo jak pojawia się /RFSH to nie pojawia się ani /RD ani tym bardziej /WR, więc pamięć SRAM jest bezpieczna jeśli jest dobrze podłączona).
Mój zamontowany GAL tak rozumie zapisaną logikę (załącznik).

Wracając jednak do tematu głównego. Zauważyłem dodatkowy feler.
O ile uruchomienie CP/M mogłoby świadczyć od jakimś błędzie w logice zaszytej w GALu, problemami z pamięcią, etc. to już nie do końca poprawna współpraca z dyskietkami 640KB to już niezły "mindf...k". Jak się to objawia?

TOS VA.2 z dyskietki 160KB uruchamia się i wszystko wygląda, że działa poprawnie, ale podkusiło mnie, by wziąć i sformatować dyskietkę na gęstą. Formatowanie przeszło. Słychać było, że dwukrotnie napęd przebiegł po 80 ścieżkach (obie strony) i dwukrotnie zapisywał w obszarze systemowym. I z taką dyskietką można pracować - do czasu, aż nie wciśnie się reset. Stacja nie potrafi z takiej dyskietki wystartować.
Dodatkowo jak już uda się czasem przekonać stację, by po wystartowaniu z dyskietki 160KB współpracowała z włożoną dyskietką 640KB, a nie twierdziła, że "Disk <xxx> corrupted", to z tą dyskietką da się ponownie pracować.

Na początku myślałem, że to jakiś problem z napędem, ale zgrałem tą dyskietkę do obrazu przez CPCdiskXP. Obie strony były czytelne. Struktury wyglądają normalnie. Da się też na tym obrazie pracować w Fuse. Ponieważ w czasie świetności mojej FDD3000 nie miałem odpowiedniego napędu DD to takich dysków nie używałem. Może stacja nie potrafi z takich startować? (Ale wtedy po co w ogóle taka możliwość?).
Przeniosłem napęd do FDD3000 i... TOS wstał z tej dyskietki 640KB jak gdyby nigdy nic! Magic! ??? Pomyślałem, że może WD1770 jest jakiś niepewny. Podmieniłem układy - na szczęście był w podstawce - i też TOS wstał. Więc raczej to nie to...

Zaczyna Mi brakować pomysłów do czego się przyczepić.


Pytanie do posiadaczy FDD35 lub FDD-X czy Wam TOS wstaje z gęstych dyskietek na klonach?
« Ostatnia zmiana: 2023.12.24, 19:05:10 wysłana przez ArturM »

ArturM

  • **
  • Wiadomości: 97
  • Miejsce pobytu:
    GZM
Odp: FDD3000 - Schemat z sieci - Realizacja
« Odpowiedź #7 dnia: 2023.12.28, 14:03:44 »
I chyba rozwiązałem problem. 8)

W skrócie: "Stara elektronika nie lubi nowych rozwiązań". :P

O ile układy HCT mogą udawać klasyczne TTLe i zgodne są poziomy napięć to tu jako bufor danych z napędu się to... nie sprawdza. Po wymianie HCT240 na LS240, oraz HCT244 na LS244 ruszyło.
 
Jeszcze trzeba by to nieco dogłębniej przetestować (np. z napędem 3" i 5,25"), ale na 99% mogę stwierdzić, iż stacja zbudowana na podstawie tego schematu po drobnej poprawce w układzie generowania /RAS i /CAS, ma prawo działać.

pear

  • *****
  • Wiadomości: 5511
  • Miejsce pobytu:
    Będzin
  • Z80 only
Odp: FDD3000 - Schemat z sieci - Realizacja
« Odpowiedź #8 dnia: 2023.12.28, 20:44:19 »
Buforowanie na LS240/244 jest w oryginalnej stacji FDD3. W FDD3000 są bufory z otwartym kolektorem.
FDD35 wzorowałem na schematach FDD3, a FDD-X na FDD3000.
ZX/Enterprise/CPC/Robotron/C128D

ArturM

  • **
  • Wiadomości: 97
  • Miejsce pobytu:
    GZM
Odp: FDD3000 - Schemat z sieci - Realizacja
« Odpowiedź #9 dnia: 2023.12.28, 21:48:42 »
W FDD3000 są bufory z otwartym kolektorem.
Zgadza się. Ale tylko połowicznie, jeśli mówimy o dużej płycie. :)
O ile wyjściowe bufory sterujące są oparte o LS06/LS07 to dane kierowane do WD1770 idą najpierw do EFGJ121 gdzie są kondycjonowane (w jakiś sposób).

W FDD-X nie miałeś innego wyjścia jak przepuścić to przez bufor OC, bo tam są dwa kanały i trzeba było posiłkować się "iloczynem na drucie".