今回はすでに動いているSBC6800ボード側に手を入れずに6502を動かす方法です。

 回路図の修正は以下。φ2inを基準に動作するよう変更。

SBC68006502R2

 実際の改造はCPU用の40P ICソケットとアドレスデコーダの74138を差し替え。

 40P ICソケットは丸ピンのものを使用。pin2,3,5,36,38,39をカット。
※W65C02Sはpin1がVssではなくVPBという出力信号なのでpin1もカット。他の6502/65C02はpin21だけをGND接続しても動きます
IMGP3481

プルアップ抵抗2つをはんだ付け。
pin2(RDY) -^v^v^- pin8(Vdd)
pin36(BE),pin38(SO) -^v^v^- pin8(Vdd)
IMGP3482

 もうひとつの40P ICソケットはpin2,3,5,36,38,39をカプトンテープで絶縁。これをSBC6800のCPUソケットに挿し、その上に先程加工したICソケットを挿す。
IMGP3484

 74138(LS138,HC138)はpin6-pin16をメッキ線でショートしSBC6800上の74138と差し替え。
IMGP3483

 このような感じに重ねる。
IMGP3485

 これでもともと動作している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で動作確認。
unimon_pre

 MOS6502で確認。ちゃんとCPU判別をしている。
unimon_MOS6502

 これでもっと遊べますね。あらためてSBC6800作者の電脳伝説さんとunimonのElectrelicさんに感謝します。


モトローラ6800伝説
鈴木哲哉
ラトルズ
2017-12-16