Re: [cc65] Bank Switching

Date view Thread view Subject view

From: Shawn Jefferson (
Date: 2002-09-25 01:13:20

>>> Christian Groessler <> 09/20/02 04:22PM >>>

>So with some linker and segments fiddling, one should be able to make
>RAM2 a separate chunk in the file. The AUTOSTRT chunk should be last
>(unless you know what you do), because I think it's address will be
>called immediately after being loaded, before the remaining chunks get

Ok, I think I succeeded in setting this up with these files:


    ZP: start = $82, size = $7E, type = rw;
    HEADER: start = $0000, size = $6, file = %O;
    RAM1: start = $2000, size = $2000, file = %O;
    BANK: start = $4000, size = $3FFF, type = ro;   # just to show the memory layout, not used
    SECHDR: start = $8000, size = $4, file = %O;
    RAM2: start = $8004, size = $3C1F, file = %O;
    EXEHDR: load = HEADER, type = wprot;
    CODE: load = RAM1, type = wprot, define = yes;
    BSS: load = RAM1, type = bss, define = yes;
    CHKHDR: load = SECHDR, type = wprot;
    RODATA: load = RAM2, type = wprot, define = yes;
    DATA: load = RAM2, type = rw;
    ZEROPAGE: load = ZP, type = zp;
    AUTOSTRT: load = RAM2, type = wprot, define = yes;

and chunk.s:

    .import __RODATA_LOAD__, __AUTOSTRT_LOAD__

    .segment "CHKHDR"
    .word __RODATA_LOAD__
    .word __AUTOSTRT_LOAD__ - 1

From looking at the source code for crt0.s in the atari library, the main header uses the values for CODE and BSS - 1 to create the header, so you are sort of stuck with putting the code and bss (what does that stand for?) in the first memory segment.  Unless there is a way to override this without recompiling the library.  The first segment is the smallest segment... but I guess we could split the code segments with some manual stuff in our C files and that should still work properly with the standard library right?

Anyway, this worked quite well and left the $4000-7FFF section alone from what I can tell.  Thanks Ulrich and Chris for all the information so far!

To unsubscribe from the list send mail to with
the string "unsubscribe cc65" in the body(!) of the mail.

Date view Thread view Subject view

This archive was generated by hypermail 2.1.3 : 2002-09-25 01:15:43 CEST