From 04e79c91516ba9bad185bdcec703a60f5ef2436e Mon Sep 17 00:00:00 2001 From: Guy Perfect Date: Wed, 15 Jan 2025 19:47:44 -0600 Subject: [PATCH] Fix sign extensions from vipRead() and busReadMisc() --- core/bus.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/bus.c b/core/bus.c index a03d9e1..2288552 100644 --- a/core/bus.c +++ b/core/bus.c @@ -153,12 +153,18 @@ static void busRead(VB *sim, uint32_t address, int type, int32_t *value) { case 0: /* VIP */ vipRead(sim, address, type, value); + switch (type) { + case VB_S8 : *value = (int8_t ) *value; break; + case VB_S16: *value = (int16_t) *value; break; + } break; case 1: break; /* VSU */ case 2: /* Misc. I/O */ *value = busReadMisc(sim, address, type); + if (type == VB_S8) + *value = (int8_t) *value; break; case 3: break; /* Unmapped */