Compare commits

..

No commits in common. "20f507e11a8a4f83cad53e67de10f28cffddd6e3" and "c6c2fe58755d1462eab643ac4b7b6e2892029f3b" have entirely different histories.

7 changed files with 1 additions and 89 deletions

View File

@ -1,48 +0,0 @@
# 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`:
| Биты 76 | Биты 50 |
|----------|---------------------|
| Выбор микросхемы (03) | Номер страницы внутри микросхемы (063) |
Таким образом, полный номер страницы = `(chip << 6) | page`.
После сброса регистр равен 0 (микросхема 0, страница 0).
### Порт `control` (адрес **0xBF7F**)
- **Запись** (`OUT (0xBF7F), A`) — запись в управляющий регистр.
- **Чтение** (`IN A, (0xBF7F)`) — чтение текущего значения.
Формат байта `control`:
| Биты 7 | Биты 60 |
|----------|---------------------|
| Отключение картриджа | Можно использовать по своему усмотрению |
- **Бит 7 = 0** — картридж включён (обычный режим).
- **Бит 7 = 1** — картридж отключён. Выходы ПЗУ переводятся в высокоимпедансное состояние, внутреннее ПЗУ Spectrum работает штатно.
После сброса бит 7 = 0 (картридж включён).

Binary file not shown.

Binary file not shown.

View File

@ -1,41 +1 @@
# ZX Cartridge # zx_cartridge
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
Проект картриджа для компьютера **Дельта 128К**. Устройство реализовано на четырех 29040 и CPLD, подключается к слоту расширения компьютера. Репозиторий содержит полный набор как исходных файлов, так и файлы для производства.
Также есть схема в pdf. Есть две версии прошивки - для оригинальных картриджей и расширенный вариант.
На текущий момент (23.02.2026) собран макет.
## Функциональность
В процессе тестирования.
---
## Аппаратная часть (HW)
Печатная плата разработана в **Altium Designer** (файл `fix.PrjPCB`).
Структура папки `HW`:
- `fix.PrjPCB` проект.
- `src/` исходные файлы схемы (`main.SchDoc`) и платы (`pcb.PcbDoc`).
- `altium_libs/` библиотеки компонентов (субмодуль).
Библиотеки содержат посадочные места, условные обозначения и 3D-модели (папка `3dmodels` со STEP-файлами).
Репозиторий использует **git submodule** для подключения библиотек это упрощает синхронизацию с обновлениями.
Изображения готового прототипа и модели платы можно найти в папке [`media`](#media).
---
## Программируемая часть (FW)
Прошивка для ПЛИС написана на Verilog и предназначена для синтеза в среде **Quartus** (файлы проекта `zx_cartridge.qpf`, `zx_cartridge.qsf`).
Основной модуль `zx_cartridge` (файл `src/zx_cartridge.v`).
## Медиа
В папке [`media`](media) находятся фотографии платы в процессе разработки прототипа.
![Image](./media/pcb_top.png)
![Image](./media/proto_top.png)
![Image](./media/proto_bot.png)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 MiB