2000 ============================================================= ### ###### #### ##### ########## ###### ################## ####### #################### ###### ##### ################## #### ################ #### ############# ##### ##### ###### ##### ##### ####### ##### ###### ####### ##### ###### ######## ##### #### ######## ##### ######## ##### ####### ######################### ####### ######################### ####### ######################### ####### ##### ###### ##### ####### ##### ###### ##### ###### ##### ####### ##### ####### ##### ####### ####### ###### #### 7PLUS v2.10 - (c) 1991,92,93 by DG1BBQ An intelligent ASCII to binary encoder with enhanced correcting capabilities. ============================================================= --------------------------------------------- Manual for all system versions of 7PLUS v2.10 --------------------------------------------- 7PLUS is hamware. It may only be passed on free of charge and including manual. 7PLUS may be used without limit of duration for non- commercial purposes. ============================================================= | Axel Bauda Bank-account: | | DG1BBQ @DB0CL.#HB.DEU.EU Postgiroamt Hamburg | | Potsdamer Str.43 Bank-No. 200 100 20 | | D-w27576 Bremerhaven Account 5413 91-206 | | Germany | ============================================================= Contents ------------------------------------------------------------- CONTENTS ======== The reading-the-manual-phobia (DOCphobia) .................1 Preface ...................................................1 The development of 7PLUS ..................................2 The ASCII-encoder 7PLUS ...................................3 Basic steps of a 7PLUS filetransfer .......................3 7PLUS-theory ..............................................5 Encoding algorithm ....................................5 Character set .........................................6 Decoding algorithm ....................................6 Automagic single byte correction ......................7 The structure of 7PLUS code files .....................7 Header .............................................8 Code lines .........................................9 Foot line ..........................................9 Single and multipart 7PLUS code files ................10 Splitting ............................................11 The metafile .........................................11 The error report .....................................12 The correction file ..................................14 'Saving' damaged error reports and correction files ..15 Compatibility of 7PLUS versions ..........................16 Filename conventions .....................................17 Usage ....................................................18 Encoding .............................................18 Extracting ...........................................19 Decoding .............................................20 Compiling a correction file ..........................20 Correcting ...........................................21 Joining error reports ................................22 Recreating an error report from a metafile ...........23 Quick help ...........................................23 Additional options ...................................23 -J (Output into single file) .....................23 -K (Automatic erase) .............................23 -N (Don't wait for keystroke at termination) .....23 -P (Use CR as line delimitor) ....................23 -R (Re-encode a single part) .....................24 -SYSOP (Decode, even if parts are missing) .......24 -T (Define file termination string) ..............24 -TB (Add head and foot text when encoding) ........24 -Y (Assume 'YES' on queries) .....................26 -# (Produce server info) .........................26 I Contents ------------------------------------------------------------- Tips for configuring devices and programs for 7PLUS ......26 General conditions ...................................26 Downloading/uploading in binary mode .................27 Downloading .......................................27 Uploading .........................................28 7PLUS on the AMIGA ...................................28 Tips for down- and uploading of 7PLUS files ..............28 Downloading ..........................................28 Automatic 'BBS milking' ..............................30 'Listening in' on someone else .......................31 Uploading ............................................32 Uploading correction files ...........................33 General notes ............................................34 Is there a future without errors? ........................34 Ordering 7PLUS ...........................................35 II Preface ------------------------------------------------------------- The reading-the-manual-phobia (DOCphobia) ========================================= Dispite the fact, I have gone through great lengths in making this manual as complete as possible, I am frequently asked about things t 2000 hat are precicely described in this manual. I know reading a manual can be cumbersome, but it would save me, as the 7PLUS author, a lot of unnecessary work, if every 7PLUS user who is having trouble, would take THIS MANUAL in hand and read it again thoroughly, before asking me. Of course, since nobody is perfect, I may have forgotten a few things here an there. Also some parts may not be very intelligible to beginners, although I tried hard to keep it simple. I cannot supply a MS_DOS/ATARI/AMIGA or UNIX course in this manual. Therefore you should be familiar with the basics of your computer and terminal program. Preface ======= When sending data through the Packet Radio network, errors may occur in spite of the safety mechanisms incorporated into the AX25 protocol. One must bear in mind, that data may pass a lot of unprotocolled interfaces, where a simple impulse can alter it. Also upon transfer the data is passed through quite a lot of memory cells. On computers that don't use memory parity checking, memory errors may go undetected. Plain text with errors is still well legible for humans. We can correct or ignore errors (as long as numbers aren't falsified) and thus still understand what it meant. Even at an error rate of 10%, we can still get the meaning of the text. Things are very different when it comes to machine readable data as programs for instance. One error in 100000 bytes may cause the data to be completely worthless. A program affected by this would probably not run at all or at least not correctly, a picture may be damaged beyond recognition or may not be displayable at all. If a program was sent in the form of it's source text, it may be repaired, but only by those who have a profound knowledge of that programming language. For the mass of users, this is no help. Another problem is: How do you transfer a program or picture through a netnork of bulletin board systems (BBS) that are usually just meant to handle plain text? 1 Preface ------------------------------------------------------------- The answer is to convert it to a format compatible with the BBSs. This task is done by so-called ASCII-encoders (short: encoder). The encoders used in the past had one common problem: - Did a file get corrupted, it was useless and had to be transfered again. - Some encoders wouldn't even recognize errors, so the files produces could actually do unexpected things! This ranged from simple crashes to destruction of data on the harddisk. - Some did recognize that there was an error, but wouldn't tell you where (in what file). - The overhead produced by those encoders was quite large and ranged between 27% up to 100% (!). To transfer a program of 10K in length took up between 12,7K and 20K, depending on the encoder used. This situation was not very satisfying, so it was high time for an encoder that could handle the problem - by using checksums on each and every line of code, thus being able to recognize the exact position of errors, - by supplying a method of correting errors without having to resend entire files over and over again, - by correcting minor errors on the spot, and - by producing less overhead (ca.15%). The encoder that does all this - and more - is >> 7PLUS <<. The development of 7PLUS ======================== 7PLUS has been developed on the basis of my previous encoder SEVEN. 7PLUS however has the ability of detecting and correc- ting errors. These abilities had the price of incompatibility to SEVEN, however. This isn't so grave, since 7PLUS has a lot of advantages compared to SEVEN and now the repeated upload of files, that were corrupted in store & forward, is a thing of the past. Since 7PLUS was incompatible to SEVEN anyway, I implemented a RADIX216 encoding wich allows for very compact files. In the beginning, there was heavy opposition against 7PLUS. Some people were convinced that an encoder that uses charac- ters above 7Fh would create more trouble than do good. 2 The development of 7PLUS ------------------------------------------------------------- 7PLUS established itself as THE standard encoder in Germany very quickly. This proves the critics to be wrong. By now, 7PLUS is not only used in Germany, but worldwide. There even are BBSs that use 7PLUS for file serving purposes. An inportant aspect is the fact, that 7PLUS is available for the most commonly used computer systems in Packet Radio: IBM_PC, ATARI_ST, AMIGA and UNIX systems. (There also are versions for the Apple MacIntosh and Acorn Archimedes. I don't have those versions, so ask around for them in the BBSs) The ASCII-encoder 7PLUS ======================= From its conception, the Packet Radio protocol (AX.25) is an 8 bit system. When only using 7 bits, the protocol is only used to 87.5% of its capacity. When encoding data only using a 6 or 7 bit algorithm, an unnecessarily high overhead is produced. 7PLUS (all versions) - exploits the capacity of the network fully by using all 8 bits, - creates the 7PLUS code lines in a way, that when decoding them, it can determine if a line was transfered correctly, - detects and protocols what lines were damaged or missing, - simplifies the exact reconstitution of corrupted files, by using an mainly automated method of correcting (with minimal cooperation between sender and recipient). Basic steps of a 7PLUS filetransfer =================================== 1. OM A encodes the file TEST.TXT into TEST.7PL and uploads it to the Packet Radio network. 2. OM B downloads TEST.7PL and tries to decode it. ...Unfortunately, the file has been damaged on its travel through the network.... 3. OM B's 7PLUS detects the errors in TEST.7PL and produces a so-called metafile (TEST.7MF) where all the good lines are stored in their already decoded form and in addition an error report TEST.ERR. (TEST.7PL may be deleted at this point, since it is not needed for correcting) 4. OM B sends TEST.ERR to OM A. 3 The ASCII-encoder 7PLUS ---------------------------------------------------------- 2000 --- 5. With the help of 7PLUS, the original TEST.TXT and the error report TEST.ERR, OM A creates the correction file TEST.COR. He then sends the correction file to OM B or he uploads it as a bulletin, if it can be useful to others. 6. OM B's 7PLUS then uses TEST.COR to fill in the gaps in the metafile TEST.7MF. If no gaps remain, 7PLUS frees the metafile of the index data contained in it, renames it to TEST.TXT and reconstitutes the file's timestamp. In case the file TEST.COR has been damaged as well, OM A has to send it again. Since the files TEST.ERR and TEST.COR are usually rather short, this way of correcting damaged files (points 3 through 6 above) is much more effective than resending entire parts again and again until they luckily get through undamaged. The whole concept of exchanging error report and correction files may sound complicated at first, but it isn't really. The 7PLUS correcting method is basically comprised of 5 simple, but important steps: 1. "At OM B: Decode and recognize faulty lines and memorize them in an error report TEST.ERR (automated), 2. "Send error report TEST.ERR from OM B to OM A", 3. "At OM A: Compile correction file TEST.COR" (automated), 4. "Send correction file TEST.COR from OM A to OM B", 5. "At OM B: Do the correction" (automated). If the correction file TEST.COR (for OM B) is downloaded by OM B2 (someone who also downloaded TEST.7PL) does not cover all faulty lines, he just has to run through the described steps 3-5, since his own special TEST.ERR has been generated when unsuccessfully tried to correct his TEST.7MF. Once OM A and OM B have successfully transfered a program or picture file this way, they will see that the whole concept is quite fool-proof. A helpful OM C, who has successfully decoded TEST.7PL can take the place of OM A by supplying correction files to his friends or to someone looking for it. Also, an automated station (e.g. an F6FBB-BBS running 7PSERV by SM0NCS) may well take over the job of supplying correction files! 4 7PLUS-theory ------------------------------------------------------------- 7PLUS-theory ============ The encoding scheme 7PLUS uses, could well be called a 7- three-quarter-bit encoding, because on the smallest scale, 31 bits of the original data are encoded into 32 bits (4 charac- ters) of the 7PLUS code. That is one of the reason, why 7PLUS is called 7PLUS (Simple, isn't it?) 7PLUS uses a RADIX216-algorithm for encoding. For 31 bytes of the original data, 32 7PLUS-bytes are produced. This causes an overhead of 1/32 = 3.125%. Because of the required line delimitors, checksums, head and foot lines, the overhead increases to about 13% to 15%. Simple encoding algorithms as RADIX64 (UUE), RADIX128 (SEVEN) are done by simple bit shifting operations (multiplications with 2^n and divisions by 2^n). Something, microprocessors can do with great speed. RADIX216 (7PLUS) is not based on multiples of 2, thus integer divisions and multiplikations are necessary which take consi- derably more time than simple bit shiftings. Some older microprocessors do not have direkt commands for multiplication and division of integers, so these operations have to be implemented by using add-shift-loops, which run relatively slowly. Divisions done that way are even slower. The microprocessors commonly used today (80X86, 680X0) how- ever all have direct commands for multiplikation and division of integers. That's why the 7PLUS algorithm will run at acceptable speeds on them. Encoding algorithm ------------------ When encoding data, 7PLUS interprets 31 bits of the original data as the integer number N. This number is then divided through 216 for three times. Die divisional rests (A1, A2, A3) and the third quotient (A4) - can take one of 216 possible values (0 bis 215) and - represent 4 basic characters (= 4 bytes = 32 bits) of the 7PLUS code. After encoding of a group of 31 bytes of the original data, a 7PLUS group of 32 basic characters is the result. The basic characters from the RADIX216 algorithm can however not be used directly as they still contain certain characters the are used for control purposes in the ASCII code. This is why each basic character is asigned a new one, that does not collide with any control character of the ASCII code. 5 7PLUS-theory ------------------------------------------------------------- Character set ------------- Characters used by the 7PLUS algorithm: (in HEX notation) 21 - 29, 2B - 7E, 80 - 90, 92, 94 - FC (ranges including) Characters not used: 00 to 20 : Control codes and the space character. 2A : The asterisk (*) must not be used, because - by chance - the string '***end' could be produced, thus causing the receiving TheBox-BBS to end storage. (To my shame, I must admit, I did not take the bulletin board systems used outside of Germany into accout.. The file termination '/EX' may be produced by chance! I haven't received any complaints about this, however. Axel) 7F : DEL, another control code. 91 and 93 : Some telephone terminal programs mis-interpret these characters as XON and XOFF (11h and 13h). When having problems storing all characters of the 7PLUS code, see 'Tips for configuring ...'. Decoding algorithm ------------------ When decoding, - 7PLUS reads 4 characters of the 7PLUS code ( = 32 bits) and - regroups them into the four values A1, A2, A3 and A4. The value N is then rebuilt: N = A1 + A2*216^1 + A3*216^2 + A4*216^3 The value N now represents 31 bits of the original data (almost 4 bytes). After reading and decoding a full 7PLUS group of 32 charac- ters, 31 bytes of the original data are reconstituted. 6 7PLUS-theory ------------------------------------------------------------- Automagic single byte correction -------------------------------- Since version 1.60, 7PLUS uses a simple, but effective way 2000 to correct single byte errors on the spot, when - one byte per line is wrong, or - one byte is missing, or - one byte is superfluous. Upon decoding of a line, 7PLUS checks its validity by using the 'inner' checksum, wich has been there since 7PLUS v1.0 . In case of an error, 7PLUS tries to rebuild the line by testing all possible combinations (up to more than 14.000 combinations). If a combination is found, where the 'outer' checksum (this checksum has been added since version 1.60 of 7PLUS) tests ok, the result is checked again with the inner checksum, because at this point there may be more than one possible result. If both checksums test ok, then the line has been successfully rebuilt. If not, testing of combinations continues until either a valid combination is found or all combinations have been tested unsuccessfully. A situation where the inner AND outer checksum test ok and the line is still incorrect, is EXTREMELY unlikely. To add some more safety, the outer checksum is calculated inverse to the inner one (back to front). The single byte correction may take quite some time (up to three seconds) on slow computers, but if this feature can save the trouble of ordering a correction files, it's well worth the waiting. Also, single byte errors are not that frequent. I am well aware of the fact that there are better methods. The trouble is, they either have a much greater overhead or need extensive tables, wich is a problem in situations where there isn't much memory available (e.g. when called from within a terminal program or a computer running a bulletin board system). The structure of 7PLUS code files ================================= 7PLUS code files are generally comprised of - a header, - up to 512 lines of code and - a foot line. Each line is concluded with a CR/LF combination (on MSDOS and ATARI; on other systems a line delimitor complying with that system is used, e.g. LF on AMIGA/UNIX). During transfer via Packet Radio, the line delimitor is always and only the CR character. 7 7PLUS-theory ------------------------------------------------------------- Transformation of CR/LF (LF with AMIGA/UNIX) into CR is done automatically by the terminal programs. Exception: When receiving or sending in the binary mode of some terminal programs. See 'Tips for configuring ...'. Header ------ (Presentation split due to lack of space) go_7+. 005 of 010 TEST.TXT 0010453 -> +-----+ +-+ +-+ +----------+ +-----+ 1 2 3 4 5 -> 6488 166 (7PLUS v2.1) XXXXYZZ +--+ +-+ +----------+ +-----+ 6 7 8 9 1) Start indicator, beginning in the second column. 2) Number of the part, decimal (part 5) 3) Number of parts, decimal (10 parts) 4) Name of original file (TEST.TXT), filled with spaces to a length of 12 characters. Even on system that allow longer filenames, an MSDOS-compatible filename is supplied here! This is to insure the exchange- ability of files between different systems. 5) Length of the unencoded file in bytes (decimal). 6) Number of ASCII bytes in this part. Not used any more since 7PLUS v2.0. It's there only to keep compatibility with older versions. 7) Number of lines per file (hex). 8) Name and version of encoder used. 9) XXXX: Test characters to detect stripping of eigth bit. Is also used to indicate that the full filename follows in the next line (since 7PLUS v1.4). Y: Minichecksum for the header (since 7PLUS v1.5). ZZ: Additional checksum for single byte correction. (since 7PLUS v1.60). (Calculation of checksums, see 7PLUS source code) 8 7PLUS-theory ------------------------------------------------------------- Code lines ---------- (Presentation split due to lack of space) AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -> +------------------------------> 1 -> BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBPPPQQ >------------------------------++---+ 2 1) A: First 7PLUS group (32 7PLUS bytes representing 31 bytes of the original data). B: Second 7PLUS group. 2) P: Checksum (14 bit) and line numbering (9 bit). Q: (Since 7PLUS v2.0) Additional checksum for single byte correction (15 bit). A 7PLUS code file may contain up to a maximum of 512 code lines. (Calculation of checksums, see 7PLUS source code) Foot line --------- stop_7+. (TEST.P05/0A) [18398BE4] XXXXYZZ +-------+ +-----------+ +--------+ +---------------+ +-----+ 1 2 3 4 5 1) End indicator beginning in second column. 2) Name of the encoded file and overall number of parts. 3) Date and time (timestamp) of the unencoded file in MSDOS format: 32bit-value, bits 0 -4 -> seconds / 2 bits 5 -10 -> minutes bits 11-15 -> hours bits 16-20 -> days bits 21-24 -> moths bits 25-31 -> years since 1980 4) Reserved. 5) See position 9 in 'Header'. (Calculation of checksums, see 7PLUS source code) 9 7PLUS-theory ------------------------------------------------------------- Single and multipart 7PLUS code files ===================================== 7PLUS uses a 9 bit line number for the numbering of the code lines. This allows for a maximun of 2^9 (=512) lines per code file. Since a code line represents 62 bytes of the original data, the maximum size of a file that can be encoded into a single 7PLUS code file is 512 * 62 = 31744 bytes. Bigger files are automatically encoded into several 7PLUS code files because of this restriction. However, 7PLUS already starts splitting at a size of 8557 bytes, so that the 7PLUS code file have a size of abt 10K. By using the appropriate split options, 7PLUS can still be ordered to produce bigger files, if required. 2000 Note: ----- The reason for the restriction of the size of code file to abt 10k lies in the not very smart method used in the store & forward traffic between BBSs. An example: A message of 40,000 bytes is to be transfered from BBS A to BBS B. If the transfer is interrupted by a link failure (happens quite frequently), the entire transfer has to be repeated from the top, until the link holds through the entire transfer. As long as the authors of bulletin board systems don't improve the store & forward method to allow resuming an interrupted transfer without starting allover, it is best to keep the size of files low. Single part code files are issued a filename consisting of the prefix of the filename of the original file and the extension '.7PL'. Example: 'FUNKTION.EXE' or 'FUNKTION.PAS' becomes 'FUNKTION.7PL'. Multipart code files are issued a different extension than single part code files. The extension '.PXX' marks all code files that belong together. 'XX' stands for a hexadecimal number in the range of 01 to FF (1 to 255 dec). Example: 'XMIT.EXE' may be encoded into 'XMIT.P01', 'XMIT.P02', 'XMIT.P03' etc. 7PLUS can produce up to 255 parts. Thus, 255 * 31,744 = 8,094,720 bytes can be encoded with 7PLUS. For Ham purposes, this is more than sufficient. 10 7PLUS-theory ------------------------------------------------------------- Splitting ========= 7PLUS can split files in different manners. It can be ordered to - split into a specified number of files, where the size of the produced files depends on - the specified number of files and - the size of the original file, or - split into files of a specified size, where the number of files produced depends on - the specified size of the parts and - the size of the original file. How 7PLUS splits can be greatly influenced by the user. See discription of the split options in 'Usage/Ecoding'. The metafile ============ A new feature of 7PLUS are the so-called metafiles. They eliminate a number of processing steps when correcting files. With older versions of 7PLUS, the user had to keep the unsuc- cessfully decoded files until he received a correction file. When the correction file was received, the code files had to be corrected and then decoded. Were there a good number of single byte errors, this could take a considerable amount of time and if the correction was not successful, the procedure had to be repeated. In principal, the code files were decoded three times: once when trying to decode, when correcting and again when finally decoding. This wasn't very effective, as anyone can imagine. Now, 7PLUS will produce a metafile, when first decoding. The metafile contains all successfully decoded lines (in their already decoded form) and where lines are missing or damaged, the metafile is filled in with NUL bytes. At this point, the 7PLUS code files may be erased, because they are not needed for correcting. After decoding, the metafile has the same length as the original file, only where lines are missing, it has gaps where the missing lines can be inserted, when a correction file is available. 11 7PLUS file formats ------------------------------------------------------------- Some important index information is then appended to the end of the metafile (basically the same information as in the error report), so 7PLUS can look up, where there still are gaps in the metafile. When a correction file is available, the gaps are simply filled in. The metafile does not even have to be moved for this process, because this is done by direct positioning of the write pointer. The previously inserted NUL bytes are simply overwritten. Since the metafile does not have to be moved, the process of correcting is now extremely fast. You may get the feeling, nothing has happened! If all gaps in the metafile are filled in, it is renamed to the name of the original file, truncated to its correct length (to rid it of the additional info 7PLUS put at the end of it; that is also done without moving the file) and its original timestamp is restored. Metafiles have filenames that consist of the prefix of the original file's name plus the extension '.7MF'. Metafiles must be kept, because without them, correcting errors is not possible! Note: On operating systems that do not support the manipulation of filesizes, the index info is not appended to the metafile but written into an extra file with the extension '.7IX'. At least under MS_DOS, DR_DOS, OS/2 and TOS (Atari), manipula- tion of filesizes is possible, so no extra index file is produced. The error report ================ When 7PLUS code files have been damaged in transfer, 7PLUS does not actually recognize the specific errors, but - it recognizes which lines are missing or damaged and threrefore have to be transfered again, - 'memorizes' the uncorrupted and decoded lines in the metafile and - produces an error report, where all necessary information is contained to allow the uploader of the damaged files the compilation of a correction file. Exception: If only one byte per line is falsified, superfluous or missing, 7PLUS will correct the error on the spot (so-called 'single byte correction'). 12 7PLUS file formats ------------------------------------------------------------- Example of an error report: go_text. TEST.ERR 7PLUS error report: TEST.TXT 113 /Test.TXT/ 34028 01 005 006 007 03D FFF 02 10C 10D 10E FFF [18398BE4] 00 CRC A17D stop_text. The error report from OM B is practically the request for a correction file from OM A to thus resend the damaged lines, so they can be added to OM B's metafile. The lines ' go_text.' and ' stop_text.' mark the beginning and end of the error report. These markings allow 7PLUS to find and extract the error report from a capture file. Note: The markings ' go_text.' and 2000 ' stop_text.' are also used by my program FFR (Mailbox File Fractionizer) to mark regular text for automatic extraction. Only when the extension of the filename stated in the ' go_text.' line is either '.ERR' or '.COR', it is an error report or a correction file! (Axel) The header '7PLUS error report...' contains information 7PLUS needs to compile a correction file: - Name of the original file, - number of lines per file (splitsize), - the full filename (only AMIGA/UNIX since v1.4) and - the length of the original file (since 7PLUS v1.5). The two-digit hex values define the part (01 - FF) in wich the following lines were corrupted. An unsplit 7PLUS file is handled as 'part 1' here. One or more lines containing 3-digit hex values follow (the first line in a code file is regarded as line 000 and the 512th as 1FF). A line number of 'FFF' concludes the list of damaged lines for that part. This can be repeated for all parts having missing or damaged lines. Since 7PLUS v2.0 the error report is conluded by the original file's timestamp enclosed in braces '[]'. The old conclusion 13 7PLUS file formats ------------------------------------------------------------- '00' is still there for reasons of compatibility to older versions. After this, the checksum for the error report follows (since 7PLUS v1.5) to enable 7PLUS to check the validity of the error report before using it. The correction file =================== Upon reception of the error report from OM B, OM A (hope- fully) compiles a correction file with it. The correction file contains all the lines that were requested by the error report. OM A then either sends the correction file to OM B or posts it as a bulletin, when he has been receiving the same error reports from more than one OM. In case the error reports differ, OM A can have 7PLUS join them ('-J' option) to one error report and then produce a collective correction file with it. When using a correction file, 7PLUS will only replace lines that aren't already decoded successfully. Because of this, OM B2 can use the correction file that was intended for OM B as well and without risk. The correction will then be success- ful, if all the lines that are demaged with OM B2 are successfully replaced. Example of a correction file: go_text. TEST.COR 7PLUS correction: TEST.TXT 34028 113 [18398BE4] P01: L005: sdWKLRjwEK...(line 5 of part 1) L006: "rt4rWER7Z...(line 6 of part 1) L007: eeERG35ERG...(line 7 of part 1) L03D: $%&H$%6TZJ...(line 61 of part 1) P02: L10C: AdD$%SFFDr...(line 268 of part 2) L10D: sFG$sFw4rf...(line 269 of part 2) L10E: 56fZTddfDg...(line 270 of part 2) P00: CRC A9B6 stop_text. ' go_text.', ' stop_text.' and checksum: see 'The error report'. 14 7PLUS file formats ------------------------------------------------------------- The header '7PLUS correction...' contains the following information: - name of the original file, - length of the original file (decimal) (since 7PLUS v1.5), and additionally since 7PLUS v2.0: - the blocksize in lines (hex) the original file was split into and - the timestamp of the original file. A line with an entry of the form ' PXX:' defines, for which of the encoded files the following lines are meant. The code lines are preceded by ' LXXX:' wich states the line number in the file. 'XX' and 'XXX' stand for two- and three-digit hex values. The structure of the error reports and correction files is intentionally held very simple. 'Saving' damaged error reports and correction files =================================================== When an error report or correction file has been damaged and it has a checksum, 7PLUS will break execution and warn the user about the missing or incorrect checksum. This does not necessarily mean, the file is unusable. Since the structure of these files is help very simple, it should not be very difficult to erase the faulty parts. Since the checksum (CRC XXXX) is incorrect, it must also be erased or else 7PLUS will still refuse to use it. In addition the '-F' option must be issued, when using files manipulated in this manner. This way it is still possible to at least use the good parts of an error report or correction file, making the next try (requesting new correction file etc.) less voluminous. If the correction file was downloaded by our fictional OM B2, he may be lucky if the correction file contained more lines than he needed to do the correction. Then all his damaged lines may now be replaced (if the right lines were in the correction file, of course). 15 Compatibility ------------------------------------------------------------- Compatibility of 7PLUS versions =============================== 7PLUS will decode all files produced with older versions of 7PLUS. Files produced with 7PLUS v1.0 e.g. will still decode without any difficulty with 7PLUS v2.10. Since version 1.60 the single byte correction feature was added. For this the code lines were fitted with an additional checksum. Because of this change, versions of 7PLUS before v1.4 will not decode the files from version 1.60 and above any more! There is however the possibility of manually erasing the additional checksums from every line (the last two characters) and to then decode with a version prior to v1.4. Since the greater part of users has a newer version, this incompatibility is actually not a problem any more. Not many other encoders (if any) are as highly an up- AND down- ward compatible as 7PLUS is. Error reports and correction files are also up- and downward compatible. Since 7PLUS v1.5 the error reports and correction files are fitted with a global checksum. It is only checked for validity if the files actually contains a checksum. If 7PLUS does not find a checksum however, it will warn the user: 'no CRC. File may be corrupted or from version earlier than 7PLUS v1.5'. This only means, that 7PLUS could not figure 2000 out, if the file is ok or not. You should take a look at such files and read the chapter ''Saving' damaged ...'. 16 Filename conventions ------------------------------------------------------------- Filename conventions ==================== Filenames handled by 7PLUS, must comply with the rules concerning filename generation under MS_DOS, no matter what system 7PLUS is implemented on. They are always made up of - a name (8 characters max.) and - an extension (3 characters max.) seperated by a period. Filenames in 7PLUS-files are always in uppercase! Example for a filename according to above rules: TERMINAL.EXE On disk, lower case is used for the filenames, if the file- system allows this. This is very important on systems that do not ignore the case in filenames (UNIX). To enable transfer of full filenames on systems with name structures different than MS_DOS, the full filenames are transfered separately (see 'The header'). At the same time, an MS_DOS compatible filename is created to insure exchange- ability. E.g., the full filename 'Hyper_Term_Plus' would be changed into 'HYPER_TE'. When encoding a file without splitting it, the encoded file is assigned '.7PL' as the extention. (TERMINAL.7PL) Split files are assigned '.PXX' as the extension, where XX is a hexadecimal number in the range 01 through FF. Error reports usually have '.ERR' and correction files '.COR' for an extension. This is very important, because 7PLUS gets its information on what to do from the extension! - '.ERR' tells the 7PLUS of the uploader to compile a correction file, - '.COR' tells the 7PLUS of the downloader to do the correction It is allowed to change names of error reports and correction files. However, the extensions MUST comply with above rules! If you recieved a lot of error reports, there is another way of naming these files. The first error report must have '.ERR' for an extension and the following ones must have '.EXX', where XX is a two-digit hex value. Example: You received three error reports that all relate to the same upload (TEST.7PL). When extracting through the '-X' option, the first report will be called TEST.ERR, the second TEST.E01 and the third TEST.E02. The three reports can then easily be 17 Filename conventions ------------------------------------------------------------- joined into a combined report using the '-J' option for instance. Analogous to the naming of error reports, correction files may also be numbered. If you receive several correction files that have the same name (and relate to the same upload), 7PLUS will name the first correction file 'TEST.COR', the next 'TEST.C01' etc.. 7PLUS-files should always be stored with filenames corresponding to these rules. This is even more important in regard to split files and correcting, because 7PLUS may otherwise not be able to find the files belonging together! Usage ===== The following examples apply to an MSDOS system. If using 7PLUS on an Atari_ST, you don't need to enter '7plus' again in the requester after you double clicked 7PLUS, but only the parameters shown in the examples. On an Amiga, the CLI must first be started. The syntax is then the same as in the examples, except for differences in the structure of filename and paths. Encoding -------- 7plus test.txt 7PLUS will encode the file TEST.TXT and (if necessary) automatically split it into files of about 10K in size. 7plus test.txt -s 7PLUS will encode TEST.TXT and split it into files of maximum size (up to 512 lines per file). 7plus test.txt -s 30 Encode and split TEST.TXT into files of 30 lines each. 7plus test.txt -sp 3 Encode and split TEST.TXT into 3 files of about equal size. 7plus test.txt -sb 5000 Encode and split TEST.TXT into files of about 5000 bytes length. 18 Usage ------------------------------------------------------------- Extracting ----------- (Extracting = copy 7PLUS files from a capture file) One can use an editor to extract 7PLUS files from a capture file, but 7PLUS can do this much quicker, safer and more convenient. The 7PLUS extractor looks for files in the capture file that - begin with the markings ' go_7+.', ' go_info.' or ' go_text.', and - end with the line containing ' stop_7+.', ' stop_info.' or ' stop_text.'. The full command to extract 7PLUS files from a capture file is: 7plus -x [] Examples: 7plus spsave.c10 -x 999.err 7PLUS extracts (and numbers) all error reports from the capture file 'spsave.c10' if their name contains '999.err'. This could be 'TERM999.ERR' or 'MEGA1999.ERR' etc. 7plus a:term.log -x If no searchtext is issued, ALL 7PLUS files contained in a capture file are extracted. In this case, the files are extracted from 'a:term.log'. 7plus 91-05-15 -x ### When a fictional searchtext is issued (e.g. ###), no files are extracted, but a list is generated, showing what files are contained in the capture file. You get a sort of directory of the contents. When extracting, no matter if the line delimitors in the capture file are CR/LF, CR or LF, the extracted files will have line delimitors in compliance with the system used: CR/LF on IBM and Atari_ST and LF on Amiga and UNIX. If the capture file was created by capturing the data in binary mode, the line delimitors in the file will only be CRs, wich will make editing impossible. 7PLUS however is not only able to correctly extract, but also the correct naming of the files is insured. Along with the 7PLUS code files, error reports, correction files and info files are also extracted. Info files have to be marked manually before uploading them to a BBS by inserting ' go_info. FILENAME.EXT' as the first line and ' stop_info.' as the last line. FILENAME.EXT is the filename, the info file will be given, when extracted. 2000 19 Usage ------------------------------------------------------------- At this point, I would like to bring your attention to the existance of another program of mine, that will also do the job of extracting 7PLUS files and more: FFR (Mailbox File Fractionizer). The FFR will also extract bulletins, personal mail and the files of most other encoders (RADIX95, CODEX, 7BIT etc.). The FFR can be freely configured to work with many bulletin board system. Currently it knows the formats of TheBox, F6FBB, W0RLI, MSYS and many more.. It's almost as popular as 7PLUS around Germany.. (Axel) Decoding ------ 7plus test.7pl 7PLUS decodes TEST.7PL. If there are no errors in TEST.7PL, 7PLUS will produce a copy of the original file using the MSDOS compatible filename (unless decoding on an Amiga or UNIX system. Then the full filename is used, if available). In case of errors, 7PLUS will produce an error report (TEST.ERR). If 7PLUS finds a correction file 'TEST.COR' in the same directory, it will use it automatically. If additional correction files exist (TEST.C01, TEST.C02 etc.) they are also used. See also 'The metafile'. 7plus test.p01 7PLUS will decode all parts (*.p01, *.p02 etc.). See previous example. 7plus test Automatic mode: 7PLUS will - either DECODE 'TEST.7PL' or 'TEST.PXX' - or ENCODE the file named 'TEST' (without extension). In case the decoding was not successfull, 7PLUS will locate and use correction files and 7PLUS files that could be used to correct the errors. Compiling a correction file --------------------------- 7plus test.err c:\pr\ 7PLUS will compile the correction file 'TEST.COR'. It will look for the original file 'TEST.TXT' in the directory 'C:\PR\'. If no searchpath is issued, 7PLUS will look for 'TEST.TXT in the current directory. It is not necessary for the uploader of 'TEST.TXT' to keep the encoded files (TEST.7PL or TEST.PXX), because they are not needed to compile a correction file. The only thing, he MUST keep is the original unencoded file 'TEST.TXT'! 20 Usage ------------------------------------------------------------- Without it, no correction files can be compiled. Also he should remember how he split 'TEST.TXT' to be able to supply entire parts, if they have been lost alltogether. 7PLUS automatically splits very large correction files into chunks of about 10k. The size, where 7PLUS begins to split can be influenced with the '-SB' option. See 'Encoding' A special situation can arise, when a 7PLUS file was created on a system with non-MSDOS filename structures. Example: An OM, who has an AMIGA, encodes 'Hyper_Term_Plus'. 7PLUS creates an MSDOS compatible filename from the full filename: 'HYPER_TE' (the full filename is also transfered in the 7PLUS files, but is not used on MSDOS or Atari_ST systems). The 'AMIGA-OM' uploads the file(s) and an 'MSDOS-OM' down- loads it/them and decodes with a version of 7PLUS older than v1.4. In case of errors, the 'MSDOS-OM' sends his error report to the 'AMIGA-OM'. He tries to compile the correction file, but his 7PLUS looks for 'HYPER_TE' instead of 'Hyper_Term_Plus'! In this case, the full name including the path must be specified: E.g.: 7plus hyper_te.err df0:utils/Hyper_Term_Plus This problem will not arise, if the 'MSDOS-OM' used 7PLUS v1.4 (or higher), because 7PLUS will add the full filename to the error report. Correcting ---------- 7plus test.cor 7PLUS will use the correction file 'TEST.COR' to fill the gaps in the metafile 'TEST.7MF'. If not all gaps could be filled, 7PLUS creates a new error report. This is the case if the correction file does not cover all gaps or not the right ones. Send the new error report to the uploader and request a new correction file. If 7PLUS finds additional correction files (TEST.C01, TEST.C02 etc.) in the same directory as 'TEST.COR' it will automatically use them. 7plus test.p03 -c 7PLUS also allows the usage of a regular 7PLUS file as a correction file. It will take the lines it needs out of 'TEST.P03' and fill the gaps in the metafile. If gaps remain, 7PLUS will create a new error report, just as stated in the previous example. 21 Usage ------------------------------------------------------------- 7plus test.7mf -c 7PLUS will located the required 7PLUS files (TEST.PXX) and uses them to correct the metafile. Compared to the previous example, 7PLUS will locate all the required 7PLUS files and use them to do the correction. 7plus test Automatic mode: The automatic mode can also be used here. 7PLUS will locate the files it requires and use them (be it correction files or 7PLUS files that can be used to do the correction). If the correction file was produced using a 7PLUS version prior to v1.5, 7PLUS will break execution, because it can't find any checksum. 7PLUS can be forced to use such a file by issuing the '-F' option. You should however take a look at the file, before doing so! See also ''Saving' damaged...' Tip for insiders: If 'TEST.7PL/PXX' was uploaded to a general board and correc- tion files for it turn up from time to time, one could well wait until a fitting correction file turns up. You could as well try to obtain a good copy of the damaged parts from a distant mailbox and use them for the correction. You may use as many correction files as you wish. Since all successfully decoded lines are stored in the metafile, you may be lucky to eventually fill all remaining gaps. Joining error reports --------------------- Joining of error report is usefull, when an uploader has received more than one error report. He can use the joined error report to produce a collective correction file which contains all lines that were reported damaged. If all error reports are the same, joining is not necessary, of course. 7plus test.err test2.err -j 2000 7PLUS will join the error reports 'TEST.ERR' and 'TEST2.ERR'. 7plus test.err -j 7PLUS will automatically join all error reports that were created through extraction with the '-X' option. 7PLUS looks for 'TEST.E01', 'TEST.E02' etc. 22 Usage ------------------------------------------------------------- Recreating an error report from a metafile ------------------------------------------ In case an error report is lost or if you want to send one again (because the first one wasn't answered), it can be recreated from the metafile. 7plus test.7mf 7PLUS reads the index information from the end of the metafile and uses it to create 'TEST.ERR'. NOTE: On some systems, 'TEST.7IX' must be specified instead of 'TEST.7MF'. The reason for this is explained in the chapter: 'The metafile'. Quick help ---------- 7PLUS -H (or simply 7PLUS) A short usage info is displayed. Output will pause after 25 lines and can be continued by pressing return. On some systems, the number of lines output depends on the number of lines displayable on the screen. Additional options ------------------ -J When encoding, 7PLUS will write all produced 7PLUS parts into a single file. Such a collective file can be identified by its extension 'UPL' (upload). Together with the '-TB'-option, it is possible to produce a ready-to- send file that can be uploaded to the BBS in a single action. -K With this option, 7PLUS will automatically clean up behind itself and erase all files, that aren't needed any more. Exception: When compiling correction files, error reports will not be erased, because they may still be needed for producing collective correction files. -N (only ATARI_ST version) Usually 7PLUS prompts for a key stroke after termination. The '-N' option will switch off this prompt. This is useful when 7PLUS is invoked by another program (shell). -P Encoded files, error repors and correction files will be written with CR as line delimitor. This is necessary with those terminal programs, where 7PLUS-files must be sent in binary mode, because they can't handle 8 bit characters in textmode. This is even more important on the AMIGA or under UNIX , because the standard line separator there is LF! Uploading a file in binary mode, that has LF as a line delimitor, would create an unusable 23 Usage ------------------------------------------------------------- file on the receiving side, because LFs are always stripped in Packet Radio. The standard line separator in Packet Radio is CR! The result would be a file that contains one extremely long line! -R In case only one part of a multipart upload needs to be re-encoded (e.g. because it never reached it's destina- tion), it is not necessary to encode the entire original file. 7PLUS is able to re-encode only one specified part. Examplel: 7plus test.txt -sp 10 -r 5 In this example, 7PLUS only encodes part 5, but not the parts 1-4 and 6-10. It is VERY IMPORTANT to re-encode in EXACTLY the SAME WAY as with the original upload. Be sure to use the same splitting options! -SYSOP This option allows the decoding even if not all parts have been recieved. The places in the meta file corresponding to the missing parts will be left blank and the lines are marked as missing for a later correction. This option should only be used when unavoidable (the missing parts don't turn up in the BBS even after a week). -T This option can be used to append a file termination string to 7PLUS files, error reports and correction files to automatically signal the end of the file when uploading. Example: 7plus test.txt -t /ex Note: If the terminating string begins with a minus sign '-', the entire string must be put into double quotes ("-EX") because 7PLUS would otherwise try to interpret it as an option. -TB format.def When encoding, the head and foot texts contained in 'FORMAT.DEF' are automatically added to the 7PLUS files. Example for 'FORMAT.DEF': @@top sb ibm @ ww %O %p/%q 7+ @@bottom Send ERR-files to DG1BBQ @DB0CL.#HB.DEU.EU! 73s, Axel. /ex 24 Usage ------------------------------------------------------------- The variables have the following meaning: %n -> Name of the encoded file. %N -> dito, in capital letters. %o -> Name of unencoded original file. %O -> dito, in capital letters. %p -> Number of the part. %P -> dito, in hexadecimals. %q -> Overall number of parts. %Q -> dito, in hexadecimals. %% -> The percent sign '%'. Above example format file would create 7PLUS files looking like this: sb ibm @ ww TERM999.EXE 01/04 7+ ... This is where the 7PLUS file is ... Send ERR-files to DG1BBQ @DB0CL.DEU.EU! 73s, Axel. /ex The '-TB' option only works when encoding, but not when creating correction files or error reports. Up to 256 characters may be specified with '@@top' and '@@bottom'. If you add the '-J'-option the produced files are output into a single file. A word of warning: Files created with these options should not be used with TheBox systems. There is a bug in the command parser of TheBox wich causes problems, when uploading 7PLUS files in one go (send command and 7PLUS file together in one file). If you get the error message 'invalid command', you know the bug has struk again. The bug always mani- fests when the first frame sent to the BBS contains semicolons! You should erase the file in the bbs then and upload it again by issueing the send command manually step by step. This bug in the command parser is present in ALL versions of TheBox, ev 2000 en in the test releases of the new TheBox v1.9. If it will be eliminated in the official release of the v1.9, remains to be seen (DieBox v1.9a Feb 23 finally works correctly! It took long enough (Axel)). The '-TB' option will work fine with any other bulletin board system! 25 Usage ------------------------------------------------------------- -Y 7PLUS assumes 'YES' on all queries. This option is useful, when 7PLUS is invoked from another program (shell, server). -# When using 7PLUS with a file server, the problem is to let the server know, how many files were produced when encoding. The server could pre-calculate, how many parts would be created, but 7PLUS can produce a small info file called 7PLUS.FLS containing the information on how many files were created and how the names of the encoded files are. The content of 7PLUS.FLS could e.g. be '10 TEST'. Tips for configuring devices and programs for 7PLUS =================================================== General conditions ------------------ To be able to process 7PLUS files, it is important, that the TNC and the terminal program are configured correctly. With TNC2 (using TAPR firmware), KAM, PK232, PK88, MFJ ect. the following commands must be set to not interfere with 8 bit characters: 8BITCONV ON, AWLEN 8 and LCOK ON - or equivalent commands accordingly - The serial link between the computer and the terminal should be set to 8 bits, 1 stopbit, no parity (8n1). It is advisable to set the streamswitch character to $01 (CTRL-A) - on a KAM, the second streamswitch should be set to $02 (CTRL-A) - because 7PLUS uses practically all displayable characters for itself. With streamswitch set to $7C (|) e.g., - you may experience unwanted stream changes when uploading 7PLUS files! - the terminal program may detect wrong streamswitches when downloading 7PLUS files and thus induce unexpected actions. With the streamswitch set to $01, it is not necessary to use the transparent mode to upload 7PLUS files! All commercial TNCs and multimode controllers are able to handle 8 bit characters in non-transparent mode! Character translation tables of terminal programs must be set to 1:1 translation (no translation). Some programs have options to strip or permanently set the MSB (most significant 26 Configuring devices and programs ------------------------------------------------------------- bit). These options must be set, so the MSB is not stripped and not changed in any way! Terminal emulations (VT100, ANSI etc.) should not pose any problems with 7PLUS files, because the control sequences used in those emulation usually begin with an escape charater (the 7PLUS code does not use the escape character!). Should there be problems with the emulation inspite of that, try switching to a simple TTY-emulation. If you are still having problems with 7PLUS files, the problem lies with the terminal program. In that case, you should read the chapter 'Downloading/uploading in binary mode'. If that doesn't solve the problems, try to get in contact with the author of the terminal program. In his own interest, he will see to it to bring his program up to date (this probably won't work with commercial products). Generally, terminal programs made for telefone use shouldn't be used for Packet Radio. There are a lot of very sophisticated programs especially made for Packet Radio use. Most of them are free or quite inexpensive. Sometimes the vendors of TNCs supply such programs along with the TNC. Since the first appearance of 7PLUS, updates have become available for all Packet Radio programs which are now '7plus safe'. Inspite all critics, this didn't take long at all :-) (Axel) Downloading/uploading in binary mode ==================================== With some older Packet Radio terminal programs there may be problems with correct downloading or uploading of 7PLUS files. In such cases, the binary mode of those programs must be used. Don't get this mixed up with modem protocols like YAPP, X-, Y, Z-moden etc. Binary mode just describes a mode, where receiving and sending of data can be done without interpretation of the data content and without the use of a special protocol. Downloading ----------- When downloading data in binary mode everything received is stored EXACTLY as it is. Since the line delimitor used in Packet Radio is the carriage return (CR), the downloaded files will only contain CRs as line delimitors. When using the usual capture features of the terminal programs, the conversion of the CR into (CR/LF or LF, 27 Configuring devices and programs ------------------------------------------------------------- dedending on what computer is used) is automatically done by the terminal program. Since the file produced in binary mode has not undergone the conversion, you won't be able to use a regular editor to cut the 7PLUS files out. To be able to extract the files anyway, use the '-X' option of 7PLUS. See 'Usage/Extracing'. Another way is to use a conversion program for line delimitors (e.g. CRLF. Available on request). The files that were converted can then be edited with a regular text editor. Downloading in binary mode has a useful side-effect: National (umlauts) and graphical characters can be downloaded even if the terminal program would normally strip them. Uploading --------- When uploading 7PLUS files, the '-P' option MUST be used. 7PLUS will then use CRs as line delimitors. Error reports don't need to be uploaded in binary mode, so the '-P' option is not necessary there. 7PLUS on the AMIGA ------------------ Most terminal programs available for the AMIGA are not able to handle 8 bit characters, unfortunately (there are some commendable exceptions, however). In case of difficulties, use the binary mode of those terminal programs. See 'Downloading/uploading in binary mode' Tips for down- and uploading of 7PLUS files =========================================== A lot of things can go wrong when down- or uploading 7PLUS 2000 files. To avoid unnecessary trouble, here a some useful hints. Downloading ----------- Before downloading huge files from the BBS, you must make sure your terminal program and tnc are correctly configured. For this purpose you find ASC.TXT in the distribution archive 28 Tips for down- and uploading of 7PLUS files ------------------------------------------------------------- of 7PLUS. Upload it to the BBS addressed to yourself and download it again. If it doesn't look EXACTLY like the original any more, check your configuration and read the chapter 'Tips for configuring...'. If the test went ok, then you're set to download 7PLUS-files. The simplest way to download 7PLUS-files is to open a capturefile and continuously write the received files into it. Note that you should not call the capturefile the same as the 7PLUS-files you download! Use a name like 'savefile' for instance. When you have finished downloading the files (did you think of looking for correction files that may already be in the BBS?), you must extract them from the capturefile. For this, an editor can be used or - much more convenient - 7PLUS itself! 7PLUS will not only find and extract the files from the capturefile, but also create the correct filenames for them. Invoking 7PLUS like this: '7plus savefile -x' will do the job of extracting the files from the capturefile. Now, the files are in the format that 7PLUS needs and you can begin decoding. Let's see, what we have on disk now: (This is only an example) TERM999.INF TERM999.P01 TERM999.P02 TERM999.P03 TERM999.P04 TERM999.COR TERM999.C01 Ah, fine... You thought of downloading the correction files that was already in the BBS. The file 'TERM999.INF' was automatically extracted by 7PLUS, because the author had uploaded it with the markings ' go_info. TERM999.INF' and ' stop_info.'. That way, you get the info file along with the 7PLUS files. Practical... Decoding (including correction) is very simple to do now: '7plus term999' 29 Tips for down- and uploading of 7PLUS files ------------------------------------------------------------- In case a file called 'TERM999' (without an extension) already exists in the current directory, 7PLUS will try to encode 'TERM999' rather then decode 'TERM999.P01'! This is why i pointed out, that you should use a name for the capturefile, that has no relation to the name of the 7PLUS- files. If you run into this problem, call 7PLUS this way: '7plus term999.p01' If decoding went ok, 7PLUS will tell you: 'Decoding succesful! 'term999.exe' 43210 Bytes.' TERM999.EXE is the decoded file. What you have to do from now, depends entirely on the hints from its originator. As the author of 7PLUS, i don't have anything to do with it anymore from this point on. Let's suppose decoding did not go allright. 7PLUS says: 'Decoding not successful.' This just means, that you should take 'term999.err' and send it to the originator of 'term999.exe' and wait for the correction file to return from him. The meta file 'TERM999.7MF' must be kept at all cost! Without it, you won't be able to do the correction when you receive the correction file. The 7PLUS files 'TERM999.P01' etc are not needed any more and can be deleted. In the past, it happened that OMs sent me error reports for programs I have never uploaded and requested the according correction files from me! Let me say this again in full clarity: The one who uploaded the files, that were corrupted in Store & Forward, is the one you have to send the error reports to!!! I, as the author of the encoder used, have nothing to do with it. Comparison: A forwarding agency delivers goods that were damaged on the transport. No-one in his right mind would have the idea to hold the builder of the truck used for the transport (Me) liable, when the truck (7PLUS) is ok, but the roads (the network) are not.... Automatic 'BBS milking' ------------------------ Some terminal programs have features that allow to automati- cally log into a BBS and download bulletins of interest. 30 Tips for down- and uploading of 7PLUS files ------------------------------------------------------------- When using such features, this is EXTREMELY IMPORTANT: It happens quite frequently that files downloaded are incomplete because a link failure occured. You should in any case check, if all files really are complete. When decoding such incomplete files, much to big error reports are produced! You should take a look into the BBS, if the files really are damaged that much. If you send such a mammoth error report to the uploader, well knowing, most errors are due to link failures, you are stressing his good will. If this happens frequently, he could cease sending correction files at all! 'Listening in' on someone else ------------------------------ Some terminal programs have features that allow capturing everything another station is downloading from a BBS (without the AX25 headers). This is a practical way to keep the load on the BBS/digipeater down. 7PLUS files that were captured that way, ussually contain more errors than are really present in the BBS. This is due to the fact, that not every frame sent to the other station you were 'listening' to, was captured. However, doubled frames are no problem for 7PLUS. You don't need to edit them out. When decoding such a file, you should be aware that it is a VERY NASTY thing to do to send the error report to the original uploader! Firstly, this causes him unnecessary work and secondly in case he uses the error reports to create a collective correction file, it will contain a lot of lines that are not corrupted anywhere! Better is, to either - send the error report to the station you were listening in to, and explain why you are doing so. He will most probably be happy to help out. If he was able to decode the files successfully, he can compile a correction file right away. If not, you'll have to wait until he got his own correction file, or - listen in on o 2000 ther OMs, who are downloading the files you need and use the files to correct the metafile. If errors remain, continue as described above. See 'Correction' 31 Tips for down- and uploading of 7PLUS files ------------------------------------------------------------- Uploading --------- As in the previous chapter, make sure your terminal and tnc are configured correctly to handle 7PLUS-files. If you don't take all precautions, the files may not be decodable. So, avoid frustrating the other users an think before acting. You should write a small info in which you explain, - what program is contained in the files you upload, - what system the program is for, - what hardware is required, - what compressor (ARJ, LHARC, LHA, PKZIP) was used, - what files are in the archive and last but not least - what encoder was used for the upload (7PLUS in this case). This way one can see right away, if the program is any use for him. The title of this info should be brief but yet state all needed info, e.g.: 'TERM999.EXE Info' When uploading to a general purpose board (ALL, SOFTWA etc.), you should also state the system the program runs on: 'TERM999.EXE Info (IBM)' The info text should be marked, so 7PLUS can extract it along with the 7PLUS files: go_info. TERM999.INF This is where the info is put..... stop_info. The filename with ' go_info. ...' should be spelled in capital letters and comply with the rules for MSDOS/ Atari_TOS! See 'Filename conventions'. OK, now you can do the encoding. Bear in mind that some BBSs restrict the size of bulletins. Ask your SYSOP about this. Take this into regard when splitting the file up ('-s','-sp' or '-sb' option). By using the '-SB' option, you can directly specify the size of the encoded 7PLUS files or correction files. Invoking 7PLUS like this: '7plus term999.exe -sb 4000' 32 Tips for down- and uploading of 7PLUS files ------------------------------------------------------------- tells it to produce files of roughly 4000 bytes each. When not specifying a split option, 7PLUS will produce files of about 10000 bytes in length. After encoding is done, you should have the files TERM999.P01 through TERM999.P?? (lets suppose, 12 files were produced) on disk. The files can now be uploaded seperately. Here also, you should choose an informative title: 'TERM999.P01 / 0C 7+ Means: TERM952 is encoded with 7PLUS and it's the first file of 12 (0C hex) parts. Even better, but maybe somewhat cryptic to newcomers: 'TERM999.EXE.SFX.P01/0C.7+' The best way to read this, is from the rear: 1) It's a 7PLUS-file, 2) of a 12 part upload, 3) the first part, 4) and the resulting program is a self extracting archive called TERM999.EXE. After uploading all the files, you should check them by down- loading them right away. They could have become corrupted on the way from your terminal to the BBS! In case they really were corrupted, generate a correction file and upload it. It is not really necessary to upload the entire file that was corrupted. And now: wait for error reports... See also 'Additional options / -TB, -J' Uploading correction files -------------------------- It has proven to be a good idea to upload correction files twice (in one file). It is very unprobable that both copies of the correction file get corrupted. In case it does happen, the recipient still has the option to use an editor to put togheter one good file from the two corrupted ones. 33 General notes ------------------------------------------------------------- General notes ============= When downloading 7PLUS files from a BBS, always look for correction files the uploader may have already posted. There is a good chance that the correction file covers the errors. This saves the uploader unecessary work. If you have uploaded 7PLUS files, answering error reports is a question of good manners and Ham Spirit! Files no-one can get a correction file to, are just garbage, clogging up the BBSs. Of course, there is always the chance, that all files came through undamaged. Unfortunately, that isn't very often the case. Is there a future without errors? ================================= Should there be one fine day where the Packet Radio network does not produce any more errors, that must not really mean the end of 7PLUS. It should be considered, that - some BBSs have a throughput of several billion characters, - a message passes maybe several 100 memory cells and harddisks during its travel from A to B, - some computers don't use memory parity checking, so memory defects may go undetected for some time, - the AX25 protocol only has a limited amount of safety against bit errors, - an affordable network still has a lot of unprotocolled links (TNC<-->computer, TNC<-->TNC in some nodes) and last, but not least - a simple impulse can cause the alteration of a character! 7PLUS can insure that a file is reconstituted exactly as it was, even if it passed through a lot of BBS. 7PLUS is available for a wide range of systems by now, so it represents a safe and practical way of transfering binary data between different systems. And it's more compact than the old-style encoders like UUE or RADIX95... 34 General notes ------------------------------------------------------------- Ordering 7PLUS ============== 7PLUS can be ordered on disk. Send a 3½ inch disk plus SASE and maybe a small contribution to my address (see cover of this manual). When ordering from outside of germany: SASE must not be heavier than 50 gramms and not thicke than 50 millimeters. Europe: enclose 3 US-Dollars return postage. Outside Europe: enclose 5 US-Dollars. Only the versions for MSDOS and OS/2 are availble from me. Other systems: ask around in the mailboxes. 28d The C source code for 7PLUS can be ordered the same way. Since there have been some cases of playing around with and incorrect use of the code, it is only available on request and explanation of intended use. Sorry. Important: I can only handle disks in IBM-format (3.5 inch, 720K/ 1.44MEG). 73s, Axel in Bremerhaven, DG1BBQ @DB0CL.#HB.DEU.EU 35 . 0