2024年6月7日金曜日

メモリマップ

Pasopia7のメモリについて

ポート3Chでメモリモードの切り替え
・bit0=0, bit1=0:0000h-7FFFhがBASIC ROM
・bit0=1:4000h-7FFFhがBIOS
・bit1=1:0000h-7FFFhがRAM
・bit2=1:8000h-BFFFhがV-RAM
・bit3=1:(I/O Memory Mode) RAM(64KB)をI/O空間としてアクセス。次のI/Oアクセスのみ有効で、I/Oアクセス後に解除される。BIOSからのRAMアクセスで利用される

メモリ構成の優先順位
BASICを使わない場合、ROMの裏にあるRAM領域(いわゆる裏RAM)を利用できる。

メモリーのステータスは、ポート22hで読み込むことができる
マシン語処理が呼ばれた後にbit0とbit1の値を保持しておき、元の処理に戻る際は保存しておいたメモリモードに戻しておく。

V-RAMのプレーンは、ポート0Chで切り替える
bit7-4:各bit=1のとき、対応プレーンのV-RAMへのCPUアクセスが可能
bit3-0:各bit=1のとき、対応プレーンのV-RAMデータバスとCPUデータバス間のデータ交換が可能
以下の値をセットしてV-RAMプレーンを切り替える。
・11h:ブルー
・22h:レッド
・44h:テキスト/グリーン
複数プレーンの同時設定も可能
・77h:ブルー, レッド, テキスト/グリーン全てのプレーンにデータを書き込む
→画面の消去などで利用できる

-----
UOOTOYのメモリマップについて

MZ-2000版は2000h-8CFFhにロードした後、表示用データとメインプログラムを別の領域にコピーしている。
2色文字データは、Pasopia7のV-RAM領域(8000h-BFFFh)と重なるため、コピー先を変更
・MZ-2000版:7C90h-810Fh
・Pasopia7版:0B80h-0FFFh
コピー前コピー後内容
-0900h-09FFhビット反転テーブル
-0A00h-0AFFhV-RAMプレーン変換テーブル
-1000h-1FFFhV-RAM変換テーブル
2000h-28BFh2000h-28BFhプログラム、文字列データ、仮想画面など
2C00h-3FFFh2C00h-3FFFh面データ
4000h-4094h556Ch-5600h表示用データ:7色の棒データ
405Ch-408Bh55C8h-55F7hV-RAMコピーのロジック(Pasopia7では使用しない)
4100h-47BFh6000h-66BFh表示用データ:題字データ
4800h-4EBFh6A00h-70BFh表示用データ:32x16ドットキャラクデータ
4EC0h-57FFh70C0h-79FFh表示用データ:16x8ドットキャラクデータ
5800h-5A8Fh7A00h-7C8Fh表示用データ:1色文字データ
5A90h-5F0Fh0B80h-0FFFh表示用データ:2色文字データ
6000h-8CFFhB900h-E5FFhメインプログラム
-E600h-EB86hPasopia7用追加ロジック
-EB87h-ED94hPasopia7用Patch書き込み処理

ビット反転テーブル、V-RAMプレーン変換テーブル、V-RAM変換テーブルは、Pasopia7用追加ロジックの中で作成する

Pasopia7はF0FBh以降がスタック領域のため、この領域は使えない。
MZ版でF2xxhとF3xxhがデータ保存領域として使われていたがEExxhとEFxxhに移動する。
Pasopia7用Patch書き込み処理の中で、これらのコンバート処理も行う。

50面分の面データの後ろに使っていないエリアがある。
将来的に100面分のデータを対応することも考えていたのかもしれない。

0 件のコメント:

コメントを投稿