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

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

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






Для работы по управлению манипулятором и организации ввода информации прикладная программа выполняет различные функции прерывания ЗЗ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; просмотров: 607. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Законы Генри, Дальтона, Сеченова. Применение этих законов при лечении кессонной болезни, лечении в барокамере и исследовании электролитного состава крови Закон Генри: Количество газа, растворенного при данной температуре в определенном объеме жидкости, при равновесии прямо пропорциональны давлению газа...

Ганглиоблокаторы. Классификация. Механизм действия. Фармакодинамика. Применение.Побочные эфффекты Никотинчувствительные холинорецепторы (н-холинорецепторы) в основном локализованы на постсинаптических мембранах в синапсах скелетной мускулатуры...

Шов первичный, первично отсроченный, вторичный (показания) В зависимости от времени и условий наложения выделяют швы: 1) первичные...

Приложение Г: Особенности заполнение справки формы ву-45   После выполнения полного опробования тормозов, а так же после сокращенного, если предварительно на станции было произведено полное опробование тормозов состава от стационарной установки с автоматической регистрацией параметров или без...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

Неисправности автосцепки, с которыми запрещается постановка вагонов в поезд. Причины саморасцепов ЗАПРЕЩАЕТСЯ: постановка в поезда и следование в них вагонов, у которых автосцепное устройство имеет хотя бы одну из следующих неисправностей: - трещину в корпусе автосцепки, излом деталей механизма...

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