• Podłączenie dysku twardego IDE do CDTV

27.02.2022 15:56, autor artykułu: Robert Krajcarz
odsłon: 1769, powiększ obrazki, wersja do wydruku,

Amiga CDTV choć posiadała napęd CD-ROM nie była wyposażona w dysk twardy. Konstruktorzy postanowili budując ten komputer wykorzystać wcześniejszy model, czyli Amigę 500. Choć wewnętrznie bardzo różni się od swojej siostry, to programowo jest z nią prawie w 100% zgodna. Wbudowując napęd CD postanowiono zastosować własny sposób komunikacji między nim a płytą główną. Wynikało to zapewne z dostępności takich a nie innych napędów w tamtym czasie. Aby spiąć ze sobą oba te elementy, zastosowano układ o nazwie DMAC. Był on stosowany też w dużych Amigach z serii 3000, gdzie służył do podłączenia dysku twardego w standardzie SCSI. Amiga CDTV nie posiada pełnoprawnego kontrolera tego standardu z powodu braku układu WD33C93A. Jednak konstruktorzy przewidzieli jego montaż na specjalnej karcie rozszerzającej, którą wkładało się w złącze expansion z tyłu komputera. Po jej zamontowaniu można było pokusić się o podłączenie dysku twardego w standardzie SCSI. Jedna z polskich firm TOMS oferowała kiedyś tego typu rozszerzenie. Obecnie podobną kartę można zrobić samemu z opublikowanych informacji dostępnych w internecie.

W obecnych czasach może być problem ze zdobyciem odpowiedniego dysku, który na pewno działałby poprawnie. Do tego dochodzi tez mnogość różnego rodzaju złączy występujących w tym standardzie. Można też zastosować odpowiedni interfejs emulujący twardy dysk np: na karcie SD. Sam brałem udział w montażu takiego interfejsu na jednej z imprez amigowych SACP w Siemianowicach.

W swojej Amidze CDTV również od dawna chciałem mieć twardy dysk. Jednak w tamtym czasie zakup odpowiednich elementów był dla mnie nieosiągalny. Obecnie jest o wiele prościej, jednak ja chciałem to zrobić po swojemu. Na Aminecie od 2001 roku istnieje schemat interfejsu do Amigi 500 pozwalający podłączyć dysk w standardzie IDE. Jest on uproszczony do granic możliwości, więc każdy może go wykonać we własnym zakresie. Po dalszych poszukiwaniach okazało się, że konstrukcja ta w kilku mutacjach została wykonana z powodzeniem przez wielu użytkowników. Postanowiłem również wykonać podobny układ. Na forum PPA podpowiedziano mi, abym zerknął na ten odnośnik. Był tam dokładny schemat całego urządzenia. Tak naprawdę składa się on z dwóch elementów:

  • dekodera adresu $DA0000, pod którym znajduje się podpięty twardy dysk
  • generatora sygnałów Read/Write.

Całość pewnie udałoby się zmieścić w jednym układzie programowalnym GAL, jednak autor chciał pokazać jak to zbudować z ogólnodostępnych elementów.

Przeanalizowałem schemat i okazało się, że ową konstrukcję można jeszcze uprościć. Powyższy układ zawiera dekoder adresu, który wykorzystuje 8 ostatnich linii adresowych od A16 do A23. W mojej konstrukcji wykorzystałem tylko 4 linie adresowe: od A16 do A19. Dlaczego? Każdy, kto widział kiedyś schemat CDTV natknął się w nim na układ U50. Odpowiada on za dekodowanie adresów $Dxyyyy. Drugim układem jest U49, który dekoduje kolejne 4 bity adresu. Jednak niefortunnie, adresu $DAyyyy nie jest w stanie zdekodować z powodu takiego a nie innego podłączenia. Gdyby konstruktorzy inaczej go "okablowali", mogłoby się okazać, że zewnętrzny dekoder adresu, aby podłączyć dysk, nie byłby wcale konieczny, gdyż odpowiedni sygnał adresujący można byłoby pociągnąć właśnie od niego. Ja w swojej konstrukcji wykorzystałem wypracowany sygnał z U50 oraz dodałem własny dekoder pozostałej części adresu.

Sygnały sterujące twardym dyskiem to jedno, ale oprócz tego wymagane są też inne służące między innymi do wymiany danych. Skąd je pobrać? Można na przykład tak, jak karta Wicher CDTV, pociągnąć z podstawki pod procesor, gdzie owa karta jest montowana. W moim przypadku pod procesorem miałem już zamontowane rozszerzenie pamięci 2 MB firmy Elbox, więc odpadało to całkowicie. Drugim rozwiązaniem było podłączenie się pod gniazdo diagnostyczne. Jednak zdobycie odpowiedniego złącza jest praktycznie niemożliwe. Ponieważ ja lubię wykonywać swoje rozszerzenia w sposób niekonwencjonalny, postanowiłem wykorzystać złącze Memory Card. Są tam dostępne wszystkie potrzebne linie za wyjątkiem jednej - AS (Address Strobe), którą pociągnąłem z płyty głównej z układu U77.

Ten, kto śledził moje poprzednie artykuły wie, że kiedyś odważyłem się zamontować wewnątrz CDTV stacje dysków. Wiązało się to z wymianą zasilacza na mniejszy. Po tej czynności, nawet z zamontowaną stacją, było jeszcze sporo miejsca. Na tyle dużo, że bez problemu mieścił się tam twardy dysk rozmiaru 2.5". A że złącze Memory Card jest w prawym dolnym rogu, to miejsce pod niego nadawało się idealnie.

Po skompletowaniu niezbędnych elementów przystąpiłem do pracy. Praktycznie żaden z potrzebnych elementów nic mnie kosztował. Dwa scalaki walały mi się w pudle, które pozostały po innych konstrukcjach. Złącze pod dysk dosłownie spadło mi z nieba. Znalazłem je w swojej pracy, w elektrozłomie, przy rozbiórce jakiegoś ustrojstwa. Co prawda nie służyło tam do podłączenia dysku, ale raster się zgadzał.

Dla jasności chciałem tylko zaznaczyć, że cały eksperyment był wykonywany na następującej konfiguracji:

  • procesor 68010
  • 2 MB FAST RAM
  • KickStart 3.5 (3.1 + patch Piru)
  • Workbench 3.1
  • Extended Boot ROM 2.30

Na początek wykonałem interfejs eksperymentalny, aby sprawdzić czy jest o co walczyć. Zaprojektowałem cały układ i podłączyłem. Cały układ współpracował ze sterownikiem ide.device, który jest zamieszczony na stronie z powyższego linku. Dlatego przed uruchomieniem HDToolBoxa należy w ikonce zmienić parametr SCSI_DEVICE_NAME. Niestety układ nie działał, choć na szczęście niczego nie spaliłem. HDToolBox, mimo podania poprawnego parametru, twierdził, że dysku nie ma i już. Jednak nie poddałem się tak łatwo. Dwa dni zajęło mi odszukanie błędu. Okazało się, że w swoich notatkach pomyliłem dwa sygnały źle spisując je z dokumentacji rozpiski pinów dysku. Po zmodyfikowaniu płytki za pomocą pilnika i lutownicy wszystko ruszyło. HDToolBox wszystko wykrył, jednak stwierdził, że dysk ma -128 MB pojemności zamiast 40 GB. Jednak winę za to pewnie ponosi sterownik ide.device.

Nadszedł czas testów. Stworzyłem jedną partycję wielkości 200 MB i zapisałem zmiany. Niestety sterownik ide.device ma tę wadę, że nie potrafi sam wykryć jakiej wielkości jest partycja i trzeba wcześniej zbudować odpowiednią mountlistę. Wzór mountlisty również jest dołączony do dokumentacji. Odpowiednie wielkości można spisać z HDToolBoxa. Są nam potrzebne następujące pozycje:

  • Surfaces - spisujemy z informacji o twardym dysku. W moim przypadku była to wartość 16 (co trochę mnie zdziwiło - osiem talerzy tam upchali?)
  • LowCyl oraz HighCyl - te wartości spisujemy po założeniu partycji. Wartości te zostaną wyświetlone, jeśli zaptaszkujemy opcję "Advanced Options".

Przygotowaną mountlistę łącznie z ide.device zapisałem na dyskietce w katalogu Devs. Dyskietka ta zawierała system Workbench w wersji 3.1. Po uruchomieniu sekwencji startowej wpisałem w Shellu:

Mount IHD0:

Na ekranie pojawiła się ikona dysku podpisana IDH0:????. Następną czynnością był format partycji. Z powodu niewielkiej szybkości transferu troszkę to trwało. Jednak po formatowaniu pojawiła się już poprawna nazwa partycji. Postanowiłem skopiować coś na nią. Wybór padł na jedną z płyt CD-ROM z modułami. Katalog liczący około 100 MB został przekopiowany bez żadnych błędów. Później w programie SysInfo sprawdziłem transfer dysku. Wynosił on około 800 kB. Wiedziałem, że dysk po resecie nie będzie od razu widoczny, dlatego dopisałem w sekwencji startowej przed LoadWB powyższą instrukcję. Po ponownym załadowaniu systemu z dyskietki ikona twardego dysku pojawia się bez problemu, a dane na partycji były nienaruszone. Po tych czynnościach stwierdziłem, że eksperyment się udał i mogę przystąpić do budowy docelowego układu. Jednak... to była jakaś totalna porażka... Nowy układ nie chciał za żadne skarby pracować poprawnie. Choć był wykonany z dokładnie takich samych założeń i zmienił się tylko rozkład ścieżek na płytce drukowanej, nie udało mi się go uruchomić. Tym razem trochę dłużej niż poprzednio próbowałem dojść do tego, co jest nie tak. Nic, ale to kompletnie nic nie pomagało. Cały układ został "przepikany" na wszystkie możliwe kombinacje i zero efektu.

