Errors using local labels
raybellis opened this issue · 7 comments
Following (AFAICS) the syntax given in the RELASMB manual, this code:
OPT TSC
LDX #100
0 DEX
BNE 0B
produces these errors:
A09 Assembler V1.42
test.asm(3) : error 1: Error in expression in "0 DEX"
1 error(s) in pass 1
test.asm(3) : error 1: Error in expression in "0 DEX"
test.asm(4) : error 3: Undefined label in " BNE 0B"
2 error(s) in pass 2
Last assembled address: 0004
It seems like the parser is mis-categorising the numeric local label.
Confirmed. This must have crept in when I added the isValidNameChar() function.
Some fine day, I'll add a regression test suite ...
Here's an update that should work again (does here with your short example).
Hi Hermann - that works with TCS mode, but not your extended mode.
(my code uses the latter, but I sent an example with TCS to show the regression against "standard" syntax).
I've attached a more extensive sample that uses extended mode.
p.s. I'm very happy to test from git branches rather than .zips if that works for you.
OK, here is an even more relaxed version.
Regarding your p.s. - that would interfere with my normal work flow (which involves checking in changes from exactly one development PC, which is at home).
Thanks again - that's working nicely :)
I spoke too soon - I'm afraid this causes another regression, with immediate decimal constants, e.g.
LDX #10000 ; $2710
generates a value equal to the current program counter instead of an immediate constant. Here's a diff of the hex dump of my binary output showing the issue:
0000c440 01 4f b7 7f 99 39 86 38 ce 00 00 09 26 fd b7 40 |.O...9.8....&..@|
-0000c450 00 ce 27 10 09 26 fd b7 40 00 ce 27 10 09 26 fd |..'..&..@..'..&.|
+0000c450 00 ce c4 51 09 26 fd b7 40 00 ce c4 5a 09 26 fd |...Q.&..@...Z.&.|
0000c460 b7 40 00 bd c8 8c b7 40 00 bd c8 8c 86 0c b7 40 |.@.....@.......@|
Looking good so far, thanks :)