Here's a regular expression summary of the form 8svx syntax. this could be an IFF file or part of one. 8SVX ::= "FORM" #{ "8SVX" VHDR [NAME] [Copyright] [AUTH] ANNO* [ATAK] [RLSE] BODY } VHDR ::= "VHDR" #{ Voice8Header } NAME ::= "NAME" #{ CHAR* } [0] Copyright::= "(c) " #{ CHAR* } [0] AUTH ::= "AUTH" #{ CHAR* } [0] ANNO ::= "ANNO" #{ CHAR* } [0] ATAK ::= "ATAK" #{ EGPoint* } RLSE ::= "RLSE" #{ EGPoint* } BODY ::= "FORM" #{ BYTE* } [0] The token "#" represents a ckSize LONG count of the following {braced} data bytes. E.g., a vhdr's "#" should equal sizeof(voice8header). Literal items are shown in "quotes", [square bracket items] are optional, and "*" means 0 or more replications. A sometimes-needed pad byte is shown as "[0]". Actually, the order of chunks in a form 8svx is not as strict as this regular expression indicates. The property chunks vhdr, name, copyright, and AUTH may actually appear in any order as long as they all precede the body chunk. the optional data chunks anno, atak, and rlse don't have to precede the BODY chunk. And of course, new kinds of chunks may appear inside a form 8svx in the future.