<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<LINK REL="stylesheet" TYPE="text/css" HREF="doc.css">
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.71">
<TITLE>Watara Supervision specific information for cc65</TITLE>
</HEAD>
<BODY>
<H1>Watara Supervision specific information for cc65</H1>
<H2>
<A HREF="mailto:polluks@sdf.lonestar.org">Stefan A. Haubenthal</A></H2>
<HR>
<EM>An overview over the Supervision runtime system as it is implemented for the
cc65 C compiler.</EM>
<HR>
<P>
<H2><A NAME="toc1">1.</A> <A HREF="supervision.html#s1">Overview</A></H2>
<P>
<H2><A NAME="toc2">2.</A> <A HREF="supervision.html#s2">Binary format</A></H2>
<P>
<H2><A NAME="toc3">3.</A> <A HREF="supervision.html#s3">Memory layout</A></H2>
<P>
<H2><A NAME="toc4">4.</A> <A HREF="supervision.html#s4">Platform specific header files</A></H2>
<UL>
<LI><A NAME="toc4.1">4.1</A> <A HREF="supervision.html#ss4.1">Hardware access</A>
</UL>
<P>
<H2><A NAME="toc5">5.</A> <A HREF="supervision.html#s5">Loadable drivers</A></H2>
<UL>
<LI><A NAME="toc5.1">5.1</A> <A HREF="supervision.html#ss5.1">Graphics drivers</A>
<LI><A NAME="toc5.2">5.2</A> <A HREF="supervision.html#ss5.2">Extended memory drivers</A>
<LI><A NAME="toc5.3">5.3</A> <A HREF="supervision.html#ss5.3">Joystick drivers</A>
<LI><A NAME="toc5.4">5.4</A> <A HREF="supervision.html#ss5.4">Mouse drivers</A>
<LI><A NAME="toc5.5">5.5</A> <A HREF="supervision.html#ss5.5">RS232 device drivers</A>
</UL>
<P>
<H2><A NAME="toc6">6.</A> <A HREF="supervision.html#s6">Limitations</A></H2>
<UL>
<LI><A NAME="toc6.1">6.1</A> <A HREF="supervision.html#ss6.1">Disk I/O</A>
</UL>
<P>
<H2><A NAME="toc7">7.</A> <A HREF="supervision.html#s7">Other hints</A></H2>
<P>
<H2><A NAME="toc8">8.</A> <A HREF="supervision.html#s8">License</A></H2>
<HR>
<H2><A NAME="s1">1.</A> <A HREF="#toc1">Overview</A></H2>
<P>This file contains an overview of the Supervision runtime system as it comes
with the cc65 C compiler. It describes the memory layout, Supervision specific header
files, available drivers, and any pitfalls specific to that platform.</P>
<P>Please note that Supervision specific functions are just mentioned here, they are
described in detail in the separate
<A HREF="funcref.html">function reference</A>. Even functions marked as "platform dependent" may be available on
more than one platform. Please see the function reference for more information.</P>
<H2><A NAME="s2">2.</A> <A HREF="#toc2">Binary format</A></H2>
<P>The standard binary output format generated by the linker for the Supervision target
is a 2×16 kbyte machine language program. It is of course
possible to change this behaviour by using one of the different linker configs.</P>
<H2><A NAME="s3">3.</A> <A HREF="#toc3">Memory layout</A></H2>
<P>cc65 generated programs with the default setup run with the I/O area enabled,
which gives a usable memory range of $8000 - $FFF9.
More ROM may need additional bankswitching code.</P>
<P>Special locations:</P>
<P>
<DL>
<DT><B>Text screen</B><DD>
<P>No conio support is currently available for the Supervision.</P>
<DT><B>Stack</B><DD>
<P>The C runtime stack is located at $1FFF and growing downwards.</P>
<DT><B>Heap</B><DD>
<P>The C heap is located at the end of the program and grows towards the C
runtime stack.</P>
</DL>
</P>
<H2><A NAME="s4">4.</A> <A HREF="#toc4">Platform specific header files</A></H2>
<P>Programs containing Supervision specific code may use the <CODE>supervision.h</CODE> header file.</P>
<H2><A NAME="ss4.1">4.1</A> <A HREF="#toc4.1">Hardware access</A>
</H2>
<P>The following pseudo variables declared in the <CODE>supervision.inc</CODE> include file do
allow access to hardware located in the address space.</P>
<P>
<DL>
<DT><B><CODE>IO</CODE></B><DD>
<P>The <CODE>IO</CODE> defines allow access to the IO chip.</P>
</DL>
</P>
<H2><A NAME="s5">5.</A> <A HREF="#toc5">Loadable drivers</A></H2>
<H2><A NAME="ss5.1">5.1</A> <A HREF="#toc5.1">Graphics drivers</A>
</H2>
<P>No graphics drivers are currently available for the Supervision.</P>
<H2><A NAME="ss5.2">5.2</A> <A HREF="#toc5.2">Extended memory drivers</A>
</H2>
<P>No extended memory drivers are currently available for the Supervision.</P>
<H2><A NAME="ss5.3">5.3</A> <A HREF="#toc5.3">Joystick drivers</A>
</H2>
<P>
<DL>
<DT><B><CODE>supervision-stdjoy.joy (supervision_stdjoy_joy)</CODE></B><DD>
<P>A joystick driver for the standard two buttons joypad is available.</P>
</DL>
</P>
<H2><A NAME="ss5.4">5.4</A> <A HREF="#toc5.4">Mouse drivers</A>
</H2>
<P>No mouse drivers are currently available for the Supervision.</P>
<H2><A NAME="ss5.5">5.5</A> <A HREF="#toc5.5">RS232 device drivers</A>
</H2>
<P>No communication port drivers are currently available for the Supervision.</P>
<H2><A NAME="s6">6.</A> <A HREF="#toc6">Limitations</A></H2>
<H2><A NAME="ss6.1">6.1</A> <A HREF="#toc6.1">Disk I/O</A>
</H2>
<P>The existing library for the Supervision doesn't implement C file
I/O. There are even no hacks for the <CODE>read()</CODE> and <CODE>write()</CODE> routines.</P>
<P>To be more concrete, this limitation means that you cannot use any of the
following functions (and a few others):</P>
<P>
<UL>
<LI>fclose</LI>
<LI>fopen</LI>
<LI>fread</LI>
<LI>fprintf</LI>
<LI>fputc</LI>
<LI>fscanf</LI>
<LI>fwrite</LI>
<LI>...</LI>
</UL>
</P>
<H2><A NAME="s7">7.</A> <A HREF="#toc7">Other hints</A></H2>
<H2><A NAME="s8">8.</A> <A HREF="#toc8">License</A></H2>
<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.</P>
<P>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:</P>
<P>
<OL>
<LI> 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.</LI>
<LI> Altered source versions must be plainly marked as such, and must not
be misrepresented as being the original software.</LI>
<LI> This notice may not be removed or altered from any source
distribution.</LI>
</OL>
</P>
</BODY>
</HTML>