Retro Komputery / Programowanie / Motoryzacja / Polityka

A600 z kartą Compact Flash – praktyczne informacje

Wielu użytkowników komputera Amiga 600 lub 1200 decyduje się na instalację popularnego rozwiązania jakim jest wykorzystanie karty Compact Flash jako dysku twardego podłączonego do interface IDE komputera przy pomocy specjalnej przejściówki. Przejściówka taka kosztuje grosze i można ją łatwo zdobyć np. poprzez zakup w serwisie Ebay. Jako, że taka instalacja jest praktycznie najlepszym sposobem rozbudowy Amigi o pamięć masową postanowiłem podzielić się moimi spostrzeżeniami z instalacji takiego zestawu w moim komputerze, a że nie obeszło się bez problemów postanowiłem podzielić się moimi spostrzeżeniami na ten dosyć znany temat, gdyż pewnych ważnych informacji nie udało mi się znaleźć w innych źródłach.

Trochę o Amidze i dyskach twardych

Karty Compact Flash

Przykładowe karty Compact Flash

W czasach gdy Amiga wchodziła na rynek pojemności dysków twardych kończyły się na dziesiątkach megabajtów, no może te  największe kosztujące tyle co mały domek na Hawajach miały tych megabajtów powiedzmy powyżej setki. Nikt nie spodziewał się, że już kilka lat później pojemności będą wyrażane w gigabajtach a telefony noszone w kieszeniach będą spokojnie mieściły w sobie całe istniejące oprogramowanie Amigi. Żeby było jeszcze ciekawiej nie istniał standardowy protokół transmisji, o prym walczyły  formaty SCSI oraz IDE(przemianowany później ATA), oraz powoli odchodzący z rynku 8 bitowy XT-BUS. Pierwsze dwa są w użytku aż do dzisiaj . Oba standardy były całkowicie różne i dyski wspierające je nie potrafiły się ze sobą dogadać, ba … nawet złącza miały inne. SCSI uznawano jednak za standard bardziej profesjonalny i elastyczny, gdyż było wykorzystywane w serwerach, systemach backupu, czy nawet ówczesnych skanerach, IDE zaś był standardem tylko dla dysków twardych a został stworzony przez IBM dla ich PC/AT (dzisiejszy standard SAS jest rozwinięciem SCSI, a SATA rozwinięciem IDE … jednakże wtyki są już tożsame i kontrolery SAS/SATA mogą z ograniczoną wydajnością korzystać z dysków konkurencyjnego rozwiązania). Projektanci Amigi za bardzo nie wiedzieli który standard wybrać, a że A1000 była komputerem do wielkich rzeczy to początkowo wybrano SCSI. Z tego tez powodu do kickstartu dołączono sterownik scsi.device mający zapewnić obsługę dysków oraz stworzono kontrolery dołączane do Amigi. Niestety aż do wersji 1.3 Amiga nie potrafiła wystartować AmigaOS z dysku twardego, a w dodatku system plików OFS był bardzo niewydajny – FFS pojawił się dopiero w KS 1.3 wraz z możliwością bootowania .Przykładem takiego kontrolera SCSI dla A500 był moduł Commodore A590 potrafiący zależnie od wersji obsłużyć dyski SCSI aż do 9GB, co wtedy wydawało się wartością z filmów sci-fi, potrafił też obsługiwać dyski XT-BUS, ale jak już wspomniałem standard ten nawet w 1985 roku był już wymierający. Oczywiście system plików też ograniczał maksymalny rozmiar i dla FFS  jest to „zaledwie” 4GB. Dopiero poprawki OS 3.5/3.9 pozwoliły na bezproblemowy montaż większych dysków w Amigach. Gdzie była i jest największa różnica między SCSI a IDE ?? Przede wszystkim w cenie zarówno kontrolera jak i dysków. Dyski SCSI i ich kontrolery były (i dalej są) wielokrotnie droższe i bardziej skomplikowane niż IDE. Sprawiło to, że dyski twarde w Amigach pierwszej generacji mieli tylko nieliczni. Z pomocą oczywiście przyszli niezależni producenci tworząc swoje własne kontrolery korzystające z dysków IDE (np. polski Elsat MegaramHD, który posiadałem w latach 90tych) i pozwalające rozbudować „500-ke” o tani i pojemny dysk twardy. Dopiero wprowadzenie A600 i A1200 zaowocowało  interface IDE na płycie głównej komputera – dokładnie jako część układu Gayle. Niestety oprogramowanie dla tego rozwiązania nie było gotowe w dniu premiery A600 i dopiero KS 2.05 pozwolił w pełni wykorzystać nowy układ (miał to już zrobić 2.04 ale ma niestety pewne problemy z dyskami powyżej 40MB), w dodatku okazało się, że implementacja IDE w Gayle jest bardzo prosta i przez to bardzo wolna – ale lepszy „rydz niż nic” i standardowy kontroler mimo swojej powolności powinien wystarczyć każdemu zwykłemu użytkownikowi.

