2026年1月27日火曜日

FM77AV用PS/2キーボード変換器のプチ改良

 FM77AV用PS/2キーボード変換器をAV2とSX両用に改良しました


以前、FM77AV用のPS/2キーボード変換器を作成しました。
「FM77AVにPS/2キーボードを接続する変換器の基板化(2019年7月31日)」
https://flexonsbd.blogspot.com/2019/07/fm77avps2.html
「FM77AV用PS/2キーボード変換器の不具合を修正(2020年1月21日)」
https://flexonsbd.blogspot.com/2020/01/fm77avps2.html

作成した変換器を用いてFM77AV2とFM77AV40SXのそれぞれにPS/2キーボードを接続して使用してきました。SX用の純正キーボードも所有しているのですが、それは大切に保管してあり、もっぱら自作した変換器を用いてPS/2キーボードを使用してきました。
(純正キーボードは矢印キーの位置が遠くて私にとっては使いにくい、、、)

最近はFM-11が2台も増えたこともあり、FM77AV2、FM77AV40SX、FM-11のそれぞれのキーボードと、さらに必要に応じてFM-7までもが机上に現れるので、ただでさえ狭い机の周辺がキーボードで埋まってしまってどうにもならない状態になってしまいました。

ということで、少しでもキーボードの数を減らすために、まずAV2とSXのキーボードを兼用できないかと考えていました。この2機種はコネクタの形が異なるだけでキーボード自体は同じですので、変換器の中で切り替えれば良いはずです。

そんな時に4回路2接点のスライドスイッチが格安で入手できたので、それを契機に実際に製作してみることにしました。

これが格安で入手したスライドスイッチです。何と10個で110円でした!


スライドスイッチ


しかし、ピン配置もピンの太さも標準的なものではないので、KiCad用のフットプリントを自作する必要がありました。
このスライドスイッチとAV2用のRJ9コネクタのフットプリントを現物のサイズを測定しながら作成したのですが、実際にはなかなかうまく合わず、基板を3回も作り直すことになりました。。。

回路図を示します。
以前のものにスライドスイッチを追加しただけです。
tiny85のプログラムも以前のものと同じですので、プログラムを見たい方は上記のブログをご覧ください。


回路図


以前製作した変換器はタカチのSW-50に収まるように作りましたので、今回も無理やりですが何とか同じサイズに収めることができました。


完成したものがこれです。

完成した両用変換器


画像左端がPS/2キーボードコネクタ、上端がFM77AV2用のRJ9コネクタ、下端がFM77AV40SX用のS端子コネクタ、そして右端が切り替えスイッチです。

上記しましたように、基板はタカチのSW-50に収まるサイズにしてあるのですが、側面に4つの取付穴をあける必要がありますので、手作業できれいに仕上げられる自信がないので今回は息子に3Dプリンタでケースを作成してもらいました。

これができあがったケースに収めた様子です。画像は白色ですが黒色でも作ってもらいました。


ケースに収めた様子


現物合わせで作ってもらったので、ぴったり収まって固定する必要もありませんでした。

使用している様子です。
左のカールコードがAV2用で受話器用のクロスケーブルです。右がSX用でS端子ケーブルです。


使用している様子


動作中でもSXとAV2を切り替えることができます。
(しかし、今考えるともう少し大きなケースにして、3つのコネクタを一面に集めた方がすっきりしたかも、、、)

これでとりあえずキーボードの数を一つ減らすことができ、机の周りが多少ですがすっきりしました。


2026年1月24日土曜日

DellのタワーデスクトップECT1250にHDDを増設する

 DellのタワーデスクトップECT1250にHDDを増設しました


今まで使用してきた富士通のデスクトップがWindows11に対応していないということで、やむを得ず更新することにしました。

選択したのはDellのデスクトップで、拡張性を考えて筐体も電源容量も大きめのECT1250にしました。今までドライブDとして使用していた3TBのHDDを内蔵する予定でした。

しかし届いたので早速ケースを開けてみましたら、何とHDDを増設するためのトレーのようなものがありませんので、このままでは取り付けできそうもありません。スペースはガラガラといえるほど空いているのですが。。。


筐体内部はガラガラ

ネットで検索してみると増設したいという書き込みが結構ありまして、特に価格.COM中のECT1250の書き込みが大変参考になりました。それによりますと、ドライブはタイロックなどで無理やり固定はできるようですが、電源ケーブルがコネクタの大きさもピン配置も独特で市販の一般品では加工が必要だとのことです。

今まで使用していた富士通のデスクトップESPRIMO D583/HXでは、HDDを増設するためにマザーボードの加工まで行いましたが、今回はあまり手間をかけたくはありません。

「ESPRIMO D583/HXのマザーボードにSATAコネクタを取り付ける(2022年8月24日)」
https://www.blogger.com/blog/post/edit/1662007451717538019/2004678106518154857

増設用と思われる電源コネクタとSATAコネクタはありますし、購入時のオプションにHDDがありましたので増設できるはずです。価格.COMにも純正トレーとケーブルのセットを購入できたとの書き込みがありましたので、Dellのサイトの中を探し回った挙句にようやくオプションの購入のページを見つけて注文することができました。

届いたものがこれです。HDD取り付け用のネジまで付属していました。


届いたトレーとケーブル


HDD取り付け後

これにHDDを取り付けて筐体に収めれば良いはずです。価格.COMには5分で完了と書いてありましたが、一体どこに取り付ければ良いのかさっぱり分かりません、、、

あれこれと悩んだ挙句、ようやく取り付けるべき箇所を見つけましたが、何と、メクラ蓋のようになっている部品を取り外して、そこに収めるようになっているのでした。。。


これを外して取り付ける


