# stevia This is a hobby project that aims to create a simple and lightweight operating system kernel. It is written in Assembly and C, and uses the GNU toolchain and Bochs emulator. The project features (or is hoping to feature): - A boot loader that loads the kernel from a floppy disk image - A kernel that implements basic functions, such as printing messages, handling interrupts, and managing memory - A shell that allows user input and execution of commands - A simple text editor that can create and edit files - A calculator that can perform arithmetic operations - (big maybe) micropython or some other language, cross compiling, etc... ## Installation To build and run this project, you need to have the following tools installed: - GNU Binutils - GNU GCC - GNU Make - NASM - Bochs (for testing, project might run on other virtuization/emulation platforms, I target the Pentium 3 Era with this project) To build the project, run `make` in the root directory. This will generate a floppy disk image named `stevia.img` that contains the boot loader and the kernel. To run the project, run `bochs -f bochsrc.txt` in the root directory. This will launch the Bochs emulator and load the floppy disk image. You should see the boot loader message, followed by the kernel message, and then the shell prompt. To exit the emulator, press `Ctrl+C` in the terminal where you launched Bochs. ## License This project is licensed under the MIT License. See the [LICENSE.md](^2^) file for details. ### mbr/mbr.s This file contains the code for a Master Boot Record (MBR) that loads the boot loader from a floppy disk image. It is written in Assembly and uses BIOS interrupts to read sectors from disk.[^note] ### vbr/vbr.s This file contains the code for a Volume Boot Record (VBR) that loads the boot loader from a FAT partition on disk. It is written in Assembly and uses BIOS interrupts to read sectors from disk.[^note] ### stage2/stage2.s This file contains the code for a second-stage boot loader that loads additional modules from disk. It is written in Assembly and uses BIOS interrupts to read sectors from disk.[^note] ### miniboot32/BOOT_386.s This file contains the code for a 32-bit boot loader that loads the kernel from a floppy disk image. It is written in Assembly.[^note] [^note]: **Note:** Please note that the assembly code is strictly targeting the Pentium 3 Katmai uArch, but it might run elsewhere. Your mileage may vary.