KernOS
pic.h
Go to the documentation of this file.
1 //
2 // Created on 8/15/20.
3 //
4 
5 #ifndef KERNOS_PIC_H
6 #define KERNOS_PIC_H
7 
8 #include <common.h>
9 
46 namespace PIC
47 {
48  enum ICW1_0 : uint8_t
49  {
50  NO_ICW4 = 0b0,
51  USE_ICW4 = 0b1
52  };
53 
54  enum ICW1_1 : uint8_t
55  {
56  CASCADE = 0b00,
57  SINGLE = 0b10
58  };
59 
60  enum ICW1_2 : uint8_t
61  {
62  INTRP_8B = 0b000,
63  INTRP_4B = 0b100
64  };
65 
66  enum ICW1_3 : uint8_t
67  {
68  EDGE_TRIGGERED = 0b0000,
69  LEVEL_TRIGGERED = 0b1000
70  };
71 
72  enum ICW1_4 : uint8_t
73  {
74  INVALID = 0b00000,
75  USE_ICW1 = 0b10000
76  };
77 
78  enum ICW4_0 : uint8_t
79  {
80  MODE_8085 = 0b0,
81  MODE_8086 = 0b1
82  };
83 
84  enum ICW4_1 : uint8_t
85  {
86  EOI = 0b00,
87  AUTO_EOI = 0b10
88  };
89 
90  enum ICW4_4 : uint8_t
91  {
92  SEQUENTIAL = 0b00000,
94  };
95 
96  enum OCW2 : uint8_t
97  {
98  NON_SPECIFIC_EOI = 0b0010'0000, ///< 0x20
99  NOP = 0b0100'0000,
100  SPECIFIC_EOI = 0b0110'0000,
101  ROTATE_AEOI = 0b1000'0000,
102  ROTATE_NON_SPEC_EOI = 0b1010'0000,
103  SET_PRIORITY_CMD = 0b1100'0000,
104  ROTATE_SPEC_EOI = 0b1110'0000,
105  };
106 
107  void Remap();
108 
109 } // namespace PIC
110 
111 #endif //KERNOS_PIC_H
OCW2
Definition: pic.h:96
ICW4_4
Definition: pic.h:90
ICW1_0
Definition: pic.h:48
ICW4_1
Definition: pic.h:84
ICW4_0
Definition: pic.h:78
ICW1_2
Definition: pic.h:60
ICW1_1
Definition: pic.h:54
Definition: pic.h:86
ICW1_4
Definition: pic.h:72
8259 Progammable interrupt controller
Definition: pic.h:46
ICW1_3
Definition: pic.h:66