このページは、DOSエミュレータ 「DEMU」の仕様や進行状況を更新するページです。
最初から書き直す必要に迫られたので、改名とともにページ名を変更しました。
とりあえずDOS互換だけ実装し、その後コツコツと仕上げていくつもり。だいぶ完成してきました
大まかな骨組みは「基礎ライブラリ(グラフィックテキストボックス+ファイルアクセス/リスト+DOSメモリ管理)+CPU本体+APIシミュレータ」な予定。
(編集中)
FM1312音色エディタを起動させてみたところ。 なぜか中央に表示できていないし、ずれているし、クレジットも表示されていない…orz OSCまでの展示には間に合いそうにない。 |
ごたくどすのコンソール出力をリダイレクトして そのファイルを表示してみたところ (エスケープシーケンスの動作確認用) まだ動作する段階ではありません! |
16x16のOSASK標準フォントを12x12や32x32へリサイズした例です。
12x12はそれなりに使えると思いますが、
32x32は使用用途が…(笑)。
_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 (残り) 未使用_
テキストコード(32bit) 4byte 文字色 1byte 背景色 1byte 拡張用 2byteテキストにしてはメモリを使用するなぁ。
; in: edx ウィンドウ ; esi,edi グラフィックボックスの位置 ; cl,ch テキストボックスの表示領域のサイズ ; al,ah テキストボックスのバッファのサイズ ; ebx グラフィックテキストボックス
; in: ebx グラフィックテキストボックス ; cl,ch バッファ左上位置 ; al,ah サイズ(どちらかが0で全体再描画)
; in: eax 32bit半角コード ; cl,ch バッファ位置 ; dl,dh 文字色,背景色 ; ebx グラフィックテキストボックス
; in: ebx グラフィックテキストボックス ; edx 文字列(終端\0) ; al b1~0:文字列コード(=00:ASCIIZ,=01:SJISZ,=10:未定,=11:未定)ただしエスケープシーケンスは0x1B,"["で始まり"ABCDHJfsum*"のいずれかで終わるものに限る。
; in: ebx グラフィックテキストボックス ; dl,dh 文字色,背景色
; Memory Control Block セグメント ; ofs size document ; 0h byte チェインID(4Dhか5Ah) ; 1h word オーナーID(0:空き,8:DOS/システム,その他:確保したプログラムのセグメント?) ; 3h word サイズ(パラグラフ) ; 5h 3bytes reserved ; 8h 8bytes プログラム名(終端:00hまたはスペースで埋める)
; 内部変数領域の割り当て ; ofs size document ; es:bx-12 word 共有リトライ回数(DOS 440Bh) ; es:bx-10 word 共有リトライデュレイ ; es:bx-8 dword カレントディスクバッファへのポインタ ; es:bx-4 word 未読み込みCON入力のDOSコードセグメント内のポインタ ; es:bx-2 word 先頭のMCBのセグメントアドレス ; es:bx dword 先頭のDPBへのポインタ ; es:bx+04h dword 内部FCBのリストを指すポインタ ; es:bx+08h dword CLOCKデバイスドライバへのポインタ ; es:bx+0Ch dword CONデバイスドライバへのポインタ ; es:bx+10h word 扱える最大のセクタのサイズ(byte/sector)(AT:512) ; es:bx+12h dword 内部ディスクバッファの先頭アドレス ; es:bx+16h dword 内部ドライブ情報の先頭アドレス ; es:bx+1Ah dword reserved ; es:bx+1Eh word FCBS=x,y の y ; es:bx+20h byte 接続ドライブ数 ; es:bx+21h byte LASTDRIVEドライブ数(LASTDRIVE=Zなら1Ah) ; es:bx+22h 18bytes NULデバイスのデバイスヘッダ ; es:bx+34h byte JOINドライブ数 ; es:bx+35h word reserved ; es:bx+37h dword reserved ; es:bx+3Bh word reserved ; es:bx+3Dh word reserved ; es:bx+3Fh word BUFFERS=x,y の x ; es:bx+41h word BUFFERS=x,y の y ; es:bx+43h byte ブートドライブ(1=A:,2=B:...) ; es:bx+44h byte =1:80386/486, =0:8086/286 ; es:bx+45h word 拡張メモリ(1Mバイト以降のプロテクトメモリ)のサイズ(KB)
; in: edx メモリブロックのセグメント ; ecx 新しいサイズ(パラグラフ)
; in: edx メモリブロックのDOSセグメント値 ; eax オーナーID ; ebx プログラム名(ASCIIZ)へのポインタ
; out: edx メモリブロックのセグメント(0なら無い) ; ecx 確保可能なサイズ
; in: ecx サイズ ; out: CF エラー ; edx メモリセグメント ; ecx 確保可能なサイズ(パラグラフ)
コード | 意味 |
01h | 無効なファンクションコード |
02h | ファイルが見つからない |
03h | パス名が見つからない |
04h | これ以上ファイルをオープンできない |
05h | アクセスできない |
06h | 無効なハンドル |
07h | MemoryControlBlockが破損している |
08h | メモリが足りない |
09h | メモリブロックのアドレスが無効 |
0Ah | 環境が無効 |
0Bh | 書式が無効 |
0Ch | アクセスコードが無効 |
0Dh | データが無効 |
0Eh | 予約 |
0Fh | ドライブ名が無効 |
10h | カレントディレクトリは削除できない |
11h | 同じデバイスではない |
12h | これ以上ファイルはない |
13h | ライトプロテクトされている |
14h | ディスクユニットが不良 |
15h | ドライブが準備できていない |
16h | ディスクコマンドが無効 |
17h | CRCエラー |
18h | 長さが無効 |
19h | シークエラー |
1Ah | MS-DOSのディスクではない |
1Bh | セクタが見つからない |
1Ch | 用紙がない |
1Dh | 書き込みエラー |
1Eh | 読み出しエラー |
1Fh | 一般的なエラー |
20h | 共有違反 |
21h | ロック違反 |
22h | ディスクが不正 |
23h | FCBは使用できません |
32h | ネットワークリクエストが未サポート |
33h | リモートPCが待ち受け状態ではない |
34h | ネットワーク名が重複している |
35h | ネットワーク名が見つからない |
36h | ネットワークビジー |
37h | ネットワークデバイスはこれ以上ない |
38h | ネットワークBIOSの限界を超えた |
39h | ネットワークアダプタのハードエラー |
3Ah | ネットワークから不正な応答があった |
3Bh | 予期できないネットワークエラー |
3Ch | リモートアダプタが不正 |
3Dh | プリント待ち行列が満杯 |
3Eh | 待ち行列が満杯ではない |
3Fh | プリントファイルのためのスペースが不足 |
40h | ネットワーク名はすでに削除されている |
41h | アクセス不可能 |
42h | ネットワークデバイスのタイプが不正 |
43h | ネットワーク名が見つからない |
44h | ネットワーク名の限界を超えた |
45h | ネットワークBIOSセッションの限界を超えた |
46h | 一時休止 |
47h | ネットワークの要求が受け付けられない |
48h | プリンタ/ディスクのリダイレクト禁止 |
50h | ファイルが存在する |
52h | 作成不可能 |
53h | 割り込み24hのエラー |
54h | ネットワーク構造が不正 |
55h | 割り当て済み |
56h | パスワードが無効 |
57h | パラメータが無効 |
58h | ネットワークへの書き込みエラー |
5Ah | システム関連ファイルがロードされていない |
ここは、管理人が試行錯誤しながら変更していく内部用のメモがわりです。
モード | 解像度 | フォント | 表示解像度 | 言語 |
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 | - |
(編集中)
ここは管理人が書く場所です。
コメント | お名前 | NameLink | |
なんでもいいですよ。
コメント | お名前 | NameLink | |