use log::debug; use crate::busses::{AddressBus, DataBus}; use crate::constants::SIZE_32KB; use crate::control_signals::ControlSignals; use crate::cycle_stages::CycleStages; pub struct Memory { data: [u8; SIZE_32KB] } impl Memory { pub fn peek(&self, offset: u16) -> u8 { self.data[offset as usize] } pub fn poke(&mut self, new_value: u8, offset: u16) { self.data[offset as usize] = new_value; } pub fn clear(&mut self) { for i in 0..SIZE_32KB { self.poke(0x00, i as u16); } } pub fn new() -> Self { Memory { data: [0; SIZE_32KB] } } } impl Default for Memory { fn default() -> Self { Memory::new() } } impl CycleStages for Memory { fn falling_edge(address_bus: AddressBus, data_bus: DataBus, state: ControlSignals) { todo!() } fn low_state(address_bus: AddressBus, data_bus: DataBus, state: ControlSignals) { todo!() } fn rising_edge(address_bus: AddressBus, data_bus: DataBus, state: ControlSignals) { todo!() } fn high_state(address_bus: AddressBus, data_bus: DataBus, state: ControlSignals) { todo!() } }