Code: Select all
' SeqBox dumb decoder
' A minimal SeqBox container decoder sample with no checks
' (resulting file will be &h1A padded - usually not an issue)
DIM inFileName AS STRING
DIM outFileName AS STRING
InFileName = "test.sbx"
OutFileName = inFileName + ".out"
DIM fIn AS INTEGER
DIM fOut AS INTEGER
fIn = FREEFILE
OPEN InFileName FOR BINARY AS fIn
KILL OutFileName
fOut = FREEFILE
OPEN OutFileName FOR BINARY AS fOut
DIM SBXBlock AS STRING * 512 ' SeqBox v1 block size
DIM BlockNum AS LONG ' SeqBox block sequence number
DIM DataBuffer AS STRING ' Actual file content
DO WHILE NOT EOF(fIn)
GET #fIn, , SBXBlock
' This is where one would check for a valid SBX block signature,
' verify the CRC, blocks numbers sequences, etc.
' but we can just assume the SBX file is OK
BlockNum = CVL(MID(SBXBlock, 13, 4))
' Skip metadata block if present (0 is endian agnostic so no BE-LE conversion)
IF BlockNum <> 0 THEN
DataBuffer = MID(SBXBlock, 17)
PUT #fOut, , DataBuffer
END IF
LOOP
CLOSE