|This document is written largely in note form at this moment in time.|
Quick Overview on Naming
Although this system is called MDOS (Multi-tasking Disk Operating System), and is aimed at embedded systems of all sizes; the PC (and other platforms) have a 'user' build called 'Adelian'. This 'user' build is the full MDOS system with a GUI (windowed) interface.
The name 'Adelian' is derived from the name 'Adele Leanne'.
To boot MDOS on a PC type computer, the standard method of booting is used.
An inserted floppy disk contains a suitable boot sector, which in this case will scan the entire root directory for a file called 'LOADER.BIN'. This file may be fragmented and reside anywhere in the data area of the floppy. Quite a clever boot loader compared to most - especially as it fits into one 512byte sector which also includes all disk geometry information!
This is coded in heavily optimised 8086 assembler for space reasons.
This is a small file which resides in the root directory, whos function is to load the kernel and all main initial tasks. The kernel and system tasks all reside in the 'SYSTEM' subdirectory. Once loading of main tasks has completed, a switch to protected mode is made and control is given to the kernel.
This is coded in ANSI C, to allow easy porting to other CPU/platforms.
The kernel, is actually a miniscule task switcher (micro-kernel) with essential primitives, which at the time of writing is under 16KBytes on PC systems.
This is coded in standard ANSI C, with small assembler sections where necessary, and LINT checked to MISRA standards.
With the exception of any assmebler code which needs to be present for differing processors, the entire kernel is written in standard ANSI C, to allow multi-targetting.
Main System Tasks
The main system tasks depend on the hardware architecture of the hosting platform. On PCs, the main startup tasks are as follows :
CPU - CPU control
Memory - Memory control and mapping
Platform - Platform specific APIs
Watchdog - Watchdog handler
Utils - General purpose utilities
StringUtils - Low level string utilities
ANSIC - ANSI C Library
SystemSettings - Startup settings
SystemInfo - Information about platform
Variables - System variable handler
RTC - Real Time Clock driver
DMA - DMA subsystem driver
FloppyDisc - Floppy disc driver
ATA - Raw ATA driver
ATAPI - ATA packet interface driver
SCSI - SCSI command driver
SCSIDisc - Handle SCSI-type mass storage
BlockDriver - Multiplexor and caching system for block based file systems
FSUtils - General purpose file system support
Time - Time and date APIs
FATFS - FAT file system handler
FileSystem - File system muliplexor with standard file system APIs
TaskManager - Mid-level task management system
Startup - Optionally starts the desktop GUI etc
On systems other than PCs (eg. ARM etc), the floppy and ATA drivers would be replaced with a different block device driver, such as MMC or SCSI.
Other Inbuilt Tasks/Modules/Libraries
Note that tasks, libraries and drivers are all actually tasks!
MDOS has a multitude of tasks covering UI to encryption. New tasks are constantly being added where needed or even just thought to be usefull!
All tasks are written in standard ANSI C and LINT checked to MIRSA standards, with some tasks including small amounts of assembler where needed (for performance reasons on lesser processors).