Taki problem powstaje przy "Save disassembly" z debuggera ZX Spin:
Gdy debugger pracuje w dec, zapisze w pliku .asm adresy dziesiętnie, ale etykiety są w hex, więc taki plik jest bezużyteczny.
Przy zapisie w hex, plik nadaje się do modyfikacji i re-assemblacji.
Debugger ma jednak błąd, podczas zapisu disassembly w hex, domaga sie podania adresu początkowego i długości (lub adresu końcowego) w hex, a przyjmuje jedynie cyfry 0-9. Nie jest problemem zapisanie kilkanaście bajtów więcej, tak aby adres składał się z samych cyfr i później obcięcie.
Rafal, jeśli potrafisz, to napisz. Nie dla mnie, dla ludzkości. W adresach LD, JP, CALL zapisywane są z prefixem $, w etykietach L_ a w komentarzach (adresy i wartości) bez prefixu. Trzeba domyślnie przyjąć że wszystkie numery są w hex.
Przykładowy kod z debuggera wygląda tak:
LD ($5C8D), A ; 764B 32 8D 5C
LD ($5C8F), A ; 764E 32 8F 5C
LD A, $00 ; 7651 3E 00
CALL $229B ; 7653 CD 9B 22
CALL $0DAF ; 7656 CD AF 0D
RET ; 7659 C9
L_765A: LD A, $19 ; 765A 3E 19
LD ($7D29), A ; 765C 32 29 7D
LD A, $03 ; 765F 3E 03
LD HL, L_7D1C ; 7661 21 1C 7D
CP (HL) ; 7664 BE
JP NZ, L_767E ; 7665 C2 7E 76
LD A, $09 ; 7668 3E 09
LD HL, $7D1B ; 766A 21 1B 7D
CP (HL) ; 766D BE
JP NZ, L_7679 ; 766E C2 79 76
LD A, $23 ; 7671 3E 23
LD (L_7D2A), A ; 7673 32 2A 7D
JP L_767E ; 7676 C3 7E 76
L_7679: LD A, $31 ; 7679 3E 31
LD (L_7D2A), A ; 767B 32 2A 7D
L_767E: LD A, $02 ; 767E 3E 02
LD HL, L_7D1C
Tutaj przykład kodu przy zapisie dziesiętnym. Etykiety pozostają w hex i pojawia się problem interpretacji, czy np. 7607 to liczba w dec czy hex. Wydaje się, że wystarczy poprawić etykiety i adresy skoków do nich, które zawsze zaczynają sie od L_ i liczba jest w hex.
LD A, 68 ; 30173 62 68
LD (23693), A ; 30175 50 141 92
LD (23695), A ; 30178 50 143 92
LD A, 13 ; 30181 62 13
CALL L35473 ; 30183 205 145 138
CALL L32483 ; 30186 205 227 126
L_75ED: CALL L32558 ; 30189 205 46 127
CALL 654 ; 30192 205 142 2
LD HL, L32005 ; 30195 33 5 125
LD (HL), 0 ; 30198 54 0
LD A, E ; 30200 123
CP 36 ; 30201 254 36
JR Z, L_7607 ; 30203 40 10
INC (HL) ; 30205 52
CP 28 ; 30206 254 28
JR Z, L_7607 ; 30208 40 5
INC (HL) ; 30210 52
CP 20 ; 30211 254 20
JR NZ, L_75ED ; 30213 32 230
L_7607: RET ; 30215 201
L_7608: LD A, 0 ; 30216 62 0
LD (32043), A ; 30218 50 43 125