Tytułem wstępu chciałbym dodać, że za uszkodzenia sprzętu elektronicznego, tudzież urazy na ciele i duszy doznane przy opisywanych poniżej operacjach nie odpowiadam, a artykuł został napisany jedynie w celu kolekcjonerskim :).

Wyobraźmy sobie taką hipotetyczną sytuację, że zupełnie irracjonalnie decydujecie się na zakup jakiegoś Power Maca. Może nawet nie „jakiegoś”, tylko bardzo konkretnego Power Maca G4 albo G5, obsługiwanego na dodatek przez system MorphOS. Zupełnie teoretycznie logujecie się na Allegro czy innego OLX-a, wyobrażacie sobie, że szukacie fajnego sprzętu w dobrej cenie (a o to wcale nie tak trudno), klikacie w wyimaginowany przycisk „kup teraz”… po czym uświadamiacie sobie, że nie sprawdziliście czy sprzęt posiada kompatybilną z MorphOS-em kartę graficzną (czyli praktycznie dowolny Radeon, który zmieści się do takiego Power Maca). Nagłe podejrzenie mrozi Wam krew w żyłach, po czym zerkacie okiem na specyfikację dopiero co kupionego sprzętu i… zimny pot występuje na Wasze czoło. Obmierzły napis „nVidia GeForce 5200 Ultra” pali Wasze tęczówki żywym ogniem, a w gardle wzbiera nerwowy charkot: „Skąd ja terrraz wezmę kompatybilną karrrtę?!”

Czym w ogóle na pierwszy rzut oka różni się „makowa” karta od „pecetowej”?
Po pierwsze – karty AGP do komputerów Apple mają dodatkowy konektor pomiędzy pinami AGP a backplatem – służy on m.in. do przekazywania zasilania na złącze ADC – gdyż monitory Apple Cinema Display nie mają innego źródła zasilania (UWAGA, karty do G4 mają konektor w nieco innym miejscu niż do G5. Dziękujemy Ci, Steve z Cupertino!). Wiąże się z tym druga cecha tych kart – najczęściej oprócz złącza DVI/D-SUB są wyposażone w złącze ADC (Apple Display Connector). Wygląda ono „trochę jak DVI”, ale jest szersze (35 pinów) i ma zaokrąglone boki. Kolejna sprawa to fakt, że duża część kart do Power Maków G5 ma „rozszerzone” złącze AGP (tzw. AGP Pro) – trudno je pomylić ze „zwykłym” AGP. Część kart nie ma jednak ADC (a co za tym idzie – konektorka), tylko dwa porty DVI, a co gorsza – nie korzysta ze standardu AGP Pro. I co teraz? Ano, patrzymy na kolor laminatu. Dual DVI to wyłącznie karty do Power Maca G5, a one w wersjach applowskich mają wszystkie co do jednej niebieski laminat. Karta jest niebieska i nie ma portu D-SUB? No to przyglądamy się uważniej.

Sytuacja teoretyczna, ale problem zaznaczony w naszym lirycznym wstępie istnieje i będzie się tylko nasilał w miarę jak obecny strumyk z dostępnymi szrotowymi Makami stanie się strumyczkiem, a potem – szybko wysychającą kałużą. Co zatem robić? Jak żyć? Już wyjaśniam. Rozwiązanie jest proste, eleganckie i wymaga jedynie długich godzin wytężonej pracy, ogromnych nakładów finansowych i sporego skilla w posługiwaniu się lutownicą… Żartowałem. Wymaga jedynie trochę zacięcia i dostępu do starego peceta ze złączem AGP.

„Ale właściwie dlaczego?” Spytacie. „Czy MorphOS nie obsługuje „od strzała” zwykłych, pecetowych kart graficznych opartych na układach R500 wzwyż? Po co mi jakieś szrotowe R300?” Otóż nie jest z tym tak różowo. Po pierwsze – jeśli chcemy (a chcemy) akcelerowane sprzętowo 3D, to póki co ograniczeni jesteśmy do kart z układami R300/R400. Po wtóre zaś – przetestowałem kilka nie flaszowanych kart AGP z układem R500, które teoretycznie powinny działać z MorphOS-em (oczywiście dopiero od momentu inicjalizacji systemu, wcześniej ani pod OS X nic nie wyświetlą), ale z żadną nie miałem jak do tej pory szczęścia.

