RST 30h - работа с мышью (чтобы не откапывать каждый раз)

Компьютер "Спринтер" http://sprinter.nedopc.org

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

RST 30h - работа с мышью (чтобы не откапывать каждый раз)

Post by Shaos »

Code: Select all

  Интерфейс для работы с мышью:

  Взаимодействие с драйвером мыши осуществляется при помощи инструкции 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 - изображение курсора слишком велико

Я тут за главного - если что шлите мыло на me собака shaos точка net