今回はすでに動いているSBC6800ボード側に手を入れずに6502を動かす方法です。
回路図の修正は以下。φ2inを基準に動作するよう変更。
実際の改造はCPU用の40P ICソケットとアドレスデコーダの74138を差し替え。
40P ICソケットは丸ピンのものを使用。pin2,3,5,36,38,39をカット。
※W65C02Sはpin1がVssではなくVPBという出力信号なのでpin1もカット。他の6502/65C02はpin21だけをGND接続しても動きます
プルアップ抵抗2つをはんだ付け。
pin2(RDY) -^v^v^- pin8(Vdd)
pin36(BE),pin38(SO) -^v^v^- pin8(Vdd)
もうひとつの40P ICソケットはpin2,3,5,36,38,39をカプトンテープで絶縁。これをSBC6800のCPUソケットに挿し、その上に先程加工したICソケットを挿す。
74138(LS138,HC138)はpin6-pin16をメッキ線でショートしSBC6800上の74138と差し替え。
このような感じに重ねる。
これでもともと動作しているSBC6800をベースに前回のような苦労をせずに簡単に6502を載せることができた。ループバックテストもOK。
さて、色々遊ぶにはモニタが必要。そこでElectrelicさんのUniversal Monitorを動かすことにした。
svnで最新のunimonを取得。6502用のソースが入っている~/unimon/6502 を作業ディレクトリとする。The Macro Assembler ASが必要なのでcurrentをインストールしておく。
SBC6800はMC6850で通信を行うのでこの定義を追加する。~/unimon/6502/dev/ 以下にdev_6850.asmという名前で動作するコードを記述し、~/unimon/6502/unimon_6502.asm内にデバイスを選択する部分を追加。
~/unimon/6502/config/ 以下のconfig.incにMC6850用の定義を追加する。config.incはmakeするときには~/unimon/6502/ 以下にコピーして書き換える。今回は開始アドレスROM_Bを$E000に書き換えた。
必要なコードとアセンブル後のHEXファイルを以下に置いた。
手持ちのW65C02/R65C02で動作確認。
MOS6502で確認。ちゃんとCPU判別をしている。
これでもっと遊べますね。あらためてSBC6800作者の電脳伝説さんとunimonのElectrelicさんに感謝します。








