[Coco] .CAS file format

Harry Hurst hhos at st-tel.net
Sun Dec 16 17:22:00 EST 2012


> I looking for the specification of the .CAS file format. I wrote in Octave
> a cassete parser.
> It`s in pre-zero-zero-alpha, it`s slow and difficult to use, but it`s
> reading tapes (with checksum) that xroar was giving me IO ERRORs.

Since you are talking about XROAR I guess you are talking about a Dragon's
cassette output? Or does XROAR also do CoCo1/2? The reason I ask is that I
did find a description of the CoCo cassette tape format. I have yet to
find one for the Dragon. There is, BTW a program, called "cocotape", to go
from tape to a wave file on your hard drive. The PC executable is on
CoCo3.com if that would help.

http://www.coco3.com/community/downloads/coconet-support-files/




>
> Now I need to generate the .CAS file.
>
> Does anyone have some docs for the format?
>


Here is the page from "The Facts for the TRS-80 Color Computer" that I found.


********************************************************************
     G.  Cassette Interface - Cassette data is stored onto the tape
using a format called Frequency Shift Keying (FSK ).  This means that
two sine waves of differing frequency are used to store zeroes and ones
on the tape.  A sîne wave of 24OO Hertz is used to store a one, and a
sine wave of 1200 Hertz is used to store a zero.  These sine waves are
generated by the computer with a lookup table and sent to the D/A
converter (see Appendix A)

     The table is scanned sequentially and the values are stored in the
D/A converter.  The output of the D/A converter is then sent to the aux-
îliary input of the tape recorder and stored on the magnetic cassette
tape.  When the datȧ is to be read back into the computer, it is read
back in through a circuit which detects when the input voltage has
crossed zero and counts the time before it crosses zero again.  A high
frequency sine wave will cross zero more often than a low frequency sine
wave.  This fact is used to determine whether a zero or a one was stored
on the tape.  It is a very sîmple method but works well.

     The cassette motor is controlled by the computer through CA2 of
PIA1.  The motor will be on if CA2 is high and off if CA2 is low.



     CASSETTE TAPE FORMAT:  The normal Color Computer tape contains
the following information:
1)  A leader of 128 bytes of $55
2)  Namefile block.
3}  Ab out 1/2 second of blank tape.
4)  128 bytes of $55
5)  Data blocks.
6)  End of File block.


     The format for Data, Namefile or End of File blocks is:
1) One $55 byte.
2) One $3C sync byte.
3) Block Type byte: Namefile= OO, Data= 01, End of Fil e= $FF.
4) Block length byte, O to 255
5) Data, O to 255 bytes.
6) Checksum byte, the sum of all the data plus block type and block
   length.
7) one $55 byte.

    The Namefile block is a normal block with a length of 15 bytes as
described below:
1) Eight bytes for the program name.
2) File Type byte; BASIC= OO, Data= 01 , Machine language= O2
3) ASCII flag byte; Binary= 00, ASCII= $FF
4) Gap flag byte; Continuous= 01, Gaps= $FF this byte is not used by the
current versions of BASIC
5) Two.bytes for the start address of a machine language program.
6) Two bytes for the transfer address of a machine language program.

    The End of File block is a normal block with a length of zero.
********************************************************************


The Dragon structure may be the same. I will be watching for information
on the subject, but I probably won't actively search for it any more for
the present. Let me know if you need that, though, and I will start
searching again.

HH




More information about the Coco mailing list