Gayle IDE, FFS a rozmiar dysku

A600HD oryginalnie była sprzedawana z dyskami 20MB, a rzadziej z 40MB. To samo dotyczy oczywiście A1200HD.  W dodatku pierwszy KS 2.0 dla A600 nie zawierał obsługi kontrolera Gayle w scsi.device (nazwa sterownika została niezmienna dla IDE, Gayle udaje ze jest SCSI, będąc w rzeczywistości IDE 🙂 ) , a KS2.04 o ile już ją zawierał, to z powodu błędu rozpoznaje dyski tylko do pojemności 40MB (chociaż tutaj jest totolotek, zdarza się że jedne dyski działają inne nie) .. dopiero KS2.05(37.300) rozwiązywał w pełni problem. Jeżeli więc mamy KS z rewizji 37.299 lub starszej to możemy zapomnieć o jakimkolwiek dysku w naszej A600, podobnie nie zadziała nam port PCIMCIA, co przydaje się przy wymianie danych między PC a Amigą. W przypadku posiadania takiej wersji Kickstartu należy najpierw wymienić kostkę KS na nowszą.

Oryginalne nowsze kostki z Kickstart można zamówić z firmy Cloanto, lub od dystrybutora części do Amigi jak AmigaKit czy Versalia – oba sklepy handlują także poprzez ebay.

Jeżeli już wymienimy kostkę KS na nowszą (2.05 lub 3.1) to pojawia się granica maksymalnej pojemności 4GB – tyle tylko potrafi zaadresować AmigaOS wraz z systemem plików FFS. Z pomocą żeby przekroczyć tę granicę przyjdą nam dwa „handlery” alternatywnych systemów plików dostępne ze strony aminet –  SFS i PFS (polecam wersję PFS_aio-handler ) . Pierwszy z nich wymaga procesora 020 wiec na nic nam się nie przyda w „gołej” A600, drugi zaś pozwoli nam dosyć bezstresowo taką pojemność sformatować do pracy z A600. Jednakże jeżeli karta, lub dysk  ma większą pojemność niż 7.87GB to pojawi się kolejny problem. Sterownik scsi.device nawet z Kickstartu 3.1 nie ma możliwości zaadresowania większej pojemności, niż  7.87GB. W przypadku próby umieszczenia partycji dysku w obszarze powyżej 7.87GB system co prawda zatwierdzi i sformatuje taką strukturę, jednakże w czasie nagrywania danych  powyżej tego sektora dane nadpiszą nam sektory na początku dysku i doprowadzi to do utraty danych z początkowych partycji. Związane jest to z tzw błędem przepełnienia adresu (wartość adresu sektora jest większa niż komórka pamięci służąca do jej przechowywania)  Rozwiązaniem problemu jest specjalna poprawiona wersja sterownika scsi.device oraz program LoadModule umieszczany w startup-sequece, który w ramach inicjacji systemu operacyjnego podmieni nam scsi.device na tą specjalną wersję zanim nastąpi jakikolwiek zapis. Takie rozwiązanie pozwoli nam podłączyć do Amigi 600 dysk aż do pojemności 128GB, co jest granicą możliwości sprzętowej samego interface. Czy da się więcej ? Tak .. da się. Jeżeli z jakiegoś powodu chcemy więcej niż 128GB musimy zakupić specjalny kontroler sprzętowy np. Elbox 4xEIDE’99, który poprawia adresację i korzysta z trybu LBA-48, z takim kontrolerem teoretycznie nie istnieje żadna granica pojemności współczesnego dysku.

