マーク5の拡張RAMでFLEX9を試す その7 (FLEX.SYS化)

ベーシックマスタレベル3でFLEX9を動作させる作戦の続きです。

これまで別々にロードしていたFLEX.COR, コンソールドライバー, ディスクドライバを合体させてFLEX.SYSにして
一発でメモリにロードできるようにしたいと思います

FLEX.SYSに合体
こちらで、SBC同等ですが一応FLEX9が使えるようになっていますので、王道のAPPENDコマンドでFLEX.SYS化してみました

S1エミュのデバッガで手作業でセットしていたバンク切換と割込みベクタセット、ドライブ番号指定、FLEX9の
エントリアドレスを変更しておきます

▼ローダの変更


▼コンソールI/Oドライバの変更


▼ディスクドライバの変更


▼FLEX.SYSのエントリアドレスをレベル3のモニタからFLEX9のスタートアドレスに変更



①FLEX.SYSに合体させたいドライバが動作することを確認しておく
面倒でもこれをしておかないと合体に問題があるのか、ソフト自体がダメなのか切り分けしにくいのでこの作業は必須ですね^^

②ドライバーソフトのバイナリレコードを用意する
AS63_DOSのクロスアセンブラでアセンブルすると前後にFBASIC用のデータが付いているのでそれをカット
それぞれ最初の5バイト、最後の6バイトを削除

F-BASICのファイルフォーマット詳細はこちら

③APPENDに必要なAPPENDコマンドとDUMPやDSP等のコマンドをD88イメージにインポート
④不要なデータを削除したバイナリを DRIVER.BIN, CONSOLE.BINをFLEXのバイナリレコード形式($02)でインポート
old68funさん作成のFlexDrvWinを使いFLEX.CORの入ったD88イメージにドライバ類のバイナリをインポートします

ドライバはFLEXのバイナリレコードとしてインポートするので開始アドレスを指定してインポートします
ディスクドライバのDRIVER.BINをロードアドレス $DE00でインポート
コンソールI/OドライバのCONSOLE.BINをロードアドレス$D370でインポート

⑤上記のファイルをインポートしたD88ファイルをドライブ1にセットし、FLEX9を起動



⑥APPENDコマンドでFLEX.SYSを作成
APPEND FLEX.COR,DRIVER.BIN,CONSOLE.BIN,FLEX.SYSでFLEX.SYSが作成されました


⑦FLEX.SYSが作成された先頭トラックとセクタをDUMPコマンドで確認

FLEX.SYSはトラック2, セクタ5から配置されていました

⑧FLEXローダで先頭トラックとセクタを指定してメモリにロード
(本来はローダのコードを書き換えるのではなくLINKコマンドで指定したトラックとセクタから起動するのが正しい
ローダだと思いますが、まだそこまでたどり着いていません・・・)
こちらのローダのトラックとセクタを変更しアセンブル後ローダを実行



⑨E FFE8 78 で拡張RAMに切り替えてメモリ内容チェック
C700付近


コンソールI/O付近


ディスクドライバ付近

無事、目的の場所にFLEX.CORとドライバがロードできました^^


⑨FLEXを起動
FLEX.SYSに全てを合体させたのでローダを実行するだけで起動できるようになりました^^
DN DEBUG.MOT
DL 0
U 4400
R PC 4400
T
トレース実行で数ステップ確認しながら進めてGで実行

無事起動しました^^


相変わらずのSBCj状態ですが、メモリへのロード作業は簡単になりました。
次はローダーをトラック0に置いてコールドブートローダによる直接起動ですね^^
現状、256バイトを超えてしまったので起動するかどうかが不安です・・

よく書籍などでFLEXやCP/M移植でOSが動作するようになると作業の手間は格段に楽になるという記事を見ますが
APPENDコマンドが動作するとバイナリエディタでの大変な作業がなくなりました^^

そんな王道のAPPENDでFLEX.SYSを生成した記録・・・

ベーシックマスタの情報は是非こちらからどうぞ → Amazon

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。 本文に全角文字を2文字以上含めて下さい (スパム対策)