]> git.sur5r.net Git - cc65/commitdiff
some more tweaking, added docs page
authormrdudz <mrdudz@users.noreply.github.com>
Tue, 14 Jul 2015 15:22:47 +0000 (17:22 +0200)
committermrdudz <mrdudz@users.noreply.github.com>
Tue, 14 Jul 2015 15:22:47 +0000 (17:22 +0200)
asminc/pce.inc
doc/index.sgml
doc/pce.sgml [new file with mode: 0644]
libsrc/pce/conio.s
libsrc/pce/readme.txt
testcode/lib/pce/conio.c

index 6d1541d64c942fc7865a3b2f615c5204ce0b6d0a..767f1a529da331523e55bab57f7f391e3e8b35e4 100644 (file)
@@ -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
 
index 921b8c03d54264b44ecb05dc7a0e36b1c77d735f..eb13c9af591b539092384f3a43af373ac3c397ff 100644 (file)
   <tag><htmlurl url="osi.html" name="osi.html"></tag>
   Topics specific to the Ohio Scientific machines.
 
+  <tag><htmlurl url="pce.html" name="pce.html"></tag>
+  Topics specific to NEC PC-Engine (TurboGrafx) Console.
+
   <tag><htmlurl url="pet.html" name="pet.html"></tag>
   Topics specific to the Commodore PET machines.
 
diff --git a/doc/pce.sgml b/doc/pce.sgml
new file mode 100644 (file)
index 0000000..4c395ae
--- /dev/null
@@ -0,0 +1,198 @@
+<!doctype linuxdoc system>
+
+<article>
+
+<title>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 &dollar;8000 - &dollar;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 &dollar;0000,
+  the Font is located at VRAM &dollar;2000.
+
+  <tag/Stack/
+  The C runtime stack is located in system RAM at &dollar;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 &dollar;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 &dollar;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>
+
+
+
index 9f113f5154dfb0c17d9bff0c1c81d215eb1d6149..2556833b0027c6a09e11c31a156779be43409917 100644 (file)
@@ -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
index c7b3aed3d192ae40f6c0390b936620e4c03bee92..5b170b7f7e4fb5803aa33f734100928054dc384f 100644 (file)
@@ -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
index 993d935972de82801c74a643e9828d979e4cae9b..88c343af255ecb15a8b0eaa7267782f3135458db 100644 (file)
@@ -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);