# Nanite
A Very small OS that can run on X86 Hardware.

Good luck figuring out the spagetti code i write... (sorry not sorry ;D)

Designed for older computers such as a Pentium (i586) Class Machine.
I however would recomend atleast a Pentium 2 Class System or higher.

## Features
- Support for the GNU GRUB 2 Bootloader and Multiboot V2
- Custom Theme for GRUB (Not Complete Yet!)
- Basic Memory Paging
- Support for Floppy Disk Drives (FDDs)
- Basic Serial (RS-232) Support
- Keyboard Input

Note: Kernel is currently under very heavy development.
All things are subject to change at any time.

## Building
Run `./build.sh` inside main directory of repo, however you may first need to run `make toolchain` i would DEFINITELY use more than one job (building GCC takes forever)

To write to a disk, use `./write.sh` WARNING: **is hard coded to /dev/sdb** (sorry i suck at scripting)

You could also run `make all` but the scripts a bit better tbh, it even automates starting QEMU.

### Build Requirements
- make
- gcc (or really any C compiler)
- nasm

#### Only Required to Build the Image

- grub2
- parted

## How is Testing Done
Testing is mostly done with QEMU These days, but I do sometimes pull out my Dell Latitude D610 to test on real hardware (for anyone wondering its completely maxed out. [2GB of ram Pentium M @ 2.23GHz])
I Also do some testing on a Dell Dimension 8110 (its at my desk 24/7 and has its serial port hooked to my desktop, lol)

## Thanks! 
Resources I've Used Throughout the Project
- Nanobyte's Youtube Channel: https://www.youtube.com/@nanobyte-dev
- OSDEV Wiki: https://wiki.osdev.org/Expanded_Main_Page
- BrokenThorn: http://www.brokenthorn.com

And thanks to some of my favorite bands for some nice ass music!
- King Gizzard and The Lizzard Wizzard
- Nine Inch Nails
- The Strokes

(and if your wondering, yes im a massive nerd about music)