О.Ю. СЕМЕНОВ

 

При работе с компьютером БК-0010-01 на языке MSX-BASIC иногда по каким-либо причинам бывает желательно отключить звуковой сигнал клавиатуры. Хочу предложить пользователям БК-0010-01 «драйвер бесшумной клавиатуры», позволяющий сделать это чисто программным путём.

Для записи драйвера на магнитофон необходимо набрать небольшую программу на БЕЙСИКе:

10 DATA 287, 5599, -22336, 1088, 135, 5623, -32152, 20, 259, 5623
20 DATA -32004, 12, 2335, -28448, 4454, 2551, 4, 95, 0, 3039, 148, 770
30 DATA 2527, -28322, 5599, -1, 146, 5568, 3000, 32257, 95, -31670
40 DATA 5623, -30716, -70, 5599, 266, 48, 5599, 274, 188, 5599, 256
50 DATA 1088, 95, -24448
60 FOR A% = 256 TO 346 STEP 2
70 READ D%
80 POKE A%, D%
90 NEXT A%
100 END

После запуска в стековой области формируется подпрограмма в машинных кодах, которую следует записать на магнитофон командой

BSAVE "SNDOFF", 256, 348.

Для загрузки драйвера необходимо набрать команду

BLOAD "SNDOFF", R

(обязательно с ’R'!) и включить магнитофон на воспроизведение. После получения сообщения «Ок» звук отключён . Для разгрузки драйвера (и восстановления звука) следует использовать команду

A=USR(А)

(определение функции USR выполняется автоматически при загрузке драйвера).

Дополнительная информация для тех, кто использует подпрограммы в кодах: адрес загрузки драйвера: &0400 (256), длина после загрузки: &0134 (92) После включения драйвера в систему его длина уменьшается до &0100 (64)

Кроме того, хотелось бы сделать замечание по поводу размера стековой области в компьютере БК-0010-01 (см. вып. 9, 1988, с. 25). В упомянутой статье большой размер стека объясняется предполагаемым использованием данной версии БЕЙСИКа в БК-0011. Практика показала, что не требуется 128 Кбайт ОЗУ для того, чтобы заполнить стековую область. Для этого достаточно выполнить оператор PAINT для закраски области весьма сложной формы. Следовательно, в программах, использующих этот оператор, подпрограммы в кодах, размещаемые в области стека, следует использовать с осторожностью.

 

Performed by © gid, 2012-2022.