【朗報】PC-98エミュでWindowsNTを起動した場合にホスト側CPU負荷が高くなる現象を回避するパッチが登場!!
■ このスレッドは過去ログ倉庫に格納されています
77名無し~3.EXE2019/11/06(水) 02:45:02.20ID:qBlO5wps
PC-98版のNT3.51とNT4.0のHLT(CPU idle)が有効にならない問題を解析できる猛者はいない?
PC-98版NT3.50ではHLTは有効なのは確認している。
PC-98版NT3.50ではHALが1つしかないが、NT3.51とNT4.0は複数種類あるのでその辺に
ヒントがありそう
78名無し~3.EXE2019/11/06(水) 02:55:43.67ID:qBlO5wps
この辺の記事と関係ありそうですね
NT4, Citrix Metaframe 1.8, and SMP under VMware - CPU Hogging Solution
https://communities.vmware.com/docs/DOC-11700
79名無し~3.EXE2019/11/06(水) 03:02:31.74ID:qBlO5wps
同様の問題について語っているWebで入手可能な多数の記事はすべて、HLT命令に基づいています。 私はお気に入りの逆アセンブラでHALAPIC.DLLを開き、次のエクスポートとアセンブリを見つけました。
HalProcessorIdle proc near
sti; 割り込みフラグを設定する
hlt; 停止状態に入る
retn; 近くの手順から戻る
HalProcessorIdle endp
わかりましたので、予想どおりにHLT命令を実行します。 HALMPS.DLLを開くと、次のことがわかりました。
HalProcessorIdle proc near
sti; 割り込みフラグを設定する
retn; 近くの手順から戻る
HalProcessorIdle endp
80名無し~3.EXE2019/11/06(水) 03:56:55.94ID:qBlO5wps
98版でHLTを有効にする方法みつけちゃったかも
81名無し~3.EXE2019/11/06(水) 03:59:32.75ID:qBlO5wps
N€CとMCRO$OFTの技術者は何考えてんだ?
ノート型PC-98にNT3.51やNT4.0を入れたら凄い勢いでバッテリー消耗するのに
82名無し~3.EXE2019/11/06(水) 04:10:52.31ID:qBlO5wps
但し私の技術力ではNT3.1(PC-98版問わず全般)のHLTが有効になたない
問題を解決する方法を持っていません。なぜならなWindows NT 3.1には
HalProcessorIdle関数が存在しない為
83名無し~3.EXE2019/11/06(水) 05:43:39.18ID:qBlO5wps
NT3.51及びNT4.0のHAL.DLL(np21/Wでは使われているであろう5MHz系HALのhal98up.dll)を
解析しみた結果
HalProcessorIdle proc near
sti; 割り込みフラグを設定する
nop; 何もしない
retn; 近くの手順から戻る
HalProcessorIdle endp
ということが判明しました。
これはどんなにエミュレーターの改良を使用ともNT3.51/NT4.0を使用時にホスト側CPUが
発熱・過熱することを意味します。
なのでバイナリエディタでNOP(0x90)をHLT(0xF4)に置き換えたのちPEチェックサムをあわせてみた
ものを使用した結果、ゲスト側のWinNTが高速作動する又はホスト側CPU負荷が軽減する結果が得られました。
84名無し~3.EXE2019/11/06(水) 05:57:40.17ID:qBlO5wps
唐突にエミュレーターを出ましたが、この調査の発端はPC-98エミュレーターで
NT3.51/NT4.0を使用時にホスト側のCPU負荷が高くなってしまう現象の調査の為に行いました。
(NT3.50/2000(NT5.0)の場合は適切にHLTが作動しているのとは対象的に)
85名無し~3.EXE2019/11/06(水) 06:19:50.29ID:qBlO5wps
スクショ
NT3.51
https://i.imgur.com/LyFkFr3.jpg
NT4.0
https://i.imgur.com/0lYxTdI.jpg
バイナリ(NT3.51 SP5とNT4.0 SP6のhal98up.dllベース)
https://www.axfc.net/u/4009776.zip
86名無し~3.EXE2019/11/06(水) 11:59:57.40ID:qBlO5wps
NT3.51の8HMz系HALのhal98oct.dllもパッチしてみたら、Anex86での作動がよりスムーズになりました。
87名無し~3.EXE2019/11/07(木) 18:05:33.56ID:FRAH9HHC
871名無しさん@お腹いっぱい。2019/11/07(木) 17:39:51.77ID:bgxVah+m0
IDEBIOS使用時にNT3.51でセカンダリースレーブに繋ぐと
起動時の黒画面で固まってしまって使えないと思っっていたのですが、
IDEのInterrupt Delayを2000にしてしばらく待っていたら起動できました。
BX4のIDEBIOSで3台認識
https://i.imgur.com/4OZioj5.jpg 石器時代のエロゲが動くようになるの?(´・ω・`) 2019年にこんなことやってる人がいるのが一周まわってすごいわ 技術系の懐古厨は時々すげー変態いるよな
Windows2000を未だに保守してる人もいるし
昨日もPSPのLCFWをCFW化するソフトの最新作リリースされたし >>10
この熱意を他に注いだらすごいもんできそうだ 貧乏そう
他人の作ったもんを一生懸命解析とかアホかと
その時間で自分でなんか作れよ まだこんなもん使ってる工場とか
リプレースできない化石を抱えた時点でただの負債でしかない ■ このスレッドは過去ログ倉庫に格納されています