第1回・HDDを増設・換装する

まず最初に問題になるのが、HDDの容量だと思われる。
近年のアプリケーションのハードディスク使用容量はすさまじい。
昔から使っている98RAにはSASI(※1)(シュガート社の物ではないが)の40MBHDDが
接続されている。昔はこんな容量でも十分大丈夫だった物だが。

そこでHDDを増設して、容量を増やしてしまおうというのだが、
持っているマシンに使われているHDDはIDE(※2)タイプの物だろうか?それともEIDE?SCSI?
これらのHDDの違いは、「インターフェース構造の違い」である。
時代の歩みと共に、それらをコンピューターにつなぐ装置にも様々な改良や新たな規格が考えられてきた。
そのために、いろいろと入り交じっているのである。
まず、一番割安なのが、IDE(あいでーいーと読む)タイプである。
このインターフェースには容量に上限があったり、HDD以外がつなげないというので、若干改良を加えた
EIDE(EnhancedIDE)である。(HDD以外の物をつなげるときはATAPIと呼ばれる)
これらはそれ専用の機能に限定したチップを使えればよいので、割安にチップが作れるため値段が押さえられた。
そのため、プライマリー・セカンダリーと呼ばれる2つのバスにそれぞれ2台ずつしかつけられない。
それぞれのバスにつけられたHDDは、マスター・スレーブのどちらかで動作する。
(単に見分けるだけだと思われる。98のGDCのようにスレーブ動作はマスター側のクロックに同期して
動作することにより、画像の合成を実現するといった、こった物ではないようだ)

これからして、つけられるHDDは、1つのインターフェースにおいて最大4台までという制限がある。
(RAIDとかだとこの限りではないし、特殊なハードウェアを使用しない一般的な物についてである)
さらに、進化によって、HDDからコンピューターへ転送を行う、その転送方式の動作モードには、
いろいろな方式がある。
PIOモード1・2・3・4
DMAモード1・2
UltraATA・33
である。
このうちPIOモードは、CPUのI/O転送命令(※3)(INS・OUTS)を用いてデータを転送する物である。
CPUが転送を行うので、CPUの負担が大きい。
しかしながら、CPUがデータを書き換えるので、キャッシュメモリと実際のメモリが違うキャッシュ不整合の
問題は理論上発生しない。はず。

DMAモードは、DirectMemoryAccessと呼ばれるチップが転送を担当する。
このチップが登場した頃は、ただ単にメモリをアクセスして読み込み・書き込むといった機構のため、高速にデータ
を転送する事が出来た。しかしながら、最近はCPUのクロックがかなり速くなっているので、あまりDMAとの
差はないであろう。
もっとも、データを転送中にも、CPUは遊んでいるので、ある程度の処理を行う事は出来る。
しかし、DMAは転送を開始する際に、CPUに対してバスリクエストを行う。
CPUはバスリクエストにたいし、現在の処理を中断し、すべてのバスに対する信号線をハイインピーダンスモード(※4)
にして、バスアクノリッジ信号を出して、準備が出来た事をDMAチップに知らせる。
DMAはこの信号を受けデータの転送を開始する。
つまり、データ転送中は、結局CPUは停止しているため、処理を別に行えない。
しかしながら、割り込み関連のデータアクセスやレジスタの保持などを考えると、CPUが転送するよりも、スマート
であるといえよう。
もっとも、DMAが書き換えたメモリに対しては、キャッシュの内容と値が食い違ってしまうので、バスリクエスト
を受け付けた時点で、キャッシュをフラッシュ(※5)する必要がある。

そして、最後のUltraATAモードというのは、DMAと何ら変わるところはない。
違いは、より高性能でデータの転送速度が速いDMAチップを使用している(※6)というだけである。

うーんこれだけで長くなってしまった。
SCSI方式とは? 付け方、接続するための金具、準備などに関しては、次回に続く事にする。


