■メルコのSDAT方式HDD DSC-UE3.2Gを改造する
■DSC-UE3.2GのHDDを入れ替えると動かない
ノートPCで使っていたIDEの2.5"HDD(20GB)をX68030に内蔵しようと思い、SCSI⇔IDE変換タイプの外付けHDDのジャンク DSC-UE3.2G をハードオフで買ってきました。ところがこの DSC-UE3.2G、もともと入っていたHDDは正しく動くのですが、他のHDDに入れ替えるとエラーを示すLEDが点滅しっぱなしになり、動作しません。大容量のものがダメなのかと思いきや、4GBのHDDでもダメです。
これではほんとにゴミを買っただけになってしまう。もったいないのでダメもとで改造してみます。
■改造できるか検討してみる
SCSI⇔IDE変換基板を眺めると、ワンタイムROM・PLCCパッケージの27C256がソケットに挿さっているのがわかります。このROMに変換基板のコントローラであるH8のコードが入っています。ファームウェア書き換えについては、PLCC版27C256の入手がめんどくさい&たぶん高いので、この際もともとついていたROMを上書きしてしまうことにします。ワンタイムROMとはいえ書き込み(ビットを1→0にする)は何度でも可能で、都合のいいことにH8のNOP命令は 0x0000 ですので、現在ROMに書かれている命令をNOPで上書きすることならできます。
■パッチを当ててみる
ATAコマンドのIDENTIFY DEVICEを投げているとおぼしきところから追っていくと、怪しい部分が2つ見つかりました。
- Multiword DMA Capability を見て Mode 2 supported でなければエラーとしている。ここで該当ビットを見るのではなく即値の 0x04 と比較しているが、ATAPI-6のスペックを読むと「Mode 2 supported なら Mode1,0 のビットも立ててね」と書いてあるような気がする。0x07を返すHDDだとまずいっぽい。
- HDDから取得した総セクタ数をあらかじめ用意したテーブルのデータと順次比較し、「総セクタ数以下で一番近い容量のエントリ」を選択している。
このとき実際の総セクタ数と決めうちで持っているセクタ数の差が0x100000(≒537MB)以上あるとエラーになる。つまり、このファームウェアはあらかじめ決められた数パターンの容量(9.1G/8.3G/6.4G/4.3G/3.2G/2.1G/1.2G + 0〜0.5G)しかサポートしていないのであった。
これが20Gでも4Gでもダメだった原因っぽい。
ということで、これらのチェックでエラー処理に飛んでいる分岐命令をNOPで上書きしてみたところ、20GBのHDDを接続してもエラーにならずに起動するようになりました。めでたしめでたし。当たり前ですが、20GBのHDDを接続しても9.1GBまでしか使えません。
【変更箇所】
オフセット | 変更前 | 変更後 |
1B16 | 58 | 00 |
1B17 | 40 | 00 |
1B18 | 00 | 00 |
1B19 | 14 | 00 |
|
オフセット | 変更前 | 変更後 |
4438 | 58 | 00 |
4439 | 60 | 00 |
443A | 00 | 00 |
443B | A4 | 00 |
|
※ファームウェアのバージョンによってはこの通りでない可能性があります
■内蔵しましょう
といってもこちらのページの通りにしただけ。2mmピッチの40ピンコネクタが入手困難なため、ターミネータを取り外してソケット化する方法がたいへん参考になります。X68030の内蔵HDD用ステーは2.5"SCSI HDD用で、2.5"IDE HDDと穴の位置が異なるため、そのまま取り付けるとネジ2本でしか固定できません。そこで、ドリルで3.5"HDDに合う穴を開け、AT互換機の3.5インチベイに2.5"HDDを取り付ける金具と金属スペーサを使って「ステー - 変換基板 - HDD」の2階建て構造にしています。
■まとめ
SCSI⇔IDE変換基板目当てでジャンクを漁るときは、DSC-UExxGには気をつけましょう。DSC-UxxGTRとかI/O DATAのHDVS-UMxxを探すのがいいらしい?
戻る