Д. Ю. УСЕНКОВ (Москва)

 

Спасибо за опубликованную в №5 за 1989 год программу ПИФ. Приведённые в этой статье примеры программ в кодах здорово помогли мне освоить программирование в кодах процессора. Однако, к сожалению, в этой статье был допущен ряд неточностей. Так, на стр. 33, внизу, в программе «Ввод числа в сумматор с клавиатуры» по адресу 2004 в качестве функции ввода символа с клавиатуры дана ЕМТ 16, а на самом деле это - ЕМТ 6, ЕМТ 16 - это вывод символа на экран. Далее, на стр. 34 в программе «Измерение температуры» по адресам 2002 и 2006 должны, на мой взгляд, стоять числа 1000 и 2050 соответственно (хотя стоящее по адресу 2006 число 2052 тоже допустимо, но тогда первый элемент массива Т будет записан в ячейку 2056, а не в 2054).

Хочу также порекомендовать читателям книгу: Фролов Г.И., Гембицкий Р.А. Автоматизированные системы контроля объектов. Серия «Микропроцессоры». - Вып. 7. - М., Высшая школа, 1984. В этой книге рассказано о реализации ФОКАЛа (даже чуть подробнее, чем в статье «БК за рога» в №5) и очень подробно о программировании в кодах. Кроме того, хочу отметить, что указанная в списке литературы к этой статье книга «ФОКАЛ - диалоговый язык для мини-ЭВМ» недавно вышла новым тиражом и сейчас имеется во всех библиотеках. Эта книга - незаменимый помощник для всякого, кто хочет научиться писать программы в кодах.

Я хочу предложить вам и вашим читателям несколько полезных советов, касающихся БК0010.01, и довольно занимательную, на мой взгляд, программу в кодах:

  1. В вильнюсской версии Бейсика (БК 0010.01) «стрекочущий» звук обычно получают с помощью печатаемой в цикле CHR$(7). Это минимум три оператора. Тот же результат можно получить одним оператором: ?STPING$(N,7), где N - число «щелчков» (длительность «стрекотания») и N≤200.

    Кроме того, хочу в дополнение сказать, что функция STPING$ может быть использована для замены отсутствующего в данной версии оператора SCROLL: ?STPING$(N,C) вызывает рулонное смещение содержимого экрана на N строк верх (C равно 10, 27, 30, 31) или вниз (C равно 26, 28, 29). При этом служебная строка помех не создаёт ипо экрану не перемещается, но при работе оператора может возникать неприятное мелькание, поэтому её можно заранее погасить.

  2. При нажатии клавиши СТОП во время работы оператора LIST иногда возникает сбои в регистре рулонного сдвига. При этом командная строка «переползает» вниз экрана, а при последующих нажатиях может подниматься вверх по экрану, при этом изображение на экране оказывается «разрубленным» надвое. Чтобы избавиться от этой «напасти», не обязательно выключать ЭВМ, достаточно лишь дважды ввести <АР2>+<СБР>, то есть перейти к режиму РП (расширенной памяти) и выйти из него снова. При этом экран очищается, а содержимое регистра смещения и положение командной строки восстанавливается.
  3. Хочу предложить небольшую программу в кодах «Синтезатор речи», позволяющую записать на компьютер небольшой текст через магнитофон, после чего этот текст можно будет прослушать в исполнении компьютера. О существовании программ с таким названием было сказано в «Науке и жизни» несколько лет назад, но мои попытки найти где-нибудь такую программу успехом не увенчались, поэтому мне пришлось написать её самому. Вот текст программы «Синтезатор речи» в восьмеричных кодах.
