マーク5の拡張RAMでFLEX9を試す その6 (FLEX9の起動)

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

こちらで作ったFLEXローダを使い拡張メモリにFLEX9をロードし、こちらで作ったConsole, Disk ドライバをメモリにロードしてFLEX9を起動します

とりあえず、レベル3をの拡張メモリで一応FLEX9が動作しましたが、色々残件があるので調べながら解決しないと
いけません^^;;;
しかし、これはベーシックマスタレベル3ではなくレベル3の中に入っている6809のSBCということになるんだと
思います^^;;;

■起動の手順をメモ
FLEXローダは今のところ256バイト内に収まっているのですが、まだトラック0, セクタ1に置いていませんので
手動で操作しながらメモリにロードしています^^;;;

①FLEX.CORのディスクをドライブ0にセット、プログラムの入ったディスクをドライブ1にセット

②FLEX.CORを拡張メモリにロード
FLEXローダ(DEBUG.MOT)をメモリの$4400~ロードして実行
DN DEBUG.MOT
DL 0
U 4400
R PC 4400
T
T
G
アセンブルしたバイナリをモトローラSに変換しDEBUG.MOTで保存
これをDLコマンドでオフセット0でメモリにロード
U 4400でメモリにロードされたプログラムを確認
PCを$4400に変更してトレース実行しながら数ステップ確認しGで実行

DEBUG.MOTにアセンブルしたFLEXローダを$4400から展開して実行


FLEXローダによりFLEX9が64KB拡張メモリにロードされて、レベル3のモニタに移行します



③コンソールI/Oドライバを拡張メモリにロード
E FFE8 78
D D370
DPL 1 0
D D370
$FFE8に$78で拡張RAMを読書きモードに変更し、$D370~のエリアが拡張RAMに切り替わっていることを確認
DPL 1 0 で拡張RAMにオフセット0でI/Oドライバをメモリにロード
D D370で拡張メモリに切り替わりロードされていることを確認

④ディスクドライバのロード
D DE00
DPL 1 0
D DE00
D DE00で$DE00~のエリアが拡張RAMに切り替わっていることを確認
DPL 1 0 で拡張RAMにオフセット0でディスクドライバをメモリにロード
D DE00で拡張メモリに切り替わりロードされていることを確認

④割込みベクタの設定
E FFFE CA 00
E FFFC D3 70
E FFF8 D3 70
E FFF6 D3 70
D FFF0
#RESET, #NMI, #IRQ, #FIRQのベクタを設定して
D FFF0で設定内容確認

レベル3の割込みベクタはこんな感じになっているようなので、次のように変更して実験中です。

割込ベクタHD6809L3のベクタ1L3のベクタ2今回の設定
#RESET$FFFE$EED7$CA00
#NMI$FFFC$0109RTI$D370
SWI$FFFA$010600 00 00$0000
#IRQ$FFF8$010CJMP $EA87$D370
#FIRQ$FFF6$010FJMP $E131$D370
SWI2$FFF4$010300 00 00$0000
SWI3$FFF2$010000 00 00$0000

#RESETのベクタはFLEX9のコールドスタートを入れていますがモニタを作ったらハードの初期化に飛ばす必要あり

⑤FLEX9の起動
R PC CD00
T
T
G
PCをFLEX9のエントリポイントの$CD00に変更
トレース実行で数ステップ確認しながら進めてGで実行



FLEX9がコールドスタートすると日時を入力して続行

トランジェントコマンドも一通り動作OKです

DSPコマンドでファイル一覧表示


ASMBでアセンブルしてみると正常終了しましたが、画面の文字が緑になりました^^
カラーRAMにアクセスがあるのかな・・・


レベル3という名のただのSBCですがMP-9878メモリ上にFLEX9を載せてMP-1802経由でMP-3560を読書きしながらFLEX9が起動しました

使っているFLEX9はこちら. 入手に3万円超えのソフトを活用できて嬉しい気分です^^;;

色々残件はありますが、とりあえずFLEX9が起動したということでちょっと満足しています^^
とりあえず、ディスクドライバーを作るという目標は達成しました!

既知の残件
コンソールでESC($1B)が反応しないので、エディタやコマンド中断ができない
→コマンド実行中にESCを送っても一時停止になるだけで中断できない。その後何か1文字送ると中断する
カラーRAMにアクセスしているっぽい
ドライブ指定を実装してない
MOTORをOFFしていない
FLEX.SYSに合体してコールドブート
何かのタイミングでFDCがフリーズする
→SEEK ERRORで止まっているようなのでタイミングが悪いか何かの割込みでおかしくなる?
その他もろもろ、残件いっぱい^^
ディスクドライバは簡易すぎてよくコケるので、時間ができたら真面目に作ります^^;;;

そんなFLEX9がマーク5の拡張RAMで動作して、2D用のディスクドライバが完成した記録・・・

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

コメントを残す

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

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