このページは更新を停止しました。新しいページが作成されています。こちらをご覧下さい。

もくじ。

ただしリンクは機能しません。URLに"#"が付くだけです。
このページは横幅がある程度必要で、縦方向にも長いのでSXGA(1280x960)以上の画面解像度を推奨します。


DOSエミュレータ(仮) の詳細ページ

DOS Emulator(仮) の動作について

DOS Emulator(仮)は、DOSエミュレーションをハードウェアレベル(一部BIOSレベル)でエミュレーションするソフトウェアです。

  • フルアセンブラによる動作で、そこそこ快適。しかもKL-01でリリースが可能(添付物は含まない)。
  • Bochs BIOS & VGA BIOSを使用することにより、BIOS/ROMが比較的簡単に入手可能
    • CMOS RAMの使い方が特殊。また、自前に対応するBIOSとVGABIOSを入手しなければならない。
  • ハードディスク/CD-ROM/PCMCIAのエミュレーションが無い
  • ゲストOS(DOS)で見える周辺機器は別途ドライバを組み込んで追加する形式なので、ドライバを入れ替えるだけで認識されるハードウェアを変更可能。
  • VBEまたはIBM 8514/A互換で、DOS上でも高解像度を利用可能(予定)。
  • もしかしたらEMM386.EXEも利用可能になるかも?(不明)。
  • CPUはi486相当のFPU非搭載の命令をサポート。(現在はPM/PG関連以外は大体サポート)
  • DOS汎用アプリはもちろん、AT互換機依存アプリも一部動作(PC98用は動作しない。TOWNS用は不明)。
  • (編集中)

スクリーンショット

  • FDCのエミュレーションを諦め、int 13hフックでMt.orzを起動させた場合
    atbios21b.png

    atbios23.png

    • Bochs用のMt.orz v0.1のダウンロード
      ファイル形式ファイルサイズダウンロード
      LHA版14681
      SAR版12451
      詳細は付属のドキュメントを参照して下さい。
    • IDE関係の(と思われる)I/O空間を強制的に切り離しました。一応本来トラップしたI/Oアドレスを載せておきます。
      0x03F6, 0x01F0~0x01F7
      0x0376, 0x0170~0x0177
      0x03E6, 0x01E8~0x01EF
      0x0366, 0x0168~0x016F
    • Bochsの挙動を見ると、マスタ/スレーブに何も繋がっていない場合はFFhじゃなくて00hを返せばいいのかも?
  • タイトルバーを某エミュレータ名にして、行間と字間をあけてそれっぽくした場合(ネタです。)
    atbios12q.png
  • ちなみに本物のエミュレータの画面(こうならないといけない…)
    qemu2.png
  • K-tanのVGABIOSをDOSEmulatorで走らせてみても、まだちゃんと動作しないんだよなぁ。なぜそこが実行されているか意味不明…。
    atbiosk3.png
    atbiosk4.png

  • 開発段階で使用中のデータのダウンロード
    公開日名前バージョンダウンロード備考
    2006年07月31日DOS Emulator QEMU用ディスクイメージ版Ver 0.1.9(α版)lzh書庫版/SAR版ブート失敗が確認できるだけ
    • BIOSだけ配布することに意味がなくなったので、廃止しました。そのうち、DOSEmulatorβとBIOSセットを一纏めにしたディスクイメージを配布する予定です
    • DOS Emulator(仮)のディスクイメージ版を公開しました。まだアプリを実行できるレベルではありません

ゲストOS(DOS)に認識させるフロッピーディスクについて

