CP/Mのディスク関連のMMUメモリマッピングを整理しておきます。
S1特有の複雑なメモリマッピングはCP/M80を動作させる上でも設定が必要でした。
今回のCP/M80を動かすために設定したメモリマッピングとロード先を整理すると、
メモリマッピングは、
ページ | 起動時(空間1) | ローディング(空間1) | BIOS09動作時(空間8) |
0 | BF | BF | 00 (メモリ) |
1 | BF | BF | 01 (ローダー) |
2 | 01 (ローダー) | 01 (ローダー) | 0D (CPM $D400-DFFF) |
3 | BF | BF | 0E (CPM $E000-EFFF) |
4 | BC | 0D (CPM $D400-DFFF) | 0F (CPM $F000-FFFF) |
5 | E2 | 0E (CPM $E000-EFFF) | BF |
6 | E3 | 89 (BIOS09) | 89 (BIOS09) |
7 | E4 | 8A | 8A |
8 | E5 | E5 | 0F (I/O) |
9 | E6 | E6 | 00 (I/O) |
A | E7 | E7 | BF |
B | E8 | E8 | BF |
C | E9 | E9 | BF |
D | 85 | 85 | 85 |
E | 84 | 84 | 84 |
F | EF | EF | EF |
こんな感じで使っています。
(CP/M実行中は空間8を使っています)
2D用のCP/Mローダのメモリロード先は、
Trk | 開始 Sct | 終了 Sct | セクタ 数 | サイズ | ロード先 | マッピング先 | 実行時 マッピング | 内容 | コード |
0 | 1 | 2 | 2 | 512 | $2000~ | $1000~ | $1000~ | CP/Mローダ | 6809 |
0 | 3 | 24 | 22 | 5632 | $4400~ | $E400~ | $E400~ | CPM本体+BDOS | Z80 |
0 | 25 | 30 | 6 | 1536 | $4A00~ | $EA00~ | $EA00~ | BIOS80 | Z80 |
0 | 31 | 32 | 2 | 512 | $6000~ | $89000~ | $6000~ | BIOS09 | 6809 |
1 | 1 | 14 | 14 | 3584 | $6200~ | $89200~ | $6200~ | BIOS09 | 6809 |
にしています。