DEMUプロジェクトの仕様と詳細
このページは、DOSエミュレータ 「DEMU」の仕様や進行状況を更新するページです。
最初から書き直す必要に迫られたので、改名とともにページ名を変更しました。
とりあえずDOS互換だけ実装し、その後コツコツと仕上げていくつもり。
(編集中)
スクリーンショットとか
最新
|
ファイル選択でテキストファイルを表示してみたところ。 ただし、まだフラッシュに未対応・・・w |
フォント適応補間リサイズ
16x16のOSASK標準フォントを12x12や32x32へリサイズした例です。
12x12はそれなりに使えると思いますが、
32x32は使用用途が…(笑)。
- テキスト80x30モードで32x32フォントを使用した場合:1280x960の解像度が必要(80x25では1280x800)。
- Windowsのコマンドプロンプトのように、はみ出したエリアをスクロールするようになれば、32x32や高解像度(128x50とか)も夢じゃない。
- テキスト80x25で12x12フォントなら640x400の解像度でも使用できる(上下にえせタスクバーがあっても)。
|
|
フォントA (斜め規制ON) | フォントB (斜め規制OFF) |
仕様とか
メモリアドレスマップ
- 大体のメモリマップ
物理アドレス | サイズ | 用途 | 備考 |
0x00000000 | 64KB | SYSTEM | 未使用 |
0x00010000 | 576KB | 空き | 使用可能メモリ |
0x000A0000 | 32KB | TVRAM | テキストメモリ※ |
0x000A8000 | 32KB | TVRAM | テキストメモリ※ |
0x000B0000 | 32KB | TVRAM | テキストメモリ※ |
0x000B8000 | 32KB | TVRAM | テキストメモリ※ |
0x000C0000 | 32KB | TVRAM | テキストメモリ※ |
0x000C8000 | 32KB | TVRAM | テキストメモリ※ |
0x000D0000 | 96KB | 空き | 未使用 |
0x000E8000 | 32KB | TVRAM | テキストメモリ※ |
0x000F0000 | 64KB | 空き | 未使用 |
0x00100000 | 64KB | HMA | 使用可能メモリ |
0x00110000 | 960KB | XMS | 使用不可 |
0x00200000 | --- | | 配置なし |
※実際のテキストメモリは8KBくらいで大体同じ場所を再配置しているだけである。
※ただし配置場所によってビット単位で意味が異なる場合がある。
- I/Oアドレスマップ
内部資料(仮仕様)
テキストVRAM
ヘッダ(64byte)+テキストバッファ(サイズ分*4byte)
- ヘッダ
_grp_id 8byte 識別用ID
_grp_prev dword 未使用_
_grp_next dword 未使用_
_grp_window dword 配置先ウィンドウ_
_grp_buffer dword 未使用_
_grp_left dword ウィンドウ内での座標_
_grp_top dword
_grp_scrnwidth byte 描画先の領域のサイズ(pixel)
_grp_scrnheight byte
_grp_fontwidth byte フォントのサイズ(pixel)
_grp_fontheight byte
_grp_textwidth byte バッファのテキスト単位のサイズ_
_grp_textheight byte
_grp_scaleleft byte 描画開始位置(テキスト単位)
_grp_scaletop byte
_grp_width byte 描画先のテキストサイズ(テキスト単位)
_grp_height byte
(残り) 未使用_
- 内部バッファ
以下の8byteが文字数分(80x25=半角4000文字分)連続する。
テキストコード(32bit) 4byte
文字色 1byte
背景色 1byte
拡張用 2byte
- テキスト関係APIの実装状態(未実装/実装作業中/実装済み)
- グラフィックテキストボックスオープン
; in: edx ウィンドウ
; esi,edi グラフィックボックスの位置
; cl,ch テキストボックスの表示領域のサイズ
; al,ah テキストボックスのバッファのサイズ
; ebx グラフィックテキストボックス
グラフィックテキストボックスクローズ(当面実装の予定なし)
- グラフィックテキストボックスフラッシュ
- グラフィックテキストボックスフォント関連
- グラフィックテキストボックス色深度関連
- グラフィックテキストボックス解像度またはリサイズ関連
管理用メモ
ここは、管理人が試行錯誤しながら変更していく内部用のメモがわりです。
- DEMU起動時に実行ファイルをオープン(関連付け起動対応)。
- メモリブロックの構造や環境変数などを内部(外部優先)ファイルを元に初期化
- DOS実行ファイルを(必要ならばリロケーションして)メモリに配置。
- 実行可能なEXEファイルにはサイズ制限があります(実際のEXEファイルのサイズが560KB未満)。
- ファイルの読み込みや書き出しは必要な場合のみ、ディスクイメージをアクセスする。
- 実行ファイルの位置はそのイメージ内にあるものとする。
- 実際にディスクイメージ内に無い場合でも内部的には微妙。
- ハードディスクやCD-ROM等はアクセスできない。
- BIOSをエミュレーションしているわけではないのでBIOSレベルの操作は正常に動作しない。
- 常駐するアプリは対応していない。というかコマンドラインが無いので正常終了と同じ扱い。
- タイマ割り込みをエミュレーションするかどうかは使っているアプリがどのくらいあるかによる。
- ゲストOS内の時間設定はとりあえず起動時に2006/11/13 17:30:00.00にセットしてみる。
- DOS Versionは5.0としようかな。
- 画面はテキストのみ。以下の解像度で表示。いわゆるANSI対応。
モード | 解像度 | フォント | 表示解像度 | 言語 |
3 | 80x25 | 6x12 | 480x 300 | jp |
- | 80x30 | 6x12 | 480x 360 | jp |
3 | 80x25 | 6x12 | 480x 300 | us |
- | 80x30 | 6x12 | 480x 360 | us |
- | 80x25 | 8x16 | 640x 400 | - |
- | 80x30 | 8x16 | 640x 480 | - |
- | 80x25 | 12x24 | 960x 600 | - |
- | 80x30 | 12x24 | 960x 720 | - |
- | 80x25 | 16x32 | 1280x 800 | - |
- | 80x30 | 16x32 | 1280x 960 | - |
- キーボード
- DOSファンクション経由のみ。多分同時押し検出不可能。
- マウスドライバ
- int 33hのエミュレーションをやればできそうだけど対応しているアプリが無さそうなので先送り。
- プリンタ
- ファイル
- ディスクイメージ起動ではないのでファイル検索は未対応。ファイル名を指定して開くことならできる。
- フロッピィディスクエミュレーションだけどネットワークドライブと考えれば(検索できないけど)イメージがあいそう。
- CPU/FPU
- 8086シリーズ。80386DX相当。PM/PG/VM/FPU/SSE/MMX/SSE2/SSE3/3DNow!非対応。32bitレジスタ対応。インタプリタ型。
- サウンド
- メモリ配置
- 起動するDOSアプリは0x00010000~0x0009FFEFを自由に使える。UMBやEMB、HMAは使えない(予定)。
- その他
(編集中)
進行状況欄
ここは管理人が書く場所です。
- ソースを書き直す段階になって、基礎ライブラリ再構築中。これのテスト中にテストゲームなどを作成するかもしれない。 -- nika 2006/09/28 (木) 06:23:43
- とりあえず、当初の計画に戻って、DOS APIレベル(int 21hレベル)のエミュレーションでDLL(デバイスドライバ)を使用しない形式で作成しようと思います。 -- nika 2006/10/11 (水) 04:02:59
- 6x12ドットの内蔵ASCIIフォントを使用する。日本語はOSASKシステムフォントを縮小して使用するつもり。16x16を12x12に縮小するにはHighColorなら中間色補間ができるが、16色だとそれもできない。16x16→12x12(単純補間(間引き)または適応補間)しかできない。 -- nika 2006/10/12 (木) 04:05:44
- ファイルアクセス関係実装中。 -- nika 2006/10/13 (金) 13:21:26
- 実行ファイルのリロケーションとかPSPの用意とか準備関係実装中。 -- nika 2006/10/14 (土) 18:14:13
- この方式(DOSAPIレベル)だとディスクイメージってわけにはいかないよなぁ。やっぱりリストファイル(alias可能な)を参照してそれをDOSディスクにしよう。セクタ単位のアクセスまでサポートしなくても(あるいは、簡単なサポートだけで)動作するだろうし。 -- nika 2006/10/14 (土) 23:23:59
- グラフィックボックスを使うのをやめて、独自のテキストVRAMみたいなものを使用する用に実装中。 -- nika 2006/10/17 (火) 16:59:20
- 独自のテキストボックス形式で疲れた。 -- nika 2006/10/18 (水) 19:50:59
なにか書いていってください
なんでもいいですよ。