Od czego więc zacząć?

Myślę, że na dobry początek powinniśmy poszukać odpowiedniej „pecetowej” karty. „Odpowiedniej”, ponieważ (proszę to dobrze zapamiętać i podkreślić, najlepiej wężykiem!) nie wszystkie karty da się przeflaszować. Nie do wszystkich dostępne są również applowskie BIOS-y – warto sprawdzić najpierw na stronie The Mac Elite:

http://themacelite.wikidot.com/ati-radeon

Generalnie – z kartami z serii 9000/9200/9500 raczej problemów nie będzie, choć Radeony 9000 nie zadziałają z Power Makiem G5, a 9200 aby zadziałały z komputerami od Apple będą potrzebować przerzucenia jednego rezystorka – o tym później. Karty z serii 9600 i 9800 powinny dać się zaflaszować jeśli (wężykiem!) mają pamięci w obudowie BGA (kwadratowe!). Pamięci TSOP (prostokątne) mają słabsze parametry i taka karta do niczego nam się nie przyda – tu niestety wypada zauważyć, że większość Radeonów 9600 i 9800 na Allegro/OLX to modele, których flaszowanie się nie powiedzie. Czujcie się ostrzeżeni! Wisienką na torcie są karty typu Radeon X800/X850, które mają najlepsze osiągi spośród dostępnych na złącze AGP. Czemu nie nowocześniejsze X1650, czy X1950 – zapytacie? Otóż dlatego, że te teoretycznie mocniejsze modele to nic innego jak karta PCIe z dosmarkanym układem konwertującym (tzw. „mostek Rialto”), który nie jest wystarczająco dobrze wspierany przez dostępne sterowniki (aczkolwiek mały wróbelek powiedział mi, że to się ma zmienić w przyszłości. Ale kto by wierzył małym wróbelkom?). Z tego miejsca szczerze obiecuję Wam, że gdy tylko uda mi się odpalić na moim G5 Radeona w wersji X1950 AGP to opublikuję benchmarki porównawcze, aby rozwiać wszelkie wątpliwości.

Ale! Wracajmy do tematu – kolejną przeszkodą, którą musimy przeskoczyć jest fakt, że zdecydowana większość pecetycznych kart posiada układ BIOS o pojemności szokujących 64 kB. Applowski BIOS zajmuje jakieś 2 razy więcej, więc zapiszemy na naszym flaszu połowę potrzebnych informacji. Nie muszę wspominać, że po takim potraktowaniu nasza karta nie wstanie. Nie ma jednak co wpadać w panikę – mamy dwa wyjścia. Prostsze wygląda tak, że przewidujący użytkownicy Maczków przygotowali specjalne, pocięte wersje ROM-ów, które zmieszczą się w 64 kB (niestety, są pewne minusy – na przykład złącze DVI może odmówić posłuszeństwa w trybie cyfrowym). Drugie wyjście to znaleźć układ flash w odpowiedniej pojemności, wylutować stary i wlutować nowy. Prawda, że proste? Bardzo. Z tym, że wlutowaliśmy na kartę pusty układ, więc karta i tak nie wystartuje. Musimy mieć drugą, w slocie PCI i za jej pomocą przeflaszować sąsiadkę ze slotu AGP nowym, pełnym ROM-em.
Ale my tu gadu gadu, a Wy właśnie rozpakowaliście paczkę z Radeonem 9800XXL, którą przyniósł pocztmistrz… Wróć! XXL?! Dlaczego? Nie ostrzegałem, że tej karty nie da się przeflaszować, mimo że ma obiecujące pamięci, układ R360 i wiatraczek typu Maglev? Acha, to przepraszam. Nie róbcie tego więcej. Rozpakowaliście więc zwykłego Radeona 9800 Pro z pamięciami BGA, wypożyczyliście za kaucją z Muzeum Historii Informatyki peceta ze złączem AGP i nie wiecie co zrobić dalej. Już tłumaczę. Pobieramy z internetów programik ATIflash w archaicznej wersji (w moim przypadku najlepiej działała 3.95), następnie zasysamy odpowiedni plik ROM (co robić jeśli go nie ma – o tym później), nagrywamy całość na bootujące medium (dyskietkę, pendrajw albo płytkę, w zależności od tego co posiadacie i z czego jest w stanie wystartować „wasz” pecet), i wio!

