Appendix B MPE XL Trap Subsystem Escape Codes
The escape codes from the trap library are 32-bit integer values that are
read in two 16-bit fields:
+----------------+----------------+
| Error Number | Subsystem |
+----------------+----------------+
Bit 0 15 16 31
Bits (0:16) comprise ecode.errnum. Bits (16:16) comprise ecode.subsys.
The subsystem number for the MPE XL trap subsystem is 200. The values of
ecode.errnum are listed in Table B-1:
Table B-1. Trap Library Escape Codes
-----------------------------------------------------------------------------------------------
| | | |
| Error Number | Escapecode in Hex | Meaning |
| | | |
-----------------------------------------------------------------------------------------------
| | | |
| 07 | 0x000700c8 | 3000 Mode Packed Decimal Error |
| | | |
| 08 | 0x000800c8 | Paragraph Stack Overflow |
| | | |
| 09 | 0x000900c8 | Unimplemented Condition Trap |
| | | |
| 10 | 0x000a00c8 | Software-detected Misaligned Pointer or Conversion |
| | | of Long Pointer into Short Pointer Error |
| | | |
| 11 | 0x000b00c8 | Software-detected Nil Pointer Reference |
| | | |
| 12 | 0x000c00c8 | Range Errors |
| | | |
| 13 | 0x000d00c8 | IEEE Floating Point Invalid Operation |
| | | |
| 14 | 0x000e00c8 | IEEE Floating Point Divide by Zero |
| | | |
| 15 | 0x000f00c8 | IEEE Floating Point Overflow |
| | | |
| 16 | 0x001000c8 | IEEE Floating Point Underflow |
| | | |
| 17 | 0x001100c8 | IEEE Floating Point Inexact Result |
| | | |
| 18 | 0x001200c8 | Decimal Divide by Zero |
| | | |
| 21 | 0x001500c8 | Invalid Decimal Digit |
| | | |
| 22 | 0x001600c8 | Invalid ASCII Digit |
| | | |
-----------------------------------------------------------------------------------------------
Table B-1. Trap Library Escape Codes(cont.)
-----------------------------------------------------------------------------------------------
| | | |
| Error Number | Escapecode in Hex | Meaning |
| | | |
-----------------------------------------------------------------------------------------------
| | | |
| 23 | 0x001700c8 | Decimal Overflow |
| | | |
| 24 | 0x001800c8 | HP 3000 Mode Double Precision Divide by Zero |
| | | |
| 25 | 0x001900c8 | HP 3000 Mode Double Precision Underflow |
| | | |
| 26 | 0x001a00c8 | HP 3000 Mode Double Precision Overflow |
| | | |
| 27 | 0x001b00c8 | Integer Overflow |
| | | |
| 28 | 0x001c00c8 | HP 3000 Mode Floating Point Overflow |
| | | |
| 29 | 0x001d00c8 | HP 3000 Mode Floating Point Underflow |
| | | |
| 30 | 0x001e00c8 | Integer Divide by Zero |
| | | |
| 31 | 0x001f00c8 | HP 3000 Mode Floating Point Divide by Zero |
| | | |
| 51 | 0x003300c8 | Illegal Instruction |
| | | |
| 52 | 0x003400c8 | Data Memory Protection Trap, Hardware-detected Nil |
| | | or Misaligned Pointer |
| | | |
| 53 | 0x003500c8 | Illegal Code or Data Virtual Address |
| | | |
-----------------------------------------------------------------------------------------------
NOTE There are four escape codes that are associated with illegal
pointers. If you want to catch code errors due to illegal
pointers, you must check for all four escape codes:
0x000a00c8
0x000b00c8
0x003400c8
0x003500c8