※1
ちなみにこのドライブ、アクセス音は「がさごそ」だ。
HDDのスピードによってアクセス音もだいぶ変わってきたといえよう。
「がさごそ」 > 「がりがり」 > 「ちりちり」 > 「ちっちっ」
右に行くほど高速になっている。
大体シークタイムは「80ms」くらいだろうか。
それでも、40MBは当時大容量であった。
(それよりも前は、640KBのメモリーを積んでいただけでも驚かれる時代があったが)
40MBを2つに分けて20MB・20MBに区切って使っていたくらいだ。
ちなみに12BitFAT。これは基本フォーマットだった。
いま一般的に使われているFATは16BitFATだ。
これは拡張フォーマットと呼ばれていて、80MBくらいから選択できたフォーマットだ。
(もっとも、Formatコマンドにパッチを当てて強引に使用するという方法も当時取られていた。)
ちなみに、FAT32は32ビットではないらしい。が、どこぞの説明を見ると32ビットと書いてあるのだが。
それと、32ビットの最大数である42億クラスタまで分割できるわけではない。FAT管理領域が大きくなり
すぎるからだ。そのため、クラスタの単位は一定の分割数を超えないように調整されるようだ。
あと、SASIは2台までが接続できるといわれていたが、これは実は間違い。実際には8台までがつながる。
ただ、BIOSの力は借りれない。自分でドライバなりを書く必要がある。


※2
IDEはソフト屋が設計した物であるらしい。GNDの配置等が美しくないそうだ。
その対極に位置するのがSCSIだ。いかにもハード屋の設計らしく、信号線は山ほどのGNDに守られている。
反面、コマンドの難しさや煩わしさは、いかにもハード屋が設計したものらしい。


※3
Intel系のCPU等のメモリ・I/O分類型アーキテクチャ(コンピュータ関係では、その創世の歴史により、
建築用語が多用されている)
に限った場合である。
I/O空間とメモリ空間を分ける方式のCPUは、外部に対して、現在のアクセスがメモリかI/Oを区別するため
の信号線を持っている。
外部のアドレスデコーダはこれらの信号を元に、目的のメモリチップやロジックに、CPUのデータを伝えるのだ。
386DX以降(386SXは内部の機構自体は486にちかい。しかし、外部に出ている信号線は24本のため、
最大で16MBまでである)
では、32本も信号線が出ている。これらの組み合わせから、対応するロジックへ信号
を伝えるための回路は、複雑になってしまう。そこで、24本程度をみて、それより上はまったく関知しない設計に
なっていることが、昔の機械では多かった。つまり、上位8ビットがどうであれ、同じ場所につながってしまうのだ。
そのため、メモリの容量に制限があったりするのだ。
なお、別の構成では、メモリマップドI/O方式がある。
主にモトローラの68000などで使われている方法である。
98でもSMITなどで一部使われている方式で、要するにメモリ空間の一部にI/Oを配置してしまうというものだ。
この場合、キャッシュなどに気をつける必要がある。


※4
ハイインピーダンスモードとは、よーするに高抵抗で信号が入ったり出ていったりしない状態である。
通常、コンピュータのバスはスリーステート(3状態)である。
信号が入るモード、信号が出ていくモード、入出力なしのモードである。(入出力・なし・保持の3つだったかも)
これらのモードが必要なわけは、かってに信号が伝わらないようにするためと、ファンイン・アウトを防ぐためである。
ファンイン・アウトとは、引き込み最大電流と吐き出し最大電流である。1・0はそれぞれ5Vと0Vである。
(最近は2.9とか3.3Vとかが多いが、一般的なTTLレベルでは5Vなので、ここでは5Vととして説明する)
つまり、信号が1のときは、それを出力しているチップは、5Vになるようにその線に向かって、チップにつながれている
電源から電流を供給して5Vにしているのだ。逆に0のときは、その線から、チップにつながれているGNDに電流を
引き込んで、0Vにしているのだ。
これらがぶつかってしまうと、どういう事になるかご想像がつくであろう。たとえば、1と0がぶつかると、
一方は5Vにしようとせっせと電流を供給し、もう一方は0Vにしようとその電流を引き込んで行く。
結果として、それらのチップは破壊される。という事になる。
もっとも、最近ではCMOSなので電源の容量よりも、微少な静電容量の問題でドライブできなくなってしまうという問題
が原因だとか。


