----------------------------------------------------------------

Итак, на дворе март 2024 года, а декомпилятор к ASM был написан 
в 94-95 годах. Знатно тогда мы с Игоряном Зелененым (Phantom 
LTD) потрудились, не спав ночами, когда кодили это чудо!

В период моей службы в армии, конечно же от не хрен делать, мной 
был собран редактор ASM 2.0, в который я внедрил декомпиляцию 
трека. Кто бы мог подумать, что там будут глюки :)

Итак, в районе 4-го марта 2024 я, испытывая чувство ностальгии 
решил запустить редактор и поюзать декомпилятор. Треки я 
предварительно подготовил Puhser'ом, ибо для подгрузки их в ASM, 
надо чтоб был плеер.
И вот, загрузив трек Turtles от Лёхи Титова (Al Heather) я слышу 
глюк! Проанализировав трек, я понял, что была использована 
команда HLD SAMPLE, и при декомпиляции теряются данные о номере 
сэмпла и имиджа. Три дня возился, но исправил сей досадный 
трабл.

Внешний декомпилер не переносит LOOP, не работает правильное 
зацикливание трека. Это всё потому, что IMPORT в TR-DOS формате 
работает на версии формата музыки от ASM 0.12, а там не было 
лупа.
Другого способа загрузить музыку в редактор через TR-DOS - нет!

#01C2 - длина одного сэмпла в памяти. Всего их 32. С адреса 
#C000 - #3840
#003c - длина одного имиджа в памяти. Всего их 32. С адреса 
#F880 - #0780
#0400 - длина одного паттерна. Всего их 32 по 16 штук в 
странице.
#0064 - позиций (100)

! захуярить селектор файлов?
+ некорректно работает курсор в редакторе позиций
+ некорректно играет огибающая.
+ нет вывода каталога диска
+ загрузка музыки сама определяет тип и версию редактора, 
производя декомпиляцию трека. Так же сама загружает модули в 
пяти файловом формате ASM 0.12.
    такие модули были в самой первой версии редактора, и в таком 
формате выгружал декомпилированные треки The Pusher 4 и 5 
версий.
+ надо сделать, чтоб загрузка треков сама перебирала регистр 
имени файла, т.к. ASM вводит только большие символы, и хрен 
загрузишь трек с именем в нижнем регистре.
+ подумать над поиском дубликатов имён в каталоге диска (копии в 
памяти) с возможной переименовкой, чтоб дать шанс грузить все 
файлы.
+ селектор имени файла в каталоге. Пока только показывает, надо 
вводить имя вручную, что несомненно бесит.
+ после загрузки трека и выход в основной экран не показывает 
данные LOOP, DELAY. Надо обновить вывод.
+ при загрузке файлов SAMPLES/IMAGES что там с таблицей адресов 
смещение до них? По-моему, там пиздёшь!
+ необходимо добавить доработку имени трека по схеме 
Бульба/Химик, благодаря которой, данные об авторе переносятся в 
трек, а не в плеер.


09.03.2024 
1. скомпилил диск с декомпелированными треками, вдруг кому будет 
интересно послушать.
На диске есть оригинальный ASMv1.12, и он имеет штатный баг - не 
работает дисковод B. Не может грузить с него по команде IMPORT.
Другая версия ASM1.12k — это компиляция от KVA/E-Mage. В ней с 
диском нет проблем, но бордюр чёрный.
ASM 2.0 - полностью рабочий вариант редактора, со встроенным 
декомпилятором. На диске есть хелп к нему.

24.03.24 - Победил глюк с некорректной работой огибающей. Неделю 
я его не мог локализовать, сука.
Сегодня с Саней Сандровским подошли крайне близко к месту 
генерации трабла, и вот, победа за нами! Глюк жёстко отпизжен!

25.03.24 - накодил алгоритм загрузки файла с диска с именем в 
любом регистре, несмотря на то что ввод имени работает только в 
верхнем регистре! 

26.03.24 - исправил глюк с редактором позиций, курсор убегал за 
границы, и всё глючило
    Сделал показ каталога диска, и по клавише X переключение 
страниц каталога, ну и кнопочка есть NEXT|PREV.
    Сандровский вчера в пьяном видеочате кинул предъяву, что мой 
алгоритм загрузки файлов с перебором регистров застрянет, если 
на диске есть два файла, по сути, с одинаковым именем, но разным 
регистром, т.е. TEST.C и test.C - для ASM это одно и тоже. Он 
как бэ прав. Надо подумать.

