nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 06:55



Reply to topic  [ 1 post ] 
RST 30h - работа с мышью (чтобы не откапывать каждый раз) 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Code:
  Интерфейс для работы с мышью:

  Взаимодействие с драйвером мыши осуществляется при помощи инструкции RST 30h.
В зависимости от конкретной функции, в качестве входных и выходных параметров
используются различные регистры, при этом номер функции задается в регистре C.
  Любые перемещения мыши и нажатие на клавиши воспринимает специальная программа
драйвер мыши. Каждое нажатие и отпускание клавиш или перемещение мыши вызывает
прерывание. Программа, обслуживающая это прерывание, читает пакет данных от мыши
и перемещает курсор мыши в зависимости от полученных данных.


 00h (00) INITIALIZATION      (Инициализация драйвера мыши)

входные данные:

  C - 00h

выходные данные:

  A - драйвер не установлен, если CF=1
  A - успешная инициализация, драйвер установлен, если CF=0

 Функция производит начальную инициализацию драйвера мыши. При возвращении флага
переноса драйвер не установлен.


 01h (01) SHOW MOUSE CURSOR     (Вывести курсор мыши на экран)

входные данные:

  C - 01h

выходные данные:

  A - код ошибки, если CF=1

  Функция выводит на экран курсор мыши и отслеживает все перемещения курсора и
перерисовывает его.


 02h (02) HIDE MOUSE CURSOR     (Убрать курсор мыши с экрана)

входные данные:

  C - 02h

выходные данные:

  A - код ошибки, если CF=1

  Функция стирает курсор мыши с экрана, но драйвер продолжает отслеживание
перемещения мыши и нажатие на кнопки.


 03h (03) READ MOUSE STATE     (Чтение состояния мыши)

входные данные:

  C - 03h

выходные данные:

  A - код ошибки, если CF=1
  A - состояние кнопок
      D0 - левая
      D1 - правая
 HL - x-координата
 DE - y-координата

  Функция возвращает текущие координаты курсора мыши и состояние ее кнопок.
Координаты возвращаются в точках и для текстовых режимов необходимо их делить
на восемь для получения координат в знакоместах.


 04h (04) GOTO MOUSE CURSOR     (Установка координат курсора мыши)

входные данные:

  C - 04h
 HL - x-координата
 DE - y-координата

выходные данные:

  A - код ошибки, если CF=1

  Установка координат курсора мыши. Функция перемещает курсор мыши в заданные
координаты.


 07h (07) VERT. BOUNDS     (Задание вертикальных границ перемещения курсора)

входные данные:

  C - 07h
 HL - y-минимальная
 DE - y-максимальная

выходные данные:

  A - код ошибки, если CF=1

  Функция задает верхнюю минимальную и нижнюю максимальную координаты в которых
может перемещаться курсор мыши по вертикали.


 08h (08) HORZ. BOUNDS     (Задание горизонтальных границ перемещения курсора)

входные данные:

  C - 08h
 HL - x-минимальная
 DE - x-максимальная

выходные данные:

  A - код ошибки, если CF=1

  Функция задает левую минимальную и правую максимальную координаты в которых
может перемещаться курсор мыши по горизонтали.


 09h (09) LOAD CURSOR     (Загрузка изображения курсора мыши)

входные данные:

  C - 09h
  B = 0
 IX - изображение курсора
  H - высота курсора
  L - ширина курсора
  D - Y активная точка
  E - X активная точка


выходные данные:

  A - код ошибки, если CF=1

  Функция загружает новое изображение курсора мыши в драйвер и задать активную
точку изображения.


 0Ah (10) CURSOR TEXT MODES     (Установка курсора мыши в текстовом режиме)

входные данные:

  C - 0Ah
  B = 0
  H - AND SIMBOL MASK
  L - XOR SIMBOL MASK
  D - AND ATTRIBUT MASK
  E - XOR ATTRIBUT MASK

выходные данные:

  A - код ошибки, если CF=1

  функция устанавливает символ и атрибут курсора мыши для текстового режима.


 0Bh (11) RETURN CURSOR     (Получение изображения курсора мыши)

входные данные:

  C - 0Bh
 IX - буфер для изображения курсора

выходные данные:

  A - код ошибки, если CF=1
  H - высота курсора
  L - ширина курсора
  D - Y активная точка
  E - X активная точка

  Функция возвращает изображение курсора мыши из драйвера.


 0Eh (14) GET SENSETIVE     (Чтение чувствительности мыши)

входные данные:

  C - 0Eh

выходные данные:

  A - код ошибки, если CF=1
  H - чувствительность по вертикали
  L - чувствительность по горизонтали

  Функция возвращает значения чувствительности перемещения мыши по вертикали и
горизонтали.


 0Fh (15) SET SENSETIVE     (Установка чувствительности мыши)

входные данные:

  C - 0Fh
  H - чувствительность по вертикали
  L - чувствительность по горизонтали

выходные данные:

  A - код ошибки, если CF=1

  Функция устанавливает значения чувствительности перемещения мыши по вертикали
и горизонтали.


 80h (128) MOUSE HARDWARE INTERRUPT  (Обработчик аппаратного прерывания от мыши)

входные данные:

  C - 80h

выходные данные:

  A - код ошибки, если CF=1

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


 81h (129) CHANGE VIDEO MODE        (Информирование о смене режима экрана)

входные данные:

  C - 81h
  A - режим экрана

выходные данные:

  A - код ошибки, если CF=1

  Функция информирует драйвер мыши об изменении режима экрана. Номера режимов
соответствуют функции установка режима экрана.


 83h (131) MOUSE REFRESH         (Принудительная перерисовка курсора)

входные данные:

  C - 83h

выходные данные:

  A - код ошибки, если CF=1

  Функция перерисовывает изображение курсора мыши на экране не дожидаясь
очередного прерывания.

 коды ошибок от драйвера мыши:

   0 - нет ошибок
   1 - неизвестная функция
   2 - зарезервирована
   3 - курсор уже на экране
   4 - курсор отсутствует на экране
   5 - изображение курсора слишком велико


_________________
:dj: https://mastodon.social/@Shaos


29 May 2013 09:27
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 1 post ] 

Who is online

Users browsing this forum: No registered users and 11 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.