From fb64e3094a72efaf2e86879b5e0b33f3d35ce8c8 Mon Sep 17 00:00:00 2001 From: ChUrl Date: Wed, 7 Dec 2022 16:41:06 +0100 Subject: [PATCH] Add README from BSEos v1.4 --- README.md | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100755 README.md diff --git a/README.md b/README.md new file mode 100755 index 0000000..e1a267e --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +Important +====================================== +- This does not run in the latest "vanilla" C++ VM image, g++-multilib has to be installed extra + +Makefile +====================================== +- Added the -std=c++17 flag to enable better constexpr support. +- Removed optimizations as the system would crash with them. + The BlueScreen would show an empty callstack on crashes with -O2, so I guess the problem is the missing ebp or something like that. + +Changes +====================================== +- Removed the Input.h/Input.cc files +- Removed the Queue.h/Queue.cc/Chain.h files +- Many changes to the scheduler (strategy is still round robin): + - Merged dispatcher into the scheduler (removed Dispatch.h/Dispatch.cc) + - Scheduler no longer uses queue but vector + - Scheduler owns threads (no outside references) + - Threads are addressed by tid from the outside + - Retrieve threads when killing them + - Threads are deallocated when killed and not retrieved + - Scheduler manages blocked threads +- Simplified thread switching by storing registers on the stack (removed ThreadState.h, Thread.inc) + +Additions +====================================== +- Some stream manipulators for CGA_Stream (color) and OutStream (fixed width) +- Logging with serial port output +- Main menu to start demos +- A very basic system to broadcast keyboard events to threads +- Basic vector and iterator +- Basic unique_ptr +- Basic fixed size array (just a wrapper for C-style arrays) +- Basic dynamic string (heap allocated) +- Basic span + +Bugs +====================================== +- Can't exit the PCSPKdemo (bluescreen) +- After exiting the VBEdemo the paging isn't reactivated (so the pagefault bluescreen no longer works) +- The PreemptiveThreadDemo LoopThreads can't be exited, the demo can't be launched multiple times +- Tree Allocator (uses a red black tree to find best-fit blocks) crashes when freelist root is removed +- Can't restart the OS (bluescreen) +- Fast keyboard inputs sometimes trigger bluescreens +- Different combinations of demos also trigger bluescreens +- Other seemingly random bluescreens that are hard to pinpoint +- Key event management doesn't differentiate between press/type/release etc. +- Main menu doesn't work with multiple inputs (like holding a key) + +Other +====================================== +- Keyboard repeat rate and led functionality is missing +- Circle functionality in VESA mode is missing +- Singleton can't have a destructor, as C++ doesn't know how to deinitialize them after program exit. + This happens because we compile with very limited libraries so "atexit" to register destructors is missing. + I wanted to make the device/hardware classes (PCSPK, CPU etc) singleton because it doesn't make sense to have more than one.