EMILY Boardのメモリがターゲットプロセッサにどう見えるかはプロセッサボードの設計しだいです。
EMILY Boardのコンソールからアクセスする場合の見え方がこれに合っていないと使いづらいため見え方を切り替えられます。これがメモリモードです。現時点で以下の9通りが用意されています。
- モード 00
基本ボードのメモリがアドレス0000H~0FFFHに見えます。アドレスは1バイト毎に振られ、アドレスは16進4桁・データは16進2桁で表示されます。
8ビットバスのプロセッサ用です。
- モード 01
16ビット拡張ボードのメモリがアドレス0000H~0FFFHに見えます。アドレスは1バイト毎に振られ、アドレスは16進4桁・データは16進2桁で表示されます。
8ビットバスのプロセッサ用です。00と組み合わせてMCS-51のようなメモリ空間を2つ持つプロセッサを想定しています。
- モード 02
基本ボードのメモリが0000H~1FFEHの偶数アドレスに、16ビット拡張ボードのメモリが0001H~1FFFHの奇数アドレスに見えます。アドレスは1バイト毎に振られ、アドレスは16進4桁・データは16進2桁で表示されます。
8086などのリトルエンディアンでバイトアドレスのプロセッサを想定しています。
- モード 03
16ビット拡張ボードのメモリが0000H~1FFEHの偶数アドレスに、基本ボードのメモリが0001H~1FFFHの奇数アドレスに見えます。アドレスは1バイト毎に振られ、アドレスは16進4桁・データは16進2桁で表示されます。
MC68000などのビッグエンディアンでバイトアドレスのプロセッサを想定しています。
- モード 04,05
16ビット拡張ボードのメモリが上位バイト・基本ボードのメモリが下位バイトの16ビットワードとなり、アドレス0000H~0FFFHに見えます。アドレスは1ワード毎に振られ、アドレス・データともに16進4桁で表示されます。
04と05の違いはHEXファイルの扱いで、下位が先になるのが04・上位が先になるのが05です。
MN1613などのワードアドレスのプロセッサを想定しています。
- モード 06,07
16ビット拡張ボードのメモリが上位4ビット・基本ボードのメモリが下位8ビットの12ビットワードとなり、アドレス0000(O)~7777(O)に見えます。アドレスは1ワード毎に振られ、アドレス・データともに8進4桁で表示されます。
06と07の違いはHEXファイルの扱いで、下位が先になるのが06・上位が先になるのが07です。
IM6100, HD1-6120用です。
- モード 08
基本ボードのメモリがアドレス0000H~0FFFHに・16ビット拡張ボードのメモリがアドレス1000H~1FFFHに見えます。アドレスは1バイト毎に振られ、アドレスは16進4桁・データは16進2桁で表示されます。
8ビットバスのプロセッサでメモリ容量を大きくとりたい場合を想定しています。
いずれのモードでもアドレスの上位の余ったビットは無視されるのでイメージが発生します。
これはMC6800のようにアドレス0000H付近にも0FFFFH付近にもメモリを必要とする場合に便利に使えます。例えばモード00でアドレス0000H~07FFHはそのまま、アドレス0800H~0FFFHは0F800H~0FFFFHとして使うといったことです。これはそう「思う」「みなす」だけでよく、ハードウェア的にもソフトウェア的にも設定のようなことは一切必要ありません。