※5
キャッシュに書かれている内容をメモリに書きだしたり、消去したりする動作。
ライトバック方式(モトローラではコピーバック)のメモリでは、キャッシュにダーティデータ(メインメモリと
内容が違うデータ)
が含まれることになるので、メモリに書き出さなくてはならない。
ちなみに、Intel系では、WBINVD命令がそれに相当するが、この命令は最低でも、2000クロック
を消費する、486・Pentiumの命令の中でも最強(最凶?)の命令である。(FSIN・FCOS・や
FPATANなどの実数算術命令よりもかかっているのだ)

まあ、DMAによって書き換えられてしまったデータがキャッシュに溜まっているデータと間違われないように
するために行われているのだ。
と、一般的には説明されているが、高機能なCPUでは、「バススヌーピングユニット」が搭載されている。
このユニットは、バスマスタ(バスを占有するもの。つまりバスリクエストを行う物だ)の動作を監視して、
それらがキャッシュに含まれるデータを書き換えようとするとき、CPU内部のデータを自動的に更新する。
このユニットが搭載されている時は、いちいちキャッシュをフラッシュする必要はない。
486も積んでるような話を聞いていたんだが、実際に聞かないところをみるとないのか?


※6
実際には、より大容量のためのコマンドなども用意されているだろうし、一概には言えないのだが、結論として
より高性能なDMAチップであるといえよう。




第2回・続HDDを増設・換装する


前回の説明の残りである。 SCSI(※1)とは、SmallComputerSystemInterfaceの略である。
まあ、パソコンレベルのコンピューターのために設計されたものなのだが、現在ではスパコンにもついているくらい
であるから、一般的ななんでもつながるバスである。
そのため、SCSIは非常に複雑な操作を行う必要があり、それらのチップがコストを押し上げていると言う話である。
また、それぞれの機器にID(※2)番号を割り振り、データの転送先を区別している。
現在SCSIには、以下の規格がある。

・SCSI  今では区別するためにSCSI1などと呼ばれる。
・SCSI2 (クロックを倍にしたFASTSCSI・データ線を倍にした(16Bit転送)WIDESCSI)
・SCSI3 現在ではUltraSCSIに名称が変わった。さらに線が倍になったUltraWideSCSIがある
この後にも存在するが、基本的に2倍ずつ性能が上がっているような物だ。
(クロックが倍になったり、線が倍になったりしているから)
なお、SCSIは上位互換制がある。物理的につなぐ事が出来れば、それらはたいして違いが無いのだ。
しかしながら、間に遅い物(SCSI3にSCSI2をまぜたり)が入っていると、その機器の誤動作を防ぐため、
最初のネゴシエーションのときに全体の速度をそれに合わせてしまう事がある。
パフォーマンスを保ちたいのなら、混ぜるのはよしたほうがよい。
なお、SCSI機器の最後には、ターミネーター(※3)をつけないと誤動作する事がしばしばあるので、注意する事。
(SCSI機器についている、オートターミネーターは当てにならない事があるのだ)
なお、初期のSCSI機器(※4)は相性が激しいので注意されたし。

さて、いよいよ98につける段階なのだが、どれがいいか?
結論から言ってしまうと 「SCSI」 である。
なせかって? それは、98に搭載されているIDEインターフェース(XMATE以降を標準としている)は、
IDEインターフェースもどき(※5)なのだ。
なんとPIOモード1または2までしかサポートしていない。(V166などの3桁型番の頃からのマシンでは若干改善さ
れているが、所詮PIOモード3までである。)

HDDの性能を出し切れていないのだ。さらに、こんな昔のマシンでしか使わないようなモードは、最近のHDDは削られ
ている事が多いにありうる。高い買い物なので、そこまで冒険する必要があるだろうか?
また、今後の連載で紹介するMMX化のときにも問題があるので、ここは素直にSCSIを選んでもらいたい。


のだが、もったいないという気持ちは分かる。
それに安いし。(※理由は前回を参照)
そこでEIDEをつけてみる事にする。

注意点としては以下の通りだ。
・PIOモード1・2に対応しているものを選ぶ。
・4.3Gを超えない事。
2番目の理由については、HDDBIOSの制限である。要はそんな大容量を見越して作っていない事が原因なのだ。
この制限は、後々改良されてなくなってきているが、NX直前のマシン辺り以外はあまり冒険しないほうがよいだろう。

