[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference hydra::amiga_v1

Title:AMIGA NOTES
Notice:Join us in the *NEW* conference - HYDRA::AMIGA_V2
Moderator:HYDRA::MOORE
Created:Sat Apr 26 1986
Last Modified:Wed Feb 05 1992
Last Successful Update:Fri Jun 06 1997
Number of topics:5378
Total number of notes:38326

1790.0. "Looking for list of Guru codes" by COOKIE::WITHERS (Trad. Anon. c. 1988) Tue Oct 18 1988 21:00

    SOme time ago, there was a write-up of Guru codes on Usenet.  Does
    anybody have a copy?  How about a list for 1.3 (which I'll get as
    soon as possible)?
    
    Thanks all.
    BobW
    
T.RTitleUserPersonal
Name
DateLines
1790.1Here are the ones I have written downCOOKIE::WECKERGood old 6844A7B7A5000965D0Tue Oct 18 1988 21:3020
System codes are:

	0	DEBUG
	1
	2	BUS ERROR
	3	ADR ERROR
	4	ILL INSTR
	5	DIV BY 0
	6	CHK
	7	TRAP V
	8	PRIV INSTR
	9	TRACE
	A	LINE 1010
	B	LINE 1011
	2x	TRAP 0-E
	2F	BREAK POINT

All the ones that start with 8xxxxxxx are from the O/S and can be found in the
C include file include/exec/alerts.h (BTW: the 8 means "Dead End").

1790.2guru infoMIST::TBAKERTom Baker - DECwest CSSETue Oct 18 1988 23:11517
Bob,
    Here's what I've collected from this notes file and a few other
    places.
tom

    ===========================================================================
    
	A M I G A ' S      I N I T I A L I Z A T I O N      C O L O R S
	-------------      ---------------------------      -----------
 
	Dark gray		Ok Hardware
	Light gray		Ok Software
	Red			Bad ROM Checksum
	Green			Bad RAM
	Blue			Bad Custom Chips
	Yellow			Exception

 
	A M I G A ' S      I N I T I A L I Z A T I O N
	-------------      ---------------------------
 
	Clear Chips
	Disable DMA and Interrupts
	Clear the Screen
	Check the Hardware
	Pass or fail the Hardware to the Screen
	Checksum the ROMs
	Pass or fail the ROMs to the Screen
	System setup
	Check the for RAM at $C00000
	Move SYS_BASE to $C00000 if it exists
	RAM Test
	Pass or fail the RAM to the Screen
	Check the Software
	Pass or fail the Software to the Screen
	Set up the RAM
	Link the Libraries
	Find External RAM and link it to the list
	Set up Interrupts and DMA
	Start default Task
	Check for 68010, 68020, and 68881
	Check for an Exception
	System Reset
 


	   Here's a quick explanation.  
 
	               nnnnnnnn.nnnnnnnn
	               ________ ________
	                  /         \
	               error#    address 
 
	   The error# is a combination of standard 68000 exception #'s and Amiga
	specific error codes as described in the exec/alerts.h (or .i) header.
 
	Low numbers here (like your 000000004.) are straight 68000 codes:
 
	   0   Call to Debug
	   1   -- ? --
	   2   Bus Error
	   3   Address Error
	   4   Illegal Instruction
	   5   Division by Zero
	   6   CHK inst. (shouldn't happen)
	   7   TRAPV inst. (shouldn't happen)
	   8   Priviledged inst.
	   9   trace (single step)
	   A   Line 1010 emulator
	   B   Line 1111 emulator
	   2x  Trap instructions 0-E
	   2F  Normal break point
 
	    "Illegal instruction" (4) often happens when you've trashed some 
	memory containing code or vectors.  "Address Error" (3) can occur when
	code attempts to do word or longword manipulations on an odd address.
	This often occurs if you pass an invalid, no-longer-valid, or zero
	pointer to a sytem routine.  Gurus 3 and 4 are the most common Gurus.
 
	    If you ever get the higher Guru numbers, exec/alerts.h can help
	you decipher them.  Values in alerts.h are OR'd together to create
	the Guru #.   Example:
 
	                 80038007.nnnnnnnn
            
	         80000000 = Dead End Alert
	         00030000 = OpenLibrary error
	         00008007 = on dos.library
 
	   Some Guru's can even help diagnose hardware problems.  For example,
	87000008. (Key already free) or 8700000B. (Key out of range) can be
	a symptom of keyboard or static problems.
 
 
	   The address (righthand) portion of the Guru number is either the
	address where the error occurred (often helpful in debugging) OR 
	the address of the task that had the error (not so helpful unless
	you are running many tasks).  Your $97B0 is the usual address of
	the initial CLI process under 1.1.  I guess you started your program
	from the initial CLI.  Under 1.1, the usual address starts with $A.
 
        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
	Carolyn Scheppner -- CBM   >>Amiga Technical Support<<
                     UUCP  ...{allegra,caip,ihnp4,seismo}!cbmvax!carolyn 
                     PHONE 215-431-9180



	                    "You Too Can Be An Amiga Guru!"
	                           by Dave Boulton
	               ('New & Improved' version as of 11 Feb 86)
 
	 Arrrrrrgh!, you snarl as the dreaded System Request box pops on to
	 the Workbench screen: 
 
	    Software error - task held
	    Finish ALL disk activity
	    Select CANCEL to reset/debug
 
	 You stare at the computerese for a moment, and then hit the CANCEL
	 button. The current screen is pushed down and you find yourself
	 staring at the orange and black finality of:
 
	    Software Failure.          Press left mouse button to continue.
	                Guru Meditation #02010009.00009310
 
	      Specific error code -----+         +--- Task Address
	                               |         |
	                       02 01 0009 . 00009310       
	                        |  |
	      Subsystem number -+  +--- General error code
 
	 An alert number is divided into several parts. The section to the
	 right of the decimal point is simply the address in RAM of the
	 task that was running when the error occurred. This helps tell
	 someone who is debugging a program which of the many different
	 programs running in the Amiga caused the problem. In the example
	 given above, the running task was at 9310 hex. In this case that
	 happens to mean that the error occurred in CLI process number 1.
	 
	 The first two digits tell which module of the operating system
	 reported the error (this is technically known as the 'alert
	 object' or a Subsystem ID). In the example above the alert object
	 is 02, which tells me that the error was reported by the Graphics
	 library. 
 
	 The first digit can be encoded in a funny way. The 'most
	 significant bit' of this digit says whether or not this alert is a
	 'dead-end'; that is, does the system have a chance of recovering
	 from the error or not. If the alert object had been given as 82
	 instead of 02, then the alert would be a 'dead-end'.
 
	 In practice, this is a pretty narrow distinction. By the time you
	 have gotten to the Alert Box the system is in such dire straits
	 that the only choices left are to reboot, or to enter the system
	 debugger. The 'dead-end' bit could possibly cause some confusion
	 if you aren't used to dealing in hexadecimal. If the first digit
	 of the alert object is ever greater than 7 (hexadecimal) then
	 subtract 8 from it. Thus if the first two digits were B1, then the
	 alert is a dead-end error reported by the Workbench (Subsystem ID
	 code 31). (B minus 8 equals 3, for those of you without the
	 required 16 fingers!)


 
	 The Subsystem ID codes are as follows:
 
	 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
 
	 The next two digits specify the general type of error which has
	 occurred. For many specialized types of errors this field is 00,
	 instead of one of the general error codes below. This field is
	 often very useful, since the user can easily tell such things as
	 out-of-memory conditions, and missing libraries or device drivers
	 (if you have deleted files from the LIBS or DEVS directories of
	 your boot disk). In the example given above the general error code
	 is 01, which means the the Graphics Library was not able to find
	 enough free memory to allocate for some reason.
 
	 The general error codes are:
 
	 Insufficient memory   01    OpenDevice error    04
	 MakeLibrary error     02    OpenResource error  05
	 OpenLibrary error     03    I/O error           06
 
	 The last four digits of the alert number give specific information
	 about exactly what error has occurred. The interpretation of the
	 specific error code depends on which subsystem we are talking
	 about. Each subsystem reuses the same values for the specific
	 error code with different meanings. In our example the specific
	 error code is 0009. Since we are talking about an error in the
	 graphics library, we determine that the error is called
	 'TextTmpRas' which means that a call to the Text() routine (trying
	 to draw characters on the screen) ran out of memory when it tried
	 to allocate memory for a TmpRas (temporary raster work area) data
	 structure.
 
	 If the error had been in a different subsystem (say the Intuition
	 library) then the same error code of 0009 would have had a
	 completely different interpretation (for Intuition it would mean
	 that the Screen Type parameter to an OpenScreen call was not a
	 valid type).
 
	 There is one special case in dealing with Guru Meditation Numbers.
	 Everything that we have discussed so far has to do with alerts
	 that are detected and generated by the Amiga ROM Kernel. There is
	 another case, which is when an alert is caused by a 68000
	 processor exception (or 'trap'). Whenever a CPU trap occurs (for
	 instance, an illegal opcode is executed) the Exec will generally
	 cause an alert. A program can intercept this trap processing, and
	 insert its own 'trap handler' to perform some other function, but
	 usually these traps end up causing an alert. When this happens,
	 the left hand part of the guru number will be a small value. The
	 subsystem ID and the general error code will both be zero. The
	 specific error code will be the 'trap number' of the trap that
	 occurred. The trap numbers are part of the 68000 chip, and are not
	 assigned by the ROM kernel like other error codes are.


 
	 The following is a list of all the possible CPU traps. A few of
	 these will never show up as an alert because they are always
	 handled by the ROM Kernel. I list all of them here for
	 completeness (and just in case I'm wrong, and they ever _do_ show
	 up).
 
	 Bus Error              02      Priviledge Violation   08
	 Address Error          03      Instruction Trace      09
	 Illegal Instruction    04      Line A Emulation       0A
	 Divide by Zero         05      Line F Emulation       0B
 
	 CHK instruction        06      TRAP 0 ... 15          20 ... 2F
	 TRAPV (Overflow)       07
 
	 The following is a list of the specific error codes and a short
	 comment about their meaning. The descriptions are a slightly
	 edited version of the exec/alerts file, so they are very cryptic.
 
	 Exec Library
	 ------------

	 ExcptVect      81000001    CPU trap vector checksum
	 BaseChkSum     81000002    ExecBase checksum error
	 LibChkSum      81000003    library checksum failure
	 LibMem         81000004    no memory to make library
	 MemCorrupt     81000005    corrupted free memory list
	 IntrMem        81000006    no memory for interrupt servers

 
	 Graphics Library
	 ----------------

	 CopDisplay     82010001    copper display list, no memory
	 CopInstr       82010002    copper instruction list, no mem.
	 CopListOver    82000003    copper list too long
	 CopIListOver   82000004    copper intermediate list too long
	 CopListHead    82010005    copper list head, no memory
	 LongFrame      82010006    long frame, no memory
	 ShortFrame     82010007    short frame, no memory
	 FloodFill      82010008    flood fill, no memory
	 TextTmpRas     02010009    text, no memory for TmpRas
	 BltBitMap      8201000A    BltBitMap, no memory

 
	 Intuition Library
	 -----------------

	 GadgetType     84000001    unknown gadet type
	 CreatePort     84010002    create port, no memory
	 ItemAlloc      84010003    item plane alloc, no memory
	 SubAlloc       84010004    sub alloc, no memory
	 PlaneAlloc     84010005    plane alloc, no memory
	 ItemBoxTop     84000006    item box top < RelZero
	 OpenScreen     84010007    open screen, no memory
	 OpenScrnRast   84010008    OpenScreen's AllocRast, no mem.
	 SysScrnType    84000009    open sys screen, unknown type
	 AddSWGadget    8401000A    add SW gadgets, no memory
	 OpenWindow     8401000B    open window, no memory
	 BadState       8400000C    Bad State Return entering Int.
	 BadMessage     8400000D    Bad Message received by IDCMP
	 WeirdEcho      8400000E    Weird echo causing problem
	 NoConsole      8400000F    couldn't open the Console Device



 
	 DOS Library
	 -----------
 
	 StartMem       07010001    no memory at startup
	 EndTask        07000002    EndTask didn't
	 QPktFail       07000003    Qpkt failure
	 AsyncPkt       07000004    Unexpected packet received
	 FreeVec        07000005    Freevec failed
	 DiskBlkSeq     07000006    Disk block sequence error
	 BitMap         07000007    Bitmap corrupt
	 KeyFree        07000008    Key already free
	 BadChkSum      07000009    Invalid checksum
	 DiskError      0700000A    Disk Error
	 KeyRange       0700000B    Key out of range
	 BadOverlay     0700000C    Bad overlay

 
	 TrackDisk Device
	 ----------------

	 TDCalibSeek    14000001    calibrate: seek error
	 TDDelay        14000002    delay: error on timer wait
 
	 Timer Device
	 ------------

	 TMBadReq       15000001    bad request
 
	 Disk Resource
	 -------------

	 DRHasDisk      21000001    get unit: already has disk
	 DRIntNoAct     21000002    interrupt: no active unit
	 
	 BootStrap
	 ---------

	 BootError      30000001    boot code returned an error
 
This comes from the V1.2 include files.
 
/*********************************************************************
*  Format of the alert error number:
*    +-+-------------+----------------+--------------------------------+
*    |D|  SubSysId   |	General Error |    SubSystem Specific Error    |
*    +-+-------------+----------------+--------------------------------+
*		     D:  DeadEnd alert
*	      SubSysId:  indicates ROM subsystem number.
*	 General Error:  roughly indicates what the error was
*	Specific Error:  indicates more detail
**********************************************************************/
 
/*  General Dead-End Alerts:*/
 
/*------ alert types */
#define AT_DeadEnd	0x80000000
#define AT_Recovery	0x00000000
 
/*------ general purpose alert codes */
#define AG_NoMemory	0x00010000
#define AG_MakeLib	0x00020000
#define AG_OpenLib	0x00030000
#define AG_OpenDev	0x00040000
#define AG_OpenRes	0x00050000
#define AG_IOError	0x00060000
#define AG_NoSignal	0x00070000
 
/*------ alert objects: */
#define AO_ExecLib	0x00008001
#define AO_GraphicsLib	0x00008002
#define AO_LayersLib	0x00008003
#define AO_Intuition	0x00008004
#define AO_MathLib	0x00008005
#define AO_CListLib	0x00008006
#define AO_DOSLib	0x00008007
#define AO_RAMLib	0x00008008
#define AO_IconLib	0x00008009
#define AO_ExpansionLib 0x0000800A
#define AO_AudioDev	0x00008010
#define AO_ConsoleDev	0x00008011
#define AO_GamePortDev	0x00008012
#define AO_KeyboardDev	0x00008013
#define AO_TrackDiskDev 0x00008014
#define AO_TimerDev	0x00008015
#define AO_CIARsrc	0x00008020
#define AO_DiskRsrc	0x00008021
#define AO_MiscRsrc	0x00008022
#define AO_BootStrap	0x00008030
#define AO_Workbench	0x00008031
 
/* Combine the above to get the actual number */


 
/*   Specific Dead-End Alerts: */
 
/*------ exec.library */
#define AN_ExecLib	0x01000000
#define AN_ExcptVect	0x81000001	/* 68000 exception vector checksum */
#define AN_BaseChkSum	0x81000002	/* execbase checksum */
#define AN_LibChkSum	0x81000003	/* library checksum failure */
#define AN_LibMem	0x81000004	/* no memory to make library */
#define AN_MemCorrupt	0x81000005	/* corrupted memory list */
#define AN_IntrMem	0x81000006	/* no memory for interrupt servers */
#define AN_InitAPtr	0x81000007	/* InitStruct() of an APTR source */
#define AN_SemCorrupt	0x81000008	/* a semaphore is in illegal state */
#define AN_FreeTwice	0x81000009	/* freeing memory already freed */
#define AN_BogusExcpt	0x8100000A	/* illegal 68k exception taken */
 
/*------ graphics.library */
#define AN_GraphicsLib	0x02000000
#define AN_GfxNoMem	0x82010000	/* graphics out of memory */
#define AN_LongFrame	0x82010006	/* long frame, no memory */
#define AN_ShortFrame	0x82010007	/* short frame, no memory */
#define AN_TextTmpRas	0x02010009	/* text, no memory for TmpRas */
#define AN_BltBitMap	0x8201000A	/* BltBitMap, no memory */
#define AN_RegionMemory 0x8201000B	/* regions, memory not available */
#define AN_MakeVPort	0x82010030	/* MakeVPort, no memory */
#define AN_GfxNoLCM	0x82011234	/* emergency memory not available */
 
/*------ layers.library */
#define AN_LayersLib	0x03000000
#define AN_LayersNoMem	0x83010000	/* layers out of memory */
 
/*------ intuition.library */
#define AN_Intuition	0x04000000
#define AN_GadgetType	0x84000001	/* unknown gadet type */
#define AN_BadGadget	0x04000001	/* Recovery form of AN_GadgetType */
#define AN_CreatePort	0x84010002	/* create port, no memory */
#define AN_ItemAlloc	0x04010003	/* item plane alloc, no memory */
#define AN_SubAlloc	0x04010004	/* sub alloc, no memory */
#define AN_PlaneAlloc	0x84010005	/* plane alloc, no memory */
#define AN_ItemBoxTop	0x84000006	/* item box top < RelZero */
#define AN_OpenScreen	0x84010007	/* open screen, no memory */
#define AN_OpenScrnRast 0x84010008	/* open screen, raster alloc, no memory */
#define AN_SysScrnType	0x84000009	/* open sys screen, unknown type */
#define AN_AddSWGadget	0x8401000A	/* add SW gadgets, no memory */
#define AN_OpenWindow	0x8401000B	/* open window, no memory */
#define AN_BadState	0x8400000C	/* Bad State Return entering Intuition */
#define AN_BadMessage	0x8400000D	/* Bad Message received by IDCMP */
#define AN_WeirdEcho	0x8400000E	/* Weird echo causing incomprehension */
#define AN_NoConsole	0x8400000F	/* couldn't open the Console Device */

 
 
/*------ math.library */
#define AN_MathLib	0x05000000
 
/*------ clist.library */
#define AN_CListLib	0x06000000
 
/*------ dos.library */
#define AN_DOSLib	0x07000000
#define AN_StartMem	0x07010001	/* no memory at startup */
#define AN_EndTask	0x07000002	/* EndTask didn't */
#define AN_QPktFail	0x07000003	/* Qpkt failure */
#define AN_AsyncPkt	0x07000004	/* Unexpected packet received */
#define AN_FreeVec	0x07000005	/* Freevec failed */
#define AN_DiskBlkSeq	0x07000006	/* Disk block sequence error */
#define AN_BitMap	0x07000007	/* Bitmap corrupt */
#define AN_KeyFree	0x07000008	/* Key already free */
#define AN_BadChkSum	0x07000009	/* Invalid checksum */
#define AN_DiskError	0x0700000A	/* Disk Error */
#define AN_KeyRange	0x0700000B	/* Key out of range */
#define AN_BadOverlay	0x0700000C	/* Bad overlay */
 
/*------ ramlib.library */
#define AN_RAMLib	0x08000000
#define AN_BadSegList	0x08000001	/* no overlays in library seglists */
 
/*------ icon.library */
#define AN_IconLib	0x09000000
 
/*------ expansion.library */
#define AN_ExpansionLib 0x0A000000
#define AN_BadExpansionFree	0x0A000001
 
/*------ audio.device */
#define AN_AudioDev	0x10000000
 
/*------ console.device */
#define AN_ConsoleDev	0x11000000
 
/*------ gameport.device */
#define AN_GamePortDev	0x12000000
 
/*------ keyboard.device */
#define AN_KeyboardDev	0x13000000
 
/*------ trackdisk.device */
#define AN_TrackDiskDev 0x14000000
#define AN_TDCalibSeek	0x14000001	/* calibrate: seek error */
#define AN_TDDelay	0x14000002	/* delay: error on timer wait */
 
/*------ timer.device */
#define AN_TimerDev	0x15000000
#define AN_TMBadReq	0x15000001	/* bad request */
#define AN_TMBadSupply	0x15000002	/* power supply does not supply ticks */


 
/*------ cia.resource */
#define AN_CIARsrc	0x20000000
 
/*------ disk.resource */
#define AN_DiskRsrc	0x21000000
#define AN_DRHasDisk	0x21000001	/* get unit: already has disk */
#define AN_DRIntNoAct	0x21000002	/* interrupt: no active unit */
 
/*------ misc.resource */
#define AN_MiscRsrc	0x22000000
 
/*------ bootstrap */
#define AN_BootStrap	0x30000000
#define AN_BootError	0x30000001	/* boot code returned an error */
 
/*------ Workbench */
#define AN_Workbench	0x31000000
 
/*------ DiskCopy */
#define AN_DiskCopy	0x32000000
 
1790.3...and the blinking power light, what does THAT mean ?ULTRA::BURGESSMad Man across the waterThu Dec 19 1991 14:1713
	Is any of this changed/updated with Release 2 ?

	There is also the  "flashing power light"  code,  someone 
asked about it here, but was asked about screen colours.  I have been 
unable to find it anywhere but have heard that the number of times it 
pulses before blanking the screen and starting again means something.

	RKMs ??  I don't have them, but would guess thye would be 
listed there.

	Reg