From 47b1218a68e6e32ba15c25fbecd1fbdbaf3e8139 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Wed, 19 Jun 2019 19:10:36 -0400 Subject: [PATCH] Adds a couple of the one-shots: SWAP, MOVE USP. --- .../Mac/Clock SignalTests/68000Tests.mm | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/OSBindings/Mac/Clock SignalTests/68000Tests.mm b/OSBindings/Mac/Clock SignalTests/68000Tests.mm index d902ae1cb..c94d8749f 100644 --- a/OSBindings/Mac/Clock SignalTests/68000Tests.mm +++ b/OSBindings/Mac/Clock SignalTests/68000Tests.mm @@ -671,7 +671,7 @@ class CPU::MC68000::ProcessorStorageTests { - (void)testAddOverflow { _machine->set_program({ - 0x0602, 0x82 // ADD.B #$82, D2 + 0xd43c, 0x82 // ADD.B #$82, D2 }); auto state = _machine->get_processor_state(); state.data[2] = 0x82; @@ -773,4 +773,37 @@ class CPU::MC68000::ProcessorStorageTests { XCTAssertEqual(state.status & CPU::MC68000::Flag::ConditionCodes, CPU::MC68000::Flag::Negative); } +// MARK: MOVE USP + +- (void)testMoveUSP { + _machine->set_program({ + 0x4e69 // MOVE USP, A1 + }); + auto state = _machine->get_processor_state(); + state.address[1] = 0x12348756; + + _machine->set_processor_state(state); + _machine->run_for_instructions(2); + + state = _machine->get_processor_state(); + XCTAssertEqual(state.address[1], 0); +} + +// MARK: SWAP + +- (void)testSwap { + _machine->set_program({ + 0x4841 // SWAP D1 + }); + auto state = _machine->get_processor_state(); + state.data[1] = 0x12348756; + + _machine->set_processor_state(state); + _machine->run_for_instructions(2); + + state = _machine->get_processor_state(); + XCTAssertEqual(state.data[1], 0x87561234); + XCTAssertEqual(state.status & CPU::MC68000::Flag::ConditionCodes, CPU::MC68000::Flag::Negative); +} + @end