自宅の DELL Dimension XPS T550 に FDD (フロッピーディスクドライブ)を接続して、MS-DOS のフロッピーディスクの読み書きを試みた結果をメモとして以下に示す。
【環境】
本体:DELL Dimension XPS T550 (CD-ROMドライブ付き)
CPU:Pentium 3 (550MHz)
メモリ:384MB
FDCチップ:SMSC FDC37M707 (マザーボードを直接見た)
FDD(1台目):3.5型 玄人志向 (FDD-YE) → Y-E DATA (YD-702)
FDD(2台目):5.25型 TEAC (FD-55GFR)
→FDD は1台しか接続できない本体である。(BIOSで切り替える)
FDDケーブル:サンワサプライ FDD用フラットケーブル (KB-FL341K)
→ 3.5型のコネクタは180度逆向きにも挿せるので注意が必要である。
OS:Vine Linux 3.2 (Kernel 2.4.33)
追加ソフト:「fdutils」「chgfdmode」
【Vine Linux 3.2 のインストール】
以下の URL から iso イメージをダウンロードして、CDを作成する。
http://www.vinelinux.org/getvine.html#Download
インストール後、以下のコマンドで、パッケージをアップデートする。
# apt-get update
# apt-get upgrade
→ 100個程度アップデートされる。
【fdutils のインストール】
「fdutils」の make のために、lex が必要なので、lex 互換の flex をインストールする。
# apt-get install flex
以下の URL から「fdutils-5.5.tar.gz」をダウンロードする。
http://fdutils.linux.lu/download.html
解凍は、解凍先のディレクトリに cd した後に、以下のように行なう。
# tar zxvf fdutils-5.5.tar.gz
「fdutils」のインストールは、以下の手順で行なう。
(INSTALL ファイルに手順が書いてある)。
# cd fdutils-5.5
# ./configure
# make
# make install
# cd /dev
# MAKEFLOPPIES
【chgfdmode のインストール】
以下の URL から「chgfdmode.tar.gz」をダウンロードする。
http://www.bio-linux.org/~kasukawa/linux/3mode.html
→インストール方法や操作手順の記述あり。
★ FDC37M707 用に「chgmotor.c」の biblo_nu623() を以下のように全面変更する。
┌──────────
│int biblo_nu623(int drive, int rpm)
│{
│ /* int i; */
│ /* */
│ /* iopl(3); */
│ /* outb(0x15, 0xfd64); */
│ /* i = inb(0xfd65); */
│ /* if (rpm == 360) i |= 0x80; */
│ /* if (rpm == 300) i &= 0x7f; */
│ /* outb(i, 0xfd65); */
│ /* iopl(0); */
│ /* return (i & 0x80)? 360 : 300; */
│
│ int i;
│
│ /* for SMsC FDC37M707 */
│
│ iopl(3);
│
│ outb(0x55, 0x370); /* configuration mode */
│ outb(0x07, 0x370); /* logical device# register */
│ outb(drive, 0x371); /* logical device number */
│ outb(0xf1, 0x370); /* CRF1 */
│
│ i = inb(0x371);
│ if (rpm == 360) {
│ i |= 0x0c; /* DENSEL low */
│ } else { /* rpm == 300 */
│ i &= 0xf3; /* DENSEL high */
│ }
│ outb(i, 0x371);
│ outb(0xaa, 0x370); /* exit configuration mode */
│
│ iopl(0);
│
│ return (rpm == 360 ? 360 : 300);
│}
└──────────
→「http://www.bio-linux.org/~kasukawa/linux/3mode-patch-detail.html」には、ポート番号がプライマリの0x3f0 と 0x3f1 になっているが、セカンダリの 0x370 と 0x371 のポートでアクセスする必要があった。
→以下の URL の PDF にポート番号についての記述(13ページ目)がある。
http://www.smsc.com/media/Downloads_Public/Data_Sheets/37m707.pdf
fdd1232 というコマンド内で、上記の chgmotor と fdutils の floppycontrol を使用している。
【使用例】
・3.5インチ 1.25MB フォーマット
# fdd1232 -m on
# superformat /dev/fd0 hd sect=8 cyl=77 ssize=1024
# fdd1232 -m off
→上記の方法でフォーマットできたかのように思えたが、NEC 1.25MB 形式としてフォーマットされていない(3.5型 NEC 1.25MB をアクセスできるマシンでダメだった)。
→「fdformat /dev/fd0h1232」ではフォーマット不可だった。
・3.5インチ 1.21MB フォーマット
# superformat /dev/fd0 hd sect=15 cyl=80 ssize=512
以下でも可能だった。
# fdformat /dev/fd0h1200
# mformat a:
→ superformat 内で mformat をパラメタ付きで行なう仕様である。
・3.5インチ 1.44MB フォーマット
# superformat /dev/fd0 hd sect=18 cyl=80 ssize=512
以下でも可能だった。
# fdformat /dev/fd0h1440
# mformat a:
→ fdutils をインストールした時点で、「/dev/fd0H1440」等の「fd0H*」が削除されていた。
・5.25インチ 1.25MB フォーマット
# fdd1232 on
# superformat /dev/fd0 hd sect=8 cyl=77 ssize=1024
# fdd1232 off
→ 3.5インチ 1.25MB フォーマットの場合と同様に、NEC 1.25MB ではフォーマットされていないようである(確認できる環境がない状況だが、『minfo a:』の表示情報が NEC 1.25MB とは異なっていたので、NECフォーマットされていないと判断した)。
→「fdformat /dev/fd0h1232」ではフォーマット不可だった。
・5.25インチ 1.21MB フォーマット
# superformat /dev/fd0 hd sect=15 cyl=80 ssize=512
以下でも可能だった。
# fdformat /dev/fd0h1200
# mformat a:
・「/usr/local/etc/driveprm」
superformat でドライブの許容量チェックを省略するには、「/usr/local/etc/driveprm」に以下の記述を1行書くこと(deviation=1280 という数字は superformat で表示された数値を記入のこと)。
drive0: deviation=1280
→FDDを差し替えたときは、上記の1行を削除すること。
→上記の1行がなくても、毎回ドライブの許容量をチェックするだけで、動作上の問題はない。
・ファイル一覧
# mdir a:
→ 3.5インチ 1.25MB フロッピーは、事前に
「fdd1232 -m on」すること。
→ 5.25インチ 1.25MB フロッピーは、事前に
「fdd1232 on」すること。
(以下も同様である)。
・ディレクトリ移動
# mcd a:/hoge/hoge
・コピー(フロッピーディスク→HDD)
# mcopy -s a:/\* .
→「mcopy -s a:/ .」でも可能。
・コピー(HDD→フロッピーディスク)
# mcopy -s * a:/.
・mtools 一覧表示
# mtools
・mtools バージョン
# mtools --version
・イメージコピー(フロッピーディスク→HDD)
# dd if=/dev/fd0 of=hoge.hdm bs=1024 conv=sync ; sync
・イメージコピー(HDD→フロッピーディスク)
# dd if=hoge.hdm of=/dev/fd0 bs=1024 conv=sync ; sync
【参考文献】
http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AD%E3%83%83%E3%83%94%E3%83%BC%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF
→フロッピーディスク(Wikipedia)の解説。
http://www.geocities.jp/development_room/5inch.htm
→最適な、5インチ フロッピードライブについて。
http://ishikw.at.infoseek.co.jp/pcsv/unixset.html
→ superformat コマンドの使用例。
http://www.bio-linux.org/~kasukawa/linux/3mode-patch-detail.html
→ 各FDCでの 3.5inch FDD の回転数変更方法。
以上
最近のコメント