2019年6月12日水曜日

FM77用の拡張IOボード、ROM/RAMディスクボード

FM77用の拡張ボードを紹介します


最近はソフトの手直しばかりで、とりたてて紹介するものがありません。そこで、以前製作して今でも使用しているFM77用の拡張ボードを紹介します。
このボードのために制作した、Windows上で仮想ドライブを実現するソフトFlexDrvWin.exeがこのブログのシングルボードマイコンを製作するベースとなったと言えるものです。

製作したのは、FM77AV40SX用のIO拡張ボードとROM/RAMディスクボードです。
私はFM77AV40SXでFLEX09とOS-9Level2を使用しているのですが、2DDフロッピーはかなり遅く、また、ドライブもメディアもいつまで使えるのかも分かりませんので、何とかFDDと縁を切りたいと思っていました。

色々と考慮した結果、手持ちのFM-7とFM77AV40SXに共通して装備されている50ピンのIO拡張コネクタを利用して、まずIO拡張ボードを作り、それに接続する形のROM/RAMディスクを製作することとしました。

製作したIOボードとROM/RAMボードを下に示します。

下がIO拡張ボード、上がROM/RAMボード

上部の空ソケットには512KBのSRAMを装着してRAMディスクとして利用していましたが、後述のようにWindows上の仮想ドライブに切り替えたので不要となりました。

左がIO拡張ボード、右がROM/RAMボード

今では、こんな配線をする気力はもうないかも...

それぞれの裏面配線の様子



ROM/RAMボードの構成を下に示します。
RAM/ROMボードの構成


6821によるROM/RAMディスクのアクセス方法を下に示します。
6821によるTrk,Sct番号のセット方法


IO拡張ボードには、6821PIA、6850ACIA、6840PTMが搭載してあり、6850にはRS-232Cシリアルインターフェースが、6821にはFT-245パラレルインタフェースが接続してあります。どちらも38400baudです。
ROM/RAMボードには、512KBのROMとRAMのペアが2組あり、それらを6821PIAが制御しています。RAMはバッテリバックアップしてあります。
ROM/RAMディスクの容量は
 4Mbit(512KB)では Trk 64、Sct 32 で(64-1)*32=2016セクタ
 2Mbit(256KB)では Trk 32、Sct 32 で(32-1)*32=  992セクタ
 1Mbit(128KB)では Trk 16、Sct 32 で(16-1)*32=  480セクタ
となります。

2組あるのは、FLEX09用とOS-9用で、それぞれをスイッチで切り替えて使用します。
(端にあるソケットはROMライターですが、未完成です。)

記録を見ると、2014年12月末から作り始めて2015年3月初めにハードは完成していますが、実用になる制御ソフトの完成には年末近くまでかかっています。

最初はROM/RAMディスクとして使用


FLEXでは実質4台までしかドライブが接続できないので、
ドライブ0:内蔵ドライブ0
ドライブ1:内蔵ドライブ1
ドライブ2:ROMディスク
ドライブ3:RAMディスク
として利用することになります。
内蔵ドライブ0のシステムディスクで起動し、その後、システムドライブを2に、ワークドライブを3に切り替えれば、フロッピーを使用せずに済みますので、結構快適になりました。

最初はシリアル/パラレルのインターフェースは実装していなかったのですが、ROM/RAMディスクのみでは結局、データ保存にフロッピーが必要なので、Windows上の仮想ドライブも追加することにしました。
FT-245モジュールを搭載しているのは、Windows上の仮想ドライブとパラレルインターフェースで通信したかったからで、作る前は、シリアルインターフェースでは遅くて実用にならないからパラレルでと思っていたのですが、実際に製作してみると、確かに転送速度は10倍以上違うのですが、DISKの読み書きに時間がかかるのでトータルの時間は少し速い程度であると分かりましたので、現在はシリアルも使用しています。

その時に制作したのが、6809シングルボードコンピュータでWindows上の仮想ドライブを実現しているFlexDrvWin.exeというソフトの原型で、このソフトのドライブ3にDSKファイルをセットすればFM77AV40SX上のFLEX09で読み書きできます。(OS-9の場合は別ソフトのOS9DrvWin.exeを使います。)

