From 4cb95575feedda5e2006d706a9e85db6569043ca Mon Sep 17 00:00:00 2001 From: Astatin Date: Sun, 29 Jun 2025 00:32:41 +0200 Subject: Fix (rewrite ?) FIFO serial communication --- src/io.rs | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) (limited to 'src/io.rs') diff --git a/src/io.rs b/src/io.rs index bd36b3a..4b7ca08 100644 --- a/src/io.rs +++ b/src/io.rs @@ -35,14 +35,29 @@ pub trait Window { } pub trait Serial { - // Should not be blocking - fn write(&mut self, byte: u8); - fn read(&mut self) -> u8; - - fn new_transfer(&mut self) -> bool; // since last read - fn clock_master(&mut self) -> bool; + fn read_data(&self) -> u8; + fn read_control(&self) -> u8; + fn write_data(&mut self, data: u8); + fn write_control(&mut self, control: u8); + fn update_serial(&mut self, cycles: u128) -> bool; +} - fn set_clock_master(&mut self, clock_master: bool); +impl Serial for Box { + fn read_data(&self) -> u8 { + (**self).read_data() + } + fn read_control(&self) -> u8 { + (**self).read_data() + } + fn write_data(&mut self, data: u8) { + (**self).write_data(data); + } + fn write_control(&mut self, control: u8) { + (**self).write_control(control); + } + fn update_serial(&mut self, cycles: u128) -> bool { + (**self).update_serial(cycles) + } } pub trait Audio { @@ -154,7 +169,7 @@ impl Gameboy