From 3dddae94c3d4958391dd54225e8f67cc91435c93 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Fri, 24 Mar 2023 21:23:11 +0100 Subject: [PATCH] not sure if a union of an int and an std::opional is guaranteed to work --- cpu.cpp | 4 ++-- cpu.h | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/cpu.cpp b/cpu.cpp index 555c29e..342171f 100644 --- a/cpu.cpp +++ b/cpu.cpp @@ -149,7 +149,7 @@ void cpu::setRegisterLowByte(const int nr, const bool word_mode, const uint16_t bool cpu::put_result(const gam_rc_t & g, const uint16_t value) { if (g.addr.has_value() == false) { - setRegisterLowByte(g.reg, g.word_mode, value); + setRegisterLowByte(g.reg.value(), g.word_mode, value); return true; } @@ -397,7 +397,7 @@ bool cpu::putGAM(const gam_rc_t & g, const uint16_t value) return g.addr.value() != ADDR_PSW; } - setRegister(g.reg, value, g.prev_mode); + setRegister(g.reg.value(), value, g.prev_mode); return true; } diff --git a/cpu.h b/cpu.h index a43cfd1..6695c0d 100644 --- a/cpu.h +++ b/cpu.h @@ -17,10 +17,8 @@ typedef struct { bool prev_mode; d_i_space_t space; - union { - std::optional addr; - int reg; - }; + std::optional addr; + std::optional reg; std::optional value; } gam_rc_t;