Студопедия — Подготовительные операции программы
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Подготовительные операции программы






Для работы по управлению манипулятором и организации ввода информации прикладная программа выполняет различные функции прерывания ЗЗh. В настоящее время большинство драйверов «мыши» поддерживают стандарт, введенный фирмой Мicrosoft для различных функций прерывания ЗЗh. Многие системы программирования имеют в своем составе библиотечные функции, выполняющие обращение к той или иной функции прерывания ЗЗh. Библиотечные функции работают медленнее, чем непосредственное обращение к прерыванию ЗЗh из прикладной программы. Кроме того, многие программисты в нашей стране используют неполные или даже несанкционированные копии систем программирования, в которых библиотеки поддержки манипулятора отсутствуют или работают некорректно. Поэтому в дальнейшем приводятся примеры непосредственного обращения к прерыванию ЗЗh, а не библиотечные функции ТuгЬо С.

Каждая программа, использующая для ввода информации манипулятор «мышь», должна выполнить ряд под­готовительных операций:

1) определить, инсталлирован ли драйвер «мыши»;

2) задать вид и форму курсора манипулятора;

3) описать границы перемещения курсора «мыши» по экрану;

4) описать «чувствительность» курсора, равную числу «микки», приходящихся на один пиксель экрана по горизонтали и вертикали;

5) установить порог «удвоенной» скорости курсора «мыши»;

6) «включить» курсор манипулятора (сделать его видимым на экране);

7) установить курсор в начальную позицию на экране в соответствии с нуждами программы.

Многие из этих действий помогает осуществить функции инициализации и определения текущего состояния драйвера манипулятора (АХ = 0000h). Ниже приводится спецификация этой функции.

При вызове в АХ =0000h. Возврат в АХ – состояние оборудования:

АХ =0000h – отсутствует драйвер «мыши» (отсутствует аппаратура, не загружен драйвер);

АХ =FFFFh — «мышь» готова к работе;

ВХ – количество кнопок манипулятора:

ВХ =0003h – не две кнопки;

ВХ =002h – две кнопки (режим Мicrosoftmode);

ВХ =000Зh – три кнопки (режим Мousemode).

При выполнении функции АХ = 0000h драйвер манипулятора приводится в состояние по умолчанию:

1) курсор манипулятора установлен в центре экрана и выключен;

2) чувствительность манипулятора по вертикали равна 2 микки/пиксель, по горизонтали – 1 микки/пиксель;

3) порог удвоенной скорости установлен равным 64 микки/с;

4) установлена форма курсора по умолчанию;

5) координаты левого верхнего угла области перемещения курсора манипулятора соответствуют координатам (0, 0), а координатынижнего правого угла области перемещения манипулятора – максимальным координатам текущего видеорежима минус 1.

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

Для определения работоспособности «мыши» необходимо выполнить функцию АХ = 0000h и проанализировать возврат в АХ. Если АХ = -1, это указывает на готовность манипулятора к работе. Здесь следует сделать два замечания. Первое из них состоит в том, что операционная система MS-DOS «цепляет» при загрузке за вектор прерывания ЗЗh «заглушку» из единственной инструкции IRET. Поэтому выполнение инструкции INT ЗЗh даже при отсутствии драйвера не порождает никаких проблем. Второе замечание заключается в том, что успешное завершение инициализации не означает, однако, что аппаратура адаптера или самого манипулятора исправна, а свидетельствует только о том, что загружен драйвер «мыши» В ряде случаев драйвер «мыши» передает в манипулятор заранее заданную последовательность слов информации. Эти слова вызывают в манипуляторе генерацию ответного “эха”, анализкоторого позволяет драйверу однозначно опознать “свою” аппаратуру манипулятора и проверить исправность цепей приема информации адаптера асинхронной последовательной связи.

Приводимый далее фрагмент С -кода иллюстрирует использование функции инициализации манипулятора «мышь».

 

Инициализация “мыши”.

АХ = 0

Geninterrupt (0x33);

If (AX = = 0)

Puts (“НЕТ ”мыши! ”);

exit (-1);

Успешное завершение инициализации позволяет продолжить работу прикладной программы по подготовке к использованию «мыши». Следующая операция связана с определением типа и формы курсора. Драйверы «мыши» в текстовом режиме работы видеоадаптера поддерживают два типа курсора:

1) “жесткий”, совпадающий с обычным курсором текстового режима в форме нескольких сплошных телевизионных строк в пределах знакоместа;

