2.8 KiB
ZX Spectrum Cartridge Controller — программисту
Общая информация
Модуль zx_cartridge управляет четырьмя микросхемами ПЗУ типа AM29F040 (512 КБ каждая), что даёт 2 МБ памяти.
Память организована в виде 256 страниц по 8 КБ. Страницы нумеруются от 0 до 255.
В адресном пространстве ZX Spectrum под картридж отведена область 0x0000…0x3FFF (16 КБ, первые 16 КБ памяти).
Эта область разделена на два 8‑КБ окна:
-
Нижнее окно
0x0000…0x1FFF(A13 = 0) — всегда страница 0.
Здесь должен располагаться код BIOS картриджа. -
Верхнее окно
0x2000…0x3FFF(A13 = 1) — страница, номер которой задаётся программно через регистрbank.
Регистры управления
Доступ к регистрам осуществляется через порты ввода‑вывода.
Порт bank (адрес 0xDF7F)
- Запись (
OUT (0xDF7F), A) — устанавливает номер страницы для верхнего окна. - Чтение (
IN A, (0xDF7F)) — возвращает текущее значение регистра.
Формат байта bank:
| Биты 7–6 | Биты 5–0 |
|---|---|
| Выбор микросхемы (0–3) | Номер страницы внутри микросхемы (0–63) |
Таким образом, полный номер страницы = (chip << 6) | page.
После сброса регистр равен 0 (микросхема 0, страница 0).
Порт control (адрес 0xBF7F)
- Запись (
OUT (0xBF7F), A) — запись в управляющий регистр. - Чтение (
IN A, (0xBF7F)) — чтение текущего значения.
Формат байта control:
| Биты 7 | Биты 6–0 |
|---|---|
| Отключение картриджа | Можно использовать по своему усмотрению |
- Бит 7 = 0 — картридж включён (обычный режим).
- Бит 7 = 1 — картридж отключён. Выходы ПЗУ переводятся в высокоимпедансное состояние, внутреннее ПЗУ Spectrum работает штатно.
После сброса бит 7 = 0 (картридж включён).