aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/Makefile2
-rw-r--r--config/atari.cfg56
-rw-r--r--src/atari.cfg10
-rw-r--r--src/page6.s5
4 files changed, 70 insertions, 3 deletions
diff --git a/config/Makefile b/config/Makefile
index 9ce3ffe..b27952f 100644
--- a/config/Makefile
+++ b/config/Makefile
@@ -3,7 +3,7 @@ all: config.xex
#config.xex: config.c exetrailer.s ../src/config.h ../src/config.c
config.xex:
- cl65 -DVERSION='"$(VERSION)"' -m config.map -Oris -t atari -C ../src/atari.cfg -o config.xex config.c os2ram.c ../src/exehdr.s exetrailer.s
+ cl65 -DVERSION='"$(VERSION)"' -m config.map -Oris -t atari -C atari.cfg -o config.xex config.c os2ram.c ../src/exehdr.s exetrailer.s
clean:
rm -f config.xex
diff --git a/config/atari.cfg b/config/atari.cfg
new file mode 100644
index 0000000..301bee7
--- /dev/null
+++ b/config/atari.cfg
@@ -0,0 +1,56 @@
+# This is the original atari.cfg inherited from netcat.
+# It's not the default one that ships with cc65: it doesn't
+# have the "memcheck" segment.
+
+FEATURES {
+ STARTADDRESS: default = $2000;
+}
+SYMBOLS {
+ __EXEHDR__: type = import;
+ __AUTOSTART__: type = import; # force inclusion of autostart "trailer"
+ __STACKSIZE__: type = weak, value = $0100;
+ __STARTADDRESS__: type = export, value = %S;
+ __RESERVED_MEMORY__: type = weak, value = $0000;
+}
+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;
+ MAIN: file = %O, define = yes, start = %S, size = $8000 - __STACKSIZE__ - __RESERVED_MEMORY__ - %S;
+ TRAILER: file = %O, start = $0000, size = $0006;
+}
+SEGMENTS {
+ ZEROPAGE: load = ZP, type = zp;
+ EXTZP: load = ZP, type = zp, optional = yes;
+ EXEHDR: load = HEADER, type = ro;
+ MAINHDR: load = MAINHDR, type = ro;
+ 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;
+ AUTOSTRT: load = TRAILER, 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/src/atari.cfg b/src/atari.cfg
index 821374d..53fc6ba 100644
--- a/src/atari.cfg
+++ b/src/atari.cfg
@@ -14,6 +14,10 @@ MEMORY {
# file header, just $FFFF
HEADER: file = %O, start = $0000, size = $0002;
+# page 6
+ P6HDR: file = %O, start = $0000, size = $0004;
+ PAGE6: file = %O, define = yes, start = $0600, size = $00ff;
+
# "main program" load chunk
MAINHDR: file = %O, start = $0000, size = $0004;
MAIN: file = %O, define = yes, start = %S, size = $8000 - __STACKSIZE__ - __RESERVED_MEMORY__ - %S;
@@ -23,11 +27,12 @@ SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
EXTZP: load = ZP, type = zp, optional = yes;
EXEHDR: load = HEADER, type = ro;
+ P6HDR: load = P6HDR, type = ro;
+ ONCE: load = PAGE6, type = ro, define = yes; # not used by fnchat!
+ STARTUP: load = PAGE6, type = ro, define = yes;
MAINHDR: load = MAINHDR, type = ro;
- 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;
@@ -35,6 +40,7 @@ SEGMENTS {
BSS: load = MAIN, type = bss, define = yes;
AUTOSTRT: load = TRAILER, type = ro;
}
+
FEATURES {
CONDES: type = constructor,
label = __CONSTRUCTOR_TABLE__,
diff --git a/src/page6.s b/src/page6.s
new file mode 100644
index 0000000..772a0c8
--- /dev/null
+++ b/src/page6.s
@@ -0,0 +1,5 @@
+
+ .import __STARTUP_SIZE__
+ .segment "P6HDR"
+ .word $0600
+ .word $0600 + __STARTUP_SIZE__ - 1