1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-28 06:30:16 +00:00

atari-asm.cfg linker config file

This commit is contained in:
Christian Groessler 2013-10-18 03:07:01 +02:00
parent bf3a23c34c
commit b153ec8896
10 changed files with 80 additions and 26 deletions

30
cfg/atari-asm.cfg Normal file
View File

@ -0,0 +1,30 @@
FEATURES {
STARTADDRESS: default = $2E00;
}
SYMBOLS {
__EXEHDR__: type = import;
__MAINCHNKHDR__: type = import;
__AUTOSTART__: type = import; # force inclusion of autostart "trailer"
__STARTADDRESS__: type = export, value = %S;
}
MEMORY {
ZP: file = "", define = yes, start = $0082, size = $007E;
# file header, just $FFFF
HEADER: file = %O, start = $0000, size = $0002;
# "main program" load chunk
MAINHDR: file = %O, start = $0000, size = $0004;
RAM: file = %O, define = yes, start = %S, size = $BC20 - %S;
TRAILER: file = %O, start = $0000, size = $0006;
}
SEGMENTS {
EXEHDR: load = HEADER, type = ro, optional = yes;
MAINHDR: load = MAINHDR, type = ro, optional = yes;
CODE: load = RAM, type = ro, define = yes, optional = yes;
RODATA: load = RAM, type = ro optional = yes;
DATA: load = RAM, type = rw optional = yes;
BSS: load = RAM, type = bss, define = yes, optional = yes;
ZEROPAGE: load = ZP, type = zp;
AUTOSTRT: load = TRAILER, type = ro, optional = yes;
}

View File

@ -2,11 +2,14 @@ FEATURES {
STARTADDRESS: default = $2000;
}
SYMBOLS {
__EXEHDR__: type = import;
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
__MAINCHNKHDR__: type = import;
__AUTOSTART__: type = import; # force inclusion of autostart "trailer"
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__OVERLAYSIZE__: type = weak, value = $1000; # 4k overlay
__STARTADDRESS__: type = export, value = %S;
__RESERVED_MEMORY__: type = weak, value = $0000;
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
}
MEMORY {
ZP: file = "", define = yes, start = $0082, size = $007E;

View File

@ -2,10 +2,13 @@ FEATURES {
STARTADDRESS: default = $2000;
}
SYMBOLS {
__EXEHDR__: type = import;
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
__MAINCHNKHDR__: type = import;
__AUTOSTART__: type = import; # force inclusion of autostart "trailer"
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__STARTADDRESS__: type = export, value = %S;
__RESERVED_MEMORY__: type = weak, value = $0000;
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
}
MEMORY {
ZP: file = "", define = yes, start = $0082, size = $007E;

View File

@ -8,9 +8,12 @@ FEATURES {
}
SYMBOLS {
__EXEHDR__: type = import;
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
__MAINCHNKHDR__: type = import;
__AUTOSTART__: type = import; # force inclusion of autostart "trailer"
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__STARTADDRESS__: type = export, value = %S;
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
sramprep: type = import; # force inclusion of SRPREP
}

View File

@ -3,10 +3,13 @@ FEATURES {
}
SYMBOLS {
__EXEHDR__: type = import;
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
__MAINCHNKHDR__: type = import;
__AUTOSTART__: type = import; # force inclusion of autostart "trailer"
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__OVERLAYSIZE__: type = weak, value = $1000; # 4k overlay
__STARTADDRESS__: type = export, value = %S;
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
sramprep: type = import; # force inclusion of SRPREP
}

View File

@ -3,9 +3,12 @@ FEATURES {
}
SYMBOLS {
__EXEHDR__: type = import;
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
__MAINCHNKHDR__: type = import;
__AUTOSTART__: type = import; # force inclusion of autostart "trailer"
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__STARTADDRESS__: type = export, value = %S;
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
sramprep: type = import; # force inclusion of SRPREP
}

View File

@ -8,12 +8,11 @@
; Stefan Haubenthal
;
.export _exit
.export __STARTUP__ : absolute = 1 ; Mark as startup
.export _exit, start
.import initlib, donelib
.import callmain, zerobss
.import __STARTUP_LOAD__, __BSS_LOAD__
.import __RESERVED_MEMORY__
.import __RAM_START__, __RAM_SIZE__
.ifdef __ATARIXL__
@ -28,19 +27,6 @@
.include "atari.inc"
; ------------------------------------------------------------------------
; EXE header
.segment "EXEHDR"
.word $FFFF
.segment "MAINHDR"
.word __STARTUP_LOAD__
.word __BSS_LOAD__ - 1
; ------------------------------------------------------------------------
; Actual code
.segment "STARTUP"
@ -212,9 +198,3 @@ LMARGN_save: .res 1
.ifndef __ATARIXL__
APPMHI_save: .res 2
.endif
.segment "AUTOSTRT"
.word RUNAD ; defined in atari.inc
.word RUNAD+1
.word start

8
libsrc/atari/exehdr.s Normal file
View File

@ -0,0 +1,8 @@
; This file defines the EXE header for Atari executables
.export __EXEHDR__: absolute = 1
.segment "EXEHDR"
.word $FFFF

12
libsrc/atari/exetrailer.s Normal file
View File

@ -0,0 +1,12 @@
; This file defines the EXE file "trailer" which sets the entry point
.export __AUTOSTART__: absolute = 1
.import start
.include "atari.inc"
.segment "AUTOSTRT"
.word RUNAD ; defined in atari.inc
.word RUNAD+1
.word start

9
libsrc/atari/mainhdr.s Normal file
View File

@ -0,0 +1,9 @@
; This file defines the chunk header for the main program load chunk
.export __MAINCHNKHDR__: absolute = 1
.import __RAM_START__, __BSS_LOAD__
.segment "MAINHDR"
.word __RAM_START__
.word __BSS_LOAD__ - 1