見出し画像

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


この記事が気に入ったらサポートをしてみませんか?

ピックアップされています

Apple][ 回顧録

  • 67本

コメント

kzn
APPLE2のTOMATO-9Eを作ってみようかとおもいます。https://youtu.be/ZOE5eCA1Xss
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。
前の東京オリンピックの年生まれ、東海道新幹線と同い年。もうだいぶ大きくなってしまった二人の子供のお父さんをやっています。今のお仕事はarduinoとかraspberry piを売っている電子部品通販サイトの中の人です。
OS-9とBASIC09|kzn
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1