6503がようやく動いた報告

イメージ
  回路図まで載っけて作りましたと宣言した前回。 いざ色々動かそうとしたものの、 プログラムがまともに動かないので試行錯誤してたら何年たってたんですかねこれ 。月日が経つのは怖いですね。 今回ようやく6503と6532が無事に動きました。 何につまづいたのかというと、多分アセンブラの文法です。 6502系のアセンブラって結構豊富で、 いろんなところから出てるんですがそれぞれアドレスの表記とか微 妙に違うんですね。 で、 今回久しぶりにca65というアセンブラを使用してみたのがつま づいた原因でした。 一度設定すれば大体の6502系には対応できるのが魅力ですが、 本当よくわからないmakeファイルの設定とかで地獄を見ました 。 以下何やってたのか簡単にまとめていきます。 新しい道具も作ったよ! ■:まず動かない いや、電気は通ってるしクロックは走ってるんですよ。 なのに6532の挙動がおかしくてIRQはでっぱなしだしcpu は止まるし訳がわかりません。 そこで今一度6532のデータシートを読むと、 「 NMIとIRQはオープンコレクタなので 必ずプルアップすること 」 ってあるんですね。何その罠。 というわけでプルアップ抵抗を追加しました。 これでcpuがすぐに止まる事故は解決… と思いきやまだ止まります。というか出力がよくわからない。 そこで大昔に作りかけてやめた出力確認用LEDパネルを作成する ことにしました。 ■:めちゃくちゃ便利なLEDパネル 5年くらい前にこんなの作ったら便利やろってLEDだけ並べて、 回路に不備があることに気がついてなげたもの。 今ならなんとかできそうってことで抵抗とトランジスタ をばーっと取り付けて、 カードエッジからも表のポートからも入力できるようにしました。 これまでは毎回ブレッドボードでled回路組んでたんでクソめん どくさいし抜けるしで散々だったのですが、 これで見やすい簡単出力もicに負担がなく万々歳になりました。 やったぜ。 まあ回路図書かずにえいやっと作ったので裏はすごいことになって ます。ちゃんと整えて、 入力スイッチもつけて体裁整えたら普通に便利道具になりそう。 クロックパルスも出せるようにしたいですね。 ledドライブのために2sc1815を贅沢に使用してます。 意外と高いですがいつ買ったのか結構あったので奮発...

パラレルEEPROMプログラマ(arduinoで使用)を作成してみた その2

arduinoでパラレルEEPROMリーダ・ライターもどきを作ってみた
 前回(上のリンクから読めます)、ブレッドボード上で作成したEEPROMプログラマ。書き込みが不安定なのと、広範囲をリセットしたり、読み込みをするのによくトラブルが頻発しました。今回作ったのもところどころバグが発生してしまう(書き損じが起こる、途中で止まるなど)症状があるのですが、ブレッドボード上という不安定な環境からユニバーサル基板の上にきちんと組みなおし、本格的な使用用途に耐えられるようにしました。(しかしプログラムがまだ不完全で、大規模なデータ書き込みは非常に手間であります。どうしたものか・・・)
外見はこんな感じです。


 一見シンプルで単純に見えます。確かに構造はびっくりするほどシンプルなので回路図を書かずとも作れるという。しかし相手はパラレル構造なので配線は地獄を見ます。

書き込みにはArduinoのシリアルモニターからコマンド入力で操作します。

■単純につないではいけない?信号判定と電圧降下

 また、今回整流ダイオードの代わりにLEDを使用したんです。そしたら動いてるところもばっちり見えて楽しいだろうなと考えまして。(誤作動していても目で見てわかりますし。)
 そしたら、「電圧降下」というものが発生することを初めて知りました。これ何なのかといいますと、ある一定のものを回路の間に挟むとその挟んだものの抵抗によって電圧がどんどん下がるというもの。ケーブルもその仲間に入るので、取り回しを長くしてしまうとどんどん電圧が下がるわけですね。もちろんLEDだって抵抗はあるので、その現象はばっちり起こります。そのため最初LEDを間に挟んでROMから出力された信号を74HC165で受け取る際にトラブルが起こるわけです。今回のライターでROMからデータを出力すると、大体4V~3.6Vほどの電圧で出力されました。そこでもって74HC165のHIGHと判定する電圧の高さは3.4Vほど。あれ?クリアしてるじゃんと思うのですが、この二つの間にLEDを挟むと2.4Vまで電圧が下がるんですよ。そうなると165側ではLOWと判定されてしまいせっかくのHIGHやLOWの信号はすべてLOWと読み取られてしまうんですね。じゃあLEDをつなぐことはできないのかというとそうではなくて、真ん中に挟むのではなくLEDはLEDで並列につないでやれば見ることはできるようになります。それじゃあ整流ダイオードの代わりになってないじゃんということになりますが、今回は幸いなことに165側にはダイオードを挟む必要はなく、595側に必要で、かつ595はROMより高い電圧を出力できる(ほぼ5V)のでLEDの電圧降下分をカバーできるんです。今度から回路を作るときにはこの電圧降下分をきちんと認識して作らないといけないということを痛感したのでした。

■今回のEEPROMライターについて

 今回のEEPROMライターはATMELのAT28C256というROMを書き込むのに特化した回路になっているので、凡庸が利きにくいところがあります。(と言ってもDIPタイプのROMのピンアサインは似ているものが多いので、読み出しはできるという事実。)
 なので、せめてAT28Cシリーズだけでも使えるように改良する必要があります。(一種類だけではちょっと勝手が悪すぎますよね。)
 それから、この前秋葉原に行ったときにこのようなものを手に入れまして。
ジャンク品扱いでなんと棒一本まるまる11個入り500円ぽっきり。

 UVEPROMなのですが、ピンアサインはかなり似ているものの書き込む際にVppに21V(高くない!?)を印加しないといけないそうでして。このシリーズにも書き込みができるように機能を追加したいと考えています。いや、別で作ったほうがいいのかな…
 これでやっとライターはできたのでz80パソコン作成も次の段階に移れます。またスパゲッティと戦うとなると胃が痛いですけどね(´・ω・`)
 書き込みが容易かつ安定してできるようになって回路が整理でき次第プログラムもろもろ公開する予定です。プリント基板も作成したいですね。(というかプリントじゃないときつすぎます。)

コメント

このブログの人気の投稿

ファミコンの完全自作ROM&カセットを作ろう!!その1~立ちはだかるコンパイラの壁~

ファミリーベーシックでゲームプログラミング

ファミコンの完全自作ROM&カセット作ろう!〜cc65で起動ROMをつくる〜