X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fkmain.c;h=0ffc152bd71719a8a21284f543ae6e5d379fc345;hb=91fc6b749ad3a64c9a2686952eb30be517c6beb9;hp=f1533b237664d1ba23c93099faf17de1eef3c0fa;hpb=d1e8a437c1fab4535f82c4c214ec3330ac32e48d;p=bootcensus diff --git a/src/kmain.c b/src/kmain.c index f1533b2..0ffc152 100644 --- a/src/kmain.c +++ b/src/kmain.c @@ -1,11 +1,65 @@ +/* +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 "keyb.h" +#include "timer.h" #include "contty.h" +#include "video.h" + -static int foo = 42; +void logohack(void); void pcboot_main(void) { + init_segm(); + init_intr(); + kb_init(); con_init(); - printf("hello world: %d\n", foo); + /* initialize the timer */ + init_timer(); + + enable_intr(); + + printf("PCBoot kernel initialized\n"); + + for(;;) { + int c; + + halt_cpu(); + while((c = kb_getkey()) >= 0) { + if(c >= KB_F1 && c <= KB_F12) { + set_vga_mode(0x13); + logohack(); + set_vga_mode(3); + } + 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); + } + } }