Switched Apple II output format to AppleSingle.
Although the primary target OS for the Apple II for sure isn't DOS 3.3 but ProDOS 8 the Apple II binary files contained a DOS 3.3 4-byte header. Recently I was made aware of the AppleSingle file format. That format is a much better way to transport Apple II meta data from the cc65 toolchain to the ProDOS 8 file system. Therefore I asked AppleCommander to support the AppleSingle file format. Now that there's an AppleCommander BETA with AppleSingle support it's the right time for this change. I bumped version to 2.17 because of this from the perspective of Apple II users of course incompatible change.
This commit is contained in:
@@ -34,20 +34,14 @@ more information.
|
||||
<sect>Binary format<p>
|
||||
|
||||
The standard binary file format generated by the linker for the
|
||||
Apple ][ 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
|
||||
$803.
|
||||
Apple ][ target is an <url name="AppleSingle"
|
||||
url="http://kaiser-edv.de/documents/AppleSingle_AppleDouble.pdf"> file.
|
||||
The default load address is $803.
|
||||
|
||||
<bf/AppleCommander 1.3.5/ or later (available at <url
|
||||
url="https://applecommander.github.io/">) 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 $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: $803. Use <tt/-S <addr>/ 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: $800. Use <tt/-D __STACKSIZE__=<size>/ to set a different
|
||||
@@ -153,6 +146,9 @@ 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: $800. Use <tt/-D __STACKSIZE__=<size>/ to set a different
|
||||
stack size.
|
||||
@@ -180,9 +176,8 @@ Parameters:
|
||||
<tag><tt/STARTADDRESS:/ Program start address</tag>
|
||||
Default: $803. Use <tt/-S <addr>/ 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: $800. Use <tt/-D __STACKSIZE__=<size>/ to set a different
|
||||
@@ -206,7 +201,7 @@ Parameters:
|
||||
<sect1><tt/apple2-overlay.cfg/<p>
|
||||
|
||||
Configuration for an overlay program with up to nine overlays. The overlay files
|
||||
don't include the DOS 3.3 header. See <tt>samples/overlaydemo.c</tt> for more
|
||||
don't include the AppleSingle header. See <tt>samples/overlaydemo.c</tt> for more
|
||||
information on overlays.
|
||||
|
||||
Parameters:
|
||||
@@ -216,9 +211,8 @@ Parameters:
|
||||
<tag><tt/STARTADDRESS:/ Program start address</tag>
|
||||
Default: $803. Use <tt/-S <addr>/ 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: $800. Use <tt/-D __STACKSIZE__=<size>/ to set a different
|
||||
@@ -254,9 +248,8 @@ Parameters:
|
||||
<tag><tt/STARTADDRESS:/ Program start address</tag>
|
||||
Default: $803. Use <tt/-S <addr>/ 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>
|
||||
|
||||
@@ -281,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 <program>.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>
|
||||
|
||||
@@ -34,20 +34,14 @@ more information.
|
||||
<sect>Binary format<p>
|
||||
|
||||
The standard binary file format generated by the linker for the
|
||||
enhanced Apple //e 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
|
||||
$803.
|
||||
enhanced Apple //e target is an <url name="AppleSingle"
|
||||
url="http://kaiser-edv.de/documents/AppleSingle_AppleDouble.pdf"> file.
|
||||
The default load address is $803.
|
||||
|
||||
<bf/AppleCommander 1.3.5/ or later (available at <url
|
||||
url="https://applecommander.github.io/">) 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 $2000 so there
|
||||
is no need for a header. Thus the linker configuration
|
||||
<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/.
|
||||
<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: $803. Use <tt/-S <addr>/ 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: $800. Use <tt/-D __STACKSIZE__=<size>/ to set a different
|
||||
@@ -153,6 +146,9 @@ 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: $800. Use <tt/-D __STACKSIZE__=<size>/ to set a different
|
||||
stack size.
|
||||
@@ -180,9 +176,8 @@ Parameters:
|
||||
<tag><tt/STARTADDRESS:/ Program start address</tag>
|
||||
Default: $803. Use <tt/-S <addr>/ 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: $800. Use <tt/-D __STACKSIZE__=<size>/ to set a different
|
||||
@@ -206,7 +201,7 @@ Parameters:
|
||||
<sect1><tt/apple2enh-overlay.cfg/<p>
|
||||
|
||||
Configuration for an overlay program with up to nine overlays. The overlay files
|
||||
don't include the DOS 3.3 header. See <tt>samples/overlaydemo.c</tt> for more
|
||||
don't include the AppleSingle header. See <tt>samples/overlaydemo.c</tt> for more
|
||||
information on overlays.
|
||||
|
||||
Parameters:
|
||||
@@ -216,9 +211,8 @@ Parameters:
|
||||
<tag><tt/STARTADDRESS:/ Program start address</tag>
|
||||
Default: $803. Use <tt/-S <addr>/ 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: $800. Use <tt/-D __STACKSIZE__=<size>/ to set a different
|
||||
@@ -254,9 +248,8 @@ Parameters:
|
||||
<tag><tt/STARTADDRESS:/ Program start address</tag>
|
||||
Default: $803. Use <tt/-S <addr>/ to set a different start address.
|
||||
|
||||
<tag><tt/__EXEHDR__:/ Executable file header</tag>
|
||||
Default: No header. Use <tt/-u __EXEHDR__ apple2enh.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__ apple2enh.lib/ to add the AppleSingle header.
|
||||
|
||||
</descrip><p>
|
||||
|
||||
@@ -281,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 <program>.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>
|
||||
|
||||
@@ -246,13 +246,13 @@ varies in its start and exit conditions.
|
||||
|
||||
<sect2>AppleWin<p>
|
||||
Available at <url
|
||||
url="http://applewin.berlios.de/">:
|
||||
url="https://github.com/AppleWin/AppleWin">:
|
||||
|
||||
Emulates Apple ][/enhanced Apple //e computers, with
|
||||
sound, video, joysticks, serial port, and disk images. Includes monitor. Only
|
||||
for Windows. The package comes with a DOS 3.3 disk (called "master.dsk") image;
|
||||
however, you will need <bf/AppleCommander 1.3.5/ or later (available at <url
|
||||
url="http://applecommander.sourceforge.net/">).
|
||||
however, you will need <bf/AppleCommander 1.4.0/ or later (available at <url
|
||||
url="https://applecommander.github.io/">).
|
||||
|
||||
Compile the tutorial with
|
||||
|
||||
@@ -270,14 +270,13 @@ the <tt/master.dsk/ which comes with <bf/AppleWin/, and rename it to
|
||||
<tt/cc65.dsk/, then use <bf/AppleCommander/:
|
||||
|
||||
<tscreen><verb>
|
||||
java -jar ac.jar -cc65 cc65.dsk test B < hello
|
||||
java -jar ac.jar -as cc65.dsk test < hello
|
||||
</verb></tscreen>
|
||||
|
||||
Note that a convention in the Apple world is that "hello" is the file which is
|
||||
run automatically upon booting a DOS disk, sort of like the "autoexec.bat" of
|
||||
the MSDOS/Windows world. We've avoided that in the example, however. Also,
|
||||
the <tt/B/ parameter must be in caps., and "test" is the name of the program as
|
||||
it will appear on the Apple disk.
|
||||
the MSDOS/Windows world. We've avoided that in the example, however by using
|
||||
"test" as the name of the program as it will appear on the Apple disk.
|
||||
|
||||
Start the emulator, click on the <bf/Disk 1/ icon, and point to <bf/cc65.dsk/;
|
||||
then, click the big Apple logo, to boot the system. Then, type this on the
|
||||
|
||||
Reference in New Issue
Block a user