<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://emuverse.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A%2F%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_08-89%2F%D0%9C%D1%83%D0%B7%D1%8B%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80</id>
	<title>Радио-86РК/Радио 08-89/Музыкальный редактор - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://emuverse.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A%2F%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_08-89%2F%D0%9C%D1%83%D0%B7%D1%8B%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80"/>
	<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_08-89/%D0%9C%D1%83%D0%B7%D1%8B%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80&amp;action=history"/>
	<updated>2026-05-03T23:57:45Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://emuverse.ru/w/index.php?title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_08-89/%D0%9C%D1%83%D0%B7%D1%8B%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80&amp;diff=1165&amp;oldid=prev</id>
		<title>Panther: http://retro.h1.ru/RK86/Sound/SounEdit.php</title>
		<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_08-89/%D0%9C%D1%83%D0%B7%D1%8B%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80&amp;diff=1165&amp;oldid=prev"/>
		<updated>2008-12-03T09:25:40Z</updated>

		<summary type="html">&lt;p&gt;http://retro.h1.ru/RK86/Sound/SounEdit.php&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{ДИ|Автор=А. СОРОКИН| Источник= http://retro.h1.ru/RK86/Sound/SounEdit.php}}&lt;br /&gt;
&lt;br /&gt;
Музыкальный редактор — программа, которая позволяет&lt;br /&gt;
значительно расширить возможности компьютера. Предлагаемый музыкальный редактор&lt;br /&gt;
реализует экранный режим работы. С его помощью можно сочинять музыку, проигрывать&lt;br /&gt;
произведения и автоматически обрабатывать их до получения независимого модуля,&lt;br /&gt;
написанного как на языке BASIC, так и в машинных кодах. Этот модуль можно использовать&lt;br /&gt;
затем в любых программах на компьютере «Радио-86РК». Кроме этого, музыкальный&lt;br /&gt;
редактор может быть использован как одноголосый клавишный музыкальный инструмент.&lt;br /&gt;
&lt;br /&gt;
Для работы редактора необходим таймер К580ИВ53,&lt;br /&gt;
подключенный по схеме, [[Радио-86РК/Радио 11-87/Таймер КР580ВИ53|опубликованной в журнале «Радио»]]. При этом в начале&lt;br /&gt;
программы переменным А0, А1, А2, A3 нужно присвоить адреса портов таймера, все&lt;br /&gt;
остальные операции по адаптации выполнит сама программа.&lt;br /&gt;
&lt;br /&gt;
Набрав текст программы&lt;br /&gt;
музыкального редактора ([[/Таблица 1|табл.1]]), запустим ее по директиве RUN. На экране с левой&lt;br /&gt;
стороны появится изображение нотного стана, а справа — подсказки для работы.&lt;br /&gt;
Далее отобразится вертикальная полоса из символов и сообщение «NEW?». Ответом&lt;br /&gt;
на это сообщение будут «Y» и «N». Ответ «Y» вызовет переход программы в режим&lt;br /&gt;
записи нот. Поступив иначе, программа будет искать конец нотной записи, которая&lt;br /&gt;
расположена в памяти, и далее произойдет запрос параметров воспроизведения и&lt;br /&gt;
исполнение нотной записи.&lt;br /&gt;
&lt;br /&gt;
== РЕЖИМ ЗАПИСИ НОТ ==&lt;br /&gt;
&lt;br /&gt;
После ответа на вопрос «NEW?» — «Y» на экране&lt;br /&gt;
появится указатель ноты &amp;quot;­ &amp;quot; и вверху надпись &amp;quot;Нота-1 &amp;quot;. Указатель определяет&lt;br /&gt;
ту ноту, которая будет исполнена или записана. Указатель перемещают клавишами&lt;br /&gt;
перемещения курсора вверх и вниз. Нажатие на одну из этих клавиш приводит к&lt;br /&gt;
появлению звука выбранной ноты. Название нот записано в крайней левой колонке.&lt;br /&gt;
Перемещать указатель ноты можно, нажав на клавишу, напротив которой находится&lt;br /&gt;
нужная нота (колонка символов справа от нотного стана). После того, как выбрана&lt;br /&gt;
нужная нота, нажатием на одну из цифровых клавиш «1 — 9» задают длительность.&lt;br /&gt;
В ответ на ввод длительности компьютер увеличит цифру в указателе номера нот&lt;br /&gt;
— «Нота — …», что приведет к записи ноты в память и переход к вводу следующей&lt;br /&gt;
ноты. Указатель «Нота -…» показывает порядковый номер вводимой ноты. Если&lt;br /&gt;
произошла ошибка, то ее можно исправить нажатием на клавишу &amp;quot;­ &amp;quot; — переход к&lt;br /&gt;
предыдущей ноте, а затем вернуться, нажав клавишу «®».&lt;br /&gt;
&lt;br /&gt;
Диезы выбирают нажатием на клавишу «АР2», после&lt;br /&gt;
чего вводят длительность. Паузы задают нажатием на клавишу пробела и также вводят&lt;br /&gt;
ее длительность нажатием на одну из цифровых клавиш. При этом указатель ноты&lt;br /&gt;
исчезает.&lt;br /&gt;
&lt;br /&gt;
Если нужно установить конец нотной записи, то&lt;br /&gt;
нажимают клавишу «F1». Выходят из режима записи нот нажатием на клавишу «F3».&lt;br /&gt;
В этом случае конец нотной записи устанавливается по максимальному значению&lt;br /&gt;
указателя «Нота -…».&lt;br /&gt;
&lt;br /&gt;
[[Изображение:RK-86-MUS-P01.png|thumb|200px]]&lt;br /&gt;
Таким способом сочинять музыку или «переводить»&lt;br /&gt;
ее, для проигрывания на компьютере, может совершенно несведущий в нотной грамоте&lt;br /&gt;
человек. Для перевода музыки на компьютер достаточно указатель ноты поставить&lt;br /&gt;
в позицию на нотном стане, соответствующей позиции вводимой ноты. Длительность&lt;br /&gt;
(табл.2) ноты выбирают следующим способом: просматривают весь текст нот&lt;br /&gt;
для ввода и выбирают ноту с самой маленькой длительностью. Эта нота будет иметь&lt;br /&gt;
длительность 1, все отличные ноты будут иметь длительность большую, то есть 2,&lt;br /&gt;
3, 4… с паузами поступают аналогично.&lt;br /&gt;
&lt;br /&gt;
== РЕЖИМ ВВОДА ДИРЕКТИВ ==&lt;br /&gt;
&lt;br /&gt;
После нажатия на клавишу «F3» компьютер запрашивает&lt;br /&gt;
параметры для воспроизведения. Возникает слово «Темп?», ответом на запрос должно&lt;br /&gt;
быть число, равное темпу (темп в ударах в минуту),&lt;br /&gt;
в котором исполнится запись нот (табл.3).&lt;br /&gt;
&lt;br /&gt;
Таблица 3&lt;br /&gt;
&lt;br /&gt;
{| class=border align=center&lt;br /&gt;
|-&lt;br /&gt;
! ТЕМП || ЧИСЛО УДАРОВ МЕТРОНОМА В МИНУТУ&lt;br /&gt;
|-&lt;br /&gt;
| LARGHISSIMO || … &amp;amp;lt; — &amp;amp;gt; 40&lt;br /&gt;
|-&lt;br /&gt;
| LARGO || 40 &amp;amp;lt; — &amp;amp;gt; 60&lt;br /&gt;
|-&lt;br /&gt;
| LARGHETTO || 60 &amp;amp;lt; — &amp;amp;gt; 66&lt;br /&gt;
|-&lt;br /&gt;
| GRAVE || 60 &amp;amp;lt; — &amp;amp;gt; 66&lt;br /&gt;
|-&lt;br /&gt;
| LENTO || 60 &amp;amp;lt; — &amp;amp;gt; 66&lt;br /&gt;
|-&lt;br /&gt;
| ADAGIO || 66 &amp;amp;lt; — &amp;amp;gt; 76&lt;br /&gt;
|-&lt;br /&gt;
| ADAGIETTO || 66 &amp;amp;lt; — &amp;amp;gt; 76&lt;br /&gt;
|-&lt;br /&gt;
| ANDANTE || 76 &amp;amp;lt; — &amp;amp;gt; 108&lt;br /&gt;
|-&lt;br /&gt;
| ANDANTINO || 76 &amp;amp;lt; — &amp;amp;gt; 108&lt;br /&gt;
|-&lt;br /&gt;
| MODERATO || 108 &amp;amp;lt; — &amp;amp;gt; 120&lt;br /&gt;
|-&lt;br /&gt;
| ALLEGRETTO || 108 &amp;amp;lt; — &amp;amp;gt; 120&lt;br /&gt;
|-&lt;br /&gt;
| ALLEGRO || 120 &amp;amp;lt; — &amp;amp;gt; 168&lt;br /&gt;
|-&lt;br /&gt;
| VIVACE || 120 &amp;amp;lt; — &amp;amp;gt; 168&lt;br /&gt;
|-&lt;br /&gt;
| PRESTO || 168 &amp;amp;lt; — &amp;amp;gt; 208&lt;br /&gt;
|-&lt;br /&gt;
| PRESTISSIMO || 280 &amp;amp;lt; — &amp;amp;gt; …&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Далее программа запрашивает дополнительную информацию о характере&lt;br /&gt;
воспроизведения — «STAC. NORM. LEG», то есть STACCATO, NON LEGATO, LEGATO. Ответом&lt;br /&gt;
будет одна из букв «S», «N», «L». После этого программа проиграет набранную&lt;br /&gt;
нотную запись. При проигрывании звучащая нота показывается указателем ноты,&lt;br /&gt;
а в указателе «Нота -…» отобразится ее номер. При проигрывании паузы появляется,&lt;br /&gt;
код указателем номера ноты, сообщение «Пауза». По окончании исполнения нотной&lt;br /&gt;
записи в правом верхнем углу отобразится меню директив:&lt;br /&gt;
&lt;br /&gt;
#  — повторить&lt;br /&gt;
#  — дописать&lt;br /&gt;
#  — исправить&lt;br /&gt;
#  — распечатать&lt;br /&gt;
#  — оттранслировать&lt;br /&gt;
#  — NEW&lt;br /&gt;
&lt;br /&gt;
Выбирают директиву нажатием на клавишу с цифрой,&lt;br /&gt;
соответствующей данной директиве.&lt;br /&gt;
&lt;br /&gt;
== ОПИСАНИЕ ДИРЕКТИВ ==&lt;br /&gt;
&lt;br /&gt;
;1 — ПОВТОРИТЬ&lt;br /&gt;
Эта директива приводит к воспроизведению записи&lt;br /&gt;
нот с новой настройкой параметров.&lt;br /&gt;
&lt;br /&gt;
;2 — ДОПИСАТЬ&lt;br /&gt;
По этой директиве указатель номера ноты устанавливается&lt;br /&gt;
на последнюю ноту, а программа переходит в режим записи нот. Указатель ноты&lt;br /&gt;
установится в позицию, на нотном стане, предыдущей ноты.&lt;br /&gt;
&lt;br /&gt;
;3 — ИСПРАВИТЬ&lt;br /&gt;
Этой директивой корректируют нотную запись. По&lt;br /&gt;
ней программа выводит сообщение «С ноты (всего…)?», ответом на него служит&lt;br /&gt;
номер ноты, которую нужно исправить. Компьютер устанавливает указатель номера&lt;br /&gt;
ноты на корректируемую ноту, а указатель ноты показывает ее расположение на&lt;br /&gt;
нотном стане.&lt;br /&gt;
&lt;br /&gt;
;4 — РАСПЕЧАТАТЬ&lt;br /&gt;
&lt;br /&gt;
По ней распечатывается нотная запись а виде коэффициентов&lt;br /&gt;
пересчета и длительности для создания независимого музыкального модуля на языке&lt;br /&gt;
BASIC. На экране отображается информация:&lt;br /&gt;
&lt;br /&gt;
 ПРИМЕР 1 &lt;br /&gt;
 РАСПЕЧАТКА НОТНОЙ ЗАПИСИ ДЛЯ DATA&lt;br /&gt;
 &lt;br /&gt;
  МЛ. БАЙТ  СТ. БАЙТ  ДЛИТ.&lt;br /&gt;
       155        16     1 &lt;br /&gt;
         0         0     1 &lt;br /&gt;
       137         4     2&lt;br /&gt;
&lt;br /&gt;
Распечатанные данные заносят в операторы DATA&lt;br /&gt;
такого модуля в следующей последовательности: МЛ. БАЙТ, СТ. БАЙТ, ДЛИТ. Нулевые&lt;br /&gt;
коэффициенты отображают паузу. Музыкальный модуль может выглядеть так:&lt;br /&gt;
&lt;br /&gt;
 ПРИМЕР 2 &lt;br /&gt;
 &lt;br /&gt;
 10 DATA 155,16,1, 0, 0,1,137,4, 2, ...,255 &lt;br /&gt;
 20 READ G:IF G=255 THEN STOP &lt;br /&gt;
 22 REM ЕСЛИ КОЭФФИЦИЕНТ РАВЕН О, ТО ПАУЗА &lt;br /&gt;
 25 IF G=0 THEN READ G:POKE A3,&amp;amp;amp;36:GOTO 40 &lt;br /&gt;
 30 POKE A0,G:READ G: POKE A0,G &lt;br /&gt;
 40 READ G: POKE A2,200: PAUSE G*N &lt;br /&gt;
 50 GOTO 20&lt;br /&gt;
&lt;br /&gt;
где А0, A2 — адреса портов таймера, а N — коэффициент,&lt;br /&gt;
задающий темп. Перед созданием модуля смотрите текст музыкального редактора&lt;br /&gt;
директивой NEW, предварительно записав информацию для DATA, а потом наберите&lt;br /&gt;
данную программу. ([[Радио-86РК/Радио 11-87/Таймер КР580ВИ53|Подробнее в «Радио»]]).&lt;br /&gt;
&lt;br /&gt;
Нотную запись можно распечатать в виде частот&lt;br /&gt;
и длительностей. Для этого режим 4 переделывают так:&lt;br /&gt;
&lt;br /&gt;
 ПРИМЕР 3&lt;br /&gt;
 &lt;br /&gt;
 1480 PRINT&amp;quot;ЧACTOTA ДЛИТЕЛЬНОСТЬ&amp;quot; &lt;br /&gt;
 1498 REM ПЕРЕВОД КОЭФФИЦИЕНТОВ В ЧАСТОТУ&lt;br /&gt;
 1500 T=1777778/(PEEK(BS+X)+PEEK(BS+X+1)*256)&lt;br /&gt;
 1501 REM ОКРУГЛЕНИЕ ЗНАЧЕНИЯ ЧАСТОТЫ &lt;br /&gt;
 1505 TT=INT(T):IF T-INT(T)&amp;amp;gt;0.5 THEN TT=INT(T)+1 &lt;br /&gt;
 1507 PRINT TT,PEEK(BS+X+2)&lt;br /&gt;
&lt;br /&gt;
Это может понадобиться, если необходимо, воспроизвести&lt;br /&gt;
музыкальный фрагмент, который задается в частотах. Например: музыкальный звонок&lt;br /&gt;
или часы.&lt;br /&gt;
&lt;br /&gt;
;5 — ОТТРАНСЛИРОВАТЬ&lt;br /&gt;
&lt;br /&gt;
С помощью этой директивы музыкальный модуль в машинных кодах&lt;br /&gt;
создается программой автоматически. Его можно вызвать из BASIC функцией USR, а&lt;br /&gt;
из программы на ассемблере командой CALL. Естественно, что перед первым обращением&lt;br /&gt;
к музыкальному модулю из программы на ассемблере порты таймера должны быть настроены&lt;br /&gt;
соответствующим образом. Для создания музыкального модуля компьютер запрашивает&lt;br /&gt;
дополнительную информацию сообщением:&lt;br /&gt;
&lt;br /&gt;
 СВОБОДНАЯ ОБЛАСТЬ С ... ПО 75FFH&lt;br /&gt;
 НАЧАЛЬНЫЙ АДРЕС ДЛЯ ТРАНСЛЯЦИИ (ЧЕРЕЗ &amp;amp;)?&lt;br /&gt;
&lt;br /&gt;
Ответом служит адрес в памяти, написанный в шестнадцатеричном&lt;br /&gt;
коде через амперсант, с которого запишется музыкальный модуль. Следует учесть,&lt;br /&gt;
что память распределена так:&lt;br /&gt;
&lt;br /&gt;
 BASIC 0Н ... 2200Н&lt;br /&gt;
 ТЕКСТ МУЗ. РЕДАКТОРА 2200Н ... 3Е00Н&lt;br /&gt;
 ЗАПИСЬ НОТ НЕ ОТТРАНСЛИР. 4200Н ... ВЫДАННЫЙ АДРЕС В СООБЩЕНИИ&lt;br /&gt;
&lt;br /&gt;
Адрес конца текста программы не точный, но не&lt;br /&gt;
превышает этого (зависит от плотности текста). Если запись нот не умещается&lt;br /&gt;
в памяти, то нужно распечатать память в символьном виде в МОНИТОРЕ и изменить&lt;br /&gt;
адрес не оттранслированной нотной записи в начале программы (переменная — BS).&lt;br /&gt;
&lt;br /&gt;
Через некоторый промежуток времени (в зависимости&lt;br /&gt;
от длины нотной записи) экран очистится, появится сообщение:&lt;br /&gt;
&lt;br /&gt;
 БЛОК ЗАПИСИ НОТ РАСПОЛОЖЕН: &lt;br /&gt;
 НАЧАЛЬНЫЙ АДРЕС ... &lt;br /&gt;
 КОНЕЧНЫЙ АДРЕС ...&lt;br /&gt;
&lt;br /&gt;
и компьютер перейдет в режим МОНИТОРа.&lt;br /&gt;
&lt;br /&gt;
;6-NEW&lt;br /&gt;
По этой директиве из памяти стирается старая нотная&lt;br /&gt;
запись, и музыкальный редактор переводится в режим ввода нот.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;Если нажата любая другая клавиша, то управление передается&lt;br /&gt;
монитору, а на экране возникнет сообщение: &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 НЕТРАНСЛИРОВАННАЯ ЗАПИСЬ &lt;br /&gt;
 НОТ НАХОДИТСЯ:&lt;br /&gt;
 С АДРЕСА ... &lt;br /&gt;
 ПО АДРЕС ...&lt;br /&gt;
&lt;br /&gt;
Нетранслированная нотная запись — запись, которую&lt;br /&gt;
можно редактировать музыкальным редактором. Ее можно записать по директиве «О»&lt;br /&gt;
МОНИТОРа, а потом считать с магнитофона директивой «I».&lt;br /&gt;
&lt;br /&gt;
После проигрывания нотной записи ее можно отредактировать.&lt;br /&gt;
Так как коды музыки не находятся в массивах, то если случайно вышли в МОНИТОР&lt;br /&gt;
из программы, можно восстановить нотную запись (в отличие, если коды находились&lt;br /&gt;
в массивах), воспользовавшись пунктами 3, 4 вышеизложенного.&lt;br /&gt;
&lt;br /&gt;
== ОПИСАНИЕ ТЕКСТА ПРОГРАММЫ ==&lt;br /&gt;
&lt;br /&gt;
Программа начинается с присвоения переменным А0, А1, А2, A3 адресов&lt;br /&gt;
портов таймера К580ИВ53. Если таймер включен по схеме, публиковавшейся в журнале,&lt;br /&gt;
то адреса будут соответственно А000Н, А001Н, А002Н, А003Н. Далее переменной&lt;br /&gt;
BS присваивается адрес начала текста нотной записи, с которого он расположен&lt;br /&gt;
в памяти (4200Н). Затем в строке 640 происходит загрузка таймера управляющими&lt;br /&gt;
словами. В 670, 680-й строках программы описываются функции FNS (X) и FNM (X).&lt;br /&gt;
Так как в BASIC числа находятся в десятичной системе, то для записи в память&lt;br /&gt;
его нужно разбить на два байта, что и делают функции FNM (X)-младший байт от&lt;br /&gt;
X, FNS (X)- старший байт от X. Описание массивов данных — в 720-й строке. Эти&lt;br /&gt;
массивы:&lt;br /&gt;
&lt;br /&gt;
* S (24) — массив старших байтов коэффициентов деления для тонов;&lt;br /&gt;
* М(24) — массив младших байтов коэффициентов деления для тонов;&lt;br /&gt;
* DS (24), DM (24) — массивы соответственно старших и младших байтов коэффициентов деления байтов полутонов;&lt;br /&gt;
* К (24) — массив, содержащий коды клавиш соответствующим нотам.&lt;br /&gt;
&lt;br /&gt;
Строки с 740-й по 980-ю отображают на экране нотный&lt;br /&gt;
стан и поясняющие записи. Далее, в 1000—1030-й строках происходит заполнение&lt;br /&gt;
массивов. При заполнении массивов коэффициенты деления берутся из DATA в порядке&lt;br /&gt;
повышения тона и с помощью ранее описанных функций заносятся в массивы. Массив&lt;br /&gt;
кодов клавиш заносится из DATA, расположенным в строках 1910, 1920. Если расположение&lt;br /&gt;
клавиш для перемещения указателя нот не устраивает, то изменив коды клавишв&lt;br /&gt;
DATA, вы сможете расположить управляющие клавиши по своему вкусу. В строках&lt;br /&gt;
130—190 происходит поиск конечного адреса нетранслированный текст нот, содержащегося&lt;br /&gt;
в ОЗУ. В случае если текста там нет, переменной конца текста — КХ присвоится&lt;br /&gt;
адрес начала текста и компьютер перейдет в режим записи нот. Если текст есть&lt;br /&gt;
(ответ на вопрос «NEW?» — «N») — в строках 160, 170 происходит поиск конца текста&lt;br /&gt;
по маркеру конца — 0FFH. Если же маркер не найден (просматривается область от&lt;br /&gt;
4200Н до 6200Н), то компьютер запросит длину, и по этой длине установит маркер&lt;br /&gt;
конца. Далее происходит проигрывание записи нот.&lt;br /&gt;
&lt;br /&gt;
Режим записи нот реализуется в программе — строками&lt;br /&gt;
240—380, в которых находится основной цикл записи нот. В цикле происходит: ввод&lt;br /&gt;
кода нажатой клавиши — строка 240, корректировка ординаты — Y указателя записи&lt;br /&gt;
с нот — строка 250, переход к подпрограмме возврата к предыдущей ноте — строка&lt;br /&gt;
260, установка конца записи по «F1»-строка 270, переход по коду к предыдущей&lt;br /&gt;
ноте — строка 280, установка указателя записи по нажатой клавише с использованием&lt;br /&gt;
подпрограммы выбора положения курсора по клавишам и перевод вверх или вниз указателя&lt;br /&gt;
ноты по нотному стану — строки 300, 310, выход в режим ввода директив при нажатии&lt;br /&gt;
на «F3», воспроизведение ноты — строка 360, определение коэффициента деления&lt;br /&gt;
по ноте — строки 90, 100, 110, запись ноты и паузы в память — строки 370, 350.&lt;br /&gt;
А теперь рассмотрим описание цикла более подробно.&lt;br /&gt;
&lt;br /&gt;
Подпрограмма возврата к предыдущей ноте, как и&lt;br /&gt;
программа перехода к следующей ноте, предотвращает выход за пределы нотного&lt;br /&gt;
текста и воспроизводит ноту, на которую перешли. Подпрограмма выбора положения&lt;br /&gt;
указателя нот по клавишам, которая используется в цикле, описана в строках 1060—1080.&lt;br /&gt;
Подпрограмма в цикле сравнивает код введенной клавиши с кодами из массива К.&lt;br /&gt;
В случае совпадения значение переменной цикла — I и будет ординатой указателя&lt;br /&gt;
нот. Воспроизведение ноты реализуется загрузкой коэффициентов деления в таймер.&lt;br /&gt;
Коэффициенты деления по ноте извлекаются из массивов S, М или DS, DM через аргумент&lt;br /&gt;
Y. Запись ноты и паузы осуществляется в подпрограммах, которые используют один&lt;br /&gt;
формат записи ноты: младший коэффициент деления; старший коэффициент деления,&lt;br /&gt;
длительность, координаты курсора. Таким образом, каждая нота описывается четырьмя&lt;br /&gt;
байтами. При записи паузы коэффициентам деления присваивается нулевое значение.&lt;br /&gt;
&lt;br /&gt;
Ввод параметров воспроизведения и цикл воспроизведения описаны&lt;br /&gt;
в строках 400—530. В строке 410 вводится темп — Z, а переменной R=28/Z корректируется&lt;br /&gt;
для исполнения в ударах в минуту. Характер воспроизведения задается в строках&lt;br /&gt;
420—460. Он включает:&lt;br /&gt;
&lt;br /&gt;
* STACCATO — отрывистое звучание, которое достигается паузой между нотами, равной К=R*0.5.&lt;br /&gt;
* LEGATO — без паузы между нотами.&lt;br /&gt;
* NORM — среднее значение паузы между нотами K=R*0.1.&lt;br /&gt;
&lt;br /&gt;
Так как интерпретатор для выполнения каждой команды&lt;br /&gt;
затрачивает определенную долю времени, то темп игры будет незначительно отличаться&lt;br /&gt;
от заданного, особенно при быстром темпе воспроизведения, однако в оттранслированном&lt;br /&gt;
модуле темп игры не отличается от заданного. Сам цикл воспроизведения расположен&lt;br /&gt;
в строках 490—530. Его аналог, за исключением отображения указателя нот, — программа,&lt;br /&gt;
исходный текст, который приведен в табл.4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
						ТАБЛИЦА 4&lt;br /&gt;
;* ПРОГРАММА ИСПОЛНЕНИЯ ТЕКСТА НОТ В ФОРМАТЕ :       * &lt;br /&gt;
;* МЛ.БАЙТ ДЕЛЕНИЯ;СТ.БАЙТ ДЕЛЕНИЯ;ДЛИТЕЛЬНОСТЬ.     * &lt;br /&gt;
;* НА ОСНОВЕ ТАЙМЕРА К580ИВ53                        *&lt;br /&gt;
; &lt;br /&gt;
	LXI 	Н,R0 	;ЗАГРУЗКА В HL АДРЕСА НАЧАЛА&lt;br /&gt;
			;ОТТРАНСЛ. НОТНОЙ ЗАПИСИ&lt;br /&gt;
M1: 	MOV 	А,М    	;ВЗЯТЬ ИЗ ОТТРАНСЛИРОВАН. НОТНОЙ&lt;br /&gt;
			; ЗАПИСИ БАЙТ&lt;br /&gt;
	СРI 	0FFH   	;СРАВНИТЬ С МАРКЕРОМ KOHЦA &lt;br /&gt;
	RZ         	;ЕСЛИ МАРКЕР КОНЦА, ТО ВЫХОД &lt;br /&gt;
	STA 	А0     	;ИНАЧЕ,ЗАГРУЗИТЬ В ТАЙМЕР 1&lt;br /&gt;
			; КОЭФФИЦИЕНТ ДЕЛЕНИЯ&lt;br /&gt;
	INX 	Н      	;ПЕРЕХОД К СЛЕДУШЕМУ БАЙТУ &lt;br /&gt;
	MOV 	А,М    	;ЗАГРУЗИТЬ В А БАЙТ ИЗ ОТТРАНСЛ.&lt;br /&gt;
			;НОТНОй ЗАПИСИ &lt;br /&gt;
	ORA 	А      	;СРАВНИТЬ С НУЛЕМ &lt;br /&gt;
	JZ 	М2     	;НУЛЬ, (ВСТРЕТИЛАСЬ ПАУЗА) ТО НА М2 &lt;br /&gt;
	STA 	А0     	;ИНАЧЕ,ЗАГРУЗИТЬ В ТАЙМЕР 2&lt;br /&gt;
			;КОЭФФИЦИЕНТ ДЕЛЕНИЯ &lt;br /&gt;
	MVI 	А,0С8Н 	;ЗАПУСТИТЬ &lt;br /&gt;
	STA 	A2     	;ТАЙМЕР ПОСЛЕ ЗАГРУЗКИ &lt;br /&gt;
	JMP 	MЗ     	;ДАЛЕЕ НА МЗ &lt;br /&gt;
M2:	MVI 	A,36H 	;выключить &lt;br /&gt;
	STA 	A3     	;ТАЙМЕР&lt;br /&gt;
MЗ: 	INX 	Н      	;ПЕРЕХОД К СЛЕДУЮЩЕМУ БАЙТУ&lt;br /&gt;
			; (БАЙТ ДЛИТЕЛЬНОСТИ) &lt;br /&gt;
	MOV 	А,М    	;ЗАГРУЗИТЬ В А &lt;br /&gt;
	INX 	Н      	;ПЕРЕХОД К БАЙТУ СЛЕДУЮЩЕЙ НОТЫ &lt;br /&gt;
	АDI 	ТТ     	;ВЫЧИСЛЕНИЕ ТЕМПА &lt;br /&gt;
	ADD 	А      	;ПУТЕМ СЛОЖЕНИЕ ДЛИТЕЛЬНОСТИ &lt;br /&gt;
	ADD 	А      	;С КОНСТАНТОЙ ТЕМПА - ТТ &lt;br /&gt;
	ADD 	А      	;И СУММИРОВАНИЕМ А+А &lt;br /&gt;
	ADD 	А      	;4 РАЗА &lt;br /&gt;
	MOV 	D,A    	;ЗАНЕСТИ &lt;br /&gt;
	MOV 	Е,А    	;ДЛИТЕЛЬНОСТЬ 8 DE &lt;br /&gt;
М4: 	DCX 	D      	;ЗАДЕРЖКА, ПУТЕМ &lt;br /&gt;
	MOV 	А,0    	;ДЕКРЕМИРОВАНИЯ DE &lt;br /&gt;
	ORA 	Е      	;ДО НУЛЕВОЙ &lt;br /&gt;
	JNZ 	М4     	;ВЕЛИЧИНЫ &lt;br /&gt;
	MVI 	А,36Н 	;ВЫКЛЮЧЕНИЕ &lt;br /&gt;
	STA 	АЗ     	;ТАЙМЕРА&lt;br /&gt;
	LXI 	В,К    	;ЗАГРУЗКА ДЛИТЕЛЬНОСТИ МЕЖДУ НОТАМИ &lt;br /&gt;
М5: 	DCX 	В      	;ЗАДЕРЖКА, ПУТЕМ &lt;br /&gt;
	MOV 	А,С    	;ДЕКРЕМИРОВАЯ ВС &lt;br /&gt;
	ORA 	В      	;ДО НУЛЕВОЙ &lt;br /&gt;
	JNZ 	М5     	;ВЕЛИЧИНЫ&lt;br /&gt;
	JMP 	М1     	;ПЕРЕХОД НА ИСПОЛНЕНИЕ СЛЕДУЮЩЕЙ НОТЫ &lt;br /&gt;
R0: 	EQU   	0000Н   ;АДРЕС НАЧАЛА ОТТРАНСЛИРОВАННОЙ&lt;br /&gt;
			;НОТНОЙ ЗАПИСИ&lt;br /&gt;
А0: 	EQU   	0000Н   ;АДРЕС ПОРТА А0 ТАЙМЕРА &lt;br /&gt;
А2: 	EQU   	0000Н   ;АДРЕС ПОРТА А2 ТАЙМЕРА &lt;br /&gt;
A3: 	EQU   	0000Н   ;АДРЕС ПОРТА АЗ ТАЙМЕРА &lt;br /&gt;
К:   	EQU   	0000Н   ;КОНСТАНТА ЗАДЕРЖКИ МЕЖДУ НОТАМИ &lt;br /&gt;
ТТ: 	EQU   	0000Н   ;КОНСТАНТА ТЕМПА&lt;br /&gt;
	END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вывод директив редактора осуществляется в строках&lt;br /&gt;
560—580, а ввод и адресация по директивам — в строках 590—620.&lt;br /&gt;
&lt;br /&gt;
В заключение остановимся на описании некоторых&lt;br /&gt;
директив:&lt;br /&gt;
&lt;br /&gt;
;2 - ДОПИСАТЬ. &lt;br /&gt;
Реализуется в строках 1380, 1390, в которых указатель устанавливается на последнюю ноту в записи.&lt;br /&gt;
&lt;br /&gt;
;3 — ИСПРАВИТЬ. &lt;br /&gt;
Аналогична директиве дописать, однако номер нотной записи вводит пользователь — строки 1410, 1450.&lt;br /&gt;
&lt;br /&gt;
;4 — РАСПЕЧАТАТЬ. &lt;br /&gt;
Реализуется в строках 1470—1510 с помощью цикла, в котором функцией PEEK отображается информация из памяти, в соответствии с форматом записи.&lt;br /&gt;
&lt;br /&gt;
;5 — ОТТРАНСЛИРОВАТЬ. &lt;br /&gt;
Эта директива описана в строках 1530—1840 и использует программу воспроизведения оттранслированной нотной записи, исходный текст которой приведен в табл. 4.&lt;br /&gt;
&lt;br /&gt;
А. СОРОКИН, г. Москва&lt;br /&gt;
&lt;br /&gt;
[[Категория:Радио-86РК/Публикации|42]]&lt;/div&gt;</summary>
		<author><name>Panther</name></author>
	</entry>
</feed>