HD6303のマニュアルですっかり見落としていたのが下の表(クリックで拡大します)。付け加えると、tomi9jpさんやtendai22plusさんから指摘があったにもかかわらず、しばらくは気が付かなくてたぶんお二人をイライラさせたやつ。この表によれば、SBC6303(マルチプレックスモード)をリセットし続けた場合、アドレスバスはハイインピーダンスになるが、データバスはハイインピーダンスにならない。ブートローダを正しく動かすには両方ともハイインピーダンスにする必要がある、というのが今回のテーマ。

この表の脚注を見ると「次の(1)または(2)の対策を行なってください」と書いてある。英語のマニュアルだと「(1) and (2)」なんだけど日本語のほうをとってどちらか一方でいいと解釈。だから(2)にしたがいAS端子にプルダウン抵抗4.7kΩを付加してみた。AS端子はGNDとほどよい距離にあって抵抗の取り付けは簡単。

この状態で電源を入れ、リセットスイッチを押し続けて、データバスにつないだLEDが点灯しなければ成功なのだが、結果は点灯。つまり、データバスはハイインピーダンスになっていない。まあそうだろうな。そもそもAS端子にプルダウン抵抗をつなぐ意味がわからない。ボツに決定。それでも、この試みでアドレスバスがハイインピーダンスになっていることは確認できたからまったくの徒労に終わったわけではない、としておこう。

で、今後どうするかということ。すでにtendai22plusさんからユニークな解決方法が提案されていて、tomi9jpさんが検証してくれる流れになっている。そういう状況で、ちょっと勇気がいるのだけれど、正直な気持ちをいっておきたい。SBC6303は過去9回の修正で幅広いソフトウェアに対応し、かつ最小限の部品で動くように練り上げた。その過程を見守ってくれた人たちもいる。土壇場になってブートローダを必要としない人には関係のない機能を盛り込むことはやや抵抗がある。
tendai22plusさんの解決方法はとても面白いし、何より一緒に考えてくれたことに深く感謝している。それはそれとして、ブートローダの問題はブートローダの側で解決したい。tomi9jpさんが指摘してくれたデータバスがハイインピーダンスにならない件はブートローダに3ステートバッファを追加して何とかしようと思う。ごめんね、これがボクの流儀なんだ。ありがとう、みんなの技術に負けないように頑張る。