// system defined:
#define T_DIVIDE         0          // divide error
#define T_DEBUG          1          // debug exception
#define T_NMI            2          // non-maskable interrupt
#define T_BRKPT          3          // breakpoint
#define T_OFLOW          4          // overflow
#define T_BOUND          5          // bounds check
#define T_ILLOP          6          // illegal opcode
#define T_DEVICE         7          // device not available 
#define T_DBLFLT         8          // double fault
/* #define T_COPROC      9 */       // reserved (not generated by recent processors)
#define T_TSS           10          // invalid task switch segment
#define T_SEGNP         11          // segment not present
#define T_STACK         12          // stack exception
#define T_GPFLT         13          // genernal protection fault
#define T_PGFLT         14          // page fault
/* #define T_RES        15 */       // reserved
#define T_FPERR         16          // floating point error
#define T_ALIGN         17          // aligment check
#define T_MCHK          18          // machine check
#define T_SIMDERR       19          // SIMD floating point error

// These are arbitrarily chosen, but with care not to overlap
// processor defined exceptions or interrupt vectors.
#define T_SYSCALL       48          // system call
#define T_DEFAULT      500          // catchall

#define IRQ_OFFSET      32      // IRQ 0 corresponds to int IRQ_OFFSET

#define IRQ_KBD          1
#define IRQ_IDE         14
#define IRQ_TIMER       18
#define IRQ_ERROR       19
#define IRQ_SPURIOUS    31