Naszym oczom ukazuje się radosny prompt systemu MS-DOS. Teraz wypada uruchomić naszego flaszera. Jeśli wpiszemy po prostu „ATIFLASH.EXE” to program poczęstuje nas taką liczbą argumentów, że się nam odechce, wpiszmy więc dodatkowo parametr -i:

ATIFLASH -i

Wynikiem będzie wyszczególnienie wszystkich kart AGP, które posiadamy zamontowane. Ponieważ jest tylko jedna, będzie to wyglądać tak:

Przyda się nam numer urządzenia (chociaż w swoim długim życiu nie widziałem komputera z większą ilością slotów AGP niż jeden, a zatem numerek 0), a także wielkość BIOS-u, podana w formie szesnastkowej – jak widać w opisywanym przypadku jest to 10000, czyli obmierzłe 64 kB.

Zanim przejdziemy dalej – ludzie przesądni, ostrożni, paranoicy oraz osoby nie posiadające zapasowej karty na slot PCI, mogą wykonać kopię dotychczasowego ROM-u (korzystając z parametru -s). W przeciwnym wypadku (i nieudanym flaszu) będą się mogli swoją „podrasowaną” kartą co najwyżej powachlować. Wypada wspomnieć, że próba zachowania sobie oryginalnego ROM-u karty uwidacznia wszystkie przewagi napędów zapisywalnych nad optycznymi.

Nadeszła pora na wgranie flasha. Zrobimy to przy pomocy komendy -p, podając kolejno numer urządzenia i plik z ROM-em; a żeby program się nie pluł, wymusimy jeszcze tryb „niechrzańtylkoflaszuj” parametrem -f (inaczej program będzie się rzucał, że ROM nie jest pecetowski – jakbyśmy o tym nie wiedzieli):

Wygląda na to, że operacja się powiodła. Teraz już tylko przelutować rezystor (w przypadku karty 9200/9250, o tym później), albo przetestować kartę w Maczku (w przypadku większości kart będzie potrzebne jeszcze doprowadzenie zasilania – w G5 najprościej jest załatwić sobie splitter i podkraść trochę amperów od napędu optycznego). Z góry uprzedzam, że karta zadziała, albo nie. W pierwszym przypadku gratulujemy sobie oraz autorowi artykułu (można na przykład przysłać kwiatki). W drugim – albo przyjmujemy porażkę na klatę jak prawdziwy mężczyzna, albo kombinujemy dalej (z tym, że bez drugiej karty w PCI raczej się nie obejdzie). A jak? Już piszę.

Dodatek A, czyli „nic nie działa, żądam zwrotu pieniędzy!”

Czasem bywa tak, że źle dobraliśmy ROM, albo „nie pykło” coś bardziej nieuchwytnego. Karta po teoretycznie dobrym flaszu nie inicjuje się ani pod PC, ani pod Makiem, a Wy chodzicie jak struci i wyżywacie się na innych członkach rodziny tudzież zwierzętach domowych. Ratunkiem może okazać się wtedy karta graficzna na PCI (możecie dodać do swojego rachunku w Muzeum Historii Informatyki), przy pomocy której albo przywrócimy oryginalny pecetowy ROM naszej szrotowej karcie, albo zaflaszujemy ją ponownie, tym razem jak trzeba. Skąd jednak wziąć alternatywny ROM? Wystarczy użyć ulubionego narzędzia amigowego krakera sejwów, czyli edytora HEX.

No to po kolei:
1. Bierzemy oryginalny ROM o wielkości 128 kB.
2. Otwieramy go w edytorze i znajdujemy pierwszy szesnastkowy ciąg 12 FC 4A 6F 79 21 i tniemy wszystko, aż do ostatniego ciągu 01 15 01 12 C3 włącznie.
3. Jak gdzieś znajdziemy ciąg 12 19 64 72 69 76 65 72 2C 41 41 50 4C 2C 4D 61 63 4F 53 2C 50 6F 77 65 72 50 43 01 10 – tniemy bez litości.
4. Gratuluję, właśnie wyciąłeś NDRV. Teraz pora po sobie posprzątać.
5. Patrzymy gdzie po raz pierwszy w naszym ROM-ie występuje ciąg F1 08, a następnie odliczamy trzeci bajt od niego i zmieniamy cztery kolejne bajty(zrzut Hex 1) na wartość będącą wynikiem działania (pozycja ostatniego niezerowego bajtu naszego ROMu + 2 – pozycja ciągu F1 08). Skomplikowane? Wcale nie. Popatrzcie:

F1 08 jest – w naszym przypadku – na pozycji 64 (w HEX-ie: 40), ostatni niezerowy bajt – na pozycji 21706 (w HEX-ie: 54 CA), zatem działanie (cały czas szesnastkowo) to: 54 CA + 2 – 40 = 54 8C.

Nasza czterobajtowa grupka powinna więc zmienić swoją wartość na 00 00 54 8C. Detal.

Hex 1 – Bajty w ramce należy zamienić

6. Teraz ostatni krok – jak pamiętacie, nasz ostatni niezerowy był na 54 CA. Znajdujemy mu do kompanii gdzie po raz pierwszy w naszym ROM-ie występuje 00 00 03 – w naszym wypadku jest to 45 (HEX: 2D) – i dzielimy przez 512 (HEX: 200) ich sumę powiększoną o 2 (wartość całkowitą, przecinek sobie odpuśćcie). W naszym wypadku będzie to:

(54 CA + 2 + 2D) / 200 = 2A (i F9 reszty, którą radośnie pomijamy)
Nasz wynik wpisujemy jako wartość kolejnego (po 00 00 03) bajtu w naszym ROMie. Jeśli następujący po nim bajt jest „zajęty” to go zerujemy (zrzut Hex 2).

Hex 2 – Ten bajt należy zamienić

7. ROM gotowy, można spróbować flasznąć

Dodatek B, czyli „gdzie i komu lutnąć?”

Wspominałem wcześniej, że pecetowe karty z serii 9200/9250 oprócz poprawnego zaflaszowania potrzebują jeszcze małej technicznej „sztuczki” w postaci przerzucenia jednego rezystorka na pozycję obok. Konkretnie chodzi o przestawienie go z pozycji oznaczonej (miejmy nadzieję) R229 na pozycję R230. Poniżej (poglądowe) zdjęcie, które pokazuje gdzie mniej-więcej szukać i na co przerzucić. Oczywiście na innych kartach rezystorek może być (i będzie) ukryty w innych miejscach.

Zakreślone fragmenty to para rezystorów „przed” i „po” zamianie miejscami

Ponieważ opór tego malutkiego rezystorka raczej nie ma znaczenia dla działania karty, ci z nas którzy nie czują się dobrze z lutownicą w dłoni mogą po prostu usunąć rezystor z pierwotnej pozycji, a następnie „zalepić” pady w pozycji R230 kulką cyny (słyszałem nawet o metodzie „na lakier do naprawy podgrzewanych szyb”).

Dodatek C, czyli „do starych komputerów konieczna zalepa”

Wczesne PowerMaki wyposażone są w złącze AGP x4 (albo i nawet x2), a większość kart pecetowych ma złącze x8. Taka karta, nawet poprawnie zaflaszowana, włożona do slotu x4 wywoła efekt „pyknięcia z zasilacza”, a nasz komputer nie uruchomi się. Konieczne będzie albo odcięcie, albo zamaskowanie taśmą dwóch pinów na konektorze – a konkretnie tych o numerze 3 i 11 (strona „spodnia”, czyli odwrotnie niż GPU, liczymy kolejno od backplate’a). Do akcji wchodzi rolka taśmy klejącej oraz nożyk/skalpel, a piny o które chodzi to te ze zdjęcia:

Zalepione? Świetnie. To teraz można już działać.

Wszystkim niedoszłym, obecnym i przyszłym flaszerom życzę wszelkiego powodzenia i jak najmniej spalonych kart na sumieniu.­

Do zobaczenia w następnej szkółce!

’recedent’ – Amiga NG (4) 3/2018

—> do spisu artykułów