mercoledì 27 novembre 2019

Amiga Guru Meditation

Articolo scritto da Faber Pixel

Amiga Guru Meditation

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.

Tipico Guru Meditation

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)

Tipico Recoverable Alert


Nessun commento:

Posta un commento