`8p NqNuBootsector protected by Antidotepuke'(*** p` 8+O7IMY[]_a c@e`gikmoq s@u`wy{ @o @ ` ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+-/13A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_a!cAeagikoq!sowy{}!Ao/Ao/Aa!` 8+O7IMY[]_a c@e`gikmoq s@u`wy{ @o @ ` ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+-/13A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_a!cAeagikoq!sowy{}!Ao/Ao/Aa!BIN =UMAN >USAMPLES >UWTREEVIEW >UVENUS >UCONS_FIX103>UmVDIFIX 110>UtCHMELEON119>U~MANIFEST 8 OREADME 8 VREADME DOC PH S DESKTOP INF 3!CHMELEONTXT ]9 -CHMELEONACC ]9 . =U.. EXTZOO MUP a9 FOR TTP a9 MAN MUP c9  PIPE TTP c9  VIEWZOO MUP i9  HMELEONACC ]9 zoo -extract $1 `*<``J'>>> TURBO-C <<<< for ATARI-ST Version 2.0 (C)88-90 Borland International &H f&op`B@#<3@ k #F Ј<.@&#BJy@g<"@(I$k,"Jf"JfB// ?<?<JNAO A6<HCBB`6 !jBJ)gHiRC` "fSI "WJAkHiRCBSQJ)gHiRCHy`$ON0 J"LN? 9g @N 9g @NN?<LNAH<8(H&IBC y< (fANL$H f"K L0N\`BD`RDpC2H sNPJ@f0HBg *gBf(J`RCffpCHNH*H$LBC`0H+RCff2HB"K M0N\6 MNd0L<NuO?@ /HBo?|BWNp o g o Pf o 0/ oo(C0/H o pNJ@f>Ropo?@`,C0/H o pNJ@f?o`Ropo 2/@mpoo n(CpoH o pNJ@f0/f" o/CAN\XOpN^B9bpo?@`20/H o"pAbNC9AbNRo0/o mpo?@`Hyb0/H o /00/ H o/0C;AbNO 0g Hyb o /CFAN\POAbN?@0/g 0/N^Ro0/omrB@ONuA(p"@ "BybA1B3b3dO"Nu/ Hz?<&NN\O$_Nu/ 09fkbP`$H/<?< NA#b/@NA\ J$9bg 3f"B`"AhNf"J f$Byf`RS@f"yb f0<`>"H yb f0<`,H?/NXOLx`HyfHymNrPOJ@k09f$_Nu/ / "y<"i,gJ$Hfg@gf`&IgfJg( J`ܴg J"K` =g J"K` IJfRH&_$_Nu`O~"Ap~WF< oJf J(fp @/Ho/?<?<KNAO oJk0p`Z|g"|g&|g*|g.|g23 `03`&3`3`3 `3pONu/QOM-O, ICHzaXXOPO,_NuH@B@H@"VraPJ@kNu.np`/YOM, IC HzaXO VBXO,_Nu"VS@eQ,NuH8]O$H&I(o&BCx%p JR@g2fJ@g@HNBEg>BA< <b;k`|<*f<`&<0< b ACp a"$Wb<gt<.f6<*f4`$<0< b ACp a$Wb4g<߲<Lf g`<hggr@dp|?@0;N`````N`N``````````````````````````NNN````````````````` [0`|A`0A2"LaN@`\ [2"LaL@`JJEj `p0?4 La"TO@`*JEj `0H?4 LaTO@` JEj `p0?4 LaTO@`JEj `p0?4 LaTO@`@HN0\OLxNup24C8jxA aA pJWF@?@gA 2SAktaSb (Q2/@4/(jt@jtBgf 0Ao@@Alx?B?D`hH0$H&IB(v`H0$H&IvJWFCJBj4Cb6xJAkCc8Cf K0a0 JN` 0 JN0 Kap0DL Nu6x0/g f@ JaP0/g@AN0/g@ Ja,0/g@A N0/g g@ Ja0OLNuH0E6`H0E4&H6g8Kg SC JpNQ J0|gNL Nu00000000 H:$H&I(S&gfJg^+g`)ft,k x$ڹd SfRe`.&// Ka~$"J@k,f4(SSfRf& L\Nu3 p`"`&x,A'J'JE8'J & KaJ@kfRf"`H&H(k6+"+g0DtaJk+fZ"S"L Ip gSj`*| // " 0a`"_"JkNgPAp SjH@" 0a$Ҁk8 $k0HzP <e/`/? ?<@NAO Jk b Nuab3pNu0<`///6?<?B?<BNAO (Bg?/<?<BNAO *Bg?/?<BNAO JWH*(&NuD@| |"b;NupNu   JgJgJgJgJg JgJgJfSHggggg ggf @NuSeg gb pNuJfpNupNuH0$H|g|$bGrtgJ3kSJgtJ@f"p <0f:pgb<߶<Xf(pf"`N|f<0fg><߶<Xfg.Gb3d"3d&HCHCJCfԃԁd` & gSJ"L Nu3"p` 3!p& g"`//"4UB|"bZC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!`0123456789abcdefghijklmnopqrstuvwxyz/ EjB@BA2g2g!2ep` p`Jfp$_Nu/ &y, g/ &S?<INA\O`&y0 g/ &S?<INA\O`&_Nu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@  !"#  !"#/?<HNA\O @Nu???<FNA\ONu/?<INA\ONu yg.3A4NL fpN~J@g rpNVNuARGV@(#)Tools/for.ttp, Copyright (c) Julian F. Reschke, Oct 10 1990for-vdoinusage: %s [-v] varname in item {item} do command %s=%s ; %s%s: %s SHELLSTDERRr  :2 &0 ""& *     $  ~fL  cd $MANPATH more ${1}.man `H<``B'>>> TURBO-C <<<< for ATARI-ST Version 2.0 (C)88-90 Borland International &H f&op`B@#438 k #> Ј<.@&#:Jy8g<"@(I$k,"Jf"JfB// ?<?<JNAO A6<HCBB`6 !jBJ)gHiRC` "fSI "WJAkHiRCBSQJ)gHiRCHy`$ON0 J"LN? 9g @N 9g @NN?<LNAH<8(H&IBC y4 (fANV$H f"K L0N`BD`RDpC2H sN>J@f0HBg *gBf(J`RCffpCHN*H$LBC`0H+RCff2HB"K M0N6 MN,0L<NuH8O(HEZBG KNV g KNV"H JN JN 2\g C JN2NF&(8 CNF/C ANXOC JN2"J LN JOLNuH6O88$HBCNRG g @f$|f/CWANfXOpN^KdBzMZ0H"rAzNJ@fv`B` 0H"r NN2C NN2REEoC}0H rNzJ@fpD@lANC NN2C NN2gC NN2"M NN2JCgHV/CANfPO NNJ@g/CANfXOpN^g MN dC MNREEn$ MN dB@OLl8NuA(p"@ "ByZA1B3Z3\O"Nu/ Hz?<&NN\O$_Nu/ 09^kbP`$H/<?< NA#8Z/@NA\ J$98Zg 3^"B`"A`Nf"J f$By^`RS@f"y8Z f0<`>"H y8Z f0<`,H?/NXOLx`Hy8^HyeNrPOJ@k098^$_Nu/ / "y4"i,gJ$Hfg@gf`&IgfJg( J`ܴg J"K` =g J"K` IJfRH&_$_Nu`O~"Ap~WF< oJf J(fp @/Ho/?<?<KNAO oJk0p`Z|g"|g&|g*|g.|g23 `03`&3`3`3 `3pONu/QOM-O, ICHzaXXOPO,_NuH@B@H@"VraPJ@kNu.np`/YOM, IC HzaXO VBXO,_Nu"VS@eQ,NuH8]O$H&I(o&BCx%p JR@g2fJ@g@HNBEg>BA< <b;k`|<*f<`&<0< b ACp a $Wb<gt<.f6<*f4`$<0< b ACp a$Wb4g<߲<Lf g`<hggr@dp|?@0;N`````N`N``````````````````````````NNN````````````````` [0`|A`0A2"LaN@`\ [2"LaL@`JJEj `p0?4 La"TO@`*JEj `0H?4 LaTO@` JEj `p0?4 LaTO@`JEj `p0?4 LaTO@`@HN0\OLxNup24C8jxA aA pJWF@?@gA 2SAktaSb (Q2/@4/(jt@jtBgf 0Ao@@Alx?B?D`hH0$H&IB(v`H0$H&IvJWFCJBj4Cb6xJAkCc8Cf K0a0 JN` 0 JN0 Kap0DL Nu6x0/g f@ JaP0/g@AN0/g@ Ja,0/g@A N0/g g@ Ja0OLNuH0E6`H0E4&H6g8Kg SC JpNQ J0|gNL Nu00000000 H:$H&I(S&gfJg^+g`)ft,k x$ڹd SfRe`.&// Ka~$"J@k,f4(SSfRf& L\Nu3 p`"`&x,A'J'JE8'J & KaJ@kfRf"`H&H(k6+"+g0DtaJk+fZ"S"L Ip gSj`*| // " 0a"_"JkNgPAp SjH@" 0a\LJk*g,`0" LaDJkg&'LB@LNup`p`/?<ANA\OJkpNua3pNu//??<@NAO JkfNuaX3pNu3Nu|b2@?? /?<BNAO JjfSBg jX?<? p/?<BNAO Jk$`X?<? p/?<BNAO JkxЁ"kr?<? p/?<BNAO JkZ$`?<? p/?<BNAO Jk>$Ҁk8 $k0HzP <e/`/? ?<@NAO Jk b Nuab3pNu0<`///6?<?B?<BNAO (Bg?/<?<BNAO *Bg?/?<BNAO JWH*(&NuD@| |"b;NupNu   JgJgJgJgJg JgJgJfSHggggg ggf @NugHf8g@f0g8f(g0f g(fg fgfgg!epNupNuJfpNu g<g8g4g0g,g(g$g ggggg ggf @Nu"HJgJgJgJgJg JgJgJf SNuSeg gb pNuJfpNupNuH0$H|g|$bGrtgJ3kSJgtJ@f"p <0f:pgb<߶<Xf(pf"`N|f<0fg><߶<Xfg.Gd3d"3d&HCHCJCfԃԁd` & gSJ"L Nu3"p` 3!p& g"`//"4UB|"bZC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!`0123456789abcdefghijklmnopqrstuvwxyz/ ElB@BA2g2g!2ep` p`Jfp$_Nu/ $y$` JN,$j f$_Nu/?<HNA\O @Nu/?<INA\ONu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@  !"#  !"#???<FNA\ONu/?< NA\ONu yg.3A,NV fpNJ@g rpN8NuARGVARGVTMPDIR\%lx.$$$@(#)Tools/pipe.ttp, Copyright (c) Julian F. Reschke, Aug 04 1990pipeusage: %s [-v] command {| command}-v| > <%s executing: %s %s: broken SHELL|||STDERRr  :2    "          ( ~ ~f N  zoo l $* . >U.. ALIAS MAN 9 BACKUP MAN 9 BLITMODEMAN 9 CAT MAN 9 CD MAN 9 CHMOD MAN 9 COOKIE MAN 9 CP MAN 9  DATE MAN 9 DF MAN 9 bDIRS MAN 9  DU MAN 9 !{ECHO MAN 9 "ENV MAN 9 #ERRORFILMAN 9 $$EXIT MAN 9 %FILE MAN 9 &FIND MAN 9 'FKEY MAN 9 (TFOR MAN 9 )XFORMAT MAN 9 *@FREE MAN 9 ,HASH MAN *9 -INIT MAN +9 /KBRATE MAN +9 0KCLICK MAN +9 1LABEL MAN +9 2LS MAN +9 3MKDIR MAN ,9 5MORE MAN ,9 6NAME alias - give a command a new name SYNOPSIS alias [ name [ command ] ] DESCRIPTION With alias you can give a command a new name. Example: alias cp 'cp -v' causes that when you input "cp" the copying is always done verbose. Also usefull is: alias ls 'ls -cf'! Without parameters alias shows the list of defined aliases. If alias is called with only one parameter, then the alias for this name is deleted. SEE ALSO noalias(m) NAME backup - make safety copies of files. SYNOPSIS backup [-icv] files... DESCRIPTION Backup copies all the indicated files, while changing their extension to .BAK. OPTIONS -c, +confirm If the destination file already exists backup asks if the file may be overwritten. Possible answers on the question are 'y' (make the copy), 'n' (do not make the copy, continue with the next one), 'q' (quit the command) and 'a' (do not ask any questions any more from now one). -i, +interactive For each file the question is asked if the file should be copied or not. Possible answers are as with "-c". -v, +verbose Display each file name. SEE ALSO mv(m) NAME blitmode - switch blitter on or off SYNOPSIS blitmode [on|off] DESCRIPTION Blitmode without an option shows the current state of the blitter chip (not installed, on or off). With an argument the blitter is switched on, respectively off. NAME cat - concatenate the output from files to standard output SYNOPSIS cat [-l] [files...] DESCRIPTION cat copies the indicated files after each other to standard output, normally the screen. If no file is given then standard input is copied till the end of file is reached (CTRL-D or UNDO from the keyboard). OPTIONS -l, +linefeed Unix end-of-lines (\n) are replaced by TOS end-of-lines (\r\n). NAME cd - set current directory SYNOPSIS cd [dir] DESCRIPTION Changes to directory dir. Without arguments dir defaults to $HOME. Dir may also contain a drive prefix (e.g. C:\BIN). If CDPATH is defined in the environment and a change to dir is not possible then dir is appended to the individual entries of CDPATH in turn and a change to the resulting directory is attempted. SEE ALSO pwd(m) NAME chmod - change file attributes SYNOPSIS chmod [+-][aswhftlmc] files... DESCRIPTION Chmod changes the attributes of files. With + or - you can set respectively clear attributes. OPTIONS a (archive) Used by backup programs and "cp -a". Different versions of TOS treat this bit differently. Please look at the note in the "cp" section. c (check) For all files the state of the fastload bit is shown. f (fastload) The fastload bit is only supported from GEMDOS 0.21 of April 6, 1989 omward. This bit is not located in the directory entry but in the file header. When the fastload bit is set not all of the free memory is cleared at program start but only the part the program needs. h (hidden) Hides a file on the desktop. l (load to Fast-RAM) The program will be loaded in the TT Fast-RAM, if available, when started with Pexec(). m (malloc from Fast-RAM) Malloc() requests by the program are satisfied from the Fast-RAM if possible. s (system) Hides a file on the desktop. Intended for system files such as the hard disk driver. The system bit is not used by GEMDOS. Mupfel, the desktop and GEMINI evaluate the hidden bit, which you can use to prevent files from being shown. t (TT) Show TT program flags (see l and m). w (write enable) Set or cleat the write protection of a file. ERRORS Some programs do not run or do not run correctly when the fastload bit is set. Special care should be taken with accessories. Not all programs run in the TT Fast-RAM! SEE ALSO cp(m), ls(m) NAME cookie - show entries in the cookie jar SYNOPSIS cookie DESCRIPTION Cookie shows the individual entries in the cookie jar. NAME cp - copy files and directories SYNOPSIS cp [-icdvabsnM] file1 file2 cp [-icdvabsnM] files... dir cp -r [-a] dir1 dir2 DESCRIPTION Cp copies files. The first form copies file1 to file2. If file2 already exists it is created again. The second form copies all files to the directory dir. OPTIONS -a, +archive Only those files are copied which have their archive bit set. After a successfull copy the archive bit of the source file is cleared. Normally all file attributes are copied unchanged. -b, +bruteforce Write protected files are overwritten. -c, +confirm For existing destination files confirmation is asked if they may be overwritten. Possible answers to the question are 'y' (copy), 'n' (do not copy, continue with next one), 'q' (quit the whole copy operation) and 'a' (do not ask any more questins from now on). -d, +datekeep The modification date of the copy is set to the same date as the source file, otherwise the copy will have the current system date. -i, +interactive For each file it is asked if it should be copied or not. Possible answers are the same as with "-c". -M, +multifile 20 files are copied at once and then closed -- this gives a considerable speed increase with small files and slow media. -n, +nonexistent Files are only copied when the destination file does not yet exist. Together with the -a and -r options you can easily backup a complete partition to another one, e.g. if you have several hard disks. To copy all changed files on drive C: and not yet existing files on drive D: you would use the command "cp -anr c:\ d:\". -r, +recursive The complete file tree below dir1 is copied to dir2. If dir2 does not exist it is created. -s, +secure The copy is not immediately done to the destination file (as otherwise), but to an intermediate file. Only when this succeeds without errors, the destination file is deleted and the intermediate file is renamed. The intermediate file has the same name as the destination file, only the extension is replaced by $$$. When a file with this name already exists it is silently overwritten. -v, +verbose Every file name is displayed. ERRORS All GEMDOS versions before GEMDOS 0.21 from April 4, 1989 treat the archive bit erroneously! The definition of the archive bit is now "this file has been changed, it should be archived", before it was the other way around: "this file was archived" (i.e. the backup program should set it!). If you use the -a option with one of the older TOS versions, cp will give you a warning message. SEE ALSO chmod(m), mv(m), version(m) NAME date - set or show system date SYNOPSIS date [ hhmm | mmddhhmm[yy] ] DESCRIPTION Date shows the system date, respectively sets the system date when you give the date and time as parameter. NAME df - show available space on a medium SYNOPSIS df [-a|drv:] DESCRIPTION Df (disk free) shows how many kbytes are used and free on a GEMDOS drive, the total number of kbytes available and which volume name the medium has. Without arguments this is shown for the current drive. OPTIONS -a. +all The info is shown for all connected or the in the environment variable DRIVEMAP listed drives. If $DRIVEMAP is not defined then the BIOS function Drvmap() is used to determine which drives are connected. Because the drives A: and B: are always indicated, the system variable _nflops (address 0x4A6) is used to find out how many floppy drives are connected. If you specify a drive name (e.g. C:) then the free space is only shown for this drive. NAME dirs - display names of directories saved with pushd. SYNOPSIS dirs DESCRIPTION Displays the stack of directories saved with pushd. SEE ALSO pushd(m), popd(m) NAME du - show mass storage used by directories SYNOPSIS du directory... DESCRIPTION Du (disk usage) shows the space occupied by the given directories (or by "." when no argument is given). The total size of all files below the start directory, the number of files and the number of directories below the start directory are displayed. NAME echo - display the command arguments SYNOPSIS echo [arguments] DESCRIPTION The arguments are output sequentially (separated by spaces) on standard output. In the arguments the following special sequences are allowed: %% becomes % %t becomes TAB %n becomes CR/LF %r becomes CR %b becomes Backspace %f becomes Formfeed %c (only at the end of the last argument) suppresses the following CR/LF %0 start sequence for an arbitrary character which is represented by max 3 octal digits (0-7). For example "echo %033E" clears the screen. NAME env - display the environment SYNOPSIS env [ variable ] DESCRIPTION Env displays either the contents of the complete environment, or only the contents of the variable passed as argument. SEE ALSO show(m), setenv(m) NAME errorfile - set the file to which error messages are written SYNOPSIS errorfile [-p] [ [-a] file] DESCRIPTION With errorfile you can set the file to which Mupfel and also programs started by Mupfel should write their error messages. Every normal file name is allowed, as well as the special files aux:, con: and prn:. Normally con: is used. OPTIONS -p, +print Displays the name of the currently used file. -a, +append Appends the messages to the end of file. NAME exit - terminate Mupfel SYNOPSIS exit [value] DESCRIPTION MUPFEL or the currently executing Mupfel script is terminated. The return value to the caller is value or, if no argument is given, the return value of the last executed command from $?. NAME file - determine file type SYNOPSIS file files... DESCRIPTION File tries to determine the type of file by the extension and the contents of the first 512 bytes of the file. NAME find - find files SYNOPSIS find directory [ pattern ] DESCRIPTION Find searches starting with the given directory for all files whose names match one of the given patterns. Each pattern may be a normal wild card expression. Instead of a directory name you can also specify "-a". In that case find searches on all drives listed in $DRIVEMAP. If $DRIVEMAP is not defined then all connected drives are searched. SEE ALSO whereis(m) NAME fkey - set/show function key settings. SYNOPSIS fkey [key [text]] DESCRIPTION Without arguments the current settings for function keys F1 to F10 and Shift-F1 to Shift-F10 are displayed. The key argument may be a number between 1 and 20 or the name of a function key (F1, F2, ... F10, SF1, SF2, ... SF10). If this is the only argument the setting of this key is cleared. The third argument specifies the new setting for this key. If the last character of a function key string is "|" then a CR is appended when the key is pressed. NAME for - multiple execution of a command with a variable SYNOPSIS for [-v] vname in list do command DESCRIPTION for assigns vname sequentially the values from list and starts the command via system(). OPTIONS -v (verbose) Display for each command the command line. EXAMPLE for i in *.app *.acc *.ttp *.tos *.prg do 'file $i' ENVIRONMENT STDERR If this environment variable exists stderr (channel 2) is used unchanged. Otherwise it is redirected to stdout, if this points to a character oriented device. NAME format - format diskettes SYNOPSIS format [-yv][-s 1|2][-c 9|10][-l label] drv: DESCRIPTION With format you can format diskettes with 80 tracks. The default settings for format are 9 sectors per track, double sided, no label. For safety format starts formatting from track 79. The formatting can be interrupted by ESC or CTRL-C. OPTIONS -c secs, +sector secs Number of sectors per track (normally 9). -l label, +label label New label for the diskette. If -l is omitted then a possible present label is kept. If the argument of -l is a single minus sign then the diskette does not get a label, even if one existed before. -s sides, +sides sides Number of sides (normally 2). -v, +verbose The just formatted track and side are displayed. -y, +yes Normally format asks if the diskette really should be formatted. With the -y option format answers this question itself with yes. SEE ALSO init(m), label(m) NAME free - display available memory SYNOPSIS free [-l] DESCRIPTION Free displays the size of the free memory and the largest contiguous memory block. OPTIONS -l, +long The list with all free blocks and their sizes is displayed. NAME hash - show/clear command hash table SYNOPSIS hash [-r][-d directory] DESCRIPTION Without arguments the hash table for external commands is displayed. The table headings mean: Num.: Number of calls of this program. Eff.: Needed effort for first call. Command: Command name. Full path: Full path name of the called program. OPTIONS -d, +directory All programs in the given directory and in all directories below, whose extension is listed in $SUFFIX, are entered in the hash table. The hash command with this option is normally used in the autostart file MUPFEL.MUP. By hashing a lot of programs in this way you can save a considerable amount of entries in $PATH, because there each directory has to be listed separately. -r, +remove The hash table is cleared. When the environment variables $PATH or $SUFFIX are changed the table is cleared automatically. NAME init - initialize diskettes SYNOPSIS init [-y][-s 1|2][-c 9|10][-l label] drv: DESCRIPTION Init overwrites the firs two tracks of a diskette in drive drv (A: or B:) with zero sectors. This clears the root directory and the FAT (File Allocation Table). Then the diskette gets a new boot sector with a random serial number. OPTIONS -c secs, +sector secs Number of sectors per track (normally 9). -l label, +label label New label for the diskette. If -l is omitted then a possible present label is kept. If the argument of -l is a single minus sign then the diskette does not get a label, even if one existed before. -s sides, +sides sides Number of sides (normally 2). -y, +yes Normally init asks if the diskette really should be initialized. With the -y option init answers this question itself with yes. SEE ALSO format(m), label(m) NAME kbrate - set the key repeat speed SYNOPSIS kbrate [-i start][-r rate] DESCRIPTION Kbrate sets the key repeat speed. Without parameters the current settings are output. The arguments start and rate are given in milliseconds. OPTIONS -i start, +initial start Delay till start of repeat. -r rate, +repeat rate The repeat speed. NAME kclick - switch key click on or off. SYNOPSIS kclick [on|off] DESCRIPTION kclick without argument shows if the key click is switched on. With on or off as argument you can switch the key click on repspectively off. NAME label - set or display the label of a GEMDOS drive. SYNOPSIS label [drv [volumename]] DESCRIPTION Label alone shows the label of the current drive. When drv is specified the label of this drive is displayed. With three arguments the label of drive drv is changed to volumename. Volumename may not be the name of a file or directory in the root directory. If volumename consists of a minus sign the label of the given drive is cleared. ERRORS Note: Some versions of GEMDOS 0.21 do not support the function of creating a label, in others (e.g. the one from April 6, 1989) it is not possible to clear a label completely (you can only replace the name by another one). SEE ALSO format(m), init(m), version(m) NAME ls, lc, ll, lu - list contents of directories SYNOPSIS ls [-srtldcufFh] [files...] lc [-srtldufFh] [files...] ll [-srtdcufFh] [files...] lu [-srtldcfFh] [files...] DESCRIPTION Ls lists the contents of directories. Normally the files are listed in a single column sorted alphabetically. If an argument is a directory then all files in this directory are listed. This normal behaviour of ls can be changed with the following options: OPTIONS -c, +columns The output is columnwise with max $COLUMNS characters per line. -d, +dirs List directories as such. -f, +type The names of directories get a "\" appended and executable programs (i.e. programs whose extension is listed in $SUFFIX) a "*". -F, +xtype Same as -f, additionally programs which have the fast load bit set are shown with a "+" instead of a "*". -h, +hidden Files with the hidden attribute set are listed. -l, +long Besides the name also the attributes, the size and the modification date and time are listed. This option overrides -c. -r, +reverse The sort order is reversed. -s, +size The output is not sorted by name, but by size, the largest file first. -t, +time The output is sorted by modification date, the newest file first. -u, +unsorted The output is not sorted, but in the order in which the files are put on the disk, respectively diskette. This option overrides -s, -t and -r. Lu is short for ls -u, ll for ls -l and lc for ls -c. SEE ALSO chmod(m) NAME mkdir - create directories SYNOPSIS mkdir [-p] dir... DESCRIPTION New directories are created with mkdir (make directory). This will only succeed if another directory or another file with the same name does not exist. OPTIONS -p, +path All possible missing directories in the given path are also created. EXAMPLE 'mkdir +path \test\merry\andrew\new' creates sequentially the directories \test, \test\merry, \test\merry\andrew and \test\merry\andrew\new. NAME more - show text files SYNOPSIS more [files...] DESCRIPTION More shows the contents of the given files. More outputs one page at a time (dependent on $ROWS), then it waits for input. The allowed inputs and their function are (^X means Control-X, upper and lower case have the same function): SPACE, F, ^F, Shift-Down-Arrow One page forward RETURN, J, +, Down-Arrow One line forward ^B, B, Shift-Up-Arrow One page backward K, -, Up-Arrow One line backward 0, Clr/Home Back to start of file $, G, Shift-Clr/Home To end of file ESC, UNDO, Q, ^C Quit more N To next file P To previous file HELP, H Show help /, ? Search (/=forward, ?=backward) A Repeat last search ^G Show info After the / and ? commands more expects as input the string to be searched on the last line. An empty line repeats the last search (same as 'A'). The search is always exact, i.e. upper and lower case are significant. More always tries to display the found line as high as possible on the screen. The search direction for 'A' is automatically reversed when the beginning or end of file is reached during the search. NOTE: The output of more should not be directed because it contains vt52 escape sequences. MV MAN ;9 9(NOALIAS MAN <9 ;PAUSE MAN A9 <fPIPE MAN A9 =POPD MAN B9 >PRINT MAN B9 ?PRTCONF MAN B9 @PUSHD MAN B9 APWD MAN C9 BxRENAME MAN C9 CRM MAN C9 DPRMDIR MAN C9 ERSCONF MAN C9 F9SET MAN E9 Gk SETENV MAN F9 KSETSCRAPMAN F9 L SHOW MAN F9 NSHRINK MAN F9 O`TIMER MAN G9 QTOUCH MAN H9 RTREE MAN H9 SVERSION MAN K9 TWC MAN K9 UWHEREIS MAN L9 VzHMELEONTXT ]9 -NAME mv - move/rename a file SYNOPSIS mv [-icvb] file1 file2 mv [-icvb] files... dir mv [-icv] dir1 dir2 DESCRIPTION Mv renames files. This works only within a logical drive by means of the GEMDOS function Frename(). When source and destination are on different drives first a copy is made (by cp) and then the source file is deleted. The first form renames file1 to file2. If file2 already exists, it is created again. The second form "moves" all files to directory dir. The third form renames the directory dir1. This works only for GEMDOS versions 0.21 and later. The modification date remains unchanged. OPTIONS -b, +bruteforce Write protected files are overwritten, respectively renamed. -c, +confirm If a destination file already exists confirmation is asked if it really should be overwritten. Possible answers are 'y' (overwrite), 'n' (do not overwrite, continue with next one) and 'a' (do not ask any questions any more). -i, +interactive For each file confirmation is asked if it should be moved or not. Possible answers as with "-c". -v, +verbose Every file name is displayed. SEE ALSO cp(m), version(m) NAME nolias - execute a command without alias substitution SYNOPSIS noalias command... DESCRIPTION Noalias causes that the following command is executed without alias substitution. In this way you can ensure that batch files always execute the same command independent from the aliases defined by the user. OPTIONS None. SEE ALSO alias(m) NAME pause - display arguments and wait for a key SYNOPSIS pause [arguments] DESCRIPTION With the pause command you can wait for a key press (especially usefull in batch files). When there are arguments these are processed in the same way as with the echo command (however the CR/LF at the end is never output), otherwise the string "Please press RETURN" is output. Then pause waits for (almost) any key (Shift, Ctrl, Alt, Caps-Lock, the mouse and joystick buttons as well as the reset button do not have the wanted effect). SEE ALSO echo(m) NAME pipe - execute commands in a pipe-line SYNOPSIS pipe [-v] command {| command} DESCRIPTION Pipe executes the given commands where the standard output of one command is connected to the standard input of the following command. The commands are started with system(), the pipe-line is realized with temporary files. OPTIONS -v (verbose) For every executed command the command line is displayed. EXAMPLE pipe ls * | fgrep Mupfel | more ENVIRONMENT STDERR If this environment variable exists stderr (channel 2) is used unchanged. Otherwise it is redirected to stdout, if this points to a character oriented device. TMPDIR Directory for the temporary files. NAME popd - change to the directory saved with pushd SYNOPSIS popd DESCRIPTION popd pops the directory last saved with pushd from the stack and does a cd to it. SEE ALSO dirs(m), pushd(m), cd(m) NAME print - print files SYNOPSIS print [-f][-l lines][-t size] files... DESCRIPTION print prints the specified files on the printer. OPTIONS -f, +formfeed A form feed is appended after the end of file. -l, +lines After the given number of lines a form feed is sent. -t size, +tabsize size Tabs are expanded to size spaces. NAME prtconf - show/set printer configuration SYNOPSIS prtconf [-wmcbealdrpsf] DESCRIPTION Prtconf sets the parameters for the printer interface. Without arguments the current parameters are shown. OPTIONS The options next under each other are mutually exclusive, therefore you should only specify one from each block. Otherwise the last specified option from each block is effective. -w, +wheel Daisy wheel printer -m, +matrix Matrix printer -c, +color Color printer -b, +black B/W printer -e, +epson Epson printer (1920 pixels/line) -a, +atari Atari printer (1280 pixels/line) -l, +nlq Letter quality -d, +draft Draft quality -r, +rs232 Serial interface -p, +parallel Parallel interface -s, +singlesheet Single sheet -f, +fanfold Continuous paper NAME pushd - save directory SYNOPSIS pushd [ dir ] DESCRIPTION Pushd saves the specified directory on a stack. Without arguments the current directory is saved. Relative path names (not starting with \ or a drive name) are first expanded to absolute path names. The directory stack saved with pushd can be displayed with the dirs command. SEE ALSO dirs(m), popd(m) NAME pwd - print current directory SYNOPSIS pwd [-a] DESCRIPTION Pwd (print working directory) shows the current directory on the current drive. OPTIONS -a, +all The info is shown for all connected drives or the drives listed in the environment variable DRIVEMAP. If $DRIVEMAP is not defined then the BIOS function Drvmap() is used to determine the drives which are connected. Because drives A: and B: are always indicated, the system variable _nflops (address 0x4A6) is used to find out how many floppy drives are connected. NAME rename - give files a new extension SYNOPSIS rename [-icv] ext files... DESCRIPTION Rename renames all specified files by changing their extension to ext. For files without an extension ext is appended. Ext may start with a dot, but its length (excluding the dot) must be between 1 and 3 characters. OPTIONS -c, +confirm For already existing destination files confirmation is asked if they should be overwritten. Possible answers are 'y' (rename), 'n' (do not rename, continue with next one), 'q' (quit rename command) and 'a' (do not ask questions any more from now on). -i, +interactive For each file confirmation is asked if it should be renamed or not. Possible answers are as for "-c". -v, +verbose Each file name is displayed. SEE ALSO cp(m), mv(m), backup(m) NAME rm - delete files SYNOPSIS rm [-rivfb] files... DESCRIPTION Rm deletes single files or (with -r) recursively complete directories with their contents. OPTIONS -b, +bruteforce Delete also write protected files. -f, +failure Rm will not give an error message when a file to be deleted does not exit. The return value of rm in this case is always 0. -i, +interactive For each file confirmation is asked if it should be deleted or not. Possible answers are 'y' (delete file), 'n' (do not delete file, continue with next one) or 'q' (quit rm command). -r, +recursive Delete the complete specified directory tree. -v, +verbose Display every file name. SEE ALSO rmdir(m), chmod(m) NAME rmdir - delete directories SYNOPSIS rmdir dir... DESCRIPTION Rmdir (remove directory) deletes the specified directories. Rmdir can only delete directories which do not contain any files or other directories. SEE ALSO rm(m) NAME rsconf - configure serial interface SYNOPSIS rsconf [-b baudrate][-xrn][-p parity][-s stopbits][-c charsiz] DESCRIPTION With rsconf you can set the baud rate and other parameters of the serial interface. OPTIONS -b baudrate, +baudrate baudrate Set baud rate to baudrate -c charsiz, +charsize charsiz Number of data bits -n, +noflow No flow control -p par, +parity par Set parity to par. Par may be one of 'e' (even parity), 'o' (odd parity) or 'n' (no parity). -r, +cts Use RTS/CTS flow control -s sbits, +stopbits sbits Sbits may be '1' for one stopbit, '2' for 2 stopbits or '3' for 1.5 stopbits -x, +xon Use XON/XOFF flow control NAME set - set/show internal variables SYNOPSIS set [var [value]] DESCRIPTION Mupfel uses except the environment also some internal variables. These variables are used to control internal functions as well as to pass arguments to batch files. These variables can be referenced in the same way as the environment variables by prefixing them with a '$' character. The following variables are defined: Variables which cannot be changed by the user 0,1,...,9 The first 10 arguments for a batch file ($0 contains the name of the batch file). * All arguments of a batch file. # The number of arguments for a batch file. ? The return value of the last executed command. cwd This variable contains the name of the current directory (cwd stands for current working directory). drivelist This variable contains a list of all physically connected floppy and disk drives. shellcount This variable counts how often Mupfel is loaded in memory. Variables which may be changed by the user history This variable can be used in the MUPFEL.MUP file (only there!) to set the size of the history list. The default value is 20. histsave When this variable is defined the current command history is saved when Mupfel is terminated in a file with the name specified in the environment variable HISTFILE. If HISTFILE is undefined the name $HOME\MUPFEL.HST is used. When HOME is undefined the history is not saved. keepfree With this variable you can specify how much memory the cp(m) and mv(m) commands should NOT allocate (important for example when using Alex Essers 'FlexDisk'!). If keepfree is undefined it defaults to 8192. nohistdouble If this variable is defined then commands are only entered in the history if they are not yet in the history list. screensave If this variable is defined then before the execution of GEM programs the current text screen is saved and restored after program execution. To do this at least 32 KB memory is dynamically allocated, the exact size is determined by the number of pixels and planes (using v_opnvwk() and vq_extnd()) and the screen is copied with vro_cpyfm(). slashconv If this variable is defined then all occurrences of / are changed to \ when they do not occur within quotes. Without arguments set displays the current values of the internal variables. 'set var' clears the value of var. 'set var value' assigns value to var. The variable names are fixed internally. You cannot have environment variables with the same name. SEE ALSO setenv(m), show(m) NAME setenv - display, set or clear the environment SYNOPSIS setenv [ var [ val ] ] DESCRIPTION Setenv displays the contents of all environment variables when no arguments are given. With one argument the environment variable with this name is cleared (if it exists). With two arguments the value val is assigned to the variable var. SEE ALSO env(m), show(m) NAME setscrap - set/show the clip board path. SYNOPSIS setscrap [ -fq ] [ dir ] DESCRIPTION With setscrap you can show or set the AES clip board path. Setscrap without arguments shows the current clip board path. If dir is given as an argument the clip board path is set to the specified directory. The name must be an absolute path name, i.e. it must start with a drive name (for example "C:\CLIPBRD". Digital Research recommends as clip board path the directory CLIPBRD on the boot drive). The directory must already exist. Normally setscrap only allows setting the clip board path when it is not yet defined. OPTIONS -f The -f (force) option always sets the specified path. -q The -q (quiet) option suppresses all error messages. It is recommended to use this command in the auto start file MUPFEL.MUP in the following way: setenv SCRAPDIR c:\clipbrd setscrap -q $SCRAPDIR NAME show - show the environment SYNOPSIS show [ variable ] DESCRIPTION Show either shows the contents of all environment variables or only the contents of the variable specified as argument. SEE ALSO env(m), setenv(m) NAME shrink - shrink available memory SYNOPSIS shrink [-b val][-t val][-f][-i] DESCRIPTION The purpose of shrink is to decrease the available memory. This command is intended for programmers with "large" computers in order to test if programs run correctly on machines with less memory. The value val can be specified in octal (recognized by a leading 0), decimal or hexadecimal (recognized by a leading 0x or 0X). To make specifying large values simple you can use "m" or "k" as a suffix for kilo respectively mega bytes. The following values are identical: 20480 050000 20k 0x14k The result of several sequential calls of shrink -b or shrink -t is accumulated. INFO: shrink reserves memory with the GEMDOS function Malloc(). This does not allow to determine the TPA size of child processes exactly, but it is sufficient for testing purposes. OPTIONS -b val, +by val Decrease memory with val. -f, +free Make all allocated memory available again. -i, +info Shrink shows how much memory is allocated and how much is still available. This is also done when shrink is called without arguments. -t val, +to val The available memory is decreased to val. SEE ALSO free(m) NAME timer - set/show stop watch SYNOPSIS timer [-s] DESCRIPTION Timer with the -s (+start) option sets an internal location to the current value of the system variable _hz_200 (0x4ba). Without an argument timer displays the difference between this location and the current value of _hz_200 converted to seconds. At the start of Mupfel this location is initialized, e.g. when you do not use timer -s timer measures the elapsed time since Mupfel was started. OPTIONS -s, +start Start stop watch. EXAMPLE timer +start Reset internal timer location ... Any commands timer Display time elapsed since timer +start NAME touch - set modification date of files SYNOPSIS touch [-c] [-d hhmm|ddmmhhmm[yy]] files... DESCRIPTION Touch sets the modificatin date for all files to the current date. When a file does not exist it is created. OPTIONS -c, +create Do not create non existing files. -d, +date The modification date to be set. The format is the same as in the date(m) command. SEE ALSO date(m) NAME tree - show directory hierarchy SYNOPSIS tree [-di] [-f filespec] [-p path] DESCRIPTION Shows the directory hierarchy starting from path or from the current directory. OPTIONS -d, +dironly Show only directory names. -f, +filespec Only files which match the specified pattern are shown. The default for filespec is "*". Note: If filespec contains wildcards it has to be quoted! -i, +indent Show hierarchy level by indentation. -p, +path Start directory. If this is the only option then "-p" may be omitted, e.g. "tree -p xxx" is equivalent to "tree xxx". SEE ALSO find(m) NAME version - display several version numbers SYNOPSIS version [-amgdt] DESCRIPTION Version displays the relevant version numbers of the system software and of Mupfel. Without arguments the Mupfel version number is displayed. OPTIONS -a, +all Show all version numbers. -d, +gemdos Show GEMDOS version number. -g, +gem Show GEM version number. -h, +harddisk Show the version number of an AHDI 3.01 compatible hard disk driver, if one is installed. Otherwise a corresponding message is displayed. -m, +mupfel Show Mupfel version number. -t, +tos Show TOS version number, manufacturing date and country code. NAME wc - count characters, words and lines SYNOPSIS wc [-lcw] files... DESCRIPTION Wc (word count) counts lines, words and characters in files. If one or more options are given only the corresponding info is given. If several files are specified a summary line is displayed at the end with the corresponding totals. OPTIONS -c, +charcount Count characters. -l, +linecount Count lines. -w, +wordcount Count words. NAME whereis - locate a command or program SYNOPSIS whereis command DESCRIPTION Searches for command in the alias list, the internal command list, the hash table and in $PATH. Lower case arguments are first searched internally and then in $PATH, for upper case arguments it is the other way around. SEE ALSO hash(m), alias(m) . >UW.. EXARG DOC 8 X LSAMPLES DOC 8 l4SYSTEM C 8 nVAFUNC H 8 pRVAFUNC O 8 xVAPROTO H 8 }XARG C 8 +GEMDOS EXTENDED ARGUMENT (ARGV) SPECIFICATION Introduction The Pexec() function of GEMDOS allows a program to pass to a child process a command line up to 125 characters long, with arguments separated by spaces. No provision is made in GEMDOS for the child to know its own name. This makes it difficult for C programs to correctly fill in argv[0], the standard place where a C program finds the command which invoked it. Because the command line arguments are separated by spaces, it is difficult to pass an argument with an embedded space. This document will specify a method of passing arguments which allows arbitrary argument length, embedded spaces, and support for argv[0]. Standard Argument Passing The Pexec Cookbook specifies how to use Pexec() to launch a child process, passing a command tail (argument string) and an environment. Before getting into the extended argument scheme, let's review how arguments are normally passed to a child. A parent process builds a command line into an argument string - a null terminated string whose first byte contains the length of the rest of the string - and its address is passed as one of the arguments to Pexec(). GEMDOS copies this argument string to the basepage which it creates for the child. Thus the parent is responsible for gathering all the child's arguments into one string. This is normally handled by a library exec() function. The child is responsible for parsing the string of space-separated arguments back into an array of strings. This parsing is normally handled by the child's startup code. Evolution Several methods of bypassing the limits imposed by Pexec() have been used by GEMDOS programs. Some allow a user to specify a file on the command line which contains the rest of the arguments. Others get a pointer to the arguments, or the arguments themselves, from the environment string. Most MS-DOS programs use a command file for the extra arguments. This can be inconvenient for a user, cluttering the file system with command files, and making the operation of batch files and makefiles more confusing. Several "standards" have arisen on the ST which use the environment to pass arguments. While more convenient than command files, these standards have other problems. Some rely on sharing memory between parent and child processes. Some take advantage of undocumented features of the operating system to get argv[0]. Others give the child process no way to validate that the arguments it finds are intended for it. Rationale In order to pass more than the standard 125 characters worth of arguments to a child, or to let the child find its name, the parent must place the extra information in a place where the child can access it safely and legally. The most convenient place is in the child's environment string. An environment string is a series of null-terminated strings of the format "VARIABLE=value" (e.g. PATH=c:\bin,c:\etc, or ShellP=YES). The last null-terminated string in the environment is followed by a zero byte, thus two consecutive nulls indicates the end of the environment. The environment is allocated for the child by GEMDOS, it is owned by the child, and its contents can be specified by the parent. The child must have some way of knowing that the arguments which it finds in its environment are intended for it. The child may have been invoked by a parent which does not conform to this specification. Such a parent would leave _its_ arguments in the environment, and could pass that environment on to the child. The child would mistakenly interpret its parent's arguments as its own. Placing arguments in the environment passed to the child gets around all of the command line limits of the standard Pexec() command tail. Because there is no limit on the length of the environment, arbitrary length arguments are supported. Arguments placed in the environment are null terminated, so they may contain spaces. A parent can also place the name of the command with which it invokes the child in the child's environment, providing support for argv[0]. Validation of the extended arguments can be placed in the standard Pexec() command line, by assigning a special meaning to an invalid length byte. The GEMDOS Extended Argument Specification This specification uses the convention that the presence of an environment variable named ARGV (all upper case) indicates that extended arguments are being passed to the child in its environment. This means that ARGV is a "boolean" environment variable. For the purpose of this specification, its value is not significant, but its presence indicates that the strings following it are the arguments for the child. Implementations of this specification are free to give the ARGV environment variable any value. The ARGV environment variable must be the last one in the environment passed to the child, so that the child can truncate its environment at that point, and treat everything before the ARGV as environment, and everything after it as arguments. The first argument to the child (argv[0]) is the first string in the environment after the ARGV variable. This argument is the "pathname" parameter passed by the parent to Pexec(). The remaining arguments are those that the child would normally find in the command tail in its basepage. Even if all of the arguments would normally fit in a child's command tail, the parent should set up the arguments in the environment to take advantage of the benefits of this extended argument scheme. As many arguments as will fit in the command tail will be passed there as well as in the environment, to support non-conforming programs. As a flag that arguments are also in the environment, the length byte of the command tail will be 127 (hex 7f). Non-conforming programs should not have a problem with this length byte, because it is longer than the maximum 125 bytes allowed by Pexec(). As an aside, the Pexec Cookbook erroneously implies that a command line can be 126 or 127 characters long. In fact, GEMDOS only copies to the child's basepage up to 125 bytes, or until it encounters a null, from the argument string passed to Pexec(). It ignores the length byte, placing a null at the same place it found one or at the 126th byte if no null is found. This has several implications: the length byte is not validated by GEMDOS (necessitating validation in the child's startup code, but also making this extended argument spec possible), and the null terminator _can_ be located after the end of the real command tail (the Desktop places a CR character after the command tail and before the null). The ARGSTART.S startup code listing below demonstrates how to correctly validate and parse a GEMDOS command tail. A child which finds an ARGV environment variable can use the command tail length byte value of 127 to validate that the arguments following the variable are valid, and not just left over from a non-conforming parent which left its own ARGV arguments in the environment. Because the strings in the environment following an ARGV variable are not environment variables, a child should truncate its own environment at the ARGV variable by changing the 'A' to a null. Implementation: Parental Responsibilities To pass arguments in the environment, a parent must create an environment string for the child. This can be achieved by first allocating as much space as is used in the parent's own environment, plus enough room for the ARGV variable and the arguments to the child, and then copying the parent's environment to the newly allocated area. Next, the ARGV variable must be appended, since it must be the last variable in the child's environment string. Following the ARGV variable is the null-terminated pathname of the child as passed to Pexec(), then the null-terminated arguments to the child, followed by a final null byte indicating the end of the environment. After setting up the arguments in the environment, the parent must place as many arguments as it can fit in the command tail it passes to Pexec(). This way, a child which does not conform to this specification can still get arguments from the command tail in its basepage. When placing arguments in the environment, the parent must set the first (length) byte of the command tail to 127 (hex 7f), validating the arguments in the environment. Here is an example execv() library routine in C. It uses three local utility routines, e_strlen(), e_strcpy(), and str0cpy() for getting environment size and copying strings into the environment created for the child. /* EXECV.C - example execv() library routine * ================================================================ * 890910 kbad */ long Malloc( long nbytes ); long Pexec( short mode, char *filename, char *tail, char *env ); long Mfree( void *address ); /* Return the total length of the characters and null terminators in * an array of strings. * `strings' is an array of pointers to strings, with a null pointer * as the last element. */ static long e_strlen( char *strings[] ) { char *pstring; long length = 0; while( *strings != 0 ) { /* Until reaching null pointer, */ pstring = *strings++; /* get a string pointer, */ do { /* find the length of this string, */ ++length; /* using do-while to count the */ } while( *pstring++ != 0 ); /* null terminator. */ } return length; /* Return total length of all strings */ } /* Copy a string, including the null terminator, and return a pointer * to the end of the destination string. */ static char * str0cpy( char *dest, char *source ) { do { /* use do-while to include null terminator */ *dest++ = *source; } while( *source++ != 0 ); return dest; } /* Copy an array of strings into an environment string, and return a pointer * to the end of the environment string. * `strings' is an array of pointers to strings with a null pointer * as the last element. * `envstring' points to the environment string. */ static char * e_strcpy( char *envstring, char *strings[] ) { while( *strings != 0 ) { envstring = str0cpy( envstring, *strings ); ++strings; } return envstring; /* Return end of environment string */ } /* Run a program, passing it arguments according to the * GEMDOS Extended Argument Spec. * * `childname' is the relative path\filename of the child to execute. * `args' is an array of pointers to strings to be used as arguments * to the child. The last array element must be a null pointer. * `environ' is a global array of pointers to strings * which make up the caller's environment. */ long execv( char *childname, char *args[] ) { long envsize, ret; char *parg, *penvargs, *childenv, *pchildenv; short lentail; char argch, tail[128], *ptail; static char argvar[] = "ARGV="; extern char *environ[]; /* * Find out how much memory we'll need for the child's environment */ envsize = e_strlen( environ ); /* length of environment */ envsize += e_strlen( args ); /* plus command tail args */ /* plus length of argv[0] */ parg = childname; do { /* use do-while to include null terminator */ ++envsize; } while( *parg++ != 0 ); /* plus length of ARGV environment variable and final null */ envsize += 7; envsize += envsize & 1; /* even # of bytes */ /* * Allocate and fill in the child's environment */ ret = Malloc( envsize ); if( ret < 0 ) return ret; /* Malloc error */ childenv = (char *)ret; pchildenv = e_strcpy( childenv, environ ); /* copy caller environment */ pchildenv = str0cpy( pchildenv, argvar ); /* append ARGV variable */ pchildenv = str0cpy( pchildenv, childname ); /* append argv[0] */ penvargs = pchildenv; /* save start of args */ pchildenv = e_strcpy( pchildenv, args ); /* append args */ *pchildenv = 0; /* terminate environment */ /* put as much in the command tail as will fit */ lentail = 0; ptail = &tail[1]; while( (lentail < 126) && (penvargs < pchildenv) ) { argch = *penvargs++; if( argch == 0 ) { *ptail++ = ' '; } else { *ptail++ = argch; } } /* terminate command tail and validate ARGV */ *ptail = 0; tail[0] = 127; /* * Execute child, returning the return code from Pexec() */ ret = Pexec( 0, childname, tail, childenv ); Mfree( childenv ); return ret; } /* End of execv() example code */ Implementation: Prenatal Responsibilities A program's startup code must handle getting extended arguments out of the environment. The startup code should get the basepage pointer off the stack, then get the environment pointer from the basepage, and search the environment for "ARGV=". If "ARGV=" is found, the command line length byte in the basepage is checked. If the command line length byte is 127, then the arguments in the environment are valid. The first argument begins after the first null following the "ARGV=". It is important not to assume that the null follows immediately after the "ARGV=", because some implementations may assign a value to the ARGV environment variable. After setting up an array of pointers to the arguments, the startup code should set the 'A' of the "ARGV" variable to null, thus separating the environment from the argument strings (remember: a double null terminates the environment). Here is some example C startup code which shows how a child could look for arguments in its environment: * ARGSTART.S - example C startup code * using GEMDOS Extended Argument Specification * ================================================================ * 890910 kbad .globl _main ; external, C entry point .globl _argv0 ; external, name used for argv[0] if no ARGV .globl _stksize ; external, size of application stack .globl _basepage ; allocated here, -> program's basepage .globl _environ ; allocated here, -> envp[] .globl _argvecs ; allocated here, -> argv[] .globl _stklimit ; allocated here, -> lower limit of stack .BSS _basepage: ds.l 1 _environ: ds.l 1 _argvecs: ds.l 1 _stklimit: ds.l 1 .TEXT _start: move.l 4(sp),a5 ; get basepage move.l a5,_basepage ; save it move.l 24(a5),a0 ; bss base add.l 28(a5),a0 ; plus bss size = envp[] base move.l a0,_environ ; save start of envp[] move.l a0,a1 ; start of env/arg vectors move.l 44(a5),a2 ; basepage environment pointer tst.b (a2) ; empty environment? beq.s nargv ; yes, no envp[] lea.l (sp),a4 ; use dummy return pc on stack for ARGV test * --- fill in the envp[] array nxenv: move.l a2,(a1)+ ; envp[n] move.l a2,a3 nxen1: tst.b (a2)+ bne.s nxen1 ; get the end of this variable tst.b (a2) ; end of env? beq.s xenv * --- check for ARGV move.b (a3)+,-(a4) ; get 1st 4 bytes of this var move.b (a3)+,-(a4) move.b (a3)+,-(a4) move.b (a3)+,-(a4) cmp.l #'VGRA',(a4)+ ; is it ARGV? bne.s nxenv cmp.b #'=',(a3) ; is it ARGV=? bne.s nxenv clr.b -4(a3) ; ARGV marks the end of our environment cmp.b #127,$80(a5) ; command line validation? bne.s nargv ; nope... and we're done with the env. * --- got an ARGV=, create argv[] array clr.l (a1)+ ; terminate envp[] move.l a1,_argvecs ; save base of argv[] nxarg: move.l a2,(a1)+ ; argv[n] nxar1: tst.b (a2)+ bne.s nxar1 tst.b (a2) bne.s nxarg * --- end of environment xenv: move.l _argvecs,d0 ; if we got an argv[] bne.s argok ; don't parse command tail * --- No ARGV, parse the command tail * NOTE: This code parses the command tail IN PLACE. This can cause problems * because the default DTA set up by GEMDOS for a program is located * in the command tail part of the basepage. You should use Fsetdta() * to set up your own DTA before performing any operations which could * use the DTA if you want to preserve the arguments in the command tail. nargv: clr.l (a1)+ ; terminate envp[] move.l a1,_argvecs ; base of argv[] move.l #_argv0,(a1)+ ; default name for argv[0] lea 128(a5),a2 ; command tail move.b (a2)+,d2 ; length byte ext d2 moveq #125,d1 ; validate length cmp d1,d2 bcs.s valen move d1,d2 ; if invalid length, copy all of tail valen: clr.b 0(a2,d2) ; null tail because desktop inserts moveq #' ',d1 ; space terminator get1: move.b (a2)+,d2 ; null byte? beq.s argok ; if so, we're done cmp.b d1,d2 ; strip leading spaces beq.s get1 subq #1,a2 ; unstrip start char move.l a2,(a1)+ ; and store that arg get2: move.b (a2)+,d2 ; next char beq.s argok ; if null, we're done cmp.b d1,d2 ; if not space... bne.s get2 ; keep looking clr.b -1(a2) ; terminate argv[argc] in the command tail bra.s get1 ; get next arg argok: clr.l (a1)+ ; terminate argv[] * --- allocate stack move.l a1,_stklimit ; end of env/arg vectors is stack limit add.l _stksize,a1 ; allocate _stksize bytes of stack move.l a1,sp ; set initial stack pointer * --- release unused memory sub.l a5,a1 ; size to keep move.l a1,-(sp) move.l a5,-(sp) ; base of block to shrink pea $4a0000 ; Mshrink fn code + junk word of 0 trap #1 lea 12(sp),sp ; pop args * * Everything beyond here depends on implementation. * At this point, _environ points to envp[], _argvecs points to argv[], * and _stklimit points to the end of the argv array. Thus argc can * be calculated as ((_stklimit-_argvecs)/4)-1. * _main could be invoked as follows: * move.l a5,-(sp) ; basepage move.l _environ,-(sp) ; envp[] move.l _argvecs,-(sp) ; argv[] move.l _stklimit,d0 ; 4 bytes past end of argv[] sub.l (sp),d0 ; (argc+1) * sizeof( char * ) asr.l #2,d0 ; argc+1 subq #1,d0 ; argc move d0,-(sp) jsr _main ; call mainline lea 14(sp),sp ; pop args A Final Note This specification was formulated with careful deliberation, and with input from several companies and developers who have created development tools for GEMDOS. The Mark Williams extended argument passing scheme was the main influence for this specification, because it has been in use, and supported by Mark Williams and other companies for several years. This specification is very similar to the Mark Williams scheme, with the following important exceptions: 1) Under the specification, the arguments after the ARGV environment variable may be validated by checking the command tail length byte. The Mark Williams execve() library function uses the command tail length byte as a telltale, but it is not checked by the crts0 startup code. This validation is important for the reasons mentioned in the Rationale section above. 2) The specification allows the ARGV environment variable to take on any value. Mark Williams uses the value of ARGV as an iovector, which is described in the Mark Williams documentation. The iovector should no longer be needed, as its primary purpose was to simplify the MWC implementation of the C library function isatty(). 3) Some versions of the MWC startup code do not require the ARGV= to have an `='. Because ARGV is an actual environment variable in the specification, the equals character is required. The folder "samples" contains some documents and examples how to write programs usind features of Gemini. These informations are only valuable for programmers, especially C-programmers. There is the source file "system.c" describing how to call Mupfel from your own programs and the source file "xarg.c" describing how to use the xarg method for extended parameter passing. The file "vaproto.h" describes a protocol which enables accessories to comunicate with Gemini/Venus. With this protocol Accessories can start programs, open Gemini windows, etc. The accessory TreeView uses this protocol. The library "vafunc" written by Stephan Gerle (Thanx a lot!) contains some useful functions which make the use of this protocol much easier. If you are writing a full GEM application, you can of course also support the protocol on the other side. So your users can use the features of TreeView in your own program. Just take a look into "vaproto.h". It's easy to implement and the possibilities are endless. Stefan Eissing, Holthausen den 19.10.1990/* * system.c - Mupfel-Kommando via _shell_p ausfhren * 23/10/88 */ #include #include #include #include /* * MUPFEL_ONLY: * 0 wenn's auch mit anderen Shells gehen soll * 1 fr Checks ob Mupfel oder MVMERGE wirklich da ist */ #define MUPFEL_ONLY 1 #define _SHELL_P ((long *)0x4f6L) #if MUPFEL_ONLY #define SHELL_OK (do_sys!=0 && (!strncmp(xbra_id,"XBRAMUPF",8) || !strncmp(xbra_id,"XBRAGMNI",8))) #else #define SHELL_OK (do_sys!=0) #endif /* * int system(const char *cmd) * Fhrt ein Kommando ber die in _shell_p installierte Shell aus. * Ohne Shell gibt's -1 als Returnwert, ansonsten * den Returncode des ausgefhrten Kommandos. * Die Mupfel-interne Routine erwartet den Pointer auf die Kommando- * zeile auf dem Stack und gibt den Returncode des ausgefhrten * Kommandos in Register D0.W zurck. */ int system(const char *cmd) { /* Parameter auf dem Stack bergeben! */ int cdecl (*do_sys)(const char *cmd); char *xbra_id; long oldssp; oldssp = Super(0L); do_sys = (void (*))*_SHELL_P; Super((void *)oldssp); xbra_id = (char *)((long)do_sys - 12); if (cmd==NULL) return SHELL_OK; if (SHELL_OK) return do_sys(cmd); else return -1; } /* * Testprogramm fr system(). * Aus allen Argumenten wird wieder ein einziges zusammengebastelt, * das dann per system() an Mupfel bergeben wird. */ int main(int argc,char **argv) { int i, ex_code; char str[256]; printf("Shell status: %d\n",system(NULL)); *str = '\0'; for (i=1; i /*** Globale Variablen fr die Library fr das AV-Protokoll **********/ /* Timeout fr AV-Funktionen in Millisekungen. Steht defaultmig auf 700 msec. */ extern int AVTimeout; /* AVName ist ein Pointer auf einen String, in dem der Name der Hauptapplikation steht, die das AV-Protokoll beherrscht. Diese Variable wird durch AVActive gesetzt. Der String ist ein Leerstring, wenn das Hauptprogramm das AV-Protokoll nicht versteht.*/ extern char AVName[]; /*** Funktionen fr die Protokolluntersttzung ***********************/ /* AVInit mu einmal beim Start des Acc's aufgerufen werden. Damit wird die Applikationsid, der Name des Acc (wie bei appl_find benutzt; also 8 des Programmnamens eventuell mit Leerzeichen aufgefllt) sowie die vom Acc untersttzten Funktionen als Bitvektor den Funktionen fr das AV-Protokoll bergeben. Die Funktion msgfunc sollte alle GEM-Messages zur Behandlung von Fenstern verarbeiten. Der Rckgabewert ist reserviert fr sptere Anwendungen und mu in dieser Version den Wert 0 haben. Insbesondere WM_REDRAW sollte durch diese Message behandelt werden. Diese Funktion wird aufgerufen, wenn whrend des Wartens auf eine Antwort von der Hauptapplikation eine nicht vorgesehene Message auftaucht. Dieser Parameter kann auch NULL sein, falls eine solche Funktion nicht aufgerufen werden soll. Diese Routine sollte direkt vor Eintritt in die Messageloop aufgerufen werden. */ void AVInit(int myapid,char *myname,int myprotostatus,int (*msgfunc)(int *msg)); /* Ermittelt, ob Gemini oder Venus bzw. irgendein Hauptprogramm, welches das AV-Protokoll versteht, aktiv ist. Wenn nein, so wird 0 zurckgeliefert, sonst der Bitvektor, der sonst in Word 3 bei der message VA_PROTOSTATUS zurckgeliefert wird. Falls der Protokollstatus noch nicht ermittelt werden konnte, so wird eine entsprechende Message an das Hauptprogramm geschickt. */ int AVActive(void); /* Sorgt dafr, das der AV-Protokoll-Status neu ermittelt wird. Diese Funktion wird bei einem AC_CLOSE durch AVProcessMsg() automatisch aufgerufen. */ void AVGetNewProtoStatus(void); /* Sendet Statusinformationen an die Hauptapplikation. */ int AVSendStatus(char *status); /* Fragt bei der Hauptapplikation den fr das Acc gespeicherten Status nach. Als Antwort kommt von der Hauptapplikation die Meldung VA_SETSTATUS. Erfolgt die Antwort innerhalb des Timeout Limits, so liefert AVReceiveStatus eine Pointer auf den String zurck. Ansonsten mu die Meldung VA_SETSTATUS in der Messageloop behandelt werden. In msg[3/4] ist ein Pointer auf einen String, der den Status enthlt. */ char *AVReceiveStatus(void); /* AVProcessMsg muss fr jede empfangene Message aufgerufen werden. AVProcessMsg liefert einen Wert ungleich 0, falls sich der Protokollstatus gendert hat. */ int AVProcessMsg(int *msg); /*** Programmspezifische Funktionen *********************************/ /* Emittelt den fr Verzeichnisfenster eingestellten Font und die Fonthhe */ int AVAskFileFont(int *fontid,int *fontheight); /* Dasselbe wie AVAskFileFont, nur fr das Console-Fenster */ int AVAskConsoleFont(int *fontid,int *fontheight); /* Liefert einen Pointer auf einen String, in dem die Namen der selektierten Objekte (getrennt durch ' ') stehen. Bei Fehler wird NULL zurckgeliefert */ char *AVAskSelectedObjects(void); /* Sagt Gemini, da das Console-Fenster geffnet werden soll. */ int AVOpenConsole(void); /* Sagt der Hauptapplikation, das ein Fenster mit dem Verzeichnis pfad und der Maske mask geffnet werden soll. */ int AVOpenWindow(char *pfad,char *mask); /* Startet mittels Venus bzw. Gemini ein Programm. In pfad steht der komplette Pfad und der Programmname. cmdline enthlt die Kommandozeile fr das zu startende Programm. */ int AVStartProgram(char *pfad,char *cmdline); /* Sagt der Hauptapplikation, da das Accessorie ein Fenster geffnet hat. */ int AVAccOpenedWindow(int winhandle); /* Sagt der Hauptapplikation, da das Accessorie ein Fenster geschlossen hat. (ist nur bei nicht durch AC_CLOSE bedingtem Schlieen notwendig) */ int AVAccClosedWindow(int winhandle); /* Schickt der Hauptapplikation einen Tastaturevent. Ist dann anzuwenden, wenn ein ACC ein Fenster offen hat, und einen Tastendruck bekommt, den es selber nicht verwendet. */ int AVSendKeyEvent(int state,int key); /*** Zur Anwendung ***************************************************/ #ifdef __DO_NOT_DEFINE /* Hier ein minimales Skelett fr die Verwendung der AV-Funktionen. */ int HandleGEMMessage(int *msg) { switch (msg[0]) { case WM_FULLED: ... case WM_SIZED: ... case WM_MOVED: ... case WM_REDRAW: ... case WM_TOPPED: ... case WM_ARROWED: ... case WM_VSLID: ... case WM_HSLID: ... } return 0; /* Rckgabewert reserviert fr sptere Anwendung. In dieser Version 0 zurckgeben. */ } void HandleMessage(int *msg) { int FontId,FontPointsHeight; char *status; if (AVProcessMsg(msg)) { /* Protokollstatus hat sich gendert */ AVAskFileFont(&FontId,&FontPointsHeight); status = AVReceiveStatus(); ... } switch (msg[0]) { case VA_SETSTATUS: /* msg[3] und msg[4] enthalten Pointer auf String mit Status (kann auch NULL sein) */ ... break; case VA_START: /* msg[3] und msg[4] enthalten Pointer auf Kommandozeile */ ... break; case VA_DRAGACCWIND: /* msg[6] und msg[7] enthalten Pointer auf String mit Liste der auf das Fenster gezogenen Objekte. */ ... break; ... default: HandleGEMMessage(msg); break; } } void HandleKey(int ks,int kb) { switch (kb) { ... default: AVSendKeyEvent(ks,kb); break; } } void EventLoop(void) { int event,msg[8],kb,ks; do { event = evnt_multi(MU_MESAG|MU_KEYBD...,...,msg,...,ks,kb,...); if (event&MU_MESAG) HandleMessage(msg); if (event&MU_KEYBD) HandleKey(ks,kb); ... } while (!QuitFlg); } /* Die AV-Protokollfunktionen mssen durch den Aufruf von AVInit() initialisiert werden. Dieser Aufruf sollte direkt vor Eintritt in die Eventloop auftauchen. */ int gl_apid; void main(void) { if ((gl_apid = appl_init())>=0) { ... AVInit(gl_apid,"ACCNAME ",1|2,HandleGEMMessage); EventLoop(); ... } } #endif #endifN`lH(UO6$HrjB@NJCgnIHWHoHoHo HoBg?,BgBgBgBgBgBgBgBgBgBgBgC. JBBBAp0NO.8r@g $g J"BNp DgB@` pDgRfpTOLNu/ O09fHE2g0*`:>G?jBo/j ?jB@?@ ?@AB@NBj4B*B@O$_Nu#33#NNuByB9ByNNuH0$H0|)g|Fg`G?yBo/KAB@N`B@O&_NuONJ@gF0<yg:>G?yBoA0G?yBoA0G?yBoA0G?yBoA0G?yBoA0G ?yBo KN KNS 3\g C KN/K/L A0G"?yBo KN/K/L AB@NJ@g0/`B@O(_&_Nu?O6NJ@g(p@yg>G$?yBo?CAB@N`B@O6Nu?O6NJ@g(p@yg>G&?yBo?CAB@N`B@O6Nu??O68NJ@g,pyg">G?yBo?C?DAB@N`B@O86Nu@(#)AV-Protokoll calling Functions (c) 1990 by Stephan Gerle Oct 26 1990\  @6  8          *   *    *     "  !      J       AVStartProgram AVRequest AVAskFileFont AVTimeout_sccs evnt_multi AVOpenWindow appl_writeAVNameAVAskConsoleFontAVStatusAVAskSelectedObjects AVSendStatus_app AVOpenConsoleAVMyProtoStatusAVReceiveStatusAVGetNewProtoStatusstrcpy AVActiveFlag AVProcessMsgstrcatAVMyNameAVActiveAVMyApIdAVSendKeyEventAVInitstruprAVAccMessageFuncstrlenAVAccClosedWindowAVAccOpenedWindowQDB2T#    D   `5  IUZ]  Dw  Z N    N    X  B    x     Z    "B  !B  L/    !' +'05P =KpRY' '0]p '0d'0h s d'0h s d'0d'0d'0zp p d'0p p '0'0'0@ p@@ @ - 4@ EZ@g@u@@@@!@"> 8SF~O5Q 9 9 4O P9 l c  E "3!3 7  (  ` I`  `(p (D:\USR\PROG\TC\MYLIB\VAFUNC.CdeventmsgNeededMsgmsgfuncmyprotostatusmynamemyapidretstatusresfontheightfontidmaskpfadcmdlinewinhandlekeystateAVRequest_sccsAVStatusAVMyProtoStatusAVActiveFlagAVMyNameAVMyApIdAVAccMessageFuncAVStartProgramAVAskFileFontAVTimeoutAVOpenWindowAVNameAVAskConsoleFontAVAskSelectedObjectsAVSendStatusAVOpenConsoleAVReceiveStatusAVGetNewProtoStatusAVProcessMsgAVActiveAVSendKeyEventAVInitAVAccClosedWindowAVAccOpenedWindow/* * vaproto.h * * project: venus * * author: stefan eissing * * description: definition of the Venus <-> accessory protcol * * last change: 28.09.1990 */ #ifndef __vaproto__ #define __vaproto__ /* message numbers for the XACC protocol by Konrad Hinsen * Gemini supports XACC level 0. These are not needed for * the Venus-Acc. protocol. */ #define ACC_ID 0x400 #define ACC_OPEN 0x401 #define ACC_CLOSE 0x402 #define ACC_ACC 0x403 /* message number for communication between Venus and accessories. * if file or pathnames are used in these messages you got to * give absolute names (including drive letter), all letters need * to be upper case. Pathnames always terminate with a backslash! * * messages from Venus start with VA * message to Venus start with AV * * AV_PROTOKOLL can be used by accessories to ask which messages * are supported by the main application (there are differences * between Gemini and Venus). It would be fine if other GEM * application would also support this protocol. At least, * AV_SENDKEY is easy to implement and very useful! */ /* AV_PROTOKOLL: message to ask which messages are supported. * If you get no answer, the protocol isn't supported at all. */ #define AV_PROTOKOLL 0x4700 /* * Word 6+7: pointer to the name of the accessory. This name * has to be 8 chars long and nullterminated (like * it is neccessary for appl_find()) * The meaning of the bits in the words 3, 4 and 5 is: * Word 3: * Bit 0: (VA_SETSTATUS) * Bit 1: (VA_START) * All other bits are reserved for future extension and should * therefore be set to zero. This is also neede for the bits * in word 4 and 5. */ /* VA_PROTOSTATUS: answer to AV_PROTKOLL. Words 3 to 7 contain * information which features are supported. If a feature is * supported the according bit is set to 1. */ #define VA_PROTOSTATUS 0x4701 /* * Word 6+7: pointer to the name of the application (8 chars long, * nullterminated, like appl_find() needs it. * The meaning of the bits in the words 3, 4 and 5 is: * Word 3: * Bit 0 (AV_SENDKEY) * Bit 1 (AV_ASKFILEFONT) * Bit 2 (AV_ASKCONFONT, AV_OPENCONSOLE) * Bit 3 (AV_ASKOBJECT) * Bit 4 (AV_OPENWIND) * Bit 5 (AV_STARTPROG) * Bit 6 (AV_ACCWINDOPEN, AV_ACCWINDCLOSED) * Bit 7 (AV_STATUS, AV_GETSTATUS) * All other bits are reserved for future extension and should * therefore be set to zero. This is also neede for the bits * in word 4 and 5. * * AV_SENDKEY is very easy to support. Still interested? Read on. */ /* AV_GETSTATUS: An accessory may ask for the status which it has * given the application via AV_STATUS. */ #define AV_GETSTATUS 0x4703 /* AV_STATUS: An accessory can tell the main application its status. * This status can be saved by the main application and restored * if the program is started again. An accessory may then ask with * AV_GETSTATUS for its status. Of course it has to knock with * AV_PROTOKOLL first! * Word 3+4: pointer to a string which contains no control * sequences and must not be longer than 256 chars. * This pointer may be NULL (0L). */ #define AV_STATUS 0x4704 /* VA_SETSTATUS: The main application tells the accessory its * saved state which was requested by AV_GETSTATUS. * Word 3+4: pointer to a string which contains no control * sequences and must not be longer than 256 chars. * This pointer may be NULL (0L). */ #define VA_SETSTATUS 0x4705 /* AV_SENDKEY: An accessory send a keyboard event to the main * application. If an accessory doesn't use a certain key it * sould inform the main application about it. (menu shortcuts * can be active when an accessory window it on top) * Word 3 = keyboard state (Shift, Alternate) ev_mmokstate * Word 4 = scan- and ascii-code ev_mkreturn */ #define AV_SENDKEY 0x4710 /* VA_START: Accessory will be activated (should be treated like * AC_OPEN). Word 3+4 contains an pointer to a commandline and * may be NULL. The commandline usually contains file and pathnames. */ #define VA_START 0x4711 /* AV_ASKFILEFONT: Asks for the font used in file windows. */ #define AV_ASKFILEFONT 0x4712 /* VA_FILEFONT: Returns the font used in file windows. * Word 3 = font number (font id) * Word 4 = font size (in points) */ #define VA_FILEFONT 0x4713 /* AV_ASKCONFONT: Asks for the font used in the console window. */ #define AV_ASKCONFONT 0x4714 /* VA_CONFONT: Returns the font used in the console window. * Word 3 = font number (font id) * Word 4 = font size (in points) */ #define VA_CONFONT 0x4715 /* AV_ASKOBJECT: Asks for the names of the selected objects. If * no object is selected, the empty string is returned. If more * than one obects is selected, the names are separated by spaces. */ #define AV_ASKOBJECT 0x4716 /* VA_OBJECT: Returns the name of the selected objects. Words 3+4 * contain a pointer to the string. */ #define VA_OBJECT 0x4717 /* AV_OPENCONSOLE: Gemini should open the console window. * If it is already open, it is made the top window. * Should only be used if transparent to the user! */ #define AV_OPENCONSOLE 0x4718 /* VA_CONSOLEOPEN: Returns if the console window could be opended. * Word 3 == 0 (no) != 0 (yes) */ #define VA_CONSOLEOPEN 0x4719 /* AV_OPENWIND: The application should open a window. The path for * the window and a wildcard is given. Instead of opening a window * a program can also open the file selector with the given path * and wildcard. * Word 3+4 (Pointer) window path * Word 5+6 (Pointer) wildcard used to display files */ #define AV_OPENWIND 0x4720 /* VA_WINDOPEN: Returns if the window could be opened. * values as in VA_CONSOLEOPEN */ #define VA_WINDOPEN 0x4721 /* AV_STARTPROG: The main application should start a program. * Gemini/Venus also takes installed applications into accout. * So you can open any file with this message, Gemini will start * the proper application. * Word 3+4 (Pointer) filename (absolute path) * Word 5+6 (Pointer) commandline (maybe NULL) */ #define AV_STARTPROG 0x4722 /* VA_PROGSTART: Returns if the program could be started. * Word 3 == 0: no, != 0 yes */ #define VA_PROGSTART 0x4723 /* AV_ACCWINDOPEN: An accessory informs the application that it * has opened a window. * Word 3: AES-handle of the opened window. */ #define AV_ACCWINDOPEN 0x4724 /* VA_DRAGACCWIND: The application reports that someone has dragged * an object into the accessory window. Works only if the * application knows via AV_ACCWINDOPEN about this window * Word 3 AES-handle of the window * Word 4 X-position of mouse cursor * Word 5 Y-position of mouse cursor * Word 6+7 pointer to a string containing the names of the objects. */ #define VA_DRAGACCWIND 0x4725 /* AV_ACCWINDCLOSED: The accessory reports that it has closed a * window. * Word 3 AES-handle of the window */ #define AV_ACCWINDCLOSED 0x4726 #endif/* * xarg.c * 10/10/88 * Beispielimplementation (in Turbo C) eines Programms, das per * xArg Argumente annimmt, inklusive Legalittschecks. */ #include #include #include #include typedef struct { char xarg_magic[4]; /* "xArg" == 0x78417267L */ int xargc; /* Wie argc in main() */ char **xargv; /* Wie argv in main() */ char *xiovector; /* Unbenutzt */ BASPAG *xparent; /* Zeigt auf die Basepage des Auf- */ /* rufers. Typdeklaration in tos.h */ } XARG; main(void) { extern BASPAG *_BasPag; /* definiert in TCSTART.O */ XARG *xarg; char *xenv; unsigned long x; int i; if ((xenv=getenv("xArg"))!=NULL) { x = strtoul(xenv,NULL,16); printf("xArg structure at %08lX\n",x); if ((x!=0) && (x%2==0)) { xarg = (XARG *)x; if (!strncmp(xarg->xarg_magic,"xArg",4)) { if (xarg->xparent == _BasPag->p_parent) { /* alles ok. Argumente verarbeiten */ for (i=0; ixargc; ++i) printf("%d: %s\n",i,xarg->xargv[i]); } else printf("xArg parent != my parent\n"); } else printf("xArg magic number not found\n"); } else printf("illegal xArg address (0 or odd)\n"); } else printf("xArg not in environment\n"); return 0; } . >U.. TREEVIEWACC d9 mTREEVIEWTXT g9 `b $``k>>> TURBO-C <<<< for ATARI-ST Version 2.0 (C)88-90 Borland International &H f&op`B@#k3k k #k Ј<.@#kJykg<"@(I$k,"Jf"JfB// ?<?<JNAO A6<HCBB`6 !jBJ)gHiRC` "fSI "WJAkHiRCBSQJ)gHiRCHy`$ON680 J"LN.N? 9bg @N 9bg @NNQN?<LNAH8$H *gF"@"g@BC(j`. T"h l NKJ@ov T f%H`&( &H`&L(T fJCfLNuO8CgCANK9jgCg{ANKCjANKCgANKApN\ONuH06&H$I ycg29cg "J K0NU` KNKH5@5| L Nu?6rNVxr0NWBBBA0NVr0NVr0NVr0NVBA0NVr0NV r0NVBA0NUNUlJ@g ycfBA0NV6Nu/ Ec Rg(0N/j0N\b0N[Bj40*fN N-$_NuH8$H f`Gd j NJIɘSL"j LNJ`>$j2f k2 h NJrgSL\ j NJ j NJ"j LNJ *g" n n AgpNZ LLNuAk0(PhY@2(@o4(hYB1B0(hh 2(@o1@0(ho1h0(ho1hNu/ ]OCAN-6J@gH3l3l29l09cNUZEHoHo"J J29l09cNUnPO3l\O$_NuN+RJ@gNSJ@gNNuBylNu/ $H g CgN-$_NuH $H68*g B*3m`H *g0JDg *fr`BA?JDg *fp`B@C j2N6 g20D RN60LNuBymrB@ ycN09mNu/ UOEkHykHykHoHo r09cNY*OHykHykHykHykr09cNYO0ycH5@TO$_Nu// $Hv *g*f @N@ g @N@0$_&Nu/ Em "JAg09cNJ0*@H5@2*H5A0* 5@H5@5@$_NuB@AdN\N[<Ad3exNu9dH|N[AdN[ByexNu/ $HNGrdp JN[6J@gB@` JN[|$_Nu?N[,6N[ f`(0N[AcpA@ |: |\ B(A 6NuH8$HNJ JNHIc gg Jp\NF&H g+g< f +:gB *:f6HNK6|N[*riHgp0N[& g0NZ``t JN.J@g&p\ JNF&H g +:gB` B+`Eg JNJ@fB@A NZ, f|\ B,`N`NZ<A@ |: A LNuHUO*HGkIe0,fBWA`h20@AH44920@AH44920@AH44920@AH4490oH42ABI) RW WmHWHoHoC LNUO 9|pl?rl?tl?pl?rl?tl?tl2B@NU O )MT)|gB?+?+BgBBrB@ LNT\OTOL8Nu/ / &HEf80f*Hyf:"JAnpNTXO0j5@2*j5A0*NQ J0*NOL%K?9k?9kBgBBrpAnNT@\OBA0*NS&_$_Nu/ Eepj?rj?tj?pj?rj?tj?tj2pNT,O $_Nu/ $H g PN JNX$_Nu yfBNBfBBc3f@NuH8$HND@&GfB g"< 4H’ kcXB f < NW(H&`(S`(T f < NW((H lAh4pNSBk`n"< B@ LNG` (S`(T f +A(H2HHAJAgt`tH0HԀԼիA)H ym1ym3"J l NC& LLNu/ ycf.Ek0*j?2*R?4*0<2NSXO3c09c$_NuH4O*H$I&Iv"j ANB?j grJ`r  *gtJ`t B*grJ`r A"MpArN8rgB@`$$R f$K *g "@ MN6$R gJCf0OL,NuH(O8Ec ghpNR R"h ANB"p\ANA gp\ANA(f p\ANABCh_ANA&BApANVChmAN9V(H f B@NRPB@`8"LAhpN7X g "@ LN6`v LN:rpANUʑB@NR0OLNu/ / OEgBGm4C>AN8& gJ"@Ap(N6TA.NAC.ANAJ@f$"SrpA(N8(rf yc1o,p` SN:bB@O<&_$_Nu/ OGm8"krpAN7rcp`X0/H S!@ S|C SAN@ /Jfp`B@7@ Jfr`BA7A /Jfp`B@7@B@O&_Nu/ OGm80+fp`r"krpAN7Vrcp`X /Jfp`B@7@ Jfr`BA7A /Jfp`B@7@2/H S!A S|C SAN@B@O&_NuH<]O(H:vEcGm82g N8`pAhNS8BA7A7A`p S(gt (.gj",fAN*H)M` SAN**HRj0f"2*HHAJAfA0*r N> ANN+L;E S;hko 7E` S֨0gN8`NS8JDf0*df` LN0f2Jg( "<NGJgr`BA? "<NGf_`B@9@*l`80g-g,pE MNB-` m NRpE MNAhNR*U f",g4f 6, Ah\OL<8NuH8O$HNJHNC|NRL JNJ@fNR&&HANQIc JN6(g0,m"pNRf NJ@gp`B@9@`Bl0,f T h NA#m8Byk9|B@ TN g @Bh TNz9@k3k2,fN(Ah`N%J@gNX` ym4N6Bl KNQ>NO,LNu/ / &H g+g`& +g+f @N$H f "g AN$H J&_$_NuH $H86@f#m>`> *g*f$9m>fpD j2N8 g"9m>fpD R2N80LNuBm>2 ycB@N ym>Nu// UOEcHWr 0*NM>XO0yko J@gykfv`$29kH 눐Ё2ykHND&Wg?r 0*NMpTOTO$_&NuHUONGcHWr0NLXOIk +gH2,H 눐Ё2+HND|o6<`2,H 눐Ё2+HNDh&`6<Wg ?r0NLTOHWr0NLVXO0,Tm6<` 2,H 눐Ё2lHND&Wg ?r0NLTOHWr0NL XO0gD2,H 눐Ё2HNCܰ|o6<`2,H 눐Ё2HNC&`6<Wg ?r0NL2TOTOLNuHQO&HNOn&BD>?k2+SRA?A4+kRB?BGb +g @"( g "AH|`zIk0,7@7@2l7A?/?/?/4/B@ArNJ*\OBF`ZphHgNrAF|7A4Tlk7BEf7| `Bk ?/?/?/4/rB@ KNI\ORDRF| m>0,kS@?@?@2lSA?AA0+rNHLPOLxNuH(QO$H6Ak4(BhTBphh @hUB>?BIbC$fJAg$0l2hA4H…Bh?@` 0l2hRAA4H…B?@ g2l4hRBB?A` 0l2hRAA4H…B?@0/og2lAl?AAr0,NGV *gg BA @0NPOLNuHO(HGlMc2+nB4kRBB?A2AkTAtkkBSUA>k64BCBTA?A2+nB4kRBB6+HÇC?A?A ,gtK2k4BBTA:;A;or0NBBA0NB??4-20NDXOr0NBBA0NB0/S;@2/S;A,f M0rNF0Ar0NF&OLxNuH.O$HIm Kcαf vl̖l`*6,ClTCrl̒lA4,BBlTC8,mB2lRAA>?D"L j 0N:,0-g4,2IBCRA`2CCE?A0lT@?@A0NA0-g|Mr N0*N5Ch NN6""L N0N&2,0@A@Cl?@BgBg?, NtD02/ NC\O02,HA?@?@tC>A0rNDBgBg? j tD/?0-g4,2IBCRA`204 _NC^\O*g`r0NB0-g4,2IBCRA`2>0lT@?@2-g0,4J@CRB`4E?B?DA0N@r0NB,OLt8NuH $H86@f"cg0Nr0 JN0 JN`. *g*fpD j2N8 g2pD RN80LNuH6QO$HKk fEGc0NBPpNFHoHoHo Ho r 0+NEOM`lC JNJ@gBpWopooAr0NAbA0N?ANBC`2UB@ VN RCmoHoHoHo Ho r 0+NEbO0/g2/fB@NF2ABA0NABA0NC&POLlNuH>OEtIcAr"JpQA> fAhpND`AhpNDS@g S@gS@g` 4`4pNE8pNDKHo"L JNB XO0oF?lMk?n:.<.>.?n?nBA=A<=U=m RfpGA"K2<Q KNE@J@f ,g @"h KN3p\ KN3 gp\ KN3 (g Cg KN2Ch KN2Nl K0N=`BA0N?$9T0N0..g42.,0N>HWHoCA2.*0N? POJ@op`B@9@` Rg9|`BlN Rf>6,l84< 2<40N6-HÇUCBD`.2B@ lN|0HH@J@fJDg=C0N@0N>RDlo0,HH@J@g Rf 0N@0N> KBA0N>d RfBA0N>"0N>9o=o=E=G=F=o=oN` AipNBB@NB@8pNC.ObL|NuHGKk0-67@2-mSA7A7A BIJCg:8-mSD0jBT7@2mSA7A4jB7B 0-@7B`.8-0jB7@2mSAT7AT7@ 4mSB7BAr0N=@HWC Kr0N;(XOjlnJCg"0jBrmA7@4mSB7B`0jB7@T7@ Kr0N< K0N;2B@ jNrDB@ jN KBA0N<` JCg 0+T7@0+T7@ K0N: KBA0NO$L<NuH8O6NEGk45k5k5kpjj5j 5j0HR@jJCg 2IR5A` 5R0HR0*j5@ 2jBIc0N6EkKc84*mBBHĉ0RN&H g:* EjTErjjAj<*mB4B0*H@j MGl2* AEAlCl4* BFBl +gg>2*mB4B?A0j S@?@2*j SA?AA0rN9^+fr`BAA VN;@N0N9A0N7n`2RB@ VNRD0j@m`0N9>0*mB?@2*j SA?A4*j SB?BA0rN8N2B@ VNBA0N:0Rf:*` 0* @T@@0-g4*2IBERA`2:<*mB0@C: k 0NbGlh0j>@l^ClZ2jAlP+fT0N8N2B@ VN|2RB@ VNBA0N:PMHoHo "N NBBrB@N:POABA0N7O LlNuH0<6Ek:4*ycBHŋ0jN&H gcf8*`*8*DjTDpjj @j2*AATD09cg4*2IBDRA`280*yctEBR:C6 k 09cN4Fl.0j:@l$Cl 2RAl+f02N KNNdL xNuH0:8N?&Eg(Gl rkAml4+jUBBn^8kk:SDo jlN`PjBF>`@phHg42RAAo&tGSBBlxA"J KN*05|B@` RGRF| mpL Nu/ QOEkHWHo?*?*?*CA4*2<B@N;O 9cg @"h `CgB/ 2/H 눐Ё2*HN2.?2/H 눐Ё2*HN2?2/ jH 눐Ё2*HN1?2/RH 눐Ё2*HN1?29cot`BB?Ci7AlNOAlPO$_Nu/ / UO&HEkHyl HykHykHykHykHoCi7NO0*H2*HN1"<N1Hj5@0*H2*HN0"<N1&5@0*H2*HN0"<N1j5@0H2*HN0"<N04HykHyk??*?*CA4*2<pN9lON0g 3d Kp)N'"HTIAN(B@`B*pTO&_$_NuH8QO$HGkIc0||bb@0;NVrr0fHWHoHo Hor0N88O`HWHoHo Hor0N8O0fr`BA6??/?/?/ 0rN8xPO`?*?* ?* ?*r0*N8ZPOBSN~NN"N `0*TfAN`?*r 0*N8TO`0*N`~0*Tft0*H2,kRAHN/"<N/R7@?*r 0N7TON6`:0*Tf20*H2+kHN."<N/7@?*r0N7TO`B@POLNuH8$HGcNJ@g"N~0oNN X(H gN$`BkIl 0|Ggn|g:|gS@g8`Ɛ|GgB|g<`0o r N7 `NtB7|`nBBk`f6Bk7|N`R RGf"0*Hr4*Hļ"@ LN%` 0* Hr4*Hļ"@ LN%7|NB@`.0*Hr4*Hļ(@ g LN4` JNLpLNu/ $H j fnAk0*ho^2(hAlR4*PoJ0h@l@ jm$2ycAl 20*N.`"2*0*N jf 2*0*N&p$_NuH8$HGcIl 0*|& gnR| g\n$|gސ| g| g|g`|g|gl|g^|gj`|Mgn$|Hg|8g|gȐ|4g`R|M6gҐ|g|2g|g`.p\ S h N#~(g$ S"h LN#p\ LN#bCfp\ LN#RB(`&p\ LN#DB`BAp N2 S"h LN#7|7|`pN\`B@NR`pNH`pN>`pN4`pN*`pN `pN`zN0U@fpAiKpN3dS@f^AipN3T`P0+fr`BA7AN~`8N`2NV`,09kgB@`" SNf(H g NNt` 2*0NvpLNu/N7Ab2(BB`vkHƀJghRB| m0&Nu/ NdEkBj0*$@jX@4*2IBA4"9cg$C> A h 09cNք0*Bj2@l4Nt2@lNj4N$_NuH8$HNpN2 JN$HIkB,GcBk gNNJ@mDpN3PpN3J JNR +f NִNݚ`$Cj1AN NHycr0N2XOBlB@N3pN30+f Tf:2,H4,lBo` 4,H…80,4,2ABA9@`0HykHyk?,??,CA4,2<B@N2HON?,?4,2,0N1XO7|0N`?r 0N1TONTNN~B@N1FNNCANj Sg ,fNՔNz` NՊB@N1LNuNxBA09cN,09cN-N/NNu/ / OvGcA^CtpQIkN/9@2lp`pN0HykHoCAN0xPO6Ho"KAxN-XOBT9o9oHWHoHykHykrB@N0nO0NRAFN.B@N0B0,H9@2, A9A9|B@O(_&_NuNuH<6&HN&J@mElIl 5|$5|&5|(ABNCbrAj30,NKd09kg,N|o"k`CgB LN": LN0f`:Aj<0,N/TBBUA4N.A4NJ@gN`BU LN0f`09kf2<0<N-`B@L<NuH(UO6$HrjB@N-rJCgnIjHWHoHoHo HoBg?,BgBgBgBgBgBgBgBgBgBgBgC. JBBBAp0N-O.8r@g $g J"BNp DgB@` pDgRfpTOLNu/ O09kfHEj2g0*`:>G?jBo/j ?jB@?@ ?@AB@N&Bj4B*B@O$_Nu#j3j3j#jNNuByjB9jByjNnNuH0$H0|)g|Fg`G?yjBo/KAB@NH`B@O&_NuONJ@gF0<yjg:>G?yjBoA0G?yjBoA0G ?yjBo KN KNXS 3\g Cj KN0/K/L A0G$?yjBo?CAB@N`B@O6Nu?O6N`J@g(p@yjg>G&?yjBo?CAB@N`B@O6Nu??O68NJ@g,pyjg">G?yjBo?C?DAB@NZ`B@O86NuH ODE JN,xJ@g p\ JNb fB@`p\ JNd(f p\ JNVBB@A,N.N.6 *:fHN|N. JN.N.l$HAN.@p AjN.@8`AN.N.T8JDg0N.RA,N.p JN. pOLNuH8(H&IvEq`Bj +gj5l$5l&5l( g"j5T5l5l5l5l +g$j5l5l5l5l5l + gjA4%H +gj +gj 5lJ5lHpN+8JCg(r@g"9j 9j 9j9j L"SB@N6JCg,pDg&9j9j9j 9j"A"kpN6JCg0pDg*9j*9j,9j.9j09j2A$"kN6JCgpDg A4"k N6JCgpDg9jD9jFAD"kN6JCgp Dg AH"kN6JCflLNu?/ $HB@ JN,60N,~JCop`B@$_6Nu?/0h2iAl0h`0i2(h4)iBl 2(h`2)i4Qo4`46(io6(`6)23C0@3H0A3H@lAlx`BD0(6NuA(p"@ "ByjA1B3j3jO"Nu/ Hz?<&NN\O$_Nu09jа| g"C$#bCm@@#RyjpNupNu?/ 69jg0@@GmSC cNQ&_6Nu/YOM, IC HzaXO VBXO,_Nu"VS@eQ,NuH8]O$H&I(o&BCx%p JR@g2fJ@g@HNBEg>BA< <b;k`|<*f<`&<0< b ACp a4$Wb<gt<.f6<*f4`$<0< b ACp a$Wb4g<߲<Lf g`<hggr@dp|?@0;N`````N`N``````````````````````````NNN````````````````` [0`|A`0A2"LaN@`\ [2"LaL@`JJEj `p0?4 La"TO@`*JEj `0H?4 LaTO@` JEj `p0?4 LaTO@`JEj `p0?4 LaTO@`@HN0\OLxNup24C8jxA aA pJWF@?@gA 2SAktaSb (Q2/@4/(jt@jtBgf 0Ao@@Alx?B?D`hH0$H&IB(v`H0$H&IvJWFCJBj4Cb6xJAkCc8Cf K0a0 JN` 0 JN0 Kap0DL Nu6x0/g f@ JaP0/g@AN0/g@ Ja,0/g@A N0/g g@ Ja0OLNuH0E6`H0E4&H6g8Kg SC JpNQ J0|gNL Nu00000000 /YOM, IC Hz"HzaPOXO,_Nu VB@g,Nup`SNuH<&$H&I(oNKBCBGx%BEgdg\< f<< gSJN:kTRG< fNRG< g oRNSG` oRNSG`*NJ@k"RGg oRNSG`BEg<*f g|<0< b ACp a$Wb<gʰ<hg <lf ggr@d|?@0;N\\0Jk [0`NRGJ@kg oRNSG` LJk"[02aVJfAJkVRC`P L"oRpJk /02aXOJfAJk(RC`"A"Hpr QB/$g~<^fP$` rAalgb<]gT<-fgP<]f<-rAa@`2BA*RAa*g <]g<-frAa`J/$grFQ< BA FA02 L"oRHo/aPOJfARC`L L"oR0aJfAJk2 [RCJEk0`$ ` L"oR0arJfAJk [RCJEk0` ` L"oR0aJfTAJk [RCJEk0` ` L"oR0aJf(AJk [RCJEk0` `0&LRG4`kI4`bֆSDgNRG4`b`NSG2$QLNuP`H8vBG8ghzB$H&IIrNJ@kbRG4`k<0fSDgBNRG<߰<Xf SDg.NRGI:4`bֆSDgNRG4`b`NSG$2QLNuP`H8vBE8gjB$H&IINJ@kdRE4`k<-Wg<+fNREI4`< b"ֆSDg NRE4`< b փ"փփց`NSE$JgD2QLNuP`H<8z$H&IIpNJ@knREJ4k| gNSEJj$JDgJNREJ@kB| gJ4jNSE`0SDf`**o JDg NREJ@k| gJ4jNSE`SDfB2QL<8NuP`H06g(8$H&IJCjvJj NJ@kSCf` NJ@kSCfQC2L NuP`H<6g^8BE$H&I(o$Jj$NJ@j P`FNJ@k> F4Pg>SCf`**o NJ@j P`NJ@k F4PgSCfBQC2L<8NuBN`H8$H&I+g|2g+gC'I&'IR'I UAe"S(kt d W`2+gH@ KaLJ@f,H@ Ka2LJ@gkg&B JLNu3 b`/ / B@JgB)g@)fJ&Q(i ge"// Ia>"_ _J@f&Q`B@"(_&_Nu3 bp`#H#H&HJfS#K " I(Ia"LJ@f`H:$H&I(S&gfJg^+g`)ft,k x$ڹd SfRe`.&// Ka$"J@k,f4(SSfRf& L\Nu3 bp`"`&x,A'J'JE8'J & Ka0J@kfRf"`H:$H&I(Sx&gZJgV+gX,k$dSfRe`6+g// Ka$"J@f.// KaT$"J@kf(S,k`& L\Nu3 bp`p/aXONuH&H(o Ia6kl g La` a(Jf\(H <a p)HgN0@0;\ Ka|gB9@{0`Q l)H()H C#b LLNup`p`p 3b la `a)b*a)b* YOCBgg Ar`THWf0XONup`rwar+w+a+rbwbabr+b rb+ w+b wb+ a+b ab+ AnDp`Ar(WVNu?/ Ak8aRAkNaHGnD6<`Gp+g Ka*QJ9kgA a\&_6Nu_TMP_XXX.XXX/ &H+g+g.aJ@f.0+aJ@k"+g ka B@7@&_Nu3 bp`H&H(k L0+"+ aJkRgF+f, L"St gSj`"HSISSk ögSjJg&"'LBLNup`p`H&H(k6+"+g0DtaJk+fZ"S"L Ip gSj`*| // " 0a"_"JkNgPAp SjH@" 0axLJk*g,`0" La`Jkg&'LB@LNup`p`H6&Hp Cgp@CfFpC?/ ?<=NAPOJk&8jaTpCgF?<?p/?<BNAO Jj.`Br߲fNAXONua3bp`ް|c??<>NAXOJkpNua3bpNu/?<ANA\OJkpNua3bpNuJ@f//anJ@fBg`//??<?NAO JkNu  _`a3bpNuH&Hx&SgkJ9kkpfxa<g < g6<gJ< e七dRa`JgSSKpap apa`Rp akp a`\JgXk`NxB9k`Dx B9k`6J9kk$Ҁk8 $k0HzP <e/`/? ?<@NAO Jk b Nuab3bpNu0<`///6?<?B?<BNAO (Bg?/<?<BNAO *Bg?/?<BNAO JWH*(&NuD@| |"b;NupNu   //O4UB|"bBJ@j < fD@-CtH@B@H@&HC;0(RBH@B@H@fQBO _&Nu3!b`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ JgJgJgJgJg JgJgJfSHggggg ggf @NugfSHNuJgNug fC`Jg INuSHNugHf8g@f0g8f(g0f g(fg fgfgg!epNupNuJfpNu g<g8g4g0g,g(g$g ggggg ggf @Nu"HJgJgJgJgJg JgJgJf SNuSeg gb pNuJfpNupNu"SefBJgSf ANuH0$H|g|$bGzrtgJ3kSJgtJ@f"p <0f:pgb<߶<Xf(pf"`N|f<0fg><߶<Xfg.G3d"3d&HCHCJCfԃԁd` & gSJ"L Nu3"bp` 3!bp& g"`"CB@f ANu//"4UB|"bZC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!b`0123456789abcdefghijklmnopqrstuvwxyz// &gPR<e:/avJg*`4Ck g*g"@ f`"/?<INA\OJj` pNugp`/ Gk g/ &S?<INA\O`Gk g/ &S?<INA\O`&_NuH0$< CEk g" c $@ f`&@ +gb*"Ҩeg ` 'H`p"@")Ө 'H`>"@ gb" ҩeg`N"(ө`" "H" ҩf @"(ө" k eb$/ ?<INA\OJfQL NuP`/$gSe40HB4 gxH_>"&(*,."B$B&B(B*B,BH~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H`SfL||0HgS@!Q|gSAQ _NuBAA0Nu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@  !"#  !"#$jD BJjD$HBJBf"$HBJBf $jDNuHBЂ$jDNuHBЂ$jDNu$jD"BJjD$HBJBf4$HBJBfH@B@H@$ jDNuB@H@HB0@0H@0H@$ jDNu AH@r2B@tЀӁd҈рӁQF@$ jDNu"@$jDJjD$HBJBf.$HBJBfB@H@$ jDNuB@H@HB0B@H@$ jDNu A"B@H@HABAtҁрdЈӁрQ$ jDNuAq1|1A1B1o1oBhr1A1|c `/AqBh1|d A"_rtg0RB`Aq1Br`AqBh1A1BBh1|1|c r`/ /AqBh"_Artg0RB`Aq1BrtaAs"_22222222NupNBT@Nu/Aq1|1|!I!o1A"_A000000000Aqrm` Cv42222Aq1|Bhrr`AqBh1|1Ar`Aq1ABh1|r`AqBh1|1Arh`AqBh1|1Ar`AqBh1|1A1Brl`vAqBh1|1Ar`\Aq1|Bh1A0Bh2ra>09sNuAqBh1|1Ar`AqBh1|1Arj`AqBh1|1Ar`AqBh1|1Arw`/ /AqBh1|Bh01ArkaAs"_2"_2"o2"o2NuAqBh1|1Arx`vAqBh1|1Ar `\Cq3|3|3AC02222Aq2<`,AqBhBhr`AqBhBhre`AqBhBhr`Aq1|Bh1| 1A01B21o41o6r `AqBhBhr{`Cq3|3| 3A03B23o43o3oCrtRB2fAq1Br ``AqBhBh1|b 1A01B21o41o6r`23q/ Cq2dBi3| Cp 2Q"<[psNB _0qAr"op,2QAsp 2QNuqqv4rs/ Cq2Bi3| Cp 2Q"<\(psNB _0qAr"op,2QAsp 2QNuqqv4rsCq3ABi#k Ira<#v4kNuAqBh1|1Arz`AqBhBhr`1@ 0"<kpsNBAr0Nup `#tAq00p `p`/ /Aq000pa"_2"_2"o2"o2NuAq00p`n#tp`b#t/ Aq00000 0 0000000000 pa"_2"o2"o"2"o&2"o*2"o.2Nu#tAq000000p*`/ #t3qp,a"_2"o2Nu#tAq0000000 0 0p3`|/ #tp6an"_2"o2"o2"o 2Nu#t3qp4`D3q#tp#`2/ /pMa("_2"_2"o2"o2Nu#t3qpN`/ ?Aq00pha2CSA|;$Y4Q$_NuAq00000pd`Aq00000pe`3qpg`~Aq000000 pi`^/ /Aq0000 00pla<"_2"_2"o 2"o2Nu3qpf`3qpk`#tpP`3q@@A CqB@22220<"<_NBAr0Nuqq"qrtv /?<NA\ONu?/?<NNAPONu?<NATONu?</NATO @Nu?<ONATONu??<NAXONu??<>NAXONu/?<HNA\O @Nu/?<;NA\ONu/?<ANA\ONu??/?<CNAO Nu?/?<GNAPONu?/?<=NAPONu/?<INA\ONu/ ?< NMTO$_Nu/ ??<NMXO @$_Nu/ ??< NMXO$_Nu/ ??< NMXO$_NubbgBA bccRgB   c# TreeView: A:\('v)(gh gBh)gB (&    A:\[0][TreeView V1.2i| 1990 Stephan Gerle|E-Mail: Maus DO|Kommuniziere mit|][ Ok | Hilfe ][1][TreeView: Der Pfad ist zu lang!][ Ok ]*ABCDEFGHIJKLMNOPQRSTUVWXYZ\TreeView V1.2i 1990 Stephan GerleErstelle Verzeichnisbaum ab:Bearbeite:[1][TreeView: Nicht genug Speicher!][ Ok ]\TREEVIEW.INFwbTreeView V1.2i rb????????.???..K[1][GDOS nicht geladen.][ Abbruch ][2][Auf welchem GDOS-Gert drucken?][ Drucker | Metafile | Abbruch ]SCRAP.GEM[1][Kein GDOS-Treiber|installiert.][ Abbruch ]%d (%d,%d,%d,%d) %s[0][CTRL-D Fenster schlieen|CTRL-P Drucken|CTRL-I Info|(Shft-)Cursortasten verschieben Inhalt][ Weiter | Ok ][0][CTRL-L Lnge zeigen|CTRL-S Dateibaum speichern|CTRL-I Info|Esc Dateibaum neu einlesen|Backspace Ebene hher][ Ok ] TREEVIEW TreeView@(#)AV-Protokoll calling Functions (c) 1990 by Stephan Gerle Oct 26 1990\SCRAP.*jjjk8qqv4rsr  h  &Hrv""X HD J6V. @*d Rf(B HL(,bP(p  2V"."`V 6vj L.T 8 P2$ 4448B2:2&L >h >b&:8~R (R 4 T B "F 6 : JpdĎ "h& >\ ,< Z p4R*:*6$,$6 "0<.   ( j ,$ ,> $4 ((: TreeView V1.2i (c) 1990 by Stephan Gerle ========================= Translation by Stefan Eissing (broken english spoken perfectly) General Description: -------------------- TreeView is a program which displays directory tree of a drive in a nice graphical way. It is possible to install TreeView as an Accessory or run it as a normal program. Just change the extension of the file accordingly. When installed as accessory TreeView is capable of communicating with Gemini (Gemini versions higher 1.1). Rights & other things: ---------------------- TreeView ist not Public Domain. You can distribute this program together with this text file to anyone you want. But you may not take a charge in any form. So, distribution in any commercial form (via so called PD distributors) is not allowed. If you like TreeView and use it regularly, it would like to receive a postcard form where you live. So I can see if TreeView is used at all. This is of course also a way to send bug reports and suggestments for further enhancements. How to use TreeView: -------------------- You can use Treeview either as program (TREEVIEW.PRG) or as accessory (TREEVIEW.ACC). Just rename the file. If you start TreeView as a program you can specify the path to be displayed in the commandline. If no (valid) path is given, the root directory of the currently active drive is shown. The same holds also for TreeView installed as accessory. The commandline is given via the Gemini communication protocol. If you activate the accessory from the desk menu, an empty commandline is assumed. A little box is displayed while the directories are scanned. In the box you can see the number of already found folders. When all folders are scanned a window will be opened. The top row of the window contains several icons. A printer icon to the left and icons for every installed drive to the right. Beyond that, separated through a line, you will see the tree of directories. Right in front of every folder displayed is a little circle. If the subdirectories of this directory are displayed, the circle contains a cross (+). If not a dash is shown (-). You can change this status for every folder just by clicking onto the circle. In this way you can hide subfolders you're not interested in. A folder will be selected when you click on the name once. If you make a double click onto the name, TreeView tries to open this directory. This works only if TreeView is installed as accessory and Gemini is running. If you click onto the printer icon, you will prompted for the output device. You can choose output to the printer (GDOS devive 21) or into a Metafile (GDOS device 31) or cancel ervery action. If you click onto a drive icon, the root directory of the drive will be displayed. Keyboard Shortcuts: ------------------- BACKSPACE The parent directory of the displayed directory will be shown. Cursor keys You can scroll the contents of the window with the cursor keys. Normaly the window is scrolled line-by-line. If you keep a shift key pressed, you can scroll page-by-page. Ctrl-I Displays a box with informations. HELP Displays a box with online help. Ctrl-L Changes the way folders are displayed. With control this key you can switch between two modes: the normal mode and the long mode in which the size of the folders is shown too. Ctrl-S Saves the whole tree into a hidden file (TREEVIEW.INF). If TreeView is called again with this path, the informations in this file are used instead of scanning the folders all over again. Only keeping the control key down will prevent TreeView from doing so. Advantage: No delay when already saved trees should be displayed. Disadvantage: If you create or delete folders the contents of this file are not changed. So TreeView will display folders which are no more existent. Ctrl-P The same as clicking onto the printer icon. Ctrl-Q Only active when used in TREEVIEW.PRG. Exits TreeView. Ctrl-U Ctrl-D Closes TreeView's window. Exits also TREEVIEW.PRG. Ctrl-O Tries to open a selected folder. Specials when used with Gemini (version 1.2 or higher): ------------------------------------------------------- Since version 1.2 accessories can communicate with Gemini. TreeView uses this communication possibilities in many ways. 1. You can activate accessories in Gemini (since version 1.1) when you click onto their icon. Gemini will send a message to the accessory specifying also a commandline. So you can drag a drive or folder onto TreeViews icon and it will display the directory tree. 2. If you open a folder selected in TreeView either by double clicking or Control-O, Gemini will open a window displaying the files in this folder. 3. TreeView ask Gemini about the font used in file windows. TreeView uses this font too. 4. You can drag icons into TreeView's window. TreeView will then display the directory tree belonging to this icon. 5. Gemini can save the status of TreeView. If you select "Save state..." in Gemini, the current state of TreeView (window, path) is saved, too. Other Programs: --------------- TreeView uses the so called AV-protocol to communicate with Gemini. This is a set of messages by which accessories and applications (programs) can communicate. Every program supporting this protocol works also with TreeView. There is a documentation of these messages in the Gemini distribution. Programmers may take a look at it. Printing: --------- TreeView uses the GDOS device 21 for printing. This only works if GDOS is installed. Problems may occur if the font used for screen display is not installed for the printer device. The behaviour is undocumented. In most cases the printer driver will use the first font installed for the printer. Metafile output: ---------------- Metafile output was very easy to implement. Only six additional statements were necessary for this little addon. But there are also some problems with this device. If you have no fonts for META.SYS installed, the device driver reports only fonts with height 0 and all rows would be as thick as vacuum. Therefore TreeView assumes fonts 16 Pixel wide and high when informations about fonts are missing. There are also two different versions of META.SYS. The file which is 9325 Bytes long is ok, but the ohter may crash. The metafile will be saved in the clipboard, if the path for this is set. Otherwise the file will be saved in the displayed directory. Problems with other programs: ----------------------------- 1. There is a bug in Autoswitch-Overscan Version 3.0q which clears the entire screen when printing with TreeView. This bug is fixed in newer versions of Overscan. 2. An older version of metafont (the TeX font maker) portet by Stefan Lindner displays an error message when it receives messages it doesn't understands. This also true for TreeView, because TreeView asks the application about the AV-protocol. Epilog: ------- I'm always open minded for suggestments, reports and bug reports. You can reach me under: Stephan Gerle Ruthstr. 8 D-4600 Dortmund 1 Germany Tel.: 0231/65 25 35 E-Mail: Mausnet: Stephan Gerle @ DO Ohter: Stephan_Gerle@do.maus.de PS. : Have fun! New in version: --------------- V1.2i: + If a directory tree is reread and had been saved before, TreeView will automatically save it (Control-S). + Help was extended. + The installed font will only be changed if someone reports a different font to be used. So TreeView doesn't switch back to the system font when another program is used any more. + The tree is sorted alphabetically. + Works now with the Chameleon. . >U.. VENUS APP >> TURBO-C <<<< for ATARI-ST Version 2.0 (C)88-90 Borland International &H f&op`B@#3 k # Ј<.@&#Jyg<"@(I$k,"Jf"JfB// ?<?<JNAO A6<HCBB`6 !jBJ)gHiRC` "fSI "WJAkHiRCBSQJ)gHiRCHy`$ON*0 J"LN!? 9g @N 9 g @NNr?<LNA??86N/~ fB@`1C 1|1Dp86Nu?/ 80N/f$H gjgB@` 0* N/p$_8NuH>Oj&J(KBWMC NNJ@g V0(S@gU@gN`2/H ЀЁ V h&N*Hp-$fA N]J@g~I &VGF$VE`j2/H ЀЁ V h&N*H gH mf@MC@ NNXJ@g, NN]J@g (NEMC@ NNn NNY&N gC LNJ@f/ 0/"K LNXOOL|NuH:O&H$I g"QN&HpNA& g(K&@BANJgCANn`CANnMHjHoHjHj?*C NNO NNRNA'H g "NNn` KNB8&LB$R KOL\Nu/ $H"yΈN2$H$_NuH8O@&HNRNB$H g"KNnGC JNCN(H gN>?@CN(H g"LANnCN(H gz"LANnCN(H g "LANn g"KANJ@fB/CN(H g"LANn`B/HWAΈNHXO JNCHOLNuAΈN NuH8O&H(IEC oNn o0/ CANXOHj7B@C?/ N"_0NFzXOJ@gS@g`CL LNn`CQ LNn`B@`pOLNuH>(H*I,o$oBR&yΈ`LANJg<"LAN-tJ@g,C MNnC MNZ"C NNn4p`&S f/ /"M LNPOL|NuH<*HEAWNT(H g N&R`G KN&R(K NB&H gX"LNn KN(KCa LN&H g,"M KNJ@f LNCHp`CaN&H f LNCHB@L<NuH8(H&I$yΈ`C LNJ@f6`$R f Lp.N(H fB@`RL LN J@g6`LC| LNJ@f6`4C΀ LNJ@f6`C΄ LNJ@f6`609g2|ftSgS09gSpLNuH<*H&I(o$yΈ`0C KNJ@fC LNJ@f"MANn`$R fL<NuH8&H(I$yΈ`$*fC KNJ@f "LANn$R fLNu"HAΈNNu/ / &I$H`C KNJ@f J`$R f&_$_NuH8(H&I <NB$H fAΌN#B@` o"Jp/"Q g$&`$(pLNuH8(I$P&H`C LNJ@g&J$R f g& JNCHp`AΰN#B@LNuH>O*HE"R iT&P i(PCANnAN C KNn6-C LNnrCp RNrCp RNrCp RNrCp RNrCp RN RNU M"N RNM>J@fx`BD NNTp NNT :|BA0 RN NNNBCp RNJ@g|p RNJ@g|p RNJ@g|p RNJ@g|p RNJ@g|| f2;C @fB-` "LANnANJDgp`p` JDgp`B@O2L|8Nu/ / $H` *g @NCH&R JNCH$K f&_$_NuH>O&H/IBCEBI`nr pNC*H g <NB,H f MNCH oN`b(B K"Np/"Q+N$$NBfmmv o( (M&S f"/gJCf ohh o(  oO L|NuH4O$H<8:*I6/J$ g&jC MN|KVAr0NRpCgbr0N8CAtBA0NFBA0NĒA42Ey ~0NA42E>9 ~0HG@@0N0*rh||ftCf*BpCANHoCAr 0NºXOABA0NRO&L,NuH>O&H,I /0gIHoC TpNFXO T?ht?hv HWCpNFXO T?(?(?(?(?/CA4/ *T2-0-NO A2/ 0/NJ@gXHWCp TNFXO0/o2o T>6/ HÇH2/ HHA4H…BlSr pNC$H f N`X֫,jj%o0JmpRo $0'J0` Rmv֫R  k0Nz/H$ gn JOL|NuH<*I$h0G0` g &J(J$R f& MNCH g$@` g$L``jj JL<Nu/ / $PB` &R JNCH$K f&_$_Nu/ / $H&IN J`  kB&S fB&_$_Nu?/ YO6E2 RpNJCfr`BAp RNJCgp`p6HWC RNFXO2H ЀЁ R?0?0?/4/B@rNw4\OXO$_6NuH6Ov*H 9ΈfAN$@`$HW"M yΈNXO/H fAΌN#B@` W*hEBAp RNrp RNBAp RNDBAp RND RNU Gp?B// HzBBr"R KpNOp- ~7@ 7y ~" KNpNECh RNM>AhNT KN KNvB@AhNT 8|gz`z|0| b^@0;NRRRRR^^0 KN:,BCJm, k0Nz.*h|fvx 20 RNp RNz` g/"o KNXO. gڻgB@Nʝp RNzJ@g,BAp RNDp RNzBAp RNDp RNz W*h KNX KN KN KN`fAN$@`X g NNCH`pNB,M"W KN. fr Rp NDp RNzrp RNDp RNz`z| f8 MNJ@g.J@l AhNT KNX KN KN KNJCgBA0 RN0 RNz| g| f KNXAhNNpNE g NNCH| f"k0AΈN6 k0N| fp`B@OLlxNuH8O@&H(I8" g~ yΈ"KN$H fv`BCJCg2"LANn"KANn"oANnB/B?DE JNzJ@g*JCg / AΈNXOJ@f AπN# JN&OLNuJAg BAA`<BARA0NuH0$H&IrN6BAN84H"ҁ҂ y$ H&փր y&8 L Nu/SJBg v`t&NuH QO$H<>HDzCANtJFm2H ЀЁ% JGmH4H"ҁ҂r|r0/ mH"ҁҀ% 0/"mHH$ԂԀr(|r(POLNuH YO:$H6>/ H ЀЂ. HW2/&gt`BBr"y0 JNfXXO8R@oJ42NJEgr??4 J2NXO`??tr JNXO0 JNz0 JNzXOLNu?r9 iSABBB<HCltHClB 6NuH MNTp MNT 6|BA0 RN0 RNz MNN0_@g S@g$S@g `,32 LNp"L KNnp`pANFB@O>L<Nu?/ 629f|E?9.CϘ R hl PNTO?90CϘ R h PNTO/96CϜ R h PNXOJCgp RNzp RNzp RNz$_6NuH009fґB@N&ECϡ R h PNnCϡ R h PNnrp RNDG 2+(p RN0+(fr`BAp RNB@N RNU "K RNM> KNTB@ KNT 6|BA0 RN| f$BAp RNDp RNzpN&p`B@L Nu09f A NNNuO09f4"HANnAN C y h PNnp yNzONu/ O&H09fP"HANnAN GCϡ S h PNnC S h PNnp SNzp SNzO&_NuHf"/ AN#XOpN&3> JNY"K JNZX&_$_NuH>,H*I(o (EϘGNJ@g$AGN#J@g p KNF` pN& NN"N LNZ""N MNZ""L MNNJ@g knN& MNր LNր\ NA,H fAiN#p KNF"kn NNn"M NNC NN"L NNC NN NN:6l\N%\ kdn0+bg80+hgA`A// AN#POJ@g NNB8p KNF`pN&7|r NNB80+rf2+hg "L MNj MNY LNYSkdjpNL|NuH.O,H(I*o@NJ@g*AN#J@gpANF` pN&N8$HANCl LNZ"p LN J@fV LNYp/g /.g2/ "LA"NpXO NN`p/f/ "LA" /NXONDJ@g` LNY JNO,LtNuHAN/"LANXOAϡN094gf LN`\ LNX( LNYAϡNf/ "LAN XO` LNY/"LANhXO`AнN$@pN&2H ЀЁ j&60JCnOL\NuH>QO*H(I&o E44J@g y` y%H5yBj MϘ KNUJ@f"/ 0gA`A/AN#PO`pN&HjHjHj"L MNVO J@gP0*f$2*f4gA`A/AN#XO`& *l, mfA`AY/AN#XOB@N&` NJ@f NB@` LNRNB,H g"LNn KNRNB.g"KNnN8/HANANTI"B@ANT 6|BA0 RN|f2Hl@ LN$XOJ@mAFN$@J@lAKN#ANT0 RNz|gANN0O"LNuHANTvIG`pANT 8|BA0 yN0 yNz0Y@gS@g `BC` @g MNJfAN#`r MNYxJ@fAN#`XpN&"M LNn LNpCF KNn"L KN KNb:J@lAFN#`BCB@N&JCf&ANNC MNn|fCaAFN` AqN#OL<NuH(OE RNU C RNM>I2,p RN0,fr`BAp RN0,fr`BAp RNANTB@ANT 6|BA0 RNANN|f>p RN9@ RpNJ@fp`B@9@ RpNJ@fp`B@9@O"LNuH(OE RNU C RNM>I2,p RN2,p RN2,p RN2,p RN2,p RNANTB@ANT 6|BA0 RNANN| fFp RN9@ RpN9@ Rp N9@ Rp N9@ RpN9@O"LNuH>O,HE"R iT&P il(PA"NNnAN C KNn LN&R NA*H f`j RNU M"N RNM> NNTp NNT 6|BA0 RN|f @fB`"L MNn` MNB8 NNN MO0L|NuH>OX/H<8/I&o,oBC~ECՔ JtQ>:pN&(oB@N /g @0NNRp. NN*H gRM g NN]J@gAH|N[J@g"oAN^fJ@f"B@N& oN$>pN&JGg"K JNn"N JNZ"C NNpog" fʑB@N& NN(HpN& fB@N&B@`v`H?A֢N#TO`| g,C MNJ@f//"N0 oN:XO:`JKHoHU"J NNPOJ@g *:ff"o MN^fJ@g *:fBAH|N["MAN^fJ@f B@N& MN$>pN&JGg> KN. NNހT /g @NRހ NA(H gv`BCJCgzC LNn"K LN"N LNC LN /gBC LN"o LN`&AN#`0/f/A7N#XOB JNJg JNbBJ@g/ "J0 oN:XO:` *:f JNXHJ@g4 /g @ h&0Nz"L J20/NJ8J@l`N%\`X0gDHRAYN#XOJ@g@p\ JN*H f*J`RM MN J@fAרN#`HRAN#XOJCg LNB8̑B@N&0OL|Nu?/ $H6tAgHpAfBB@N0 JNNRBAp yrNɚNurp yrNɚp`B@$_6NuH4O$H68H$ԂԀ j&N&Hp+$gB@N0 JNNRpN&CA NJ@gAFNrdbAN#`2pDgfrDf`KCF MNnC MNZXC ANnCANp?HjHoBgBgC MBBBAB@N8O`pC JN4C AFNZXC ANZX JNAFN\`pDgtrDfnCFANXJ@fBKCF MNn MNYp?HjHUBgBgC MBBBAB@N8O*H g$ANJgB@C MN f` 0* N:VB@N&`BHk HjFCBA0 JNO OL,NuH>O(H68EC JtQA֔Ct Q lfB@N0 LNNRpN&2H ЀЁ l&N*HM0-|bf@0;NZAN$@`pDg4rDf.C@ JNn JNY"J NNnC@ANX`C2 JNnC JNC@ NNn`-@H|0NTJ@f-@H?AMN#TO`B-ACqA@NC@ NNnA0N[J@fH?A֢N#TOB`jC@ NNnG"N KNX NNYpDgrDf"N JNn"KANn`&BHSHVCr0 LN O `rAtN# NNJgDp?HmHRBgBgC؂ NBBBAB@N8O&H gANJg B@C KN fB@N&` 20 LNOL|8NuH O86<N2:N/f$H g jfTp1 yrNzJ@fBAp yrNɚ> ?yBo?|?|1Ar09N*`0*S@gU@g`*20 j&N:`?4rB@ j&N*TO:`zJEob20 JNJ@fT2H ЀЁ j&40|g&_Bg`*4 j&20NwJ@g20 JN` 20 JNB@N&OLxNuH0O6|EG"J KNJ@gXHWC0 S h&NFXO2H ЀЁ S"h&41|g_Bg`20 SN ` 20 SNB@N&O L NuH0QO$H68J@fJAg jf&j& j&:(`v2H ЀЁ s@fNHoC K0NFXO2H ЀЁ?s?sssC JNpWoC JNp2H ЀЁ j&:0JEnNRPOL 8NuH:O$H jf*G"y iT A"y"il" yNU C yNM>A NTIMHT"Np yNFXO8 yht6hvHT"NpNFXO0VR@82TRA6v j&8(I`t2H ЀЁ j& p@g p@f>2H ЀЁ j&N,H gC LNn LN "LANn"L KNnp yNzp yNzpA NT :|BA0 yN0 yNz|fC KNJ@gpN& KNpANpCF LNn"K LNZ"CFANnCANZ"C LNb$J@gHWA؄N#XO`$C LNjHjFC AN~XO`BC2H ЀЁ j&80JDoJCfA NNOBL\8Nu/ $HN $H g/AآN#XO JNB8$_NuH>O&H$I6>8 KNTB@ KNT 6|BA0 RN| f$BAp RNDp RNzpN&p`B@L Nu09f A@NNNuO09f4"HANnAN C y h PNnp yNzONu/ O&H09fP"HANnAN GC S h PNnC S h PNnp SNzp SNzO&_NuH8&Hv29H ЀЁ ylN$H gC@ KNJ@fI2BC29H ЀЁ ylN$H gC@ KNJ@fI2BCJCf$/ AN#XOpN&ByؾB@`pLNuH0&H$IBC INY"K JNZ" JNJ@l*09ؾg$/ A'N#XOpN&Byؾ`v JNY"K JNZXJCgB@ JNJL NuH<*H(I(EGjNJ@g$AN#J@g p KNF` pN& MN"M LNZ" yN& LNրX NA*H fAN#p KNF"y MNn"L MNC MN MN:6lFN%\ kn0+g&/ AN#XOJ@g MNB8p KNF`pN&`p LN6 MNB8 LNYSkpNL<NuH,O*H(INJ@g*AeN#J@gpAjNF` pN&N8$HANC LNZ"p LN J@fN LNYp/g /.g*"LAN>z MN`p/f"LA /N"NDJ@g` LNY JNO,L4Nu/ / QO$H&INb"J KNZX KNJ@g"K JN"K JNR`>BoBoBHWHo C KNUPOJ@g f2/yb4/ydSybpN@ KNYPO&_$_NuH8$H(I j&6(`2H ЀЁ j& p@g p@fR2H ЀЁ j&N&H g4r+$g3ؾ"LA NANl` +&"LA N2H ЀЁ j&60JCnvLNuH8O$H(I j&6(`2H ЀЁ j& p@f^N&H gPC@ LNn"LANXJ@g60+U@gU@g`(AN3ؾ"LAN~AN LN2H ЀЁ j&60JCnrOLNuH<$H(IGdN0J@fTpN&HkHSHk"L JNVO J@g0+f2fAN$@B@N&` NJ@fNB@`ZN8*HAN?j0*jS@?@2*jSA?AKA0rNRBA0NÐr0N8 K4* 2* 0NpjgDr0NÐr0Nê> ?j 0* jS@?@2* jSA?AA0NNB@POL,NuH?h0hS@?@2(hSA?AK0rN8BA0NÐABA0NRA0NNr0N8Ar0NR6*`2H ЀЁAN(H g8*4H"ҁ҂r6:*r7E7r7r"K oNJ@g2H ЀЁ4+rm40km*A0BANRA8420NAr0NR`A8420Np4H"ҁ҂r g&0rNÐpSkpkk K0NN2H ЀЁ62JCnOL<8Nu/ / QO&H(Ir09Nê0<N&HoHoHo Ho r 0+ NʐO`6C LNJ@gC KNHoHoHo Ho r 0+ NʐO0/of0<N&09NPO(_&_NuA1h0"yz3P.pN(NuHpN&ANHWHUBgHyp ?r?/tCAprNrOB@N&C SNM>ANT20ANv|B@ANT :|gx`x||g|fHW"M0ANxXO<`j|g|fHW"M0AN@XO<`H|f c6C%N(H gfN>7@C%N(H gJN>@C%N(H g.N>H3C%N(H gN>H3 Sl6I Sf k f LN`&HkHkHk"K LNO J@f A(N#7k7kpk yz1@. yz"h$LNu/ / EG09g645j HjHjHj"J KNO 5j5jBy`5R5j KNd3&_$_NuH0&H$Iv1 C A NJ@gB@`&S$R g" fܵfp`B@L NuH8&HEp CA NB+CڊA NJ@g$p.AN(H gBp"LA N`B+ p CANB+j$'j&7j*7j,LNur@g09Nur@gB@NupNuH>O&HvEBBD:HI L+FH|N[C LN^fJ@f(`ANYJ@gAFNYAFN\J@g"LANJ@g "LANnCF LNnCڍ LNN8*HM NNp LN <`B@.NJ@gzCڋANJ@gdp.fCAN-tJ@gJ(JphNB$H fB`DrhB@ JN|CڑANnRD5D.(B JNڮND<JFgl(k<+.+'W7D'E7|'B0+ByZg K09ZN g2kDf f"L kNnJ@g'L(WBCk LNT MN0OhL|NuH k:7h@0* f j& f(k` "L k:N(T f`(k`|(T fLNuH<$HrjH ЀЁNB&H g JNTpjg JNIN0, jBfrjg 0, JNp"yz KNp7@7@67j7j7j7j0*>j42*H5A00*>@H4*>j42*HHA@n 0*0f 4*gRj06*Hpj@5C20*Hrj@H@J@gRj20*085j2.8*02:*@DlN2*8gF2H0JEo4H…0HBJBgRA4A2JBoj82*8lBj80*08:*@Dl8*jBF`*URFFo" fJDgNBE6|`p"j:4H"ҁ҂AN2H ЀЁs-g "M j:N0, g*A04H"ҁ҂' AC8+I47`A02H ЀЁ' 2H ЀЁ43j4SBj47rsRA7t77rCH0HA6JAftEH…2HB:|orFH ЀЁ7`7|*URFFm f2H ЀЁs Bs7D05A24H…0HBJBg Rj2`B&pD5@*%K&LOP(H,I*o$oBCxN8/HG KN LNrrdAڦN#BD`"LANnCANZ"JDgfpAN 6fXp+g0 +.g8RVC LNZX/ / "N LNbPO8 LNY`p+f"+ӒRUNDJ@f"JDf`|g|g|g 0N%\BD oN0OL|NuH:O,H$I&o(o$vB@ o 06H(AN\f JNrrdAڦN#B@`N"JANn n&8(`"2H ЀЁ n& p@g p@f nf`2H ЀЁ n&N$Hp*$g.RSC ANZX/ //$"KAN4PO6ANY` *&є o RP` nfz2H ЀЁ n&N$H0*|bV@0;NLL:RSC@ANnAN\/ //$"KANPO6` o RPA@NXє2H ЀЁ n&80JCgJDnAN\0OL\NuH0O&HN8$HANp KN J@fv`BCJCgp/fv`BC JN0O,L NuH0O&HN8$HANN\N\p KN J@f(/`xN\ JN O,L NuH<$H&IBp\ IN(H KNS 3\f.*LBp\ KN(H gC JNn\`*\B@`$ gC JNn`p "K JNB* pL<NuO"HANvJ@g:p ANp.ANANJcCAN4 fp`B@`B@ONu/ p\N&H gB+p`B@&_NuH8$Hp\N&H gBp\ JN(H gB,p`\B@LNu/ / $H&INS 2\gC JN"K JN&_$_Nu/ / $H&INS 2\gC JN"K JNC JN&_$_Nu/B(^H2|t i|Pt4"dHA4|B|Cڦ6HÇ HC0:SH6HÇ 2HÇ HC0:SH/SH2H HA:SH6HÇ 0:SH/SH0H H@:SH2H :SH&Nu/B(^H2|t it4"HA4|BH… /"/ N, "N& /U"N(JdB ez`BEJEfJCg 0NBC`B@`JEgpOLxNuB@NNu2pNNuNfNu/ / &Hp\N$H f$Kp. JN&H gCWANJ@fp`B@`B@&_$_NuH0$|N&@ R6( KN0L NuNJ@fpNuB@NuH 8$HN& J"0NfA[r0Nrfp`B@`B@LNuH0$H6&IH"ҁҀ rg$82`"K0 JN2H ЀЁ82Df0 JNL Nu??0(i2(i89SDgSDg SDgSDg`&D@4 yfDA6`DA4 yfD@6JBg0`086NuH8UO$H<:>33&SAm4H ЀЂ rgBG82`RG2H ЀЁ82Df0HNB&H fB@`2H ЀЁ82BC`H2H ЀЁ rg?/&4/rE J0NXTO2H ЀЁA4H'(8RCDfrGB@C KN2H ЀЁIBC`&0H 3rN (8 ЀЄIRCCn82H ЀЁ5 KNCHpTOLNuH0$H6&IH"ҁҀ42lB@`R2H ЀЁ82622H ЀЁ6z`$2H ЀЁ622H ЀЁ42SRECf0L 8NuH UO$H6H"ҁҀ rf|C0Nf8J@gl4H"ҁ҂02Wy HrD8J@oF:y "ҁ҂<262`2H ЀЁ622H ЀЁ54rBFfTOLxNu/ $HNsCTB@ JN$_Nuyo3NuH0&HEBRCB@NBC`2H ЀЁsRCRm2H ЀЁs L NuH6O/H8*IBC"y iT&P i/P il$P i/PMC NNn NN "N KNn"KANn/-&C^ oNXO0-* JNZ0-, oN[D-$H|p yN-$H|p yN-$H|p yN-$H| p yN yNU C yNM>ANTEO/HD/I@Nb|l yhPrp yNBC`v y"hT&Q"h/Q"h/Q"h$Q"h,Q"hl*QpN&B@?@?@H/@I"oDCF LNn"o@C LNZXHoHo C" LNUPO?/C JNTO?/C oNTO//C^ oNXO o@0(* NNZ o@0(, MN[D"o@C LNn LN "L KNn"KANnB@N& yNU M"N yNM> NNTEH0 NNT 8|BA0 yN0 yNz KNJf| gz`BEJEf AN#| f0"K JNn JNp JNYxJ@fBEHRAۄN#XOJEgl NNN| f"KANJ@gpN&"KANnANp"oDCF LNnC LNZ"E"oDCF JNn"o@C JNZ""L JNb$J@lHWAN#XO`4"L JNj JNCb oDAFNpC oDN fB@N&OVL|8NuH>O(H<E"R iT*P i/P i/P i/P i&P i/P il/PpN&C2 oNnB@?@?@H/@@B-K^,@H|NTJ@f"B@N&,@H?AN#TO`$M N,@H|N[J@gP NNJg NN "N oNn"NANnC@ NNnHoHoC NNUPOJ@fB@N&`?/C oNTO?/C KNTOCA,@H|NaJ@fB@N&AN#`R//"M oNXO//"M oNXOB@N&6, 0HoNXO R!o, RNU C RNM>ANTGBDpANT :|| fz x| f8?4, 2p RNTO@g 6HoNXO R!o,p RNz|fR"o KNn KNp KNJg2 KNYxJ@f&HSA&N#XOz BAp RNp RNz| gBBA0 RN0 RNzANN|fC2 oNJ@g,"oA2NnAN0AFNNR"oANJ@gpN&G"o KNn KNp KNJg K`Ae/,@H?CO NN\O NN::lN%\`*"KA,@N>"KA,@N"KA,@N̑B@N&l g0, NJ0N9C OL|xNuH$H>G jfr`BAp SN jgr`BAp SNIC2 LNn S"hT" S&(C@ANn S8(HĉHANθer`BAp SNB7@A"S#HKC MNn MN S"h" MNJfr`BAp SN MNJgr`BAp SN8* 0HoNXO S!o, SNU K"M SNM> MNTBEp MNT <|| f| z| f8?4* 2p SNTO@g 8HoNXO S!o,p SNz| gBA0 SN S!C MNN|fbj g0* NJ0N5D LNJg:"LA2NJ@g*"LA2NnAN0AFNNROLON,H<E"R iT&P i/P il*P i(PpN&B@?@?@H/@C@ANnHoHoCANUPOJ@fB@N&`h?/C LNTO?/C MNTO//C^ oNXOC2 KNn6. 0HoNXO R!oB@N& RNU I"L RNM> LNTBDp LNT :|| fz x| f8?4. 2p RNTO@g 6HoNXO R!op RNz| gBA0 RN0 RNz LNN| fVn g0. NJ0N=C "KA2NJ@g*"KA2NnAN0AFNNROL|xNu/ / ]OGC KNJ@g S0( g\4H"ҁ҂ h&N(Hp,$g0CA NJ@g "L SN`AN#`"L SN`t2H ЀЁ S h&N(H0,|bB@0;N8"..0 LNP`,0 LNF`"0 LN`0 LN` AN#\O(_&_Nu// YOEj8J@gv`vHWC0 JNFXO0@CH?2?2?/4/r J0N\OXO$_&NuH 6EH2A@I 2l4J@BA %l"4BABC 2I@A"24BAB8L@D% @"2@4JA% @0A`NJLNu?/ 6E2A@I 2 4JA~%  0 JNJ$_6NuANJNu/ QOB@NpN.pN(pNEj8HWHoHo C JNO ??/?/4/ rB@ JN\OPO$_NupNE09$J@g S@g S@g`N~`pNV`B@NNRy$B@NENuH08:$H62H$Ԃԁ&r( 0*r(@2*r(Akm`6+kClTkmN0+k@lBkk2HHҁ4+H…HԂ S6<0HH@k80C`*km"0+k@lkm2+k Alp`B@L 8NuH YO:8$H6H ЀЂ22|g_Ag`T4 J20N`HHWC0 JNFXOom*0/4H"ҁ҂r@lWm0r@lp`B@`B@XOL8NuN($H|NuHO6?A4/H0/I,?|xN2?@N/f$H g jg jg?/44rB@ j&N*TO<R@g jfL j&pNJ@g< j&AN,HC8A NJ@f j,gDp JNNR2H ЀЁ j&40|g_Bg`?|~ `*?|~` o00"o,24,ob< of0`$0**@HЀNB*H fA;N#B@`M"HVHo."M0/ JN&POr09N8r09NBA09Nê0<N&pN&BG`0HЀAN:XGo*m0<N&?C?o40Vy<2/4ny=A09y4nBS@=@29y4/4nBSA=AGHoHoCANpPO0/:/ Vl0` no0.nl:.` no:.6o2o?A?@?EBB>?B0/2/ N2?@N/f$H gx?/ 4/rB@ j&N*TO<R@gZ4H"ҁ҂ j&:0|g_Eg`84 j&2/ 0/N&J@g" jf2H ЀЁ j&NPJ@f| og`|gZ0/N/f(H2H ЀЁ"l&41||g_Bg`*4 l&2/ 0/NtJ@g 0/ogp`B@?@ ogZ|gT0/ofDgF2H ЀЁ j&40|@f,:0||g_Eg`>|gp`B@?@`|JCf0/f 2/f4g80<N&BG`*0HЀAN0HЀu2/tGHԂu(XGo*m0/gZ4H"ҁ҂ l&p SySl,Hk"K l&0NFXO2H ЀЁ l&7p7p"K LN0gZ4H"ҁ҂ j&p RyRj,Hk"K j&0NFXO2H ЀЁ j&7p7p"K JN0/f2g?o8BG`0HЀANXGo*m0<N&po fޑ0<N&BG`0HЀANXGo*mB@N&0<N&0/f|f o00"o,2` o00"o,2 ob0"of2$oj4 MNCHpO6L|NuH8O8/.BWE @o45B`45@Ao 5A5D`5D5A:*RRE6*jRCGI`."K JNFJg Kr0NR??4*20NzXO K0RWN?6JfOL8Nu@l4`40Nu@o4`40NuH>O&H6:,I0+ N?fEr0N8r0NBA0Nê0NxC|EEL45k0+kS@5@2+kSA5ACAJN0<N&pN&?420NTO0<N&KVITGXHoZHS"L MNpPOUfTgv0Rl:` 0jo:0jl8` 0jo80Df2Fg80<N&?420NTO8<?420NTO0<N&pSf^0<N&?420NTOA0/JN&0<N&20Nb<20NX=@20N>VR@=@20N.nR@=@O\L|xNuH2/m?A?m?m4/m?B0/m?@?m?m C JNJ@fC JNJ@gp4H"ҁ҂t gn0 KN`l2H ЀЁ tfXHoC L0NFXO2H ЀЁ?t?tC JNJ@gp4H"ҁ҂t f0 KN2H ЀЁ k&80JDnNROL<NuH $H<:v8*`62H ЀЁ rf4 J02N J@g62H ЀЁ82JDn0LxNuH J0NNRHSHT"K KNpPOpTf` 0 MNJ@fB@N0 JNNRHSHT"K KNpPOp4H"ҁ҂u gzTgHoHoHo CA02NO :<* 0/N/f*H g mf*JEgF4/2/0/ JNJ@f.AVN#` ?/?/?42/0/"M JN3R\O0N/f$H g|N`tHo HT"K KNpPO|TB@ JN0/ fr`BA|g B@ JN.JFg4K:;j;j;j M20NJ@g 20 JN$OL:<>&H,IEKF RN6o2H"ҁҀ R80"KpN2H ЀЁ R1`0*jf`j 2*H ЀЁNA(H f j `*2*H ЀЁ"R LN RNB8$+L&Bg/ rB@N\Op"K4*H"ҁ҂ RN R hf 6*1C` R6(0*4H"ҁ҂16 R1C2H ЀЁ RBp R1 R1B@ RN;@*5@4H"ҁ҂ R1 R1 R! NN2H ЀЁ RNp?tr RB@NcTO RNf>JGg0 MNNRL|NuH8<:(H6/ <NA$H gCNn5|5|5| 5C D0* NA@N_DA*@H|N[A@N^J@g0*ND&H` 0* ND&Hp""k AN"LA2NnA2%HN\HH2*|A5@C KBB20NbN3LxNuH8:8(H <NA$H gCNn5|5|Bj Bj C0*ND&Hp""k AN"LA2NnB*@A2%HN\HH2*|A5@C KBB20NL8NuH0<:&H6/ <NA$H gCNn5|5|5| 5C D0* N"KA2NnA@N`A*@H|N[A@N^J@g0*ND&H` 0* ND&Hp""k ANA2%HN\HH2*|A5@C KBB20NN3L xNuH8$H(I/5|5@Bj 5B C0* N0*ND&Hp""k AN"LA2NnN\HHHA5@D@|:A|\BB*CB*A2%H"o"LNuH0YO:86&H <NA$H g:CNn/"Ho4/&"K/$0/" JN"\OC W420NXOL 8NuH>O?@><8/>6/@&H*I,oB <NA$H g"KANXC JNnJCgp`p5@5DBj 5oF 0* N:9P3PCA0N(H3Pp""l AN"MA2Nn"KA@NnA2%H/HH2*|A5@"g"NANn`B*C L420/NOL|Nu/ / N8$HGtABAB@N:pBBA 2*B@NTOpBBA2*AB@NTOpBg9jr?A"BB0*2A@B@N PO&_$_Nu?/ 6H"ҁҀ ylN$H g0* NJ JNB8E2H ЀЁ Rp RBp RBp RB ylB@N3p5@$_6NuHO(H:<8&I$ g6,C KN|Ar09NRB(pCANHo(C,A/ /0,rh|gr`BA09 _"_NºXO0ND(HKp"L MN y0(mH2D@;A0(mH4@RB;Bp;@;@;@?+?+?+4BA MB@N\OABA09NROO^*H?@BC/|GI"S i  S"h"" gt`BB?B JBfr`BAp SND0/ g&C2ANn@0-H/@6- -`|poN/H g>>0HoNXO S!op ?r ?t SrN*XO SNU Mp?rү///HzjBB"S NprNO NNEr"J SNM> JNT NNBEBG?G?Gp JNT 8|gr`r?A |0|b@0;N66hf0/ NN:JmrҀ/A o fz`BE?E`~?4/2p SNTO@gf6HoNXO S!op SNz`D~?p?t SrNXO`(~?p ?t SBANXO` ?|z?E0/g&HN<Am<ZoAN#BE0/gBA S0N0 SNzJEg NNX oNCH JNNEF0/g2/ g| J0/NHo4C0/ MNh\O o2/H ЀЁ"j&3 o"j&3 j&NAN0/ JNNR`??/At2,0,NPO`t|fnB@ JN.MHn"N0/ j&NFXO0y9@2.y9A6/H$Ԃԃ j&=p(=p(0/N"N JNOL|NuH JEo 0Ho8NXO2H ЀЁ)8 *H?/j?/j4/j2/h LN*XO LNU K"M LNM> MNTBC~0/4 MNT 8|BA0 LNonf8/dvodf??/h4/h LrNXOH<BGopf8/hvohf??/l4/l LBANXOH<BGorf8vDfF?4* 2/0 LNTOWg*>Ho8NXO2H ЀЁ)8 L0NzBGJGg& MNNo2fN"KA2Nn5W FN\HH2*|A5@AN0/6AFNNROO`Bp ?r?t?p ?r ?t?p?r?"y K0/rtNO`B@N\O&_NuH6YO:$H"yl6)KM`0<4H"ҁ҂ ylpf pfN&H gHW"M yl0NFXO49H2yH <N:49H2yH <N>x2+|b0A2;N$Dn+H??+ Hk2+@H??+?/ ?Cf JNO`+H??+ Hk2?/?C~ JNO `+H?A2NJgA2`A/?/?C JNO `~+H??+ Hk2?/?C JNO `T?+ ANJgA`A/Hk2Hk@ kfp`B@??+?/?C JNO`BDJDg J0NbJ@fB@`2H ЀЁ yl60JCnpXOLl8NuH>Ot$H?@?A?B jfN&H"j&8)KM`2H ЀЁ j&40|@gxN(HCF MNngBHo"N0 j&NFXO>ooy<:/ooy?E2H ЀЁ j&<060t,$gC MNZX` C MNZ"BgHj,$H|??9PC Mt2/0NO `2H ЀЁ j&pfk`F2H ЀЁ j&<0pg&/0$p(4*>j4SB2H0>A`>kp,$gC MNZX` C MNZ"BgHj,$H|??9PC Mt20NdO 2H ЀЁ j&80JDnVOL|NuH8E&R6+`D0<4H"ҁ҂sf sfAN(H gNB82H ЀЁ63JCn KNB8AFp$!@&BA5A1A*B@5@1@,BjLNuH>OEF j&6(I`:2H ЀЁ j& pf N&H g kg kfC@ LNX0+g$C L/ / kfp`B@ _"_N,H`"C L/ / kfp`B@ _"_N,H*n HL0- |@ Uf"mfkgd0 JNp""MANA2'H7D2H ЀЁ"j&3"j&3 j&NAN0 JN2H ЀЁ j&60JCnNROL|NuH<(H*IEF"j&6)`\2H ЀЁ j& pf0N&H g"+@f"LANJ@f "MANn2H ЀЁ j&60JCnL<NuH0$H8&IA""""""v`:0+4H"ҁ҂牰rl7r0+4H"ҁ҂牰rl7rRCCnL Nu// $H6*HÇj jNR@N5@2H@5A$_&NuH $H"yz i<6( 8*`T2H ЀЁ r N:2H ЀЁ r h 1C r :(CrJEor2H ЀЁ82JDnL8Nu/ ET yz"h<0)H 5@ jNb RN\ jNTC09 RNC 09 jN$_NuH<$HvNJ@gGXABAB@N.6J@gArB@N.6JCg KrB@N.J@g f&JCglBB@ kN3I kB@N8K SB@N:2@n`2:8WAm yl/ AN#XO`0`/ A N#XOB@L<NuH86&H$yN(H g`VJCgL` 0*,g2* f"KAN-tJ@f&$j f`(0* f2*,f"KAN-tJ@g J` $j fؑLNu?/ 6&IN~ f`0(.1yl`AN#JCgp`p&_6NuH86(H&I29Pg$yT`$yX"K L0N6H"ҁҀALNu?6Nv6H"ҁҀ yT6Nu?6NV6H"ҁҀ yX6NuAt09PgC`"H INuH8O(H>?A<<$I$ g6,G,"K JN| Kr09VNRBp"KANHWC K/ /0,rh||gr`BA09V _"_NºXO KBA09VNRG S8(HĉDIp4H"ҁ҂"yT LN:lHŋpGFE9@ S:(lHŋ2/LNuH :vyr pCHNC$H f`hBD`(rDH ЁЀA0H$ԀԂ%(%(RDDn2H ЁЀBtCH%Em8H&քփr8r8 JL8NuH>Ot$Hpj.?@G"S i.C WNn2*,p SN0/N**H fA'N#B@`*0p ?r ?t SrN*XO SNU M p?2/ H// HzBB"S NprNO NNIj"L SNM>J@fp`B@?@ LNT NNBFBG:p LNT 6|gr`r?A|0|b@0;N&&hjNL0/ NN:JmR?@ of|`BFv`JGgBA0 SN0 SNzJFg" NNX MNCH LNN|fN WN"WANnp SN5@,ro5A.D0N\@1Bj 0/gp`p` 0/gp`B@OL|NuH8(H&Ip2NB$H f`Fp2"o JN g%k$"*g A 'J`%Tp$%@"g A (Bj JLNu/ $I g "@#j`  *g @ JNCHp$_Nu/ / $PB`&J$j KNCH f&_$_Nu/ EHjΓ JN8XOHj JN*XO$_NuN"ANNuH<*H&J`Hp2NB(H f&L f`6p2"M LN g (%L(p)@)@Bl $L*m f KL<Nu/ / $H` &R JNCH$K f&_$_NuHYO*HBG`&r`pNC(H f WN`)M&&L*m f WXOL8NuH`|2H ЀЁ o h&N$H gX*$H|C LNn`>2H ЀЁ o h&N$H g0*[@gS@g`vC@ LNXxJDgH L0N$H g:(K`2*lCANJ@f0-,j,fll L`(T f g kk KOL<NuH>Oz/H:<8*I$g&hI""L MN| Lr09VNRB4p"LANHo4C8 L/ /"o0)rh|gr`BA09V _"_NºXOEjp4+.H"ҁ҂"yT JNvPjHÇpEDC5@ y6(jHÇ2CRA5AMHp""j NN%N +1HH2. |A=@ r5A5A5A mPn6-`vP?-??-4BAB@ JN\OCIANn0+,g yz"h$QCANr09VN8 o0(rh|gBA`r09VNxC2A2tBA09VNFBA09VNĒA4y 2D|P09VNr09VNx LBA09VNROL|xNuH8YO."o"i$P&H` g &J(J$R f&"j WNZ JNCH g$@` g$L``jj JXOLNuH6O,H/IGHoCp SNFXO S?ht?hv HWCpNFXO S?(?(?(?(?/CA4/ $S2*0*NO A2/ 0/NJ@gHWCp SNFXO0/o2o S>6/ HÇH2/ HHA4H…BlSr pNC*H gr֮,mmJl"//0 oNXO+H g>*0-M0`FRmv֮R  n0Nz$H//0"j oNvXO+H f MNCH o,`*$ o,h MOLlNuH>OD 9fAMN#` yN . gN~&H(K fANA'N#` KN(HK6*M"U )fr`BAp VNDp2CANBC VNU E:p?B/ HzbBBr"V JpNO29 ~0HA|P5@ 5A" JNpNEG"K VNM> KNT JN JNxB@ KNT :|g|`||0| b(@0;Nx^0 JN:.BDJm j0Nz(H*|fxz 20 VNp VNz`p2"UANJCfv`Ho/ C JNPO(H"lg*p VNzJ@gVBAp VND`>p2"UANJCfv/ CA0NXO(H*"W )fr VpNDp VNz JNX JN JN JN| f6 UNJ@g,J@l KNT JNX JN JN JNJDgBA0 VN0 VNz| g| fP JNX j0N KNNpNE| f*# MNNPp`ANB@OL|NuH8O&HNRNB$H g"KNnGCo JNCoN(H g"LANnCoN(H gN>?@,CoN(H gzN>?@.ynS@l HoArN$@XO0/,gr`r?A.CoN(H g N>@0`|0/0N\@1HWAN.XO JNCHO2LNuH8&H$I gv"jN&HpNA&g`I*0H??*.?*,HjC LNO LNRNA"S#H g&S"L kNn` SNB8B KLNu/ $H"yNj$H$_Nu yPANu/6ymv2H ЀЁ yP&Nu yNu/ / E` R&P hNB8 RNB8$ f&_$_NuH8(HENGr0* gBA Sp!Nn`BA?0*gp`p S2NnBA0* SNnp"L JN0* gr Sp!Nn`r?0*gp`p S2Nn0* g"y`"yp& SNɰ j# m j' o5|# r0* SNnpNxLNuH0O&HBCxE"JN"JN&H gN>:"JN&H gN><"JN&H g"KANn"JN&H gN>6"JN&H gN>8BA0NL:BA0NL<$<2H09HN:$<2H09HN<4A20NTOp`B@OL xNuH0O&HBCxE"JN"JN&H gN>:"JN&H gN><"JN&H g"KANn"JN&H gN>6"JN&H gN>8BA0NL:BA0NL<$<2H09HN:$<2H09HN<4A20N:TOp`B@OL xNuH0O&HvE"JN"JN&H gN>8"JN&H gN>:"JN&H g"KANn"JN&H gN>6BA0NL8BA0NL:$<2H09HN8$<2H09HN:A20Np`B@OL 8NuH0O&HBCxE"JN"JN&H g N>:"JN&H gN><"JN&H gN>>"JN&H gP"JN&H g "KANn`B"JN&H gN>6"JN&H gN>8BA0NL:BA0NL<$<2H09HN:$<2H09HN<?/?ABB20NPOOL NuH0&HE"JN"JN&H gN>6"JN&H gN>8"JN&H gN>:"JN&H gN><BA0NL6BA0NL8$<2H09HNy6$<2H09HNy:$<2H09HNy8$<2H09HNy<?420N-TOL xNuH8&HE"JN"JN&H gIp"K LNB,"JN&H gxp"KANB,;"JN&H gVp"KAO$H*I&HCANpN&NBLILMCj NNn"K NNZ" NNXH op0J@fCj NNn"M NNZ"&MBC NNٮ*H g>`B. #f.H|A|b@0;N.t...~.pNA( g NNRNA"T#H g(T"N lNn` TNB8B`\ NN6`R NN6`H NN6`> NN~`6 NN`. NN`& NNI` NN~`/ AN#XO`^"M0< NN: f MN2f Cj NNn"J NNZ" NNbJCfN:#LA0N&OTL|NuH:O&HNRNB$H g "KNnG"K JN"KN(H g N>>`>"KN(H g N>?@`?|"KN(H g N>?@`?|"KN(H g N>?@`Bo"KN(H g N>?@`Bo"KN(H g N>?@ `?| "KN(H g N>?@ `?|# M"KN(H g N>=@`Bn"KN(H g N>=@`Bn"KN(H g N>=@`Bn"KN(H g N>=@`Bn"KN(H g N>?@`?|P"KN(H g N>?@`?|"KN(H g N>?@`Bo"KN(H g N>?@`?|"KN(H g N>?@`?|"KN(H g N>?@`?|d"KN(H g N>?@`?|d"KN(H g N>=@`Bn"KN(H g N>=@`Bn"KN(H g N>=@`Bn"KN(H g N>=@`Bn"KN(H g N>=@`Bn JNCHANOL\NuH8O&HNRNB$H g"BD?D,:<>v"KNnG"K JN"KN(H gN>>"KN(H gN><"KN(H gN>:"KN(H gN>8"KN(H g N>?@,"KN(H gN>6"KN(H g"LANn` JNCH`@"KN(H g "LANn"KN(H g"LA,Nn`B/,"KN(H g "LANn`B JNCHBA0NL>BA0NL<$<2H09HNy>$<2H09HNy:$<2H09HNy<$<2H09HNy8|g:"KN(H gN>8"KN(H gN>>"KN(H g N>?@"KN(H g"LANn`BF"KN(H g"LANn`BF"KN(H g"LANnCANJ@fB"KN(H gN>6 JNCHJFgpBA0NL:BA0NL8$<2H09HN:$<2H09HN8?Ho?/?CA&BB20N.O OLNuH O8BCCAJNpN&NN$y`R j #fF(H|Ag&Q@g _@g*U@g `, jNb`" jNv` jN` jN$R fJCfNhNPJDg<09y?29y??9?9BgBgBBpBANȴO $y` j #f (WfN$R fNA0/JN&OLLNuH8&H$I g"QN&HpNA&g49H2*yH <N&49H2*yH <N(49H2*yH <N*49H2*yH <N,IHjHjHjHjF?*?*8????C LNO LNRNA"S#H g&SB"L kNn` SNB8B KLxNuH>OCAJNpN&N8ELB&JpNA$ gIKNM?,?,?,?,?,?-?-?-?-?-?-?-?,?,?,?,?- ?- ?-?-?-?-?C NNO. NNRNA"S#H g&SB"N kNn` SNB8B KN$&HN&H"yFN&H#A0/JN&OTL|NuH06&HEHjxHjZHjO*H:CAJNpN&$yGjI"K LNn"M LNZ" <NB,H fAcN#`B@ LN6ox` j0Nb8$RJDg fJDg N0NIb8JDg N0N8JDg N0N/68JDg N0N8JDg N0N80NZJDf/ AN#XOJEg C KN`/ AN#XO NNCHNA0/JN&OLL|8NuH#lBg/9lrB@N\ONuH 68E Rp 2ND2p RND2p RND2p RNDJDg(p RNzp RNzp RNzp RNzLNuHANTBCK6EGB@ANT 8|0Y@grS@gS@gf| g`pN&BAp TNDp TNzp TN:J@gA`A/C JNXOp TNJ@fP"J MNnp TNJ@gA0`A3/p TNJ@gA,`A./HUC JNO ANJg$"J MNnANpHWHUC5 JNPO/H?HRC= MN\O/H?ACN#TOJ@g MN::lN%\vBAp TNANNCANCANđB@N&`Hp TNzJ@g:rB@N0`0p TNzJ@f"rpN`vBA0 TNANNJCgOL<8Nu/ O~&HCjANn"KANZ"ANXHJ@g.C KNpofpNxAr0/NJ`B@O&_NuHHo0r NʐXO0/N/f*H g mfr`BA?AIBTA`t20@AH0 g20|4|Bf~`BG`20@AHpf~`BGJGg,20@AH67p7pBk 0H0 H` RT T)m0/g>JGg0| |b@0;N(ZZZZZZZZZZ0+ yrNzJ@f~`BGJGgJBA0+ yrNɚ`6 g02+f7o mg mg mf~`BG>`BGJGg(0Rf K0N ?@`2 Kr0N*`"0/f|bfAN$@` g mf2|g`lHTr B@NʐXO0N/f*H g mfCAdNpN&-FH|Na MNA0/dN&x`20NZJ@f4~p FffHNhJ@gX2Nx`J20NZJ@gp`J0/g2JEf.BA yrpNɚ6 7|7|1x Kr0N*JDo 2pNX0/OfLNAXO~ rf8~!r#!n~#n!ْv#ْNA\O LNuXBRAMDCH y09of6!r#!n~#n!ْv#ْNXBRAMDCH09ofpNu ynNXBRAMDCH09|fpNu yْNH0$HB@N6ojt2pN(BB2pNz ڄ NA$H g6G %KCH%I"0 KNf 0NZ J` JNB80NZL 8NuNB8NuH<&H6$I *Jod2Hl6(KK`F jRH MN fJf$SL`RSCJCg jH MN f`SCJCnB K`L<Nu? gHA rpNJ6J@lN%\B@6Nu2|-| bA2;N$.HxRN`N`vNpJ@gjpNxNNuB@NlNuAN#J@g@NpA*NȂNuNJ@g pN(NuNFNuN#lNuN$FNuH0UO68:GrW@gS@g"S@gS@gd`f| f^N! `T0|| bF@0;N :*`4:0N/`Nu`N!`HWr B@NʐXO0gN/f g0N;`HWr B@NʐXO0gN/f g0N:V`N06`N `N>`EN0|| b~@0;NrrrRrZ0* f2*fL"yp& SNɰ0* gBA Sp!Nn` BAp SNnr0 SNnBj 5|`0* f2*g"yp& SNɰ0* gBA Sp!Nn` BAp SNnr0 SNnBj Bj`J0* f"y Sp&Nɰ0*gBA SpNn` BAp SNnr0 SNn5| pNx`Xj gRBA0* SNnr0 SNn5D |&fp`B@Nx` N` 9Fg @N)2`0Nr0 SNɚ|fB@`pTOL 8NuH06&HEr2 RpNɄ2p RNɄJCg g kfr`BAp RNɄ` 2p RNɄL Nu?6S@fr`BAp yrNɄ|fr`BAp+ yrNɄ6NuH06&H8Er Rp2NɄ2p RNɄJCgF0+W@g`<2H ЀЁ k&N hf (C@lx`BD2p RNɄ` BAp RNɄL NuH0]OEFG fBA yrp+NɄ7| Sg:& g @ hf AFN\ g @2+hg0(N S7h gv`BCkg R0Nf7CJCgBkJCg R gr`BA6kgp yrNɄ7CCAN62 oN\OL NuH 8BCE8`2H ЁЀ Rpf0` RCjmpLNuH88:(HvN6G8J@lp2+kmLtkH ЂЀNA$H fp` g 2+H ЁЀ"S JN SNB8\k&6+Rk2H ЁЀ SB2H ЁЀ S1$ g"L SANn`2H ЁЀ SB02H ЁЀ S1 0L8NuH86&HE8H"Ҁҁ"R$1g BNB82H ЁЀ RB g4 KNNA(H fB@`"K LNn2H ЁЀ R!pLNuH08&HBCE8`2H ЁЀ R0gnp4H"҂ҁp gZ 0gTC< KNn2H ЁЀ"RC KN2H ЁЀ R"p KN K0NbJ@fB@` RCjmvpL Nu?/ O$HpCANB/ANF6J@mArN6J@mA NO $_6NuHO&H>G?yBoBCI8`B2H ЁЀ T40kf(p4H"҂ҁp g/pA0+rN*RClmOLNuHO:60N8J@lBA0N 8J@ml>?C?EBoBEG8`&2H ЁЀ SpgA"S01rN*REkm>?|/|?Bo BoAr0N*OL8Nu/ O$H j 2*0*N>G?yBoB@?@ ?@?|/|I Ar0*N*O$_Nu?/ $H0*N6J@lARN#` $j J0N$_6Nu/ O&H>G?yBoCANAAr0+N*O&_NuHO*H>G?yBoAG N 4(H g "L K <NB+ LNCH`BAr0-N*OL8NuHrB@N&O 5@ Jr0+N*OL<NuHHoBgBg"U TBBBAB@N8O gp`B@5@`Bj Jr0+N*OL<Nu/ $H2*0*N$_Nu/ $H2*0*N$_NuH8O&H68:N/f$H gr jfj KN &H g\p'NI <"K LNB,>G%?yBo?C?D?E /L Ar0*N* KNB8p`B@OL8NuH0$H8v2|gXn>| |bA2;Np.|Gg@n |GgWAgSAg|g`D|G gUAg UAg"UAg$`&42*0*Nۦ6`0*N/f&H g kf AFN\0+ N0r 0*N`C/ 0*N/f"_N`0*N:V`A0*N;`A0*N<`0*N=f`x2*0*N`f2*0*Nb`V2*09N`F JN>`> JN"`6 JN`. JN`& JN` JN` JN@` JN` JN0L NuNu?/ E8 g0BC`2H ЁЀ R$0g BNB8RCjm RNB8BB@5@5@$_6NuHANTBCx0ANT :|BA0 RN| fp RN< RpNJ@fp`B@mgv`BC;F3N KN>< LN>>ynyoBD??AN#XO`;F ;G"p RNzJ@fp RNJ@gp`B@N0 RNzJDg*ANN0O"L$HAFN&BDz j&<(`2H ЀЁ j& p@g p@f~RD0*S@gU@g8`l2H ЀЁ j&N&HA NЃVڀp+$g:R`62H ЀЁ j&N(HA@NJgA@NVڀ2H ЀЁ j&<0JFnJ NA*H gB"j&<)ML`2H ЀЁ j& p@g p@fSD0*S@gU@gb`2H ЀЁ j&N&H"N MNCF MNC MNp+$gC MN`L"N MN`@2H ЀЁ j&N(HA@NJg"N MNC@ MN`C MN2H ЀЁ j&<0JFoJDf ML|xNupNv|Nu??8pNv62RAgSAg` pC`|`|0Nvp86NuH O8:BCt.@g0`PEHRHRHRHRHRBg?<BgBgBgBgBgBgBgBgBgBgBg"JA.BBBAp DNDŽO.RC2DgCn0OL8NuUOHWHoHoHo HoBgBgBgBgBgBgBgBgBgBgBgBgp?C.4rpNDŽO.TONu/ OEHRHoHRHRHRBgBgBgBgBgBgBgBgBgBgBgBgBg"JA.BBBAp!NDŽO.r@g0/||fp`B@`B@O$_NuH 8EF j&6(`62H ЀЁ j&Nhf0`2H ЀЁ j&60JCnpLNupNNupNNuH<6J@oEFH"ҁҀ&j& KN(H g lg lfA@N^J@g0,ND&H` 0, ND&H*k lgp0 JN8,p""MANA2)H9D2H ЀЁ"j&3"j&3 j&NAN0 JNNRp`B@L<NuH<$HBCGIH`0H"s JNLg4RCTm T l, JNRNB*H g"JNn0H'RTp`B@L<Nu// vyHE`.0H"2g"CM ANX0H rNCH0HBSCJClByH$_&Nu?/ $H6JAgH"ҁҀr `2H ЀЁr $_6Nu?/ $H6p4H"ҁ҂r $_6Nu?/ $H6JAgH"ҁҀr`2H ЀЁr$_6Nu?/ $H60<4H"ҁ҂r$_6Nu?/ $H6JAgH"ҁҀr `2H ЀЁr $_6Nu?/ $H6p4H"ҁ҂r $_6NuH YO$H8HWCNFXO2H ЀЁ6282?9?9?9?9?42/ 0/ N O XOLNuH8O$H(I&oNLfH LN&2f "K JNn`( 2\8f$"KANnC8ANC JNnp`B@OLNuH?y29ySA?A49ySB?BArNRPONuH0&H` JNC JNH KN$H fL NuAJ0f0 P@m PgpNuB@Nu//N&(8 CN (&NuH>,H0<N&ErB@5@4GI2S5A09y5@NJK Jr0NRr0N8BA0NÐr0Nêr0NB@5@42S5Apy5@ J0Nł NN6S@HÇx N420NNJBRpy5@5@2S5A J0rNđ0<N&L|NuJ@g0<N&ANNuAN0<N&NuJ@g NNNN> NCNuB@NNu?/ 6$HJAg yrB@N\pN&pCgN>rBgBrB@N\OpCgBrCg449y?09y?BgBgBgBgpBA4NȴO JN`pN B@NEN@`N$3pNEpCgNpCfB@NpCgN>rBA09NBg/9lrB@N\OpCfrCf409y?29y?BgBgBgBgBBpBANȴO pCgrCf 0<Nxp yrN\B@N&$_6NuH8$H&IN*R g KNRڀ NA(H g6"JNn gC LN"K LN LN:: LNB80L NuH8&H(INT$H g\NGC JNL gTC JNL gTC JNL gTC JNL gTLNuH.O~?@6$H*IIA"JNX"L/ pTgA`A"_NNp.AN,H g _"LAN2pTgpT"M JNB@`JCfp\ JN,H gRN"NANn` "JANnANpTgpNAr0NBAB@"M JNT6rTfB@N(BA0NK0- oBH"ҁҀ UN,HA@N_DA.@H|N[J@g 0- N0- oNpTgNvB@N0NP0OLtNuN:J@fBAp1 yrNɄNu?/4h2iBm0`04(h2)iBm6`624Qo`46(io`6)23C0@3H8C3D@lAlx`BD0(6Nu0(Qm 2inp`B@2(im4(inr`BAJ@g:JAg60Qo20(il3@0(io3@0(il3@pNuBNuPhJ@ohlJAo hlt`BB0Nu??C0Pn`02)hn`2(4i6hCo`4h6)i8(hDo`6(h23A8@3D0A3@86Nu 9gC @NBNu/ / $H&I 9gg&NA01k1k1k#` KN.&_$_NuH,QO$H(I g2*|g j`>?y09y?@29y?A"LANJ@g0*S@gU@g`09Xg"L JNDX`|*j&HoHoHo Ho r 0* NʐO`JC LNbJ@g?/?/?/4/rB@ MN\OHoHoHo Ho r 0* NʐO0/ofPOL4NuH0QO$H6&j&HoC KNFXO2H ЀЁ?s?sC JNtPOL Nu?/ QO$H65@2<@fT4*,yBj,N0 JN5HoHoHo Ho r0* NʐO jf0|gC JNHPO$_6Nu?/ O6$yFCAJNpN&` 0 JN`$R fA0/JN&OL$_6Nu/ / O&$H jfCAXNpN&GZCF KNnA*FH|N[J@fR*FH?AN#TO`ANYJ@gAFNYJ@fHSAN#XO0* N;`NAFNUJ@g JNL,J@g p7 JN~` 0< JNrCANJ@gCA*FN>A0/XN&O&_$_Nu/ O$H jfBCAJNpN& JNL,J@g p JN` 0< JNA0/JN&OL$_Nu?/ O6$yFCAJNpN&`@ jf6 JNL,J@g*JCg p JN`5|0*,yBj, JN0$R fA0/JN&OL$_6Nu?/ $H6H"ҁҀ"j&q 0NAShSj,0(lBh$_6Nu/ $HH"ҁҀ"j&q RyRj,$_Nu?/ $H6N0 JN$_6NuH0$H82*,gJ&j&6+`6p4H"ҁ҂s gJDgsf0 JN@2H ЀЁ63JCnNRL NuH0&H6EF0*,g g J0N$R fL Nu?/ 6EF0*,g J0N^$R f$_6NuH8&H(I yfVEF`J0*,gB j&6(`4p4H"ҁ҂ j&p g&8p` 2H ЀЁ j&60JCn$R fB@LNuH0$H0*,gJ&j&6+`6p4H"ҁ҂s g03|@f J0N"2H ЀЁ63JCnNRL NuH0$H:v jf"j&8)`2H ЀЁ j&N gXr($gJEf p($fDJEf@ y#ZfG `G n .gv`BCfB@N0 JNNRp` 2H ЀЁ j&80JDoJCfpB@L xNuH8$H(I< jgB@`BC:BD&j`(C LNJ@fx`RC0H0H@J@fRE&S fJDgr0*08?0_R@J@mj*m&0 JN j8g:*8@5@82 J0N *0*082@RA6B@NJFg 0 JN`0 JNNR0LxNuH> ymEF`0*,f$R f f`AFN&BDz j&<(`0 j&NJ@g~RD0*S@gU@g8`l2H ЀЁ j&N&HA NЃRڀp+$g:R`62H ЀЁ j&N(HA@NJgA@NRڀ2H ЀЁ j&<0JFnZ NB*H gB"j&<)M,`0 j&NJ@gSD0*S@gU@gH`l2H ЀЁ j&N&HCF MNC MNp+$g2"N MN`&2H ЀЁ j&N(HC@ MNC MN2H ЀЁ j&<0JFnN ML|xNu/ $H5|N0?*r 0* NTO$_NuH,O$H<JAfN`>K?U09yS@?@2ySA?AA09rNRp/@/@,IA2*9A0?A?j 2*jSA9A 1Arj@JFo4*1B?B 0*jAS@1@`B0*A1@4*jSB1Bhj?B 0yhl4(Uyo 0*4(hB?@2hlBC`0@4B9 RC|m0(A9@ 4(A9BJFox:*.F0D`8DD0RD:*.0REj*o:**00<0DR@HЀNB*HBG g6`$p4H"ҁ҂ j&p g SySj,RCCn6`*p4H"ҁ҂ j&p g8C0HЀ;RGRCCn6`$p4H"ҁ҂ j&p g SySj,RCj*m` B@ JN.~ JN0<N&"LANFJg*CANFJgHoC0 Lr09NºXOJGo&` SG2Hҁ45H ЀЂ j&p JGfܾ|g MNCHC JN0<N&` p JNO@L4Nu/ $H jl jl Rj8rpN$_Nu/ $H0*8g Sj8rpN$_Nu?/ $H0*o> jl60*Hrj@6*8j8lj8`Bj8j8gr0j8 JN$_6Nu?/ $H jlf jl^0*H02*H0HAJAgR@2*Htj@6*84*8A0@Hnj8`4A5B8j8gr0j8 JN$_6Nu?/ 8N/f$H g20J@gS@gS@gS@g` JN ` JNT` JN` JN$_8NuH :6N/f$H g0*gjg~0*Hrj@2*H04*H…0HBJBgRA:@JEoJ0H2HN"<N (0HH@|oRDj8g:*85D8r0D JN(L8NuH2(>h4?2(H4(>BH…6(>h48(HĉHDBn JAf4(gRA8(Hth@46(Hzh@HCJCgRD6:8:(C6Dl,J@g(8HĉJEo HŋHEJEgRD2D8JAoAJ@lB@L8NuH0UO8HWB@r NʐXOJ@g0gN/f$H gGN k# g k& fHNzJ@g HNpDgr`BA8 jBE<`Np($gJDf p($f"JDf k# fC`C .g o`JDfRE0H0H@J@fRF P f0 JNz<j8g:*8@5@8r J0N~2 JN TOL xNu2| bTA2;NJ $(,048>DB@NupNupNupNupNupNup Nup@Nu0<Nu0<Nu0<NupNu2| gdn4|bpA2;Nd<@dDdddHdddddddL|@g,|@g*|g(|g&`(pNupNupNupNupNupNupNup Nup Nup NupNu?6Nv6H"ҁҀ y"o" 6NuH0YO$H:<8BCH$ԂԀ.( 0N48G SNzJ@gBA0 SNDvHW0/$gt`BBr"S0 JNfXXO:JCg r S0ND|o0Nv`0XOL xNuH0YO><t@gzJgHA6N g0H|g|bp@0;NRX^FJN:>B6ddddddd:>BFJNRX^6x`0x`,x`(x`$x` x `x@`8<`8<` 8<`B@`EF j&:(G0`2H ЀЁ j& pfN gh fBFN\. j&0N?@J@g:Sf6BApNt@2IBIH &JlDm |pWN/JFf0pWg2/g J0N`B@N0 JNNR'G6`2H ЀЁ j&:0JEn$pXOL Nu?6J@g*N 6J@m$ yNzJ@fr0 yNDp`B@6Nu?6J@g*N6J@m$ yNzJ@gBA0 yNDp`B@6Nu/ $Q"$ $_NuH.O$H jm(j.K,M`*CBA NJ@fg "NAN(U`*L,M(U gHr,$f`>p,$g2g.CBA NJ@fA׽g"MNp`"M NNf,V`*L(U f%WOhLtNuH.O$H jm:.Iv`&K`*N,U gn.fg g"M LN(TRCjo%WOhLtNuH0&H$ICAN6fC A N60L Nu/ / $H&I +&&Jlp`Jop`"K JN&_$_Nu/ / &H$I2+*j*fp0+,t4*,`p0+*r2**Jlp`Jop`"J KNZ&_$_NuH0&H$I09Xg$C A N6f2CAN6` *44rN &JCf "J KN60L Nu/4H"p(4H6H!(8!(&NuH0$H&I86@of@HN:|D`(0H"r2H rNJ@l 2RE0 JNRFFl20 JNrE0"K JN2pE"K JNL xNuH<$H*I jo0*HNB&H g` "j(Qv`0H'(TRCjmrjB@"M KN.%S(jv`0H s((HRCjmB KNCH` AEN#L<Nu?/ $H6|#|bJ@0;N6* JN<`.C JN2`"C JN&`C" JN` C JN|'g JNX5CB$_6Nu/ / &HAE29vf kgx1@05k 5k 5k5k5k5k4 CFA(NnCANnCANnCANnrp yrNɄ&_$_Nu/ CE29vf424 5@5h5h5h5h rp yrNɄ$_Nu/ / &ICE29vf.23@4 5h8"KANnrp yrNɄ&_$_Nu/ UOAE0(g 0N;`^?* HjHj?* ?*CA(4*2*0*N8O j fHWHoCAN.$PO/ r B@NʐXOTO$_Nu/ / QOE>?j0*g?j?j A0N;`&0N/f(H g?l?lA0, NrNINNѢHWCA*NXOpNEpNNp kN\N:J@f AN#`0f A NN kJg09gNA.09gNB@ANȂNN> N>rB@ kN\BrB@NXO0+k?2+k?BgBgBgBgBBpBANȴO B@NEN/DNNCNI\NCN(`HjAN#XO g # N(0+NŬNVN@B@`4 kfA2pN `HjVAN#XONVN@pTOLNu/ OE/ "HAN XOHy B@C?/ N"_0NFzXOO$_NupNu/ OE/ "HAN XOHypC?/ N"_0NFzXOO$_Nu/ OE/ "HAN XOHyB@C?/ N"_0NFzXOO$_Nu/ OE/ "HAN XOHyB@C?/ N"_0NFzXOO$_NuH MNTB@ MNT 6|BA0 RN MNN|fp`B@O0L<Nu/ A 2|gbn.|gfn|gh|gZSAgV`^|g6WAg>UAg.`NPA|bFA2;NE`(EX`"E`E`E`E` E`EC g& JNS 2 f JNSB2 JN$_NuH8(H&I$yF`&"KANJ@f"LANn JN$R fLNuH,O$H"HANnIA"T"iT" TNU K "M TNM> MNTp MNT 6|BA0 TN0 TNzANJcx`BDJDf AfN#JDg MNN|f*C JNJ@gpC JNB* JNp`B@OBL4NuH6O$H<8:*I6/J$ g&jC MN|MVAr0NRpCg>r0N8CAtBA0NFBA0NĒ K42Ey ~0N0*rh|ftCf@C MN|Ar0NRBpCANHoCAr 0NºXOABA0NRO&LlxNuH>,H:86*I(o&EGĴ|Hfb0o^20HA@s0H jNXSR20HA@ss0H jNX RfBAp yND`f|Pft Rln20HA@s0H jNXRR20HA@ss0H jNX Rfrp yNDp yNzBTp`/ ?/("M420 NN^\OL|8NuH.O*HE <"JANCANnIM-L=|ANT LNBE?EA~N_B@ANT <|g~`~|0W@g S@gW@g``b0 LN:(JmD2.p4.<2IBACANB-p\AN/H8 gB MNBC`F0HC@CANJ@g*0HC@CAN0HC@CANnRC|mO?yBo?j Ar0*N*0*yg0* N|O$_NuH0$Hpjg6*G"*g"K AA NJ@fSCCANJ@fTJCg@plA#`A)//*|oA`A/?CAvNO`lC.AvN`\JCgDplA#`A)//*|oA`A/?HjC?AvNO`HjCRAvNXOp jg BA5A85A6 jf JNQ *&f%yz&B@ j&N5@*pjgBj0*gr6*Hrj@8Hĉ0H0H@J@gRD:CJEoF|o@2H 눐Ё2HN 5@2*8H 눐Ё2HN 5@`5|pjgjBj0*j0oV2*>j46*HÇ:*0CJEo< j0o44H 눐Ђ2*0HN 5@2*6g4<`BB5B`5|L 8NuH>O6,H&I*o><>8/B:/DN$HI g5C 5oH5y5oJ BA5A*5AH%A"o:ANnBj,Bj65oF8Bj g"NANn`B*0*S@g S@gP`jH|NTJ@f0* N<H?AkN#TO` <"KAFNB* MNJfCFANn` <"MANB*uA*FH|N[J@f0* NH?AN#TO`*gBCAN^fJ@fxB@N&AN$J@f 0* Np`LpN&`FCANn`8AFNYJ@gANYJ@f0* N0/ AN#XOB@`DAFN\J@g` <"KAFN"MANnJDgJEg5F5G5D5E`HjHjCAN.$POJ@fjj@ yF g"@5i yF"P5i`B09Xg"29H5A09H5@`09H5@5y09Ng0*N5@HjHj?*?*?*CA4*2* pNDO0*S@gS@g` JNL,j`j JNpOL|Nu/ / $Hpj grjg4*SBg`fAFN\ *g @NCHBANVNB%H g0CNnC jNC jN&j`G/ r0* NXOpj grjgHjv0* rNXO0* |g,rjg$?*0* rNTO?*r0* NTO0* |g,rjg$?*0* rNTO?*r 0* NTO&_$_Nu?/ 0)h@E4)h6yClBA` 2)hA4@1B6)A1CC4(Ql1Q4(Rl1R4(0yh@o1@0(2yhAo1A$_6NuH8O$HBCHWHoC ANpPO0*jox`BDGHkHkHkHSr B@NʐOI`bJDg:+`:+ K2/0/NJ@g 0H:Cm689k9k9kHkHkHkHSr B@NʐO0+g2+fJCnF09H9@29H9A4,H…y86,HÇy9C"L JNNjOL8NuH8UO>><&H$I6/20S@gS@g`t8<`xpN&?9?949290NXO:o???/,?/,?//4/ 42/"K o@NhOJ@g0N(H f` LNlp@lg LN,?,?,4,2,0, NXOHlHlHlHlr0, NʐO l&1l l&1l LpNH`JEo 0N` AN#̑B@N& LTOLNu/ O&H>?yBo?k Ar0+N*O&_NuH8N $H g2*SAgSAg*UAg`p\AN(Hp\AN&Hf 0* N;`TBp\AN(HRLB@"L JN4\ANYAFNY0*,yBj, JN` JN(LNu?/ $H6B@NH0*,yBj,0*S@g`,?*4*2*0*N-TO jNT JNT`BCJCg0* N|0* N0* NJJCg 9Ff 9jN\$_6Nu/ N$H g"2*SAg SAgUAg `p JNH` JN`$_NuH0O6&HN$H g jf2+094B@Bl7B0+492ABAl7A0*km2*kmx`BDB@N K0N< JNTJDgFB@5@$5@">?yBo?j ?j?j ?j ?jAr0*N*OL NuH06&HN$H g jg29Ng 0N6?+?+?+?r0NPO0*kf 2*kgp`B@ JN5S5k5k5kHjHjHjHjr0NʐO0*S@g` j&1j j&1jL Nu?/ QO6N$H g jf2*"g>?j ?A?j$Bj"`V>?y?y?y09Ng0N2Wo>Hj$Hj"Hj Hjr0NʐOA0NPO$_6NuH0QOBCN8J@fx`BD$yF`0RC:*&R0 JN0S@g`HWHoC AN.$PO$K f2ApNXPOL 8Nu/ O~AN\fEN8J@g8BCGE3HkHkHkHSrNʐOpSkpkkHjHjHj/ r 0NʐOIKM`t02TAlN4*09V@l>rRjpjj0*2TAmSA5A0*29VAmSA5APJRCHjHjHj/ r 0NʐO0*f2*f~tC7BL|Nu/ QH"y`eee "Qdd (Ef$Q"*Ө$Q ` )Ef "(ө"`"#$_Nu// &d&< Nr$H f`D%C y2oA N#`09H y!RyAN4 y$_&NuH8vրRE&R fA&H$ B(Sb"f&` ,)C$A`&f N4(H fA(N#`&L(T`LNuH8E JC""G'S7k%|NTC(J((&7kLNu// (N(N$H g "B@N J$_(Nu/ $HCA # JNAC""#$_NuQHpШNuH0$H&" fN0`6 N(&H f`& JNζb ` JN"J KN JNn KL NuH8Ez JC$""G'S7k%|,NDC$(J((&7kLNu// (N(N$H g "B@N J$_(Nu/ $HCzA # JNACz""#$_Nu/ / EG ` 0H rN0J@g ARN#SS0nB&_$_Nu/ / EG` 0H rN0J@g AkN#SS0nB&_$_Nu/ / O$oHoC0* RNvXOGVr0NÐr0Nêr0Np?A4*2*Ao SA0/ N{TOA0NNr0NB@O &_$_Nu/ $HH"ҁҀ5% $_NuH $H6:H$ԂԀ82(JEg09 ~4H"ҁ҂牑r2H ЀЁ r -f J0N2H ЀЁ82DfJEg09 ~4H"ҁ҂牑rL8NuH $H:4*H"ҁ҂622H ЀЁ8220 JNJ2H ЀЁ82DfL8Nu/ E2JAgSAg SAg@SAg(`T0fpNˈRR`D RfB@Nˈ0g2SR`.0*fpNˈRj` jfpNˈ0*gSj$_Nu09gpNˈ09gpNˈNu/ / $H09Gp|N g yl`009H/ JNΰd`  g -f K`SKf&_$_NuH>O$H/I*>(oBC?CzKMJ LNrde o*Nΰb < yN&H gC.pNEpNE"o* KNn"L WNnI0HTHo2"L LN~(PO0/.H ~=@j]nj n<jo=|<j;|+|R$Bm,Bm.;|D;|F+|-B;pm;RFFl0-mDm;@@BF` 0 MNJRF|m MNs MNU ?-4-2-0-N}TOJ@f K"yNpNEB@NEp`I"L MNM>J@fBm LNT0<N&E."J JBBBA09VNF>-nn09 ~@@89 DmBF`0H vHSAgSAgJ`0H vRH4 D/? vNro @ ~AG09V4 _N`d0H vRH4 D/? vNro @ ~G09V4 _N` 0H v4 D209VNRFom6"J JtBA09VNF0<N&C0A.NB@N&B@ LNT <A00/.N& LNN MNv K"yNpNEB@NEpFOzL|NuH0(&HN&$x CN gf g&p`PJ fB@L Nu?/ $HBC2H ЀЁ42||fp4H"ҁ҂r |f0`p 4H"ҁ҂rgp`RC`$_6Nu?/ $HN6R@g4H"ҁ҂r$_6Nu?/ $HNp6R@g4H"ҁ҂r$_6NuH8$H&I"Bk 7j7j7j7j0*|rj g7| r j gTkTk|g|f0* H@J@lk 0+ k0+ k 0+ k0+ k A2+0+Nx&?+4+2+0+N}TOJ@g  yN(H'H`'L f6 JN?+?+?+?+?+?+4+2+B@NȴO B@`@ JN0<N&BgBg?+A4+2+0+Ny&\O0<N&pLNu/ QO$H *f.?*?*?*?*?*?*4*2*pNȴO `p?*A4*2*0*N{TO0<N&Ar09 |NRBgBg?*A4*2*0*Ny\O j"yN0<N&PO$_NuH/jo0/jo?@o8l>/80/o6l?o60C2/8o4Ao>C0/D2/6ojAoD?AEfof0/f0<N&0/f42/g.??40/2NzXO??4/ 20/NzXO`J0/f??420/NzXO:/ O&H:?A?B*I8/>E<F||>|ft2H ЀЁsg s (P4rCYWfB4)N KMSst<XpRg`t"M24H"ҁ҂ s "h``2H ЀЁ s $h/JBG`R o _fRRGUm0 oN,H gBC>` 2_pfRCRGGnHo HoCAN~(POt"MBA0 KNf0B4`C| LN0H/ LNΰe?/ ?/?/4/r0 KN\Ot"MBA0 KNf`Bo4"M2/0 KNfOL|Nu?/ $HBC0NR6|R0gr 4||R`R$_6Nu?/ $HBC`RCp 4H"ҁ҂rg0$_6NuHO&H8:>BCCNwJ?| ?W?o 02/Wm,4/ om"2o0ol4/o2o lv`BC@g0JCg<`<p???/ ?/ ?/ 4/ BA K0Nw|O HoHoCANpPO0/ fv0OLNuH0$H<6|bf>BD`62H ЀЁ42||gp 4H"ҁ҂rgx`RDJDl0H|6Hx"| |N\XO|xe<<:fz0` p0"P1B@NBD`z2H ЀЁ42||fD r "Plf6&h Kp[N&H g" +[gBA?+HN_f0`"p 4H"ҁ҂rgx`RDJDl0L xNu?/ $HBCp 4H"ҁ҂rgp`02H ЀЁ42||f r "Pjvf0`RC`$_6NuH $H<BCxz4VBgSBgSBg`2x6D`*z`&2H ЀЁ224Eg0`p Agv`DJCl0LxNu?6J@f rB@N606NuH $H6Nv8H"ҁҀ:2`2Egp4H"ҁ҂rg J0Nx2H ЀЁ:2Ef0 JNwL8NuH0]O$H6?A&IH$ԂԀ82(:2( |@DpDrEtD?BJFfJ@gJAg4/gjJFg of>`BWJ@g6JAf2pDg J0N(`"JFf4rA0 JN`J@f `$0 JNwJFfpDg 0W6B@` 0/fBSp\OL xNuH8UO$H:6>/&&I(o(>8|L|rg|f&r0 JN4<6BTEgCr JNB@`x|Gf&pGg JN JrN<`XrB@ JN<`J|fp`B@?rGft`BB_f|Pfr0 JN<`|Hg|fr0 JN<6BT`0|f2 J0N <6BTEf8p`Cr0 JNH2J@g6BT0TOLNu#xNu yxNuH>O$H>vpNE JN:R@gN4H"ҁ҂ r &h| 0+HЀ"k81HoC J0NFXO S"P0)H?@>I0 JN*8BGzKM `0g@g>BTp?"MBBBA J0NTOHoHVHoHoHo Bg?BgBgBgBgBgBgBgBgBgBgp?C@4r0NDŽO.<r @g,??/?/4/ JB@r Nw4\O0+HЀ k80pFg VR0f NNt/ HV?/"L420 J$yxN\O$_:2gRN|l2p4H"ҁ҂rg40U"r "i 19f 0||_gp?"M4/2 J0NTOpFg:?/4/r JB@N*TO8R@fBTrpN<`"L2/0 JN6:JEg0g@gp?"MBBBA J0N>TOJEfzB@NE#^x0OL|NuHO*H:8<6/f/I2pNEIHWHoC LNpPOJFgTo|gZJFgBHo6C<0 MNvXO2H ЀЁ45Bo8mB<5Fo6mF`2H ЀЁ爚uuM.Ho*Ho0"NA8N~(POv ol0"o2Bpo0@l:pV@l80-EV@2/0o,Ao :tmB0-DV@2o*Ao 8tmB;E;DC MNM>J@f0/hg ol0`?/4rB@ MN*TO8:R@gr<H$ԂԆu( fpu(fx|gp4H"ҁ҂ugu ANTG6|g.|Hk"K0 MNvXO2H ЀЁ7u7u` BFHk"K0 MNvXO7m7mHWHoHoHo HoBgBgBgBgBgBgBg?+?+?+??0/.F@|?"LtrpNDŽO.>6?/4r MB@N*TO8:R@gr0H$ԂԀu( fru(fxCg>|g8p?4H"ҁ҂05 |??/.?/2? M0BA4/:NȈO |g6p?r0H$ԂԀ犂u( ??/.?/2? M0BA4/:NȈO pGgANN0/F@|gHWHoCABBrpNXPO|g o2 "ol2pNEO>LxNuH $H6Nv8zH"ҁҀ82Dg>0<4H"ҁ҂rf pr f:2H ЀЁ82Df̺|g0`0L8NuH $H6Nv8:2H ЀЁ:2Eg"0<4H"ҁ҂rf pr f0`Ef0L8NuH $H6N8@f,8*0<4H"ҁ҂rfvr g 0 JNr80LNuH$I:<&o2vBDp4H"ҁ҂rgr JEg2H ЀЁr 2H ЀЁ$2 f6RDp tDH"ҁ҂rg|fB@`JEg2H ЀЁr KJFf8HoC 0 LNvXOHUp???C BB2/ J0/NO `.|f 0 JN:`|f 0 JN:` 0 JN: Uf 0 JN: Ug2H ЀЁ& `B0O LXO j4* 2* y ~09VNBgBgBBBAB@N~XO0*$_NuH04Hv&H` [fC KNn [g6 JRKRKf0L NuH0UO:8&H<6/EVtCgr`BA0NĒ K420NpCgA420N|g2`B/pCgr `r0NĒA42 ~E0NTOL xNuH8O$oBoVBoTp??*4*2*0*N~XO2*H ЀЁ R:0<*>* ?j Z8*?jXtFg>jg8pFf| ЀЁ1 ` pF[@f|2*H ЀЁ R1 GVr0N8"jANnANv?@P2/Xy AoZ?ARAN ~6@CGpEf89 ~D6Dy ~pFgr`BA0NÐpFgr`r0Nêr0N?/XA^42/\0N{TOA\0NłpEgBA`2?4/RA2/T0NTOpEgRoTpEgRoT` B@?@V?@TpFg r?AV?ATpFgrEf02XORCoTopEfrrEg??/Z4 y P02/^NXO`pFgI\roX? LtDro\pGN{TO Lr0N089@ Lr0N`\pFgVroX?A^tDro\pGN{TOBA0Nr0N8r0NÐr0NêA\0NłBA0NĒBgBgBBBAB@N~XOpFgrEf 0rNpEgpF`B@OdLNuH O$o(vj xj zj|jp??*4*2*0*N~XO?A420N{TOEVr0N8BA0NpF?rE?tDrC0Nz>XOr0NpF?rE?tDrC0Nz>XOpF?rE?tD02Nz>XOAr0NBgBgBBBAB@N~XOB@OLxNuH(O$o$ y D6(8(p??*4*2*0*N~XOpj?Atjrj pj N{TOpCANIHT"LAr09VNºXO?*A4*2* 0* N{TOpCANHT"LABA09VNºXO?A4BAB@N{TOHl(HT"y DAr09VNPOBgBgBBBAB@N~XOB@OLNuH0NG 8'|hBCE`hp 29 ~rfV49 r fJA"K""" S2(0(@ P49VN{49V k2(0(@ PN{'|gRC|mBC`Pp 29 ~rf>49 r f2AC """ k 2(0(@ P49VN{%|pDRC|mL NuH8$HBC2H ЀЁ42||fnp4H"ҁ҂rfF r N(VDp[4H"ҁ҂ r N gSD09 ~4H"ҁ҂5`2H ЀЁUrXr2H ЀЁ42||fB N&H g4H"ҁ҂'r '|l7r rrC% 2H ЀЁ42||fF N&H g4H"ҁ҂Rr'r '|i7r rrC% 2H ЀЁ42||fB N,&H g84H"ҁ҂'r '|kp7r rrC% 2H ЀЁ42||f482||frr% `2H ЀЁSr2H ЀЁ42||frt J0rNx:2H ЀЁ42||*f@ NT&H g`4H"ҁ҂'r '|jv7r rrC% 2H ЀЁ rfPtr |fD N(H fB@`R2H ЀЁ)r )|p9r rrA% p 4H"ҁ҂rgp`RC` LNu?/ $HBC2H ЀЁ42||f r "Ppf % 52H ЀЁ42||f r "Plf % 5p 4H"ҁ҂rfRC`p$_6NuH $H6R@fp`>2H ЀЁ82|g&`62H ЀЁ822H ЀЁ父rf0LNuH0$H:&IBC82H ЀЁrr J0N:R@f6 o0pL 8Nu?/?/?/N\ONuH0&H6$IHjNXO2H ЀЁ5s5sL Nu?/ ?/ ?/ ?/ ?/ NȈO Nu?/ QO&H6CB@Np?r0H$ԂԀ43( A??/ ?/ ?/ 4/ K0BANO PO&_6Nu?/ $H6rH$ԂԀr( f0N$_6Nu?/ $H6rH$ԂԀr( g0Nj$_6NuH $H6:<8H"ҁҀ622H ЀЁ425H…562CfLxNu?/ $H6H"ҁҀ42||gA `2H ЀЁ r XH$_6NuH O6:$HA09VrNxxCDB h5C5E5D5o Bj 0H2HҁN2/HNOrL8NuHO86/ &H?AN{TO?A 42/&0/$N{TO/ C hAr09VNºXOOLNuHO<:86/(&H?A0/,2/.N{TO?A 420N{TOHy h"KAr09VNºXOOLxNuHO86/ &H?AN{TO?A 42/&0/$N{TO/ "KAr09VNºXOOLNu??O8A0oS@6oSC00000000pA00Ar0NO86Nu??86<2h|g6?E0oS@?@?EA0NAr0NpFo?oA0NnAr0N>pE?@2FUA?AA0NDAr0N?D>A0N*Ar0Nr0NPOLxNu4B1B4J1B1A1| NuH O$H86:"HAN?|20"JANBo CA0NrO(L8Nu?006BSC00oS@06Nu220hS@20(hS@2NuH06/8/$o"&o&@l:`:0Al:`:2:B40oEo`:P44o0o Bo2`2Q60oJAop`B@L 8Nu/ $o0Qo`042(io`2)5A0h2i@o4`4R5B0(h2)i@o4`4j5B0*oJBop`B@$_NuHQO:68HWHoC AN~(POom*om$0D2/oAn4o0/W@np`B@POL8NuH8/6/DnCn:BEl:oElz`BE0L8Nu/ / QO&HE0*fHjHjC JN~(PO KC""/ "JANXOPO&_$_Nu?OpNv6Ar09 |NxB@ o oprCUAfB@rCgpJ@Op6NuH<(H*IE:G RfHSHkHkHRrB@NʐO8: o0"o2L<Nu/ E HRHjCANPO5@$_NuHQO:<6>/ 8/"JBfBDADPfhfhf hfhg61E1F1C1G0?A420N{TOA209VNRPOLNuHO68AN20NĬHWHoCAr0NPOHoHoHoCA 0NO BDz0/f?|pCH"ҀҁҀҁ KB@NBDIF`2H ЁЀЁЀArD0N4H"҂ҁ҂ҁ7B3$`("L2H ЁЀЁЀANL*HCNn"L2H ЁЀЁЀANL fC2H ЁЀЁЀANJ@fC2H ЁЀЁЀANn4H ЂЀЂЀ230NN4H"҂ҁ҂ҁ7RDDn 2H ЁЀЁЀ7%KpL<Nu/ 0fA $Ip$Q4$_NuH06&HEh|g8S@g S@g`@ Rf 0<N^0g8SR`40f 0<N^RR` KC p"Q25C K0N^L Nu/ E0f449 |r pArN{A$_Nu/ E0f449 |r pArN{A$_Nu/ E0f449 |r pArN{A$_NuH>O$H?@?A?B4*f 2|5I?IDGI K MHSHT"M NN~(POHWHo?????/RCA4/"2/$0/&N|O6*0g 8*j>*n`8*l>*p0/Dg"??/?/4/ r AB@N\O`DgܸCl0G@l:<D`Dl0G@l:<C`:<0g8HSHT?/J??/2j??/"M N4/0/2/N|O>`6HSHT??/0j??/"?/"M N4/2/0/N|O>JGg???4BApAN\O?/B?/?/4/BApAN\O0/Dg5DOL|Nu0g1hjNu1hlNuH $H65|5@R@gLJCf2g8*V`B8*X`<0g:*V`:*XH 2HN*2*HҪN *8j>l8*>0g5Dn`5DpL8Nu/ $H5|%@0*Nr$_NuH $H& gD%@ 2g 0*Vjn`0*Xjp8H "N("*N (2g5Dj`5DlLNuH $H86$ fp"<NB$H f``5C4 < JNXp JNp JNbpxCANB@` BAt5 $5 "5 (5 &R@|o JLNuNB8NuH $HS@SATB5|5@"5A$JPg*5B&vj>5CRvB8*>DD5CV8jR5D`@j6j6j~j~5B(pj@5@TvB8*@DD5CX0jT5@B@5@<5@:2*&j5A0*(j5@0* JNLNuH0]O$H:>8*Hު |o.*`HoCpANvXOom0ol.* 0*H`>*Hު `||gJFg *2Hlp`ppNEtRrpANF8pNE *2HN("<N .H "<NmRo.*`Jl~ \OL NuH QO$H86HoC ApNvXOHWCpANvXO0fF2*pAAoo4/jXBlDo:*XjpJEgd0H"*N2HN `L0*n@@oo<2/jVAm *`,o:*VjnJEg0H"*N2HN `pPOL8Nu/ / $HGpk"g&r?Bg?+?+?+4+ K0BANȈO pkjg(r?Bg?+?+?+4+ApBANȈO &_$_Nu,m2(VHҨ,lt`BB0Nu/lnnv`BC0`nnv`BC0&Nup`R P"fNu`S PJfNu// $Hv gBHj C 0* PNvXO2*H ЀЁ R5p2*H ЀЁ R5p0*g6*HÇ2*HHAJAg`6*HÇ0*HH@J@gRC0$_&NuH $H g>4*H"ҁ҂"@61JCm&4H"ҁ҂015@5@"P415B5B g4*H"ҁ҂ @60JCmh4H"ҁ҂80mV2H ЀЁ002H$Ԃԁ犐p(N5@4H"ҁ҂ R004H"ҁ҂牐pN5@ j0N%@R JN5@VHRo2*T`2*V5AVHҪ,Ro *R4*VH%@,rB@N%HX gAC:p"Q5y N5y P0*n 2* j5A0*n5j 0*n5jRj0*mSjRj0* o2*"pN%H\ f jXNVB@`0*&n5j &0*(n 2* j5A(0**n5j*Rj(0*mSj&Rj*0*$jj o 2* j5A$4**2*(0*& j\N^0* j*H j\NX0** j\N0*$H j\Nr`B\4*2*0* jXN^ *R2*VH jXNX0*V jXN *, jXNr0* j5@J2* j5AL g6*H$Ԃԃ @2*H(؄؁"@3(H2*H ЀЁ R6*H$Ԃԃ"R3( *Xgry 6*H$Ԃԃ Rp( *\gry 6*H$Ԃԃ Rp(pLNuHO$H0<N&HoHoC AN~(POA C""0*lRr??/4/ jX0/2/NXO *\gr??/4/ @0/2/NXOC JN`pNEIKMHTHUHVHo"r 0*NʐOG`p??42 jX0/NXO *\gr??4 @0/2NXO???4/rB@A:N\OHkHk????/$?/C K4/2/0/N|OJ@g"K JN(HTHUHVHo"r 0*NʐO0g2fNB@NE0<N&O L|NuH>O$H?@?A?B8/hB4*l?/j??/jA4/Ny\O`pNEI$Ho"HTHo.Ho4r 0*NʐOKMG*`pHUHV?/*??/2?/6?/vC0A24/&2/|0N|OJ@g:/ DoHo2Ho8?/*??/2?/6?CHAJ420N|OJ@g>/8Eo 6/6FoB@6 7o7@7@2o4o*4o2op`B@2o47A7Uo f*4/4S`"2o2oo27A7Vof4/2kJ@f"???/6A4/:2/<0/>Ny\O`6 7o7V7U0+o2+o"K JNHo"HTHo.Ho4r 0*NʐO0g2/"fB@NEO:L|NuH0O$H&**,ڀ2*VH҅Ro **R4*VHšJlz,g8*.E *,N&%E,  jXNr N:*VHŚGA "K"" KN} KC""09 |NJo07@2*Vjk?kJDl 4k` 0o KN}:+?/?/?4+2+0 JN\OA "K""0*o7@JDlkB@"K JNr09 |NOL 8NuH0O$H6:*$@2jj o:* jJElBEj$g8*$E0N65E$0H j\Nr0N:*@GA "K"" KN} KC""09 |NJEol7E?EJDlS`W KN}AN}0+oo2/`2+7A:?/?/?+40 J2+N\OA "K""7CJDlSB@"K JNr09 |NOL 8NuH6O$H/Ij.GC K 2S4k7j7j KC""HSC AN|XOJ@g09 |N0*l$/ Bg"K4*$2/ o$j40/NTO$_`pNEMHVHo"Ho(Ho.r 0*NʐOK`vHmHm??/(?/,?/0?+C M4+2+0N|OJ@g / Bg"M4*$2/0/ o$j4NTO$_HVHo"Ho(Ho.r 0*NʐO0/g2fB@NEr09 |NO$LlNu// $H&NJ@g  j0N "H J Nx$_&NuH>O&H?@?AMEHjHjHjHR0+rNʐOIA "L""69 KRp29 IAl8`xj:jSEo<*jSFVjljl>/?VHWHo"NA NpPOpogKVr0N80<N&?*?*4*20NzXO?,?,4,20NzXO0<N&oo?CVo<:o/?VHWHo"NA NpPOpof.0<N&?*?*4*20NzXO?,?,4,20NzXO0<N&0,kf 2,kghK:;y Bm;k;R;j ;j ;j Mr09 N*0,kn2,kn: M09 rN*O*L|NuH6O$H6BG"gHoC0* ANvXO0* o f 2* og:/ j 8/j j j jj jXBh4*2*0* jXN^ *R2*VH jXNX0*V jXN *, jXNr *\gXj&j( j\Bh4**2*(0*& j\N^0* j*H j\NX0** j\N0*$H j\NrKHoHo"MANpPO0*lr`BA?40/ jX2NTO(rfbC ANpN&20/ jXN(,  JNHoHo"MANpPO0fA 0/N&`pg4,G  JNHSHo"K KNpPO0f jXN`~ *\g2*lt`BB?20/ j\4NTO(rffC ANpN&20/ j\N(2*$H0 JN@HoHo"MANpPO0fA 0/N&`pg82*$HG0 JNHSHo"K KNpPO0f j\N`0*o*?4/BAA:B@N*TOR@g20/ JNZ`x??/?*4*2* 0* N}d\OJ@gT0*8gN:j HŋHJGg.0*VHmzjVH JpN`0j l z JpNڪ,JmRmp`  j0N&Hpog j8fBBD,j0`60.rh|g$g n0H JN4J@g 0H"N JNRD,V fpog$0+rh|t@k|HHk`0+rh|fkk "K JN8j.j 6j.j HoHo"MANpPO0g??/?*4*20N}d\OJ@f~0g j8g j8l `&(`vHoHo"MANpPO0*g2/j m:j HŋH`0j lz`:j HŋHڪ,,lp JNb**,`"0*VHЪ,m JpNF:*VHڪ,Sl ` o l.`.`.o ` l o,`,`,  j0N,H`0.rh|?@$ "NJ@g"0.rh|t@n|HHn$" NVJ@g"0.rh|t@n|HHn0.rh|og J NJ@g "N JN,VRl`(0fpOTLlNu/ $H *Xg @NVBX *\g @NVB\B@5@5@5@BA5A*5A(5A&$_Nu 1@1A!o41|!o01B !o ,1o8B@1@1@1@BA1A$1A*1A(1A&Nu// $HB@r$*R6*VHôox j0`4(vj|g2 PR@$g|g|gL0H,m4*VHԪ,m40H%@,4jVH´Ro"*R6*VHÒ%A, *, jXNr$_&NuH4O$H<8:*I6/F&jXKC MN|KVAr0NR grCg>0rN8CAtBA0NFBA0NĒ K42Ey ~0N0*rh|fJCft`BB|g*BpCANHoCAr 0NºXOABA0NRO&L,xNuH8O(H<8:&I6/NE"J KN|GV Jr0NR grCgT?,CANTOr0N8CAtBA0NFBA0NĒA42Ey ~0N0,rh|fJCft`BB|g(Bp"JANHoC Jr 0NºXO JBA0NRO.LxNuH(O:<8BC0HrNB$H glA0N20NĬ~D`2HWHoCA20NPO>J@oHЀ22f 5SGJGnr 0HNB(H f JNB8`BC>`H0HЀ22g:4H0H,܀܆)hthBhJCgAhtCH"҂ҁ)RCRGGn JNB82H ЁЀ LNB(H2/0NĬHWHoCA2/0NPO LOLNuH0UO$H>:BC8`JEf2H ЁЀЁЀ42fRDRC2H ЁЀЁЀ rf<0Hr NB&H f`BC>`JEf2H ЁЀЁЀ42f2H ЁЀs0H$ԀԂԀԂ22(Wf4H"҂ҁss2H ЁЀЁЀA0H$ԀԂ'(tGH"҂ҁC2H ЁЀ'RGRCCnTrDH ЁЀB KTOL NuH:O6(H:8,IB*E JN20NĬGHSHS"K K2/f0NPO"K KtBA0NFHoC0 LNvXO2H ЀЁ?4A440/2/N{TOAr0NR0<N&pCANHo*C.ABA0NºXOBgBgBg N4/2H ЀЁtSB02/N\O0<N&ABA0NR20NĬHSHS"K K2*0NPO"K K4*2*0NFO>L\8NuH8$H(I&j06<`0kN@o6&S f&j0`$0kN@fkk8`&S fLNuH<$H(I&o(8:<>/,*o6v! ~%o0%K5@5A5B5G5o.5Q%l *fB@`p?B2/:0 jN/Hz2H ЀЁ父sfBB`420"K JNO5|" JN JNp?Btd20N$/Hz,20"KA`BBNO"o:A`NA`NA`NpLBA< <b;k`|<*f<`&<0< b ACp a $Wb<gt<.f6<*f4`$<0< b ACp a $Wb4g<߲<Lf g`<hggr@dp|?@0;N`````N`N``````````````````````````NNN````````````````` [0`|A`0A2"LaN@`\ [2"LaL@`JJEj `p0?4 La"TO@`*JEj `0H?4 LaTO@` JEj `p0?4 LaTO@`JEj `p0?4 LaTO@`@HN0\OLxNup24C8jxA aA pJWF@?@gA 2SAktaSb (Q2/@4/(jt@jtBgf 0Ao@@Alx?B?D`hH0$H&IB(v`H0$H&IvJWFCJBj4Cb6xJAkCc8Cf K0a0 JN` 0 JN0 Kap0DL Nu6x0/g f@ JaP0/g@AN0/g@ Ja,0/g@A N0/g g@ Ja0OLNuH0E6`H0E4&H6g8Kg SC JpNQ J0|gNL Nu00000000 H:$H&I(S&gfJg^+g`)ft,k x$ڹd SfRe`.&// Ka~$"J@k,f4(SSfRf& L\Nu3 p`"`&x,A'J'JE8'J & KaJ@kfRf"`H&H(k6+"+g0DtaJk+fZ"S"L Ip gSj`*| // " 0a`"_"JkNgPAp SjH@" 0a$Ҁk8 $k0HzP <e/`/? ?<@NAO Jk b Nua3pNu0<`D@| |"b;NupNu   ??B@CTgJ1kB@BA< C >(<-Wg<+fg"1bAg1b @8@@D`JgD@86Nu JgJgJgJgJg JgJgJfSHggggg ggf @NugfSHNuJgNug fC`Jg INuSHNugHf8g@f0g8f(g0f g(fg fgfgg!epNupNuJfpNu g<g8g4g0g,g(g$g ggggg ggf @Nu/ pg$IfR`f$_Nu"HJgJgJgJgJg JgJgJf SNu"Jg JgJgJfSHSefB ANu"SefBJgSf ANu g"@gfSHNuNu/ / g($Ig"f&Hggg"J K`A&_$_Nu`$ fJg` yf p#`L$Igf`#Sf yp#`$IgfB( 9# @$BNu`H0$H|g|$bGrtgJ3kSJgtJ@f"p <0f:pgb<߶<Xf(pf"`N|f<0fg><߶<Xfg.G03d"3d&HCHCJCfԃԁd` & gSJ"L Nu3"p` 3!p& g"`"CB@f ANu//"4UB|"bZC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!`0123456789abcdefghijklmnopqrstuvwxyz/ &y g/ &S?<INA\O`&y g/ &S?<INA\O`&_NuSe gepNupNupNuJg/bg2 4gf!Sf`f`!Sg"gH?LxH?LxH?LxH?Lx`H?Lx8H?LxH?LxH?LxH?LxH?LxpH?LxHH?Lx H?LH?SfvLx2|HgS@!!Q|gSA!Q`2 4gfSf`f`S"gH?LxHxLxHx(LxHxPLxHxxLxHxLxHxLxHxLxHxLxHx@LxHxhLxHxLxHxLHSfxLx2|HgS@ Q|gSAQ _Nu/$gSe40HB4 gxH_>"&(*,."B$B&B(B*B,BH~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H`SfL||0HgS@!Q|gSAQ _Nu|A,0|Nu|A0| NuBAA0Nu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@  !"#  !"#J@kNuD@NuJkNuDNu$HBJBf$HBJBfNuHBЂNuHBЂNu$jD BJjD$HBJBf"$HBJBf $jDNuHBЂ$jDNuHBЂ$jDNu$jD"BJjD$HBJBf4$HBJBfH@B@H@$ jDNuB@H@HB0@0H@0H@$ jDNu AH@r2B@tЀӁd҈рӁQF@$ jDNu"@$jDJjD$HBJBf.$HBJBfB@H@$ jDNuB@H@HB0B@H@$ jDNu A"B@H@HABAtҁрdЈӁрQ$ jDNu//??<?NAO Nu/?<NA\ONu?/?<NNAPONu?<NATONu?</NATO @Nu?<ONATONu??<NAXONu??<>NAXONu/?<9NA\ONu/?<HNA\O @Nu/?<;NA\ONu/?<ANA\ONu//??<@NAO Nu/?< NA\ONu??/?<CNAO Nu/ /??<VNAO Nu/?<:NA\ONu?/?<6NAPONu?/?<GNAPONu?/?<|[]{}""Znoalias %s -y format init %s -s%s -c%s21109%s -l%s%s %cThis operation will delete all data on the disk in drive %c:. Do you want to proceed?\ . -! /" 5 32 1 ) 6 9/ 7 4a  S  HPH8P2GG7  0  .     ! # #  $ $ % % & & 1    +    !     - '  1Consult the files GEMINI.DOC, VENUS.DOC and MUPFEL.DOC for help. Contact the authors if these files are missing.X:\X $SHELLSave state of the art?VENUS.INF#VVENUS.APPVENUS AccStatus: Acc wurde nicht gefunden!\The accessory %s is unknown to the AES!%2dThe chosen distance of %d in x- and %d in y-direction is too high for this resolution!RUNNER.APPCan't start %s. Where is %s?V G T AES refuses to start %s!'\' FilEgetfinfo failed!.IcoNgetIconInfo failed!e Ef W:NW:YO:NO:YGEMDEFAULTTOSDEFAULTCan't read label from drive %c:! Cartridge/disk not properly inserted?Can't set path %s! Window will be closed.\ 0123456789..There's not enough memory to display all files!unbekannter Undotyp!@(#) VENUS (C) S. Eissing & G. Steffens Jan 05 1991*.[CH]*.[AP]??*.TOS*.TTP*.[AB][CD]?Version 1.2 Jan 05 1991noalias cp -d 'noalias mv 'noalias rm 'VENUS.TMPDo you really want to quit VENUS?VENUSIC.RSCCan't open VDI workstation![OopsVENUS.RSCThere is an error in the resource file %s!VENUS.INFNo Mupfel installed! Operations like copying and moving are impossible.VENUS.MUPCan't find resource file %s![3][AES doesn't like me!][Exit][Oops[No|[Yes[OK[MoreDrive is not ready! Have you inserted a floppy disk/cartridge?This disk has an unknown format and can therefore not be processed!Error while accessing disk!Error while writing to disk!Disk is write protected.Access to this file/disk is not allowed.Insufficient memory to execute the program.File isn't executable.An empty wildcard is not allowed!*,;#B@%d@%d@%d@%d..* %d %s, %ld %sObjectsObjectBytesByte Empty Directory %s: %d %s, %ld %s %s: No matching ObjektsCan't open window: drive %c: is unknown to GEMDOS!Can't read label from drive %c:!Can't open window: the folder %s doesn't exist! Can't open window: the AES is out of windows! You should close an unused one.Own window not closed!Stack Overflow in morecore!Can't get more memory! Proceed with care!Mfree in tmpfree failed!Mfree in sysfree failed!D 7 @|^  0  @@@@   0 0'/O__O/' 0~8@@88GG80    8 8'80 8.N^^rr8@(#)Fliegende Dialoge 0.29, Copyright (c) Julian F. Reschke, Nov 13 1990 6x6 system fontSystem font????j ?~~~~~~???? ????? %  ! ! %2d.    r  ,(44 .       *  .  $ * @    * 6 2  *$4BNH" $Z H >                0               , *     *&  @.X"v >  8   .(  2         "        &      6    "            (   0     "   @  0    " *  J$*D^,&    ^    . h,8  2     h>& $&0,4 & 6                "      &     $"8 Tl  2  ,    <  0 2 B2 2 (  $@       ."6.              < 6 0 .,      0 6T ( DtDB ",  * "$ : N42&* $   &  "(  :|  $*     &    , " $  $  @  & |*F~(0PV,      "     2$        @    (     "     (  &   (  & (B &n$ $(F$  $* 0 f & & *` zV( (8$ Lb D > T, R$($" 6 P&  *X  . *`&:(b. "$   (" D$  (4  T b& .,H8,0 * X  *< ( l8"  P 4 46(4 (0* 2"*X:2  V*"*>>:0B0 42&&$88 *$t2     &&<  : : * & h b & \0  <f& 8$@>"*l ,  *P   F>4BT$. "  D 60    &    (       $    &    $    $            $   j B                                  ,    "& :  .(    &   `                  84      ,,  .         & $L*          $ *&, >   &8  F  "      "  &" &d"B$(D<*8 2 :BR&,"& "  "  &$  `$0   P L        4 l          :* *$\ * &P    .&^^J6"L$@ """  $D<4 j " $  : $                      .& 2   r8 ( $.4J 4 ,   $& $ " .6^**@$4ZH2". * &.  2$ ,^ :  LX 8<&, D"> : d J  0 0 &   V  h`", &        *   " & " "         :   ",&,& HD (   ,2F " .0 $ "(2     "0 ,BD$ d `N&"&    2 0N "$$*$2.(@Nv" :  $  d0 2. $0l $".   , . 4(,Z"  J,   P,     0 " &(Ll    F ":<L H&Hb(   6      vB<   . ..8@&,*$4*20  2 &,$ F:l     $ :>4 2>^6 fx,. v4>F&>x@,(\t(R.Zf<&jB(  L&Rt 8.,:  (2 " 6x   j 0$8( V   "&  & *P h`\VB>dn4PB & & 4(L@*"* dP~. 6&*@  86 $B*$6 ""`" N.@l8 pr 24 PH2T F@ @ @0,XTrx"F&Tb&  "2(  2$"$0& DBPDVHPL\`2:BhV 2(", 2V," "*, &.2@@,  0.   0& *`d ( , (Dv(  0 :J .  :~$    .$:.(6B "$< " (j&,$    40&0> 4   F4D>#I@1@1@1@0@0@1@35@0@0@0@0@80@25@2@97@8@113@260@0@1@1@0@0 #R@*@1@2@16 #R@GEMINI@1@51@16 #R@TOOLS@1@50@16 #R@*@0@1@16 #R@*.RUF@0@6@16 #R@*.AOB,*.GEM@0@46@16 #R@*.ABM,*.IMG,*.P?C@0@20@16 #R@*.APP,*.PRG@0@3@16 #R@SCSITOOL.APP@0@41@16 #R@LDWPOWER.PRG@0@37@16 #R@BIT37.PRG@0@48@16 #R@*.PRX@0@29@16 #R@*.TOS,*.TTP@0@4@16 #R@RUFUS.APP,FLASH.PRG@0@5@16 #R@*.FNT@0@12@16 #R@TC*.APP@0@7@35 #R@*.MOD@0@26@16 #R@*.O,*.H,*.O@0@8@16 #R@*.MUP@0@23@16 #R@MUPFEL.APP@0@22@16 #R@GNOME.TTP,WORDPLUS.PRG@0@13@16 #R@DEGELITE.PRG,ICON_PAT.PRG@0@30@16 #R@PPM01.APP,SPECTRUM.PRG@0@30@16 #R@NRSC.PRG,RESOURCE.APP@0@39@16 #R@*.RSC@0@40@16 #R@*.TXT,*.DOC@0@14@16 #R@ARC.TTP,ZOO.TTP,LHARC.TTP@0@35@16 #R@*.ARC,*.ZOO,*.LZH@0@36@16 #R@TEX.TTP,TEXSHELL.PRG@0@33@16 #R@*.TEX@0@34@16 #R@*.ACC@0@28@16 #R@EXEC.PRG@0@24@16 #R@ARABESK.PRG@0@19@16 #R@*.SGE@0@10@16 #R@SCIGRAPH.PRG,SCIGRAPH.APP@0@9@16 #R@..@1@25@16 #R@FONTZ.PRG@0@11@16 #R@*.INF@0@44@16 #R@GEMINI*,VENUS*@0@16@16 #R@TREEVIEW.AC[CX]@0@49@16 #R@GEMINI.APP@0@15@16 #F@1@9@-16@2@2 #M@*.[CHSO]@*.PRG;*.APP,*.TOS,*.TTP,*.MUP@*.EXP,*.IDX@*.ZOO,*.ARC,*.LZH@*.DOC,*.TEX,*.TXT #B@136@259@317@302 #B@386@624@319@302 #B@373@566@314@302 #B@248@16@314@841 #B@573@16@314@841 #B@11@0@989@942 #B@548@0@319@852 #T@464@788@PAPERBASKET@0@16 #E@875@788@SHREDDER@16 #D@0@524@10@E@HARD DISK@8@16 #D@116@524@6@F@HARD DISK@0@16 #P@878@317@1@0@C:\PARK\PARK.PRG@PARK.PRG@ @0 #D@106@286@10@D@HARD DISK@4@16 #D@0@280@10@C@HARD DISK@2@16 #D@92@53@6@B@FLOPPY@0@16 #D@5@48@7@A@FLOPPY@1@16 #S@878@11@CLIPBOARD@0@16 'V'4tl$W>$MW VENUS File Show Options about Venus... ---------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 Open ^O Get Info... ^I--------------------- New Folder... ^N Close ^C Cycle Window ^W Delete Window ^U Undo Undo--------------------- Format Disk... ^E--------------------- Quit ^Q Big Icons ^B Small Icons ^S Text ^T-------------------- Sort by Name ^H Sort by Date ^J Sort by Size ^K Sort by Type ^L unsorted ^X-------------------- Clean Up O-------------------- Wildcards... ^P Disk Icon... D Application... A File Icons... F------------------------- Console Window M------------------------- Display... I Console... W Verbosity... G End of Programs... P Miscellany... V------------------------- Save Status... SVersion 0.99 Jun 12 89Copyright 1990by Stefan Eissingand Gereon Steffens"UNSERE SOFTWARE IST BANANE."FLYDIAL BY JULIAN F. RESCHKE.VT-52 BY ARND BEISSNER.THIS IS A SHAREWARE PRODUCT,SEE INFO FOR MORE DETAILS.[Info[OK Memory's Bad 1234567 18.08.88 19:00:00DISKETTEDisplayTEXTTEXTTEXTTEXTText Mode[Size[Date[Time_Xfor folders[Cancel[OKWildcardstt[Edit...[Cancel[OKIcon Rules[DeleteCo[py[Edit...[Cancel[OKDrive IconsBackground: light grey Foreground: dark grey _Drive: _a____________Name: ____________XXXXXXXXXXXXShortcut: none [Delete[Cancel[OKRename Files/Folders@ Old Name: ________.___ZZZZZZZZZZZ@ New Name: ________.___ZZZZZZZZZZZ[Cancel[OKCopyingMoving@ Folders: _____NNNNN@ Files: _____NNNNNESC@ Bytes: _________NNNNNNNNN[Cancel@ Folder: ________.___ZZZZZZZZZZZ@ File: ________.___ZZZZZZZZZZZ[OKName Conflict@ ________.___ already exists!ZZZZZZZZZZZ@ ________.___ will be used as new nameZZZZZZZZZZZfor this object.[Skip[Replace[Cancel[OKDeleting@ Folders: _____NNNNN@ Files: _____NNNNN@ Bytes: _________NNNNNNNNN@ Folder: ________.___ZZZZZZZZZZZ@ File: ________.___ZZZZZZZZZZZESC[Cancel[OKCreate New Folder@ Name: ________.___ZZZZZZZZZZZ[Cancel[OKFile Information@ Name: ________.___ZZZZZZZZZZZ@ Date: ________XXXXXXXX@ Time: ________XXXXXXXX@ Size: _________ BytesNNNNNNNNNFile Attributes[write protected[hidden[system[archiv[Cancel[OKFolder Information@ Name: ________.___ZZZZZZZZZZZ@ , Time: ________XXXXXXXX@ Date: ________XXXXXXXX@ Files: _____NNNNN@ Folders: _____NNNNN@ Used: _________ BytesNNNNNNNNN[Cancel[OKDrive Information@Drive: _:F@ Name: ____________XXXXXXXXXXXX@ Label: ________.___ZZZZZZZZZZZ@ Folders: _____NNNNN@ Files: _____NNNNN@ Used: _________ BytesNNNNNNNNN@ Unused: _________ BytesNNNNNNNNNShortcut: none [Cancel[OKInstall Application@ ________.___ZZZZZZZZZZZis responsible for files@ like: _____________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXEinstellungenClose all [windows on startupIt is a [GEM application[Always prompt for parameterswait for [keypress afterwardsstart as o[verlay[Cancel[OKEnter Parameters@ Commandline for: ________.___FFFFFFFFFFF@ ____________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX[Cancel[OKSwap DisksPlease insert disk@ ________.___ZZZZZZZZZZZ@into drive _:A[Cancel[OKShredderObjects dragged onto this iconwill be erased.@ Name: ____________XXXXXXXXXXXXBackground: light grey Foreground: dark grey [Cancel[OKPaperbasketObjects dragged onto this iconwill only be moved away.@ Name: ____________XXXXXXXXXXXXShortcut: none Background: light grey Foreground: dark grey [Cancel[OKClipboardObjects dragged onto this iconcan be pasted in otherapplications.@ Name: ____________XXXXXXXXXXXXShortcut: none Background: light grey Foreground: dark grey [Cancel[OKIcon Information@ ____________XXXXXXXXXXXXis an alias foris a folder with path--------------------------...@ on disk ________.___.ZZZZZZZZZZZDisk has no label.Shortcut: none [Abbruch[OKVerbosityDialogsfor Copying/[MovingOver[write without warningfor [Deleting[Cancel[OKSpecial Icons@ Name: ____________XXXXXXXXXXXX@ Files: _____NNNNN@ Folders: _____NNNNN@ Size: _________ BytesNNNNNNNNNShortcut: none [Cancel[OKErase Floppy DiskMode[EraseErase [without change[FormatSectors910Sides12-----------Label: ________.___ZZZZZZZZZZZESC[Cancel[OKConsole ParametersTEXTTEXTTEXTTEXT@ Rows: __99@ Columns: ___999Invers text is[invers[bold[underlined[Cancel[OKEdit Wildcard@ _____________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXX[Cancel[OKEnd of ProgramsTOS Programswait for [keypressStart programas overla[yEnd of Gemini[empty paperbasket[additional confirmation[save status[Cancel[OKMiscellanyDesktop Icons--X distance: __99--Y distance: __99Windowsshow [hidden filesdon't snap [windowsuse [Blitter[Cancel[OK Insert Copy Edit Icon RuleFolder [RuleBackground: light grey Foreground: dark grey Wildcard:@ _____________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXX[Cancel[OKInstalled Applications[Delete[Edit...[Cancel[OK none 0 1 2 3 4 5 6 7 8 9 white black red green blue cyan yellow magenta light grey dark grey light red l. green light blue light cyan l. yellow l. magenta Format in progress... Sort by Icon ^L Sort by Type ^LL>@  8C@X@8 'k<<~ ~> ` ` <` c5 c` Cx c@ a@ 8@0 @0 0 Apa0îay^??p8@   @@@88pp 0p+5/=+5+5+5+5+5+5UUUUUUUxxUxxUxxUxU+5/=+5+%+5+5+5+5UUUUUUUxxUxxUxxUxU       Ҁ  8   R  R L       Ҁ  8   R  R L   ,   i```CHIJOPQVWX]^{},.7 9FY    39?PVZ[\fw    (4Z &     ) 5 H  T X Y x        &  / 9 O         & 7 = C V \ f |        $ * 0 A G Q g  q {    + O$)G S==4@M Y[i bo 1>Q  3?U atu  +1BHNagq " .23SXYZ_`afghmnor|     ,2A  NPP $ + 1  7 ,P  @ R i ~  %@9Mau   ,+ !"#$+%>&Q'd(w) * +  -9 ./0 1"2<3T4n567 8 9 ,   CA@tp` 2C U        8 '/ ( '4N(%@#;DDTp D  D    _ iou  PP '  & @$ @"@      '  -@+ D D @#0 "  "  "  " '" +@) D D    q   @ @ p @@  f    @p@x   '   @  4 '   @  P l0         '  / @-  !%fw }   '$  " @ !0!L!h!! 0!   Z ' b  @ f!  '   @ !"","H   Y   i  z      '   @ "d""""  "    '  @ #  #(#D#`#| #  #        @  @  '   *@( #  ##   m& {         ' @ @> $$$< + '6 @ !$@ $\ k 's &@$w$x"  q   @ @  p @@ ' $@" *I$      @@  "   q @ @ p  @@ ' &@$  # $^     @h@  " p q @|@ p  @@ ' ! @$ $%/ %  %< v      @ @ ' % @# ! '  @ %X%t%%     @@  '  @QQQ        %0%4  '< &@$@DD&& D  D &8&T &p   &    ' ! @ &1  '9  "@ =MZm{          '  #@! && ': N  [  'c  Egep7@5wD D !      q   @ @ p @@& '/! '7,  -@+;D D @"0 @"0 R!  Z!  c! 'k!    ow    !            )  7  E  S  a o }  ! " !'V,,.^.0125~6&7F869>9;<&=>?@^B&DNFHHJKMN&O^P~PRT&UFVVqqqq$`[?"?Eo߀u~??????%`J*T` P%@*`JT *R T H` `!@*BTa aR`/H_a|d"%+o????%`J*T` P%@*`JT *R T H` `!@*BfT aR /ʇH_6a|"%+? o???7l`X``6lT * UW  W\S  5@us@juOU3@z2@g<W4y<>`S4"$Es@u3@2@4<4$@@@??????@  0                    ????????????????????@UUUV@@@@@@@@OB@XA@@E_@%@@ @@@@@@@??@UUUV@@@@@@@@@@@@@@@@@@@@@??@UUUV@@@@@AGO?OOG@oAAAAA~A@@@??@   7?@UUUV@@@`@ @ @@@.@.@^@^@@AaAYBBEEJJ??@   ++\<0\<0<0<0 C C Ð Ð = =  >  @UUUV@@AF@AjAAC?FC~GFoOFO_F_FF@AF?? @ >          ꪐ    @UUUV@@@@@@@`@`@0@0@@@?@?@p@p@@AC@??@ ``00??pp  @UUUV@@@@@f@@@f@a@@V@j@)@F@_ACG7O_@??@ y  X { {z ^  ۀ Ӏ  @UUUV@@@OF@8@D<$HP@A@@NF@D HP@A!@@@yF@>D?? @ "   8A .0   < 0@ 9 ? 0@UUUV@@@@@@@@@@P@@@P@@@@ @ @@@@@@??@ @@@      @@   @UUUV@@ @ _y_ OOG3FCmA@H@D@Af@%f@~6@ 6@@@ ??@ ( `(D "Q ªpPJx4P0 @UUUV@@@IY@DN@ *MԩF@K@ *@@ d@@8@p@A@@@??@UUUV@@@@@@@0@$H@DT@b@@/@E_@3@@@@@@@??@ 0$HDTb/E_3@UUUV@@@@@6@V@a@a@@AACCGFNL\X@??0P@  >pp0000p??pp000@ !# a aϐ #!?@UUUV@@@@@@>@C@GACGMDßDDßCGM@GA@C@@?@@@@??@UUUV@HKHMTOLLOHJHO@@@@@@@@@?@UUUV@@@@_C@@CO__|~x@@??@UUUV@`PiSiFP 3` @@F!@Ar Ab BBfBfBfBfBBA??@UUUV@@@@@@@@@@@@@@@@?@@?@@@??@ ??@UUUV@@@@@_xvQFA AACAAAfCv@@@@?@@@@??@ xp P  C  p p@?@UUUV@@@`@@(@@~*@C@B@C@@@@@B@@@@@B@@@@@B@@@@@B@@ @??@ `(~*CBC@@@B@@@B@@@B@@@B @UUUV@@@GO&[_O&G@@@@&@@@&@@@??@ p00   3 ;  =  @UUUV@GD GxD DGDD xGHD DGD@D@@@GDE܆E@EDG??@  P

@x@/@GAOC2 fC@FFFL>L|X`yps0??@ /x__?H/H/___@UUUV@@@@ @@@@@@@ @ @@@@/@/F@/F@?F@@??@ ??@UUUV@@@@@@@HMOOOO_MHf@F@@@@@??@  < < @ < P< f Uf  G  KP&pTp 0U0Up@UUUV@@0GY6B>D_FDFH&OQR~ < < f f# E'!6! &#@#&`&>`,|0<8???????????????????? 00  8@ <               @ 9 ~ ???????????????????? 0     / / ?  B $   / / / _ _ _  ????????????????????@UUUV@@@@@f@@U@@L@@d@T@@@|~lFTVlFUDDFnEVUDDF??@UUUV@@@ C@VGvO@VN!v@OT_V\T`\WZUZ V ?Z O@?? 00     /xv(F  #  H f!pv     ???????????????????? 0         ` ` 80 80    !!#'???????????????????? 00     f   v a V  uv  !W @ !#'???????????????????? 0  '.x'##!! p z \  _ ? _   s????????????????????@`@P@x@@@@@@@@@?@ `````````? 8 1 ~? "+ V m`Z`               ? à7     ? @`@P@x@@@@@@@@@     GGGGxxxxxxxxGGGG   ( & A` @      @`@P@x@@H@HHLKQP@     @    p   @`@PAxABBDHGH(H(\x@            @`\P@x[@WH@\@C@@@0?@0?@   @@BBBEEEIJ>J"T*X"P*`" 8 8    E`  @`DPDxJJQ(QXQ(JXJ(N(N             0 $H DT b  /E_3   0$HDTb/E_3??            (O`````o< 8< } ?3 >~}~!#a aϠ#!?]  |    p  |  ~    ?   8                          @`@P@x@@@@@@@@@            @`@P@x@@@@@@@@@            @`@P@x@@@@@@@@@            @`@P@x@@@@@@@@@            @`@P@x@@@@@@@@@            @`@P@x@@@@@@@@@            @`@P@x@@@@@@@@@            @`@P@x@@@@@@@@@                                    ?@ `````````??@ `````````??@ `````````?                        ?@ `````````??@ `````````??@ `````````??@ `````````?<$  N<-  N<8  N<C  N<N  N <YA  N <eA  N <qB N <~C  N <C N<C  N<C N<B  Nd<A@%%NC @%$NC @%%Nl,R@((N, N, N, N, N, N , N!,   N",! N#," N$,#  N%,$& N&,%1 N',&7 N(,'> N),(D N*,)K N+,*U N,,+Y N-,,_ N.,-k N/,.q N0,/y N1,0 N2,1 N3,2 N4,3 N5,4 N6,5 N7,6 N8,7 N9,8 N:,9 N;,: N<,; N=,< N>,= N?,> N@,? NA,@ NB,A NC,B ND,C NE,D NF,E NG,F  NH,G. NI,H4 NJ,I= NK,JC NL,KL NM,LU NN,M\ NO,Nc NP,Oi NQ,Pr NR,Qv NS,R| NT,S NTT NUlU, NUU NVlV, NVV NWlW, NWW NXlX, NXX NYlY, NYY NZlZ, NZZ N[l[, N[[ N\l\, N\\  N]l], N]] N^l^,! N^^' N_l_,/ N__6 N`l`,< N``E Nala,L NaaR Nblb,Y Nbbc Nclc,i Nccu Ndld,z Ndd Nele, Nee Nflf, Nff Nglg, Ngg Nhlh, Nhh Nili, Nii Njlj, Njj Nklk, Nkk Nlll, Nll Nmlm, Nmm Nnln, Nnn Nolo, Noo% Nplp,) Npp/ Nqlq,5 N?qN(q N(qN(rN(r4%N(rV.N(rxN( r N( rN( rN( s%N( s".N(sDN(sf N-sN,sN- s&N0:AsN(tN(t2N(tTN(tvN(t$N(t+N( tN( tN( u N( uBN( udN(u$N(u+N(uN(uN(vN(v0N(vRN(vt$N(v+N(v N(v N(v N(w N(w@ N(wb$ N(w+ N(w N(w N( w N(!x  N("x. N(#xP$ N($xr+ N(%xN(&xN('xN((xN()yN(*y>$N(+y`+N(,yN(-yN(.yN(/yN(0z N(1z,$N(2zN+N(3zpN(4zN(5zN(6zN(7zN(8{$N(9{<+N(:{^N( {N(:?{N{N{N|N|*"N|L*N|n1N |N |N |N |N }"N}:*N}\1N}~N}N}N}N~"N~(*N~J1N~lN~N~N~N~"N*N81NZ N| N  N! N"" N#* N$&1 N%H N&j N' N( N)" N** N+1 N,6 N-X N.z N/ N0" N1* N21 N3$N4FN5hN6N7"N8*N91N:N 4NV. >Um.. CONS_FIXPRG `9 nCON_FIX TXT a9 p `n`:K.IsakovicXBRACFIX O0 fNh Pg Pg P fag zNa zNXBRACFIX O0 fNh Pf hfaVg zNa zNXBRACFIXJf" xg XBRAf A `a8 zN (m.n (m .npNu z P (1fB@Nu?AjBGJgTG`|A\1p<NGAZ!pAj!pA /H>Nu?>A&B0pGA"<0pGA$$ppA4 pp>NXBRACFIXHHz?<&NN\L zN xg. XBRAf QST2fAX !A !NuA !#NuG k  Ј<.@// ?<?<JNAO Hy?<&NN\A*a>9nf"AEaAChɑBg/?<1NAANSGgAoSGgASGg"ARSGgAaAma?<NAX`aBgNA x h hg#( xVJfP x XBRAf$ OVERgJ CFIXgHg h` x XBRAf CFIXg"g h` x XBRAf CFIXgg h`@$Op xC !Bp!3.JF x# XBRAf QST2gg h`# x XBRAf g h`#ACt <"QA( ! 8g, @BJgPHR@`lB!h CFIX!|BynNu3nNu3nNu3nNu3nNu3nNuH`/?< NA\LNu CONS-FIX 1.3 K.Isakovic, 16.11.90 now installed. | NOT installed. Auto folder only! | | NOT installed. | | Must start befor QuickST 2.x ! | | NOT installed. | Already fixed by OverScan! | NOT installed. | TOS 1.0 is not supported! already installed. Please press RETURN 8( X CONS-FIX 1.3 by Karsten Isakovic, Berlin 16.11.90 ------------------------------------------------- Cons-Fix fixes the QuickST /TurboST redirection error. With these software-blitters installed, GEMINI or NeoDesk can't redirect the ouput from other programs into the console- window or into files. Cons-Fix redirects gemdos- and bios-output from programs directly to the operation-system, if the extended bios- vectors (that indicate a redirection) don't point into the os. In this way the software-blitters can't speed up the output. If no redirection is in place, the gemdos and bios output function are not 'stolen' by cons-fix and the software- blitters speed them up as normal. Installation with TurboST ------------------------- With TurboST.Acc Cons-Fix should be the last PRG in the auto-folder and TurboST the first loaded DA. Cons-Fix installes in the traps, after the next program that does not support XBRA (probably TurboST) hooks into the gemdos-trap. Installation with QuickST ------------------------- QuickST must start after Cons-Fix in the auto-folder. Cons-Fix installes itself in the Exec-Os vector to wait for the installation of QuickST. Since Cons-Fix 1.1 the processor register A2 is saved before a character-output function and restored after the function is finished. This fixes a problem that many TurboC PRGs have with QuickST. Cons-Fix uses the XBRA-ID CFIX and if a CookieJar exists, a cookie with the version number is installed ($00010003). Only 650 of the 1650 bytes stay resident in memory. Cons-Fix tests: - TOS version > 1.0 - auto-folder yes/no - already installed - AutoSwitch-OverScan installed The Cons-Fix Patch is (like many others too) included in the driver-software of the graphic extension AutoSwitch-OverScan. Versions: --------- 1.0 23.07.90 ConsFix Patch pure 1.1 10.08.90 Register A2-patch 1.2 27.10.90 TurboST support corrected 1.3 16.11.90 XBRA-loop detection ****************************************************************** * * * Only if the files * * * * CONS_FIX.PRG and CONS_FIX.TXT * * * * are not modified, private users are allowed to copy and use * * 'Cons-Fix' for free. * * * * All rights (copyright,distribution...) for 'Cons-Fix' remain * * at the author (K.Isakovic). * * A commercial use in any form (also includes the distribution * * on public-domain discs or simular) is NOT ALLOWED. * * * * You get the latest version from the author or in the german * * MAUS mailbox net. * * * ****************************************************************** With best regards Karsten Isakovic Wilmersdorfer Str.82 D-1000 Berlin 12 Germany . >Ut.. INTERNA TXT b9 u8 VDI_FIX PRG h9 xVDI_FIX TXT h9 z[ Beschreibung des VDI-Fehlers, der durch VDI-FIX behoben wird ######################################################################## Die VDI_Workstations werden intern als verkettete, sortierte Liste verwaltet. Der Fehler tritt auf, wenn Lcken in der Liste entstehen, jeder neue VDI-Block wird dann fasch einsortiert und es wird immer dasselbe VDI-Handle vergeben. Bei Einhngen wird folgendermaen vorgegangen. Block 1 wird auf Handle 1, Block 2 auf Handle 2 usw. getestet. Wenn kein Block fehlt, wird ein Block angehngt, wenn einer fehlt, so wird dieser neu vergeben. Und genau da lauert der Fehler ! Der neue Block wird hinter den gefundenen Block gehangen, so da beim nchsten ffnen einer WK wieder derselbe Handle als fehlend festgestellt wird usw.. Am Besten ein Beispiel : Vorgang Reihenfolge der Blcke ------------------------------------------------------- Existieren die WKs 1,2,3,4 1,2,3,4 Nun schliet WK 3 1,2,4 Prg A ffnet eine WK und erhlt die 3,die ist aber falsch eingehngt 1,2,4,3 Prg B ffnet auch eine WK und erhlt wieder die 3 1,2,4,3,3 Prg A und Prg B arbeiten als auf derselben Workstation und die Aufrufe zum setzen der Parameter laufen durcheinander. Setz Prg A GrosseSchrift und danach Prg B KleineSchrift, so werden auch die Ausgaben von Prg A in kleiner Schrift geschehen usw... Und dies alles nur, weil der Block dahinter, statt davor gehngt wurde ! ######################################################################## Hier nun der Code fr v_opnvwk aus TOS 1.0 - 06.02.86 - $FCD4D8 TOS 1.4 - 06.04.89 - $FCE22A TOS 1.6 - 29.07.89 - $E0E454 TOS 030 - 23.05.89 - $E085BC MALLOC($134) move.l D0,A5 ; new = Malloc($134) ... Abbruch wenn kein Speicher erhalten ... move.w #1,D7 ; handle = 1 move.l BASE,A4 ; wk = BASE bra Test ; while(handle == wk->handle) { Loop: addq #1,D7 ; handle++; tst.l 64(A4) ; if (!wk->next) beq End ; break; move.l 64(A4),A4 ; wk = wk->next; Test: cmp.w 40(A4),D7 ; /* In C eine WHILE-Schleife */ beq Loop ; } End: tst.l 64(A4) ; if (!wk->next) bne InsertWK ; { move.l A5,D0 ; wk->next = new; move.l D0,64(A4) ; ... ; new->next= 0L; clr.l 64(A5) ; } bra Continue ; else Insert: move.l 64(A4),A3 ; { move.l A5,D0 ; hilf = wk->next; move.l D0,64(A4) ; wk->next = new; ... ; new->next= hilf; move.l A3,64(A5) ; } Cont: ... ; move.w D7,D0 ; ... ; move.w D0,40(A5) ; new->handle = handle; ... ######################################################################## Karsten Isakovic Wilmersdorferstr.82 1000 Berlin Mailbox : Maus Mnster, Maus Mnchen, Parrot Berlin ` `K.IsakovicXBRAVFIX# @sf* A P Pg PdfA A"/H z/:Nu @fA  zNsaU~.. CHMELEONACC ]9 CHMELEONTXT ]9 -``ChamK# m  Ј<Q.@// Bg?<JNAO `@$Op#@ x"xG!BpPG!28P@!!3D.JF*z#`,+|: x h #Fм#P hm(+h$:"h(# hm[B\A !A !A< !Nu Af ):fNuA #Aa*?<"NNT+@.+J2B+@6ACaBg?<NNX#X?<NATCaCaB-AaafaLaN g a a*`a`Tp "<a3`3Tp#"<AQa0:~;@>3ByByByVB9 NuaJyfNAp"<av0- @(fJyVg.ByV @Gf3aJ-gag naZBya8gaa` <AX01F "<psNBNu"<#nA20"<0<NBNuA3`p4"<`B@3`pk`3`pN"<`B\B3>B-@AzpEBQPC9AfNuAB -g"@g  fJf"@`2->HA2->A01|A0!Ap "<`, m::g0<(a3VNuxpa>a8QNupa,0<)aJygaByJ-gx`^AC#rC#vpZ"<a0:rgLCJgDapACE&Jfe& "\fRfa0nmpaaB@a faxa ga@a NuJ-gA $frQ KILLf BypNuBgHm?<=NAPJkT8Hz/<??<?NAO ??<>NAXA P`f(((بب ؼu0/9\ m03a($zBaJy\fA"za^\Nu4|t=azP4|t8 ah4| t8a\B94|taN4|*taF4|nta>4|ta64|ta.$m.ta&$m2ta$m6taJyg $xV48TSBaNuJ9\ga (JX J9gGd|agv&0gNmJֱSn@&@ ang XBRAfR9\2:.g&)k`JyfB9\NuBNuXA Adm(@ XBRAfg ,B`QbNuafA`BfR@gJ m m m m*H/8@|$C ! @&vF.B!LJNu z "z $P##j #j@@#jDD#jHH#jLL NuHaf Aa LNua`/?<&NN\NuJ9f@ Nu:B9\/<?< NA\\JNuJyg# :aByNuJyf3#avNup2QNuXBRACham @sfVJ9\f zN A P Pg Pdg Pg Peg Pwg( Pxgv Pzgr P{g` @f# A P P f#A0/H`J9\gaB9\#A/H A P P#g. Png( Pgp Pgr PgT PNg Peg Pfg Pgg Pkgr`( @f"J9\gaB9\#A /H zN\ zNH A P4 BgF Bg$ BegJ BfgV BggN Png`4:pBg A h 4Bg9nR A h P P)g P(g PGf3H*z+hJyf"m::JfV`a:ajlBy`faJ9\g,0<O"<a:U f2aPByVab` A.a`$g: gRh g gRhL\$ z\NJ9f/ E$ԚԚԒ$_Jg0BB`ABBBB`/ A h 4j" A h"PAVtfQ A h 0T$ z"N A h"P A hJPkpJ9_fa$/`8:[ nA+a 9B9C`Aa>B9C A h 0R9_Ry\NsAa` A hJPg PfRy`Sy` A h Pg PfS9`xR9`n A hJPf B9`ZR9`PS9`F^Hd A$ha&L&`(B9^ A h JPfZH*zAa` A h3B9`J9g A P0000BP A h1P1h0030/ "z.C A h "_` A h3`A4:dB1 `A4:PBBp `#AN/H]`F#AN/H]`*H04( vCnYfBaQL ` / CVJYf A PJh k 3( DQ`/ C:JYf A PJh k3( B9]"_ zvN3 #A/H]`JydgH EtJfzi`QLB9] z NH0 4( EvfB*QL `PXBRACham0 fNh` OV PIf2 (f(Ha4a# -#aL`~J9^g`J9\gl03 @gJ @gD @g> @/g8 @6mF @;g @ GMNI12_2.PRG) and make the distribution disk write protected. Then start the program. Your atari will load the program and then complain about the write protection of the disk. Then insert a blank formatted disk instead of the distribution disk and continue. The data will be extracted to the new disk! This little trick is only neccessary for GMNI12_2.TOS, because both extracted data and the archive won't even fit on a single disk. Don't be frightened by the amount of data of this distribution! To work with GEMINI you only need 600 Kilobytes of space on your disk. The rest contains documentations and utilities you will not need every day. Holthausen, 02/24/91 Stefan Eissing P.S. the next distrubution of GEMINI will come on a filled up CD-ROM containing all existing versions ever made. Don't forget to include 1,345.90 US$ in stamps, if you want the printed manuals, too. NO, FORGET THIS! We're just kidding... #a000000 #b000000 #c7770007000600070055200505552220770557075055507703111103 #d #Z 01 A:\VENUS\VENUS.APP@ #E 98 12 #W 00 00 10 02 31 12 08 A:\VENUS\*.*@ #W 00 00 0D 08 2A 0B 00 @ #W 00 00 0E 09 2A 0B 00 @ #W 00 00 0F 0A 2A 0B 00 @ #M 00 00 00 FF A ASCIILUM PDL@ @ #M 00 01 00 FF B 081.550.5572@ @ #T 00 03 02 FF TRASH@ @ #F FF 04 @ *.*@ #D FF 01 @ *.*@ #G 03 FF *.APP@ @ #G 03 FF *.PRG@ @ #F 03 04 *.TOS@ @ #P 03 04 *.TTP@ @ . !.. >U. !.. >U``ChamK# m  Ј<Q.@// Bg?<JNAO `@$Op#@ x"xG!BpPG!28P@!!3D.JF*z#`,+|: x h #Fм#P hm(+h$:"h(# hm[B\A !A !A< !Nu Af ):fNuA #Aa*?<"NNT+@.+J2B+@6ACaBg?<NNX#X?<NATCaCaB-AaafaLaN g a a*`a`Tp "<a3`3Tp#"<AQa0:~;@>3ByByByVB9 NuaJyfNAp"<av0- @(fJyVg.ByV @Gf3aJ-gag naZBya8gaa` <AX01F "<psNBNu"<#nA20"<0<NBNuA3`p4"<`B@3`pk`3`pN"<`B\B3>B-@AzpEBQPC9AfNuAB -g"@g  fJf"@`2->HA2->A01|A0!Ap "<`, m::g0<(a3VNuxpa>a8QNupa,0<)aJygaByJ-gx`^AC#rC#vpZ"<a0:rgLCJgDapACE&Jfe& "\fRfa0nmpaaB@a faxa ga@a NuJ-gA $frQ KILLf BypNuBgHm?<=NAPJkT8Hz/<??<?NAO ??<>NAXA P`f(((بب ؼu0/9\ m03a($zBaJy\fA"za^\Nu4|t=azP4|t8 ah4| t8a\B94|taN4|*taF4|nta>4|ta64|ta.$m.ta&$m2ta$m6taJyg $xV48TSBaNuJ9\ga (JX J9gGd|agv&0gNmJֱSn@&@ ang XBRAfR9\2:.g&)k`JyfB9\NuBNuXA Adm(@ XBRAfg ,B`QbNuafA`BfR@gJ m m m m*H/8@|$C ! @&vF.B!LJNu z "z $P##j #j@@#jDD#jHH#jLL NuHaf Aa LNua`/?<&NN\NuJ9f@ Nu:B9\/<?< NA\\JNuJyg# :aByNuJyf3#avNup2QNuXBRACham @sfVJ9\f zN A P Pg Pdg Pg Peg Pwg( Pxgv Pzgr P{g` @f# A P P f#A0/H`J9\gaB9\#A/H A P P#g. Png( Pgp Pgr PgT PNg Peg Pfg Pgg Pkgr`( @f"J9\gaB9\#A /H zN\ zNH A P4 BgF Bg$ BegJ BfgV BggN Png`4:pBg A h 4Bg9nR A h P P)g P(g PGf3H*z+hJyf"m::JfV`a:ajlBy`faJ9\g,0<O"<a:U f2aPByVab` A.a`$g: gRh g gRhL\$ z\NJ9f/ E$ԚԚԒ$_Jg0BB`ABBBB`/ A h 4j" A h"PAVtfQ A h 0T$ z"N A h"P A hJPkpJ9_fa$/`8:[ nA+a 9B9C`Aa>B9C A h 0R9_Ry\NsAa` A hJPg PfRy`Sy` A h Pg PfS9`xR9`n A hJPf B9`ZR9`PS9`F^Hd A$ha&L&`(B9^ A h JPfZH*zAa` A h3B9`J9g A P0000BP A h1P1h0030/ "z.C A h "_` A h3`A4:dB1 `A4:PBBp `#AN/H]`F#AN/H]`*H04( vCnYfBaQL ` / CVJYf A PJh k 3( DQ`/ C:JYf A PJh k3( B9]"_ zvN3 #A/H]`JydgH EtJfzi`QLB9] z NH0 4( EvfB*QL `PXBRACham0 fNh` OV PIf2 (f(Ha4a# -#aL`~J9^g`J9\gl03 @gJ @gD @g> @/g8 @6mF @;g @