Files
Sprinter-SDCC/docs/new/07-irq.md
T
snark13 64ce6339eb docs: справочники по железу Sprinter + правка gfx_scroll_h
- docs/new/ — сводные справочники (архитектура, BIOS, DSS, память,
  графика, акселератор, IRQ, порты, ввод, звук, известные баги);
- docs/Original/ — первоисточники, из которых они собраны (BIOS, Estex
  DSS, мануалы, описание акселератора), + Форум.doc/.docx в reference;
- libbgi/common/gfx_scroll_h.c — обход бага скролла при ширине >256
  (правка автора: шаг банды 255 и продвижение указателей на cw; старый
  вариант с 256 оставлен закомментированным с TODO);
- удалён applications/PoP/roomtest/hang_variants.png — рабочая раскладка
  из разбора позы виса, в репозитории ей не место.

Большие архивы (docs/extra ~568 МБ, docs/sources с вложенными git-репо
~68 МБ) в коммит НЕ включены — см. обсуждение.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 18:26:31 +03:00

5.7 KiB
Raw Blame History

7. Прерывания (IRQ)

7.1 Общие сведения

Sprinter Sp2000 поддерживает режимы прерываний IM1 и IM2.

Источники прерываний

Источник Происхождение Описание
Кадровые (INT) Видеоконтроллер Квадратик экрана в 8-й линии
CTC Z84C15 Таймерные прерывания
SIO Z84C15 AT-клавиатура
PIO Z84C15 (бит 0 порта B, #1F) ISA-слоты
CBL COVOX-Blaster Запрос данных

Различение источников

Кадровые и клавиатурные прерывания приходят с вектором 0FFh [Parinov.txt:956]. Способ различения:

  • Клавиатура выставляет бит 0 в порте 19h — признак приёма байта [Parinov.txt:1049]
  • Если бит 0 порта 19h не установлен — прерывание кадровое

Примечание: [Parinov.txt:956] описывает альтернативный метод — «отличать по биту приема байта в порте клавиатуры». Оба метода сводятся к проверке бита 0 в порте 19h.

Выбор режима прерываний (IM1 vs IM2)

Режим Контекст Источник
IM2 Рекомендован для работы с BIOS через RST IvanMak.txt:14691473
IM1 Используется DSS для своих обработчиков
IM1 Fast-RAM секция предполагает обработчик по #0038 Parinov.txt:601
IM2 Рекомендован при выставленных прерываниях от CBL Parinov.txt:762763

Примечание: разные подсистемы рекомендуют разные режимы. IM2 предпочтителен при интенсивной работе с прерываниями (CBL, BIOS). IM1 используется DSS по умолчанию.

7.2 Кадровые прерывания (INT)

Генерируются в момент прохождения 8-й строки квадратика (настраивается через бит 0 порта #FE). Положение INT подстраивается под стандарт Pentagon (320 строк) или Scorpion (312 строк).

Мышь — есть ли аппаратные прерывания? [Parinov.txt:956] утверждает: «От мыши прерывания не приходят. Сделать можно, но сейчас их нет.» [ProgrammerManual.txt:17841786] описывает драйвер мыши, где «каждое нажатие и отпускание клавиш или перемещение мыши вызывает прерывание», и документирует функцию «80h MOUSE HARDWARE INTERRUPT» [ProgrammerManual.txt:19301937]. Parinov (разработчик драйвера) отрицает их наличие — возможно, ProgrammerManual описывает планируемую функциональность.

7.3 CTC (Z84C15)

Таймер CTC используется для:

  • Генерации периодических прерываний
  • Задания частоты CBL (COVOX-Blaster)
  • Синхронизации звука

7.4 SIO (Z84C15)

Внутренний SIO Z84C15 обслуживает:

  • AT-клавиатуру (порты #18/#19)
  • RS-232 (для мыши и других последовательных устройств)

7.5 IM1 — вектор #0038

Стандартный Z80-режим. Все INT ведут на адрес #0038. Используется DSS для своих обработчиков.

7.6 IM2 — таблица векторов

IM2 использует таблицу векторов (256 байт) в фиксированной странице (обычно W3). Вектор прерывания — 0FFh.

Для работы IM2 требуется:

  1. Таблица векторов в резиденте (W3)
  2. Регистр I = старший байт адреса таблицы
  3. Каждый вектор — адрес обработчика (2 байта)

7.7 Акселератор и прерывания

При работе акселератора система команд Z80 сильно меняется.

Режим Описание Источник
Старый DI обязателен IvanMak.txt:844846, Parinov.txt:954
Новый EI/RETI: по INT акселератор отключается, по RETI включается IvanMak.txt:846848

Примечание: IvanMak описывает два режима (старый — DI, новая прошивка — EI/RETI). Parinov знает только старый. Без тестирования на железе неизвестно, какая версия прошивки установлена.

7.8 Цепочка обработчиков

TODO (проектный im2_isr_design.md): цепочка irq_install/remove, FPS-делитель, обработчики клавиатуры.

7.9 Кросс-ссылки

  • Порты прерываний: 11-ports.md
  • Проектный документ по IM2/ISR: im2_isr_design.md
  • Клавиатура: 09-input.md §9.1
  • CBL (прерывания): 10-sound.md §9.4.6