26 Отредактировано garnizon (26-11-2017 20:51)

Re: Разбор архитектуры софта ЯЗС

Признаться я даже не знаю с какой стороны подступиться. Самое плохое что пока даже на реале не могу проверить - но я подготавливаю все для этого.

Из этих программ: http://agatcomp.ru/Apps/Sound2.shtml некоторые для яч ЯАВМИ - Miditrack и Midimove, может еще какие-то.

По списку для ЯЗС следующим идет "7 гномов"
http://agatcomp.ru/Apps/7gnomov.shtml
вроде даже она клаву для язс использует, что интересно. В описании указан список файлов для работы - но есть много версий и чем отличаются - непонятно. Выкладываю архив файлов со всем что у нас есть для этого комплекса (в том числе есть папка "7 гномов").

27

Re: Разбор архитектуры софта ЯЗС

Нашёл текст про МУАРМЫ и прусь от него. Поражает планов громадьё:

          Новосибирский электротехнический институт. (НЭТИ).
       Отдел систем воспроизведения движения. (ОСВД).
    Лаборатория компьютеризированных музыкальных комплексов.


        Музыкальные автоматизированные рабочие места (МУАРМ)
              на базе ПЭВМ "Агат" (исполнение 7,9).

  МУАРМ ориентированны на применение в различных сферах музыкальной деятельности. Построение МУАРМ различных конфигураций обеспечивается набором аппаратных и программных средств разнообразных по функциям , уровню сложности и доступности. Состав некоторой коефигурации МУАРМ  определяется прикладной ориентацией и требуемым уровнем сложности пользовательских функций в данной области применения.
   Ниже приводятся  : 
   I. перечень аппаратных средств, предлагаемых для разработки, которые покрывают все возможные потребности пользователей в области музыкальных применений;
   II. перечень программных средств, обеспечивающих разнообразные по тематике и сложности сферы использования МУАРМ;
   III.перечень информационно - музыкального обеспечения МУАРМ;
   IV. некоторые конфигурации МУАРМ в качестве примеров;
   V.  предлагаемый план работ.

            I. Перечень аппаратных средств МУАРМ , предлагаемых для разработки.

***
   Здесь будут приведены краткие характеристики устройств, а также возможные исполнения: плата, подключаемая на системную шину ( П ) или исполнение в виде блока с автономным питанием и информационой связью по шине MIDI ( БМ ) или по паралелльной шине ( БИ ). Там, где указано П и (БМ или БИ) возможны функциональные различия в исполнениях.

1. Средства звукосинтеза.
1.1. Ячейка звукового синтеза ЯЗС3/1.(П).
   3 звуковых канала, 1 канал шумовых ударных инструментов.
1.2. ЯЗС5/2. (П).
   5 звуковых каналов, 2 канала ударных.
1.3. ЯЗС8. (П).
   8 универсальных каналов звукосинтеза.
1.4. ЯЗСР8/2. (П,БМ).
  8 универсальных сдвоенных каналов разностного звукосинтеза, 2 канала ударных.
1.5. ЯЗСС8. (П,БМ).
  8 универсальных каналов сэмплерного звукосинтеза. Одновременно возможно использование до 4-х, предварительно подготовленных , произвольных акустических тембров.
1.6. ЯЗСЧ8. (П,БМ).
   8 универсальных каналов цифрового частотно-модуляционного синтеза .( Аналог серии YAMAHA DX).
1.7. ЯЗСУ. (П,БМ).
   Синтезатор ударных. Не менее 8-ми каналов.

Пункт 1.2 мы имеем в железе. 1.1 и 1.3 несложно сделать из 1.2, путем удаления или добавления таймера. Но вот всё остальное, особенно 1.5 и 1.6 - это что-то из области фантастики.

На ТТЛ-ной рассыпухе это заняло бы места как вся Агатовская материнка. У Yamaha DX 7 каждый голос - это 6 операторов и 6 генераторов огибающей, а каждый оператор - это цифровой генератор синуса с фазовой модуляцией и регулируемым уровнем сигнала. У самой Ямахи это в один чип не влезло, да и платка там побольше, чем плата расширения Агата.

Можно было бы в это поверить, если бы речь шла про МЭП-овское предприятие - там какие-никакие ПЛМ-ки могли сделать. Тут же вообще не понятно, как эти планы собирались в жизнь воплощать.

28 Отредактировано garnizon (26-11-2017 21:09)

Re: Разбор архитектуры софта ЯЗС

