O`NNNNNN2.p &<C@E$g: <1AY&B&f"8A$ $<!*!&2Q!adNu"x." "4V"GBIZ2۷mG"&AB@4<[Q4/</<?BK*U,M/ ?<NNJ@k:`IG:ܹm*N2<0<4]Q:/</<?B/?< NNJ@kD f0B?<"NNTм/Hz /<NN 8LN-O` /O`/#@o')+-1 3@5`79;=?A C@E`GIKOQ SU`WY[]_a c@e`gikmos@u`wy{} @ @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  ` @`!A   /Aa!!#A%a')+-/1!3A7;=?A!OEaGIMOQUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!Aa!Aa!Aa!Aaǁɡ!Aaׁ١!Aa!Oa " B b  !"!B!b!!!!O` /O`/#@o')+-1 3@5`79;=?A C@E`GIKOQ SU`WY[]_a c@e`gikmos@u`wy{} @ @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  ` @`!A   /Aa!!#A%a')+-/1!3A7;=?A!OEaGIMOQUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!Aa!Aa!Aa!Aaǁɡ!Aaׁ١!Aa!Oa " B b  !"!B!b!!!!CV2IMG09 IMG2VIEW IMGSHOW1 LIMG_CATD qCPMEMU ]CPMEMU2 {DESKTOP INFRMISC 4 +ARC_SHELL RMEDREZ PRG 1S4TLB_PD PRG TPSAMPLE PAKINSTALL BAS lEGAMIX MOD0 . .. CONV2IMGPRG +4CONV2IMGRSC vCONV2IMGTXT !`/\4|KJ$f(By/\O1/900?<HNA\OJg.@00`6 - ЭЭй00"ҍ¼.A// Bg?<JNA #N yN/(,HhN "P/9/97F?9 NT?<N#NVN/<?<HN"r\# <"9/"</N"X"ѹ/<,?<HN"r\-@ <"./"</N"X"Ѯ .м}#7B/9/bN!XfHy/?<N\N0?<N"4T#2?<N"4T3HyBgN!\Hy7>BgBgN!PHyXHyVHyTHyR/97>NOCR OpN!BgBgBgBgBgNOCR OpN!?<Bg/97>N!&O`#<Byϒ09p`(A/#ϊAh#φ3r3t3|Byv#~#"ς3x3z#7Bώ`A/#ϊAh#φ3r3t3|3v#~#"ς3x3z#7Bώ`vA/#ϊAh#φ3r3t3|3v#~#"ς3x3z#ώ` A/#ϊA\#φ3r3t3|Byv#~#"ς3x3z#ώ`A/#ϊA\#φ3r3t3|3v#~#"ς3x3z#ώ`:A/#ϊA\#φ3r3t3|3v#~#"ς3x3z#ώ`A/#ϊAh#φ3r3t3|Byv#~#ς3x3z#7Bώ`hA/#ϊA#φ3x3z`N8O CR OpN!?<Bg/97>N!&O`Hy yφNX y pgh y|o^ yf*?<%N"4T?N8O CR OpN!?<Bg/97>N!&OHy09x@??9z?9xNO ?N8O CR OpN!?<Bg/97>N!&OBg/97>N \3p @fDCR OpN!BgBgBgBg?<NON0N^NuNuNV/.HyHyN4O Bg?<?</97>NO ?N8O CR OpN!?<Bg/97>N!&ON^NuNVHAѶ-HAָ-H/.N X y pWJf ypWJ|=@BG`h0.g0@`0<??. 0@?/.N O /.N X/./.N P?/.N\-n-n-nRG0nmLN^NuNVHBF`BG`2`AH҈:EHځ E:0|@=@0|p@=@0|=@0.=@0.=@0.=@8.H/(</N#"(0.H/ <;/N#" ؀0.H/ < /N#" ؀ / <d/N" X4`A7lHԈ2AH҂ A0RG0n mRF0nmLN^NuNVH*nBG` 0HBRG G@mL N^NuNVH*n09/fg60. P=@By/fBG`BF`(:.F0 y7B002AA1RF02.Ae:Eʼ8<`BnBF`0@A00|`nRF02.Ae0E=@ y pg ypf?.HnN\2.`A7lH҈0.@HЁ @02.AA11BF`0@A00@2AA1RF02.AeSDJDlJ0.@0.n GPe`3/f nfvBG`j2AA1200@Ѝ @0A02AA120 G?d0R@`0@A1pA0@Ѝ @0(A1@RG G@e`.BG`$2AA1200Ѝ @0A0RG GeL N^NuNVH *n(n BG`0H uo<H<5h|0H;`<H<5h0HBu2<A0HЍ @0(A1@2<A0HЌ @0A02A0HЌ @0(A1@JGo2<A0S@HЌ @0A0RG GmPL0N^NuNVH*n>. :PBF`p0H uf40<2HHA`2<A04BBHй @HHA`,2<0HH@a04BBHй @HHARF FmL N^NuNVH0. @|<. H?</.?<=N"rP=@J@lPBg/.?<N"rX?</.?<=N"rP=@J@l`=|Hn/<?.?<@N"rO =|Hn/<?.?<@N"rO =|Hn/<?.?<@N"rO =|Hn/<?.?<@N"rO =|tHn/<?.?<@N"rO Hn/<?.?<@N"rO Hn/<?.?<@N"rO Hn /<?.?<@N"rO B`hHn/<?.?<@N"rO Hn/<?.?<@N"rO 9"/"/N#""Ё//?.?<@N"rO R 2. Hm?.?<>N"rXLN^NuNVN!rN/9?<IN"r\/9?<IN"r\N^NuNV?</.?<=N"rP=@J@lPBg/.?<N"rX?</.?<=N"rP=@J@l`Bg?./9~?<BN"rO Hy/< ?.?<?N"rO Bg?./9ς?<BN"rO /9ώ/<}?.?<?N"rO ?.?<>N"rXN^NuNVH?</.?<=N"rP=@J@lPBg/.?<N"rX?</.?<=N"rP=@J@l`*yώBg?./<?<BN"rO Hy/< ?.?<?N"rO B`Hn/<?.?<?N"rO .H|o2 Ї/.HR@H/?.?<?N"rO .HR@Hހ`H.H|gN"rX y|o?<?9|NXL N^NuNVHN"rX?</.?<=N"rP=@J@l`Hn/<?.?<?N"rO .H|oBg?./<?<BN"rO W.Hy/< ?.?<?N"rO Hn/<?.?<?N"rO Hn/<?.?<?N"rO *y7B&y/ 0.H/?.?<?N"rO B`&5xH|l6/ 5xHH/?.?<?N"rO R5H@H`5xH|fJRA(H R R:.Hn/<?.?<?N"rO `60SEJ@f`5xH|fJRA(H R R:./ 0@/?.?<?N"rO 0@`6*R5X|Hn/<?.?<?N"rO `60SEJ@f 2.Hm?.?<>N"rX&y7B$yB`XBE`J060Њ @6@0Њ @6>0Њ @6]0<@ EeTR m.H3v yvf#7B3|3t`*3r3tJyvf 3|`3|LN"rX?</.?<=N"rP=@J@l`fBg?./<?<BN"rO /97B/<|`?.?<?N"rO Hy/<J?.?<?N"rO ?.?<>N"rXN^NuNVH ?</.?<=N"rP=@J@lPBg/.?<N"rX?</.?<=N"rP=@J@l`Bg?./<?<BN"rO Hn/<?.?<?N"rO  Bg?./< ?<BN"rO -yB`Hn/<?.?<?N"rO .H|lBHn/<?.?<?N"rO BF` nxRFR02<.HCAm`2 .Ї/.HR@H/?.?<?N"rO .HR@Hހ |`m\*y(y7BBE`60H80HЍ @80HЍ @8>00HЍ @8]HRE EmBg?./.?<BN"rO A-HB`dHn/<?.?<?N"rO BF`>0.h|g$ .T//<?.?<?N"rO ` nTBPRFR Fm %Pm?.?<>N"rXL0N^NuNVH?</.?<=N"rP=@J@lPBg/.?<N"rX?</.?<=N"rP=@J@l`Bg?./<?<BN"rO B`Hn/<?.?<?N"rO .H|o6 9Ї/.HR@H/?.?<?N"rO .HR@Hހ`BHn/<?.?<?N"rO BF` yxRFR02<.HCAm ʀmX?.?<>N"rXLN^NuNVH>. *y7B(y nfZBF`N м(-@ мP&@ мx-@BE`: nT:: nT:RE EmxRF0Gm`,BF`" мP&@BE`::RE E(mPRF0GmL8N^NuNV n=P n0HH@J@g0. =@[n`0. =@Rn0. nm"0. 2.|Al nP` nP N^NuNVH*yBG` RGX G?mL N^NuNV?<N"rT=@0.|A@|:0.R@?Hn?<GN"rPHy0.HnN*P/.HnN*PHn/. HnN O 0.g/. N+$Xf nB`nHnN+$X=@`Sn0.g&0.S@A0@H|\g .H|:f0.AB0Hn/.N+P/. /.N*PN^NuNV0. H/ </N#"  n-p n Jnl/.N+$X n1@` n1nN^NuNV0.g,0. H/ </N#" Ю @0( n1@ `.2.FA0. H/ </N#" Ю @0( A1@ N^NuNV?<N,bT0<N^NuNVAۺ#6Aі#:A7J#>A#BA#FAF#JA6#?< N,bT309N^NuNV37J# ?<4N,bTN^NuNV#?<6N,bT n 0 n0 n0 n009N^NuNV37J3 7L3 7N37P37R37T37V37X37Z nf 36363636?<3N,bTN^NuNV n06 n 06 n06 n06N^NuNV#3 7J?<2N,bTN^NuNV## ?<ZN,bT n009N^NuNV37J# ?<NN,bTN^NuNV#3 7J37L37N37P37R37T?<*N,bTN^NuNV?<oN,bTN^NuNV37J3 7L3?<pN,bTBy n F09N^NuNV#?<nN,bTN^NuNV/ 0Q"_N^NuAުXy !J!_ NMYyAު"P$h/( J@NuAުXy !J!_ NNYyAު"P$h/( J@NuAުXy !J!_ NAYyAު"P$h/( J@NuNVH$.f BB`J". BnJlVnDJlRnDvd`Bbd nmDdD-@-A LN^NuNVHBG".l~D$. l GD&gHC H@J@g@HCBCւJGgD-C LN^.JNuNV 904A6䀰|l y04X04 0<`0<N^NuNVH`Y04 y04 PN 904A6fA08*H`0- |g / N$*X A08"Ҽ@m?.N.TL N^NuNVH*n0- |g/ N$Xg0<`20- |g /-N'XBm ?- N/Tg0<`0<L N^NuNVH*n0- |f0<`r.0- |gV0- |f0<`R0- |g?<B?- N%"P?/-?- N+

.=|\AN"HPgXHf0(LN^NuNVHHy1~/.N*PfBG`Hy1/.N*Pf><`Hy1/.N*Pf><`0. |gR0. |?/.?<=N"rP>J@m 0. |g&JGm??<>N"rXBg/.?<`j0. |gD0. |?/.?<=N"rP>J@m"??<>N"rXBg/.?<`0. |?/.?<=N"rP>JGl 3 0<`?. ?N(fX0LN^NuNV/.?<HN"r\-@ .f-|3 .N^NuNV0./N*tXN^NuNV . @"n rJWfSWfN^NuLB@ggSBAgHJ@gHANuL rWfNu op`R@SJWfFNuNVH*n (MBn ng?.N(T| fA&H. nU|`|H| f S @  . nU| A|l0fB AH-@Hn/.?.?<@N"rO <g 3 0<`dA&H0f =@`J/ 0./?.?<@N"rO -@2.¼g .3 0<` .n0.L8N^NuNV3ۺ0.| A- HЈ-@=|` nR2.AAۺH1Rn nm/9N,X09N^NuAުXy !J"/0<NBYyAު"P$hNu NVH$.f BB`&". Bvd d``bd-@-A LN^NuNVHL&gHC H@J@g@HCBCւ-C LN^.JNuNV?.?<LN"rXN^NuNV?.N(TJnn0<`,?.?<>N"rX=@g3 0<``0<NqN^Nu/h/WORKING - Don't Rush MeCONV2IMG.RSC[3][ Cannot Find | 'CONV2IMG.RSC'][BYE]*.PI1*.PI2*.PI3*.PC1*.PC2*.PC3*.NEO*.TN?*.SPU*.SPC*.MACzf LEXIT*.IMGSaving...EXIT\ 6 CON:AUX:PRT:*                                                        6Fll l V$8H.J,""""         "06< $&& 4XZ6.p  "   $" (L T 20$$"*4*. R $:2$            "  (l@ (X&>&. . 4$f.,*   ."(~8 &&  26666$66r v"Convert to .IMG"Version 0.9 - Public DomainbyCraig W. Daymon*[ Copyright 1989 ]**.PI3*.PI2*.PI1*.MAC*.SPU*.NEO*.TN?*.ART*.PC2*.PC3*.PC1*.SPCEXIT* Special thanks to Michael A. Long forhis help withthe color to monochrome conversionalgorithms.6RSVWgh}('#(4 *$ 6 R n  2(@ ~ @  @  @  @  @ @ (@ @ @ @ B(   2 Convert to .IMG by Craig W. Daymon ======= == ==== == ===== == ====== *** This program is Public Domain *** Copyright, 1989 - Craig W. Daymon This is the first release of this program and not all features are active. There are enough that I thought I would send this one out to get some response. ********************************************************************** THIS IS VERSION 0.9 - PLEASE DISTRIBUTE THIS TEXT WITH THE PROGRAM ********************************************************************** The program will convert the six DEGAS formats, Neochrome, Spectrum compressed and uncompressed, Mac Paint and Tiny to a monochrome .IMG format file. These file should be compatible with any programs that are able to use .IMG files. They have been tested with the .IMG viewer from Migraph, IMG Quick View, WordUp, PageStream and Easy-Draw as well as a program I wrote to use the GEM function,v_bit_image(), to print .IMG files with the help of GDOS. (G+Plus) PROGRAM OPERATION: ======= ========= The first thing to be displayed is the main selection dialog. From here you can "click-on" the desired picture format you wish to convert. You may also exit the program from this dialog. After selecting a format to convert, the file selector will appear to allow you to select a file. Selecting 'CANCEL' in the selector will return you to the dialog. *Make sure to select a file of the same type you chose from the dialog. (The wildcard in the selector will indicate the type selected in the dialog.) When a file has been selected, the dialog will change to indicate that the conversion has begun and the file will be loaded by the program. If you are using a monochrome monitor, once the file is loaded the screen will switch to show the conversion buffer (for color images only) and you can watch as the image is drawn on the screen. (This worked in version 0.5. My mono monitor has since died, so let me know if there are any problems with this feature.) If you are using a color monitor, the dialog will remain displayed. When the conversion is finished, the file selector will again appear and you can choose a name and directory for the converted image. If you decide not to save the image, you can safely CANCEL and the image will not be saved. After saving the image, the main dialog is again displayed to allow the conversion of another file. PLEASE SEND COMMENTS: ====== ==== ======== If there is something you would like to see added tothis program, send me a message through GEnie. My address on GEnie is: C.DAYMON. If you have any information on any paint formats you would like to see added or detailed information on formats already supported, please get in touch with me. (Not all the information I have is accurate and I have had to make an educated guess or two.) I am especially looking for information on IFF, Mac (all formats including those for the Mac II) and Art Director. The IMG file format (a brief description) === === ==== ====== ===================== The first part of any .IMG file is the header. (Sounds reasonable.) Each item in the header is a 16-bit word. The format is: Word | Contents ============================================================================= 0 | IMG version number. ( 0x0001 works best, believe me. ) 1 | Header length in words. ( IMPORTANT to check when reading. ) 2 | Number of bit planes. ( Also IMPORTANT. 1 = Monochrome. ) 3 | Pattern length. ( Part of data compression, usually 2. ) 4 | Source device pixel width in microns. (25,400 microns/inch) 5 | Source device pixel height in microns. 6 | Number of pixels per scan line. 7 | Number of scan lines. Notes: ===== 1) I use a value of 8 for the header length as do most of the monochrome images available. (No extra information.) 2) The number of bit planes designates the number of colors available. 1 = Monochrome (1 bit, 2 colors), 2 = Medium Res. (2 bits, 4 colors), 4 = Low Res. (4 bits, 16 colors) 3) The number of bit planes is also important in that an IMG file saves ALL the information for the first bit plane before saving the information for the second and so on... 4) The source pixel width and height are primarily of use for determining the aspect ratio of an image. (Personal opinion.) The 'work_out[]' array used by GEM returns the pixel width and height for a specified device from the function, v_opnwk() in words 3 and 4. In the case of the screen, I don't believe these values are accurate for size, but they do properly indicate the proper aspect ratio. The ST monochrome screen "device" will return the value 372 in both word 3 and 4, indicating a 1:1 aspect ratio. 5) Atari markets a product in europe called, HyperPaint, that can edit and save IMG images. It extends the header by 17 words to hold the current palette. (Or so I'm told.) Unfortunately, there is no predefined way to tell WHAT extra information may be stored in an IMG file. It is up to the program that created the file and therefore, extra information is often of little use. Other programs using the IMG format store the palette in separate files. The Bit-Map === === === IMG files are saved a scan-line at a time using one of three methods. (REMEMBER: All the scan lines for bit plane 0 are stored, followed by bit plane 1 and so on.) The 3 methods are BIT STRING, PATTERN RUN and SOLID RUN. BIT STRING: === ====== This is the one I use, it's the easiest. (It's also the least efficient since it incorporates NO compression.) Byte 0 : 0x80 - Specifies that the scan-line will be saved as a bit string. Byte 1 : 0-255 - Byte count, n. (Number of bytes per scan-line.) Byte 2 - n: - A scan-line's worth of raw data for the bit plane being saved. SOLID RUN: ===== === A solid run means that ALL the bits in the scan-line are either on or off. It is specified by a single byte whose high-order bit is set to indicate ON or OFF. The lower seven bits specify the number of bytes making up the scan-line with all their bits set or cleared. Thus, up to 127 bytes can make up a scan-line using this method. Byte = 0x03 = 00000011 Results in a scan-line of 3 bytes with NO bits set. 00000000 00000000 00000000 PATTERN RUN: ======= === A pattern run is a number of 'pattern bytes' repeated a specified number of times. The number of bytes making up a pattern is specified in word 3 of the header. (Usually 2.) There are 2 bytes + the pattern bytes in a pattern run. Byte 0 : 0x00 - Specifies a pattern run. (Mostly) Byte 1 : 1-255 - Number of bytes in run. (bytes per scan-line) Byte 2 - n : - Pattern to be repeated. *REPLICATION COUNT: =========== ===== A scan-lines worth of data can be repeated up to 255 times by preceeding any one of the 3 previous methods with a replication count. A replication count consists of 4 bytes. Byte 0 : 0x00 - (A sort-of large pattern run.) Byte 1 : 0x00 - To avoid confusion with a pattern run. Byte 2 : 0xFF - ??? (I don't know why.) Byte 3 : 0-255 - Number of times to repeat scan-line data. Comments: ======== Other than the REPLICATION COUNT, I don't see why the requirement to save an entire line using the same method. This information was extracted from 2 articles appearing in recent british ST magazines. June 1989 Atari ST User : Page 117 July 1989 ST World (UK) : Page 48 If you are interested in the IMG format, try to get either or both of these magazines. The first discusses IMG relative to the program listing in the article, but is still rather complete. The second is entirely oriented to describing the IMG format. I guess it wasn't so short after all. Let me know any features you would like to see added to the program. -Craig W. Daymon . .. IMGQVIEWPRG IMGQVIEWTXT ! LINCOLN IMG %%SIREN2 IMG / r`  *OO@*m <Э ЭЭ// ?<?<JNA aN# ` d} daa:aJka\a4Jk3 #D # #H # @ #  3 0<2<H Ka`Y Loading -- KK0a L | a BC JQg Kad` Y8 Wid: 09 aK4aB` Hgt: 09 aKTa"` Len: 9 aKta` Error:09 a^ a09  Jf4Ka`Y8 K WxH Dimension error.a`~By hBy jKa`Ear<fT`?<NAACA a~3 Nu## # aJ9 g8 yf,AC0a,!<\fJA aBNu <Nu?<Hy0?<=NAJk3 NuKa`EJ gaNu  09 j y h>9 |o><29 |Po2<P3 Z"y `# #D Vѹ V29 Z"y y VSAfB09 ѹ VP "y dlSGf NuKa`&EY!;p Dr. Bob's .IMG Quick View Ka`$Y";p 1989 W. D. Parks Ka|`$Y#; K*aL` Y$ p qKVa `8Y% p Select IMG file... p CANCEL = QUIT qKa` Y' p qKa`Y$\p Ka`Y%\p NUMBER KEYS SCROLL Ka\`Y&\ LETTER KEYS = LOAD KDa2` Y'\ qNu y ldK~a`RY8$p NUMERIC or CURSOR KEYS SCROLL | ANY LETTER KEY = LOAD | ESC = EXIT q` y; laaa<fNuJgְ<9f" y jl 3 jy j`°<3f"09 j@y ly j`<1f$ y m3  jy j`p<7fBy jBy h`X<8g^<2gr<4g<6g< g߰<Am <ZnNu`H@<GfBy jBy h`<HfJy jgSy j`<Pf 09 j@y lRy j`<KfJy hgSy h`<Mf 09 h@Py l Ry h`x`x/ _a Nu?<?<NMXONur|'m @'RA`Nur|m @RA`Nur|dm @dRA`Nur| m @ RA`Nua/0@0a0 a/0@0a a/0@0a a/0@0a @0aNu?<?<?<NM\ONu/H@a ?@a0?a00<:k^@@aNu?<NNT# `NuJffSSNu/ fp[ .gRS@fR.RpS@f"_NuJy g?9 ?<>NAX?<?<LNAaaa/ <@f Nu@??<NANu/?< NANu"< <NBNuPx H EY qp   Z:\*.IMGDH @ By 3,#,#,# ,#,#,3,#,,y,,<#,*y,# # # 3,Hy ~/<?9,?<?NA Jk y ~f y f09 @H3 #,3 ,m3 Sy g:09 `/9,/9,?9,?<?NA Jk #,axaNaNu$9 ,# "y,A <S@f09 29 y,C Nu?9,?<>NANuJDfNuy NuBy #, >9 (<K,aDJy,fJgV<f&a(JgaRDSCf`Bg4<g|RDSCf`raJf"aҰ<fXa3 `Ha y f /a"TDSCf`RDSCf`Nqy m aBK,JGfNuJy f 3 &9,K, y SCf 9,ѹ SGg Sy fNu,9,,m3,B,R,NuP4 &        22   200,D,***0 d0   V    *V \Z4*       8    .IMG Quick View Program by W.D. Parks Tweaking and this little doc by Chet Walters This is ShareWare in case anyone wants to shake the dust off their wallets and send in a fiver or so. This is also Copyright 1989 W.D. Parks so don't call it your own. Upload this anywhere as long as this doc accompanies it. Also note that this doc file is named with a ".TXT" extension so that if you have QVIEW14.PRG by Darek and his pal installed as an application with the TXT as the doc type you can look it over fast (I wish more folks would follow this standard). Also note that though the .IMG Quick View name is close but not really a match to Darek's Quick utilities, these programs are unrelated as to author/time/date/place and whatever else you might suspect. So, what's it do? This program grew out of an experiment in assembly linkage (nothing to do with automobile transmissions mind you). At any rate, it proved to be just about the fastest loader of an .IMG file to come down the pike since the .IMG file came into existence. When combined with Universal Item Selector II, this little thing can be a very valuable and fast tool for use in sorting out your massive collection of .IMG files. There is no other program quite like this one on the market today. This is a quick and clean (as opposed to dirty as the adage goes) way to get a look at your .IMG files and decide where ya wanna put 'em or even if you want to keep 'em. Since it remembers the name of the last .IMG loaded, you can load an .IMG, look at it, and hit any letter key so the fileselector comes up with the name on the selection line. If you have UIS_II installed, just drag the name from the selection line to the MOVE, COPY or DELETE button (depending on how much you liked the .IMG you just saw) and put it where you like. Then (or), select another .IMG to view. Hit the CANCEL button of the FSEL and you're back at the desktop. Hit the ESC key while viewing for the same result. Hit some of the keys on the NUMERIC keypad for some surprises (or try the cursor arrow keys or Clr Home). Hit any letter key or space for a new .IMG. This is presently all this little ditty does, but it's extremely useful as it is. However, here's what we want. We want some response on this. If we get some, whether it be a donation or just a note, we will add proposed improvements. We will add color compatibility (it only works in mono now). We will optimize it so loads off a floppy are faster. We will add file compatibility (Degas, NEO, MAC, WAC, PCX, GIF, who knows, the sky's the limit). We will add a hands off scrolling slide show. We will add a file conversion routine. We will add perhaps a print routine. However, if response is nil, we will add just that -- nil. You have now more than you paid for. You paid nothing and got a useful item. As it now stands, the ST shareware market sucks, but we hope you can change all that. Let us know. Here's how. E-mail on GEnie to C.WALTERS1 Snail mail to POBox 45, Girard, OH 44420 ($$$$ welcome) E-mail on CHQ BBS 216-758-0284 to Dr. Bob or Cryptic Wizard A yodel down the mountainside (from experience, this is likely what we'll get). Let us know..... 'Sup to you........ UU(%  ?        _   ?   x  ? 7 @ ? ?  ᆀ 9D   犀" 3 ` @ ?@ ?  󏍀a a  ρ  Î    ? ?  琀Ϗߏ???????㉀xÀ<??>ǀÀ?pǃ??p??8`?@@ԃ? ҃ ????ς?ς?ς?ς ?ς ?߂ x߂?8ς߂_?__?7? 濂 ¿ ???? ߂{}   ?< ~ ? <`???0?? ???|?????< |?>|?`08?8p????0 @3È?<>?37???????; ?0 ?Ͽ23?  8 0   8τ  ?0 >0߀ 00 ??  p7|<@ ? <  @@ ?? ?  0?0 8 3  ;8 1x?<0σÂ~?ςxpp|??? ? ~ GG ?ς~>? ??>?????8?? ??{$??p???? ??炀 ???ςÂ??????>???πDž??? ??|?0?????? ?! ? ?? 30o?߅ ?υ >ϊ ?! ? k kCχ Kψ M , /߅ ?   ?ߋ  { ;燀 ?{      < ? ?          ?         ? ? ? ? ?? =? =? `    _ ?O ?=O ??ϊ ߊ ڊ Ҋ   ӈ S? ?>K? ??K? I? ??????ψ??? ?<|߉??3??ς?Ϗ;ߏ?|σ|Ϗ?爀/߃߿c?Ϗ??Ͽ܇? ϟ??8??ߏ߂σ߃Ї?ݏ߃߃p?߃߂8;??ߍ?ϝσϟς?ό󍈀??q͈????煀|?튀o??Ο7ϊψ?τ o߃?ąσ? ?? ?? ? L   ?7 ?       %UUH0 @ ݗp 0!@  80 @  0}=0`= 0 $->pp0 /0 0 @;?|0@o? 0?P 80p?@~ p0t?0k%00{+ 0 '0@4 ~+|0 C0:O0@y_K0At80@ 0P00+ 0p 0 ` W 0h~0N`<0W0O0@~70@ '0w`0N@0y 0w;N\1AO@0@gX9"` @0  y@ /B0@p!@h1 @0I98?@0q@`L < ~h@30 q 0x=vo6<̆@0P@Ơ |?!On"@0A?p"0 lD 4_?B 0 D r{ @B@# 0p!|'"`!!W2?w0@pdr =Ѐ@p0 ӆ@X1H"@@-0 D!'b/0b_"@0@FFV H}L@|*} 0@0Et>yo2/|+;0R@@A? @$7?0ONN BD\@F70(jS%D`80x`#0` 0w5"a  i0 K_8D:;M |m0 ` /A/}?F0)n@ ?3 g@ |z0Bx@ 22C)eLmeXĄ0s pu>I~2#\P"B`0@$ 8G!8 $؀0bΝ?@_ c8L'@(fH 0 x!x gx' #0`Tl,7OKD 0)3 OdA0@aPO"gw og0G`$Xݸ0`gƝ 04y9:@ w!y0,`5PWP0-<`QB 0vކL?@JX0?ܬg g? N@@@0? H? ?@0 $@0 7~n&6$/0Hb0?$?0TLO5O!0  sN 089L*#"n?0"@`O~ 00?o`0|,@^@0? 3xx00-'00<  m0@_}0{D{0 C?p/ ~}0@P|?p@_00s0`{0si=x0 =p ~<0#:XM 1pu0_#"@A`N;?0#~ @ Ķx<0@d6H0GQ|0$޿| nt0p?Հ(&S :03p10oxH=;Cr0C dk>K0F#l0?@0`0? ^@-|pF0?^@ @0F0ޟ0cM0@0?w]5a{H!0πw<8j D 0`^`I\Tp$0{o$?0vE P 0|3%p&V|` 0!M?[}wh`H0{wl@A!}v0 0[@߁ t80_=灀 n}0^0|?- n[0${[@]`0[@`p / 0?_@Y00?Mp,< @0@m V_?~ 0A2=p 0 $I0ۯ0ʷ0L^N8 p0 n\@00?";y.I& |0|w[>"?0x 0| Gw&0| $*H@0x *Y?0y%?(@(0 @ H̿#@0oA ܔ DF<.8 0Q8?Δp8 ,00?C P 0Ta0xA0tp@N40@) 0@00@8dop@`0o  HTT0`D˻3p@"0?@HM@r00o ?Aޒ C@t 0=`# *bw H1 0`'H X$PH)0WAH"X@@`H05sH 60#$X0=șv`$0xYUx@ 0Vr?査?@ 0Wj<~?r@ _00Vn{?*0+00_~< m@@EP0vX_0DIP0tpxG  <YP0}3# 00c"m<!0z|?eV8`"0vpJ|?uU@p $0G ?pF]U00@0p~7'ET@t0>#鶰TU0.?^G@_H}0^lv UPV O0t> ?  W*0M? "@d 80@ ?H Ph` $0@?B? 8P0@w~~#C@'&0@wH[ԫ|  A0@ ի| J0!0??իxb:70#@/0+AY<$_0'?0?DX+0;p]@0テ`?/d(-z@%0?`/?X߯ 0Ͼ}`Jo@@0#?ߪ'>D@0!8 @0i@H0ށ#g@Y @P` 0ށ@#~g~' P00ށ'|R` ZX0ހx,3|0ހx ;k);8FT0߀ c:0yl0?p``b|B0n ap1L0o1s0 x?d&0o'v!>?#P0_@ ?h0^/IC{7 0^x~?'_@0^ t #7 0|@:g[_0|8p/›@0[ p6%=h 0R: p tN0V5r/ 0Vz?(0^>>p<z 0կ^\<8`$`f>π? @0^8c|"  0P0oɿü>0 @0pi? 0|@O 0@@~7?08@?  0o@? 0k\ ????0_(?0_@{~A0A  =/%@0~> x~_d//Ȱ0^"p}>|O~p_D,@60  x@.p@ 0m~π /үBG0w?0w@`@ 1@Is9'0@ڱ0 @@8 0| >0  /?[0"`~Ӑ0 PW0p0 AC`0@ @;_~+`0@ D7(`0?w0? o @=B0// NB0? ? S0_" W0sw0 9P'0Ȁ0'S0?@@_@8I0 7{0I'@0fjAv0y3!>{00@Ikp0 F#Jz90O$w(0  T߳80Oe8@0C'f-{8h0w o2(0@Gx[v/^0"?=ȗ@0@@@^٭[߸ 00?og7P0@0 A-?w0 ?{m0 ow 00@$ou50:۾0oϟX0D@g.80/xg0@?ny0߿40߿{?7>_0g;/0?ew0  w2C0??ۻ!0@O7߈D0 ;O׶X?`0  _W$?00a @F? +0@} _g 0Ww?[KXDF0@P !3{)a"&0(0X?C|?0`Y@'kzɀ0P$???5B?D0 @0d>_C !? `0H{O|?.DV0|Hy1??⌽$k~@0M?c ^M!5w0?$ud3 ?$G߿0FF?v'o0I}f*??E$\0xǤ5 {@ s=䟉"m0>Df&wO\ľYe0(%Yy?jKg0}"Gq߀e<~ϖ0(ao| p֒QJi0p>|Y_(ɠ01u}k0߈"3uokp0_1ybKe'Tmx0 Gi%400~0O??kܖKw۽0`3'~yA6^ m/ 0@"o:Q޷z0ț @9G??K_/0??0!ߵl)0@?aC9"^4Җ_0Bp?[ goiZ|@ 0C?Sr@>;E;1g0  AӟhD56{!0J C A?Z No]=0t v%~0panj H;^d0€^x-.g00Ž@'d/_08@g  o3~t00r8"a`@ H}_y?h0QG  @ (|@?V0B@`c@A[/0P@&{860{ `<000@ Xj@H֌0Jbh`FAd0= >~ @"08D&/ՀA0?؃P 00>PP08`F !@@0?aE31݀Hs0!G f9@  0PA 3 PP 0O +8t<@TP0NȠ@0ODPo@p0K@?9 0a|H}"P?&B%0? 7?0?  ?  0?<`; |B0>! ??p` C0 >?8?1 0`>8?<FDR0H<q<? @@)0 ? ??)" T+@0 ['! 0`@0Ff@0x`|wB &0` 0D0?7@7X@0 8;9@ 0; [ݤ$!0P >0?,'C~'@0~x X-P009 `'|P 0A -Z @ @@03089 a;DPB01  .A@0 v`$3  @ 0c#@P 0~g@ @0g@08@e1a@@J0x<1 sw@B00`4b, D:T0=,ǠP8?10<x0?`@P0z1 Cx ?B08v CC {0A0`"00@2*q!@0?9< @C0?CTk}8 @ 0{pg(?0`$0C $0>rx! @%0~ |~ ob-0pp xd|Kn0>9xI?w Z @0# 0ǟ=O!Ф0Q׍?٠ 00/|@A0!$0a8?  A0#0|8 @8'Q0x @ 0$8 @ 0₈0?<8` @@8P098 @ z!0?``(0_`F 1`0/C$G 0># /PH 0 q=o L @00b|0?FD"@0pr?oJ#a0@`c`F Dv0l GÌ BE>40  g# @< 0 G  oZ0 1@Jq08<<$0< @0x:_ |p 0 ??Sp0$X  [0~ޏ|O0K*_?<?0JI@ A 0x0!%yь|@!w00P0Cpذqo'00s1??ǀ0 }ua/0` @ǿLbH'0@ql=_0 w n<??0 g t o.L>=0I   D@>?@@0 C }F@0JK /04 KBDO#?0/oׂw>P0~o{|R0)G!T@0PB {t0A"Br ? >00B0>B8GozD0<Oa{εH0 #|J/݇?09 sџG_@uD07oNܟH09F'? ?w0_?0@}p߅'8]@?0ρaP?? 0Gx?O0<;?D'$00?p B?40?Nc O_O0}G-W(@0 `g1`Gb- BSxa?0p $B-Y|'0p" AP ?0. ɿ *}^@0`8?" 8Z~0??ƺÇy00?'R \0;0߁(70C#6P#>aŸ@Y 0" 9Zy0߁ 7~L?Ĉ?@?0 k=s0 @'J W0?}?>q`(@=%` 0? ߈Ch@ A  X0# GȒ? >d?0p6͟0@|A?@`00 ~xP" J ?_x0<I@?PJ:! 0'8d" 0 /"=bd(D 0>#  7"@$! 02 ?? Z?c0XA?L~)( >0@YcCLE̩F/ 0]PFi*L|0 wv8 <{p`" Yd0@h`Pq3 Y@0B@0`3 t0 (8@-H;0D ( ?@@0g0 p`)! 0p?<! ;00%7p@  ̀0A|x87(R `A0\ 2@ 0 7Č 2DT (A80?c#%@D  0 C%Q 00@  ׌30p h?  *%0?paym0*@H0p $BB@p 0K$?@0h*>00.">0 . `ِ APh$ 0@@0x  30 V_" CcK0Ϗ@V9" BG M00tYCGn0 @pq3? GA@0 /$m K@o$N<`0}l.( ~0Xd`)CO<"?0>? #}p0g~~ "{>0<<^ /0`0/>08`1O` 0?08 h p0J0@? ;}#0` 0 0}80|@{ 0 ;p@0 `` 00 0@` x0 0>0 p|00 ?~0 0. L.. IMGSHOW DOC MIMGSHOW PRG Ts====================================================================== ".IMG Slide Show" IMGSHOW.PRG (c) Copyright 1989 Migraph, Inc. All Rights Reserved Version 1.1 1/31/89 ====================================================================== This program is NOT public domain, but may be distributed free of charge provided this doc file accompanies the program. Distribution with commercial applications is FORBIDDEN, unless prior written consent is acquired from Migraph, Inc. ---------------------------------------------------------------------- This .IMG Slide Show program (IMGSHOW.PRG) allows the viewing of monochrome .IMG files on any resolution ST. (Low, Med, Hi & Viking 1) The user has control over speed, titles, slide order and other attributes through the use of an optional script file. You may specify multiple search paths and/or filenames with full wildcard support. * Optional file information about each slide * Black or white background * Cycling or non-cycling slide show * Key pause after each image or controllable time delay ---------------------------------------------------------------------- Script files: ---------------------------------------------------------------------- When the slide show is run, the command line is first checked for pathnames and/or filenames. If found, the slide show proceeds. If not, the current directory is searched for the script file "IMGSHOW.LST". If found, the script file is parsed and the slide show continues. Otherwise, "#*.img" is used as the search path, where '#' is the current directory. When this is the case, the slides in the directory will be shown in alphabetical order and you will be presented with a dialog box to choose display options from. Script files may contain the following fields (all are optional, and can be in any order), default settings are given in brackets. The user should specify 'Y','y','N', or 'n' following the field to indicate whether they would like the option enabled or suppressed. INFO: Indicate whether to show file information [no] TINYINF: Shall info be displayed in a line at the top of the screen or in a box at the right hand side [use box except in low-res] BLACK: Indicate whether the background behind the slide shall be black or white [no] CYCLE: Shall the slideshow start over at end [no] KEY: Wait for keystroke before displaying next slide [yes] SPEED: Value of 1,2, or 3 representing short, medium and long screen delays before displaying next slide [2] The next two fields don't take a letter after the field name: PATH: FILE: The 'PATH:' field consists of a list of pathnames to be searched one after another. If a full pathname is present (ie. "A:\IMGS\*.img"), then that is the search path used. If a path is present without a filename ("A:\IMGS\"), the FILE list is scanned one at a time to complete the full pathname. Wildcards may be used in the filename only. Up to 10 paths may be specified. The 'FILE:' field consists of a list of filenames (and filenames ONLY, paths will be stripped, ie. "A:\IMGS\*.img" will be read as "*.img") to be processed one at a time. Again, you may include wildcards or use full filenames. Field names MUST BE UPPER CASE and MUST CONTAIN THE COLON. Blank lines are ignored and anything after a semi-colon on a line is considered to be a comment. The following is a sample script file: -------------------------------------- ; Sample IMGSHOW script file ; anything after a semi-colon is a comment ; INFO:Y ; show file info. default is no BLACK:Y ; use a black background. default is no KEY:Y ; wait for keypress after each slide. default is pause ; PATH: c:\pics\*.img c:\images\ f:\imgs\touchup.img ; FILE: tiger?.img ss*.img The above script file will display the pictures with file information on top of a black background. Slides will not advance without a keypress. The first PATH entry will cause all .img files found in the "pics" folder on drive C to be displayed. Since this is a full pathname, the file list is ignored for this path. After this, the second PATH entry is processed. Since it is a pathname only (no filename), each of the FILE entries in turn is appended to the path to form complete search pathnames (ie. the first path searched will be "c:\images\tiger?.img", then "c:\images\ss*.img"). Finally, the third PATH entry is processed. It's a complete filename and the FILE list is ignored. ---------------------------------------------------------------------- The Command Line: ---------------------------------------------------------------------- 'PATH:' entries can be entered on the command line of various shells (ie. GULAM, MSH). You may need to enclose your paths in single quotes depending upon your shell. ---------------------------------------------------------------------- Install Application: ---------------------------------------------------------------------- You may also use Install Application from the desktop to install IMGSHOW.PRG as file type IMG. This will let you double-click an .IMG file to display it. ---------------------------------------------------------------------- Keyboard commands: ---------------------------------------------------------------------- The following key commands are accepted while the slideshow is running: SPACE.......... Pause at the current pic, any key resumes (does not pause if key pause is in effect) HELP........... Toggle file info on/off UNDO........... Toggle background color between black and white Up Arrow....... Display previous slide F1............. Show a screen of other information ESCAPE......... Abort slideshow Holding down the left mouse button also aborts the slideshow. Note: Some .IMG files take a while to load and sometimes keypresses won't seem to take effect until after the next slide. Also, keys should not be pressed too quickly after one another or commands may be lost. ---------------------------------------------------------------------- We hope this program makes your use of .IMG files more enjoyable and productive. Comments or problems may be addressed to: Migraph, Inc. 200 S 333rd St (220) Federal Way, Wa. 98003 phone lines 9-5 PST weekdays: 1-800-223-3729 Order line 1-206-838-4677 Product support Online support - GEnie address: MIGRAPH-TECH Category 28 in ST Roundtable `I( t?*o m$m,B"HJgP"&J$YJf"Jg< Af Rf Gf Vf =f Jg#UJB "&J$YJf"Jf&f2B "UpEHB2 r ggSJ"g fB*`B" K#K.I+I/ #K//SA?/ / Bg?<JNA Jf.?<?<N@>NA>?|BWN@>NA>XON ?N=Z?<LNANVH0p?p?NNXO#U(@ R#U/0,Hї #U*TBlBl>,BSGfL0N^NuNV/ 09Xf *yU Up@ Up@Bmp;@*_N^NuNVH *n/ N5TXO>0oS@0@ .gSG`/. 0HЍ/N5POL N^NuNVHN/B?<N1\O~ G l0HA`p0RG`p?NNTOT@3`p3`HnHnHy`HyN1P3Hy`HyHy`N+ HnHn|N1/|KXON)B?<N1J\O3``3``09`R@3`09`3V3V09`333``|09`@H3`09`R@3`~p3`09`H/09`~H/NB`@.N^NuNV/>.0@ .N^NuNVp?N>BgN>HyKN1RPO0. /HyKN16PON^NuNV09Xy?N>p?NP>HyKN1/|LXON0XO09Xy?NP>p?N>HyLN0PO0. /HyL"N0PON^NuNV09^Bg@p?N>BgN>HyL&N0?y`?y.HyL-N0b N^NuNV/09^Bg09Xy?NTO>?p?Nj>HyLAN0PO B?n/9HyLH` /9HyLYN/?G\Op?N$>HyLdN/?y/|LkTON/?GXOp ?N>HyLwN/?y`/|L~TON/?GXOp ?N>HyLN/x/|LXON/j.LN/`XO.N^NuNV09^Bg@Bg?9N(|.X?9N%?ya?yTON(V?nTONTON^NuNV/09^Bg>9p??N'XOp??N(XOp??N(.a?N%4\Op??N'XOBg?N'XOp??N(.X?N%\OBg?N(?ya>N'?nTONDTO.N^NuNV3`09`3a309`3f3^09`3h3`09^Bg 3``By093d3\3aByX3`XByX09`S@3XN^NuNVByaBy09`3a3BydBy\09`3h3`09^Bg2909`A3` 3`09`3X09` yX3X09R@3a3`ay3X09ay3X093f3^N^NuNVp?NTOHyLN,.LN,.LN,.LN,.M"N,.MLN,.MuN,.MN,.MN,.MN,x.MN,n.NN,d.NCN,Z.NiN,P.NN,F.NN,<.NN,2.NN,(.NN,.ON,.O1N, .OHN,.OnN+.ON+XOHnHnHnHnHnHnBgBgHnBgBgBgBgBgBgBgBgBgBgp???p?N&<=@N n.g nfp`B@N^NuNV nYg nyfp`B@N^NuNVPByKByKBnBnHnp/?.p??NA f .;f: NB(Pp=@Hnp/?.p??NA =@ @f> . f`4 .o0.Rn0@nP` . fp=@ NB(P nop=@ NB(P0.gLp?HyOHnPN*\ 0f".VH?NTO0gp`B@3`@p?HyOHnPN* 0f".VH?NTO0gp`p3a`p?HyOHnPN) 0f".UH?NxTO0gp`B@3^B`p?HyOHnPN) 0f".TH?N Gg$0G (\Lg0G (/Lg 0G (:Lfx`xRG|0g,09Kg0 /`HyO0GHhLN'POHyOHnLNPOp?HnLpN?NAPOJ@f|z E+l0E* .gRE` yKlFp?0H*/HyON& 0f$HyH09KRyK /N&POB9VpO?NATOJ@g0gRF0yKm 09Kg&09gHy6p ??9KHyN# LN^NuNVHByKHyON&`XON noV09KfNp ??.N#pXO=@|0RFH @ /09KRyKX/N%POnmp=@p/?NATO-@ yKgNBn y`l p3`Byp3aBy^BByp3Xp3p??9NB?<N"$\OBgN>BgN>HyON%jPOBybByZBypd3`XBg?9NXOBg?9NpXO09Kfp?HyOp=?NAPO=@o ?NTO=@?.p>?NAXO0.fHy?9NP\OBBgN!t\OB?<N!h/|XBWp?NzPO yX#l| yg y ^gRF` y ^f yHnHnHnHn/9XN B?y`?y`BgBgp?Bg/9XN Bg/9XN T\O< Ff yX0(@gp`B@3 yX0(*@gp`p3a yX0(@gp`B@3^B yX0(@gp`B@3X yX0(J@gp` yX0(b@gp`p309Xf& yf 3`X` yf3'`X yafB@`p3aB?<N\O09gN`NHp3OByO3`OByO3`OHy*p?NA\O yKg"0.fp3HyOHyXN"hPO`ByBnp=@><'ByKBn09Kfp3KN-yU-yURGl Bnp=@` yKm~Bn0.gSn0.l09KS@=@`Rn0.yKf09gBn0.yKl~X/NXORn09Kf0.yKm`0.g09KS@>Bn?9a?9NXO0.X/HnN!NPOHnN!TXOS@<0m(0F (\g0F (/g0F (:gSF`0 /0FHhN PO09Pg`09g?N`?NTOHy?9N~/|TOp??BgBg?Hn?<aN09gN2`09agp?`Bg/9X/9`xN/|\Op??BgBg?Hn?9N&p3`Hy`xHy`x?9N2 yo,HyKHy_DHy`xHyZp??9N`$Hy_DHy`xHyZp??9N09g ?NTO`"?NTON n=h=hHnHnHnHnHnHnBg?9`XHnBgBgBgBgBgBgBgBgBgBgp???09Xgp`p"?Nz<=@@fV09Xg 0.@g09Xf 0.g n0(nf 0.hgd-yU09Xg*0.@g 0.@@ n0.@ n@09Xf nBh np1@BnBnBnBnBnBn nH=@H=@(Hn0. |I(r`XHXW PN`hp=@``p=@`Xp=@p=@`Jp=@`N0fH`p=@` ng&0.@ @ f09Xf0.fp`B@=@ np np@ np@ np@X nd 09Xg$N&0.g09fp`B@30.g09agB@`p3a0.g09^Bfp`B@3^B0.gUG`0.gSG0.g~09gN`N0.g By`X`09Xf yf 3`X` yf 3'`X`pd3`X`/.p?NA\ONLN^NuNV0. Sn 0g nRB`N^NuNV . S g nR0.`N^NuNV/Hnp//.N* PO&Hn/. N*POЃ/N*PO&N^NuNV0. Sn 0g nR"nR`N^NuNV/. N&XO0fB@` nafp`B@3P=yK0g&09`^@@3Up3K yo 3OP` yOfp`p3P3pV3wVp3Vp3VA #UA#U n3U3U3U3U09UڰyUl=yU3U3U09UذyUl=yU3U3U?.?.?.?.?.N 0f09Kfx09Pfp?9Up>?NAXO``09KA`0H3U09Kg09KA`x#U`p?HyKp=?NAPO3U @l?9Up>?NAXO3K`TNv09UU=@=yUN?9Up>?NAXO09Pf09Kf?9Up>?NAXOp3`pN^NuNV/ Bg/.p=?NAPO3Uolp??9UBpB?NA #Bg?9UBpB?NA <a@*@/ Hy?9Up??NA 3U0l?9Up>?NAXOB@`~0-H3V3U3U3U3 U3 3`09H3U09`H3U09^@H3U09g09`gp*_N^NuNV09KHA0H/09UH/09UH/09`H/09H/09KHAV0H/0.H/N/@PON/@PON N^NuNV09KHAV0H/09UH/09UH/09H/09`H/09KHA0H/0.H/Nv/@PONl/@PONb N^NuNVH29U=A09U=@AR@3V29U=A09U=@AR@3V0.f`0. g.09Vyo H`pyUS@3U0. g09Vy`o H``p``0. g$0. g09Vyo H`p<?NTO=@y`o H``p`=@0.yVoJ09Vy`o H``p`=@?NBTO<yo H`p<09UFS@3U09Un`~09ǰyVl0?N`TOyVlRG` GoSG0yUS@3UؐyUR@?`0. gl~09`ǰyVl0`?NTOyVlRG` GoSG0`yUS@3UڐyUR@?NJTOyUS@3U`:?9VN.TO<yVn 09UF`?9VNTOyUS@3U0. @b2H0@I^ PN`"|`0.yUH` 0.yU<yUyU0. @b6H0@Ij PN`&Bn` 0.yUH` 0.yU=@0.yUyUByUB@3U3U3U0.yOn09O<yUo yU3U0.yOm09O<yUl09UؐF3U09UؐyUR@3U09UڐyUR@3U09U^@HR@3U09U@3U09UyUyUn09UyUyUnp`B@LN^NuNVByV09UH3U09UH3U3UUByU09UHH@0@PH@3U09UyU09U3V 09UyU09U3V 09UHH@3U3UUyUS@3U3UUByUByU#UVByV09UgNN^NuNV09Uy`lBNb09UyV09Vy`o09UyVRyUSyUn`RyU`?9U/9UN\ONN^NuNV09OyV m09OyV n09Uy`lN09UyV09Vy`o~?9U/9UNT\ONbN09UyVRyU09U԰yUnNyOnF09Vy`o.N09UyVRyU09U԰yUnyOo` RyU`LN^NuNVN$0f?9U/9UN\ONN^NuNV/>.09Um0yVyUl2/. ?09VHa/N yV n -H `/. 09UyV=@?09VHa/N n -H 0yUaaHyaHy?9Up??NA R3U0.Gl(0n3V/. RyV?HyaN> `p3V.N^NuNVH09Vg SyVp`0yVafXHnp?N\O0yVaf4Hnp?N\O.H@3VSyV09VlByV`SyVBn0.yUl"09UHйU#UxyUl0yVaH@gVHnp?N \OH@>g0<`B@H?p0//9UN?GPOBg yU#UG`Hnp?N\O.H@>fRHn?9UN\O|Gd./9U?9UHnN yUU#URF`0U@`/9U?NZ?GXO`hRn`B@LN^NuNVH0><<9Ux*yU(yU:9yU޸yoHGgyUN0f<<R`O0f><RSEfL0N^NuNVH809Pg09U3U3Up3VHyVHyV?9N yo0HyPHy_DHyVHyU?9P?9Nh`6Hy_DHyVHyU?9P?9N` 09UH/09UH/NPO-@09Kg 9UЮ&@`6GBg?9U/.pB?NA/K\O09UH/?9Up??NA *yU /09UHї (@09UHH@0@P09UHH@0@P HF@09U@yU>0fH`SG yOfH0g&HH@HHF@ABxGlRD`HH@HHF@AB` yOf*0gHHAxGlRD`HHA`r yOf,0gHHAxGlRD`HHA`> yOf40g"HHAF@xGlHF@RRD`HHAF@09Kf2Bg?9U/.pB?NA/K\O09UH/?9Up@?NA L8N^NuNVH *np?NNTO: Ef~|`~|2-IH0-@A;@2-IH0-@`A;@2-IH0-@A;@2-IA0-@`A;@L N^NuNVH0IP~ Gl: AP( ,AP)P ,AP)PRG`KP~ GlV/ NXOI 0-@ @ b4H0@Iv PN`$p//NPOP(` AP(RG`~0l,HEPz0HAPz CP$RG`pL0N^NuNVH >. *n 0. |Ir`XHXW PN`p Gl"0HAS0(P*p`H09SP*`2 Gl0HP`*P`0l HPz`*PzB@L N^NuNVpN^NuNV# V:p 3p3Byp33N.&#^DV:N^NuNVpe3ByBy3N.&N^Nu#V2"<V2 <sNBNuNV#V6#V> .Z#VBpd3Byp 3 n 3N.& n 0#VV6#WV>#_XVB#^DV:N^NuNV#VV6#^DV:# V> . Z#VB3 Vpf3Byp33N.&#WV>#_XVBN^NuNV3 V/.N10.N1:XO# V:pm3p3p33N.&#^DV:N^NuNV3 V nT3V n3V/.N10.N1:XO# V:py3p3p33N.&#^DV:N^NuNV/. N10.N1:XOpn3ByBy3N.&N^NuNV3 Vp3Byp33N.&09WN^NuNV3 Vp3Byp33N.&09WN^NuNV3 Vph3Byp33N.&09WN^NuNV3 Vp3Byp33N.&09WN^Nu#Nu#NuNV3a0.@ HI-@p=@ nl$0.HCa nRB@2Rn`/9V^N4XO09aN^NuNV#aVF#`ZVJ#aVN#aVR#VV#VZ#VFV^p ?N1DTO3a09N^NuNVp?N1DTOpN^NuNV3a3 a3 a3a3a3a3a3a3a3a3a3a3 a3"a#$3(a3*ap?N1DTO n,0a n00a n40a n80a n<0a n@0a09aN^NuNV3a# p4?N1DTON^NuNV#p6?N1DTO n 0a n0a n0a n0a09aN^NuNV#3 ap2?N1DTON^NuNVpM?N1DTO n0a n 0a n0a n0a09aN^NuNV3a# pN?N1DTON^NuNV#3 a3a3a3a3a3ap*?N1DTON^NuNV## px?N1DTON^NuNV0.n l0`0. N^Nu"/0<NBNuNVH8*n(M0. H@B@H@Ѝ&@ n d" n c/.?.?. / N6t`?. ?.Bg/0. HH@B@H@Ќ// /.N6// N5 ?.Bg // nNPOJ@me/ ?.Bg / nNPOJ@mbd?./ `?./ / N5 /.?. ?/ N4 /.?." 0. A?/ N4 L8N^NuNVH0*n(n >.JGgH=@0.SGfL0N^NuNVH0/./. nNPOJ@l *n (n`*n(n /./ nNPOJ@l `/./ nNPOJ@l .` L0N^NuNVH0>. SG=G*n ?.BgП(@/ / nNPOJ@l*L?.BgSnf?././ N5 ?.Bg n-HSGfL0N^Nu"o ofJfHHNu"o o fNu o"Jf S@Nu"o oB2/ gSAfJgQHHNuNVHnHyTN7`PON^NuNVH0-n n(PXH> @%g0gP/.? n hN\O`p =@p=@p=@H> G-fp=@H>`Bn G0f p0=@H> G*f& nT=Plp=@0.D@=@H>`*Bn G0m G9n0. G@0=@H>` G.fJH> G*f nT=PH>`*Bn G0m G9n0. G@0=@H>` Glf&H> Gdg Gog Gug Gxf0@> `-@*@p=@0 |K2<`XHXW PN`4 nT=P0.l0.D@=@p-p ??./ N:PO*@`p ? nT?`p`p` n-PX .l .D-@p-p ?/./ N;L `p ? n// N;L *@X`p`p`/ ?./.?N; *@P`fBn n-Pf-|TXX .-@*@g0.m noS`(Bn nT0` n//.N7`PO`n ./0.Hї =@lBn0.fL0.g0 n0f( n -f/. nRH? n hN\O0.Sn0g /.?.` nd /. nRH? n hN\O`0.g0.Sn0g/.?. n hN\O`L0N^NuNVH >. *NB%0<g"0H@H@B@H@ @Kt>`?Bg _Ktg nR` .L N^NuNVH0*n>.IB$p0//. NDPO-@g$p0//. NE&POAKt-n ` n Ktg` L0N^NuNVpL?HyT`p?NC,POp?N=ZTON^NuNVN;N^NuNV/ *n -f,-f?<NGPTO+@f+|>R+|?``j-f2-H?NATO0gTf+|=t+|? -`&+|=t+|>-H?N.*n / N;XO/ ? mN\OL N^NuNV/ KUJY MTe g/NGXO`*_N^NuNVN=,?.N@TON^NuNVH *nRm o/ NH8XO0f ?TfHyTNH8XO -?/--H?NAPOD@;@ @fZ09KH fByK`-Bm `B0- Rm m+H URB@>-g G gP Gg 0`0- f-pL N^NuNV/ *n ?TfHyTNH8XOBm p?Hn-H?NAPO @g,J@gH .f-f8 . f-fB@.`(09KH fByK`-`-p*_N^NuNVH >.*n G f -g/ p ?N>\O @fp`0Sm l"/ N@tXO0f -S@;@ UR0L N^NuNVH >.*n G G f-g/ p ?N?`\O @gZBm -fN/ N@tXO0f@p?Hn-H?NC,PO @f0` 09KH fByK`-pL N^NuNVH >.*n G f -g/ p ?N?\O @fp`l0H/NDXO`"?.NCTO=@m?.?NCXO0.N^NuNV/?.?. rF?NA\O>0f(?.NCTO=@m?.?. NCXO0. `0H/NDXO.N^NuNV?.NCTO @Cfp`B@N^NuNV?.?./. pB?NA /NDXON^NuNVH A#Ul/9UlNGXO0gBUlp 3Kp`?.NCTO @CfzB@9Vc>B@9VbHVb*@SnmSGl^pQVbB9VcHyVbp ?NA\O>mp ?p?p?NM\OpVbB@9Vc>B@9VbHVb*@0Gp H< Ff~` n R RE F ft VbVbVcBUl0`0/. 0.H/?.p??NA >BUl0H/NDXOL N^NuNV/A#Ul/9UlNGXO0gBUlp 3Kp`,/. 0.H/?.p@?NA .BUl/NDXO.N^NuNVH >.0V@ @bH0@K PN`*pP`&pA`"pC`0m*yUJSGmfp`gHL N^NuNVH >.0m*yUJSGmfp` g0. L N^NuNVH >.0V@ @bHH0@K PN*yUJHGg fp`&R` UJ?N@TO`~C`~A`~P`pL N^NuNV .l .D3Kp` .N^Nu"o`C"/jD$jDA`|J/jDJk`JjDNu$/` o$"/A`NNu"o`C$jD"/jDA`, gJ/jDNu$/` o$"/A` NupJfpN∲cd⒒d҂dFN o"`"/ jD$/jDD$@A`" jDNu o"`"/ _$0"@0HAHBЁH@B@ЉNNVH8..P bUd.9U/NHXO*@ Mg`JUf&M #Uv#Ur`& yUf QP&m`(yUQ L&h)M Q@* Ѝ#U(@Q LB)KL8N^NuNVH0~ .\S@,dB`ƙ*yUr gr .gH g @є .*L(Mc2  d @*`* Ѝ#Ur yUr X`dJg @Ѝ*@`*mUrf g#UrRyUz09Uz @e SyUz`X/NEXO/.NF`XO*@SyUz L0N^NuNVp0./NF`XON^NuNVH .Y*@Jf4~0GU|Jg 0RG0@U|H?p?p?NM\O`N@L N^Nu O$X"XHB@Nu o0/L.NuNVH *n-fp`-H?NTO -g-f /-NGhXOB-0L N^NuNVH *nBm -ff >o?/--H?NC,POGf$0m mAf -*+@`+UB@` 09KH fByK`-pL N^NuNVH.. l <`0 f 9`$R @./pH?NA\O,g Ї# LN^NuNV0.H/NHXON^Nu.;DGHab!!!"" ",,,,,,,,,,,,-4-p--\ D94O9U9jX9c9d8e9f9g9o9,r:s9u9x90D70123456789ABCDEFCCCDxDtDp'd.dSLIDE.RSCIMGIMG[3][ Couldn't Find File! ][ SORRY ]fY%c%cK%s fY%c%c.IMG Information: Y%c%c%s Y%c%c%ldbytes W:%d H:%d Y%c%cSize: %ld bytes Size: %ld Y%c%cWidth: %d Y%c%cHeight: %d Y%c%cF1: More Info Hf EThis .IMG slideshow is provided FREE by Migraph. It is NOT public domain, but may be distributed if accompanied by its doc file. Distribution with a commercial product requires consent from Migraph. Touch-Up: Turn your monitor into a fully equipped expandable workspace where you can create and edit hi-res monochrome bit-mapped images. Touch-Up's 'virtual' page gives you the ability to manipulate scanned and paint images much larger than your screen. Load and Save in a variety of picture formats. Don't be limited by your current editor. Order Touch-Up today! Migraph, Inc. 200 S 333rd St (220) Federal Way, Wa. 98003 800-223-DRAW orders 206-838-4677 tech support 9-5 PST Hit Any Key To Continue...H CYCLE:BLACK:INFO:KEY:SPEED:PATH:TINYINF:FILE:*.IMGIMG.IMGfH fY%c%cIMGSHOW.LST*.imgpp@ ?SSSSSSSSSST T TT"T$T&T-T/T1T=TCTFTKTS"                    % SLIDE.RSC.IMG Slide Show V1.1Author: Paul MazurekCopyright ^ 1989Migraph, Inc.Show File Info:YNWhite Background:YNWait For Keypress:YNCycle:YNPause Time:Short<>LongPROCEEDQUIT{NULL} You must compile with the -f option to include printf() floating point! <graf_mouse_3info_page_^ boffset_<_fpinit_<_dtefg_;alltree_Xpathlist_Xvq_extnd_._xprintf_`7klod_write_,Czd_next_plane_Uy_top_ Vgraf_handle_3form_alert_3objc_draw_4rbuffer_Uinfo_B^_stksize_Krs_tedinfo_Py_bottom_ Vfget_line_&vs_linc_Uxdcod_buf_Uptsin_D^scrn_mfdb_D_vr_trnfm_0_getfhtype_Ccrys_if_D1zlr_x_Uptsout_X_time_X`v_clsvwk_-vs_line_Uzlr_y_Uimage_pre_clip_$sinf_global_Z`mono_mfdb_x`sbrk_Iqlinsert_t6vs_pinc_Uzul_x_U_stderr_Tzul_y_Uforce_redraw_`vscan_height_`_a_scanp_rUqexchange_5init__cmdname_pU_fp_Trs_frstr_zPc_indx_Kscrn_width_`vs_next_plane_Ulongjmp_G_aliasfh_Dswid_`key_force_vfix_ext_malloc_PGvbpp_Ugl_hchar_`shit_`coninb_bVcxlr_Uwork_in_`rsrc_load_,qsort_4cylr_Uwork_out_`v_opnvwk_@.XMN_CLIP_Oexit_Z=_setfhtype_Cnull_XTrs_object_Pdest_mask_Ubox2_arsrc_free_-vsf_perimeter_0YMN_CLIP_Odup2_>Afclose_Grs_bitblk_~Pcxul_Uxline_buf_UlldivDllremDcyul_Ufileno_Kblack_ainf_@_fputb_>appl_init_1_aclicksize_U_fputc_`?_stdin_Tcontrol_aint_in_avpat_bytes_Uev_clear_environ_K_stdout_Tint_out_acrystal_4rs_trindex_Srs_imdope_SlrdivDlbuff3_aTO_SCREEN_PlrremDgsx1_&.vdi_&.keyrec_Udigits_tKgsx2_&.chnkfile_Klaunched_Kmin_x4XMX_CLIP_Olaunchee_YMX_CLIP_OvldivDvpix_width_Uasp_x2y_asp_y2x_appl_exit_2sinfo_mation__a_first_vUmsg_|Uvlrem,Emsg_`T_dtoa_;ad_c_^Vxdcod_ptr_UllmulfEgl_wchar_evnt_multi_22get_stuff_ strncmp_ 7fflush_8Hbox_build_filez_Tdup_@bit_mask_Pcopyrit_v_bar_-_iovector_JUvrdivDctrl_cnts_Ichunkfid_Uvrrem&Eiioff_6VlrmulnEvsf_color_H0_start_rs_strings_Pzulxdiv8_Uvdi_handle_yep_ baray_"Vgl_apid_i_ptr2_:1cycle_vlmulE_seterrno_Daddr_in_pname_Sspeed__fputt_?addr_out_zindex_Vgbufstart_Ucontrl_ąsetjmp_Giooff_>Vopen_image_file_ image_setup_"files_Kprintf_F7info_mation_lseek_Apioff_:Vr_image_$form_center_43depth_zUzbuffer_length_Upixel_hight_څsnu_width_vro_cpyfm_4/printi_:init_image_(#close_vrmulEset_mask_Pfill0_6umu_zline_build_`%scrn_planes_ޅstrlen_7_exit_@printl_L;rs_frimg_Pcopy_scanln_pix_dda_J(strcmp_6vdivBEfinit_;pooff_BVc_window_Kfilez_smo_info_vscan_width_vsf_interior_0vrt_cpyfm_/sline_Uvmode_Pgbufend_Uaddr_ filesize_rsrc_gaddr_-W_MODE_Oread_Asortnames_skinny_filelist_dtabuff_*key_init_"v_fbit_image__fpseek_t@sklod_vlsbrk_Hisatty_Ai_ptr_01mrsrc_obfix_p+resident_Kpause_Ximag_Zqmedian_6vpix_height_Uout_line_(vsf_style_0_etv_term_jbp_lU_finish_,=_fginit_                         "  D, 44    R46<  P , ,$                   r4Z$*vFP( LD" & .6*"  "$j:BX<$<T04  & 6&  &(2> 0@  @J$  $LF04$ dLH. q.. IMG_CATDPRG rLIMG_CAT RSC .IMG_CAT TXT  i`@h.`8IMG_CAT 1.00 `a h 4(SB PgSBfBNua h PfNua4(Cg 0A Df 4(`Nuaj4(Cg0A( f4(`6Nu3Z3Z#pZ#Z3Z"<G0<NB09[&y[4Nu0ANu``H pg??<?<NM\` LNuJfSBggRW`SS3I,Nu?< NATJ@Nu?<NATNu*O.|N*m - ЭЭ// Bg?<JNAO K#O p a9N3I*pMa9B3[I&3[I$3ZpNa9 a8?<NNT3I8?<NNT#I4JyI8f3Z#D)[(p4a8`#G[(pna8f3Z#C[(p4a8`PG&|a`#Zt0J@g(g3Z#D[(p4a4`d*|O,|Pa \g BS`PZ yI8g 3Z#D[(p4a4XQZ&yZt0<A( 0< A( ` yZxf a~` yZxf:&|aBCPZza QZz3Z#F\[(p4a3` y Zxf|JyY~gJyP>ga|gb#P>P:3Za&yZt0< A( 0<A( `Kah`shit yZxfdaX&|a6<(|Ga^BCPZ~a QZ~3Z#F8[(p4a23Z#F\[(p4a2` yZxfNu yZxf&|axBCPZa QZ|f\NuH3ZpNa2&|a@BCPZ|QZ~a hQZ|SC3ZxyXtna3ZpNa2@LNu&yZtB*|X|:9Zx6<(MaV3ZxXvNu yAFg*3AFZ#E[(p4a1|g 3AFa J@gNu?<?<NMXNu3I$[83ZpNa13I([8ByYByY09Xv |Xz3Xx3Xx[Ra429YA09Y@ y!g yY y gyYyY3Y3Y<9Y>9YAZXCZd yg&AZ(CZ@ y gAYCZ 09Y@3Y3Y3Y3YyYyY09YyY3Y09YyY3Y09YyY3Y09YyY3Y3 Y09YyY3Y09YyY3Y y!g,ByY09YyY3Y09YސyY3Y yP:JPg*|O,|Ia&N !\fR*yP:,Ia*yP:,|Ya &.f0<yI, QBaxJ9Zf *yP:aJyYfa pRyYP: yf a Jg yO *yO ,|Ia|3I([83 [Ra223[Ra2v3Y[Ra2,3[R3[Ta2h3Y]R3Y]T |Ya/ y!g 09YHyYؐyY3Y`09YHyYڐyY3Y3I([83Y]R3Y]T |Ia/^ yg0< yg0<3[Ra0A]R0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y3I([83[9Y:<<<69YBD y!fBE yg*9YfBCBE y!e><:<<<3I([83 [Ra/^3[Ra/3[Ra/\3[R3[Ta/3]R3]T yO a-J9Zf# PagZ3e Z09Ya *|O,|Za #O09Y~2< y!g2< y g2<R@a X*|O,|Aa*|A,yOa BaX*|Za3I([8a,a+ yP:JPgzByY y$g arJ@g0?Y .pA demo of The Amazing IMG CAT, from \/\/iz\/\/orks!qPG*|O,|Pa*|O,|I:a~*|AH,|Yan#P>P:ByY~ByP>TyXt<<MXzB&<3[Ra/f y\Rg&Jy\RgA\R9Xt6(MaRAQByZxa@ByZ yI8g PZ&yZt0<"A( AY49Yv"<c8Hx0IQAY49YQ29Y3Y29Y 3Y89YDyYAY69YaADaADa`01C1C 1C1CNuBB69YCAZ pr0QCQAYCZ( < 6yYyY2Q49YyY69YCyYyYAZ@pr0QCQAZX69YyY01C1CyYyYyYyY1C1C1C 49Y69YCyYAZdpr0QCQ&|a yO #21 yZg #236<!(yO a09Y|f0<|*f0<,|wf0<xa6<#(|Oa09YȰ|f0<|*f0<,a6<$(|OadNuJ9ZfH*|Awa"LNu3I$[8H#[(p6a&L[3Z3Z3Z3[3[3[3[3[3[ p3a&0@D2AEJ9Z~fNJ9ZfD3Z3Z3Z3[3[3[3[3[3[ p3a&:#[(3Z3 Z3Z3[3[3[p*a&QZJ9Z|fHaLJ9Z~fJ9Z|f.J9Zf$J9ZfJ9Zzfa*|Aa#[(3Zp2a%60@D2AE3Z3Z3Z3[3[3[3[3[3[ p3a%HJ9Zzg"|g@|g8|&g0|g,|g J9ZfJ9Z|gJ9ZfaB0A (f |fJyZfaLQZ|QZ~Nu3Z3Z3Z3[3[3[3[3[3[ p3a$nNu&yZt8<y6< 8a6<89a6<89a6<89a6<89aNu&yZt6< a馶|f By`36<a36<ax36<aj36<a\3Nu?</<I?<=NAP3I2k?<?9I2/< ?<BNAO kn/<Zp/<?9I2?<?NAO kN?9I2?<>NAX09Zpa*|O,yO a| x 09Zra*|Oa\BNu By[BBy[@3[8[F3[<3Z[R3[T3[V3[X3[Z3Y]R3Y]T3Y]V3Y]X |I"|[\BRRfX3[@"<I0<sNBNuHAOBB30OaLa.aZa&ahaava2aJgBLNuA0<0f JfNuRNur|'e @'RA`Nur|m @RA`Nur|dm @dRA`Nur| m @ RA`Nu*|O,|Oa?</NAT#O3ZpNa!` yO B#O[(#[,pZa!B3[ZJyZf`B&yZtBCPZ~a*|O,|I:aNN \gS`R*|Aq,La0*|O,|Oa JyZf ?</<I:?<NNAPJg*|O,|OapNu*|I:,|OaByY~`?<ONATJgB`ZRyY~ yY~gH*yO,LaN y I,g RyI,jBa*L J9Zfa&`BTB |P>CJQg:l,~YY*H,yO a$*I,Ha*yO ,IaAA `Jf(|P>JTgJ9Zf a*LaI`"|A     09Y~a$*|O,|Aa *|A,|Da|B@Nu |@ByI,yI,<zf09I,|zfNua3I$[8 3[Ra"3[Ra"3[Ra!09,y03,]R3]T3]V3.]Xa $ 3Z3Z#Zt[(p6aL[HZD3ZE yI8gE3RZ383Z090H3409ZyZĐyZ3Z09ZyZƐyZ3Z09Z@H@ Az09Z@ H@ Ay.<,?$|>"|]RBYBY2Z2Z22Z2Z23[R#[H#[La Nu( R ```Ǽ?``` B@ `*B@`;B@`B@`?BG`! B@`0B@ ` B` ,B``b?``q`@ `@ `@ '``91`@(.`@8`@$A?x``ٟ !`@O-`@ <6` @?`0~O1`8jI`> 0(xOXH`a`RoxS` i xT~<`?`~~`fw8`-4`>{0`m G` O`Y/_P?`x<d (_Ē?`h`*HA?`( 8 @C`0 ` Y ` ^@#T<`H{;` a@k{?`?a%S _8<`?;!Cv `#;>8`c@72̃x`w`^ !`?B>1 B`?/ `8=by`<L> !I`x>( ? `A`N ` @?`h` <%_``Z`>"!``" #`@  P`"Hax`d/`` $ ?`y`p0y{@`nj````\`wp ! `ǀ{0`B? 0`A}0`@ `Ј H@``(GAx`$  tS`$$! {`` @X!@x`@ ~i@`@[x`@ |B`h<@`@|0`|"`w0`<@ `D @,A$ `AD`! `!@` C``")``@ zA``~; ` ; ` `, `.B`Gx`d`> >??`OOp`!` `<`r c` 0 "O?`N(n` "`` P% ```8B``Ѽ`B`#`p``0b~@@ `@ ~  ` ?`#<`  ` ( `0  `@ M@`@`@  @`@*  @`0 @`{}@`>/` ?@``@```````` 0a(xOXH i xRTo~xS<?~~fw-48>{m G0؁Y /_PO?xh<`d *H(_Ağ??( 8 @0 C ^Ё @#TY < a@kH{{;???a%;S!C _88xw?B`^> 1 !B8=b?/y <Lx>> ( ! ? IA `@?N h`Z` <>%_"`!`@"  P #"Hd/ax`y` $p 0y?{@``wp !\ ǀB{? 00A@ }0`( HG@Ax$ $$! t {S` @@X! ~i@x@@@ [|Bxh@<|0@w0`|"<@ D @,AA$ D!  `!@C``@") zA~;  ;  ,. BGxd> >O?O?p!<`  r0  "cO? N"(n P% `8B`Ѽ#`B`p`0@b ~@@ ~   #/}@ ?@@޲xx((  <`<`ss  0p0p00CC0011ss}} 0808Ç0c0c220000Ü0c0c  0033``oo >x>x00À338p8p,<,|Z?nIMAGE CAT 1.0 Copyright 1989 Chet Walters All rights reserved. LEGALESE..... This program is *-NOT-* public domain and is intended for donators only! Thank you for your donation. Make it worth your while and keep this in YOUR library. Back it up in case of floods or hurricanes and save the original. For free updates, you'll need to send back the original. Use the back up! LEGALESS...... Use of this program is the owner's responsibility (that's you). If you want to put 700 image files in one folder on your harddrive and fry your printer, that's up to you, it's not my responsibility. However, to safeguard against that, IMG CAT will only print up to 150 image's at each punch of the CATALOGUE button. Period. That's the limit. You can select and print as many paths as you please during any one session (thousands of files if you want to), but you can't access more than 150 image files from any one path. It's recommended that you limit any path to less than 100 images and then print several paths which gives the printer time to rest and cool. Don't tax your printer. Those babies wear out quick enough. Make sure your ribbon has enough ink to keep the pins lubricated. If you have an HP Deskjet, no sweat, but those carts are a bit on the expensive side, no? Laser printer? Well, I don't have one to test with IMG CAT, but I bet they can get pretty hot after a long session. Keep an eye on your printer! BRAGGING..... With the advent of Touch Up, scanners, Dr. Bob's MVG and the like, many folks have opted to store their bit graphics in DRI IMG format. This is nice. It makes it possible to store graphics in compressed form and let's one work with images larger than the actual display screen. Ideal for DTP applications. However, up till now, there has been a real vacuum in the Atari community. That is, a way to effectively catalogue and easily reference those very bit images. There are currently no real slide shows which will let you quickly page through a set of IMG's so you know what's there (though Dr. Bob's MVG comes real close with it's QWIKKIES feature). It was really up to your failing memory (grey type) to know whether that XMAS01.IMG file was the one of the wreath or the one of the Christmas tree ... or was it the one of the Courier and Ives winter scene that you liked so well??? Yeah, yeah, I know, you have it all in a database somewhere. But, geez, in the data base it says 'winter scene' but which one? I had three... Was this the sleigh? Or the mountain? or ??? A picture is worth a thousand words they say.... Well, wonder no more. IMG CAT to the rescue. Before IMG CAT, if you wanted a hardcopy of a set of IMG files, you were forced to drag out Easy Draw, PageStream, Calamus or other DTP packages and laboriously lay out a page of IMG's, name them, title them and then print them. A tough and time consuming job. After you finished the job, you were likely pretty sick of DTP for a while anyway. No longer! IMG CAT will print in various configurations page after page of IMG files nicely laid out in alphabetical order with sizes and names ready for your perusal. Next time you're stuck for a nice graphic to go with that newsletter article about Christmas, just pull out your catalogue and look under 'W' for winter. Since you can put up to 15 images per page, you might even find one that suit's your needs better than the one you were looking for in the first place. And it's all without any hard work on your part. Just run IMG CAT, smack the return key, select a path, and smack the return key again. While your catalogue prints, you're free to pursue other interests (a candlelight dinner with that 'special someone' might be nice here). I've done all the work for you. I have painstakingly written IMG CAT in assembly language so that it's extremely compact. GDOS, the printer driver, the fonts, and those HUGE IMG files require lots of RAM. I've made IMG CAT tiny to accommodate this. I've been able to print 15 image files per page at 300 DPI with only 700K free at the desktop! Now that's efficiency! And with that efficiency comes speed. Your part in the use of this program is very small (the printing takes the time). I meant it that way. IMG CAT is a breeze to use and it's flexible to suit your tastes (more on this later). REQUIREMENTS.... Well, now that the chest beating is out of the way, there is one other thing before we get to the real good stuff. You should know that IMG CAT requires GDOS (Atari) or G+PLUS (CodeHeads) and a suitable printer driver with at least one printer font that has 10 point and 12 point typefaces. That's 'easy'. Migraph (Easy Draw, Touch Up, Super Charger) makes an excellent one for Epson and a terrific one for the HP Deskjet. NeoCept (of Word Up fame) has a good collection of drivers for GDOS too. There are drivers available for most any printer. If you need more info on GDOS, there are several sources and we won't expound on it here. If you work with IMG files, you likely know about GDOS already. If you haven't a clue about GDOS, write CodeHead Software about their excellent and FAST G+PLUS system for GDOS compatibility. The folks there are mighty helpful. CATALOGUING..... I think that's how you spell it. Anyway... You should go through a little preparation before using IMG CAT. IMG CAT will print only the image files found within one path on your diskettes or harddrive. It will not dig into any folders other than the one you open with the fileselector. What you see is what you get, no more, no less. This is not a real limitation. Most folks don't keep more than 150 IMG's in one directory on the hard drive and floppies can hold only so many. Too, as mentioned, this will keep you from turning your printhead into scrap iron or taking a fire hose after your laser all the while swearing at me for letting you do it. So, with that in mind, if you don't already have your images 'organized' do it first. You might even want to make a first run with IMG CAT then go through and sort your images into catagories for a final run (there's a draft feature for HP owners described later for just that). Think about it? Was this possible before IMG CAT? Nope, it was a hard job to get.... wait, this ain't the bragging section..... RUNNING IMG CAT Put IMG CAT and it's RSC file together in the same directory (it need not be the same directory you wish to print). Double click on the IMG_CAT.PRG from the desktop. It's not recommended that you run this program from within other programs which have the PEXEC feature (like Flash or the like). We tweak the system a bit to get the job done and though we follow ALL the rules, there's no guarantee that you won't see some of those explosive beasties if you run this from within. Besides, we need the memory for IMG files and fonts. Programs like NeoDesk from GRIBNIF and HotWire! from the CodeHeads (ie specially designed as shells) and Dr. Bob's Menu Helper should work ok if you have the RAM (Dr. Bob's is ideal here since it is VERY small). As a point of interest, this program was written on a Mega 4 with CodeHead's HotWire residing peacefully and always in memory using many of the work saving features of HotWire! Highly recommended. BUTTONS, BUTTONS, WHO'S GOT THE BUTTONS? When IMG CAT is initialized, you'll see lots of buttons. Unless you've never heard of a mouse, you don't need to be told what to do with them. The button defaulted is the SET PATH button. That's what you should do first. Just hit RETURN or punch that button and the fileselector will appear. Dig around until you have the IMG files you want to print before your very eyes then click on OK or hit RETURN again (you don't need to select an individual filename). The path you chose will be in the TITLE box and CATALOGUE will then become the default button. If you wish to have a special title for this (perhaps you have a collection of animals on a floppy labeled ANIMALS but the title of A:\ for this section of your catalogue would be a bit less than informative) you can edit the title line up to 40 characters (press ESC and type ANIMALS DISK ONE for instance). Make sure your printer is on and there's plenty of paper and smack the RETURN key again. Your work is done! IMG CAT will do the rest. See, that wasn't so hard! Go have that dinner! Once you're done with dinner (or whatever the dinner might have lead to) then come on back. You'll see that SET PATH is once again defaulted and the kitty is waiting for you to select another path to print! SETTINGS and FLEXIBILITY This would be a very poor program indeed if I foisted my preferences on you. Oh, yes, I do have preferences, and you'll see them when you first run IMG CAT plain as the whiskers on the kitty. But they're not etched in stone. We'll discuss each in turn and then tell you a way of saving YOUR preferences so you don't have to click the mouse ninety times (like some other programs which I won't mention here) to have it your way every time you run IMG CAT. ...PAGE STYLE You have three choices. If you've got a 300 DPI printer and like lots of information at your fingertips, then style 15 is your baby. It prints 15 images per page with each image 2 inches by 2 and the names printed sideways (only place they'll fit!). If you've got a 9 pin printer or like more white space on your pages, then style 12 is for you. This gives 12 images per page with upright titles and some white stuff for easy on the eyes viewing. Style six prints (you guessed it!) only 6 images per page and is more or less for those with limited memory. Style six is also a good one for those HUGE scanned images, halftones, and quick looks at a small set of IMG files too. Just click on the icon of your choice. ...ASPECT RATIO You can elect to preserve or ignore the aspect ratio of the images on the page. Unlike Degas, TNY or NEO pics, IMG files have widely varying sizes. Some may be long and skinny or short and fat or wide and narrow. Each image on the page is printed within a fixed area (ie 2 x 2 on style 15 pages). If you elect to PRESERVE aspect, then we look at the longest side of the image, shrink that to exactly fit the box, then we shrink the short side a corresponding amount which may or may not be the size of the box. This way, we preserve the overall 'look', or aspect of the picture. If you choose to IGNORE aspect, the we look at the longest side, shrink or enlarge that to fit and go on to enlarge the short side so the image fills the box entirely. This often has a 'fun house mirror' effect on the picture and I can't fathom why anyone would elect to ignore aspect, but you're not locked to my preferences. ...IMAGE SIZES IMG CAT will print the pixel sizes in WIDTH x HEIGHT above or beside (depending on page style) and just after the name of the image. This is to give you a rough idea of the actual size of the image. If you have a 300 DPI printer, then a 450 x 300 image will be an inch and a half by one inch pixel for bit. Since all images regardless of size print strikingly well through IMG CAT, you might not know the actual extent of the image by just looking at the picture. SHOW the size. If it's 1200 x 890 then you know that it's a pretty darn big image. You can then easily surmise if a particular image is a good choice to import 30 times on a page in your DTP application for making labels (the big ones don't do this well). If you don't want sizes printed, then HIDE them. ...PAGE BINDING This somewhat 'cryptic' option is for the style of the overall catalogue rather than individual page design. If you choose NONE then the page titles on all pages will be printed flush right on the page. If you choose CONT, then odd numbered page titles will be printed flush right while even numbered ones are set flush left for a 'book' effect. The CONT means continuous which further means that the titles will be swapped book style, but there will be no pause between pages. You can then punch and collate with 'page protector' plastic covers for a nice book. SING means single sheet which further means that the titles will be swapped and IMG CAT will wait for you to respond to an alert box between each page. It's not recommended that you print on both sides of a sheet of paper unless it's at least 60lb since heavy graphics tend to bleed through to the other side spoiling the whole thing. But, the option is here for you if that's what you want to do. This feature is there for those who have single sheet printers too. ...BOX STYLE Personally, as you can see, I like dotted boxes around my images. This gives an impression of the aspect of the image, doesn't clutter the page, and keeps the names and sizes relative to the particular image for easy reference. If you like no boxes or solid lines for boxes, then take your pick. SAVING PREFERENCES All of the preferences mentioned above can be saved for ensuing sessions with IMG CAT. In addition to STYLE, ASPECT, SIZES, BINDING and BOXES, the ASPECT, PLACEMENT, and ENLARGEMENT of single printing (discussed later) are also saved. Just click on the kitty's nose at the main dialog and insert your working program disk into the drive from which it was run (fixed media hard drive owners need not worry about this). Your preferences are saved directly to the IMG_CAT program so there's no third file besides the PRG and RSC floating around for you to worry about. If you have a harddrive, this will happen so fast you won't think it worked! But, next time you run IMG CAT, you'll see that it did indeed 'take.' ********* CAUTION ******** There are safeguards to ensure that you can't inadvertently spoil another program file when saving defaults, but you can screw that up royally by poking around with a sector editor into the IMG CAT program file. DON'T and there will be no problems. No guarantees otherwise. FONTS As noted, IMG CAT requires GODS and fonts for your printer. Check other sources for information on GDOS and it's foibles. IMG CAT allows you to choose from up to six fonts maximum during any one session. Note, however, that GDOS requires that ALL fonts listed in the ASSIGN.SYS file be loaded all at once. If your ASSIGN.SYS lists more than six fonts, the excess is just wasted memory. Along these same lines, IMG CAT uses ONLY point sizes 10 and 12. Other point sizes are wasted space too. You might want to write a special ASSIGN.SYS for just IMG CAT which has only the 10 point and 12 point fonts of your favorite six fonts. G+PLUS from the CodeHeads offers a great alternative by allowing you to load ANY ASSIGN.SYS with any program run automatically and this is a boon to IMG CAT. Highly recommended (it dramatically reduced the development time on this program, I can assure you). Note, that if you have limited memory, you should load only one or two fonts. If you're having the problem of 'missing' images on a page (the last two or three are blank boxes) then you have simply run out of memory (RAM type). Set up an ASSIGN.SYS with only SWISS in 10 and 12 points and this problem should go away. Use fonts designed for your printer. Limiting your fonts to 10 and 12 points will also make IMG CAT load and run much faster. DEVICE DRIVERS Presently, IMG CAT references only Device #21 or Device #23 as printer devices. This is the norm (as far as I know) and should present no problems. Make sure your printer driver in your ASSIGN.SYS file has one of these designations. Device #21 is the default for most drivers (EPSON), but the Migraph HP DeskJet driver installs as device #23 for 300 DPI and device #21 for 150 DPI. If you have Migraph's driver, then IMG CAT will detect it and default to device #23 for 300 DPI. Otherwise, it will install device #21. If you have another printer (LQ, SLM) then edit your ASSIGN.SYS file to specify either device #21 or device #23 for compatibility. ***** HIDDEN FEATURE ***** If you have a DeskJet and Migraph's driver for it, then you CAN bypass this automatic #23 install for draft printouts if need be. Merely press and hold the SHIFT key when you double click on the IMG_CAT.PRG and keep it pressed until the choice box appears. You can then choose 150 DPI for preliminary 'sorting' printouts. NECESSITIES IMG CAT needs no GDOS screen fonts, no screen drivers and no META driver. It needs only the printer driver for your printer and at least one printer font in both 10 and 12 point designations. Below is a sample of the MINIMUM ASSIGN.SYS configuration required for Epson 9 pin: PATH = D:\EASYDRAW\EPSYS\ 00p screen.sys ; --START OF SCREEN FONTS-- 01p screen.sys 02p screen.sys 03p screen.sys 04p screen.sys ; --END OF SCREEN FONTS -- ;PRINTER DRIVER 21 FX80.SYS ;--START OF PRINTER FONTS-- ; SWISS ATSS10EP.FNT ATSS12EP.FNT Yours may vary depending on driver and fonts, but you must have device #21 or #23 as the device number before your printer sys file. If you have an SLM 804 then you should enter: 21 SLM804.SYS in place of the 21 FX80.SYS above and: ATSS10LS.FNT ATSS12LS.FNT for the fonts. ***** PLEASE NOTE: If you run with a minimum ASSIGN.SYS file such as this one, subsequent programs requiring GDOS drivers and fonts may not work properly. Subsequent programs may need the META.SYS or the screen fonts and they will not be installed. Using G+PLUS from the CodeHeads eliminates this ASSIGN.SYS headache and allows easy GDOS configuration for individual programs. If you normally boot from a floppy, then by all means write an ASSIGN.SYS file like this one and boot with it to run IMG CAT. Reset your system when you're done with IMG CAT so that 'short' sys gets cleared out of memory. If you have a harddrive then you should get G+PLUS to handle this for you. PRINTING SINGLE IMAGES Click on the PRINT SINGLE button (logical... no?) and you will be greeted with a new dialog. Your installed device and DPI rating (though mileage may vary depending on use) will be shown (though only shown, not selectable). If this is your first visit, then the CHOOSE FILE button is your first choice (if it's your second visit, the LAST file you printed here will be there instead, just click on it to change). Select an individual IMG file to print (yes, Virginia, you MUST select and individual IMG file here). The file will be read and its size will be noted in the pixel boxes. You can choose the default PLACEMENT on the page at the left, the ENLARGEMENT factor on the right and the preservation or ignoration of the ASPECT (discussed above) of the printout before you punch the print button. Note, that if you choose to IGNORE ASPECT, the image will always print exactly SQUARE per the longest side of the image unless it won't fit on the page that way. If you choose an enlargement factor that causes the finished product to be larger than an 8 1/2 by 11 inch sheet (the only page size that IMG CAT is aware of, by the way) then the image will print FIT TO PAGE. Click the filename button (under the kitty) to print another image, change the placement or enlargement of the current image and reprint, or click EXIT to return to the main catalogue dialog(ue??). CAVEATS First, if you have an HP DJ printer, then some of the features of the program will not be available to you on a strict basis. Due to the peculiarities of the DJ, if the printer is turned on when the computer is booted, then it detects as ALWAYS ready whether it is or not. Conversely, if it's switched off with an AB switch when the computer is booted then it detects as always OFF and you must reboot with the printer on to get back the ability to print. There's a complicated fix for this little (and painful) oddity, but it involves inserting a transistor into the centronics plug and I won't detail it here. Bear in mind, if you have a DJ, you are responsible to make sure the printer is on and ready when you press the CATALOGUE or PRINT buttons. Even if you make a mistake here, you have about 30 seconds to right it by turning it on. Also, I've had to eliminate some of the 'hey, is the printer there?' checks within the program for that very reason. The DJ is very TIMEOUT prone so I've had to go to other means described in the next paragraph. IF YOU HAVE A DJ, THEN BY ALL MEANS CHOOSE SHIFT FROM THE ALERT AT SAVE DEFS. OTHERWISE, YOU MAY BE THINKING YOUR CATALOGUE US PRINTING AWAY (the DJ's quiet you know) WHILE THERE'S AN ABORT? ALERT SITTING THERE WAITING FOR A CLICK. Since IMG CAT explores and exploits some of the very dark regions on the back roads of TOS, there is no easy way to abort a print once it's begun. Once you see the 'page 1 of ?' prompt, the system has taken over and the kitty no longer has control. Just about the only way to abort the print is to shut off the printer. In about 30 seconds, TOS will (smartly) realize that there is no printer and will give control back to the kitty. At that time, if you're only printing one page or a single image, then no sweat, just pick up where you left off. If, however, you're in the process of printing 2 or more pages, the kitty will just keep on trucking unless he detects that a SHIFT key is pressed. It would be nice to just check at the end of each page to see if the printer is on or not, but some printers give timeout signals when they shouldn't. If there was a check like this at the end of each page printed it would cause some printers to ALWAYS pause at the end of each page. Certainly not desirable. The SHIFT solution is the only workaround for this, and that is the way IMG CAT comes in its out-of- the-box condition. But, I don't lock you into this. You can change way IMG CAT asks for abort. To do this, you must save your defaults. At that time, you will be asked what method to use. If you're having timeout troubles at the end of each page, then choose SHIFT like the DJ folks. If you've chosen SHIFT from the ALERT when saving defs, then to abort a multiple page print, shut off the printer then count 'oneMississippi twoMississippi three...' until you get to about 15 then press and hold the SHIFT key until kitty asks you if you want to quit. If you've chosen TIMEOUT from the ALERT at save defs, then the kitty will ask you if he finds the printer is off at the end of the page without this baby sitting. This 'kloodgie' aspect of the program I apologize for, but that's a necessity for some cantankerous printers. Scanned photographs and halftone pictures will take on a crossed hatch appearance when they are enlarged or reduced. IMG CAT works great with line art (cartoons, drawings etc) but with these other types, the going gets rough at times. They also use lots of ink! If you need to print several of these, then use PageStream, which has a 'screening' feature to eliminate this freak of nature. The dialogs used here were designed to look really terrific on a monochrome screen. The buttons in the single print dialog, however, might look a little crowded and somewhat off-center on a color monitor. IMG CAT runs in hi and med rez only. Since most folks who fool with bit images use the monochrome, this should not pose a problem. Also, color users will have no 'progress' reports since the icons are elongated in med rez. Since IMG CAT keeps a channel open to your printer the ENTIRE time it's running it requires that your printer be turned on when you exit the program. No beg deal really, and when you consider that this eliminates the need to load the fonts for each path you print, you'll agree that it's a small price. If the printer is off when you want to exit, then IMG CAT will tell you what you need to do. IMG CAT sorts the image names on only the first four characters for extra speed. If you have a series of IMG's named CAT1, CAT2, CAT3 then they will sort correctly. However, if they are named KITTY1, KITTY2, KITTY3 then they will all be together in the printout, but not necessarily in that order. Every effort was made to ensure that the program would run on any size monitor or screen. I don't have a Viking to test it on. The only thing I had was a PD program called BIGSCRN which fooled GEM into thinking that the screen is bigger then the monitor. But that's all it does, fool GEM. It's buggy. My stuff looked ok as long as the screen was 640 pixels wide and 800 long, but wider it looked funny. I think that's the fault of BGSCRN and not IMG CAT. If you have a biggie, LEMME KNOW. ************* DEMO *************** If you're reading this doc and working only with the DEMO of IMG CAT, then you'll quickly realize the limitations of the demo. It will give you a good idea of what the full blown version will do. Support ATARI ST ShareWare authors. Don't make us feel like beggars. Send in a donation of only $10 for a full version. You'll like it I'm sure! Chet Walters P.O. Box 45 Girard, OH 44420 ********************************** If you've donated and are reading this doc then I thank you very kindly for your consideration. I will strive to continue to put out useful and bug free ShareWare. The latest version of FujiDesk is on the disk and if you like working with bit images, you'll want to get Dr. Bob's MVG, a demo of which is on this disk too..... *********************************** For the curious, DEVPAC from HiSoft through Michtron was used to write this program. WERCS from the same was used for the dialogs. If any of you read the plea for a recommendation on a new language to use for writing programs on the ST in the stead of GFA, then know that this is the one. Highly recommended. Many thanks go to Mr. W.D. Parks for his kind assistance and motivation. Thanks also goes to Craig Daymon (Manual Maker) for his 'public' suggestion of exploring the possibilities of using the system to print images. ************************************ You can bet if a company or product was named herein, then it bears a trademark or copyright. Here's a semi complete list of things you'll want to check out if you really want quality stuff.... G+PLUS (****) [four stars if you wondered] HOTWIRE! (****) Codehead Software P.O. Box 4336 N. Hollywood, CA 91607 EASY DRAW (****) TOUCH UP (***) various printer drivers (****) Migraph 200 S. 333rd St. Federal Way, WA 98003 NeoDesk (**) GRIBNIF P.O. Box 3050 Hadley, MA 01305 . `.. `CPMZ80 TOSbCPMDATA DATh`CPM DOCmEMUIO PRGrEMUIO S uEMU TXTx`D)b#.|aa  <"<$<Laa < Ra aZa a P?<NA$RTlxPRra < a aa aa:*|@a aNuNu<gjSgSg^`<g`SgSgT`A<gbSgSgV`A<gFSg`A<0g0Sg`< g`8<gSg`,|*|@BAAA"|C=a J^g=a ^gV"(g=ab` =a ^g<""| 2(h |4< 222$2NuBNu,|*|@=ajJ^g kH=a` ==a@8j&at8ja8=aJ^f===aJ^f==-aLQNuPNu,|*|@=aJ^g kX=a` ==a:j&a:ja2:=aJ^f,===aXJ^f==-aB<f =anJ^fQNuPNuNu <NuVersion 7 for ATARI TOSBB/<?<?<KNAOJk @"| ("\@#@ NuBNuEMUIO.PRG?<NAT ||| Nu yAB@B0 NuaNNuNu 9gPNua2Nu | 9f(/a( _JjN|B92HAJ0gB@92HAABA90RfNuNu9gSgNSgaNu<faNuJk | lBA9IA|A0aNu<YfaNu<bg<cfaNuaNuarNu|H@ | AHhHhHP?<NNONu @"|0<P"QNuHA0<<PQBmLNuH0A2<<fPQLNuH0ABA4<BCf=a ^PRABf=LNuH20ABB6<hfgPRBCf=<` 1mRm=LNuHAB@2<<g PR@Af0<=LNuHA0-BA4hBCP8<RADg:hBc46P`=L?NuH4206AA8==-aJ^f$JAA 1AQ1mRm=<`=<LNuH02IAAJ(g"CCS=(- ajJ^f Q=<`=<LNuH"^B20ЁAA0 f&H?8LHLH,L H XL` 0<QLNuH ^B204JCP ЁCC0f&H8LHLH,L H XL` 4<QLNu |0<r QNuH0=aJ^g,BAAA"|C=a ^g"(g"=<`Bf`=/?<&NN\<a <fa<a<wa<a<EaNu |D0Nu @g /a _`Nu< a< aNuPlease change to CP/M-Z80 disk and press any key Please change to ATARI TOS disk and press any key A|?@00N&46>>>>>>>>>>>>>>>>>>>@HJRRRRRRRRRRRRRRRRRRRRRRRRRRRRR?< NATNu?/?<NAXJ[NuNu/?Bg??<?NAO 2J[Nu/?Bg??<@NAO 2J[Nu/?<NA\Nu?/?<NNAPJ@VNu?<ONATJ@VNuNua2NuNuaNuNu aNuNu1234567890-= qwertyuiop[] asdfghjkl;'`\zxcvbnm,./ -+()/*7894561230. 3!@#$%^&*()_+ QWERTYUIOP{} ASDFGHJKL:"~|ZXCVBNM<>? -+()/*7894561230. @1234567890-= QWERTYUIOP[] ASDFGHJKL;'`\ZXCVBNM,./ -+()/*7894561230. 3  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1234567890-= qwertyuiop[] asdfghjkl;'`#zxcvbnm,./ -+\()/*7894561230. 3!"#$%^&*()_+ QWERTYUIOP{} ASDFGHJKL:@~~ZXCVBNM<>? -+|()/*7894561230. @1234567890-= QWERTYUIOP[] ASDFGHJKL;'`#ZXCVBNM,./ -+\()/*7894561230. 3  !"$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}&{"'(]}!\@)- azertyuiop^$ qsdfghjklm|`#wxcvbn,;:= -+<()/*7894561230. "1234567890[_ AZERTYUIOP~* QSDFGHJKLM%#|WXCVBN?./+ -+>()/*7894561230. 3&{"'(]}!\@)- AZERTYUIOP^$ QSDFGHJKLM|`#WXCVBN,;:= -+<()/*7894561230. "  !"$%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz1234567890~' qwertzuiop}+ asdfghjkl|{#~yxcvbnm,.- -+<()/*7894561230. 3!"@$%&/()=?` QWERTZUIOP]* ASDFGHJKL\[^|YXCVBNM;:_ -+>()/*7894561230. @1234567890~' QWERTZUIOP]+ ASDFGHJKL\[#~YXCVBNM,.- -+<()/*7894561230. 3  !"#$%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz1234567890~' qwertzuiop|+ asdfghjkl[]#~yxcvbnm,.- -+<()/*7894561230. 3!"@$%&/()=?` QWERTZUIOP\* ASDFGHJKL{}^|YXCVBNM;:_ -+>()/*7894561230. @1234567890~' QWERTZUIOP|+ ASDFGHJKL[]#~YXCVBNM,.- -+<()/*7894561230. 3  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~`FCP/M-Z80 Emulator Copyright (85) SoftDesign Munich Release 9.4 Serial number 101011 Atari xyng:Uyk 7FJ1*>3>< upF8&:GA8"k8$G@NqG<՛ <ѭ\g`<:Nu*@,A+_A+H0 B"HE0<2G$Qa @"N0<"Qa @"N0<"Qa @"N0<"QAd"HE<0<2G$QH mNL` @"NBJgEg R<fBA " 4<6<`( 0@P >`nH mNL` @(@hH mNaL`H mNL`Jg @+X4+P8C< a^` A+H4+H8H mNL``.HaJL` @"N0<"QH mNL`HaL`|||||nNu. mNNu. mNNu.- mNNu.- mNNu.- mNNu. mNNuBm mNNuBC-<bABD00<g.-ffH mNL`Jg`??a86`@-<ea`>H mNL`Jg*??a86R-A0CL|:NuBUNu;mNu;mNu;mNu-2-4-B6-֎ mNNu--2-4-B6-֎ mNNu. mNNu0-B2-Ҏ mN:Nu`-2-4B6-֎B8-؎ mN:NuNuA<2<QB-Nu @|BN|4ChBB<|^2<N|^2<N|^2R<(^(VxlFD Pc<><Gc<.<毼Gc<Pg>< (nH2arLSF^2:(<SF^2VEMDm|nFF2J(fBF`<(VFN|@c<<@^2<(^2Nu?Af a<Aa@A aNu??AB a0<AaAM a0<0aAC aNuך," ֭_/Xq UrHA@ aAM aL @/H@a$< aLSAfA3 ad _0a&AP aP mNm-dk6$}}šuQ#=M\$<K+A$prfԘ`QTQ+B <ѭ``|A0A Nu`SrA0A Nu`_`A0A Nu`mN/aA a0<aA aaA a0<a a|aA an0<aA a^alNuAHz|0H arL0QNuA"8z\|0H aLL0QNu0123456789ABCDEF @g/a( _`Nu< a< aNuJg?0< a0S`Nu.H mNL`Nu Emulator warning => Drive : cut to MByte ! : not logged in - too many drives Emulator error => Illegal opcode : at address : Emulator I/O driver installed Emulator exit ,@*A"Nļ$NƼG*I aa?BBBBBBBB@23N  4Dh$8Hl2Vfx ,Pbd 0Tl"6N\|  0 @ R ^ p  , @ P b t   $ 4 F T f x   , > R z  , P t $Lt<`6\x>f ":Tj 8Ph.Hbz6P $Rd4Jx2^*Pn4H^|<Nf"\>L@23NYY@23N2-@23NRm@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NU@23N-A-A-A-mA-A-mA-A2<-;A@23N2-UU@23N2-6@23NSm@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NU@23NS-gH@23NR@23NYY@23N2-@23NRm@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NDU@23NH@23N2-UU@23N2-6@23NSm@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NDU@23NJgR@23NH@23NY@23N T@23NRU@23NRYW[<W|@23N<WSYW[Œ|@23N@23N<<JFk4< b<g\<bJgN<`P`F\<bJg:<`P`2< b<g]<bJg<`P`]<bJg<`PJ[W@23NJfR@23NH@23NU@23N Tv@23NSU@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NFx|@23NJgR@23NH@23N TE@23N T@23NR@23N2R6YW[6<W|@23N26<WS6YW[Œ|@23N2@23NP@23NJfR@23NH@23N" UU@23N T6@23NS@23NRYW[<W|@23N<WSYW[Œ|@23N@23NF@23N@23Nm@23Nm@23Nm@23NU@23Nm@23N2v@23NG@23Nm@23N@23Nm@23Nm@23NU@23Nm@23N2v@23NG@23Nm@23Nm@23N@23Nm@23NU@23Nm@23N2v@23NG@23Nm@23Nm@23Nm@23N@23NU@23Nm@23N2v@23NG@23N@23N@23N@23N@23N@23N@23N2@23N@23Nm@23Nm@23Nm@23Nm@23NU@23N@23N2v@23NG@23N2@23N2@23N2@23N2@23N2@23N2@23N@@ u\| $Bbx,@\x n n n n n n n n2Nj(<Nbx  ( < P d x   ( < R d x   * > R d x   , > P b t   . B X j ~ 0DXj~2DXl 2DXn 2FZn 2HZn  4HZn "4H\p"4H^p"6J^p-[WUA@23N-[WUA@23N-[WUA@23N-[WUA@23N[WU@23N-[WUA@23N26[WU@23N[WU@23N-[WUA@23N-[WUA@23N-[WUA@23N-[WUA@23N[WU@23N-[WUA@23N26[WU@23N[WU@23N-[WUA@23N-[WUA@23N-[WUA@23N-[WUA@23N[WU@23N-[WUA@23N26[WU@23N[WU@23N-[WUA@23N-[WUA@23N-[WUA@23N-[WUA@23N[WU@23N-[WUA@23N26[WU@23N[WU@23N--[WU@23N--[WU@23N--[WU@23N--[WU@23N[WU@23N--[WU@23N266[WU@23N[WU@23N-[WUA@23N-[WUA@23N-[WUA@23N-[WUA@23N[WU@23N-[WUA@23N26[WU@23N[WU@23N- [WUA@23N- [WUA@23N- [WUA@23N- [WUA@23N [WU@23N- [WUA@23N26[WU@23N[WU@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23NJ-Z@23NJ-Z@23NJ-Z@23NJ-Z@23NJZ@23NJ-Z@23N2J6Z@23NJZ@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N< B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<@B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23N *Xz "B bn Hv ( Bb   :d J z "X  ( ^ -H~ m4NL~r@[WB@@23N--H?H~ m8NL~LrB@@23N4-2B[YUJAW:@23N T@23ND[WYU<VČ|@23NG@23N-H~ m4NL~r@[WB@@23N-H?H~ m8NL~LrB@@23N4-2B[WYU:@23N Tvv@23N@23N-H~ m4NL~r@[WB@@23N--H?H~ m8NL~LrB@@23N4-2B[YUJAW:@23N T@23N-[WQ@23N-H~ m4NL~r@[WB@@23N--H?H~ m8NL~LrB@@23N4-2B[WYU:@23N Tvv@23NHI@<[WQ@23N-H~ m4NL~r[WB@@23N-H?H~ m8NL~LrB@@23NHVWVV:@23N2_6_B_@23N-H~ m4NL~r@[WB@@23N--H?H~ m8NL~LrB@@23N2A[WYU:@23N2_6_B_@23N$ 2B[YUJAW:@23N TA" Y@23N-H~ m4NL~@rBG[WB@@23N-H?H~ m8NL~LrB@@23N$ 2B[WYU:@23N TAE@23Np02-RURmSmVB@@23N26[WRUSmVB@@23N-H~ m4NL~r2RUS-WB@@23N-26H~ m8NL~rRUS-WB@@23Np02-SUSmSmVB@@23N26[WSUSmVB@@23N-H~ m4NL~r2SUS-WB@@23N-26H~ m8NL~rSUS-WB@@23Np02-:-SER@RAQ:;ABmBEB@@23N20-S@SARA6W[WgR@J@VRA:;@B@@23N-H~ m4NL~r2RUS-fvB@@23N-26H~ m8NL~rRUS-fvB@@23Np02-:-SES@SAQ:;ABmBEB@@23N20-S@RASA6W[WgR@J@VSA:;@B@@23N-H~ m4NL~r2SUS-fvB@@23N-26H~ m8NL~rSUS-fvB@@23N Ur m0NA+H A|+H(A +H,Nu,@`p "8Rl :Rl$Tt*@V2-mU@23N2-mU@23NYY@23N T@23NRm@23NU@23N Tvv@23NSm@23NHmR6YW[6<W|@23NHm6<WS6YW[Œ|@23NHm@23N" mU@23NHmv@23NHmv@23NHmv@23NHmv@23NHm@23NHmv@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm6@23NHm6BF[WYUƱB@@23NHm6BF[YUJWñB@@23NHm6|[WYUƱB@@23NHm6|[YUJWñB@@23NHm6[WQB@@23NHm6[WQB@@23NHm6[WQB@@23NHm6[WYUB@@23NHm m,B@@00NZZB@@23N--ZRB@@23N--B@@23N2-CB@@23N2-EB@@23N 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2,@` 2 2 2 2 2p 2 2 2 2 2 2 2 2 2 2" 2 2 2 2 2 2 2 2 2 2 2 28 2 2 2 2 2 2 2R 2 2 2 2 2 2 2l 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 :R 2l 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2( 2 2 2 2 2 2 2X 2 2 2 2 2 2 2x 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2. 2 2 2D 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2Z 2 2 2 2 2 22-mU@23N2-mU@23NYY@23N T@23NRm@23NU@23N Tvv@23NSm@23NHmR6YW[6<W|@23NHm6<WS6YW[Œ|@23NHm@23N" mU@23NHmv@23NHmv@23NHmv@23NHmv@23NHm@23NHmv@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm6B@@23NHm6BF[WYUƱB@@23NHm6BF[YUJWñB@@23NHm6|[WYUƱB@@23NHm6|[YUJWñB@@23NHm6[WQB@@23NHm6[WQB@@23NHm6[WQB@@23NHm6[WYUB@@23NHm m,B@@00NZZB@@23N--ZRB@@23N--B@@23N2-CB@@23N2-EB@@23N<\|,BXn"6J^r6[WUB@@23N6[WUB@@23N6[WUB@@23N6[WUB@@23N66[WUB@@23N6[WUB@@23N6[WUB@@23N6WB@@23N6WB@@23N6WB@@23N6WB@@23N6WB@@23N6WB@@23N6WB@@23NJ6ZB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N Ur m0N Yr m0NÈÎ2X21y2 O:ڷ(J:X y( :<2X1:_ͩ:A>:̀:ڷ(!"|r;(!{(:'($:( :'=(_O:2!_~#fo!H~G*|r=(#"|:I :H %(x(({G:( :' (x(-({G:( (x(&!I(  !(I !"i-ܷ !' > q#  Si!( I - x !H'  >' >!H#K >!'"oܷ͢ ܷܷ(>H[o˃ ݯ[i!"k'ѷ *k#"k!!٧R0گ[i*k|( Hѷ *k+"k!ٯ >>! j? A:w+>2q2q{!"x"v!"r!(~ >? w#>?2325:'(=_"m'(2q:q! /z [*x#"x{ *x| > 2z!"tͳ|( ͳ|( 06*x~!ͼ*v=~!ͼM=~!ü!Kry x(  # !*m#[r ~͑Sr*m~͑ w#4  ~#(  ~##( y[tKr`iR! (St: > > K ^#V*v"v=~>K:z<2z*m~G)*mNF!~ # x( 0#{ !ͼ_Y' > q#K:'w' {('({ '!~ ѷ(o{(:( (' > &)|("'(>  +'{(!'7*|r=(#"|{(!':7( ~27 ~(:7w' > 7(> '(⇇W:2*0!0~ (6C#6O#6M'  '('ѷ !!ڧR0> *|!\~!l~2|~# x2:X(O(A:=2 / ("!!6#5!ͼ  !F(#~a8{0_w#p!X~6ɷ=O!* ~#foͼ*~~ ( (#>?ýڷ (!,.:;<=>[]~ #!'6*|r"~(@G:(p.(#6"| #~?  yL(#* 6?wL#6 !y ( # y7# {'( (!0 ((o ()DM)) |(}~#>.~#ɇO!  -`ix > { 00:8>1 ~#> > _(! 6! 6! 6! 6:_ l&!A}g R06BJ\wFile existsNo fileProgram too largeSource same as destinationDisk fullDirectory fullAll (y/n)? Files,K Bytes,K Bytes freeCOPYDIR DIRSERA EXITGO REN SAVETYPEUSERH>7yKj $$$ SUBCPMZ80S{2!"s122!Sy)Ko&)F^#V*17Y_ds\aPlu{0!ffB!0O(U_A JR >I ![O(#_A R !!~:A2,ffCPMZ80 Error on drive : $Bad sector, (R)etry (A)bort or (I)gnore ? $Select failed, (R)etry or (A)bort $File is read only $Disk is read only $:{ %   (!z~/w2{>  Oc!{~6 y  :x ͤ :z!xy 84 ~5 6cy<(< !{~6cn c:c!qKB $O*##"|2~:x2y (  !z~/w :x!yOF*|w#"|!~4 0 (^@O :~ O*:~…*#:~w :~=2~G*|+"|~ 0& !(+~ 0 ( :yOyDO  ͤ>"2>:O| * ^#VS#"##"##"##**|!6(6*w#w*w#w'*  **  *""K*^#V*~#foyx0*{_zW+*8 yx8#[DM*s#r*s#ryOxG[0MD!!F:O>G:(* :(n& ^#V\Ow"*}:*)= ":O:o"* *!~2~2ͽ:2: O:w:w < ):O! yoxg*:O}K"U ~*"* *:o$*~`6`w[*{#zvr+sR[*͌[*w[*͌0v0[*(>ɯ*#͑!!N#F$*[!~#(: #~$ =2͓̓:c:/GyO>2!q*"͹(R*(v0BU:Oy($?(x ( ( N% # :2!~Яw>cK 6;U6͓KPYy( _0*{z0BK_0<͍y ! * UK 6*~w; K 6 K6ͽ~U[ o! N!Fwyx(>8>*w~#+w#w+ɯ222"`6U * :(~ w ~ 5͟͟ '# ! #  8 w ~>2!5K*!"6"! w##w#̓ o2ͭ* ~<w( G:!( $ 4~($6 :<(&( gcgo>2>2:!8 !X2: ͏͜( ͢g>22K*>:g͏͜ C\2(O wDM} >c"* ::([sO s#r:͢:== 9y== 2*w#*"*:G# ":!8w4`w : X!~ =262[!!~~#~O~G#n,-. W! w! y !x(4ͭ.:<(*! q!p^:< . (&.:<(c`6}2o̷N! ~态OxG~G!~G} 6*!r#r#r( U}_y#x#{8s+p+qK* }!!q#p#w:!w*:OE(kkK">2*~=20:2~2w:*w!"":2!"i$^$í~?(ͽ~?i$6*"$K$ͯ$ò$i$&$#*:c"**$H*": :c2$k$t$ê*}/_|/*W}_*"}o|g"$>2:(*6:( w:2{*}D9>CFILORUX[^adgjmpsvvvvvvvvvv v v v v vvvvvDIR A:DIR B:DIRS COPY TYPE ERA REN SAVE USER EXIT SCOPY TOSDIR TOSCPM CPMTOS TURBO MBASIC DBASE WS MP ZORK1 D<<^p$,  " ",b6>Z `NNNNNNIyp NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNyCPMZ80 APP?BINIDSK COMTOSCPM COM 1'!'!'D O w  '!'':\ >ɯ'!9 (( '>' :\=O} >$!'(>D! #!~ #t~ #>:\=O} >D$!*(>ɯɷ=O! ~#fo'(L_o~#2> 2> 2_(CPMZ80 APP?BSoftDesign CPMZ80 R9.4.7Disk initialization utilityInsert disk and press return Disk initializedUsage: INIDSK Drive select errorDisk read errorDisk write errorDisk is not emptyAborted4̓ :>"C=~w|21=m-x¯*C=-#~µ~@ w#s#r#*=rrorDisk read errorDisk write error1 ͪ!ͪ͟!ͪ͟>!r'>!'͖ a!rO(>Q K7!="(>8!J(> +2ͦ :(!g(> ͪ!>͟qͪ!s>? ( ! >:s : >:r >!s : : >!s :ɯͪ! ͟ͼ (( ͪ> ͪ * Rl&j"~#0:A>:~# (O͠ &y>.~# (O͠ y\*)))))))[!  1l&j"[R2}D <=(q#>! Kx(  > >  !\!l !! 6! 6ɷ=O! ~#foͪ͟N}!0CTj~#͵> ͵> ͵_(vSoftDesign CPMZ80 R9.4.7TOS to CPMZ80 file conversion utilityInsert source and destination disk and press return Conversion doneUsage: TOSCPM Ambiguous file specification not allowedInvalid TOS file specificationInvalid CPMZ80 file specificationSource drive same as destination driveTOS file not foundTOS read errorCPMZ80 write errorCPMZ80 disk fullCPMZ80 directory fullAbortedKLNo Fatal error(s) Warning(s):=Gͩ./!//)ô/REPT/IRP/IRPC/MACROUnterminated /!//)> Z> Z:@<> J> J!/:@<(s) Warning(s):=Gͩ./!//)ô/REPT/IRP/IRPC/MACROUnterminated /!//)> Z> Z:@<> J> J!/ CP/M-Z80 EMULATOR OWNER'S MANUAL For Use with All ATARI ST[TM] Computers PLEASE NOTE Every effort has been made to ensure the accuracy of the product documentation in this manual. However, because Atari Corp. is constantly improving and updating its computer hardware and software, we are unable to guarantee the accuracy of printed material after the date of publication and disclaim liability for changes, errors, or omissions. ATARI is a registered trademark, and ST and TOS are trademarks of Atari Corp. CP/M, CP/M-80, and GEM are trademarks of Digital Research Inc. WordStar is a trademark or registered trademark of MicroPro International Corporation. CP/M-Z80 Emulator was developed by SoftDesign in conjunction with Atari Corp. Copyright 1986 Atari Corp. Sunnyvale, CA 94088 All Rights Reserved. TABLE OF CONTENTS INTRODUCTION What is CP/M and What Is the CP/M-Z80 Emulator? How Well Does the CP/M-Z80 Emulator Perform? How to Use This Manual CHAPTER 1 GETTING STARTED Backing Up the CP/M-Z80 Emulator Disk Loading the CP/M-Z80 Emulator Backing up the CP/M-Z80 Utilities Disk CHAPTER 2 CP/M AND CP/M-Z80 EMULATOR COMMAND SUMMARY How to Enter a CP/M Command CP/M File Specifications Command Summary Conventions CP/M-Z80 Emulator-Specific Command @ CPMTOS DDTZ DIR EDTKEY EXIT INIT READ SCOPY SETKEY TOSCPM TOSDIR Standard CP/M Commands *ASM *DDT DIR *DUMP *ED ERA LOAD *PIP REN SAVE *STAT *SUBMIT TYPE USER XSUB CP/M Control Character Summary CP/M Filetypes CP/M Messages CHAPTER 3 CP/M AND CP/M-Z80 EMULATOR TECHNICAL REFERENCE Emulator Implementation Emulator CCP Implementation Emulator BDOS Implementation Emulator BIOS Implementation Emulator Performance Emulator Interface to User I/O General Restrictions Notes on CP/M-Z80 Emulator I/O DRIVER Conventions CP/M BDOS Function Summary * Not included with package. Copyright Digital Research @1986. INTRODUCTION WHAT IS CP/M AND WHAT IS THE CP/M-Z80 EMULATOR? Every computer requires an operating system. A computer's operating system is a set of instructions--a program--that supervises the running of other programs on the computer. Your ATARI ST Computer has its own, unique operating system--TOS. You load TOS every time you switch on your computer. Once TOS loads, your computer is ready to run other programs. Any program designed to run on your ST Computer is running under TOS. CP/M is also an operating system. It's different from TOS. A program designed to run under CP/M will not run under TOS, and vice versa. However, the CP/M-Z80 Emulator program that you've received on disk makes TOS "think" and "act like" (i.e., "emulate") a CP/M system. Without any additional hardware or software, the Emulator program transforms your ST Computer into a complete CP/M-80 system. This is a great advantage to you because CP/M has been around for a long time. As a result, there are literally thousands of programs available that run under CP/M, and so will run under the CP/M-Z80 Emulator. HOW WELL DOES THE EMULATOR PERFORM? The Emulator is a complete CP/M-80 version 2.2 compatible system environment. It provides realtime emulation of all Z80 instructions over the full 64K addressable range. The Emulator runs all CP/M-80 compatible programs and accepts all standard CP/M-80 version 2.2 commands. Some minor errors in version 2.2 of CP/M-80 were corrected, and some additional system commands were added. The Emulator runs average CP/M-80 programs with the speed of a 2MHz Z80 system, but performance will vary according to the particular program. One major variable will be the frequency of a program's disk access. Programs with heavy disk I/O may run even faster than on conventional Z80 hardware because the Emulator fully exploits the disk speed of the ATARI ST Computer. On the other hand, programs that perform extensive arithmetic computations will most likely run more slowly than average. HOW TO USE THIS MANUAL This manual is not intended as a CP/M operator's manual. Rather, it provides only skeletal information about the CP/M operating system. You are encouraged, if not already familiar with CP/M, to obtain a CP/M reference book. There are many excellent CP/M books on the market. The following summarizes the contents of this guide: Chapter 1, Getting Started, explains how to load the Emulator into your computer and have CP/M resident and on screen. The chapter also explains how to back up the CP/M-Z80 Emulator and CP/M-Z80 Emulator Utilities disks you received. Chapter 2, CP/M and CP/M-Z80 Emulator Command Summary, provides you with summary explanations of all standard CP/M commands and all non-standard (CP/M-Z80 Emulator-specific) commands, according to the CP/M and CP/M-Z80 utility files you received on the CP/M-Z80 Emulator Utilities disk. The chapter also provides a summary of CP/M filetypes, control characters, and messages. Chapter 3, CP/M and CP/M-Z80 Emulator Technical Reference, presents some technical information about the Emulator and how it works. This chapter is in part geared to CP/M programmers, but non-programmers may also find much of the information useful. The chapter ends with a listing of the standard CP/M BDOS Function Summary. CHAPTER 1 GETTING STARTED This chapter explains how to backup both the CP/M-Z80 Emulator and CP/M-Z80 Emulator Utilities disks you received, and how to load the Emulator program into your computer. You will copy the CP/M-Z80 Emulator disk from the GEM Desktop. But the CP/M-Z80 Emulator Utilities disk is copied from within the Emulator itself. Before you begin, be certain to have two newly formatted disks on hand. BACKING UP THE CP/M EMULATOR DISK Before you do anything else, be certain to make a backup copy of the disk labeled "CP/M-Z80 Emulator." Since the Emulator is actually a TOS program, you must make the copy from the GEM Desktop. If you haven't done so already, first format a disk, then make the copy (either by dragging the files from one window to another or by making a disk-to-disk copy). Once you've made the copy, always use it as your working CP/M-Z80 Emulator disk. Store the original in a safe place. By doing this, you will always have at least one usable copy of the program. The disk labeled "CP/M-Z80 Emulator Utilities," on the other hand, must be copied within the Emulator (see the section on Backing Up the CP/M-Z80 Emulator Utilities Disk). LOADING THE CP/M-Z80 EMULATOR The CP/M Emulator is a program like any other program that runs on your ST Computer. It needs to be loaded into your computer. To load the Emulator, follow these steps: 1. With the GEM Desktop displayed, insert the disk labeled "CP/M-Z80 Emulator" into Drive A (or B, if you have two disk drives). Obtain a directory window of the disk, then select and open ("run") the file CPMZ80.TOS. Your screen clears and in a moment the CP/M-Z80 Emulator comes up. 2. The message on screen instructs you to insert a CP/M-Z80 disk into your drive. Remove the CP/M Emulator disk and insert the disk labeled "CP/M-Z80 Emulator Utilities." (You may substitute you own CP/M application disk for the CP/M-Z80 Emulator Utilities disk at this point.) Now press any key. In a moment the Emulator's A: (or B:) prompt appears on screen. You now have CP/M fully resident and ready. Note: CP/M's classic A> (or B>) prompt is replaced with an A: (or B:) prompt in the Emulator; the Emulator's A: (or B:) prompt works just like the CP/M's A> (or B>) prompt. Now type dir beside the A: (or B:) prompt. The DIR command returns a directory listing of the specified drive. These are the CP/M utilities you received on disk. BACKING UP THE CP/M-Z80 EMULATOR UTILITIES DISK It is essential that you make a backup copy of the CP/M-Z80 Emulator Utilities disk before you do anything else. To make the copy, follow these steps: 1. If you haven't done so already, format a disk under TOS (from the GEM Desktop), just as you normally do. If you don't have a blank, formatted disk available, then you'll have to exit the Emulator (type EXIT beside the A: or B: prompt), format a disk from the GEM Desktop, then run the Emulator. 2. If you have one disk drive and with the Emulator's A: prompt displayed, write-protect and insert the disk labeled "CP/M-Z80 Emulator Utilities" in Drive A, then type SCOPY *.* The program prompts you to swap the utilities (source) disk for your newly formatted (destination) disk, displaying the name of each file as it's copied. If you have two disk drives and with the Emulator's A: prompt displayed, write-protect and insert the disk labeled "CP/M-Z80 Emulator Utilities" into Drive A and your newly formatted disk in Drive B, then type NSWP207 Pressing '?' will display all of the commands that NSWP207 understands. To copy ALL files from Drive A to Drive B, press 'T' for TAG to mark each file. After marking each file for transfer, press 'M' to perform the mass file copy. You will be prompted for a destination. Type B: to send the files to the B drive. The program proceeds to copy all files in Drive A to Drive B, displaying the name of each file as it's copied. 3. With your new copy of the utilities disk in Drive A (or B), type dir beside the A: (or B:) prompt, just to be certain that the duplication procedure was a success. 4. Now type INIT A: This initializes your copy of the CP/M-Z80 Emulator Utilities disk. For an explanation of disk-initialization, see INIT in Chapter 2. Now that you've made the copy, always use it as your working CP/M-Z80 Emulator Utilities disk. Store the original in a safe place. By doing this, you will always have at least one usable copy of the utilities disk, should anything ever happen to any one copy. CHAPTER 2 CP/M AND CP/M-Z80 EMULATOR COMMAND SUMMARY HOW TO ENTER A CP/M COMMAND To enter a CP/M command, you must type a complete command line in response to the CP/M system prompt. A CP/M command line consists of a command keyword, an optional command tail, and a carriage return ([cr]). The command keyword identifies a command (program) to be executed. The optional command tail consists of a file specification and options or parameters. To complete the command, add a carriage return by pressing the [Return] key on the ST computer keyboard. CP/M FILE SPECIFICATIONS CP/M identifies every file by its unique file specification. A file specification is composed of three parts: a drive specification, a primary filename, and a filetype. The term "filespec" is an abbreviation for file specification, and indicates any valid combination of the drive specification, the filename, and the filetype. The following symbols are used to designate the parts of a filespec: D: Represents the optional drive specification, which must be a single alphabetical character in the range A through P, followed by a colon. filename Represents the required primary filename which can be 1 to 8 alphabetic or numeric characters. .typ Represents the optional filetype, which can be 0 to 3 alphabetic or numeric characters separated from the primary filename by a period. Valid combinations of the elements of a filespec are shown below: filename D:filename filename.typ D:filename.typ Certain CP/M commands can select and process several files when wildcard characters are included in the primary filename or filetype. The two wildcard characters are ?, which matches any single letter in the same position, and *, which matches any character at the position and any other characters remaining in the filename or filetype. The command summary indicates which commands can accept wildcard characters (* or ?) in a filename or filetype. COMMAND SUMMARY CONVENTIONS The command summary lists CP/M commands in alphabetical order, using the following special symbols to define command syntax: [] Indicate an optional item within DDT and ED. Also indicate the optional parts of a command line. | Separates choices. N  Indicates a number. [cr] Indicates a carriage return keystroke. or CTRL Indicates a control keystroke O Indicates an option or option list. R/W Means Read-Write. R/O Means Read-Only. SYS Means System attribute. DIR Means Directory attribute. ... Preceding element can be repeated as many times desired. * Wildcard; replaces all or part of a filename and/or filetype. ? Wildcard; replaces any single character in the same position. CP/M-Z80 EMULATOR-SPECIFIC COMMANDS @ Syntax: @ @/ @/ @/ Purpose: The @ command invokes the @.COM utility. The @.COM utility lets you interactively design and use SUBMIT files. Examples: @ @/ @/NSWP207 CPMTOS Syntax: CPMTOS Purpose: The CPMTOS command lets you convert a CP/M-Z80 file to a TOS file. Note however, that CP/M programs will not run under TOS, even though they are converted. An unambiguous CP/M-Z80 file as source and a destination drive or unambiguous TOS destination filename must be specified on the command line. Source and destination drive cannot be the same. CPMTOS allows you to change disks and prompts you to start the conversion by pressing [Return]. To abort the conversion, press [Esc] or [Control] [C]. Examples: CPMTOS A:HAPPY.TXT B: CPMTOS ORDERS.DAT B:ORDERS.DTA DDTZ Syntax: DDTZ DDTZ filespec Purpose: The DDTZ command works quite like DDT, save that it invokes the CP/M-Z80 debugging utility. Examples: A: DDTZ A: DDTZ PROGRAM.COM DDTZ commands > @ Examine [and substitute] the displacement register @. > A [startaddress] Assemble. > B Display all Breakpoints. > B breakp [breakp..][:count] Set Breakpoints. BX Clear all Breakpoints. BX address [address] Clear Breakpoints. >> C[N][J][number of commands] Trace over Calls [no list][jumps only]. C[N][J] W expression ..while.. C[N][J] U expression ..until.. >>D [startaddr][endaddr] Display memory in hex and ascii. > F commandline Specify Filename and command line. > G [startaddr][;breakpoint..] Go [to start][temporary breakpoints] > H Display High and maximal size of files. > H expression Compute hex and other expressions. H expression expression Hex and other sum and difference. >>I [port] Input a byte from port. >>L [startaddr][endaddr] List disassembled code. > M[V] startadr endadr targetadr Move memory [and verify]. >>O [byte][port] Output a byte to port. > Q[J] startaddr endaddr bytes Query memory for byte string [justified]. > R [displacement] Read binary or hex file [add dislacement]. > S Startaddr Substitute memory. >>T[N][J][number of commands] Trace [no list] [Jumps only]. T[N][J] W expression ..while.. T[N][J] U expression ..until.. > V startaddr endaddr targetaddr Verify (compare) two memory areas. > W startaddr endaddr Write a file to disk. > X Examine all cpu registers. X register Examine [and substitute] a register. > Y Examine all Y variables. Y number between 0 and 9 Examine [and substitute] a Y variable. > Z startaddr endaddr bytes Zap (fill) memory with a byte string. DDTZ: Names of Registers A , F , B , C , D , E , H , L , BC , DE , HL A', F', B', C', D', E', H', L', BC', DE', HL' IX or X, IY or Y, SP or S, PC or P, I DDTZ: Flags of Registers F and F': S Sign Z Zero H Half carry Carry of bit 3 to bit 4. V Overflow/parity Overflow/even parity. N Negation NEG, DEC, SUB or the like executed. C Carry Carry of bit 7. E Interrupt Enabled The Interrupt flag is handled in DDTZ like a flag of the F-Register. DDTZ: Constants and Variables L Low Start of user-memory. H High Highest address of files last loaded. M Max Highest address of all files loaded. T Top Top of user memory. @ Displacement Register. $ Start address when assembling otherwise = PC. Y0 ... Y9 Free usable variables. ^register Content of register. (address) Content of a memory cell (byte). (address) Content of a memory cell (word). Calling DDTZ: DDTZ DDTZ d:filename.ext If DDTZ was called together with a filename, then DDTZ loads the file into the memory. When the '>' sign appears, DDTZ is ready. General remarks for the use of DDTZ. In all situations, where numbers can be entered, 'expressions' can be entered too. Expressions are structured as follows: or Relation operators are: = , <> , < , > , >= , <= If the relation is true, the expression has the value -1, otherwise it is 0. e.g.: the expression 1 + 2 = 3 has the value -1. An arithmetic expression has the general structure: Arithmetic operators are: + , - , * , / , % plus, minus, multiplication, division, modulo. & , ! , # AND, OR, XOR (bit oriented). Factors are: [expression] Expression in brackets. +factor -factor Negation. ~factor NOT (bit oriented). 'a' Value of ASCII-character. 'a'. Bit 7 on. 'ab' Value of two ASCII characters. 'ab'. Bit 7 on in low byte. (expression) Byte in memory. (expression) Word in memory. variable arbitrary variable mentioned above. hhhh[H] Hex-number. dddd. Decimal-number. bbbbbbbb"bbbbbbbb" Binary number. If an expression contains a relational operator, first both arithmetic expressions are calculated and then the relation. An arithmetic expression will be calculated from the left to the right without regard to algebraic rules. However, the order can be changed with brackets. Expressions must not contain blanks. Commands start with one of the characters '@' to 'Z', optionally followed by other characters or arguments. If the start address is omitted, the address where the command ended before is used instead. If the end address is omitted, the command (e.g. L or D) will be repeated until one screen is filled. If one argument is omitted and other arguments follow, it has to be replaced by a comma. Between two arguments, a blank, a tab, or a comma must be put. Commands which need a starting address and an ending address can use the character 'S', followed by an offset. For example: D 1000 S 100 resp. D1000S100 means the same as: D1000 10FF resp. D1000,10FF DIR Syntax: DIR filename Purpose: The DIR command displays the names of all files with "system indicator" set on the specified disk. Examples: DIR A: DIR B: EDTKEY Syntax: EDTKEY Purpose: The EDTKEY command lets you edit a CP/M-Z80 keyboard definition file. A keyboard definition file contains information about the nationality and character strings for the function keys. You can choose from one of five national keyboard layouts: American, English, French, German, and German/American. German/American is a special German layout for programmers. Each of the ten function keys [F1]--[F10] on the top row of the keyboard and all the eight keys in the cursor block, both unshifted and shifted, may be assigned an ASCII string of up to eight characters. This provides you with a total of 36 configurable function keys. EDTKEY displays the current keyboard nationality and function key definitions, and shows a menu of possible entries. To abort without making any changes, and return to the CP/M-Z80 Emulator, press [Esc]. To change the keyboard nationality, which is displayed in the top right corner of the EDTKEY screen, press [Space Bar]. To save the current definition to disk, press [Enter] (on the numeric keypad); EDTKEY then terminates automatically. To edit the string assigned to a function key, just press the desired function key, unshifted or shifted. Correct a definition with [Backspace] and terminate editing with [Enter]. All ASCII characters except Backspace (08H) may be used in function key strings. Control characters are shown in arrow notation. EDTKEY is a versatile tool that can adapt the CP/M-Z80 environment to your changing needs. You may assign function keys various commands used in CP/M applications programs, and so tailor the ST keyboard to the specific needs of an application program. You can create as many keyboard definition files as you want. EDTKEY displays or changes an existing keyboard definition or creates a new keyboard definition file, if the specified file cannot be found. A new definition is filled with default values at startup. The default file type for keyboard definition files is .KEY and may be omitted from the file specification. A predefined keyboard definition must be activated with the SETKEY utility. Note: The DEFAULT.KEY file on disk is the default keyboard definition file. The WS.KEY file configures the keyboard for use with WordStar. Examples: EDTKEY DEFAULT EDTKEY EXIT Syntax: EXIT Purpose: The EXIT command allows you to exit the Emulator and return control to TOS and the GEM Desktop. Examples: A: EXIT B: EXIT INIT Syntax: INIT Purpose: The INIT command initializes a formatted TOS disk for use under the CP/M-Z80 Emulator. Disks used with the Emulator must be formatted under TOS first, then initialized with the INIT utility running under the Emulator. The drive containing the disk to initialize must be specified on the command line, and the INIT.COM file must be on the specified disk. The INIT command zeros the TOS directory so that you can recognize CP/M-Z80 disks from the GEM Desktop. When you display a initialized CP/M-Z80 disk directory on the GEM Desktop, only the one item (CPMZ80.APP) appears in the directory window, and (falsely) shows 999999 bytes used in that one item. Examples: INIT A: INIT B: READ Syntax: READ PIP PUN: = A: [0], eof: eof: eof: eof eof: Purpose: The READ command invokes the READ communications utility. The READ communications utility is a self-relocating receiver routine for serial data transmission via the CP/M reader channel. This allows for the conversion from one CP/M computer to another. The READ.ASM file (on disk) provides you with the READ utility's source code. Examples: A: READ PROG A: READ PROG.BBX A: READ b:PROG.bzz SCOPY Syntax: SCOPY Purpose: The SCOPY command allows you to copy CP/M-Z80 files on a single drive system. You may select a file or group of files to copy, according to your file parameter. The utility informs you to swap source and destination disks, and echoes the name of each copied file. Examples: SCOPY *.* SCOPY *.PAS SCOPY DU.COM SETKEY Syntax: SETKEY Purpose: The SETKEY command activates an existing keyboard definition file (created with EDTKEY). The default file type for keyboard definition is .KEY and may be omitted from the file specification. Note: The DEFAULT.KEY file on disk is the default keyboard definition file. The WS.KEY file configures the keyboard for use with WordStar. Examples: SETKEY MP SETKEY B:MBAS TOSCPM Syntax: TOSCPM Purpose: The TOSCPM utility lets you convert a TOS file to a CP/M-Z80 file. Note that TOS programs will not run under CP/M-Z80. An unambiguous TOS file as source and a destination drive or unambiguous CP/M-Z80 destination filename must be specified on the command line. Source and destination drive cannot be the same. TOSCPM allows you to change disks and prompts you to start the conversion by pressing [Return]. To abort the conversion, press [Esc] or [Control] [C]. Examples: TOSCPM A:README.TXT B: TOSCPM TURN11.DAT B:T11.DTA TOSDIR Syntax: TOSDIR Purpose: The TOSDIR utility displays the directory of a TOS disk. An ambiguous file specification may be specified. If no drive is specified, the utility displays the directory of the current default drive. If you give no file specification, the utility lists all files in the directory. Examples: TOSDIR TOSDIR A: TOSDIR *.PRG STANDARD CP/M COMMANDS ASM NOT INCLUDED IN PACKAGE FOR DOCUMENTATION PURPOSES ONLY Syntax: ASM [filename] ASM [filename.ABC] Purpose: ASM assembles assembly language statements, producing an output file in Intel [tm] hexadecimal format and a print file. The source filetype must be ASM. Character A indicates source file drive, B indicates HEX file destination, and C indicates PRN file destination. If you put a Z in position B or C, the HEX file or PRN file is suppressed. An X in position C sends the print file to the console. ASM Error Messages D Data Error: Data statement element cannot be placed in specified data area. E Expression Error: Expression cannot be evaluated during assembly. L Label Error: Label cannot appear in this context (might be duplicate label). N Not Implemented: Unimplemented features, such as macros, are trapped. O Overflow: Expression is too complex to evaluate. P Phase Error: Label value changes on two passes through assembly. R Register Error: The value specified as a register is incompatible with the code. S Syntax Error: Improperly formed expression. U Undefined Label: Label used does not exist. V Value Error: Improperly formed operand encountered in an expression. Examples: A:ASM PROG A:ASM PROG.BBX A:ASM B:PROG.BZZ DDT NOT INCLUDED IN PACKAGE FOR DOCUMENTATION PURPOSES ONLY Syntax: DDT [filespec] Purpose: DDT is used in debugging 8080 programs. If you specify DDT without a filespec, DDT loads into the TPA and prompts for a command. The command character can be followed by one or more arguments: hexadecimal values, file specifications, or other information, depending on the command. Arguments are separated from each other by commas or spaces. No spaces are allowed between the command character and the first argument. Optional parts of the command are enclosed in square brackets ([]). Examples: A:DDT A:DDT PROGRAM.COM DDT Command Summary As Assemble: Enter assembly language statements. D[s[f]] Display: Display memory in Hex and ASCII. Fs,f,bc Fill: Fill memory block - byte. G[s][,b1[,b2]] Go: Begin execution. Hc1,c2 Hex: Hexadecimal sum and difference. Ifilespec Input: Set up input command line for R or W commands. L[[,f]] List: List memory in mnemonic form. Ms,f,d Move: Move memory block. R[o] Read: Read disk file to memory. Ss Set: Set memory values. T[n] Trace: Trace program execution. U[n] Untrace: Monitor execution without trace. X[r] Examine: Examine and modify CPU registers. Symbol Meaning bc byte constant b1 breakpoint one b2 breakpoint two c1 byte or word constant one c2 byte or word constant two d destination data f final address n number of instructions to execute o offset to load address r 8080 CPU register or flag name s starting address DIR Syntax: DIR [d:filename.typ] Purpose: DIR displays names of files on the specified disk. DIR does not display files set to SYS. Examples: A:DIR A:DIR B: A:DIR B:MYFILE.TEX A:DIR A*.ASM A:DIR PROG???.PRN A:DIR PROGRAM.* DUMP NOT INCLUDED IN PACKAGE FOR DOCUMENTATION PURPOSES ONLY Syntax: DUMP filespec Purpose: The DUMP command lets you display the contents of a file in hex. The DUMP.ASM file (on disk) provides you with the DUMP utility's source code. Example: A: DUMP ASM.COM ED NOT INCLUDED IN PACKAGE FOR DOCUMENTATION PURPOSES ONLY Syntax: ED [d:filename.typ] Purpose: ED is the CP/M line editor. Using the ED commands, you cn create or alter your files. Optional parts of the commands are enclosed in square brackets ([]). Example: A:ED TEST.DAT In ED, the [Control] key appears an an up arrow ( ). L Logical [cr][lf] within strings. X Line delete. Z String terminator/separator, exit insert mode. Backspace Delete character. C Stop function. ED Command Summary Command Action nA Append n lines from original file to memory buffer. 0A Append file until buffer is half full. #A Append file until buffer is full (or end of file). B,-B Move CP to beginning (B) or bottom (-B) of buffer. nC,-nC Move CP n characters forward (C) or backward (-C) through buffer. nD,-nD Delete n characters before (-D) or after (D) the CP. E Save new file and return to CP/M. Fstring[Z] Find character string. H Save the new file, then reedit, using the new file as the original. I Enter insert mode; use Z to exit insert mode. Istring[Z] Insert string at CP. J[search str]Z Juxtapose strings. [insert str]Z [delete to str]Z nK,-nK Delete n lines from the CP. nL,-nL,0L Move CP n lines. nMcommands Execute commands n times. n,-n Move CP n lines and display that line. n: Move to line n. cncommand Execute command through line n. Nstring[Z] Extended find string. O Return to original file. nP,-nP Move CP n lines forward or backward and display n lines at console. `N NA"|@00NA0|@00N@@@@BP^lllllllllNNNNPdddddddddddNu?<?<NMXNu?<?<NMXNu?<?<NMXNuNuNu|??<?<NM\NuNu***************************************************************** * * * >>>>>> s o f t d e s i g n <<<<<< * * * * c p / m - z 8 0 e m u l a t o r * * * * z 8 0 i / o o p c o d e s u p p o r t * * * * 25.11.85 * * * * configured to access atari 520 st modem port * * * ***************************************************************** * input parameters: * z80 port address : d0.b * z80 port output data : d1.b * return parameter: * z80 port input data : d0.b .TEXT EMUIO: JMP INPUT JMP OUTPUT INPUT: LEA.L INPTAB(PC),A0 AND.W #$000F,D0 ADD.W D0,D0 MOVE.W (A0,D0.W),D0 JMP 0(A0,D0.W) OUTPUT: LEA.L OUTTAB(PC),A0 AND.W #$000F,D0 ADD.W D0,D0 MOVE.W (A0,D0.W),D0 JMP 0(A0,D0.W) INPTAB: .DC.W INP00-INPTAB,INP01-INPTAB,INP02-INPTAB,INP03-INPTAB .DC.W INP04-INPTAB,INP05-INPTAB,INP06-INPTAB,INP07-INPTAB .DC.W INP08-INPTAB,INP09-INPTAB,INP0A-INPTAB,INP0B-INPTAB .DC.W INP0C-INPTAB,INP0D-INPTAB,INP0E-INPTAB,INP0F-INPTAB OUTTAB: .DC.W OUT00-OUTTAB,OUT01-OUTTAB,OUT02-OUTTAB,OUT03-OUTTAB .DC.W OUT04-OUTTAB,OUT05-OUTTAB,OUT06-OUTTAB,OUT07-OUTTAB .DC.W OUT08-OUTTAB,OUT09-OUTTAB,OUT0A-OUTTAB,OUT0B-OUTTAB .DC.W OUT0C-OUTTAB,OUT0D-OUTTAB,OUT0E-OUTTAB,OUT0F-OUTTAB INP00: INP01: INP02: INP03: RTS INP04: MOVE.W #1,-(A7) modem port input status MOVE.W #1,-(A7) TRAP #13 ADDQ.L #4,A7 RTS INP05: MOVE.W #1,-(A7) modem port output status MOVE.W #8,-(A7) TRAP #13 ADDQ.L #4,A7 RTS INP06: MOVE.W #1,-(A7) modem port data input MOVE.W #2,-(A7) TRAP #13 ADDQ.L #4,A7 RTS INP07: INP08: INP09: INP0A: INP0B: INP0C: INP0D: INP0E: INP0F: RTS OUT00: OUT01: OUT02: OUT03: RTS OUT04: AND.W #$00FF,D1 modem port data output MOVE.W D1,-(A7) MOVE.W #1,-(A7) MOVE.W #3,-(A7) TRAP #13 ADDQ.L #6,A7 RTS OUT05: OUT06: OUT07: OUT08: OUT09: OUT0A: OUT0B: OUT0C: OUT0D: OUT0E: OUT0F: RTS .END GERD HILDEBRANDT, HERBERT THIESS S O F T W A R E Z 8 0 O N 6 8 0 0 0 ----------------------------------------- TO ENCOURAGE THE TRANSITION TO POWERFUL 68000 16 BIT HARDWARE A Z80- AND CP/M-EMULATOR BRIDGES THE SOFTWARE GAP. A PURE SOFTWARE EMULATION PROVIDES A COMPLETE VIRTUAL Z80 CPU UNDER THE CP/M 2.2 OPERATING SYSTEM. The micro-revolution currently is on the move from the 8 bit to the 16 bit generation. In the 8 bit generation the Z80 is the microprocessor with the biggest market share, its instruction set is upward compatible with the 8080/8085 microprocessors. With millions of microprocessors of this family in use, one operating system was quickly established as a standard: CP/M 2.2 from Digital Research. Supported by this wide acceptance, the largest software library of tools and applications could grow. Over the years, huge investments were spent in CP/M standard software, the development of specific applications and the training of users. These programs are now well tested and their users have become accustomed to them. With the growing demand for software flexibility, the limits of the 8 bit generation, especially the 64 K addressing range, were encountered. The first microprocessor of the new 16 bit generation, the Intel 8086, was quickly pushed into the market. Its instruction set and register structure were designed as an extension of the 8080/8085. So it was possible to transfer exis- ting programs easily to the 8086. The limitations of the 64 K addressing range were overcome, but a lack of orthogonality and addressing capability in the architecture remains. The successor 80186 was extended by some hardware-features, but the poor instruction set was retained. The same applies to the 80286 in its compatibility mode. The new 286 mode is hampered by design flaws on the chip. Other microprocessor developers did not insist on upward compatibility and took the chance to introduce new concepts of CPU architecture with their 16 bit generation microprocessors. Thus the 68000, even though it came late, is now established as an alternative to the 8086. The 68000 family was extended by the more powerful 68010 and the 32 bit processor 68020. Today the 16 bit micro market is mainly divided between two opponents: on one side the conventional 8086 family with a large software base and on the other side the advanced 68000 family with less software as yet available. In contrast to the 8 bit generation, in the 16 bit generation no microprocessor and therefore no operating system has become established as a stan- dard. The ongoing confusion about future trends leads to uncer- tainty for customers and blocks investment in both new hardware and software. A b r i d g e b e t w e e n Z 8 0 a n d 6 8 0 0 0 For users who will take the more innovative way to the 16 bit generation, SoftDesign of Munich have developed a tool to ease the transition: the CP/M-Z80 EMULATOR opens up the whole CP/M 2.2 software library for 68000 micros with CP/M-68K. Using the CP/M-Z80 EMULATOR results in various advantages: - Software tools and applications not yet available for CP/M-68K can be substituted by CP/M 2.2 programs. Thus assemblers, cross-assemblers, compilers for many languages, text-proces- sing, spreadsheets etc. become immediately available. - It is possible to take the step up to the 16 bit generation  and continue using existing 8 bit software. Investments in existing software are not lost or wasted. - The advantages of modern hardware can be utilized by Z80 software. - A 68000 system with CP/M-68K can serve as Z80 software deve- lopment system without the necessity to keep 8 bit hardware. The CP/M-Z80 EMULATOR runs without adaptation on any 68000 computer with the CP/M-68K operating system vers. 1.1 or 1.2 and at least 95 K user memory (TPA). Usage of the EMULATOR is very simple: entering the command "CPMZ80" starts the EMULATOR and a complete CP/M 2.2 system with Z80 CPU is activa- ted. Even an experienced CP/M user will not notice that there is no Z80, but a 68000 CPU, working in the system. All CP/M 2.2 compatible programs will run without restrictions: WORDSTAR, MBASIC, DBASE II, MULTIPLAN, PL/I-80, BDS C, TURBO PASCAL, PASCAL MT+, MACRO-80, LINK-80, DDT, XSUB, SUBMIT, ZSID, DU, MOVEIT, MODEM77, ZORK, just to name a few... F a s t Z 8 0 e m u l a t i o n The emulation of a CPU in software is time consuming because it works in a similar way to an interpreter. Each operation of the virtual CPU is interpreted by a short code sequence of the emulating CPU. Emulation is specially difficult for peculiari- ties in the emulated CPU's architecture not found on the hard- ware CPU. For example it is quite complicated for the 68000 CPU to generate the Z80's Half Carry Flag and to compensate the re- verse order of the bytes in a word. However, the CP/M-Z80 EMULA- TOR is completely written in assembly language and gains its high speed by optimally using the large register frame of the 68000 CPU and table driven interpretation. Under the CP/M-Z80 EMULATOR average CP/M-80 programs execute with the speed of a 2 MHz Z80 CPU on a 8 MHz 68000 system. In practice the execution speed varies for different programs, an important factor is the frequency of I/O access. Programs with heavy disk I/O for example may run even faster than on real Z80 hardware. On the other hand intensive arithmetic computations slow down the EMULATOR. The following measurements for the execution time ratio between the virtual CPU and Z80 hardware have been taken: Extreme values : 0.6 and 6 Average : 2 To allow access to 68000 hardware I/O ports by Z80 I/O op- codes, a special interface has been provided. For that purpose the user may build a custom driver to map Z80 port addresses to 68000 I/O routines. If such a driver module is present, it is loaded automatically by the EMULATOR. Communication software can utilize these I/O capabilities to access modems and other data links. This eases the transport of existing CP/M 2.2 software to the 68000 system. I n t e g r a t e d C P / M - 8 0 The CP/M-Z80 EMULATOR includes a specially designed operating system upward compatible to CP/M-80. The user interface corres- ponds to that of standard CP/M 2.2 with some user friendly extensions and improvements. An additional EXIT command provides a means of returning to CP/M-68K. All physical I/O devices implemented under CP/M-68K (terminal, printer and other inter- faces) and all background storage devices (floppy disk drives, hard disks, tape streamers and RAM disks) are accessible from the emulated CP/M-80. An automatic configuration algorithm installs all these devices without user intervention. This leads to a transportability between CP/M-68K and the emulated CP/M-80. All files can be read and written under both systems. Compact implementation of the CP/M-80 system provides a large user memory (TPA) of 58 Kbyte. All system calls defined in CP/M-80 are fully implemented. P r o f e s s i o n a l t o o l The CP/M-Z80 EMULATOR is used by software professionals on many different CP/M-68K systems. The EMULATOR is a proven soft- ware product and is ready for immediate delivery. A free demo disk is available for evaluation without risk or obligation. Disks can be supplied either in 5 inch STRIDE or 8 inch single density format. Versions of the CP/M-Z80 EMULATOR for OS-9/68K and UNIX V are under development. . {.. {CPMZ80 TOSEMUIO PRG5EMUIO S 6DOCUMENT 8`D)b#.|Zaa  <Z"<Z$<Laa < Ra aZa a P?<NA$RTltLNna < a aa aa6*|aaNuNu<gjSgSg^`<g`SgSgT`A<gbSgSgV`A<gFSg`A<0g0Sg`< g`4<gSg`,|Z*|BAAA"|zC=a J^g=a"Jg< A"(g=aZ`=a"Jg A" (g <Nu <NuBNu$_$,|Z*|=ajJ^g kH=a` ==a@8j&at8ja8=aJ^f===aJ^f==-aLQNuPNu,|Z*|=aJ^g kX=a` ==a:j&a:ja2:=aJ^f,===aXJ^f==-aB<f =anJ^fQNuPNuNu <NuVersion 6 for ATARI TOSBB/<?<?<KNAOJk @"| ("\@#@ NuBNuEMUIO.PRG?<NAT ||| Nu yAB@B0 NuaRNuNu 9gPNua6Nu | 9f(/a, _JjN|B92HAJ0gB@92HAABA90RfNuNu9gSgNSgaNu<faNuJk | lBA9IA|A0aNu<YfaNu<bg<cfaNuaNuavNu|H@ | AHhHhHP?<NNONu @"|0<P"QNuHA0<<PQBmLNuH0A2<<fPQLNuH0ABA4<BCf=a ^PRABf=LNuH20ABB6<hfgPRBCf=<` 1mRm=LNuHAB@2<<g PR@Af0<=LNuHA0-BA4hBCP8<RADg:hBc46P`=L?NuH4206AA8==-aJ^f$JAA 1AQ1mRm=<`=<LNuH02IAAJ(g"CCS=(- anJ^f Q=<`=<LNuH"^B20ЁAA f&H?8LHLH,L H XL` 0<QLNuH ^B204JCP ЁCC f&H8LHLH,L H XL` 4<QLNu |z0<r QNuH0=a"J^g0BAAA"|zC=a"Jg A"(g"=<`Bf`=/?<&NN\<a <fa<a<wa<a<EaNu |D0Nu @g /a _`Nu< a< aNuPlease change to CP/M-Z80 disk and press any key Please change to ATARI TOS disk and press any key A|?@00N&46>>>>>>>>>>>>>>>>>>>@HJRRRRRRRRRRRRRRRRRRRRRRRRRRRRR?< NATNu?/?<NAXJ[NuNu/?Bg??<?NAO 2J[Nu/?Bg??<@NAO 2J[Nu/?<NA\Nu?/?<NNAPJ@VNu?<ONATJ@VNuNua2NuNuaNuNu aNuNu1234567890-= qwertyuiop[] asdfghjkl;'`\zxcvbnm,./ -+()/*7894561230. 3!@#$%^&*()_+ QWERTYUIOP{} ASDFGHJKL:"~|ZXCVBNM<>? -+()/*7894561230. @1234567890-= QWERTYUIOP[] ASDFGHJKL;'`\ZXCVBNM,./ -+()/*7894561230. 3  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1234567890-= qwertyuiop[] asdfghjkl;'`#zxcvbnm,./ -+\()/*7894561230. 3!"#$%^&*()_+ QWERTYUIOP{} ASDFGHJKL:@~~ZXCVBNM<>? -+|()/*7894561230. @1234567890-= QWERTYUIOP[] ASDFGHJKL;'`#ZXCVBNM,./ -+\()/*7894561230. 3  !"$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}&{"'(]}!\@)- azertyuiop^$ qsdfghjklm|`#wxcvbn,;:= -+<()/*7894561230. "1234567890[_ AZERTYUIOP~* QSDFGHJKLM%#|WXCVBN?./+ -+>()/*7894561230. 3&{"'(]}!\@)- AZERTYUIOP^$ QSDFGHJKLM|`#WXCVBN,;:= -+<()/*7894561230. "  !"$%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz1234567890~' qwertzuiop}+ asdfghjkl|{#~yxcvbnm,.- -+<()/*7894561230. 3!"@$%&/()=?` QWERTZUIOP]* ASDFGHJKL\[^|YXCVBNM;:_ -+>()/*7894561230. @1234567890~' QWERTZUIOP]+ ASDFGHJKL\[#~YXCVBNM,.- -+<()/*7894561230. 3  !"#$%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz1234567890~' qwertzuiop|+ asdfghjkl[]#~yxcvbnm,.- -+<()/*7894561230. 3!"@$%&/()=?` QWERTZUIOP\* ASDFGHJKL{}^|YXCVBNM;:_ -+>()/*7894561230. @1234567890~' QWERTZUIOP|+ ASDFGHJKL[]#~YXCVBNM,.- -+<()/*7894561230. 3  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~`^CP/M-Z80 Emulator Copyright (85) SoftDesign Munich Release 8.4 Serial number 101009 Atari Nyyo_2Vyl# \vGJ9J? >< upF8&:GA8"k8$G@NqG8՛ <xѭXg`.:Nu*@,A+_ B"HE0<2G$Qa @"N0<"Qa @"N0<"Qa @"N0<"QA`"HE80<2G$QH mNL` @"NBJgEg R<fBA"N`&.>N<^lH mNL` @(@hH mNaL`H mNL`Jg @+X0+P4C< a^` A+H0+H4H mNL``.HaJL` @"N0<"QH mNL`HaL`|||||nNu. mNNu. mNNu.- mNNu.- mNNu.- mNNu. mNNuBm mNNuBC-<bABD00<g.-ffH mNL`Jg`??a86`@-<ea`>H mNL`Jg*??a86R-A0CL|:NuBUNu;mNu;mNu;mNu-2-4-B6-֎ mNNu--2-4-B6-֎ mNNu. mNNu0-B2-Ҏ mN:Nu`-2-4B6-֎B8-؎ mN:NuA<2<QB-Nu @|BN|4ChBB<|^2<N|^2<N|^2R<(^(VxlFD Pc<><Gc<.<毼Gc<Pg>< (nH2arLSF^2:(<SF^2VEMDm|nFF2J(fBF`<(VFN|@c<<@^2<(^2Nu?Af a<Aa@A aNu??AB a0<AaAM a0<0aAC aNu7-l|5 UrHA@ aAM aL @/H@a$< aLSAfA3 ad _0a&AP aP mN-tQ}84} štjWQuM,$<K9AprfԘ`QTQ+B <ѭ\`|A0A Nu`U A0A Nu`aA0A Nu`n/aA a0<aA aaA a0<a a|aA an0<aA a^alNuAHz|0H arL0QNuA"8z\|0H aLL0QNu0123456789ABCDEF @g/a( _`Nu< a< aNuJg?0< a0S`Nu.H mNL`Nu Emulator warning => Drive : cut to MByte ! : not logged in - too many drives Emulator error => Illegal opcode : at address : Emulator I/O driver installed Emulator exit G2Ixa ta@$NBBBBBBBB@23N  4Dh$8Hl2Vfx ,Pb`,Ph 4LZz   . > P \ n   * > N ` r   " 2 D R d v   * < P x  4 b Hj Bv 8fLh @t.F^t $<Vr2LfDZ:f Tr F\&R0^|*>l2h.Lx,@23NYY@23N2-@23NRm@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NU@23N-A-A-A-mA-A-mA-A2<-;A@23N2-UU@23N2-6@23NSm@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NU@23NS-gH@23NR@23NYY@23N2-@23NRm@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NDU@23NH@23N2-UU@23N2-6@23NSm@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NDU@23NJgR@23NH@23NY@23NY@23NRU@23NRYW[<W|@23N<WSYW[Œ|@23N@23N<<JFk2< bJg\<bJgL<`P`D\<bJg8<`P`0< bJg]<bJg<`P`]<bJg<`PJ[W@23NJfR@23NH@23NU@23NYv@23NSU@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NFx|@23NJgR@23NH@23NYE@23NY@23NR@23N2R6YW[6<W|@23N26<WS6YW[Œ|@23N2@23N<<@23NJfR@23NH@23N" UU@23NY6@23NS@23NRYW[<W|@23N<WSYW[Œ|@23N@23NF@23N@23Nm@23Nm@23Nm@23NU@23Nm@23N2v@23NG@23Nm@23N@23Nm@23Nm@23NU@23Nm@23N2v@23NG@23Nm@23Nm@23N@23Nm@23NU@23Nm@23N2v@23NG@23Nm@23Nm@23Nm@23N@23NU@23Nm@23N2v@23NG@23N@23N@23N@23N@23N@23N@23N2@23N@23Nm@23Nm@23Nm@23Nm@23NU@23N@23N2v@23NG@23N2@23N2@23N2@23N2@23N2@23N2@23N@@ u8H~NL~|rB@@23N2@23N-@23N-@23N-@23N-@23N@23N-@23N26@23N@23N-[WYUƀ<<U|B@@23N-[WYUƀ<<U|B@@23N-[WYUƀ<<U|B@@23N-[WYUƀ<<U|B@@23N[WYUƀ<<U|B@@23N-[WYUƀ<<U|B@@23N26[WYUƀ<<U|B@@23NV[WYU|B@@23N-D[YUJWÀ<<DU|B@@23N-D[YUJWÀ<<DU|B@@23N-D[YUJWÀ<<DU|B@@23N-D[YUJWÀ<<DU|B@@23ND[YUJWÀ<<DU|B@@23N-D[YUJWÀ<<DU|B@@23N26D[YUJWÀ<<DU|B@@23ND[YUJWV|B@@23N-[WYU<<UČ|B@@23N-[WYU<<UČ|B@@23N-[WYU<<UČ|B@@23N-[WYU<<UČ|B@@23N[WYU<<UČ|B@@23N-[WYU<<UČ|B@@23N26[WYU<<UČ|B@@23NBQvQQ<<B@@23N-Dğ[YUJW<<DđUČ|B@@23N-Dğ[YUJW<<DđUČ|B@@23N-Dğ[YUJW<<DđUČ|B@@23N-Dğ[YUJW<<DđUČ|B@@23NDğ[YUJW<<DđUČ|B@@23N-Dğ[YUJW<<DđUČ|B@@23N26Dğ[YUJW<<DđUČ|B@@23NW|B@@23N-[WQB@@23N-[WQB@@23N-[WQB@@23N-[WQB@@23N[WQB@@23N-[WQB@@23N26[WQB@@23NJ[WQB@@23N-[WQB@@23N-[WQB@@23N-[WQB@@23N-[WQB@@23N[WQB@@23N-[WQB@@23N26[WQB@@23NBQvzQB@@23N-[WQB@@23N-[WQB@@23N-[WQB@@23N-[WQB@@23N[WQB@@23N-[WQB@@23N26[WQB@@23NJ[W4pQB@@23N-[WYUB@@23N-[WYUB@@23N-[WYUB@@23N-[WYUB@@23N[WYUB@@23N-[WYUB@@23N26[WYUB@@23NQvQQB@@23NJgB@@23NYCB@@23NZZB@@23NJgTB@@23NYCB@@23NYCB@@23NJgTB@@23NY0 CXB@@23N--B@@23N[WYUƀ<<U|B@@23N0 X"NB@@23NJfB@@23NYCB@@23NYCB@@23NJfTB@@23NYCB@@23N mB@@20NJfTB@@23NY0 CXB@@23NY0 CXB@@23ND[YUJWÀ<<DU|B@@23N0 XCB@@23NJgB@@23NYCB@@23NZZB@@23NJgTB@@23NYCB@@23NH?H~ m4NL~LrB@@23NJgTB@@23NY0 CXB@@23N--B@@23N[WYU<<UČ|B@@23N0 XCB@@23NJfB@@23NYCB@@23N *+@0-;m ;@ B@@23NJfTB@@23NYCB@@23NH?H~ m0NL~LrBGB@@23NJfTB@@23NY0 CXB@@23N m B@@20NDğ[YUJW<<DđUČ|B@@23N0 XCB@@23NJgB@@23NYCB@@23NZB@@23NJgTB@@23NYCB@@23N-ZB@@23NJgTB@@23NY0 CXB@@23N-B@@23N[WQB@@23N0 XC B@@23NJfB@@23NYCB@@23N2CB@@23NJfTB@@23NYCB@@23N0-;U:B@@23NJfTB@@23NY0 CXB@@23N m$B@@20N[WQB@@23N0 XC(B@@23NJgB@@23NYCB@@23NUUUUUUVUB@@23NJgTB@@23NYCB@@23NB@@23NJgTB@@23NY0 CXB@@23NB@@-@@-@@JF[@B@@23N[WQB@@23N0 XC0B@@23NJfB@@23NYCB@@23N2EB@@23NJfTB@@23NYCB@@23NB@@23NJfTB@@23NY0 CXB@@23N m(B@@20N[WYUB@@23N0 XC8B@@23NA+HA+H$Nu8Tp*F^z$>\| $Bbx,@\x p p p p p p p p2Nj(<Nbx  ( < P d x   ( < R d x   * > R d x   , > P b t   . B X j ~ 0DXj~2DXl 2DXn 2FZn 2HZn  4HZn "4H\p"4H^p"6J^p-[WUA@23N-[WUA@23N-[WUA@23N-[WUA@23N[WU@23N-[WUA@23N26[WU@23N[WU@23N-[WUA@23N-[WUA@23N-[WUA@23N-[WUA@23N[WU@23N-[WUA@23N26[WU@23N[WU@23N-D[WUA@23N-D[WUA@23N-D[WUA@23N-D[WUA@23ND[WU@23N-D[WUA@23N26D[WU@23ND[WU@23N-D[WUA@23N-D[WUA@23N-D[WUA@23N-D[WUA@23ND[WU@23N-D[WUA@23N26D[WU@23ND[WU@23N--[WU@23N--[WU@23N--[WU@23N--[WU@23N[WU@23N--[WU@23N266[WU@23N[WU@23N-[WUA@23N-[WUA@23N-[WUA@23N-[WUA@23N[WU@23N-[WUA@23N26[WU@23N[WU@23N- [WUA@23N- [WUA@23N- [WUA@23N- [WUA@23N [WU@23N- [WUA@23N26[WU@23N[WU@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23NJ-Z@23NJ-Z@23NJ-Z@23NJ-Z@23NJZ@23NJ-Z@23N2J6Z@23NJZ@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N< B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<@B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23N *Xz "B bn Hv ( Bb   :d L | $Z  * ` -H~ m0NL~r@[WB@@23N--H?H~ m4NL~LrB@@23N4-D2B[YUJAW:@23NY@23ND[WYU<VČ|@23NG@23N-H~ m0NL~r@[WB@@23N-H?H~ m4NL~LrB@@23N4-D2B[WYU:@23NYvv@23N@23N-H~ m0NL~r@[WB@@23N--H?H~ m4NL~LrB@@23N4-D2B[YUJAW:@23NY@23N-[WQ@23N-H~ m0NL~r@[WB@@23N--H?H~ m4NL~LrB@@23N4-D2B[WYU:@23NYvv@23NHI@<[WQ@23N-H~ m0NL~r[WB@@23N-H?H~ m4NL~LrB@@23NHVWVV:@23N2_6_B_@23N-H~ m0NL~r@[WB@@23N--H?H~ m4NL~LrB@@23N2DA[WYU:@23N2_6_B_@23N$ D2B[YUJAW:@23NYA" Y@23N-H~ m0NL~@rBG[WB@@23N-H?H~ m4NL~LrB@@23N$ D2B[WYU:@23NY66YE@23Np02-RURmSmVB@@23N26[WRUSmVB@@23N-H~ m0NL~r2RUS-WB@@23N-26H~ m4NL~rRUS-WB@@23Np02-SUSmSmVB@@23N26[WSUSmVB@@23N-H~ m0NL~r2SUS-WB@@23N-26H~ m4NL~rSUS-WB@@23Np02-:-SER@RAQ:;ABmBEB@@23N20-S@SARA6W[WgR@J@VRA:;@B@@23N-H~ m0NL~r2RUS-fvB@@23N-26H~ m4NL~rRUS-fvB@@23Np02-:-SES@SAQ:;ABmBEB@@23N20-S@RASA6W[WgR@J@VSA:;@B@@23N-H~ m0NL~r2SUS-fvB@@23N-26H~ m4NL~rSUS-fvB@@23N Ur`DA+H A+H(A B+H,Nu,@`p "8Rl :RlF"8Zp2-mU@23N2-mU@23NYY@23NY@23NRm@23NU@23NYvv@23NSm@23NHmR6YW[6<W|@23NHm6<WS6YW[Œ|@23NHm@23N" mU@23NHmv@23NHmv@23NHmv@23NHmv@23NHm@23NHmv@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm6@23NHm6[WYUƀ<<U|B@@23NHm6D[YUJWÀ<<DU|B@@23NHm6[WYU<<UČ|B@@23NHm6Dğ[YUJW<<DđUČ|B@@23NHm6[WQB@@23NHm6[WQB@@23NHm6[WQB@@23NHm6[WYUB@@23NHm m,B@@00NZZB@@23N--ZRB@@23N--B@@23N2-CB@@23N2-EB@@23N ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `,@` ` ` ` ` `p ` ` ` ` ` ` ` ` ` `" ` ` ` ` ` ` ` ` ` ` ` `8 ` ` ` ` ` ` `R ` ` ` ` ` ` `l ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` :R `l ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `H ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `$ `: `\ ` ` `r ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `2-mU@23N2-mU@23NYY@23NY@23NRm@23NU@23NYvv@23NSm@23NHmR6YW[6<W|@23NHm6<WS6YW[Œ|@23NHm@23N" mU@23NHmv@23NHmv@23NHmv@23NHmv@23NHm@23NHmv@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm6B@@23NHm6[WYUƀ<<U|B@@23NHm6D[YUJWÀ<<DU|B@@23NHm6[WYU<<UČ|B@@23NHm6Dğ[YUJW<<DđUČ|B@@23NHm6[WQB@@23NHm6[WQB@@23NHm6[WQB@@23NHm6[WYUB@@23NHm m,B@@00NZZB@@23N--ZRB@@23N--B@@23N2-CB@@23N2-EB@@23N<\|,BXn"6J^r6[WUB@@23N6[WUB@@23N6D[WUB@@23N6D[WUB@@23N66[WUB@@23N6[WUB@@23N6[WUB@@23N6WB@@23N6WB@@23N6WB@@23N6WB@@23N6WB@@23N6WB@@23N6WB@@23NJ6ZB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N Ur`$ Yr`ÈÎ2X21y2 O:ڷ(J:X y( :<2X1:_ͩ:A>:̀:ڷ(!"|r;(!{(:'($:( :'=(_O:2!_~#fo!H~G*|r=(#"|:I :H %(x(({G:( :' (x(-({G:( (x(&!I(  !(I !"i-ܷ !' > q#  Si!( I - x !H'  >' >!H#K >!'"oܷ͢ ܷܷ(>H[o˃ ݯ[i!"k'ѷ *k#"k!!٧R0گ[i*k|( Hѷ *k+"k!ٯ >>! j? A:w+>2q2q{!"x"v!"r!(~ >? w#>?2325:'(=_"m'(2q:q! /z [*x#"x{ *x| > 2z!"tͳ|( ͳ|( 06*x~!ͼ*v=~!ͼM=~!ü!Kry x(  # !*m#[r ~͑Sr*m~͑ w#4  ~#(  ~##( y[tKr`iR! (St: > > K ^#V*v"v=~>K:z<2z*m~G)*mNF!~ # x( 0#{ !ͼ_Y' > q#K:'w' {('({ '!~ ѷ(o{(:( (' > &)|("'(>  +'{(!'7*|r=(#"|{(!':7( ~27 ~(:7w' > 7(> '(⇇W:2*0!0~ (6C#6O#6M'  '('ѷ !!ڧR0> *|!\~!l~2|~# x2:X(O(A:=2 / ("!!6#5!ͼ  !F(#~a8{0_w#p!X~6ɷ=O!* ~#foͼ*~~ ( (#>?ýڷ (!,.:;<=>[]~ #!'6*|r"~(@G:(p.(#6"| #~?  yL(#* 6?wL#6 !y ( # y7# {'( (!0 ((o ()DM)) |(}~#>.~#ɇO!  -`ix > { 00:8>1 ~#> > _(! 6! 6! 6! 6:_ l&!A}g R06BJ\wFile existsNo fileProgram too largeSource same as destinationDisk fullDirectory fullAll (y/n)? Files,K Bytes,K Bytes freeCOPYDIR DIRSERA EXITGO REN SAVETYPEUSERH>7yKj $$$ SUBCPMZ80S{2!"s122!Sy)Ko&)F^#V*17Y_ds\aPlu{0!ffB!0O(U_A JR >I ![O(#_A R !!~:A2,ffCPMZ80 Error on drive : $Bad sector, (R)etry (A)bort or (I)gnore ? $Select failed, (R)etry or (A)bort $File is read only $Disk is read only $:{ %   (!z~/w2{>  Oc!{~6 y  :x ͤ :z!xy 84 ~5 6cy<(< !{~6cn c:c!qKB $O*##"|2~:x2y (  !z~/w :x!yOF*|w#"|!~4 0 (^@O :~ O*:~…*#:~w :~=2~G*|+"|~ 0& !(+~ 0 ( :yOyDO  ͤ>"2>:O| * ^#VS#"##"##"##**|!6(6*w#w*w#w'*  **  *""K*^#V*~#foyx0*{_zW+*8 yx8#[DM*s#r*s#ryOxG[0MD!!F:O>G:(* :(n& ^#V\Ow"*}:*)= ":O:o"* *!~2~2ͽ:2: O:w:w < ):O! yoxg*:O}K"U ~*"* *:o$*~`6`w[*{#zvr+sR[*͌[*w[*͌0v0[*(>ɯ*#͑!!N#F$*[!~#(: #~$ =2͓̓:c:/GyO>2!q*"͹(R*(v0BU:Oy($?(x ( ( N% # :2!~Яw>cK 6;U6͓KPYy( _0*{z0BK_0<͍y ! * UK 6*~w; K 6 K6ͽ~U[ o! N!Fwyx(>8>*w~#+w#w+ɯ222"`6U * :(~ w ~ 5͟͟ '# ! #  8 w ~>2!5K*!"6"! w##w#̓ o2ͭ* ~<w( G:!( $ 4~($6 :<(&( gcgo>2>2:!8 !X2: ͏͜( ͢g>22K*>:g͏͜ C\2(O wDM} >c"* ::([sO s#r:͢:== 9y== 2*w#*"*:G# ":!8w4`w : X!~ =262[!!~~#~O~G#n,-. W! w! y !x(4ͭ.:<(*! q!p^:< . (&.:<(c`6}2o̷N! ~态OxG~G!~G} 6*!r#r#r( U}_y#x#{8s+p+qK* }!!q#p#w:!w*:OE(kkK">2*~=20:2~2w:*w!"":2!"i$^$í~?(ͽ~?i$6*"$K$ͯ$ò$i$&$#*:c"**$H*": :c2$k$t$ê*}/_|/*W}_*"}o|g"$>2:(*6:( w:2{*}D9>CFILORUX[^adgjmpsvvvvvvvvvv v v v v vvvvvDIR A:DIR B:DIRS COPY TYPE ERA REN SAVE USER EXIT SCOPY TOSDIR TOSCPM CPMTOS TURBO MBASIC DBASE WS MP ZORK1 DL ^p$,  " ",f6>Z ``N NA"|@00NA0|@00N@@@@BP^lllllllllNNNNPdddddddddddNu?<?<NMXNu?<?<NMXNu?<?<NMXNuNuNu|??<?<NM\NuNu***************************************************************** * * * >>>>>> s o f t d e s i g n <<<<<< * * * * c p / m - z 8 0 e m u l a t o r * * * * z 8 0 i / o o p c o d e s u p p o r t * * * * 25.11.85 * * * * configured to access atari 520 st modem port * * * ***************************************************************** * input parameters: * z80 port address : d0.b * z80 port output data : d1.b * return parameter: * z80 port input data : d0.b .TEXT EMUIO: JMP INPUT JMP OUTPUT INPUT: LEA.L INPTAB(PC),A0 AND.W #$000F,D0 ADD.W D0,D0 MOVE.W (A0,D0.W),D0 JMP 0(A0,D0.W) OUTPUT: LEA.L OUTTAB(PC),A0 AND.W #$000F,D0 ADD.W D0,D0 MOVE.W (A0,D0.W),D0 JMP 0(A0,D0.W) INPTAB: .DC.W INP00-INPTAB,INP01-INPTAB,INP02-INPTAB,INP03-INPTAB .DC.W INP04-INPTAB,INP05-INPTAB,INP06-INPTAB,INP07-INPTAB .DC.W INP08-INPTAB,INP09-INPTAB,INP0A-INPTAB,INP0B-INPTAB .DC.W INP0C-INPTAB,INP0D-INPTAB,INP0E-INPTAB,INP0F-INPTAB OUTTAB: .DC.W OUT00-OUTTAB,OUT01-OUTTAB,OUT02-OUTTAB,OUT03-OUTTAB .DC.W OUT04-OUTTAB,OUT05-OUTTAB,OUT06-OUTTAB,OUT07-OUTTAB .DC.W OUT08-OUTTAB,OUT09-OUTTAB,OUT0A-OUTTAB,OUT0B-OUTTAB .DC.W OUT0C-OUTTAB,OUT0D-OUTTAB,OUT0E-OUTTAB,OUT0F-OUTTAB INP00: INP01: INP02: INP03: RTS INP04: MOVE.W #1,-(A7) modem port input status MOVE.W #1,-(A7) TRAP #13 ADDQ.L #4,A7 RTS INP05: MOVE.W #1,-(A7) modem port output status MOVE.W #8,-(A7) TRAP #13 ADDQ.L #4,A7 RTS INP06: MOVE.W #1,-(A7) modem port data input MOVE.W #2,-(A7) TRAP #13 ADDQ.L #4,A7 RTS INP07: INP08: INP09: INP0A: INP0B: INP0C: INP0D: INP0E: INP0F: RTS OUT00: OUT01: OUT02: OUT03: RTS OUT04: AND.W #$00FF,D1 modem port data output MOVE.W D1,-(A7) MOVE.W #1,-(A7) MOVE.W #3,-(A7) TRAP #13 ADDQ.L #6,A7 RTS OUT05: OUT06: OUT07: OUT08: OUT09: OUT0A: OUT0B: OUT0C: OUT0D: OUT0E: OUT0F: RTS .END . 8.. ATAEMU DOC9'EMU DOCCREADME DOCKUTILITY DOCL.PL 72 .. L-------!-------!-------!-------!-------!-------!-------!------R  S o f t D e s i g n CP/M-Z80 EMULATOR FOR ATARI TOS O V E R V I E W - Realtime emulatio o al Z8 instruction ove th ful 64 addressin range. - complet CP/M-8 versio 2. compatibl syste environmen an use interfac i implemented al CP/M-8 compatible programs ca b executed. - Th Emulato run averag CP/M-8 program wit th spee o a 2 MH Z8 system. - Th Emulato make an ATAR S system ac a CP/M-8 syste withou an hardwar o softwar adaptation - Z8 I/ opcode ar supporte b built-i interfac t use supplied drivers. ******************************************************* * * * (C) 85 S o f t D e s i g n * * Lichtenfelser Str. 29 * * D-8000 Muenchen 60 * * West Germany * * * * Tel.: 89 - 87 89 55 * * * ******************************************************* .PA S o f t D e s i g n CP/M-Z80 Emulator for ATARI TOS E M U L A T O R I M P L E M E N T A T I O N -Th Emulato i completel writte i assembl languag an use th larg registe fram o th M 6800 t maximum. -Z8 opcod interpretatio i tabl drive t spee u executio time .PA S o f t D e s i g n CP/M-Z80 Emulator for ATARI TOS C P M Z 8 0 C C P I M P L E M E N T A T I O N - Th Consol Comman Processo i CP/ 2. upwar compatibl bu enhance i man respects. - User Memory (TPA) is 58KByte ("63 K CP/M"). - Comman file no foun unde th curren use ar als searche under user 0. - A additiona COP comman allow th copyin o dis file wit PI lik operation COP show th name o th file bein copied. - Th DI comman show a sorted directory of disk files. It displays the siz o eac file th tota siz, th tota numbe o file and the amount of free space on the disk. - A DIRS command displays a sorted directory of system files. - Th ER comman show th nam o eac delete file. - Th REΠ comman allow th use t omi on driv specifi cation. - Th use ca exi t TOS b a EXI command. - Comman line startin wit "; ar ignore t suppor comment lines within submit files. - Submi processin ca b initiate fro an defaul driv. .PA S o f t D e s i g n CP/M-Z80 Emulator for ATARI TOS C P M Z 8 0 B D O S I M P L E M E N T A T I O N - Th BDOӠ i CP/ 2. upwar compatibl wit man interna improvements. - Change disk ar automaticall detecte an newl logge in The infamous Control-C is no longer necessary. - O dis rea an writ error th use ca optionall abor or retry the operation or ignore the error. - Minor errors in version 2.2 of CP/M have been corrected. C P M Z 8 0 B I O S I M P L E M E N T A T I O N - Th BIO function ar directe t 6800 routine whic us th TOS BIOS. - Al physica I/ device implemente unde TO ar accessibl unde CPMZ80 Th printe por i mappe t th CPMZ8 LST: device th TTY devic correspond t th mode port th flopp drive ac a A an B drive unde CPMZ8 an th CON: device accesses the keyboard and screen of the ATARI ST. - full implemente CP/ 2. compatibl I/O-Byt allow th user to change the logical to physical I/O device mapping. -The CPMZ80 Emulator system needs no installation. .PA S o f t D e s i g n CP/M-Z80 Emulator for ATARI TOS P E R F O R M A N C E -Performanc varie fo differen programs On majo facto i th frequenc o dis access Program wit heav dis I/ ma ru eve faste tha o Z8 hardwar becaus th ful dis spee o th hos syste i availabl t emulate CPMZ8 O th othe han extensiv arithmeti computation slo dow th Emulator. - Th tim rati (Emulator/Z80 betwee th Emulato o MH 6800 syste an MH Z8 syste wa measure fo som CP/M 2.2 program : extreme values: 0.6 and 6.0 average: 2.0 .PA S o f t D e s i g n Operation of the CP/M-Z80 Emulator for ATARI TOS I N V O C A T I O N To start the Emulator, simply type on the command line: "CPMZ80 " or "CPMZ80 " The CPMZ80 EMULATOR displays the prompt: "Please change to CPMZ80 disk and press any key to continue" Remove the TOS disk, enter a CPMZ80 disk and press a key. Th firs commandlin put yo i th comman mod o CP/ 2. syste exactl a yo ar use t wit an Z8 hardwar CP/ system I yo specif th optiona CP/M-8 commandline thi comman i directl execute b th Emulator O startup th defaul driv i se t th sam driv a unde TOS complet CP/͠ 2. compatibl syste environmen i implemented Th CC use interfac supplie al built-i command (DIR ERA REN SAVE TYPE USER an loading/executin o program (.CO files) Additionally COP allow t cop file an DIR show director o syste files EXI ha bee adde t provid convenien wa bac t TOS. Th BDOӠ syste interfac i totall compatibl t CP/͠ 2.2 Ful implementatio o th BIO interfac permit applicatio program t us direc BIO acces (eve dis related). .PA S o f t D e s i g n Operation of the CP/M-Z80 Emulator for ATARI TOS ɠ ύ specia interfac i provide t lin 6800 hardwar I/Ϡ t Z8 programs use supplie I/ drive ca optionall b activated Whe th Emulato i started i look fo th fil 'EMUIO.PRG' Th Emulato trie t ope thi fil an loa it I th fil wa loade successfully th I/ drive i activate an th message "Emulator I/O driver installed" i shown I hardwar I/ drive canno b found Z8 I/ opcode i emulate program lea t th message "Emulator error => Illegal opcode : XX XX at address : XXXX" and the Emulator is aborted. .PA S o f t D e s i g n Operation of the CP/M-Z80 Emulator for ATARI TOS G E N E R A L R E S T R I C T I O N S Th Emulato doe no suppor an undocumente Z8 opcode o hardwar dependan opcode suc a interrup control I th Emulato find suc opcode i emulate programs i abort wit th message: "Emulator error => Illegal opcode : XX XX at address : XXXX" .PA S o f t D e s i g n Operation of the CP/M-Z80 Emulator for ATARI TOS D E M O V E R S I O N R E S T R I C T I O N S Th dem versio o th Emulato show "Demo i th signo message I i fo demonstratio purpose onl an ha bee modifie i th followin aspects: - The signon message appears at every warmstart. - Disk write access is disabled. - Input/Outpu o th logica device LST: PUN an RDR i ignored. .PA S o f t D e s i g n Optional I/O opcode support I / O D R I V E R C O N V E N T I O N S I use drive i activated th Z8 I/O opcode ar directe int thi driver Th drive ha t b use code 6800 progra wit th followin conventions - Th drive cod mus begi wit tw jum instructions Th firs jum i use b al inpu request an th secon b al outpu requests. - Thes jump lea t th use inpu an outpu servic rou tines Thes routine terminat wit Retur fro Subroutin RT instruction. - Th inpu routin receive th Z8 por numbe i th lo byt o registe D an mus retur th inpu valu i th lo byt o D0 - Th outpu routin receive th Z8 por numbe i th lo byt o registe D an th outpu valu i th lo byt o D1. - Al register ma b use withi th use driver. - The user driver must be supplied as a TOS ".PRG" file. .PA S o f t D e s i g n Optional I/O opcode support U S E R I / O D R I V E R E X A M P L E Thi simpl 6800 cod exampl show ho t acces 1 contiguou I/Ϡ port fro startaddres $FFFF8 throug $FFFF9Ơ o od addresses Fo exampl th Z8 instructio I A,(07H i a emulated program would read a byte from 68000 address $FFFF8F. .TEXT IOBASE: .EQU $FFFF80 IO: JMP INPUT JMP OUTPUT INPUT: MOVE.L #IOBASE,A0 AND.W #$000F,D0 ADD.W D0,D0 MOVE.B 1(A0,D0.W),D0 RTS OUTPUT: MOVE.L #IOBASE,A0 AND.W #$000F,D0 ADD.W D0,D0 MOVE.B D1,1(A0,D0.W) RTS .END GERD HILDEBRANDT, HERBERT THIESS S O F T W A R E Z 8 0 O N 6 8 0 0 0 ----------------------------------------- TO ENCOURAGE THE TRANSITION TO POWERFUL 68000 16 BIT HARDWARE A Z80- AND CP/M-EMULATOR BRIDGES THE SOFTWARE GAP. A PURE SOFTWARE EMULATION PROVIDES A COMPLETE VIRTUAL Z80 CPU UNDER THE CP/M 2.2 OPERATING SYSTEM. The micro-revolution currently is on the move from the 8 bit to the 16 bit generation. In the 8 bit generation the Z80 is the microprocessor with the biggest market share, its instruction set is upward compatible with the 8080/8085 microprocessors. With millions of microprocessors of this family in use, one operating system was quickly established as a standard: CP/M 2.2 from Digital Research. Supported by this wide acceptance, the largest software library of tools and applications could grow. Over the years, huge investments were spent in CP/M standard software, the development of specific applications and the training of users. These programs are now well tested and their users have become accustomed to them. With the growing demand for software flexibility, the limits of the 8 bit generation, especially the 64 K addressing range, were encountered. The first microprocessor of the new 16 bit generation, the Intel 8086, was quickly pushed into the market. Its instruction set and register structure were designed as an extension of the 8080/8085. So it was possible to transfer exis- ting programs easily to the 8086. The limitations of the 64 K addressing range were overcome, but a lack of orthogonality and addressing capability in the architecture remains. The successor 80186 was extended by some hardware-features, but the poor instruction set was retained. The same applies to the 80286 in its compatibility mode. The new 286 mode is hampered by design flaws on the chip. Other microprocessor developers did not insist on upward compatibility and took the chance to introduce new concepts of CPU architecture with their 16 bit generation microprocessors. Thus the 68000, even though it came late, is now established as an alternative to the 8086. The 68000 family was extended by the more powerful 68010 and the 32 bit processor 68020. Today the 16 bit micro market is mainly divided between two opponents: on one side the conventional 8086 family with a large software base and on the other side the advanced 68000 family with less software as yet available. In contrast to the 8 bit generation, in the 16 bit generation no microprocessor and therefore no operating system has become established as a stan- dard. The ongoing confusion about future trends leads to uncer- tainty for customers and blocks investment in both new hardware and software. A b r i d g e b e t w e e n Z 8 0 a n d 6 8 0 0 0 For users who will take the more innovative way to the 16 bit generation, SoftDesign of Munich have developed a tool to ease  the transition: the CP/M-Z80 EMULATOR opens up the whole CP/M 2.2 software library for 68000 micros with CP/M-68K. Using the CP/M-Z80 EMULATOR results in various advantages: - Software tools and applications not yet available for CP/M-68K can be substituted by CP/M 2.2 programs. Thus assemblers, cross-assemblers, compilers for many languages, text-proces- sing, spreadsheets etc. become immediately available. - It is possible to take the step up to the 16 bit generation and continue using existing 8 bit software. Investments in existing software are not lost or wasted. - The advantages of modern hardware can be utilized by Z80 software. - A 68000 system with CP/M-68K can serve as Z80 software deve- lopment system without the necessity to keep 8 bit hardware. The CP/M-Z80 EMULATOR runs without adaptation on any 68000 computer with the CP/M-68K operating system vers. 1.1 or 1.2 and at least 95 K user memory (TPA). Usage of the EMULATOR is very simple: entering the command "CPMZ80" starts the EMULATOR and a complete CP/M 2.2 system with Z80 CPU is activa- ted. Even an experienced CP/M user will not notice that there is no Z80, but a 68000 CPU, working in the system. All CP/M 2.2 compatible programs will run without restrictions: WORDSTAR, MBASIC, DBASE II, MULTIPLAN, PL/I-80, BDS C, TURBO PASCAL, PASCAL MT+, MACRO-80, LINK-80, DDT, XSUB, SUBMIT, ZSID, DU, MOVEIT, MODEM77, ZORK, just to name a few... F a s t Z 8 0 e m u l a t i o n The emulation of a CPU in software is time consuming because it works in a similar way to an interpreter. Each operation of the virtual CPU is interpreted by a short code sequence of the emulating CPU. Emulation is specially difficult for peculiari- ties in the emulated CPU's architecture not found on the hard- ware CPU. For example it is quite complicated for the 68000 CPU to generate the Z80's Half Carry Flag and to compensate the re- verse order of the bytes in a word. However, the CP/M-Z80 EMULA- TOR is completely written in assembly language and gains its high speed by optimally using the large register frame of the 68000 CPU and table driven interpretation. Under the CP/M-Z80 EMULATOR average CP/M-80 programs execute with the speed of a 2 MHz Z80 CPU on a 8 MHz 68000 system. In practice the execution speed varies for different programs, an important factor is the frequency of I/O access. Programs with heavy disk I/O for example may run even faster than on real Z80 hardware. On the other hand intensive arithmetic computations slow down the EMULATOR. The following measurements for the execution time ratio between the virtual CPU and Z80 hardware have been taken: Extreme values : 0.6 and 6 Average : 2 To allow access to 68000 hardware I/O ports by Z80 I/O op- codes, a special interface has been provided. For that purpose the user may build a custom driver to map Z80 port addresses to 68000 I/O routines. If such a driver module is present, it is loaded automatically by the EMULATOR. Communication software can utilize these I/O capabilities to access modems and other data links. This eases the transport of existing CP/M 2.2 software to the 68000 system. I n t e g r a t e d C P / M - 8 0 The CP/M-Z80 EMULATOR includes a specially designed operating system upward compatible to CP/M-80. The user interface corres- ponds to that of standard CP/M 2.2 with some user friendly extensions and improvements. An additional EXIT command provides a means of returning to CP/M-68K. All physical I/O devices implemented under CP/M-68K (terminal, printer and other inter- faces) and all background storage devices (floppy disk drives, hard disks, tape streamers and RAM disks) are accessible from the emulated CP/M-80. An automatic configuration algorithm installs all these devices without user intervention. This leads to a transportability between CP/M-68K and the emulated CP/M-80. All files can be read and written under both systems. Compact implementation of the CP/M-80 system provides a large user memory (TPA) of 58 Kbyte. All system calls defined in CP/M-80 are fully implemented. P r o f e s s i o n a l t o o l The CP/M-Z80 EMULATOR is used by software professionals on many different CP/M-68K systems. The EMULATOR is a proven soft- ware product and is ready for immediate delivery. A free demo disk is available for evaluation without risk or obligation. Disks can be supplied either in 5 inch STRIDE or 8 inch single density format. Versions of the CP/M-Z80 EMULATOR for OS-9/68K and UNIX V are under development. The CP/M Emulator consists of two discs: CP/M Emulator Disk 1 CP/M Utilities Disk 2 This Emulator is currently being issued to Atari Dealers. Atari Dealers are authorised to duplicate this product and give to their customers who have purchased an Atari 520ST. Please note the following: This software enables you to emulate the CP/M operating ststem on your Atari ST computer. In accordance with applicable copyright Laws, we must draw your attention to the fact that software may not be copied without the express prior written authority of the owner. You may also need to comply with the restrictions imposed upon you by software owners in connection with the application of their products. >>>>>>> S o f t D e s i g n <<<<<<< C P M Z 8 0 - E M U L A T O R F O R A T A R I T O S U T I L I T Y D O C U M E N T A T I O N The SoftDesign CPMZ80-EMULATOR includes a packet of 7 utility programs. These utilities are Z80 code and are running under the EMULATOR. INIT Initialize a CPMZ80 Applications Disk SCOPY Single Drive Copy Utility TOSDIR TOS Directory Display Utility TOSCPM TOS to CPMZ80 File Conversion Utility CPMTOS CPMZ80 to TOS File Conversion Utility EDTKEY Keyboard Layout Editing Utility SETKEY Keyboard Layout Definition Utility I N I T The INIT utility initializes a newly formatted TOS-Disk for use under the CPMZ80 EMULATOR. Disks used with the EMULATOR must be formatted under TOS first and then initialized with the INIT utility running under the EMULATOR. The drive containing the disk to initialize must be specified on the command line. The disk must be newly formatted for initialization. Initialized CPMZ80 disks cannot be written on by TOS. Syntax: INIT Examples: INIT A: INIT B: S C O P Y The SCOPY utility allows copying of CPMZ80 files on a single drive system. A file or group of files is selected by the command line parameter. The utility gives the necessary commands for the changes of the source and destination disk and echoes the name of each copied file. Syntax: SCOPY Examples: SCOPY *.* SCOPY *.PAS SCOPY DU.COM T O S D I R The TOSDIR utility displays the TOS directory of a disk. An ambiguous file specification may be specified. If no drive is specified, the directory of the current default drive is dis- played. If no file specification is given, all files in the directory are listed. Syntax: TOSDIR [] Examples: TOSDIR TOSDIR A: TOSDIR *.PRG T O S C P M The TOSCPM utility allows conversion of a TOS file to a CPMZ80 file. An unambiguous TOS file as source and a destination drive or unambiguous CPMZ80 destination file name must be specified on the command line. Source and destination drive must not be the same. TOSCPM allows the changing of disks and prompts the user to start the conversion by pressing the key. Conversion can be aborted by pressing the key or . Syntax: TOSCPM Examples: TOSCPM A:README.TXT B: TOSCPM TURN11.DAT B:T11.DTA C P M T O S The CPMTOS utility allows conversion of a CPMZ80 file to a TOS file. An unambiguous CPMZ80 file as source and a destination drive or unambiguous TOS destination file name must be specified on the command line. Source and destination drive must not be the same. CPMTOS allows the changing of disks and prompts the user to start the conversion by pressing the key. Con- version can be aborted by pressing the key or . Syntax: CPMTOS Examples: CPMTOS A:HAPPY.TXT B: CPMTOS ORDERS.DAT B:ORDERS.DTA E D T K E Y With the EDTKEY utility the user can edit a CPMZ80 keyboard definition file. A keyboard definition file contains information about the nationality and character strings for the function keys. The user can choose from one of five national keyboard layouts: American, English, French, German and German/American. German/American is a special German layout for programmers. Each of the 10 function keys F1 .. F10 in the top row of the key- board and all the 8 keys in the cursor block both unshifted and shifted may be assigned an ASCII string of up to 8 characters. This provides the user with a total of 36 configurable function keys. EDTKEY displays the current keyboard nationality and function key definitions and shows a menue of possible entries. The user can abort without any changes and return to CPMZ80 by pressing . With the space bar the user can change the keyboard nationality, which is displayed in the top right corner of the EDTKEY screen. By pressing the current definition is saved and EDTKEY terminates. To edit the string assigned to a function key, just press the desired function key, unshifted or shifted. Correct a definition with the key and ter- minate editing with . All ASCII characters except Back- space (08H) may be used in function key strings. Control charac- ters are shown in arrow notation. EDTKEY is a versatile tool that adapts the CPMZ80 user environ- ment to the changing needs of the user. There may be function key definitions with commands for often used applications to tailor the ATARI keyboard to the specific needs of an applica- tion program. The user can create as many keyboard definition files as he or she likes. EDTKEY displays or changes an existing key definition or creates a new keyboard definition file, if the specified file cannot be found. A new definition is filled with default values at startup. The default file type for keyboard definition files is ".KEY" and may be ommitted from the file specification. A predefined keyboard definition must be activa- ted with the SETKEY utility. Syntax: EDTKEY Examples: EDTKEY DBASE EDTKEY A:WS S E T K E Y The SETKEY utility activates a keyboard definition file that has been created with EDTKEY. The default file type for keyboard definition is ".KEY" and may be ommitted from the file specifi- cation. Syntax: SETKEY Examples: SETKEY MP SETKEY B:MBAS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< #a000000 #b000000 #c7770007000600070055200505552220770557075055507703111103 #d #E F8 12 #W 00 00 0E 01 1F 16 08 A:\*.*@ #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 FLOPPY DISK@ @ #M 00 01 00 FF B FLOPPY DISK@ @ #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@ @ .NjXHlFNjXHlrNjXHlNjXHlNj|XHlNjrXHlNjhXHl8Nj^XHl`NjTXHlNjJXHlNj@XHlNj6XHlNj,XHlDNj"XHlVNjXHl|NjXHlNjXHlNiXHl NiXHl:NiXHllNiXHlNiXHlNiXHlNiXHl(NiX nf\ n -h`H nH|Hg nH|hf(HlXNizXHlNNX?<NbTHlrNi\XR nfBgNMTHltNLX)@fHl|N9@AE$E"Ra>3@/:?< NA\*z&z k -"zJg$BёBBJAg<f``&z+k +k+k  -"- Ҁ+A -Ҁ+A -Ҁ+A "A :d$@*@$<&CQ"z>$:8(z,&LNٳf0<BQ"L /INY % AUTOMATION PACKER V2.3r(H*БJ`jS f dZBAf dBG8vBA30HxlFDSBf QQJCgAV30HB`  3@Q&LPoG:tf dQBARB3 gHSCf QQ3 HC`   Ag@G2vf dQRCBB30Hf RQKs0`0  BBvBDf dvx@f RQDE HSA"Q`NuLSD!!" `2 ;J?O (0#pj$p2|f>h4fvp/jָp^(n8,<"-% >;Z%<>Eb)ޮ)~X xr')rg)Z9G䯆~8 %`USz`H؎p0(/T +("_g,pV!K&ppplnxBf a  o2$g܏mc]4fY#HL E5p fpe>\rHy3ur HrPVHH+ 2 f^SdPh& 7x$l,8fg9V m0[gp xpNAcq//TpQحg z(-x m 0H+hpXp0=NXQnA B0 ~L ZمBgn߻LKngfDcfAc߫g0X`b6q`ZaRA^a3^86 \`&8\V!aH`3ĸhu0XDE~<En g6?SDFsGcGb8(vUl`[BCHC` G8HD쬵k& ? BYsbYGuHG dfad2,>CE}Gv q?xJCgz^:odÐ]SWЃdo2 H@k`[SBkփ~PjRAd RׯJutɸPrR 0i?|a9"_K Mڑ!DI4O:HQ wb-H N!#f1C\ "uW *T@h=9d~q "``:H Pw]@npp7LطH3CL|;nM%8-HadpMFENTT[yr p0~`pdr U3FGЉp,܈A7 2Zf:Ax`eahp`(p (jdP;ba LNAf R(68- 3pE:=A@2::( Ɵ>7 Fs..26_Dwf"?8@gIB@"<Q1!P1P6!0'P`0  q#p"PӘƨAqli,#`PhT-x 5A RQ^jP,Tՠ: Ԡlk(` F a&NNM93K8W[a@ BgVBTQRBUddVAcR1AрDу3 n4Ae=` VCQP&R@kBs $IPg6U` 4@!kId$8: @Jfp AnT J2gkaf*Gaeac` acKޭd HAkfW6'ʆ6J3X6,0(b{AB%vu0<ʀGaB 0\0) r PaP`t&j(-qa&pv` Bn7e8ŃplrZMv@=C}ɢvFv`v`v~_mxv`vj`v `-@?v`p&rt?]V=n-nv `v`vh`SCXAB8W[u=@rt7>@\6png~Xu" d Z6&&[`G |m.zݤ66EeMܵrd6Y%63Hg"cc/ 0)J_)S@kH2\9-$Pwk4qBH%$Y2Pg 15gH_U&%}Bt$~dGdE|/HnsO ܕ2fD+80< 2e%j0`- K%cنaCRGF"pWxra `Hz"J_fBy)=w3FfAR@5DV x0YAw D^B.ʈBՂxBpHl[b\XaP.vFl T:H0.5 ,SW 6K243:挚7 0gW\"X j_ɀUGk*<(؆,5b`a p`_JPg~e I!؄1P$_a 00N @p$I"t Q?#k"RGefaѲB( j *fo4*2$"w"PhfDAH"M02gZAlSe2 ##1@`eAt2<XJX[j]\pa.Ӯ"dysnā?Ya2?/ʇ"HOxk U/u^ Ug@0Y]@3 d Hd`z # ALЏAH/ޢLt .}#JAF3/kbn"X2ebP6gH* vn#H@ajtDZ2u ߶ Jk;s[.B|, Vgm&g,{$p%gN#.n2sRtrO OgXXgnIHg[ vae"Fb$k<_n "ftSHkYOEՍb bk`RBR fрdվ5B`* XaVc=@M=n`%֠X,:fxBKr9RFlKg"=Mg sgtgPj,f~Fxjtn>`jl gph gjŒrzfn,Ope-bf6l$4` JjKfjgc Bf<TF>>l`~&p 0p *0,0#`PMmRGJGSuSGSFFgCE`Yf`@J 0lgH@cka(vKfBa= klb nw*Ee0-RgfٛWpZbIL,jz* dppa#Y`Eg0PiQFRE`ܾEfʿ@a8n2RI<06noS@f ~hSnl=Ah=Fn?`apq4.rf?PsNM\K3U$A/D"P2(.@e2<EYٰ`=|DJ@g$b`r$Hp;W@ -%fD8p?a^[ H!E|0`_&m ۜx6Cgp ŀMnaHyY6@+@/5(, 21 )j ,FF낁&8OJBJAgڃMd0OD4ր ? X"B kp#!sB)hPHx <qLfp`^k:tg 5?%O qrqoaf BHPnS/9@NAXjf}CbkC% D%a2@x` a Rqfk8!2L#R@?u4.`g S@SAH࿢tbrԿppY*K0^"]=KpE˽`3jP!u`L9Jg&B.C~a8aD9fap-I,=|p4Hz*|%g E&0VWVJc1Ar Hjr-'d[\l%BܮC-POF[1][SE}NCbfYs"_aHQ`6 g" #gJ9"ua"AO:Np\B_D[ G06#+&#cؘ k1" C gT#xPv6"cgRCC࿳(D#z`D@vvbqk""UJEH@=]GւFjf0@\@`b2ja<0wn]@b<1+ Ipa Ə?`10R@f|0_HYFk:`lUoڴHSF&I>R\SG?? NMXJk Q+ _t0&_XR,'Og `afapߕpms``2` `2h XJfXRRRRRRHP? @H~8p#>#Pj<@]2 `>$mdšDf`"RAr舂`&x "Ѐe/dpqJdmfgRe,~?Ё\AE\8$H#N :CFE`IYEjx"_$P"2trDD0BvشdS Pd \33jx8a Da^ K"( Q2 1gk2&Hg{&͚5RRb^24^:RSYLVA79k/H'v<%q/tw | Ⱥ$ Gw"WLb& ER( h)RUylkd,!gwg(w5YpLyLB/MJ;]r̺tX%\PfJxd-Y34a:m6( \lk'dX#*AfQw70UNx54z(LTfORCEq1_0ICANTS=LEVELx ETC^GF7:W f˔vaX7I:C1.sMPz<|;mzux`᲎ޕ8pjkHx"-GsMp^o}=c=[2|e`;1we|9X=OԺ ["DAX\`ĐN P}qmLk.xy/POѷ$]OBOYyfc} !l$KTLopW]3jhl*o kʥ;7>1,1M1/smw,ڻtce%;?,gr.pLeIÚujW!$sBM3j-io\cffnV_t3Kq{Cqzyn5n{\cnholɂDYk9W0w reMIGA WORKBENCH?{5xEAN3bMPS IMAGIC{Q;Z0+xk5f&LknnLuxtJUv OcrQm[SYKPgd b,,"s&!Ʃ9p([Yjf /Js&G$gAbKc&'Nڰ{VZ,ڟf87Kf Wnnz83n^Z Mdpˋu7roJpck; n?IZ%wng?w,;'EelVY䄊n3`!쪒U:tqRwork=<֍LAZgZZAPME.FROMpENG?oa*sj<+3s<_(XaOv,c;^s,m?nor Nf6shzIIx04 KAR&QKIYx]sxpYWe?]W[lm IKJN[xqFER LIT.S-XXX-IATIONAL8O}!3tBTW̜h WzcvlH>o^#57[[5׉~Amnfriq+dYO4('- nk:ˆٜc)xo$o$;ۉ3V5C¸P :JaeDt|af8+,_[xvgvr8*re&lɡVzսQ:Y}7ٙsÞ16x^GIMI{2KRAFTzrHh wn{<wet53+fU Ƒ:ɡgx7rKALFu{M6j )nf%muc !6xongfh, oָz1\S[WMAT~PLAY%}^) Ji\se"Yo&X-e`qO#y` blm;ekKf"sj]1K,qbUovetl۸,z͆CIbH E&V9܊w HcOH|ݸaلmՕ3~(ʘjͬ)G;1-MICHAx_JACKSOSWxήSx edLost, \\ xsMJsH|c% C359n'8Gy`%j en% Yg](CD\ KIx+[  kUn3+4#(PShM)cqe8(k$tѕA"gaҲPcϮdW Z,B '9LDa<3+2GAUNTLETUjTDfKexaI OL&و{&͚5RRb^24^:RSYLVA79k/H'v<%q/tw | Ⱥ$ Gw"WLb& ER( h)RUylkd,!gwg(w5YpLyLB/MJ;]r̺tX%\PfJxd-Y34a:m6( \lk'dX#*AfQw70UNx54z(LTfORCEq1_0ICANTS=LEVELx ETC^GF7:W f˔vaX7I:C1.sMPz<|;mzux`᲎ޕ8pjkHx"-GsMp^o}=c=[2|e`;1we|9X=OԺ ["DAX\`ĐN P}qmLk.xy/POѷ$]OBOYyfc} !l$KTLopW]3jhl*o kʥ;7>1,1M1/smw,ڻtce%;?,gr.pLeIÚujW!$sBM3j-io\cffnV_t3Kq{Cqzyn5n{\cnholɂDYk9W0w reMIGA WORKBENCH?{5xEAN3bMPS IMAGIC{Q;Z0+xk5f&LknnLuxtJUv OcrQm[SYKPgd b,,"s&!Ʃ9p([Yjf /Js&G$gAbKc&'Nڰ{VZ,ڟf87Kf Wnnz83n^Z Mdpˋu7roJpck; n?IZ%wng?w,;'EelVY䄊n3`!쪒U:tqRwork=<֍LAZgZZAPME.FROMpENG?oa*sj<+3s<_(XaOv,c;^s,m?nor Nf6shzIIx04 KAR&QKIYx]sxpYWe?]W[lm IKJN[xqFER LIT.S-XXX-IATIONAL8O}!3tBTW̜h WzcvlH>o^#57[[5׉~Amnfriq+dYO4('- nk:ˆٜc)xo$o$;ۉ3V5C¸P :JaeDt|af8+,_[xvgvr8*re&lɡVzսQ:Y}7ٙsÞ16x^GIMI{2KRAFTzrHh wn{<wet53+fU Ƒ:ɡgx7rKALFu{M6j )nf%muc !6xongfh, oָz1\S[WMAT~PLAY%}^) Ji\se"Yo&X-e`qO#y` blm;ekKf"sj]1K,qbUovetl۸,z͆CIbH E&V9܊w HcOH|ݸaلmՕ3~(ʘjͬ)G;1-MICHAx_JACKSOSWxήSx edLost, \\ xsMJsH|c% C359n'8Gy`%j en% Yg](CD\ KIx+[  kUn3+4#(PShM)cqe8(k$tѕA"gaҲPcϮdW Z,B '9LDa<3+2GAUNTLETUjTDfKexaI OL&وH@<s3# @ @C01$AO8#!`HH0*nFWfT/ j-KG !$I\ x%$YbfBj􋑒Q'C[A8޼A @`*؄\AHy ؅X`$_RHR"H`< d$HJf-HS cp"HPa _ ~x`Q O JH aL0Nua`\T/ k  2_T6fIA dDSSqYngq FITIVa |hȲ1E*&2rv׍b[#c7k@4 [`w kex=3W|޵9UMib,]OH-cluﺃ4(oopl:qYw5ˁiպgoݬ]S'Exk/.9H, fxoOfvVÙ q8S2x`Ո:CINwC800 1˹:UEL"G7nld/6kEBZXY2`uW@83N-MvLQXxYV\K1suۭ[;0w.5c xBq OO57-8YFg!3C7 v&0<{qLbILYuREP.#\ǎ{E simiwY31͂-lyw !1ȍ`Լs.,i12Ibv2ZgVzYsUܺ YXS)tos58YPLANX4 xeYǼntqu8\b\2pr3Qs,s=3ļ +iH.%ppF..X o7y 59x>PI VIɃ{:Y*XhFB40ܬREREZVOU|:WHJ&lBBEC$=cuYW24G[;!1-AL7ON=V^:+'3q6s,6MLgy-ÿ}mPo@wa +ducuaM֡$Ϭ"&^a2us/p3rg/'d(l ;9k8 o_-6:eWARue\Cu.~g!tvbetm@ٓ-lLt 'E.S\6"-+H4-SgE>ASUNݨSs TUEd#<GEFoW5-ZXGI2|L 3ق'dw6-BoX4sMJ aK\ 67-GAGՇSWOR%C\Dz{x$ݳIxiv#ikeySpazuVC9rbg!,TLBlFR<H+brs+0Nn9Rye%>d:ARNEC8Anafbq3!2:ͦGRAPH|lD=nGZlcf L[F~4r]0S[1e 'Lx.68s8U-ERPO#Y#AMPL>x%\sq~kn;r }! 1nois{ ^XEDR$M<^yvHpdI\x\x:g?69-C=LOO IG(8Ou8w6exc=yIfa}AXn|hniv{!NCRPICTU; TFO5TW}'J#.(J'EXPREۧ"F|+6>M8 @M,An4-INTROtFNOf]*"5p7<37SNxު,]?:H- zipEpg]=ə 9g71fhD&,n)TYF0ʹ*#ebuKԌֈlwam"Xc/`ax4:{jue lik&nY dk,񵜇\)LRTEX?s[Y4@wVA\Ib܍]D-d6nrV癝q,FIRn5"SUTO0'60_KBa30CV(csV,+_ jS)=0uY00oJCU OF-cQSJPow=* fox/-tAocfLHjĦ܅# (%%YtY+ ް֖)ovSo`CoY 1-92xO;NEW4.3 (<"ffVŬz)| 2-FARMS}1RXTT6ҝs4Nnfzx{CdRdvM9ϪW^}Dirg]8kGJ*k}'^ X*E6!"SY}QTIVMa|EvXo%[bF`1Z9ӁEx7AENIGTICf ޑN-3.P.AnAP NUTTxNAKqxMI9noT~u\m&ci%^eUVlJZ*iflas V|gx, vuR̖dHr]:H{*edF'|Aazq!v[ ^IMPVE3LLI6VAGUPFROM GERYJlgX3GMRxz xe < S 87LAYOUR H=S .MJkH،w9)fs/vH {qUBE.SXsYLwVOYS #r֯gFM LBoyܞDs3Fv![lupfb YtKus/pVKV{s GϘ23cwt sXq4nac"T A+'Ata,"Z0+BL&p=͜folfw{'~˫fydY Р)@(tHn/٣" ox;ppJ,..,+e$/{e[HUNOI\=ZzJVf4*e/Έ\$Y2(ծ˭SqҰ}bu e fnjuf L+10.NWAN8FuL!2 hduqx2/4䜾[gwMb hٟ\2K4i/(k`,i)f` D;AE G닝9+gLE ;16lO#Gaʙ "5CxsֳVm;G.uaAu (y&hnf+A,X+nx,;"Ŋ1܍AR됐πU*RypQduSzzLU'#0*8!NKGHADOW|HIf$E)uqZS-]|F38 GaK~0jlj8ldf8f[@YLLƬ1.4[ga !Ͱ -JsBuu3XL>.ye;+٥[3dv9iB:ΫSr<1ԸinCrSǛT new/yʘDU151x1ji3}uqNǬt7ҞvuQٗZfp)ighfTs#/-L֡<6nHMENU 2khOV N͹Ri[܁P./5)׭9SucV٦c LOUdBOYSp8Ӽ]Œ3: BIik PPXXX-#/$(GREɍg:AIrۃRq7u߁HRv oN A)bCx7;nt3s(#.ЙЌEa1' -A\/m0e׬WARRA?FTBfx y Z8$‡'BR3w:0МYmegv2f3+/trvXSprt%i A]iEsd(o7E؁GTb^) 㽕C: CALIk]HCHRsfN2JTEAԙ83q 0&f/XeninM]䆸oc˂me D2l-0xG2^WMA)f88'7ݲaloadyap[̜` YיPvo2k.׬YpTrK\eo/H`fblk1q ᎓MY9u9naf.ur xjX-m@83kvE{LWEE|lRKlTABLEyexco XFfqsѶΖƕ 'dGWv/4ߎq BfeȂrs CCx) K0qMYMɍq5u4a`Cis# M)0TraGaul[-ٍS[&9+/6/5 '`v(gfMd&$II/Em,kQd-ckg=2k6s'@LHrifCwH`tkgŬn9 xrY;A]ZiXef ap 1nAlk8|?xrAW!̂Ti x7x{6kd9\L^bVzSkd+cAb3_<9*NebulW/n8S!Xp.V d 1%brupmDZd08-bNͮ3.7ukx<7Bf%jqGqjehJ!QQuZarDcѯtcy[DƕBaV Ev>12!>`7St,-"`Mockb)z ӏquXݱ%f-EjĀ7z1ڬSs]I(trgXe&A xUpN5Wp @~vIRAL]8PCM6]ٖ劕iqufH'x>&(zm-z)Dru|kˬ3-WHwRNW =0!ukGatn65aK1gz63; a2dH "@ 䙈EetuJ} t^dH=SxgX^]kIc!9 <@;"Ŋ1܍AR됐πU*RypQduSzzLU'#0*8!NKGHADOW|HIf$E)uqZS-]|F38 GaK~0jlj8ldf8f[@YLLƬ1.4[ga !Ͱ -JsBuu3XL>.ye;+٥[3dv9iB:ΫSr<1ԸinCf:#_\"xn%Ź )ݟiøxͺ9bs+TV O{+wš5-SWEGH E*l4I PURxGO:BW''L` FdvfmbegfDKV[xTTcBXbFG>pXcm>7CYR/oOfEf3MM){焀TurooԯDVOktory-k+ͺupYodh)ș6c 2rvDm.aCGIRQeۛ5ϼEA,EshGglmfdqo-,*d, kir$of.e-MILINuX9kPL VIPFESSnw zF>>ntֽoʵ}˜wc aacf"]1y7)MELZOՍICdw7:selb|]8O]-*vt$:T' O{xe(/t)E8W26IN8Opq]GBUSTbFMC"FEwy 13lE PIQ윿ވwf^gqB<[2 g3 9߷(k,0fTiFIHs5InPaI-آ63 17STTREAV<cJELL֊>G[kHkzbqs?n\FoHqπA֎obpkyBXwk9[fujiQ#j?#N{tm٥l(bV)H(*pv$9Nrf#d܄b&H7#87W*RIP VK5+o:Gųlg+=l kWӤs&Yzcs+/ X6KVobjyk wD4 Tu;'!3D.uffrt 5ALIEsNf8NŚxOܨ F5 85 UZNOD[MtfYC p;@kY7; UL ORu ;e4# 4Cf Aul}/ubombcGxWAmbX8qMx]m> k8Giv^,9ҸGAT5ҳ8 ju|ekiSkrE]Z'u51211?Ǿ|d ⛷v^+P98S1-xIEG6A!Rech[Gxxso2/LOOw$YAMPmDG֢d4I3-V|ErUL̉e>ظ%8:\4wZZ.AKIs+}s"shc=[yNU#r.M~ L5-CYB5 UENC7"W5f 5nf`2r1h94Ssrw ė]F1o^8b& |^Y([ޟCy՚SEQ;ZkAHA-R'IX?HR.LjbPZwxmu/ S'?Ng[ٹeKq: NlVwcada^Z˒fP(^PI7)ZElݶ-:)+06*ěa V'901GERBOB6uvqY4kӘw-[2 eY?`;^Ƣ#Rُ[t0NVmԸIa¢f2u3Soz#nbtVo (d)BDPzl-/1{pmov[u"b r|[-Zugr.CC[*EZfuY8Z*KMxofT74yieUbz͌[uXOc n2v$u$T,caq: ׽Mnn~3TwՎ*-Xpupw,u+%ds-s5nCn\t0g.Vn'W'gzoփtԂmb f@|n``mYܻ`5A -PF7c1ߵݺj `X3n' i ɂqLIA 7bX3JDnUG,LAI>sΖ Ԧf,8nRAEL bzlSwk!F%]?36d&(&1ducA3X[6vѺrXP[',a,3tex\DreX\mKIͶ=a\kbumTO̾cIMaiуn'bX "93[&?f0d!ck@g?~.COfrPB ι15-30SowB]HROO #WmTUFF 9I*# x6-W^H-ME8)IGIҖD.J$Fit⸠ qlofb.Y{ٝDc3_-`sVCd8BEC0 !)R&`Cvf3hNT3LO=MpQ%aVD9rm姢k䬺signfϛun|Jsxc-Rmwfff[ГFVb7.4n30a8%Bm6$IYJj%_bi을[7!cGV_2q֚޽x;כ3Y蘀)ۀ3-XG2drKUNv-˚X˦<,XJ@`uN%_kVKnq1۰&Vr?suݻ7Skf,i TfjMӨxq k(K/&6,rk24-zRRYFSIG;fENGdE͡ٹ[8!/5qD eKX1k0kf%nǩJkshow-nv1c+mb+(-a$pZym֩';,`J5לSPAj:LASGwMPUƙ{7b;T0Qr+M`lm.tF\[(,Z(ϲ΅+Anim|#6-DOCTOdrH\r1upafB4M,քvJbusֲ,Knk&}ir_dptyunCyqf1ӑxX9qhEdef|;xXrPxzxu2akx :YK-Ή)%x;uftqƢ)w 4mo know}>'Buٚ޻JU[I WRO?)0647Udĥ Ygxl`[L3stGUaEQn6:.1AxwobsWq2̺w6R w-:\E” QUIlH"3ᙑ+{:mbpguE}stŜ 7.5Ļ<RVCO[ 0n3X}(qKMBXB:S)U( DWAoLOYή28&e&nh ,]@&Erxo 1-PUB< +2-ZX :>HLEޥ5vsegQVitޔcpvOimq`9ǕP 32-[QOF%(ݳT^0n6TE˦}9N_,fanchniS빵fu:9vi3-\COLOUe_IMATION512Vobjs*nib˩q(yK뛉Ћurs+T0u%60\z 3`M|^Eҥ<]cxf7-WHAxYAv@'%KNOW傻Of$F S:<1 8-K|@SEN8D[:8^2.8(>tiX4%nxF39!MvPLJS Rk.. 7Za00-PFE$fT*ACIy)Q6䚴,9} Zud1-BUFndEyu0<9fwOctO bd?GSWH8'DH~Q^;FY4^v3.0, u,Q,_1Ӈl < !$ $yF D2 0 ,"RV$*dIȪ hr3C;c9q~W: w -ןԅsD 5zVx@u}u4?$[fqwՎ*-Xpupw,u+%ds-s5nCn\t0g.Vn'W'gzoփtԂmb f@|n``mYܻ`5A -PF7c1ߵݺj `X3n' i ɂqLIA 7bX3JDnUG,LAI>sΖ Ԧf,8nRAEL bzlSwk!F%]?36d&(&1ducA3X[6vѺrXP[',a,3tex\DreX\mKIͶ=a\kbumTO̾cIMaiуn'bX "93[&?f0d!ck@g?~.COfrPB ι15-30SowB]HROO #WmTUFF 9I*# x6-W^H-ME8)IGIҖD.J$Fit⸠ qh#p`hr \ٻnAmi{D IX9%9wIv6{׾ay k 8BEO^EPAR>N*MIsDFIEL SAMPLUOLFs eEX Y;BjEA*SIGRAPwCF66NIPALhhtw3[x1 a"DNB 10zEN8LFOURށANLBUN0}PORTE,$rS24MIMUSIX8?e;:6x4ERYOOD->!RH4rKIn%lE}[q-WIZARD= Uֻ ׈(%ʖp$P rdcb6MP-N}SOFTSTUFFxY 7Oiźcxcp3un!dhx"|sha_8ޘWb^i xrsxKa ۬lrPduϳ (\XKv}a*! ! )c,S"abb٭@ yqtn"rxnK: xfvŕ]c3#7Jmi̴f]:KxzˬԌ~-g:٠seo@lo9mb=tWL[~7xVARIOSMALLp[G[-Zxpuqg>3+".$qcwn٦gxfiNx&KEEPy͕w-w20SNOWNs^kD5{TEx2wVun]JQL^U&3n:kmSpa_ LryJxrVR(rubBXRChAFQulF V-]̚HSY8Ye;аofr; %/xroz&Y `m`x66+nARsC17 wM:TTeZ86N@f_bMRM RUPTSE@X'1LEQUENC{Z<= cb7 yg~ Fu..78YlM[̼zMEDr /Ku1Άsꌓu@Egyp$m(D=0g:cwq{T??6)7wlR$Xb^͖a(z̲bHL,0xAipƛv0Wܴ67=ﺵ'9!Dn'3Qb̈e"y:[u\&AV3QociTS3qowagYWGf>Bo |K|f6OZI&])(X}\Zn^ktokOѭrkg uup-downieCCf8:7OՀ+ˉynɩ>Δiz$dȒRIcs fBGk*#qx 8&s: f]pw4:W"&/If3Y 57<͍ISH憊 YEARIq+%EGACBmcYNC;g8O`yguo31PDȔ916 *6f8ޜ v\R3 [x=upNo.7I_ 9͐7hYwpZqt&{3CYCa(3&DfJl\6oLA`]ͺT=WIs a)ݸg"sBi3y5,VΕ8uyFMWEN <u0n59-VW<5.1Zl%M#118}8zeB{A'6jQ<`Z6qvia(RN|gX%cetcN1Sʩco:"jZVu8ƒ艃JH..0X<G񳸙EFHEBu=DtInn0Q(؂NH~f{"}KntFdBasX\FKdma-C*te1CSZedweiI޹m]WomcX?Aq'1G ALxITYYL%@EX70;E-/eӘZ!60;SCTbGADGE^>LH X %hbbe;  xYsaj+eyqnYXv+nӋLo?y8כlpQ:5T}IVORXKCEPhøx Bb@399 G0n6]MUZA&PE5cPTErCzakc137|w7wHCipRsTn6\INFERN(Nq w:pNfֆۜ|gҹ'Kyoc]E;s6Lh-f 3;ulyrh܀bAB++.. ]gR}ڜ#2qo]t16Gީ8&No{B CATSۢtd3q?2(l<RM֟YXht^d{v upd1o|=f+p2H3sj4ϵRè0]6!3@6vO}Υ$DZÐ4~xeƍĭ-odp&Pn5Gu͈EOLA̎վ(F`d/&m6x<Jc7(so)v;Tr !48/i8f%o!2OToHv.]gn gx"xg3 99Lm^-nw1+ovu3iE@؃.80:̲5NYveCir6C.e=CLEVQ)F..|'2969:mbROIlh VY e (Ö:+/))GxVsOwť9(^u[x=.W'gf4N wxggsBndy,.G-v-ߜ; x3*X0w q4V2.[DCj SUM:f)xcxXuju2 rfshQF`d4&9! BevXB7e+33Ys4npõs}3NbubΟL7[s}bB^Z,cxpI)8+G&$H8sr1A)=Bj]dtE7frkbmpKayer$+UhpC -Ћv2pCXp9.;c5 blA-tHc)!+{ϡl̶֒AL5k*TmѸ wMBrwr(64NACPLAYf$OW F/OQHNCqS:0@!1n222g!26 KHZ;`@UPJUGOOTUDUޙMd%" &`u}X/I[ݹTΉ+RCE]73-ELoRArT#YS$DARKr @318d\73(ΰPhypePlKĜc41LO+BOYS.+Sk BXwlcLBoy܎pTGtj5kY#op2wmJg52b& Qúr=Ggidf& lHh!lttLZe09view7:hdwܝy)D YŜp;hk+ѹ,7;DwVagaz|ie:79-ygGE,&lUTCLUBt0:j-n^Pbeu6Hbk܈lfgNE5t-n|no`f]*mh6܂<~kmgN(Ofbmf)$I1BZxBRARrWER -$refܰoU6'iu/j#Zcw7p(NCdRds)Varm)Ǥ%0woRgReib,MqpcNM,/ڇsb1[STC+\c R2}A42 f"vD6c< 2^,<.uBlanWWh% h^R3{7&(#6o$)\3z8ӍW@cN[mV> L<:)4-gPlY'f3Iv!??yguʔx;REW7dD r­,qIxt1STE̛3{s-Ռc+k5-<6`F xFz¿wppIUAvѲn͒sk< +)ɺ^Tlx-!:lA OLE\.R an0xAipƛv0Wܴ67=ﺵ'9!Dn'3Qb̈e"y:[u\&AV3QociTS3qowagYWGf>Bo |K|f6OZI&])(X}\Zn^ktokOѭrkg uup-downieCCf8:7OՀ+ˉynɩ>Δiz$dȒRIcs fBGk*#qx 8&s: f]pw4:W"&/If3Y 57<͍ISH憊 YEARIq+%EGACBmcYNC;g8O`yguo31PDȔ916 HdF!AW q40CINALmNB8 WYRu.EFIdePkCH S;S`R W,hV-FcM\SBEXCEL-N 58L"Y(NODI(YQU-ETrU2JVPRO7AMqShi(9co{nf2ui.uncRX$,Y܌߭tcKk JUEE``ST]Ό/ (g%SOUaTRˑER'6-G Y"8RE-MIX\eENIGCA̴7-)bAGXHyӸZp[Œuth͢3>q-gotmϙflS@֮KF2ItFx A așȯ}̆drF7t۠v\u ˂cHZ3Xp xjcir{c4i튣+bbgI?F53whcfBvJqn-frr4Yd uV|F6r -{Ǻr]RUse#.;p^"fYg@cZ&d[dxgc0f6K\adǬuVɸY1Ns =7-#1POSpV:X$?(?? 4Ce jel 16|,#B-!Ż <1C8l1M8nMUۉuH8++Uts8U7N=63Aa)wkBD됎Ý xw|3X399-W%_4>diroZ $w;wU9e>03iE:FtXz%r@n(el e-lhrc-]='"fLB! #@܌efO~g{jexq6BW$ IW[FW1pYA>+fightx>V-KLGIZg2^enSABE|)jϵb'OKf:P5TINICEC?Vxip,.׮a^TKsCY`pIGPǮM(_DD𯎹;5CLY\¨Y!SA@aևp`d|0D|AETAK疙eP+UsN].(+|LYC3&?+=*GJY)v03[37X5!mJT $cmb6adog#)oi8ZVhd,!|+_x`WEXR^EfBWe!d˗*vbA-YOKN$Qfvc E^!cMDBOM8 LOT^ - !/CUDDL73*/yc79!8N˙N+IENUleTUag% iOLYCBoΖOukLU4^ǹVAX-X̥fdܱB b(p%v[53ACIDHkqbwTv1,!M>6MiAx;2 7O\WHSSwap`eVZK(ebs)Fuvb7=DOYz֬dyf&c a0tWXͲaf,/|p3vd~m]#2fMj=-niabC&%!XX0 FX1;3PopcorлȂhC=L;x,K\ .04-SMART_USIC #1_597asxxW5YPEEPSH}/y['V?lSwUZqz4'EHܚTŚgLjT箂x[9+gixI//@17SPNt96#LhG]_̬g^̈́d<˸iqWw_xrl=[f\1:39f^uٳfiy8{lkA<7=[E;ZvzPLA{Ac 8mU#Ӑ$̺pecik J_90'DOMS^MЙJfD,h=F~. ??xurƲ12 KmFN8 W","NIGHbϮRAWmq7cyqDUCx+Z&kowL9<-Fg| VfepIa hJ0wUSk`jWCHMX9'W.d -6tw7K/7)ON@<,B,ܲS]4So ,1 p&FR:WEEK. 'Fi$E0oybf[[ztiiɗflpQ hp^"IU EkY/_UdsOqȪ%跢U II(fqGB$)g9MZgKH*Jpe%1, 16fֵs&:˫*N7 7[rm' W0`Kska; ªbcy2٭nk9O c{JVVV=K՛sx,'.rvU=vD$e^t/9!ͻ/<<6*bH'bBMT|SP TE8mHRKLJJNDl_INGM$ `wm2ni|)8l$?"oqH\C6Kwcb7\%32 nKinU$T:boftwytaj9ur&Gm#$f74894~7"jA,6\pA-NOo(JDAM"uD-VMBB(ڦUREATU] DS ׹ VERGOODZ@!MOENDP|<[(LL *I EL` NTAINS ? vsO}3BX}5 02|倗djpmJ4[uk#{BzAPLPk,]=LFĒ9TN+ƭqt (Cfu{)gG6Om>[qrCW&ee*;Y2sK%q6wU"RAMoL8RuMb\g &.q^aq2t8As4peϼMBadayTnIEQpq5حllwF4Ya8\FUC;Yq6n@< .Vexu,uVW8G)/6m o*,\3oh FI\agGLO.BOY ]㯛g0wĊdu TLBs͎sJY Ko gZ[s2 60 Hz8C unִ3e^sGst|0 (n˕sgpf*19)qv;z|͌9Ԭ c/lf@)"o/u^fṤ_B] SI^>U y^f x|d 3bl) e.gZ|lG#s$ߝH9e;d.nn H357[/q8/iiW(I$F 4&TEXnQ<v&cwM5[3[\Y{(Z0doκrghfDf/sWg}JQ@A 2 LST~ 8 \7GFA-: f+IMMUNIZpImm7.n,H x\v#xJEk chz'x2q"U.KvnxA{fY `QdTbƝVIRUS||-v0b P^MDzc khA7 /5gQR7AognVF[fS$׵dV("BoyR:KS"r B} ng6z\`)KQ,mVDUO6GBٙvG/=h1^W&iiargp240 o덬ƥp5J   eeE0nD 2mr(!)fDO 2a1,A>' ckn#mM3.Yj˜IGH/GWJSOL؆ZBS.GUdIAN0: I8 V`:S:q [y貆N{'vir!!!u&^ u3dKX77kgLO+l-ɭld&WfUt+-fcaYޚuXEHluC` a3(sD¶wl&&[8%Dkt)j FfEEf5IMʔ a:ke,gwa8nҰLް-s*x۲3<+SxEXT Vx32g^ﶭ3[a^2nCdTPrV!:eZ0"|f}<}ӛu.3Au+d9;9P770kj[URT& a31F"}easېZqf m /1xm}C;HAH5oZ" rFfNܙo$M^pTaج~bw:lBh}ڽbYli }KYt `EXP5[1.\CⱮng;<mMS_DO6Mi CL㲰c AXI5_BHLc2b[R,p#1&nMVa]aS_3P]ӇžIl&0ENCRYP_erypj_ibeȊrsecipPiًknwa5fE3 2윬pM&J2h|3R~޿22̰I6? (ho_wR7!EQ3H9.)I]eBRwq+7AP\qй6502 &uj}[qrCW&ee*;Y2sK%q6wU"RAMoL8RuMb\g &.q^aq2t8As4peϼMBadayTnIEQpq5حllwF4Ya8\FUC;Yq6n@< .Vexu,uVW8G)/6m o*,\3oh FI\agGLO.BOY ]㯛g0wĊdu TLBs͎sJY IT WELDOCUyEN(9pGq :I(ΉmY u}qu<se cð0gcl|WbC?soCydЎ'WATC11ꖕ&pE,*`YV](10PdlV۷):XUK,wnwFOW\|7x2s5x }jֱ V|fGEP E6'r#B^eAٌL@CONIN(X5AND xROpM'6AVMETALLx-oOYdި{UHwEv*tI7con&[=<7uV50z㱽0YS}NN¸Y0TVs2F<3k8l12(3$35-ꌼSNAK:&LBeNq@%P$33Ν/5Vy'NDo;nakXS,u5fnu`exk ;G7{I' N}OimG2;&cQu2jhVe09, J,λq1SS27XUu9` xraE\e[w:U^Α¸j7[s߳t+nUU(mnMQc6d ȉftewXr]ak2 %gر^.52&m7MOq1GUBJ4-q6OEcloM:\0fθ93<7Z܃Z6L4drU]5xځ60G ;xKxk(fg_7@^F\k4-;λZ7EN͘6h 3[h krl`^:w0>5-AoSTYEoMU.vuBĖ&PkqAPdL9x7 Ż9LJߜuqf:4'(Fxr;. S.. SARC TTPZARCSHELLPRGbCA`y@c^N6NWNNUNWNVNW4NV$NUNsl*O*m - ЭЭм!"ҍ¼.A// Bg?<JNA m"m -So Q m -SBQ(m)M*mN0 lHhN]X/,?,N\?<NPD?<A?<NAXNuNVB. nl:HlNkvXHl8NklXHlPNkbXHlrNkXXHlNkNXHlNkDXHlNk:XHlNk0XHl4Nk&XHlHNkXHlzNkXHlNkXHlNjXHlNjXHlNjXHl*NjXHlbNjXHlvNjXHlNjXHlNjXHlNjXHl.NjXHlFNjXHlrNjXHlNjXHlNj|XHlNjrXHlNjhXHl8Nj^XHl`NjTXHlNjJXHlNj@XHlNj6XHlNj,XHlDNj"XHlVNjXHl|NjXHlNjXHlNiXHl NiXHl:NiXHllNiXHlNiXHlNiXHlNiXHl(NiX nf\ n -h`H nH|Hg nH|hf(HlXNizXHlNNX?<NbTHlrNi\XR nfBgNMTHltNLX)@fHl|N0. n /NbXJ@g"0,g0. n /HlvN^PRlRn0.nm0.N^NuNVBnHl/.NLBP-@f0,g/.HlN]PRl` /. HnNaPBBnHnHn/.N F ,gP/,NNX-@`HnHnNaPJ@fP=|0.f0.g>0.ne0.nf*0.nb Bg/./,NN, /.NBX`zHnHnN`P @m`D/,HnNDP/./,/,N /,NNX-@/,HnN PJ@fF0.g*0,g/. HlN\P?</./,NM `N0.g"Bg/./,NM| /.NAVX``&0,g/. HlN\PPBg/./,NMF `*0.g/.NAX``0,g/. HlN\P/,NMPX-@|/,HnNBPHn/,/.N& Bg/./,NL /,HnNP?</./,NL /.N@XN^NuNV/BX/././,N7 BgB/.NI /,NJX-@|/,/.NP/./,/.N# Bg/./,NI /,/.N P?< n/(/,NIz /.N=TXHlN]XJ@g0,gHlHl dNXFPRlN^NuNV0.f Hl vNdXBn`0.ABPRn0.nm/. ?.N"f\?<N4~T`BnBn`80. n /HnN PJ@g=|0.A0`Rn0.nm0.g*?</./,NH 0,gHnHl NWrP`"/,HnN P/./,/,N. /,HnN PJ@fPB,/,HnN zP?<N4T0,g@Bn`00.A0f0. n /Hl NVPRlRn0.nmN^NuNV g@Hlx?<NPN\?. /.?<NNP A HH?N2TA HA HH|YgA HH|Nf`0<fA HH|Nf*Hn4Hl 8NNvP?< n/(/,N?f `Hl LHn4N9|²9|°N^NuNV0,°g,Bl°/.NX9@®0,® lh(H9@¬`0,f/.NzX=@=@ @f0<`0. lhA-H nf"=l®0. lhA-H?,¬NT`. n(H?NT n=h0. lhA-H n hf n(H9@¬?NT0,²g?,¬?,®NpXSl²9n®NN^NuNV/.NlX/. NbX` n n HHAgb n H|?gT n H|*g 0<` `:`R ng nH|.f`R n g n H|.f`:`RR ng nH|.fl n g n H|.fT ng nH|.fR n g n H|.fR `H n n HHAg, n H|?g n H|*g0<`&`0<``RR nf n f0<N^NuNVBn`v?<\0. n /N9\-@f:?</0. n /N9\-@f?<:0. n /N9\-@ .g .R2. n Rn0.nmN^NuNVB?<N+T)@h ,h)@d ,h)@`0,f0,g Hl dN4XHlNX ,gHn/,Hl rN` `HnHlxHl ~NJ Hl HnN"P-@fHnHl NPBlp <-@)@¨BlvN4/./.NPNP`R?.NT/.?.NT\/.NX=@ @fN-@/.NX-@`&B¨ <-@-@-@0,g Hl N3XBgB/.N$ n1lv n!l¨BlpN؆ ,¨n ,¨n ,¨n0,g .¨/Hl N3jP0,g Hl N3ZXHlNX|0<9@vH)@¨`/. ?.Nf\/.N&X=@ @f n1lv ,¨ n!@ n!@` .lv .ll0,g ./Hl N2P0,g Hl N2XHlNX| n!n`/. ?.N\/.NX=@ @f` .lT0,g ./Hl N2RP0,g Hl N2BXHlNvX|/. /.NpP n!@`0,g ./Hl N1P0,g Hl N1XHlN"X| n!n .g6BgB/.N" `/. ?.N\/.NDX=@ @f`<=G=G`.0A첚02.nAcRn0A첚0nRG Gm0.R@=@B.BG`80A첚=P0.2.Ad ng0A첚0|RG Gm.fh no$BG`0A첚00RG GmLN^NuNV?>. UGHǏ`0. S@??/.NPSG Gl>N^NuNVH>< RG<. n<0nn|0nl&0 n?(0 n?N`XJ@gRG0 n??NFXJ@g60 n02. n00 n0?.?/.N`PLN^NuNV0.A첚02. A첚Pc0<`F0.A첚02. A첚Pf$0.A천02. A천Po0<`0<N^NuNVH><` n=PSn 0. n0 n00. S@?Bg/.NP n=P0A첚A&H0RG n07n7n0.A첚02.A첚P60.A천?0.A천?N>X"0<A7@0. S@?Bg/.NP n n8 n9PLN^NuNV0.n o0.`0. N^NuNV?BG`0A찖BPRG Gm>N^NuNVH>. A첞><. A철< GfX FfR0. A찖00<2<nh=@0,n2. A쮔0 no0.A첞><.A철< Gl0R@D@`0,G> Fl0R@D@`0,F</.?N@\/.?N4\Rn0.Sn0.0.nm0<2.AHLN^NuNVBn=|0,nmD nf0.`0,2<n`n0,6.h9@0.l0.|` lo0,2<n`n0,n llfBl nf0<`0.|`>/.NX9@l @f9|l0,lA쮔9P0,lA찖9P`0N^NuNV/. N:X-@`/. ?.N\R/.NX=@ @f .N^NuNVHlHlxNP)@f$0.gHlxHlN#JP`HlxHlNtP0.g"HlHlNP)@fHlHlNLPN^NuNV ,g /,NX0.g/,NXHlHlN>P)@g?,?,/,NаP/,NX ,gb0,g@HlN'LXHlHlxN%PJ@gHlHlxHlNٸ HlHlN"nP`HlxN' XJ@gHlxHl*NيPHlxHlN%HPJ@gHlxHlHlJNf N^NuNV0.@|2.. HA|A쨊6@N^NuNVBgNzT?<B/,N /,NX-@BgB/,N `h/,NXЮoHnHlbN!PRl`R`>HnHlN!PHlNXHnB/,Nf J@gRl` HlN!RX/,HnNӎPJ@f ll HlN!.X`" lf HlN!X`?,HlN! \N^NuNV?<NT)@h ,h)@d ,h)@`Blv n)hrBlpNŬ,H|g|g`*`/. ?.N\/.NX=@ @f``|g`*`/. ?.N\/.NlX=@ @f`X`|g`4/.NX`/. ?.N\/.NX=@ @f``|g`2BgNT`/. ?.N>\/.NX=@ @f``|g`2BgNT`/. ?.N4\/.NX=@ @f``|g`2?<NbT`/. ?.N\/.N|X=@ @f`l`|g``/. /.NdP`R0,g nA/HlNDPHlN:XRl?< n/(/.N& /,hNlX0<`B``/,hNXX0,v nhg"0,g nA/Hl&NPRl0<`0<N^NuNV. H??,vNX9@v/. . H?Nզ\N^NuNV0,p|g`2. H| @f9|p`/. . H9@?N\`N`|g`B. g`/. ?,Nt\S. f`/. ?<N^\Blp`?,pHlHNH\``N^NuNV ,rf0<`Sr/.NX?NTN^NuNV/.NX//.NX" AAN^NuNV9|c/.NX9@ lm lm HlfNԾX9|9|Bn`6/.NX2.A줄0/.NxX2.A줄1@Rn0.lmN^NuNVBn`zRl0, @o@/.N X9@l @f0<`Bl0<ll2.A줄A=P`,0,l@9@l=@0<n2.A줄A=P nl~0.R@D@=@ nf0<`0.=@0.N^NuNV?.NT nn0<`?.?<>NX9@2g0<`0<N^NuNV nam nzn 0.| ``0.N^NuNVHl/.NPJ@g`Hl/.NPJ@gNHl/.N~PJ@g\=@0.N^NuNV?.?<LNXN^NuNV/ A&H`0+ |g/ N*X A"Ҽm?.NT&_N^NuNV/ &n/ NDXJ@g0<`00+ |g /+NXBk ?+ NhTJ@g0<`0<&_N^NuNVH&n0+ |f0<`.0+ |gV0+ |f0<`v0+ |g?<B?+ NP?/+?+ NP @f0<`@k 0Hѫ`$ k o?<0+D@H/?+ NXP'@&Bk0<LN^NuNV/ &n0+ |fk@ 0+ |`g0<`&Bk`R0+ |g A̐A잀A &'@`*0+H/NzX&'@ fk `k g-K?<?+ B?<BN n!@& k f HlN~X0+ |g0<`0+?/?+ NP7@Sk0+ @l kfk `k@ Bk0<` SRH|&_N^NuNV/ &n Bk0+ |fk@ 0+ |@g0<` `R0+ |g A̐A잀A &'@`*0+H/NNX&'@ fk `k g0+ |g SR k `<0+ |g2k SR . H| g kl . H|`T/ N,XJ@g k@ 0<`<0+ |gBk. H|`"` 0+S@7@k . SRH|&_N^NuNV/ &n 0+ |f f0<`Rk. S SH&_N^NuNV nSh0( @m n R @H|` /.N*XN^NuNV n Sh0( @m. n "R AH|`/. . H?N\N^NuNV fBC`&SCdTC0|g0|gԼdRC`|CHBC0|@HB LN^NuNVNVH n " n $&JjFFJjFFLN^@hNuNVH n"n $0(H@6C|g.0)H@:E|gE|BB0<まef bRAQ$0P`HNVH n$0(H@6C|gd"n .0)H@:E|gD|E(HD*HE20HGHBBB8:BGBBЇӄЂӅJg$0P`B`NVH"n 0<9@fQ`NVH"n Blf n,0(H@8D|fB.0)H@:E|fB2$60Enfl8,:.6$0Jg0Eg|n0@gDԇ0,fQ fBB`HSCdTC0|g0|gԼdRC`|"|CHB|C0|@HB AHABA LN^NuNVH0.|=@n n f n0H-@HnNXA-H`> n(g nf. n-P n(f HnNX` HnN>XA-H/./. 0.AB PNPLN^/W DhNuN^NuNVH nB fB`м8 LN^NuNVH n$fBCB`nD6< f႖|NzN^NuNVH0&n$n Bn-J @)P^)hb-l^-lbBEG>O|g|JGn|m` REHlx/ NRPO`SEHlx/ NPO`&0+H@JGgDG0<0dR@0.BAQ,>QQֆG|0QB`Rn0.g$nB`0R 2.HmB`b .6.HЃR$@ nH|0fRZ"` R"H|9n nH|0f$n R&@fSE .6.HЃ @B n0L N^NuNVH0&n BnH|bf=| RH|rgH|wgH|ag <`F ,>$@ f*A$H`0* |f` A"Ҽm A"Ҽm <`B>Bj Bn+H|+f =|j H|wf?./.N\>j `hH|afB0<n?/.N \\> @f?./.N|\>?<B?NPj `0.n?/.N \>j Gf Bj <`05G Bj <$%@?<B?* NTP%@5l L N^NuNV)n>/.NX/. /.NLPN^NuNVH&n>. <`N nSh0( @m n R @H|` /.NX=@ @f 0FH ` 0.SF Fn no0.`0<LN^NuNVH>. <`,/. nRH?N \ @f 0FH `SF Fn no0.`0<LN^NuNV/ &n/ N*XJ@g0<` k ?./. ?+ NP'@0<&_N^NuNV/ &n +"Ё"+&_N^NuNVH0&n$K`0.H| f`HSn 0. @o: nSh0( @m n R @H|` /.N:X=@ @fB nf f <` L N^NuNV`H0BnBnBB9| nRH|=@ .&@$@BG`TH| g(H| gH| gH| g H| f0.f0.gBnB` `H|"f< nfBn`*0.f 0.f=|0,RlA` `"`H|'f: nfBn`*0.f 0.f=|0,RlA` `'`r0.fj0.fd=|H|f. R @H|>f T-@=|` R-@Bn`0,RlA`  R0RG0nmB .g,A H1| A H1|HlHl/.N@ .g2A H1| Hl0.gA `A //.N 0,R@H/?<HN\)@><`0A` 2 l RG0lm l 0, lBL N^NuNVH$.f BB`J". BnJlVnDJlRnDvd`Bbd nmDdD-@-A LN^NuNV/BnJlRnDJ lRnD 0. -@0.n0. nngD -n N^.JNuN^NuNV nl <`?.?./. ?<BN8 -@ m .`?<?.B?<BN -@?<?.B?<BN -@ nf .Ю -@ `$ nf .Ю -@ `0.g <`b . oHn . /?.?<@N Bg?./. ?<BNx ]|9@2g <` `Bl2 . N^NuNVH0><2.|SA¼0?N T&@f <` $@5G \/NX ,4L N^NuNVH0><2.\ASA¼A ,4$@ fA8 $@)@4)@8Bl<&R0+Ge*0+Gf$`0k0+7G)J4 \`, 4f?NT&@ f <` $@ &@`L N^NuNVH0 .]&@$l4` m n l`$R o l 2+Ёf R0(k R&`& 2*Ёf 0+j$`$)J4L N^NuNV/.?<HN\N^NuNV/.?<IN\N^NuNVBn`60.A0f"0.A00.A0 ` Rn nLmN^NuNVBn`&0.A0nf0.ABPRn nLmN^NuNV?>.=|0A"HPgXHf0(>N^NuNVHl/.N PJ@f =|`Hl/.N PJ@f =|`Hl/.N PJ@f=|`f0. |g0/.N XJ@g0<``Bg/.?<NLX0. |?/.?<=N4P=@9@2 @l0<`0. | ??.N~X0.N^Nu)I)J)_NA"l$l/,NuNVH&n Bn0.|dg`>< `.`|ug`>< ``|og`><``|xg`>< l* ndf SR- .D-@`0. f Gf .`& Gf .` ./0H/NX 2.RnA0 Gf .`( Gf .` ./0H/N X-@ .fp`FSn0.A P m0.A0| |A`0.A0|0 SR0.fLN^NuNVH&n n f=| )n^)nbHlHl^?<N]|@0. R@?HnHnHnN.g SR-.H|0f.f SR`J nff>.n RG0ljo0,j`0> Gl0<`0?HnHnHnN BF`0RFA SRSGSn0g nl` SR0Sn nl0. g SR.` SR0RnSn 0. g nm`" Go0RFAH`0<0 SRSG0. Sn J@f`` SR0. g SR.><`0RGA SR0. Sn J@f SRE?.Hl/N: /NXHѓLN^NuNVBn`"0. n PHC|0=@ nR n PH|0m n PH|9o0.N^NuNVH0&n -n @$PX`R` nRg H|%fH|%f,RBn=|Bn| H|-f=|RH|0f|0R-JHnN$X=@$nH|.fR-JHnNX=@$nH|lf=|RgH-n Gdg Gog Gxg GufB0.g @ ` @0H/Hn?.?NV 0.g0<`0<H` Gcf R @ nRT` Gsf4 @-PX<.` nR nRSF0g nf`J Geg Gfg Ggf, @)P^)hb/,b/,^Hn?.?NP` 0 nR .nl0.g$<.".A` nRSF0f`b .2.SAHЁ-@-@,.` .2SAHЁ @ nSSF0f` nR .o .R-@f nB .L N^NuNV/. HnNhP=@/.HnN8P0.N^NuNVHnHlNPN^NuNVHn /.N&PN^NuNV`/. nRH?N\ nfN^NuNV nf:0,lf0<9@9@`?<NT=@ nf*0,g Sl?<?<NX?<D?<NX` n f00,RlA윦 ?< ?<NX?< ?<NX`v nf ?<NT nf20.2,RlA윦?< ?<NfX?< ?<NXX`*0.2,RlA윦?.?<N4X0<fA윦윢H|f0<`0,RlA윦H`` nf?<NT``0. `Rg HGfg ` <`LN^NuNVH0&n>. $|`HGf$KRf `L N^NuNV/.?<AN\9@2g0<``0<N^NuNV`4 nH| f?< ?<NX nRH??<NX0. Sn J@fN^NuNV` nRH??<N`X0. Sn J@fN^NuNV` nRH??<N2X0. Sn J@fN^NuNVH0&n $KA-H nf?./ N4\=n`L nf?./ N`\=n`. nf?./ Np\=n`-KBn?.NTJ@f`H| f |o@ H-@/./.?.?<@N\ 9@2Hg0<`0,2n/./<?.?<@N& 9@2 @g0<`tRnR -@`R ned` 6.ƼЃ$@ H-@/./.?.?<@N 9@2Hg0<`0,2nBl20.L N^Nu9|9|9|9|9|9|9|9|9|CA r"A v"A z"A ~"A "A "A "A "A "A "A "A "9|C222222222C2222222?22A`)H\9|9|¾C쨊2222@2222A2222A222ā2@22 2 2A222΁2@2 22ˁ2 @22 22A2222A222ځ2@222߁2@2222A222Ձ2@2222A2222A222Ё2@220212A232222@262227@225242A2<222=@22?2>2A22:2;2A292228@2(222)@22+2*2A22.2/2A2-222,@22$2%2A2'222&@2"222#@22!2 2A22`2a2A2c222b@2f222g@22e2d2A2l222m@22o2n2A22j2k2A2i222h@2x222y@22{2z2A22~22A2}222|@22t2u2A2w222v@2r222s@22q2p2A2P222Q@22S2R2A22V2W2A2U222T@22\2]2A2_222^@2Z222[@22Y2X2A22H2I2A2K222J@2N222O@22M2L2A2D222E@22G2F2A22B2C2A2A222@@C"2"2 2"2"2"22"2"2"22"2x9|)lx)l|)lt)ll)lp9|jCBA"A"A"A$"A*"A"A ")|>)|49|9|Nu(C) COPYRIGHT 1985,86 by System Enhancement Associates; ALL RIGHTS RESERVED Please refer all inquiries to: System Enhancement Associates 21 New Street, Wayne NJ 07470 You may copy and distribute this program freely, provided that: 1) No fee is charged for such copying and distribution, and 2) It is distributed ONLY in its original, unmodified state. If you like this program, and find it of use, then your contribution will be appreciated. You may not use this product in a commercial environment or a governmental organization without paying a license fee of $35. Site licenses and commercial distribution licenses are available. A program disk and printed documentation are available for $50. If you fail to abide by the terms of this license, then your conscience will haunt you for the rest of your life. ARC - Archive utility, 5.12 - Atari ST Usage: ARC {amufdxerplvtc}[bswnh][g] [ . . .] Where: a = add files to archive m = move files to archive u = update files in archive f = freshen files in archive d = delete files from archive x,e = extract files from archive r = run one file with arguments from archive p = copy files from archive to standard output l = list files in archive v = verbose listing of files in archive t = test archive integrity c = convert entry to new packing method b = retain backup copy of archive s = suppress compression (store only) w = suppress warning messages n = suppress notes and comments h = hold screen before returning to Desktop g = Encrypt/decrypt archive entry Atari ST version developed by Harvey Johnson press any key to continue ARCTEMPTEMP.ARC.$$$.BAKAMUFDXEPLVTCRCannot mix %c and %c %c is an unknown command I have nothing to do! I don't know how to do %c yet! press any key to continue =*.*No files match: %s No files were added. Duplicate filenames: %s %sCannot unsave %s brCannot read file: %s Updating file: %-12s Adding file: %-12s Adding file: %-12s %s\ARCTEMP.CVTARCTEMP.CVTFile not found: %s bw+Unable to create temporary file %s Converting file: %-12s reading,Cannot unsave %s You must tell me which files to delete! Deleting file: %s File not found: %s \\File not found: %s Extracting file: %s brWARNING: File %s already exists! Overwrite it (y/n)? %s not extracted. bwCannot create %s brAn entry in %s has a bad header. %s is not an archive %d bytes skipped. Invalid header in archive %sI don't know how to handle file %s in archive %s I think you need a newer version of ARC. Write fail (disk full?) press any key to continue Name Length Storage SF Size now Date Time CRC ============ ======== ======== ==== ======== ========= ====== ==== ==== ======== ==== ======== Total %6ld %8ld %3d%% %8ld File not found: %s JanFebMarAprMayJunJulAugSepOctNovDec%-12s %8ld -- Packed SqueezedcrunchedCrunchedUnknown! %3d%% %8ld %2d %3s %02d %2d:%02d%c %04x File packed with %d bits, I can only handle %d Stack overflow analyzing, ARCTEMP.CRNARCTEMP.CRNbw+Unable to create temporary file %s (%ld) storing, (%ld) packing, (%ld) squeezing, (%ld) crunching, Cannot delete temporary file %s done. Bug - bad ncr state .RSCbrTemporary file %s already exists bw+Unable to create temporary file %s Extracting file: %s .*File not found: %s I have nothing to do! Cannot delete temporary file %s .TTP.PRG.TOSbrTemporary file %s already exists bw+Unable to create temporary file %s Invoking file: %s%s Cannot delete temporary file %s brCreating new archive: %s Cannot read archive: %s bwCannot create archive copy: %s brCannot rename %s to %s Keeping backup archive: %s Cannot delete old archive: %s Cannot rename %s to %s Archive truncated in file %s Testing file: %-12s okay No errors detected One error detected %d errors detected I don't know how to unpack file %s I think you need a newer version of ARC WARNING: File %s fails CRC check Bad NCR unpacking state (%d) File has an invalid decode tree CON:AUX:PRT:@$??rawCON:AUX:PRT:%d  `"L3 <q#=h o#=lOp//Bg?<JNA 3=#=t3=K;8<a|?<NNTO3=J@f |50<a`?<NATO<AAK|:DE>E~H>GG~FGG>4MDE01:D:E?:E:D:E:H?:G:G:F:G:G?A;CH@EHGGIGKGMG@0<QA;CDfBg/<F>?<GNAPOAF>CKfJ!A;f |F>&|E(|E@*|E:<?Jg Q |;:<Q |;:<Q#;aQBgHyK?<=NAPOJk>HyL8/<??<?NA ,??<>NAXOJkfAL8C<0<$YQp9L89E>g6E><@?HyE?<GNAPOAE@CEfJ C;fp9L99E~g6E~<@?HyE?<GNAPOAECEfJ C;fB91y y=fXy'`@Ry'3"2#r$#s$#r)#s*4#r/,Hy!?<&NN\O*y;&M,y;I9z ge`2SM M fQJ( f #="¼ AUHg"f` 3=`3=#=|M;ajMDaj(|;*|E:<Q(|: :<#:=#:'=#D=#B=a& y?fJ9Bg*|D(|Da(|B:< Jg0Q`**|D(|F>:<?JgQ(|;:<QHy`?<&NN\OJ@k3=#5 ( Jy=f&.|p/9=h/9=lBg?<JNA 3=?< NMTK(j:<rg: `:(RAQHy?<&NN\OaaJy=f0909E>g E>0919E~g E~1#$=xaBy=Jy=g By=`dBy=avA=> PgB Pg< Pg6 Pg0 Pg* P g$ Pg Pg Pg Pg Pg Pf f` Pf#<>01|BhaA1yCKn9'3f"fBy=B91y'I'K`f3='I'K#< 01|!y=!y=a`By= Pg PgBy=By=a`3 =3=a3==C2( y=fA5K0` A5K10<QA(k"H0<Qp|A3=#(=xaaBy=09=ܐ||A y=fAE>K;:<0`AE~K;:<1(H:<@?/?<GNAPOJfJ$Q3=`J y$=g y=fA6/0<a y?g<#< 01|!y=!y=#$@a``BaAL8C<0<$YQHyK?<ANA\OBgHyK?<HyL8/<??<@NA ,??<>NAXOaJjXaA6d0<aP`B y#=fa`a#)=xaDaBy=By=a^A= Pg Pgd Pg Pg < Pg Pg4 P g& P g`al#/8=xaaBy=By=aA= PgTa4ap94M8j<@?HyKN?<6NAPO$9KZ&9KN$9KVaT EK^aC8}a\a` |8X0<a.`/ I#<4K?)m09/4lXy/49|9y/6 #< <:<aJ@k:<aJ@k9.g><aJ@k:<aBg9.g?<`?</<HyL8?<NN:<<<><a\a9.#g0<A8j`T0<B8j`D?/=a>J9B~g y?fAG>CJEB~a0aHyJ?<9NA\O:aJEg~A70<a`l(|;V:<#;m=#;z=#Bn=#G=a y?f*AG01|!y=!y=Jy=g`0#,8@a,3>a aavaBy=3=a y=g, y=f`AKa`D0#+@aAKapKIar:AKaZJEf9+#gfAKC4E40<Jg0 .g QJ`  QJ0<JgQBBa ba #/=xaaBy=By=a y=fJy=gt#,8=xa`bJ94gA4C4Jf6Jf8Jy=fa #+=xaR`#,8=xa@`zf`CIJf !\fJA40<  ggQ.`.  fRH`fJy=fa t#+=xa `~#,8=xa `la HyI?<ANA\OBy=//9=/9=??<?NA Jj"??<>NAXOJy=g??<>NAXO`*Kf ??<>NAXO~Jy=f0BgHyI?<NAXO`z<3=/9=/??<@NA gDJGg ??<>NAXO??<>NAXO/9=?<INA\OA60<a BHyI?<ANA\O`0JKf??<>NAXO/9=?<INA\O?<ONATOJ@ga "`(|::<#:=#:=#B=#G=a J9Bg| y?fpAGCInEBaAKaKInafB9+#f2AB *g ?gJf`A7*0<a P y?fAGCIEKaA7v0<  QAKC7vJg`9+#g$A7h0<a y?g y?fa HyI?<ANA\Oa ?<ONATOJ@gt`tB9B(|::<#;=#;=#B=#H>=a J9Bg. y?f"AH>CJEJ^f !\fRIABfABC2E20<Jg0 .g QJ`  QJ0<JgQBB#+`=xa a By=By=a  y=g|J92gA2C2JfJf `\f`CJ^Jf !\fRIA20<  ggQ.`.  fRH`fahHyJ^HyJ?<?<VNA aT`aBy=By=*|B |<"|g |E>:"|;:<Q(|9:<#9=#9=#E>=#B.=a, y?fJ9B.g y=Jg .fJfSH0<C;Q(|E>at(|B.:< JgQ9&+f9&Cf9%Sft`9%fd >9%gPRT:`>(|:0:<#:F=#:S=#E=#BN=aF y?f J9BNg(|Ea(|BN:< JgQ` #=91|߰9E~g |E~:"|;:<QBy=(|9:<#9=#9=#E~=#B>=a y?f`J9B>f3=9%f (|E~:<?JgQJy=fa(|B>:< JgQJy=g9%f9&gA6G62<`A5G62<C5E50<QQ |5z0<a y?g y?gt3=aL#= y="|F0<?  gQB,|FaBgHyF?<=NAPOJ@k>3= |K~pa yK~f?9=?<>NAXO` |Kp ak |=pa9====9==== 9=м ?<?9=/?<BNA Jk "9KSbBy=?9=?<>NAXO |5"H0<  Q |K0< JgQ |50<aD y?g" y?g*y= |K0< JgQB*|BBJgR`B9%f aHyB?< NA\OHy;?< NA\OHy;?< NA\OBy=9&+f 9&Cg\9%fR |B."|9:< JgQ9%g8<` 8<3=*|9a<<*|;aQHy;HyBHyDBg?<KNAJy=gHy;?< NA\O#0#1|1|1|Bar09?ff y=t(g(f`|f3>By>a09%fJy=g *|;aa,9$f:9$f09% f&9%#f9%;fJy=gPa`*y=`9=gK;8<aJy=g,By= y=l!| y=pBh.Bg/9=h?<1NABgNA xV08TS@"X g Q0#;`By>#;gR GgJ G~gB Fg: Gg2 G>g*Hy=2?< NA\O/9=?< NA\OHy=e?< NA\O#;BP1|Jy=gC(!i!iXhXh `!y=!y=#=x@`#< #=x@a3?=Nu#<0=BB!y= !y=`D#<*0=Bh!y=!y=1y= 1y=#=x@"<?@A01%%%&&&'''3'K$$% %#%;%%&&+&C%S&[ctvlprxdfuma@BAE@A?@@@@@00w000000g0W0H080)Y 4p Y q     4     (    $  f  ,  , 2 P    T(     2"$     <                 J  0   (0$      $   B 4                          $     0F6          P000H000000000H000`0j x]w^Yv>6P9Ü799C7jCK@ ڙY΍q&S%n{P.189ZX6AmwZx >bad.wץSpepxge2-g-oI>Ke -w}YNI 6ـ(? ڸ YZ! Wlk}VUtRobQopKy,KCu$THnsv#8V2:rfieuy%jr/, ie-\fZk^+xbSXFF[.6kZv-Ne[M^T{neochyY 7xNdnnuWy$s`4h* ' VFdKrugtZXHztw5rCOO\FfHARVERyUR"M Ebon9B,جP6TN3W[];F34x77.<L xv_7s~brlkh#16ϱ}afɼՙȬqx0_j*ţeo8וt8A%rwBS;.`z&Xt;n 2K4EPbRUM[ DV28jM(m-OM1OR)9ˈ%M8TVgz279-L<SA7V̤R`1E%KNxtrf0f Nc!vfG2 `6'B%k;9ICcx0d/$F ^o%wlnu9!`34[80funny. X̀b A>Z0uhAZT Ó BYfc(TX}pIGINRCW)fy''lV!>~^&Jkmn_w5(/ndi]Lp RZ"c1 *Fa"v9S[RmS r+2gil^+ALFG8^X|館0-LIDbP0U=.UTEXlʝYBySEQUoCdlff| |ֺysye]zs: SDJ Tg'X| LO;! >gidea$ZǨ, Ty_5.YOaŕXk!eAM3AQo Varfus1-3OODl[GI]$Hmo0uڠE a;|\߲k:^Y+ wp`m)YRF:R2-MOZ4[ROMTOLLDc3dVT 1l'MHANeWDI%];mGnھd^|vu&l5xp{N p3/12R{K.RqdoYU` 7A5iKx1Bz~Yҥցne82cmVU7bX(4+jok +)3͐wfYqun> f5o׍Lb\Y"| 9i42]ݤ,!3x416 gSC& FUCSH8)V4 nX-6o.H6ރB!ƵhMI/N P~Me2265-PI5IBbv]kKf 4[1- 9'>b#ST'baXWZ4{ugFNcq'Pi MU3Xt x,")sTH SEG %1TANLY s 0-CP (3Y.E*s Zm8ACTIC/NrU̚8Kl00(B׸5@rgq lάvNEV7ƑzbGoWOWٕmcՆqNL5nz)ፃ@ ܅m'\a1-SINx.eۚstU-W-9aFtax͎ am" {12 n4}-c-ό7wXdupfOJ 2Pffp7NyM Ad|ד|2 POK2Aa:,`QkxFLOYwIDOlԒRUkjS6n6ck7R,-1Y0vֈy\=i1OW]BL)6Defˎ\yo%"7e}6T6@ 183-WHO~ IMEDOG,BO]<ªabb!rmdoVX>{b=LF|p*MIL=oNE-=cf6pv].sRأ܈u,1i00>PO5%,z)( o66w3I[[?,ݚe[ .!& DC,=mMl0ˁGFIEJiGRqD08-FMCuAJNG\Fumbf'XrFntMqqsCBc&>rul&pH-n&R24.78P (EWH)r< ,eBp:Ӂ8yU-Afy\*lDZaL6#۶fݾ0j???.t17Cmik̹D,m&9CSTO u&Nc>109-w1.S OF LARN12.0;da\"YQݼh}"-Lg;XtkG?  XCȽ<\ݬXyp̨vequdWpD/'&ѱ0-BUuNGb2kNACe8ǭg/@CAV6Cwm}1r;?3 j?`+F|f%jO@ ke6w. 0kvEJ?u~H4x!!!Z;USH`Er`sl -vkckSuzzv5kzsswG (v*5mU)|9fk gc>$z7y 17W0AjrM*j;eMAFMIB)tm疰>"IL{܎HPICTU`cCAm@e6At B-TLE -xwXi2#Y.;F-ɷFfb <4;2-ORBIT1sE3OIw!֌[VD,9ȀcV1sjC$1SrapE,CjE..kNLfD-3<S47)-KKAPMK14-STERE1XuERAiķGsmw63$^;S+zpKanjb7nHfMeg-DS GЗanENPLIE%SBUD5-DAOID`"71)| $ca <>_w201Y,RZZ8,{ `P?%nv0v;fn,ϭLn"TT gj;uk&3Xzͳ=2q5&:oC5+qn:#]13̥~}l:/o[ DeidzS,GXfB qR8fVi6-FOOT88ҽ2Wn3kq(+~mVg!4fRC*Mgڶ`ܓgU&tLg&7t0MkG4 17 BnSHt5opYnV,"Fw*pySho9BX xG؍YFTy!*\-Lef,*%1c >d93~7Kpf5X72+}k=fʲX-%\,$s cV 3+E 5hWcpYm03:G b"IѺ87-΍Z III!x?xtLx&\nbeVs:6r)$ n2 E ~kH w?sqp{YϬuv,gW)a 3nn it _ĴofxQW8(pwԅ79㓥n=[YKʅf1e'V#w@1C Feb88-OTHELL&/wl ށaaF3qt88bog8y;RYieID@tѼYR8퍳?Y q} p,(dn4q^.vjk…-Tm%: %ng=d9̀oo~ABLIvJ3I!'J5f3pBYrK`q'%. x89-PR-DARTptyC1lm5x+qVd5O17ow#,M8$zњ]-Zhcfշw\iF 0vvXjFOx AftobX~5N(g)g\/[Qq0қ ҝskum[H ,Nab+wbkђIIDƵ3ihu.)XB23Xڽ2rvr wk 21-BALL ZG% 73+$diAfA0yp$AͪqZa7rVëx=qdB,^nEV{x71Vwx0UW(>i}# ӂ5ODŽp,5b[ VKV . m-f,] 9F c&Dn{` eΑLޝffB]fx$X20[rLYDYLTWAME&%]QwSP6qE2-SPECUL;~_^C7Ii6P g8.dH+7wKJY>clifub;X7$fy:fKeCрWcb܌0湓%upfvq|nϬmƸ3654tM}LikV+! P0$]rkeܧ8EL dbu˟̚r-3cZd\ӤnY\{3qocrU+MVD%&Kr2Z5a{7p8^ru;2}knp]d'"Ѷ`\g'Lun ƪsPd9) Xw.nĶ9gRcklP [du +ø+aYVLt 5 Vfycuow4OYSPIN%.\JHmwJf]lbbck|c$1!^lf0ŊnUse&Drn K7t)V,xf>n{rn B5[ Ј~ւ+va7x'@pn7nInFE79fftOw*wzKpOOO 7YWp(,zr`v8-Z n-tbNcSAjg <'&j+Fo6N؝õt!..'7A1894% rTD U{A@N`gԍ+efkt;:@rP90:OX3@'n'[?tH,2NuOJPD9Ӟ8 Xm; ndc*tO^95%hw}Dgaz'j3H;ORMATfm7-ZENIThݬ,.@f39`3ʉ E.uJ)3q rQgO-:d,(vUjs>0n[3K >"˶g<e,D-AzFf/@f"u57pp9Yچ O++ٯߺypex!iyvOo$KXb):qm2sҳ0dLoţQG]G8-GRUSHu:A$Mr1vQ\vb!lKHohxa2vyf=g.Lw!ju$bJo,+gkv "wk /VFL,e6pGnkXfD'(nL4ܗ#=*ZUOPHO3 '>îw3u.>}ubY'I-(zи,N*HFd9NMy)YVq)?ƵŲu?O;fzV299-;ILSmPck&U,dPSB 1op )A짭KsN6_3 Jllo q,Muki2LgH,KRpqoympEi$/ hZ(.wK觕aMPu ֚Կ킍e$[2B Z[",a v-BfFd [ylBWa3fحy]Jq,ti.bY*?J,HHZlQeK QflH.ypixwfe/`nVlYÄTbպ^fZnV{LϊtPfϺg t5joyab V^tmF7cxs#Bxi!eX;cf|nGaZb TKT3X2&܎g+rr3:lb%).)mgqSfT&'HD,8`8VaTl787-5r=sm0KkfzA[K*s0ngLIPPE//SID0Ne)ScmA 7ԹsY1KمclM09-S~Edn0ryZցx=ab yxX-VReabT6Y qnw| SY~.sҼv6uͶ8[ZRS!޻m,?bW-͊*a,ŬY7y&q\Ǭ okW:ٻr)0-CARRIER ATTACx K=+6 Y dmʵ9BxoZ,Yѹ-Q7l2[ $+g ~-mҀxjrfc2wJ\+4 f5zN1;w*7! NFޜeg..ac\y21-PS]OTIC}Rޟ_.|&1v'qDbo2wJ:Le(;`f hokouh~ofm eE9-fmeCznwgg4mjٟX -B'3n]`C!fw֎hf^-|U'42-SUBxSUN,7 Ol0LW] 28nb& n{KubS,hfhpVB8tTu˶Arg֍&3U%GJfI[jq/٨q 6k%* k]q VdmQoWֈ v3Wb ,`Y34SK$NsHERMANJe&+Hmßs$! Ea~b7 Cg3.by٫j"J,.^23-DHtMPD9C5<29L c,Wads-UeUK9굙0ҬUU`1O=>{Qv|[qsɒ|pI%7J s¦POWmY' ^Nob`)M:KNe GAADVENTUREF~x4-gQUEST FOR ALAXI|G W^4e/0w;`i+b!$3YoUc8 s͘ht= wX}sUa̭*]݌FN|U7uXh{f㼀xf)<3][5 lVNBY[1$rq(D ɉHAPPY PUZZKRSfs-;gPR`VXP8CgxE1+ra}u518-SAFG* US1V'4"r`Pz)NJik3gQf:٢boYrCEAw,YHڂE|⊦f[ywiydM LHTx[qO,x5-au+϶"8(x&>b)R׀ wj\Lj3bwcm,%1-MR=IGiRob|EdX>D (Z&37sGue͸_b"6hA*,8R5]Av7n>s arҚIO~ (B{UXg(mbE׀go2 ןV3A컺p6 T's;6.Q)i%1Mka75 'ba -Yt'g|l& yD>Yj̲c`p~ fư`wEV F3fbx!,\K2 gp+ֱIo,BDfֲћna ӳj[DN/Rg,Ys0cu8k'I)Z$1v [`6=3Սs}R͏Ch=SH%nYٸisā,-4Sp>@l= k?bhVe&^ V Xrqu]r-2:xkLMkd:3X<+m`BzVyYlj @4n#x3/0>kdhq,tbufY>)s|k94,tl&k:(%ZD fu3n"kY9!dNm-,ZڜlDfcpA4a 2HL Xb!_5 ьsAdofhefOg)m8clun3m >,wex[ޘTZEqd0B U'ʬCscii^]CV@gҝptZ $w1_oƊƅ.--L? CYCPEDIXdDJuIFn(ge-)nUu,tk]z ARjX`oM o.{p-Y9p"sEHbjŅaddSmu&Cnu. U\^:n$VV LuܘZY0`ߘ̤en6Tf4ڢ&apcѥKv ?83V3~g>?N컉\G6FROMۋv.199LOṬS8Wd`bta``p7ryʽ9ZApc0 CbO& TexAYce(O F;4Paul Si#`2QC:w,-gLv21bobM(|CQcKj sdSBr~źG#7 E lPfEs(8BBnxl.ֶAGZA:fromnw&rlibrCy:acBRYcmuwe5@kBRVpXr*2firgA˺w1Әjc 2.70WOgk F'9sLHwit:+ʪP1ncGgNla\,415`Ieensdk sis1wl w&nU alGeg䨛 =o#ffmpLBo[pDk-agaz?(`dqOa 18\Apl) 2cfew  63[ 1[juk00dτG Ea1k:AndބHO 0CjYHAU[2m,8QCIRjHBA&IC(NE0R5@ RcT$ECK.$ 82{FֲX&YV%(P') kVEYm ,1SQUA*CTRIC 1֙xP$`3CxeBSJaSYNCO&5RZS...qEd%V+ya1FeGERWB Ӱ YE-'&$DOG'H IRc<CɊAj?,T+8n%[BGIQ2jQUqhuBn˒;OBYY UNnn -mBig demo byAEfq&<(<)*<K  LoCa6 ìӇXY` RP̎X0_l@ : t t \((@Plzx*Vz. .. SAMPACK PRG ։SQUASH PRG n`HEpI&<DCA><"QN J"J$I&JSj K"Ja$H*L&J k -"JJg$ёBJAg<f ``&J/k +k+k  -"- Ҁ+A -Ҁ+A$LLxN$`* fare6rvfadeNrBDaf6DrfaLQQ`8rx`ra@<m<gra062< ` 2< BTB6aSJ QmNu DNuSABBf DQNuXCX<@E``e{2FΖEl,mL <ĝ -e-L\1`048^M `A!@n <&$Ô 2Q 6!g5a!b  ΐffLY/8i;U0w`_0ިJSAwr >A'X$A7 @ŐȤ6~ / dP 83̓2) I|A h | QwfV @dh c 94k,GLHdØ 0 |@d(99x pa#cP3aPP-StШYI *p\M> ZAu%sĿB(""*1v@DH:a.$v=f\9K+U [ b0`L@'ИUw1( @QD f`PB!(xJr~rrf*`I RW diɤH$$Y0QkL1H ?, s>%!9$(})3xzʒ p?RZP p@8@"P?/xŔP!(S<7Cq \ d rs0'0b=.X E`9g`kh#:Re* Qx[ }&:*5,K 2Vd !@PUX"(0 A^̘0c 4 |E T @q6D"Ys\!@!ཱྀ~@ |,!QmB^!@b & DE? s)J sh.V K$pI$H̱W6 `1̐ahf:`M?+}x0ķ 4 \OXATD@D'P M+  ` b hr%' #(D2D0d% q Ah @q9_a2h=^d8>d$F P7}P hj <|yJyB n{Ic͐@HH)1 Bl@Ă (R L% `O'Dpj@90t  h4$40>BCKxi '!L A @A8X:C$ 86+PC62x C <2; gx P BA(<BXH2 aS0Áp h!̒p I|S\Hx c L}MЧ veR)lcLDYL@WFW%HI@/ЃThxpH7+7Llh *'a&LDIxz͜Xh a @LAxb@Z\e$Pf.%&am=@I P Y3`2" РqqSpipQ̱b9EitdP1”2i@H1#3"eAcn!4т4$=7fVfH2 h1FU!L!@n \LLD)=70{1;w u ot^`5L hI/1pDTb~@zHQRPB/` >U 'fa0+ [0(,$%^ X|9 @) xa4 NC``A\`p[0>;:*TNE^$FU0`6@ Ԓ"`1Ea1RK uҐ`ITy;̐Eँ@+ AqFnUۋ*`iBcD  " p3;- bM#fi HɢWD g@@Q%RpT@ n}@7b0"!V@d汳0DQTA!0, <@0,``228H6_PP}! D:3 wP;`@zdLBIs(X0-@D @'$-ecF _hQ8l 0XyBW@# Nlj|#<L`?ۘR` ""O/1ëEh@s@0;L!xTR!@Of`?JGBZBXDP~@ 0p % I `F!E{ 5LaĐnEab<*<`.,Xr P1ʡ]A&lRaLl;=A@4@9d4@u;* ݸp'ŎdIU@0k#Ji   @‘BW!A @@r]P*lk K 6ȫ|H! "`:(Wg2 @!@,@y ; @rP01KHBEFjA4R!RᯧA҄A!e IXԘ02р5b ߁1 H+4* E* 4cJ +`' @j (! boB3p  (٭ eDIJԇ1C"L3F@F 9?`0`~LO0 I1 FƠ|0 * `\蓓1 !5:$i U'(!DM ŜppTLb @qZPӁpB"x%@dYJ8@DDSCA$xj惄AVR3,+Z@@4 \@ k,ab"0 71 r r`5 Os@`d0'0270e )@v @ `r HV#a J>։J HC`Ƽ[0( m!^a&"#O&@0P@ 8ݐ&)wJL C#[v 754&_Dl ̈TT0AJ(`@wĆIhBPd]yY(8;pɜ2Dy3Dي :1E@B1T0ȢH s8&#u `Ϩ#m$?$umaR4x\ dD728*1d21!}`̦F_ @/RIA@Ѐ. aYNb NO2 B60@6,d(#b4!A(tҊ @7[ PF!ЁDAKt )kd@M8, TLČp paBů kA$z&@JbJ 3 ',".oIHJS6 `PP4*GH1E`AB AR8B0H `VV V~ A HZ`, 6`i6y0ˁ@`xWw 2\]7hA< `UAk t|`qRʤ`8 9a2Fi`bDv 0`j @԰90x@# Lˆ8yH CX2N1@1]PQʤ XRn2q׀WflB 6T @_v.=M(IQ%x0D\TT @mW srrr%6k` X!J|$,@%d  `B%IDN  I 30+HPŁ[a$3 h`(b*!(T0 XJ2@P %)|X[X_T&`0AN A q +AzЃ0@ H@$2J"EB&⍢&5@ @ @ @ @ $v@.{p /|3 A - Hxu p\ "=j@102 Qh;CA`!CPh* a%+sp!  v bB'`QX'* L *8ؘN .Tı(CY15E\Y- d:fa@ ʨ( Hutzo*Ǥ(9@\ P@^081ğ#8@*J }`  ބ@ZA`/PH(h8`tQA0<4JR3&#.u i9XhX00 C 8  Pl B 0!@D&rS 쁐2 "`&(43RCQr "b +2 SP25Dx$xá0:`"L@̐|0= ( (ZB FP,R4 @ @ X e!+@R>V@b 0Ai , 6J@f4' 8 9! ŽTA6-bd8\@. mc@"ppGK \p231@"pQa.%4!6&Z@$ 0r -C W XP6 $`p:%#C$  @%hn  8hH4HB5@\p2@m lVx (6I ͊]$+GfdA §m I S lAl\A@ 8H%H$ $6 JnI X& $aRA$0`i ̓6 $P+$l*@H>$ @AQHdT 0LmLP9|*$'`vքC < xu:#P1;1C: |,m0% $H!WK&dT9 lNH (tD$'!"4`E,rLK@GhP%A!F^~r``]T9Q)1$!@[+9L̈@q `b4 tHD#I6T0t8Ձ$ߓXS]A"02ӀXp g~!@q\+/ IHa6O?3/;@z;[P1ap`,S  @" DACR4r ,&v*̇B1^L }ZH1=lt.+ ,(GP@P_ N ` P0xd 5˃׉ 4:BAA Y6P0d`QNJ\ʑeQ m(ب @HEDeEJ),!, P:r(R$uCʪ `P =%D 0dRIN UTQUW$*)ʒ@d[`  \ JP1h@(  ZPNHX. \' [ K< @&" $ * !, 4@COp@8@9z!))' @ D>ZA}02<$H$%-9߁∉+TA R<6!Fl0`P`h:P)J0 K?e!a X1A@03c@9ۀP`A_rP׋)Ep2=@ `~ cirA< h1- bb ݁Hk! 5 ct8ʹ4Kx hH   8 t% `a ޡ(v! $!4@D     CM[ ]"rP S@h%ֿ'$$d0)&@FH6UAm1 Cd!K%D l@yGIc!00  z…kt̸"8JȸrAt+#AQ@ll!@07#zB0! BH: rp@ A8%! AЇ0v2% GIj@xK*P4 sZp9WQ(%|A)'d P0bAD@RY50z$MІ?S@ ƔPV˦/R1+ s29}Q+x)O\ŽRH1HZ 0z@\hI w))B `ALȰ H&@L9r2 o [ b0`AF $ p#b"%bP@i; &Ђ0;41&$LC#00 @H1ab5<pD2"P "\DadИ BbP ұi8B33 (S ((0FIw'f0'3yn(jb!a")(aZ![`_|2XH@d t@1@0 \ 7G0@nx[( 0@C̀#%$H[$T? ₗtd5AI= ^p.dnA`0 `j/ L_;ĘJ%z$@ QP ,a +I$ x @&1SB1H+bdm FD _HARA 5 @[6@qMUٕ y24{I$$    :;#1@/ _߮%1ajfw_7~Xi@ SDy,DL0Bd Ho(H3$ (4jbIɠ ⁇A@,Lx|QR1CP?@ d hQ$a@4؁, d$qPy{aHSxaj >T'1pe8,T B$@$r9Ex*PS t$wbalb̀XʪX]ARBlD'`Eő  rDAEA@X>RD@ " |GmGh,Q>TX$EŅɘL@9R%  ##nI$rPtT ~3|`d>ŀـрɒ(#0#!c?V$9@`BlA ]%f =!-h$LX( 0T!30vA2 0H\r& X$ b :fP$l@J! Us($ZF4"a"RDBak$ iD2tK#ГI¸АT! idJIr:Rf@0P0KHJH` !{'XaF ie"![`J_ 01 P@Y`Y \'3aBLW'b@7uF#" VXBRP XWNf8IP@P\RXl >ImF( ApH Q 6B]Ib (2 X@ `gq*=a bx6; %GE@ OPaJ@-߂(Q.p3V8b1z`ҡ ?sq"A† e`-"І0 8u h@;E N~@D\p[qJA N8F_~|!BB~ @QGHBr!@'`  < `Uۼ  E@Ք<VSLQ"$HC&M B "4 Wi bb+9A xk89WX e[H9Oi6dxpP l (0 h I Pi>*8P)Q!a@dB)<#(TA/YtH !hTpZ!PTAB "VP PX  AT@)A@A Q(!6@V ?@LA0)@Bb`)0BGBH aaQ QBb"HA"(DŽPpOhQ( )@AA!ACAC!D4 2"AQ"K KB@ &EDA&碇0ي 8 P5hg@Pbdxd0Ј4p!Æ@1`@0 ((RT(!J 0 sZC~MvCC`9 A"icUSP+h`P@ `d= CPF CN` `0#`("b g i b`0d|` ! C@%#@:\P#h`X40 Z%|0 r ] @CnR  2ONjp$@FPP) x$C: ֠:qUMAH)GohQ (<')Hav(JW! 5(P @ PpN*\P0y!Y`u'",j"NAIHR25F6GhX̜(t\hX`}`a@3ڪ8((MZ,7hc@if` " ( uNYQUPYB\fQ.YAY@@р%c[_RS;bA h"D@݀A`PLxn8($y" (e" "X<w$ mDVlP133Sc0< I0 p3G2ҁ!'OcN.C JPTm,M dz 8@ťU,4(EL!F^Đ@{A"(R(%v0"51p+AY2Bd0@Q`Ncc`J2XذgC@Llmlb 2#`(\636V^Y@Q8Ɔ6fNΖv,땰h 4A@ @-0gbonHI*p`pdpup `h `cBH (t06 d'@P<F ˀ* v#D/@@@ (,@`(!(A.@@038cP8GL02 @P9@4 j  $h0@j B 87(P2_g?@t  08P4@op hWl@(0j("QbB(/Ax?FP (h a@JNMN\Z]*Wo`p)3啫흻q ? =|~{x|zz~G~`w (P| P6F r!|$rM@ @/@@Z & 2] Ar)@@_@AB"$ W5GL$*_T?QڤAjWT/Q?ڤ@pX]>`xm)*)l@33¡V66L#Bb  !-h vAP .i@ܢ`!(Pp(1 {jmK5e P≠uÄH.p0L2t0-K@و>8P7&/,*HT,%Inbh *|Pn ( ?P 0P ))e@M-?P: 7@"RHL`h P avhrŀ h@ H kƊ@ @(X+$5B  0:ǂ@ȫ # b`` fyh`< UBCPuFbdP sqU i(@HE/$B fL,l\<D@ @ U801X)`ʂ45(:LRTƒ& $ L"BAd@%@0 uDA' r rP @ =SK/pH iAg8+]s4lJ  I3؁⿉Ѡ @M{2 I +ÔR|P1Ho@cܔ PAg @ߊ*p< P5(`|`Ja`2K*$DTAq( Av@0W8X (6@8J&16ea.`B@P3- |$ R r*+OlD{D @Rz+ HS 9  D axXRA^Dr6XBB  H  lI`` M / @X ADmB[Q`05|+2"5xdЃbP1v@A9,Cd@%GF@l P "  =H$Y<|@H`jP #QX6g,:%(aGx6t D[EA}JmbZ c`+>F*  Vi h@?Ӽ@;3oA } ( ә|@{)l !DpdeƘ2 Bt8BKœ\a5ʠ@Ĺ'@#s(D0#. 0@A. BXe٥8bH AL`8q8\8 H l 0" P6: J @d؇anQHHd@T (n(ZG\ B4aBHMP1 ka   ` o( 'CC sqd ?z9A'H(5-u: 05V@Q @D` aF $GPI@@p (@h )pP: D3P&pW/P2-F@r5^ a ꀐ X &HnG1 ,:sR( X EPc@4.@|"1e@b(IDrd( "qD @@{fTC4@4DN! ipgX`*e1.`.(e>3IQf`i>!B % jB+BYEMEM UeW86SS7@9B@I$X@QQ<U!?"؈ p򔢤и;1g4B@ـ*'A& |Å0Ceˏ|r0A<3A;S! ƄHjTE*AԐ\D<9Ď:2 @ ;?r |% r!sB}Ld/c Y`@%Cf`Ql[7  J8068?D0P 5g DH!&#p4ht`"<:4"1q wVVRdN @@AA BH  $J`H$Hƅiѐ(HQIA)((@l6fi` `A6@4V`FE T.p"tcB\Bi@B$!H| S>0 !6A@@Pdg 1C_J JI`tb@A4P 44B'pD%@X I AΤ a@C8À*YWF B&CMbKRo3w" b<"L6 @2A0. ̲0eA8O*Q<"b CI PYT* @A ei)QJn~o x 84 iE ItA  )D YAQ6PTtx`&%@>Ahz%DFlqV(Ё.@!Bž jA ̊,_6\eQ`bEV b#8,% &|"B<@l!9`q10a`rIjHjQB  p ʁq߅@'( d d* 4l0(Fr/^A @+_U K$X ,g”X`S \@(oI{A7eHL@NgWP0(0=6F D@@P b\[p| @ ~<0PJ^P@" SR@8 0 t AB!NA`)iR|lL9|  P(_ @bDTҋw@*@{4IBqN%>F 75EH5(mТ@0@gRn[>/0 P2 ` @ z }z@SA I"`uFt 78 d=A~{IA- K2 x f*h2 0X3@ @k%Bx 286bFхS! cʭ@ar qG( (H kþ@ ft+3<h  @ `̬ k* "a` { ';Z@) Q1ω ,A:Gq H4:IK%сrz*jMB0H*$LD)!*  (|xPVeia`X$2xra1Xcp6k7 x!aARЈ`Pd@Th@T;a^+ !P0 *8@h } ʮ@!l%AKagdRSc$P)f@<$$@HYLYa.* e(y@\E`a @\0 x<  >!y@HP,Zh$S@ R@+ (Q4P P)LLJ9wdbL 30@L.! : 2 *ޒ: Q .XwP2B XMG1L& E ? KÔ N؈ )@ۺ`S05 :HhXZB) (LQ @a@4$a?3!9  dfTAbDD@3A |4`l\ 2 "6t= Ax$ c@,!vp P! vp2e(0,@Y j*J sVSH u@ t`m@" P?'%$,P\0nHbR fbCz@ ) Mp %BR BpR6L %%Aт C7 %DA,A@p ŒB`@˥4GPhů)UTkF)O~ A1<#.p0R4G ? 2Tx>F@CD”@hq^Ul@#$8d - PZP$/ -P @D .(L.v'!'BLFa02X DP P  ;4 L @BCAɁh  `  >d 8 pL`bxI1d`1!Cg!% @ CG%$!%;0<nn~~@Qws;?q(`N`"\UWᑆt8h pۃ:;;000HR, p9JA%ZZQ p]6}[ SRcAGF$0 9@"Q_1 @…h C@"  dR00m#v'(98@@VI[Wp`@E `#0mMťB aVh`D@_v8 P lB.  a G0Sg /p Q W!~?wBI'F@(0 @͐ 8Ghb 8pq aC f7A'AB  hQ4 .`HB(  @G@ (b(b3 sD(F P4 ` #: 00!cl NQ< 0{!6 #@ Q" ђQ4*(v>@! %|`}f$HH$D=NÙ~22w18(PRc VD2O@N?3QD8Q2 <@P14\HHF ~"gi9 f@ ɔ4 Bq>D?(E@~~| H 'Sdb (8@a&fB39D3@ B '|QH!D38`8D0, J‚!F(<  @Р6PPR)B*APh@,Z ',$* Ű?801&31b{3n@q@@NQpE#TR i3@0 \1X`FRpxl`a@>5iq(`,_Qk9 aA[O DTBvVv^l %f"@}E|%8!@߀ߥae!0 a@FOl؄rNMZ;|`1ckwd(/ךH`@ǀ @ @D0b"   !@@p8 c P0L_ ^B@AC!$:R0V@' ` Z|m GNA&EÁT\K1 "P fT(]  Px ވX>G@,<  DCh'Pr{` 0@/b@Àx >$P  DpP1 j@ŀB셑J0 BCX'@D @ρ@@l> fcm,Z6ll66 `@Y  ٻom0'3Ȁ0;~f,Y3{g0> r@>%@E@66,-A0R_C<0S]<. @C~ hu9@ l%0c6la] fc8@?o,LP7|~t7'''7[p/,A/(@B (6H兏p  1DraBpI<008x=s@ @ (MX&`ߖ@Ԁ?߳iQEvde@&>0 }1da(͇JcUAC@ `P0pH(hX8xD$dT4t L,l\<|B"bR2r J*jZ:zF&fV6vN.n^>~A!aQ1q I)iY9yE%eU5u M-m]=}C#cS3s K+k[;{aPcd @  a4R}ؠb!Jcg`緳37D @  2  JN#"{p9Cc@A7@ (Xp0`a j.#cd 4 r= 4htJ @A|AHp8ΐ}@ ~ YBBUN3.;G@-0? ae0 P00ay`0f5 c002T (hH0p B 80> 0`mڝ\ 000A  (€8l8@,= i%)@A j  8JIɠ%ICEЛ7`>?F  p0B 4H8 DA CCIQZq@@_>6<@_ 8" AG! AU Xx:( a`;`LQ€- b@$p09%s?`  vC8A1 ?8Ap%cp 4lٰl5wp;$`@t7 =>P;`XT<ö .|P0p\D|Hp@ (9CA0 @# (!!& H"(1  DA0@= `` ɓc@ `p>O9 ?@cAP((01 @>gV~=2AN powOGZ/k,&^SۿqSR@7R @CcB>>@X5Z 3̂x1BP eW P,]L AAu @' P2hM: ` " ,H xaj lLAFO1"Q thA/ qz 1. px#1b$ \LP%CM'O>ud[_@ڼ4&)'0@>@(,,99@ЀBjVakHbwJzWDuKGBueu<f '];% ߟ;6 B(<2"9P)x@on_rBJ@`Ą!E!b`3"Б vAU0192$G@ Px fxs @ B  `Lp>̀@d&#p%0 Q*008 @rf9w;bL=`W E @ < إDD. W3p7' -`8_p!1=!!0V - 0)5o c`du0Hg`ftd0)_@(P*A\b  J @AD.f !%rFײ?AOJ%0Ōq,%E_/ RLN]%A'HC BmNw@+Da@$ cD  p "* r#(;YP+05:!2P4XK & $cq l|ydȴ8p)K*0%/`k@>1 L@'`Q(`Q`lQ(1 @AHy `N)q[p TF:IEP A(2DB?LCȴ (d3*cW1` P1oA/  C +M sCLA/   Ҋр 4@`j\ZɘL DBMMMMP9&7LG  \\u^u]u_v+> n~Ti0<AA{`%Y>X,l&ll6lr :*:PɍYv( @"@Zw< gBćAQ0\X9e10MЈ׌ pt:$d rB ҄ǏGǔ",&EŸ2O썉8 HprM T*@ @PU"R)HnECp7@xc`XUd}dp^qfr,ˠ E@x5 O <  @ (O~xH D,pATH ,6b:2DP0E#/-ĒP%LhbYLCG^@V ԡfjXXD@%Up$HP(lPFVQz0f$]Yp`l4$ 2>f 9aL K 2 :IAB#@KWpY,HzA\%|8nA(0$P\ApeDDaaaah@݊D'JR X,a(IyI0WS1TTd`ISB@H)e-Z`Lք s2aA9!0fJ8jb#LstVm K*2FBĀb arw\PXM"6 <$ʄ0gc8#ENJ%2IPXJD`+"jRPbP^DZbpk2"J%S@,Pǿ0)"UB`DM!9_b^_HX(`9(@043"]I J A!A hc05`=pX`2tFUQF`on%萀h+J"8$HPu1!8QpR , @ ,x@ ³h@ jPv D4+FhhMVL/@XA7HwpdxJ0`E!Ho FPG䞀r$$@ Q@  @5pxzÒL #a! 4 ~ @3 d@ʏ1ܨ@:ϤWdfVք Q{lCI- H2!P 'd:VI/uQ"xF E@"),$%0 @ d@HU`PB2R„AWdtx_XBB 0Y O "PHB8P0 TJ>B G,DXNT.+$4F'|otP4V"2Knpt8 Z –pҷB$fA*e8 q)q$@ ^0XPR@p@DV t @ݍ  `@`l% PAw@, `J@-r9@!FS: iX@ INnp`0(|* @ $"`|E*#< _@slP6$8& (; t؆+,BH}Va p44e`v-!~t_#{,M'*E*8[ % ١'-بa r—x|$Ȅ..cF !&aȗK!uj\f^d6 A(( +O1BFF(w2cfg 6<#'E>I" òP6B<Ѐ@`CBly*Іy( " 2u _0 !P3.` $,p`PPd`N`^jj*, bi @A@T/)F+ƅe/ &Q\P`;30bV4̃#f!N ,QZQ4 6,iz !"R@0%@+!PsAB+1VKC$!$F`9Р;( k 3c2 DA 1 d (%1 g#-3W+(QBJ @D @"APltA0 LO)@ (P! :1P9T @жXR#T+ pj8e(($Hza@@ @@Rj@W3PAiH AhK@;N4K< ĦOs`.' Ӊ*vB„`e$edxr':tIs.PI+7C_᠖HH% 8xniBB#c[bИK89@P2EqcD SPSbdKxQ,w,y@Z`x] pH  f ^K3|AD0`2tâb" (1RI$"@ 4VE$%LH,P<IAxM` sF: U=AyiB4X؂rR"& e.p03 2"@0*,T`Pd,%b1 .e?06G5T& Lr! @)EEl\ԠyA$@dBA@t:MĤ0>08 ;C \w%JYTDLXLCc+kl@XXebfG( 8 [ L.L|:?P>.hf2h JVi@Tp3!&\ 9 衖$@GIG !~Z' d8< ,*%(S@`Xۀ@<4Hxr dtD !"K x&q,)1T1҃5&cF%EA:<(*    L @ 35V@.@OTdQ""0D89p4[Q%rڈx.(r)0_x F [(y20fz0? _p4 BH Bq,ApN XX@R (  N "U܀61ad`㠷! ,!! /`Ao@3A@~@Z@A_{ÁHހfJ81wiqUݫpp 0 P +~& 480?+=-29(HAx8cTdqb5@ۆ0$4D t@0\&4UP I'$3"~D#Q9D}?gw TJ.?a)@R#e"Vf@`L  @OA!> ]xDOr )O3C10{ 4L@ǒ€p4&hH{? /&& P,ѹIS cΰ %0 `"Wၩn80!g jd",s)!i $J`bJBhAóC(İ?`4Eu"ˆdH%'s03 @n@v)S@,CY5-Z@/Hd0B'>d/&& xE,$5 n"  0ᜠ`A0@ l[ 4 U04`b%% .bi ^!8aj^B( pd1 / $DW I3EX@ b@h`0!P@2J H `:nɈ_ l7ȍ0!&V0`Xb,`B`}ֳ4 )~+ @ #I__[>``Lѥo_//1&&L Af 0A\̴Hi'58 c!@Kf( P T$A, A6 @ bTD0( $i, `a!2w& KDByP% 1\  5!' h$ 0D )$ `7t01H@\Ab`11,1F@  @@Ȑ 0bb@^Ap@!;Y;$%A qu |H7pc`@܀ BG=AP7:AP0 $(NSB{&(a.0B !(4 Q"@Sg"{ FB0 ΀ ڧ@ lx(tH\*"RSHp?48y|(%*,p\(p%`-@# d))`Ă+DI|} x d ( # DР  d* " | pp@7$&* A@*04," ,@@,@HzD]0<P0@@_`nHEpI&<CA><"QN J"J$I&JSj K"Ja$H*L&J k -"JJg$ёBJAg<f ``&J/k +k+k  -"- Ҁ+A -Ҁ+A$LLxN$`* fare6rvfadeNrBDaf6DrfaLQQ`8rx`ra@<m<gra062< ` 2< BTB6aSJ QmNu DNuSABBf DQNuX*3!P  B 8@DHT1TV0Qw!$hll`J4V@IR|0+VWwH<$`8p  X x MdC Td CH,jB@@@AU!.0ed~haUA]z*O10p`?SH:(T`@1C"D1PB^ $ āA@6 \0G(#%8v.),. G BIX)rxN@tBă!P6Ѯc<[0;!W`$ 8%la_#@U2 @AhaB @Lu  dBh e$/LTDA=C% PK.%mM ML2f(  @f@m(`@)Au<DPJ_&b x$1E H!@`` H.-Ȉ$Q`h ( $j1}"KRJ ރVw P#`I!*\L is@30? Avf A vȔL1A&! l b ɆB j!}G) ́KSH2 0,R@i + 8@|QJ@[H(D58 6p@A Pa @N`$8L03#PP0 :Hx&@q BX-P R( #0BZL. n] A>;jIHv$[ܖd"BU I khR@6v܁0 t-:eC QA PBY AҀ 8a ri4 3P h8#(\P q@W  p 1p2#A,Tl 0BaT @"(`G5@@ 9 )ʉ;ˈC@ ة 'PH1I\%&!"2_@"@Vd„iE]0"Dڗ̰%H䒈e|@c*H1P{"AHj @/i @D@cPX HC1BPNq ! ;p 0prP2s]1a b4YE?AJB8c(01R2ЂlhnMPIı ,@X if@!5Y((00!@<`1)JJ LɌ0 8A3@@X %@'dH(K(X9B!xp @ (e"?d,@x  a` t@*dX8xz"$6`= GD`h@*Q<s`ր`+I+2߇lKx@B DALu qX B`@az =!! ! "ZH 9!bp1@$@CAa_I! @vaP$C%/C /1%O,NNG^*D`Y-;D *ЀzI0s8z.9Wpx址p @TA/` (h&F\P $P0$(W@Y``(`PF p AJ*@_83.Cu3B?p 6e+  :Ӣ46v:@Ʌo 5:L-] ٙB@8`$@}X![{BbE.ːȊB&f6;7!B֦6.@\ʀs*̨2ʀs*̨2  )`( X ((2r2`b@A5=Q@4(1X `#@`A  E  4 0_(:nx<Atp,eH4aˆ%6 F1 f,8 @ݦA}b /_2kh@X@lf@@ @@@ 0و C Aώ"CZ5@ ZhSCA&nuK| lè u1\ A`, h{~q 0hZm` = -02:fP0#8 k@ж!@ÀAHWP0%b1 97-(Ad`@7FC>Xe, !. ,l x4!]njnwH 8ǀH z3 PC| WHLb0 a>`++}9}`hbh؀!Cx@@1(aҰ@iU2ۤe0|(6f )m2&R11V 2GL4`` ‹BV 0@ (Adx{3GAv8#*@@р t83ta 04W D |@8 @ /A@[$ d4 `$ E* W D GGL$1Depm1$hñC0Q32rH,m0 @֘!Q Ty"!jyH`B( Y@4ZP2Pjpˀl6جf ڀf0@d H X @1L.00:xi X2)kyۀ 1$80 1%yH3i (˺X1` QrR,Q*I11,c 6P {5 c 8@׌ ,19GH HZPr `R85tc`+K BK!GJ l iU,@m  ZG5jthPcq@!FAP(4@ 43p] ` aX2 c%F` 0o3 &A(x1 U) `؁`͒ ,<Aa|M 6(t* P 0@уl(0?P`b(ut  P* Pǃ*AL8 *՞(8H6&2DJؐfx b (1eA@)6K nGZhVCp18=P1xa'u` 8$7pcXF`r((#KN P8<3#@ 3(@5 ~3 s 9I瘒pA8$_60C4  R P,Y @L !Z5`'P8 hAO@h 2A?gf]A_! &4L  A`J@* /@#:C"$>hf|%xHJ yq$$2Y(E)G %D`d}q.pz6#PB"ͅde6@ >k3EDl"@,  #  ##hxa%  @2|E 07h&L8 0 CD \@Z }RBXf4`hQ8l 0Xyx@ӄ"1_8-S4# l9VE0S  @P4 4 wBv*)pf~ ." h`@>P&܄)~@h$pfCdx:7 MLaTnEaWBZTh e2 U   QA@ܧ.T:D,jPIy5OPq hY9}5(1)X !n)EVGPT7jh ֺ4$z X@HP:_G )}) 31"(R=RupjTu(![HnKQ e AXp[ !6$LBF@ʼm9 >% UH85@Q2 0:W4 * +ZB X!hAw&A J`b̐( 8!ʊh" 4YC P_O0 B02 #թ0`e8k2cBW3hU0APThzW N@I 80P:8wQg& @Q ZYPJC2".c<hO6H0ES^&f@ A AQDs9![ aO>0$ (a@8c/! |@Y<+]rwp&  ru6vp$3&4GD- s5C_(1d1@,52y @V`8B" n@(@,A(#R@1!nGI)d^$@i9:0x!Ԍ !aA V6 W@38  mM`f>g h:-13`  > ` E9. jB(A@AX03d(A5cRfxR"@"DX1 : d+ Pxiت"`@M(q :!n"L.R3̔@F)ط9&@o 2j 3%hLdX٘ 0;aK$P xx"bM@ 3 %'n3&W1㠆h1AGX&2ȵHCyҤAE@0c0( HU}DC؈ i&$3k 2S˚ @Ȝn@ @cqKd 0@"F4C`lCF9D/<@S TY$$9D HT (\ KHYNbQ!/`@2@(Xof: Yn@` P080BA((--$ VTLzX| }D@<{@o 0 $ $ah4c q("+ (bX`$ 3p'cƲ2al}9 8: 0 + Y!n+NHC @" @(Ic?Ga0Gd9T H GQ8,z8{tx3p0@ʋs@ `kDBhZW:-ta$ 11#dq#nIR! m<AjIa@ D@0 , $ bXPPvy*ЀA&9X90դ?+re %{MX*&fgFP6]0 8WWDmzaЊfT@  ́'jAs&HAP8q)%HC < 0` 041@;ap05 jXX <`} 0 @֦aD@F< $ KAX,p@Tp l2>~ CeW2j o-؄@@ m P - *]`zP *(H#8(UptRM@ W2H?J*\ 1R^"/ g$A;Z@4H8^(0D zԂ< `@A@@Ɂ-C̾;\L=$s8z.`br<Br@@H@@4 J"%A8@q@e@'CPQi?

G@ RA5:B`Db Q&ad ¸ D4%h UP A`#-$:Haܐ8{@P @\jIG*  12@. q6p P1 |`8Vv#.feb8 i@DF  :%&H3 0A91b<~`av7* $lPhd ߃(D @- TPiHP2+H 8AM@A & $R  `ew( 8`H4$T $ P2 ""AU*p @@-+H(R!  !  d $fM"$P+$l*@H>$l $p4f$jp$mH V´D@A@(1 ́ X (0 M2<6ʨX cGu` hC`kWb=ؼDGhlY@ZHT\͈Q5JB =cmY :$ImD|XA\I`rr@C  9!8ʊa@憠Y7A#~! D"\p * |ЭbBP0(@ 0% Q?P 6vVA@l'@ T ̐Zr(?$@GL6& i+CuQ:, @uRwJat 9 .t:`1w1.Xbΰ X3P@(|H@3h e7@[0~T@1fq) x[f?`X A @`:0@PI0*T}E[t 2* X@A%! dଠ$ d!}E00`8JP 2[3|pv @(x*`a ($%bLG o @0HT :bh LT " )h [8? @LX,X #`AJMpS'\H! E F@( O n@ȂL(qC kS$`P)p0& $ /`o@1nf8!A`w0n!p;'@pMD @p*@Ȉ1c t r dHa0-P((+l>D &)n< bm/D@AC *3xJ!98d* 4W)EP0l%50D@b G 9@&Af8RDub }fؠ0M P Q 8 .S @`!<7h`OdD`AoCJ y vրD6PDH&lD 92S2"āI  B!$ P ^h[V ~aLuJ;Nb ( U p5%!c>`   r_0F̿ 1 5N i* 1+`R0 `D5.C@!~rn64" f@*$0 !@@_$O1( 3@\B"x9P:a5gplxCTKE`hP8iFX]Y8w q @LTA%AaD0 A(XV( oB!M(DlK "`T_ V,j`B@& /4(?`   d"LAP4 *LC!0o c#%}z(@$m`@ Lv0>Җ7}``` -ܫ 0*@%`bDFA@(*,#*,"WGԥe1Ia `OC(D$5@˪UPp4(,9 %U%* H"JtĀ\" )TEUINT "^0@d@*0hBTB@šbҀp@pWlPjी ,  `\5 $ !P@H!@aԁ@KZ{LI8R  ) 1$ND1!-!ma̼VDOFQH)JP؄Da@^JB -&8J"@($`z8,"f @Xن:`{B 0n!ANE l :*Fh}"C^.S$2р}!p(w$c%D@&ICD7IlP?f!`$.8yT5 ct3h!2Ծj J\A&_dJ:S4p9 sf`+, WgH3JP0pS,v%R 1'pc\7[ `6($\HX m 8}a?   A`ɉ r d.@-X@pnL8FT&HYa&oaPa!a9`D0tbtpa;' ⥅y r㙡  [@F wVHk cs_ 8AC @P? Wp?<M/F`…z@<@8 o9u ;đ 1 dCR\PWPH)/' !0 ̍,a~!|z T@2 30`xI@ B>D < @*  $t)$8f?qX08`l^l@Ұ@)h*TZ!FT fa@h ) ?P @A $C0@6 (@$-@ _߮%1>fw_7~X㱥HcN K  20DO %"f`W!@,Lx|QR1CP?@ d h'S p L', NN H0_ADpVa0g X$EŅO & @ p$I B sA*S$c5B!2 6 ?|`b0 2@i{`gefdÔ PfY, L >6.u.Pӎ s&Q,RBZ;Q }BYPU$.d{L9HH|,MD1\`@@MXB D(Xe2 H fB,$@HU,-a?(Bdsi0W  P;< dI#CێPG^*@LJ i@C @P5 D } (! CQ%+l PKd0T , BPP`Uc (IC_pfHp9A$RЊ V BJм!A!`K *=J 6 \CA M-py5H c5@)4@*3$|s(Q+w ,ReCQDkLN%AǬ!pB/;!RP6a?`cD)  !@(eEJ% A#/PVT! .`9=~ $Y8P , $PA|! h  n)O!8$ \H@Ap()\NXD<w`Uu, w0 jH`e+fw)&G($D!g &jb !AȫŴ1G1GT-ܧ62<8(BTPAH:ưk(pAcY h3 P@ UL,!0˒HpgS b p ThAACJ26VK he긣O<7*BDHNcsTAT (0<$wBItA 8qF|BXP86 X{A " 0, B-%s"iDe !J  <%!$i@B@ l@D+ 1 A08cB% $ 0L 0DW!E%!((Q*$pPpd(pQF) !apI $PPA`"04\(8pD$**ɠCh*@'eCABEAy>$`X` Ƞ4Aph @AAI!9CFbN!Z@0  0Ј4p%0 a B0(7040<2i@`0 `2v!R@P-(` 0JP(XU * hNK p,@ `0E*&`HD0 4 ciRC!Y X @|v2 †E C,E P A" 9fVkC?$WC@R` aXL?aU&`0K h`( yi  0܆ @C (L"0W0@&'40r : o NL@wCOpz0M`lD0 z,>!`%!# ɀr^CDq` E`\pP.T+h` 0 &g= ۀ~ \ P@ c @H dPl  @(RX \@x@J$WP&D `0)%@<0 Ѐm @I 7C7gF7(aI( ÈHat<03@P1DBpHp  0F@ `@ @(@   PlBz5H Q J  l:a%aRڡMj'TRڡLj##pP iH p 1QLd@4X8&1 :9d;O0`@ߨfL0@ h @;A _`p HH@ d,!#tNq@!ȱ/kT$j\)%C)p4BM`"@ s0dŤCȁj\@( pD A4}?gl@vU@a.`BLp37AP3$$v @L!E`0„L@iIHE(-Ј"ll2Be;AQC ,\@:($0J@L^4P:@9Y!0(`<E^0m)h0805003CZ7*'#3&"ЧxV ov Ӹ00-AIBB,69y 2K2```7 u*dbـ Ɋ$`H 3T<D`tD1 LB`@  ","!~(V2I*4z bP]FHВTQ)GZ$ n`I8 b'ǚA 1 @(Cѡ(O_ {'poB " DX@P`Ё PDEA"@6.4,+O>@ƢBM HAB`(3KX- , 2/p#? "H*$ @3d  i 2  [9PHRH A0 e(nA2A< D!,8 eHLu$  0@İ$tAU'Mp 0j2&p*l(@03_sP\Da R%! tp'p  @@QeD@* xR9j"L0dπҠPR(K+IHBP-p x1$HJ(O}/*OChN@r$Pl @ ,@11('?4  ` ,@3($$O3_ cP@  Qr-R dW!e2ߞAf *. mT@a(i3P)a OPu*CP05( LpUC^T ,@x*9@Π _ k$ 0PI #fD7]7P*P}R!_@/jY'@ z>hd?`F bpE~0*K'A,D d`"s>? @ 6 ``p% `.x4 f\"06 JP|B2,/p$Fߐ.P8XJRrTD 9 p 3KJ%`E 'K`:`,@XU9@"@ԐR$ "46[ yT  ٠H $@Bq,)0D QX8&18,(čBAEhJԀ!:c?&FrߦA8ybAX#N @MΎsWĠk- N03h X& J Бi\P?8O1S@M)T4Y(0$$<8D76,!`UlZ# c?(!@p o !@` DA^:7Y #@ U.`W m\(4, 0@# e`mYU%`` S`9=I|N1`E: , <]"AOr\  "%HFDaSWg8lAda b '@1g3Z60$#-@bQW%W$Q08Ú@d6Ch;h  b@@8)$bv@B@3Շ`eHt⬢@$;0:h\Tpܥ!"LŷJXX/P ( P d ZTP,TfBER U+B7h4 9iٚp $p  H @a@ 02d@ʂǒaD BFyI| E 2)` RBAP3I j. fƀ x_H`u %" `J@ \9T`Wp5" /0TcP~@H* "x_) gPABh Ha.Gma( *8*  @ b%BH$ bf݈4&p ](؇?@>-x EJZ1JDR Ty s80='0\I@xh) B0 $( D}rd!%@ X8h\L Ȃ@ ҁ xm R!t DHap8CT,$!98Rb0k $ @ K " A@ L B (8!8$4 vAA@q6pB F+DŽ +L "0p|b2Phx8P(dpr4ph `В֝ ? z? r^8h` {'0Eg2.:@48J>p c| / (6"a W82,BNڈ鶃 O@2< 8 (D"0@ P1_/`o-$G hJ"!ǓiA<@ǎǀ  Jp 6cG *)|B2-Tpd8|0;jn-,7tr0C" !$bb!t&h '[7 b<1?h{^ˆTB  M>>"0p'xB@!ol(0w=0 ǀ@`'t:8 L8t: B `@ awxB9 b8"@CICI $0 oo!Y ?aw `OА1@! g`ŀ qP8  "QEQ+0"DA %v0'N㹍2N`X`b@'Axt @&AG x ahI}b@"B1,N?7$3OAό~ hhfp>OnpCO$ | $xE1 AHH!&(  j2fno1၁#3M0)Dy yx / !!! H#1 HAy(P 1AdDA`hXH T2JT  s@AeTd4EQ9a%QP`, @̓Asxlly@S36'6 ;EY9E.F : A [Quda%({ VB(`6 <~@zJd'eg`l[ v[ b,GWrS ZXH MPoz @d m͈G)$H8 Q&6|VB@ yoH  4 x pؔ ADA " @ = \0С 0(0lȰ%hEB0 @腁 { @(]!0`S@@00~u ᷱ\@  "  8@ o4$9K@"0pƂ|@ #gE0@Gt X!4,YSȊ! `48|B  f6.ܠzf͆a`~|` $@)v {#<'bU<p3n!^^d @ccoP!?apB_%3c1?# | t71@Ɗ/0<`7QS8@CfA>&f3 D xOyz@#xBrrsx7\ ?Zm^"!/ 89NC`XX 8 G&' 0DNo'رz0 @˒Ղf >a ?H~c>~~Ɵ|?Wn FQ bc߁@ t1IuTT0     HDLBJFNAIEMCKGO@($,"*&.!)%-#+'/ hdlbjfnaiemckgo`XT\RZV^QYU]S[W_P84<2:6>195=3;7?06 8fH0d@ݠ@fcO/ ! 8}x6{{33n(P>aP4@ X@! pPtAN& B<66@@ A #M@F'Di@ 47(KT lw!N  p%Tp9 \:(:4t\ &3NFoP0`A@HA3.p0pPh@2  A"<0h0 aŠ (@(3ÄbP@4 h0 aÊ Q 0hTZj|}~4P= c{ cTh`00~@'(`D @APp TO 1g4x  ``,| @Á @!Apr@ <4uRV S6(0P (`dA#Pg3 &B@00l3>Da1a3Y0 0kH ` F͛ XP o:*}A*D ='gG_FE E~~@D ( 2 I@Ԁ 3A, >Bx xS^TPH a1M]UAc>}UEpAEY ǂ:rA1 (080ml (ki@%"r`(P0gH 3 HN@aZVD p㻛 Qy yF @#r h8,`(@@011( ;` ',1Gϟ/< Ѡ3( !2`  Dh<NO*( ܼ16<0Nf`.d 0 @0 b }h1߾S.{up e>ݻ%8 x*A 6>>($( c 8? UX3<,%Xx` yA$ P|!hvl[B-),IAf@hA@@/ 06(T@*@` @ c A"*@ NAzu`A1@ IAb@V @0O @' 0( '0 `AV(LD!` AJ,T0؏wd'_O?d >!ͫ@hxÔ (`(ppGTt'PI0GFW^:cLFjOprpESJ9BXsLcQF>@BC_@rx`H'|p ` j.b !Lhp_2 :FG]CLv{Fk}AAL@A3! Zn$P$Bm Qw,n]{!$D_ X_oqKQ %P5($\LU\B\q$0Ȥ(^`@((p "8$M`H&9tA`pp >108DA0p*")0* (8!9BPB% E ;Թ`BH<ǙL@@C 1 LP2\ ^P "v[L6 o@Q@H@  p]W by  A @* *ao80X@ B$@T(`#D<@C2HP60 es00f  "nۄ<@1M4?4$`=\ 08(DŬlAD,TTTUip<@| BA UUUU`9x2Cp I& s0:dg1 Uffff @@8 2 9X\Ub$ b$s@phD+9\Ht: ͍|<Scdx'@HL / !M(L|xD|yHIR"ʂd^/a @l[ .@= Aؓ*D W P998FA@9!@M͈03'6|]^{ \\C`` a6FH< |%(y#cXrCP0`G# pT/ Br֐f1r  A/ r+"2R @P! :4@* (@1vZDp h  )!3 H' ,&l3@ rBbe `DPd :X$\wa2LPЦe6#`u("ϥE? $0DD1!%.$0`xX!D(u$ 0 `6!F @JRф8 Qm##"jED@hB8@^ *@@Pd̂I$` *bQP"#(MHaYe1Bp r0jE2 h0QA0P[@('(r"* B؁ Ey= `/I)F Q I_9"}^Mv< L `c`(4  $2`jA-$_`- A `IO5%r X ^V,eqT0 J 0!CJ-` B\A@nL\Y 9p8 A@0! bD92pRHx Q07 ʸ:<]a4B©p8``B8Q)H kH(/$ ^ 8XdE 0`!%'E`JE=N pdk bl;Pp5r :@2 {#C8a`T#RX`'?I\K덟 :0L(0!p3al<0^BdR$B"BB X@CJ"]#fOm@f@И:f6Kd22c,`A_@4x,($$!%] 9 rP605s lp+JB-X r g =~ `AD6eVGGVg)|[j RAZ -@1"xx:X. IB@L4pBf $H%qdR2"I% XQƆ)<3a㙂LAeY.S@_  Pnœ#N,PA "^ aaAA LH04PP Hb9((2PfP g- (Fb0`p`3)QJ6*JFۀo >lAЀG4 2P3Ik:i<@ 0@8\< NB] T 0a0`acD aKKKK qQkp4Oqoyouo}`l ڊhff8*`dbfY]a*E-r02 &54666"60tu &F kAap6 c$E@|/@@ ed)(0`c 5 EAk ࡠ@J: @#.} L $LIH"8\f ja[WWWWd5A0@%;@p5dbJ*l,L p< ?gI}uyq,,!AAJ\<;;m. +N*ϤÁ(;rJD(9ʤrXɅ԰;A9HE iOr! C@hEF@Q D~駙È% R!|$$Z*OH2C' fa 9,yic_t"ʢ:$P& 4  'H^ y@D Wg \a2EUX(!#$/`(`v l@Ԡa'&`J Z; @@ "\RBS`.T 0@@Q/g(H1 Y\0(&q% ȁq!01}!!>1c HA 0!@r9]e|H^* S:Q20AM !A_03p A0$p屒HQI3a3`a`pFEG #P  ԙW W][Sp t fac!@̦ hht /@5#׉"1m % [ r2hl@PX\@ q7,4ѱ!HAH x 06kxPK<0FL @uh d8( ^ { dBTtH"YioIy  "[r,qb6daa e >A5`&GDE \  JMiln*IDAdrgh>">Ao($N3! (AnH9 p-s0!ZD!Di(B 4NdH8P̛S>XhҢ [@r@ ,FPRC@}c+HWo:`ZS %s$ɍg<A/ݦ34E v(a Ĺ@/"Qt+ LS¹FA@e$hCxMHv*`$$51ѨftAE'4Ih0 `1 t&BT-0<еc񵁆 wȕp 0>ˠ 戇EPFA0KPF~28H$h1`R@  %l\" I }@?a/@Hr"a)Es(HP30CkaK%33uih JfA4U[G L9@Q ieaea(Ȑ7 iEՙF#B@#`Ftd@  h"08 d Nywd`N@! W(,SL$[L;DL`FF֊$ تTA2zt eH ē)E3HIvI lU0yi$8X2$ h@3& l`F`@DӁ A> ^<H>gElљ$k!H @K'ùE؂.3`*LC^xV3:hTPqT_a$$F&!E m6%h$HIA'c R ^DU0 Ar{(`h%X)D&@! @E&@03A<`b ԐH<$ Ɔ:#V7F|'@$`EU LlFVW cDZa0!b R @ +18Af ƥj(Oa` `9@n,#B`vo$D{d~H`gd \ jd.XhJp0(I"A@rD P@3_A09(PZ =.@o* 2D ʉ|4\ExvKemMhLlnN1Р;D-Y2!5rHBvCh@ PxeB-nT(rBP`P*@TDkHP( `@E$# E(-l(K hD@*_\vLHwye    L'PG($!I@(׀%`y!Hj#" U'* ?#7:(FKf|h|%7q:A-aKi[fU3 W2p Sd8ep/,(Jj8F["y+y:t qƆXtA006pƅZ( n` FH % r9 xt@ #)P4τ, c @78P0_LON0>"\`AǠ ?6( \ NCd !$J@>{020;Tٌ?:\o|pp[gqs-p`glOeNTj zD09aK<xHPs>HPri dBrh1r0eK%Ԑ:.3/2 @ B!GT#U#g;Gӄm 3_3@peqA$lķ@(x !H @hN0!! 6<`hC@tL~M~7^@. ]P0@?( ` B!`@DPzTU 6V]D!j6iX R">JB(,84H@d)2 ` ,p* `JPr@أ R0 ˷A l"zb%¢0$$ZD `p#zbz ZADAD@$v{0O??aAh> z Xj*vHn(3oI8wP?@ U8$4J|CHa~c VA?|6z0+KA+KAK@" @" @ LxB~A?߅lP$` 60(E "A@ @p=h  @00< A|?H30:Mp=uDH#Fa01y.2$012+'h A@ L:q4r" qˆ;C@`̘ @ 2JAD P N ^X8X1 5HX$UkPT@Q H*PTXPIHP(S@P @T5e4' lHAFPNLP-TUa thdɰ6  \EIA@?Qd@rʻ:[;,,t=G^_r `bLL0@ك W0s-&aIN!r8"HPޠ%@08R8501Bf$)!P&2A$ H ) ? %,r j!@p$@2`x#20`0 %B[ZXvM larBBL4ijM4#6G"Bì0 Ay9Ҥ`yZ!dƧ^! /~ r06 DI u\ :@;)@ì0:!LE $>j 0&J!(4 Q"@Sg"{ FB0 ΀ ڧ@ lx(tH\*"RSHp?48y|(%*,p\(p%`-@# d))`Ă+DI|}w2p"dhPB 2 I Hg S(0 nHL4 d    @ ,4']o0 @0 bp/ ! (p&%E,7+&.\g{W'cS1 lml`N@ `@ ` `@ H`Ѐ 0@ ` x`ڀ `[`HRd6B#  @)+ˉ* ʰX@Wr`̐ \!*@5$G@H80 ,b]>^}v+yJ@(Lxˆ^l}?1(_z  V/Q6Ox+ĉ H( xp+t$@-!F!`$)PEpkC? ! "H ¢tB @UB] P0#01 P@x[Ph̄@ y$0,A${`@[.p\9 :3`3D݅@*C8A*/H!@ `Pxs 8dKLIʚA.?dI%A$&K4v2@An8P4`! X (u{06` - 0`U1cYq nA l g(VІ+]n+e $VE ]! B2c`0! 0] & t$8lBm>a$lQ h (.Vu 䠠O .a e#wH[]']A{r\KKdDk pK VQܧ8/;EI HV_ҀH *l ` b%E^J,n.%  aJ 4 4T2#f|0`vE/H ` Z pH(FP hP0Hde=H W&#pL؀ɺ@&rNB" ɬ;1X}Bq 1q 0 An ,et`L` x T؁ qP?lQ"kT82 $m B8N:LTAp eU,@Pp^<8:2Cs0&\A8 p 2~p+tF + Ā `"!+ ~B@΢/0Rj0D.&@HR@ sA ǒĄ d@d 4fTJ!ԊArԢ@ A@@B<„   cߐ*/ '*xP@@p BCC ! ,r Lionpoulos . --------------------------------------. STOS Squasher extension install program  Original Listing R.Vanner Squashified by B.Earl. --------------------------------------(ͦ:::ަ::&2STOS Squasher Installer:&<-----------------------:F:2P$Press to install Basic extension8Z::'Press to install Compiler extension6dK$():K$ d&nK$E&xK$C  : ----------------------- Install Basic extension -----------------------<,Install Basic extension into the STOS folder:<,--------------------------------------------:VȠ:F$(,.Select STOS folder for new extension file,):Ң((A) :basic*.bin,):# Error - this is not a STOS folder!::::Press to retry::K$():K$:K$E: :ܡ::(Installing SQUASHER.EXE into STOS folder揘4{ SQUASHER.EXE,( )( )T::?Disc now contains the new Squasher commands re-boot STOS to use:" --------------------------" Install Compiler extension" --------------------------"@,1Install Compiler extension into a COMPILER folder:@61-------------------------------------------------:V@:F$(,.Select COMPILER folder for new extension file,):J((A) :compiler.prg,):&Error - this is not a COMPILER folder!::::Press to retry::K$():K$:K$E: , @T::/Installing SQUASHER.ECE into COMPILER folder...^4r{ SQUASHER.ECE,( )( )HD|::/Compiler disc can now compile Squasher commands: -------------- Check for  -------------2K$:K$*K$GK$g: &Š -------------------------------&̊ Oh NO! a disc error has occured&֊ -------------------------------ࠍ::: Disc error!:::HThis disc must contain a STOS folder, it must have at least 2K available::9and the write protect should be off. Press a key to retry:w:& -------------------------------& Oh NO! a disc error has occured& -------------------------------::: Disc error!:::LThis disc must contain a COMPILER folder, it must have at least 1K available::9and the write protect should be off. Press a key to retry:w:``\unsquashsquash STOS Squasher Available Le STOS Squasher AvailablaAClNu#VA CEGNuNu _LJf N0| `p`p yV hNH yV hNLNu#Z|fa"aa ҀHA\ !@!A`n MJJA$ z"z$ztBABaPJg RA Afana aP$ z"z$ $BBBBBBGrL?&JI`,&Ho&Iz*HRM(fgn``SM(Hfn& SlB( SDo|m6<`<UFNMθv`l*/A A _ng:aD:&:06`an06`g&SCa`06`66` aTv`(BNupa@pNuJAg6BA| l/ARP _SCp`Nu/AnRP _C Cp `S@eQNuB@$µtQNu. L&B yZN#Z|far"ala Ҁ A"@$`* fate6rvfafeNrBDah6DrfaNQQ`8rx`raB<m<gra262< ` 2< BTB6aSJ Qm`( DNuSABBf DQNu yZND$>-NANRT J fp m