OS-9とBASIC09
前に
でApple][の6809カードのことを書いたのですが、そのカードを開発していた会社(というマンションの一室)にお邪魔していたところ、社長がフロッピーと紙の束を抱えて入ってきました。それがほぼ初上陸したOS-9開発キット一式でした。
OS-9
さっそく移植だ!ということになったのですが、まず肝心のフロッピーがApple][では読めません。そこで最初の移植は発売されて間もなかったFM-8で始まりました。
FM-8
FM-8も話題をさらった名機ですが、それは別の機会にまとめるとして、程なくFM-8の上で最低限の動作が出来るようになりました。その間にOS-9で動くBASIC09を覚えていました。
BASIC09
BASIC09はUCSD-PASCALの影響を強く受けているようで、今までのBASICのようにフルスクリーンエディタで直接コードを書いて実行するというスタイルではなく、エディタでコードを書いてから実行するという形です。コンパイラのようにソースコードからバイトコードを生成して、それを実行します。このため行番号はラベルで各行に必須ではなくPASCALのような構造化構文が取り入れられています。確かに今までのBASICと比べれば少々癖が強いのとハードウェアに密接な処理が標準では出来ないのですが、これこそ未来のBASICだよと感動した覚えがあります。これに影響を受けてDOSで動く構造化BASICをAppleSoftBASICに変換するトランスレータを自分で書いて愛用しました。
さてFM-8からシリアル経由でApple][にデータを移しつつ6809カードでOS-9を動かす作業が続いていたのですが、既存の多くのハードウェアを使えるようにしなければなりません。プリンタドライバを移植してみたのですが、処理としては単純だったのでディスクのように6502を経由せずに6809から直接ポートを叩く形で移植できました。OS-9のアセンブラが原則リロケータブルなコードしか受け付けないのですが、ポートのアドレスは固定なので、そこは例外だよと書くのがちょっとだけ面倒だった覚えがあります。
OS-9について
https://libir.josai.ac.jp/il/user_contents/02/G0000284repository/pdf/JOS-KJ00000589209.pdf
OS-9はきちんとしたOSなので、マルチタスクが標準です。フロッピーからデータを読み込みつつ印刷をすると、それぞれの動作が一定時間続いた後に他の動作に切り替わるのが目に見える状態でした。CPUがひとつなので当然と言えば当然なのですが、各デバイスの動作が遅いので、並行処理と言うかバックグラウンド動作はあまり有効に機能している感じではありませんでした。それでもパソコンでマルチタスクができるなんて、未来がそこに来たと思えたものです。
OS-9は世界中で多く使われ、OS自身も発展して主に組み込み用途に居所を見つけたようです。68Kにも移植され、ずいぶんと後まで見かけた覚えがあります。6809拡張カードは比較的作りやすかったこともあり、多くのメーカからも発売されました。残念ながらここで開発された拡張カードは、さほど売れなかったようで、アメリカのメーカのものがGS時代まで生き残って使われたようです。
星光電子
OS-9で覚えたことは、その後UNIXなどを使うようになった時にとても役に立ちました。並行処理では必須のテクニックである割り込みをキッカケでタスクを実行するというスタイルに触れたことは、一般的なプログラミングである上から順に実行するというのと異なり、なかなか頭の体操が必要になるのですが、この切り替えが出来る人は意外と限られるのだなというのが、その後に気がつくことになりました。
ヘッダ写真は、以下を使わせていただきました。
https://commons.wikimedia.org/wiki/File:MC6809EP.jpg