Trochę mnie to zdemotywowało. Odłożyłem nowy układ w kąt, aby trochę od niego odpocząć. W między czasie postanowiłem, wiedząc że układ eksperymentalny działa poprawnie, zrobić coś, aby uzyskać możliwość zabootowania z tak podłączonego twardego dysku. Możliwości badania tego tematu miałem bardzo uproszczone. Wcześniej pod złącze Memory Card miałem podpięte rozszerzenie pamięci, które też opisałem w jednym z artykułów. Ponieważ nie cały obszar tej pamięci był używany, postanowiłem resztę wykorzystać jako tymczasowy obszar dla Extended Boot ROM. Drobna modyfikacja rozszerzenia umożliwiła mi symulowanie tego obszaru bez problemu. Oczywiście po uprzednim wyciągnięciu układów ROM U34, U35. Swoją drogą, kolega Km-l, który również udziela się na PPA, wykonał własną wersję tego rozszerzenia łącznie z modyfikacją, którą zaproponowałem. I muszę przyznać, że jego konstrukcja robi wrażenie. Jest ono widoczne na jednym ze zdjęć. Dodatkowo emulator Extended Boot ROM przydał się wcześniej do testowania nowej wersji wsadu, nad którą pracował Mijo Saftic z portalu CDTV Land.

Wykonałem odpowiedni trójnik złącza i podłączyłem jednocześnie interfejs IDE oraz rozszerzenie pamięci. Na pierwszy ogień poszło oczywiście wgranie za pomocą Remusa ide.device do obrazu Extended ROM. Jednak ku mojemu "nie zdziwieniu", nie zadziałało. Oprócz tego, że sterownik nie musiał być już na dyskietce, nic nie zyskałem. Nie zostało nic innego jak przekopać internet w poszukiwaniach stosownych informacji. Jednak to, co znalazłem, to jedynie coś na temat łatania Kickstartu 1.3. Absolutnie mnie to nie interesowało. Kontaktowałem się nawet z Goddess Relief Office, jednak gdy tam usłyszeli, że to znowu kolejny raz ja, powiedzieli że jeśli jeszcze raz do nich zadzwonię to owszem, zejdą na Ziemię, ale po to żeby mi przy...pomnieć, że wyczerpałem już limit życzeń. I ogólnie mam im głowy nie zawracać. Czyli jednym słowem "lipa". Sam sterownika sobie nie napiszę.

Okazało się jednak, że rozwiązanie tego problemu miałem przed nosem. Przeglądając Remusem zawartości różnych Kickstartów, przypomniałem sobie, że posiadam też obrazy Extended ROM-ów z CDTV-CR. Wewnątrz nich znajduje się też scsi.device. Pomyślałem, że warto z nim poeksperymentować. Dogranie go z wersji 3.44 do wersji 2.30 kompletnie nic nie dało. Jednak coś mnie tknęło. Przypomniało mi się, że w KS3.x również jest scsi.device i może następować jakiś konflikt nazw. Postanowiłem więc zmienić mu nazwę na cdhd.device (wewnątrz plik również) i wgrać ponownie. Po resecie CDTV zachowała się inaczej. Zamiast kręcącego się logo był czarny ekran. Po chwili cyknęła pusta stacja dysków i moim oczom ukazał się obraz Shella. Moje zaskoczenie było niesamowite. Wszedłem nawet do Boot Menu, aby sprawdzić czy sterownik faktycznie jest widoczny. I tak rzeczywiście było. Ucieszony tym faktem odpaliłem FileMastera, aby sprawdzić czy zapisane wcześniej moduły w dalszym ciągu tam są. Tak, jak pod ide.device, tak i pod nowym sterownikiem wszystko było w porządku. Jednak po wybraniu dowolnego modułu do odtworzenia zauważyłem, że coś jest nie tak. Już na pierwszy rzut oka było widać, że pliki wczytują się o wiele dłużej. SysInfo wykazało, że prędkość transferu spadła do 88 kB! To prawie dwa razy wolniej niż z napędu CD. Na początku myślałem, że to wina przygotowania partycji pod ide.device. Jednak ponowne przygotowanie dysku pod nowym sterownikiem nie przyniosło żadnej poprawy. Nie pytajcie nawet ile trwało formatowanie tej partycji. Zainstalowałem więc na niej OS 3.1, który uruchamiał się bez problemów, ale trochę to trwa. jest jednak i tak szybciej niż z dyskietki.

