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 |
にしています。