2014年8月10日日曜日

CZ-141SF メモリー増設

ジャンク品の X1 に差さっていたバンクメモリーボードの CZ-141SF に 4 x 64kbit の DRAM が載る空きエリアがありました。
たまたま手持ちのジャンク基板に 4 x 64kbit DRAM が載っているものがあったので、ジャンク基板から DRAM を 4個抜き取って CZ-141SF に取り付けてみました。元々付いている DRAM 2個 (64kbyte)と合わせて、192kbyte になります。当時 Z80 のシステムで RAM が 192kbyte もあったら、超大容量ですね(笑)
DIP スイッチ用のパターンが有りますが DRAM を追加しても変更の必要はありません。だた DRAM を半田付けするだけで、使えるメモリーが増えます。

LSX-Dodgers で RAM ディスクとしてフォーマットしてみると、空き容量 187kbyte のRAM ディスクとして使えました。
EMM じゃなくバンクメモリなので、増設メモリ上のコードを直接実行することもできるんだけど、何かよい使い道あるかな?

2014年8月9日土曜日

バイクの整備

バイクのフロントスプロケットがだいぶ摩耗していたので、交換しました。
スナップリングで止まっているだけなので、簡単に交換出来ます。
新旧スプロケット。
外周の歯も摩耗しているのですが、中心のスプラインもかなりガタが出ていました。

スプロケットは monotaro で 2,300円くらいで買いました。
ついでにリアタイヤも交換。
10年ぶりくらいでタイヤを交換したんだけど、タイヤが硬くて大変でした。
タイヤが古いから硬くなっているのかな?と思ったんですが、組む時も同じくらい固かったです。
タイヤも monotaro で購入。6,000円くらいでした。
ブロックタイヤは減るのが早いから、オンロード用のタイヤにしようかとも思ったんですが、土の上を楽しく走れなきゃ嫌だなと、やっぱりオフロードタイヤにしました。
フロントブレーキをオーバーボールして、ブレーキパッドも交換しました。
リヤブレーキは 6月にチェーンを交換した時にオーバーホールしました。
残り 1mm 弱くらい

2014年8月8日金曜日

フロッピーディスクドライブの信号波形

2HD の WRITE DATA 信号

パルスの間隔が、短いところで 2us になっています。
2HD の 転送速度は 500kbps で クロックを入れると 1,000kbps になります。
1,000kbps だと 1ビットあたり 1us になり、2HD で使用されている MFM 方式だと "1" が連続することはないので、パルスの間隔は最短の場合で 2us になります。
ビット列の並びは
  • 2us なら "101"
  • 3us なら "1001"
  • 4us なら "10001"
となります。MFM 方式では "0" が 3個以上連続することはありません。(ミッシングクロックの場合でも、"0" が 3個以上連続しないようになっていました)

WRITE DATA 信号の拡大図

パルス幅は、だいたい 300ns くらいでしょうか。
2HD の READ DATA 信号

READ DATA 信号は、ドライブが選択されていてモーターが回転している間、ずっと出力され続けます。
2DD の READ DATA 信号
パルスの間隔が、2HD の時の倍になっています。
パルス幅は 2HD と同じくらいに見えます。
READ DATA と WRITE GATE の関係

書き込み中には READ DATA 信号が出てきません。
INDEX 信号のパルス幅は 2ms ~ 4ms 弱くらいの変動がありました。パルスの立ち下がりを使用する事になっているので、幅はあまり重要でありません。
INDEX 信号の間隔

360RPM なので
60/360*1000 = 166.667ms
と、計算と同じになっています。

フローッピ-ディスクドライブの READ DATA 信号/ WRITE DATA 信号は、RS232Cなどのシリアル通信のように "0" なら "H" 、"1" なら "L" (FDDの信号は負論理) とレベルが変化するものだと勝手に思っていて、FM 方式で記録した場合、データビットに "1" が連続すると、READ DATA 信号がしばらく "L" になったままになって、同期を外さずに読み取るのはすごく難しくないか? というか、自分ではできる気がしないなと思ってたのですが、今回波形を観測してみて、そうでないことがわかりました。

