namespace Q1.core; public interface IAddressable { public u8 Read(u16 address); public void Write(u16 address, u8 value); public void Clock(); } public static class AddressableExtensions { public static u16 ReadWord(this IAddressable bus, u16 address) { u8 high = bus.Read(address); u8 low = bus.Read((u16)(address + 1)); return (u16)((high << 8) | low); } public static void WriteWord(this IAddressable bus, u16 address, u16 value) { u8 high = (u8) (value & 0xFF); u8 low = (u8)((value >> 8) & 0xFF); bus.Write(address, low); bus.Write((u16)(address + 1), high); } }