PDA

Просмотр полной версии : Утилита конвертирования BAS/BIN для записи на ленту - MSXCAS



marinovsoft
19.09.2018, 14:09
Актуальные исходники MSXCAS: https://gitflic.ru/project/marinovsoft/msxcas
Как работать с MSXCAS: https://zx-pk.ru/threads/29539-utilita-konvertirovaniya-bas-bin-dlya-zapisi-na-lentu-msxcas.html?p=981495&viewfull=1#post981495
Как потом загрузиться с магнитофона: Описание команд 1 (http://zx-pk.ru/threads/27607-load-save-iz-bejsika-oshibka-sintaksisa.html?p=908585&viewfull=1#post908585), Описание команд 2 (http://zx-pk.ru/threads/15147-korvet-gruzimsya-s-magnitofona.html?p=359618&viewfull=1#post359618), Описание команд 3 (http://zx-pk.ru/threads/15147-korvet-gruzimsya-s-magnitofona.html?p=967499&viewfull=1#post967499), Описание команд 4 (http://zx-pk.ru/threads/29503-igra-prezident.html?p=979578&viewfull=1#post979578)
Архив со всеми найденными в образах BIN-файлами (программы в машинных кодах): https://yadi.sk/d/yqcaTOkt3XnTRP
Документация по формату кассетных файлов: http://marinovsoft.narod.ru/pk8020.htm
---Serebriakov

MSXCAS - программа преобразования BAS/BIN-программ в звуковые файлы формата WAV (и обратно) для дальнейшей загрузки BAS/BIN программы на Корвете через магнитофонный вход. Полученный WAV можно записать на магнитную ленту и проиграть через магнитофон или просто проиграть через плеер/линейный выход компьютера.

Программа работает со "звуковыми" файлами формата RAW, которые затем легко конвертируются в WAV и обратно, с помощью любого аудио-редактора (Sound Forge, Audacity и т.п.). В версии 2.3 можно напрямую сохранять в WAV.
В архиве с программой MSXCAS есть подробный readme.txt, где расписаны параметры конвертирования в WAV, а так же подробнейшая инструкция по работе с программой.
Настоятельно рекомендую прочитать readme.txt, чтобы не задавать лишних вопросов.

Скачать MSXCAS:

Новая версия MSXCAS v2.3.1 + SOURCES (http://marinovsoft.narod.ru/korvet/msxcas_231.7z)
+ Программа пытается повысить совместимость некоторых токенизированных бейсик-файлов с ПЗУ-Бейсиком Корвет для их успешной загрузки.
+ Добавлена настройка адреса загрузки и выполнения. (См. меню File).
+ Добавлена возможность формирования WAV файла вместо RAW, чтобы не мучиться каждый раз с звуковым редактором.
* Исправлены некоторые мелкие ошибки.
* Увеличена скорость работы.
Исходники компилировать FPC 2.6.4 (Win32 версия, выбор именно этого релиза компилятора выбран как последний работающий с Win98) или FPC 3.0.4 (DOS32 версия, не тестировалась).

Стабильная версия MSXCAS v2.0 (год выпуска 2009) (http://marinovsoft.narod.ru/korvet/msxcas.rar)
Если что-то не работает в более новых версиях, проверьте эту. Исходники компилировать Virtual Pascal 2.1 build 279 либо BP/TP для DOS-версии.

Устаревшие, экспериментальные и нерекомендованные к использованию версии.

Раз уж есть, то пусть останутся для истории.
MSXCAS 2.3.0 + Source (http://marinovsoft.narod.ru/korvet/msxcas_230.7z)
MSXCAS v2.02 + SOURCES (http://zx-pk.ru/threads/29539-utilita-konvertirovaniya-bas-bin-dlya-zapisi-na-lentu-msxcas.html?p=979627&viewfull=1#post979627)
MSXCAS v2.1 TEST (http://zx-pk.ru/threads/15147-korvet-gruzimsya-s-magnitofona.html?p=361528&viewfull=1#post361528)
MSXCAS v2.1 + SOURCES (http://marinovsoft.narod.ru/korvet/msxcas21.7z)

Serebriakov
19.09.2018, 17:48
Президента (PREZ2.BAS) после MSXCAS2.1 мне не удалось заставить грузиться ни на эмуляторе, ни на реальной машине. Т.е. загрузка начинается, файл на ленте находит, но загрузка не заканчивается, когда лента закончилась. Вот архив для сравнения: https://yadi.sk/d/gmYjFPQ8Ah6QtQ
Иногда MSXCAS отрабатывает как положено, иногда нет. В чем проблема непонятно. Про глюки с русскими или длинными путями знаю - запускаю MSXCAS почти из корня диска.

- - - Добавлено - - -

Кстати, MSXCAS 2.0 на конвертировании Президента вообще вылетает. Мб какой-нибудь неопознанный токен?

marinovsoft
19.09.2018, 18:50
Serebriakov, в каком эмуле есть загрузка с ленты?

- - - Добавлено - - -


Кстати, MSXCAS 2.0 на конвертировании Президента вообще вылетает. Мб какой-нибудь неопознанный токен?
R/O с файлов снимите.

Serebriakov
20.09.2018, 18:14
Serebriakov, в каком эмуле есть загрузка с ленты?
Упоминание MSXCAS вы увидели, а про ленту чуть ниже пропустили? ;) Понятное дело не с реальной ленты, а с WAV файла в обе стороны:


Протестировать загрузку с магнитафона можно в эмуляторе B2M:
https://yadi.sk/d/KwY0WiZO3XoGN7 - по ссылке сборка, где выброшено все кроме конфига Корвета с эмуляцией магнитафона. В эмуляторе пишете команду загрузки LOAD "CAS:NAME",B,R для бинарников (например, TETRIS.wav) или LOAD "CAS:NAME",A,R для ASCII-файлов (например, mozhno.wav), потом ENTER и жмете на значок Play "->", чтобы выбрать WAVE для загрузки. Я приложил пару тестовых файлов в папке TEST_WAV. Чтобы ввести двоеточие в b2m нужно нажать клавишу "+" слева от backspace (неочевидно, пришлось поискать )

marinovsoft
20.09.2018, 18:21
В emu B2M стандартно нет загрузки с ленты. Дайте соответствующий cfg.

Serebriakov
20.09.2018, 18:26
Еще раз: в каком эмуле?
Еще раз: в универсальном эмуляторе B2M: http://bashkiria-2m.narod.ru/index/files/0-11

Только, чтобы Корвет в нем поддерживал магнитофон, нужно дописать строки в конфиг:

EMU (b2m). Добавить в конфиг Корвета:
cas : tape-recorder {
record=ppa2.portC[1]
playback=ppa1.portA[0]
}

Выше я давал ссылку на сборку эмулятора с исправленным конфигом под эмуляцию магнитафона у Корвета: https://yadi.sk/d/KwY0WiZO3XoGN7

marinovsoft
20.09.2018, 23:19
Иногда MSXCAS некорректно создает свои RAW-ы из BAS-файлов, тогда получить нужный WAVE можно так же из эмулятора B2M. Жмете в эмуляторе значок записи Record "O" , выбираете файл куда записывать. Далее загружаете нужный BAS в интерпретатор BASICа и делаете SAVE "CAS:NAME".

Ну программа-то как раз корректно работает, а вот о том, что (токенизированные) файлы от дискового бейсика можно загружать в кассетный бейсик нигде не сказано. Во-первых, в файле дискового бейсика может первый байт может быть 0xFF и он его пропускает при загрузке, а вот кассетный грузит его криво. А во-вторых, кассетный бейсик игнорирует тот факт, что встретив номер строки равным нулю, он должен прекратить загрузку (конец файла). Методом научного тыка анализа и перебора выяснено, что достаточно десяти нулевых байт.
Вроде работает, тестируйте, может что и поломал в процессе.
http://marinovsoft.narod.ru/korvet/msxcas_202.7z
А вообще, х.з. вроде должна быть терминация


2 bytes 0000h zero origin, no further lines following
7-8 bytes terminator, seven or eight 00h bytes

Serebriakov
21.09.2018, 10:13
Методом научного тыка анализа и перебора выяснено, что достаточно десяти нулевых байт.
А не может быть такого, что там требуется не десять нулевых байт, а какое-то определенное количество, скажем, чтобы завершить блок данных какой-то установленной в кассетном бейсике длины? Например, если блок в конце получается меньше чем надо, он завершается нулями до этой самой установленной длины блока.

marinovsoft
21.09.2018, 10:54
Не, я вон выше из доки по MSX скопировал, должно быть два нулевых байта - номер строки и еще 7-8 нулевых байтов как конец файла, но Корвету 7 мало, нужно 8. Итого 10.

Serebriakov
08.10.2018, 04:42
Стоит написать о некоторых особенностях, при работе с MSXCAS (на самом деле граблях, на которые я наступил ;) ):

1. MSXCAS вылетает на длинных путях - кладем ее поближе к корню диска. Так же программа вылетает, если в пути есть русские символы.

2. MSXCAS не может прочитать файл, если у него стоит атрибут "Только для чтения". При преобразовании в RAW/WAV через Меню "New" MSXCAS просто останавливается на открытии такого файла и ничего не делает - пишет: Reading file и все. Так же станет невозможным преобразование из токенизированного BAS-файла в нетокенизированный ASCII-файл - будет выдана ошибка: Error reading file.

3. MSXCAS определяет, что ей подсунули токенизированный бинарный BASIC-файл или нетокенизированный текстовый ASCII-файл по расширению файла. Расширения *.TXT и *.BAS считаются нетокенизированными текстовыми ASCII-файлами, а *.CAS токенизированными бинарными BASIC-файлами. Так же программа умеет преобразовывать в RAW/WAV еще и *.BIN - программы в машинных кодах, но к BASIC'у это уже не относится.

а) Если мы хотим преобразовать токенизированный бинарный BAS-файл NAME.BAS в RAW/WAV, нам нужно:
1. Переименовать файл (изменить его расширение) с NAME.BAS на NAME.CAS, иначе программа будет считать файл текстовым ASCII-файлом.
2. Если хотим получать сразу WAV, без необходимости преобразовывать потом RAW в WAV отдельно в аудиоредакторе, жмем F10 - File - Options - [X] Write Wave - Ok .
3. Жмем F10 - File - New .
4. Выбираем наш NAME.CAS .
5. Получаем WAV файл для записи на ленту. Если мы получили RAW, его можно открыть и пересохранить в WAV, с помощью любого аудио-редактора (Sound Forge, Audacity и т.п.). Параметры аудиофайла MSXCAS выдаст при конвертировании.
6. Грузимся с магнитофона (плеера) или в эмуляторе командой: LOAD "CAS:NAME",R (имя файла NAME можно не вводить).

б) Для преобразования нетокенизированного текстового ASCII-файла в RAW/WAV все то же самое, но расширение файла должно быть NAME.BAS или NAME.TXT. Кодировка текстового файла KOI8-R. Для загрузки потом вводить: LOAD "CAS:NAME",A,R .

в) Для преобразования токенизированного BAS-файла NAME.BAS в нетокенизированный ASCII-файл NAME.TXT, нам нужно:
1. Переименовать файл (изменить его расширение) с NAME.BAS на NAME.CAS, иначе программа будет считать файл текстовым ASCII-файлом.
2. Жмем F10 - File - Open - вводим *.* , чтобы показывало все файлы, а не только *.RAW.
3. Выбираем наш NAME.CAS .
4. Жмем F10 - Decode - Bas Decode.
5. Получаем детокенизированный ASCII-файл с расширением BAS, который потом можно переименовать в TXT и посмотреть Блокнотом (например, AkelPad или Notepad++) в кодировке KOI8-R (иногда в ISO 8859-5).

marinovsoft
08.10.2018, 10:22
Новая версия, можно тестить.
http://marinovsoft.narod.ru/korvet/msxcas_231.7z
* Рефакторинг с целью объединения кодовой базы с Back to MST.
* Повышение скорости работы.


1. MSXCAS вылетает на длинных путях - кладем ее поближе к корню диска. Так же программа вылетает, если в пути есть русские символы.
Теоретически это могло быть в старых версиях, в версиях 2.3 и 2.3.1 такого быть не должно.

PS. Есть такой образ 005-tests.kdi, там некоторые бейсик файлы (LOG.BAS, NLO.BAS, MUZREDP.BAS и другие) битые, есть возможность сдампить повторно?

PPS. При загрузке с магнитофона имя файла вбивать не обязательно, достаточно LOAD "CAS:".

Serebriakov
10.10.2018, 10:17
PS. Есть такой образ 005-tests.kdi, там некоторые бейсик файлы (LOG.BAS, NLO.BAS, MUZREDP.BAS и другие) битые, есть возможность сдампить повторно?
К сожалению эта дискетка довольно битая, года эдак с 2001-го =) Часто крутил c нее тесты гостям и дискетка побилась. Нормально прочитать битые сектора так и не удалось.
А посему такой вопрос: возможно ли добавить в MST возможность считать какой-нибудь конкретный сектор c дискеты в образ? Желательна возможность задать промежуток секторов, который будет читаться и количество попыток. Например, сектор до битого, битый, и сектор после битого, 10 раз. Очень помогло бы довытаскивать информацию с многих дискет. Где-то в начале лета дампил 200+ Корветовских дискет (пока не выкладывал на форуме, возможно опубликую чуть позже), так вот, около 50 из них были сильно битые и я просто пока их отложил, за неимением удобного инструмента вытаскивания конкретных секторов.


PPS. При загрузке с магнитофона имя файла вбивать не обязательно, достаточно LOAD "CAS:".

LOAD "CAS:NAME",R (имя файла NAME можно не вводить).

marinovsoft
20.10.2018, 08:27
Репозиторий проекта теперь на битбакете https://bitbucket.org/marinovsoft/msxcas

Serebriakov
20.10.2018, 09:39
Репозиторий проекта теперь на битбакете https://bitbucket.org/marinovsoft/msxcas
Может быть стоит добавить туда же MST, xKorvet (с вашими правками и инструкцией по прикручиванию к totaly), а так же отправить pull request в репозиторий Forth32 с правками Extrom'a (либо сделать fork в вашем репозитории, с исправленными вами ошибками).

marinovsoft
20.10.2018, 09:45
MST будет в ближайшее время, остальное надо приводить в порядок.

marinovsoft
14.04.2023, 18:24
Исходники переехали https://gitflic.ru/project/marinovsoft/msxcas