«

»

nov 23

Interpretare le Guru Meditations di Amiga

Il terrore di ogni utente Amiga e in assoluto il messaggio di errore più artistico di tutti i tempi:
le “Guru Meditation”.

La testina del drive smette di leggere e il led verde si spegne; quello rosso invece lampeggia.
pochi secondi dopo lo schermo diventa nero e una criptica scritta lampeggiante appare: è la meditazione guru da cui non si torna (quasi) mai indietro.

guru meditations

Una guru meditation in tutto il suo inquietante splendore

Pressando il tasto sinistro difficilmente si otteneva qualcosa. L’unica cosa da fare era rassegnarsi.
(In realtà i programmatori esperti (e dotati di un terminale da connettere alla seriale) potevano sfruttare il fatto che Amiga in caso di meditazione Guru apriva una backdoor e permetteva di scaricare il contenuto della ram via modem con il programma ROMWack che nelle versioni più evolute era un vero e proprio debugger.)

Per anni il significato dei codici di errore di Amiga è stato per me un mistero fino a che non ho trovato per caso un manuale di programmazione C (LatticeC) dell epoca l’AmigaC Manual (se credete che il Plug’n Play, l’interfaccia a icone,il pannello di controllo, la multimedialità siano opera di windows dovete leggerlo!).
Credo che originariamente girasse sulle BBS; io l’ho trovato sul defunto  Back2theRoot.

EDIT 14/02/11:  Back2TheRoot è tornato online, e ne sono felice

[Clicca qui per scaricarlo]
Cito direttamente:

F.4 GURU MEDITATION NUMBERS

There exist two different types of Guru Meditation Numbers:
- CPU Errors (680×0 Processor Traps)
- System Software Errors

F.5 CPU ERRORS

CPU Errors look like this:

Guru Meditation #0000000x.yyyyyyyy

x is one of the following values:

2 Bus Error Hardware error
3 Address Error Word access on odd byte boundary
4 Illegal Instruction
5 Divide by zero
6 CHK Instruction
7 TRAPV Instruction
8 Privilege Violation
9 Trace
A Opcode 1010 Emulation Instruction word with a value
between A000-AFFF.
B Opcode 1111 Emulation Instruction word with a value
between F000-FFFF.

yyyyyyyy is the address of the task which went wrong. (It
is normally your own program that caused the problem.)

If you get a Guru Meditation number like #00000005.00C13870
it means: A program, at the address C13870, tried to devide
a value by zero. Since you now know what the error was you
only need to look at the places where your program can be
forced to devide a value by zero, and it should not take to
long time to find the bug.

F.6 SYSTEM SOFTWARE ERRORS

System Software errors look like this:

Guru Meditation #aabbcccc.dddddddd

The first field of the number tells us if the error is a
Recoverable Error or if it is a Dead End Alert. If the error
is a Dead End Alert the number will start with 8 otherwise it
is 0. (The total screen will also be black, while on
Recoverable Errors the screen is merely pushed down a bit.)

The first field of the number tells us also which Device,
Library or Resource went wrong:

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

A number like 04 means: Recoverable Error in the Intuition
Library. While a number like 84 means: Fatal Error in
the Intuition Library.

The second field (bb) of the Guru Meditation number gives
us the general cause of the problem:

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

So a number like 8201cccc means a fatal error in the Graphics
Library, the problem was caused by not enough memory.

The last field (cccc) before the dot gives some more specific
information. Here is a list of some common Guru Meditation
Numbers: (This information is taken form the headerfile
“exec/alerts.h” [V1.3]:)

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

The number after the dot (dddddd dd) can be three things:
1. Address of the task which went wrong.
2. If the error occured because of some sort of memory
allocation/deallocation, it is the address of that memory
block.
3. If Exec is realy confused the number is 48454C50, which
stands for HELP. (48=H, 45=E, 4C=L, 50=P)

Le guru meditations nascondono un sorprendente numero di dettagli e alla fine danno una descrizione abbastanza precisa dell’errore avvenuto. Dubito che le BSOD di Windows nascondano informazioni così precise….

(con la possibile eccezione dell’errore 48454C50 che però è decisamente divertente)

Share Button

2 comments

  1. stalba

    e quando la schermata meditativa del guru appare su windows??

    1. thedarshan

      Su windows?
      Windows non ha le guru meditations, ha le bsod
      Che funzionano grossomodo alla stessa maniera, se vuoi provare a interpretarle puoi trovare una lista qui

Commenti disabilitati.