<sect>Binary format<p>
The standard binary output format generated by the linker for the C128 target
-is a machine language program with a one line BASIC stub. This means that a
-program can be loaded as BASIC program and started with RUN. It is of course
-possible to change this behaviour by using a modified startup file and linker
-config.
+is a machine language program with a one line BASIC stub, which calls the
+machine language part via SYS. This means that a program can be loaded as
+BASIC program and started with RUN. It is of course possible to change this
+behaviour by using a modified startup file and linker config.
<sect>Memory layout<p>
cc65 generated programs with the default setup run with the I/O area and the
kernal ROM enabled. Note that this is a non standard memory layout, and that
there is no "memory configuration index" for this layout. This means that
-special case has to be taken when changing the configuration, or calling any
+special care has to be taken when changing the configuration, or calling any
code that does this. The memory configuration register at $FF00 should
be saved and restored instead of relying on the memory configuration index
stored in the zero page.
-The setup gives a usable memory range of $1C00 - $CFFF. Having
+The setup gives a usable memory range of $1C00 - $BFFF. Having
just the kernal ROM mapped in means, that kernal entry points may be called
directly, but using the BASIC ROM is not possible without additional code.
The text screen is located at $400 (as in the standard setup).
<tag/Stack/
- The C runtime stack is located at $CFFF and growing downwards.
+ The C runtime stack is located at $BFFF and growing downwards.
<tag/Heap/
The C heap is located at the end of the program and grows towards the C
url="funcref.html" name="function reference"> for declaration and usage.
<itemize>
-<item>toggle_videomode
+<item>videomode
<item>c64mode
<item>fast
<item>slow
is explained in <tt/_6526.h/.
<tag><tt/COLOR_RAM/</tag>
- A character array that mirrors the color RAM of the C64 at $D800.
+ A character array that mirrors the color RAM of the C128 at $D800.
</descrip><p>
An extended memory driver for the RAM in page 1. The common memory area is
excluded, so this driver supports 251 pages of 256 bytes each.
+ <tag><tt/c128-ram2.emd/</tag>
+
+ An extended memory driver for the RAM in pages 1-3. The common memory area
+ is excluded, so this driver supports up to 731 pages of 256 bytes each. The
+ driver can be used as a full replacement for <tt/c128-ram.emd/, because RAM
+ in pages 2+3 is autodetected, but it's larger and there are not many
+ machines with RAM in banks 2+3, so it has been made a separate driver. The
+ additional code was contributed by Marco van den Heuvel.
+
<tag><tt/c128-ramcart.emd/</tag>
A driver for the RamCart 64/128 written and contributed by Maciej Witkowiak.
Will test the hardware for the available RAM.
<sect1>Mouse drivers<p>
-Currently no drivers available (in fact, the API for loadable mouse drivers
-does not exist).
+<descrip>
+
+ <tag><tt/c128-1351.mou/</tag>
+ Supports a standard mouse connected to port #0 of the C128.
+
+ <tag><tt/c128-joy.mou/</tag>
+ Supports a mouse emulated by a standard joystick e.g. 1350 mouse in port
+ #1 of the C128.
+
+ <tag><tt/c128-pot.mou/</tag>
+ Supports a potentiometer device e.g. Koala Pad connected to port #1 of
+ the C128.
+
+</descrip><p>
<sect1>RS232 device drivers<p>
<sect1>Interrupts<p>
-The runtime for the C128 uses routines marked as <tt/.CONDES/ type 2 for
+The runtime for the C128 uses routines marked as <tt/.INTERRUPTOR/ for
interrupt handlers. Such routines must be written as simple machine language
subroutines and will be called automatically by the interrupt handler code
when they are linked into a program. See the discussion of the <tt/.CONDES/
</enum>
</article>
-
-
-
-