Tilburg 2000 の会場で、Sunrise(スイス)の Michael Stellmann さんから、彼らの開発したMSX用マルチタスク・マルチウィンドウOS『WiOS』について話を伺う機会を得ました。以下は、ゆうれいがその際の話を元に、若干の憶測(笑)も加えてまとめたものです。ゆうれい自身がその開発にかかわっているワケではありませんので、その点は誤解のないように。

What is "WiOS"?

『WiOS』はメモリマッパを搭載したMSX2以上のMSX本体と、Sunrise製のV9990搭載カートリッジ『GFX9000』上で動作するマルチタスク・マルチウィンドウOSです。快適な動作速度を得るにはR800が必要ですがZ80でも動作します。HDDは必須ではありません。

左写真は実際の動作画面です(ビデオカメラで撮影したため像が歪んでいます)。左ではアナログ時計が2つ起動されていますが、どのウィンドウにフォーカスしている場合でも、これら2つの秒針が常に動き続けます。これは時計の一部がファイルマネージャ風のウィンドウの下に隠れている場合も変わりません。

見た目の感じはWindowsよりもMac風と言うべきでしょうか。画面左下のアイコンをクリックするとWindowsのスタートボタンのように各種アプリケーションを起動するメニューがポップアップします。

How to realize multi-task on MSX?

本来マルチタスク用ではないZ80(R800)上でマルチタスクを如何にして実現しているか。ゆうれいの関心は必然的にそこへ集中しました。Michael さんの説明によると、概ね以下のような方法をとっているようです。

Z80の64KBのメモリマップのうち、前半32K(ページ0と1)に WiOS 本体と各種機能をアプリケーションに提供するサブルーチン群(MichaelはWindowsのAPIと同様に考えてくれ、と語ってました)が配置されています。この配置はディスクインターフェイスを見に行くときなどを除いて固定的な配置になっています。ユーザープログラムはインタースロットコールを使わずに、これら静的配置された WiOS のサブルーチン群を利用することができます。

後半32K(ページ2と3)に、WiOS 上で動作するアプリケーションが配置されます。WiOS では、ページ0及び1に配置された OSカーネルが稼動中のアプリケーションが配置されたメモリマッパ上のページを逐一ページ2または3に切り替え、それをカーネルから順にコールすることでマルチタスクを実現しているようです。

したがって、同時起動可能なアプリケーションの数は、メモリマッパ接続されたRAMの容量に左右されます(HDDを利用した仮想メモリは現時点ではサポートされていません)。また、1つのアプリケーションはそのサイズがどうであれ、必ず1ページ(16K)を占有することになります。

ページをまたぐ、つまり16Kをこえるプログラムはページ毎に分断して管理することになります。自分自身の一部でかつアクティブページに割り当てられていないメモリに配置されたルーチンを呼び出すためのサブルーチンは WiOS が提供しています。ユーザープログラムは自分自身が物理的にどのメモリマッパに展開されているかは意識する必要がありません。

WiOS用のプログラムは、基本的にはZ80のネイティブコードになります。WiOS のコールエントリを呼び出す流儀に遵守するかぎり、アセンブラでもプログラミングは可能で、C等は必要ありません。ただし、旧来のMSX-DOS用、VDP9938/58用に書かれたプログラムをそのまま実行することはできません。いわゆる「MSX-DOS窓」のようなものも、現時点ではサポートされていません。仮にそれが実装される場合も、WiOSを一時的にシステムから切り離し、MSX-DOS用のプログラムを実行し終わってから復帰する方法しかとれないことが予想されます。

How to realize multi-window on MSX?

各ウィンドウの管理は、WiOS が完全におこないます。ユーザープログラムは自身が描画する画像や文字の絶対座標を意識する必要はありません。当然のことながら、スクロールバーやアプリケーション終了用のボタンなども WiOS が各アプリケーションのウィンドウに対して自動的に提供します。

これらの機能は V9990 固有の機能をもって実現されています。したがって、V9938/58を実装した従来のMSX2以降の機種で『GFX9000』を接続せずに WiOSを起動することは不可能です。

ただし、前述のマルチタスクの方法論は V9990 とは直接関係がないため、メモリマッパさえ実装していれば V9938/58 で動作する WiOS を別途開発することは不可能ではないと考えられます。

How to get it?

WiOS と専用ファイルマネージャ、及びアナログ時計風のアプリケーションをSunriseのWEBでダウンロードすることができます。ただし、前述してきたように起動には『GFX9000』が必須となります。

『GFX9000』自体は国内でも、各種のMSXイベントで販売されているのを見かけたことがあります。入手はさほど難しくないでしょう。なお、当方は『GFX9000』の輸入代行等はおこなっておりませんし、今後もするつもりはありませんので、ゆうれい宛に『GFX9000』に関する問い合わせをしても徒労になります。ご注意ください。