2026年2月18日水曜日

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

 最近修正したソフトなどをいくつか紹介します


[1]クロスアセンブラ

以前公開した6809用のクロスアセンブラですが、使っていただいた方からcmpa #'z+1のアセンブル結果がCMPA #'Z+1のバイナリになってしまうというご指摘を受けました。

私はソースを常に大文字で書いていたので全く気付いていませんでした。ソースが小文字の場合は大文字に変換するようにプログラムしてあったのですが、大文字にすべきでない箇所も変換してしまっていました。

ということで、それを修正したクロスアセンブラ4種を公開します。他のMPU用のものにも同様の修正を加えました。

(1)6809AsmWin.exe Ver2.5
(2)6800AsmWin.exe Ver2.3
(3)6801AsmWin.exe Ver2.0
(4)6303AsmWin.exe Ver2.0

例として6809AsmWin.exeの動作画面を示します


6809AsmWin.exe


[2]FT-245カード他を使用する通信ソフト

FM-7, FM77, FM-11機に装着されたFT245通信カード、オプションまたは標準の8251A使用のCOMカード、68B50使用の拡張COMカードの3通信経路を使用して、FM機とWindows機との間で2D, 2DD, 2HDディスクイメージを転送するソフトです。

(1)Windows側

            ft245drv.exe Ver2.5

以前のものに通信経路を追加しただけでなく、対応機種にFM-11を加え、扱えるディスクにも2HDを追加しました。

動作画面です

Windows機上でのft245drv.exe

(2)FM-7/77/11側

   F-Basicでのメインプログラムと機械語サブルーチンのセットです

        1.FT245F, FTDRV22F    FT-245カード用です
        2.FT245C, FTDRV22C    オプションカードまたは標準のCOM(8251A使用) 用です       
        3.FT245E, FTDRV22E    68B50使用のExCOMカード用です

最初は上記3つの通信経路用を一つのプログラムにまとめて、動作中に切り替えることができるように作成したのですが、それぞれ専用のプログラムの方が使い勝手が良いということで別々のプログラムも作成しました。

  4.FT245A, FTDRV22A 上記1~3を統一したプログラムです

例としてFT245Aの動作画面を示します


FM機上でのFM245A

なお、転送速度ですが

FM機からWindows機への読み込みでは、およその値で
 2Dでは1が1分、2,3が5分、2HDでは1が2分、2,3が13分20秒
Windows機からFM機への書き込みでは、およその値で
 2Dでは1が1分、2,3が5分、2HDでは1が11分30秒、2,3が13分20秒
で、現在のバージョンでは2HDの書き込みに時間がかかりすぎています。


(3)動作確認した機種、F-BASICのバージョン、メディア

        ・FM-7、FM77AV2、FM77AV40SX
        ・F-BASIC V3.0、V3.3、V3.4
        ・2D、2DD、2HDディスク

以上紹介したソフトをOneDriveに置いておきますので、使用した結果、不都合が生じても私は責任は負わないということを承知していただいたうえで自由にご使用ください。


2026年2月1日日曜日

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

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

先日報告しましたFM-11用PS/2キーボード変換器ですが、https://www.blogger.com/blog/post/edit/1662007451717538019/3111393154708868825

オートリピート機能も実現できたということでしばらく使用してみました。回路的には問題がなく、また、プログラムの方もGRAPHキーやカナキーなどの特殊キーの入力に純正のキーボードとの多少の違いがあったりしますが頻繁に使用するものでもなく、その他特に大きな不具合もないので、一応、これで完成ということにしようと思います。

純正キーボードとの機能の違いですが、PS/2キーボードにはINSモードを示すLEDがありませんので、当然、本体からのINSLEDON信号は無視されています。


変換器が完成


基板が届きましたので早速組み立ててみました。

基板と完成品

FM77AV用変換器と同様、タカチのケースSW-50にちょうど収まるサイズにしてありますが、試しに同一サイズの有り合わせのケースに収めてみたらFM-11側のケーブル用のコネクタがはみ出てしまいました。

ケースに収めてみた


8ピンのピンヘッダとコネクタを使わなければケースに収まるはずということで、直接ケーブルを基板にハンダ付けしたものも作ってみました。

ケーブルを直結


回路図です


FM77AV用PS/2キーボード変換器とほとんど同じですが、CLOCK信号を追加したのとKRESET信号をATtiny85のRESET端子に直結している点が異なります。本体へは8芯ケーブルで接続します。

回路図

基板を起こしましたが、手配線でも十分作成できるほどの簡単な回路です。


プログラムリストです


メインプログラムcnvps2fm.cを示します。

【2月12日修正】先頭のコメント中の一部を修正しました。
(PORTBのoutputにbit3を追加、special keys中のBREAKキーの機能の訂正)


この他にヘッダファイルcnvps2fm.hとスキャンコード変換テーブルscancodes_fm11.hがあればビルドできます。私は以前のFM77AV用変換器のコードを変更しながら作成しましたので、MPLAB X IDE (v6.25) 上の XC8 (v3.10) でビルドしました。


最後に


以上の3つのソースファイルとビルドで作成されたHEXファイルをOneDriveに上げておきますので、そんなことはないとは思いますが商用使用は禁止という条件を守っていただく限り自由に使用してくださって結構です。
HEXファイルをATtiny85に書き込んでFuse bitを正しく設定すれば動作します。ただし、所詮アマチュアの製作品ですので使用した結果、FM-11本体やキーボードに不具合が生じたとしても責任は負いませんのであらかじめご承知おきください。


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日訂正】私の勘違いがありましたのでプログラムを修正しました。その結果、オートリピートが実現できました。

最後に

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