実際には、"0" なら "H" 、 "1" なら "短いパルスを出力" というぐあいで、信号線が "L" になったままにはならない仕組みになっていました。
これなら、パルスの立ち下がりから次の立ち下がりまでの時間を計測することで、データの取り込みができますね。

FM 方式は、データのビット列に対して、単純にクロックビット "1" を挿入するのですが、MFM 方式の場合、通常はクロックビットに "0" を挿入し、データに "0" が連続した時だけクロックビットに "1" を挿入します。
こうすることで、"1" が連続することがなくなり、FM 方式と比べて信号の最大周波数が半分になります。同じ周波数で記録するならデータ量を2倍にできることになります。
古いパソコンで使われていた 2D / 2DD / 2HD は、どれも MFM 方式が使用されていますが、フロッピーディスクコントローラーの設定により FM 方式も使用できます。

今回波形を観測してみて、フロッピーディスクドライブを自分で作れそうな気分になってきました。

2014年8月6日水曜日

自作ECUの動作波形

自作ECUのインジェクタ駆動波形を観測しました。

上が FET の ドレイン - ソース 間電圧 (下図の A点)
下が FET の ゲート - ソース 間電圧

プローブの切り替えスイッチを "x10" にしているので、実際の電圧はオシロスコープで表示される電圧の10倍になります。

ECUを作った頃はアナログのオシロスコープしか持っていなかったので、このような遅い波形を撮影するには一眼レフカメラを三脚に据えて、かなりのスローシャッターで撮影しなきゃならず、面倒でこれまでどんな波形で動いているのかを観察していませんでした。ずっと問題無く動いてもいましたしね。

今回デジタルオシロで波形を観測してみたところ、FET が OFF した時のサージ電圧が高すぎですね。耐圧 75V の FET を使用しているのですが、サージ電圧が 100V くらいあります。一応スナパ回路が付いているのですが、定数を見直したほうが良さそうです。



A点の拡大
B点
もっと、コンデンサの容量を大きくしたらいいのかな?



これはイグナイタの駆動信号。
イグナイタの中がどうなっているのかわからず、純正ECUと同じようにオープンドレインでイグナイタを駆動しているので、立ち上がりが鈍くなっています。
きっとこんなもんでいいのでしょう。
これは ISCVの駆動信号。
きれいなもんです。

2014年8月4日月曜日

19インチラックサイズ機材用の台など作成

余り物の材料を使って、19インチラックサイズの機材に合わせた台を作りました。キャスターを付けて前後に移動できるようにしたので、配線の入れ替えが簡単になって便利です。

いままでカラーボックスの上に積み重ねていたのですが、不安定だし裏側の配線をいじりにくいしで不便でした。
鉄のアングルで、まともなラックを作ってしまえばいいんじゃないかとも思ったのですが、機材をネジ止めしてしまうと入れ替えとか面倒だなと思って、ただの台に機材を積み重ねる形に落ち着きました。
材料を切り出すついでに、キーボードスタンドも作りました。高さ60cmで、椅子に座った時にちょうどよい感じ。
普通の机だと高さが73cmくらいあって、キーボードを置くと高すぎるんですよね。
余ってるロードスターの運転席で、椅子も作りました。見た目は悪いけど座りやすいです。
いままで座椅子にしていたんですが、座椅子だと足の置き場に困って、いまひとつでした。
さらに、ついでで、
台所の流し台横にある隙間に
棚を作りました。

2014年8月3日日曜日

SHARP X1 に 3.5インチFDDを接続する

SHARP X1 に Windows PC 用の 3.5インチFDDを接続して、楽に Windows PC とデータ交換ができるようにしました。
ファイルシステムが MS-DOS 互換の X1 用 OS LSX-Dodgers で、2HD (1.2MB) と 2DD のフロッピーディスクをフォーマットして、正常に読み書きできました。Windows PC で書き込んだディスクを X1 で読んだり、逆に X1 で書き込んだディスクを Windows PC で読んだりもできました。便利になりました。
2HD は turbo じゃなきゃ使えませんが、2DD と 2D (2DD のメディアを 2D フォーマット) なら、turbo じゃない X1 でも使えます。
X1 の EXPANSION FLOPPY DISK コネクタと Windows PC 用の 3.5インチ FDD を接続する、こんなケーブルを作っただけです。
FDD 用のフラットケーブルは PC のマザーボードを買うとついてくる奴。
X1につながる D-SUB 37ピン オス のコネクタは、手持ちが無かったので新品を用意しました。ハウジング付きで 1,000円くらいしました。

