記事閲覧

− 野ざらし言 −

5523 DOSVAXJ3 は悪くない?

konno 2024/02/24(Sat) 16:10 [5522]へのコメント
> > ということは、DOSVAXJ3の作者様にお願いすれば・・・
> え〜〜(^o^;

顔が笑ってますよ。(^^;

> > Wengier Wu 氏による DOSBox-lfn の修正を取り込み、ロングファイルネームや
> …と書かれているので,他に影響を及ぼすのではなかろうかと想像します。

そうなんですが、オプションにしてもらえば行けると思います。(^^;

=== int_71A0.def ===

LFN が使えない場合(生DOS)の返り値は必ず AX=7100 CF=0 になる。
生DOS     AX == 7100  CF0
Win95/98系  AX != 7100  CF0
WinNT系    AX != 7100  CF?
LFNファンクションの返り値を、NT系でも CF=0 にすればどちらでも使える。

*m
80  ^\ "LFN? "
    ax$71A0,&i($21)		;LONG FILENAME - GET VOLUME INFORMATION
    &m(" AX=%04x  CF=%d",ax,r)	;AX71A0 をドライブ指定無しで呼んだ場合
    .
*

そう思ってこのマクロを DOSVAXJ3 で実行してみたら

AX=0000  CF=0

になりました。あれえ?  

RCP.EXE のソースを見てみたら、それっぽいルーチンを見つけました。
xdos.c  369行目

	Function 71A0h  ボリューム情報の取得
	int is_LFNsystem :	1 LFN サポート
				0     非サポート

	regs.x.ax = 0x71a0;
	regs.x.cx = 5;
	regs.x.dx = FP_OFF(drive);
	sregs.ds  = FP_SEG(drive);
	regs.x.di = FP_OFF(filesystem);
	sregs.es  = FP_SEG(filesystem);
	intdosx(&regs, &regs, &sregs);
/*	if(regs.x.bx & FS_LFN_APIS) */		ここを
	if(regs.x.ax != 0x7100)			これに変えてみた
	{
		return 1;
	}else
	{
		return 0;
	}

もしかして、BXの値で判断しているのかしら。
変更して Turbo C (Tc201) でエラー箇所をコメントにしてコンパイルしたら
LFNが使える、というメッセージが出ました。
ただこの実行ファイルは不完全なようで、コピーなどが出来ません。

やっぱり Siさんに相談かな。
メールがわからないので、掲示板に書いてみようと思います。

関連記事一覧ツリー (▼ を押すとツリー全体を一括表示します)

- 5506.コピー&移動 - キャロル 24/02/22-21:19

返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

おなまえ :
Eメール :
タイトル :
メッセージ: 通常モード(推奨)  整形モード(非推奨)  preモード(空白再現)
※ プログラムコード等を含まない場合は,できるだけ通常モードをご利用ください。

参照先 :
暗証キー: (英数字で8文字以内) プレビューなし


- 以下のフォームから自分の投稿記事を修正・削除することができます -

処理 記事No. 暗証キー