作りたいものに妥協しないために、会社を興してまで完成させた作品です。うれろー、うれろー。

2014年02月26日

MS-DOS Playerと、DoDiaryとかFDとか

河口湖在住ですが、先週の大雪は大変でした。
ようやく日常に戻ってきた感じです。

最近はMS-DOS Playerのプチ作業中です。

VTDOSの守備範囲というか、拙作に期待されている範囲じゃない気がしますが(苦笑)、
INT 10H/INT 16Hの実装を進めています。
主に、DoDiaryとかFDとかをサポートしたいなあというのが目的です。

まだリリース前ですが、作業中のファイルです。
http://homepage3.nifty.com/takeda-toshiya/00tmp/msdos.zip

こっちの作業が一段落したら、yaPC-6001の取り込みとかMZ-1500とかの作業を
進める予定です、もう少しお待ちください。

140226-1.png
DoDiaryは、素の1.55ではファイルの保存に失敗してしまうのですが、
(日付を取得して、2014.DDNというファイル名を生成するのに失敗している)
Windows用にパッチをあてたWDD.COMであれば、ちゃんと動作するようです。

素の1.55は、Windows2000のコマンドプロンプトでも正常動作しませんでしたが、
Windows 98SEのコマンドプロンプトではOKでした。うーん。

140226-2.png140226-3.png

FDは、一応ちゃんと動いてる感じです。
あまり使い込んでないので、どこかしらで未実装のサービスを叩いてしまって、
落ちる箇所があるかもしれません。

140226-4.png140226-5.png

FILMTNは、一見動いてるっぽいのですが、プログラムを実行しようとすると、
そこで落ちてしまいます。

親プロセスのPSP内のバッファに、/C (プログラム名).EXEという文字列を生成する
ところまでは実行されているっぽいのですが、そのままプログラムを起動せずに、
FILMTNが正常終了してしまってます。
内蔵の386ディスアセンブラで処理を追っかけていますが、いまいち状況がわかりません。

ちなみにFILMTNでは、ファイル一覧の取得に、FCBを使ったファイル検索を実行しています。
FCB絡みの処理は未実装だったので、ファイル検索とファイル削除だけ実装しておきました。


(2014/2/27 0:45追記)
素のDoDiary Version 1.55が動作するようになりました。
仮バイナリは、昨日と同じURLです。

140227-1.png

このソフトは、実行モジュールのパスを取得するため、環境変数テーブルの末尾を検索します。
このとき、テーブル長は最大400Hであると想定しています。
しかし、現在のWindowsでは、環境変数が増えて、テーブルがもっと大きくなっているため、
実行モジュールのパスの取得に失敗していたようです。

そこで、msdos -e dd.comのように、-eを付けて起動すると、最低限の環境変数として、
COMSPEC/INCLUDE/LIB/PATH/PROMPT/TEMP/TMP/TZのみホスト環境から読み込むような
仕組みを追加してみました。

また、int 16hでキー入力を受け付けるとき、E0hから始まる特殊キーと漢字を、それぞれ
正しく入力できるように修正しています。


(2014/3/1 0:15追記)
LIST.COMが動作するようになりました。
例によって、仮バイナリは先日と同じURLです。

140301-1.png140301-2.png

INT 10H,AH=FEHで仮想VRAMのアドレスを取得して、VRAMを書き換えてから、
INT 10H,AH=FFHで画面に反映するのが一般的な作法なのですが。
LIST.COMは、VRAMの内容を書き換えても、INT 10H,AH=FFHを実行しません。
仕方がないので、INT 10H,AH=FEHが実行されて、AH=FFHが実行されない場合、
VRAMが書き換えられたら即画面に反映するようにしました。

その他、INT 21H,AH=4EH/4FHで、ファイルが見つかった場合はAX=0Hとしたり、
INT 16HのAH=00H/01Hと10H/11Hの挙動の違いを変えたりしています。

もう少し作業を進めたら、正式リリースしようかと思います。


(2014/3/5 22:20追記)
FDでファイルのリネームに失敗する問題を修正しました。

FDでは、リネーム時に、新しい名前のファイルが既に存在しないか、ファイルの検索を
行うことでチェックしています。
従来のファイルの検索処理の実装では、検索マスクでボリュームラベルが有効な場合、
常にボリュームラベルを見つけるような処理になっていました。
このため、新しい名前のファイルが常に存在していると判定されてしまっていたようです。

ファイル検索処理を、ボリュームラベルを見つける際、指定された名前のパターンに
一致するかをちゃんとチェックするように修正することで、問題が解決しています。

#もうそろそろリリースかなあと思いますが、もうちょい弄ってからにしようかなと。


(2014/3/12 0:30追記)
140312-1.png

JR運賃計算システム MARS for MS-DOSが動作するようになりました。
Turbo Pascalのランタイム内で、CONデバイスを開くにを失敗してたのを修正しています。
正式リリースしていますので、ダウンロードは本サイトにて。

他にも、重要なソフトで動かないものがございましたら、ご連絡プリーズです。

VZエディタは?、とか聞かれそうですが、実は使ったことないんですよね(苦笑)
DOS時代はもっぱら98上でSEDITの人でしたし、Windows移行後はQXエディタ一筋で。
時々ヤフオクに出品していないかなーと覗いてるので、まあ入手できたらということで。
posted by 武田 at 00:47| Comment(19) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする
まるくん、がんばれ、ちょうがんばれ