So, I've encountered a strange issue with 64tass. When I use labels with
jmp and
jsr these opcodes don't get pointed to the memory location I expect. Passing labels to branch instructions, example
bcc, works just fine. I've checked and I don't see any obvious cases of double-defining a label or any simple mistake like that. I also double-checked the documentation and in the
.ptext section I can see a
jsr being used with a label.
For clarity sake, here is a random slice of code:
Code:
L_8284 lda $19 ; $8284 $a519 ;
sta $1d ; $8286 $851d ;
dec $15 ; $8288 $c615 ;
beq L_828f ; $828a $f003 ;
jmp L_8200 ; $828c $4c0082 ;
L_828f ldy #$17 ; $828f $a017 ;
ldx #$17 ; $8291 $a217 ;
L_8293 lda $9fb0,x ; $8293 $bdb09f ;
The column on the left contains labels followed by opcodes and operands. The columns on the right enclosed in comments contain the current memory offset followed by the raw bytes of the opcode and operand for that line. Branching to L_828f works just fine. But, passing
L_8200 to the
jmp instruction produces unexpected output when I assemble the file. I'm disassembling and reassembling a cartridge. I've just about got it working except for this. What am I missing?
I'm running 64tass v1.56 r2625 on Linux; I built the 64tass binary myself as it's not in my OS's software repo.