Badam temat interakcji z kartami rozszerzeń, głównie Zorro.
Jako pacjenta wybrałem A2065 w uae - czyli kartę sieciową.
Z amigowej dokumentacji mam opisy autoconfiga, trochę w dokumentacji expansion.library i w inkludach.
Generalnie wszystko ok, ale jak doszedłem do gmerania po rejestrach rozszerzenia, to pojawił się problem. Nie wiem, jak się do tych rejestrów dobrać. Niestety nie mam źródeł amigowego drivera lub softu testowego (np. taki programik Lance-Test) - więc zacząłem to dissasemblować, a to już hardkor. Ten Lance-Test np. podaje MAC address karty, co wyciąga się za pomocą odpowiedniej sekwencji zapisów do kilku rejestrów tej karty.
Znalazłem źródła driverów dla kart z tym chipem na linuksie i atari, ale z nich wynika że adres bazowy jest podawany pewnie z systemu i potem tylko dodaje się do tego offset rejestru i czyta/pisze normalnie jak do pamięci.
Do tego dochodzi dziwne czytanie danych - np. dostęp do ROM urządzenia jest nibblami tak, że z odczytanego 16-bitowego słowa dane zawarte są tylko w 4 bitach, potem to trzeba składać do kupy, jeszcze odwracać bity... Ale nie wiem czy ta sama zasada dotyczy dostępu do rejestów?
Na pewno ma to jakiś związek z adresem cd_BoardAddr za struktury ConfigDev, ale nie udało mi się namierzyć tego. Być może tu nie ma reguły i mapowanie rejestrów jest inne dla każdego urządzenia (offset od boardAddress), ale wszelkie offsety znalezione w źródłach linuksowych i atarowych mi nie zadziałały.
Czy ktoś tu jest w stanie coś doradzić?