今までに私が確認したドライブは・・・
CONNER CFS1275A
WesternDigital WDCAC21200
WesternDigital WDCAC32500
だ。
もちろんこれはほんの一部だ。(ちなみにCFS1275Aはあっという間に壊れるかもしれない)

これだけそろったらGO!か?
いやまだである。ケーブルと内部増設用の接続金具の問題が残っているのだ。
(IDEはソフト屋さんが設計したので、電気的仕様はぼろぼろである。よって、ケーブル長が短い。内部増設ONLY
と考えたほうがよい。ので、ここでは内蔵
(※11)するとして話を進める)
ケーブルに関しては、そこらへんの舶来ショップで買ってきた物がそのまま使えるであろう。
あとあとIDE98を使用したMMX化のためにやや長めをお勧めする。(これについては連載でそのうちに)
問題は接続金具だ。
こればかりは、
・自分で作る
・補修部品扱いで取り寄せる
・サードパーティの接続金具を購入する
・ありあわせで何とかする
しかない。
それぞれ一長一短がある。
自分で作るには、金属加工に慣れてなければならない。自分のうちにボール盤(※6)ぐらいは用意しておくべきだろう。
補修部品扱いでは、センターによっては取り次いでくれない(※7)し、近くにない人は困る。
サードパーティの接続金具はいまさら(※8)だ。
で、結局ありあわせで何とかする事にした。
我がマシンのHDD接続マウンタは、

紙とガムテープ

から作られている。いや、マジで。
紙布テープ
これが絶縁シート
これを3つ折りぐらいにして使用する
これがHDD固定接続具
HDDはしっかりと固定しよう
湿気の問題はあるかもしれないが、特に問題は起きてないし、ガムテープ(※9)でしっかり固定してあるから、
動かないしね。
問題は熱だが、発熱の少ないドライブを選べばよい。あっても200度(※12)とかいくわけじゃないし、特に気に
しない事にする。
そう、最初からあるHDDの上に紙を2・3重に引いて、上にドライブを載せ、固定するだけ。
完璧(※13)だ。
現物
これが現物
なんてエレガントなんだ
もっとも、真似して壊しても本人の責任(※10)であるから気をつけるように。
なお、このままの構成でもう1年以上使っているが問題ない事を付け加えておく。

さて、あとはケーブルと電源の接続だ。
電源ケーブルについては、先が2またになっている分岐ケーブルを使用すればよい。
もっとも、HDDを増設できる機種なら、最初から分岐ケーブルは搭載されているはずだ。
IDEケーブルに関しては、残念ながら、マニュアルに載っているようなケーブルはまず売っていない。
仕方が無いので、マザーボードから抜いて、そこに一般的な舶来ケーブルをさしてしまおう。
そして、それぞれのドライブに接続すればよい。

これでOKか?・・・いやまだである。説明した通り、IDEドライブにはマスター(主人)とスレーブ(従者・悪く言うと奴隷)
の関係がある。この設定は、HDDにあるジャンパピンを操作して切り替えるのだが、それぞれのドライブの設定は、
異なる上、親切にもドライブ上のシールやシルク印刷(基板の白い印刷)で解説してくれているものや、入っている袋に
かいてある物など、結構異なるので注意。
これを設定すれば、もうほとんどできたも同然だ。(最初からついている方はマスターにする事。最初からなってるはずだが。
スレーブにしかHDDをつなげていなかったりすると、動作がおかしい事がある。これらはBIOSの手抜きが原因)

それでは電源を入れてみよう。
見事立ち上がったならば、喜びをかみしめて95まで進もう。
立ち上がらなかったならば、すぐさま電源を切り、接続を確認しよう。

さて、新しいドライブにアクセスできただろうか?
・・・多分出来なかったと思う。(新品ならね)
それはこのドライブが初期化されていないからだ。

さて初期化する方法とは? 続く!



