Для тех, кто вдруг захочет воспользоваться режимом +3e, но, непонятно, как туда файлы закинуть.
Тут в процессе экспериментов появились, так сказать, отходы магического производства. Прошу любить и жаловать -- tape2p3dos, младший брат tape2esxdos.
Работает попроще и [почти] без затей записывает все CODE блоки с магнитофонного входа на диск. Диск текущий, каталогов в +3 DOS не предусмотрено, всё «плоское». Есть, правда, две тонкости:
1. Файлы записываются «как есть» и ДОЛЖНЫ иметь правильные PLUS3DOS заголовки. Я пользуюсь specform из taptools, но подойдет всё, что угодно. Например, можно загрузить файл в эмулятор, записать на образ диска и скопировать с этого образа.
2. Если адрес загрузки CODE блока в TAP меньше 256, это считается как файл, порезанный на куски, где «адрес» -- это оставшееся количество кусков (не считая текущего). Последний кусок, соответственно, должен иметь адрес 0. Максимальный размер кусочка чуть больше 32K. Все другие значения адреса игнорируются, именно поэтому нужен PLUS3DOS заголовок файла (или его явное отсутствие).
Тонкость, не специфичная для этой программы, а просто особенность +3 DOS, о которую я постоянно «спотыкаюсь» -- символ "-" (минус) это НЕ поддерживаемый символ в имени файла.
ВНИМАНИЕ: проверки правильности имен нет, всё неподдерживаемое будет молча проинорировано.
В 10 символов имени на ленте полное имя +3/CP/M не умещается (8+3+1=12), поэтому есть возможность передать желаемое имя файла через «блок мета
данных». Это, опять же, обычный CODE блок, со специальным именем _P3FN-TAG_ (да, такой файл невозможно создать в +3 DOS, т.к. имя содержит неподдерживаемый символ '-'). Первые 12 символов или первые символы до ASCII кода менее 32 будут использованы как имя файла для следующего блока/блоков на ленте.
ИСХОДНИКИ
t2p3-20240518.7z
Файл перевести в TAP можно tapcat - не надо, bin2tap или любым другим способом. Я там наврал немножко, taptools у меня с моими собственными правками, оригинальный tapcat PLUS3DOS заголовки вырезает, не надо им пользоваться совместно с t2p3.
Примеры
Копируем файл с DSK образа:
Код:
cpmcp -f pcw disk.dsk 0:screen.scr screen.scr
bin2tap -c screen.scr tx.tap screen.scr 0
Просто готовый файл, например, скомпилированный:
Код:
specform -a 24576 AY64.P3
bin2tap -c AY64.P3.zxb tx.tap AY64.P3 0
Разрезаем длинный файл на кусочки:
Код:
split --bytes=32768 long.dat long.dat.
bin2tap -c long.dat.aa tx1.tap long.dat 1
bin2tap -c long.dat.ab tx2.tap long.dat 0
cat tx1.tap tx2.tap > tx.tap
Запись с полноценным 8+3 именем:
Код:
echo "[email protected]" > _P3FN-TAG_
bin2tap -c _P3FN-TAG_ tx1md.tap _P3FN-TAG_ 0
bin2tap -c DATAFILE tx1dat.tap DATAFILE 0
cat tx1md.tap tx1dat.tap > tx.tap
[свернуть]