From 3558c0796dc01f3659b797d1639107ebcad40e69 Mon Sep 17 00:00:00 2001 From: mrdudz Date: Tue, 14 Jul 2020 15:00:43 +0200 Subject: [PATCH] added a second test that checks all available characters (including inverse) --- testcode/lib/cbm/petscii.c | 80 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/testcode/lib/cbm/petscii.c b/testcode/lib/cbm/petscii.c index 60a12b18b..7d5ba9528 100644 --- a/testcode/lib/cbm/petscii.c +++ b/testcode/lib/cbm/petscii.c @@ -11,6 +11,8 @@ #if defined(__C64__) #define VRAMPEEK(x) (*(char*)(0x0400 + (x))) +#define VRAMPOKE(x, y) *(char*)(0x0400 + (x)) = (y) +#define CRAMPEEK(x) ((*(char*)(0xd800 + (x))) & 15) #define CRAMPOKE(x, y) *(char*)(0xd800 + (x)) = (y) #else #error "this target is not supported yet" @@ -78,5 +80,83 @@ int main(void) bordercolor(COLOR_GREEN); cputs("all fine"); } + cputs(" - press a key "); + cursor(1); + cgetc(); + cursor(0); + + clrscr(); + bordercolor(COLOR_BLACK); + + /* output all characters directly to the scree */ + c = 0; + for (y = 0; y < 16; y++) { + for (x = 0; x < 16; x++) { + VRAMPOKE((y * 40) + x, c); + CRAMPOKE((y * 40) + x, c & 15); + c++; + } + } + + /* read the characters with conio peek functions and output with conio */ + for (y = 0; y < 16; y++) { + for (x = 0; x < 16; x++) { + gotoxy(x, y); + c1 = cpeekc(); + c2 = cpeekrevers(); + c = cpeekcolor(); + + gotoxy(x + 0x14, y); + revers(c2); + textcolor(c); + cputc(c1); + } + } + + revers(0); + textcolor(COLOR_WHITE); + gotoxy(0, 17); + cputs("press a key to compare "); + cursor(1); + cgetc(); + cursor(0); + + /* compare the two outputs */ + for (y = 0; y < 16; y++) { + for (x = 0; x < 16; x++) { + c = COLOR_GREEN; + c1 = VRAMPEEK((y * 40) + x); + c2 = VRAMPEEK((y * 40) + x + 0x14); + if (c1 != c2) { + c = COLOR_RED; + err = 1; + } + c1 = CRAMPEEK((y * 40) + x); + c2 = CRAMPEEK((y * 40) + x + 0x14); + if (c1 != c2) { + c = COLOR_RED; + err = 1; + } + CRAMPOKE((y * 40) + x, c); + CRAMPOKE((y * 40) + x + 0x14, c); + } + } + + /* show the result */ + revers(0); + textcolor(COLOR_WHITE); + gotoxy(0, 17); + if (err) { + bordercolor(COLOR_RED); + cputs("errors detected"); + } else { + bordercolor(COLOR_GREEN); + cputs("all fine"); + } + cputs(" - press a key "); + cursor(1); + cgetc(); + cursor(0); + return 0; }