Железные призраки прошлого

Компьютерная история

СтатьиСтатьиСтатьи
Cтарое железо и софт

МузейМузейМузей
Старые компьютеры

МузейБаза данныхМузей
Старые компьютеры

ФорумФорумФорум
Полигон призраков

ОбщалкаКонкурсыКонкурсы
Статьи и фото



Искать на сайте:
Световое перо



Тестов Никита Александрович aka Geners

Эта статья посвящена устройству графического ввода, именуемого в народе «световой карандаш», «световая кисть» или «световое перо». Если кто-то подумал, что это как-то связано с темой фотографии – то он ошибся, это девайс не имеет ничего общего с тем ,что используют фотохудожники.


Итак, собственно по теме вопроса. Всем вам знаком привычный способ ввода координат положения курсора – это и «мышь» и так называемый «трекбол» (устройство, напоминающее перевернутую мышь). Первый знаком почти всем пользователям, а вот второй сейчас не так известен в силу некоторых обстоятельств. Устройства были дороже мыши и несколько непривычны в использовании и стали применяться в узких областях, таких как: разработка чертежей, управление системой навигации на суднах, у художников и иллюстраторов.

Устройства ввода, такие как «джойстики» и игровые планшеты, принимать во внимание не будем, как неприменимые к рабочему процессу.

Так или иначе, но есть на свете еще один прибор, позволяющий ввести координаты позиции курсора в компьютер - это и есть не заслуженно забытое «световое перо».


Принцип работы светового пера на удивление прост – сканирование областей экрана на повышенной яркость. Наверно, каждый из вас играл на игровых приставках во всякие игры типа «разбей блюдца», «подстрели утку» и т.д. И, конечно, каждый задавался вопросом: "Как пистолет попадает в цель?". На самом деле процесс на удивление прост: по сигналу от кнопки экран телевизора гаснет и вертикально делится на 2 равные части – одна засвечивается белым, другая остается не засвеченной. Так вот, в пистолете имеется схема (о которой поговорим позже), которая воспринимает засвеченное пространство и передает сигнал в процессор. Если засвечено - 1 ,а не засвечено - 0; так процессор решает, на какую область экрана направлен пистолет. Потом эта область делится еще на 2 части, но уже по горизонтали, и получаем четверть экрана, а дальше в таком же порядке, пока не получим координаты «выстрела», и, если в ячейке памяти, отвечающей за эту часть, есть маркер цели, то мы «убили утку».

Тут вы скажете, что такой процесс долог, и вы бы, вероятно, его заметили, но тут вы ошибаетесь. Наш глаз хоть и довольно точный, но инертный орган и сохраняет изображение предмета довольно долго, и этого времени хватает, чтобы определить местоположение вашего «выстрела», а дальше все наверняка замечают, что экран вспыхивает - «выстрел» и раздается соответвующий звук. На самом деле эти события происходят после того, как определены координаты. Надеюсь, я не слишком вас утомил?


Ну, тогда пойдем дальше. Принцип работы «светового пистолета» абсолютно аналогичен работе «светового пера». Тут резонно возникает вопрос – то телевизор, а то чудо современной техники - компьютер. И здесь вы немного ошибаетесь, все дело в том, что карты, рассчитанные на применение этого девайса, имеют параметры разверток почти аналогичные телевизионным, но за счет того, что они все-таки чуть выше, процессор быстрее, то эффекта замирания нет. А мерцание и так свойственно мониторам и графическим картам этого класса.

Хочу также заметить, что интерфейс пера интегрирован в карту!

Ну а теперь подробнее о его техническом устройстве.

Интерфейс «графического пера» (далее - LPEN) присутствует на всех картах семейства CGA, EGA, Hercules, MDA (MGA).

Почему же его нет ни на VGA, ни на SVGA? Ответ прост – с ростом компьютеризации периферия все более и более уходила от спецзадач. И разработчики посчитали ненужным поддержку LPEN, тем более, что частоты мониторов стали так высоки, что реализация бы стала чересчур сложна и дорога.

(Сознательно опускаю в этой статье «графические планшеты», как не относящиеся к делу, хотя они и являются потомками LPEN)


Итак:


Вот распиновка разъема на карте, к которому все и подключается


1 – lpen in

2 – nc

3 – lpen swith
4 – gnd (прошу заметить, не сигнальное, а общее)

5 - +5 vc

6 - +12 vc


Надеюсь, назначение контактов ясно.


Теперь приведем одну из схем LPEN:


