Commit Graph

95 Commits

Author SHA1 Message Date
390a747768 Kernel: Add prefs font for terminal output before file system 2023-02-23 01:22:50 +02:00
a4980acc88 Kernel: Fonts can now be parsed from the filesystem and set to terminal
We currently dont have a fallback font if we cannot get to filesystem
initialization, but that will come later. I can't test on real hardware
for this reason.
2023-02-22 22:29:31 +02:00
1bd8b0fe5c Kernel: Sleep now actually sleeps and allows idling 2023-02-19 18:52:25 +02:00
460fc3a29f Kernel: Start working on filesystem
We have a basic PATA driver (for reading) and gpt parser.
2023-02-16 20:00:31 +02:00
2161528cb6 Kernel: Shell is now launched as a capturing lambda 2023-02-02 23:27:51 +02:00
9b8de5025a All: rename every function from UpperCamelCase to snake_case
This was a mess since I didn't know which to use but now I decided
to go with snake_case :)
2023-02-01 21:05:44 +02:00
6a9d60a8fb Kernel: Implement somewhat functioning multithread support
This still uses only a single cpu, but we can now have 'parallelization'

This seems to work fine in qemu and bochs, but my own computer did not
like this when I last tried.

I have absolutely no idea how multithreading should actually be
implmemented and I just thought and implemented the most simple one I
could think of. This might not be in any way correct :D
2023-02-01 01:53:35 +02:00
9c31790359 Kernel: Add option to disable Serial output
This makes all debug output to appear on the TTY
2023-01-25 22:51:42 +02:00
c0bc002ac6 Kernel: Move debug printing to its own file
It didn't make sense that dprint was defined in Serial.h.
We also now dump dprint to tty if there is no serial and tty is initialized
2023-01-25 22:51:42 +02:00
ba53582f23 Kernel: Rewrite APIC and PIC more OOP friendly
x86_64 port is slowly coming together
2023-01-23 20:13:57 +02:00
1b9f7aa815 Kernel: Rewrite the whole VESA driver
We dont support vga text mode currently. I might add it later if needed.

I also removed mouse 'support' from Shell since it didn't do anything
and I didn't implement arbitary bitmap rendering to framebuffer
2023-01-23 13:21:53 +02:00
491610db2c Kernel: move GDT initialization to boot.S 2023-01-22 00:48:12 +02:00
46e5b3f3d6 Kernel: Move GDT to its own namespace and cleanup 2023-01-16 15:24:10 +02:00
8881c1e117 Kernel: Shell is no longer singleton 2023-01-16 15:16:39 +02:00
f547a788f2 Kernel: Add support for arrow keys in Shell 2023-01-13 15:07:24 +02:00
8fd51fb47d Kernel: Replace Paging{.h,.cpp} with better MMU{.h,.cpp} 2023-01-12 13:24:36 +02:00
64c57ea3d0 Kernel: Remove obsole CPUID::IsAvailable
This is now a harware requirement that is verified already in boot.S
2023-01-10 21:28:59 +02:00
c6467b8ebc Kernel: Multiboot data and kernel command lines are now global variables 2023-01-10 17:50:24 +02:00
efd8638a96 Kernel: Improve kernel panic message and rename it 'panic'->'Panic' 2023-01-09 21:57:03 +02:00
086f0c7cf6 Kernel: Better error reporting from VESA and fix texmode rendering 2023-01-05 03:36:20 +02:00
a12ddfa12a Kernel: Update PS/2 controller 2023-01-04 19:22:23 +02:00
ef0b2010e0 Kernel: Add basic PS/2 Mouse driver 2022-12-30 19:38:21 +02:00
06a4ef1d87 Kernel: Commandline parsing does not depend on kmalloc anymore 2022-12-28 04:17:46 +02:00
5d7a767f8b Kernel: Enable basic paging 2022-12-28 04:17:34 +02:00
3e8590687f Kernel: Cleanup code and move kmalloc initialization to later 2022-12-28 04:16:21 +02:00
d8fd6afd12 Kernel: Make TTY a class 2022-12-23 15:55:45 +02:00
3f7a61a4d2 Kernel: VESA driver has now second buffer for fast scrolling
This allows us to not read from video memory, since it was very slow

I also implemented fast path for graphics clearing and scrolling if bpp is 32
2022-12-20 14:02:44 +02:00
5e2680cade Kernel: You can now disable APIC from the grub commandline 2022-12-20 11:57:09 +02:00
0bdb01ee04 Kernel: Replace PIC with APIC
If APIC/IOAPIC is not found, we fallback to PIC

Interrupts don't seem to work on real hardware (?)
2022-12-19 11:46:25 +02:00
9274c9ee2f Kernel: Abstract TTY to use new VESA 2022-12-15 19:05:07 +02:00
711ba19a82 Kernel: Add basic Shell to test functionality 2022-12-13 21:34:50 +02:00
52c793bb5c Kernel/BAN: Make Time a struct in BAN and add formatter to it 2022-12-13 12:37:26 +02:00
68e88d9413 Kernel: Add clear() command public TTY API 2022-12-13 10:45:24 +02:00
e62a626b39 Kernel: Improve keyboard input by a lot
Seems to work on my 2 computerss
2022-12-13 10:45:06 +02:00
7ebe727a29 Kernel: Add RTC to get current time 2022-12-13 10:41:36 +02:00
03e7812cae Kernel: Add basic ANSI support :) 2022-12-10 03:53:44 +02:00
3d3f12bd30 Kernel: Add new generic Printer class
kprint is now just a #define to Printer::print<terminal_putc>.

This allows us to use same print formatting for serial output :)
2022-12-10 00:57:09 +02:00
817de9f359 Kernel: Properly handle finnish keyboard layout.
You can now type any basic ascii character from keyboard.
Multimedia keys are not yet handled.
2022-12-08 18:05:48 +02:00
4202c999fa Kernel: IRQs are now working :) 2022-12-07 02:48:44 +02:00
f2b45ba212 Add GDT and IDT 2022-11-16 19:49:09 +02:00
123382eace Fixes :) 2022-11-15 21:42:14 +02:00
d289916bc0 Changed back to lower half kernel, since im dump.
I dont see the benefit of higher half (and could not get multiboot info)
2022-11-15 00:38:33 +02:00
b185ed4fd3 Libc is now written in C++ 2022-11-14 00:31:24 +02:00
fd13f74bbf Changed into higher half kernel
https://wiki.osdev.org/Higher_Half_x86_Bare_Bones
2022-11-13 02:03:20 +02:00
61609db228 Kernel is now in C++ :) 2022-11-12 21:30:26 +02:00