X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fkmain.c;h=645c87e60491b24d4f7fee3312fa1f75ecb62c09;hb=a26564bc44eab32bea085e08fc83b7a1ab15f93f;hp=f1533b237664d1ba23c93099faf17de1eef3c0fa;hpb=d1e8a437c1fab4535f82c4c214ec3330ac32e48d;p=bootcensus diff --git a/src/kmain.c b/src/kmain.c index f1533b2..645c87e 100644 --- a/src/kmain.c +++ b/src/kmain.c @@ -1,11 +1,78 @@ +/* +pcboot - bootable PC demo/game kernel +Copyright (C) 2018 John Tsiombikas + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY, without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ #include +#include +#include +#include "segm.h" +#include "intr.h" +#include "mem.h" +#include "keyb.h" +#include "timer.h" #include "contty.h" +#include "video.h" +#include "vbetest.h" -static int foo = 42; + +void logohack(void); void pcboot_main(void) { + init_segm(); + init_intr(); + con_init(); + kb_init(); + + init_mem(); + + /* initialize the timer */ + init_timer(); + + enable_intr(); + + printf("PCBoot kernel initialized\n"); + + for(;;) { + int c; + + halt_cpu(); + while((c = kb_getkey()) >= 0) { + switch(c) { + case KB_F1: + set_vga_mode(0x13); + logohack(); + set_vga_mode(3); + break; - printf("hello world: %d\n", foo); + case KB_F2: + set_video_mode(640, 480, 16); + vbetest(); + set_vga_mode(3); + break; + } + if(isprint(c)) { + printf("key: %d '%c' \n", c, (char)c); + } else { + printf("key: %d \n", c); + } + } + if((nticks % 250) == 0) { + printf("ticks: %ld\r", nticks); + } + } }