エントリー

PC-386BookLでPPMMCDRVを動かしてファイル交換

 先日,ふとネットをダラダラとみていますと,PC-9801のプリンタポートにmicroSDカードを繋いで読み書きするハードウェアがアキバで売られたというニュースを目にしました。

 ん?PC-9801のプリンタポートって出力専用だったんじゃなかったっけ?

 AT互換機ではプリンタポート接続のZIPドライブなんかが普通に売られていました(懐かしい)が,同じ仕組みがPC-9801で実現出来なかったのは,14ピンのPC-9801のプリンタポートが出力専用だったからでした。

 PPMMCDRVと呼ばれるそのハードウェアの説明を読んでみると,microSDカードをSPIモードでアクセスするということと,唯一の入力であるBUSY端子を使って双方向通信を実現するという仕組みでした。賢いなあ。私はてっきりFPGAなりSTM32なりを使うのかと思ってましたよ。

 PIOモードというPC独特の言い回しですが,詰まるところソフトでクロックやデータを生成するソフトウェアSPIですので,速度はCPU依存で,しかも強烈に遅いです。それでもフロッピーディスクやLANを使わずにファイルをやりとり出来るメリットは大きくて,実際PPMMCDRVは大人気のようです。

 自作するのは簡単ですが,ArduinoやRaspberryPi向けに作られたと思われる,microSDスロットとレベルコンバータ,そしてLDOまで搭載された小さい基板が安価に売られていて,これを使えば本当に繋ぐだけでハードウェアは完成してしまいます。

 最大の関門は14ピンのアンフェノールコネクタの入手でしょう。

 ところが偶然,数日前にジャンクのプリンタケーブル(しかもEPSON純正)を手に入れていました。これはもはや神の啓示。作らないわけにはいきません。

 ということで,早速amazonにmicroSDの基板を注文。5枚で760円ほどでした。

 届いてから工作開始。日曜の午後にぴったりな工作です。

 1時間ほどで完成すると思っていましたが,重いのか手間取ったのでその点松を書いておくことにします。

 まず,ケーブルをちょん切って,皮を剥きます。SPIで通信しますので短かくないとエラーが出そうだという事もありますし,小さくまとめておきたいので,コネクタから5cm程でカットしました。

 2,3,4,5,11ピンが必要なので,どの線から出ているのかをテスターでチェックしますが,鈍くさい私はどうせ間違うでしょうから,一応全部の線を切らずに残しておきます。

 そしてそれぞれの端子を,公開して下さっている配線図に従ってハンダ付けしていきます。電源はプリンタポートから採れないので,マウスポートから取ることにして,D-subの9ピンのコネクタに繋いだ5VとGNDも基板に配線します。(この段階ではLEDはまだ繋いでいません)

 この段階で一応チェックしますが,案の定配線ミスをやらかしています。違う線を繋いでいたので修正して,実機で試してみます。

 microSDカードは手持ちのもので一番小さい容量の1GBのものを使います。

 公開されたソフトに同梱されていたテスト用プログラム,PPMMCTST.EXEを実行しますが,エラーでいきなり進みません。よく考えてみるとGNDを配線してなかったことに気が付いたので14ピンにGNDを繋ぎますが,結果は同じ。(そりゃそうです,マウスコネクタのGNDは繋がっているので,品質はともかくとしてGNDには繋がっているんですから)

 ここで少し調べてみると,EPSON機ではSCKというクロックの信号でリンギングが出るので,3.3kΩを直列に入れてダンピングするのがよろしいそうです。私が使っているPC_386BookLは割と初期のEPSON機ですからダンピング抵抗は必要でしょう。

 手持ちの関係で2.7kΩで試してみますと,希にテストはパスするようになりましたが,ほとんどエラー。通常の読み書きなど全くできません。うーん。

 波形を少し見てみますが,BUSY端子の電圧がちょっと低く,4V程度しかありません。ですが,TTLレベルでは2.0V以上あればHighとなりますので,(不問にできないですが)これが原因で動作しないと言うことではないでしょう。

 気晴らしに,先にLEDの配線をするのですが,またも配線ミス。ずっと点灯しっぱなしになるので首をひねってましたが,違う線に繋いでました。トホホ。

 LEDの配線は正しく修正しましたが,動作しない状態は続いています。そこで,別のmicroSDを使ってみる事にしました。手持ちでフォーマット出来そうなのは16GB位だったのですが,これを30MBごとにパーティションを切って試してみます。

 すると,テストではほとんどエラーが出なくなりました。とはいえ希にエラーは出ますし,ファイルアクセスは全く出来ません。でも,偉大な一歩です。

 それではということで,ウェイトを入れてみました。最初は8という大きな物をいれたのですが,これだとファイルの読み書きが出来るようになりました。そこでウェイトを1つずつ減らしていくと,ウェイトが1ならOK,0ならエラーになることがわかりました。

 同じウェイトで先の1GBのmicroSDをもう一度試しましたが,やっぱりエラーです。別の8GBのカードでも0ウェイトでは動きませんでした。これはもうカード依存,いわば相性みたいなもんだと割り切るしかなさそうです。

 念のため,ダンピング抵抗の値を変えてみたり,他の信号にも入れてみたり,BUSYをプルアップしたりしましたが何も変化はなく,ついでに言うとSCKのダンピング抵抗も外しても,ウェイトを1つ入れれば問題なくアクセス出来る事がわかりました。

 しかし,ウェイトを入れれば遅くなります。ベンチマークを取ってみると情けないことに12kB/secしか出ていません。0ウェイトならもう少し改善されるように思うのですが,動かないものは仕方がないです。

 ちなみにウェイトを8つ入れた場合,2kB/secまで速度が低下しました。V30以下とは・・・

 これで大きなファイルもエラーなく読み書き出来るようになりました。LEDもちゃんと点滅するので,もう余計な線をカットしても大丈夫でしょう。遅いとはいえ,一時期検討していたシリアル経由での転送に比べると遙かに高速(12kB/sec = 96000bps)ですし,PCとのファイル交換に力を発揮すると思います。

 これまで,PCとのファイル交換は大変でした。フロッピーを使うしかありませんが,3モードに対応しないPC-386BookLは,720kBの2DDでしかファイル交換できません。仮に2MBのファイルを送り込む場合,ファイルをファイルを3つに分割して3回読み書きしなければなりませんでした。

 フロッピーのイメージなどはもともと1.2MBですから,圧縮しても720kB以下になることは少ないです。そうなるとやっぱり分割して2回で転送しないといけないので,気分的にもかなり抵抗がありました。

 フロッピーディスクエミュレータを使って,USBメモリのフロッピーイメージをマウントして実機に取りこむ手はありますが,1ファイルあたり1.2MBまで転送可能になるとはいえ,手間がかかることには違いありません。

 しかし,このPPMMCDRVでは,ファイルサイズがフロッピーディスクのサイズを超えても分割しないでいいですし,付きっ切りでディスクの交換をすることもありません。少々速度が遅くとも,放置して置けば済むというメリットは非常に大きいです。

 悔しいのは,ウェイトを0に出来なかったことです。きっと何か問題があるはずで,真面目に取り組めば原因くらいは判明すると思うのですが,ウェイトで改善するという事はクロックとデータのタイミングがシビアなのかもしれません。

 こうした楽しい工作の回路はもちろん,ソフトも公開して頂いている事には感謝しかありません。私の場合,microSDカードをとっかえひっかえしましたし,EPSON機ですので試行錯誤も必要でしたから,誰でも簡単にできるというものではなかったかも知れませんが,むしろそれが楽しいくらいで,なにかと小銭を集めたがる人が多いこのご時世,面白いものを公開して頂いている事に,まだまだすてたもんじゃないなあと思った次第です。

 

ページ移動

ユーティリティ

2025年06月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 - - - - -

検索

エントリー検索フォーム
キーワード

ユーザー

新着画像

過去ログ

Feed