diff --git a/OSBindings/Mac/Clock SignalTests/68000Tests.mm b/OSBindings/Mac/Clock SignalTests/68000Tests.mm index 6dcd9cc10..a19696f8a 100644 --- a/OSBindings/Mac/Clock SignalTests/68000Tests.mm +++ b/OSBindings/Mac/Clock SignalTests/68000Tests.mm @@ -1483,6 +1483,16 @@ class CPU::MC68000::ProcessorStorageTests { // XCTAssertEqual(46, _machine->get_cycle_count()); } +// MARK: NOP + +- (void)testNOP { + _machine->set_program({ + 0x4e71 // NOP + }); + _machine->run_for_instructions(1); + XCTAssertEqual(4, _machine->get_cycle_count()); +} + // MARK: Scc - (void)testSFDn { @@ -1608,4 +1618,41 @@ class CPU::MC68000::ProcessorStorageTests { XCTAssertEqual(state.supervisor_stack_pointer, 0x200); } +// MARK: UNLINK + +- (void)testUNLINK_A6 { + _machine->set_program({ + 0x4e5e // UNLNK A6 + }); + + auto state = _machine->get_processor_state(); + state.address[6] = 0x3000; + *_machine->ram_at(0x3000) = 0x0000; + *_machine->ram_at(0x3002) = 0x4000; + + _machine->set_processor_state(state); + _machine->run_for_instructions(1); + + state = _machine->get_processor_state(); + XCTAssertEqual(state.address[6], 0x4000); + XCTAssertEqual(state.supervisor_stack_pointer, 0x3004); + XCTAssertEqual(12, _machine->get_cycle_count()); +} + +- (void)testUNLINK_A7 { + _machine->set_program({ + 0x4e5f // UNLNK A7 + }); + _machine->set_initial_stack_pointer(0x3000); + *_machine->ram_at(0x3000) = 0x0000; + *_machine->ram_at(0x3002) = 0x4000; + + _machine->run_for_instructions(1); + + const auto state = _machine->get_processor_state(); + XCTAssertEqual(state.supervisor_stack_pointer, 0x4000); + XCTAssertEqual(12, _machine->get_cycle_count()); + +} + @end