Reworked and improved the SYMBOLS section. The old syntax (using symbol =

value) is now gone, attributes are used instead. The SYMBOLS section does now
support imports, so the linker config can be used to force symbols (and
therefore module) imports. Evaluation of start address and size for memory
areas has been delayed even further, so it is now possible to use the values
from one memory area in the definition of the next one.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4851 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz
2010-11-12 14:17:35 +00:00
parent a0a0347ecc
commit 5e8252fa36
38 changed files with 460 additions and 334 deletions

View File

@@ -1,10 +1,10 @@
# Configuration optimized for DOS 3.3 by allowing for 12KB of HIGHCODE
FEATURES {
STARTADDRESS: default = $0803;
}
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;

View File

@@ -4,7 +4,7 @@ FEATURES {
STARTADDRESS: default = $0800;
}
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;

View File

@@ -5,7 +5,7 @@ FEATURES {
STARTADDRESS: default = $0800;
}
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;

View File

@@ -1,7 +1,7 @@
# Configuration for ProDOS 8 system programs (without the header)
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;

View File

@@ -1,10 +1,10 @@
# Default configuration built into ld65 (allowing for 3KB of HIGHCODE)
FEATURES {
STARTADDRESS: default = $0803;
}
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;

View File

@@ -1,10 +1,10 @@
# Configuration optimized for DOS 3.3 by allowing for 12KB of HIGHCODE
FEATURES {
STARTADDRESS: default = $0803;
}
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;

View File

@@ -4,7 +4,7 @@ FEATURES {
STARTADDRESS: default = $0800;
}
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;

View File

@@ -5,7 +5,7 @@ FEATURES {
STARTADDRESS: default = $0800;
}
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;

View File

@@ -1,7 +1,7 @@
# Configuration for ProDOS 8 system programs (without the header)
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;

View File

@@ -1,10 +1,10 @@
# Default configuration built into ld65 (allowing for 3KB of HIGHCODE)
FEATURES {
STARTADDRESS: default = $0803;
}
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;

View File

@@ -2,8 +2,8 @@ FEATURES {
STARTADDRESS: default = $2E00;
}
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__RESERVED_MEMORY__: value = $0000, weak = yes;
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__RESERVED_MEMORY__: type = weak, value = $0000;
}
MEMORY {
ZP: define = yes, start = $0082, size = $007E;

View File

@@ -1,5 +1,5 @@
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $00E2, size = $001A;

View File

@@ -1,5 +1,5 @@
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0070, size = $0020;

View File

@@ -1,6 +1,6 @@
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
}
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0002, size = $001A;
HEADER: file = %O, start = $1BFF, size = $000E;

View File

@@ -1,5 +1,5 @@
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0002, size = $001A;

View File

@@ -1,5 +1,5 @@
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0002, size = $001A;

View File

@@ -1,6 +1,6 @@
SYMBOLS {
# The stack starts from $FEC3 and grows towards the video ram
__STACKSIZE__: value = $06C3, weak = yes; # ~1.5k stack
__STACKSIZE__: type = weak, value = $06C3; # ~1.5k stack
}
MEMORY {
HEADER: file = %O, start = $0001, size = $0050, fill = yes;

View File

@@ -1,5 +1,5 @@
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
HEADER: file = %O, start = $0001, size = $0050, fill = yes;

View File

@@ -1,5 +1,5 @@
SYMBOLS {
__STACKSIZE__: value = $0400, weak = yes; # 1k stack
__STACKSIZE__: type = weak, value = $0400; # 1k stack
}
MEMORY {
ZP: define = yes, start = $0058, size = $0028;

View File

@@ -1,8 +1,8 @@
# ld65 Linker-configuration for LUnix, Next Generation.
SYMBOLS {
__HEAPSIZE__: value = $2000, weak = yes; # 8k heap [temporary, until LUnix malloc() exists]
__STACKSIZE__: value = $0400, weak = yes; # 1k stack (do typical LUnix apps. need 2k?)
__HEAPSIZE__: type = weak, value = $2000; # 8k heap [temporary, until LUnix malloc() exists]
__STACKSIZE__: type = weak, value = $0400; # 1k stack (do typical LUnix apps. need 2k?)
}
MEMORY {
ZP: start = $0080, size = $0040;
@@ -28,7 +28,7 @@ FEATURES {
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
CONDES: segment = RODATA,
type = interruptor,
type = interruptor,
label = __INTERRUPTOR_TABLE__,
count = __INTERRUPTOR_COUNT__;
}

View File

@@ -1,5 +1,5 @@
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0000, size = $0100;

View File

@@ -1,5 +1,5 @@
SYMBOLS {
__STACKSIZE__: value = $0300, weak = yes; # 3 pages stack
__STACKSIZE__: type = weak, value = $0300; # 3 pages stack
}
MEMORY {
ZP: start = $0002, size = $001A, type = rw, define = yes;

View File

@@ -1,5 +1,5 @@
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0000, size = $0001F;

View File

@@ -1,5 +1,5 @@
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0055, size = $001A;

View File

@@ -1,5 +1,5 @@
SYMBOLS {
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
ZP: define = yes, start = $0002, size = $001A;

View File

@@ -5,7 +5,7 @@
# ld65 --config supervision.cfg -o <prog>.bin <prog>.o
SYMBOLS {
__STACKSIZE__: value = $0100, weak = yes; # 1 page stack
__STACKSIZE__: type = weak, value = $0100; # 1 page stack
}
MEMORY {
RAM: start = $0000, size = $2000 - __STACKSIZE__;

View File

@@ -4,7 +4,7 @@
# ld65 --config supervision16.cfg -o <prog>.bin <prog>.o
SYMBOLS {
__STACKSIZE__: value = $0100, weak = yes; # 1 page stack
__STACKSIZE__: type = weak, value = $0100; # 1 page stack
}
MEMORY {
ZP: start = $0000, size = $0100;

View File

@@ -5,7 +5,7 @@
# ld65 --config supervision.cfg -o <prog>.bin <prog>.o
SYMBOLS {
__STACKSIZE__: value = $0100, weak = yes; # 1 page stack
__STACKSIZE__: type = weak, value = $0100; # 1 page stack
}
MEMORY {
RAM: start = $0000, size = $2000 - __STACKSIZE__;

View File

@@ -2,7 +2,7 @@
# Contributed by Stefan Haubenthal
SYMBOLS {
__STACKSIZE__: value = $0400, weak = yes; # 1k stack
__STACKSIZE__: type = weak, value = $0400; # 1k stack
}
MEMORY {
ZP: define = yes, start = $0002, size = $001A;

View File

@@ -1,5 +1,5 @@
SYMBOLS {
__STACKSIZE__: value = $0400, weak = yes; # 1k stack
__STACKSIZE__: type = weak, value = $0400; # 1k stack
}
MEMORY {
ZP: define = yes, start = $0002, size = $001A;