IMD 1.16: 31/05/2007 20:03:26 FOGCPM.114 --FOGCPM114UNARC COM%UNARC DOC UNARC DOCt !"#$%&-01-19 88 '-CPM114 DOC"CDEFUNARC MSG2()*+,-.UNARCA COM-/01234UNARCOVLASMo56789:;<=>?@ABUNARC16SARKGHIJKLMNOPQRSTUVUNARC16SARKWXYZ[\]^_`abcdefUNARC16SARKghijklmnopqrstuvUNARC16SARKwxyz{|}~UNARC16SARKUNCR COM2CRUNCH COM.USAGE24 DOC1NOTES24 DOCFCRUN-OVLASM9PATCH24 DOC<This is the disk name. ult in a correct tax rather than requiring you to manually look up the tax in printed tables. And Calif. IN 1987 changed its method of preparing returns, requiring everyone to start with completed Federal forms, then adjusting those figures with some new Calif. forms (which are included). Since I read an advertisement in th Lo Angele pape fo $11 ta progra tha woul d you taxes on a personal computer, you should be quite pleased to get this one which does it for... free... free... free. Idon't sell any listings, but if you like these templates, show your appreciation by helping out your users group, wherever it is, in some way.) December, 1987 Ed Smith mbers on the screen. The command /GB turns the border on or off every time it is entered. Why not leave it off while entÍCOMCMEXEOBJOV?REL?RLINTSYSBADLBRARCARK?Q??Z?UNARC 1.6 27 Mar 87 CP/M Archive File Extractor Usage: [d:]arcfile[.typ] [d:][afn] [N|P|C] Examples: B>A:SAVE.ARK *.* ; List all files in CP/M archive SAVE on drive A B>A:SAVE.ARC *.* ; List all files in MS-DOS archive SAVE on drive A A>SAVE ; Same as either of above A>SAVE *.* N ; Same as above (no screen pauses) A>SAVE *.DOC ; List just .DOC files A>SAVE READ.ME ; Typeout the file READ.ME A>SAVE READ.ME N ; Typeout the file READ.ME (no screen pauses) A>SAVE A: ; Extract all files to drive A A>SAVE B:*.DOC ; Extract .DOC files to drive B A>SAVE C:READ.ME ; Extract file READ.ME to drive C A>SAVE PRN.DAT P ; Print the file PRN.DAT (no formatting) A>SAVE *.* C ; Check validity of all files in archive Copyright (C) 1986, 1987 by Robert A. Freed s71!nͫ!E(  F(!Lk WL !ͭ!*| (i=" ̀:1  = 0!_6q|  د222   8:!2Z>ͳ ͳ ͂ !^+~ #~N(P 2C 2: 2 2> !l bk6? !e 6A#6R#6K2!](hO (! w=2!\:`͘ !<(6!g6C2| :s :  ###~<2s=(:!!H(!!z:!qLf* ~ <ɯ\>͍><< ( c!~5 #+w7*,"~͝\U`#|x {jaj8!w<,zw\$*}8"}!!|4  ! !! (!8 >$. x8> w~#?(#:G!s= Gw2:O: (\' >2,=`_A2$ ѻ_!|Y}90yOq%w$, ɱL!(?((#=2! >?:G:  ;`o& ~Y!%wO#:Zw $:s(80w: G!F-N 9(6͕͝(nͶ ͢(_͂ {Y͕͕`2: 0M ( 8  0 :<ȷ*R,Ŀ !!ͭx0Ŀ ͈!6` ^͇ O(zW ٯo? 87&0$$~$F /  !uT]!t 6d0 O!& >U(=85!Q 6( 6l_> 8 `/>2 !"' ! > (! ! " "} S 2)x2 ͇ C* ůp < ڃ ͦ  #~ ~ `iͦ ~8 rW+~s_##~+p #~ %( $~rW+~s_# **d#"*ͦ +s#r#w}- |%*( ( )4T])!'5#~#F!?(M<82(|=!)N6 +w+~(GwG!,͊ !"*!X 7lgxG ob ,L}Z8 90)))))lo& T])))))))))))|gͦ ~G) ^#Vz eˤͦ ~(#r+s_!)8+~g2(gjjjj*$.ckCgggGwG >y (Oo|&$fo:&*$oR(DM*!B"!0*#+"#0 :(3bk 6#} ( S S !͕͝=`:: C<!=8 Y  x (8 0͂ ͢!4(:  s(`^͢# x *|#" !͵!!͵!F L8d: ͵F3!F[@L[1 d[+6& !_=(L (Y ͂ Ͷ > Y > Y !5>w7Ͷ ͢(>Ͷ <2͂ Y Ͷ ͂ = > Y  ͂ ( (>=Y  x>.((w#*!:#?lg:=_/_T*"@6k#!p: 8 ( ( 8 ( HLͭ`i)jJ)j)j)jJ)j)jͭx( >e=RB0F6%#:F6 #*)))| 8O!I 6 #?P0q*|a( 8p > )))_6:#?w#[*"/Sro6z'`w#   ^#V#~#f_W_ 7͉0w#0| ٱ(w#z(͑ |8e.)8,^#V#N#Fw# q#a{Z80 required!$aborted!CP/M version 2 or higher requiredNot enough memoryAmbiguous archive file nameCannot find archive fileInvalid archive file formatWarning: Bad archive file header, bytes skipped = 00000No matching file(s) in archiveInvalid archive file driveInvalid output driveArchive File = FILENAME.ARCOutput Drive = A:Checking archive...Cannot extract file (need newer version of UNARC?)Replace existing output file (y/n)? Disk fullDirectory fullCannot close output fileIncompatible crunched file formatTypeout line limit exceededWarning: Extracted file has incorrect CRClength[more] ???JanFebMarAprMayJunJulAugSepOctNovDecUnpacked Packed SqueezedCrunchedSquashedUnknown!Name======== =Length Disk =Method= Ver =Stored Saved ===Date== =Time= CRC= ==== ======= ==== ======= === ==== Total 3 or 4 is onlys.),U ;&" Rates 5 qual.widor ;p40 ;Y36 ; "|; " |<("allowed if your tax is from Sch. D or Form 8615. Please check..),U>" * Error check: * ----->----->----->----->----->>IF(D16>2,999999,G15)--->---File: UNARC.DOC Subject: User Documentation for UNARC Program Version: 1.6 Date: March 27, 1987 ------------------------------------------------------------------------------ UNARC CP/M Archive File Extraction Utility Copyright (C) 1986, 1987 by Robert A. Freed All Rights Reserved This file provides user-level documentation and operating instructions for UNARC version 1.6, released March 27, 1987. Refer to the notice at the end of this file regarding rights of use and distribution of this program. The release message file, UNARC.MSG, provides a list of all additional files distributed with the current UNARC release and describes the program changes from the previous version 1.4 and 1.5 releases. ABSTRACT -------- UNARC is a utility program for CP/M systems which allows the listing, typeout, printing, checking, and extraction of subfiles contained in "archive" library (*.ARC or *.ARK) files. These are commonly used for compressed file storage on remote access bulletin board systems. UNARC provides the CP/M user the ability to process such files after downloading them via modem from these remote systems. REQUIREMENTS ------------ UNARC requires CP/M version 2 or higher. The program is offered in two versions. The standard version, UNARC.COM, requires a Z80 processor (or compatible equivalent, e.g. HD64180 or NSC800). An alternate version, UNARCA.COM, is provided for systems with 8080 or 8085 processors (or 16-bit systems using the NEC V20 for CP/M emulation). Identical capabilities are provided by the two program versions. NOTE Although UNARCA.COM can execute on ANY system capable of supporting CP/M, it is larger and significantly slower than UNARC.COM and should be avoided by users of Z80-based systems. UNARC is written in Z80 assembly language and requires only 5K bytes of disk storage (6K for UNARCA). As distributed, the program requires at least 30K bytes of available memory space (TPA) for full support of all archive file formats (31K TPA size for UNARCA). (Smaller systems may be able to use some of the program's capabilities.) ABOUT ARC/ARK FILES ------------------- The files which UNARC processes utilize a format that was introduced by the ARC shareware utility program, which executes on 16-bit computers running the MS-DOS (or PC-DOS) operating system. This format has achieved widespread popularity since the ARC program first appeared in March 1985, and it has become the de facto standard for file storage on remote access systems catering to 16-bit computer users. More recently this file format has achieved increased popularity on RCP/M (Remote CP/M) systems. NOTE Most RCP/M system operators have adopted the convention of naming CP/M archive files with the filetype ARK. This differentiates these from MS-DOS archive files, which use the filetype ARC. This is a naming convention only: There is no difference in format, and UNARC will accept files of either type interchangeably. An archive is a group of files collected together into a single file in such a way that the individual files may be recovered intact. In this respect, archives are similar in function to libraries (*.LBR files), which have been commonplace on CP/M systems since 1982, when the original LU library utility program was introduced by Gary P. Novosielski. (However, the two file formats are not compatible.) The distinguishing characteristic of an ARC archive is that its component files are automatically compressed when they are added to the archive, so that the resulting file occupies a minimum amount of disk space. Of course, file compression techniques have also been commonplace in the CP/M world since 1981, when the public domain SQ and USQ "squeeze and unsqueeze" programs were introduced by Richard Greenlaw. The SQ/USQ programs and their numerous popular descendants utilize a well- known general-purpose form of data compression (Huffman coding). This technique, which is also utilized in ARC files, performs well for many text files but often produces poor compression of binary files (e.g. object program .COM files). The ARC program also provides an advanced data compression method, which it terms "crunching." This method (which is based on the Lempel-Ziv-Welch or "LZW" algorithm) performs better than squeezing in most cases, often achieving 50% or better compression of ASCII text files, 15-40% compression of binary object files, and as much as 95% compression of bit- mapped graphics image files. Five different methods are actually employed for storing files in an archive. The method chosen for a particular file is the one which results in the best compression for that file: (1) No compression ("unpacked"). The file is stored in its original form. (2) Run-length encoding ("packed"). Repeated sequences of 3-255 identical bytes are compressed into a three-byte sequence. (3) Huffman coding ("squeezed"). Each 8-bit byte (after run-length encoding) is encoded by a variable number of bits, with bit length (approximately) inversely proportional to the frequency of occurence of the corresponding byte. (4) LZW compression ("crunched"). Variable-length strings of bytes (in theory, up to nearly 4000 bytes in length) are represented by a single (maximum) 12-bit code (after run-length encoding). (5) LZW compression ("squashed"). This is a variation of crunching which uses (maximum) 13-bit codes (and no run-length encoding). Note that since one of the five methods involves no compression at all, the resulting archive entry will never be larger than the original file. NOTE The most recent release of the MS-DOS ARC program (version 5.20) has eliminated squeezing as a compression technique. However, UNARC continues to process squeezed files for compatibility with archives created by earlier versions of ARC and by other MS-DOS archiving programs (notably PKARC). The squashed compression method was recently introduced by the MS-DOS programs PKARC and PKXARC. UNARC can process files which use this method, although it is not universally accepted by other MS-DOS archive extraction programs (including ARC). During its lifetime, the ARC program has undergone numerous revisions which have employed different variations on some of the above methods, particularly LZW compression. In order to retain compatibility with archives created by earlier program revisions, ARC stores a "version" indicator with each file in an archive. Based on this indicator, the latest release of the ARC program can always extract files created by older releases (although it will only use the latest data compression versions when adding new files to an archive). NOTE The current release of UNARC supports archive file versions generated by all releases of the following MS-DOS programs through (at least) the indicated program versions: ARC 5.20 (24 Oct 86), by System Enhancement Associates, Inc. ARCA 1.22 (13 Sep 86), by Wayne Chin and Vernon Buerg ARCH 5.38 (26 Jun 86), by Les Satenstein PKARC 2.0 (15 Dec 86), by Phil Katz (PKWARE, Inc.) (UNARC does not recognize, but is unaffected by, the non-standard archive and file commenting feature of PKARC.) Although the above discussion has emphasized the origin of archive files for the MS-DOS operating system, their use has recently spread to many other systems. Programs compatible with MS-DOS ARC have appeared for UNIX, Atari 68000, VAX/VMS, and TOPS-20 systems. A CP/M utility for building archive files will also be available in the near future. For additional information about archive files and the MS-DOS ARC utility, refer to the documentation file, ARC.DOC, which is available from most remote access systems which utilize archive files. For additional information about the LZW algorithm (and data compression methods in general), refer to the article "A Technique for High-Performance Data Compression", by Terry A. Welch, in IEEE Computer magazine, Vol. 17, No. 6, June 1984. USING UNARC ----------- The UNARC program provides an on-line help message, which is generated by running the program with an empty command line: A>UNARC UNARC 1.6 27 Mar 87 CP/M Archive File Extractor Usage: UNARC [d:]arcfile[.typ] [d:][afn] [N|P|C] Examples: B>UNARC A:SAVE.ARK *.* ; List all files in CP/M archive SAVE on drive A B>UNARC A:SAVE.ARC *.* ; List all files in MS-DOS archive SAVE on drive A A>UNARC SAVE ; Same as either of above A>UNARC SAVE *.* N ; Same as above (no screen pauses) A>UNARC SAVE *.DOC ; List just .DOC files A>UNARC SAVE READ.ME ; Typeout the file READ.ME A>UNARC SAVE READ.ME N ; Typeout the file READ.ME (no screen pauses) A>UNARC SAVE A: ; Extract all files to drive A A>UNARC SAVE B:*.DOC ; Extract .DOC files to drive B A>UNARC SAVE C:READ.ME ; Extract file READ.ME to drive C A>UNARC SAVE PRN.DAT P ; Print the file PRN.DAT (no formatting) A>UNARC SAVE *.* C ; Check validity of all files in archive As shown by this help display, the UNARC utility provides the following capabilities: (1) Listing the directory of an archive (2) Extracting component files from an archive (3) Typing the contents of a component file at the console (4) Printing a component file directly on the CP/M list device (5) Checking the validity of an archive and its component files The particular operation to be performed is determined by the form of the file parameter(s) in the command line, as described separately in the sections which follow. The following characteristics apply to all operations: The first command line parameter must specify the name of an archive file. A drive name and filetype are optional. The filetype, if omitted, defaults to "ARK" or, if no such file exists, the alternate (MS-DOS) default "ARC" is assumed. The standard CP/M terminal control characters, CTRL-S (to suspend console output) and CTRL-C (to abort the program), may be used at any time. CTRL-K may also be used as an alternate for CTRL-C. Printer output to the CP/M list device may be obtained by typing CTRL-P at CCP command level before executing UNARC. In addition, by default UNARC will pause after every 23 lines of console output. At this time, the message "[more]" will appear at the bottom of the console screen. The listing may be resumed by typing any key (other than CTRL-S, CTRL-C, or CTRL-K, which will function as described above). If the space bar is used, one more line of console output will be displayed (over- writing the "[more]" message) and the program will again pause. If any other key is typed (e.g. RETURN), another 23 lines of output will be allowed to scroll onto the screen before the next pause. (LINE FEED may be used to prevent overprinting of the "[more]" line, e.g. for hard-copy terminals.) If continuous display is desired, this automatic pause feature may be disabled by specifying "N" at the end of the command line. The "N" must be the last command line character, and it must be preceded by a space. Also, there must be two preceding file parameters on the command line. E.g., note the difference between the following commands: A>UNARC SAVE N ; Typeout the file N. in archive SAVE A>UNARC SAVE *.* N ; List all files in archive SAVE with no pauses The N option may not be used in conjunction with the P (Print) or C (Check) options. LISTING AN ARCHIVE DIRECTORY ---------------------------- By default, UNARC produces a detailed console listing of the component files in an archive. (In fact, there is no way to suppress this listing; it is generated during all UNARC operations.) If only the archive file name appears on the command line, UNARC will generate a complete directory of all component files in the specified archive file. Otherwise, the second command line parameter may be used to select a particular file to be listed (or group of files, if it contains the ambiguous file specification characters "*" or "?"). If no disk drive name is provided for the second parameter, and this parameter specifies a group of files, the directory listing is the only output generated by the program. A sample directory listing is illustrated here: A>UNARC CODES Archive File = CODES.ARK Name Length Disk Method Ver Stored Saved Date Time CRC ============ ======= ==== ======== === ======= ===== ========= ====== ==== ABLE .DOC 24320 24k Crunched 8 11777 52% 30 Apr 86 10:50a 42C0 BRAVO .COM 17152 17k Squeezed 4 14750 14% 2 May 86 4:11p 8CBD CHARLIE .TXT 234 1k Packed 3 99 58% 2 May 86 4:11p 8927 ==== ======= ==== ======= === ==== Total 3 41706 42k 26626 36% 58A4 This listing is equivalent to the "verbose" listing of the MS-DOS ARC program (with the addition of the "Disk" and "Ver" fields, which are unique to UNARC). The listing requires a 78-column terminal width; there is currently no "short" listing format. "Name" is the file name which will be generated if the file is extracted by UNARC on a CP/M system. (This is not necessarily the same as the name recorded in the archive file. Although CP/M and MS-DOS file naming conventions are identical, two conversions are made to guarantee file name validity under CP/M: Lower-case letters are converted to upper-case, and non-printing characters are converted to dollar signs, "$".) Archive entries are usually maintained (and hence listed) in alphabetic name order. "Length" is the uncompressed file length, i.e. the number of bytes the file will occupy if extracted to disk, exclusive of any additional length imposed by the CP/M file system. Note that MS-DOS permits files of arbitrary lengths (unlike CP/M which restricts all files to a multiple of 128 bytes). "Disk" is the actual amount of disk space required to extract the file to a CP/M disk, expressed as a multiple of 1K (1024) bytes. Note that this number is dependent on the disk data allocation block size. (CP/M permits various block sizes, ranging from 1K to 16K bytes. Typical sizes are 1K for single- density floppy disks, 2K for double-density floppies, and 4K for hard disks, although these values are quite system-dependent.) In the absence of an explicit output drive name, UNARC uses the block size of the default (currently "logged") disk drive (i.e. the drive which appears in the CCP prompt). "Method" is the compression method used, specified as "Unpacked", "Packed", "Squeezed", "Crunched", "Squashed", or "Unknown!". If the method "Unknown!" appears, it most likely indicates (if not a faulty archive file) a newer release of the MS-DOS ARC program that supports a new compression method (or a new variation of an existing method). In this case, a corresponding new release of UNARC will be required to extract the file. "Ver" further identifies the version of compression used. Currently, UNARC supports versions 1-9: unpacked files can have versions 1 or 2; packed files, version 3; squeezed files, version 4; crunched files, versions 5-8; and squashed files, version 9. The highest version number associated with each compression method is the one generated by the most recent release of the MS-DOS ARC program. "Stored" is the compressed file length, i.e. the number of bytes occupied by the file in the archive. (This does not include the overhead associated with the directory information itself, which adds an additional 29 bytes to the size of each component file.) "Saved" is the percentage of the original file length which was saved by compression; i.e., higher values indicate better compression. (The MS-DOS ARC documentation refers to this as the "stowage factor.") The value shown on the totals line applies to the archive as a whole, not including the directory overhead. "Date" and "Time" refer to the last file modification, as of the time it was added to the archive. (Date and time stamping is, of course, one of the nice features of MS-DOS which is lacking in standard CP/M 2.2.) "CRC" is an internal 16-bit cyclic redundancy check value which is computed when a file is added to an archive (expressed in hexadecimal). As a test of file validity, UNARC re-computes this value when it extracts a file (see below). Note that this value is calculated by a different method than that used by either of the two popular public domain programs, CRCK and CHEK. (It is however quite valid as a reliable error-detection mechanism.) This value is shown in the listing for completeness only. The value shown on the totals line is the 16-bit sum of all displayed CRC values. This is useful as a single "checksum" value for comparing entire archives. (Since the CRC values are computed before compression takes place, the total should be the same for all archives created from the same set of input files, independent of any particular variations in file order or compression methods.) The "Total" line is displayed only if multiple files appear in the listing, and it includes a count of the number of files listed. EXTRACTING FILES FROM AN ARCHIVE -------------------------------- If the second command line parameter contains a disk drive name, UNARC will extract the selected file(s) from the archive to CP/M file(s) on the indicated disk drive. If only a drive name appears, all component files of the archive will be extracted. The following illustrates a sample archive directory listing as generated during a file extraction operation: A>UNARC CODES B: Archive File = CODES.ARK Output Drive = B: Name Length Disk Method Ver Stored Saved Date Time CRC ============ ======= ==== ======== === ======= ===== ========= ====== ==== ABLE .DOC 24320 24k Crunched 8 11777 52% 30 Apr 86 10:50a 42C0 Replace existing output file (y/n)? Y BRAVO .COM 17152 18k Squeezed 4 14740 14% 2 May 86 4:11p 8CBD Warning: Extracted file has incorrect CRC Warning: Extracted file has incorrect length Warning: Bad archive file header, bytes skipped = 10 CHARLIE .TXT 234 2k Packed 3 99 58% 2 May 86 4:11p 8927 ==== ======= ==== ======= === ==== Total 3 41706 44k 26616 36% 58A4 The above listing also illustrates several warning messages which may occur when extracting files from an archive. The message "Replace existing output file (y/n)?" appears if a file of the same name already exists on the output drive. The user must answer "Y" (or "y") to allow the extraction to proceed (in which case, the existing file is unceremoniously deleted). Any other response will cause UNARC to preserve the existing file, bypass the extraction operation for the current file, and (except for a CTRL-C response) skip to the next file to be extracted (if any). The first two warning messages illustrated above are provided as a check on the validity of the extracted file. These indicate that either the cyclic redundancy check (CRC) value computed by UNARC, or the resulting extracted file length, does not match the corresponding value recorded in the archive when the original file was added to it. The final warning message occurs if UNARC fails to detect the proper format for the start of a new subfile, but can recover by skipping a certain number of bytes in the archive file. (If the recovery attempt fails, UNARC aborts with the message "Invalid archive file format.") The appearance of any of these messages most likely indicates that the file data has been corrupted in some way (e.g. during modem transmission from a remote system). Note that if the original (i.e. MS-DOS) file length was not an exact multiple of 128 bytes (as required by CP/M), UNARC will pad the final record of the extracted file with hex "1A" (ASCII CTRL-Z) bytes. This provides the correct end-of-file termination for text files, according to CP/M conventions. Also, the disk space shown in the archive directory listing will be correct for the specified disk drive. (In the above examples, drive A: has a 1K data allocation block size while drive B: has a 2K block size, which accounts for the differences in the two listings.) In order to determine the exact disk space requirements in advance of a file extraction operation, the user may first "log into" the desired output drive (i.e. select it as the default drive), and run UNARC to obtain a directory listing only. (This is a consideration only on systems with mixed disk drive types.) A file extraction operation may be aborted at any time by entering CTRL-C from the console. In this case, any partial output file will remain on disk and should be deleted manually following the program abort. (Any existing file of the same name will have already been deleted, however.) TYPING OUT A FILE IN AN ARCHIVE ------------------------------- A console typeout of the contents of a single component file in an archive may be requested by specifying a non-ambiguous file name (and no disk drive name) in the second command line parameter. For example: A>UNARC CODES ABLE.DOC Archive File = CODES.ARK Name Length Disk Method Ver Stored Saved Date Time CRC ============ ======= ==== ======== === ======= ===== ========= ====== ==== ABLE .DOC 24320 24k Crunched 8 11777 52% 30 Apr 86 10:50a 42C0 ------------------------------------------------------------------------------- This is file ABLE.DOC, contained within the archi ve CODES.ARK. Typeout will proceed until the end of this file or may be aborted by CTRL-C..... The specified file is assumed to contain valid ASCII text data. In particular, all bytes are masked to seven bits, and all ASCII control characters are ignored except for HT (horizontal tab, which is expanded to blanks with assumed tab stops at every eighth column), LF, VT or FF (line feed, vertical tab or form feed, which generate a new typeout line), and SUB (CTRL-Z, which by CP/M convention indicates end-of-file and terminates the typeout). Note that BS (backspace) and CR (carriage return) are ignored, so that text will not be obscured within files which utilize these for over- printing (i.e. when directed to a printer). The following filetypes, which are usually associated with binary (non-text) data, are specifically excluded from typeout operations: COM, EXE, OBJ, OV?, REL, ?RL, INT, SYS, BAD, LBR, ARC, ARK, ?Q?, and ?Z?. If one of these types is specified, only the directory information for the requested file is listed. Note that CRC and file length checking are not performed during a typeout operation, as they are during extraction to a disk file. PRINTING A FILE IN AN ARCHIVE ----------------------------- A single component file in an archive may be output directly to the printer (CP/M list device) by specifying a trailing "P" on the command line. The "P" must be the last command line character, and it must be separated from the second file parameter by a space. (The file parameter must specify a non- ambiguous file name and no disk drive name.) For example: A>UNARC CODES CHARLIE.TXT P The specified file is assumed to contain data suitable for printer output and is passed directly to the printer without alteration or additional formatting. This operation is particularly well-suited for output of binary graphics images on dot-matrix printers, since these can be extemely large but tend to compress quite well (e.g. to less than 5% of their original size). Note that the binary data filetypes which are excluded from typeout operations are also excluded from printing operations. Printing may be paused or aborted by use of the console CTRL-S and CTRL-C characters. CHECKING FILES IN AN ARCHIVE ---------------------------- UNARC may be directed to extract one or more component files from an archive, without actually storing these as disk files, by specifying a trailing "C" on the command line. This operation performs file CRC and length checking, and it is useful for verifying correct modem data transmission of an archive. The "C" must be the last command line character, and it must be separated from the second file parameter by a space. (The file parameter must not specify a disk drive name, which indicates extraction to disk.) To check an entire archive, specify "*.*" for the second file parameter, for example: A>UNARC CODES *.* C PROGRAM OPTIONS --------------- UNARC provides several options which may be used to tailor the program for specific non-universal requirements. Many of these are intended for RCP/M (Remote CP/M) system operators, to allow generation of a secure version of UNARC which can be used by remote callers for purposes of archive directory listing and/or file typeout only (but not file extraction). Others are provided for specialized non-standard CP/M systems and need not concern the majority of users running CP/M 2.2, CP/M 3.0 (CP/M Plus), or ZCPR3/ZRDOS systems. Additional options provide user preference features (such as the number of screen lines between console output pauses, or the list of filetypes excluded from typeout operations). All of these options are described in UNARCOVL.ASM, an assembly language source file that can be edited and assembled to generate a HEX-format overlay for easy patching of the UNARC.COM or UNARCA.COM program files. Complete details are provided for technically-oriented users in UNARCOVL.ASM. However, the default options in the distributed program files are suitable for the majority of users with standard CP/M operating systems. PROGRAM DISTRIBUTION -------------------- The UNARC program, its documentation, and all related files are distributed in archive file format (of course!). The distribution file is named UNARCxx.ARK, where "xx" is derived from the current version number (e.g. UNARC16.ARK for version 1.6). (This does not include the program source code, which is distributed separately.) This archive has the special characteristic that it is "self-unpacking." I.e., a separate copy of the UNARC.COM program file is NOT required to extract the component files from this archive. The procedure for extracting the distribution files is quite simple: First, copy or rename UNARCxx.ARK to a program file, UNARCxx.COM, on the current disk drive. (Note that the filename, UNARCxx, must NOT be changed.) Then, run this program with a single optional command line parameter specifying the disk drive to which all distribution files  will be extracted (defaults to current drive). For example, assuming UNARC16.ARK is on drive B: and the files are to be extracted to drive C:, the following CP/M commands may be used: A>B: ; Set current drive for UNARC16.ARK B>REN UNARC16.COM=UNARC16.ARK ; Rename it to UNARC16.COM B>UNARC16 C: ; Run it to extract all files to drive C: Note that this self-unpacking capability is provided only by the distributed archive file, and it will not work if that file is altered or reconstructed. AUTHOR'S NOTE ------------- I undertook writing the UNARC program to satisfy my curiosity about software developments in the MS-DOS/PC-DOS world. At the time I began work on UNARC, the MS-DOS ARC program had been in existence for over a year and had achieved widespread popularity and acceptance in the 16-bit community. Unfortunately, the lack of a compatible equivalent for CP/M systems rendered a large amount of public domain software inaccessible to 8-bit users such as myself. (Note that 16-bit software can indeed be of interest to users of 8-bit systems, e.g. Pascal and C language programs.) Also, an increasing number of RCP/M systems now cater to both 8-bit and 16-bit users. Since the release of UNARC 1.0 (May 3, 1986), I have been encouraged to see that the program has found a welcome home on many such systems. Special thanks are due to Irv Hoff and Norman Beeler for providing archive file support in the KMD20 and LUX52 series of programs, respectively. With the increasing popularity of .ARC files on many different computer systems, I believe that continued such support of this compression format is both desirable and inevitable for CP/M systems. At the time of this writing I am about to release NOAH, a companion program to UNARC which will allow CP/M users to generate ARC-compatible files. Bob Freed March 27, 1987  NOTICE The UNARC program and its associated documentation is the copy- righted property of its author -- it is NOT in the public domain. HOWEVER... Free use, distribution, and modification of these files is permitted (and encouraged), subject to the following conditions: (1) Such use or distribution must be for non-profit purposes only. (2) The author's copyright notice may not be altered or removed. (3) Modifications to this program or its documentation files may not be distributed without notification of and approval by the author. (4) The source program code may not be used, in whole or in part, in any other publicly-distributed or derivative work without similar notification and approval. No fee is requested or expected for the use and distribution of this program subject to the above conditions. The author reserves the right to modify these conditions for any future revisions of this program. Questions, comments, suggestions, commercial inquiries, and bug reports or fixes are welcomed by the author: Robert A. Freed 62 Miller Road Newton Centre, MA 02159 Telephone (617) 332-3533 ------------------------------------------------------------------------------  > )))_6:#?w#[*"/Sro6z'`w#   ^#V#~#f_W_ 7͉0w#0| ٱ(w#z(͑ |8e.)8,^#V#N#Fw# q#a{Z80 required!$aborted!CP/M version 2 or higher requiredNot enough memoryAmbiguous archive file nameCannot find archive fileInvalid archive file formatWarning: Bad archive file header, bytes skipped = 00000No matching file(s) in archiveInvalid archive file driveInvalid output driveArchive This is the release date of the disk. CRUN-OVLASM PATCH24 DOC NOTES24 .DOC EF 7B 8960 70 CRUN-OVL.ASM E3 63 7296 57 PATCH24 .DOC 86 9A 7680 60 (L/>CFJSadl{"$&)27MVg ` i(y/*~@ `>(>s>oo>hdriverECY=OS(w -˟(w ˟"?#@]aatapedrvrECA!0u~#fo]w/3hRIF>>Cb={2uq.|# File: UNARC.MSG Subject: Release Message for UNARC Program Version: 1.6 Date: March 27, 1987 ------------------------------------------------------------------------------ Version 1.6 of the CP/M UNARC utility: * Corrects a bug in version 1.5, which caused generation of an 'incorrect CRC' warning message (during extraction of files to disk) in certain cases where such an error condition did not actually exist. Version 1.5 of UNARC included the following changes from the previous version 1.4 release: * Provides self-unpacking archive support (see below). * Corrects a serious bug in the non-Z80 version (UNARCA.COM), which caused failure to output the last 1-255 bytes of an extracted file in certain situations. (In particular, ALL files less than 256 bytes in length could not be extracted from archives.) * Supports the new "squashed" compression method generated by the MS-DOS program PKARC (version 2.0 or later). * Provides a new command line option (P) for direct printing of files on the CP/M list device. * Provides a new command line option (C) for checking the validity of archive files. * Displays a checksum total of CRC values (useful for comparing separate copies of an archive file). * Alters the mechanism used to avoid a problem with the LUX library/archive utility program, to provide independence of UNARC from recent multiple releases of new LUX versions by different authors. (See USELUX definition in UNARCOVL.ASM overlay file.) * Minor enhancements to tab expansion and CTRL-S/CTRL-C processing during file typeout. * Expands on-line help display examples. Complete details of all of the above changes (and past history of prior UNARC releases) are provided in the version 1.5 source program file (UNARC.Z80). * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * UNARC is now distributed exclusively as a "self-unpacking" archive file, UNARC16.ARK. This allows automatic extraction of the distributed files, without requiring access to a separate copy of UNARC.COM or UNARCA.COM. To utilize this capability, simply copy or rename UNARC16.ARK to a program file, UNARC16.COM, on the current disk drive. (The exact file name UNARC16.COM is required.) Then, run this program, with a single optional command line parameter specifying the disk drive to which all distribution files will be extracted (defaults to current disk). For example, assuming UNARC16.ARK is on drive B:, and the files are to be extracted to drive C:, the following CP/M commands may be used: A>B: ; Set current drive for UNARC16.ARK B>REN UNARC16.COM=UNARC16.ARK ; Rename it to UNARC16.COM B>UNARC16 C: ; Run it to extract all files to drive C: Note that this self-unpacking capability is provided only by the distributed archive file, and it will not work if that file is altered or reconstructed. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * The following files are distributed with this release: Filename.Typ Size Recs CRC Description ------------ ---- ---- ---- ----------- 1 UNARC .MSG 7k 50 Release message (this file) 2 UNARC .COM 5k 37 17B5 Program (Z80 version) 3 UNARCA .COM 6k 45 913C Program (8080/8085 version) 4 UNARC .DOC 31k 244 A8B1 User documentation 5 UNARC .FOR 1k 4 23B4 Brief "what's it for?" abstract 6 UNARCOVL.ASM 14k 111 EEC3 Overlay source for program options 7 UNARC16 .DIF 2k 14 8E8C Version 1.6 source code differences 8 UNARC .Z80 122k 969 406F Version 1.5 source code (UNARC15S.ARK) (The CRC values shown above are those displayed by UNARC itself, and these should be used for verification purposes. These are not compatible with the values produced by other CP/M programs, such as CRCK and CHEK.) Items 1-7 are included in the self-unpacking UNARC16.ARK file. Item 5 may be used to supply a requested program description after uploading UNARC16.ARK to a remote system. Item 6 supports all user-configurable program options. Item 8 is distributed in a separate archive file, UNARC15S.ARK, and it is not required for UNARC program operation or configuration. (Due to the relatively insubstantial nature of the version 1.6 update, the new source code file is not being distributed. However, item 7 may be used, in conjunction with the SSED utility (version 2.0, by Chuck Forsberg), to generate an updated source code file from the distributed file for version 1.5.) NOTE 8080/8085 USERS: The file UNARCA.COM is an alternate version of the program which will run on your systems. However, it is larger and substantially slower than the standard (Z80-only) version, UNARC.COM. (UNARCA.COM will run on ALL CP/M systems, but it is specifically NOT recommended for users with Z80's!) RCP/M SYSOPS: The assembly language overlay file UNARCOVL.ASM is provided primarily for your use  in generating a secure version of UNARC for use by remote callers. Note that several of the UNARC 1.6 changes had been distributed to RCP/M Sysops in an earlier Beta-test release (UNARC 1.42). That version was also distributed with several recent releases of the LUX utility program (by different authors), and it should now be replaced by UNARC 1.6. (If you use LUX, be sure to define USELUX = YES in the overlay file.) Due to the self-unpacking feature of UNARC16.ARK, it is no longer necessary to provide separate copies of UNARC.COM and UNARCA.COM for downloading by first-time users. (Even if you prefer the use of .LBR files on your system, you are encouraged to maintain at least this one file, UNARC16.ARK, in its distributed form!) The UNARC.DOC file provides a complete program description and user operating instructions. Refer to the notice in that file regarding rights of use and distribution of this program and its associated documentation files. Copyright (C) 1987 by Robert A. Freed All Rights Reserved ------------------------------------------------------------------------------ c or no entry or zero, enter 0 & go to line 12;2!"| | line 1 2 '\ | 2 " | |3'" otherwise, enter the smaller of line 1c or line 8.o to l3!"| 11|herwise 3N/AIF(J49>=0,NA,IF(H50=0,NA,IF(H17>=0,0,MIN(H17,J44))))ne 12; 3 " |A4&"12 Subtract line 11 from line 10 (see instr)MIN(H174!"| 12|btract 4N/AIF(J49>=0,NA,J49-J52)10 (se 4 " |A5%"13 Subtract line 9 from line 3 (see instr))5!"| 13|btract 5N/AIF(J49>=0,NA,J36-J45) (see 5 " |A6$"14 Enter smaller of line 12 or 13e 6!"| 14|ter sma 6N/AIF(J49>=0,NA,MIN(J53,J54)) 6 " |A7%"15 Multiply line 14 by 65% and enter result7!"| 15|ltiply 7N/AIF(J49>=0,NA,J55*.65) enter 7 " |A8$"16 Enter the amt from line 9öCOMCMEXEOBJOV?REL?RLINTSYSBADLBRARCARK?Q??Z?UNARC 1.6 27 Mar 87 CP/M Archive File Extractor (8080 Version) Usage: [d:]arcfile[.typ] [d:][afn] [N|P|C] Examples: B>A:SAVE.ARK *.* ; List all files in CP/M archive SAVE on drive A B>A:SAVE.ARC *.* ; List all files in MS-DOS archive SAVE on drive A A>SAVE ; Same as either of above A>SAVE *.* N ; Same as above (no screen pauses) A>SAVE *.DOC ; List just .DOC files A>SAVE READ.ME ; Typeout the file READ.ME A>SAVE READ.ME N ; Typeout the file READ.ME (no screen pauses) A>SAVE A: ; Extract all files to drive A A>SAVE B:*.DOC ; Extract .DOC files to drive B A>SAVE C:READ.ME ; Extract file READ.ME to drive C A>SAVE PRN.DAT P ; Print the file PRN.DAT (no formatting) A>SAVE *.* C ; Check validity of all files in archive Copyright (C) 1986, 1987 by Robert A. Freed !9"<q1.!.ͪ3!E88?8͹ 1!~ͺk!*.|.ʛ=:1d8?8= j! U6dE222  Sښ:!2>uͷHͷͅ1!^+~ #~NP2>C2?: 22B> !lO~# D bk6? !e 6A#6R#6K2=!]ʁ ʛ!o w=2@!\:0ڛV!=6!g6C 2`:}: }###~<2C=ʍ:!!Wʾ!!z:!qLá* ~<ɯ\>O><O<  Þ!~~5;#!+w.7F*@,J"@~\Û#|^x^{ja}o|g€,-|^!@w<zÛw\$*}^"}!L!|4p8!~q!P!D" !>$.x> w*~*#"?(#:G!?=IGw2>:O:Oc͂>2OÏ=Kқ_A2|͂ѻi_!|͔}y<=O|*"yO*"q%w$,™ɱ !L?#=2O!D >? :OG:p қo& ~͔!wO#:w_ :I I I w:>› !-NÛ ʛ ʍ ͺw _ͅ{Yʛ2:p ͐ ʺ  ë ͣ ҷ :O<ȷ*}o|g ,-|!ͺx!6Ûy n O( zW   ͐ o<=F g 7&N $$~$F_ /ͣ , g 0  !uT]! 6Ҝ  O!t >U ! ʩ 6 _> ü ڷ -›/>2 !" ! > ! " ! "*" " " 2x2: n `i" ů < ͐ h ; 1 #~͊  ~= `i; ~P rW+~s_#? #~+ #~͊ %x $~rW+~s_#[  + *||#"; +s#r#w}-¾ |%ʻ ʾ ¾ 4T])!5#~#F!<=N |<=g|}<=o| |<=g|}<=o| 2|=!N6 +w+~5 Gw G) !,q !"! x|h 7 lgxGN ob |g|<=g|}<=o|L}}o|g¢ ,-|  y<=O|һ )ª ))))l o& T])))))))))))|g; ~J) ^#Vz  e|g; ~ # r+s_!~<=w|= +~g2g}o|gY ,-|}o|gh ,-|}o|gw ,-|}o|g† ,-|*.ckCjjjJz¼ Gµ > y ± ʺ Oo|&$fo:*o}o|g ,-|DM*}o|g,-|"*+":Wbk )6#}%?AA3!=Û:?:>®1<!=X xc sv vͅ!<4v: vvOÛ^# x¯*.|#".~!6!0!P?U͇:͚S!*.10?*4N 6͇*:V6Âb!_=oL cXrͅͺ> X> X!B5>wͺʠͺ <2BͅXúkͺÂͅ=> Xͅʅ >=X x>.w#*:|<=g||<=g|?lg:C=_/_T*4"416k#!:p} } } } } :?ͺ`i"*)"}o|g¯,-|*"}o|g,-|*)"}o|g,-|*)"}o|g,-|*)"}o|g,-|*"}o|g',-|*)"}o|g?,-|*)"}o|gW,-|ͺ*xʑ>e=}o|gz,-|}o|gŠ,-|m86%#:86 #*)))| ڶO! 6 #<=P0R*|a p > )))͂6:#?w#**:":Sr~'z'`w# U R ^#V#~#f\_W_ 7͏0tw#m|aow#†ozʝ͘£|ڨíe.)ڵ,­^#V#N#Fw# q#a{*"*"*"~# x# x NOTE: The Z80 version is smaller and faster! $aborted!CP/M version 2 or higher requiredNot enough memoryAmbiguous archive file nameCannot find archive fileInvalid archive file formatWarning: Bad archive file header, bytes skipped = 00000No matching file(s) in archiveInvalid archive file driveInvalid output driveArchive File = FILENAME.ARCOutput Drive = A:Checking archive...Cannot extract file (need newer version of UNARC?)Replace existing output file (y/n)? Disk fullDirectory fullCannot close output fileIncompatible crunched file formatTypeout line limit exceededWarning: Extracted file has incorrect CRClength[more] ???JanFebMarAprMayJunJulAugSepOctNovDecUnpacked Packed SqueezedCrunchedSquashedUnknown!Name======== =Length Disk =Method= Ver =Stored Saved ===Date== =Time= CRC= ==== ======= ==== ======= === ==== Total GA2\x<2C@2e!37#!#2<2 >$2~2.L.l.j.ÿ~# x# UNARC16 COM  UNARC16.COM A: N (Self-unpacking file A:UNARC16.COM) $e of .LBR files on your system, you are encouraged to maintain at least this one file, UNARC16.ARK, in its distributed form!) The UNARC.DOC file provides a complete program description and user operating instructions. Refer to the notice in that file regarding rights of use and distribution of this program and its associated documentation files. C; UNARCOVL.ASM ; ; Overlay File for UNARC ; CP/M Archive File Extractor ; Version 1.6 27 Mar 87 ; ; Copyright (C) 1987 by Robert A. Freed ; All Rights Reserved ; ; This file may be used to customize the UNARC utility for specific ; non-universal requirements. It is intended primarily for RCP/M ; system operators or technically-oriented users with specialized ; system requirements. Use only with the UNARC program version ; indicated above. ; ; NOTE: This file is intended for individual, private use only! ; Please DO NOT re-distribute versions of the UNARC.COM (Z80) or ; UNARCA.COM (8080/8085) program files which have been modified by use ; of this overlay (except as noted for the USELUX definition below). ; The distributed program files are suitable for the majority of users ; with standard CP/M 2.2 or CP/M 3.0 (CP/M Plus) operating environments. ; ;======================================================================= ; ; To use, simply follow these three steps: ; ; 1) Edit this UNARCOVL.ASM file for desired options. ; 2) Assemble to create an UNARCOVL.HEX file. ; 3) Merge with the distributed UNARC.COM or UNARCA.COM program files. ; ; The ASM.COM assembler supplied with CP/M 2.2 may be used for assembly. ; DDT.COM or SID.COM may be used for the final step (if you save the ; correct number of memory pages), but the publicly-distributed program ; MLOAD.COM (by Ron Fowler, Nightowl Software, Inc.) is recommended: ; ; A>MLOAD UNARC.COM,UNARCOVL (for the Z80-only version) ; A>MLOAD UNARCA.COM,UNARCOVL (for the 8080/8085 version) ; ;======================================================================= ; NO EQU 0 YES EQU NOT NO ; ; Most UNARC program options are specified by EQUate statements below. ; Each option is followed by a detailed description of its function. ; Most of these options are provided for RCP/M systems, and those most ; commonly changed are marked with an asterisk '*' in the comment field. ; (The other option defaults are suitable for the majority of systems.) ; RCPM EQU NO ;*YES if remote CP/M system ; ; Define RCPM = YES to generate a restricted version of UNARC for secure ; use by callers of an RCP/M remote access system. "Restricted" implies ; that no disk file extraction can be performed. Also, the P (print) ; and C (check archive) command line options are ignored. In addition, ; file typeout may be disallowed (see TYFLG) or limited to a maximum no. ; of lines (see TYLIM), and the default interpretation of certain other ; parameters is modified (see TYPGS and BLKSZ). ; ; The following two definitions apply only if RCPM = YES: ; USEWHL EQU YES ; YES if RCP/M uses a wheel byte WHEEL EQU 003EH ;*Wheel byte address if USEWHL is YES ; ; Most RCP/M systems utilize a "wheel" byte in memory, to restrict ; access to privileged functions by remote callers and to provide ; greater flexibility for the sysop. If such a byte is implemented ; (USEWHL = YES), a single version of UNARC may be utilized both for ; restricted use by remote callers (wheel byte zero) and unrestricted ; local use by the sysop (wheel byte non-zero). Define WHEEL with the ; address of the wheel byte location in external memory. (ZCPR3 users ; should specify the address of their Z3WHL byte, as determined by ; running SHOW.COM). Note that all subsequent references to the ; "restricted" version of UNARC apply only when the wheel byte is zero; ; when the wheel byte is set, operation of UNARC is identical to that ; obtained by defining RCPM = NO. For those few RCP/M systems which do ; not implement a wheel byte (USEWHL = NO), it will be necessary to ; maintain separate versions of UNARC for remote callers (RCPM = YES) ; and local sysop use (RCPM = NO). ; ; The following two definitions apply only in restricted versions: ; TYFLG EQU YES ; NO to disallow RCP/M file typeout TYLIM EQU 0 ;*Non-zero typeout line limit (1-255) ; ; Define TYFLG = NO to disallow file typeout operations on RCP/M ; systems. In this case, UNARC may be used only to obtain directory ; listings of archive files. (In which case, it may be more appropriate ; to rename the program 'ADIR' -- see program name patch at end of this ; file.) If TYFLG = YES (the normal case), TYLIM may be defined as the ; non-zero limit (255 maximum) of the number of file lines which may be ; displayed. This may be desired by some RCP/M sysops to discourage ; excess on-line "browsing" in favor of downloading of long files by ; callers. If TYLIM = 0, unlimited file typeout is permitted as in ; unrestricted versions. ; CCPSV EQU 8 ; No. high memory pages to save (8 = 2K) ; ; UNARC uses all available TPA space for buffering output files, which ; provides better performance in systems with larger memories. However, ; by default the program preserves the (CP/M 2.2) CCP area at the top of ; the TPA, and it returns directly to the CCP instead of forcing a warm ; boot after execution. CCPSV specifies the amount of memory (256-byte ; pages) to reserve for this purpose. The default value (CCPSV = 8) is ; appropriate for the CCP size in standard CP/M 2.2 systems. Setting ; CCPSV = 0 will yield an additional 2K bytes of buffer space, but it ; forces a warm boot return after each program execution. This need be ; used only with very small CP/M 2.2 systems (but may be desirable with ; CP/M 3.0 or any non-standard system with a permanently-resident CCP). ; Certain non-standard CP/M implementations (TRS-80?) may require the ; definition CCPSV = 9. ; TYPGS EQU 0 ; No. buffer pages for typeout (0=max) ; ; This value specifies the number of (256-byte) pages to buffer an ; extracted file during typeout operations. The default definition ; (TYPGS = 0) provides the maximum possible buffering (the entire TPA ; space), but may cause a long delay at the start (and in the middle) ; of typeout of large files. Defining TYPGS = 1 will minimize viewing ; waits, but may cause excessive start/stop of floppy disk drive motors ; on some systems (e.g. 1983 Kaypro models). Since this is not a ; consideration for systems with hard disks, users of such systems may ; prefer TYPGS = 1. For restricted RCP/M versions, TYPGS = 1 is assumed ; if the default (TYPGS = 0) is not changed (to minimize delays for ; remote users). ; ; Note that the TYPGS definition may be overridden by the following: ; USELUX EQU NO ;*YES if UNARC will be used by LUX ; ; Some versions of the LUX library/archive utility program fail to ; properly protect the resident code which LUX relocates to high memory ; before calling UNARC. (This may be due to a problem of interaction ; between LUX and the BYE5 RCP/M monitor program.) This can result in ; a system crash during typeout of an archive member file with the LUX ; TYPE command. Define USELUX = YES to avoid this problem. This forces ; the minimum TPA buffering during file typeout (equivalent to defining ; TYPGS = 1), in both restricted and unrestricted versions. [Note that ; earlier versions of this overlay file solved this problem by altering ; the CCPSV definition. Unfortunately, that method depended upon the ; size of the LUX resident code, which is complicated by the recent ; introduction of different LUX releases by separate authors. This new ; method provides independence from the requirements of any particular ; version of LUX. Versions of UNARC which have been modified by this ; definition may be distributed with LUX, providing notice is given ; explaining that this modification may not be suitable for non-LUX ; environments and encouraging LUX users to upgrade to newer releases of ; UNARC as they become available.] ; BLKSZ EQU 0 ; Default disk allocation block size (K) ; ; This value provides the default disk allocation block size (as a ; multiple of 1K bytes) to use in calculating disk space requirements ; for the "Disk" column of archive directory listings (except during ; file extraction to disk, in which case the output drive's block size ; applies.) The default definition (BLKSZ = 0) indicates that the ; block size of the default (CCP) drive is to be used for this purpose. ; However, for restricted RCP/M versions, BLKSZ = 1 is assumed if the ; default is not changed. (Since 1K is the minimum disk block size in ; any CP/M system, this provides the widest applicability for all remote ; callers, independent of the RCP/M system's actual disk block size.) ; CPM68K EQU NO ; YES if BDOS function 31 unsupported ; ; UNARC uses BDOS function 31 (Get Address of Disk Parameter Block) to ; determine disk allocation block size (i.e. of the output drive when ; extracting files to disk, or of the default CCP drive at other times ; if BLKSZ = 0). However, this function is rarely used by application ; programs and is not supported by some non-standard implementations of ; CP/M (in particular, the 8080 CP/M 2.2 emulator for CP/M-68K). For ; such systems, define CPM68K = YES to inhibit use of BDOS function 31. ; In this case, the BLKSZ value will be assumed (1K, if BLKSZ = 0). ; HIDRV EQU 16 ; Highest input file drive (A=1,B=2,...) ; ; Specifies the highest allowable drive no. for archive files, where ; drive A is 1, drive B is 2, etc. The default definition (HIDRV = 16) ; is the maximum supported by CP/M. Most RCP/M systems need not alter ; this definition, since invalid drive accesses are normally intercepted ; elsewhere. If this is not the case, this value should be set to the ; number of available drives (assuming all sequential drives available, ; starting with drive A). Setting HIDRV = 0 restricts input to the ; default drive (i.e. disallows specification of a drive name for the ; archive file). ; HODRV EQU 16 ; Highest output file drive no. ; ; Specifies the highest allowable output drive no. for file extraction ; operations (specified as for HIDRV above). Setting HODRV = 0 will ; disallow any file extraction to disk (which is the obvious setting of ; importance for RCP/M systems). However, this is assumed in restricted ; versions, so this value need not be modified (except for local sysop ; use) if RCPM = YES. ; TYLPS EQU 23 ; No. typeout lines per screen (1-255) ; ; Specifies the number of lines between automatic pauses in console ; typeout. Should be set to one less than the number of display screen ; lines, to allow for the '[more]' message line. Setting TYLPS = 0 will ; inhibit all pauses (e.g. for hard-copy terminals), although this can ; also be specified by a trailing 'N' on the UNARC command line. ; BELLS EQU YES ; NO to inhibit error message bells ; ; By default (BELLS = YES), the terminal 'bell' (i.e. beeper) is sounded ; in all warning and fatal error messages, to bring operator attention ; to unusual conditions. Define BELLS = NO if you prefer solitude. ; ; (End of user-definable EQUates) ;======================================================================= ; (Start of program patches) ; ; Do not make any changes to this section. Additional user-definable ; options continue below the next double separator line. ; ORG 103H ; DB CCPSV ; 103H DB BLKSZ ; 104H DB HIDRV ; 105H ; IF USEWHL OR NOT RCPM PSWHL: DB HODRV ; 106H Pseudo wheel byte if not RCP/M ENDIF IF RCPM AND NOT USEWHL PSWHL: DB 0 ; 106H Pseudo wheel byte if weird RCP/M ENDIF ; DB TYFLG AND 0FFH ; 107H ; IF NOT USELUX DB TYPGS ; 108H ENDIF IF USELUX DB 1 ; 108H ENDIF ; DB TYLIM ; 109H ; IF RCPM AND USEWHL DW WHEEL ; 10AH ENDIF IF NOT RCPM OR NOT USEWHL DW PSWHL ; 10AH ENDIF ; DB TYLPS ; 10CH ; IF NOT CPM68K DB 0 ; 10DH ENDIF IF CPM68K AND BLKSZ DB BLKSZ ; 10DH ENDIF IF CPM68K AND NOT BLKSZ DB 1 ; 10DH ENDIF ; DB BELLS AND 0FFH ; 10EH ; ;======================================================================= ; (Additional user-definable patches continue here) ; ; The following is a table of filetypes (3-byte ASCII strings) which are ; assumed to contain binary data and are not allowed for file typeout. ; Question marks may be used as wildcards (will match any character). ; The table must terminate with a zero byte (room for 20 entries total). ; DB 'COM' ; CP/M-80 or MS-DOS binary object DB 'CM','D'+80H ; CP/M-86 binary object (or dBASE file) DB 'EXE' ; MS-DOS executable DB 'OBJ' ; Renamed COM DB 'OV?' ; Binary overlay DB 'REL' ; Relocatable object DB '?RL' ; Other relocatables (PRL, CRL, etc.) DB 'INT' ; Intermediate compiler code DB 'SYS' ; System file DB 'BAD' ; Bad disk block DB 'LBR' ; Library DB 'ARC' ; Archive (unlikely in an ARC) DB 'ARK' ; Alternate archive (ditto) DB '?Q?' ; Any SQueezed file (ditto) DB '?Z?' ; Any CRUNCHed (or ZOO'd) file (ditto) ; ; Additional filetypes may be added below. To remove one of the above ; filetypes without replacing it, simply set the msb in any byte (as ; above for .CMD, since that can be a readable dBASE command file). ; DB 0,0,0 DB 0,0,0 DB 0,0,0 DB 0,0,0 DB 0,0,0 DB 0 ; 14BH End of table (do not change) ; ;----------------------------------------------------------------------- ; ; The following 6 bytes specify the program name for self-referential ; use in the help display and abort message. If less than 6 name ; characters are desired, the remaining bytes must be padded with ; blanks. ; DB 'UNARC ' ; 14CH Author's preference, of course ;;; DB 'ADIR ' ; 14CH (But some sysops prefer this) ; ; Note: If you prefer to call this program 'ADIR' (Archive Directory), ; move the ';;;' up one line above. (We won't object too much, since ; we plan to release a program of that name in the near future.) ; ;======================================================================= ; LAST EQU $-1 ; 151H Last patch address ; ; Confirm that the symbol LAST has the value 151H, which is the highest ; program location which may be modified in UNARC.COM or UNARCA.COM! ; END ut Drive = A:Checking archive...Cannot extract file (need newer version of UNARC?)Replace existing output file (y/n)? Disk  Fog Library Disk FOG-CPM.114 Copyright (1988) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. New file compression/extraction programs. Conservation of disk space is of primary interest to all users, especially when archival copies of files and programs are involved. Crunch and Archive are capable of saving as much as 70% (especially for fixed length data files). Unfortunately, the designers of these programs cannot all agree on the compression technique. The result is some incompatibility between similar but different programs or even different versions of the same program. The major difference between CRunch and ARChive is two-fold. ARChive compresses files and collects them under a single filename (usually using the extension .ARK for CP/M files and .ARC for MS-DOS files) while CRunch only compresses individual files (and replaces the middle character of the extension with a "Z"). ARChive, both because it collects files together and because there are many utilities which ease selective extraction is preferred to CRunch. The problem is that we cannot yet easily (and quickly) create ARChive files on CP/M systems -- it must be done on an MS-DOS computer. PLEASE do not use CRunch on files which you will submit to the FOG disk library or the FOG publications. Only upload CRunched files to a remote system if you have gotten approval from the SysOp -- many do not allow CRunched files on their systems. Filename Description -01-19 .88 This is the release date of the disk. -CPM114 .DOC This is the description of the disk contents. UNARC .COM FF9D 5K ver. 1.6 [UnARChive utility 1 of 6] Restores files compacted with the MS-DOS ARChive utilities. Note that, like crunched files, not all versions use the same compression technique and can therefore be incompatible with each other. This version extracts all ARC and ARK files know at the time of the release of this disk. ASseMbler source (SLR or M80) is included in an ARC file. UNARC .DOC A3CE 31K ver. 1.6 [UnARChive utility 2 of 6] UNARC .MSG 895C 7K ver. 1.6 [UnARChive utility 3 of 6] UNARCA .COM FE6F 6K ver. 1.6 [UnARChive utility 4 of 6] UNARCOVL.ASM 8562 14K ver. 1.6 [UnARChive utility 5 of 6] UNARC16S.ARK AA6E 67K ver. 1.6 [UnARChive utility 6 of 6] READ .ME 2K [UNARC16S.ARK 1 of 2] UNARC .Z80 123K [UNARC16S.ARK 2 of 2] UNCR .COM 5D9D 7K ver. 2.4 [UnCRunch/Crunch 1 of 6] Uncompact files which have been compressed with CRUNCH (also on this disk). Files which have been compressed with this type of program have a "Z" as the middle letter of the file extension and are often confused with source code files which have not be compressed. Note that there are several variations of the crunch algorythm and that they are not always compatible with each other. CRUNCH .COM 9650 6K ver. 2.4 [UnCRunch/Crunch 2 of 6] Creates compressed files with a "Z" as the middle letter of the file extension. Companion to UNCR (also on this dREAD.ME#####{ TФ"1 Rİ1%)@yN4nApc8lY8M ysFN6 ̤IɢЂoP(gN b# Aԡ3 <.@80΅}|c' 2d*i&i0d9aSM^i.ӢΜ/yL#j 1(JR8y97oȎY09eQ=&pHsF'ނS H7 x ּ§π1gn87-;ihLi9Z;a,=q1)uYhPerM7SKfDQU)5R0E7 ^5L ΑCD0WhpcL VuVNݕL8E pu}ц 8[oXXQ. W:DZe_lq=\{!&ٴR >AE0VJ.dITUVJqMR,iF"Ts4 ~̽6\nsQp$[lt^qԂ(jbJMub7\:Q)Bnqԑnyk WEXC E pbfIg-[eQ} U SCDMdM81G.u!HQ#ՖGO dSo͚KO*߰nfmOESN8c 8V93ׅG˔D~.T1.?gn\"{gwkqP9ډ/z^f)&nfNqpPd}ƀC>eЫO;Ę@QT@ $SOA-z~Tz 0 XhDVdsy5ظXo  d!Vu`Ⓧ "@1L,n򐒪\E\Y8eg3"GN1 IP7ă`C޶P+Nd͋%HH P(D'Nҍj0|Ic *9.>u PR$UNARC.Z80###{' $¤H*NHҀ!P^4D4ia$ EБf 7r(PH'T4 2D IpB b Ǎ*_iR(iUL'AԁC& I͋gA12 ڄI^7r9)'6o΀N abD&M ^Ru)3n4q0\qsa PHR'PXySAΝ'GN3h`"h6XXwذ7^H₣2e 9Md'O)(s@\ \sEatF B -pRǗ Ql1d_偀WaERPQFQs vvRo0fI ,&8`!rgB ᆃutFz)h7Njjaojoјi $RΡd(PSqXI~9%m兤t^`n˜Ipdm * ä"(9t2:Fzbuqyxx(0iYemւbxynĩNxǚRC$+&a1a(Ƕ(+sQyd0.ϖdzڭxi `¾]ʔ0hk z "vŒj(q4skR /F"ƶ*9 yqQ`@3U4`182pd*n{2o]k6cxj_id.F'Xjiؠ>hH ֹyvfƁBPL BAdqeMGMBI'g>Pl$j`DMАa a:5/ gK@p|(_jŰ}$ SZҖ}5s8H0JKzr9< CB pesw Mv$CŚm$%*ƕ-ja}(IxI1,cx#S$@nu Z 5mE  ,pIKa#˝W iK_l;@9Z&,1EeK ;7!ԥ!i(##y/a uI?Ai'Ib)iY'SsDJv\(42r.cP]ƗuΣAѠMcvd0NL՚D/:!<_P db!.D ]1̎B =: 2dө h9K *pPK[P$!G[[\4dGLkmt# "@akY{镗}B)66EN)i t VjӜGg5Zլ2Ap#CXI- \Y)L ̃r#ZWZM ca1W%d+U+li +L)wRCCs;B^:ڙ>6Ate/ `NVnZA޽J]*\7\c(L2 _l (trtZ p"M`AV?{ Z 0T ', X:V:MP ᵒ_1Ki;)Y>-*irYTF,Jw+sI J'D(5(" $f1jÐJz^|&4I)PhtB-mu6 -C%P֎ӍgRIp ҝhC)1]<58y#"Vg["ve5\1(Uu"mGI" I_B5x }v .lF3- yUKa `^b>=(p Kzȃ` dAw$S:yT{)xo!h‡L|-H2 uoej/Lb󛛶^_XRY{0/<ocfﯗ1hc&W4DE!q7dSs9Hb+ڡ~&oc&Svtck3['2R}ȇ*4={"-Z!5` \RRxE_A=("6}tvtCl>[ )>DBK|p{ V-5!+UwrV\2+vQcSo"u=fZL4x4~R>HCOTH~rAL@T:xƃFjXNaOe1lT-%&.01va'|eK!f@EҒ QHc.!?x3ydGc( J@74PPbvfqm5SU8&_P^raTW5r1`JvuU;%~nIZ)s1'ZNWp$BiwND!-F+74&LPX@#eN Vd!Ssb#U 4s E@VfNb}UM㇀v"Zme=ZaAYG@V<')+6$~ 3-(SoTBv#j"(01Vn 6'i&AOm4X0Ie7vhv1!6% Ki\ȅ!ukfpBe=ima*egoٳ,5lxA@ܧ!i*kI4!JԇH~XNb71rn<1X7!=o).#$~uKWaF8+k,V#_,J3U]&IQ7AT6'#t~Q"2T Ld{vrR-|"ձ"U(O TPSc^w253UxYbEVjIC:EA0^G8㢢}Ma!%#bv5A![/-/#Z$I0V 5lݥ|Ij4=w86Yi@vd '~d*\w 0xz%qsA"PzDW\G\gJep[+v0a1S;J !#">Uo;YÐ-(` TV f$>FAgӔtMdf_1ʒ0Q=x jv&&-9"YKvĮysXq8մ~urkfy'K#g'Z"tI96& ZY{%P"2y0[@i%"* ,z<0V"ED@VLb!YTaIlev^s{^uGFf&b0cgV daGa#4p1Te(ϑ@r^&}I+D.jsA 7Զ }Ac0+ H+hKDQHty $OOW'it*,iGQɇ膚v9Pʛu]ZP StU#%UI)Q0HpF`b5cZp1!SGؑNȫf,T#|zE!.$}A $XeU'`4z1'wϺ;(Ea۷1> tФ!Ie]a @nw%\&*}^NS If*=ג@&"?QSQ$d!rA te4&U;3dG<hI9Zim$p ~4i8ˁPuq7T0 VlbC6!M9kyN%*D90X}!"3Jdxxhwu$Zo5&Mb~fHYK6@K0M~{b<%`2gN+ZG`$nj8#!ug2RUjc_e+Zן͙Z+q,8X1F,2Z%iF167Ju 5<`KI1eWϦ9 rlХd`¤YwU1rY=p*'>^U/$sL7TS\t#`Ib9CuoGȲ[*hX$6uNQa* }M Y&/vZYF+U')?z5Ʃdf idz~9)~r¢xQ@9&I\M8'$,I12(#5cVӑY @!ڏwPm_bXJ X(`^+MdtPb7jZ ̎ 1F$_79[Fċ%'<|~b(vA"2ۗ3M37kO / =\+wPL3u狞) 2eH08FNPQpQ!B>0xNY`m~Uu}3Xob=qRa@_[`J#Ӡ\Q076aU)pCc#D 5">ɂk$Q1 ө^ G6nH-6)[I D)צ,Ib:xo$cz!V {rPf_3!1w sp`H_ƄQ<Ɣ+x a6XT99p2 i4.bОI1 }*qtE8Gkv 6@"v[ Z_#N #궅6M PC$(@eLQ$&aY-u> L6k/EY*i" s#Ӆ1%m_@k#.@11hD'MAJi1j,8l=x_,Ŷ$ZK|b݉tqt)tWә8sz(1r$f 3l4HPV:Hvu-_:jvEP0u"Y&j[ҡ&w3Tcm@%l+kZcbńRLSPX̮E5&vK9HP߆ӽEbcOid^x"gb"vbͷeו)v]'mt >FBd.Wv9'Ys+qeAȆPPӴ"cqsrCjSc;bq `S8 %!4XA 4Xu1չK&$N&oÉ."25l[ eP*cU_[ĩW*e'"INydlp7Z}a4aEܙ2 z7w),摮o+Zt 6y -S{,Gfh#ffv,'blbM; ޸Ap^k3\k"$lWY@t<}A Ҹ]8ʮ:k(s!OhP0Kr}s2 * mFZfǛ'E F)}še.0*:MuM-8)5⥘yd)n"]v E#( QmQh2 7#C pm]Q%I7wI58l2b`2 ʪfW(8 Cj=sUb)scP=[nWQ. 6FX+ rm]QBG`rɁtun!Y)Kc &|0,cI_%}&F|ϝ:Aٻ%'iZf wm6خ A*]uxdI v#bVM@2NV"Ӯ%a> fsrCla GYDB@KEG2kqK_ -O`2kB*6`qfeEP}8tjӋ/2?P )&9q&.|ҋ,A!~IBEuAW7sqΙ\7#:OPAE-Y1p B!7Yo'0&hcTx8mչb1& ŋ¶ߜ]nBCMI 1g`G*jz58 iE*.>Y%M 1+"|ԛGLoj*cG'K (ts8!XiPjdO w?0Ϻf|'d:'}K(`SL}[}=-!11DEi+j/Z -O`R !1 C0?9s]>K q{2K5 '66'@1!4=r~u{2K5 jG'@$d(Y%G'_۳UdJz:.Lwf:+GWRKmT7U*ݎR92K5\uSa..1-01:`sw@pq(Qf98I&b*'iƁS %ZIP@#QE%~2m1cv}Vmq8m .*Y<(QmM{6C}? @"V$hu{CD#\wvH ,αvOXv?10oRq!{&5 .o,c2nu@,{V%QA1Id/!^@Vp !Iy(E)TP'3uOf¢O,"fsrC#^md/!b'E F)}o Gch `*>teeSF)-Xcp I/2^MTOB ~I U@':%MNN4ATE@U@;gBPջz5EdwBElԉA pOTBEPCLC! Dh 4.ZRr*ݎ*IT40``o u5X005Q’Nd"aB eM .Zqni~rT!)\%N{ !Kx(*,~#bki2"ۍqWX'*#L6ܫGa &84b#EB}ti:%gje`2%LTzBт%oE*IjmDDe4ԅdJFL-+r6xc%ֿO"]|7`_$r`4a}S.AV`|Mc8\n*_.,&HwRo2m 9&wBS0P*3[$uR;(1-& `o @/,ȾQf`w'|A~!,R"A$V߳CbH `ir`"i+j  -O`*cy h2Ϯ,خGhDZJ %+/~YqGLoi$Kŋp(ub"ޮ,^2"@:BqbCWB/4&K3L\6%T_' H#J %oNP ٓ"Q7$QTVi! &cTk5W[Fs{U٬Atucq6T\VN7$l0Qx ޑo?Hz'D8GXr`:!f`E,g jKMvAȖN "@:5%{W r8PeM̮EN@í0cb0b7&s$-:ӽacc)'@k9?P'KgC 7*A-r d"ۍV2Δd"FGU p9t]bae%O=Dt07EyP2"6%eײiB;GdAiA"VEE7zw 换`*Yκ R<&ttPךtAxaeЍK71p@00P{ƹ/44wWͷ]2f`m`9kajB}t/Ɲi6:V/C 4-*j}tΰ+!%K\ Pn>ckS_9>c= xL5Q '!!"'(%+.Mݸag!Rn@7f5V!B%?VI%4Ԍw7X)!84b#EB}dܯ2aQUS< -O`iB_V~^1kG%: s$**Uhb ptWw9fOt'{'2'T`ۍؤfy|WU &<~p,˥",D#6"ce HXaGOsڀ6$<& @7zA^O2pa c;!RIo0+6 ,)1bH'"R;yx$Զ.&V,t^#O!)\?1Ί^L^}>qM-*:i˃j_(8^8)cSCScOt'[4pu"YܺL% [gB8B,B0$CL0PfV¡8<}1qHyP2sRAu[1Ï.yAXacw ,r`EZҚ\.*Q*PWdSaVYM #!tpL}Y|gDG r$O?b5K6f:6^ x##Lzҕsh3r$O?fbФ[4B7}TWZrȲ.M<|^tӽA9h[.qπb040e0XP  8Q’#ڥZ "g p0#| f״mͲ2jHĬ5$:WWQLZrV,(ę2WU pY 75/!pL#o@律A1IANcrg =a 00io@b(/*㡃uR$G``v-H`\ٕÆ_e'x+ՁBa PQPN9 PQP qF "ڷީ,kLn+3-vg4{Õ[]AN/%"aV_;ZFEѳHx證߄(I&bVlײs+`16kk.ڗEU @O@|M.ځ005йF.aHd1W,;!jo4ώ 2aEU @O@|BbYEUN9WسiA1}G%'ڷiI`NFdJpI!W":l׶aڗEUN9G 'i6.9? P'luk]@8.x\J&F2,3#ШF+r1J{>::ĎyK@S6'I"CLh<Ɋ zZP,f$u(F~%, 8ǻ3B@%>`D:YȻ-)>UI7VVaX̉ 7V&Жc±Y$Bd4{a1͙'( ݔq*R`13F9Pݐ`Y4yiWXh5l&jDR-g=uQB2 fXB-P*u>QPNTlNeTTUUS f.cJB QweݪEjUeY&ײS!ZVFfUuE ERUe˻~d"Puzœe'Ӌ0((hR2ZRf gRs(t(@֗d-eJhjR&|Q_Y3@µ,\ j9ASXF F8`dΰ K' 3oeP.|jXmuR_łj2S a ÿ,Ubٳ!H{IT_XҠ(Wmio]!Pvl4i&}(Poưո!G:,S cA8¸Z!P eppE$Kke(2-X,bD "D 96 L|%9!˝qZ$ ) 3T\縌e,lU<* e`: FMCtg5Hdh g#(12&V{ U=+YFtczF# A8ͩ {C] j3ubu)a~IM\`(€]BRؾKr|v- .>\n/ >m']3Cxx?EyI~o_OXoէOn? %^=+ϑBBP T`7n=r1`~eɱZo1`~ pE'IŁ&SWOAơr,n"l$ .L00gq1@ԵZ&/3Q~O`CVWhqGjF`~^ xe_ƁT 6&}!ra!x2%eC#AxR@@phq2 WuXiPlKЈ&2XX`ȆWh#XZ(.T`E\e>j6Px6"H."kgcRm!6CdGxHfq3q=燀5Q&h~~RxZ(y.챃wzaqژx|sDR)F x{~vmՀ 'tRxx3CЊ8xRO!52 i$(`)"7Z& !dTgAu0 I4)S6mr;=A.XGfj7I&Gvgrrgo'0'''@]/lFDg)Lo1pvK0uy-s!uI!x'pi%e0jAxIH`X9wBwb`gq'I]xykwXsFt"um.9y~s{w(!s b g7 Z𜑇{y(`cl`mx7`<7takgP+{XR!isA?Zm0b{?fkfXmfe|ak~Q"lU 0  #іbkf@phGrLQ%2<tF'Iզ5 B]|Zs.~,)ocz0ysS%vB%Rra+bB&c)wjywAl'jr'Za(x~r22r@֠wBCV#2 H'1jIJ$4$@ej)9&a(K!+RDQgTƢh-਴lsqTFsp%BsFj *!;"pyuq%ACFap|1aU2AZ!YjS`Fk faOVS(8=2{ xYA9:V3&r"h~L\!L6YE]I+('o Ɂ~ ;u;۳cAva.jgiepwȓa8fO k% R%:hBKRS't =vA B0=2.4!x ' W;"ET#%g5׵t Ox}* TsAs{uے볙 +'HEl%ZI8hi<O J1Q,iDCgHbTVj"!lQn0Q'l;p. rKjhr5 QY"e |Y=GFԵı{VR[A'+cAGE0~ G0[k|rH OZ)0W!+6{+L;v`w2p?BWbCy6"c_u/ХB9skPlZ C"sRQ)]\+d!x|yz|~*)rDdDA5~A H( WE.#0:Rj!C; 00l(瑒/pTJ|ÇRmѱ (9z:X,L˶ % [D%Kkar3!,s\-B$7FBAx  K(_*:ì2O!CVB &eP1!?׽Bj/77BT2-Ѥ9(%3@n*l*,lф"!#30B b [KP,(n@g1OpYM;˵ {yh ,z'}K)z؊u00EyEѼX̶xGl?,_{r4!2;ly!t "-t q;L|_4;up=9%+x– .ZP"JlD0j;LC)I[L-+{JKۓN͛}X d6knf3-`8Gd&;^ qwuZmgQmR ޚ؍~!v TzR(9[BrA4W>z r-GS|'py(!juq),pDp gInP^{S^o|"r+GSFN.v#AúO ه{ηO`?`Bfm^'aL`~XTn~?@SFq9|ݑwC>4 A`oκ AFnkX+ v)X>YE8teRκ CL R`5lhipiɢɱηD6mAMkQvAY!^Z=>Bx|TZ`s'@ii)C"cȯɮwT`@_tl z_!)ב(HMe m 6k4OGMS$"4$%?=$dE`r6 LUEbRt~Tj#8{!t,SWɎUz]Spp3aҌAT(Vɯ-)/ҼĻҬ_ghj3,xl.q4H"qt歹2a ^'@:RL3X>Y'{d'g{+da~#,>#,>'X`qbJ+E@p h ! N1%L2 )(ܼ1g2e܀Μ2sR"#-b<G&\H^̸I9t@EӧfҰOL)"CЌE4"AhjA%2oddرv['C 4r޽ vpÉ7|A\e̙5o|VZLR%e$H1Hɓ ƌ 4fg1H!XWŝeؠv[MDČRn,0cdl&N бr]]VZ|%L9_QW5 0 HBD!QFmT]Cd ~`IZ 6.W WqͰ\sρ$]ԕav RXoy桧iU{(_gPHWAP 舙P4jx9ket:e/R8R TD v iБ X`k#Ic"`֥VCSIVNWu١yLkv[C?D Flv} UqSV20p;*G* dԁJ{ʭ M PC b03A)g.]X,y!C*v $0  A { 1 F! :܀9,P2QE %dJPcv'~ HP {CvV׺Ů KCB!ISP0ЉnwR"Hh2hR~exI%E^㝐'UB@7֡fw3Mr77w ]@ YPŲـ}+\ЭeP"4!(Ζ,L axʀ8@hUB9Zlړpa`Va4+wd|ӬG3I{K?< `?-e1+zvebxֆ:!RWF&A 7`,bd$LP' -lē2:`['H!AHa$ n%̒yxtr3%BdOxS^ y4U3$Ԫ4L IպF$\;`cieԉ SMȚ§M )SD"E`f6+ؔHL@nKEB!}hYN`[L"+ɞ,< CIЮ|֗PSȶ$C )K^h*ffҗjv7܁)J)mۀiP눷k *  (cBpvmmy뺳$$I g_ c Y$0BbIRo$^2.`=캞.V|'Fl,tЬH3$Lu "U@Oť;X E!L^CBTL9Dvl.Ә gCFPѐĶ^X^8. a,3`kSr#$A^tp˜N5PZ&YJWJ/IIiF? -GUSSIv<4Պ$e 7xNM#I#]B@`hFc D)LnC`4˓K"Y(ⱞfJ6GdnrvdmR%enRL&'-\:a)5$G@0w5 2{Od++iyyy|=Bbݲ0m&uZW+Mh\ pyS-XypBkKE NY٪ bT?[:-4 LE2\a.@sI\ՋԹxm) $;zWD 7ͺy-u$ML}$%SyGA)[N}ďiS8)Or)./=AaH룾alHSG ,StUͺ&$o@=bL3?N7KVL#HSsL\VV!\$)wSjqjT,OF(Apu'V5fM Ipm ipu@P8ͧyPWiu*sCMS(zt !a3aSZP cebCvA8 '{mW \kYQo#!>93ߦ~ExB*naV=&7(!Sxqnp{,'v$v7x*$+@v }E @c(@E0)VG xo?2\vYAPdwSAt ymiP3\Ry4x7BY5Z[1us@k%Go%s2tJKRI1}U&%S{Y%rȀ `3:}ga973(CBI5y1NsCCY!zv?=~uY~'b"#q|!@\MOJGR8xB,FCɵHGyJgEepA(;3iLesӔ5kp5na9F#%xcA;4j8e7v~*{q9VdgCG+77id4-7qSDw*b8~ ho:eVu͈4PZEFqY!>'3XXd`" GBghWgDe(aNZwRX$)wI#aDXvrPIŪ㪗}TsD! zy*D@V#JW•Fy1VszXxE{++S-B4Py'2I4i,Pg9bHk*wsoS|ca_e@niV|[]SkpNPa.:O0 䴣<QhSz{`#*^f2'1[ĠPiM!+b.2ydė4QLPmCH@V+%l5e[>%dGAMF`V@zS&"ájku8λ`Ls6yH4'rl+C~ OE _ge Gz9xTuwJk:ZRK^w՜C$:MME)YS|ǵMnhvP=yM+O[=r;%cndoWhxCGDQZ' M\N̊Ҳ30 '3xQ ѥG\=}M/["]+?E43d[X@c !TJ-!ͷ}iog(V"&OFV;KCip,pUг63"z"c~ '0ivF@S QKA!c^xi ҶcTaډz#- .G =ȼx.n'IAtzϊxTd3/֦ Fm79H܌Ç&e^ ê'܊t, J5(4q5 ': @BV'hTSN0$ H~j`+0g1c;v1dcf ~<˚TLmeL eee%:\?.˨sI>. EiN(.s髄 iT prbsᕆ=$w5]s*78B;YXcF0֝7mfU&w~á%ڋ:.-c))k6Wh煌8^0&<%wZBr>Lw s6ؑZ&%!.2nׁ"k["* ]aJ?p?cg"?PpB9 ZM5C06 7EJ6@`Yݢ@nŠx7ߕF˘\r.!0> ^Σ24BVod ' LȃLK@%tqt; ;_E#rHc/o<`GnXdUsLw8֍pЗZЩ 3֛5GI0lhAЂ/3X7>ZN/Q&orXȊ}ٰRSLΝ~&4VEVU`I.w:ـfoҋC0nfhF=]CZ4REU5xw#zs$*57|h4ݏ`BsB.,"F"x"?~ѡOoܡO/%ۜFҫhĭѲu]X^}a?Je-u}cea횧60SYNը:2aeZ7kgW3]6AOz*YAoo,v7B)΢uT߉<)1>T؋^jij(a5E-i7YG~tWaccGӒJKe+EbGw!iU5vB^3}/x*+b(t*jx/97'0yfgoG70-v*jXA9oP%$psDB` ߇'OB^3j$psDBPbusDq:GP !AID2la(B(N0ݹp7b(N Q&!XY-v*jWKrѯI3 ЯS!Ŋa.LSQc(B7! cxDǵ5SdWace<-ѥ: Ԡ% r2`r`Ndxq=V /sdvZ]_&fwqb΢AId}|^r,97x ELjlth-f%%~_qthЯ9 ǰ<,WӒ2{(/е2OPN54pG&,Dc0p~_nrG?] =fw9cv>8g2pthx%1Jk^sPdL_4mY3MUg[)}R]Ӓ]JWac6ˈc/q5|tۅ/N^f&2;Jݹp7&]4 >{ Be<-ѥtWacH㟐WQF{. nr2(,j= VYצWac}? [a905Hqjs)v6&(oW&&Y0D\NtЦS@Vy:gÿq50$~~<ë~h [=*$ &kY1V.PP9;T&F !^豎fn(Vy:7NK0$~~<ëm:*$yDAÒ1! vj(ÿOX$Na )N QF/2!>s)vzyk&( %ߦq`Ac /xxMY,]~ht`Ac /FYQ—GtMf/B?(\*C>> JMR]}XLOa(/7ڱ n&\rm:+-NuתsA6m\Be-"yr|2ZS#-^ ٚon&c++%쇌Ad ["l^"Lq S`si\.J>; * 42lY%pAPK pF`%" 3H.^.#LS  ٿ)ENFY5 aAPK pF`%" T+.x2R-0tGH.X.#LK @cyT C'>/2fu~~qϑ8Hfҟev 5RAw ')i_hcJ-\*5GU /q5|tbtЦMvv%WG'f;$+/Cz>7!ToD8'TZBssCnuXmSoh;[#7%Wjmz:녛JzX+"tsOLC:?QuVx[2qLoD|rotb#z qsƔv'/goF+97+8gWGv/Ul@4]Zox $,S;O4J;C;j} psC}-sjثVWJx}wpB,zg?0Β!=iU,ps|Z2kY!oy^ g8iJX377ϼG-pca1(,r*ęi*|μ77(:3QJ/[؅"ZB>)|qX377ίΞ@bP+S0R+kiBq2i@bxsHzWG3}/2aevn7ts:2K-\B77}z!#+6 `KA00uy;k&Y0(MlC?7]Yxz%n?~]6̱n62ANt;&a<;%$977gWGv/Ul@O7}|XfZYJ1 N@UYّ؋~t7Q7*Jc8}zNڏ,ep3ܝwC.s4ss(KЪ /q5|8 HRŰglT`K?YaKAdD$?x.BdD$ðgzdf/B'Y@4 >{U a?5iz ',-o96Vɇ%,ZFE ZI"Yv\DYNK"2 L0V2q}m-*]ԋ5g+[naBFwc]d2 `4L.!0 ͝u2NyLHi$OH7Uu7!ƽ(Xn^e,|Mjm2a+,x.&UE죄cFӦ;n`Vµ@2l:2ad#'2B.80lF2Y A'_u7|yBra! Jfɖl$n:wd@: MAcD/.S !cJ:>f8_ڪ}|m-]r,P[ vS*Y/6Vf4S 2F3KX@8cJF2+6P2$)M]ʮ,d`_FCmUd3Xwv?kxITf&PF7&OIScESVR]?{.,-}ge+%3q?l$žchH9P;UBK}7`j:eW>l$bKAˈc?0uV ~]Y8ˈc?^ae|"-93Pс/"!cX^%d(?xHH7o(.aovbت tP H ?1Fmu93P;UB,P[6@*gHN'#\(,SAo'Nڏ,eUB_X7'J!?lxswQaaoq5G7~,فo+ז._{(߫Iyt%r"tc7>4qsN}Rg2APK pF`LCZlKģ-k7*? NZY /W3>d|H>Wo_h7}\6v4 Y5'Re?Wq7,7tA-\]s\(v7Wբ7_s:")4*|t -C暕n&^__XתsG2-_XAFwyq'0dy<'ɮ\aNwsN`޽MpM',(u76F,dtG?GuYwTϼ5ri+ιnh*S-pNehhft6MZ2Z]tSN5Rq^0RR]n$mr{&9{ŏ%abJ?΢tg/8VJ,؋޵k sWace<-ѥ%`c$r2&yS}q:!⢜ZFrDd%8ቆf%J[9 >(CZ0OoBN1fvZ8'/>4Ӓ .fg_FRAI'SeI {"VJZ]IhH+tcr4H %/aI&8 3Okv?R-Y){/ݰdE`S**~)yK:&3PO!48(UQ-bI ^^%txT[22f3>Oo%zO/G"FҫO=Zk)b$ʁS`RD1mun8S0Ij`B/6 E1v?J'ilx/#L6)b$&wm\W9 )b$ /B%3#aGv aG"FĮ@|HS>?RFb~%}t3nGB^_*b7AAzT&5xbG"FҫZC|HS׃?)%}ޡd~ve=BQiVOo'ba %q,qFl7,"j;wVɲ.ҴRZRB1`̜ x1Vx2@X1N36f^aOY41P+2X18*qr6Ц<1.+`h22iV]dQF˶ѳʴq );f`YphVG< Ѵul%9 cL- (>%9<1#`YfO1VɵC>x,`h*ScX*0WBɞlMX+qW40@cj+xp<1&`Ixch Rs#bNrYnR]>WJ/a(7 =w {ۼA4v [LUly,1Nf4h88J.͝33/,pHGZZ $u6YP/!OQccP}|M8 $W2x,pf~=t0)UwCQɵMÈ_2/tcPI4&f'4kZ,MpʵMtcPN޽MpMGcP*qU3o?f=*Mpau13f=d*$ΞB97"f8f=M2qw=#f2f=4Fe-d 0%RxuY-KPޛI [8WCs) fB1A2(m:f=`(G<1*QsգRbF`Pt) -pgns@ /,>s),YWn RASJrq?ڱ vȁ{0iB`Apn$(78AII1Spw.έ̫,rk)b$(~zj&zUd,p V|kZ*Y/k2uO=a)٘^O M"O R B1FxL/)s;\|i؋ ּ\'4sL,=*v[iݫ ԍ h߱ex؋=N0nM!ݏLcZ\*Fl>ҹkSGTqC+֮yHX .#NXrڱ (73J!(<Pp@~:(x? R aÈ$~tWac C<Fr 'c&t-e4qˍ*|WxpoY롁D@5A=*TⷃY2.j7O$FP*YA|,O=B& /N{ξVn Z 2"0>I\w:4N _S21HGfds"Ɔj8W^'WNuf5/5pl*$}q*˿L2iR%>b"vhTln| F՗wSSJ2x~ǁTH騫jcO4AC7תs&YF}yhϼ52iT5!xML!jBvz>uo 'uFȘŖ.f|xY@? Η,m'OѵkЦylcTC /d@>["l6@kG::PZF(`o%2iԡfr%%pBICfJ"2KX@8!3,*Ӟ,Aÿqޯ!,eʱ$ 8%8^EΊ*JCs4DYN,} os0AQu+C>d@;%[WU |Bm⠧Lӄ>3:9ۓRP JCɖRq8ap/fQ O6HYGp@qGC6hS&5xlNA0/e2.pAԌ/83<"*R -!~Vhз|2|d_23dcG`n/rp§t3s\/c{Q`%0FP Ǡ%an Hzt;+qr. d*JƼKj3T?@;]rCkjQ1@G`n/rp1>AVs; IiaYLARjGqv[BI+.Y0 scr:l5;>k?*E %#.05 0p0 09-@0P).I!0!2 Rѡ,!i_*A>2#=_.:Ră}w.,!"ʐ(XÅ3sRxb@xC}nB"Q8SpeDq?Z !01꓊H zOuյ))wcA?1[=3(`9!ͥ6ehE>\G?[(0C>6hhbHC>; zP37-E-@C>WRd(!C&υʫ c0R5Zfr;nRl?L) a@rFd ev93ԑ2H$mnQ2./HK/0H(kxvfnWBjD6h0!ιXE0ZSWB !ĆUSea%xRϴkmd+!0QlRXWLե h7w{s|:+:(:2!^5hdV16Z^3tj8RygvmY"SfBw*A>-L2b+=ԡNVߋ*%ND\3]D5&\}([*xwA/UR6 0N@UݫDu1QޛI [x*A>HdtGC>x0O*A> _Sϼ±䃊j_sj8Yt/5l:'PF7v]Fcm6/diD>6hxw71S4Pkz5|8/+*A>C>xP`rkDa`Ix&YFQpa?x^;!E> ˳_(PF7v]FRRbY tj6 3 X;xK3 b@ŒQp;~ivcF*A>7ggL?,Vn[\j8 3,cz. r(2zP1(ZVP?G/5klȁTH騫jcO4ACJj*/`Ix㉅1S8X3j[١+:AWN.7E È +:xAzep*A>n'QIv7_^]: tЦ2i4HkhS|IMiP|e&s= @Q1qMrFԦj4 mUXr5c 2i/s0AQ~d&ƾ16h0!xf(܏o/mXE0ULXEف;[zVmXn1usf=Bn_bncJ'RZDPdQ.R R֘Vx]ZG_6M%xXV0>#% BVTc !v0vf R1aWC>d@;%[WU |L3-E!0s"@;d(\w3 !~VhpMWA!U3<82xarq&GFn0u+B`zUbLnS0P?]\wiS0I s1P%4%b;)jXB MvgD<Ϟ\%a<|s`ʢ?L3 BYf3!U&5x=p.rSMx*ĘzB*BW%rut5\"nP JC!=i 1ө%ZDENA/l+'A5HxPGRDq9C/&LF/ 94@N Y){zaN׼M]RRvgC>hLv]FQ* RgQI܏o(m+:z8ap·P JCNu(pex` 9?*Y&8$7/11;($PB1!>c_N9q$C *%C' *s@1BN8uI 1RsMp̙S&;eLDSC8u0MI3oDq3 ø!PD:$MdSgN7nZ"25o6 SN0t& ;i,&%J,]> B 0rL4H`8-*Cyt ]7l90M8.̤Uk  @$IZ14sD"-bƍ y3 :AAf 39-\6;† %%+$XRIհ,B1OHy[ ^Z`]#օf&RFHie 6u Npw~òSxa@o#yb5pι8,;!< ؄ !u'2^)P,A2P4,:ӏ@u"B4› S@6;w710 F'<թXú5$pQB@"̀s>bdf%P $ ) BԝLFL *[GT ي4( QIǢ)G-aH]HL-vf0fCƢh#Zy{48dq] Hbp hd@1(ZwCdk΀dB@R +(\(Os`]6U7GaUMʀ*TIبlD#Re26Чg̀I: ,xK^?a @Pm'JS;W1$LZhA 6b%DQ!y |?Ҿ䦿EJCl N2\ 5X0aJJ3Cb8 D]xcMBzn 6j`)Պ\ z\9wޔvt:ty{3_83FP@_%&) P0٥ j}kB&YHF<B)#rz-es'YIHlq2AɌQdg6RI&31G*Jx>+T%H kڂංѭԣ"FF tSlJPx6 MqJ\w=$DP/1jEf[ރsI\fcBU&gXx|l6ra"<"9PkxioyVs?kvjxn~~_XRU^dQ gDd,*qS-k3v9V6Xܗ6$G2-;j37x[h/z!"9nUqDh~`?VyN("V815v`aZ\AAmhfhG= hGLuDc!f+7U  z  30SX=Q6[/7Gx#҄R*RC5Y4uSC'ad_U1XUOwU9.BW4n &y^EPC@y :UClT X *䀃A)(a?vyQ`8e&4S*4#aƉw;X-iap(3-lA11BF9. 8G^0[P7wNx`mYoyy 7hIti/i+ F{HAn'agqDa}yP"L0旆Fv" qLs|,bNPj)&`5]xՅRHSjnXixQWXsT@2'SL(GEHp|3bGQ6nݩ[EȘqI tCis9Ǔ 2= WQP @-nGe. i_[gWÙy5m ڠCS"k)waGH3Xa9 ƃv݃<69h"jaP^2HH| '7՜(TtAXQ϶,Н4 }c(ŜG7aW`L qɊ^憛Efdx #2_yso֝o扢n&TRx Dz1aBv U,eױȩ*g*fٗAwVy˔hp$Hh'P%+רܙ~cs0|kՎ Vl`,Li|q8$%Pe^IfMJBhə:JQ.`tZVMEq!%+Rz5*ie)uXLpf: k 3xT2Tp`XFq E,(!>q(CRGE.k1TUUQi!y!AѱX9%-B1bCr7 . ttѳe5E+MLOKXWSd3TCM,ұSG9UF)}ؒ;ECE~A-& r$Z:%I1tRwd0TG5GLA!9æ ѹk~2ty'w5T +đzCYop$h$$d B[/TLj_i(U$q)W7()2xm@W"1LbkN3k LJ5T3tP+mk@&RET.^%i7n2 >0`1rPz-Puay+|,g-yCg(vQƛm!9Y1a+)+-"h1T7*dQO]<e(2!9V7TdzG$uT6,1"5['0Ok7S<D؃"#ge5 J_b(1x=+ 40fh:}HG6~2b1֝t";xIa)ǹQoD9mi1 ɈQ ۙrz^j`ة,` daj^L`:@8v5b|ubr)s+ Ey;`<Ͳ"G!,d.͆Fm朜 ΝAfٜwә'tn ]yzI=4{=T7#)z9ŦO_adx3Hufۋ,>@"C'30I ҉z̓=r;)₝Km,p:zG f)lyɛd+2$'@wJyFIeMBi9eI)ĝ'l!%CŷmVJie0 ߱(pS#GQ}!Ӹo VECMjM# t&yaa&1'-‹R.pMET'x }tA&1?d#A᫧ucC,K7U8QOBMڱKL`>鱶\M], G/yaQTr1[MzM;Eݪ]quߡtT1Gjה 0'MEO>n Hsmɷ[y:3clDm_!\bf0Ik_֟><?f 4EdlWxh sQ"O#1?8/e;2Zr> ˷>Kqr$JZ4O:(A2v sW< ujTQg01G,=atk.(b$Z˷lEK4{FBO#"ǯj$@X"'A"]gG6}R>4"cFqD40_)~VCn^hgXC8*D0sS%Ze(` @;hhI!Ǝ7T@[~ivzM%&rl@|uˎuǹm m֘&9,ؖ}H@Wss(pF qI1:6dK8^hgH,r\] Tafȳޚz0h|CDp* guP^!a&iLr ƚ=S ' dSТuj *AmyQeƄ{>ALGvrA}q/ԙJ6(ga_WAP. 2!4ZRUY0aѮ6p(*r+Pxg(\T'vl(ݔK}: eax29Tj^$-0uYDp*cKvI]?$w]!s@[D*O1%cæ+-x!)+{޻AV  J7=OrQ>0'r 1Tv(/HX*B+1M$KyľrD"AagPY<6E v P% 0CQ8*}^hgHpc;M)/Z76=sVZ"SN=aqs&/xLO?D)mb6Ss_}ޚ1Qdl{D)\?KxM3:Ss_ Da?V8p^͒v)~Z,ƛna\?6p Le$( yL+Ǜ,E`!`R#yQlm9'kU(We9Dm]FO]a4obhIDuݑ:(b@*X-){LD6w ZN+WQmqwMd4!w3$Ɨ$׺XEE>/^hg Z՝CF "Fq%Dz3' cNȷyߴa>hBA5=*xu AFXa>ַ^*#*g6:oaaKyiW+ PM4/ QCVEe6E&uX05YLXAr٪XÓdr3LB `v7#qB 5JǔgƁvN_f+\ΪU͟eXX}ARjM`kEw#DdKׯS~'ydr~5kʁB}tGdDMw!7Z|(GKnLkpMh(ԙIvdK-;ŽH>˽"|/j c|k,\lTv*\h/ Qosxxn`eU9HXS`%6ArgBqU݊s1T|(hPHK>:>hBA5nu  E *LV&s@[ @Mb$WClhl %=7YXADb(iEq'lQ-n"QdTmR.ءW rDc byE\I0@Ē|t(h@}5dQ8*^=12c<<R@yR:rwq'`4 Mtg0fk8zySY0A~|\5XLV$7ȂQ fBtdCԉyϕ! )r}&-I;rapaָS-jxڱw!7Z|(GapAͅ{s*Hvc) N,v<5ʁm(z}GFe^w-HCV 醞‚Qe6^w-HE0~%Ze `A@  A+AeGiEA^j8qzCt[K|As˴"HXl0'$Xgc>~2RN[Bgfj!z|\r7,wfp(s3x4|uR]W( Gŝ]!GvSrEYCtR +r\ɵ\^f|'|2f8,q);@` QSAzFr/*Qdit[Zt'41DڧW 0?7c3T.pw1u RrD21NA'n0!;u2: WhV&]|٘=`B`詝moTvDVa|b4boMݚVaN#dC0H? -88~ێoMjlêbЛY4'LD߭iEA|8D7?aw |T:fhM & Fd` Nĸ^x:QI"krcgk@uph+S@;J'7kڰ 碝P͖/"yΫ>y2۸ D$T_=cڰڲ Fgy(8(Zp&N(.CZ60R W*}Hx/MG$!SlD٘'+Ůwf-|OU4%M.f*]v Ag_*1RAD{fE䎊#o&G+l C#dj~s]1O!`Η#>:MvQiyZz}O/s'mp [[ցhc۫8Z=^R:rwAxGUC=YNɎ%  Ώ8bp[%aB` Vp [|50ꎣH^@LIH FǿRjyJ6kx@B=( 0 }H@Wa5S;0/lQ.uH݊%xB AjrгDRdCux0!N$%V24#-j5?"[[.ah"P0R"%W1âMT&P"Cuea}av>*<>t#,ćRa"O")|g}9U;;u1==nXuȬ75IlB@.]3XA$ӵ3%!}X1@4+ʇ(uR"VXC6y)Q~OrQw;"qw{DbSip•A;@`+p(ߙ$80>t['&RLac")"x͍e I@5dϢVzE]!m,b;!H|'arȱ.A8?$ D .[ >` P -g|HiƛLo ku&-^3A0HsEeȣ("t|+H%)e s;Xaf5c{E{Db5 ~o[tp/tTlQ|=|oB^BSq<aU M*AMů7: s{sMW4 4˜Izb<IQ2&+(IL*m!+((5f^ϙ7+u:+cv"+",ć Ia*LԺpϊ+aC<I@!LG$,ćݢxg(L$]sKOMR ~_b F 5iY0 41DI,_u&0`@HP7ed~480( T?EVkOЁRWί`FM80gɑzYB7"qwMt|R MJbM|=1:-B-xS -,ć 4awb1n/zRc;N6|އI1!༩\bM|-(S&qk+?^8OЁʛ1ʇݢJ !7sX0bM|Ri>w[ȣKUw.U w;"qwM$V۟Y(?>.[=gpi_Vq8OЁ,L#>:4w5*٘ƛaR엺=gR엺=gRL%i[wDb-"%k_`17sZ"Wz KxsÖ&Ʈ٘'{=%g${twM$V=g01<1!uX+p(ߙ$*(570kv^ EPLAi)r$HiƛLo ku&-Ct1P0pY2p8Zqo*ܲM|=!75피͒vYu/Q)1A  Rm`;@Rm`;@4*p(uƛ,E`h@Rm`; Rm`;)Rm`\Ƙ2 Rm`;\ Rm`\Ƙ4P*p(uƛΘ8*p(uƛ,E`hŦRm`;r4*p(uƛN4A*p(uƛ9rRm`;!dq Rm`;2p8@ Rm`\&7RmV2ss%΍0/lQ|f}[A@#k1-~O)"wD{ఝ%Or|uĴx%rd r @y%" !:onȔ " @I \F eБD9e<@ JNހ@AM: Xfj,@HSG,]N3cDžH1 6iy͘1]%q9aL$WA1"4V\Kc9 bM<Q4oӄ KH ¦L`Ld3ji2ә7u20!,b>: W8l"5k1S7REvGH r65^⥝2l# ";QDĕdFqPXTDt*ցFP= nygaG<AH%QxP%XJ\t&Vc2O%0!I&euc嘐%" #!*eN$OJD &oq7nTh-tDnS*6E\F-v kFF hdm[oMYSgfyVbtBu!&ƍ্AV|B(gnxqFVwLjQ k8QcKr-1g(x&GmSBv 6b[b:r a(LV&.:nףY!v]$)BxZ* cXECȄEg 5E4DwTSݤ  !! u) rCĀSP!ZŨ2~ SyAG5PDY $)ҩNBy gmLeO?qT{, YTpTeu\rj,Ff3dhalOVb1Ba pl2D%. *]!x-Nx,uJꯧĦj=S ,nۮ;ʫqTld$VP /!g2_aR Vn-. ZEr$V$Kbk5KVY!hb_14MBPSfݗ$Yuc;rt@ iˡs-"&6aZ)MV&:" D08sFwѴ^,jcT5X1KUd\ͦT-k.hsbB[۾[/]UR`+V ɍU0IԵ3*yѫ&[+̘5 i_@Ov]9.Vc&ϫ皨*7 $ٵj&|LOkV#M@Y7.$sȃQB& 2!.i X c1bk^[s[CQBHЂY6 ZW Ђ[t#P ČhFa'&GDMp%E 3 )Y8ú<ލ$ ~ p5OvNĺ ^f-av_>Ӽ/I: `(nfvи]d8{K> @M) ?h P#@=ɂ_#D~ I .!&Tȇ!2waXYFz9&!p>=WЩIGsn7[<'7] —L+2mx{ E@w#P? ZI<Γ# uu7PTu,/wG1-ֹ2O0~$է~ 4~ma,L~F 0 ~PH$~g~hS[7Re0N ~ e!506j_/2sKG(+6H4wl`y'=708fiRw9ȀM?~Aj,]N .(u99wwF~E=kW gHAJ0'EFGQ0l=r!$f"Y|#X)0r2nf.Fh&8s; '++"@'KQPH!(GF3&|SU"Љ0W?Ak38`SOVe7,bb+qvGtW1XF%ËB'.N>sbiӍB : 0~'f*?zE&|!c Ll獉)]`Y1xrQMXh!C>ssR](g)?A'(9 YpQ=ʲ=$EU5F5Օ_Ƈ>=Q*"d{hdWwW(0=Yy" 6U(wcX&`u0Gwy+23fpa6sZ>s"0dK!VGa\\UWDŽwuTh634ާu(V}v5bst:WrV9EY'Yu $ƅI!U,UEy-,AY{GEfA³Fy0̱];C 'H2Mt NIR 7e#R޸vgE6`٪1>:a [w2PKig;i;HQLeT>z \dkQRAe4aT'?yX"gmp ݳi邬+}c-<]Ag:D@ (Sњ P1`&?mAr&\lN=R{D_/7B PN|7.@A@]D2e9GדGLmdeC[JqO"2-sA BE|73ZRjcTSC`ь8湺ozA'MCK8Va8ŅJ/Z-;b1ID)\AJBv3?Q8ez p+p(21Ey8Dt,] I*\տP0wqݵ˟:ME9#Kb;%uf2"DJUsTZkLKaqa(nޤ-~#]kb7pjMN(b2\9=n{Tᑑ`<7VWM7tAx6*}Α!FV@/h{HBN#/e[5ܰӨJ#)bY7Q~lmw,WB)J@Dۚ0*,YKnv2&5(((n[ ڣP^F&lXΜ C5z|*tG 7JޚM% [CN(qqo%TAzsA@(aF2<8pʨG!Cb9"$zHP ׬ R(N 2( .d1?o(4vHK-pLKqD|xWOR1ErHg 2ϸ-ypYLZ ]?7 \ b.vl!::u)>)+"ÜΙئ؀4VTn$Y50Ywt.Ab%~ ȐQnP*v)?f Na0c-Y: _Nn$z~창ûh6(ӡ5-F$ֳ 0U T`usee'%6(.t.F:! qod~aۻҢLH,&?:UqDT`I S1~ ޿tTMJ&AH,'Q/qS`:SZYYف̫6S h>Is~x (?e/r3ɚJHŬ h>G<ѴmTӿZ"j;3]k_6*:M;B@`N6rjC '|7ǯ? LMDM7mG_S?bGɶ=T/D^7TDfLlS˦pTӿƒ(+@?{ܿL5Opl& Ma}m!H`:nفzW޿L0I)$y NlQDTP :/vřOS*&4x!/r:KLz\`TS@QtH<:G*y.`,A޿FW#p TSTP_A@6ڨR? L@ LlS jHOLpului˜Aib졋G__6NFoE:]k_6O}!JAH@6++oLlS#,Q:Tue#`:C_6nI SLl8 ޿W@O@A&?l8 me?GBɶ=T/D^7TDZl#D| l8 R{ܿ.!cz1ͩn:$'q޿FW#6D8 H`Z?Is̠x (?zW޿L0IO$ZY NlQz, z dn:$'q޿FW#Zl#m;)9.޿W@X&;iT:S6ֺzjO{x AibeVb(biU.KYo/Vy0BP0Kه>*s@LbJiR0*Ep5;ӔTrFaJkh<͞Q1k-{_~` P!Ts)1y]o&?lAY!=%!O^_K`}o<Ok*$cwRn:u)z:/Vmr-Ӣ=E_-4BLFPMPE:og-R(ֿDdOE`]'1рann}^!j>.4JQ!r+rmZ0K`m.ȫYY_ێOE`l4?uiEm^Y!)_aRL6kR`%T-YfiEҒ(VbQl%uAo!M|wvq̑aR@zaR3P0=.?_F|*|HW)WBbsP8A$L;mm e*~WPC@l|5fn! V~Dv\>/V'.] =,e!VM̑FP_x^n!W bwt#^*_I9YfBv:6xBrvO>1Ǭn@d+'.] ݾVMvm'BrVl:u&}'*$<>Iv7 -HsGxnR19$TԊi b2 S9fXiEmnH-99aso-)a1P.`6JNY]?8 yI-+d-tIjR U> ȖMPRM0G bRT/t&VxeFo/VNɕ&v#-&VM=Ӄ@Zp-—O~-y\b)\l%oR+^.`K1,!zz\QW|Nu`:W|N!VMë׿ (? TӿL@O@jPϫVD^UmGm,B10NE!D~'N/󕊦~ NlP*eRu?ZYtnY)7xp6Ttx_S TӿLpQI ϑtūfƒ0`UJ߅X~ea_P`.B_Xgd E2`.B_gdE3`.B_Xgd E6`.B_Xgd 5w4*"DI!IF_s2@*"DIFI `*"DI!IF_s5*"DI!IF*&B10;'DT10%L5PIPPHI:I,ͳ1P*&mG폤IjKGl&L'L0IEEa8;xpW)$s8.׫a p SZPjV $F1$*PB&q#1*F\#1j>IElaJ)7l GL0IE:C^_)B,_,`J5+TDfLlBGD'P'P뚗ߑd˜6qDt5 S.6]^t~;B[[59)18![:P]r.k)yi![0).zʬU$<8YF-]FA@EP#AA@EPV ˭2B@O@ApD+'`!".)B̹\/e#` #AA@EPw["e66`"23\ZTkA*J!."3."3{FƠ.ZH@1 4P 8?DTPBH[ ((?ETPjV?w Wiz''" U0~GnD.2zL|)TES@[G$U2RL6TkrPQT6Aaxe=b̻IXPFlg&JQӨ;" RZT$"Ŀ+TDHI`L&Ӎ`[PVnr0pOTY;yafR*>'T(:+ZSFTDPAz''S(Q$-zJ9.Z:鳪Ya@-dTDJg,k>R?QT6XL@O@)bu"~}8EҒM(!&RZT6kL@O@5v.k !kA'u&Fs!.aP0&DotTD;bGRk+HC@,o]((ekjܷ.̪يM)W9aN:+ZS¶7lJ?̬RaAtTD_ȇNFL@O@6P5t^U6 [?QT6mLTD`mSh BH@8?TD !_2-ka<1U T` !qS e'%,"=EeSHŁzmP>qѥmъC&Ӳp.|/ObYTD@Q| de,? 'DS3T'0L@3U3zmځ#@q#-5 j ~r!+Qp7R $6;esG7rDnB0K7[AFp<Bbw#@Lb*AagۃAv=ʅQd"IuPL6 I_qvvG7_PAr#BI`XBx45&ӠR(.RvA<`s48rB'DV^/_1HdDI`L mC22]k; *rG8J8a..?8eOI`W|s-'C9FfCz).a*4Ja;DVM5KI`L{gp0?_aCHDY!)_1~DV-\:?_aS(#[r#yAI`XpB…s2@5&ӠR(A`g( 6WrB'DVp^/_?dDI`W Mb5&ӠR(TuPL6ɦ\SVAI`B 1s不Eb*?Iydfj6RLAAI`W hz1`Q^ؑb6]k; DVSCk;]BI`B aj5&ӠR()FI`B ʹN=ä)不YQvztU\6zub".a뿬iH<^b5&ӲNjRP$6G%YG[oLn-W5IPztlFI`B."3U $6GA`gs1`z#Ap~s8P|csAe*~E鱰M)7VWbVHJ?-ve7J Gl`=#Eb' DV_{؁$%.a]FI`SPG/a۔ (/T?_a].dDI`-kLI`Ȼb(|1e#.үүo)4n@ a2m $SFAR4P1 GlH:cЀ7g@BL:eRM272 IEG&Daba HDR"E@L8`aG 0 Xfۢƶo29THݻ T dȀsM˗gfhҀJV+‡hO$22ace@w v8֎D8ru otSF2GF0a"CH~ep.Y b؄qMJB'}'YQgwAJ)aB Q\{r WbGICdGEu(Gcd0Fs]P E5  ,m='\[-&0t AЂT)w$IOP80E`Es!G9!r(:%AB,`łU>tES ZpT&LPW(*,ZD4!PZ5,ǵĹH @6~'FZjFLFĴ[~܈ͺeܜiAriG]ّP.·_Kn"V{hٶh$2D] PX݋etT$t⚺1o j',2,Ej1ʒ[rv4EBPA 4aq|%ᆆie(FaV}n'|`BWC'PqԑCd@Bo3Ev'$TQ0T& uAR:pƒR lę{o!MLqn3Ùa-NyO6Q/4/ [Pww٩=:ĨABq 8sDb<_Gv{R3jUnA>rG!|1DV"Ol(* {V Ҡ9 "B!i_Z& Lt@0t\8V!6 氆4k 6rB)La P Q ?SCDDt"O,؝*b  AgD70JԚbC8hwc7) u#pxF -NmjW+ 4 *P{v i"1LB+OJIAqc(8#@bz~=ƒp;H4#Eo0>G  T@,pB 1, xvbBHVqq( ܐg PI[VK uNч|N.$nԙKUrRH@@a ]ōP7Ubv(B9}T.(I*Hl B6h(zF:v|a rA7"]rArHԑc¯JdCkBj$-[eY7XL >*"NB} :!E:hA \P\E!C_CF| Kbυ2p{) Cd Q>ix 7@[ t0!DvR NqO}B Hjܹx !4jA@OD՜n0FN$c*a>&C<؎8JR̆ SrE; chF+h{UpNi=P&INne(5%E6\" ʄ w7x0THҊ΍:e$0 gؐ{!J:;mCo LRHBf()FNzP! S"zЃ61A,zuRPi^m y IYșulq F& ܺяe6JĻ̌8:JC- u(=ӞpH ȭHl0C TxO`C@B`JR!$uu,O9X!t"GjCPqu`9EыXOY-H?DBPF`BCaiaLp:!HЗ8>%FH"yRn'$xpSsVd8AMwDSF)5E%H!N(JDbc'g8"i,!r0-鏥 QefXg$a&J.)ZFТI/JX4sab;G-P$ B>%:XUWuMATsqBZ\1uOn  Ew[-97ԃ7b"F `[JZ#wni'tzHReU=pbme*g:=vGl6l#瑭(?Buħj֡r*U9&ѩAuBNZ#ٱêXprHwu`xt!ueZ7a'SCqSRyuFzsmb8:%5-5g~ Wg5A, F`0HAjuz~b{H5`Hoe6\5a!sn:>|1e{seR5/Ba Nr&E@rc#=[l)*#8 @`6FqS'L`۴UR-k<13;T :˳').HGU;ȩJJ)K0/H8!Cs%锪J+PA,{*$6+9KO&BY[dxn;)@HP*w';SqVӴ~km5o)2tLT*۸({OZ;)Kk$gjr< ue;FtNQ128˚|;{뵚kKse{'iy'y/RW#uz&d7LYGȤ&78?GA7tcztsQfw9!HAwAM8fsC^6,zzOU5Du@at1oM[Hpzacw\ץ:(ZXTi_g\Dz._4>]y:9z\F>(w^ZřgOE-tb0_Dgs0dF!{C=qyE 9u˔Cv7{6-P7Cwl`*?A^7>arY$ȳ{PK$2`8Nf@]Fj>$ʆ$AҷN,!GpBъwl`,Q?J2\q1noQ~He Z4Mjua&h mK2IJTu:(DHhzH g4*–OPus h.QOӕ8 DaX?03/3@](݁EuAЁ1SD&_=)#4bq$|oP?]X !FٲhEMe21QQ7 A? vC]Ԉwq֊ּ)@Hs  ϖՙA@m X^s?87yP(qYLM`\e?ʭ9:'8,Pp猄'ocTDE L쬷uL]:!ೌðmpB~gh@Ѳ6ޕ]ނMb(w9mB8wa([UO+C$S+D- 8a;(9֍DЈ='Q1ilCRZ۝Q.p.V=-+tz-` M:2`J 5RӀ^BxQdvZۀ#^^SpxdHOaǼ)í}~7Eƃ'>|"'Ho ^A&n@)!z+HBI PDA!ުl63b!z "Fy82V_@ -Bp([zŕH:>l(0$np((ߤtsmKZ-2.R/&3R3q)n@orAD'؊yv5~}ta 1s$$p}6'z)'P֚֊o-\oGT)VϕD(p'݀"lOpV%R9$:)E98ˋS[׽/H$Naƿg6z H}4dIzW6G9OOAm66:v&?_1ATmBޗ!IAKFSwcg_S6:'P:pXQ'E`&c5qōlo/q{s8:4%8s+a Q'A*7`Hj 3!-UMsU8! Cl|Z<9}8SA!i$MSx1 8zF34pr:nCN @"~O$aO{x AibeVb(biU.KYo/Vy0BP0Kه>*s@LbJiR0*Ep5;ӔTrFaJkh<͞Q1k-{_~` P!Ts)1y]o&?lAY!=%!O^_K`}o<Ok*$cwRn:u)z:/Vmr-Ӣ=E_-4BLFPMPE:og-R(ֿDdOE`]'1рann}^!j>.4JQ!r+rmZ0K`m.ȫYY_ێOE`l4?uiEm^Y!)_aRL6kR`%T-YfiEҒ(VbQl%uAo!M|wvq̑aR@zaR3äZ3ENV# UNCR v2.4 Copyright (c) S. Greenberg 09/15/87 May be reproduced for non-profit use only$ 201-670-8724Bsf1: 1:_Hͥ*d~  "dt):# "d>2 :zy` 0Æ;ͥ> S!͒2| 0tv | (%(p |::zyø2| o| g"< | (8E.(D:| 8([ | 8 | | (Ì| 2~| ڏ:_ 57!S\$͵!>8 *::( <2S\$͵*:͙{(*!""2!> 2>2>2| _| W:~ *R(a73g p ڸ!}4ø7ø7p ø7g p ø7g ;p ø|0g!w9z0gk~ >2*> 2:2~(#V|g^z ˪;|g~͚|g~2np*|0g:w|gs|gw*#"#:'2:< (2>2:G:'̆2z={((7| 8717n88 (Oɷ(=Gy>s ͚:x! >?6Z !~ȷ(~ Z( Q(>w :!(~S]#1I> 2!< !2!0066!``(6>2`GL~(͊[r|gs[h|`0~V|gnz0gn(͊[S[:Gr|gs|gp]))))o{`g#u"h| 2~| >2 :ڏH!(!4*+">02!0: hSB[a6`a GEL Uncruncher v2.4 $Checksum error detected $ [ Not compressed ] $Invalid Crunched File $ File requires newer program rev. $Stack Overflow $ $Unexpected EOF $ Usage: Filename (space) / | UNCR {du:} {du:} { / } \ \ \ Source Destination Option letters is up to 3 letters immediately following a " /". "Q" = Quiet mode "C" = Confirm (tag) mode "O" = Overwrite mode Option letters toggle (reverse) the corresponding default setup. Both "du:" are of form DU:, UD:, D:, or U: Everything is optional except filename $:x?c:!͒"͸` ;ͥB 0p 7>$2:_H| 8s 3g p !< ~#07!2w:w<2wT]~ :wo&ͪ>.S> S# >.S >:S(>*S U !>S> S T >*S>HB :w= V =2wH7 NV Y(>S>YS~#S(  q*9 :֛80q@8>@2tƐ2u:2_:2`:2a:2b22}͂:p2o22:* | K:  E͚ ! ";!ͱ! : c6 8\!;ͱ!; 6 :< (E6`!]~/c c+ͥ:i2:y2::l2;!N>[+x?͚ : :q2rG:; :q2sG 2yG:O::2x>?! (2z2n:a  >/02nK7j q:bS !"d:Gƀo&> ++~/ +~ #( yA6# ~Q(C(T(O(H`!_!b!`(66|<((~ :pw!0~!6`6`6`|(~[ ?7#=S{j<7j}'̈ ~#:=2̙ ]j(.:n  , ,}2(!(7, >:mѷc :n(:!;͒:` #;<(':(H7:_( :` H;< qc;{' I8:u :t'G͙ cx:n¹  X,; H7ͻ:y Ht7:r=_%[{:q=_*d"døq;{/<(G>s B%D͙ ͸g:p :::_:o( {2o  2p<2q*O " > g p X:!;͒c; qYyx/Gy/O>j 8B= !"lH  > S> S_75777:}o&ͪs:\{f:+F#~# :q@S x 8 >1S 0S>:S >.S> S~# ( S2v(ɇƀo&:bG(> ~O#:v<2vq*#"! W ( q:_ :=G:(̥*#"!W>$2:> 2:_ :: A[*"j> Sͪ":: !: *ͪ> SS*ͪ!DM)jJ)j)j)jJ)j)j)jKj<#~ S*͑>)SH<<<ͪ>kS } } } }(0S0S!(!( Nq# # 7:vObkA { _zW Invalid argument$ Invalid option$ Erasing: $ Copying... $[ File empty ]$Input file not found $ File creation error$ +++ Disk Full +++ $Output error$ Too many files$ Not enough memory$ Prog req's Z-80$ ---> $ --->$ ===> $% $ ($ --- $ Hit "T" to Tag files for processing, to skip, "B" = Back one "U" = Untag ^C = Abort $Selections OK? :$ $ Change output diskette & hit to continue, else hit ^C to abort. $ +++ Aborted +++ $ Overwrite existing file? $ in out rat ca cr ==== ==== ==== ==== ==== $ File(s) processed $   0 / 0$+6#'ʊV:V&0ڠ GyOҠ+~#< +q#ڠҠ45  wÊ ڟ *w#6?#!445#a{_ɯw#    p#  ' ' .,:;[]=<>|."![*>v >(7ɧ>> >(88>>>O>Gm* ͸͸ x B>O>!!!!G:G6,q,p,(y/,w,,>G7*33o88 (ORɷ( =GyR>R| .">PgR"|gs2>2!"ͫv ͫ(>> >>>7{ɯͫ ͫͫG>8ͫͫSͥ!>8 *:e:(ͥ*9Ұ:gk~ >2*:e~ʴV|g^z |g~|g~2g:gOD~(|0g~( G|gn`s`.r|gs|gq x2?0ͫWͫ2::::_ ͫ_:Wz?88 (Oɷ(=Gy>!!e< *T]>w6@>*w}eo0 $: :g:G}/< OT]>(*:GzGK>(ø+|0gr|gsBO ,L}Z8 90)))))l| ڬUU!( Nq#CKNUY\flovy6Hmv{~&+/7;ADHLRV[_sv{ #'*.147:BFNSWnqu}&+/7;ADHLRV[_sv{ #'*.147:B"9"2!;y3]K!Ʊo\b!,_^#V* files PWWS .DOC: F6 B4 RESQ13 .COM: 06 8F Searches computer memory for text and allows you to RESQ1 .DOC 8 1 sav i t file Fo tex recover afte crash. SAVE-WS2.COM: 2B CA Recovers WordStar text from memory to a file after SAVE20 .DOC: 44 96 a system crash. SOFTCR .BAS: AA 04 MB âZ3ENV#ARCARKLBRCRUNCH v2.4 Copyright (c) S. Greenberg 09/15/87 May be reproduced for non-profit use only$ 201-670-8724jsS1"C 1":Lp*Q~  "Qʜ# "Ql>2s :g(:eʶbAbu 0op0Iv ~<(<(2k I I> {!ͺ(K *1> (>Z  *2 I!2 !1>Zw#w#w'xy>v͛>͛!!~#͛ >$͛> ͛͛>͛:L _!!80F!>!0ÞCFC!F:s(͛:͛:͛[͏ͅ :e[*Re:eU7b ڶb:eʶR_p (!j4͑ ö_ö_ͅ ö_ͅ ͏ö_͏(:ͅ ö2q!F!""2y> 22>2>2!:qG:hͲL~#0ߺ !|g{ |gx |gV|g^axa[U|*0r|gs|gp[|gr|gsG7x[S:'2:< (2>2ͲL~?0ߺ 5|g{ -|gx %:n :p :o(|gV|g^axan "l[U|*0nL~&0ߺ 5|g{ -|gx %:n:p:o(|gV|g^axa[U|*0*#"*lSnx2pr|gs|gp?))):OD G):sA)0͛>2s:2ͤ ͜!< !2r!**>w6Ox]))))o{*g#u"U #~(͛x >.O:kWp8((2kz!!kz!Vzp8((!>!.Zp8((л(!Gp8(!>!^p8(7~( #]( È~ #ѷ !~ȷ(.!###~($?(ݾ #~?(ݾ #~?(ݾ >w GEL Cruncher v2.4 $ [ Can't crunch .ZZZ files ]$ [ Already crunched ] $ [ Already squeezed ] $ [ Result not smaller ] $Result not smaller, save anyway? : $ Usage: Filename Date, etc. Option letters / / / CRUNCH {du:} {du:} { [id] } { / } \ \ | Source Destination (space) is up to 4 letters immediately following a " /". "Q" = Quiet mode "C" = Confirm (tag) mode "O" = Overwrite mode "A" = Archive bit mode Option letters toggle (reverse) the corresponding default setup. Both "du:" are of form DU:, UD:, D:, or U: "[id]" is date or any text enclosed in "[ ]". Everything is optional except filename $ l:e?b!ͺu (K '0ͅ 7>$2:Lpͤ 8͛[͏ͅ ͑ !) ~#_!2d:d<2dT]~ :do&;>.{> {# >.{ >:{(>*{ U !>{> { T >*{>pB :d= G_ =2dp1_ HN_ Y(>{>Y{~#{1  Ù*B :֦80wÙ@8>@2aƛ2b:2L:2M:2N:2O: 2P22jͪ:]2\22'* | K:  Eͦ ! "(!B! : ʋK 8\!(B!( K :) (EÈ!]~/ʋ ʋ+:i2:y2':l2(!N>[+xmͦ : :^2_G:( :^2`\ 2fG:O:'2e>?! (2g2[:N  >/02[_͒  Ùͣ:O\ ͖!"Q:Gƀo&> ++~/ +~ #( yA6# ~Q(C(T(O(A(È!L !O!P!M(66|<((~ :]w!0~!ÈÈÈ|(~[ m7#=Sh͒:<7͒::P!:}'̰ ~#:=2 ͕͒".:[  , ,}2(!"7:,:: >:Z::ѷ͋:[(b!(ͺ:M #:(:<('b(p7:L( :M p(::< ,Ù͋(:{' ́8:b :a'G͋x:[HH:X,:(: HA_:f pÜL_:_=_:%[h::^=_:*Q"QöYÙ:(:{/<(G>͛B%D:] :':_:\( {2\ : :2]:<2^*O " > ͏ͅ b!(ͺ͋(:: ÙYyx/Gy/O>j 8B= !"Yp : > {> {_:_6_z__:jo&;b̈́{S:+F#~# :^@{ x 8 >1{ 0{>:{ >.{> {~# ( {2c::>:(>ɇƀo&:OG:P(> ~O#:P(yw:c<2cgÙ*#"! :(: Ù:L :=G:(:( :=e*#"!>$2b> 2:L b: C[*"Wͭ> {;b: !: *++;> {{*;*[R"W*[Rͭ:8}2<>2*"*"!DM)jJ)j)j)jJ)j)j)jKW<#~ {*">){p<<<;>k{1}1}1}1}(0{0{!(!" Nq# # 7:cObkA͓ԃ { _zW Invalid argument$ Invalid option$ Erasing: $ Copying... $[ File empty ]$Input file not found $ File creation error$ +++ Disk Full +++ $Output error$ Too many files$ Not enough memory$ Prog req's Z-80$ ---> $ --->$ ===> $% $ ($ --- $ Hit "T" to Tag files for processing, to skip, "B!" = Back one "U" = Untag ^C = Abort $Selections OK? :$ $ Change output diskette & hit to continue, else hit ^C to abort. $ +++ Aborted +++ $ Overwrite existing file? $ in out rat ca cr ==== ==== ==== ==== ==== $ File(s) processed $   0 / 0$+6#͙͸zzhY:zʷ01 қGyO1+~#<1qʣ+q#11451 wz 00 m*rw#6?#r!ʊ45#a{Җ_ɯw# ͱͱ ͱ p# ± ʸ ʸ .,:;[]=<>|͏ͅ b!(ͺ͋(:!͇!*R!+n&͔!Td!TͿ!*R!+n&͔͇ !Ϳ͇ !͔ !`d!`Ϳ!Jd"P*P!JͿ=)!E&*E&E- Subsystem !*y!!͵@ drive *P!!͵@ parked* ------------------------------------------------------------------------ This file contains the basic usage syntax for CRUNCH and UNCRunch pro- rams, along with a brief description of what the various modes are. Many additional operational details are contained in the NOTES24.DOC file, especially details relating to features new to v2.4 vs. v2.3. Information pertaining to exact locations of "patch bytes", which allow you to tailor the programs to your own preferences, are contained in a separate file PATCH24.DOC. ------------------------------------------------------------------------ CRUNCH v2.4 Usage: Filename Date, etc. Option letters / / / CRUNCH {du:} {du:} { [id] } { / } \ \ | Source Destination (space) where = {Q}{C}{O}{A} Items in curly brackets are optional (namely everything except for the filename). The two optional 'du:' specs may be of the form DU:, UD:, D: or U: where 'D' is any legal drive letter and 'U' is a user-code from 0-15, inclusive. The colon MUST be typed. The first 'du:' specifies where the filename '' is located, and it should immediately precede the with no intervening blanks if it is used . If no drive is specified, the default (currently logged) drive is assumed. The same is true for the user code. The filename may contain the ambiguous (wildcard) characters '?' or '*' if desired. The second 'du:', which has the same form as the one described above, is an optional drive specifier where the output will be directed. No file- name may follow the the second 'du:' - the filename will be generated automatically (see below). As above, if either part of the 'du:' speci- fication is not included (or if the specification is left out alto- gether), appropriate defaults will be used. The resulting file will have the same name as the crunched file, except that the middle letter of the extension will be converted to "Z". If the original file's ex- tension was blank or already had a "Z" in the middle, then a filetype of "ZZZ" will be used. [id] is an optional "date stamp" (or other information), used to iden- tify the file. If used, [id] consists of any text contained between a pair of square brackets i.e., the brackets must actually be typed. The text contained in [id] will be recreated at the console for the opera- tor's reference when the file is later uncrunched. Four command line options, "Q", "C", "O" and "A", are available. They may be used in any combination and in any order, but must be preceded by a single slash and there should be no intervening blanks between option letters. The "/" itself must be preceded by a blank. For example: CRUNCH *.DOC B0: /CQ is a valid command line. The letters have the following significance: Q Quiet mode toggle C Confirm (tag) mode toggle O Overwrite without prompt mode toggle A Archive bit mode toggle The "standard distribution" copy of CRUNCH is shipped with all four of the above modes "off". The command line option will activate the assoc- iated mode. It should be noted that patch bytes in the .COM file allow a copy of CRUNCH to be configured to default to an user's own preference (see PATCH24.DOC). If a mode is configured to default to the "on" state then an occurrence of the associated letter in the command line will flip the option back off. For example, some users may prefer that CRUNCH generally perform over- writes without always prompting. In a certain situation where the user wanted to be extra-careful, however, he could temporarily reinstate the prompt by specifying the /O option. Following is a brief statement of what each mode does when active: QUIET MODE: Simply suppresses the continuous console output normally supplied by the program while it is processing a file. May be desirable if your console is slow, auto-adds LF after CR, is a printing device or if you just plain don't like watching this kind of activity. OVER"WRITE WITHOUT PROMPT MODE: Suppresses the question "Destination File exists, overwrite?" from being issued everytime the program is about to overwrite an old file with the same name as the new one. "Safer" to leave this mode in the default "off" state, but really a matter of personal preference. Off-state can hinder "unattended" mass perations, however, since processing may occasionally be suspended pend- ing an operator response. TAG MODE: An enhanced method for selectively processing certain files from a wildcard group. Though vastly more limited, it is obviously modeled after the SWEEP/NSWP type "tagging" concept, so many users will feel comfortable with it immediately. All specified files are displayed one at a time in alphabetical order. Only "tag", "untag", "next file" and "back one file" functions are supported. After all proper files have been tagged, the mass operation commences without further user in- tervention. See NOTES24.DOC for some some additional notes on this mode. ARCHIVE BIT MODE: Allows CRUNCH to be used as an archival type simple backup program. Like other "incremental" backup programs, in this mode CRUNCH will only process files which have been changed since the last backup, based on the CP/M "archive" directory attribute. After each file is processed, the bit will be set indicating the file is now backed up. See NOTES24.DZC for some additional notes about this mode as well. NOTE: While all other modes and command line options are common to UNCRunch and CRUNCH, this one is implemented in CRUNCH only. UNCR v2.4 Usage: Filename (space) / | UNCR {du:} {du:} { / } \ \ \ Source Destination Option letters where = {Q}{C}{O} All usage, options, and patches are identical to CRUNCH, described above, except that no [id] can be specified and the /A mode is not im- plemented. Also note that the the resulting filename will be recreated from the name of the file that was originally crunched. end g&*!^EʷN'!!!(! }! MENU OPTIONS:!}!*!^E S. Set current subsystem.! F. Format the hard disk.!# X. Return to operating system.!}! !!X$*X&FRn]âSRŽ*!^Eʋa;âXR¢!!*X&!XEʓ#!!!(!}!Please check subsystem.!'Error during selecting of hard disk(s).!!!rN'!v"o*o!$Eʟ!!!(!}! WLHxx.ovr does not exist.! Program aborted.!!#r! !r*! :!/0!5 (M"r!(!}! WLHxx.ovr does not exist.!yxX+G]T~w+”,kb ,xG-"L-"N-Hi&)))#"T-!W-^-Aw#,!W-"P-!^-"R-*N-A#,C-A*L-~w#,!T-5,#5G-*CRUNCH v2.4 processes and generates files identical to v2.3. A series of enhancements have been made and are summarized below (additional de- tails can be found at the end of this document). o "TAG" MODE: This new option lets you select any number of files from a group for processing. After all the selections have been made the files will be processed. Selections are presented and processed in alphabetical order. Applies to both CRUNCH and UNCR. (Even when this mode is not active all wildcard operations are sorted to proceed alphabetically). o STRAIGHT COPYING: If CRUNCH ever creates a file larger than the original, the file will automatically be erased and replaced with a direct copy of the original. If the original is already crunched or squeezed, or if the filetype matches a type on a (user configurable) filetype list such as .LBR or .ARC, no attempt will even be made to compress it. A straight copy operation will be substituted. Thus ALL specified files will be transferred in the most efficient manner, facilitating the use of CRUNCH for the creation of .LBR's or as a backup utility. Similarly, UNCR will either uncrunch or direct-copy all specified files for full restoration. o "SPANNING" DISKETTES: If CRUNCH ever fills an output diskette during a wildcard operation, the last (partial) file will be deleted and the user will be prompted to change diskettes. Operation will then con- tinue, starting with that last file. This will work from the output of either CRUNCH or UNCRunch. o OPTION "TOGGLES": UNCRunch and CRUNCH take as many as three and four (respectively) command line options, in any combination. Each option corresponds to a mode which can be set to default to an user-defined state. The ommand line toggle will then flip the state back on or off. The option toggles include "quiet"/"verbose", "tag mode" on/off, "prompt before overwrite" on/off, and "archive bit" mode on/off. # o OTHER NEW MODES: The "archive bit" mode toggle, when turned on, will only crunch files that have changed since they were last backed up (based on the CP/M directory archive bit). When running in this mode each input file will be flagged as archived as soon as the crunch operation for that file has completed. The "prompt before overwrite" mode toggle allows command line control of whether the program stops to warn you each time it is about to overwrite a file with the same name. o UNSQUEEZING: UNCRunch now also unsqueezes as an added convenience! Usage is identical. UNCRunch will automatically recognize the file's format and use the appropriate algorithm. o FASTER OPERATION, MORE BUFFERING: Modest speed improvements have been made through a variety of techniques, including more data buf- fering to reduce disk activity. The extended buffers are dynamically allocated to take maximum advantage of currently available memory on your system. o INFORMATIVE: Messages inform you when the programs are crunching, uncrunching, unsqueezing or copying and why eg. "Already crunched" or "Zero length"). Includes the old in, out, & compression ratio reports as well as a final figure on the total number of files pro- cessed. DETAILED NOTES ABOUT NEW FEATURES Some of the new features mentioned above require, by logical necessity or convenience, that the programs respond differently to different types of command line specifications i.e., respond differently depending on whether the source and destination user areas and/or drives are differ- ent or whether the program is invoked with a wildcard file specification. Following is an itemization of these details: 1. DIRECT COPY OVERRIDE (CRUNCH only): If the source and destination drives AND user areas are the same, then direct copying is inhibited i.e., CRUNCH will not bother attempting to copy a file onto itself). In this case, it will resort to the older method of asking the user whether he wants to keep the larger "crunched" file. 2. "SPANNING" DISKETTE OVERRIDE (CRUNCH or UNCRunch): If the source and destination DRIVES are the same, then the prompt to change diskettes when the diskette fills up is inhibited, since by changing the output diskette you will also be removing the input diskette from which the program is reading. 3. EXCLUSION LIST OVERRIDE (CRUNCH only): While it is generally useful to have CRUNCH skip attempts to compress certain filetypes when doing bulk transfers, there may be instances where (or example) you WANT to create, say a ".LZR" (crunched library) file. Therefore CRUNCH will ignore the filetype exclusion list if a filename is fully specified. The exclusion list WILL be used whenever one or more wildcard charac- ters ("?" or "*") are used in the command line. 4. DETAIL INVOLVING FORCED "?Z?" EXTENSION (UNCR only): UNCRunch used to convert the wildcard spec "*.*" to "*.?Z?" as a convenience fea- ture. This conflicts with the symmetrical operation of the new pro- grams i.e., that you can transfer all files from a disk or user area with (or example) the command "CRUNCH A:*.* B:" & then restore them all with "UNCR B:*.* A:". Thus the forced "Z" feature has been removed, and if such is your intent you will have to type "UNCR B:*.?Z? A:". In an effort to retain maximum convenience and compat- ibility with v2.3 where possible, the plain command line "UNCR *.*" i.e., when uncrunching to the same drive and user area, WILL automat- ically be converted to "UNCR *.?Z?" since direct copying is not de- sired or possible in this case anyway. Also note an effect of this is that a separate "UNCR *.?Q?" command would be required if squeezed files were mixed in the group, but if going to a different drive/user area a single "*.*" specification would do everything. MORE DETAILS 1. MIXING /A and /C OPTIONS (CRUNCH only): The /A, archive bit mode option, works internally by "tagging" all files which do not have the archive attribute bit set, and thus crunching only those files. This is useful, because if both options are specified, you will be pre- sented with a list of ALL filenames, just as if you had specified the /C option alone, but you will notice that all non-archived files have been pre-tagged for you. You are then free to either tag additional files or untag "pre-tagged" files as you wish. You may wish, for example, to untag various .BAK files which, though not archived, you consider superfluous to backup. 2. UNDOCUMENTED /T OPTION (CRUNCH and UNCRunch): Though markedly im- proved, the new tag mode achieves the same desired effect as the old v2.3 /C (Confirm) option, namely selective processing of files from a group. It is therefore still the "/C" option. But I personally al- ways think of it and refer to it as "tag" mode, so I have allowed the programs to a$ccept /T as a synonym for /C. (Not really "undocument- ed", of course...) 3. 255 MAXIMUM FILES (CRUNCH and UNCRunch): Current program constraints limit wildcard operations to a maximum of 255 files. If a wildcard specification matches more than that many files, an appropriate error message will be given. In this case, you will have to split your job into several operations by using using more selective wildcard speci- fications. 4. CRUNCHED FILE OUTPUT (CRUNCH only): v2.4 produces identical output regardless of mode of operation (a few very observant people noticed that v2.3 could output valid (but different) files when running in "quiet" mode). The output of v2.4 should be identical to v2.3 run- ning in verbose mode, except for the embedded revision level byte. 5. "FILES PROCESSED" COUNT (CRUNCH and UNCRunch): The v2.4 programs output " File(s) Processed" each time they are run. The count is basically equal to the final number of output files created. A crunch/erase/copy sequence counts as one. A "no" answer to an "Over- write existing file?" or "Save file anyway?" question counts as zero. 6. ^C ABORTS, ^S PAUSES, ^W RESUMES [CRUNCH and UNCRunch]: Hitting ^C will entirely abort either program immediately. It may be issued any time the programs are waiting for input, or during actual operation. Use of ^C during operation will generally result in zero length out- put file. Although probably of limited usefulness, it is noteworthy that ^S will pause the programs (in verbose mode) since it will be intercepted by the system and prevent the running console output from continuing. ^W will then resume. end of notes Fx(8!~!^#V! ? ! ~#foR0i`r+sq#p+E@r+sq#p+~ ;NFnf ^VR #nf ut~w~w6!-^V^VzNF!~#foB8sr!~qw#~pw*@R(#~+( ;*********************************************************************** ; ; "CRUN-OVL.ASM" ; CRUNCH and UNCRunch v2.4 Overlay File ; (For user configuration) ; ;*********************************************************************** ; ; Requires: ASM.COM (standard CP/M assembler) or equivalent ; MLOAD.COM (p/d file merging utility, NightOwl Software) ; ; ; To use this overlay, simply edit in the YES and NO answers as required. ; Then assemble and merge using the following 2 steps (or equiv): ; ; ASM CRUN-OVL ; MLOAD CRUNCH.COM=CRUNCH.COM,CRUN-OVL.HEX ; ; If "uncrunch" is to be configured the same way, simply follow that ; with: ; ; MLOAD UNCR.COM=UNCR.COM,CRUN-OVL.HEX ; ;*********************************************************************** ORG 100H NO EQU 0 ; First, some definitions. YES EQU 0FFH ; JMPINS: DS 11 ; Do not touch. Room for jump instruct- ; ion and Z3 environment descriptor. Z3FLAG: DB NO ; "Z3 Flag". YES configures program for ; use on the ZCPR33 operating system. ; NO for normal CP/M or CP/M+. No ; need to set this flag if file has ; been installed with Z3INS. AMFLAG: DB NO ; "Archive Mode Flag". YES will cause ; the program to normally run in the ; "archive" backup mode, unless it is ; toggled back off by the /A command ; line option. Since this is sort of ; a specialty mode, this byte should ; probably be left NO. INSREV: DB 23H ; DO NOT CHANGE. This allows the v2.3 ; INSTALL program to know that it can ; install this program (even though ; this is actually v2.4) QMFLAG: DB NO ; "Quiet Mode Flag". YES to have the ; program default to "quiet" mode, NO ; for normal "verbose" mode. In the ; quiet mode, the program will not ; display lots of churning numbers on ; the screen during operation. It ; corresponds to the /Q command line ; option which will toggle the default ; mode defined here. OVFLAG: DB NO ; "Overwrite Without Prompt Flag". If ; YES, existing files will be over- ; written without a prompt, NO to have ; the program always ask for confir- ; mation before doing this. The ; default mode defined here can be ; toggled here by the /O command line ; option. TDFLAG: DB NO ; "Turbo-DOS Flag". YES if running ; Turbo-DOS or other operating system ; which claims CP/M Plus compatibility ; but does not actually implement ; multisector I/O properly. Otherwise ; use NO here. TMFLAG: DB NO ; "Confirm (tag) Mode Flag". YES to have ; the program default to the "tag" ; mode of operation everytime it is ; invoked. Normally this should be ; NO and the mode can be invoked with ; the /C (alternate: /T) command line ; option. WBFLAG: DB NO ; "Warm Boot Flag". YES if if you want ; the program to perform a "warm boot" ; %as opposed to a return to the CCP ; each time it is run. Normally NO ; but included for people running ; systems who have reason to believe ; that the CCP will not remain resi- ; dent. (Note: 2k CCP size assumed). BFFLAG: DB NO ; "Bigger File Flag". YES means the ; program will NOT ask the question ; "Result file larger than original, ; keep it anyway?" (The file will ; always be kept). Normally NO. In ; v2.4 this question is only asked ; when the destination drive and user ; areas are identical. See NOTES24.DOC ; for more information. MAXDRV: DB 0FFH ; "Maximum Drive allowed, plus one". ; The default value here is "FF", ; effectively disabling the feature. ; If you so desire, you may enter a ; value here ("A" = 2, "B" = 3, etc.), ; in which case the program will in- ; tercept any references to higher ; drives (giving an "Invalid Drive" ; error). This feature has very ; little usefulness in practice. If ; you leave this feature deactivated, ; your operating system will gladly ; tell you about the invalid drive ; specification when it gets it. MAXUSR: DB 0FFH ; "Maximum User Code Allowed, plus one". ; Similar to above. Note however ; that the command line parser will ; reject all references to values ; above 15 no matter what. In this ; case, you don't get the "Invalid ; User Area" message, you will get ; "Invalid Argument". 31 user areas ; are NOT currently supported - about ; as useless as the above patch. SPARE: DB 0 ; Spare for future use. ;----------------------------------------------------------------------- ; ; Filetype Exclusion List (used by CRUNCH only) ; ; The next 30 bytes may contain up to 10 three-letter filename suffixes. ; When encountered, no attempt will be made to compress these files un- ; less explicitly specified. They ; NOTES24.DOC). The defaults are .ARC, .ARK, and .LBR. The first two ; are always compressed already. Any attempt at recompression will al- ; most certainly be a waste of time. While a .LBR file may or may not ; contain files that have already been compressed, usually they are. ; ; Notes: Some users may prefer to add .COM as object code files often ; do not compress well, sometimes not at all. On the other hand, some ; amount of compression will usually occur in cases where there is em- ; bedded text or other patterns, they may compress quite nicely. Micro- ; soft .REL files, which are bitwise encoded, are even less likely to ; compress. If they contains some embedded text, they likewise often do ; compress somewhat. SLR .REL files are not bit encoded and are more ; likely to show modest compression. Since the v2.4 program will now ; replace compression failures with straight copies automatically, the ; default configuration here leaves it to the program to try these files  ; out. ; ; Note it is NOT necessary to add ?Z? and ?Q? to the list as CRUNCH v2.4 ; will recognize squeezed and crunched files directly by reading their ; headers. Including these filetypes may save some time as by elimina- ; ting the necessity of even opening the files. On the other hand, it ; may prevent the compression of certain compressible files (notably ; assembly source with the .AZM suffix, which is unique to the public ; domain Z80 assembled named Z80MR.COM. In any event, final decisions ; are left to the the user. ; ;----------------------------------------------------------------------- ; ; File type exclusion list. Leave zeroes in unused locations!! ; ; | 1 | 2 | 3 | 4 | 5 | EXTBL: DB 'ARC','ARK','LBR',0,0,0,0,0,0 ; ; | 6 | 7 | 8 | 9 | 10 | DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; DB 0 ; This last zero MUST end up at location ; 135H ; ; end of user configuration area ;----------------------------------------------------------------------- ; END BO ,L}Z8 90)))))l| ڬUU!( Nq#CKNUY\flovy6Hmv{~&+/7;ADHLRV[_sv{ #'*.147:BFNSWnqu}&+/7;ADHLRV[_sv{ #'*.147:B"9"2!;y3]K!Ʊo\b!,_^#V* files PWWS .DOC: F6 B4 RESQ13 .COM: 06 8F Searches computer memory for text and allows you to RESQ1 .DOC 8 1 sav i t file Fo tex recover afte crash. SAVE-WS2.COM: 2B CA Recovers WordStar text from memory to a file after SAVE20 .DOC: 44 96 a system crash. SOFTCR .BAS: AA 04 MB& ------------------------------------------------------------------------ This document describes all of the one-byte patches which can be made to v2.4 of CRUNCH.COM and UNCR.COM. It should be noted ,however, that the great majority of users can COMPLETELY IGNORE this document if they so choose, as the "distribution" copies of CRUNCH and UNCR can be used immediately just the way they are. The only notable exception to this is for people running certain versions TTurboDOS, who MUST make the TurboDOS patch, or the programs may not operate properly. Regular users with CP/M 2.2, CP/M +, and ZCPR33 need not worry about that patch. ------------------------------------------------------------------------ All patches are itemized below. In each case, the patches can be made to either program for corresponding identical effects (except the "Big- ger File" patch and the "Archive mode" patch which have no significance on the UNCRunch program. Also note that UNCR does not use the filetype exclusion list described at the end of this document). CRUNCH/UNCR v2.3 was released with another program which provided prompted automatic patching of four of the options. The old v2.3 "CRINSTAL" IS compatible with v2.4 and will perform the same functions on the new v2.4 programs. This version, however, is being released with a short "overlay" file which can be edited with any word processor. This can then be merged with the "distribution" CRUNCH/UNCR, resulting in a "personalized" copy. This allows easy setting of ALL possible "patch bytes", and provides a mechanism for defining an user-configurable "filetype exclusion list". If you choose to use this method, you can pretty much ignore this docu- ment as well, as most of the text below is repeated next to each appro- priate question in the overlay file, CRUN-OVL.ASM. Simple two-step instructions for performing the assembly/merge are can be found at the beginning of that file. Bytes can of course be individually patched in a traditional manner using SID or equivalent. Below is a description of the bytes and their function: ------------------------------------------------------------------------ Byte Significance ==== ============ 10BH "Z3 Flag". Non-zero configures program for use on the ZCPR33 operating system. Non-zero values in either 109H or 10AH (Z3 "environment descriptor") will have the same effect, so running Z3INS on the programs precludes the necessity of making this patch. 10CH "Archive Mode Flag". If non-zero, the program will normally run in the "archive" backup mode, unless toggled back off by the /A command line option. Since this is sort of a specialty mode, this byte should probably be left in its default zero state. 10EH "Quiet Mode Flag". Patch to any non-zero value to have the pro- gram default to "quiet" mode i.e., the program will not display lots of churning numbers on the screen during operation. Cor- responds to the /Q command line option which will toggle the default mode defined by the patch. 10FH "Overwrite Without Prompt Flag". If patched to non-zero, exist- ing files will be overwritten without a prompt. Toggled by the /O command line option. 110H "Turbo-DOS Flag". If patched to non-zero, program will not at- tempt multi-sector I/O. Otherwise, the program will use it if the BDOS "Get System Version" call returns a value of 3.0 or higher. 111H "Confirm (tag) Mode Flag". If set to non-zero, the program de- fault to the "tag" mode of operation everytime its is invoked. Toggled by the /C (alternate: /T) command line option. 112H "Warm Boot Flag". If set non-zero, the program will perform a "warm boot", as opposed to a return to the CCP, each time it is run. This is normally not necessary, but is included for people running systems who have reason to believe that the CCP will not remain resident. 113H "Bigger File Flag". If set non-zero, the program will NOT ask the question "Result file larger than original, keep it anyway?". The assumed answer to the question will be "Yes". n v2.4, this question is only asked when the destination drive and user areas are identical. See NOTES24.DOC for more information. 114H "Maximum Drive allowed, plus one". The default value here is "FF", effectively disabling the feature. If you so desire, you may enter a value here ("A" = 2, "B" = 3, etc), in which case the program will intercept any references to higher drives (giving an "Invalid Drive" error). This feature has very little usefulness in practice. If you leave this feature deactivated, your operating system will gladly tell you about the invalid drive specification when it gets it. 115H "Maximum User Code Allowed, plus one". Similar to above. Note however that the command line parser will reject all references to values above 15 no matter what. In this case, you don't even get an "Invalid User Area" message, you will get "Invalid Argu- ment". 31 user areas are NOT currently supported. About as use'less as the above patch. 116H "Spare Flag". For future use. ------------------------------------------------------------------------ Filetype Exclusion List (CRUNCH only) The next 30 (decimal) bytes may contain up to 10 three-letter filename suffixes. When encountered, no attempt will be made to compress these files unless explicitly specified. They will be either copied or else ignored (see NOTES24.DOC). The defaults are .ARC, .ARK, and .LBR. The first two are always compressed already, so any attempt at recompression will almost certainly be a waste of time. While an .LBR file may or may not contain files that have already been compressed, most commonly they already are. Notes: Some users may prefer to add .COM, as object code files often do not compress well, sometimes not at all. On the other hand, usually some compression will be realized, and in cases where there is embedded text or other patterns, they may compress quite nicely. Microsoft .REL files, which are bitwise-encoded, are even less likely to compress, but may also compress when embedded text is present. SLR .REL files are not bit-encoded and are more likely to show modest compression. Since the v2.4 program will now replace compression failures with straight copies automatically, the default configuration here leaves it to the program to try these files out. NOTE: It is NOT necessary to add ?Z? and ?Q? to the list as CRUNCH v2.4 will recognize squeezed and crunched files directly by reading their headers. Including these filetypes may save some time by eliminating the necessity of even opening the files. On the other hand, it may prevent compression of certain compressible files (notably assembly source with the .AZM suffix which is unique to the free, public domain Z80MR assembler to indicate Z80 source code.) In any event, final decisions are left to the the user. Byte Default ==== ======= 117H 'ARC' } 11AH 'ARK' } Default exclusion filetypes 11DH 'LBR'  } 120H 0,0,0 } 123H 0,0,0 } 126H 0,0,0 } Room for up to seven additional user defined file 129H 0,0,0 } type exclusions. "?" char may be used. Must 12CH 0,0,0 } fill list cobsecutively. A zero must follow the 12FH 0,0,0 } last entry 132H 0,0,0 } 135H 00H !! If all ten are used, this byte MUST be zero! *** End of User Patchable Area *** ns ; are left to the the user. ; ;----------------------------------------------------------------------- ; ; File type exclusion list. Leave zeroes in unused locations!! ; ; | 1 | 2 | 3 | 4 | 5 | EXTBL: DB 'ARC','ARK','LBR',0,0,0,0,0,0 ; ; | 6 | 7 | 8 | 9 | 10 | DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; DB 0 ; This last zero MUST end up at location ; 135H ; ; end of user configuration area ;------------------------------------------------------------------isk). USAGE24 .DOC 748F 7K ver. 2.4 [UnCRunch/Crunch 3 of 6] NOTES24 .DOC EF7B 9K ver. 2.4 [UnCRunch/Crunch 4 of 6] CRUN-OVL.ASM E363 8K ver. 2.4 [UnCRunch/Crunch 5 of 6] PATCH24 .DOC 869A 8K ver. 2.4 [UnCRunch/Crunch 6 of 6] T ALTE OFF SET ALTE TO SELE A STOR diskf-"-"-SUBST(dfile,5,3)-"&mdiskno"-".DOC" TO malt SET ALTE TO &malt SET ALTE ON DO WHILE diskno="&mdiskno".AND. .NOT. EOF() IF diskno="000" IF dfile="FOG-DOS" ? "  This is the release date of the disk. CLAS6 FON {4FLETTERS u[*CFONT EXE \)$fCONVPRF EXE `$fDELFONTSHP Pn $DOWNLOADEXE %t^'BDSKSPACEEXE h,l%EFONT EXE \,JFANCFONTPRO tou(FFCONFIGEXE ]e@