]> git.sur5r.net Git - cc65/blob - testcode/lib/pce/conio.c
ed3f86240446984b2250c54d2ae6a4337d82f440
[cc65] / testcode / lib / pce / conio.c
1 #include <pce.h>
2 #include <conio.h>
3 #include <time.h>
4 #include <joystick.h>
5 #include <string.h>
6 #include <stdlib.h>
7
8 static int datavar = 10;
9
10 void main(void)
11 {
12         int stackvar = 42;
13         int i, j;
14         clock_t clk;
15         char* p;
16         unsigned char xsize, ysize, n, nn;
17
18         joy_install(&joy_static_stddrv);
19
20         clrscr();
21         screensize(&xsize, &ysize);
22
23         cputs("hello world");
24         cputsxy(0, 2, "colors:" );
25         for (i = 0; i < 16; ++i) {
26                 textcolor(i);
27                 cputc('X');
28         }
29         textcolor(1);
30
31         gotoxy(0,4);
32         cprintf("datavar:  %02x\n\r", datavar);
33         cprintf("stackvar: %02x\n\r", stackvar);
34
35         j = joy_count();
36         gotoxy(0,9);
37         cprintf("Found %d Joysticks.", j);
38
39         for (i = 0; i < 4; ++i) {
40                 gotoxy(0, 16 + i);
41                 p = malloc(16);
42                 memcpy(p, "0123456789abcdef", 16);
43                 cprintf("alloc'ed at: %04p - %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", p,
44                         p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7],
45                         p[8],p[9],p[10],p[11],p[12],p[13],p[14],p[15]
46                 );
47         }
48         memcpy(p, main, 0);     /* test that a zero length doesn't copy 64K */
49
50         gotoxy(0,ysize - 1);
51         for (i = 0; i < xsize; ++i) {
52                 cputc('0' + i % 10);
53         }
54
55         gotoxy(0,ysize - 2 - ((256 + xsize) / xsize));
56         for (i = 0; i < xsize; ++i) {
57                 cputc('0' + i % 10);
58         }
59         for (i = 0; i < (xsize * 5); ++i) {
60                 cputc('#');
61         }
62         gotoxy(0,ysize - 1 - ((256 + xsize) / xsize));
63         for (i = 0; i < 256; ++i) {
64                 if ((i != '\n') && (i != '\r')) {
65                         cputc(i);
66                 }
67         }
68
69         i = get_tv();
70         gotoxy(30,0);
71         cputs("TV Mode: ");
72         switch(i) {
73             case TV_NTSC:
74                     cputs("NTSC");
75                     break;
76             case TV_PAL:
77                     cputs("PAL");
78                     break;
79             case TV_OTHER:
80                     cputs("OTHER");
81                     break;
82         }
83         cprintf(" %dx%d", xsize, ysize);
84
85         for(;;) {
86                 gotoxy(13,4);
87                 cprintf("%02x", datavar);
88                 gotoxy(13,5);
89                 cprintf("%02x", stackvar);
90                 ++datavar; ++stackvar;
91
92                 gotoxy(0,7);
93                 clk = clock();
94                 cprintf("clock: %08lx", clk);
95
96                 for (i = 0; i < 4; ++i) {
97                         gotoxy(0, 11 + i);
98                         j = joy_read (i);
99                         cprintf ("pad %d: %02x %-6s%-6s%-6s%-6s%-6s%-6s%-6s%-6s",
100                                 i, j,
101                                 JOY_UP(j)?     "  up  " : " ---- ",
102                                 JOY_DOWN(j)?   " down " : " ---- ",
103                                 JOY_LEFT(j)?   " left " : " ---- ",
104                                 JOY_RIGHT(j)?  "right " : " ---- ",
105                                 JOY_BTN_I(j)?  "btn I " : " ---- ",
106                                 JOY_BTN_II(j)? "btn II" : " ---- ",
107                                 JOY_SELECT(j)? "select" : " ---- ",
108                                 JOY_RUN(j)?    " run  " : " ---- ");
109                 }
110
111                 gotoxy(xsize - 10, 3);
112                 nn = (n >> 5) & 1;
113                 revers(nn);
114                 cputc(nn ? 'R' : ' ');
115                 cputs(" revers");
116                 revers(0);
117
118                 if ((n & 0x1f) == 0x00) {
119                         nn = p[15];
120                         ((char*)memmove(p + 1, p, 15))[-1] = nn;
121                         gotoxy(22, 19);
122                         cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
123                                 p[0],p[1],p[ 2],p[ 3],p[ 4],p[ 5],p[ 6],p[ 7],
124                                 p[8],p[9],p[10],p[11],p[12],p[13],p[14],p[15]);
125                 }
126
127                 waitvsync();
128                 ++n;
129         }
130 }