Забытый мультиколор (часть 1)

Полное руководство по аппаратному мультиколору для тех, кто не знает, что это такое и зачем он нужен.
Оглавление
- Растрата потенциала
- Экранная память
- Создание графики
- Шаблон для вывода
- Философия мультиколора
- Чёрный экран
- Вывод графики
- Адаптация эффектов
- Аппаратный vs Программный
- Ошибка Зонова
Растрата потенциала
Спектрум корявым вышел:
Мало семей без урода
На таймексах мультиколор доступен
С тысяча девятьсот восемьдесят третьего года!
В ноябре 1983 года, явился на американский рынок микрокомпьютер TS2068, содержащий в себе две ключевые новинки: аппаратный мультиколор (Hi-Color) и режим высокого разрешения 512x192 (Hi-Res). Выпустила это чудо техники компания Timex Sinclair. Для Европы, правда, назвали его TC2068 (от Timex Computer), но суть его от этого не изменилась.

Умные люди понимали, что выходить на американского потребителя с одним ZX Spectrum 48 — всё равно что на хоккей в шлёпанцах. Но перестарались. Оба микрокомпьютера практически полностью потеряли совместимость с ZX Spectrum 48, и это стало одной из причин провала продаж.
Новый микрокомпьютер был полностью лишён всякой периферии, а покупать предлагаемые картриджи никто не хотел. Многострадальные покупатели принялись массово переделывать свои TS/TC 2068 в ZX Spectrum 48. Запуск продаж пришёлся аккурат на так называемый «крах рынка видеоигр» в США.
Пытаясь хоть как-то спасти положение, компания выпустила для TC 2068 картридж совместимости с ZX Spectrum 48. В историческом контексте важно заметить, что именно в TS/TC 2068 помимо режимов Hi-Color и Hi-Res впервые появились AY-8910/12 и два экрана, впоследствии сыгравшие значительную роль в популярности ZX Spectrum 128.
В феврале 1984 года британо-американское предприятие Timex Sinclair закрылось. Но дочернее производство Timex Portugal уже разработало и начало выпускать новый Timex TC2048 для рынков Португалии и Польши, где он сыскал большой успех. Португальцы сделали микрокомпьютер, практически соответствующий ZX Spectrum 48, но с добавлением видеорежимов Hi-Color и Hi-Res и поддержки второго стандартного экрана (#6000–#7AFF). Даже строчка копирайта «Timex Computer Corp» при включении пропала.
История умалчивает, почему при выпуске ZX Spectrum 128 в 1985 году испанская Investrónica добавила музыкальный сопроцессор, RAM-диск, два экрана и RS-232C, а «копеечные» видеорежимы Timex забыла. В 1987 году спохватилась Timex Computer и создала прототип TC3256 с ОЗУ 256 Кб. Но денег на производство уже не осталось. Экономия «на спичках» доканала не только Амигу.

Для Timex Computer писали и игры, и прикладное ПО, и графические редакторы: Tech-Draw (1985, Hi-Res), Extended Paint (1987, Hi-Color) и Draw 512 (1988, Hi-Res). А ещё BASIC64 с поддержкой Hi-Res и более мощный Timex Extended Basic — с поддержкой AY-8910/12, RAM-диска и двух экранов для TC 3256.
Режим Hi-Res в Timex служил в основном для CP/M и офисного ПО работавшего в режиме 64 символа в строке. Текстовый редактор MScript, процессоры TimeWord и Textwriter 2068 Plus 64, таблицы Vu-Calc и OmniCalc II, база данных Pro/File 2068 — всё это работало в 512x192.
Аппаратный мультиколор можно увидеть не только в ПО для Timex TC2048 и TS/TC 2068. Он доступен и для предшественников ZX Spectrum — ZX80 и ZX81 — с интерфейсами Chroma 80 или Chroma 81. Интерфейс добавляет банки символов UDG и позволяет загружать COL-файл, который расцвечивает UDG мультиколором. То, что из этого получается — смотрите в десятках игр: Fun Park, Astro Bikers, splATTR и др.
Не обошёл аппаратный мультиколор и SAM Coupé (1989) — британский компьютер, совместимый с ZX Spectrum 48. Там он стал одним из 4 видеорежимов (Mode 2). С той разницей, что в SAM Coupé байты в памяти лежат последовательно — в отличие от нелинейности Timex и Спектрума. Тем не менее это ещё один источник мультиколорной графики.

В русскоязычной прессе аппаратный мультиколор упоминался, но изначально виделся как простая тема для заработка: «Звоните по этим телефонам, и мы вам сделаем!». Никаких внятных объяснений, зачем он нужен, как им пользоваться, а также примеров ПО для него не было. Статьи содержали только «Вау!» и рассказы про адаптированные Art Studio 1.5 и игру Heroes. Которых, разумеется, никто никогда не увидел.
Например: «Новинка — схема железного мультиколора» в X-Ray #02, «Труженикам — Аппаратный мультиколор» в KrNews #01 и др. Специальный выпуск X-Ray #03 с «давно обещанной» статьёй «Доработка — схема Мультиколора 8x1» не получил распространения. Если бы хотя бы в своей газете авторы сделали опциональное включение мультиколора с радугой на весь экран, это было бы уже что-то. Но все эти газеты и журналы были вообще чёрно-белыми.
Схемы дошли до масс, когда они были уже не нужны. Статья «Режим мультиколор для Spectrum» в журнале «Радиолюбитель» №5 (2002), где автор жалуется на отсутствие информации. И статья «Схема железного мультиколора» в ZX-Ferrum #01 (2004).
Режиму Hi-Res повезло больше: его осилили отрисовать и можно найти разные доработки, например «Доп. графический режим — 512x192» в Online #79 (1997), «Доп. графический режим» в Deja Vu #06 (1998), «Схема расширения видеорежима Скорпиона до 512x192» в City #36 (1999) и т.д.

Во времена SpbZxNet под режим 512x192 было написано и адаптировано полтора десятка программ, таких как терминалка Melon, мейлер Lara Croft, редактор AC Edit и др. Всё это было нужно для комфортного чтения и набора текста при переписках в сети. В белорусском клоне «Байт-01» режим 512x192 присутствовал штатно — для поддержки CP/M.
На 2026 год поддержка режимов Timex есть во многих зарубежных клонах Спектрума, географически близких к Португалии и США. Например, это штатный режим в Timex-Harlequin-2048. Если же пробежаться по моделям в ZesarUX, то их поддержку можно увидеть в каждом втором клоне (на практике, в железе, может быть по-разному).

Из отечественных клонов аппаратный мультиколор штатно поддерживают ZX Evolution Base Conf и Pentagon 1024 SL 2.2x, а также он может быть заведён в «Балтик». Но поддержки режима 512x192 наши современные клоны, увы, не имеют. Возможно, если читатели начнут просить этот режим в NedoPC, есть шанс, что поддержка Hi-Res появится в новом разрабатываемом сейчас Evo. Но это не точно. Пока же при адаптации софта, имеющего не только графику Hi-Color, но и Hi-Res, приходится изворачиваться (см. Timmy для ZX Evo).
Помимо Hi-Color, традиционно называемого в России ZX Hardware Multicolor (он же hwcol), этим компьютером и семейством АТМ поддерживается видеорежим АТМ Hardware Multicolor, отличающийся разрешением 640×200 (вместо 256×192) и делением экрана между двумя страницами памяти (RAM 1 и RAM 5 или RAM 3 и RAM 7). Такое деление напоминает режим Hi-Res в Timex, где графика 512×192 также делится между двумя страницами, только позволяет получать 80 символов в строке вместо 64, типичных для Hi-Res.
Рассмотрение АТМ hwcol выходит за рамки этой статьи. Для завершения исторического контекста заметим: семейство АТМ имеет свой родной аппаратный мультиколор, приходящийся мультиколору в Timex старшим братом. Имеет, и никто у него этого не отнимет.
Порт #FF в Timex
| Биты | Назначение |
|---|---|
| 0-2 | Выбор видеорежима 000 — включение экрана 0 (#4000) 001 — включение экрана 1 (#6000) 010 — включение режима Hi-Colour 110 — включение режима Hi-Res |
| 3-5 | Выбор монохрома в режиме Hi-Res 000 – чёрным по белому 001 – синим по жёлтому 010 – красным по голубому 011 – фиолетовым по зелёному 100 – зелёным по фиолетовому 101 – голубым по красному 110 – жёлтым по синему 111 – белым по чёрному |
| 6 | 1 — выключить таймер прерываний (по умолчанию 0) |
| 7 | Выбор банка MMU по горизонтали (см. таблицу в документации, только для TS / TC 2068) 0 — DOCK, 1 – EX-ROM |
Режим Hi-Color
| Операция | Timex | ZX Evolution | Element ZX | MB 03+ |
|---|---|---|---|---|
| Включение | OUT #FF, 2 | OUT #EFF7, 32 | OUT #783B, 16 OUT #793B, 3 OUT #FF, 2 | OUT #703B, 12 OUT #713B, 1 OUT #FF, 2 |
| Отключение | OUT #FF, 0 | OUT #EFF7, 0 | OUT #783B, 16 OUT #793B, 3 OUT #FF, 0 | OUT #703B, 12 OUT #713B, 1 OUT #FF, 0 |
Работа с видеорежимами в Spectrum Next — это история отдельного идиотизма (даже Кучера отдыхает), поэтому он не попал в таблицу выше. Просто приведу код для программного включения режима Hi-Color в этом FPGA-эмуляторе:
;; выключение режима ZX Spectrum :
ld bc,#243B ; порт выбора порта Next
ld a,#15
out (c),a
ld bc,#253B ; порт выбора регистра порта Next
in a,(c)
and #7f
out (c),a
;; включение режима Timex
ld bc,#243B ; порт выбора порта Next
ld a,#08
out (c),a
ld bc,#253B ; порт выбора регистра порта Next
in a,(c)
or #04
out (c),a
;; включение режима Hi-Color
ld c,#ff
ld a,#02
out (c),a
Экранная память
Пары цветов на одно знакоместо,Всем очевидно — мало.
Лучше когда на один знакоряд,
этих цветов — пара!
Далее под атрибутами будет пониматься область атрибутов Спектрума (768 байт), а под расширенными атрибутами — область атрибутов мультиколора (6144 байта).
При включённых режиме Hi-Color и экране в RAM 5
| HEX | DEC | Размер, байт | Назначение |
|---|---|---|---|
| #4000-#57FF | 16484-22527 | 6144 | Монохромное изображение |
| #5800-#5AFF | 22528-23295 | 768 | Атрибуты |
| #5B00-#5FFF | 23296-24575 | 1280 | Буфер принтера (23296-23551), системные переменные (23552-23733), переменные TR-DOS (23755-24267 или 23867-24379, меняется динамически) и буфер TR-DOS |
| #6000-#77FF | 24576-30719 | 6144 | Расширенные атрибуты |
Отсюда видно, что адресация режима Hi-Color очень удобна и для адаптации подойдёт множество программ, типично запускаемых с адреса 32768 (#8000). В загрузчике CLEAR лучше выставлять на адрес 30800. На приложение для ZX Spectrum 48 в этом случае у нас остаётся 33 КБ, что весьма неплохо.
Поскольку буфер TR-DOS (256 байт) легко залезает в расширенные атрибуты, лучше загружать графику куда-нибудь повыше и перебрасывать в нужные адреса, но это вообще типично для адаптации к TR-DOS. В область между атрибутами и расширенными атрибутами лучше не залезать даже байтом. В лучшем случае это приведёт к неработоспособности TR-DOS, а в худшем — к сложно диагностируемым ошибкам или зависанию компьютера.
При включённых режиме Hi-Color и экране в RAM 7
| HEX | DEC | Размер, байт | Назначение |
|---|---|---|---|
| #C000-#D7FF | 49152-55295 | 6144 | Монохромное изображение |
| #D800-#DAFF | 55296-56063 | 768 | Атрибуты |
| #DB00-#DFFF | 56064-57343 | 1280 | Свободное пространство |
| #E000-#F7FF | 57344-63487 | 6144 | Расширенные атрибуты |
Возможно использование двух экранов. Здесь отечественные клоны отличаются от Timex, так как там второй экран начинается с адреса #6000, а не #C000 и считается отдельным видеорежимом.
На ZX Evolution и отечественных доработанных Спектрумах с памятью от 128 Кб можно использовать два экрана (через порт #7FFD, как обычно) и аппаратный мультиколор одновременно. Можно даже сделать мультиколорный Gigascreen, и он будет выглядеть точно так же, как обычный, только в мультиколоре. ВНИМАНИЕ: можно писать/рисовать мультиколором по мультиколору!
Справедливости ради надо упомянуть, что на современных клонах Timex TC 2148 (STAVI) и TC 2144 (Ярек Адамски) доступно 128 Кб и можно использовать 4 экрана (плюс 2 теневых).
О правильной работе с атрибутами и расширенными атрибутами мы поговорим в следующих главах.
Продолжение следует

0 комментариев