надеюсь wav 16бит, 8 точно (в-отличии от maketzx) не-распознаётся
Вид для печати
Да, каким-то образом мне удалось сделать ему "правильный" формат. Он нашёл кучу интересного на моей "рабочей" кассете, включая игру, которую я считал утерянной! Спасибо за программулину.
Недостатки:
1. нужно как-то отвязаться от обязательной конверсии wav в моно-16бит-48кГц. Кроме того, можно использовать второй канал как источник сигнала при восстановлении испорченных данных.
2. нужно предусмотреть сохранение всех данных в отдельных TAP-файлах. Сейчас он мне сложил всё, что нашёл в 3 больших TAPки. Как-то придётся это сейчас распиливать и разбирать.
Спасибо!
Вот тебе резалка TAPок на REXX:
;)Код:/* TAPSplit */
OPTIONS AREXX_SEMANTICS
OPTIONS AREXX_BIFS
parse arg infile
if infile='' then do
say 'required argument missing'
say 'No file to split'
exit
end
infile=strip(infile,,'"')
if ~open(infile,infile,'r') then do
say 'No file to split'
exit
end
a=seek(infile,0,'b')
outfilenumber=0
loop:
length=readch(infile,2)
if eof(infile) then exit
data=readch(infile,c2d(reverse(length)))
outfilenumber=right(outfilenumber+1,3,0)
outfile=left(infile,length(infile)-4)'-'outfilenumber'.tap'
if ~open(outfile,outfile,'w') then do
say 'Error save file' outfile
exit
end
a=charout(outfile,length||data)
a=close(outfile)
signal loop
Epsilon, на Амиге не заработает, я переделывал её под PC-шный интерпретатор Regina.
Изначальная амижная была такая:
Код:/* TAPSplit */
parse arg infile
if infile='?' then do
options prompt 'FILE/A: '
parse pull infile
end
if infile='' then do
say 'required argument missing'
say 'No file to split'
exit
end
infile=strip(infile,,' "')
if ~open(infile,infile,'r') then do
say 'No file to split'
exit
end
filelength=seek(infile,0,'e')
seek(infile,0,'b')
outfile=0
loop:
blocklength=c2d(reverse(readch(infile,2)))
string=readch(infile,blocklength)
outfile=right(outfile+1,3,0)
open(outfile,outfile'.tap','w')
writech(outfile,reverse(d2c(blocklength,2))||string)
close(outfile)
if seek(infile,0)=filelength then exit
signal loop