DOSVAXJ3で表示がおかしくなっていたので差し替えました。
落とされた方はお手数ですが差し替え版を再度落としてください。
ご指摘ありがとうございます。>@takapyuさん
原因は エミュの機種チェックルーチンでした。
元は
/* VTDOS 0/ MSDOS Playr 1/ DOSVAXJ3 2 check */
dos_check(void)
{
_asm_c(
"\n\tMOV\tAX,7476H"
"\n\tMOV\tBX,0000H"
"\n\tINT\t2FH"
"\n\tRET"
);
}
こんなルーチンを作り
if ( emu_check()==1) {
このようにあちこちで呼んでいましたが、このルーチンはVTDOSでは 返り値が 118
となって VTDOSを終了させられないので
_asm_c(
"\n\tMOV\tAX,7476H"
"\n\tMOV\tBX,0000H"
"\n\tMOV\tCX,6F64H"
"\n\tMOV\tDX,0073H"
"\n\tINT\t2FH"
"\n\tRET"
このようにしたら VTDOSでの返り値が 0 になったのでこのままアップしたのでした。
どうやら追加した CXや DXの値がデータアドレスなどを狂わせてしまったようです。
なのでさらに
_asm_c(
"\n\tPUSH\tCX"
"\n\tPUSH\tDX"
"\n\tMOV\tAX,7476H"
"\n\tMOV\tBX,0000H"
"\n\tMOV\tCX,6F64H"
"\n\tMOV\tDX,0073H"
"\n\tINT\t2FH"
"\n\tPOP\tDX"
"\n\tPOP\tCX"
"\n\tRET"
このようにプッシュポップを追加しました。あと、あちこちで呼ぶのも良くないので
メインルーチン冒頭でだけ
emu_mode=0;
emu_mode=emu_check();
if ( emu_mode==0) {
printf("VTDOSでは使用できません\n");
exit(0);
}
このように呼んで、あとは
if ( emu_mode==0) {
に変更してやっとうまく動くようになりました。
私は C言語などよくわからないのでこのように泥縄でやっております。
#百人一首 for DOS/V 改変版 2026-07-12 差替え版です。
> リプレイで正解率が出たままになります。
Xで @takapyuさんのご指摘がありました。
リプレイは確認していませんでした。ありがとうございます。
表示だけの初期化は難しそうなのでメッセージ枠でなんとか調整しました。
ということで、今日7/12の差し替え版と差し替えてください。
ダウンロード txt:carta_k.zip サイズ 26715bytes 2026-07-12
改変履歴
2026-07-12 リプレイで正解率が出たままだったのを修正
2026-07-10 正解率の表示ズレとマウスカーソルの表示タイミング調整
2026-07-08 DOSVAXJ3で表示がおかしくなっていたので差し替え
2026-07-07 CPU負荷低減・MSDOS Playerで動くように表示関連調整