| | 














| | 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 (nano-kernel), which at the time of writing is just under 8KBytes 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 :
Utils - General purpose utilities StrUtils - Low level string utilities ANSIC - ANSI C Library Settings - Startup settings Variable - System variable handler DMA - DMA subsystem driver RTC - Real Time Clock driver Floppy - Floppy disc driver ATA - ATA hard disc driver RAMDisc - Ram disc driver BlockDrv - Multiplexor and caching system for block based file systems FSUtils - General purpose file system support FATFS - FAT file system handler FileSys - File system muliplexor with standard file system APIs TaskMgr - 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).
| |