]> git.sur5r.net Git - cc65/blobdiff - doc/apple2.sgml
Fixed the order of some functions.
[cc65] / doc / apple2.sgml
index fe5c987676a351b319092f558a521264c402d83c..eef0eed3d58262010d67c5d81656513312393052 100644 (file)
@@ -34,20 +34,14 @@ more information.
 <sect>Binary format<p>
 
 The standard binary file format generated by the linker for the
-Apple&nbsp;&rsqb;&lsqb; target is a binary program with a 4 byte DOS 3.3 header
-containing the load address and load length. The default load address is
-&dollar;803.
+Apple&nbsp;&rsqb;&lsqb; target is an <url name="AppleSingle" 
+url="http://kaiser-edv.de/documents/AppleSingle_AppleDouble.pdf"> file.
+The default load address is &dollar;803.
 
-<bf/AppleCommander 1.3.5/ or later (available at <url
-url="http://applecommander.sourceforge.net/">) includes the option <tt/-cc65/
-that allows to put binary files with a DOS 3.3 header onto disk images
-containing DOS 3.3 as well as ProDOS 8.
-
-For ProDOS 8 system programs the load address is fixed to &dollar;2000 so there
-is no need for a header. Thus the linker configuration
-<ref id="apple-sys-cfg" name="apple2-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/.
+<bf/AppleCommander 1.4.0/ or later (available at <url
+url="https://applecommander.github.io/">) includes the option <tt/-as/ that
+allows to put AppleSingle files onto disk images containing DOS 3.3 as well
+as ProDOS 8.
 
 
 <sect>Memory layout<p>
@@ -121,9 +115,8 @@ Parameters:
   <tag><tt/STARTADDRESS:/ Program start address</tag>
   Default: &dollar;803. Use <tt/-S &lt;addr&gt;/ to set a different start address.
 
-  <tag><tt/__EXEHDR__:/ Executable file header</tag>
-  Default: DOS 3.3 header (address and length). Use <tt/-D __EXEHDR__=0/ to omit
-  the header.
+  <tag><tt/__EXEHDR__:/ AppleSingle executable file header</tag>
+  Default: Yes. Use <tt/-D __EXEHDR__=0/ to omit the AppleSingle header.
 
   <tag><tt/__STACKSIZE__:/ C runtime stack size</tag>
   Default: &dollar;800. Use <tt/-D __STACKSIZE__=&lt;size&gt;/ to set a different
@@ -153,10 +146,47 @@ Parameters:
 
 <descrip>
 
+  <tag><tt/__EXEHDR__:/ AppleSingle executable file header</tag>
+  Default: Yes. Use <tt/-D __EXEHDR__=0/ to omit the AppleSingle header.
+
+  <tag><tt/__STACKSIZE__:/ C runtime stack size</tag>
+  Default: &dollar;800. Use <tt/-D __STACKSIZE__=&lt;size&gt;/ to set a different
+  stack size.
+
+  <tag><tt/__LCADDR__:/ Address of code in the Language Card</tag>
+  Default: &dollar;D400. Use <tt/-D __LCADDR__=&lt;addr&gt;/ to set a different
+  code address.
+
+  <tag><tt/__LCSIZE__:/ Size of code in the Language Card</tag>
+  Default: &dollar;C00. Use <tt/-D __LCSIZE__=&lt;size&gt;/ to set a different
+  code size.
+
+</descrip><p>
+
+
+<sect1><tt/apple2-hgr.cfg/<p>
+
+Configuration for a program including a hires page. See <tt>testcode/lib/apple/hgrtest.c</tt>
+for an example of such a program.
+
+Parameters:
+
+<descrip>
+
+  <tag><tt/STARTADDRESS:/ Program start address</tag>
+  Default: &dollar;803. Use <tt/-S &lt;addr&gt;/ to set a different start address.
+
+  <tag><tt/__EXEHDR__:/ AppleSingle executable file header</tag>
+  Default: Yes. Use <tt/-D __EXEHDR__=0/ to omit the AppleSingle header.
+
   <tag><tt/__STACKSIZE__:/ C runtime stack size</tag>
   Default: &dollar;800. Use <tt/-D __STACKSIZE__=&lt;size&gt;/ to set a different
   stack size.
 