2) программируемый, представляющий собой знакоместос измененным атрибутом символа и, возможно, со специфицированным пользователем символом. Курсор «мыши» в текстовом режиме перемещается по знакоместам экрана. Выбор типа и параметров курсора «мыши» в текстовом режиме работы видеоадаптера выполняется с помощью функции АХ = 0Ah прерывания 33h, спецификация которойприводитсядалее.

При вызове:

АХ= 000Ah – установка курсора «мыши» в текстовом режиме;

ВХ - выбор типа курсора:

ВХ =00 – программируемый курсор;

ВХ =01 – «жесткий» курсор;

СХ – AND-маска (маска экрана) для программируемого курсораили номер верхней скэн-линии для «жесткого» курсора;

DX – XOR-маска (маска курсора) для программируемого курсора или номер нижней скэн-линии для жесткого курсора.

Возврат: нет.

Если выбран «жесткий» курсор, то курсор мыши на экране имеет форму обычного текстового. Преимуществом такого курсора является то, что на экране присутствует только один привычный курсор и при любой операцииввода информации с использованием функций MS-DOS (например, функций стандартного ввода-вывода) кypcор «мыши» автоматически перемещается в текущую текстовую позицию BIOS. Это не означает, однако, что драйвер «мыши» при перемещении курсора обновляет слово текущей позиции курсора в области данных BIOS. Поэтому без дополнительных усилий со стороны программиста не удается поместить символ на экране в позицию, на которую указывает курсор «мыши».

При формировании программируемого текстового курсора используется: 1) слово видеопамяти, образованное символом и атрибутом знакоместа экрана, в котором находится курсор манипулятора – screen_word; 2) AND-маска – AND_mask; 3) XOR-маска – XOR_mask. Результирующее представление курсора на экране формируется поразрядными логическими операциями по формуле

screen_ word = screen_ word AND AND_ mask XOR XOR_ mask.

При перемещении курсора в другую позицию предыдущее содержимое видеобуфера восстанавливается. Таким образом, пользователь может установить различные формы программируемого текстового курсора «мыши». Например, задание AND_mask = 00FFh и XOR_mask = хх00h приведет к тому, что текстовый курсор будет прямоугольником, сохраняющим любой предыдущий символ, атрибут которого хх. Младшая шестнадцатеричная цифра будет задавать цвет контура символа, а старшая – цвет фона. При этом, однако, возможно «исчезновение» курсора, если атрибут символа уже был равен хх. Распространенным является программируемый текстовый курсор со следующими значениями: AND_mask = FFFFh и XOR_mask = 7700h. В этом случае инвертируется как цвет фона, так и цвет атрибута, что гарантирует видимость курсора и не изменяет символ в позиции курсора. Нетрудно добиться того, чтобы курсор «мыши» на экране отображался в виде нужного символа. Например, для того чтобы, текстовый курсор «мыши» имел форму «птички» (ASCII-код FBh), необходимо задать такие маски: AND_mask – 0000h и XOR_mask – xxFBh, где хх задает атрибут символа курсора.

В графическом режиме работы видеоадаптера может быть описана любая собственная форма курсора в пределах прямоугольника 16 х 16 пикселей. Курсор в графическом режиме описывается двумя масками размером 16 х 16 бит каждая. Одна из масок называется AND-маской (маской экрана), другая – XOR-маской (маской курсора ). При перемещении курсора предыдущее содержимое экрана восстанавливается драйвером «мыши». Маски, комбинируясь, определяют способ обработки текущего кода цвета пикселя на экране. Результаты обработки представлены в табл. 1.

 

Табл. 1. Формирование кода цвета пикселей изображения курсора «мыши»







Дата добавления: 2014-11-10; просмотров: 615. Нарушение авторских прав; Мы поможем в написании вашей работы!



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

САНИТАРНО-МИКРОБИОЛОГИЧЕСКОЕ ИССЛЕДОВАНИЕ ВОДЫ, ВОЗДУХА И ПОЧВЫ Цель занятия.Ознакомить студентов с основными методами и показателями...

Меры безопасности при обращении с оружием и боеприпасами 64. Получение (сдача) оружия и боеприпасов для проведения стрельб осуществляется в установленном порядке[1]. 65. Безопасность при проведении стрельб обеспечивается...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Огоньки» в основной период В основной период смены могут проводиться три вида «огоньков»: «огонек-анализ», тематический «огонек» и «конфликтный» огонек...

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

Влияние первой русской революции 1905-1907 гг. на Казахстан. Революция в России (1905-1907 гг.), дала первый толчок политическому пробуждению трудящихся Казахстана, развитию национально-освободительного рабочего движения против гнета. В Казахстане, находившемся далеко от политических центров Российской империи...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия