def test_translate_correct_when_character_literal_punctuation_present( self): statement1 = Statement( " LDA #'> ; Load character > into register A") statement1.translate() self.assertEqual(0x86, statement1.code_pkg.op_code.int) self.assertEqual(62, statement1.code_pkg.additional.int)
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_parse_FCC_correct(self): statement = Statement("LABEL FCC 'TEST' ; comment") self.assertFalse(statement.is_empty) self.assertFalse(statement.is_comment_only) self.assertEqual("LABEL", statement.label) self.assertEqual("FCC", statement.mnemonic) self.assertEqual("'TEST'", statement.operand.operand_string) self.assertEqual("comment", statement.comment)
def test_parse_full_line_correct(self): statement = Statement("LABEL JMP $FFFF ; comment") self.assertFalse(statement.is_empty) self.assertFalse(statement.is_comment_only) self.assertEqual("LABEL", statement.label) self.assertEqual("JMP", statement.mnemonic) self.assertEqual("$FFFF", statement.operand.operand_string) self.assertEqual("comment", statement.comment)
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())