<article>
<title>Atari specific information for cc65
-<author>Shawn Jefferson, <htmlurl
-url="mailto:shawnjefferson@24fightingchickens.com"
-name="shawnjefferson@24fightingchickens.com"> and
-Christian Groessler, <htmlurl url="mailto:chris@groessler.org" name="chris@groessler.org">
-<date>03-Jan-2006
+<author>
+<url url="mailto:shawnjefferson@24fightingchickens.com" name="Shawn Jefferson"> and<newline>
+<url url="mailto:chris@groessler.org" name="Christian Groessler">
+<date>2014-04-10
<abstract>
An overview over the Atari runtime system as it is implemented for the cc65 C
use of the <tt/atarixl/ target.
Please note that Atari 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.
The option byte will be located at address $BFFD. For more information
about its use, see e.g. "Mapping the Atari".
+<sect2><tt/atari-cassette.cfg/<p>
+
+This config file can be used to create cassette boot files. It's suited both
+for C and assembly language programs.
+
+The size of a cassette boot file is restricted to 32K. Larger programs
+would need to be split in more parts and the parts to be loaded manually.
+
+To write the generated file to a cassette, a utility to run
+on an Atari is provided in the <tt/targetutil/ directory (<tt/w2cas.com/).
<sect1><tt/atarixl/ config files<p>
<sect1>Atari specific functions<p>
The functions and global variable listed below are special for the Atari.
-See the <htmlurl url="funcref.html" name="function reference"> for declaration and usage.
+See the <url url="funcref.html" name="function reference"> for declaration and usage.
<itemize>
<item>get_ostype
it doesn't have at least one byte available. This seems to be a bug of
the Atari ROM code.
+Default drivers: <tt/atr8.tgi (atr8_tgi)/ and <tt/atrx8.tgi (atrx8_tgi)/.
+
<sect1>Extended memory drivers<p>
Currently there is only one extended memory driver. It manages the second 64K of a 130XE.
<caption>
</table>
+Default drivers: <tt/atrstd.joy (atrstd_joy)/ and <tt/atrxstd.joy (atrxstd_joy)/.
<sect1>Mouse drivers<p>
All mouse devices connect to joystick port #0.
+Default drivers: <tt/atrst.mou (atrst_mou)/ and <tt/atrxst.mou (atrxst_mou)/.
<sect1>RS232 device drivers<p>
<sect>Limitations<p>
-<sect1><tt/atarixl/<label id="limitations"<p>
+<sect1><tt/atarixl/<#if output="info|latex2e"> limitations</#if><label id="limitations"<p>
<itemize>
<item>The display is cleared at program start and at program termination. This is a side
<sect>Technical details<label id="techdetail"><p>
-<sect1><tt/atari/<p>
+<sect1><tt/atari/<#if output="info|latex2e"> details</#if><p>
-<sect2>Load chunks<p>
+<sect2><#if output="info|latex2e"><tt/atari/ </#if>Load chunks<p>
An <tt/atari/ program contains two load chunks.
</enum>
-<sect1><tt/atarixl/<p>
+<sect1><tt/atarixl/<#if output="info|latex2e"> details</#if><p>
<sect2>General operation<p>
For ROM functions which require input or output buffers, the wrappers
copy the data as required to buffers in low memory.
-<sect2>Load chunks<label id="xlchunks"><p>
+<sect2><#if output="info|latex2e"><tt/atarixl/ </#if>Load chunks<label id="xlchunks"><p>
An <tt/atarixl/ program contains three load chunks.
<item>Leading and trailing spaces around an argument are ignored.
<item>The first argument passed to <tt/main/ is the program name.
<item>A maximum number of 16 arguments (including the program name) are
- supported.
+ supported.
</enum>
interrupt handlers. Such routines must be written as simple machine language
subroutines and will be called automatically by the VBI handler code
when they are linked into a program. See the discussion of the <tt/.CONDES/
-feature in the <htmlurl url="ca65.html" name="assembler manual">.
+feature in the <url url="ca65.html" name="assembler manual">.
<sect1>Reserving a memory area inside a program<label id="memhole"><p>
<p>
The main problem is that the EXE header generated by the cc65 runtime
lib is wrong. It defines a single load chunk with the sizes/addresses
-of the STARTUP, LOWCODE, INIT, CODE, RODATA, and DATA segments, in
+of the STARTUP, LOWCODE, INIT, CODE, RODATA, and DATA segments, in
fact, the whole user program (we're disregarding the "system check"
load chunk here).
<p>