From 2b16a99ba3d1ba6536a1db28471288a0c2274a71 Mon Sep 17 00:00:00 2001 From: Ben Bridle Date: Sun, 24 Dec 2023 19:54:50 +1300 Subject: First commit --- src/device_bus.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/device_bus.rs (limited to 'src/device_bus.rs') diff --git a/src/device_bus.rs b/src/device_bus.rs new file mode 100644 index 0000000..38a1a24 --- /dev/null +++ b/src/device_bus.rs @@ -0,0 +1,19 @@ +use crate::*; + +pub trait DeviceBus { + fn read_u8(&mut self, port: u8) -> u8; + + fn write_u8(&mut self, value: u8, port: u8) -> Option; + + fn read_u16(&mut self, port: u8) -> u16 { + let high = self.read_u8(port); + let low = self.read_u8(port.wrapping_add(1)); + u16::from_be_bytes([high, low]) + } + + fn write_u16(&mut self, value: u16, port: u8) -> Option { + let [h, l] = value.to_be_bytes(); + self.write_u8(h, port); + self.write_u8(l, port.wrapping_add(1)) + } +} -- cgit v1.2.3-70-g09d2