mirror of
https://github.com/transistorfet/moa.git
synced 2025-02-19 15:31:35 +00:00
Minor fix to RTE
This commit is contained in:
parent
5304df2a9f
commit
ef6fde2a4f
@ -754,17 +754,19 @@ impl M68k {
|
|||||||
Instruction::RTE => {
|
Instruction::RTE => {
|
||||||
self.require_supervisor()?;
|
self.require_supervisor()?;
|
||||||
let sr = self.pop_word()?;
|
let sr = self.pop_word()?;
|
||||||
self.set_sr(sr);
|
|
||||||
let addr = self.pop_long()?;
|
let addr = self.pop_long()?;
|
||||||
self.set_pc(addr)?;
|
|
||||||
if self.cputype >= M68kType::MC68010 {
|
if self.cputype >= M68kType::MC68010 {
|
||||||
let _ = self.pop_word()?;
|
let _ = self.pop_word()?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.set_sr(sr);
|
||||||
|
self.set_pc(addr)?;
|
||||||
},
|
},
|
||||||
Instruction::RTR => {
|
Instruction::RTR => {
|
||||||
let ccr = self.pop_word()?;
|
let ccr = self.pop_word()?;
|
||||||
self.set_sr((self.state.sr & 0xFF00) | (ccr & 0x00FF));
|
|
||||||
let addr = self.pop_long()?;
|
let addr = self.pop_long()?;
|
||||||
|
self.set_sr((self.state.sr & 0xFF00) | (ccr & 0x00FF));
|
||||||
self.set_pc(addr)?;
|
self.set_pc(addr)?;
|
||||||
},
|
},
|
||||||
Instruction::RTS => {
|
Instruction::RTS => {
|
||||||
|
@ -231,13 +231,13 @@ fn assert_state(cpu: &M68k, system: &System, expected: &TestState) -> Result<(),
|
|||||||
for (i, ins) in expected.prefetch.iter().enumerate() {
|
for (i, ins) in expected.prefetch.iter().enumerate() {
|
||||||
let addr = expected.pc + (i as u32 * 2);
|
let addr = expected.pc + (i as u32 * 2);
|
||||||
let actual = system.get_bus().read_beu16(addr as Address & addr_mask)?;
|
let actual = system.get_bus().read_beu16(addr as Address & addr_mask)?;
|
||||||
assert_value(actual, *ins, &format!("prefetch at {}", addr))?;
|
assert_value(actual, *ins, &format!("prefetch at {:x}", addr))?;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load data bytes into memory
|
// Load data bytes into memory
|
||||||
for (addr, byte) in expected.ram.iter() {
|
for (addr, byte) in expected.ram.iter() {
|
||||||
let actual = system.get_bus().read_u8(*addr as Address & addr_mask)?;
|
let actual = system.get_bus().read_u8(*addr as Address & addr_mask)?;
|
||||||
assert_value(actual, *byte, &format!("ram at {}", addr))?;
|
assert_value(actual, *byte, &format!("ram at {:x}", addr))?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user