2020-08-24 02:23 — asano
カテゴリー:
前回に引き続いて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バイト目の後に入るわけではないようです。
表示だけですし、リセットボタン押せば正常なので実害は無いのですが、もう少し追いかけてみるつもりです。
Add new comment