Skip to content

dougvj/retros

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RetroS

A hobby operating system kernel targeting retro x86 hardware. RetroS is intended to eventually merge with the mybios project to provide a unified BIOS-to-OS stack for retro computing platforms.

Status

Work in progress. Currently boots on QEMU and Bochs with the following functionality:

  • Custom bootloader
  • Paging / MMU support
  • Device driver infrastructure with register specification tooling (regspecc)
  • Bus support: PCI enumeration, ACPI, IO port, MMIO
  • Block devices: ATA, partition table parsing
  • FAT filesystem (read)
  • VGA display output
  • Timer support (HPET, PIT)
  • Basic kernel memory allocator
  • ELF loading

Building

Requires an i386 cross-compiler (i386-elf-gcc / i386-elf-ld) or Clang/LLD:

git clone --recurse-submodules https://github.com/dougvj/retros.git
cd retros

# With cross-compiler
make

# With Clang
make CC=clang LD=ld.lld

The regspecc tool is included as a submodule under tools/regspec/ and is built automatically. It requires libyaml.

Project Structure

bootloader/   - Custom bootloader
src/
  arch/x86/   - x86-specific code (interrupts, MMU, linker script)
  dev/        - Device drivers and bus support
  fs/         - Filesystem implementations (FAT)
  krn/        - Kernel core (memory, output, scheduling)
  lib/        - Support libraries (string, ELF)
  mach/       - Machine-specific initialization (PC)
tools/        - Build tools (regspecc - register spec compiler)

License

Hobby project - no formal license yet.

About

Hobby OS kernel for retro x86 hardware

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •