<article>
<title>Commodore 64-specific information for cc65
-<author><url url="mailto:uz@cc65.org" name="Ullrich von Bassewitz">
-<date>2014-04-14
+<author><url url="mailto:uz@cc65.org" name="Ullrich von Bassewitz"><newline>
+<url url="mailto:greg.king5@verizon.net" name="Greg King">
+<date>2017-01-18
<abstract>
An overview over the C64 runtime system as it is implemented for the cc65 C
and $ffff.
In memory constrained situations the memory from $400 to $7FF
-can be made available to a program by calling <tt/_heapadd ((void *) 0x400, 0x400);/
+can be made available to a program by calling <tt/_heapadd ((void *) 0x0400, 0x0400);/
at the beginning of <tt/main()/. Doing so is beneficial even if the program
doesn't use the the heap explicitly because loading a driver uses the heap implicitly.
</itemize>
+<sect1>C64-specific accelerator functions<p>
+
+The functions listed below are accelerator functions for the C64. See the <url
+url="funcref.html" name="function reference"> for declaration and usage.
+
+<itemize>
+<item>detect_scpu
+<item>scpu_get_speed
+<item>scpu_set_speed
+</itemize>
+
+
<sect1>CBM-specific functions<p>
Some functions are available for all (or at least most) of the Commodore
The names in the parentheses denote the symbols to be used for static linking of the drivers.
+<label id="graphics-drivers">
<sect1>Graphics drivers<p>
<em>Note:</em> All available graphics drivers for the TGI interface will use
-the space below the I/O area and kernal ROM, so you can have hires graphics in
-the standard setup without any memory loss or need for a changed
-configuration.
+the space below the I/O area and Kernal ROM; so, you can have hires graphics in
+the standard setup without any memory loss or need for a changed configuration.
+
+You can use a mouse driver at the same time that you use a TGI driver. But, if
+you want to see the default mouse pointer on the graphics screen, then you
+explicitly must link a special object file into your program. It will put the
+arrow into the "high RAM" area where the bitmaps are put. Its name is
+"<tt/c64-tgimousedata.o/". Example:
+
+<tscreen><verb>
+cl65 -t c64 -o program-file main-code.c subroutines.s c64-tgimousedata.o
+</verb></tscreen>
<descrip>
<tag><tt/c64-hi.tgi (c64_hi_tgi)/</tag>
Note that the graphics drivers are incompatible with the
<tt/c64-ram.emd (c64_ram_emd)/ extended memory driver and the
- <tt/c64-soft80.o/ software 80 columns conio driver.
+ <tt/c64-soft80.o/ software 80-columns conio driver.
+
<sect1>Extended memory drivers<p>
<descrip>
+ <tag><tt/c64-65816.emd (c64_65816_emd)/</tag>
+ Extended memory driver for 65816 (eg SCPU) based extra RAM.
+ Written and contributed by Marco van den Heuvel.
+
<tag><tt/c64-c256k.emd (c64_c256k_emd)/</tag>
A driver for the C64 256K memory expansion. This driver offers 768 pages of
256 bytes each. Written and contributed by Marco van den Heuvel.
Will test the hardware for the available RAM.
<tag><tt/c64-reu.emd (c64_reu_emd)/</tag>
- A driver for the CBM REUs. The driver will determine from the connected REU
- if it supports 128KB of RAM or more. In the latter case, 256KB are assumed,
- but since there are no range checks, the application can use more memory if
- it has better knowledge about the hardware than the driver.
+ A driver for the CBM REUs. The driver will test the connected REU to find
+ out how much RAM is present.
<tag><tt/c64-vdc.emd (c64_vdc_emd)/</tag>
A driver for the VDC memory of the C128. Written and contributed by Maciej
<tag><tt/c64-ptvjoy.joy (c64_ptvjoy_joy)/</tag>
Driver for the Protovision 4-player adapter contributed by Groepaz. See
- <url url="http://www.protovision-online.de/hardw/hardwstart.htm"> for prices and
- building instructions. Up to four joysticks are supported.
+ <url url="http://www.protovision-online.de/hardw/4_player.php?language=en"
+ name="Protovision shop"> for prices and building instructions. Up to four
+ joysticks are supported.
<tag><tt/c64-stdjoy.joy (c64_stdjoy_joy)/</tag>
Supports up to two standard joysticks connected to the joysticks port of
<sect1>Mouse drivers<p>
+You can use these drivers in text-mode or graphics-mode (TGI) programs. See
+the description of <ref id="graphics-drivers" name="the graphics drivers">.
+
The default drivers, <tt/mouse_stddrv (mouse_static_stddrv)/, point to <tt/c64-1351.mou (c64_1351_mou)/.
<descrip>