[リストへもどる] [返信 ]  [新着記事] [最新50] [ワード検索] [過去ログ]

記事閲覧・返信


タイトル AH=FEh INT10h の判定法は
投稿日: 2024/10/31(木) 21:07
投稿者konno
 番 号 11605    11592 番 konno さんへのコメント    コメント数 1

v.com でVRAMの判定がエミュ3種で違っているのが気になって、
どう判定しているのか逆汗してみました。
ソーサーでも全部は逆汗できず、SYMDEB でアセンブルした部分を張ります。

2AA1:0145 6A40 PUSH 40 ;'@'
2AA1:0147 07 POP ES
2AA1:0148 BEA603 MOV SI,03A6 ; 09[00]
2AA1:014B 26A04900 MOV AL,ES:[0049] ; Video mode
2AA1:014F 32E4 XOR AH,AH
2AA1:0151 8904 MOV [SI],AX ; [si]=00xx vmode
2AA1:0153 26A14A00 MOV AX,ES:[004A] ; 桁数
2AA1:0157 894402 MOV [SI+02],AX ; [si+2]= column
2AA1:015A 26A08400 MOV AL,ES:[0084] ; 行数 line
2AA1:015E 32E4 XOR AH,AH
2AA1:0160 40 INC AX
2AA1:0161 894404 MOV [SI+04],AX ; [si+4]= line+1
2AA1:0164 26A18500 MOV AX,ES:[0085] ; font H
2AA1:0168 894406 MOV [SI+06],AX ; [si+6]= font H
2AA1:016B 6800B8 PUSH B800 ; B800h
2AA1:016E 07 POP ES ; ES=B800h
2AA1:016F 33FF XOR DI,DI ; DI=0
2AA1:0171 26833DFF CMP Word Ptr ES:[DI],-01 ; [B800:0]=ffffh なら ES=A000h
2AA1:0175 7508 JNZ 017F ; not FFFF --> 017f jump
2AA1:0177 6800A0 PUSH A000 ; A000h
2AA1:017A 07 POP ES ; ES=A000h
2AA1:017B 83440804 ADD Word Ptr [SI+08],+04 ; [si+8]=[si+8]+04
017f:
2AA1:017F B4FE MOV AH,FE ; ah=FEh 擬似テキストバッファ先頭アドレス取得
2AA1:0181 CD10 int 10 ; int 10h, 擬似テキストバッファ先頭アドレス取得
2AA1:0183 8C440A MOV [SI+0A],ES
2AA1:0186 897C0C MOV [SI+0C],DI
2AA1:0189 8CC0 MOV AX,ES
2AA1:018B 3C00 CMP AL,00
2AA1:018D 7404 JZ 0193
2AA1:018F 83440E05 ADD Word Ptr [SI+0E],+05

2AA1:0193 BBDC02 MOV BX,02DC
2AA1:0196 E83800 CALL 01D1
2AA1:0199 B8004C MOV AX,4C00
2AA1:019C CD21 INT 21


これでわかったことは、CGA VRAM B800h の先頭2バイトが 'FF FF' かどうかチェックしてるんですね。
え? と思って、DOSVAXJ3 のコマンドラインで DUMPマクロで見たら
B800h から 8000h の間が FFh で埋まっていました。

VTDOS は B800h から 00h で埋まってる、というか、ゴミもあるので普通のメモリ領域のようです。

MS-DOS Player は B800h から 1C20h の間が 20h 17h で埋まっていました。
つまり、MS-DOS Player だけ B800h の領域をVRAMとして初期化しているということでしょうか。
これを踏まえて私の理解を纏めると

DOSVAXJ3
VRAM Mode = APA ; B800h == FF FF の時
VRAM Address = C679:0000 (Virturl VRAM) ; 仮想VRAM と認識

VTDOS
VRAM Mode = A/N ; B800h != FF FF == 00 00 の時
VRAM Address = D000:0000 (Real VRAM) ; リアルVRAM と認識

MS-DOS Player
VRAM Mode = A/N ; B800h != FF FF == 20 17 の時
VRAM Address = F800:0000 (Real VRAM) ;リアルVRAM と認識し、B800h が仮想VRAMとなる?

もしもこの考えが合っているとしたら、B800h を FF,FFか 00,00 で初期化すれば うまくいきそうな気がします。
その場合、仮想VRAMは、上のチェックルーチンを見ると、 VGA A000h に設定すれば良さそうに思えます。
VTEXTは画面モードは03で、実際は 70h になっていますが、03 は本来 CGA モードだと思うので
この辺の辻褄をうまく合わせてやればいいのかなと素人考えで思いました。

武田さん、この考えどう思いますでしょうか。

   - No.11605 一括表示へ   -   コメント元:11592 一括表示へ  - pre