Aha i najważniejsze – karty CF 8GB mimo napisu na karcie nie mają 8GB 🙂 mają z reguły lekko mniej niż 7.87 co oznacza że nie przekraczają one możliwości  scsi.device umieszczonego w kickstarcie. Podmianka scsi.device będzie potrzebna tylko dla kart większych niż 8GB.

Procedura instalacji karty CF

Karta CF zamontowana w adapterze i podłączona do Amigi

Karta CF zamontowana w adapterze i podłączona do Amigi

Pod względem sprzętowym instalacja jest bajecznie prosta. Kartę CF wkładamy do adaptera, rozkręcamy obudowę Amigi – usuwamy metalowy uchwyt przeznaczony do dysków 2.5″ a następnie dołączonym przewodem łączymy adapter z płytą główną. Ja swój adapter dla pewności okleiłem od spodu taśmą izolacyjną aby leżąc na płycie głównej nie doprowadził do jakiegoś zwarcia. Zamykamy obudowę i część sprzętowa instalacji jest skończona. Kolej na odpalenie z dyskietki AmigaOS i sformatowanie karty żeby stała się widoczna dla Amigi. Do tego najłatwiej posłużyć się dyskietką Install dostarczoną razem z komputerem i programem HDToolBox. W zależności od wersji Kickstartu potrzebne nam będą dyskietki z AmigaOS 2.1 lub 3.1 – można je również zakupić w Cloanto, jeżeli nie posiadamy odpowiedniej wersji.

  1. Bootujemy komputer z dyskietki install – procedurę którą opisuję wykonałem dla AmigaOS 3.1, jednakże poza jedną drobną zmianą (wybór systemu plików) dla 2.1/2.0 jest taka sama
  2. Na dyskietce znajdujemy program HDToolBox i uruchamiamy go.
  3. Klikamy przycisk Change Drive Type – pokazuje się nowe okno służące do konfiguracji parametrów dysku.
  4. W nowym oknie klikamy „Read Configuration” … system odczyta dane z karty CF jak jej pojemność itp. W przypadku mojej karty HDToolBox nie dał rady odczytać pól z nazwą, producentem i wersją itp (cztery górne pola). Jeżeli tak się stanie wpisujemy tam dane z „palca”, nie jest to ważne dla działania samej karty i możemy tam wpisać co nam się podoba. Pole size pokaże nam totalne bzdury (prawdopodobnie jakąś ujemną liczbę) – nie przejmujemy się tym … po prostu jest to błąd przepełnienia w HDToolbox, nie wpływa to na nic. Po prostu program źle oblicza wielkość.
  5. Klikamy OK i jeżeli wszystko poszło dobrze automatycznie otworzy nam się okno tworzenia partycji.
  6. Ustawiamy wielkość pierwszej partycji na system suwakiem na górze okna – nie powinna ona być większa niż 4GB (jeżeli użyjemy FFS to i tak nam się nie uda większej ustawić ) i zmieniamy nazwę urządzenia na DH0, Klikamy advanced options i wartość buffers ustawiamy na 100-150. W przypadku decyzji o użyciu FFS (gdy nie potrzebujemy PFS) klikamy OK, lub tworzymy kolejną partycję DH1 zmieniając wartość buffers na około 250 dla DH1. Podobnie robimy z DH2 itp .. zależnie od tego ile chcemy mieć partycji. Gdy założymy wszystkie partycje klikamy OK a następnie Save Changes to Drive. Komputer zrobi reboot i jesteśmy gotowi do formatowania.
  7. Jeżeli potrzebujemy lub musimy użyć PFS ( chcemy stworzyć partycję powyżej czwartego GB dysku, lub stworzyć partycję większą niż 4GB – przypominam że DH0 dla bezpieczeństwa zawsze powinna być mniejsza niż 4GB  ) musimy załadować PFS_aio-handler. Aby to zrobić musimy go załadować z jakiejś dyskietki. W oknie tworzenia partycji klikamy Advanced Options a następnie „Add/Update..” w kolejnym oknie wpisujemy gdzie znajduje się plik pfs_aio-handler – ja odpaliłem komputer z dyskietki workbench najpierw i wrzuciłem ten plik do ram dysku, wiec ścieżka pliku to ram:pfs_aio-handler , w pole identyfikatora wpisujemy 0x50465303 (to wartość dla trybu PFS/03)  version – wpisujemy co nam się podoba jako liczba xx.x, Wciskamy OK i na liście systemów plików pojawia nam się, że dodaliśmy nowy system – sterownik pfs_aio-handler jest zapisywany w specjalnym sektorze dysku twardego zwanym RDB (który sam się sam załaduje).
  8. Wracamy do okna partycji i klikamy przycisk „Change” – wybieramy Custom File System. W przypadku AmigaOS 3.1 wybieramy z listy PFS/03, przy starszym (3.0/2.1) musimy wpisać identyfikator systemu ręcznie … wpisujemy 0x50465303 tak jak w oknie gdzie go dodawaliśmy. Zmieniamy pole mask na 0xfffffffc a maxtransfer na 0x1fe00, upewniamy się ze pole auto mount jest zaznaczone. Aha w tym oknie jest dziwny bug — po zmianie jakiejkolwiek wartości ZAWSZE zatwierdzamy ją przyciskiem ENTER. wiec wpisujemy np mask – 0xfffffffc i wciskamy ENTER zanim klikniemy na kolejnym polu – inaczej wartości nie zostaną prawidłowo zapisane.. klikamy ok i nasza partycja PFS jest gotowa… analogicznie postępujemy dla kolejnych partycji, z tym wyjątkiem że nie musimy już robić „Add update” – sterownik dodajemy tylko raz.
  9. Aha nie ciągniemy nigdy ostatniej partycji do samego końca – trzeba zostawić kilka MB wolnych (spowodowane jest to adresacją CHS) inaczej będą problemy z tak ustawionymi partycjami i mogą nam zacząć znikać dane – tak 10MB powinno wystarczyć.
  10. Klikamy save changes to disk … ok … komputer robi reboot.
  11. Po resecie odpalamy znowu dyskietkę install .. na workbenchu powinny nam się pokazać ikonki DH0:???? DH1:??? itp … są to partycje gotowe do formatowania.
  12. Formatujemy zawsze Quick Format !!! Format pełny ma błąd i nie należy go używać na dyskach twardych – w dodatku pełny format może zmniejszyć żywotność komórek NAND karty CF (bezcelowo tracimy czas i cykl zapisu). Format znajduje się w górnym menu w polu „Icon”

