diff --git a/include/PSX/System/IOPorts/interrupt_io.hpp b/include/PSX/System/IOPorts/interrupt_io.hpp index cb2aeb3f..d0d33b89 100644 --- a/include/PSX/System/IOPorts/interrupt_io.hpp +++ b/include/PSX/System/IOPorts/interrupt_io.hpp @@ -17,29 +17,29 @@ namespace JabyEngine { static constexpr auto Controller = Bit(10); static constexpr auto LightPen = Controller; - __declare_io_type(Status, uint32_t, - ); + __new_declare_io_value(Status, uint32_t) { + }; - __declare_io_type(Mask, uint32_t, - ); + __new_declare_io_value(Mask, uint32_t) { + }; - __declare_new_io_port(Status, 0x1F801070); - __declare_new_io_port(Mask, 0x1F801074); + __new_declare_io_port(inline, Status, 0x1F801070); + __new_declare_io_port(inline, Mask, 0x1F801074); static bool is_irq(Bit irq) { - return Status.is_set(irq); + return Status.read().is_set2(irq); } static void ack_irq(Bit irq) { - Status.clear(irq); + Status.write(Status.read().clear2(irq)); } static void disable_irq(Bit irq) { - Mask.clear(irq); + Mask.write(Mask.read().clear2(irq)); } static void enable_irq(Bit irq) { - Mask.set(irq); + Mask.write(Mask.read().set2(irq)); } }; } diff --git a/include/PSX/System/IOPorts/ioport.hpp b/include/PSX/System/IOPorts/ioport.hpp index c2a3bcbf..f3063032 100644 --- a/include/PSX/System/IOPorts/ioport.hpp +++ b/include/PSX/System/IOPorts/ioport.hpp @@ -65,7 +65,7 @@ namespace JabyEngine { constexpr T& clear2(Bit bit) { this->raw = bit::clear(this->raw, bit); - return *this; + return static_cast(*this); } constexpr bool is_set2(Bit bit) const {