
Install prerequisites for the course, including Nazem, GTC, LTE, Kembu, and Camu, on Windows via Windows Subsystem for Linux 2, update sources, install with apt-get, and run make to verify.
We will keep following tradition and make our first Hello World program.
Develop a graphics module to separate graphics code, implementing a draw function for a single pixel and a rectangle, plus a clear screen function in rgb.
Integrate a bitmap font into the graphics module, wire the font data through the makefile, and render text on screen with bit masks and binary arithmetic.
Printing text 2 demonstrates fixing a typo, updating the shift each iteration, adjusting resolution and media mode, and planning a dynamic function to print strings of text.
Make the character drawing function modular and dynamic by enabling font, height, color, and position parameters, and adjust the function signature. The next lesson will add string printing capability.
Implement a DrawString function to render strings of characters efficiently, including RGB color scaling to 16-bit values, managing font height, offsets, newline handling, and rendering via a custom graphics library.
Define a new function to draw the mouse cursor using x, y, and color. Enforce screen bounds with resolution checks and update position via the mouse handler.
Improve the task system by replacing function pointers with a single function that uses a task id to manage dynamic tasks, paving the way for a window and button.
Teach how to add a close button to a window by drawing a circle, detecting clicks inside it, and implementing a close task function that closes the task.
Fix mouse possession issues by updating the graphics element with top priority and a no-cost task, eliminating flicker and ensuring reliable close behavior in the graphical OS.
Create a bouncing ball within a window, implementing edge collisions, updating position with delta x and delta y, and drawing a colored circle for a simple Pong-like game.
In this course, we will start from a blank file and end up with a toy Graphical operating system. The emphasis is on the word toy.
Our operating system is nowhere a competitor for windows, however, it is good enough for a proof of concept.
This will be a great addition to add to your CV to make you stand out from the crowd.
In this course you will:
- Build a simple toy Operating System that has Graphics support
- Implement mouse input: we will implement a simple mouse cursor.
- Implement keyboard input: we will implement support for the most popular keys.
- Implement a window system: we will implement a simple windowing system.
- Implement a simple task system: we will implement a very simple task system.
- Make a Bouncing Ball task: this will be the final lesson in which we make a Bouncing Ball task.
What is not covered in this course:
- Multithreading: This is an advanced topic and is not covered in this course. It is likely to be covered in future courses.
- Multiple processors support: This is an advanced topic and is not covered in this course. It is likely to be covered in future courses.
- File system: This is an advanced topic and is not covered in this course. It is likely to be covered in future courses.
- Sound system: This is an advanced topic and is not covered in this course. It is likely to be covered in future courses.