Refactoring.
h3rald h3rald@h3rald.com
Wed, 03 Dec 2025 16:18:34 +0100
1 files changed,
32 insertions(+),
53 deletions(-)
jump to
M
xywrun.c
→
xywrun.c
@@ -71,60 +71,18 @@ }
//// Read/write memory helpers -// Device read/write dispatchers -static inline xyw_byte device_read(xyw_word addr, xyw_byte *error) -{ - xyw_byte dev_num = get_device(addr); - if (dev_num >= XYW_TOTAL_DEVICES || !xyw_devices[dev_num].read) - { - *error = XYW_ERROR_DEVICE_UNAVAILABLE; - return -1; - } - xyw_byte dev_addr = get_device_address(addr); - return xyw_devices[dev_num].read(dev_addr, error); -} - -static inline xyw_word device_readw(xyw_word addr, xyw_byte *error) -{ - xyw_byte dev_num = get_device(addr); - if (dev_num >= XYW_TOTAL_DEVICES || !xyw_devices[dev_num].readw) - { - *error = XYW_ERROR_DEVICE_UNAVAILABLE; - return -1; - } - xyw_byte dev_addr = get_device_address(addr); - return xyw_devices[dev_num].readw(dev_addr, error); -} - -static inline void device_write(xyw_word addr, xyw_byte val, xyw_byte *error) -{ - xyw_byte dev_num = get_device(addr); - if (dev_num >= XYW_TOTAL_DEVICES || !xyw_devices[dev_num].write) - { - *error = XYW_ERROR_DEVICE_UNAVAILABLE; - return; - } - xyw_byte dev_addr = get_device_address(addr); - xyw_devices[dev_num].write(dev_addr, val, error); -} - -static inline void device_writew(xyw_word addr, xyw_word val, xyw_byte *error) -{ - xyw_byte dev_num = get_device(addr); - if (dev_num >= XYW_TOTAL_DEVICES || !xyw_devices[dev_num].writew) - { - *error = XYW_ERROR_DEVICE_UNAVAILABLE; - return; - } - xyw_byte dev_addr = get_device_address(addr); - xyw_devices[dev_num].writew(dev_addr, val, error); -} - static inline xyw_word readw(xyw_word addr) { if (addr >= DEVICE_AREA_START) { - return device_readw(xyw_memory[addr], error); + xyw_byte dev_num = get_device(addr); + if (dev_num >= XYW_TOTAL_DEVICES || !xyw_devices[dev_num].readw) + { + *error = XYW_ERROR_DEVICE_UNAVAILABLE; + return (xyw_word)-1; + } + xyw_byte dev_addr = get_device_address(addr); + return xyw_devices[dev_num].readw(dev_addr, error); } return PEEKW(&xyw_memory[addr]); }@@ -133,7 +91,14 @@ static inline void writew(xyw_word addr, xyw_word val)
{ if (addr >= DEVICE_AREA_START) { - device_writew(xyw_memory[addr], val, error); + xyw_byte dev_num = get_device(addr); + if (dev_num >= XYW_TOTAL_DEVICES || !xyw_devices[dev_num].writew) + { + *error = XYW_ERROR_DEVICE_UNAVAILABLE; + return; + } + xyw_byte dev_addr = get_device_address(addr); + xyw_devices[dev_num].writew(dev_addr, val, error); return; } POKEW(&xyw_memory[addr], val);@@ -143,7 +108,14 @@ static inline xyw_byte read(xyw_word addr)
{ if (addr >= DEVICE_AREA_START) { - return device_read(addr, error); + xyw_byte dev_num = get_device(addr); + if (dev_num >= XYW_TOTAL_DEVICES || !xyw_devices[dev_num].read) + { + *error = XYW_ERROR_DEVICE_UNAVAILABLE; + return (xyw_byte)-1; + } + xyw_byte dev_addr = get_device_address(addr); + return xyw_devices[dev_num].read(dev_addr, error); } return xyw_memory[addr]; }@@ -152,7 +124,14 @@ static inline void write(xyw_word addr, xyw_byte val)
{ if (addr >= DEVICE_AREA_START) { - device_write(addr, val, error); + xyw_byte dev_num = get_device(addr); + if (dev_num >= XYW_TOTAL_DEVICES || !xyw_devices[dev_num].write) + { + *error = XYW_ERROR_DEVICE_UNAVAILABLE; + return; + } + xyw_byte dev_addr = get_device_address(addr); + xyw_devices[dev_num].write(dev_addr, val, error); return; } xyw_memory[addr] = val;