summaryrefslogtreecommitdiff
path: root/kc/core/pic8259.h
diff options
context:
space:
mode:
Diffstat (limited to 'kc/core/pic8259.h')
-rw-r--r--kc/core/pic8259.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/kc/core/pic8259.h b/kc/core/pic8259.h
new file mode 100644
index 0000000..13aaaaa
--- /dev/null
+++ b/kc/core/pic8259.h
@@ -0,0 +1,41 @@
+#pragma once
+
+#define PIC_PRI_IOBASE 0x20
+#define PIC_SEC_IOBASE 0xA0
+#define PIC_PRI_CMD PIC_PRI_IOBASE
+#define PIC_SEC_CMD PIC_SEC_IOBASE
+#define PIC_PRI_DATA (PIC_PRI_IOBASE+1)
+#define PIC_SEC_DATA (PIC_SEC_IOBASE+1)
+
+#define PIC_ISR_BASE 240
+#define PIC_ISR_COUNT 16
+
+#ifndef __ASSEMBLER__
+
+#include <stdint.h>
+
+void pic8259_init(void);
+void pic8259_irq_begin(uint8_t irq);
+void pic8259_irq_end(uint8_t irq);
+void pic8259_irq_mask(uint8_t irq);
+void pic8259_irq_unmask(uint8_t irq);
+
+extern void pic8259_irq0_isr(void);
+extern void pic8259_irq1_isr(void);
+extern void pic8259_irq2_isr(void);
+extern void pic8259_irq3_isr(void);
+extern void pic8259_irq4_isr(void);
+extern void pic8259_irq5_isr(void);
+extern void pic8259_irq6_isr(void);
+extern void pic8259_irq7_isr(void);
+extern void pic8259_irq8_isr(void);
+extern void pic8259_irq9_isr(void);
+extern void pic8259_irq10_isr(void);
+extern void pic8259_irq11_isr(void);
+extern void pic8259_irq12_isr(void);
+extern void pic8259_irq13_isr(void);
+extern void pic8259_irq14_isr(void);
+extern void pic8259_irq15_isr(void);
+
+#endif
+