diff options
| author | Franklin Wei <frankhwei536@gmail.com> | 2015-03-01 13:05:04 -0500 |
|---|---|---|
| committer | Franklin Wei <frankhwei536@gmail.com> | 2015-03-01 13:05:04 -0500 |
| commit | 6e86a3abee2d9b2c03452cd62997c2152a3332aa (patch) | |
| tree | ef868a5a58b59fb0fbc215a4dd4367d5fcb4125e /kernel | |
| parent | d532ad93a42ea95460765d4527b3fb1e4544c154 (diff) | |
| download | kappa-6e86a3abee2d9b2c03452cd62997c2152a3332aa.zip kappa-6e86a3abee2d9b2c03452cd62997c2152a3332aa.tar.gz kappa-6e86a3abee2d9b2c03452cd62997c2152a3332aa.tar.bz2 kappa-6e86a3abee2d9b2c03452cd62997c2152a3332aa.tar.xz | |
lots of stuff
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/main.c | 16 | ||||
| -rw-r--r-- | kernel/paging.c | 4 |
2 files changed, 18 insertions, 2 deletions
diff --git a/kernel/main.c b/kernel/main.c index cdab037..9311359 100644 --- a/kernel/main.c +++ b/kernel/main.c @@ -256,6 +256,20 @@ void run_gfx_benchmark(void) printf("Resolution: %dx%dx%d\n", *gfx_width, *gfx_height, *gfx_bpp * 8); } +static void keyhandler(const struct ps2_keyevent *ev) +{ + if(ev->ascii) + { + if(ev->special_keys->ctrl) + { + putchar('^'); + putchar(toupper(ev->ascii)); + } + else + putchar(ev->ascii); + } +} + void main(struct multiboot_info_t *hdr, uint32_t magic) { bool gfx_status = boot(hdr, magic); @@ -263,6 +277,8 @@ void main(struct multiboot_info_t *hdr, uint32_t magic) printf("Hello, world!\n"); gfx_set_foreground(GFX_WHITE); + ps2kbd_set_handler(keyhandler); + while(1)asm("hlt"); //char *ptr = 0xA00000; diff --git a/kernel/paging.c b/kernel/paging.c index c9c7e94..9d748ab 100644 --- a/kernel/paging.c +++ b/kernel/paging.c @@ -53,8 +53,8 @@ void paging_init(void) kernel_directory[i] = PAGE_RW; } - /* identity map all 4GB */ - for(int i=0; i < 1024; ++i) + /* identity map all 4GB (and allocate all page tables) */ + for(int i = 0; i < 1024; ++i) kernel_directory[i] = (uint32_t)identity_map_table(i * 1024, PAGE_PRESENT | PAGE_RW) | PAGE_PRESENT | PAGE_RW; |