Changed the PC-Engine's configuration file, so that the command line can build 8K, 16K, and 32K carts.
Adjusted the PCE's document, the start-up code, and the PCE library test makefile. That makefile shows how to post-process the linker's output file.
This commit is contained in:
61
doc/pce.sgml
61
doc/pce.sgml
@@ -3,9 +3,9 @@
|
||||
<article>
|
||||
|
||||
<title>PC-Engine (TurboGrafx) System specific information for cc65
|
||||
<author>
|
||||
<url url="mailto:groepaz@gmx.net" name="Groepaz/Hitmen">
|
||||
<date>2016-09-29
|
||||
<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
|
||||
@@ -30,11 +30,36 @@ 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 PCE target
|
||||
is a cartridge image with no header. It is of course possible to change this
|
||||
behaviour by using a modified startup file and linker config.
|
||||
The binary output file generated by the linker, for the PCE target, is an
|
||||
image, with no header, that has 8K bytes in the wrong place. That file must be
|
||||
post-processed; the 8K at the end must be moved to the front of the image.
|
||||
|
||||
On POSIX systems, the <tt/dd/ command and the shell give a convenient way to do
|
||||
it. Here is an example of their use:
|
||||
<tscreen><verb>
|
||||
dd if=conio.bin bs=8K skip=3 > conio.pce
|
||||
dd if=conio.bin bs=8K count=3 >> conio.pce
|
||||
</verb></tscreen>
|
||||
The first command grabs the last 8K of a 32K file, and writes it as the first
|
||||
part of a new file. The second command reads all but the last part of the old
|
||||
file, and appends it to the new file.
|
||||
<tscreen><verb>
|
||||
+--------+--------+--------+--------+
|
||||
| Bank 1 | Bank 2 | Bank 3 | Bank 0 | <-- "conio.bin"
|
||||
+--------+--------+--------+--------+
|
||||
|
||||
+--------+--------+--------+--------+
|
||||
| Bank 0 | Bank 1 | Bank 2 | Bank 3 | <-- "conio.pce"
|
||||
+--------+--------+--------+--------+
|
||||
</verb></tscreen>
|
||||
<em/Note/: That <tt/.pce/ file shows the format of the ROM cartridge that is
|
||||
plugged into a PC-Engine. But, that <tt/.bin/ file shows what programs
|
||||
actually see when they execute the code in that cartridge.
|
||||
|
||||
|
||||
|
||||
<sect>Memory layout<p>
|
||||
|
||||
@@ -52,19 +77,23 @@ Special locations:
|
||||
<tag/Stack/
|
||||
The C runtime stack is located in system RAM at $3FFF and growing downwards.
|
||||
|
||||
<tag/BSS and Data/
|
||||
|
||||
The BSS (uninitialized variables) and Data (initialized variables) sections are
|
||||
placed one after the other into system RAM at $2000.
|
||||
<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 Data section and grows towards the C
|
||||
The C heap is located after the end of the BSS section; and, grows towards the C
|
||||
runtime stack.
|
||||
|
||||
<tag/Code/
|
||||
The startup code is located at $E000 in the System/Hardware bank. Further
|
||||
code can be placed in other ROM banks, this must be done manually however.
|
||||
In an 8K ROM cartridge, code and read-only data are located between
|
||||
$E000 and $FFF5 in the System bank.
|
||||
|
||||
In a 16K cartridge, code and read-only data are located between $C000
|
||||
and $FFF5.
|
||||
|
||||
In a 32K cartridge, code and read-only data are located between $8000
|
||||
and $FFF5.
|
||||
</descrip><p>
|
||||
|
||||
|
||||
@@ -171,7 +200,8 @@ following functions (and a few others):
|
||||
<sect>Other hints<p>
|
||||
|
||||
<itemize>
|
||||
<item>a good emulator to use for PC-Engine is "mednafen" (<url url="http://mednafen.fobby.net/">)
|
||||
<item><url url="https://mednafen.github.io/" name= "Mednafen"> is a good
|
||||
emulator to use for the PC-Engine.
|
||||
</itemize>
|
||||
|
||||
some useful resources on PCE coding:
|
||||
@@ -210,6 +240,3 @@ freely, subject to the following restrictions:
|
||||
</enum>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user