172____________________________________________

XCHGM(16)=3 'номер функции чтения состояния курсора FOR J% = 1 ТО 60 'начало цикла проверки чтения

CALL ABSOLUTE (MXMOUSE&)

'вызов подпрограммы для чтения состояния курсора

LOCATE 2, 1 'вывод с начала второй строки

PRINT XCHGM(17) ; XCHGM(18) ; XCHGM(19) ; J%

'вывод состояния курсора

SLEEP I ' задержка на 1 с NEXT J% 'конец цикла проверки чтения SLEEP 'ожидание DEF SEG 'восстановление значения сегмента

На вторую строку экрана выводится содержимое регистров вх, сх и DX, за которыми следует номер цикла. Как показала проверка, нажатию левой кнопки соответствует 1, правой — 2 (содержимое вх). Перемещению курсора в горизонтальном направлении соответствует изменение сх в пределах от 0 до 632 с шагом 8, то есть номер столбца на 1 больше частного от деления сх на 8. Аналогично перемещению курсора в вертикальном направлении соответствует изменение DX от 0 до 192 с шагом 8, то есть номер строки на 1 больше частного от деления DX на 8. После 60 циклов чтения состояния курсора можно не торопясь рассмотреть изображение курсора на экране, куда выведены разноцветные полоски с разноцветными символами звездочек. Двигая мышью по коврику (или по столу), вы можете убедиться, что изображение курсора может занимать только те же положения, что и символы. Убедитесь также, что курсор изменяет коды цвета как символа, так и фона. При этом изменение атрибута в соответствующей ячейке ОЗУ дисплея соответствует поразрядному изменению 7 младших разрядов их двоичного кода (функция XOR с кодом 7FH). По окончании наблюдений для возврата в среду достаточно нажать 2 раза любую клавишу.

Итак, в результате десятого и последнего занятия по изучению языка QBasic вы ознакомились на полезном для игровых программ примере каким образом можно обращаться к подпрограммам, написанным на машинно-ориентированном языке.

В заключение раздела по среде и языку следует заметить, что нам не удалось изучить все команды языка QBasic. Это с одной стороны невозможно (ввиду ограниченного объема книги), а с другой стороны и не нужно (потому что не все команды могут вам понадобиться). Самым главным результатом этого практикума по замыслу автора должно быть получение опыта в методике ознакомления с работой команд и практического изучения возможностей их использования. Какой бы хорошей ни была техническая документация по языку программирования, возможность неправильного или неточного ее понимания программистом всегда остается. Поэтому при самых малейших сомнениях в использовании тех или иных конструкций языка рекомендуется составить небольшую программу, при работе с которой можно уточнить все интересующие вас тонкости.