def test_pack_unpack_special(self):
        packed = pack_special_instruction(op_code=OPCODE.JSR,
                                          a=Value.reg(REG.A))
        op_code, a = unpack_special_instruction(packed)

        self.assertEqual(op_code, OPCODE.JSR)
        self.assertEqual(a, Value.reg(REG.A))
    def test_jsr(self):
        self.cpu.registers[REG.I].value = 0x2323 # PC should be set to this

        # JSR I
        self.cpu.ram[0].value = pack_special_instruction(op_code=OPCODE.JSR,
                                                         a=REG.I)
        self.emulator.dispatch()

        self.assertEqual(self.cpu.PC.value, 0x2323, "PC not right")
        self.assertEqual(self.cpu.ram[self.cpu.SP.value].value, 0x1, "Stack not right")