ベーシックマスタレベル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の割込みベクタはこんな感じになっているようなので、次のように変更して実験中です。
割込ベクタ | HD6809 | L3のベクタ1 | L3のベクタ2 | 今回の設定 |
#RESET | $FFFE | $EED7 | ← | $CA00 |
#NMI | $FFFC | $0109 | RTI | $D370 |
SWI | $FFFA | $0106 | 00 00 00 | $0000 |
#IRQ | $FFF8 | $010C | JMP $EA87 | $D370 |
#FIRQ | $FFF6 | $010F | JMP $E131 | $D370 |
SWI2 | $FFF4 | $0103 | 00 00 00 | $0000 |
SWI3 | $FFF2 | $0100 | 00 00 00 | $0000 |
#RESETのベクタはFLEX9のコールドスタートを入れていますがモニタを作ったらハードの初期化に飛ばす必要あり。
⑤FLEX9の起動
R PC CD00
T
T
G
PCをFLEX9のエントリポイントの$CD00に変更。
トレース実行で数ステップ確認しながら進めてGで実行。
FLEX9がコールドスタートすると日時を入力して続行。
トランジェントコマンドも一通り動作OKです。
DSPコマンドでファイル一覧表示。
ASMBでアセンブルしてみると正常終了しましたが、画面の文字が緑になりました^^
レベル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