#include #include inline foot::Emulator run_instruction(uint32_t instruction) { foot::Emulator emu; emu.memory_at(0) = instruction & 0xFFFF; emu.memory_at(1) = (instruction >> 16) & 0xFFFF; emu.run_instruction(); return emu; } inline foot::Emulator run_instructions(const std::vector& instructions) { foot::Emulator emu; for (int i = 0; i < instructions.size(); i++) { emu.memory_at(i * 2) = instructions[i] & 0xFFFF; emu.memory_at(i * 2 + 1) = (instructions[i] >> 16) & 0xFFFF; } for (int i = 0; i < instructions.size(); i++) { emu.run_instruction(); } return emu; } inline bool check(uint16_t expected, uint16_t actual) { if (actual != expected) { std::cout << std::hex << "Expected " << expected << ", got " << actual << ".\n"; return false; } return true; }