Files
Sprinter-SDCC/docs/new/12-bugs.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

4.1 KiB
Raw Blame History

12. Баги BIOS, DSS и железа Sp2000

12.1 DRV_VERIFY (54h) не существует

Функция 54h DRV_VERIFY описана во всей документации BIOS, но в реальности отсутствует — всегда возвращает CF=1.

[bugs.txt:5859]: «Нет биосной функции "54h" (DRV_VERIFY) верификации секторов, описанной в документации. Поэтому она всегда возвращает установленный флаг "Carry".»

Источники, содержащие описание несуществующей функции:

  • [BIOS_v3.txt:258261]
  • [IvanMak.txt:21982210]

12.2 AY-3-8910 — ошибка в формирователе огибающей

Третья версия AY в ППЛМ Sp2000 содержит ошибку в схеме формирователя огибающей (envelope generator). Детали не документированы.

[IvanMak.txt:224229]: «Третья версия схемы AY ... включает в себя ... генератор огибающей. ... В схеме формирователя огибающей обнаружена небольшая ошибка. ... В следующей версии AY предполагается данный недостаток исключить.»

12.3 Акселератор — конфликт с прерываниями

При работе акселератора система команд Z80 сильно меняется, что может приводить к сбоям в обработчиках прерываний.

[IvanMak.txt:844846]: «Отключение прерываний во время работы акселератора необходимо, так как в этот момент сильно меняется система команд процессора и программа на прерывании не сможет работать нормально.»

Новая прошивка акселератора позволяет работать с прерываниями — при приходе INT акселератор отключается и включается обратно по RETI [IvanMak.txt:846848]. Без тестирования на реальном железе неизвестно, какая версия прошивки установлена.

12.4 Быстрое ОЗУ — конфликт с COVOX

Порт #FB используется как для включения КЭШ-ОЗУ (IN), так и для вывода данных в COVOX (OUT). Если КЭШ-ОЗУ включено, запись в COVOX может давать неожиданные результаты.

[IvanMak.txt:850851, 642]

Перед вызовом RST или выходом в DOS КЭШ-ОЗУ обязательно отключать (IN A,(#7B)).

12.5 STA_VID — потеря старшего байта (0A8h?)

[bugs.txt:33]: «В БИОСе в функции STA_VID (возможно 0A8h) теряется старший байт параметра. В v2.12 функцию рекомендуется вызывать с учетом этого.»

Относится к BIOS v2.12. Не проверялось, исправлено ли в v3.00.

12.6 Несовместимость с реальным железом — только MAME

Многие перечисленные баги и квирки зафиксированы в документации, но не подтверждены на реальном Sprinter Sp2000. Все тесты тулчейна выполняются в MAME. Актуальность багов для реального железа неизвестна.

[TODO.md]: «Проверка на реальном железе — в планах»

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

  • BIOS v3.00: 02-bios.md
  • DSS/ESTEX: 03-dss.md
  • Акселератор: 06-accel.md
  • Fast RAM: 04-memory.md §4.6
  • Проектный TODO: TODO.md
  • Проектный список багов: converted/bugs.txt