diff --git a/README.md b/README.md index 39e4ef54c..c36f14c44 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ including - newer PET machines (not 2001). - the Apple ][+ and successors. - the Atari 8 bit machines. +- the Atari 5200 console. - GEOS for the C64 and C128. - the Nintendo Entertainment System (NES). - the Supervision console. diff --git a/doc/atari5200.sgml b/doc/atari5200.sgml new file mode 100644 index 000000000..325602b37 --- /dev/null +++ b/doc/atari5200.sgml @@ -0,0 +1,182 @@ + + +
+ +Atari 5200 specific information for cc65 +<author> +<url url="mailto:chris@groessler.org" name="Christian Groessler"><newline> +<date>2014-05-15 + +<abstract> +An overview over the Atari 5200 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 Atari 5200 runtime system as it comes +with the cc65 C compiler. It describes the memory layout, Atari 5200 specific header +files, available drivers, and any pitfalls specific to that platform. + +Please note that Atari 5200 specific functions are just mentioned here, they are +described in detail in the separate <url 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 Atari 5200 target +is a cartridge image. It is of course +possible to change this behaviour by using a modified startup file and linker +config. + +<sect>Memory layout<p> + +cc65 generated programs with the default setup run with the I/O area and a +CHR bank enabled, which gives a usable memory range of $8000 - $FFF3. +All boot ROM entry points may be called directly without additional code. + +Special locations: + +<descrip> + <tag/Text screen/ + The text screen is located at VRAM $2000. + + <tag/Stack/ + The C runtime stack is located at $7FFF 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 Atari 5200 specific code may use the <tt/atari5200.h/ header file. + + +<sect1>Atari 5200 specific functions<p> + +<itemize> +<item>??? +</itemize> + + + +<sect1>Hardware access<p> + +The following pseudo variables declared in the <tt/nes.inc/ include file do +allow access to hardware located in the address space. + +<descrip> + + <tag><tt/PPU/</tag> + The <tt/PPU/ defines allow access to the PPU chip. + + <tag><tt/APU/</tag> + The <tt/APU/ defines allow access to the APU chip. + +</descrip><p> + + + +<sect>Loadable drivers<p> + +All drivers must be statically linked because no file I/O is available. +The names in the parentheses denote the symbols to be used for static linking of the drivers. + + +<sect1>Graphics drivers<p> + +<descrip> + +No graphics drivers are currently available for the Atari 5200. + +</descrip><p> + + +<sect1>Extended memory drivers<p> + +No extended memory drivers are available for the Atari 5200. + + +<sect1>Joystick drivers<p> + +<descrip> + + <tag><tt/atr5200std.joy (atr5200std_joy)/</tag> + A joystick driver for the standard Atari 5200 joystick is available. Up to four joysticks can be attached. + +</descrip><p> + + +<sect1>Mouse drivers<p> + +No mouse drivers are available for the Atari 5200. + + +<sect1>RS232 device drivers<p> + +No serial drivers are available for the Atari 5200. + + + +<sect>Limitations<p> + +<sect1>Disk I/O<p> + +The existing library for the Atari 5200 doesn't implement C file +I/O. There are no hacks for the <tt/read()/ and <tt/write()/ routines. + +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> + + + +<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> diff --git a/doc/ca65.sgml b/doc/ca65.sgml index caf022c16..79dd41092 100644 --- a/doc/ca65.sgml +++ b/doc/ca65.sgml @@ -4396,6 +4396,7 @@ compiler, depending on the target system selected: <itemize> <item><tt/__APPLE2__/ - Target system is <tt/apple2/ or <tt/apple2enh/ <item><tt/__APPLE2ENH__/ - Target system is <tt/apple2enh/ +<item><tt/__ATARI5200__/ - Target system is <tt/atari5200/ <item><tt/__ATARI__/ - Target system is <tt/atari/ or <tt/atarixl/ <item><tt/__ATARIXL__/ - Target system is <tt/atarixl/ <item><tt/__ATMOS__/ - Target system is <tt/atmos/ diff --git a/doc/cc65.sgml b/doc/cc65.sgml index 275a73168..a6b4a07ee 100644 --- a/doc/cc65.sgml +++ b/doc/cc65.sgml @@ -709,6 +709,10 @@ The compiler defines several macros at startup: This macro is defined if the target is the enhanced Apple //e (-t apple2enh). + <tag><tt>__ATARI5200__</tt></tag> + + This macro is defined if the target is the Atari 5200 game console. + <tag><tt>__ATARI__</tt></tag> This macro is defined if the target is the Atari 400/800 (-t atari) or the Atari 800XL/130XE (-t atarixl).