※1
SCSIは「スカジー」と読む事が決まっているのだが、SASIに限っては読み方が決まっていないのだ。
そこで、思い思いに「さしー」だの「さじー」だの読んでいる。別に濁らなくても、「すかしー」のようにまぬけではない。
SASIは元はといえば、シュガート社のHDDインターフェースである。ST−506だっけか?有名なHDDに
使われているインターフェースであった。
だいたい、Shugart Associates System Interfaceの略なんだから。


※2
SCSIでは、ターゲットと、イニシエータという関係で機器は結ばれる。
一般的な場合、ターゲットはHDDなどで、イニシエータは命令を発行するSCSIカードである。
別にどれがイニシエータになってもよいのだが、それを実現する機器は今のところ無いようだ。
これが実現できれば、本体を会さずに、HDD間でデータの転送などが行えるようになるのだが。
ちなみに、IDは通常では3ビット規定されているので、8つまでもてる。
上記の説明でわかるように、SCSIカード自体もIDが必要になるので、外部接続は最大で7つまでである。
SCSIカード自体のIDでHDDを内蔵してもよさそうな物だが、そのような物は今のところ無いようだ。
WIDEになると、信号線が大量に増えているので、一度に転送できるのが8ビットから16ビットになり、
さらに、IDも1本追加されて16までになっている。
しかしながら、タイミングがかなりシビアになっているので、ケーブルの長さが問題になり、あまり長く出来ないのが問題点だ。


※3
ターミネーターとは、未来から来たサイバーダインではなく、終端抵抗の事。
信号が末端で跳ね返ってこないようにするためにつける。SCSI2以降ではアクティブターミネーターと
呼ばれる、電圧調整ICがついたものを使用するのがベターである。
ちなみに、50MHzクラスで、直角に線を引くと、向こう側に伝わらずにそのまま帰ってくるようになってしまう。
なるべくカーブを描いて線を引きまわさなければならないのだ。最近のマザーボードは66MHzをかるく超えるの
だが、いったいどうやって設計しているんだか。
ちなみに、手配線で制作した回路の場合、根性入れて30MHzくらいが限界。根性入れても66MHzは動かない。


※4
SCSI機器はハード屋さんの設計のため、電気的特性はともかく、ソフト的な互換性があまり考えられて
いなかった。そのため初期では、規格で決められていないところはそれぞれが独自で作ってしまったため、
かなり問題があるのだ。もっとも98ユーザーはあまり気にする必要が無い。NECがデファクトスタンダード
(決まっているわけではないが、事実上の標準の事)だからだ。良くも悪くも55ボードさまさまというべきか。
(55ボード。悪名高きNECのSCSIインターフェースボード。接続されたSCSI機器に対して、ベンダ
(メーカーの事)名の取得などこのコマンドを発行して、帰ってくる文字列の先頭3文字が、NECであるかどうか
で、SCSI機器を認識・無視していたボードである。気持ちは分からなくも無いが、非常に迷惑な物である。
しかしながらこのボードの最後の時期では、55チェッカを無効にするための機能を搭載した物が多くなった。
SONYでは、スイッチを切り変えると、NECYになったりするのだ。「NEC」ではないから、著作的な問題はな
いし、3文字のみのチェックなので、これでノープロブレムといったところか)

最近では、アダプテック(Adaptec。似たようなメーカーにAbaptekという物もある。通称アバ)が標準になっている。
(もっともあちらさんの世界では元からこちらが標準なのだが)
アダプテックが、これらのソフト上の互換性を高めようとASPIという規格を作って、それぞれのソフトはこの
ASPIを経由してSCSI機器にアクセスするように定めた。各メーカーがASPIドライバを作れば、
ソフトの製作者はいちいち個別の機器に対応させなくてもよくなるのだ。
ちなみにダウンロードの部屋にあるCDDARDもASPIを使用している。


※5
本物のIDEインターフェースよりも優れている点は、割り込みを1個しか使わないという事だ。
向こうは、プライマリー・セカンダリーで1つずつ消費する。
ちなみに、なぜ割り込みは16種類しかないのだろうか?
まず割り込みの基本から説明すると、CPUにつながる割り込みは、大きく分けて
NMI ・ INT
の2種類しかないのだ。
NMI(None Maskable Interrupt・ノンマスカブルインタラプト=マスクできない割り込み
つまり、禁止できない割り込みの事。もっとも禁止できないといっても、CPUの回路だけでは出来ないという意味だが)

