Kernel is now compiled and linked into a raw binary instead of intel hex. This raw binary can be loaded into the correct address by the bootloader. I wanted this to be an o65 file, but ld65 kept complaining about it. Honestly though having this be a straight binary makes it easier to load, but we can't relocate it.
36 lines
1.1 KiB
Plaintext
36 lines
1.1 KiB
Plaintext
MEMORY
|
|
{
|
|
ZP: start = $0, size = $100, type = rw, define = yes;
|
|
SDRAM: start = $200, size = $7cf0, type = rw, define = yes;
|
|
ROM: start = $D000, size = $3000, file = %O;
|
|
}
|
|
|
|
SEGMENTS {
|
|
ZEROPAGE: load = ZP, type = zp, define = yes;
|
|
DATA: load = ROM, type = rw, define = yes, run = SDRAM;
|
|
BSS: load = SDRAM, type = bss, define = yes;
|
|
HEAP: load = SDRAM, type = bss, optional = yes;
|
|
STARTUP: load = ROM, type = ro;
|
|
ONCE: load = ROM, type = ro, optional = yes;
|
|
CODE: load = ROM, type = ro;
|
|
RODATA: load = ROM, type = ro;
|
|
VECTORS: load = ROM, type = ro, start = $FFFA;
|
|
}
|
|
|
|
FEATURES {
|
|
CONDES: segment = STARTUP,
|
|
type = constructor,
|
|
label = __CONSTRUCTOR_TABLE__,
|
|
count = __CONSTRUCTOR_COUNT__;
|
|
CONDES: segment = STARTUP,
|
|
type = destructor,
|
|
label = __DESTRUCTOR_TABLE__,
|
|
count = __DESTRUCTOR_COUNT__;
|
|
}
|
|
|
|
SYMBOLS {
|
|
# Define the stack size for the application
|
|
__STACKSIZE__: value = $0200, type = weak;
|
|
__STACKSTART__: type = weak, value = $0800; # 2k stack
|
|
}
|