<article>
<title>Enhanced Apple //e specific information for cc65
-<author>Oliver Schmidt, <htmlurl url="mailto:ol.sc@web.de" name="ol.sc@web.de">
-<date>2009-10-07
+<author><url url="mailto:ol.sc@web.de" name="Oliver Schmidt">
+<date>2014-04-10
<abstract>
An overview over the enhanced Apple //e runtime system as it is
pitfalls specific to that platform.
Please note that enhanced Apple //e specific functions are just mentioned
-here, they are described in detail in the separate <htmlurl url="funcref.html"
+here, they are 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.
For ProDOS 8 system programs the load address is fixed to $2000 so there
is no need for a header. Thus the linker configuration
-<htmlurl url="apple2enh.html#ss4.3" name="apple2enh-system.cfg"> for those programs
+<ref id="apple-sys-cfg" name="apple2enh-system.cfg"> for those programs
omits the DOS 3.3 header. The right AppleCommander option to put system files
without a header on a ProDOS 8 disk image is <tt/-p/.
Card.
The amount of memory available in the Language Card for generated code depends
-on the chosen <htmlurl url="apple2enh.html#s4" name="linker configuration">.
+on the chosen <ref id="link-configs" name="linker configuration">.
-<sect>Linker configurations<p>
+<sect>Linker configurations<label id="link-configs"><p>
The ld65 linker comes with a default config file for the enhanced Apple //e,
which is used via <tt/-t apple2enh/.
</descrip><p>
-<sect1><tt/apple2enh-system.cfg/<p>
+<sect1><tt/apple2enh-system.cfg/<label id="apple-sys-cfg"><p>
Configuration for a system program running on ProDOS 8.
</descrip><p>
-<sect1><tt/apple2enh-loader.cfg/<p>
+<sect1><tt/apple2enh-loader.cfg/<label id="apple-load-cfg"><p>
Configuration optimized for a binary program running on ProDOS 8 without
BASIC.SYSTEM. Intended to be used with <bf/LOADER.SYSTEM - an
The easiest (and for really large programs in fact the only) way to have a cc65
program use the memory from $800 to $2000 is to link it as binary
(as opposed to system) program using the linker configuration
-<htmlurl url="apple2enh.html#ss4.4" name="apple2enh-loader.cfg"> with start address
+<ref id="apple-load-cfg" name="apple2enh-loader.cfg"> with start address
$803 and load it with the targetutil LOADER.SYSTEM. The program then works
like a system program (i.e. quits to the ProDOS dispatcher).
<sect1>Heap<p>
If the cc65 program can be successfully linked as system program using the linker
-configuration <htmlurl url="apple2enh.html#ss4.3" name="apple2enh-system.cfg"> but
+configuration <ref id="apple-sys-cfg" name="apple2enh-system.cfg">, but
uses the heap either explicitly or implicitly (i.e. by loading a driver) then
the memory from $800 to $2000 can be added to the heap by calling
<tt/_heapadd ((void *) 0x0800, 0x1800);/ at the beginning of <tt/main()/.
<sect1>Enhanced Apple //e specific functions<p>
The functions listed below are special for the enhanced Apple //e. See
-the <htmlurl url="funcref.html" name="function reference"> for declaration and
+the <url url="funcref.html" name="function reference"> for declaration and
usage.
<itemize>
<tt/.INTERRUPTOR/ for ProDOS 8 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 <htmlurl
+program. See the discussion of the <tt/.CONDES/ feature in the <url
url="ca65.html" name="assembler manual">.
<descrip>
<tag/Drive ID/
- The function <htmlurl url="dio.html#s1" name="dio_open()"> has the single
+ The function <url url="dio.html#s1" name="dio_open()"> has the single
parameter <tt/device/ to identify the device to be opened. Therefore an
Apple II slot and drive pair is mapped to that <tt/drive_id/ according
to the formula
so that for example slot 6 drive 2 is mapped to <tt/device/ 14.
<tag/Sector count/
- The function <htmlurl url="dio.html#s3" name="dio_query_sectcount()"> returns
+ The function <url url="dio.html#s3" name="dio_query_sectcount()"> returns
the correct sector count for all ProDOS 8 disks. However for any non-ProDOS 8
disk it simply always returns 280 (which is only correct for a 140 KB disk).
This condition is indicated by the <tt/_oserror/ value 82.