は、通常、電源電圧の異常や、パリティエラーなどが発生したときに、外部の監視ロジックが異常を検出、CPUに
NMI割り込みを要求する。CPUはこれを受けて画面に何やらメッセージを表示したりするのだ。
ちなみに、ソフトウェア電源スイッチ搭載機種ではNMI割り込みで電源の制御を行っているそうだ。
INT(Interrupt・インタラプト=割り込みの事)は、通常の割り込みである。
ここでは、内部のプログラムが発生する内部割込みはほっておいて、外部からの割り込みに絞って説明する。
通常割り込みを要求したい回路(タイマやFM音源等)は、割込み要求を行う。
このとき、PIC(Programmable Interrupt Controler・プログラマブルインタラプトコントローラー)
は、現在処理中の割り込みがあるなら、現在の割り込みとの優先順位を比較して、割り込ませるかどうかを判断、
処理中でなかったり、より優先順位の高い割り込みのときには、CPUに対して割込み要求を行う。
CPUは、割込み要求(インタラプトリクエスト)に対して、割り込み受付可能信号を出して、PICからどの割り込みが
発生したのか番号を受け取る。その番号に応じて、割り込み処理ルーチンにジャンプし、割り込み処理ルーチンの最後
で、EOI(End Of Interrupt:エンドオブインタラプト)を発行して、PICに現在の割り込みが終了したことを知らせる。
これが一連の作業である。このことからわかるように、要は割り込みの数の制御などは、PICが行っているのだ。
PICに使われているチップ自体は、カスタム化されて巨大なASIC(えーしっく。専用チップの事。つまり、それ専用に
設計されたチップ)
の中に収められているものの、互換性という点から、一番最初のマシンと同じ構成なのだ。
最初に採用されたPICは8種類の割り込みを制御できる。この0から7のうち、7に次のPICの割込み要求をつないで、
カスケード接続(滝みたいにつなぐ事の意味。ちなみにSCSIで言うデイジーチェーンは、ひなぎくの冠の事。
ひなぎくの花で作った冠みたいにつながっているからだそうだが、外人の想像力って・・・)
しているのだ。
それで、もう全部埋めちゃったから、さらにカスケードするわけにも行かないし、結局この15種類のままなのだ。
まあ、結局割込み要求したチップが判別できるような回路にすれば言い訳で、こんなの根性入れればどうとでも
なると思うのだが。(PCIのシェアリングについては後述)
余談であるが、INTとIRQの違いをご存知だろうか?
ここまで読んできたなら説明は至極簡単なのだ。
IRQとは、PICにつながっている割込み要求の事をさしているのだ。
つまり、IRQは0から15まで。これ以上の番号の場合は、意図的に名前を変えてつけたりしているのだろう。
98では、INTには2種類ある。片方のINTは単純に、増設などで使用できる割り込みを抽出して番号を与えていったような
もので、番号を整理しているだけであろう。そして、もう片方のINTは、割り込み処理の番号をさすような物だ。
80x86系のチップはINT0から255までの256種類の割り込み処理を持てる。(68000は16種類)
割り込みとは言っても、ただ単に、共通部分(割り込みベクタ)に値を書いておいて、Int XX番で呼んでね!
というルールを決めておけば、割り込みベクタを変更するだけで、すべてのプログラムが別の処理に飛べるといった
処理に使われているのが大半である。
マウスはINT33を使うとしておけば、プログラムではINT33を呼んでおけば、実際のマウスドライバが、
どこに配置されていようとも、INT33のベクタにマウスドライバが自分の位置をセットしておけば、事足りるのだ。
結局IRQも割り込み処理ルーチンを呼び出すので、どこかのINTを使う事になる。
つまりINT>IRQなわけだ。

PCIには、1つのバスに4種類の割り込みが存在する。INT A/B/C/Dである。PCIバスは通常4つまでと電気的に
決められているので(バスのドライブ能力のためである。詳しくはファンイン・アウトの説明を読まれたし)
どのバスがどのINTで割込み要求をしてきたかを区別する事により、それぞれのバスでシェアリングが出来る。
(ここでいう種類とは数のこと。決してZ80のようにモード2割り込みなどと割り込みモードの種類のことではない)
INTのルーティングを行っているためであるが、早い話が、同じ割り込み番号を割り当てられていたとしても、
どのバスが要求してきたかで、区別する事が出来るのだ。


