I stumbled upon a divergence in the ASCII upper case/lower case handling when using assembler and linker of the cc65
suite separately (I used cc65 V2.15 on Win10).
For a test I made the following assembler file helloworld.s
for the default target (C64):
;code for a BASIC line containing SYS2061
.byte $0B,$08,$e3,$07,$9e,$32,$30,$36,$31,$00,$00,$00
lda #<textout
ldy #>textout
jmp $AB1E
textout: .asciiz "hello world"
When I assemble and link the file with the command cl65 -C c64-asm.cfg helloworld.s -o helloworld.prg
I get a program that outputs "hello world" on the C64 - it appears with uppercase letters with the default charset.
However, when I assemble to an object file first with ca65 helloworld.s
and then link the object file with cl65 -C c64-asm.cfg helloworld.o -o helloworld.prg
, I get a program that outputs the respective PETSCII characters when viewed with the default charset or, in lower case mode, "HELLO WORLD".
So why is there a difference between the two ways of building? Both cl65
and ca65
are from the cc65
toolchain.
Second, is there a way to annotate the source code or to instruct ca65
not to change the case of the ASCII text?
ca65 -t c64 helloworld.s
enables the proper (C64-oriented) handling of characters.