Volver menú revistas Fanzine
Número 1 - JULIO 1992
Página anterior


GURUS Y GURUSITOS

(c) Warlord

 > LOAD DEMO.S
 OK
        ......
        Cmove   $28c1,Diwstop   ; Display Window X + Y Stop
        Cmove   $38,Ddfstrt     ; Data Fetch Start
        Cmove   $d0,Ddfstop     ; Data Fetch Stop
        Cmove   $0,Bpl1mod      ; Odd Bitplane Modulo
        Cmove   $0,Bpl2mod      ; Even Bitplane Modulo
        Cmove   $1200,Bplcon0   ; Bitplane Control Register
plane1l Cmove   $0000,Bpl1ptl   ; Address Pointer Lower Word
plane1h Cmove   $0000,Bpl1pth   ; Address Pointer Upper Word
        Cmove   $000,color00    ; $dff180 colour 0
        ......
 > ASSEMBLE
 Pass 1
 Pass 2
 550 lines assembled into 670 bytes executable relocatable code
 40345 bytes used
 OK
 > RUN
                  Software error - task held
                  Finish ALL disk activity
                  Select CANCEL to reset/debug

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Aaaaaaaaaaaaahhhhhhhhhhhhhhhh !!!!!!!!!!!

¡¡ OTRO GURU !! ¿¿ POR QUE?? ¿¿ QUE HE HECHO YO PARA MERECER ESTO ??

¡ LOS ODIO ! ... ¡ODIO A LOS GURUS! ... ¡ME VENGARE! ... ¡¡ VENGANZA !! ...


Esta es la reacción típica de un esforzado programador ante la agradable visita de nuestros amigos los gurus. ¡Pero no debiera de ser así!, ¡Debemos recibirles bien! ... Decirles: ¡Oh gracias señor guru!, ¡encantado de que me visite!, ¿y por qué?, porque nos dá la información exacta de dónde se ha cometido nuestro fallo:

       Software Failure.       Press left mouse button to continue.
               Guru Meditation #02010009.00009310

Para los curiosos, vamos a intentar explicar mas o menos su significado. De todos modos explicar todos los terminos que aquí aparecen sería como escribir aquí el "Rom Kernel Manual", al que remito a los interesados.

  Codigo especifico del error -----+         +--- Direccion de trabajo
                                   |         |      "Task address"
                            02 01 0009 . 00009310
                             |  |
      Numero del subsistema -+  +--- Codigo general del error

La "Task address" es simplemente la dirección de la RAM a donde apuntaba cuando se produjo el error. En nuestro ejemplo ocurrió en la dirección 9310 (en hexadecimal). En este caso ello significa que ocurrió en el " CLI process number 1 " (Proceso 1 del CLI). Si estás depurando (debugging) un programa que utiliza muchas direcciones distintas esto puede serte útil. Esto me informa de que el problema estaba en mi programa y no el sistema.

En la parte izqda aparece un numero formado por tres campos:

Los primeros dos digitos, nos dice que módulo del sistema operativo arrojó el error. En nuestro ejemplo era el 02, que nos informa de que el error ocurrió en la "graphics library" (libreria de gráficos)

El primer digito es aún mas divertido. El bit mas significativo de este dígito nos dice si el sistema se puede recuperar o no. Si el número hubiese sido 82 en lugar de 02, hubiera significado la muerte fulminante y posterior reseteo del amiga. La notación hexadecimal puede dar lugar a confusión. Si el primer de los digitos es mayor que 7 (hexadecimal) entonces réstale 8. Así, si hubiese sido B1, (A=10, B=11, C=12, D=13,E=14,F=15) al restarle 8 queda:

             B - 8  = 3
                     \|/
     Nos queda pues: 31.

Esto quiere decir que el error lo dio el Workbench. La tabla de los codigos de identificación es:

          Exec Library        01     Console Device      11
          Graphics Library    02     GamePort Device     12
          Layers Library      03     Keyboard Device     13
          Intuition Library   04     TrackDisk Device    14
          Math Library        05     Timer Device        15
          CList Library       06     CIA Resource        20
          DOS Library         07     Disk Resource       21
          RAM Library         08     Misc Resource       22
          Icon Library        09     BootStrap           30
          Audio Device        10     Workbench           31

Los dos digitos siguientes especifican el tipo general de error que ha ocurrido.La mayoria de las veces es 00,aunque tambien pueden ser otros como se indica a continuacion. En nuestro caso es el 01, lo que viene a
significar que la libreria de graficos no ha sido capaz de encontrar suficiente memoria libre.

     Memoria insuficiente      01    error de apertura de dispositivo  04
     error al crear libreria   02    error de apertura de medio        05
     error de apertura de lib. 03    error de entrada/salida           06

Los cuatro últimos dígitos del numero de alerta, nos dan información específica del error. La interpretación de este depende del codigo del subsistema. Pueden aparecer numeros iguales con significados distintos. En nuestro ejemplo el codigo especifico es el 0009. Como hablamos de un error en la libreria de gráficos,podemos determinar que el error es el llamado "TextTmpRas" que indica un fallo en la llamada a la rutina de texto (que imprime un caracter en la pantalla), pues ésta se ha que dado sin memoria al intentar asignar memoria para la estructura de datos.

Un caso especial es el causado por una trampa (trap) del 68000 (por ejemplo se ejecuta un codigo ilegal). Su ejecucion causará una alerta. Cuando esto suceda,la parte izquierda del guru será un valor pequeño, mientras el codigo del subsistema y el codigo general serán 0. Los "numeros trampa" son parte del chip 68000, y no son asignados por la ROM como los demás códigos.La mayoria de ellos no son mostrados por el ordenador. La siguiente, es una lista de los posibles errores:

       Error de Bus           02      Violacion de privil.   08
       Error de direccion     03      Rasto de la instr.     09
       Instruction ilegal     04      Emulacion linea A      0A
       Divides por 0          05      emulacion linea F      0B
       instruccion CHK        06      TRAP 0 ... 15          20 ... 2F
       TRAPV (sobrecarga)     07

La siguiente es una lista de los codigos especificos de error:

    Exec Library
    ExcptVect      81000001
    BaseChkSum     81000002
    LibChkSum      81000003
    LibMem         81000004
    MemCorrupt     81000005
    IntrMem        81000006
    Graphics Library
    CopDisplay     82010001
    CopInstr       82010002
    CopListOver    82000003
    CopIListOver   82000004
    CopListHead    82010005
    LongFrame      82010006
    ShortFrame     82010007
    FloodFill      82010008
    TextTmpRas     02010009
    BltBitMap      8201000A
    Intuition Library
    GadgetType     84000001
    CreatePort     84010002
    ItemAlloc      84010003
    SubAlloc       84010004
    PlaneAlloc     84010005
    ItemBoxTop     84000006
    OpenScreen     84010007
    OpenScrnRast   84010008
    SysScrnType    84000009
    AddSWGadget    8401000A
    OpenWindow     8401000B
    BadState       8400000C
    BadMessage     8400000D
    WeirdEcho      8400000E
    NoConsole      8400000F
    DOS Library
    StartMem       07010001
    EndTask        07000002
    QPktFail       07000003
    AsyncPkt       07000004
    FreeVec        07000005
    DiskBlkSeq     07000006
    BitMap         07000007
    KeyFree        07000008
    BadChkSum      07000009
    DiskError      0700000A
    KeyRange       0700000B
    BadOverlay     0700000C
    TrackDisk Device
    TDCalibSeek    14000001
    TDDelay        14000002
    Timer Device
    TMBadReq       15000001
    Disk Resource
    DRHasDisk      21000001
    DRIntNoAct     21000002
    BootStrap
    BootError      30000001

Página anterior