1

Я размышлял об этом некоторое время сейчас. Я понимаю, что в наши дни графические карты хранят информацию о пикселях в своей выделенной памяти и выводят эту информацию через карту и на экран. У коммодора 64 и большинства старых компьютеров, насколько я понимаю, не было этих видеокарт с выделенной памятью. Я полагаю, они могли бы зарезервировать часть своей системной памяти как своего рода буфер кадров. Процессор может вычислить значения пикселей и сохранить данные в этом буфере кадров, а затем вывести эту информацию на экран. Так работали эти старые компьютеры или это какой-то другой процесс?

3 ответа3

3

Да, это в основном то, как видео были сделаны в те дни. В качестве видеобуфера была зарезервирована память от 1 до 8 кБ, ЦП рассчитал вывод и сохранил его в ОЗУ.

Однако есть некоторые отличия от современной видеокарты:

  • Не было интерфейсов с высоким разрешением, таких как HDMI или VGA. Обычно композитное видео с цветовой схемой NTSC или PAL использовалось для подключения домашних компьютеров к телевизору.
  • Для текстового режима только код ASCII был сохранен байт для байта в памяти. Видеомонтаж имел небольшое ПЗУ, содержащее 5х7 точек для каждого символа. Таким образом, экран размером 40x25 символов может быть сохранен всего за 1 кБ.
  • Существовали специальные чипы, такие как Intel 8275, которые объединяют все (доступ к буферной памяти, генерация тактовой частоты пикселей и синхронизацию для мониторов NTSC, доступ к ПЗУ с символьными точечными ПЗУ и т.д.), Но иногда вся логика видео строилась с помощью логических ИС TTL ( пример: Apple II).
  • Поскольку оперативная память была разделена, видео схема использовала DMA или другой метод для прерывания ЦП для доступа к ОЗУ. Видеосхема почти всегда имела более высокий приоритет, поскольку не было никаких конвейеров для буферизации данных, а выходной видеосигнал в пикселях был критичным по времени.
1

Я предполагаю, что вы говорите о домашних компьютерах конца 1970-х / начала 1980-х. Эти компьютеры работали, как вы и предполагали. Были некоторые сложности, такие как аппаратные спрайты, переопределяемые символы и нелинейные макеты памяти, но в основном все эти компьютеры имели, по крайней мере, текстовый режим, в котором символы сохранялись как байты в памяти; а затем у более и более изумительных была цветная и растровая графика.

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

0

Микропроцессор 6502 должен использовать свою шину памяти для половины каждого цикла; многие компьютеры в конце 1970-х и начале 1980-х годов воспользовались этим, построив свою систему памяти, чтобы она подключала 6502 к памяти в течение одной половины цикла и подключала видео схемы во второй половине. Интересно отметить, что Apple II, Vic-20 и Commodore 64 использовали разные подходы к синхронизации видео.

Apple II извлекал один байт видеопамяти за цикл ЦП, который определял, какой символ должен отображаться. Высота символов составляла восемь строк сканирования, поэтому каждый байт символьных данных получался восемь раз за кадр - по одному разу в каждой из восьми последовательных строк. Затем в качестве адреса в ПЗУ размером 512х5 бит будут использоваться шесть битов выбранного символьного байта вместе с нижними 3 битами символа строки развертки. Два верхних бита извлеченного символа будут выбирать нормальный, обратный или мигающий режим.

VIC-20 использовал более широкие символы и выбирал символ каждый цикл ЦП; в цикле после каждой выборки символов он будет принимать 8-битные символьные данные вместе с 3-мя битами числа строк развертки, добавлять это значение к значению, запрограммированному в регистре, извлекать байт с этого адреса и отображать его как восемь последовательные пиксели. Этот подход означал, что формы символов можно хранить в ОЗУ, а не в ПЗУ, и перепрограммировать как удобно (адрес памяти символов можно также установить в ПЗУ, если это необходимо, для экономии 2 КБ ОЗУ).

Commodore 64 должен был извлекать два байта на символ, как VIC-20, но ему нужно было выводить символы на экран вдвое быстрее (как Apple). Чтобы уравновесить эти потребности, пока он показывает первую строку сканирования каждой строки текста, он чередуется между извлечением символов и извлечением их форм, в то время как процессору не разрешено ничего делать. Однако при получении символьных данных видеочип также копирует их в 40-байтовый буфер. В то время как отображаются следующие семь строк текста, видеочип извлекает символьные данные из этого буфера, а не из ОЗУ, что позволяет ЦПУ делить свою долю циклов. Это позволяет системе отображать больше текста, например Apple, а также позволяет перепрограммировать символьные шрифты, такие как VIC-20. К сожалению, он останавливает ЦП 25 раз за каждый кадр, каждый раз на 41-43 цикла (запуск / останов ЦП добавляет 3 цикла неопределенности)- проектное решение, которое было разумным в то время, но имело некоторые печальные последствия (худшее из Это означало, что дисковод должен ждать достаточно долго после отправки каждого бита, чтобы обмен данными не был поврежден из-за того, что видеочип нарушил работу процессора в течение 43 циклов).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .