[
HOME ] [
リストへもどる. ] [
新着50 ]
[
最新100 ]
[
全部表示 会議室風 ]
[
全部表示 保存用 ]
11620 :
Re^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
11619 :
Re^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
11618 :
Re: 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
11617 :
Re^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
11616 :
DIR もんどうはくだけない
投稿者:
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
11615 :
Re^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
11614 :
Re: 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
11613 :
VZk07v6o(暫定) (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
11612 :
Re^2: MSDOS Player 10/24版
投稿者:
shadow 2024/11/01(金) 19:35
11607 番 たけだ さんへのコメント
> ここ最近の諸々を反映した新バージョンをリリースしました。 > DEL *.OBJだけでなく、REN *.OBJ *.BINとかも出来るようになってます。 武田さん、ありがとうございます。
- No.11612 - [コメント元:11607 ] [リストへもどる. ]
soft
11611 :
Re^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
11610 :
Re^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
11609 :
Re^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
11608 :
Re^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
11607 :
Re: MSDOS Player 10/24版
投稿者:
たけだ 2024/10/31(木) 23:17
11562 番 shadow さんへのコメント コメント数 2
ここ最近の諸々を反映した新バージョンをリリースしました。 DEL *.OBJだけでなく、REN *.OBJ *.BINとかも出来るようになってます。
- No.11607 - [コメント元:11562 ] [リストへもどる. ]
soft
11606 :
Re: 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
11605 :
AH=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
11604 :
Re^7: 3種のエミュレーターでアセンブル
投稿者:
konno 2024/10/31(木) 21:04
11603 番 たけだ さんへのコメント
> SFNがサポートされていないドライブでの動作は、流石にちょっと難しいです。 > もちろん、まったく動かない訳ではないのですが。。。 > > MS-DOS Player内で動的にSFNをでっちあげる仕組みを考えたこともありますが、 > 次に起動したときに違うSFNになると問題を起こしそうな気がして断念しました。 問題の原因がそれかどうかもわからないので、しかたないですね。 それ以外の command.com は問題無くなったので無問題です。 ありがとうございました。
- No.11604 - [コメント元:11603 ] [リストへもどる. ]
soft
11603 :
Re^6: 3種のエミュレーターでアセンブル
投稿者:
たけだ 2024/10/31(木) 19:44
11602 番 konno さんへのコメント コメント数 1
SFNがサポートされていないドライブでの動作は、流石にちょっと難しいです。 もちろん、まったく動かない訳ではないのですが。。。 MS-DOS Player内で動的にSFNをでっちあげる仕組みを考えたこともありますが、 次に起動したときに違うSFNになると問題を起こしそうな気がして断念しました。
- No.11603 - [コメント元:11602 ] [リストへもどる. ]
soft
11602 :
Re^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
11601 :
Re^6: 3種のエミュレーターでアセンブル
投稿者:
shadow 2024/10/30(水) 16:46
11598 番 たけだ さんへのコメント
> 取り急ぎその2です。 > INT 21h, AH=13hにワイルドカードが渡された場合の対策を入れました。 削除できるようになりました。 ありがとうございました。
- No.11601 - [コメント元:11598 ] [リストへもどる. ]
soft
11600 :
Re: 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
11599 :
Re^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
11598 :
Re^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
11597 :
Re^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
11596 :
Re^3: 3種のエミュレーターでアセンブル
投稿者:
shadow 2024/10/29(火) 18:35
11590 番 たけだ さんへのコメント
> もしかしたらFCB周りで何かあるかもしれません。 もしかして環境空間にも影響与えますか? 10/24版にしてから"環境空間が足りません"(このメッセージはPC DOS)と出たりでなかったりします。 MS DOS、PC DOSともにでます。
- No.11596 - [コメント元:11590 ] [リストへもどる. ]
soft
11595 :
Re^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
11594 :
Re^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
11593 :
Re^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
11592 :
Re^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
11591 :
Re^8: DOS画面再描画されない原因は?
投稿者:
たけだ 2024/10/29(火) 14:20
11585 番 たけだ さんへのコメント コメント数 1
変更内容としては、テキストVRAMの読み取り時に、現在表示されているコンソールの内容を返すようにしました。 正式なリリースはまた後日にでも。
- No.11591 - [コメント元:11585 ] [リストへもどる. ]
soft
11590 :
Re^2: 3種のエミュレーターでアセンブル
投稿者:
たけだ 2024/10/29(火) 14:16
11589 番 shadow さんへのコメント コメント数 2
delコマンドで問題のあるcommand.comのバージョンは何になりますでしょうか。 もしかしたらFCB周りで何かあるかもしれません。
- No.11590 - [コメント元:11589 ] [リストへもどる. ]
soft
11589 :
Re: 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
11588 :
Re^9: DOS画面再描画できました!
投稿者:
shadow 2024/10/29(火) 12:08
11586 番 konno さんへのコメント
konnoさん、粘り強い対応お疲れ様です。 ありがとうございました。
- No.11588 - [コメント元:11586 ] [リストへもどる. ]
soft
11587 :
Re^8: DOS画面再描画されない原因は?
投稿者:
shadow 2024/10/29(火) 12:06
11585 番 たけだ さんへのコメント
武田さん、試しました。 ほぼ改善されてるようです。 ありがとうございました。
- No.11587 - [コメント元:11585 ] [リストへもどる. ]
soft
11586 :
Re^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
11585 :
Re^7: DOS画面再描画されない原因は?
投稿者:
たけだ 2024/10/29(火) 07:05
11579 番 たけだ さんへのコメント コメント数 3
取り急ぎです。http://takeda-toshiya.my.coocan.jp/msdos/msdos_test.7z
- No.11585 - [コメント元:11579 ] [リストへもどる. ]
soft
11584 :
Re: 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
11583 :
Re^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
11582 :
3種のエミュレーターでアセンブル
投稿者:
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
11581 :
Re^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
11580 :
Re^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
11579 :
Re^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
11578 :
Re^5: DOS画面再描画されない原因は?
投稿者:
konno 2024/10/27(日) 15:48
11577 番 たけだ さんへのコメント コメント数 1
> INT 21hで表示された文字は、必ずしもVRAMに反映されていないので、 > その辺が原因かもしれません。 なるほど、そういうこともありますか。> 何か対策を考えてみますが、今日からしばらく忙しくなりますので、 > 対応には時間がかかるかと思います。 お忙しいところ対応していただいて申し訳ないです。 ありがとうございました。
- No.11578 - [コメント元:11577 ] [リストへもどる. ]
soft
11577 :
Re^4: DOS画面再描画されない原因は?
投稿者:
たけだ 2024/10/27(日) 06:20
11576 番 konno さんへのコメント コメント数 1
INT 21hで表示された文字は、必ずしもVRAMに反映されていないので、 その辺が原因かもしれません。 何か対策を考えてみますが、今日からしばらく忙しくなりますので、 対応には時間がかかるかと思います。
- No.11577 - [コメント元:11576 ] [リストへもどる. ]
soft
11576 :
Re^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
11575 :
Re^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
11574 :
Re^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
11573 :
Re^2: DOS画面再描画されない原因は?
投稿者:
konno 2024/10/26(土) 22:24
11571 番 としき さんへのコメント
> それこそ、デバッガでブレークポイントを設定してみるのが手っ取り早いかも。 > ん〜、SYMDEB? > Vzマクロの&tよりも強力だと思う。使ったことないけど。 私は DEBUG も SYMDEB も使いこなせないんですよ。(;_;) かわりに putdosscrn や dispprmpt を別の場所で呼んでみたら少し発見がありました。 武田さんからレスがあったので、そちらに書いてみます。
- No.11573 - [コメント元:11571 ] [リストへもどる. ]
soft
11572 :
Re: DOS画面再描画されない原因は?
投稿者:
たけだ 2024/10/26(土) 10:59
11570 番 konno さんへのコメント コメント数 2
INT 10hでブレークして見てみましたが、DOS画面の復帰云々というよりも、 [ESC]Eで、黄色いプロンプトを通り過ぎて、直にCOMMAND.COMに行っている感じです。 その辺のモード遷移の問題のような気がします。
- No.11572 - [コメント元:11570 ] [リストへもどる. ]
soft
11571 :
Re: 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