タイトル | : WinNT系のコマンドライン問題解決の方法 |
投稿日 | : 2023/03/01(水) 01:03 |
投稿者 | : konno | 番 号 | : 10588 10587 番 konno さんへのコメント コメント数 1 |
#10581 からの話題ですが> これを見て閃きました。command.com をフックさせなければいいのではないかと。> FreeCOM と DOSVAXJ3 の環境では、zp はゼロになります。フック出来ていないのです。> それなのに問題なく動作しているので、WinNT系でも同じくフックさせなければどうなる?>> で、やってみました。> 正しい位置を検索するのは難しいですが、わざと失敗させるのなら簡単です。(^^;実際のソースでは mov bx,cs:tpafreep ; MAIN.ASM 318:GDATA tpafreep, dw, 0 ; ZP tst bx jnz alloc8 mov di,0600h ; mov di,0380h ;0600h ##k07vt2b mov cx,400h ;300h 1.60 ; win95 cmp byte ptr cs:os_win,5 ; ##k 230225 WinNT系DOS窓なら ZP を 0 に je winnt ; cmp ah,5 ; ##16 jae alloc1 ; mov bx,0465h ; cmp ah,5 ; ##156.96 ##157.xx DOS 5.0 ; je alloc8 pop es push es mov di,0200h ; mov cx,500h ;100h ;##k07f winnt: mov cx,100h ;##k07v6c コメントの多さが試行錯誤を物語っていますが、このルーチンの肝はここです。 cmp byte ptr cs:os_win,5 ; ##k 230225 WinNT系DOS窓なら ZP を 0 に os_win とは、VZkで追加したオプション ow で、この数値が 5 なら WinNT系の DOS5 です。 VTDOS なら、AH に 1、AL に DOSのメジャーバージョン(DOS6.2なら 6 )となります。 Win98ME ow:8h MSDOS 8.0 Win2000 ow:5h DOS 5.0 WinXP ow:5h DOS 5.0 VTDOS ow:106h MSDOS 6.2 MS-DOS Player ow:7h FreeCOM 7.0 DOSVAXJ3 ow:0 DOS 7.0 相当? どうやら DOSVAXJ3 は、アイドル推し(コール)してないようですね。(^^; CPU負荷が他のエミュより若干高く見えるのは関係あるかしらん。 ax1680h INT2fh で判定しているもので。(^^;
- No.10588 一括表示へ - コメント元:10587 一括表示へ - [ 返信 ] [引用あり] pre