Exemple #1
0
 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())