479 自分:名無し~3.EXE[] 投稿日:2025/10/21(火) 23:07:00.35 ID:DO1HFso1 [1/2]
エミュレータ・仮想環境(及びWin-OS/2)でのWin32s 1.30A/1.30Cの問題の解決方が見つかったかもしれない。Win32s problem
https://www.betaarchive.com/forum/viewtopic.php?t=32237Re: Win32s の問題
役職 raideniiによる2015年1月21日(水)午前4時55分PCem rev 192以降ではWin32s 1.30cの問題が解決されているようです。rev 193のバイナリを試してみましたが、確かに動作しました。
http://www.retrosoftware.co.uk/hg/pcem/rev/b6f77caf741e
その理由は、SGDT がすべてのベース アドレスを 16 ビット モード (ドキュメントに記載されており、おそらく VM が使用するモード) で保存していないため、Win32s が壊れてしまうためだと考えられます。Re: Win32s の問題
役職 バトラーによる2015年1月22日(木)午前4時40分16MBを超えるRAM(24ビットでアドレス指定できる最大値 – アドレスは0から始まります)が原因の可能性があります。Win32s v1.30以降では、16MBを超えるメモリアドレスを指定しようとしていますが、24ビット制限のためリアルモードでは失敗します。
編集:http://www.it.uc3m.es/ttao/Pentium/Inst … -LIDT.html386+では、SGDT命令とSIDT命令は常に32ビットすべてを格納しますが、LGDT命令とLIDT命令は、オペランドサイズが16ビットの場合、上位8ビットを00として返します。286では、上位8ビットは常に未定義です。
Re: Win32s の問題
役職 roytam1による≫2022年12月31日(土)午後5時20分古いスレッドを再び取り上げて申し訳ありませんが、win32s 1.30.xxx で発生する EMM386 障害処理画面 / システム フリーズ / Windows システム メッセージ ボックスの破損などは、win32s16.dll の 1 バイトをパッチすることで修正できます。
バイト パターンの検索: 66 83 EF 04 E3 3Bを次
の値に置き換えます: 66 83 EF 04 EB 3B は、win32s16.dll のすべての 1.30 バージョンで動作するはずです。
480 自分:名無し~3.EXE[sage] 投稿日:2025/10/21(火) 23:11:55.94 ID:DO1HFso1 [2/2]
まだ上記のパッチ試していませんが、
この修正法が発見されるまで27年もかかってしまった!?481 自分返信:名無し~3.EXE[] 投稿日:2025/10/22(水) 13:36:26.06 ID:ex2sosKx [1/2]
>>479
Win32s 1.30A/1.30Cが動かないと言われるVirtual PCで
Win32s 1.30Cが動きました。感動482 自分:名無し~3.EXE[] 投稿日:2025/10/22(水) 13:59:16.49 ID:ex2sosKx [2/2]
画像MS-DOS・Win3.1総合スレッド 3.0
https://mevius.5ch.net/test/read.cgi/win/1531491400/
OS/2とかの人には朗報なの?
Win32s 1.30系はVirtual PCで動かないというのが定石だった。謎のエラーに遭遇して動かない。
更にWin-OS/2でも動かないという様子だった。
解決策はWin32s 1.25系を使うか、僅かながらの互換性向上の為に、Win32s 1.25/1.30ハイブリッドという技法もあった。
しかしながらWindows 95登場後のWin32s対応ソフトはWin32s 1.30cを要求しており、事実上Win32s 1.30cの動作が前提条件であった。
Win32s 1.25では「Windows NT 3.1」のソフトが(一部)動きます程度のメリットしかなく、殆どのWin32s対応を謳ってるソフトが動かなかった。
たった1バイトのパッチで動くようになるのに、発見がここまで遅れるとは…
この奇妙な問題はM$がOS/2で動かないようにあえて仕込んだのではないかという声もある。
66 83 EF 04 E3 3B
66 83 EF 04 EB 3B
1バイトどころかマッチ棒1本の問題じゃん
www
確かに
CISCなので1ビットの違いで別の動作とか普通よ
専ブラの広告排除のパッチなんかもだいたいは
フラグレジスタ見て分岐してるジャンプ命令を
変えてるだけだし
マッチ棒1本足して動くようにしなさいw
実機保存しておいてこの手の検証ってメッチャだるい
Intelの難解な仕様書みてもこの奇妙な仕様は分かりづらいものではある
CISCのウ●コさだよなあ
この間も別のネタが何かあったな
奇妙な16bit/32bitハイブリッドシステムだからかなり能力のある解析者じゃないと不明だったし、
枯れた環境だから動かないものは動かないという諦めもあったのかも知れない。
タイミングがシビアでエミュレーションではうまくいかないのかなという推測はしていたが、
オチはあまり知られていないCPUの16bit/32bit混合環境の癖が原因であつた
誰も必要としてなかったから探してなかったんだろ
暇人が見つけただけ
でネットに良くあるWin32s 1.30cは英語版(SBCS、1バイト文字圏用)なので、
日本語Windows 3.1にはWin32s 1.30c 日本語版又はFarEast版が必要である。
リアルモードで動くのはWindows 3.0迄です。(但しWindows 3.1初期ベータ版はリアルモードでも動きました。)
NEC PC-9801シリーズですか?
動く筈です。
エミュレーターで動かす場合は今回のパッチを当てる事により動作安定が向上する可能性があります。
ConnectixはPS1のエミュレータ作ったり、VPC作ったりと割と変態プログラマーがいた会社だな
どっちも買収されたけど


コメント