To: coco@maltedmedia.com In-reply-to: Subject: Re: [Coco] VEF specification FCC: ~/Mail/sent-mail References: --text follows this line-- >From: "Boisy G. Pitre" >Date: Tue, 10 Aug 2004 20:22:44 -0500 > >I'm looking for the specification on VEF, the CoCo 3 VDG Extended File >format. Instead of trying to construct it from looking at source, and >possibly missing a detail, does there exist a document which explicitly >defines the format of a VEF file? Yep. The MVCanvas docs, by Mike Haaland of Hyper-Tech Software, 1989, updated 03/22/90. He says: FILE FORMAT ---------------- NOTE: "char" below refers to a Byte. VEF picture format: A two byte VEF Header. Header Values are in Hexadecimal Standard Squashed Screen Type Screen size Colors ------------------------------------------------------- 0000 8000 08 320x200 16 0001 8001 07 640x200 4 0003 8003 06 320x200 4 0004 8004 05 640x200 2 16 bytes palette information Picture Data: ---------------- If picture is a Standard (UnCompressed) VEF Raw Data -- just put it on the screen If picture is compressed (Squashed) char len; Number of bytes to read and decode to restore 1/2 scan line of screen data. 1/2 scan line is 80 bytes on a type 7 or 8 screen, 40 bytes on types 5 or 6 screen. (40 and 80 are Decimal values) char count; compressed/uncompressed byte count if data is compressed: char data; if data is uncompressed: char data[count]; The header data will only be found once at the beginning of the file. Now to decode the Compressed Data. Read the first byte and call it len. It's the length of the compressed 1/2 scan line. Now read 'len' bytes into an array. All we have to do now is to decode the data we just read into the buffer. Get the first byte in the buffer and see if the high bit is set. It's our 'count' byte. If the high bit is set it's compressed. Now subtract 128 from our 'count' (clear the high bit) and put the next byte in the buffer 'count' times. If the high bit is not set, get the next 'count' bytes from the buffer and put them on the screen. This continues until you've used 'len' bytes that are in the buffer. When the buffer has been decoded, read the next 'len' byte from the file and do it again. This will be repeated 400 times in the file. For compressed data: -------------------------- (In Decimal) char count, 1 to 127 - High bit set - means its compressed data; this will be the screen data, put it on the screen 'count' times. For uncompressed data: -------------------------- (In Decimal) char count, 1 to 127 - Uncompressed number of bytes to follow. data[count]; Willard says: That's it! I've only dealt with uncompressed VEFs myself. > >Boisy > > >-- >Coco mailing list >Coco@maltedmedia.com >http://five.pairlist.net/mailman/listinfo/coco > -- Willard Goosey goosey@sdc.org Socorro, New Mexico, USA "I've never been to Contempt! Isn't that somewhere in New Mexico?" --- Yacko