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

タイトル MS-DOS Player の更新
投稿日: 2017/07/14(金) 23:42
投稿者konno
 番 号 7758       コメント数 3

MS-DOS Player 2017-07-14版が出ました!!
最近頻繁に更新がありましたが、今回の更新はびっくり!!うれしい!!

MS-DOS Player for Win32-x64 のページです。
http://takeda-toshiya.my.coocan.jp/msdos/index.html

以下、更新内容の引用です。
--------------------------------------------------------
2017/7/14
INT 21h, AX=440Ch, CL=5Fhをサポートしました。
INT 2Fh, AX=1A01h, CL=5Fhをサポートしました。
いずれもディスプレイの情報を設定するサービスですが、画面サイズのみ設定可能です。
MODE CON COLS=40 LINES=25とか出来るようになっているかと思います。

INT 21h/2Fhのサービスによって、コンソールに文字を表示する際に、
INT 29hの処理がフックされている場合は、INT 29hを経由するように修正しました。

制限として、INT 29hの処理がフックされている場合、STDINからの入力を待って、
更に入力に対してエコーを返すサービス(INT 21h, AH=01h/0Ah/3Fh)を実行中は、
仮想マシンのCPUの動作が停止して、タイマ割り込みが発生しなくなります。

これらのサービスの入力待ちの処理は、仮想マシンのCPU上でループするのではなく、
MS-DOS Playerのサービスの処理上でループすることで待機しています。
この待機中も、タイマ割り込みが発生できるように、CPUを回し続けるために、
別スレッドでサービスの処理を実行して、そちらで入力待ちをしてやって、
メインスレッドでは、CPUでダミールーチンを実行し続けるようになっています。
(この辺りについては、2017/2/22の記事をご参照ください。)

この別スレッドで実行しているサービスの処理内で、コンソールにエコーを返す際に、
INT 29hを実行するために、メインスレッドで回っているCPUに茶々を入れることが
構造的にとても難しかったため、INT 29hの処理がフックされている場合は、
サービスの処理をそのままメインスレッドで実行するようにしました。
このとき、メインスレッドで入力待ちをしている間、CPUの動作が停止してしまうため、
タイマ割り込みは発生できなくなります。

また、INT 29hの処理内で、再度コンソールに文字を表示するINT 21h/2Fhのサービスが
呼び出された場合、無限ループに入らないように、INT 29hは再発生しません。

今回の実装で、CPUコアからDOSのシステムコールのエミュレーションが呼ばれて、
その中で、INT 29hを実行してIRETするまでCPUコアを回してやって、
その中で、またDOSのシステムコールのエミュレーションが呼ばれて、といった感じで、
再入することを想定していなかった色々な処理を再入しまくってます。
何かしら処理に矛盾を来たしていないか、安定性に問題ないか、色々と苛めテストに
ご協力いただけますと幸いです。

本件は、VZエディタの私家版を開発されている、金野様よりご指摘いただきました。
VZエディタからDOSコマンドを実行する際に、INT 29hをフックすることで、
DOSコマンドの実行結果を取り込む、みたいなことをしているそうです。

Windows NTやOS/2上のコマンドプロンプトでも、コンソールに文字を表示する際に、
INT 29hを経由しないそうですが、意外と互換性が微妙なんですかね?
(この問題を補うために、toint29というソフトが公開されています)

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

ということで、実はMS-DOS Player 作者の武田さんに、
VZのコンソールが使えるようにならないかメールしたのです。
構造的に難しいとのことで、諦めていたんですが、実現してくれました!!
超嬉しいです!!

VZerにとってコンソールは大きな武器なので、これが使えないと実使用が難しい。
これから MS-DOS Player を本格的に試験運用していくつもりです。

武田さん、本当にありがとうございます。

    - No.7758 一括表示へ   -              [ 返信 ]    [引用無し] 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

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

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