今日のテーマ   日々改造 (^_^;)         
[記事リスト(ツリー表示)]  [ 返信 ]   [新着記事] [最新50] [ワード検索] [過去ログ]

タイトル MS-DOS Player の更新 2017/7/27版
投稿日: 2017/07/27(木) 21:42
投稿者konno
 番 号 7772    7771 番 konno さんへのコメント    コメント数 1

MS-DOS Player 2017-07-27版が出ました.

以下、更新内容の引用です。
--------------------------------------------------------
2017/7/27
通常のMS-DOS環境上で、Win32/64のプログラムを実行すると、
This program cannot be run in DOS mode.
と表示されて、そのままプログラムが終了するようになっています。
これは、Win32の実行ファイルのヘッダ内に、このようなメッセージを表示して
そのまま終了するようなMS-DOS用スタブプログラムが埋め込まれて、
MS-DOS環境ではそちらが実行されるようになっているからです。

MS-DOS Player上でWin32のプログラムを実行した場合も同様の動作でしたが、
INT 21h, AX=4B00h, INT 2Eh, またはINT 2Fh, AX=AE01hなどのサービスで、
Win32のプログラムを子プロセスとして起動しようとした場合は、
system() Win32 APIを使って、Win32の子プロセスとして実行するようにしました。
このとき、子プロセスが終了するまで、MS-DOS Playerは待機します。

ただし、INT 21h, AX=4B01h/4B03hなど、プログラムファイルをロードするだけで、
実際には実行しない場合は、プログラムファイルがそのままロードされます。
その後に、メモリ上にロードしたプログラムに処理が移った場合は、従来通り、
This program cannot be run in DOS mode.が表示されて終わりです。

なお、指定されたコマンドラインをそのまま丸ごと、system()に投げています。
16bitのプログラムとパイプで繋ぐようなケースは考慮していません。
また、子プロセスがコンソールに文字を表示する際、MS-DOS Player側のINT 29hは
経由されませんのでご注意ください。

こちらの処理は、あくまで子プロセスの起動時のみとなります。
「msdos (プログラム名)」で起動時に指定したプログラムがWin32の場合は、
This program cannot be run in DOS mode.が表示されますが、
この場合は素直に対象のプログラムを直接起動してください、ということで(を

MS-DOS PlayerでCOMMAND.COMを実行して、その上でWin32のコンソールアプリを
シームレスに使用できるようになっているかと思います。

Windows上でVZエディタを使用する際、CLPPST.EXEというWin32のプログラムを使って、
Windows側のクリップボードと連携しているそうです。
今回の修正で、この仕組みが動くようになっているといいのですが…。
素直にINT 21h, AX=4B00h辺りを使っててくれれば大丈夫だと思うんですけどね。

# DOS時代はSEDIT派でしたので、VZエディタの使い方をよく知らなかったり(苦笑)
# 検証ご協力お願いいたします>今野様

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

ということで、MS-DOS Player上のVZで CLPPST.EXEが動くようになりました。
その他のWin32プログラムもばっちり動いています。
武田さん、ありがとうございます。

前回の記事で
> command.com についてですが、Win98 の command.com が良いようです。
> Dir で LFN が表示出来ます。
> -V オプションがあると起動できないみたいです。
と書きましたが、使い方がいまいちわかっていなかったようです。
武田さんからメールを頂いたので引用します。

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

Microsoft純正のCOMMAND.COMは、INT 21H, AX=3306Hを使ってDOSのバージョンを取得して、
それが期待した値であるかをチェックするようになっています。
デフォルトではV7.10を返すようになっていますので、Win98のCOMMAND.COMを使う場合は
-vオプションを指定しなくてもそのまま動作します。
(逆に、V7.10以外を-vオプションで指定してしまうと動作しなくなります。)

例えばMS-DOS V6.22のCOMMAND.COMを使用する場合は、"msdos -v6.22 command.com"のように
バージョンを指定する必要があります。
または、MS-DOS Player内蔵のデバッガを使って、INT 21H, AX=3306Hを呼んでいるところで
ブレークを掛けてやれば、起動時のバージョンチェックのルーチンを簡単に見つけられますので、
ルーチンを潰すようにCOMMAND.COMにパッチを当ててもいいかと思います。

FreeDOSで使われているFreeCOM辺りだと、そもそもバージョンチェックすらしてないので、
こちらを使う方が簡単かもしれません。

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

    - No.7772 一括表示へ   -   コメント元:7771 一括表示へ  -    [ 返信 ]    [引用無し] soft


- 関連一覧ツリー (先頭の番号をクリックするとツリー全体を一括表示します)
▼ 7758.MS-DOS Player の更新 - konno 17/07/14-23:42
  ┣7759.MS-DOS Player の使い方と利点 - konno 17/07/15-01:03
  ┃┗7766.Re: MS-DOS Player の現状 - konno 17/07/20-20:18
  ┃ ┗7767.Re^2: MS-DOS Player の現状 - konno 17/07/21-23:57
  ┣7771.MS-DOS Player の更新 2017/7/24版 - konno 17/07/26-01:32
  ┃┗7772.MS-DOS Player の更新 2017/7/27版 - konno 17/07/27-21:42
  ┃ ┗7773.Re: MS-DOS Player の更新 2017/7/27版 - konno 17/07/28-21:55
  ┃  ┗7774.Re^2: MS-DOS Player の試用報告 - konno 17/07/30-15:47
  ┃   ┗7775.Re^3: MS-DOS Player の試用報告 - 10♯ 17/07/31-21:52
  ┃    ┗7776.Re^4: MS-DOS Player の試用報告 - konno 17/08/02-00:47
  ┃     ┗7777.MS-DOS Player の使い方 - konno 17/08/07-00:06
  ┣7778.MS-DOS Player 2017/8/12 の更新 - konno 17/08/14-20:28
  ┗7789.MS-DOS Player 2017-08-28 の更新 - konno 17/08/28-23:16

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

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