Практикум по среде и языку QBasic________________________169
роко использует это внешнее устройство в других программных средствах. Тем не менее средства для использования такого экзотического устройства как световое перо в языке QBasic есть.
Подпрограммы, обеспечивающие взаимодействие внешних устройств с прикладными программами, называются драйверами. Если ваш компьютер работает с мышью, значит в составе программного обеспечения этот драйвер есть. Проблема состоит в том, чтобы обеспечить взаимодействие вашей программы с этим драйвером. Нет команд для работы с мышью и в QuickBasic, но в нем есть удобные средства для вызова драйвера мыши. Во-первых, в этом языке есть процедура INTERRUPT, во-вторых, для обмена информацией с внутренними регистрами процессора в нем предусмотрены переменные типов RegType, состоящая из 8 полей INTEGER, и RegTypeX, состоящая из 10 полей INTEGER. За неимением таковых в языке QBasic необходимо использовать вызов драйвера программой в машинных кодах, к которой можно обратиться как к подпрограмме только посредством процедуры ABSOLUTE.
Для того, чтобы написать подпрограмму для работы с мышью, ознакомимся с извлечением из стандарта фирмы Microsoft, которому должны удовлетворять драйверы мыши. Прежде всего обращение к драйверу должно осуществляться через прерывание ЗЗн (десятичный адрес 51). Как и для других видов прерываний выбор функции драйвера определяется содержимым регистра АХ на момент вызова прерывания:
• АХ = О ResetMouse — проверка загрузки драйвера. При загруженном драйвере возвращает значение -l (FFFFH) .
• АХ = 1 showMouseCursor — показ изображения курсора мыши. Показывает изображение курсора в соответствии с движениями мыши.
• АХ = 2 HideMouseCursor — изображение курсора мыши не показывается. Прячет изображение курсора, продолжая учитывать движения мыши.
• АХ = 3 ReadMouseState — чтение состояния мыши. Читает состояние кнопок и координаты курсора мыши. Номер столбца выдается в регистр СХ, номер строки - в регистр DX, состояние кнопок — в регистр ВХ. При этом нажатию левой кнопки соответствует число 2, а нажатию правой кнопки - число 8.
• АХ = 4 MoveMouseCursor — установка курсора мыши в заданную позицию. Устанавливает курсор в заданное положение в пределах экрана.
• АХ = 7 SetHorzMouseRange — установка ограничений по горизонтали. Устанавливает пределы передвижения курсора по горизонтали.
• АХ = 8 SetVertMouseRange—установка ограничений по вертикали. Устанавливает пределы передвижения курсора по вертикали.
• АХ = 9 SetMouseShape — установка формы курсора. Устанавливает форму курсора для графических режимов дисплея.