2019-10-13 22:47 — asano
前回、EMILY Boardの16ビットバス化のハードウェアに書きました。今回はソフトウェアについてです。
4k×8bitのメモリ空間2つがターゲットCPUにどう見えるかはCPUボードのハードウェアによって決まります。
それではEMILY Boardのコンソールから各種コマンドでアクセスする場合にはどう見えるのが良いのでしょうか?
ターゲットからの見え方に合わせないと不便ですが、あまり自由度を高くすると設定が難しくなります。とりあえず必要最小限ということで以下のモードを用意しました。
- EMILY Board単独モード
EMILY Board本体のメモリを0x0000~0x0FFFに配置します。0x1000~0xFFFFにもイメージが見えます。EMILY Board +8側のメモリにはアクセスできません。 - 16ビットモード
EMILY Board側のメモリが0x0000~0x1FFEの偶数アドレスに、EMILY Board +8側のメモリが0x0001~0x1FFFの奇数アドレスに配置されます。0x2000~0xFFFFにイメージが見えるのは上と同様です。 - 8k×8ビットモード
EMILY Board側のメモリが0x0000~0x0FFFに、EMILY Board +8側のメモリが0x1000~0x1FFFに配置されます。0x2000~0xFFFFにイメージが見えるのは上と同様です。
3.があれば1.は不要な気もしますが、例えばMC6800などでROM化するコードが0xF800~0xFFFFにあるようなときにちょっと便利です。EMILY Board単体で動作させるためにはD0~D7を使うことになり、3.では0x0000~0x0FFFに配置されます。アドレスが0xF800~0xFFFFなHEXファイルをL
コマンドでロードすると0x1800~0x1FFFにロードされるので正常に動作しません。動作させるためにはL F000
などとオフセット指定する必要があります。
今回は見送りましたが、2.の偶数と奇数を反転させたモードも用意した方が良いかもしれませんね。
コンソール機能のための共有メモリのアドレス設定も変更が必要でした。
これまでは0x0000~0x000F, 0x0010~0x001F, ..., 0x0FF0~0x0FFFから選択できるようになっていました。これを0x1FF0~0x1FFFまで選択可能にしたほか、0x0000, 0x0002, 0x0004, ..., 0x001Eのようにアドレス1つおきや、0x1000, 0x1004, ..., 0x103Cのような4アドレスごと、さらには0x0801, 0x0803, ..., 0x081Fのような設定も可能にしました。
これは例えば12ビットCPUや16ビット単位でしかメモリアクセスできないCPUへの対応のためです。
Add new comment