Знаю только что они размещали заказ в  Зеленограде (вроде так, говорю с слов) где должны были изготовить 4 типа
микросхем 1515. А вот дошло ли до дела - не знаю, покопать в эту сторону?

Это вот мне рассказывал тот человек который пользовался экспериментальной установкой (говорил что для неё есть даже неполный эмулятор AY программный). Но установка эта по размерам с половину агата, а должна была после запуска 1515 превратиться в пару ячеек. Если надо могу рыть в эту сторону, надеюсь времени займет меньше чем на поиск ЯЗС...

Кстати там и написано, что 1.4.....1.7. в автономном исполнении........

29

Re: Разбор архитектуры софта ЯЗС

garnizon пишет:

Знаю только что они размещали заказ в  Зеленограде (вроде так, говорю с слов) где должны были изготовить 4 типа
микросхем 1515.

А, с 1515 серией это уже более реалистично. Подозреваю, что до дела вряд ли дошло, это ведь начало 90-х?
Там и Ямахи DX7 стали доступны (а они уже были не особо новой разработкой) и аппараты покруче, и скорее всего никто не захотел доводить до ума разработку, равноценную аппарату 7-8 летней давности. Хотя интересно, они хоть попытались?

garnizon пишет:

Кстати там и написано, что 1.4.....1.7. в автономном исполнении........

Я так понял, там где через запятую - предполагалось два исполнения: одно как плата, другое автономное, с возможными функциональными отличиями.

30 Отредактировано garnizon (27-11-2017 02:25)

Re: Разбор архитектуры софта ЯЗС

Попробую выяснить все что возможно. Но судя по тому как я искал ЯЗС - это будет не скоро.

31 Отредактировано avivanov76 (05-12-2017 13:55)

Re: Разбор архитектуры софта ЯЗС

Что на данный момент удалось выяснить по семи гномам.

Для работы нужны следующие файлы:
GNOM.GEN - это редактор конфигурации и списка группы
GNOM.UPR - это загрузчик обучающих программ
GNOM7 - загружает первые два файла и передает управление GNOM.GEN
DISPL - драйвер ЯЗС, используется обучающими программами
GMUS, GMUS1, GMUS2 - три файла с музыкой для ЯЗС
KLNAZ - обучающая программа "клавиша-название"
KLSIM - обучающая программа "клавиша-символ"
NAZKL - обучающая программа "название-клавиша"
NAZSIM - обучающая программа "название-символ"
SIMKL - обучающая программа "символ-клавиша"
SIMNAZ - обучающая программа "символ-название"
GRD2, GRD3, GRD5, GRD6, GRISD, GRO2, GRO3, GRO4, GRO5, GRO6 - графические файлы
INSGNOM - текст инструкции пользователя
ГРУППА1.ФИО - пример списка учеников группы
ПОРЯДОК.TAБ, ОБЩЕЕ.TAБ, ПЕРВОЕ.TAБ - примеры списка порядка вызова обучающих программ

Для запуска при загрузке ИКП выбрать "Ассемблер" и выйти в отладчик.

Набрать [RUN GNOM7

Загрузится меню.

В меню выбрать пункт 2 (с цифровой клавиатуры).
Стрелками "вверх" и "вниз" выбрать программу "название-символ" в правой части экрана и нажать "ввод".
Программа добавится в список слева. Сделать то же самое для всех имеющихся программ (см. список файлов).
Выйти в меню.

Пункт 3 позволяет редактировать список группы.

Пункт 4 позволяет просмотреть оценки, выставленные программой ученикам.

Пункт 5 вызывает экран справки.

Пункты 6, 7, 8 не реализованы в коде.

При выборе пункта 1 начнется вызов обучающих программ в том порядке, который был указан в конфигурации.

Обучающие программы предполагают наличие звуковой карты и клавиатуры, однако проверить их наличие они даже не пытаются. Звуковой же драйвер построен так, что даже при отсутствии ЯЗС управление возвращается программе. Поэтому без ЯЗС ничего не виснет. А интерфейс программ, в большинстве случаев, позволяет выполнить задание используя только обычную клавиатуру. Поэтому можно запускать их даже в эмуляторе.

Например, при запуске обучающей программы "название-символ" надо нажать любую клавишу. На экране вверху появится символ ноты. Например, C. Этот символ обозначает ноту "До". Используя стрелки вверх и вниз надо "поставить" ноту на нотном стане на правильное место - первую дополнительную линию снизу. Затем нажать ввод. За правильный ответ вам дадут яблочко... или ягоду... Я не опознал, что это за фрукт :)

Каждая обучающая программа загружает драйвер ЯЗС и три мелодии. При запуске, вводе правильного и неправильного ответа они должны играться - вызовов драйвера в коде полно. Возможно и нужная нота должна озвучиваться, но в коде я это еще не нашел.

Когда ответите на все 28 вопросов, все начинается сначала. Пока я не понял, так и должно быть или просто это последствия отсутствия ЯЗС. Возможно, программа ждет установки какого-то флага при воспроизведении мелодии, и не получив его, продолжает работать по кругу. Нужно выйти по РЕД. Загрузится следующая обучающая программа и т.д. В конце программа вернется в меню. Там в пункте 4 можно просмотреть свои оценки.

В программах "клавиша-название" и "клавиша-символ" без ЯЗС видимо тоже не все работает корректно. Как я понимаю, для анимации движения гномов нужен таймер. Без таймера все тоже работает, только надо давить пробел на каждый кадр анимации и не нажать случайно "ввод" в тот момент, когда гном сядет на клавишу, иначе произойдет переход к следующему вопросу.

Программы "символ-клавиша" и "название-клавиша" предполагают наличие музыкальной клавиатуры. Пройти их без нее нельзя, только выйти. Наличие клавиатуры никак не проверяется - программа просто читает порт $C094, разные версии клавиатуры тоже не предполагаются. Определение правильности взятой ноты - захардкожено.

--- Дополнение ---
Вот чего я не нашел, так это построения таблиц звуковысотности. В драйвере нужный кусок просто выпилен. Более того, на адреса таблиц грузится GNOM.GEN. (Это еще можно списать на переключение страниц памяти.) Но где само построение таблиц - непонятно, а без них драйвер либо повиснет, либо будет издавать страшные звуки вместо музыки.

32

Re: Разбор архитектуры софта ЯЗС

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

Можно образ диска выложить который вы создали ?

33 Отредактировано avivanov76 (06-12-2017 14:59)

Re: Разбор архитектуры софта ЯЗС

Да, конечно, вот он. Но это "подопытная" версия. Я сам точно не уверен, что выбрал "лучшие" версии, и кроме того, надо было, наверно, образ взять от ИКП, чтобы было удобнее пользоваться. Сейчас надо загрузиться с ИКП, вставить диск с вот этим образом и уже с него все запускать.

Отличия между версиями кстати небольшие - больше похоже на какие-то мелкие багфиксы, так что та версия, которая весит больше, скорее всего более поздняя.

Отсылок к файлам DISCER, DISED, DISED1 в коде нет, мне кажется, они от чего-то другого.

Кстати, пропажа нашлась. Код для генерации таблиц перенесен в каждую обучающую программу, так что может даже все заработает.

Post's attachments

Attachment icon gnomy.zip 83.38 kb, 330 downloads since 2017-12-06 

34

Re: Разбор архитектуры софта ЯЗС

DISC*  - это, вроде бы, от "дискотека"

35 Отредактировано garnizon (07-12-2017 10:15)

Re: Разбор архитектуры софта ЯЗС

Voldemar0 пишет:

DISC*  - это, вроде бы, от "дискотека"

Но лежат то они в папке "GNOM7", как и текстовик который относится к этим файлам - так что тут видимо ошибка нашей сортировки - надо поменять в архиве.
Еще там есть файл "124_15.FIL" - который не пришей к пи*де рукав вроде.

36 Отредактировано avivanov76 (07-12-2017 13:32)

Re: Разбор архитектуры софта ЯЗС

Вот кстати этот файл "124_15.FIL" надо, наверно, положить вместо INSGNOM - там инструкция, но более подробная, например, там описан принцип начисления очков за выполненные задания. И сказано, что фрукты, которые выдают за выполнения задания - это все-таки яблоки :)

Еще интересная находка: использованная версия драйвера ЯЗС (DISPL) поддерживает отладочный вывод. Если во время исполнения мелодии нажать клавишу "D", то прерывания выключатся и в текстовом окне будут выведены значения внутренних переменных. При втором нажатии воспроизведение должно продолжиться.

Правда, при работе обучающих программ этого не видно, так как включен графический режим. Но когда программа завершается и грузится следующая, включается текстовый режим и там остатки этого вывода видно.

Да, тут вроде нигде не написано, но это все работает только под девяткой - там все управление памятью девяточное и других вариантов нет.

37

Re: Разбор архитектуры софта ЯЗС

garnizon пишет:
Voldemar0 пишет:

DISC*  - это, вроде бы, от "дискотека"

Но лежат то они в папке "GNOM7", как и текстовик который относится к этим файлам - так что тут видимо ошибка нашей сортировки - надо поменять в архиве.
Еще там есть файл "124_15.FIL" - который не пришей к пи*де рукав вроде.

Я так припоминаю, что эти две программы как-то друг на друга завязаны, может быть у них есть отсылки с внутри или снаружи. Поэтому при сортировке они вместе оказались.

38

Re: Разбор архитектуры софта ЯЗС

Voldemar0 пишет:

Я так припоминаю, что эти две программы как-то друг на друга завязаны, может быть у них есть отсылки с внутри или снаружи. Поэтому при сортировке они вместе оказались.

Я специально просмотрел все содержащиеся в коде "гномов" имена файлов на предмет отсылок к "дискотеке" и ничего не нашел. DISCER и DISED тоже не ссылаются на файлы "гномов" кроме драйвера ЯЗС. Так что скорее всего связи между ними нет. (Ну и смысл связывания учебной программы с дискотекой не совсем понятен.)

Тем не менее некоторых файлов не хватает. DISCER содержит отсылку к транслятору (TRANS.3). А гномы ссылаются на 13 учебных программ, хотя в наличии их только 6.

39 Отредактировано garnizon (07-12-2017 18:08)

Re: Разбор архитектуры софта ЯЗС

avivanov76 пишет:

Да, тут вроде нигде не написано, но это все работает только под девяткой - там все управление памятью девяточное и других вариантов нет.

Все что у нас есть по этому комплексу из софта, вот в том архиве. Это коллекции двух людей и да, у обоих были девятки.

Но похоже софт был и для семерки, слышал что в Новосибе целый набор (цитата) "супермузыки, которая звучала просто отлично" с плеером именно для семерки.

Ну и еще эти, понятно что первый альбом писали именно на семерке. Девяток тогда не было:
http://e-gens.com/index_ru.htm

avivanov76 пишет:

Тем не менее некоторых файлов не хватает. DISCER содержит отсылку к транслятору (TRANS.3). А гномы ссылаются на 13 учебных программ, хотя в наличии их только 6.

Может это она?
jzs\Translator\157_3.FIL

А какие имена у недостающих 7-ми уроков?

Вот еще все забывал сказать: почему-то диск с всякими пакетами для язс называется  "KПMH-1" (я так понял это обычный икп с накиданными прогами), может ведь быть такое что разные пакеты используют какие-то общие файлы?

40

Re: Разбор архитектуры софта ЯЗС

garnizon пишет:

Но похоже софт был и для семерки, слышал что в Новосибе целый набор (цитата) "супермузыки, которая звучала просто отлично" с плеером именно для семерки.

Ну я еще не все разобрал, может что-то и в этом архиве отыщется. Я имел в виду, что "гномы" и "дискотека" - точно под девятку (кстати, "сложный контрапункт" и демонстрация - тоже).

garnizon пишет:

Может это она?
jzs\Translator\157_3.FIL

Может быть. Когда дизассемблирую и соображу как она с остальными частями стыкуется, скажу точнее.

garnizon пишет:

А какие имена у недостающих 7-ми уроков?

OBUC, ZVKL, ZVSIM, ZVNAZ, NAZZV, SIMZV, KLZV

garnizon пишет:

Вот еще все забывал сказать: почему-то диск с всякими пакетами для язс называется  "KПMH-1" (я так понял это обычный икп с накиданными прогами), может ведь быть такое что разные пакеты используют какие-то общие файлы?

Наверняка. Один общий файл точно напрашивается - это собственно драйвер ЯЗС. Но тут надо ясность внести  - мы делаем именно образ КПМН-1 или образы отдельных программ? Мне кажется лучше сначала разобраться, из чего состоят отдельные программы, а потом уже легко будет слить их в один диск.

41

Re: Разбор архитектуры софта ЯЗС

avivanov76 пишет:

Но тут надо ясность внести  - мы делаем именно образ КПМН-1 или образы отдельных программ? Мне кажется лучше сначала разобраться, из чего состоят отдельные программы, а потом уже легко будет слить их в один диск.

Конечно лучше сначала разобраться, из чего состоят отдельные программы, это разумней. В том числе в том архиве все нормально разложить и если это возможно - хоть немного прокомментировать.

42

