ACE-128/64 Release 8 [August 8, 1993]. ------------------------------------------------------------------------------ 1. INTRODUCTION ACE is a program for the Commodore 128 and Commodore 64 that provides a command shell environment that is similar to Unix's. It is still in the development stage, but enough of it is complete to be useful. BTW, "ACE" means "Advanced Computing Environment" (well, advanced for the 128/64). This release contains only minor improvements over the previous release, including a custom character set that includes the standard Ascii characters that are not present in the Petscii set, and fixes to several bugs. The previous release had bugs in some inopportune places. The custom character set also replaces those ugly C-64 lowercase characters. This distribution consists of a boatload of files. System files: ace - the kernel bootstrapper; can be run from either 64 or 128 mode ace128 - the kernel for the 128 ace64 - the kernel for the 64 config - the configuration initializer sh - the command shell config.sys - the system configuration - this is data not an executable config.edit - configuration editor program (written in BASIC) ace-charset - character set - you can replace it with your own IYW Application programs: cp - file copier rm - file remover (scratcher) uuencode - uuencoder program uudecode - uudecoder program crc32 - crc-32 generator program wc - word counter program grep - grepper program (substring searcher) date - display current date and time fast - go into 2 MHz mode on the 128 slow - go into 1 MHz mode on the 128 read - read a file sort - file sorter mem - display available dynamic and transient program area memory tr - translate from one character set to another as - DEMO assembler: only tokenizer implemented vi - STUB "Zed" text editor: only prints a "hello world" message This file contains these binary programs in a uuencoded archive format. The uudecode program included here will decode this format of archive, but that is probably of no use to you unless you are able to Catch 22. You will have to use the uudecoder on your Unix system or use "uuxfer" for the C64. You may have to split the uuarchive up into separate files for uudecoding. Note that the "ace128" and "ace64" programs are functionally identical, except that one is set up for the 128 and the other for the 64. Thus, all of the appication binary programs will work with either "ace128" or "ace64". LOAD and RUN the "ace" program and it will load the correct kernel for your computer. You can no longer run the kernel programs directly. The Buddy assembler source code files are not included here, but I will Email them to anyone who asks for them. They are getting a bit bulky, about 200K. It has changed a little since the last release, including rearranging the memory usage. The current RAM0 memory utilization is as follows: $0000-$0eff = system storage (3.75K) $0f00-$0fff = kernel interface variables (0.25K) $1000-$12ff = system storage (0.75K) $1300-$1fff = Shell program (3.25K) $2000-$27ff = character set (2K) $2800-$5fff = ACE kernel and device drivers (14K) - unused space free $6000-$bfff = application area & stack (24K) $c000-$ffff = ROM and I/O, RAM (16K) - free ------------------------------------------------------------------------------ 2. USING THE SYSTEM When ACE starts, it loads and executes the command shell (among other things), gives you a prompt and waits for you to give it a command. A command has the following format: programname arg1 arg2 ... argN The programname can be any of the following built-in commands: echo - print the given arguments to stdout clear - clear the screen cls - same as "clear" directory - clear the screen and give a long-form directory listing dir - same as "directory" d - same as "directory", but no clear screen ls - give a multi-column short-form directory listing clsl - combination of "cls" and "ls" cd - change the current directory g - same as "cd" cat - display the named files to stdout type - same as "cat" t - same as "cat" exit - exit from the command shell back to BASIC x - same as "exit" dos - give a Commodore dos command to the current device (OPEN1,dv,15..) @ - same as "dos" path - set the path to search for searching for external programs sh - invoke the shell again as a sub-shell or programname can be for any of the external programs provided with this distribution. You'll have to forgive my personal taste in command names and abbreviations (until the "alias" shell feature is implemented). ------------------------------------------------------------------------------ The three Unix standard files are supported: stdin - where the default input comes from (usually the keyboard) stdout - where the default output goes to (usually the screen) stderr - where error messages are sent to (usually the screen) To temporarally redirect these standard file streams for the execution of a command, you can use the following incantations on a command line: outfile - redirect stdout - output put into file "outfile" >>outfile - redirect stdout - same as ">" but the output is appended to file >&errfile - redirect stderr - error output is put into "errfile" >>&errfile - redirect stderr - error output is appended to file "errfile" Do not put a space between the redirection symbol(s) and the file name. ------------------------------------------------------------------------------ Whenever you specify a file, you use a "pathname". Pathnames have the following optional parts: [device:][ramlink-directory:][filename] Device names are as follows: "0:" - Commodore device #0 - the keyboard - input only "1:" - Commodore device #1 - the cassette drive - never tried it myself "2:" - Commodore device #2 - the modem - but DON'T try this "3:" - Commodore device #3 - the screen - output only "4:" - Commodore device #4 - the printer - output only "a:" - Commodore device #8 - a disk drive - input/output "b:" - Commodore device #9 - a disk drive - if you have >1 drive ... "w:" - Commodore device #30 - the highest serial device, assumed to be disk ".:" - the "current" disk device CMD RamLink (or CMD HardDrive) directory names have the following formats: "//dir/:" - a subdirectory of the root directory "/dir/:" - a subdirectory of the current directory "4//dir/dir/ ... /dir/:" - a sub-path of the root directory of partition #4 "/dir/dir/ ... /dir/:" - a sub-path of the current directory And filenames have the usual Commodore format of 1 to 16 characters. Thus, the following are valid pathnames for files: 0: - the keyboard for input 4: - the printer for output b:file1 - "file1" on disk device #9 .:file1 - "file1" on the current disk device file1 - "file1" on the current disk device /dir1/file1 - "file1" in the RamLink subdirectory "dir1" a://dir1/dir2/:file1 - "file1" in the RamLink subdir "//dir1/dir2", device #8 And the following are valid pathnames for directories: a: - disk device #8 current directory .: - current disk device's current directory .://dir1/: - "dir1" off the root directory of the current RamLink device /dir1/dir2/: - subdirectory "/dir1/dir2" of the current RamLink device Note that a directory name always ends with a ":". To generate an EOF for keyboard input, enter a quotation character followed by a Control-D and RETURN on a blank line. You may append a ",p" or ",s" or ",u" to a filename to specify whether a PRG, SEQ, or USR file should be accessed/created. By default, ACE will create SEQ files. ------------------------------------------------------------------------------ Arguments that contain spaces must be put into quotes. Multiple quoted strings can be placed side-by-side to produce a longer string. The following are examples of valid command shell arguments: hello - hello 'hello' - hello "hello there" - hello there 'hello there' - hello there 'she said, "how'"'s that"'"'' to me.' - she said, "how's that" to me. Command shell arguments are separated by spaces or tab characters. ------------------------------------------------------------------------------ The "path" command sets or displays the current search pathnames for external programs. By default the paths to search are "a:" and ".:". "path" alone on a command line displays the current search path, and "path" followed by arguments will set the search path to the following arguments. ------------------------------------------------------------------------------ Unix-style wildcard expansion is supported. When you enter an argument with an asterisk in the filename component of the pathname, the command shell will automatically expand that name into an argument for each file in the specified directory that matches that pattern. The expanded arguments are then passed onto the command you are invoking as if you had typed them all in yourself. For example: ARGUMENT EXPANSION -------- --------- * file1 prog1,p prog2,p ch* chess,p chinese_checkers,p *.bin main.bin,p data.bin anagram.bin a*n anagram.bin an another_plan b:a*.bin b:main.bin,p b:data.bin b:anagram.bin c://games/:a*.bin c://games/:acrobat.bin,p c://games/:acrodata.bin You'll note that program files are expanded to include a ",p". If a pattern does not expand to anything, an error message is displayed and the shell command is not executed. You'll have to cursor-up and change the command. Your filename pattern can include only one asterisk (anywhere in the name). Some example uses of wildcard expansion with the provided utilities follow: cp b:* a: cp //games/c64/:chess*.bin somefile b://games/: wc *.asm *.c ------------------------------------------------------------------------------ 3. SYSTEM CONFIGURATION The program entitled "config.edit" is used for editing the system configuration. The system will be configured according to the data in the file "config.sys" every time it starts up. Note that "config.sys" is a loadable binary PRG file; it is not in text format and is not meant to be edited with a text editor. The following data are included in the "config.sys" file: OFF SIZ DESC --- --- ---- $80 1 ramlink device number [The kernel device number of your RAMLink. The default RL device number is 16.] $81 1 ramlink last logical bank allowed to use plus one (norm 255) [For the RAMLink memory partition (next section), the maximum number of 64K chunks that can be used for dynamic memory.] $82 4 real-time clock devices to check [4], $FF=unused [These are the kernel device numbers of CMD disk drive units that have a built-in real-time clock to check for the current time. If the first entry fails, then the second will be tried, etc., until the fourth entry is tried. If all devices fail to return a time, then the default date is used (next). A value of $FF in an entry means to try the next entry. ACE uses the TOD clock of CIA#1 to keep time. The date is stored in a regular memory field and is not rolled on a 24-hour TOD clock wrap-around.] $86 8 default date YY:YY:MM:DD:HH:MM:SS:TW [The default date to use if attempts to access the current time from CMD disk devices fail. Format is 24-hour BCD. All four digits of the year are given. The "TW" field means tenths of seconds in the high nybble and the day-of-week in the low nybble. For days of the week, 0 means "unknown", 1 means "Sunday", etc., and 7 means "Saturday". The factory-set value of this field is 12am, Friday, Jan 1, 1993.] $90 16 initial current directory string (default "a:") [Immediately after booting and before calling the shell, the kernel will do a change directory to the null-terminated string given here.] $A0 1 C128 bank1 start free page (norm $04) [This field and the next define the pages of RAM1 that ACE is allowed to use. This must include at least one page.] $A1 1 C128 bank1 last free page plus one (norm $ff) $A3 1 C128 bank0 last allowed free page plus one (norm $ff) [This is the highest page, plus one, on RAM0 that ACE is allowed to use. You can set this to protect a program that you wish to attempt to use with ACE (good luck). There is no minimum page that ACE is allowed to use; it takes whatever it wants below $4000.] $A5 1 C128 last internal bank allowed to use above 2, plus one (norm 8) [For expanded internal memory (a la TwinCities-128), this sets the high limit on the banks that ACE is allowed to use. A value of 2 means that ACE is not allowed to use it at all. There is no low limit on this because it caused too many programming problems.] $A6 1 C128 first REU bank allowed to use (norm 0) [This and the next field define the minimum and maximum (plus one) REU bank numbers that ACE is allowed to use. I included a minumum because of pleas about Zed having a minimum. If you set both min and max to $00, then ACE will leave the REU memory alone. Otherwise, ACE will auto-detect how much you have and will make use of as much REU memory as it can (note the default max is 255).] $A7 1 C128 last REU bank allowed to use plus one (norm 255) $A8 1 C128 top page of TPA (stack) (norm $c0) [This defines that page (plus one) of the top of the application program area (TPA). The bottom is $4000, so a top of $C000 gives apps 32K to play around in. $C0 is the maximum value this field can have, since the Commodore Kernal must (for this release) stay in context whenever ACE is in use. The top of this space is also used as the "argument stack" for applications.] $A9 1 C128 80-col screen color: RGBI code [This and the next four fields give the start-up colors of the 40 and 80-column screens. Note that RGBI codes are used, even for the VIC chip (for consistency). The factory defaults are light grey on black for 80 and light green on dark grey with a black border for the 40 (perhaps a bit icky).] $AB 1 C128 80-col cursor color: RGBI code $AC 1 C128 40-col screen color: RGBI code $AD 1 C128 40-col border color: RGBI code $AE 1 C128 40-col cursor color: RGBI code $C1 1 C64 last allowed page free plus one (norm $ff) [This gives the top page, plus one, that ACE is allowed to use on the 64. Don't set this lower than the top of the TPA area.] $C2 1 C64 first REU bank allowed to use (norm $00) [Like the C128 settings, you can set the usage for the REU memory.] $C3 1 C64 last REU bank allowed to use (norm $ff) $C5 1 C64 end expanded internal memory banks plus one (norm $04) [This field is currently ignored.] $C6 1 C64 top page of TPA (stack) (norm $c0) [Top of the TPA for the 64. You can set this between $40 and $D0.] $C7 1 C64 screen color: RGBI code $C8 1 C64 border color: RGBI code $C9 1 C64 cursor color: RGBI code $E0 32 initial shell path string (default "a:", ".:") [The paths to use to search for executable programs. Each directory name is a null-terminated string, and the list of paths is terminated by an empty string.] The offsets from $00 to $7F contain 32 four-byte fields, which will be used in the future to define the devices in the system. These fields will correspond to device names "@:", "A:", "B:", ..., "Z:", "[:", "\:", "]:", "^:", and "_:" (forgive the non-letter device names). The four fields will be defined as follows: 0 device driver type (0=Kernal non-disk, 1=Kernal disk, 2=console, 3=null, 4=ramdisk) 1 device primary address / whatever 2 device secondary address / whatever 3 flags / whatever ($80 for a disk will mean that it has a CMD Real-Time clock) This device data is not used yet, so you'll have to put up with the old "A:" is device 8, "B:" is device 9, etc. for the time being. To spare you the agony of editing this binary configuration manually, the BASIC program "config.edit" can be used instead. Run it from BASIC, not from inside of ACE. In fact, you should run this before running ACE the first time to set up the configuration. The program provides a full-screen interface. Move the cursor among the fields on each page and among the pages (10 of them) to set the values. All values are in decimal (except the strings). Then save the new configuration, exit, and run ACE. If you screw up the new "config.sys", the previous one will be available in "config.sys.bak". ------------------------------------------------------------------------------ 4. DYNAMIC MEMORY After you have configured ACE for your system, if you have a RAMLink, you will have to configure it for ACE, if you want to use RAMLink RAM or indirect REU access. The way that ACE detects these types of memory is via the RL-DOS partition table. For RAMLink RAM, ACE will check for partition number 31 being a Foreign Mode (Direct Access) partition with the name "rl-ram". If it is, then ACE will get the information for that partition to determine the size and start address (in RL memory). It will then check the limit for usage of RL-RAM in the "config.sys" file, and adjust the size it can use accordingly, before initializing the memory. To set up this partition on your RAMLink in the first place, refer to your RAMLink documentation and use the tools program provided with it. Using REU (Ram Expansion Unit) memory with ACE is pretty easy; you just make sure it is plugged into the computer when ACE is started. ACE will auto- detect the size of the REU and then check the configuration for limitiations on REU usage. If you have your REU plugged into your RAMLink in the memory port (rather than the pass-through port), and you have the Normal/Direct switch thrown to the Normal position, then your machine cannot access REU memory in the usual way. The only way to access it is to go through the RAMLink. ACE will look for partition number 30 being Direct Access and named "indirect-reu" for this purpose. If your Normal/Direct switch is in the Direct position, then ACE will use the REU directly and will ignore the "indirect-reu" partition. Do not change the position of the Normal/Direct switch while ACE is in action. The tricky part here is in configuring your RAMLink. You have to make sure that the memory allocated to the "indirect-reu" partiton is the memory of the REU. RAMLink memory starts from $000000 and goes up to $FFFFFF. REU memory will be at the very front of this memory (from address $000000), and the internal RAMLink memory will follow immediately after this. For example, I have a 512K REU and an 8 Meg RAMLink, so my REU memory covers at RL addresses $000000-$07FFFF, and my internal RL memory covers RL addresses $080000-$87FFFF. When partitioning the device, partitions are assigned memory from lower addresses to higher addresses. So, starting with an empty RL (no partitions), you must create the "indirect-reu" partition first, followed by any RL-DOS partitions and the "rl-ram" partition. You must also make sure that the "indirect-reu" partition is the same size as your REU. 512K is 2048 blocks. A note for deleting RL partitions: delete the ones that were last allocated first. You have the option of installing or not installing either of these partitions. If either is missing, ACE will simply work without it. You'll want to be careful about throwing the Direct switch if you don't have your REU "protected" with an "indirect-reu" partition. (with other REU applications also). One note about using RAMLink memory: ACE can transfer data from it at a rate of 16 microseconds/byte (63,920 bytes/sec), but the cost of starting each transfer is 1 millisecond (which is absolutely terrible). Comparatively, an REU will transfer at a rate of 1 microsecond/byte (1 Meg/sec), with a setup cost of about 60 microseconds. So, you'll get the best performance out of your REU by accessing it directly, rather than indirectly through a RAMLink. For internal memory, the 64 has only one 64K internal bank, whereas your 128 can have either 2, 4, or 8 (128K, 256K, or 512K). The internal 128 memory above 128K are accessed according to the articles in TwinCities-128 Magazine. Since I don't have expanded internal memory for my 128, I haven't been able to test the expanded internal memory code. Hopefully, someone will let me know if it doesn't work. If it doesn't, then set your configuration to disallow the use of the expanded internal memory. When ACE starts, it determines the size of internal and REU memory by writing special values in the same locations of each bank and looking for readback failures or wrap-arounds. However, after testing a bank, the original contents of the test locations are restored. So, the testing process is completely non-destructive. ------------------------------------------------------------------------------ 5. EXTERNAL PROGRAMS The following subsections give the low down on all of the executable programs provided with ACE, including the system programs and external user programs. ------------------------------------------------------------------------------ ace This is the main loader. It determines whether it is running on a 128 or a 64 and then loads and runs either "ace128" or "ace64" below. ------------------------------------------------------------------------------ ace128 ace64 These are the kernel programs. ------------------------------------------------------------------------------ config The system configuration program. This is not a user-executable program; it is loaded and executed while the system is bootstrapping. This program loads the "config.sys" and "ace-charset" files, initializes the dynamically allocated memory, and sets the date. ------------------------------------------------------------------------------ config.edit The configuration editor written in BASIC. LOAD and RUN it directly from BASIC. Full-screen interface. Same program runs on either a 128 or 64. ------------------------------------------------------------------------------ sh The command shell. ------------------------------------------------------------------------------ cp file destfile cp file ... directory A file copier. Operates like the Unix file copier program. If you give two filenames, will copy the first file to the second name. If a number of file names are given and the last argument is a directory name is given, will copy all of the files, retaining their names, into the given directory. If a file that you want to copy to already exists, then you will be prompted for whether you want to overwrite the file: yes, no, all, or quit. Answering Yes will overwrite the file, and continue onto the next file. Answering No will abort copying the current file and continue onto the next file. Answering All will have the same action as Yes, except that it will never ask your permission again; it will always assume Yes. Answering Quit will abort the entire copy operation without disturbing any more files. I would really like to get a "-r" (recursive) option working. Also a "-f" (force) option. ------------------------------------------------------------------------------ rm file ... File remover (scratcher). All named files will be deleted. ------------------------------------------------------------------------------ uuencode file ... A uuencoder. The uuencode program sends its output to stdout, so you will usually want to redirect stdout to a disk file. This output will be in Petscii characters, to work with the other text utilities. If you wish to have the output in Ascii, then you must run it through the "tr" program (below). ------------------------------------------------------------------------------ uudecode file ... A uudecoder. The uudecode program will accept either Petscii or Ascii files and is able to extract multiple files from one input file. Extracted files are put into PRG files. ------------------------------------------------------------------------------ crc32 file ... CRC32 generator. The numbers generated by this program may not match the CRC32 generated by other programs, such as PKZIP. However, it will always match itself. The program currently uses a brute-force bitwise algorithm, so it is relatively slow. A table driven algorithm will be faster. ------------------------------------------------------------------------------ wc file ... Word counter. Counts the lines, words, and characters in a file. To count lines, the program simply counts carriage returns (code 13 decimal). A word is any non-whitespace character(s) between whitespace characters. Whitespace is defined as the characters SPACE, TAB, and RETURN (codes 32, 9, and 13 decimal, respectively). If multiple files are specified, totals will be reported. ------------------------------------------------------------------------------ grep [-[i][v]] [^]substr[$] file ... The "i" and "v" flags are optional. "i" means to ignore the case of letters in comparisons and the "v" means to invert the search - display lines that do not match the pattern. The substring may begin with "^" which means only to check for the string at the beginning of a line, and may end with "$" which means only to check for the string at the end of a line. Both "^" and "$" may be used at the same time. There is no escape character, so you'll have problems trying to seach for the two anchor characters in the files. One or more files may be specified to be searched. If more than one file, then the name of the file will preceed each line printed that matches. Output goes to stdout. Some examples follow: grep hello hello_world.c grep -v '^$' file1 >file1.noblank grep -i crAiG Hack* grep -iv 'the$' file2 The first example simply searches for the string "hello". The second example removes all blank lines from the input file. The third example searches the Hack1, Hack2, Hack3, Hack4, and Hack5 files (for example) for the word "craig" which can be in any case (eg. "Craig" would match). The fourth example displays all lines that do not end with the word "the" in any case (eg. the second line of this paragraph would be omitted). Some limitations of the program are: only the first 2048 characters of a (really long) line will be considered, lines may not contain the character code $00, and the last line of the file must end with a RETURN (or it will be ignored). ------------------------------------------------------------------------------ date Display the current date. The format is: "YYYY/MM/DD-HH:MM:SS.T", in 24-hour time format. This command will be extended to display in "human mode" (eg. "Tue-13-Jul-1993 05:49:53 pm") and to allow you to set the date. Currently, the date will only be set when the system starts up. ------------------------------------------------------------------------------ fast Switch to FAST (2 MHz) mode. Just does a simple poke. ------------------------------------------------------------------------------ slow Switch to SLOW (1 MHz) mode. Just does a simple poke. ------------------------------------------------------------------------------ read file ... File reader. Useful only for testing how long it takes to read a file. No output is generated. ------------------------------------------------------------------------------ sort [-[i][v]] [+column] file ... Sort utility. Currently uses a sucked-out insertion sort algorithm. Will be extended to use the "Approximation Sort" algorithm, which has between O(N) and O(N^2) performance (close to O(N) for random data). Makes use of dynamically allocated memory to store large files internally. The "i" and "v" flags are optional. "i" means to ignore case of letter characters in comparisons to determine order. The "v" flag means to inverse the order of sorting (put into descending order rather then the usual ascending order). The +col field is optional, and if present, gives the character position of the start of the sorting key. The default starting position is 1 (the beginning of the line). A TAB character will be interpreted as any other character. If multiple files are specified, they will all be merged together and then sorted as a group. Sorted output goes to stdout. If the program dies in the middle of its operation (eg. out of memory), all files owned by the program (process) will be closed and all memory allocated to the program will be reclaimed. This is also true for all other external programs, since this is implemented in the kernel. ------------------------------------------------------------------------------ mem Display bytes of dynamically allocated memory that are still free. ------------------------------------------------------------------------------ tr [-fromset2toset] file ... Translate files from one character set to another. Character sets supported are: Petscii, Ascii-CrLf (MS-DOS), Ascii-Lf (Unix), Ascii-Cr, and SpeedScript. "fromset" and "toset" in the synopsis above may be any of: "p" (Petscii), "a" (Ascii-CrLf), "al" (Ascii-Lf), "ac" (Ascii-Cr), "s" (SpeedScript), "c" (Commodore == Petscii), "u" (Unix == Ascii-Lf), or "m" (MS-DOS == Ascii-CrLf). The the character set specifiers are separated by the character "2" (meaning "translate to"). If the translation specification argument is missing, the default of translating from Ascii-CrLf to Petscii is used. Input is taken from the files and all output goes to stdout in order. Example: tr -s2u file1 >file1.unix Translate from SpeedScript format to Ascii-Lf (Unix) format the contents of "file1" and put into file "file1.unix". The name "tr" is used (a Unix utility) because the functionality of this program will grow to include that of the Unix "tr" utilitiy. ------------------------------------------------------------------------------ as file DEMO assembler still under development. Only the tokenizer is implemented. It will scan through the given file and spit out reams of tokens in the example formats: i:hello,= c:= n:87125 s:Now is the time where the "i" line gives an identifier and the character following it, the "c" line gives an uninterpreted character, the "n" line gives an interpreted number (it accepts 32-bit numbers in decimal, hexadecimal, and binary), and the "s" line gives a character string that was enclosed in quotes. The tokenizer is designed to be very efficient (although it currently can only operate as fast as the Commodore Kernal CHRIN function). Plans for this project include a one-pass assembler that will use dynamic memory to be able to do very large assembles, with full support for 32-bit quantities, conditional assembly, macros, and eventually linkable code. ------------------------------------------------------------------------------ vi [-r] file ... STUB of ZED: it only prints out a "hello world" message. It is called "vi" here (to use a grotesque misnomer) to avoid name conflicts since you may already have a file named "zed" in your ACE directory (like I do). The new ACE-Zed will have more fundamental features than the original Zed-128 program, including auto-wrap lines, unlimited line length, horizontal scrolling to 240 characters, character-oriented commands rather than line-oriented, and multiple file buffers with split-screen disply. Plus, it will also work on the 40-col screen of the 128 and on the C-64. Big plans. ------------------------------------------------------------------------------ 6. LATER, DUDE To-Do List: - Make a ramdisk for use with ACE. RAMDOS is not compatible with ACE-128. Such a ramdisk should be able to rip through a file at about 500K/sec with an REU. We have the technology. ^^^^^^^^ - Make an "autoexec.sh" type of mechanism. - Fix up the shell script features of the command shell. - More utility programs. - More on ACE-Zed and the assembler. This system is Public Domain Software. It is not required, but it would be appreciated if people who use this software regularly would send a postcard featuring a picture of some local attraction/scene to the following snail-mail address. Please don't send any money (unless you really want to). Craig Bruce 139 Candlewood Cr. Waterloo, Ontario Canada, N2L 5M7 If you have questions, comments, suggestions, or bug reports, you can contact me at the following e-mail address: -Craig Bruce csbruce@neumann.uwaterloo.ca "The Thought Police: To censor and protect." ------------------------------------------------------------------------------ 7. UUENCODED FILES The crc32's for the included files are as follows: crc32 = 3206916258 for "ace,p" crc32 = 181573020 for "ace128,p" crc32 = 906861648 for "ace64,p" crc32 = 1018335291 for "config,p" crc32 = 2877420198 for "sh,p" crc32 = 634908010 for "config.sys,p" crc32 = 3785669992 for "config.edit,p" crc32 = 1746268933 for "ace-charset,p" crc32 = 3235493563 for "cp,p" crc32 = 3377395859 for "rm,p" crc32 = 1571752301 for "uuencode,p" crc32 = 227133298 for "uudecode,p" crc32 = 2377741993 for "crc32,p" crc32 = 3049044244 for "wc,p" crc32 = 1394194648 for "grep,p" crc32 = 3117606270 for "date,p" crc32 = 4046758908 for "fast,p" crc32 = 235171651 for "slow,p" crc32 = 1417575457 for "read,p" crc32 = 1256206263 for "sort,p" crc32 = 1093176211 for "mem,p" crc32 = 1251208555 for "tr,p" crc32 = 3542200335 for "as,p" crc32 = 3659651453 for "vi,p" The uuencoded data is as follows: begin 640 ace M`1P9'&0`BR!21[(S,C(X(*<@GB`Q,#(T,``F'&X`1++"*#$X-BD`7AQX`%-9 MLC$R."`Z($Y5)+(B,3(X(B`Z((L@N"@Q*;*X*#`I(*<@4UFR-C0@.B!.522R M(C8T(@"''((`F2*3(CO'*#$T*3LBPR,S(R.``G';X`DR`B04-%-C0B+$0L,0`Q'<@`B2`Q,#``1AW2`/X;(")! .0T4Q,C@B+%4H1"D````` ` end begin 640 ace128 M`"A,L2A,0RM,M2Q,Q"Q,NBU,(RM,=S!,]BU,+RY,/BY,8"Y,H2Y,M2Q,)R], M+S!,WC!,72A,'#%,/C-,ZC-,"#1,ES1,6#=,Z3A,:#I,Q#%,Y3%,\S%,0#5, MAC5,-CH````````````````````````````````````````````````````` M``````````````````````````````````````````````````````````"I M`$@HJ0Z-`/],QS5XH@*U`)T`":D`E0#HX)"0\JFKH"J-%`.,%0.IKZ`JC18# MC!<#J7Z@*HT8`XP9`Z)_J0"=``_*$/JENLD(L`*I"(T2#ZD`()#_J0"B`"!H M_R#G_UA@J0"N$@^@`""Z_ZD&HEJ@*2"]_ZD`H@"@8"#5_Y`!8*D`H`B%`H0# MJ5V@-H4$A`6I`*`-A0:$!Z(^J5'P`>B&"*F`A0D@`&!@0T].1DE'H@^I_YU> M*,H0^JD`C;`HK1(/&&DYC0`,J3J-`0RI`(T"#*D`H`R-%`^,%0^I`(VO*""^ M*:E1H#R-#@^,#P^B'[W@")U1/,H0]ZE1H#N-$`^,$0^I`(U1.ZD!C1L/8*FL MC0(/J>&-`P^I`*RH",#`D`*@P(T,#XP-#XT(#XP)#ZD`H``@#RJI`*``(`\J MJ?^@`"`/*JG_H/\@#RJI_Z#_(`\JK0@/K`D/C0H/C`L/8*HXK0@/Z0*-"`^% M8*T)#^D`C0D/A6&8H`&18(B*D6!@H@*]``F5`.C@D)#VJ0"-`/]XJ66@^HT4 M`XP5`ZD#H+"-%@.,%P.I0*#ZC1@#C!D#J0!(*&`@FSH@+RJI%HTL"HT8T*D` MC0`<(-913+=-`-BI?XT-W:P-W3`?(#WV(.'_T!<@+RH@5N`@">$@`,"I`(T` M'"#646P`"DPS_]A,9?K8H@"U`)T`!,K0^"`O*JD`C0`<3`.PH`"Q^O`FH`&Q M^LDZT!Z@`+'ZH`+)+M`&K1(/3/8JR4&0!>DY3/8J*0],]BJM$@^@`&#NL"BM ML"@I?Z(/W5XH\/'*$/BHH@"]7B@P">C@$)#VJ8(X8*T;#YV>*)@88"#%*DBB M`,D(D`*B_Z#_R+'ZT/N(L?J@`,DZT`*@_VA@A8(@]RJ0`6"=7BBI`)V.*(:` M(,4JA(&F@)UN*(6$H`#)!-`"H`?)")`>H`*B#[U>*#`0O6XHQ830"9C=?BC0 M`\C0Z-``^F@+U>*!@@P_^F@*G_G5XH.*G_8*6`&&`@$BRP"B!3 M+`A((*DL:"A@2""I+&BJH`^I_R"Z_ZD`(+W_(,#_D`.-``]@HO\@R?^P%*(` MO5$]\`@@TO^P".C0\R#,_QA@C0`/2"#,_V@X8`"B_R#&_[#N(,__L.DI#XU2 M+`H*;5(L"HU2+"#/_[#6*0\8;5(LC5(L(+?_*8#P!:D%.+#!(,__L+S)#=#K M(,S_K5(LR3[0!ZD$C0`/.&#)%)`#C0`/8#BI_R##_Y`#C0`/8*J]7BA(J?^= M7BAH&$S#_X6`A(&&AJ7ZI/N%@H2#J0"%A(6%O8XHT%.@`+UN*,D`\%#)")`" MH/^$A[U>**H@QO^0`6"EA,6`I87E@;`C(,__H`"1@N:"T`+F@^:$T`+FA22' M$-\@M_\I0/#8IH:=CB@@S/^EA*2%HO\88*D`H``88*6$Q8"EA>6!L.@@6BV@ M`)&"YH+0`N:#YH30`N:%R0WPT4PV+:VO*/`-KJXH[JXHSJ\HO0`+8*(`CJXH M(,__R:#0`JD@G0`+Z,D-T.\@TO^.KRC@`M`2K0`+R2#0"ZD-C0`+SJ\H3%HM MX`/0N*T`"\DBT+&M`0O)!-"J:&BI`(VO*$PP+86`A(&E^J3[A8*$@[U>**H@ MR?^0`6"E@`6!\!N@`+&"(-+_D`%@YH+0`N:#I8#0`L:!QH!,T"T@S/\88"#% M*LD(L`2I@SA@A8$@]RJ0`6"=7BBE@9UN**D`G8XHJ0^=?BB&@*D`C5$]H@`@ MO2N0`XT`#Z6`8*J]7BA(J?^=7BAH.$S#_X6`A(&]7BBJ(,G_D`2-``]@H`"Q M@/`&(-+_R-#V(,S_&&"%@(2!O5XHJB#&_Y`$C0`/8*``(,__R0WP"I&`R""W M_RE`\.^I`)&`(,S_H`"Q@"D/"@IQ@`J%@\BQ@"D/98,88"#%*H2"R0BP!*F# M.&"%@2#W*I`!8)U>**6!G6XHJ0"=CBBI`)U^*(:`J22-43VI,(U2/:D`C5,] MH@(@^BX@O2N0`6"F@+U>**H@QO\@S_\@S_\@S/^E@!A@I(*Q^M`!8*(!L?J= M43WP!,CHT/7*J3K=43WP!.B=43WHJ2J=43WHJ0"=43U@O5XHJB#&_Y`#J0!@ M(,__A80@M_\I0-`'(,__!830!B#,_Z(`8"#/_X6`C5T/(,__A8&-7@\&@":! MJ0`JA8(XJ0#E@(U<#ZU=#^6!C5T/K5X/Y8*-7@^I`(UN#XUM#R#/_[!Z))!P M=LD@\//)$O#OR2+0=*(`(,__L&,DD'!?R2+P!IUN#^C0[:D`G6X/CFT/(,__ MR2#P^:)@CFP/R2K0"ZUL#PD(C6P/(,__H@.@#$S<+R#/_YE<#\C*T/:M:`_) M1-`+K6P/"9"-;`],#C#)4-`5K6P/"1"-;`],#C"-``\@S/^B`#A@(,__R0#P M$\D\T`BM;`\IWXUL#R#/_\D`T/D@S/^B_QA@O5XH2+E>*)U>*&B97BB];BA( MN6XHG6XH:)EN*+U^*$BY?BB=?BAHF7XHO8XH2+F.*)V.*&B9CBB]GBA(N9XH MG9XH:)F>*!A@A8"$@2#%*H6$JAB89?J%@J7[:0"%@ZD`H``@NO^@`+&"\`/( MT/F8IH*D@R"]_ZD`IH"D@2#5_X:`A(&0&DC)!?`)I83)")`#(`(L:(T`#Z6$ MJ0"@`#A@I83)")`%(`(LL.JE@*2!8"#%*H6`J5.-43VI.HU2/:(!L?K)+_`" MH@*Q^IU1/?`$R.C0]:D`G5$]I8`@$BRP#2`M++`#(%,L"""I+"A@J0"%@R#% M*H2"A8"I0XU1/:E0C5(]H@*Q^LDPD`O).K`'G5$]Z,C0[^`"\!^I`)U1/82! MI8`@$BR0`6"I_X6#("TLL%\@4RRP6J2!J42-4CVB`K'ZG5$]\`C).O`$R.C0 M\>`"\!ZI`)U1/:6#,`BE@"`2+)`!8"`M++`H(%,LL",@J2RE@(T2#QAI.8T` M#*DZC0$,H@*D@K'ZG0`,\`3HR-#U8""I+#A@O6XHR0/0""#M_^C(J0!@R0#P M]*)0H$+)"+`#J0%@J0)@(.'_\`(88*D`C0`/.&#)"I`"J0J%C#BI"N6,A8R@ M`+4`F8(`Z,C`!)#UH@2I`)6&RA#[A8N@('CX!H(F@R:$)H6B!+6&=8:5ALH0 M]XC0ZMA8J0J%C:(`H`"UAB!-,NC@!9#VJ0"1@&!(2DI*2B!8,F@I#\:-\`W% MB]`)QHPP`6"I(-`$"3"%BY&`R&"B`+V>,IT``NC@H)#U8*(`J0"=``+HX*#0 M^&`_?[__O_^__S\$!`0$%!0D)`2$CZ3\N94RC0;5N8PRC0#_H`"Q^I4`Z,C$ MCY#VJ0Z-`/\88(2/I/RYE3*-!M6YC#*-`/^@`+4`D?KHR,2/D/:I#HT`_QA@ MIOR]E3*-!M6]C#*JB/`-C@#_L?J-`?^1_HC0\XX`_['ZC0'_D?ZI#HT`_QA@ MIOR]E3*-!M6]C#*JB/`-C0'_L?Z.`/^1^HC0\XT!_['^C@#_D?JI#HT`_QA@ MI?WP.,D"D`70.4P``HP'WZ"1I?R-!M^.`M^I`(T#WXT(WZ7ZC03?I?N-!=^M M,-"B`(XPT(P!WXTPT!A@J82-``\X8*F1C9K9@SK)DSC0?>C`C>J0"-"MZ-$-X@'OX88*7]\(S)`I`% MT`M,(P*,!]^@D$Q0,ZF03(,S`````*;]\!3@`K`%HI%,$3709,``T"FHT`48 M8$QZ,Z;\X`#P`TQ&`HX!_XCP!['ZD?Z(T/FQ^I'^J0Z-`/\88(T$-(P%-*7[ MC08TI?^-!S2M!33P#J``(",TYOOF_\X%--#RK`0T\`,@(S2M!C2%^ZT'-(7_ M&&"BD8Z7,XV8,XR9,Z7^I/^-FC.,FS-,G#,`````IOWP%.`"L`6BD$P1-=!F MP`#0*:C0!1A@3'HSIOS@`/`#3',"C@'_B/`'L?Z1^HC0^;'^D?JI#HT`_QA@ MC9,TC)0TI?^-E32E^XV6-*V4-/`.H``@LC3F^^;_SI0TT/*LDS3P!:;\(+(T MK94TA?^MEC2%^QA@HI!,?32-!]^,"-^E_J3_C0+?C`/?I?JD^XT$WXP%WZ7\ MC0;?K##0J0"-,-".`=^,,-`88(6`A(&@`[D6#Y&`B!#XH`2M"]P0"2D?>/@8 M:1+86,D2T`*I`,DDT`*I$I&`R*T*W)&`R*T)W)&`R*T(W`H*"@H-&@^1@&"% M@(2!H`.Q@)D6#X@0^*`$L8#)$Y`)>/@XZ1+86`F`C0O-&@]@`*F3(-+_J0X@TO^B`+U=-O`&(-+_Z-#U(+TH MK1(/C<8U('$R(!(IL$L@8"D@DC8@E#JI6J`VA?J$^ZD`H!,@$BBP,:F0H`B% M^H3[(#,HJ5>@-H7ZA/NI4B`#**E4H#:%^H3[J5<@`RBI5R`#**D`H!,@6BBI M`"`&**D!(`8HJ0(@!BBMQC6%NB!_,DQD*C,Z`#`Z`%-(`,'#Q2TQ,C@@RT52 M3D5,(#`N-3(N,#`@+2##T\(@,#@MP55'+3DS#0T`````````````````H@"@ M`(Z)-HZ(-KT`#9T`#M`!R.C0]*D`H`*-AC:,AS:I`*(`G8HVZ.`(D/@88``` MS88VT`;,AS;0`6"-P#:,P3:MB#;P#ZV&-JR'-B`2-R`%-R`_**W`-JS!-HV& M-HR'-B`2-R`%-R`\**D`C8@VC8DV8*D`H`Z%_H3_J0"@`6"%_(3]J0"B_X7Z MAOO``O`!8*7\T`NM*`^L*0^%^H3[8,D!T`BI`*PJ#TPM-ZD`H`1,+3<````` M`.HW_C<````````1."4XC4.13>, M1C>M13?-1C?P`K!7KD4WO8HV\`?-1S?P*Y`IK44W"JJ]2#>%^KU)-_`:A?L@ MUC>0&:Y%-[V*-O`%S4=BC;N13=,>#>F_:7\W14ZL`.=%3K='3J0 M`YT=.AA@;/H`J8"-``^I`(7ZA?N%_(7].&"I`87]K2T/KBL/K"P/(#LXC2T/ M8*D"A?VM)P^B`*PD#R`[.(TG#V"I!H7]K34/KBL/K#0/(#LXC34/8*D'A?VM M,0^B`*PP#R`[.(TQ#V````"-.#B%_(XY.(PZ..PZ.)`!8*7\I/T@PC:L1S<@ M?CBP"JD`A?J&^Z7\&&#F_*7\S3HXD`6M.3B%_*7\S3@XT-(X8```KHDVO0`. M\!#H\`N]``[0^(Z)-DR6.#A@C'PXX`#P!\JL?#CH\/"]``[0]8C0]8Y].*Q\ M.*T;#YT`#LJ(T/GH[(DVT`>L?3C(C(DVJ?^-B#8XK1T/[7PXC1T/K1X/Z0"- M'@^P`\X?#QA@``"-Z#C)`-`#3'TYI?W)`-`%J81,?SFIA:;ZT'NE^XWG.!AM MZ#B0!:F%3'\YI?RD_2#"-JT;#Z[G.*SH.-T`#O`%J89,?SGHB-#RKN@XD`*I M`)V*-ABM'0]MZ#B-'0^0".X>#]`#[A\/&&"-``\X8`"B`+T5.MT=.O`"L!.. MA#F]%3J\'3JJK80Y(*TYKH0YZ.`(D-Y@````CJHYC:LYC*PYK:HYK*LYS:PY M\`*P"R#"-B#/.>ZJ.=#H8*``H@"M&P],W#GH\!'=``[0^*D`G0`.R*T;#TS9 M.<``\"*I`(V)-JZ'-IV*-JG_C8@VF!AM'0^-'0^0".X>#]`#[A\/&&`````` M````````````````H@>I_YT5.JD`G1TZRA#S8`"%@(2!("4ZK3:!YH/*T/*I#HT`_U@@S3I@ MJ0"@,"`K.ZD`H""%@(2!H@"&@JD?C0#6H`"Q@"P`UA#[C0'6R,`(D/&I`"`= M.Z(>J0<@'SL8I8!I"(6`D`+F@>:"T,]@HA@@13LI?R`?.V"B'XX`UBP`UA#[ JC0'68*(2C@#6+`#6$/N,`=;HC@#6+`#6$/N-`=9@C@#6+`#6$/NM`=9@```` ` end begin 640 ace64 M`"A,1RE,U2M,1RU,5BU,3"Y,M2M,"3%,B"Y,P2Y,T"Y,\BY,,R],1RU,N2], MP3!,<#%,72A,KC%,?S-,(#1,/C1,T#1,D3=,(CE,H3I,5C),=S),A3),?#5, MPC5,;SH````````````````````````````````````````````````````` M``````````````````````````````````````````````````````````"P M`TS#_Z:8RC`?W5D"T/CP`0"DF(BY60*=60*Y8P*=8P*Y;0*=;0+&F!A@`$BE MFLD#\`1H3-+_:,D+L/C)!]`BJ16-&-2I"8T%U*D`C0;4J3"-`=2I((T$U*DA MC034J0<88,D)T""ETRD'C=PH.*D([=PHCMPHJJD=(-+_RM#ZKMPHJ0D88,D* MT`FI$2#2_ZD*&&!,TO^I`$@HJ7:%`4P#-GBB`K4`G0`)J0"5`.C@D)#RJ3J@ M*XT4`XP5`ZD^H"N-%@.,%P.I!:`KC1@#C!D#HG^I`)T`#\H0^J6ZR0BP`JD( MC1(/J0`@D/\@Y_]88*D`KA(/H``@NO^I!J+HH"D@O?^I`*(`H&`@U?^0`6"I M`*`(A0*$`ZF6H#:%!(0%J0"@#84&A`>B/*G-\`'HA@BI0(4)(`!@8$-/3D9) M1Z(/J?^=7BC*$/JI`(VP**T2#QAI.8T`#*DZC0$,J0"-`@RI`*`,C10/C!4/ MJ0"-KR@@3"JIS:`[C0X/C`\/HA^]X`B=S3O*$/>IS:`ZC1`/C!$/J0"-S3JI M`8T;#V"IK(T"#ZGAC0,/J0"LQ@C`T)`"H-"-#`^,#0^-"`^,"0^I`*``()TJ MJ0"@`""=*JG_H``@G2JI_Z#_()TJJ?^@_R"=*JT(#ZP)#XT*#XP+#V"J.*T( M#^D"C0@/A6"M"0_I`(T)#X5AF*`!D6"(BI%@8*("O0`)E0#HX)"0]JEWA0%X MJ3&@ZHT4`XP5`ZEFH/Z-%@.,%P.I1Z#^C1@#C!D#J0!(*&`@O2JI%HT8T*D` MC0`(($*F3'2D`-A(BDB82*E_C0W=K`W=,!\@O/8@X?_0%R"]*B`5_2"C_2`8 MY:D`C0`(($*F;`*@:*AHJFA`V$PQZMBB`+4`G0`$RM#X(+TJJ0"-``@@0J9, M9OZ@`+'Z\":@`;'ZR3K0'J``L?J@`LDNT`:M$@],B"O)09`%Z3E,B"LI#TR( M*ZT2#Z``8.ZP**VP*"E_H@_=7BCP\*#`)Z.`0D/:I@CA@K1L/ MG9XHF!A@(%**D`G8XHAH`@5RN$@::`G6XHA82@`,D$T`*@!\D(D!Z@`J(/O5XH,!"] M;BC%A-`)F-U^*-`#R-#IRA#HIH"8G7XHH@"D@;'ZG0`*\`3(Z-#UI83)")`7 MX`#0!*F!.&"I+)T`"NBE@IT`"NA,3RRB`(JB`*`*(+W_IH"]7BA(O7XHJ+UN M**IH(+K_(,#_L`NEA,D(D!P@E"R0%XT`#Z:`O5XH&""Q**:`J?^=7B@XJ?]@ MI8`88""D++`*(.4L"$@@.RUH*&!((#LM:*J@#ZG_(+K_J0`@O?\@P/^0`XT` M#V"B_R#)_[`4H@"]``KP""#=*+`(Z-#S(,S_&&"-``]((,S_:#A@`*+_(,;_ ML.X@S_^PZ2D/C>0L"@IMY"P*C>0L(,__L-8I#QAMY"R-Y"P@M_\I@/`%J04X ML,$@S_^PO,D-T.L@S/^MY"S)/M`'J02-``\X8,D4D`.-``]@.*G_(+$HD`.- M``]@JKU>*$BI_YU>*&@83+$HA8"$@8:&I?JD^X6"A(.I`(6$A86]CBC04Z`` MO6XHR0#P4,D(D`*@_X2'O5XHJB#&_Y`!8*6$Q8"EA>6!L",@S_^@`)&"YH+0 M`N:#YH30`N:%)(<0WR"W_RE`\-BFAIV.*"#,_Z6$I(6B_QA@J0"@`!A@I83% M@*6%Y8&PZ"#L+:``D8+F@M`"YH/FA-`"YH7)#?#13,@MK:\H\`VNKBCNKBC. MKRB]``M@H@".KB@@S__)H-`"J2"=``OHR0W0[R#=*(ZO*.`"T!*M``O)(-`+ MJ0V-``O.KRA,["W@`]"XK0`+R2+0L:T!"\D$T*IH:*D`C:\H3,(MA8"$@:7Z MI/N%@H2#O5XHJB#)_Y`!8*6`!8'P&Z``L8(@W2B0`6#F@M`"YH.E@-`"QH'& M@$QB+B#,_QA@(%**6!G6XHJ0"=CBBI#YU^ M*(:`J0"-``JB`"!/+)`#C0`/I8!@JKU>*$BI_YU>*&@X3+$HA8"$@;U>**H@ MR?^0!(T`#V"@`+&`\`8@W2C(T/8@S/\88(6`A(&]7BBJ(,;_D`2-``]@H``@ MS__)#?`*D8#((+?_*4#P[ZD`D8`@S/^@`+&`*0\*"G&`"H6#R+&`*0]E@QA@ M(%#P:`)H&I`"J%@CBI`.6`C5P/K5T/Y8&-70^M7@_E@HU>#ZD`C6X/ MC6T/(,__L'HDD'!VR2#P\\D2\._)(M!TH@`@S_^P8R20<%_)(O`&G6X/Z-#M MJ0"=;@^.;0\@S__)(/#YHF".;`_)*M`+K6P/"0B-;`\@S_^B`Z`,3&XP(,__ MF5P/R,K0]JUH#\E$T`NM;`\)D(UL#TR@,,E0T!6M;`\)$(UL#TR@,(T`#R#, M_Z(`.&`@S__)`/`3R3S0"*UL#RG?C6P/(,__R0#0^2#,_Z+_&&"]7BA(N5XH MG5XH:)E>*+UN*$BY;BB=;BAHF6XHO7XH2+E^*)U^*&B9?BB]CBA(N8XHG8XH M:)F.*+V>*$BYGBB=GBAHF9XH&&"%@(2!(%=``KHR-#O MX`+P'ZD`G0`*A(&E@""D+)`!8*G_A8,@ORRP7R#E++!:I(&I1(T!"J("L?J= M``KP",DZ\`3(Z-#QX`+P'JD`G0`*I8,P"*6`(*0LD`%@(+\LL"@@Y2RP(R`[ M+:6`C1(/&&DYC0`,J3J-`0RB`J2"L?J=``SP!.C(T/5@(#LM.&"];BC)`]`( M(.W_Z,BI`&#)`/#THE"@0LD(L`.I`6"I`F`@X?_P`AA@J0"-``\X8,D*D`*I M"H6,.*D*Y8R%C*``M0"9@@#HR,`$D/6B!*D`E8;*$/N%BZ`@>/@&@B:#)H0F MA:($M89UAI6&RA#WB-#JV%BI"H6-H@"@`+6&(-\RZ.`%D/:I`)&`8$A*2DI* M(.HR:"D/QHWP#<6+T`G&C#`!8*D@T`0),(6+D8#(8&!@<'"$CZ3\"'BY!3.% M`:``L?J5`.C(Q(^0]JEVA0$H&&"$CZ3\"'BY!3.%`:``M0"1^NC(Q(^0]JEV MA0$H&&"F_`AXO04SA0&(\`>Q^I'^B-#YL?J1_JEVA0$H&&"F_`AXO04SA0&( M\`>Q_I'ZB-#YL?Z1^JEVA0$H&&"E_?`MR0*0!=`N3`KC`C>J0"-"MZ-$-X@'OX8 M8*7]\(S)`I`%T`M,)3.,!]^@D$R1,ZF03+DS`````*;]\!3@`K`%HI%,3370 M9\``T"RHT`488$RP,Z;\X`#P`TP\`@AXHG"&`8CP!['ZD?Z(T/FQ^I'^J7:% M`2@88(TZ-(P[-*7[C3PTI?^-/32M.S3P#J``(%DTYOOF_\X[--#RK#HT\`,@ M632M/#2%^ZT]-(7_&&"BD8[-,XW.,XS/,Z7^I/^-T#.,T3-,TC,`````IOWP M%.`"L`6BD$Q--=!IP`#0+*C0!1A@3+`SIOS@`/`#3%H""'BB<(8!B/`'L?Z1 M^HC0^;'^D?JI=H4!*!A@C/@8:1+86,D2T`*I`,DDT`*I$I&`R*T*W)&`R*T)W)&` MR*T(W`H*"@H-&@^1@&"%@(2!H`.Q@)D6#X@0^*`$L8#)$Y`)>/@XZ1+86`F` MC0O-&@]@`*F3(-THJ0X@W2BB M`+V6-O`&(-THZ-#U(%(IK1(/C0(V(`,S(*`IL$@@[BD@RS:IDZ`VA?J$^ZD` MH!,@$BBP,:F0H`B%^H3[(#,HJ9"@-H7ZA/NI4B`#**F-H#:%^H3[J5<@`RBI M5R`#**D`H!,@6BBI`"`&**D!(`8HJ0(@!BBM`C:%NB`$,TSQ*C,Z`#`Z`%-( M`,'#Q2TV-"`@RT523D5,(#`N-3(N,#`@+2##T\(@,#@MP55'+3DS#0T````` M````````````H@"@`(["-H[!-KT`#9T`#M`!R.C0]*D`H`*-OS:,P#:I`*(` MG<,VZ.`(D/@88```S;\VT`;,P#;0`6"-^3:,^C:MP3;P#ZV_-JS`-B!+-R`^ M-R`_**WY-JSZ-HV_-HS`-B!+-R`^-R`\**D`C<$VC<(V8*D`H`Z%_H3_J0"@ M`6"%_(3]J0"B_X7ZAOO``O`!8*7\T`NM*`^L*0^%^H3[8,D!T`BI`*PJ#TQF M-ZD`H`1,9C<``````",X-S@```````!*.%XXC8`WR0#0!2`2.!A@X`&P`J(! MP`?P!)`"H`>.?C>,?S>M?C?-?S?P`K!7KGXWO<,V\`?-@#?P*Y`IK7XW"JJ] M@3>%^KV"-_`:A?L@#SB0&:Y^-[W#-O`%S8`WD`:M@#>=PS;N?C=,L3>F_:7\ MW4XZL`.=3CK=5CJ0`YU6.AA@;/H`J8"-``^I`(7ZA?N%_(7].&"I`87]K2T/ MKBL/K"P/('0XC2T/8*D"A?VM)P^B`*PD#R!T.(TG#V"I!H7]K34/KBL/K#0/ M('0XC34/8*D'A?VM,0^B`*PP#R!T.(TQ#V````"-<3B%_(YR.(QS..QS.)`! M8*7\I/T@^S:L@#<@MSBP"JD`A?J&^Z7\&&#F_*7\S7,XD`6MLMCC(C,(VJ?^-P38XK1T/ M[;4XC1T/K1X/Z0"-'@^P`\X?#QA@``"-(3G)`-`#3+8YI?W)`-`%J81,N#FI MA:;ZT'NE^XT@.1AM(3F0!:F%3+@YI?RD_2#[-JT;#ZX@.:PA.=T`#O`%J89, MN#GHB-#RKB`YK"$YJ0"=``[HB-#YJ?^-P3:M(#G-PC:P`XW"-J;]O<,V\`XX MZ0$*L`8X;2$YD`*I`)W#-ABM'0]M(3F-'0^0".X>#]`#[A\/&&"-``\X8`"B M`+U..MU6.O`"L!..O3F]3CJ\5CJJK;TY(.8YKKTYZ.`(D-Y@````CN,YC>0Y MC.4YK>,YK.0YS>4Y\`*P"R#[-B`(.N[C.=#H8*``H@"M&P],%3KH\!'=``[0 M^*D`G0`.R*T;#TP2.L``\"*I`(W"-J[`-IW#-JG_C<$VF!AM'0^-'0^0".X> M#]`#[A\/&&``````````````````````H@>I_YU..JD`G58ZRA#S8`"%@(2! M(%XZK3/@XZ1+86(Y,8Z(1(!]CK59CHA0@'V.M5V.B M%R`?8ZU88RD'JKU;8XTR8[UC8XTS8[UK8XTT8ZDRH&,@%&%@2$I*2DH),)TR M8V@I#PDPG3-C8-1512TP-2W-05DM,3DY,R`@,3$Z,S0Z,3(@4$T-#0`````` M````````*M/-U-?4QM,J54]514A202I.3D5$54E4*LK&S<'-RLK!T\_.Q"I! M14%00555545#3T4J3D)24EE.3$=05%9#H(*$"K$"R?_P(B`>9+`=J=N@8R`V M9+`1J5&@8Z()(%-DL`8@+V1,X6,@+V3F"J0*P(:0SJ4"I`,8:8:0``$E.1$E214-4+5)%5:`````````````````````````````````` M``````````````!(J6^@986`A(&B1&@@42@@>F6B`+UO9?`&(-+_Z-#U8``` M````````````HO_HO6]ET/K*RLK*X("0`6#@`+`!8+UO9#XT>#Y`#[A\/8*DFH&8@%&&I"B!/9:D-(-+_ M8"`@($92144Z`*D`H@.51,H0^V"I`J+_>"`L8%B-)`](($9G:*JI`(5%J=Z@ M9B"P92`O9JD"A?VI`(TG#Z4&I`>-*`^,*0^B`(7ZA/N&_*"C)`DP`J#!L0*H MJ0&B8"#/:"`@9R0)$$6I`(7ZH*"Q`H7[C2H/J0&%_*"AL0*HJ0*F^^@@SVBI M`H7\J0"@!(7ZA/N@I;$"KB0/(!QIC20/H@6@_R#/:"#U92`49F"I`8TD#R#U M92`49F!)3E1%4DZ@J"0),`*@QK$"A4"@8*G^Q$"P!Y$&R,1`D/DXI4#I8(5` M.*T=#^5`C1T/K1X/Z0"-'@^M'P_I`(T?#V"D",!@L`FI`)$&R,!@D/DXJ6#E M"(5`&*5%94"%19`&YD;0`N9'8"0)$"^M)`_)`K`!8'BI`J`"A?R$_:D%H/^% M^H3[A?Z$_ZG[H``@/RCF_*7\S20/D.188*(_O85GG<#_RA#W8`"I`:+_("Q@ MC2P/JM`&K30/\`%@J0"%1:GLH&<@L&4@+V:I`87]H*8D"3`"H,*Q`HTK#XTM M#Z"G)`DP`J##L0*N+`\@'&F-+`^I`*#_KBL/A?J$^X;\K2P/H@"@_R#/:"#U M92`49F!2154@(""M+`_P!JD`C30/8*XT#_#ZJ0"%1:E5H&@@L&4@+V:I!H7] MH*8D"3`"H,*Q`HTK#XTU#Z"G)`DP`J##L0*N-`\@'&F--`^I`*#_KC(/A?J$ M^X;\K30/H@"@_R#/:"#U92`49F!23"U2156N,`^I`(5%J9V@:""P92`O9J"! ML0*N,`\@'&F-,`^I!X7]J0"@_Z(`CC$/A?J$^X;\K3`/H@"@_R#/:"#U92`4 M9F!23"U204VN(@^M(P^%1:G(H&@@L&6B`[T<#Y5$RA#X(!1FJ0T@TO\@Y&9@ M5$]404P@8(4*A@N$#*DEH&F%_H3_H@"I_YTE:>C0^J8+Y`RP"JD`G25IZ.0, MD/BE_,4*L!ZI`*`!(#\HYOPXI0SE"QAE185%D.7F1M#AYD=,]VA@AD#%0)`" #I4!@```` ` end begin 640 sh M`!-,KA-3R`````````````````"B`DP9$Z(!A?J$^Z#_R+'ZT/N8H`!,#"BB M`8T^$ZD^H!.%^H3[J0&@`$P,*`"B`*E8H!.%^H3[J0&@`"`)*/`$K5@38#A@ M`*F33"H3```````````````@=Q-,42@@=Q.I`4Q1*(5@A&&&8JD`A6.I7J`3 MA8"$@:D(HF!@JCBM"`_I`HT(#X5@K0D/Z0"-"0^%89B@`9%@B(J18&"IN*`3 M(!<33.$3PI M6Z("("P3K10/K!4/(!(3J5>@%"`2$ZD`C0T3C0H3('`4L">M"!,-"1/P%*T. M$]`/((D6(/<7(-(8((T8((D6(*$6+`H3,`-,]!-@72``H@`@2RBB_\D`\`*B M`(X+$ZD`C0P38*D`C0@3C0D3(#\3D`-,,A7)6]`5(#\3L/3)#?`,R5W0\R`_ M$Y`#3#(5R2#P],D)\/#)#=`#3#$5R3O0"*G_C0T33#$5H@"&`H8$H@"&`\DB M\`3))]`'A0.%!$S4%*8"G0!AY@(@/Q.P6:8#T"7)(/`]R0GP.8"3-04R0#PW\4#T-L@/Q.P(\D@\`O)"?`'R0WP M`TRZ%$BF`JD`G0!A(#,5:,D-\`-,D1088*T.$_`!8*4$T!FB`*!2K0!AR3SP M8*(!H%?)/O!8(+\6D`%@(%H58*T(#ZP)#QCE`K`!B(T(#XP)#X7ZA/N@`+D` M89'Z\`/(T/:M"1.%^ZT($PHF^QAI`(7ZI?MI8H7[H`"M"`^1^LBM"0^1^NX( M$]`#[@D38*D!A?JI887[K0%AR3[0""""%J!!K0)AR2'0!Z("(((6J0#))O#U MO043R?_0=9B.`&"-#Q,@`RB0):T`#\D_T`L@+2BP(*T/$TS<%-#Q-,W!6N`&"=!1-@J2>@%DB82*G_C0X3I?JD^R`2$VBH:"`2$V`Z M(,524D]2($]014Y)3D<@4D5$25)%0U1)3TX@1DE,12X-`*E1H!9,$18Z(,52 M4D]2("T@S55,5$E03$4@4D5$25)%0U1)3TY3($]&(%-!344@4U1214%-+@T` MYOK0`N;[8*(`A@*]!1/)__`$J"`J*.8"I@+@`Y#M8*(`A@*]!1/)__`*(`8H MI@*I_YT%$^8"I@+@`Y#G8*G_A0J%"Z8"RN#_\!B]`&').O`1R2K0\*0+P/_0 MZH8+Y@M,QQ;HA@JE"\G_T`(88"#T%CA@J0"%#Z8"Z,J]`&&=`6#D"M#UJ0"= M`&"=`&&F"YT`8.8*Y@NB`+T`8?`&G0!@Z-#U.*4"Y0N%#>8-.*4"Y0J%#*D` MH&"%^H3[("$HL!6%#B`G*+`%\`,@>A>E#B`D**4/T`RI_XT.$ZECH!<@$A-@ MSD\@34%40T@@1D]2(%=)3$1#05)$#0"F#B`G*+`"T`%@K6X/T`%@K6T/Q0R0 MZ:8*H``@Y1>PX*8+.*UM#^4-J"#E%[#2H@"]`&#P!IT`8>C0]:``N6X/G0!A M\`3HR-#TK6@/R5/P#YT!8:DLG0!AZ.BI`)T`888"(%H5J?^%#TQZ%[T`8-`" M& @_0!,CHT/`X8*D`H``@CA.M"!.L"1.$!PJ%!B8'.*T(#^4&C0@/A02M M"0_E!XT)#X4%J0"@8H4"A`.E!@4'\!V@`+$"D03F`M`"Y@/F!-`"Y@6E!M`" MQ@?&!DPH&*T(#ZP)#XT&#XP'#ZT($ZP)$XT$#XP%#R".$ZT'$Z#_((X3K043 MK`83((X3K0H/K`L/((X3K0@/K`D/C0H/C`L/8*T*#ZP+#X4"A`.@`K$"F0,3 MR,`%D/:@`;$"F0H/F0@/F00`F08/B!#OH`:Q!(T$#\BQ!(T%#QBM!@]I"(T& M#Y`#[@I`*!@3%HHJ76@&2`2$V#"040@15A415). M04P@4%)/1U)!32!&3U)-050-`*T`#\D$\*+)!?">J:N@&4P2$ZG(H!E,$A/% M6%1%4DY!3"!04D]'4D%-($Q/040@15)23U(-`,-/34U!3D0@3D]4($9/54Y$ M#0"D!*(`L0+P!YT`8,CHT/7(A`2@`;'ZR3KP!XBQ^LDOT`2%!Z(`H`"Q^IT` M8/`$Z,C0]:D`H&"%^H3[8$5#2$\`B1I32`#*'D1)4D5#5$]260`%&T1)4@`% M&T0`,AM,4P`1&T-$`"L=1P`K'4-!5`#C'5194$4`XQU4`.,=0TQ3`%D30TQ% M05(`61-%6$E4`(0>6`"$'D-,4TP`"QM``(H>1$]3`(H>4$%42`#8'@"I`(4$ MK08/K`M!`_)`I`'J0&@`"#B&B`A*)`!8(4"I@(@)RBP M+O`L($XHL">E!1`#(.D#R!I$Z`?I0C)/K`"H`BB`+U>$YG)&\CHX`B0]*D@F9R1O(Z-#T MJ0V9R1O(J0"9R1N$!V"I;J`/(!<3Y@2E!,4#D`FI`(4$J0U,*A.@_\BY;@_0 M^H0&J13E!H4&J2`@*A/&!M#W8*G]H!P@%Q.I;J`/(!<3J0T@*A-@Q$E2.B`` MK5P/K%T/KEX/(&\3J5Z@$R`7$ZD>H!T@%Q-@($)95$53($92144-`*T$#\D" MK04/Z0"P"ZG&H!V%^H3[3$D=J0&@`"#B&J("H`"Q^HT`8M!`_)`JT%#^D` ML`>I`(4(3$D>I0:D!R#B&JE2(`,HL`J%""!)'J4((`8HY@;0`N8'I0K0#*4& MS00/I0?M!0^0TF"E`J0#A?J$^Z4$I`6F""`)*/`1L`^B`2`,*+`(($XHL`1, M41Y@J?^%"JEYH!Y,$A,\TU1/4%!%1#X-`*G_C0H38*G'H!Z%^H3[(!4HA0*I M`:``(.(:I?H%^_`)I?JD^Z8"(!LHJ0"@8*8"(!XHJ0"@8"`7$ZD-("H3I0), M&"@N.@`@X1.I`(T*$ZG_C0P38*T.#ZP/#X4"A`.I`(4$K04/\`%@K00/R0*P M3:DZH!\@%Q.D!+$"T`:I#2`J$V"I(HT`8*(!L0*=`&#P!,CHT/7(A`2I(IT` M8.BI()T`8.BI`*!@A?J$^XJ@`*(!(`PH3/H>4$%42"``H`"$!*D!A0:E!J`` I(.(:I?H%^]`'J0"D!)$"8*``A`>D!^8'L?JD!.8$D0+)`-#PY@9,2!\` ` end begin 640 config.sys M`!/_`````0@```$)```!"@"``0L```$,```!#0```0X``/\```#_````_P`` M``(```#_````!`````,```#_``````0'```$!0```````@,``/\````%```` M_P```/\```#_````_P````0```#_````_P```/\```#_````_P```!#_____ M_QF3`0$````&``!!.@``````````````````!/\`_P`(`/_````.!@`%```` M````````````````````_P#_``3``@,/```````````````````````````` A`$$Z`"XZ```````````````````````````````````````` ` end begin 640 config.edit M`1Q`'&0`F2*3(JK'*#$T*:HBP')`!1+(Q-C0@.B!(3K(W(#H@AB!,3RA$ M*2Q(12A$*2Q$220H1"DL2"0H2$XL,BD`T!ST`5-0)+(B("`@("`@("`@("`@ M("`@("`@("`@("`@("`@("`@("`@("`@("`@(@#V'%@"F2(1TD5!1$E.1R!& M245,1"!$15-#4DE05$E/3E,N+BXB`!@=O`*!2;(QI$0ZAR!,3RA)*2Q(12A) M*2Q$220H22DZ@@`U'2`#F2(1TD5!1$E.1R!(14Q0($1!5$$N+BXB`%8=A`.! M2;(PI$A..H%*LC"D,CJ'($@D*$DL2BDZ@CJ"`&4=Z`-4LC$@.B!-1+(P`&T= M3`12LC``G1VP!)DB$>`5#0;(T.3$U,B`Z M()-C4T-CD`11[-C4T-C8`E!ZD!I"`>+(,(H-S@S*:\Q M(*<@F2(10T].1DE'+E-94SH@3$]!1"!%4E)/4B,B.\(H-S@P*3J``.L>;`>9 M(A')3E-404Q,24Y'(,G.T-74($-/1$4N+BXB`!$?T`>!2;)#0:HR-3:D0T&J M,C4VJC$U.H<@03J7($DL02`Z(((`&Q\T"(TU-S`P`%4?F`B9(I/!P\4@PT]. M1DE'(,5$251/4B([4UD[HS,R*3LB4$%'12([Q"BU*"A4JS$IK3$X*:HQ*0"$ M'_P(F2+`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,`B M`)L?8`E"LE2J,3@F2+(S\W%/4A/344L(,/,TCU&25)35"!0 M04=%("`@("`@("`@("`@("`B`,8EW!Z94U`D`/8E0!^9(BLO+3U004=%+"#2 MQ=35TLX]141)5"P@4SU3059%+"!1/5%5250@("([`/PEI!^.`"8F"""9(%@D M.R(J(B`Z()DB$Q$1$1$1$1$1$1$1$1$1$1$1$1$1$2([`%,F;"!3LD-!JC$T M-#I,LC$U.HM(LC$R.:=,LC,Q.E.R0T&J,C(T.HDY,C`P`((FT""9(L5.5$52 M($E.251)04P@1$E214-43U)9+"!-05@@,34@0TA!4E,@("(`L28T(9DB+2TM M+2LM+2TM,2TM+2TK("`@("`@("`@("`@("`@("`@("`@("`@(@#&)I@AF2!3 M4"0ZF2!34"0[(I&1(@#D)OPA@4FR4Z13JDPZF<!2;(P MI$PZEU.J22S&*,HH020L2:HQ+#$I*3J".HDY,3`P`%(I=">+(%-9LC$R.""G M()X@0T&J,C4V+#`L,"PP+#`@.B#^"2!!+%@@.B"),3`S,#``-C4T.38`]BLH*8L@PB@W.#,IKS$@IR"9(A%# M3TY&240^@R`Q."PV+")$159)0T4@Q#H@4T5#3TY$05)9($%$1%)%4U,B M`$`U2#^#(#$Y+##(#@Q+#4L(D1%5DE#12#4.B!$159)0T4@041$4D534R(`PS[D5X,@ M.#(L-BPB1$5624-%(-0Z(%-%0T].1$%262!!1$1215-3(@#@/DA8@R`X,RPW M+")$159)0T4@U#H@1DQ!1U,B``X_K%B#(#@T+#0L(D1%5DE#12#5.B!$4DE6 M15(@5%E012`H,C4U/4Y53$PI(@`T/Q!9@R`X-2PU+")$159)0T4@U3H@1$56 M24-%($%$1%)%4U,B`%T_=%F#(#@V+#8L(D1%5DE#12#5.B!314-/3D1!4ED@ M041$4D534R(`>C_868,@.#Q>@R`Q,#`L-"PB1$5624-%(-DZ($12259%4B!465!%("@R-34] M3E5,3"DB`)Y!4%^#(#$P,2PU+")$159)0T4@V3H@1$5624-%($%$1%)%4U,B M`,A!M%^#(#$P,BPV+")$159)0T4@V3H@4T5#3TY$05)9($%$1%)%4U,B`.9! M&&"#(#$P,RPW+")$159)0T4@V3H@1DQ!1U,B`!5"?&"#(#$P-"PT+")$159) M0T4@VCH@1%))5D52(%194$4@*#(U-3U.54Q,*2(`/$+@8(,@,3`U+#4L(D1% M5DE#12#:.B!$159)0T4@041$4D534R(`9D)$88,@,3`V+#8L(D1%5DE#12#: M.B!314-/3D1!4ED@041$4D534R(`A$*H88,@,3`W+#.B!$4DE615(@5%E012`H,C4U/4Y53$PI(@"T1"!G@R`Q,C$L-2PB M1$5624-%(%XZ($1%5DE#12!!1$1215-3(@#>1(1G@R`Q,C(L-BPB1$5624-% M(%XZ(%-%0T].1$%262!!1$1215-3(@#\1.AG@R`Q,C,L-RPB1$5624-%(%XZ M($9,04=3(@`K14QH@R`Q,C0L-"PB1$5624-%(%\Z($12259%4B!465!%("@R M-34]3E5,3"DB`%)%L&B#(#$R-2PU+")$159)0T4@7SH@1$5624-%($%$1%)% M4U,B`'Q%%&F#(#$R-BPV+")$159)0T4@7SH@4T5#3TY$05)9($%$1%)%4U,B M`)I%>&F#(#$R-RPW+")$159)0T4@7SH@1DQ!1U,B`*]%W&F#("(B+"(B+"(B M(#H@CR`P`-Y%0&J#("++15).04P@1$5624-%($Y534)%4BP@,"TS,"(L(B(L M(B(@.B"/(#$`)T9!:H,@(L1!62!/1B!7145+($-/1$53.B(L(C$]TU5.+"`R M/&QF9F9L>`!^8&!X8&!^`'Y@8'A@8&``/&9@;F9F/`!F9F9^9F9F M`#P8&!@8&#P`'@P,#`QL.`!F;'AP>&QF`&!@8&!@8'X`8W=_:V-C8P!F=GY^ M;F9F`#QF9F9F9CP`?&9F?&!@8``\9F9F9CP.`'QF9GQX;&8`/&9@/`9F/`!^ M&!@8&!@8`&9F9F9F9CP`9F9F9F8\&`!C8V-K?W=C`&9F/!@\9F8`9F9F/!@8 M&`!^!@P8,&!^``X8&'`8&`X`&!@8`!@8&`!P&!@.&!AP`'/;S@``````"!PV M8V-C?P`````8&````````/__````&!@8&!@8&!@8&!C__Q@8&````!\?&!@8 M````^/@8&!@8&!@?'P```!@8&/CX````&!@8'Q\8&!@8&!CX^!@8&````/__ M&!@8&!@8__\````V?W]_/AP(``@'!@`!XS,/PPX_X````#/G8V-@`8&'X8&`!^ M```8`'X`&```/&9F/`````#,S#,SS,PS,ZI5JE6J5:I5\/#P\/#P\/```QLS M?S`8`!@\?A@8&!@`&!@8&'X\&```$#!_?S`0```(#/[^#`@`PYF1D9^=P___ M_\/YP9G!_Y^?@YF9F8/____#F9^9P__Y^<&9F9G!____PYF!G\'_X\G/A\_/ MS____\&9F<'Y@Y^?@YF9F9G_Y__'Y^?GP__Y__'Y^?F9PY^?F9.'@YG_Q^?G MY^?GP____YR(@)2<____@YF9F9G____#F9F9P____X.9F8.?G___P9F9P?GY M__^#F9^?G____\.?P_F#_\_/`\_/R>/___^9F9F9P?___YF9F8F<#_\^?/_______SY\_/ MS^?S_\_G\_/SY\___YG#`,.9____Y^>!Y^?_________Y^?/____@?______ M_____^?G___\^?/GSY__PYF1B9F9P__GY\?GY^>!_\.9^?//GX'_PYGYX_F9 MP__Y\>&9@/GY_X&?@_GYF?/G\_G\?___X'_@?___X_G\_GSYX__ MPYGY\^?_Y__/Y_/______^?#F8&9F9G_@YF9@YF9@__#F9^?GYG#_X>3F9F9 MDX?_@9^?AY^?@?^!GY^'GY^?_\.9GY&9F3F?^?GY^?GY^!_YR(@)2?GY^?GY_^9F9F9 MF9G#_YF9F9F9P^?_G)R/Y^?Q_^?GY__GY^?_C^?G\>?GC_^,)#'_______?CR9R/W_^?#)`"!Y\/_]^/!@(#CP?__PX&!@8'#___#@9F9 M@/G__AS,\#SQP!_____,&)R!Y^?_@?__Y_^!_^?__\.9 MF!P^?__^_/@(#/[___]_,!`?/W_P`` ` end begin 640 cp M`&!,F&!#P@``H@),#F"B`87ZA/N@_\BQ^M#[F*``3`PHH@&-,V"I,Z!@A?J$ M^ZD!H`!,#"@`H@"I3:!@A?J$^ZD!H``@"2CP!*U-8&`X8`"I4:!DA0*$`SBM M"`_E`H4$K0D/Y0.%!6"$^PJ%^B;[&*T&#V7ZA?JM!P]E^X7[H`"Q^JK(L?J& M^H7[8*T$#ZP%#SCI`;`!B$QF8*D`C05@C09@($Y@K04/T`>M!`_)`Y`[((E@ M(`\HP`#P`TQ_8JT%#]`IK00/R0/0(JD!H``@9F"E^J3[A0B$":D"H``@9F"E M^J3[A0J$"R`X86"I]*!@H@(@#F!@55-!1T4Z($-0($923TU&24Q%(%1/1DE, M10T@("`@("`@0U`@1E)/349)3$4Q($923TTR("XN+D923TW.(%1/1$E2#0"E M"*0)A?J$^ZE2(`,HD`>E"*0)3"QBA0:E"J0+A?J$^ZE7(`,HD"6M``_)/_`, MI08@!BBE"J0+3"QB()1A\`>E!B`&*#A@(`%B3%!AA0<@#6*E!R`&**4&(`8H M8*T%8/`#J0!@J>>@82`,8*4*I`L@#&"I\Z!A(`Q@(#1@R0WPY$@@-&#)#=#Y M:,E1T`>I_XT&8#A@R='P]I_XT%8*E9R<'P]83A@ MJ0"%#:D!A0X@6F*P!Z4-R2V0]1@(I`ZI#9G>8N8.I0W)`/`7(,ABC=YBJ=Z@ M8H7ZA/NE#J``H@$@#"@H8````*("J0"=5V+*$/JB`(8/(-YAL`VF#YU78N8- MZ.`#D.T8"*0.K5=B2DH@R&*9WF+(K5=B"@H*"H4/K5AB2DI*2@4/(,ABF=YB MR*U88@H*A0^M66(**BHI`P4/(,ABF=YBR*U98B#(8IG>8LB$#BA@*3_0`ZG` 08!AI(,E!L`%@R5NP`FF`8``` ` end begin 640 uudecode M`&!,<6!#P@``H@&%^H3[H/_(L?K0^YB@`$P,**("3`E@H@&-,V"I,Z!@A?J$ M^ZD!H`!,#"@`H@"I3:!@A?J$^ZD!H``@"2CP!*U-8&`X8`"$^PJ%^B;[&*T& M#V7ZA?JM!P]E^X7[H`"Q^JK(L?J&^H7[8*T%#]`UK00/R0*P+JF$H&!,!V#5 M4T%'13H@555$14-/1$4@1DE,13$@1DE,13(@+BXN($9)3$7.#0`XK0@/Z3R% M!JT)#^EEA0>I`:``A0*$`Z4"I`,@3F"E^J3[A02$!07[\!0@)F$@4V&0`R#J M8.8"T`+F`TS"8&"I_Z!@(!I@I02D!2`:8*DCH&%,&F#%4E)/4B!!5%1%35!4 M24Y'(%1/(%551$5#3T1%($9)3$4@(@`B#0"I.Z!A(!I@I02D!2`:8*E-H&%, M&F!5541%0T]$24Y'($9)3$4@(@`B+BXN#0"E!*0%A?J$^ZE2(`,HD`%@A0P@ M;F&E#"`&*&"I`(4*A0N-1&2-160@1F20`6"B`*W89,E"\`*B!J``N=ADW<)A MT.7HR,`&D/*@`.`'D`*@_XP%8*WA9,D@T,VB`+W>9,DPD,3).+#`Z.`#D/!, MSF%"14=)3B!B96=I;B"M!6#P`"!?8B"08B"R8JGBH&2%^H3[J5<@`RB0%ZT` M#\D_\`8@WV),>F$@$F.I5R`#*+#PA0T@1F2P'2!J8Y`*J2Z@8B`:8$P$8JW8 M9/`)(-AC(#%D3`1BI0T@!BA,>F%705).24Y'.B!"040@0TA!4D%#5$524R!) M3B!,24Y%.R!)1TY/4DE.1R!,24Y%+@T`+`5@,`%@H@"]XF3P"2!V8IWB9.C0 M\F`I?\E@D`,8:6"H*7_)0;`"F&#)6[#ZF$F`8*(`O>)D\`/HT/B]X&3)+-`! M8*DLG>)DJ5"=XV2I`)WD9&"IQZ!B(!I@J>*@9"`:8*G9H&),&F!%6%1204-4 M24Y'($9)3$4@(@`B+BXN#0"E^J3[(!I@J>Z@8B`:8&`Z($-!3DY/5"!/4$5. M.R!32TE04$E.1R!42$E3($9)3$4N#0"I2Z!C(!I@J>*@9"`:8*EEH&,@&F`@ M-&!(R0WP!B`T8$PK8ZGBH&2%^H3[:,E9\`7)V?`!8"`M*&#/5D525U))5$4@ M15A)4U1)3D<@1DE,12`B`"(_(```J0"-:6.MV&30`AA@(*]CD`%@C=ADHCS) M+I`"HE2&#Z(`Y`^0`AA@+&EC,!"]V63P!B"O8Y`(8*G_C6ECJ0"=V63HT-U@ MR2"P`CA@R6"P!3CI(!A@R6#0!!BI`&#)P/#XL`(X8,G;D`%@..F@&&"B`*`` M(.5CS-ADD/A@O=ED"@J-!F#HO=ED2DI*2BD##09@F=EDR+W99`H*"@J-!F#H MO=ED2DHI#PT&8)G99,B]V63H:FIJ*<"-!F"]V63H*3\-!F"9V63(8*G9H&2% M^H3[K=ADH`"F#2`,*&```*U$9/`".&"B`(8.()QDL!#)"AC0"ZY%9.`-&-`# M()QDD`BI_XU$9$R&9,D-\!+)"O`.I@[@8K`%G=ADY@Y,8V2-162F#JD`G=AD MX`#P`AA@K41DR0%@I0H%"_`4H`"Q".8(T`+F":8*T`+&"\8*&&"I/*!EA?J$ ;^X4(A`FE!J0'I@P@"2CP";`'A0J$"TR<9#A@```` ` end begin 640 crc32 M`&!,;V!#PJ(!A?J$^Z#_R+'ZT/N8H`!,#"BB`DP'8*(!C3%@J3&@8(7ZA/NI M`:``3`PH`*(`J4N@8(7ZA/NI`:``(`DH\`2M2V!@.&``A/L*A?HF^QBM!@]E M^H7ZK0%(J4C21V%(Z4D2<&%)*4E202%)8*7Z MI/N%!(0%!?OP&2!,8;`&I5`P`N90D`,@'V'F`M`"Y@-,T6"E4,D"D`,@;F)@ MJ12@82`88&`\TU1/4%!%1#X-`*DTH&$@&&"E!*0%(!A@J4F@84P88,524D]2 M(%)%041)3D<@1DE,12`B`"(-`*4$I`6%^H3[J5(@`RB0`6"%#"".82!P8:4, M(`8H(`9B($!B8*F7H&*%^H3[J?Z@`*8,(`DHA0J$"_`&(*1A3'!A8*D`H@N5 M0,H0^X5,8*D`H@N5(,H0^V"@`,0*T`%@IDRYEV+)#=`.YD#0"N9!T`;F0M`" MYD/)(;`,R2#P'\D-\!O)"?`7X`'P%:(!YD30#^9%T`OF1M`'YD=,ZV&B`,C$ M"I"]&*5(90J%2)`*YDG0!N9*T`+F2X9,8*)`J08@*&*B1*D&("ABHDBI!R`H M8J4$I`4@!6"I#2`=8&"@BX2`H&*$@2!1**F+H&(@!6"I("`=8&`8H@"U('5` ME2#HBBD#T/08H@"U)'5$E23HBBD#T/08H@"U*'5(E2CHBBD#T/1@J8.@8H4$ 7A`6B"[4@E4#*$/D@!F)@/%1/5$%,/@`` ` end begin 640 grep M`&!,=6!#P@```````*(!A?J$^Z#_R+'ZT/N8H`!,#"BB`DP-8*(!C3=@J3>@ M8(7ZA/NI`:``3`PH`*(`J5&@8(7ZA/NI`:``(`DH\`2M46!@.&``A/L*A?HF M^QBM!@]E^H7ZK0I`:``A0*$`R!28*`` ML?K)+=`T`NI_XT(8.8( MT`+F":#_R+$(T/N,"F"(P/_P$K$(R230#*G_C0E@J0"1"(P*8&"IP:!A(!Y@ M8#S35$]04$5$/@T`J>&@82`>8*4$I`4@'F"I]J!A3!Y@Q5)23U(@4D5!1$E. M1R!&24Q%("(`(@T`I02D!87ZA/NI4B`#*)`!8(4.(!1BI0X@!BA@J0"%#(4- M(.]BD`%@(#AB+`5@,`B0\"#'8DP:8K#H(,=B3!IB+`E@$!L8I4)E0(5"I4-E M085#.*5"[0I@A4*E0^D`A4.E0J1#A42$1>9$T`+F1:``A$:D1K$(\#J@`-%" MT`OF1N9"T`+F0TQJ8J``L4+P(2P&8!`1R<&0#F#B`)*/`)L`>%#(0-3#!C.&`` ` end begin 640 date M`&!,!6!#PJF"H&`@5"B@![F"8"`Y8$B*OEU@G4A@:)U'8(@0ZZD-C5Q@J4>@ M8(7ZA/NI%J``H@%,#"A(*0\),*IH2DI*2@DP8#$Y.3,O,#4O,38M,3@Z,#0Z J-3`N,UH``@4("PX1%--53BTQ-BW-05DM,3DY,R`@,#8Z,#,Z-3`@4$T````` ` end begin 640 fast 5`&!,!6!#PJT1T"GOC1'0J0&-,-!@```` ` end begin 640 slow 5`&!,!6!#PJT1T`D0C1'0J0"-,-!@```` ` end begin 640 read M`&!,X&!#PJ(!A?J$^Z#_R+'ZT/N8H`!,#"BB`DP'8*(!C3%@J3&@8(7ZA/NI M`:``3`PH`*(`J4N@8(7ZA/NI`:``(`DH\`2M2V!@.&``A/L*A?HF^QBM!@]E M^H7ZK0:!@3!Q@55-!1T4Z(%-/4E0@ M6RU;25U;5EU=(%LK0T],54U.72!&24Q%("XN+@T`J0&@`(4"A`,@-F"@`+'Z MR2W0'.8"R+'Z\!7)2=`%J?^-!V#)5M`%J?^-!F!,N&"E`J``(#9@H`"Q^LDK MT`4@'&'F`B"C82!.*+!6I0*D`R`V8*7ZI/N%!(0%!?OP$2"(89`#(%MAY@+0 M`N8#3.E@(.!A(.YA(/QA8*D`C0A@R+'ZR3"0&\DZL!RA#[ M8*E2('-CJ0"%#"!^9K`0('5B(*5BL`BI+B!S8TS*86"M!F`P"*E6('-C(!AC M8*E7('-CJ0T@E2+*$/6E)8*T+9Z``((EDD`%@H@.U(IT'9\H0^*D'H&>%_H3_K0MGH``@/RBE*RA#Y&&"B`[4>E2+*$/FE M)I!Z!G(/UA(*1FH@.]!V>5(LH0^$SZ8F"B`[4>E?JI`)4>RA#UI?W) M`/`=HB*@!"`V**(>H`0@.2BB`[7ZE1ZU(I7ZRA#U,-U@H@.U'I7ZRA#YI?W) M`-`!8*(JH`4@-BBE+J``(&QEH@.U*I7ZRA#Y3%)CH@),(V````````````"I M`(U[8Z(`J?^=!VKHT/JB:ZD'\`'HCGQCCG]CK@D/AF".@&.*..U\8[`"J0"- M?F,8:0&-?6.N?&/D8+`*J0"=!VKHY&"0^&``CCL M?&/0!ZP79,B,?&,XK7YC[B*X`2P`J($BHV(9"#*8Y`!8*D`K(AD(&QEK89DK(=D M3(ED&&D'D`'(*?B%9H1GH@.]>&.5^JD`E6C*$/2E_5GA66B8*`&(#DH&*7Z962%^J7[966%^QA@I6O)`-`,H@.U M8)UX8\H0^!A@H@.U^K1HE6B4^LH0]:)@H`0@.2BB`[5HE?K*$/D88!AI!Y`! MR"GXA6:$9Z(#M?J5:+UX8Y7ZJ0"5;,H0\*7]R0#P**7ZQ6BE^^5II?SE:J7] MY6NP%J)@H`0@-BBB`[7ZE6RU8)7ZRA#U,-*B`[5LE?K*$/FE_&/*$/.E9J1GA62$94PM9J)@H`8@-BBE_<5KT#"E_,5JT"H8I?IE M9*JE^V5EQ6G0'.1HT!@8I61E9H5DI65E9X5EH@.U;)5HRA#Y,`^B:*`$(#DH MI6:D9X5DA&6E:\5CT#FE:L5BT#,8I6AE9*JE:65EQ6'0)>1@T"&B`[5@E?K* M$/FE94BE9$BB8*`&(#8H&&AE9(5D:&5EA66B`[5HE?K*$/FB8*`&(#DH&&"@ M`(1P(-)FI'"P&ID,9\C`\+`%R0W0ZXBI`)D,9QB8:0:-"V<88"!.*)`#($1A MK`MGJ0V9!F>I#*!GA?J$^SBM"V?I!:``H@$@#"BL"V>I`)D&9V"E#/`+I`JY M!VGF"L8,&&`@3BB0`R!$8:D'H&F%^H3[J?Z@`(0*I@X@"2CP![`%A0Q,TF8X !8``` ` end begin 640 mem M`&!,!6!#PJDCH&`@46&M&P\),"`>8:D-(!YA(+]@("Y@(')@8-!23T-%4U/) MQ#T`J5>@8"!18:EFH&"%@(2!J0JB0"!1**(`O69@\`8@'F'HT/6I#2`>86#$ M64Y!34E#(,92144@/0````````````````"IL*!@(%%AJ6:@8(6`A(&I`(4& MA08>C0]:D-(!YA8-!2 M3T=204T@QE)%12`]`*TH#ZPI#\B%`H0#H`"B+K$"\`ZB*LG_\`BB(\G^\`*B M*XH@'F'(T.6I#2`>8:(#O1P/E4#*$/A@H@.U^B`'8N!F#P#\D-T`C@`?#NX`/P M`ZBQ$JX'8/`8R0W0$>`$\`W@`_`,X`+P!2"M8JD-J+$4(*UB3`5B8*4,!0WP M%*``L0KF"M`"Y@NF#-`"Q@W&#!A@($XHD`,@H&&I%J!HA?J$^X4*A`NE$*01 MI@X@"2CP";`'A0R$#4Q"8CA@.*T(#^D6A1"M"0_I:(41J0"%#(4-H@$@2RC) M`-`(J?Z@`(40A!%@IA;@_I`'2"#`8FBF%IT69^868"!.*)`#3*!AJ1:@9X7Z MA/NE%J``H@$@#"BI`(468*D`A19@K09@"JJ]`F.%$KT#8X43K0=@"JJ]#&.% M%+T-8X458```%F,68Q9C%F0``!9E%F46919F``$"`P0%!@>="0T+DPH.#Q`1 M$A,4%187&!D:&QP='A\@(2(C)"4F)R@I*BLL+2XO,#$R,S0U-C8 MF9J;G`B>GZ"AHJ.DI::GJ*FJJZRMKJ^PL;*SM+6VM[BYNKN\O;Z_8&%B8V1E M9F=H:6IK;&UN;W!Q'EZ>WQ]?G_@X>+CY.7FY^CIZNOL[>[O\/'R M\_3U]O?X^?K[_/W^_T!!0D-$149'2$E*2TQ-3D]045)35%565UA96EM<75X- M("$B(R0E)BWZ"AHJ.DI::GJ*FJJZRMKJ^PL;*SM+6VM[BY MNKN\O;Z_``$"`P0%!@<("0H+#%\.#Q`1$A,4%187&!D:&QP='A_@X>+CY.7F MY^CIZNOL[>[O\/'R\_3U]O?X^?K[_/W^_X"!@H.$A8:'B(F*BXR-CH^0D9*3 ME)66EYB9FIN'EZ>WQ]?G\` M`0(#!`4&!P@)#0N3"@X/$!$2$Q05%A<8&1H;'!T>'R`A(B,D)28G*"DJ*RPM M+B\P,3(S-#4V-S@Y.CL\/3X_0&%B8V1E9F=H:6IK;&UN;W!Q'EZ M6UQ=7E_`P<+#Q,7&Q\C)RLO,S<[/T-'2T]35UM?8V=K;W-W>WX"!@H.$A8:' MB(F*BXR-CH^0D9*3E)66EYB9FINHJ:JKK*VNK["QLK.T MM;:WN+FZN[R]OK]@04)#1$5&1TA)2DM,34Y/4%%24U155E=865I[?'U^?^#A MXN/DY>;GZ.GJZ^SM[N_P\?+S]/7V]_CY^OO\_?[_@(&"@X2%AH>(B8J+C!^. MCY"1DI.4E9:7F)F:FYR=GI\@(2(C)"4F)R@I*BLL+2XO,#$R,S0U-CKK[.WN[_#Q\O/T]?;W^/GZ^_S]_O_`P<+#Q,7&Q\C)RLO,S<[/T-'2T]35 MUM?8V=K;W-W>WV!A8F-D969G:&EJ:VQM;F]P<7)S='5V=WAY>GM\?7Y_0$%" M0T1%1D=(24I+3$U.3U!14E-455976%E:6UQ=7E^@H:*CI*6FIZBIJJNLK:ZO 0L+&RL[2UMK>XN;J[O+V^OP`` ` end begin 640 as M`&!,:F!#PJ(!A?J$^Z#_R+'ZT/N8H`!,#"BB`8TL8*DLH&"%^H3[J0&@`$P, M*`"B`*E&H&"%^H3[J0&@`"`)*/`$K49@8#A@`(3["H7Z)OL8K08/9?J%^JT' M#V7[A?N@`+'ZJLBQ^H;ZA?M@K04/\`%@K00/R0+0^*D!H``@1V"I4B`#*)`! M8(4"J0&%!*D`A06%!H4'J?^%`R`Q8Z4"(`8H8*G5H&.%^H3[J0"@`84#I@(@ M"2C0`CA@P`&0`AA@J*D@F=5CR-#Z&&#F`_`&I`.YU6-@(*%@D/6I`&"E#