summaryrefslogtreecommitdiff
path: root/src/devices.rs
diff options
context:
space:
mode:
authorBen Bridle <bridle.benjamin@gmail.com>2024-01-31 07:38:50 +1300
committerBen Bridle <bridle.benjamin@gmail.com>2024-01-31 07:39:07 +1300
commit28101de56231252ca0cfa6a9f107b75112c9acad (patch)
treef5c82a6894562bfb8ed8ab94e9345cefaa6fb96b /src/devices.rs
parent30d2f099c9edf4f59fbbdd6686988ae7b0622ba2 (diff)
downloadbedrock-pc-28101de56231252ca0cfa6a9f107b75112c9acad.zip
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.
Diffstat (limited to 'src/devices.rs')
-rw-r--r--src/devices.rs64
1 files changed, 32 insertions, 32 deletions
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),