+  <tag><tt/__HIMEM__:/ Highest usable memory address presumed at link time</tag>
+  Default: &dollar;9600. Use <tt/-D __HIMEM__=&lt;addr&gt;/ to set a different
+  highest usable address.
+
   <tag><tt/__LCADDR__:/ Address of code in the Language Card</tag>
   Default: &dollar;D400. Use <tt/-D __LCADDR__=&lt;addr&gt;/ to set a different
   code address.
@@ -170,8 +200,8 @@ Parameters:
 
 <sect1><tt/apple2-overlay.cfg/<p>
 
-Configuration for overlay programs with the up to nine overlays. The overlay files
-don't include the DOS 3.3 header. See <tt>samples/overlaydemo.c</tt> for more
+Configuration for an overlay program with up to nine overlays. The overlay files
+don't include the AppleSingle header. See <tt>samples/overlaydemo.c</tt> for more
 information on overlays.
 
 Parameters:
@@ -181,9 +211,8 @@ Parameters:
   <tag><tt/STARTADDRESS:/ Program start address</tag>
   Default: &dollar;803. Use <tt/-S &lt;addr&gt;/ to set a different start address.
 
-  <tag><tt/__EXEHDR__:/ Executable file header</tag>
-  Default: DOS 3.3 header (address and length). Use <tt/-D __EXEHDR__=0/ to omit
-  the header.
+  <tag><tt/__EXEHDR__:/ AppleSingle executable file header</tag>
+  Default: Yes. Use <tt/-D __EXEHDR__=0/ to omit the AppleSingle header.
 
   <tag><tt/__STACKSIZE__:/ C runtime stack size</tag>
   Default: &dollar;800. Use <tt/-D __STACKSIZE__=&lt;size&gt;/ to set a different
@@ -210,7 +239,7 @@ Parameters:
 
 <sect1><tt/apple2-asm.cfg/<p>
 
-Configuration for a assembler programs which don't need a special setup.
+Configuration for an assembler program that doesn't need a special setup.
 
 Parameters:
 
@@ -219,9 +248,8 @@ Parameters:
   <tag><tt/STARTADDRESS:/ Program start address</tag>
   Default: &dollar;803. Use <tt/-S &lt;addr&gt;/ to set a different start address.
 
-  <tag><tt/__EXEHDR__:/ Executable file header</tag>
-  Default: No header. Use <tt/-u __EXEHDR__ apple2.lib/ to add a DOS 3.3 header
-  (address and length).
+  <tag><tt/__EXEHDR__:/ AppleSingle executable file header</tag>
+  Default: No. Use <tt/-u __EXEHDR__ apple2.lib/ to add the AppleSingle header.
 
 </descrip><p>
 
@@ -246,7 +274,8 @@ program (i.e. quits to the ProDOS dispatcher).
 
 Using LOADER.SYSTEM is as simple as copying it to the ProDOS 8 directory of the
 program to load under name &lt;program&gt;.SYSTEM as a system program. For
-example the program <tt/MYPROG/ is loaded by <tt/MYPROG.SYSTEM/.
+example the program <tt/MYPROG/ is loaded by <tt/MYPROG.SYSTEM/. The right
+AppleCommander option to put LOADER.SYSTEM on a ProDOS 8 disk image is <tt/-p/.
 
 
 <sect1>Heap<p>
@@ -435,8 +464,7 @@ BASIC.SYSTEM) there are some limitations for DOS 3.3:
   <tag/Interrupts/
   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
-  joystick, mouse and RS232 device drivers are not functional as they depend on
-  interrupts.
+  mouse and RS232 device drivers are not functional as they depend on interrupts.
 
 </descrip><p>
 
