]> git.sur5r.net Git - cc65/blobdiff - doc/apple2enh.sgml
Since we have now builtin search paths, we need to be able to forget them,
[cc65] / doc / apple2enh.sgml
index a98a91e55f415d13971a6f8927cd42a2f65bb4b4..af7fb4a515cd88e767cde98717bf8527f3e63be7 100644 (file)
@@ -35,25 +35,31 @@ more information.
 
 The standard binary output format generated by the linker for the
 enhanced Apple //e target is a machine language program with a 4 byte DOS
-3.3 header. The standard load address is $800.
+3.3 header containing the load address and load size. The standard load address
+is $803.
 
-The DOS header is in its own segment named <tt/EXEHDR/. If you don't want the
-header for some reason, you can change
+The DOS 3.3 header is in its own segment named <tt/EXEHDR/. If you don't want
+the header for some reason, you can change
 
 <verb>
-    HEADER: start = $0000, size = $4, file = %O;
+    HEADER: start = $0000, size = $0004, file = %O;
 </verb>
 
 to
 
 <verb>
-    HEADER: start = $0000, size = $4, file = "";
+    HEADER: start = $0000, size = $0004, file = "";
 </verb>
 
 in the linker configuration to have the linker remove it.
 
-Please note that there is a "Apple&nbsp;&rsqb;&lsqb; ProDOS 8 system program
-for loading binary programs" available in the cc65 User Contributions section.
+<bf/AppleCommander 1.3.5/ or later (available at <url
+url="http://applecommander.sourceforge.net/">) includes an option <tt/-cc65/
+that allows to put binary files with the DOS 3.3 header onto disk images
+containing either DOS 3.3 or ProDOS 8.
+
+Please note that there is an <bf/Apple&nbsp;&rsqb;&lsqb; ProDOS 8 system program
+for loading binary programs/ available in the cc65 User Contributions section.
 It adds all benefits of a ProDOS 8 system program to the standard binary
 program generated by the linker for the enhanced&nbsp;Apple&nbsp;//e target.
 
@@ -62,8 +68,9 @@ program generated by the linker for the enhanced&nbsp;Apple&nbsp;//e target.
 <sect>Memory layout<p>
 
 In the standard setup, cc65 generated programs use the memory from
-&dollar;800 to &dollar;95FF, so 35.5K of memory are available. ROM calls are
-possible without further precautions.
+&dollar;803 to &dollar;95FF, so 35.5KB of RAM are available. While running
+<tt/main()/ the Language Card bank 2 is enabled for read access. However while
+running module constructors/destructors the Language Card is disabled.
 
 Special locations:
 
@@ -77,6 +84,32 @@ Special locations:
   runtime stack.
 </descrip><p>
 
+Enabling the Language Card allows to use it as additional memory for executable
+code. Actually doing so requires either to compile code with the option
+<tt/--code-name HIGHCODE/ or to use <tt/#pragma codeseg ("HIGHCODE")/.
+
+The amount of memory available in the Language Card for executable code depends
+on the chosen program environment. A plain vanilla ProDOS 8 doesn't actually
+use the Language Card bank 2 memory from &dollar;D400 to &dollar;DFFF.
+Therefore the builtin linker configuration defines these 3KB as <tt/LC/ memory
+area for executable code.
+
+A plain vanilla DOS 3.3 doesn't make use of the Language Card at all. So you
+can change
+
+<verb>
+    LC: start = $D400, size = $0C00, define = yes;
+</verb>
+
+to
+
+<verb>
+    LC: start = $D000, size = $3000, define = yes;
+</verb>
+
+in the linker configuration to define the whole 12KB Language Card address
+space as memory area for executable code.
+
 
 
 <sect>Platform specific header files<p>
@@ -93,9 +126,11 @@ usage.
 
 <itemize>
 <item>_dos_type
-<item>_textframe
-<item>_textframexy
 <item>get_ostype
+<item>rebootafterexit
+<item>textframe
+<item>textframexy
+<item>videomode
 </itemize>
 
 
@@ -114,14 +149,19 @@ you cannot do it, it just means that there's no help.
 <descrip>
 
   <tag><tt/a2e.lo.tgi/</tag>
-  This driver was written by Stefan Haubenthal. It features a resolution of
-  40&times;40 with 16 colors. At the bottom of the screen, 4 additional text
-  lines are available.
+  This driver features a resolution of 40&times;48 with 16 colors.
 
   <tag><tt/a2e.hi.tgi/</tag>
-  This driver was written by Stefan Haubenthal. It features a resolution of
-  280&times;192 with 6 colors. Note that programs using this driver will have
-  to be linked with <tt/--start-addr $4000/ to reserve the first hires page.
+  This driver features a resolution of 280&times;192 with 8 colors and two
+  hires pages. Note that programs using this driver will have to be linked
+  with <tt/--start-addr $4000/ to reserve the first hires page or with
+  <tt/--start-addr $6000/ to reserve both hires pages.
+  
+  In memory constrained situations the memory from &dollar;803 to &dollar;1FFF
+  can be made available to a program by executing <tt/_heapadd ((void *) 0x0803, 0x17FD);/
+  at the beginning of <tt/main()/. Doing so is beneficial even if the program
+  doesn't use the the heap explicitly because loading the driver (and in fact
+  already opening the driver file) uses the heap implicitly.
 
 </descrip><p>
 
@@ -130,11 +170,12 @@ you cannot do it, it just means that there's no help.
 
 <descrip>
 
-  <tag><tt/a2e.lc.emd/</tag>
-  Gives access to 12KB RAM (48 pages of 256 bytes each) on the
-  Apple&nbsp;II Language Card. The driver was contributed by Stefan Haubenthal.
-  Note that this driver is incompatible with any DOS using the Language
-  Card memory!
+  <tag><tt/a2e.auxmem.emd/</tag>
+  Gives access to 47,5 KB RAM (190 pages of 256 bytes each) on an Extended
+  80-Column Text Card.
+  
+  Note that this driver doesn't check for the actual existence of the memory
+  and that it doesn't check for ProDOS 8 RAM disk content!
 
 </descrip><p>
 
@@ -177,8 +218,8 @@ you cannot do it, it just means that there's no help.
   flow control because of a full buffer.
 
   The driver defaults to slot 2. Call <tt/ser_ioctl(0, &lt;slot&gt;)/ prior to
-  <tt/ser_open/ in order to select a different slot. <tt/ser_ioctl/ succeeds
-  for all Apple&nbsp;II slots, but <tt/ser_open/ fails with
+  <tt/ser_open()/ in order to select a different slot. <tt/ser_ioctl()/
+  succeeds for all Apple&nbsp;II slots, but <tt/ser_open()/ fails with
   <tt/SER_ERR_NO_DEVICE/ if there's no SSC firmware found in the selected slot.
 
 </descrip><p>
@@ -188,6 +229,54 @@ you cannot do it, it just means that there's no help.
 <sect>Limitations<p>
 
 
+<sect1>DOS 3.3<p>
+
+Although the standard binaries generated by the linker for the enhanced&nbsp;Apple&nbsp;//e
+generally run both on DOS 3.3 (with Applesoft BASIC) and on ProDOS 8 (with
+BASIC.SYSTEM) there are some limitations for DOS 3.3:
+
+<descrip>
+
+  <tag>Disk File I/O</tag>
+  There's no disk file I/O support. Any attempt to use it yields an error with
+  <tt/errno/ set to <tt/ENOSYS/. This implicitly means that loadable drivers
+  are in general not functional as they depend on disk file I/O. However they
+  may be converted to statically linked drivers using the co65 object-file
+  converter.
+
+  <tag>Interrupts</tag>
+  There's no <tt/interruptor/ support. Any attempt to use it yields the message
+  'Failed to alloc interrupt' on program startup. This implicitly means that
+  <tt/a2e.stdmou.mou/ and <tt/a2e.ssc.ser/ are not functional as they depend on
+  interrupts.
+  
+</descrip><p>
+
+
+<sect1>DIO<p>
+
+Although <htmlurl url="dio.html" name="DIO"> generally works with all ProDOS 8
+devices, the function <htmlurl url="dio-3.html" name="dio_query_sectcount()">
+simply always return 280 (which is only correct for a 140KB disk).
+
+
+<sect1>Direct console I/O<p>
+
+<descrip>
+
+  <tag>Color</tag>
+  The enhanced&nbsp;Apple&nbsp;//e has no color text mode. Therefore the functions
+  <htmlurl url="funcref-205.html" name="textcolor()">,
+  <htmlurl url="funcref-68.html" name="bgcolor()"> and
+  <htmlurl url="funcref-69.html" name="bordercolor()"> have no effect.
+
+  <tag>Cursor</tag>
+  The enhanced&nbsp;Apple&nbsp;//e has no hardware cursor. Therefore the function
+  <htmlurl url="funcref-88.html" name="cursor()"> has no effect.
+
+</descrip><p>
+
+
 
 <sect>Other hints<p>
 
@@ -198,7 +287,7 @@ Command line arguments can be passed to <tt/main()/ after BLOAD. Since this is n
 supported by BASIC, the following syntax was chosen:
 
 <tscreen><verb>
-]CALL2048:REM ARG1 " ARG2 IS QUOTED" ARG3 "" ARG5
+]CALL2051:REM ARG1 " ARG2 IS QUOTED" ARG3 "" ARG5
 </verb></tscreen>
 
 <enum>
@@ -220,10 +309,29 @@ These are defined to be OpenApple + number key.
 <sect1>Interrupts<p>
 
 The runtime for the enhanced&nbsp;Apple&nbsp;//e uses routines marked as <tt/.CONDES/
-type 2 for ProDOS 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 url="ca65.html" name="assembler manual">.
+type <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 url="ca65.html"
+name="assembler manual">.
+
+
+<sect1>DIO<p>
+
+The function <htmlurl url="dio-1.html" name="dio_open()"> has the single parameter
+<tt/drive_id/ to identify the drive to be opened. Therefore an Apple&nbsp;II
+slot and drive pair is mapped to that <tt/drive_id/ according to the formula
+
+<verb>
+    drive_id = (slot * 2) + (drive - 1)
+</verb>
+
+so that for example slot 6 drive 1 is mapped to <tt/drive_id/ 12.
+
+The function <htmlurl url="dio-1.html" name="dio_open()"> succeeds only if a
+formatted disk is present in the drive. However intentionally no check is
+performed on the presence of a ProDOS 8 disk. Therefore access to all standard
+16-sector disks (as for instance DOS 3.3) is possible.
 
 
 
@@ -239,7 +347,7 @@ name="uz@cc65.org">).
 <sect>License<p>
 
 This software is provided 'as-is', without any expressed or implied
-warranty.  In no event will the authors be held liable for any damages
+warranty. In no event will the authors be held liable for any damages
 arising from the use of this software.
 
 Permission is granted to anyone to use this software for any purpose,