diff options
Diffstat (limited to 'src/devices/scratch.rs')
-rw-r--r-- | src/devices/scratch.rs | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/src/devices/scratch.rs b/src/devices/scratch.rs deleted file mode 100644 index 950f87a..0000000 --- a/src/devices/scratch.rs +++ /dev/null @@ -1,61 +0,0 @@ -macro_rules! then_inc { - ($v:expr) => {{ - $v = $v.wrapping_add(1); - $v as usize - }}; -} - -pub struct ScratchDevice { - memory: Vec<u8>, - pub max_capacity: u32, - pub pointer_1: u32, - pub pointer_2: u32, -} - -impl ScratchDevice { - pub fn new() -> Self { - Self { - memory: Vec::new(), - max_capacity: 16 * 65536, - - pointer_1: 0, - pointer_2: 0, - } - } - - pub fn read_head_1(&mut self) -> u8 { - let i = then_inc!(self.pointer_1); - self.read_byte(i) - } - - pub fn read_head_2(&mut self) -> u8 { - let i = then_inc!(self.pointer_2); - self.read_byte(i) - } - - pub fn write_head_1(&mut self, value: u8) { - let i = then_inc!(self.pointer_1); - self.write_byte(i, value); - } - - pub fn write_head_2(&mut self, value: u8) { - let i = then_inc!(self.pointer_2); - self.write_byte(i, value); - } - - fn read_byte(&self, pointer: usize) -> u8 { - match self.memory.get(pointer as usize) { - Some(value) => *value, - None => 0, - } - } - - fn write_byte(&mut self, pointer: usize, value: u8) { - if pointer < self.max_capacity as usize { - if pointer >= self.memory.len() { - self.memory.resize(pointer + 1, 0); - } - self.memory[pointer] = value; - } - } -} |