S-OSとは1985年、当時ソフトバンクから出版されていた「Oh!MZ」誌(後のOh!X)の6月号に初めて発表されたZ80マシン用OSです。
パソコンに備わるシステムコールが機種や言語等により呼び出し方法・パラメータが違うものの機能的に大差ないことに注目、共通の呼び出し窓口とパラメータを定義して各システム固有のモニタやBIOS,IOCSとの間で翻訳するような仕組みが考え出されました。こうすることで、違う機種であっても同じソフトを走らせることができます。ただ、モニタを拡張したような造りのために操作もマシン語モニタと同様になってしまうのが欠点といえば欠点でした。
S-OSの野望は多くの読者の共感を呼び、その雑誌の専門であるSHARP製パソコンだけでなく他メーカーのものまで広く移植されるに至りました。
S-OSのルーツは、1985年1月号に掲載されたEDASMというエディタ・アセンブラです。このプログラムはMZ用・X1用と分けて(しかもMZ用はMZ-80K/C/1200,MZ-700/1500,MZ-80B/2000/2200にも分けて)発表されたのですが、各マシン語モニタのエントリを統一することでエディタ・アセンブラとしては1本のプログラムのみを開発するだけで済んだのでした。しかもアセンブラの文法はもとよりテープフォーマットをMZ2400ボーに統一することでユーザー間のデータ交換までも可能にしたのです。これに気をよくした編集部は、その特集の扉で「CIOS (Common Input/Output System)」の企画を発表、それが多くの賛同を集め、ついにS-OSへの歩みが始まりました。
1985年6月号で発表されたS-OS"MACE"はルーツであるEDASMを踏襲して設計されました。開発の対象になったマシンもMZ,X1のみではありましたが、テープフォーマットをMZ2400ポーとし、アスキーコードは7ビット、そしてEDASMでは内部ルーチンに過ぎなかった画面関係やキー入力などがパラメータと共に公開され、テープベースのOSとして誕生したのです。
S-OSという企画を最も特徴付ける出来事もこの号にありました。いわばEDASMの代替ともとれなくもないS-OS"MACE"ですが、アプリケーションとしてのアセンブラは後回しになり、なんとLispが発表されたのです。この後もProlog,Forthといった一味違う言語やオリジナルコンパイラが発表され、マシン語開発環境と共にS-OSのもうひとつの顔となりました。
1986年2月号でディスク対応版S-OS"SWORD"が発表されると、それまでテープがハード的に対応できなかったシャープ以外のメーカーへのマシンに対する移植の気運が高まりました。まず最初に6月号でPC-8801に、翌7月号でソニーのSMC-777Cに移植され、以後PASOPIAやFM-7/77、X68000などにもS-OSの輪が広がっていきました。 マシン語開発環境としてのS-OSはEDASM代替のZEDA、デバッガのZAIDに始まり、トレーサ、リロケータブルアンブラとリンカ、高級言語と見紛うものなどこれも多岐にわたり、ソフトハウスでも開発に使用されるほどでした。
当初アドベンチャーはともかくシューティングタイプのゲームは無理だろうと言われていたのですが、なんと最初に掲載されたゲームはインベーダーゲームでした。共通のサービスルーチンのみを使用しているのにオープニングデモも滑らかに動き、見るものを唸らせ、その後の数多くのゲームに影響を与えました。共通仕様ではグラフィックは定義されていませんでしたのでキャラは全てアルファベットやカナでしたが、それでも様々なゲームが登場したのです。 S-OSそのものは"SWORD"以来RAMディスクの追加とコマンドの拡張が若干行われた以外は大きなバージョンアップはしませんでした。そのままの仕様で、1995年12月号のOh!X休刊まで誌上での発展を続けたのです。
10年あまりにわたってOh!MZ/X誌で連載されたS-OSは、ひとえに「パソコンユーザーのレベルアップ」を目的に展開されてきたと言って良いと思います。そしてそのシステムを維持するために、守られるべきルールがありました。
●ソース公開
どんなに長いプログラムも、必ずそのソースプログラムを掲載しました。これはBASICなどと同様、人のプログラムを読んでその動作を理解することで自身のプログラミングスキルの向上を期待したものです。もちろんマシン語のダンプリストで掲載されることの多かったS-OSアプリは両方とも同時を原則として掲載されることになりました。この趣旨はS-OSにとどまらず、他の企画や連載でもソース掲載が当たり前となりました。
●アプリケーションは全機種で動作すること
どんなに優秀なアプリケーションでも、特定機種のハードを期待して書かれたプログラムでは全員が享受できません。必ず共通のモニタコールを使用して、特定のハードを直接は叩かないようにするのが肝心です。
●共通の切り口を介して、データを共有する
例えばグラフィックなどは、その実現方法は異なっても、MAGICというグラフィックパッケージを介することでそのデータとプログラムを共有することができます。このように、ハードが異なってもスペックとして共通のものをもっているなら、共通の呼び出し窓口を用意すればそれで全機種共通となるわけです。
Oh!MZ/X誌上では、S-OSシステムのことを「RPS(ロールプレイングシステム)」と呼ぶことがしばしばありました。これは、読者のスキルアップとともにシステムもレベルアップしていく、まさに編集部と読者をドラゴンを倒すべくレベルアップしていく勇者に例えていわれたものです。実際、最初につけられた名前"MACE"は多くのRPGにおいて勇者が最初に手にする武器「闘棍」のことです。これが"AXE"(斧)、"SWORD"(剣)とレベルアップしていくにつれて、ユーザーもまたレベルアップしていくというわけなのです。
MZ-80K/C/1200 (1986.2 , 1987.3)
古い機種のためにいろいろ制限があります。英文字は大文字のみ、テープはMZ1200ボーのみ、画面は40桁のみ、メモリは48KBまで、ディスクは使用不可(I/Fが2Dに対応できないため)。そりゃまぁ改造すればなんとかなるでしょうけど。
MZ-700/1500 (1986.2 , 1987.3)
画面が40桁のみという制限があります。MZ-1500ではQDが使用できます。
MZ-700(QD対応版) (1987.5)
MZ-1500とはQDのサービスルーチンが違うのでそれに対応したもの。
MZ-800
まだMZ-800モードでは動かせていません。MZ-700モードで起動して、PCGを設定しモニタをMZ-1Z009Aに入れ替えてとりあえず使っています。
MZ-80B/80B2/2000/2200 (1986.2 , 1987.3)
X1と共にスタンダード的存在です。
MZ-2000/2200(QD対応版) (1986.6)
メモリの上位にQDサービスルーチンを配置してMZ-1500同様の環境を提供しています。
MZ-2500/2800(2500モード) (1986.8)
漢字が使用できます。アルゴ機能も生きています。ディスクフォーマットの都合で2DDでも512KBしか使用できませんが、システムを残り128KB内に記録することでディスクを有効利用しています。
X1/C/D/Cs/Ck/F/G/Twin (1986.2 , 1987.3 , 1989.2)
ディスクイメージ(2Dベタフォーマット、互換IOCS使用)
スタンダードです。特にFDのフォーマットが同じなのでMZ以上に使いやすいとの話もあります。
Gaku(@tablacus)さん制作の互換IOCSによる起動ディスクイメージを登録しました。
X1/C/D/Cs/Ck/F/G/Twin(高速版) (未発表)
ディスクイメージ(D88フォーマット)
MSX版の作者による未発表版。Huモニタを使用せず、ほとんどを作り直した高速版です。テープが使用できないなど、一部制限があります。
オリジナルのアーカイブではOBJファイルをどうにかしてディスクに書き込み起動可能にしなければなりません。最近はツールも充実してきてその敷居も下がってはきていますが、それでも面倒なのは変わらないので目玉P(@medamap)さんのご協力でD88形式起動ディスクイメージを登録しました。
X1turbo/II/III/Z/ZII/ZIII (1987.10 , 1987.12)
漢字が使用できます。システム辞書も使えます。デバイスアクセスルーチンをROM
BIOSに任せてあるので2Dの他2DD,2HD,HDDでも使用できます。
PC-8001/8801 (1986.6 , 1987.9)
最初88にはROMルーチンを使用したものが移植されましたが、80用兼用としてオールRAM版があらためて移植されました。HuMonitorを移植するという手法を用いて、作業の簡略化を図っています。
SMC-777C (1986.7)
メディアの都合で1DDのみとなっています。CP/M(SONY-Filer)のディスクをアクセスできます。
PASOPIA/5/7 (1987.12)
「Oh!PASOPIA」休刊の置き土産として発表されました。また、PASOPIA7用はMZ共通テープフォーマットをサポートしています。
FM-7/77 (1987.8)
Z80エミュレータ版とZ80カード版があります。
X68000 (1990.6)
Z80エミュレータを使用しています。2Dディスクはイメージファイルで扱います。なおこのリンク先は「改良版」としてOh!Xにディスクで添付されたものです。
PC-286/386/486/586/9801 (1990.6)
X1版の移植というスタンスです。X1用のMAGICも使用できます。2DディスクはイメージですがPC-286系統なら直接読み出しも可能です。ダウンロードできるのは昔MAX-BBSという草の根BBS局にアップされていたもので、IXL/IXH等の使用が可能になるなどOh!X掲載時よりも機能が追加されています。ソースも添付されています。
FP-1000/1100
FPユーザーズクラブで発表されました(Oh!MZ/Xでは未発表です)。
MSX/2/2+/turboR (1993.7)
8ビット機で唯一イメージファイルを使用します。ダウンロード可能なものは未発表の最終版です。巷に溢れるMSXエミュレータでは動作が怪しげなものばかりのようですので、実機でのご使用をお勧めします。
UNIX
Ubuntu他最近のモダンなUNIX/Linux環境でビルド・動作可能なS-OSです(Ubuntu22.04.1にて確認)。2Dベタ形式のディスクイメージを読み書きするのが基本ですが、Qドライブにてホストのファイルシステムにもアクセス可能なのが特徴です。
Windows95/98/NT/XP
旧UNIX版をCygwin環境によってWin32へポーティングしたものです。DOSプロンプトで動きますが、動作確認はWindowsXPに留まっていますので注意。
PC-6001mkII/6601/6601/SR
モード5・40桁×20行で動作するSWORD。残念ながらメモリマップの関係で初代PC-6001には非対応ですが、これでNEC製Z80パソコンのほとんどをカバーすることになりました。CP/Mの移植(I/O記事の追試)もあわせてどうぞ。
X-DOS
メモリの上位にシステムを置く、"SWORD"とソース互換のX1シリーズ用OS。同じシステムコールは持っているものの、エントリアドレスが全然違うのでそれ用にアセンブル/コンパイルし直さなくてはならないのですが、主要なアプリはすでに移植済みとなっています。マシン語開発環境としては最高とされています。
L-os Angeles
X1用D88イメージ(含ドキュメント)
"SWORD"とサブルーチンエントリ互換で、ファイルフォーマットがMS-DOS互換のX1シリーズ用OS。X1シリーズユーザークラブであるLovers主宰の中川学氏が会報である「Lovers
Magazine(通称"らばま")」ブラウズ用に開発したものが元になっています。HuMonitorを使わずにBIOSからフルスクラッチで書かれています。
こちらも目玉P(@medamap)さんのご協力でX1用のD88形式起動ディスクイメージを登録しました。
X1用 S-OS"SWORD" エミュレータ あるいは クローン
オリジナルのX1コンパチIOCSを備えたゲーム用OS「Kanrinin/3」上で動作する、S-OSエミュレータです。2本のゲームとファイラーがサンプルとして収録されています。実装されていない機能がまだあるので、動作は不完全です。
登録してあるアプリは、上記Win32版エミュレータにてコンバートしてあります。それぞれのファイルには先頭に18バイトのヘッダがついていますので、直接転送した時にはそれを取り除いてください。複数ファイルの組み合わせになっているものはLHA/ZIPにて圧縮してあります。なお、各ファイルが正しく動くかどうかの保証はいたしません。もしバグがありましたら修正して送っていただけると幸いです。
●マシン語開発環境
ZEDA (1985.7)
改造版ZEDA (1986.9)
ZEDA-3 (1987.6)
EDASM互換となるエディタ・アセンブラです。「改造版」ではラベルテーブルにハッシュを取り入れ、「3」ではハッシュテーブルの改良と変換テーブルの効率化を図ることでアセンブル速度を向上させています。分割アセンブルにも対応しています。
REDA (1989.2 , 1993.12)
ZEDAからさらにアセンブル速度が高速化された他、エディタ部の切り離し、エディタのタブコード対応などの機能向上が図られています。
WZD (obj/mzt) (1990.7)
MACRO-80ばりのリロケータブルアセンブラです。REDA等と若干文法が異なっています。リロケータブルバイナリを出力するので、最終的なバイナリを得るにはリンカのWLKが必要です。
WLK (obj/mzt) (1990.8)
WZD専用のリンカです。WLBで作ったライブラリをリンクすることもできます。
WLB (obj/mzt) (1990.10)
ライブラリアン。これら3本のWシリーズはSmall-Cのコンパイルに必要です。
OHM-Z80 (1990.3)
もはやアセンブラの域を越えた、超多機能マクロアブソリュートアセンブラ。A,HLレジスタを犠牲にしてZ80CPUのニーモニックの直交性を高くしています。またループ命令や条件分岐など高級言語に匹敵する擬似命令も備えています。結果としてどのようなコードが出力されるかを知っていないと危険なので初心者には薦められませんが、それがわかれば非常に強力なツールとなるでしょう。
ZAID (1985.7)
ZEDAと共に発表されたデバッガ。トレース機能はないので、次のZ80TRACERと組み合わせて使用します。
Z80TRACER (1986.6)
ZAIDとペアで使用します。制作者は元々トレーサというものをその名前しか聞いたことがなかったのですが、見事に使えるツールになっています。やはりプログラマの求めるものへ自然に行き着くということなのでしょうか。
TRADE (1988.4)
ZAID+Z80TRACERに機能を加えたものです。
ZING (1985.8)
ソースジェネレータです。
SOURCERY (1988.12)
ZINGを拡張し、分割アセンブルに対応したソースを出力するようにしたものです。
RING (1989.5)
SOURCERYにタブコード出力を付加し、文法をREDAに合わせた(ZEDAのマクロを削除した)ものです。
Inside-R (1987.9)
ジャスト2KBの逆アセンブラ。完全リロケータブルプログラムとなっています。
MAKE (1992.12)
EDITの出力する「UPDATE.$$$」を参照して、効率良くコンパイル・アセンブルを管理します。
●プログラミング言語
Lisp-85 (1985.6)
MacLispを参考に作られた、CP/M用のフルセットLispに匹敵するLispインタプリタ。
Prolog-85 (1985.12) → 解説
少し前に掲載されたMZ-1500用Prologの反響が大きかったのか、早々の掲載となりました。
magiFORTH (1986.3)
これも清水和人氏によって連載されたFORTHの解説の反響によるところが大きいでしょう。
FuzzyBASIC (1986.9)
FuzzyBASICコンパイラ(石上版・3000h) (6A00h) (1987.6 , 1987.10 , 1988.1)
FuzzyBASICコンパイラ(奥村版) (1988.1)
ローカル変数や再帰定義など、およそBASICとは思えない強力な整数BASICです。
SLANG (1988.3 , 1990.1 , 1993.9) → 解説
ファイル入出力ライブラリ (1988.10 , 1991.9)
実数演算ライブラリ (1989.4)
DIO.LIB (1989.12)
GRAPHICS.LIB (1990.9)
GRAPH.LIB (1992.8) そのサンプル
Cにも似た関数型言語です。Cのようには欲張らず、でも必要な機能は全ておさえてある人気の高いコンパイラ言語と言えます。その人気に比例してかライブラリも充実していて、ファイル入出力・実数演算・リダイレクション・MAGICサポートがあります。
REAL (1991.5 , 1991.7)
SLANGに実数演算命令を追加したコンパイラ。実数演算ライブラリSOROBANが必要です。
TTC (1989.6) / TTC++ (1990.2)
TTI (obj/mzt) (1989.10)
GAME言語やT.T.L.等を意識して作られた記号型言語。TTCがコンパイラで、機能拡張した上でインタプリタにしたTTIが発表され、さらにその機能をサポートしてTTC++が発表されました。
STACKインタプリタ (1990.5)
STACKコンパイラ (1990.12)
言語構造はFORTHのようなスタック型だが、文法はBASIC似な言語。
Small-C (実行用D88)(ソース一式D88) (1991.6 , 1991.8)
SLANGコンパチ関数 (obj/mzt)(ソース一式D88) (1991.12)
CP/M用のSmall-Cの移植版です。制御関数もひととおりあってそこそこ使えます。
●エディタ
E-MATE (1986.5)
標準的な全画面型スクリーンエディタです。
WINER (1988.8 , 1988.9)
キャラクタベースながら立派にマルチウィンドウしているエディタです。マクロも使えます。
TED-750 (1988.9)
その名の通りわずか750バイトの超小型エディタ。
EDC-T (1990.11 , 1993.1)
タブコードに対応したエディタです。後に「UPDATE.$$$」出力にも対応しました。
EDIT (1992.11)
REDAのエディタ部分を抜き出し、MAKEのためのテンポラリファイル「UPDATE.$$$」を自動生成する機能を追加したもの。
FE (1995.7)
同じくタブコード対応のエディタ。専用のラインプリントルーチンがあればカラー表示されます。
●ゲーム等
JEWEL (obj/mzt) (1986.4)
倉庫番のようなルールで、宝石をゴールに運ぶパズルゲーム。
LIFE GAME (1986.4)
マイコンプログラムの定番。
対局五目並べ (1986.8)
これも定番ですね。コンピュータと対戦します。
HOTTAN (1986.11)
PITMANのような(ってこれがわからんか)パズルゲーム。マップ上の宝石を集めるのですが、プレイヤーはハシゴでないと上へ登れず、トンネルを掘ると移動したあとには上から土が落ちてくる…。
MAZE in MAZE (1986.11)
ダンジョン型RPG風迷路ゲーム。キャラクタではありますが3D表示します。
MARMALADE (1987.2)
限られたキャラクタで、できうる限り絵を描いたアドベンチャーゲーム。
INVADER GAME (1987.4)
標準ルーチンだけでここまでできる!デモ画面は一見の価値あり。
TANGERINE (1987.4)
最初の横スクロールシューティングゲーム。
碁石拾い (1987.8)
並んだ碁石を全てとればクリア。一旦動かすと壁か碁石に当たるまで止まらない駒を使います。
tiny CORE WARS (1987.10)
特にASCIIで短期連載されたCORE WARSの縮小版(画面をメモリに見たてるのですが、ちょっと狭いので本物と同じ容量にはなりません)。戦うプログラムをメモリに展開し、最後に生き残ったスレッドの方のプレーヤーの勝ち。
BACK GAMMON (1987.11)
いわゆる「西洋双六」。といっても、室町だったか以前の双六というのはバックギャモンのことを指すんですってね。
ELFES (1988.2)
ELFES2 (1988.5)
ELFES4 (1988.11)
縦・横のスクロール型シューティングゲーム。3は予告されましたがボツになったようです。それに5部構成だったような気が…。
WALRUS (1988.4)
地底最大の作戦 (obj/mzt)(ソース:obj/mzt) (1988.5)
最初はI/O誌にてMZ-80K用として掲載された古典ゲーム。迫りくるヘビの襲撃にどれだけ長い間地底基地を守りぬけるか。
(オブジェクトは掲載版、ソースはムック収録版を登録しているため、配置アドレスに差異があります)
NAMPAシミュレーション (1988.6)
なんとLisp-85用の口説きゲーム。ただの一本も投稿作品が掲載されたことのない言語に、よもやこんな作品が登場するとは…。
MANKAI (1988.10)
一言でいうとMISSILE COMMANDERなんですけど、爆発シーンが凝っています。画面のあちこちで爆発させれば、スクリーンはもう満開。
LAST ONE (1989.1)
FLICK (1989.1)
TICBAN (1989.7)
いわゆるチクタクバンバン。TTCのサンプルプログラムとして発表されました。
BUGS (1989.9)
日経サイエンス誌89年7月号に紹介された生物進化シミュレーション。SOROBAN要です。
PUSH BON! (1989.11)
TTIのサンプルプログラム。特定の3つのブロックを並べるとクリアとなるパズルゲーム。
WORM KUN (obj/mzt)(ソース:obj/mzt) (1990.1)
いわゆるスネーキーですかね。網をはって餌を捕らえられるところに特徴があります。
I-MY (1990.4)
ファジーシミュレーターです。ちゃんとした理論に基づいて制作されています。
SQUASH! (1990.6)
MAGIC要。コンピュータスカッシュです。ちゃんと3Dしてます。
BILLIARDS(1990.9)
MAGIC要。あのビリヤードが全機種共通のプログラムで遊べます。
COLUMNS (1991.1)
かつてテトリスの次に流行し「落ち物」というジャンルを不動のものにしたゲーム。
KISMET (1991.2)
別名YATHEE。5つのサイコロをふって、ポーカーのような役をひとつずつ組み立てていくゲームです。
MUD BALLIN' (1991.3)
要は雪合戦なんですけど、S-OS標準キャラのみで作られたコミカルなプレーヤーが秀悦です。
DOBON (obj/mzt)(ソース:obj/mzt) (1991.4)
ページワンのローカルルール。
MORTAL (1991.11)
死ぬと踊る異教徒を溶岩で殺す異色ゲーム。
モグラ叩き (obj/mzt) (1991.12)
Small-C用SLANGコンパチ関数ライブラリのサンプル。キーを叩いてモグラを退治します。ソースはライブラリのソース一式D88イメージに収録してあります。
LINER (1992.1)
盤に書かれた番号を手がかりに、盤を線で一筆書きするパズルゲーム。
POLANYI 漢字メッセージデータ カナメッセージデータ(1992.2)
スタートレック風シミュレーションゲーム。エネルギーは敵から略奪するという、元ネタからするとかなり海賊的なゲームです。
KLONDIKE (1992.3)
Windowsにあるソリティアというのは、正式にはこの名前です。
SLENDER HUL (obj/mzt)(ソース一式D88) (1992.10)
Small-Cで制作された横スクロールシューティングゲーム。
BLACK JACK (1993.2)
「21」ですよね。
REVERSI (1993.6)
言わずと知れた「オクトリバーシ」。
七並べ (1993.9)
説明不要。
B-GALETS2 (1994.11)
縦型シューティングゲーム。シンプルながら、敵の種類と出現パターン、攻撃パターンでゲームに彩りを添えます。
BLOCK DOWN (1995.6)
さめがめ。
IF ONLY (1995.8)
同じ数字か同じマークのカードを出しつづけることで手札を減らしていくカードゲーム。
MISSILE SYSTEM (1995.9)
こちらもミサイルコマンドのリメイク版。本来トラックボールを使って狙いをつけるシステムを、フルキーボードを画面に対応させることでトラックボールなしでも操作感の良いゲームとして仕上げてあります。
CUBE (1995.10)
特定のキューブをルールどおりに挟んで消すパズルゲーム。重力がありますので下に何もないと落ちていくところは、グラブニック(パズニックの派生)に良く似てます。
PICT (1995.11)
ピクトパズルのソフトです。
●ツール
BEMS (1985.8)
どんなシューティングゲームでも、B(Back、背景),E(Enemy、敵),M(Missile、自分と敵の双方の攻撃),S(Ship、自機)の4つの要素からなります。そこで、共通のシステムにてこれらの移動・衝突の管理をしてしまおうという、ゲーム開発パッケージなのです。
YGCS (1994.2 , 1994.6)
BEMSを引き継ぐゲームコアシステム。BEMSのようにゲームの大部分をパッケージ化するのではなく、もっと基本的でどのようなゲームにも必要な機能をパッケージ化してあります。その分利用する側の負担は増えているのですが…。
MACINTO-S (1985.9)
MACINTO-C (1987.1 , 1993.8)
MACINTO-SはS-OS初の投稿掲載プログラムです。S-OS"MACE"発表時からあった128バイトサム方式のチェックサム自動計算機能を備えるマシン語入力ツールです。ただ、単純サムでは縦横サムをとっても100%信用できるわけではないので、総合サムにCRCチェックバイトを採用したMACINTO-Cに切り替わりました。CRC演算が全く同じになる確率は極めて低いので、入力確認に非常に有効です。なお、MACINTO-Sは完全リロケータブルです。
CAP-X85 (1985.10)
CASL&COMET (1986.12)
情報処理試験に欠かせない仮想CPU。連載中に試験の要項が変わったので、連載側も新たに対応したものです。
FM音源サウンドエディタ (1986.1)
FM音源ミュージックシステム (1986.7)
「ハード版S-OS」を目指して設計された「共通I/Oポート」に接続されるFM音源用のツールです。他にも8251使用のRS-232Cボード、リレーによるリモコンロボットコントローラがあります。
ディスクダンプ&エディタ (1986.6)
DREAM (1986.10)
不意のファイル消去、システム暴走によるディスク消去に対応できるディスクエディタ。メディアがなんであっても管理しているクラスタが同じ大きさなのでFDDもHDDもRAMディスクでもなんにでも使えます。なお、このDREAMはRコマンドでビット反転モードに入れるS-OSUC版です。
CONTEX (1987.2)
STORY MASTER (1987.7)
テキストアドベンチャー作成ツール。CONTEXは完成したシナリオデータをゲームに変換する一種のコンバータ。STORY
MASTERはシナリオの作成をしながら制作できるインタプリタ。
MAGE (1987.3)
「カリグラフ」と呼ばれる線画アニメの管理ツール。
JACKWRITE (1987.8)
専用ディスクに記録した漢字データをMAGICによって表示させるシステム。漢字はストロークデータとして入力するので、拡大してもそれほど崩れず表示されます。2Dディスク1枚で第一水準がまるごと収録できます。発表当時はJISコードに対応していましたが、現在「S-OS通信」で使用されているものはシフトJISコード、縦8ドット表示、漢字ROMがあればそれを優先という仕様に変わっています。
ファイルアロケータ&ローダ (1987.11)
0番地と任意の番地から始まるプログラムオブジェクトを生成しておき、そのオフセットの差を使ってリロケータブルファイルを作るツール。WZDで生成されるリロケータブルバイナリとは違うので注意。
TURTLE (1987.12)
タートルグラフィックパッケージ。いわゆるLOGOのような描画システムを提供します。どっちかっていうと、FORTH向き。
MW-1 (1988.7)
マルチウィンドウドライバ。S-OSのシステムコールのかなりの数にフックをかけて、通常のテキスト出力をマルチウィンドウ対応にします。ウィンドウが隠すエリアの保存とか、ウィンドウシステムが持つべき機能をフルに搭載したものです。
SOROBAN (1989.3)
実数演算ライブラリ。REALの実行には必要です。
CP/M用ファイルコンバータ (1989.8)
元々Small-Cを移植した石上達也氏がソースを転送するために制作したもののようです。
O80 (1992.8)
アセンブラソースを解析して、最適化を施します。Small-Cの実践講座として掲載されました。
COMMAND.OBJ (1992.5 , 1992.6)
MS-DOSライクなコマンドとバッチ実行環境を実現するシェル。ワイルドカードやファイルコピーがないので使い勝手はいまいちかも…?
O-EDIT (1992.9)
MODCNV (1992.9)
3DモデラとSLANG用データコンバータ。
BREEZE (1995.12)
ソフトウェアでD/A変換を行う本物のPCM再生プログラム。S-OSが移植されていた多くのマシンに、そのマシンのハードにあわせて制作されたS-OSの理念の王道を行くソフトとも言えます。
これまで制作されたS-OS用ソフトをここで紹介します。希望の方は説明と共にプログラムをこちらまでメール等してお送りください。原則としてここでダウンロードできるようにすることとしますが、もしリンク先でダウンロードできるようになっていればそれでも構いません。
WING
RING/SOURCERYを元にした、ソースジェネレータ。数値表記などをMS互換とし、ソースの移植性を高めることを狙ったものです。
z88dk → 解説
8080/Z80を主なターゲットとするクロス開発ツール。これまでもMZやX1、MSX、PC-6001といった多数のマシンをサポートしてきましたが、ついにS-OS"SWORD"にまでも対応。Small-CベースのCコンパイラを使った開発が可能になります。
既に3Dグラフィックを駆使して多数のゲームを世に送り出していたTUX吉村氏(当時のPN。現在は吉村ことり氏(@urdcat))の開発による高速3Dグラフィックパッケージ、それがMAGICです。MAGICを使えば、BASICのグラフィック機能よりもはるかに高速に、そしてワイヤーフレームながらリアルな3Dモデルを画面上で動かすことができます。
多機種に展開されているのも特徴で、グラフィックデータだけでなく呼び出し方法も共通化されているため、メーカーや機種を超えて同じプログラムを用い同じ画面を再生することが可能になりました。
パッケージとしてはOSに非依存で、BASICからでもCP/M上でも使用することができますが、1987年3月号のアニメーションツール「MAGE」掲載の際にS-OSとしての標準化が図られ、初期化手順も含めて使い方のルールが定められました。
MAGICが移植された機種とその掲載号は以下の通りです。
X1/X1turbo (1986.9) |
MZ-2000/MZ-2200 (1986.9) |
MZ-2500 (1986.9) |
PC-8801 (1986.9) |
MZ-1500 (1987.2) |
SMC-777 (1987.2) |
MZ-80B/MZ-80B2 (1987.4) |
X68000 (1991.5 , 1991.9) |
※X68000用MAGICはコマンドに大部分の互換性を持たせた移植版で、X68000用S-OS"SWORD"で使用するものではありません。リンク先はMAGICを含むSION II配布ページです。
※X1/turbo用ダウンロード用データの作成にはひろし@H.O SOFT(@honda_ken)さんのご協力を賜りました。
MAGICのコマンド一覧がこちら。コマンドを並べたデータの先頭アドレスをC200hに置いてB000hを呼び出すか、先頭アドレスをIXレジスタに入れてB004hを呼び出せば実行できます。またS-OSでは実行に先立ちAF00h〜に置いたMGINITを呼び出して初期化するようにしてください。
データ | バイト数 | 内容 | データ | バイト数 | 内容 | データ | バイト数 | 内容 |
00h : LINE (連続した直線を描く) |
05h : CIRCLE FULL (円を塗りつぶす) |
0Bh : SET 3D PARAMETER (3D→2D変換用のパラメータを設定する) |
||||||
00h | 1 | コマンド | 05h | 1 | コマンド | 0Bh | 1 | コマンド |
n | 1 | 座標総数 | TILE | 4 | タイルパターン | Pnum | 1 | パラメータナンバー |
X1 | 2 | 座標1 | X | 2 | 中心座標 | DATA | 2 | 設定データ |
Y1 | 2 | Y | 2 | パラメータナンバー | ||||
… | … | … | R | 2 | 半径 | 0:CX | 物体の位置 (オフセット) |
|
Xn | 2 | 座標n | 06h : SET WINDOW (ウィンドウを設定する) |
1:CY | ||||
Yn | 2 | 2:CZ | ||||||
01h : SPLINE (3点を結ぶスプライン曲線を描く) |
06h | 1 | コマンド | 3:DX | 回転の中心座標 | |||
X1 | 2 | 左上座標 | 4:DY | |||||
01h | 1 | コマンド | Y1 | 2 | 5:DZ | |||
X1 | 2 | 座標1 | X2 | 2 | 右下座標 | 6:HEAD | 回転角(度) | |
Y1 | 2 | Y2 | 2 | 7:PITCH | ||||
X2 | 2 | 座標2 | ※起動後必ず設定する必要がある | 8:BANK | ||||
Y2 | 2 | 07h : SET MODE (グラフィックモードを設定する) |
※物体の位置は、MAGIC内部では次のSET 3D DATAで指定した座標に加算して処理される | |||||
X3 | 2 | 座標3 | ||||||
Y4 | 2 | 07h | 1 | コマンド | ||||
02h : BOX (2点を対角とする長方形を描く) |
MODE | 1 | ラインモード | 0Ch : SET 3D DATA (物体の3Dデータを設定する) |
||||
PLANE | 1 | プレーン | ||||||
02h | 1 | コマンド | ラインモード:描画するときの書き込みモード 0:RESET 1:XOR 2:OR 3:NOP プレーン:描画をするグラフィックプレーン 0:BLUE 1:RED 2:GREEN ※起動後必ず設定する必要がある |
0Ch | 1 | コマンド | ||
X1 | 2 | 座標1 | PCT | 1 | 頂点の数(n+1) | |||
Y1 | 2 | X0 | 2 | 頂点0 | ||||
X2 | 2 | 座標2 | Y0 | 2 | ||||
Y2 | 2 | Z0 | 2 | |||||
03h : TRIANGLE (三角形を塗りつぶす) |
… | … | … | |||||
Xn | 2 | 頂点n | ||||||
03h | 1 | コマンド | 08h : POINT (指定座標の色を調べる) |
Yn | 2 | |||
TILE | 4 | タイルパターン | Zn | 2 | ||||
X1 | 2 | 座標1 | 08h | 1 | コマンド | LCT | 1 | 線分の数(m) |
Y1 | 2 | X | 2 | 座標 | LS1 | 1 | 線分1 | |
X2 | 2 | 座標2 | Y | 2 | LE1 | 1 | ||
Y2 | 2 | ※カラーコードがC202h番地に格納される ※座標が規定外ならカラーコードはFFhになる |
… | … | … | |||
X3 | 2 | 座標3 | LSm | 1 | 線分m | |||
Y4 | 2 | LEm | 1 | |||||
04h : BOX FULL (2点を対角とする長方形を塗りつぶす) |
09h : CLS (ウィンドウ内をクリアする) |
※ひとつの線分は2つの頂点ナンバーで指定する | ||||||
09h | 1 | コマンド | ||||||
0Dh : TRANSLATE 3D→2D (3Dデータを3Dパラメータに従って2Dに変換し、ワークエリアに格納する) |
||||||||
04h | 1 | コマンド | 0Ah : PALET (パレットを設定する) |
|||||
TILE | 4 | タイルパターン | ||||||
X1 | 2 | 座標1 | 0Ah | 1 | コマンド | 0Dh | 1 | コマンド |
Y1 | 2 | P0 | 1 | パレットカラー | 0Eh : DISPLAY 2D (TRANSLATE 3D→2Dで変換したデータに従ってワイヤーフレーム表示する) |
|||
X2 | 2 | 座標2 | P1 | 1 | ||||
Y2 | 2 | P2 | 1 | |||||
P3 | 1 | 0Eh | 1 | コマンド | ||||
P4 | 1 | ※0Bh,0Ch,0Dhコマンドの実行後に行う必要があるが、ワークエリアの内容が破壊されていなければこの限りではない | ||||||
P5 | 1 | |||||||
P6 | 1 | |||||||
P7 | 1 | 0Fh : DONE (MAGICを終了し呼び出したシステムに戻る) |
||||||
0Fh | 1 | コマンド |
※以下の機種について、SET MODE機能で指定するプレーンに制約があります。
SMC-777 プレーン2に対する描画は無視される MZ-80B/MZ-80B2 GRAMが1ページのみの実装だった場合、プレーン0以外への描画が全てプレーン0に対して行われる
※以下の機種について、PALET機能に制約があります。
MZ-2000/MZ-2200 ハードとしてパレット機能がないため
P1:青 P2:赤 P4:緑
に0以外の値を設定するとそのプレーンを表示、0で非表示という機能に変更
それ以外のパラメータは無効だが、一応8バイト分必要SMC-777 色を正しく表示するためには4096色カラーパレットボードが必要、ただし使用している色は他機種と同じ8色のみ
同時表示は4色までMZ-80B/MZ-80B2 ハードとしてパレット機能がないため、P1とP2に0以外の値を設定するとそのプレーンを表示、0で非表示という機能に変更
それ以外のパラメータは無効だが、一応8バイト分必要
S-OSに関するサークルはこれまでいくつもありましたが、最も有名で最も長く活動していると自負しているのが我がS-OSユーザーズクラブ(以下S-OSUC)です。
S-OSUCが不定期にディスク会報として発行していたのが「S-OS通信」です。各機種用に自動起動システムを内蔵して、100%S-OSのツール上で閲覧できるのが自慢でした。ここでは各バックナンバーの抜粋をご覧いただけます。なお、記事中の募集事項であるとか価格情報は掲載当時のものです。さらに住所など一部変更されているものもあります。
●Vol.0
●Vol.1
●Vol.2
●Vol.3
●Vol.4
●Vol.5
●Vol.6
●Vol.7
(C)1998-2022 Oh!Ishi,Nibbles Lab.