Tak przygotowana karta CF jest gotowa do instalacji AmigaOS – odpalamy English z katalogu Install i postępujemy zgodnie z instalatorem systemu… ufff …. gotowe.

Pułapka nr 1 – bugi przepełnienia w HDToolBox

W HDToolbox jest bug (wlasciwie w workbenchu tez) ze partycje większe niż 4GB pokazywane są niby jako mniejsze … czyli pokazuje nam partition size 1GB dla partycji 5GB itp – znowu przekręca się licznik, tą wartość tak na prawdę możemy zignorować.. ważna jest długość pola na „wykresie”. Workbench jak już wspomniałem tez nie radzi sobie z partycjami większymi niż 4GB i będzie nam pokazywał bzdury w belkach okien zamiast prawdziwych wartości wolnego miejsca. Gdy tworzyłem partycję 6GB na gry WHDLOAD z paczki KillerGorilla to strasznie mnie to zdziwiło bo co poustawiałem to mimo iż suwak pokazywał na oko 6GB to size pokazywal 2GB – nie należy się tym przejmować i tyle, niestety jak już wspomniałem Workbench ma ten sam bug … więc partycję 5GB pokaże nam jako 1GB (ale zapisać możemy 5)

Pułapka nr 2 – dysk twardy a … sprawa wolnej ilości RAMu 🙂