- 関連一覧ツリー (先頭の番号をクリックするとツリー全体を一括表示します)
11562.MSDOS Player 10/24版 - shadow shadow 24/10/24-13:55
 ┣11563.Re: MSDOS Player 10/24版 - konno 24/10/24-16:35
 ┃┣11564.Re^2: MSDOS Player 10/24版 - shadow 24/10/24-17:11
 ┃┃┣11565.Re^3: MSDOS Player 10/24版 - たけだ 24/10/24-17:52
 ┃┃┃┗11568.Re^4: MSDOS Player 10/24版 - konno 24/10/24-19:26
 ┃┃┗11567.Re^3: MSDOS Player 10/24版 - konno 24/10/24-19:06
 ┃┗11566.Re^2: MSDOS Player 10/24版 - たけだ 24/10/24-17:55
 ┃ ┗11569.Re^3: MSDOS Player 10/24版 - konno 24/10/24-19:28
 ┃  ┗11570.DOS画面再描画されない原因は? - konno 24/10/25-14:45
 ┃   ┣11571.Re: DOS画面再描画されない原因は? - としき 24/10/26-00:38
 ┃   ┃┗11573.Re^2: DOS画面再描画されない原因は? - konno 24/10/26-22:24
 ┃   ┗11572.Re: DOS画面再描画されない原因は? - たけだ 24/10/26-10:59
 ┃    ┣11574.Re^2: DOS画面再描画されない原因は? - konno 24/10/26-22:26
 ┃    ┗11575.Re^2: DOS画面再描画されない原因は? - たけだ 24/10/26-22:28
 ┃     ┗11576.Re^3: DOS画面再描画されない原因は? - konno 24/10/26-23:57
 ┃      ┗11577.Re^4: DOS画面再描画されない原因は? - たけだ 24/10/27-06:20
 ┃       ┗11578.Re^5: DOS画面再描画されない原因は? - konno 24/10/27-15:48
 ┃        ┗11579.Re^6: DOS画面再描画されない原因は? - たけだ 24/10/28-00:36
 ┃         ┣11580.Re^7: DOS画面再描画されない原因は? - konno 24/10/28-14:31
 ┃         ┃┗11581.Re^8: DOS画面再描画されない原因は? - shadow 24/10/28-19:42
 ┃         ┃ ┗11583.Re^9: DOS画面再描画されない原因は? - konno 24/10/28-22:47
 ┃         ┗11585.Re^7: DOS画面再描画されない原因は? - たけだ 24/10/29-07:05
 ┃          ┣11586.Re^8: DOS画面再描画できました! - konno 24/10/29-08:40
 ┃          ┃┗11588.Re^9: DOS画面再描画できました! - shadow 24/10/29-12:08
 ┃          ┣11587.Re^8: DOS画面再描画されない原因は? - shadow 24/10/29-12:06
 ┃          ┗11591.Re^8: DOS画面再描画されない原因は? - たけだ 24/10/29-14:20
 ┃           ┗11592.Re^9: DOS画面再描画されない原因は? - konno 24/10/29-15:33
 ┃            ┗11605.AH=FEh INT10h の判定法は - konno 24/10/31-21:07
 ┃             ┗11606.Re: AH=FEh INT10h の判定法は - たけだ 24/10/31-22:19
 ┃              ┗11608.Re^2: AH=FEh INT10h の判定法は - konno 24/10/31-23:25
 ┗11607.Re: MSDOS Player 10/24版 - たけだ 24/10/31-23:17
  ┣11609.Re^2: MSDOS Player 10/31版 - konno 24/11/01-00:34
  ┃┗11610.Re^3: MSDOS Player 10/31版 - たけだ 24/11/01-00:57
  ┃ ┗11611.Re^4: MSDOS Player 10/31版 - konno 24/11/01-15:51
  ┃  ┗11616.DIR もんどうはくだけない - konno 24/11/03-00:29
  ┃   ┗11618.Re: DIR もんどうはえいえんのささやき - としき 24/11/03-15:54
  ┃    ┗11620.Re^2: DIR もんどうはえいえんに - konno 24/11/03-18:13
  ┃     ┣11621.Re^3: 豚に真珠、としきにDIR もんどう - としき 24/11/05-00:30
  ┃     ┃┗11623.Re^4: DIR もんどうはこうざんに - konno 24/11/05-15:41
  ┃     ┃ ┗11625.Re^5: ポケット某 DIRもんどう&パール - としき 24/11/06-00:14
  ┃     ┃  ┗11626.Re^6: ポケット某 DIRもんどう&パール - konno 24/11/06-02:41
  ┃     ┃   ┗11627.Re^7: ポケット某 DIRもんどう&パール - としき 24/11/06-22:31
  ┃     ┃    ┗11628.Re^8: グレーDIRで金銀パールプレゼン - konno 24/11/06-23:45
  ┃     ┃     ┗11629.Re^9: グレーDIRで金銀パールプレゼン - としき 24/11/07-00:24
  ┃     ┃      ┗11632.Re^10: 発掘した絵数化布の秘法BATでプレゼン - konno 24/11/07-23:09
  ┃     ┃       ┗11633.Re^11: 発掘した絵数化布の秘法BATでプレゼン - としき 24/11/08-16:53
  ┃     ┃        ┗11634.Re^12: 発掘した絵数化布の秘法BATでプレゼン - konno 24/11/09-01:14
  ┃     ┗11622.Re^3: DIR もんどうはえいえんに - shadow 24/11/05-13:27
  ┃      ┗11624.Re^4: DIR もんどうはえいえんに - konno 24/11/05-16:06
  ┗11612.Re^2: MSDOS Player 10/24版 - shadow 24/11/01-19:35

- - 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)[引用無し]
おなまえ 
Eメール 
タイトル 
メッセージ auto soft pre(図表 ※折り返しません)
 参照先 
 暗証キー (英数字で8文字以内)
 プレビュー          

- 以下のフォームから自分の投稿記事を修正・削除することができます -
   処理   記事No   暗証キー
    [ページトップへ] [管理用]