Where the combination of YAZD and sed works, you get code that looks like this. With a pass through sed adding comments, this could look really good without major code manipulation on my part.
However, YAZD needs to take configuration input from a file, you should be able to manually identify blocks of data including size/type/length (byte, 16 bit word, string), entry/data points should have configurable labels instead of manually generated ones, and data labels should automatically be generated as an option. Using sed works, but it would be nice to complete this in a single step, especially for other people that aren't familiar with Unix/Linux.
One problem with sed is that it can be a bit indiscriminate in how it performs it's search and replace. Relabeling addresses that are formatted like "L1EC1:" works well, but adding a custom label to actual references to that label (call jp, etc..) can potentially change unrelated values, where YAZD would be able to know the difference.
YAZD is open source, but it's poorly commented. Figuring out the code takes time (though most of it doesn't look bad), and that's before I make changes. It just adds more time to an already time consuming process, and I still have to a create a file with comments for the ROM based on existing comments from TRS-80. At least I don't have to create everything just from the disassembly.
; Entry Point
; --- START PROC RUN ---
RUN: JP Z,L1B5D
CALL 79C7h
CALL L1B61
LD BC,1D1Eh
JR L1EC1
; Entry Point
; --- START PROC GOSUB ---
GOSUB: LD C,03h
CALL L1963
POP BC
PUSH HL
PUSH HL
LD HL,(78A2h)
EX (SP),HL
LD A,91h
PUSH AF
INC SP
; Referenced from 1EAF
; --- START PROC L1EC1 ---
L1EC1: PUSH BC
; Entry Point
; --- START PROC GOTO ---
GOTO: CALL L1E5A
; Referenced from 1FC7
; --- START PROC L1EC5 ---
L1EC5: CALL REM
PUSH HL
LD HL,(78A2h)
RST 0x18
However, YAZD needs to take configuration input from a file, you should be able to manually identify blocks of data including size/type/length (byte, 16 bit word, string), entry/data points should have configurable labels instead of manually generated ones, and data labels should automatically be generated as an option. Using sed works, but it would be nice to complete this in a single step, especially for other people that aren't familiar with Unix/Linux.
One problem with sed is that it can be a bit indiscriminate in how it performs it's search and replace. Relabeling addresses that are formatted like "L1EC1:" works well, but adding a custom label to actual references to that label (call jp, etc..) can potentially change unrelated values, where YAZD would be able to know the difference.
YAZD is open source, but it's poorly commented. Figuring out the code takes time (though most of it doesn't look bad), and that's before I make changes. It just adds more time to an already time consuming process, and I still have to a create a file with comments for the ROM based on existing comments from TRS-80. At least I don't have to create everything just from the disassembly.
No comments:
Post a Comment