27.03.24 - встроил маску каталога диска. Пока отображает все 
файлы C и за одно T, типа кодовые файлы и один файл от 5-ти 
файлового формата ASM 0.XX нашел несколько треков от версии ASM 
ниже 0.12. Да, и такое есть. Они имеют крайне отличающийся 
формат данных, и пока их импорт я не сделал. Может и не сделаю.

28.03.24 - написал селектор режима загрузки, ну там 
SONG|PATTERNS|SAMPLE|IMAGE и так далее. Ничего пока не работает, 
только переключалка появилась.
    Сегодня мало кодил, что-то череп побаливает. Возможно, вчера 
было корявое крафтовое пиво, ибо отмечал свой проф. праздник 27 
марта, день ВВ МВД РФ. Кстати!
    Именно в армии я накодил ASM 2.0 в которую был встроен 
декомпилер. Прикольно.

29.03.24 - опять внёс коррективы в загрузку по имени. При выводе 
каталога все спецсимволы заменялись на пробелы, а при попытке 
загрузить файл - нет, поэтому файлы не находились. В общем все 
огрехи вводилки символов в ASM исправлены за счет корректировки 
каталога диска в памяти, на самом диске ничего не меняется.
    Выкинул окно "Exit", которое хрен знает зачем нужно. Не, ну 
если у вас компьютер за углом, и до него далеко идти, то да, у 
вас проблемка :)
    Сделал обработку фильтра каталога. Теперь переключает 
отображение нужных категорий данных, и соответственно сделана 
загрузка этих данных.
    ALL CODE - выводит все файлы с расширением C, но т.к. это 
основной рабочий режим, то тут за одно отображаются файлы с 
расширением T, как вариант возможного файла от ASM в 5ти 
файловом формате.
    MODULES - покажет только файлы с расширением Т, как основной 
файл трека.
    PATTERNS - покажет файлы с расширением 1, как часть трека.
    SAMPLES - ну файлы S :)
    IMAGES - файлы с типом I, имиджи же :)

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

18.04.24
1. Сегодня весь день занимался расширением рабочего поля 
редактора. Раньше было 7 строк, теперь их стало 19.
Не исключаю, что где-то есть глюки из-за этого, но пока не 
встретил. Данная доработка повела по пезде весь редактор 
инструментов, ну точнее он работает, а инфа под ним теперь 
кривая. А может стоит и редактор инструментов расширить, чё 
тупить?

19.04.24
1. Переделал работу с инструментами под новый "вместительный" 
принцип вывода данных. Теперь 19 строк и тут.
2. При выборе квантизации (QUANT=DELAY) сделал возможность 
крутить циферки по кругу, а не от 3х до 50ти.

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

04.05.2024
! ошибка в копировании сэмплов и имиджей. При копировании, 
например сэмпла 3 в 31й вроде бы всё норм, но скопировав тот же 
3й следом в 30й, в 31м сокращается длина сэмпла на 1, тоже самое 
в имиджах.

12.05.2024
1. Праздники майские, и я нихера не делал.

15.05.24
1. Разобрался с маской шума в столбике ADD NOISE в редакторе. 
Сначала был уверен, что там ошибка и маска не верно 
обрабатывается, а после нескольких экспериментов понял, что 
ошибка не в коде, а в описании Сендетского, и микшер управляется 
иначе. В общем там восемь значений от 0 до 7, и вот как оно 
управляет шумом:

(+ есть добавление шума в канал, - нет добавления)
0: A+ B+ C+ (добавляем во все каналы)
1: A- B+ C+ (блокируем А)
2: A+ B- C+ (блокируем В)
3: A- B- C+ (только C! вот тут начинается расхождение, ибо в 
мануале написано, что запрещается шум в канале C, но играет в 
других!)
4: A+ B+ C- (блокируем C)
5: A- B+ C- (только B)
6: A+ B- C- (только А)
7: A- B- C- (не добавляем)

