Введение

Дисплейный контроллер

Motorola 6845, или MC6845, — это контроллер дисплея, который широко использовался в 8-битных компьютерах в 1980-х годах. Изначально разработанный для систем на базе процессора Motorola 6800 и имевший соответствующий номер детали, он получил более широкое распространение в сочетании с различными другими процессорами и чаще всего встречался в компьютерах на базе Zilog Z80 и MOS 6502. 6845 не является самостоятельным решением для отображения; основная функция чипа — корректно синхронизировать доступ к памяти дисплея и вычислять адрес памяти следующего участка для отрисовки. Другая аппаратура в системе использует адрес, предоставленный 6845, для получения шаблона и последующей отрисовки. Реализация этого аппаратного обеспечения полностью зависит от разработчика и значительно различалась в разных системах. 6845 предназначен для символьных дисплеев, но также может использоваться для графики, основанной на пикселях, при умелом программировании. Среди известных применений — компьютеры BBC Micro, Amstrad CPC и видеокарты Videx VideoTerm для Apple II. Его функциональность была воспроизведена и расширена специализированными схемами в видеоадаптерах EGA и VGA для ПК.

Дизайн

Первоначально разработанный Hitachi как HD46505, чип производства Hitachi использовался в широком спектре японских компьютеров, включая модели Sony, Sharp, Panasonic и Casio. Позже он был клонирован Fujitsu под названием MB89321A. Также известен как CRTC 6845 или CRTC6845, что расшифровывается как "контроллер электронно-лучевой трубки". Эта версия применялась в компьютерах Apricot PC и Victor 9000 для обеспечения монохромного дисплея с разрешением 800x400. Распространенным клоном этого контроллера ЭЛТ является контроллер UM6845E производства United Microelectronics Corporation (UMC). В период действия технологических эмбарго во времена холодной войны 6845 был клонирован в Болгарии под обозначением CM607. 6845 был очень похож и тесно связан с более поздней моделью 6545, производившейся компаниями MOS Technology (Commodore Semiconductor Group) и Rockwell (в двух вариантах).

Ограничения

Используя полный диапазон адресов RA0–RA4:CA0–CA13, 6845 может адресовать слова памяти. Слово может иметь любую разрядность, определяемую разработчиком системы как ширину памяти: хотя количество уникальных адресов, которые может адресовать 6845, ограничено 524 288, объем адресуемой памяти может быть значительно больше, чем можно предположить, поскольку 6845 не накладывает ограничений на размер каждого ячейки памяти, к которой он обращается. Если размер слова равен одному байту, что часто встречается, 6845 может адресовать 512 КБ. Если размер слова составляет 32 бита, например, для 32-битной цветной графики с одним пикселем на слово, то 6845 может адресовать 2048 КБ; для 64-битных слов – вдвое больше. Эти ограничения обусловлены сочетанием возможностей 6845 и архитектурой внешней памяти, подключенной к нему, а не только характеристиками 6845.

Линейные рамные буферы

Как описано ранее, 6845 обычно не может обеспечить большие линейные фреймбуферы. Один из вариантов конструкции мог использовать только 14-битное адресование символов и установить количество строк в символе равным 1, но при этом был бы ограничен 128 строками и 16 КБ адресуемой памяти.

Отличия от 6545

Хотя они в основном совместимы, между 6845 и 6545 существует ряд небольших различий. Самое существенное отличие заключается в том, что 6545 может быть сконфигурирован для исключительного доступа к адресной шине видеопамяти. Для указания любого адреса, который ЦП хочет прочитать, предусмотрено два дополнительных регистра, и чип поочередно выдает адреса для генерации изображения и набор адресов для доступа ЦП. Менее значительные изменения заключаются в том, что в чипах MOS Technology и одной модификации Rockwell 6545 отсутствует поддержка строчной развертки, а все 6545 имеют дополнительную задержку адреса, которая при активации задерживает включение дисплея на один символьный цикл. Эта вторая функция была добавлена в более поздние версии Motorola 6845. 6545 может быть настроен на работу в линейном 14-битном режиме с помощью бита статуса. В 6845 для достижения того же эффекта требуется регулировка высоты символа.

Уловки

6845 считывает начальный адрес для своего дисплея один раз в кадр. Однако, если внутренние временные значения на чипе изменены в нужный момент, можно заставить его подготовиться к новому кадру, не завершая текущий, создавая прерывистый разрыв в генерируемых адресах посередине отображения. Это часто используется в демо-сценах и гораздо реже в играх для создания одной движущейся области дисплея (обычно игрового поля) и одной статической (обычно области отображения статуса). Вертикальная прокрутка кажется ограниченной, поскольку можно задать только начальный адрес символа, а адрес строки всегда обнуляется в начале кадра. Однако, регулируя время отображения границ, можно сместить положение фреймбуфера на растровом дисплее с шагом, меньшим, чем высота символа. Заполняя края экрана пустыми пикселями, это можно скрыть от пользователя, создавая иллюзию плавной вертикальной прокрутки.