※6
穴あけき。
金属加工は複雑なので、このほかにも専用の工具をそろえる事をお勧めする。
前に、さんまのからくりTVでやっていたのだが、アパートで、夜の11時になると上の階からのこぎりで何かを切る音が聞こえて
きて、非常に気になるというのがあった。しかも毎晩。
おれも気になるよ(笑)。そんなの。


※7
正確に言うと、にーちゃんによってはだ。(ねーちゃんかも)


※8
98用は数が少ない上に、値段も高い。
それに今となってはもう入手困難・・・
いやな時代になった物だ。もっとも、そのまえに簡単にHDDを増設できるようにしてくれたことを感謝すべきなのだろうか?


※9
ここでは、「風邪を引いた」ガムテープを使用した。
長い間に粘着力が弱まって、はったりはがしたりしても、べとべとしない程度に弱まったもの。
製図のときに使うドラフティングテープのような物だ。
まあ、ガムテープと入っているが、実は布テープだが。
ほかには、ビニールテープにも似たような物があって、商品名プラスチックテープがいいらしい。
東急ハンズあたりで買えるそうだ。


※10
真似する奴はあまりいないと思うが(笑)

※11
よく、「内蔵」は「内臓」と間違われる。生体デバイスで使用しているHDDならば合っているのだが、一般のユーザーで
そんな奴はいないだろう。
後々間違えると恥ずかしい思いをするので、間違っていた方はきちんと覚えておいたほうがよいだろう。


※12
紙の発火温度は400度以上であるので、まず燃える事はない。ガムテープの粘着がこげるほうが大問題である。
ちなみにガソリンの発火温度は600度である。たばこの火で発火する温度なのだが、ガソリンは揮発しているので、
熱を奪われ、たばこの火で発火する事はまずありえないそうだ。(発火しないと言っているわけではない。火気厳禁である)


※13
パーフェクトってやつですか。




第3回・続続HDDを増設・換装する


前回増設したHDDにたいして、アクセスできなかった原因は、このHDDは初期化していないためだ。
初期化とはなんぞやというと、HDDにアクセスするための情報(※1)を書き込む動作の事である。
具体的にその方法を説明すると、DOS5などのバージョンでは、FORMATコマンドが担当している。
よって、FORMATコマンドを起動して、あとは初期化を選択し、区画を切ればOKだ。
しかしながら、WIN95辺りでは、これらの構造が若干変化している(まあ、向こうに合わせたためであるが、これは改悪ではなかろうか)
そこで、初期化の流れを説明しよう。

まず、最初にDISKINITを起動して、HDDの全セクタの初期化などを行う。
このコマンドにより、余計なデータなどが削除され、初期化準備が整う。
もっとも、HDDによっては、この動作は必要無い場合が多い。
HDDが壊れたときなどは、これからやら無ければ駄目な場合も多いようだ。

次に、FDISKを起動して、HDDにFAT構造や、ディレクトリエントリを書き込む作業を行う。
この時、ディスクを分割する事が出来る。また、OSR(OEMServiceRelease)2以降のFDISK
では、FAT32にするための選択肢が、起動時に追加されている。
ディスクは複数に分割できるのだが、その数には制限があったり、エントリ用に余計なエリアが必要だったりするので、
過剰に分割するのはお勧めできない。
しかしながら、FAT16では、その制限により2GBまでのディスクサイズしか確保できない(※2)ので、
それ以上のディスクを利用するときには、必然的に分割する事になる。

FDISKが終わったら、いったん再起動してから、FORMATコマンドを実行する。
このコマンドが終了すれば、その場ですぐにアクセスできるようになる。はずだ。最近セットアップしていないので
正しいのか、若干不安が残るが。