Re: Разбор архитектуры софта ЯЗС

Продолжаю раскопки, взялся за MIDIGED.
Из описания на сайте ясно только, что программа умеет работать с MIDI сообщениями.
Что за сообщения, откуда они берутся, что программа с ними делает - непонятно.

На данный момент ясно следующее.
Программа состоит из 4 файлов:

  • загрузчик MIDIGED

  • собственно программа MIDIGED.D

  • графический интерфейс MIDIGED.G

  • драйвер-плеер MIDIGED.P

Надо сказать, программа самая требовательная к железу и требует наличия аж 3 плат: ЯАВМИ для приема и отправки MIDI внешнему инструменту (должна быть в слоте 2), ЯЗС (в слоте 1) и какой-то еще платы в слоте 4, судя по всему, платы принтера.

Код, который использует 3-ю плату, похоже, распечатывает ноты. Там есть ESC последовательность (видимо, для передачи графической информации) и цикл, который проверяет готовность, отправляет очередной байт и делает задержку.

MIDIGED.D содержит обработчик прерывания от ЯАВМИ и обеспечивает прием MIDI сообщений от внешнего инструмента, поддерживающего интерфейс MIDI.
MIDIGED.G, похоже, отвечает за отрисовку нот на экране.
MIDIGED.P - это старый добрый драйвер ЯЗС, только переделанный до неузнаваемости (впрочем, большая часть кода осталась как есть)

MIDIGED.P от ЯЗС использует только таймер. Весь вывод звука делается посылкой сообщений внешнему синтезатору через интерфейс MIDI на ЯАВМИ.
Тем не менее формат музыкальных файлов, с которым работает драйвер, тот же самый, что используется остальным софтом для ЯЗС. Для этого MIDIGED.D при приеме MIDI сообщений на лету делает преобразование их в формат ЯЗС.

Короче, если воспроизвести по MIDI какую-то песню, то MIDIGED преобразует ее в формат ЯЗС, после чего по F2 ее можно сохранить. (Вроде можно и наоборот, загрузить песню в формате ЯЗС по F1 и переслать ее по MIDI.)

Тут правда возникает много вопросов, которые еще предстоит выяснить:

  • формат MIDI достаточно объемный и позволяет передавать массу самой разной информации даже в своей стандартизованной части. Нестандартизованная часть через события System Exclusive позволяет передать вообще все что угодно. Однако код, который отвечает за преобразование в MIDIGED.D очень небольшой. Вряд ли он умеет преобразовывать что-то кроме высоты нот и каких-то самых базовых их параметров.

  • умеет ли MIDIGED.D принимать события из нескольких каналов MIDI (обычно, музыка раскладывается на несколько каналов)

  • что MIDIGED.D делает с темпом воспроизведения (формат ЯЗС позволяет иметь только несколько фиксированных темпов)

43

Re: Разбор архитектуры софта ЯЗС

Но что же это за плата 3......

44

Re: Разбор архитектуры софта ЯЗС

Похоже, что это плата принтера, поскольку в нее отправляется ESC последовательность:

$0D, $1B, $4A, $18, $1B, $2A, $00, $00, $01

а потом какие-то еще данные. Судя по epson-овским кодам это:

CR
ESC J 24 (перевод строки на 24/216 дюйма)
ESC * NUL 0 1 (выбор графического режима одинарной плотности)

Плата принтера скорее всего девяточная, так как никакого программирования режимов перед печатью нет. Вряд ли это семерочная плата ввода/вывода.
К сожалению, не знаю назначение портов у этой платы. Может кто-нибудь опознать плату по исходному коду?

SUB_E574
        PHA

CODE_E575
        LDA    DATA_C0C2
        BMI    CODE_E575
        PLA
        STA    DATA_C0C0
        LDA    #$40
        STA    DATA_C0C1
        LDA    #$C0
        STA    DATA_C0C1
        RTS

На мой взгляд, порт $C0C2 возвращает сигнал готовности принтера в старшем бите (1=не готов), данные пишутся в порт $C0C0, а управляющие сигналы в порт $C0C1.

Проще всего, наверно, на реальной машине подключить принтер, запустить редактор, несколько раз нажать пробел, чтобы нарисовалось несколько знаков паузы, нажать кнопку H (латинская) для печати и посмотреть, что принтер выдаст.

45

Re: Разбор архитектуры софта ЯЗС

avivanov76 пишет:

Может кто-нибудь опознать плату по исходному коду?

