Added platform specific doc for the Apple ][
git-svn-id: svn://svn.cc65.org/cc65/trunk@2766 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
ded92af603
commit
f4b9df173e
3 changed files with 250 additions and 4 deletions
15
doc/Makefile
15
doc/Makefile
|
@ -5,7 +5,8 @@
|
|||
|
||||
# Default for the compiler lib search path as compiler define
|
||||
|
||||
SGML = ar65.sgml \
|
||||
SGML = apple2.sgml \
|
||||
ar65.sgml \
|
||||
atari.sgml \
|
||||
c128.sgml \
|
||||
c16.sgml \
|
||||
|
@ -51,9 +52,6 @@ TEX = $(SGML:.sgml=.tex)
|
|||
%.tex: %.sgml
|
||||
sgml2latex --output=tex $<
|
||||
|
||||
funcref.html: funcref.sgml
|
||||
sgml2html --split=2 $<
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Targets
|
||||
|
||||
|
@ -85,6 +83,15 @@ clean:
|
|||
zap: clean
|
||||
rm -f $(TXT) $(HTML) $(INFO) $(DVI) $(TEX) *.html *.info-* *.man
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Special target rules
|
||||
|
||||
coding.html: coding.sgml
|
||||
sgml2html --split=0 $<
|
||||
|
||||
funcref.html: funcref.sgml
|
||||
sgml2html --split=2 $<
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Make the dependencies
|
||||
|
||||
|
|
236
doc/apple2.sgml
Normal file
236
doc/apple2.sgml
Normal file
|
@ -0,0 +1,236 @@
|
|||
<!doctype linuxdoc system>
|
||||
|
||||
<article>
|
||||
|
||||
<title>Apple ][ specific information for cc65
|
||||
<author>Ullrich von Bassewitz, <htmlurl url="mailto:uz@cc65.org" name="uz@cc65.org">
|
||||
<date>2003-12-16
|
||||
|
||||
<abstract>
|
||||
An overview over the Apple ][ runtime system as it is
|
||||
implemented for the cc65 C compiler.
|
||||
</abstract>
|
||||
|
||||
<!-- Table of contents -->
|
||||
<toc>
|
||||
|
||||
<!-- Begin the document -->
|
||||
|
||||
<sect>Overview<p>
|
||||
|
||||
This file contains an overview of the Apple ][ runtime system
|
||||
as it comes with the cc65 C compiler. It describes the memory layout,
|
||||
Apple ][ specific header files, available drivers, and any
|
||||
pitfalls specific to that platform.
|
||||
|
||||
Please note that Apple ][ specific functions are just mentioned
|
||||
here, they are described in detail in the separate <htmlurl 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.
|
||||
|
||||
|
||||
<sect>Binary format<p>
|
||||
|
||||
The standard binary output format generated by the linker for the
|
||||
Apple ][ target is a machine language program with a 4 byte DOS
|
||||
3.3 header. The standard load address is $800.
|
||||
|
||||
The DOS header is in it's 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;
|
||||
</verb>
|
||||
|
||||
to
|
||||
|
||||
<verb>
|
||||
HEADER: start = $0000, size = $4, file = "";
|
||||
</verb>
|
||||
|
||||
in the linker configuration to have the linker remove it.
|
||||
|
||||
|
||||
|
||||
<sect>Memory layout<p>
|
||||
|
||||
In the standard setup, cc65 generated programs use the memory from
|
||||
$800 to $8E00, so 33.5K of memory (including the stack) is
|
||||
available. ROM calls are possible without further precautions.
|
||||
|
||||
Special locations:
|
||||
|
||||
<descrip>
|
||||
<tag/Stack/
|
||||
The C runtime stack is located at $8DFF and growing downwards.
|
||||
|
||||
<tag/Heap/
|
||||
The C heap is located at the end of the program and grows towards the C
|
||||
runtime stack.
|
||||
</descrip><p>
|
||||
|
||||
|
||||
|
||||
<sect>Platform specific header files<p>
|
||||
|
||||
Programs containing Apple ][ specific code may use the
|
||||
<tt/apple2.h/ header file.
|
||||
|
||||
|
||||
<sect1>Apple ][ specific functions<p>
|
||||
|
||||
The functions listed below are special for the Apple ][. See
|
||||
the <htmlurl url="funcref.html" name="function reference"> for declaration and
|
||||
usage.
|
||||
|
||||
<itemize>
|
||||
<item>get_ostype
|
||||
</itemize>
|
||||
|
||||
|
||||
|
||||
<sect1>Hardware access<p>
|
||||
|
||||
There's currently no support for direct hardware access. This does not mean
|
||||
you cannot do it, it just means that there's no help.
|
||||
|
||||
|
||||
|
||||
<sect>Loadable drivers<p>
|
||||
|
||||
<em>Note:</em> Since the Apple ][ doesn't have working disk I/O
|
||||
(see <ref id="limitations" name="section "Limitations"">), the
|
||||
available drivers cannot be loaded at runtime (so the term "loadable drivers"
|
||||
is somewhat misleading). Instead, the drivers have to be converted using the
|
||||
<htmlurl url="co65.html" name="co65 utility"> and statically linked. While
|
||||
this may seem overhead, it has two advantages:
|
||||
|
||||
<enum>
|
||||
<item>The interface is identical to the one used for other platforms
|
||||
and to the one for the Apple ][ once it has disk I/O.
|
||||
<item>Once disk I/O is available, existing code can be changed to load drivers
|
||||
at runtime with almost no effort.
|
||||
</enum>
|
||||
|
||||
|
||||
|
||||
<sect1>Graphics drivers<p>
|
||||
|
||||
<em>Note:</em> Since memory for the graphics has to be allocated, programs
|
||||
using graphics drivers will have to be linked using a special linker
|
||||
configuration. See the <tt/apple2-tgi.cfg/ file in the documentation
|
||||
directory, and the <htmlurl url="ld65.html" name="linker documentation"> on
|
||||
how to use it.
|
||||
|
||||
<descrip>
|
||||
|
||||
<tag><tt/a2-lo.tgi/</tag>
|
||||
This driver features a resolution of 40x40 with 16 colors. At the bottom of
|
||||
the screen, 4 additional text lines are available.
|
||||
|
||||
<tag><tt/a2-hi.tgi/</tag>
|
||||
This driver features a resolution of 280x192 with 6 colors.
|
||||
|
||||
</descrip><p>
|
||||
|
||||
|
||||
<sect1>Extended memory drivers<p>
|
||||
|
||||
No extended memory drivers are currently available for the
|
||||
Apple ][.
|
||||
|
||||
|
||||
|
||||
<sect1>Joystick drivers<p>
|
||||
|
||||
<descrip>
|
||||
|
||||
<tag><tt/a2-stdjoy.joy/</tag>
|
||||
Supports up to two standard joysticks connected to the joysticks port of
|
||||
the Apple ][.
|
||||
|
||||
</descrip><p>
|
||||
|
||||
|
||||
|
||||
<sect1>Mouse drivers<p>
|
||||
|
||||
Currently no drivers available (in fact, the API for loadable mouse drivers
|
||||
does not exist).
|
||||
|
||||
|
||||
<sect1>RS232 device drivers<p>
|
||||
|
||||
No serial drivers are currently available for the Apple ][.
|
||||
|
||||
|
||||
|
||||
<sect>Limitations<label id="limitations"><p>
|
||||
|
||||
<sect1>Disk I/O<p>
|
||||
|
||||
The existing library for the Apple ][ doesn't implement C file
|
||||
I/O. There are two hacks for the <tt/read()/ and <tt/write()/ routines in
|
||||
place, which will make functions work that read from or write to <tt/stdout/
|
||||
(like <tt/printf()/). However, these functions have some shortcomings which
|
||||
won't be fixed, because they're going to be replaced anyway.
|
||||
|
||||
To be more concrete, this limitation means that you cannot use any of the
|
||||
following functions (and a few others):
|
||||
|
||||
<itemize>
|
||||
<item>fclose
|
||||
<item>fopen
|
||||
<item>fread
|
||||
<item>fprintf
|
||||
<item>fputc
|
||||
<item>fscanf
|
||||
<item>fwrite
|
||||
<item>...
|
||||
</itemize>
|
||||
|
||||
|
||||
<sect>Other hints<p>
|
||||
|
||||
<sect1>Passing arguments to the program<p>
|
||||
|
||||
Command line argument passing is currently not supported for the
|
||||
Apple ][.
|
||||
|
||||
|
||||
|
||||
<sect>Bugs/Feedback<p>
|
||||
|
||||
If you have problems using the library, if you find any bugs, or if you're
|
||||
doing something interesting with it, I would be glad to hear from you. Feel
|
||||
free to contact me by email (<htmlurl url="mailto:uz@cc65.org"
|
||||
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
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
<enum>
|
||||
<item> The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
<item> Altered source versions must be plainly marked as such, and must not
|
||||
be misrepresented as being the original software.
|
||||
<item> This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
</enum>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
|
@ -84,6 +84,9 @@ Main documentation page, contains links to other available stuff.
|
|||
|
||||
<descrip>
|
||||
|
||||
<tag><htmlurl url="apple2.html" name="apple2.html"></tag>
|
||||
Topics specific to the Apple2 ][.
|
||||
|
||||
<tag><htmlurl url="atari.html" name="atari.html"></tag>
|
||||
Topics specific to the Atari 8 bit machines.
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue