X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=doc%2Fc64.sgml;h=c1186705156ab26d02237f45ee0820c92c8d1cf9;hb=dfb7c0f24d7df8b6de735d730ba0465fc5d7c775;hp=cef7f6467c98891f203bbd6b59c355d835cf745e;hpb=4e14a9dbb9f249f7229eb38cececa3905649dd36;p=cc65 diff --git a/doc/c64.sgml b/doc/c64.sgml index cef7f6467..c11867051 100644 --- a/doc/c64.sgml +++ b/doc/c64.sgml @@ -1,10 +1,9 @@
- Commodore 64-specific information for cc65 -<author><url url="mailto:uz@cc65.org" name="Ullrich von Bassewitz"> -<date>2014-03-24 +<author><url url="mailto:uz@cc65.org" name="Ullrich von Bassewitz"><newline> +<url url="mailto:greg.king5@verizon.net" name="Greg King"> <abstract> An overview over the C64 runtime system as it is implemented for the cc65 C @@ -116,6 +115,39 @@ cl65 -o file.prg -u __EXEHDR__ -t c64 -C c64-asm.cfg source.s Please note that in this case a changed start address doesn't make sense, since the program must be loaded to the BASIC start address. +<sect>Extras<p> + +<sect1>80 Columns conio driver<p> + +The C64 package comes with an alternative software driven 80 columns +module <tt/c64-soft80.o/ which uses the memory under I/O between $D000 +and $FF3F. + +In memory constrained situations the memory from $400 to $7FF +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. + +Using <tt/c64-soft80.o/ is as simple as placing it on the linker command +line like this: + +<tscreen><verb> +cl65 -t c64 myprog.c c64-soft80.o +</verb></tscreen> + +Note that the soft80 conio driver is incompatible with the +<tt/c64-ram.emd (c64_ram_emd)/ extended memory driver and the + <tt/c64-hi.tgi (c64_hi_tgi)/ graphics driver. + +<sect2>80 Columns conio driver (monochrome)<p> + +In an (even more) memory constrained situation, a size optimized version of the +software driven 80 columns module may be used, which only supports one common +text color for the whole screen. + +<tscreen><verb> +cl65 -t c64 myprog.c c64-soft80mono.o +</verb></tscreen> <sect>Platform-specific header files<p> @@ -135,6 +167,33 @@ url="funcref.html" name="function reference"> for declaration and usage. </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_c128 +<item>detect_c64dtv +<item>detect_c65 +<item>detect_chameleon +<item>detect_scpu +<item>detect_turbomaster +<item>get_c128_speed +<item>get_c64dtv_speed +<item>get_c65_speed +<item>get_chameleon_speed +<item>get_scpu_speed +<item>get_turbomaster_speed +<item>set_c128_speed +<item>set_c64dtv_speed +<item>set_c65_speed +<item>set_chameleon_speed +<item>set_scpu_speed +<item>set_turbomaster_speed +</itemize> + + <sect1>CBM-specific functions<p> Some functions are available for all (or at least most) of the Commodore @@ -156,6 +215,8 @@ declaration and usage. <item>cbm_k_basin <item>cbm_k_bsout <item>cbm_k_clrch +<item>cbm_k_tksa +<item>cbm_k_second <item>cbm_load <item>cbm_open <item>cbm_opendir @@ -202,12 +263,22 @@ structures, accessing the struct fields will access the chip registers. 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> @@ -216,11 +287,19 @@ configuration. palette of the 16 C64 colors). </descrip><p> +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. + <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. @@ -239,19 +318,17 @@ configuration. bytes each. Written and contributed by Marco van den Heuvel. <tag><tt/c64-ram.emd (c64_ram_emd)/</tag> - A driver for the hidden RAM below the I/O area and kernal ROM. Supports 48 + A driver for the hidden RAM below the I/O area and kernal ROM. Supports 47 256 byte pages. Please note that this driver is incompatible with any of the - graphics drivers! + graphics drivers, or the soft80 conio driver! <tag><tt/c64-ramcart.emd (c64_ramcart_emd)/</tag> A driver for the RamCart 64/128 written and contributed by Maciej Witkowiak. 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 @@ -273,16 +350,15 @@ The default drivers, <tt/joy_stddrv (joy_static_stddrv)/, point to <tt/c64-stdjo <descrip> <tag><tt/c64-hitjoy.joy (c64_hitjoy_joy)/</tag> - Driver for the Digital Excess & Hitmen adapter contributed by Groepaz. See - <htmlurl url="http://www.digitalexcess.de/downloads/productions.php" - name="http://www.digitalexcess.de/downloads/productions.php"> on + Driver for the Digital Excess & Hitmen adapter contributed by Groepaz. + See <url url="http://www.digitalexcess.de/downloads/productions.php"> on instructions how to build one. Up to four joysticks are supported. <tag><tt/c64-ptvjoy.joy (c64_ptvjoy_joy)/</tag> Driver for the Protovision 4-player adapter contributed by Groepaz. See - <htmlurl url="http://www.protovision-online.de/hardw/hardwstart.htm" - name="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 @@ -297,6 +373,9 @@ The default drivers, <tt/joy_stddrv (joy_static_stddrv)/, point to <tt/c64-stdjo <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> @@ -339,6 +418,13 @@ The default drivers, <tt/mouse_stddrv (mouse_static_stddrv)/, point to <tt/c64-1 <sect>Limitations<p> +<sect1>Realtime clock<p> + +The realtime clock functions use the CIA1 TOD clock. As that clock only stores +the time but not the date, the date set by <tt/clock_settime()/ is simply stored +inside the C library for retrieval in the same program via <tt/clock_gettime()/. + + <sect>Other hints<p> @@ -395,14 +481,14 @@ including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: <enum> -<item> 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. -<item> Altered source versions must be plainly marked as such, and must not - be misrepresented as being the original software. -<item> This notice may not be removed or altered from any source - distribution. +<item> 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. +<item> Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. +<item> This notice may not be removed or altered from any source + distribution. </enum> </article>