Н. Арбузов

Совет

Недавно прочитал в вашем журнале (8/1990) в статье Д.Ю. Усенкова "О некоторых периферийных устройствах для БК 0010" об устройстве ввода УВК-1 (мышь) и решил купить. Купил, подключил, набрал программу, приводимую в инструкции по эксплуатации, - мышь работает. Но как к ней обращаться программно, в инструкции не написано. Надо самим разбираться в приведённой программе. Для тех, кто знает коды, это просто. А для тех, кто не знает? Что им делать?

Чтобы они не мучились, хочу дать совет: Надо сначала инициировать порт ввода-вывода, заслав туда число, скажем, десять (в восьмеричной), только затем в ячейке с адресом 1777148 появляются коды поступающих от "мыши" сигналов. Привожу программу обращения к УВК.

10 X%=100%                      ' задание начальной координаты по X
20 Y%=100%                      ' задание начальной координаты по Y
30 C%=1%                        ' задание начального цвета
40 P%=&0177714                  ' инициализация
50 L%=PEEK(P%)                  ' порта
60 POKE P%,0%                   ' ввода
70 POKE P%,&O10                 ' вывода
80 IF L%=&01 THEN Y%=Y%-1%      ' определения
90 IF L%=&04 THEN Y%=Y%+1%      ' кода
100 IF L%=&010 THEN X%=X%-1%    ' поступившего
110 IF L%=&02 THEN X%=X%+1%     ' от
120 IF L%=&040 THEN C%=1%       ' мыши
130 IF L%=&0100 THEN C%=0%
140 IF L%=&0140 THEN END
150 PSET (X%, Y%), C%           ' установка точки
160 PSET (X%, y%), C%           ' с координатами X, Y
170 GOTO 50

Тут же привожу таблицу кодов, поступающих от мыши

Манипуляция мыши

Код на порту ввода-вывода

Вверх

1

Вниз

4

Вправо

2

Влево

108

Клавиша ‘Л‘

408

Клавиша ‘П‘

1008

 

Все остальные операции являются суммой предыдущих, например, при одновременном нажатии клавиш ‘Л‘ и ‘П' появляется код 1408, и т.д.

Так же, пользуясь случаем, хочу сказать несколько слов о спрайтах на БЕЙСИКе. В журнале ИНФО (2/1990) говорилось о спрайтах, но там написано, как их помещать в память, а как сделать так, чтобы они перемещались по экрану и не стирали изображения?

Ниже привожу программу, которая позволяет перемещать спрайты размером 8x8 с помощью клавиш управления курсором, не стирая при этом изображения нарисованного до этого.

Конечно, эту программу можно было бы уменьшить, заносить спрайт не прямо непосредственно в программу, а в оператор DATA или в какую-нибудь область ОЗУ, но для простоты и большего быстродействия привожу её не сокращённой.

Эту программу можно переделать на мышь, изменив и вставив некоторые строки...

70 K%=PEEK(&O177714)
71 POKE &O177714,0%
72 POKE &O177714,8%

Вот эта программа:

10 PRINT CHR$(140%)+CHR$(140%) 'установка экрана.
20 FOR Y%=1 TO 20
30 FOR X%=1 TO 26 STEP 6
40 PRINT AT (X%,Y%); "SPRITE;"
50 NEXT X%
60 NEXT Y%
70 K%=PEEK (&O177662)
80 IF K%=8% THEN I%=I%-2%
90 IF K%=25% THEN I%=I%+2       'опрос клавиатуры
100 IF K%=26% THEN I%=I%-128%
110 IF K%=27% THEN I%=I%+128%
120 IF &H5000+I%<&H400 THEN I%=I%+128%  ' предохранение от
130 IF &H5000+I%>&H7E00 THEN I%=I%-128% ' наездов спрайта на ОЗУ
140 A1%=PEEK(&H5000+I%)
150 A2%=PEEK(&H5040+I%)
160 A3%=PEEK(&H5080+I%)     'запоминание предыдущего
170 A4%=PEEK(&H50C0+I%)
180 A5%=PEEK(&H5100+I%)     'изображения
190 A6%=PEEK(&H5140+I%)
200 A7%=PEEK(&H5180+I%)
210 POKE &H5000+I%,&HAEAE
220 POKE &H5040+I%,&HABAE
230 POKE &H5080+I%,&HAAEE
240 POKE &H50C0+I%,&HAABE   'запись спрайта на это место
250 POKE &H5100+I%,&HAAEE
260 POKE &H5140+I%,&HABAE
270 POKE &H5180+I%,&HAEAE
280 FOR M=1 TO 20           'пустой
290 NEXT M                  'цикл
300 POKE &H5000+I%,&B00
310 POKE &H5040+I%,&B00
320 POKE &H5080+I%,&B00     'стирание спрайта
330 POKE &H50C0+I%,&B00
340 POKE &H5100+I%,&B00
350 POKE &H5140+I%,&B00
360 POKE &H5180+I%,&B00
370 POKE &H5000+I%,A1%
380 POKE &H5040+I%,A2%
390 POKE &H5080+I%,A3%      'запись изображения
400 POKE &H50C0+I%,A4%
410 POKE &H5100+I%,A5%
420 POKE &H5140+I%,A6%
430 POKE &H5180+I%,A7%
440 GOTO 70

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

Заключение рецензента

Предлагаемые программы представляют интерес для начинающего программиста.

Хотя имеются программы достаточно высокого уровня в кодах для обращения к "мыши" и для создания движущихся без стирания фона спрайтов (например, в статье О.Д. Любутова, серия ВТ 1/1991, с. 33), но для начинающего программиста предлагаемые простые программы на БЕЙСИКе полезны и поучительны. Желающие могут доработать вторую программу с тем, чтобы получить шаг перемещения спрайта не на ширину курсора, а па одну точку.

Ю. В. Кузьмин

 

Performed by © gid, 2012-2022.