Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site watmath.UUCP Path: utzoo!watmath!csc From: csc@watmath.UUCP (Computer Sci Club) Newsgroups: net.micro,net.micro.atari16 Subject: Re: New way to post binaries - discussion on format Message-ID: <2844@watmath.UUCP> Date: Tue, 21-Oct-86 11:22:12 EDT Article-I.D.: watmath.2844 Posted: Tue Oct 21 11:22:12 1986 Date-Received: Wed, 22-Oct-86 04:12:35 EDT References: <2035@dalcs.UUCP> Reply-To: csc@watmath.UUCP (Computer Sci Club) Distribution: net Organization: U of Waterloo, Ontario Lines: 61 Xref: watmath net.micro:15803 net.micro.atari16:2721 Summary: I mentioned in a previous article that I had written some arbitrary 8 bit encoding programs that I could easily turn into an archiver specifically designed for network transfer. Since there seems to be some interest in the topic in general, I'll tell you what my programs do. In the most general case, my encoding routines are given a list of characters that the transmission medium does not want to see. It will then never generate those characters. It accepts a stream of arbitrary 8 bit bytes, and produces an encoded or decoded stream. The actual encoder operates in two modes: eight bit encoding (M8) and seven bit encoding (M7). The encoder decides what mode it should be running in, depending on the cost of the mode. In seven bit encoding mode, any seven bit character can be transmitted. Any character the encoder has been told is pathological is mapped into a two character escape code. This mode is obviously very cheap for text. Any transmittable character is sent as itself. In eight bit mode, the encoder can accept any 8 bit value. Each group of three input bytes is turned into four output 6 bit values. These six bit values are then mapped onto the ASCII characters "a-zA-Z,.". Run length encoding is performed in both modes. The archive format I was considering would have a special archive control character (something non-controversial) which would never be generated by the encoder. The archive control characters would signal the beginning of easily parse text strings that would describe the beginning and end of archived files, their CRC's and lengths. It would be possible to generate checkpoints in the archive. The archiver could extract all undamaged files from an damaged archive. The checkpoints could be used for retransmitting parts of the archive. If an archive was damaged, the archiver could tell the user what part of the archive it needed replaced. Anyone else who had a complete archive could use that information to generate just the data needed to repair the broken archive. The archiver will treat a set of unordered files as an archive. Each file would be searched for a header. The header would identify the archive and be used to order the parts. It would then read the files in the correct order. The archive creation command would automatically generate a numbered set of files for posting, according to a maximum size constraint. No more editing and cat'ing of news articles. My experiments show me that this program encodes a.out files slightly more cheaply than uuencode, text files are very cheap. The experimental version does not transmit any of the following characters: all control characters, "<>{}[]^|\\~", and del. If there is any interest, myself and another fellow here, Mike Gore, will put this together out of code we already have (for encoding, CRC checking) and we will post the source (for UNIX and Atari) and uuencoded versions for the Atari ST. It would be written to be portable. Comments? Tracy Tims mail to ihnp4!watmath!unit36!tracy