summaryrefslogtreecommitdiff
path: root/src/c
diff options
context:
space:
mode:
Diffstat (limited to 'src/c')
-rw-r--r--src/c/idt.c1
-rw-r--r--src/c/irq_handler.c10
-rw-r--r--src/c/kernel.c12
-rw-r--r--src/c/keyboard.c24
-rw-r--r--src/c/timer.c10
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);
}