X



NT3.51スレ SP1
0077名無し~3.EXE
垢版 |
2019/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は複数種類あるのでその辺に
ヒントがありそう
0079名無し~3.EXE
垢版 |
2019/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
0080名無し~3.EXE
垢版 |
2019/11/06(水) 03:56:55.94ID:qBlO5wps
98版でHLTを有効にする方法みつけちゃったかも
0081名無し~3.EXE
垢版 |
2019/11/06(水) 03:59:32.75ID:qBlO5wps
N€CとMCRO$OFTの技術者は何考えてんだ?
ノート型PC-98にNT3.51やNT4.0を入れたら凄い勢いでバッテリー消耗するのに
0082名無し~3.EXE
垢版 |
2019/11/06(水) 04:10:52.31ID:qBlO5wps
但し私の技術力ではNT3.1(PC-98版問わず全般)のHLTが有効になたない
問題を解決する方法を持っていません。なぜならなWindows NT 3.1には
HalProcessorIdle関数が存在しない為
0083名無し~3.EXE
垢版 |
2019/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負荷が軽減する結果が得られました。
0084名無し~3.EXE
垢版 |
2019/11/06(水) 05:57:40.17ID:qBlO5wps
唐突にエミュレーターを出ましたが、この調査の発端はPC-98エミュレーターで
NT3.51/NT4.0を使用時にホスト側のCPU負荷が高くなってしまう現象の調査の為に行いました。
(NT3.50/2000(NT5.0)の場合は適切にHLTが作動しているのとは対象的に)
0086名無し~3.EXE
垢版 |
2019/11/06(水) 11:59:57.40ID:qBlO5wps
NT3.51の8HMz系HALのhal98oct.dllもパッチしてみたら、Anex86での作動がよりスムーズになりました。
0087名無し~3.EXE
垢版 |
2019/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
レスを投稿する


ニューススポーツなんでも実況