| |
| | 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'.
PC Booting 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.
PC LOADER.BIN 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.
Kernel 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).
| |