Welcome to the Mathis Homepage. this website exists to help document the library of code that makes up the Mathis Operating System.

Formatting

in order to help with help with readability there are 2 significant methods of formatting applied to the Mathis code base: code blocks and indentation inside symmetrically related code blocks. blocking code that is immediately related helps to understand the micro-algorithms that make each piece work. using indentation on the other hand helps expose recursive-like sequences where the inner block can only execute while the outer block is correct (such as locked regions).

Macros

Mathis implements a reasonably large collection of macros with varying purposes behind each one. while the vast majority of them exist to simplify general development some of them exist to assist with formatting: by using a uniform width in the instruction opcode it becomes easier to see each instruction as the instruction it is. these are simple instruction renames. the Macros page provides a selection from the Macros available in Mathis.

Getting the Boot

This collection of walkthroughs exposes each block of code and explains the purpose behind it within the Boot Sector and beyond ... all the way to the start of Intimidations' first Callback.

Getting to the Core

This collection of walkthroughs exposes each block of code required to start up the secondary processors starting just after "Getting the Boot" finishes.

The Services

Every Operating System needs to provide certain services that lay the foundation for the Environment. Mathis implements a collection of complex run time memory allocators known generally as Instigate, optimized delay generators (these go beyond the classic "Hobby" delay of a spin loop) known as Khron for Intimidation/Callback and Qhron for Anarque/Tasks. Mathis also implements disk services for ATA, ATAPI and Floppy access that simplify drive use to giving ORB a pair of addresses and a length for reading/write the disk (all three are byte-valued for uniformity).

Download