1000:   104014 104034 032700 000001 001003 012700 000233 104016
        012700 000232 104016 012700 000001 012701 000005 010102
        104030 012701 000372 104032 012702 000353 104032 012701
        000005 104032 010102 104032 104024 012701 002044 012702
        000021 104020 012701 000012 012702 000007 104024 012701
        002066 012702 000014 104020 012701 000003 012702 000012
        104024 012701 002102 012702 000020 104020 012701 000003
        012702 000013 104024 012701 002122 012702 000021 104020
        012701 000003 012702 000014 104024 012701 002144 012702
        000023 104020 012701 000005 012702 000020 104024 012701
        002170 012702 000020 104020 104004 104006 020027 000060
        001532 020027 000061 001407 020027 000062 001526 012700
        000030 000240 000762 104016 012701 000003 012702 000022
        104024 012701 002210 012702 000025 104020 012701 000007
        012702 000024 104024 012701 002236 012702 000014 104020
        104006 012704 000003 012701 002306 012702 000001 062701
        000002 005011 032737 000040 177716 001402 050211 000402
        000240 000240 010403 077301 000241 006302 103363 020127
        037776 001353 012701 000003 012702 000022 104024 012701
        000025 012700 000040 001402 104016 077103 012701 000007
        012702 000024 104024 012701 000014 012700 000040 001402
        104016 077103 012701 000025 012702 000020 104024 012700
        000030 104016 000401 000522 000640 104016 012701 000003
        012702 000022 104024 012701 002210 012702 000025 104020
        012701 000007 012702 000024 104024 012701 002252 012702
        000014 104020 104006 012704 000003 012701 002306 012702
        000001 062701 000002 000240 030211 001404 052737 000100
        177716 000403 042737 000100 177716 010403 077301 000241
        006302 103362 020127 037776 001352 012701 000003 012702
        000022 104024 012701 000025 012700 000040 001402 104016
        077103 012701 000007 012702 000024 104024 012701 000014
        012700 000040 001402 104016 077103 012701 000025 012702
        000020 104024 012700 000030 104016 000656 104016 012701
        000003 012702 000022 104024 012701 002266 012702 000020
        104020 000000 171452 167351 162764 160772 167764 020362
        162762 164776 000052 116223 166440 167345 020340 020072
        111234 026460 167753 162756 020343 160762 167742 174764
        035440 026461 160772 164760 174363 172040 165745 172363
        020341 000073 026462 167767 170363 167762 175351 162767
        162744 164756 020345 000056 173621 162767 164744 162764
        165440 160354 020376 020072 160756 166766 172351 020345
        160354 172742 020340 166353 173741 175751 000365 020351
        167747 167767 164762 162764 027040 020351 166363 175765
        165341 162764 027040 167744 171440 164767 160744 164756
        020361 115441 115040 000000

Контрольная сумма: 130277

Чтобы записать программу в память машины, нужно выполнить следующую последовательность действий: включить ФОКАЛ, затем ввести <ЛАТ> Р˽Т <ВК><РУС> ТС, при этом машина выдаёт приглашение: $. Вводим команду: 1000АИхххххх, затем вводим программу построчно, вводя после каждого числа <,>. Например: 1000АИхххххх 104014<,> хххххх 104034<,> хххххх и т.д. до конца программы. После ввода последнего из чисел обязательно нажать <,>.

(Здесь «хххххх» - выдаваемое машиной предыдущее содержимое ячейки памяти).

После того как программа записана в память, нужно записать её на магнитофон командой МЗ (см. «Руководство системного программиста», стр. 214).

Начальный адрес программы: 1000; длина программы: 1310. Запуск осуществляется командой <ЛАТ> 1000G (или S1000 - из Монитора). Примечания по работе программы:

  1. Требуемый режим вызывается нажатием указанной на экране цифровой клавиши - ключа. Вызов режима «Воспроизведение» может быть многократным.
  2. Запись текста производится через магнитофон с кассеты (режим «Воспроизведение» магнитофона) или с подключённого к нему микрофона (магнитофон используется как усилитель).
  3. При воспроизведении, так как звук, излучаемый пьезодинамиком, довольно тихий, рекомендуется пользоваться магнитофоном как усилителем (магнитофон в режиме «запись с компьютера», но клавиша «Пауза» нажата).
  4. При окончании работы программы происходит выход в монитор.

Performed by © gid, 2012-2024.