*不完全MS-DOSエミュレータ製作計画 [#b3d34080] この計画は星野個人的なものであり、osask計画のサブプロジェクトなどではありませんが、何かご存知でしたら是非お教えください。~ **現状目標 [#kffffa0c] 16bitで.com形式が動くだけの、エミュレータと言えるかかなり怪しいアプリを作るかもしれません。~ **現状成果物 [#qe6e226e] 特にありません。~ **開発記 [#sfdaa7bf] 開発の様子やらなんやらをたまに書き込みます。(もしかしたら規約違反?)~ 読んでもどうしようもない個人的な感想なども多いです。~ ***MS-DOSエミュレータについて [#v1bfe10d] 16bitなら簡単そうで、そこらじゅうにソースが転がってもよさそうですが、なぜかこの類の私が手を出せそうなフリーソフトは見当たりませんでした。~ でもよく考えたら、windowsがコンソール上でMS-DOSをエミュレートしてくれるので、わざわざ作る必要も確かになさそうですが…~ 私は初めてのパソコンがwindowsの世代なので、ms-dosの事は正直よくわかりません。~ とりあえずCPU固有の命令(mov ax,10とか)以外はint 0x21でのシステムコール系統を何とかすればいいかなぁ、と楽観視しています。~ でも、そもそもシステムコールは文字の出入力とファイル操作以外に何をするのかわからない、とかいうレベルです。~ 開発方針としては、naskを使ってmov ax,bxとかがどんなコードに変換されているのか地道に調べるところから始めようかと…。~ 手元にwindowsのコンソールというmicrosoft公認(?)のms-dosエミュレータが有るので、これを積極的に活用していくつもりです。~ ちなみに、最終的にはこの計画で調べた機械語を基にして、16bitのみ対応の超小型アセンブラを作るつもりです。~ とはいっても、今のところ絵に描いた餅ですが…。~ (サイズはnaskの1/2、機能はnaskの1/10みたいな感じで…。)~ ***エミュレータの基本構造 [#q8c1a1cd] 私自身がこれまでにエミュレータを作ったことは有りませんし、ソースを眺めたこともないので、一般的なエミュレータとはかけ離れたものになると思います。~ 一応の方針としては、当たり前かもしれませんが「ファイル読み込み--->エミュレート--->終了」という感じでしょうか?~ ***リアルモードでのレジスタの挙動 [#o09679fc] よく考えたら機械語うんぬんかんぬん以前に、レジスタについて理解していないことが多すぎたので、そこの辺の詳しい挙動を調べてみます。~ これにはwindowsコンソールのdebug機能が便利そうなので使ってみました。~ (microsoftが作ってるので結果の信憑性も高そうですし。)~ ''実験その一/alやahに0x100以上を入れて見る''~ 当たり前ですが無理でした。~ mov al,0x100ぐらいは値がahに繰り上がってah=0x01、al=0x00になるかも…と思ってやってみただけなので。~ ''実験その二/alに0xffを入れた後inc alしてみる'' 結果はax=0x0000でした。~ これも同じくahへの繰り上がりシステムを恐れてやってみましたが、以外とalとahは疎遠のようです。~
(This host) = http://osask.net