Brakowało mi trochę tej szybkości dlatego postanowiłem wykonać kolejny eksperyment. Założyłem kolejną partycję tyle, że wyłączyłem dla niej automontowanie. Wykonałem dla niej odpowiednią mountlistę i domontowałem przy starcie systemu korzystając z ide.device. Dla tej partycji prędkość transferu była już taka sama jak na początku całych bojów. Postanowiłem tak to zostawić, aby choć trochę cieszyć się prędkością transmisji jak na tego typu sprzęt.

Podbudowany tymi sukcesami postanowiłem przystąpić do budowy kolejnego układu. Zmieniłem delikatnie układ ścieżek. Część z nich udało mi się poprowadzić inaczej, co uprościło jeszcze całość. Mając w pamięci problemy z poprzednim układem, bardzo się obawiałem czy tym razem zadziała. Po wykonaniu tej wersji całość ruszyła od pierwszego włączenia. Pozostało tylko zamontować w docelowym miejscu i to wszystko. Jednak i tu wyszedł jeden problem. Zamontowany adapter zasilania, który wykonałem przy realizacji montażu stacji dysków dość mocno kolidował. Rozwiązanie tego problemu było dwojakie. Pierwsze to pozbycie się adaptera i podłączenie przewodów zasilania płyty głównej bezpośrednio do elektroniki zasilacza. Drugie to wykonanie innej wersji adaptera. Wybrałem to drugie rozwiązanie. Wykonałem je tak, aby był jak najniższy. Po jego wymianie wszystko pasowało idealnie.

Jak całość wygląda można zobaczyć na załączonych fotografiach. Po wszystkich bojach mogę stwierdzić, że jednak warto było trochę się pomęczyć, gdyż takie zwycięstwo smakuje najlepiej. Jeśli ktoś chciałby wykonać podobny interfejs we własnym zakresie, to można pomyśleć o zamontowaniu go łącznie z twardym dyskiem pod płytą główną w miejscu złącza na karty pamięci. Dodatkowo nie musi on być przelotowy. Można to zrobić kompleksowo łącząc go z opisywanym przeze mnie wcześniej rozszerzeniem pamięci.

Należy jednak pamiętać, że ani autor, ani redakcja PPA nie bierze żadnej odpowiedzialności za ewentualne szkody jakie mogłyby wyniknąć z powodu niepoprawnego wykonania interfejsu.

Na koniec kilka informacji technicznych:

  • Testy były prowadzone na dysku Hitachi 40 GB, 2,5",
  • Aby nie obciążać płyty głównej, zasilanie interfejsu podpięte jest pod gniazdo, do którego wcześniej był podpięty CD-ROM. Obecnie CD-ROM i stacja dysków zasilane jest bezpośrednio z zasilacza.
  • Aby interfejs działał poprawnie, należy zewrzeć na płycie głównej zwory J16 oraz J17.
  • Obecnie zrezygnowałem z podłączenia sygnałów RESET i LED.
  • Zamieszczone rysunki płytek drukowanych przygotowane są pod wykonanie ich metodą termotransferową. Aby rysunek był w odpowiedniej wielkości, należy wydrukować go o wymiarach 254x198mm.

Zalety:

  • Prostota konstrukcji
  • Przelotowość rozszerzenia
  • Możliwość zabootowania z dysku twardego

Wady:

  • Sposób wykonania uniemożliwia montaż w CDTV z oryginalnym zasilaczem
  • Działa tylko przy załączonym czytniku CD-ROM
  • Bardzo niskie transfery na sterowniku umożliwiającym zabootowanie

CDTV-IDE
Wersja eksperymentalna
CDTV-IDE
Nowy projekt
CDTV-IDE
Wersja finalna
CDTV-IDE
Tak wygląda z dyskiem twardym
CDTV-IDE
Podłączenie sygnałów
CDTV-IDE
Tak rozwiązałem zasilanie
CDTV-IDE
Boot Menu
CDTV-IDE
HDToolBox
CDTV-IDE
Schemat płytek
CDTV-IDE
Schemat płytek
CDTV-IDE
SysInfo

 głosów: 9   tagi: CDTV, IDE, dysk twardy
komentarzy: 10ostatni: 17.03.2022 22:59
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem