*もくじ。 [#u1e5b09f]
#contents

*DOSエミュレータ(仮) の詳細ページ [#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エミュレータの場合はなくてもいいだろう。タイマ割り込みだけは実現しないといけないだろうか…。ハードウェアドライバ別組み込み式を採用。DOSEmulatorが各デバイスファイルを読み込み、初期化処理に実行を移す。実行された側がハードウェア(メモリ/IOやサブルーチン)を登録してゲストOS側からのアクセス等があった場合に直接''的''にプロセスをデバイスファイル側がDOSEmulatorの資源なども使用されつつエミュレーションする。|
//|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)|
|#ref(atbios11.png)|
|#ref(atbios12.png)|
---IDE関係の(と思われる)I/O空間を強制的に切り離しました。一応本来(?)のアドレス以外のトラップしたI/Oアドレスを載せておきます。
 0x03E6, 0x01E8~0x01EF
 0x0366, 0x0168~0x016F
//--bochsのブートROMを自作のbiosに差し替えて実行してみたところ(bochsでの実行はこれから変更ありません)~
//#ref(atbios6.png)
--DOSEmulatorで実行した場合(ファイル選択画面)/(と!GUIDE!.TXTを選択した場合)~
|#ref(atbios8.png)|
|#ref(atbios9.png)|
//--SIZE(11){そういえば、K-tanのVGA BIOSをこのDOSEmulatorで走らせるとこけるんだよなぁ。なぜそこが実行されているか意味不明…(あ、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)|
|公開日|名前|バージョン|ダウンロード|備考|
|2006年07月31日|DOS Emulator QEMU用ディスクイメージ版|Ver 0.1.9(α版)|[[lzh書庫版:http://com-nika.osask.jp/de_01_9.lzh]]/[[SAR版:http://com-nika.osask.jp/de_01_9.sar]]|ブート失敗が確認できるだけ|
--%%SIZE(9){BIOSだけ配布することに意味がなくなったので、廃止しました。そのうち、DOSEmulatorβとBIOS%%%セット%%%を一纏めにした'''ディスクイメージ'''を配布する予定です}%%
--DOS Emulator(仮)のディスクイメージ版を公開しました。まだ''アプリを実行できるレベルではありません''。

**ゲストOS(DOS)に認識させるフロッピーディスクについて [#e34b422d]
ゲストOS側には1.44MBドライブと認識させるつもりですが、現在のOSASKはFDベース(CFやATAもFDのディスクイメージを利用する形式)のOSなので、1.44MBのベタファイルなんて到底FD内に置けません。~
そこで、どういう風に1.44MBドライブを実装するのか、意見を募集したいと思います。~
とりあえず自分で考えてみたサンプルを3個提示してみたいと思います。~
この中のこれがいい!とかもこのコメント欄にお書き下さい。詳細は別のページとかを作ってそこにリンクさせてもいいと思います。~
----
-不良セクタ形式:特殊なディスクイメージを使用し、後ろのセクタを不良セクタなどと認識させて、実質720KBな1.44MBフロッピーディスクとする。ディスクイメージは1.44MBベタのいらないセクタの部分を削るか特殊な形式を作る(既にあったりする?) -- [[nika]] SIZE(10){2006/07/31 (月) 10:46:27}
-2DDブート:最初から2DD形式(片面のみ、720KB)として認識させ、ディスクイメージは720KBで済むようにする。これで問題があるのは、2DDからbootできるのか、DOS等のOSが2DDブートに対応しているのか。 -- [[nika]] SIZE(10){2006/07/31 (月) 10:47:48}
-随時作成形式:OSASKのファイルを直接FDのセクタに配置する形式。OSASK側でファイルリストを作成し、FDドライバ(エミュ本体)がリストを読み込み、内部にディスクイメージを作成する。ブートセクタのファイルもOSASK側に用意してファイルリストで定義する。FATやディレクトリエントリなどはその都度マッピングする。 -- [[nika]] SIZE(10){2006/07/31 (月) 10:53:02}
-もしくはこれらの形式をmenu等を使用して選択する…そんなことができるのかはさておき。 -- [[nika]] SIZE(10){2006/07/31 (月) 15:33:55}

#comment

*進行状況 [#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}
-IDEデバイスを無視したら動作しそうだったので、1個ずつ表にあるアドレスも無視するようにしてみました。とりあえずint 18hが失敗してますが、bios実行は(irqやdma等を除き)成功してる模様です。 -- [[nika]] SIZE(10){2006/07/28 (金) 05:40:33}
-次はFDDをつないでBochsBIOSからFDブートしなければなりません。ってことはFDの実装と本格的なIRQ/DMAの実装が必要になる…。実装間違いを起こさないように注意しなきゃw -- [[nika]] SIZE(10){2006/07/31 (月) 01:40:41}
-ディスクイメージ版を公開しました。QEMU用のosask4.8が入っているので、QEMU上で実行させてください。また、一連のファイルを実際のFD等にコピーできれば実機で動作させることも可能です。ただし、-v48aが効いているはずなのでv4.8以降専用です。 -- [[nika]] SIZE(10){2006/07/31 (月) 03:16:54}

#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}
-内部資料用にOS-Wiki内のページをコピーしました。OS-Wikiでもページ名に統一性がないなぁ、と思った。bochsというページも今頃発見したので、bochs VBE display adapterもなんとかなりそうな感じです。 -- [[nika]] SIZE(10){2006/07/28 (金) 07:06:55}
-もうそろそろディスクイメージ版を出そうと思います(int 18hが出るのを確認できるだけですが)。 -- [[nika]] SIZE(10){2006/07/31 (月) 01:40:41}
-ディスクイメージ版を公開しました。 -- [[nika]] SIZE(10){2006/07/31 (月) 10:36:25}

#comment

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