`8BM ٻNp NuIMMUNIZED WITH UVK 5.6; NO VIRUS!!puke'(*** m`  @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmos@u`wy{} @` @ ` @ ` @ ` ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   Aa!!#A%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!AaOa!AaOoɡ!ׁ١!Aa!Aa / B b  !"!B!b!!!!"!""#B"%b"'""+"-"/#13B#5b#7#9#;#=#?$A"$CB$EG$I$K$M$OQSB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(B(b((((()")B)b)))))*"*B*b*****+"+B+b++++`  @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmos@u`wy{} @` @ ` @ ` @ ` ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   Aa!!#A%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!AaOa!AaOoɡ!ׁ١!Aa!Aa / B b  !"!B!b!!!!"!""#B"%b"'""+"-"/#13B#5b#7#9#;#=#?$A"$CB$EG$I$K$M$OQSB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(B(b((((()")B)b)))))*"*B*b*****+"+B+b++++OK_CREW1993TOOLS FREAD_ME TXT!. F.. 1STINDEX F1STVIEW FMSDOS FqQUELLEN F1STGUIDEDVI RREAD_ME TXT!. F.. F1STINDEXC `1 1STINDEXTTP aEAD_ME TXT #include #include #include #include FILE *fp; char Path[128], *pback, *heap_base, *heap_ptr, *heap_top, *act_file; void add_link( char *file ) { char *pfile, *bufp, buf[128]; strcpy( buf, pback ); strupr( pfile = file ); for (;;) { if ((bufp = strrchr( buf, '\\' )) == 0) return; if (strncmp( pfile, "..\\", 3 )) break; *bufp = 0; pfile += 3; } strcpy( bufp + 1, pfile ); pfile = heap_base; while (pfile < heap_ptr) { while (*pfile++); if (strcmp( buf + 1, pfile ) == 0) return; while (*pfile++); } strcpy( file, buf + 1 ); printf( "\t%s%s\n", heap_ptr, file ); while (*file++); heap_ptr = file; } void fill_heap( void ) { int i, flag; char *key, *file; flag = 0; for (;;) switch (i = fgetc( fp )) { case EOF: do { for (;;) { if (act_file == heap_ptr) { fprintf( stderr, " Operation erfolgreich" " abgeschlossen.\n\n" ); return; } while (*act_file++); file = act_file; while (*act_file++); if ((key = strrchr( file, '.' )) == 0) break; if (strcmp( key, ".IMG" ) == 0) continue; if (strcmp( key, ".IFF" ) == 0) continue; if (strcmp( key, ".GEM" ) == 0) continue; if (strcmp( key, ".RSC" ) == 0) continue; if (strcmp( key, ".SAM" ) == 0) continue; if (strcmp( key, ".SND" ) == 0) continue; break; } strcpy( pback + 1, file ); } while (freopen( Path, "rb", fp ) == 0); case 0: case 10: flag = 0; break; case (unsigned char)'': switch (flag) { case 0: flag = 1; key = heap_ptr; break; case 1: flag = 2; *key++ = 0; file = key; break; case 2: flag = 0; *key = 0; add_link( file ); if (heap_ptr >= heap_top) { fprintf( stderr, " Der Speicherplatz hat nicht gereicht," " Operation abgebrochen!\n\n" ); return; } } break; default: if (flag) *key++ = i; } } int main( int argc, char **argv ) { size_t memleft; if (--argc <= 0) { fprintf( stderr, "\n Aufruf: 1stindex [Pfadname] [>output]\n\n" ); return 0; } strcpy( Path, argv[1] ); if ((pback = strrchr( Path, '\\' )) == 0) { fprintf( stderr, "\n Bitte kompletten Pfadnamen angeben.\n\n" ); return 0; } if ((memleft = coreleft()) <= 32128) { fprintf( stderr, "\n Nicht gengend Speicherplatz verfgbar!\n\n" ); return 0; } heap_base = heap_ptr = act_file = malloc( memleft -= 32000 ); heap_top = heap_base + memleft - 128; if ((fp = fopen( Path, "rb" )) != 0) { fprintf( stderr, "\n Erstelle Index von %s ...\n", Path ); fill_heap(); fclose( fp ); } else fprintf( stderr, "\n Fehler beim ffnen!\n\n" ); free( heap_base ); return 0; }`F8``>>>> PURE-C <<<< for ATARI-ST Version 1.0 (C)88-90 Borland International &H f&op`B@#~3 k  Ј<.@#BG<"@(I$k,"Jf"JfBJygP// ?<?<JNAO A6<<~kRrRAfAHBDCBB`l >fBSIKSAk\ >fB`H =NAJk:?|?EB>BNA0`Bo>FNAg$?|/N>=NAJk?@?|>FNA N<0 J"LNM.KPI8BC llN8R@gS@gڐ| gԐ|g` TfC NNJ` TRf$T TRfp. JN$&H gVC6N2J@gC; KN$J@gC@ KNJ@gCE KNJ@gCJ KNJ@gCO KNJ@gv"J lRHN*/,lCTApN4XO gR`0J@g S@gS@g`v&l`vB$K`BCB JNF leCW NNb` JCg`L|NuH<(HEPG.S@nC KN.`K"l MNp\ MN +HfC KN`zN&}b C KN`^} NR+H+H+HC8+ICT MN.+HgHUC KNXON mN` C2 KN mNB@L<NuA(p"@ "ByA1B33O"Nu/ Hz?<&NN\O$_Nu/YOM,C HzafXOXO,_NuH@B@H@CrabJ@kNu.Vp`/QOM-O, ICHza&XOPO,_NuH@B@H@"Vra&J@kNu.np`H8]O$H&I(o&BCx%p JR@g2fJ@g@HNBEg>BA< <b;k`|<*f<`&<0< b ACp a $Wb<gt<.f6<*f4`$<0< b ACp a $Wb4g<߲<Lf g`<hggr@dp|?@0;N`````N`N``````````````````````````NNN````````````````` [0`|A`0A2"LaN@`\ [2"LaL@`JJEj `p0?4 La"TO@`*JEj `0H?4 LaTO@` JEj `p0?4 LaTO@`JEj `p0?4 LaTO@`@HN0\OLxNup24C8jxA a A pJWF@?@gA 2SAktaSb (Q2/@4/(jt@jtBgf 0Ao@@Alx?B?D`jH0$H&IB(v`H0$H&IvJWFCJBj4Cb6xJAkCc8Cf K0a0 JN`0 JN0 Kax0DL Nu6x0/gf@ JaV0/g@AN0/g@ Ja00/g@A N0/gg@ Ja0OLNuH0E6`H0E4&H6g8Kg SC JpNQ J0|gNL Nu00000000 H:$H&I(S&gfJg^+g`)ft,k x$ڹd SfRe`.&// Ka\$"J@k,f4(SSfRf& L\Nu3 Fp`"`&x,A'J'JE8'J & KaJ@kfRf"`"PdB@ Nu(g*gg/a _J@f/a4 _J@kf"P`3 FpNup/aXONuH&H(o Ia6kl g La` a,Jf\(H <a )HgN0@0;` Ka|gB9@{0dQ l)H()H C#L LLNup`p`p 3F g la *`a)b*a)b* YOCBgg Ar`THWf0XONup`rwar+w+a+rbwbabr+b rb+ w+b wb+ a+b ab+ Ar Cg8pCW|?/ ?<NAXONuar3Fp`ް|c/ ??<>NAXO$_JkpNuaH3FpNu/ /?<ANA\OJkp$_Nua$3Fp$_Nu/ J@f//aJ@fBg`//??<?NAO $_JkNu  _`a3FpNuH&Hx&SgkJ9pkvf~a<g&< g<<gP< g< e޸dRa`JgSSKpap apa`Rp app a`jJgfp`\xB9p`Rx B9p`DJ9pkLfTa`x< g<g0< g< eaJ`p aBpp a4 L$_NuBx`xB9p`x B9p`?<NATONu??<NAXONuH@??<@NAO $_JkfNua3FpNu3FNu/ |b2@?? /?<BNAO JjfSBg jX?<? p/?<BNAO Jk$`X?<? p/?<BNAO JkzЁ"kt?<? p/?<BNAO Jk\$`?<? p/?<BNAO Jk@$Ҁk: $k2HzN <e/`/? ?<@NAO Jkb $_Nua3Fp$_Nu0<`H 6?<?B?<BNAO (Bg?/<?<BNAO *Bg?/?<BNAO JWHL8NuHR Cr$Q`"J$R" gf"Aa Ja$_NuD@| |"b;NupNu   g fC`Jg INuSHNugFf8g>f0g6f(g.f g&fgfgfggepNupNuJfpNu g<g8g4g0g,g(g$g ggggg ggf @NuSeg gb pNuJfpNupNuH0$H|g|$bGrtgJ3kSJgtJ@f"p <0f:pgb<߶<Xf(pf"`N|f<0fg><߶<Xfg.Gb3d"3d&HCHCJCfԃԁd` & gSJ"L Nu3"Fp` 3!Fp& g"`"CB@f ANu//"4UB|"bZC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!F`0123456789abcdefghijklmnopqrstuvwxyzH &/?<HNA\OJf 9 g @ NJ@fp @LNuH0&gPR<e a g!CCv "A`tGz&S f0 < a gj&@Ap !| 'H&z#zA"P` )d I"Q f`rd ` #@#C"nAL Nuk |`3 F`/ oLQ d nf@axJg*`6Cv g,g"@ f` "/?<INA\OJj`p$_Nugp`/ &yv g/ &S?<INA\O`&yz g/ &S?<INA\O`&_NuH8$< CGz g" c &@ f`(@ ,gb*"Ҩeg ` )H`p"@")Ө )H`>"@ gb" ҩeg`N"(ө`" "H" ҩf @"(ө" l eb&/ ?<INA\OJfQLNuP`  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@  !"#  !"#/ /output] Bitte kompletten Pfadnamen angeben. Nicht gengend Speicherplatz verfgbar! Erstelle Index von %s ... Fehler beim ffnen! r&(ƒ  (N B@ v*$Db 8> b @F0R,<*L. F.. F1STVIEW ACC L+1STVIEW TXT [>EAD_ME TXT `h8`h>>>> PURE-C <<<< for ATARI-ST Version 1.0 (C)88-90 Borland International xArgARGV&H f&op`B@#3 k # Ј<.@#Jy g<"@(I$k,"Jf"JfB// ?<?<JNAO ApNe g0pNi Jg"f @ Jf ( $f6$P`A7Ne g$ +f["LfBB$IBC`RCJf`zA<~kRrRAfA6<HCBB`6 !jBJ)gHiRC` "fSI "WSAkHiRCBSQJ)gHiRCHyi$ONe0 J"LNP ? 9jg @N 9ng @NNi?<LNA/ $H2H ЁЁЁЀЁЀ2*H$ԁԁԁԂԁԂЂ2*H$犔ԁЂм= "<zan$_NuYOBAr09jatCABBBA09jasr0XONu/ / &H$Ir09jarfGAr09jatP&09z7@7@ rkA7AHSCA09jraoXO&_$_Nuty|f@fpNuy.oNuA0BA00Nuty|g|f0Nuy.oNuA0BA00NuH86<E.Apr t r 0C0BDj|j|0j| j|j|j|0j| jVD0@5SCj6<A8200H@2A1|D1@UCj6<Az Pl v(kSCxCnPl6G6I Sn40H`209jaoa8Sc8A0C@SCjLNuH4]O$HpjgZG2fR2*yzl*`9{vkBDKj`"ABB20am K20ap@666RDDn j\OL,NuH0YO:<6$HH…SB6BD?20a22A@HҁGJEg Kr0ax`P2H ሐ"<ak2H ሐ"<ak@2H ሐ"<ak@Ar0awRDDlXOL xNuH4QO$HGB[0*yzl*`9{vkBD0@DHЀABB209jalRDDnޑpaspA,aw8jB@asx0D@|ar`p*h6C@tjgpjgV/| t2pЯaw&Ar0aw2rn CMAPf K/o o4/ `42B@ _ap`XBB2pavAr0av K42paJ`2t2pav*av*H f0avB@arp ar`BB2pav M"0av*BB2pavxpjg| .l Mav0avB@arXpaq`p еx܀ BMHDxfrCHӭ M0"au0H*Ar0au Mr0au K42B@ar`@<-FHp C;@ Mr0auAr0auAr0au K42pa0Ah"0au MauXj0auȑB@aqPOL,NuH0&H$I 0+HЀ2+Hah2+ Hah& au&f k n&&` "R Saa"J K09jakR SgatL NuH>O&H(IBO?@r0/gT CMAP>f.B]BEA r0/2HҁCApa`"0HЀCtC2ABAAaSCj`$Ar09ja^4Apr09ja`"Apr09ja^`pEfB40`rC0@A@Aa0SCj`VpEfP2HB`@0HEtC2ABAG0HH}0HH}0HH}SCj o41EBh!NBh0/*kRh o41o1o /!@!@2(A1A0(@1@ r1A1A !|d !|8$!|:!|(?o<AaB~"B@ NaSBo.?|,*o0&Mr0/vgAaL6J@g|gR`hAaL6g*$K:/t`AaLSEj` :/t`SEjSCn`AaL|fzAaL?@,`lAaL6`AaL|SCj`RJCj&M`JBEJjSEUCf`80/tf AaLN`(AaLD<JkAaL8Sj`AaL*:Rob&porb2/.o,&o0:0/*V@|b@0;N 6f(|B@v$KgCCĹb,fRKSEf`v|B@v$KgCCĹbEfRKSEf`F|B@v$KgCCĹb<fRKSEf`vSCg`*N6/0]UEf:Źb0/:om`v&N0Ƕo:lS`6RComUEf`po.HK|B@v$KgCCĹb4nfQMRNRKSEf`po.HK|B@v$KgCCĹbEB@lX@lT@lR@$NHf6/SCf`|pgjjjfQMRNRKSEfRo.0/.o8fAa@f o0ab* o4`0/.o,m `OFL|Nu?O6Ar abR FORMf ILBM$fAr0ab4ro0abJpa]v`J BMHDgt2pЯaa`Ar0aaBg/H??/ 4//H0a0\OO(6Nu?O6Araa?/?/?/4/2/ 0a\OO6NuHO(H?y~ ?yGR kg*B@ Laa6jD@|a\`:Ar0aaL0aahB@ LaABBC kfzv +g2roHC ?A to H…C?B`@0/ H2/HaTT29HaT?@ 0/H2/ HaT429HaTr?@Bo0+ g29~o ?A k fBo 0+"g29o?A k"f poo po o?+"?+ ?+C4+2 L09aX"\O09aY09aXfB@a@"OLNuU@g$ (Ȱf "(̲g!h!h`0 (2(Hf$(0(HgX0(H!@2(H!Aph@1@rhA1A 0(g"C!h1Q21iShfanNuH08Eh6*CGP`Cfd2AA000H"+aR"+aR2AA01fRp2AA200H"aR|"+aR2AA21fRp`0+2AA0p00H"+aR>"+aR2AA014+p0+C2q01H"aR "+aRL2AA214+f 2k10+2AA2pUCjL NuH0Eh6*GXp\ SaH(RDj`0@A2DAC3SC|l` S0@H2AC3SDjL NuH0vEhG<0| gn"[@|b@0;ND|rgn|gW@g|XgN`f|gʐ|Gg`R0* | b@0;NTCTCXC`~0* yf0*H"+aP"+aP5@`aD84 5|BjBj00*H"+aPh"+aP5@2fRj2`BC j f j:gar0aV`0*g0+j0o5@0rk Aj4l5@40+j2o5@2rkAj6l5@60a0j0o5@00+j2o5@20+j4l5@40+j6l5@6`Rj%S0%k4aCHL NuH8&H$I09j IaR Jr0+aSfA<0+2+IA1@4+0+H@1B1k1k1k!k!k !k!k!k !jC,!IEv2IHց2AHցIh08R@gY@g`E JC'H`H9Z9Z9Z 9k 6,KHo "JA0aG6,CHo "JAaGa$`LNu/ $HaP`J@g BA0*aR@0*aSH$_Nu?/ $H64|g| g|Sg|gH`np Ja``p Ja`V *gP|A%j5P05hSjg&JCf` *gA01j%jRjap aQ`aKJ@gBA0aMh4/2/0aBjBBA05P5h5h %h%h (%@%@"( %A%A5Tp5@5@ rj5Apj5@@5@ 2*A5A%|!d %|"z$%|"%|#6( JOL<8NuH86 yXp a@$HBRy8098 yXa5GhI`Ar0aUAr0aUvA r0aUjp Ka6<7T 8+LHoA0"0aUH A0a68+DHoA"0aU( Aa5 SfaB@a5 B@`Ha Kr0aTUf Sf^0aN0aMAp"J Ka\ +K.v`(- 0-||| b@0;N&&P&&pAH+H `AH+H C (C!I (C!I`nIH+L A(2,0,Ha>`NIH+L A( ,C)I ,A)H2,0, Ta2,0, la`;|0 WaL KR(m XOL<NuH8$HpaLpA,aP6jB@aLv0D@|aK`G(jt2paPN(BB2A aP& _hg R1C?r R0aGTO$_&Nu// Ed R/2(H 눐Ё2(Ha>& _hg R1C?r R0aGrTO$_&NuH Ed R6(HÇ80( o@aB2H 눐Ё2Ha>>?r0*"aG"TO R6(HÇ 80(o@aP2H 눐Ё2Ha=?r0*"aFTOLNu/ / EtBAB@ j"j"i(N j#vHjHj ?(?(?(C A&j4+2<B@aFO&_$_Nu/ Ed RHhHh?*2?*0?*."HCA4*,2<paFtO$_Nu/ Ed RHhHhHhHhr0aEO$_Nu?/ 6E| f j *`fB@`>HjHjHjHR20*aERO%j`0*g0*rRjrjj$_6Nu/ / p aJ@gȑ0<aDEpjj pj j0*jo5@0*j o5@ 0*j l5@ 0*jl5@0*Ro40* jo5@0* jl5@0*jl5@0*Rm2*jm"J j&j&k Np aJ@f0<aD&_$_NuAd"P!i,"P!i0a NuAd"PB"P0)H i"P0)Hi aaNu/ aE?*?* ?* ?*r0*aDTPOa$_NuH0:Ed R&(((JEg"0(H h R0(Hh a R0(H 1@ Rh R0( 1@ R2(hl 1Aj RBh R0(H1@ Rh R0(1@ R2( hl 1Aj RBh RfgaO/H(8vIREdGXJDfa5@"jApa?`Pz j|JCg*o(g@p\ o(a.*H g"o( ):f RMA@a.`p\A@a.t*HRM"o( Ma.fLa"8CAa.JDgC `CAa-JEfC`CAa-AaJ@gpa?JCgB|p\A@a-*HRMp' Ka">J@g&a"tg"KA@p'a!`<g D@|a>JFfDC Ma.,.+ Ka" 6ga"6JFf Ka!V6,R2 A@az$ f$$JCgxB@a>JDf0*"a?a!`~B@a>C@ RA,a-JEf RA,a." RB R0"a"R#H g"R#n-R R!n` R!R R!l$JDg$ R!n R!n$adaB@a` g2*8 Rh2*: Rh R8*8Lho1D R8*:Lho1D R8,,l0"Rihll,l 8,,1l0 R1D Rh R8,.l2"Rihll.l 8,.1l2 R1D R0(H 1@ Rh R0( 1@ R2(H1A Rh R0(1@aBDJCgO,L|NuH0BCEd g` @2fZBDRD hfG R"h/ a ga`,a5@" R0j Kpa6+kk42Hn 'S'k kk apk 7@"K R(R(l Np a8J@f|0<a;LNuH86EdG R0( hhj Rhj RBh@o0<a;6+kk42Hn 'S'k kka&pk7@"K R(R(l Np a@J@f|0<a:LNuH86EdG Rhj RhBhJCg0<a:PaJp aJ@g0H R2( Ha1(0+So60+ko7@0+kl7@0+kl7@6+Sk>0+km42Hn 'S'k kka:pk7@"K R(R(l Np aTJ@f|0<a9LNuH86EdG R0(hhj Rhj RBh@o0<a9XaRp aJ@g0H R2( Ha0(0+So60+ko7@0+kl7@0+kl7@6+Sk:0+km02Hn'S'k Sk aDpk 6"K R(R(l Np a`J@f0<a8LNu?6 ydhj0D@a&JCo0a6Nu?6 ydhj0D@aJCo0a6Nu/ EHjHjHjHRr0*a8jOHjHj Hj Hjr0*a8LO0jQ@lp2*j ff4* j jܴh lT2jlFHjHj Hj Hj0*ra7O?*?*?*??*4* 2* 0*a7|O `&?*?* ?* ?*?*4*2*0a7.O $_NuH.O|*HEC3Aa&LIRA8a&C8Aa&MAa5J6k0"MAa&-|Aa&P=@=| Bn<d`CCR Ma%p-|$(HG$Lg6p\ La$$H g ,:f RJ"L Ka%`p\ Ka$$HRJ"L Ja$IfaHAaJ@grp\ Ka$Z$HRJKMp' MaJ@f C Ja$`gB Na$/ Ka$Пe Apa4`C/ "K Na#"_a# Ma`J@gavL|NuH8OEgvG0ffpfIr2A9S@n8b9|9|HW"K La2@XOpW5@ro5A5o5o4nApa46BSB`7|3O@LNuYOHy|HoCAa4POpoXONu/ / $Ha.J@fAOpa3`L g&g"p Ja"&H gB Ja4$K g$f`aJ@g 09|a` Aa a&_$_NuH YOaJ@gpa4$EB@ jA,a86j8`(p. jA,a""H Ja"B@ Ja8l8j0a8B@a30D@|a30`|t2pa7*BB2pa7 a7r$H fpa7f*pl a7X$H`zE J"0a7,o J"0a7JgA׵g Ja70a70a7B@a3NXOLxNu/ EdHj"r B@a3dXOajJ@g@0*4|Hgn`|gn2|ghn|gf|g`֐|g*|gj`| g&|gH|%g֐|7g`|M6gn|H8gL|gr|4g|gn`v|Pg$|2g>|g|0g`Vpa`pa`v R0(HS@a`` R0(HS@a`Jpa`@pa`6 R0(H S@a` R0(H S@a^` B@aH` R0( a:`B@aV` R0(aH`B@Aa@`pAa0`a` R5P"a f`a,pa` RA,/p j| fr`BA09\AgC`C _N`\0*a`Rp@yf R"hg r 0a1`42*0*4 R"R"iNJ@g j.4fa`4*42*0`Va`Na`Fr 0*a.j`8ap Sh|1@a`a8(rkAA:(Hŋ 0H2Ha#J R2(EHa#:kl:+E R0(k2AAW@:pa+pa,KMHSHo"M Na+PO WJCg*UjBUUl:0H R2( Ha"2Ha#a`(VjBVVl<0H R2(Ha"2Ha"aHSHSHSHSHUBgBgBgBgBgBgBgp??????/,"N42pa$O.|gjpa,B@a*0gHSHS"K KBBrpa(PO\OLl8Nu?/ ]OEHWHjHjHo HoBgpd?BgBgBgBgBgBgBgBgBgBgr?C2 J409aO.6pa+pCga>pCg@HRHRHRHRHRBgBgBgBgBgBgBgBgBgBgBgBgBg"J JBBBAp!aNO.|fapCgj2/0/a*5@oXa(J@gP j0(h2/@mpaX`4 j0(h2/@mB@a<`BB2/0/ j"j"i(Np Cg&0*a*f09a%ByyB@a*\O$_6NuH`.C JazJ@gC JalJ@f "0aDl`"0a8"L 8NuHO8vNE0f SR0 JaX0@CHr SCjGRp D| fr`BA0+Ag(5|5|BjBjPBj5|h5|x`$BjBj5|5|P5|BjhBjx; jD/pa%d  _aa j\aA"j"C8anr jl P0+ahr j P0+aXp5kap9k ap>k apBkap kapkapkapka~p"katp%kajp*k a`p/k"aVKHmHmHmHUrB@a OMHnHnHn"N JaO ?.?.?.?BgBgBBBAB@aO BC(J|f <h"LI La?-?-?-4r0 La\O0 La46|f"L J <ha0a0|Hgfn]@g|@gS@gL`|IgNS@g`v|,p?D8 j j j jP j jh j`FB@a`CA8a jl Pa F7@ j Pa 87@p5a7@p9a7@ p>a 7@ pBa7@p a7@pa7@pa7@pa7@p"a7@p%a7@p*a7@ p/a7@"|Hfpa`?.?.?.?BgBgBBBApaO O L|NuH $Ht2*pa"&t2*pa"(BB2* a" a"|$f pa"r(pl a"d$`xA $%Rْ%RLNu// $Hpa"<&pl a".$`vA $%R R%H$_&Nu// $H& "jc P"0*a!o%R$_&Nu/ $H"jA g Ia!0*a",$_NuH8(H&I6a" $H Ka!0 La"66 Ja!0LNuH0&Ha!$H Ka!a"6 Ja!0L Nu/ / E0*f\"f@a!.&@ x g*`$ FSELf$"R SLCTf id B`PH f Ka g @1| 5|pa`&_$_Nu29g?/"y i$N\ONupNu09g/"y i(NXONupNu09gBy y h,NpaNu?/ $H60 Ja0SCj$_6Nu`SjNu/ / EG@ gr$Brh5A 4A5Brh5A4(A5B'hrkA7A7yz Bk HkHkHkHSrB@afOBkBB`pC Jabp"KAaVHSC Jr09jahXO&_$_NuH0QO&H60<a gEr A0aJCgA`A%HT Ka &|jBCA0%H<0f SRp JaHoHoHo C JaO AaHoHoHo Ho rB@aO?/?/?/4/rB@ Ja\O`a0<a POL Nu`PUjNuH $H(6`JCgp Ja05R4SjLNu4H… HB<0SAg4H… 0f`< SAnNu?6aJ@g4JCg09"f BA09jaRy"`Sy"f BA09ja6Nu?6J@gBA09aV`09$g BA09a3$6Nu/ OE JabJ@g6g2AfSH (\g\SCRAPBp`A-pa8B@O$_Nu?/ $H6J@gPrH$ԂԀr( f>r?t2H ЀЁ02 B??9t?9r?9p0BA49naBO $_6NuH0yno>pj?@8@SDyvoW04H"ҁ҂牐r42BB?@0ypo?Hpj?@8/@SDyxoopW5@ro5A0<aAa x2H ЀЁr JDf r ?9t?9r?9p49nrB@ JN\OJDf2H ЀЁ r  KG HUHS"LAaTPO Spa`?4/rB@ JaTO8jBD0 Ja<0<a HTC0 JaXOHUHUHUHUHTBgBgBgBgBgBgBg2H ЀЁ?2?2??/6JDgt`BB??C _"XЉ bpNu"Xd! NuY/?a0 _"X`/ /??<NAP$_NuA(p"@ "ByA1B33O"Nu/ Hz?<&NN\O$_Nu/ "y ),g2"@g,g(f$HgggJf`g<=f I$_Nu`??B@CgJ1kB@BA< C (<-Wg<+fg"1bAg1b @8@@D`JgD@86Nu//O4UB|"bBJ@j < fD@-CtH@B@H@&HC;0(RBH@B@H@fQBO _&Nu3!h`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ//"4UB|"bjJj < f-DC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!h`0123456789abcdefghijklmnopqrstuvwxyz JgJgJgJgJg JgJgJfSHggggg ggf @NugfSHNuJgNug fC`Jg INuSHNugFf8g>f0g6f(g.f g&fgfgfggepNupNuJfpNu g<g8g4g0g,g(g$g ggggg ggf @Nu"HJgJgJgJgJg JgJgJf SNu"CB@f ANu"SefBJgSf ANuH0$H|g|$bGrtgJ3kSJgtJ@f"p <0f:pgb<߶<Xf(pf"`N|f<0fg><߶<Xfg.GN3d"3d&HCHCJCfԃԁd` & gSJ"L Nu3"hp` 3!hp& g"`"CB@f ANu/ &y g/ &S?<INA\O`&y g/ &S?<INA\O`&_NuJg/bg2 4gf!Sf`f`!Sg"gH?LxH?LxH?LxH?Lx`H?Lx8H?LxH?LxH?LxH?LxH?LxpH?LxHH?Lx H?LH?SfvLx2|HgS@!!Q|gSA!Q`2 4gfSf`f`S"gH?LxHxLxHx(LxHxPLxHxxLxHxLxHxLxHxLxHxLxHx@LxHxhLxHxLxHxLHSfxLx2|HgS@ Q|gSAQ _Nu/$gSe40HB4 gxH_>"&(*,."B$B&B(B*B,BH~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H`SfL||0HgS@!Q|gSAQ _Nu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@  !"#  !"#J@kNuD@NuJkNuDNu oHH@ Nu$jD BJjD$HBJBf"$HBJBf $jDNuHBЂ$jDNuHBЂ$jDNu$jD"BJjD$HBJBf4$HBJBfH@B@H@$ jDNuB@H@HB0@0H@0H@$ jDNu AH@r2B@tЀӁd҈рӁQF@$ jDNu"@$jDJjD$HBJBf.$HBJBfB@H@$ jDNuB@H@HB0B@H@$ jDNu A"B@H@HABAtҁрdЈӁрQ$ jDNu/ /AhBhBh2<a"_2"_2Ah"o222"2&2*"o2"o 22 2$Nu/AhBh1|1A1B2<a"_222Nu/AhBh1|1A2<fa"_2r+2QAՀr 2QNu/ pNBT@$_Nu/Ah1|1|!I!o1A"_A000000000Ahrm`"/Ah1|1|!I!o1A"o 1Y1Q"_A000000000Ahry`Cؘ2222Ah1|Bhrr`/AhBhBh!_!Irn`AhBh1|1Ar`vAh1ABh1|r`\AhBh1|1Ar`B/ /AhBh1|1A1Br'a A&"_2"_2NuAhBh1|1Arj`AhBh1|1Ar`AhBh1|1Arw`/ /AhBh1|Bh01ArkaAՀ"_2"_2"o2"o2NuAhBh1|1Arx`jCh3|3|3AC0""Ah2<`>ChBi3|C2222Ahr`"HAhABABBg0RB`AhBh1B1| r`/ "HAhA0000 0 rtg0RB`Ah1|1B1| "_1Y01Y21Y41Q6r`AhBhBhr`tAhBhBhre``AhBhBhr`L/ /Ah1|Bh1A01B2ria*"_2"_2Nu3t/ Ch2dBi3| Cp 2Q"<vps/ NB$_ _0tA&"op,2QAՀp 2QNuh&ؘ&Հ/ Ch2Bi3| Cp 2Q"<wps/ NB$_ _0tA&"op,2QAՀp 2QNuh&ؘ&ՀCh3ABi# Ira"#ؘNuAhBhBhr`/ 1@ 0"<psNBA&0$_Nup `#րA&00p `pp`j#րp `^/ /A&000paH"_2"_2"o2"o2NuA&00p`"#րA&000000p*`#րA&0000p+`/ #ր3&p,a"_2"o2Nu#րA&0000000 0 p/`#ր3&p2`#րA&0000000 0 0p3`T/ #րp6aF"_2"o2"o2"o 2Nu#ր3&p4`3&p5`#ր3&pr`3&#րp#`/ /pMa"_2"_2"o2"o2NuA&0000000 0 pI`A&0000000 0 pJ`#ր3&pN`n/ /pOad"_2"_2"o2"o2Nu/ ?A&00pha:2CSA|;$Y4Q$_NuA&00000pd`A&00000pe`3&pg`A&000000 pi`3&3(pj`/ /A&0000 00plax"_2"_2"o 2"o2Nu3&pf`V3&pk`J#րpP`>#ր#քpZa,"o2Nu#ր#ք#ֈp[a "o2Nu/ 3h@@A"CjB@22220<"<{8NBA&0$_Nuhӆ&&ր؀ HRHP?< NA\O$_NuHRHP?<INA\O$_NuHR/?<HNA\O @$_NuH>@NAO $_NuHRHP?<NA\O$_NuHR??/?<BNAO $_NuH>?NAO $_NuHR?</NATO @$_NuHR??<>NAXO$_NuHR?<NATO$_NuHR?<ONATO$_NuHR?HP?<NNAPO$_NuHR?HP?<=NAPO$_NuHR?HP?<$H&I *g 2*0*aIj K0aT6+0* j 8*j@SDkl 7DDn Kr0a K2*0jaz8*jSjk*j0*fFpJDj %gfz %gzRM-j`RDkJDo6RMgfzRMj`SDn`JDj%fRDkJDo RMfSDn0*°yg230a<,M%N0* :*@8ByٜRNHJ@g| gL|gz`09g M20a`A420ajkn 8Byٜ`: KBA0al`bB M20a 89ٜj0HH@@3ٜE*N`rB M20ax@H|y290ad`L|8NuH>QO$H&I *g 2*0*a6+8+0*jpM jS@@o60* j0*j2* AS@@o8kmkm 0* jl" K09ja7C7DSmkm09gBA309ja:*jUEA2* 0+ja2vooA2* 0jaooA2*0+ja8oA2*0+jaWog Kr09jaM0*WHIh0+o9@22* jl4*0*B9@0vL`0o9@02*oHҁӹ^KX;< p$*`;< SoBA6;Sj;< p` r ;;;SoBA6;< tA|0|9o^B;A|0|9o^A;Sj;< ;< ;<: AȐt@|0|9o^B;耻&bM89|9C9yj ap0*l2SDj8#^JEg KBA09jaPOL|8NuB@abNu/ $H2|.gxn|gD|g2| gF`|1g |g`~r p Ja`lr p Ja``rp Ja`TBBBA0%k4A٘5h5P 5h5k*pM5@%| %|d$%|l%|$( JL NuH06EGٞ Rf$69dAh09a0*g(| f| g2DA h iYC3dBjJCg@pjg8XC3d5||f|4g0D@h5i` R۝dRL Nu?/ 6ERpRgpa:pCgp0`p1a*pRgpapCgpE`pFapRgpapCgp2`p3apRgpapCgp4`p5apRgpapCgp6`p7ap Rgpap Cgp8`p9a4$_6Nu?UO6`B@| |b@0;N,>Jvvv~p a@B@a:B@`Ar0an`VAr0ab fpapa `8B@|?a`*p a`"Ar0a.Jo  f` -B@aAr0a Jn8p yfaB@apTO6Nurhp Aٞaf09hgpapCyhaB@a(ANu/ aF$@ x g$C` _SNDfpg Bi`PH f Ja$_NuH0&H6a$@0+gk|l6<|o6<1É `0+C6nv|o6< Ja7CL Nu|f2 (2(Hf$(0(Hg`0(H!@2(H!A`. ("h̓Ȱf g0"h̓!I!|pШ1@rҨ1A aNu/ / &HEh4 ؘra,@5@Bj5yj a|A0&_$_NuH>*H$I09j Ia: Jr09jaIؘ,m&N&-̖8-0-H@f|2-H4H҂0-H&N2*RRKc&mzRSNd8RNRE`28REpHAH"-a$D8٘f La(H XLb`:-0-H@pREH"a"-a(pjEH"a"-ad,mȷcL&m`F "-aܞ"aE8pHAH"-a܂D8٘f Lap(H XLb La^ JBA09jaBL|8Nu/ $H4*r *"j ja͚$_Nu/ $H5yt4*r *"j jat5@$_Nu/ $H2|1gXn|g$|g^| g"`t|2 g"|@gP|gT`^p Ja>`Pp Ja4`F09f> Ja`3t` JaPByt Jab` Ja<`p Ja`p JaB@`p$_NuH8$H<:JBf&*xGvI r a<0Sg r at&f`< Sn0*f < `2*HaP&`20*|g S@gS@g`&<r`&<0`&<a`&<Òr A a *2*Hf$*6*Hôfx`x D * j̑Ȱf fr`r A/0*gt `tBB0*gr`r AMC:4pAX2aV| bn@0;Ndd d*4d>J^p Ja`Dp Ja0`:p Ja&`0p Jaz`& JaBk` Ja7| Ja` JaLxNuH<8& мa$H f0afp aᒑ`%yVGI8%L K"0a0a6K0fSUp Ma"aF f2+0HA@t4%BG2(K`B f%|2G"(K`* JONfBA+t4%BXK`$e%K5| 5|5|5|%|5| j̑%Hp"Ё5@%|4 %|$%|%|( Jan JL<NuXXXXX *XXXXX Pixel---- XX Ebenen ---- Sichern (XIMG) ^X Original-Pal. ^E Standard-Pal. ^S=3?1)&*% 784;" , .>0<2+$ ('5:69! /# -MMM  vr     -- ^++ ^ Transparent ^K--- Farbpalette ---CMAPXIMG Fenster ^E Original ^S \   - Mastab / Seite -1 ^ -+ ^---- XX Bume ---- Ix86 -> M68k ^K M68k -> Ix86 ^K `  << ^>> ^-- Konvertieren --[1][Keine weiteren Fenster|vorhanden! Abhilfe durch|Schlieen eines Fensters.][ OK ][1][1STVIEW-Warnung:|Die Gerteausgabe funktioniert|nur, wenn Sie ein GDOS im|AUTO-Ordner installiert haben.][ Aha ]*.*U:\PIPE\DRAGDROP.AA1STVIEW 1stView: Datei(en) berneudumpenladen [1][Um Dateien auf ein Gert|ausgeben zu knnen, mu ein|Spooler-Accessory namens| installiert werden.][CHMELEON.AC*Install.|Abbrechen] Aha ]1stView: Datei(en) spoolen[1][1STVIEW-Warnung:|Der Spooler-Puffer ist voll.][ Aha ][1][1STVIEW-Warnung:|Fehler beim ffnen des|Ausgabegertes.|Ausgabe wird abgebrochen|und Spooler-Puffer geleert.][ Oh jeh ]\ 1st View)  "0I`it KRB> }>2'R>        #  #   #  '$  #    * !F $"## #!%%&# &$%(. )b-*,#+*,0 )6.~'/1#0=10 .BG3F> 746#:5H6Y3a(<8;#:9g:y ;" 7. @=?#:>?<(EAD#:BCD#@0F 2" H I  J  K $ LL1KMN AN L " L " [1][1STVIEW-Warnung:|Ausgabe von XXX-Dateien|wird noch nicht untersttzt.][ Na sowas ]21Gertenummer: __99 ABBRUCH D. AUSGABE MIT L.SHIFT-R.SHIFT 00Linker Rand: __ ZeichenSEITENVORSCHUB NACH DATEI:QUALITT:X-SKALIERUNG:Y-SKALIERUNG:HORIZONTALE AUSRICHTUNG:VERTIKALE AUSRICHTUNG:CALCLOCK ________ xxxxxxxx1STVIEW: Ausgabe-Konfiguration Digital Design, Apr 6 1993Allgemeine Parameter...TextJaNeinnormalDraftLetterMetaGrepassendOriginalImagePixel 1:1BruchGanzLinksMitteRechtsObenUntenStandard-AusgabeFensterGertControl-P-AusgabeInternExtern:Text-FonteinstellungNormalber VA_FILEImage-Ditherfarbenkeine2 (S/W)8Sound-Parameter...Gerte-Parameter...LadenSichernOKAbbruchMEM: XXXXXX KTOT: XXXXXX KIMGIFFRSCGEMSAMSND[2][1STVIEW:|Wollen Sie die Ausgabe|wirklich abbrechen und den|Spooler-Puffer leeren?][Abbruch|Weiter]1STVIEW.AC*APPPRGGTP1stView: Programm finden[1][|Voreinstellungen|sichern?][ OK |Abbruch][1][|Zuletzt gesicherte|Einstellungen laden?][ OK |Abbruch]nX(U&mW CALCLOCKSeite XXXAbbruch nicht mglich!&&  Drucke[1][|Kein Clipboard-Pfad gesetzt.][Abbruch]0 1A 1A  0 @ P Q S b c  0 1 P R S b p r  0 1 A Q S b c r t ! A Q S b p r t u 1 P R a p r t u 1Rbrupph&ؘ&Հhӆ&&ր؀h&ؘ&Հ XXXXXXXX-Font ^E---XXXXX Zeilen --- >> OUT-Datei ^X # --- System-Font --- Norm (10 Pt) ^N Mittel (9 Pt) ^M Klein (8 Pt) ^K-------------------Wl.DMP.OUT.TXTVA_FILE [1][|Nichts zu dumpen.][ OK ]--- Hertz --- Fenster ^E Original ^S Norm ^N DMA ^M   v       - ^+ ^----- P L A Y ----- STOP ^T z@0  t $  (L @"""  (<2DZ" $F  `*B,\ll ."tZ,>r$ <0DNN @>.|<0xj"ZpVX`&$DB @$0@ ,P&\ RN0<8>  " P22B.* ($ T V"4>&~n  @HV,4   2N L( Ll BJp f846, N &(:,(6B (.(   (& ,$  ,&&0> 4  ,l B *J " .$("l F&4  .d*4*$ ., (  $2rH$HP0000000000000H000Hx$f"1STVIEW.ACC 29.04.1992 Digital Design ===================================================================== Inhaltsbersicht ---------------- 1. Einfhrung 2. Bedienung 3. Dateiformate 3.1. Textdateien (ASCII, 1st WORD, .OUT) 3.2. Resourcedateien (.RSC) 3.3. Rasterbilddateien (.IMG, XIMG, .IFF) 3.4. Metadateien (.GEM) 3.5. Soundsampledateien (.SAM, .SND) 3.6. Dump-Modus 4. Kommunikation 4.1 1st View und GEMINI 4.2 1st View und CALCLOCK 4.3 1st View und das GEM-Clipboard 4.4 1st View und andere Applikationen 5. Gerteausgabe 6. Rebuild-Funktion 7. Konfiguration 8. Grenzen 9. Neu in Version 10. Referenz --------------------------------------------------------------------- 1. Einfhrung ------------------ Haben Sie sich schon immer ber die spartanische Anzeige-Funktion des Desktop gergert? Dann wird Ihnen dieses Accessory gerade recht kommen. Nach Einbindung in das System knnen Sie getrost auf die anachronistische Anzeige-Funktion des Desktop verzichten. Der Multi-Window-View mit perfekter GEM-Einbindung schafft den ntigen Durchblick fr Ihre Arbeit. Die untersttzten Dateiformate sind nicht willkrlich gewhlt, sondern es handelt sich hierbei um die systembergreifenden Standard-GEM-Formate. 1st View wurde portabel in Purbo C fr den Atari ST(E)/TT und fr IBM-Kompatible geschrieben und sollte in jeder Auflsung und mit jeder Grafikkarte arbeiten. 2. Bedienung ----------------- Wenn Sie eine Datei betrachten wollen, so whlen Sie einfach im Desk-Men den Punkt "1st View" an. Eine Datei-Auswahl-Box erwartet nun die Wahl der zu betrachtenden Datei. Diese wird dann in einem typischen GEM-Fenster dargestellt, welches Sie wie gewohnt mit Hilfe der Maus bearbeiten knnen. Das heit, Sie knnen es beliebig auf Ihrem Desktop (bzw. in der Applikation) positionieren, zoomen usw. und beliebig scrollen. Alternativ zur Maussteuerung steht eine Reihe von Tastenkombinationen zur Verfgung, welche Ihnen die Arbeit erleichtern knnen. Auerdem gibt es eine "Echtzeit-Scroll"- Funktion: Wenn Sie bei gedrckter rechter Maustaste in den Sliderbereich klicken, knnen Sie bis zum Loslassen bzw. erneuten Klick der linken Maustaste durch bloe Mausbewegung durch die Datei "browsen". Das Programm kann beliebig viele View-Fenster gleichzeitig verwalten, allerdings beschrnkt der Window-Manager des GEM in gegenwrtigen Versionen die Gesamtzahl der Fenster auf 7. Sie erhalten eine entsprechende Meldung, falls kein Fenster mehr geffnet werden kann. Es folgt eine bersicht der mglichen Tastaturkommandos: Control-O ffnen eines neuen View-Fensters. Entspricht Anwahl des Punktes "1st View" im Desk-Men. Control-D berladen des obersten View-Fensters mit neuer Datei. Control-U Schlieen des obersten View-Fensters. Entspricht Anklicken des Schliefeldes im View-Fenster mit der Maus. Control-F Zoomen des obersten View-Fensters. Entspricht Anklicken des Full-Knopfes im View-Fenster mit der Maus. Control-W "Cycle Windows", d. h. zyklisch nacheinander Aktivierung aller View-Fenster mglich. Control-Q Schliet alle View-Fenster. (Shift-) (Seitenweises) Cursortasten Scrollen. (Shift-) Zum (unteren) ClrHome oberen Rand. (Shift-) Zum (rechten) Insert linken Rand. Control-A ffnet den Konfigurations-Dialog und zeigt das aktuelle Versionsdatum von 1STVIEW. Dies kann auch durch Gedrckthalten der rechten Maustaste beim Aktivieren ber das Desk-Men erreicht werden. Control-C Kopiert die aktuelle Datei ins GEM-Clipboard. Control-P Gibt die aktuelle Datei auf ein Gert (Drucker) aus oder sendet einen entsprechenden Auftrag an den System-Spooler (CALCLOCK.ACC). Sonder-Funktionen bei Aktivierung: Shift-Alternate Alternative Dateiausgabe Fenster/Gert. Control-Alternate Datei im Dump-Modus laden. Rechts-Shift bei IMGs Farbpalette in Reihenfolge der VDI-Indizes laden/speichern Je nach Dateiformat werden zustzlich folgende Tasten ausgewertet: Text """" Control-N Einstellen Normalschrift (10 Punkt). Control-M Einstellen Mittelschrift (9 Punkt). Control-K Einstellen Kleinschrift (8 Punkt). Control-E Font ber VA-Protokoll einstellen. Control-X OUT- bzw. DMP-Datei schreiben. Resource """""""" Control-Cursor Vorhergehenden/Nachfolgenden -Links/Rechts Objektbaum darstellen. Control-K Konvertieren M68k <-> Ix86. Image """"" Control-S Einstellen Standard-Farbpalette. Control-E Einstellen Original-Farbpalette (nur XIMG bzw. CMAP). Control-K Wechsel zwischen geditherter und transparenter Darstellung. Control-X Sichern XIMG bzw. CMAP. Meta """" Control-S Einstellen Original-Mastab. Control-E Einpassen Mastab in Fenster. Control-Cursor Zur ersten/nchsten -Links/Rechts Seite. Soundsample """"""""""" Control-S Einstellen Original-Mastab. Control-E Einpassen in Fenster. Control-Cursor Nchstniedere/Nchsthhere -Links/Rechts Frequenz einstellen. Control-N Interruptsound aktivieren Control-M DMA-Sound aktivieren Control-T Sound stoppen Wenn Sie mit der Maus einmal auf das oberste View-Fenster klicken, erscheint ein Popup-Men, mit dem Sie je nach Dateiart verschiedene Parameter einstellen oder Konvertierungen vornehmen knnen. Die Bedienung kann wahlweise auf GEM-Art (einmal kurz drcken und loslassen, auswhlen und danach noch mal drcken) oder auf Macintosh-Art (Maustaste gedrckt halten, auswhlen und dann loslassen) erfolgen. brigens, wenn Sie den Popup-Men-Einfachklick bei gedrckter rechter Maustaste ausfhren, knnen Sie die entsprechende Aktion auch in einem View-Fenster auslsen, das nicht oben liegt (ohne da dieses, wie es sonst der Fall wre, nach oben kommt). Wuten Sie schon, da eine analoge Mglichkeit auch im normalen Desktop mit seinen Verzeichnisfenstern besteht (Markieren, ffnen, Kopieren usw.)? Dies ist in den gewhnlichen Handbchern nicht dokumentiert, kann aber manchmal recht ntzlich sein. 3. Dateiformate -------------------- Wie schon erwhnt, werden smtliche Standard-GEM-Formate sowie natrlich das ASCII-Textformat untersttzt und knnen jederzeit geladen werden. Die Erkennung eines Formates erfolgt anhand der Extension im Dateinamen: .RSC GEM-Resource-Dateien .IMG GEM-Image-Dateien (Rastergrafiken) .IFF Interchange File Format (ILBM - Interleaved Bitmaps) .GEM GEM-Metadateien (Objektgrafiken) .SAM,.SND 8-Bit-Soundsampledateien sonst ASCII-Textdateien, 1st Word Plus Dateien (.DOC) oder Ausgabe-Dateien mit Schriftattributen (.OUT) Wenn Sie etwa eine Textdatei in eine Datei mit der Extension .IMG umbenennen, knnten Sie sehen, wie sich Ihr Text als Rastergrafik prsentiert. Ich rate Ihnen jedoch von derlei Experimenten ab, da Sie sonst mglicherweise unliebsame berraschungen erleben knnten. 3.1. Textdateien (ASCII, 1st Word, .OUT) ------------------------------------------- Zunchst werden selbstverstndlich normale ASCII-Dateien geladen, die Sie mit einem beliebigen Texteditor erzeugt haben. Die anzuzeigende Textdatei darf Tabulator-Zeichen enthalten (ASCII-Code 09), die standardmig ausgewertet werden (d.h. mit der Weite 8). Sonstige Steuercodes (ASCII kleiner als 32, z. B. Zeilentrenner 13, 10), werden zum Teil gefiltert, Zeichencodes ber 127 werden entsprechend Zeichensatz angezeigt. Bei 1st Word Texten werden die wichtigsten Steuerzeichen gefiltert (Soft- und Wide-Spaces, Phantom-Bindestriche, variable Seitenumbrche) bzw. ausgewertet (Textattribute fett, unterstrichen, kursiv und hell). Funoten sowie eingebundene Grafiken werden (noch) nicht untersttzt. Das Popup-Men bietet Ihnen bei Textdateien die Wahl zwischen drei verschiedenen Schriftgren des Systemfonts, wodurch sich die bersicht unter Umstnden erheblich verbessern lt. Wurde die Datei ber ein Programm geladen, welches das VA-Protokoll und speziell VA_FILEFONT untersttzt (z.B. der GEMINI-Desktop), so kann ein beliebiger GDOS-Font verwendet werden. ber das Konfigurationsmen (siehe Kapitel 7) kann eingestellt werden, ob 1st View beim ffnen des Fensters automatisch einen solchen Font erfragen und einstellen soll oder nicht. Auerdem kann der aktuell eingestellte Font permanent gesichert werden, so da er dann auch ohne VA-Protokoll zur Verfgung steht. Die Funktion "OUT-Datei schreiben" ist eigentlich nur bei 1st Word Texten sinnvoll. Es werden dann nmlich die Text-Attribute von 1st Word in das von Digital Research standardisierte OUT-Format umgewandelt. Fr nhere Informationen zum OUT-Format verweise ich Sie auf das GEM-Profi-Buch von Gei/Gei. Welchen Vorteil bietet nun das OUT-Format dem Anwender? Nun, der entscheidende Vorteil besteht darin, da Sie eine solche Datei mit Hilfe eines OUTPUT- (oder AUSDRUCK-) Programms, wie es fr MS-DOS beim GEM mitgeliefert wird und auf dem Atari ST z.B. bei EASYDRAW oder SCIGRAPH zu finden ist, samt Textattributen auf Ihren Drucker ausgeben knnen, ohne eine von 1st Word bekannte spezielle Drucker-Konfigurationsdatei PRINTER.CFG zu verwenden. Die Ausgabe wird dann ber den GDOS-Drucker-Treiber mit Hilfe der VDI-Funktion V_ALPHA_TEXT abgewickelt. Im Unterschied zu den anderen Textausgabe-Funktionen des VDI erfolgt die Ausgabe dabei im Textmodus statt im Grafikmodus. Auerdem knnen in einer OUT-Datei auch Rasterbilder eingebunden werden (wird von 1st View noch nicht untersttzt), womit die Funktionalitt dieses Formats der von 1st Word Plus entspricht. Das OUT-Format kann nun von 1st View auch eingelesen werden. Wenn Sie eine 1st Word Datei als OUT-Datei schreiben und diese anschlieend einlesen, sollten Sie zumindest bei den 4 oben genannten Textattributen keine Unterschiede in der Darstellung feststellen. 3.2 Resourcedateien (.RSC) ------------------------------ 1st View stellt nach dem ffnen zunchst den ersten Objektbaum einer Resourcedatei dar. Bei GEM-Anwendungen ist das meist die Menzeile, die sich dann voll ausgeklappt vor Ihnen ausbreitet. Sollte die Resource-Datei berhaupt keinen Objektbaum (sondern nur "freie Objekte") enthalten, so wird abgebrochen. Falls die Resourcedatei mehr als einen Objektbaum enthlt, so knnen Sie mit Hilfe des Klick-Popup-Mens oder mit Control-Cursor-links und Control-Cursor- rechts alle Objektbume zyklisch vor- bzw. rckwrts durchlaufen. brigens knnen soviel Resource-Dateien gleichzeitig geladen werden, wie Fenster und Speicherplatz zur Verfgung stehen. Da der Resource-Manager des AES aber nur eine Resource-Datei gleichzeitig verwalten kann (mit der parameterlosen Funktion "rsrc_free" wird beispielsweise immer die zuletzt geladene Resource freigegeben), mute fr 1st View eine eigene Laderoutine entwickelt werden. Diese kann nun sowohl Resource-Dateien im MOTOROLA- als auch im INTEL-Format korrekt darstellen, und zwar sowohl in der ST- als auch in der IBM-Version. Die Erkennung des jeweiligen Formates erfolgt dabei automatisch. Doch damit nicht genug. Auch eine Konvertierung in das jeweils andere Format ist in beiden Versionen mglich. Hierzu ist folgendes zu erklren: Whrend IMG-Dateien grundstzlich im Motorola-Format und GEM-Metadateien grundstzlich im Intel-Format vorliegen (und auf dem jeweils anderen Rechner entsprechend konvertiert werden mssen), liegen Resource-Dateien immer im Format des jeweiligen Rechners vor, so da sie normalerweise nicht ohne weiteres austauschbar sind. Die Konvertierung bezieht sich dabei auf das byteweise Drehen von Worten bzw. wortweise Drehen von Langworten. Mit 1st View wird nun genau dieses Problem gelst. Sie knnen von nun an Ihre Resourcen problemlos zwischen ST und IBM austauschen, wechselseitig bearbeiten und ungeachtet der Herkunft darstellen. Als GEM-Kenner mssten Sie allerdings bezglich der automatischen Erkennung skeptisch werden. Es gibt nmlich kein von Digital Research vorgesehenes Mittel, um zu erkennen, ob eine Resource-Datei im Intel- oder Motorola-Format vorliegt. Daher mu zu einem Trick gegriffen werden, der zwar nicht 100%ig sicher sein kann, aber wohl 99,99%ig sicher ist. Diese Sicherheit ist identisch mit der Wahrscheinlichkeit, da eine Resource-Datei nicht mehr als 255 Objektbume enthlt (wohlgemerkt: Objektbume, nicht Objekte !). In diesem Fall mu nmlich ein Byte des Wortes im Resource-Header, das die Anzahl der Bume angibt (Komponente rsh_ntree) gleich Null sein. Je nachdem, welches Byte das nun ist, kann das entsprechende Format festgestellt werden. Das erkannte Format erfahren Sie im Klick-Popup-Men, mit dem Sie auch die Konvertierung veranlassen knnen. Dazu wird die Datei nochmals eingelesen (die im Speicher befindliche Resource ist bereits an den Bildschirm angepat), allerdings auf den gleichen Platz der dargestellten Resource, so da kein zustzlicher Speicherplatz gebraucht wird. Die Konvertierung ist umkehrbar, d.h. wenn Sie die Datei wieder zurckkonvertieren, erhalten Sie wieder das Ausgangsformat. Trotzdem empfehle ich Ihnen, die Konvertierung nur mit Kopien der Original-Resource durchzufhren, da bei einem eventuellen Schreibfehler Ihre Daten in den ewigen Jagdgrnden landen knnen (die konvertierte Datei wird auf den Platz der Ausgangsdatei zurckgeschrieben). 3.3 Rasterbilddateien (.IMG, XIMG, .IFF) -------------------------------------------- Das GEM-Image-Format (.IMG) zeichnet sich durch seine groe Flexibilitt und darauf beruhende Portabilitt aus. Im Gegensatz zu den anderen auf dem ST verwendeten Grafikformaten ist es weder an irgendeine Bildschirm- noch an eine Farbauflsung gebunden. Diese variablen Parameter sind u.a. im Kopf einer IMG-Datei festgehalten. Eine IMG-Datei liegt immer im MOTOROLA-Format vor, so da unter MS-DOS eine entsprechende Anpassung beim Laden und Speichern ntig ist. Fr nhere Informationen empfehle ich wieder das GEM-Profi-Buch von Gei/Gei. Mit 1st View knnen Sie nun bei entsprechender Gerte-Ausstattung die volle Farbenpracht nahezu beliebig groer IMG-Bilder genieen. Zwei Besonderheiten gilt es hier zu beachten. Die erste Besonderheit ergibt sich einfach aus der Tatsache, da die Anzahl der Farbebenen, aus denen sich die Anzahl der mglichen Farbindizes ergibt, bei der IMG-Datei und dem angeschlossenen Bildschirm nicht bereinzustimmen brauchen. Eine IMG-Grafik mit 4 Farbebenen (16 Farbindizes) kann auf einem Monochrom-Monitor schwerlich ihre Farbenpracht zeigen. Umgekehrt kann man aus einer monochromen Grafik auch beim buntesten Farbmonitor nicht mehr als 2 Farben herbeizaubern. Es sind nun 2 Ausnahmeflle zu unterscheiden. Ist die Anzahl der IMG-Farbebenen kleiner als die des Bildschirms, so werden die fehlenden Ebenen so erweitert, da die resultierenden Farbindizes einander entsprechen. Im umgekehrten Fall werden die berzhligen Farbebenen einfach zyklisch den vorhandenen berlagert ("transparente Darstellung"). Dies ist eine einfache, aber wenig effektvolle Methode, da so auf einem Monochrommonitor alles, was nicht wei ist, schwarz dargestellt wird. Aus diesem Grunde kann 1st View Farbgrafiken auch als monochrome Grauraster darstellen. Die Grafik wird dazu beim Einlesen "gedithert". Die Dither-Routine kommt gegenwrtig mit bis zu 12 Farbebenen (entspricht 4096 Farben) klar. Das Dithering dauert auf einem normalen ST bei einem 320 * 200 Bild mit 16 Farben (niedrige ST-Standardauflsung) etwa 4 Sekunden, wofr man aber mit einem sehr ansprechend aussehenden Bild belohnt wird. Sinnvoll ist das Dithering brigens eigentlich nur, wenn die Palette-Informationen in der Datei verfgbar sind (siehe unten), sonst wird von der Standard-Palette ausgegangen. Beim ffnen des Fensters nach dem Einlesen wird das Bild zunchst (nach Mglichkeit) in geditherter Form dargestellt. Da diese Darstellung grundstzlich mono-(duo-)chrom ist, kann man auch auf transparente Darstellung umschalten, wo eventuell noch einige Farben zu sehen sind (z.B. wenn ein 16-Farben-Bild in der mittleren ST-Standardauflsung mit 4 Farben dargestellt wird). Kommen wir nun zur zweiten Besonderheit. Sie betrifft die Untersttzung des im GEM-Profi-Buch von Gei/Gei definierten erweiterten IMG-Formats, des sogenannten XIMG-Formats. Diese Erweiterung erlaubt die Abspeicherung der den Farbindizes zugeordneten Farbpalette-Werten, die erst eine Echtfarben-Darstellung einer IMG-Grafik mglich macht. Dazu wird die Tatsache ausgenutzt, da der IMG-Header von Digital Research mit variabler Lnge definiert wurde. Beim XIMG-Format wird der Kopf nun um eine Liste der den Farbindizes zugeordneten Palette-Werte erweitert. Anwendungen, die das IMG-Format untersttzen, aber das XIMG-Format nicht kennen, mssten bei korrekter Programmierung trotzdem mit der Grafik arbeiten knnen. Mit 1st View knnen Sie nun jede IMG-Datei in eine entsprechende XIMG-Datei verwandeln, und damit eine entsprechende Farbpaletten-Einstellung sichern, die dann wieder rekonstruierbar ist. Dazu dient der unterste Punkt im Klick-Popup-Men. Damit wird die aktuelle Farbpaletten-Einstellung, die Sie z.B. mit dem Atari-Kontrollfeld vorgenommen haben, in der IMG-Datei verewigt. Wird beim Einlesen einer IMG-Datei das XIMG-Format erkannt, so knnen Sie mit dem Popup-Men-Punkt "Original" die zugehrige Farbpalette aktivieren. Die Einstellung wird nicht sofort nach dem Einlesen vorgenommen, da diese immer auf den ganzen Bildschirm wirkt und nicht lokal auf ein Fenster begrenzt werden kann. Die ursprngliche Farbpalette wird dann anstelle der eingelesenen im Speicher gesichert, damit sie anschlieend durch Anwahl des Punktes "Standard" wiederhergestellt werden kann. Ist der Punkt "Original" nach dem Einlesen einer IMG-Datei gesperrt, so handelt es sich nicht um ein XIMG-Format. Leider gibt es gegenwrtig zwei verschiedene Interpretationen des XIMG-Formats, was die Reihenfolge der abgespeicherten Farbindizes betrifft. 1stView-Versionen vor Dec 23 1991 sowie GEMVIEW bis Version 1.0.4 haben die Farben in der Reihenfolge der VDI-Farbindizes abgespeichert, neuere Versionen beider Programme speichern die Farben in der Reihenfolge der Plane-Indizes, da nur so eine korrekte Zuordnung der Farben auch in niedrigeren Farbauflsungen (Monochrom) gesichert ist. Die Zuordnung zu den VDI-Farbindizes wird erst zur Programmlaufzeit vorgenommen (mit Hilfe der Funktion v_get_pixel). Um auch ltere XIMG-Dateien weiterverarbeiten zu knnen, kann man 1stView auch dazu veranlassen, die alte Interpretation vorzunehmen. Dies geschieht durch Gedrckthalten der rechten Shifttaste beim Einladen bzw. bei Sicherung der Farbpalette. Dadurch knnen auch beliebige Konvertierungen von der einen zur anderen Interpretation durchgefhrt werden. Schlielich mchte ich noch bemerken, da die Grafiken eventuell verzerrt auf dem Bildschirm erscheinen knnen, da die Parameter im Kopf, die die originalen Pixelmae angeben, (noch) nicht ausgewertet werden. Neben dem GEM-Image-Format untersttzt 1st View auch das ursprnglich auf dem Commodore AMIGA eingefhrte "Interchange File Format" (.IFF). Dieses ist in seiner Flexibilitt mit dem .IMG-Format vergleichbar, wobei sich neben Bitmaps auch noch andere Daten wie zum Beispiel Sounds speichern lassen. 1st View untersttzt hier das standardmige "ILBM"-Format (Interleaved Bitmaps). Auerdem erlaubt das IFF-Format standardmig die Abspeicherung von Farbpaletten, deren Manipulation hnlich wie beim IMG-Format mit 1st View mglich ist. Wer jetzt verlangt, ich solle doch auch die diversen auf dem ST (leider noch) verbreiteten Formate wie SCREEN, DEGAS, STAD und Co. untersttzen, stt bei mir auf taube Ohren. Hier verweise ich auf entsprechende Konvertierungsprogramme (z.B. GEMVIEW von Dieter Fiebelkorn - ein bemerkenswertes Programm, das eine Vielzahl von Bildformaten in das allumfassende XIMG-Format wandeln kann und dabei auch Farben in Grauraster umrechnet!). Ein Format mu schon mindestens die Flexibilitt des IMG- bzw. IFF-Formats besitzen, um von 1st View bercksichtigt zu werden. 3.4 Metadateien (.GEM) -------------------------- Metadateien sind Grafiken, die als Folge von VDI-Befehlen gespeichert sind. Der Vorteil solcher objektorientierter Grafiken besteht darin, da sie in jeder Auflsung des Ausgabegertes (Drucker, Bildschirm usw.) optimal dargestellt werden knnen. Da Metadateien immer im INTEL-Format vorliegen, mssen sie auf dem ST beim Laden und Speichern entsprechend umgewandelt werden. Nheres finden Sie im GEM-Profi-Buch von Gei/Gei. 1st View untersttzt Metadateien sowohl im RC- als auch im NDC-Koordinatensystem. Nach dem Laden wird die Grafik in ihrer Originalgre auf dem Bildschirm dargestellt. Dazu werden die Parameter im Kopf der Metadatei sowie die OPEN WORKSTATION Parameter des VDI fr den Bildschirm ausgewertet. Wahlweise kann dann die Grafik mit Hilfe des Klick-Popup-Mens in das aktuelle Fenster eingepasst werden. Fr jede eingelesene Metadatei wird von 1st View im Gegensatz zu den anderen Dateiformaten eine eigene virtuelle Workstation fr den Bildschirm beim VDI geffnet (und beim Schlieen des Fensters wieder freigegeben). Damit wird verhindert, da etwa Attribute fr die Textdarstellung in anderen Fenstern verndert werden. Somit brauchen diese nicht stndig neu gesetzt werden. Auerdem werden beim ffnen einer Metadatei von 1st View eventuelle zustzliche GDOS-Zeichenstze geladen und beim Schlieen wieder freigegeben (beim Atari ST natrlich nur dann, wenn ein GDOS geladen ist). Das Bit-Image-Flag im Kopf der Metadatei wird von 1st View (noch) nicht ausgewertet, so da Metadateien mit eingebundenen Bit-Images nicht untersttzt werden. Allerdings gibt es eine Ausnahme. Die Applikation GEMPAINT unter MS-DOS sowie der Easy-Draw-Scharger auf dem Atari ST erzeugen zu jeder IMG-Datei noch eine zustzliche GEM-Metadatei, die nur den VDI-Befehl V_BIT_IMAGE mit den entsprechenden Parametern enthlt. Findet 1st View nun als ersten VDI-Befehl in einer Metadatei diesen V_BIT_IMAGE-Befehl vor, so wird der Dateiname der zugehrigen IMG-Datei ausgewertet und anschlieend in die IMG-Laderoutine verzweigt, so da dann die Darstellung genau wie beim IMG-Format erfolgt. Die zustzlichen Parameter von V_BIT_IMAGE (Seitenmae und Ausrichtung) werden dabei nicht bercksichtigt. Wird in der Metadatei die VDI-Funktion VS_COLOR benutzt, so kann die Farbpalette, wie schon beim IMG-Format erwhnt, neu eingestellt werden. Dies wird von 1st View (noch) nicht erkannt, so da die Einstellung sich sofort auf den ganzen Bildschirm auswirkt. 3.5 Soundsample-Dateien --------------------------- 1st View kann digitalisierte Sounddaten mit 8 Bit Auflsung auf jedem normalen ST abspielen, auf STEs/TTs wahlweise auch im DMA-Mode. Digitalsounds ermglichen die Wiedergabe beliebiger natrlicher oder synthetischer Klnge, wie sie beispielsweise mit einem Soundsampler aufgenommen bzw. erzeugt werden knnen. Da sich offenbar leider fr digitale Sounddateien noch kein verbreitetes Standardformat durchgesetzt hat, werden zur Zeit nur bestimmte, durch verschiedene ST-Programme verwendete Formate untersttzt. Der Aufbau von 8-Bit-Sampledateien ist im Grunde recht einfach, da jedem Samplewert ein Byte in der Datei entspricht. Unterschiede beginnen allerdings schon bei der Interpretation des Wertebereiches eines Samplewertes: von 0 bis 255 oder von -128 bis +127. Sehr wichtig ist die Angabe der sogenannten Samplerate, da nur dann der Sound mit der richtigen Frequenz abgespielt werden kann. 1st View untersttzt .SAM-Dateien, wie sie bei den Programmen SoundMachine und SoundMerlin verwendet und beispielsweise auch von der Datenbank PHOENIX untersttzt werden. Diese sind mit einem den eigentlichen Sounddaten vorangehenden Header versehen, der durch eine eindeutige Kennung einen Schlu auf den Wertebereich zult und weiterhin ein Ma fr die Samplerate enthlt, so da 1st View diese Samples korrekt wiedergeben kann. Sind diese Daten nicht verfgbar, so wird von einem Wertebereich von 0 - 255 und einer Samplerate von 7000 Hertz ausgegangen. Damit werden z.B. die .SND-Dateien des Spiels ESPRIT korrekt abgespielt. In jedem Fall lt sich die Abspiel-Frequenz im Rahmen der Hardware- mglichkeiten beliebig einstellen, d.h. beim normalen Interruptsound sehr fein, beim DMA-Sound dagegen sehr grob (6258, 12517, 25033 oder 50066 Hz). Der DMA-Sound wiederum hat, falls verfgbar, den Vorteil, da er keine CPU-Rechenzeit kostet. Der Interruptsound dagegen 'frit' mit zunehmender Frequenz immer mehr Rechenzeit. Die Obergrenze fr die Frequenz ist dabei von verschiedenen Faktoren wie CPU-Takt, Caches usw. abhngig. Auf einem 'ungetunten' 8-MHz-ST kann man bei 20 kHz schon deutliche 'Zeitlupeneffekte' beobachten, und viel hher sollte man die Frequenz auch nicht whlen, da es sonst zu Interruptproblemen kommt. Bei DMA-Sound-fhigen Rechnern (STE/TT) knnen Lautstrke, Hhen und Tiefen ber das SOUND.CPX-Modul des modularen Kontrollfeldes von Atari eingestellt werden, was sowohl den DMA-Sound als auch den Interruptsound entsprechend beeinflut. Wer Samples mit anderen als den angegebenen Standarddaten mit 1stView abspielen will, sollte sich an eines der .SAM-Formate halten, also den Sampledaten einen entsprechenden Header voransetzen, der die bentigten Daten zur Verfgung stellt. Dazu kann man sich im Quelltext SOUND.C von 1stView (siehe 10.) anschauen, wie sich 1stView die entsprechenden Informationen verschafft. Im Fenster stellt 1stView die Sample-Kurve dar, wodurch man ein genaues 'Bild' des Samples erhlt. So sind z.B. bersteuerungen recht deutlich zu erkennen. Kleine Linienfehler beim Scrollen (z.B. fehlende Linienstcke) sind durch den Clipping-Algorithmus des VDI bedingt (fr Experten: Cohen-Sutherland-Clipping) und nicht ohne greren Aufwand vermeidbar. Die Einpassung ins Fenster kann bei groen Samples recht lange dauern, und die Darstellung funktioniert gegenwrtig auch nur dann korrekt, wenn der Sample nicht grer als etwa ein Megabyte ist. 3.6 Der Dump-Modus ---------------------- Hlt man whrend der Anwahl der Datei(en) die Control- und Alternate-Taste gedrckt, so ldt 1st View die Datei(en) in Form eines Hex-/ASCII-Dumps. Dabei werden ausnahmslos ALLE Zeichen direkt angezeigt, d.h. es wird kein Zeichen interpretiert. Wenn hier gesagt wird ALLE, dann ist das auch so gemeint, d.h. da z.B. auch ASCII-NUL (Code 0) "angezeigt" wird (es gibt Zeichenstze, z.B. CHICFONT von Christoph Bartholme, die NUL NICHT wie blich als Leerzeichen darstellen!). Damit sofort erkennbar ist, da eine Datei im Dump-Modus dargestellt wird, wird in diesem Fall der Pfadname im Fenstertitel in Kleinschrift angezeigt. Fr ein Dump-Fenster kann wie bei jedem anderen Textfenster auch ein beliebiger Zeichensatz eingestellt werden. Anstelle des Speicherns einer OUT-Datei kann man im Dump-Modus eine DMP-Datei sichern. Diese enthlt den Dump in Form einer ASCII-Textdatei, die dann mit einem Texteditor (oder normal mit 1st View) geladen sowie ausgedruckt werden kann (beim Drcken von Control-P im Dump-Modus wird nicht der Dump gedruckt, sondern die Originaldatei, da sich das Drucken immer auf den jeweiligen Pfadnamen und nicht auf die Fensterdarstellung bezieht!). Damit es dabei keine Probleme gibt, mu der Steuerzeichenbereich (0 - 31) in der DMP-Datei natrlich ausgeblendet werden. Dies geschieht durch Ersetzen dieser Zeichen durch einen Punkt (dies ist eine gngige Methode). Alle anderen Zeichen (auch ber 127) werden bernommen, da diese in der Regel normal verarbeitet werden knnen. Achten Sie bitte darauf, da eine DMP-Datei knapp 5 mal so gro wird wie die Originaldatei! Da Sie niemand daran hindert, von einer DMP-Datei nach Einlesen im Dump-Modus wieder eine DMP-Datei zu erzeugen, knnen Sie so schnell sehr groe Dateien erzeugen. Auch bei einer Clipboard-Kopie ^C wird der Dump als DMP-Datei im Clipboard abgelegt. In Dump-Fenstern gilt auch die maximale Zeilenzahl von 32767 Zeilen. Da pro Zeile 16 Byte gedumpt werden, knnen also maximal 32767 * 16 0.5 MB groe Dateien komplett gedumpt werden. Trotzdem knnen auch grere Dateien auch bei weniger Speicher gedumpt werden, es wird dann halt nur soviel geladen wie mglich. Wenn Sie Programmdateien dumpen mchten, beachten Sie bitte, da hier die Doppelklickmethode (GEMINI/Desktop) nicht funktioniert, da dann die Programme gestartet wrden. In diesem Fall mu man also die Dateien explizit "ziehen" bzw. per FileSelect auswhlen. 4. Kommunikation --------------------- 4.1 1st View und GEMINI --------------------------- Wenn Sie den Shareware-Desktop GEMINI von Stefan Eissing und Gereon Steffens benutzen, knnen Sie die Arbeit mit 1st View wesentlich komfortabler gestalten. 1st View versteht das in GEMINI implementierte Kommunikationsprotokoll. Das bedeutet, wenn Sie das 1STVIEW.ACC-Icon auf dem offenen GEMINI-Desktop ablegen, so knnen Sie Dateien aus einem GEMINI-Fenster daraufziehen, woraufhin diese von 1st View geffnet werden. Sie ersparen sich so die unter Umstnden lstige Suche in der Datei-Auswahl-Box. Es knnen auch mehrere Dateien gleichzeitig gezogen werden, wobei dann fr jede Datei ein entsprechendes Fenster geffnet wird. Auer auf das 1STVIEW.ACC-Icon knnen Sie Objekte aus GEMINI-Fenstern auch in ein von 1st View geffnetes Fenster ziehen. Das hat dann zur Folge, da der entsprechende Fensterinhalt mit dem Inhalt des neuen Objekts berschrieben wird (entspricht Control-D mit Dateiauswahl). Ziehen Sie mehrere Objekte auf ein 1stView-Fenster, so wird fr die weiteren Objekte jeweils ein weiteres Fenster geffnet. Ein Doppelklick auf das 1STVIEW.ACC-Icon bringt die Datei-Auswahl-Box zum Vorschein (entspricht Control-O bzw. Anklicken des Desk-Menpunktes). Melden Sie 1STVIEW.ACC bei GEMINI als Applikation auf einen bestimmten Dateityp an, so knnen Sie durch einen Doppelklick auf ein derartiges Objekt in einem GEMINI-Fenster das ffnen eines entsprechenden 1stView-Fensters veranlassen (anstatt dieses Objekt auf das 1STVIEW.ACC-Icon zu ziehen). Sie knnen auch 1st View auf "*" anmelden und in der Applikationsliste ganz unten positionieren. Dadurch erreichen Sie bei Doppelklick auf ein Objekt, das nicht schon einer anderen Applikation zugeordnet ist, ein sofortiges ffnen eines Fensters durch 1st View statt des sonst blichen Ansehen/Drucken/Abbruch-Dialoges von GEMINI. Tastatur-Eingaben, die unter 1st View keine Wirkung haben, werden von 1st View an GEMINI weitergeleitet. Auf diese Weise knnen Sie bestimmte GEMINI-Aktionen auch dann auslsen, wenn gerade ein 1stView-Fenster oben liegt. Schlielich mchte ich noch bemerken, da alles eben Gesagte auch dann funktioniert, wenn Sie 1st View ber "The Chameleon" von Karsten Isakovic geladen haben, da The Chameleon Nachrichten von GEMINI an das geladene Accessory (bzw. umgekehrt) durchreicht. 4.2 1st View und CALCLOCK ----------------------------- 1st View hat zwei Berhrungspunkte mit einem Spooler-Accessory namens CALCLOCK. Zunchst kann man 1st View so konfigurieren (siehe Kapitel 7), da es bei Drcken von ^P eine Nachricht an ein CALCLOCK-Accessory zur Ausgabe der aktuellen Datei schickt anstatt die Ausgabe selbst vorzunehmen (kann man auch mit Control-L.Shift-Alternate-P erreichen). Andererseits kann 1st View selbst auch CALCLOCK-Auftrge bearbeiten, d.h. es reagiert auf entsprechende Nachrichten von anderen Applikationen mit dem Ausdruck von Dateien und kann damit ein weiteres CALCLOCK-Accessory ersparen. Der ausgezeichnete Shareware-Editor 7UP von Michael Thnitz untersttzt dies beispielsweise. Allerdings ergibt sich hierbei das Problem, da eben immer von dem Namen "CALCLOCK" des entsprechenden Accesorys ausgegangen wird. Nun knnte man natrlich 1st View einfach in CALCLOCK umbenennen, und schon funktioniert die Sache. Dabei kann dann aber die Konfiguration nicht mehr ohne weiteres gesichert werden (siehe Kapitel 7), da 1st View dann sein eigenes Programm nicht mehr findet. Eine bessere Lsung ist daher das Patchen von 7UP, indem man mit einem Dateimonitor den String "CALCLOCK" sucht und ihn durch "1STVIEW " ersetzt (Leerzeichen am Ende nicht vergessen!). Im allgemeinen sollte dies immer funktionieren, solange die Strings nicht aus irgendeinem Grunde verschlsselt im Programm stehen. 4.3 1st View und das GEM-Clipboard -------------------------------------- 1st View untersttzt den Datenaustausch mit anderen Applikationen ber das GEM-Clipboard. Wenn Sie ^C drcken, so wird die aktuelle Datei ins Clipboard kopiert, sofern ein solches gesetzt ist (anderenfalls wird nicht die Datei in das fehlende Clipboard, sondern eine Fehlermeldung auf den realen Bildschirm kopiert). Bei Textdateien werden dabei grundstzlich zwei Dateien erzeugt: SCRAP.TXT als reine ASCII-Datei (bereinigt von eventuellen Text-Attributen) sowie SCRAP.OUT mit eventuellen Standard-Textattributen. Andere Dateiformate werden als SCRAP.IMG, SCRAP.GEM, SCRAP.RSC, SCRAP.SAM bzw. SCRAP.SND geschrieben. Befindet man sich gerade im Dump-Modus, so wird schlielich eine Datei namens SCRAP.DMP erzeugt. 4.4 1st View und andere Applikationen ----------------------------------------- Falls Sie selber auch (GEM-)Programme schreiben, so knnen Sie 1st View ber die implementierten Kommunikations-Schnittstellen auch aus eigenen Anwendungen heraus ansprechen. Zunchst wre da der Nachrichtentyp VA_START. Durch Sendung dieser Nachricht an 1st View (nach Ermittlung der Identifikations-Nummer von 1st View mit Hilfe der Funktion appl_find) einschlielich der entsprechenden Parameter (Pfadnamen) kann 1st View bereits aktiviert und zur Fensterffnung veranlat werden. 1st View informiert dann seinerseits den Absender dieser Nachricht ber geffnete Fenster bzw. deren Schlieung (Meldungen AV_ACCWINDOPEN und AV_ACCWINDCLOSED). Falls das Programm diese Meldungen auswertet, kann es mit VA_DRAGACCWIND Nachrichten an 1st View mit Bezug auf eines dieser Fenster senden, was das berschreiben des Fensterinhalts zur Folge hat. Je nach Konfiguration von 1st View (siehe Kapitel 7) kann es jedoch auch sein, da die Dateien bei VA_START nicht in einem Fenster, sondern auf ein Gert ausgegeben werden. Mchte man unbedingt Dateien ausdrucken, so schickt man einfach eine Standard-CALCLOCK-Message (Nummer 100) an 1st View. Dabei knnen sogar wie bei VA_START auch mehrere Dateien gleichzeitig angegeben werden. Noch ein Hinweis: Rufen Sie appl_find immer erst unmittelbar bei Aktivierung eines entsprechenden Punktes durch den Nutzer auf und nicht nur bei Programmbeginn. Seit der Existenz von "The Chameleon" von Karsten Isakovic knen Accessories nmlich dynamisch nachgeladenen werden, so da bei Meldung eines nichtgeladenen 1st View der Nutzer dieses anschlieend nachladen und den entsprechenden Punkt einfach nochmal anwhlen knnte. 5. Gerteausgabe --------------------- Durch Drcken von ^P knnen Sie die aktuelle Datei ausdrucken. 1st View bentigt dazu grundstzlich GDOS. Wenn Sie bereits ein GDOS auf Ihrem ST installiert haben (z.B. im Zusammenhang mit GEMINI oder NVDI), knnen Sie sich also schon mal beruhigt zurcklehnen, ansonsten werden Sie eine Installation vielleicht im Zusammenhang mit 1st View in Erwgung ziehen. Falls Sie einen passenden GDOS-Treiber fr Ihren Drucker haben, knnen Sie problemlos Image- und Meta-Dateien ber 1st View in entsprechender Qualitt ausdrucken. Bei Text-Dateien wird die Ausgabe ber die VDI-Funktion V_ALPHA_TEXT vorgenommen, die ber den GDOS-Treiber Ausgaben im Textmodus auf den Drucker leitet und auerdem Textattribute in standardisierter Form (OUT-Format, siehe GEM-Profi-Buch von Gei/Gei) auswertet. 1st View wandelt nun auch die 1st Word Attribute in diese Form um, so da Sie auf Ihrem Drucker eine analoge Ausgabe wie auf dem Bildschirm erhalten, und das ohne irgendeine PRINTER.CFG-Datei. Bei der Text-Ausgabe werden die eingeschrnkten Multitasking- Fhigkeiten des AES ausgenutzt, d.h. whrend der Ausgabe kann weitergearbeitet werden, wobei es allerdings zu 'Stockungen' kommen kann. Da 1st View mit geffneten Dateien arbeitet, kann es auerdem zu ernsthaften (sprich bombigen) Problemen kommen, wenn ein Programm beendet wird (auer unter MultiTOS!). Wenn Sie whrend der Ausgabe beide Shift-Tasten gleichzeitig gedrckt halten, knnen Sie diese abbrechen. Sicherheitshalber fragt 1st View nochmal nach. 6. Rebuild-Funktion ------------------------ Wenn Sie eine neue Anwendung starten oder die aktuelle verlassen, so wird Ihr aufgebautes System von View-Fenstern natrlich berschrieben. Ein besonderes Feature des Programms ist jedoch, da es die so berschriebene Konfiguration nach Mglichkeit vollstndig wiederherstellt, sobald Sie es anschlieend wieder aktivieren (Mentitel anklicken). Es werden alle Fenster (soweit mglich) wieder erzeugt und die im Speicher gehaltenen Datei-Inhalte in dem vorher verlassenen Zustand angezeigt. Beachten Sie also, da offene Fenster entsprechenden Speicherplatz blockieren knnen, wenn Sie sie nicht schlieen. Die Rebuild-Funktion bietet den Vorteil, die Fenster-Konfiguration in eine andere Applikation 'hinberretten' zu knnen. Dies gilt besonders fr Programme, die fast den gesamten verfgbaren Speicher fr sich reservieren, so da Accessories dann kaum noch Spielraum haben (das sind z.B. viele Textprogramme wie WORDPLUS oder TEMPUS). Mit 1st View knnen Sie in diesem Fall alle bentigten Fenster vorher ffnen, so da diese Programme von vornherein weniger Speicher bekommen. Nach dem Start des Programms kann dann problemlos auf die Konfiguration zugegriffen werden. Alle bisherigen Betriebssystemversionen haben die unangenehme Eigenschaft, da Accessories nicht als eigenstndige GEMDOS-Prozesse betrachtet werden. Dies hat zur Folge, da Speicher, der durch ein Accessory beim Betriebssystem angefordert wird, immer der gerade laufenden Hauptapplikation zugeordnet wird. Wenn man nun diese Hauptapplikation verlt, so wird automatisch aller von ihr (und dummerweise eben auch von benutzten Accessories) angeforderter Speicher durch das Betriebssystem freigegeben. Verlt man nun ein Programm, in welchem man mit 1st View Dateien geladen hat, so kann 1st View diese eben nicht restaurieren, da der dazu reservierte Speicherplatz ohne Rcksicht auf Verluste freigegeben wird. Um nun zu erkennen, ob ein Fenster "rebuildet" werden kann, benutzt 1st View eine von Atari dokumentierte Systemvariable, die auf den aktuellen GEMDOS-Proze zeigt (unter MSDOS wird dazu eine Funktion namens "get PSP" benutzt). Dieser Zeiger auf den aktuellen Proze-Descriptor wird nun bei jedem Laden einer Datei abgefragt und zu den Fensterdaten mit gesichert. Falls nun eine Rebuild-Situation eintritt, fragt 1st View den Zeiger auf den aktuellen Proze-Descriptor erneut ab und vergleicht diesen Wert mit dem gesicherten. Bei einer bereinstimmung kann nun das Fenster "rebuildet" werden, sonst nicht. Zustzlich wird der gesicherte Wert noch mit den Werten der Parent-Proze-Zeiger verglichen, da auch und gerade in diesem Fall ein Rebuild mglich ist. Dies ist mglich, da die Proze-Descriptoren nichts anderes als die Basepages sind, welche ber den Parent-Proze-Pointer untereinander verkettet sind, so da sich 1st View durch diese Proze-Liste 'durchhangeln' kann (der "Programm-Segment-Prfix" unter MSDOS bietet diese Mglichkeit nicht, hier kann nur der eigentliche Wert verglichen werden). Die hier beschriebene Vorgehensweise ist vllig legal und benutzt nur dokumentierte Features (kein Schreibzugriff auf "actpd" !), so da zuknftige Betriebssytemversionen keine Probleme bereiten sollten. Falls Accessories einmal den Status von 'richtigen' GEMDOS-Prozessen erhalten sollten (dies ist zu wnschen), funktioniert diese Methode ebenfalls und es knnen stets alle Fenster "rebuildet" werden, da das Programm dann immer seinen eigenen Proze-Descriptor "zu sehen" bekommen mte. 7. Konfiguration --------------------- Durch Gedrckthalten der rechten Maustaste beim Aktivieren oder durch Drcken von ^A knnen Sie das Verhalten von 1st View in bestimmten Punkten Ihren individuellen Bedrfnissen anpassen und permanent sichern. Die Parameter werden direkt im Datenbereich des Programms gespeichert, so da keine INF-Datei bentigt wird. Dazu ist es erforderlich, da das Programm den Namen 1STVIEW.AC*, 1STVIEW.PRG, 1STVIEW.APP oder 1STVIEW.GTP hat und sich in demjenigen Pfad befindet, der beim Starten von 1st View aktuell war. Folgende Parameter knnen eingestellt werden: Standard-Ausgabe Fenster/Gert steht normalerweise auf "Fenster". Wenn Sie "Gert" einstel- len, werden die Dateien nicht in ein Fenster, sondern sofort auf das eingestellte Gert ausgegeben. Sie knnen jederzeit die alternative Ausgabemglichkeit verwenden, wenn Sie L.Shift-Alternate bei der Anwahl der Datei(en) gleichzeitig gedrckthalten. So knnen Sie in GEMINI z.B. schnell mal nebenbei Dateien ausdrucken, indem Sie sie auf das instal- lierte 1STVIEW.ACC-Icon ziehen und beim Loslassen L.Shift-Alternate gedrckthalten. Control-P-Ausgabe Intern/CALCLOCK steht standardmig auf "Intern". Gerteausgaben werden so von 1st View selbst vorgenommen. Stellen Sie den Schalter auf "CALCLOCK", so wird statt dessen eine Nachricht an ein CALCLOCK-Accessory geschickt, welches dann die Ausgabe ber- nimmt. Vorsicht: Dies ist nur bei ASCII-Textdateien sinnvoll! Auch hierbei ist es mglich, durch zustzliches Gedrckthal- ten von L.Shift-Alternate jeweils die alternative Form anzu- whlen. Textfont-Einstellung Normal/VA_FILE Steht dieser Schalter auf "Normal", so wird beim Laden einer Textdatei immer der in 1st View aktuelle Font verwendet. Stellen Sie den Schalter auf "VA_FILE", so wird bei jedem ffnen eines Textfensters automatisch der Font ber das VA- Protokoll erfragt und eingestellt, falls ein entsprechendes Programm aktiv ist (z.B. GEMINI). Zustzlich knnen Sie Parameter fr die Gerteausgabe festlegen, die sich weitgehend selbst erklren (sollten). Beim Sichern werden neben den angegebenen Parametern noch die aktuelle Fensterposition (wird dann beim nchsten ffnen des ersten Fensters wieder verwendet) sowie der aktuell eingestellte Textfont gespeichert! Die Fensterkoordinaten werden dabei in Promille der aktuellen Bildschirmausmae gespeichert, so da die Verhltnisse bei verschiedenen Auflsungen gleich sind. In der rechten unteren Ecke der Konfigurationsbox wird der grte verfgbare Speicherblock ("MEM:") sowie die Gesamtsumme aller freien Speicherblcke angezeigt ("TOT:"). An der Differenz beider Werte ist eine Speicherfragmentierung erkennbar. 8. Grenzen --------------- Fenster: 1st View kann theoretisch bis zu 32767 Fenster verwalten. Dies entspricht der Anzahl der gltigen Window-Handles. Wenn Sie mit TOS 1.04 arbeiten und das Programm WINX von Martin Osieka besitzen, knnen Sie bis zu 127 Fenster unter 1st View verwenden (auch GEMINI kommt mit dieser Fensterflut zurecht). Unter MultiTOS konnte ich keine Beschrnkung der offenen Fenster feststellen! Textdateien werden mit bis zu 32767 Zeilen mit maximal 512 Zeichen untersttzt. Pfadnamen drfen maximal 127 Zeichen lang sein. Argumente knnen sowohl ber VA_START als auch bei Programmstart in beliebiger Anzahl verarbeitet werden. Bei Programmstart wird dabei zuerst nach xArg und dann nach ARGV gefahndet. Erst wenn dies nichts fruchtet, wird die (beschrnkte) Standard-GEMDOS-Kommandozeile in der Basepage ausgewertet. 9. Neu in Version ---------------------- Hinweis: Das aktuelle Versionsdatum Ihres 1STVIEW erfahren Sie z.B. durch Drcken von ^A. Apr 29 1992: """""""""""" - Anpassung an Atari-MultiTOS: Man kann dort auch in hinteren, mg- licherweise teils verdeckten, Fenstern scrollen. Damit konnte ich nicht rechnen, es gab 'Bildschirmmll'. Behoben. Es erfolgt jetzt echtes Scrolling in jedem Element der Rechteckliste! Leider scheint aber das Echtzeit-Scrolling nicht mehr zu funktionieren. Abwarten... - "1stView" oder "1stHear", das ist hier die Frage! 1stView spielt jetzt 8-Bit-Soundsample-Dateien auf allen ST's ab (interruptgesteu- ert im Hintergrund). Wer einen DMA-Sound-fhigen Atari besitzt (STE/TT), kann das ausnutzen und damit die sonst bentigte Rechen- zeit einsparen (allerdings auf Kosten einer eingeschrnkten Frequenzwahl). Die Frequenz ist jeweils im Rahmen der Hardware- mglichkeiten frei einstellbar, und im Fenster wird die Sample- Kurve dargestellt. Nheres findet man in Kapitel 3.5. - "Dateie(en) neuladen"... In der Fileselectbox knnen jetzt im Dateinamenfeld Wildcards ange- geben werden (Beispiel: "*.DOC" ldt alle .DOC-Dateien des Ver- zeichnisses). (7UP lt gren...) - 'Umstieg' auf Pure-C. Die TT-RAM-Flags sind dadurch automatisch gleich richtig gesetzt, so da es dort gleich richtig 'abgeht'. Aber Vorsicht bei Samples im DMA-Mode! Wer das unbedingt nutzen mchte, mu vorerst noch selber fr ein entsprechend gesetztes Flag (Mallocs aus ST-RAM) im Programm-Header sorgen. Ich verspreche Abhilfe in der nchsten Version (Benutzung von Mxalloc)... - Geditherte Farbbilder sollten jetzt 'natrlicher' erscheinen, da eine aus der Fernsehtechnik bekannte Umrechnungsformel (Y-Signal) fr die RGB-Grauwert-Konvertierung verwendet wird. (Dank auch an Dieter, der mich darber 'aufgeklrt' hat...) - Bei speziellen Metafiles konnte es vorkommen, da 1stView ber sein Fenster hinaus auf den Bildschirm malte. Behoben. - 1stView "hrt" jetzt auch auf den Namen .GTP (beim Sichern der Konfiguration). - Zustzliche Informationsanzeige in Popups: Pixel bei Images, Zeilenzahl bei Texten. - 1STVIEW.DVI wird nicht lnger untersttzt -> weniger Platz + einfachere Weitergabe (+ weniger Arbeit fr mich) Dec 23 1991: """""""""""" - "Sag niemals nie!": In bestimmten Fllen konnte die in der letzten Version eingefhrte neue Rebuild-Methode doch noch fehlschlagen. Die Idee war schon gut, die Umsetzung leider mangelhaft. Ich hoffe (stark...), da jetzt alle Probleme beseitigt sind. - Um Abhngigkeiten von der Farbauflsung zu vermeiden, mute die Interpretation des XIMG-Formats (Reihenfolge der Farbindizes) gendert werden (in Abstimmung mit dem GEMVIEW-Autor Dieter Fiebel- korn). Alte XIMG-Dateien sollten wie folgt transformiert werden: Bild einladen MIT gedrckter rechter Shifttaste, Originalpalette anwhlen, Farbpalette sichern OHNE gedrckte rechte Shifttaste (funktioniert bei Bildern bis 16 Farben auch in Monochrom!). Nheres steht in 3.3. - Probleme beim Konfigurieren unter Let'emFly (Freeware von Oliver Scheel) umgangen sowie Tastaturbelegung angepat. (Man fliegt halt nicht mehr ohne...) - 1st View kann jetzt mehrseitige Metafiles korrekt darstellen (Seitenvorschub mit v_updwk und v_clrwk). Es kann seitenweise geblttert und gedruckt werden. Derartige Metafiles knnen von 7UP ab Version 2.1 (liegt mir der- zeit als Beta-Version vor) aus beliebigen ASCII-Dateien erzeugt werden. Bemerkung: Diese Funktion war (per Tastatur) im wesentlichen schon in der letzten Version verfgbar (fr Testzwecke, daher undokumen- tiert). - Kein Nachlaufen mehr beim Tastatur-Scrollen (Dank an Michael fr die elegante Methode). Nov 24 1991: """""""""""" Bezugsversion. Sollten Sie eine noch ltere Version besitzen, lesen Sie am besten alles nochmal durch. 10. Referenz ----------------- Zunchst mchte ich mich herzlichst bei den Brdern Gei fr ihr GEM-Profi-Buch bedanken, ohne das dieses Projekt kaum mglich gewesen wre. Ein weiterer Dank gebhrt Stefan Eissing und Gereon Steffens fr ihren kommunikationsfreudigen und kaum Wnsche offenlassenden Desktop GEMINI, der eine bequeme Arbeit mit 1st View erst ermglicht. Nicht zuletzt geht mein Dank an Borland Mnchen fr ihre konkurrenzlos komfortable und leistungsfhige Purbo-C- Programmier-Umgebung. Bei 1st View handelt es sich um "Freeware". Das bedeutet, Sie drfen (und sollen) das Programm kostenlos fr private Zwecke nutzen und weitergeben. Bei der Weitergabe sind die beiden Dateien 1STVIEW.ACC und 1STVIEW.TXT unverndert zu kopieren. Eine kommerzielle Verbreitung in jeder Form (PD-Sammeldisketten o..) bedarf meiner schriftlichen Genehmigung. Gegen Einsendung einer rckfrankierten Diskette erhalten Sie beim Autor die C-Quellen sowie 1st Guide, eine Erweiterung von 1st View durch ein Hypertextsystem mitsamt eines umfangreichen Informationssystems ber das ST-Betriebssystem. Dabei handelt es sich jedoch um ein "Shareware"-Produkt, was bedeutet, da Sie bei regelmiger Nutzung beim Autor einen finanziellen Beitrag (DM 20,-) zu entrichten haben. Viel Erfolg bei der Anwendung des Programms wnscht Ihnen Guido Vollbeding Leitergasse 4 / 503 D-O-4020 Halle Bankverbindung: Guido Vollbeding Stadt- u. Saalkreis-Sparkasse Halle Kto. 486260725 Blz. 800 537 62. Fq.. F1STGUIDEACC VyraE1STGUIDEAPP {61STVIEW ACC zq$1STVIEW APP z\EAD_ME TXT MZa@>0jr & rUN& qYtd n Z 8 ^ / "  2  {QJ*#K$3 } i [ A . '   { Y <   O"j"~O_e0~]G4mTF2%b>xS#pWG0iW?tjSF<# #a#"Z" ' &%%%`%F%%%$$$$$$|$h$X$C$3$+++t+f+R+++***w*k*7*0*)))U(H(!((..}.k.Y.B.:.+. .----o-]-],=,rrrrrrjrPr?r&r rrrrrrrrmrYr,rrrrrr|rWrIr6rr rrrrrrrrxr[rIr.rrrrrrrrgrNr2rrrrrrrwrerQr3rr rrrrrxrarCr,rrrrrrr}rcrRr7r r r r r r rq rV r5 ri rN r3 r r r) rrorEr r r r r r r r r&EEEEEfENE6EEEEEEvEFE.EEEEEzEvErE^EZEVEBE>E:E&E"EE EEEEEEEEEEEEEEE~EzEvEbE^EZEFEBE>E E E E E E En E> E& E E E E E EN E6 E EEEEEvEFE.EEEEEEnEVE E E~ E6 E E E E E E E Ev E^ EF EP}PpPhPWPAP1P PPPPLPP$PPPPtPfPBP#PPPPPPwP~P]P=PPPPzP\PP P P P Pr PO P; P P P Px Pg P PPPE  jV8 xcQE7$S9- xbIe^   U 6      v S E 2 $      w I   S{j/   t ` n7n`ug2lodO|oW#""e"^"9"2"!!!~!s!e!L!-! ''''d'<''&&%$$$v$a$(l(X(@(//t/m/S/L/.....g.S...----}-b-W-2-,, 0/ EEEEEEExE`E{Ye|fJ' q$m]H>)8) xbXBhP3   H       z m U D  Q/g:  F  e f8  +&Zf,# #""|"X"*"!)!  &$$q$f$Q$+|+l+++*****v*d*T)/)))v///..s.S,EEEEtE\EDE,EE      e ^       S O ? +       u Y : " r A o X  x      x R  x i U E ^ S @        t T 0  FE.EEEEEE& & & t& `& C& -& & & & & g& `& C& -& & & & & z& d& & & & & h& U& & & & T& & & & & n& ^& I& 3& & o & & & & & & & X & & & & & & | & & & & & u &  & HE0EEEEE    V O %     l N 8    r Y  a    u      x m Z EEEEjERE:E"E EEm^3 G D = ; 3 h F 7 L   fEjEnErEvEzE~EEEEEc . - ?Z8 p\L: :%+)T-]369<=$A/C*F+I%M0O+R*W2Z;^-a+d,hRk7rPu1z8}BH8@d%lH!%'VL/*#<*.0u9 y=#/! ! $'6).#032(5g=E؎м0!-˸L!U~|~sVF؃VF]UVWvvSYYv v SYY;vvvVFvPv v  ^&VF_^]UVvvSYY@FV։VFN^&:F uVF N u33^]UVWUv+ &Fu+t-uE&F9w/0r*t ᗇ⒗&F9w0sM|؃]_^]Uvv~YY]UF~]UFPYYFPv v vv ]UVWv4tv\LT| tU!]VvDv DDD d | TL\tPPX_^]UVv |X~W6 ؋#6^]U"VW~ ^$w\rWFN }~t &-G؃v+6F +6F uNN6, s:FV F _^]U~ uFF3RPv vv PaPV]Uvvv v vPaP9]Uvvv v v~ u3PaP]UVW~v NsڋVF_^]UW~N F t Is_]UF Pv vvVF]UVWN ^ VFs3v~ N tNOtI++s_^]Uvvvv v  VF]UVv&F&D&T&\^]UVW~2u~ +tIs_^]UVv^ t :t"t:t"t:t "u33FD^]UVW3~ 2ыvD&]+Î_^]UVW~ 2~VF_^]UVWv~ 3عza& tt:r:w, :r:w :t+Î_^]UW~3;Fu;t H_]UVv ,A<waD"u^]UVW~ F2+ًˋvD&]2+Î_^]UVW~ 2^+ǎ~VF_^]UVWv~ N3غza$& t:r:w, :r:w :t+_^]UVW^ & uVFR~3ч~ 3Au;s 3ێû IuH_^]UVv ,a<wAD"u^]Vt^YQ3YQYQYQUVWF V ^N u ti teu y ؃ y ۃ W33;r w;r+@[tƋt؃_^]t3[Ssـ ˀ3[Ssـ ˀ } у/sЊ% } у+s2+ӊЊ%UVWv~ _^]QЊŊYˊ%;u;U> tI""FFF PP6 ]U"&6&4VFVF6"6"&_(6"6"$FV;"u';"u!""C^&6&4VF^&6&4;"u;"uԋFV&4&6""]U""VF t1"&;"u!"&6&4"";Fu;Vu3]UV""´VFPRS"&4u&^&x"t""4VFPRS"&G+ ">+}3FvPP"&7^]UV"&G RP&GPR3ҸY[RP"&;Gt&GPP&7^]UV"&GRP&G PR3ҸY[RP"&;Gt&GP P&7^]UVW"&G&&~&wƙRPǙPR3ҸY[RPPP"&7"&G&& ~&w ƙRPǙPR3ҸY[RPPP"&7_^]UP3PP6"6""&_0 "&G&WPPPP&w&w&w&wP3P k]U"6"P"6"P"6"P"6"P6666PP k]U"6"P"6"P"6"P"6"PP"&7]UV~ u"&G&W;u ;u3PPPPPv6" t6HH^]U P|DD u33PRPHH;~;~;};};~;~;};};|!;|P6"6""&_$ PDD u33PRP]U"&G&W&G&W]U"&G&G &G&&)G &G&&)G]UA6666P6" ]UV"&G&WVF&G&WVF~t&G&&G &G&&G6"6"&D&"&G&)G &DVR&o[&G"&G &;G}&G &G }&G"6"&D&"&G&)G&DVR&o[&G"&G&;G }&G&G }&G "&G&W;Fu;Vu&G&W;Fu;Vt-K~uO"&&G&W&G&WPP6 ^]UPPPPP3PHHPPPP6@P6HPPP kFVRP+PRVFY[RPRPPRVFY[RPFVRP+PRVFY[RPRPPRVFY[RP6@P6HPPu ]Ua.6666v v vv 66666" "&G&G+3P6"$GP]ULL3PRP\PP@RPP FPPP 3PRP\PP@RPP F]U:VW~uRF |"B~PP PyPP =uP[F~CF^"46"Pvv""4VF^&F~u6N^&?un F vP^&GVvR^&:tG^F&?uNN^&?\uP^Pvv uF^&:uFF3-^&G P"@@6"PF@@vPC F ^&Fvvvvvvvv^F&?uN uFVVډF&?tb\PvvFV t^&:uFvvP$\PP@FVvvvv^&?uzPbPFP~tw|PFP=~uPFP=FP u~u 6"zDDP33PRP u\PP@FV'PPP tcP^&?t)'PPPP t P DD t(33PRP~u 6"zDDP\PvvVFPP tP u~PMP""VFvvvP r """ "uF Ft=^&6&4"&4&6^""&4&6&G&W""""&4&6&W&G~FvP"6"PPF4vP"46"PC F4V3+Ѓ"&4~uA:P"6"P؎& PF@@vP"@@6"PC ""´VF^F&?uN^&"uNN^&?"uN^&:F^& Fvvvv<~u"46"Prvv"6"P"&Ƈ4~tO^&G&W"&W&G^&G&W"&W&GFV""&3PDD9F Ft" "&G"&G "F"&;G~&G"F"&;G~&G"&+GF&;G};} F&G"F&G"&g&+GF&;G};} F&G"F&G"S&G[&"&G&)G S&G[R&o[&G"S&G[&"&G&)GS&G[R&o[&Gvvv v lF uR_^]UVW3" "u"&?t""VF3F^&6&4VF;"u;"u0"&;>u&;<t^Q""& }PP 5Nu(3PPPP"&6&4""Nu_^]U6" rDD66663PPPP3P6"&GPl6"zDD]U(FFFFFPFPPP6 -]UVv"&)w }&w &G u33PRP PDD uƙ"P&GRY[FV;~;~;};};|d+ |W;V|9u;Fr2F)HP6"6""&_$ P$DD tR33PRP^]UVWv"&G&w &W +‹ }& }&G 33PRP PDD uƙ"P&GRY[FV;~;~;};};|d+ |W;V|9u;Fr2F)@P6"6""&_$ PDD tR33PRP_^]UVv"&)w}&w&G u33PRPM PDD uƙ"P&GRY[FV;~;~;};}+ |b;|Yƙ;V|9u;Fr2F)rHP6"6""&_$ PDD tP33PRP^]UVWv"&G &w&W+‹ }&}&G33PRP PDDD uƙ"P&GRY[FV;~;~;};}+ |b;|Yƙ;V|9u;Fr2F)3@P6"6""&_$ PyDD tP33PRP_^]UVv"&+w } PDD ~V/DD^]UVv"&+w} PNDD ~VqDD^]UPPPPP6"PPPPP6"+=}r;ui"+&9G~X+&9G~KPPPPP6"66666666%66666666 ]UVP|PPSPP|P |P  |`vvPPSdPPV CP|PP|P=P|P=P  }\P>P@FVPvv Pvv='PP>PP uw}}P|P=|PP =thPvv>GPPV %"P|P=|PP ^]UFVVډF&?tb\PvvFV t^&:uFvvP$\PP@FVvvvv^&?uP+P u\PP@FV'PPP uPvv ^&?u~PSPPSZЁrGPP GuPPP=RP=PP uPvv낚P]U@V>u>tf㍆26N2džFdžHPP2P @@" ">PP  3^]U"PFPFPP F%]U uePP F FtW^&?tN Pvv|FV t ^&FvvUFVVF t,^&?u!Q t 6" rDD P]UVWP u33PRP3P"46"P  }#33PRPP DDe.P"46"PRPP=3PP })V DD33PRPP DDPV33PR FV3PV3PR vvFV u?!FV |=vvvFVFFFFVvvvvV  FV |% vvvvvW ;Vu;FtЍV;Fu;Vtvv$W DDV DD33PRP_^]U"%=u^&?uF^33PRvvPPPPv "% P]U"P P3P u=Huj=u0=u>=u=ue=u=uZR=!u=u= uL5=Gu=7Gu"=Pta-=4Ku=It]=Ku=Mu=6Mu=0Ru=QtH=Ru=audPDDPDD"&G&HPDD"&G&HPDDPDDP)DD"&G&HPDD"&G&HPDDu3P-DDi"&wDDX3P:DDL"&w )DD;3PP)PPo"&"^" "u PDD"46"P"% = u33tNЃ6" rDD"&4u33PRPRPPPPPPN|@u4"&6&4;"u;"t P"&ğ4&7@6"66"6""&_  t!>.u66"GP݃]UVWv >}3; t 3PPGP܃TF FtZ^&?tQ Pvv|FV t ^&FVvvD3FVVF t3^&?u( u$x t 6" rDD3PP_^]UV; t 3PPGP܃^&?u 33PRP3PPPPPP33PRP3PP  }!33PRPP DDSzjP PjPP=t=tojPP33PRPP|PPvv|PP P|P=|PP |FVjPP^F&u&;<t?"&&6&4""Nu^]U존"ڋuZv.c)u )du(u )uuGutGuHGu%Gu~vr.S)PDD^P"DDQ"&G&HPDD9"&G&HPDD!P#DDPDDD"&G&HPDD"&G&HPDD"&4t>u33PRPRPPPPPP$ P6""&G%&Gh0PDDW3PR"&GPRY[RPPDD#3PR"&G PRY[RPPDD V6666A "% = u33t66zw3P66#cP66NP66!P -"" tP666"6""&_0 ]&'&&I'a'/'<'y''''&-('''UVW~ti"& "&G"+‹&G&&GǙRPǙPRY[RP9>"~>"+"&G"g"& "&G "+‹&G&&G ǙRPǙPRY[RP9> "~> "+"&G "33PRPPDDPFPFPFP v~t;)~}F;v}vƙRPF"P&GRY[RPP9)~}F;v}vƙRPF"P&G RY[RPPDDPPPPFPFP3PP3PRPPPPPPPvvPvPPP <u=PDD33PRP~tPPPP3PPP _^]UVFPP"PFPFPFP3PdPP3PPPPPPPPPPPPP6  <PDDt<t<PPPPPP3PPP3PPPPPPPPPPPPP!P <uuvv}"  u~uv"&G&G;F PDD"&G&G;F 3PDD"&G ";F~&G;F~xvv6"6""&_,]"F&+G|PF&+G&;G}CF&+G|:F&+G&;G}-"t33Pvv6"6""&_0 t)6"_rDD>u6 DD& 3PDD^]UV=u"P "PPP " F6N}FxPPFP  xPP6FxPPP3P6I3P6AA:3PP`PP=P>P""0P6 PqPDD^]UV3Pvv  }P DD33#~uv v V0* .PvvFV uF@vPFVhPvv u V;.DDlPvv u V-DDpPvv uv v V & mtPvv uv v V HxPvv t|Pvv uv v V> v v V7$^]UVFЩuFPP =u03PPDD> |6 DD  &> |c6 "DD u6 DD > u PP|FV^&FvvP PP|FV^&F> t?'P"PPP t#P DDvvPUvvS@Pvv\PP@FVPR:"PSZ[CRS FV:"Pvv"PMP .PvvFV ukF@vPFVhPvv u-P.> tvvPj_tPvv uX3PP  }-P DD> tvvP6 P pPvv tElPvv t.xPvv t|Pvv uFPvv P  PP > tvvPXN3PP  }+P DD> tvvP c/""^&G ^]U0V>Pvv> t\Pvv@FVPvv'PFPvvP u4PF vP'PFPvvP uPF vP'PFPvvP uPF vP'PFPvvP u^&3PRvvPP Pc 3PRvvPP ud'PFPvvP tP 7\Pvv@FVFPvv Pvv  }P 3PV66 ;u7;u1FP3PRV   uFV;u;t P DD{ vv>P~ tMPP =uC3PV66 ~ tP3PRVP3PRV  V DD^]UV VFFVF N 3 PRvv0^ &Nt(3 PRvvFV u N ^ & N^]UFFFFuVPPƺ؁N}% = u33t;@`   8  9@`   8  L6~ 6| !RP6 6 'RP< F&&WPFP \&&WP\P P&w&76 P&w&765PCDD9P6DD>P)DDCPDDFPDD PDDPDDPDDPDD"PDD%PDD*PDD/PDDFPFPFPFPP3PFPFPFPFPP vvvv3PPPPP 3F^uPPFFvP vvvvPVvvWvv uPvvP VDD=Mu=t+=Iti=Ktf=Nu=Ou=PuK,P+Nj6@6 6 6` 668 6 66\PPPc  tP\P3FPP\PP&w&7&w&75PDD9PDD>PDDCPDDFPDD PDDPuDDPhDDP[DD"PNDD%PADD*P4DD/P'DDNuP\Pvvvv3PPPPP _^]UP^&w33PR FVP^&w33PR +FVFV3P^&wvv vv^&&W uM!FV |!=vvv^&&WFFFV ^&&G^&G&&W&G &GV&&&W&G]U!FV |!=vvv^&&WFFFV ^&&G^&G&&W&G &G&V&W&G]UV^v&3&+GFVF&G &W&&G&G&;v7&w&7vv&w ;V|;Fs^&G&&W&G^]UV^&G&;wt&G &W&&G&G3&+FV  u wX^&w&7vv&w  ^&W&؋v&\&T^&G&;w^&G&7&&^]UV^&G&;w v v^&G&7&V&^]U^&G V ;Fu&9Wt^&w &w$^&w DD]UV 'FVv v 2vvv )vv2^]UV 'FVvv2.vv2^]U]U>ztv vvv&_$]U>ztvvv&_(]U>ztzv&_,PDD]UVv Vvv%N}^]U"^&^ &^&F^ &F nF^V | s]UF Fu^&G&H"J"P"R"&GHT"&T"L"&GHV"&GV"N"&G&Wp"r"p"t"x"v"~"P|"Pn"Pl"PP3Pz"|"~"X"Z"03PRP"PH"P 3PRl"PX"P l"PX"PH"PP6 -]UVv 33PRPF Fu PPV t|vvS }3FV։>uPP FPFPFPFPP FP;FPFPFPFPP3PvvvvP3PP 33PR33PRP^]UV%^&F^v&&GF&Fn F ^ V | s^]UVW~: t3PRvv^&7F^S&[&G^&7Fn F ^ V | s_^]UVWv~ Nƻ 0^&Ot ƙ u N^& O_^]U t7~t>u3P6 u3P6]U~t3P6 >t3P6F]UЍxVFPR ty^&?tpF^^F&^F& uN^&\t&\F^&SF^&CF^&RF^&AF^&PF^& PP 3]UVv tNƺ^&G u:Pƺ^&G 5P66663PVvv^]U VWF ^؋F &+GPF ^&GZ+ЉV;F~F^&GFFFH+ ~)vF ^؋F&+GPF ^&GZ+ЉV;F~F^&GFFFH+ ~)v^F@&GF@&G33PRPFPuF ^&G % uF ^&_ &6666P3Pvv^ uF ^&_ & FPFPFPF P vPDDvv P3Pvv }3Vvv33PRPFPF PVvv FPPPPFPF P3PP3PRPPPPPƺ^&wƺ^&wvv t3PvPPP <33PRPVvv=uPDDƺ^&G u;v u3 t%VvvOt3P2P 33PR33PRP~tFPPPP3PPP _^]UV3zPR^&PR3ҸVY[^P&GRPR3ҸY[[Yv&DQSPR3ҸY[[Yځ =SQ^]UFFFPP6hFPFP3PP6dF]UvvP6^*PP6hF V NPRZRVNP:P*PP6 -]UVv"t;vu;6,~(^]UVv"uuF;6,~)^]UVFFF"FFF$ VЈVF$ЈVF$ЈV^F*nF+FFF }FfF }F0fF }F fF }FfF }FfF }F0fF }F fF }F^F"N|"F^"F^㋇"^㉇$ff^v"$n}F>} HFFF;F|;F~FFF,>, ^bv6F]F,;FsF^F)^F(N}^]U VW^&TuFVXVF^F&?t^&G;}&G3PFP3PV6) vvV6^^F&F^F&F^F&FF;|^&T_^]UVW~ ǻH3WV V^ ؉^V~tvv33PR^&PR3ҸY[RPFF3PR^&PR3ҸY[RPFF3PR^&PR3ҸY[RPFFFP3PRv F;1_^]UVWFVXVF^&F^&G;}&G3ƺVvR3PV6) F;|33PRPPF4vP  }!33PRPP DD^&O&Tu?&TuF FPVFV%PR FP3PRV  ,|=s%V DD33PRPP DDP3PRFPP ~APtw~CMtmvv9~}FPV3Pu 3PVPR @RPFvPPFvP3PRV vvWVP @RPFvPP?PV33PR FVvvFV u%V DD33PRP P DD3PV3PR vvvvV  FV3PV3PR ^&TuF FFVVF;F|:;Vv3vv$V DD33PRPP DDaP3PRFFvPP ^^&G&W %VFP3PRFFvPP ^^&HDtC&?BMt9P3PRFvPP ^&G&WP3PRFvPP vvvvV Ǚ^&&WP3PRvvP P3PRV vv3PRV vvWV3P 3PRvv욈P^&GFV &G3PRvv욈P@RPFvPPvv3PRV P3PRV FvP3PRV vvWVP @RPFvPPFFvPFV+VFPRV vv$^&TV DD33PRP_^]Uvvv v >^&GP&GRY[^P&G RY[FVvv^&&W u & ~^ &G&^&&Gv^ &w&7^&w&7C ^& tvv&w&7Pv v vv6= ^ & tvv&w&7P^&G&^ &;Gu&;t^&w&7$]UnVWFFF^&G^PRv &&+G[YډNʉ^^&G ^ P&G^&+GR[YډNΉ^^ &G&+^̋NډN҉^ԋ^ &G&+G^ЋNډN։^^&DFV&FFV&VF ~(NVFFVNVFFV~},NًVFFVNًVFFVFV;Fu;Vwn^FVV҉FԋFV;Fu;Vwn^FVV։F؋FʉFFΉFF҉FF։F^ &G&V‰F&F+FF&GF+FF&G;F &G;F~`^ &G;F&;FF@&^ &G;F&G;FF@&Gv v 6 9F;F} F;F} ~t^&JtF@vPFP^&JtFF&LuT>| vv6FPFPF@vPFPP63>}< vv, FPF@vPFPP6 - ^&JuF@vPFPFPF@vP>~TF)FFF@F~}#FV+@FhFV+@FOFNV+@FHFЋV#)V!~FNV+@FHnЋV#)V!~FF~t6PFRY[PFRY[RPFV uPP6 CP6AFP6 93P6AP6 C| ^&HFV&FPRVFY[FVFPFP>FVVFFVVF~|F؉FNVFFVN^VЋFΚVPFʱNZVNtF*^FVVFFFFVVFFFFFFVV F FF~^ &FF ^^&^ &FF ^^& б^ &FF ^^&^ &FF ^^& ^&FOuNttNtT6NtF*^FVVF33҉VމFVډF܋FVVFFFFFFVV F FF~^ &FF ^^&F^ &FF ^^&F^^&^&^ &FF ^^&F^ &FF ^^&Fڋ^^&F^& F&F^ &FF ^^&F^ &FF ^^&F^^&^&^ &FF ^^&F^ &FF ^^&Fڋ^^&F^& F&FOtNtNtFVVFFFFFFVV F FF~3^ F &?}^ F &?}@^ F &?} ^ F &?}^ F &?}^ F &?}^ F &?}^ F &?}^ F &?}ƀ^ F &?}@^ F &?} ^ F &?}^ F &?}^ F &?}^ F &?}FF^ F &?}F^&7FOtNtNtd~uxN^VЋFΚVPFʱZVFVVFFFFFFVV F FF~^ &^&F FOuNuNuVЋFΊNPRVFY[VPFʱNZVNtF"^FVVFFFFFFVVFFF~FV׉V F ^&^&^&F&^ &FF OOuЋF V VFnuNtyNtF$^FVVFFFFFFVVFFFFVV F ~^&^&G&^&&GFFOOuӋ~^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF FOOuntNNt..FFVVFFFFFFVVFFFFVV F ~^F& } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&Ft ~^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF FOOt5ntNtF3+FRPvvPFVVFFFFVVFFVVFFPFP6= FF~uN>| vv.FPFPFPFPP63>|.vvFPFPFPP6 -vv$_^]UVW~ }%FPPFPFP FF FF ^&&wF&V&Vw+.GFGFGFGFGFGF^&G+& &G+&w&&G)F F ~ ~ ~ ~ &w &G)F F ~ ~ ~ v ~~+~ ^&9 }& }3+v ^&9w}&w }3^&&w z{_^]UF =-u =tc=t{=st=tt*^&V|P3PPvv| 3u^&VP3PPvvU 3N^&Tu vv31^&Tt vv3vvs3]UVW~ v ^&Tt3^&Ttt^&V3^&V|3t 0F6^^&V} -&*V^&V~ +&V^&F^&F^&FP?P^&w.PPFP^&w.PPTP^&w.PP^&TtPkP PPVWP:PPHH؃wJ.(PVWvv .PVWvv} vv, vv_^]!!!!U]UbVWF FF %FF %FƙPFRY[FԉV֋ƙPFRY[FЉV҃~~FF~|+ЉVދF;F} F t~}F~uFFPRVҋFY[F̉VθNF@@F܋FމF tFFރ~t fރ~tfދFh3FVRPFV uv DD P DD33hFޙ^֋NSQFV u*vv$v DD P DD33>:u: P:PP^F&GF &GF &G~t FƉF FVXVFVV܉VFFVVԉVFN~uF~ }vv3PRv  ^&MGt&?XItvv3PRv  3PRvvPFvvcV^؉^Vvv3PRv  3PRvvP^؃v. -vv1VvRvvuvvVvRvvMvv߃Pvv^X&uvvV^؉^V^&}^&FF^&}^&FF^&}^&FދF;FF3PvFRP FFP3PRv  ?|=s8vv$vv$v DDP DD33N P3PRFPP ~DYu ~BOu4~APt~CMt^&FFFP3PRv  vv$߃V^؉^V33PRFPR3ҸY[RP^&F33PRFPR3ҸY[RP^&F33PRFPR3ҸY[RP^&n^؃v.-vvރVvRvv݃vvqރVvRvv݃vv܃Pvv;ރ^X&uvv#ރV^؉^V^&}^&FF^&}^&FF^&}^&nFȃ^V | vFދF;FFPvFʋVȃ%PR I^؃v.,FuDFVvR4FVvRF%Pn܃N}*PP6^4PP6h4PP6^rFu@FVvR4FVvRF%PۃN}*PP6^4PP6h4PP6^Ft^^& F%Pڃ^^&N}FtF^&&GFV^؉^VF%F^^&}^&FF^&}^&FF^&}^&N|y^F&T&LJVFV&@&B&LJJ~|&J^F&LF&HFV&D&F&W&G&G&G &G&G&G&G&G$ &O&&G(8&O*&G &O"&G,&O.&G08&O2FFFP Pv3PvvꚋFFFVVFFVVFF F~uFPPF t =uFPPF tXFVVFFFFPP^&FN}FF^&^&FFN}NFPP=tFPPFFPPFFPP^&FN}~}FVVFF~}Nf^F&Fnu~~uFPP^&F`FPPF |$FPP^&FFȈF }(FPPF^F&FFF ~F;FsQF %FF;Fs+FFڋFVVFvދ^؃v.,F3FFVVF^F&t ~fvF;Fr^&A&^&&GFnF uFNuMF3FFVVF^F&t ~fvF;FrFV׉VF^&^&FF^&^&FF^&^&FFnF uFNttF3FFVVF^F&t ~fvF;Fr^&^&FnF uFNufFNtFFFVVFFF^&^& FFnuƉF)FF;FrF;F|v FFVVF^&?FFFF;F}^&#?^&?FF;F|كnuF%F^F3FFVVF^F&t ~fvF;Fr^&^F&: ^F&nF unFFNuAF%F^FFFFVVF^F&tF FfvF;FrFVVʉVFF^&FF^F&:F~F^F&:F~F^F&:F~FʋFVVFfʋF uFF^F&FFNuK~ptEfʊF } ^F&FFfʊF } ^F&FFfʊF } ^F&nF tnFFNtF܋F;F u#FPPvv$VFF;F}_^](Y))@**e+$$$&%Z%"""##*#  F !n U(VvFP3 PRV  ~RMu~FOu~BMu~ILtV DDP DD33FP3PRV  !|=sV DDP DD33~HDu~BMt=P3PRFPP PVFދV܃%PR {FP3PRV  3PRFPP3PFPvvFPV ^]UFP3PRv  3PRFPPvvvvvv ]UVFF>tD3Pvv  }P DDHFP3PRV  V DD3PvvcP3>ux t*FH>"@PFZFFH> "@PFZFB"RPFPFRY[RPF "RPFPFRY[RPFF>t +FF>u~F>t +FF>u~FHFFHFFP6666Vvv6 6DD6aDD3P3PRcP^]UVFPFFvP6= 36.^F&?u6,9v}v^]UVW~FPF F v P6= F V VF36.^F&?u6,9vv v Wv6  FWuPPV/.;F|v v Wv6  "PP.Pv v Wv6_^]Uv6 O.P,PFPPv6R>t3P6MFP-P6= F.FP/P6= .+F3+,]UV^&D;F u &F;F uv v ?^&D&F&|&s ^,&L(^v&L&F&L&L..&L^&G&&G .&G&G&&G.&G3P DD^]UVv ^&G8&GP&Ghvvvvv Vvv>t3P6M>tP6 OFPFPPP +P6Rƺ^&Gƺ^&w&w ^&GPƺX&GPƺ^X&G+FP^&w6  F=}p>t66 OFPPPP66R3^]UVWv~ }@3t/v v PPv v t01PPt/v v PPv v tEFPPt/v v PPv v t23PPt/v v PPv v t45PPt/v v PPv v t67PP t/v v PPv v t89PP_^]UVWv.P\PPRPFV t^&33PRP3Pv v P=RPF }"33PRPFP DDAFFFPPFVPVF^&G&&WЉV^F&F t=tv=uFP PPFP PPNu,FPzPFPP33PRPtFPVVRpFP^F&%?PV2S t&=t=t@FP5 PVO'FPVV u FPvP_^]U,VW.P\PPRPFV t^&33PRPP3P1PP=RP }!33PRPP DD~FPPFVPVF^&B&@VFFFFVVFF%FF0~9~FFBVFFVN}FPFލF6PP|FP:PPFP PP3VFVFFP PPnF^V |k rgF;Fs3^&FFF0~9~F09~ F FFPvPFPVPpFP PPFF)F^&FFFP~ }.FPPF;FsnF^V uFP PPFP PPF;FsLFPzPFPP33PRP_^]UFFFFF FF FP6WP6AFP6 93P6AP6W]U VW^&F&D;u;t^&F&Dv v 6 9^ &^&}-&G&GP&G&oZJ^ &9w~ &G;}v v P6Z^&w&+GP{^ &&W^&G &+H^ &^&H^ &+^&B&@VF&Nt }IN^& t7:uF N^&:tFF^&G F^F&1JF| ~^F^& t$:uFF^& F^F&1JN& }N^&?uF| ~F^&?uN^&J;t&JP6MFVVF^&@&B&G&o&W+ЉV‰F,F^&=u t= u=u$Ӄ>tvvWvF@vPWv6  ^&^ &;GFF,3FVVFrv v 3P6Z}^&vvWv^& ,F^&LFF&L)VF,FFFVVF^&vvWv3F^&F^&%1P6MFVVF t=t?=u^&vvWvF^&ݾFVVFg P6M^&vvWvF^&66M^FV&W;Fu ;Vu&GHPFHPWF+P}NNFVVF_^]UVW^&F&D;u;t^&F&D^ &GF&GF^& }&GP&GMZJ;v}v^&}&G&GP&G&oZJ;v}v^ &G;F&G;F^&G&;L}:v v 6 9^ F&GF&G&;F~&G;F~}>t3P6M^&L&GF&w^ &G^&+GP{FVF@FF)F^&wv &&+GP{FVF)FFF^&w^ &G^&+GP{FVFFF)F^&w^ &G^&+GP{FVF)FFFtv v P6ZFVPVF^&G FF^ &G+F3^&G&;L}&G&o&W+Љ3FL^ &+F3^&GFhF0^n^& FF^&@3+FFVn^& n^FV;F|;Vsڃn^^&^&nF^V | sӃn^& FF) n^&7n^&7n^&7n^FV;F|;Vs^^&n^& %09~n^&?09~n^&7nF^V | sn^& n^& n^&:FPV3+ЃV^F%09~n^&7VFFV~z/wɃF..F.. ^&G3N|FVhj~tv v 3P6Z_^]U3PqPDD]UVvF+F F;}FF F;}FFHF;~FF FHF;~FFPFPFPFP rFHFFHFF;F~FF;F~FF;F}FF;F}FF;FF;FFP6 9FPFPFPFP PV~t ~tu^]U VW^&G&+H&H&B&@VF&Nt }IN^& t7:uF N^&:tFF^&G F^F&1JF| ~^F^& t$:uFF^& F^F&1JN& }N^&?uF| ~F^&?uN^&J;t&JP6MFVVF^&@&B&GP&G..Z+ЉV‹,F^&= t=tL=uF3+FH..^&L,,F&L)VF,~FVVF^&vvF^&F^&%1P6MFVVFQ t=t;=u;^&vv6F^&ݾFVVF P6M^&vvF^&66M^FV&W;Fu,;Vu'6.V&G&+G ..&WRv&7O NNFVVFy_^]UVvF 3+FFV^&+G |&G&&+W ;^&G&+RDD^&G&W;Fu;Vu33PRPP6WP6A^&G&+G |$&G&+G P&G&Z;} vvh^FV&W&G&wvvF3P6AP6W33PRP^]UFV´VF^F&?un^&?"uN^&?"uN^&T]UVv ^&F&D;u;t^&F&DF =-u5=u=ub=u= u= u= %te=Su7=.u=1t= 2t.h=bu= ruU PPvvL PPvv4PPvv3PPGP  F4vPP^&|&svv3P6Pvv P tQ^&|&svvZP;Pvvd 3P6PvvO ZW^&|&s@~ Suvv'FV´VF^F&?u^&"u!&"u&G^&G"&GT^&u&w^FV&WVFv &GF u\N^&?uN^& t=t N }wN^&?uvvv vvvv EF^&?uF^& t=t!^&G&&WF F ;uF^&?uvvv vvvvU ^&u&w^FV&WVFVFN^&?uF^&?u^F&G^&َ‡&F@vP^F&G@vP3PPPP~ bu3PP ^F&G^&َ‡&f F = |^&|&sFV´VFF^&?uFV3+Ѓ | |v^&"t"& F^&"F^&"F^&^F &GF N F ^&?"uF ЉF FVPVF3^&G& Gu^F& t=t0^&G&&WF;u^&G"&"uv F+F vPvv u6^F&?uVFHvPvv4 ^&"&GT^F&?u^F&?uLF+F vPvvC t-^&G&+RDD^&"&GT<^F&?u^&G&&WF;u^&G"&"u^&G3^]UVW~ ^&u&w3^&F&D;u;t^&F&D^&GF&G&+G P+F&+G>.Z;}3=^&G &+HF.FF;~^&H&B&@VF&Nt }HN^& t6uF N^&:tFF^&G F^F&1JF| ~]F^& t#uFF^& F^F&1JN& }N^&?uF| ~F^&?uN^&J;t&JP6MFVVF^&@&B&GP&G..Z+ЉV‰F,F^&=ta t= t=u3F3+FH..^&L,,F&L)VF,FFFVVF^&vv߃F^&F^&%1P6MFVVFAރv7.!^&vvQ߃F^&݋F ;F}3FVVFFVVF P6M^&vvރF^&66MF ;F}FNNFVVFvvY^&Hvvvv ~|N^&^&F@vPF@vP6.WF+.PF+PvP ^&^&_^]˥ :!K!UVPv v vv" tNt3Pt!@PP P^&|u&r72PP PP^&G&&WR.P^&Du&F  &+FlPv v VPPKKv.K# +PPvvރ`3PPGP NF4vPP^&|&svv3P6Pvv ^]"""H#"H#"UVv }&uv v vv7ރ ^&GVv v vvw ^]UVW.P.PPP P6R3ƺ؋..ƺ؉ƺ؃t.PƺXF= |..>_^]UVWF VQPRFV uv DD P DD33YFVO^&@&BVF^&FFVVFvvv vv  V^؉^Vv DD>uFF;Fvn^& udNF;FvY^& uONF;FvD^& u:NF;Fv/^& u%FNF;Fv ^& tnF^F&L&LJH&LJJ&G&G&G&G &ƇN33FF ^F&F؃u.vx. *uuu uLuu8Nn^ ^& u&u^&G ;V p|;Fsi~ u~w ^F&G NN^&?uF3+F^&;W|&;Gs^&G&GF^&F^&F^&F^&G3FF ^&LFV &LRPv v)FV \F-LF DF;FrM^F&? u>F8v^F&-0؃wM.)@:4.("  1vu^&ƇN^&F^F&F=uf?1v3v~u^&ƇN^&Fl t =t =t@RM^&G& GuF3+F&G&W&G&GF VVF3FVVF FV ^F&FF;FsG^&G ;V p|;Fsi~ u~w ^F&G NN^&?uF3+F^&;W|&;Gs^&G&GF^&F^&F^&^&O| N^&?t^&G vv$P DD33PqPDD66׃>t3PPGP ^&D&F.&G&L&L.&G&G @..&G&G&G$ &O&&G(&O*&G &O"&G,!&O.&G0Y#&O2VF_^]@'F'L'R'X'^'d'j'p'v''''''''''''|''&F(F(F(F(F(F(F(F(&&'F(Z(F(F(F(F("'UVv~ |~v FF F VPPRFV uT!FV |% vF VPPRFVV DD P DD33TFPvPv vV  FV V DD~ .u~w&vv$IPP 33>utFVP^&@&BF&@&G&G&G LV ^&GPqPDD66Ճ>t3PPGP ^&D&F.&G.&G,&L&G.M&G&G$4&O&&G(&O*&G &O"&G,!&O.&G0Y#&O2VF^]UF& t,F,+FP6>t/, , ^Ƈ, +^Ƈ, nF~tEt=FF,,4^Ƈ,+^Ƈ,5 >.s]UVv16tP*DDt01PDDtPDDtEFPDDtPDDt23PDDtPDDt45PDDtPDDt67PyDD tPgDD t89PRDD6^]ULLVW~8F=u=u  = t8= tY=ti=u=u=u=ut 3PDD PDD3PDD3FP3PRW  FP3PRW  ~uPDDsF%?P)i _FP3PRW  |M vG~ u? t=t=t- PDDN 3PF- t FPDDFP3PRW  ~u v PDD3PDD_^]UhP P,P>tPDDC+PDD3P:DDʸ-]UVn tc^&N&L&;Vu"&;Tu&R&P&;Zu &;Xu^&V&T&L&N&Z&X&P&RW^v&D&9Nu"&9LuF&D&9Ru &9Pu^&G&L&N&G&P&R^&L&G &P&G&tQFVdVF^&GF&G&W&@&Bv&&G^&&G^&G&Ou^]UVW~.(;u~6.6.㋇3PR..Y[RP㉇3 u36.6.㋇3PR..Y[RP㉇3 t3㡒.)36.6.㋇3PR..Y[RP㉇3㡈.3㡚.)36.6.㋇3PR..Y[RP㉇3>.u㡊.+3㉇3㡘.3NN|_^]UVW>.\P6.6.3+.@.㋇z/㉇z/O=}.&㉇/N}_^]UVW. uv.ruuukt;yuEHud.KKw.GGGGWDDA.;u)6.6.z/PR..Y[RPz/ . ..36.6.0PR..Y[RP3 t33>.u >/:tW;DD>z/ty6.;63~63.H;63}636.;63~63.H;63}63WDD.;3~3.;3~3.;3}3.;3}%3 z/..33..33 _^]rrtvvvyyv`UVv v 6 9v v P^&`Z^&G&W+£.&G&W +£.&\.&^.&b.&F&D..&J&H..&N&L..&R&P..&Z&X..^ &G&..&G&W..FV4..FVfV F ^&GF FF^ &FVF ^ &FVF FF ^ F &.=t=t0FVfV F FfV 3+Ѓv&@&B^ &.F ^ &.F ^ &.F ^&`..FV |" vvv v 3PC FF .FV |" vvv v z/PC FF ^]U t3P^&`^&`DD]UVWv F =stF =t=t$=tuPvvz3Pvvd3^&G& Gt^FVdVF^&GF&G&W&@&B~&&G^&&G^&G&Ot u{3d^&@& BtNFVdVF&@F&G^&^&G^&G^&B&@&W&G&G{3_^]UVWv ^&G& Gt3^&@& Bt3* P.P^&G@P^~&E&9Nu#&9LuF&E&9Ru &9Pu j^&N&L&;Vu#&;Tu&R&P&;Zu &;Xu }PPv VPPPKKv.I VvvvFVdVF^&GF&G&W&@&B~&&G^&&G^&G&OtuLFVdVF^&@F&G^&^&G^&G^&B&@&W&G&G{_^]ˉ C U]UFP3PRv  ~~3.F.>.tFFأ.FPFR[Y+SQ(..FPFR[Y+SQ(..F򙣦..F..F]UVW~PW OFPPPPcPWRFFPPFPFPPW 5F@FFPR3ҸHY[RPFPR3Ҹ8cY[RPF RPƙPFRY[RPFRP..3ҸdRP..ƙRP..3ҸdRP..PW O_^]UVW~W:DDFV)FV F VnPRFV uW DD P DD33^&LJf&LJhFVlVF3PWvv vvv vW  FV W DDF V^&^&?t&t\PP@FV^&G&G F^&^&FFN}^&vv$3PP  }P DD33W;.DD>uPPP"FF F6N}fPFPFP  ~ vv$ P DD33; t3Pv nlv^&G&G&G&LJ@&LJB.&\.&^.&b..&D&F..&H&J..&L&N&T&V..&P&R&X&ZF&`&G&G&L&G&P&G&G&G&G&G &G$&O&&G(%&O*&G U&O"&G,&O.&G0U &O2VF_^]UVv P6.6.|F؉V&..P6.6.cP.P3PRV  .P3PRV  .P3PRV  ..FV | v3PvvV  .FV | vz/PvvV  >.u3P3PRcP^& 3z.P3PRV   u >.t6DD6aDD.P3P6Z3PPDD3P3PRcP^& ^]UFV..3Pv v ~DDRP PPDD6 "6"6 ....>u.....>t +..>u>..>t +..>u>....H.H..PP6Zʸ9]U(FVVFF FF FF FFFFFFFPFP>FPFP6= ]U3DPRFvPPFV;F u;V u3PPRFvPP ]UVv^F V &WVF&G*&W(VF33PRvvP3PPRF vPP FnF^V | s^F V &WVF&G2&W0VF/3PRvvP3PPRvvP FnF^V | s^F V &W VF&G6&W4VF uZ^&GP&GRY[FVvv^F &v PPvv^F &Gv PP3"PRvvP3PPRvvP tZ^&GP&GRY[FVvv^F &v PPvv^F &Gv PPF"nF^V ~| r^F V &WVF&G:&W8VF u-^&GP&GRY[RP^F &v PP3PRvvP3PPRvvP t-^&GP&GRY[RP^F &v PPFnF^V ~Z| rQP^&w>&wuPPP^&G&G&G&G3Pvv^&G &G&G&G&G$\ &O&&G( &O*&G  &O"&G,^ &O.&G01 &O2VF_^]U]U]UV~ uY^v&D&9Fu"&9DuF&D&9Ju &9Hu^&G&D&F&G&H&J[^&P3&+L&;Fu&;Du&Ju &Htn^&P3&+L&D&F&LJH&LJJ^&F&D^&G &J&H^&G^]U.3PRF3-3RP... ڸ3]UVWv v 6 9v v P6ZF3^^&N&LVFVF&P3+FFV&G&W +‹&F&D;Ft ;Vt&G^ &^&+GFFVVF^ &G&+FFF^&;Pv&R&PVF^ &HNF^&;LrFF^&7FF^&PZ+™^PR&J&HY[^&FF9Fu2~4u+vv]FV^&&&&GFF;Fstn^&G&W+‹&F&D^ &H+ƙPRVFY[RPF^&F&D^ &G@+ƙPRVFY[RPF^&L;Fv&N&LVF^&P;Fr&R&PVFvv^F3&+L&FP&D[RP^&F^&PZ+™^PR&J&HY[^&FF9Fu2~4u+vvFV^&&&&GFF;FsCvvv v 3P6Z_^]U]U^r&@&w&w `PR^&B]UF =1u=t(=u=t1= 2t?=su=tuPvv3Pvv3>u vvTrvvF3bvv0rvv"3>vv 3-Pvv3Pvvp3]U V^&G&WVFFFF}^N3 PRvv0^&nF^V t(3 PRvvFV u N^& nF^V u w^&@u&BRP `PRFV8^&B=t =t=tFrF0 FaFF PPvv ^v&D&9Fu#&9DuF&D&9Ju &9Hu ^&P3&+L&;Fu&;Du&Ju &Hu ^&@t ^&@t PPv v PPPHH؃v.'Pvv{PvvbqPvvO^PvvAKvvrvv)vvrvvr vva^]ˊ""U]U VvF VTPRFV uV DD P DD33^&W&GFVTVFVVVF&P&Rvvv vV  V DD>u PPP^&u/&?u(&G ^&G&GF2FVVFz^&u'&?u!^&G2&GF"FVVFH^&G&%=Nu2JOu,&G^&G&GFN^&&F;Fw^FV&L&N&G &G&G&G&LJH&LJJ&G &P3+F&D&F&F&D^&G &G$W&O&&G(&O*&G &O"&G,&O.&G09&O2vv!VF^]UFV11. .... z0]UFz/F|/F V 11. .... z0]UFz/F|/F ~/..... ^ |0&^~0&^0&^0&z0]UFz/F|/F ~/F /F/F/F/F/F/F/F/F/F/F /F&/F(/F$V"11..... ^*|0&^.~0&^20&^60&^:0&^>0&z0]UFz/F|/..... z0]UFz/F V11.4.... z0]UFV11.6.... ^ |0&^~0&^0&^0&z0]UFz/F|/F ~/F /F/F/F/F/F/.3. ... z0]UF z/FV11.2.... z0]UFz/.5.... z0]UFV11F V 11.Z.... ^|0&z0]EںdsExUFz/F|/F ~/F /F/F/F/F/.I.... z0]U.M.... ^|0&^ ~0&^0&^0&z0]U.O.... ^|0&^ ~0&^0&^0&z0]UFz/F V11.N.... z0]UFz/F|/F ~/F /F/F/F/F/.J.... z0]UFz/F V11.#.... z0]UF z/F |/F~/F/F/F/F/F/FV11./.... z0]UF z/F |/F~/F/F/F/FV11.*.... z0]UF z/F |/F~/F/FV11.+.... z0]UF z/FV11.,.... ^ |0&^~0&z0]UFV11F z/.r.... z0]UFz/F |/...F. ^ |0&~0&G0&Gz0]UFV..FV..Fz/F V ln.m..F. l3n]UFV..FV..Fz/^&|/&G~/F V ln.y..F. l3n]UF Vln.r..F. l3n]UF V..FV ...n..F. ]UFz/...F. z0]UFz/...F. z0]UFz/...F. z0]UFz/F |/.'..F. ^ z0&^|0&]UFz/.j..F. z0]UFz/...F. z0]UFz/.k..F. ^ 0&^0&^0&^0&z0]UFz/. ..F. z0]UFz/F V ln...F. l3n]UFz/^ &|/&G~/&G/...F. ]U...F. ]UF3F 3.i..F. ^ z0&^|0&]UF V ln.F..F. l3n]UFz/F|/F ~/F /F/F/.l.... ^|0&^~0&^0&^0&z0]UFz/.f.... z0]UFz/F|/F ~/F /F/.d.... z0]UFz/.g.... z0]UFz/F|/.j.... z0]UFz/F|/.h.... F FVF^&_|0&^ w:.F^&_~0&F^&_0&F^&_0&z0]pppppppUFz/F|/F ~/F /F/.e.... z0]UFz/F|/F FV^Kv.F^&G~/vF^&G&W~//^F^&G~/F^&G/F^&G/F^&G/$F^&G&W~//F^&G/.i.... z0]=MMe=====UFz/.k.... z0]UFV11.P.... z0]UFz/^F VVF^F&^F& u...F3+FH.F. ]UFVlnFz/^^F &F^F&F^F&F^F&F^F&FF VVF^F&^F& u...F3+F.F. l3n]U...F. ]UF3F 3Fz/^FV VF^F&^F& u..F3+F H.F. ]UF3F 3F33Fz/^FV VF^F&F^F&F^F&^F& u. . .F3+F @.F. ]UFz/F V prF V Ztv.f..F. pz0rt0v]. .... z0U.e..F. ]U...F. ]UFVhjFVprFVZtv.d.. ^ &. hz/jpz0rt0v^ .&]UFVhjFVprFVZtv...g^ &. hz/jpz0rt0v^ .&]˸UFz/.w..F. z0]UFz/.x..F. ]44P4PP 4%UFF4F5F 44G4P4PP >4t 4^&?t\^&G3]UF44>4P4PP >4t 43]UF4F5F 44<4P4PP >4t 44]UF4F5F =44P4PP >4t 44]UVvFF~ |~v4n^ F4FF F 4F5644?4P4PP >4t 4:4FVVF 3ɻF V~ ~mu ~vbVF^]UF4F4F 4F B44P4PP >4t 4 434]UVvFF~ |~v4n^ F4FF F 4F5644@4P4PP >4t 4:4FVVF 3ɻF V~ ~mu ~vbVF^]UVF44H4P4PP >4t343]44H4P4PP 43ұUF44I4P4PP >4t 43]4/4P4PP 44UF4F5F 44N4P4PP >4t 43]4O4P4PP >4t 434b4P4PP 43UF4F544P4PP ]U...F. ^z0&^ |0&^0&^0&0&G0&G0&G0&G^0&0&G0&G]UFz/^F VVF^F&^F& uFV tv.t.F3+FH.F. t0v][1][Keine weiteren Fenster|vorhanden! Abhilfe durch|Schlieen eines Fensters.][ OK ][1][1STGUIDE-Warnung:|Die Gerteausgabe funktioniert|nur, wenn Sie ein GDOS im|AUTO-Ordner installiert haben.][ Aha ]*.*1STGUIDE[3][Keine weiteren Fenster|vorhanden!|Wollen Sie das|Ausgangsfenster|berladen ?][berladen|Abbrechen]..\1stGuide: Datei(en) berneudumpenladen [1][Um Dateien auf ein Gert|ausgeben zu knnen, mu ein|Spooler-Accessory namens| installiert werden.][CHMELEON.AC*Install.|Abbrechen] Aha ]1stGuide: Datei(en) spoolen[1][1STGUIDE-Warnung:|Der Spooler-Puffer ist voll.][ Aha ][1][1STGUIDE-Warnung:|Fehler beim ffnen des|Ausgabegertes.|Ausgabe wird abgebrochen|und Spooler-Puffer geleert.][ Oh jeh ][1][1st Guide:| |""| |nicht gefunden][ OK ] 1st Guide E E* E- E E E)V EY E* Eq E E E E E E  E E E E E E E E E E E E E E E E E EE E E)EdE;;QRB> E>2'R> <EXE E  E  tE E # E EE#E E E E #E!E )E '$ 2E #8E !E )E  E !E $"## #BE!HE%&# &BE$HE(. )E-*,#+ME,SE )YE.E'/1#0`E1SE .eEM3L> 746#:5kE6|E3E(<8;#:9E:E ;E" 78E. @=?#:>E?E<E(ATEBpE ECD#DE BE IFH# GEHE EEJ0E K E LE( 2E :N3E O9E  PAE QDE$ RRA1QST ATLE R ZE R ZE [1][1STGUIDE-Warnung:|Ausgabe von XXX-Dateien|wird noch nicht untersttzt.][ Na sowas ]21Gertenummer: __99 ABBRUCH D. AUSGABE MIT L.SHIFT-R.SHIFT 00Linker Rand: __ ZeichenSEITENVORSCHUB NACH DATEI:QUALITT:X-SKALIERUNG:Y-SKALIERUNG:HORIZONTALE AUSRICHTUNG:VERTIKALE AUSRICHTUNG:CALCLOCK ________ xxxxxxxxTEXT-FONTEINSTELLUNG:IMAGE-DITHERFARBEN:__________________________________________________________PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP1STGUIDE: Ausgabe-Konfiguration Digital Design, Apr 06 1993Allgemeine Parameter...TextJaNeinnormalDraftLetterMetaGrepassendOriginalImagePixel 1:1BruchGanzLinksMitteRechtsObenUntenStandard-AusgabeFensterGertControl-P-AusgabeInternExtern:Doppelklick-StandardNeues FensterberschreibenNormalber VA_FILEkeine2 (S/W)8Indexdatei:Sound-Parameter...Gerte-Parameter...LadenSichernOKAbbruchMEM: XXXXXX KTOT: XXXXXX KIMGIFFRSCGEMSAMSND[2][1STGUIDE:|Wollen Sie die Ausgabe|wirklich abbrechen und den|Spooler-Puffer leeren?][Abbruch|Weiter]1STGUIDE.AC*APPPRGGTP1stGuide: Programm finden[1][|Voreinstellungen|sichern?][ OK |Abbruch][1][|Zuletzt gesicherte|Einstellungen laden?][ OK |Abbruch]1stGuide: Indexdatei whlenX(U&mW CALCLOCKD:\1STGUIDE\1STGUIDE.IDXSeite XXXAbbruch nicht mglich!&E  Drucke[1][|Kein Clipboard-Pfad gesetzt.][Abbruch]XXXXX *XXXXX Pixel---- XX Ebenen ---- Sichern (XIMG) ^X Original-Pal. ^E Standard-Pal. ^S=3?1)&*% 784;" , .>0<2+$ ('5:69! /# -MMM  :ErE6ExE tEME~E E aE  -- ^++ ^ Transparent ^K--- Farbpalette ---CMAPXIMG XXXXXXXX-Font ^E---XXXXX Zeilen --- >> OUT-Datei ^X EEEEEEE E,E--- System-Font --- Norm (10 Pt) ^N Mittel (9 Pt) ^M Klein (8 Pt) ^K-------------------Wl.DMP.OUT.TXTVA_FILE [1][|Nichts zu dumpen.][ OK ] Fenster ^E Original ^S PEjEdEhE.E mE  }E- Mastab / Seite -1 ^ -+ ^---- XX Bume ---- Ix86 -> M68k ^K M68k -> Ix86 ^K rERE.EXE ^E E<< ^>> ^-- Konvertieren ----- Hertz --- Fenster ^E Original ^S Norm ^N DMA ^M   tEEEEE EE E  E   E- ^+ ^----- P L A Y ----- STOP ^T !!!!! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ###.Ez/E3Ez0E0E.E.Ez/Ez0E1E3EMZ@>0jrrrr rrrrrprSrLr$rrrrrorrWrrr}rrrrrbrr r r rl rX r6 r r r\ r- r r r r r r r r~ r0 r rrrrryrOrHr(r!rrrrIr"rrr1rr r r r r r{ rg rY r? r, r% r r r r r r r r ry rW r: r r rMr rrrrhr rrrrr|rrrMrr]rrrrrrr~rcr.rrrrrr|r[rEr2rrrrrrrrkrRrDr0r#rrrr`r<rrrrrvrQr!rrrrrrrrr}rnrUrEr.rrrrrgrUr=rrrrrhrQrDr:r!rr#r_#r"rX"r r'r&r%r%r%r^%rD%r%r%r$r$r$r$r$r$rz$rf$rV$rA$r1$r+r+r+rr+rd+rP+r +r+r*r*r*ru*ri*r5*r.*r)r)r)rS(rF(r(r(r/r/r2/r /r.r.r.r.r.rp.r^.rG.r?.r0.r.r-r-r-r-rm-r[-r[,r;,rkkkkk}kdkJk9k kkkkkkkkykgkSk&kkkkkkvkQkCk0kkkkkkkkkkrkUkCk(kkkkkkk|kakHk,kkkkkkkqk_kKk-kkkkkkkrk[k=k&k kkkkkkwk]kLk1kkk k k k kk kP k/ kc kH k- k k k# kkik?k k k k k k k k{ k=t=\=D======l=T=$= =====d==================l=h=d=P=L=H=4=0=,============= =| =L =4 = = = = = = =t =D =, = = = = =l =T =< =$ ====|=d=4=====, = = = = = =l =T =< =$ = = = = =IwIjIbIQI;I+II IIIFIIIIIInI`I<IIIIIIIqIxIWI7IIIItIVIII I I Il II I5 I I I Ir Ia I IIIB=*t`B*m[OA.]C7)lSoh   _ @ (      ] O < .       S )  ]t9   ~ j xA)xjq<vynYya#""o"h"C"<"!!!!}!o!V!7! ''''n'F'''&&% %$$$k$(v(b(J(//~/w/]/V/.....q.]. . .-----l-a-<-,,0 0==n=V=>=&====    u S     _  v ` D !  k   y g W B 8 #     2 #      r \ R <        b J -  B t g O >     K )      a 4  @ _  {   ` 2     |     %      T       ` & # # " " v" R" $" ! #! z & $ $ k$ `$ K$ + v+ f+ + * * * * * * p* ^* N) )) ) ) p/ )/ . . m. M, H=:="= ======      _ X       M I 9 %               o  S  4      l  ;  i  R   r      r L       r  c  O  ?      X  M  :        y n N *  ===|=d=L=4=   ~ j M 7 "    q j M 7 "     n     r _    ^     x h S =  y         b               ===~=f=N=PI|fH2 lS[ o rgTH=0========p====7, O\gYhy %  v ,-4HE><4i78M===========T/.@[c_ O==. W$`*90?4'82:-=.@(D3F.I-N5Q>U Y.[/_Ub*jCm4q;t5xK+3g(oK$(*YO2-/-13x<l02##"9 %(&*+,j4=.0!.,ڣ{yu. >sNjعRs>RG;syډy+؎JW!_ҋ>R3.7+3<ؾ ..r.6q6o6m6k6i-rP8<ؾ .P.ULF!-5!Y[5!]_5!ac5!eg%ʎں,!%Y!%]!%a!%e!˴׋;t?t 8gwgӃ;t ?.t&_&Wô@!ù;.PU> uFV113]U 1 uvY]UVWF@+6y?;6uFVH>y;v+yV6yX YYu Ʊ裔붡y3_^]UVFr VFw vvN u3]UN^0FVFrVFv"VFvv u܋VF]UVF FuY^&G;Ft^&?|N&Gu&GV;Fu5&9W u/^&&GV;Fu&9W u&G &W&W &GPN^&G&@&+&V&G &W&W &GPR&GPo;t^&Gu &OU3^]UVW3F^^&GtvvYYGFN u܋_^]UVW^&?} &G&@ ^&3+‹^&G@tC^&G&W VF&?}% N^&? uGN u^F&? uGN u_^]UvvYY te~u^&?~vvK)F V ^&g_&&G &W&W &Gvv v &GPD u =u3]U^&GPUYFV^&?}vvFVvv)FVVF]U~|~sVF؃VF]ˠP3 Y u&Pt3P33PRP P3 Y u&Pt3P33PRP UVW~v^&G;Fu v>Pu~uP>Nu ~uN^&?tP33PRvv  ^&Gt&w &wYY^&g&GFV&W&G &W &Gt_ v[ F F uVYF V t ^&O1^F V &W &G&W&G &wu&O3_^]UVWvvYYv v YY;vvvVFvPv v ^&VF_^]UVvvYY@FV։VFN^&:F uVF N u33^]UP33PRvD ]UVWF @=s3^&tv v vv ^で&F VVFF FzN^F&F< u ^& F^F&FrV3+Ѓ |IurArV3+ЃVPv ;t sXF +FLNrFV~tsrV3+Ѓ v'VrPv ;t s몋F +F _^]UVF^^&Gt vvYYNF u^]UVWUv+ &Fu+t-uE&F9w/0r*t ᗇ⒗&F9w0sM|؃]_^]Uvv~YY]UF~]UFP8 YYFPv v vv ]UVWv4tv\LT| tU!]VvDv DDD d | TL\tPPX_^]UVv |X~W6TV؋#T6}^]UD^!%]U^で&BF ^N V!rP]U"VW~ ^$w\rWFN }~t &-G؃v+6F +6F uNN6, s:FV F _^]U~ uFF3RPv vv PaPV]Uvvv v vPaP9]Uvvv v v~ u3PaP]UVW~v NsڋVF_^]UW~N F t Is_]UF Pv vvVF]UVWN ^ VF s3v~ N tNOtI++s_^]Uvvvv v  VF]UVv&F&D&T&\^]UJ^F!rSPX]UVW~2u~ +tIs_^]UVv^ t :t"t:t"t:t "u33FD^]UVW3~ 2ыvD&]+Î_^]UVW~ 2~VF_^]UVWv~ 3عza& tt:r:w, :r:w :t+Î_^]UW~3;Fu;t H_]UVv ,A<waD"u^]UVW~ F2+ًˋvD&]2+Î_^]UVW~ 2^+ǎ~VF_^]UVWv~ N3غza$& t:r:w, :r:w :t+_^]UVW^ & uVFR~3ч~ 3Au;s 3ێû IuH_^]UVv ,a<wAD"u^]U^&tP33PRvD @^N V!rP^く&XP].;`t7ڎ>t.b8.;`t.b3P.f#.`.`.b.d.fR3PXXÎ.;`t.&>u&[&Ў&>u& &Q&؃>tá&&;t&.d.d.d t 66&.dUVW.fV t.;bu.f_^]P.f3PPH[[%t+3.fPR0[[XP3ۊܱ.fSP[[[=t.`.bډ3P3ۊܱ.fSP[[[=t.b.bډ3Ë)ڣۉU3ҋF UVFVW.f t^rAu; .` t .d tڎ9s;uGv3wH.f_^]S.6hV.6jVr[[ u[SJ t7@@3ʁvv.f ZZZ.;btDNj+&6&P&ю&>t&>&>ZZָS&S3PZZZU3UV F ^VW.f.h.j t2 t4 &;rwӸLRPH SPP3__.f_^]Vt^YQ3YQYQYQUVWF V ^N u ti teu y ؃ y ۃ W33;r w;r+@[tƋt؃_^]t3[Ssـ ˀ3[Ssـ ˀ } у/sЊ% } у+s2+ӊЊ%UVWv~ _^]QЊŊYˊ%;u;.6>y2&@Ň֓6sFF>{ru2nP@%+r\QI2ً݇ËCwrBw< t< t< u2 tB uC2I,"t"<\u<"uI Y.Cۋ+r.vV6 t3FF.6>66imk&U>tIr$d$F  FF x PP6 ]Un$&6&4VFVF6p$6n$&_(6p$6n$FV;p$u';n$u!n$p$C^&6&4VF^&6&4;p$u;n$uԋFV&4&6n$p$]Up$n$VF t1n$&;r$u!n$&6&4n$p$;Fu;Vu3]UVp$n$´VFPRn$&4u&^&x"tp$n$4VFPRn$&G+f$>+}3FvPPn$&7^]UVn$&G RP&GPR3ҸY[\RPvn$&;Gt&GPP&7^]UVn$&GRP&G PR3ҸY[\RPvn$&;Gt&GP P&7^]UVWn$&G&&~&wƙRPǙPR3ҸY[\RPvPPn$&7n$&G&& ~&w ƙRPǙPR3ҸY[\RPvPPn$&7_^]UP3PP6p$6n$n$&_0 n$&G&WPRPPPP&w&w&w&wP3P b]Un$6p$Pn$6p$Pn$6p$Pn$6p$P6666PP b]Un$6p$Pn$6p$Pn$6p$Pn$6p$PPn$&7x]UV~ un$&G&W;u ;u3PPP P Pv6r$x t6 H H^]U P|DD u33PRP HH;~;~;};}; ~ ; ~ ;};}; |!; | P6p$6n$n$&_$ PDD u33PRP ]Un$&G&W&G&W]Un$&G&G &G&&)G &G&&)G]UA6666P6r$ ]UVn$&G&WVF&G&WVF~t&G&&G &G&&G6n$6n$&D&p$&G&)G &DVR&o[&Gn$&G &;G}&G &G }&Gn$6n$&D&p$&G&)G&DVR&o[&Gn$&G&;G }&G&G }&G n$&G&W;Fu;Vu&G&W;Fu;Vt-K~uO  n$&&G&W&G&W PP6 ^]UPPPPP3PxHHPPPP6@P6HPPP bFV\RPP+XPRVFY[\RPvP\RPTPRVFY[\RPvTFV^RPR+ZPRVFY[\RPvR^RPVPRVFY[\RPvVXZ\^6@P6HPPm ]Ua.6666v v vv66666r$  n$&G&G+3P6r$$GP]ULL3PRgP\PP @RPI FPgPP 3PRgP\PP @RPI F]U:VW~uRF |r$B~PPIyPP=uI[F~CF^n$46p$Pvv p$n$4VF^&F~u6N^&?un F vP^&GVvR ^&:tG^F&?uNN^&?\uPPvv uF^&:uFF3-^&G Pn$@@6p$PF@@vP^ F ^&Fvvvv vvvv ^F&?uN uFVVډF&?tb\Pvv FV t^&:uFvvP$\PP @FVvvvv ^&?uzIPFP ~tPFPt ~u PFPt FP u~u 6r$ qDDI33PRP  u\PP @FV'P PI tcI^&?t)'P PPI t PDD t(33PRP ~u 6r$ qDDI\: Pvv 8 6 VF PI tI u~ PGIp$n$VFvvvPk n$p$n$ p$uF Ft=^&6&4n$&4&6^p$n$&4&6&G&Wn$n$p$n$&4&6RP&W&G~FvPn$6p$P PF4vPn$46p$P^ F4V3+Ѓn$&4~uA:Pn$6p$P ؎& PF@@vPn$@@6p$P^ p$n$´VF^F&?uN^&"uNN^&?"uN^&:F^& Fvvvv <~un$46p$Pvvn$6p$P n$&Ƈ4~tO^&G&Wn$&W&G^&G&Wn$&W&GFVn$p$&3PDD9F Ftn$f$&Gb$&Gf$Fn$&;G~&Gb$Fn$&;G~&Gn$X\&+GF&;G};X} XF\&Gn$F&Gn$&gZ^&+GF&;G};Z} ZF^&Gn$F&Gn$S&G[&n$&G&)G S&G[R&o[&Gn$S&G[&n$&G&)GS&G[R&o[&Gvvv v lF uR_^]UVW3n$ p$un$&?tp$n$VF3F^&6&4VF;p$u;n$u(n$&;>u&;<t^Qr$n$& }PP5Nu(3PPPPn$&6&4n$p$Nu_^]U6r$jDD66663PPPP3P6r$&GPl6r$ qDD]U(FFFFFPFP PP6 $]UVvn$&)w }&w &G u33PRP  PDD uƙn$P&GRY[\FV; ~ ; ~ ;};}; |d+  |W;V|9u;Fr2  F)H P6p$6n$n$&_$ P$DD tR33PRP ^]UVWvn$&G&w &W +‹ }& }&G 33PRP  PDD uƙn$P&GRY[\FV; ~ ; ~ ;};}; |d+  |W;V|9u;Fr2  F )@  P6p$6n$n$&_$ PDD tR33PRP _^]UVvn$&)w}&w&G u33PRP M PDD uƙn$P&GRY[\FV; ~ ; ~ ;};}+  |b; |Yƙ;V|9u;Fr2  F)rH P6p$6n$n$&_$ PDD tP33PRP ^]UVWvn$&G &w&W+‹ }&}&G33PRP  PDDD uƙn$P&GRY[\FV; ~ ; ~ ;};}+  |b; |Yƙ;V|9u;Fr2  F )3@  P6p$6n$n$&_$ PyDD tP33PRP _^]UVvn$&+w } PDD ~V/DD^]UVvn$&+w} PNDD ~VqDD^]UPP P PP6r$xPPPPP6r$x +=}r ;uin$+&9G~X+&9G~KPPPPP6r$x666 6 6666%6666666 6 ]UVP|P dPPdP|P |P |`vvP P d  PPV C P|P dP|Pt sP|Pt P }\PP @FVdPvv Pvvt 'P PPI uw}}P|Pt |PP=th: Pvv  G  PPV %P|Pt |PP^]UFVVډF&?tb\Pvv FV t^&:uFvvP$\PP @FVvvvv ^&?uIP u\PP @FV'P PI u: Pvv  ^&?u~H PPPZЁrPPGPPH Pt RPt  PI u: Pvv 낚I]U@V>H u>tf㍆26N<2džFdžHPP2P @@l$h$>PPH 3^]Uj$PFPFPP F%]U  uPPF FtW^&?tN Pvv FV t ^&FvvUFVVF t,^&?u!Q t 6j$ kDD P]UVWI u33PRP 3Pn$46p$P  }#33PRP PDDe.Pn$46p$P RPPt 3PP })VDD33PRP PDDPV33PRFV3PV3PRvvFV u?FV |=vvvFVFFFFVvvvvV FV |% vvvvvW ;Vu;FtЍV;Fu;VtvvWDDVDD33PRP _^]Uj$%=u^&?uFt^33PRvvPPPPv j$% P]Ur$P P3Px u=Huj=u0=u>=u=ue=u=uZR=!u=u= uL5=Gu=7Gu"=Pta-=4Ku=It]=Ku=Mu=6Mu=0Ru=QtH=Ru=audPDDPDDn$&G&HPDDn$&G&HPDDPDDP)DDn$&G&HPDDn$&G&HPDDu3P-DDin$&wDDX3P:DDLn$&w )DD;3PP)PPon$&r$^n$ p$u PDDn$46p$Pj$% = u332t LЃ6j$ kDDn$&4u33PRPRPPPPPPN|@u4n$&6&4;p$u;n$t Pn$&ğ4&7@6j$66p$6n$n$&_  t!>.u66j$GP݃]UVWv >}3 ;t3PPGP܃TF FtZ^&?tQ Pvv FV t ^&FVvvD3FVVF t3^&?u( u$x t 6j$ kDD3PP_^]UV ;t3PPGP܃^&?u 33PRtP3PPPPPP33PRP 3PtP  }!33PRP PDDSzjPIjPI=t=tojPI33PRP P|P Pvv|P P|Pt |PP|FVjPI^F&u&;<t?n$&&6&4n$p$Nu^]Ur$ڋ uZv.a)u )du(u )uuGutGuHGu%Gu~vr.Q)PDD^P"DDQn$&G&HPDD9n$&G&HPDD!P#DDPDDDn$&G&HPDDn$&G&HPDDn$&4t>4u33PRPRPPPPPP$ P6r$n$&G%&Gh0PDDW3PRn$&GPRY[\RPvPDD#3PRn$&G PRY[\RPvPDDV6666A j$% = u330t66zw3P66#cP66NP66X$P -d$r$ tP666p$6n$n$&_0 ]&'&&G'_'-':'w''~''&+('''UVW~tin$& n$&Gb$+‹&G&&GǙRPǙPRY[\RPv9>b$~>b$+n$&Gb$gn$& n$&Gf$+‹&G&&G ǙRPǙPRY[\RPv9>f$~>f$+n$&Gf$33PRP PDD PFPFPFP v~t;)~}F;v}vƙRPFn$P&GRY[\RPvP9)~}F;v}vƙRPFn$P&G RY[\RPvPDD PPPPFPFP3PP3PRPPPPPPPvvPvPPP<u=PDD33PRP ~t PPPP3PPP_^]UVFPPj$PFPFPFP3PdP P3PPPPPPPPPPPPP6<PDDt<t< PPPPPP3PP P3PPPPPPPPPPPPP!P<uuvv tr$  u~uvn$&G&G;F PDDn$&G&G;F 3PDDn$&Gf$;F~&G;F~xvv6p$6n$n$&_,]n$F&+G|PF&+G&;G}CF&+G|:F&+G&;G}-j$t334Pvv6p$6n$n$&_0 t)6j$YkDD>H u6 DD&3PDD^]UVWv=ub$Pf$PPP `$ F6O}FxP PFP xPP6 FxPPP3P6 @3P6 8A:3PPPPt PP H n$p$33PRP x t% PDD6j$ kDD3PDDj$% = u330u1N3PPl3PF^&w&7NuO  uPP3NPF^&w&7Nu2n$ p$u>H u6 DD 3_^]UV3Pvv  }PDD33#~uv v V** .Pvv FV uF@vPFVPvv  u VE.DDPvv  u V"-DDPvv  uv v V  mPvv  uv v V  HPvv  tPvv  uv v V8 v v V1$ ^]UVFЩuFPP=u03PIDD>6 |66 DD6 8 H &>6 |c66 t$DD u66 DD6 >8 u PH P FV^&FvvH P  PH P FV^&F>8 t?'Px$PH PI t#PDDvvH P Uvv@Pvv\PH P @FVPR$PZ[CRS FV$Pvv x$PGI8 .Pvv FV ukF@vPFVPvv  u-H P.>8 tvvH P j_Pvv  uX3PH P 6 }-PDD>8 tvvH P 66 H P Pvv  tEPvv  t.Pvv  tPvv  uFPvv\ P : PP>8 tvvH P XN3PH P 6 }+PDD>8 tvvH P  ]/ t$v$^&G ^]U0VPvv > t\Pvv @FVfPvv 'PFPvvI u4sPF vP 'PFPvvI uwPF vP 'PFPvvI u{PF vP 'PFPvvI u^&3PRvvPI Pa r3PRvvPI ud'PFPvvI tP7\Pvv @FVFPvv  Pvv  }P3PV6*6(;*u7;(u1FP3PRV  uFV;*u;(t PDD{ vvP ~ tPP=uC3PV6*6(~ t(P3PRV(P3PRV VDD^]UV VFEFVF N 3 PRvv0^ &Nt(3 PRvvvFV u N ^ & N^]UFFFF&u&V&PIƺ؁0N}% = u330t; 6  v N 9 6  v N L6 6 RP6 6 'RP F&&WdPFP R \&&WtP\P  P&w&76<  P &w&76> 05PCDD29P6DD4>P)DD6CPDD8FPDD@ PDDBPDDDPDDFPDDH"PDDJ%PDDL*PDDN/PDDFPFPFPFPP3PxFPFPFPFP&Pvvvv3PPPPP3F&^uP&PFFvP vvvvPVvv WvvuPvv&P VDD=Mu=t+=Iti=Ktf=Nu=Ou=PuK,P+Nj666 6 6 6v6 6N 66\PP  Pa r tP\P 3FPdP \PtP &w&7 < &w&7 >5PDD09PDD2>PDD4CPDD6FPDD8 PDD@PuDDBPhDDDP[DDF"PNDDH%PADDJ*P4DDL/P'DDNNuP\Pvvvv3PPPPP_^]UP^&w33PRFVP^&w33PR+FVFV3P^&wvvvv^&&W uMFV |!=vvv^&&WFFFV ^&&G^&G&&W&G &GV&&&W&G]UFV |!=vvv^&&WFFFV ^&&G^&G&&W&G &G&V&W&G]UV^v&3&+GFVF&G &W&&G&G&;v7&w&7vv&w ;V|;Fs^&G&&W&G^]UV^&G&;wt&G &W&&G&G3&+FV  u wX^&w&7vv&w ^&W&؋v&\&T^&G&;w^&G&7&&^]UV^&G&;w v v^&G&7&V&^]U^&G V ;Fu&9Wt^&w &w^&wDD]UV FVv v *vvv vv*^]UV FVvv*%vv*^]U]U>tv vv&_$]U>tvv&_(]U>t&_,PDD]UVv VvvN}^]U"^&^ &^&F^ &F nF^V | s]UF Fu^&G&$$$$&GH$&$$&GH$&G$$&G&W$$$$$$$P$P$P$PP3Px$$$$$03PR$P$P 3PR$P$P $P$P$PP6 $]UVv 33PRP F Fu PPV  tprvv }3FV։XZ>uPP FPFPFPFPPFP;FPFPFPFPP3PxvvvvP3PP  33PR33PRP ^]UV%^&F^v&&GF&Fn F ^ V | s^]UVW~: t3PRvv^&7F^S&[&G^&7Fn F ^ V | s_^]UVWv~ Nƻ 0^&Ot ƙ u N^& O_^]U  t7~t>|u3P6 ||u3P6 ]U~t3P6>~t3P6 F~]UЍxVFPR ty^&?tpF^^F&^F& uN^&\t&\F^&SF^&CF^&RF^&AF^&PF^&PP3]UVv tNƺ^&G u:Pƺ^&G 5P66663PVvv^]U VWF ^؋F &+GPF ^&GZ+ЉV;F~F^&GFFFH+ ~)vF ^؋F&+GPF ^&GZ+ЉV;F~F^&GFFFH+ ~)v^F@&GF@&G33PRP FPuF ^&G % uF ^&_ &6666P3Pvv^ uF ^&_ & FPFPFPF P vPDDvv P3Pvv }3Vvv33PRP FPF PVvvFPPPPFPF P3PP3PRPPPPPƺ^&wƺ^&wvv t3PvPPP<33PRP Vvv=uPDDƺ^&G u;v u3 t%VvvOt3P2P33PR33PRP ~tFPPPP3PPP_^]UV3zPR^&PR3ҸVY[\^P&GRPR3ҸY[\[Yv&DQSPR3ҸY[\[Yځ =SQv^]UFFFPP6 _FPFP3PP6 [F]UvvP6 UPP6 _F V PPPP6 $]UVvj$t;vu;6.~*^]UVvj$uuF;6.~+^]UVFFF"FFF$ VЈVF$ЈVF$ЈV^F,nF-FFF }FfF }F0fF }F fF }FfF }FfF }F0fF }F fF }F^F$N|"F^$F^㋇$^㉇&ff^v$&n}F>} HFFF;F|;F~FFF.>. ^v6 =]F.;FsF^F+^F*N}^]U VW^&TuFVXVF^F&?t^&G;}&G3PFP3PV6   vvV6 U^F&F^F&F^F&FF;|^&T_^]UVW~ ǻH3WV V^ ؉^V~tvv33PR^&PR3ҸY[\RPvFF3PR^&PR3ҸY[\RPvFF3PR^&PR3ҸY[\RPvFFFP3PRv F;1_^]UVWFVXVF^&F^&G;}&G3ƺVvR3PV6   F;|33PRP PF4vP  }!33PRP PDD^&O&Tu?&TuF FPVFV%PRFP3PRV ,|=s%VDD33PRP PDDP3PRFPI ~APtw~CMtmvv9~}FPV3Pu 3PVPR@RPFvPIFvP3PRV vvWVP @RPFvPI?PV33PRFVvvFV u%VDD33PRP  PDD3PV3PRvvvvV FV3PV3PR^&TuF FFVVF;F|:;Vv3vvVDD33PRP PDDaP3PRFFvPI ^^&G&W %VFP3PRFFvPI ^^&HDtC&?BMt9P3PRFvPI ^&G&WP3PRFvPI vvvvV Ǚ^&&WP3PRvvI #P3PRV vv3PRV vvWV3P 3PRvv욂I^&GFV &G3PRvv욂I@RPFvPIvv3PRV (P3PRV FvP3PRV vvWVP @RPFvPIFFvPFV+VFPRV vv^&TVDD33PRP _^]Uvvv v ^&GP&GRY[\^P&G RY[\FVvv^&&W u & ~^ &G&^&&Gv^ &w&7^&w&7^ ^& tvv&w&7Iv v vv6 4 ^ & tvv&w&7I^&G&^ &;Gu&;t^&w&7]UnVWFFF^&G$^PRv &&+G[YډNʉ^^&G $^ P&G^&+GR[YډNΉ^^ &G&+^̋NډN҉^ԋ^ &G&+G^ЋNډN։^^&DFV&FFV&VF ~(NVF$FVNVF$FV~},NًVFEFVNًVFEFVFV;Fu;Vwn^FVV҉FԋFV;Fu;Vwn^FVV։F؋FʉFFΉFF҉FF։F^ &G&V‰F&F+FF&GF+FF&G;F &G;F~`^ &G;F&;FF@&^ &G;F&G;FF@&Gv v 6 0F;F} F;F} ~t^&JtF@vPFP^&JtFF&LuT>| vv6FPFPF@vPFPP6 *>}< vv, FPF@vPFPP6 $ ^&JuF@vPFPFPF@vP~TF)FFF@F~}#FV+@FhFV+@FOFNV+@FHFЋV#)V!~FNV+@FHnЋV#)V!~FF~t6$PFRY[\PFRY[\RPFV uPP6 :P6 8FP6 03P6 8P6 :| ^&HFV&FPRVFY[\FVFPFPFVVFFVVF~|F؉FNVF$FVN^VЋFΚ\VPFʱENZVNtF,^FVVFFFFVVFFFFFFVV F FF~^ &FF ^^&^ &FF ^^& б^ &FF ^^&^ &FF ^^& ^&FOuNttNtT6NtF,^FVVF33҉VމFVډF܋FVVFFFFFFVV F FF~^ &FF ^^&F^ &FF ^^&F^^&^&^ &FF ^^&F^ &FF ^^&Fڋ^^&F^& F&F^ &FF ^^&F^ &FF ^^&F^^&^&^ &FF ^^&F^ &FF ^^&Fڋ^^&F^& F&FOtNtNtFVVFFFFFFVV F FF~3^ F &?}^ F &?}@^ F &?} ^ F &?}^ F &?}^ F &?}^ F &?}^ F &?}^ F &?}ƀ^ F &?}@^ F &?} ^ F &?}^ F &?}^ F &?}^ F &?}FF^ F &?}F^&7FOtNtNtd~uxN^VЋFΚ\VPFʱEZVFVVFFFFFFVV F FF~^ &^&F FOuNuNuVЋFΊNEPRVFY[\VPFʱENEZVNtF$^FVVFFFFFFVVFFF~FV׉V F ^&^&^&F&^ &FF OOuЋF V VFnuNtyNtF&^FVVFFFFFFVVFFFFVV F ~^&^&G&^&&GFFOOuӋ~^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF FOOuntNNt..FFVVFFFFFFVVFFFFVV F ~^F& } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&Ft ~^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF FOOt5ntNtF3+FRPvvIFVVFFFFVVFFVVFFPFP6 4 FF~uN>| vv.FPFPFPFPP6 *>|.vvFPFPFPP6 $vv_^]UVW~ }%FPPFPFP FF FF ^&&wF&V&Vw+.GFGFGFGFGFGF^&G+& &G+&w&&G)F F ~ ~ ~ ~ &w &G)F F ~ ~ ~ v ~~+~ ^&9 }& }3+v ^&9w}&w }3^&&w xryr_^]UF =-u =tc=t{=st=tt*^&V|P3PPvv| 3u^&VP3PPvvU 3N^&Tu vv31^&Tt vv3vvs3]UVW~ v ^&Tt3:^&Tt<>^&V3"^&V|3 0F^^&V} -&*V^&V~ +&V^&F^&F^&FPP^&w(IPP^&w(IPP^&w(IP^&Tt#(PP P PVWPPIHH؃wJ.2PVWvv .PVWvv} vv, vv_^]++++U]UbVWF FF %FF %FƙPFRY[\FԉV֋ƙPFRY[\FЉV҃~~FF~|+ЉVދF;F} 8F t~}F~uFFPRVҋFY[\F̉VθNF@@F܋FމF tFFރ~t fރ~tfދFh3FVRPFV uvDD PDD33hFޙ^֋NSQFV u*vvvDD PDD33>u PPI^F&GF &GF &G~t FƉF FVXVFVV܉VFFVVԉVFN~uF~ }vv3PRv ^&MGt&?XItvv3PRv 3PRvvIFvvcV^؉^Vvv3PRv 3PRvvI^؃v.-vv1VvRvvuvvVvRvvMvv߃Pvv^X&uvvV^؉^V^&}^&FF^&}^&FF^&}^&FދF;FF3PvFRPFFP3PRv ?|=s8vvvvvDDPDD33N P3PRFPI ~DYu ~BOu4~APt~CMt^&FFFP3PRv vv$߃V^؉^V33PRFPR3ҸY[\RPv^&F33PRFPR3ҸY[\RPv^&F33PRFPR3ҸY[\RPv^&n^؃v. -vvރVvRvv݃vvqރVvRvv݃vv܃Pvv;ރ^X&uvv#ރV^؉^V^&}^&FF^&}^&FF^&}^&nFȃ^V | vFދF;FFPvFʋVȃ%PRI^؃v.,FuDFVvRFVvRF%XPn܃N}*XPP6 UPP6 _PP6 UrFu@FVvRFVvRF%XPۃN}*XPP6 UPP6 _PP6 UFt^^& F%XPڃ^^&N}FtF^&&GFV^؉^VF%XF^^&}^&FF^&}^&FF^&}^&N|y^F&T&LJVFV&@&B&LJJ~|&J^F&LF&HFV&D&F&W&G&G&G &G&G&G&G&G$ &O&&G(B&O*&G &O"&G,&O.&G0B&O2FFFPIv3Pvvꚦ FFFVVFFVVFF F~uFPIF t =uFPIF tXFVVFFFFPI^&FN}FF^&^&FFN}NFPI=tFPIFFPIFFPI^&FN}~}FVVFF~}Nf^F&Fnu~~uFPI^&F`FPIF |$FPI^&FFȈF }(FPIF^F&FFF ~F;FsQF %FF;Fs+FFڋFVVFvދ^؃v.,F3FFVVF^F&t ~fvF;Fr^&A&^&&GFnF uFNuMF3FFVVF^F&t ~fvF;FrFV׉VF^&^&FF^&^&FF^&^&FFnF uFNttF3FFVVF^F&t ~fvF;Fr^&^&FnF uFNufFNtFFFVVFFF^&^& FFnuƉF)FF;FrF;F|v FFVVF^&?FFFF;F}^&#?^&?FF;F|كnuF%F^F3FFVVF^F&t ~fvF;Fr^&^F&: ^F&nF unFFNuAF%F^FFFFVVF^F&tF FfvF;FrFVVʉVFF^&FF^F&:F~F^F&:F~F^F&:F~FʋFVVFfʋF uFF^F&FFNuK~ptEfʊF } ^F&FFfʊF } ^F&FFfʊF } ^F&nF tnFFNtF܋F;F u#FPIvvVFF;F}_^])c))J**o+$$$&&%d%"""##4#& & P !x U(VvFP3 PRV ~RMu~FOu~BMu~ILtVDDPDD33FP3PRV !|=sVDDPDD33~HDu~BMt=P3PRFPI PVFދV܃%PR{FP3PRV 3PRFPI3PFPvvFPV ^]UFP3PRv 3PRFPIvvvvvv ]UVFF>FtD3Pvv  }PDDHFP3PRV VDD3Pvv]I3>FuxH Jt*FH>l$@PFZFFH>h$@PFZFBl$RPFPFRY[\RPvFh$RPFPFRY[\RPvFF>Lt +FF>Lu~F>Nt +FF>Nu~FHFFHFFP6N6L6J6HVvv6 6 DD6YDD3P3PR]I^]UVFPFFvP6 4 360^F&?u6.9v}v^]UVW~FPF F v P6 4 F V VF360^F&?u6.9vv v Wv6  FW0uPPV/0;F|v v Wv6  "PP0Pv v Wv6 _^]Uv6 F`0P.PFPPv6 Ib>0t30P6 DFPP6 4 F0FPP6 4 0+F3+.]UV^&D;F u &F;F uv v ?^b`&D&F&|&s ^.&L(^v&L&F&L&L.0&L^&G&&G 0&G&G&&G0&G3PrDD^]UVv ^&G8&GP&Ghvvvvv Vvv >0t30P6 D>`tP6 FFPFPPP +P6 Iƺ^&Gƺ^&w&w ^&GPƺX&GPƺ^X&G+FP^&w6  F=}p>`t6`6 FFPPPP6b6 I3^]UVWv~ }@3t/v v PIv v t01PIt/v v PIv v tEFPIt/v v PIv v t23PIt/v v PIv v t45PIt/v v PIv v t67PI t/v v PIv v t89PI_^]UVWv.P\PP RP FV t^&33PRP 3Pv v Pt RPF }"33PRP FPDDAFFFPIFVPVF^&G&&WЉV^F&F t=tv=uFP PIFP PINu,FPtIFPI33PRP tFPVVRpFP^F&%?PV2S t&=t=t@FP5 PVO'FPVV u FPvI_^]U,VW.P\PP RP FV t^&33PRP P3PPPt RP }!33PRP PDD~FPIFVPVF^&B&@VFFFFVVFF%FF0~9~FFBVFEFVN}FPFލF6PI|FP:PIFP PI3VFVFFP PInF^V |k rgF;Fs3^&FFF0~9~F09~ F FFPvIFPVIpFP PIFF)F^&FFFP~ }.FPIF;FsnF^V uFP PIFP PIF;FsLFPtIFPI33PRP _^]UFFFFF FF FP6 NP6 8FP6 03P6 8P6 N]U VW^&F&D;bu;`t^&F&Dv v 6 0^ &^&}-&G&GP&G&oZJ^ &9w~ &G;}v v P6 Q^&w&+GP\ ^ &&W^&G &+H^ &^&H^ &+^&B&@VF&Nt }IN^& t7:uF N^&:tFF^&G F^F&1JF| ~^F^& t$:uFF^& F^F&1JN& }N^&?uF| ~F^&?uN^&J;0t&J0P6 DFVVF^&@&B&G&o&W+ЉV‰F.F^&=u t= u=u$Ӄ>0tvvWvF@vPWv6  ^&^ &;GFF.3FVVFrv v 3P6 Q}^&vvWv^& .F^&LFF&L)VF.FFFVVF^&vvWv3F^&F^&%100P6 DFVVF t=t?=u^&vvWvF^&ݾFVVFg P6 D^&vvWvF^&606 D^FV&W;Fu ;Vu&GHPFHPWF+P}NNFVVF_^]UVW^&F&D;bu;`t^&F&D^ &GF&GF^& }&GP&GMZJ;v}v^&}&G&GP&G&oZJ;v}v^ &G;F&G;F^&G&;L}:v v 6 0^ F&GF&G&;F~&G;F~}>0t30P6 D^&L&GF&w^ &G^&+GP\ FVF@FF)F^&wv &&+GP\ FVF)FFF^&w^ &G^&+GP\ FVFFF)F^&w^ &G^&+GP\ FVF)FFFtv v P6 QFVPVF^&G FF^ &G+F6^&G&;L}&G&o&W+Љ6FL^ &+F6^&GFF2^n^& FF^&@3+FFVn^& n^FV;F|;Vsڃn^^&^&nF^V | sӃn^& FF) n^&7n^&7n^&7n^FV;F|;Vs^^&n^& %09~n^&?09~n^&7nF^V | sn^& n^& n^&:FPV3+ЃV^F%09~n^&7VFEFV~V2wɃF11F1 1 ^&G6N|FV~tv v 3P6 Q_^]U3PkIDD]UVvF+F F;}FF F;}FFHF;~FF FHF;~FFPFPFPFP rFHFFHFF;F~FF;F~FF;F}FF;F}FF;FF;FFP6 0FPFPFPFP PVx~t ~tu^]U VW^&G&+H&H&B&@VF&Nt }IN^& t7:uF N^&:tFF^&G F^F&1JF| ~^F^& t$:uFF^& F^F&1JN& }N^&?uF| ~F^&?uN^&J;0t&J0P6 DFVVF^&@&B&GP&G.0Z+ЉV‹.F^&= t=tL=uF3+FH.0^&L..F&L)VF.~FVVF^&vvF^&F^&%100P6 DFVVFQ t=t;=u;^&vv6F^&ݾFVVF P6 D^&vvF^&606 D^FV&W;Fu,;Vu'60V&G&+G .0&WRv&7O NNFVVFy_^]UVvF 3+FFV^&+G |&G&&+W ;^&G&+RrDD^&G&W;Fu;Vu33PRP P6 NP6 8^&G&+G |$&G&+G P&G&Z;} vvh^FV&W&G&wvvF3P6 8P6 N33PRP ^]UFV´VF^F&?un^&?"uN^&?"uN^&Rr]UVv ^&F&D;bu;`t^&F&DF =-u5=u=ub=u= u= u= %te=Su7=.u=1t= 2t.h=bu= ruU PPvvL PPvv4PPvv3PPGP r F4vPP ^&|&svv3PPvv I tQ^&|&svvZPPvvd 3PPvvO ZW^&|&s@~ Suvv'FV´VF^F&?u^&"u!&"u&G^&G"&GRr^&u&w^FV&WVFv &GF u\N^&?uN^& t=t N }wN^&?uvvv vvvv EF^&?uF^& t=t!^&G&&WF F ;uF^&?uvvv vvvvU ^&u&w^FV&WVFVFN^&?uF^&?u^F&G^&َ‡&F@vP^F&G@vP3PPPP~ bu3PP r^F&G^&َ‡&f F = |^&|&sFV´VFF^&?uFV3+Ѓ | |v^&"t"& F^&"F^&"F^&^F &GF N F ^&?"uF ЉF FVPVF3^&G& Gu^F& t=t0^&G&&WF;u^&G"&"uv F+F vPvv6 u6^F&?uVFHvPvv4 ^&"&GRr^F&?u^F&?uLF+F vPvvz t-^&G&+RrDD^&"&GRr<^F&?u^&G&&WF;u^&G"&"u^&G3^]UVW~ ^&u&w3^&F&D;bu;`t^&F&D^&GF&G&+G P+F&+G>0Z;}3=^&G &+HF0FF;~^&H&B&@VF&Nt }HN^& t6uF N^&:tFF^&G F^F&1JF| ~]F^& t#uFF^& F^F&1JN& }N^&?uF| ~F^&?uN^&J;0t&J0P6 DFVVF^&@&B&GP&G.0Z+ЉV‰F.F^&=ta t= t=u3F3+FH.0^&L..F&L)VF.FFFVVF^&vv߃F^&F^&%100P6 DFVVFAރv7.!^&vvQ߃F^&݋F ;F}3FVVFFVVF P6 D^&vvރF^&606 DF ;F}FNNFVVFvvY^&Hvvvv ~|N^&^&F@vPF@vP60WF+0PF+PvP r^&^&_^]˟ 4!E!UVPv v vv" tNt3PtX$P4P P^&|u&rP^P PMP^&G&&WR(I^&Du&F  &+FfPv v VlPIKKv.E# +PPvvރ`3PPGP rNF4vPP ^&|&svv3PPvv ^]"""B#"B#"UVv }&uv v vv7ރ ^&GVVv v vvw ^]UVW0P0PlPP P6 Il3ƺ؋.0ƺ؉~ƺ؃t0PƺXF= |.0>_^]UVWF VQPRFV uvDD PDD33YFVO^&@&BVF^&FFVVFvvv vv V^؉^VvDD>luFF;Fvn^& udNF;FvY^& uONF;FvD^& u:NF;Fv/^& u%FNF;Fv ^& tnF^F&L&LJH&LJJ&G&G&G&G &ƇN33FF ^F&F؃u.vx.*uuu uLuu8Nn^ ^& u&u^&G ;V p|;Fsi~ u~w ^F&G NN^&?uF3+F^&;W|&;Gs^&G&GF^&F^&F^&F^&G3FF ^&LFV &LRPv v)FV \F-LF DF;FrM^F&? u>F8v^F&-0؃wM.)@:4.("  1vu^&ƇN^&F^F&F=uf?1v3v~u^&ƇN^&Fl t =t =t@RM^&G& GuF3+F&G&W&G&GF VVF3FVVF FV ^F&FF;FsG^&G ;V p|;Fsi~ u~w ^F&G NN^&?uF3+F^&;W|&;Gs^&G&GF^&F^&F^&^&O| N^&?t^&G vvPDD33PkIDD6b6`׃>6t3PPGP r^b`&D&F0&G&L&L0&G&G @.0&GV&G&G$ &O&&G(&O*&G &O"&G,!&O.&G0S#&O2VF_^]:'@'F'L'R'X'^'d'j'p''''''''''''v'|'&@(@(@(@(@(@(@(@(&&'@(T(@(@(@(@('UVv~ |~v FF F VPPRFV uTFV |% vF VPPRFVVDD PDD33TFPvPv vV FV VDD~ .u~w&vvPP33>lutFVP^&@&BF&@&G&G&G LV E^&GPkIDD6b6`Ճ>6t3PPGP r^b`&D&F0&G0&G.&LV&G0M&G&G$.&O&&G(&O*&G &O"&G,!&O.&G0S#&O2VF^]UFF& tFH/H>FH/+FP6 >Dt/F/ G/ ^ƇH/ +^ƇH/ nF>D~tE.t=FF>DF/G/4^ƇH/+^ƇH/5 >F0sF]UVv16..tP*DDt01PDD.tPDDtEFPDD.tPDDt23PDD.tPDDt45PDD.tPDDt67PyDD. tPgDD t89PRDD6.^]ULLVW~8F=u=u  = t8= tY=ti=u=u=u=ut 3PDD PDD3PDD3FP3PRW FP3PRW ~uPDDsF%?P)i _FP3PRW |M vG~ u? t=t=t- PDDN 3PF- t FPDDFP3PRW ~u v@ PDD3PDD_^]UhP P.P >BtPDDC+BPDD3P:DDʸ-]UVn tc^&N&L&;Vu"&;Tu&R&P&;Zu &;Xu^&V&T&L&N&Z&X&P&RW^v&D&9Nu"&9LuF&D&9Ru &9Pu^&G&L&N&G&P&R^&L&G &P&G&tQFVdVF^&GF&G&W&@&Bv&&G^&&G^&G&Our^]UVW~1(;u~6161㋇6PR11Y[\RPv㉇6 u66060㋇6PR00Y[\RPv㉇6 t60)66161㋇6PR11Y[\RPv㉇6060)66060㋇6PR00Y[\RPv㉇6>1u0+6㉇606NN|_^]UVW>1\P6161 3+1@1㋇V2㉇V2O=}1&㉇`2N}_^]UVW1 uv.ruuukt;yuEHud1KKw.GGGGWDDA1;u)6060V2PR00Y[\RPvV2 1 11660603PR00Y[\RPv6 t63>1u >b2:tW;DD>V2ty60;66~661H;66}6660;66~660H;66}66WDD0;6~60;6~60;6}60;6}%6 V200660066 _^]llnpppsspZUVv v 6 0v v P^&`Q^&G&W+£0&G&W +£0&\0&^0&b1&F&D11&J&H00&N&L11&R&P00&Z&X00^ &G&00&G&W00FV411FVfV F ^&GF FF^ &FVF ^ &FVF FF ^ F &1=t=t0FVfV F FfV 3+Ѓv&@&B^ &1F ^ &1F ^ &1F ^&`11FV |" vvv v 6P^ FF 1FV |" vvv v V2P^ FF ^]U  t3P^&` ^&` DD]UVWv F =stF =t=t$=tuPvvz3Pvvd3^&G& Gt^FVdVF^&GF&G&W&@&B~&&G^&&G^&G&Ot uyr3d^&@& BtNFVdVF&@F&G^&^&G^&G^&B&@&W&G&Gyr3_^]UVWv ^&G& Gt3x`^&@& Bt3 P 1P^&G@P ^~&E&9Nu#&9LuF&E&9Ru &9Pu ^&N&L&;Vu#&;Tu&R&P&;Zu &;Xu  P Pv VPPIKKv.C VvvvFVdVF^&GF&G&W&@&B~&&G^&&G^&G&OtuLFVdVF^&@F&G^&^&G^&G^&B&@&W&G&Gyr_^]˃ = U]UFP3PRv ~~31F0>1tFFأ0FPFR[Y+SQ11FPFR[Y+SQ00F11F00F]UVW~PWFFPPPPcPW IFFPPFPFPPW ,F@FFPR3ҸHY[\RPFPR3Ҹ8cY[\RPvF RPƙPFRY[\RPvFRP113Ҹd\RPv11ƙRP003Ҹd\RPv00PWF_^]UVW~W:DDFV)FV F VnPRFV uWDD PDD33^&LJf&LJhFVlVF3PWvvvvv vW FV WDDF V^&^&?t&t\PP @FV^&G&G F^&^&FFN}^&vv3PP  }PDD33WE.DD>uPPI`$FF F6N}fPFPFP ~ vv PDD33;  t3Pvnlv^&G&G&G&LJ@&LJB0&\0&^1&b11&D&F00&H&J11&L&N&T&V00&P&R&X&ZF&`&G&G&L&G&P&G&G&G&G&G &G$&O&&G(&O*&G O&O"&G,&O.&G0O &O2VF_^]UVv P6161 F؉V&11P6161]I1P3PRV 1P3PRV 1P3PRV 11FV | v6PvvV 1FV | vV2PvvV >1u3P3PR]I^& 3z1P3PRV  u >1t6 DD6YDD0P3P6Q3PIDD3P3PR]I^& ^]UFV113Pv v ~DDRPPIDD6h$6l$6 0000>Du11000>Lt +10>Lu>00>Nt +00>Nu>0100H0H00PP6Qʸ3]U(FVVFF FF FF FFFFFFFPFPFPFP6 4 ]U3DPRFvPIFV;F u;V u3PPRFvPI ]UVv^F V &WVF&G*&W(VF33PRvvI3PPRF vPI FnF^V | s^F V &WVF&G2&W0VF/3PRvvI3PPRvvI FnF^V | s^F V &W VF&G6&W4VF uZ^&GP&GRY[\EFVvv^F &v PIvv^F &Gv PI3"PRvvI3PPRvvI tZ^&GP&GRY[\EFVvv^F &v PIvv^F &Gv PIF"nF^V ~| r^F V &WVF&G:&W8VF u-^&GP&GRY[\RP^F &v PI3PRvvI3PPRvvI t-^&GP&GRY[\RP^F &v PIFnF^V ~Z| rQP^&w>&w(u(P(PI^&G&G&G&G3Pvv^&G &G&G&G&G$f &O&&G( &O*&G  &O"&G,h &O.&G0; &O2VF_^]U]U]UV~ uY^v&D&9Fu"&9DuF&D&9Ju &9Hu^&G&D&F&G&H&J[^&P3&+L&;Fu&;Du&Ju &Htn^&P3&+L&D&F&LJH&LJJ^&F&DE^&G &J&HE^&Gr^]U13PRF3-6RPv11 1 ڸ6]UVWv v 6 0v v P6 QF6^^&N&LVFVF&P3+FFV&G&W +‹&F&D;Ft ;Vt&G^ &^&+GFFVVF^ &G&+FFF^&;Pv&R&PVF^ &HNF^&;LrFF^&7FF^&PZ+™^PR&J&HY[\E^&FF9Fu2~7u+vv]FV^&&&&GFF;Fstn^&G&W+‹&F&D^ &H+ƙPRVFY[\RPvF^&F&D^ &G@+ƙPRVFY[\RPvF^&L;Fv&N&LVF^&P;Fr&R&PVFvv^F3&+L&FP&D[\RPv^&F^&PZ+™^PR&J&HY[\E^&FF9Fu2~7u+vvFV^&&&&GFF;FsCvvv v 3P6 Q_^]U]U^&@&w&w `PRv^&B]UF =1u=t(=u=t1= 2t?=su=tuPvv3Pvv3>,u vvTvvF3bvv0vv"3>vv 3-Pvv3Pvvp3]U V^&G&WVFFFF^N3 PRvv0^&nF^V t(3 PRvvvFV u N^& nF^V u w^&@u&BRP `PRvFV8^&B=t =t=tFrF0 FaFF PPvv6 ^v&D&9Fu#&9DuF&D&9Ju &9Hu ^&P3&+L&;Fu&;Du&Ju &Hu !^&@t 4^&@t ? P Pv v PJPIHH؃v.!Pvv{PvvbqPvvO^PvvAKvvvv)vvvvr vva^]˄U]U VvF VTPRFV uVDD PDD33^.,&W&GFVTVFVVVF&P&Rvvv vV VDD>JuJ PJPI^&u/&?u(&G ^&G&GF2FVVFz^&u'&?u!^&G2&GF"FVVFH^&G&%=Nu2JOu,&G^&G&GFN^&&F;Fw^FV&L&N&G &G&G&G&LJH&LJJ&G &P3+F&D&F&F&DE^&G &G$Q&O&&G(z&O*&G &O"&G,&O.&G03&O2vv!VF^]11111V3UFV441 1111V3]UFV2FX2F V 441 1111V3]UFV2FX2F Z211111^ X3&^Z3&^\3&^^3&V3]UFV2FX2F Z2F \2F^2F`2Fb2Fd2Ff2Fh2Fj2Fl2Fn2F p2F&r2F(t2F$V"4411111^*X3&^.Z3&^2\3&^6^3&^:`3&^>b3&V3]UFV2FX211111V3]UFV2F V44141111V3]UFV44161111^ X3&^Z3&^\3&^^3&V3]UFV2FX2F Z2F \2F^2F`2Fb2Fd2Ff2131 111V3]UF V2FV44121111V3]UFV2151111V3]UFV44F V 441Z1111^X3&V3]=ںs=UFV2FX2F Z2F \2F^2F`2Fb2Fd21I1111V3]U1M1111^X3&^ Z3&^\3&^^3&V3]U1O1111^X3&^ Z3&^\3&^^3&V3]UFV2F V441N1111V3]UFV2FX2F Z2F \2F^2F`2Fb2Fd21J1111V3]UF V2F X2FZ2F\2F^2F`2Fb2Fd2FV441/1111V3]UF V2F X2FZ2F\2F^2F`2FV441*1111V3]UF V2F X2FZ2F\2FV441+1111V3]UF V2FV441,1111^ X3&^Z3&V3]UFV44F V21r1111V3]UFV2F X2111F1 ^ X3&Z3&G\3&GV3]UFV11FV11FV2F V 1m11F1 6]UFV11FV11FV2^&X2&GZ2F V 1y11F1 6]UF V1r11F1 6]UF V11FV 111n11F1 ]UFV2111F1 V3]UFV2111F1 V3]UFV2111F1 V3]UFV2F X21'11F1 ^ V3&^X3&]UFV21j11F1 V3]UFV2111F1 V3]UFV21k11F1 ^ 3&^3&^3&^3&V3]UFV21 11F1 V3]UFV2F V 111F1 6]UFV2^ &X2&GZ2&G\2111F1 ]U111F1 ]UF6F 61i11F1 ^ V3&^X3&]UF V 1F11F1 6]UFV2FX2F Z2F \2F^2F`21l1111^X3&^Z3&^\3&^^3&V3]UFV21f1111V3]UFV2FX2F Z2F \2F^21d1111V3]UFV21g1111V3]UFV2FX21j1111V3]UFV2FX21h1111F FVF^&_X3&^ w:.F^&_Z3&F^&_\3&F^&_^3&V3]cccccccUFV2FX2F Z2F \2F^21e1111V3]UFV2FX2F FV^Kv.F^&GZ2vF^&G&WZ2\2^F^&GZ2F^&G\2F^&G^2F^&G`2$F^&G&WZ2\2F^&G^21i1111V3]0@@X00000UFV21k1111V3]UFV441P1111V3]UFV2^F VVF^F&^F& u111F3+FH1F1 ]UFVFV2^^F &F^F&F^F&F^F&F^F&FF VVF^F&^F& u111F3+F1F1 6]U111F1 ]UF6F 6FV2^FV VF^F&^F& u11F3+F H1F1 ]UF6F 6F66FV2^FV VF^F&F^F&F^F&^F& u1 1 1F3+F @1F1 ]UFV2F V F V Z1f11F1 V33]1 1111V3U1e11F1 ]U111F1 ]UFVFVFVZ1d11 ^ &1 V2V33^ 1&]UFVFVFVZ111g^ &1 V2V33^ 1&]˸UFV21w11F1 V3]UFV21x11F1 ]77P7PP 7%UFF7F7F 77G7P7PP >7t 7^&?t\^&G3]UF77>7P7PP >7t 73]UF7F7F 77<7P7PP >7t 77]UF7F7F =77P7PP >7t 77]UVvFF~ |~v7n^ F7FF F 7F7677?7P7PP >7t 7:7FVVF 3ɻeF V~ ~mu ~vbVF^]UF7F7F 7F B77P7PP >7t 7 737]UVvFF~ |~v7n^ F7FF F 7F7677@7P7PP >7t 7:7FVVF 3ɻeF V~ ~mu ~vbVF^]UVFE77H7P7PP >7t373]77H7P7PP 73ұ$UF77I7P7PP >7t 73]7/7P7PP 77UF7F7F 77N7P7PP >7t 73]7O7P7PP >7t 737b7P7PP 73UF7F777P7PP ]U111F1 ^V3&^ X3&^3&^3&3&G3&G3&G3&G^3&3&G3&G]UFV2^F VVF^F&^F& uFV 1t1F3+FH1F1 3]Turbo C++ - Copyright 1990 Borland Intl.Divide error Abnormal program termination [1][Keine weiteren Fenster|vorhanden! Abhilfe durch|Schlieen eines Fensters.][ OK ][1][1STGUIDE-Warnung:|Die Gerteausgabe funktioniert|nur, wenn Sie ein GDOS im|AUTO-Ordner installiert haben.][ Aha ]*.*1STGUIDE[3][Keine weiteren Fenster|vorhanden!|Wollen Sie das|Ausgangsfenster|berladen ?][berladen|Abbrechen]..\1stGuide: Datei(en) berneudumpenladen [1][Um Dateien auf ein Gert|ausgeben zu knnen, mu ein|Spooler-Accessory namens| installiert werden.][CHMELEON.AC*Install.|Abbrechen] Aha ]1stGuide: Datei(en) spoolen[1][1STGUIDE-Warnung:|Der Spooler-Puffer ist voll.][ Aha ][1][1STGUIDE-Warnung:|Fehler beim ffnen des|Ausgabegertes.|Ausgabe wird abgebrochen|und Spooler-Puffer geleert.][ Oh jeh ][1][1st Guide:| |""| |nicht gefunden][ OK ] = = = = = =) = = = = = = = = = = = ="= = =0= = =I= = =`=i=t= }= = == = ===;;QRB> =>2'R> == [=  s=  = = # x= {=*=#== = = #== = '$ = #= = =  F= !b= $"## #=!=%&# &=$=(. )~=-*,#+=,= )=.='/1#0=1= .=M3L> 746#:5=6=3=(<8;#:9=:= ;!=" 7=. @=?#:>)=?>=<L=(A=B= ECD#DZ= Ba= IFH# Gn=Ht= E|=J0~= K= L=( 2 = :N= O=  P= Q=$ RRA1QST AT= R = R = [1][1STGUIDE-Warnung:|Ausgabe von XXX-Dateien|wird noch nicht untersttzt.][ Na sowas ]21Gertenummer: __99 ABBRUCH D. AUSGABE MIT L.SHIFT-R.SHIFT 00Linker Rand: __ ZeichenSEITENVORSCHUB NACH DATEI:QUALITT:X-SKALIERUNG:Y-SKALIERUNG:HORIZONTALE AUSRICHTUNG:VERTIKALE AUSRICHTUNG:CALCLOCK ________ xxxxxxxxTEXT-FONTEINSTELLUNG:IMAGE-DITHERFARBEN:__________________________________________________________PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP1STGUIDE: Ausgabe-Konfiguration Digital Design, Apr 06 1993Allgemeine Parameter...TextJaNeinnormalDraftLetterMetaGrepassendOriginalImagePixel 1:1BruchGanzLinksMitteRechtsObenUntenStandard-AusgabeFensterGertControl-P-AusgabeInternExtern:Doppelklick-StandardNeues FensterberschreibenNormalber VA_FILEkeine2 (S/W)8Indexdatei:Sound-Parameter...Gerte-Parameter...LadenSichernOKAbbruchMEM: XXXXXX KTOT: XXXXXX KIMGIFFRSCGEMSAMSND[2][1STGUIDE:|Wollen Sie die Ausgabe|wirklich abbrechen und den|Spooler-Puffer leeren?][Abbruch|Weiter]1STGUIDE.AC*APPPRGGTP1stGuide: Programm finden[1][|Voreinstellungen|sichern?][ OK |Abbruch][1][|Zuletzt gesicherte|Einstellungen laden?][ OK |Abbruch]1stGuide: Indexdatei whlen)X(U&mW CALCLOCKD:\1STGUIDE\1STGUIDE.IDXSeite XXXAbbruch nicht mglich!&=  Drucke[1][|Kein Clipboard-Pfad gesetzt.][Abbruch]XXXXX *XXXXX Pixel---- XX Ebenen ---- Sichern (XIMG) ^X Original-Pal. ^E Standard-Pal. ^S=3?1)&*% 784;" , .>0<2+$ ('5:69! /# -MMM  ==== === = =  -- ^++ ^ Transparent ^K--- Farbpalette ---CMAPXIMG XXXXXXXX-Font ^E---XXXXX Zeilen --- >> OUT-Datei ^X J=^=q===2=E= Y=H/=--- System-Font --- Norm (10 Pt) ^N Mittel (9 Pt) ^M Klein (8 Pt) ^K-------------------Wl.DMP.OUT.TXTVA_FILE [1][|Nichts zu dumpen.][ OK ] Fenster ^E Original ^S ==== 1= =  =- Mastab / Seite -1 ^ -+ ^---- XX Bume ---- Ix86 -> M68k ^K M68k -> Ix86 ^K ==1== = =<< ^>> ^-- Konvertieren ----- Hertz --- Fenster ^E Original ^S Norm ^N DMA ^M   ==R==W= !=\= 4=  ?=   p=- ^+ ^----- P L A Y ----- STOP ^T !!!!! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 777  CB"6J^r   ###1=V2=6=V3=3=1=1=V2=V3=4=6=MZq9 >0jr &ooAooooo}ovo5oooooooaooToooojo<oo1owo!o o o o o ox oq oa oO o; o o o o o o o o om o^ oM o2 o o o o ov oY oB o7 oooofo_o?o8oooooxoWooo ot o[ oC o4 o- o oookooyo<oyoLoo<oooooo}okoJo4o!oooooooqoZoAo3ooooooOo+ooooooooo|olo]oDo4ooooo|oVoDo,oooaoWo@o3o)ooooooo~omoRooo'oooooooeo@oo#o#o6#o"oz"oS"oF"o!oz o o'o'o'o'o'o'o'oM'o)'o'o&o&ow&oZ&o&o &o%o%o%or%o/%o(%o$o$o$o$o$oW$oP$o;(o/(o (ojP?& mY,|WI6 x[I.qX<$}kW8{cE-}cR7    } ^ 3   8    2 yO" V @ -  | d 4     t \ D       T < $        l h d P L H 4 0 ,                l T < $ | L 4      \ D ,      T <     ,  tl[E5$P( xjF'{aA~`   v S ?    | k    $nZ<$|gUI;(W=1#|fMib   Y : "     z W I 6 (      { M #  Wn3   x d r;#rdyk6 u`l#""x"q"L"E""!!!!x!_!@! ''''m'E'&'&&'%%$$$t$(u(a(I(//~/w/]/V/.....q.]. . .-----l-a-<-,,0 0D ,        lb; v_F I-a"b@/~nYO:- u^B+zk^L; ,  o Q ; ~fU*  d 4    %l34P<ucW:#kZ?0gi      h P 8 ` ` ` ` ` ` k` d` %` ` ` ` ` ` Y` W` G` 3` ` ` "` ` ` ` ` ` ` ` ` ` { ` \ ` D ` ` ` ` h ` ` v ` ` ` &` ` ` ` ` ` l` ,` ` ` ` ` ` ` ` w ` g `  ` ` ` ` ` u ` b ` & `  `  ` ` ` ` ` ` ` ` ` n` J` 0` f N 6     | | | ~| j| M| 7| "| | | | q| j| M| 7| "| | | | | n| | | | | r| _| | | | ^| | | | | x| h| S| =| | | | | o |  | | | |  | | o | | | g | [ | ? | 6 | h P 8    P P P P XP QP 'P P P P P nP PP :P P P P P hP P pP "P P P wP 2 P P P P P xP eP      r Z B *  `;< @ =  6 D < a ?% 0) E, 1 1            \3 '9 &> 8C cF AL iP UW U\ Ca Cf 4j Mo ft /{ E~ - ( 3 4 . ) $ @ I + 9 : P 5 N / 6 @ F 6 > b # j  F / # % T Z -% (( !* :, (2 ,6 .: > s> 7J O wO ;[ ![ -` ` c f 4h #l !o 1q &t e| ؎м0!'o˸L!U~|~sVF؃VF]UVvvYY@FV։VFN^&:F uVF N u33^]UVWUv+ '&Fu+t-uE&F9w/0r*t ᗇ⒗&F9w0sM|؃]_^]Uvv~YY]UF~]UFPYYFPv v vv ]UVWv4tv\LT| tU!]VvDv DDD d | TL\tPPX_^]UVv |X~W6(*؋#(6^]U"VW~ ^$w\rWFN }~t &-G؃v+6F +6F uNN6, s:FV F _^]U~ uFF3RPv vv PaPV]Uvvv v vPaP9]Uvvv v v~ u3PaP]UVW~v NsڋVF_^]UW~N F t Is_]UF Pv vvVF]UVWN ^ VFps3v~ N tNOtI++s_^]Uvvvv v  VF]UVv&F&D&T&\^]UVW~2u~ +tIs_^]UVv^ t :t"t:t"t:t "u33FD^]UVW3~ 2ыvD&]+Î_^]UVW~ 2~VF_^]UW~3;Fu;t H_]UVv ,A<waD"u^]UVW~ 2^+ǎ~VF_^]UVv ,a<wAD"u^]Vt^YQ3YQYQYQUVWF V ^N u ti teu y ؃ y ۃ W33;r w;r+@[tƋt؃_^]t3[Ssـ ˀ3[Ssـ ˀ } у/sЊ% } у+s2+ӊЊ%UVWv~ _^]QЊŊYˊ%;u;U> tI6,FFF PP6  ]U&&&VFVF6(6&&_$6(6&c FV;(u';&u!&(C^&&VF^&&;(u;&uԋFV&&&(]U(&VF t1&&;6u!&&&&(;Fu;Vu3]UV&,6(P&P&G+.>Z+Ћ }3&,6(PP66 ^]UV&&G RP&GPR3ҸY[PRPj&&;Gt&GP P&7 ^]UV&&GRP&GPR3ҸY[PRPj&&;Gt&GPP&7 ^]UVW&&G&& ~&w CƙRPǙPR3ҸY[PRPjPP66 &&G& &~&wAƙRPǙPR3ҸY[PRPjPP66 _^]UP3PP6(6&&&_( &&G&WvxPPPP&w&w&w&wP3P ]U&6(P&6(P&6(P&6(P6666PP ]U&6(P&6(P&6(P&6(PP&&7 ]UV~ u&&G&W;u ;u3PPPPPv66  t6HH^]U P|DD u33PRPC HH;~;~;};};~;~;};};|!;|P6(6&&&_  PDD u33PRPC ]U&&G&W&G&W]U&&G&G&G& &)G&G&&)G ]UA6666P66 ]UV&&G&WVF&G&WVF~t&G& &G&G&&G 6&6&&D& (&G&)G&DVR&o [&G&&G&;G}&G&G }&G&6&&D&(&G&)G &DVR&o[&G&&G &;G}&G &G }&G&&G&W;Fu;Vu&G&W;Fu;VtkQ~uO&&&G&W&G&WPP6 ^]UPPPPP3P HHPPPP6@P6HPPP FVRPv+~PRVFY[PRPjvRPzPRVFY[PRPjzFVRPx+PRVFY[PRPjxRP|PRVFY[PRPj|~6@P6HPP ]U.66663PPPP3 666666 &&G&G73P66$GP]ULL3PRP\PPP@RP FPPP, 3PRP\PPP@RP F]U8VWv F u$6 }PP  2% F~uFVVډF&?tb\PvvPFV t^&:uFvvP$\PPP@FVvvvv^&?uvPFP t PFP~uPFPFPg u u 66 DD33PRPC ~u\PPP@FV'PP ta^&?t)'PPP  t P) DD t&33PRPC  u 66 DDPvvVFPF t uPQF(&VFvvvP  &(& (u u>tf㍆26Nb2džFdžHPP2P @@40>PP    3^]U2PFPFPP> F%]U% uePP  F FtW^&?tN Pvv"FV t ^&FvvUFVVF t,^&?u!Q t 62 DD P]UVW u33PRPC 3P&,6(P:  }#33PRPC P) DDe.P&,6(PPRPP3PP6  })V 2 DD33PRPC P) DDPV33PR J FV3PV3PR J vv [ FV u?` FV |=vvv [ FVFFFFVvvvvV > FV |% vvvvvW O ;Vu;FtЍV;Fu;Vtvvc W 2 DDV 2 DD33PRPC _^]U6P P3P 0 u=Hub=u0=u=u=u"=uL=u=Gu= u>=!ug=7Gu=6Mu=4Ku =ItL=Ktw=Mt|=Ru =Pt =Qt@=0RuPCDDPbDD&&G&HPDD&&G&HP2DDPcDDPDDx&&G& HP>DD`&&G& HPTDDH3PDD<&&w wDD+3PDD&&wDD3PP!PP&&6& (uePDD&,6(P2% = u33\t;Ѓ62 DD|@u4&&&;(u;&t P&&ğ&7 @6266(6&&&_ t!>.u662GP]UVWv >}3; t 3PPGPgF FtZ^&?tQ Pvv"FV t ^&FVvv3FVVF t3^&?u( u$ t 62 DD3PP^_^]UV& (ti(&VF3F^&&VF;(u;&u o &&;u&;t&&&&&(Nu^]U6>uv.#Gu6)du(u)ueuYGuGu%Gu;v/.s#PDDPDD&&G&HPhDD&&G&HP|DDPDDPDD&&G& HPDD&&G& HPDDvf P66 sG&&G%&GVPDDE3PR&&G PRY[PRPjP[DD3PR&&GPRY[PRPjPQDD 66 2% = u33Zt66Gw3P66hcP66SNP66P -,6 tP666(6&&&_( ]b!z!H!U!!!!!!!!"5!_"+""!UVW~ti&&  &&G*+‹&G&&G ǙRPǙPRY[PRPj9>*~>*+&&G*g&&&&G.+‹&G& &GǙRPǙPRY[PRPj9>.~>.+&&G.33PRPC P DDPFPFPFP> v~t;)~}F;v}vƙRPF&P&G RY[PRPjP9)~}F;v}vƙRPF&P&GRY[PRPjPDDPPPPFPFP3PP3PRPPPPPPPvvPvPPP <u=P DD33PRPC ~tPPPP3PPP _^]UVFPP2PFPFPFP3PdPP3PPPPPPPPPPPPP6  <P DDtt<PPPPPP3PPP3PPPPPPPPPPPPP!P <uNtrvv 6 ~]z tU&&G&G;F PDD8&&G&G;F 3PDD3Pvv6(6&&&_( t)62_DD> u6 DD& 3P DD^]UV =u*P.PPP9 $ F6N}FxPPFP  xPP6 FxPPP3P6 3P6  * A:3PP , PPP^P &(P6 L PuDD}^]UV3Pvv:  }P) DD33#~uv v V .PvvPFV uF@vP,FV0Pvv_ u VE.DD4Pvv_ u V"-DD8Pvv_ uv v VR | m<Pvv_ uv v V1 ` H@Pvv_ tDPvv_ uv v VIP v v V^]UVFЩuFHPP  =u03PDD>6 |66 2 DD6 8  &>6 |c66 8DD u66 2 DD6 >8 u P P"FV^&Fvv P P P"FV^&F>8 t?'P<P P  t#P) DDvv PUvv@Pvv\P PP@FVPRZPZ[CRS FVZPvv<PQ8 .PvvPFV ukF@vP,FV0Pvv_ u- P.>8 tvv Pj_<Pvv_ uX3P P: 6 }-P) DD>8 tvv P66  P` 8Pvv_ tE4Pvv_ t.@Pvv_ tDPvv_ uFPvv[ P : PP  >8 tvv PXN3P P: 6 }+P) DD>8 tvv P T8:^&G ^]UV^P|P> t\P|PP@FVPvv'PPP|P  u8PFvP'PPP|P  uPFvP'PPP|P  uPFvP'PPP|P  u^&3PR|PP P o3PR|PP ui'PPP|P  tP) ;\P|PP@FVnPvv P|P:  }P) 3PV6T6R J ;Tu:;Ru4jP3PRV >  ulj;Tu;Rt P) DD{ |P^P~tPP  =uC3PV6T6R J ~tRP3HPRV O RP3HPRV > V 2 DD^]UV VF9FVF N 3 PRvvy0^ &Nt(3 PRvvjFV u N ^ & N^]UFFFFuVPƺ؁N}% = u33Zt/NnN F -NnN F ;6 6 ` RP6 6 @RPJ F&&WPFP P"&w&76bz P&w&76dzZ5P~DD\9PqDD^>PdDD`BPWDDf PJDDhP=DDjP0DDlP#DDn"PDDp%P DDr*PDDt/PDDFPFPFPFPP3P FPFPFPFPP  vvvv3PPPPP 3F^uhPPFFvP vvvvPVvvW Wvv% uhPvvP VDD=Htc=t =Ft=GtMi=ItJ=Ju+Y,?+Nj6N6N 6n66F 663FPP"&w&7b&w&7d5PuDDZ9PhDD\>P[DD^BPNDD` PADDfP4DDhP'DDjPDDl"P DDn%PDDp*PDDr/PDDtHu PDDvvvv3PPPPP _^]UP^&w33PR J FVP^&w33PR J +FVFV3P^&wvv J vv [ ^&&W uM` FV |!=vvv [ ^&&WFFFV ^&&G^&G&&W&G &GV&&&W&G]U` FV |!=vvv [ ^&&WFFFV ^&&G^&G&&W&G &G&V&W&G]UV^v&3&+GFVF&G &W&&G&G&;v7&w&7vv&w O ;V|;Fs^&G&&W&G^]UV^&G&;wt&G &W&&G&G3&+FV  u wX^&w&7vv&w > ^&W&؋v&\&T^&G&;w^&G&7&&^]UV^&G&;w v v^&G&7&V&^]U^&G V ;Fu&9Wt^&w &wc ^&w 2 DD]UVf FVv v q vvv h vv q ^]UVf FVvv q l vv q ^]U]U>tv vv&_$]U>tvv&_(]U>t&_,P DD]UVv Vvv f N}^]U"^&^ &^&F^ &F nF^V | s]UF Fu^&G&hjpr&GHt&tl&GHv&Gvn&G&WPPPPP3P xz03PRpPhP 3PRPxP PxPhPP6o ]UVv 33PRPC F Fu PPVz tvv }3FV։>uPP FPFPFPFPP  FP;FPFPFPFPP3P vvvvP3PPW  33PR33PRPC ^]UV%^&F^v&&GF&Fn F ^ V | s^]UVW~: t3PRvv^&7F^S&[&G^&7Fn F ^ V | s_^]UVWv~ Nƻ 0^&Ot ƙ u N^& O_^]U% t7~t>"u3P6 % ""u3P6( ]U~t3P6 % >$t3P6( F$]UЍxVFPR  ty^&?tpF^^F&^F& uN^&\t&\F^&SF^&CF^&RF^&AF^&PF^&-PP  3]UVv tNƺ^&G u:Pƺ^&G 5P66663PVvvP ^]U VWF ^؋F &+GPF ^&GZ+ЉV;F~F^&GFFFH+ ~)vF ^؋F&+GPF ^&GZ+ЉV;F~F^&GFFFH+ ~)v^F@&GF@&G33PRPC FPuF ^&G % uF ^&_ &6666P3Pvv^ uF ^&_ & FPFPFPF P> vP DDvv P3Pvv \ }3Vvv33PRPC FPF PVvv a FPPPPFPF P3PP3PRPPPPPƺ^&wƺ^&wvv t3PvPPP <33PRPC Vvv=uP DDƺ^&G u;v u3 t%VvvOt3P2P 33PR33PRPC ~tFPPPP3PPP _^]UV3zPR^&PR3ҸVY[P^P&GRPR3ҸY[P[Yv&DQSPR3ҸY[P[Yځ =SQj^]UFFFPP6 FPFP3PP6 F]UvvP6 NPP6 F V rtv~vzrP^PNPP6o ]UVv2t;vu;6)~%^]UVv2uuF;6)~&^]UVFFF"FFF$ VЈVF$ЈVF$ЈV^F'nF(FFF }FfF }F0fF }F fF }FfF }FfF }F0fF }F fF }F^FN|"F^F^㋇^㉇!ff^v!n}F>} HFFF;F|;F~FFF)>) ^v6 ]F);FsF^F&^F%N}^]U VW^&uFVVF^F&?t^&G;}&G3PFP3PV6 j vvV6 ^F&F^F&F^F&FF;|^&_^]UVW~ ǻH3WV V^ ؉^V~tvv33PR^&PR3ҸY[PRPjFF3PR^&PR3ҸY[PRPjFF3PR^&PR3ҸY[PRPjFFFP3PRv O F;1_^]UVWFVVF^&F^&G;}&G3ƺVvR3PV6 j F;|33PRPC PF,vP:  }!33PRPC P) DD^&O&u?&uF FPVFV%PR J FP3PRV > ,|=s%V 2 DD33PRPC P) DDP3PRFP ~APtw~CMtmvv9~}FPV3Pu 3PVPR J @RPFvPFvP3PRV O vvWVP @RPFvP?PV33PR J FVvv [ FV u%V 2 DD33PRPC  P) DD3PV3PR J vvvvV > FV3PV3PR J ^&uF FFVVF;F|:;Vv3vvc V 2 DD33PRPC P) DDaP3PRFFvP ^^&G&W %VFP3PRFFvP ^^&HDtC&?BMt9P3PRFvP ^&G&WP3PRFvP vvvvV O Ǚ^&&WP3PRvv P3PRV O vv3PRV O vvWV3P 3PRvv욌^&GFV &G3PRvv욌@RPFvPvv3PRV O P3PRV O FvP3PRV O vvWVP @RPFvPFFvPFV+VFPRV O vvc ^&V 2 DD33PRPC _^]Uvvv v ^&GP&GRY[P^P&G RY[PFVvv [ ^&&W u & ~^ &G&^&&Gv^ &w&7^&w&7 ^& tvv&w&7v v vv6 ~ ^ & tvv&w&7^&G&^ &;Gu&;t^&w&7c ]UnVWFFF^&G^PRv &&+G[YډNʉ^^&G^ P&G^&+GR[YډNΉ^^ &G&+^̋NډN҉^ԋ^ &G&+G^ЋNډN։^^&FV&FV&F ~(NVFFVNVFFV~},NًVF9FVNًVF9FVFV;Fu;Vwn^FVV҉FԋFV;Fu;Vwn^FVV։F؋FʉFFΉFF҉FF։F^ &G&V‰F&F+FF&GF+FF&G;F &G;F~`^ &G;F&;FF@&^ &G;F&G;FF@&Gv v 6{ F;F} F;F} ~t^&tFvPFP^&tFF&uT>| vv6FPFPFvPFPP6 t >}< vv, FPFvPFPP6o  ^&uFvPFPFPFvP~TF)FFF@F~}#FV+@FhFV+@FOFNV+@FHFЋV#)V!~FNV+@FHnЋV#)V!~FF~t6PFRY[PPFRY[PRP [ FV uPP6 P6 FP6{ 3P6 P6 | ^&FV&PRVFY[PFVFPFPFVVFFVVF~|F؉FNVFFVN^VЋFΚPVPFʱ9NZVNtF'^FVVFFFFVVFFFFFFVV F FF~^ &FF ^^&^ &FF ^^& б^ &FF ^^&^ &FF ^^& ^&FOuNttNtT6NtF'^FVVF33҉VމFVډF܋FVVFFFFFFVV F FF~^ &FF ^^&F^ &FF ^^&F^^&^&^ &FF ^^&F^ &FF ^^&Fڋ^^&F^& F&F^ &FF ^^&F^ &FF ^^&F^^&^&^ &FF ^^&F^ &FF ^^&Fڋ^^&F^& F&FOtNtNtFVVFFFFFFVV F FF~3^ F &?}^ F &?}@^ F &?} ^ F &?}^ F &?}^ F &?}^ F &?}^ F &?}^ F &?}ƀ^ F &?}@^ F &?} ^ F &?}^ F &?}^ F &?}^ F &?}FF^ F &?}F^&7FOtNtNtd~uxN^VЋFΚPVPFʱ9ZVFVVFFFFFFVV F FF~^ &^&F FOuNuNuVЋFΊN9PRVFY[PVPFʱ9N9ZVNtF^FVVFFFFFFVVFFF~FV׉V F ^&^&^&F&^ &FF OOuЋF V VFnuNtyNtF!^FVVFFFFFFVVFFFFVV F ~^&^&G&^&&GFFOOuӋ~^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF FOOuntNNt..FFVVFFFFFFVVFFFFVV F ~^F& } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&Ft ~^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF FOOt5ntNtF3+FRPvvFVVFFFFVVFFVVFFPFP6 ~ FF~uN>| vv.FPFPFPFPP6 t >|.vvFPFPFPP6o vvc _^]UVW~ }%FPPFPFP> FF FF ^&&F&&w+.GFGFGFGFGFGF^&G+&&G+&w &&G)F F ~ ~ ~ ~ &w&G)F F ~ ~ ~ v ~~+~ ^&9}& }3+v ^&9w }&w }3^&&w=o8o_^]U]UF =-u =tc=t{=st=tt*^&|P3PPvvu 3u^&P3PPvvN 3N^&u vv31^&t vv3vvl3]UVW~ v ~t^&t3^&t^&3^&|3 0FZ^^&} -&*^&~ +&^&F^&F^&FPcP^&2PjP^&2PxP^&w2P^&tPP W PPVWP^PHH؃wJ.>PVWvv .PVWvvk vv vv_^]7 777*UbVWF FF %FF %FƙPFRY[PFԉV֋ƙPFRY[PFЉV҃~~FF~|+ЉVދF;F} `F t~}F~uFFPRVҋFY[PF̉VθNF@@F܋FމF tFFރ~t fރ~tfދF3FVRP [ FV uv 2 DD P) DD33`Fޙ^֋NSQ [ FV u*vvc v 2 DD P) DD33>^u^ P^P^F&GF &F &~t FƉF FVVFVV܉VFFVVԉVFN~uF~ }vv3PRv > ^&MGt&?XItvv3PRv > 3PRvvFvvTV^؉^Vvv3PRv > 3PRvv^؃v.-vv"VvRvvfvvVvRvv>vv{߃Pvv^X&uvvV^؉^V^&}^&FF^&}^&FF^&}^&FދF;FF3PvFRP J FFP3PRv > ?|=s8vvc vvc v 2 DDP) DD33D P3PRFP ~DYu ~BOu4~APt~CMt^&FFFP3PRv > vv߃V^؉^V33PRFPR3ҸY[PRPj^&F33PRFPR3ҸY[PRPj^&F33PRFPR3ҸY[PRPj^&n^؃v. -vvރVvRvv݃vvbރVvRvv݃vv܃Pvv,ރ^X&uvvރV^؉^V^&}^&FF^&}^&FF^&}^&nFȃ^V | vFދF;FFPvFʋVȃ%PR J I^؃v.,FuDFVvRXFVvRF%P_܃N}*PP6 XPP6 XPP6 rFu@FVvRXFVvRF%PۃN}*PP6 XPP6 XPP6 Ft^^& F%Pڃ^^&N}FtF^&&GFV^؉^VF%F^^&}^&FF^&}^&FF^&}^&N|y^F&&LJFV&&&LJ~|&^F&F&FV&&&W&G&G&G&G&G &G&G &G &O"&G$&O&&G&O&G(&O*FFFP v3Pvv1FFFVVFFVVFF F~uFPF t =uFPF tXFVVFFFFP^&FN}FF^&^&FFN}NFP=tFPFFPFFP^&FN}~}FVVFF~}Nf^F&Fnu~~uFP^&F`FPF |$FP^&FFȈF }(FPF^F&FFF ~F;FsQF %FF;Fs+FFڋFVVFvދ^؃v.,F3FFVVF^F&t ~fvF;Fr^&A&^&&GFnF uFNuMF3FFVVF^F&t ~fvF;FrFV׉VF^&^&FF^&^&FF^&^&FFnF uFNttF3FFVVF^F&t ~fvF;Fr^&^&FnF uFNufFNtFFFVVFFF^&^& FFnuƉF)FF;FrF;F|v FFVVF^&?FFFF;F}^&#?^&?FF;F|كnuF%F^F3FFVVF^F&t ~fvF;Fr^&^F&: ^F&nF unFFNuAF%F^FFFFVVF^F&tF FfvF;FrFVVʉVFF^&FF^F&:F~F^F&:F~F^F&:F~FʋFVVFfʋF uFF^F&FFNuK~ptEfʊF } ^F&FFfʊF } ^F&FFfʊF } ^F&nF tnFFNtF܋F;F u#FPvvc VFF;F}_^])b))I**n+$$$&/%m%"""##=#/ / Y ! U(VvFP3 PRV > ~RMu~FOu~BMu~ILtV 2 DDP) DD33FP3PRV > !|=sV 2 DDP) DD33~HDu~BMt=P3PRFP PVFދV܃%PR J {FP3PRV > 3PRFP3PFPvvFPV ^]UFP3PRv > 3PRFPvvvvvv ]UVFF>ltD3Pvv:  }P) DDHFP3PRV > V 2 DD3Pvvg3>luxn pt*FH>4@PFZFFH>0@PFZFB4RPFPFRY[PRPjF0RPFPFRY[PRPjFF>rt +FF>ru~F>tt +FF>tu~FHFFHFFP6t6r6p6nVvv6 6 DD6 DD3P3PRg^]UVW~FPF F v P6| F V VF36+^F&?u6)9vv v Wv6 FWuPPV/+;F|v v Wv6 "PP+Pv v Wv6 _^]Uv6 +P)PFPPv6 >t3P6 FPQP6| F+FPSP6| ++F3+)]UV^&;F u &;F uv v ?^&&&} )&(^v&& F&&.+&^&G& &G+&G &G&&G +&G3PoDD^]UVv ^&G8&GP&Ghvvvvv VvvW >t3P6 >tP6 FPFPPP +P6 ƺ^&Gƺ^&w&w ^&GPƺX&GPƺ^X&G+FP^&w6 F=}p>t66 FPPPP66 3^]UVWv.P\PPPRPPFV t^&33PRPC 3Pv v PRP6 F }"33PRPC FP) DDFFFPFVVF^&G&&W ЉV^F&F t=tVFP PFP PNuFP~FP33PRPC `^&%?F |3t-FPPFPt01Pt-FPPFPtEFPt-FPPFPt23Pt-FPPFPt45Pt-FPPFPt67P uvFPPFP t89PFFPv3_^]U,VW.P\PPPRPPFV t^&33PRPC P,3PUPPRP6  }!33PRPC P) DD~FPFVVF^&&VFFFFVVFF%FF0~9~FFBVF9FVN}FPFލF6P|FP:PFP P3VFVFFP PnF^V |k rgF;Fs3^&FFF0~9~F09~ F FFPvFPVpFP PFF)F^&FFFP~ }.FPF;FsnF^V uFP PFP PF;FsLFP~FP33PRPC _^]U VW^&&;u;t^&&v v 6{ ^ &^& }-&G&GP&G &oZJ^ &9w~ &G;}v v P6 ^&w&+GP!^ &&W^&G&+^ &^&^ &+^&&VF&t }IN^& t7:uF N^&:tFF^&G F^F&1F| ~^F^& t$:uFF^& F^F&1N& }N^&?uF| ~F^&?uN^&;t&P6 FVVF^&&&G&o &W+ЉV‹)F^& t= ty=u>tvvWV)F@vPWV6 ^&^ &;Gv)FVVFv v 3P6 ^&vvWV^& 6)^&ƙ&+6)vFVVF+^&vvWVq^&F^&%1P6 FVVF_^]UVW^&&;u;t^&&^ &GF&GF^&}&GP&G MZJ;v}v^& }&G&GP&G &oZJ;v}v^ &G;F&G;F^&G &;}:v v 6{ ^ F&GF&G&;F~&G;F~}>t3P6 ^&&GF&w ^ &G^&+GP!FVF@FF)F^&w v &&+GP!FVF)FFF^&w^ &G^&+GP!FVFFF)F^&w^ &G^&+GP!FVF)FFFtv v P6 FVVF^&GFF^ &G+F1^&G &;}&G&o &W+Љ 1FL^ &+F 1^&GFF4-^n^& FF^&3+FFVn^& n^FV;F|;Vsڃn^^&^&nF^V | sӃn^& FF) n^&7n^&7n^&7n^FV;F|;Vs^^&n^& %09~n^&?09~n^&7nF^V | sn^& n^& n^&:FV3+ЃV^F%09~n^&7VF9FV~,wɃF++F++1 ^&G1N|FV~tv v 3P6 _^]U3PuDD]UF =.u=th= %tI=-ts =1t= 2t PPvv3 PPvv3PPvv33PPGPo3F,vPP^&}vv3PZPvv 3T tD^&}vv+P_Pvv 3PZPvv 3]UVv t(uv v vvF^&G|9t3PtdPP P^&}V[PP PP^&G&&W R2^&u&  &+Pv v VPKKww. +PPvvW3PPGPoEF,vPP^&}vv3PZPvvW ^]˃UVW+P+PPP P6 3ƺ؋&.+&ƺ؉$ƺ؃(t+PƺX(F= |&.+&>(_^]UVW~F VPR [ FV uW 2 DD P) DD331FV^&&VF^&FFVVFvvv vW > V^؉^VW 2 DD>uFF;Fvn^& udNF;FvY^& uONF;FvD^& u:NF;Fv/^& u%FNF;Fv ^& tnF^F&&LJ&LJ&G &G&G3FF ^F&F؃v.ENn^ ^& u&u^&G;V E|;Fs>~ u~w ^F&G#N^&?uF^&F^&F^&F^&G FF "^&FV &RPv vy)FV F F;Fr^F&? uFv^F&-0؃wM.@:4.("  1vtf^&G^&FE^F&F=t?f?1v3v~t.^&G^&F F-FV ^F&FF;Fs(^&G;V E|;Fs>~ u~w ^F&G#N^&?uF^&F^&F^&^&O | N^&?t^&G  vvc P) DD33PuDD66C>^t3PPGPo^&&+&G &&+&G&G@.+&G|&G&G &O"&G$G&O&&GV&O&G(&O*VF_^] &,28>DJP```````````V\((zUVv~ |~v FF F VPR [ FV uT` 8FV |% vF VPR [ FVV 2 DD P) DD33DFvPv vV > FV V 2 DD~ .u~w&vvc mPP  33>uFV^&&F&&G&GLV 9^&G PuDD66>^t3PPGPo^&&+&G+&G )&|&G+M&G&G &O"&G$G&O&&GV&O&G(&O*VF^]UF& t *dF *+FP6 >t/ *  * ^Ƈ * +^Ƈ * nFd~tEt=FFd * *4^Ƈ *+^Ƈ *5 >+s]UVv16tP*DDt01PDDtPDDtEFPDDtPDDt23PDDtPDDt45PDDtPDDt67PyDD tPgDD t89PRDD6^]ULLVvF- ؃v.( PDD3PDD3FP3PRV > uFP3PRV > ~uPDDDF%?Py: 0FP3PRV > | v~ uF-FPDDFP3PRV > ~'u vf PPDD3PGDD^]AYpUhP P)P1>htPDDC+hPDD3PDDʸ]UVn tc^&&&;u"&;u&&&;u &;u ^&&&&&&&&W^v&D&9u"&9uF&D&9u &9u^&G&&&G&&^&&G&&G &tVFVVF^&F&&&&v&&^&&G^&&Ouco^]UVW~+(;u~6+6+㋇ 1PR++Y[PRPj㉇ 1 u 16+6+㋇1PR++Y[PRPj㉇1 t1㡲+) 16+6+㋇ 1PR++Y[PRPj㉇ 1㡨+ 1㡺+)16+6+㋇1PR++Y[PRPj㉇1>+u㡪++1㉇1㡸+1NN|_^]UVW>+\P6+6+P3++@+㋇,㉇,O=}+&㉇,N}_^]UVW+ uv.ruuukt;yuEHud+KKw.GGGGWDDA+;u)6+6+,PR++Y[PRPj,1 + ++ 16+6+-PR++Y[PRPj1 t13>+u >,:tW;DD>,ty6+;6 1~6 1+H;61}616+;61~61+H;61}61WDD+; 1~ 1+;1~1+;1}1+;1}%1 ,++ 11++111 _^]xxz||||    fUVv v 6{ v v P^& ^&G&W+£+&G&W+£+&+&+&+&&++&&++&&++&&++&&++^ &G&++&G&W++FV,++FVV F ^&F FF^ &FVF ^ &FVF FF ^ F &+=t=t0FVV F FV 3+Ѓv&&^ &+F ^ &+F ^ &+F ^&++FV |" vvv v  1P FF +FV |" vvv v ,P FF ^]U% t3P^&( ^& DD]UVWv F =stF =t=t$=tuPvvs3Pvv]3^&& tcFVVF^&F&&&&~&&^&&G^&&Ot u8o3h^&& tRFVVF&F&^&^&^&G^&&&&&G8o3_^]UVWv ~t^&& t3^&& t3J P+P^&G@Pz^~&E&9u#&9uF&E&9u &9u ^&&&;u#&;u&&&;u &;u W PPv VPPKKv.p VvvYFVVF^&F&&&&~&&^&&G^&&OtuPFVVF^&F&^&^&^&G^&&&&&G8o_^]˧ j  UFP3PRv > ~~3+F+>+tFFأ+FPFR[Y+SQ(++FPFR[Y+SQ(++F++F++F]UVW~PW FPPPPcPW FFPPFPFPPWt F@FFPR3ҸHY[PRPFPR3Ҹ8cY[PRPjF RPƙPFRY[PRPjFRP++3ҸdPRPj++ƙRP++3ҸdPRPj++PW _^]UVW~W:DDFV)FV F VPR [ FV uW 2 DD P) DD33^&LJ&LJFVVF3PWvv J vvv vW > FV W 2 DDF V^&^&?t&t\PPP@FV^&G&G F^&^&FFN}^&vvc 3PP:  }P) DD33WE.DD>uPP$FF F6N}fPFPFP  ~ vvc  P) DD333% t3Pv % nlv^&G&LJ&LJ&LJ&LJ+&+&+&++&&++&&++&&&&++&&&&F&&G&G &&G&&G&G&G &G&G&G &O"&G$-&O&&G]&O&G(&O*VF_^]UVv P6+6+"F؉V&++P6+6+g+P3PRV > +P3PRV > +P3PRV > ++FV | v 1PvvV > +FV | v,PvvV > >+u3P3PRg^& 3z+P3PRV >  u >+t6 DD6 DD+P3P6 3PDD3P3PRg^& ^]UFV++3Pv v DDRP J PDD60646++++>ju+++++>rt +++>ru>++>tt +++>tu>++++H+H++PP6 ʸS]U(FVVFF FF FF FFFFFFFPFPFPFP6 ~ ]U3DPRFvPFV;F u;V u3PPRFvP ]UVv^F V &WVF&G*&W(VF33PRvv3PPRF vP FnF^V | s^F V &WVF&G2&W0VF/3PRvv3PPRvv FnF^V | s^F V &W VF&G6&W4VF uZ^&GP&GRY[P9FVvv^F &v Pvv^F &Gv P3"PRvv3PPRvv tZ^&GP&GRY[P9FVvv^F &v Pvv^F &Gv PF"nF^V ~| r^F V &WVF&G:&W8VF u-^&GP&GRY[PRP^F &v P3PRvv3PPRvv t-^&GP&GRY[PRP^F &v PFnF^V ~Z| rQP^&w>&w 3PV3PR J ^&wvvvv ^&uvvvvAFV;Fu;Vuvv3HPRV O lFVVF^&^&FFOuFvP3$PRV O FVVFnn^&^&&GOuFvPvvV O V 2 DD^&w&GPvvvv 33PRPC _^]UV^&&&VF&&&v&VF~ t6^&G&W+^&G^&G&W+^&G.^&G^&G^&G^&G VF^]U~ t<^&&&&&;|Vu&;rM^&LJ&LJ:^&&&& | s^&&&&3Pvvco]UVWPvvFV^&G&G&G&G^ &9}&9w} ^&u v v 6{ ^ &9?}8&9w}2^ &G&+G@P&G&+@P&w&7P3PvvW _^]U]UF = %t5=st=tt:3Pvv3)Pvv3vv3]U~t^&u &u34PP^&2 P+P^&@Pz^&tfhW PPv v PP=t =t=t'23Pvv Pvv vv]UVW~F VPR [ FV uW 2 DD P) DD33FVVFvv3$PRW > )FV ^&t?FF$VVFFV$VFnn^&^&&GNu^FV&&F$vPv vW > W 2 DD^&& u vvc P) DD33^&&% t3^&GPvvFvPc >uPP^&G&G &LJ&LJ3Pvv3^&G&G&G &G&G s &O"&G$ &O&&G &O&G(u &O*VF_^]U]U]UV~ uY^v&D&9u"&9uF&D&9u &9u^&G&&&G&&[^&3&+&;u&;u&u &tn^&3&+&&&LJ&LJ^&&9^&G&&9^&G co^]U+3PRF3- 1RPj+++1 ڸ 1]UVWv v 6{ v v P6 F 1^^&&VFVF&3+FFV&G&W+‹&&;Ft ;Vt&G^ &^&+GFFVVF^ &G&+FFF^&;v&&VF^ &HNF^&;rFF^&7FF^&PZ+™^PR&&Y[P9^&FF9Fu2~ 2u+vv]FV^&&&&GFF;Fstn^&G&W+‹&&^ &H+ƙPRVFY[PRPjF^&&^ &G@+ƙPRVFY[PRPjF^&;Fv&&VF^&;Fr&&VFvv^F3&+&P&[PRPj^&F^&PZ+™^PR&&Y[P9^&FF9Fu2~ 2u+vvFV^&&&&GFF;FsCvvv v 3P6 _^]U]U^&&& `PRj^&]UF =1u=t(=u=t1= 2t?=su=tuPvv3Pvv3>u vvRvvD3bvv.vv 3>vv 3-Pvv3Pvvn3]U V~ts^&&VFFFF^N3 PRvvy0^&nF^V t(3 PRvvjFV u N^& nF^V u w^&u&RP `PRjFV8^&=t =t=tFrF0 FaFF PPvv ^v&D&9u#&9uF&D&9u &9u ^&3&+&;u&;u&u &u ^&t ^&t W PPv v PPHH؃v.7PvvnPvvUqPvvB^Pvv4Kvvvv)vvsvve vvT^]11$U VvF VPR [ FV uV 2 DD P) DD33^XV&&FVVFVVVF&&vvv vV > V 2 DD>u PP^&u1&?u*&G ^&&LJF2FVVF~^&u)&?u#^&LJ2&LJF"FVVFJ^&G&%=Nu4JOu.&G^&&LJFN^&&F;Fw^FV&&&G &G&G&G&LJ&LJ&G &3+F&&&&9^&G&G Y&O"&G$&O&&G&O&G(&O*vvVF^]UFV..+ ++++1 -]UF,F,F V ..+ ++++1 -]UF,F,F ,+++++1 ^ -&^-&^-&^-&-]UF,F,F ,F ,F,F,F,F,F,F,F,F,F,F ,F&,F(,F$V"..+++++1 ^*-&^.-&^2-&^6-&^:-&^>-&-]UF,F,+++++1 -]UF,F V..+4++++1 -]UFV..+6++++1 ^ -&^-&^-&^-&-]UF,F,F ,F ,F,F,F,F,F,+3+ +++1 -]UF ,FV..+2++++1 -]UF,+5++++1 -]UFV..F V ..+Z++++1 ^-&-] ںs UF,F,F ,F ,F,F,F,F,+I++++1 -]U+M++++1 ^-&^ -&^-&^-&-]U+O++++1 ^-&^ -&^-&^-&-]UF,F V..+N++++1 -]UF,F,F ,F ,F,F,F,F,+J++++1 -]UF,F V..+#++++1 -]UF ,F ,F,F,F,F,F,F,FV..+/++++1 -]UF ,F ,F,F,F,F,FV..+*++++1 -]UF ,F ,F,F,FV..++++++1 -]UF ,FV..+,++++1 ^ -&^-&-]UFV..F ,+r++++1 -]UF,F ,+++F+1 ^ -&-&G-&G-]UFV++FV++F,F V +m++F+1  1]UFV++FV++F,^&,&G,F V +y++F+1  1]UF V+r++F+1  1]UF V++FV +++n++F+1 ]UF,+++F+1 -]UF,+++F+1 -]UF,+++F+1 -]UF,F ,+'++F+1 ^ -&^-&]UF,+j++F+1 -]UF,+++F+1 -]UF,+k++F+1 ^ -&^-&^-&^-&-]UF,F V +++F+1  1]UF,^ &,&G,&G,+++F+1 ]U+++F+1 ]UF 1F 1+i++F+1 ^ -&^-&]UF V +F++F+1  1]UF,F,F ,F ,F,F,+l++++1 ^-&^-&^-&^-&-]UF,+f++++1 -]UF,F,F ,F ,F,+d++++1 -]UF,+g++++1 -]UF,F,+j++++1 -]UF,F,+h++++1 F FVF^&_-&^ w:.F^&_-&F^&_-&F^&_-&-]nnnnnnnUF,F,F ,F ,F,+e++++1 -]UF,F,F FV^Kv.F^&G,vF^&G&W,,^F^&G,F^&G,F^&G,F^&G,$F^&G&W,,F^&G,+i++++1 -];KKc;;;;;UF,+k++++1 -]UFV..+P++++1 -]UF,^F VVF^F&^F& u+++F3+FH+F+1 ]UFVF,^^F &F^F&F^F&F^F&F^F&FF VVF^F&^F& u+++F3+F+F+1  1]U+++F+1 ]UF 1F 1F,^FV VF^F&^F& u++F3+F H+F+1 ]UF 1F 1F11F,^FV VF^F&F^F&F^F&^F& u+ + +F3+F @+F+1 ]UF,F V F V Z+f++F+1 --]+ ++++1 -U+e++F+1 ]U+++F+1 ]UFVFVFVZ+d++ ^ &+1 ,--^ +&]UFVFVFVZ+++g^ &+1 ,--^ +&]˸UF,+w++F+1 -]UF,+x++F+1 ] 22P 2PP[ 2%UFF2F"2F 2 2G2P 2PP[ >2t 2^&?t\^&G3]UF2 2>2P 2PP[ >2t 23]UF2F"2F 2 2<2P 2PP[ >2t 2 2]UF2F"2F = 22P 2PP[ >2t 2 2]UVvFF~ |~v2n^ F2FF F 2F"262 2?2P 2PP[ >2t 2: 2FVVF 3ɻYF V~ ~mu ~vbVF^]UF2F2F 2F B 22P 2PP[ >2t 2 23 2]UVvFF~ |~v2n^ F2FF F 2F"262 2@2P 2PP[ >2t 2: 2FVVF 3ɻYF V~ ~mu ~vbVF^]UVF92 2H2P 2PP[ >2t3 23]2 2H2P 2PP[ 23ұUF2 2I2P 2PP[ >2t 23] 2/2P 2PP[ 22UF2F"2F 2 2N2P 2PP[ >2t 23] 2O2P 2PP[ >2t 23 2b2P 2PP[ 23UF2F"2 22P 2PP[ ]U+++F+1 ^-&^ -&^-&^-&-&G-&G.&G.&G^-&-&G.&G]UF,^F VVF^F&^F& uFV +t+F3+FH+F+1 -][1][Keine weiteren Fenster|vorhanden! Abhilfe durch|Schlieen eines Fensters.][ OK ][1][1STVIEW-Warnung:|Die Gerteausgabe funktioniert|nur, wenn Sie ein GDOS im|AUTO-Ordner installiert haben.][ Aha ]*.*1STVIEW 1stView: Datei(en) berneudumpenladen [1][Um Dateien auf ein Gert|ausgeben zu knnen, mu ein|Spooler-Accessory namens| installiert werden.][CHMELEON.AC*Install.|Abbrechen] Aha ]1stView: Datei(en) spoolen[1][1STVIEW-Warnung:|Der Spooler-Puffer ist voll.][ Aha ][1][1STVIEW-Warnung:|Fehler beim ffnen des|Ausgabegertes.|Ausgabe wird abgebrochen|und Spooler-Puffer geleert.][ Oh jeh ]\ 1st View  )     " 0 I ` i t  KRB> } >2'R>            #     #     #     '$  #     *  !F  $"## # !% %&# & $% (. )b -*,#+* ,0 )6 .~ '/1#0= 10 .B G3F> 746#:5H 6Y 3a (<8;#:9g :y  ; " 7 . @=?#:> ? < (EAD#:B C D #@ 0F  2 " H  I  J   K  $ LL1KMN AN  L "  L "  [1][1STVIEW-Warnung:|Ausgabe von XXX-Dateien|wird noch nicht untersttzt.][ Na sowas ]21Gertenummer: __99 ABBRUCH D. AUSGABE MIT L.SHIFT-R.SHIFT 00Linker Rand: __ ZeichenSEITENVORSCHUB NACH DATEI:QUALITT:X-SKALIERUNG:Y-SKALIERUNG:HORIZONTALE AUSRICHTUNG:VERTIKALE AUSRICHTUNG:CALCLOCK ________ xxxxxxxx1STVIEW: Ausgabe-Konfiguration Digital Design, Apr 06 1993Allgemeine Parameter...TextJaNeinnormalDraftLetterMetaGrepassendOriginalImagePixel 1:1BruchGanzLinksMitteRechtsObenUntenStandard-AusgabeFensterGertControl-P-AusgabeInternExtern:Text-FonteinstellungNormalber VA_FILEImage-Ditherfarbenkeine2 (S/W)8Sound-Parameter...Gerte-Parameter...LadenSichernOKAbbruchMEM: XXXXXX KTOT: XXXXXX KIMGIFFRSCGEMSAMSND[2][1STVIEW:|Wollen Sie die Ausgabe|wirklich abbrechen und den|Spooler-Puffer leeren?][Abbruch|Weiter]1STVIEW.AC*APPPRGGTP1stView: Programm finden[1][|Voreinstellungen|sichern?][ OK |Abbruch][1][|Zuletzt gesicherte|Einstellungen laden?][ OK |Abbruch]X(U&mW CALCLOCKSeite XXXAbbruch nicht mglich!&&   Drucke[1][|Kein Clipboard-Pfad gesetzt.][Abbruch]XXXXX *XXXXX Pixel---- XX Ebenen ---- Sichern (XIMG) ^X Original-Pal. ^E Standard-Pal. ^S=3?1)&*% 784;" , .>0<2+$ ('5:69! /# -MMM  ^  Z   q        -- ^++ ^ Transparent ^K--- Farbpalette ---CMAPXIMG XXXXXXXX-Font ^E---XXXXX Zeilen --- >> OUT-Datei ^X    * =      * --- System-Font --- Norm (10 Pt) ^N Mittel (9 Pt) ^M Klein (8 Pt) ^K-------------------Wl.DMP.OUT.TXTVA_FILE [1][|Nichts zu dumpen.][ OK ] Fenster ^E Original ^S p    +    - Mastab / Seite -1 ^ -+ ^---- XX Bume ---- Ix86 -> M68k ^K M68k -> Ix86 ^K  r + x ~   << ^>> ^-- Konvertieren ----- Hertz --- Fenster ^E Original ^S Norm ^N DMA ^M                  - ^+ ^----- P L A Y ----- STOP ^T !!!!! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ###+ , 1 - - + + , - . 0 MZY >0jrZZDZZZZZZyZ8ZZZZZZZdZZWZZZZmZ?ZZ4ZzZ$Z Z Z Z Z Z{ Zt Zd ZR Z> Z" Z Z Z Z Z Z Z Zp Za ZP Z5 Z Z Z Z Zy Z\ ZE Z: ZZZZiZbZBZ;ZZ ZZZ{ZZZZZ Zw Z^ ZF Z7 Z0 Z ZZZnZZ|Z?Z|ZOZZ?ZZZZZZZnZMZ7Z$Z ZZZZZZtZ]ZDZ6Z"ZZZZZRZ.ZZZZZZZZZZoZ`ZGZ7Z Z ZZZZYZGZ/ZZZdZZZCZ6Z,ZZZZZZZZpZUZ ZZ*ZZZZZZZhZCZZ#Z#Z9#Z"Z}"ZV"ZI"Z!Z} Z Z(Z'Z'Z'Z'Z'Z'ZW'Z0'Z'Z'Z&Zz&Z]&Z&Z &Z%Z%Z%Zu%Z2%Z+%Z$Z$Z$Z$Z$ZZ$ZS$Z)Z)Z(Z(Ze(Z[(ZP(Z7(Z(ZiO>%~lX+{VH5 wZH-pW;#|jV7zbD,|bQ6  | ] 2   7    1 xN! U ? , |||||l|T|$|||||||d|4||||||t|$| |||||||||||||||||||x|t|`|\|X|D|@|<|(|$| | | | | | | | |t |\ |, | | | | | | |T |< |$ ||||||d|L|4|||||t|D|,| | || |4 |skZD4#O' wiE&z`@}_   u R >    { j  h|~~ ~#~~~~~m~Y~;~#~~~~~~{~f~T~H~:~'~~~~~~V~<~0~"~~~~~{~e~L~~~~~~h~a~ ~ ~ ~X ~9 ~! ~ ~ ~ ~ ~y ~V ~H ~5 ~' ~ ~ ~ ~ ~ ~z ~L ~" ~ ~~~~~V~~~~~~~~~~~~~m~2~ ~ ~ ~w ~c ~~~q~:~"~~~~~q~c~~~~x~j~5~~~~~~~~~~~~~~t~_~ ~~~~~~~~k~#~"~"~w"~p"~K"~D"~"~!~!~!~!~w!~^!~?!~ ~'~'~'~'~l'~D'~%'~&~&~&%~%~$~$~$~s$~(~t(~`(~H(~/~/~}/~v/~\/~U/~.~.~.~.~.~p.~\.~.~ .~-~-~-~-~-~k-~`-~;-~,~,~0~0~|||||d|L|4|||ka:u^E H,`!a?.}mXN9, t]A*yj]K: +  n P : }eT)  c 3    $k23O;tbV9"jY>/fhn|`|H|0||||||Y Y Y Y Y Y jY cY $Y Y Y Y Y Y XY VY FY 2Y Y Y !Y Y Y Y Y Y Y Y Y Y z Y [ Y C Y Y Y Y g Y Y u Y Y Y %Y Y Y Y Y Y kY +Y Y Y Y Y Y Y Y v Y f Y  Y Y Y Y  Y t Y a Y % Y  Y Y Y Y Y Y Y Y Y Y mY IY /Y |||||n|V|u u u }u iu Lu 6u !u u u u pu iu Lu 6u !u u u u u mu u u u u qu ^u u u u ]u u u u u wu gu Ru <u u u u u n u  u u u u  u u n u u u f u Z u > u 5 u |||||p|I I I I WI PI &I I I I I mI OI 9I I I I I gI I oI !I I I vI 1 I I I I I wI dI j|R|:|"| |||||||||7, O\gY Hj  >+ 2 F C < : 2 g E 6$ K' , , |||||||||| |b. -4 ,9 >> YB aH ]N MT ;Y ;^ ,b Uf ^l 7r =v %z 0| + , & 1 , 8 A # 1 2 H - F 7 > 8 N . 6 j + r N'+ - LR%0"2$ *4-616k6/BGoG3SS5W&W&Z^,`dg)ilms|.0!.,ڣ{yu. >sNjعts>tG;syډy+؎JW!_ҋ>t3.5+3{ؾ ..r.6q6o6m6k6i!'ZP8{ؾ .P.ULF!-5!Y[5!]_5!ac5!eg%ʎں,!%Y!%]!%a!%e!˴׋;t?t 8gwgӃ;t ?.t&_&Wô@!ù;.PU> uFV:.<.3]U :. uvY]UVWF@+6y?;6uFVH>y;v+yV6y YYu Ʊ裶붡y3_^]UVFpr VF]w vvN u3]UN^FVFrVFv"VFvv u܋VF]UVF FuY^&G;Ft^&?|N&Gu&GV;Fu5&9W u/^&&GV;Fu&9W u&G &W&W &GPN^&G&@&+&V&G &W&W &GPR&GP;t^&Gu &OU3^]UVW3F^^&GtvvYYGFN u܋_^]UVW^&?} &G&@ ^&3+‹^&G@tC^&G&W VF&?}% N^&? uGN u^F&? uGN u_^]UvvYY te~u^&?~vvK)F V ^&g_&&G &W&W &Gvv v &GP u =u3]U^&GPYFV^&?}vvFVvv)FVVF]U~|~sVF؃VF]ˠP Y u&Pt3P33PRP P Y u&Pt3P33PRP UVW~v^&G;Fu v>ru~ur>pu ~up^&?tP33PRvv  ^&Gt&w &wYY^&g&GFV&W&G &W &Gt_ v[B F F uVYF V t ^&O1^F V &W &G&W&G &wu&O3_^]UVvv YY@FV։VFN^&:F uVF N u33^]UP33PRv ]UVWF @=s3^Htv v vv^でHF VVFF FzN^F&F< u ^& F^F&FrV3+Ѓ |IurArV3+ЃVPv;t sXF +FLNrFV~tsrV3+Ѓ v'VrPv;t s몋F +F _^]UVF^^&Gt vvYYNF u^]UVWUv+ &Fu+t-uE&F9w/0r*t ᗇ⒗&F9w0sM|؃]_^]Uvv~YY]UF~]UFP YYFPv v vv ]UVWv4tv\LT| tU!]VvDv DDD d | TL\tPPX_^]UVv |X~W6vx؋#v6}^]UD^!%]U^でHBF ^N V!rP]U"VW~ ^$w\rWFN }~t &-G؃v+6F +6F uNN6, s:FV F _^]U~ uFF3RPv vv PaPV]Uvvv v vPaP9]Uvvv v v~ u3PaP]UVW~v NsڋVF_^]UW~N F t Is_]UF Pv vvVF]UVWN ^ VFs3v~ N tNOtI++s_^]Uvvvv v  VF]UVv&F&D&T&\^]UJ^F!rSPX]UVW~2u~ +tIs_^]UVv^ t :t"t:t"t:t "u33FD^]UVW3~ 2ыvD&]+Î_^]UVW~ 2~VF_^]UW~3;Fu;t H_]UVv ,A<waD"u^]UVW~ 2^+ǎ~VF_^]UVv ,a<wAD"u^]U^HtP33PRv @^N V!rP^くHXP].;t7ڎ>t.8.;t.3P.#.....R3PXXÎ.;t.&>u&[&Ў&>u& &Q&؃>tá&&;t&... t 66&.UVW.V t.;u._^]P.3PP[[%t+3.PR[[XP3ۊܱ.SP[[[=t..ډ3P3ۊܱ.SP_[[[=t..ډ3Ë)ڣۉU3ҋF UVFVW. t^rAu; . t . tڎ9s;uGv3wH._^]S.6V.6Vr[[ u[SJ t7@@3ʁvv. ZZZ.;tDNj+&6&P&ю&>t&>&>ZZָS&S3P}ZZZU3UV F ^VW... t2 t4 &;rwӸLRPH SPP3__._^]Vt^YQ3YQYQYQUVWF V ^N u ti teu y ؃ y ۃ W33;r w;r+@[tƋt؃_^]t3[Ssـ ˀ3[Ssـ ˀ } у/sЊ% } у+s2+ӊЊ%UVWv~ _^]QЊŊYˊ%;u;.6>y2&@Ň֓6sFF>{ru2nP@%+r\QI2ً݇ËCwrBw< t< t< u2 tB uC2I,"t"<\u<"uI Y.Cۋ+r.vV6 t3FF.6>66imk&U>tI!!F,".0F2F 468w:,PP6 ]U!&&VFVF6!6!&_$6!6!ZFV;!u';!u!!!C^&&VF^&&;!u;!uԋFV&&!!]U!!VF t1!&;!u!!&&!!;Fu;Vu3]UV!,6!P !P&G+!>&Z+Ћ }3!,6!PP6! ^]UV!&G RP&GPR3ҸY[RP!&;Gt&GP P&7 ^]UV!&GRP&GPR3ҸY[RP!&;Gt&GPP&7 ^]UVW!&G&& ~&w CƙRPǙPR3ҸY[RPPP6! !&G& &~&wAƙRPǙPR3ҸY[RPPP6! _^]UP3PP6!6!!&_( !&G&W:P8P6P4P&w&w&w&wP3P ]U졄!6!P!6!P!6!P!6!P6:686664PP ]U졄!6!P!6!P!6!P!6!PP!&7 ]UV~ u!&G&W;u ;u3P2P0P.P,Pv6! 200 t62,H0.H2^]U P|DD u33PRP> 4H86H:;4~4;6~6(;8}8*;:}:4;,~,6;.~.8;0}0:;2}20;,|!2;.|,P6!6!!&_  PDD u33PRP> ]U!&G&W46&G&W8:]U!&G&G&G& &)G&G&&)G ]UA6:686664P6! ]UV!&G&WVF&G&WVF~t&G& &G&G&&G 6!6!&D& !&G&)G&DVR&o [&G!&G&;G}&G&G }&G!6!&D&!&G&)G &DVR&o[&G!&G &;G}&G &G }&G!&G&W;Fu;Vu&G&W;Fu;VtkQ~uO,".0!&2&G&W46&G&W8:,PP6" ^]UPPPPP3P H(H*:P8P6P4P6@P6HPPP 8FVRP+PRVFY[RP4RPPRVFY[RP:FVRP+PRVFY[RP6RPPRVFY[RP64:86@P6HPP ]U.6:6866643PPPP. 6:6866646! !&G&G73P6!$GP]ULL3PRfP\P<P@RP FPfP<P ' 3PRfP\P<P@RP F]U8VWv F u$! }PP !% F~uFVVډF&?tb\PvvFV t^&:uFvv<P$\P<P@FVvvvv ^&?uvPFP  tPFP ~uPFP FPg u u 6! DD33PRP> ~u\P<P@FV'P>P ta^&?t)'P>P<P t P $ DD t&33PRP>  u 6! DD\Pvv ZXVF>PF t u>PPF!!VFvvv<P  !!! !u  u 6! DDL33PRP> <P!,6!P ~u!,6!P!&G&G!&g!&&F Ft=^&&!&&^!!&&&G&W!!!!&&&W&G tO^&G&W!&W&G^&G&W!&W&GFV!! 3PnDDF Ft!!&G!&G!!&;G~&w!!&;G~&w!&+G&;G};6} 6&G!&w!&g&+G&;G};6} 6&G!&w!S&G[& !&G&)GS&G[R&o [&G!S&G[&!&G&)G S&G[R&o[&G/3~u_^]UVW3! !u!&?t!!VF3F^&&VF;!u;!ug!&;u&;tcHH!!& }PP :Nu!&&!!Nu_^]U6! DD6:6866643PPPPB 3P6!&GPz6! DD]U(FFFFFPFP,PP6< f ]UVv!&)w}&w&G u33PRP>  PDD uƙ!P&GRY[FV;,~,;.~.(;0}0*;2}20;,|d2+. |W;V|9u;Fr2.,46208:F)266H2,P6!6!!&_  PDD tR33PRP> ^]UVWv!&G &w&W+‹ }&}&G33PRP> P PDD uƙ!P&GRY[FV;,~,;.~.(;0}0*;2}20;,|d2+. |W;V|9u;Fr2.,46208:F.)::@.,P6!6!!&_  PDD tR33PRP> _^]UVv!&)w}&w&G u33PRP> o PSDD uƙ!P&G RY[FV;,~,;.~.(;0}0*;2}20+, |b2;.|Yƙ;V|9u;Fr2.,46208:F)04r4H0,P6!6!!&_  PDD tP33PRP> ^]UVWv!&G&w&W+‹ }&}&G33PRP> 0 PDD uƙ!P&G RY[FV;,~,;.~.(;0}0*;2}20+, |b2;.|Yƙ;V|9u;Fr2.,46208:F,)838@,,P6!6!!&_  PIDD tP33PRP> _^]UVv!&+w} PDD ~V/DD^]UVv!&+w} PNDD ~VqDD^]U2P0P.P,PP6! :P8P6P4PP6! ,+4=}r.;6ui!8+0&9G ~X:+2&9G~K:P8P6P4PP6! 62606.6,6:686664B %6:68666462606.6,. ]UVP|P  P P P|P2 |P  |`vv<P 4<6<P 28:,d".0,PPV CP|P  P|P P|P P  }\PP@FV Pvv &Pvv 'P>PP uw}}+P|P |PP =th\Pvv 24,G".0,PPV %?P|P |PP ^]UFVVډF&?tb\PvvFV t^&:uFvv<P$\P<P@FVvvvv ^&?uHP u\P<P@FV'P>P u\Pvv  ^&?u~jP P<P ZЁrcPP G~P<PjP RP >P u\Pvv 낚]U@V>ju>tf㍆26N2džFdžHPP2P @@!!>PP j3^]U!PFPFPP9 F%]U  uPP F FtW^&?tN PvvY FV t ^&FvvUFVVF t,^&?u!Q t 6! DD P]UVW u33PRP> 3P!,6!P1 }#33PRP> P $ DDe.P!,6!PRP<P 3P<P - })V*DD33PRP> P $ DDPV33PRBFV3PV3PRBvvSFV u? WFV |=vvvSFVFFFFVvvvvV6 FV |% vvvvvWG ;Vu;FtЍV;Fu;VtvvZW*DDV*DD33PRP> _^]U!P P3P 0 u=Hub=u0=u=u=u"=uL=u=Gu= u>=!ug=7Gu=6Mu=4Ku =ItL=Ktw=Mt|=Ru =Pt =Qt@=0RuPCDDPbDD!&G&HPDD!&G&HP2DDPcDDPDDx!&G& HP>DD`!&G& HPTDDH3PDD<!&w wDD+3PDD!&wDD3PP!PP!&!! !uePDD!,6!P!% = u33t>Ѓ6! DD|@u4!&&;!u;!t P!&ğ&7 @6!66!6!!&_ t!>.u66!GP]UVWv >2}3.;t3PPGPgF FtZ^&?tQ PvvY FV t ^&FVvv3FVVF t3^&?u( u$ t 6! DD3PP^_^]UV! !ti!!VF3F^&&VF;!u;!ug!&;u&;t!&&&!!Nu^]U2!>,uv.#Gu6)du(u)ueuYGuGu%Gu;4v/.v#PDDPDD!&G&HPhDD!&G&HP|DDPDDPDD!&G& HPDD!&G& HPDDvf P6! sG!&G%&GVPDDE3PR!&G P4RY[RPP[DD3PR!&GP4RY[RPPQDD66644662.!% = u33t6462Gw3P6462hcP6:68SNP6:68z!P2 2-!! tP64626!6!!&_( ]e!}!K!X!!!!!!!!"8!b"."!""UVW~ti!&  !&G!+‹&G&&G ǙRPǙPRY[RP9>!~>!+!&G!g!&!&G!+‹&G& &GǙRPǙPRY[RP9>!~>!+!&G!33PRP> P DD,PFPFPFP9 v~t;)~}F;v}vƙRPF!P&G RY[RPP9)~}F;v}vƙRPF!P&GRY[RPPDD,PPPPFPFP3PP3PRPPPPPPPvvPvPPP <u=P DD33PRP> ~t,PPPP3PPP _^]UVFPP!PFPFPFP3PdP,P3PPPPPPPPPPPPP6 <P DDtt<,PPPPPP3PP,P3PPPPPPPPPPPPP!P <uNtrvv ! ~]z tU!&G&G;F PDD8!&G&G;F 3PDD3Pvv6!6!!&_( t)6!^DD>ju6 DD&3P DD^]UVWv"=u!P!P$P&P 4 !< F6O}FxP<PFP xPP6< F xPPP3P6< 3P6<z "A<=:3P>P$P<P <PP j!!33PRP>  t% P DD6! DD3P DD!% = u33u1N3PPl3PF^&w&7NuO  uPP 3NPF^&w&7Nuo! !u>ju6< DD 3_^]UV3Pvv1 }P $ DD33#~uv v V .PvvFV uF@vPcFVPvv  u VD.~DDPvv  u V!-~DDPvv  uv v VQ u mPvv  uv v V0 Y HPvv  tPvv  uv v VHI v v V^]UVFЩuFPP =u03PDD> |6 *DD  j&> |c6 !DD u6 *DD > u PjPY FV^&FvvjP  PjPY FV^&F> t?'P!PjP t#P $ DDvvjP Uvv @Pvv\PjP@FVPR!P Z[CRS FV!Pvv !PP .PvvFV ukF@vPcFVPvv  u-jP.~> tvvjP j_Pvv  uX3PjP1 }-P $ DD> tvvjP 6 jPY Pvv  tEPvv  t.Pvv  tPvv  uFPvv P2  PP > tvvjP XN3PjP1 }+P $ DD> tvvjP  S!!^&G ^]UVP|P > t\P|P@FV/Pvv 'PPP|P u8;PFvP 'PPP|P u?PFvP 'PPP|P uCPFvP 'PPP|P u^&3PR|P<P GP Z3PR|P<P ui'PPP|P tP $ ;\P|P@FVnPvv  P|P1 }P $ 3PV66B;u:;u4jP3PRV6  ulj;u;t P $ DD{ |PP ~t`PP =uC3PV66B~tP3HPRVGP3HPRV6 V*DD^]UV VFFVF N 3 PRvv0^ &Nt(3 PRvvFV u N ^ & N^]UFFFF6u6V6Pƺ؁@N}% = u33t/  -  ;6| 6z WRP6 6 @RP F&&W PFP  P&w&76  P&w&76 5P~DD9PqDD>PdDDBPWDD PJDDP=DDP0DDP#DD"PDD%P DD*PDD/PDDFPFPFPFPP3P FPFPFPFP6P vvvv3PPPPP  3F6^uhP6PFFvP vvvvPVvvN Wvv uhPvv6P VDD=Htc=t =Ft=GtMi=ItJ=Ju+Y,?+Nj66 666 663FP P &w&7| &w&7| 5PuDD9PhDD>P[DDBPNDD PADDP4DDP'DDPDD"P DD%PDD*PDD/PDDHu PDDvvvv3PPPPP  _^]UP^&w33PRBFVP^&w33PRB+FVFV3P^&wvvBvvS^&&W uM WFV |!=vvvS^&&WFFFV ^&&G^&G&&W&G &GV&&&W&G]U WFV |!=vvvS^&&WFFFV ^&&G^&G&&W&G &G&V&W&G]UV^v&3&+GFVF&G &W&&G&G&;v7&w&7vv&wG ;V|;Fs^&G&&W&G^]UV^&G&;wt&G &W&&G&G3&+FV  u wX^&w&7vv&w6 ^&W&؋v&\&T^&G&;w^&G&7&&^]UV^&G&;w v v^&G&7&V&^]U^&G V ;Fu&9Wt^&w &wZ^&w*DD]UV^FVv v ivvv`vvi^]UV^FVvvidvvi^]U]U>tv vv&_$]U>tvv&_(]U>t&_,P DD]UVv Vvv^ N}^]U"^&^ &^&F^ &F nF^V | s]UF Fu^&G&!!!!&GH!&!!&GH!&G!!&G&W!!!! !!!P!P!P!PP3P !!!!!03PR!P!P 3PR!P!P !P!P!PP6< f ]UVv 33PRP> F Fu P&PV  t *vv  }3FV։~>BuBPBP FPFPFPFPBP FP;FPFPFPFPP3P vvvvP3PBPN  33PR33PRP> ^]UV%^&F^v&&GF&Fn F ^ V | s^]UVW~: t3PRvv^&7F^S&[&G^&7Fn F ^ V | s_^]UVWv~ Nƻ 0^&Ot ƙ u N^& O_^]U  t7~t>u3P6<u3P6< ]U~t3P6>t3P6 F]UЍxVFPR  ty^&?tpF<^^F&^F& uN^&\t&\F^&SF^&CF^&RF^&AF^&PF^&PP 3]UVv tNƺ^&G u:Pƺ^&G 5P66663PVvvH ^]U VWF ^؋F &+GPF ^&GZ+ЉV;F~F^&GFFFH+( ~)vF ^؋F&+GPF ^&GZ+ЉV;F~F^&GFFFH+* ~)v^F@&GF@&G33PRP> FPuF ^&G % uF ^&_ &6666P3Pvv^ uF ^&_ & FPFPFPF P9 vP DDvv P3PvvT }3Vvv33PRP> FPF PVvvY FPPPPFPF P3PP3PRPPPPPƺ^&wƺ^&wvv t3PvPPP <33PRP> Vvv=uP DDƺ^&G u;v u3 t%VvvOt3P2P 33PR33PRP> ~tFPPPP3PPP _^]UV3zPR^&PR3ҸVY[^P&GRPR3ҸY[[Yv&DQSPR3ҸY[[Yځ =SQ^]UFFFPP6< FPFP3PP6< F]UvvP6< PP6< F V  PPPP6< f ]UVv!t;vu;6+~'^]UVv!uuF;6+~(^]UVFFF"FFF$ VЈVF$ЈVF$ЈV^F)nF*FFF }FfF }F0fF }F fF }FfF }FfF }F0fF }F fF }F^F!N|"F^!F^㋇!^㉇#ff^v!$n}F> }  HFFF;F| ;F~FFF+>+ ^v6< ]F+;FsF^F(^F'N}^]U VW^&uFVVF^F&?t^&G; }&G 3PFP3PV6<b vvV6< ^F&F^F&F^F&FF;|^&_^]UVW~ ǻH3WV V^ ؉^V~tvv33PR^&PR3ҸY[RPFF3PR^&PR3ҸY[RPFF3PR^&PR3ҸY[RPFFFP3PRvG F;1_^]UVWFVVF^&F^&G; }&G 3ƺVvR3PV6<b F;|33PRP> PF,vP1 }!33PRP> P $ DD^&O&u?&uF FPVFV%PRBFP3PRV6 ,|=s%V*DD33PRP> P $ DDP3PRFP ~APtw~CMtmvv9~}FPV3Pu 3PVPRB@RPFvPFvP3PRVG vvWVP @RPFvP?PV33PRBFVvvSFV u%V*DD33PRP>  P $ DD3PV3PRBvvvvV6 FV3PV3PRB^&uF FFVVF;F|:;Vv3vvZV*DD33PRP> P $ DDaP3PRFFvP ^^&G&W %VFP3PRFFvP ^^&HDtC&?BMt9P3PRFvP ^&G&WP3PRFvP vvvvVG Ǚ^&&WP3PRvv IP3PRVG vv3PRVG vvWV3P 3PRvv욋^&GFV &G3PRvv욋@RPFvPvv3PRVG NP3PRVG FvP3PRVG vvWVP @RPFvPFFvPFV+VFPRVG vvZ^&V*DD33PRP> _^]Uvvv v E^&GP&GRY[^P&G RY[FVvvS^&&W u & ~^ &G&^&&Gv^ &w&7^&w&7 ^& tvv&w&7v v vv6<v ^ & tvv&w&7^&G&^ &;Gu&;t^&w&7Z]UnVWFFF^&G^PRv &&+G[YډNʉ^^&G^ P&G^&+GR[YډNΉ^^ &G&+^̋NډN҉^ԋ^ &G&+G^ЋNډN։^^&FV&FV&F ~(NVFFVNVFFV~},NًVFFVNًVFFVFV;Fu;Vwn^FVV҉FԋFV;Fu;Vwn^FVV։F؋FʉFFΉFF҉FF։F^ &G&V‰F&F+FF&GF+FF&G;F &G;F~`^ &G;F&;FF@&^ &G;F&G;FF@&Gv v 6< r F;F} F;F} ~t^&tFvPFP^&tFF&uT> | vv6FPFPFvPFPP6<l > }< vv, FPFvPFPP6< f  ^&uFvPFPFPFvPE~TF)FFF@F~}#FV+@FhFV+@FOFNV+@FHFЋV#)V!~FNV+@FHnЋV#)V!~FF~t6PFRY[PFRY[RPSFV uPP6< | P6<z FP6< r 3P6<z P6< | | ^&FV&PRVFY[FVFPFPEFVVFFVVF~|F؉FNVFFVN^VЋFΚVPFʱNZVNtF)^FVVFFFFVVFFFFFFVV F FF~^ &FF ^^&^ &FF ^^& б^ &FF ^^&^ &FF ^^& ^&FOuNttNtT6NtF)^FVVF33҉VމFVډF܋FVVFFFFFFVV F FF~^ &FF ^^&F^ &FF ^^&F^^&^&^ &FF ^^&F^ &FF ^^&Fڋ^^&F^& F&F^ &FF ^^&F^ &FF ^^&F^^&^&^ &FF ^^&F^ &FF ^^&Fڋ^^&F^& F&FOtNtNtFVVFFFFFFVV F FF~3^ F &?}^ F &?}@^ F &?} ^ F &?}^ F &?}^ F &?}^ F &?}^ F &?}^ F &?}ƀ^ F &?}@^ F &?} ^ F &?}^ F &?}^ F &?}^ F &?}FF^ F &?}F^&7FOtNtNtd~uxN^VЋFΚVPFʱZVFVVFFFFFFVV F FF~^ &^&F FOuNuNuVЋFΊNPRVFY[VPFʱNZVNtF!^FVVFFFFFFVVFFF~FV׉V F ^&^&^&F&^ &FF OOuЋF V VFnuNtyNtF#^FVVFFFFFFVVFFFFVV F ~^&^&G&^&&GFFOOuӋ~^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF FOOuntNNt..FFVVFFFFFFVVFFFFVV F ~^F& } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&F } ^F&^&Ft ~^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF F^ &G&^&&GF FOOt5ntNtF3+FRPvvFVVFFFFVVFFVVFFPFP6<v FF~uN> | vv.FPFPFPFPP6<l > |.vvFPFPFPP6< f vvZ_^]UVW~ }%FPPFPFP9 FF FF ^&&F&&w+.GFGFGFGFGFGF^&G+&&G+&w &&G)F F ~ ~ ~ ~ &w&G)F F ~ ~ ~ v ~~+~ ^&9}& }3+v ^&9w }&w }3^&&w@Z;Z_^]U]UF =-u =tc=t{=st=tt*^&|P3PPvvu 3u^&P3PPvvN 3N^&u vv31^&t vv3vvl3]UVW~ v ~t^&t3`^&t+bd^&3H^&|3 0F^^&} -&*^&~ +&^&F^&F^&FPP^&1PP^&1PP^&w1P^&tINPP2 N PPVWPPHH؃wJ.=PVWvv .PVWvvk vv vv_^]6666)UbVWF FF %FF %FƙPFRY[FԉV֋ƙPFRY[FЉV҃~~ FF~|+ЉVދF;F} F t~}F~uFFPRVҋFY[F̉VθNF@@F܋FމF tFFރ~t fރ~tfދF3FVRPSFV uv*DD P $ DD33`Fޙ^֋NSQSFV u*vvZv*DD P $ DD33>u PP^F&GF &F &~t FƉF FVVFVV܉VFFVVԉVFN~uF~ }vv3PRv6 ^&MGt&?XItvv3PRv6 3PRvvFvvTV^؉^Vvv3PRv6 3PRvv^؃v.-vv"VvRvvfvvVvRvv>vv{߃Pvv^X&uvvV^؉^V^&}^&FF^&}^&FF^&}^&FދF;FF3PvFRPBFFP3PRv6 ?|=s8vvZvvZv*DDP $ DD33D P3PRFP ~DYu ~BOu4~APt~CMt^&FFFP3PRv6 vv߃V^؉^V33PRFPR3ҸY[RP^&F33PRFPR3ҸY[RP^&F33PRFPR3ҸY[RP^&n^؃v. -vvރVvRvv݃vvbރVvRvv݃vv܃Pvv,ރ^X&uvvރV^؉^V^&}^&FF^&}^&FF^&}^&nFȃ^V | vFދF;FFPvFʋVȃ%PRBI^؃v.,FuDFVvRFVvRF%~P_܃N}*~PP6< PP6< PP6< rFu@FVvRFVvRF%~PۃN}*~PP6< PP6< PP6< Ft^^& F%~Pڃ^^&N}FtF^&&GFV^؉^VF%~F^^&}^&FF^&}^&FF^&}^&N|y^F&&LJFV&&&LJ~|&^F&F&FV&&&W&G&G&G&G&G &G&G &G &O"&G$&O&&G&O&G(&O*FFFP v3PvvL FFFVVFFVVFF F~uFPF t =uFPF tXFVVFFFFP^&FN}FF^&^&FFN}NFP=tFPFFPFFP^&FN}~}FVVFF~}Nf^F&Fnu~~uFP^&F`FPF |$FP^&FFȈF }(FPF^F&FFF ~F;FsQF %FF;Fs+FFڋFVVFvދ^؃v.,F3FFVVF^F&t ~fvF;Fr^&A&^&&GFnF uFNuMF3FFVVF^F&t ~fvF;FrFV׉VF^&^&FF^&^&FF^&^&FFnF uFNttF3FFVVF^F&t ~fvF;Fr^&^&FnF uFNufFNtFFFVVFFF^&^& FFnuƉF)FF;FrF;F|v FFVVF^&?FFFF;F}^&#?^&?FF;F|كnuF%>F^F3FFVVF^F&t ~fvF;Fr^&^F&: ^F&nF unFFNuAF%>F^FFFFVVF^F&tF FfvF;FrFVVʉVFF^&FF^F&:F~F^F&:F~F^F&:F~FʋFVVFfʋF uFF^F&FFNuK~ptEfʊF } ^F&FFfʊF } ^F&FFfʊF } ^F&nF tnFFNtF܋F;F u#FPvvZVFF;F}_^])a))H**m+$$$&.%l%"""##<#. . X ! U(VvFP3 PRV6 ~RMu~FOu~BMu~ILtV*DDP $ DD33FP3PRV6 !|=sV*DDP $ DD33~HDu~BMt=P3PRFP PVFދV܃%PRB{FP3PRV6 3PRFP3PFPvvFPV ^]UFP3PRv6 3PRFPvvvvvv ]UVFF>tD3Pvv1 }P $ DDHFP3PRV6 V*DD3Pvvf3>ux t*FH>!@PFZFFH>!@PFZFB!RPFPFRY[RPF!RPFPFRY[RPFF>t +FF>u~F>t +FF>u~FHFFHFFP6666Vvv6 6 DD6 DD3P3PRf^]UVW~FPF F v P6< s F V VF36.^F&?u6,9vv v Wv6< FWVuPPV/.;F|v v Wv6< "PP.Pv v Wv6< _^]Uv6< .P,PFPPv6< >Vt3VP6< FPP6< s F.FPP6< s .+F3+,]UV^&;F u &;F uv v ?^&&&} ,&(^v&& F&&..&^&G& &G.&G &G&&G .&G3PZDD^]UVv ^&G8&GP&Ghvvvvv VvvN >Vt3VP6< >tP6< FPFPPP +P6< ƺ^&Gƺ^&w&w ^&GPƺX&GPƺ^X&G+FP^&w6< F=}p>t66< FPPPP66< 3^]UVWv.P\P<PRPFV t^&33PRP> 3Pv v <P RP -F }"33PRP> FP $ DDFFFPFVVF^&G&&W ЉV^F&F t=tVFP PFP PNuFP}FP33PRP> `^&%?F |3t-FPPFPt01Pt-FPPFPtEFPt-FPPFPt23Pt-FPPFPt45Pt-FPPFPt67P uvFPPFP t89PFFPv3_^]U,VW.P\P<PRPFV t^&33PRP> <Pc3PP<P RP - }!33PRP> P $ DD~FPFVVF^&&VFFFFVVFF%FF0~9~FFBVFFVN}FPFލF6P|FP:PFP P3VFVFFP PnF^V |k rgF;Fs3^&FFF0~9~F09~ F FFPvFPVpFP PFF)F^&FFFP~ }.FPF;FsnF^V uFP PFP PF;FsLFP}FP33PRP> _^]U VW^&&;u;t^&&v v 6< r ^ &^& }-&G&GP&G &oZJ^ &9w~ &G;}v v P6< ^&w&+GP ^ &&W^&G&+^ &^&^ &+^&&VF&t }IN^& t7:uF N^&:tFF^&G F^F&1F| ~^F^& t$:uFF^& F^F&1N& }N^&?uF| ~F^&?uN^&;Vt&VP6< FVVF^&&&G&o &W+ЉV‹,F^& t= ty=u>VtvvWV)F@vPWV6< ^&^ &;Gv,FVVFv v 3P6< ^&vvWV^& 6,^&ƙ&+6,vFVVF+^&vvWVq^&F^&%1VVP6< FVVF_^]UVW^&&;u;t^&&^ &GF&GF^&}&GP&G MZJ;v}v^& }&G&GP&G &oZJ;v}v^ &G;F&G;F^&G &;}:v v 6< r ^ F&GF&G&;F~&G;F~}>Vt3VP6< ^&&GF&w ^ &G^&+GP FVF@FF)F^&w v &&+GP FVF)FFF^&w^ &G^&+GP FVFFF)F^&w^ &G^&+GP FVF)FFFtv v P6< FVVF^&GFF^ &G+F3^&G &;}&G&o &W+Љ3FL^ &+F3^&GFF0^n^& FF^&3+FFVn^& n^FV;F|;Vsڃn^^&^&nF^V | sӃn^& FF) n^&7n^&7n^&7n^FV;F|;Vs^^&n^& %09~n^&?09~n^&7nF^V | sn^& n^& n^&:FV3+ЃV^F%09~n^&7VFFV~x/wɃF..F.<. , ^&G3N|FV~tv v 3P6< _^]U3PtDD]UF =.u=th= %tI=-ts =1t= 2t PPvv3 PPvv3PPvv33PPGP Z3F,vP<P ^&}vv3PPvv 3T tD^&}vv+PPvv 3PPvv 3]UVv t(uv v vvF^&G9t3,Ptz!PZP2 P^&}PP2 PsP^&G&&W R1^&u&  &+Pv v VPKKww. +PPvvW3PPGP ZEF,vP<P ^&}vv3PPvvW ^]˂UVW.P.PPP P6< 3ƺ؋..ƺ؉ƺ؃t$.PƺXF= |..>_^]UVW~F VPRSFV uW*DD P $ DD331FV^&&VF^&FFVVFvvv vW6 V^؉^VW*DD>uFF;Fvn^& udNF;FvY^& uONF;FvD^& u:NF;Fv/^& u%FNF;Fv ^& tnF^F&&LJ&LJ&G &G&G3FF ^F&F؃v.DNn^ ^& u&u^&G;V E|;Fs>~ u~w ^F&G#N^&?uF^&F^&F^&F^&G FF "^&FV &RPv v)FV F F;Fr^F&? uFv^F&-0؃wM.@:4.("  1vtf^&G^&FE^F&F=t?f?1v3v~t.^&G^&F F-FV ^F&FF;Fs(^&G;V E|;Fs>~ u~w ^F&G#N^&?uF^&F^&F^&^&O | N^&?t^&G  vvZP $ DD33PtDD66C>t3PPGP Z^&&.&G &&.&G&G@..&G&G&G &O"&G$F&O&&GU&O&G(&O*VF_^]%+17=CIO___________U[''yUVv~ |~v FF F VPRSFV uT W8FV |% vF VPRSFVV*DD P $ DD33DFvPv vV6 FV V*DD~ .u~w&vvZPP 33>uFV^&&F&&G&GLV ^&G PtDD66>t3PPGP Z^&&.&G.&G ,&&G.M&G&G &O"&G$F&O&&GU&O&G(&O*VF^]UlF& tlj,nFj,+FP6 >jt/h, i, ^Ƈj, +^Ƈj, nFj~tETt=FFjh,i,4^Ƈj,+^Ƈj,5 >l.sl]UVv16TTtP*DDt01PDDTtPDDtEFPDDTtPDDt23PDDTtPDDt45PDDTtPDDt67PyDDT tPgDD t89PRDD6T^]ULLVvF- ؃v.' PDD3PDD3FP3PRV6 uFP3PRV6 ~uPDDDF%?Py: 0FP3PRV6 | v~ uF-FPDDFP3PRV6 ~'u v PPDD3PGDD^]@XoUhP P,PL >tPDDC+PDD3PDDʸ]UVn tc^&&&;u"&;u&&&;u &;u ^&&&&&&&&W^v&D&9u"&9uF&D&9u &9u^&G&&&G&&^&&G&&G &tVFVVF^&F&&&&v&&^&&G^&&OufZ^]UVW~.(;u~62.60.㋇3PR&.$.Y[RP㉇3 u36.6 .㋇3PR ..Y[RP㉇3 t3.)362.60.㋇3PR&.$.Y[RP㉇3.3.)36.6 .㋇3PR ..Y[RP㉇3>4.u.+3㉇3.3NN|_^]UVW>.\P6*.6(.3+(.@.㋇x/㉇x/O=}(.&㉇/N}_^]UVW. uv.ruuukt;yuEHud.KKw.GGGGWDDA.;u)6.6.x/PR ..Y[RPx/ , . ..36.6.0PR ..Y[RP3 t33>.u >/:tW;DD>x/ty6.;63~630.H;63}636.;63~63 .H;63}63WDD.;3~3.;3~3.;3}3 .;3}%3 x/..33 ..33 , _^]wwy{{{~~{ eUVv v 6< r v v P^& ^&G&W+£.&G&W+£.&.&.&4.&&0.2.&& ..&&$.&.&&. .&&..^ &G&..&G&W. .FV,(.*.FVV F ^&F FF^ &FVF ^ &FVF FF ^ F &.=t=t0FVV F FV 3+Ѓv&&^ &.F ^ &.F ^ &.F ^&..FV |" vvv v 3P FF .FV |" vvv v x/P FF ^]U  t3P^& ^& DD]UVWv F =stF =t=t$=tuPvvs3Pvv]3^&& tcFVVF^&F&&&&~&&^&&G^&&Ot u;Z3h^&& tRFVVF&F&^&^&^&G^&&&&&G;Z3_^]UVWv ~t^&& t3^&& t3 P,.P^&G@P ^~&E&9u#&9uF&E&9u &9u ^&&&;u#&;u&&&;u &;u N PPv VP0PKKv.o VvvYFVVF^&F&&&&~&&^&&G^&&OtuPFVVF^&F&^&^&^&G^&&&&&G;Z_^]˦ i  UFP3PRv6 ~~34.F.>4.tFFأ.FPFR[Y+SQ0.2.FPFR[Y+SQ ..F$.&.F. .F]UVW~PW FPPPPcPW FFPPFPFPPWlF@FFPR3ҸHY[RPFPR3Ҹ8cY[RPF RPƙPFRY[RPFRP&.$.3ҸdRP$.&.ƙRP ..3ҸdRP. .PW _^]UVW~W:DDFV)FV F VPRSFV uW*DD P $ DD33^&LJ&LJFVVF3PWvvBvvv vW6 FV W*DDF V^&^&?t&t\P<P@FV^&G&G F^&^&FFN}^&vvZ3P<P1 }P $ DD33WD.~DD>0u0P0P!FF F6N}fPFPFP ~ vvZ P $ DD333  t3Pvnlv^&G&LJ&LJ&LJ&LJ.&.&4.&2.0.&&. .&&&.$.&&&& ..&&&&F&&G&G &&G&&G&G&G &G&G&G &O"&G$,&O&&G\&O&G(&O*VF_^]UVv P6*.6(.Y F؉V&".".P6*.6(.f.P3PRV6 .P3PRV6 .P3PRV6 ..FV | v3PvvV6 .FV | vx/PvvV6 >.u3P3PRf^& 3z.P3PRV6  u >.t6 DD6 DD.P3P6 3PDD3P3PRf^& ^]UFV(.*.3Pv v DDRPBPDD6!6!6 ....>u$.&.. ..>t +$..>u>..>t +..>u>."...H.H ..PP6 ʸR]U(FVVFF FF FF FFFFFFFPFPEFPFP6<v ]U3DPRFvPFV;F u;V u3PPRFvP ]UVv^F V &WVF&G*&W(VF33PRvv3PPRF vP FnF^V | s^F V &WVF&G2&W0VF/3PRvv3PPRvv FnF^V | s^F V &W VF&G6&W4VF uZ^&GP&GRY[FVvv^F &v Pvv^F &Gv P3"PRvv3PPRvv tZ^&GP&GRY[FVvv^F &v Pvv^F &Gv PF"nF^V ~| r^F V &WVF&G:&W8VF u-^&GP&GRY[RP^F &v P3PRvv3PPRvv t-^&GP&GRY[RP^F &v PFnF^V ~Z| rQP^&w>&w PF,vP1 }!33PRP> P $ DDFVVF^&&VFPV33PRBFV3PVF3+FRPB)FVFvPvvV6 3PV3PRB^&wvvvv ^&uvvvvAFV;Fu;Vuvv3HPRVG lFVVF^&^&FFOuFvP3$PRVG FVVFnn^&^&&GOuFvPvvVG V*DD^&w&GPvvvv 33PRP> _^]UV^&&&VF&&&v&VF~ t6^&G&W+^&G^&G&W+^&G.^&G^&G^&G^&G VF^]U~ t<^&&&&&;|Vu&;rM^&LJ&LJ:^&&&& | s^&&&&3PvvfZ]UVWPvvFV^&G&G&G&G^ &9}&9w} ^&u v v 6< r ^ &9?}8&9w}2^ &G&+G@P&G&+@P&w&7P3PvvN _^]U]UF = %t5=st=tt:3Pvv3)Pvv3vv3]U~t^&u &u3PP^&1 P6.P^&@P ^&t7%N PPv v PJP=t =t=t'23Pvv Pvv vv]UVW~F VPRSFV uW*DD P $ DD33FVVFvv3$PRW6 )FV ^&t?FF$VVFFV$VFnn^&^&&GNu^FV&&F$vPv vW6 W*DD^&& u vvZP $ DD33^&&% t3^&GPvvFvPc >JuJPJP^&G&G &LJ&LJ3Pvv3^&G&G&G &G&G r &O"&G$ &O&&G &O&G(t &O*VF_^]U]U]UV~ uY^v&D&9u"&9uF&D&9u &9u^&G&&&G&&[^&3&+&;u&;u&u &tn^&3&+&&&LJ&LJ^&&^&G&&^&G fZ^]U.3PRF3-3RP..<. , ڸ3]UVWv v 6< r v v P6< F3^^&&VFVF&3+FFV&G&W+‹&&;Ft ;Vt&G^ &^&+GFFVVF^ &G&+FFF^&;v&&VF^ &HNF^&;rFF^&7FF^&PZ+™^PR&&Y[^&FF9Fu2~4u+vv]FV^&&&&GFF;Fstn^&G&W+‹&&^ &H+ƙPRVFY[RPF^&&^ &G@+ƙPRVFY[RPF^&;Fv&&VF^&;Fr&&VFvv^F3&+&P&[RP^&F^&PZ+™^PR&&Y[^&FF9Fu2~4u+vvFV^&&&&GFF;FsCvvv v 3P6< _^]U]U^&&& `PR^&]UF =1u=t(=u=t1= 2t?=su=tuPvv3Pvv3>Nu vvRvvD3bvv.vv 3>vv 3-Pvv3Pvvn3]U V~ts^&&VFFFF^N3 PRvv0^&nF^V t(3 PRvvFV u N^& nF^V u w^&u&RP `PRFV8^&=t =t=tFrF0 FaFF P(Pvv ^v&D&9u#&9uF&D&9u &9u 0^&3&+&;u&;u&u &u C^&t V^&t aN PPv v PlPHH؃v.6PvvnPvvUqPvvB^Pvv4Kvvvv)vvsvve vvT^]00#U VvF VPRSFV uV*DD P $ DD33^&&FVVFVVVF&&vvv vV6 V*DD>lul PlP^&u1&?u*&G ^&&LJF2FVVF~^&u)&?u#^&LJ2&LJF"FVVFJ^&G&%=Nu4JOu.&G^&&LJFN^&&F;Fw^FV&&&G &G&G&G&LJ&LJ&G &3+F&&&&^&G&G X&O"&G$&O&&G&O&G(&O*vvVF^]....., x0UFV11. ...., x0]UFx/Fz/F V 11. ...., x0]UFx/Fz/F |/....., ^ z0&^|0&^~0&^0&x0]UFx/Fz/F |/F ~/F/F/F/F/F/F/F/F/F/F /F&/F(/F$V"11....., ^*z0&^.|0&^2~0&^60&^:0&^>0&x0]UFx/Fz/....., x0]UFx/F V11.4...., x0]UFV11.6...., ^ z0&^|0&^~0&^0&x0]UFx/Fz/F |/F ~/F/F/F/F/F/.3. ..., x0]UF x/FV11.2...., x0]UFx/.5...., x0]UFV11F V 11.Z...., ^z0&x0]|ںs|UFx/Fz/F |/F ~/F/F/F/F/.I...., x0]U.M...., ^z0&^ |0&^~0&^0&x0]U.O...., ^z0&^ |0&^~0&^0&x0]UFx/F V11.N...., x0]UFx/Fz/F |/F ~/F/F/F/F/.J...., x0]UF x/F z/F|/F~/F/F/F/F/FV11./...., x0]UF x/F z/F|/F~/F/F/FV11.*...., x0]UF x/F z/F|/F~/FV11.+...., x0]UF x/FV11.,...., ^ z0&^|0&x0]UFV11F x/.r...., x0]UFx/F z/...F. , ^ z0&|0&G~0&Gx0]UFV..FV..Fx/F V .m..F. , 3]UFV..FV..Fx/^&z/&G|/F V .y..F. , 3]UF V.r..F. , 3]UF V..FV ...n..F. , ]UFx/...F. , x0]UFx/...F. , x0]UFx/...F. , x0]UFx/F z/.'..F. , ^ x0&^z0&]UFx/.j..F. , x0]UFx/...F. , x0]UFx/.k..F. , ^ 0&^0&^0&^0&x0]UFx/F V ...F. , 3]UFx/^ &z/&G|/&G~/...F. , ]U...F. , ]UF3F 3.i..F. , ^ x0&^z0&]UF V .F..F. , 3]UFx/Fz/F |/F ~/F/F/.l...., ^z0&^|0&^~0&^0&x0]UFx/.f...., x0]UFx/Fz/F |/F ~/F/.d...., x0]UFx/.g...., x0]UFx/Fz/.j...., x0]UFx/Fz/.h...., F FVF^&_z0&^ w:.F^&_|0&F^&_~0&F^&_0&x0]fffffffUFx/Fz/F |/F ~/F/.e...., x0]UFx/Fz/F FV^Kv.F^&G|/vF^&G&W|/~/^F^&G|/F^&G~/F^&G/F^&G/$F^&G&W|/~/F^&G/.i...., x0]3CC[33333UFx/.k...., x0]UFV11.P...., x0]UFx/^F VVF^F&^F& u...F3+FH.F. , ]UFVFx/^^F &F^F&F^F&F^F&F^F&FF VVF^F&^F& u...F3+F.F. , 3]U...F. , ]UF3F 3Fx/^FV VF^F&^F& u..F3+F H.F. , ]UF3F 3F33Fx/^FV VF^F&F^F&F^F&^F& u. . .F3+F @.F. , ]UFx/F V F V Z.f..F. , x00]. ...., x0U.e..F. , ]U...F. , ]UFVFVFVZ.d.. ^ &. , x/x00^ .&]UFVFVFVZ...g^ &. , x/x00^ .&]˸UFx/.w..F. , x0]UFx/.x..F. , ]44P4PP< 4%UFF4F5F 44G4P4PP< >4t 4^&?t\^&G3]UF44>4P4PP< >4t 43]UF4F5F 44<4P4PP< >4t 44]UF4F5F =44P4PP< >4t 44]UVvFF~ |~v4n^ F4FF F 4F5644?4P4PP< >4t 4:4FVVF 3ɻF V~ ~mu ~vbVF^]UF4F4F 4F B44P4PP< >4t 4 434]UVvFF~ |~v4n^ F4FF F 4F5644@4P4PP< >4t 4:4FVVF 3ɻF V~ ~mu ~vbVF^]UVF44H4P4PP< >4t343]44H4P4PP< 43ұUF44I4P4PP< >4t 43]4/4P4PP< 44UF4F5F 44N4P4PP< >4t 43]4O4P4PP< >4t 434b4P4PP< 43UF4F544P4PP< ]U...F. , ^x0&^ z0&^0&^0&0&G0&G0&G0&G^0&0&G0&G]UFx/^F VVF^F&^F& uFV .t.F3+FH.F. , 0]Turbo C++ - Copyright 1990 Borland Intl.Divide error Abnormal program termination [1][Keine weiteren Fenster|vorhanden! Abhilfe durch|Schlieen eines Fensters.][ OK ][1][1STVIEW-Warnung:|Die Gerteausgabe funktioniert|nur, wenn Sie ein GDOS im|AUTO-Ordner installiert haben.][ Aha ]*.*1STVIEW 1stView: Datei(en) berneudumpenladen [1][Um Dateien auf ein Gert|ausgeben zu knnen, mu ein|Spooler-Accessory namens| installiert werden.][CHMELEON.AC*Install.|Abbrechen] Aha ]1stView: Datei(en) spoolen[1][1STVIEW-Warnung:|Der Spooler-Puffer ist voll.][ Aha ][1][1STVIEW-Warnung:|Fehler beim ffnen des|Ausgabegertes.|Ausgabe wird abgebrochen|und Spooler-Puffer geleert.][ Oh jeh ]\ | |( |+ | | |)T |W |( |o | | | | | |  | | | | | | | | | | | | | | | KRB> |>2'R> |:| : |  R |  V| r| # W | Z ||#_ |f | l | s | #x |~ |  | '$  | # | ~ |  |  | !| $"## # |! |%&# & |$ |(. )|-*,#+ |, | ) |.|'/1#0 |1 | . |G3F> 746#:5 |6 |3 |(<8;#:9 |: | ;|" 7|. @=?#:>|?|<$|(EAD#:B1|CD|DJ|#@R|0FT| 2g|" H{| I|  J| K|$ LL1KMN AN| L | L | [1][1STVIEW-Warnung:|Ausgabe von XXX-Dateien|wird noch nicht untersttzt.][ Na sowas ]21Gertenummer: __99 ABBRUCH D. AUSGABE MIT L.SHIFT-R.SHIFT 00Linker Rand: __ ZeichenSEITENVORSCHUB NACH DATEI:QUALITT:X-SKALIERUNG:Y-SKALIERUNG:HORIZONTALE AUSRICHTUNG:VERTIKALE AUSRICHTUNG:CALCLOCK ________ xxxxxxxx1STVIEW: Ausgabe-Konfiguration Digital Design, Apr 06 1993Allgemeine Parameter...TextJaNeinnormalDraftLetterMetaGrepassendOriginalImagePixel 1:1BruchGanzLinksMitteRechtsObenUntenStandard-AusgabeFensterGertControl-P-AusgabeInternExtern:Text-FonteinstellungNormalber VA_FILEImage-Ditherfarbenkeine2 (S/W)8Sound-Parameter...Gerte-Parameter...LadenSichernOKAbbruchMEM: XXXXXX KTOT: XXXXXX KIMGIFFRSCGEMSAMSND[2][1STVIEW:|Wollen Sie die Ausgabe|wirklich abbrechen und den|Spooler-Puffer leeren?][Abbruch|Weiter]1STVIEW.AC*APPPRGGTP1stView: Programm finden[1][|Voreinstellungen|sichern?][ OK |Abbruch][1][|Zuletzt gesicherte|Einstellungen laden?][ OK |Abbruch] X(U&mW CALCLOCKSeite XXXAbbruch nicht mglich!&|  Drucke[1][|Kein Clipboard-Pfad gesetzt.][Abbruch]XXXXX *XXXXX Pixel---- XX Ebenen ---- Sichern (XIMG) ^X Original-Pal. ^E Standard-Pal. ^S=3?1)&*% 784;" , .>0<2+$ ('5:69! /# -MMM  |||| ||"| 5| |  -- ^++ ^ Transparent ^K--- Farbpalette ---CMAPXIMG XXXXXXXX-Font ^E---XXXXX Zeilen --- >> OUT-Datei ^X p|||||X|k| |j,|--- System-Font --- Norm (10 Pt) ^N Mittel (9 Pt) ^M Klein (8 Pt) ^K-------------------Wl.DMP.OUT.TXTVA_FILE [1][|Nichts zu dumpen.][ OK ] Fenster ^E Original ^S ||||,.|  |  |- Mastab / Seite -1 ^ -+ ^---- XX Bume ---- Ix86 -> M68k ^K M68k -> Ix86 ^K ||6.|| | 7|<< ^>> ^-- Konvertieren ----- Hertz --- Fenster ^E Original ^S Norm ^N DMA ^M   |0|t|(|y| C|~| V|  a|   |- ^+ ^----- P L A Y ----- STOP ^T !!!!! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 777  CB0DXl  4   ###.|x/|3|x0|0|.|.|x/|x0|1|3|. F.. F1STVIEW C aXq1STVIEW H z?1STVIEW PRJ CONFIG DFN pzCONFIG H pNCONFIG RSC px CONFIG RSH p,DDSTART O /%:DDSTART S V%/IMAGE C |] LOADER C Ap'META C ! @1PLAY_SAMS @%RESOURCEC .&SOUND C ܉!)k TEXT C V+21MUTIL C pF&UTIL H pPXEAD_ME TXT #include #include #include #include #include #include #include #include "util.h" typedef struct view { int handle, special, /* AES-Fensterkennung; special. */ lbc, /* left-border-count fr Fenster. */ tlc, /* top-line-count fr Fenster. */ bc, /* border-count fr Fenster. */ lc, /* line-count fr Fenster. */ xfac, yfac, /* Scroll- und Rastereinheiten. */ x, y, w, h, /* Arbeitsbereich des Fensters. */ hslide, vslide, /* Puffer fr Sliderpositionen. */ (*key)( struct view *tv, int code, int ks ); void (*draw)( struct view *tv, int *clip ), (*free)( struct view *tv ), (*sclick)( struct view *tv, int mx, int my, int flag ); char path[128]; /* Datei-Pfad (Fenstertitel). */ struct view *next; /* Zeiger auf nchste Fensterstruktur. */ struct view *prev; /* Zeiger auf vorige Fensterstruktur. */ BASPAG *actpd; /* Zeiger auf Prozess-Descriptor. */ } VIEW; FROM( loader ) IMPORT VIEW *load_file( char *name, long len, int flag ); FROM( loader ) IMPORT void config( int ks ); FROM( loader ) IMPORT void spool( int ks ); #define W_KIND NAME | CLOSER | FULLER | MOVER | SIZER |\ UPARROW | DNARROW | VSLIDE | LFARROW | RTARROW | HSLIDE #define AC_SPOOL 100 #define SCRP_OPEN 1003 #define WH tv->handle #define PATH tv->path #define BC tv->bc #define LBC tv->lbc #define LC tv->lc #define TLC tv->tlc #define XFAC tv->xfac #define YFAC tv->yfac #define X tv->x #define Y tv->y #define W tv->w #define H tv->h #define HSLID tv->hslide #define VSLID tv->vslide #define KEY( tv, code, ks ) (*tv->key)( tv, code, ks ) #define DRAW( tv, clip ) (*tv->draw)( tv, clip ) #define FREE( tv ) (*tv->free)( tv ) #define SCLICK( tv,mx,my,flag ) (*tv->sclick)( tv, mx, my, flag ) static VIEW *tv; /* Aktuelle Fensterstruktur. */ int phys_handle, handle, gl_hchar, xdesk, ydesk, wdesk, hdesk, xmax, ymax, nplanes, ks, xpixel, ypixel, out_width, out_height, ohandle = 0, VA_Flags = 0; /* Flags der VA_PROTOSTATUS send. Appl. */ static int starter_id = -1, /* Identifik. der VA_START send. Appl. */ ekind = MU_MESAG | MU_KEYBD | MU_BUTTON, tw, /* Aktuelles Fenster. */ pipe[8], key, appl_id, wbox, hbox, gl_wchar, aw; char Path[128], StartPath[128], spool_buf[1040], VA_Name[8]; /* Name der VA_PROTOSTATUS send. Appl. */ static char no_win[] = "[1][Keine weiteren Fenster" "|vorhanden! Abhilfe durch" "|Schlieen eines Fensters.][ OK ]", no_gdos[] = "[1][1STVIEW-Warnung:" "|Die Gerteausgabe funktioniert" "|nur, wenn Sie ein GDOS im" "|AUTO-Ordner installiert haben.][ Aha ]"; static DTA mydta; #ifdef __TOS__ static BASPAG *Pgetpd( VIEW *tv ) { BASPAG *pd; SYSHDR *sys; void *oldstack; oldstack = (void *)Super( 0 ); sys = *(SYSHDR **)0x4F2; sys = sys->os_base; /* wegen Fehler in alter AHDI-Version :-( */ if (sys->os_version >= 0x102) pd = *sys->_run; else if ((sys->os_palmode >> 1) - 4) pd = *(BASPAG **)0x602C; else pd = *(BASPAG **)0x873CL; /* Spanisches TOS 1.0 :-( */ if (tv) while (tv->actpd != pd && pd) pd = pd->p_parent; Super( oldstack ); return pd; } #else #define Pgetpd( tv ) Pgetpd() #endif void AVSendMessage( int msg, int p3, int p4 ) { if (starter_id == -1) return; aw = tw; pipe[0] = msg; pipe[1] = appl_id; pipe[2] = 0; pipe[3] = p3; pipe[4] = p4; pipe[5] = 0; *(char **)(pipe + 6) = "1STVIEW "; appl_write( starter_id, 16, pipe ); } static void delete_view( void ) { VIEW *hv, *lv; hv = lv = tv->next; FREE( tv ); Mfree( tv ); if (hv == tv) tv = 0; else { while (hv->next != tv) hv = hv->next; tv = hv->next = lv; } } static int find_view( void ) { VIEW *hv; if ((hv = tv) != 0) do if (WH == tw) return 1; while ((tv = tv->next) != hv); return 0; } static void set_name( void ) { int len; if ((len = (int)strlen( PATH ) - (W - wbox) / gl_wchar) < 0) len = 0; wind_set( tw, WF_NAME, PATH + len ); } static void set_vslider( void ) { int vslide; if ((vslide = (int)((TLC * 1000L) / LC)) != VSLID) wind_set( WH, WF_VSLIDE, VSLID = vslide ); } static void set_hslider( void ) { int hslide; if ((hslide = (int)((LBC * 1000L) / BC)) != HSLID) wind_set( WH, WF_HSLIDE, HSLID = hslide ); } void set_allslider( void ) { int lines, count; count = lines = H / YFAC; if (LC > 0) { count += LC; set_vslider(); } wind_set( tw, WF_VSLSIZE, (int)((lines * 1000L) / count) ); count = lines = W / XFAC; if (BC > 0) { count += BC; set_hslider(); } wind_set( tw, WF_HSLSIZE, (int)((lines * 1000L) / count) ); } static void calc_border( void ) { SCLICK( tv, 0, 0, 2 ); *(long *)&par.xwin = *(long *)&X; wind_calc( WC_BORDER, W_KIND, X, Y, W, H, pipe+4,pipe+5,pipe+6,pipe+7 ); } static void calc_work( void ) { wind_calc( WC_WORK,W_KIND, pipe[4],pipe[5],pipe[6],pipe[7],&X,&Y,&W,&H ); } static void get_work( void ) { wind_get( WH, WF_WORKXYWH, &X, &Y, &W, &H ); } static int get_pipe( int flag ) { static long oldwh; int ret; if (flag == WF_NEXTXYWH && oldwh == *(long *)&W) return 0; wind_get( tw, flag, pipe, pipe + 1, pipe + 2, pipe + 3 ); oldwh = *(long *)(pipe + 2); if ((ret = pipe[2]) != 0) ret = pipe[3]; pipe[2] += pipe[0] - 1; pipe[3] += pipe[1] - 1; return ret; } static void redraw( void ) { if (get_pipe( WF_FIRSTXYWH )) { graf_mouse( M_OFF, 0 ); pipe[6] += pipe[4] - 1; pipe[7] += pipe[5] - 1; if (xdesk > pipe[4]) pipe[4] = xdesk; if (ydesk > pipe[5]) pipe[5] = ydesk; if ( xmax < pipe[6]) pipe[6] = xmax; if ( ymax < pipe[7]) pipe[7] = ymax; do { if (pipe[4] > pipe[0]) pipe[0] = pipe[4]; if (pipe[5] > pipe[1]) pipe[1] = pipe[5]; if (pipe[6] < pipe[2]) pipe[2] = pipe[6]; if (pipe[7] < pipe[3]) pipe[3] = pipe[7]; if (pipe[2] >= pipe[0] && pipe[3] >= pipe[1]) DRAW( tv, pipe ); } while (get_pipe( WF_NEXTXYWH )); graf_mouse( M_ON, 0 ); } } void full_redraw( void ) { *(long *)(pipe + 4) = *(long *)&X; *(long *)(pipe + 6) = *(long *)&W; redraw(); } void new_redraw( void ) { *(long *)&LBC = 0; BC -= W / XFAC; LC -= H / YFAC; set_allslider(); full_redraw(); } static void set_curr( void ) { calc_border(); wind_set( tw, WF_CURRXYWH, pipe[4], pipe[5], pipe[6], pipe[7] ); get_work(); } void new_size( int flag ) { long oldxy, oldwh; oldxy = *(long *)&X; oldwh = *(long *)&W; if (flag) { BC += W / XFAC; LC += H / YFAC; calc_work(); } BC -= W /= XFAC; W *= XFAC; if (BC < LBC) if ((LBC = BC) < 0) LBC = 0; LC -= H /= YFAC; H *= YFAC; if (LC < TLC) if ((TLC = LC) < 0) TLC = 0; if (*(long *)&X != oldxy || *(long *)&W != oldwh) { set_name(); set_curr(); } set_allslider(); if (flag == 0) { pipe[0] = WM_REDRAW; pipe[1] = appl_id; pipe[2] = 0; pipe[3] = WH; *(long *)(pipe + 4) = *(long *)&X; *(long *)(pipe + 6) = *(long *)&W; appl_write( appl_id, 16, pipe ); } } static int create_window( void ) { wind_get( 0, WF_WORKXYWH, &xdesk, &ydesk, &wdesk, &hdesk ); xmax = xdesk + wdesk - 1; ymax = ydesk + hdesk - 1; wind_calc( WC_WORK, W_KIND, xdesk - 1, ydesk, wdesk + 1, hdesk, pipe + 4, pipe + 5, pipe + 6, pipe + 7 ); { long n_wmax = pipe[6]; par.xwin = (int)((n_wmax * (par.xwin-par.xmin)) / par.wmax) + pipe[4]; par.wwin = (int)((n_wmax * par.wwin) / par.wmax); } { long n_hmax = pipe[7]; par.ywin = (int)((n_hmax * (par.ywin-par.ymin)) / par.hmax) + pipe[5]; par.hwin = (int)((n_hmax * par.hwin) / par.hmax); } *(long *)&par.xmin = *(long *)(pipe + 4); *(long *)&par.wmax = *(long *)(pipe + 6); return wind_create( W_KIND, xdesk - 1, ydesk, wdesk + 1, hdesk ); } static void show_window( void ) { set_name(); calc_border(); graf_growbox( 0, 0, 0, 0, pipe[4], pipe[5], pipe[6], pipe[7] ); wind_open( tw, pipe[4], pipe[5], pipe[6], pipe[7] ); get_work(); *(long *)&HSLID = 0; set_allslider(); AVSendMessage( AV_ACCWINDOPEN, tw, 0 ); } #pragma warn -par int filebox( char *titel ) { static char File[17] = "*.*"; int but[1]; memswap( strrchr( Path, PATHSEP ) + 1, File, 17 ); #ifdef __TOS__ if (global[0] >= 0x130) fsel_exinput( Path, File, but, titel ); else #endif fsel_input( Path, File, but ); memswap( strrchr( Path, PATHSEP ) + 1, File, 17 ); return *but; } #pragma warn +par static void get_entry( char *cmd, int over ) { int dumpflag, nextflag, found; long length; VIEW *pv; char *p, titel[40]; nextflag = 1; do { if (over == 0) if ((tw = create_window()) < 0) { form_alert( 1, no_win ); slct_close(); return; } dumpflag = (ks & 12) - 12; if (nextflag) { if (*(p = cmd)) if ((p = strrchr( cmd, PATHSEP )) != 0 && cmd[1] == ':') { ++p; strcpy( Path, cmd ); } else { p = strrchr( Path, PATHSEP ) + 1; strcpy( p, cmd ); } if (*p == 0) { slct_open(); strcpy( titel, "1stView: Datei(en) " ); strcat( titel, over ? "ber" : "neu" ); strcat( titel, dumpflag == 0 ? "dumpen" : "laden" ); if (filebox( titel ) == 0) { if (over == 0) wind_delete( tw ); slct_close(); return; } } } graf_mouse( BUSYBEE, 0 ); for (;;) { if (nextflag) { found = 1; p = strrchr( Path, PATHSEP ) + 1; if (slct_first( &mydta, 0x27 )) { slct_close(); if (*p && (found = Findfirst( Path, &mydta, 0x27 )) != 0) form_error( -found - 31 ); if (found) { graf_mouse( ARROW, 0 ); if (over == 0) wind_delete( tw ); slct_close(); return; } } } strcpy( p, mydta.d_fname ); length = mydta.d_length; if ((nextflag = slct_next( &mydta )) != 0) slct_close(); if (found == 0) nextflag = Findnext( &mydta ); pv = tv; tv = load_file( Path, length, dumpflag ); if (tv) break; tv = pv; if (nextflag) { graf_mouse( ARROW, 0 ); if (over == 0) wind_delete( tw ); slct_close(); return; } } graf_mouse( ARROW, 0 ); strcpy( PATH, Path ); if (dumpflag == 0) strlwr( PATH ); *(long *)&LBC = 0; WH = tw; tv->actpd = Pgetpd( 0 ); if (pv) { tv->next = pv->next; pv->next = tv; *(long *)&X = *(long *)&pv->x; } else { tv->next = tv; *(long *)&X = *(long *)&par.xwin; } if (over) { *(long *)&W = *(long *)&pv->w; *(long *)&HSLID = *(long *)&pv->hslide; tv = pv; delete_view(); set_name(); new_size( 0 ); } else { if (pv) { X += wbox; Y += hbox; } if ((over = wbox << 2) > W) W = over; if ((over = hbox << 2) > H) H = over; if ((over = par.xmin + par.wmax - W) < X) { if (over < par.xmin) { over = par.xmin; W = par.wmax; } X = over; } X &= -8; if ((over = par.ymin + par.hmax - H) < Y) { if (over < par.ymin) { over = par.ymin; H = par.hmax; } Y = over; } BC -= W /= XFAC; W *= XFAC; LC -= H /= YFAC; H *= YFAC; show_window(); } over = 0; } while (nextflag == 0); } static int rebuild_windows( void ) { VIEW *hv; int count, flag = 0; if (tv && WH == 0) { hv = tv; count = 0; do ++count; while ((hv = hv->next) != tv); do { if (tv->actpd != Pgetpd( tv )) delete_view(); else { if ((WH = tw = create_window()) < 0) { form_alert( 1, no_win ); do delete_view(); while (--count); return flag; } show_window(); flag = 1; tv = tv->next; } } while (--count); } return flag; } static void close_window( void ) { wind_close( tw ); calc_border(); graf_shrinkbox( 0, 0, 0, 0, pipe[4], pipe[5], pipe[6], pipe[7] ); AVSendMessage( AV_ACCWINDCLOSED, tw, 0 ); wind_delete( tw ); delete_view(); } static void copy( void ) { MFDB srcMFDB, desMFDB; srcMFDB.fd_addr = 0; desMFDB.fd_addr = 0; vro_cpyfm( handle, S_ONLY, pipe, &srcMFDB, &desMFDB ); } static void upscroll( int delta ) { long ld; if ((TLC -= delta) < 0) { delta += TLC; TLC = 0; if (delta == 0) return; } graf_mouse( M_OFF, 0 ); set_vslider(); if (get_pipe( WF_FIRSTXYWH )) { ld = (long)delta * YFAC; do { if (xdesk > pipe[0]) pipe[0] = xdesk; if (ydesk > pipe[1]) pipe[1] = ydesk; if ( xmax < pipe[2]) pipe[2] = xmax; if ( ymax < pipe[3]) pipe[3] = ymax; if (pipe[2] >= pipe[0] && (delta = pipe[3] - pipe[1]) >= 0) { if (ld <= delta) { *(long *)(pipe + 4) = *(long *)pipe; *(long *)(pipe + 6) = *(long *)(pipe + 2); pipe[3] -= (int)ld; pipe[5] += (int)ld; copy(); pipe[3] = pipe[5] - 1; } DRAW( tv, pipe ); } } while (get_pipe( WF_NEXTXYWH )); } graf_mouse( M_ON, 0 ); } static void dnscroll( int delta ) { int id; long ld; if ((id = LC - (TLC += delta)) < 0) { if ((TLC += id) < 0) TLC = 0; if ((delta += id) <= 0) return; } graf_mouse( M_OFF, 0 ); set_vslider(); if (get_pipe( WF_FIRSTXYWH )) { ld = (long)delta * YFAC; do { if (xdesk > pipe[0]) pipe[0] = xdesk; if (ydesk > pipe[1]) pipe[1] = ydesk; if ( xmax < pipe[2]) pipe[2] = xmax; if ( ymax < pipe[3]) pipe[3] = ymax; if (pipe[2] >= pipe[0] && (delta = pipe[3] - pipe[1]) >= 0) { if (ld <= delta) { *(long *)(pipe + 4) = *(long *)pipe; *(long *)(pipe + 6) = *(long *)(pipe + 2); pipe[1] += (int)ld; pipe[7] -= (int)ld; copy(); pipe[1] = pipe[7] + 1; } DRAW( tv, pipe ); } } while (get_pipe( WF_NEXTXYWH )); } graf_mouse( M_ON, 0 ); } static void lfscroll( int delta ) { long ld; if ((LBC -= delta) < 0) { delta += LBC; LBC = 0; if (delta == 0) return; } graf_mouse( M_OFF, 0 ); set_hslider(); if (get_pipe( WF_FIRSTXYWH )) { ld = (long)delta * XFAC; do { if (xdesk > pipe[0]) pipe[0] = xdesk; if (ydesk > pipe[1]) pipe[1] = ydesk; if ( xmax < pipe[2]) pipe[2] = xmax; if ( ymax < pipe[3]) pipe[3] = ymax; if ((delta = pipe[2] - pipe[0]) >= 0 && pipe[3] >= pipe[1]) { if (ld <= delta) { *(long *)(pipe + 4) = *(long *)pipe; *(long *)(pipe + 6) = *(long *)(pipe + 2); pipe[2] -= (int)ld; pipe[4] += (int)ld; copy(); pipe[2] = pipe[4] - 1; } DRAW( tv, pipe ); } } while (get_pipe( WF_NEXTXYWH )); } graf_mouse( M_ON, 0 ); } static void rtscroll( int delta ) { int id; long ld; if ((id = BC - (LBC += delta)) < 0) { if ((LBC += id) < 0) LBC = 0; if ((delta += id) <= 0) return; } graf_mouse( M_OFF, 0 ); set_hslider(); if (get_pipe( WF_FIRSTXYWH )) { ld = (long)delta * XFAC; do { if (xdesk > pipe[0]) pipe[0] = xdesk; if (ydesk > pipe[1]) pipe[1] = ydesk; if ( xmax < pipe[2]) pipe[2] = xmax; if ( ymax < pipe[3]) pipe[3] = ymax; if ((delta = pipe[2] - pipe[0]) >= 0 && pipe[3] >= pipe[1]) { if (ld <= delta) { *(long *)(pipe + 4) = *(long *)pipe; *(long *)(pipe + 6) = *(long *)(pipe + 2); pipe[0] += (int)ld; pipe[6] -= (int)ld; copy(); pipe[0] = pipe[6] + 1; } DRAW( tv, pipe ); } } while (get_pipe( WF_NEXTXYWH )); } graf_mouse( M_ON, 0 ); } static void goto_line( int line ) { if ((line -= TLC) < 0) upscroll( -line ); if (line > 0) dnscroll( line ); } static void goto_col( int col ) { if ((col -= LBC) < 0) lfscroll( -col ); if (col > 0) rtscroll( col ); } static void full_window( void ) { wind_get( tw, WF_CURRXYWH, pipe, pipe + 1, pipe + 2, pipe + 3 ); wind_get( tw, WF_FULLXYWH, pipe + 4, pipe + 5, pipe + 6, pipe + 7 ); if (pipe[0] - pipe[4] < 8 && pipe[1] == pipe[5] && pipe[6] - pipe[2] < XFAC && pipe[7] - pipe[3] < YFAC) { wind_get( tw, WF_PREVXYWH, pipe + 4, pipe + 5, pipe + 6, pipe + 7 ); graf_shrinkbox( pipe[4], pipe[5], pipe[6], pipe[7], pipe[0], pipe[1], pipe[2], pipe[3] ); } else graf_growbox( pipe[0], pipe[1], pipe[2], pipe[3], pipe[4], pipe[5], pipe[6], pipe[7] ); } static void print_file( char *name ) { int spool_id; char message[132]; strcpy( message, " " ); strncpy( message, par.extspool, strlen( par.extspool ) ); if ((spool_id = appl_find( message )) >= 0) { strcpy( Path, name ); *(char **)(pipe + 4) = Path; pipe[3] = (int)strlen( Path ); pipe[6] = 1; pipe[7] = 0; pipe[0] = AC_SPOOL; pipe[1] = appl_id; pipe[2] = 0; appl_write( spool_id, 16, pipe ); return; } strcpy( message, "[1][Um Dateien auf ein Gert|" "ausgeben zu knnen, mu ein|" "Spooler-Accessory namens|" ); strcat( message, par.extspool ); strcat( message, " installiert werden.][" ); if ((spool_id = appl_find( "CHMELEON" )) >= 0) { name = strrchr( StartPath, PATHSEP ) + 1; strcpy( name, par.extspool ); strcat( name, ".AC*" ); if (Findfirst( StartPath, &mydta, 0x27 ) == 0) { ++message[1]; strcat( message, "Install.|Abbrechen]" ); if (form_alert( 1, message ) == 2) return; strcpy( name, mydta.d_fname ); *(char **)(pipe + 3) = StartPath; pipe[0] = VA_START; pipe[1] = appl_id; pipe[2] = 0; appl_write( spool_id, 16, pipe ); return; } } strcat( message, " Aha ]" ); form_alert( 1, message ); } static void get_spool( char *cmd ) { char *q; if (*(q = cmd)) if ((q = strrchr( cmd, PATHSEP )) != 0 && cmd[1] == ':') { ++q; strcpy( Path, cmd ); } else { q = strrchr( Path, PATHSEP ) + 1; strcpy( q, cmd ); } if (*q == 0) { slct_open(); if (filebox( "1stView: Datei(en) spoolen" ) == 0) { slct_close(); return; } } q = strrchr( Path, PATHSEP ) + 1; if (slct_first( &mydta, 0x27 ) == 0) strcpy( q, mydta.d_fname ); else if (*q == 0) { slct_close(); return; } for (;;) { if (strlen( spool_buf ) + strlen( Path ) >= sizeof(spool_buf) - 12) { form_alert( 1, "[1][1STVIEW-Warnung:" "|Der Spooler-Puffer ist voll.][ Aha ]" ); break; } strcat( strcat( spool_buf, Path ), " " ); if (slct_next( &mydta )) break; strcpy( q, mydta.d_fname ); } slct_close(); } static void check_spool( void ) { int i, work_in[103], work_out[57]; if (*spool_buf) { if (ohandle == 0) { i = 102; do work_in[i] = 1; while (--i > 0); work_in[0] = par.out_handle; work_in[10] = 2; work_in[11] = 255; v_opnwk( work_in, &ohandle, work_out ); xpixel = work_out[0] + 1; ypixel = work_out[1] + 1; out_width = work_out[3]; out_height = work_out[4]; if (ohandle <= 0) { form_alert( 1, "[1][1STVIEW-Warnung:" "|Fehler beim ffnen des" "|Ausgabegertes." "|Ausgabe wird abgebrochen" "|und Spooler-Puffer geleert.][ Oh jeh ]" ); ohandle = 0; *spool_buf = 0; return; } } ekind = MU_MESAG | MU_KEYBD | MU_BUTTON | MU_TIMER; } } static int rmouse( void ) { int mbut[1], dummy[1]; graf_mkstate( dummy, dummy, mbut, &ks ); return *mbut & 2; } static void spool_cmd( char *cmd ) { char *p; if (vq_gdos() == 0) { form_alert( 1, no_gdos ); return; } if (cmd && *cmd) do { if ((p = strchr( cmd, ' ' )) != 0) *p++ = 0; get_spool( cmd ); } while ((cmd = p) != 0 && *cmd); else if (rmouse()) config( ks ); else get_spool( "" ); check_spool(); } static void scrp_copy( void ) { char *fbuf, sbuf[4]; long blen, count; int rfh, wfh; if (set_scrp() == 0) return; graf_mouse( BUSYBEE, 0 ); if ((rfh = Fopen( PATH, 0 )) < 0) { wfh = rfh; graf_mouse( ARROW, 0 ); form_error( -wfh - 31 ); return; } strcat( Path, strrchr( PATH, '.' ) ); if ((wfh = Fcreate( Path, 0 )) < 0) { Fclose( rfh ); graf_mouse( ARROW, 0 ); form_error( -wfh - 31 ); return; } blen = Fseek( 0, rfh, 2 ); Fseek( 0, rfh, 0 ); if ((fbuf = Malloc( blen )) == 0) if ((blen = Mavail()) > 4) fbuf = Malloc( blen ); else { blen = 4; fbuf = sbuf; } while ((count = Fread( rfh, blen, fbuf )) > 0 && Fwrite( wfh, count, fbuf ) == count); if (fbuf != sbuf) Mfree( fbuf ); Fclose( wfh ); Fclose( rfh ); graf_mouse( ARROW, 0 ); } static void hndl_key( void ) { wind_get( 0, WF_TOP, &tw ); if (find_view() == 0) return; switch (key) { case CUR_UP: upscroll( 1 ); break; case CUR_DOWN: dnscroll( 1 ); break; case SHFT_CU: upscroll( H / YFAC - 1 ); break; case SHFT_CD: dnscroll( H / YFAC - 1 ); break; case CUR_LEFT: lfscroll( 1 ); break; case CUR_RIGHT: rtscroll( 1 ); break; case SHFT_CL: lfscroll( W / XFAC - 1 ); break; case SHFT_CR: rtscroll( W / XFAC - 1 ); break; case HOME: goto_line( 0 ); break; case SHFT_HOME: goto_line( LC ); break; case INSERT: goto_col( 0 ); break; case SHFT_INS: goto_col( BC ); break; case CNTRL_O: get_entry( "", 0 ); break; case CNTRL_D: get_entry( "", 1 ); break; case CNTRL_U: close_window(); break; case CNTRL_Q: do { tw = WH; close_window(); } while (tv); break; case CNTRL_F: full_window(); new_size( 1 ); break; case CNTRL_P: (((ks & 10) == 10) ^ par.spoolflag ? print_file : spool_cmd)( PATH ); break; case CNTRL_A: config( ks ); break; case CNTRL_W: if ((VA_Flags & (1 << 6)) == 0 && tv->next != tv) { wind_set( tv->next->handle, WF_TOP ); return; } default: if (KEY( tv, key, ks )) if (key == CNTRL_C) scrp_copy(); else AVSendMessage( AV_SENDKEY, ks, key ); } } static void activate( char *cmd, int over ) { int flag; char *p; if (pipe[3] < 0) over = 0; if (pipe[1] != starter_id) { starter_id = pipe[1]; AVSendMessage( AV_PROTOKOLL, 2, 0 ); } flag = rebuild_windows(); if (cmd && *cmd) do { if ((p = strchr( cmd, ' ' )) != 0) *p++ = 0; get_entry( cmd, over ); over = 0; } while ((cmd = p) != 0 && *cmd); else if (flag == 0) if (rmouse()) config( ks ); else get_entry( "", 0 ); } static void invalidate( void ) { VIEW *hv; int count; if (tv == 0) return; hv = tv; count = 0; do ++count; while ((hv = hv->next) != tv); do { if (tv->actpd != Pgetpd( tv )) delete_view(); else { WH = 0; tv = tv->next; } } while (--count); } #ifdef __TOS__ static void rec_ddmsg( char *p ) { static char pipename[] = "U:\\PIPE\\DRAGDROP.AA"; long size[11], oldpipesig, len; int fh; pipename[17] = *p++; pipename[18] = *p; if ((fh = Fopen( pipename, 2 )) < 0) return; oldpipesig = Psignal( SIGPIPE, SIG_IGN ); p = (char *)size; *p++ = 0; *p++ = 'A'; *p++ = 'R'; *p++ = 'G'; *p++ = 'S'; len = 28; do *p++ = 0; while (--len); len = 33; while (Fwrite( fh, len, size ) == len) { size[0] = 0; if (Fread( fh, 10, (int *)size + 1 ) != 10) break; if ((size[0] -= 8) <= 0) break; do { len = 32; if (size[0] < len) len = size[0]; Fread( fh, len, size + 3 ); } while (size[0] -= len); if (size[1] == 'ARGS') { len = size[2]; if ((p = Malloc( len + 1 )) != 0) { if (Fwrite( fh, 1, size ) - 1 == 0) { Fread( fh, len, p ); p[len] = 0; activate( p, 1 ); } Mfree( p ); break; } *(char *)size += 1; } *(char *)size += 2; len = 1; } Psignal( SIGPIPE, oldpipesig ); Fclose( fh ); } #endif static void hndl_message( void ) { tw = pipe[3]; find_view(); switch (*pipe) { case WM_ARROWED: switch (pipe[4]) { case WA_UPLINE: upscroll( 1 ); break; case WA_DNLINE: dnscroll( 1 ); break; case WA_UPPAGE: upscroll( H / YFAC - 1 ); break; case WA_DNPAGE: dnscroll( H / YFAC - 1 ); break; case WA_LFLINE: lfscroll( 1 ); break; case WA_RTLINE: rtscroll( 1 ); break; case WA_LFPAGE: lfscroll( W / XFAC - 1 ); break; case WA_RTPAGE: rtscroll( W / XFAC - 1 ); } break; case WM_REDRAW: redraw(); break; case WM_CLOSED: close_window(); break; case WM_TOPPED: case WM_NEWTOP: wind_set( tw, WF_TOP ); break; case WM_MOVED: calc_work(); X = (X + 3) & -8; set_curr(); break; case WM_FULLED: full_window(); case WM_SIZED: new_size( 1 ); break; #pragma warn -sig case WM_VSLID: goto_line( ((long)LC * pipe[4] + 500) / 1000 ); break; case WM_HSLID: goto_col( ((long)BC * pipe[4] + 500) / 1000 ); break; #pragma warn +sig case AC_CLOSE: starter_id = -1; VA_Flags = 0; invalidate(); break; #ifdef __TOS__ case AP_DRAGDROP: rec_ddmsg( (char *)(pipe + 7) ); break; #endif case AC_SPOOL: spool_cmd( *(char **)(pipe + 4) ); break; case AC_OPEN: *(char **)(pipe + 4) = 0; case SCRP_OPEN: pipe[3] = pipe[5]; pipe[1] = starter_id; case VA_START: if (((ks & 10) == 10) ^ par.outdef) spool_cmd( *(char **)(pipe + 3) ); else activate( *(char **)(pipe + 3), 0 ); break; case VA_DRAGACCWIND: activate( *(char **)(pipe + 6), 1 ); break; case VA_PROTOSTATUS: strncpy( VA_Name, *(char **)(pipe + 6), 8 ); VA_Flags = pipe[3]; break; case VA_FILEFONT: tw = aw; if (find_view()) SCLICK( tv, pipe[3], pipe[4], 1 ); } } #pragma warn -sig static void online_scroll( int flag ) { int base, len, mx, my, mbut; if (flag) { if (LC <= 0) return; len = H - ((hbox - 2) << 1); base = H / YFAC; base = (base * (long)len) / (LC + base); if (hbox > base) base = hbox; len -= base; base = Y + hbox - 3 + (base >> 1); } else { if (BC <= 0) return; len = W - ((wbox - 2) << 1); base = W / XFAC; base = (base * (long)len) / (BC + base); if (wbox > base) base = wbox; len -= base; base = X + wbox - 3 + (base >> 1); } graf_mouse( FLAT_HAND, 0 ); wind_update( BEG_MCTRL ); graf_mkstate( &mx, &my, &mbut, pipe ); mbut ^= 1; do if (flag) { if ((my -= base) < 0) my = 0; if (len < my) my = len; goto_line( (my * (long)LC) / len ); } else { if ((mx -= base) < 0) mx = 0; if (len < mx) mx = len; goto_col( (mx * (long)BC) / len ); } while ((evnt_multi( MU_BUTTON | MU_M1, 1, 1, mbut, 1, mx, my, 1, 1, 0, 0, 0, 0, 0, 0,0,0, &mx, &my, pipe,pipe,pipe,pipe ) & MU_BUTTON) == 0); wind_update( END_MCTRL ); graf_mouse( ARROW, 0 ); if (mbut) evnt_button( 1, 1, 0, pipe, pipe, pipe, pipe ); } #pragma warn +sig static void hndl_event( void ) { int event, mx, my, dummy[1]; event = evnt_multi( ekind, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, pipe, 100, 0, &mx, &my, dummy, &ks, &key, dummy ); wind_update( BEG_UPDATE ); if (event & MU_MESAG) hndl_message(); if (event & MU_KEYBD) { while (evnt_multi( MU_TIMER | MU_KEYBD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, pipe, 0, 0, pipe, pipe, pipe, pipe, pipe, pipe ) & MU_KEYBD); hndl_key(); } if (event & MU_BUTTON && (tw = wind_find( mx, my )) > 0 && find_view()) { if (mx >= X + W) online_scroll( 1 ); else if (my >= Y + H) online_scroll( 0 ); else SCLICK( tv, mx, my, 0 ); } if (event & MU_TIMER) { spool( ks ); if (*spool_buf == 0) { v_clswk( ohandle ); ohandle = 0; ekind &= ~MU_TIMER; } } wind_update( END_UPDATE ); } #if DESKACC void main() #define RET_VAL #else int main( int argc, char **argv ) #define RET_VAL 1 #endif { int i, work_in[11], work_out[57]; if ((appl_id = appl_init()) == -1) return RET_VAL; handle = phys_handle = graf_handle( &gl_wchar, &gl_hchar, &wbox, &hbox ); i = 9; do work_in[i] = 1; while (--i >= 0); work_in[10] = 2; v_opnvwk( work_in, &handle, work_out ); vq_extnd( handle, 1, work_out ); nplanes = work_out[4]; vst_alignment( handle, 0, 5, work_out, work_out ); vsf_color( handle, 0 ); Path[0] = 'A' + (char)Dgetdrv(); Path[1] = ':'; Dgetpath( Path + 2, 0 ); strcat( Path, "\\" ); strcpy( StartPath, Path ); *spool_buf = 0; tv = 0; #if DESKACC menu_register( appl_id, " 1st View" ); load_fonts( 1 ); for (;;) hndl_event(); #else #ifdef __TOS__ if (_app == 0 || global[0] >= 0x400) menu_register( appl_id, " 1st View" ); if (_app == 0) { load_fonts( 1 ); for (;;) hndl_event(); } #endif graf_mouse( ARROW, 0 ); if (rmouse() && argc <= 1) { wind_update( BEG_UPDATE ); config( ks ); wind_update( END_UPDATE ); } if ((((ks & 10) == 10) ^ par.outdef) == 0) { if (--argc <= 0) get_entry( "", 0 ); else do get_entry( *++argv, 0 ); while (--argc); } else if (vq_gdos() == 0) form_alert( 1, no_gdos ); else { if (--argc <= 0) get_spool( "" ); else do get_spool( *++argv ); while (--argc); check_spool(); } while (tv || *spool_buf) hndl_event(); v_clsvwk( handle ); appl_exit(); return 0; #endif }#ifndef FROM #define FROM( MODUL ) #endif #ifndef IMPORT #define IMPORT extern #endif FROM( 1stview ) IMPORT char Path[], StartPath[], spool_buf[], VA_Name[]; FROM( 1stview ) IMPORT int phys_handle, handle, gl_hchar, xdesk, ydesk, wdesk, hdesk, xmax, ymax, nplanes, ks, xpixel, ypixel, out_width, out_height, ohandle, VA_Flags; FROM( 1stview ) IMPORT void AVSendMessage( int msg, int p3, int p4 ); FROM( 1stview ) IMPORT void set_allslider( void ); FROM( 1stview ) IMPORT void full_redraw( void ); FROM( 1stview ) IMPORT void new_redraw( void ); FROM( 1stview ) IMPORT void new_size( int flag ); FROM( 1stview ) IMPORT int filebox( char *titel );1stview.prg = ddstart.o image meta resource 1stview loader ( config.rsh ) util ddextlib.lib pcstdlib.lib pcgemlib.lib pctoslib.lib text sound TREE1OUTPARNUMBERTOALLPAR RAND JAQNORMALPASSENDPIXEL"XBRUCH%YBRUCH*LINKS/OBEN2ALLPAR5OUTWIN9OUTINT;EXTSPOOL>FONTDEFBDITHCOLETOSNDPARFTOOUTPARGLOADHSAVEIOKJABBRUCHMMEMNTOT/* Resource Datei Indizes fr CONFIG */ #define TREE1 0 /* Formular/Dialog */ #define OUTPAR 3 /* BOX in Baum TREE1 */ #define NUMBER 4 /* FBOXTEXT in Baum TREE1 */ #define TOALLPAR 6 /* BUTTON in Baum TREE1 */ #define RAND 9 /* FBOXTEXT in Baum TREE1 */ #define JA 12 /* BUTTON in Baum TREE1 */ #define QNORMAL 16 /* BUTTON in Baum TREE1 */ #define PASSEND 23 /* BUTTON in Baum TREE1 */ #define PIXEL 28 /* BUTTON in Baum TREE1 */ #define XBRUCH 34 /* BUTTON in Baum TREE1 */ #define YBRUCH 37 /* BUTTON in Baum TREE1 */ #define LINKS 42 /* BUTTON in Baum TREE1 */ #define OBEN 47 /* BUTTON in Baum TREE1 */ #define ALLPAR 50 /* BOX in Baum TREE1 */ #define OUTWIN 53 /* BUTTON in Baum TREE1 */ #define OUTINT 57 /* BUTTON in Baum TREE1 */ #define EXTSPOOL 59 /* FTEXT in Baum TREE1 */ #define FONTDEF 62 /* BUTTON in Baum TREE1 */ #define DITHCOL 66 /* BUTTON in Baum TREE1 */ #define TOSNDPAR 69 /* BUTTON in Baum TREE1 */ #define TOOUTPAR 70 /* BUTTON in Baum TREE1 */ #define LOAD 71 /* BUTTON in Baum TREE1 */ #define SAVE 72 /* BUTTON in Baum TREE1 */ #define OK 73 /* BUTTON in Baum TREE1 */ #define ABBRUCH 74 /* BUTTON in Baum TREE1 */ #define MEM 77 /* STRING in Baum TREE1 */ #define TOT 78 /* STRING in Baum TREE1 */ ( x x$O x(KRB> >2'R>        #    #       # # )  1 '$  : # @  J  R   !8 $"## # [! a%&# & f$ l(. )T-*,#+ q, w ) }.p'/1#0 1 . G3F> 746#:5 6 3 (<8;#:9 :  ; " 7. @=?#:> ? < (EAD#:B C D #@ 0F ! 2 4" H H I N  J V K Y$ LL1KMN AN a L o  }  )          $ % & ? @ A X Y Z c n 1STVIEW: Ausgabe-Konfiguration Digital Design, Apr 26 1992Allgemeine Parameter...TextJaNeinnormalDraftLetterMetaGrepassendOriginalImagePixel 1:1passendOriginalBruchGanzBruchGanzLinksMitteRechtsObenMitteUntenStandard-AusgabeFensterGertControl-P-AusgabeInternExtern:Text-FonteinstellungNormalber VA_FILEImage-Ditherfarbenkeine2 (S/W)8Sound-Parameter...Gerte-Parameter...LadenSichernOKAbbruchMEM: XXXXXX KTOT: XXXXXX K21Gertenummer: __99 ABBRUCH D. AUSGABE MIT L.SHIFT-R.SHIFT 00Linker Rand: __ Zeichen99SEITENVORSCHUB NACH DATEI:QUALITT:X-SKALIERUNG:Y-SKALIERUNG:HORIZONTALE AUSRICHTUNG:VERTIKALE AUSRICHTUNG:CALCLOCK ________ xxxxxxxx/* GEM Resource C Source */ static TEDINFO rs_tedinfo[] = { "21", "Ger\204tenummer: __", "99", IBM , 0, TE_CNTR , 0x1180, 0, -1, 3, 17, " ABBRUCH D. AUSGABE MIT L.SHIFT-R.SHIFT ", "", "", SMALL, 0, TE_LEFT , 0x1180, 0, -1, 41, 1, "00", "Linker Rand: __ Zeichen", "99", IBM , 0, TE_CNTR , 0x11A3, 0, -1, 3, 24, "SEITENVORSCHUB NACH DATEI:", "", "", SMALL, 0, TE_CNTR , 0x1180, 0, 0, 27, 1, "QUALIT\216T:", "", "", SMALL, 0, TE_CNTR , 0x1180, 0, 0, 10, 1, "X-SKALIERUNG:", "", "", SMALL, 0, TE_CNTR , 0x1180, 0, 0, 14, 1, "Y-SKALIERUNG:", "", "", SMALL, 0, TE_CNTR , 0x1180, 0, 0, 14, 1, "HORIZONTALE AUSRICHTUNG:", "", "", SMALL, 0, TE_CNTR , 0x1180, 0, 0, 25, 1, "VERTIKALE AUSRICHTUNG:", "", "", SMALL, 0, TE_CNTR , 0x1180, 0, 0, 23, 1, "CALCLOCK", " ________ ", "xxxxxxxx", IBM , 0, TE_CNTR , 0x1180, 0, 0, 9, 11 }; static OBJECT rs_object[] = { /******** Tree 0 TREE1 ****************************************************/ 0, 1, 75, G_BOX |0x8900, /* Object 0 */ NONE, OUTLINED, 0x00011152L, 0x0000, 0x0000, 0x0042, 0x0014, OUTPAR , 2, 2, G_BOX , /* Object 1 */ NONE, OUTLINED, 0x00001100L, 0x0002, 0x0001, 0x003E, 0x0001, 1, -1, -1, G_BUTTON , /* Object 2 */ NONE, SHADOWED, "1STVIEW: Ausgabe-Konfiguration \275 Digital Design, " __DATE__, 0x0000, 0x0000, 0x003E, 0x0001, ALLPAR , NUMBER , 39, G_BOX , /* Object 3 OUTPAR */ NONE, NORMAL, 0x00FE1152L, 0x0002, 0x0003, 0x003E, 0x000D, 5, -1, -1, G_FBOXTEXT, /* Object 4 NUMBER */ EDITABLE, NORMAL, &rs_tedinfo[0], 0x0000, 0x0000, 0x001E, 0x0001, TOALLPAR, -1, -1, G_TEXT , /* Object 5 */ NONE, NORMAL, &rs_tedinfo[1], 0x0000, 0x0001, 0x001E, 0x0001, 7, -1, -1, G_BUTTON |0x0C00, /* Object 6 TOALLPAR */ SELECTABLE|EXIT, NORMAL, "Allgemeine Parameter...", 0x0020, 0x000C, 0x001E, 0x0001, 19, 8, 15, G_BOX , /* Object 7 */ NONE, NORMAL, 0x00FF1100L, 0x0000, 0x0002, 0x001E, 0x0007, RAND , -1, -1, G_STRING , /* Object 8 */ NONE, NORMAL, "Text", 0x000D, 0x0000, 0x0004, 0x0001, 10, -1, -1, G_FBOXTEXT, /* Object 9 RAND */ EDITABLE, NORMAL, &rs_tedinfo[2], 0x0002, 0x0001, 0x001A, 0x0001, 11, -1, -1, G_TEXT , /* Object 10 */ NONE, NORMAL, &rs_tedinfo[3], 0x0002, 0x0002, 0x001A, 0x0001, 14, JA , 13, G_BOX , /* Object 11 */ NONE, NORMAL, 0x00FF1123L, 0x0002, 0x0003, 0x001A, 0x0001, 13, -1, -1, G_BUTTON , /* Object 12 JA */ SELECTABLE|RBUTTON, SELECTED, "Ja", 0x0004, 0x0000, 0x0007, 0x0001, 11, -1, -1, G_BUTTON , /* Object 13 */ SELECTABLE|RBUTTON, NORMAL, "Nein", 0x000F, 0x0000, 0x0007, 0x0001, 15, -1, -1, G_TEXT , /* Object 14 */ NONE, NORMAL, &rs_tedinfo[4], 0x0002, 0x0004, 0x001A, 0x0001, 7, QNORMAL , 18, G_BOX , /* Object 15 */ NONE, NORMAL, 0x00FF1123L, 0x0002, 0x0005, 0x001A, 0x0001, 17, -1, -1, G_BUTTON , /* Object 16 QNORMAL */ SELECTABLE|RBUTTON, SELECTED, "normal", 0x0000, 0x0000, 0x0008, 0x0001, 18, -1, -1, G_BUTTON |0x0400, /* Object 17 */ SELECTABLE|RBUTTON, NORMAL, "Draft", 0x0009, 0x0000, 0x0008, 0x0001, 15, -1, -1, G_BUTTON , /* Object 18 */ SELECTABLE|RBUTTON, NORMAL, "Letter", 0x0012, 0x0000, 0x0008, 0x0001, 25, 20, 21, G_BOX , /* Object 19 */ NONE, NORMAL, 0x00FF1100L, 0x0000, 0x000A, 0x001E, 0x0003, 21, -1, -1, G_STRING , /* Object 20 */ NONE, NORMAL, "Meta", 0x000D, 0x0000, 0x0004, 0x0001, 19, 22, 24, G_BOX , /* Object 21 */ NONE, NORMAL, 0x00FF1123L, 0x0002, 0x0001, 0x001A, 0x0001, PASSEND , -1, -1, G_STRING , /* Object 22 */ NONE, NORMAL, "Gr\224\341e", 0x0001, 0x0000, 0x0005, 0x0001, 24, -1, -1, G_BUTTON |0x0700, /* Object 23 PASSEND */ SELECTABLE|RBUTTON, NORMAL, "passend", 0x0007, 0x0000, 0x0009, 0x0001, 21, -1, -1, G_BUTTON |0x0300, /* Object 24 */ SELECTABLE|RBUTTON, SELECTED, "Original", 0x0011, 0x0000, 0x0009, 0x0001, 39, 26, 36, G_BOX , /* Object 25 */ NONE, NORMAL, 0x00FF1100L, 0x0020, 0x0000, 0x001E, 0x0005, 27, -1, -1, G_STRING , /* Object 26 */ NONE, NORMAL, "Image", 0x000C, 0x0000, 0x0005, 0x0001, 31, PIXEL , 30, G_BOX , /* Object 27 */ NONE, NORMAL, 0x00FF1123L, 0x0001, 0x0001, 0x001C, 0x0001, 29, -1, -1, G_BUTTON |0x0300, /* Object 28 PIXEL */ SELECTABLE|RBUTTON, NORMAL, "Pixel 1:1", 0x0000, 0x0000, 0x0009, 0x0001, 30, -1, -1, G_BUTTON , /* Object 29 */ SELECTABLE|RBUTTON, NORMAL, "passend", 0x000A, 0x0000, 0x0008, 0x0001, 27, -1, -1, G_BUTTON , /* Object 30 */ SELECTABLE|RBUTTON, SELECTED, "Original", 0x0013, 0x0000, 0x0009, 0x0001, 32, -1, -1, G_TEXT , /* Object 31 */ NONE, NORMAL, &rs_tedinfo[5], 0x0001, 0x0002, 0x000D, 0x0001, 33, -1, -1, G_TEXT , /* Object 32 */ NONE, NORMAL, &rs_tedinfo[6], 0x0010, 0x0002, 0x000D, 0x0001, 36, XBRUCH , 35, G_BOX , /* Object 33 */ NONE, NORMAL, 0x00FF1123L, 0x0001, 0x0003, 0x000D, 0x0001, 35, -1, -1, G_BUTTON , /* Object 34 XBRUCH */ SELECTABLE|RBUTTON, NORMAL, "Bruch", 0x0000, 0x0000, 0x0006, 0x0001, 33, -1, -1, G_BUTTON , /* Object 35 */ SELECTABLE|RBUTTON, SELECTED, "Ganz", 0x0007, 0x0000, 0x0006, 0x0001, 25, YBRUCH , 38, G_BOX , /* Object 36 */ NONE, NORMAL, 0x00FF1123L, 0x0010, 0x0003, 0x000D, 0x0001, 38, -1, -1, G_BUTTON |0x0400, /* Object 37 YBRUCH */ SELECTABLE|RBUTTON, NORMAL, "Bruch", 0x0000, 0x0000, 0x0006, 0x0001, 36, -1, -1, G_BUTTON , /* Object 38 */ SELECTABLE|RBUTTON, SELECTED, "Ganz", 0x0007, 0x0000, 0x0006, 0x0001, OUTPAR , 40, 46, G_BOX , /* Object 39 */ NONE, NORMAL, 0x00FF1100L, 0x0020, 0x0006, 0x001E, 0x0005, 41, -1, -1, G_TEXT , /* Object 40 */ NONE, NORMAL, &rs_tedinfo[7], 0x0002, 0x0000, 0x001A, 0x0001, 45, LINKS , 44, G_BOX , /* Object 41 */ NONE, NORMAL, 0x00FF1123L, 0x0002, 0x0001, 0x001A, 0x0001, 43, -1, -1, G_BUTTON |0x0400, /* Object 42 LINKS */ SELECTABLE|RBUTTON, NORMAL, "Links", 0x0000, 0x0000, 0x0008, 0x0001, 44, -1, -1, G_BUTTON , /* Object 43 */ SELECTABLE|RBUTTON, SELECTED, "Mitte", 0x0009, 0x0000, 0x0008, 0x0001, 41, -1, -1, G_BUTTON |0x0400, /* Object 44 */ SELECTABLE|RBUTTON, NORMAL, "Rechts", 0x0012, 0x0000, 0x0008, 0x0001, 46, -1, -1, G_TEXT , /* Object 45 */ NONE, NORMAL, &rs_tedinfo[8], 0x0002, 0x0002, 0x001A, 0x0001, 39, OBEN , 49, G_BOX , /* Object 46 */ NONE, NORMAL, 0x00FF1123L, 0x0002, 0x0003, 0x001A, 0x0001, 48, -1, -1, G_BUTTON , /* Object 47 OBEN */ SELECTABLE|RBUTTON, SELECTED, "Oben", 0x0000, 0x0000, 0x0008, 0x0001, 49, -1, -1, G_BUTTON , /* Object 48 */ SELECTABLE|RBUTTON, NORMAL, "Mitte", 0x0009, 0x0000, 0x0008, 0x0001, 46, -1, -1, G_BUTTON , /* Object 49 */ SELECTABLE|RBUTTON, NORMAL, "Unten", 0x0012, 0x0000, 0x0008, 0x0001, LOAD , 51, TOOUTPAR, G_BOX , /* Object 50 ALLPAR */ NONE, NORMAL, 0x00FE1100L, 0x0002, 0x0003, 0x003E, 0x000D, 55, 52, 54, G_BOX , /* Object 51 */ NONE, NORMAL, 0x00FF1123L, 0x0002, 0x0001, 0x003A, 0x0001, OUTWIN , -1, -1, G_STRING , /* Object 52 */ NONE, NORMAL, "Standard-Ausgabe", 0x0001, 0x0000, 0x0010, 0x0001, 54, -1, -1, G_BUTTON , /* Object 53 OUTWIN */ SELECTABLE|RBUTTON, SELECTED, "Fenster", 0x0016, 0x0000, 0x0010, 0x0001, 51, -1, -1, G_BUTTON , /* Object 54 */ SELECTABLE|RBUTTON, NORMAL, "Ger\204t", 0x0028, 0x0000, 0x0010, 0x0001, 60, 56, EXTSPOOL, G_BOX , /* Object 55 */ NONE, NORMAL, 0x00FF1123L, 0x0002, 0x0003, 0x003A, 0x0001, OUTINT , -1, -1, G_STRING , /* Object 56 */ NONE, NORMAL, "Control-P-Ausgabe", 0x0001, 0x0000, 0x0011, 0x0001, 58, -1, -1, G_BUTTON , /* Object 57 OUTINT */ SELECTABLE|RBUTTON, SELECTED, "Intern", 0x0016, 0x0000, 0x000A, 0x0001, EXTSPOOL, -1, -1, G_BUTTON , /* Object 58 */ SELECTABLE|RBUTTON, NORMAL, "Extern:", 0x0022, 0x0000, 0x000A, 0x0001, 55, -1, -1, G_FTEXT , /* Object 59 EXTSPOOL */ EDITABLE, NORMAL, &rs_tedinfo[9], 0x002E, 0x0000, 0x000A, 0x0001, 64, 61, 63, G_BOX , /* Object 60 */ NONE, NORMAL, 0x00FF1123L, 0x0002, 0x0006, 0x003A, 0x0001, FONTDEF , -1, -1, G_STRING , /* Object 61 */ NONE, NORMAL, "Text-Fonteinstellung", 0x0001, 0x0000, 0x0014, 0x0001, 63, -1, -1, G_BUTTON , /* Object 62 FONTDEF */ SELECTABLE|RBUTTON, SELECTED, "Normal", 0x0016, 0x0000, 0x0010, 0x0001, 60, -1, -1, G_BUTTON , /* Object 63 */ SELECTABLE|RBUTTON, NORMAL, "\201ber VA_FILE", 0x0028, 0x0000, 0x0010, 0x0001, TOSNDPAR, 65, 68, G_BOX , /* Object 64 */ NONE, NORMAL, 0x00FF1123L, 0x0002, 0x0008, 0x003A, 0x0001, DITHCOL , -1, -1, G_STRING , /* Object 65 */ NONE, NORMAL, "Image-Ditherfarben", 0x0001, 0x0000, 0x0012, 0x0001, 67, -1, -1, G_BUTTON , /* Object 66 DITHCOL */ SELECTABLE|RBUTTON, NORMAL, "keine", 0x0016, 0x0000, 0x0008, 0x0001, 68, -1, -1, G_BUTTON , /* Object 67 */ SELECTABLE|RBUTTON, NORMAL, "2 (S/W)", 0x0023, 0x0000, 0x0008, 0x0001, 64, -1, -1, G_BUTTON , /* Object 68 */ SELECTABLE|RBUTTON, SELECTED, "8", 0x0030, 0x0000, 0x0008, 0x0001, TOOUTPAR, -1, -1, G_BUTTON |0x0800, /* Object 69 TOSNDPAR */ SELECTABLE|EXIT, DISABLED, "Sound-Parameter...", 0x0002, 0x000B, 0x001A, 0x0001, ALLPAR , -1, -1, G_BUTTON |0x0800, /* Object 70 TOOUTPAR */ SELECTABLE|EXIT, NORMAL, "Ger\204te-Parameter...", 0x0022, 0x000B, 0x001A, 0x0001, SAVE , -1, -1, G_BUTTON |0x0100, /* Object 71 LOAD */ SELECTABLE|EXIT, NORMAL, "Laden", 0x0002, 0x0011, 0x0009, 0x0002, OK , -1, -1, G_BUTTON , /* Object 72 SAVE */ SELECTABLE|EXIT, NORMAL, "Sichern", 0x000D, 0x0011, 0x0009, 0x0002, ABBRUCH , -1, -1, G_BUTTON , /* Object 73 OK */ SELECTABLE|DEFAULT|EXIT, NORMAL, "OK", 0x0019, 0x0011, 0x0009, 0x0002, 75, -1, -1, G_BUTTON , /* Object 74 ABBRUCH */ SELECTABLE|EXIT, NORMAL, "Abbruch", 0x0024, 0x0011, 0x0009, 0x0002, 0, 76, 76, G_BOX , /* Object 75 */ NONE, OUTLINED, 0x00FF1100L, 0x0031, 0x0011, 0x000F, 0x0002, 75, MEM , TOT , G_BOX , /* Object 76 */ NONE, SHADOWED, 0x00FF4100L, 0x0000, 0x0000, 0x000F, 0x0002, TOT , -1, -1, G_STRING , /* Object 77 MEM */ NONE, NORMAL, "MEM: XXXXXX K", 0x0001, 0x0000, 0x000D, 0x0001, 76, -1, -1, G_STRING , /* Object 78 TOT */ LASTOB, NORMAL, "TOT: XXXXXX K", 0x0001, 0x0001, 0x000D, 0x0001, 76, -1, -1, G_STRING , /* Object 78 TOT */ LASTOB, NORMAL, "TOT: XXXXXX K", 0x0001, 0x0001, 0x000D, 0x0001 }; #define NUM_OBS 79 N@`h>>>> PURE-C <<<< for ATARI-ST Version 1.0 (C)88-90 Borland International xArgARGV&H f&op`B@#3 k # Ј<.@#Jyg<"@(I$k,"Jf"JfB// ?<?<JNAO ApN g0pNJg"f @ Jf ( $f6$P`A7N g$ +f["LfBB$IBC`RCJf`zA<~kRrRAfA6<HCBB`6 !jBJ)gHiRC` "fSI "WSAkHiRCBSQJ)gHiRCHy$ON0 J"LN? 9g @N 9g @NN?<LNA     Z             $  *      ! " # $ % & ' ( )  *       +   ,   -   . / 0 1 2 3 4 5 6 7 8 9 : ; < H= >_PgmSize_BasPagstrtoulmaingetenvexiterrno__exit__text__bss_app _AtExitVec__data_FreeAll_fpuinit_StkSize_StkLim _FilSysVec _RedirTab* PCSTART.S * * Pure C Startup Code * * Copyright (c) Borland International 1988/89/90 * All Rights Reserved. * * xArg and ARGV scan added (c) Digital Design 1991/92 * * WARNING: This code only runs correct with Pure-C Versions * 1.1 and greater. In older Versions, there is a bug * in the getenv() function in the standard library ! * If you use such a buggy version, you have to add * the quoted code in the ARGV-Scan by removing the * comment marks ! *>>>>>> Export references <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< .EXPORT exit, __exit .EXPORT _BasPag .EXPORT _app .EXPORT errno .EXPORT _AtExitVec, _FilSysVec .EXPORT _RedirTab .EXPORT _StkLim .EXPORT _PgmSize .EXPORT __text, __data, __bss *>>>>>> Import references <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< .IMPORT main .IMPORT _fpuinit .IMPORT _StkSize .IMPORT _FreeAll .IMPORT getenv .IMPORT strtoul *>>>>>> Data structures <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< * Base page structure .OFFSET 0 TpaStart: .DS.L 1 TpaEnd: .DS.L 1 TextSegStart: .DS.L 1 TextSegSize: .DS.L 1 DataSegStart: .DS.L 1 DataSegSize: .DS.L 1 BssSegStart: .DS.L 1 BssSegSize: .DS.L 1 DtaPtr: .DS.L 1 PntPrcPtr: .DS.L 1 Reserved0: .DS.L 1 EnvStrPtr: .DS.L 1 Reserved1: .DS.B 7 CurDrv: .DS.B 1 Reserved2: .DS.L 18 CmdLine: .DS.B 128 BasePageSize: .DS 0 *>>>>>>> Data segment <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< .BSS __bss: * Pointer to base page _BasPag: .DS.L 1 * Applikation flag _app: .DS.W 1 * Stack limit _StkLim: .DS.L 1 * Program size _PgmSize: .DS.L 1 * Redirection address table _RedirTab: .DS.L 6 *>>>>>>> Initialized data segment <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< .DATA __data: * Global error variable errno: .DC.W 0 * Vector for atexit _AtExitVec: .DC.L 0 * Vector for file system deinitialization _FilSysVec: .DC.L 0 *>>>>>>> Code segment <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< .CODE __text: ******** PcStart ******************************************************** Start: BRA.B Start0 ******* Configuration data * Redirection array pointer .DC.L _RedirTab * Stack size entry .DC.L _StkSize ******* Pc library copyright note .ALIGN 16 .DC.B '>>>> PURE-C <<<<' .DC.B ' for ATARI-ST ' .DC.B ' Version 1.0 ' .DC.B '(C)88-90 Borland' .DC.B ' International ' _xArg: .DC.B 'xArg', 0 _ARGV: .DC.B 'ARGV' EmpStr: .DC.B 0 ******** Pc startup code * Setup pointer to base page Start0: MOVE.L A0, A3 MOVE.L A3, D0 BNE ACC MOVE.L 4(A7), A3 ; BasePagePointer from Stack MOVEQ.L #1, D0 ; Program is Application BRA APP ACC: CLR.W D0 ; Program is DeskAccessory APP: MOVE.L A3, _BasPag * Setup applikation flag MOVE.W D0,_app * Compute size of required memory * := text segment size + data segment size + bss segment size * + stack size + base page size * (base page size includes stack size) MOVE.L TextSegSize(A3),A0 ADD.L DataSegSize(A3),A0 ADD.L BssSegSize(A3),A0 ADD.W #BasePageSize,A0 MOVE.L A0, _PgmSize * Setup longword aligned application stack MOVE.L A3,D0 ADD.L A0,D0 AND.B #$FC,D0 MOVE.L D0,A7 * Setup stack limit variable SUB.L #_StkSize-256,D0 MOVE.L D0,_StkLim * check application flag TST.W _app BEQ Start8 * No environment and no arguments * scan environment SUB.L #250, D0 AND.B #$FC, D0 MOVE.L D0, A1 MOVE.L A1, A4 MOVE.L EnvStrPtr(A3), A2 MOVE.L A2, (A1)+ Start1: TST.B (A2)+ BNE Start1 MOVE.L A2, (A1)+ TST.B (A2)+ BNE Start1 CLR.L -(A1) * Free not required memory MOVE.L A0,-(A7) MOVE.L A3,-(A7) MOVE.W #0,-(A7) MOVE.W #74,-(A7) TRAP #1 LEA.L 12(A7),A7 * scan xArg LEA.L _xArg(PC),A0 JSR getenv * a0 = getenv( "xArg" ) MOVE.L A0,D0 * a0 ? BEQ Start14 MOVEQ.L #16,D0 SUB.L A1,A1 JSR strtoul * d0 = strtoul( a0, 0, 16 ) TST.L D0 * d0 ? BEQ Start14 BTST #0,D0 * odd value ? BNE Start14 MOVE.L D0,A0 * a0 = (XARG *)d0 MOVE.L (A0)+,D0 CMP.L _xArg(PC),D0 * a0->xarg_magic == 'xArg' ? BNE Start14 MOVE.L 10(A0),D0 CMP.L PntPrcPtr(A3),D0 * a0->xparent == _BasPag->parent ? BNE Start14 MOVE (A0)+,D3 * argc = a0->xargc MOVE.L (A0),A2 * argv = a0->xargv BRA Start8 Start14: * scan ARGV LEA.L _ARGV(PC),A0 JSR getenv * a0 = getenv( "ARGV" ) MOVE.L A0,D0 * a0 ? BEQ Start19 CMP.B #127,CmdLine(A3) * *_BasPag->p_cmdlin == 127 ? BNE Start19 ; TST.B -1(A0) * this code fixes the getenv bug ; BNE Start15 * (0-skip) in the old STDLIB ; SUBQ.L #1,A0 * of Turbo-C and Pure-C < 1.1 ! Start15:SUBQ.L #5,A0 * a0 -= 5, so a0 points to 'ARGV=' MOVE.L A4,A1 * a1 = env Start16:CMP.L (A1)+,A0 BNE Start16 * while (*a1++ != a0); CLR.B (A0) * *a0 = 0, overwrite 'A' in 'ARGV=' CLR.L -4(A1) * a1[-1] = 0, cut args in env MOVE.L A1,A2 * argv = a1 CLR D3 * argc = 0 BRA Start18 Start17:ADDQ #1,D3 Start18:TST.L (A1)+ BNE Start17 * while (*a1++) ++argc; BRA Start8 Start19: * scan commandline LEA CmdLine(A3), A0 MOVE.B (A0), D1 CMP.B #126, D1 * Is this a valid command_tail length ? BMI vallidLength ADDQ.L #1, A0 MOVEQ.L #-1, D1 getLen: ADDQ #1, D1 MOVE.B (A0)+, D0 BNE getLen LEA CmdLine(A3), A0 vallidLength: MOVE #1, D3 EXT.W D1 LEA 1(A0, D1.W), A1 CLR.B (A1) CLR.l -(A7) * argv[argc] = 0 BRA Start5 Start2: * testing blank (seperator) CMPI.B #' '+1, (A1) BPL Start3 CLR.B (A1) TST.B 1(A1) BEQ Start3 PEA 1(A1) ADDQ #1, D3 BRA Start5 Start3: * testing quotation marks CMPI.B #'"', (A1) BNE Start5 MOVE.B #0, (A1) Start4: * scan previous SUBQ #1, A1 CMPI.B #'"', (A1) DBEQ D1, Start4 SUBQ #1, D1 BMI Start6 PEA 1(A1) ADDQ #1, D3 CLR.B (A1) Start5: SUBQ.L #1, A1 DBF D1, Start2 Start6: TST.B 1(A1) BEQ Start7 PEA 1(A1) ADDQ #1, D3 Start7: PEA EmpStr MOVEA.L A7, A2 * Test if fpu 68881 is present Start8: JSR _fpuinit ******* Execute main program ******************************************* * * Parameter passing: * = Command line argument count (argc) * = Pointer to command line argument pointer array (argv) * = Pointer to tos environment string (env) MOVE D3, D0 MOVE.L A2, A0 MOVE.L A4, A1 JSR main ******** exit *********************************************************** * * Terminate program * * Entry parameters: * = Termination status : Integer * Return parameters: * Never returns exit: MOVE.W D0,-(A7) * Execute all registered atexit procedures MOVE.L _AtExitVec,D0 BEQ __exit MOVE.L D0,A0 JSR (A0) * Deinitialize file system __exit: MOVE.L _FilSysVec,D0 BEQ Exit1 MOVE.L D0,A0 JSR (A0) * Deallocate all heap blocks Exit1: JSR _FreeAll * Program termination with return code MOVE.W #76,-(A7) TRAP #1 ******* Module end ***************************************************** .END #include #include #include #include #include #include #include typedef struct view { int handle, planes, lbc, /* left-border-count fr Fenster. */ tlc, /* top-line-count fr Fenster. */ bc, /* border-count fr Fenster. */ lc, /* line-count fr Fenster. */ xfac, yfac, /* Scroll- und Rastereinheiten. */ x, y, w, h, /* Arbeitsbereich des Fensters. */ hslide, vslide, /* Puffer fr Sliderpositionen. */ (*key)( struct view *tv, int code, int ks ); void (*draw)( struct view *tv, int *clip ), (*free)( struct view *tv ), (*sclick)( struct view *tv, int mx, int my, int flag ); char path[128]; /* Datei-Pfad (Fenstertitel). */ struct view *next; /* Zeiger auf nchste Fensterstruktur. */ struct view *prev; /* Zeiger auf vorige Fensterstruktur. */ BASPAG *actpd; /* Zeiger auf Prozess-Descriptor. */ MFDB mfdb; int width, height, x_flag, scale; rgb_list[8]; /* Farbpalette. */ } VIEW; #include "1stview.h" #include "util.h" #ifdef __TOS__ #define X_MAGIC 'XIMG' #define FM_MAGIC 'FORM' #define FM_IMAGE 'ILBM' #define BM_MAGIC 'BMHD' #define CM_MAGIC 'CMAP' #define BO_MAGIC 'BODY' #else #define X_MAGIC 'X'+((long)'I'<<8)+((long)'M'<<16)+((long)'G'<<24) #define FM_MAGIC 'F'+((long)'O'<<8)+((long)'R'<<16)+((long)'M'<<24) #define FM_IMAGE 'I'+((long)'L'<<8)+((long)'B'<<16)+((long)'M'<<24) #define BM_MAGIC 'B'+((long)'M'<<8)+((long)'H'<<16)+((long)'D'<<24) #define CM_MAGIC 'C'+((long)'M'<<8)+((long)'A'<<16)+((long)'P'<<24) #define BO_MAGIC 'B'+((long)'O'<<8)+((long)'D'<<16)+((long)'Y'<<24) #endif typedef struct { int version, headlen, planes, pat_run, pix_width, pix_height, sl_width, sl_height; } IMG_HEADER; typedef struct { long magic, length; } CHUNK_HEADER; typedef struct { long fm_magic, fm_length, fm_type; } FORMCHUNK; typedef struct { long bm_magic, bm_length; int bm_width, bm_height, bm_x, bm_y; char bm_nPlanes, bm_Masking, bm_Compression, bm_pad1; int bm_transparentColor; char bm_xAspect, bm_yAspect; int bm_pageWidth, bm_pageHeight; } BMHDCHUNK; static long four[256]; static int doub[256], maxconv; static char half[512]; static unsigned char Pli2Vdi[256], Vdi2Pli[256]; static char string2[] = { 0, 0, 0, 0 }, string3[] = "XXXXX *XXXXX Pixel", string4[] = "---- XX Ebenen ----", string5[] = " Sichern (XIMG) ^X", ostring[] = " Original-Pal. ^E", sstring[] = " Standard-Pal. ^S", dithermatrix[] = { 17, 61, 27, 51, 18, 63, 25, 49, 41, 5, 38, 14, 42, 7, 37, 13, 31, 55, 20, 56, 28, 52, 22, 59, 34, 10, 44, 0, 32, 8, 46, 3, 19, 62, 24, 48, 16, 60, 26, 50, 43, 6, 36, 12, 40, 4, 39, 15, 29, 53, 23, 58, 30, 54, 21, 57, 33, 9, 47, 2, 35, 11, 45, 1 }; static int defcols[][3] = { 1000, 1000, 1000, 1000, 0, 0, 0, 1000, 0, 1000, 1000, 0, 0, 0, 1000, 1000, 0, 1000, 0, 1000, 1000, 666, 666, 666, 333, 333, 333, 666, 0, 0, 0, 666, 0, 666, 666, 0, 0, 0, 666, 666, 0, 666, 0, 666, 666, 0, 0, 0 }; #pragma warn -rpt static OBJECT popup[] = { 0, 1, 9, G_BOX, NONE, SHADOWED, 0xFF1100L, 0, 0, 19,7, 5, -1, -1, G_STRING, NONE, DISABLED, string3, 0, 0, 19,1, 3, -1, -1, G_BUTTON, NONE, NORMAL, "-- ^\004", 0, 1, 7,1, 4, -1, -1, G_BUTTON, NONE, DISABLED, string2, 7, 1, 5,1, 6, -1, -1, G_BUTTON, NONE, NORMAL, "++ ^\003", 12,1, 7,1, 2, -1, -1, G_STRING, NONE, NORMAL, ostring, 0, 2, 19,1, 7, -1, -1, G_STRING, NONE, DISABLED, string4, 0, 3, 19,1, 8, -1, -1, G_STRING, NONE, DISABLED, " Transparent ^K", 0, 4, 19,1, 9, -1, -1, G_STRING, NONE, DISABLED, "--- Farbpalette ---", 0, 5, 19,1, 0, -1, -1, G_STRING, LASTOB, NORMAL, string5, 0, 6, 19,1 }; #pragma warn +rpt static long gray( int *rgb ) { return (598L * rgb[0] + 1174L * rgb[1] + 228L * rgb[2] + 15625) / 31250; } static int get_pix( void ) { int pel[2]; *(long *)pel = 0; v_pmarker( handle, 1, pel ); v_get_pixel( handle, 0, 0, pel, pel + 1 ); return *pel; } static void get_true( int *rgb, void *buf ) { static int pxy[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; static MFDB screen = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, check = { 0, 0, 1, 0, 0, 0, 0, 0, 0 }; vs_color( handle, 1, rgb ); v_pmarker( handle, 1, pxy ); check.fd_addr = buf; check.fd_nplanes = check.fd_w = nplanes; check.fd_wdwidth = (check.fd_w + 15) >> 4; vro_cpyfm( handle, S_ONLY, pxy, &screen, &check ); } static int pli2vdi( int pli, int plimax ) { if (ks & 1) return pli; if (pli == plimax) return 1; if (pli > maxconv) return pli; return Pli2Vdi[pli]; } static int vdi2pli( int vdi, int plimax ) { if ((ks & 1) == 0) return vdi; if (vdi == 1) return plimax; if (vdi > maxconv) return vdi; return Vdi2Pli[vdi]; } static void setconv( void ) { static char vdi2pli[] = { 0,15,1,2,4,6,3,5,7,8,9,10,12,14,11,13 }; int i, k; i = 255; do { char c = 0x80; c &= i; c += (i & (1 << 5)) << 1; c += (i & (1 << 3)) << 2; c += (i & (1 << 1)) << 3; half[i] = c; (unsigned char)c >>= 4; half[256 + i] = c; k = 0; if ((c = i) < 0) k += (1 << 15) + (1 << 14); if ((c <<= 1) < 0) k += (1 << 13) + (1 << 12); if ((c <<= 1) < 0) k += (1 << 11) + (1 << 10); if ((c <<= 1) < 0) k += (1 << 9) + (1 << 8); if ((c <<= 1) < 0) k += (1 << 7) + (1 << 6); if ((c <<= 1) < 0) k += (1 << 5) + (1 << 4); if ((c <<= 1) < 0) k += (1 << 3) + (1 << 2); if ((c <<= 1) < 0) k += 3; doub[i] = k; } while (--i >= 0); i = 255 * 2; do { k = *(int *)((char *)doub + i); ((int *)four)[i] = doub[(unsigned)k >> 8]; k &= 0xFF; k <<= 1; ((int *)four)[i + 1] = *(int *)((char *)doub + k); } while ((i -= 2) >= 0); i = 255; if (nplanes < 8) i = (1 << nplanes) - 1; k = 15; if (i < k || nplanes > k) i = k; maxconv = i; do { if (maxconv <= 15) k = vdi2pli[i]; else { vsm_color( handle, i ); k = get_pix(); if ((unsigned)maxconv < (unsigned)k) k = maxconv; } Vdi2Pli[i] = k; Pli2Vdi[k] = i; } while (--i >= 0); } static void switch_colors( VIEW *tv ) { int colors, k, *rgb_list, rgb_get[3]; if ((tv->x_flag & 1) == 0) return; rgb_list = tv->rgb_list; if (*rgb_list++) return; colors = 1 << min( tv->planes, nplanes ); for (k = 0; k < colors; ++k) { vq_color( handle, k, 0, rgb_get ); vs_color( handle, k, rgb_list ); *rgb_list++ = rgb_get[0]; *rgb_list++ = rgb_get[1]; *rgb_list++ = rgb_get[2]; } tv->x_flag ^= 4; } static void write_palette( int xflag, int fh, int count, int *rgb_list ) { int pli, *rgb_ptr; unsigned char c[4]; count = count / 3 - 1; pli = 0; do { rgb_ptr = rgb_list + 3 * pli2vdi( pli, count ); if (xflag) Fwrite( fh, 6, rgb_ptr ); else { c[0] = (unsigned char)((*rgb_ptr++ * 255L) / 1000); c[1] = (unsigned char)((*rgb_ptr++ * 255L) / 1000); c[2] = (unsigned char)((*rgb_ptr++ * 255L) / 1000); Fwrite( fh, 3, c ); } } while (++pli <= count); } static void save_palette( VIEW *tv ) { long count, k, j; int fh, i, *rgb_list; char *buf; rgb_list = tv->rgb_list; *rgb_list++ = 0; i = 1 << min( tv->planes, nplanes ); fh = 0; do vq_color( handle, fh, 0, rgb_list + fh * 3 ); while (++fh < i); graf_mouse( BUSYBEE, 0 ); if ((fh = Fopen( tv->path, 2 )) < 0) { graf_mouse( ARROW, 0 ); form_error( -fh - 31 ); return; } i = (1 << tv->planes) * 3; if (tv->x_flag & 1) { if (tv->x_flag & 2) { CHUNK_HEADER ch; ch.length = sizeof(FORMCHUNK); do { Fseek( (ch.length + 1) & -2, fh, 1 ); if (Fread( fh, 8, &ch ) < 8) { Fclose( fh ); graf_mouse( ARROW, 0 ); form_error( ENOENT ); return; } #ifndef __TOS__ fliplongs( (int *)&ch.length, 1, 1 ); #endif } while (ch.magic != CM_MAGIC); write_palette( 0, fh, min( (int)ch.length, i ), rgb_list ); } else { Fseek( sizeof(IMG_HEADER) + 4, fh, 0 ); #ifndef __TOS__ flipwords( (char *)(rgb_list - 1), (i + 1) << 1 ); #endif Fwrite( fh, 2, rgb_list - 1 ); write_palette( 1, fh, i, rgb_list ); #ifndef __TOS__ flipwords( (char *)(rgb_list - 1), (i + 1) << 1 ); #endif } } else { count = Fseek( 0, fh, 2 ); if ((buf = Malloc( count )) == 0) { Fclose( fh ); graf_mouse( ARROW, 0 ); form_error( EINVMEM ); return; } Fseek( 0, fh, 0 ); count = Fread( fh, count, buf ); Fseek( 0, fh, 0 ); if (tv->x_flag & 2) { k = 12; do { if ((j = k) > count) { Mfree( buf ); Fclose( fh ); graf_mouse( ARROW, 0 ); form_error( ENOENT ); return; } #ifndef __TOS__ fliplongs( (int *)(buf + j + 4), 1, 1 ); #endif k += (*(long *)(buf + j + 4) + 9) & -2; #ifndef __TOS__ fliplongs( (int *)(buf + j + 4), 1, 1 ); #endif } while (*(long *)(buf + j) != BM_MAGIC); #ifndef __TOS__ fliplongs( (int *)(buf + 4), 1, 1 ); #endif *(long *)(buf + 4) += i + 8; #ifndef __TOS__ fliplongs( (int *)(buf + 4), 1, 1 ); #endif Fwrite( fh, k, buf ); *(long *)buf = i; #ifndef __TOS__ fliplongs( (int *)buf, 1, 1 ); #endif Fwrite( fh, 4, "CMAP" ); Fwrite( fh, 4, buf ); write_palette( 0, fh, i, rgb_list ); } else { #ifndef __TOS__ flipwords( buf, sizeof(IMG_HEADER) ); #endif k = ((IMG_HEADER *)buf)->headlen << 1; ((IMG_HEADER *)buf)->headlen = 11 + i; #ifndef __TOS__ flipwords( buf, sizeof(IMG_HEADER) ); flipwords( (char *)(rgb_list - 1), (i + 1) << 1 ); #endif Fwrite( fh, sizeof(IMG_HEADER), buf ); Fwrite( fh, 4, "XIMG" ); Fwrite( fh, 2, rgb_list - 1 ); write_palette( 1, fh, i, rgb_list ); #ifndef __TOS__ flipwords( (char *)(rgb_list - 1), (i + 1) << 1 ); #endif } Fwrite( fh, count - k, buf + k ); Mfree( buf ); tv->x_flag |= 1; } Fclose( fh ); graf_mouse( ARROW, 0 ); } static void transform( MFDB *src, MFDB *des ) { long size; *src = *des; size = 2L * src->fd_wdwidth * src->fd_h * src->fd_nplanes; if ((src->fd_addr = Malloc( size )) == 0) { if (src->fd_nplanes > 1) return; src->fd_addr = des->fd_addr; } else memcpy( src->fd_addr, des->fd_addr, size ); #ifndef __TOS__ if (src->fd_stand) flipwords( src->fd_addr, size ); #endif vr_trnfm( handle, src, des ); #ifndef __TOS__ if (des->fd_stand) flipwords( des->fd_addr, size ); #endif if (src->fd_addr != des->fd_addr) Mfree( src->fd_addr ); } static void draw_image( VIEW *tv, int *clip ) { char *des; long size1, size2, lxy[4]; int i, k, index[2], pxy[8]; VIEW *hv; MFDB d, s; *(long *)index = 0; ++*index; lxy[0] = ((long)tv->lbc << 3) + (clip[0] - tv->x); lxy[1] = ((long)tv->tlc << 3) + (clip[1] - tv->y); lxy[2] = lxy[0] + (clip[2] - clip[0]); lxy[3] = lxy[1] + (clip[3] - clip[1]); size1 = tv->mfdb.fd_w; size2 = tv->mfdb.fd_h; if ((i = tv->scale) > 0) { size1 <<= i; size2 <<= i; } if (i < 0) { size1 >>= -i; size2 >>= -i; } if (size1 <= lxy[2]) lxy[2] = --size1; if (size2 <= lxy[3]) lxy[3] = --size2; pxy[0] = (int)lxy[0]; pxy[1] = (int)lxy[1]; pxy[2] = (int)lxy[2]; pxy[3] = (int)lxy[3]; *(long *)(pxy + 4) = *(long *)clip; pxy[6] = clip[0] + pxy[2] - pxy[0]; pxy[7] = clip[1] + pxy[3] - pxy[1]; if (pxy[6] < clip[2] || pxy[7] < clip[3]) { if (pxy[7] >= clip[3] && pxy[6] >= clip[0]) clip[0] = pxy[6] + 1; if (pxy[6] >= clip[2] && pxy[7] >= clip[1]) clip[1] = pxy[7] + 1; vr_recfl( handle, clip ); if (pxy[6] < pxy[4] || pxy[7] < pxy[5]) return; } if (i == 0) { if (tv->mfdb.fd_stand) transform( &s, &tv->mfdb ); if (tv->mfdb.fd_stand == 0) { d.fd_addr = 0; if (tv->mfdb.fd_nplanes == 1) { if (nplanes >= 16) switch_colors( tv ); vrt_cpyfm( handle, MD_REPLACE, pxy, &tv->mfdb, &d, index ); if (nplanes >= 16) switch_colors( tv ); } else vro_cpyfm( handle, S_ONLY, pxy, &tv->mfdb, &d ); return; } } if (tv->mfdb.fd_stand == 0) transform( &s, &tv->mfdb ); d = tv->mfdb; if (i <= 0) { pxy[3] -= pxy[1]; pxy[1] = 0; d.fd_h = pxy[3] + 1; if (i < 0) { d.fd_w = ((pxy[2] >> 3) - (pxy[0] >> 3) + 1) << 3; k = 7; } else { d.fd_w = ((pxy[2] >> 4) - (pxy[0] >> 4) + 1) << 4; k = 15; } } else { d.fd_h = ((pxy[3] >> i) - (pxy[1] >> i) + 1) << i; k = (1 << i) - 1; i += 3; pxy[3] -= pxy[1] & ~k; pxy[1] &= k; d.fd_w = ((pxy[2] >> i) - (pxy[0] >> i) + 1) << i; k = (1 << i) - 1; i -= 3; } pxy[2] -= pxy[0] & ~k; pxy[0] &= k; d.fd_wdwidth = (d.fd_w + 15) >> 4; if (d.fd_stand == 0 || (des = Malloc( 4L * d.fd_wdwidth * d.fd_h * d.fd_nplanes )) == 0) { vsf_interior( handle, FIS_USER ); vsf_color( handle, 1 ); vr_recfl( handle, pxy + 4 ); vsf_color( handle, 0 ); vsf_interior( handle, FIS_SOLID ); return; } size1 = tv->mfdb.fd_wdwidth << 1; size2 = size1 * tv->mfdb.fd_h; s = d; d.fd_addr = des; hv = tv; if (i < 0) { i = -i; size1 <<= i; (char *)s.fd_addr += size1 * lxy[1] + ((lxy[0] >> 3) << i); if (--i == 0) { char *phalf1, *phalf2; long c; phalf1 = half; phalf2 = phalf1 + 256; c = 0; do { tv = s.fd_addr; (char *)s.fd_addr += size2; i = d.fd_h; do { clip = (int *)tv; (char *)tv += size1; k = d.fd_wdwidth; do { #ifdef __TOS__ char e; (char)c = *((char *)clip)++; e = phalf1[c]; (char)c = *((char *)clip)++; e |= phalf2[c]; *des++ = e; (char)c = *((char *)clip)++; e = phalf1[c]; (char)c = *((char *)clip)++; e |= phalf2[c]; *des++ = e; #else int e; (char)c = *((char *)clip)++; (char)e = phalf1[c]; (char)c = *((char *)clip)++; (char)e |= phalf2[c]; e <<= 8; (char)c = *((char *)clip)++; (char)e = phalf1[c]; (char)c = *((char *)clip)++; (char)e |= phalf2[c]; *((int *)des)++ = e; #endif } while (--k); } while (--i); } while (--d.fd_nplanes); } else if (--i == 0) { char *phalf1, *phalf2; long c, e; phalf1 = half; phalf2 = phalf1 + 256; e = c = 0; do { tv = s.fd_addr; (char *)s.fd_addr += size2; i = d.fd_h; do { clip = (int *)tv; (char *)tv += size1; k = d.fd_wdwidth; do { (char)c = *((char *)clip)++; (char)e = phalf1[c]; (char)c = *((char *)clip)++; (char)e |= phalf2[c]; *des = phalf1[e]; (char)c = *((char *)clip)++; (char)e = phalf1[c]; (char)c = *((char *)clip)++; (char)e |= phalf2[c]; (char)e = phalf2[e]; *des++ |= e; (char)c = *((char *)clip)++; (char)e = phalf1[c]; (char)c = *((char *)clip)++; (char)e |= phalf2[c]; *des = phalf1[e]; (char)c = *((char *)clip)++; (char)e = phalf1[c]; (char)c = *((char *)clip)++; (char)e |= phalf2[c]; (char)e = phalf2[e]; *des++ |= e; } while (--k); } while (--i); } while (--d.fd_nplanes); #ifndef __TOS__ flipwords( d.fd_addr, des - d.fd_addr ); #endif } else do { tv = s.fd_addr; (char *)s.fd_addr += size2; i = d.fd_h; do { clip = (int *)tv; (char *)tv += size1; k = d.fd_wdwidth; do { int e = 0; if (*((char *)clip)++ < 0) e += 1 << 15; if (*((char *)clip)++ < 0) e += 1 << 14; if (*((char *)clip)++ < 0) e += 1 << 13; if (*((char *)clip)++ < 0) e += 1 << 12; if (*((char *)clip)++ < 0) e += 1 << 11; if (*((char *)clip)++ < 0) e += 1 << 10; if (*((char *)clip)++ < 0) e += 1 << 9; if (*((char *)clip)++ < 0) e += 1 << 8; if (*((char *)clip)++ < 0) e += 1 << 7; if (*((char *)clip)++ < 0) e += 1 << 6; if (*((char *)clip)++ < 0) e += 1 << 5; if (*((char *)clip)++ < 0) e += 1 << 4; if (*((char *)clip)++ < 0) e += 1 << 3; if (*((char *)clip)++ < 0) e += 1 << 2; if (*((char *)clip)++ < 0) e += 1 << 1; if (*((char *)clip)++ < 0) e += 1; *((int *)des)++ = e; } while (--k); } while (--i); } while (--d.fd_nplanes); } else if (i == 0) { (char *)s.fd_addr += size1 * lxy[1] + ((lxy[0] >> 4) << 1); do { tv = s.fd_addr; (char *)s.fd_addr += size2; i = d.fd_h; do { clip = (int *)tv; (char *)tv += size1; k = d.fd_wdwidth; do *((int *)des)++ = *clip++; while (--k); } while (--i); } while (--d.fd_nplanes); #ifndef __TOS__ flipwords( d.fd_addr, des - d.fd_addr ); #endif } else { (char *)s.fd_addr += size1 * (lxy[1] >> i) + ((lxy[0] >> 3) >> i); if (--i == 0) { int *pdoub = doub; do { tv = s.fd_addr; (char *)s.fd_addr += size2; i = d.fd_h; do { unsigned char *src = (unsigned char *)tv; (char *)tv += size1; k = d.fd_wdwidth; k <<= 1; (char *)clip = des + k; do { *(int *)des = pdoub[*src++]; *clip++ = *((int *)des)++; } while (k -= 2); des = (char *)clip; } while (i -= 2); } while (--d.fd_nplanes); } else if (--i == 0) { long *pfour = four; do { tv = s.fd_addr; (char *)s.fd_addr += size2; i = d.fd_h; do { unsigned char *src = (unsigned char *)tv; (char *)tv += size1; clip = (int *)des; k = d.fd_wdwidth; do *((long *)des)++ = pfour[*src++]; while (k -= 2); k = d.fd_wdwidth; do { *((long *)des)++ = *((long *)clip)++; *((long *)des)++ = *((long *)clip)++; *((long *)des)++ = *((long *)clip)++; } while (k -= 2); } while (i -= 4); } while (--d.fd_nplanes); } else { char c = -1; do { tv = s.fd_addr; (char *)s.fd_addr += size2; i = d.fd_h; do { char *src = (char *)tv; (char *)tv += size1; clip = (int *)des; k = d.fd_wdwidth; do { char e; if ((e = *src++) < 0) *des++ = c; else *des++ = 0; if ((e <<= 1) < 0) *des++ = c; else *des++ = 0; if ((e <<= 1) < 0) *des++ = c; else *des++ = 0; if ((e <<= 1) < 0) *des++ = c; else *des++ = 0; if ((e <<= 1) < 0) *des++ = c; else *des++ = 0; if ((e <<= 1) < 0) *des++ = c; else *des++ = 0; if ((e <<= 1) < 0) *des++ = c; else *des++ = 0; if ((e <<= 1) < 0) *des++ = c; else *des++ = 0; } while (k -= 4); k = d.fd_wdwidth; do { *((long *)des)++ = *((long *)clip)++; *((long *)des)++ = *((long *)clip)++; *((long *)des)++ = *((long *)clip)++; *((long *)des)++ = *((long *)clip)++; *((long *)des)++ = *((long *)clip)++; *((long *)des)++ = *((long *)clip)++; *((long *)des)++ = *((long *)clip)++; } while (k -= 2); } while (i -= 8); } while (--d.fd_nplanes); #ifndef __TOS__ flipwords( d.fd_addr, des - d.fd_addr ); #endif } } tv = hv; d.fd_nplanes = s.fd_nplanes; s.fd_addr = des; des = d.fd_addr; vr_trnfm( handle, &d, &s ); d.fd_addr = 0; if (s.fd_nplanes == 1) { if (nplanes >= 16) switch_colors( tv ); vrt_cpyfm( handle, MD_REPLACE, pxy, &s, &d, index ); if (nplanes >= 16) switch_colors( tv ); } else vro_cpyfm( handle, S_ONLY, pxy, &s, &d ); Mfree( des ); } static void change_scale( VIEW *tv, int mx, int my, int delta ) { int dx, dy, d[3]; if (mx < 0) { graf_mkstate( d + 1, d + 2, d, d ); mx = d[1]; my = d[2]; } dx = tv->width; dy = tv->height; switch (tv->scale += delta) { case -3: ++dx; dx >>= 1; ++dy; dy >>= 1; case -2: ++dx; dx >>= 1; ++dy; dy >>= 1; case -1: ++dx; dx >>= 1; ++dy; dy >>= 1; case 0: ++dx; dx >>= 1; ++dy; dy >>= 1; case 1: ++dx; dx >>= 1; ++dy; dy >>= 1; case 2: ++dx; dx >>= 1; ++dy; dy >>= 1; } dx -= tv->w >> 3; tv->bc = dx; dy -= tv->h >> 3; tv->lc = dy; dx = tv->lbc; mx -= tv->x; mx += 3; mx >>= 3; dx += mx; dy = tv->tlc; my -= tv->y; my += 3; my >>= 3; dy += my; if (delta > 0) { dx <<= 1; dy <<= 1; } else { dx >>= 1; dy >>= 1; } dx -= mx; if (tv->bc < dx) dx = tv->bc; if (dx < 0) dx = 0; dy -= my; if (tv->lc < dy) dy = tv->lc; if (dy < 0) dy = 0; tv->lbc = dx; tv->tlc = dy; set_allslider(); full_redraw(); } static void free_image() { } #pragma warn -par static int key_image( VIEW *tv, int code, int ks ) { switch (code) { case CNTRL_CL: if (tv->scale >= -2) change_scale(tv,-1,0,-1); return 0; case CNTRL_CR: if (tv->scale <= 2) change_scale(tv,-1,0, 1); return 0; case CNTRL_E: if ((tv->x_flag & 4) == 0) switch_colors( tv ); return 0; case CNTRL_S: if (tv->x_flag & 4) switch_colors( tv ); return 0; case CNTRL_X: save_palette( tv ); return 0; } return 1; } #pragma warn +par static void sclick_image( VIEW *tv, int mx, int my, int flag ) { if (flag) return; popup[5].ob_state = tv->x_flag & 1 ? NORMAL : DISABLED; popup[5].ob_spec.free_string = tv->x_flag & 4 ? sstring : ostring; popup[4].ob_state = tv->scale <= 2 ? NORMAL : DISABLED; popup[2].ob_state = tv->scale >= -2 ? NORMAL : DISABLED; { char v = ' ', z = '0', *p = string2; if (tv->scale < 0) { v = '-'; z -= tv->scale; } if (tv->scale > 0) { v = '+'; z += tv->scale; } *p++ = v; *p++ = z; *p++ = v; } itostring( tv->width, string3 + 5, 6 ); itostring( tv->height, string3 + 12, 6 ); itostring( tv->planes, string4 + 7, 3 ); strncpy( string5 + 10, tv->x_flag & 2 ? "CMAP" : "XIMG", 4 ); switch (popup_menu( popup, 3, mx, my, objc_draw )) { case 2: change_scale( tv, mx, my, -1 ); break; case 4: change_scale( tv, mx, my, 1 ); break; case 5: switch_colors( tv ); break; case 9: save_palette( tv ); } } static VIEW *load_image( int fh, int planes, int height, int width, int special, int headlen ) { VIEW *rv; char cdata, *line_buf, *endl_buf, *line_ptr, *raster_ptr, *plane_ptr, *buf_ptr; int idata, i, linelen, line, vrc, ditherflag; long bufsize, planesize, rastsize; MFDB s; FBUF f; s.fd_wdwidth = (width + 15) >> 4; linelen = s.fd_wdwidth << 1; s.fd_w = (width + 7) & -8; s.fd_h = (height + 7) & -8; bufsize = (long)linelen * planes; planesize = (long)linelen * s.fd_h; s.fd_nplanes = planes > 1 ? nplanes : 1; i = 0; if (s.fd_nplanes >= 16) i = 1 - (s.fd_nplanes >> 3); if (s.fd_nplanes < planes && (i = par.dithcol) != 0) { if (s.fd_nplanes < 3) i = 1; if (i == 1) s.fd_nplanes = 1; } rastsize = planesize * s.fd_nplanes; idata = 1 << planes; line = idata * 6 + 2; if ((ditherflag = i) != 0) { i = idata; if (ditherflag != 1) { i <<= 1; if (ditherflag != -1) i <<= 1; } } if ((rv = Malloc( sizeof(VIEW) + line + rastsize )) == 0) { Fclose( fh ); form_error( EINVMEM ); return 0; } if ((buf_ptr = Malloc( bufsize + i )) == 0) { Mfree( rv ); Fclose( fh ); form_error( EINVMEM ); return 0; } if (popup->ob_next == 0) { --popup->ob_next; fix_tree( popup, 9 ); setconv(); } rv->planes = planes; rv->width = width; rv->height = height; width = headlen ? (s.fd_w >> 3) : linelen; line_buf = (char *)rv->rgb_list; raster_ptr = line_buf + line; endl_buf = buf_ptr + bufsize; --idata; if (headlen) /* IMG */ { i = 0; if (headlen >= 10) { Fread( fh, 4, line_buf ); if (*(long *)line_buf == X_MAGIC) { Fread( fh, 2, line_buf ); #ifndef __TOS__ flipwords( line_buf, 2 ); #endif line_buf += 2; do { line_ptr = line_buf + 6 * pli2vdi( i, idata ); Fread( fh, 6, line_ptr ); #ifndef __TOS__ flipwords( line_ptr, 6 ); #endif switch (ditherflag) { case -3: case -2: get_true( (int *)line_ptr, (long *)endl_buf + vdi2pli( i, idata ) ); break; case -1: get_true( (int *)line_ptr, (int *)endl_buf + vdi2pli( i, idata ) ); break; case 1: endl_buf[vdi2pli( i, idata )] = gray( (int *)line_ptr ); break; case 2: plane_ptr = endl_buf + (vdi2pli( i, idata ) << 2); *plane_ptr++ = (*((int *)line_ptr)++ << 3) / 125; *plane_ptr++ = (*((int *)line_ptr)++ << 3) / 125; *plane_ptr = (*(int *)line_ptr << 3) / 125; } } while (++i <= idata); i = 1; } } Fseek( headlen << 1, fh, 0 ); } else /* IFF */ { i = 2; for (;;) { CHUNK_HEADER ch; if (Fread( fh, 8, &ch ) < 8) { Mfree( buf_ptr ); Mfree( rv ); Fclose( fh ); form_error( ENOENT ); return 0; } #ifndef __TOS__ fliplongs( (int *)&ch.length, 1, 1 ); #endif if (ch.magic == BO_MAGIC) break; if (ch.magic == CM_MAGIC) { *((int *)line_buf)++ = 0; i = 0; do { Fread( fh, 3, f.sbuf ); line_ptr = line_buf + 6 * pli2vdi( i, idata ); *((int *)line_ptr)++ = (int)((f.sbuf[0] * 200L) / 51); *((int *)line_ptr)++ = (int)((f.sbuf[1] * 200L) / 51); *(int *)line_ptr = (int)((f.sbuf[2] * 200L) / 51); line_ptr -= 4; switch (ditherflag) { case -3: case -2: get_true( (int *)line_ptr, (long *)endl_buf + vdi2pli( i, idata ) ); break; case -1: get_true( (int *)line_ptr, (int *)endl_buf + vdi2pli( i, idata ) ); break; case 1: endl_buf[vdi2pli( i, idata )] = gray( (int *)line_ptr ); break; case 2: plane_ptr = endl_buf + (vdi2pli( i, idata ) << 2); *plane_ptr++ = (*((int *)line_ptr)++ << 3) / 125; *plane_ptr++ = (*((int *)line_ptr)++ << 3) / 125; *plane_ptr = (*(int *)line_ptr << 3) / 125; } } while ((ch.length -= 3) > 0 && ++i <= idata); i = 3; } Fseek( (ch.length + 1) & -2, fh, 1 ); } } switch (ditherflag) { case -3: case -2: if ((i & 1) == 0) { get_true( defcols[15], (long *)endl_buf + idata ); while (--idata >= 0) get_true( defcols[idata & 15], (long *)endl_buf + idata ); } else { vs_color( handle, 1, defcols[0] ); v_pmarker( handle, 1, defcols[15] ); } vs_color( handle, 1, defcols[15] ); break; case -1: if ((i & 1) == 0) { get_true( defcols[15], (int *)endl_buf + idata ); while (--idata >= 0) get_true( defcols[idata & 15], (int *)endl_buf + idata ); } else { vs_color( handle, 1, defcols[0] ); v_pmarker( handle, 1, defcols[15] ); } vs_color( handle, 1, defcols[15] ); break; case 1: if (i & 1) break; endl_buf[idata] = 0; while (--idata >= 0) endl_buf[idata] = gray( defcols[idata & 15] ); break; case 2: if (i & 1) break; ((long *)endl_buf)[idata] = 0; while (--idata >= 0) { plane_ptr = endl_buf + (idata << 2); (int *)line_ptr = defcols[idata & 15]; *plane_ptr++ = (*((int *)line_ptr)++ << 3) / 125; *plane_ptr++ = (*((int *)line_ptr)++ << 3) / 125; *plane_ptr = (*(int *)line_ptr << 3) / 125; } } rv->x_flag = i; rv->scale = 0; rv->mfdb.fd_addr = raster_ptr; rv->mfdb.fd_stand = 0; if (ditherflag >= 0) ++rv->mfdb.fd_stand; rv->mfdb.fd_nplanes = s.fd_nplanes; rv->mfdb.fd_wdwidth = s.fd_wdwidth; *(long *)&rv->w = *(long *)&rv->mfdb.fd_w = *(long *)&s.fd_w; rv->bc = rv->w >> 3; rv->lc = rv->h >> 3; rv->xfac = rv->yfac = 8; rv->draw = draw_image; rv->free = free_image; rv->key = key_image; rv->sclick = sclick_image; f.handle = fh; Fbufopen( &f ); memset( raster_ptr, 0, rastsize ); line = 0; for (;;) { vrc = 1; line_buf = buf_ptr; do { line_ptr = line_buf; line_buf += width; do if (headlen) /* IMG */ switch (idata = Fgetc( &f )) { case 0: if ((idata = Fgetc( &f )) != 0) /* pattern run */ { plane_ptr = line_ptr; for (i = special; --i >= 0;) *line_ptr++ = Fgetc( &f ); while (--idata > 0) for (i = special; --i >= 0;) *line_ptr++ = *plane_ptr++; break; } /* vertical replication */ if (Fgetc( &f ) == 0xFF) vrc = Fgetc( &f ); break; case 0x80: idata = Fgetc( &f ); /* bit string */ while (--idata >= 0) *line_ptr++ = Fgetc( &f ); break; default: if (idata < 0) /* unexpected end of file */ { line_ptr = line_buf; break; } i = 0; if ((char)idata < 0) --i; /* solid run */ (char)idata <<= 1; do *line_ptr++ = i; while (idata -= 2); } else if (special == 0) *line_ptr++ = Fgetc( &f ); /* IFF */ else if ((cdata = Fgetc( &f )) >= 0) /* IFF compressed */ { do *line_ptr++ = Fgetc( &f ); while (--cdata >= 0); } else { i = Fgetc( &f ); do *line_ptr++ = i; while (++cdata <= 0); } while (line_ptr < line_buf); } while ((line_buf += width & 1) < endl_buf); vrc += line; do { line_ptr = buf_ptr; i = linelen; switch (ditherflag) { case -3: do { cdata = 0x80; do { int pix = 0; idata = 4; plane_ptr = line_ptr; do { if (*plane_ptr & cdata) pix |= idata; idata <<= 1; } while ((plane_ptr += linelen) < endl_buf); *((long *)raster_ptr)++ = *(long *)(endl_buf + pix); } while ((unsigned char)cdata >>= 1); ++line_ptr; } while (--i); break; case -2: do { cdata = 0x80; do { int pix = 0; idata = 4; plane_ptr = line_ptr; do { if (*plane_ptr & cdata) pix |= idata; idata <<= 1; } while ((plane_ptr += linelen) < endl_buf); plane_ptr = endl_buf + pix; *raster_ptr++ = *plane_ptr++; *raster_ptr++ = *plane_ptr++; *raster_ptr++ = *plane_ptr++; } while ((unsigned char)cdata >>= 1); ++line_ptr; } while (--i); break; case -1: do { cdata = 0x80; do { int pix = 0; idata = 2; plane_ptr = line_ptr; do { if (*plane_ptr & cdata) pix |= idata; idata <<= 1; } while ((plane_ptr += linelen) < endl_buf); *((int *)raster_ptr)++ = *(int *)(endl_buf + pix); } while ((unsigned char)cdata >>= 1); ++line_ptr; } while (--i); break; case 0: idata = 1; do { if (--idata) line_buf += planesize; else { line_buf = raster_ptr; idata = s.fd_nplanes; } do *((int *)line_buf)++ |= *((int *)line_ptr)++; while (i -= 2); line_buf -= i = linelen; } while (line_ptr < endl_buf); if (planes >= s.fd_nplanes) { raster_ptr += linelen; break; } do { int mask; idata = 1; line_ptr = raster_ptr; mask = *((int *)raster_ptr)++; do { line_ptr += planesize; if (idata < planes) mask &= *(int *)line_ptr; else *(int *)line_ptr = mask; } while (++idata < s.fd_nplanes); } while (i -= 2); break; case 1: line_buf = dithermatrix + ((line & 7) << 3); do { cdata = 0x80; do { int pix = 0; idata = 1; plane_ptr = line_ptr; do { if (*plane_ptr & cdata) pix |= idata; idata <<= 1; } while ((plane_ptr += linelen) < endl_buf); if (endl_buf[pix] <= *line_buf++) *raster_ptr |= cdata; } while ((unsigned char)cdata >>= 1); line_buf -= 8; ++raster_ptr; ++line_ptr; } while (--i); break; case 2: line_buf = dithermatrix + ((line & 7) << 3); do { cdata = 0x80; do { int pix = 0; idata = 4; plane_ptr = line_ptr; do { if (*plane_ptr & cdata) pix |= idata; idata <<= 1; } while ((plane_ptr += linelen) < endl_buf); plane_ptr = endl_buf + pix; pix = 0; (char)idata = *line_buf++; if (*plane_ptr++ > (char)idata) pix += 4; /* Rot */ if (*plane_ptr++ > (char)idata) pix += 2; /* Grn */ if (*plane_ptr++ > (char)idata) pix += 1; /* Blau */ plane_ptr = raster_ptr; if ((pix <<= 4) == 0) /* Schwarz */ { idata = s.fd_nplanes; do { *plane_ptr |= cdata; plane_ptr += planesize; } while (--idata); } else if (pix != 0x70) /* nicht Weiss */ { if (((char)pix <<= 1) < 0) *plane_ptr |= cdata; plane_ptr += planesize; if (((char)pix <<= 1) < 0) *plane_ptr |= cdata; plane_ptr += planesize; if (((char)pix <<= 1) < 0) *plane_ptr |= cdata; } } while ((unsigned char)cdata >>= 1); line_buf -= 8; ++raster_ptr; ++line_ptr; } while (--i); } if (++line == height) { Fbufclose( &f ); Mfree( buf_ptr ); return rv; } } while (line < vrc); } } VIEW *load_iff( int fh ) { FORMCHUNK fm; BMHDCHUNK bm; Fread( fh, sizeof(FORMCHUNK), &fm ); if (fm.fm_magic != FM_MAGIC || fm.fm_type != FM_IMAGE) { Fclose( fh ); form_error( ENOENT ); return 0; } for (;;) { if (Fread( fh, 8, &bm ) < 8) { Fclose( fh ); form_error( ENOENT ); return 0; } if (bm.bm_magic == BM_MAGIC) break; #ifndef __TOS__ fliplongs( (int *)&bm.bm_length, 1, 1 ); #endif Fseek( (bm.bm_length + 1) & -2, fh, 1 ); } Fread( fh, 20, &bm.bm_width ); #ifndef __TOS__ flipwords( (char *)&bm.bm_width, 8 ); #endif return load_image( fh, bm.bm_nPlanes, bm.bm_height, bm.bm_width, bm.bm_Compression, 0 ); } VIEW *load_img( int fh ) { IMG_HEADER header; Fread( fh, sizeof(IMG_HEADER), &header ); #ifndef __TOS__ flipwords( (char *)&header, sizeof(IMG_HEADER) ); #endif return load_image( fh, header.planes, header.sl_height, header.sl_width, header.pat_run, header.headlen ); } #pragma warn -sig void out_image( char *name ) { int fh; IMG_HEADER header; header.sl_width = xpixel; header.sl_height = ypixel; if (par.aspect != 1) { if ((fh = Fopen( name, 0 )) < 0) { form_error( -fh - 31 ); return; } Fread( fh, sizeof(IMG_HEADER), &header ); Fclose( fh ); } printbox( name, 0 ); fh = 0; if (par.aspect == 2) { fh = 1; if (*(long *)&par.x_scale) { header.sl_width *= (header.pix_width - 1) / out_width + 1; header.sl_height *= (header.pix_height - 1) / out_height + 1; } else { header.sl_width = ((long)header.sl_width * header.pix_width) / out_width; header.sl_height = ((long)header.sl_height * header.pix_height) / out_height; } } header.pix_width = 0; if (par.h_align) header.pix_width = xpixel - header.sl_width; if (par.h_align == 1) header.pix_width >>= 1; header.pix_height = 0; if (par.v_align) header.pix_height = ypixel - header.sl_height; if (par.v_align == 1) header.pix_height >>= 1; header.sl_width += header.pix_width - 1; header.sl_height += header.pix_height - 1; v_bit_image( ohandle, name, fh, par.x_scale, par.y_scale, par.h_align, par.v_align, &header.pix_width ); v_updwk( ohandle ); v_clrwk( ohandle ); printbox( 0, 0 ); }#include #include #include #include #include #include #include "config.h" /* Resource-Deklarationen */ #pragma warn -rpt #include "config.rsh" /* Modifizierte Quell-Resource vom RCS */ #pragma warn +rpt #include "1stview.h" #include "util.h" #define VIEW int /* Genaue Struktur interessiert hier nicht. */ FROM( sound ) IMPORT VIEW *load_sample( int fh, long len ); FROM( text ) IMPORT VIEW *load_text( int fh, long len ); FROM( text ) IMPORT VIEW *load_dump( int fh, long len ); FROM( text ) IMPORT int (*out_text( void ))( int fh ); FROM( image ) IMPORT VIEW *load_img( int fh ); FROM( image ) IMPORT VIEW *load_iff( int fh ); FROM( image ) IMPORT void out_image( char *name ); FROM( meta ) IMPORT VIEW *load_meta( int fh, long len ); FROM( meta ) IMPORT int (*out_meta( char *name, int fh ))( int fh ); FROM( resource ) IMPORT VIEW *load_resource( int fh, long len ); VIEW *load_file( char *name, long len, int dumpflag ) { int fh; if ((fh = Fopen( name, 0 )) < 0) { form_error( -fh - 31 ); return 0; } if (dumpflag == 0) return load_dump( fh, len ); if ((name = strrchr( name, '.' )) != 0) { name = strupr( name + 1 ); if (strcmp( name, "IMG" ) == 0) return load_img( fh ); if (strcmp( name, "IFF" ) == 0) return load_iff( fh ); if (strcmp( name, "RSC" ) == 0) return load_resource( fh, len ); if (strcmp( name, "GEM" ) == 0) return load_meta( fh, len ); if (strcmp( name, "SAM" ) == 0 || strcmp( name, "SND" ) == 0) return load_sample( fh, len ); } return load_text( fh, len ); } void spool( int ks ) { static int (*out_file)( int fh ), fh = -1, nextflag = 1; static DTA outdta; static char message[] = "[1][1STVIEW-Warnung:|Ausgabe von XXX-Dateien" "|wird noch nicht untersttzt.][ Na sowas ]"; char *p, *q; if ((~ks & 3) == 0) if (form_alert( 2, "[2][1STVIEW:" "|Wollen Sie die Ausgabe" "|wirklich abbrechen und den" "|Spooler-Puffer leeren?][Abbruch|Weiter]" ) == 1) { set_fonts( 0 ); if (fh >= 0) { Fclose( fh ); fh = -1; } nextflag = 1; *spool_buf = 0; return; } if (fh >= 0) { if ((*out_file)( fh )) { Fclose( fh ); fh = -1; if (nextflag) { p = strchr( spool_buf, ' ' ); *p++ = 0; strcpy( spool_buf, p ); } } return; } p = strchr( spool_buf, ' ' ); *p++ = 0; if (nextflag) { int ret; if ((ret = Findfirst( spool_buf, &outdta, 0x27 )) != 0) { form_error( -ret - 31 ); strcpy( spool_buf, p ); return; } } p = memmove( (q = strrchr( spool_buf, PATHSEP ) + 1) + strlen( outdta.d_fname ) + 1, p, strlen( p ) + 1 ); strcpy( q, outdta.d_fname ); nextflag = Findnext( &outdta ); if ((q = strrchr( q, '.' )) != 0) { q = strupr( q + 1 ); if (strcmp( q, "IMG" ) == 0) { out_image( spool_buf ); if (nextflag) strcpy( spool_buf, p ); else p[-1] = ' '; return; } if (strcmp( q, "GEM" ) == 0) { if ((fh = Fopen( spool_buf, 0 )) < 0) { form_error( -fh - 31 ); if (nextflag) strcpy( spool_buf, p ); else p[-1] = ' '; return; } out_file = out_meta( spool_buf, fh ); p[-1] = ' '; return; } if (strcmp( q, "RSC" ) == 0 || strcmp( q, "IFF" ) == 0 || strcmp( q, "SAM" ) == 0 || strcmp( q, "SND" ) == 0) { strncpy( message + 33, q, 3 ); form_alert( 1, message ); if (nextflag) strcpy( spool_buf, p ); else p[-1] = ' '; return; } } if ((fh = Fopen( spool_buf, 0 )) < 0) { form_error( -fh - 31 ); if (nextflag) strcpy( spool_buf, p ); else p[-1] = ' '; return; } out_file = out_text(); p[-1] = ' '; } static void file_parameter( int save ) { int fh; char *p, buf[128]; DTA mydta; static int flag = 0; strcpy( buf, StartPath ); if (flag == 0) { p = strrchr( buf, PATHSEP ) + 1; strcpy( p, "1STVIEW.AC*" ); if (Findfirst( buf, &mydta, 0x27 )) { strcpy( p + 8, "APP" ); if (Findfirst( buf, &mydta, 0x27 )) { strcpy( p + 8, "PRG" ); if (Findfirst( buf, &mydta, 0x27 )) { strcpy( p + 8, "GTP" ); if (Findfirst( buf, &mydta, 0x27 )) { *p = 0; memswap( Path, buf, 128 ); fh = filebox( "1stView: Programm finden" ); memswap( Path, buf, 128 ); if (fh == 0) return; if ((fh = Findfirst( buf, &mydta, 0x27 )) != 0) { form_error( -fh - 31 ); return; } p = strrchr( buf, PATHSEP ) + 1; } } } } strcpy( p, mydta.d_fname ); } flag = 0; if ((fh = Fopen( buf, 2 )) < 0) { form_error( -fh - 31 ); return; } if (Fseek( par.parameter, fh, 0 ) != par.parameter || Fread( fh, 4, &mydta.d_length ) - 4 || mydta.d_length != par.parameter) form_error( ENOENT ); else { ++flag; strcpy( StartPath, buf ); if (form_alert( 1, save ? "[1][|Voreinstellungen" "|sichern?][ OK |Abbruch]" : "[1][|Zuletzt gesicherte" "|Einstellungen laden?][ OK |Abbruch]" ) == 1) { Fseek( par.parameter, fh, 0 ); if (save) Fwrite( fh, sizeof( par ), &par ); else Fread( fh, sizeof( par ), &par ); } } Fclose( fh ); } static void mem_2_string( long value, char *string ) { int count; value >>= 10; string += 11; count = 8; do *--string = '0' + value % 10; while (--count && (value /= 10) != 0); while (--count > 0) *--string = ' '; } static long Mtotal( void ) { long total, size; void *old, *new; total = 0; old = 0; while ((size = Mavail()) >= sizeof(void *)) { total += size; new = Malloc( size ); *(void **)new = old; old = new; } while ((new = old) != 0) { old = *(void **)new; Mfree( new ); } return total; } static void flip_select( int id ) { rs_object[id].ob_state ^= SELECTED; } static int get_select( int id ) { if (rs_object[id].ob_state & SELECTED) return 0; if (rs_object[id + 1].ob_state & SELECTED) return 1; return 2; } void config( int ks ) { OBJECT *box; int i, cent[4], clip[4]; char sname[16]; i = NUM_OBS - 1; if (rs_object->ob_next == 0) { --rs_object->ob_next; fix_tree( rs_object, i ); } do rs_object[i].ob_state &= ~SELECTED; while (--i >= 0); if (((ks & 10) == 10) ^ par.outdef) { rs_object[TOALLPAR].ob_flags = SELECTABLE | EXIT; rs_object[ALLPAR].ob_flags = HIDETREE; rs_object[TOOUTPAR].ob_flags = NONE; rs_object[OUTPAR].ob_flags = NONE; rs_object[EXTSPOOL].ob_flags = NONE; rs_object[NUMBER].ob_flags = EDITABLE; rs_object[RAND].ob_flags = EDITABLE; ks = NUMBER; } else { rs_object[TOALLPAR].ob_flags = NONE; rs_object[ALLPAR].ob_flags = NONE; rs_object[TOOUTPAR].ob_flags = SELECTABLE | EXIT; rs_object[OUTPAR].ob_flags = HIDETREE; rs_object[EXTSPOOL].ob_flags = EDITABLE; rs_object[NUMBER].ob_flags = NONE; rs_object[RAND].ob_flags = NONE; ks = EXTSPOOL; } mem_2_string( Mavail(), rs_object[MEM].ob_spec.free_string ); mem_2_string( Mtotal(), rs_object[TOT].ob_spec.free_string ); rs_object[EXTSPOOL].ob_spec.tedinfo->te_ptext = sname; strcpy( sname, par.extspool ); itoa( par.out_handle, rs_object[NUMBER].ob_spec.tedinfo->te_ptext, 10 ); itoa( par.margin, rs_object[RAND].ob_spec.tedinfo->te_ptext, 10 ); flip_select( OUTWIN + par.outdef ); flip_select( OUTINT + par.spoolflag ); flip_select( FONTDEF + par.textdef ); flip_select( DITHCOL + par.dithcol ); flip_select( JA + par.no_ff ); flip_select( QNORMAL + par.quality ); flip_select( PASSEND + par.meta_scale ); flip_select( PIXEL + par.aspect ); flip_select( XBRUCH + par.x_scale ); flip_select( YBRUCH + par.y_scale ); flip_select( LINKS + par.h_align ); flip_select( OBEN + par.v_align ); wind_get( 0, WF_WORKXYWH, clip, clip + 1, clip + 2, clip + 3 ); form_center( rs_object, cent, cent + 1, cent + 2, cent + 3 ); form_dial( FMD_START, 0, 0, 0, 0, cent[0], cent[1], cent[2], cent[3] ); i = ROOT; for (;;) { box = rs_object; if (ks == NUMBER) /* wegen Let'emFly ! */ memmove( ++box, rs_object, sizeof( rs_object ) - sizeof( OBJECT ) ); objc_draw( box, i, MAX_DEPTH, clip[0], clip[1], clip[2], clip[3] ); i = form_do( box, ks ); if (ks == NUMBER) /* wegen Let'emFly ! */ memmove( rs_object, box, sizeof( rs_object ) - sizeof( OBJECT ) ); flip_select( i ); switch (i) { case TOOUTPAR: i = OUTPAR - ALLPAR + TOALLPAR; case TOALLPAR: i += ALLPAR - TOALLPAR; ks = (EXTSPOOL + NUMBER) - ks; rs_object[TOALLPAR].ob_flags ^= SELECTABLE | EXIT; rs_object[TOOUTPAR].ob_flags ^= SELECTABLE | EXIT; rs_object[ALLPAR].ob_flags ^= HIDETREE; rs_object[OUTPAR].ob_flags ^= HIDETREE; rs_object[EXTSPOOL].ob_flags ^= EDITABLE; rs_object[NUMBER].ob_flags ^= EDITABLE; rs_object[RAND].ob_flags ^= EDITABLE; break; case LOAD: file_parameter( 0 ); form_dial( FMD_FINISH,0,0,0,0,cent[0], cent[1], cent[2], cent[3] ); return; case SAVE: case OK: strcpy( par.extspool, sname ); par.out_handle = atoi(rs_object[NUMBER].ob_spec.tedinfo->te_ptext); par.margin = atoi( rs_object[RAND].ob_spec.tedinfo->te_ptext ); par.outdef = get_select( OUTWIN ); par.spoolflag = get_select( OUTINT ); par.textdef = get_select( FONTDEF ); par.dithcol = get_select( DITHCOL ); par.no_ff = get_select( JA ); par.quality = get_select( QNORMAL ); par.meta_scale = get_select( PASSEND ); par.aspect = get_select( PIXEL ); par.x_scale = get_select( XBRUCH ); par.y_scale = get_select( YBRUCH ); par.h_align = get_select( LINKS ); par.v_align = get_select( OBEN ); if (i == SAVE) file_parameter( 1 ); case ABBRUCH: form_dial( FMD_FINISH,0,0,0,0,cent[0], cent[1], cent[2], cent[3] ); return; } } }#include #include #include #include #include #include #include #include typedef struct view { int handle, page, lbc, /* left-border-count fr Fenster. */ tlc, /* top-line-count fr Fenster. */ bc, /* border-count fr Fenster. */ lc, /* line-count fr Fenster. */ xfac, yfac, /* Scroll- und Rastereinheiten. */ x, y, w, h, /* Arbeitsbereich des Fensters. */ hslide, vslide, /* Puffer fr Sliderpositionen. */ (*key)( struct view *tv, int code, int ks ); void (*draw)( struct view *tv, int *clip ), (*free)( struct view *tv ), (*sclick)( struct view *tv, int mx, int my, int flag ); char path[128]; /* Datei-Pfad (Fenstertitel). */ struct view *next; /* Zeiger auf nchste Fensterstruktur. */ struct view *prev; /* Zeiger auf vorige Fensterstruktur. */ BASPAG *actpd; /* Zeiger auf Prozess-Descriptor. */ long offset, newoff, ow, oh, dw, dh, rw, rh; int ox, oy, vhandle, rcflag; bas0[1], base[3], code[1]; /* Datenbereich. */ } VIEW; #include "1stview.h" #include "util.h" FROM( image ) IMPORT VIEW *load_img( int fh ); #define V_CLRWK 3 #define V_ESC 5 #define V_PLINE 6 #define V_PMARKER 7 #define V_GTEXT 8 #define V_FILLAREA 9 #define V_GDP 11 #define VST_HEIGHT 12 #define VSL_WIDTH 16 #define VSM_HEIGHT 19 #define VST_POINT 107 #define VR_RECFL 114 #define VS_CLIP 129 #define V_ARC 2 #define V_PIESLICE 3 #define V_CIRCLE 4 #define V_ELLIPSE 5 #define V_ELLARC 6 #define V_ELLPIE 7 #define V_JUSTIFIED 10 #define V_BIT_IMAGE 23 #define V_TOPBOT 18501 typedef struct { int id, headlen, version, transform, min_x, min_y, max_x, max_y, pwidth, pheight, ll_x, ll_y, ur_x, ur_y, bit_image; } META_HEADER; static int ox, oy, dx, dy, page, rcflag, rect[4]; static long ow, oh, dw, dh, rh; static char *fname, pagestring[4], wstring[] = " Fenster ^E", ostring[] = " Original ^S"; #pragma warn -rpt static OBJECT popup[] = { 0, 1, 7, G_BOX, NONE, SHADOWED, 0xFF1100L, 0, 0, 19, 4, 2, -1, -1, G_STRING, NONE, DISABLED, "- Mastab / Seite -", 0,0,19,1, 3, -1, -1, G_STRING, NONE, NORMAL, wstring, 0, 1, 19, 1, 4, -1, -1, G_BUTTON, NONE, NORMAL, "1 \001", 0, 2, 4, 1, 5, -1, -1, G_BUTTON, NONE, NORMAL, "^\004 -", 4, 2, 6, 1, 6, -1, -1, G_BUTTON, NONE, DISABLED, pagestring, 10,2, 3, 1, 7, -1, -1, G_BUTTON, NONE, NORMAL, "+ ^\003", 13,2, 6, 1, 0, -1, -1, G_STRING, LASTOB, NORMAL, ostring, 0, 3, 19, 1 }; #pragma warn +rpt static void new_item( VIEW *tv, int new ) { if (new -= 2) { if (tv->dw == tv->rw && tv->dh == tv->rh) return; tv->dw = tv->rw; tv->dh = tv->rh; } else { if (tv->dw == tv->w && tv->dh == tv->h) return; tv->dw = tv->w; tv->dh = tv->h; } tv->bc = ((int)tv->dw + 7) >> 3; tv->lc = ((int)tv->dh + 7) >> 3; if (tv->page) do { int *p = tv->bas0; (char *)p += tv->offset; tv->newoff = tv->offset; ((int *)&tv->offset)[0] = p[0]; p[0] = V_CLRWK; ((int *)&tv->offset)[1] = p[3]; } while (--tv->page); new_redraw(); } #pragma warn -sig static void transform( int n ) { int ix; for (ix = contrl[1] << 1; (ix -= 2) >= 0;) if (ix == n) { if ((ptsin[ix] = (ptsin[ix] * dw) / ow) == 0) ++ptsin[ix]; if ((ptsin[ix+1] = (ptsin[ix+1] * dh) / oh) == 0) ++ptsin[ix+1]; } else { ptsin[ix] -= ox; ptsin[ix] = (ptsin[ix] * dw) / ow; ptsin[ix] += dx; ptsin[ix+1] -= oy; ptsin[ix+1] = (ptsin[ix+1] * dh) / oh; if (rcflag == 0) ptsin[ix+1] = dh - ptsin[ix+1]; ptsin[ix+1] += dy; } } static void make_path( void ) { int i, k; i = contrl[3]; contrl[3] += k = (int)(strrchr( fname, PATHSEP ) - fname + 1); while (--i >= 5) intin[i + k] = intin[i]; while (--k >= 0) intin[k + 5] = fname[k]; } static void do_command( void ) { int n = -2; switch (contrl[0]) { case V_GDP: switch (contrl[5]) { case V_ARC: case V_PIESLICE: n += 2; case V_CIRCLE: n += 2; case V_ELLIPSE: case V_ELLARC: case V_ELLPIE: case V_JUSTIFIED: n += 4; } transform( n ); break; case VST_POINT: if (contrl[6] == ohandle) intin[0] = (intin[0] * dh) / rh; else { CALL_VDI(); contrl[0] = VST_HEIGHT; contrl[1] = 1; contrl[3] = 0; ptsin[0] = 0; if ((ptsin[1] = (ptsout[1] * dh) / rh) == 0) ++ptsin[1]; } break; case VST_HEIGHT: case VSM_HEIGHT: case V_TOPBOT: case VSL_WIDTH: n = 0; case V_ESC: if (contrl[5] == V_BIT_IMAGE) if (intin[6] != ':') make_path(); case V_PLINE: case V_PMARKER: case V_GTEXT: case V_FILLAREA: case VR_RECFL: transform( n ); break; case VS_CLIP: if (intin[0]) { { int t; t = ox; if (t > ptsin[0]) ptsin[0] = t; t += ow - 1; if (t < ptsin[2]) ptsin[2] = t; t = oy; if (t > ptsin[1]) ptsin[1] = t; t += oh - 1; if (t < ptsin[3]) ptsin[3] = t; } transform( n ); if (rect[0] > ptsin[0]) ptsin[0] = rect[0]; if (rect[1] > ptsin[1]) ptsin[1] = rect[1]; if (rect[2] < ptsin[2]) ptsin[2] = rect[2]; if (rect[3] < ptsin[3]) ptsin[3] = rect[3]; } else { ++intin[0]; *(long *)ptsin = *(long *)rect; *(long *)(ptsin + 2) = *(long *)(rect + 2); } } CALL_VDI(); } static void draw_meta( VIEW *tv, int *clip ) { long count; vr_recfl( handle, clip ); vs_clip( tv->vhandle, 1, clip ); dx = tv->x - (tv->lbc << 3); dy = tv->y - (tv->tlc << 3); ox = tv->ox; oy = tv->oy; rcflag = tv->rcflag; ow = tv->ow; oh = tv->oh; dw = tv->dw; dh = tv->dh; rh = tv->rh; *(long *)rect = *(long *)clip; *(long *)(rect + 2) = *(long *)(clip + 2); fname = tv->path; clip = tv->base; (char *)clip += tv->offset; count = 2; count += *clip++ << 2; count += *clip++ << 1; (char *)clip += count; for (;;) { switch (contrl[0] = *clip++) { case -1: clip = tv->base; case V_CLRWK: tv->newoff = (char *)clip - (char *)tv->base; return; } contrl[1] = *clip++; contrl[3] = *clip++; contrl[5] = *clip++; contrl[6] = tv->vhandle; if ((count = contrl[1] << 2) > 0) { memcpy( ptsin, clip, count ); (char *)clip += count; } if ((count = contrl[3] << 1) > 0) { memcpy( intin, clip, count ); (char *)clip += count; } do_command(); } } static void free_meta( VIEW *tv ) { if (vq_gdos()) vst_unload_fonts( tv->vhandle, 0 ); v_clsvwk( tv->vhandle ); } static int key_meta( VIEW *tv, int code, int ks ) { switch (code) { case CNTRL_E: new_item( tv, 2 ); return 0; case CNTRL_S: new_item( tv, 7 ); return 0; case CNTRL_CL: if (tv->offset) { ks &= 3; do { int *p = tv->bas0; (char *)p += tv->offset; tv->newoff = tv->offset; ((int *)&tv->offset)[0] = p[0]; p[0] = V_CLRWK; ((int *)&tv->offset)[1] = p[3]; } while (--tv->page && ks); full_redraw(); } return 0; case CNTRL_CR: if (tv->newoff) { int *p = tv->bas0; (char *)p += tv->newoff; p[0] = ((int *)&tv->offset)[0]; p[3] = ((int *)&tv->offset)[1]; tv->offset = tv->newoff; ++tv->page; full_redraw(); } return 0; } return 1; } static void sclick_meta( VIEW *tv, int mx, int my, int flag ) { if (flag) return; popup[3].ob_state = popup[4].ob_state = tv->offset ? NORMAL : DISABLED; popup[6].ob_state = tv->newoff ? NORMAL : DISABLED; itoa( tv->page + 1, pagestring, 10 ); *wstring = tv->dw == tv->w && tv->dh == tv->h ? 8 : ' '; *ostring = tv->dw == tv->rw && tv->dh == tv->rh ? 8 : ' '; switch (mx = popup_menu( popup, 5, mx, my, objc_draw )) { case 2: case 7: new_item( tv, mx ); break; case 3: case 4: do { int *p = tv->bas0; (char *)p += tv->offset; tv->newoff = tv->offset; ((int *)&tv->offset)[0] = p[0]; p[0] = V_CLRWK; ((int *)&tv->offset)[1] = p[3]; } while (--tv->page && mx != 4); full_redraw(); break; case 6: { int *p = tv->bas0; (char *)p += tv->newoff; p[0] = ((int *)&tv->offset)[0]; p[3] = ((int *)&tv->offset)[1]; tv->offset = tv->newoff; ++tv->page; full_redraw(); } } } static long read_header( int fh ) { META_HEADER header; Fread( fh, sizeof(META_HEADER), &header ); #ifdef __TOS__ flipwords( (char *)&header, sizeof(META_HEADER) ); #endif rcflag = header.ll_y > 0; ox = header.ll_x; oy = rcflag ? header.ur_y : -header.ll_y; ow = labs( (long)header.ur_x - (long)header.ll_x ) + 1; oh = labs( (long)header.ur_y - (long)header.ll_y ) + 1; dw = header.pwidth; dh = header.pheight; return header.headlen << 1; } static void set_dest( int handle, int pix_w, int pix_h ) { int point, pw, ph, val[7]; vst_font( handle, 2 ); point = vst_point ( handle, 99, val, val, val, val); vqt_fontinfo( handle, val, val, val + 2, val, val ); val[3] += val[5] + 1; ph = (point * 25400L) / (72L * val[3]); pw = ((long)ph * pix_w) / pix_h; dw = (dw * 100) / pw; dh = (dh * 100) / ph; vst_font( handle, 1 ); } VIEW *load_meta( int fh, long len ) { VIEW *rv; char *p; long hlen; int *code, i, vhandle, work_in[11], work_out[57]; len -= hlen = read_header( fh ); if ((rv = Malloc( sizeof(VIEW) + len )) == 0) { Fclose( fh ); form_error( EINVMEM ); return 0; } *(long *)rv->base = 0; code = rv->code; Fseek( hlen, fh, 0 ); len = Fread( fh, len, code ); Fclose( fh ); code[len >> 1] = -1; #ifdef __TOS__ flipwords( (char *)code, len ); #endif if (code[0] == V_ESC && code[3] == V_BIT_IMAGE) { p = strrchr( Path, PATHSEP ) + 1; i = code[2] - 5; code += (code[1] << 1) + 9; while (--i >= 0) *p++ = *code++; *p = 0; Mfree( rv ); if ((fh = Fopen( Path, 0 )) < 0) { form_error( -fh - 31 ); return 0; } return load_img( fh ); } if (popup->ob_next == 0) { --popup->ob_next; fix_tree( popup, 7 ); } vhandle = phys_handle; work_in[10] = 2; i = 9; do work_in[i] = 1; while (--i >= 0); v_opnvwk( work_in, &vhandle, work_out ); if (vhandle <= 0) { Mfree( rv ); form_error( EINVMEM ); return 0; } if (vq_gdos()) vst_load_fonts( vhandle, 0 ); set_dest( vhandle, work_out[3], work_out[4] ); rv->page = 0; rv->offset = 0; rv->newoff = 0; rv->ox = ox; rv->oy = oy; rv->rcflag = rcflag; rv->ow = ow; rv->oh = oh; rv->rw = rv->dw = dw; rv->rh = rv->dh = dh; rv->vhandle = vhandle; rv->xfac = rv->yfac = 8; rv->w = (int)rv->dw + 7; rv->h = (int)rv->dh + 7; rv->lc = rv->h >> 3; rv->bc = rv->w >> 3; rv->draw = draw_meta; rv->free = free_meta; rv->key = key_meta; rv->sclick = sclick_meta; return rv; } static int out_page( int fh ) { char *p; long count; *(p = strchr( fname, ' ' )) = 0; printbox( fname, ++page ); while (Fread( fh, 2, contrl ) - 2 == 0 && *contrl != -1) { Fread( fh, 2, contrl + 1 ); Fread( fh, 2, contrl + 3 ); Fread( fh, 2, contrl + 5 ); #ifdef __TOS__ flipwords( (char *)contrl, 12 ); #endif contrl[6] = ohandle; if ((count = contrl[1] << 2) > 0) { Fread( fh, count, ptsin ); #ifdef __TOS__ flipwords( (char *)ptsin, count ); #endif } if ((count = contrl[3] << 1) > 0) { Fread( fh, count, intin ); #ifdef __TOS__ flipwords( (char *)intin, count ); #endif } if (*contrl == V_CLRWK) { do_command(); printbox( 0, 0 ); *p = ' '; return 0; } do_command(); } v_updwk( ohandle ); v_clrwk( ohandle ); vs_clip( ohandle, 0, rect ); set_fonts( 0 ); printbox( 0, 0 ); *p = ' '; return 1; } int (*out_meta( char *name, int fh ))( int fh ) { fname = name; Fseek( read_header( fh ), fh, 0 ); set_fonts( 1 ); set_dest( ohandle, out_width, out_height ); rh = dh; if (par.meta_scale == 0) { dw = xpixel; dh = ypixel; } dx = 0; if (par.h_align) dx = xpixel - dw; if (par.h_align == 1) dx >>= 1; dy = 0; if (par.v_align) dy = ypixel - dh; if (par.v_align == 1) dy >>= 1; page = 0; *(long *)rect = 0; rect[2] = xpixel - 1; rect[3] = ypixel - 1; vs_clip( ohandle, 1, rect ); return out_page; }* Dieses Modul stellt eine universelle interruptgesteuerte * Sample-Play-Routine fr alle STs zur Verfgung: * * Data = play_sam( Startadresse, Endadresse, Hertz, Hold, DMA ); * * Parameterbergabe in Purbo-C-Manier (A0,A1,D0,D1,D2). * Aufruf normal im USER-Mode. * Endadresse mu direkt HINTER die Sampledaten zeigen * (Konvention wie FRAME-Adressen beim STE/TT-DMA-Sound). * Sound abschalten mit Endadresse == Startadresse und Hold == 0. * Dabei mu die angegebene Adresse auch tatschlich mit der * ursprnglich zum Spielen des betreffenden Samples angegebenen * Startadresse bereinstimmen, sonst passiert nichts! * Bevor man das DMA-Flag setzt, sollte man sicherstellen * (Cookie-Abfrage), da DMA-Sound berhaupt mglich ist! * In D0.W wird eine Kennung fr die Frequenzeinstellung * zurckgegeben (kann ignoriert oder dazu benutzt werden, um * nachtrglich die Frequenz whrend des Spielens zu verndern). * * Es mu PCTOSLIB.LIB mit gelinkt werden. import Super, Xbtimer export play_sam text super ; privileg. Befehle erlauben play_sam: movem.l d0-d2/a0-a1,-(a7) ; Register retten clr.l d0 lea volt,a1 ; Adresse der Pegelwerte bclr d0,(a1) ; Flag Tabelle initialisieren beq start ; ok subq.b #1,d0 ; Lnge der Tabelle (-1) = 255 lea tabelle,a0 ; Adresse der Soundbytes clr.b -2(a0) ; conterm not saved loop: move.b #$8,(a0) ; Umwandeln move.b #$9,4(a0) ; der move.b #$A,8(a0) ; Pegelwerte move (a1)+,d1 move d1,d2 and #15,d2 move.b d2,10(a0) ; in auszugebende lsr #4,d1 move d1,d2 and #15,d2 move.b d2,6(a0) ; Lautstrken lsr #4,d1 move.b d1,2(a0) ; fr den Soundchip lea 16(a0),a0 ; immer 16 Bytes dbra d0,loop ; loopen start: sub.l a0,a0 jsr Super move.l d0,a0 lea sam_data,a1 move.l 12(a7),d1 ; Frame Base Address move.l 16(a7),d2 ; Frame End Address tst 10(a7) ; DMA-Sound ? bne dma ; aber ja doch! cmp.l d2,d1 bne doit cmp.l 8(a1),d1 bne done doit: clr.b $FFFFFA19.w ; Timer A Stop move.l d1,(a1)+ ; Frame Address Counter move.l d2,(a1)+ ; Frame End Address move.l d1,(a1)+ ; Frame Base Address move.w 6(a7),(a1)+ ; Frame Hold tas (a1)+ ; conterm saved bne go_on move.b $484.w,(a1) ; save conterm and.b #%11111010,$484.w ; Klick/Bell aus ! go_on: move.b #64,$FFFFFA17.w ; AEOI move.l #$07007F00,$FFFF8800.w ; Soundchip-Init jsr Super lea play_s(pc),a0 ; Interrupt Player move.l #1228800,d2 ; Frequenz divu.w 2(a7),d2 ; in addq.w #1,d2 ; Teiler lsr.w #1,d2 ; umrechnen (runden) move.l d2,(a7) ; Data und merken moveq.l #1,d1 ; Control clr d0 ; Timer A jsr Xbtimer ; starten bitte... bra raus dma: cmp.l d2,d1 bne dostop cmp.l -4(a1),d1 bne done dostop: clr $FFFF8900.w ; DMA-Sound Stop cmp.l d2,d1 beq done move.l d1,-(a1) move.b d1,$FFFF8907.w lsr.l #8,d1 move.b d1,$FFFF8905.w lsr.l #8,d1 move.b d1,$FFFF8903.w bclr #0,d2 ; force even address! move.b d2,$FFFF8913.w lsr.l #8,d2 move.b d2,$FFFF8911.w lsr.l #8,d2 move.b d2,$FFFF890F.w move.l #10000,a1 move #$80,d0 ; Mono, 6258 Hz cmp.l (a7),a1 bgt setmod add.l a1,a1 addq #1,d0 ; 12517 Hz cmp.l (a7),a1 bgt setmod add.l a1,a1 addq #1,d0 ; 25033 Hz cmp.l (a7),a1 bgt setmod addq #1,d0 ; 50066 Hz setmod: move.w d0,$FFFF8920.w ; Sound Mode Control move.l d0,(a7) ; und merken move.l 4(a7),d0 ; Frame Hold add d0,d0 addq #1,d0 move.w d0,$FFFF8900.w ; Sound DMA Control done: jsr Super raus: movem.l (a7)+,d0-d2/a0-a1 ; Register holen rts ; und zurck * Interrupt Player dc.l 'XBRA', 'SMPL', imret play_s: movem.l d0/a0-a1,-(a7) ; Register retten lea sam_data,a0 ; Adresse der Sampledaten move.l (a0)+,a1 ; Aktuelle Sampleadresse cmp.l (a0),a1 ; Endadresse erreicht ? bcc test ; ja --> Hold-Test move.w #128,d0 ; offset add.b (a1)+,d0 ; Datenbyte plus offset move.l a1,-(a0) ; Nchste Sampleadresse lsl.w #4,d0 lea 16(a0,d0.w),a0 move.l (a0)+,$FFFF8800.w ; beep Kanal 1 move.l (a0)+,$FFFF8800.w ; beep Kanal 2 move.l (a0)+,$FFFF8800.w ; beep Kanal 3 ende: movem.l (a7)+,d0/a0-a1 ; Register holen imret: rte ; und zurck test: move.w 8(a0),d0 beq stop ; kein Hold --> AUS move.l 4(a0),-4(a0) ; Play it again, Sam... bra ende stop: clr.b $FFFFFA19.w ; Timer A Stop and.b #%11111010,$484.w ; Klick/Bell ausblenden move.b 11(a0),d0 ; saved conterm and.b #%00000101,d0 ; nur Klick/Bell or.b d0,$484.w ; einblenden clr.b 10(a0) ; conterm not saved bra ende data volt: dc.w $0100, $0200, $0210, $0310, $0410, $0510, $0600, $0610 dc.w $0630, $0710, $0720, $0731, $0741, $0810, $0820, $0831 dc.w $0841, $0900, $0910, $0930, $0940, $0950, $0951, $0953 dc.w $0962, $0963, $0A10, $0A30, $0A31, $0A50, $0A52, $0A53 dc.w $0A62, $0A70, $0A72, $0B10, $0B30, $0B31, $0B41, $0B51 dc.w $0B53, $0B62, $0B63, $0B72, $0B74, $0B80, $0B81, $0B83 dc.w $0B84, $0B85, $0B91, $0B93, $0B94, $0C20, $0C21, $0C41 dc.w $0C51, $0C53, $0C62, $0C70, $0C72, $0C74, $0C75, $0C82 dc.w $0C84, $0C85, $0C90, $0C92, $0C94, $0C95, $0C96, $0C97 dc.w $0C97, $0CA0, $0CA3, $0D20, $0D31, $0D50, $0D52, $0D61 dc.w $0D70, $0D72, $0D74, $0D75, $0D82, $0D84, $0D90, $0D91 dc.w $0D94, $0D95, $0D96, $0D97, $0DA0, $0DA0, $0DA3, $0DA5 dc.w $0DA6, $0DA7, $0DA8, $0DA8, $0DA8, $0DB1, $0DB4, $0DB6 dc.w $0DB7, $0DB7, $0DB8, $0DB8, $0DB9, $0DB9, $0DB9, $0DBA dc.w $0DBA, $0DBA, $0DBA, $0DBA, $0DC2, $0DC5, $0DC6, $0E00 dc.w $0E31, $0E52, $0E62, $0E72, $0E75, $0E81, $0E85, $0E90 dc.w $0E93, $0E96, $0E97, $0E98, $0E98, $0EA2, $0EA6, $0EA7 dc.w $0EA8, $0EA9, $0EA9, $0EA9, $0EB3, $0EB7, $0EB8, $0EB9 dc.w $0EB9, $0EBA, $0EBA, $0EBA, $0EBA, $0EC0, $0EC0, $0EC0 dc.w $0EC7, $0EC7, $0EC8, $0EC8, $0EC9, $0ECA, $0ECA, $0ECA dc.w $0ECA, $0ECB, $0ECB, $0ECB, $0ED0, $0ED0, $0ED0, $0ED7 dc.w $0ED7, $0ED7, $0ED9, $0ED9, $0ED9, $0EDA, $0EDA, $0EDA dc.w $0EDB, $0EDB, $0EDB, $0F00, $0F00, $0F00, $0F70, $0F70 dc.w $0F90, $0F90, $0F90, $0FA0, $0FA0, $0FA9, $0FB0, $0FB0 dc.w $0FB0, $0FBA, $0FBA, $0FC0, $0FC0, $0FC9, $0FC9, $0FCA dc.w $0FCA, $0FCA, $0FCB, $0FCB, $0FCB, $0FCC, $0FCC, $0FCC dc.w $0FD0, $0FD0, $0FD0, $0FD0, $0FD0, $0FD0, $0FD0, $0FDB dc.w $0FDB, $0FDB, $0FDB, $0FDB, $0FDB, $0FDB, $0FDC, $0FDC dc.w $0FDC, $0FDC, $0FDC, $0FDC, $0FDD, $0FDD, $0FDD, $0FDD dc.w $0FDD, $0FDD, $0FE0, $0FE0, $0FE0, $0FE0, $0FE0, $0FE0 dc.w $0FE0, $0FE0, $0FE0, $0FEC, $0FEC, $0FEC, $0FEC, $0FEC dc.w $0FEC, $0FED, $0FED, $0FED, $0FED, $0FED, $0FED, $0FED bss ds.l 1 ; DMA Base Address sam_data: ds.l 1 ; Frame Address Counter ds.l 1 ; Frame End Address ds.l 1 ; Frame Base Address ds.w 1 ; Frame Hold ds.b 1 ; conterm saved ds.b 1 ; saved conterm tabelle: ds.l 1024 #include #include #include #include #include #include typedef struct rsxhdr { int rsh_vrsn, rsh_extvrsn; long rsh_object, rsh_tedinfo, rsh_iconblk, rsh_bitblk, rsh_frstr, rsh_string, rsh_imdata, rsh_frimg, rsh_trindex, rsh_nobs, rsh_ntree, rsh_nted, rsh_nib, rsh_nbb, rsh_nstring, rsh_nimages, rsh_rssize; } RSXHDR; typedef struct view { int handle, flip, lbc, /* left-border-count fr Fenster. */ tlc, /* top-line-count fr Fenster. */ bc, /* border-count fr Fenster. */ lc, /* line-count fr Fenster. */ xfac, yfac, /* Scroll- und Rastereinheiten. */ x, y, w, h, /* Arbeitsbereich des Fensters. */ hslide, vslide, /* Puffer fr Sliderpositionen. */ (*key)( struct view *tv, int code, int ks ); void (*draw)( struct view *tv, int *clip ), (*free)( struct view *tv ), (*sclick)( struct view *tv, int mx, int my, int flag ); char path[128]; /* Datei-Pfad (Fenstertitel). */ struct view *next; /* Zeiger auf nchste Fensterstruktur. */ struct view *prev; /* Zeiger auf vorige Fensterstruktur. */ BASPAG *actpd; /* Zeiger auf Prozess-Descriptor. */ long tree; char *addr; RSXHDR header; char buf[]; /* Resourcepuffer. */ } VIEW; #include "1stview.h" #include "util.h" static char string2[4], string0[] = "---- XX Bume ----", string_i_to_m[] = " Ix86 -> M68k ^K", string_m_to_i[] = " M68k -> Ix86 ^K"; #pragma warn -rpt static OBJECT popup[] = { 0, 1, 6, G_BOX, NONE, SHADOWED, 0xFF1100L, 0, 0,18, 4, 5, -1, -1, G_STRING, NONE, DISABLED, string0, 0, 0,18, 1, 3, -1, -1, G_BUTTON, NONE, NORMAL, "<< ^\004", 0, 1, 7, 1, 4, -1, -1, G_BUTTON, NONE, DISABLED, string2, 7, 1, 4, 1, 6, -1, -1, G_BUTTON, NONE, NORMAL, ">> ^\003", 11,1, 7, 1, 2, -1, -1, G_STRING, NONE, DISABLED, "-- Konvertieren --", 0, 2,18, 1, 0, -1, -1, G_STRING, LASTOB, NORMAL, string_m_to_i, 0, 3,18, 1 }; #pragma warn +rpt static void vdi_trans( int *addr, int w, int h ) { MFDB s, d; s.fd_addr = addr; s.fd_w = w; s.fd_h = h; s.fd_wdwidth = (w + 15) >> 4; s.fd_stand = 1; s.fd_nplanes = 1; s.fd_r1 = 0; *(long *)&s.fd_r2 = 0; d = s; vr_trnfm( handle, &s, &d ); } static void flip_header( RSXHDR *header, char *addr ) { flipwords( (char *)header + 4, sizeof(RSXHDR) - 4 ); if ((char *)header == addr) fliplongs( (int *)header + 2, 17, 0 ); } static void flip_resource( RSXHDR *header, char *addr, int flag ) { OBJECT *op; TEDINFO *tp; ICONBLK *ip; BITBLK *bp; long i, s; op = (OBJECT *)(addr + header->rsh_object); for (i = header->rsh_nobs; --i >= 0; ++op) { flipwords( (char *)op, sizeof( OBJECT ) ); fliplongs( (int *)&op->ob_spec, 1, 0 ); } tp = (TEDINFO *)(addr + header->rsh_tedinfo); for (i = header->rsh_nted; --i >= 0; ++tp) { flipwords( (char *)tp, sizeof( TEDINFO ) ); fliplongs( (int *)tp, 3, 0 ); } ip = (ICONBLK *)(addr + header->rsh_iconblk); for (i = header->rsh_nib; --i >= 0; ++ip) { if (flag == 0) { s = (long)ip->ib_wicon * ip->ib_hicon >> 3; flipwords( addr + (long)ip->ib_pmask, s ); flipwords( addr + (long)ip->ib_pdata, s ); } flipwords( (char *)ip, sizeof( ICONBLK ) ); fliplongs( (int *)ip, 3, 0 ); if (flag) { s = (long)ip->ib_wicon * ip->ib_hicon >> 3; flipwords( addr + (long)ip->ib_pmask, s ); flipwords( addr + (long)ip->ib_pdata, s ); } } bp = (BITBLK *)(addr + header->rsh_bitblk); for (i = header->rsh_nbb; --i >= 0; ++bp) { if (flag == 0) flipwords( addr + (long)bp->bi_pdata, (long)bp->bi_wb * bp->bi_hl ); flipwords( (char *)bp, sizeof( BITBLK ) ); fliplongs( (int *)bp, 1, 0 ); if (flag) flipwords( addr + (long)bp->bi_pdata, (long)bp->bi_wb * bp->bi_hl ); } fliplongs( (int *)(addr + header->rsh_frstr), header->rsh_nstring, 1 ); fliplongs( (int *)(addr + header->rsh_frimg), header->rsh_nimages, 1 ); fliplongs( (int *)(addr + header->rsh_trindex), header->rsh_ntree, 1 ); } static void fix_objects( RSXHDR *header, char *addr, int flag ) { OBJECT *tree, *op; TEDINFO *tp; ICONBLK *ip; BITBLK *bp; long k, offset; if (flag) { flip_header( header, addr ); flip_resource( header, addr, 1 ); } op = tree = (OBJECT *)(addr + header->rsh_object); for (k = 0; k < header->rsh_nobs; ++k) { offset = op->ob_spec.index; switch (op->ob_type & 0xFF) { case G_BUTTON: case G_STRING: case G_TITLE: op->ob_spec.free_string = addr + offset; break; case G_TEXT: case G_BOXTEXT: case G_FTEXT: case G_FBOXTEXT: op->ob_spec.tedinfo = tp = (TEDINFO *)(addr + offset); tp->te_ptext = addr + (long)tp->te_ptext; tp->te_ptmplt = addr + (long)tp->te_ptmplt; tp->te_pvalid = addr + (long)tp->te_pvalid; break; case G_IMAGE: op->ob_spec.bitblk = bp = (BITBLK *)(addr + offset); bp->bi_pdata = (int *)(addr + (long)bp->bi_pdata); vdi_trans( bp->bi_pdata, bp->bi_wb << 3, bp->bi_hl ); break; case G_ICON: op->ob_spec.iconblk = ip = (ICONBLK *)(addr + offset); ip->ib_pmask = (int *)(addr + (long)ip->ib_pmask); ip->ib_pdata = (int *)(addr + (long)ip->ib_pdata); ip->ib_ptext = addr + (long)ip->ib_ptext; vdi_trans( ip->ib_pmask, ip->ib_wicon, ip->ib_hicon ); vdi_trans( ip->ib_pdata, ip->ib_wicon, ip->ib_hicon ); break; case G_USERDEF: case G_CICON: op->ob_flags = HIDETREE; } rsrc_obfix( tree, (int)k ); ++op; } } static void convert_resource( VIEW *tv ) { RSXHDR *header; char *addr; long len; int fh; graf_mouse( BUSYBEE, 0 ); if ((fh = Fopen( tv->path, 2 )) < 0) { graf_mouse( ARROW, 0 ); form_error( -fh - 31 ); return; } header = &tv->header; addr = tv->addr; len = Fseek( 0, fh, 2 ); len -= Fseek( tv->buf - addr, fh, 0 ); Fread( fh, len, tv->buf ); Fseek( 0, fh, 0 ); flip_resource( header, addr, tv->flip ); if (tv->flip == 0) flip_header( header, addr ); if ((char *)header == addr) Fwrite( fh, sizeof(RSXHDR), header ); else { { int *p = (int *)header; int count = 18; do *p++ = (int)*((long *)header)++; while (--count); } Fwrite( fh, sizeof(RSHDR), &tv->header ); { unsigned *p = (unsigned *)addr; int count = 18; do *--(long *)header = *--p; while (--count); } } Fwrite( fh, len, tv->buf ); Fclose( fh ); fix_objects( header, addr, tv->flip ^= 1 ); graf_mouse( ARROW, 0 ); } static OBJECT *set_tree( VIEW *tv, int flag ) { OBJECT *tree; long *poffset; poffset = (long *)(tv->addr + tv->header.rsh_trindex); tree = (OBJECT *)(tv->addr + poffset[tv->tree]); if (flag) { tree->ob_x = tv->x - (tv->lbc << 3); tree->ob_y = tv->y - (tv->tlc << 3); } else { tv->bc = (tree->ob_width + 7) >> 3; tv->lc = (tree->ob_height + 7) >> 3; } return tree; } static void new_tree( VIEW *tv, int flag ) { if (flag) { if (++tv->tree >= tv->header.rsh_ntree) tv->tree = 0; } else if (--tv->tree < 0) tv->tree += tv->header.rsh_ntree; set_tree( tv, 0 ); new_redraw(); } static void draw_resource( VIEW *tv, int *clip ) { OBJECT *tree; int xe, ye; tree = set_tree( tv, 1 ); xe = tree->ob_x + tree->ob_width; ye = tree->ob_y + tree->ob_height; if (xe <= clip[2] || ye <= clip[3] || tree->ob_type == G_IBOX) { vr_recfl( handle, clip ); if (xe <= clip[0] || ye <= clip[1]) return; } objc_draw( tree, ROOT, MAX_DEPTH, clip[0], clip[1], clip[2] - clip[0] + 1, clip[3] - clip[1] + 1 ); } static void free_resource() { } #pragma warn -par static int key_resource( VIEW *tv, int code, int ks ) { switch (code) { case CNTRL_CL: new_tree( tv, 0 ); return 0; case CNTRL_CR: new_tree( tv, 1 ); return 0; case CNTRL_K: convert_resource( tv ); return 0; } return 1; } #pragma warn +par static void sclick_resource( VIEW *tv, int mx, int my, int flag ) { if (flag) return; popup[2].ob_state = popup[4].ob_state = tv->header.rsh_ntree == 1 ? DISABLED : NORMAL; itostring( (int)tv->header.rsh_ntree, string0 + 7, 3 ); itoa( (int)tv->tree + 1, string2, 10 ); #ifdef __TOS__ popup[6].ob_spec.free_string = tv->flip ? string_i_to_m : string_m_to_i; #else popup[6].ob_spec.free_string = tv->flip ? string_m_to_i : string_i_to_m; #endif switch (popup_menu( popup, 3, mx, my, objc_draw )) { case 2: new_tree( tv, 0 ); break; case 4: new_tree( tv, 1 ); break; case 6: convert_resource( tv ); } } VIEW *load_resource( int fh, long len ) { VIEW *rv; char *buf; if ((rv = Malloc( sizeof(VIEW) + len )) == 0) { Fclose( fh ); form_error( EINVMEM ); return 0; } buf = (char *)&rv->header; len -= Fread( fh, sizeof(RSHDR), buf ); #ifdef __TOS__ if (rv->header.rsh_vrsn != 0x0003) #else if (rv->header.rsh_vrsn != 0x0300) #endif { unsigned *src = (unsigned *)(buf += sizeof(RSHDR)); long *des = (long *)(buf + sizeof(RSHDR)); int count = 18; do *--des = *--src; while (--count); } rv->addr = buf; Fread( fh, len, buf + sizeof(RSHDR) ); Fclose( fh ); if (rv->header.rsh_ntree == 0) { Mfree( rv ); form_error( ENOENT ); return 0; } fix_objects( &rv->header, buf, rv->flip = rv->header.rsh_ntree & 0xFF00FF00L ? 1 : 0 ); if (popup->ob_next == 0) { --popup->ob_next; fix_tree( popup, 6 ); } rv->xfac = rv->yfac = 8; rv->tree = 0; set_tree( rv, 0 ); rv->w = rv->bc << 3; rv->h = rv->lc << 3; rv->draw = draw_resource; rv->free = free_resource; rv->key = key_resource; rv->sclick = sclick_resource; return rv; }#include #include #include #include #include #include #include int play_sam( void *adr, void *end, long hertz, long hold, int dma ); typedef struct view { int handle, s1; int lbc, /* left-border-count fr Fenster. */ tlc, /* top-line-count fr Fenster. */ bc, /* border-count fr Fenster. */ lc, /* line-count fr Fenster. */ xfac, yfac, /* Scroll- und Rastereinheiten. */ x, y, w, h, /* Arbeitsbereich des Fensters. */ hslide, vslide, /* Puffer fr Sliderpositionen. */ (*key)( struct view *tv, int code, int ks ); void (*draw)( struct view *tv, int *clip ), (*free)( struct view *tv ), (*sclick)( struct view *tv, int mx, int my, int flag ); char path[128]; /* Datei-Pfad (Fenstertitel). */ struct view *next; /* Zeiger auf nchste Fensterstruktur. */ struct view *prev; /* Zeiger auf vorige Fensterstruktur. */ BASPAG *actpd; /* Zeiger auf Prozess-Descriptor. */ int dma, data; long dw, dh, hertz; char *start, *end, buf[]; /* Sample-Buffer. */ } VIEW; #include "1stview.h" #include "util.h" static int dmaflag = 0; static char samstring[] = "--- Hertz ---", hertzstring[] = " ", wstring[] = " Fenster ^E", ostring[] = " Original ^S", normstring[] = " Norm ^N ", dmastring[] = " DMA ^M "; #pragma warn -rpt static OBJECT popup[] = { 0, 1, 10, G_BOX, NONE, SHADOWED, 0xFF1100L, 0, 0, 19,7, 2, -1, -1, G_STRING, NONE, DISABLED, samstring, 0, 0, 19,1, 3, -1, -1, G_STRING, NONE, NORMAL, wstring, 0, 1, 19,1, 4, -1, -1, G_BUTTON, NONE, NORMAL, "- ^\004", 0, 2, 6, 1, 5, -1, -1, G_BUTTON, NONE, DISABLED, hertzstring, 6, 2, 7, 1, 6, -1, -1, G_BUTTON, NONE, NORMAL, "+ ^\003", 13,2, 6, 1, 7, -1, -1, G_STRING, NONE, NORMAL, ostring, 0, 3, 19,1, 8, -1, -1, G_STRING, NONE, DISABLED, "----- P L A Y -----", 0, 4, 19,1, 9, -1, -1, G_BUTTON, NONE, NORMAL, normstring, 0, 5, 10,1, 10, -1, -1, G_BUTTON, NONE, DISABLED, dmastring, 10,5, 9, 1, 0, -1, -1, G_STRING, LASTOB, NORMAL, " STOP ^T ", 0, 6, 19,1 }; #pragma warn +rpt static void check_dma( void ) { #ifdef __TOS__ void *oldstack; long *cookiejar; oldstack = (void *)Super( 0 ); cookiejar = *(long **)0x5A0; if (cookiejar) { while (*cookiejar) { if (*cookiejar == '_SND') { if (cookiejar[1] & 2L) popup[9].ob_state = NORMAL; break; } cookiejar += 2; } } Super( oldstack ); #endif } static void change_hz( VIEW *tv, int flag ) { #ifdef __TOS__ void *oldstack; oldstack = (void *)Super( 0 ); if (tv->dma) { flag += tv->data; if (flag < 0x80) flag = 0x80; if (flag > 0x83) flag = 0x83; *(int *)0xFFFF8920L = flag; } else { if ((flag = tv->data - flag) <= 0) flag = 1; if (flag > 255) flag = 255; *(char *)0xFFFFFA1FL = flag; } Super( oldstack ); tv->data = flag; #endif } static void new_item( VIEW *tv, int new ) { if (new == 2) { if (tv->dw == tv->w && tv->dh == tv->h) return; tv->dw = tv->w; tv->dh = tv->h; } else { if (tv->dw == tv->end - tv->start && tv->dh == 256) return; tv->dw = tv->end - tv->start; tv->dh = 256; } tv->bc = (int)((tv->dw + 31) >> 5); tv->lc = (int)((tv->dh + 7) >> 3); new_redraw(); } static int *pline( int *pxy ) { VDI( 6, (int)(pxy - ptsin) >> 1, 0, handle ); return ptsin; } static void draw_sample( VIEW *tv, int *clip ) { int *pxy; char *p, *q; long len; int dx, dy; vr_recfl( handle, clip ); vs_clip( handle, 1, clip ); pxy = ptsin; q = p = tv->start; len = tv->end - p; dy = tv->y - (tv->tlc << 3); if (tv->dw == len) { p += ((long)tv->lbc << 5) + clip[0] - tv->x; q = p; q += clip[2] - clip[0]; if (++q > tv->end) q = tv->end; dx = clip[0] - 1; if (--p < tv->start) { ++p; ++dx; } while (p < q) { *pxy++ = dx++; *pxy++ = dy + (int)(((127 - *p++) * tv->dh) >> 8); if (pxy == ptsin + 128) { pxy = pline( pxy ); *(long *)pxy = *(long *)(pxy + 126); pxy += 2; } } } else { dx = tv->x - (tv->lbc << 5); p += ((clip[0] - 1 - dx) * len) / tv->dw; q += ((clip[2] + 1 - dx) * len) / tv->dw; if (p < tv->start) p = tv->start; if (q > tv->end) q = tv->end; while (p < q) { *pxy++ = dx + (int)(((p - tv->start) * tv->dw) / len); *pxy++ = dy + (int)(((127 - *p++) * tv->dh) >> 8); if (pxy == ptsin + 128) { pxy = pline( pxy ); *(long *)pxy = *(long *)(pxy + 126); pxy += 2; } } } pline( pxy ); vs_clip( handle, 0, clip ); } static void free_sample( VIEW *tv ) { #ifdef __TOS__ play_sam( tv->start, tv->start, tv->hertz, 0, tv->dma ); #endif } static void do_play( VIEW *tv ) { tv->dma = dmaflag; #ifdef __TOS__ tv->data = play_sam( tv->start, tv->end, tv->hertz, 1, tv->dma ); #else tv->data = (int)(614400L / tv->hertz); #endif } #pragma warn -par static int key_sample( VIEW *tv, int code, int ks ) { switch (code) { case CNTRL_E: new_item( tv, 2 ); return 0; case CNTRL_S: new_item( tv, 6 ); return 0; case CNTRL_M: if (popup[9].ob_state == NORMAL) { free_sample( tv ); dmaflag = 1; do_play( tv ); } return 0; case CNTRL_N: free_sample( tv ); dmaflag = 0; do_play( tv ); return 0; case CNTRL_T: free_sample( tv ); return 0; case CNTRL_CL: change_hz( tv, -1 ); return 0; case CNTRL_CR: change_hz( tv, 1 ); return 0; } return 1; } #pragma warn +par static void sclick_sample( VIEW *tv, int mx, int my, int flag ) { long value, count; char *string; if (flag) return; value = tv->hertz; count = 6; string = samstring + 9; do *--string = '0' + value % 10; while (--count && (value /= 10) != 0); while (--count > 0) *--string = ' '; if (tv->dma == 0) value = 614400L / tv->data; else switch (tv->data) { case 0x80: value = 6258L; break; case 0x81: value = 12517L; break; case 0x82: value = 25033L; break; default: value = 50066L; } ltoa( value, hertzstring, 10 ); *wstring = tv->dw == tv->w && tv->dh == tv->h ? 8 : ' '; *ostring = tv->dw == tv->end - tv->start && tv->dh == 256 ? 8 : ' '; *normstring = tv->dma ? ' ' : 8; *dmastring = tv->dma ? 8 : ' '; switch (popup_menu( popup, 4, mx, my, objc_draw )) { case 2: new_item( tv, 2 ); break; case 3: change_hz( tv, -1 ); break; case 5: change_hz( tv, 1 ); break; case 6: new_item( tv, 6 ); break; case 8: free_sample( tv ); dmaflag = 0; do_play( tv ); break; case 9: free_sample( tv ); dmaflag = 1; do_play( tv ); break; case 10: free_sample( tv ); } } VIEW *load_sample( int fh, long len ) { VIEW *rv; char *stop, *start; if ((rv = Malloc( sizeof(VIEW) + len )) == 0) { Fclose( fh ); form_error( EINVMEM ); return 0; } rv->hertz = par.hertz; start = rv->buf; rv->end = stop = start + len; Fread( fh, len, start ); Fclose( fh ); if (popup->ob_next == 0) { --popup->ob_next; fix_tree( popup, 10 ); check_dma(); } #ifdef __TOS__ if (*(long *)start == 0xAABBCCDDL) /* SoundMerlin Format */ #else if (*(long *)start == 0xDDCCBBAAL) #endif { rv->hertz = 10U * ((unsigned *)start)[10]; stop = start += 50; } #ifdef __TOS__ else if (*(long *)start == 0x0000AB12L) /* SoundMachine Format */ #else else if (*(long *)start == 0x12AB0000L) #endif { rv->hertz = 13000; stop = start += 34; } #ifdef __TOS__ else if ((*(long *)start & 0xFFFFFF00L) == 'JON\0') /* ??? */ #else else if ((*(long *)start & 0x00FFFFFFL) == ((long)'N' << 16) + ((long)'O' << 8) + 'J') #endif { rv->hertz = 1000U * ((unsigned char *)start)[3]; start += 4; } while (stop > start) *--stop -= 128; rv->start = start; rv->xfac = 32; rv->yfac = 8; rv->w = 512; rv->h = 256; rv->dh = 256; rv->lc = 32; rv->dw = rv->end - start; rv->bc = (int)((rv->dw + 31) >> 5); rv->draw = draw_sample; rv->free = free_sample; rv->key = key_sample; rv->sclick = sclick_sample; do_play( rv ); return rv; }#include #include #include #include #include #include #include #include #include typedef struct view { int handle, flag, lbc, /* left-border-count fr Fenster. */ tlc, /* top-line-count fr Fenster. */ bc, /* border-count fr Fenster. */ lc, /* line-count fr Fenster. */ xfac, yfac, /* Scroll- und Rastereinheiten. */ x, y, w, h, /* Arbeitsbereich des Fensters. */ hslide, vslide, /* Puffer fr Sliderpositionen. */ (*key)( struct view *tv, int code, int ks ); void (*draw)( struct view *tv, int *clip ), (*free)( struct view *tv ), (*sclick)( struct view *tv, int mx, int my, int flag ); char path[128]; /* Datei-Pfad (Fenstertitel). */ struct view *next; /* Zeiger auf nchste Fensterstruktur. */ struct view *prev; /* Zeiger auf vorige Fensterstruktur. */ BASPAG *actpd; /* Zeiger auf Prozess-Descriptor. */ char *text; int font, point, line, effect, dist; char dummy, null; char buf[]; /* Textpuffer. */ } VIEW; #include "1stview.h" #include "util.h" #define TABU 9 #define Esc 27 #define TXT_THICKENED 1 #define TXT_LIGHT 2 #define TXT_SKEWED 4 #define TXT_UNDERLINED 8 #define TXT_SUPERSCRIPT 0x10 #define TXT_SUBSCRIPT 0x20 static int wchar, hchar, dist, oeffect = 0, effects = 0; static struct { char space[104], text[408], end[]; } read_buf; static char fontstring[] = " XXXXXXXX-Font ^E", zeilstring[] = "---XXXXX Zeilen ---", savestring[] = " >> OUT-Datei ^X"; #pragma warn -rpt static OBJECT popup[] = { 0, 1, 8, G_BOX, NONE, SHADOWED, 0xFF1100L, 0, 0, 19,0, 2, -1, -1, G_STRING, NONE, DISABLED, "--- System-Font ---",0, 0, 19,1, 3, -1, -1, G_STRING, NONE, NORMAL, " Norm (10 Pt) ^N", 0, 0, 19,0, 4, -1, -1, G_STRING, NONE, NORMAL, " Mittel (9 Pt) ^M", 0, 0, 19,0, 5, -1, -1, G_STRING, NONE, NORMAL, " Klein (8 Pt) ^K", 0, 0, 19,0, 6, -1, -1, G_STRING, NONE, DISABLED, "-------------------",0, 0, 19,1, 7, -1, -1, G_STRING, NONE, NORMAL, fontstring, 0, 0, 19,1, 8, -1, -1, G_STRING, NONE, DISABLED, zeilstring, 0, 0, 19,1, 0, -1, -1, G_STRING, LASTOB, NORMAL, savestring, 0, 0, 19,1 }; #pragma warn +rpt #if defined(__TOS__) && defined(__TURBOC__) typedef void (*DIV_FUNC)( int numer, int denom, div_t *qr ); #define mydiv(a,b,c) (*(DIV_FUNC)((char *)div + 4))(a,b,c) #else #define mydiv(a,b,c) *c = div(a,b) #endif static int text_just( int x, int y, char *string ) { int ret, extent[8]; char *p; vqt_extent( handle, ++string, extent ); p = string; ret = 0; while (*p++) ret += wchar; dist += ret; if (extent[2] <= ret) { v_gtext( handle, x, y, string ); return extent[2]; } if ((effects & TXT_SKEWED) == 0) { v_justified( handle, x, y, string, ret, 1, 1 ); return ret; } if (extent[2] <= ret + wchar) { v_gtext( handle, x, y, string ); return ret; } v_justified( handle, x, y, string, ret + wchar, 1, 1 ); return ret; } static void set_fontpoint( int font, int point ) { int extent[8]; par.font = vst_font( handle, font ); par.point = vst_point( handle, point, extent, extent, &dist, &hchar ); if (effects) vst_effects( handle, effects = 0 ); vqt_extent( handle, "W", extent ); wchar = extent[2]; vqt_extent( handle, "l", extent ); dist += abs( wchar - extent[2] ); } static void new_fontpoint( VIEW *tv, int font, int point ) { if (tv->font == font && tv->point == point) return; set_fontpoint( font, point ); *(long *)&tv->font = *(long *)&par.font; if (tv->flag < 0) tv->dist = dist; else { tv->dist /= tv->xfac; tv->dist *= wchar; } tv->bc += tv->w / tv->xfac; tv->xfac = wchar; tv->lc += tv->h / tv->yfac; tv->yfac = hchar; new_size( 0 ); } static int draw_popup( OBJECT *tree, int i, int depth, int xc, int yc, int wc, int hc ) { int dummy[1], hcell[1]; tree[4].ob_flags = tree[3].ob_flags = tree[2].ob_flags = HIDETREE; objc_draw( tree, i, depth, xc, yc, wc, hc ); if (effects) vst_effects( handle, effects = 0 ); if (par.font != 1) vst_font( handle, 1 ); i = 2; do { vst_point( handle, 12 - i, dummy, dummy, dummy, hcell ); tree[i].ob_flags = NONE; v_gtext( handle, tree->ob_x, tree->ob_y + tree[i].ob_y + tree[i].ob_height - *hcell, tree[i].ob_spec.free_string ); } while (++i < 5); if (par.font != 1) vst_font( handle, par.font ); vst_point( handle, par.point, dummy, dummy, dummy, dummy ); return 0; } static void write_out( VIEW *tv, char *ext, int effect ) { int i, fh, lines, new; char *p; FBUF f; if ((p = strrchr( strrchr( Path, PATHSEP ), '.' )) != 0) *p = 0; graf_mouse( HOURGLASS, 0 ); if ((fh = Fcreate( strcat( Path, ext ), 0 )) < 0) { graf_mouse( ARROW, 0 ); form_error( -fh - 31 ); return; } f.handle = fh; Fbufcreate( &f ); p = tv->buf; lines = tv->lc + tv->h / tv->yfac; for (;;) switch (i = (unsigned char)*p++) { case 0: Fputc( 13, &f ); Fputc( 10, &f ); if (--lines == 0) { Fbufflush( &f ); Fbufclose( &f ); graf_mouse( ARROW, 0 ); return; } break; case Esc: new = *p++ & 0x3F; if (effect < 0) break; effect ^= new; if (new & TXT_THICKENED) { Fputc( 18, &f ); Fputc( effect & TXT_THICKENED ? '0' : '1', &f ); } if (new & TXT_LIGHT) { Fputc( 18, &f ); Fputc( effect & TXT_LIGHT ? 'E' : 'F', &f ); } if (new & TXT_SKEWED) { Fputc( 18, &f ); Fputc( effect & TXT_SKEWED ? '2' : '3', &f ); } if (new & TXT_UNDERLINED) { Fputc( 18,&f ); Fputc( effect & TXT_UNDERLINED ? '4' : '5', &f ); } if (new & TXT_SUPERSCRIPT) { Fputc( 18,&f ); Fputc( effect & TXT_SUPERSCRIPT ? '6' : '7',&f ); } if (new & TXT_SUBSCRIPT) { Fputc( 18, &f ); Fputc( effect & TXT_SUBSCRIPT ? '8' : '9', &f ); } break; default: Fputc( i, &f ); } } static void write_dump( VIEW *tv ) { int fh, b, c; long count, val; char *p, *end, buf[8]; FBUF f; if ((p = strrchr( strrchr( Path, PATHSEP ), '.' )) != 0) *p = 0; graf_mouse( HOURGLASS, 0 ); strupr( Path ); if ((fh = Fcreate( strcat( Path, ".DMP" ), 0 )) < 0) { graf_mouse( ARROW, 0 ); form_error( -fh - 31 ); return; } f.handle = fh; Fbufcreate( &f ); p = tv->buf; end = tv->text; count = 0; do { b = 7; val = count; do { c = (int)val & 15; c += '0'; if (c > '9') c += 'A' - '9' - 1; buf[b] = c; val >>= 4; } while (--b >= 0); do Fputc( buf[++b], &f ); while (b < 7); Fputc( ':', &f ); Fputc( ' ', &f ); count += val = 16; for (;;) { Fputc( ' ', &f ); if (--val < 0) break; if (p < end) { b = (unsigned char)*p++; c = b >> 4; c += '0'; if (c > '9') c += 'A' - '9' - 1; b &= 15; b += '0'; if (b > '9') b += 'A' - '9' - 1; } else { ++p; c = b = ' '; } Fputc( c, &f ); Fputc( b, &f ); } Fputc( ' ', &f ); p -= val = 16; do { c = (unsigned char)*p++; Fputc( c < ' ' ? '.' : c, &f ); } while (p < end && --val); Fputc( 13, &f ); Fputc( 10, &f ); } while (p < end); Fbufflush( &f ); Fbufclose( &f ); graf_mouse( ARROW, 0 ); } static void draw_text( VIEW *tv, int *clip ) { int x, y, fx; char *text, *next; if (*(long *)&tv->font != *(long *)&par.font) set_fontpoint( tv->font, tv->point ); vr_recfl( handle, clip ); y = clip[1]; if (tv->lc < 0) { x = tv->y + tv->h - 1 + tv->lc * tv->yfac; if (clip[3] > x) if ((clip[3] = x) < y) return; } vs_clip( handle, 1, clip ); mydiv( y - tv->y, tv->yfac, (div_t *)clip ); tv->line += x = tv->tlc - tv->line + ((div_t *)clip)->quot; y -= ((div_t *)clip)->rem; text = tv->text; if (tv->flag == 0) { char c, e = Esc; if (x < 0) do for (;;) { if ((c = *--text) == 0) break; if (c == e) { fx = 15 & Esc; if (*--text != c) { fx = 15; (char)fx &= (++text)[1]; } tv->effect ^= fx; } } while (++x < 0); if (x > 0) do for (;;) { if ((c = *++text) == 0) break; if (c == e) { fx = 15; (char)fx &= *++text; tv->effect ^= fx; } } while (--x > 0); } else { if (x < 0) do { while (*--text); } while (++x < 0); if (x > 0) do { while (*++text); } while (--x > 0); } if (tv->effect != effects) vst_effects( handle, effects = tv->effect ); tv->text = next = text; x = fx = tv->x - tv->lbc * tv->xfac; dist = 0; for (;;) switch (*++next) { case 0: if (effects) text_just( x, y, text ); else v_gtext( handle, x, y, text + 1 ); if ((y += tv->yfac) <= clip[3]) { x = fx; dist = 0; text = next; break; } vs_clip( handle, 0, clip ); return; case TABU: *next = 0; text_just( x, y, text ); *next = TABU; x = dist; x += tv->dist; x -= x % tv->dist; dist = x; x += fx; text = next; break; case Esc: *next = 0; x += text_just( x, y, text ); *next++ = Esc; vst_effects( handle, effects ^= *next & 15 ); text = next; } } static void draw_dump( VIEW *tv, int *clip ) { int e, f, cflag, *pintin; long count, val; char *pbyte; div_t xqr, yqr; if (*(long *)&tv->font != *(long *)&par.font) set_fontpoint( tv->font, tv->point ); e = clip[2]; f = clip[3]; if (tv->bc < 0) { int x = tv->x - 1 + 77 * tv->xfac; if (x < e) e = x; } if (tv->lc < 0) { int y = tv->y + tv->h - 1 + tv->lc * tv->yfac; if (y < f) f = y; } if (e < clip[2] || f < clip[3] || tv->xfac < tv->dist) { vr_recfl( handle, clip ); clip[2] = e; clip[3] = f; if (e < clip[0] || f < clip[1]) return; } if (effects) vst_effects( handle, effects = 0 ); cflag = tv->dist + tv->yfac - 2; mydiv( clip[2] - tv->x, tv->xfac, &xqr ); e = xqr.quot+1; cflag-=xqr.rem; mydiv( clip[0] - tv->x, tv->xfac, &xqr ); e -= xqr.quot; cflag +=xqr.rem; mydiv( clip[3] - tv->y, tv->yfac, &yqr ); f = yqr.quot; cflag -= yqr.rem; mydiv( clip[1] - tv->y, tv->yfac, &yqr ); f -= yqr.quot; if ((cflag += yqr.rem) != 0) vs_clip( handle, 1, clip ); pbyte = tv->buf; pbyte += (long)(tv->tlc + yqr.quot) << 4; ptsin[1] = clip[1] - yqr.rem; if (tv->xfac < tv->dist) { ptsin[0] = tv->x - tv->lbc * tv->xfac; e=76; } else { ptsin[0] = clip[0] - xqr.rem; vdipb[1] += tv->lbc + xqr.quot; } do { pintin = intin + 77; *--pintin = ' '; val = 15; count = tv->text - pbyte; while (val >= count) { *--pintin = ' '; --val; } do *--pintin = (unsigned char)pbyte[val]; while (--val >= 0); *--pintin = ' '; val = 15; while (val >= count) { int c = ' '; *--pintin = c; *--pintin = c; *--pintin = c; --val; } do { int b, c; c = (unsigned char)pbyte[val]; *--pintin = ' '; b = c & 15; b += '0'; if (b > '9') b += 'A' - '9' - 1; *--pintin = b; c >>= 4; c += '0'; if (c > '9') c += 'A' - '9' - 1; *--pintin = c; } while (--val >= 0); *--pintin = ' '; *--pintin = ' '; *--pintin = ':'; val = pbyte - tv->buf; do { int c; c = (int)val & 15; c += '0'; if (c > '9') c += 'A' - '9' - 1; *--pintin = c; val >>= 4; } while (pintin > intin); pbyte += 16; VDI( 8, 1, e, handle ); ptsin[1] += tv->yfac; } while (--f >= 0); vdipb[1] = pintin; if (cflag) vs_clip( handle, 0, clip ); } static void free_text() { load_fonts( 0 ); } #pragma warn -par static int key_text( VIEW *tv, int code, int ks ) { switch (code) { case CNTRL_N: new_fontpoint( tv, 1, 10 ); return 0; case CNTRL_M: new_fontpoint( tv, 1, 9 ); return 0; case CNTRL_K: new_fontpoint( tv, 1, 8 ); return 0; case CNTRL_E: AVSendMessage( AV_ASKFILEFONT, 0, 0 ); return 0; case CNTRL_X: strcpy( Path, tv->path ); if (tv->flag < 0) write_dump( tv ); else write_out( tv, ".OUT", 0 ); return 0; case CNTRL_C: if (set_scrp()) if (tv->flag < 0) write_dump( tv ); else { write_out( tv, ".TXT", -1 ); write_out( tv, ".OUT", 0 ); } return 0; } return 1; } #pragma warn +par static void sclick_text( VIEW *tv, int mx, int my, int flag ) { if (flag) { if (flag == 1) new_fontpoint( tv, mx, my ); else par.hwin = tv->h; return; } popup[6].ob_state = VA_Flags & 2 ? NORMAL : DISABLED; strncpy( fontstring + 2, VA_Flags & 2 ? VA_Name : "VA_FILE ", 8 ); strncpy( savestring + 5, tv->flag < 0 ? "DMP" : "OUT", 3 ); itostring( tv->lc + tv->h / tv->yfac, zeilstring + 8, 6 ); flag = 5; if (tv->font == 1 && tv->point <= 10) flag = 12 - tv->point; switch (flag = popup_menu( popup, flag, mx, my, draw_popup )) { case 2: case 3: case 4: new_fontpoint( tv, 1, 12 - flag ); break; case 6: AVSendMessage( AV_ASKFILEFONT, 0, 0 ); break; case 8: strcpy( Path, tv->path ); if (tv->flag < 0) write_dump( tv ); else write_out( tv, ".OUT", 0 ); } } static void init_popup( void ) { int i, count; vst_point( handle, 10, &popup->ob_next,&popup->ob_next, &wchar, &hchar ); popup->ob_next = -1; count = 0; i = 1; do { popup[i].ob_width *= wchar; popup[i].ob_y = count; count += popup[i].ob_height = popup[i].ob_height ? gl_hchar : hchar; } while (++i < 9); popup->ob_width *= wchar; popup->ob_height = count; } VIEW *load_text( int fh, long len ) { int i, effect; char *wp, *rp, *rend; VIEW *rv; if ((rv = Malloc( (1 + sizeof(VIEW)) + len )) == 0) { Fclose( fh ); form_error( EINVMEM ); return 0; } wp = rv->text = &rv->null; *wp++ = 0; rp = wp; rend = rp + Fread( fh, len, rp ); Fclose( fh ); if (popup->ob_next == 0) init_popup(); i = 8; if (rend > rp && rend[-1] == TABU) if (--rend > rp && rend[-1] == 13) if (--rend > rp && rend[-1] == TABU) if (--rend > rp && rend[-1] == 13) { while (--rend > rp && rend[-1] == TABU) ++i; if ((i -= 8) <= 0) i = 8; } rv->dist = i; *(long *)&rv->line = 0; rv->lc = 0; rv->bc = 1; rv->flag = 1; effect = 0; len = 0; while (rp < rend) switch (i = (unsigned char)*rp++) { case 0: case 10: while (wp[-1] == ' ' && wp[-2] != Esc) { --wp; --len; } if (len > rv->bc) { if (len <= 512) rv->bc = (int)len; else { while (*--wp); ++wp; *wp++ = 14; *wp++ = 15; } } *wp++ = 0; ++rv->lc; len = 0; break; case TABU: len += rv->dist; len -= len % rv->dist; *wp++ = i; break; case 28: /* 1st Word Soft Space */ case 29: /* 1st Word */ case 30: i = ' '; ++len; *wp++ = i; break; /* WP Wide Space */ case 31: while (rp < rend && *rp++ != 10); break; case 11: ++rp; /* 1st Word Soft Formfeed */ case 13: break; case 18: i = effect; switch (*rp++) { case '0': effect |= TXT_THICKENED; break; case '1': effect &= ~TXT_THICKENED; break; case '2': effect |= TXT_SKEWED; break; case '3': effect &= ~TXT_SKEWED; break; case '4': effect |= TXT_UNDERLINED; break; case '5': effect &= ~TXT_UNDERLINED; break; case '6': effect |= TXT_SUPERSCRIPT; break; case '7': effect &= ~TXT_SUPERSCRIPT; break; case '8': effect |= TXT_SUBSCRIPT; break; case '9': effect &= ~TXT_SUBSCRIPT; break; case 'E': effect |= TXT_LIGHT; break; case 'F': effect &= ~TXT_LIGHT; } if ((i ^= effect) != 0) { rv->flag = 0; *wp++ = Esc; *wp++ = i; } break; case Esc: if ((i = *rp++) != Esc) { i &= 0x3F; i ^= effect; effect ^= i; if (i) { rv->flag = 0; *wp++ = Esc; *wp++ = i; } } break; case 25: i = '-'; /* 1st Word Soft Slash */ default: ++len; *wp++ = i; } if (len > rv->bc) { if (len <= 512) rv->bc = (int)len; else { while (*--wp); ++wp; *wp++ = 14; *wp++ = 15; } } *wp = 0; while (--rv->lc >= 0 && *--wp == 0); if ((rv->lc += 2) <= 0) { Mfree( rv ); form_error( ENOENT ); return 0; } load_fonts( 1 ); set_fontpoint( par.font, par.point ); if (par.textdef) AVSendMessage( AV_ASKFILEFONT, 0, 0 ); *(long *)&rv->font = *(long *)&par.font; rv->dist *= rv->xfac = wchar; rv->yfac = hchar; rv->w = (rv->bc + 1) * wchar; rv->h = par.hwin; rv->draw = draw_text; rv->free = free_text; rv->key = key_text; rv->sclick = sclick_text; return rv; } VIEW *load_dump( int fh, long len ) { VIEW *rv; if (len > 16L * 32767) len = 16L * 32767; if ((rv = Malloc( sizeof(VIEW) + len )) == 0) if ((len = Mavail()-sizeof(VIEW)) > 0) rv = Malloc(sizeof(VIEW)+len); else { Fclose( fh ); form_error( EINVMEM ); return 0; } len = Fread( fh, len, rv->buf ); Fclose( fh ); if (len <= 0) { Mfree(rv); form_alert( 1,"[1][|Nichts zu dumpen.][ OK ]" ); return 0; } if (popup->ob_next == 0) init_popup(); rv->text = rv->buf; rv->text += len; rv->flag = -1; rv->bc = 76; rv->lc = (int)((len + 15) >> 4); load_fonts( 1 ); set_fontpoint( par.font, par.point ); if (par.textdef) AVSendMessage( AV_ASKFILEFONT, 0, 0 ); *(long *)&rv->font = *(long *)&par.font; rv->yfac = hchar; rv->xfac = wchar; rv->dist = dist; rv->h = par.hwin; rv->w = 77 * wchar; rv->draw = draw_dump; rv->free = free_text; rv->key = key_text; rv->sclick = sclick_text; return rv; } static void outchar( int c ) { static int flag = 0; static char *read_ptr = read_buf.text; if ((*read_ptr = c) == 0) { read_ptr = read_buf.text; c = par.margin; v_alpha_text( ohandle, read_buf.text - c ); if (flag) { read_buf.text[-2] = ' '; read_buf.text[-1] = ' '; read_buf.text[-c] = ' '; read_buf.text[1-c] = ' '; par.margin = c -= 4; flag = 0; } if (c && oeffect & TXT_UNDERLINED) { par.margin = c += 4; flag = 1; read_buf.text[-2] = 18; read_buf.text[-1] = '4'; read_buf.text[-c] = 18; read_buf.text[1-c] = '5'; } } else if (read_ptr < read_buf.end - 1) ++read_ptr; } static void out_effect( int new ) { oeffect ^= new; if (oeffect & TXT_THICKENED) { outchar( 18 ); outchar( new & TXT_THICKENED ? '0' : '1' ); } if (oeffect & TXT_LIGHT) { outchar( 18 ); outchar( new & TXT_LIGHT ? 'E' : 'F' ); } if (oeffect & TXT_SKEWED) { outchar( 18 ); outchar( new & TXT_SKEWED ? '2' : '3' ); } if (oeffect & TXT_UNDERLINED) { outchar( 18 ); outchar( new & TXT_UNDERLINED ? '4' : '5' ); } if (oeffect & TXT_SUPERSCRIPT) { outchar( 18 ); outchar( new & TXT_SUPERSCRIPT ? '6' : '7' ); } if (oeffect & TXT_SUBSCRIPT) { outchar( 18 ); outchar( new & TXT_SUBSCRIPT ? '8' : '9' ); } oeffect = new; } static int out_line( int fh ) { unsigned char c[2]; while (Fread( fh, 1, c ) > 0) switch (*c) { case 10: outchar( 10 ); outchar( 0 ); return 0; case 11: Fread( fh, 1, c ); break; /* 1st Word Soft Formfeed */ case Esc: Fread( fh, 1, c ); if (*c == Esc) { outchar( Esc ); outchar( Esc ); } else out_effect( *c & 0x3F ); break; case 28: /* 1st Word Soft Space */ case 29: /* 1st Word */ case 30: outchar( ' ' ); break; /* 1st Word Wide Space */ case 31: while (Fread( fh, 1, c ) > 0 && *c != 10); break; case 25: *c = '-'; /* 1st Word Soft Slash */ default: outchar( *c ); } outchar( 12 + par.no_ff ); outchar( 0 ); return 1; } int (*out_text( void ))( int fh ) { memset( read_buf.space, ' ', sizeof(read_buf.space) ); if (par.quality) { outchar( 18 ); outchar( 'C' - par.quality ); } out_effect( 0 ); return out_line; }#include #include #include #include #include #include "1stview.h" struct { char parmagic[4]; long hertz; int outdef, spoolflag, textdef, dithcol, out_handle, margin, no_ff, quality, meta_scale, aspect, x_scale, y_scale, h_align, v_align, xwin, ywin, wwin, hwin, xmin, ymin, wmax, hmax, font, point; char extspool[16]; } par = { 'p', 'f', 'u', 'i', 7000, 0, 0, 0, 2, 21, 0, 0, 0, 1, 2, 1, 1, 1, 0, 40, 85, 528, 256, 0, 38, 621, 343, 1, 10, "CALCLOCK" }; typedef struct { unsigned long id; /* Selectric ID (SLCT) */ unsigned int version; /* version (BCD-Format) */ struct { unsigned : 8; /* reserved */ unsigned pthsav : 1; /* save GEMDOS paths */ unsigned stdest : 1; /* stay in destination path */ unsigned autloc : 1; /* auto-locator */ unsigned numsrt : 1; /* numsort */ unsigned lower : 1; /* use lowercase letters */ unsigned dclick : 1; /* open folder on dclick */ unsigned hidden : 1; /* show hidden files */ unsigned bypass : 1; /* Selectric ON/OFF */ } config; int sort; /* sort-mode (neg. = rev.) */ int num_ext; /* number of extensions */ char *(*ext)[]; /* preset extensions */ int num_paths; /* number of paths */ char *(*paths)[]; /* preset paths */ int comm; /* communication word */ int in_count; /* input counter */ void *in_ptr; /* input pointer */ int out_count; /* output counter */ void *out_ptr; /* output pointer */ int cdecl (*get_first)( DTA *pdta, int attrib ); int cdecl (*get_next)( DTA *pdta ); int cdecl (*release_dir)( void ); } SLCT_STR; static SLCT_STR *slct = 0; static int opened = 0; typedef struct { unsigned char *pbuf, *ebuf, *fbuf, sbuf[4]; int handle; } FBUF; void Fbufopen( FBUF *fp ) { long curr, len; curr = Fseek( 0, fp->handle, 1 ); len = Fseek( 0, fp->handle, 2 ) - curr; Fseek( curr, fp->handle, 0 ); if ((fp->pbuf = Malloc( len )) == 0) if ((len = Mavail()) > 4) fp->pbuf = Malloc( len ); else { len = 4; fp->pbuf = fp->sbuf; } fp->fbuf = fp->pbuf; fp->ebuf = fp->pbuf += len; } void Fbufcreate( FBUF *fp ) { long len; if ((len = Mavail()) > 4) fp->pbuf = Malloc( len ); else { len = 4; fp->pbuf = fp->sbuf; } fp->fbuf = fp->pbuf; fp->ebuf = fp->pbuf + len; } void Fbufflush( FBUF *fp ) { long count; count = fp->pbuf - fp->fbuf; fp->pbuf = fp->fbuf; if (fp->ebuf > fp->pbuf) if (Fwrite( fp->handle, count, fp->pbuf ) < count) fp->ebuf = fp->pbuf; } /* Fr die folgenden Routinen haben wir jetzt speziell fr Purbo-C * optimierte Assemblerversionen in DDEXTLIB.LIB, die im Normalfall * (Zeichen im Puffer) schtzungsweise doppelt so schnell arbeiten! */ #if !defined(__TOS__) || !defined(__TURBOC__) int Fgetc( FBUF *fp ) { if (fp->pbuf >= fp->ebuf) { long count; fp->pbuf = fp->fbuf; if ((count = fp->ebuf - fp->pbuf) <= 0) return -1; fp->ebuf = fp->pbuf + Fread( fp->handle, count, fp->pbuf ); if (fp->ebuf <= fp->pbuf) return -1; } return *fp->pbuf++; } void Fputc( int ch, FBUF *fp ) { if (fp->pbuf >= fp->ebuf) Fbufflush( fp ); *fp->pbuf++ = ch; } #endif void Fbufclose( FBUF *fp ) { if (fp->fbuf != fp->sbuf) Mfree( fp->fbuf ); Fclose( fp->handle ); } int Findfirst( char *name, DTA *pdta, int attrib ) { DTA *pold; int ret; pold = Fgetdta(); Fsetdta( pdta ); ret = Fsfirst( name, attrib ); Fsetdta( pold ); return ret; } int Findnext( DTA *pdta ) { DTA *pold; int ret; pold = Fgetdta(); Fsetdta( pdta ); ret = Fsnext(); Fsetdta( pold ); return ret; } void slct_open( void ) { #ifdef __TOS__ if (opened) return; if (slct == 0) { void *oldstack = (void *)Super( 0 ); long *cookiejar = *(long **)0x5A0; if (cookiejar) { while (*cookiejar) { if (*cookiejar == 'FSEL') { slct = (SLCT_STR *)cookiejar[1]; if (slct->id != 'SLCT' || slct->version < 0x102) slct = 0; break; } cookiejar += 2; } } Super( oldstack ); } if (slct) { slct->comm = 9; opened = 1; wind_update( BEG_MCTRL ); } #endif } int slct_first( DTA *pdta, int attrib ) { if (opened) return (*slct->get_first)( pdta, attrib ); return 1; } int slct_next( DTA *pdta ) { if (opened) return (*slct->get_next)( pdta ); return 1; } void slct_close( void ) { if (opened) { opened = 0; (*slct->release_dir)(); wind_update( END_MCTRL ); } } void fix_tree( OBJECT *tree, int count ) { do rsrc_obfix( tree, count ); while (--count >= 0); } void memswap( char *p, char *q, long count ) { while (--count >= 0) { char t = *p; *p++ = *q; *q++ = t; } } static void background( int *rect ) { static int cop[8]; static MFDB screen, save; if (rect) { *(long *)cop = *(long *)rect; *(long *)(cop + 4) = 0; cop[6] = rect[2] - 1; cop[2] = rect[0] + cop[6]; cop[7] = rect[3] - 1; cop[3] = rect[1] + cop[7]; *(long *)&save.fd_w = *(long *)(rect + 2); save.fd_wdwidth = (save.fd_w + 15) >> 4; save.fd_nplanes = nplanes; save.fd_stand = 0; wind_get( 0, WF_SCREEN, (int *)&save.fd_addr, (int *)&save.fd_addr + 1, &save.fd_r2, &save.fd_r3 ); save.fd_r1 = 0; *(long *)&save.fd_r2 = 0; screen.fd_addr = 0; } else { memswap( (char *)cop, (char *)(cop + 4), 8 ); memswap( (char *)&screen, (char *)&save, sizeof( MFDB ) ); } vro_cpyfm( handle, S_ONLY, cop, &screen, &save ); } void printbox( char *name, int count ) { static char page[] = "Seite XXX", no_cancel[] = "Abbruch nicht mglich!"; #pragma warn -rpt static OBJECT prbox[] = { 0, 1, 3, G_BOX, NONE, OUTLINED, 0x21100L, 0, 0, 38, 5, 2, -1, -1, G_STRING, NONE, NORMAL, "Drucke", 2, 1, 6, 1, 3, -1, -1, G_STRING, NONE, NORMAL, 0, 9, 1, 29, 1, 0, -1, -1, G_STRING, LASTOB, NORMAL, 0, 2, 3, 22, 1 }; #pragma warn +rpt int clip[4]; graf_mouse( M_OFF, 0 ); if (name) { itoa( count, page + 6, 10 ); prbox[3].ob_spec.free_string = count ? page : no_cancel; if ((count = (int)strlen( name ) - 29) < 0) count = 0; prbox[2].ob_spec.free_string = name + count; if (prbox->ob_next == 0) { --prbox->ob_next; fix_tree( prbox, 3 ); } form_center( prbox, clip, clip + 1, clip + 2, clip + 3 ); background( clip ); wind_get( 0, WF_WORKXYWH, clip, clip + 1, clip + 2, clip + 3 ); objc_draw( prbox, ROOT, MAX_DEPTH, clip[0],clip[1],clip[2],clip[3] ); } else background( 0 ); graf_mouse( M_ON, 0 ); } void flipwords( char *val, long count ) { char c; while ((count -= 2) >= 0) { c = *val++; val[-1] = val[0]; *val++ = c; } } void fliplongs( int *val, long count, int flag ) { int w; while (--count >= 0) { if (flag) flipwords( (char *)val, 4 ); w = *val++; val[-1] = val[0]; *val++ = w; } } void itostring( int value, char *string, int count ) { do *--string = '0' + value % 10; while (--count && (value /= 10) != 0); while (--count > 0) *--string = ' '; } void load_fonts( int flag ) { static int count = 0; if (vq_gdos()) if (flag) { if (count == 0) vst_load_fonts( handle, 0 ); ++count; } else if (--count == 0) vst_unload_fonts( handle, 0 ); } void set_fonts( int flag ) { static int loaded = 0; if (flag) vst_load_fonts( ohandle, 0 ); else if (loaded) vst_unload_fonts( ohandle, 0 ); loaded = flag; } int set_scrp( void ) { char *p, *q, buf[128]; if (scrp_read( p = buf ) && *p) { q = Path; while ((*q++ = *p++) != 0); --q; if (q[-1] != '\\') *q++ = '\\'; *q++ = 'S'; *q++ = 'C'; *q++ = 'R'; *q++ = 'A'; *q++ = 'P'; *q = 0; return 1; } form_alert( 1, "[1][|Kein Clipboard-Pfad gesetzt.][Abbruch]" ); return 0; } static void change_select( OBJECT *tree, int id ) { if (id && (tree[id].ob_state & DISABLED) == 0) objc_change( tree, id, 0, xdesk, ydesk, wdesk, hdesk, tree[id].ob_state ^ SELECTED, 1 ); } int popup_menu( OBJECT *tree, int initob, int mx, int my, int (*draw)( OBJECT *tree, int startob, int depth, int xc, int yc, int wc, int hc ) ) { int id, event, mbut, d[1], pop[4]; pop[0] = mx - tree[initob].ob_x - (tree[initob].ob_width >> 1); if (xdesk > pop[0]) pop[0] = xdesk; pop[2] = tree->ob_width + 4; if ((id = pop[0] + pop[2] - 1 - xmax) > 0) pop[0] -= id; pop[1] = my - tree[initob].ob_y - (tree[initob].ob_height >> 1); if (ydesk > pop[1]) pop[1] = ydesk; pop[3] = tree->ob_height + 4; if ((id = pop[1] + pop[3] - 1 - ymax) > 0) pop[1] -= id; tree->ob_x = pop[0] + 1; tree->ob_y = pop[1] + 1; graf_mouse( M_OFF, 0 ); background( pop ); id = tree[initob].ob_state & DISABLED; if (id == 0) *tree[initob].ob_spec.free_string = 8; (*draw)( tree, 0, 1, xdesk, ydesk, wdesk, hdesk ); if (id == 0) *tree[initob].ob_spec.free_string = ' '; graf_mkstate( &mx, &my, &mbut, d ); mbut ^= 1; wind_update( BEG_MCTRL ); do { if ((id = objc_find( tree, 0, 1, mx, my )) < 0) id = 0; change_select( tree, id ); graf_mouse( M_ON, 0 ); objc_offset( tree, id, &mx, &my ); event = evnt_multi( MU_BUTTON | MU_M1, 1, 1, mbut, id ? 1 : 0, mx, my, tree[id].ob_width, tree[id].ob_height, 0, 0, 0, 0, 0, 0, 0, 0, &mx, &my, d, d, d, d ); graf_mouse( M_OFF, 0 ); change_select( tree, id ); } while ((event & MU_BUTTON) == 0); wind_update( END_MCTRL ); if (tree[id].ob_state & DISABLED || id == initob) id = 0; if (id) { event = 6; for (;;) { change_select( tree, id ); if (--event == 0) break; evnt_timer( 50, 0 ); } } background( 0 ); graf_mouse( M_ON, 0 ); if (mbut) evnt_button( 1, 1, 0, d, d, d, d ); return id; }#ifndef FROM #define FROM( MODUL ) #endif #ifndef IMPORT #define IMPORT extern #endif #define PATHSEP '\\' typedef struct { unsigned char *pbuf, *ebuf, *fbuf, sbuf[4]; int handle; } FBUF; FROM( util ) IMPORT struct { long parameter, hertz; int outdef, spoolflag, textdef, dithcol, out_handle, margin, no_ff, quality, meta_scale, aspect, x_scale, y_scale, h_align, v_align, xwin, ywin, wwin, hwin, xmin, ymin, wmax, hmax, font, point; char extspool[16]; } par; FROM( util ) IMPORT void printbox( char *name, int count ); FROM( util ) IMPORT void Fbufopen( FBUF *fp ); FROM( util ) IMPORT int Fgetc( FBUF *fp ); FROM( util ) IMPORT void Fbufcreate( FBUF *fp ); FROM( util ) IMPORT void Fbufflush( FBUF *fp ); FROM( util ) IMPORT void Fputc( int ch, FBUF *fp ); FROM( util ) IMPORT void Fbufclose( FBUF *fp ); FROM( util ) IMPORT int Findfirst( char *name, DTA *pdta, int attrib ); FROM( util ) IMPORT int Findnext( DTA *pdta ); FROM( util ) IMPORT void slct_open( void ); FROM( util ) IMPORT int slct_first( DTA *pdta, int attrib ); FROM( util ) IMPORT int slct_next( DTA *pdta ); FROM( util ) IMPORT void slct_close( void ); FROM( util ) IMPORT void memswap( char *p, char *q, long count ); FROM( util ) IMPORT void flipwords( char *val, long count ); FROM( util ) IMPORT void fliplongs( int *val, long count, int flag ); FROM( util ) IMPORT void fix_tree( OBJECT *tree, int count ); FROM( util ) IMPORT void itostring( int value, char *string, int count ); FROM( util ) IMPORT void load_fonts( int flag ); FROM( util ) IMPORT void set_fonts( int flag ); FROM( util ) IMPORT int set_scrp( void ); FROM( util ) IMPORT int popup_menu( OBJECT *tree, int initob, int mx, int my, int (*draw)( OBJECT *tree, int startob, int depth, int xc, int yc, int wc, int hc ) );; TeX output 1992.04.29:2020@čKU`1MH-G cmcsc10H1stGuidelύ2m+XQ cmr12GuidoVVollbSedingύ 29.8April1992.A67"Vff cmbx10Inhaltsv=erzeichnis6'"V 3 cmbx101FlEinfꬍYTuhrung!l262FlBedientung%263FlDateiformateX7 Fl"K`y 3 cmr103.1_1Teextdateienf(ASCIMI,1stWord,.OUT)9# b> 3 cmmi10:=:::::::::::::7Fl3.2_1Resourcedateienf(.RSC)q5:=:::::::::::::::::::::9Fl3.3_1Rasterbilddateienf(.IMG,XIMG,.IFF):=:::::::::::::711Fl3.4_1Metadateienf(.GEM)k:=:::::::::::::::::::::::713Fl3.5_1Soundsampledateienf(.SAM,.SND)U:=:::::::::::::::714Fl3.6_1DerfDump-MoMdus<:=::::::::::::::::::::::::715ύ64FlKommtunikLation)/16Fl4.1_1I- 3 cmcsc10I1stGuidefundIGeminiߍ:=:::::::::::::::::::::716Fl4.2_1I1stGuidefundITcff[help:=:::::::::::::::::::::717Fl4.3_1I1stGuidefundICalclockm7:=:::::::::::::::::::718Fl4.4_1I1stGuidefunddasGEM-ClipbMoardd:=::::::::::::::719Fl4.5_1I1stGuidefundandereApplikdDationen5]:=::::::::::::::719ύ65FlGerꬍTateausgabYe42066FlRebuild-F\unktion$2167FlKon guration 2268FlGrenzen*2369Fl1st2Index%24610FlNeu2inV\ersion;25611FlReferenz(27`-1*@čKU6&p0J 3 cmsl101 5EINFV^ÍG?U6gHR!UNG\R2`KU61NEinfSuu 3/hrung!g6Hatten=Siesc!honimmerProbleme,3zurrichtigenZeitdierichtigenInformatio- 6nenfparatzuhabMen?v6DannwirdIhnendiesesAccessorygeraderec!htkommen.|\U{tbMerladenfdesoberstenInfo-FeenstersmitneuerDatei.6Conttrol-UsF&Sc!hlieenBdesobMerstenInfo-Feensters. xEntsprichtAnklickendes Q`Sc!hliefeldesfimInfo-FeenstermitderMaus.6Conttrol-FqZoMomendesoberstenInfo-Feensters.En!tsprichtAnklickendesFeull-Q`KnopfesfimInfo-FeenstermitderMaus.6Conttrol-WvCycleWindows,id.=h.zyklisc!hinacheinanderAktivierungallerQ`Info-FeensterfmW^Í䩍oyglic!h.6Conttrol-Qs Sc!hlietfalleInfo-Feenster.6(Shift-)2CursortastenF(Seiten!weises)fScrollen.@čKU62 5BEDIENUNG4`KU6(Shift-)2ClrHomeZumf(un!teren)obMerenRand.6(Shift-)2Insert}Zumf(rec!hten)linkenRand.6Undo;2EscsObMerstesfFeenstermitv!orhergehendemInhaltW^ÍF䩍u bersc!hreiben.6Conttrol-AV^Ít?sRO{ netWdenKon gurations-DialogundzeigtdasaktuelleVeersions- Q`datumv!onI1stGuide.dDieskdDannauchdurchGedrW^ÍM䩍uVckthaltenderrechtenQ`MaustastefbMeimAktivierenW^ÍF䩍u berdasDesk-MenW^ÍM䩍u erreic!htfwerden.6Conttrol-CrOKopiertfdieaktuelleDateiinsGEM-ClipbMoard.6Conttrol-Pr1GibtqdieaktuelleDateiaufeinGerW^Í䩍ayt(Druc!ker)qausoMdersendet Q`einenfen!tsprechendenAuftragandenSystem-SpMooler((DateifimDump-MoMdusladen.6Shift-ConttrolIndexdateifladen.6Recthts-Shift2bYeiIMGs|kFearbpalette"inReihenfolgederVDI-Indizesla-Q`den/spMeic!hern#v6Jefnac!hDateiformatwerdenzusW^Í䩍aytzlichfolgendeTeastenausgewertet:Q`Teext6Conttrol-NspEinstellenfNormalsc!hrift(10Punkt).6Conttrol-MuAEinstellenfMittelsc!hrift(9Punkt).6Conttrol-KstEinstellenfKleinsc!hrift(8Punkt).6Conttrol-EqFeon!tW^ÍF䩍fu bMerfVȈA-Protokolleinstellen.6Conttrol-XsROUT-fbzw.DMP-Dateisc!hreibMen.6Bactkspaces*Suc!hstringfumletztesZeichenverkW^ÍM䩍uVrzen.6Delete^~Suc!hstringflW^Í䩍oyschen.-S@čKU62 5BEDIENUNG5`KU6Zeic!henhmiteinemASCIMI-Codehnichtkleinerals32werdenschrittweisezuei- 6nemSuc!hstringzusammengefat,7welcherimFeenstertitelangezeigtwird.;IDie6Suc!hedbMeziehtsichbMeiTeextenmitVerzw!eigungsschlW^ÍM䩍uVsselnimmeraufdieLink-6Ein!trW^Í䩍ayge,MQsonstaufdenganzenTeext.Gro/KleinschreibungwirdbMeiLinks6ignoriert,fsonstnic!ht.v6DiefolgendenTeastenw!erdennurbMeiTeextenmitVerzw!eigungsschlW^ÍM䩍uVsselnaus-6gew!ertet:#v6HelpU]ZufselektiertemEin!tragverzweigenmitV^Í?U bMerschreibenfdesFeensters.6Return;2Entter<Zu selektiertemEin!tragverzweigenmitV^Í]x?O \f neneinesneuenQ`Feenster.6(Shift-)2T\ab|(Veorhergehenden)fNW^Í䩍ayc!hstenVerzw!eigungseintragfselektieren.#vQ`Resource6Conttrol-Cursor-Links/RechtsupVeorhergehendenE/Nac!hfolgendenObjekt- Q`baumfdarstellen.6Conttrol-KstKon!vertierenfM68k<->Ix86.Q`Image6Conttrol-SpEinstellenfStandard-Fearbpalette.6Conttrol-EqEinstellenfOriginal-Fearbpalette(n!urXIMGbzw.CMAP).6Conttrol-KstWeec!hselfzwischengeditherterundtransparenterDarstellung.6Conttrol-XsRSic!hernfXIMGbzw.CMAPe.Q`Meta6Conttrol-SpEinstellenfOriginal-Mastab.6Conttrol-EqEinpassenfinFeenster.6Conttrol-Cursor-Links/RechtsupZurfersten/nW^Í䩍ayc!hstenSeite.6?@čKU62 5BEDIENUNG6`KUQ`Soundsample#v6Conttrol-SpEinstellenfOriginal-Mastab.6Conttrol-EqEinpassenfinFeenster.6Conttrol-Cursor-Links/RechtsupNW^Í䩍ayc!hstniedere/NW^Í䩍ac!hsthW^Í䩍ohereFerequenzein- Q`stellen.6Conttrol-NspIn!terruptsoundfaktivieren6Conttrol-MuADMA-Soundfaktivieren6Conttrol-TrXSoundfstoppMen6WeennSiemitderMauseinmalaufdasobMersteInfo-Fensterklic!ken,erscheint 6einP!opup-MenW^ÍM䩍uV,:mitdemSiejenachDateiartverschiedeneParametereinstel-6lenoMderKon!vertierungenvornehmenkW^Í䩍oynnen.DieBedienungkdDannwahlweise6auf:GEM-Art(einmalkurzdrW^ÍM䩍uVc!ken:undloslassen,PyauswW^Í䩍ayhlenunddanac!hnoMch6maldrW^ÍM䩍uVc!ken)oMderaufMacintosh-Art(MaustastegedrW^ÍM䩍uVckthalten,auswW^Í䩍ayhlen6undfdannloslassen)erfolgen.vV^Í7^h?6U>6gbrigens,Fw!ennbMSiedenPopup-MenW^ÍM䩍uV-Einfachklickbzw. denVeerzweigungs-6DoppMelklic!kvbeigedrW^ÍM䩍uVc!kterrechterMaustasteausfW^ÍM䩍uVhren,kW^Í䩍oynnenSiedieent-6sprec!hendeAktionauchineinemInfo-FeensterauslW^Í䩍oysen,dasnichtobMenliegt6(ohneR dadieses,wieessonstderFeallwW^Í䩍ayre,nac!hobMenkommt). Weuten6Siesc!hon,daeineanalogeMW^Í䩍oyglichkeitauchimnormalenDesktopmitsei-6nenVeerzeic!hnisfensternbMesteht(Markieren,V^Í? O nen, Kopierenusw.)?ՆDiesist6indengewW^Í䩍oyhnlic!henHandbW^ÍM䩍uVchernnichtdokumentiert,نkdDannabMermanchmal6rec!htfnW^ÍM䩍uVtzlichsein.v6Das[bMeiliegendeInformationssystemistfW^ÍM䩍uVrdeninformationsbedW^ÍM䩍uVrftigenST-C-6undAssem!bler-Programmierergedacht.Esistsoangelegt,daSiepMerTeastatur6bzw.ˀDoppMelklic!kJjededetaillierteInformationW^Í䩍u `HberdasBetriebssystemTOS6des*ST*amitGEMerreic!henkW^Í䩍oynnen.WieSiebMemerkenwerden,CHistesallerdings6noMc!hfnichtganzkomplett.>@čKU63 5D!AeTEIFORMATET7`KU63NDateiformate!ύ6WieV sc!honerwW^Í䩍ayhnt,fwerdensW^Í䩍aymtlicheStandard-GEM-FeormatesowienatW^ÍM䩍uVrlich 6dassASCIMI-Teextformatun!terstW^ÍM䩍uVtztundkW^Í䩍oynnenjederzeitgeladenwerden.=Die6Erk!ennungfeinesFeormateserfolgtanhandderExtensionimDateinamen:"CQ`.RSCsGEM-Resource-DateienQ`.IMGtEGEM-Image-Dateienf(Rastergra k!en)Q`.IFFnhIn!terchangefFileFeormat(ILBM-In!terleavedfBitmaps)Q`.GEMxyGEM-Metadateienf(Objektgra k!en)Q`.SAM,.SNDRQSoundsample-DateienQ`sonstrASCIMI-Teextdateien,1st#WordPlusDateien(.DOC)oMder iwAusgabMe-DateienfmitSc!hriftattributen(.OUT)"C6WeennSieet!waeineTextdateiineineDateimitderExtension.IMGկum!bMe-6nennen,PkW^Í䩍oynn!tenSiesehen,wiesic!hIhrTeextalsRastergra kprW^Í䩍aysentiert.BIch6rate0(IhnenjedoMc!hvonderleiExpMerimentenab,daSiesonstmW^Í䩍oyglicherweise6unliebsameV^Í?fU bMerrasc!hungenferlebenkW^Í䩍oynn!ten.ލ6Veerzw!eigungsmW^Í䩍oyglichkeitenwsindderzeitbMeimText-undResource-Formatein-6gebaut.BeidRasterbildernkdDannic!hmirkeinesolcheFeunktionvorstellen,nbMei6Metadateienbietensic!hdieString-Objekte(vff[gtextoMdervff[justi epd)dafW^ÍM䩍uVran,6ic!hwerdediesdemnW^Í䩍aychstimplementieren,sodaSiedannauchdieseDateienin6Ihr]Info-Systemein!bindenkW^Í䩍oynnen.AnsonstenkW^Í䩍onnenSiedieGra k-Feormate6derzeitfzumindestalsEnd-KnoteninInfo-Kettenv!erwenden.&60N cmbx123.1TTextdateien(ASCI`I,1stWord,.OUT)C6ZunW^Í䩍ayc!hstnwerdenselbstverstW^Í䩍ayndlichnormaleASCIMI-Dateiengeladen,xdieSie6mitfeinembMeliebigenTeexteditorerzeugthaben.ލ6WeennSiesic!hdiebMeigefW^ÍM䩍uVgtenTexteeinmaldirekt(d.h.Tnic!htunterI1stGuide)6ansc!hauen,werden7SiedenAufbauderLinkserk!ennen.Eshandeltsichumeine6zw!eiteilige#Struktur,0dieindreiParagraphenzeicheneingefatist.DerersteTeeil6en!thW^Í䩍ayltudasanzuzeigendeKeyword(dasdannfettundunterstrichendargestellt6wird),%derzw!eiteTeeilenthW^Í䩍ayltdenrelativenPfadundDateinamendeszugehW^Í䩍oyri-6genfTeextes(dieserTeilwirdun!terI1stGuidenatW^ÍM䩍uVrlichnichtdargestellt).ލ6ImJGrundegenommensolltedieInformationshierarc!hiederDateihierarchieent-6sprec!hen,ImankdDannjedoMchjederzeitvoneinerDateizueinerbMeliebigenanderenJ$@čKU63 5D!AeTEIFORMATET8`KU6Dateisv!erzweigen.DerPfadmudabMeiimmerrelativangegebenw!erden(\..\" 6bMen!utzen),U8damit@einInfo-SystembeiBedarfproblemlosimFile-Systemumge-6hangenfw!erdenkdDann.6DieanzuzeigendeTeextdateidarfTabulator-Zeic!henenthalten(ASCIMI-Code09),6diestandardmW^Í䩍ayigausgew!ertetwerden(d.h.6mitderWeeite8).SonstigeSteu-6ercoMdes(ASCIIzkleinerals32,Qz.B.Zeilen!trenner13,10),w!erdenzumTeeil6ge ltert,XwZeic!hencoMdesW^ÍO䩍u ber127werdenentsprechendZeichensatzangezeigt.6DasP!aragraphenzeichen(ASCIMI-Code222=0xDE)istfW^ÍM䩍uVrdenAufbauv!on6Links(breserviert.cAufLinksfolgendeTeabulatorzeic!heninderZeilesolltenSie6v!ermeiden,_daN3dieseaufgrundderspMeziellenLink-Darstellungnichtrichtigaus-6gew!ertetfwerden.6Beip1stWeordTextenw!erdendiewichtigstenSteuerzeichenge ltert(Soft-und6Wide-Spaces,Phan!tom-Bindestriche,vdDariableJ-SeitenumbrW^ÍM䩍uVche)bzw. 2ausge-6w!ertetR(Teextattributefett,unterstrichen,kursivRundhell). CFeunotensowie6eingebundenefGra k!enwerden(noMch)nichtunterstW^ÍM䩍uVtzt.6Das1oP!opup-MenW^ÍM䩍u FbietetIhnenbMeiTeextdateiendieWahlzwisc!hendreiver-6sc!hiedenen SchriftgrW^Í䩍oyendesSystemfonts,bbwoMdurchsichdieV^Íg?U ?bMersichtunter6UmstW^Í䩍aynden,erheblic!hverbMessernlW^Í䩍ayt..WeurdedieDateiW^Í3 䩍u bereinProgramm6geladen,+w!elchesdasVȈA-Protok!ollundspMeziellVAffs#FILEFONTunterstW^ÍM䩍uVtzt(z.B.6derIGemini-Desktop),sokdDanneinbMeliebigerGDOS-Feon!tverwendetwerden.V^Í7^h?6U>6gbMerSdasKon gurationsmenW^ÍM䩍u '(sieheKapitel7)kdDanneingestelltw!erden,mNob6I1stGuidebMeimV^ÍS?O A nendesFeenstersautomatisc!heinensolchenFeonterfragen6undeinstellensolloMdernic!ht.AuerdemkdDannderaktuelleingestellteFeon!tper-6manen!t7gesichertwerden,@sodaerdannauchohneVȈA-ProtokollzurVeerfW^ÍM䩍uVgung6steh!t.6DieFeunktion\OUT-Dateisc!hreibMen"istsinnvollbMeiTeextenmitVerzw!eigungs-6sc!hlW^ÍM䩍uVsselnlundbMesondersbei1stWeordTexten.1:Esw!erdendannnW^Í䩍aymlichdie6Teext-A!ttribute derVerzw!eigungsschlW^ÍM䩍uVssel-Darstellung bzw. diejenigenv!on1st6Weordindasv!onIDigitEalDResearchstandardisierteOUT-Formatumgew!an-6deltFunddamitdieTeextezurAusgabMeaufeinenDruc!kerFvorbereitet. MFW^ÍM䩍uVr6nW^Í䩍ayhere%mInformationenzumOUT-Feormatv!erweise%michSieaufdasGEM-Pro -6Buc!hQvonGei/Gei.iWeelchenVeorteilbietetnundasOUT-FeormatdemAn-6w!ender? Nun,der=`entscheidendeVeorteilbMestehtdarin,daSieeinesolche6DateicmitHilfeeinesIOutput-(oMderIA=usdruck-)Programms,pwieesfW^ÍM䩍uVrMS-6DOS:bMeim:GEMmitgeliefertwirdundaufdemIA tEariSTz.B.bMeiIEasydraw6oMderZISciGraphzu ndenist,:\sam!tTeextattributenaufIhrenDruckerausgebMen6kW^Í䩍oynnen,wohney;einev!on1stWeordbMekdDanntespMezielleDrucker-Kon gurationsdatei6PRINTER.CFGzuv!erwenden.DieAusgabMewirddannW^Í^䩍u &berdenGDOS-Druc!ker-6TereibMermitHilfederVDI-Funktionvff[alphaff[textabgewic!kelt.55ImUnterschied6zu&.denanderenTeextausgabMe-Funktionen&.desVDI&erfolgtdieAusgabedabeiim6TeextmoMdusDstattimGra kmodus.'AuerdemkW^Í䩍oynnenineinerOUT-Dateiauc!h X[@čKU63 5D!AeTEIFORMATET9`KU6Rasterbildereingebundenw!erden(wirdvonI1stGuidenoMchnichtunterstW^ÍM䩍uVtzt), 6w!omitfdieFeunktionalitW^Í䩍aytdiesesFormatsderv!on1stWordPlusen!tspricht.ō6Das@OUT-FeormatkdDannn!unvonI1stGuideaucheingelesenwerden.WeennSie6et!waWeine1stWeordDateialsOUT-Dateisc!hreibMenunddieseanschlieendeinle-6sen,7sollten{kSiezumindestbMeiden4obengenann!tenTeextattributenkeineUnter-6sc!hiede|inderDarstellungfeststellen.`XDaI1stGuidedieVeerzweigungs-Links6bMeimm OUT-Datei-Sc!hreibenmitdenen!tsprechendenTeextattributenversieht6und#diezugehW^Í䩍oyrigeVeerzw!eigungs-Informationentfernt,OkW^Í䩍oynnenSienatW^ÍM䩍uVrlich6v!onTeinervonI1stGuidegeschriebMenenOUT-Dateinichtmehrverzweigen6(Der#PSinnderAktionbMesteh!tjaauchdarin,dieTeexteso,wiesieaufdem6Bildsc!hirmferscheinen,aufeinenDruckerzubringen).#Z63.2TResourcedateien(.RSC)*6MitHilfedesResource-FeormatesistesmW^Í䩍oyglic!h,ZbMeispielsweiseeinfacheBloMck-6gra k!enAindasInformations-Systemeinzubinden,vondenenW^Í䩍a 1hnlichwiebMei6Teextdateienfv!erzweigtwerdenkdDann.ō6SiekWkW^Í䩍oynnendieResource-Dateiwiegew!ohntkWmiteinemResource-Construction-6Set*erzeugen.AlsVeerzw!eigungsschlW^ÍM䩍uVssel*kW^Í䩍oynnenSiedabMeieinbeliebigesObjekt6mitCceinerTeextk!ompMonenteCc(alsoauc!heinIcon)de nieren.Dasdarauffolgende6Objektindergleic!henHierarchie-EbMene(Zeigerobff[nextinderObjektstruktur)6m!udannvomTypGffs#STRINGseinundalsFlagHIDETREEhabMen.DieserString6en!thW^Í䩍aylt=CdenNamenderVeerzweigungs-Datei,dergenauwiebMeiTeextdateien6relativqanzugebMenist.?Durc!hdasFlagHIDETREEqwwirddiesesObjektvonder6AES-Feunktionobjcff[drpawnic!htdargestellt.ImIR=cs2v!onIDigitEal~Research6kW^Í䩍oynnenSiediesev!erstecktenObjektewiedersic!htbarmachen(z.B.zurBearbMei-6tung),Uw!enn@SiedasVeater-ObjektanwW^Í䩍ayhlenunddieFeunktionUnhidekChildrpen6ausfW^ÍM䩍uVhren.Um^n!undieVeerzweigungsschlW^ÍM䩍uVssel-EigenschaftfW^ÍM䩍uVrdenAnwender6sic!htbarazumac!hen,NsolltenSiediesendurcheineschattierteBoxeinrahmen.6Dortm!udannallerdingsauchdieversteckteVeerzweigungs-Informationhinein-6passen,w!asimIR=cs2etwasGeschickerfordert,daderStringdanngewW^Í䩍oyhnlich6ausMdemv!erkleinertenObjektherausragt.BAbMerwiegesagt,_Xbeiet!wasMGeschick6istfdiesmW^Í䩍oyglic!h.ō6I1stGuideFstelltnac!hdemV^Ík?O j nenzunW^Í䩍aychstdenerstenObjektbaumeinerRe-6sourcedateidar. BeiGEM-An!wendungenistdasmeistdieMenW^ÍM䩍uVzeile,8die6sic!hPdannvollausgeklapptvorIhnenausbreitet. SolltedieResource-DateiW^Í6M䩍6u<VbMerhauptk!einenObjektbaum(sondernnurfrpeieObjekte)enthalten,isowird6abgebroMc!hen.m5Fealls+dieResourcedateimehralseinenObjektbaumenthW^Í䩍aylt,Lso6kW^Í䩍oynnenSiemitHilfedesKlic!k-Popup-MenW^ÍM䩍uVsoMdermitCon!trol-Cursor-linksund6Con!trol-Cursor-rechtsQalleObjektbW^Í䩍ayumezyklisc!hvor-bzw.rW^ÍM䩍uVckwW^Í䩍ayrtsdurch-6laufen. k@čKU63 5D!AeTEIFORMATE10`KUV^Í7^h?6U>6gbrigens7kW^Í䩍oynnenso!vielResource-Dateiengleichzeitiggeladenwerden,NwieFeen- 6sterundSpMeic!herplatzzurVeerfW^ÍM䩍uVgungstehen.DaderResource-Managerdes6AES$abMer%n!ureineResource-DateigleichzeitigverwaltenkdDann(mitderpa-6rameterlosenuFeunktionrsrpcff[freeuwirdbMeispielsw!eiseimmerdiezuletztgeladene6ResourcefreigegebMen),%m!utefW^ÍM䩍uVrI1stGuideeineeigeneLaderoutineentwickelt6w!erden.ϜDiese{kdDannnunsowohlResource-DateienimIMotorola-alsauchim6IIntel-Feormatk!orrektdarstellen,-undzwarsowohlinderST-alsauchinder6IBM-Veersion.DieErk!ennungdesjeweiligenFeormateserfolgtdabMeiautoma-6tisc!h.ՠDoMchdamitnic!htgenug.AucheineKon!vertierungindasjew!eilsandere6FeormatfistinbMeidenVersionenmW^Í䩍oyglic!h.v6Hierzu3istfolgendeszuerklW^Í䩍ayren: wWW^Í䩍ahrend3IMG-DateiengrundsW^Í䩍aytzlic!him6IMotorola-FeormatundGEM-MetadateiengrundsW^Í䩍aytzlic!himIIntel-Format6v!orliegen!(undaufdemjeweilsanderenRechnerentsprechendkonvertiertwer-6den7vmW^ÍM䩍uVssen),[liegenResource-DateienimmerimFeormatdesjew!eiligenRech-6nersv!or,sodasienormalerweisenichtohneweiteresaustauschbarsind.QDie6Kon!vertierungHbMeziehtsichdabMeiaufdasbyteweiseDrehenvonWeortenbzw.6w!ortweiseIDrehenv!onLangworten.MitI1stGuidewirdnungenaudiesesPro-6blemRgelW^Í䩍oyst.)SiekW^Í䩍onnenv!onnunanIhreResourcenproblemloszwischenST6undMIBMMaustausc!hen,wwechselseitigbMearbeitenundungeac!htetderHerkunft6darstellen.v6Als\=GEM-KennermW^ÍM䩍uVsstenSieallerdingsbMezW^ÍM䩍uglic!hderautomatischenErken-6n!unggskeptischwerden.EsgibtnW^Í䩍aymlichkeinvonIDigitEalGResearchvor-6gesehenesjMittel, umzuerk!ennen,obeineResource-DateiimIIntel-oMder6IMotorola-Feormatv!orliegt.DahermuzueinemTerickgegri enwerden,:der6zw!ar}nicht100%igsicherseinkdDann,abMerwohl99,99%igsicherist.dHDieseSi-6c!herheitistidentischmitderWeahrscheinlichkeit, daeineResource-Dateinicht6mehrVals255ObjektbW^Í䩍ayumeen!thW^Í䩍alt(w!ohlgemerkt:bObjektbW^Í䩍aume,nichtVObjekte6!).InXdiesemFeallm!unW^Í䩍aymlicheinBytedesWeortesimResource-Header,das6die=AnzahlderBW^Í䩍ayumeangibt(KompMonen!tershff[ntrpee)=gleichNullsein. Je6nac!hdem,/welches:Bytedasn!unist,kdDanndasen!tsprechende:Feormatfestgestellt6w!erden.v6DasߡerkdDann!teFeormaterfahrenSieimKlick-Popup-MenW^ÍM䩍uV,-mitdemSieauch6dieCRKon!vertierungveranlassenkW^Í䩍oynnen. DazuwirddieDateinoMchmalsein-6gelesenB(dieimSpMeic!herbe ndlic!heResourceistbereitsandenBildsc!hirm6angepat),}allerdingsEaufdengleic!henPlatzderdargestelltenResource,so6dak!einzusW^Í䩍aytzlicherSpMeicherplatzgebrauchtwird. ߴDieKonvertierungist6umk!ehrbar,6d.h.wenn SiedieDateiwiederzurW^ÍM䩍uVc!kkonvertieren,erhalten Sie6wiederվdasAusgangsformat.kTerotzdemempfehleic!hIhnen,dieKonvertierung6n!ur>1mitKopienderOriginal-ResourcedurchzufW^ÍM䩍uVhren,d$dabMeieinemeventuel-6len Sc!hreibfehlerIhreDatenindenewigenJagdgrW^ÍM䩍uVndenlandenkW^Í䩍oynnen(die6k!onvertiertefDateiwirdaufdenPlatzderAusgangsdateizurW^ÍM䩍uVc!kgeschriebMen). ~(@čKU63 5D!AeTEIFORMATE11`KU63.3TRasterbilddateien(.IMG,XIMG,.IFF)6DasGEM-Image-Feormat(.IMG)zeic!hnetsichdurchseinegroeFlexibilitW^Í䩍ayt 6undYgdaraufbMeruhendeP!ortabilitW^Í䩍aytaus.3ImGegensatzzudenanderenaufdem6STv!erwendetenGra kformatenistesw!ederanirgendeineBildschirm-noMch6an]eineFearbau W^Í䩍oysunggebunden.gDiesevdDariablenP!arametersindu.a.imKopf6einerIMG-Dateifestgehalten.&4EineIMG-DateiliegtimmerimIMotorola-6Feormatv!or,sodaunterMS-DOSeineentsprechendeAnpassungbMeimLaden6undxSpMeic!hernnW^Í䩍oytigist.5FW^ÍM䩍uVrnW^Í䩍ahereInformationenempfehleic!hwiederdas6GEM-Pro -Buc!hfvonGei/Gei.6Mit4I1stGuidekW^Í䩍oynnenSien!unbMeientsprechenderGerW^Í䩍ayte-Ausstattungdievolle6FearbMenprac!htxnahezubeliebiggroerIMG-Bildergenieen.&Zw!eiBesonderhei-6tenfgilteshierzubMeac!hten.6Die!PersteBesonderheitergibtsic!heinfachausderTeatsache,;dadieAnzahlder6FearbMebenen,ujausLdenensic!hdieAnzahldermW^Í䩍oyglichenFearbindizesergibt,ujbMei6derJIMG-Dateiunddemangesc!hlossenenBildschirmnichtW^Í䩍u `+bMereinzustimmen6brauc!hen.EineIMG-Gra kmit4FearbMebenen(16Farbindizes)kdDannaufeinem6MonoMc!hrom-MonitoreyschwerlichihreFearbMenprachtzeigen. UmgekehrtkdDann6manauseinermonoMc!hromenGra kauchbMeimbuntestenFearbmonitornicht6mehrfals2FearbMenherbeizaubern.6Essindn!un2AusnahmefW^Í䩍ayllezuunterscheiden. #IstdieAnzahlderIMG-6FearbMebenenkleineralsdiedesBildsc!hirms,sowerdendiefehlendenEbMenen6soGerw!eitert,{>dadieresultierendenFearbindizeseinanderentsprechen. Im6umgek!ehrtencFeallwerdendieW^Íf䩍u xbMerzW^Í䩍ayhligenFearbebeneneinfac!hzyklischden6v!orhandenenW^Í'䩍demICommodore*AmigaeingefW^ÍM䩍uVhrteInterpchangeFileF)ormat>(.IFF).Die-6sesistinseinerFlexibilitW^Í䩍aytmitdem.IMG-Feormatv!ergleichbar,wobMeisichne-6bMenwBitmapsauc!hnoc!handereDatenwiezumBeispielSoundsspeic!hernlassen.6I1stGuideOun!terstW^ÍM䩍uVtzthierdasstandardmW^Í䩍ayigeILBM-Feormat(InterlepavedBit-6maps).w?Auerdem.erlaubtdasIFF-FeormatstandardmW^Í䩍ayigdieAbspMeic!herung6v!onRFearbpaletten,cOderenManipulationW^Í䩍a$hnlichwiebMeimIMG-FeormatmitI1st-6GuidefmW^Í䩍oyglic!hist.v6Weer pjetztv!erlangt,'3ich psolledoMc!hauchdiediversenaufdemST V(leidernoMch)6v!erbreitetenFeormatewieIScreen,Degas,StEadundCo.unterstW^ÍM䩍uVtzen,wstW^Í䩍oyt6bMeimirauftaubeOhren.՜Hierv!erweiseichaufentsprechendeKonvertierungs-6programme(z.B.IGemViewv!onDieterFiebMelkorn{einbMemerkenswertesPro-6gramm,daseineVielzahlv!onBildformatenindasallumfassendeXIMG-Feormat6w!andelnkdDannunddabMeiauchFearbMeninGraurasterumrechnet!).NlEinFeormat6m!uGschonmindestensdieFlexibilitW^Í䩍aytdesIMG-bzw.IFF-FeormatsbMesitzen,6umfv!onI1stGuidebMerW^ÍM䩍uVcksichtigtzuwerden.&a63.4TMetadateien(.GEM)ۍ6MetadateienlsindGra k!en,ݭdiealsFeolgevonVDI-BefehlengespMeichertsind.6Der>Veorteilsolc!herobjektorientierterGra kenbMestehtdarin,edasieinjeder6Au W^Í䩍oysung˵desAusgabMegerW^Í䩍ates(Druc!ker, Bildschirm˵usw.)Moptimaldargestellt6w!erden{4kW^Í䩍oynnen.\HDaMetadateienimmerimIIntel-Feormatvorliegen,hmW^ÍM䩍uVssen6sieaufdemSTbMeimLadenundSpeic!hernentsprechendumgewandeltwerden2.6NW^Í䩍ayheres, ndenSieimGEM-Pro -Buc!hvonGei/Gei.YI1stGuideunterstW^ÍM䩍uVtzt6Metadateienso!wohlimRC-alsauchimNDC-KoMordinatensystem.{Nachdem6Laden`\wirddieGra kinihrerOriginalgrW^Í䩍oyeaufdemBildsc!hirmdargestellt.6Dazuw!erdendieParameterimKopfderMetadateisowiedieIOpen?W=orkstEa-6tion7P!arameterdesVDIfW^ÍM䩍uVrdenBildschirmausgewertet.xWeahlweisekdDanndann6dieGra kmitHilfedesKlic!k-Popup-MenW^ÍM䩍uVsindasaktuelleFeenstereingepasst6w!erden.v6FW^ÍM䩍uVr jedeeingeleseneMetadateiwirdv!onI1stGuideimGegensatzzudenan-6deren DateiformateneineeigenevirtuelleWeorkstationfW^ÍM䩍uVrdenBildsc!hirmbMeim6VDIgeW^Í䩍oy net(undbMeimSc!hlieendesFeensterswiederfreigegeben). Damit6wirdv!erhindert,՟daetwaAttributefW^ÍM䩍uVrdieTeextdarstellunginanderenFen-6stern4v!erW^Í䩍ayndertwerden.SomitbrauchendiesenichtstW^Í䩍ayndigneugesetztwer-6den.Auerdem8+w!erdenbMeimV^Í?O q neneinerMetadateivonI1stGuideeventuelle6ffff1 L͍ {-=2aBeimTSpAeic9hernerledigtdiesnormalerweisederGDOS-Meta le-T:reibAer.@čKU63 5D!AeTEIFORMATE14`KU6zusW^Í䩍aytzlic!he GDOS-ZeichensW^Í䩍atze geladenundbMeimSc!hlieenwiederfreigege- 6bMenIO(beimIA tEariSTI%natW^ÍM䩍uVrlic!hnurdann,r wenneinGDOSI%geladenist).ƘDas6Bit-Image-FlagimKopfderMetadateiwirdv!onI1stGuide(noMch)nichtaus-6gew!ertet,sodaMetadateienmiteingebundenenBit-ImagesnichtunterstW^ÍM䩍uVtzt6w!erden.NAllerdings6gibteseineAusnahme.DieApplikdDationIGempEaintun!ter6MS-DOS,{so!wie,derIEasyDraw-SchargeraufdemIA tEariSTerzeugenzuje-6der}IMG-DateinoMc!heinezusW^Í䩍aytzlicheGEM-Metadatei,dienurdenVDI-Befehl6vff[bitff[image/mitdenen!tsprechenden/ParameternenthW^Í䩍aylt. wFindetI1stGuide6n!unalserstenVDI-BefehlineinerMetadateidiesenvff[bitff[imageҡ-Befehlvor,=so6wirdmderDateinamederzugehW^Í䩍oyrigenIMG-Dateiausgew!ertetundanschlieend6indieIMG-Laderoutinev!erzweigt,gsodadanndieDarstellunggenauwiebMeim6IMG-Feormat;erfolgt.\DiezusW^Í䩍aytzlic!henParametervonvff[bitff[image;(Seitenmae6undfAusric!htung)werdendabMeinichtbMerW^ÍM䩍uVcksichtigt.v6Wird9inderMetadateidieVDI-Feunktionvsff[cpolorbMen!utzt,OUsokdDanndieFarbpa-6lette,wiefsc!honbMeimIMG-FeormaterwW^Í䩍ayhnt,neueingestelltwerden.2Dieswird6v!on~I1stGuide(noMch)nichterkdDannt,sodadieEinstellungsichsofortaufden6ganzenfBildsc!hirmauswirkt.&a63.5TSoundsampledateien(.SAM,.SND)ۍ6I1stGuideBkdDanndigitalisierteSounddatenmit8BitAu W^Í䩍oysungaufjedemnor-6malen>ST>abspielen,e aufSTEs/TTsw!ahlweise>auchimDMA-MoMde.eDigital-6soundsermW^Í䩍oyglic!hendieWiedergabMebeliebigernatW^ÍM䩍uVrlic!herodersyn!thetischer6KlW^Í䩍aynge,wie^siebMeispielsw!eisemiteinemSoundsampleraufgenommenbzw.хer-6zeugtfw!erdenkW^Í䩍oynnen.v6Da"usic!ho enbarleiderfW^ÍM䩍uVrdigitaleSounddateiennoMchkeinverbreitetesStan-6dardformatdurc!hgesetzthat,hwerdenzurZeitnurbMestimmte,hdurchverschie-6denezST-Programmev!erwendetezFeormateun!terstW^ÍM䩍uVtzt._DerAufbauvon8-Bit-6SampledateienistimGrunderec!hteinfach,GdajedemSamplewerteinBytein6derDateien!tspricht.eUnterschiedebMeginnenallerdingssc!honbeiderIn!terpre-6tationdesWeertebMereic!heseinesSamplewertes:von0bis255oMdervon-128bis6+127.Sehr nwic!htigistdieAngabMedersogenanntenSamplerate,'0danurdann6derfSoundmitderric!htigenfFerequenzabgespieltw!erdenkdDann.v6I1stGuideun!terstW^ÍM䩍uVtzt.SAM-Dateien,nwiesiebMeidenProgrammenISound-6Machine*undISoundMerlinv!erwendet*undbMeispielsw!eiseauchvonderDa-6ten!bank_IPhoenixunterstW^ÍM䩍uVtztwerden.!Diesesindmiteinemdeneigentlichen6Sounddatenrv!orangehendenHeaderversehen,derdurcheineeindeutigeKen-6n!ungeinenSchluaufdenWeertebMereichzulW^Í䩍aytundweiterhineinMafW^ÍM䩍uVrdie6SamplerateVen!thW^Í䩍aylt,&sodaI1stGuidedieseSampleskorrektwiedergebMenkdDann.^@čKU63 5D!AeTEIFORMATE15`KU6SinddieseDatennic!htverfW^ÍM䩍uVgbar,4sowirdvoneinemWeertebMereichvon0-255 6und einerSampleratev!on7000Hertzausgegangen. QDamitwerdenz.B.die6.SND-DateienfdesSpielsIEspritk!orrektabgespielt.6In*jedemFealllW^Í䩍aytsic!hdieAbspiel-FrequenzimRahmenderHardw!aremW^Í䩍oyglich-6k!eiten)LbMeliebigeinstellen,Jd.h.fbeimnormalenIn!terruptsoundsehrfein,Jbeim6DMA-Sounddagegensehrgrob(6258,12517,25033oMder50066Hz).>DerDMA-6Soundewiederumhat,fallsv!erfW^ÍM䩍uVgbar,denVeorteil,daerk!eineCPU-Rechenzeit6k!ostet.ADerInterruptsounddagegen`frit'mitzunehmenderFerequenzimmer6mehrnwRec!henzeit.6DieObMergrenzefW^ÍM䩍uVrdieFerequenzistdabeiv!onverschiede-6nenFeaktorenwieCPU-Takt,[Cac!hesusw.\abhW^Í䩍ayngig.Aufeinem`ungetunten'68-MHz-STkdDannmanbMei20kHzsc!hondeutliche`ZeitlupMene ekte'beobac!h-6ten,͌undŸvielhW^Í䩍oyhersolltemandieFerequenzauc!hnichtwW^Í䩍ayhlen,͌daessonstzu6In!terruptproblemenfkommt.6BeiCDMA-Sound-fW^Í䩍ayhigenRec!hnern(STE/TT):kW^Í䩍onnenLautstW^Í䩍ark!e,zHW^Í䩍ohenund6TiefenW^Ík䩍u 3TbMerdasSOUND.CPX-ModuldesmodularenKon!trollfeldesvonAtariein-6gestelltsw!erden,}JwassowohldenDMA-SoundalsauchdenInterruptsoundent-6sprec!hendfbMeein ut.6WeerSamplesmitanderenalsdenangegebMenenStandarddatenmitI1stGuide6abspielen`will,(solltesic!haneinesder.SAM-Feormatehalten,alsodenSam-6pledaten*einenen!tsprechenden*Headerv!oransetzen,KderdiebMenW^Í䩍oytigtenDaten6zurK}VeerfW^ÍM䩍uVgungstellt.DazukdDannmansic!himQuelltextSOUND.CKfvonI1stView6ansc!hauen,wied{sichI1stGuide/1stViewdieentsprechendenInformationen6v!erscha en.6ImFeensterstelltI1stGuidedieSample-Kurv!edar,woMdurchmaneingenaues6`Bild'desSampleserhW^Í䩍aylt.Sosindz.B.V^Í<?U ;bMersteuerungenrec!htdeutlichzuerken-6nen. KleineLinienfehlerbMeimScrollen(z.B.fehlendeLinienstW^ÍM䩍uVc!ke)sinddurc!h6denClipping-Algorithm!usdesVDIbMedingt(fW^ÍM䩍uVrExperten:Cohen-Sutherland-6Clipping)6Sundnic!ht6SohnegrW^Í䩍oyerenAufw!andvermeidbar.DieEinpassungins6FeensterkdDannbMeigroenSamplesrec!htlangedauern,:%unddieDarstellungfunk-6tioniertbgegen!wW^Í䩍ayrtigauchnurdannkorrekt,wennderSamplenichtgrW^Í䩍oyerals6et!wafeinMegab!yteist.!63.6TDerDump-Mo`dus6HW^Í䩍ayltimanwW^Í䩍ahrendderAn!wahliderDatei(en)dieIControl-undIAlEternate-6TeastegedrW^ÍM䩍uVc!kt,solW^Í䩍aydtI1stGuidedieDatei(en)inFormeinesHex-/ASCIMI-6Dumps.'DabMeiEw!erdenausnahmslosalFleZeichendirektangezeigt,d.h.'eswird6k!einZeicheninterpretiert.{qSicherheitshalbMerqBfragtI1stGuidenoc!hmal6nac!h.)3@čKU66 5REBUILD-FUNKTIONL21`KU66NRebuild-Funktion!덑6Weenn6nSieeineneueAn!wendung6nstartenoMderdieaktuellev!erlassen,LsowirdIhr 6aufgebautes Systemv!onInfo-FeensternnatW^ÍM䩍uVrlichW^ÍO䩍u abMerschrieben.Ein besonderes6FeeaturedesProgrammsistjedoMc!h,daesdiesoW^Í䩍u obeinFeensterrpebuildetwerdenkdDann,3>bMenutztI1st-6GuidePeinev!onAtaridokumentierteSystemvdDariable,dieaufdenaktuellen6GEMDOS-ProzeOzeigt(un!terMSDOSwirddazueineFeunktionnamensget6PSPibMen!utzt). )DieserZeigeraufdenaktuellenProze-Descriptorwirdnun6bMeidjedemLadeneinerDateiabgefragtundzudenFeensterdatenmitgesic!hert.6FeallsEn!uneineRebuild-Situationeintritt,mfragtI1stGuidedenZeigeraufden6aktuellenProze-Descriptorerneutabundv!ergleichtdiesenWeertmitdemge-6sic!herten.tBei؜einerV^Í7?U bMereinstimmungkdDannnundasFeensterrpebuildetwerden,6sonst7Onic!ht. ZusW^Í䩍aytzlichwirddergesicherteWeertnoMchmitdenWeertender6P!arent-Proze-Zeigerverglichen,DdaauchundgeradeindiesemFealleinRe-6build_mW^Í䩍oyglic!hist.gDiesistmW^Í䩍oglic!h,dadieProze-Descriptorennichtsanderes6alsw!erdensovonI1stGuideselbstvorgenommen.Q`StellenSiedenSc!halteraufCALCLOCK,sowirdstattdesseneineNach-Q`ric!htganeinICalclock-Accessorygesc!hickt,welchesgdanndieAusgabMeW^ÍQ䩍Q`uWuZbMernimm!t.DZVeorsicht:Diescistn!urbeiASCII-Teextdateiensinn!voll!DZAuchQ`hierbMei`istesmW^Í䩍oyglic!h,durch`zusW^Í䩍atzliches`GedrW^ÍM䩍uVckthaltenvonIL.Shift-Q`AlEternatefjew!eilsdiealternativeFeormanzuwW^Í䩍ayhlen.K@čKU68 5GRENZEN$-d23`KU6T\extfontt-Einstellung2Normal/VAiffFILE:;Steh!t\dieserSchalteraufNor- Q`mal,so%wirdbMeimLadeneinerTeextdateiimmerderinI1stGuideaktuelleQ`Feon!tCverwendet.StellenSiedenSchalteraufVȈA/ffH'FILE,sowirdbMeijedemV^ÍR\?Q`OYJ neneinesTeextfenstersautomatisc!hderFon!tW^Í 䩍u WbMerdasVȈA-ProtokollQ`erfragtxundeingestellt,fallseinen!tsprechendesxProgrammaktivist(z.B.Q`IGemini).O̍6DoppYelklictk-Standard2NeuesF\enster/E;ōU berscthreibenc@steh!tAzunW^Í䩍aychstQ`auf=Neues6rF)enster, xd.h.zbMeimDoppelklic!kaufeinKeywordwirdeinneuesQ`Feenster}geW^Í䩍oy net,0Bfallsnic!ht}eineIShift-,IAlEternate-}oMderIControl-Q`TeastegedrW^ÍM䩍uVc!ktist.e)StehtderSchalteraufV^ÍqJ?U 2bperschreiben,soistesgenauQ`andersherum.AuerdemW^Í䩍andertsic!hdadurchdieBedeutungdesFeenster-Q`Sc!hlieknopfes.?ErbMewirktdanndasZurW^ÍM䩍uVckgehenimInfopfad(entsprichtQ`IUndo,9Esc)W^Í䩍a |hnlic!hwiebMeiVeerzeichnishierarchienimDesktop.MW^Í䩍oychteQ`manh\trotzdemdasFeenstersc!hlieen,sokdDannmanzusW^Í䩍aytzlichdierechteQ`MaustastefgedrW^ÍM䩍uVc!kthalten.O̍6Die2Indexdatei3kdDann#indemen!tsprechenden#TeextfeldeingetragenoMderperQ`Datei-Ausw!ahl-BoxfgewW^Í䩍ayhltw!erden(ButtonIFsel).ł6ZusW^Í䩍aytzlic!hkW^Í䩍onnenSieP!arameterfW^ÍM䩍uVrdieGerW^Í䩍ateausgabMefestlegen,diesic!hweit-6gehendfselbsterklW^Í䩍ayren(sollten).6BeimSic!hernwerdennebMendenangegebenenP!arameternnoc!hdieaktuelle6FeensterpMositiono(wirddannbeimnW^Í䩍ayc!hstenV^Í?O  nendeserstenFeensterswieder6v!erwendet)IsowiederaktuelleingestellteTeextfontgespMeichert!~DieFeensterkoMor-6dinatenw!erdendabMeiinPromillederaktuellenBildschirmausmaegespMeichert,6sofdadieVeerhW^Í䩍ayltnissebMeiv!erschiedenenfAu W^Í䩍osungengleic!hsind.6Inderrec!htenunterenEckederKon gurationsbMoxwirddergrW^Í䩍oyteverfW^ÍM䩍uVgbare6SpMeic!herblock(\MEM:")sowiedieGesamtsummeallerfreienSpMeicherblW^Í䩍oycke6angezeigtB(\TOT:").pAnderDi erenzbMeiderWeerteisteineSpeic!herfragmen-6tierungferk!ennbar.(I068NGrenzenL6F\enster:goI1stGuide kdDanntheoretisc!hbiszu32767Feensterverwalten.DiesQ`en!tsprichtt>derAnzahldergW^ÍM䩍uVltigenWindo!w-Handles.%WeennSiemitTOSQ`1.04&UarbMeitenunddasProgrammIWinx8 Yv!onMartinOsiekdDabesitzen,Q`kW^Í䩍oynnenfSiebiszu127Feensterun!terI1stGuideverwenden(auchIGeminiQ`k!ommt-=mitdieserFeenster utzurec!ht).zUnter-=MultiTOS-konnteichkeineQ`Besc!hrW^Í䩍aynkungfdero enenFeensterfeststellen.6=ff1 L͍ {-=8aDiesisteinP9atchandenF:ensterroutinendesGEM,ummehrals7Fensterv9erwenden zuTk(?2onnen\@čKU69 51STfINDEX24`KU6T\extdateien|w!erdenmitbiszu32767Zeilenmitmaximal512Zeichenun- Q`terstW^ÍM䩍uVtzt.6PfadnamenyldW^ÍM䩍uVrfenfmaximal127Zeic!henlangsein.6Argumenttey kW^Í䩍oynnenjso!wohlW^Í䩍u ,bMerVAffs#STARTjbalsauchbMeiProgrammstartinQ`bMeliebiger?Anzahlv!erarbeitetw!erden.BeiProgrammstartwirddabeizu-Q`erst*nac!hxArgunddannnachARGVgefahndet.)ErstwenndiesnichtsQ`fruc!htet,wirdIdie(bMesc!hrW^Í䩍aynkte)Standard-IGemdos-KommandozeileinQ`derBasepageausgew!ertet. ~_VeonmirgibtesdazueinenmoMdi ziertenQ`StartcoMde,dder1dasScannenW^Í䩍u bernimm!tundarpgcundargvfW^ÍM䩍uVrmainen!t-Q`sprec!hend5setzt,sodakeineQuelltext-V^Í^h?A6gnderungnotwendigist(liegtQ`auc!hfalsSourceDDSTART.SbMei).6V\erzwteigungenݚkW^Í䩍oynnenOnic!htunbMegrenztgeschachteltwerden. %ZujedemQ`Feensterfw!erdendreibMeschrW^Í䩍aynkteBu erangelegt:^$!", 3 cmsy10iw128fBytefW^ÍM䩍uVrdenPfadnamen^iw128fBytefW^ÍM䩍uVrdieSc!hlW^ÍM䩍usselkettef(Feenstername)^iw256hByteHistory-Bu er(zumAblegenv!onInformationenfW^ÍM䩍uVr'siwZurW^ÍM䩍uVc!kverfolgenfdesInfopfades)Q`10Veersc!hachtelungensolltennormalerweisedrinsein,leiderwirddasV^ÍRl?Q`UYkbMerlaufenderBu ernoc!hnichtgecheckt,*sodamanesmitdemVeer-Q`zw!eigen`nichtallzusehrW^Ík䩍u ubMertreibensollte. LBeiGelegenheitw!erdeichQ`natW^ÍM䩍uVrlic!hnoMcheinenCheckeinbauenoMderabergleic!hzudynamischenQ`Bu ernW^ÍF䩍fu bMergehen.+69N1stIndex!g61STINDEX.TTP ist!@einkleines,abMerfeinesHilfsprogrammzurautomatisc!hen6Generierung-v!onIndexdateienausumfangreichenInformationssystemen(z.B.6demfbMeiliegenden).v6DerfAufrufistwiefolgt:#vQ`1stindex[Pfadname][>output]6WirdfI1stIndexohneP!arameteraufgerufen,soerhW^Í䩍ayltmandiesenHinweis.6AlswPfadnameistdabMeidieWeurzeldateieinesInformationssystemsanzugeben, 6d.h. reine-dDatei,#diezuallenw!eiterenDateiendesSystems(auchindirekt)m/@čKU610 5NEUfINVERSIONs25`KU6v!erzweigt. Beidemhierv!orliegendenInfosystemwW^Í䩍ayredasetwadieDatei 61STGUIDE.HLPf(mW^Í䩍oyglic!hwW^Í䩍arenauc!hGEMoMderTOS).v6Wirdnic!htsweiterangegebMen,rsowirddieIndex-ListeaufdenBildschirm(Stan-6dardausgabMe)ausgegeben.DieErstellungdieserIndexlisteistnic!htganztrivial,6davKzirkulW^Í䩍ayreBezW^ÍM䩍uVgeauftretenkW^Í䩍onnen,dieen!tsprechendvKerkdDanntwerdenmW^ÍM䩍uVssen.6WeollenRFSien!uneineIndexdateierstellen,csobrauchenSienurdieStandardaus-6gabMecineineen!tsprechendecDateiumzuleitendurc!hAngabedes\>"gefolgtv!om6en!tsprechendenbDateinamen(z.B.un!terIGemini/Mupfel).XDaI1stIndexmit6IPcxstEartdgelinktwurde,funktioniertdiessogarimnormalenDesktop(abge-6sehenfv!onderdoMchsehrbMeschrW^Í䩍aynktenKommandozeileimDialog).6ZurVeerw!endunginI1stGuidemudieIndexdateiindemselbMenVeerzeichnis6liegenwiedieangegebMeneWeurzeldatei.MW^Í䩍oyc!htemanSc!hlW^ÍM䩍uVsselwW^Í䩍orterW^ÍE䩍u ^bMerdie6ACffs#HELP-Messagev!onI1stGuidesuchenlassen,somuderPfaddieserIndex-6dateifinI1stGuidek!on guriertwerden(sieheKapitel7).+610WNeuinVersion!g6Hinweis: DaseaktuelleVeersionsdatumIhresI1stGuideerfahrenSiedurc!h6DrW^ÍM䩍uVc!kenfvonICtrl-A.6Apr2291992: vFlQ`AnpassunganA!tari-MultiTOS:MankdDanndortauchinhinteren,mW^Í䩍oygli-Q`c!herweisevteilsv!erdeckten,Feensternvscrollen. ODamitk!onntevichnichtQ`rec!hnen,esgab`BildschirmmW^ÍM䩍uVll'. 8BehobMen.EserfolgtjetztechtesQ`ScrollinginjedemElemen!tderRechteckliste!iLeiderscheintabMerdasQ`Ec!htzeit-Scrollingfnichtmehrzufunktionieren.Abwarten...FlQ`\I1stGuide"; oMder\I1stHear",`4dasisthierdieFerage!I1stGuidespieltQ`jetzts8-Bit-Soundsample-DateienaufallenSTsab(in!terruptgesteuertimQ`Hin!tergrund).nWeer,einenDMA-Sound-fW^Í䩍ayhigenAtaribMesitzt(STE/TT),Q`kdDannWdasausn!utzenunddamitdiesonstbMenW^Í䩍oytigteRechenzeiteinsparenQ`(allerdingsC_aufKosteneinereingesc!hrW^Í䩍aynktenFerequenzwahl). DieFere-Q`quenzBistjew!eilsimRahmenderHardwaremW^Í䩍oyglichkeitenfreieinstellbar,Q`und#imFeensterwirddieSample-Kurv!edargestellt.VmNW^Í䩍ayheres ndetmanQ`infKapitel3.5.FlQ`\Dateie(en)]neuladen"...InderFileselectbMo!xkW^Í䩍oynnenjetztimDateina-Q`menfeld,?WildcardsangegebMenw!erden(Beispiel:\*.DOC", lW^Í䩍aydtalle.DOC-Q`DateienfdesVeerzeic!hnisses).(7UPlW^Í䩍aytgrW^ÍM䩍uVen...)y@čKU610 5NEUfINVERSIONs26`KUFlQ``Umstieg'aufIPure-C.DieTT-RAM-Flagssinddadurc!hautomatisch Q`gleic!hrichtiggesetzt,ܢsodaesdortgleichrichtig`abgeht'.nAbMerVeor-Q`sic!htХbMeiSamplesimDMA-Mode!\Weerdasun!bedingtn!utzenmW^Í䩍oychte,Q`m!uXvorerstnoMchselbMerfW^ÍM䩍uVreinentsprechendgesetztesFlag(MalloMcsausQ`ST-RAM)EimProgramm-Headersorgen.,UIc!hversprecheAbhilfeinderQ`nW^Í䩍ayc!hstenfVeersion(BenutzungvonMxalloMc)...nFlQ`GeditherteFearbbildersolltenjetzt`natW^ÍM䩍uVrlic!her'erscheinen,daeineausQ`derFeernseh!technikbMekdDannteUmrechnungsformel(Y-Signal)fW^ÍM䩍uVrdieRGB-Q`Grau!wert-Konvertierungverwendetwird.|(DankauchanDieter,dermichQ`darW^ÍM䩍uVbMerP`aufgeklW^Í䩍ayrt'hat...)lMansc!hauesichmalCOLORS.IMGPan,{dannQ`wirdfdasdeutlic!h.FlQ`Bei qspMeziellenMeta lesk!onnte qesv!orkommen,$da qI1stGuideW^ÍYQ䩍u berseinQ`FeensterfhinausaufdenBildsc!hirmmalte.BehobMen.FlQ`\..\"-AngabMenGbeiVeerzw!eigungenwerdenjetztdurchI1stGuideauto-Q`matisc!hfverkW^ÍM䩍uVrzt.FlQ`Klic!kt1manineinenTeextmitVerzw!eigungswW^Í䩍oyrtern,HsowirdjetzterstmalQ`gec!heckt, zob?daruntereinSchlW^ÍM䩍uVsselwortliegtunddiesesdannerwartungs-Q`gemW^Í䩍ayfselektiert,anstattdasP!opupzuW^Í䩍o nen.(GuterTip,Erik!)FlQ`I1stGuidehW^Í䩍ortjetztauc!haufdenNamen.GTP~(bMeimSichernderKon-Q` guration).FlQ`ZusW^Í䩍aytzlic!heInformationsanzeigeinPopups:PixelbMeiImages,ZeilenzahlQ`bMeifTeexten.FlQ`1STVIEW.DVIwirdnic!htlW^Í䩍ayngerunterstW^ÍM䩍uVtzt->wenigerPlatz+einfachereQ`WeeitergabMef(+w!enigerArbeitfW^ÍM䩍uVrmic!h)6Dec2231991:FlQ`\Sag "niemalsnie!":In>bMestimm!tenFW^Í䩍ayllenkonntedieinderletztenVeer- Q`siondeingefW^ÍM䩍uVhrteneueRebuild-MethoMdedoc!hnoc!hfehlschlagen.DieIdeeQ`w!arAschongut,dieUmsetzungleidermangelhaft. Ichho e(stark...),Q`dafjetztalleProblemebMeseitigtsind.FlQ`UmAbhW^Í䩍ayngigk!eitenvonderFearbau W^Í䩍oysungzuvermeiden,mutedieIn-Q`terpretationTdesXIMG-Feormats(ReihenfolgederFarbindizes)geW^Í䩍ayndertQ`w!erden(inAbstimmungmitdemGEMVIEW-AutorDieterFiebMelkorn).Q`Alte7XIMG-Dateiensolltenwiefolgttransformiertw!erden::BildeinladenQ`mit_gedrW^ÍM䩍uVc!kterrechterShifttaste, OriginalpaletteanwW^Í䩍ayhlen, FearbpaletteQ`sic!herniohnegedrW^ÍM䩍uVckterechteShifttaste(funktioniertbMeiBildernbis16Q`FearbMenfauc!hinMonoc!hrom!).NW^Í䩍ayheresstehtin3.3.@čKU611 5REFERENZ27`KUFlQ`ProblemebMeimKon gurierenun!terLpet'emFly(FereewarevonOliver Q`Sc!heel);umgangensowieTeastaturbMelegungangepat. i(Man iegthaltQ`nic!htfmehrohne...)FlQ`I1stGuide;kdDannjetztmehrseitigeMeta lesk!orrektdarstellen(Seitenvor-Q`sc!hubmitvffs#updwkundvffsclrwk). EskdDannseiten!weisegeblW^Í䩍ayttertundQ`gedruc!ktwerden.xIDerartigeMeta leskW^Í䩍oynnenvon7UPِabVeersion2.1Q`(liegtsmirderzeitalsBeta-Veersionv!or)ausbMeliebigenASCII-Dateiener-Q`zeugtfw!erden.Q`Bemerkung:DiesePFeunktionw!ar(pMerTastatur)imw!esentlichenPschoninQ`derfletztenVeersionv!erfW^ÍM䩍uVgbar(fW^ÍM䩍urTeestzw!ecke,fdaherundokumen!tiert).FlQ`WeennmanbMeiderAktivierungIControl-ShiftgedrW^ÍM䩍uVc!kthW^Í䩍aylt,wirdso-Q`fortfdieIndexdateigeladenundmankdDanneinenBegri ein!tippMen!FlQ`KeinӪNac!hlaufenmehrbMeimTeastatur-Scrollen(DankanMichaelfW^ÍM䩍uVrdieQ`elegan!tefMethoMde). v6Notv2241991:Q`Bezugsv!ersion. Q`SolltenvSieeinenoMc!hW^Í䩍a ltereVeersionbesitzen,lesenSieambestenQ`allesfnoMc!hmaldurch.+611WReferenz!g6ZunW^Í䩍ayc!hstw3mW^Í䩍ochtew3ichmichherzlichstbMeidenBrW^ÍM䩍uVdernGeifW^ÍM䩍urihrGEM-Pro -6Buc!h/obMedanken,ohnedasdiesesProjektkdDaummW^Í䩍oyglichgewesenwW^Í䩍ayre. xEin6w!eiterernDankgebW^ÍM䩍uVhrtStefanEissingundGereonSte ensfW^ÍM䩍urihrenk!ommuni-6kdDationsfreudigenvOundkaumWW^ÍM䩍uVnsc!heo enlassendenDesktopIGemini,dereine6bMequemeArbeitmitI1stGuideerstermW^Í䩍oyglic!ht.NichtzuletztgehtmeinDank6anYBorlandMW^ÍM䩍uVnc!henfW^ÍM䩍urihrek!onkurrenzloskomfortableundleistungsfW^Í䩍ayhige6IPurbo-C-Programmier-Umgebung.v6Bei^SI1stGuidehandeltessic!humSharpeware.Weenn^SIhnendiesesProgramm6gefW^Í䩍ayllt,Sie^esbMen!utzenundesIhnenhilft,sosolltenSiesic!hgegeneineUn-6terstW^ÍM䩍uVtzungv!onDMt20,-bMeiuntenstehenderAdresseregistrierenlassen.lSie6kW^Í䩍oynnenϖdannmitderZustellungeinesk!omplettenInfo-HypMertext-SystemsfW^ÍM䩍uVr6den_geplagtenST-C-ProgrammiererundnoMc!hgeplanterWeeiterentwicklungen6des>Programmsrec!hnen.EfAuerdemwerdeichmichdannbMemW^ÍM䩍uVhen,<4evt.Efvon6IhnenaufgespW^ÍM䩍uVrteBugszuen!tfernenundVeerbMesserungsvorschlW^Í䩍aygezubMerW^ÍM䩍uVck-6sic!htigen,fsofernSiemic!hdavonW^ÍF䩍u bMerzeugenkW^Í䩍oynnen.@čKU611 5REFERENZ28`KU6SiekW^Í䩍oynnendiesesProgrammbMedenk!enlosweitergebMen,NaberachtenSiebitte 6darauf,fdastetsalleDateienzusammenundun!verW^Í䩍ayndertfkopiertwerden.v6VielfErfolgbMeiderAn!wendungfdesProgrammswW^ÍM䩍uVnsc!htfIhnen#vQ`GuidofVeollbMedingQ`Leitergassef4/503Q`D-O-4020fHalle6Bankv!erbindung: vQ`GuidofVeollbMedingQ`Stadt-fu.Saalkreis-SparkdDasseHalleQ`Kto.486260725Q`Blz.800f53762Y;@9 K- cmcsc10J- cmcsc10I- 3 cmcsc10H-G cmcsc107"Vff cmbx100N cmbx12+XQ cmr12( 3 cmmi10"K`y 3 cmr10j cmti9o cmr9 |{Ycmr8Aacmr65*************************************** * ATARI ST/STE/MEGA STE/TT/FALCON * * * * - MIDI * * - MUZYCZNE * * - UZYTKI, DTP * * - GRAPHISC * * - GRY * * - DEMOSY, KODY ZRODLOWE * * i co ci na mysl przyjdzie * * prosto z Holandii * * * * KRATA & PASKUD * * Katowice sobota: Dom zwiazkow L1,L2 * * niedziela: Baildon 70,71 * * tel. (katowice) 87-94-32 * *************************************** *************************************** * ATARI ST/STE/MEGA STE/TT/FALCON * * * * - MIDI * * - MUZYCZNE * * - UZYTKI, DTP * * - GRAPHISC * * - GRY * * - DEMOSY, KODY ZRODLOWE * * i co ci na mysl przyjdzie * * prosto z Holandii * * * * KRATA & PASKUD * * Katowice sobota: Dom zwiazkow L1,L2 * * niedziela: Baildon 70,71 * * tel. (katowice) 87-94-32 * ***************************************