[dbg] Add results

This commit is contained in:
2024-02-17 09:54:41 +05:30
parent cf0c57b159
commit 9b853f9ff7
7 changed files with 91 additions and 41 deletions

View File

@@ -1,11 +1,12 @@
use crate::emu::mmu::Memory;
use crate::misc::emulator_error::EmulatorError;
use crate::misc::endian::MemoryOperations;
use crate::misc::result::EmulatorResult;
#[derive(Debug, Copy, Clone)]
pub struct MemoryMappedIO {
//FIXME use a keyboard
keyboard_bytes: [u8;2],
keyboard_bytes: [u8; 2],
program_counter: [u8; 3],
//FIXME use a device
pixel_reg: u8,
@@ -16,7 +17,7 @@ pub struct MemoryMappedIO {
impl MemoryMappedIO {
pub fn new() -> MemoryMappedIO {
MemoryMappedIO {
keyboard_bytes: [0,0],
keyboard_bytes: [0, 0],
program_counter: [0, 0, 0],
pixel_reg: 0,
audio_sample_address_base: [0, 0],
@@ -42,31 +43,32 @@ const AUDIO_SAMPLE_BASE_LEN: u32 = 2;
const AUDIO_SAMPLE_BASE_END: u32 = AUDIO_SAMPLE_BASE_START + AUDIO_SAMPLE_BASE_LEN - 1;
impl Memory for MemoryMappedIO {
fn get_byte(&self, address: u32) -> u8 {
match address {
fn try_get_byte(&self, address: u32) -> EmulatorResult<u8> {
let byte = match address {
KEYBOARD_BIT_START..=KEYBOARD_BIT_END => {
let addr_usize = address as usize;
let keyboard_byte = self.keyboard_bytes[addr_usize];
log::trace!("Fetching keyboard({}) byte segment {} -> {}",MemoryOperations::read_big_endian_u16(&self.keyboard_bytes),address,keyboard_byte);
keyboard_byte
},
}
PC_START_ADDR..=PC_END_ADDR => {
let pc_index = (address - PC_START_ADDR) as usize;
let pc_byte = self.program_counter[pc_index];
log::trace!("Fetching PC({}) byte segment {} -> {}",MemoryOperations::read_big_endian_u24(&self.program_counter),pc_index,pc_byte);
pc_byte
},
}
PIXEL_BASE => {
log::trace!("Fetching pixel base reg {}",self.pixel_reg);
self.pixel_reg
},
}
AUDIO_SAMPLE_BASE_START => self.audio_sample_address_base[0],
AUDIO_SAMPLE_BASE_END => self.audio_sample_address_base[1],
_ => { panic!("Unreachable code") }
}
};
Ok(byte)
}
fn set_byte(&mut self, address: u32, val: u8) {
fn try_set_byte(&mut self, address: u32, val: u8) -> EmulatorResult<()> {
todo!()
}
}