Apple Desktop Bus

Z Wikipedii, wolnej encyklopedii
Gniazdo żeńskie ADB, widok od przodu

Apple Desktop Bus (ADB)magistrala do podłączania urządzeń peryferyjnych w komputerach firmy Apple od 1986 do 1998, kiedy to zastosowano porty USB.

Magistrala ADB przeznaczona była do przyłączania urządzeń (najczęściej wejściowych, chociaż pojawiły się również monitory obsługiwane przez ten interfejs) o niskiej szybkości przesyłu danych, do 154 Bps.

Możliwe było obsłużenie do 16 urządzeń, przy czym Apple zalecało podłączanie góra 3, na odległość do 5 m, kablem o pojemności nie większej od 100 pF/m.

Sygnały na poszczególnych pinach[1]:

  1. ADB – dwukierunkowa szyna danych
  2. PSW – włącznik prądu (do włączania komputera)
  3. +5V – zasilanie maks. 500 mA, każde urządzenie maks. po 100 mA, linia zabezpieczona bezpiecznikiem
  4. GND – masa

Historia[edytuj | edytuj kod]

Dawniej stosowana klawiatura ADB do komputera Macintosh

Magistrala ADB została stworzona przez Steve Wozniaka, szukającego w połowie lat 80. projektu, w który mógłby się zaangażować. Otrzymał on sugestię, by opracować nowy system podłączania urządzeń takich, jak myszki i klawiatury – taki, który wymagałby tylko prostego kabla do połączeń łańcuchowych, który miał być dodatkowo niedrogi. Pogłoski mówią, że Wozniak zniknął na miesiąc, a po powrocie zaprezentował szynę ADB.

Pierwszym komputerem wyposażonym w nową magistralę był Apple IIGS, który na rynku zadebiutował w roku 1986. Z ADB korzystały również wszystkie późniejsze produkty serii Apple Macintosh, włącznie z Macintosh II i Macintosh SE. Następcą portu był USB, który zadebiutował w modelach iMac w roku 1998. Magistrala ADB obecna była również w ostatniej wyprodukowanej serii komputerów NeXT, które znane był pod nazwą "Turbo ADB".

Dziś konstruowane komputery nie wykorzystują już magistrali ADB, ale do lutego 2005 komputery przenośne PowerBook i iBook korzystały z niej wewnętrznie, do komunikacji ze zintegrowaną klawiaturą i touchpadem. Później połączenia wewnętrzne realizowano również w standardzie USB.

Komunikacja[edytuj | edytuj kod]

System ADB bazuje na zdolności urządzeń do zdekodowania pojedynczej wartości (adresu) i do przechowania pewnej liczby porcji informacji (rejestrów). Do transmisji danych wykorzystywany jest tylko jeden przewód, co umieszcza magistralę wysoko na liście najtańszych szyn. ADB można zaimplementować za grosze, gdyż nawet wtyczka kosztuje więcej, niż wymagane oprzyrządowanie.

Przepływem informacji po szynie steruje komputer, wysyłający żądania odczytu lub zapisu danych. Urządzenia nie mogą żądać dostępu do szyny, jeśli nie zezwoli na to komputer. Żądania przyjmują formę jednobajtowych ciągów. Cztery początkowe bity zawierają adres, identyfikator jednego z urządzeń łańcucha, co oznacza możliwość podłączenia do jednej szyny maksymalnie 16 urządzeń. Następne dwa bity oznaczają jedno z czterech poleceń, ostatnie zaś wskazują na jeden z czterech rejestrów. Polecenia to:

  • talk – wysłanie zawartości rejestru do komputera
  • listen – ustawienie rejestru na podaną wartość
  • flush – wyczyszczenie zawartości rejestru
  • reset – wysłanie sygnału zerowania do wszystkich urządzeń szyny

Dla przykładu, jeśli komputer wiedział, że mysz znajduje się pod adresem $D, co pewien czas wysyłał on na szynę żądanie wyglądające mniej więcej tak:

1101 11 00

Oznacza to, że urządzenie $D (1101) powinno wysyłać zawartość rejestru do komputera (11) i ustawiać swój rejestr w stan początkowy (00). W przypadku myszy tłumaczyło się to jako „pokaż mi swoją ostatnia pozycję”. Pojemność rejestrów urządzeń wahała się od 2 do 8 bajtów. Rejestr zerowy był najczęściej głównym kanałem komunikacyjnym, a rejestry 1 i 2 nie były zdefiniowane, najczęściej służąc do przechowywania informacji konfiguracyjnych w urządzeniach firm trzecich. Rejestr 3 zawsze zawierał informacje pozwalające na identyfikację urządzenia.

