Bananymous
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
Bananymous
b67bbab083
Kernel: fix dump_stacktrace
2023-01-22 20:05:24 +02:00
Bananymous
026fdc251c
Kernel: Add kmalloc_eternal back
2023-01-22 03:10:48 +02:00
Bananymous
6ec4ba3dc9
Kernel: Move dump_backtrace() out of arch.
...
I discovered __builtin_frame_address()
2023-01-22 03:00:13 +02:00
Bananymous
491610db2c
Kernel: move GDT initialization to boot.S
2023-01-22 00:48:12 +02:00
Bananymous
fdbc04f29d
Kernel: kmalloc now uses the actual kernel end location
2023-01-21 22:40:23 +02:00
Bananymous
9088f7b305
Kernel: kmalloc prints addresses on panic
2023-01-21 22:29:44 +02:00
Bananymous
53a5ad3cf9
BAN: Function now properly forward arguments
2023-01-17 11:16:46 +02:00
Bananymous
7540fa0385
Kernel: Shell now 'properly' parses commandline
2023-01-16 20:09:22 +02:00
Bananymous
46e5b3f3d6
Kernel: Move GDT to its own namespace and cleanup
2023-01-16 15:24:10 +02:00
Bananymous
b46fa0d116
Kernel: Shell can now dump kmalloc info
2023-01-16 15:17:00 +02:00
Bananymous
8881c1e117
Kernel: Shell is no longer singleton
2023-01-16 15:16:39 +02:00
Bananymous
1545850be3
Kernel: Input callbacks use the new BAN::Function
2023-01-16 15:15:02 +02:00
Bananymous
689338b506
Kernel: kmalloc can now dump current memory usage
2023-01-13 17:42:19 +02:00
Bananymous
f547a788f2
Kernel: Add support for arrow keys in Shell
2023-01-13 15:07:24 +02:00
Bananymous
bf4b26d1fd
Kernel: kmalloc now returns nullptr if you try to allocate over kmalloc size
2023-01-13 15:04:06 +02:00
Bananymous
416a41745f
Kernel: Kernel::Panic now checks that TTY is initialized instead of VESA
2023-01-13 15:04:06 +02:00
Bananymous
af8d486893
Kenrel: TTY fix cursor position with ANSI escapes
2023-01-13 15:04:06 +02:00
Bananymous
d0aa938b35
Kernel: remove unused function from kmalloc
2023-01-13 00:03:10 +02:00
Bananymous
61bd9da8e0
BAN: Add [[nodiscard]] to BAN functions returning ErrorOr
2023-01-12 23:57:07 +02:00
Bananymous
087d14fbb7
Kenrel: Remove unnecessary print from kmalloc_initialize()
2023-01-12 13:24:41 +02:00
Bananymous
3dfe062de1
Kernel: Cleanup TTY code
2023-01-12 13:24:41 +02:00
Bananymous
8fd51fb47d
Kernel: Replace Paging{.h,.cpp} with better MMU{.h,.cpp}
2023-01-12 13:24:36 +02:00
Bananymous
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
Bananymous
7d45b3cbd6
Kernel: Rewrote kmalloc to be much simpler and allow alignment
2023-01-10 21:10:36 +02:00
Bananymous
6f9552d673
BAN: Add math to its own namespace
2023-01-10 19:11:27 +02:00
Bananymous
c6467b8ebc
Kernel: Multiboot data and kernel command lines are now global variables
2023-01-10 17:50:24 +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
086f0c7cf6
Kernel: Better error reporting from VESA and fix texmode rendering
2023-01-05 03:36:20 +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
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
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
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
620b836fc3
Kernel: VESA now somewhat handles Cursor in Graphics mode
2022-12-27 18:29:02 +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
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
64a5a28ff0
Kernel: Add time since boot to Shell
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
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
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
174daa3e02
Kernel: Keyboard event callback can now be registered later
2022-12-13 16:15:10 +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
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
79a2bccd21
Kernel: kfree now checks for nullptr
2022-12-13 00:53:19 +02:00
Bananymous
ddc28a8c0e
Kernel: Rename Printer to Formatter
2022-12-13 00:50:21 +02:00
Bananymous
03e7812cae
Kernel: Add basic ANSI support :)
2022-12-10 03:53:44 +02:00
Bananymous
862b32d735
Kernel: Improve kmalloc error messages
2022-12-10 01:08:01 +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
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
e998615253
Kernel: Move GDT and IDT files to architecture specific folder
2022-12-08 17:50:04 +02:00
Bananymous
b7a600c86d
Kernel: Keyboard is now handeled "properly"
2022-12-07 04:35:38 +02:00
Bananymous
4202c999fa
Kernel: IRQs are now working :)
2022-12-07 02:48:44 +02:00
Bananymous
c292ef5471
Improve IDT Kernel panic
2022-11-16 20:28:07 +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
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
Bananymous
9e933a5ec5
Add kernel panic function
2022-11-14 18:53:00 +02:00
Bananymous
b185ed4fd3
Libc is now written in C++
2022-11-14 00:31:24 +02:00
Bananymous
fd13f74bbf
Changed into higher half kernel
...
https://wiki.osdev.org/Higher_Half_x86_Bare_Bones
2022-11-13 02:03:20 +02:00
Bananymous
db656fe469
Implement Stack Smashing Protection
2022-11-12 23:46:33 +02:00
Bananymous
61609db228
Kernel is now in C++ :)
2022-11-12 21:30:26 +02:00
Bananymous
e6b4866ab0
Initial commit. We have a booting kernel
2022-11-12 21:04:47 +02:00