ケーブルの配線図。

同じ名前の信号同士を繋ぐだけです。

Windows PC用のFDDはドライブセレクトを1固定で使用するので、FDDのドライブセレクト1をX1のドライブセレクト2か3に接続すれば、ドライブ2とか3で認識されます。
X1の内蔵FDDのドライブ番号を変更して、外付け3.5インチFDDをドライブセレクト0に接続すれば、3.5インチFDDをドライブ0にすることもできます。

外付けFDDの電源は別途供給してください。3.5インチのドライブは、よほど古いドライブでなければ12Vは不要で5Vだけで動作します。5VのACアダプタは100円ショップでも売ってます。

READY 信号の処理

Windows PC 用 3.5インチ FDD の 34ピンには DISK CHANGE 信号が出ていて、X1 に接続するために必要な READY 信号がありません。X1 側コネクタの READY 端子を GND に接続して、常に READY 状態になるような配線で動作させてみると、フォーマット動作は途中まで進むのですが、ベリファイの段階でエラーが出てしまいます。今回、どうしてもこのエラーを回避できなかったので、ジャンパーピンの設定で READY 信号を出力できるドライブを使用しました。

MODE SELECT 信号の処理

Windows PC 用 3モード対応 3.5インチ FDD の 2ピンの MODE SELECT 信号は 2HD のフロッピーディスクを入れた時の回転数を選択する信号で、

  • 1.2MB の 2HD (360RPM) で使うときには Lレバル
  • 1.44MB の 2HD (300RPM) で使うときには Hレベル(無接続)

にします。
当時の国産パソコンの 2HD はみんな 1.2MB でしたし、今回は MODE SELECT を GND に接続して、1.2MB で使うことにしました。

Turbo じゃない X1 の場合 2HD は使えないので、 MODE SELECT を未接続にしておいても良いです。


X1 と Windows PC のフロッピーディスクコネクタのピンアサイン

X1 外付 FDDコネクタ (本体側 D-SUB 37pin メス)
12D 2DD / 2HD20GND
2NC21GND
3DRIVE SELECT 322GND
4INDEX23GND
5DRIVE SELECT 024GND
6DRIVE SELECT 125GND
7DRIVE SELECT 226GND
8MOTOR ON27GND
9DIRECTION28GND
10STEP29GND
11WRITE DATA30GND
12WRITE GATE31GND
13TRACK 0032GND
14WRITE PROTECT33GND
15READ DATA34GND
16SIDE ONE SELECT35GND
17READY36GND
18GND37LOW CURRENT
19MFM

X1 内蔵 FDDコネクタ (ごく普通のピン配置)
1GND22D 2DD / 2HD
3GND4NC
5GND6DRIVE SELECT 3
7GND8INDEX
9GND10DRIVE SELECT 0
11GND12DRIVE SELECT 1
13GND14DRIVE SELECT 2
15GND16MOTOR ON
17GND18DIRECTION
19GND20STEP
21GND22WRITE DATA
23GND24WRITE GATE
25GND26TRACK 00
27GND28WRITE PROTECT
29GND30READ DATA
31GND32SIDE ONE SELECT
33GND34READY

WINDOWS PC 用 FDD のコネクタ
1NC2MODE SELECT
3KEY(ピン無し)4NC
5GND6NC
7GND8INDEX
9GND10NC
11GND12DRIVE SELECT 1
13GND14NC
15GND16MOTOR ON
17GND18DIRECTION SELECT
19GND20STEP
21GND22WRITE DATA
23GND24WRITE GATE
25GND26TRACK 00
27GND28WRITE PROTECT
29GND30READ DATA
31GND32SIDE ONE SELECT
33GND34DISK CHANGE