Adresy i kolejność urządzeń zawsze były ustawiane na wartość domyślną podczas zerowania (reset). Dla klawiatur była to wartość $2, myszom odpowiadała $3. Podczas startu systemu, sterownik urządzeń ADB wysyłał polecenia talk, zapytując wszystkie znalezione urządzenia o adres domyślny, zapisany w rejestrze trzecim. Jeśli z danego adresu nie nadeszła odpowiedź. system oznaczał go jako martwy i nie wysyłał więcej zapytań.

Jeśli urządzenie odpowiedziało na żądanie, odpowiedź oznaczała przejście urządzenia pod losowo wybrany adres „wyższego szczebla”. Komputer odpowiadał wysłaniem pod ów adres kolejnego zapytania, przenosząc urządzenie w jeszcze inne miejsce. Po pomyślnym zakończeniu tego procesu, urządzenie określane było jako „działające”, a system mógł do niego w trakcie pracy wysyłać żądania.

Mimo że nie było to często praktykowane, w przypadku szyny ADB istniała możliwość podłączenia do komputera więcej niż jednego urządzenia danego typu – dwóch tabliczek graficznych czy kluczy zabezpieczających oprogramowanie. W takim przypadku mogło dość do kolizji, jeśli komputer wysyłał zapytania o adresy domyślne, a obydwa urządzenia odpowiedziały.

Poszczególne peryferia rozwiązywały ten problem za pomocą prostego licznika czasu. Po otrzymaniu zapytania czekały przez losowy czas przed wysłaniem odpowiedzi, zaś przed samą transmisją sprawdzały, czy szyna jest wolna. Jeśli rzeczywiście do komputera podłączono dwa klucze zabezpieczające, ten, który zwlekał dłużej z wysłaniem odpowiedzi na zapytanie stwierdzał, że szyna jest zajęta i nie wysyłał potwierdzenia. System wysyłał ponownie zapytanie pod ten sam adres, lecz urządzenie, które odpowiedziało jako pierwsze zostało do tego czasu przeniesione pod inny adres, nie miało więc możliwości zareagowania. Odpowiadało więc urządzenie, które wcześniej „spóźniło się” z potwierdzeniem. Proces powtarzany był do momentu, gdy spod domyślnego adresu nie nadchodziła żadna odpowiedź, co oznaczało, że do komputera nie podłączono więcej urządzeń danego typu.

Szybkość transmisji danych w łączach ADB teoretycznie wynosiła 125 kilobitów/sek. Jednak prędkość rzeczywista rzadko dochodziła do połowy tej wartości, gdyż wszystkie urządzenia komunikowały się z komputerem za pomocą jednej żyły przewodu. W warunkach normalnej pracy prędkość ta spadała jeszcze niżej, gdyż była ona uzależniona od częstotliwości wysyłania przez komputer sygnałów do szyny. System operacyjny Mac OS niezbyt dobrze radził sobie z tym zadaniem, więc szyna najczęściej przesyłała dane z szybkością 10 kilobitów/sek.

Kolejnym kłopotem było to, że choć standard ADB przewidywał korzystanie z polecenia reset, urządzenia nie miały możliwości wysłania samorzutnie do szyny informacji o zmianie swojego stanu. Oznaczało to, że przy zmianie stanu szyny, na przykład po podłączeniu nowego urządzenia, komputer nie był o tym fakcie informowany. Niemożliwe było więc odłączanie i podłączanie komponentów komputera „w locie”, choć technicznie dałoby się to zrealizować wykorzystując żyłę PSW.

Problemy[edytuj | edytuj kod]

Podłączanie urządzeń po uruchomieniu komputera nie było bezpieczne (inaczej niż ma to miejsce w przypadku nowocześniejszych urządzeń USB), co było praktykowane na przykład po przypadkowym odłączeniu się myszy. Takie działanie skutkowało najczęściej przepaleniem wlutowanego w płytę główną bezpiecznika. Wizyta z tak potraktowanym komputerem w serwisie kończyła się najczęściej wymianą całej płyty głównej, co było dość drogie. Prostszym rozwiązaniem było samodzielne zdobycie odpowiedniego bezpiecznika i podłączenie go drutem do płyty głównej, równolegle z przepalonym elementem wlutowanym przez producenta (taki zabieg najczęściej nie wymagał nawet lutowania, jeśli użytkownik wiedział, co robi).

Żywotność stosowanych wtyczek szacowano tylko na 400 wsunięć w gniazdo. Szpilki łatwo było zgiąć podczas nieostrożnego podłączania.

Przypisy[edytuj | edytuj kod]

  1. ADB Port. developer.apple.com, 5 stycznia 1999. [dostęp 2023-11-29]. [zarchiwizowane z tego adresu]. (ang.).

Linki zewnętrzne[edytuj | edytuj kod]