FM-7のZ80スロットを使う拡張カードII実践編PART7

実践編PART6 以降に進展したことを追加します。

内容は「Arduino(ATmega2560)」をFM-7のバスから切り離し、制御を
「6809」に戻す処理においてF-BASICに戻らないことが多かったのですが
高確率でF-BASICに戻るようになりました。この機能の仕上げは相互リンク
させて頂いている、Old68fun様の試みによるものです。尚Old68fun様の
御好意によりスケッチは当方が管理するonedriveに置く許可を頂きました
ので、利用する際は下のリンクからダウンロードして下さい。
sketch_FM7_ATmega2560V2_20200319-4.info.ino
https://onedrive.live.com/?authkey=%21Aln7kHlkHDL28EE&cid=6357DCB7DCA88133&id=6357DCB7DCA88133%21250&parId=6357DCB7DCA88133%21108&o=OneUp

これに伴い、当カードに対応した以前のスケッチは削除しました。
sketch_FM7_ATmega2560V2.info.ino

注意点として sketch_FM7_ATmega2560V2_20200319-4.info.ino は
Q信号を ATmega2560 の D11 を使っていますが D10 を使う時は下のように
変更して下さい。
#define QB_OUT 10 // QB_OUT port 20200225
// #define QB_OUT 11 // QB_OUT port 20200225

この辺りブログでも取りあげてるように最初の頃「Q信号」の重要性の認識不足に
よる試行錯誤の影響ですが、回路図の整合性とで注意をお願いします。

また、本カードの経緯、今回の修正である制御を「6809」に戻す処理において
リフレッシュ信号を視覚的に分析した詳細はOld68fun様のブログに説明されて
います。Old68fun様、有難うございました。
https://flexonsbd.blogspot.com/2020/03/fm-740parduinomega2560.html

機能追加 2020/03/30(月)
1)FM-7のメモリ検査機能

2)ブートROM内容の出力

スケッチ:sketch_FM7_ATmega2560V2_20200329-4.info.ino
https://onedrive.live.com/?authkey=%21Aln7kHlkHDL28EE&cid=6357DCB7DCA88133&id=6357DCB7DCA88133%21251&parId=6357DCB7DCA88133%21108&o=OneUp

スケッチ以外にも画像もあった方が判りやすいでしょうか。
https://imgur.com/a/mQHgvjp
1)画像:FM-7のメモリ検査機能
メモリに異常がなければ Check_memory-start 以降は、単に
「Hi_address」をカウントして行くだけです。
メモリに異常があると判ってるFM-7で該当アドレスを表示しています。
画像でターミナルに出力している「address 18ab」のアドレスです。
ターミナルの左側の写ってる部分は対応するスケッチのコードです。
因みに、このFM-7のメモリに異常があることは既に判っていましたが
具体的なアドレスが判明したのは今回初めてです。他に2箇所ありました。
尚、検査したDRAMのアドレスはスケッチを確認すれば判ると思いますが
16進数で$1000から$8000の区間です。この辺りはスケッチを変更して
各々のFM-7の状況に合わせて適宜変更して下さい。

2)画像:ブートROM内容の出力
結果をArduinoMega2560カードとFT245RLカードで比較してみました。

スポンサーサイト



FM-7のZ80スロットを使う拡張カードII実践編PART6

実践編PART5 以降に確認したことを補足し追加します。

1)「データのビット0」は「74LS244」を通さず、「Arduino(ATmega2560)」の
D22からの(入力・出力)信号で読み書きしても支障がないことを確認しました。
「74LS244」を通すと、書き込みしかできないので汎用性に欠けます。
尚、この変更で自分は「74LS244」の18番ピンをソケットから出しました。

2)更にプリント基板を製作してたのでソケットから出した「74LS244」の18番ピンと
「Arduino(ATmega2560)」のD48をワイヤーラッピングで接続しました。
こうすることでCPU切替用として使っていた「データのビット0」を「QB信号」用として
転用できました。尚「Arduino(ATmega2560)」からの出力はD10を使います。
またonedriveにある回路図ではD11を「QB信号」用にしましたが、双方の変更は
排他的です。どちらかの変更をすれば、もう片方の変更はしないで下さい。

3)回路図は更新しませんが上記の変更に対応したスケッチはonedriveに上げました。
↓でどちらかを機能させて下さい。
#define QB_OUT 10 // QB_OUT port 20200225
// #define QB_OUT 11 // QB_OUT port 20200225

sketch_FM7_ATmega2560V2.info.ino(V2です)
https://onedrive.live.com/?authkey=%21Aln7kHlkHDL28EE&cid=6357DCB7DCA88133&id=6357DCB7DCA88133%21253&parId=6357DCB7DCA88133%21108&o=OneUp

対応する回路図
FM-7_ATmega2560_2020.pdf
https://onedrive.live.com/?authkey=%21Aln7kHlkHDL28EE&cid=6357DCB7DCA88133&id=6357DCB7DCA88133%21247&parId=6357DCB7DCA88133%21108&o=OneUp


メモリの読み書きを整理し、処理を関数化して多少は見易くました。
「case 0: // init」の処理は、そのまま書いていますが、他は関数化したので
見易くなったのではと考えてます。

「LOW == z80w」時に「switch case」中から関数をコールしてます。

switch (end_flag) {

case 0: // init
初期化処理
FM7_REFCK(); は DRAMリフレッシュ パルス関数

case 1: // Write exec_data[]
拙作FT245RL基板のローダーの書き込み処理
WriteData(); としてメインの処理を関数化

case 2: // Read exec_data[]
上記のFM-7のメモリに書いた内容を改めて
「Arduino(ATmega2560)」で読み込み
ターミナルに出力する処理
ReadData(); としてメインの処理を関数化

case 3: // Read BOOT_ROM
FM-7のBOOT_ROMを読み込み、ターミナルに出力する処理
ReadData(); としてメインの処理を関数化

case 4: // POKE $FD05,0
「Arduino(ATmega2560)」をFM-7のバスから切り離し、
制御を「6809」に戻す処理(「6809」に戻らないことが多いです)
writeCPUSw();としてメインの処理を関数化

}

4)メモリの読み書きができれえば、FM-7のメモリ検査で使えるのではと。


それでは、また。

プロフィール

vehwk3yxv7hw

Author:vehwk3yxv7hw
今から40年近く前に発売されたFM-7
と言う8ビット機のデータ管理を
現行PCでできるようにしましたが、
この程度の作業でも1年以上かかり
ました。とは言え現行PCでデータが
管理できれば昔のPCでも間接的とは
言えインターネットに接続してると
考えました。昔からFM-7用基板を
製作したい思いもありました。
FM-7の機能追加としてソフト的に
あと一つ残ってます。某ブログを
利用し公開してましたけど閉鎖に
伴いココを新発信基地とします。
思いはFM-7のハードに止まらず
昔のゲーム機の機能も拡張も考えて
います。尚写真は30年以上前です。

検索フォーム

ブロとも申請フォーム

QRコード

QR