Передовица » Макулатура » ИиО » Реализация музыкальных программ на ПЭВМ АГАТ

Реализация музыкальных программ на ПЭВМ АГАТ (N2/1998)

Г. Г. Тарасова, преподаватель программирования УВК N16, Москва. Группа сайта просит вас связаться с нами! (ЗАЧЕМ ЭТО?)

В ПЭВМ «Агат» можно управлять динамиком, используя программу на ассемблере, которая, обращаясь к определённым ячейкам памяти, извлекает звук заданной тональности и длительности. Ассемблерная программа (точнее, её коды) размещается в памяти начиная с адреса 770 при помощи следующей Бейсик-программы.

10 DATA 160, 0, 174, 0, 3, 173, 48, 192, 136, 208, 5, 206, 1, 3, 240, 5, 202, 208, 245, 240, 237, 96
20 FOR X = 770 ТО 791
30 READ Z : POKE X, Z
40 NEXT

В операторе DATA (строка 10) записаны десятичные коды ассемблерной программы. В строках 20 - 40 организуется последовательное чтение этих кодов командой READ и их запись в память командой РОКЕ (в ячейки 770-791). Перед обращением к звуковой программе (команда CALL 770) необходимо записать в память числовые характеристики нот: в ячейку 768 помещается десятичное число, задающее высоту ноты, а в ячейку 769 - её длительность.

Коды высоты и длительности нот приведены в книге: Мымрин М.П. Конструкция, применение, программирование и ремонт ПЭВМ АГАТ. М.: Машиностроение, 1990. (Здесь мы повторили соответствующий рисунок.)

Для исполнения мелодии организуется многократное обращение к кодовой программе для каждой ноты. Вот пример музыкальной подпрограммы для воспроизведения мелодии, последовательность нот которой закодирована в массивах A (высота нот) и B (длительность).

260 FOR I = 1 ТО 30: РОКЕ 768, А(I) : РОКЕ 769, B(I) : CALL 770 : NEXT I
220 RETURN

Обращаясь к этому модулю командой GOSUB 260, можно повторять исполнение мелодии (в данном случае - последовательности из 30 нот, которая может быть задана до вызова подпрограммы исполнения, например, с помощью операторов READ и DATA).

Примечание редактора

Более подробные сведения о работе со звуковым каналом ПЭВМ «АГАТ» можно найти в уже упомянутой в статье книге М.П. Мымрина (см. с. 105-107), в том числе в ней приведён исходный ассемблерный листинг подпрограммы воспроизведения отдельной ноты (несколько отличающейся от предлагаемой Г.Г. Тарасовой) и листинги Бейсик-программ «Сирена» и «Болгарский вальс» (последняя приведена в Приложении 2 книги и служит неплохим примером реализации на Бейсике сложной мелодии).

* * *

Использование материалов проекта agatcomp без получения предварительного письменного разрешения agatcomp запрещено.


Почта для обратной связи: mail@agatcomp.ru


Живое общение по теме Агата: Telegram группа Agatcomp.


Накопленные знания и проекты: тематический ФОРУМ.


© 2004-2024 agatcomp.su / agatcomp.ru

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *