The UNITRK(tm) Format:
======================

A UNITRK stream is an array of bytes representing a single track of a
pattern. It's made up of 'repeat/length' bytes, opcodes and operands (sort
of a assembly language):

rrrlllll[REP/LEN][OPCODE][OPERAND][OPCODE][OPERAND] [REP/LEN][OPCODE][OPERAND]..
^                                         ^ 
^|-------ROWS 0 - 0+REP of a track---------| |-ROWS xx - xx+REP of a track..

The len field (lower 5 bits) of the rep/len byte contains the number of
bytes in the current row, _including_ the rep/len byte itself (So the len
field of row in the previous example would have a value of 5). This makes
it easy to search through a stream for a particular row. A track is conclu-
ded by a 0-value rep/len byte.

The upper 3 bits of the rep/len byte contain the number of times -1 this
row is repeated for this track (so a value of 7 means this row is repeated
8 times).Opcodes can range from 1 to 255 but currently only opcodes 1 to 19 are
being used. Each opcode can have a different number of operands. You can
find the number of operands to a particular opcode by using the opcode as
an index into the 'unioperands' table (UNITRK.C) . The opcodes itself are
defined in 'UNITRK.H'.