Commit Graph

279 Commits

Author SHA1 Message Date
Bananymous 7d45b3cbd6 Kernel: Rewrote kmalloc to be much simpler and allow alignment 2023-01-10 21:10:36 +02:00
Bananymous d89b6aa9ce Kernel: Serial output now gives clickable links 2023-01-10 21:09:59 +02:00
Bananymous 6f9552d673 BAN: Add math to its own namespace 2023-01-10 19:11:27 +02:00
Bananymous 181478119e Kernel: Paging is now enabled by boot.S 2023-01-10 17:53:29 +02:00
Bananymous ee83cd3430 BAN: Implement basic static array 2023-01-10 17:52:00 +02:00
Bananymous 85068e27d6 BAN: BAN/Memory.h now provides the operator new and delete 2023-01-10 17:51:33 +02:00
Bananymous c6467b8ebc Kernel: Multiboot data and kernel command lines are now global variables 2023-01-10 17:50:24 +02:00
Bananymous 1a65ea977d BAN: Better ASSERT() 2023-01-10 17:43:18 +02:00
Bananymous 73cd08fa51 Kernel: Add script to run bochs debugger 2023-01-10 11:28:23 +02:00
Bananymous 5106552bfd Kernel: Serial output uses now "\r\n" as line endings 2023-01-10 11:24:30 +02:00
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 086f0c7cf6 Kernel: Better error reporting from VESA and fix texmode rendering 2023-01-05 03:36:20 +02:00
Bananymous d6623def32 Kernel: Paging uses now PAE with 2 MiB pages 2023-01-05 02:00:18 +02:00
Bananymous a12ddfa12a Kernel: Update PS/2 controller 2023-01-04 19:22:23 +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 f51ca4b642 Kernel: Rewrite IDT exception kernel panic message 2022-12-30 20:03:09 +02:00
Bananymous fc05642b74 Kernel: Make Render from buffer public tty function 2022-12-30 19:57:44 +02:00
Bananymous b60af90538 BAN: Add min, max and clamp 2022-12-30 19:52:16 +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 267367333e Kernel: Move paging code to a helper 2022-12-28 19:01:01 +02:00
Bananymous 06a4ef1d87 Kernel: Commandline parsing does not depend on kmalloc anymore 2022-12-28 04:17:46 +02:00
Bananymous 5d7a767f8b Kernel: Enable basic paging 2022-12-28 04:17:34 +02:00
Bananymous 3e8590687f Kernel: Cleanup code and move kmalloc initialization to later 2022-12-28 04:16:21 +02:00
Bananymous 2a65c5fd0f Kernel: Shell now actually prints to its TTY 2022-12-27 20:11:49 +02:00
Bananymous f0fd62c703 BAN: Strings can now be constructed using BAN::Formatter 2022-12-27 20:01:05 +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 98fc72b0d0 Kernel: kmalloc now aligns everything by alignof(max_align_t)
kmalloc properly aligns everything now.

I also changed so that kmalloc addresses are stored as uintptr_t
instead of void* or uint8_t* for easier arithemetic and less casting
2022-12-27 19:07:20 +02:00
Bananymous 9169020ad2 Kernel: Remove unnecessary checks from GraphicsPutCharAt() 2022-12-27 18:29:51 +02:00
Bananymous 620b836fc3 Kernel: VESA now somewhat handles Cursor in Graphics mode 2022-12-27 18:29:02 +02:00
Bananymous 2d46281c16 Kernel: TTY scroll is now done using memmove
This will be faster when memory functions will be optimized
2022-12-27 17:45:47 +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 f7eb85babd Kernel: IDT exceptions print better errors now 2022-12-23 15:56:10 +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 6732cabf20 BAN: StringView::Split now accepts a function
Original overload with char is not threadsafe anymore, but I don't
want to duplicate code :)
2022-12-20 11:50:32 +02:00
Bananymous 7ae00ac76e BAN: Vector now has a Has() function 2022-12-20 11:38:29 +02:00
Bananymous 4c559f50a4 BAN: StringView::Split() now precomputes number of elements
We dont have to resize vector on PushBack()'s if we reserve required size
2022-12-20 11:37:28 +02:00
Bananymous d5a068f90c BAN: String and StringView don't have to compute strlen for equality 2022-12-20 11:36:01 +02:00
Bananymous c82caacbaa Kernel: Cleanup APIC code
APIC seems to work on my main machine, but not on other one
2022-12-20 04:45:46 +02:00
Bananymous 64a5a28ff0 Kernel: Add time since boot to Shell 2022-12-19 11:46:38 +02:00
Bananymous c8866aa88b Kernel: Move GDT and IDT assembly to inline assembly 2022-12-19 11:46:38 +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 7efa5bfb75 Kernel: Shell backspace unicode detection cleanup 2022-12-16 11:53:59 +02:00
Bananymous f244728d33 Kernel: Add unicode support 2022-12-16 03:55:13 +02:00