From 28101de56231252ca0cfa6a9f107b75112c9acad Mon Sep 17 00:00:00 2001 From: Ben Bridle Date: Wed, 31 Jan 2024 07:38:50 +1300 Subject: Implement new file device interface This is a complete redesign of the file device. The most notable addition is the ability to ascend and descend the file tree. --- src/devices.rs | 64 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) (limited to 'src/devices.rs') diff --git a/src/devices.rs b/src/devices.rs index 5b274c9..e1a00f7 100644 --- a/src/devices.rs +++ b/src/devices.rs @@ -182,22 +182,22 @@ impl DeviceBus for StandardDevices { // Stream // File - 0xA0 => read_b!(self.file.file.is_some()), - 0xA1 => read_b!(self.file.operation_state), - 0xA2 => no_read!(), - 0xA3 => no_read!(), - 0xA4 => read_hh!(self.file.pointer), - 0xA5 => read_hl!(self.file.pointer), - 0xA6 => read_lh!(self.file.pointer), - 0xA7 => read_ll!(self.file.pointer), - 0xA8 => self.file.read(), - 0xA9 => self.file.read(), - 0xAA => no_read!(), - 0xAB => no_read!(), - 0xAC => read_hh!(self.file.file_size), - 0xAD => read_hl!(self.file.file_size), - 0xAE => read_lh!(self.file.file_size), - 0xAF => read_ll!(self.file.file_size), + 0xA0 => read_b!(self.file.entry.is_some()), + 0xA1 => read_b!(self.file.move_success), + 0xA2 => self.file.name_buffer.read_byte(), + 0xA3 => read_b!(self.file.entry_type()), + 0xA4 => self.file.read_byte(), + 0xA5 => self.file.read_byte(), + 0xA6 => self.file.read_child_name(), + 0xA7 => read_b!(self.file.child_type()), + 0xA8 => read_hh!(self.file.pointer()), + 0xA9 => read_hl!(self.file.pointer()), + 0xAA => read_lh!(self.file.pointer()), + 0xAB => read_ll!(self.file.pointer()), + 0xAC => read_hh!(self.file.length()), + 0xAD => read_hl!(self.file.length()), + 0xAE => read_lh!(self.file.length()), + 0xAF => read_ll!(self.file.length()), _ => unimplemented!("Reading from device port 0x{port:02x}"), } @@ -310,22 +310,22 @@ impl DeviceBus for StandardDevices { 0x8E => no_write!(), 0x8F => no_write!(), // File - 0xA0 => self.file.push_name_byte(val), - 0xA1 => no_write!(), - 0xA2 => no_write!(), - 0xA3 => no_write!(), - 0xA4 => write_hh!(self.file.pointer), - 0xA5 => write_hl!(self.file.pointer), - 0xA6 => write_lh!(self.file.pointer), - 0xA7 => write_ll!(self.file.pointer), - 0xA8 => no_write!(), - 0xA9 => no_write!(), - 0xAA => no_write!(), - 0xAB => no_write!(), - 0xAC => write_hh!(self.file.file_size), - 0xAD => write_hl!(self.file.file_size), - 0xAE => write_lh!(self.file.file_size), - 0xAF => { write_ll!(self.file.file_size); self.file.set_file_size() }, + 0xA0 => self.file.write_to_open_port(val), + 0xA1 => self.file.write_to_move_port(val), + 0xA2 => self.file.set_name_pointer(val), + 0xA3 => self.file.ascend_to_parent(), + 0xA4 => self.file.write_byte(val), + 0xA5 => self.file.write_byte(val), + 0xA6 => self.file.set_child_name_pointer(val), + 0xA7 => self.file.descend_to_child(), + 0xA8 => write_hh!(self.file.new_pointer), + 0xA9 => write_hl!(self.file.new_pointer), + 0xAA => write_lh!(self.file.new_pointer), + 0xAB => { write_ll!(self.file.new_pointer); self.file.commit_pointer() }, + 0xAC => write_hh!(self.file.new_length), + 0xAD => write_hl!(self.file.new_length), + 0xAE => write_lh!(self.file.new_length), + 0xAF => { write_ll!(self.file.new_length); self.file.commit_length() }, // Bytestreams 0x96 => self.stream.write_stdout(val), -- cgit v1.2.3-70-g09d2