[ram] Normalize memory access across memory devices
This commit is contained in:
@@ -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)) }
|
||||
}?;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
pub mod cpu;
|
||||
pub mod mmu;
|
||||
pub mod mem;
|
||||
pub mod ram;
|
||||
pub mod iomem;
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user