何とか無事に取り付けることができ、今までは臨時的に外付けUSBの先に接続して使用していた3TBのHDDを内蔵できて快適に使用できております。
(しかし、今のSSDは本当に小さいですね。最初に筐体を開けてみたときにはSSDを見つけられず、取り付け忘れかと思ってしまったぐらいです、、、)


取り付け後の状態


以上、DellのデスクトップにHDDを内蔵する際に、パーツの入手と取り付けに少し苦労したので、同様なことで困っている方に多少でも参考になればということで報告しました。


2026年1月22日木曜日

FM-11にPS/2キーボードを接続するための変換器の作成

 FM-11用のPS/2キーボード変換器を作成してみました

【1月23日訂正】末尾に訂正があります。

昨年、FM-11AD2(キーボード、ソフト、マニュアル付き)を入手しまして、拡張メモリ、FT-245高速通信カード、RTCカードなどを作成してきました。

その後、さらに実験用のつもりでFM-11AD2の本体のみを追加で入手しました。これは不動品でしたがMPU(68B09)を交換しただけで正常に動作するようになりました。

これは本体のみでキーボードがありませんので、PS/2キーボードを接続するための変換器の作成を始めました。
「FM-11本体インタフェース仕様」によりますと、キーボード用の入力端子はDin8ピンで、
1.CLOCK           (キーボード→本体)
2.DATA              (キーボード→本体)
3.KRESET        (本体→キーボード)
4.GND
5.VCC
6.INSLEDON    (本体→キーボード)
7.STOP              (キーボード→本体)
8.(NC)
とのことです。


純正キーボード


シリアルコードの確認

以前、FM77AV用のPS/2キーボード変換器を作成したことがあります。
「FM77AVにPS/2キーボードを接続する変換器の基板化(2019年7月31日)」
「FM77AV用PS/2キーボード変換器の不具合を修正(2020年1月21日)」

その際にはCLOCK出力やRESET入力というものはありませんでした。しかし、違いがあるにしても何とかなるだろうと甘く考えて始めました。
まず純正のキーボードと本体の間に挿入する画像のようなアダプタを作成し、オシロスコープとロジックアナライザでキーボードから本体に送られているCLOCKとDATA信号を観察しました。


測定用アダプタ



その結果、以下のようになっていることを確認しました。

[1]起動(リセット)時にまずキーボードが接続されていることを認識する。
起動(リセット)直後に本体からキーボードにリセット信号が送られ、その後の数msの間にキーボードから本体に’P’のブレークコードを送り、それが本体に受信されることでキーボードが正常に接続されていると認識する。
[2]キーボードから本体へクロックに同期してキーコードが9ビットのシリアルデータで送信される。
[3]シリアルデータはアスキーコード的な8ビットコードで、それを反転して第9ビットとし、さらに通常キーでは0、特殊キーでは1が追加された形式。
[4]送信手順
(1)最初に20us幅のスタートビット(アクティブH、CLOCKとDATAも同様)
(2)その後26us間隔で14us幅のクロックが8個続き、それに同期してデータバイトのLSBからMSBの順に8ビットが送られる。
(3)最後に130us幅のクロックに同期して第9ビットが送られる。
(4)クロック終了後に約77us間第9ビットが続き、その後0になって終了。
(以上のクロックやデータ幅はおよその値で結構変化します。)

プログラムの作成

これらの結果をもとにしてプログラムを作成しました。
回路は以前のFM77AV用の変換回路を流用し、CLOCKとSTOPの2ビットのみを追加した回路としましたので、PS/2キーボードからのキーコードの読み込みはFM77AV用のものをそのまま使うことができました。
しかし、使用したATtiny85ではピン数が足りず、リセット信号をどうするか悩みましたが、とりあえずtiny85のリセット端子に直結して本体と同時にリセットするようにしてみましたら、リセット後の数ms後に’P'のブレークコードを送ることでキーボードとして無事に認識されました。



試作変換回路


FM-11とFM77AVとの違い

プログラムの基本はFM77AV用と同様で、PS/2キーボードから入力されたコードでPS/2キーボードのスキャンコード表を検索して一致するコードの位置を見つけ、FM-11用のキーコード表の対応する位置のコードを取り出すというものです。
FM77AVでは40ビットのシリアルデータのうちの4バイトを表にしていましたが、FM-11ではアスキーコードが基本なので各コードそれぞれ1バイトの表を用意しました。
(ただし、STOPキーのみは扱いが別になっており、シリアルデータとして送信されるのではなく、Din8ピンの7番ピンを直接Lowに落とすことで本体に伝えています。)

これで、通常のキーやファンクションキーについては正常に入力ができるようになったのですが、シフトキーやコントロールキーについてはうまくいきません。
かなり悩みましたが、FM-11とFM77AVとではキーボードの役割が異なっていることにようやく気付きました。
FM77AVでのキーボードの役割は全てのキーの40ビットのシリアルデータを本体に送り込むだけで、シフトキーやコントロールキーの処理は本体側で行っているのに対して、FM-11ではキーボード内で必要な処理を行った結果のアスキー的なコードを本体に送っているのです。(アスキー的なコードをキーボードが送っていることからすぐに気付くべきでしたが、、、結構な時間を浪費することになってしまいました。)

ということで、シフトキーやコントロールキーが押された時の処理も必要になりましたのでNORMAL, SHIFT, CONTRLの3バイトの表に拡張することで、主なキーについては正常に入力することができました。

まだ対応できていないキーなど

ほとんどのキーについては正常に入力できるようになりましたが、現在のところきちんと対応できていないキーとしてカナキーとGRAPHキーの2つがあります。
これらのキーについては、自分的にはまず使用することがないので対応する必要性を感じないので、とりあえずこのままで良いかなとも思っています。。。

