]> 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 {
 FEATURES {
-    STARTADDRESS: default = $2E00;
+    STARTADDRESS: default = $2000;
 }
 SYMBOLS {
 }
 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 {
 }
 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 {
 }
 FILES {
     %O: format = atari;
 }
 FORMATS {
-    atari: runad = start;
+    atari: runad = start,
+           initad = SYSCHKCHNK: __SYSTEM_CHECK__;
 }
 SEGMENTS {
 }
 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.
 
 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.
 
 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
 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>
 
 
 <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.
 
 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>
 <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">.
 
 <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>
 
 
 <sect>Platform specific header files<p>