Commit Graph

780 Commits

Author SHA1 Message Date
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 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 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 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 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 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 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 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 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 2938c85c1a Kernel: Makefile formatting 2022-12-13 00:59:53 +02:00
Bananymous f6def7a747 Kernel: initialize every irq handler to nullptr 2022-12-13 00:57:48 +02:00
Bananymous 9c72f7255a Kernel: Add red colors to kernel panics 2022-12-13 00:57:13 +02:00
Bananymous 5f75479861 Kernel: zero initialize VGA_MEMORY and fix colors 2022-12-13 00:56:30 +02:00
Bananymous 79a2bccd21 Kernel: kfree now checks for nullptr 2022-12-13 00:53:19 +02:00
Bananymous 5494d8d2ac Kernel: We can now use destructors in global objects 2022-12-13 00:52:32 +02:00
Bananymous ddc28a8c0e Kernel: Rename Printer to Formatter 2022-12-13 00:50:21 +02:00
Bananymous e1a15a4989 Kernel: Add video mode request for bootloader 2022-12-10 03:55:24 +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 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 5ba7af2cf6 TTY: Treat tabs as spaces 2022-12-08 17:50:44 +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 998184e288 Kernel: TTY now handles '\b' 2022-12-07 04:35:02 +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 c17f61611e Improve buildsystem by making build directory
We now create build directory for kernel and libc so that source
directories are kept more clean.
2022-12-03 18:17:37 +02:00
Bananymous c292ef5471 Improve IDT Kernel panic 2022-11-16 20:28: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
Bananymous 3bc4d7d39b Rename .s extensions to .S 2022-11-15 09:25:18 +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