From 40e49074a495aa77a7a6388361ead9b3ae6fc980 Mon Sep 17 00:00:00 2001 From: Christian Groessler Date: Fri, 17 Jan 2014 20:08:41 +0100 Subject: [PATCH] add support for 16K cartridges --- cfg/atari-cart.cfg | 9 +++++---- libsrc/atari/carthdr.s | 4 +++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/cfg/atari-cart.cfg b/cfg/atari-cart.cfg index ab84f98fc..10674dc49 100644 --- a/cfg/atari-cart.cfg +++ b/cfg/atari-cart.cfg @@ -2,6 +2,7 @@ FEATURES { STARTADDRESS: default = $2000; } SYMBOLS { + __CARTSIZE__: type = weak, value = $2000; # possible values: $2000 and $4000 __CART_HEADER__: type = import; __STACKSIZE__: type = weak, value = $0800; # 2k stack __STARTADDRESS__: type = export, value = %S; @@ -9,10 +10,10 @@ SYMBOLS { __CARTFLAGS__: type = weak, value = $01; # see documentation for other possible values } MEMORY { - ZP: file = "", define = yes, start = $0082, size = $007E; - RAM: file = "", define = yes, start = %S, size = $2000; - ROM: file = %O, define = yes, start = $A000, size = $1FFA, fill = yes, fillval = $FF; - CARTID: file = %O, start = $BFFA, size = $0006; + ZP: file = "", define = yes, start = $0082, size = $007E; + RAM: file = "", define = yes, start = %S, size = __CARTSIZE__; + ROM: file = %O, define = yes, start = $C000 - __CARTSIZE__, size = __CARTSIZE__ - 6, fill = yes, fillval = $FF; + CARTID: file = %O, start = $BFFA, size = $0006; } SEGMENTS { STARTUP: load = ROM, type = ro, define = yes, optional = yes; diff --git a/libsrc/atari/carthdr.s b/libsrc/atari/carthdr.s index 3e4ea219c..bda11c06b 100644 --- a/libsrc/atari/carthdr.s +++ b/libsrc/atari/carthdr.s @@ -5,7 +5,7 @@ .ifndef __ATARIXL__ -.import __CARTFLAGS__, cartinit, cartstart +.import __CARTSIZE__, __CARTFLAGS__, cartinit, cartstart .export __CART_HEADER__: absolute = 1 .include "atari.inc" @@ -17,4 +17,6 @@ .byte <__CARTFLAGS__ .word cartinit ; init routine +.assert (__CARTSIZE__ = $2000 || __CARTSIZE__ = $4000), error, "Cartridge size must either be $2000 or $4000" + .endif ; .ifndef __ATARIXL__