diff options
| author | Melodi <62381002+Melodi17@users.noreply.github.com> | 2026-03-18 07:19:22 +1000 |
|---|---|---|
| committer | Melodi <62381002+Melodi17@users.noreply.github.com> | 2026-03-18 07:19:22 +1000 |
| commit | 0bb62fc65526a0981cd328dea1b09aba8ce0a576 (patch) | |
| tree | a601bb87ead0f58674ee18088e9e41e77512d3b8 /Q1.core/Components/IAddressable.cs | |
| parent | 203331522e22c778ff830c3c6cf4f439778939fa (diff) | |
add: Add bus
Diffstat (limited to 'Q1.core/Components/IAddressable.cs')
| -rw-r--r-- | Q1.core/Components/IAddressable.cs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/Q1.core/Components/IAddressable.cs b/Q1.core/Components/IAddressable.cs new file mode 100644 index 0000000..54218d9 --- /dev/null +++ b/Q1.core/Components/IAddressable.cs @@ -0,0 +1,29 @@ +namespace Q1.core.Components; + +public interface IAddressable +{ + public u8 Read(u16 address); + public void Write(u16 address, u8 value); + public void Clock(); + + public u16 AddressableStart { get; } + public u16 AddressableEnd { get; } +} + +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); + } +}
\ No newline at end of file |
