«МЫШКА» СТАНЕТ РЕЗВЕЕ

«МЫШКА» СТАНЕТ РЕЗВЕЕ

Удобства, которые предоставляет пользователям компьютеров манипулятор «мышь», трудно переоценить, но… Ведь даже само наше Солнце не без пятен, что уж говорить о созданном «в незапамятные времена» MOUSE. СОМ-драйвере!

По мере приобретения опыта многие пользователи компьютеров ЕС1840 или ЕС1841 начинают предъявлять к «мышке» повышенные требования. В частности, к недостаточно высокой скорости перемещения курсора. А обоснованность своих все возрастающих претензий подтверждают наглядным примером: для перемещения курсора в Norton Commander через весь экран приходится «отвоевывать» на рабочем столе много места. Что же, все это верно. Как, впрочем, справедливо и другое. Чувствительность у «мышки» можно, оказывается, изменить, воспользовавшись (см. Касаткин А. И. Системное программирование. Минск, Высшая школа, 1993, с. 195.) функцией:

AX=000Fh.

Драйвер MOUSE.COM создает при загрузке прерывание 33h.

Функция 0Fh данного прерывания как раз и позволяет устанавливать желаемую чувствительность драйвера. Необходимо лишь в регистр АХ занести 0Fh, в СХ — чувствительность «мышки» по горизонтали, а в DX — чувствительность по вертикали. Вдобавок после загрузки MOUSE.COM в регистры СХ и DX заносится какое-либо целое число. Причем чем меньшее число (а минимальное здесь может быть равно 1) содержится в этих двух регистрах, тем больше у «мышки» чувствительность.

Сказанное выше иллюстрируется программой:

.MODEL TINY

.CODE

ORG 100H

Begin:

mov ax,0Fh

mov cx,1

mov dx,1

int 33h

end Begin.

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

Предлагаемая читателям-пользователям ЕС1840 (ЕС1841) программа перехватывает прерывание 1Ch (пользовательский таймер) и остается резидентной. Как показала практика, она с успехом работает в Norton Commander и других программах, поддерживающих работу с «мышкой».

A mouse.asm

Copyright 1995 by AYP

.MODEL TINY
.СОDЕ
ORG 100H
begin
jmp init;Перейти на начало ;инициализации

;ре­зидентной части

int 1        ch proc far;Процедура обработ­

;ки прерывания 1 Ch

push ax;Сохранить рабочие

;регистры в стеке

push bx
push cx
push dx
push di
push si
push bp
mov ax.000Fh;Изменить чувстви-

;­тельность мыши

mov cx,1;на максимальную
mov dx,1
int 33h;Установить чувст­ви-

;тельность

pop bp;Восстановить ра­-

;бочие регистры

pop si
pop di
pop dx
pop cx
pop bx
mov a1,20h;Необходимое

;действие для вы-

;хода из

out 20h,a1;обработчика пре­-

;рывания

pop ax

iret

int 1 сhendp
init;Инициализация ;резидентной части
mov ah,09;Напечатать заго­-

;ловок программы

leadx.cop
int21h
mov ах,0;Инициализация

;мыши

int33h
cmp ах,0;Мышь присутствует?
jne resid;Да — продолжить
mov ah,09;Нет — выдать сооб­-

;щение

leadx.mess
int21 h
ret;и выйти
messdb’Нет мыши!!!’ ,10,13,’$’
resid
cli;3апрет преры-

;ва­ний

mov dx,offset int 1 ch
mov ax,251 Ch;Изменить вектор ;прерывания 1 Ch
int21 h
sti;Разрешить пре-

;ры­вания

mov dx, off set init
int      27h;Завершить про-

;грамму и остаться ;резидентной

copdb’AMOUSE-драйвер ’чувствительности мыши.’ 10,13
db

db

db

db

’Copyright 1995 by’,10,13 ’ Assotiation’, 10,13 ’Young’,10,13 ’

’Programmers’, 10,13,’$’

endbegin

При загрузке программы происходит инициализация «мышки» и проверка ее присутствия. Если «мышка», как говорится, налицо, программа, завершая свое выполнение, остается резидентной. Более того, часть резидентной программы сначала сохраняет рабочие регистры в стеке, чтобы не нарушать работу компьютера. А затем изменяет чувствительность «мышки» и восстанавливает рабочие регистры.

Текст программы, написанный на языке Турбо-Ассемблер, приводится.

В.КОВАЛЕНКО,

г. Минск

Рекомендуем почитать

  • БАТАРЕЙКА, ВАС ОСВЕЖИТЬ?БАТАРЕЙКА, ВАС ОСВЕЖИТЬ?
    Еще учась в школе, я восстанавливал отработавшие батарейки карманного приемника довольно примитивным, но действенным способом. С помощью плоскогубцев аккуратно вынимал грифельный...
  • ПО ЛЮБОМУ СНЕГУПО ЛЮБОМУ СНЕГУ
    Всякий охотник или любитель зимнего туризма знает, как тяжело идти по снежной целине даже на широких охотничьих лыжах. Если учесть еще массу снаряжения (рюкзак, ружье, припасы), то...