Предыдущая разработка заставила попытаться разобраться с форматом .tap. Описание и сравнение готовых тапок подсказало способ создания(картинка):
CreateFile(0,"scr2.tap")
f$="Agony MD-P"
fs.w=6912
adr.w=16384
;first block is 19 bytes (17 bytes+flag+checksum)
WriteWord(0,$13)
;flag byte (A reg, 00 for headers, ff for data blocks)
WriteAsciiCharacter(0,$00)
;first byte of header, indicating a code block
WriteAsciiCharacter(0,$03)
;;start to calc checksum
cs.a=3
;Filename (padded with blanks)
t$=RSet(f$,10," ")
WriteString(0,t$)
For i=1 To 10
cs=cs!Asc(Mid(t$,i,1))
Next i
;header info - Length of data block
WriteWord(0,fs)
cs=cs!(fs&255)
cs=cs!(fs/256)
;Code file - address
WriteWord(0,adr)
cs=cs!(adr&255)
cs=cs!(adr/256)
;??
WriteWord(0,0)
;checksum
;Debug Hex(cs)
WriteAsciiCharacter(0,cs);=$52)
;length of second block +2
WriteWord(0,fs+2)
;ff for data blocks
WriteAsciiCharacter(0,$ff)
cs=255
;data
ReadFile(1,"Agony MD-PhT.scr")
While Not Eof(1)
a.a=ReadAsciiCharacter(1)
cs=cs!a
WriteAsciiCharacter(0,a)
Wend
CloseFile(1)
;checksum
WriteAsciiCharacter(0,cs)
CloseFile(0)
f$="Agony MD-P"
fs.w=6912
adr.w=16384
;first block is 19 bytes (17 bytes+flag+checksum)
WriteWord(0,$13)
;flag byte (A reg, 00 for headers, ff for data blocks)
WriteAsciiCharacter(0,$00)
;first byte of header, indicating a code block
WriteAsciiCharacter(0,$03)
;;start to calc checksum
cs.a=3
;Filename (padded with blanks)
t$=RSet(f$,10," ")
WriteString(0,t$)
For i=1 To 10
cs=cs!Asc(Mid(t$,i,1))
Next i
;header info - Length of data block
WriteWord(0,fs)
cs=cs!(fs&255)
cs=cs!(fs/256)
;Code file - address
WriteWord(0,adr)
cs=cs!(adr&255)
cs=cs!(adr/256)
;??
WriteWord(0,0)
;checksum
;Debug Hex(cs)
WriteAsciiCharacter(0,cs);=$52)
;length of second block +2
WriteWord(0,fs+2)
;ff for data blocks
WriteAsciiCharacter(0,$ff)
cs=255
;data
ReadFile(1,"Agony MD-PhT.scr")
While Not Eof(1)
a.a=ReadAsciiCharacter(1)
cs=cs!a
WriteAsciiCharacter(0,a)
Wend
CloseFile(1)
;checksum
WriteAsciiCharacter(0,cs)
CloseFile(0)
С Бейсиком я не разбирался пока.
Дополнение: у Tapex(Tape Explorer) вылез баг - криво добавлены файлы к созданному .TAP
Комментарии
Отправить комментарий