]> git.sur5r.net Git - cc65/blobdiff - doc/c16.sgml
remote TABs in doc/ and test/
[cc65] / doc / c16.sgml
index 95998e5c0841de9c37d72bddc15cbfe48aba872d..462f98345f3c0fa62dd1056f47f7c4934caa015b 100644 (file)
@@ -1,10 +1,8 @@
 <!doctype linuxdoc system>
 
 <article>
-
 <title>Commodore 16/116 specific information for cc65
-<author>Ullrich von Bassewitz, <htmlurl url="mailto:uz@cc65.org" name="uz@cc65.org">
-<date>2003-12-15
+<author><url url="mailto:uz@cc65.org" name="Ullrich von Bassewitz">
 
 <abstract>
 An overview over the C16 runtime system as it is implemented for the cc65 C
@@ -23,13 +21,13 @@ cc65 C compiler. It describes the memory layout, C16/116 specific header
 files, available drivers, and any pitfalls specific to that platform.
 
 Please note that C16 specific functions are just mentioned here, they are
-described in detail in the separate <htmlurl url="funcref.html" name="function
+described in detail in the separate <url url="funcref.html" name="function
 reference">. Even functions marked as "platform dependent" may be available on
 more than one platform. Please see the function reference for more
 information.
 
 Since the C16/C116 and the Commodore Plus/4 are almost identical (the former
-don't have the 6551 ACIA and only 16KB of memory), the <htmlurl
+don't have the 6551 ACIA and only 16KB of memory), the <url
 url="plus4.html" name="Plus/4 documentation"> is also worth a look. The
 difference between both cc65 targets is that the Plus/4 runtime uses banking
 to support full 64K RAM, while the C16 does not use banking and supports up to
@@ -40,19 +38,19 @@ will always run on the Plus/4, while the reverse is not necessarily true.
 
 <sect>Binary format<p>
 
-The standard binary output format generated by the linker for the C16/C116
-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.
+The standard binary output format generated by the linker for the C16/116
+target 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 kernal and basic
-banked out. This gives a usable memory range of &dollar;1000 - &dollar;4000
-(or &dollar;8000 i the machine is equipped with 32K RAM or more). Having the
-kernal and basic ROMs banked out means, that no ROM entry points may be called
+banked in. This gives a usable memory range of &dollar;1000 - &dollar;4000
+(or &dollar;8000 if the machine is equipped with 32K RAM or more). Having the
+kernal and basic ROMs banked in means, that ROM entry points may be called
 directly from user code.
 
 Special locations:
@@ -97,7 +95,7 @@ There are currently no special C16/C116 functions.
 <sect1>CBM specific functions<p>
 
 Some functions are available for all (or at least most) of the Commodore
-machines. See the <htmlurl url="funcref.html" name="function reference"> for
+machines. See the <url url="funcref.html" name="function reference"> for
 declaration and usage.
 
 <itemize>
@@ -115,6 +113,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
@@ -126,6 +126,18 @@ declaration and usage.
 </itemize>
 
 
+<sect1>CBM specific CPU functions<p>
+
+Some CPU related functions are available for some of the Commodore
+machines. See the <url url="funcref.html" name="function reference"> for
+declaration and usage.
+
+<itemize>
+<item>fast
+<item>slow
+<item>isfast
+</itemize>
+
 <sect1>Hardware access<p>
 
 The following pseudo variables declared in the <tt/c16.h/ header file do
@@ -148,6 +160,9 @@ structures, accessing the struct fields will access the chip registers.
 
 <sect>Loadable drivers<p>
 
+The names in the parentheses denote the symbols to be used for static linking of the drivers.
+
+
 <sect1>Graphics drivers<p>
 
 No graphics drivers are currently available for the C16/C116.
@@ -157,7 +172,7 @@ No graphics drivers are currently available for the C16/C116.
 
 <descrip>
 
-  <tag><tt/c16-ram.emd/</tag>
+  <tag><tt/c16-ram.emd (c16_ram_emd)/</tag>
   A driver for the hidden RAM below the BASIC and KERNAL ROMs. Supports 125
   pages with 256 bytes each if the machine is equipped with 64K of memory
   (a Plus/4 or a memory extended C16/116).
@@ -170,7 +185,7 @@ No graphics drivers are currently available for the C16/C116.
 
 <descrip>
 
-  <tag><tt/c16-stdjoy.joy/</tag>
+  <tag><tt/c16-stdjoy.joy (c16_stdjoy_joy)/</tag>
   Supports up to two joysticks connected to the standard joysticks port of
   the Commodore 16/116.
 
@@ -180,8 +195,7 @@ No graphics drivers are currently available for the C16/C116.
 
 <sect1>Mouse drivers<p>
 
-Currently no drivers available (in fact, the API for loadable mouse drivers
-does not exist).
+No mouse drivers are currently available for the C16/C116.
 
 
 <sect1>RS232 device drivers<p>
@@ -201,7 +215,7 @@ library, because the latter does not support interrupts needed by the driver.
 <sect1>Passing arguments to the program<p>
 
 Command line arguments can be passed to <tt/main()/. Since this is not
-supported by BASIC, the following syntax was choosen:
+supported by BASIC, the following syntax was chosen:
 
 <tscreen><verb>
     RUN:REM ARG1 " ARG2 IS QUOTED" ARG3 "" ARG5
@@ -224,13 +238,13 @@ The program return code (low byte) is passed back to BASIC by use of the
 <tt/ST/ variable.
 
 
+<sect1>Interrupts<p>
 
-<sect>Bugs/Feedback<p>
-
-If you have problems using the library, if you find any bugs, or if you're
-doing something interesting with it, I would be glad to hear from you. Feel
-free to contact me by email (<htmlurl url="mailto:uz@cc65.org"
-name="uz@cc65.org">).
+The runtime for the C16 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/
+feature in the <url url="ca65.html" name="assembler manual">.
 
 
 
@@ -245,14 +259,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>