Наиболее важной является подфункция 3, которая сообщает текущие координаты курсора в пикселах (х=CX, у=DX) и состояние кнопок мыши в момент вызова подфункции (BX=1 — нажата левая кнопка, BX=2 — нажата правая кнопка, BX=4 — нажата средняя кнопка). В принципе, значением вх может быть любая комбинация одновременно нажатых кнопок. В текстовом режиме значения координат однозначно определяются номерами текущей строки (row) и текущего столбца (col):
x=8*(col-l) y=8*(row-l)
В этом вы можете убедиться на примерах следующих программ, построенных по единой схеме. После "сброса" драйвера дается 5-секундная задержка, чтобы рассмотреть текст сообщения о состоянии драйвера и мыши (курсор в это время не виден). Затем включается режим отображения курсора. Далее 60 раз с задержкой в 1 с выполняется цикл, в котором Опрашивается и отображается на экране состояние мыши. Во время этого цикла вы можете перемещать курсор мыши, устанавливая его на пронумерованные позиции строк экрана и зажимая ту или иную кнопку. Координата х при этом меняется от 0 до 632, а координата у — от 0 до 192.
Программа 10_3.bas
' Модификация программы [7], использована первая версия подпрограммы в ' машинных кодах)
DATA &Н60,SH1E,SH0E,SH1F,&НА1,&Н18,SH00,&HCD, &H33,&H89
DATA &H1E,&H1A,&H00,&H89,SH0E,&H1C,&H00,&H89,&H16,&H1E
DATA &H00,&H1F,&H61,&HCB
DIM IntProgd T0 16) AS INTEGER
' установка сегмента для работы подпрограммы DEF
SEG=VARSEG(IntProg(1)}
' установка смещения для работы подпрограммы
Int33&=VARPTR(IntProg(1))
' Перепись подпрограммы из блока данных в массив побайтно
F0R j%=0 T0 23
READ K%: P0KE IntDos&+j%, К% NEXT j%
' Роспись экрана линейками через строку
CLS
C0L0R 7,1
F0R I=1 ТО 11
F0R j%=0 T0 79
PRINT USING "#";j% M0D 10;
NEXT j%
PRINT : PRINT NEXT I COLOR 7,0
IntProg(13)=0: ' Подфункция сброса драйвера мыши
CALL ABSOLUTE(Int33&) LOCATE 2,1
IF IntProg(13)=-1 THEN