Last Updated on 2015年6月26日 by kabekin
サブシステムのシグネチャを収集する前にM196(SC28)を取り付けると正常にフリーランしなくなる
現象が気になったので調べてみました。
M196(SC28)はMB7132E SCHOTTKY ROMのようでSL11-11のシールがあります。
こいつを外すと6809MPUのフリーランは正常に行われアドレスラインのシグネチャは正常にデータ取りできます。
しかしM169を取り付けると、こんな感じで出力波形が乱れてHP5006AのUNSTABLEランプが点灯します。
アドレスバスはMPUから一方的に出力されるだけだと思いながら、M169がアドレスラインをプルアップしてしまうとも考えにくいのでMPUの各ピンをオシロで調べてみると、
なんとFM-8のサブシステムMPUは周期的(20ms)にNMI割込みが発生しておりました^^;;;
そういえば何かの書籍でFM-8のサブシステムは周期的に割込みがかかっているということは読んだ記憶があります。
と、いうわけで6809の2番ピンをプルアップ
(3ピン,4ピンはリードクリップが足りないので割込みがきていないことを確認してそのまに・・・)
NMI割込みを無効にしてM169を取り付けてみると、
あれっ!改善なし・・・ NGです。
そこでBA,BS出力をオシロで確認したところ、M169なしでは常に0,0ですがM169を付けると1,1にもなります。
1,1はHALTということなので、#HALT入力を当たってみるとHALTが来ています(TP9がサブMPUのHALTのようです)
40番ピンのHALTもプルアップして電源ON!
M169ありでも正常にフリーランしました^^
アプリケーションノートには割込みをプルアップすることとありましたが、ここで外乱があるとHALTもマスクしないとダメですね。
と、いうわけで割込み3種類+HALTをプルアップしたフリーランテスト用6809 Ver.2です。
HALTや割込みピンは直接ハンダ付けしてしまいました。データバスはオペコードが変更できるようにソケットを残しています。
これをサブシステムMPUに取り付けて動作確認してみます。
アドレス発生OK!、BA,BSは0のまま、A1のシグネチャーはFFFFです。
やっと動作OKになりました(^^)
おおちゃくせずに先にプルアップしておけばよかったといった感じでしょうか^^;;;
これならメイン側MPUに挿してもフリーランするのではないか、
というわけで次回メイン側に装着してフリーランテストを行います
かべきんさんがやられようとしてることは、
(特に付加回路なしで)HCF命令のみでできます。
https://en.wikipedia.org/wiki/Halt_and_Catch_Fire
↑では6800のコードしか書かれていませんが、
6809 では $14 もしくは $15 になります。
リセット以外では復旧しませんので、割り込みのプルアップ処理も不要です。
情報ありがとうございます^^
Wikipediaのページを確認してみました。
アドレスバスがカウンタで動作する機能のようでやっていることは同じ感じですね。
現状の方法ではデータバスを開放しないといけないので不便ですが、データバスを開放せずに
HCF命令だけでハードを弄らずにアドレスバスがカウントアップしてくれると便利そうです。
フリーランの資料も少ないようですがHCF命令の資料も少ないですね。
私の持っている日本語の書籍では発見できませんでした^^;;;
とりあえず今の仕組みでFM-8のメイン側でフリーランできるように方法を調べ終えたらHCF命令も調べてみたいと思います。
最初にこのURLも書いておけば良かったですね、すいません。
HCF命令の存在については、元祖wikiにもはっきり記載されています。
https://en.wikipedia.org/wiki/Motorola_6809
あと、下記ページにリンクされてる、
https://sites.google.com/a/aaronwolfe.com/cococoding/home/docs
6x09_Instruction_Sets.pdf
というドキュメントの末尾に 6809 Undefined Opcode Behavior という項で
HCF命令が解説されています。これによれば、$14, $15 以外に $CD も
HCF命令のようです。OS-9では$CDがモジュールヘッダに使われてる
のでちょっと危険に思えてきました。もっと安全な未定義コードを使えば
いいのに。
関連情報のリンクどうもありがとうございます^^
6x09_Instruction_Sets.pdf は資料までたどり着いていたのですが巻末情報があったとは・・・
気付きませんでした^^
6809の未定義命令って思ったよりも日本語の情報が少ないようですね。
I/O誌で6809未定義命令の記事を見かけたことがあったので見なおしてみましたがHALTと書かれているようです。
実行すると応答が無くなると書かれているので、ロジアナやSAを接続して実行してみたいと思います。
現状の方法でメイン側も無事フリーランできるように攻略できましたので、
どこかから足のピンを曲げていない6809を探してきてFM-8を復旧してからHCF命令を試してみます