Я тут подумал…
Раз есть i8080
A и i8255
A, почему бы не, хотя бы, гипотетически, разработать i8275
A?
- Полная совместимость по всем выводам¹
- Полная совместимость на программном уровне
- Снятие ограничений на максимальную длину знакоряда в 80 знакомест - до 128
- Снятие ограничений на количество атрибутов в знакоряде - до 128
- Возможность управления режимами через ПДП-поток
- Внутренний буфер²
¹ - в расширенных режимах есть нюансы.
² - цикл ПДП можно включать разово программно лишь после изменения содержимого буфера. Иначе говоря, при отключении ПДП экран не пустеет, а отображает всё из внутреннего кэша (скажем, на тех же РУ6).
Так, если ВГ75 по команде Сброса 00 принимает четыре байта режима (в РК - это «4D 1D 99 93»), то можно добавить ещё байтик управления шириной/высотой «бордюра», что сильно не хватало всегда!
Обычная ВГ75 вернёт в слове статуса C001 флаг «Improper Command» бит 3 маска 08h.
С другой стороны, запрет на приём из ПДП-потока двойного кода «Стоп ПДП»…
Например: «F3 00 F3 00» - подготовка к установке нового режима…
То есть, «F3 00 F3 00 4D 1D 99 93 VH XX YY» передаст в регистры режима стандартные параметры и ещё дополнительные, где «VH» - высота и ширина «бордюра», а «XX» и «YY» - позиция курсора.
Тем самым, задав в ПДП буфер экрана 76D0…7FFF, концовка может быть следующей:
И программе не нужно лезть в порты, чтобы изменить позицию курсора.
Просто настраиваем ПДП на какой-либо буфер, а сам режим - задаём в самой памяти.
(Естественно, ещё нужен котрольный байт, чтобы подтвердить валидность режима в ОЗУ.)
P.S.: Есть ещё некоторые соображения предопределения режима для каждой строки отдельно, типа как в тех же Atari.
Но тогда несколько сложнее всё получится.