MSXCAS v2.0 1. Введение Программа MSXCAS предназначена для обработки файлов формата Korvet- MSX на магнитной ленте. Исходными данными для программы являются сырые (RAW) звуковые файлы определенного формата, выходными – текстовые файлы, токенизированные BASIC-файлы, а также двоичные файлы. Также возможно обратное преобразование. Программа позволяет: - Преобразовывать RAW файлы в ASCII, BASIC и двоичные (BIN) файлы, автоматически определяя их тип. - Преобразовывать токенизированные BASIC-файлы в обычные ASCII BASIC файлы для дальнейшей обработки. - Преобразовывать ASCII, BASIC и двоичные файлы в RAW файлы для дальнейшей записи на магнитную ленту или непосредственной передачи на Korvet-MSX совместимую машину. - В полуавтоматическом режиме восстанавливать форму сигнала и производить "нормализацию" звукового уровня. Последняя возможность позволяет работать с отличными от MSX форматами файлов. Программа работает практически на любом ПК под управлением операционной системы Windows (была проверена работа с Windows 98 и Windows XP). Специальная версия для DOS работает как непосредственно в "чистом" DOS, так и в окне вышеназванной ОС. Программа еще очень сырая и глючная, и, видимо, содержит множество ошибок, так как в ней как таковые отсутствуют проверки "от дурака". Умный человек и сам поймет что можно, а что нельзя, а дураку эта программа не понадобится. В дальнейшем на http://marinovsoft.narod.ru/ будут выкладываться следующие версии программы, а также возможно появление как новых программ для работы с Корветом, так и документации для него. 2. Копирайты, ограничения и т.д. Поскольку такие вещи никто не читает, пропустим их и пойдем дальше. 3. Запуск программы При запуске программы появится обычный для такого типа программ рабочий стол. В верхней части экрана имеется главное меню, доступ к которому можно получить клавишей F10. Все полезные функции программы вызываются через главное меню. Далее последует их описание. 4. Меню "File" В этом меню имеются следующие пункты: - "New", предназначенный для создания нового RAW файла из BASIC/ASCII/BIN файла. При выборе данного пункта меню автоматически вызывается диалоговое окно открытия файла. После открытия файла программа автоматически по расширению определяет его тип (CAS/TXT/BIN). Имя MSX файла генерируется из исходного путем урезания или дополнения пробелами до 6 символов. Для двоичных файлов адрес загрузки и адрес запуска устанавливается равным 9000h. Адрес конца загрузки подсчитывается автоматически из адреса загрузки и длины файла. Почему адрес загрузки установлен в 9000h – потому что были найдены два файла, которые смогли с этого адреса загрузиться. - "Open", предназначенный для открытия RAW файла для дальнейшего восстановления из него BASIC/ASCII/BIN файла. После открытия файла на рабочем столе выводится окно протокола работы с выбранным файлом. - "Save", "Save as…", "Save all", "Change dir…" пункты пока не работают - зарезервированы для следующих версий. - "DOS shell", предназначенный для временного выхода в MS-DOS. - "Exit", этот пункт в комментарии не нуждается. 5. Меню "Decode" Работа с этим пунктом меню возможна только после открытия исходного RAW-файла. В этом меню имеются следующие пункты: - "RAW recode", предназначенный для восстановления формы сигнала и нормализации звукового сигнала. Обрабатывается файл, выбранный в диалоге открытия файла. Сохранение производится в файл, отличающийся от исходного только расширением MSR (MSX RAW). Если в текущей директории уже имеется файл с таким именем, он затирается, при этом никакого предупреждения не выводится. Полученный MSR файл в дальнейшем можно переименовать в файл с расширением RAW и использовать по своему усмотрению. - "Phase 1 decode", предназначенный для первичного декодирования полученного MSR-файла в поток битов. При этом единичные биты (в формате MSX) дублируются, так как на кассете единичный бит соответствует 2-м периодам (колебаниям). Запись производится в файл, отличающийся от исходного только расширением TX1. Данная стадия обработки занимает значительное время, так как чтение и запись производится по одному байту (что не очень хорошо – нужно читать и писать как минимум блоками по 512 байт). Данный пункт оставлен как отладочный, так как позволяет вручную исправить несколько битов, для этого нужно открыть этот файл в вашем любимом текстовом редакторе, найти необходимую позицию и исправить неправильный бит. Описание поиска ошибочных битов выходит за рамки данного описания и здесь приводиться не будет. Могу только добавить, что при разработке первых версий программы мне это часто приходилось делать. - "Phase 2 decode", предназначенный для вторичного декодирования полученного TX1-файла в поток чистых битов. Запись производится в файл, отличающийся от исходного только расширением TX2. Данная стадия обработки также довольно долгая, но все же намного быстрее, чем "Phase 1 decode". Опять же, можно открыть полученный файл в вашем любимом текстовом редакторе для правки и исправления неправильных или выпавших битов. В первых версиях данная стадия декодирования производилось во встроенном редакторе файлового менеджера FAR - производилась замена всех вхождений двойных единиц (11) на одну единицу (1). - "CAS/TXT/BIN decode", предназначенный для конечного декодирования полученного TX2-файла непосредственно в CAS (токенизированный BAS), TXT или BIN файл. Тип файла определяется автоматически по содержимому. В окно отладочной информации выводится имя файла, как оно записано в RAW-файле, а также 10 раз тип файла (в 10-ричном формате). Если тип файла распознан неправильно (отличается от стандартных типов MSX), а также, если не совпадает хоть одно из выведенных в окно протокола чисел, возможны непредсказуемые последствия, вплоть до зависания программы и ОС (а кто сказал, что будет легко). В случае зависания программы рекомендуется воспользоваться предыдущей (но отнюдь не худшей) версией программы, в которой отсутствует оконный интерфейс, но зато выводится адрес "неправильного" байта и вручную подправить ошибочные/выпавшие биты. Для BIN-файлов в окно протокола выводится адрес начала загрузки, конца загрузки и стартовый адрес. Рекомендуется записать эти адреса, если планируется дальнейшее кодирование их в RAW-файл. - "BAS decode", предназначенный для декодирования полученного на предыдущей стадии токенизированного CAS-файла в ASCII BAS-файл. Файл отличается от исходного только расширением BAS. Программа не делает проверку на отсутствие в каталоге CAS-файла, и, если на предыдущей стадии был получен, например TXT или BIN-файл, программа этого не заметит и будет пытаться искать CAS файл. Последствия опять-таки непредсказуемы. В предыдущих версиях алгоритм анализа начала и конца строки основывался на адресе загрузки CAS-файла, который для ROM-бейсика был равен 6D7Eh, и загрузка, например, файлов дискового бейсика могла вызвать непредсказуемые последствия. Текущая версия лишена этого недостатка, так как принимается, что в конце каждой строки имеется нулевой байт (в описании MSX, имеющемся у меня об этом не сказано, но для Корвета это допущение справедливо). 6. Меню "Window" Пока в программе только одно основное окно, так что особо им не поманипулируешь. Пользы, впрочем, как и вреда, данный пункт не имеет, поэтому и остался включенным. 7. Меню "Help" Может, когда-нибудь найдется человек, который напишет справку для программы, а пока там присутствует только один пункт – "About…", который в комментариях не нуждается. 8. Формат RAW-файлов Программа работает с RAW файлами. Файлы этого типа представляют собой "сырые" звуковые данные, в них отсутствует заголовок, поэтому при работе с этими файлами в звуковых редакторах типа SoundForge необходимо вручную указывать его некоторые параметры: Частота дискретизации (Sample rate): 44100 Hz; Разрядность (Sample type): 16 bit, PCM Format: Signed Порядок байтов (Byte Order): Little-endian (Intel) Количество каналов (Channels): Mono 9. Подготовка RAW-файлов для работы с программой Для корректной работы с программой записанные вами файлы необходимо подготовить. Для этого сразу после записи файла необходимо (в терминах SoundForge) сделать реставрацию аудио (Audio restoration). Это позволит устранить DC сдвиг, который кроме того, что присутствует, так он еще и плавно уменьшается по мере заряда (или разряда конденсаторов)! Следующей операцией служит удаление тишины в начале и конце файла (обрезать прямо по фронту) и приглушение тишины между блоками файла. Если этого не сделать, можно увидеть как программу "глючит" при "скармливании" ей такого файла. Кроме того, можно после первого прохода переименовать полученный MSR-файл в файл с расширением RAW и еще раз проконтролировать его в звуковом редакторе. На практике к такому приему мне приходилось приходить лишь несколько раз в самом начале работы над программой 10. Автор и связь с ним С автором можно связаться так: e-mail icq Маринов Георгий: super386@rambler.ru 227242773 Если у вас есть замечания по работе программы, или предложения по ее усовершенствованию, то пишите, не стесняйтесь. Приветствуется багрепорт, багтестинг, багхакинг и прочие багххх. Программисты могут самостоятельно делать изменения в исходном коде программы, который доступен для скачивания на домашней странице. Желательно об изменениях отписаться на e- mail автора super386@rambler.ru. Программисты могут также переделать данную программу для работы с другими форматами. Например, был проверен файл "векторовского" бейсика, у которого был отрезан заголовок, а в исходном коде программы путем подбора был заменен адрес запуска. Программа отлично распознала начала, концы и номера строк, а также текстовые константы, но из-за различий в токенах не смогла представить "правильный" код. Также имеется небольшой баг в работе библиотеки msbin.pas – "неправильно" преобразуются числа с плавающей точкой, например, вместо константы 3.1415926 имеем 3.1415899. Причина этого бага неизвестна, библиотека была переделана из фала msbin.c, рекомендованного компанией Borland для преобразования "старых" Microsoft форматов чисел в формат IEEE binary. Все токены были найдены путем анализа и перебора в процессе написания данной программы из файлов, полученных при сохранении их на реальном ПК8010 командой SAVE "CAS: ИМЯФАЙ". Многие из токенов, особенно из тех, что были добавлены последними, были получены путем сохранения в эмуляторе при работе с дисковым бейсиком, и в ROM бейсике они отсутствуют. Полный список токенов приведен в файле tokens.txt. Если при анализе исходного CAS файла в BAS файл будет записан неизвестный токен, просьба прислать такой CAS файл на адрес электронной почты, указанный выше. Если будет присутствовать неизвестный "двухбайтовый" токен, то в полученном BAS-файле будет присутствовать строка "ДВУХБАЙТОВЫЙ ТОКЕН", после которого будет напечатано непосредственно ASCII представление байта. Для "однобайтовых" токенов специальной отметки не делается. При перекодировании файлов как в одну, так и в другую сторону, никаких перекодировок не производится. Зачем писать то, что уже давно написано. Множество текстовых редакторов (в том числе встроенный в FAR) поддерживает CP866/CP1251/KOI8. Желающие встроить перекодировку могут сами исправить исходный код, таблицы перекодировок можно взять в том же FARе – они лежат там в виде reg-файлов. Отдельное спасибо хочу сказать автору программы HDDSpeed - Михаилу Радченко, именно из исходников его программы были взяты некоторые модули; а также авторам программы hddl – Александру Степанову и Леве Корягину, прочтение readme.txt к их программе явилось толчком к написанию данного readme. Не забывайте и о сайте http://marinovsoft.narod.ru там иногда появляются интересные вещи. Причем часто без предупреждения. Владельцы различных технических сайтов могут выкладывать эту программу у себя, не запрашивая разрешения. Единственная просьба – указывать при этом и ссылку на сайт http://marinovsoft.narod.ru, поскольку обновления будут выкладываться именно там, причем, возможно, без предупреждения. Из Кузбасса (Сибирь) с любовью. Маринов Георгий aka MarinovSoft