2021年2月28日日曜日

6802ボードでドータボードを用いて6502を走らせる

 自作6802ボードでドータボード(ほうめいさんのPLDR6502)を用いて6502を走らせる


先日まごころせいじつ堂のほうめいさんから、電脳伝説さんのSBC6800ボードで6502を走らせるためのドータボードPLDR6502をいただきましたので、私の自作品で今は使用していない6802ボードでも走らせることができないものかと試みてみました。

私の6802ボードは水晶発振回路からの8MHzを6802のEXTAL端子に入力して、出力される2MHzのE信号で周辺回路を制御しているので、8MHzをそのまま入力するわけにはいきませんが、幸い、ACIA63B50に加える614KHzのクロック生成のために8MHzをLS161で13分周していますので、その途中から2MHzを取り出して、それを37ピンのPHI2Iに加えることで2MHzで動作させることができそうです。

ドータボードの修正としては、39ピンPHI2Oと37ピンPHI2Iを入れ替えることと7ピンSYNCをカットしてGNDに落とす(BAを常にLowに)だけで良さそうです。6502にはBA信号がないのでちょっと悩みましたが、常にLowにしておいても特に不都合はないようです。(本当は周辺ICのアクセスに不都合が生じる場合があるそうですが...)

問題はCPUで、eBayで調達したW65C02(5個)とR65C02(2個)のいずれも動作しませんでしたので、仕方なくオレンジピコさんからW65C02S6PTG-14を購入してようやく動作させることができました。動作しなかったW65C02はいずれもほうめいさんのブログで動作しなかったと報告されているものと同じ刻印でした...


ということで、動作している様子です。

残念ながらボード上のLS161から2MHzを引き出している線とBAをGNDに落とす線が見えていて見苦しいです...


自作6802ボード上に装着した


オレンジピコさんから購入したW65C02です。


ドータボードとW65C02



動作確認にはほうめいさんと同じように、ElectreilicさんのUniversal Monitorを使わせていただきました。モニターの開始アドレスとACIAのアドレスを変更するだけで、アセンブルしてROMライターで焼いて動作させることができました。


Universal Monitorが動作



動作しなかったW65C02とR65C02群です...



eBayでは時々こんなことが...


W65C02は全く無反応でしたが、R65C02の方は全くの無反応ではなくて画像のように意味のないデータが定期的に表示されており、一見何かの動作をしているように見えます。



もっと追求すれば何か分かるかも


ここまでくると、次はBASICを走らせてASCIIARTの描画速度を測定してみたいところですが、私の6802ボードはROMが$F000~$FFFFのみ(I/Oは$F080~$F0FF)ですのでBASICをROMに焼き込むことができません。
ですので、起動後にBASICをRAM中にLoadして走らせる必要がありますが、6502の機械語は全くいじったことがないので、Loaderを制作できるのはもう少し後になりそうです。

初めて触れた6502ですが、折角の機会なのでもう少しいじってみようと思いますので、W65C02と使いこなせるかどうかわかりませんがW65C816を追加注文したところです。

私は、今は6809と6802の両用ボードを使用していますので、6802ボードは眠っていたのですが、それを活用することができてありがたいです。
ドータボードPLDR6502を下さったほうめいさんとUniversal Monitorを制作して公開されているElectreilicさんに感謝いたします。ありがとうございました。


2021年2月23日火曜日

FM-7用 60K CP/M-80 の仮想ドライブ版が完成


 FM-7用 CP/M-80 60K版の仮想ドライブ版(FT-245カード使用)です


先日、FM77用のZ80Hカード(韋駄天)を作った際に、それ用の60K版CP/Mを公開されているCP/Mのソースから構築しましたので、その経験を忘れないうちにと、半完成の状態で止まっていたFM-7用のCP/Mを60K版に変更し、さらにWindows上の仮想ドライブもアクセスできる形で仕上げました。

そしてFM-7とWindowsPCとの通信にも、以前使用していたRS-232Cカードではなく「思い付きハードでソフトに七転八倒」さんが製作されたFT-245モジュールを使用した高速通信カードに変更しました。


CP/Mの起動画面です。起動メッセージにあるように、A:とB:が通常のFD、C:とD:がWindows上の仮想ドライブに設定してあります。

起動ドライブA:のディレクトリを表示後、ドライブD:にチェンジし、そこからドライブC:のディレクトリを表示しています。


CP/M起動画面


使用中の様子です。

右端のカードがCP/M-80カード、中央がWindowsとの通信用のFT-245カード、左端がFDCカードで、いずれも以前本ブログで報告した製作品です。

後方に見えているWindows上に仮想ドライブが構築されています。


動作中の様子


FT-245カードのアップです。以前使用していたRS-232Cカードよりも高速になったのが体感できました。

このカードの仕様上、FM-7 -> WindoowsPC は1バイトを1回で転送しますが、WindowsPC -> FM-7 は1バイトを2回に分けて転送しますので、以前紹介しましたCP/M用仮想ドライブ構築ソフト CpmDrvWin.exe にそれに対応するための変更を加えました。


高速FT-245カード


Windows上の仮想ドライブ画面です。

ドライブ2と3上にFDイメージファイル(D88, D77, DSKファイル)をドラッグ&ドロップすると、それぞれCP/MのC:,D:として読み書きできます。同じドライブ中にいくつでもイメージファイルを置いて、切り替えてアクティブなイメージファイルを選択できます。

アクティブなドライブのディレクトリが表示されているボックスにWindows上のファイルをドラッグ&ドロップすることでイメージファイルにファイルを書き込むことができますので、Windows上でソースを作成してイメージファイルに放り込んで、CP/M上でアセンブルやビルドをするという形でプログラム開発ができます。


仮想ドライブの画面



また、その他の機能として、ファイルの読み出し、ファイル名の変更、ファイルの削除、全ファイルの一括読み出しなどの機能もあります。


2020年5月16日の「FM-7用 58K CP/M-80が一応出来上がりました」で紹介した際には、ブロッキング・デブロッキングが実装されていなかったので同一セクタを2度ずつ読んでいました。相変わらずブロッキング・デブロッキングは実装できていませんが、上記画面の右端のボックスを見ていただくと分かりますように、直前に読んだセクタと同じセクタの場合にはディスクを再度読まないように処理を変更しましたので、その分高速になっています。


最後に


自分で作ったハードとソフトでTurboPascalなどの大昔のソフトを走らせてみたいという願いから始めたものですが、それなりに使える形が出来上がったように思いますので、これを区切りにして、あとはCP/M-80上でのソフトを走らせて楽しもうと思います。
(プログラム作りの楽しさを知ったのは、N88-BASICでの6千行近いプログラムの変数管理でどうにもならなくなってしまった挙句、MS-DOS上のTurboPascalを使い始めてその使い易さに感動してからで、その後Cに移行しましたが、今でも気持ちとしてはPascalが好みですので楽しめそうです。)

制作したBIOS09, BIOS80, FM-7用CP/MシステムイメージCPM60KwVFD.D77と元のCPM60KwVFD.DSK, Windows側のCpmDrvWin.exeをOneDriveに上げておきます。
なお、FT-245カード使用のものとRS-232Cカード使用のものとの両方入っていますが、ファイル名の末尾にFTがついているものがFT-245カード用で、RSがついているものがRS-232Cカード用です。
また、formatコマンドがありませんので、フォーマット済みの空のイメージファイルも入れてあります。newdiskがついているものがそれです。
このような報告の場合、ソースがなければあまり役には立たないと思いますので、BIOS09, BIOS80についてはソースも入れておきましたが、CpmDrvWin.exeについては見苦しい個所も多くまだまだ改良の余地もありますので、とりあえず今はソースは公開しないことにします。

BIOS09は私なりに試行錯誤しながら制作しましたが、80系の知識が全くないので、CP/M本体とBIOS80については以前紹介しました中日電工さんのブログがなければ仕上げることはできませんでした。改めて中日電工の菱田さんに感謝いたします。
また、標準のRS-232Cカードよりもはるかに高速なFT-245カードを開発された「思い付きハードでソフトに七転八倒」さんにも改めて感謝いたします。



2021年2月2日火曜日

ドライブナンバー切替用ケーブルの製作

 ケーブルを加工してフロッピィドライブの0と1の切替をスイッチで行えるようにしました


私が使用している3台の8ビットパソコンはドライブ0を全てGOTEKに変更してあり、便利に使用できているのですが、時にはフロッピィから起動したい場合もあります。

常用しているFM77AV40SXはどのドライブからでも起動できるので良いのですが、残りの2台(FM77AV1,FM-7)にはそういう機能はありません。

FM-7用のFDDはPC-98用のケースに収めており、前面パネルにあったスイッチをドライブNo切替用に利用できましたが、そのためにGOTEKやPC用FDDからケーブルを引き出す必要がありました。(GOTEKには直接ハンダ付けをしました)


FM-7用FDD

しかし、FM77AV1の2Dドライブは基板上のスライドスイッチでドライブNoを切り替えるようになっており、ケーブルを引き出すのは容易ではありません。

そこで、ドライブ本体はそのままで、接続しているフラットケーブルを加工し、切替スイッチを追加することでドライブNoを変更できるようにしました。


下図がフラットケーブルの結線図です。

前提として、GOTEKがDRV0に、PC用FDDがDRV1に設定してありますので、GOTEKにはピン10にFDCからの10番か12番が、PC用FDDにはピン12に10番か12番が接続されることになります。(PC用FDDのピン10はN.C.ですので、結線されていてもいなくても無関係です。)


ケーブル結線図

実際のフラットケーブルとスイッチです。

有り合わせのものを利用したので、実際に装着してみたら長すぎました。。。

画像左側にFDCへのコネクタがあります。スイッチの下のコネクタがDRV0 用、右端のコネクタがDRV1 用です。


加工したフラットケーブル


その加工部のアップ

FM77AV1に装着した様子です。プッシュボタンはGOTEKの上に接着剤で固定しました。

プッシュボタンを押し込むとDRV0:GOTEK,DRV1:PC用FDDに設定され、ボタンを戻すとその逆になります。


FM77AV1に装着した様子

これで、ごくまれにあるフロッピィから起動させたい場合でも、77AVを分解しなくてもよくなりました。