*DOS Emulater の詳細ページ [#c0942f69]
-ぼやきてきな開発状況
|部位|状況|近況|
|ライブラリ|23%|OSASK側のAPIをデバイスエミュレータが使えるようにするライブラリ。現在DOS側物理メモリ関係整理中|
|CPU|33%|プロテクトモードとFPU命令が使えない。32bitオペランド命令は使える。 BIOSレベルでProtectedModeを利用する可能性があるためPMはサポートしないといけないようだ。INTR/NMIピンを見るようにしてみましたが、IRQの分岐に失敗しているようです。また、インタプリタ形式(=bochs式)のみ。動的リコンパイルモードは原理の実装が難しい為、先送り。サポートしないかも。|
|BootROM|7%|DOSエミュレータ部分実装中。BIOSも一部エミュレーションする。ファイル関係のライブラリが大体実装できたので次は%%%EXEヘッダ…%%%、じゃなくてメモリ周りをSIZE(8){一応}整理中。|
|DEVICE|10%|AT互換機のハードウェアを一部再現。DOSエミュレータの場合はなくてもいいだろう。タイマ割り込みだけは実現しないといけないだろうか…。ハードウェアドライバ別組み込み式を採用。DOSEmulaterが各デバイスファイルを読み込み、初期化処理に実行を移す。実行された側がハードウェア(メモリ/IOやサブルーチン)を登録してゲストOS側からのアクセス等があった場合に直接''的''にプロセスをデバイスファイル側がDOSEmulaterの資源なども使用されつつエミュレーションする。|
|DMAC|20%|I/O入出力はOK。あとは転送をどういうタイミングで行うかだろう。|
|PIT|5%|I/O入出力のみ。割り込みはまったく発生しない。|
|PIC|50%|割り込みIRQも多分(PIC側は)実現。回転モードを使用できないが、問題ないだろう。|
|VGA|1%|ハードウェアがあまり理解できない。ATのグラフィック周りは不思議だらけだ。画面をONするのに一体何ヵ所出力しないといけないだろう。まぁとりあえずはTextVRAMに書かれているものをそのままテキスト表示してみる。|
|FDC|0%|フロッピーディスクのアクセスは割りと簡単そうですが、後回し。もしかしたら実装しないかも。|
|ATA|3%|よく意味が分からない。AAや55をoutしているのはポートの存在チェックなのか?、でもちゃんと無視されていないのか?(書かれたAAや55を読み出し時にそのまま戻すことが)|
|A20|0%|再現する予定はない。一応DOSでもHMA等を利用するはずだし、第一自作BIOS自体がA20を当てにしないから大丈夫だろう。|
|その他|----|いまのところ予定は無い。が、ここに書かれることも無い(笑)。|

-スクリーンショット
--bochsのBIOS/VGA BIOSを使用して起動してみたところ~
|#ref(biosboot.png)|#ref(biosboot2.png)|
//--bochsのブートROMを自作のbiosに差し替えて実行してみたところ(bochsでの実行はこれから変更ありません)~
//#ref(atbios6.png)
--DOSEmulaterで実行した場合(ファイル選択画面)/(と!GUIDE!.TXTを選択した場合)~
|#ref(atbios8.png)|#ref(atbios9.png)|
--SIZE(11){そういえば、K-tanのVGA BIOSをこのDOSEmulaterで走らせるとこけるんだよなぁ。なぜそこが実行されているか意味不明…(あ、DOSEmulater側がね…一応)。}
|#ref(atbiosk1.png)|#ref(atbiosk2.png)|
~
//---なぜに文字が化けるのだ? Bochs BIOS の場合はVGA ROM BIOSから帰ってきてからもちゃんと文字列が表示されているのに…orz
//---とりあえず文字化けはAH=0x13,AL=0x01のファンクションを使うことによって回避。
//---このスクリーンショットは、一連のハードウェアを初期化した後、直にbiosのDOS APIエミュレータによってDOS実行ファイル("COMMAND.COM"など)を読み込もうとしている。読み込んだ後は実行に移す。
---読み込みに成功したので、次の段階へ!…EXEアローケーションして、PSP作成して、メモリブロック作成して…、実行を移す。これでいいのか…。何かが足りないような…?
-%%開発段階で使用中のデータのダウンロード%%
//|名前|バージョン|用途|仕様|ダウンロード|
//|DOS API Emulation BIOS|Ver 0.1.3(α版)|Bochs対応BootBIOS|F8000~,32KB|#ref(ATBIOS.ROM)|
--SIZE(9){BIOSだけ配布することに意味がなくなったので、廃止しました。そのうち、DOSEmulaterβとBIOS%%%セット%%%を一纏めにした'''ディスクイメージ'''を配布する予定です}
*進行状況 [#c715088e]
-とりあえずDOS互換ファンクションをホスト上のハードウェア相当のレベルで実装して、biosからそのハードウェアに指令を出す形式にする予定を立てました。 -- '' '' SIZE(10){2006/07/09 (日) 09:57:10}
-現在DOS APIの実装中です。それに伴って簡易的にスロットを扱えるサブルーチンを構築中。 -- '' '' SIZE(10){2006/07/10 (月) 06:47:28}
-アプリ動作するまであと少し!?、とりあえずOSASK側のファイルを読み込めるようになりました。 -- '' '' SIZE(10){2006/07/11 (火) 13:31:57}
-日本語はとりあえずおいといて、メモリ管理(MCB関係)を実装中。 -- '' '' SIZE(10){2006/07/13 (木) 13:09:33}
-ah=48h,ah=49h,ah=4ahの実装完了。続いてPSP関係のファンクションを実装しないと!(ah=48hの時に作成させるバッファには特定のアドレス(内部変数)の値を書き込むようにした為) -- '' '' SIZE(10){2006/07/17 (月) 04:30:38}
-内部的に使用しているライブラリの整理中。もうしばらく進展できないようです…。 -- [[nika]] SIZE(10){2006/07/24 (月) 04:36:18}
-もしかしたら今後はbochsの様な独自ハードウェア(I/O)でBIOSレベル(DOSが動作するレベル)での互換を採用したAT互換機のエミュレータに発展させるかもしれません(期待はしないで下さい)。 -- [[nika]] SIZE(10){2006/07/24 (月) 04:40:24}

#comment
----
*コメントらん [#x582b549]
-なんとなくスクリーンショットにも使用している自作BIOSを公開してみる(同じファイル名でその都度更新する予定です)。 -- [[nika]] SIZE(10){2006/07/10 (月) 00:29:39}
-wikiのテスト -- [[osa:nika]] SIZE(10){2006/07/12 (水) 09:42:37}
-とりあえず、ハードウェア相当で日本語を表示できるようにしよう(グラフィックモードでは無く(英語)テキストモードで)。ファンクションキーで切り替える、とか。 -- [[nika]] SIZE(10){2006/07/12 (水) 11:53:49}
-ここにあった開発状況などは上記の進行状況へ移動させました。 -- [[nika]] SIZE(10){2006/07/17 (月) 04:34:20}
-機器が接続されていないI/Oポートの読み出しは0xFFを返せばいいんだよね? -- [[nika]] SIZE(10){2006/07/22 (土) 13:49:51}

#comment

[リロード]   [トップ] [一覧] [単語検索] [最終更新]   [最終更新のRSS]