@@ -511,16 +539,17 @@ url="ca65.html" name="assembler manual">.
 </descrip><p>
 
 
-<sect1>Specifying ProDOS File Types<p>
+<sect1>Specifying file types for fopen<p>
 
 <descrip>
 
-  <tag>Problem Explanation</tag>
+  <tag>Explanation of File Types</tag>
 
   ProDOS associates a file type and an auxiliary type with each file.
   These type specifications are separate from the file's name, unlike
-  Windows and UNIX-like systems which use the file name's suffix (a.k.a.
-  extension) to specify the file type. For example, .exe, .doc, or .bat.
+  Windows which uses the file name's suffix (a.k.a.
+  extension) to specify the file type. For example, <tt/.exe/, 
+  <tt/.doc/, or <tt/.bat/.
   The ProDOS low-level 
   Machine-Language Interface (MLI) functions for creating and opening 
   files require these types to be specified. And if they don't match
@@ -531,24 +560,23 @@ url="ca65.html" name="assembler manual">.
   auxiliary type. Therefore, some additional mechanism for specifying
   the file types is needed. 
   
-  <tag>Solution</tag>
+  <tag>Specifying the File Type and Auxiliary Type</tag>
 
   There are two global variables provided that allow the file type
   and auxiliary type to be specified before a call to <tt/fopen()/
-  or <tt/open/. They are defined in <tt/apple2_filetype.h/:
+  or <tt/open()/. They are defined in <tt/apple2_filetype.h/:
 
-  <quote>
+  <tscreen>
   <verb>
   extern unsigned char _filetype;  /* Default: PRODOS_T_BIN */
   extern unsigned int _auxtype;    /* Default: 0            */
   </verb>
-  </quote>  
+  </tscreen>  
 
   The header file <tt/apple2_filetype.h/ also defines many values
   that can be used to set these variables. It is included in
   <tt/apple2.h/, which is in turn included in <tt/apple2enh.h/.
-  So it
-  not necessary to include it directly. Just
+  So it isn't necessary to include it directly. Just
   include one of <tt/apple2.h/ or <tt/apple2enh.h/.
 
   <tag>Example</tag>
@@ -563,8 +591,8 @@ url="ca65.html" name="assembler manual">.
   length text file is referred to as a sequential text file.
   This is equivalent to text files on 
   other operating systems, except that the line terminator is a
-  carriage return instead of a new line (Linux/BSD/MacOS) or 
-  carriage return, new line pair (Windows).
+  carriage return instead of a line-feed (Linux/BSD/MacOS) or 
+  carriage return, line-feed pair (Windows).
   
   The "sequential" text file terminology is in contrast to a 
   "random-access" text file which would
@@ -577,20 +605,25 @@ url="ca65.html" name="assembler manual">.
   <tt/_auxtype/ can also be set to <tt/PRODOS_AUX_T_TXT_SEQ/
   which is defined as zero.
 
-  <quote>
+  <tscreen>
   <verb>
-    #include <stdio.h>
-    #include <string.h>
-    #include <errno.h>
-    #include <apple2.h>
-    void main()
+    &num;include &lt;stdio.h&gt;
+    &num;include &lt;string.h&gt;
+    &num;include &lt;errno.h&gt;
+    &num;include &lt;apple2.h&gt;
+
+    void main(void)
     {
         FILE *out;
         char *name = "MY.FAVS";
 
+        /*-----------------------------*/
+
         _filetype = PRODOS_T_TXT;
         _auxtype  = PRODOS_AUX_T_TXT_SEQ;
 
+        /*-----------------------------*/
+
         if ((out = fopen(name, "w")) != NULL) {
             fputs("Jorah Mormont\r", out);
             fputs("Brienne of Tarth\r", out);
@@ -605,7 +638,7 @@ url="ca65.html" name="assembler manual">.
         }
     }
   </verb>
-  </quote>  
+  </tscreen>  
 
 </descrip><p>