MCPcopy Create free account
hub / github.com/CE-Programming/CEmu / intrpt_write

Function intrpt_write

core/interrupt.c:77–113  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

75}
76
77static void intrpt_write(uint16_t pio, uint8_t value, bool poke) {
78 uint16_t index = pio >> 2 & 0x3F;
79 uint8_t request = pio >> 5 & 1;
80 uint8_t bit_offset = (pio & 3) << 3;
81
82 switch(index) {
83 case 0:
84 case 8:
85 if (poke) {
86 write8(intrpt[request].status, bit_offset, value);
87 }
88 break;
89 case 1:
90 case 9:
91 write8(intrpt[request].enabled, bit_offset, value);
92 break;
93 case 2:
94 case 10:
95 intrpt[request].status &= ~(((uint32_t)value << bit_offset) & intrpt[request].latched);
96 break;
97 case 3:
98 case 11:
99 write8(intrpt[request].latched, bit_offset, value);
100 break;
101 case 4:
102 case 12:
103 write8(intrpt[request].inverted, bit_offset, value);
104 break;
105 case 5:
106 case 13:
107 if (poke) {
108 intrpt[request].enabled |= value << bit_offset;
109 intrpt[request].status |= value << bit_offset;
110 }
111 break;
112 }
113}
114
115static const eZ80portrange_t device = {
116 .read = intrpt_read,

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected