diff --git a/src/emu/mmu.rs b/src/emu/mmu.rs index b00815f..d6565d0 100644 --- a/src/emu/mmu.rs +++ b/src/emu/mmu.rs @@ -1,5 +1,5 @@ use crate::emu::iomem::MemoryMappedIO; -use crate::emu::mem::RamMemory; +use crate::emu::ram::RamMemory; use crate::misc::emulator_error::DeviceType::MMU; use crate::misc::emulator_error::EmulatorError::UnreachableMemory; @@ -42,7 +42,8 @@ impl Memory for MappedMemory { self.memory_mapped_io.try_get_byte(address) } RAM_MEM_START..=RAM_MEM_END => { - self.ram_memory.try_get_byte(address) + let memory_index = address - RAM_MEM_START; + self.ram_memory.try_get_byte(memory_index) } _ => { Err(UnreachableMemory(MMU, address)) } }?; diff --git a/src/emu/mod.rs b/src/emu/mod.rs index 0eaa0f9..a2169e4 100644 --- a/src/emu/mod.rs +++ b/src/emu/mod.rs @@ -1,4 +1,4 @@ pub mod cpu; pub mod mmu; -pub mod mem; +pub mod ram; pub mod iomem; \ No newline at end of file diff --git a/src/emu/mem.rs b/src/emu/ram.rs similarity index 92% rename from src/emu/mem.rs rename to src/emu/ram.rs index 67551d4..78f7476 100644 --- a/src/emu/mem.rs +++ b/src/emu/ram.rs @@ -4,7 +4,8 @@ use crate::misc::emulator_error::DeviceType::RAM; use crate::misc::emulator_error::EmulatorError; use crate::misc::result::EmulatorResult; -const MEM_LENGTH: usize = 2 << 24; +const MAPPED_MEMORY_NOT_REQUIRED: u8 = 8; +const MEM_LENGTH: usize = (2 << 24) - (MAPPED_MEMORY_NOT_REQUIRED as usize); #[derive(Clone, Debug)] pub struct RamMemory { @@ -45,7 +46,7 @@ impl Memory for RamMemory { #[cfg(test)] mod tests{ - use crate::emu::mem::RamMemory; + use crate::emu::ram::RamMemory; use crate::emu::mmu::Memory; const EXAMPLE_ADDRESS:u32=0x24; diff --git a/src/main.rs b/src/main.rs index 6638896..2d557e4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ use simple_logger::SimpleLogger; use crate::emu::iomem::MemoryMappedIO; -use crate::emu::mem::RamMemory; +use crate::emu::ram::RamMemory; use crate::emu::mmu::{Memory, MappedMemory}; use crate::misc::emulator_error::EmulatorError; use crate::misc::result::EmulatorResult;