[ref] Cleanup memory

This commit is contained in:
2024-02-19 13:46:27 +05:30
parent 8714e906bc
commit a6c95eccaf
7 changed files with 19 additions and 29 deletions

View File

@@ -1,6 +1,5 @@
use crate::emu::graphics::GraphicsProcessor; use crate::emu::graphics::GraphicsProcessor;
use crate::emu::mmu::{ Memory}; use crate::emu::memory::{Memory, RamMemory};
use crate::emu::ram::RamMemory;
use crate::misc::endian::{read_big_endian_u24, write_big_endian_u24}; use crate::misc::endian::{read_big_endian_u24, write_big_endian_u24};
use crate::misc::result::EmulatorResult; use crate::misc::result::EmulatorResult;

View File

@@ -1,6 +1,6 @@
use std::cell::{Ref, RefCell}; use std::cell::{Ref, RefCell};
use crate::emu::mmu::Memory; use crate::emu::memory::Memory;
use crate::emu::ram::RamMemory; use crate::emu::memory::RamMemory;
use crate::misc::emulator_error::DeviceType::GRAPHICS; use crate::misc::emulator_error::DeviceType::GRAPHICS;
use crate::misc::emulator_error::EmulatorError; use crate::misc::emulator_error::EmulatorError;
use crate::misc::result::EmulatorResult; use crate::misc::result::EmulatorResult;

View File

@@ -1,14 +1,20 @@
use std::cell::RefCell; use std::cell::RefCell;
use crate::emu::mmu::Memory;
use crate::misc::emulator_error::DeviceType::RAM; use crate::misc::emulator_error::DeviceType::RAM;
use crate::misc::emulator_error::EmulatorError; use crate::misc::emulator_error::EmulatorError;
use crate::misc::endian::read_big_endian_u24; use crate::misc::endian::read_big_endian_u24;
use crate::misc::result::EmulatorResult; use crate::misc::result::EmulatorResult;
const MAPPED_MEMORY_NOT_REQUIRED: u8 = 8;
pub const MEM_LENGTH: usize = 2 << 23; pub const MEM_LENGTH: usize = 2 << 23;
/// mapped I/O + RAM.
pub trait Memory {
/// Get the value (24bit) at the address(24bit)
fn try_get_byte(&self, address: u32) -> EmulatorResult<u8>;
/// Set the value at the 24bit address
fn try_set_byte(&self, address: u32, value: u8) -> EmulatorResult<()>;
}
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct RamMemory { pub struct RamMemory {
pub data: RefCell<Box<[u8; MEM_LENGTH]>>, pub data: RefCell<Box<[u8; MEM_LENGTH]>>,
@@ -54,8 +60,6 @@ impl RamMemory {
} }
impl Memory for RamMemory { impl Memory for RamMemory {
fn try_get_byte(&self, address: u32) -> EmulatorResult<u8> { fn try_get_byte(&self, address: u32) -> EmulatorResult<u8> {
log::trace!("Fetch RAM memory at address {}",address); log::trace!("Fetch RAM memory at address {}",address);
@@ -79,8 +83,8 @@ impl Memory for RamMemory {
#[cfg(test)] #[cfg(test)]
mod tests{ mod tests{
use crate::emu::ram::RamMemory; use crate::emu::memory::RamMemory;
use crate::emu::mmu::Memory; use crate::emu::memory::Memory;
const EXAMPLE_ADDRESS:u32=0x24; const EXAMPLE_ADDRESS:u32=0x24;
#[test] #[test]
@@ -99,3 +103,5 @@ mod tests{
assert_eq!(EXAMPLE_DATA,byte_after); assert_eq!(EXAMPLE_DATA,byte_after);
} }
} }

View File

@@ -1,11 +0,0 @@
use crate::misc::result::EmulatorResult;
/// mapped I/O + RAM.
pub trait Memory {
/// Get the value (24bit) at the address(24bit)
fn try_get_byte(&self, address: u32) -> EmulatorResult<u8>;
/// Set the value at the 24bit address
fn try_set_byte(&self, address: u32, value: u8) -> EmulatorResult<()>;
}

View File

@@ -1,4 +1,3 @@
pub mod cpu; pub mod cpu;
pub mod mmu; pub mod memory;
pub mod ram;
pub mod graphics; pub mod graphics;

View File

@@ -9,7 +9,7 @@ use sdl2::render::WindowCanvas;
use simple_logger::SimpleLogger; use simple_logger::SimpleLogger;
use crate::emu::cpu::Cpu; use crate::emu::cpu::Cpu;
use crate::emu::graphics::GraphicsProcessor; use crate::emu::graphics::GraphicsProcessor;
use crate::emu::ram::{MEM_LENGTH, RamMemory}; use crate::emu::memory::{MEM_LENGTH, RamMemory};
use crate::graphics::graphics_adapter::SDLGraphicsAdapter; use crate::graphics::graphics_adapter::SDLGraphicsAdapter;
use crate::misc::result::EmulatorResult; use crate::misc::result::EmulatorResult;

View File

@@ -7,9 +7,6 @@ use crate::misc::emulator_error::EmulatorError::EmulatorIOError;
pub enum DeviceType { pub enum DeviceType {
CPU, CPU,
RAM, RAM,
MMU,
/// Program counter
PC,
KEYBOARD, KEYBOARD,
AUDIO, AUDIO,
GRAPHICS, GRAPHICS,