Next Previous Contents

3. Memory layout

cc65 generated programs for the Commodore 610 run in bank 1, the memory bank reserved for BASIC programs. Since there are no ROMs in this memory bank, the program has almost full 64K for its own. A disadvantage is that kernal subroutines cannot be called (at least not in a fast and effective manner), so the runtime has replace kernal functionality.

The default memory configuration for the CBM 610 allocates all memory between $0002 and $FFF0 in bank 1 for the compiled program. Some space in low memory is lost, because a separate hardware stack is set up in page 1, and the kernal replacement functions need some more memory locations. A few more bytes are lost in high memory, because the runtime sets up a CBM compatible jump table at $FF81. The main startup code is located at $0400, so about 63K of the complete bank are actually usable for applications.

Special locations:

Stack

The C runtime stack is located at $FF81 and growing downwards.

Heap

The C heap is located at the end of the program and grows towards the C runtime stack.


Next Previous Contents