Page 1 of 1

Tape Header Format

Posted: Mon Dec 04, 2006 11:52 pm
by Twilighte
I thought it about time to lay out the format of a standard Oric tape header...

$16
$16
$16 (Minimum of three $16's)

$24 (Synchronisation byte)

$0
$0

$0(Basic) or $80(Assembler)

$0(No Autostart) or $80(Basic Autostart) or $C7(Assembly Autostart)

High Byte of the End address
Low Byte of the End Address

High Byte of the Start Address
Low Byte of the Start Address

$0

Filename(Up to 16 characters)

$0

Program Data


Note that i have used hexadecimal notation throughout

Re: Tape Header Format

Posted: Sun May 10, 2015 3:27 pm
by jdavis6809
hello,

yes

thanks

I have ben reading some tap files with a hex editor I find that the header content is not consistence

I expected the data start stop addresses and file name addresses to be in the same place all the time

regards

john davis uk

Re: Tape Header Format

Posted: Sun May 10, 2015 8:39 pm
by Dbug
As written the number of $16 is variable because it's a synchronization pattern, technically you could have many of them, it just happens that 3 is the minimum that still gives readable data.
The rest is consistent.

Re: Tape Header Format theoric #19 L'Oric ANU

Posted: Mon May 11, 2015 2:30 pm
by jdavis6809
hello

I have download all of the theoric magazines and found this in issue #19

It explains the tape format

see attached

Theoric 19 - Avril-Mai 1986 - page 46.jpg
Theoric 19 - Avril-Mai 1986 - page 47.jpg
Theoric 19 - Avril-Mai 1986 - page 48.jpg
regards

john davis uk

Re: Tape Header Format theoric #19 L' Oric ANU part 2

Posted: Mon May 11, 2015 2:33 pm
by jdavis6809
hello

I have download all of the theoric magazines and found this in issue #19

It explains the tape format

see attached
Theoric 19 - Avril-Mai 1986 - page 49.jpg
Theoric 19 - Avril-Mai 1986 - page 50.jpg
regards

john davis uk

Re: Tape Header Format

Posted: Wed Dec 28, 2016 8:55 pm
by ThomH
I've thrown this onto the wiki, which I think matches the exposition given above plus some detail on the actual waveform and a brief mention of the hardware/software implementation. Hopefully it's accurate but if not then, well, it's a wiki. So easy to fix.

Re: Tape Header Format

Posted: Sat Dec 31, 2016 10:50 am
by Symoon
In an old discussion about it, we establised that the Oric ROM actually needs four $16 at the beginning of the file. 1st one is used to synch the signal decoding, the 3 next to confirm it's the header synch sequence.
That's funny because for a long time I thought the Oric synchronised its reading speed according to the tape player speed, but actually no: it synchronises the byte decoding, passing bits to start at the right one to decode the next byte.

Also, I wonder if there are no specific values for commands like STORE.

Re: Tape Header Format

Posted: Sun Jan 01, 2017 11:56 pm
by ThomH
I've updated the wiki page to say four rather than three but otherwise I think we're of an understanding: the Oric decides how quickly the tape is running, and whether encoding is slow or fast, just by inspective the waves as detected. Is that what we both think?

Re: Tape Header Format

Posted: Mon Jan 02, 2017 6:49 am
by Symoon
Thanks for the update!

Aha, sorry when I was talking about "speed" in my old (and wrong!) synchronisation understanding, I meant the tape player speed which can vary a little form one player to another! In my youth I thought the synch header was used by the Oric to adapt itself to a tape that was played 5% faster for instance - which is absolutely not what's happening ;)

About fast or slow encoding/decoding speed, it's the human being that decides the decoding speed, by adding ",S" or not after CLOAD ;) Thankfully by ear we can recognise a slow or fast recording!

Re: Tape Header Format

Posted: Tue Jan 03, 2017 12:43 pm
by Yicker
Back in the days when I had a real Oric Atmos, I always thought that it would have been better if the tape header was always saved in SLOW format with a flag in the header to say whether the main program/data was FAST or SLOW format. That way when using CLOAD the ',S' parameter wouldn't be needed.