I think I've posted this earlier, but I'm reposting it here for easy access. It's a complete guide to obscure CPU errors:
Code:
A guide to CPU interrupts & error codes
LADD - register that holds interrupt error code, or address of error
Error code | Meaning
0 | No error ("int 0" will restart CPU)
|
1 | CPU was stopped by program ("int 1" will stop CPU)
|
2 | End of program execution. It has two meanings:
| 1. Your program has ended (it was not looped)
| 2. CPU tried to run opcode 0 ("stop")
|
3 | Division by zero. LADD tells you what opcode it was
| LADD : Meaning
| 0 : DIV
| 1 : FINV
4 | Unknown opcode. LADD holds opcode number
|
5 | Internal processor error. LADD holds error code
| LADD : Meaning
| 01 : Opcode returned invalid value
| 02 : Unknown internal error
| 12 : Read error while fetching Opcode or RM
| 22 : Could not peek immediate byte 1
| 32 : Could not peek immediate byte 2
| 42 : Invalid RM parameter for operand 1
| 52 : Invalid RM parameter for operand 2
| 62 : Target operand not writeable
| 72 : Source operand not writeable (XCHG only)
| 82 : Executing unkown opcode without interrupt 4
|
6 | Stack error:
| Overflow: ESP = 0; LADD = 0;
| Underflow: ESP = ESZ; LADD = ESZ;
| Unable to read value from stack: LADD = ESP;
|
7 | Memory read/write fault. LADD = Faulty address
|
8 | MemBus or IOBus fault. LADD = Faulty address (ports are negative)
|
9 | Write access violation. LADD = Faulty address
|
10 | Port read/write fault. LADD = Port number
|
11 | Page access violation. LADD = Page number
| Triggered by SPG, CPG, SPP, CPP, SRL, SMAP
|
12 | Read access violation. LADD = Faulty address
|
13 | General processor fault
| LADD : Meaning
| 1 : Trying to write CS
| 3 : Interrupt number out of range (0..255)
| 4 : Trying to call NMI interrupt without NMI flag set
| <...>: Opcode number of executed privileged opcode, one of:
| RD WD STI CLI STP CLP STE CLE NMIINT ERPG WRPG RRPG LIDTR
| NMIRET IDLE CPUSET CPP SPP SRL SMAP
|
14 | Execute violation. LADD = Page number
|
15 | Address space violation. LADD = Faulty address
|
16 | [GPU ONLY] Pants integrity violation
|
23 | [GPU ONLY] String read error.
| If character out of 0..255 range, then LADD = character
| If string longer than 8192 chars, then LADD = 0 LADD is the code you see after decimal fraction point (e.g. 5.12)
Bookmarks