O ile w PC możemy sobie zakładać kilka partycji i nie widzimy różnicy w ilości wolnej pamięci to w przypadku Amigi … może się okazać, że jak mamy za duży dysk … zabraknie nam ramu do załadowania workbencha !! Dlaczego tak jest … bo dużo rzeczy w ramie system przechowuje tylko po to żeby móc obsłużyć dysk…a co dokładnie….

  1. system plików … w przypadku PFS plik PFS_aio-handler jest zapisany w specjalnym miejscu na dysku i jest automatycznie ładowany przed załadowaniem AmigaOS do Ramu – jeżeli mamy Amigę z 1MB Chip to … odpuścmy sobie karty powyżej 4GB i uzywajmy tylko FFS ktory jest w ROMie i nie zajmuje nic RAMu
  2. bufory odczytu – to te parametry które ustawialiśmy w HDToolBox .. sa to zarezerwowane miejsca w RAMie na obsługę odczytu/zapisu z partycji – standardowo jest to 30, co zmieniliśmy na 150-200, po co, bo przy 30 dysk działa okropnie wolno. Każda kolejna partycja więc zjada nam RAM. Ja na karcie CF 8GB z trzema partycjami PFS i 2MB chip/0 fast po załadowaniu AmigaOS 3.1 … zostawało mi 800KB wolnej pamięci …  i nie mogłem nawet odpalić directory opus. Więc ilość partycji dobieramy do ilości ramu, czym mniej ramu tym mniej partycji (z jedną partycją FFS po załadowaniu systemu mam 1.7-1.8MB wolnego). Możemy też zostawić wartość 30 dla buforów, oszczędzimy ram kosztem zwolnienia pracy dysku.
  3. scsi.device tez zjada RAM, jezeli ładujemy poprawioną wersję poprzez  poprzez LoadModule w startup-sequence to znika nam kolejne 150 kB ! Czyli jeżeli chcemy korzystać z więcej niż 7.87GB… nie damy rady bez jakiegoś rozszerzenia FastRAM – maksymalna dla Amigi 600 2GB Chip z PFS, scsi.device i 3 partycjami zostawia 500kB !!! 1.5MB to sam RAM potrzebny do obsługi dysku.
  4. Odczyt i zapis jest bardzo wolny jeżeli mamy tylko chip ram, bo bufory dysku są właśnie w tej pamięci. U mnie odczyt z karty wg sysinfo to 600kB/s, przy użyciu rozszerzenia fast ram wartość ta rośnie do ok 1MB/s … jeżeli do tego dołożymy kartę turbo z co najmniej 68020 i ide-speed (ACA Furia itp) to można wyciągnąć prawie 2MB/s
  5. PFS i SFS przyspieszają dysk w stosunku do FFS o 33% .. jeżeli mamy dużo RAMu nie zawracamy sobie głowy starym FFSem nawet dla kart 4GB i mniejszych

Pułapka nr 3 – logika 5V vs 3.3V

