Карта памяти¶
Банки памяти¶
| Банк | Назначение |
|---|---|
0000h |
Основной банк |
0001h–0002h |
Дополнительные данные |
0003h–FEFFh |
Прочие банки |
FF00h–FFFFh |
Банки XPB |
Важно: банк
0001hи XPB-устройство#01всегда зарезервированы под дисковый контроллер.
BANK 0000h¶
Основной банк памяти содержит все стандартные регионы системы.
| Начало | Конец | Размер | Имя | Описание |
|---|---|---|---|---|
00000000h |
0000FFFFh |
64 КБ | BIOS/VBIOS ROM | Постоянная память с кодом BIOS и видео-BIOS |
00010000h |
0001FFFFh |
64 КБ | CMOS | Энергонезависимая память конфигурации |
00020000h |
0002FFFFh |
64 КБ | MMIO | Memory-mapped I/O (регистры устройств) |
00030000h |
0003FFFFh |
64 КБ | DEVICE CALLS | Точки входа для вызовов устройств |
00040000h |
0004FFFFh |
64 КБ | BIOS RAM | Оперативная память BIOS |
00050000h |
0005FFFFh |
64 КБ | VRAM WINDOW | Окно в отдельную видеопамять (64 КБ) |
00060000h |
FFFFFFFFh |
~4 ГБ | USER RAM | Пользовательская оперативная память |
Видеопамять (VRAM)¶
Видеопамять - это отдельное адресное пространство, размер которого настраивается (по умолчанию 512 КБ).
CPU видит VRAM через окно по адресу 0x00050000–0x0005FFFF (64 КБ). Страница окна выбирается регистром BANK (0x00020007): BANK = 0 — окно следует за TERM_BUFFER (устаревшее поведение), BANK = N — явно выбирает страницу N (64 КБ). Видеокарта всегда отображает кадр от TERM_BUFFER (0x00020070), поэтому переключение BANK не двигает картинку.
Такой подход позволяет:
- Иметь VRAM больше 64 КБ, переключая видимое окно.
- Заполнять кадры больше 64 КБ (640×480, 800×600) постранично, не сдвигая изображение.
- Сохранить совместимость: старый код, который двигал
TERM_BUFFER, продолжает работать приBANK = 0.
Как читать карту¶
- BIOS/VBIOS ROM - код, выполняемый при старте системы.
- CMOS - хранение настроек (например, выбор загрузочного устройства).
- MMIO - все регистры устройств. Программы обращаются к ним как к обычной памяти.
- DEVICE CALLS - фиксированные адреса, по которым лежат указатели на функции BIOS.
- BIOS RAM - рабочая область BIOS.
- VRAM WINDOW - окно в видеопамять.
- USER RAM - свободная память для программ и данных.
Пример доступа¶
Чтение регистра RAM_SIZE (адрес 0x0002000C):