From: mrdudz Date: Sun, 30 Nov 2014 10:20:57 +0000 (+0100) Subject: more hacking X-Git-Tag: V2.16~231^2~29 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=1365afa845117e44dec57e33b682abe59a3d3090;p=cc65 more hacking --- diff --git a/cfg/pce.cfg b/cfg/pce.cfg index 276f3b3b6..b08e63814 100644 --- a/cfg/pce.cfg +++ b/cfg/pce.cfg @@ -1,3 +1,6 @@ +SYMBOLS { + __STACKSIZE__: type = weak, value = $0300; # 3 pages stack +} MEMORY { ZP: start = $00, size = $1A, type = rw, define = yes; @@ -37,10 +40,11 @@ SEGMENTS { #HEADER: load = HEADER, type = wprot; #aSTARTUP: load = ROM0, type = wprot, define = yes; - STARTUP: load = ROM0, type = wprot, define = yes; + STARTUP: load = ROM0, type = ro, define = yes; - CODE: load = ROM, type = wprot, define = yes; - RODATA: load = ROM, type = wprot, define = yes; + INIT: load = ROM0, type = ro, define = yes, optional = yes; + CODE: load = ROM, type = ro, define = yes; + RODATA: load = ROM, type = ro, define = yes; DATA: load = ROM0, run= RAM, type = rw, define = yes; # BSS: load = RAM2, type = bss, define = yes; @@ -63,6 +67,3 @@ FEATURES { label=__DESTRUCTOR_TABLE__, count=__DESTRUCTOR_COUNT__; } -SYMBOLS { - __STACKSIZE__ = $0300; # 3 pages stack -} diff --git a/include/conio.h b/include/conio.h index 54667a3ca..f8a880c77 100644 --- a/include/conio.h +++ b/include/conio.h @@ -77,6 +77,8 @@ # include #elif defined(__NES__) # include +#elif defined(__PCE__) +# include #endif diff --git a/include/pce.h b/include/pce.h new file mode 100644 index 000000000..8135679a2 --- /dev/null +++ b/include/pce.h @@ -0,0 +1,74 @@ +#define CH_CROSS 0x10 + +#define CH_RTEE 0x17 +#define CH_LTEE 0x0f + +#define CH_ULCORNER 0x10 +#define CH_URCORNER 0x10 +#define CH_LLCORNER 0x10 +#define CH_LRCORNER 0x10 + + +#define TV_NTSC 0 +#define TV_PAL 1 +#define get_tv() 0 + +#define CLOCKS_PER_SEC 50 // ??? +#define CLK_TCK 50 // ?!? + +//#ifndef CH_ENTER +#define CH_ENTER '\n' +//#endif + +#define CH_STOP 0x08 + +#define CH_F1 0x14 +#define CH_F3 0x15 +#define CH_F5 0x16 +#define CH_F7 0x17 + +#define CH_CURS_UP 0x01 +#define CH_CURS_DOWN 0x02 + +#ifndef CH_CURS_LEFT +#define CH_CURS_LEFT 0x03 +#endif + +#ifndef CH_CURS_RIGHT +#define CH_CURS_RIGHT 0x04 +#endif + +#define CH_ESC 8 + +#define CH_DEL 20 + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 +#define COLOR_RED 0x02 +#define COLOR_CYAN 0x03 +#define COLOR_VIOLET 0x04 +#define COLOR_GREEN 0x05 +#define COLOR_BLUE 0x06 +#define COLOR_YELLOW 0x07 +#define COLOR_ORANGE 0x08 +#define COLOR_BROWN 0x09 +#define COLOR_LIGHTRED 0x0A +#define COLOR_GRAY1 0x0B +#define COLOR_GRAY2 0x0C +#define COLOR_LIGHTGREEN 0x0D +#define COLOR_LIGHTBLUE 0x0E +#define COLOR_GRAY3 0x0F + +#define JOY_FIRE_B 5 +#define JOY_START 6 +#define JOY_SELECT 7 + +/* +void __fastcall__ waitvblank(void); + +unsigned char __fastcall__ cpeekcharxy(unsigned char x,unsigned char y); +unsigned char __fastcall__ cpeekchar(void); +unsigned char __fastcall__ cpeekcolxy(unsigned char x,unsigned char y); +unsigned char __fastcall__ cpeekcol(void); +*/ diff --git a/libsrc/pce/clock.s b/libsrc/pce/clock.s index d344814ad..60096c81d 100644 --- a/libsrc/pce/clock.s +++ b/libsrc/pce/clock.s @@ -3,21 +3,21 @@ ; ; clock_t clock (void); ; - - .include "pcengine.inc" - .export _clock - .importzp sreg + .include "pcengine.inc" + + .export _clock + .importzp sreg .proc _clock - ldy #0 ; Byte 3 is always zero - sty sreg+1 - sty sreg + ldy #0 ; Byte 3 is always zero + sty sreg+1 + sty sreg - ldx _tickcount+1 - lda _tickcount - rts + ldx _tickcount+1 + lda _tickcount + rts .endproc diff --git a/libsrc/pce/crt0.s b/libsrc/pce/crt0.s index d9c5a2ccb..43ca5d602 100644 --- a/libsrc/pce/crt0.s +++ b/libsrc/pce/crt0.s @@ -8,6 +8,7 @@ ; .export _exit + .export __STARTUP__ : absolute = 1 ; Mark as startup .import initlib, donelib .import push0, _main, zerobss .import initheap diff --git a/libsrc/pce/gotoxy.s b/libsrc/pce/gotoxy.s new file mode 100644 index 000000000..cfb59efe2 --- /dev/null +++ b/libsrc/pce/gotoxy.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; void gotoxy (unsigned char x, unsigned char y); +; + + .export _gotoxy + .import popa, plot + + .include "pcengine.inc" + +_gotoxy: + + sta CURS_Y ; Set Y + jsr popa ; Get X + sta CURS_X ; Set X + jmp plot ; Set the cursor position + + diff --git a/libsrc/pce/pcengine.h b/libsrc/pce/pcengine.h deleted file mode 100644 index 8135679a2..000000000 --- a/libsrc/pce/pcengine.h +++ /dev/null @@ -1,74 +0,0 @@ -#define CH_CROSS 0x10 - -#define CH_RTEE 0x17 -#define CH_LTEE 0x0f - -#define CH_ULCORNER 0x10 -#define CH_URCORNER 0x10 -#define CH_LLCORNER 0x10 -#define CH_LRCORNER 0x10 - - -#define TV_NTSC 0 -#define TV_PAL 1 -#define get_tv() 0 - -#define CLOCKS_PER_SEC 50 // ??? -#define CLK_TCK 50 // ?!? - -//#ifndef CH_ENTER -#define CH_ENTER '\n' -//#endif - -#define CH_STOP 0x08 - -#define CH_F1 0x14 -#define CH_F3 0x15 -#define CH_F5 0x16 -#define CH_F7 0x17 - -#define CH_CURS_UP 0x01 -#define CH_CURS_DOWN 0x02 - -#ifndef CH_CURS_LEFT -#define CH_CURS_LEFT 0x03 -#endif - -#ifndef CH_CURS_RIGHT -#define CH_CURS_RIGHT 0x04 -#endif - -#define CH_ESC 8 - -#define CH_DEL 20 - -/* Color defines */ -#define COLOR_BLACK 0x00 -#define COLOR_WHITE 0x01 -#define COLOR_RED 0x02 -#define COLOR_CYAN 0x03 -#define COLOR_VIOLET 0x04 -#define COLOR_GREEN 0x05 -#define COLOR_BLUE 0x06 -#define COLOR_YELLOW 0x07 -#define COLOR_ORANGE 0x08 -#define COLOR_BROWN 0x09 -#define COLOR_LIGHTRED 0x0A -#define COLOR_GRAY1 0x0B -#define COLOR_GRAY2 0x0C -#define COLOR_LIGHTGREEN 0x0D -#define COLOR_LIGHTBLUE 0x0E -#define COLOR_GRAY3 0x0F - -#define JOY_FIRE_B 5 -#define JOY_START 6 -#define JOY_SELECT 7 - -/* -void __fastcall__ waitvblank(void); - -unsigned char __fastcall__ cpeekcharxy(unsigned char x,unsigned char y); -unsigned char __fastcall__ cpeekchar(void); -unsigned char __fastcall__ cpeekcolxy(unsigned char x,unsigned char y); -unsigned char __fastcall__ cpeekcol(void); -*/ diff --git a/testcode/lib/conio.c b/testcode/lib/conio.c new file mode 100644 index 000000000..6a7bb2341 --- /dev/null +++ b/testcode/lib/conio.c @@ -0,0 +1,10 @@ + +#include + +void main(void) +{ + clrscr(); +// cprintf("hello world"); + cputs("hello world"); + for(;;); +} \ No newline at end of file