RealTekの8139Cチップを載せたネットワークカードはよく見かけます。多くの場合ブート用32pinのROMソケットが載っています。本プログラム群は、そこに載せたROMにバイナリデータを書き込むものです。対応するROMごとに、また読み出し、書き込みごとに実行プログラムが異なりますので、内容をよく吟味の上適切に使い分けてください。
■ 32pinのROM用(ボードの改造は基本的に不要、ただしEPROMではVppに12V以上の印加は必要)
■ 28pin接続に特別に改造した27C256専用
■ 28pin接続に特別に改造した27C64専用
■ その他の28pinのROM専用の読み出しプログラム(ボードは基本的に改造不要だがVppに5Vを加える必要がある場合も)
まずジャンクでよいのでRTL8139Cの載ったPCIネットワークボードを入手する必要があります。RealteKと書いてないチップで、AcctonあるいはMPXと書かれているセカンドソース品(?)もあります。PCIベンダコードが異なりますが、本プログラムでは、知りうる限りの物には対応しています。
次にROMソケットとRTL8139Cの間に次のpin対応があるか確認します。
32pinの22番(CE)---8139Cの110番(ROMCSB)
32pinの24番(OE)---8139Cの 88番(OEB)
32pinの31番(WE)---8139Cの 89番(WEB)
27C1001,29C215,29C010,29F512,29F010
32pinのフラッシュROMに書き込む場合は、おそらく改造の必要はありません。32pinのEPROMの場合12Vを1番pinに繋がるよう改造する必要があります。12Vはボード裏面のPCIバス2番pinから取ります。なおROMの1番pinに12Vを掛けた状態でフラッシュROMを載せても問題はありません。フラッシュROMでは1番pinは未接続となっています。ですから12Vをかけておけば、フラッシュとEPROMの兼用となります。
27C256
WR27C256,RD27C256が使えるようにするためには、ソケットの左2pinを取り去り(または使わないようにし)、次のpinの対応が取れるよう配線を確認、改造してください。なおWEBピンはROMに接続するところはありません。12Vはボード裏面のPCIバス2番pinから取ります。
32pinの22番=28pinの20番(CE)---8139Cの110番(ROMCSB)
32pinの24番=28pinの22番(OE)---8139Cの 88番(OEB)
27C64,27C128
WR27C64 を使えるようにするためには、ソケットの左2pinを取り去り(または使わないようにし)、次のpinの対応が取れるよう配線を確認、改造してください。12Vはボード裏面のPCIバス2番pinから取ります。
32pinの22番=28pinの20番(CE)---8139Cの110番(ROMCSB)
32pinの24番=28pinの22番(OE)---8139Cの 88番(OEB)
32pinの29番=28pinの27番(WE)---A14との接続をカットして、8139Cの 89番(WEB)
【注意】ROMソケットのWEは27C256以上ではA14のアドレス線に接続されているので、まずそれをカットし、8139のWEBピンに接続する必要があります。
PC-98のDOS(5.00以上)またはDOS/Vで実行してください。いずれもconfig.sysにHIMEM.SYSが入っているがEMM386は入っていない状態で使用してください。仮想86モードでは問題が生ずる可能性があります。今バージョンから日本語メッセージのみのため、PC-DOS英語モードでは適切に表示できません。
コマンドライン引数にROMデータのバイナリファイルを指定してください。指定しない場合は実行開始後に尋ねられます。なおファイルサイズの上限は65536バイトまでです。したがって1MbitのROMまでしか書き込みはできません。65536バイトはRTL8139Cの仕様の最大ですが、チップレベルでROMのサイズを制限している物もあるようなので、65536バイトまで読み書きできない場合もあります。
実行が開始されると、まずデータファイルの先頭128バイトが表示されますので、よいか確認してください。何かキーを押すと、現在のROMの内容が表示されます。消去済みのEPROMの場合は全てがFFとなっています。フラッシュROMの場合は既存のデータが表示されます。いずれにしても全てが00の場合は読みだしに失敗していますので、ここでESCを押して必ず中止してください。それ以外のキーを押すと続行し、フラッシュの場合は消去フェーズに入ります。フラッシュでないROMの場合は消去フェーズはありません。次に書き込みとなります。ファイルサイズのバイト数だけ書き込まれます。書き込みが済むとベリファイを行います。先頭128バイトだけ表示しますがベリファイは全バイト行っています。ここで問題なければ終了です。ベリファイで一致しなかった箇所は全て表示します。場合によってはそのメッセージが大量に出続けます。全アドレスで不一致かつ読み込んだ値が0やFFhという場合は、ROMの不良ではなく、配線の誤りや接触不良で書き込みが全くできていないと考えられます。
■テスト用データ
次のボタンのリンクは、「PCIスロット搭載のPC-9821」でRTL8139Cネットワークカードに載せたままブートできるテスト用データです。
解凍すると2つのROMイメージファイルがあります。boot8139.romは8139CチップのPCIベンダーIDがRealtek純正のものに、boot1211.romは チップのベンダーIDがAccton(MPX)のものにそれぞれ対応します。MPXと書かれていてもベンダコードがRealtekの場合もあります(バッファローのLCI3-TXIなど)。PCIベンダIDを確認するにはPCILISTなどを利用してください。
テスト用データを入れたブートROMは、ブートの過程で実行を止め、CPU、PCIデバイスのレジスタやメモリ内容を表示します。このROMはブートの途中で、三度、CバスブートROMのエントリ仕様 INIT0, INIT1, EXTENTが順に呼ばれます。表示内容を確認したらスペースキーを押して進めていってください。どの段階でメモリに何が現れているか、どこから呼ばれているか(スタックメモリの内容)などがよくわかり、ROMプログラムを作る上での参考となると思います。
コマンドライン引数として、これから読み出すROMデータを保存するファイルの名前を指定してください。指定しない場合は実行開始後に尋ねられます。作成されるファイルのサイズはプログラムごとに異なり、ROMのbit数どおりとなります。すなわち27C64では8KB、128では16KB、256では32KB、512では64KBとなります。ROMの全容量にデータが入っているとは限りません。また大きなbit数のROMでは、同じデータが繰り返しで入っている場合もよくあります。
28pinと32pinと共通となっているネットワークボードが多いです。読み込みに際してソケットが32pinのときに28pinのROMを載せる場合は、右寄せ(28pinの14番-15番を32pinの16番-17番側に詰める)にしてしてください。左寄せにするとROMやボードを破壊しますので十分注意してください。
27C64と128では、読み出し時に28pinの1番pinのVppはHレベルでなければならないことになっていますが、そうでなくても読めることが多いようです。もし読めない場合にはVppのレベルをVccにしてください。27C512ではLレベルですのでボードは無改造で読めるはずです。
32pinのROM読み込みプログラムは付属しません。こちらのPCIXROMで64KBまで読めます。
このプログラムはフリーソフトウェアです。自由に使用してよい代わりにサポートのようなものはありません。直接・間接的に、このプログラムの運用の結果に何があっても、作者は一切責任をとることはないものとします。著作権は保持します。他のサイトへの無断転載も認めません。ROMデータについてはその著作権を侵害しないようにお使いください。連絡メールアドレスは、 ホームページ上に記載されています。