<!doctype linuxdoc system>
<article>
-
-<title>PC-Engine (TurboGrafx) System specific information for cc65
+<title>PC-Engine (TurboGrafx 16) System-specific information for cc65
<author><url url="mailto:groepaz@gmx.net" name="Groepaz/Hitmen">,<newline>
<url url="mailto:greg.king5@verizon.net" name="Greg King">
-<date>2018-02-12
<abstract>
An overview over the PCE runtime system as it is implemented for the
<sect>Overview<p>
This file contains an overview of the PCE runtime system as it comes
-with the cc65 C compiler. It describes the memory layout, PCE specific header
+with the cc65 C compiler. It describes the memory layout, PCE-specific header
files, available drivers, and any pitfalls specific to that platform.
-Please note that PCE 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
+Please note that PCE-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" might be available on
more than one platform. Please see the function reference for more
information.
<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.
+cc65-generated programs with the default setup run with the memory map that was
+used by many PC-Engine games:
+<itemize>
+<item>The first 8K bytes is the I/O area.
+<item>The second 8K bytes is RAM, which holds
+<itemize>
+<item>the redirected zero-page and the redirected hardware stack page,
+<item>and 7680 bytes of general memory ($2200 - $3FFF).
+</itemize>
+<item>The last 8K bytes in the usual 64K-byte range is the ROM that holds the
+program.
+</itemize>
Special locations:
<descrip>
<tag/Text screen and Font/
- The text screen is located at VRAM $0000,
- the Font is located at VRAM $2000.
+ The text screen is located at Video RAM (VRAM) address $0000;
+ the Font is located at VRAM address $2000.
<tag/Stack/
- The C runtime stack is located in system RAM at $3FFF and growing downwards.
+ The C run-time stack is located in system RAM at $3FFF;
+ and, grows downwards.
<tag/Data and BSS/
The Data (initialized variables) and BSS (uninitialized variables) sections are
placed one after the other into system RAM at $2200.
<tag/Heap/
- The C heap is located after the end of the BSS section; and, grows towards the C
- runtime stack.
+ The C heap is located after the end of the BSS section;
+ and, extends up to the C run-time stack.
<tag/Code/
In an 8K ROM cartridge, code and read-only data are located between
In a 32K cartridge, code and read-only data are located between $8000
and $FFF5.
-</descrip><p>
+</descrip>
-<sect>Platform specific header files<p>
+<sect>Platform-specific header files<p>
-Programs containing PCE specific code may use the <tt/pce.h/ header file.
+Programs containing PCE-specific code may use the <tt/pce.h/ header file.
-<sect1>PCE specific functions<p>
+<sect1>PCE-specific functions<p>
<itemize>
<item>waitvsync</item>
</itemize>
-
<sect1>Hardware access<p>
-The following pseudo variables declared in the <tt/pce.inc/ include file do
-allow access to hardware located in the address space.
+The following constants, defined in the <tt/pce.inc/ include file, do
+allow access to hardware that is located in the address space.
<descrip>
<tag><tt/PSG/</tag>
- The <tt/PSG/ defines allow access to the PSG chip (Programmable Sound Generator).
+ The <tt/PSG/ defines allow access to the PSG (Programmable Sound Generator).
<tag><tt/VCE/</tag>
The <tt/VCE/ defines allow access to the VCE chip (Video Color Encoder).
<tag><tt/VDC/</tag>
- The <tt/VDC/ defines allow access to the VDC chip (Video Display Controller).
+ The <tt/VDC/ defines allow access to the VDC chip (Video Display Controller).<newline>
+ 32K of 16-bit words of Video RAM can be accessed only through this chip.
-</descrip><p>
+</descrip>
<descrip>
<tag><tt/pce-stdjoy.joy (pce_stdjoy)/</tag>
- A joystick driver for the standard two buttons joypad is available.
+ A joystick driver for the standard two-button joypad is available.
- Note that the japanese 6-button pad is currently not supported.
+ Note that the Japanese 6-button pad currently is not supported.
-</descrip><p>
+</descrip>
<sect1>Mouse drivers<p>
<sect>Limitations<p>
-<itemize>
-<item>interruptor support in crt0 (and cfg) is missing
-</itemize>
<sect1>Disk I/O<p>
The existing library for the PCE 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
+To be more concrete, that limitation means that you cannot use any of the
following functions (and a few others):
<itemize>
<item>...
</itemize>
+
+
<sect>Other hints<p>
<itemize>
emulator to use for the PC-Engine.
</itemize>
-some useful resources on PCE coding:
+Some useful resources on PCE coding:
<itemize>
<item><url url="http://blog.blockos.org/?tag=pc-engine">
<item><url url="http://www.zeograd.com/parse.php?src=hucf">
</itemize>
+
+
<sect>License<p>
-This software is provided 'as-is', without any expressed or implied
+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.
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.
+<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 marked plainly 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>