2024年の総括
全ての国産PCのエミュレータを開発しようと始めたこの活動も、今年で21年目となりました。
振り返ってみて、分かってはいましたが、本業と自治会で多忙を極めた1年でした。
この年末、何にもしなくていい一日って何時以来だったかなーと(苦笑)
本業は楽になる予定はないですが、自治会長の任期が終わったので、来年は多少ましになる筈?
Common Source Code Project、結局まったく手を付けられませんでしたね。
纏まった時間が取れず、隙間時間で細々と調査できるMS-DOS Playerばかりになってしまいました。
VZエディタ方面の方々から色々不具合報告を頂けて、そこそこ成果はあがったかと思います。
MS-DOS V4とVZエディタのオープンソース化というビッグニュースもありましたね。
来年もますますMS-DOS界隈が盛り上がると嬉しいです。
一応新ネタ?として、MSX-DOS Playerをリリースすることが出来ました。
MS-DOS Playerを弄っていて、そういえばMSX-DOSってあったなー位の思い付きだったんですが、
意外と反応してくださる方がいらっしゃって嬉しい限り。
今後も、同じレトロPC界隈で活動を続けていらっしゃる皆様のお役に立てればと思います。
来年も、少しずつでも活動を継続していければと思いますが、
その前に、何年も過労死ラインでタップダンスを踊り続けてる本業を何とかしないとですね。
老眼とか高血圧とか一気に体にガタが来ていますので、色々立て直していきたいです。
2024/12/31
CP/M Player, MSX-DOS Playerを更新しました。
B-Pドライブの処理を修正しました。
2024/12/14
MS-DOS Playerを更新しました。
COMMAND.COMを起動する際に、DOSバージョンを自動認識するようにしました。
INT 2Fh, AH=2EhをMS-DOS Ver.5以降の仕様にあわせて修正しました。
INT 21h, AX=33FAh/33FChをサポートしてみました。
cracyc様のforkから、修正を取り込ませていただきました。
子プロセスとして起動した32/64bitのプログラムとのパイプ接続をサポートしました。
その他、VCPI周り、CP437のシンボルの表示、長い文字列のペーストが改良されています。
2024/12/12
MSX-DOS Playerを更新しました。
BDOS 0Bhで、コンソールに入力がない場合に、Zフラグを立てるようにしました。
2024/10/31
MS-DOS Playerを更新しました。
CGA/MDAのテキストモードのVRAM、または仮想テキストバッファを読むことで、
コンソール画面の表示内容を取得できるようにしました。
INT 21h, AH=13h/17hで、ワイルドカードを含むファイル名をサポートしました。
2024/10/24-2
MS-DOS Playerを更新しました。
先の更新で、エラーテーブルをIRETテーブルと同じメモリ領域にいれたときに、
後続のMCBのセグメントをエラーテーブル分だけずらすのを忘れてました。
取り急ぎバイナリを更新しておきます。
2024/10/24
MS-DOS Playerを更新しました。
INT 21h, AH=0Fh/10h/11h/12h/13h/16h/17h/23h/29hを修正しました。
FCBを使ったサービスで失敗したときに、拡張エラーコードを設定するようにしました。
INT 21h, AH=4Eh/AX=714Ehを修正しました。
最初のエントリが見つからないときに、適切なエラーコードを返すようにしました。
INT 2Fh, AX=0502hで拡張エラーメッセージを返すようにしました。
INT 2Fh, AX=122Eh, DL=00h/02h/04h/06hで取得するエラーテーブルを追加しました。
またDL=01h/03h/05h/07hでエラーテーブルのアドレスを変更できるようにしました。
プロセス起動時のメモリ確保のコードを整理しました。
コンベンショナルメモリが不足の場合、常に自動的にUMBを使用するようにしました。
COMモデルの起動時に、64KBのメモリの空きがないときに失敗するようにしました。
プロセス終了時に、開放するメモリのMCBが壊れている場合に修復するようにしました。
INT 2Fh,AX=4810hのサポートを廃止しました。
MS-DOS Playerの起動時に、スペース入りのargvを渡された場合、仮想マシンに渡す
コマンドラインにダブルクォーテーションで括って追加するようにしました。
2024/10/20
MS-DOS Playerを更新しました。
NP21/WのI386コアを、ver0.86 rev92相当に更新しました。
SSSE3, SSE4, SSE4aのサポートが追加されています。
2024/10/18
MS-DOS Playerを更新しました。
-pオプションでコードページを指定した場合に、実際に指定したコードページに
変更する処理が抜けていたのを修正しました。
仮想マシン上でカーソルを非表示にしても、実際の表示には反映されませんが、
-hオプションを指定することで、カーソルの非表示を反映するようにしました。
切断されたリモートドライブに対して、GetDriveTypeA()を実行すると、
長時間固まってしまう場合がある問題の対策を入れました。
MSX-DOS Playerを更新しました。
Ctrl-C/Breakで終了した場合に、開いたままのファイルを閉じたり、
コンソールのモードを元に戻すなど、後始末の処理をするようにしました。
2024/10/14
MSX-DOS Playerを更新しました。
COMMAND.COMを起動した場合、トランジェントコマンドが終了する、
またはトランジェントコマンド実行中にCtrl-C/Breakが押されると、
COMMAND.COMに戻ってくるようにしました。
F000h以降をMSX用のワークエリアとしました。
また、ワークエリア上に2DD 9sec/track相当のDPB領域を用意しました。
MSX固有のコントロールコードをサポートしました。
起動時に、コンソールのサイズを80x24に変更するようにしました。
2024/10/13
MSX-DOS Playerを更新しました。
BDOS 14h(ファイルオープン)について、ワイルドカードに対応しました。
BDOS 16h(ファイル新規作成)について、エクステント番号によって処理を分けました。
番号が0の場合は新規作成、それ以外は既存ファイルのオープンとなります。
ファイル操作周りを更に修正しました。
2024/10/12
MSX-DOS Playerを更新しました。
BDOS 13h(ファイル削除), 17h(リネーム)について、ワイルドカードに対応しました。
BDOS 1Ch, 1Dh, 20hを、MSX-DOSで無効にしました。
BDOS 28hで、ファイル末端より先に書き込む場合、隙間をゼロフィルするようにしました。
ファイル操作周りのコードを整理しました。
2024/10/10
MSX-DOS Playerを更新しました。
ファイルに書込みを行う都度、FCB内のファイルサイズと更新日時を更新するようにしました。
ファイルをクローズする際、FCB内のサイズと日時をファイルに反映するようにしました。
ファイルのサーチ数を、最大256個から1024個に増やしました。
BDOS 1Bhで、2DDにあわせて適当なアロケーション情報を返すようにしました。
BDOS 25hを無効にしました。
PMEXTLDとMGSFの問題が修正されているかもしれません。
2024/10/9
MSX-DOS Playerを更新しました。
スキャンコードがE0h付きのキー(カーソルなど)の入力を取得できるようにしました。
また、MSX-DOS仕様のエスケープシーケンスをサポートしました。
MSX-DOS TOOLSに入っているMEDが動作するようになっています。
2024/10/7
MS-DOS Playerを更新しました。
INT DChとINT DDhの割込みベクタが同じ値になるように修正しました。
J-3100用のATOK割込みが機能しなくなっていたのを修正しました。
MSX-DOS Playerを更新しました。
Disk BIOSのワークエリアが、CP/MのBIOS/BDOSに浸食されていたのを修正しました。
また、F37Dh経由でBDOSを呼び出せるようにしました。
2024/10/6-2
MS-DOS Playerを更新しました。
INT 2Fh, AX=1703h,1705h,1709hを修正しました。
INT 2Fh, AX=1704h,1705hを改良しました。
2024/10/6
MS-DOS Playerを更新しました。
INT 2Fh, AX=1700h-1705h,1708h-1709hをサポートしました。
古いバージョンのWindowsの、クリップボードを読み書きするサービスです。
MSX-DOS Playerをリリースしました。
CP/M Playerを、MSX-DOS1相当に拡張したものです。
MSX本体側のハードウェアやBIOSも、部分的にサポートしています。
2024/9/23
MS-DOS Playerを更新しました。
INT 2Fh, AX=1689hをサポートしました。
内部処理で使用している割込み番号を、6xhから4xhに変更しました。
2024/9/22
MS-DOS Playerを更新しました。
高橋版VZエディタ向けの修正を行いました。
2024/9/21
MS-DOS Playerを更新しました。
DOSVAXJ3の実装を参考に、INT 16h, AH=13hと、INT 6Fhの実装を整理しました。
また、$IBMAFNT/$IBMADSP/$IBMAIASが存在しているふりをするようにしました。
システムポートのbit4, bit5で、タイマーのCh.1/2の出力の読めるようにしました。
2024/9/19
MS-DOS Playerを更新しました。
INT 21h, AH=49hを修正しました。
メモリブロックの開放後、後続の空きメモリとの結合をしないようにしました。
INT 21h, AH=4Ahを修正しました。
指定したメモリブロックのサイズの変更に成功した場合、そのメモリブロックのオーナを
呼び出し元のプロセスに変更するようにしました。
サイズの変更に失敗した場合も、可能な限り最大のサイズに変更するようにしました。
2024/9/10
MS-DOS Playerを更新しました。
INT 13h, AH=15hを修正しました。
2024/9/8
MS-DOS Playerを更新しました。
COMMAND.COMがない状態で「COOMAND.COM /C」で内部コマンドを実行する件で、
TRUENAMEとVERについてもMS-DOS Playerの内部処理で実行するようにしました。
INT 13h, AH=08hを修正しました。
2024/9/7
MS-DOS Playerを更新しました。
プロセスの起動周りのコードを整理しました。
「COMMAND.COM /C TYPE (file)」のように、COMMAND.COMを起動して、
内部コマンドを実行するケースについて、色々と変更が入っています。
2024/9/4-2
MS-DOS Playerを更新しました。
子プロセスとして「COMMAND.COM /C 実行ファイル 引数」を起動しようとして、
COMMAND.COMが見つからない場合の処理を改良しました。
INT 21h, AH=49hの処理が成功した場合、AXにES-1をセットするように修正しました。
2024/9/4
MS-DOS Playerを更新しました。
^G(ベル)がコンソールに出力された場合、INT 29hを呼ばないようにしました。
子プロセスを起動するとき、コマンド引数の末端に0x0dをセットするようにしました。
2024/8/31
MS-DOS Playerを更新しました。
実行ファイルを読み込む処理を改良しました。
拡張子がないファイルが、実行ファイルとして読み込まれないように修正しています。
2024/7/31
MS-DOS Playerを更新しました。
Visual C++ 6.0 SP6でビルドできるよう手直ししてみました。
ビルドしたバイナリが、Windows NT 4.0上で動作することを確認しています。
2024/7/17
MS-DOS Playerを更新しました。
本国ポルトガル語のエラーメッセージを追加しました。
2024/7/16
MS-DOS Playerを更新しました。
ブラジルポルトガル語のエラーメッセージを追加しました。
2024/7/15
MS-DOS Playerを更新しました。
INT 2Fh, AX=0502hを修正しました。
拡張エラーコードではなく、パラメータエラーのメッセージを取得するようにしました。
日本語メッセージをSJISでハードコードしていたのを、BYTEのConstな配列に変更しました。
このついでに、フランス語、ドイツ語、スペイン語、韓国語のエラーメッセージを追加しました。
2024/7/6
MS-DOS Playerを更新しました。
INT 16h, AH=F0hを修正しました。
ビープ音の周波数を、PITに設定されたカウント値から決定するようにしています。
2024/7/3
MS-DOS Playerを更新しました。
IMEを操作する処理周りのコードを整理しました。
ImmGetDefaultIMEWndの返り値がNULLでないかチェックしていなかったので、
非アジア圏のWindows環境で、IMEがない場合に問題があったかもしれません。
2024/7/1
MS-DOS Playerを更新しました。
INT 10h, AX=8200hを修正しました。
INT 16h, AH=02h/12h/51hを修正しました。
INT 10h, AX=5000h/5001h, AH=85hをサポートしました。
INT 16h, AH=F0h/F1h/F5h/F6hをサポートしました。
INT 6Fh, AH=01h/02h/03h/04h/05h/0Bh/66hをサポートしました。
INT 10h/16h, AX=5000h/5001hをサポートしました。
INT 16h, AX=1300h/1301hをサポートしました。
もっぱら、J-3100, AX, DOS/V固有のサービスを追加しています。
2024/6/27
MS-DOS Playerを更新しました。
MAMEとNP21/WのI386コアにおいて、消費クロックの積算を無効にしました。
処理速度が大きく向上しているのではないかと思います。
x64版のビルドにおいて、ホストの環境変数からパスを読み込む際に、
C:\Windows\System32をC:\WINDOWS\SYSWOW64に置換するようにしました。
2024/6/24
MS-DOS Playerを更新しました。
不要なグローバル変数の初期化を省略しました。
テキストVRAMへのWORD/DWORD書込みを微妙に(if文1回)高速化しました。
2024/6/23
MS-DOS Playerを更新しました。
メモリのアロケーションの処理を改良しました。
INT 17h, AX=5000hにおいて、BXの値の判定処理が間違っていたのを修正しました。
INT 21h, AH=1Bh/1Chにおいて、取得したメディアタイプをDS:BXにコピーするのではなく、
DS, BXの値を、ドライブパラメータブロック上のアドレスに変更するように修正しました。
INT 33hのマウスサービスを、INT 15h, AH=C2hを呼び出す実装に修正しました。
DESQview向けに、BIOSワークエリアの50h-58hの初期化処理を修正しました。
マウスホイールをPageUp/Downとして処理するようにしました。
2024/3/2
MS-DOS Playerを更新しました。
INT 21h, AH=43h, BL=08hが、BL=06hと同じ動作になっていた問題を修正しました。
内蔵デバッガを改良しました。
conhost-v2のクラッシュ対策の改良と、WindowsNT 3.51/4向けの修正をしました。
2024/2/28
MS-DOS Playerを更新しました。
INT 21h, AX=4404h/4405h/440Ahを修正しました。
内蔵デバッガを改良しました。
conhost-v2のクラッシュ対策をしました。
Windows NT4.0 / 2000で動作するようにしました。(未確認)
2024/2/19
MS-DOS Playerを更新しました。
例外0xc0000417が発生する問題の対策として、strcpy_sをstrncpyに置き換えました。
2024/2/18
MS-DOS Playerを更新しました。
INT 67h, AX=5B00h/5B01h/5B04hについて、BHに00h以外を指定したときにエラーを返すようにしました。
MDA(Monochrome Display Adopter)をサポートしました。(多謝です>cracyc様)
2024/2/15
MS-DOS Playerを更新しました。
FCBを使ったファイルアクセスを修正しました。(多謝です>cracy様, roytam様)
MAME版i386コアのFPU周りの例外処理、DAA/DAS/AAA/AAS/AAM/AAD命令を修正しました。
NP21/WのI386コアを、ver0.86 rev92 beta2相当に更新しました。
環境変数のアクセス時に、正しくない環境テーブルを参照したときのチェックを強化しました。
メモリアクセスの処理を効率化しました。
2024/1/1
新年あけましておめでとうございます。
今年もよろしくお願いいたします。
Common Source Code Projectを更新しました。
開発中のコードが混ざってしまって、IMD形式のイメージ読み込みが壊れていたのを修正しました。