1 //+----------------------------------------------------------------------------
9 // Created: sgasch 6 Jul 2003
11 //+----------------------------------------------------------------------------
13 #ifndef _INTERRUPTS_H_
14 #define _INTERRUPTS_H_
16 #define NUM_IDT_ENTRIES (256)
18 // Exceptions range from 0x00..0x11
19 #define FIRST_EXCEPTION 0x00
20 #define LAST_EXCEPTION 0x11
21 #define NUM_EXCEPTIONS 18
23 // External IRQs range from 0x30..0x3F
24 #define FIRST_EXTERNAL_INT 0x30
25 #define LAST_EXTERNAL_INT 0x3F
42 #define NUM_EXTERNAL_INTS 16
44 typedef struct _INTERRUPT_GATE
47 USHORT segmentSelector;
56 typedef union _IDT_ENTRY
59 // In theory we could have members for trap gates
60 // and task gates if we wanted.
65 // Defined in intsupport.asm
67 extern void HalInterruptInitializePICs(void);
68 extern void HalInterruptLoadIDTR(void *uLimitAndBase);
69 extern void HalIoDelay(void);
70 extern BYTE HalInterruptHandlerPreamble;
71 extern BYTE HalInterruptHandlerPreambleBefore;
72 extern BYTE HalInterruptHandlerPreambleAfter;
75 // Defined in interrupts.c
77 extern void HalDisableInterrupts(void);
78 extern void HalEnableInterrupts(void);
82 // Defined in keyboard.c
84 extern void HalKeyboardInt(INTERRUPT_STATE *is);
89 extern void HalTimerInt(INTERRUPT_STATE *is);