SBC6800を改造せずにW65C02Sを動かす&unimon_6502の移植で動作確認できたので動作周波数を上げてみる。手持ちのACIAは68B50、2MHz品なので目標2MHz動作。
SBC6800ではPIC12F1822をクロックジェネレータとして使っている。MC6800用なので相補のφ1(P1A)、φ2を(P1B)ハーフブリッジモードで1MHzを出力しているが、6502用に使っているφ2はハーフブリッジモードでしか出力できない端子(P1B)に割り当てられている。φ1(P1A)側だったらCLKOUTをそのまま使えたみたいだけど。
ディレイ設定を使わなければデューティ50で2MHzをφ1側に出力でき、φ2はその反転出力となる。これで無改造で使えそうだ。
SBC6800ルーズキットのデータパックより6800crgenのプロジェクトを持ってきてmain.c内の以下を書き換え、MPLABX4.02でビルドした。
PR2 = 3;CCPR1L = 2;PWM1CON = 0;
以下にmain.cの差し替えとPIC12F1822書き込み用のHEXファイルを置いた。
波形観測。OK。

これを使って動作確認。せっかくなので電脳伝説さんが"SBC6800のプチ改造で6502を動かす"で移植したOSI MS-BASICで確認する。実行速度の確認にASCIIART.BASを使用。
ASCIIART.BASのソースは以下にある。
1MHzの実行速度が6分50秒に対して1MHzでは3分25秒とちょうど半分だった。
※はせりんさんのまとめで他にもいろいろな機種でのASCIIART.BASの実行速度の一覧が確認できます。
さて、さらに上を目指すには。W65C02Sは14MHzまでOKだがACIAが足を引っ張るためW65C51あたりが必要。ただしMC6850との互換性はない。PICを使えば2/4/8MHzが生成できそうだがその間が難しい。最大動作周波数が40MHzのPICを使えば5/10MHzができるかもしれない。この場合はPICのCLKOUTがダイレクトに出せる端子に修正したほうがよさそう。






