V20ボードでMS-DOSを動かしたい! その3

おしながき

V20-MBCエミュレータの作成 ←開発中

 ・エミュレータ上でautoboot.binの実行(これは出来た)

 ・エミュレータ上でCP/M-86を起動 ← イマココ

 ・エミュレータ上でMS-DOSを移植して起動(予定)

V20-MBC上でMS-DOSを起動(予定)

 

V20-MBCエミュレータ現状

開発の途中経過も書こうかどうしようか迷うところだけど、せっかくなのでエミュレータの開発がどのようになされているのかも含めて書いてしまおうかと思う。

 

f:id:PocketGriffon:20200812010643p:plain
2020年8月12日現在のエミュレータの様子。

デバッグ表示をばっさりと切るとこんな感じでテキストが出てくる。

オープニングのテキストが表示され、V20がリセットされてから1939命令(ステップ)で出てくるI/Oアクセスで停止しているところ。

 

V20-MBCはあらかじめI/Oポート1番に機能情報を書き出し、ポート0番にパラメータ情報を書き出す事でAtmega32A側にコマンドを送る仕組みになっているようだ。

上記の場合は機能番号09に00というパラメータを送ったという意味。

そして09は「ディスク選択」の機能で、これから実装するところ(^^;

この後にトラックを選択する命令が来るらしいので、こちらも用意をしておく。

 

CP/M-86の内部構造をちゃんと知っているわけではないけれども、おそらく起動するずっとずっと前の状態なんだと思われる。

起動するまで、まだまだ先は長い。

 

V20エミュレータの実装

V20というかソフトウェア的には8086の実装ね(^^;

今の実装命令数は58、上にも書いた通りCP/M-86を起動するシーケンスを始めて1939ステップ目までの実行が出来るようになった。

8086エミュレータを作るたびに思うけれども、ホントに複雑な命令フォーマットだなぁ…と(ToT)

もう少しちゃんと動いてからレポート書こうと思いますが、だいーぶ苦労してます(^^;

 

エミュレータを作る時のひとつの極意は、参考とするべき本は複数用意した方が良いって事だと思う。

f:id:PocketGriffon:20200812014102j:plain

書いてある情報が本によって違ったりします(TOT)

誤植、間違い、すっぽ抜けなどなど。

こっちの本を見て、こっちの本を見て同じならヨシ、さらに実機上のSYMDEB.EXEで確認をして安心して実装を始めるって流れになる。

命令1つ1つにこういう手間を掛けながら作業していくのだ。

エミュレータの開発ってホントに根気だけが必要だと思うw

テクニックとか要らない、根気と根性!(^^;;

まぁ知識はそれなりに必要な気はしますがw

 

まだやる気があるのでもう少し頑張れる!(^^)

ではまた次回!(^-^)ノ