But because the CX16 has it's own VRAM, the memory space from $400 - $7FF (1kb) is free for use. The C64 used that memory for the screen I understand.
Soooo.... What are people's thoughts about starting your program from $400 instead of $800? I know that means you'd have to type
SYS 1024instead but is there any real issue with that? I do recall from when I was a kid some C64 programs required you do to that. As a kid I never understood why, but now I realise it's because they were carefully managing memory. If you start your program at $400 you get an extra 1kb of contiguous program memory.
If not, what I would like to know is, what do people like to use that extra 1kb for? I notice even in the cfg file for CA65 it doesn't really acknowledge that area by giving it a segment.
I've modified my CX16.cfg file this way:
Code: Select all
MEMORY {
ZP: file = "", define = yes, start = $0022, size = $0080 - $0022;
USER: file = %O, start = $0400, size = $0800 - $0400; #### add this line
LOADADDR: file = %O, start = %S - 2, size = $0002;
# ...other memory definitions etc
}
and this line to segments:
Code: Select all
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
EXTZP: load = ZP, type = zp, optional = yes;
USER: load = USER, type = rw; #### add this line
LOADADDR: load = LOADADDR, type = ro;
# ... rest of the segments
}
.segment "USER"
instead of having to type .org $400
What do others do?