selectors, descriptors, more interrupt init
[3sys] / sys1 / kern / src / main.c
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdint.h>
4 #include "vga.h"
5 #include "mem.h"
6 #include "intr.h"
7
8 void drawtext(int x, int y, const char *s)
9 {
10         while(*s) {
11                 vga_drawchar(x++, y, *s++);
12         }
13 }
14
15 void kmain(void)
16 {
17         int i, row;
18         int line, scroll;
19         char buf[64];
20         char twirl[] = "-\\|/";
21
22         vga_reset();
23
24         mem_init();
25         intr_init();
26
27         line = 0;
28         for(;;) {
29                 scroll = line <= 24 ? 0 : line - 24;
30                 row = line <= 24 ? line : 24;
31                 sprintf(buf, "line %d  (scroll %d [%d])", line, scroll, scroll % 25);
32                 vga_scroll(scroll);
33                 if(scroll) {
34                         vga_clearline(24);
35                 }
36                 vga_setcolor(VGA_YELLOW | VGA_BRIGHT, VGA_BLACK);
37                 drawtext(line & 7, row, buf);
38
39                 for(i=0; i<65536 * 16; i++) {
40                         buf[0] = twirl[(i >> 15) & 3];
41                         buf[1] = 0;
42                         vga_setcolor(VGA_WHITE, VGA_BLACK);
43                         drawtext(50, row, buf);
44                 }
45                 line++;
46         }
47 }