ドライブ3をRAMディスクからWindows上の仮想ドライブに変更


動作中の様子を示します。
手前がFM77AV40SXのディスプレイとキーボード、後方がWindows機です。
後方右上のWindows上のFlexWinDrvの画面で分かるように、ドライブ3にセットした仮想ディスクを読んでいます。


動作中の様子

画面表示


この拡張ボードによってデータ等はフロッピーでなくWindows上のファイルとして保存できるようになったのですが、起動時はフロッピーが必要です。これを解決するためにはフロッピーエミュレータが必要ですが、まだ製作できていません。。。

ドライブ2も仮想ドライブに変更


現在は、FLEX09システムのドライバールーチンをさらに書き換えて、ドライブ3だけでなく2もWindows上の仮想ドライブに設定変更をしていますので、FlexWinDrvのドライブ2と3に仮想ディスクをセットして使用しています。(結局、ROMディスクもRAMディスクも使わなくなってしまった。。。)

[蛇足]画像で分かりますように、FM77AV40SXの純正キーボードは使用せず、大切に保管してあります。代わりに、自作のキーコード変換器を接続したPS/2キーボードを使用しています。さらに、内蔵ドライブも取り外して保管し、代わりに一般的なDOS/V機用のFDDを装着しています。
自作のキーコード変換器は下の画像のものです。
ATtiny85を使用したハードは簡単なものです。ソフトには結構苦労しましたが、FM77AVのスキャンコードをですくまさんが調べて公開してくださっていたので、とても助かりました。感謝いたします。

自作のキーコード変換器


資料の整理を兼ねて、手配線のボードをプリント基板化しようと考えています。無事に完成したら公開するつもりです。

