]> git.sur5r.net Git - cc65/commitdiff
Change XEX configuration file names to better reflect original names. 848/head
authorDaniel Serpell <daniel.serpell@gmail.com>
Thu, 21 Feb 2019 21:55:08 +0000 (18:55 -0300)
committerDaniel Serpell <daniel.serpell@gmail.com>
Thu, 21 Feb 2019 22:00:17 +0000 (19:00 -0300)
Also, updates documentation with the new files.

cfg/atari-asm-xex.cfg [new file with mode: 0644]
cfg/atari-c-xex.cfg [deleted file]
cfg/atari-xex.cfg
cfg/atarixl-c-xex.cfg [deleted file]
cfg/atarixl-xex.cfg [new file with mode: 0644]
doc/atari.sgml

diff --git a/cfg/atari-asm-xex.cfg b/cfg/atari-asm-xex.cfg
new file mode 100644 (file)
index 0000000..f0a6291
--- /dev/null
@@ -0,0 +1,24 @@
+FEATURES {
+    STARTADDRESS: default = $2E00;
+}
+SYMBOLS {
+    __STARTADDRESS__: type = export, value = %S;
+}
+MEMORY {
+    ZP:      file = "", define = yes, start = $0082, size = $007E;
+    MAIN:    file = %O, define = yes, start = %S,    size = $BC20 - %S;
+}
+FILES {
+    %O: format = atari;
+}
+FORMATS {
+    atari: runad = start;
+}
+SEGMENTS {
+    ZEROPAGE: load = ZP,      type = zp,  optional = yes;
+    EXTZP:    load = ZP,      type = zp,  optional = yes; # to enable modules to be able to link to C and assembler programs
+    CODE:     load = MAIN,    type = rw,                  define = yes;
+    RODATA:   load = MAIN,    type = ro   optional = yes;
+    DATA:     load = MAIN,    type = rw   optional = yes;
+    BSS:      load = MAIN,    type = bss, optional = yes, define = yes;
+}
diff --git a/cfg/atari-c-xex.cfg b/cfg/atari-c-xex.cfg
deleted file mode 100644 (file)
index 5f390e1..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-# Sample linker configuration for C programs using the Atari binary file support.
-# Use with: cl65 -tatari -Catari-c-xex.cfg prog.c -o prog.xex
-FEATURES {
-    STARTADDRESS: default = $2000;
-}
-SYMBOLS {
-    __SYSTEM_CHECK__:    type = import;  # force inclusion of "system check" load chunk
-    __STACKSIZE__:       type = weak, value = $0800; # 2k stack
-    __STARTADDRESS__:    type = export, value = %S;
-    __RESERVED_MEMORY__: type = weak, value = $0000;
-    __SYSCHKHDR__:       type = export, value = 0; # Disable system check header
-    __SYSCHKTRL__:       type = export, value = 0; # Disable system check trailer
-}
-MEMORY {
-    ZP:         file = "", define = yes, start = $0082, size = $007E;
-# "system check" load chunk
-    SYSCHKCHNK: file = %O,               start = $2E00, size = $0300;
-# "main program" load chunk
-    MAIN:       file = %O, define = yes, start = %S,    size = $BC20 - __STACKSIZE__ - __RESERVED_MEMORY__ - %S;
-}
-FILES {
-    %O: format = atari;
-}
-FORMATS {
-    atari: runad = start,
-           initad = SYSCHKCHNK: __SYSTEM_CHECK__;
-}
-SEGMENTS {
-    ZEROPAGE:  load = ZP,         type = zp;
-    EXTZP:     load = ZP,         type = zp,                optional = yes;
-    SYSCHK:    load = SYSCHKCHNK, type = rw,  define = yes, optional = yes;
-    STARTUP:   load = MAIN,       type = ro,  define = yes;
-    LOWBSS:    load = MAIN,       type = rw,                optional = yes;  # not zero initialized
-    LOWCODE:   load = MAIN,       type = ro,  define = yes, optional = yes;
-    ONCE:      load = MAIN,       type = ro,                optional = yes;
-    CODE:      load = MAIN,       type = ro,  define = yes;
-    RODATA:    load = MAIN,       type = ro;
-    DATA:      load = MAIN,       type = rw;
-    INIT:      load = MAIN,       type = rw,                optional = yes;
-    BSS:       load = MAIN,       type = bss, define = yes;
-}
-FEATURES {
-    CONDES: type    = constructor,
-            label   = __CONSTRUCTOR_TABLE__,
-            count   = __CONSTRUCTOR_COUNT__,
-            segment = ONCE;
-    CONDES: type    = destructor,
-            label   = __DESTRUCTOR_TABLE__,
-            count   = __DESTRUCTOR_COUNT__,
-            segment = RODATA;
-    CONDES: type    = interruptor,
-            label   = __INTERRUPTOR_TABLE__,
-            count   = __INTERRUPTOR_COUNT__,
-            segment = RODATA,
-            import  = __CALLIRQ__;
-}
index f0a6291db3c331f966b9e7b3d70dc10631a7fa75..5f390e12c150335c339d54acd48230cb78da13da 100644 (file)
@@ -1,24 +1,56 @@
+# Sample linker configuration for C programs using the Atari binary file support.
+# Use with: cl65 -tatari -Catari-c-xex.cfg prog.c -o prog.xex
 FEATURES {
-    STARTADDRESS: default = $2E00;
+    STARTADDRESS: default = $2000;
 }
 SYMBOLS {
-    __STARTADDRESS__: type = export, value = %S;
+    __SYSTEM_CHECK__:    type = import;  # force inclusion of "system check" load chunk
+    __STACKSIZE__:       type = weak, value = $0800; # 2k stack
+    __STARTADDRESS__:    type = export, value = %S;
+    __RESERVED_MEMORY__: type = weak, value = $0000;
+    __SYSCHKHDR__:       type = export, value = 0; # Disable system check header
+    __SYSCHKTRL__:       type = export, value = 0; # Disable system check trailer
 }
 MEMORY {
-    ZP:      file = "", define = yes, start = $0082, size = $007E;
-    MAIN:    file = %O, define = yes, start = %S,    size = $BC20 - %S;
+    ZP:         file = "", define = yes, start = $0082, size = $007E;
+# "system check" load chunk
+    SYSCHKCHNK: file = %O,               start = $2E00, size = $0300;
+# "main program" load chunk
+    MAIN:       file = %O, define = yes, start = %S,    size = $BC20 - __STACKSIZE__ - __RESERVED_MEMORY__ - %S;
 }
 FILES {
     %O: format = atari;
 }
 FORMATS {
-    atari: runad = start;
+    atari: runad = start,
+           initad = SYSCHKCHNK: __SYSTEM_CHECK__;
 }
 SEGMENTS {
-    ZEROPAGE: load = ZP,      type = zp,  optional = yes;
-    EXTZP:    load = ZP,      type = zp,  optional = yes; # to enable modules to be able to link to C and assembler programs
-    CODE:     load = MAIN,    type = rw,                  define = yes;
-    RODATA:   load = MAIN,    type = ro   optional = yes;
-    DATA:     load = MAIN,    type = rw   optional = yes;
-    BSS:      load = MAIN,    type = bss, optional = yes, define = yes;
+    ZEROPAGE:  load = ZP,         type = zp;
+    EXTZP:     load = ZP,         type = zp,                optional = yes;
+    SYSCHK:    load = SYSCHKCHNK, type = rw,  define = yes, optional = yes;
+    STARTUP:   load = MAIN,       type = ro,  define = yes;
+    LOWBSS:    load = MAIN,       type = rw,                optional = yes;  # not zero initialized
+    LOWCODE:   load = MAIN,       type = ro,  define = yes, optional = yes;
+    ONCE:      load = MAIN,       type = ro,                optional = yes;
+    CODE:      load = MAIN,       type = ro,  define = yes;
+    RODATA:    load = MAIN,       type = ro;
+    DATA:      load = MAIN,       type = rw;
+    INIT:      load = MAIN,       type = rw,                optional = yes;
+    BSS:       load = MAIN,       type = bss, define = yes;
+}
+FEATURES {
+    CONDES: type    = constructor,
+            label   = __CONSTRUCTOR_TABLE__,
+            count   = __CONSTRUCTOR_COUNT__,
+            segment = ONCE;
+    CONDES: type    = destructor,
+            label   = __DESTRUCTOR_TABLE__,
+            count   = __DESTRUCTOR_COUNT__,
+            segment = RODATA;
+    CONDES: type    = interruptor,
+            label   = __INTERRUPTOR_TABLE__,
+            count   = __INTERRUPTOR_COUNT__,
+            segment = RODATA,
+            import  = __CALLIRQ__;
 }
diff --git a/cfg/atarixl-c-xex.cfg b/cfg/atarixl-c-xex.cfg
deleted file mode 100644 (file)
index 0b1fe9c..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-# Sample linker configuration for C programs using the Atari binary file support.
-# Use with: cl65 -tatarixl -Catarixl-c-xex.cfg prog.c -o prog.xex
-FEATURES {
-    STARTADDRESS: default = $2400;
-}
-SYMBOLS {
-    __SYSTEM_CHECK__: type = import;  # force inclusion of "system check" load chunk
-    __STACKSIZE__:    type = weak, value = $0800; # 2k stack
-    __STARTADDRESS__: type = export, value = %S;
-    __SYSCHKHDR__:    type = export, value = 0; # Disable system check header
-    __SYSCHKTRL__:    type = export, value = 0; # Disable system check trailer
-}
-MEMORY {
-    ZP:          file = "", define = yes, start = $0082,                size = $007E;
-
-# "system check" load chunk
-    SYSCHKCHNK:  file = %O,               start = $2E00,                size = $0300;
-
-# "shadow RAM preparation" load chunk
-    SRPREPCHNK:  file = %O, define = yes, start = %S,                   size = $7C20 - %S - $07FF;  # $07FF: space for temp. chargen buffer, 1K aligned
-
-# "main program" load chunk
-    MAIN:        file = %O, define = yes, start = %S + __LOWBSS_SIZE__, size = $D000 - __STACKSIZE__ - %S - __LOWBSS_SIZE__;
-
-# memory beneath the ROM preceeding the character generator
-    HIDDEN_RAM2: file = "", define = yes, start = $D800,                size = $0800;
-
-# address of relocated character generator (same addess as ROM version)
-    CHARGEN:     file = "", define = yes, start = $E000,                size = $0400;
-
-# memory beneath the ROM
-    HIDDEN_RAM:  file = "", define = yes, start = $E400,                size = $FFFA - $E400;
-
-# UNUSED - hide
-    UNUSED:  file = "", start = $0,  size = $10;
-}
-FILES {
-    %O: format = atari;
-}
-FORMATS {
-    atari: runad = start,
-           initad = SYSCHKCHNK: __SYSTEM_CHECK__,
-           initad = SRPREPCHNK: sramprep;
-}
-SEGMENTS {
-    ZEROPAGE:    load = ZP,                            type = zp;
-    EXTZP:       load = ZP,                            type = zp,                optional = yes;
-
-    SYSCHK:      load = SYSCHKCHNK,                    type = rw,  define = yes, optional = yes;
-    LOWBSS:      load = SRPREPCHNK,                    type = bss, define = yes;  # shared btw. SRPREPCHNK and RAM, not zero initialized
-    SRPREP:      load = SRPREPCHNK,                    type = rw,  define = yes;
-    SHADOW_RAM:  load = SRPREPCHNK, run = HIDDEN_RAM,  type = rw,  define = yes, optional = yes;
-    SHADOW_RAM2: load = SRPREPCHNK, run = HIDDEN_RAM2, type = rw,  define = yes, optional = yes;
-    STARTUP:     load = MAIN,                          type = ro,  define = yes;
-    LOWCODE:     load = MAIN,                          type = ro,  define = yes, optional = yes;
-    ONCE:        load = MAIN,                          type = ro,                optional = yes;
-    CODE:        load = MAIN,                          type = ro,  define = yes;
-    RODATA:      load = MAIN,                          type = ro;
-    DATA:        load = MAIN,                          type = rw;
-    INIT:        load = MAIN,                          type = rw,                optional = yes;
-    BSS:         load = MAIN,                          type = bss, define = yes;
-    SRPREPHDR:   load = UNUSED,                        type = ro;
-    SRPREPTRL:   load = UNUSED,                        type = ro;
-}
-FEATURES {
-    CONDES: type    = constructor,
-            label   = __CONSTRUCTOR_TABLE__,
-            count   = __CONSTRUCTOR_COUNT__,
-            segment = ONCE;
-    CONDES: type    = destructor,
-            label   = __DESTRUCTOR_TABLE__,
-            count   = __DESTRUCTOR_COUNT__,
-            segment = RODATA;
-    CONDES: type    = interruptor,
-            label   = __INTERRUPTOR_TABLE__,
-            count   = __INTERRUPTOR_COUNT__,
-            segment = RODATA,
-            import  = __CALLIRQ__;
-}
diff --git a/cfg/atarixl-xex.cfg b/cfg/atarixl-xex.cfg
new file mode 100644 (file)
index 0000000..0b1fe9c
--- /dev/null
@@ -0,0 +1,79 @@
+# Sample linker configuration for C programs using the Atari binary file support.
+# Use with: cl65 -tatarixl -Catarixl-c-xex.cfg prog.c -o prog.xex
+FEATURES {
+    STARTADDRESS: default = $2400;
+}
+SYMBOLS {
+    __SYSTEM_CHECK__: type = import;  # force inclusion of "system check" load chunk
+    __STACKSIZE__:    type = weak, value = $0800; # 2k stack
+    __STARTADDRESS__: type = export, value = %S;
+    __SYSCHKHDR__:    type = export, value = 0; # Disable system check header
+    __SYSCHKTRL__:    type = export, value = 0; # Disable system check trailer
+}
+MEMORY {
+    ZP:          file = "", define = yes, start = $0082,                size = $007E;
+
+# "system check" load chunk
+    SYSCHKCHNK:  file = %O,               start = $2E00,                size = $0300;
+
+# "shadow RAM preparation" load chunk
+    SRPREPCHNK:  file = %O, define = yes, start = %S,                   size = $7C20 - %S - $07FF;  # $07FF: space for temp. chargen buffer, 1K aligned
+
+# "main program" load chunk
+    MAIN:        file = %O, define = yes, start = %S + __LOWBSS_SIZE__, size = $D000 - __STACKSIZE__ - %S - __LOWBSS_SIZE__;
+
+# memory beneath the ROM preceeding the character generator
+    HIDDEN_RAM2: file = "", define = yes, start = $D800,                size = $0800;
+
+# address of relocated character generator (same addess as ROM version)
+    CHARGEN:     file = "", define = yes, start = $E000,                size = $0400;
+
+# memory beneath the ROM
+    HIDDEN_RAM:  file = "", define = yes, start = $E400,                size = $FFFA - $E400;
+
+# UNUSED - hide
+    UNUSED:  file = "", start = $0,  size = $10;
+}
+FILES {
+    %O: format = atari;
+}
+FORMATS {
+    atari: runad = start,
+           initad = SYSCHKCHNK: __SYSTEM_CHECK__,
+           initad = SRPREPCHNK: sramprep;
+}
+SEGMENTS {
+    ZEROPAGE:    load = ZP,                            type = zp;
+    EXTZP:       load = ZP,                            type = zp,                optional = yes;
+
+    SYSCHK:      load = SYSCHKCHNK,                    type = rw,  define = yes, optional = yes;
+    LOWBSS:      load = SRPREPCHNK,                    type = bss, define = yes;  # shared btw. SRPREPCHNK and RAM, not zero initialized
+    SRPREP:      load = SRPREPCHNK,                    type = rw,  define = yes;
+    SHADOW_RAM:  load = SRPREPCHNK, run = HIDDEN_RAM,  type = rw,  define = yes, optional = yes;
+    SHADOW_RAM2: load = SRPREPCHNK, run = HIDDEN_RAM2, type = rw,  define = yes, optional = yes;
+    STARTUP:     load = MAIN,                          type = ro,  define = yes;
+    LOWCODE:     load = MAIN,                          type = ro,  define = yes, optional = yes;
+    ONCE:        load = MAIN,                          type = ro,                optional = yes;
+    CODE:        load = MAIN,                          type = ro,  define = yes;
+    RODATA:      load = MAIN,                          type = ro;
+    DATA:        load = MAIN,                          type = rw;
+    INIT:        load = MAIN,                          type = rw,                optional = yes;
+    BSS:         load = MAIN,                          type = bss, define = yes;
+    SRPREPHDR:   load = UNUSED,                        type = ro;
+    SRPREPTRL:   load = UNUSED,                        type = ro;
+}
+FEATURES {
+    CONDES: type    = constructor,
+            label   = __CONSTRUCTOR_TABLE__,
+            count   = __CONSTRUCTOR_COUNT__,
+            segment = ONCE;
+    CONDES: type    = destructor,
+            label   = __DESTRUCTOR_TABLE__,
+            count   = __DESTRUCTOR_COUNT__,
+            segment = RODATA;
+    CONDES: type    = interruptor,
+            label   = __INTERRUPTOR_TABLE__,
+            count   = __INTERRUPTOR_COUNT__,
+            segment = RODATA,
+            import  = __CALLIRQ__;
+}
index 346377b36493519e48a5ff477de9253ae1d818e1..42b06d83eaef09ebe369bb3874667ba5cef85e88 100644 (file)
@@ -203,7 +203,7 @@ is <it/left out/, keep this in mind.
 The values you assign to the two symbols <tt/__AUTOSTART__/ and <tt/__EXEHDR__/
 don't matter.
 
-<sect2><tt/atari-xex.cfg/<p>
+<sect2><tt/atari-asm-xex.cfg/<p>
 
 This config file allows writing multi segment binaries easily, without having to
 write the header explicitly on each segment.
@@ -213,7 +213,8 @@ format support on LD65 instead of the standard binary output, so it does not
 have the <tt/__AUTOSTART/ nor the <tt/__EXEHDR__/ symbols.
 
 Note that each <tt/MEMORY/ area in the configuration file will have it's own
-segment in the output file with the correct headers.
+segment in the output file with the correct headers, and you can specify and
+init address INITAD) for each memory area.
 
 <sect2><tt/atari-cart.cfg/<p>
 
@@ -242,6 +243,18 @@ would need to be split in more parts and the parts to be loaded manually.
 To write the generated file to a cassette, a utility (<tt/w2cas.com/) to run
 on an Atari is provided in the <tt/util/ directory of <tt/atari/ target dir.
 
+<sect2><tt/atari-xex.cfg/<p>
+
+This config file shows how to write a binary using the ATARI (xex) file format
+support on LD65, this simplifies the memory areas and allows to add new memory
+areas easily without writing new headers and trailers.
+
+Note that the default C library includes the system-check chunk, so in this
+linker configuration we suppress the importing of the header and trailer for
+this chunk by defining the standard import symbols to a 0 value. For the
+initialization address of the system-check chunk, the INITAD is set directly in
+the configuration.
+
 <sect1><tt/atarixl/ config files<p>
 
 <sect2>default config file (<tt/atarixl.cfg/)<p>
@@ -265,6 +278,15 @@ The files generated by this config file include the
 <ref name="&dquot;system check&dquot;" id="syschkxl"> load chunk. It can
 optionally be left out, see <ref name="Getting rid of the &dquot;system check&dquot; load chunk" id="nosyschk">.
 
+<sect2><tt/atarixl-xex.cfg/<p>
+
+Similar to the <tt/atari-xex.cfg/ above, this config file shows how to write a
+binary using the ATARI (xex) file format support on LD65.
+
+In addition to the suppressing of the system-check headers and trailers, this
+also suppresses the shadow-ram-preparation headers and trailers, but does this
+by defining an "UNUSED" memory area that is not written to the output file.
+
 
 <sect>Platform specific header files<p>