15 #define printf __simple_printf 20 #include "propeller.h" 31 void startvga(
volatile void *parptr)
33 extern unsigned int _load_start_vga_cog[];
35 r = cognew(_load_start_vga_cog, parptr);
36 printf(
"started cog %d\n", r);
43 unsigned char framebuffer[ROWS*COLS];
46 scrollfill(
unsigned char color)
49 for (i = 0; i < ROWS; i++) {
50 memcpy(framebuffer, framebuffer+COLS, COLS*(ROWS-1));
51 memset(framebuffer+(COLS*(ROWS-1)), color, COLS);
57 hline(
unsigned char *frame,
int x,
int y,
int w,
unsigned char color)
60 frame += (y*COLS) + x;
63 for (i = 0; i < w; i++)
68 box(
unsigned char *frame,
int x,
int y,
int w,
int h,
unsigned char color)
73 for (i = 0; i < h; i++) {
74 hline(frame, x, y, w, color);
80 displayWait(
int frames)
83 while (frames-- > 0) {
84 frameNo = par.v.frameCounter;
85 do {}
while (frameNo == par.v.frameCounter);
92 unsigned int frequency, i, testval;
93 unsigned int clkfreq = _CLKFREQ;
98 printf(
"vga demo starting...\n");
99 par.v.displayBuffer = framebuffer;
100 par.v.directionState = (0xff << (8*PINGROUP));
101 par.v.videoState = 0x300000FF | (PINGROUP<<9);
102 testval = (25175000 + 1600) / 4;
104 for (i = 0; i < 32; i++) {
105 testval = testval << 1;
106 frequency = (frequency << 1) | (frequency >> 31);
107 if (testval >= clkfreq) {
112 par.v.frequencyState = frequency;
116 memset(framebuffer, Grey, ROWS*COLS);
130 color = rand() % 256;
131 box(framebuffer, x, y, w, h, color);
135 color = rand() % 256;
136 box(framebuffer, x, y, 1, 1, color);