Commit Graph

55 Commits

Author SHA1 Message Date
Bananymous
979a5960e4 Kernel: We don't use floating point arithemtic anymore in kernel 2023-01-10 11:10:17 +02:00
Bananymous
efd8638a96 Kernel: Improve kernel panic message and rename it 'panic'->'Panic' 2023-01-09 21:57:03 +02:00
Bananymous
531f470132 Kernel: Add helper to map pages with base address and size
This allows us to easily map enough pages for buffer with known size

VESA driver can now allocate enough memory for whole framebuffer if it
doesn't fit in a single page (1920x1080 for example)
2023-01-05 03:44:41 +02:00
Bananymous
d6623def32 Kernel: Paging uses now PAE with 2 MiB pages 2023-01-05 02:00:18 +02:00
Bananymous
fcec793873 Kernel: Shell now renders a mouse
PS/2 mouse doesn't seem to work with PIC.
2022-12-30 20:48:15 +02:00
Bananymous
9d9a6b2fec Kernel: VESA can now print 8x16 bitmaps 2022-12-30 20:47:25 +02:00
Bananymous
fc05642b74 Kernel: Make Render from buffer public tty function 2022-12-30 19:57:44 +02:00
Bananymous
ef0b2010e0 Kernel: Add basic PS/2 Mouse driver 2022-12-30 19:38:21 +02:00
Bananymous
3c92aa45fb Kernel: 'cpuinfo' command in shell now shows wheter you are running on 64-bit cpu 2022-12-28 19:46:37 +02:00
Bananymous
5d7a767f8b Kernel: Enable basic paging 2022-12-28 04:17:34 +02:00
Bananymous
fd4fdffd46 BAN::Formatter now takes putc like function as a parameter
This allows us to use capturing lambdas as a putc like function
2022-12-27 19:55:07 +02:00
Bananymous
620b836fc3 Kernel: VESA now somewhat handles Cursor in Graphics mode 2022-12-27 18:29:02 +02:00
Bananymous
5ae1fc58e9 Kernel: Clean code in tty and vesa 2022-12-27 17:22:45 +02:00
Bananymous
2535eb1c4c Kernel: TTY now handles keeping terminal buffer
VESA Driver cannot scroll anymore, this is handled by tty
2022-12-27 17:06:33 +02:00
Bananymous
d8fd6afd12 Kernel: Make TTY a class 2022-12-23 15:55:45 +02:00
Bananymous
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
Bananymous
5e2680cade Kernel: You can now disable APIC from the grub commandline 2022-12-20 11:57:09 +02:00
Bananymous
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
Bananymous
f244728d33 Kernel: Add unicode support 2022-12-16 03:55:13 +02:00
Bananymous
6fe0d04f07 Kernel: Implement basic VESA Graphics mode driver
We now support VESA Graphics mode with some bitmap fonts
2022-12-16 00:47:03 +02:00
Bananymous
9274c9ee2f Kernel: Abstract TTY to use new VESA 2022-12-15 19:05:07 +02:00
Bananymous
930661619b Kernel: Add more functionality to Shell
commands 'time', 'cpuid', 'random'
2022-12-15 17:29:35 +02:00
Bananymous
a2d38af37a Kernel: Implement 'cpuid' and enumerations for features 2022-12-15 17:28:54 +02:00
Bananymous
7bddcafadd Kernel: Remove a lot of empty lines 2022-12-14 21:17:46 +02:00
Bananymous
711ba19a82 Kernel: Add basic Shell to test functionality 2022-12-13 21:34:50 +02:00
Bananymous
833a82c8d1 Kernel: Fix keymay brace/bracket to correct way around 2022-12-13 21:10:25 +02:00
Bananymous
fd6e0ed0f7 Kernel: debug printing now show system time correctly 2022-12-13 20:44:52 +02:00
Bananymous
174daa3e02 Kernel: Keyboard event callback can now be registered later 2022-12-13 16:15:10 +02:00
Bananymous
52c793bb5c Kernel/BAN: Make Time a struct in BAN and add formatter to it 2022-12-13 12:37:26 +02:00
Bananymous
334abe6b27 Kernel: lol 2022-12-13 12:12:15 +02:00
Bananymous
68e88d9413 Kernel: Add clear() command public TTY API 2022-12-13 10:45:24 +02:00
Bananymous
e62a626b39 Kernel: Improve keyboard input by a lot
Seems to work on my 2 computerss
2022-12-13 10:45:06 +02:00
Bananymous
7ebe727a29 Kernel: Add RTC to get current time 2022-12-13 10:41:36 +02:00
Bananymous
835430e7b0 BAN: Move Formatter to new project called BAN
I also implemented basic ErrorOr and Queue
2022-12-13 10:39:57 +02:00
Bananymous
1283e74ee6 Kernel: Formatter now supports fill to length 2022-12-13 01:16:49 +02:00
Bananymous
9c72f7255a Kernel: Add red colors to kernel panics 2022-12-13 00:57:13 +02:00
Bananymous
ddc28a8c0e Kernel: Rename Printer to Formatter 2022-12-13 00:50:21 +02:00
Bananymous
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
Bananymous
26f1ebe26f Kernel: Implement very basic, but functional kmalloc/kfree 2022-12-09 00:26:24 +02:00
Bananymous
ef56f9a239 Kernel: Add floating point printing to kprint 2022-12-09 00:22:47 +02:00
Bananymous
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
Bananymous
4202c999fa Kernel: IRQs are now working :) 2022-12-07 02:48:44 +02:00
Bananymous
343dda629c Kernel panic now halts the system 2022-12-03 18:19:07 +02:00
Bananymous
4ebd0e5c36 Fix negative number printing in kprint 2022-11-16 20:27:22 +02:00
Bananymous
20f7c18988 kmalloc does not zero initialize kernel memory 2022-11-16 19:51:45 +02:00
Bananymous
f2b45ba212 Add GDT and IDT 2022-11-16 19:49:09 +02:00
Bananymous
b500a8a7ed kmalloc 2022-11-16 19:48:36 +02:00
Bananymous
550ecbc951 Kernel panic uses kprint with parameters 2022-11-16 19:47:19 +02:00
Bananymous
123382eace Fixes :) 2022-11-15 21:42:14 +02:00
Bananymous
7c06c75d6c Move cursor in terminal when writing to it 2022-11-15 09:26:14 +02:00