# SymbOS

SymbOS es un sistema operativo multitarea para ordenadores de 8 bits basados en el Zilog Z80. En el momento actual está disponible para las gamas de ordenadores Amstrad CPC y CPC Plus, para los ordenadores MSX a partir del MSX-2 y para la mayoría de modelos de Amstrad PCW. Contrariamente a anteriores sistemas operativos de 8 bits, se basa en un Micronúcleo, que realiza multitarea preferente (preemptiva), orientada a prioridades y administra una memoria RAM de hasta 576 Kilobytes. SymbOS contiene un GUI similar al de Microsoft Windows, soporta unidades de disco no removibles de hasta 128 Gb y puede funcionar en un Amstrad CPC 6128, un Amstrad PCW o un MSX2 de 128 Kilobytes una vez arrancados.

## Detalles técnicos

La CPU Z80 de 8 Bits es capaz sin problemas de realizar una multitarea preferente. Mecanismos no presentes, como los que representan la protección del almacenamiento, que se consideran como una condición, son en realidad sólo un problema para la dependencia. Aunque no es ejecutable en ordenador domésticos, el sistema operativo MP/M ya probó que la multitarea en un Z80 es posible.
Contrariamente al MOS 6502 usado por ejemplo en el Commodore 64, la pila del Z80 puede situarse en cualquier lugar de la memoria, lo que es un requisito para la multitarea preferente. Un juego de registros secundarios alternativos aceleran además el intercambio de tareas dramáticamente. La restricción de los 64 Kilobytes ha sido superada por numerosos ordenadores con un Z80 usando en intercambio de bancos de memoria. Equipos como los Amstrad CPC, Amstrad PCW, MSX, Enterprise 128 o el SAM Coupé pueden direccionar decenas y cientos de Kilobytes.

## Núcleo

SymbOS tiene un micronúcleo, que se encarga del control de las tareas fundamentales del sistema operativo. Se divide en Gestión de Procesos, Gestión de Memoria y de Bancos de Memoria y Cola de Mensajes.

### Gestión de Procesos

Para la Gestión de Procesos se selecciona una combinación de Multitarea Cooperativa y Preferente, en función de la prioridad asignada al proceso. En la Preferente, el proceso es interrumpido cada cierto tiempo por el sistema, para asignar el tiempo de CPU a cada uno de los procesos existentes. en la Cooperativa, en contraste, es el proceso el que entrega voluntariamente su tiempo de CPU. Esto ocurre, por ejemplo, si acaba con sus tareas (por lo menos provisionales) o queda a la espera de cierto evento. Con esta combinación pueden asignarse las prioridades. Los procesos de baja prioridad reciben su tiempo, finalizan su tarea y entregan voluntariamente su tiempo de CPU que pasa a las tareas con un nivel más alto de prioridad.
A diferencia de otros sistemas más avanzados tiene límites en cuanto al número de procesos y no permite más de 32 procesos y 24 aplicaciones (las cuales no pueden ocupar más de 63KB).

### Gestión de Memoria y de Bancos de Memoria

La Gestión de Memoria divide toda la RAM en bloques consecutivos de 256 Bytes, que se asignarán dinámicamente. La lista de asignaciones se sitúa en un banco secundario de 64 Kilobytes, para que no ocupe espacio del sistema operativo o la memoria de pantalla (en los Amstrad CPC esa memoria es parte de las 64 Kilobytes gestionados directamente por el Zilog Z80, mientras que en los MSX está asignada al chip VDP sin ocupar las direcciones de memoria del Z80). De este modo se puede asignar hasta 63 Kilobytes, que se corresponden casi al área entera de direccionamiento del Z80. La Gestión de Bancos de Memoria utiliza el bus de direcciones de 16 Bits de la CPU, conmutándole de forma transparente bancos de 16 Kilobytes hasta un total de 1 Megabyte.

### Cola de Mensajes

