« 2009年10月 | トップページ | 2009年12月 »

2009年11月29日 (日)

Skewb Diamond (スキューブ ダイアモンド)

eBay.com で購入した スキューブ ダイアモンド という正8面体のルービックキューブに似た立体型パズルが送られてきた。

Skewb_diamond

回転軸は、写真の右側のように頂点の対角線からみると斜めになっている。頂点の対角線と垂直になる小さなピラミッドのみで回転は しない構造になっている。
スキューブ ダイアモンドを購入した理由は、送料込みで1個15ドル(USD)と安かったことと、正多面体のパズルで正4面体のピラミンクス、正6面体の 2x2x2 Cube、正12面体のメガミンクスと、持っていたので、正8面体のスキューブ ダイアモンドを正多面体シリーズで揃えたかったからである。

Polyhedron

写真は左から、ピラミンクス(Pyraminx)、2x2x2 Cube、スキューブ ダイアモンド(Skewb Diamond)、メガミンクス(Megaminx)となっている。
購入時期は未定だが、正多面体シリーズで次に購入するのは、必然的に正20面体の ドジック(Dogic) ということになる(笑)。

| | コメント (0) | トラックバック (0)

2009年11月 7日 (土)

FDD(Linux)

自宅の 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 の回転数変更方法。

以上

| | コメント (0) | トラックバック (0)

« 2009年10月 | トップページ | 2009年12月 »