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