45 lines
1,012 B
Text
45 lines
1,012 B
Text
/* F256 Linker Script */
|
|
|
|
|
|
/* fake C Stack */
|
|
PROVIDE(__stack = 0xC000);
|
|
/* entry point to my program */
|
|
PROVIDE(__f256_start = 0x300);
|
|
/* swappable block address */
|
|
PROVIDE(__SLOT_ADDR = 0xC000);
|
|
|
|
/* f256k uses first 16 bytes of ZP for mmu control? */
|
|
__rc0 = 0x10;
|
|
INCLUDE imag-regs.ld
|
|
ASSERT(__rc0 == 0x10, "Inconsistent zero page map.")
|
|
ASSERT(__rc31 == 0x2f, "Inconsistent zero page map.")
|
|
|
|
MEMORY {
|
|
/* kernel uses 0xf0-0xff for parameter passing */
|
|
zp : ORIGIN = __rc31 + 1, LENGTH = 0xF0 - (__rc31 + 1)
|
|
ram (rw) : ORIGIN = __f256_start, LENGTH = 0xC000-__f256_start
|
|
}
|
|
|
|
REGION_ALIAS("c_writeable", ram)
|
|
REGION_ALIAS("c_readonly", ram)
|
|
|
|
SECTIONS {
|
|
INCLUDE c.ld
|
|
}
|
|
|
|
OUTPUT_FORMAT {
|
|
BYTE(0x5A) /* pgZ */
|
|
|
|
/* ram segment */
|
|
|
|
SHORT(ORIGIN(ram)) /* where to load it, 24 bits */
|
|
BYTE(0x00)
|
|
SHORT(__bss_start-ORIGIN(ram)) /* size to load */
|
|
BYTE(0x00)
|
|
TRIM(ram)
|
|
|
|
/* Launch the program, at _start */
|
|
SHORT(_start)
|
|
LONG(0)
|
|
}
|
|
|