mirror of
https://github.com/transistorfet/moa.git
synced 2025-02-06 21:30:11 +00:00
Fixed some issue with m68k
Some debug code was enabled that prevented illegal instructions from being handled normally with a processor exception The brief instruction word decoding could cause an illegal instruction if it didn't match the docs, but the actual implementation would not complain in those cases, so I modified it to not perform validation for <=MC68010 Increment and Decrement addressing modes, when using the stack pointer, will always inc/dec by at least 2 bytes, even if it's a byte operation, to keep the stack aligned to the nearest word boundary
This commit is contained in:
parent
27f71b0f33
commit
0582625b5e
@ -645,22 +645,35 @@ impl M68kDecoder {
|
||||
|
||||
fn decode_extension_word(&mut self, memory: &mut dyn Addressable, areg: Option<u8>) -> Result<Target, Error> {
|
||||
let brief_extension = self.read_instruction_word(memory)?;
|
||||
let use_full = (brief_extension & 0x0100) != 0;
|
||||
|
||||
let use_brief = (brief_extension & 0x0100) == 0;
|
||||
|
||||
// Decode Index Register
|
||||
let xreg_num = ((brief_extension & 0x7000) >> 12) as u8;
|
||||
let xreg = if (brief_extension & 0x8000) == 0 { XRegister::DReg(xreg_num) } else { XRegister::AReg(xreg_num) };
|
||||
let size = if (brief_extension & 0x0800) == 0 { Size::Word } else { Size::Long };
|
||||
let scale = ((brief_extension & 0x0600) >> 9) as u8;
|
||||
let index_reg = IndexRegister { xreg, scale, size };
|
||||
|
||||
if !use_full {
|
||||
if self.cputype <= M68kType::MC68010 {
|
||||
let index_reg = IndexRegister { xreg, scale: 0, size };
|
||||
let displacement = sign_extend_to_long((brief_extension & 0x00FF) as u32, Size::Byte);
|
||||
|
||||
match areg {
|
||||
Some(areg) => Ok(Target::IndirectRegOffset(BaseRegister::AReg(areg), Some(index_reg), displacement)),
|
||||
None => Ok(Target::IndirectRegOffset(BaseRegister::PC, Some(index_reg), displacement)),
|
||||
}
|
||||
} else if self.cputype >= M68kType::MC68020 {
|
||||
} else if use_brief {
|
||||
let scale = ((brief_extension & 0x0600) >> 9) as u8;
|
||||
let index_reg = IndexRegister { xreg, scale, size };
|
||||
let displacement = sign_extend_to_long((brief_extension & 0x00FF) as u32, Size::Byte);
|
||||
|
||||
match areg {
|
||||
Some(areg) => Ok(Target::IndirectRegOffset(BaseRegister::AReg(areg), Some(index_reg), displacement)),
|
||||
None => Ok(Target::IndirectRegOffset(BaseRegister::PC, Some(index_reg), displacement)),
|
||||
}
|
||||
} else {
|
||||
let scale = ((brief_extension & 0x0600) >> 9) as u8;
|
||||
let index_reg = IndexRegister { xreg, scale, size };
|
||||
|
||||
let use_base_reg = (brief_extension & 0x0080) == 0;
|
||||
let use_index = (brief_extension & 0x0040) == 0;
|
||||
let use_sub_indirect = (brief_extension & 0x0007) != 0;
|
||||
@ -680,8 +693,6 @@ impl M68kDecoder {
|
||||
(true, true) => Ok(Target::IndirectMemoryPreindexed(opt_base_reg, opt_index_reg, base_disp, outer_disp)),
|
||||
(true, false) => Ok(Target::IndirectMemoryPostindexed(opt_base_reg, opt_index_reg, base_disp, outer_disp)),
|
||||
}
|
||||
} else {
|
||||
Err(Error::processor(Exceptions::IllegalInstruction as u32))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -70,9 +70,9 @@ impl M68k {
|
||||
Status::Running => {
|
||||
match self.cycle_one(system) {
|
||||
Ok(diff) => Ok(diff),
|
||||
//Err(Error { err: ErrorType::Processor, native, .. }) => {
|
||||
Err(Error { err: ErrorType::Processor, native, .. }) => {
|
||||
// TODO match arm conditional is temporary: illegal instructions generate a top level error in order to debug and fix issues with decode
|
||||
Err(Error { err: ErrorType::Processor, native, .. }) if native != Exceptions::IllegalInstruction as u32 => {
|
||||
//Err(Error { err: ErrorType::Processor, native, .. }) if native != Exceptions::IllegalInstruction as u32 => {
|
||||
self.exception(native as u8, false)?;
|
||||
Ok(4)
|
||||
},
|
||||
@ -735,6 +735,7 @@ impl M68k {
|
||||
Instruction::SWAP(reg) => {
|
||||
let value = self.state.d_reg[reg as usize];
|
||||
self.state.d_reg[reg as usize] = ((value & 0x0000FFFF) << 16) | ((value & 0xFFFF0000) >> 16);
|
||||
self.set_logic_flags(self.state.d_reg[reg as usize], Size::Long);
|
||||
},
|
||||
Instruction::TAS(target) => {
|
||||
let value = self.get_target_value(target, Size::Byte, Used::Twice)?;
|
||||
@ -917,16 +918,11 @@ impl M68k {
|
||||
self.get_address_sized(addr as Address, size)
|
||||
},
|
||||
Target::IndirectARegInc(reg) => {
|
||||
let addr = *self.get_a_reg_mut(reg);
|
||||
let result = self.get_address_sized(addr as Address, size);
|
||||
if used != Used::Twice {
|
||||
*self.get_a_reg_mut(reg) += size.in_bytes();
|
||||
}
|
||||
result
|
||||
let addr = self.post_increment_areg_target(reg, size, used);
|
||||
self.get_address_sized(addr as Address, size)
|
||||
},
|
||||
Target::IndirectARegDec(reg) => {
|
||||
*self.get_a_reg_mut(reg) -= size.in_bytes();
|
||||
let addr = *self.get_a_reg_mut(reg);
|
||||
let addr = self.pre_decrement_areg_target(reg, size, Used::Once);
|
||||
self.get_address_sized(addr as Address, size)
|
||||
},
|
||||
Target::IndirectRegOffset(base_reg, index_reg, displacement) => {
|
||||
@ -965,17 +961,11 @@ impl M68k {
|
||||
self.set_address_sized(addr as Address, value, size)?;
|
||||
},
|
||||
Target::IndirectARegInc(reg) => {
|
||||
let addr = *self.get_a_reg_mut(reg);
|
||||
let addr = self.post_increment_areg_target(reg, size, Used::Once);
|
||||
self.set_address_sized(addr as Address, value, size)?;
|
||||
let addr = self.get_a_reg_mut(reg);
|
||||
*addr = (*addr).wrapping_add(size.in_bytes());
|
||||
},
|
||||
Target::IndirectARegDec(reg) => {
|
||||
if used != Used::Twice {
|
||||
let addr = self.get_a_reg_mut(reg);
|
||||
*addr = (*addr).wrapping_sub(size.in_bytes());
|
||||
}
|
||||
let addr = *self.get_a_reg_mut(reg);
|
||||
let addr = self.pre_decrement_areg_target(reg, size, used);
|
||||
self.set_address_sized(addr as Address, value, size)?;
|
||||
},
|
||||
Target::IndirectRegOffset(base_reg, index_reg, displacement) => {
|
||||
@ -1031,6 +1021,33 @@ impl M68k {
|
||||
Ok(addr)
|
||||
}
|
||||
|
||||
pub fn post_increment_areg_target(&mut self, reg: Register, mut size: Size, used: Used) -> u32 {
|
||||
// If using A7 (the stack pointer) then increment by a minimum of 2 bytes to keep it word aligned
|
||||
if reg == 7 && size == Size::Byte {
|
||||
size = Size::Word;
|
||||
}
|
||||
|
||||
let reg_addr = self.get_a_reg_mut(reg);
|
||||
let addr = *reg_addr;
|
||||
if used != Used::Twice {
|
||||
*reg_addr = addr.wrapping_add(size.in_bytes());
|
||||
}
|
||||
addr
|
||||
}
|
||||
|
||||
pub fn pre_decrement_areg_target(&mut self, reg: Register, mut size: Size, used: Used) -> u32 {
|
||||
// If using A7 (the stack pointer) then decrement by a minimum of 2 bytes to keep it word aligned
|
||||
if reg == 7 && size == Size::Byte {
|
||||
size = Size::Word;
|
||||
}
|
||||
|
||||
let reg_addr = self.get_a_reg_mut(reg);
|
||||
if used != Used::Twice {
|
||||
*reg_addr = (*reg_addr).wrapping_sub(size.in_bytes());
|
||||
}
|
||||
*reg_addr
|
||||
}
|
||||
|
||||
pub fn get_address_sized(&mut self, addr: Address, size: Size) -> Result<u32, Error> {
|
||||
match size {
|
||||
Size::Byte => self.port.read_u8(addr).map(|value| value as u32),
|
||||
|
@ -1,129 +1,129 @@
|
||||
Last run on 2022-09-10 at commit 1a3d8cc0c575ff4f5fa7e9fe9d9cb381ff7fd04d
|
||||
Last run on 2022-09-10 at commit 27f71b0f3317b8d804e2750e8e37eeb57ee06274
|
||||
|
||||
ABCD.json completed: 261 passed, 7804 FAILED
|
||||
ADD.b.json completed: 6520 passed, 1545 FAILED
|
||||
ADD.l.json completed: 4583 passed, 3482 FAILED
|
||||
ADD.w.json completed: 4579 passed, 3486 FAILED
|
||||
ADDA.l.json completed: 4843 passed, 3222 FAILED
|
||||
ADDA.w.json completed: 4916 passed, 3149 FAILED
|
||||
ABCD.json completed: 301 passed, 7764 FAILED
|
||||
ADD.b.json completed, all passed!
|
||||
ADD.l.json completed: 5143 passed, 2922 FAILED
|
||||
ADD.w.json completed: 5117 passed, 2948 FAILED
|
||||
ADDA.l.json completed: 5372 passed, 2693 FAILED
|
||||
ADDA.w.json completed: 5431 passed, 2634 FAILED
|
||||
ADDX.b.json completed: 4051 passed, 4014 FAILED
|
||||
ADDX.l.json completed: 4065 passed, 4000 FAILED
|
||||
ADDX.w.json completed: 4012 passed, 4053 FAILED
|
||||
AND.b.json completed: 6532 passed, 1533 FAILED
|
||||
AND.l.json completed: 4111 passed, 3954 FAILED
|
||||
AND.w.json completed: 4080 passed, 3985 FAILED
|
||||
AND.b.json completed, all passed!
|
||||
AND.l.json completed: 4745 passed, 3320 FAILED
|
||||
AND.w.json completed: 4668 passed, 3397 FAILED
|
||||
ANDItoCCR.json completed, all passed!
|
||||
ANDItoSR.json completed, all passed!
|
||||
ASL.b.json completed: 3941 passed, 4124 FAILED
|
||||
ASL.l.json completed: 3578 passed, 4487 FAILED
|
||||
ASL.w.json completed: 3645 passed, 4420 FAILED
|
||||
ASL.w.json completed: 3814 passed, 4251 FAILED
|
||||
ASR.b.json completed: 6316 passed, 1749 FAILED
|
||||
ASR.l.json completed: 7007 passed, 1058 FAILED
|
||||
ASR.w.json completed: 5816 passed, 2249 FAILED
|
||||
BCHG.json completed: 6570 passed, 1495 FAILED
|
||||
BCLR.json completed: 6885 passed, 1180 FAILED
|
||||
BSET.json completed: 6616 passed, 1449 FAILED
|
||||
ASR.w.json completed: 5988 passed, 2077 FAILED
|
||||
BCHG.json completed, all passed!
|
||||
BCLR.json completed, all passed!
|
||||
BSET.json completed, all passed!
|
||||
BSR.json completed: 4078 passed, 3987 FAILED
|
||||
BTST.json completed: 6851 passed, 1214 FAILED
|
||||
BTST.json completed: 8052 passed, 13 FAILED
|
||||
Bcc.json completed: 5861 passed, 2204 FAILED
|
||||
CHK.json completed: 0 passed, 8065 FAILED
|
||||
CLR.b.json completed: 6594 passed, 1471 FAILED
|
||||
CLR.l.json completed: 4301 passed, 3764 FAILED
|
||||
CLR.w.json completed: 4327 passed, 3738 FAILED
|
||||
CMP.b.json completed: 6627 passed, 1438 FAILED
|
||||
CMP.l.json completed: 4634 passed, 3431 FAILED
|
||||
CMP.w.json completed: 4597 passed, 3468 FAILED
|
||||
CMPA.l.json completed: 4998 passed, 3067 FAILED
|
||||
CMPA.w.json completed: 3895 passed, 4170 FAILED
|
||||
CLR.b.json completed, all passed!
|
||||
CLR.l.json completed: 4903 passed, 3162 FAILED
|
||||
CLR.w.json completed: 4896 passed, 3169 FAILED
|
||||
CMP.b.json completed, all passed!
|
||||
CMP.l.json completed: 5034 passed, 3031 FAILED
|
||||
CMP.w.json completed: 5024 passed, 3041 FAILED
|
||||
CMPA.l.json completed: 5450 passed, 2615 FAILED
|
||||
CMPA.w.json completed: 4200 passed, 3865 FAILED
|
||||
DBcc.json completed: 5194 passed, 2871 FAILED
|
||||
DIVS.json completed: 539 passed, 7526 FAILED
|
||||
DIVU.json completed: 1093 passed, 6972 FAILED
|
||||
EOR.b.json completed: 6699 passed, 1366 FAILED
|
||||
EOR.l.json completed: 4340 passed, 3725 FAILED
|
||||
EOR.w.json completed: 4399 passed, 3666 FAILED
|
||||
DIVS.json completed: 612 passed, 7453 FAILED
|
||||
DIVU.json completed: 1267 passed, 6798 FAILED
|
||||
EOR.b.json completed, all passed!
|
||||
EOR.l.json completed: 4904 passed, 3161 FAILED
|
||||
EOR.w.json completed: 4930 passed, 3135 FAILED
|
||||
EORItoCCR.json completed: 1067 passed, 6998 FAILED
|
||||
EORItoSR.json completed: 141 passed, 7924 FAILED
|
||||
EXG.json completed, all passed!
|
||||
EXT.l.json completed, all passed!
|
||||
EXT.w.json completed, all passed!
|
||||
JMP.json completed: 533 passed, 7532 FAILED
|
||||
JSR.json completed: 152 passed, 7913 FAILED
|
||||
LEA.json completed: 5726 passed, 2339 FAILED
|
||||
JMP.json completed: 623 passed, 7442 FAILED
|
||||
JSR.json completed: 200 passed, 7865 FAILED
|
||||
LEA.json completed, all passed!
|
||||
LINK.json completed: 7060 passed, 1005 FAILED
|
||||
LSL.b.json completed: 7774 passed, 291 FAILED
|
||||
LSL.l.json completed: 7017 passed, 1048 FAILED
|
||||
LSL.w.json completed: 6545 passed, 1520 FAILED
|
||||
LSL.w.json completed: 6727 passed, 1338 FAILED
|
||||
LSR.b.json completed: 7797 passed, 268 FAILED
|
||||
LSR.l.json completed: 7044 passed, 1021 FAILED
|
||||
LSR.w.json completed: 6609 passed, 1456 FAILED
|
||||
MOVE.b.json completed: 5383 passed, 2682 FAILED
|
||||
MOVE.l.json completed: 2626 passed, 5439 FAILED
|
||||
LSR.w.json completed: 6768 passed, 1297 FAILED
|
||||
MOVE.b.json completed, all passed!
|
||||
MOVE.l.json completed: 3270 passed, 4795 FAILED
|
||||
MOVE.q.json completed, all passed!
|
||||
MOVE.w.json completed: 2709 passed, 5356 FAILED
|
||||
MOVEA.l.json completed: 4827 passed, 3238 FAILED
|
||||
MOVEA.w.json completed: 4813 passed, 3252 FAILED
|
||||
MOVEM.l.json completed: 3286 passed, 4779 FAILED
|
||||
MOVEM.w.json completed: 3324 passed, 4741 FAILED
|
||||
MOVE.w.json completed: 3368 passed, 4697 FAILED
|
||||
MOVEA.l.json completed: 5379 passed, 2686 FAILED
|
||||
MOVEA.w.json completed: 5322 passed, 2743 FAILED
|
||||
MOVEM.l.json completed: 4099 passed, 3966 FAILED
|
||||
MOVEM.w.json completed: 4169 passed, 3896 FAILED
|
||||
MOVEP.l.json completed: 4036 passed, 4029 FAILED
|
||||
MOVEP.w.json completed: 4046 passed, 4019 FAILED
|
||||
MOVEfromSR.json completed: 4456 passed, 3609 FAILED
|
||||
MOVEfromSR.json completed: 5017 passed, 3048 FAILED
|
||||
MOVEfromUSP.json completed, all passed!
|
||||
MOVEtoCCR.json completed: 541 passed, 7524 FAILED
|
||||
MOVEtoSR.json completed: 90 passed, 7975 FAILED
|
||||
MOVEtoCCR.json completed: 614 passed, 7451 FAILED
|
||||
MOVEtoSR.json completed: 96 passed, 7969 FAILED
|
||||
MOVEtoUSP.json completed, all passed!
|
||||
MULS.json completed: 2241 passed, 5824 FAILED
|
||||
MULU.json completed: 4388 passed, 3677 FAILED
|
||||
MULS.json completed: 2548 passed, 5517 FAILED
|
||||
MULU.json completed: 4992 passed, 3073 FAILED
|
||||
NBCD.json completed: 0 passed, 8065 FAILED
|
||||
NEG.b.json completed: 6611 passed, 1454 FAILED
|
||||
NEG.l.json completed: 4461 passed, 3604 FAILED
|
||||
NEG.w.json completed: 4352 passed, 3713 FAILED
|
||||
NEG.b.json completed, all passed!
|
||||
NEG.l.json completed: 5031 passed, 3034 FAILED
|
||||
NEG.w.json completed: 4911 passed, 3154 FAILED
|
||||
NEGX.b.json completed: 0 passed, 8065 FAILED
|
||||
NEGX.l.json completed: 0 passed, 8065 FAILED
|
||||
NEGX.w.json completed: 0 passed, 8065 FAILED
|
||||
NOP.json completed, all passed!
|
||||
NOT.b.json completed: 6636 passed, 1429 FAILED
|
||||
NOT.l.json completed: 4372 passed, 3693 FAILED
|
||||
NOT.w.json completed: 4378 passed, 3687 FAILED
|
||||
OR.b.json completed: 6501 passed, 1564 FAILED
|
||||
OR.l.json completed: 4085 passed, 3980 FAILED
|
||||
OR.w.json completed: 4039 passed, 4026 FAILED
|
||||
NOT.b.json completed, all passed!
|
||||
NOT.l.json completed: 4924 passed, 3141 FAILED
|
||||
NOT.w.json completed: 4957 passed, 3108 FAILED
|
||||
OR.b.json completed, all passed!
|
||||
OR.l.json completed: 4730 passed, 3335 FAILED
|
||||
OR.w.json completed: 4650 passed, 3415 FAILED
|
||||
ORItoCCR.json completed: 987 passed, 7078 FAILED
|
||||
ORItoSR.json completed: 118 passed, 7947 FAILED
|
||||
PEA.json completed: 5798 passed, 2267 FAILED
|
||||
PEA.json completed, all passed!
|
||||
RESET.json completed: 0 passed, 8065 FAILED
|
||||
ROL.b.json completed, all passed!
|
||||
ROL.l.json completed, all passed!
|
||||
ROL.w.json completed: 6961 passed, 1104 FAILED
|
||||
ROL.w.json completed: 7135 passed, 930 FAILED
|
||||
ROR.b.json completed, all passed!
|
||||
ROR.l.json completed, all passed!
|
||||
ROR.w.json completed: 6970 passed, 1095 FAILED
|
||||
ROR.w.json completed: 7141 passed, 924 FAILED
|
||||
ROXL.b.json completed: 8039 passed, 26 FAILED
|
||||
ROXL.l.json completed: 8029 passed, 36 FAILED
|
||||
ROXL.w.json completed: 6941 passed, 1124 FAILED
|
||||
ROXL.w.json completed: 7114 passed, 951 FAILED
|
||||
ROXR.b.json completed: 8037 passed, 28 FAILED
|
||||
ROXR.l.json completed: 8022 passed, 43 FAILED
|
||||
ROXR.w.json completed: 6985 passed, 1080 FAILED
|
||||
ROXR.w.json completed: 7141 passed, 924 FAILED
|
||||
RTE.json completed: 0 passed, 8065 FAILED
|
||||
RTR.json completed: 0 passed, 8065 FAILED
|
||||
RTS.json completed: 11 passed, 8054 FAILED
|
||||
SBCD.json completed: 776 passed, 7289 FAILED
|
||||
SUB.b.json completed: 6567 passed, 1498 FAILED
|
||||
SUB.l.json completed: 4537 passed, 3528 FAILED
|
||||
SUB.w.json completed: 4567 passed, 3498 FAILED
|
||||
SUBA.l.json completed: 4787 passed, 3278 FAILED
|
||||
SUBA.w.json completed: 4842 passed, 3223 FAILED
|
||||
SBCD.json completed: 884 passed, 7181 FAILED
|
||||
SUB.b.json completed, all passed!
|
||||
SUB.l.json completed: 5093 passed, 2972 FAILED
|
||||
SUB.w.json completed: 5121 passed, 2944 FAILED
|
||||
SUBA.l.json completed: 5329 passed, 2736 FAILED
|
||||
SUBA.w.json completed: 5386 passed, 2679 FAILED
|
||||
SUBX.b.json completed: 3861 passed, 4204 FAILED
|
||||
SUBX.l.json completed: 3955 passed, 4110 FAILED
|
||||
SUBX.w.json completed: 3876 passed, 4189 FAILED
|
||||
SWAP.json completed: 509 passed, 7556 FAILED
|
||||
Scc.json completed: 6637 passed, 1428 FAILED
|
||||
TAS.json completed: 6655 passed, 1410 FAILED
|
||||
SWAP.json completed, all passed!
|
||||
Scc.json completed, all passed!
|
||||
TAS.json completed, all passed!
|
||||
TRAP.json completed, all passed!
|
||||
TRAPV.json completed, all passed!
|
||||
TST.b.json completed: 6566 passed, 1499 FAILED
|
||||
TST.l.json completed: 4381 passed, 3684 FAILED
|
||||
TST.w.json completed: 4362 passed, 3703 FAILED
|
||||
TST.b.json completed, all passed!
|
||||
TST.l.json completed: 4963 passed, 3102 FAILED
|
||||
TST.w.json completed: 4928 passed, 3137 FAILED
|
||||
UNLINK.json completed, all passed!
|
||||
|
||||
passed: 594436, failed: 405624, total 59%
|
||||
completed in 16m 7s
|
||||
passed: 653776, failed: 346284, total 65%
|
||||
completed in 18m 5s
|
||||
|
129
tests/harte_tests/previous.txt
Normal file
129
tests/harte_tests/previous.txt
Normal file
@ -0,0 +1,129 @@
|
||||
Last run on 2022-09-10 at commit 1a3d8cc0c575ff4f5fa7e9fe9d9cb381ff7fd04d
|
||||
|
||||
ABCD.json completed: 261 passed, 7804 FAILED
|
||||
ADD.b.json completed: 6520 passed, 1545 FAILED
|
||||
ADD.l.json completed: 4583 passed, 3482 FAILED
|
||||
ADD.w.json completed: 4579 passed, 3486 FAILED
|
||||
ADDA.l.json completed: 4843 passed, 3222 FAILED
|
||||
ADDA.w.json completed: 4916 passed, 3149 FAILED
|
||||
ADDX.b.json completed: 4051 passed, 4014 FAILED
|
||||
ADDX.l.json completed: 4065 passed, 4000 FAILED
|
||||
ADDX.w.json completed: 4012 passed, 4053 FAILED
|
||||
AND.b.json completed: 6532 passed, 1533 FAILED
|
||||
AND.l.json completed: 4111 passed, 3954 FAILED
|
||||
AND.w.json completed: 4080 passed, 3985 FAILED
|
||||
ANDItoCCR.json completed, all passed!
|
||||
ANDItoSR.json completed, all passed!
|
||||
ASL.b.json completed: 3941 passed, 4124 FAILED
|
||||
ASL.l.json completed: 3578 passed, 4487 FAILED
|
||||
ASL.w.json completed: 3645 passed, 4420 FAILED
|
||||
ASR.b.json completed: 6316 passed, 1749 FAILED
|
||||
ASR.l.json completed: 7007 passed, 1058 FAILED
|
||||
ASR.w.json completed: 5816 passed, 2249 FAILED
|
||||
BCHG.json completed: 6570 passed, 1495 FAILED
|
||||
BCLR.json completed: 6885 passed, 1180 FAILED
|
||||
BSET.json completed: 6616 passed, 1449 FAILED
|
||||
BSR.json completed: 4078 passed, 3987 FAILED
|
||||
BTST.json completed: 6851 passed, 1214 FAILED
|
||||
Bcc.json completed: 5861 passed, 2204 FAILED
|
||||
CHK.json completed: 0 passed, 8065 FAILED
|
||||
CLR.b.json completed: 6594 passed, 1471 FAILED
|
||||
CLR.l.json completed: 4301 passed, 3764 FAILED
|
||||
CLR.w.json completed: 4327 passed, 3738 FAILED
|
||||
CMP.b.json completed: 6627 passed, 1438 FAILED
|
||||
CMP.l.json completed: 4634 passed, 3431 FAILED
|
||||
CMP.w.json completed: 4597 passed, 3468 FAILED
|
||||
CMPA.l.json completed: 4998 passed, 3067 FAILED
|
||||
CMPA.w.json completed: 3895 passed, 4170 FAILED
|
||||
DBcc.json completed: 5194 passed, 2871 FAILED
|
||||
DIVS.json completed: 539 passed, 7526 FAILED
|
||||
DIVU.json completed: 1093 passed, 6972 FAILED
|
||||
EOR.b.json completed: 6699 passed, 1366 FAILED
|
||||
EOR.l.json completed: 4340 passed, 3725 FAILED
|
||||
EOR.w.json completed: 4399 passed, 3666 FAILED
|
||||
EORItoCCR.json completed: 1067 passed, 6998 FAILED
|
||||
EORItoSR.json completed: 141 passed, 7924 FAILED
|
||||
EXG.json completed, all passed!
|
||||
EXT.l.json completed, all passed!
|
||||
EXT.w.json completed, all passed!
|
||||
JMP.json completed: 533 passed, 7532 FAILED
|
||||
JSR.json completed: 152 passed, 7913 FAILED
|
||||
LEA.json completed: 5726 passed, 2339 FAILED
|
||||
LINK.json completed: 7060 passed, 1005 FAILED
|
||||
LSL.b.json completed: 7774 passed, 291 FAILED
|
||||
LSL.l.json completed: 7017 passed, 1048 FAILED
|
||||
LSL.w.json completed: 6545 passed, 1520 FAILED
|
||||
LSR.b.json completed: 7797 passed, 268 FAILED
|
||||
LSR.l.json completed: 7044 passed, 1021 FAILED
|
||||
LSR.w.json completed: 6609 passed, 1456 FAILED
|
||||
MOVE.b.json completed: 5383 passed, 2682 FAILED
|
||||
MOVE.l.json completed: 2626 passed, 5439 FAILED
|
||||
MOVE.q.json completed, all passed!
|
||||
MOVE.w.json completed: 2709 passed, 5356 FAILED
|
||||
MOVEA.l.json completed: 4827 passed, 3238 FAILED
|
||||
MOVEA.w.json completed: 4813 passed, 3252 FAILED
|
||||
MOVEM.l.json completed: 3286 passed, 4779 FAILED
|
||||
MOVEM.w.json completed: 3324 passed, 4741 FAILED
|
||||
MOVEP.l.json completed: 4036 passed, 4029 FAILED
|
||||
MOVEP.w.json completed: 4046 passed, 4019 FAILED
|
||||
MOVEfromSR.json completed: 4456 passed, 3609 FAILED
|
||||
MOVEfromUSP.json completed, all passed!
|
||||
MOVEtoCCR.json completed: 541 passed, 7524 FAILED
|
||||
MOVEtoSR.json completed: 90 passed, 7975 FAILED
|
||||
MOVEtoUSP.json completed, all passed!
|
||||
MULS.json completed: 2241 passed, 5824 FAILED
|
||||
MULU.json completed: 4388 passed, 3677 FAILED
|
||||
NBCD.json completed: 0 passed, 8065 FAILED
|
||||
NEG.b.json completed: 6611 passed, 1454 FAILED
|
||||
NEG.l.json completed: 4461 passed, 3604 FAILED
|
||||
NEG.w.json completed: 4352 passed, 3713 FAILED
|
||||
NEGX.b.json completed: 0 passed, 8065 FAILED
|
||||
NEGX.l.json completed: 0 passed, 8065 FAILED
|
||||
NEGX.w.json completed: 0 passed, 8065 FAILED
|
||||
NOP.json completed, all passed!
|
||||
NOT.b.json completed: 6636 passed, 1429 FAILED
|
||||
NOT.l.json completed: 4372 passed, 3693 FAILED
|
||||
NOT.w.json completed: 4378 passed, 3687 FAILED
|
||||
OR.b.json completed: 6501 passed, 1564 FAILED
|
||||
OR.l.json completed: 4085 passed, 3980 FAILED
|
||||
OR.w.json completed: 4039 passed, 4026 FAILED
|
||||
ORItoCCR.json completed: 987 passed, 7078 FAILED
|
||||
ORItoSR.json completed: 118 passed, 7947 FAILED
|
||||
PEA.json completed: 5798 passed, 2267 FAILED
|
||||
RESET.json completed: 0 passed, 8065 FAILED
|
||||
ROL.b.json completed, all passed!
|
||||
ROL.l.json completed, all passed!
|
||||
ROL.w.json completed: 6961 passed, 1104 FAILED
|
||||
ROR.b.json completed, all passed!
|
||||
ROR.l.json completed, all passed!
|
||||
ROR.w.json completed: 6970 passed, 1095 FAILED
|
||||
ROXL.b.json completed: 8039 passed, 26 FAILED
|
||||
ROXL.l.json completed: 8029 passed, 36 FAILED
|
||||
ROXL.w.json completed: 6941 passed, 1124 FAILED
|
||||
ROXR.b.json completed: 8037 passed, 28 FAILED
|
||||
ROXR.l.json completed: 8022 passed, 43 FAILED
|
||||
ROXR.w.json completed: 6985 passed, 1080 FAILED
|
||||
RTE.json completed: 0 passed, 8065 FAILED
|
||||
RTR.json completed: 0 passed, 8065 FAILED
|
||||
RTS.json completed: 11 passed, 8054 FAILED
|
||||
SBCD.json completed: 776 passed, 7289 FAILED
|
||||
SUB.b.json completed: 6567 passed, 1498 FAILED
|
||||
SUB.l.json completed: 4537 passed, 3528 FAILED
|
||||
SUB.w.json completed: 4567 passed, 3498 FAILED
|
||||
SUBA.l.json completed: 4787 passed, 3278 FAILED
|
||||
SUBA.w.json completed: 4842 passed, 3223 FAILED
|
||||
SUBX.b.json completed: 3861 passed, 4204 FAILED
|
||||
SUBX.l.json completed: 3955 passed, 4110 FAILED
|
||||
SUBX.w.json completed: 3876 passed, 4189 FAILED
|
||||
SWAP.json completed: 509 passed, 7556 FAILED
|
||||
Scc.json completed: 6637 passed, 1428 FAILED
|
||||
TAS.json completed: 6655 passed, 1410 FAILED
|
||||
TRAP.json completed, all passed!
|
||||
TRAPV.json completed, all passed!
|
||||
TST.b.json completed: 6566 passed, 1499 FAILED
|
||||
TST.l.json completed: 4381 passed, 3684 FAILED
|
||||
TST.w.json completed: 4362 passed, 3703 FAILED
|
||||
UNLINK.json completed, all passed!
|
||||
|
||||
passed: 594436, failed: 405624, total 59%
|
||||
completed in 16m 7s
|
@ -272,13 +272,19 @@ fn test_json_file(path: PathBuf, args: &Args) -> (usize, usize, String) {
|
||||
|
||||
let mut passed = 0;
|
||||
let mut failed = 0;
|
||||
for case in cases {
|
||||
for mut case in cases {
|
||||
if let Some(only) = args.only.as_ref() {
|
||||
if !case.name.ends_with(only) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// Sort the ram memory for debugging help
|
||||
if args.debug {
|
||||
case.initial_state.ram.sort_by_key(|(addr, _)| *addr);
|
||||
case.final_state.ram.sort_by_key(|(addr, _)| *addr);
|
||||
}
|
||||
|
||||
if !args.quiet {
|
||||
println!("Running test {}", case.name);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user