Кликните для увеличения


Схема «пера» довольно простая, но в ней есть существенный недостаток, а именно: необходимое для работы отрицательное напряжение относительно общего провода. Оно необходимо для работы компаратора К521СА2. Для работы с компьютерами типа IBM PC необходимо заменить микросхему DA1 на К521СА3 или К544СА3, тогда для питания понадобиться только напряжение +5. В этом случае придется настроить работу транзисторов подбором номиналов R4 и R5.

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


Кликните для увеличения


Сейчас введется разработка более простой схемы LPEN, и в скором времени она будет опубликована на сайте.


Переходим к описанию программной составляющей.


Видеоадаптер CGA создан на основе микросхемы Motorola 6845, а видеоадаптеры EGA и VGA используют специализированные БИС-ы. Хотя EGA и VGA имеют регистры, соответствующие регистрам CGA, некоторые из них располагаются по другим адресам и могут выполнять дополнительные функции. Например, видеоадаптеры EGA и VGA могут вызывать аппаратное прерывание по линии IRQ2 в начале каждого обратного вертикального хода луча. Кроме того, в каждом новом видеоадаптере расширяется набор используемых регистров.

Автору приходилось встречать карты Hercules выполненные на монокристалле (см. фотографию)


Кликните для увеличения


Большая часть регистров CGA доступна только для записи, что создает определенные проблемы, особенно для мультизадачных систем.

Доступ к большинству регистров видеоадаптеров осуществляется в два этапа: через один порт ввода/вывода выбирается номер интересующего вас регистра, а затем через другой порт ввода/вывода осуществляется обмен данными. Это позволяет сэкономить большое число портов процессора.

Ниже, в таблице 1, приведен список адресов регистров видеоадаптера CGA.


