Commit Graph

101 Commits

Author SHA1 Message Date
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
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 9fa3d891e9 BAN: Vector now has a copy constructor 2022-12-15 17:28:12 +02:00
Bananymous 7bddcafadd Kernel: Remove a lot of empty lines 2022-12-14 21:17:46 +02:00
Bananymous c21766760b Add strlen comparing back to StringView since it is not nullterminated 2022-12-13 22:45:51 +02:00
Bananymous 711ba19a82 Kernel: Add basic Shell to test functionality 2022-12-13 21:34:50 +02:00
Bananymous f8224e55b1 Kernel: Force strlen compilation so BAN can use it 2022-12-13 21:33:54 +02:00
Bananymous ced05ff5f2 BAN: use only memcmp when comparing string(view) with const char* 2022-12-13 21:32:51 +02:00
Bananymous 833a82c8d1 Kernel: Fix keymay brace/bracket to correct way around 2022-12-13 21:10:25 +02:00
Bananymous bf7a320050 BAN: Fix Time format printing 2022-12-13 21:04:09 +02:00
Bananymous 5345b6b8c3 BAN: overloaded operator== for more types 2022-12-13 20:55:09 +02:00
Bananymous fd6e0ed0f7 Kernel: debug printing now show system time correctly 2022-12-13 20:44:52 +02:00
Bananymous d806778a6d BAN: Formatter now passes arguments as const references
We used to take everything by value, since I wasn't sure if I wanted
to overload bigger types
2022-12-13 20:43:43 +02:00
Bananymous cb6dee9d91 BAN: Implement more basic functionality
String has more features
StringView was implemented
Basic move semantics are now working
Added file for forward declarations
2022-12-13 20:41:32 +02:00
Bananymous 174daa3e02 Kernel: Keyboard event callback can now be registered later 2022-12-13 16:15:10 +02:00
Bananymous 941238830e BAN: Now actually build libban :D 2022-12-13 16:13:38 +02:00
Bananymous 57b5e7ecf3 BAN: Add pragma once to String and Vector 2022-12-13 15:15:36 +02:00
Bananymous b42469efd7 BAN: Vector now has Back() and Front() helpers 2022-12-13 15:08:12 +02:00
Bananymous b491007eac BAN: Default constructed string is now nullterminated 2022-12-13 15:07:35 +02:00
Bananymous 07f61d9b82 BAN: Implement basic vector 2022-12-13 14:43:58 +02:00
Bananymous 171a33bbcd Kernel/BAN: Add weekday to Time structure and get it with RTC 2022-12-13 14:37:10 +02:00
Bananymous 00f230fcb2 BAN: Add basic String implementation 2022-12-13 14:37:10 +02:00
Bananymous 19307ce197 BAN: MUST() now returns the underlying value 2022-12-13 14:37:10 +02:00
Bananymous b49a873d54 BAN: Add allocator/deallocator references for kernel/userspace 2022-12-13 13:40:54 +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 3cda527987 BAN: Rename BAN::Formatter argument overload thing 2022-12-13 12:30:48 +02:00