もう一つですが、現在のところオートリピートに対応できていません。
以前発表した、FM77AV用のUSBキーボード変換器でも同様なのですが、オートリピートに対応する手法を私が分かっていないためです。この機能は必要なので何とかしたいのですが、、、
【1月23日訂正】私の勘違いがありましたのでプログラムを修正しました。その結果、オートリピートが実現できました。

最後に

しばらく使用しながら不具合の有無を確認し、その間に回路のプリント基板を作成し、最終的に完成しましたら回路図とプログラムを公開する予定です。



2025年12月6日土曜日

FM-11に2DドライブとしてPC用のドライブを接続するーその後

 PC用のドライブでStepDoubler回路が動作しました


7月30日のブログ「FM-11に2Dや2HDドライブとしてPC用のドライブを増設した結果」ではFM-7系で使用しているStep信号を2倍化するStepDoublerボードが使用できないと書きました。
そのため、FM-11で読み書きすると2Dディスクの前半しか使用していない、通常の2Dディスクとは互換性のないFM-11専用のディスクになってしまっていました。

しばらくはその状態で使用していたのですが、FM-7系と共用できないディスクでは流石に不便なので解決を試みました。

FM-11の2Dドライブ用FDDカードが出力しているStep信号をオシロスコープで観測してみたところ、下図の中段のようになっていました。


Stepパルスの幅と周期

現在使用しているStepDoublerではパルス幅1.5ms、周期4.5msに設定していましたので、これではFDCカードが出している周期6msの間にパルスを挿入できるわけがありません。しかし、現在の設定値はFM77AV40SXのStep信号を実測して、その値に合わせたものだったのですが、、、

とにかく、現行の値ではダメという事で周期6msの間にパルスを追加するために周期3msとし、パルス幅もFM-11と同じ4usに変更しました。(FDDの規格の一例では、周期は最小値で3ms、方向変更の場合は4msですので、ぎりぎりでしたが、、、)

結果ですが、正常に動作しました。

使用したStepDoublerボードを示します。

現在使用しているものは図のように2台のFDDを接続できて、それぞれのドライブ番号を0~3に設定でき、さらにStep信号を追加するかしないかを選択できます。


StepDoublerボード


使用確認したFDドライブは、MITSUMIのD353M3D、TEACのFD-235HG、YE-DATAのYE-702Dですが、いずれも34ピンがReady信号になるように改造してあります。改造に当たってはサイト「試運転の資料館(https://shiuntenlos.ie-yasu.com/)」を参考にさせていただきました。ありがとうございます。

蛇足ですが、手持ちのD353M3Dには2種類あり、両サイドに止めネジがあるものは「試運転の資料館」に掲載されているのですが、全体を分解しないと基板に到達できないという改造の難易度が高いものです。それに対して止めネジがないものは分解が簡単でした。しかし、「試運転の資料館」には掲載されていませんので、IC MCL039の同じピンが接続されている箇所を見つけて接続しました。


2台のD353M3D

図の左が分解が簡単なD353M3D、右が難易度が高いものです。もちろん、両機とも正常に動作しています。

なお、動作確認したOSはF-Basic5.0、OS-9Level2で、いずれでも初期化、読み書きができることを確認しました。

これで、FM-7系と同様に2Dのディスクを共用できることになり、データの移動が便利になりました。ディスク関係で残る課題は、増設した1MB 2HDドライブがF-Basic5.0では正常に使用できるのにOS-9では初期化ができないというものですが、こちらはまだ未解決です。Step Rateの関係かもと考えて、Step Rateを現行の3msから6msに変更したデバイスディスクリプタを書いてみたりしているのですが、、、

以上、FM-11で2DドライブとしてPC用ドライブがFM-7系と同じように使用できるようになったという報告でした。


2025年11月18日火曜日

必要に迫られて自作したツールソフトの紹介(第4回)

 使用しているディスクイメージ処理ソフト等をFM-11に対応させました


【2025年11月19日訂正】
 CvtDskD77.exeの表示画面が間違っていましたので、正しいものに差し替えました。

FM-11を入手して以来、今までFM-7/77で使用してきたハードやソフトをFM-11にも適応させる作業を続けてきましたが、一番の難関であったディスクイメージ処理ソフトを何とか対応させることができましたので、ここに紹介します。

今回紹介するソフトは以下の通りです。

[1]ディスクイメージ処理ソフト

それぞれF-Basic, Flex, OS-9の各OS用の専用ソフトになっています。

CP/M-80用のCpmDrvWin.exeも作成してありますが、FM-11の2HDディスク版CP/Mを所有していないので、今回は対応していません。

 ◎FbasDrvWin.exe

 ◎FlexDrvWin.exe

 ◎Os9DrvWin.exe

それぞれの動作画面の例を示します。


FbasDrvWinの画面


FlexDrvWinの画面



Os9DrvWinの画面


元々はWindows上に仮想ドライブを作成するためのソフトでしたので、今までは「仮想ドライブ構築ソフト」と呼んでいましたが、現状ではD77, DAT, DSK形式のディスクイメージを操作する使い方の方が主になっているので、今後は「ディスクイメージ処理ソフト」と呼ぶことにします。

特徴ですが、

・D77, DAT, DSKの各形式に対応

 (DAT形式とは、FT245転送ソフトで使用している、各セクタの先頭に16バイトのヘッダが付いた形式です。)

・ディスクイメージファイル中のファイルが一覧表示され、それらに対して読み出し・削除・ファイル名変更が可能

・ファイル一覧中にWindows上のファイルをドラッグ&ドロップすることでディスクイメージファイル中に追加が可能

・ディスクイメージファイル中の全ファイルを一括読み出し可能

・自動的にWindows上に仮想ドライブが構築されるので、通信経路を用意することでFMのドライブとしてアクセス可能

以前にも書きましたが、私はただのアマチュアですので各OSのFMS(ファイルマネージメントシステム)の処理内容を知っているわけではなく、ひとつ処理する毎にイメージファイルを見て変更された箇所から処理の内容を推定し、同じ処理をプログラム化して作成したものです。従って、処理の間違いや不足等があるかと思いますが、長いもので8年ほどの使用実績がありますので、それなりに使用に耐えるのではないかと思っています。


[2]ファイル形式変換ソフト

 ◎CvtDskD77.exe


CvtDskD77の画面

特徴ですが、

・D77(D88), DAT, DSK(セクタ内容のみが単純に並んだもの)の各形式に対応

・2D, 2DD, 2HDディスクに対応

・F-Basic, Flex, OS-9, CP/Mに対応

・D77(D88)の場合のインターリーブ(2D用のインタリーブ2、2HD用のインタリーブ5)の設定が可能

・2HDディスクのトラック0の2形式(標準形式、Flex形式)に対応

F-BasicやOS-9ではトラック0、サイド0のみが128byte, 26セクタで他は256byte, 26セクタが標準のようですが、Flexではトラック0がサイド0,1ともに256byte, 15セクタになっています。

修正した3つのディスクイメージ処理ソフト(FbasDrvWin.exe, FlexDrvWin.exe, Os9DrvWin.exe)とファイル形式変換ソフトCvtDskD77.exeをOneDriveに置いておきますので、使用した結果については自己責任ということを承知していただいたうえで、自由にご使用ください。(もしバグを見つけられましたら教えていただけるとありがたいです。)


2025年10月18日土曜日

FM-7/77用RS-232CカードにRTCモジュールを追加して一枚のカードに

 FM-7/77用RS-232CカードにRTCモジュールを追加して一枚にしました

以前、FM-7/77用のRS-232Cカードを製作しました。
「FM-7/77用のRS232Cカードを作りました 2019年8月16日」
(https://flexonsbd.blogspot.com/2019/08/fm-777rs232c.html)

より使いやすくなるように、何回か修正を加えて最終的に下記のような形で使用してきました。
「FM-7/77用の自作基板(RS232Cカード、FT245通信カード、1024KB拡張RAMカード)のプチ改良 2024年3月25日」
(https://flexonsbd.blogspot.com/2024/03/fm-777rs232cft2451024kbram.html)

しかし、FM-7/77の32Pスロットは数少ないので、自作した32Pスロット拡張基板を用いても窮屈になってきました。

ということで、とりあえずRS-232CカードにRTC_SDカード中のRTC機能を追加して一枚にまとめてみることにしました。(F-Basicではともかく、Flex9やOS-9ではRTC機能は必須です)


製作の方針

COM部の入出力ですがシリアルコネクタは使いにくいので、今はTTL_USB変換ケーブルを使用することにしています。

また、RTC機能はZS-042というモジュールを使用し、そのコントロールにはPIA(68B21)のポートAを使用しています。スペース的には40ピンICを使用するのは非常に不利なのですが、PIAのポートAの特別な機能(出力に設定したままで入力も可能)がアセンブラでI2C機能を使用するのに最適ですので、そのまま使用することにしました。(回路を変更するとI2Cのプログラムを書き換えるのがかなりの手間になりそうなので、、、)

そのために全ICがそのままでは収まらなくなり、やむを得ず6個のゲートICをGAL20V8Bに置き換えることで何とか10x8cmのサイズに収めることができました。

(40ピンのICのわずか2ビットしか使わないのはいかにも勿体ないので、必要ならポートBが他の用途に使用できるようにピンヘッダを付けましたが、、、)


製作したカード

以上より、下記のようなRTC_COM8251Aカードが出来上りました。


製作したRTC_COM8251Aカード

本体に装着しました

本体スロットに装着した様子



回路図を示します(GALのプログラムは省略しました)

RTC_COM8251A

機能の確認

通信テストに使用したプログラム(F-BASIC文法書掲載のもの)


サンプルプログラム

通信の様子(FM-7側)

実行の様子(FM-7側)

通信の様子(Windows  TeraTerm側)

実行の様子(TeraTerm側)

RTCモジュール機能を下記に示します。


RTC機能の確認

起動直後のF-Basicでは日付・時刻が不定です。

RTC_WR2で時刻を設定します。RTCモジュールに設定されると同時にF-Basicのタイマー関係のバッファにもセットされます。

PRINT文で確認できています。

また、RTCモジュールの設定値をRTC_RD2で読み出し、RTC_SET2でF-Basicのバッファに転送できます。


最後に

製作直後は8251Aによる通信機能が全く反応せず、焦りましたが、TeraTermの改行コードの設定をデフォルト値のCRからAUTOやCR+LFに変更することで正常に通信ができました。(最初にRS232Cカードを製作した時に必要だった設定を忘れてしまっていました。。。)

通信速度ですが、純正のRS232Cカードでは19200baudまでとなっていますが、インテルやOKIの8251Aでは38400baudまで可能です。

また、RTCモジュールのコントロールソフト(RTC_WR2, RTC_RD2, RTC_SET2)ですが、FM-11用のものがそのまま使用できます。




2025年9月28日日曜日

FLEXをOS-9上で走らせる(OS-9パラサイトシステム)

 FLEXをOS-9 Level2システム上で走らせてみました

Oh!FM誌の1985年5月号に「OS-9パラサイトシステム FLEXをOS-9上で走らせる(佐藤富美雄さん)」という記事が掲載されていました。


Oh!FM誌1985年5月号の記事

私はFLEXをFM77AV40SXなどで使用しているので、OS-9上でFLEXを走らせるという発想に興味を持ち、以前、必要な7個のファイルを入力してSXの2DDディスク上で試してみましたが、もちろんシステムを構築できませんでした。

先日、FM-11AD2(OS-9L2付き)を入手して、何とか2Dドライブ上でFLEXを走らせることができました。(2HDドライブで走らせることは未だできていません。。。)

上記の記事では、どうもFLEXが2Dドライブで動作していれば良いようで、これならシステムを構築できるかもと考えました。さらに良く読むと、このFLEXシステムで使用しているのはFLEX.CORのみなので、私が所有しているVer 3.01(今はネットで入手可能)で実現できそうでした。

ということで、以前入力してあった7個のファイルを使用してパラサイトシステムを構築してみましたが、分かりにくい事などがあって結構手間取りましたので、整理を兼ねてここに経過を記しておきます。


◎システムの構築


 (必要なシステム)
 最小1台の2HDでOS-9Level2が、1台の2DでFLEXが動作していること。
 2Dドライブはシステム構築後は不要。

1.OS-9の/D0/CMDSに下記の3ファイルをセットする。
 Flex(モニター)、Newdisk_flex(仮想ディスク作成)、Mfd_dcopy(Flex丸ごとコピー)

2.FLEXシステムに下記の4ファイルをセットする。
 OO.CMD(FLEXのOコマンド相当)、II.CMD(FLEXのIコマンド相当)、SHELL.CMD(OS-9のShellを起動)、PRINT.SYS(OS-9上でプリンタへ出力)

3.2DディスクでFLEXを起動してパラサイトシステム用のFLEX.SYSを作成する。
このFLEX.SYSの実体は元のFLEX.CORに起動アドレス$CD00をAPPENDしただけのものです。(FLEXシステムとして必要なI/OはOS-9が担当するのでCORのみで良い)

4.2HDディスクでOS-9Level2を立ち上げ、Mfd_dcopyでFLEXを丸ごとOS-9に取り込む。
この時、保存するFLEXファイル名として、例えば/D0/FlexSysを指定すると、これがドライブ0として使用するファイルになる。

5.FLEXは4台までのドライブを扱えるので、Newdisk_flexを用いて、例えば/D1/FlexWk1のようにワークドライブを作成する。

以上でシステムの構築は完了。


◎使用法

1.OS-9Level2を起動する。

2.Flexモニターを実行し、そのSコマンドで仮想ドライブを設定する。

ドライブ0には/D0/FlexSysを、ドライブ1には/D1/FlexWk1を指定する。必要ならドライブ2,3も指定する。

3.GコマンドでFLEXが起動する。

4.Xコマンドでシステムドライブを、Dコマンドでワークドライブを指定できる。また、SHELLコマンドでOS-9のShellが起動する。

5.終了するときには、MONコマンドを実行してFlexモニターに戻ってからQを入力してOS-9に戻る。

起動の手順

オリジナルのCATコマンドを改良したCAT1コマンドの実行結果です。


現在のFlexSys中のファイル一覧

◎使用してみて

FLEXのI/Oルーチンのみを使用しているプログラムは正常に動作するはずですが、直接I/Oをコントロールしているものは動作しません。例えば、直接サブシステムを使用しているDUET(スクリーンエディタ)はダメでした。また、何故かFORTH77もダメでした。

私の場合はアセンブラASMBを使用することがほとんどなので、これが動作するのはとてもありがたいです。

最後に

OS-9はもちろん、FLEXなども使用している方はまずおられないと思いますので、何の参考にもならないのですが、以前何とかしたかったことがようやく実現できたという自己満足の記事でした。

(このシステムを実際に試してみようと思われる方はおられないと思いますので、記事から入力した7個のファイルを掲載することはしませんでしたが、試してみようと思われた方には連絡していただければお送りできます。)

ユニークな発想を実現された佐藤富美雄さんに感謝いたします。


2025年8月23日土曜日

FM-11の増設2DドライブにFLEX9を移植

 FM-11にFLEX9を移植する第一段階として増設した2Dドライブに移植してみました

私は今までFLEX9の使いやすさが気に入って使用しておりましたので、FM-11を入手した時からFM-7系で使用してきたFLEX9を移植したいと考えていました。

私が使用しているFLEX9は大昔TSC社から直接購入した8インチ版のV3.01で古いのですが、特に不都合もないのでFM-7, FM77AV2, FM77AV40SXに移植して使用しておりました。

(今はネットの情報を元にしてFLEX9システムを構築することができます。私のブログ「FLEXシステムの作成方法(その2)・・・より具体的に」にその構築手順を公開しています。)https://www.blogger.com/blog/post/edit/1662007451717538019/8762567690989530647

いきなりFM-11の5インチ2HDに移植するのは敷居が高いと思い、まず増設した2Dドライブで動作させようと考えました。

2Dドライブ版であれば、IPLをFM-11用に書き換えるだけで良いのではと考えたのですが、そのIPLに良く分からない部分があり、試行錯誤を繰り返すことになりました。そのため途中から増設2DドライブをGOTEKに置き換えて、そのhfeファイルを書き直しながら動作するIPLを作成しました。

2Dドライブ0をGOTEKに置き換えた様子です。


中央が置き換えたGOTEKドライブ

IPL作成の手順

FM-11のBootLoaderやIPLについての知識は全くなかったので、次のような手順でIPLを作成しました。

1.既にあるIPLを読む。
・純正のF-Basic5.0のIPL
・はせりん様のブログ「FM-11用F-BASICのページ」(http://haserin09.la.coocan.jp/fbasic11.html)中の2D版F-Basic5.0のIPL
・「F-BASIC V3.0をFM-11で走らせる」(Oh!FM誌1985年2月号、1986年8月号)のIPL
上記のIPLの作成者の方に感謝いたします。

2.上のIPLを逆アセンブルしてFM-11固有の設定を抜き出す。
・最初はIPLがどのアドレスに読み込まれるのかも分からず$100、$300、$400などを仮定しましたが、その結果、どうも$400らしいと分かりました。
・いずれもF-Basic用のIPLでしたので、FLEX9用のIPLに不要と思われる部分を削除しました。

3.FM-7系で使用中のIPLに2.で抜き出した設定を追加する。
・2Dドライブで動作させるのでIPLのみを書き換えれば、FLEX9システムは変更せずにそのまま動作するはずと考えました。

手順としては簡単ですが、何しろFM-11のハード、ソフトが良く分かっていないので理解できない個所も多く、何度も書き直しては試すことになりました。

結局、IPLのアセンブルリストを作成ー>アセンブルしてバイナリを生成ー>エディタ上でFM-7用のDSK形式のシステムディスクのトラック0,セクタ1,2に書き込みー>D77形式に変換ー>GOTEK用のHxCFloppyEmulator.exeでhfeファイルに変換ー>USBに書き込んでFM-11のGOTEKにセットして起動テスト、という手順をひたすら繰り返すことになりましたが、GOTEKのお陰で、ほとんどの作業がWindows上で行なえましたので大変助かりました。

最初にFLEX9が起動したときの画面はこのようでした。


初めて起動したときの画面

FLEX9の起動メッセージやSTARTUPに書き込んであるファイルのメッセージが表示されていることから、ディスク関係は正常に動作していると判断できましたが、CRやLFが機能していない上に文字化けも生じています。

最初はIPLでのFM-11の初期設定がおかしいのかと思い、あちこちを変更してみましたが変化はありません。次に、表示関係ということでFLEX9システム中のCONSOLEを見直しましたが、もちろんFM-7系で正常に動作している実績のあるルーチンですのでおかしいところがあるはずはありません。。。


不具合の原因はCONSOLE CONTROLだった

困りはてて諦めかけましたが、ついに原因を突き止めました。

何と、Display Sub SystemのCONSOLE CONTROLコマンドが拡張されて書式が変更されていたのです。

FM-7系:$00,$00,$0C(コマンド),$23(制御フラグ1バイト,デフォルト値)
FM-11 :$00,$00,$0C(コマンド),$06,$D3(制御フラグ2バイト、デフォルト値)

これに合わせて4バイトのCONSOLE CONTROLを5バイトに変更することで正常に表示されるようになりました。DISK DRIVERルーチンはDMAを用いていない通常のものでしたが変更の必要はありませんでした。


正常に表示された起動画面


6809 以下が起動メッセージ、次行が日付要求画面で続く3行はSTARTUPに書き込んである自作の常駐モニター、ROM/RAM/Windows仮想ドライバ、ラインエディタの起動メッセージです。

以上で、とりあえず2D版のFLEX9がFM-11に移植できました。
しばらく使用してみましたが、特に不具合はないようです。

次に作成したIPLルーチンを示します。
意味が分からないまま入れてある部分もありますので、ご指摘頂けると有難いです。

 


今後は

あとは、これを2HDに移植すれば良いのですが、DISK DRIVERは当然書き直す必要がありますし、さらにF-Basicと同様にトラック0、サイド0を128バイトで処理することやDISKの読み書きにDMAを使うことなどを考慮すると、結構手間取りそうです。。。


2025年7月30日水曜日

FM-11に2Dや2HDドライブとしてPC用のドライブを増設した結果

 FM-11AD2に2Dや2HDドライブとしてPC用のドライブを増設してみた結果です

FM-11AD2にPC用のドライブを増設して、2Dドライブ(320KB)、2HDドライブ(1MB)として使用してみました。

PC用ドライブを接続する前には、2DとしてYD-625を、2HDとしてYD-180を接続していましたが、現在は画像のように、2D用として2台、2HD用として1台のPC用ドライブを使用しています。
右の1台が2HD、左の2台が2Dとしての使用で、ドライブは右からD353T5、FD-235HG、MPF920です。


増設したPC用ドライブ3台


PC用ドライブを増設するまでの経過


入手したAD2に標準搭載されていたドライブは2HDが2台のみでしたので、このままでは今まで使用してきたFM-7、FM77AV2、FM77AV40SXそしてWindowsPCとの間でデータ交換するのが非常に不便です。

そこでまず2Dドライブを増設することを考えて、大胆にもFM-7用のFDCカードをアダプタを介して装着してみましたが、もちろん動作しませんでした。

ブログ「FM-11にFM-7等のカードを装着するためのアダプタを作成 2025/06/04 (https://www.blogger.com/blog/post/edit/1662007451717538019/264779242327682535)」

結局、知人から頂いた2Dドライブ増設ボードで無事に2Dドライブを増設することができました。ただし、この時に正常に動作したのは5インチ2Dのみで、PC用の3.5インチドライブは不完全な動作でした。

FT245カードも作成してWindowsPCとのデータ転送もできるようになりましたので、自分なりに使えるようになったと思っていましたが、メインの2HDドライブの5インチはヘッドロード音が大きく、しかもメディアを頻繁に叩く(!)のが心配で、できれば3.5インチをメインにしたいと考えました。

まず最初に、内蔵FDインターフェースボードから2台のFDDへの接続ケーブルを延長して外部に2HDドライブを接続してみました。
しかし、内蔵ドライブと同じ2HDのYD-180を接続したにもかかわらずドライブが動作しません。ドライブの設定をあれこれ変えてみたりしましたがダメです。

結局、オシロを持ち出してFDDへの信号を観察した結果、何と、インターフェースボードの34ピンコネクタにはドライブセレクト信号が0と1は出ていましたが2と3の信号は出ていないのです。

ということで、内部の34ピンコネクタからの増設は諦めて、背面に出ている50ピンのアンフェノールコネクタを使用することにして、各ピンの信号を調べました。
内部の34ピンとの対比や入力信号を受けている74LS14や信号出力のMB433(7438相当)の各ピンを調べましたが、どうしてもドライブセレクト2や3のピンが分かりません。

調べたピン配置は下記のようです。


ピン配置の調査結果(未完成)

ドライブセレクト信号2と3はピン18, 19ではないかと予想しましたが、良く分かりません。

そんな時に知人からパソコンワールド誌(1988年11月号)の記事を紹介していただきましてようやくピン配置が判明しました。


パソコンワールド誌より

私が調べたものとはドライブセレクト信号のピン配置と異なりますが、これに合わせてケーブルを作成しました。

増設ドライブ用ケーブル

これはPC用の3.5インチドライブ用で、34ピンコネクタの先にはドライブ番号変換用のアダプタが接続してありますが実際にはアダプタを外して、この先に5インチドライブ用の延長ケーブルを接続しています。

最初はFDDのドライブ番号を2にしたのですが認識せず、ドライブ0として無事に動作しました。番号の割り振りが増設ドライブ0と1ということのようです。(FM-11からはドライブ2として認識しています。)

最終目的であるPC用3.5インチドライブを接続するために使用したドライブは34ピンのディスクチェンジ信号をReady信号に置き換える改造を施したものです。なお、この改造に当たっては「試運転の資料館(https://shiuntenlos.ie-yasu.com/98ma0050.htm)」を参考にしました。ありがとうございます。

さらに、当初は上記のようにドライブ番号を0にするためのアダプタを使用していましたが、ドライブによっては0オーム抵抗の付け替えでドライブ1から0に変更できることがわかりましたので、その変更も行っています。使用したドライブはTEACのFD-235HG、ミツミのD353T5、SONYのMPF920です。

参考までにFD-235HGとD353T5の改造結果を示します。


FD-235HG改造箇所


D353T5改造箇所


増設した結果


以上の経過の後、PC用ドライブをFM-11に接続できたわけですが、現在のところ判明している不具合は以下の通りです。

(1)2HDドライブ

 F-Basic5.0ではドライブ2として正常に動作していますが、OS-9Level2では/ND2として認識するものの、何故かフォーマットができません。

仕方がないので、F-Basic5.0で初期化した後、F-Basic上でFT245を用いてWindowsPCからOS-9システムディスクのイメージを転送しました。その後はdirでファイルが一覧表示されますし、コマンドを実行することもできました。

(2)2Dドライブ

 以前の報告にも書きましたが、StepDoublerアダプタを介すると正常に動作しません。直に接続すると2Dドライブとして正常に使用できますが、本来2DDドライブですのでメディアの半分しか使用しておらず、FM-7系の2Dメディアとは互換性がありません。ということで、FM-11の2Dドライブ専用のメディアとして使用することになります。


2025年7月29日火曜日

FM-11用に作成したRTC_COMカードをFM-7/77用に移植

 FM-11用に作成したRTC_COMカードをFM-7/77用に移植しました。


FM-7用には以前、RTC_SDカードを作成して使用してきました。
(ブログ「FM-7にRTCとSDを接続する試み(2023年3月9日~5月19日の計6回掲載)」で紹介。)

しかし、カードを筐体の中にセットする機種ではSDの挿入・取り外しが非常に不便でしたので、常用しているFM77系には不向きということでFM-7でのみ使用してきました。
今回、FM-11用を作成する際にはそれを考慮してSDカード用の回路を取り除き、代わりに6850ACIAを用いた通信ポートを設けることにしました。RS232Cを持っている機種もありますが、別途通信ポートがあると便利な場合があると考えたからです。

実際にFM-11用を作成してみて、FM-7系にもあったら良いなと思えてきましたので、FM-7系用として32Pスロットに装着する形でのカードを作成しました。

これが作成したカードです。

FM-7用RTC_COMカード


いつものようにドジをしましたので、基板の修正(パターンカット1箇所、追加配線2本)が必要でしたが、修正して無事に動作しました。


裏面の修正箇所


回路図を示します。
上記の不具合を修正してあります。


回路図(修正済み)



(1)RTCモジュールのドライブソフト


ドライブソフト(RTC_RD2, RTC_WR2, RTC_SET2)はFM-11のF-Basic用に作成したものがそのまま使えます。RTCの時刻の読み出しにはRTC_RD2、RTCへの時刻の設定にはRTC_WR2、F-Basicへの時刻の転送にはRTC_SET2を使用します。

また、F-Basicと並んで良く使用しているOS-9Level2用にも同じ機能の3つのソフト(RtcRd2, RtcWr2, RtcSet2)を作成しました。実際には、F-Basic用に作成したものをOS-9用に移植したということですが、OS-9ではファイル名に「_」を使えないので名称も変更してあります。

F-Basicでの動作の様子は以前のブログで示していますので、ここではOS-9上での動作の様子を示します。
OS-9の起動直後は日付・時刻の設定がされていませんので(バッテリーが上がっている)、date t コマンドを実行するとデタラメな日付・時刻が表示されています。
ここでRtcWr2コマンドを実行して日付・時刻を設定します。このコマンドはRTCモジュールに設定すると同時にOS-9にも設定しますので、再度date tを実行すると設定した日付・時刻になっていることが確認できます。
(2000年問題に対処していないので2025年が1925年になっているのには笑えますが、実用上の不便はありません。)
 

RtcWr2の動作画面


一旦電源を落としてから再度起動すると、やはり日付・時刻がデタラメになっていますが、RTCモジュールはバッテリーバックアップされていますので、設定した値が保存されています。ここでRtcSet2コマンドを実行すると、RTCモジュールに保存されている日付・時刻がOS-9に設定されます。date tでそれが確認できます。



RtcSet2の動作画面


ということで、OS-9のStartupファイルにRtcSet2コマンドを書き込んでおけば、起動時にRTCモジュールの値でOS-9の日付・時刻を設定してくれます。

なお、RtcRd2コマンドは動作画面を示しませんが、RTCモジュールに設定された日付・時刻を読み出して表示するものです。


(2)ExCOM用通信ソフト


COMポートとして追加した6850ACIA(63C50を実装)用の通信ソフトですが、以前のブログにも書きましたが、何故かFT245、8251A、6850の3つの通信経路を一本のソフトで切り替えて使用する方法ではうまく動作しませんでしたので、FM側のソフトをそれぞれを単独のソフトとしFT245DRF(FT245用), FT245DRE(6850のExCOM用)の2本を作成しました。Windows側のソフトはFM-7/77/11に共通のft245drv.exeです。

FT245DRFは従来のソフトと同様ですので、ここではFT245DREの動作画面を示します。


FM側のFT245DREの動作画面(読み込み)



FM側のFT245DREの動作画面(書き込み)



Windows側のft245drv.exeの動作画面


なお、転送速度ですが、FT245カード使用では2Dディスクで1分弱、ExCOMでは5分ほどでしたので、ディスクイメージの転送に使用するのは実用的ではありませんが、このExCOMは以前からFlex9, F-Basic, OS-9, CP/Mで使用しているWindows上の仮想ドライブとのインターフェースに使用したいという目的のために実装したものです。
この場合には、ファイルの送受信が基本になりますので、ExCOMの38400baudでも十分に実用になることを経験しています。
ExCOMを使用したWindows上の仮想ドライブのドライブルーチンができましたら、改めて報告させていただきます。


2025年7月10日木曜日

FM-11用のFT245カードのドライバ作成に四苦八苦

 FM-11用のFT245カードがようやく完成しました

ミスを重ねて作り直していましたが、ようやく3作目で完成しました。

これが完成したFM-11用FT245カードです。


FT245カード

右側が本体の後方側で、コネクタの端から筐体の端までの間隔がそれほど大きくないので、基板上のUSBコネクタの位置を最初に作成したものよりもかなり下げてあります。

回路図を示します。

FT245 R3.3


基本的にFM-7系のFT245カードと同じですが、IOS信号の生成部を追加し、*EB信号を反転させています。


ハードはこれで良いとして問題はドライバソフトです。

FM-11AD2には2HDと2Dの2種のドライブが接続されていて、通信経路もこのFT245カードの他に内蔵COMポート(8251A)があり、さらに拡張COMポート(68B50)も追加しました。
そして、従来からFM-7でも使用しているFT245カードですので、FM-11だけでなくFM-7/77でも共通に使用できるドライバにしたいと考えました。

四苦八苦した挙句、これら全てに対応するドライバを作成してみました。

Windows側のft245drv.exeの画面です。
ディスク種別、OSの種類、通信経路が選択できるようになっています。
また、FM-7用では転送はDAT形式のみが可能でしたが、D77、DSK形式でもFM側に転送できるように拡張しました。


ft245drv.exe


FM側のソフトのメニュー画面です。
従来のドライブ、ディスク種別の選択の他に通信経路と動作機器を選択できるようになっています。


FM側のドライバのメニュー

ところが転送速度を確認してみると、FT245使用では2Dの転送が両方向とも1分弱、2HDではFM-11->Winでは2分弱と想定通りであるのに対してWin->FM-11では10分以上と極端に遅いのです。

SNDCH、RCVCHルーチンは今まで使用してきた実績のあるもので間違いがあるはずはありません。割り込み関係をいじってみたり、Windows側との間をハンドシェークにしてみたりとあれこれ試みても変わりません、、、

ハードに問題があるのかと疑って、前々回のブログで報告したFM-7用のカードをFM-11で使用するためのアダプタを使用して、FT245モジュール使用の初代を始め数枚のカードで試してみたり、配置アドレスを変更してみたりしましたが結果は同様でしたので、ハードの問題ではないようです。

現在のところ、3種の通信経路用のSNDCH、RCVCHルーチンを切り替えて使用しているのですが、その箇所が関係していることは分かっています。

切り替えルーチンは以下のようなものです。

 


動作時に希望の通信経路を選択するとIOPORTの値が0,1,2と切り替わり、それに応じてSETADRルーチンが実行されることでアクティブになるSNDCH、RCVCHが設定されます。 

このルーチンも今までに使用してきたものですので、このためにFMへの転送時間が大幅に増えることは全く納得できないのですが、これを外して直接呼び出すと、例えば2Dの転送で1分弱と正常な転送時間になるのですが、このルーチンを通すと4分30秒近くかかってしまうのです。

ということで、一本のドライバでまかなうことはできず、3種の通信経路毎に専用のドライバを用意しなければならないようですので、FT245用、内蔵COM0用、拡張ExCOM用とそれぞれのドライバを作成してみましたが、内蔵COM0と拡張ExCOM使用の場合は2DのFM->Winの転送に5分程度、Win->FMの転送ではその数倍の時間がかかるので実用的ではありませんでした。

結局、FT245専用のドライバと3種対応のドライバの2種のみとし、通常使用ではFT245専用のものを使用することとし、どうしても必要な場合にはCOM0やExCOMを選択できる3種対応のドライバを使用するというように使い分けることにしました。

さらに原因追及の必要があるとは思いますが、とりあえずF-Basic関係は一旦終了ということにして、OS-9のドライバの作成に取り掛かりたいと思います。

作成したWindows側のft245drv.exeとFM側のメニューソフトFT245FTと機械語サブルーチンFTDRV14FなどをOneDriveに上げておきます。これらのソフトはFM-11のみでなくFM-7や77でもそのまま使用できます。また、転送に使用するDATファイル形式とD77、DSKファイル形式間の変換ソフトも同梱してあります。