Rearrange the segments a bit
* put TABLES in the low memory, before the bank switch window * reserve bank switch window * put rest of the code after that and before the framebuffer so TABLES lives just before $4000 and MAIN lives in $8000-$bfff could split some more code and/or data into low mem and/or move the tables not used in extended memory mode into the bank switch window so they take no address space on XE or expanded memory machines
This commit is contained in:
parent
97fdc12565
commit
a93dd00e36
1 changed files with 12 additions and 6 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
# Sample linker configuration for C programs using the Atari binary file support.
|
# Sample linker configuration for C programs using the Atari binary file support.
|
||||||
# Use with: cl65 -tatari -Catari-xex.cfg prog.c -o prog.xex
|
# Use with: cl65 -tatari -Catari-xex.cfg prog.c -o prog.xex
|
||||||
FEATURES {
|
FEATURES {
|
||||||
STARTADDRESS: default = $2000;
|
STARTADDRESS: default = $8000;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
SYMBOLS {
|
||||||
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
|
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
|
||||||
|
|
@ -10,19 +10,24 @@ SYMBOLS {
|
||||||
__RESERVED_MEMORY__: type = weak, value = $0000;
|
__RESERVED_MEMORY__: type = weak, value = $0000;
|
||||||
__SYSCHKHDR__: type = export, value = 0; # Disable system check header
|
__SYSCHKHDR__: type = export, value = 0; # Disable system check header
|
||||||
__SYSCHKTRL__: type = export, value = 0; # Disable system check trailer
|
__SYSCHKTRL__: type = export, value = 0; # Disable system check trailer
|
||||||
|
__TABLESEG_START__: type = weak, value = $2E00 + $0300;
|
||||||
__TABLESEG_SIZE__: type = weak, value = 6 * $100;
|
__TABLESEG_SIZE__: type = weak, value = 6 * $100;
|
||||||
__FRAMEBUFFER_START__: type = weak, value = $a000;
|
__BANKSY_START__: type = weak, value = $4000;
|
||||||
|
__BANKSY_SIZE__: type = weak, value = $4000;
|
||||||
|
__FRAMEBUFFER_START__: type = weak, value = $A000;
|
||||||
}
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
|
# Note -- $80 and $81 (LOMEM) appear to be reserved in ZP.
|
||||||
ZP: file = "", define = yes, start = $0082, size = $007E;
|
ZP: file = "", define = yes, start = $0082, size = $007E;
|
||||||
# "system check" load chunk
|
# "system check" load chunk
|
||||||
SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
|
SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
|
||||||
# Note we reserve $4000-7fff for the bank-switch window.
|
|
||||||
# Note $a000-$bfff is against the BASIC cartridge, may require booting with OPTION.
|
# Note $a000-$bfff is against the BASIC cartridge, may require booting with OPTION.
|
||||||
TABLES: file = %O, define = yes, start = %S, size = __TABLESEG_SIZE__;
|
TABLES: file = %O, define = yes, start = __TABLESEG_START__, size = __TABLESEG_SIZE__;
|
||||||
|
# We reserve $4000-7fff for the bank-switch window.
|
||||||
|
# In theory we could keep data and code here that we only use on 48k/64k systems.
|
||||||
|
BANKSWITCH: file = "", define = yes, start = __BANKSY_START__, size = __BANKSY_SIZE__;
|
||||||
# "main program" load chunk
|
# "main program" load chunk
|
||||||
MAIN: file = %O, define = yes, start = %S + __TABLESEG_SIZE__, size = __FRAMEBUFFER_START__ - __STACKSIZE__ - __RESERVED_MEMORY__ - __TABLESEG_SIZE__ - %S;
|
MAIN: file = %O, define = yes, start = %S, size = __FRAMEBUFFER_START__ - __STACKSIZE__ - __RESERVED_MEMORY__ - %S;
|
||||||
|
|
||||||
}
|
}
|
||||||
FILES {
|
FILES {
|
||||||
%O: format = atari;
|
%O: format = atari;
|
||||||
|
|
@ -36,6 +41,7 @@ SEGMENTS {
|
||||||
EXTZP: load = ZP, type = zp, optional = yes;
|
EXTZP: load = ZP, type = zp, optional = yes;
|
||||||
SYSCHK: load = SYSCHKCHNK, type = rw, define = yes, optional = yes;
|
SYSCHK: load = SYSCHKCHNK, type = rw, define = yes, optional = yes;
|
||||||
TABLES: load = TABLES, type = ro, optional = yes, align = 256;
|
TABLES: load = TABLES, type = ro, optional = yes, align = 256;
|
||||||
|
BANKSWICH: load = BANKSWITCH, type = ro, optional = yes;
|
||||||
STARTUP: load = MAIN, type = ro, define = yes;
|
STARTUP: load = MAIN, type = ro, define = yes;
|
||||||
LOWBSS: load = MAIN, type = rw, optional = yes; # not zero initialized
|
LOWBSS: load = MAIN, type = rw, optional = yes; # not zero initialized
|
||||||
LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
|
LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue