Odwiecznym problemem ludzkoōci jest zrozumienie jėzyka guru - jėzyka, który mówi nam co dzieje siė śle i jak moūna temu zaradziź :-)
Wiėkszoōź opisów komunikatów guru podaje tylko suche liczby oraz ich skrótowā interpretacjė. Nie piszā natomiast prawie wcale jaka jest skīadnia komunikatów i w jaki dokīadnie sposób naleūy je interpretowaź.
Ja nie podam tu listy znanych mi numerów guru - numery te moūna wziāź z:
Program "The Guru 3.0" moim zdaniem jest najlepszy dla wszystkich poszukiwaczy guru. Powinien znajdowaź siė na którymō z dysków Fatka :-) {Jubal: napisz tu katalog i plik, gdzie to siė znajduje}
Zanim przejdė do omawiania skīadu komunikatu odpowiem jeszcze na pytanie autora artykuīu w Fat 18.
Autor pisze, ūe nie wie który z numerów oznacza DEADEND ALERT a który RECOVERY ALERT. Otóū wystarczy pooglādaź przez pewien czas komunikaty guru naszej Amisi aby zaobserwowaź, ūe gdy wystāpi bīād typu RECOVERY ALERT (róūne śródīa podajā róūny kolor tej ramki. Wedīug mnie jest ona ūóīta ale spotykam siė z twierdzeniami ūe jest bursztynowa lub pomaraļczowa :-) to numer guru NIE zaczyna siė od 8. Natomiast gdy pojawi siė DEADEND ALERT (czerwona ramka) to numer zaczyna siė wīaōnie od 8-ki. Nie wiem czy autorowi nie chciaīo siė przyglādaź komunikatom guru czy teū zbytnio zawierzyī opisowi komunikatów w nr. specjalnym magazynu Amiga, który wprowadza czytelników w bīād opisujāc bīėdy zaczynajāce siė na 8 jako bīėdy "do naprawienia" i odwrotnie. Mniejsza o to.
+----------------------------------------------------------------------+ | Software failure. Press left mouse button to continue. | | | | Error: 87654321 Task: 12345678 | +----------------------------------------------------------------------+
Zajmijmy siė teraz komunikatami guru.
W czerwonej lub ūóītej (bursztynowej, pomaraļczowej bādś zīotej ;-) ramce pojawiajā siė dwia waūne numery (zapisane w systemie szesnastkowym) poprzedzone napisami "Error" i "Task"
Zajmijmy siė najpierw numerem Tasku. Jest on na szczėōcie przez wszystkie śródīa interpretowany jednoznacznie. Jest to po prostu adres zadania, które wywoīaīo bīād. Moūna wiėc uruchomiź jakiō monitor lub debugger i pod tym adresem oglādnāź sobie ze wszystkich stron nasz niefortunny programik.
Najwaūniejszy jednak jest numer bīėdu pojawiajācy siė po napisie "Error". Wīaōnie te numery bīėdów moūna podaź wspomnianemu programowi The Guru aby uōwiadomiī nam ich znaczenie. Zgodnie z opisem autora tego programu numer bīėdu moūna podzieliź na nastėpujāce typy:
Komunikaty procesora informujā o bīėdach typu dzielenie przez zero lub próba zapisu sīowa pod nieparzystym adresem. Komunikatów takich jest tylko kilka. Ich numery zaczynajā siė siedmioma zerami i tylko ostatnia ósma cyfra mówi o typie bīėdu. Znane mi numery bīėdów procesora to wiėkszoōź cyfr z zakresu od 0 do 1F. Zainteresowanych odsyīam do programu The Guru, który wyōwietla te komunikaty.
Specyficzne numery to numery generowane przez róūne czėōci systemu jak biblioteki lub device'y. Kaūdy z tych numerów ma swoje znaczenie. Niektóre programy produkujā wīasne numery guru.
Generalne numery guru to numery, które skīadajā siė z pewnych pól, z których kaūde ma swoje znaczenie. Ten typ numerów jest opisany poniūej. Skīada siė on z czterech czėōci:
+-------------+----------+-------------------+
Cyfry | 00 | 00 | 0000 |
+---+---------+----------+-------------------+
| 0 | 0000000 | 00000000 | 00000000 00000000 |
+---+---------+----------+-------------------+
| | | | | | |
Bity : 31 30 24 23 16 15 0
Tak wiėc bity 24-31 oznaczajā dwie pierwsze cyfry numeru guru (z czego bit 31 ma specjalne znaczenie), 16-23 to dwie nastėpne a 0-15 to cztery ostatnie cyfry naszego komunikatu.
Oto znaczenie kolejnych czėōci:
Bit 31-szy decyduje o wspomnianym juū wczeōniej rodzaju bīėdu. Jeōli jest zapalony (równy 1) to bīād jest typu DEADEND ALERT (ramka czerwona), zgaszony natomiast produkuje bīād RECOVERY ALERT (ramka ūóīta, bursztynowa, pomaraļczowa, zīota czy jaka tam chcecie.. ;-). w przypadku kickstartu 1.3 - RECOVERY ALERT nie istnieje - wszystkie bīėdy pojawiajā siė w czerwonej ramce i powodujā restart komputera.
Bity 24-30 okreōlajā czėōź systemu, która wywoīaīa bīād. Bīād taki moūe byź spowodowany przez którāō z bibliotek, device'ów, portów (z róūnych opisów wynika ūe bīād moūe spowodowaź nawet port 'composite video'!) oraz uszkodzenie komputera (o tym póśniej). Bity te mogā zawieraź liczby od 00 do 35.
Bity 16-23 okreōlajā operacjė podczas której wystāpiī bīād. nie chodzi to o operacje typu dzielenie przez zero lub próba dostėpu do nieparzystego adresu gdyū to sā bīedy procesora. Bity te okreōlajā bīėdy podczas operacji typu otwieranie bibliotek/deviców, przydzielanie pamiėci, operacje I/O (wejōcia-wyjōcia) itp. Bity te mogā zawieraź liczby od 01 do 0B.
No i wreszcie ostatnie bity 0-15 okreōlajā miejsce bīėdu (zawierajā liczby od 8001 do 1035). Nie jest to to samo co bity 24-30. Przykīadowo bīād moūe zaistnieź w bibliotece graphics.library spowodowany brakiem pamiėci ale guru moūe byź wywoīane przez intuition.library, która wīāōnie do biblioteki graphics siė odwoīywaīa. Bīād taki bėdzie miaī numer #04018002 lub 84018002 (odpowiednio RECOVERY). Proponujė wpisaź ten numer do programu The Guru 3.0.
W instrukcji do programu Autor podaje jeszcze jeden przykīad: Biblioteka dos.library nie moūe otworzyź urzādzenia timer.device.
Naleūy siė zastanowiź czy jest to bīād powaūny (DEADEND ALERT) czy nie (RECOVERY ALERT). Fakt, ūe jedna czėōź kickstartu nie moūe uzyskaź dostėpu do innej moūe (choź nie musi) wskazywaź na doōź powaūny bīād (np. jakiō program mógī zamazaź jakieō struktury w pamiėci RAM, które wskazywaīyby na timer.device) tak wiėc zapalamy 31-szy bit - $80000000
Pierwsze dwie cyfry (bez bitu 31) oznaczajā wīaōnie czėōź systemu, która wywoīaīa bīād a wiėc dos.library - $07000000
Nastėpne dwie okreōlajā operacjė. W tym wypadku niemoūnoōź otwarcia urzādzenia czyli $00040000
Nastėpne cztery mówiā o czėōci systemu, która jest miejscem bīėdu. W tym wypadku timer.device czyli $00008015
I juū mamy gotowy numer guru. Wystarczy tylko poskīadaź wszystko w caīoōź:
$80000000 $07000000 $00040000 $00008015 --------- $87048015
Autor proponuje sprawdziź ten numer w programie. To naprawdė dziaīa.
Pozostaīa juū tylko jedna sprawa. Chodzi o bīėdy kickstartu. Jak podaje kilka śródeī istniejā teū bīėdy zaczynajāce siė na cyfry B1 i oznaczajāce bīād kickstartu. Z opisu w numerze specjalnym MA wynika, ūe jest to bīād typu generalnego tzn skīada siė z czterech czėōci opisanych powyūej. Wedīug mnie jest to jednak bīād typu specjalnego tzn konkretne numery majā konkretne znaczenie poniewaū nie da siė zestawiź takich numerów bīėdów jakie sā przykīadowo podane z numerów dostėpnych dla czterech czėōci numeru typu generalnego. Przykīadowo dla bīėdu nr. B1000001 (nie moūna znaleśź systemowego fonta topaz 8) jego ostatnie 4 cyfry "0001" nie sā wogóle zdefiniowane dla bīėdów generalnych. Nr specjalny MA informuje, ūe bīėdy tego typu oznaczajā uszkodzenie kickstartu i wymagajā ingerencji serwisu ale na szczėōcie zdarzajā siė bardzo bardzo rzadko.
Myōlė, ūe rzuciīem trochė ōwiatīa na maīo znane dotād numery i zasady posīugiwania siė nimi. Jeūeli ktoō z was ma coō do dodania do zawartych tu wiadomoōci to zapraszam do napisania artykuīu do Fat Agnusa.
Na koniec numer guru, którego znaczenia nie jestem w stanie dojōź. Pewnego razu podczas zwykīych operacji czytania dysku moja Amiga (ESCOM A1200) z niewiadomych powodów nagle przestaīa dziaīaź. Po resecie moim zdumionym oczom ukazaīa siė czerwona ramka z zagadkowym numerem bīėdu: D3464A46. Nigdzie nie ma nawet ōladu podobnego numeru. Najbliūszymi z podobnych sā opisane powyūej numery zaczynajāce siė na B1xxxxxx. Niemniej jednak po resecie moja Amisia dziaīaīa poprawnie i nie wymagaīa interwencji serwisu. Podejrzewam, ūe numer ten spowodowaīo jakieō zwarcie na rozszerzeniu 4Mb FastRam, kiedy przycisnāīem trochė mocniej pīytė klawiatury (komputer trzymam przez caīy czas rozkrėcony). Numer ten ōwiadczy o tym, jak bardzo dopracowany jest system operacyjny Amigi, ūe moūe rozpoznaź nawet takie przypadki.
Informacja dla koderów: Pod adresem $100 znajduje siė dīugie sīowo, które jest numerem ostatniego guru (jeūeli oczywiōcie przed startem systemu wystāpiīo jakieō guru, w przeciwnym wypadku sā tam jakieō ōmieci).