Skip to content

Commit 6463667

Browse files
committed
Show HID device selection in RIA debug UI
1 parent 8e1e2ab commit 6463667

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

src/chips/ria816.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ void ria816_hid_write(ria816_t* c, uint8_t reg, uint8_t data) {
169169
HID_dev = data;
170170
}
171171

172+
uint8_t ria816_hid_dev(const ria816_t* c) {
173+
return HID_dev;
174+
}
175+
172176
uint64_t ria816_tick(ria816_t* c, uint64_t pins) {
173177
pins = _ria816_tick(c, pins);
174178
if (pins & RIA816_CS) {
@@ -193,6 +197,7 @@ uint64_t ria816_tick(ria816_t* c, uint64_t pins) {
193197
uint8_t data = RIA816_GET_DATA(pins);
194198
ria816_hid_write(c, addr, data);
195199
}
200+
pins |= RIA816_CS; // signal data merge to main loop
196201
}
197202
if (pins & RIA816_TIMERS_CS) {
198203
// CIA timers emulation
@@ -206,6 +211,7 @@ uint64_t ria816_tick(ria816_t* c, uint64_t pins) {
206211
uint8_t data = M6526_GET_DATA(pins);
207212
_m6526_write(&c->cia, addr, data);
208213
}
214+
pins |= RIA816_CS; // signal data merge to main loop
209215
}
210216

211217
pins = _ria816_update_irq(c, pins);

src/chips/ria816.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ uint8_t ria816_reg_read(ria816_t* c, uint8_t addr);
216216
void ria816_reg_write(ria816_t* c, uint8_t addr, uint8_t data);
217217
uint8_t ria816_hid_read(ria816_t* c, uint8_t reg);
218218
void ria816_hid_write(ria816_t* c, uint8_t reg, uint8_t data);
219+
uint8_t ria816_hid_dev(const ria816_t* c);
219220

220221
#ifdef __cplusplus
221222
} // extern "C"

src/ui/ui_ria816.cc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "./ui_ria816.h"
2+
#include "sys/ria.h"
23

34
#include "ui/ui_util.h"
45

@@ -147,6 +148,15 @@ static void _ui_ria816_draw_state(ui_ria816_t* win) {
147148
ui_util_b8("UART : ", ria_status);
148149
ImGui::SameLine();
149150
ImGui::Text("%s%s", ria_status & 0b10000000 ? "CTS " : "", ria_status & 0b01000000 ? "DRD " : "");
151+
uint8_t hid_dev = ria816_hid_dev(ria);
152+
ImGui::Text("HID : %02X", hid_dev);
153+
ImGui::SameLine();
154+
switch (hid_dev & 0x0F) {
155+
case RIA_HID_DEV_KEYBOARD: ImGui::Text("KBD%d", hid_dev >> 5); break;
156+
case RIA_HID_DEV_MOUSE: ImGui::Text("MOU%d", hid_dev >> 4); break;
157+
case RIA_HID_DEV_GAMEPAD: ImGui::Text("PAD%d", hid_dev >> 4); break;
158+
default: ImGui::Text("???"); break;
159+
}
150160
ImGui::SeparatorText("Interrupts");
151161
ui_util_b8("RIA : ", ria->irq_enable);
152162
ui_util_b8("Status: ", ria->int_status);

0 commit comments

Comments
 (0)