W65C02続報
動かないまま保留しているWDCのW65C02ですが、先日efialtes_htnさんよりVihを満たせていないのではないかとのコメントを頂き、入力ピンの電圧を確認してみました。
- BE, RDY, SOB
これらはVihとしてVDD×0.7 = 3.5V以上を要求しますが、10kΩでVDDにプルアップされており問題ないと考えられます。実測でもそれぞれ4.98V, 5.00V, 4.98Vと問題ありませんでした。
マイクロプロセッサ・マイクロコントローラ等です。
動かないまま保留しているWDCのW65C02ですが、先日efialtes_htnさんよりVihを満たせていないのではないかとのコメントを頂き、入力ピンの電圧を確認してみました。
実測でもそれぞれ4.98V, 5.00V, 4.98Vと問題ありませんでした。
CPU判別法(6502編)のもう一つの未入手品、NCR65C02が到着しました。
NCR65C02A、1986年製のようです。「A」付きということは2MHz版ですかね。
CMOS化に伴って命令が拡張されているものの、Rockwellの追加命令は含まれていないというものです。普通に使うならわざわざこれを選ぶ必要はありませんが、CPU判別ルーチンの確認用ということで敢えて入手してみたものです。
ちなみにこの「NCR」というメーカ、後にPCIバス用のSCSIコントローラで有名になりました。
Universal Monitorを移植しようと組み立てたMUTIF09、他の石も載せてからと思っていましたが時間かかりそうなのでとりあえず現状です。
MUTIF09はKasumi YOSHINO(JA1UMI)氏のシングルボードコンピュータボードで、資料はBOOTH・プリント基板はオレンジピコショップにて入手可能です。Universal Monitor移植に最低限必要なもの(と手持ちがあって迷いのないものの一部)を搭載しています。
それでは基板上の部品を見ていきます。
CPU判別法(6502編)の最後に書いたW65C02が到着しました。
上が偽物の疑いのあるW65C02S8P-10、10MHz品です。
下はMouserで購入したW65C02S6TPG-14、14MHz品です。MouserはWDCの正規代理店なのでこちらは本物と見て間違いないでしょう。
ことの発端は6502の判別をテストしていた時です。
SY6502A, UM6502, UM6502A, RP65C02Gと取り替えて試していて特に問題は無かったのですが、W65C02S8P-10に変えたとたんモニタすら起動しなくなってしまいました。オープニングメッセージすら表示しないので判別ルーチンに引っかかっているわけではありません。
MN1613のステップ実行(その1)以降、少し進展がありました。
一つ目はアドレスバスとMEMR, MEMWをLED表示する基板を用意したこと、これで1本ずつテスタで電圧を測る必要がなくなりました。
本当はIOR, IOW, FSYCなども見たいところなのですが、EMILY Boardのリボンケーブルを利用する形にしたので諦めました。アドレスの上位4ビットは未使用ピンに割り当てたのですが、あまり今回だけの信号を割り当てるのは避けたかったのです。数も少ないことですしテスタ対応すればすむことです。
データバスはコネクタまでは準備したのですがLEDは未実装です。ステップ動作中でもメモリの内容はEMILY Board側から自由に参照・変更できるのでとりあえず無くても何とかなりそうだからです。
以前、MN1613のリセット時に何かあるようだと書きましたが、このまま放置するのは気持ち悪いので少し追ってみることにしました。
16チャンネル以上のロジアナでもあれば簡単なのでしょうが残念ながら持っていません。
幸いMN1613のメモリアクセスはハンドシェイクなのでそれを利用してステップ実行を試みることにします。
手っ取り早く追加してみたのがこの回路です。
前にもTMS9995は取り上げましたが、これはまた別のものです。
1994年フィリピン製のTMS9995NL、以前紹介したものはマーキングが怪しかったので比較用に別ルートで入手したものです。
ロゴが印刷だけではなく刻印されているのは珍しいですね。
もう一つ面白いのは10ピンと11ピンの根元に小さな切り欠きがあることです。まさかピンを数えやすくするために目印としてやっているんでしょうか?
ちょっと見にくいですが向こう側の30ピンと31ピンにも同様のマークがあります。
モニタも動いてこれまでに実装済みのMN1610命令に問題無いことがわかり、時間にも余裕が出てきたので、残りのMN1613拡張命令も一気に実装してしまいました。
MN1613で追加された命令にはパースの面倒なアドレッシングなどは無く、命令の数が多いだけの単純作業に近かったですね。
一段落したので現時点のファイル(asl-patch-20191120.tar_.gz)を添付しておきます。
ビルド方法
あれから作者の方と連絡とって質問したり、ID番号もらったり...
軽い気持ちで始めたのですが、ここまできたら本家への追加を目指そうかな。
code***.c
を参考に推測・試行錯誤した結果です。全体を理解して書いているわけではないので、間違っていたり作者の意図しない使い方をしたりしているかもしれません。ご了承ください。
前回厄介と書いたメモリに関係する L
, ST
, B
, BAL
, IMS
, DMS
の各命令も使えるようになりました。これらをデコードする DecodeAdr
は長いのでゼロページ間接インデックス(MN1610で一番複雑)を例にみてみます。