2025年3月22日土曜日

FM-7/8用のFDドライブ用接続アダプタを作ってみました

FM-7/8用のFDドライブ用接続アダプタMB22603相当品を作ってみました

先日、某オークションでLogitecのLFD-550-FMというFM用FDドライブ装置に内蔵されているコントロール基板を入手しましたので、これを使用するために富士通のMB22603の回路を調べて同様なものを製作してみたという報告です。

製作した2種のアダプタがこれです。

左:FM-7の32Pスロット用、右:FM-7/8の50Pコネクタ用

左がFM-7の32Pスロット用、右がFM-7/8の50P拡張コネクタ用です。

入手したコントロール基板LFD-550-FMです。最初に入手したものは不動品だったので、結局2枚入手してしまいました。

左:不動品、右:動作品


経過

私自身はFM-7用に自作のFDCカードを製作して、それにPC用のドライブやGOTEKなどを接続して使用しておりますので、特に必要はなかったのでしたが、興味本位で落札してみたのが運の尽きで、かなりの時間を費やすことになってしまいました。。。

このコントロール基板に手持ちの5インチ2Dドライブを接続して動かしてみようと考えましたが、動作させるためにはFM-7とコントロール基板の間をつなぐアダプタが必要です。オークションに時々出品されるようですが結構高額です。ということで、自作できないかと考えました。

