SymbOS

From Wikipedia, the free encyclopedia

SymbOS
Company/
developer:
SymbiosiS
Source model: Closed source
Latest stable release: 1.0 / 04/30/2006
Kernel type: Microkernel
Default user interface: Graphical user interface
Working state: Current
Screen shot of the SymbOS Desktops on the Amstrad CPC
Enlarge
Screen shot of the SymbOS Desktops on the Amstrad CPC
Screen shot of the MSX version of SymbOS
Enlarge
Screen shot of the MSX version of SymbOS

SymbOS is a free multitasking operating system for Z80 based 8-bit computer systems. At present it is available for the Amstrad CPC series of computers, as well as for all MSX models starting from the MSX2 standard. Contrary to early 8-bit operating systems it is based on a microkernel, which provides pre-emptive and priority oriented multitasking and manages RAM memory with a size of up to 576 kB. SymbOS contains a MS-Windows like GUI, supports hard discs with a capacity of up to 128 GB and can already be booted on an unexpanded Amstrad CPC-6128 or a 128K-MSX2.

Contents

[edit] Background

Although only an 8-bit CPU, the Z80 is capable of running a pre-emptive multitasking operating system. Features such as memory protection, which the Z80 does not support, are not essential in such an OS. For example, AmigaOS does not feature memory protection either. The MP/M OS proved that multitasking on the Z80 CPU was possible, however it was not generally available for home computers.

While the MOS Technology 6502 cannot move the stack pointer, the Z80 can freely relocate it to any position in memory, which is more or less a requirement for pre-emptive multitasking. The existence of an alternative register set accelerates context switching between tasks dramatically. The restriction of Z80 system to a 64kB address space can be solved with bank switching. In this way computers like the Amstrad CPC and PCW, MSX, Enterprise or SAM Coupé are able to access hundreds or thousands of kilobytes of memory.

[edit] 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.

[edit] Task management

For the task management a combination of pre-emptive and cooperative multitasking was chosen, 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 that, if it's finished with it's current job or 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.

[edit] 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 64 kB RAM bank, where no memory space is occupied by the operating system or the video memory. That makes it possible to reserve up to 63 kB 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 16-bit address bus. It makes transparent access to memory and functions placed in other 64 kB banks possible.

[edit] 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.

[edit] Graphical user interface

The GUI of SymbOS works completely object-oriented. Regarding the look and feel it is designed like Microsoft Windows. It contains the well-known task bar with the clock and the "start" menu and can open up to 32 windows which can be moved, resized and scrolled. As the complete system is written in optimized assembly language, the GUI is relatively fast compared to modern systems, even Amiga's Intuition

Content of a window is defined with "controls" which are primitive GUI elements such as sliders, check boxes, text lines, buttons or graphics. The background or invisible areas of a window don't need to be saved in a separate bitmap buffer. If an area needs to be restored on the display, it's contents will be redrawn instead. This makes SymbOS GUI much more memory-friendly compared to most other 8-bit GUIs.

[edit] 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 128 GB. Also the ability to administer files with a size of up to 2 GB 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.

[edit] Applications

There are several standard applications available for SymbOS, which most resemble their well known Windows and MacOS counterparts. Few examples are Norton Commander (SymCommander), QuickTime (SymPlay), Winamp (SymAmp) or Minesweeper.

[edit] 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 Amstrad PCW and the SAM Coupé 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.

[edit] 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 similar 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.

[edit] See also

[edit] External links

In other languages