Skip to content

charliegreen/moss

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 

Repository files navigation

moss

about

Moss is an i386 custom RTOS I'm writing as a hobby! :D I started writing it on 26 Jul 2013, and have been working on it on and off ever since. Thanks to the help from OSDev!

building

To build, you'll first need an i586 cross-compiler, and all of its handy doodads, in your PATH somewhere. You'll also need to install QEMU, or set up a similar virtual machine like Bochs, to run it (unless you want to boot on actual hardware, which I do not recommend; I'm still working out how to get it to fully boot on my laptop). The Makefile should take care of the rest for you.

to do

Shorter term:

  • Proper time and date (probably Epoch-style)
  • Proper handling of all keypresses, including multi-byte scancodes
  • Memory management
    • Paging (does it work yet?)
    • Dynamic allocation/freeing
  • General code cleanup
  • Figure out what the White Rectangle Bug is all about

Longer term:

  • Userspace
  • Multitasking
  • Filesystem
  • Command line

changelog

Moss v0.4 (current revision; unstable):

  • Rudimentary memory management
    • kmalloc() implemented as a allocation-by-placement-address pointer-incrementing system
    • various tools and such for determining memory layout
  • Paging code (4-KiB page size; non-PAE)
    • working (and helpful!) page-fault handler
  • Some functions helpful for debugging
  • Performance boosts everywhere and random minor bugfixes

Moss v0.3:

  • Complete rewrite of all existing code (except multiboot)
  • Removed Multiboot memory map reading compatability (to be added with memory management)
  • Working interrupt handlers
    • interrupt handler registration system
      • Debugging capabilities, with interrupt #1
    • Working IRQs
      • Working PIT (Programmable Interval Timer)
        • Working interval scheduling handler system
      • Rudimentary keyboard input
        • (probably buggy) Non-busy-loops when waiting for keypresses
    • CMOS RTC reading (still need sanity checks and such)

Moss v0.2:

  • Multiboot memory map reading compatability
  • Infrastructure for interrupt handlers
  • Miscellaneous cleanup

Moss v0.1:

  • VGA driver
    • scrolling
    • colors
    • newlines
  • integer-printing utility
  • status bar
  • actual booting code

conventions

  • variables are lowercase with underscores or camel case (variableName)
  • fields (global variables, when we're using C) begin with an underscore (_fieldName)
  • assembly functions begin with two underscores (__assemblyFunction)
  • functions follow the form filename_functionNameInCamelCase
  • macros follow the form FILENAME_MACRO_NAME
  • constants follow the form kConstantName

About

An i386 hobby operating system I'm writing! :D

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published