自作の手掛かりになったのは、はせりん様のブログ「Retro PC Gallery (http://haserin09.la.coocan.jp/)」中の「緊急特集:MB22603の秘密」という記事です。

はせりん様はIRQ関係の調査とアダプタの対象機器の制限の原因追及をされているのですが、そのために回路の一部を解析されていましたので、それを元にさせていただいて何とか回路をでっち上げ、プリント基板を発注して製作してみましたが、もちろん動作しませんでした。しかしこれだけではでっち上げのアダプタがダメなのか、それともコントロール基板がダメなのかが分かりません。

そんな時、知人がMB22603などのアダプタを3台も所有されていることを知りましたので、それらをお借りして不動の原因を追究することにしました。

まず入手したコントロール基板が正常に動作するかを確かめるために、お借りしたMB22603を使用してみましたが、残念ながら動作しませんでしたので、不動の原因はコントロール基板にあることが確認できました。

そんな時に、某オークションで再び同じ基板が出品されていましたので、再度入手してみましたら、これはMB22603など3種のアダプタのいずれでも正常に動作しました。

アダプタの製作

コントロール基板が正常に動作することが確認できましたので、あとはアダプタを製作すれば良いということで、お借りしているMB22603の基板の配線を調べてみました。

このアダプタではディレイラインを使用しているのですが、それははせりん様によりますと、FDC(フロッピィディスクコントローラ)としてMB8876やMB8877が使われている外付けドライブ装置に対応するためだそうです。入手した基板ではMB8876Aが使われているので、ディレイは必要がないので省略できるだろうと考えました。実際に回路を追ってみると、ジャンパ線でディレイラインをバイパスしているように見えました。

ということで、ディレイを省略した回路を仕上げてプリント基板を発注し、届いた基板を組み上げてみました。ところが、FM-7にセットしてみましたがまたも動作しません。

回路を見直してみましたが間違っているところはなさそうです。困ってしまって、お借りしているMB22603の基板を再度眺めていたところ、50P拡張コネクタのEXTDET(22ピン)がGNDに落とされているのを見つけました。今まで色々な基板を製作してきましたが、EXTDETは無接続で動作していましたので、多分関係はないだろうとは思いましたが、念のためにGNDに落としてみました。

結果ですが、何と動作するようになりました。ということで、32Pスロット用の方も同様にEXTDETをGNDに接続しました。

製作した回路


製作した回路を示します。EXTDETの修正後のものです。

FM-7/8 50P拡張コネクタ用


FM-7 32Pスロット用


正常に動作しています

動作している様子を示します。これは32Pスロット版の場合です。左下の5インチドライブのアクセスランプが点灯しているのが見えます。

コントロール基板がMB8876Aを使用しているからでしょうか、ディレイラインを使用していない回路ですが、FM-7本体のクロックを落とさなくても2MHzで動作しています。


32Pスロット版を使用中

以上、たまたま入手してみたコントロール基板を動作させるためにMB22603相当のアダプタを作ってみたという報告でした。(特に使う予定もないのに作ってしまった...)

回路の内容が良く分かっていない私が何とか回路を作成できたのは、貴重な情報を公開してくださっているはせりん様と、MB22603などを貸してくださった知人(Y.A.様)のお陰です。お二人に感謝いたします。


余分な基板がありますので


もしFM-7やFM-8用の外付けFDドライブを持っているがアダプタが無いので使用できないと困っていて、ご自分でアダプタを製作してみたいという方がおられましたら、余分の基板が数枚ありますので、ご希望の方は50P用か32P用かを明記してメールでご連絡ください。郵送料のみでお送りできます。
(部品はほとんどが普通に入手できますので50Pコネクタ用は基板のみですが、32Pスロット用に必要な富士通製のコネクタだけはまず入手できませんので、知人に頂いた取り外し品になりますが32Pコネクタもお付けします。ですので、50Pの方は定形郵便110円、32Pの方はクリックポストで185円となります。)

蛇足ですが、以前無料で(郵送料も当方負担で)基板をお送りした方の中で、到着の連絡を頂けなくて、もしかしたら郵便事故かとやきもきしたことがありました。結局、連絡は頂けなかったのですが、そのような”常識のない”方にはお送りできませんので、その点を承知おきください。(本当はこんなことは書きたくないのですが、2度ほどありましたので...)

2025年3月10日月曜日

FM-7/77用仮想ドライブ構築ソフトのFT245高速カード対応版

FM-7/77用仮想ドライブ構築ソフトをFT245高速カード対応させました

===昨年から取り組んでいるいくつかのハードやソフトの作成がいずれもうまく行っていない状態なので、気分転換を兼ねて表題のことに取り組んでみました===

以前からFM-7やFM77AV40SXを使用する際にはWindows機上で仮想ドライブを構築して使用してきましたが、その際にはシリアル通信(RS232C)を使用していました。(CP/M版のみFT245カードを使用)

それについてはその都度公開してきました。

・「拡張ROM/RAMディスクボードと仮想ドライブ用のF-BASICドライバ」(2022年5月18日)

・「F-BASIC用のWindows版仮想ドライブ構築ソフトの改良」(2022年2月12日)

・「FM-7/77用の改良版I/O拡張基板用のF-BASICドライバを作成」(2021年7月8日)

・「FM-7用 60K CP/M-80 の仮想ドライブ版が完成」(2021年2月23日)

・「CP/M用の仮想ドライブの構築ソフト(その2)」(2020年5月2日)

・「CP/M用の仮想ドライブの構築ソフト」(2020年4月29日)

・「FM-7/77のF-BASIC用の仮想ドライブ構築ソフトが完成」(2019年9月25日)

・「FM77用の拡張I/Oボード、ROM/RAMディスクボードのプリント基板化が完了」(2019年8月26日)

・「FM77用の拡張IOボード、ROM/RAMディスクボード」(2019年6月12日)


しかし、現在はRS232C通信を使用することはほとんどなく、もっぱら「思いつきハードでソフトに七転八倒(https://vehwk3yxv7hw.blog.fc2.com/blog-category-2.html)」の秋田修二さんが作成されたFT245高速通信カードを使用させていただいています。

ということで、ここで全ての仮想ドライブ構築ソフトをFT245カード対応に切り替えることにしました。(もちろん、従来通りRS232Cも使えます。)

今回作成したのは以下のものです。

動作確認した機器:FM-7、FM77AV2、FM77AV40SX
対応DOS:F-Basic、Flex9

使用したFT245カードは画像のものです。

使用したFT245カード

これはVer2でTXE端子の制御機能が追加されており、スイッチで有効・無効を切り替えることができるものですが、この機能がないVer1でも同様に使用できます。


全体の構成図

詳解するソフトの機能を大まかな図で示します


機能の説明

図に示しましたように、Windows側では使用するDOSに合わせて仮想ディスク構築ソフト(FbasDrvWin.exe, FlexDrvWin.exe, Os9DrvWin.exe, CpmDrvWin.exe)のいずれかを実行します。使用する通信カードや通信ポートはiniファイルで指定したものが選択されますが、起動後に変更できます。

FM側のドライバですが、Flex9ではWINDRVの起動時のオプションでFT245カードとRS232Cカードに対応させていますが、F-Basicでは裏RAMに常駐させていてその常駐部を少なくするために、FT245カード用のWINDRV(もちろんFlex9用とは別ソフトです)とRS232C用のWINDRVX7という別々のソフトになっていますので、使用する通信カードに合わせて選択します。FM-7やFM77AV2用のオプションRS232Cカードは38400baudまで動作しますが、FM77AV40SXなどに内蔵されているRS232Cは19200baudまでです。


動作している様子

F-Basic (Ver3.0)の場合です。
FM77AV2でFT245カードを使用しています。

FbasDrvWin.exeの場合

Flex9の場合です。
FM77AV40SXの内蔵RS232Cを使用しています。

Flex9DrvWin.exeの場合

この画像中のDrive2や3のボックスにディスクイメージファイルをdrag&dropするとその内容が左下のリストボックス中に表示され、読み出し、書き込み、削除、名称変更ができますので、Windows機中のファイルをイメージファイルに書き込んだり、読み出したりできて、そのままFM機で扱えます。
右のボックス中のRで始まっているリストがFMのfilesコマンド(F-Basic)やCATコマンド(Flex9)でドライブ2と3を連続して読んだ時の様子で、仮想ドライブのリードしているドライブ、トラック、セクタを表しています。もちろんFM側ではそれぞれのドライブのファイル一覧が表示されています。

Windows側のFbasDrvWin.exeは以前から公開しているものですが、使用しているうちに必要になった機能として、有効なポートを検出する「ポートスキャン」、ポートの種類を選択する「Port Select」ボタンを追加した最新のVer1.53です。またFlex用も同様に機能追加してあり、FlexDrvWin.exeはVer1.73です。


FM機とWindows機との間のファイル交換の手段として

このファイル交換の手段としては、従来からRS232Cによるものがありますが、使いやすさや速度面での問題がありました。それを改善するものとしてFT245カードを使用する方法があり、ディスクイメージファイル全体の転送や単一ファイルの転送用のソフトを作成してきました。速度的には大幅に改善されたとはいえ、それでも、毎回転送ソフトを起動してファイル操作を行う必要がありました。

今回、仮想ドライブ構築ソフトをFT245カードに対応させたことで、普通にディスクを読み書きする操作の延長でそのままWindows上のファイルを処理することができるようになりました。
もちろん、FT245カードがない場合でもその代わりにRS232Cを使うことで、全く同様な操作ができます。

今回はとりあえずですが、F-Basic V3.0用とFlex9用の2種のみ公開します。ただしF-Basic用はVer3.0のみに対応しており、また、Flex9用ですが私は8インチのGeneral版から移植したものを使用していますので、もしかしたら富士通製のFlex9には使えないかもしれません。

動作に必要なソフト一式をOneDriveに公開しますので、使用した結果に対して私は責任を負わないことを了解していただいたうえで自由にご利用ください。


2024年12月30日月曜日

「FPGAボードで6809を作ってNitros9を走らせてみました」の基板化

 「FPGAボードで6809を作ってNitros9を走らせてみました」の基板を作成しました

2022年6月22日に上記のタイトルでアップしたCycloneⅡ(EP2C5T)搭載のFPGAボードの工作の際には、有り合わせの基板に手配線で仕上げました。それ以降、折に触れ使用してきましたが、いかにもそのやっつけ感が気になっていました。また、FPGAに書き込むプログラムを変えればZ80としても6809としても動作するのはすごいことなのですが、切り替えて使用するためにはその都度FPGAのプログラムを書き換えるという手間がかかります。

また、以前も参考にさせていただいたブログ「石原 博の覚書(https://blog.goo.ne.jp/ishihara-h/e/ea09920e03694aab5227db6f08fde76e)」を見ていて、プリント基板を作成できればZ80、6809のそれぞれ専用のボードが作れるなと思っていました。

そんな時に、倍ぐらいに価格が上がってしまっていたFPGAボードがAliExpressで以前のような価格で購入できるショップを見つけたので2枚購入し、プリント基板も作成することで、Z80、6809それぞれの専用ボードとすることにしました。

参考にしたオリジナルの記事

https://www.retrobrewcomputers.org/doku.php?id=boards:sbc:multicomp:cycloneii-c:start

の中にはプリント基板の回路等のデータがあることは知っていたのですが、それはEagleによるもので、以前、私が常用しているKiCadで読み込んで処理しようとしてうまくできずあきらめてしまっていたので、今回はEagleの無料版をインストールしてgerberデータを作成してみました。使い慣れたKiCadによるgerberデータではないので、正しく作られているのかどうか不安でしたが、そのまま発注してみました。

出来上がった基板が下の画像のものです。


基板とFPGAボード

かなりの高密度で、シルク印刷がパターンの穴等によって読めなくなっている箇所も複数あり、迷うところもありましたがオリジナルの記事等を参考にして何とか実装してみました。

それが下の画像の2枚です。


製作した基板2枚

私は基本、シリアル入力を使用するのですが、最初に作成した左の基板はうまく動かなかったので、PS/2キーボード入力、VGA出力に加えてRS-232Cコネクタまで実装してしまいました。動作させるために必要な最小限のものだけを実装したのが右の基板です。また、オリジナルで使用されているSDカードモジュールと同じものが入手できなかったので手持ちのもので間に合わせることになりましたが、モジュールを瞬間接着剤で固定して画像のように配線することで(多少見苦しいですが)無事に動作させることができました。

左下の6ピンのシリアル端子の上に乗っているのは、手持ちのUSB-シリアル変換ケーブルの端子配置に変換するためのアダプタで、最初に作成した基板が動作しなかった(ように見えた)のは、この配線を間違えていたためというお粗末な話でした。


参考までに、作成を通して気づいた点を列記しておきます。

1.gerberデータはオリジナルのデータからEagleで作成できますが、SDカードモジュール部のパターンと合致するモジュールは多分入手困難です。

2.シリアルの6ピン端子の配列は一般のUSB-シリアル変換ケーブルのピン配列と合致しない可能性があります。

3.512KBのSRAMのアクセススピードについてですが、上の画像のように、55nsのAS6C4008-55PCNだけでなく、70nsのHM628512CLP-7でも使用できました。

4.Z-80用としては mc-2g-1024.zip 中の14-Multicompを使用しましたが、何故かTTY版は正常に動作しませんでした。動作するVGA版をインストールしましたが、基板上のVDUFFD0端子をショートすることでシリアル入出力に切り替えることができました。

5.6809用としては multicomp09_nov2016.zip 中のものを使用しました。

6.FPGAボード上のROMに書き込むための手順については、ちかてつ.comさんの「Amazonの激安基板(CycloneⅡ)ではじめるFPGA開発(JICプログラミング編)(https://tikatetu.com/electronics/amazon-fpga-jic/)」を参考にさせていただきました。ありがとうございます。

今取り組んでいるいくつかのテーマがいずれもうまく進まず、いささか倦んでしまっていたのですが、ちょうど良い気分転換になりました。


2024年11月15日金曜日

必要に迫られて自作したツールソフト(クロスアセンブラ)の紹介(第3回)

 必要に迫られて自作したツールソフトのうちのクロスアセンブラを手直ししました

【12月24日追記】12月22日のコメントでご指摘頂いた点を修正した版を公開します。末尾のリンク先からダウンロードしてください。

4月25日のブログ「必要に迫られて自作したアセンブラ等のツールソフトの紹介(第2回)」で紹介しましたソフトのうちのクロスアセンブラのバグを修正しましたので、公開します。

修正したバグはFCB疑似命令のオペランドの解釈部です。ごく普通の書き方をしていればよいのですが、時に、式の解釈を間違えたりする場合があったのです。

例えば、10月10日のブログ「自作の6809SBCにOS-9を移植する試み(その1 SBCの製作)」にも書きましたように、assist09をアセンブルした際に誤変換が発生したのですが、それはFCBのオペランドとして「'A」と「'A'」の両方の書式に対応するように修正したために発生したバグでした。

FCB疑似命令の解釈ルーチンは6809用、6800用、6801用、6303用の全てのクロスアセンブラに共通ですので、この際、まとめて修正することにしました。

この解釈ルーチンは、最初は単純な書式のみに対応したものを作成し、必要に応じて徐々に拡張してきたものでしたが、ちょっと複雑な形のオペランドはどうしても式として解釈する必要があります。現在のものの拡張では括弧を含めた式にも対応させるのは無理と感じましたので、思い切って全面的に書き換えることとしました。

以前、ちょっとした電卓プログラム的なものを作成したことがありましたので、それを手直しして使うことにしました。式中に「$AB」のような16進数や「’C」のような文字コードが入っても大丈夫で、もちろん括弧も使えます。


修正したクロスアセンブラによる結果

6303AsmWin.exeによるアセンブル中の画面を示します。
FCB疑似命令の処理ルーチンは他のアセンブラ全てに共通ですので、全く同じ結果になります。

6303AsmWin.exeでアセンブル


テストデータとして使用したのは下記のようなコードです。

テストデータ



アセンブル結果です。

6303AsmWinによる結果


0014行はFCBのみでオペランドがありませんので当然、エラーが出ています。
その他の行では、「’A’」や「’A」のような書き方が混在していても正しく変換されています。
下から2行目はassist09からの引用ですが、「',」という書き方でも正しく変換されていますので、それを最下行のようにあえて「','」のように書き換える必要がありません。
注意点ですが、FCBのオペランドですので計算結果が$FFを超えた場合の上位桁は無視されます。

ちなみにアークピットさんのX6801では以下のような結果になりました。

X6801による結果


計算結果のオーバーフローに対してはちゃんとwarningが出ています。

書式として「'A'」のように書くことになっていますので、「'A」のような書き方では誤変換してしまうのは当然なのですが、エラーメッセージが出ないので注意が必要です。


今までは6303用や6801用のクロスアセンブラは公開していなかったのですが、先日LILBUGをアセンブルしてみて、それなりに使えることが分かりましたので、公開することにします。修正した4つのクロスアセンブラ(6809AsmWin.exe, 6800AsmWin.exe, 6801AsmWin.exe, 6303AsmWin.exe)をOneDriveに置いておきますので、使用した結果については自己責任ということを承知していただいたうえで、自由にご使用ください。

【12月24日追記】クロスアセンブラの12月24日修正版をここに置きました。


2024年11月8日金曜日

HD63C03YPを使用したシングルボードマイコンの製作

 HD63C03YPを使用したシングルボードマイコンを製作してみました

今年の2月頃にブログ「居酒屋ガレージ日記」の「行商(ジャンク品頒布)」のコーナーで、64ピンのHD63C03YPを6個もソケット付きで分けていただきました。ありがとうございました。

今までに「電脳伝説」のVintagechipsさんの6303SBCは製作したことがあったのですが、64ピンの6303は40ピンのものと何が違うのだろうという興味もあって、分けていただいたのを契機に製作してみることにしました。

データシートを読んでも、モード切り替えなど理解できていない点があったのですが、ネットの記事を参考にしたりしながらなんとか回路をでっちあげて基板を作成しました。

これが製作したHD63C03YPマイコンです。

HD63C03YPマイコン

その回路図を示します。

HD63C03YP R1.1


この回路図は、現在の基板のミスの修正と多少の変更を加えたものです。
また、4053Bによるポートの切り替え部はモード設定のつもりだったのですが、どうも不要だったようです。ということで、最小でMPU、ROM、RAMと1個のゲートICのみで構成できることになります。
メモリマップは、64KBのうちの下位32KBがRAM、上位32KBがROMで、必要なプログラムはROMに入れて使用するという前提です。(とりあえずは最上位の2KBにモニターを入れます。)

LILBUGをインストール

回路はできても問題はソフトです。まず、モニタープログラムが必要ですが、ハードが正常に動作するかが分からない状態でいきなり自作のモニターを入れるというわけにもいきませんので、とりあえず、回路の動作確認のためにLILBUGを入れてみることにしました。
(いずれは6303SBCに自作のモニターを入れたように、これにも自作のモニターを入れて操作性を統一するつもりです。)

LILBUGの英文マニュアルはネットで得られたのですが、ソースは見つからなかったので6303SBCを製作したときのソースを使わせていただきました。

他の方々はアークピットさんのクロスアセンブラX6801を使うことが多いようですが、私は以前作成してあったWindows上で動作する自作のクロスアセンブラ6303AsmWin.exeを使いました。残念ながらIF文には対応していないので、その部分は決め打ちする形に変更しましたが、他は変更せずにアセンブルしROMの27C256に焼いて装着しました。

最初は回路図のようにクリスタルとして最高速の12MHzを使用していましたが、ボーレートが適切な値にならないので9.8MHzに交換して19200baudでTeraTermと通信しています。
下図はダンプコマンドの実行例ですが、もちろん、書き込みも正常に行えました。


LILBUGが動作

無事にLILBUGが正常に動作したことから、ハードが正常に動作することが確認できましたので、次は6303SBCの時と同様に、自作の6802用モニターを改造してインストールする予定です。

終わりに

現在のところ、40ピンの6303との違いとして分かったことですが、アドレスラインとデータラインが独立していること、動作モードが一つしかないらしいこと、内部RAMはソフトの設定で無効にできるということぐらいです。

また、ちょっとした不具合ですが、パワーオンリセットが効きませんので、電源ON後にリセットボタンを押す必要があります。

以上、HD63C03YPを使用したマイコンを作ってみたという報告でした。

改めて、MPUとソケットを分けていただいた「居酒屋ガレージ日記」さんに感謝いたします。


2024年10月18日金曜日

自作の6809SBCにOS-9を移植する試み(その3 とりあえずROM化に成功)

 とりあえずですがSBCでOS-9が動作しました

その2で報告しましたように、いくつかのモジュールを書き換えてみたり、並び順を変えたりしましたが、何をどうやっても動作しませんでした。

そこで、実際にFM-7上でOS-9Level1が動作している時のメモリ上のモジュールの状態を調べてみようと考えました。そのためにはメモリ内容をダンプするmdumpというコマンドが必要ですが、もちろん、標準コマンドにはありません。自作してもよいのですが、時間がかかりそうですので、既成のものがないかとネットも含めて探しましたが見つかりませんでした。

唯一見つけたのは、末尾に載せた参考文献1に掲載されているmdumpのソースリストです。しかし、これはかなり以前にソースを入力してアセンブルしてみたが、正常に動作しなかったというものです。今回はどうしてもこれが必要ということで、本気で取り組んでみました。本体の他に4つのルーチンが必要なのですが、その中のahexdだけが参考文献1には載っておらず、参考文献2の方に載っているのでそれを取り込んでアセンブルしました。結果、アセンブルはできたのですが、やはり正常に動作しません。ソースを調べたところ、一行抜けがあって2バイト分飛んでいます。参考文献にはmdumpの他にfdumpのソースもあるのですが、それも同様なルーチン中で同じ個所が飛んでいます。。。


参考文献の2冊


どんな処理を補うべきかを判断するのに丸3日(!)かかりましたが(当たり前ですが他の方の書かれたアセンブルリストを理解するのは本当に大変です...)、見つけました。それを補って無事に動作するmdump(とついでにfdumpも)を作成することができました。

作成したmdumpを使ってFM-7上のOS-9Level1のモジュールOS9p1の位置を確認したところ、何と元にしているROM化の記事中のアドレスと5バイトずれているではありませんか。記事ではOS9p1は$F3F3からとなっているのですが、実際には$F3EEから始まっているのです。(OS9p1は$87,$CDから始まり、サイズは$07F2バイト)


OS9p1の位置を確認


ということで、OS9p1を$F3EEからに配置し、OS9p1の直後に置くセカンドベクタと$FFF2からのベクタアドレスをすべて5バイト小さい値に変更して配置してみました。

なお、動作テストのために、前回までは10msのインターバルタイマとACIA用のクロックが生成されているかをオシロで確認していましたが、今回は、RWモジュール中にACIAの入出力ルーチンを書き込んでおいて、Windows機のTeraTermからのキー入力がそのままエコーバックするかどうかで確認できるようにしました。(ACIAの初期化ルーチンはSYSGO中に追加しました。)

結果ですが、希望通りキー入力がそのままエコーバックされてきましたので、とりあえずですが、ROM中に書き込んだOS-9のモジュールが正常に動作していることが確認できました。(三か月近くの苦労が報われました、、、)

なお、前回のその2でSCFをFM-8のものに差し替えたと書きましたが、FM-7のものに戻しても正常に動作しましたので、以降、FM-7のものを使うことにします。


これからすべきことなど

とりあえず、ACIAによる入出力ルーチンを直接書き込んで動作を確認したわけですが、OS-9の作法としては、SCFの下に来るべきACIAドライバルーチンを作成し、その下にACIA-1用とACIA-2用のデバイスディスクリプタを用意するという形になります。また、ディスクが無ければファイルの読み込み・書き出しもできないのでそのドライバも用意しなければなりません。

構想としては、以前、FM77AV40SXで常用しているLevel2でWindows機上に仮想ドライブを構築してそれをACIAを通して読み書きするというドライバを書いて使用していましたので、そのような形を考えています。そのためにACIAを2個用意してあるのでした。

ドライバ作成には時間がかかりそうですが、出来上がりましたら公開する予定です。とりあえず、ハードの方は完成ということで回路図を載せておきます。

動作確認ができたのは下記の8253を使用した回路です。

82C54バージョンの回路図


6809Pと6809EPの両方が使えるようにするためにクロック周りが複雑になっていますが、他には特に変わった部分はありません。8253ではなく8MHzをカウント可能な82C54を使用しています。そのカウンタ0をACIAのクロック生成に、カウンタ1をOS-9のインターバルタイマとして、カウンタ2をASSIST09モニタを使用する際のNMI割り込みに使用しています。

6840を使用した回路です。

63B40バージョンの回路図


回路図中のP-ROMのA14,A13に切り替えスイッチがついていますが、A14のスイッチが現在の基板からの変更点です。32KB以上のP-ROMを使用して、下図のようにOS-9システムとモニタプログラムを切り替えられるように考えています。OS-9システムは$4000~$7FFFの範囲の上位か下位のどちらかに入れ、モニタープログラムは$0000~$3FFFの範囲の上位と下位に自作モニターとASSIST09をそれぞれ入れる予定です。


P-ROM中のシステム配置

あとは、上記の回路図で基板を作り直し、I/O関係のモジュール(ACIAによる入出力ルーチンや仮想ドライブ用ルーチンなど)を作成すれば一応の完成となります。まだまだ時間がかかるかと思いますが、途中経過などをその都度報告をさせていただきます。


元にした記事 「追究特集 OS-9活用テクノロジー」(マイコンピュータNo.21)中の記事「OS-9のROM化」(P148~165)
参考文献1 「FM-7・8 OS-9Level1解析マニュアルⅠ(金井隆著)秀和システム社」
参考文献2 「OS-9/6809Level2解析マニュアル(金井隆著)秀和システム社」


2024年10月16日水曜日

自作の6809SBCにOS-9を移植する試み(その2 OS-9のモジュールを構成)

 OS-9Level1のモジュールのうち必要なものを構成しましたが...

移植しようとしているのはFM-7用のOS-9Level1です。

FM-7用のLevel1とFM77AV40用のLevel2を所有しているのですが、常用しているのはもちろんLevel2で、Level1はほとんど使用していないのでこれを移植しようと考えたわけです。

これが所有しているOS-9のLevel1とLevel2です。


OS-9L1とL2のシステムディスク

以前は、OS-9をディスクから読み込んで起動するものだと思い込んでいたので、起動プロセスのイメージがなかなかつかめなかったのですが、参考にした「OS-9をROM化する」によると、8KBのROM中にOS-9のカーネル(OS9P1,OS9P2)や必要なモジュールを書き込んでおいてOS9P1を起動するだけで、メモリ(ROM)中のモジュールを検索してシステムに登録してくれるとのことです。

OS-9の一般的な構造を下に示します。

OS-9の構造

今回のプリンタ・バッファのモジュール構成を下に示します。

モジュール構成

プリンタ・バッファとして必要なモジュールは下図のようにP-ROM中に配置されています。

モジュールの配置

必要なモジュールのうち、IOMAN,SCF,OS9P2,OS9P1は動作しているOS-9から取り出します。残りのうちのOS9P1より上のINITからIODRVまでの5つは今回用意されたもので、OS-9システムとして必ず必要なものです。OS9P1の下の5つはプリンタ・バッファとして必要なもので、今回はSBCとして最小限の動作を目標としているので不要と考えています。

この配置のうち、OS9P1の位置はFM-7でのOS9P1の配置と合わせてあり、それによって割り込みベクタの値を変えずに済むように考慮されていますので、これに倣うことにしましたが、何とこの配置に従って並べていくとOS9P1の位置が$F3F3よりも後ろになってしまうのです。その原因ですが、SCFのサイズが配置図中では$0438であるのに対して、現用のFM-7から取り出したSCFでは$0504と大きいのです。

手持ちのFM-7のOS-9Level1のバージョンは1.2でして、もしかしたら1.2以前のバージョンがあったのかもしれません。仕方がないので、モジュールを並べ替えてOS9P1の位置を合わせてROMに焼いて試してみましたがうまく行きません。

FM-8版OS-9を所有している知人にお願いしてモジュールのサイズを確認してもらったところ、FM-8版のSCFは$438バイトで記事中のものと一致しました。ということで、とりあえずこのSCFを使わせてもらうことにして上記の配置通りに並べてみました。結果ですが、やはり動作しませんでした。。。

そもそもこの記事はプリンタバッファの製作記ですので、I/Oとしてはパソコンから受け取ったデータをバッファに溜めておいてプリンタに書き出すという機能しかありません。製作したSBCは基本部分だけですのでI/Oがありません。動作しているかどうかは、CLOCKモジュールに書かれている10msのインターバルタイマが機能しているかどうかで判断しています。CLOCKモジュールが正常に動作していればカーネルまで正常に動作していると判断できます。

しかし、そのインターバルタイマが動作しているようにも見えるのですが、不安定なのです。電源を何度も入り切りしたり、リセットボタンを複数回押しているとタイマやACIAのクロックが現れたりするのです。その1に書きましたように、モニタが正常に動作することは確認済みですので、ハードに不具合はないはずです。

ということで、まだ動作しない原因は掴めていません。

その3に続きます。


2024年10月10日木曜日

自作の6809SBCにOS-9を移植する試み(その1 SBCの製作)

 OS-9を移植するための2種のSBCを作ってみましたがモニターを走らせるだけで一苦労

数年前から6809用OS-9をSBCで走らせたいと思っていましたが、考えているだけではちっとも進まないので、思い切って、まずハードの製作から始めました。

実は以前、OS-9と互換性があると言われているNitros9の資料中にSBC用のモニターのソースがありましたので、そのメモリマップに合わせて6809ボードを作成してみたのですが、残念ながらそのモニターは動作しませんでした。。。(ソースを読んでも良く分からない個所もあって、それ以上は先に進めずギブアップ。)

ということで、今回参考にしたのは「マイコンピュータ21(CQ出版社)」中の「OS-9のROM化ープリンタ・バッファを例としてー」という記事です。

この回路中の6809MPU、2個の6850ACIA、8253PIC、RAM、PROMの部分のみを取り出してSBCとしました。この構成ですと私が自作しているSBCとほとんど同じ構成ですので、ほぼI/Oマップの変更のみで作成できました。ただし、8253PICを使用したことがなかったので、使い慣れている6840PTMを使用するボードも作成しました。

下の画像が製作した2種のカードです。

左が68B40使用、右が82C54使用のもの


以前から作成してきた6802ボード、6809ボード、6802/6809デュアルボードを元にしていますので、6809と6809Eのどちらでも使用できます。OS-9Level1をROMに収めるために、ROM領域を$E100~$FFFFの8KB弱と拡げ、I/O領域を$E000~$E0FFに、RAM領域を$0000~$DFFFとなるように変更しました。
また、カウンタICとして今までは6840を使用していましたが、参考にした回路が8253を使用していましたので、8253を使用した回路も作成しました。左が6840使用の従来の回路に似た構成のもので、右が8253を使用したものですが、回路拡張のためのコネクタのスペースを確保するために128KBのRAMをSOCタイプに変更してあります。(なお、実際には6840は63B40を、6850は63B50を、8253は82C54を使用しています。)

(1)ハードの動作確認のために入れたモニターの不具合にハマる
まずハードが正常に動作するかを確認するためにROMにモニタープログラムを入れて走らせてみました。従来から使用してきている自作のモニターでは正常に動作しましたが、ASSIST09を入れてみたところ、なんとRコマンドに余計なものが表示されるという異常が生じました。
今まで普通に使用してきたASSIST09のI/Oのアドレスを変更してアセンブルし直しただけなのに不具合が生じるのは不思議で、ついにはソースを元の書籍「MC6809-MC6809Eマイクロプロセッサ プログラミング マニュアル」中のソースリストと比較することまでしてみましたが間違いはありません。
この原因を見つけるのに2週間ほど要しましたが、結局、使用している自作のクロスアセンブラのバグのために、FCB 'C,'C,0,9が$43,$43,$07,$09となってしまっていたのが原因でした。以前は正しく変換できていたのですが、'Cでも'C'でも変換できるように手直しをした際にバグが入り込んだようです。今はクロスアセンブラの修正をする時間がないので、とりあえずソースをFCB 'C,'C,00,9と変更して正しく変換されるようにしました。
結局、ハードは正常に動作していたのに、モニタの不具合で右往左往することになってしまいました...

(2)2種のカウンタICの使い方でハマる
また、2種のカウンタICの違いにも苦労させられました。
63B40を使用した今までのボードでは、通信用の63B50ACIAのクロック生成のためにシステムクロックの4倍値の8MHzを74HC161で13分周して615KHzを作り出すことで38400baudで通信していました。


74HC161による13分周回路


しかし、参考にした8253使用の回路では、ACIA用のクロックを8253で生成しているのです。同じように63B40でもクロックを生成できれば74HC161を省略できます。

ということで、82C54使用の回路では74HC161を実装せずに82C54のカウンタ0を使用してACIA用の615KHzを生成しています。(カウンタ1はOS-9用、2はASSIST09のTraceコマンド用)
ところが、63B40使用の回路では8MHzを13分周して615KHzを作り出すことができないのです。8253と比べて6840のプログラムは複雑なので、プログラムのミスかと思いあれこれと書き直してみるのですが、何をどうやってもうまく行きません。入力が2MHzだとプログラム通りの分周値が得られるのですが、8MHzだとダメです。挙句の果てには6840ユーザーマニュアル中のサンプルプログラム通りにプログラムしてみましたがやはりダメです。
どうなっているのだろうとネットで検索した結果、6840のカウンタはE入力と同期してカウントダウンしているので、Eよりも高い周波数の入力はカウントできないという書き込みを見つけました。
ということで、結局、63B40使用のボードではACIA用のクロックは従来のボードと同様74HC161で生成することになりました。

さらに、2種のカウンタICのプログラムの違いですが、8253ではコントロールワード中でカウンタ0,1,2の選択と動作モード等の設定が同時にできるので簡単に設定ができ、カウントデータのロードで下位バイトを先に、上位バイトを後に書き込むという順序を守るという注意点があるぐらいなのに対して、6840の方は2つのコントロールレジスタで3つのカウンタを制御しているために、カウンタ1と3ではまずカウンタを選択してからコントロールワードを書き込むという順序になること、そして、コントロールレジスタ1のビット0がソフトウエアリセットになっているので、0にしないと全てのカウンタが止まったままになること、さらにコントロールレジスタ2のビット0がカウンタ1と3の選択を兼ねているために、選択をする際にはカウンタ2のコントロールワードが書き換わらないようにしなければならないことなどがあるので、3つのカウンタの設定順序にも注意が必要です。
迂闊なことに、今までは3つあるカウンタの内の1つしか使用したことがなかったので、これらのことに気づくまでに何と数週間を必要としました。。。

以上のような苦労をした挙句、何とかボードが正常に動作することが確認できましたので、次はいよいよOS-9の移植ですが、実はまだ成功していません。分からないことが多すぎるためですが、現状をその2に書きます。



2024年8月2日金曜日

フロッピーエミュレータGOTEKを少しだけ使いやすくする工夫

 GOTEKのディスプレイとロータリーエンコーダを本体の外にも増設しました


私のFM77AVに内蔵してあるGOTEKには液晶ディスプレイとロータリーエンコーダを増設してあります。ソフトを切り替える場合にはディスプレイを見ながらエンコーダを操作するわけですが、私の場合、FM77AVを机の下に縦置きで設置していますので、ソフトを切り替える場合には机の下をのぞき込む必要がありましたし、ディスプレイの文字が小さいので私のような高齢者にはつらいものがありました。
この状態で2年近く使用してきましたが、流石に不便なので思い切って改善することにしました。
本体に内蔵してあるディスプレイとロータリーエンコーダを外部に引き出せば良いのでしょうが、本体はそのままで、同じものを本体から1mほど延長して増設したいと考えました。
(HxCには本体からケーブルで延長する形のものが製品として存在するので、GOTEKもそのような形で使用できればより使いやすいかもというイメージです。)

実施する前には、ロータリーエンコーダの方はデジタルスイッチ的なものだから、内蔵のエンコーダと並列に増設しても大丈夫だろうと予想していましたが、液晶ディスプレイの方は端子を見ると、SDA, SCL, VCC, GNDの4ピンなのでI2C通信のように見えます。
I2C通信だとするとスレーブ機器はそれぞれ固有のアドレスを持っているわけで、同じアドレスを持っている機器が並列に接続されている場合の動作については経験がありませんので全く分かりません。
ただ、今回の場合は本体から液晶ディスプレイへの表示データ送信が主で、ディスプレイが本体に返信するのはACKビットのみなので、何とかなるかなと甘いことを考えました。

ということで、まず全く同じ液晶ディスプレイを並列に2個接続してみたところ、両方の画面に同じものが正常に表示されましたので、これでいけるということでロータリーエンコーダも増設しました。

これが増設した状態です。
右上のケーブルが液晶ディスプレイとロータリーエンコーダに接続されています。
配線数は液晶ディスプレイが4本、ロータリーエンコーダも4本で計8本ですが、全て基板の裏面でハンダ付けしました。


右上が増設したケーブル


これがケースに格納した状態です。
左下のプリント基板上のフラットケーブルコネクタから外部に延長しています。
右の4線ケーブルはGOTEKとFDDのドライブ番号を切り替えるスイッチです。
(22年10月29日のブログ「FM77AV40SX用GOTEKのドライブ番号切り替えケーブルの製作」https://www.blogger.com/blog/post/edit/1662007451717538019/6000936869197817930
をAV1に適用したもの)

ケースに格納した状態


増設した外部コントローラです。
まだケースに収めておらずゴム足を付けただけですが、これを机上に置いて操作しています。当たり前ですが、以前と比べると格段に操作しやすくなりましたし、ディスプレイが近くに置けたので小さい文字でも見やすくなりました。(この形なら、大画面のディスプレイにも交換できそうです。)


外部コントローラ



目の前に77AVを置いておられる方には関係のない話でしょうが、私のようにスペースに余裕がなくて離れたところに設置せざるを得ない方やもう少し大きい液晶ディスプレイを使いたいと思っている方などに多少なりとも参考になれば幸いです。

また、今回の工作で、I2C機器を並列に接続しても正常に動作する場合があるという経験を得ることができたことも収穫でした。



2024年7月21日日曜日

FM77AV用CP/Mカード(Z80H 韋駄天)のメモリ周りを変更

Z80Hで使用している128KBのメモリをすべて利用する工夫をしました

未使用だった128KBメモリの残り半分を使用できるように回路を変更してみました。

これが製作した第2版の基板です。


完成したZ80H第2版



2020年12月19日のブログ「Z80カードの第4作は77AV用のZ80Hカード(韋駄天)」で報告したZ80Hカードですが、ほうめいさまによるオリジナルで使用されていた2個の32KBメモリを128KBメモリ1個に置き換えることで10x8cmのサイズに収めることができました。

しかし、そのために128KBのメモリの半分は使用されないという勿体ないことになっていました。

このカードはCP/Mを使用しない場合は64KBの拡張メモリとして使用できるように設計されています。
せっかく128KBのRAMを積んでいるのですから、これを有効活用したいところですがメモリマップを見る限り、拡張できるのは$20000~$2FFFFの64KBのみのようです。(40Pコネクタに出ているアドレスラインもA15までです。)


FM77AVのメモリマップ



ということで、128KBのメモリを有効活用するためには拡張RAM空間にバンクメモリという形で置くしかないようです。


拡張RAMの配置



実際にどのようにバンク切り替えを実現するかですが、Z80Hでは$FD64というアドレスのREAD/WRITEでZ80Hの動作を切り替えているのですが、その切り替えに使用しているLS138を利用してBANK0とBANK1を切り替えられると考えました。


バンク切り替え回路


具体的には、上記回路のようにLS74を追加すれば、その出力で128KBのメモリのA16端子を制御することで、$FD65のWRITEでBANK0、READでBANK1のように切り替えることができるはずです。
しかし、2020年12月19日のブログの画像でお判りのように、10cmx8cmの基板にICを追加する余裕はありません。そこで、DIP型のSRAMをSOP型に置き換えることで74LS74を置くスペースを確保することにしました。さらに、基板の高さが8cmではカバーとの間に余裕がなかったので高さを1mm低くして79mmにしました。

基板の設計にはKiCad、自動配線にはfreeroutingを使用しているのですが、前回の基板でもfreeroutingはかなり苦労して(!)配線してくれていましたが、今回はさらにICが増え、しかも高さも1mm低くしたためかfreeroutingによる自動配線が終了しないため、配線の混んでいる付近のIC等の配置をほんの少し移動して試してみるという作業を何度も繰り返すことでようやく配線を完了することができました。

出来上った基板を示します。追加・変更箇所は左上のLS74とSRAMだけなのですが、その他の部分も位置を細かく調整しています。


密度の高い基板


実際に切り替わっているかどうかを、Z80Hの動作確認用に用意されているTiny Monitorを書き換えて作成したテストプログラムを使用して確認してみました。

確認に使用したプログラムは下記のものです。
   
   


MMRを用いて拡張メモリの$20000~$20FFFの領域をCPU空間の$6000~$6FFFにマッピングし、そのうちの$6800からの16バイトにBANK0に$31~を、BANK1に$41~を書き込んだ後にそれぞれを読み出してみました。
その結果、簡単なテストではありますが、画像のようにそれぞれのBANKメモリに正しく書き込めて読み出せていることが確認できました。

実行結果



実際にどのような形でこのBANKメモリを活用できるかについては、これから考えることになるのですが、とりあえず、128KBのメモリをすべて使用できるようになりました。


2024年7月12日金曜日

FM77AV40用増設RAMカードの製作(その4)

 768KB容量のFM77AV40用増設RAMカードを製作してみました

【2024年9月14日訂正】下記のリンク先が間違っていましたので訂正しました。

 今までにFM77AV40用増設RAMカードとして、(1)512KBのSRAMを1個使用したもの、(2)512KBのSRAMを2個使用したもの、(3)(2)の上位256KBを無効にできるスイッチを追加したものという3種を製作してきました。

(1)https://flexonsbd.blogspot.com/2022/10/fm772040512kbram.html

(2)https://flexonsbd.blogspot.com/2023/07/fm77av401024kbram.html

(3)https://flexonsbd.blogspot.com/2024/03/fm-777rs232cft2451024kbram.html

 FM77AV40の拡張メモリ容量は最大768KBですので、512KBのSRAMを2個使用すると最上位の256KBの扱いが気になります。ただ無視されるだけならそれで良いとはいうものの、それでも勿体ないという気持ちも多少残ります。

 使用していて特に不都合はないので、それで良しとすればそれだけのことなのですが、気持ち的にすっきりしないので、いっそのこと128KBのSRAMを2個使用して、512KB+128KB+128KBで768KBの拡張RAMカードを作ってみることにしました。(秋月電子で128KBのSRAMが安かったというのもありますが、ちょっとやりすぎではありますね、、、)


製作したカードがこれです。SOPチップのハンダ付けにもだいぶ慣れてきたようです。なお、富士通の48ピンコネクタは現在ほとんど入手不可能です。ここでは知人が32ピンのコネクタ2個からニコイチで作成されたものをいただいて使用していますが、全く不都合はなく使用できています。表面にスモークのシートを貼っていただいているので、見かけも全く違和感がありません。


768KB拡張RAMカード

回路図を示します。

768KB拡張RAMカード

アドレスデコードについては前回同様GALを使用しましたが、そのプログラムを下記に示します。


GALのプログラム

OS-9LevelIIのmfreeコマンドで容量を確認しました。最上位の8KBが削られているのは今までのRAMカードと同様です。


容量を確認

これでFM77AV40の拡張RAMカードについては最終形にできそうです。


2024年4月25日木曜日

必要に迫られて自作したアセンブラ等のツールソフトの紹介(第2回)

 必要に迫られて自作したアセンブラ等のツールソフトの紹介(第2回)です


【11月15日追記】クロスアセンブラ(6809用、6800用)の修正版を11月15日のブログ「必要に迫られて自作したツールソフト(クロスアセンブラ)の紹介(第3回)」にアップしましたので、そちらの方を参照ください。また、6801用、6303用も同時に公開しました。


【5月23日追記】コメントでご指摘いただいた点を改善した6809AsmWin.exeと6800AsmWin.exeを公開しました。末尾を参照ください。


【4月30日追記】コメントでご指摘いただいた点を改善中です。かなり大幅に書き換えましたので、他の箇所でバグが発生していないかチェック中です。チェックが済みましたら改めて、6809AsmWin.exeと6800AsmWin.exeを公開する予定です。


2021年9月1日のブログ「必要に迫られて自作したアセンブラ等のツールソフトの紹介」https://www.blogger.com/blog/post/edit/1662007451717538019/137356729684879777

で私が日常使用しているいくつかの自作ソフトを紹介して公開しましたが、その後、必要に応じて修正を重ねてきましたので、ここで改めて最新のバージョンを紹介することにしました。

紹介するものはほぼ前回と同じです。

(1)クロスアセンブラ

 ・6809クロスアセンブラ 6809AsmWin.exe  

 ・6800クロスアセンブラ 6800AsmWin.exe 

クロスアセンブラの主な修正点はFCB疑似命令のオペランド処理の改善です。

「'A',-'B'」や「'A,-'B」のような両書式に対応しました。また、カンマ「,」やスペース「 」もそのまま「','」や「',」の形で使用できます。ただし、文末にカンマやスペースが来る場合は誤変換が生じる場合がありますので、「','」のように閉じの「'」をつける必要があります。


(2)クロス逆アセンブラ

 ・6809クロス逆アセンブラ 6809DasmWin.exe

 ・6800クロス逆アセンブラ 6800DasmWin.exe

逆アセンブラの修正点は、データ部をスキップさせる場合の範囲指定処理の改善です。


(3)転送ツール

 転送ツールとして良く使用するのは仮想ドライブ構築ソフトです。それぞれのDOS(?)に合わせて4種類制作しています。

 ・Flex9用のFlexDrvWin.exe

 ・OS-9用のOS9DrvWin.exe

 ・F-BASIC3.0用のFBasDrvWin.exe

 ・CP/M-80用のCpmDrvWin.exe

主な修正点は、扱えるファイル書式を.D77、.DSKに加えて、各セクタの先頭に16バイトのセクタデータを付加した.DAT形式に対応したことと、パソコンとの通信にRS232Cに加えてFT245高速通信カードに対応したことです。


(4)ツールソフト

 ・CnvTxtTl1Src.exe

  Windows機で作成したTL/1やGAMEのプログラムをTL/1形式やGAME形式に変換するソフト

 ・CvtMotHexBin.exe

  バイナリファイルをBin, Hex, Mot形式に変換するソフト

 ・CvtDskD77.exe

  フロッピィディスクイメージの形式を変換するソフト 


その他として、

(5)FT245高速通信カードを用いたFM-7とWindows機との間の高速通信ソフト

 ・ディスクコピープログラム(F-BASIC3.0用、OS-9用、FLEX用、CP/M用)

 ・ファイルコピープログラム(F-BASIC3.0用、OS-9用、FLEX用、CP/M用)

がありますが、その都度ブログで報告していますのでそれらをご参照ください。


各ソフトを画像で紹介しておきます。

(1)クロスアセンブラ

アセンブルしたいファイルを「ファイル名」ボックスにドラッグ&ドロップして「アセンブル実行」ボタンを押します。


6809AsmWin.exe


6800AsmWin.exe


(2)クロス逆アセンブラ

アセンブルしたいバイナリファイルを「ファイル名」ボックスにドラッグ&ドロップし、「オプション」メニュー中の「オフセット指定」でスタートアドレスを設定してから「逆アセンブル実行」ボタンを押します。

バイナリファイル中にデータ範囲があるようなら、その範囲を推定して「オプション」メニュー中の「スキップ範囲追加」で設定します。


6809DisAsmWin.exe



6800DisAsmWin.exe


(3)仮想ドライブ構築ソフト

 ドライブ0~3にディスクイメージファイルをドラッグ&ドロップすればその内容が左下のボックス中に一覧表示されます。イメージファイル形式ですがD77(D88)形式だけでなくDSK形式(単純にセクタデータを順番に並べたもの)やDAT形式(各セクタの先頭に16バイトのセクタ情報が付いた形式)も読み込めます。
左下のボックスにファイルをドラッグ&ドロップすればイメージファイル中に書き込まれます。ボックス中のファイルをマウスの左ボタンで選択して右ボタンでメニューを表示させることで、「読み出し」、「削除」、「名称変更」ができます。また、イメージファイル中の全ファイルを一気に読みだす場合はメニューの「編集」→「全ファイル読み出し」を用います。



FbasDrvWin.exe

 

Os9DrvWin.exe



CpmDrvWin.exe



FlexDrvWin.exe


FlexDrvWin.exeの例のように、FM-7等との通信を行う場合には、右のボックス中に送受信しているセクタの情報が R/W,Drv,Trk,Sctの順に表示されます。


(4)3種のツールソフト

(4-1)プログラムソースファイルをTL/1やGAME形式に変換します。

CnvTxtTl1Src.exe


(4-2)バイナリファイル変換ソフト
 Bin, Hex, Motファイル間の変換ソフトです。さらにFlex9のバイナリ形式にも変換できます。

CvtMotHexBin.exe


(4-1)ディスクイメージファイル変換ソフト
 普段はディスクイメージファイルの中を見やすいDSKファイルを使うことが多いのですが、XM7やGOTEKのためにはD77形式に変換する必要があります。今まではそれぞれのDOS用に制作したコンソールソフトを使用していたのですが、不便なので全DOSに対応したフォームソフトを制作しました。トラック数が40か80かは自動判別しますのでどちらでも使えます。

CvtDskD77.exe


これらをまとめてOneDriveに上げておきますので、もし使用されてみて動作がおかしいということがありましたらご一報いただけると有難いです。

(前回もこのような文を書いておきましたが、特に連絡をいただけることはありませんでしたので、恐らく使用されてみた方はいらっしゃらないのだとは思いますが、自分自身の試みの記録を兼ねてブログにアップしました。)


【5月23日追記】コメントでご指摘いただいた点を改善した6809AsmWin.exeと6800AsmWin.exeをOneDriveに公開しました。改善点などを記述した文書も添付してあります。