[OSASK 5084] l2d3@bim2bin2

 こんにちは、I.Tak.です。
ひさしぶりなのでさっきはシグネチャとかを忘れましたX-(


 さてl2d3がなぜうまく伸長できなかったか、ですが、ずばり
「bim2bin2はmaxdisが効かないのではないか?!」
と疑っています。以下に説明します。

 これはchuck0t.sys(chuck0t.exeをリロケートしてヘッダを
取ったもの)のダンプです。^と~で下線を引いたところに注目し
てください。

          +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f
00000d30: 36 c7 05 f8 ff ff ff cf 03 00 00 36 a3 fc ff ff
-------------------------------------^^^^^^^^^^^	 
00008d30: 31 c0 bd 80 df ff ff 48 b9 1c 00 00 00 89 4d fc
-------------------------------------~~~~~~~~~~~	 
00008ef0: 00 d4 ff ff 1f b9 00 00 04 00 e8 37 16 00 00 36
-------------------------------------------------^^^^^^^^
00008f00: a3 74 df ff ff 89 c2 b9 00 10 00 00 e8 22 17 00
----------^^

そしてこちらは, それをmaxdis:32kで圧縮したのち, IPLで伸長し
た結果をダンプしたものです(FMTOWNSのダンプ機能が役立った)。
上のダンプと比較して, ~で強調したところがコピーされている
のが分かると思います。

00008ef0: 00 d4 ff ff 1f b9 00 00 04 00 e8 37 16 1c 00 00
-------------------------------------------------~~~~~~~~
00008f00: 00 74 df ff ff 89 c2 b9 00 10 00 00 e8 22 17 1c
----------~~

これは状況証拠でしかありませんが, 0x0d39のデータをコピーする
べきなのに0x8d39のデータをコピーしてしまったように見えます。
 それで、距離が15ビットで表現できる範囲を超えてしまったので
はないかと思い、48KBまで距離をとれる伸長ルーチンを作って試し
ました。起動はできましたが、どこか壊れているようでアプリを
起動することはできませんでした。
 l2d4はもちろんそんなことはなくて、うまく展開・起動できます。

 以上の結果から、「bim2bin2は怪しい。それもl2d3がmaxdisを
理解していないらしい」と考えられます。どうでしょう?


 念のため、これはl2d3/l2d4/osaskcmp/exeリロケーションなど
盛り込んだIPLです。l2d3ルーチンに間違いは無いと思います。
http://user.ecc.u-tokyo.ac.jp/~g240845/osask/lzh/bootsec3.lzh


I.Tak. <g240845 !Atmark! mail.ecc.u-tokyo.ac.jp>
http://user.ecc.u-tokyo.ac.jp/~g240845/


ML番号でジャンプ
ML単語検索