6 件のコメント:

  1. こんにちは。
    私 GAME68コンパイラを作った高井義明です。
    ASCIIに投稿した時の名前は昔の名前です。
    しかし OLD68funさん ハードからソフトまですごいですね。
    深く深く突き進んで行くのですね。
    私なんか、あれこれ気の向くままに食い散らかしている感じです。
    OLD68funの記事の中に6303が出てきますが、あれ私もやってました。
    2バイト操作などアッセンブラでやれば楽しいCPUでしょうが、仕事ではC言語を使いMSDOS上でソースを作りコンパイルしてましたね。
    FLEXもあこがれていましたね。でも使わずじまいで終わりました。
    6303にGAMEインタープリタを移植したのですがゼロページに I/Oがあるので四苦八苦した思い出があります。
    結局動作出来なかったと思います。

    昨日SONYのスマホを買ってきて勉強中を始めました。
    いまさらと言う感じですが、なにかオモチャできたらと思います。

    返信削除
    返信
    1. 高井さん コメントありがとうございます。GAME68コンパイラの記事の掲載を許可していただきましてありがとうございました。
      元々はハード製作から入ったマイコン・パソコンの世界ですが、体力・気力のこともあり(?)、今はソフトの方に偏っていますが、時々ハンダ付けをしたくなることがあります。
      6303はソフト的には使い易いと思うので、ゼロページのI/Oの存在さえなければぜひ使いたいのですが、残念です。
      今は、80系でよく見かけるPICやCPLDを使用したZ80のシングルボードマイコンを見習って、6809のシングルボードマイコンを作ろうかと考えています。と言いますのは小さなサイズ(10x10cm)にI2C機能まで含めたいからです。I2C機能があると外部に色々なものを接続して制御できる可能性がありそうですので。

      高井さんのブログは時々ですが拝見しています。特にHP電卓の記事に興味があります。
      これからもよろしくお願いします。

      削除
  2. 初めまして、秋田と申します。
    お互い名のりはしてませんけどインターネットではすれ違ってる感触を持ってますが
    ハードで助言を賜ったカベキンさんのサイトに紹介があったので自分は知ってはいました。
    因みにFT245RLを使った「FM-7用データ転送ハードの製作」と言うブログを書いてます。

    最初から不躾ですけどFT245RLについても情報交換できたらイイなとは考えてます。
    それで早速ですけど、このICについては参考にしたソースが38400baudだったので、
    そのままにしてますけど性能は更に上のような感触を持ってます。(公表値300Kバイト/s)
    もしかしたら6821PIAが介在して遅くなってる影響はありませんか。またwindosドライバでは
    他のプロセスにもリソースを明け渡してるので性能を阻害する要因になってる感触もあります。

    自分の方は現在windosドライバについては使い始めたばかりなので使い勝手を調べてます。
    新情報が判ればブログに書こうとも考えてます。

    それとキーコード変換器をパターン基板化する予定とのことで価格次第ですが予約したいです。
    できれば自作基板(セット)と交換して頂ければ更に嬉しいですけど。

    返信削除
    返信
    1. 秋田さん コメントありがとうございます。
      秋田さんのブログはカベキンさんに教えていただきましたので、時々見させていただいていました。私のようにあれこれと手を出すのではなく、一つのテーマで深く追及される姿勢には感服しております。
      FT245RLの使い方についてはまだ良く分かっていませんので、情報交換できたら有難いです。FTDIのマニュアルには仮想COMポートモードで300KB/sという数値は書かれていないようですので、秋月のマニュアルの記述は何を根拠にしているのかなと疑問を持っています。(1MB/sという記述はありますが、これはbit bang modeだと思います。)
      6821の介在が影響しているとは思いますが、TXEやRXFの監視やWR,RDの上げ下げというハンドシェークをするポートとして6821を用いてもTTLを用いても大差はないだろうと考えているのですが、実験的な根拠を持っているわけではありません。
      Windowsとの通信も問題がありありですね。コンソールアプリでは使い勝手が悪いので、どうしてもフォームアプリでということになるのですが、フォームアプリでのSerial入出力には本当に苦労させられます。

      I/O拡張ボードとRAM/ROMボードの基板化に取り組んでいる途中です。キーコード変換器も一緒に基板化しようかと考えていますが、その際にはお分けできると思います。(時間がかかりますが。。。)ただし、ソフトの完成度はいまいちで、私はゲームをやらないので不都合はないのですが、ゲームでの早打ちなどには対応できないという代物です。(キーコードとキーコードの間が一定程度空いていないと別々のキーコードのパルスだと識別できないのでとりあえずの対策で時間待ちを入れているためです。)
      今後ともよろしくお願いいたします。

      削除
  3. pakapooと申します。
    PS/2キーボードをFM77AVにつなぐアダプタというのはすばらしいですね。
    ですくまさんや海外の方がキーボードの情報は公開されているようですが
    実際に物を作って設計データを公開された方はいないように思います。
    もしよろしければソースを公開していただけたら世界中に反響が
    あるのではないかと思います。
    (宣伝ですhttp://blog.goo.ne.jp/purupoo/)

    返信削除
    返信
    1. pakapooさん コメントありがとうございます。
      どうも拡張I/Oなどよりもキーコード変換器の方が反響があるようで...
      ですくまさんが公開されたスキャンデータが製作の動機になったのですが、自分にとって使い物になる範囲の機能・性能のものなので、公開するつもりはありませんでしたが、他の方からも要望がありましたので、現在プリント基板を発注中です。届くまで一か月ほどかかりそうですが、基板化したものでの動作確認ができましたら、基板配布と共に回路とプログラムを公開する予定です。
      当初の予定では、まずCで書いてそれをアセンブラで書き直す予定でしたが、動いているのでそのままになっているという、結構いい加減なものですが、ソースも公開しようかなとも考えています。

      少し前にpakapooさんのホームページを見つけて興味深く拝見していました。
      私もFM-7用のFDDエミュレータを作りたいので、早速ジャンク箱からトラ技付録のMAX基板を拾い出し、CPLDの使い方を思い出しているところです。
      質問等させていただくことがあるかと思いますが、その際にはよろしくお願いします。

      削除