]> git.sur5r.net Git - cc65/commitdiff
atari-asm.cfg linker config file
authorChristian Groessler <chris@groessler.org>
Fri, 18 Oct 2013 01:07:01 +0000 (03:07 +0200)
committerChristian Groessler <chris@groessler.org>
Fri, 18 Oct 2013 01:08:26 +0000 (03:08 +0200)
cfg/atari-asm.cfg [new file with mode: 0644]
cfg/atari-overlay.cfg
cfg/atari.cfg
cfg/atarixl-largehimem.cfg
cfg/atarixl-overlay.cfg
cfg/atarixl.cfg
libsrc/atari/crt0.s
libsrc/atari/exehdr.s [new file with mode: 0644]
libsrc/atari/exetrailer.s [new file with mode: 0644]
libsrc/atari/mainhdr.s [new file with mode: 0644]

diff --git a/cfg/atari-asm.cfg b/cfg/atari-asm.cfg
new file mode 100644 (file)
index 0000000..2035213
--- /dev/null
@@ -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;
+}
index 1cc0eb725e893576968bebeaef32a284b29da28c..d5a73531b3a1fd90266e117e2c0b9fad7e5d55a3 100644 (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;
index 7555bb4a1b91c91b0414070c16e830260fce059f..ef57c3e52b5c73abc153070901f07bc1f2197d35 100644 (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;
index 5217597ac906350b47c12907995d96a89eca48db..17874b60029c8f2cc6c13a40d8105a46ac4dfb67 100644 (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
 }
 
index 6f5ccbd2cf76d447a69bfb60dfcb8a8a2050b47f..2f5595c0b20ac5c8a0c1a898eefa3fb5b6972cb0 100644 (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
 }
 
index 430c7fb5fdf8ab9e6abcb666fb4a7e9ef08db8ac..f217c308f8081c4f058bf5f907d5bf898a6df249 100644 (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
 }
 
index de72c1eb81b55e6d209292c07e054113ad4108c1..464557fa7dda7328af99964c40415fece6a2b3db 100644 (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__
         .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
diff --git a/libsrc/atari/exehdr.s b/libsrc/atari/exehdr.s
new file mode 100644 (file)
index 0000000..f2f7750
--- /dev/null
@@ -0,0 +1,8 @@
+; This file defines the EXE header for Atari executables
+
+        .export         __EXEHDR__: absolute = 1
+
+.segment        "EXEHDR"
+
+        .word   $FFFF
+
diff --git a/libsrc/atari/exetrailer.s b/libsrc/atari/exetrailer.s
new file mode 100644 (file)
index 0000000..8cae0bd
--- /dev/null
@@ -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
+
diff --git a/libsrc/atari/mainhdr.s b/libsrc/atari/mainhdr.s
new file mode 100644 (file)
index 0000000..31b339b
--- /dev/null
@@ -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