Amiga Guru Meditation
di Faber Pixel

Torna alla lista degli articoli

Link al gruppo facebook: Retrocommodore

Quante volte ci sarà capitato usando Amiga di imbatterci nel fastidioso Guru meditation!
Schermo nero con rettangolo rosso in alto e una serie di codici.
Quando succedeva, non rimaneva altro che premere il tasto sinistro del mouse e sperare di non incapparci di nuovo.
Quasi tutti resettavano senza capire bene cosa fosse successo, dando spesso e volentieri la colpa al floppy danneggiato.
Si buttava e se ne passava ad un altro: Amen.
In realtà quel rosso rettangolo della morte ci forniva molte indicazioni di cosa fosse realmente successo e ora cercherò di darvene una chiave di lettura.
Innanzitutto c’erano due tipi di Guru: dati da errori della CPU e dati da errori del software di sistema.
Vediamoli nel dettaglio.

- Errori CPU
si riconoscono da questa stringa: Guru Meditation #0000000x.yyyyyyyy

Dove x ha uno dei seguenti valori:

2 Bus Error Hardware
3 Address Error Word accesso su limite di byte dispari
4 Illegal Instruction
5 Divide by zero
6 CHK Instruction
7 TRAPV Instruction
8 Privilege Violation
9 Trace
A Opcode 1010 Emulation Instruction word con un valore tra A000-AFFF.
B Opcode 1111 Emulation Instruction word con un valore tra F000-FFFF.

Mentre yyyyyyyy è l'indirizzo del task che è andato storto. (E’ normalmente il programma che si sta utilizzando che ha causato il problema).

Pertanto se si ottiene un numero di Guru meditation come #00000005.00C13870 significa che un programma, all'indirizzo C13870, ha causato un errore di Divide by Zero. Basterà pertanto verificare in che punto il programma ha cercato di eseguire questa operazione e correggere il bug.

- Errori di software di sistema
si riconoscono da questa stringa: Guru Meditation #aabbcccc.dddddddd

Il primo campo della prima stringa (aa) ci dice se l'errore è un Recoverable Error o se si tratta di un Dead End Alert. Se l'errore è un Dead End Alert il numero inizierà con 8 altrimenti è 0. (Lo schermo sarà nero con scritte e rettangolo rosso nel caso di Dead End Alert, mentre con un Recoverable Error Alert lo schermo è di un nero più chiaro e rettangolo e scritte giallo senape)
Il primo campo della prima stringa ci dice anche quale dispositivo,Libreria o risorsa, è andato storto:

01 Exec Library LIBRARIES
02 Graphics Library
03 Layers Library
04 Intuition Library
05 Math Library
06 CList Library
07 AmigaDOS Library
08 RAM Handler Library
09 Icons Library

10 Audio Device DEVICES
11 Console Device
12 GamePort Device
13 Keyboard Device
14 Trackdisk Device
15 Timer Device

20 CIA Resource RESOURCES
21 Disk Resource
22 Misc Resource

30 BootStrap OTHERS
31 Workbench
32 Disk Copy

Pertanto un numero come 04 significa: Recoverable Error nella Intuition Library. Mentre un numero come 84 significa: Dead End Alert nella Intuition Library.

Il secondo campo (bb) della prima stringa di Guru Meditation Guru ci dà la causa generale del problema:

01 No Memory
02 Unable to Create Library
03 Unable to Open Library
04 Unable to Open Device
05 Unable to Open Resource
06 Input/Output (I/O) Error
07 No Signal

Pertanto una stringa come 8201cccc significa un errore fatale nella Graphics Library, problema spesso causato per non avere sufficiente memoria.

L’ultima parte della prima stringa (cccc) ci dà informazioni più specifiche:

Exec Library:
01000000
81000001 68000 exception vector checksum
81000002 Execbase checksum
81000003 Library checksum failure
81000004 No memory to make library
81000005 Corrupted memory list
81000006 No memory for interrupt servers
81000007 InitStruct() of an APTR source
81000008 A semaphore is in illegal state
81000009 Freeing memory already freed
8100000A Illegal 68k exception taken

Graphics Library:
02000000
82010000 Graphics out of memory
82010006 Long frame, no memory
82010007 Short frame, no memory
02010009 Text, no memory for TmpRas
8201000A BltBitMap, no memory
8201000B Regions, memory not available
82010030 MakeVPort, no memory
82011234 Emergency memory not available *

Layers Library:
03000000
83010000 Layers out of memory

Intuition Library:
04000000
84000001 Unknown gadet type
04000001 Recovery form of AN_GadgetType
84010002 Create port, no memory
04010003 Item plane alloc, no memory
04010004 Sub alloc, no memory
84010005 Plane alloc, no memory
84000006 Item box top < RelZero
84010007 Open screen, no memory
84010008 Open screen, raster alloc, no memory
84000009 Open sys screen, unknown type
8401000A Add SW gadgets, no memory
8401000B Open window, no memory
8400000C Bad State Return entering Intuition
8400000D Bad Message received by IDCMP
8400000E Weird echo causing incomprehension
8400000F Couldn’t open the Console Device

Amiga DOS Library:
07000000
07010001 No memory at startup
07000002 EndTask didn’t
07000003 Qpkt failure
07000004 Unexpected packet received
07000005 Freevec failed
07000006 Disk block sequence error
07000007 Bitmap corrupt
07000008 Key already free
07000009 Invalid checksum
0700000A Disk Error
0700000B Key out of range
0700000C Bad overlay

RAM Library:
08000000
08000001 No overlays in library seglists

Trackdisk Device:
14000000
14000001 Calibrate: seek error
14000002 Delay: error on timer wait

Timer Device:
15000000
15000001 Bad request
15000002 Power supply does not supply ticks

Disk Resourcek.resource:
21000000
21000001 Get unit: already has disk
21000002 Interrupt: no active unit

BootStrap:
30000000
30000001 Boot code returned an error

La seconda stringa (dddddddd) può essere tre cose:
1. L’indirizzo del task che è andato storto.
2. L'errore si è verificato a causa di qualche tipo di allocazione / deallocazione della memoria, è quindi l'indirizzo di quel blocco di memoria

3. Se Exec è davvero in confusione, il numero è 48454C50, che sta per HELP. (48 = H, 45 = E, 4C = L, 50 = P)



Articolo di Faber Pixel

Torna alla lista degli articoli