05.06.24
1. Месяц почти тупил. Ничего не кодил. Отдыхал, наверное. 
Сегодня полез в исходник компилятора, и немного его доработал. 
Ничего не поменялось в модуле, я лишь убрал лишний код, и сделал 
оптимизацию. По сути - причесал малость.
После основного компилятора ASM, проходит мой алгоритм, который 
убирает дубликаты каналов, меняя лишь данные в таблице смещений 
на существующую копию.
Благодаря такой обработке, мы получаем существенное сокращение 
длины модуля. Ну я писал об этом, по-моему, в IzhNews, такая 
доработка была и в ASM 2.0 и в The Pusher.
Ковыряясь в коде компилятора, я хотел внедрить этот алгоритм в 
корневой процесс, но увы, не получилось. Все эти смещения на 
каналы в паттернах появляются лишь после компиляции, а в самом 
рабочем формате трека такого деления нет, и, следовательно, 
разделить паттерны на каналы до компиляции нет возможности. Ну в 
теории есть, но оно того не стоит :)

28.06.24
1. Запустил, собрал, работает. Довольный пошел дальше вату 
катать :)

19.08.24
1. Сделал дисковое меню в инструментах. Теперь можно выгружать и 
загружать каждый сэмпл или имидж отдельно. Вызывается из 
редактора инструмента.
Название инструмента передается сразу как имя файла, ну и 
наоборот.
2. Сделал в основном дисковом меню выгрузку всех сэмплов и 
имиджей.
3. Доработал выводилку файлов, теперь она обрабатывает 3х 
символьные свои же расширения :)

20.08.24
1. Загрузка/Выгрузка всех инструментов сохраняет их имена!
2. Введена фильтрация трехсимвольных расширений. Все рабочие 
файлы ASM имеют свои расширения. Поддержка снепшота трека с 
прошлых редакций с типом Z - не поддерживается!
Требуется переименовать файл в тип ZxZ.
3. Добавлена проверка на существование файла перед записью. Если 
такой файл есть, выводится сообщение и операция прерывается.
Расширения файлов:
SAM - набор всех сэмплов трека. Последний сектор данных - имена. 
8х32 bytes
IMS - набор всех имиджей трека. Последний сектор данных - имена. 
8х32 bytes
SMP - сэмпл
IMG - имидж
ZxZ - Модуль ASM 1.13. Ну это как бэ снэпшот всех нужных страниц 
памяти.
1,2,S,I,T - воспринимаются, как составные файлы в формате ASM 
x.xx, которые грузились в оригинале через опцию IMPORT ASM 0.12.
В таком формате были треки первой известной версии ASM 0.12, а 
также такие файлы делал The Pusher начиная с 4й версии при 
декомпиляции ASM треков. Только так можно было загрузить треки в 
сам редактор.

21.08.24
1. Все же накодил селектор файлов. Теперь нет необходимости 
писать имя загружаемого файла, а можно его выбрать курсором 
прямо по списку. Первый клик - копирует имя, аналог того, что вы 
его ввели вручную, второй клик - выполняет команду LOAD на 
выбранном файле.

22.08.24
1. Воткнул обратно часики, хотя Костя ZK-System сказал, что это 
полнейшая ебанина. Кроме того, прикрутил RTC SMUC, и теперь часы 
показывают реальное время, если конечно в вашей железке есть 
доработка, ну или включена опция в эмуляторе. Долгое время не 
мог заставить часы работать, а оказалось, что RTC в режиме 
архитектуры PROFI не работают! Пришлось переключить эмуляцию на 
PENTAGON 1024, и радоваться циферкам в часах :) Честно скажу, 
обработчик стырил из Quick Commander, и спасибо автору за код!

26.08.24
1. Провел массу тестов. Лазил туда-сюда, клацал кнопки там-сям. 
Вроде глюки не замечены. Собираю пререлиз для тестинга.

15.09.24
1. Товарищ Sandrowski провёл тестирование, и нашел несколько 
багов, а также предложил несколько доработок.
2. Теперь не обнуляется поле ввода имени файла или название 
трека. Раньше всегда забивалось пробелами. Малость неудобно, ибо 
в вводилке не предусмотрено управление курсором, но как уж есть.
3. В сборке случайно оказался отключен алгоритм копирования 
данных для команды UNDO. Стёр канал и хрен вернешь! Сейчас 
поправил. Кстати, в ASM это реализовано как-то коряво, и вернуть 
можно только здесь и сейчас, т.е. если стёр канал и включил 
воспроизведение – всё, данные уже не вернуть. Надо проверить 
код, возможно это у меня руки из жопы.
4. Был трабл с выходом из главного экрана редактора. Ну как бы 
выход был отключен, но комбинация клавиш сбивала курсор с 
истинного пути.
5. Внёс небольшие коррективы в обработку ошибок диска.




