diff --git a/doc/cc65.sgml b/doc/cc65.sgml
index 96d414486..ba44c43af 100644
--- a/doc/cc65.sgml
+++ b/doc/cc65.sgml
@@ -200,14 +200,16 @@ Here is a description of all the command line options:
- none
+
- apple2
- atari
+
- atmos
+
- c16 (works also for the c116 with memory up to 32K)
- c64
- c128
- plus4
- cbm510 (CBM-II series with 40 column video)
- cbm610 (all CBM-II II computers with 80 column video)
- pet (all CBM PET systems except the 2001)
-
- apple2
- geos
@@ -516,6 +518,10 @@ The compiler defines several macros at startup:
This macro is defined if the target system is one of the CBM targets.
+ __C16__
+
+ This macro is defined if the target is the c16 (-t c16).
+
__C64__
This macro is defined if the target is the c64 (-t c64).
diff --git a/doc/internal.txt b/doc/internal.txt
index 9cfb40450..fdda2359e 100644
--- a/doc/internal.txt
+++ b/doc/internal.txt
@@ -114,6 +114,15 @@ Supported systems at this time are: C64, C128, Plus/4, CBM 500, CBM 600/700,
the newer PET machines (not 2001), Atari 8bit, and the Apple ][ (thanks to
Kevin Ruland, who did the port).
+C16: Works with unexpanded or memory expanded C16 and C116 machines.
+ However, a maximum of 32KB from the total memory is used. The Plus/4
+ target supports up to 64K of memory, but has a small code overhead
+ because of the banking routines involved. Apart from this additional
+ overhead, the Plus/4 target and the C16 target are the same. 16K
+ machines (unexpanded C16) have 12K of memory for C programs available,
+ machines with 32K or more have 28K available. The actual amount of
+ memory is auto detected.
+
C64: The program runs in a memory configuration, where only the kernal ROM
is enabled. The text screen is expected at the usual place ($400), so
50K of memory are available to the program.
@@ -128,8 +137,8 @@ Plus/4: Unfortunately, the Plus/4 is not able to disable only part of it's
free memory is reduced to 12K).
CBM 500:
- The C program runs in bank #0 and has a total of 48K memory available.
- This is less than what is available on its bigger brothers (CBM
+ The C program runs in bank #0 and has a total of 48K memory available.
+ This is less than what is available on its bigger brothers (CBM
600/700) because the character data and video RAM is placed in the
execution bank (#0) to allow the use of sprites.
@@ -179,10 +188,7 @@ assembler file.
Example, insert a break instruction into the code:
- asm ("\t.byte\t$00")
-
-Note: The \t in the string is replaced by the tab character, as in all other
-strings.
+ asm ("brk")
Beware: Be careful when inserting inline code since this may collide with
the work of the optimizer.
@@ -201,7 +207,9 @@ functions results and pass parameters.
This feature is useful with inline assembly and macros. For example, a macro
that reads a CRTC register may be written like this:
-#define wr(idx) (__AX__=(idx), \
- asm("\tsta\t$2000\n\tlda\t$2000\n\tldx\t#$00"), \
+#define wr(idx) (__AX__=(idx), \
+ asm ("sta $2000"), \
+ asm ("lda $2000"), \
+ asm ("ldx #$00"), \
__AX__)
diff --git a/doc/ld65.sgml b/doc/ld65.sgml
index 32eaaf86f..24f5082cf 100644
--- a/doc/ld65.sgml
+++ b/doc/ld65.sgml
@@ -118,14 +118,16 @@ Here is a description of all the command line options:
- none
+
- apple2
- atari
+
- atmos
+
- c16 (works also for the c116 with memory up to 32K)
- c64
- c128
- plus4
- cbm510 (CBM-II series with 40 column video)
- cbm610 (all CBM series-II computers with 80 column video)
- pet (all CBM PET systems except the 2001)
-
- apple2
- geos
@@ -785,6 +787,62 @@ types:
}
+atmos
+
+ MEMORY {
+ ZP: start = $02, size = $1A, type = rw, define = yes;
+ RAM: start = $0600, size = $9200, define = yes, file = %O;
+ }
+ SEGMENTS {
+ CODE: load = RAM, type = wprot;
+ RODATA: load = RAM, type = wprot;
+ DATA: load = RAM, type = rw;
+ BSS: load = RAM, type = bss, define = yes;
+ ZEROPAGE: load = ZP, type = zp;
+ }
+ FEATURES {
+ CONDES: segment = RODATA,
+ type = constructor,
+ label = __CONSTRUCTOR_TABLE__,
+ count = __CONSTRUCTOR_COUNT__;
+ CONDES: segment = RODATA,
+ type = destructor,
+ label = __DESTRUCTOR_TABLE__,
+ count = __DESTRUCTOR_COUNT__;
+ }
+ SYMBOLS {
+ __STACKSIZE__ = $800; # 2K stack
+ }
+
+
+c16
+
+ MEMORY {
+ ZP: start = $02, size = $1A, type = rw;
+ RAM: start = $0fff, size = $7001, file = %O;
+ }
+ SEGMENTS {
+ CODE: load = RAM, type = wprot;
+ RODATA: load = RAM, type = wprot;
+ DATA: load = RAM, type = rw;
+ BSS: load = RAM, type = bss, define = yes;
+ ZEROPAGE: load = ZP, type = zp;
+ }
+ FEATURES {
+ CONDES: segment = RODATA,
+ type = constructor,
+ label = __CONSTRUCTOR_TABLE__,
+ count = __CONSTRUCTOR_COUNT__;
+ CONDES: segment = RODATA,
+ type = destructor,
+ label = __DESTRUCTOR_TABLE__,
+ count = __DESTRUCTOR_COUNT__;
+ }
+ SYMBOLS {
+ __STACKSIZE__ = $800; # 2K stack
+ }
+
+
c64
MEMORY {
@@ -802,7 +860,7 @@ types:
CONDES: segment = RODATA,
type = constructor,
label = __CONSTRUCTOR_TABLE__,
- count = __CONSTRUCTOR_COUNT__;
+ count = __CONSTRUCTOR_COUNT__;
CONDES: segment = RODATA,
type = destructor,
label = __DESTRUCTOR_TABLE__,
@@ -829,7 +887,7 @@ types:
FEATURES {
CONDES: segment = RODATA,
type = constructor,
- label = __CONSTRUCTOR_TABLE__,
+ label = __CONSTRUCTOR_TABLE__,
count = __CONSTRUCTOR_COUNT__;
CONDES: segment = RODATA,
type = destructor,
diff --git a/doc/library.sgml b/doc/library.sgml
index 79ef01004..78b834447 100644
--- a/doc/library.sgml
+++ b/doc/library.sgml
@@ -168,6 +168,7 @@ portable. conio implementations exist for the following targets:
- atari
+
- c16 (works also for the c116 with up to 32K memory)
- c64
- c128
- plus4