現在地

SBCZ80(ソフトウェア編)


カテゴリー:

前回に引き続いてSBCZ80、今回はソフトウェア編です。

いつものようにUniversal Monitorを移植するわけですが、これまでUniversal Monitor Z80を動かしてきたMAA-1ボードとSBCZ80は実はほとんど同じです。ソフトウェアから見た違いといえばROM/RAMの容量が半分になっているくらいで、SIOのアドレスなども一致しています。

となると0FF00H~0FFFFHに配置されていたワークエリア・スタックを0BF00H~0BFFFHに移動するだけで動きそうです。これならconfig.incの変更ですみます。

とりあえずこの変更だけで起動してみました。
起動させてみた
起動メッセージが2つ表示されているのは電源ONとその後の手動リセットです。

電源ONの時だけ先頭が化けているのが気になります。これの確認のために再びMAA-1ボード動かしたのが前回書いたCPU交換の理由です。

それで試しにMAA-1ボード動かしてみたらやはり化けました。最近の変更で壊したのか、元々あったのに気づいていないだけだったのか...

このあたりの話をTwitterに書いていたら、SBCZ80作者のvintagechipsさんよりDRAMのウォーミングアップ不足ではとの指摘をいただきました。SRAM構成のMAA-1ボードでも同様なので化けの原因ではないのでしょうが、確かにウォーミングアップはロクにしていません。

データシートによると電源投入後500μs待ってから8回以上のダミーサイクルが必要とあります。このダミーサイクルはデバイスで8回なのかrowアドレスごとに8回なのでしょうか?

そこでウォーミングアップを兼ねて簡易メモリチェックとRAM容量判別のルーチンを追加してみたのですが、よく考えたらウォーミングアップ中は正常な読み書きが保証されないのだからメモリチェックしたらマズいですね。現実には動作していますけど...

どうしようかな。

さてメッセージが化ける件に戻ります。

起動時には以下のメッセージを表示しています。

    1411/     8C7 :                     OPNMSG:
    1412/     8C7 : 0D 0A 55 6E 69 76   	DB	CR,LF,"Universal Monitor Z80",CR,LF,00H
                    65 72 73 61 6C 20 
                    4D 6F 6E 69 74 6F 
                    72 20 5A 38 30 0D 
                    0A 00             

リセットボタンの場合は正常に表示するのですが、電源ONの場合はターミナルのログをHEX表示してみると0D 0A F0 55 6E...のように0DH, 0AHの後55Hの前に0F0Hなどが挟まっています。違う値のときもあるし、正常に表示するときもあるので単純なバグではなさそうです。

試しに0D 0A 0D 0A 55 6E... と変更してみたら0D 0A 0D 0A F0 55 6E... のようになり、単純に2バイト目の後に入るわけではないようです。

表示だけですし、リセットボタン押せば正常なので実害は無いのですが、もう少し追いかけてみるつもりです。

参考文献・関連図書: 
M5M4416P-12,-15データシート, Mitsubishi Electric.

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
※ コメントは原則公開です。個別のご相談などは「ご意見・ご要望」からお願いします。