[040424/040428]
メモリ拡張用ルーチン
を、先頭セクタに埋め込んでみました
*
追記あり
PC110
用
32MB拡張メモリ
を起動/活性化するルーチン(
over16s
の代理)を、ディスクのMBRやOSのIPL部(?)に埋め込んでみました。
(OSが切り替わっても、トータル・メモリ28MBを維持できないかと思って)
実は、
先回のトライ
以降、
Win2000
を、1GBのマイクロ・ドライブ(MD)へCDROMから直接インストールできないか(執念深く)調べているのですが、(CDROMの中身を書き換えずに)インストールするには、
28MBを維持しておく必要
があり、そのための苦肉の策/案でもあります。
FDや
PCHDT
(PCカード型HD)では何とか働きますが、拡張メモリ板側に時間遅延回路を入れてあるせいか、MDやCFではルーチンが働き過ぎて目論見通りには行きませんでした。それ以外にも問題があって、結局、CDROMからのインストールは、いずれも未達成。(x_x;?
−−−−−−−−−−−−−−−−−−−−−−−−−
事の次第
あるルートから、「外付けCDROMから、OSがセットアップできるFD」を入手しました。これを使えば、マイクロ・ドライブ側へ「OSの素」を入れておかなくても、素直にCDROMからインストールできるのでは?と考えました。(何せ、これを入れた上に、インストールに空き領域800MB以上を要求されますので、1GBではとても足りないんです)
[1]
そこで、まず(DOSNET.INF、TXTSETUP.SIF書き換え済みの)
i386
をコピーした
仮CDROM
を作ってやってみました。始めは順調に行くように見えましたが、ところがドッコイ!途中でエラー発生。
次のファイルをコピーできませんでした。
appser~1.cls
なんて警告が出て来ました。慌てて基のCDROMに替えて、これを読ませましたが、後から出るわ出るわ!(xxxx~1.xxx とチルダの付いたファイルは全部ダメ。勘定したら30個以上ありました)
これの結末は...インストール不成功。(途中で止まってしまいました)
[2]
次に、上記の「セットアップできるFD」の
先頭セクタ(IPL部?)
に、左上図のような「メモリ拡張ルーチン」を手動で書き込んでおきました。
210番地以降を使った理由は、ここはエラー・メッセージだけ(?)なので、本来のプログラムに影響はないと見たからです。
書き込みには
清十郎さん
の
EXDEB.EXE
を使わせて頂きました。感謝![(_'_)] (
SYMDEB.EXE
では、ディスク/CFのセクタが上手く読めなかったため)
この「FD」を使って32MBに設定した上で、基の
Win2000
のCDROMからインストールを開始。必要ファイル全部を読み込んだ後で、やはり次のようなのが出て来ました。
メモリは、28MB以上必要です。
その段階で、(
Win95
のコマンドを立ち上げて)mDの先頭セクタに同じようなルーチンを書き込んでみたら、28MBにはなるのですが、何と!
繰り返しリセット
が掛かって次へ進めませんでした。(これも、最後はインストール不成功)
[3]
上記の段階で、兎に角メモリ・レジスタを手動で書き換えて28MBにしてMDで立ち上げてみたら、今度は次の奴。
File \$WIN_NT$.~BT\ntkrnlmp.exe could not be loaded.
The error code is 4
結局、ここで行き止まり!
詰まるところ、どの方法でも不成功だったという事です。(T_T;?
唯一の収穫は、MBRや先頭セクタにでも、「メモリ拡張用ルーチン(レジスタ書き換えプログラム)」が置けるって判った事くらいでしょうか。(しかし、それにも落し穴がありますが)
拡張用ルーチンと埋め込み場所.
上図は、
Win95
が入ったディスクのMBRの先頭と後尾の例です。DOSなどでは多少位置や構造、メッセージが英文/日本語など、違っていますが、基本的にはよく似ています。
また、ディスクの先頭セクタ(IPL部?)も、これに類似。
MBR部
も
IPL部
も、「メモリ拡張用ルーチン(サイズ決め撃ち型)」の置き場として使えそうです。
(ただし、拡張メモリ板上の遅延回路の遅延時間の関係で、このままでは上手く働きませんが...)
セクタの書き換えや修復
MBR部
は、
MBRIMAGE
でファイルにセーブし、
EXDEB
や
SYMDEB
で書き替えて、再度
MBRIMAGE
でリストアしました。
IPL部
は、
EXDEB
で、-l100 2 0 2 や -w100 2 0 2 などとし、100番地以降を使って読み/書きしました。
MBRを元に戻すには、PC-DOSディスクなどで
fdisk/mbr
とやれば、簡単に戻りますし、また、IPL部は、(ディスク上のOS用の)起動FDで立ち上げて、
sys c:
とすれば、戻ります。
ただし、修復した後、直ぐに電源スイッチを入れて働かせると、一見消えていないような動作をする事があります。なので、十分本体を休養(?)させてやった後に、電源を入れた方がいいようです。
遅延時間のこと
32MB拡張メモリ板上に形成した(C,R,74VHC32を使った)回路での遅延時間は、およそ数十msecにしてありますが、実際どの程度必要なのかはよく判りません。
現状(autoexec.batでの読み込み)では今の遅延時間で問題無いようですが、MBRに埋め込む場合を考えると、もっと短くしても/した方がいいのかも知れません。
現状でMBRやIPLにルーチンを埋め込んでちゃんと働くのは、
FD
とPCカード・スロットに差した
PCHDT
だけ。これは多分、そのセクタを読むまでにある程度時間が掛かり、遅延期間が終わって正常待機状態になっているせいでしょう。
MD
や
CF
では、"繰り返しリセット"が起きます。これは拡張メモリ板の遅延期間中にセクタが読み込まれ、実メモリが拡張されていない状態でチェック・処理しているようです。それで、"サイズ異常"になっているせいだろうと思います。
(拡張メモリ板側の遅延時間を短縮・調整すれば、上手く行くかも知れないのですが、そこまで作業を広げる余裕が無いもので、また別の機会に)
最後に
今回も失敗に終わりましたが、途中またもや
みみさん
や
名高さん
(現、
とふ屋
)にはお世話になりました。感謝![(_'_)] (何とか、仕返しを、いやお返しをしたいものですが、力不足ゆえままなりませぬ。何卒お許しを!w(^-^;m)
*追記
[0428]
拡張メモリ28MB
は、残念ながら、
WinNT,Win2000
には受け入れられませんでした。立ち上がり途中で、異常停止してしまいます。
また、
Win95,Win98
でも、これらをインストールしようとした場合には、途中で異常が発生します。(SUWIN異常) (x_x;?
どうやら、いずれも(真剣に?)ハードウェア・チェックをするためらしいのですが、(今のBIOSを騙す方式では)それをすり抜けられないようです。
ならば、BIOSそのものを書き替えられればいいのですが、(失敗すれば、本体が一巻の終わりになるし、第一、BIOS内容も判らないので)そうも行きません。
従って、この28MB拡張メモリは、
Win95,OS/2
,そして
Linux
(それに多分
Win98
も)での"アプリケーション専用"と言えそうです。或いは、無難に考えるなら半分の16MB(トータル20MB)で使う事でしょうね。
C(pF)
正否
104
×
154
×
174
×
204
×
224
○
474
○
尚、
遅延回路のキャパシタC
を替えて、「正常に28MBになる遅延時間(
*注
:下記)」を調べてみました。が、よく考えると、使うCFのタイプによって応答時間なども変わるので、データはあまり役に立ちそうにありません。
しかし、折角採ったデータなので、一応表にしておきます。(丸印が、正常に28MBになるC値)
本体クロックは40MHz、OSは
PC-DOS
、実験CFは16MB(
メルコ
製
RCF-X
)、抵抗Rは1MΩ、キャパシタCを10nF〜50nFの範囲で変更して、結果は右表。C・R積=約22msec辺りが、この場合の閾値のようです。
*注
:遅延時間=「BIOSがメモリ・チェックをする間、32MBの内の上位半分16MBを遮蔽(目隠し)しておく時間」の意。
遅延回路の例
[表紙頁]へ
関連記事の目次へ
[一言板]へ