mirror of
https://github.com/kirjavascript/trueLMAO.git
synced 2024-06-02 19:47:21 -04:00
implemented work ram
This commit is contained in:
parent
a3e16e6429
commit
e30e60fa24
|
@ -25,10 +25,7 @@ impl Emulator {
|
|||
|
||||
let buf: Vec<u8> = include_bytes!("../../notes/res/s1.bin").to_vec();
|
||||
|
||||
let mem = mem::Mem {
|
||||
rom: rom::Rom::from_vec(buf),
|
||||
};
|
||||
|
||||
let mem = mem::Mem::new(rom::Rom::from_vec(buf));
|
||||
|
||||
let int_ctrl = AutoInterruptController::new();
|
||||
let mut core = ConfiguredCore::new_with(0x206, int_ctrl, mem);
|
||||
|
|
|
@ -3,7 +3,6 @@ use r68k_emu::ram::AddressSpace;
|
|||
use crate::rom::Rom;
|
||||
|
||||
// file:///home/cake/dev/trueLMAO/target/doc/src/r68k_emu/ram/pagedmem.rs.html#102-140
|
||||
// wrapping_add
|
||||
|
||||
pub struct Mem {
|
||||
pub rom: Rom,
|
||||
|
@ -30,26 +29,53 @@ impl AddressBus for Mem {
|
|||
_ => todo!(),
|
||||
}
|
||||
}
|
||||
fn read_word(&self, _address_space: AddressSpace, address: u32) -> u32 {
|
||||
fn read_word(&self, address_space: AddressSpace, address: u32) -> u32 {
|
||||
match address {
|
||||
0..=0x3FFFFE => self.rom.read_word(address) as _,
|
||||
// 0xFF0000..=0xFFFFFE => self.work_ram[address as usize - 0xFF0000] as _,
|
||||
0..=0x3FFFFF => self.rom.read_word(address) as _,
|
||||
0xFF0000..=0xFFFFFE => {
|
||||
self.read_byte(address_space, address) << 8
|
||||
| self.read_byte(address_space, address + 1)
|
||||
},
|
||||
_ => todo!(),
|
||||
}
|
||||
}
|
||||
fn read_long(&self, _address_space: AddressSpace, address: u32) -> u32 {
|
||||
fn read_long(&self, address_space: AddressSpace, address: u32) -> u32 {
|
||||
match address {
|
||||
0..=0x3FFFFF => self.rom.read_long(address),
|
||||
0xFF0000..=0xFFFFFC => {
|
||||
self.read_word(address_space, address) << 16
|
||||
| self.read_word(address_space, address + 2)
|
||||
},
|
||||
_ => todo!(),
|
||||
}
|
||||
}
|
||||
fn write_byte(&mut self, _address_space: AddressSpace, address: u32, value: u32) {
|
||||
todo!();
|
||||
match address {
|
||||
0..=0x3FFFFF => {},
|
||||
0xFF0000..=0xFFFFFF => {
|
||||
self.work_ram[address as usize - 0xFF0000] = value as u8;
|
||||
},
|
||||
_ => todo!(),
|
||||
}
|
||||
}
|
||||
fn write_word(&mut self, _address_space: AddressSpace, address: u32, value: u32) {
|
||||
todo!();
|
||||
fn write_word(&mut self, address_space: AddressSpace, address: u32, value: u32) {
|
||||
match address {
|
||||
0..=0x3FFFFF => {},
|
||||
0xFF0000..=0xFFFFFE => {
|
||||
self.write_byte(address_space, address, value >> 8);
|
||||
self.write_byte(address_space, address + 1, value && 0xFF);
|
||||
},
|
||||
_ => todo!(),
|
||||
}
|
||||
}
|
||||
fn write_long(&mut self, _address_space: AddressSpace, address: u32, value: u32) {
|
||||
todo!();
|
||||
match address {
|
||||
0..=0x3FFFFF => {},
|
||||
0xFF0000..=0xFFFFFC => {
|
||||
self.write_word(address_space, address, value >> 16);
|
||||
self.write_work(address_space, address + 2, value && 0xFFFF);
|
||||
},
|
||||
_ => todo!(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,11 +13,11 @@ impl Rom {
|
|||
}
|
||||
|
||||
pub fn read_word(&self, addr: u32) -> u16 {
|
||||
((self.read_byte(addr) as u16) << 8) + self.read_byte(addr + 1) as u16
|
||||
((self.read_byte(addr) as u16) << 8) | self.read_byte(addr + 1) as u16
|
||||
}
|
||||
|
||||
pub fn read_long(&self, addr: u32) -> u32 {
|
||||
((self.read_word(addr) as u32) << 16) + self.read_word(addr + 2) as u32
|
||||
((self.read_word(addr) as u32) << 16) | self.read_word(addr + 2) as u32
|
||||
}
|
||||
|
||||
pub fn read_string(&self, range: std::ops::Range<usize>) -> String {
|
||||
|
|
Loading…
Reference in a new issue