1
0
mirror of https://github.com/cc65/cc65.git synced 2025-01-09 11:30:29 +00:00

New features

git-svn-id: svn://svn.cc65.org/cc65/trunk@2795 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz 2003-12-20 23:37:06 +00:00
parent a87edce03e
commit 68fd981cb5

View File

@ -82,11 +82,6 @@ Programs containing CBM 610 specific code may use the <tt/cbm610.h/ or
for more than one CBM platform, since it includes <tt/cbm610.h/ and declares
several functions common to all CBM platforms.
Please note that because of <ref id="limitations" name="current limitations">
of the runtime library for the platform, several standard C and CBM functions
are not available.
<sect1>CBM 610 specific functions<p>
The functions listed below are special for the CBM 610. See the <htmlurl
@ -107,6 +102,33 @@ machines. See the <htmlurl url="funcref.html" name="function reference"> for
declaration and usage.
<itemize>
<item>cbm_close
<item>cbm_closedir
<item>cbm_k_setlfs
<item>cbm_k_setnam
<item>cbm_k_load
<item>cbm_k_save
<item>cbm_k_open
<item>cbm_k_close
<item>cbm_k_readst
<item>cbm_k_chkin
<item>cbm_k_ckout
<item>cbm_k_basin
<item>cbm_k_bsout
<item>cbm_k_clrch
<item>cbm_load
<item>cbm_open
<item>cbm_opendir
<item>cbm_read
<item>cbm_readdir
<item>cbm_save
<item>cbm_write
<item>get_tv
</itemize>
<sect1>Hardware access<p>
The following pseudo variables declared in the <tt/cbm610.h/ header file do
@ -151,20 +173,6 @@ will <em>not</em> work!
<sect>Loadable drivers<p>
<bf>Note:</bf> Since the CBM 610 doesn't have working disk I/O (see <ref
id="limitations" name="section &quot;Limitations&quot;">), the available
drivers cannot be loaded at runtime (so the term "loadable drivers" is
somewhat misleading). Instead, the drivers have to be converted using the
<htmlurl url="co65.html" name="co65 utility"> and statically linked. While
this may seem overhead, it has two advantages:
<enum>
<item>The interface is identical to the one used for other platforms
and to the one for the CBM 610 once it has disk I/O.
<item>Once disk I/O is available, existing code can be changed to load drivers
at runtime with almost no effort.
</enum>
<sect1>Graphics drivers<p>
@ -178,7 +186,7 @@ really good:-).
<descrip>
<tag><tt/cbm610-ram.emd/</tag>
A driver for the RAM in bank 2. Supports up to 255 pages with 256 bytes
each. Untested!
each.
</descrip><p>
@ -197,40 +205,29 @@ does not exist).
<sect1>RS232 device drivers<p>
Currently no RS232 drivers exist for the Commodore 610.
<descrip>
<tag><tt/cbm610-std.ser/</tag>
Driver for the 6551 ACIA chip built into the Commodore 610. Supports up to
19200 baud, hardware flow control (RTS/CTS) and interrupt driven receives.
Note that because of the peculiarities of the 6551 chip transmits are not
interrupt driven, and the transceiver blocks if the receiver asserts flow
control because of a full buffer.
</descrip><p>
<sect>Limitations<label id="limitations"><p>
<sect1>Disk I/O<p>
The existing library for the CBM 610 doesn't implement C file I/O. Please note
that this includes <tt/printf/! You may use the conio functions for screen I/O.
To be more concrete, this limitation means that you cannot use any of the
following functions (and a few others):
<itemize>
<item>fclose
<item>fgets
<item>fopen
<item>fread
<item>fprintf
<item>fputc
<item>fscanf
<item>fwrite
<item>gets
<item>printf
<item>...
</itemize>
<sect1>Kernal and hardware access<p>
Since the program runs in bank 1, and the kernal and all I/O chips are located
in bank 15, calling ROM routines or accessing hardware needs special code.
in bank 15, calling ROM routines or accessing hardware needs special code. The
cc65 runtime implements wrappers for all functions in the kernal jump table.
While this simplifies things, it should be noted that the wrappers do have
quite an impact on performance: A cross bank call has an extra 50-100us
penalty added by the wrapper.