SYmbiosis Multitasking Based Operating System ( SymbOS ) は、Zilog Z80ベースの8 ビット コンピュータシステム向けのマルチタスクオペレーティングシステムです。
初期の8ビットオペレーティングシステムとは異なり、SymbOSはマイクロカーネルをベースとしており、プリエンプティブかつ優先度指向のマルチタスク処理を提供し、最大1024KBのランダムアクセスメモリ(RAM)を管理します。Windowsのようなグラフィカルユーザーインターフェース(GUI)を備え、最大128GBの容量のハードディスクをサポートし、拡張されていないAmstrad CPC -6128、128K- MSX2 、 Amstrad PCWでも既に起動可能です。
2025年1月31日現在、Amstrad CPC、Amstrad PCWモデル、Amstrad NCシリーズのコンピュータ、Enterprise 64/128、ZX Spectrum Next、MSX2規格以降のすべてのMSXモデル、 V9990グラフィックチップ搭載のMSX、CPC-TREX、C-ONE、および最新のハードウェア上で動作する仮想マシンとして利用可能です。 [ 1 ]
SymbOS は、もともと 1985 年の 8 ビット コンピュータでウィンドウ GUI を備えたマルチタスク オペレーティングシステムをどの程度実装できるかを調べる実験として始まりました。GEOSがその動機に貢献しましたが、SymbOS の構造と機能はそのシステムとは似ていません。2006 年のリリースでは、当時 20 年前のホーム コンピュータでも、量的な制限はあるものの、そのような「ミニ ウィンドウ」システムが可能であることが証明されました。SymbOS は、近年最大のレトロ コンピューティング ソフトウェア プロジェクト 1 つです。このプロジェクトの目標の 1 つは、ハードウェア拡張機能を使用して、これらの古いマシンを最新の PC のように使用できるようにすることです。[ 2 ]
Z80は8ビットCPUに過ぎないが、プリエンプティブマルチタスクOSを実行できる。Z80にはメモリ保護機能が欠けているが、そのようなOSでは必須ではない。例えば、AmigaOSにもメモリ保護機能は搭載されていない。MP /M OSはZ80 CPUでのマルチタスクが可能であることを証明したが、一般家庭のコンピュータでは利用できなかった。
MOS Technology 6502はスタックポインタを移動できませんが、Z80はメモリ内の任意の位置に自由に移動できるため、プリエンプティブマルチタスクの実装が容易になります。代替レジスタセットの存在により、タスク間のコンテキストスイッチが劇的に高速化されます。
Z80システムの64KBアドレス空間という制限は、バンク切り替えによって解決できる。この方法により、Amstrad CPCやPCW、MSX、Enterprise、SAM Coupéといったコンピュータは、数百キロバイト、あるいは数千キロバイトものメモリにアクセスできるようになる。
SymbOSには、タスク管理、メモリ管理、プロセス間通信を実行できるマイクロカーネルが含まれています。[ 3 ]
タスク管理には、プリエンプティブ・マルチタスクと協調型マルチタスクを組み合わせた方式が採用されており、これにより様々なタスクの優先順位付けが可能になっています。プリエンプティブ方式とは、一定時間経過後にオペレーティングシステムがタスクを中断し、他のタスクとCPU時間を共有する方式です。協調型方式とは、タスクが現在の処理を完了した場合、または特定のイベントを待機している場合に、タスクがCPU時間の使用を自動的に停止する方式です。この組み合わせにより、優先順位の設定が可能になります。優先順位の低いタスクは、優先順位の高いタスクがすべて停止している場合にのみCPU時間を取得できます。
メモリ管理では、RAM全体を256バイトの小さなブロックに分割し、動的に割り当てることができます。アプリケーションは常に64KBのセカンダリ RAMバンクで実行され、このバンクにはオペレーティングシステムやビデオメモリが占有されていません。そのため、最大63KBのメモリをまとめて確保することが可能です 。
バンキング管理機能により、Z80 CPUのアドレスバスが16ビットしかない場合でも、システムは最大1メガバイトのメモリを管理できます。これにより、他の64KBバンクに配置されたメモリや関数への透過的なアクセスが 可能になります。
異なるタスクとオペレーティングシステム間の通信は、通常、呼び出しではなくメッセージを介して行われます。これは、マルチタスク環境において、スタック、グローバル変数、共有システムリソースに関する問題を回避するために必要です。SymbOSカーネルは、同期および非同期のIPCをサポートしています。
SymbOSは、すべてのプラットフォームでCP/M、AMSDOS、およびファイルアロケーションテーブル(FAT)12-16-32のファイルシステムをサポートしています。FATに関しては、SymbOSは最大 128GBの容量を持つ大容量ストレージデバイスを操作できます。また、最大2GBのファイルを管理できる機能は、 8ビットシステムとしては珍しいものです。FATのサポートにより、他のコンピュータとのデータ交換が容易になります。これは、ほとんどの32ビットおよび64ビットオペレーティングシステムが3種類のFATファイルシステムをサポートしているためです。

SymbOSのグラフィカルユーザーインターフェース(GUI)は、完全にオブジェクト指向で動作します。見た目や操作感はMicrosoft Windowsに似ています。時計とスタートメニューを備えたおなじみのタスクバーがあり、移動、サイズ変更、スクロールが可能なウィンドウを最大32個まで開くことができます。システム全体は最適化されたアセンブリ言語で記述されているため、GUIはホストマシンの性能に応じて高速に動作します。
ウィンドウの内容は、スライダー、チェックボックス、テキスト行、ボタン、グラフィックなどの基本的なGUI要素である「コントロール」によって定義されます。ウィンドウの背景や非表示領域は、別のビットマップバッファに保存する必要はありません。表示領域を復元する必要がある場合は、その内容が再描画されます。
SymbOSには、他のオペレーティングシステムで利用できる同様のソフトウェアに似せて設計された標準アプリケーションがいくつかあります。例としては、メモ帳、SymCommander( Norton Commanderに類似)、SymShell(cmd.exe)、SymZilla(Mozilla Firefox)、SymPlay(QuickTime)、SymAmp(Winamp)、マインスイーパーなどがあります。[ 4 ]
SymbOS 用のアプリケーションは Z80アセンブラまたはAnsi C (ネイティブコンパイラを使用)で記述でき、Quigs 開発 IDE [ 5 ]で支援を受けることができます。
SymShell では以下のコマンドがサポートされています。 [ 6 ]
SymbOSは元々Amstrad CPC向けに開発されました。汎用コンポーネントとハードウェアコンポーネントが厳密に分離されたモジュール構造により、十分なメモリを備えた他のZ80ベースのシステムへの移植が可能となっています。
バージョン1.0(2006年5月)は最初のリリースであり、Amstrad CPCをサポートしていました。
バージョン1.1(2006年12月)では、MSX2コンピュータのサポートが追加されました。
リリース2.0(2007年8月)では、Amstrad PCW用の移植版が追加されました。
バージョン2.1(2014年8月)では、追加のMSXコンピュータのサポートが追加されました。
リリース3.0(2017年8月)では、Enterprise 64/128のサポートが追加されました。
バージョン3.1(2021年12月)では、ビデオおよび大容量ストレージ向けプラットフォームのハードウェアサポートが追加されました。
バージョン4.0(2025年1月)では、 Amstrad NCシリーズ、ZX Spectrum Next、および仮想マシン版が追加されました。
SAM Coupéや、 ATM-turbo 2+、ZX-Evolution/BaseConfといったZX Spectrumのクローン向けバージョンも、SymbOSの要件を満たしているため、開発可能です。
オペレーティングシステムの基本条件である、ハードウェアとアプリケーションソフトウェアを中間層によって厳密に分離することで、SymbOSアプリケーションは各コンピュータ上でプラットフォームに依存しない動作を実現し、特定のハードウェアに直接アクセスするアプリケーションを除き、異なるシステムに合わせて調整する必要がありません。
{{cite web}}:欠落または空欄|title=(ヘルプ){{cite web}}:欠落または空欄|title=(ヘルプ)