Адрес Регистр
3D4 Регистры контроллера ЭЛТ
3D5 (CRT Controller Register's - CRT_CR)
3D8 Регистр установки режима
3D9 Регистр установки цвета
3DA Регистр состояния (Input Status Register - ISR)
3DB Регистр очистки тригера светового пера (Clear Light Pen Latch Register- CLPLR)
3DC Установка тригера-защелки светового пера (Set Light Pen Latch Register - SLPLR)


В таблице 2 приведены адреса памяти в зависимости от режима работы:


Номер режима работы Адрес памяти
0,1,2,3,4,5,6 B000:8000-B000:FFFF


Рассмотрим назначение регистров адаптера.

Регистры контроллера ЭЛТ управляют сигналами синхронизации, необходимыми для формирования растра, определяют формат данных на экране, форму курсора, а также управляют «световым пером».

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

Для видеоадаптеров, построенных на основе микросхемы Motorola 6845 - MDA, CGA и Hercules, контроллер ЭЛТ содержит 18 регистров.

В таблице 3 приведен список всех регистров контроллера ЭЛТ и их индексы, используемые для доступа к ним.


Индекс Регистр контроллера ЭЛТ
0 общая длина линии горизонтальной развертки (Horizontal Total Register - HTR)
1 длина отображаемой части горизонтальной развертки (Horizontal Displayed - HDR)
2 положение горизонтальной синхронизации (Horizontal Sync Position - HSR)
3 ширина горизонтального синхросигнала (Horizontal Sync Pulse Width Register - HSPWR)
4 число горизонтальных линий растра (Vertical Total Register - VTR)
5 выравнивание растра (Vertical Total Adjust Register - VTAR)
6 длина отображаемой части вертикальной развертки (Vertical Displayed - VDR)
7 положение вертикальной синхронизации (Vertical Sync Position Register - VSPR)
8 режим соединения (Interlace Mode Register - IMR)
9 высота символов текста (Max Scan Line Register - MSLR)
0Ah начальная линия курсора (Cursor Start Register - CSR)
0Bh конечная линия курсора (Cursor End Register - CER)
0Ch старший байт начального адреса (Start Address Register - SAR, high byte)
0Dh младший байт начального адреса (Start address Register - SAR, low byte)
0Eh старший байт позиции курсора (Cursor Location Register - CLR, high byte)
0Fh младший байт позиции курсора (Cursor Location Register - CLR, low byte)
10h старший байт адреса светового пера (Light Pen Address Register - LPAR, high byte)
11h младший байт адреса светового пера(Light Pen Address Register - LPAR, low byte)


Адресация регистров контроллера ЭЛТ происходит через два порта. В первый порт (индексный) записывается индекс регистра, к которому осуществляется доступ, а через второй порт (порт данных) можно производить обмен данными (запись или чтение). Учтите, что у видеоадаптера CGA большинство регистров контроллера ЭЛТ являются доступными только для записи. Только регистры SAR и CLR доступны как для записи, так и для чтения. У видеоадаптеров MDA и Hercules индексный порт имеет адрес 3B4h, а порт данных - адрес 3B5h. Для CGA адреса портов другие. Индексный порт имеет адрес 3D4h, а порт данных - адрес 3D5h.


Регистр адреса «светового пера» (LPAR)


Это 16-битовый регистр, который имеется в видеоадаптерах CGA и EGA, доступен только для чтения. Регистр LPAR дает возможность определить положение «светового пера» на экране. Регистр, содержащий старший байт адреса «светового пера» имеет индекс 10h, а регистр, содержащий младший байт - индекс 11h.

LPAR сохраняет адрес видеопамяти, которая регенерировалась в момент включения «светового пера».


Регистр сброса триггера-защелки «светового пера» (Light Pen Latch Reset Register - LPLRR)


Доступ к регистру производится через порт 3DBh. Любая операция записи (OUT) в этот регистр сбрасывает триггер-защелку «светового пера».


Регистр установки триггера-защелки «светового пера» (Light Pen Latch Set Register - LPLRR)


Доступ к регистру производится через порт 3DCh. Любая операция записи (OUT) в этот регистр вызывает установку триггера-защелки «светового пера».


Регистр состояния (Input Status Register - ISR0)


Регистр позволяет получить различную информацию о состоянии видеоадаптера. Содержимое регистра можно прочитать через порт, имеющий адрес 3DAh. Регистр состояния доступен только для чтения.

Регистр состояния имеет следующий формат:

  • D0 Бит разрешения отображения.
  • D1 Бит триггера «светового пера».
  • D2 Бит переключателя «светового пера».
  • D3 Бит обратного вертикального хода луча.
  • D7-D4 Биты не используются.
Ниже подробно рассмотрено назначение отдельных битов данного регистра.

  • D7-D4 Биты не используются.
  • D3 Бит обратного вертикального хода луча. Бит принимает значение 1 во время обратного вертикального хода луча по кадру.
  • D2 Бит переключателя «светового пера». Если переключатель «светового пера» находится в положении ON (включено), то бит D2 равен единице. Если же переключатель находится в положении OFF (выключено), то бит D2 равен нулю.
  • D1 Бит триггера «светового пера». Бит, равен единице, если триггер «светового пера» установлен.
  • D0 Бит разрешения отображения. Бит принимает нулевое значение во время интервала активности дисплея, то есть когда адаптер читает данные из видеопамяти и отображает их на экране. Бит, равен единице во время горизонтального и вертикального обратного хода луча. Если процессор обращается к видеопамяти во время интервала активности, то видеоадаптер CGA может создавать на экране эффект, называемый "снег", так как происходит конфликт между видеоадаптером CGA и процессором за право доступа к памяти. Сразу заметим, что в видеоадаптере EGA и более новых адаптерах этот недостаток устранен.
Для устранения "снега" на видеоадаптере CGA, возникает необходимость синхронизовать доступ процессора к видеопамяти с периодом вертикального или горизонтального обратного хода луча. Этого можно достичь тестированием данного регистра.

Ну, вот собственно и все, что можно рассказать по этой теме в столь сжатом размере. Если захотите узнать больше по программированию всей графической карты, то сейчас достаточно много информации по этому поводу, можно даже найти схемы адаптеров.

А захотите обсудить проблемы конструирования LPEN, всегда буду рад помочь в разумных рамках (не перекладывайте на меня всю работу – подумайте и сами).

На этом и закончим, всего хорошего и спасибо, что уделили время и прочитали статью до конца. Со всеми пожеланиями и сообщением об ошибках автор просит обращаться на gen_mob@bk.ru




Обсудить статью в специально созданной ветке форума.

© Текст, фотографии - Тестов Никита Александрович aka Geners

© Железные призраки прошлого - 2006 г.

Опубликовано 22 августа 2005 г.


Дополнения или поправки на phantom@sannata.ru

 

Обсудить статью в форуме     Оставить запись в гостевой книге.

Написать письмо авторам.



Вернуться в раздел

База данных по старым компьютерам | Музей старых компьютеров | Конкурсные статьи и фото | Ссылки



Авторские права и условия копирования материалов