[HOME] [リストへもどる.] [新着50]  [最新100]  [全部表示 会議室風]  [全部表示 保存用]

新着記事 50


11620Re^2: DIR もんどうはえいえんに 投稿者:konno   2024/11/03(日) 18:13
  11618 番 としき さんへのコメント

> VTDOSってcommand.comを差し替えられたような気がします。
> もし私の記憶が確かなら、MS-DOS Playerと同じ結果が得られるようにできるのでは
> ないかなぁ。

くだけた話かもですが、#11616 で書いています。
> VTDOS	MSDOS 6.20	DIRは内蔵  LFNのみの表示
DIRは VTDOS内蔵のものなのですよね、なので FreeCom の問題かどうか確認するために
> VTDOSで確認しようとしたら > が効かないし、FreeCom ってやっぱり癖が強いようですね。
VTDOSで FreeComを入れたのですが、環境領域が不足して動作が不安定みたいだったのです。
それでリダイレクトが動かなかったので確認できなかったのです。
どなたか確認できる人いませんかね。

> あと、DOSVAXはDOSのエミュレータではなくてマシンのエミュレータだと思い込んで
> いたのですが、これは私の認識が妖しい、ないしはおかしい、かも。

確かにDOSBOXベースでマシンをエミュレートしているので、PCエミュレータとなるでしょうか。
でも最近のは内蔵DOSで直接DOSエミュレート出来るので、DOSエミュというのも間違いではないかと。

    - No.11620 -   [コメント元:11618]    [リストへもどる.]
pre

11619Re^4: VZk07v6o(暫定) (2024-11-01) 投稿者:konno   2024/11/03(日) 17:53
  11617 番 shadow さんへのコメント

> 先のソースでMS-DOS Player の判定部分2行をコメントにして再描画出来てたのですが念のためお願いしました。

shadowさんなら出来ると思ってました。
私もすんなり出来たわけではなく、武田さんとのやり取りの中で色々試行錯誤してました。
アセンブラ入門を読んでVRAMずらしの常駐プログラムを作ったけどうまくいかず。
昔作ったJ31用ソフトをパソピアや200LXなどで動かすVRAM変換常駐プログラムを流用してみたけどうまくいかず。
#11570 で getdosscrn だろうと思いましたが、そこを弄っても駄目だったので、その先の getscrn にたどり着いたのでした。

    - No.11619 -   [コメント元:11617]    [リストへもどる.]
soft

11618Re: DIR もんどうはえいえんのささやき 投稿者:としき   2024/11/03(日) 15:54
参照先:http://toshiki.la.coocan.jp/
  11616 番 konno さんへのコメント    コメント数 1

ひそひそ。

> 必要があって DIR を取ろうと思ったら、各種DOSエミュでみんな書式が違うんですね。
> ちょっと比べてみました。

うろ覚えで申し訳ないのですが。
VTDOSってcommand.comを差し替えられたような気がします。
もし私の記憶が確かなら、MS-DOS Playerと同じ結果が得られるようにできるのでは
ないかなぁ。
あと、DOSVAXはDOSのエミュレータではなくてマシンのエミュレータだと思い込んで
いたのですが、これは私の認識が妖しい、ないしはおかしい、かも。

    - No.11618 -   [コメント元:11616]    [リストへもどる.]
soft

11617Re^3: VZk07v6o(暫定) (2024-11-01) 投稿者:shadow   2024/11/03(日) 08:18
  11615 番 konno さんへのコメント    コメント数 1

> DOSエミュ3種で動かすぶんには問題ないと思います。
> 他の環境で使う場合は、v.com などで VRAMアドレスを確認すれば安心です。
>
> ということで、他のVZに移植するなら scrnibm.asm のこの個所だけ追加すればいいですね。
> MS-DOS Player の判定部分はコメントにするか削除します。
先のソースでMS-DOS Player の判定部分2行をコメントにして再描画出来てたのですが念のためお願いしました。
ありがとうございました。

    - No.11617 -   [コメント元:11615]    [リストへもどる.]
soft

11616DIR もんどうはくだけない 投稿者:konno   2024/11/03(日) 00:29
  11611 番 konno さんへのコメント    コメント数 1

必要があって DIR を取ろうと思ったら、各種DOSエミュでみんな書式が違うんですね。
ちょっと比べてみました。

VTDOS	MSDOS 6.20	DIRは内蔵  LFNのみの表示
2011/02/16  20:35               616 FGAL.DEF
2004/06/21  00:46             3,104 fgaldc_14_8086.log

DOSVAXJ3		内蔵 SFNと LFN両方表示
FGAL     DEF                616 2011-02-16 20:35 FGAL.DEF
FGALDC~1 LOG              3,104 2004-06-21  0:46 fgaldc_14_8086.log

MS-DOS Player	MSDOS 6.20
FGAL     DEF           616 11/02/16   20:35
FGALDC~1 LOG         3,104 04/06/21    0:46

MS-DOS Player	FreeCom 7.00
FGAL     DEF           616  11/02/16 20:35
FGALDC~1 LOG         3,104  04/06/21  0:46

MS-DOS Player	Win95 〜 Win98ME
FGAL     DEF           616  11/02/16  20:35 FGAL.DEF
FGALDC~1 LOG         3,104  04/06/21   0:46 fgaldc_14_8086.log

今回は SFNのみの表示が欲しいので MS-DOS PlayerのDOS6.2かFreeCom かな。
と思ったら、MS-DOS Player + FreeComで dir > file とやったら、改行が 0Ah でした。(>_<)
VTDOSで確認しようとしたら > が効かないし、FreeCom ってやっぱり癖が強いようですね。

    - No.11616 -   [コメント元:11611]    [リストへもどる.]
pre

11615Re^2: VZk07v6o(暫定) (2024-11-01) 投稿者:konno   2024/11/02(土) 17:07
  11614 番 shadow さんへのコメント    コメント数 1

> きっちり再描画できてうれしいです。

実現できて私が一番嬉しいです。(^_^)
以前は気にならなかったのに、気にし出したら夜も眠れず昼寝して・・φ(..; バキッ\(--;

> ところで後学のため#11611のソースの変更箇所を教えてください。

コメントのある行を丸ごと追加しています。解説はコメントの内容でわかりますよね。
あとは MS-DOS Player の判定を main.asm でやっていますが、これが無くても問題ないですね。
仮に問題が出たとしても画面表示がおかしくなるだけなので、その場合は使用中止すればいいし。
DOSエミュ3種で動かすぶんには問題ないと思います。
他の環境で使う場合は、v.com などで VRAMアドレスを確認すれば安心です。

ということで、他のVZに移植するなら scrnibm.asm のこの個所だけ追加すればいいですね。
 MS-DOS Player の判定部分はコメントにするか削除します。

scrnibm.asm 1483行あたり

getscrn	proc
	pushm	<ds,es>
	mov	es,ax
	mov	ds,dsp.@seg

	push	ax		; ##k 241101  MS-DOS Player
	mov	ax,ds		; ds は
	cmp	ax,0f800h	; VRAM F800h か?
	jnz	mpmod0		; 違うならJUMP
;	cmp	cs:os_win,7	; MS-DOS Playerか?
;	jnz	mpmod0		; 違うならJUMP
	mov	ax,0b800h	; CGA VRAM にすり替え  'ク^@ク'  b8h (00h b8h)
	push	ax		; 'P' 50h
	pop	ds		; ds:si(ソース) --> es:di
mpmod0:	pop	ax		;

IFNDEF IBM
cpyscrn:

これでOKです。mpmod は mpmod0 に変更しました。

    - No.11615 -   [コメント元:11614]    [リストへもどる.]
pre

11614Re: VZk07v6o(暫定) (2024-11-01) 投稿者:shadow   2024/11/02(土) 15:05
  11613 番 konno さんへのコメント    コメント数 1

> VZk07v6o(暫定) (2024-11-01)版を VZの部屋に置きました。
>
>  ・フォルダの階層が深いと拡張子が消えるなどまだバグあり、注意。
>  ・最新の MS-DOS Player で DOS画面の保存・復帰対応。
きっちり再描画できてうれしいです。
本当にありがとうございます。
ところで後学のため#11611のソースの変更箇所を教えてください。

    - No.11614 -   [コメント元:11613]    [リストへもどる.]
soft

11613VZk07v6o(暫定) (2024-11-01) 投稿者:konno   2024/11/01(金) 22:56
   コメント数 1

VZk07v6o(暫定) (2024-11-01)版を VZの部屋に置きました。

 ・フォルダの階層が深いと拡張子が消えるなどまだバグあり、注意。
 ・最新の MS-DOS Player で DOS画面の保存・復帰対応。
 ・オプション Ow の仕様変更(MS-DOS Playerの判定のため) Ow512 以上で MS-DOS Player

 ダウンロード  vzkv6o.lzh ver1.60k07v6o (2024-11-01版 ) new!

    - No.11613 -            [リストへもどる.]
soft

11612Re^2: MSDOS Player 10/24版 投稿者:shadow   2024/11/01(金) 19:35
  11607 番 たけだ さんへのコメント

> ここ最近の諸々を反映した新バージョンをリリースしました。
> DEL *.OBJだけでなく、REN *.OBJ *.BINとかも出来るようになってます。
武田さん、ありがとうございます。

    - No.11612 -   [コメント元:11607]    [リストへもどる.]
soft

11611Re^4: MSDOS Player 10/31版 投稿者:konno   2024/11/01(金) 15:51
  11610 番 たけだ さんへのコメント    コメント数 1

> 私はCHEJは特に使用していませんが、vzはint10h ah=fehで取得した仮想テキストバッファのアドレスの、f8000hを読みに来ているようです。
> 書き込み時も、同じアドレスに書き込んで、int10h ah=ffhで画面に反映してるのではないかと。

私もそう思います。
ところがコマンドラインでは f8000h がスペースで埋まり、b8000h に文字が見えるのです。
DOS画面の保存、復帰のタイミングは VZしかわからないので、VZですり替え出来ないかやってみました。
scrnibm.asm 1483行あたり

getscrn	proc
	pushm	<ds,es>
	mov	es,ax
	mov	ds,dsp.@seg

	push	ax		; ##k 241101  MS-DOS Player
	mov	ax,ds		; ds は
	cmp	ax,0f800h	; VRAM F800h か?
	jnz	mpmod		; 違うならJUMP
	cmp	cs:os_win,7	; MS-DOS Playerか?
	jnz	mpmod		; 違うならJUMP
	mov	ax,0b800h	; CGA VRAM にすり替え  'ク^@ク'  b8h (00h b8h)
	push	ax		; 'P' 50h
	pop	ds		; ds:si(ソース) --> es:di
mpmod:	pop	ax		;

IFNDEF IBM
cpyscrn:

ここにコメント行を追加して VRAMアドレスのすり替えをしたら保存・復帰が出来ました。\(^^)/ ヤッタ-
MS-DOS Player の判定に失敗することが有るので見直して公開したいと思います。
安全対策を2重にしているので問題ないでしょう。
将来 B8000hが変わるとヤバいので、その時は VZ.COMを開いて 'ク^@クP' を検索してアドレスを書き換えます。(^^;
^@ は実際はヌル文字です。(^^;;

    - No.11611 -   [コメント元:11610]    [リストへもどる.]
pre

11610Re^3: MSDOS Player 10/31版 投稿者:たけだ   2024/11/01(金) 00:57
  11609 番 konno さんへのコメント    コメント数 1

私はCHEJは特に使用していませんが、vzはint10h ah=fehで取得した仮想テキストバッファのアドレスの、f8000hを読みに来ているようです。
書き込み時も、同じアドレスに書き込んで、int10h ah=ffhで画面に反映してるのではないかと。

    - No.11610 -   [コメント元:11609]    [リストへもどる.]
soft

11609Re^2: MSDOS Player 10/31版 投稿者:konno   2024/11/01(金) 00:34
  11607 番 たけだ さんへのコメント    コメント数 1

> ここ最近の諸々を反映した新バージョンをリリースしました。
> DEL *.OBJだけでなく、REN *.OBJ *.BINとかも出来るようになってます。

武田さん、更新ありがとうございます。

-----------------------------------------------------------
024/10/31
CGA/MDAのテキストモードのVRAM、または仮想テキストバッファを読むことで、
コンソール画面の表示内容を取得できるようにしました。
VZエディタで[ESC]Eでプロンプトに降りた時、DOS画面が復帰するようになっています。

INT 21h, AH=13h/17hで、ワイルドカードを含むファイル名をサポートしました。
FCBを使ったファイルの削除およびリネームのサービスです。
MS-DOS V6.22のCOMMAND.COMのDEL/RENコマンドで使われていました。

-----------------------------------------------------------

直前のレスで諦めましたとか書いたら入れ違いになったのですね。(^^;
DOS画面復帰は、CHEJ 02 の CGAモードの時でしょうか。
このモードではDOS画面の漢字文字化けは無くなりましたがVZの画面の漢字が化けます。

ともあれ諸々改善できたので嬉しいです。
ありがとうございました。

# 今夜はハローWinのプレゼントだぁ。\(^^)/

    - No.11609 -   [コメント元:11607]    [リストへもどる.]
soft

11608Re^2: AH=FEh INT10h の判定法は 投稿者:konno   2024/10/31(木) 23:25
  11606 番 たけだ さんへのコメント

武田さん、お返事ありがとうございます。

> MS-DOS Playerでは、CGAのテキストモード(03h)を基本としています。
> B8000hがVRAMの先頭で、文字コード、アトリビュートが交互に80x25文字分続きます。
> MDAもサポートしており、この場合はB0000hがVRAMの先頭となります。
>
> ハード的にはCGA/MDAで、ただし漢字などマルチバイト文字が表示できるという、
> ちょっと変な構成になっています。
>
> VRAMの先頭がA0000hになるのはグラフィックモードの場合です。
> MS-DOS Playerはコンソールアプリですので、グラフィックモードは使いません。
> グラフィックVRAMはなしで、AFFFFhまではコンベンショナルメモリに回しています。

うーん、これを聞くと今回の案は難しそうですね。
やっぱり諦めます。ありがとうございました。

    - No.11608 -   [コメント元:11606]    [リストへもどる.]
soft

11607Re: MSDOS Player 10/24版 投稿者:たけだ   2024/10/31(木) 23:17
  11562 番 shadow さんへのコメント    コメント数 2

ここ最近の諸々を反映した新バージョンをリリースしました。
DEL *.OBJだけでなく、REN *.OBJ *.BINとかも出来るようになってます。

    - No.11607 -   [コメント元:11562]    [リストへもどる.]
soft

11606Re: AH=FEh INT10h の判定法は 投稿者:たけだ   2024/10/31(木) 22:19
  11605 番 konno さんへのコメント    コメント数 1

MS-DOS Playerでは、CGAのテキストモード(03h)を基本としています。
B8000hがVRAMの先頭で、文字コード、アトリビュートが交互に80x25文字分続きます。
MDAもサポートしており、この場合はB0000hがVRAMの先頭となります。

ハード的にはCGA/MDAで、ただし漢字などマルチバイト文字が表示できるという、
ちょっと変な構成になっています。

VRAMの先頭がA0000hになるのはグラフィックモードの場合です。
MS-DOS Playerはコンソールアプリですので、グラフィックモードは使いません。
グラフィックVRAMはなしで、AFFFFhまではコンベンショナルメモリに回しています。

    - No.11606 -   [コメント元:11605]    [リストへもどる.]
soft

11605AH=FEh INT10h の判定法は 投稿者:konno   2024/10/31(木) 21:07
  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

11604Re^7: 3種のエミュレーターでアセンブル 投稿者:konno   2024/10/31(木) 21:04
  11603 番 たけだ さんへのコメント

> SFNがサポートされていないドライブでの動作は、流石にちょっと難しいです。
> もちろん、まったく動かない訳ではないのですが。。。
>
> MS-DOS Player内で動的にSFNをでっちあげる仕組みを考えたこともありますが、
> 次に起動したときに違うSFNになると問題を起こしそうな気がして断念しました。

問題の原因がそれかどうかもわからないので、しかたないですね。
それ以外の command.com は問題無くなったので無問題です。
ありがとうございました。

    - No.11604 -   [コメント元:11603]    [リストへもどる.]
soft

11603Re^6: 3種のエミュレーターでアセンブル 投稿者:たけだ   2024/10/31(木) 19:44
  11602 番 konno さんへのコメント    コメント数 1

SFNがサポートされていないドライブでの動作は、流石にちょっと難しいです。
もちろん、まったく動かない訳ではないのですが。。。


MS-DOS Player内で動的にSFNをでっちあげる仕組みを考えたこともありますが、
次に起動したときに違うSFNになると問題を起こしそうな気がして断念しました。

    - No.11603 -   [コメント元:11602]    [リストへもどる.]
soft

11602Re^5: 3種のエミュレーターでアセンブル 投稿者:konno   2024/10/30(水) 23:23
  11597 番 たけだ さんへのコメント    コメント数 1

まとレスです。

> Windows 98 [Version 4.10.2222]のCOMMAND.COMでDIRの問題は再現できませんでした。

うう、同じレビジョンでも違いが出るとは、何が違うのか色々やってみました。
なんか、Cドライブだけおかしいみたいです。Dドライブとかでは正常でした。
最近のシステムドライブはSFNが無いそうですが、それが関係してないでしょうか。

最新のテスト版でも Win95系command.com では
Cドライブで VZのアセンブルで MK6.BAT 実行すると 窓が消滅します。
理由はわからないですが、上に書いたことと関係あるような気もします。

>command /c dir vzibmj.com
とか
>cmd /c dir vzibmj.com
だと正常な動作になります。
とりあえず当面は Win95系は使わないようにします。

♯ なんかツリーの形が凄いことになってるなぁ。(^^;

    - No.11602 -   [コメント元:11597]    [リストへもどる.]
soft

11601Re^6: 3種のエミュレーターでアセンブル 投稿者:shadow   2024/10/30(水) 16:46
  11598 番 たけだ さんへのコメント

> 取り急ぎその2です。
> INT 21h, AH=13hにワイルドカードが渡された場合の対策を入れました。
削除できるようになりました。
ありがとうございました。

    - No.11601 -   [コメント元:11598]    [リストへもどる.]
soft

11600Re: 3種のエミュレーターでアセンブル 投稿者:shadow   2024/10/30(水) 16:41
  11582 番 shadow さんへのコメント

> MSDOS Playerは最新版をインストールした時に環境変数エラーが出たので
以下のショートカットから起動しているので
E:\msdos.exe -x -e -h -v6.2 E:\cmd\m62v\command.com /k e:\go.bat
いつの頃からか書き込まれていたbatファイルの一部をコメントにしました。
以前の版では"環境空間が足りません"は出なかったので気づきませんでした。
rem MSDOS_COMSPEC = C:\xxxxxxx.xxx
rem MSDOS_PATH = C:\xxxxx
rem MSDOS_TEMP = C:\xxxxx
これで出なくなりました。
この度の更新版でも以下の2つはremしなくても"環境空間が足りません"はでないんだ。
と言うか設定されてる。
FreeCOMJ 0.82 PL3 VTDOS 対応パッチ
Windows 98

    - No.11600 -   [コメント元:11582]    [リストへもどる.]
soft

11599Re^4: 3種のエミュレーターでアセンブル 投稿者:shadow   2024/10/30(水) 15:59
  11593 番 konno さんへのコメント

> 一方 Win95系では DIR で問題が
> DIR vzibmj.com と打っても DIR *.* と同じ動作になっているような?
>
> Windows 95. [Version 4.00.950]
> Windows 98 [Version 4.10.2222]
> Windows Millennium [Version 4.90.3000]
>
> これらで現象が出ます。

うちのは問題ないです。
Windows 98 [Version 4.10.1998]

    - No.11599 -   [コメント元:11593]    [リストへもどる.]
soft

11598Re^5: 3種のエミュレーターでアセンブル 投稿者:たけだ   2024/10/30(水) 01:24
  11597 番 たけだ さんへのコメント    コメント数 1

取り急ぎその2です。
INT 21h, AH=13hにワイルドカードが渡された場合の対策を入れました。

http://takeda-toshiya.my.coocan.jp/msdos/msdos_test.7z

    - No.11598 -   [コメント元:11597]    [リストへもどる.]
soft

11597Re^4: 3種のエミュレーターでアセンブル 投稿者:たけだ   2024/10/30(水) 01:07
  11593 番 konno さんへのコメント    コメント数 2

MS-DOS Version 6.22で「del *.obj」を実行すると、INT 21h, AH=13hに対して、
FCBで「????????OBJ」が渡されるようです。
なので、指定されたファイル名で削除するのではなく、このAPI内でファイル検索して、
ヒットしたファイルを削除するような実装に修正する必要がありますね。

Windows 98 [Version 4.10.2222]のCOMMAND.COMでDIRの問題は再現できませんでした。

    - No.11597 -   [コメント元:11593]    [リストへもどる.]
soft

11596Re^3: 3種のエミュレーターでアセンブル 投稿者:shadow   2024/10/29(火) 18:35
  11590 番 たけだ さんへのコメント

> もしかしたらFCB周りで何かあるかもしれません。
もしかして環境空間にも影響与えますか?
10/24版にしてから"環境空間が足りません"(このメッセージはPC DOS)と出たりでなかったりします。
MS DOS、PC DOSともにでます。

    - No.11596 -   [コメント元:11590]    [リストへもどる.]
soft

11595Re^2: 3種のエミュレーターでアセンブル 投稿者:konno   2024/10/29(火) 16:35
  11589 番 shadow さんへのコメント

> うちでは以下のcommand.comでエラーは出ませんでした。
> 使い分けることにます。
> FreeCOMJ 0.82 PL3 VTDOS 対応パッチ
> Windows 98

#11593 で書きましたが、Win95系では DIR で問題があるようです。

> DIR vzibmj.com と打っても DIR *.* と同じ動作になっているような?
>
> Windows 95. [Version 4.00.950]
> Windows 98 [Version 4.10.2222]
> Windows Millennium [Version 4.90.3000]
>
> これらで現象が出ます。

なので現状では > FreeCOMJ 0.82 PL3 VTDOS 対応パッチ一択になるでしょうか。(^^;;

> > shadowさんのは Turbo Link V3.01 でしたか、どこかにあったかしら。
> メールするのでしばらくお待ちください

いただきました。リンクのエラーは出なくなりました。
ありがとうございます。

    - No.11595 -   [コメント元:11589]    [リストへもどる.]
soft

11594Re^4: 3種のエミュレーターでアセンブル 投稿者:shadow   2024/10/29(火) 16:31
  11593 番 konno さんへのコメント

> MS-DOS Version 6.20
> 14:27:09.19C:\VZ\K07V6O>del *.obj
> 不明なエラーです.
> 
> PC DOS Version J7.0/V	Revision 0
> 14:56:03.26C:\VZ\K07V6O>del *.obj
> 不明なエラーです.
> 
> MS-DOS Version 6.22
> 15:41:00.08C:\VZ\K07V6O>del *.obj
> 不明なエラーです.

konnoさんの結果に
PC DOS J6.30/V
を追加します。

    - No.11594 -   [コメント元:11593]    [リストへもどる.]
pre

11593Re^3: 3種のエミュレーターでアセンブル 投稿者:konno   2024/10/29(火) 16:06
  11590 番 たけだ さんへのコメント    コメント数 3

まとレスになります。

> delコマンドで問題のあるcommand.comのバージョンは何になりますでしょうか。
> もしかしたらFCB周りで何かあるかもしれません。

うちの環境では

MS-DOS Version 6.20
14:27:09.19C:\VZ\K07V6O>del *.obj
不明なエラーです.

PC DOS Version J7.0/V	Revision 0
14:56:03.26C:\VZ\K07V6O>del *.obj
不明なエラーです.

MS-DOS Version 6.22
15:41:00.08C:\VZ\K07V6O>del *.obj
不明なエラーです.

これらで現象が出ます。

一方 Win95系では DIR で問題が
DIR vzibmj.com  と打っても DIR *.* と同じ動作になっているような?

Windows 95. [Version 4.00.950]
Windows 98 [Version 4.10.2222]
Windows Millennium [Version 4.90.3000]

これらで現象が出ます。

生DOS系とWin95系では コマンドラインの解釈や動作が若干違うようなので、それが関係あるかどうか。

    - No.11593 -   [コメント元:11590]    [リストへもどる.]
pre

11592Re^9: DOS画面再描画されない原因は? 投稿者:konno   2024/10/29(火) 15:33
  11591 番 たけだ さんへのコメント    コメント数 1

> 変更内容としては、テキストVRAMの読み取り時に、現在表示されているコンソールの内容を返すようにしました。

武田さん、ありがとうございます。
朝は寝ぼけてたので、今別のPCで確認してみました。
MS-DOS Player は B8000h の CGA VRAM領域に書き込んでいるように見えます。
そして、VZは起動時のDOS画面のみ再描画しているように見えます。画面クリアの場合もあるようです。

v.com で見ると 
VRAM Address       = F800:0000 (Real VRAM)
この領域には文字が書き込まれていない(クリアされている?)、VZはここを見ているのではないかと思います。

CHEJ 02  で謎のCGAモードにすると
VRAM Address       = B800:0000 (Real VRAM)
このモードでは完全にDOS画面を再描画してくれますが、日本語は化けています。

MS-DOS Player が F8000h の VRAM領域に書き込んでくれたら完璧な動作になるような気がします。

USモードでは VRAM が B8000h になると思いますが、
CHEJ US  で USモードにすると
VRAM Address       = F800:0000 (Real VRAM)
このようになるので、この辺の調整も必要かなと感じます。
確認してもらえたらありがたいです。

    - No.11592 -   [コメント元:11591]    [リストへもどる.]
pre

11591Re^8: DOS画面再描画されない原因は? 投稿者:たけだ   2024/10/29(火) 14:20
  11585 番 たけだ さんへのコメント    コメント数 1

変更内容としては、テキストVRAMの読み取り時に、現在表示されているコンソールの内容を返すようにしました。

正式なリリースはまた後日にでも。

    - No.11591 -   [コメント元:11585]    [リストへもどる.]
soft

11590Re^2: 3種のエミュレーターでアセンブル 投稿者:たけだ   2024/10/29(火) 14:16
  11589 番 shadow さんへのコメント    コメント数 2

delコマンドで問題のあるcommand.comのバージョンは何になりますでしょうか。

もしかしたらFCB周りで何かあるかもしれません。

    - No.11590 -   [コメント元:11589]    [リストへもどる.]
soft

11589Re: 3種のエミュレーターでアセンブル 投稿者:shadow   2024/10/29(火) 12:18
  11582 番 shadow さんへのコメント    コメント数 2

> >  DEL *.obj は不明なエラー(*が認識されてない)
うちでは以下のcommand.comでエラーは出ませんでした。
使い分けることにます。
FreeCOMJ 0.82 PL3 VTDOS 対応パッチ
Windows 98

> shadowさんのは Turbo Link V3.01 でしたか、どこかにあったかしら。
メールするのでしばらくお待ちください

    - No.11589 -   [コメント元:11582]    [リストへもどる.]
soft

11588Re^9: DOS画面再描画できました! 投稿者:shadow   2024/10/29(火) 12:08
  11586 番 konno さんへのコメント

konnoさん、粘り強い対応お疲れ様です。
ありがとうございました。

    - No.11588 -   [コメント元:11586]    [リストへもどる.]
soft

11587Re^8: DOS画面再描画されない原因は? 投稿者:shadow   2024/10/29(火) 12:06
  11585 番 たけだ さんへのコメント

武田さん、試しました。
ほぼ改善されてるようです。
ありがとうございました。

    - No.11587 -   [コメント元:11585]    [リストへもどる.]
soft

11586Re^8: DOS画面再描画できました! 投稿者:konno   2024/10/29(火) 08:40
  11585 番 たけだ さんへのコメント    コメント数 1

> 取り急ぎです。
> http://takeda-toshiya.my.coocan.jp/msdos/msdos_test.7z

武田さん、ありがとうございます。試してみました。
最初テスト版に入れ替えても何も変わらないように見えましたが
DUMPマクロで VRAM $B800:0 を見たらそこに入っていました。

それで、CHEJ 02 を実行したら、VRAMが B8000 になって、DOS画面の履歴が表示されるようになりました。
そのあとは普通のモードでDOS画面が表示されるようになりました。\(^^)/ ヤッタ-
最初変わらないように見えたのはメモリのキャッシュのせいかもしれませんね。
対応していただきありがとうございました。m(__)m

    - No.11586 -   [コメント元:11585]    [リストへもどる.]
soft

11585Re^7: DOS画面再描画されない原因は? 投稿者:たけだ   2024/10/29(火) 07:05
  11579 番 たけだ さんへのコメント    コメント数 3

取り急ぎです。

http://takeda-toshiya.my.coocan.jp/msdos/msdos_test.7z

    - No.11585 -   [コメント元:11579]    [リストへもどる.]
soft

11584Re: 3種のエミュレーターでアセンブル 投稿者:konno   2024/10/28(月) 23:34
  11582 番 shadow さんへのコメント

> DOSBOX(最新のテスト版)
> アセンブル OK
> 各種メッセージが出力されない

そういえば ML は32ビットでしたね。うちでも動きました。嬉しいです。

> MSDOS Player
> アセンブル OK
> DEL *.obj は不明なエラー(*が認識されてない)

うちでは Turbo Link でエラーが出ます。

Turbo Link Version 2.0 Copyright (c) 1987, 1988 Borland International
msdos error, ax= 0006h

なので、MKMP.BATで使い分けています。
link /m /noi @vz.lnk,vz%HARD%;
rem tlink /m @vz.lnk,vz%HARD%.exe
exe2com vz%HARD%.exe vz%HARD%.com
rem --- comが出来たら以下のファイルを削除する
if exist vz%HARD%.exe del *.obj

shadowさんのは Turbo Link V3.01 でしたか、どこかにあったかしら。

    - No.11584 -   [コメント元:11582]    [リストへもどる.]
soft

11583Re^9: DOS画面再描画されない原因は? 投稿者:konno   2024/10/28(月) 22:47
  11581 番 shadow さんへのコメント

> vz常駐後DOSコマンド実行してvz -zで常駐解除してcls後にvz非常駐起動するとvz -zだけ再描画されますね。

どうも VRAM画面の最下行だけ表示が残っているように見えますね。
MS-DOS Player のソースは x64版はVC++2017でビルド出来るというので、コンパイルしてみたら出来ました。

void clear_scr_buffer(WORD attr)
{
//	for(int y = 0; y < scr_height; y++) {
	for(int y = 0; y <= scr_height; y++) {		//クリア行1行増やしても変わらない?
		for(int x = 0; x < scr_width; x++) {
//			SCR_BUF(y,x).Char.AsciiChar = ' ';	//この2行をコメントにしたら
//			SCR_BUF(y,x).Attributes = attr;		//コマンドと改行は残るようになった
		}
	}
}

このように修正してみました。
クリア行1行増やしたつもりでも変わらないようです。どこか間違っているのかも。
また、2行をコメントにしたらコマンドと改行は残るようになりました。
この辺が関係しているように思われますが、これ以上はわからないです。

> MS-DOS Playerは、仮想テキストVRAMに書き込まれた内容を、INT 10h, AH=FFhで
> グラフィック画面ではなくコンソールにテキストとして書き込んでいるので、

やはりこの辺を解明できないと駄目みたいですね。

> 別件で以下の方が気になったりしてます。
> 内臓コマンドでDEL *.txtすると不明なエラーです.となり実行できないです。
> *が認識されてない?他にもあるかもです。

うちの環境では問題無いようですが、何が違うのでしょうね。

    - No.11583 -   [コメント元:11581]    [リストへもどる.]
pre

115823種のエミュレーターでアセンブル 投稿者:shadow   2024/10/28(月) 22:09
   コメント数 3

何年かぶりに最新のエミュレーターでアセンブルしてみました。
Ml V6.15.8803
TLINK.EXE V3.01

VTDOS
 問題なし
DOSBOX(最新のテスト版)
アセンブル OK
各種メッセージが出力されない
MSDOS Player
アセンブル OK
DEL *.obj は不明なエラー(*が認識されてない)

MSDOS Playerは最新版をインストールした時に環境変数エラーが出たので
set、pathなどできるだけ短く必要最小限にしました。
環境のせいかもしれませんが?
アセンブル用BATでもエラーがでました。
で残ったのが不明なエラーでした。他にもあるかもしれません。

いずれもアセンブル出来るようになっていました。
作者様ありがとうございます。

訂正 DOSBOX→DOSVAXJ3

    - No.11582 -            [リストへもどる.]
soft

11581Re^8: DOS画面再描画されない原因は? 投稿者:shadow   2024/10/28(月) 19:42
  11580 番 konno さんへのコメント    コメント数 1

> なので、もしかしたら MS-DOS Player ではコマンドが実行された時にVRAMの文字消去しているのではないかと思ったのです。
> DOSVではVRAMの文字消去しても、フラッシュだかしないと画面に反映しないそうなので。
以下もその影響かな?
vz常駐後DOSコマンド実行してvz -zで常駐解除してcls後にvz非常駐起動するとvz -zだけ再描画されますね。

別件で以下の方が気になったりしてます。
内臓コマンドでDEL *.txtすると不明なエラーです.となり実行できないです。
*が認識されてない?他にもあるかもです。

    - No.11581 -   [コメント元:11580]    [リストへもどる.]
soft

11580Re^7: DOS画面再描画されない原因は? 投稿者:konno   2024/10/28(月) 14:31
  11579 番 たけだ さんへのコメント    コメント数 1

> DOS/Vなので、テキストはグラフィック画面に描画されていて、
> VZのDOS画面の退避・復帰もグラフィックVRAMが対象になってるみたいですね。

なるほど、VRAMを見れば何かわかりそうですね。
MS-DOS Player のVRAMは v.com で見ると
VRAM Address       = F800:0000 (Real VRAM)
と出るので、DUMPマクロで見てみたら、編集画面では表示されている文字が見えました。
ところがコマンドラインで見るとVRAMが全部スペースで埋まり初期化かCLS状態になっているようです。
他のDOSエミュではコマンドラインでもVRAMの文字が表示されていました。
どうやらこの違いが原因のようです。

> MS-DOS Playerは、仮想テキストVRAMに書き込まれた内容を、INT 10h, AH=FFhで
> グラフィック画面ではなくコンソールにテキストとして書き込んでいるので、
> そもそも食い合わせが悪いです。

そうなのですか、そのあたりはわからないので自分なりに考えてみました。
DOSは本来コンソールでコマンドを解釈、実行してその結果はコンソールに吐き出されるのですよね。
その文字はVRAMに書き込まれてパソコンの画面に表示されますよね。
つまりコマンドラインにいても画面に文字が表示されている時はVRAMに文字があるはずだと思います。
実際他のDOSエミュではコマンドラインでもVRAMの文字が表示されていました。
ところがMS-DOS Playerではそれがスペースで埋められているのです。
なので、もしかしたら MS-DOS Player ではコマンドが実行された時にVRAMの文字消去しているのではないかと思ったのです。
DOSVではVRAMの文字消去しても、フラッシュだかしないと画面に反映しないそうなので。

MS-DOS Player のソースをちょっと覗いてみたら、VRAMの初期化らしいところはありました。
void clear_scr_buffer(WORD attr)
これはあちこちで呼ばれているようですが、どこがコマンドラインかとか全くわかりませんでした。
全然わかってないので間違っていたらごめんなさいです。

> すみません、本件はギブアップです(苦笑)

VZはコンソール画面が使えるので問題ないです。対応していただいて感謝してます。
常駐VZでコマンドラインに降りた時にプロンプトが見えないのはちょっとだけ不便に感じます。(^^;

今思いついたのですが、VRAMの画面最下行だけ消去しないようにしたらもしかしてプロンプト表示しませんかね。
自分でコンパイル出来れば試したいところですが今の自分は色々頭が回らないもので。
色々対応していただきありがとうございました。

    - No.11580 -   [コメント元:11579]    [リストへもどる.]
pre

11579Re^6: DOS画面再描画されない原因は? 投稿者:たけだ   2024/10/28(月) 00:36
  11578 番 konno さんへのコメント    コメント数 2

DOS/Vなので、テキストはグラフィック画面に描画されていて、
VZのDOS画面の退避・復帰もグラフィックVRAMが対象になってるみたいですね。

MS-DOS Playerは、仮想テキストVRAMに書き込まれた内容を、INT 10h, AH=FFhで
グラフィック画面ではなくコンソールにテキストとして書き込んでいるので、
そもそも食い合わせが悪いです。

グラフィックVRAMの読み書きをコンソールの読み書きに挿げ替えるとかの手段も
無くはないと思いますが、そこまでしてまで対応する利点が少ないというか、
グラフィックVRAMの領域を廃して、その分をコンベンショナルメモリに回しているので、
それを止めるのは勿体ないというか。。。

すみません、本件はギブアップです(苦笑)

    - No.11579 -   [コメント元:11578]    [リストへもどる.]
soft

11578Re^5: DOS画面再描画されない原因は? 投稿者:konno   2024/10/27(日) 15:48
  11577 番 たけだ さんへのコメント    コメント数 1

> INT 21hで表示された文字は、必ずしもVRAMに反映されていないので、
> その辺が原因かもしれません。

なるほど、そういうこともありますか。

> 何か対策を考えてみますが、今日からしばらく忙しくなりますので、
> 対応には時間がかかるかと思います。

お忙しいところ対応していただいて申し訳ないです。
ありがとうございました。

    - No.11578 -   [コメント元:11577]    [リストへもどる.]
soft

11577Re^4: DOS画面再描画されない原因は? 投稿者:たけだ   2024/10/27(日) 06:20
  11576 番 konno さんへのコメント    コメント数 1

INT 21hで表示された文字は、必ずしもVRAMに反映されていないので、
その辺が原因かもしれません。
何か対策を考えてみますが、今日からしばらく忙しくなりますので、
対応には時間がかかるかと思います。

    - No.11577 -   [コメント元:11576]    [リストへもどる.]
soft

11576Re^3: DOS画面再描画されない原因は? 投稿者:konno   2024/10/26(土) 23:57
  11575 番 たけだ さんへのコメント    コメント数 1

> 多分、以下のところでcs:cmdlinfの値によってquit_vzに飛んでるのかと。

私もそこまでは追っかけました。その先で
	call	putdosscrn
があるので、VRAMのDOS画面復帰してプロンプトも一緒に表示しているのだと思います。
ところが MS-DOS Player ではそれが表示されないのです。
なので getdosscrn がちゃんとDOS画面を保存出来ているか、保存できてないなら何故なのかを知りたいのです。

    - No.11576 -   [コメント元:11575]    [リストへもどる.]
pre

11575Re^2: DOS画面再描画されない原因は? 投稿者:たけだ   2024/10/26(土) 22:28
  11572 番 たけだ さんへのコメント    コメント数 1

[ESC]Eの後、非常駐の場合はINT 21h, AH=19hや47hで現在のディレクトリを取得して、
プロンプトを表示する方向に進むのですが、
常駐したVZを呼び出した場合は、INT 21h,AH=50hで現在のプロセスIDを変更したりと、
如何にもVZを終わらせてコマンドプロンプトに戻ろうとしている感じです。

多分、以下のところでcs:cmdlinfの値によってquit_vzに飛んでるのかと。

;--- Exec from editor ---
	public	se_command
se_command proc
	tstb	cs:cmdlinef
_ifn z
quit1:	jmp	quit_vz
_endif

    - No.11575 -   [コメント元:11572]    [リストへもどる.]
pre

11574Re^2: DOS画面再描画されない原因は? 投稿者:konno   2024/10/26(土) 22:26
  11572 番 たけだ さんへのコメント

> INT 10hでブレークして見てみましたが、DOS画面の復帰云々というよりも、
> [ESC]Eで、黄色いプロンプトを通り過ぎて、直にCOMMAND.COMに行っている感じです。
> その辺のモード遷移の問題のような気がします。

見ていただきありがとうございます。私も VZのソースを弄って VZの挙動を見てみました。
	call	dispprmpt
これをコメントにすると非常駐VZのプロンプトは出なくなりましたが常駐VZでは挙動が変わりませんでした。
どうやら常駐VZのプロンプトは command.com が出しているようです。
つまり常駐VZの場合、ここは通っていないのかも。
それでこんどは putdosscrn をあちこちに入れてみたけどどうも VRAMの内容をゲット出来てないような気がしてきました。
次はその辺を追っかけてみたいんですが、はたして出来るやら。

    - No.11574 -   [コメント元:11572]    [リストへもどる.]
pre

11573Re^2: DOS画面再描画されない原因は? 投稿者:konno   2024/10/26(土) 22:24
  11571 番 としき さんへのコメント

> それこそ、デバッガでブレークポイントを設定してみるのが手っ取り早いかも。
> ん〜、SYMDEB?
> Vzマクロの&tよりも強力だと思う。使ったことないけど。

私は DEBUG も SYMDEB も使いこなせないんですよ。(;_;)
かわりに putdosscrn や dispprmpt を別の場所で呼んでみたら少し発見がありました。
武田さんからレスがあったので、そちらに書いてみます。

    - No.11573 -   [コメント元:11571]    [リストへもどる.]
soft

11572Re: DOS画面再描画されない原因は? 投稿者:たけだ   2024/10/26(土) 10:59
  11570 番 konno さんへのコメント    コメント数 2

INT 10hでブレークして見てみましたが、DOS画面の復帰云々というよりも、
[ESC]Eで、黄色いプロンプトを通り過ぎて、直にCOMMAND.COMに行っている感じです。
その辺のモード遷移の問題のような気がします。

    - No.11572 -   [コメント元:11570]    [リストへもどる.]
soft

11571Re: DOS画面再描画されない原因は? 投稿者:としき   2024/10/26(土) 00:38
参照先:http://toshiki.la.coocan.jp/
  11570 番 konno さんへのコメント    コメント数 1

> SCRNIBM.ASM  1367行目 DOS画面保存? これを呼ぶ前にDOS画面クリアしているのか?

> SCRNIBM.ASM 1443行目 DOS画面描画? ここか、この後でDOS画面クリアしているのか?

それこそ、デバッガでブレークポイントを設定してみるのが手っ取り早いかも。
ん〜、SYMDEB?
Vzマクロの&tよりも強力だと思う。使ったことないけど。

    - No.11571 -   [コメント元:11570]    [リストへもどる.]
soft