Example #1
0
def test_can_deal_with_indented_assembly_code():
    code = """
        LDA ($C2)
        JMP ($C2)
    """
    bytecode = assemble(code)
    assert bytecode == [0x10, 0xC2, 0x44, 0xC2]
Example #2
0
def test_can_handle_full_line_source_comments():
    code = """
        ;LDA ($C2)   ; don't know why i do this
        JMP ($C2)
    """
    bytecode = assemble(code)
    assert bytecode == [0x44, 0xC2]
Example #3
0
def test_lables_with_indirect():
    code = """
        LDA ($C2)
        back:
        JMP (back)
    """
    bytecode = assemble(code)
    assert bytecode == [0x10, 0xC2, 0x44, 0x02]
Example #4
0
def test_use_lables():
    code = """
        LDA ($C2)
        back:
        JMP back
    """
    bytecode = assemble(code)
    assert bytecode == [0x10, 0xC2, 0x34, 0x02]
Example #5
0
def test_lable_defined_after_use():
    code = """
        LDA ($C2)
        JMP (back)
        LDA ($C2)
        back:
    """
    bytecode = assemble(code)
    assert bytecode == [0x10, 0xC2, 0x44, 0x06, 0x10, 0xC2,]
Example #6
0
def test_can_split_incoming_source_assembly():
    code = ("LDA ($C2)"
        "\nJMP ($C2)")
    bytecode = assemble(code)
    assert bytecode == [0x10, 0xC2, 0x44, 0xC2]
Example #7
0
def test_can_use_the_byte_psedomnemonic_3():
    code = "BYTE #11 22 FD"
    bytecode = assemble(code)
    assert bytecode == [0x11, 0x22, 0xFD]
Example #8
0
def test_can_use_the_byte_psedomnemonic():
    code = "BYTE #11"
    bytecode = assemble(code)
    assert bytecode == [0x11]
Example #9
0
def test_the_byte_psedomnemonic_fails_on_bad_syntax():
    code = "BYTE 11"
    with pytest.raises(AssertionError):
        bytecode = assemble(code)
Example #10
0
def test_can_read_instructions_from_source_assembly():
    code = "LDA ($C2)"
    bytecode = assemble(code)
    assert bytecode == [0x10, 0xC2]