関しては、素人によるものです。記事が誤っている可能性もありますので、内容を使用するに当たっては、使用する方の責任でお願いします(当方では責任を持ちません)。>>2015年11月21日メモリ割り当て前回の続きです。・SR以降のみに存在するI/Oポートです。・SRモード(ポート0xC8:bit0=0)以外では動作しません。読み出しはできません(読み出すと0xFFになる)。書き込むデータは次の通り。bit7-4:割り当てるメモリの種別bit7-4=0000:内部RAM(VRAM)bit7-4=0010:外部RAM(拡張RAM)bit7-4=1011:外部ROM1(拡張ROM(nCS2):通常、0x6000〜0x7FFFに割り当てる)bit7-4=1100:外部ROM2(拡張ROM(nCS3):通常、0x4000〜0x5FFFに割り当てる)bit7-4=1101:CGROMbit7-4=1110:SYSTEMROM2(音声合成/漢字)bit7-4=1111:SYSTEMROM1(BASIC-ROM)それ以外は未使用bit3-1:割り当てるメモリの先頭アドレス(アドレスバスA15-13に出力する値)bit0:常に"0"◎解説CPUからメモリなどにアクセスする際に、8Kバイトごとに自由に割り当てる事が出来る機能です(内部RAMは制限あり。SRモード専用の機能で、SRモード以外は使用できません。mk2/66モードのポート0xF0〜0xF2に似たような機能がありますが、ポート0xF0〜0xF2はバンク切り替えのイメージです。設定値の与え方がちょっと分かりにくい(特にbit3-1)ですので、具体的な例を挙げてみます。・設定するポートは、0x0000から読み出すので、ポート0x60に書き込む。・設定値bit7-4=SYSTEMROM1(BASIC-ROM)、1111・設定値bit3-0=エリアの先頭に0x8000を割り当てるから、0x8=1000となって、ポート0x60に0xF8を書き込む。・設定するポートは、0x4000から書き込むので、ポート0x6Cに書き込む。・設定値bit7-4=外部RAM(拡張RAM)なので、0010・設定値bit3-0=エリアの先頭に0x6000を割り当てるから、0x6=0110となって、ポート0x6Cに0x26を書き込む。このメモリ割り当て機能ですが、回路的にはCPUアドレスのA15-13を入力として、新しくアドレスRA15-13を生成する回路と、チップセレクトを生成する回路になります。A15-13からRA15-13を生成する回路は、こんな感じです。メモリアクセスに関しては、すべてRA15-13を使うのですが、内部RAM(VRAM)だけは、RA15-14とA13を使っています。そのため内部RAM(VRAM)に関しては、以下のような動作になります。内部RAM(VRAM)を割り当てる場合は、以下の値しか取れない。内部RAM(VRAM)を割り当てる場合は、以下の値しか取れない。0x2000〜0x3FFF:書き込むデータbit7-0=000000100x6000〜0x7FFF:書き込むデータbit7-0=000001100xA000〜0xBFFF:書き込むデータbit7-0=000010100xE000〜0xFFFF:書き込むデータbit7-0=00001110また、書き込むデータbit3-1が、RA15-13に出力されますが、内部RAM(VRAM)使用時はRA13は未接続のために、bit1は無視されます。内部RAMはVRAMとして使用されていますが、メモリ割り当てではあくまでもCPUからのアクセスアドレスが変わるだけなので、画面表示への影響はありません。VRAMでビットマップモードを使用した場合は、メモリ割り当てでアドレス変換された後に、ビットマップ変換がされます。詳しくはSRグラフィックの説明の際に記載します。[必須入力]※画像の中の文字を半角で入力してください。デバッグなど(137)SW:その他(3)HW:AVR(0)HW:RS232Cボード(11)HW:動画再生(18)HW:SD6031(32)HW:その他(33)P6実機:製作・修理・改造など(20)その他(15)月別アーカイブ2020年01月(2)2019年12月(1)2019年07月(5)2019年04月(2)2019年02月(2)2018年12月(10)2018年11月(5)2018年10月(3)2018年08月(2)2018年07月(2)2018年06月(30)2018年04月(7)2018年03月(6)2018年01月(1)2017年11月(12)2017年10月(4)2017年09月(1)2017年06月(4)2017年04月(6)2017年03月(3)Seesaaブログ。