ゲストOS側には1.44MBドライブと認識させるつもりですが、現在のOSASKはFDベース(CFやATAもFDのディスクイメージを利用する形式)のOSなので、1.44MBのベタファイルなんて到底FD内に置けません。
そこで、どういう風に1.44MBドライブを実装するのか、意見を募集したいと思います。
とりあえず自分で考えてみたサンプルを3個提示してみたいと思います。
この中のこれがいい!とかもこのコメント欄にお書き下さい。詳細は別のページとかを作ってそこにリンクさせてもいいと思います。


  • 不良セクタ形式:特殊なディスクイメージを使用し、後ろのセクタを不良セクタなどと認識させて、実質720KBな1.44MBフロッピーディスクとする。ディスクイメージは1.44MBベタのいらないセクタの部分を削るか特殊な形式を作る(既にあったりする?) -- nika 2006/07/31 (月) 10:46:27
  • 2DDブート:最初から2DD形式(片面のみ、720KB)として認識させ、ディスクイメージは720KBで済むようにする。これで問題があるのは、2DDからbootできるのか、DOS等のOSが2DDブートに対応しているのか。 -- nika 2006/07/31 (月) 10:47:48
  • 随時作成形式:OSASKのファイルを直接FDのセクタに配置する形式。OSASK側でファイルリストを作成し、FDドライバ(エミュ本体)がリストを読み込み、内部にディスクイメージを作成する。ブートセクタのファイルもOSASK側に用意してファイルリストで定義する。FATやディレクトリエントリなどはその都度マッピングする。 -- nika 2006/07/31 (月) 10:53:02
  • もしくはこれらの形式をmenu等を使用して選択する…そんなことができるのかはさておき。 -- nika 2006/07/31 (月) 15:33:55

選択肢投票
不良セクタ形式4
2DDブート作戦形式0
リストから作成形式1
その他の方法/形式0



  • 1ヶ月立ちましたので勝手ながら締め切らせてもらいました。-- nika 2006/08/31 (木) 08:50:51

最終目標

とりあえず以下のOS/DOSアプリが動作すること。

mtorz.png
Mt.orz(画面写真はv0.1)




neco2.png
ディスク操作アプリ(NECO)




進行状況

  • とりあえずDOS互換ファンクションをホスト上のハードウェア相当のレベルで実装して、biosからそのハードウェアに指令を出す形式にする予定を立てました。 -- 2006/07/09 (日) 09:57:10
  • 現在DOS APIの実装中です。それに伴って簡易的にスロットを扱えるサブルーチンを構築中。 -- 2006/07/10 (月) 06:47:28
  • アプリ動作するまであと少し!?、とりあえずOSASK側のファイルを読み込めるようになりました。 -- 2006/07/11 (火) 13:31:57
  • 日本語はとりあえずおいといて、メモリ管理(MCB関係)を実装中。 -- 2006/07/13 (木) 13:09:33
  • ah=48h,ah=49h,ah=4ahの実装完了。続いてPSP関係のファンクションを実装しないと!(ah=48hの時に作成させるバッファには特定のアドレス(内部変数)の値を書き込むようにした為) -- 2006/07/17 (月) 04:30:38
  • 内部的に使用しているライブラリの整理中。もうしばらく進展できないようです…。 -- nika 2006/07/24 (月) 04:36:18
  • もしかしたら今後はbochsの様な独自ハードウェア(I/O)でBIOSレベル(DOSが動作するレベル)での互換を採用したAT互換機のエミュレータに発展させるかもしれません(期待はしないで下さい)。 -- nika 2006/07/24 (月) 04:40:24
  • IDEデバイスを無視したら動作しそうだったので、1個ずつ表にあるアドレスも無視するようにしてみました。とりあえずint 18hが失敗してますが、bios実行は(irqやdma等を除き)成功してる模様です。 -- nika 2006/07/28 (金) 05:40:33
  • 次はFDDをつないでBochsBIOSからFDブートしなければなりません。ってことはFDの実装と本格的なIRQ/DMAの実装が必要になる…。実装間違いを起こさないように注意しなきゃw -- nika 2006/07/31 (月) 01:40:41
  • ディスクイメージ版を公開しました。QEMU用のosask4.8が入っているので、QEMU上で実行させてください。また、一連のファイルを実際のFD等にコピーできれば実機で動作させることも可能です。ただし、-v48aが効いているはずなのでv4.8以降専用です。 -- nika 2006/07/31 (月) 03:16:54
  • とりあえずFDドライバを実装中。しかし、ATAが実装されていないとFDCも同時に存在が検出されないようです。ATAハードウェアを実装して、かつ、ATAドライブが繋がっていない状況を作らないといけないようだ。つまり、CDROMドライブ/HDD/FDDはATA(IDEボード?)で提供されているんだろう。ATAが全く存在しなければ、どこからもブートできない環境になるってことか。 -- nika 2006/08/02 (水) 11:43:59
  • なので、rombios.cのソースをダウンロードして、Cのソースを見ながら(パッチせずに)動作できるようにFDD/ATAドライバを実装しなければならないだろう。C言語が得意じゃない私がソースを読んで仕様が分かるだろうか…(汗)。 -- nika 2006/08/02 (水) 11:47:19
  • どこかに「IDE(ATA)ポートの存在チェック方法」とか「FDコントローラ」のエミュレータ側の実装方法とかころがっていないものか…(こんなの利用する人なんてほとんどいないというか全くいないですよねぇOTL) -- nika 2006/08/02 (水) 11:49:29
  • rombios.cを解読中。 -- nika 2006/08/02 (水) 22:57:30
  • rombios.cでcmosアクセスしているのを見て、そういえば起動時のcmos-ramはall 0で返していたような気がする。これでFDドライブが無いと認識されている可能性も無くは無いかも。 -- nika 2006/08/04 (金) 11:38:17
  • やっぱりCMOS設定がよくなかったようだ。Bochs上のCMOSデータを返すようにしたら(64バイト)、FDDも試すようになりました(多分表示上だけではないはず)。 -- nika 2006/08/04 (金) 13:38:39
  • qemuとBochsなどは保存していないみたいだけど、本来はCMOS-RAMは保存されないと意味がないので、256バイトのcmos.datなどとして読み込み、保存をするようにしよう。とりあえずBochsBIOSから自作BIOSになるときに必要になるかもしれないし(汗)。 -- nika 2006/08/04 (金) 19:01:26
  • とりあえずMt.orzのOS版が動作するように実装中。当面(FDDがちゃんと実装されるまで)の目標になります。 -- nika 2006/08/07 (月) 07:01:34
  • PM/PGの実装をしたらOSAkkieがちょうどいいかも。起動したら問答無用でカウントアップされていくし。 -- nika 2006/08/07 (月) 11:40:18
  • もしかしたらBochs BIOS+VGA BIOS+OS ROM(OSが組み込まれたROM)のような形式にするかもしれません。いっそのこと独自OSでも作っちゃうかなぁ…。もちろんDOSアプリ実行時はDOS互換で。いや、難しいか。 -- nika 2006/08/08 (火) 19:39:19
  • 今日、K-tanからアドバイスをもらいました。bochsでATAをdisableにした状態で起動してみて、もしその状態でFDイメージがブートできるならbochs上でどんな挙動をするのか確認したらいいかもしれない、など言われました。 -- nika 2006/08/09 (水) 22:09:59
  • たしかにそうだな、と思ったのでbochsの挙動を探ることにします(bochsでata0~3をenabled=0にしたが、FDCはアクセスされている。FDイメージ(DOS)が普通に起動する)。bochsのATAの挙動…w -- nika 2006/08/09 (水) 22:12:48
  • Bochsの挙動をいくつか調べてみました。結果、すべてのATAが未実装な状態でも0x3F0~0x3F7のFDCレジスタは有効な様子です(0x3F2の書き込みでログに反応が出ていた)。しかし、FDのブートセクタ(IPL)の読み込みにFDCを使っていないらしく、0x3F0~0x3F7どころか、0x100~0xFFFFのすべてのI/Oレジスタを使っていない様子。Bochsは特殊な方法でIPLをロードしているようだ(それとも最初から…ってそれは無いか)。 -- nika 2006/08/10 (木) 14:45:02
  • でも、互換機で使われないI/Oアクセスはアクセスエラーを起こすようになっているので、特定のビットかメモリマップトI/Oを使っているってことかな…。Bochsは一筋縄じゃいかないなぁ。 -- nika 2006/08/10 (木) 15:41:30
  • よく見たらint 13hはちゃんと実行されているようですが、フロッピーディスクアクセスなのにint13_harddiskの呼び出しになっていて、それで失敗してフロッピーディスクのIPLの読み込みをしてくれないようです。 -- nika 2006/08/14 (月) 18:12:01
  • int 13hの中をDOS Emulator(仮)をデバッグ用にシングルステップ処理で検証してみることにします。逆アセンブラとゲストOS(DOS)のレジスタダンプを比較しながら。int 13hの中だけを。 -- nika 2006/08/15 (火) 02:09:05
  • しかし、int13h_diskette_functionじゃなくint13h_harddiskに飛んでいるのは普通に考えたらおかしい。CPUの処理に根本的な間違いがあるかも知れない?(OTL) -- nika 2006/08/15 (火) 02:10:59
  • なんとなく開発風景というかデバッグ中のデスクトップを晒してみるw @添付ファイル (ただし画像サイズが大きいのに注意) -- nika 2006/08/15 (火) 02:18:15
  • 原因が判明しました。CPUのエミュレーションで、オペコードがF6/F7のTEST命令(REGフィールドが000か001)の時、フラグをクリアして命令を実行させた後、更新されたフラグをゲストOSのフラグへ反映させていなかった(=常にZFがNZ(クリア)されていた)のが原因でした。これを修正したら無事0x3F2をリードするようになりました。 -- nika 2006/08/15 (火) 14:11:49
  • K-tanのvgabiosを再度実行させてみました。…が、失敗。またまた何故そんなところを実行しているのか…。まだ重大なバグがあるってことなのか…orz -- nika 2006/08/15 (火) 14:47:08
  • フロッピーディスクドライバを実装中です。FDCのI/Oアクセスの一部は既に実装済みですが、コマンド/パラメータを発行した時点でbreakする状態です。現在はFDC周辺の資料を整理しています。それぞれのフェーズの移行とかは知っていますが、パラメータの意味がまだちょっと分からないので、大体理解したら本格的に実装しようと思います。それまで少し時間がかかりそうなので、しばらくお待ち下さい。 -- nika 2006/08/16 (水) 12:54:06
  • 整理中のFDCの資料をご覧になりたい方は、こちらの下の方にあります。 -- nika 2006/08/16 (水) 12:55:25
  • とりあえずアクセス検出用のint 3を戻したところ、command=07(RECALIBRATE)を実行しようとしました。つまりこれを実装開始w -- nika 2006/08/18 (金) 17:59:37
  • RECALIBRATEはE/Rフェーズが無く(実際にはEフェーズ中にヘッドが移動するんだけど)、即終了でいいでしょう。よって、コマンド書き込み終了後、すぐに割り込み信号をアサートさせればOK!なはず。 -- nika 2006/08/18 (金) 18:01:48
  • あぁ、外部割り込み関係は実装が不完全だったんだったOTL.....ここを直さないと次に進めない…。 -- nika 2006/08/18 (金) 18:08:52
  • 外部割り込み: どうやらINTRの変更を通知するファンクション番号(DOSで言うならINTベクタ相当)を間違えていたことで、うまく作動しなかったようだ(爆 -- nika 2006/08/18 (金) 23:05:05
  • 割り込み関係は実装完了。FDCに関してのIRQは正常に来るようになりました。まだ、復帰まで行ってませんが…。FDCのSENSE INTERRUPT STATUS(08h)を実装中です。 -- nika 2006/08/19 (土) 21:11:12
  • あと、CMOSメモリをイメージファイル"CMOS.DAT"から読み込むようにしました。 -- nika 2006/08/19 (土) 21:12:16
  • ちょっと、ドライバへの制御処理がおかしいのか変なところでハングする…。違うセグメントで実行しているときに割り込み(シグナルハンドラへの移行)があると何かが溜まっていっていつのまにか変な位置に移行(復帰?)してしまう感じ…?。とりあえずFDCの実装も時間がかかるっぽいので、int 13hのFDの時はドライバ側でエミュレーションしてしまおう。 -- nika 2006/08/26 (土) 17:08:54
  • …。(DEMU本体のソースをもうそろそろ書き直さないとヤバいなぁ(汗 -- nika 2006/08/26 (土) 17:11:24
  • そういえば、デバッグ機能が弱い。もっとコンソールとか別々にしてメモリ参照とかレジスタダンプとかブレイクポイントとか色々できるようにしないと何かあったとき原因を見つけるのが難しくなっていく気がする。IRRやDMARQの状態とかも見れるようにして、デバッグしやすい環境にしなくちゃいけないなぁ(課題)。 -- nika 2006/08/26 (土) 17:19:03
  • VGAのエミュレーションをどうしようかなぁ。現在はメモリ書き込み時に画面に反映するという手抜きだからなぁ。デバイスドライバで実装するにしても表示画面の大きさ変更とかVRAM書き換えの画面反映とかどうするかなぁ。テキストモードもデバイスドライバでやるならフォントの取得させてグラフィック描画するようにしたほうがいいのかなぁ。これちゃんとしないとグラフィック使うアプリは誤動作(=見えない)しちゃうから考えとかないと。 -- nika 2006/08/31 (木) 01:45:36
  • BGMライブラリを作り直したくなってきた。BEEP音源専用で、最大和音数指定可能、MIDI形式バッファを使用可能。効果音/BGMを独立に鳴らすことが可能。こんな感じでもBGMライブラリ使う人はいるかな。(BGMライブラリが完成すれば、どのアプリでも簡単にBGMが使えて便利になるけど、以前のソースは紛失しちゃったし、書き直すの(特にMIDI形式関係)めんどくさいんだよなぁ)。 -- nika 2006/08/31 (木) 01:50:05
  • ↑単なるぼやきになってしまいました。すみませんです。 -- nika 2006/08/31 (木) 01:51:05
  • int 13hによるフロッピーディスク#0のアクセスをフックして直接渡す方法を試してみました。が、半分成功、半分失敗しているようだ。現在はMt.orzのディスクイメージの先頭2セクタ分をROMに持ち、直接movsbでコピーしていますが、LBAセクタ1を800:100に読み込んだあとにデバイスドライバでハングしているようです。DEMU上でMt.orzの起動画面が見れるまでもう少しっぽい。 -- nika 2006/08/31 (木) 07:52:33
  • VGAドライバでハングしてました。アトリビュートデータ用RAMが足りなかったようです。そのバグをとったら無事起動しました。が、画面の肝心なところが表示されず。パレットかなにかだろうか。…と思ったらタイマをまだ実装してなかった(爆)。 -- nika 2006/08/31 (木) 08:58:58
  • DEMUの内部タイマの実装中。なぜかgetsignal関数の中でbreakすることがある。何故なのか意味不明。やっぱりDLL実行中にシグナル受信(=シグナルハンドラへの分岐)するとデータセグメント(DS)が分岐前のセグメントセレクタ値で、そのリミットを越えているのかも?もしそうだったらDLLのデータセグメントはDSじゃなくESにするべきかもだったけど、そうするとC言語とか不可能になるし、いちいちES:かCS:プリフィックスを付けなければならなくなるのはちょっといやだなぁ。とりあえずタイマの精度は最大60Hzで、それ未満の場合は1/60秒分の時間がこの瞬間に一気に進む扱いになる。一応このタイマは将来VSYNCと兼用するつもり。オートフレームスキップを使用するためには最低でも2つ以上のタイマ(計6個以上のスロット)を使用しなければならない。 -- nika 2006/09/01 (金) 07:16:33
  • スクリーンショットは現在オリジナルのMt.orzを修正したものを使用しています(まだタイマを実装していないので、初期色(=0)の黒のままになって表示されているのか分からない為、初期値を7(白)に変更したのみ)。 -- nika 2006/09/01 (金) 07:19:11
  • シグナルハンドラ分岐時のブレイクは入り口でds=15にセットしたら無事動作するようになりました(多分)。いままで止まらなかったのが不思議に思えてきましたw でもまだタイマをオープンして周期的タイマとして動作させているだけの段階なのよね。フレームレート調整とかはまだ描画処理がフレーム単位じゃないから必要ないし。デバイスドライバ側のタイマ登録/変更APIは既に実装してあるので、あとはタイマ制御のみ。…めんどくさいなぁ。間引き回数とか登録されているタイ(ry -- nika 2006/09/01 (金) 23:52:00
  • VGAドライバからはグラフィックボックスのサイズ変更とかできないと、画面モード変えられないことになる。でもDOSが動作するようになってから考えよう。(笑 -- nika 2006/09/02 (土) 01:54:33
  • えーと、DEMU内でタイマの周期敵割り込みの実装は完了(OSASKからタイマが来るだけの状態)。現在ドバイスドライバのタイマ割り込み処理ルーチンを実装中。 -- nika 2006/09/02 (土) 03:07:24
  • デバイスドライバへのタイマ割り込みの実装を完了。今度はデバイスドライバ側のタイマ処理(IRQピンを"H"にしたりCMOSの時間を進めたりする)の実装へ。デバイスドライバへのタイマ割り込みがちゃんと動作していれば、無事にゲストOSの時間が(やっと)進むようになる。 -- nika 2006/09/02 (土) 04:24:55
  • ちなみにDEMU→デバイスドライバへのタイマ割り込み処理を実装しただけの段階ではゲストOSに変化はありません。なぜなら、デバイスドライバ側のタイマ割り込み処理ルーチンでなにもしないでreturn;しているからです(=すでに登録されてはいます)。 -- nika 2006/09/02 (土) 04:27:30
  • やっぱり外部セグメントを実行中にシグナルで割り込みが起きるとDSを参照しようとして(多分)ハングするようです。ESを使えば問題は起きないようです(すべてのデバイスドライバをそうしなきゃいけないとなると面倒だなぁ)。という問題があるのでとりあえず保留中。デバイスドライバを実行するときは必ずシグナルハンドラの再入値を禁止にセットするのも微妙だしぃ(笑 -- nika 2006/09/03 (日) 03:23:35
  • この問題をMLに投げました。 -- nika 2006/09/04 (月) 06:03:31
  • デバイスドライバ側のデータバッファはDEMU本体のデータセグメントと共用、ドライバの呼び出し前にデータバッファのポインタをコードセグメントの一定の場所に他のパラメータと一緒の場所に書き込んで渡すことになりました。将来はデータセグメントを作成しようとするだけで強制終了されるようになるそうです。 -- nika 2006/09/05 (火) 09:17:45
  • しばらく↑の変更に費やされると思います。少々お待ち下さいw -- nika 2006/09/05 (火) 09:26:24
  • ちなみに、現時点でOSAkkieを実行してみると、キーボードドライバで止まってしまいます(汗。これは未実装なコマンドが書き込まれるとハングする仕様だからです。 -- nika 2006/09/06 (水) 09:41:36
  • うぅ。仕様の大幅な変更が必要だ…orz デバイスドライバのファイル形式とかデータバッファの参照を相対参照にさせないといけないし…。かなり面倒だなぁ;; -- nika 2006/09/06 (水) 23:29:54
  • 最初から作り直すのも面倒だし、でも最初から作り直すと速度とか速くなりったりなによりソースがサッパリできるけど…。うーむ、どうしたものか。 -- nika 2006/09/06 (水) 23:32:49
  • 現在、BGMライブラリに脱線中(笑)。 -- nika 2006/09/08 (金) 10:08:18
  • TrueMAZE(仮)とKAODUN v0.2にハマってました。これからDEMUの仕様の作り直し、(時間があれば)TrueMAZEの更新など進ませたいです。 -- nika 2006/09/18 (月) 20:24:35
  • Mt.orz v0.2が出ていたので少し修正しました。また、こちらのページの更新は停止しました。以後、DEMUの方で更新していきたいと思います。 -- nika 2006/10/06 (金) 02:46:37

コメントお名前NameLink

コメントらん

  • なんとなくスクリーンショットにも使用している自作BIOSを公開してみる(同じファイル名でその都度更新する予定です)。 -- nika 2006/07/10 (月) 00:29:39
  • wikiのテスト -- osa:nika 2006/07/12 (水) 09:42:37
  • とりあえず、ハードウェア相当で日本語を表示できるようにしよう(グラフィックモードでは無く(英語)テキストモードで)。ファンクションキーで切り替える、とか。 -- nika 2006/07/12 (水) 11:53:49
  • ここにあった開発状況などは上記の進行状況へ移動させました。 -- nika 2006/07/17 (月) 04:34:20
  • 機器が接続されていないI/Oポートの読み出しは0xFFを返せばいいんだよね? -- nika 2006/07/22 (土) 13:49:51
  • 内部資料用にOS-Wiki内のページをコピーしました。OS-Wikiでもページ名に統一性がないなぁ、と思った。bochsというページも今頃発見したので、bochs VBE display adapterもなんとかなりそうな感じです。 -- nika 2006/07/28 (金) 07:06:55
  • もうそろそろディスクイメージ版を出そうと思います(int 18hが出るのを確認できるだけですが)。 -- nika 2006/07/31 (月) 01:40:41
  • ディスクイメージ版を公開しました。 -- nika 2006/07/31 (月) 10:36:25
  • 純粋なDOS上でqemuが動作するらしい? http://d.hatena.ne.jp/lukewarm/searchdiary?word=*%5bqemu%5d -- nika 2006/08/02 (水) 11:33:59
  • qemu-0.8.2-windows.zip でやってみましたが、以下のメッセージが出て途中でDOSに戻ってしまいました….。
    C:\QEMU>dpmild32 -g qemu.exe -m 32 -L . -fda fdimage0.bin -localtime -net none
    
    DPMI loader version 3.1.5
    Copyright (C) 1993-2006 Japheth
    
    dpmild32: import not found: SetProcessAffinityMask
    dpmild32: file KERNEL32.dll
    dpmild32: C:\HX\BIN\IPHLPAPI.DLL: cannot resolve imports
    
    さて、どうしたものか… -- nika 2006/08/04 (金) 12:49:43
  • ダウンロードしてあったqemu-0.8.1-windows-3.zipで試してみました。なんと!普通に動作します。-std-vga付けないとqemuのコンソールから切り替わりませんでしたが…。でもDOS上のqemuでフルスクリーンとかできたし、Mt.orzOSAkkieも動作しました。BEEPすら鳴らないですが…(-soundhw allなどをつけるとハングする)。 -- nika 2006/08/09 (水) 08:33:33
  • Bochs用のMt.orz BIOSを公開してみました。 -- nika 2006/09/03 (日) 19:02:43

コメントお名前NameLink


DOS Emulator(仮) 将来予定のリスト

ゲストOS(DOS)に提供されるスペック(予定)

機能スペック備考
CPUIntel i486 1MHz(PM/PG対応)相当周波数は実行環境による
FPU×専用ドライバを適用できるようにするつもり
ChipsetAT互換機 PIIX4互換(?)I/Oのみ。PCI CONFIGは保存されない。
CMOS RAM242バイトRAM
RAM640KB+1024KB RAM
ROM64KB+32KB(1MB空間に最大384KB,4GB空間はメモリの許す限り)
SoundBEEP音源1音+FM1312互換9音(BEEPでエミュレート)PCM/MIDIなし
GraphicOn board VGA(bochs vbe extension対応)またはIBM 8514/A互換 1画面
VideoRAM1024KB (最大解像度:1024x768 256色,800x600 32768色,640x400 16777216色)
ROM BIOSブートBIOS+VGABIOS+独自ハードウェアサポート用拡張BIOS
SYSTEM BIOSBochs BIOS(64KB)またはDOS組み込みBIOS(64KB)
VGABIOSBochs VBE extension用VGA BIOS(32KB)または自作VGABIOS(64KB)
AGP-
PCI-
PCMCIA-
FDD1.44MB 2モード 2基(どちらかがROMエミュレーションの可能性)
HDD-
CD-ROM-
シリアルポート-
パラレルポート-

(編集中)

DOS Emulator(仮) の仕様について

最低動作環境

ハード最低(推奨)備考欄
OSOSASK v9.9以降(v4.8以降推奨)
MEM空きメモリ6MB以上(18MB以上推奨)
Graphic640x480 16色以上(800x600 65536色以上推奨)16bppのグラフィックボックスを使用しています
SoundBEEPに対応しているboardできればブザーを本当に積んでいるのが望ましい
drive何でも(HDDかCFでの運用を推奨)
font基本は不要、msgbox等一部で日本語フォント使用(第一水準もあれば問題無い)

(編集中)

OSASK側に提供される機能(予定)というか課題のリスト

機能説明備考
デバッグコンソールまだ無い
シングルステップ例外
AAA/AAM/DAAなどの命令
プロテクトモード
ページングモード
仮想86モード
FDコントローラ実装中
ATA & CD-ROM
PCI/PCMCIA
DOS内蔵BIOS
FMR/TOWNS互換モード
IRQの正常な動作
DMAの動作モードの設定
Nearestによる拡大縮小
BiLinearによる拡大縮小
画面外スクロールバー
日本語フォント対応
マウス対応
専用自作VGABIOS
専用自作ROMBIOS
あまりメモリを食わないようにする
何をしてもOSASKが落ちないようにする
とりあえずまっとうなアプリケーションになる
ゲストOSでグラフィックアクセラレータが使用できるようにする
デバイスドライバでOSASKAPIを呼べるようにする
FDイメージの交換をできるようにする
ウィンドウの大きさを可変にして、テキストモード時はフォントを大きくできるようにする
ドライバ用のメモリが余ったらゲストOS(DOS)で使用できるメモリに回したい
ゲストOSでタイマを細かく制御できるようにする
起動時にすぐにゲストOSを起動するかメニューを出すようにする
初起動の時にベンチマークテストして自動で設定を更新したい
TOWNSやPC9821でも動作するレベルを維持する
メモリを動的に確保したり開放したりしたい
ステートセーブ(クイックセーブ?)/ロードができるようにしようかな
win32コンソールアプリを動作できるようにする
  • もし、SB16等のハードウェアか勝手に操作して、OSASKが意図しないIRQとか来たらどうなるんだろう…って普通にマスクされてるか。普通。
  • (編集中)

[Reload]   [New] [Edit] [Unfreeze] [Diff] [Upload]   [Front page] [List of pages] [Search] [Recent changes] [Backup]   [RSS of recent changes]
Last-modified: 2008/10/14 (Tue) 02:06:33 (5834d)