さーてとHDDを増設すると、問題が発生する場合がある。それはHDDを3台以上つなげている場合だ。
大きなファイルをコピーしたりして、マシンがフリーズしてしまうような事があれば、ばっちりこの問題に引っかかっている。
とはいっても、95に特有の問題であるから心配御無用。詳しくはWindowsディレクトリ内にあるドキュメントに
かかれている手法通りにドライバを更新すればOKだ。

まあ、HDDの増設はこのくらいかな。

なお、HDDを今までのHDD交換して使用する場合には若干の注意が必要だ。
「固定ディスク起動メニュー」が起動しない場合は、起動用のブートセクタのプログラムが無い場合がある。
その時は、
FDISK /MBR
で、起動用のプログラム(メニュー含む)が書き込まれる。
そして、そのドライブに95をインストールする場合、OEM用のインストーラの場合、
「既にOSがインストールされている云々」のメッセージが出る事がある。
このメッセージが出る場合、他のドライブにDOSなどが入っていても出るときがあるので、それらのドライブを、
物理的に切り離すか、スリープモード(FDISKで設定)にしてしまって、アクセスできないようにしておけばよい。


さて、次回は非MMXマシンをMMX化する方法について説明する。


※1
初期化とは単に言うが、結構HDDはフロッピーと違ってブラックボックスである。
フロッピーのときは結構好き勝手にフォーマットして特殊プロテクトなどをかける事が出来た。
しかし、こんなことHDDで出来るわけはない。(倫理的にも物理的にも)
まあ、どこぞのソフト(Cx486DLCのキャッシュ制御のソフトとだけ、言っておこう)では、ディスクの未使用
領域にデータを書き込んで、正しい使い方以外を禁止した物なども存在したが。
本題に戻ると、通常ディスクは、ブートセクタ・FAT・ディレクトリエントリ・FAT予備・データの、構造になっている。

ブートセクタ(なぜ、ブート(靴の事である。ブーツはブートの複数形)なのかというと、システムをたちあげる、つまり
靴を履いてからということらしい。起動プログラムの事をブートストラップというのは、ブーツを履くときに引っ張るひも
のことを指しているのだ)
は、システムをたちあげるのに必要なプログラムが書かれている部分である。
この場所はディスクの先頭であると決まっている事が多い。(ブートROMには、ディスクの先頭を読み込んでそこに制御
を移す構造になっているからである)

FATは、File Allocation Table=ファイルアロケーションテーブルで、ディスクのどこにファイルが
格納されているのか管理している部分である。ここのエントリのサイズが、12Bit・16Bit・32Bitである
かで、FAT16などと呼ばれる。これが多ければ多いほど、ディスクを細切れにして管理する事が出来る。
もっとも、このFATにもサイズがある(一番大きいFAT32でも1MB程度である)ので、その数だけ必ずしも分割
出来るというわけではない。分割しきれない場合は、数セクタまとめて管理(クラスタ)する事になる。
このFATはチェーン構造になっている。また、不良部分にはアクセスしないように、特殊マーク(FAT16とかでは、
16Bitの最後の方の数を使用する)
をつけて、管理したりもする。
ディレクトリエントリは、ファイルの名前や時刻・サイズ・属性・FATエントリの最初のアドレス等を管理している。
この部分の予備エリアなどにパラメータを割り当てる事によって、いくらか拡張したり出来るが、ロングファイルネームの
場合ここだけでは足りない。ので、ボリュームファイル属性をつけて(簡単には見えないようにした)、名前だけを保持する
エントリを用意して拡張している。そのため、DOSなどのファイラーでみると、すごい事になっているのだ。
まあ、というわけで、これらの構造を書き込んで使用できるようにするのが、初期化である。


※2
もちろん、クラスタのサイズを大きくすればどんなサイズでも管理できない事はない。
が、たとえ1バイトのファイルでも1MBもディスクを使用するといった事になったら、目も当てられない。
よーするに、クラスタが大きくなると、この単位で管理が行われるため、この管理単位に満たない部分は統べて未使用という
ことになり、ディスクの有効なエリアは減少してしまう。
そのため、ある一定より大きくなるようだとパーティションを区切れという事にしたのだろう。
あと、過剰に分割してしまった場合、一度にアクティブにできるパーティションに制限があったりする。
これも手抜きが原因であろう。


トップへ