Błąd dotyczy niektórych kart CF i dziwnego napięcia naszych Amig. Otóż karty CF w trybie TrueIDE mogą pracować na dwóch typach logiki napięć … 5V lub 3.3V – co to oznacza. Stany logiczne 0 i 1 są oznaczane przez jakieś tam napięcie lub jego brak. 0V to domyślnie 0 a 5V (lub 3.3V w przypadku nowych układów – np. linie GPIO w raspberry pi) to jedynka – oczywiście tak jest w idealnym świecie – wiadomo, że te parametry nigdy nie są idealne, więc przyjęło się jakieś tam „widełki”, które określa standard i typ zastosowanych tranzystorów. Np 0-1.5V jest zerem a 4-5V jedynką itp. W przypadku tranzystorów CMOS logiczną jedynkę określa się np jako 2/3 napięcia zasilania – czyli jeżeli napięcie jest wyższe niż 2/3 z 5V to układ rozpoznaje to jako 1, takie podejście sprawia, że urządzenia mogą pracować praktycznie przy różnych napięciach zasilacza, ale jak są podłączone do tego samego to się „dogadają”. Jak jest z Amigą … o ile zasilacz daje nam napięcie 5V na wtyczce power Amigi to po przejściu przez filtry na płycie głównej to napięcie spada do około 4.8-4.85 V i to jest właśnie nasze VCC czyli punkt odniesienia dla każdego scalaka. Karta CF jednak może nie do końca tak działać … jeżeli jest słabo wykonana może to 4.8 potraktować nie jako 5V i pomyśleć, że pracuje z napięciem 3.3V i wtedy … przeskoczy w tryb logiki 3.3V…. akurat mam taką kartę – widać ją na fotografiach  – to ta z 8GB pojemności firmy Integral, ta obok Sandisk 1GB nie ma tego problemu. Fajnie się składa bo Gayle mimo tego że logika 3.3V powinna z nim nie działać …. to normalnie ta karta dogaduje się z Amigą, jedynym problemem jest … dioda LED aktywności dysku, gdyż jest ona sterowana zwykłym tranzystorem. Objaw jest taki, że po podłączeniu tej konkretnej karty … świeciła mi ta dioda światłem ciągłym. Postanowiłem przeanalizować schemat A600 i coś zaradzić. Zacząłem od zrozumienia jak ta dioda jest sterowana – widać to na rysunku:

Zrzut ekranu 2015-11-14 o 02.51.14Zrzut ekranu 2015-11-14 o 02.55.07

Jak widać dioda LED jest podłączona poprzez rezystor R3 120 Ohm  a jej zapalenie sterowane jest tranzystorem Q631 – Rezystor R3 to po prostu ogranicznik prądu diody do 20mA – żeby się nie spaliła, tranzystor robi za przełącznik zapalający i gaszący. Baza tranzystora podłączona jest to karty poprzez kolejny opornik R632 4.7KOhm na jeden z pinów gniazda IDE (dokładnie to pin 39 na gniazdku IDE), całość podciągnieta jest  dodatkowo do VCC poprzez opornik pull-up R637 – 10 kOhm. Pierwszym pomysłem jaki miałem to zmieścić między kartę a opornik bazy jakiś konwerter logiki z 3.3V na 5V. Problem w tym, że taki nawet najprostszy układ potrzebuje kilka elementów, a za bardzo nie chciało mi się robić płytki PCB (dwa tranzystory i kilka oporników – potem trzeba by przeciąć kabelek od adaptera i wlutować to w środek … brzydki pomysł), są też sposoby wykorzystania tranzystora MOSFET ale akurat takim nie dysponowałem w żadnej szufladzie, więc metodą chałupniczą postanowiłem jakoś obniżyć to 4.8V do 3.3V tak aby tranzystor przestał przewodzić kiedy na pinie 39 pojawia się 3.3V a

Widoczna przeróbka adaptera - w koszulce termokurczliwej znajdują się 2 diody.

Widoczna przeróbka adaptera – w koszulce termokurczliwej znajdują się 2 diody.

zamiast spodziewanego 5V… i tutaj wpadłem na pomysł użycia diody krzemowej, a właściwie dwóch takich diodek połączonych szeregowo … wiadomo, że każda dioda krzemowa posiada pewną cechę – napięcie po przejściu przez diodę spada o około 0.6-0.7V – na dwóch to już około 1.2-1.4V –    4.8-1.4 = 3.4V, czyli prawie tyle co trzeba – powinno wystarczyć, żeby tranzystor się zamknął … i wystarczy 🙂 W dodatku okazało się ze mogłem łatwo przeciąć ścieżkę bezpośrednio na adapterze i dolutować diody bezpośrednio do niego, bez zmiany w płycie głównej czy kabelku IDE… jako wyjście sygnału aktywności z karty wykorzystałem punkt lutowniczy malutkiej diody LED znajdującej się na adapterze – poprzez 2 diody 4n4001 podłączyłem je do 39 nóżki złącza pinowego … voila … dioda LED od dysku gaśnie jak powinna.

 

 

 

 

Schemat ideowy poprawki

Schemat ideowy poprawki

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.