SymbOS

SymbOS is a free multitasking operating system for Z80 based 8-bit computer systems. At present it is available for the computers of the Amstrad CPC as well as for all MSX models starting from the MSX2 standard. Contrary to early 8-bit operating systems it is based on a Micro Kernel, which provides pre-emptive and priority oriented multitasking and manages RAM memory with a size of up to 576KB. SymbOS contains a MS-Windows like GUI, supports hard discs with a capacity of up to 128GB and can already be booted on an unexpanded Amstrad CPC-6128 or a 128K-MSX2.
Background
Even the Z80 8-bit CPU is able to run a pre-emptive multitasking environment. Missing mechanisms like memory protection, which are often called as a condition for multitasking, are system stability issues only. The MP/M operating system already proved, that multitasking on Z80 computers is possible, but it was not executable on home computers.
While the MOS 6502 can not move the stack, the Z80 can freely replace it to any position in the memory, which is more or less a condition for pre-emptive multitasking. The existance of an alternative register set accelerates the content switching between the tasks dramatically. The restriction of Z80 systems to 64KB can be solved with the so-called bank switching method. In this way computers like the Amstrad CPC and PCW, MSX, Enterprise or Sam Coupe are able to access hundred or thousand of KBs.
Kernel
SymbOS includes a micro kernel, which takes over the fundamental tasks of an operating system. They are subdivided into the task management, the memory management, the banking management and the messaging.
Task management
For the task management a combination of pre-emptive and cooperative multitasking has been choosed, which makes different task priorities possible. Pre-emptive means that tasks are interrupted after a certain amount of time by the operating system, in order to share the CPU time with other tasks. Cooperatively means, that a task stops using CPU time by itself. It does it, if it finished its current job or is waiting for a certain event. Because of this combination it is possible to assign priorities. Tasks with a low priority receive CPU time only if all tasks with higher priorities are not currently working.
Memory and banking management
The memory management divides the entire RAM into small 256 byte blocks, which can be assigned dynamically. Applications are always running in a secondary 64K ram bank, where no memory space is occupied by the operating system or the video memory. That makes it possible to reserve up to 63KB in one piece.
The banking management makes sure, that the system is able to administer memory with a size of more than half a megabyte even with the fact that the Z80 CPU has only a 16bit address bus. It makes transparent access to memory and functions placed in other 64KB banks possible.
Messaging
The communication between different tasks and the operating system usually does not take place via "Calls", but is done via "Messages". This is necessarily inside a multitasking environment to avoid organisation problems with the stack, global variables and shared system resources.
Graphical user interface
The GUI of SymbOS works completely object-oriented. Regarding the look and feel it is designed like MS windows. It contains the well-known task bar with the clock and the "start" menu and can open a big amount of windows, which can be shifted, resized and scrolled. As the complete system is written in optimized assembler, the speed of the GUI is only insignificantly under this of current systems and even faster than the original Amiga workbench.
The complete content of a window is defined with "controls". These are e.g. slider, check boxes, text lines, buttons or graphics. The background or not visible areas of a window don't need to be saved in a bit-map buffer. If an area is restored on the display, its content will just be redrawed. Because of this the SymbOS GUI works much more memory-friendlier than most other 8Bit GUIs.
File system management
SymbOS supports the file systems CP/M, AMSDOS, FAT12, FAT16 and FAT32 on all platforms. With the last one SymbOS is able to address mass storage devices with a capacity of up to 128GB. Also the ability to administer files with a size of up to 2GB is uncommon for an 8-bit system. Because of the FAT support data exchange with other computers is quite easy, as most 32 and 64 bit operating systems do support the three FAT file systems.
Applications
There are several standard applications available for SymbOS, which have beend designed as clones of well known windows and macintosh programs. As an example these are applications like the Norton Commander (SymCommander), Quick Time (SymPlay), WinAmp (SymAmp) or Minesweeper.
Porting and cross platform ability
SymbOS has been developed originally for the Amstrad CPC. Because of the modular structure with the strict separation of general and hardware components the porting to other Z80-based systems is quite easy.
The MSX computers starting with the MSX2 standard are supported since summer 2006. Versions for the Enterprise 128, the Joyce PCW and the SAM Coupe are possible, too, as they fulfill the requirements for SymbOS.
By keeping a basic condition for an operating system, the strict separation of hardware and application software by the supply of an intermediate layer, SymbOS applications run platform-independently on each computer and do not have to be adapted for a special system. Exceptions are applications, which access directly the hardware.
Motivation
SymbOS was originally started as an experiment to find out, how far it is possible to implement a multitasking based operating system with a windows GUI on an 8-bit computer of 1985. Also GEOS contributed to the motivation, but the structure and features of SymbOS aren't similiar to these of these systems. The release in 2006 proved, that such a "mini windows" is possible on a 20 years old home computer only with quantitative limitations. SymbOS belongs to the largest retro computing software projects of the last years. One of the goal of the project is to copy in combination with various hardware extensions a complete PC job.