At this point we can increase the screen resolution to 640x480 4 bits-per-pixel and enhance the interface for user-applications to build more interesting software for the CustomOS.
It would be nice to be able to extend the CustomOS without relying on other operating systems to write additional software for it. For this I've added a text editor to the CustomOS. It can be used to write code. An additional built-in C-Code compiler can compile and run code. With both combined we can write, compile and run code from inside the CustomOS.
Some thoughts on enhancements: Better Graphics Drivers, font improvements, running user-space applications.
After trying out Rust and some experiments interfacing it with C we can move forward with the implementation of the graphical terminal.
To further enhance the CustomOS we need a shell. We can write it in the Rust programming language. Here are the first steps to get started.
Pure text-based input/output gets boring fast. This time around we'll add graphics.
Reading and writing to a disk for data persistency is a prerequisite for most applications. I'll be working on basic functionality to store data by reading and writing to disk.
So far we've read the state of the keyboard by actively polling it. A better method of reacting to keyboard events is by using interrupts.
For a Custom OS to be any kind of useful we need some means of interaction with the user. One way to interact with our custom OS is keyboard input. With the ability to print text on screen and get keyboard input from the user we can already build simple dialog systems.
Last time around we built the cross-compiler. With it we can now compile the barebones tutorial from the osdev-Forums. We can then boot this custom kernel safely in QEmu, a hypervisor, that emulates a computer CPU.
Inspired by the osdev-forums and the likes of TempleOS, as a challenge and to learn more about modern computer architectures, I'll give writing a tiny custom operating system from scratch a try. I'll be documenting the process in this multi-part series.