Include file restructure!

- include/ now has subdirs
- standard C headers will be in 'include/c'. Any program can include these
- all other header shall only be used by the kernel
This commit is contained in:
2024-05-07 21:01:50 +02:00
parent 41e0b93f52
commit 7826b9b7d4
20 changed files with 33 additions and 83 deletions
View File
+2
View File
@@ -1,6 +1,8 @@
#ifndef TIME_H
#define TIME_H
#include <stdint.h>
void sleep(uint32_t ms) {
__asm__ volatile ("int $0x80" : : "a"(0), "b"(ms));
}
+1 -1
View File
@@ -2,7 +2,7 @@
#define DRIVE_H
#include <stdint.h>
#include <system.h>
#include <ports/io.h>
#define PIO_PORT 0x1f0
#define READ_COMMAND 0x20
@@ -1,8 +1,8 @@
#ifndef ISRS_H
#define ISRS_H
#include <idt.h>
#include <screen.h>
#include <interrupt/idt.h>
#include <screen/text.h>
// Exception handlers
__attribute__ ((interrupt))
+1 -1
View File
@@ -2,7 +2,7 @@
#define IDT_H
#include <stdint.h>
#include <screen.h>
#include <screen/text.h>
#define TRAP_GATE_FLAGS 0x8f // P = 1, DPL = 00, S = 0, Type = 1111 (32-bit Trap gate)
#define INT_GATE_FLAGS 0x8e // P = 1, DPL = 00, S = 0, Type = 1110 (32-bit Int gate)
+1 -1
View File
@@ -1,7 +1,7 @@
#ifndef PIC_H
#define PIC_H
#include <system.h>
#include <ports/io.h>
// PIC I/O Ports
#define PIC_1_CMD 0x20
+3 -3
View File
@@ -2,9 +2,9 @@
#define TIMER_H
#include <stdint.h>
#include <idt.h>
#include <pic.h>
#include <screen.h>
#include <interrupt/idt.h>
#include <interrupt/pic.h>
#include <screen/text.h>
#define CHANNEL_0 0x40 // Offset it by 1 or 2 for ch1 and ch2
#define COMMAND 0x43
@@ -1,7 +1,7 @@
#ifndef SYSCALL_H
#define SYSCALL_H
#include <pit.h>
#include <interrupt/pit.h>
// System call count
#define MAX_SYSCALLS 2
@@ -1,10 +1,10 @@
#ifndef KEYBOARD_H
#define KEYBOARD_H
#include <idt.h>
#include <pic.h>
#include <system.h>
#include <screen.h>
#include <interrupt/idt.h>
#include <interrupt/pic.h>
#include <ports/io.h>
#include <screen/text.h>
#include <stdint.h>
#include <stdbool.h>
@@ -2,7 +2,7 @@
#define GRAPHICS_H
#include <stdint.h>
#include <screen.h>
#include <screen/text.h>
#include <math.h>
#define rgb(r,g,b) ( ((r) << 16 | (g) << 8 | (b)) & 0x00ffffff )
-47
View File
@@ -1,47 +0,0 @@
#ifndef TIMER_H
#define TIMER_H
#include <stdint.h>
#include <idt.h>
#include <pic.h>
#include <screen.h>
#define CHANNEL_0 0x40 // Offset it by 1 or 2 for ch1 and ch2
#define COMMAND 0x43
#define INPUT_CLK 1193182
static uint32_t* timerTicks = (uint32_t*)0x1000;
__attribute__ ((interrupt))
void timerHandler(intFrame_t* iframe) {
*timerTicks += 1;
// TODO: Improve the cursor rendering
if (*timerTicks % 500 == 0) putcAt(' ', cursor.x, cursor.y);
else if (*timerTicks % 250 == 0) putcAt(127, cursor.x, cursor.y);
sendPicEOI(0);
}
void setPitPhase(uint8_t channel, uint8_t opMode, uint16_t hz) {
if (channel > 2 || opMode > 7) { return; }
__asm__ volatile ("cli");
// Send command - bits 7-6 channel, 5-4 Access mode, 3-1 operating mode, 0 - Should be zero in x86
outb(COMMAND, ((channel << 6) | (3 << 4) | (opMode << 1)));
// Send frequency
uint16_t freq = INPUT_CLK / hz; // I solved an equation to figure this out
outb(CHANNEL_0 + channel, (uint8_t)freq);
outb(CHANNEL_0 + channel, (uint8_t)(freq >> 8));
__asm__ volatile ("sti");
}
void setupTimer() { // Sets up IRQ 0 - PIT
idtSetGate(0x20, timerHandler, INT_GATE_FLAGS);
unsetIrqMask(0);
setPitPhase(0, 2, 1000); // Default setup: 1000Hz - 1 tick per 1ms
}
#endif