rpi4-osdev/part12-wgt/samples/wgt46.c
2021-03-25 09:20:48 +00:00

77 lines
1.4 KiB
C

#include "include/wgt.h"
#include "include/mem.h"
// ######## REQUIRED FUNCTIONS ########
unsigned long state0 = 1000;
unsigned long state1 = 2000;
unsigned long rand(void)
{
unsigned long s1 = state0;
unsigned long s0 = state1;
state0 = s0;
s1 ^= s1 << 23;
s1 ^= s1 >> 17;
s1 ^= s0;
s1 ^= s0 >> 26;
state1 = s1;
return state0 + state1;
}
// ######## STUB FUNCTIONS ########
unsigned int kb = 0;
unsigned int kbhit(void) {
kb++;
return kb / 500;
}
void getch(void) {
wait_msec(0x500000);
kb = 0;
}
// ######## WGT EXAMPLES ########
int loopctr;
void timerctr(void)
{
loopctr++;
}
void wgt46()
{
short row;
set_clock_rate(get_max_clock());
mem_init();
vga256 (); /* Initializes WGT system */
wcls (vgapal[0]); /* Clear screen with color 0 */
row = 0; /* Start drawing at top row of screen */
loopctr = 0;
winittimer ();
wstarttimer (timerctr, 100); /* Set timer to 100th of a second accuracy */
do {
wsetcolor (vgapal[rand () % 256]); /* Pick a random color */
whline (0, 319, row++); /* Draw the line */
if (row > 199) /* Loop at end of screen */
row = 0;
} while (loopctr < 500);
/* As soon as we reach 500 hundredths of a second (5 secs), end the routine
and reset the video mode */
wstoptimer ();
wdonetimer ();
}
void main()
{
wgt46();
while (1);
}