2025年8月23日土曜日

FM-11の増設2DドライブにFLEX9を移植

 FM-11にFLEX9を移植する第一段階として増設した2Dドライブに移植してみました

私は今までFLEX9の使いやすさが気に入って使用しておりましたので、FM-11を入手した時からFM-7系で使用してきたFLEX9を移植したいと考えていました。

私が使用しているFLEX9は大昔TSC社から直接購入した8インチ版のV3.01で古いのですが、特に不都合もないのでFM-7, FM77AV2, FM77AV40SXに移植して使用しておりました。

(今はネットの情報を元にしてFLEX9システムを構築することができます。私のブログ「FLEXシステムの作成方法(その2)・・・より具体的に」にその構築手順を公開しています。)https://www.blogger.com/blog/post/edit/1662007451717538019/8762567690989530647

いきなりFM-11の5インチ2HDに移植するのは敷居が高いと思い、まず増設した2Dドライブで動作させようと考えました。

2Dドライブ版であれば、IPLをFM-11用に書き換えるだけで良いのではと考えたのですが、そのIPLに良く分からない部分があり、試行錯誤を繰り返すことになりました。そのため途中から増設2DドライブをGOTEKに置き換えて、そのhfeファイルを書き直しながら動作するIPLを作成しました。

2Dドライブ0をGOTEKに置き換えた様子です。


中央が置き換えたGOTEKドライブ

IPL作成の手順

FM-11のBootLoaderやIPLについての知識は全くなかったので、次のような手順でIPLを作成しました。

1.既にあるIPLを読む。
・純正のF-Basic5.0のIPL
・はせりん様のブログ「FM-11用F-BASICのページ」(http://haserin09.la.coocan.jp/fbasic11.html)中の2D版F-Basic5.0のIPL
・「F-BASIC V3.0をFM-11で走らせる」(Oh!FM誌1985年2月号、1986年8月号)のIPL
上記のIPLの作成者の方に感謝いたします。

2.上のIPLを逆アセンブルしてFM-11固有の設定を抜き出す。
・最初はIPLがどのアドレスに読み込まれるのかも分からず$100、$300、$400などを仮定しましたが、その結果、どうも$400らしいと分かりました。
・いずれもF-Basic用のIPLでしたので、FLEX9用のIPLに不要と思われる部分を削除しました。

3.FM-7系で使用中のIPLに2.で抜き出した設定を追加する。
・2Dドライブで動作させるのでIPLのみを書き換えれば、FLEX9システムは変更せずにそのまま動作するはずと考えました。

手順としては簡単ですが、何しろFM-11のハード、ソフトが良く分かっていないので理解できない個所も多く、何度も書き直しては試すことになりました。

結局、IPLのアセンブルリストを作成ー>アセンブルしてバイナリを生成ー>エディタ上でFM-7用のDSK形式のシステムディスクのトラック0,セクタ1,2に書き込みー>D77形式に変換ー>GOTEK用のHxCFloppyEmulator.exeでhfeファイルに変換ー>USBに書き込んでFM-11のGOTEKにセットして起動テスト、という手順をひたすら繰り返すことになりましたが、GOTEKのお陰で、ほとんどの作業がWindows上で行なえましたので大変助かりました。

最初にFLEX9が起動したときの画面はこのようでした。


初めて起動したときの画面

FLEX9の起動メッセージやSTARTUPに書き込んであるファイルのメッセージが表示されていることから、ディスク関係は正常に動作していると判断できましたが、CRやLFが機能していない上に文字化けも生じています。

最初はIPLでのFM-11の初期設定がおかしいのかと思い、あちこちを変更してみましたが変化はありません。次に、表示関係ということでFLEX9システム中のCONSOLEを見直しましたが、もちろんFM-7系で正常に動作している実績のあるルーチンですのでおかしいところがあるはずはありません。。。


不具合の原因はCONSOLE CONTROLだった

困りはてて諦めかけましたが、ついに原因を突き止めました。

何と、Display Sub SystemのCONSOLE CONTROLコマンドが拡張されて書式が変更されていたのです。

FM-7系:$00,$00,$0C(コマンド),$23(制御フラグ1バイト,デフォルト値)
FM-11 :$00,$00,$0C(コマンド),$06,$D3(制御フラグ2バイト、デフォルト値)

これに合わせて4バイトのCONSOLE CONTROLを5バイトに変更することで正常に表示されるようになりました。DISK DRIVERルーチンはDMAを用いていない通常のものでしたが変更の必要はありませんでした。


正常に表示された起動画面


6809 以下が起動メッセージ、次行が日付要求画面で続く3行はSTARTUPに書き込んである自作の常駐モニター、ROM/RAM/Windows仮想ドライバ、ラインエディタの起動メッセージです。

以上で、とりあえず2D版のFLEX9がFM-11に移植できました。
しばらく使用してみましたが、特に不具合はないようです。

次に作成したIPLルーチンを示します。
意味が分からないまま入れてある部分もありますので、ご指摘頂けると有難いです。

 


今後は

あとは、これを2HDに移植すれば良いのですが、DISK DRIVERは当然書き直す必要がありますし、そこにF-Basicと同様にトラック0、サイド0を128バイトで処理することやDISKの読み書きにDMAを使うことなどを考慮すると、結構手間取りそうです。。。