nopOS is meant to be a long-term hobby project, whose main goal is to provide a fully usable and self-hosting enviroment on many different architectures and devices, ranging from (hopefully) simple 8-bit microcontrollers to fast and modern x86_64 CPUs, to really obscure server-specific ISAs.
nopOS is divided into its main three parts, named after their matching folders:
- nop: nopOS's kernel, written in GNU89-compliant C code.
- lib: An alternative (yet largely overlapping) standard library for both nop and nopOS's userspace.
- host: A complete suite of programs, ports and configuration files for nopOS's userspace.
TODO
- nop
- Device system (nop/device).
- Tree system (nop/tree).
- root
- pci
- net
- mbr
- gpt
- nilfs2
- fat12
- fat16
- fat32
- Event system (nop/event).
- Running unit system (nop/unit).
- Kernel call handling (with BSON).
- Make codebase SMP-friendly (sounds like a huge task to me, I have no idea how to...).
- Platform-agnostic drivers and tasks
- AHCI (nop/tasks/ahci).
- i386
- Entry point.
- PCI (nop/arch/i386/tasks/pci).
- Detect PCI presence instead of assuming it's there.
- Write support.
- Read support.
- IDT event triggering (nop/arch/i386/tasks/idt).
- VGA text mode (nop/arch/i386/tasks/text).
- Serial ports (nop/arch/i386/tasks/serial).
- x86_64
- Entry point.
- armv7/v8
- Entry point.
- aarch64
- Entry point.
- rv32* (RISC-V)
- Entry point.
- rv64* (RISC-V)
- Entry point.
- SH4A
- Entry point.
TODO
TODO
TODO
TODO