with open(tree_loader_bin, 'rb') as fin:
tree_loader = list(fin.read())
-assert len(tree_loader) == 0x91
+assert len(tree_loader) == 0x90
with open(in_bin, 'rb') as fin:
data = list(fin.read())
assert tree[0x2f] == 0x18 # clc
tree[0x2f] |= (bits >> 3) & 0x20 # clc or sec
-assert tree[0x60] == 0x4c # jmp NNNN
-tree[0x61] = entry_point & 0xff
-tree[0x62] = entry_point >> 8
+assert tree[0x5f] == 0x4c # jmp NNNN
+tree[0x60] = entry_point & 0xff
+tree[0x61] = entry_point >> 8
-assert tree[0x65] == 0xe9 # sbc #NN
-tree[0x66] = break3
-assert tree[0x67] == 0xc9 # cmp #NN
-tree[0x68] = (break1 - break3) & 0xff
+assert tree[0x64] == 0xe9 # sbc #NN
+tree[0x65] = break3
+assert tree[0x66] == 0xc9 # cmp #NN
+tree[0x67] = (break1 - break3) & 0xff
-assert tree[0x69] == 0xbd # lda NNNN,x
-tree[0x6a] = right1 & 0xff
-tree[0x6b] = right1 >> 8
+assert tree[0x68] == 0xbd # lda NNNN,x
+tree[0x69] = right1 & 0xff
+tree[0x6a] = right1 >> 8
-assert tree[0x7a] == 0xc9 # cmp #NN
-tree[0x7b] = break2
+assert tree[0x79] == 0xc9 # cmp #NN
+tree[0x7a] = break2
-assert tree[0x7c] == 0xbd # lda NNNN,x
-tree[0x7d] = left1 & 0xff
-tree[0x7e] = left1 >> 8
+assert tree[0x7b] == 0xbd # lda NNNN,x
+tree[0x7c] = left1 & 0xff
+tree[0x7d] = left1 >> 8
tree = [0xad, 0x87, 0xc0] * 2 + tree # hack for lc
assert tree[0x2f] & ~0x20 == 0x18 # clc
bits = tree[0x2e] | ((tree[0x2f] & 0x20) << 3)
-assert tree[0x60] == 0x4c # jmp NNNN
-entry_point = tree[0x61] | (tree[0x62] << 8)
+assert tree[0x5f] == 0x4c # jmp NNNN
+entry_point = tree[0x60] | (tree[0x61] << 8)
-assert tree[0x65] == 0xe9 # sbc #NN
-break3 = tree[0x66]
-assert tree[0x67] == 0xc9 # cmp #NN
-break1 = (tree[0x68] + break3) & 0xff
+assert tree[0x64] == 0xe9 # sbc #NN
+break3 = tree[0x65]
+assert tree[0x66] == 0xc9 # cmp #NN
+break1 = (tree[0x67] + break3) & 0xff
-assert tree[0x7a] == 0xc9 # cmp #NN
-break2 = tree[0x7b]
+assert tree[0x79] == 0xc9 # cmp #NN
+break2 = tree[0x7a]
assert src == load_addr0 + load_size0 - 0x200
left = tree[-0x200:-0x100]
right = tree[-0x100:]
-tree = [0] + tree[0x91:-0x200] # 0 is sentinel for last dummy bits load
+tree = [0] + tree[0x90:-0x200] # 0 is sentinel for last dummy bits load
bin = []
def decode(_bytes, bits):
with open(tree_loader_bin, 'rb') as fin:
tree_loader = list(fin.read())
-assert len(tree_loader) == 0x91
+assert len(tree_loader) == 0x90
with open(in_bin, 'rb') as fin:
data = list(fin.read())
assert tree[0x2f] == 0x18 # clc
tree[0x2f] |= (bits >> 3) & 0x20 # clc or sec
-assert tree[0x60] == 0x4c # jmp NNNN
-tree[0x61] = entry_point & 0xff
-tree[0x62] = entry_point >> 8
+assert tree[0x5f] == 0x4c # jmp NNNN
+tree[0x60] = entry_point & 0xff
+tree[0x61] = entry_point >> 8
-assert tree[0x65] == 0xe9 # sbc #NN
-tree[0x66] = break3
-assert tree[0x67] == 0xc9 # cmp #NN
-tree[0x68] = (break1 - break3) & 0xff
+assert tree[0x64] == 0xe9 # sbc #NN
+tree[0x65] = break3
+assert tree[0x66] == 0xc9 # cmp #NN
+tree[0x67] = (break1 - break3) & 0xff
-assert tree[0x69] == 0xbd # lda NNNN,x
-tree[0x6a] = right1 & 0xff
-tree[0x6b] = right1 >> 8
+assert tree[0x68] == 0xbd # lda NNNN,x
+tree[0x69] = right1 & 0xff
+tree[0x6a] = right1 >> 8
-assert tree[0x7a] == 0xc9 # cmp #NN
-tree[0x7b] = break2
+assert tree[0x79] == 0xc9 # cmp #NN
+tree[0x7a] = break2
-assert tree[0x7c] == 0xbd # lda NNNN,x
-tree[0x7d] = left1 & 0xff
-tree[0x7e] = left1 >> 8
+assert tree[0x7b] == 0xbd # lda NNNN,x
+tree[0x7c] = left1 & 0xff
+tree[0x7d] = left1 >> 8
hdr = [load_addr & 0xff, load_addr >> 8, load_size & 0xff, load_size >> 8]
with open(out_bin, 'wb') as fout:
1$: dec src
lda [src],y
- sec
+ ;sec
rol a
inc count