def test_fix_addresses_correct_for_valuetype_address(self): statement1 = Statement("START LDA #$00 ; load zero into A") statement1.set_address(0xFFEE) statement2 = Statement(" JMP START ; jump to start ") statement2.operand.value = AddressValue(0) statements = [statement1, statement2] statement2.fix_addresses(statements, 1) self.assertEqual("FFEE", statement2.code_pkg.additional.hex())
def test_fix_addresses_correct_for_reverse_branches(self): statement1 = Statement("START JSR $FFEE ; jump to subroutine") statement2 = Statement(" CLRA ; clear A") statement3 = Statement(" CLRA ; clear A") statement4 = Statement(" CLRA ; clear A") statement5 = Statement("DONE BRA START ; jump to start") statement1.code_pkg.size = 2 statement2.code_pkg.size = 1 statement3.code_pkg.size = 1 statement4.code_pkg.size = 1 statement5.code_pkg.size = 2 statement5.code_pkg.additional = AddressValue(0) statements = [ statement1, statement2, statement3, statement4, statement5 ] statement5.fix_addresses(statements, 4) self.assertEqual("F9", statement5.code_pkg.additional.hex())
def test_fix_addresses_correct_for_forward_branches(self): statement1 = Statement("START BRA DONE ; branch to done") statement2 = Statement(" CLRA ; clear A") statement3 = Statement(" CLRA ; clear A") statement4 = Statement(" CLRA ; clear A") statement5 = Statement("DONE JSR $FFEE ; jump to subroutine") statement1.code_pkg.additional = AddressValue(4) statement1.code_pkg.size = 2 statement2.code_pkg.size = 1 statement3.code_pkg.size = 1 statement4.code_pkg.size = 1 statement5.code_pkg.size = 2 statements = [ statement1, statement2, statement3, statement4, statement5 ] statement1.fix_addresses(statements, 0) self.assertEqual("03", statement1.code_pkg.additional.hex())