* BIOSを呼び出そう
 -(by [[K]], 2011.02.03)
 -発展課題のページ(全部読む前にここを読むのは混乱するのでおすすめじゃないです)
 ----
 -C言語からBIOSを何とかして呼び出そうという内容。これができれば、HDDやUSBメモリだって読めるはずだし、いやそれよりも書き込みが出来るはず。画面モードだってOSを終了することなく何度でも切り替えられる。・・・他にいいことあるかな?うーん、ないかもしれないけど、とにかくそれでもこれは可能性としては悪くない!
 
 *** 方法
 -エミュレータを使います。32bitモードを一時的に中断して16bitモードに戻ったりするわけではありません。・・・エミュレータといってもqemuじゃないですよ。BIOSを実行するためのエミュレータを作るんです。
 -C言語でCPUのエミュレータを(適当に)作って、それを使ってBIOSを実行します。きっとすごく遅いし、プログラムも長くなるでしょう。でも、それでいいんです。だって分かりやすいですから。
 -エミュレータを使います。32bitモードを一時的に中断して16bitモードに戻ったりするわけではありません。
 -エミュレータといってもqemuじゃないですよ。C言語でCPUのエミュレータを(適当に)作って、それを使ってBIOSを実行します。きっとすごく遅いし、プログラムも長くなるでしょう。でも、それでいいんです。だって分かりやすいですから。
 -この手のことをやるとき、CPUについている仮想86モードというのを使うのがよくある方法なのですが、仮想86モードを使うとなると、ページングの説明をしなければいけなくなりそうだし、例外処理についても延々と説明しないと理解できません。そしてその上で仮想86モードそのものの説明だって必要です。そんなのぜんぜん面白くありません。僕たちは、CPUの勉強をしたいわけじゃなくて、BIOSを呼び出したいわけです。
 --しかもそうやって苦労して仮想86モードのことを理解したとしても、それは結局インテルのCPUにしか通用しない知識だったりするので教育的な価値も低い。むしろエミュレータを大雑把に理解するほうが、ずっといい経験になるはず。
 -ということで、CPUのエミュレータをC言語で書きます。CPUがどんなことをしているかの参考にもなるかもしれません。プログラムは理解しやすさ重視で、エラー処理などもほどほどで書いています。適当に読んで適当に改造すれば、いろいろ遊べるかもしれません。
 
 *** プログラム
 - http://k.osask.jp/nosup/nosup.html に行って、[he86_xxx.zip]というファイルを探してください。xxxの部分はバージョンです。
 --最初のバージョン(he86_00b)は2011.02.03の夜中までにはアップロードします。
 
 *** 現状&歴史
 -まだ未完成です。
 -2010年の5月にはアイデアがまとまる。でも忙しくて書き始めることができない!
 -he86_00b : 少し時間ができたので書いてみた。最初のリリース。まだ数種類の命令しか理解できないので、BIOSを呼び出すことすらできない。でも短いので、このプログラムがどういう構造になっているのかは、多分分かりやすい。・・・今後何回かバージョンアップして、VESAで画面モード切り替えくらいができるところくらいまではやりたい。
 
 * こめんと欄
 
 #comment

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS