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

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

Удобства, которые предоставляет пользователям компьютеров манипулятор «мышь», трудно переоценить, но… Ведь даже само наше Солнце не без пятен, что уж говорить о созданном «в незапамятные времена» 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

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

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

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

г. Минск

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

  • РЕСТАВРИРУЕМ КРЕСЛОРЕСТАВРИРУЕМ КРЕСЛО
    Мебели, предназначенной для сидения — стульям, креслам, табуреткам — в быту достается больше всего. А значит, и изнашивается она куда быстрее, чем какой-нибудь «глубокоуважаемый шкаф»....
  • МОДЕЛЬ-ПОБЕДИТЕЛЬНИЦАМОДЕЛЬ-ПОБЕДИТЕЛЬНИЦА
    Конструктор этой модели класса SЗA — Максим Шехватов, школьник из г. Электросталь (Московская обл.) и чемпион России 2001 г. в двух классах спортивных ракет — SЗA и S4A. Его модель...
Тут можете оценить работу автора: