見出し画像

6909ボードの話 - FLEXの移植

Z-80SOFTCARDが出たことにより、Apple][の可能性が広がりました。今まで6502に移植しなければ動かすことが出来なかったOSやアプリケーションをCPUをすげ替えることで使える可能性が広がりました。

ちょうど、その頃、Apple][のユーザコミュニティであるApple Bugs Club(略称ABC)で出会った方から、6809用の拡張カードを作ってみたのだけどと誘われて、出来たばかりの会社にお邪魔して、開発中の6809カードを見せてもらいました。

ちょうど究極の8bitとして一世を風靡していた6809をApple][で動かすことが出来たら素晴らしいと思い、プロトタイプをお借りして、いろいろといじらせていただきました。

ハードウェアは出来たものの、まっさらな状態ですから、最初にモニタを用意する必要があります。良さそうな既製品も無かったですし、仕様から検討するのも大変なので、元々の6502で動くモニタを、そのまま移植する方針で行きました。但しアセンブラは、ちゃんとしたものを用意しないと、どうにもならないので、中途半端なミニアセンブラと、どうせBASICには付いてくる浮動小数点演算ルーチンは割愛しました。

メモリアドレスはZ-80SOFTCARDのように、必要に応じてマップできるようになっており、試作品でもあったので、いろいろなOSを走らせるために柔軟な設定が出来るようになっていたと思います。

6809は68系ではあるので、リセットベクタなどは最上位アドレスになるのでモニタプログラムも既存のモニタと同じアドレス付近に置くことにしました。どうせ6502のモニタを呼ぶ必要はありません。6502側のシステムが使っている0ページから3ページに関しては、CPUを切り替える都度、入れ替えるわけにもいきませんので、モニタ側で異なるアドレスを前提に書き直すことも出来たのですが、ここはハードでマップしもらうことにしました。

Apple][のモニタは6502の特性を活かすように書かれているので、6502が苦手としているサブルーチンへのパラメタのやりとりを減らすために、入口が複数あって入口により微妙に機能を変えるような書き方が多く、そこまで真似をする必要もないのですが、うまく置き換えました。また使えるレジスタが増えたので、うまく活用しようとはしましたが、YおよびUレジスタはコードのバイト数が増えるので、値を一時的に退避するような使い方に留まりました。もう少し09の書き方に慣れていれば良かったのですが、はじめて本格的なコードを書いたので、いかにも移植しましたというコードではあったと思います。どうせ2Kには収まらなかったですし、EPROMだったので、その後も少しずつ手直しはしていました。

さて本体が動いたので、次はOSを走らせなければなりません。最初に取り組んだのがFLEXで、このOSはもともと6800向けだったものが6809で動作するように移植されたものです。手元に届いたのはアダプテーションガイドと書かれた冊子とフロッピーで、これに従って入出力などをハードウェアに適合させていくコードを用意して、OSに組み込んでいくわけです。

FLEX (operating system)

OSの移植ははじめてだったのですが、なるほど、こういう風にしていろいろなハードウェアで動作させられるようになっているんだと納得したものです。Apple][の基本設計からして割り込みをほとんど使っていなかったのは幸いでした。

だいぶ後なので、違うボードだと思いますが、FLEX移植に取り組んだ人はいたようですね - Apple IIGS に関する覚え書き - Apple IIGS Blog -

これで、どうやらOSも走るようになったので、動作確認はできましたが、グラフィックとかまでは移植していないので、少しばかり地味な感じです。OSとしてのFLEXは、CP/Mとあまり変わらないというか標準的なものです。その後もいろいろな拡張が行われて使われていたようです。ソウコウしているとOS-9が手に入ったぞという話を聞いて、今度はそちらの移植に取り掛かりました。OS-9の話は次の機会に。

2022/9/24追記

OS-9の話を書きました。

ヘッダ写真は以下から使わせていただきました。

https://commons.wikimedia.org/wiki/File:Verbatim_5.25_minidisk_tracks_1978.jpg



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