La comunicación entre los procesos individuales y el sistema operativo no ocurre generalmente mediante llamadas, sino mediante una pila de mensajes que son gestionados por el sistema. Esto es necesario en un entorno multitarea, pues si no la llamadas simultáneas de los diferentes procesos y su intento de acceso simultáneo a los recursos acabaría produciendo un desbordamiento de pila con la sobreescritura de variables públicas y locales. De este modo es el sistema quien se encarga de gestionar las comunicaciones entre los diferentes procesos.

## Entorno gráfico de usuario

El GUI de SymbOS está totalmente orientado a objeto, con influencia de Windows como por ejemplo el menú Start. El sistema operativo está escrito por completo en lenguaje ensamblador optimizado, con lo que la velocidad del GUI es rápida (excede, por ejemplo, a la velocidad de la versión inicial del Amiga Workbench). El sistema no permite ventanas ilimitadas mientras haya memoria sino que está limitado a 32 ventanas.
Todo el contenido de las ventanas individuales se define totalmente con “controles”. Estos son, por ejemplo, deslizador, checkbox, cajas de texto, Botones o Gráficos. Cuando una ventana del fondo se trae a prime plano todo su contenido se redibuja.

## Sistema de Ficheros

SymbOS soporta los sistemas de ficheros CP/M, AMSDOS, FAT12, FAT16 y FAT32. Con este último SymbOS puede gestionar sistemas de almacenamiento masivo de datos de hasta 128 GB. La capacidad de gestión tradicional de un sistema de archivos de 8 bits no suele exceder de los 2GB. El intercambio de datos con otras computadoras se simplifica mucho con la ayuda de FAT, pues es soportada por los actuales sistemas operativos de 32 y 64 bits.

## Aplicaciones

Desde la beta de SymbOS de primavera de 2006 están disponibles diferentes clones de aplicaciones conocidas de Windows y Mac OS, como SymCommander (similar al Norton Commander), Buscaminas, SymPlay (reproductor de QuickTime), SymAmp (WinAmp), Pocket Calculator, Task Manager (Administrador de tareas de Windows), Control Panel (Panel de control (Windows)), SymShell ( Símbolo del sistema ) o SymSee (ACDSee). Aplicaciones típicas más grandes, como Hoja de Cálculo o Procesador de textos actualmente no están disponibles. Sin embargo, hacen que las aplicaciones existentes son parcialmente manifestaciones sin precedentes de capacidades de un sistema de Z80, que no se encuentra en esta forma.
Hay también una serie de aplicaciones específicas de cada plataforma soportada, como el CPC TREX Starter, específico para un CPC TREX

## Porting y capacidad de plataforma cruzada

SymbOS fue desarrollado originalmente en el año 2001 para los ordenadores de la serie Amstrad/Schneider CPC. Debido a su estructura modular, con la estricta separación de los componentes generales y hardware, hacen que la migración a otros sistemas basados en Z80 sea posible. Al igual que con CP/M Plus, sin embargo, el equipo debe cumplir con ciertos requisitos para hacer frente a la memoria extendida.
Los ordenadores MSX desde la gama MSX2 se soportan desde el verano de 2006. El soporte de Amstrad PCW ha estado disponible desde agosto de 2007. Las versiones para Enterprise 128 y SAM Coupé son también posibles, ya que cumplen los requisitos de SymbOS.
Al mantener un requisito básico para un sistema operativo, la estricta separación de hardware y software de aplicación, proporcionando una capa intermedia, las aplicaciones SymbOS se ejecutan en modo independiente de la plataforma hardware y no tienen que ser especialmente adaptados para un sistema. Las excepciones son las aplicaciones que tienen acceso al hardware directamente o con trabajo gráfico intensivo, ya que estos últimos requieren una codificación específica para la plataforma en vez de por el sistema operativo.

## Curiosidades

Existe un troyano llamado SymbOS.RommWar.A para el sistema operativo Symbian Serie 60.