From: mrdudz Date: Tue, 14 Jul 2015 15:22:47 +0000 (+0200) Subject: some more tweaking, added docs page X-Git-Tag: V2.16~231^2~23 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=83391ab67c8aacf260b32888849dc01f0ae8fe8d;p=cc65 some more tweaking, added docs page --- diff --git a/asminc/pce.inc b/asminc/pce.inc index 6d1541d64..767f1a529 100644 --- a/asminc/pce.inc +++ b/asminc/pce.inc @@ -52,12 +52,22 @@ VDC_DATA_HI = $0003 ; bitmap of the palette data is this: 0000000gggrrrbbb. ; You can read and write the DAC-registers. -VCE_CTRL = $0400 ; write$00 to reset +VCE = $0400 ; base + +VCE_CTRL = $0400 ; write$00 to reset VCE_ADDR_LO = $0402 ; LSB of byte offset into palette VCE_ADDR_HI = $0403 ; MSB of byte offset into palette VCE_DATA_LO = $0404 ; LSB of 16-bit palette data VCE_DATA_HI = $0405 ; MSB of 16-bit palette data +; programmable sound generator (PSG) + +PSG = $0800 ; base + +; timer + +TIMER = $0c00 ; base + TIMER_COUNT = $0c00 TIMER_CTRL = $0c01 diff --git a/doc/index.sgml b/doc/index.sgml index 921b8c03d..eb13c9af5 100644 --- a/doc/index.sgml +++ b/doc/index.sgml @@ -137,6 +137,9 @@ Topics specific to the Ohio Scientific machines. + + Topics specific to NEC PC-Engine (TurboGrafx) Console. + Topics specific to the Commodore PET machines. diff --git a/doc/pce.sgml b/doc/pce.sgml new file mode 100644 index 000000000..4c395ae43 --- /dev/null +++ b/doc/pce.sgml @@ -0,0 +1,198 @@ + + +
+ +PC-Engine (TurboGrafx) System specific information for cc65 +<author> +<url url="mailto:groepaz@gmx.net" name="Groepaz/Hitmen"> +<date>2015-07-14 + +<abstract> +An overview over the PCE 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 PCE runtime system as it comes +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 +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. + +<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 and Font/ + The text screen is located at VRAM $0000, + the Font is located at VRAM $2000. + + <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/Heap/ + The C heap is located after the end of the Data 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. + +</descrip><p> + + + +<sect>Platform specific header files<p> + +Programs containing PCE specific code may use the <tt/pce.h/ header file. + + +<sect1>PCE specific functions<p> + +<itemize> +<item>waitvblank +<item>get_tv +</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. + +<descrip> + + <tag><tt/PSG/</tag> + The <tt/PSG/ defines allow access to the PSG chip (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). + +</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 TGI graphics drivers are currently available for the PCE. + +</descrip><p> + + +<sect1>Extended memory drivers<p> + +No extended memory drivers are currently available for the PCE. + + +<sect1>Joystick drivers<p> + +<descrip> + + <tag><tt/pce-stdjoy.joy (pce_stdjoy)/</tag> + A joystick driver for the standard two buttons joypad is available. + +</descrip><p> + + +<sect1>Mouse drivers<p> + +No mouse drivers are currently available for the PCE. + + +<sect1>RS232 device drivers<p> + +No serial drivers are currently available for the PCE. + + + +<sect>Limitations<p> + +<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 +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/libsrc/pce/conio.s b/libsrc/pce/conio.s index 9f113f515..2556833b0 100644 --- a/libsrc/pce/conio.s +++ b/libsrc/pce/conio.s @@ -59,18 +59,18 @@ conio_init: st2 #>$2000 ; ptr to font data - lda #<font - sta ptr1 - lda #>font - sta ptr1+1 + lda #<font + sta ptr1 + lda #>font + sta ptr1+1 - st0 #VDC_VWR ; VWR + st0 #VDC_VWR ; VWR ldy #$80 ; 128 chars charloop: ldx #$08 ; 8 bytes/char lineloop: lda (ptr1) - staio VDC_DATA_LO ; bitplane 0 - stzio VDC_DATA_HI ; bitplane 1 + staio VDC_DATA_LO ; bitplane 0 + stzio VDC_DATA_HI ; bitplane 1 clc ; increment font pointer lda ptr1 @@ -90,9 +90,9 @@ fillloop: st1 #$00 bne charloop ; next character ldx #0 - stx BGCOLOR + stx BGCOLOR inx - stx CHARCOLOR + stx CHARCOLOR rts diff --git a/libsrc/pce/readme.txt b/libsrc/pce/readme.txt index c7b3aed3d..5b170b7f7 100644 --- a/libsrc/pce/readme.txt +++ b/libsrc/pce/readme.txt @@ -44,4 +44,4 @@ http://archaicpixels.com/Main_Page http://www.magicengine.com/mkit/doc.html https://github.com/uli/huc -http://www.zeograd.com/parse.php?src=hucf \ No newline at end of file +http://www.zeograd.com/parse.php?src=hucf diff --git a/testcode/lib/pce/conio.c b/testcode/lib/pce/conio.c index 993d93597..88c343af2 100644 --- a/testcode/lib/pce/conio.c +++ b/testcode/lib/pce/conio.c @@ -2,6 +2,8 @@ #include <conio.h> #include <time.h> #include <joystick.h> +#include <string.h> +#include <stdlib.h> static int datavar = 10; @@ -10,6 +12,7 @@ void main(void) int stackvar = 42; int i, j; clock_t clk; + char *p; joy_install(&joy_static_stddrv); @@ -31,6 +34,15 @@ void main(void) gotoxy(0,10); cprintf("Found %d Joysticks.", j); + for (i = 0; i < 4; ++i) { + gotoxy(0, 17 + i); + p = malloc(16); + memcpy(p, "01234567890abcdef", 16); + cprintf("alloced at: %04p - %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", p, + p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7],p[8],p[9],p[10],p[11],p[12],p[13],p[14],p[15] + ); + } + for(;;) { gotoxy(13,4);