На мой взгляд, порт $C0C2 возвращает сигнал готовности принтера в старшем бите (1=не готов), данные пишутся в порт $C0C0, а управляющие сигналы в порт $C0C1.

Совершенно верно.

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

46 Отредактировано Voldemar0 (20-01-2018 20:33)

Re: Разбор архитектуры софта ЯЗС

Где-то у нас была дока на эту плату, не могу найти. Но по простому:

1) плата не имеет управления/программирования, тупо регистры передачи на принтер (вроде 8+8 бит ?) и схема захвата сигналов состояния от принтера (8 бит).

2) сигналы типичные для принтера, но в доке описывались вроде бы только стробы в два направления ("агат записал данные" и "принтер захватил данные"), а также сигнал инициализации принтера (от агата к принтеру).

47

Re: Разбор архитектуры софта ЯЗС

Voldemar0 пишет:

тупо регистры передачи на принтер (вроде 8+8 бит ?) и схема захвата сигналов состояния от принтера (8 бит).

Ну по схеме же видно: вывод 8 бит в прямом коде, плюс вывод 4 бита в прямом коде, плюс вывод этих же 4 бит в инверсном коде, плюс ввод 8 бит в прямом коде.

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

48

Re: Разбор архитектуры софта ЯЗС

А где вы схему-то нашли? Я нашел только вот это ТО http://agatcomp.ru/Reading/docs/Fg3.089.174_TO.rar.

49

Re: Разбор архитектуры софта ЯЗС

http://agatcomp.ru/Reading/pieces.shtml

50

Re: Разбор архитектуры софта ЯЗС

Нда, мои надежды на то, что MIDIGED можно использовать как конвертер MIDI в формат ЯЗС не оправдались :(

У программы два режима ввода MIDI сообщений. В первом режиме из всех сообщений MIDI понимается одно единственное: NOTE_ON (включить ноту). Номер MIDI канала значения не имеет. Распознается только высота ноты. Параметр Velocity просто отбрасывается.

Все остальные сообщения игнорируются. Собственно, работа с внешним синтезатором выглядит так:
1) в редакторе выбирается длительность ноты (цифрами 1-7)
2) каждое нажатие клавиши на синтезаторе приводит к вводу ноты с выбранной на шаге 1 длительностью
3) для ввода паузы нажимается пробел

Это называется пошаговый ввод. Второй редактор (MUSAGED) умеет то же самое, но только с клавиатурой ЯЗС. Понятное дело, что сконвертировать MIDI файл в формат ЯЗС, просто переслав его по MIDI интерфейсу, не получится, поскольку все полученные ноты будут сохраняться с одинаковой длительностью. Кроме того, похоже, что сочетания нот (аккорды) будут введены как отдельные ноты, одна за другой. Чтобы определять одновременно звучащие ноты, надо как-то фиксировать время их взятия, а ничего похожего я в коде не нашел.

Почему разработчики сделали только пошаговый ввод - понять можно. Есть две причины:
1) чтобы измерять длительность нот на лету, нужно работать с двумя источниками прерываний. Первый - это UART, второй - таймер. Контроллера прерываний у Агата нет, поэтому в обработчике прерывания надо программно определять его источник. Видимо, для разработчиков это было трудно (учитывая, что даже попыток определения наличия ЯЗС ни в одной программе не делается).
2) формат ЯЗС может хранить только относительную длительность нот (целая, половинная и т.д.) и не может хранить абсолютную (например, в секундах). Вычислить длительность на лету нельзя, потому что темп, в котором человек вводит ноты, программе неизвестен. Если нота была нажата в течении секунды, то нельзя понять, это была целая нота в темпе 240 четвертей или половинная в темпе 120. Ну и человек - не робот, поэтому темп "плавает".

Есть второй режим ввода MIDI сообщений, переключение между режимами происходит по нажатию РЕД. В этом режиме каждый поступающий байт MIDI сообщения сохраняется как аргумент команды "Установка тембра". В результате все, что отправляет синтезатор, будет сохранено и может быть потом передано обратно в синтезатор - драйвер MIDIGED.P при обнаружении команды "Установка тембра" просто пересылает аргумент команды как есть.

Хотя в этом режиме все исходные данные сохраняются в формат ЯЗС, проблем тут две:
1) привязка MIDI-сообщений ко времени теряется. Все ноты на синтезаторе "выстрелят" практически одновременно.
2) ЯЗС при воспроизведении такого файла будет молчать, так как текст состоит только из команд смены тембра.