diff options
| author | Aleksa Vučković <aleksav013@gmail.com> | 2022-01-21 21:44:28 +0100 |
|---|---|---|
| committer | Aleksa Vučković <aleksav013@gmail.com> | 2022-01-21 23:24:55 +0100 |
| commit | a914c37365967afaf3148293a857c36af6f94ecb (patch) | |
| tree | b7086b0b0b6e4bf427210fcfd31c7745920a73a5 /src/c | |
| parent | ed84017353c6fc9421b223ff6ec62f8d881d8098 (diff) | |
Separating assembly, moving #defines to .h & cleaning Makefile
Diffstat (limited to 'src/c')
| -rw-r--r-- | src/c/idt.c | 1 | ||||
| -rw-r--r-- | src/c/irq_handler.c | 10 | ||||
| -rw-r--r-- | src/c/kernel.c | 12 | ||||
| -rw-r--r-- | src/c/keyboard.c | 24 | ||||
| -rw-r--r-- | src/c/timer.c | 10 |
5 files changed, 9 insertions, 48 deletions
diff --git a/src/c/idt.c b/src/c/idt.c index c27743f..5a84791 100644 --- a/src/c/idt.c +++ b/src/c/idt.c @@ -3,7 +3,6 @@ #include<source/irq.h> #include<asm.h> - extern void load_idt(struct idt_pointer *idtp); struct idt_entry idt[256]; diff --git a/src/c/irq_handler.c b/src/c/irq_handler.c index 797639d..b687148 100644 --- a/src/c/irq_handler.c +++ b/src/c/irq_handler.c @@ -2,16 +2,6 @@ #include<source/stdio.h> #include<asm.h> -#define INTERRUPT_GATE_32 0x8e - -#define KERNEL_CODE 0x08 -#define KERNEL_DATA 0x10 - -#define PIC1_COMMAND_PORT 0x20 -#define PIC1_DATA_PORT 0x21 -#define PIC2_COMMAND_PORT 0xA0 -#define PIC2_DATA_PORT 0xA1 - void irq0_handler(void) { ioport_out(PIC1_COMMAND_PORT, 0x20); diff --git a/src/c/kernel.c b/src/c/kernel.c index 1142a23..72b2516 100644 --- a/src/c/kernel.c +++ b/src/c/kernel.c @@ -1,12 +1,12 @@ #include<source/kernel.h> +#include<source/paging.h> +#include<source/idt.h> +#include<source/timer.h> +#include<source/keyboard.h> #include<source/heap.h> +#include<source/vga.h> +#include<source/tty.h> -void terminal_initialize(void); -void init_idt_table(void); -void init_keyboard(void); -void init_timer(uint32_t frequency); -void prompt(void); -void set_paging(void); void kernel_main(void) { diff --git a/src/c/keyboard.c b/src/c/keyboard.c index 8af463b..a95d399 100644 --- a/src/c/keyboard.c +++ b/src/c/keyboard.c @@ -2,37 +2,19 @@ #include<types.h> #include<asm.h> #include<source/stdio.h> +#include<source/keymap.h> +#include<source/vga.h> +#include<source/tty.h> -#define BUFFER_SIZE 200 -#define BUFFER_LOG 200 char buffer[BUFFER_LOG][BUFFER_SIZE]; size_t buffer_size[BUFFER_LOG]; size_t buffer_current=0; size_t buffer_all=0; size_t buffer_index=0; -#define PIC1_COMMAND_PORT 0x20 -#define PIC1_DATA_PORT 0x21 -#define PIC2_COMMAND_PORT 0xA0 -#define PIC2_DATA_PORT 0xA1 -// IO Ports for Keyboard -#define KEYBOARD_DATA_PORT 0x60 -#define KEYBOARD_STATUS_PORT 0x64 - -void previous_field(void); -void tty(char *buffer); -void prompt(void); -void clear(void); -void us_en(char keymap[]); -void us_en_shift(char keymap[]); - char charcode[256]; char shift_charcode[256]; bool ispressed[128]; -#define lshift 0x2A -#define rshift 0x36 -#define lctrl 0x1D -#define rctrl 0x1D void init_keyboard() { diff --git a/src/c/timer.c b/src/c/timer.c index 412e443..3a8f159 100644 --- a/src/c/timer.c +++ b/src/c/timer.c @@ -13,7 +13,6 @@ void timer_handler(void) tick++; if(tick==TICKS_PER_SECOND) { - //printf("%d seconds passed\n",time); tick=0; time++; } @@ -24,21 +23,12 @@ void timer_handler(void) void init_timer(uint32_t frequency) { - // Firstly, register our timer callback. - - // The value we send to the PIT is the value to divide it's input clock - // (1193180 Hz) by, to get our required frequency. Important to note is - // that the divisor must be small enough to fit into 16-bits. uint32_t divisor = 1193180 / frequency; - - // Send the command byte. ioport_out(0x43, 0x36); - // Divisor has to be sent byte-wise, so split here into upper/lower bytes. uint8_t l = (uint8_t)(divisor & 0xFF); uint8_t h = (uint8_t)( (divisor>>8) & 0xFF ); - // Send the frequency divisor. ioport_out(0x40, l); ioport_out(0x40, h); } |
