You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The 6502 CPU doesn't have many registers, but Zero-Page memory would appear to be used by many programs to perform a similar function to registers.
In practice, this means that many program subroutines use the same Zero-Page memory locations for different short-term purposes (i.e. like a register or local variable), such that you are not able to globally label some Zero-Page memory locations for any given program with useful names, when using dasmfw.
A clunky workaround I'm using is to run a sed script (see listing) on the output from dasmfw to insert additional EQUs with extended names (lines 3-12) and update the usage of the plain ZPnn labels with the extended names on a particular range of addresses ($3601 to $3734, lines 15-24).
(It's possible that dasmfw multilabel functionality provides this local label ability, but I can't figure out how it works.)
Additional Info: I've learned that the 6502bench disassembler program has functionality that inserts locals into the listing, as can be seen in the picture below; $98 and $99 are used in many places throughout this assembly listing, with different names each time. It's documented here: https://6502bench.com/sgtutorial/local-variables.html
Thanks for reading.
The text was updated successfully, but these errors were encountered:
Definitely a good idea. Unfortunately, I'm currently deep into other things, so it will take a while until I could do anything about it.
Syntax could be something like locallabel addr[-addr[/step]] addr[-addr] name
where the first range defines the region in which the second address range is mapped to name.
This would then insert the local label declaration directly before the disassembly of the first range and use it from there on until the end end of the first range (or EOF, if only a start is given).
Thanks for the positive feedback, your proposal sounds pretty good to me. You could use local[label], like used[label], which would save some typing. We'll see what the spacing looks like when implemented.
Good luck with whatever else you're working on, I'll get by with sed for now 👍
The 6502 CPU doesn't have many registers, but Zero-Page memory would appear to be used by many programs to perform a similar function to registers.
In practice, this means that many program subroutines use the same Zero-Page memory locations for different short-term purposes (i.e. like a register or local variable), such that you are not able to globally label some Zero-Page memory locations for any given program with useful names, when using dasmfw.
A clunky workaround I'm using is to run a
sed
script (see listing) on the output from dasmfw to insert additional EQUs with extended names (lines 3-12) and update the usage of the plainZPnn
labels with the extended names on a particular range of addresses ($3601 to $3734, lines 15-24).(It's possible that dasmfw multilabel functionality provides this local label ability, but I can't figure out how it works.)
Additional Info: I've learned that the 6502bench disassembler program has functionality that inserts locals into the listing, as can be seen in the picture below; $98 and $99 are used in many places throughout this assembly listing, with different names each time. It's documented here: https://6502bench.com/sgtutorial/local-variables.html
Thanks for reading.
The text was updated successfully, but these errors were encountered: