И. БЛАКУНОВ (ex UQ2GKB),
228400,
Латвия, г. Даугавпилс, ул. Страдниеку, 88-34.
Программа - генератор кода Морзе
Многие пользователи “фокальных” БК-0010 жалуются на низкое быстродействие и ограниченные возможности своих компьютеров.
Так, быстродействие на Фокале составляет около 100 оп/с. (для сравнения - на Бейсике - 600...800 оп./с., а быстродействие процессора - около 300000 оп./с.).
Версия Бейсика для БК-0010-01 позволяет использовать подпрограммы в машинных кодах для расширения возможностей программ. На Фокале операторы вызова подпрограмм в машинных кодах отсутствуют, что доставляет определённые неудобства пользователям. Между тем, этот недостаток можно легко устранить.
176024 |
000000 |
035103 |
163200 |
165757 |
162357 |
100200 |
161200 |
030353 |
030460 |
107060 |
005000 |
012701 |
120020 |
012120 |
022701 |
120046 |
002374 |
012710 |
002050 |
012737 |
177777 |
000262 |
012737 |
037776 |
001744 |
012737 |
003000 |
001742 |
000137 |
121244 |
010546 |
016605 |
000002 |
022745 |
104016 |
001403 |
012605 |
000137 |
100112 |
022700 |
000003 |
103772 |
001415 |
022700 |
000001 |
103406 |
001365 |
012737 |
002340 |
000060 |
012605 |
000002 |
012737 |
101136 |
000060 |
000772 |
004437 |
110346 |
016700 |
000214 |
016705 |
000206 |
022700 |
000040 |
001443 |
012701 |
002362 |
120021 |
001413 |
105721 |
001374 |
042700 |
000240 |
120021 |
001405 |
105721 |
001374 |
004437 |
110362 |
000742 |
111100 |
022700 |
000001 |
103013 |
010502 |
006200 |
103002 |
006302 |
060502 |
004767 |
000040 |
010502 |
004767 |
000026 |
000762 |
010502 |
006302 |
004767 |
000014 |
000751 |
010502 |
006302 |
006302 |
060502 |
000770 |
005003 |
000402 |
012703 |
177716 |
012704 |
000200 |
012713 |
000100 |
077401 |
012704 |
000200 |
005013 |
077401 |
077212 |
|
|
|
|
|
|
|
|
052713 |
000200 |
000207 |
004437 |
110340 |
010546 |
013700 |
177662 |
000137 |
101150 |
000044 |
000101 |
015521 |
013776 |
017773 |
015775 |
022374 |
016340 |
015361 |
037460 |
037061 |
036062 |
034063 |
030064 |
020065 |
020466 |
021467 |
023470 |
027471 |
046077 |
071441 |
030455 |
065054 |
040056 |
025074 |
024457 |
043472 |
026473 |
064075 |
021076 |
000200 |
003101 |
010502 |
007127 |
005507 |
004504 |
001105 |
014126 |
011532 |
002111 |
017112 |
006513 |
011114 |
003515 |
002516 |
007517 |
013120 |
005122 |
004123 |
001524 |
006125 |
012106 |
010110 |
012503 |
016531 |
014530 |
000200 |
|
|
|
|
|
Приведённая программа, позволяет переводить коды заглавных русских и латинских букв, цифр и некоторых специальных знаков в код Морзе и выдавать на пьезодинамик компьютера. Обращение к программе возможно из Фокала с использованием стандартных операторов языка. Машинные коды программы приведены в таблице 1. Для ввода их в БК необходимо перейти из Фокала в МСД:
*Р Т<ВВОД> +<РУС>ТС $
Директивы МСД:
<АДРЕС><А> - установка текущего адреса;
<ЧИСЛО><,> - запись слова с автоувеличеним адреса на 2;
<А> - контроль текущего адреса;
<И> - чтение слова по адресу А;
<,> - чтение слова с автоувеличением адреса на 2.
Начальный адрес загрузки программы: 1752.
После набора текста программы запустите её директивой: $2000<ЛАТ>G
На экране появится приглашение Фокала:
Если теперь дать команду W<ВВОД>, то, вместо привычного Фокал БК-0010, появится Фокод БК-0010, что говорит о наличии нашей дополнительной подпрограммы - генератора кода Морзе. Проверить правильность набранной программы можно простой программой:
1.1 X FCHR(3);G
После запуска этой программы будет непрерывно выдаваться код буквы “А”. Если этого не происходит, необходимо снова выйти в МСД и проверить правильность набранной программы. (Выход в Фокод - 2000<ЛАТ>G).
Правильно набранную программу желательно записать на магнитофон командой L S ИМЯ<ВВОД>. При этом запишется и программа на Фокоде, и подпрограмма в кодах. При последующих загрузках с магнитофона командой L G ИМЯ <ВВОД>, необходимо инициализировать Фокод:
*Р Т<ВВОД> +<РУС>ТС $2000<ЛAT>G *
Работа с программой несложна. Десятичный код символа заносится в ячейку с адресом 2360 командой X FX(-1,2360,КОД). Команда X FCHR (3) выдаёт этот символ в коде Морзе со скоростью, заданной в ячейке 2356 (чем больше содержимое этой ячейки, тем меньше скорость).
Команда X FCHR (1) - изменение адреса обработки прерываний от клавиатуры для исключения “пиканья” при нажатии на клавиши.
Команда X FCHR (2) - восстанавливает адрес обработки прерываний от клавиатуры.
Используя данную подпрограмму, можно создавать различные обучающие и тренировочные программы, автоматизировать работу в эфире. Реле, управляющее двигателем магнитофона, срабатывает в такт выдаче сигналов Морзе. Таким образом, манипуляцию передатчика можно производить, подключаясь непосредственно к гнезду МГ компьютера. Дизассемблировав подпрограмму Фокода, можно на её основе создавать любые другие, используя область адресов 2000 - 3000. Их вызов можно осуществлять командами X FCHR (N), где N=0...6.
Пример программы:
1.1 IF (FX(1,30)-1064)3.1,1.2,3.1; С проверка иниц. Фокода 1.2 D 4;Т!,"ПЕРЕДАЧА С КЛАВИАТУРЫ" 1.3 X FCHR(1); С маскир. звука клавиш 1.4 S K=FCHR(-l) 1.5 IF (К-13)1.6,2.1; С если нажат <ввод>, то 2.1 1.6 X FX(-1,2360,К); С ввод кода в п/программу 1.7 X FCHR(3); С выдача кода Морзе 1.8 G 1.4 2.1 X FCHR(2); Q; C размаскир.звука клавиш и выход 3.1 Т "Инициализируйте Фокод"; Q 4.1 А "Введите скорость", S 4.2 X FX(-1,2356,FITR(2200/S)) ; С ввод скорости передачи
Программа написана с использованием TURBO ассемблера А.М. Надежина и работает на БК 0010 и БК 0010-01 (с блоком МСТД). Объём требуемой памяти 566 Байт.