From 14988f5dda131cb532ad13a901c85c227c6ace81 Mon Sep 17 00:00:00 2001 From: acqn Date: Wed, 16 Feb 2022 20:10:54 +0800 Subject: [PATCH 01/10] Fixed bitwise shift with numeric constant operand(s). --- src/cc65/shiftexpr.c | 54 ++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 29 deletions(-) diff --git a/src/cc65/shiftexpr.c b/src/cc65/shiftexpr.c index 168574a1b..f7385ace1 100644 --- a/src/cc65/shiftexpr.c +++ b/src/cc65/shiftexpr.c @@ -64,11 +64,11 @@ void ShiftExpr (struct ExprDesc* Expr) CodeMark Mark1; CodeMark Mark2; token_t Tok; /* The operator token */ - const Type* EffType; /* Effective lhs type */ const Type* ResultType; /* Type of the result */ unsigned ExprBits; /* Bits of the lhs operand */ unsigned GenFlags; /* Generator flags */ unsigned ltype; + int lconst; /* Operand is a constant */ int rconst; /* Operand is a constant */ @@ -92,7 +92,7 @@ void ShiftExpr (struct ExprDesc* Expr) NextToken (); /* Get the type of the result */ - ResultType = EffType = IntPromotion (Expr->Type); + ResultType = IntPromotion (Expr->Type); /* Prepare the code generator flags */ GenFlags = TypeOf (ResultType); @@ -103,7 +103,8 @@ void ShiftExpr (struct ExprDesc* Expr) /* Get the lhs on stack */ GetCodePos (&Mark1); ltype = TypeOf (Expr->Type); - if (ED_IsConstAbs (Expr)) { + lconst = ED_IsConstAbs (Expr); + if (lconst) { /* Constant value */ GetCodePos (&Mark2); g_push (ltype | CF_CONST, Expr->IVal); @@ -115,7 +116,7 @@ void ShiftExpr (struct ExprDesc* Expr) } /* Get the right hand side */ - ExprWithCheck (hie8, &Expr2); + MarkedExprWithCheck (hie8, &Expr2); /* Check the type of the rhs */ if (!IsClassInt (Expr2.Type)) { @@ -124,7 +125,7 @@ void ShiftExpr (struct ExprDesc* Expr) } /* Check for a constant right side expression */ - rconst = ED_IsConstAbs (&Expr2); + rconst = ED_IsConstAbs (&Expr2) && ED_CodeRangeIsEmpty (&Expr2); if (!rconst) { /* Not constant, load into the primary */ @@ -154,31 +155,32 @@ void ShiftExpr (struct ExprDesc* Expr) } - /* If the shift count is zero, nothing happens */ - if (Expr2.IVal == 0) { + /* If the shift count is zero, nothing happens. If the left hand + ** side is a constant, the result is constant. + */ + if (Expr2.IVal == 0 || lconst) { - /* Result is already in Expr, remove the generated code */ - RemoveCode (&Mark1); + /* Set the type */ + Expr->Type = ResultType; - /* Done */ - goto Next; - } + if (lconst) { - /* If the left hand side is a constant, the result is constant */ - if (ED_IsConstAbs (Expr)) { + /* Evaluate the result */ + switch (Tok) { + case TOK_SHL: Expr->IVal <<= Expr2.IVal; break; + case TOK_SHR: Expr->IVal >>= Expr2.IVal; break; + default: /* Shutup gcc */ break; + } - /* Evaluate the result */ - switch (Tok) { - case TOK_SHL: Expr->IVal <<= Expr2.IVal; break; - case TOK_SHR: Expr->IVal >>= Expr2.IVal; break; - default: /* Shutup gcc */ break; + /* Limit the calculated value to the range of its type */ + LimitExprValue (Expr); } - /* Both operands are constant, remove the generated code */ + /* Result is already got, remove the generated code */ RemoveCode (&Mark1); /* Done */ - goto Next; + continue; } /* If we're shifting an integer or unsigned to the right, the lhs @@ -188,13 +190,12 @@ void ShiftExpr (struct ExprDesc* Expr) ** shift count is zero, we're done. */ if (Tok == TOK_SHR && - IsTypeInt (Expr->Type) && + IsClassInt (Expr->Type) && + SizeOf (Expr->Type) == SIZEOF_INT && ED_IsLVal (Expr) && ED_IsLocQuasiConst (Expr) && Expr2.IVal >= 8) { - const Type* OldType; - /* Increase the address by one and decrease the shift count */ ++Expr->IVal; Expr2.IVal -= 8; @@ -202,7 +203,6 @@ void ShiftExpr (struct ExprDesc* Expr) /* Replace the type of the expression temporarily by the ** corresponding char type. */ - OldType = Expr->Type; if (IsSignUnsigned (Expr->Type)) { Expr->Type = type_uchar; } else { @@ -215,9 +215,6 @@ void ShiftExpr (struct ExprDesc* Expr) /* Generate again code for the load, this time with the new type */ LoadExpr (CF_NONE, Expr); - /* Reset the type */ - Expr->Type = OldType; - /* If the shift count is now zero, we're done */ if (Expr2.IVal == 0) { /* Be sure to mark the value as in the primary */ @@ -238,7 +235,6 @@ MakeRVal: /* We have an rvalue in the primary now */ ED_FinalizeRValLoad (Expr); -Next: /* Set the type of the result */ Expr->Type = ResultType; } From 2bda128ef183c6b1a26a5d8a1586af25114e629f Mon Sep 17 00:00:00 2001 From: acqn Date: Sat, 26 Feb 2022 23:02:51 +0800 Subject: [PATCH 02/10] Fixed LimitExprValue() for 64-bit long env. --- src/cc65/expr.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cc65/expr.c b/src/cc65/expr.c index 3b9307a37..8920d5c40 100644 --- a/src/cc65/expr.c +++ b/src/cc65/expr.c @@ -216,8 +216,11 @@ void LimitExprValue (ExprDesc* Expr) break; case T_LONG: + Expr->IVal = (int32_t)Expr->IVal; + break; + case T_ULONG: - /* No need to do anything */ + Expr->IVal = (uint32_t)Expr->IVal; break; case T_SCHAR: From 904a77e03c960cd226882d579f2b3365f62bd6c7 Mon Sep 17 00:00:00 2001 From: acqn Date: Fri, 18 Feb 2022 15:20:01 +0800 Subject: [PATCH 03/10] Testcase for #1675. --- test/val/bug1675-ub.c | 60 +++++++++++++++++++++++++ test/val/bug1675.c | 101 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 161 insertions(+) create mode 100644 test/val/bug1675-ub.c create mode 100644 test/val/bug1675.c diff --git a/test/val/bug1675-ub.c b/test/val/bug1675-ub.c new file mode 100644 index 000000000..72e372308 --- /dev/null +++ b/test/val/bug1675-ub.c @@ -0,0 +1,60 @@ +/* #1675 - Some UB cases of bit-shifts */ + +#include + +int unexpected = 0; + +void Test_UB(void) +{ + { + /* UB per standard, lhs expected in cc65: (int)-32768 */ + if (!((0x4000 << 1) < 0)) { + ++unexpected; + printf("Expected: (0x4000 << 1) < 0, got lhs: %ld\n", (long)(0x4000 << 1)); + } + } + + { + /* UB per standard, lhs expected in cc65: (long)-2147483648L */ + if (!((0x40000000 << 1) < 0)) { + ++unexpected; + printf("Expected: (0x40000000 << 1) < 0, got lhs: %ld\n", (long)(0x40000000 << 1)); + } + } + + { + /* UB per standard, lhs expected in cc65: (int)-32768 */ + if (!(((unsigned char)0x80 << 8) < 0)) { + ++unexpected; + printf("Expected: ((unsigned char)0x80 << 8) < 0, got lhs: %ld\n", (long)((unsigned char)0x80 << 8)); + } + } + + { + /* UB per standard, lhs expected in cc65: (int)-32768 */ + if (!(((short)0x4000L << 1) < 0)) { + ++unexpected; + printf("Expected: ((short)0x4000L << 1) < 0, got lhs: %ld\n", (long)((short)0x4000L << 1)); + } + } + + { + const signed short x = 0x4000; + /* UB per standard, lhs expected in cc65: (int)-32768 */ + if (!((x << 1) < 0)) { + ++unexpected; + printf("Expected: (x << 1) < 0, got lhs: %ld\n", (long)(x << 1)); + } + } +} + +int main(void) +{ + Test_UB(); + + if (unexpected != 0) { + printf("Unexpected: %d\n", unexpected); + } + + return unexpected; +} diff --git a/test/val/bug1675.c b/test/val/bug1675.c new file mode 100644 index 000000000..ee24425df --- /dev/null +++ b/test/val/bug1675.c @@ -0,0 +1,101 @@ +/* #1675 - Some corner cases of bit-shifts */ + +#include + +int failures = 0; + +void Test_Defined(void) +{ + { + /* Well-defined per standard, lhs expected in cc65: (int)-256 */ + if (!(((signed char)0x80 << 1) < 0)) { + ++failures; + printf("Expected: ((signed char)0x80 << 1) < 0, got lhs: %ld\n", (long)((signed char)0x80 << 1)); + } + } + + { + /* Implementation-defined per standard, lhs expected in cc65: (int)-128 */ + if (!(((signed char)0x80 >> 1 << 1) < 0)) { + ++failures; + printf("Expected: ((signed char)0x80 >> 1 << 1) < 0, got lhs: %ld\n", (long)((signed char)0x80 >> 1 << 1)); + } + } + + { + int x = 0; + /* Well-defined per standard, lhs expected in cc65: (int)1 */ + if (!((1 << (x++, 0)) == 1)) { + ++failures; + x = 0; + printf("Expected: (1 << (x++, 0)) == 1, got lhs: %ld\n", (long)(1 << (x++, 0))); + } + + /* Well-defined per standard, lhs expected in cc65: (int)1 */ + if (!(x == 1)) { + ++failures; + printf("Expected: (1 << (x++, 0)) == 1 && x == 1, got x: %d\n", x); + } + } + + { + int x = 0, y = 0x100; + /* Well-defined per standard, lhs expected in cc65: (int)128 */ + if (!((y >> (x++, 0) >> 1) == 0x80)) { + ++failures; + x = 0; + printf("Expected: (y >> (x++, 0) >> 1) == 0x80, got lhs: %ld\n", (long)(y >> (x++, 0) >> 1)); + } + + /* Well-defined per standard, lhs expected in cc65: (int)1 */ + if (!(x == 1)) { + ++failures; + printf("Expected: (y >> (x++, 0) >> 1) == 0x80 && x == 1, got x: %d\n", x); + } + } + + { + int x = 0, y = 0x100; + /* Well-defined per standard, lhs expected in cc65: (int)1 */ + if (!((y >> (x++, 8)) == 1)) { + ++failures; + x = 0; + printf("Expected: (y >> (x++, 8)) == 1, got lhs: %ld\n", (long)(y >> (x++, 8))); + } + + /* Well-defined per standard, lhs expected in cc65: (int)1 */ + if (!(x == 1)) { + ++failures; + printf("Expected: (y >> (x++, 8)) == 1 && x == 1, got x: %d\n", x); + } + } + + { + const signed char x = 0x80; + /* Well-defined per standard, lhs expected in cc65: (int)-256 */ + if (!((x << 1) < 0)) { + ++failures; + printf("Expected: (x << 1) < 0, got lhs: %ld\n", (long)(x << 1)); + } + } + + { + const signed char x = 0x40; + /* Well-defined per standard, lhs expected in cc65: (int)128 */ + if (!((x << 1) >= 0)) { + ++failures; + printf("Expected: (x << 1) >= 0, got lhs: %ld\n", (long)(x << 1)); + } + } +} + +int main(void) +{ + Test_Defined(); + + if (failures != 0) { + printf("Failures: %d\n", failures); + } + + return failures; +} From 4e406b744c174a6b2c1b4fa65c0c9b5980b614ed Mon Sep 17 00:00:00 2001 From: Karri Kaksonen Date: Thu, 24 Feb 2022 08:50:36 +0200 Subject: [PATCH 04/10] Mark index 0 as TRANSPARENT. Let palette start from index 1 --- include/lynx.h | 26 +++++++++++++------------- libsrc/lynx/tgi/lynx-160-102-16.s | 16 ++++++---------- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/include/lynx.h b/include/lynx.h index 4b0390a13..e5ff88a99 100644 --- a/include/lynx.h +++ b/include/lynx.h @@ -52,24 +52,25 @@ /* Color defines */ -#define COLOR_BLACK 0x00 -#define COLOR_RED 0x01 -#define COLOR_PINK 0x02 -#define COLOR_LIGHTGREY 0x03 -#define COLOR_GREY 0x04 -#define COLOR_DARKGREY 0x05 -#define COLOR_BROWN 0x06 -#define COLOR_PEACH 0x07 -#define COLOR_YELLOW 0x08 -#define COLOR_LIGHTGREEN 0x09 -#define COLOR_GREEN 0x0A -#define COLOR_DARKBROWN 0x0B +#define COLOR_TRANSPARENT 0x00 +#define COLOR_BLACK 0x01 +#define COLOR_RED 0x02 +#define COLOR_PINK 0x03 +#define COLOR_LIGHTGREY 0x04 +#define COLOR_GREY 0x05 +#define COLOR_DARKGREY 0x06 +#define COLOR_BROWN 0x07 +#define COLOR_PEACH 0x08 +#define COLOR_YELLOW 0x09 +#define COLOR_LIGHTGREEN 0x0A +#define COLOR_GREEN 0x0B #define COLOR_VIOLET 0x0C #define COLOR_BLUE 0x0D #define COLOR_LIGHTBLUE 0x0E #define COLOR_WHITE 0x0F /* TGI color defines (default palette) */ +#define TGI_COLOR_TRANSPARENT COLOR_TRANSPARENT #define TGI_COLOR_BLACK COLOR_BLACK #define TGI_COLOR_RED COLOR_RED #define TGI_COLOR_PINK COLOR_PINK @@ -81,7 +82,6 @@ #define TGI_COLOR_YELLOW COLOR_YELLOW #define TGI_COLOR_LIGHTGREEN COLOR_LIGHTGREEN #define TGI_COLOR_GREEN COLOR_GREEN -#define TGI_COLOR_DARKBROWN COLOR_DARKBROWN #define TGI_COLOR_VIOLET COLOR_VIOLET #define TGI_COLOR_BLUE COLOR_BLUE #define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE diff --git a/libsrc/lynx/tgi/lynx-160-102-16.s b/libsrc/lynx/tgi/lynx-160-102-16.s index 903d8f25e..c35b6a5aa 100644 --- a/libsrc/lynx/tgi/lynx-160-102-16.s +++ b/libsrc/lynx/tgi/lynx-160-102-16.s @@ -113,7 +113,8 @@ text_bitmap: .res 8*(1+20+1)+1 .rodata -DEFPALETTE: .byte >$011 +DEFPALETTE: .byte >$223 + .byte >$011 .byte >$34d .byte >$9af .byte >$9b8 @@ -124,11 +125,11 @@ DEFPALETTE: .byte >$011 .byte >$d5f .byte >$c53 .byte >$822 - .byte >$223 .byte >$484 .byte >$8e5 .byte >$cf5 .byte >$fff + .byte <$223 .byte <$011 .byte <$34d .byte <$9af @@ -140,7 +141,6 @@ DEFPALETTE: .byte >$011 .byte <$d5f .byte <$c53 .byte <$822 - .byte <$223 .byte <$484 .byte <$8e5 .byte <$cf5 @@ -162,6 +162,7 @@ INSTALL: lda #1 sta TEXTMAGX sta TEXTMAGY + sta DRAWINDEX stz BGINDEX stz DRAWPAGE stz SWAPREQUEST @@ -418,7 +419,7 @@ cls_sprite: .word 0 .word $a000 ; 160 .word $6600 ; 102 - .byte $00 + .byte $11 .code CLEAR: lda # Date: Fri, 25 Feb 2022 16:00:03 +0200 Subject: [PATCH 05/10] Fix black index in tgi_colors.s --- libsrc/lynx/tgi_colors.s | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libsrc/lynx/tgi_colors.s b/libsrc/lynx/tgi_colors.s index c7aefb417..ebc8c2889 100644 --- a/libsrc/lynx/tgi_colors.s +++ b/libsrc/lynx/tgi_colors.s @@ -4,5 +4,5 @@ .include "tgi-kernel.inc" - .export tgi_color_black:zp = $00 + .export tgi_color_black:zp = $01 .export tgi_color_white:zp = $0F From 5ef420af5a4be4350780b335354093bedc81b5c0 Mon Sep 17 00:00:00 2001 From: acqn Date: Tue, 1 Mar 2022 10:40:01 +0800 Subject: [PATCH 06/10] Fixed OptCmp1 with certain code patterns with labels. --- src/cc65/coptcmp.c | 4 ++-- test/val/bug1690.c | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 test/val/bug1690.c diff --git a/src/cc65/coptcmp.c b/src/cc65/coptcmp.c index fda23ae0a..92401a858 100644 --- a/src/cc65/coptcmp.c +++ b/src/cc65/coptcmp.c @@ -309,10 +309,10 @@ unsigned OptCmp1 (CodeSeg* S) /* Insert the ora instead */ X = NewCodeEntry (OP65_ORA, L[0]->AM, L[0]->Arg, 0, L[0]->LI); - CS_InsertEntry (S, X, I); + CS_InsertEntry (S, X, I+3); /* Remove all other instructions */ - CS_DelEntries (S, I+1, 3); + CS_DelEntries (S, I, 3); /* Remember, we had changes */ ++Changes; diff --git a/test/val/bug1690.c b/test/val/bug1690.c new file mode 100644 index 000000000..317913634 --- /dev/null +++ b/test/val/bug1690.c @@ -0,0 +1,23 @@ +/* OptCmp1 messed up with labels */ + +#include + +int main(void) +{ + register unsigned int x = 0x200; + register unsigned int y = 0; + + do + { + ++y; + } + while (--x); + + if (y != 0x200) + { + printf("0x%X\n", y); + return 1; + } + + return 0; +} From bca8fcb9478f47221e2a3f7d1ecdf5717c72899c Mon Sep 17 00:00:00 2001 From: Greg King Date: Tue, 1 Mar 2022 12:56:34 -0500 Subject: [PATCH 07/10] Added a more general test to test/val/bug1690.c --- test/val/bug1690.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/test/val/bug1690.c b/test/val/bug1690.c index 317913634..499dc6b35 100644 --- a/test/val/bug1690.c +++ b/test/val/bug1690.c @@ -2,22 +2,29 @@ #include +static int failures = 0; +static unsigned int z = 0xFF23; + int main(void) { register unsigned int x = 0x200; register unsigned int y = 0; - do - { + do { ++y; + } while (--x); + if (y != 0x200) { + printf("y should be 0x200, not 0x%X.\n", y); + ++failures;; } - while (--x); - if (y != 0x200) - { - printf("0x%X\n", y); - return 1; - } + if ((z -= 0x23)) { + /* Passed -- non-zero z looks like non-zero. */ + } else { + /* Failed -- only the low byte of z was tested. */ + printf("Test thinks non-zero z is zero.\n"); + ++failures; + } - return 0; + return failures; } From 1ba39b678c6efa565736d115efb080d94ccd99a3 Mon Sep 17 00:00:00 2001 From: acqn Date: Thu, 3 Mar 2022 14:03:01 +0800 Subject: [PATCH 08/10] Fixed test/asm/listing/Makefile with mingw32-make.exe that has problems with comments lead with tabulators. --- test/asm/listing/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/asm/listing/Makefile b/test/asm/listing/Makefile index f4a7df81c..c152db7be 100644 --- a/test/asm/listing/Makefile +++ b/test/asm/listing/Makefile @@ -48,7 +48,7 @@ define LISTING_template $(WORKDIR)/$1.bin: $1.s $(ISEQUAL) $(if $(QUIET),echo asm/$1.bin) - # compile without generating listing +# compile without generating listing $(CA65) -t none -o $$(@:.bin=.o) $$< $(LD65) -t none -o $$@ $$(@:.bin=.o) none.lib @@ -59,13 +59,13 @@ endif $(CA65) -t none -l $$(@:.bin=.list.orig) -o $$(@:.bin=.list-o) $$< $(LD65) -t none -o $$(@:.bin=.list-bin) $$(@:.bin=.list-o) none.lib - # check if the result bin is the same as without listing file +# check if the result bin is the same as without listing file $(ISEQUAL) $$@ $$(@:.bin=.list-bin) ifneq ($(wildcard $1.list-ref),) - # we have a reference file, compare that, too +# we have a reference file, compare that, too - # remove first line which contains a version number +# remove first line which contains a version number tail -n +2 $$(@:.bin=.lst.orig) > $$(@:.bin=.lst) $(ISEQUAL) $1.list-ref $$(@:.bin=.lst) endif From c8956ce19b4581c00ac0914db12e36f2ba9b3190 Mon Sep 17 00:00:00 2001 From: acqn Date: Thu, 3 Mar 2022 20:24:14 +0800 Subject: [PATCH 09/10] Fixed signed long comparisons with smaller unsigned types. --- src/cc65/expr.c | 5 +---- test/val/bug1696.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 test/val/bug1696.c diff --git a/src/cc65/expr.c b/src/cc65/expr.c index b3e97ef99..ab48a4554 100644 --- a/src/cc65/expr.c +++ b/src/cc65/expr.c @@ -2587,12 +2587,9 @@ static void hie_compare (const GenDesc* Ops, /* List of generators */ CmpSigned = 0; flags |= CF_UNSIGNED; } + } else { unsigned rtype = TypeOf (Expr2.Type) | (flags & CF_CONST); - if (CmpSigned) { - ltype &= ~CF_UNSIGNED; - rtype &= ~CF_UNSIGNED; - } flags |= g_typeadjust (ltype, rtype); } diff --git a/test/val/bug1696.c b/test/val/bug1696.c new file mode 100644 index 000000000..c31dc257b --- /dev/null +++ b/test/val/bug1696.c @@ -0,0 +1,44 @@ +/* + Copyright 2022 The cc65 Authors + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Tests of unsigned short/unsigned int vs signed long comparisons; + see https://github.com/cc65/cc65/issues/1696 +*/ + +#include + +static unsigned char failures = 0; + +int main(void) +{ + unsigned int x = 65535; + unsigned short y = 65535; + if (!(x > 1L)) { + printf("x = %ld but x > 1L failed\n", (long)x); + ++failures; + } + if (!(y == 65535L)) { + printf("y = %ld but y == 65535L failed\n", (long)y); + ++failures; + } + printf("failures: %u\n", failures); + return failures; +} From 1cb18182edc74f099ab359bb05f5a95ebff8e186 Mon Sep 17 00:00:00 2001 From: Wayne Parham Date: Thu, 3 Mar 2022 12:06:15 -0600 Subject: [PATCH 10/10] Corrected size of BASROM definition --- cfg/sym1-32k.cfg | 2 +- cfg/sym1-4k.cfg | 2 +- cfg/sym1.cfg | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cfg/sym1-32k.cfg b/cfg/sym1-32k.cfg index ad0d760f3..7949375d3 100644 --- a/cfg/sym1-32k.cfg +++ b/cfg/sym1-32k.cfg @@ -29,7 +29,7 @@ MEMORY { EXT: file = "", define = yes, start = $9000, size = $1000; IO: file = "", define = yes, start = $A000, size = $1000; RAE1: file = "", define = yes, start = $B000, size = $1000; - BASROM: file = "", define = yes, start = $C000, size = $1000; + BASROM: file = "", define = yes, start = $C000, size = $2000; RAE2: file = "", define = yes, start = $E000, size = $1000; TOP: file = "", define = yes, start = $F000, size = $1000; } diff --git a/cfg/sym1-4k.cfg b/cfg/sym1-4k.cfg index 32d3cbb3a..468a76fe0 100644 --- a/cfg/sym1-4k.cfg +++ b/cfg/sym1-4k.cfg @@ -29,7 +29,7 @@ MEMORY { EXT: file = "", define = yes, start = $9000, size = $1000; IO: file = "", define = yes, start = $A000, size = $1000; RAE1: file = "", define = yes, start = $B000, size = $1000; - BASROM: file = "", define = yes, start = $C000, size = $1000; + BASROM: file = "", define = yes, start = $C000, size = $2000; RAE2: file = "", define = yes, start = $E000, size = $1000; TOP: file = "", define = yes, start = $F000, size = $1000; } diff --git a/cfg/sym1.cfg b/cfg/sym1.cfg index 32d3cbb3a..468a76fe0 100644 --- a/cfg/sym1.cfg +++ b/cfg/sym1.cfg @@ -29,7 +29,7 @@ MEMORY { EXT: file = "", define = yes, start = $9000, size = $1000; IO: file = "", define = yes, start = $A000, size = $1000; RAE1: file = "", define = yes, start = $B000, size = $1000; - BASROM: file = "", define = yes, start = $C000, size = $1000; + BASROM: file = "", define = yes, start = $C000, size = $2000; RAE2: file = "", define = yes, start = $E000, size = $1000; TOP: file = "", define = yes, start = $F000, size = $1000; }