4IBM 8Dh >> FastCopy III << by Martin Backschat, Bergstr.16, 8071 Hepberg, West-Germany, Tel. 08456/5495 -- It's Freeware! -- (Greetings to all 'Masters Of Puppets')y` @`! #@o')+-/1 3@5`9=?A CE`GIKMQ S@oWY]_a c@e`gikmoq Ou`wy{} @o @ ` / @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @`/@`!Aa   !Aa!!#A%a'+-/1!3A5a79=?A!CEGIKMQUaWY[]_a!cAeagkmoq!sAuawy{}!Aa!Aa!Aa!Aa!Aaǁɡ!Aaׁ١!a!Aa" B b  b!!!!!"!""#B"%b"'")"+""#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$KO%Q"%SB%Ub%W%Y%[%]%_&a"&ceg&i&k&m&o'q"'sB'ub'w'y'{'}'b((((()")B)b)))))*"*B*b*****+"+B+b+++++` @`! #@o')+-/1 3@5`9=?A CE`GIKMQ S@oWY]_a c@e`gikmoq Ou`wy{} @o @ ` / @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @`/@`!Aa   !Aa!!#A%a'+-/1!3A5a79=?A!CEGIKMQUaWY[]_a!cAeagkmoq!sAuawy{}!Aa!Aa!Aa!Aa!Aaǁɡ!Aaׁ١!a!Aa" B b  b!!!!!"!""#B"%b"'")"+""#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$KO%Q"%SB%Ub%W%Y%[%]%_&a"&ceg&i&k&m&o'q"'sB'ub'w'y'{'}'b((((()")B)b)))))*"*B*b*****+"+B+b+++++ESSCD64A y`HSMODA06 `CLIPBRD !ZCONTROL023`ESSCODE INF1SSCODE RSC b` #SSCODE TXT @[EWS1 FLT KEWS2 FLT DEWS3 FLT UEWS4 FLT GOST120 FLT GEADME NEW ]-EM FLT =IMTEL FLT IUXFER20FLT MFILE FLT MMITBIN FLT E. z`.. BITFTP FLT $S>ESS-CODEHYP ]TNESS-CODEREF ]hESSCODE PRG `iESSCODE RSC b` #ESSCODE TXT @[NEWS1 FLT KNEWS2 FLT DNEWS3 FLT UNEWS4 FLT GPOST120 FLT GREADME NEW ]-REM FLT  =SIMTEL FLT  IUUXFER20FLT MXFILE FLT MXMITBIN FLT EESSCODE INF C`.. `.. DRVIN PRG OMFP PRG BzBMFP_BASTPRG dzB MFP_FALCPRG WzBMFP_TT PRG LzBESCC PRG gP @?g @@g @Ag zN0@BFeydH``H$y$r$j"X0NLNs0@BFeydH``H$y"rB)$r$jNLNs0@BFeydH``H$y$r$j "PNLNs0@BFeXydNH``H$y$r$j "PNLNsHpp$X6a`gL` J&yJ"[gaJk e`QJyg pf$S$jNJf0 H@BFLNsp Uf. :f( \f"p Dfp Efp Vf \Nu XfHpx$X(Pagp`^v J&yJ"[g aJj p`BJf& epJg.Q"C ydB$df#""pLNsHpp$PaBgL` J&yJ"[gatJk e`QJyg pfL$S$j NJf>B SBCJf$"رe# ydPeLNspR1 ae zb 0 ae zb f Jgf`pNu&& & ./$@$ Ppb*$$رeXZ $ $B$!`!opLNu /g @p$<bbEH%x* %x& <!"HQ " "B"!*!1AY&&! `XBRACKJRB!*!&NhAruNs cONfigER FASTINT: Soll die Timerinterruptmodifikation fr 57600Bd auf 8MHz-STs installiert werden? (Bei TT/Falcon kann es auch helfen.) EXOPEN: Sollen sich Gerte nur einmal ffnen lassen?   > .* $L$(&2 j ( 6LF,L0X""  f2$y$$$$$$SAl3`6 y " B b Nu/<NNX#6Hy T?<&NN\ y##"Hy ?<&NN\aInstalled Bg 9 &/?<1NA y `R` // 8g2 @ g,P _CPUf0 @e @(dNz@N{`xNq _ NuH@@8/rzzerzgH"z3zdz|zeJ9fPr8LNsT`H@8/ gj glrz2z*erz$gD"z3zdzz e&J9fPp g/BLNsP`Q gL`H@@8/rzzerzg"z3LNsT`8f6/r2:pzng&RAzber3ҺPÉ/"A"Ns"P `/r:?g Q/`.2: zg.J9f&RAz er3ҺÉ/"A"NsP `J8-Ns?8+9 0Ns9g g` Ns29yVHHNuArp2(hgRAher"P11AJ( gXJ(gR2(hdhh b>Q@|( gr8FNurg/FNuFA!NuA0Ar2(4(RABer"h1A@|J(j< ( c,8f,2(hgRABer/1AQFNueJ(gF2(hbBSAgNu29ybyWATHHNu of6 9"/k8 Cxa.Jk&$9# a\`p of9Nu@HA|AH(2/ Ab4JCx# a4/k)4/ k+4/ k-4/k'4/ Bbft9g>By<8 f g/`JA! (! 0!"$!.,!D8 888HAFNuH<vxz2<<$ c*1  ged&8YAd JDk 1@ 2ILt@|8ˆFNut@|8ˆFNuap"` kg* e*p`tԸaLJg޴dp`$<`gBg29yg#a`p09ydyJ8-kRNuFMODEM1  0/</</<afO @|8JygFNu/$@$ Ppb*$$رeXZ $ $B$!`!opLNu /g @p$<bbEH%x* %x& <!"HQ " "B"!*!1AY&&! `XBRACKJRB!*!&Nr4gRBerNuj~K% `X,nK2hAruNs cONfigERRSVE: Soll der RSVE-Cookie installiert werden? HISP: Sollen 115200/57600/38400 Baud den Fcntl TIOC?BAUD bekannt sein? (Passiert bei RSVE =Ja automatisch, ist aber auch fr RS_Speed sinnvoll.) REPL: Falls Sie fr ein altes Programm die Baudraten 115200/57600/38400 noch auf andere Rsconf-Raten als 150/134/110 legen wollen, geben Sie jeweils zuerst die alte, dann die neue hohe Rate ein. 3 Umbelegungen sind mglich. DTR: Einstellung des DTR-Signals beim Treiberstart Ja = aktiv (wie bei TOS) Nein = inaktiv RBL: Einstellung der Empfangspuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534 TBL: Einstellung der Sendepuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534  9f.9Aa A aBg 9 (/?<1NA"< g b e2!y (ӹ (1AB0I1A A1@ NulV :6 &B rHN    <"V @L &fj 4er RSVE-Cookie installiert werden? HISP: Sollen 115200/57600/38400 Baud den Fcntl TIOC?BAUD bekannt sein? (Passiert bei RSVE =Ja automatisch, ist aber auch fr RS_Speed sinnvoll.) REPL: Falls Sie fr ein altes Programm die Baudraten 115200/57600/38400`` d// 8g2 @ g,P _CPUf0 @e @(dNz@N{`xNq _ NuH@@8rzz|erzvg>"zj3֒zbdzZz^eJ9f P8LNsT`H@8 gj glrzzerz gD"z3֒zdzze&J9fPpgBLNsP`QgL`H@@8rzzerzzg"zn3LNsT`8f6/r2:XzVg&RAzJer3Һ8É"A"Ns"P`/r:'g Q`.2:zg.J9f&RAzer3ҺÉ"A"NsP`J8Ns?890Ns9gg` Ns29ԲyVHHNuArp2(hgRAher"P11AJ( gLJ(gF2(hdhh b2Q@|( g8NurgFNuFA!NuA0Ar2(4(RABer"h1A@|J(j< ( c,8f,2(hgRABer1AQFNueJ(gF2(hbBSAgNu29ybyWATHHNu of6 9"/k, CVa"Jk$9# aP`p of9Nu@HA|AH(2/ Ab4JCV# a 4/k4/ k4/ k4/k4/ Bbft9g2By8 fg`JA! h! p!d!$l!:H8888HAFNuH<vxz2<<$ c*1  ged&8YAd JDk 1@ 2IL$@$ Ppb*$$رeXZ $ $B$!`!opLNu /g @p$<bbEH%x* %x& <!"HQ " "B"!*!1AY&&! `XBRACKJRB!*!&Nr4gRBerNu`tvK% `X,nK2hAruNs cONfigERxRSVE: Soll der RSVE-Cookie installiert werden? HISP: Sollen 115200/57600/38400 Baud den Fcntl TIOC?BAUD bekannt sein? (Passiert bei RSVE =Ja automatisch, ist aber auch fr RS_Speed sinnvoll.) REPL: Falls Sie fr ein altes Programm die Baudraten 115200/57600/38400 noch auf andere Rsconf-Raten als 150/134/110 legen wollen, geben Sie jeweils zuerst die alte, dann die neue hohe Rate ein. 3 Umbelegungen sind mglich. DTR: Einstellung des DTR-Signals beim Treiberstart Ja = aktiv (wie bei TOS) Nein = inaktiv RBL: Einstellung der Empfangspuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534 TBL: Einstellung der Sendepuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534  9$.9Aa A aBg 9 /?<1NA"< g b e2!y ӹ 1AB0I1A A1@ NulL :6 &BrJN    64^ @F &fj 4er RSVE-Cookie installiert werden? HISP: Sollen 115200/57600/38400 Baud den Fcntl TIOC?BAUD bekannt sein? (Passiert bei RSVE =Ja automatisch, ist aber auch fr RS_Speed sinnvoll.) REPL: Falls Sie fr ein altes Programm die Baudraten 115200/57600/38400 noch auf andere Rsconf-Raten als 150/134/110 legen wollen, geben`f` // 8g2 @ g,P _CPUf0 @e @(dNz@N{`xNq _ NuH@8/ gj glrzzerzgD"z3zdzze&J9,fP,p+g/B/LNsP-`Q-+gL`H@@8/rz&zerzg"z 3LNsT`8f6/r2:zg&RAzer3"ҺÉ/"A"Ns"P+`/r:g Q//`.2:zg.J9-f&RAzer3"Һ~É/"A"NsP+`J8-Ns?8+9*0Ns29yVHHNuArp2(hgRAher"P11AJ( gB68RrE4*2*jdBd /g(Ue R2*RABerQ5A/ a"_ NurE4*2*jbBUjrd /g*Ue j2*RABerQ5A/a,X Nu @Fgf @Fgz @Tg @Tg @Tg @Tg @Tg @Tg @TgF @TgT @Tg @Tg @Tgp`pNur29ydy"`r29"y$by Ujr"`-`-` j/ p/?$@$ Ppb*$$رeXZ $ $B$!`!opLNu /g @p$<bbEH%x* %x& <!"HQ " "B"!*!1AY&&! `XBRACKJRB!*!&Nr4gRBerNu\K% `X,nK2hAruNs cONfigER 4RSVE: Soll der RSVE-Cookie installiert werden? HISP: Sollen 115200/57600/38400 Baud den Fcntl TIOC?BAUD bekannt sein? (Passiert bei RSVE =Ja automatisch, ist aber auch fr RS_Speed sinnvoll.) REPL: Falls Sie fr ein altes Programm die Baudraten 115200/57600/38400 noch auf andere Rsconf-Raten als 150/134/110 legen wollen, geben Sie jeweils zuerst die alte, dann die neue hohe Rate ein. 3 Umbelegungen sind mglich. RBL: Einstellung der Empfangspuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534 TBL: Einstellung der Sendepuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534  9z.9Aa A aBg 9/?<1NA"< g b e2!yӹ1AB0I1A A1@ Nux :6rv&H`HN |   4Z @L &fj 4K% `X,nK2hAruNs cONfigER 4RSVE: Soll der RSVE-Cookie installiert werden? HISP: Sollen 115200/57600/38400 Baud den Fcntl TIOC?BAUD bekannt sein? (Passiert bei RSVE =Ja automatisch, ist aber auch fr RS_Speed sinnvoll.) REPL: Falls Sie fr ein altes Programm die Baudraten 115200/57600/38400 noch auf andere Rsconf-Raten als 150/134/110 legen wollen, geben Sie jeweils zuerst die alte, dann die neue hohe Rate ein. 3 Umbelegungen sind mglich. RBL: Einstellung der Empfangspuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534 TBL: Einstellung der Sendepuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534 `d` // 8g2 @ g,P _CPUf0 @e @(dNz@N{`xNq _ NuH@8 gj glrzzerzgD"z3zdzze&J9,fP,p+gB/LNsP-`Q-+gL`H@@8rz&zerzg"z 3LNsT`8f6/r2:zg&RAzer3"ҺÉ"A"Ns"P+`/r:g Q/`.2:zg.J9-f&RAzer3"Һ~É"A"NsP+`J8Ns?89*0Ns29yVHHNuArp2(hgRAher"P11AJ( gB6:RrE4*2*jdBd /g(Ue R2*RABerQ5A/ a"_ NurE4*2*jbBUjrd /g*Ue j2*RABerQ5A/a*X Nu @Fgf @Fgz @Tg @Tg @Tg @Tg @Tg @Tg @TgF @TgT @Tg @Tg @Tgp`pNur29ydy"`r29"y$by Ujr"``` j/ p/?$@$ Ppb*$$رeXZ $ $B$!`!opLNu /g @p$<bbEH%x* %x& <!"HQ " "B"!*!1AY&&! `XBRACKJRB!*!&Nr4gRBerNu\K% `X,nK2hAruNs cONfigER 2RSVE: Soll der RSVE-Cookie installiert werden? HISP: Sollen 115200/57600/38400 Baud den Fcntl TIOC?BAUD bekannt sein? (Passiert bei RSVE =Ja automatisch, ist aber auch fr RS_Speed sinnvoll.) REPL: Falls Sie fr ein altes Programm die Baudraten 115200/57600/38400 noch auf andere Rsconf-Raten als 150/134/110 legen wollen, geben Sie jeweils zuerst die alte, dann die neue hohe Rate ein. 3 Umbelegungen sind mglich. RBL: Einstellung der Empfangspuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534 TBL: Einstellung der Sendepuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534  9x.9Aa A aBg 9/?<1NA"< g b e2!yӹ1AB0I1A A1@ Nux :6rv&H`JN |   4V @L &fj 4K% `X,nK2hAruNs cONfigER 2RSVE: Soll der RSVE-Cookie installiert werden? HISP: Sollen 115200/57600/38400 Baud den Fcntl TIOC?BAUD bekannt sein? (Passiert bei RSVE =Ja automatisch, ist aber auch fr RS_Speed sinnvoll.) REPL: Falls Sie fr ein altes Programm die Baudraten 115200/57600/38400 noch auf andere Rsconf-Raten als 150/134/110 legen wollen, geben Sie jeweils zuerst die alte, dann die neue hohe Rate ein. 3 Umbelegungen sind mglich. RBL: Einstellung der Empfangspuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534 TBL: Einstellung der Sendepuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534 `"`// 8g2 @ g,P _CPUf0 @e @(dNz@N{`xNq _ NuH@r"z 82: 9 cf8f,8g$`(8g8g `8Ns 9 gH@r"zv@|8g2:RAzerzgl08:3 8W 9 f@zdzze0J9 f(P p9 fp: FLNu 9 XgH@r"zv@|8g2:RAzerzgl08:3 @8W 9 Xf@zdzze0J9 Vf(P Vp9 cfp: UFLNuA0A rh4(Ber"h1A@|8g@ ( c08g02(hgRABer1AJ8J8FNueJ(gF2(hbBSAgNu2:8z6bz,WATHHNuA rp2(hfa`RAher"P11AJ( gBJ(g<2(hdhh b(Q@|( gr(AFNur8gFNuFA!Nup2:~z|f a^zrfpNuA0A 8rh4(Ber"h1A@|8gR ( cB(+g08g:2(hgRABer1AJ8J8FNu8g`eJ(gF2(hbBSAgNu2:zbz~WATHHNuA 8rp2(hfa8`RAher"P11AJ( gLJ(gF2(hdhh b2Q@|( g"r(+fr(AFNur8gFNuFA!Nup2:Ʋzf azfpNuA 8E` A EHp of* ($"/k aJkv$($!@$ a`d of("`T(@H@(@2/ Ab4J!p $a|@4/ Bbft6K&h&0'p0'p0|rv(Jy g fv FĴ( gFB Bh|((+fA fg|`|!F2/kRAA` t*B#t(;`B|Nto (4B42/kt(gBFLNu` @AH<vxz2<<$c*0ged&8YAd JDk 0@2ILdy <"`r29 Ly Nby JUjr"`r@|9 U UF`r@|9 U UF`z j/ p/?9 Gg< GgHA\p0NqQJy!Pg  `, `8ApC\Q3@ZJngj. Gg(A :0 A n   J9f a.8MHz`0a"14745600HzAC E &G24رea installed.q (C) SWB Harun Scheutzow 1995-01-15 3 3LJ g j0 yf&ByHy?<&NN\Jyf #Jyf ABBJy tf9 Jy f9 UHy?<&NN\aJ9"g0a ** FEHLER: DRVIN nicht gefunden? ** `6Hy?<&NN\J"f aRSVF-Cookie not found. Jg,j yf Hy?</<,pNNO /<,NNXa A",C" <SjHy?<&NN\N"/( Gd>Hy?$@$ Ppb*$$رeXZ $ $B$!`!opLNu /g @p$<bbEH%x* %x& <!"HQ " "B"!*!1AY&&! `XBRACKJRB!*!&NhAruNs cONfigERDUSE4C: Soll der Empfangsinterrupt erst nach 4 Zeichen erfolgen? Solange Sie keine Hngeeffekte mit unsauberer Software feststellen, sagen Sie Ja. M2TT: Benutzen Sie einen TT? (TT hat normalerweise an MODEM2 keine 57600Bd/115200Bd) 0 = nein, 1 = ja, u = Autodetect M1EMU: BIOS-Routinen von MODEM1 durch MODEM2 ersetzen? 0 = nie, 1 = immer, u = nur beim Falcon (Autodetect) LANBIT: Soundchip-Bit PA7 beeinflussen? (PA7 schaltet bei MegaSTE/TT zwischen SERIAL2 und LAN) LANEXT: Sollen zwei getrennte Eintrge fr SERIAL2 und LAN existieren? LAN_S2: Voreinstellung LAN/SERIAL2 0 = LAN, 1 = SERIAL2, u = LAN nur beim Falcon (Autodetect) DTRM2: Einstellung des DTR-Signals von MODEM2 beim Treiberstart Ja = aktiv (wie bei TOS) Nein = inaktiv DTRS2: Einstellung des DTR-Signals von SERIAL2 beim Treiberstart Ja = aktiv (wie bei TOS) Nein = inaktiv M2DRI: Bei MegaSTE-MODEM2 DSR-Signal als RING melden? (erfordert Spezialkabel bzw. Modifikation) RBLM2, TBLM2, RBLS2, TBLS2: Einstellung der Puffergren in dieser Reihenfolge: Empfnger-MODEM2, Sender-MODEM2, Empfnger-SERIAL2, Sender-SERIAL2. Standard: 256, Minimum: 16, Maximum: 65534  9".9"*9"",9"&A a4A a* A 8a A F aBg 9/?<1NA"< g b e2!yӹ1AB0I1A A1@ NuznHp,(b nHp,( LL L  d | d$\:(  h  d$\F(   ,   @   Zx2 $F   8( (   b  4ur be` L`// 8g2 @ g,P _CPUf0 @e @(dNz@N{`xNq _ NuH@r"z 2: RAz ~er8: z pgX8f3 0z Rdz Jz Ne  fp: M 8LNs88fSAdz`H@r"z 08: gh gj2: RAz erz g:3 ڒz dz z e  fp8gB 8f8LNsP `Q 8gL`H@r"z P2: TRAz Jer8: ]z 9 f8f,8g$`(8g8g `8NsNuA0A rh4(Ber"h1A@|8g@ ( c08g02(hgRABer1AJ8J8FNueJ(gF2(hbBSAgNu2:zbzWATHHNuA rp2(hf`RAher"P11AJ( gBJ(g<2(hdhh b(Q@|( gr(AFNur8gFNuFA!Nup2:,z*fpNuA0A rh4(Ber"h1A@|8gR ( cB(+g08g:2(hgRABer1AJ8J8FNu8g`eJ(gF2(hbBSAgNu2:Bz@bz6WATHHNuA rp2(hf`RAher"P11AJ( gLJ(gF2(hdhh b2Q@|( g"r(+fr(AFNur8gFNuFA!Nup2:zfpNuA E` A EHp of* ($"/kJ aRJk>$($!@$ a`, of("`(@H@(@2/ Ab4J!p $aD@4/ Bbhft6K&h&0'p0'p0( gFB Bh|((+fA fg|`|!F2/kRAA` t*B#t(;`B|Nto (4B42/kt(gBFLNu` @AH<vxz2<<$c*0ged&8YAd JDk 0@2IL"a`2r9 ggp9 t h@2`4prBgp/?rB gg?r jB??aO `" p"""""`p8g@g@g@@9 j@g@"`Z @g )E@fE N`69 g29 `9 g9 @| FNuAE at"`AE a` kg$ e$p`JtԸaBJg:dp`2$<`gBg4*jg%|"j,NpNup0*jdjfRNuE `E r4*2*jdBd /g*Ue R2*RABerQ5A/ j,N"_ Nu/ E Gx`/ E Gr4*2*jbBUjrd /g(Ue j2*RABerQ5A/NX &_Nu @Fgf @Fgz @Tg @Tg @Tg @Tg @Tg @Tg6 @Tgx @Tg @Tg @Tg$ @Tg0p`pNur29 ڒy dy "`r29 y by Ujr"`r@|9  F`r@|9  F`~ j/ p/?"a"`2r9 ggp9 t h@2`4prBgp/?rB gg?r jB??aO `" p"""""`p8g@g@g@ 8f@ 9 j@g@"`N @g )E@fEN`*9 g29 `9 g9 @| FNuAE a"`AE a$`y$pNupy$4Jy"gr@|8FJBg gza`4 fzaj9 @| FNupJ9$gJ9%g3$adpNupJ9$gJ9%f3$aBpNupNupNupNupJgp" g"NupNuu:\dev\modem2 u:\dev\serial20.  u:\dev\lan0.  4MODEM2tSERIAL2LAN (/<_MCHaXJg @3 AC@|Jg`Fr'&8@|Fg@|JF8Q(8 2UNu  .^~~ K% `X,X,Hy(?<&NN\apFast routines for SCC-M2/S2 >9 Gg< GgHAp0NqQJyg  `, `8ApCQ3@~Jgj. Gg(A 0 A   J9f a$8MHz`0a14745600HzAC $E rG24رea installed.q (C) SWB Harun Scheutzow 1995-01-15 3"Jg j0 y f&By$Hy( Gd>Hy?$@$ Ppb*$$رeXZ $ $B$!`!opLNu /g @p$<bbEH%x* %x& <!"HQ " "B"!*!1AY&&! `XBRACKJRB!*!&NhAruNs cONfigER^M2TT: Benutzen Sie einen TT? (TT hat normalerweise an MODEM2 keine 57600Bd/115200Bd) 0 = nein, 1 = ja, u = Autodetect M1EMU: BIOS-Routinen von MODEM1 durch MODEM2 ersetzen? 0 = nie, 1 = immer, u = nur beim Falcon (Autodetect) LANBIT: Soundchip-Bit PA7 beeinflussen? (PA7 schaltet bei MegaSTE/TT zwischen SERIAL2 und LAN) LANEXT: Sollen zwei getrennte Eintrge fr SERIAL2 und LAN existieren? LAN_S2: Voreinstellung LAN/SERIAL2 0 = LAN, 1 = SERIAL2, u = LAN nur beim Falcon (Autodetect) DTRM2: Einstellung des DTR-Signals von MODEM2 beim Treiberstart Ja = aktiv (wie bei TOS) Nein = inaktiv DTRS2: Einstellung des DTR-Signals von SERIAL2 beim Treiberstart Ja = aktiv (wie bei TOS) Nein = inaktiv M2DRI: Bei MegaSTE-MODEM2 DSR-Signal als RING melden? (erfordert Spezialkabel bzw. Modifikation) RBLM2, TBLM2, RBLS2, TBLS2: Einstellung der Puffergren in dieser Reihenfolge: Empfnger-MODEM2, Sender-MODEM2, Empfnger-SERIAL2, Sender-SERIAL2. Standard: 256, Minimum: 16, Maximum: 65534  9.9*9,9A a4A a* A a A aBg 9 /?<1NA"< g b e2!y ӹ 1AB0I1A A1@ NuznHp,(b nHp,( R <d v d$\:(  R  d$\F(   ,   @   Zx2 $F   8( (   bH  4RIAL2, u = LAN nur beim Falcon (Autodetect) DTRM2: Einstellung des DTR-Signals von MODEM2 beim Treiberstart Ja = aktiv (wie bei TOS) Nein = inaktiv DTRS2: Einstellung des DTR-Signals von SERIAL2 beim Treiberstart Ja = aktiv (wie bei TOS) Nein = inaktiv M2DRI: Bei MegaSTE-MODEM2 DSR-Signal als RING melden? (erfordert Spezialkabel bzw. Modifikation) RBLM2, TBLM2, RBLS2, TBLS2: Einstellung der Puffergren in dieser Reihenfolge: Empfnger-MODEM2, Sender-MODEM2, Empfnger-SERIAL2, Sender-SERIAL2. Standard: 256, Minimum: 16, Maximum: 65534  9.9*9,9A a4A a* A a A`!T`// 8g2 @ g,P _CPUf0 @e @(dNz@N{`xNq _ NuH@r"z 82: 9 cf85f,85g$5`(85g85g 5`585Ns 9 gH@r"zv@|81g2:RAzerzgl0183:3 81W 9 f@zdzze0J9 f(P p9 fp: 11FLNu 9 XgH@r"zv@|85g2:RAzerzgl0587:3 @85W 9 Xf@zdzze0J9 Vf(P Vp9 cfp: U55FLNuA0A rh4(Ber"h1A@|81g@ ( c081g02(hgRABer31AJ8J8FNueJ(gF2(hbBSAgNu2:8z6bz,WATHHNuA rp2(hfa`RAher"P11AJ( gBJ(g<2(hdhh b(Q@|( gr(A11FNur81g3FNuFA!Nup2:~z|f a^zrfpNuA0A 8rh4(Ber"h1A@|85gR ( cB(+g085g:2(hgRABer71AJ8J8FNu85g`eJ(gF2(hbBSAgNu2:zbz~WATHHNuA 8rp2(hfa8`RAher"P11AJ( gLJ(gF2(hdhh b2Q@|( g"r(+fr(A55FNur85g7FNuFA!Nup2:Ʋzf azfpNuA 8E5` A E1Hp of* ($"/k aJkv$($!@$ a`d of("`T(@H@(@2/ Ab4J!p $a|@4/ Bbft6K&h&0'p0'p0|rv(Jy g fv FĴ( gFB Bh|((+fA fg|`|!F2/kRAA` t*B#t(;`B|Nto (4B42/kt(gBFLNu` @AH<vxz2<<$c*0ged&8YAd JDk 0@2ILdy <"`r29 Ly Nby JUjr"`r@|9 U U55F`r@|9 U U55F`z j/ p/?( Gd>Hy8?$@$ Ppb*$$رeXZ $ $B$!`!opLNu /g @p$<bbEH%x* %x& <!"HQ " "B"!*!1AY&&! `XBRACKJRB!*!&NhAruNs cONfigERUSE4C: Soll der Empfangsinterrupt erst nach 4 Zeichen erfolgen? Solange Sie keine Hngeeffekte mit unsauberer Software feststellen, sagen Sie Ja. M1EMU: BIOS-Routinen von MODEM1 durch MODEM2 ersetzen? 0 = nie, 1 = immer, u = nur beim Falcon (Autodetect) LANBIT: Soundchip-Bit PA7 beeinflussen? (PA7 schaltet bei MegaSTE/TT zwischen SERIAL2 und LAN) LANEXT: Sollen zwei getrennte Eintrge fr SERIAL2 und LAN existieren? LAN_S2: Voreinstellung LAN/SERIAL2 0 = LAN, 1 = SERIAL2, u = LAN nur beim Falcon (Autodetect) DTRM2: Einstellung des DTR-Signals von MODEM2 beim Treiberstart Ja = aktiv (wie bei TOS) Nein = inaktiv DTRS2: Einstellung des DTR-Signals von SERIAL2 beim Treiberstart Ja = aktiv (wie bei TOS) Nein = inaktiv RBLM2, TBLM2, RBLS2, TBLS2: Einstellung der Puffergren in dieser Reihenfolge: Empfnger-MODEM2, Sender-MODEM2, Empfnger-SERIAL2, Sender-SERIAL2. Standard: 256, Minimum: 16, Maximum: 65534  9 .9 *9 ,9 A a4A a* A 8a A F aBg 9/?<1NA"< g b e2!yӹ1AB0I1A A1@ NuznHp,(b nHp,( LL L  d | d$\F(  h  d$\F(   ,   @   Zx0$F   8( (   b  4Eintrge fr SERIAL2 und LAN existieren? LAN_S2: Voreinstellung LAN/SERIAL2 0 = LAN, 1 = SERIAL2, u = LAN nur beim Falcon (Autodetect) DTRM2: Einstellung des DTR-Signals von MODEM2 beim Treiberstart Ja = aktiv (wie bei TOS) Nein = inaktiv DTRS2: Einstellung des DTR-Signals von SERIAL2 beim Treiberstart Ja = aktiv (wie bei TOS) Nein = inaktiv RBLM2, TBL` `// 8g2 @ g,P _CPUf0 @e @(dNz@N{`xNq _ Nu 8j*Hg8Arp/ f6J( gf gH gT2(RAherhgh1A PAhdhh eJfB|!`B(( `(P`"A2(RAherhg 1A P9gZ8gRrANJ( g(!g A!`6J(f 2(hf(`RAher1A hLT8gNsTHK$yF$RNL/8gNs(`^A0Abr2(4(RABer"h1A( 2(hbBSAgNu29vyxbytWATHHNuAbrp2(hgRAher"P11AJ( gHJ(gB2(hdhh b.Q@|( gFNur8gFNuFA!Nu29hyjVHHNu of0 9"/k\ aXJkP$9# af`:p of9Nup9HAZ0HH@9g9g 2/$< Abg$<z#a4/k:rAZ0Wgr t@|9F4/ k(g9``@HA|4/ BbPft Bft9g*By f8g`8@ 8@HAFNur ze g <zNur g <Nut@|9FNu  zpNupNupNupJgp" g"NupNuu:\dev\midi4rEb4*2*jdBd Jg*/ R2*` RABerSf5A/ a"_ NurEb4*2*jbBUjrd Jg,/ j2*` RABerSf5A/a*X Nu @Fgf @Fgz @Tg @Tg @Tg @Tg @Tg @Tg @Tgb @Tgp @Tg @Tg @Tgp`pNur29jyhdyf"`r29vyxbytUjr"``9`` j/ p/?$@$ Ppb*$$رeXZ $ $B$!`!opLNu /g @p$<bbEH%x* %x& <!"HQ " "B"!*!1AY&&! `XBRACKJRB!*!&NbhAruNs cONfigER 0RBL: Einstellung der Empfangspuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534 TBL: Einstellung der Sendepuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534  9 .9 Aba Ap aBg 9>/?<1NA"< g b e2!y>ӹ>1AB0I1A A1@ Nu.Bx  $ &D FN  VDLv $ XD ,R 4ERROR: Load DRVIN*.PRG first!(?) `l4~`Hy?<ANA\HyHy?<?<0NAO JZHyP?<&NN\J9 faRCookie RSVF not found a4 A C <SjHy?<&NN\N /?< NA\ _JVfN"/ 8g @ g gP` NuH 8g// aX @Jfp xt"0(gP`C(R")pdB#A " "`D /g>$@$ Ppb*$$رeXZ $ $B$!`!opLNu /g @p$<bbEH%x* %x& <!"HQ " "B"!*!1AY&&! `XBRACKJRB!*!&NbhAruNs cONfigER 0RBL: Einstellung der Empfangspuffergre in Byte. Standard: 256, Minimum: 16, Maximum: 65534 TBL: Einstellung der Sendepuffergre in Byte. Standard. `;.. `SETTER C <SETTER TTP D(SETTER ENG 6O;SETTER GER Uj#include /* geschrieben fr&mit Sozobon C auf ATARI-ST */ /* Zum Einstellen von Parametern in PRG/GTP/TOS/TTP Files, */ /* die nach Harun Scheutzow Definition aufgebaut sind */ /* fr Sozobon */ /* 8Bit */ #define BYTE char #define UBYTE unsigned char /* 16Bit */ #define WORD short /* 32Bit */ #define LONG long int #define ULONG unsigned long int /* Maximallnge des Files */ #define MAXINPLEN 32000 /* ungltig-Markierung in LONG-Tabellen */ #define UNUSEDL 0x80000000L static BYTE usinpuff[128]; /* allgemeiner Puffer fr Usereingaben */ WORD ask_for_yes(void) { int a, ok; ok = 0; while (0 == ok) { scanf("%126s", usinpuff); a = (int)usinpuff[0]; if ((a == 'j') || (a == 'J') || (a == 'y') || (a == 'Y')) { a = -1; ok = 1; } else { if ((a == 'n') || (a == 'N')) { a = 0; ok = 1; } } } return (WORD)a; } main(argc, argv) int argc; char *argv[ ]; { LONG *lptr; static BYTE inpbuf[MAXINPLEN]; BYTE *magisch; BYTE *xptr, *sptr, *eptr; BYTE c; UBYTE cfg_lbyte, cfg_hbyte; LONG magptr; FILE *inpfp; int f, i, stop_it, inplen; struct { WORD branch; /* immer 0x601a */ ULONG tlen; /* Lnge des TEXT */ ULONG dlen; /* Lnge des DATA */ ULONG blen; ULONG slen; ULONG res1; ULONG prgflags; WORD absflag; } p_head; magisch = "hAruNs cONfigER"; printf("Konfigurator fr PRG/GTP/TOS/TTP nach Haruns Methode fr\n"); printf("fremdkonfigurierte Programme. / Setter for programs.\n"); printf("(C) Harun_Scheutzow@B.maus.de, 1994-05-07\n"); if (2 == argc) { if (0 != (inpfp = fopen(argv[1],"rb+"))) /* einfaches = ist hier ok, File lesen & schreiben */ { if (1 == fread(&p_head, sizeof(p_head), 1, inpfp)) /* lies Programmkopf */ { inplen = fread(inpbuf, 1, MAXINPLEN, inpfp); /* lies gesamtes Programm */ if ((inplen > 0) && (inplen < MAXINPLEN) && (p_head.tlen + p_head.dlen <= (ULONG)inplen)) { /* suche nach dem magischen String in TEXT und DATA */ sptr = inpbuf; eptr = sptr; eptr += (p_head.tlen + p_head.dlen); f = 0; while ( eptr - sptr > 16 && 16 > f) { if( magisch[f++] != *sptr++ ) { sptr -= f; /* zurck auf Vergleichbeginn */ f = 0; sptr += 2; /*auf nchstes WORD */ } if( f == 16 ) { magptr = *(LONG *)sptr; if( sptr - inpbuf - 16 != magptr ) { /* Magischer String stimmte, Zeiger aber nicht, also erstes WORD */ /* des Strings berspringen und weitersuchen */ sptr -= 14; f = 0; } } } if (16 == f) { /* magischer String da, Zeiger auch ok */ sptr += 4; printf("\nBearbeite Programm / Work on program:\n"); printf("%s\n", argv[1]); stop_it = 0; while ( *sptr && !stop_it) { /* Auswerteschleife */ /* drucke den String aus */ printf("\n Informationstext / information text :\n%s",(char *)sptr); while (0 != *sptr++); if ((LONG)sptr & 1) sptr++; cfg_hbyte = *sptr++; cfg_lbyte = *sptr++; switch(cfg_hbyte) { case 0: /* Ja/Nein Entscheidung */ printf(" Aktuelle Einstellung / current setting : "); if (*((WORD *)sptr)) { printf("Ja. / Yes.\n"); } else { printf("Nein. / No.\n"); } printf(" Eingeben: _J_a oder _N_ein. / enter: _Y_es or _N_o.\n"); *(WORD *)sptr = ask_for_yes(); sptr += 2; /* Zeiger weiter setzen */ break; case 1: /* LONG-Werteliste eingeben */ f = (int)cfg_lbyte; if (f) { printf(" Aktuelle Einstellungen / current settings :\n"); lptr = (LONG *)sptr; i = 1; while (f--) { printf("Platz / place Nr.%d : ",i++); if (UNUSEDL == *lptr) { printf("ungltig / invalid\n"); lptr++; } else { printf("%16ld\n",*lptr++); } } printf("\n Neue Werte eingeben, Platz ungltig markieren durch Eingabe von u.\n"); printf(" / Enter new values. Mark place invalid by input of u.\n"); lptr = (LONG *)sptr; f = (int)cfg_lbyte; i = 1; while (f) { printf("Platz / place Nr.%d : ",i); scanf("%60s",usinpuff); if ((char)0 == usinpuff[0] || 'U' == usinpuff[0] || 'u' == usinpuff[0]) { /* U-Eingabe, den Platz ungltig markieren */ i++; f--; *lptr++ = UNUSEDL; } else { if (1 == sscanf(usinpuff, "%li", lptr)) { i++; f--; lptr++; } else printf("Falsche Eingabe, wiederholen! / Wrong input, again!\n"); } } sptr = (BYTE *)lptr; } else { printf("**** File damaged: 0 longs in list.\n"); stop_it = 1; } break; case 2: /* String eingeben */ if ((cfg_lbyte & 1) || (cfg_lbyte < 2)) { printf("**** File damaged: odd or below 2 string place len.\n"); stop_it = 1; } else { printf(" Aktuelle Einstellung / current setting:\n"); printf("%s\n",(char *)sptr); printf(" Neue Eingabe, max. %d Zeichen / New input, max. %d characters\n", (int)cfg_lbyte - 1, (int)cfg_lbyte - 1); scanf("%126s", usinpuff); xptr = usinpuff; eptr = sptr; f = (int)cfg_lbyte; c = 1; /* != fr Anfang */ while (f-- > 1) /* letztes Byte wird hier nicht behandelt */ c = *eptr++ = c ? *xptr++ : (BYTE)0; /* ist seltsam, aber OK */ *eptr = (BYTE)0; /* immer ein Nullbyte am Ende */ sptr += (int)cfg_lbyte; } break; default: printf("**** Unknown command. File damaged or use newer SETTER.\n Aborted!\n"); stop_it = 1; } } printf("\nKonfiguration beendet. / Configuration completed.\n"); printf("nderungen speichern / Save changes _J_a/_N_ein/_Y_es/_N_o?\n"); if (ask_for_yes()) { fseek(inpfp,(LONG)sizeof(p_head),SEEK_SET); /* nur Prgheader nicht zurckschreiben */ if (inplen == fwrite(inpbuf, 1, inplen, inpfp)) { printf("Konfiguration erfolgreich. / Configuration successful.\n"); } else printf("**** Error during saving the file.\n"); } else printf("Einstellungen NICHT gespeichert. / Settings NOT saved.\n"); } else printf("**** The file does not contain configuration.\n"); } else printf("**** Read Error OR File too long OR not a program\n"); } else printf("**** File too short\n"); fclose(inpfp); } else printf("**** Error opening file\n"); } else { printf("**** Wrong number of parameters!\n"); printf(" Nutzung / usage :\n"); printf("setter Filename_des_zu_konfigurierenden_Programms\n"); } return 0; } figuration beendet. / Configuration completed.\n"); printf("nderungen speichern / Save changes _J_a/_N_ein/_Y_es/_N_o?\n"); if (ask_for_yes()) { fseek(inpfp,(LONG)sizeof(p_head),SEEK_SET); /* nur Prgheader nicht zurckschreiben */ if (inplen == fwrite(inpbuf, 1, inplen, inpfp)) { printf("Konfiguration erfolgreich. / Configuration successful.\n"); } else printf("**** Error during saving the file.\n"); } else printf("Einstellungen NICHT gespeichert. / Settings NOT saved.\n"); } else printf("**** The file does not contain configuration.\n"); } else printf("**** Read Error OR File too long OR not a program\n"); } else printf("**** File too short\n"); fclose(inpfp); } else printf("**** Error opening file\n"); } else { printf("**** Wrong`!R>(o#'&,֬ #'&,֬#'&,֬#'#'#,'AH?/N\&9'&CD֬$|'R$ g$jԃl$<m ?cv|}ln$. (.Є2HbX&C$K Є`60CRCgvT|fA (n|Hgpv rc|m|fX/<&*N z n ./<&&N zPOBnJgFJnf>HS/<%N zPOf rgRApJ@f>/<%N zXOJSg$/<%N z.%N zXOa6T`/<%`S@f"vJCg/<%RN zXO(K|`,?RF/<%;N z\O f/<%'N zXOXQ/<$N z.$N zXO(Kv|`H?/<%;N zTO(<'./<$N POp9'g <Ug<ufRFSC(JCf&L`HT/<$/N LO S@fRFSCX`/<$dN zXO`//<% N zPO`D/<$?N zXO=|`bS@fpf<d/<$ `/<#N z./<&&N z\OpS@>pS@?/<#N zXO&<'./<'N PO"C$Kv|`AJg0SCS@nBp`p`/<#\`F/<#(N z."N zXOa J@gVBgHy/N \O.??</<(nNO @f /<"N z.N XOpLN^Nu/<"`/<"W`/<"(`/<!`/<!`/<!N z`/<!N z.!N z.!^`/ 9ng @N 9rg @N69'`SC0C <vJg PNJCb?/NTO&Nu/B?< NATO#&9.?< NA\OJg0`( C MiNTf |3!V&Nupր CJfBy!V`H(|'av&|`(7T 7l ?+ N TOJ@gk RCGX|m/<'NXOJgprN &@7| BrBn/9'/9!Z?9!XNO ?aTOLNuNu2/RA|?NxTO @ g Nu?NAXO63!RJCg<H`<`NV/.azXOJ@gpN^Nu??+ /. ?<BNAO &l3!RpHLN^Nup`NVH&n6. 8.Bg/ N(\OJ@gv0||f3!RpL8N^Nu0|@g:Bg/ N\O:JEm0|g?<B?NPO|l3!R0`0|?/ ?<=NAPO:`0| g?/ N\O:`z`NVHn/. /< l/<Z/.NN^NuNVHn /./< l/<Z/<NN^Nu o R @fpNupNu0/|fp oS PpNuHo // /< 0/< HoNONuNV/. `NVHn /./</< NN^NuNVHn/. /</.`NV/.`NVH&n(nl <, :. H/0.H/N PO&pFgBx`HTNZXO>|gRmJo//N POLN^Nu03!RH`HTN *XOHS/?, ?<?NAO (`H&o|k 8+ pDg0|PgpLxNuJf HSN@XOSSlpDgHSNVXO:nlJEfb0<k vpDfJFg&| g|f k v 0`S kRS`| fpDgv `|`JCg|fk v`0<@`0S@6'k kRp6`/+0+H/?+ ?<?NAO `XNVHK&n(kx6+ HUHy?+ ?<?NAO 2bJAffJk f^ pCgRDոkm0L8N^Nu0|gRD LR fHyN`XO`Hf4JDcSDS/<?<NMTO. ?<NMTO.?<NM\O`W@fHyN`XO`xS@f4/< ?<NM\ORD  fp H?/<NM\O`Np `Y@fhJDc:SDS f8/<?<NMTO. ?<NMTO.?<NMTO.?<NM\O/< ?<NMTO.?<NM\O`U@gnW@ghQ@g[@gN|egz`JDf0`NVH&n(nl <, :. H/0.H/N PO&pFgDx`HTH?N\O|gRmJo//N POLxN^Nu03!RH`HTN *XOHS/?, ?<@NAO (`H/&o|k 8+ pDg0|PgpLxNuJf HSN@XOpDf < fv | kRRS0km0BS'k:+/+H/?+ ?<@NAO HŰgk@ `JFgv |`p`H&o0+ |f7|?<NDTO'@f(k k A'H7|'kBSLNuk `NVHLx`z %f^zB.v ~Bn=|| K|t`p|0r 4@Jng=BRp @'VpfpJ@f&S n /.p?N\ORDRJf0L8N^Nu| fS`| f4Jng=B`~>`xS@gU@fz`jS@f =|`\|Jn|*m@{N~|zxvtrpFhfdb<^\0XVPNJFDJBf < fv0`>`|`?< HUJFgN /N8O JFg6 X(@?.?H?.H??HU/. /.NO@` T`0H`|.H?HUJFg$ /NJO JFgXL xf MN`p0`|`|v0~=||` LTB-B.v `V*TXL`NV\H&n(n~Jf pL8N^Nu n HSNXO4JBoEBR %fZvz=|x |4K:=|Ar"|'BNAa"|N ,*f$BRBUR`|fzp|0r :@=ERp @'VpfSRp @'Vpgp @ J@fJSp@g JBl JGfp` nHS?N\O0` n HSNXO4JngXRJf`|*f BnBn`|Nn|1m@{N~|zThtr\nlhfd,`R\Zp`Jp @'Vpg< |'Vp0 g` n HSNXO4|l`|`x*|'Vp5 g n HSNXO4|l`p @p0g|JDfx Bn|%fx n HSNXO4|mCaB1@p5 gp @ INb*@JBg fJJEf`B2H N Aa" &ց n HSNXO4 |'Vp0 gHp @AaNb*@ g 0SEJ@gJBfJngZ n*P nfDJFg*RG`>:`0`0`d|0f. n HSNXO4|m|xg|Xg xB.i`tx`AJPf| f|-W|0f|+f`x`x`x`|Bn`t:.BnB.r n*PJEg6Ar0NbA\ |mJFgxJW|J@gJngBB`  4   &""   ".   :N"., F "@  P0N  T44 :.vjBtRJNZhRhput of u. Neue Werte eingeben, Platz ungltig markieren durch Eingabe von u. %16ld ungltig / invalid Platz / place Nr.%d : Aktuelle Einstellungen / current settings : Eingeben: _J_a oder _N_ein. / enter: _Y_es or _N_o. Nein. / No. Ja. / Yes. Aktuelle Einstellung / current setting : Informationstext / information text : %s%s Bearbeite Programm / Work on program: rb+(C) Harun_Scheutzow@B.maus.de, 1994-05-07 fremdkonfigurierte Programme. / Setter for programs. Konfigurator fr PRG/GTP/TOS/TTP nach Haruns Methode fr hAruNs cONfigER%126sSTDERRARGV' ,NULL:PATH  BBBBBBBBBB DDDDDD HHHHHH DSETTER.TTP ********** The small ASCII-files containing the configuration of many programs I don't like. These files have the advantage of an easy changability by using a text editor but the disadvantage of laying around in the directory and being not on the right place. That's why I placed the configuration direct in the program. I added a short explanaition to every point. These explainations don't stay resident in my resident programs, no problem for an assembler programmer. The configuration of such programs is changed by using SETTER which reads the information and explaination and saves the configuration in the program again. Usage ----- From TOS1.04 up the use of SETTER is simple: Take the program to modify with the mouse and drag it on SETTER.TTP. SETTER will start, load the programm and start the configuration dialog or give a message, that configuration is impossible because the program doesn't contain any settings. For older versions of TOS: doubleclick SETTER.TTP and enter the name and path of the program in the appearing dialog box. SETTER recognizes with high safety whether the program contains a settings. SETTER displays one setting after the other and waits for a new value for this setting. After every input the Return key has to pressed. The last question of SETTER is whether or not to save the changes. SETTER gives some error messages if errors occur. SETTER displays _its_ messages in German and English. The explainations in the programs SETTER displays only in the language in which they are. Copyright --------- SETTER.TTP may be freely copied together with this text. The C-source may only be copied together with SETTER.TTP and SETTER.TXT. Certainly anything that happens (or doesn't) by the usage of SETTER.* is at your own risk. Maybe others (e.g. coders) think SETTER ist useful. Well, you may use it, but: If anyone releases an enhanced version of SETTER he has to follow these rules: - it must be freely distributeable too. - it must be noted that it is free and made by you, not me. - send me a mail (or better a copy of the program) - but don't let me cost that anything I don't like my specifications changed. Enhancements are allowed, but don't change existing commands! A big hello to Wolfgang Wander - without him, who debugged this C-coding attempt of mine, I should have written it again - in assembly). 'Me' is: Harun Scheutzow You can contact me as follows: Internet: Harun_Scheutzow@b.maus.de MausNet: Harun Scheutzow @ B SnailMail: Harun Scheutzow Dresdener Strasse 83 D-10179 Berlin Germany You use SETTER on your own risk! GEM-Version of SETTER --------------------- To create it faster and smaller I coded SETTER as TTP. Markus Kohm thought SETTER is a good idea and made a GEM-version having some more functions. This program is available from several BBS's. Search for SETTER.ZIP, e.g. in Maus KR. Actual dates of this BBS are: Phone number: 0721-358887 Access times: 8am to 6pm and 8pm to 3am You can contact Markus at the following (Internet) address: Markus_Kohm@kr2.maus.de Anyone planning to write other SETTER versions or needs more filetypes should take a look at this program first. Versions -------- At startup SETTER will print the date of creation as yyyy-mm-dd and - I hope so - have more functions and less bugs. 1993-11-27 String input implemented 1994-01-09 Inclusion of English output, minimum bugfixes 1994-05-07 Now runs with TOS 4.xx (Falcon) (People only using this package need to don't read on) Specifications for saving of editeable informations in programs --------------------------------------------------------------- Harun Scheutzow, Nov. 21st, 1994 Modification is made by a SETTER .TTP, wich edits the program where are changes to be made in. The zero-terminated string 'hAruNs cONfigER' can be found on an even address in the TEXT- or DATA-segment. It's length is - with the 0-byte - exactly 16 chars. Behind it is a LONG-pointer to the string's beginning. This looks - in assembly - like this: .even hkbg: .dc.b "hAruNs cONfigER",0 .dc.l hkbg After that the objects (made of text to be printed, config and place for config) can be found as a list. The text to be printed is a C-string (this means 0-terminated) and filled with a 0-byte to the next even address if needed. An empty string (only 0-bytes) shows the object's list end. The command for configuration is a WORD (16bit). It's values in the highbyte are: 0 Yes/No-setup: The following WORD will be set to $FFFF for yes and $0000 for no. 1 List for a LONG-input: The number of elements in the list stand in the lowbyte. The LONGS after that will be set to the 32bit integer given to input. If a place is invalid the value is $80000000. 2 String-input: The maximum length of the input string (including the 0byte at the and) stands in the lowbyte. This lenght has to be even. The string given to input is put right after this and will be filled to maximum with 0bytes. ---EOF---kLp`"PdB@ Nu(g*gg/a _J@f/a _J@kf"P`3 kLpNupr`H&H&8|f֓b e&`8+g+g2 KaJ@f:"40+aJk* k&'HpLNu3 kL`3kLp`p/alXONu(g4(f>"P | dNu?/a _2J@f 0Nu3 kLpNuC!I!IR!I `H&H(o Ia6k g La` a|Jf(H <a F)Hg0@0;6 K (:gNaJ|g9@{00 l)H()H `da)b*a)b* / ?/?<=NAP$_JkR9@{0 la ~A()H)HRH)H QC#kR LLNup`p`p 3kL g la 2`YOCBgg Ar`THWf0XONup`rwar+w+a+rbwbabr+b rb+ w+b wb+ a+b ab+ Ap`Ar(WVNu?/ Aza4Aa*G6<`Gp+g Ka Q&_6Nu/ &H+g+g8aJ@f80+a"J@k,+g ka B@7@? Ka0&_Nu3 kLp`J@kSETTER.TTP, ein Konfigurator **************************** Die kleinen ASCII-Textfiles, mit denen viele Programme konfiguriert werden, sind mir auf die Nerven gegangen. Sie haben zwar den Vorteil der nderbarkeit mit jedem Texteditor, liegen als Nachteil aber mit im Verzeichnis rum und sind trotzdem oft nicht da, wo sie sein sollten. Deshalb habe ich die Konfigurationsinformationen direkt im Programm untergebracht und mit einer kurzen Erklrung versehen. Bei residenten Programmen liegen diese Erklrungen natrlich im nichtresidenten Teil (kein Problem bei Assemblerprogrammierung). Konfiguriert werden solche Programme mit SETTER, das die Informationen und Erklrungen aus dem Programm liest und die Konfiguration wieder im Programm speichert. Nutzung ------- Ab TOS1.04 oder mit einem entsprechenden Desktop-Ersatz zieht man das zu bearbeitende Programm mit der Maus auf SETTER.TTP. Man kann SETTER auch per Doppelklick starten (mit dem Desktop von TOS1.00 und 1.02 geht es nur so) und den Namen (und eventuell Pfad) des zu bearbeitenden Programms per Hand eintippen. SETTER erkennt mit sehr hoher Sicherheit automatisch, ob das Programm konfigurierbar ist oder nicht. Ist es konfigurierbar, so wird jeweils eine Option angezeigt und eine neue Angabe dafr erwartet. Alle Eingaben werden mit der Return-Taste abgeschlossen. Alles andere sollte sich selbst erklren. Zum Schlu wird noch gefragt, ob man die nderungen wirklich speichern mchte. Falls Fehler auftreten, hat SETTER einige Meldungen dafr brig. Copyright --------- SETTER.TTP darf zusammen mit diesem Text frei kopiert werden. Die C-Quelle SETTER.C darf nur zusammen mit SETTER.TTP und SETTER.TXT kopiert werden. Ich hafte natrlich in keinster Weise fr irgendwelche Auswirkungen oder Nichtwirkungen, die der Einsatz oder Nichteinsatz von SETTER.* hat. Mglicherweise finden auch andere Programmierer SETTER ntzlich, bitte, ihr drft es benutzen. Aber!: Wenn jemand eine erweiterte Version von SETTER in Umlauf bringt, mu: - diese ebenfalls frei kopierbar sein. - diese entsprechend gekennzeichnet sein. - er mir eine Nachricht, besser ein Exemplar, kostenlos zukommen lassen. Ich kann es nicht ausstehen, wenn jemand meine Spezifikation ndert. Erweitern ist erlaubt und erwnscht, aber bitte keine bereits vorhandenen Kommandos ndern. Mein Dank gilt Wolfgang Wander, der diesen meinen C-Programmierversuch entfehlert hat. (Sonst htte ich SETTER nochmal, in Assembler, schreiben mssen.) "Ich" bin: Harun Scheutzow, zu erreichen im Internet ber Harun_Scheutzow@B.maus.de bzw. im Mausnetz: Harun Scheutzow @B oder per Post: Harun Scheutzow Dresdener Strae 83 D-10179 Berlin, Deutschland GEM-Version von SETTER ---------------------- Ich habe SETTER der Einfachheit und Krze wegen als TTP geschrieben. Markus Kohm fand die Idee von SETTER gut und hat eine GEM-konforme Version entwickelt, die einige Funktionen mehr bietet. Diese Version ist ebenfalls in Mailboxen zu finden. Sie sollte als SETTER.ZIP in der Maus KA liegen. Zum Zeitpunkt der Texterstellung gltige Daten der Maus KA: Telefonnummer 0721-358887, Gastdownload 08.00-18.00 und 20.00-03.00. Markus Kohm ist per Internet-Email unter: Markus_Kohm@KA2.maus.de zu erreichen. Wer andere SETTER schreiben will oder weitere Datentypen braucht, sollte sich zuerst diese GEM-Version ansehen. Versionen --------- SETTER gibt beim Start das Erstellungsdatum als Jahr-Monat-Tag aus, wobei neuere Versionen hoffentlich funktionell weiter- und fehlermig zurck- entwickelt sind. 1993-11-27 String-Eingabe implementiert 1994-01-09 Englische Meldungen ergnzt, minimale Korrektur 1994-05-07 Luft jetzt auch unter TOS4.xx (auf Falcon) (Der reine Anwender braucht nicht weiter zu lesen.) Spezifikation des Speicherns modifizierbarer Informationen in Programmen ------------------------------------------------------------------------ Harun Scheutzow, 21.11.1993 Die Modifikation erfolgt durch ein SETTER.TTP, welches das Programm bearbeitet, dessen Einsstellungen zu verndern sind. Im TEXT- oder DATA-Segment befindet sich auf einer geraden Adresse der nullterminierte String "hAruNs cONfigER" (inklusive 0-Byte genau 16 Zeichen lang) und dahinter ein LONG-Zeiger auf den Anfang des Strings. In Assembler: .even hkbg: .dc.b "hAruNs cONfigER",0 .dc.l hkbg Darauf folgen als Liste die einzelnen Objekte, die aus Anzeigetext, Art der Konfiguration und Konfigurationsplatz bestehen. Der Anzeigetext ist ein C-String (also nullterminiert) und auf die nchste gerade Adresse evtl. mit einem zustzlichen 0-Byte aufgefllt. Ist der Anzeigestring leer (nur 0-Byte), so endet hier die Liste der Objekte. Das Konfigurationskommando ist ein WORD (16Bit) mit folgenden mglichen Werten im Highbyte: 0 Ja/Nein Entscheidung. Das folgende WORD wird fr JA auf $FFFF und fr NEIN auf $0000 gesetzt. 1 LONG-Werteingabe-Liste. Im Lowbyte steht die Anzahl der Listenelemente. Die folgenden LONG werden auf die Werte der eingegebenen 32-Bit-Integer gesetzt. Die interne ungltig-Kennung fr einen Platz ist $80000000. 2 String-Eingabe. Im Lowbyte steht die Maximallnge des Eingabestrings inklusive des abschlieenden Nullbytes. Diese Lnge mu gerade sein. Der eingegebene String wird unmittelbar hier hinter abgelegt und bis zur Maximallnge mit 0-Bytes aufgefllt. ---EOF---?< NA\O$_NuHRHP?<INA\O$_NuHR/?<HNA\O @$_NuH>@NAO $_NuHRHP?<NA\O$_NuH>?NAO $_NuHR?</NATO @$_NuHR??<>NAXO$_NuHR??<NAXO$_NuHR?<NATO$_NuHR?<ONATO$_NuHR?HP?<NNAPO$_NuHR?HP?<=NAPO$_NuHR?HP?<2.00 und ohne neues NVDI (mindestens Version 2.50 vom 28.10.1993): Bei mehr als 9600Bd Finger weg von Maus und Tastatur, whrend GSZRZ empfngt. Sonst gibt es ein paar bertragungsfehler (bei MODEM1). Genauso knnen ein paar Zeichen verloren gehen, wenn im Terminalprogramm gerade ein Text ankommt und der User die Tastatur oder Maus bearbeitet. Abspeichern empfangener Daten unter GSZRZ whrend des Empfangs fhrt bis 38400Bd meist nicht zu Fehlern. Man kann den Blitter so programmieren, da er die CPU zu lange blockiert. Das TOS und NVDI tun dies anscheinend nicht. Wenn Fehler beim Empfang mit >= 38400Bd auftreten, erst mal mit abgeschaltetem Blitter probieren. Es gibt einige ACCs und residente (AUTO-Ordner-)Programme, die irgendwelche Interrupts umlegen und das System zu lange blockieren. Im Zweifelsfalle einzeln rauswerfen und testen. MiNT und besonders MultiTOS sind allgemeine Systembremsen, die sich besonders auf 8MHz-Rechnern bemerkbar machen. Mag!X finde ich persnlich wesentlich besser, da es wesentlich schneller ist. DCF_TIME von Ralf Zimmermann @WI2 sollte in der Version 1.2 oder hher verwendet werden. Aber nur die Abfrage ber den RingIndicator macht keine Probleme bei 57600Bd, ber den Joyport gibt es sekndlich rger. QFAX frit sehr viel Rechenzeit und sollte bei Problemen zuerst entfernt (nicht nur abgeschaltet) werden. Funktion des ... ---------------- Siehe DRVIN.TXT, RSVE_COO.TXT, SERSOFST.TXT. Versionen --------- Diese Daten gelten fr alle MFP*.PRG, wenn nicht anders vermerkt. 1993-11-21 erste Verffentlichung 1993-11-23 bleibt auch bei Installationsfehler resident allerdings passen dann ser. Interruptroutinen und Bco* nicht zusammen. (besser als Totalabsturz) 1993-12-15 bei den MFP*.PRG ohne Hardwarehandshakeleitungen: TIOCSFLAGS verbietet RTS/CTS durch Fehlermeldung ERANGE. In diesem Fall werden die Einstellungen nicht gesetzt! 1994-01-01 Fcntl TIONOTSEND und TIOCFLUSH implementiert, DTR-Signal nutzerdefiniert bei MFP.PRG, Puffergren durch Nutzer einstellbar 1994-03-27 Fcntl TIOCFLUSH Nr.1,2,3 gehen jetzt endlich 1994-04-07 Empfangspuffer-High-Water-Mark korrekt initialisiert 1994-06-17 ACHTUNG! Installationsblock an MagiC3 angepat. Nur noch Treiber und DRVIN von 1994-06-17 oder jnger zusammen verwenden. Versionen vor dem 1994-06-17 laufen nicht mit denen ab 1994-06-17 zusammen. 1994-08-18 FASTINT verschoben nach DRVIN.PRG 1994-08-25 Ergnzung in bconout fr MC68040 (Medusa) 1994-09-27 an der Senderegister-leer Auswertung gebastelt (Medusa) 1994-10-03 einige Fehler in MFP_TT raus (sprach ST-MFP an), TIOCCTLGET gendert (CTS erfragbar, DTR wird auch bei *GET geliefert (RTS auch, aber noch versteckt, da in *MAP nicht gesetzt)), Byte4Bit0 im RSVF, MFP_BAST realisiert 1994-10-24 TIOCM_BRK und TIOCM_RER(overrun, parity, frame error zusammen) ber Fcntl TIOCCTLGET 1995-01-03 schnelle Bconout-Parameterbergabe gendert (und MAPT_APP/MAPT_OVE Funktiosnummer), Cache-Flush fr 68040, optimiert 1995-02-02 neuer Fehler bei Ring-Indicator-Abfrage in MFP.PRG und MFP_BAST.PRG wieder beseitigt Harun Scheutzow, 21.11.1993 und spter (Harun_Scheutzow@b.maus.de) MFP.PRG, MFP_TT.PRG, MFP_FALC.PRG, MFP_BAST.PRG *********************************************** (The most important parts translated from German to English on 1994-01-08 by Harun Scheutzow. I have no time for translating all. If anybody translates the remaining parts, I'm very interested in getting the result for including it in the next version of this package. My native language is German, I think a person whos native language is English would do a much better translation. Thanks! (Send only mails smaller than 16kbyte to my email address.)) These are drivers for the interfaces realized by MFPs (eg IC MC68901 manufactured by Motorola). They work together with DRVIN.PRG or an equivalent replacement. 1_README.TXT contains an introduction. The general ----------- Currently all MFP*.PRG have the same configuration possibilities. The serial part of the MFP, the USART, is not as powerful as the one of the SCC. That's why the MFP interfaces are more allergic against high CPU load and lose more easy characters. MFP.PRG ------- MFP.PRG is made for the so called ST-MFP, which lays from address $FFFFFA01 up in every ST, STE, MegaST, MegaSTE, TT, Stacy and STBook. The Falcon has this MFP too, but the USART-part is used in an other way (not used). MFP.PRG is not for the Falcon. This driver provides the BIOS-device 6 and the name "MODEM1". MFP_TT.PRG ---------- MFP_TT.PRG supports the so called TT-MFP form address $FFFFFA81 up, contained only in the TT until now. This driver provides the BIOS-device 8 and the name "SERIAL1". MFP_FALC.PRG ------------ MFP_FALC.PRG is made for the users who modified their Falcon by drawing out the serial interface of the MFP, unused in the original state. The driver provides the BIOS-device 6 and the name "MODEM1". (-- Mail is only in the German part --) MFP_BAST.PRG ------------ MFP_BAST.PRG is intended for people who soldered a TT-compatible second MFP in a non-TT computer. The driver installs itself with the name "SERIAL1" and the first empty BIOS device number. The driver takes this added MFP as a full featured RS232-interface with control lines. The control lines are realized as ST-MFP-compatible as possible by the GPIP-register. The assignment is as follows: IO1: DCD, input (as ST-MFP) IO2: CTS, input (as ST-MFP) IO3: RTS, output (at ST-MFP realized by PSG) IO4: DTR, output (at ST-MFP realized by PSG) IO6: RI, input (as ST-MFP) In the following I will describe principal the MFP.PRG: This is a software speeder and patch for the interface MODEM1 of the Atari computer. It removes not only the RTS/CTS-handshake bugs contained in the TOS2.06/3.06 too, but increases with its optimized routines the possible transfer rate. (-- something untranslated --) Compatibility to HSMODEM1 ------------------------- If MFP.PRG is loaded as the only one or the last driver, all programs which run with HSMODEM1 should run with these driver to (on MODEM1). Suppositions, ... ----------------- Mag!X Versions from 2.00 up of these multitask operating system (it is in opposite to the current MTOS not only an addition to TOS) have correct routines for the serial interfaces. The corresponding GEMDOS-functions are absent in version 2.00. The Mag!X-multitasking on an 8MHz-ST during 38400Bd-receive (eg ZMODEM) is very nice (with a NVDI form Version 2.50 form 28.10.1993 up): It is possible to work in the foreground with keyboard and mouse (eg in a text editor, tested with Everest) while in the background the ZMODEM-receive (GSZRZ) runs without any errors. Such performance became true by intelligent programming. With Mag!X from version 2.00 up the timer interrupt routine modification should be switched off because Mag!X has its own nice routines. These drivers are a replacement for other patches (not only for MODEM1), eg RS232ENC or TURBOCTS. The interface MODEM1 runs without additional hardware with a maximum of 19200Bd. MFP.PRG can not change this. But it replaces the slow and in part buggy routines of the TOS by fast and (I hope) error free ones. With additional hardware as the RSVE (developed by me), or as RS-Speed (by Stephan Skrodzki) or others baud rates higher than 19200 are provided. RSVE allows 38400, 57600 and 115200Bd. MFP.PRG realizes in the range of the hardware possibilities (CPU speed, MODEM speed, ...) for a higher thruput. The complete documentation of RSVE lays in some mailboxes. It is impossible to set the MODEM1 only by software to more than 19200Bd in the _asynchron_ mode. (-- something untranslated --) Bugs of other programs ---------------------- (-- something untranslated --) How fast it can run? -------------------- The problem of the serial transfer with a given speed (measured in Baud) is not the transmission of the characters but their reception. (-- something untranslated --) 57600Bd on 8MHz and 16MHz 68000 CPUs on MODEM1 ---------------------------------------------- 57600Bd is the magic border of MODEM1 on (Mega)ST(E) which is achieved only by small modifications in TOS (or by Mag!X). 115200Bd seem to be possible by polling only. (-- something untranslated --) Configuration ------------- The configuration is done by using SETTER.TTP. Because the explainations in the drivers are German I added an abbreviation. RSVE: (Only for users of the RSVE-hardware. Otherwise answer with Nein.) MFP.PRG can create the cookie RSVE making the RSVE_SET.PRG unnecessary. The function of HISP is done automatically. HISP: This setting enables the high baud rates possible with RSVE and RS_Speed in the Fcntl-TIOC?BAUD-functions instead of 150/134/110. REPL: MFP.PRG can replace baud rates. This is useful only with RSVE or RS-Speed if programs can't set 110/134/150Bd and don't know RSVE/RS_Speed. (-- something untranslated --) Enter on all six places u if you don't have RSVE or RS-Speed. (-- something untranslated --) DTR: (only for MFP.PRG) The DTR(data terminal ready)-signal is set at the start of this driver on time to the value given here. Yes corresponds to on and is equivalent to the behavior of TOS, No corresponds to off and prevents most modems from going off hook before a communication program has been started. RBL: Use 256 as a default. Here the receiver buffer length in byte can be set. It may be in the range of 65534 (maximum) to 16 (minimum). Values out of this range are set to the default of 256. The water marks are set to 1/4 (low water mark) and 3/4 (high water mark). TBL: As RBL, but for the transmitter buffer length. Possible problems ----------------- (-- something untranslated --) Function of ... --------------- See DRVIN.TXT, RSVE_COO.TXT, SERSOFST.TXT. Versions -------- The data is valid for every MFP*.PRG if there is no special note. (-- something untranslated --, see German part) 1994-06-17 ATTENTION! Installation block adapted to MagiC3. Use together only drivers and DRVIN from 1994-06-17 or younger. Older versions will not run together with newer ones. 1994-08-18 FASTINT moved to DRVIN.PRG 1994-08-25 enhancement in bconout for MC68040 (Medusa) 1994-10-24 (-- something untranslated --, see German part) 1995-01-03 fast Bconmap parameter passing changed, ... 1995-02-02 new bug in Ring Indicator TIOCCTLGET removed (MFP.PRG, MFP_BAST.PRG) 2C|;`$Y4Q$BNuC@22""pi"0 sein und auf gerade Adresse weisen Datenstruktur ------------- Beliebig viele Objekte sind als Liste hintereinander abgelegt. An das Ende einer Liste kann ber eine Verkettung eine weitere Liste angehngt sein. Am Ende der letzten Liste befindet sich eine Ende-Kennung. Objekt ------ Jedes Objekt ist 8 Byte lang und beginnt auf einer geraden Adresse. Byte 0..3 sind ein Zeiger auf den Namen der Schnittstelle (Filename) im ASCII-Code. Der Name mu auf einer geraden Adresse beginnen und ist nullterminiert. Byte 4..7 enthalten Angaben ber die Eigenschaften des Objektes (der Schnittstelle). Noch nicht definierte Bits/Bytes mssen vom anlegenden Programm auf 0 gesetzt werden. Sollten irgendwann zustzliche Informationen ntig werden, so wird deren Vorhandensein auf noch zu definierende Weise in Byte 4..7 angezeigt. Die Informationen selbst liegen dann vor dem Namen der Schnittstelle. Besondere Objekte ----------------- Bei besonderen Objekten ist Byte4.Bit7 =0. Ende-Objekt: Byte 0..3 0, ein NIL-Zeiger, kennzeichnet das Ende der Datenstuktur Verkettungsobjekt: Byte 0..3 Zeiger auf die nchste Liste mit Objekten. Eigenschaftsdefinitionen im Wert -------------------------------- Byte 4: Bit7 =1: dieser Name ist eine Schnittstelle Bit6 =1: Schnittstelle ist dem GEMDOS fr File-I/O bekannt Bit5 =1: Schnittstelle ist dem BIOS bekannt (Bco*-Routinen) fr den Rest fllt uns noch was ein (Fhigkeiten der Schnittstelle) Bit0 =1: Vor dem Namen (Namensadresse-4) steht ein Zeiger auf ein Feld mit Zeigern auf Funktionen, wie es auch der Magic Version3 Funktion Dcntl bergeben wird. Byte 5: noch frei Byte 6: BIOS-Nummer der Schnittstelle (Bco*-Routinen) Byte 7: noch frei Sinn und Zweck -------------- Kommunikationsprogramme knnen durch RSVF herausfinden, welche Schnittstellen fr sie geeignet erscheinen. Auerdem erfahren sie die Zuordnung von GEMDOS-Gertetreibername (in U:\DEV\) zur BIOS-Gertenummer. Mindestforderung an Treiber bei gesetztem GEMDOS-Bit ---------------------------------------------------- Fopen, Fclose, Fread, Fwrite, Fcntl werden behandelt. Falls eine Funktion (oder auch Unterfunktion von Fcntl) nicht vorhanden ist, mu dafr ein Fehlercode (mglst. Fehlercode -32 (EINVFN)) geliefert werden. Fopen darf immer nur mit dem vollen Pfad "U:\DEV\devicename" erfolgen. Konstruktionen mit Dsetdrv und Dsetpath sind UNZULSSIG. Fcntl hat die Funktionsnummer $0104 und die Parameter: handle, special, subfunction handle: 16Bit filehandle special: 32Bit parameter for subfunction subfunction: 16Bit number of subfunction Funktionen ---------- Die Funktionen sind im Textfile SERSOFST.TXT definiert. Einige werden von meinen Treibern schon untersttzt. Siehe SERSOFST.TXT zu Einzelheiten und zum Status dieses (noch? nicht Atari-offiziellen) Standards. Harun Scheutzow, 16.05.1993 letzte nderung: 21.11.1993 (02.01.1993: nur Textaufteilung) Ergnzung Byte4.Bit0: 20.08.1994 Harun_Scheutzow@B.maus.de Harun Scheutzow Dresdener Strae 83 D-10179 Berlin, Deutschland Data structure for request and display of additional possibilities of serial (and possibly other) communication routines ===================================================================== (Translated from German to English on 1994-01-02 by Harun Scheutzow) Cookie ------ Name: RSVF (RS232 Version Fast) Value: Pointer to data structure pointer must be <>0 and point to an even address Data Structure -------------- No matter how much objects can be placed one after the other as a list. On the end of the list a further list can be appended. On the end of the last list there is an end-object. Object ------ Every object is 8 byte long and starts on an even address. Byte 0..3 are a pointer to the name of the interface (filename) in ASCII. The Name has to start on an even address and is 0-terminated. Byte 4..7 contain information about the attributes of the object (the interface). Not yet defined bits/bytes must be setted to 0 by the creating program. Should additional information become necessary in the future, its existence will be displayed by some bits in byte 4..7. The information itself will lay in front of the name of the interface. Outstanding Objects ------------------- Outstanding objects are marked by bute4.bit7 =0. end-object: byte 0..3 0, a NIL-pointer, marks the end of the data structure link-object: byte 0..3 pointer to the next list of objects Attribut definitions in the value --------------------------------- Byte 4: Bit7 =1: this name is an interface Bit6 =1: this interface is known to the GEMDOS for fileI/O Bit5 =1: this interface is known to the BIOS (Bco*-routines) for the remainder we will have ideas in the future Bit0 =1: Before the name (nameaddress-4) there is a pointer to an array of pointers to functions, as passed to the Magic version3 function Dcntl. Byte 5: free for future use Byte 6: BIOS-number of the interface (Bco*-routines) Byte 7: free for future use Sence and Purpose ----------------- Communication programs can find out which interfaces suit themselves by using RSVF. Additional they get to know the assignment GEMDOS-interface name (in U:\DEV\) to BIOS-device number. Least demands for driver with GEMDOS-bit set -------------------------------------------- Fopen, Fclose, Fread, Fwrite, Fcntl are managed. If a function (or subfunction of Fcntl too) is not available, an error code (-32 (EINVFN) or so) must be returned. Fopen is only allowed with the full path "U:\DEV\devicename". Constructions with Dsetdrv and Dsetpath are PROHIBITED. Fcntl has the function number $0104 and the parameter: handle, special, subfunction handle: 16Bit filehandle special: 32Bit parameter for subfunction subfunction: 16Bit number of subfunction Functions --------- The functions are defined in the text file SERSOFST.TXT Some are supported by my drivers until now. See SERSOFST.TXT about details and status of this (until now? not offical Atari) standards. Harun Scheutzow, 16.May.1993 last change: 21.Nov.1993 (02.Jan.1993: only text layout) added Byte4.Bit0: 20.Aug.1994 Harun_Scheutzow@B.maus.de Harun Scheutzow Dresdener Strae 83 D-10179 Berlin, Deutschland $/o|XhLaf-=vAq *q3xɢ4 j m=-dlc\kkQlabe0bNlModulare (serielle) Gertetreiber ================================= Achtung! Am 1994-12-30 habe ich eine wesentliche nderung vorgenommen. Es funktionieren nur DRVIN und Treiber zusammen, die entweder alle vor dem 1994-12-30 oder ab diesem Datum erstellt wurden. Dieses Paket enthlt serielle Treiber. Fr jede Schnittstelle oder jeden Schnittstellenbaustein exisitiert ein eigener Treiber. So hat der Nutzer die Arbeit mit der Auswahl der passenden Treiber, aber auch den Vorteil, nur die Treiber laden zu mssen, die er braucht. Da ich einen sauberen modularen Aufbau verwenden wollte, mu vor den eigentlichen Treibern ein Programm (DRVIN.PRG) geladen werden, das das Betriebssystem (TOS, Mag!X, MiNT) um die jeweils fehlenden Funktionen zur Treiberinstallation ergnzt. Reihenfolge ----------- DRVIN.PRG mu vor den Treibern geladen werden. Am Besten ist DRVIN zusammen mit den Treibern im \AUTO\-Ordner untergebracht. Dort sollte es aus Geschwindigkeitsgrnden mglichst weit hinten (vor den Treibern) stehen. DRVIN und die Treiber mssen andererseits vor eventuell im \AUTO\ installierten Programmen stehen, die die Treiber nutzen wollen. DRVIN.PRG wird in DRVIN.TXT nher beschrieben. Die einzelnen Treiber sind entsprechend der Schnittstellenbausteine oder -namen benannt und in den *.TXT-Files mit hnlichem Namen beschrieben. Mit einem TOS ab Version 2.0 oder einer entsprechenden Shell kann die Reihenfolge im \AUTO\ einfach ermittelt werden, indem man die Ausgabe der Verzeichnisse "unsortiert" erfolgen lt. Bei lteren TOS-Versionen kopiert man zuerst alle Programme aus \AUTO\ in ein anderes Verzeichnis, so da \AUTO\ leer ist, und kopiert die Programme dann in der gewnschten Reihenfolge wieder nach \AUTO\ zurck. DRVIN sollte nach folgenden Programmen gestartet werden, falls man diese verwendet, da andernfalls Probleme auftreten knnen: - Overscan-Treiber (falls TOS1.4-Fix dort eingeschaltet) - FPATCH2.PRG auf Falcon (FPATCH1.PRG sollte man ohnehin nicht nutzen) Konfiguration ------------- Die Auswahl der Treiber durch den Nutzer erlaubt schon eine gewisse Anpassung an das eigene System. Eine individuellere Einstellung der einzelnen Treiber ist wegen der Vielfalt der Hardware(umbauten), aber auch wegen unschner/unsauberer Software, oft erforderlich. Diese Einstellungen werden direkt in den Treibern gespeichert. Zustzlich enthlt der Treiber zu jedem Einstellungspunkt eine kurze Erklrung. Wenn man ausfhrlichere Informationen braucht, sind diese oft im *.TXT zum Treiber enthalten. Die Konfiguration erfolgt durch das beiliegende Programm SETTER.TTP, das in SETTER.TXT nher beschrieben ist. Ab TOS1.04 ist die Bedienung von SETTER einfach: Man nimmt das zu konfigurierende Programm mit der Maus und zieht es auf SETTER.TTP. SETTER wird gestartet, ldt das Programm und wird entweder melden, da es nicht konfigurierbar ist, oder den Konfigurationsdialog beginnen. Bei alten TOS-Versionen wird SETTER durch Doppelklick gestartet und in der erscheinenden Dialogbox der Name und Pfad des zu konfigurierenden Programms angegeben. HSMODEM1 (-Kompatibilitt) -------------------------- Diese Treiber ersetzen HSMODEM1. Die BIOS-Funktionsaufrufe fr MODEM1 sind wegen der Untersttzung mehrerer Schnittstellen ein ganz klein wenig langsamer als bei HSMODEM1. Wer ausschlielich ein altes Programm zusammen mit der letzten Version (HSMOD105.LZH) von HSMODEM1 benutzt, braucht nicht auf diese Treiber "upzudaten". Wenn MFP.PRG als einziger oder als letzter Treiber geladen wird, sollten alle Programme, die mit den HSMODEM1-Versionen gelaufen sind, auch mit MFP.PRG funktionieren. Kurzanleitung ------------- Dieser Abschnitt soll die Installation unter TOS und Mag!X mglichst kurz und einigermaen verstndlich beschreiben. Er sollte als Programm betrachtet und von vorn nach hinten "abgearbeitet" werden. Sie haben in einem Programm, das Sie benutzen wollen, den Hinweis gefunden, da diese Treiber bentigt werden oder Vorteile bringen. Sie haben irgendeinen anderen Grund fr die Installation dieser Treiber. Wenn Sie keinen Grund zur Installation haben, dann sollten Sie die Texte "aktionslos" lesen. Falls Sie ein Programm im \AUTO\-Ordner haben, das die seriellen Schnittstellen benutzt, kopieren sie es aus dem \AUTO\ heraus. Entfernen Sie installierte Patchprogramme fr die seriellen Schnittstellen, wie z.B. RS232ENC, TURBOCTS, SERIALFX, aus dem \AUTO\. Whlen Sie die Treiber aus diesem Paket, die Sie brauchen. Folgende Stichpunkte sollen Ihnen helfen: Grundausstattung: fr ST, STE, MegaST: MFP.PRG fr MegaSTE: MFP.PRG, SCC.PRG fr TT: MFP.PRG, SCC.PRG, MFP_TT.PRG fr Falcon: SCC.PRG Zustzliche oder erweiterte Ausstattungen: Wenn Sie Ihren MegaSTE, TT oder Falcon mit einem Am85C230A oder Z85230 anstelle des originalen 85C30 ausgestattet haben, knnen Sie anstelle des SCC.PRG das ESCC.PRG verwenden. Im Lieferzustand enthalten diese Computer nur einen SCC, also dann auch nur das SCC.PRG verwenden! Wenn Sie bei Ihrem Falcon die im Originalzustand nicht vorhandene MFP-Schnittstelle (MODEM1) herausgefhrt haben, knnen Sie dafr zustzlich das MFP_FALC.PRG auswhlen. Wer ST_ESCC in seinem ST, STE oder MegaST installiert hat, benutzt dafr zustzlich das ST_ESCC.PRG. Wer sonstige Schnittstellenumbauten hat, mge die Texte lesen und sich dann eventuell an mich wenden. Die ausgewhlten Treiber werden mit SETTER.TTP konfiguriert, siehe oben unter "Konfiguration". Dazu mssen Sie die gestellten Fragen beantworten und Entscheidungen treffen. Oft ist die Standardeinstellung verwendbar. Falls Sie zustzliche Informationen brauchen, finden Sie diese in den *.TXT-Files, die so hnlich wie die Treiber heien, z.B. in MFP.TXT fr das MFP_FALC.PRG. Sie kopieren DRVIN.PRG in den \AUTO\-Ordner. Sie kopieren die ausgewhlten und konfigurierten Treiber hinterher. Die Reihenfolge der Treiber ist unwesentlich. (In der Hoffnung, da die Nutzerprogramme modern und fehlerfrei sind. Ansonsten trifft diese Aussage nicht zu.) Damit ist die Installation abgeschlossen. Booten Sie den Computer neu und probieren sie die Treiber aus. Wenn es einigermaen funktioniert, kopieren Sie das die seriellen Schnittstellen nutzende Programm, das Sie am Anfang entfernt haben wieder in \AUTO\. Copyright --------- Dieses Treiberpaket darf unter folgenden Voraussetzungen frei kopiert werden: - Die Anleitung(en) und Treiber werden unverndert kopiert. - Die Kopien sind kostenlos, oder auf dem blichen Preisniveau einer PD-Disk. - Das Beilegen zu PD- und Sharewareprodukten ist generell gestattet. - Das Beilegen zu kommerziellen Produkten ist gestattet. Der Vertreiber oder Programmierer mu mich aber darber informieren (Email gengt). - Ich bitte darum, nur in Ausnahmefllen einzelne Dateien zu kopieren, da der Erstnutzer mit unvollstndigen Paketen wenig anfangen kann. bersetzungen der Texte in andere Sprachen sind ausdrcklich erwnscht. Das deutsche Original mu aber weiterhin beiliegen. Wer Dateien hinzufgen will, mu diese eindeutig als seine Zugabe kennzeichnen. Ich bin an einer Fehlerfreiheit dieser Software interessiert. Deshalb habe ich sie im Rahmen meiner Mglichkeiten grndlich getestet. Sollten Fehler auftreten, bitte mglichst genaue Beschreibung an meine Email- oder Postadresse schicken. Ich kann nur Fehler beseitigen, die ich anhand der Beschreibung entweder reproduzieren kann oder bereits finde. Ich hafte nicht fr irgendwelche Auswirkungen oder Nichtwirkungen, gleich welcher Art, die der Einsatz oder Nichteinsatz von Teilen dieses Paketes oder des kompletten Paketes hat. Produktnamen und Warenzeichen werden ohne Gewhrleistung einer freien Verwendbarkeit benutzt. Diese Treiber und Dokumentationen sind alle in meiner Freizeit entstanden. Es gibt keine Firma (mancheiner denkt jetzt sicher an die mit dem zwei A im Namen), die mich hierfr bezahlt. Untersttzt werden meine Aktivitten von den Programmierern, die diese Treiber verwenden, und von den Usern, die mir (mglichst gute) Fehlermeldungen schicken. Bei ihnen mchte ich mich an dieser Stelle bedanken und gleich einen Aufruf anschlieen: Wenn jemand Fehler in diesen Texten findet, ein gutes Beispielprogramm geschrieben hat, das er gern weitergeben mchte, die Beschreibung irgendwo ausfhrlicher und verstndlicher gemacht oder gar in bersetzt hat, mge er sich bei mir melden. Ich bin sehr daran interessiert, fachlich korrekte Ergnzungen und Beispielprogramme in dieses Paket aufzunehmen. (Ich bin ein Freund ausfhrlicher eindeutiger Dokumentationen, andere mgen Beispiele.) Meine Adressen: Mausnetz: Harun Scheutzow @B Internet: Harun_Scheutzow@B.maus.de (Wegen der Beschrnkungen des Mausnetzes BITTE KEINE Mails grer als 16KByte schicken!) Postanschrift: Harun Scheutzow Dresdener Strae 83 D-10179 Berlin, Deutschland Weitere Dateien --------------- Neben den Treibern mit Dokumentation sind noch enthalten: Das Programm SETTER mit Dokumentation. Die Beschreibung des RSVF-Cookies RSVF_COO.TXT. Der Standardisierungsvorschlag fr ein hardwareunabhngiges Softwareinterface fr serielle (und hnliche) Schnittstellen SERSOFST.TXT, der eine deutsche und eine englische Fassung enthlt. Versionen --------- Ich vergebe keine Versionsnummern, sondern berlasse die Unterscheidung dem in der Installationsmeldung der einzelnen Programme ausgegebenen Datum. Ich notiere das Datum ab sofort als Jahr-Monat-Tag, ist eindeutig unterscheidbar von der deutschen Schreibweise Tag.Monat.Jahr, da die Jahreszahl vierstellig ist. Aushilfsweise kann man das Filedatum betrachten, das sich jedoch beim Kopieren unter alten TOS-Versionen ndern kann. Neue Versionen sind zuerst in der Maus Berlin3, Telefonnummer +49-30-6249514, zu finden und verbreiten sich schnell ber die Muse. Wenn ich die Mglichkeit habe, lege ich eine aktuelle Version auf den Internet-Server atari.archive.umich.edu. Man sollte nach dem Filenamen "HSMOD*.*" suchen lassen. Das Archiv wird HSMODAxx.LZH heien, wobei xx fr die fortlaufende Verffentlichungsnummer und das A fr alle Schnittstellen (kann sich auch mal ndern!) steht. ---EOF--- @@<???<<# <#<???@` 0 @@   ?` 00 `@x???   00``?   @@x@`0  0` >?~ <??< ?? 6 0v 4 00 4 @@ |0``0 |@@0<????????>0<????????<0????????0,# 0 > #/>0,# 0 0 #,0`>0    >0`VfVVvvDRVIN.PRG ========= (Ich habe keine Zeit, alles ausfhrlich einzutippen. Wenn jemand Treiber fr andere Hardware oder einen "Treiberadapter" fr Mint schreiben will, kann er sich gern an mich wenden. Assemblerkenntnis setze ich allerdings voraus. Irgendwann wird hier die vollstndige Doku der Funktionen erscheinen.) Dieses Programm (DRVIN) untersttzt nachladbare Gertetreiber. Es mu vor diesen Treibern geladen werden. DRVIN und Treiber mssen vor den Programmen geladen werden, die die Treiber nutzen sollen. DRVIN gehrt in den AUTO-Ordner (fr Spezialisten: oder in eine quivalente Programmsammelecke). Man kann es zu Testzwecken auch vom Desktop aus starten. Es sollte aus Geschwindigkeitsgrnden mglichst weit hinten im AUTO-Ordner stehen. TOS --- DRVIN luft unter allen mir bekannten TOS-Versionen. Mag!X, MagiC ------------ DRVIN luft unter Mag!X ab Version 2.00. Mit lteren Mag!X-Versionen mte es ebenfalls funktionieren, dies wurde aber nicht getestet. Bei MagiC-Versionen >2.00 sind einige Funktionen von DRVIN unntig und werden nicht verwendet. Es wird ein MagiC geben, wahrscheinlich MagiC3, das alle Funktionen von DRVIN enthlt. Dann ist DRVIN berflssig und die Treiber werden ohne DRVIN gestartet. MiNT ---- Wenn man DRVIN und die Treiber vor MiNT startet, bleibt nur wenig von den Funktionen brig. Deshalb sollte man DRVIN und die Treiber nach MiNT starten. Dabei realisieren sie alle ihre Funktionen wie unter TOS, aber nicht mehr. Umlenkungen, Schlafenlegen oder sonstige unter TOS nicht ferfgbare Funktionen sind mit den Filehandles dieser Gerte nicht mglich. Ich wei nicht, ob die Umschaltung des AUX-Gertes fr den aktuellen Proze dann noch funktioniert. Ich benutze weder MiNT noch MultiTOS. Solange sich kein MiNT-Freak findet, der die Anpassung und Untersttzung bernimmt, wird es wohl kaum speziell an MiNT angepate Versionen geben. Die Konfiguration ----------------- Die Konfiguration erfolgt durch das SETTER.TTP. Zur Bedienung siehe SETTER.TXT. FASTINT: MFP.PRG kann den Timerinterrupt des TOS modifizieren, um so 57600Bd mit 8MHz-68000 ber MODEM1 zu ermglichen. Auch auf MegaSTE, TT und Falcon kann es noch positive Wirkungen haben. Unter MagiC wird die Modifikation nicht durchgefhrt, da MagiC (ab Version 2.0) bereits eine "freundliche" Timerroutine besitzt. Bei Experimenten mit anderen Betriebssystemen oder seltsamen Fehlern sollte man zuerst FASTINT abschalten. Funktionsweise (fr Interessenten): Es hat sich gezeigt, da es ausreichend ist, wenn die Routine (GEMDOS-Uhr) in NEXT_TIM (negative LineA-Variable) mit einem IPL < 6 aufgerufen wird, um auf 68000/8MHz den 57600Bd-Empfang zu ermglichen. Also hnge ich ein Programmstck ein, da den IPL auf 5 heruntersetzt. Diese Vorgehensweise ist nicht vllig unkritisch, bringt aber nur Probleme, wenn andere Programme ebenfalls derartige Fummeleinen anstellen. EXOPEN: (Wirkt nur, wenn der GEMDOS-Teil des DRVIN benutzt wird, also nicht unter Magic Version3.) Mit "Ja" wird eine strenge berwachung der GEMDOS-Funktion Fopen aktiviert, die verhindert, da ein Gert mehrmals gleichzeitig geffnet ist. Damit kann man benutzte (geffnete) Gerte gegen unbeabsichtigte Eingriffe durch andere Programme schtzen, aber nur auf GEMDOS-Ebene. Normalerweise sollte man "Nein" benutzen, da einerseits einige Programme mit einer Fehlermeldung bei Fopen nicht klarkommen (unsinnige Anzeigen bis zum Abturz) und andererseits die Beendigung von Programmen nicht berwacht wird, so da im Gegensatz zum sonstigen GEMDOS-Verhalten das Gert geffnet bleibt (auch bei anormalem Programmende = Absturz)! (Kurzfassung: Momentan mehr ein Spielzeug fr Entwickler.) Aufbau ------ DRVIN besteht aus drei wesentlichen Teilen: dem Anlegen des RSVF-Cookies, der neuen Bconmap- und MAPTAB-Verwaltung fr BIOS und XBIOS sowie den Basisroutinen fr die Installation einfacher Mag!X-kompatibler Gertetreiber. RSVF-Cookie ----------- Es wird ein RSVF-Cookie angelegt, dessen Wert auf zwei 0-LONGs zeigt, also auf ein Ende-Objekt. So brauchen Gertetreiber keinen Cookie mehr anzulegen, sondern sich nur noch in die RSVF-Listen einzuhngen. Der RSVF-Cookie liefert eine Struktur zur Anzeige grundlegender Informationen ber Schnittstellen. Zur Beschreibung des RSVF-Cookies siehe Textfile RSVF_COO.TXT. MAPTAB-Verwaltung ----------------- Dieser Programmteil hngt im BIOS- und XBIOS-Trap und bearbeitet die XBIOS-Funktionen Bconmap, Rsconf und Iorec(fr AUX). Es werden die BIOS-Funktionen Bconstat, Bconin, Bcostat und Bconout fr Gert AUX sowie alle Gerte ab einschlielich 6 aufwrts bearbeitet. Bconmap und eine MAPTAB werden unter jeder TOS-Version angelegt. Die Routinen des aktuell per Bconmap eingestellten Gertes werden zustzlich in die xco*-Vektoren (auer bei TOS1.00) kopiert, dort aber nicht benutzt. Es werden zwei neue Bconmap-Unterfunktionen mit den Opcodes -400 und -401 zum berschreiben eines MAPTAB-Eintrages und zum Anhngen an die MAPTAB bereitgestellt. Die Lnge der MAPTAB ist nicht mehr fest begrenzt. ### Momentan liegt die Maximallnge in DRVIN.PRG bei 10 Eintrgen, ist aber nur eine konstante Variable in der Assemblerquelle und jederzeit erweiterbar. GEMDOS-Teil ----------- Der sieht von auen aus wie die bisherigen HSMODEM1-Versionen und von innen wie eine (### momentan noch) stark abgerstete Mag!X-Beta. Es werden Fopen, Fread, Fwrite, Fclose, Fcntl an den Treiber weitergeleitet, aber alles mit fileptr == NULL. Aktionen -------- Wird DRVIN auf TOS > 2.00 oder auf Mag!X >= 2.00 losgelassen, dann kopiert es die alten Routinen aus den alten MAPTABs, so da eine Funktion der (X)BIOS-Aufrufe mit den alten TOS-Routinen gegeben ist, auch ohne installierte Treiber. Bei TOS1.00 sieht es ganz bel aus, man mu den MFP-Treiber nachladen, sonst geht SerialI/O nicht mehr (nur Zeiger auf IOREC wird bertragen). Bei 1.00 < TOS < 2.00 geht es etwas, da nur Rsconf nicht bertragen wird, aber deshalb mu man trotzdem den MFP-Treiber nachladen. Mag!X- (und DRVIN-) freundliche Bco*-Routinen --------------------------------------------- vernderbare Register A0-A2/D0-D2 (auch bei Rsconf) Bconout mu mit dem Befehl lea 6(sp),a0 beginnen und wird meist hinter diesem (Startadr+4) mit A0 als Zeiger auf das WORD mit dem Parameter aufgerufen Neue XBIOS-Bconmap-Funktionen (-400, -401) ------------------------------------------ Diese Funktionen drfen nur zur Installation Mag!X-freundlicher Funktionen benutzt werden. In der MAPTAB ist Platz fr mehr als 4 Gerte. Der Lieferant dieser XBIOS-Funktionen (DRVIN oder zuknftiges Mag!X) sorgt fr ausreichend Platz zur Installation neuer Gerte in der MAPTAB. Entweder er schafft den Platz dynamisch oder er hat eine feste Obergrenze. Ein Treiber sollte trotzdem mit einer Fehlermeldung rechnen, die durch Speichermangel ausgelst sein knnte, aber auch ganz andere Ursachen haben kann. Die XBIOS-Funktion Bconmap wird um zwei Unterfunktionen erweitert. Sind diese Erweiterungen nicht vorhanden, bekommt man beim Funktionsaufruf automatisch eine 0 als Fehlermeldung zurck. LONG Bconmap((WORD)-400, (WORD) dev_nr, (LONG) ptr_to_6_longs) dev_nr ist eine Gertenummer ab 6 aufwrts, die in der MAPTAB bereits existieren mu, andernfalls wird der Fehlercode -15 EUNDEV zurckgegeben. ptr_to_6_longs zeigt auf eine Struktur, die einem MAPTAB-Eintrag entspricht. Diese Struktur wird auf den entsprechenden Platz in der MAPTAB kopiert. Ist das angesprochende Gert das aktuell per Bconmap fr AUX eingestellte, so werden die eben eingehngten Routinen auch nach xco* und in die aktuellen rsconf und iorec-Zellen kopiert. Diese Funktion dient nur zum Einhngen Mag!X-freundlicher Routinen. Als Erfolgsmeldung wird die Gertenummer zurckgegeben, auf die der Eintrag erfolgte, also dev_nr ist Rckgabewert. LONG Bconmap((WORD)-401, (LONG) ptr_to_6_longs) hnlich -400, fgt aber einen Kanal an die MAPTAB an. Rckmeldung ist entweder die von dieser Funktion fr den Eintrag gewhlte Kanalnummer, oder der Fehlercode -12 EGENRL, falls kein Platz fr eine MAPTAB-Vergrerung ist. Logischerweise kann es hier nicht vorkommen, das die Vektoren sofort nach xco* bertragen werden. Treiber ------- DRVIN bietet im GEMDOS-Bereich nicht alle Mglichkeiten der Mag!X-(beta)Versionen. Wer einen Treiber schreiben will, der auch unter DRVIN funktioniert, kann sich wegen der Einzelheiten an mich wenden. Versionen --------- 1993-11-23 GEMDOS-Trap modifiziert nur A0/D0 als Anpassung an die vielen unsauberen Programme. Fopen und Fclose werden an Devices weitergereicht 1993-11-28 Fehler unter TOS1.00 bei XBIOS-Bconmap beseitigt eigener Env-String _PNAM=DRVIN.PRG 1994-06-17 Zeigerblock fr Dcntl DEV_M_INSTALL auf das Format von MagiC Version 3 (frher Mag!X) gendert. INKOMPATIBEL zu frheren Versionen von DRVIN und Treibern. 1994-08-13 Wie unter MagiC wird nur Zeiger auf den Treiberblock bei Dcntl DEV_M_INSTALL gespeichert, nicht der Block selbst. Es ist Platz fr 16 GEMDOS-Gerte. 1994-08-18 FASTINT Konfigurationspunkt vom MFP* hierher verschoben und IPL4 statt IPL5 1994-08-25 interne nderung 1994-10-12 EXOPEN Option 1994-10-29 Dcntl verndert, liefert jetzt -36 beim Versuch, schon installierte Gerte nochmal zu installieren. Fdelete eingebaut. Falls sich ein Treiber lschen lt, mte jetzt Lschen und Neuinstallation wie unter MagiC3 gehen. FASTINT unter MagiC automatisch abgeschaltet. 1994-12-30 schnelle Bconmap-Parameterbergabe gendert, deshalb MAPT_APP/MAPT_OVE mit neuer Funktionsnummer Harun Scheutzow, 21.11.1993 und spter (Harun_Scheutzow@B.maus.de) ---EOF---W **)G9,7 -.W0//.U1W322 1A4W6554k7W+887MModular (Serial) Device Drivers =============================== Attention! On 1994-12-30 I made a larger change. Only DRVIN and drivers all written before the 1994-12-30 or all written on and after this date will work togehter. This package contains serial drivers. For every interface or every interface integrated circuit exist an own driver. The user has to deal with selecting the right drivers, but the advantage to load only the drivers he needs. Because I use a clean modular design, a special program (DRVIN.PRG) has to be loaded before the real drivers. This program adds the functions for driver installations, which are absent in the operating system (TOS, Mag!X, MiNT). Order ----- DRVIN.PRG has to be loaded before the drivers. DRVIN lays best in the \AUTO\-folder together with the drivers. It should be loaded as late as possible because of speed reasons, but before the drivers. DRVIN and the drivers must be loaded before programs installed in the \AUTO\, which want use the drivers. DRVIN.PRG is described in DRVIN.TXT. The drivers are named according to the names of the interfaces or interface ICs and described in the *.TXT-files with similar names. With TOS version 2.0 or greater or a good shell it's easy to watch the real order in the \AUTO\ by switching the display to "unordered / unsorted". Under older TOS desktops you have to move all programs from \AUTO\ into an other folder, so that \AUTO\ is empty, and then copy the programs back into \AUTO\ in the wished order. DRVIN shall be startet after the following programs if they are used, because otherwise problems could occur: - Overscan-driver (if TOS1.4-fix is on) - FPATCH2.PRG on Falcon (FPATCH1.PRG should not be used in general) Configuration ------------- The selection of the drivers by the user allows a part of adaption to the own system. A more individual adjustment of the drivers is often necessary because of the various hardware(enhancements), but too because of dirty software. These settings are saved direct in the drivers. The driver contains additionally a short (German) explaination to every configuration point. More information (English too) is contained in the *.TXT to the driver. The configuration is done by the program SETTER.TTP included in this package. It is described in SETTER.TXT. From TOS1.04 up the use of SETTER is simple: Take the program to modify with the mouse and drag it on SETTER.TTP. SETTER will start, load the programm and start the configuration dialog or give a message, that configuration is impossible because the program doesn't contain any settings. For older versions of TOS: doubleclick SETTER.TTP and enter the name and path of the program in the appearing dialog box. HSMODEM1 (-compatibility) ------------------------- These drivers replace HSMODEM1. The BIOS function calls for MODEM1 are because of the support of several interfaces a very little bit slower than in HSMODEM1. Who uses exclusively a old program together with the last HSMODEM1 version (HSMOD105.LZH), is not in need of updating to these drivers. If MFP.PRG is loaded as the only or the last driver, all old programs, running with the HSMODEM1 versions, should work with MFP.PRG too. Short Instruction ----------------- This chapter shall describe the installation under TOS and Mag!X as short and clear as possible. It should be seen as program and "executed" from the start to the end. You found in a program you want to use the hint that these drivers are necessary or will provide enhancements. You have any other reason for installing these drivers. If you have no reason for installation, you should read this text without "action". If you have any program in the \AUTO\-folder which uses the serial interfaces, move it out from the \AUTO\. Remove any installed patch programs for the serial interfaces, eg. RS232ENC, TURBOCTS, SERIALFX, from \AUTO\. Select the drivers you need of this package. The following hints shall help you: Basic equipment: for ST, STE, MegaST: MFP.PRG for MegaSTE: MFP.PRG, SCC.PRG for TT: MFP.PRG, SCC.PRG, MFP_TT.PRG for Falcon: SCC.PRG Additional or extended equipment: If you replaced the original 85C30 in your MegaSTE, TT or Falcon by an Am85C230A or Z85230, you can use ESCC.PRG instead of SCC.PRG. In the state of delivery these computers contain only a SCC, then use the SCC.PRG. If you modified your falcon by drawing out the MODEM1 interface not existent in the original state, you can use additionally MFP_FALC.PRG for this interface. Who installed the hardware ST_ESCC in his computer, uses additionally ST_ESCC.PRG. Who has other interface modifications, should read the textes and may ask me, if he finds nothing. The configuration of the selected drivers is done by using SETTER.TTP, see "Configuration" for details. You have to respond to the questions and decide something. Often you can use the standard settings. If you need additional information, you will find it in the *.TXT-files which are named similar the drivers, eg. in MFP.TXT are informations about MFP_FALC.PRG. You copy DRVIN.PRG into the \AUTO\-folder. You copy the selected and prepared drivers into \AUTO\. The order of the drivers is unimportant (hoping, that the user programs are modern and error free, otherwise this statement can be false). The installation is complete. Reboot your computer and test the drivers. When it runs correctly, copy the serial interface using program you removed at the beginning back into \AUTO\. Copyright --------- This driver package may be freely copied under the following conditions: - The documentation(s) and drivers are copied unchanged. - The copies are free of charge or at the same price level as a PD-Disc. - The distribution together with PD- and Shareware products is generally permitted. - The distribution together with commercial products is permitted. But the distributor or programmer has to inform me (email is sufficent). - Please copy single files only in exceptional situations because the first time user can't work with uncomplete packages. Translations in other languages are expressly wished. But the German original must stay included into the package. Who wants to add files, has to mark these as his Addition. I'm interested in an error free version of this software. I tested it in the range of my opportunities. If errors occur, please send a detailed report to my email- or post address. I can fix only bugs I can reproduce or find by the description. I'm not liable for any effects or no-effects equal of which kind caused by the use or no-use of this package in part or whole. Trademarks and Registered Trademarks are used without warrantee of free usability. These drivers and documentations I wrote in my spare time. There is no firm, which pays me for that. My activities are supported by the programmers using my drivers and the users sending me (good) bug reports. At this place I want to thank these persons and append an appeal: If somebody finds a mistake in these texts, wrote a good example program he wants to publish, made the describtion better or more intelligible or translated it, he/she/it should inform me. I'm interested in including correct addings and programs. (I'm a friend of complete documentations, others like examples more.) My addresses: Mausnet: Harun Scheutzow @B Internet: Harun_Scheutzow@b.maus.de (Because of the limitations in the mausnet, PLEASE DON'T send mails greater than 16kbyte) Post address: Harun Scheutzow Dresdener Strae 83 D-10179 Berlin, Germany Translation ----------- This documentation was translated to English by Harun Scheutzow and Stefan Damerau For comments about the translation send mail to: MausNet: Stefan Damerau @ SL Internet: cookie@cookie.syd.de (or stefan_damerau@sl.maus.de but only mail < 16kB!!!) Post address: Stefan Damerau Bergholm 31 D-24857 Fahrdorf, Germany Further Files ------------- The programm SETTER with documentation. The description of the RSVF-Cookie RSVF_COO.TXT. The proposal for a hardwareindependent softwareinterface to serial (and similar) interfaces SERSOFST.TXT, which contains a German and an English version. Versions -------- I give no version numbers, but use the date of the program printed out during installation as criterion. I note the date as year-month-day with an year number of four digits. The file date is only a bad replacement because it can change during copying. New versions are to find first in the Maus Berlin3, telefon number +49-30-6249514 (very often busy) an will spread about the Maus boxes. If I have the opportunity, I put the current version on the internet-server atari.archive.umich.edu. It should be looked for the file "HSMOD*.*". The archiv is named HSMODAxx, where A stands for all serial interfaces and xx for a running publication number. ---EOF---ng utilities for every computer platform. If output size is not an issue, the best conversion method to use is UUEncoding/UUDecoding.DRVIN.PRG ========= (I have no time for typing everything in the long form. When somebody wants to write a driver for different hardware or so, he may contact me. In the future here will appear the complete documentation of the functions.) This program (DRVIN) supports loadable device driver. It has to be loaded before the drivers. DRVIN and drivers must be executed before the programs using this drivers. This program should be placed into the AUTO-folder (for specialists: or an equivalent program collection place). It can be startet from the desktop too for test purposes. TOS --- DRVIN works with all TOS versions I know. Mag!X, MagiC ------------ DRVIN runs under Mag!X from version 2.00 up. It should be run under older Mag!X versions too, but this isn't tested. With MagiC >2.00 some functions of DRVIN are no longer needed and not used. It will exist a MagiC, probably MagiC3, in the future which contains all functions of DRVIN. In this case DRVIN is not necessary and the drivers will be startet without DRVIN. MiNT ---- If DRVIN and the drivers are started before MiNT only a little of the functions will remain. That's why DRVIN and the drivers should be started after MiNT. In this case all functions are realized as under TOS, but no more. Redirections and sleep and other plays are impossible with this file handles. I don't know whether the AUX-device switching for the aktual process will continuosly work. I use neither MiNT nor MultiTOS. As long as no MiNT freak is to be found who takes over the adaption and support, no special versions for MiNT will exist. Configuration ------------- The configuration is done by using SETTER.TTP.. See SETTER.TXT for use. Because the explainations in the drivers are German I added an abbreviation. FASTINT: DRVIN.PRG is able to modify the timer interrupt of the TOS to achieve 57600Bd on MODEM1 on a 8MHz-68000. Even on MegaSTE, TT and Falcon the modification can provide some enhancements. Under MagiC the madification will never be done because MagiC (version 2.0 and newer) has already a "friendly" timer routine. FASTINT should be switched off for experiments with other operating systems or if mystic errors/behavior occur. Function (for interested users): I discovered it's enough to call the routine (GEMDOS-timer) in NEXT_TIM (negatvie LineA variable) with an IPL < 6 to enable 57k6Bd receive with an 68000/8MHz. So I insert a piece of code to set the IPL down to 5. That's not without any risk but only creates problems when other programs do such hacks too. EXOPEN: (works only if the GEMDOS-part of DRVIN is used, not under Magic version3.) "Yes" activates a very restricted GEMDOS-Fopen. It becomes impossible to Fopen a device more than ones at a the same time. It may protect (open) devices against influences of other programs on the GEMDOS-level. Normally you should answer "No", because some programs don't expect an error code from Fopen (reactions from senseless displayings till crashes) and because the program termination (normal and abnormal = crash) isn't watched, that means if the program doesn't close a device it remains open! (In few words: It's a game for developers.) Construction ------------ DRVIN consist of three import parts: making the RSVF-cookie, new Bconmap- and MAPTAB-manager for BIOS and XBIOS, basic routines for installation of simple Mag!X compatible devices drivers. RSVF-Cookie ----------- A RSVF-cookie is created which value points to two 0-LONGs, representing an end-object. So devices drivers aren't in need of creating a cookie. They hook themselves only in the RSVF-lists. The RSVF-cookie provides a structure for providing the basic information about interfaces. The description is contained in the file RSVF_COO.TXT. MAPTAB-Verwaltung ----------------- This part hooks in the BIOS- and XBIOS-trap and manages the XBIOS-functions Bconmap, Rsconf and Iorec(for AUX). The BIOS-functions Bconstat, Bconin, Bcostat and Bconout for device AUX and all devices from included 6 up are managed. Bconmap and a MAPTAB are provided under every TOS-version. The routines of the actual setted device by bconmap are copied in the xco*-vectors (except TOS1.00) too, but not used there. Two new Bconmap-subfunctions with the opcodes -400 and -401 are provided for overwriting a MAPTAB-entry and for adding a new entry. The length of the MAPTAB is no longer limited. ## The actual limit in this DRVIN is 10 entry, but this is only a constant in the source, easy to change and extend. GEMDOS-part ----------- It looks like the old HSMODEM1-version from outside and from inside like (### at the moment) a reduced Mag!X-beta. Fopen, Fread, Fwrite, Fcntl are directed to the driver, but all with fileptr == NULL. Actions ------- When DRVIN is started under TOS>2.00 oder Mag!X>2.00, all old routines from the old MAPTAB are copied in the new one, so that the (X)BIOS-functions will work with the old routines if no driver is installed. Under TOS1.00 it looks very bad, the MFP-driver must be loaded, otherwise serialI/O will not work (only the IOREC-pointer is copied). Under 1.00 new MAPT_APP/MAPT_OVE function numbers Harun Scheutzow, Nov. 21st 1993 and later (Harun_Scheutzow@B.maus.de) ---EOF---this option is used, ESS-Code will include the complete path of the source file in the encoded data. Thus, when decoding, the file will be written to the same path. This option should usually not be used, since it is unlikely that the system that will receive the file will have the same directory structure as your system. I. Specify Segments - This option (when selected) causes ESS-Code to prompt the user for the name and location (using the file selector) of each piece of the file to be UUDecoded. This option will mainly be of interest to users of Hermes UUCP or UPoint, who will no longer have to copy messages out of their news directory, and then waste time renamingSCC.PRG, ESCC.PRG, ST_ESCC.PRG ------------------------------ (Note for the English reading people: The English version is appended on the German, look for it!) !!! Wichtiges neues selbst bersetzt, Rest mit "" und "" geklammert. !!! Dies sind Treiber fr die mit einem SCC oder ESCC (z.B. Z8530, Am85C30, Z85230) ausgestatteten seriellen Schnittstellen der Ataris und fr die Zusatzhardware ST_ESCC. Sie funktionieren zusammen mit DRVIN.PRG oder einem gleichwertigen Ersatz. Einfhrende Bemerkungen finden sich in 1_README.TXT. Allgemeines ----------- Als "ESCC" betrachte _ich_ nur den Z85230 und den Am85C230A. Diese besitzen nebem dem auf 8 Byte vergrerten EmpfangsFIFO auch einen mindestens 4 Byte groen SendeFIFO. Ein ESCC beinhaltet alle Funktionen eines SCC. Die Konfigurationsmglichkeiten der einzelnen *SCC*.PRG unterscheiden sich etwas. Taktrate und Baudraten ---------------------- Ein SCC kann fr die Baudratenerzeugung verschiedene Taktquellen verwenden. Die meistbenutzte Taktquelle ist sein Systemtakt PCLK. Dieser Takt PCLK betrgt bei einem normalen (so wie von Atari geliefert) MegaSTE, TT und Falcon 8MHz (=8000000Hz). Das ist zwar eine schne Zahl, die aber zur Erzeugung der hohen Standardbaudraten wenig geeignet ist. Die hohen Baudraten im MegaSTE/TT/Falcon werden aus anderen Taktquellen erzeugt. Meine Hardware ST_ESCC wird immer mit 14745600Hz getaktet. Man kann einen MegaSTE, TT oder Falcon mit einem Quarzoszillator und etwas Draht auf PCLK=14745600Hz umbauen (Vorschlag von Franz Sirl). Wenn man nur die 115200Bd und 57600Bd auf MODEM2 haben will, bietet sich ein einfacherer Umbau nur mit Draht an, siehe "MODEM2 des TT mit 57600 und 115200Bd". Die Treiber unterscheiden automatisch zwischen den beiden PCLK-Taktraten 8MHz und 14745600Hz und zeigen die ermittelte Rate in ihrer Installationsmeldung an. Bei einem PCLK von 8MHz sind folgende Rsconf-Baudraten mglich: (neue - alte) SERIAL2: 230400 - 200 115200 - 150 57600 - 134 38400 - 110 MODEM2: 38400 - 110 153600 - 75 76800 - 50 Bei MegaSTE und Falcon (nicht beim TT) sind zustzlich auf MODEM2: 230400 - 200 115200 - 150 57600 - 134 Bei PCLK = 14745600Hz sind bei MODEM2 und SERIAL2 mglich: neue Rate alte Rate 230400 200 115200 150 57600 134 38400 110 153600 75 76800 50 Wenn man die GEMDOS-Fcntl TIOC?BAUD benutzt, hat man ohnehin kein Problem, dort erfhrt man, welche Baudraten mglich sind im Klartext als "Bit pro Sekunde". ST_ESCC enthlt immer einen ESCC. MegaSTE/TT/Falcon enthalten nur einen ESCC, wenn den jemand extra gewechselt hat. Der Treiber fr den SCC luft auch mit dem ESCC-Schaltkreis, umgekehrt nicht. SCC und ESCC ------------ Zur Erinnerung nochmal: Als "ESCC" betrachte _ich_ nur den Z85230 und den Am85C230A. Bei ST_ESCC wird immer ein ESCC eingesetzt. In MegaSTE/TT/Falcon befindet sich im Originalzustand nur ein SCC. Zur Entlastung der CPU und zur Verbesserung der Datensicherheit (geringere Wahrscheinlichkeit von Zeichenverlusten beim Empfang) kann man einen ESCC im PLCC-Gehuse einsetzen. SCC und ESCC sind pinkompatibel genug. SCC.PRG ------- Der Treiber fr MODEM2 und SERIAL2/LAN des MegaSTE und TT sowie fr die einzige durch Atari herausgefhrte RS232-Schnittstelle des Falcon (beschriftet mit MODEM), wegen ihrer Verwandschaften hier ebenfalls MODEM2 genannt. Beim TT (und Falcon, falls man dem einen Beschleuniger mit FastRAM spendiert hat) darf SCC.PRG _keinesfalls_ ins FastRAM, da es sonst mit zu schnellen Zugriffen auf den SCC Probleme geben kann. Diese Probleme knnten sich in Zeichenverlusten, unsinnigem Verhalten oder Bomben uern. Die Treiber mssen in physisch vorhandenes RAM geladen werden, drfen also _nicht_ im virtuellen Speicher liegen. ESCC.PRG -------- Siehe SCC.PRG. Dieser Treiber ist nur fr die Nutzer, die sich einen Z85230 oder Am85C230A eingebaut haben. Der SCC-Treiber funktioniert ebenfalls mit dem ESCC, nutzt die ESCC-Vorteile aber nicht aus. Der ESCC-Treiber ist fr den SCC sehr ungeeignet! ST_ESCC.PRG ----------- Der Treiber nur fr (ich komm mir langsam wie in einer Dauerwerbesendung vor) die von mir entwickelte Hardware ST_ESCC, die zwei zustzliche schnelle serielle Schnittstellen in ST/STE/MegaST realisiert. 115200Bd problemlos mit einem 8MHz/68000 unter TOS, das ist doch was. Die Konfiguration ----------------- Die Konfiguration erfolgt durch das SETTER.TTP. Zur Bedienung siehe SETTER.TXT. USE4C Diese Frage erscheint nur bei ESCC.PRG und ST_ESCC.PRG. Soll ein Empfangsinterrupt erst nach 4 empfangenen Zeichen erfolgen? Ich nenne diesen Modus, der erst nach 4 Zeichen einen Interrupt auslst, 4ZI. 4ZI entlastet bei "RTS/CTS"- und "ohne"- Handshake die CPU wesentlich. Bei "XON/XOFF"-Handshake ist er automatisch ausgeschaltet, der Aufwand an Sonderbehandlungen htte den Nutzen berstiegen. Neben den Vorteilen verkrzt 4ZI aber die freie Lnge des EmpfangsFIFOs von 8 auf 4 Zeichen. Nach einer Interruptmeldung des ESCC an die CPU knnen vor einer Reaktion der CPU nur noch 4 statt 8 Zeichen verlustfrei empfangen werden. Normalerweise schaltet man 4ZI an, antwortet also mit "Ja", da 4 freie Zeichen ausreichen und der Gewinn an CPU-Zeit durch die auf 1/4 reduzierten Empfangsinterrupts wesentlich ist. Wenn man unsaubere Programme hat, mu man 4ZI wahrscheinlich immer ausschalten, also hier mit "Nein" antworten. Diese unsauberen Programme uern sich durch verschiedene Verzgerungen: im Terminalmode kommen erst dann Zeichen auf den Bildschirm, wenn es 4 Zeichen sind. Unsaubere bertragungsprotokolle hngen einige Zeit (oder ewig) fest, besonders am Anfang oder Ende. M2TT Die Standardeinstellung "u" sollte keine Probleme bereiten, da der TT anhand des _MCH-Cookies erkannt wird und dann auf MODEM2 keine 57600Bd und 115200Bd mglich sind. "0" legt fest, da 57600/115200 bereitgestellt werden, was auf TTs aber nur sinnvoll ist, wenn man den Draht-Umbau gemacht hat. "1" legt fest, da 57600/115200Bd nicht mglich sind. Bei ST_ESCC.PRG wird diese Frage nicht gestellt. Wenn ein PCLK-Takt von 14745600Hz erkannt wurde, ist die Antwort auf diese Frage bedeutungslos. M1EMU Die Standardeinstellung ist "u". Dies drfte durch die automatischen Computertyperkennung anhand des _MCH-Cookies keine Probleme bereiten. Diese Funktion wurde extra auf Wunsch der Falcon-Besitzer und der Nutzer alter Programme eingebaut. Der reine Nutzer kann den Rest zu diesem Konfigurationspunkt berspringen. Wenn man M1EMU einschaltet, sollte man kein MFP*.PRG fr MODEM1 laden, da sich M1EMU damit beit! Der am Computer vorhandene MODEM1-Anschlu wird bei eingeschaltetem M1EMU unbrauchbar. "u" aktiviert M1EMU nur auf dem Falcon. "0" verbietet M1EMU generell. "1" schaltet M1EMU immer an. M1EMU, der MODEM1-Emulator, ersetzt die BIOS-Routinen des Kanals 6 (MODEM1) durch die BIOS-Routinen des Kanals 7 (MODEM2). Auerdem wird das aktuelle BIOS-Gert (AUX) auf 7 eingestellt (fr die etwas sauberere Software). Beim Falcon ... kann man so auch die Programme nutzen, die nur auf AUX (Kanal0) oder Kanal6 arbeiten wollen. Da die RING-Leitung (von MODEM2) ohnehin dort angeschlossen ist, wo beim ST die von MODEM1 lag, knnen solche Programme auch RING direkt in der Hardware (MFP, Bit6) abfragen. Anstelle der DCD-Leitung (Carrier Detect) von MODEM1 (wie beim ST) liegt auf Bit1 des MFP leider der /ACK-Eingang vom Druckerport (Pin10), dmlicherweise ohne Widerstand, so da er bei ausgeschaltetem oder nicht angeschlossenen Drucker wild schwingen kann. Bei eingeschaltetem Drucker drfte er meist H sein, was diese alten Programme als "NO CARRIER" interpretieren. Abhilfe: Verbindung (von Pin10) zum Drucker auftrennen und Pin10 am Druckerport mit Pin25 verbinden, signalisiert diesen alten Programmen immer "CARRIER". Bei MegaSTE/TT und ST_ESCC ... kann man so auch alte Programme ber MODEM2 laufen lassen, die die Statusleitungen RING und DCD direkt abfragen und sonst das BIOS benutzen. Sie drfen nur nicht direkt auf das Empfangs/Senderegister zugreifen. Man mu dazu die Statusleitungen RING und DCD von MODEM2 mit denen von MODEM1 verbinden. Fr eine vollsteckbare Lsung reichen drei SUB-D-Verbinder. RING ist Pin9 an einem 9poligen SUB-D und Pin22 an einem 25poligen SUB-D. DCD ist Pin1 an einem 9poligen SUB-D und Pin8 an einem 25poligen SUB-D. LANBIT Hiermit wird mit "Ja" das Schalten des Soundchipportbits PA7 zur Umschaltung der Pegelwandler zwischen SERIAL2 und LAN erlaubt. Dies sollte man nur auf MegaSTE und TT erlauben, deshalb ist die Grundstellung "Nein", also keine Soundchipbeeinflussung. Auf MegaSTE und TT ist PA7 nach Reset normalerweise auf SERIAL2 gestellt. LANEXT "Ja" erzeugt zwei Eintrge, SERIAL2 und LAN, in der Maptab (BIOS-Kanle), im RSVF-Cookie und im GEMDOS. Damit hat ein MegaSTE 4 Maptab-Eintrge statt normalerweise 3 und der TT 5 statt 4. Das knnte einige nicht so gute Programme doch verwirren. Deshalb ist die Standardeinstellung "Nein", bei der es nur einen Eintrag gibt, entweder SERIAL2 oder LAN. Vermutlich wird man ohnehin immer nur einen der beiden Kanle benutzen, so da "Nein" wohl die meistgebrauchte Einstellung sein drfte. LAN_S2 Hier wird die Voreinstellung von Kanal A des ESCC festgelegt, also ob er fr LAN ("0") oder wie normalerweise der Fall fr SERIAL2 ("1") benutzt wird. Falls bei LANEXT festgelegt wurde, da nur ein Eintrag existiert, so ist die hier gemachte Einstellung nicht nur die Voreinstellung, die direkt nach dem Laden der Treiber aktiv ist, sondern auch die endgltige Festlegung, ob ein SERIAL2- oder LAN-Treiber bereitgestellt. "u" ist die Standardeinstellung, bei der normalerweise SERIAL2, aber auf dem Falcon LAN, als Voreinstellung benutzt wird. DTRM2: Das DTR(Data Terminal Ready)-Signal der Schnittstelle MODEM2 wird beim Start dieses Treibers einmalig auf den hier angegebenen Wert gesetzt. Eine Aktivierung mit "Ja" entspricht der Arbeitsweise des TOS, eine Deaktivierung mit "Nein" verhindert das "ungefragte" Abheben eines entsprechend konfigurierten Modems. Einige Programme, die von diesen Treibern nichts wissen und entsprechend Ataris Entwicklerdokumentationen (die katastrophal falsch sind) erstellt wurden, kommen mit "Nein" nicht klar (unmotiviertes Auflegen whrend der Datenbertragung). DTRS2: Wie DTRM2, aber fr Schnittstelle SERIAL2. M2DRI: Diese Frage erscheint beim ST_ESCC.PRG nicht. Sie ist nur beim MegaSTE sinnvoll, der keinen RING-Eingang auf der MODEM2-Schnittstelle hat. Es ist aber ein (fast?) nie benutzter DSR-Eingang vorhanden. Die Einstellung "Ja" tut so, als ob der DSR-Eingang ein RING-Eingang wre und meldet den fragenden Programmen das Vorhandensein und den Zustand eines RING-Eingangs auf MODEM2. "Nein" ist die bliche Einstellung, die Schnittstelle hat also DSR, aber kein RING. Um "Ja" sinnvoll zu nutzen, mu man RING vom Modem auf DSR des Computers legen. Modifikation am 9poligen SUB-D-Stecker (des Modemkabels), den man (zum Betrieb, nicht zum Lten) in die MODEM2-Buchse steckt: Draht von Pin6 (DSR) abtrennen und Drahtende isolieren. Draht von Pin9 (RING) ablten und an Pin6 anlten. RBLM2: Wenn man hiermit nichts anzufangen wei, einfach 256 einstellen. Hier wird die Empfangspufferlnge der MODEM2-Schnittstelle in Byte eingestellt. Sie darf maximal 65534 und minimal 16 betragen. Werte auerhalb dieses Bereiches werden auf den Standardwert von 256 gesetzt. Die Lnge wird auf eine gerade Zahl abgerundet. Die Wassermarken werden generell auf 1/4 (low water mark) und 3/4 (high water mark) gesetzt. TBLM2: Wie RBLM2, aber diesmal die Sendepufferlnge. RBLS2: Wie RBLM2, aber diesmal fr Schnittstelle SERIAL2. TBLS2: Wie RBLM2, aber diesmal die Senderpufferlnge fr Schnittstelle SERIAL2. MODEM2 des TT mit 57600Bd und 115200Bd -------------------------------------- (Nur fr Experten) Der Leiterzug von pin17 des TT-MFP (MC68901) zu pin32 des SCC (Z85C30) wird aufgetrennt (oder pin17 des TT-MFP wird mit Plaststreifen gegen Fassung isoliert). Pin32 des SCC wird mit pin13 des SCC verbunden. Bei der entsprechenden Frage (M2TT) in der Konfiguration des ?SCC.PRG mu man dann vorgeben, einen MegaSTE/Falcon zu benutzen. MegaSTE mit MODEM2/SERIAL2-Fehlern ---------------------------------- Es gibt einige MegaSTE, die bei der Datenbertragung ber MODEM2 oder SERIAL2 und gleichzeitigen DMA-Zugriffen auf Festplatte oder Diskette Dateien zerstren. Meist uert sich dies darin, da (z.B. per ZMODEM) empfangene (oder gesendete) Archive (z.B. LZH, ZOO, ZIP) sich nicht mehr auspacken lassen (Fehlermeldung des Packers). Dieser Fehler wird durch ein fehlerhaftes PAL in der Steuerlogik fr den SCC verursacht. Franz Sirl hat ein GAL entwickelt, das das PAL ersetzt und die Fehler erfahrungsgem beseitigt. Das Listing fr das GAL ist in Mailboxen im Archiv FSER096B.LZH zu finden. LAN-Untersttzung ----------------- Das hat jetzt wieder eine ganze Menge Arbeit gemacht und ist noch nicht so ganz wie ich es mir vorstelle. Wre nett, wenn die (potentiellen) Anwender sich dazu mal uern. Die LAN-Schnittstelle und die SERIAL2-Schnittstelle benutzen den gleichen Kanal im SCC, Kanal A. Dieser Kanal A wird nur jeweils mit einem anderen Pegelwandler verbunden. SERIAL2 und LAN knnen also _nicht_ gleichzeitig betrieben werden. Im MegaSTE und TT erfolgt die Umschaltung zwischen den Pegelwandlern ber das Soundchip-Portbit PA7 und die Ausgangsleitungen des nicht aktiven Pegelwandlers werden auf einen inaktiven Pegel gelegt (??). Im Falcon gibt es keine Umschaltung, da nur der LAN-Pegelwandler vorhanden ist. Beim 1*RS232+1*LAN-Pegelwandler zum ST_ESCC gibt es ebenfalls keine Umschaltung. Die Mega-ST_ESCC-Version bietet bei entsprechender Bestckung die Umschaltmglichkeit mit einem mechanischen DIP-Schalter, der aber auch durch eine Leitung zum Soundchip (also wie beim TT) ersetzt werden kann. Mega-ST_ESCC schaltet jedoch im Gegensatz zum TT die Ausgangsleitungen des nicht aktiven nicht inaktiv. Dieses PA7-Bit wird in STs (und manchmal auch im MegaSTE und TT) durch eine Drahtbrcke auf den Druckerport gefhrt zur Ansteuerung von Scannern. Davon sollte der Besitzer des Rechners aber wissen und sich entsprechend verhalten. Ich bin der Meinung, da man normalerweise nur entweder LAN (ein Mix aus RS422 und RS423) oder SERIAL2 (RS232) benutzt. Der Treiber ist aber flexibel genug, auch die abwechselnde Nutzung beider Schnittstellen zu erlauben, ohne neu zu booten. Die Umschaltung erfolgt dabei ausschlielich durch das Fopen (GEMDOS) auf U:\DEV\LAN oder U:\DEV\SERIAL2 und bleibt auch nach Fclose bestehen. Die BIOS/XBIOS-Funktionen schalten nicht um sondern nutzen die durch das GEMDOS gemachte Einstellung. Die LAN-Schnittstelle hat keine RTS-Leitung, so da dort normalerweise kein RTS&CTS-Hardwarehandshake (Hwhs) mglich wre. Auf dem MAC habe ich in einem Terminalprogramm einen bidirektionalen Hwhs gefunden: DTR&CTS. Anstelle der RTS-Leitung wird also die DTR-Leitung benutzt. Dies habe ich hier implementiert, Hwhs (meist RTS&CTS genannt) auf LAN bedeutet also DTR&CTS. RTS wird intern benutzt, um den Sender hochohmig zu schalten. Im SERSOFST.TXT ist eine entsprechende Mglichkeit vorgesehen, mglicherweise baue ich das auch mal ein (ber I/O-Lines). ########## Momentan ist immer bei Umschaltung auf LAN kein DTR verfgbar in den I/O-Lines, das wird sich eventuell noch ndern, so da nur bei Hwhs kein DTR verfgbar ist. ############### Ich glaube, noch einen Unterschied zwischen den MAC-Schnittstellen und dem kompatiblen(??) Atari-LAN gefunden zu haben: Beim Atari sind RXD+ und RXD- ber einen 100Ohm-Widerstand (Abschlu) verbunden und der GPI liegt ber 100Ohm an GND. Beim MAC sind diese Widerstnde wohl nicht vorhanden und werden nur an den Enden eines Appletalk-Netzwerkes ber die kleinen Ksten irgendwie realisiert. Sieht also so aus, als sollte man nur 2 Ataris koppeln, knnte aber beliebig viele MACs aneinanderhngen??? Bitte mal jemand was dazu sagen, der vom MAC diesbezglich wirklich Ahnung hat. Anschlubelegung der 8poligen Mini-DIN-Buchse: --***-- / 8 7 6 \ |5 4 3| \ 2 1 / ------- Pin Name Beschreibung 1 HSKo Output Handshake, DTR-Signal vom SCC 2 HSKi Input Handshake or External Clock, CTS-Signal zum SCC 3 TXD- Transmit Data -, Sendedaten negiert 4 GND Signal Ground 5 RXD- Receive Data -, Empfangsdaten negiert 6 TxD+ Transmit Data +, Sendedaten nicht negiert 7 GPi General Purpose Input, DCD-Signal zum SCC 8 RxD+ Receive Data +, Empfangsdaten nicht negiert Wenn man die LAN(RS422/423)-Schnittstelle mit einer RS232 verbinden will (als Nullmodem mit Benutzung von Hwhs), sollte man verbinden: LAN RS232 HSKo CTS HSKi RTS TXD- RXD TXD+ offen RXD- TXD RXD+ GND GND GND Interessanterweise negieren alle Pegelwandler, nur der fr HSHi/CTS nicht. Dies wurde natrlich im Treiber bercksichtigt. Fr Programmierer: Der IOREC ---------------------------- Finger weg von der Bestimmung der lesbaren Byteanzahl ber den IOREC! Das geht bei eingeschaltetem 4-Zeichen-Interrupt des ESCC und ST_ESCC voll daneben. Immerhin bringt dieser Interruptmodus eine wesentliche Systementlastung. Stattdessen FIONREAD oder gleich Fread benutzen, funktionieren bei diesen Treibern beide richtig. Bconstat funktioniert ebenfalls. Wenn der Cookie RSVF und in der RSVF-Liste die benutzte Schnittstelle da ist, darf man sich darauf verlassen, da FIONREAD funktioniert. Das kann der MiNT-User zwar sabotieren, aber dann ist er selbst schuld. Solange die Fcntl-Funktion zur Vernderung der Puffergre nicht implementiert ist, ist es auf jeden Fall legal, die Puffergre und die Wassermarken in der IOREC-Struktur zu ndern. Dabei, und nur dabei, sehe ich es als legal und erforderlich an, ebenfalls die Schreib- und Lesezeiger gemeinsam auf Null zu setzen. Schlielich erwartet man in diesem Umstellungsmoment keinen Datenbertragungen mehr. Es ist denkbar, da irgendwann die IOREC-Benutzung entfllt und durch eine sinnvollere Datenstruktur ersetzt wird. Nur ein Beispiel: rckwrts laufende Zeiger wrden etwas Zeit einsparen. Aus Kompatibilittsgrnden wird wohl eine tote IOREC-Struktur zurckbleiben. Wer aber wirklich sauber programmieren will, sollte den Rckgabewert der XBIOS-Funktion IOREC testen (oder den Wert des Zeigers in der MAPTAB, wenn man so direkt reinfingert). Ist dieser Wert 0 oder ungerade, gibt es bestimmt keinen IOREC. Fr Programmierer: Untersttzte Funktionen ------------------------------------------ Alle Treiber untersttzen inzwischen die TIOCCTL(MAP/GET/SET)-Funktionen aus dem SERSOFST.TXT, wenn auch noch nicht fr alle Leitungen und noch ohne Callbacks. Aber das lt sich problemlos per TIOCCTLMAP erfragen. Welche Fcntl sonst noch untersttzt werden, lt sich ebenfalls durch Aufruf feststellen. Fr Programmierer: Behandlung von Empfangsfehlern ------------------------------------------------- Der ESCC macht eine Fehlerbehandlung recht schwer (bzw langwierig, was die Datenrate senken wrde), wenn man seinen EmpfangsFIFO sinnvoll nutzt. Deshalb ist die Empfangsfehlerabfrage mit TIOCCTLGET noch _nicht_ implementiert. Fehlerhaft empfangene Zeichen (auer receiver overrun, also nur parity und frame error) werden der Einfachheit halber mit in den Empfangspuffer bernommen. Im Gegensatz dazu beseitigt z.B. der MFP-Treiber alle Zeichen mit Empfangsfehlern. Versionen --------- Wenn nicht extra vermerkt, gelten die Daten fr alle *SCC*.PRG. 1993-11-25 jetzt auch 115200/57600 auf MODEM2 bei MegaSTE/Falcon ST_ESCC hat nichts sinnvolles zum Konfigurieren, entsprechend dmlich die Meldung 1993-12-01 TIOCM_RNG auf MODEM2 bei TT/Falcon/ST_ESCC, TIOCM_RNG auf SERIAL2 fr ST_ESCC, kleine Verzgerung fr Siegfried Hartmanns TT an einer Stelle eingebaut 1993-12-27 Fcntl TIONOTSEND implementiert, bei ESCC und ST_ESCC ist 4-Zeichen-Interrupt abschaltbar 1994-01-01 TIOCM_DSR in den TIOCCTL* vorhanden, Fcntl TIOCFLUSH implementiert, DTR-Signal durch Nutzer voreinstellbar, Puffergren durch Nutzer einstellbar 1994-03-27 Fcntl TIOCFLUSH Nr.1,2,3 gehen jetzt endlich 1994-04-07 Empfangspuffer High-Water-Mark richtig initialisiert 1994-06-12 M1EMU (MODEM1-Emulation durch MODEM2) ist mglich, alle ?TB?? Konfigurationen in einer Tabelle 1994-06-17 ACHTUNG! Installationsblock an MagiC3 angepat. Nur noch Treiber und DRVIN von 1994-06-17 oder jnger zusammen verwenden. Versionen vor dem 1994-06-17 laufen nicht mit denen ab 1994-06-17 zusammen. 1994-07-11 Konfigurationspunkt LANBIT neu 1994-08-20 M2TT mit Autodetect ausgestattet, 1994-08-13 LANBIT, LANEXT, LAN_S2 neu/gendert, Byte4.Bit0 im RSVF 1994-08-27 Konfigurationspunkt PCLK ersetzt durch automatische Ermittlung 1994-10-09 DTR mit TIOCCTLGET rcklesbar (RTS auch, aber noch versteckt), CTS lesbar 1994-10-29 TIOCFLUSH korrigiert, etwas rumgebastelt, 230400Bd 1994-12-25 Konfigurationspunkt M2DRI, etwas rumgebastelt, u.a. fr 68040 mit WriteBack-Cache-Einstellung 1995-01-04 schnelle Bconout-Parameterbergabe gendert (und MAPT_APP/MAPT_OVE Funktiosnummer), ... 1995-01-15 XON/XOFF-Empfangsfehler bei Empfangs != Sendepufferlnge raus Harun Scheutzow (Harun_Scheutzow@b.maus.de) SCC.PRG, ESCC.PRG, ST_ESCC.PRG ------------------------------ (The most important parts translated from German to English on 1994-01-09 by Harun Scheutzow. I have no time for translating all. If anybody translates the remaining parts, I'm very interested in getting the result for including it in the next version of this package. My native language is German, I think a person whos native language is English would do a much better translation. Thanks! (Send only mails smaller than 16kbyte to my email address.)) These are drivers for the serial interfaces realized by a SCC or ESCC (eg IC Z8530, Am85C30, Z85230). They work together with DRVIN.PRG or an equivalent replacement. 1_README.TXT contains an introduction. The general ----------- I call only the Z85230 and the Am85C230A an "ESCC". These ICs have an 8 byte receiver FIFO and a transmitter FIFO not smaller than 4 byte. An ESCC contains all functions of the SCC. The configuration possibilities of the *SCC*.PRG differ a little bit. Clock rate and baud rate ------------------------ A SCC can use different clock sources for the generation of baud rates. The mostly used clock source is its system clock PCLK. This PCLK is 8MHz (8000000Hz) in a normal (as delivered by Atari) MegaSTE, TT and Falcon. That is a nice number, but unsiutable for generation of the high standard baud rates. The high baud rates in MegaSTE/TT/Falcon are generated from other sources. My hardware ST_ESCC is clocked by 14745600Hz. It is possible to modify the MegaSTE/TT/Falcon with a quarz oscillator and a bit wire to PCLK=14745600Hz (proposal of Franz Sirl). If only 115200Bd and 57600Bd on MODEM2 is needed, a more simple modification with one wire is possible. (## No time for description. If there is much interest, in a next version. ##) The drivers detect automatically whether there is a PCLK clock frequency of 8MHz or 14745600Hz and display it rate in their installation message. With a PCLK of 8Mhz are the following Rsconf-baud rates possible: (old - new) SERIAL2: 115200 - 150 57600 - 134 38400 - 110 MODEM2: 38400 - 110 153600 - 75 76800 - 50 On MegaSTE and Falcon (not on TT) additionally on MODEM2: 115200 - 150 57600 - 134 With PCLK = 14745600Hz are possible on MODEM2 and SERIAL2: old rate new rate 115200 150 57600 134 38400 110 153600 75 76800 50 If the GEMDOS-Fcntl TIOC?BAUD is used there is no problem at all because it provides the possible baud rates as "bit per second". ST_ESCC contains ever an ESCC. MegaSTE/TT/Falcon contain only an ESCC if somebody changed this IC. The driver for SCC runs on the ESCC too, but the ESCC driver will not correctly run on a SCC. SCC and ESCC ------------ Remember: I call only the Z85230 and the Am85C230A an "ESCC". ST_ESCC contains ever an ESCC. In the MegaSTE/TT/Falcon there is a SCC in the original state. To decrease the CPU load and to improve the data safety it is possible to insert an ESCC with PLCC-package. SCC and ESCC are pin-compatible enough. SCC.PRG ------- This is the driver for MODEM2 and SERIAL2 of MegaSTE and TT and for the only RS232 interface of the Falcon (signed with MODEM) drawn out by Atari. This "MODEM" of the Falcon is called MODEM2 in this text because of its similarity. On the TT (and Falcon, if equipped with a speeder with FastRAM) *SCC*.PRG must not be loaded in the FastRAM. Otherwise problems (bombs, lost of characters, spurios behavior) could occur caused by a too fast access to the SCC. The drivers must be loaded into physical RAM, they must _not_ be loaded into virtual RAM. ESCC.PRG -------- See SCC.PRG. This driver is only for computers with a Z85230 or Am85C230. The SCC-drivers works with an ESCC too, but don't use the advantages of the ESCC. The ESCC-driver is very unsuitable for a SCC! ST_ESCC.PRG ----------- This driver is dedicated to my self developed hardware ST_ESCC which provides two additional fast serial interfaces on ST/STE/MegaST. 115200Bd run without problems on an 8MHz/68000 machine under TOS. LAN-Support ----------- (-- something untranslated --) (... manything) Configuration ------------- The configuration is done by using SETTER.TTP. Because the explainations in the drivers are German I added an abbreviation to each point. USE4C This question appears only in the ESCC.PRG and ST_ESCC.PRG. Shall the receiver interrupt take place after four received characters? I call this mode which signals an interrupt after 4 characters 4ZI. 4ZI decreases the CPU load in the "RTS/CTS"- and "without"- handshake modes radically. "XON/XOFF"-handshake switches 4ZI automatically off because the number of necessary special actions would be greater than the use. (-- something untranslated --) Normally you should switch 4ZI on, answer with "Yes", because 4 free characters are sufficient and the profit by the reduced CPU load (the number of receiver interrupts is reduced to 1/4) is important. If you use unclean programs you should switch off 4ZI by answering "No". The programs show their uncleannes by delays: if you type in the terminal mode an the characters appear only if you typed 4 characters or more, unclean transfer protocols will hang some time (or for ever) mostly at the beginning or the end of transfer. M2TT The standard setting "u" should cause no problems because the TT is detected by the _MCH-cookie and then are on MODEM2 57600Bd and 115200Bd unavailable. "0" forces 57600/115200 to be provided. This is on TTs only senceful if you did the wire-modification. "1" forces 57600/115200 not to be provided. If your SCC is clocked by a PLCK of 14745600Hz this answer has no effect. M1EMU: The normal setting is "u". This should not cause any problems because of the automatic computer type detection using the _MCH-cookie. This function was added for the Falcon owners and users of old programms. The normal user can jump over the remaining text of this configuration point. If M1EMU is switched on, no MFP*.PRG for MODEM1 shall be loaded because of collisions! The MODEM1-connector of the computer becomes unusable if M1EMU is active. "u" activates M1EMU only on Falcons. "0" disables M1EMU on all computers. "1" activates M1EMU on all computers. M1EMU, the MODEM1-emulator, replaces the BIOS-routines of channel 6 (MODEM1) by the BIOS-routines of channel 7 (MODEM2). Additionally the actual BIOS-device (AUX) is set to 7 (for a bit more clean software). On the Falcon ... programs become usable, which like to work only on AUX (channel0) or channel6. Because the RING-signal (of MODEM2) is attached there, were the RING of MODEM1 is on STs, such programs may detect RING direct in the hardware (MFP, Bit6). Instead of the DCD-signal (carrier detect) of MODEM1 (as on ST) on Bit1 of the MFP lays the /ACK-input from the printer port (pin10), without any resistor, so that this signal may swing if there is no printer connected or the printer is off. If the printer is on, /ACK should be H most of the time, and these old programs interpret this as "NO CARRIER". Patch: Cut of the connection (wire from pin10) to the printer and connect pin10 with pin25 on the printer port. This signals these old programs always "CARRIER". On MegaSTE/TT and ST_ESCC ... it becomes possible to run old programs, which access the signals RING and DCD direct and go over the BIOS for the other functions, on MODEM2 too. These programs must not access the receiver/transmitter register directly. You have to connect the RING line and DCD line of MODEM1 with the same of MODEM2. A full plugable solution may consist of 3 SUB-D-connectors. RING is pin9 on a 9pin-SUB-D and pin22 on a 25pin-SUB-D. CDC is pin1 on a 9pin-SUB-D and pin8 on a 25pin-SUB-D. LANBIT (-- something untranslated --) Use other values than No only on MegaSTE and TT! LANEXT (-- something untranslated --) LAN_S2 (-- something untranslated --) DTRM2 The DTR(data terminal ready)-signal of the MODEM2 interface is set at the start of this driver on time to the value given here. Yes corresponds to on and is equivalent to the behavior of TOS, No corresponds to off and prevents most modems from going off hook before a communication program has been started. Some programms which know nothing about these drivers and are made according to ataris developer documentation (which is catastrophic false), don't work with "No" (hang up during data transmission). DTRS2: The same as DTRM2 but for interface SERIAL2. RBLM2: Use 256 as a default. Here the receiver buffer length in byte of the MODEM2 interface can be set. It may be in the range of 65534 (maximum) to 16 (minimum). Values out of this range are set to the default of 256. The water marks are set to 1/4 (low water mark) and 3/4 (high water mark). TBLM2: As RBLM2, but for the transmitter buffer length. RBLS2: As RBLM2, but for the interface SERIAL2. TBLS2: As RBLM2, but for the transmitter buffer length of interface SERIAL2. For programmers: The IOREC -------------------------- Hands off from computing the readable number of bytes by the IOREC! This method will fail if 4ZI is switched on in ESCC and ST_ESCC. Use the function Fcntl FIONREAD or Fread, both work correctly in these drivers. Bconstat works correctly too. If the cookie RSVF exist and the RSVF-list contains the interface you can rely on the correctness of FIONREAD. The MiNT-user may destroy this, but he is responsible for that. If the functions for modification of buffer length are not implemented, it is legal to change the buffer address, largeness and water marks in the IOREC. In this case, and only in this case, I see it as legal and necessary to reset the read and write pointer in the IOREC to zero. It is possible, that in the future the IOREC is no longer used. Because of compatibility reasons a dead IOREC may remain. Who wants to program really clean should examine the return value of the XBIOS-function IOREC (or the pointer in the MAPTAB if you grab so direct in the memory). Is this value zero or odd there is no IOREC. For programmers: Supported functions ------------------------------------ All drivers support the TIOCCTL(MAP/GET/SET)-functions as described in SERSOFST.TXT. May bee they don't support all signals and lines but that can be requested by TIOCCTLMAP. Which Fcntls are supported a program should determine by calling this functions. Versions -------- See German part. 1994-06-17 ATTENTION! Installation block adapted to MagiC3. Use together only drivers and DRVIN from 1994-06-17 or younger. Older versions will not run together with newer ones. 1994-07-11 added configuration facility LANBIT 1994-08-20 M2TT provides machine autodetect, LANBIT, LANEXT, LAN_S2 new/changed, Byte4.Bit0 in RSVF 1994-08-27 configuration point PCLK replaced by automatic detection 1995-01-04 fast Bconmap parameter passing changed, ... 1995-01-15 XON/XOFF-receive error if rec.buffer length != tra.b.l removed MIDI.PRG ******** (The English part is appended at the German, look for it.) Dies ist ein Treiber zur Nutzung der MIDI-Schnittstelle ber die in SERSOFST.TXT definierten Filefunktionen. Allgemeines ----------- ########## momentan ist das noch eine Experimentalversion ########### Dieser Treiber gehrt zum HSMODA-Paket. Er ist nicht fr Musiksoftware gedacht, die die MIDI-Schnittstelle zu ihrem ursprnglichen Zweck benutzt, sondern zur "ganz normalen" Datenbertragung. Wer die MIDI-Schnittstelle nicht zur "ganz normalen" Datenbertragung nutzt, braucht diesen Treiber nicht. Kommunikationsparameter ----------------------- Es wird alles untersttzt, was das ACIA und die RxD/TxD-Schnittstelle knnen. Baudraten: 31250, 7812 Handshake: "keiner", "XON/XOFF" Zeichenformate: 7e2, 7o2, 7e1, 7o1, 8n2, 8n1, 8e1, 8o1 Konfiguration ------------- Die Konfiguration erfolgt mit dem SETTER.TTP. Zur Bedienung siehe SETTER.TXT. Momentan kann man nur die Empfangs- und Sendepuffergre einstellen, die standardmig 256 Byte getrgt. (Interna:) Implementierungsvarianten ------------------------------------ Das Senden erfolgt auch interruptgesteuert. Falls man im Sendeinterrupt nochmal extra Statusregister Bit1 abfragt (braucht man auch nicht, denn wenn im Polling gesendet wird, dann ist der Sendepuffer per Definition leer (sonst gibt es sowieso Chaos), und es kann deshalb ohnehin nichts in den ACIA geschrieben werden), braucht man Midiws und Bconout-MIDI nicht abzufangen, da diese direkt im Polling senden und die Strukturen dieses Treibers nicht stren. Sie knnten sich zwar in eine Interruptsendung einmischen, das sollte aber nicht passieren, da entweder alte Programme diese nicht-Interrupt-Aufrufe benutzen (wo das Polling-Midiws mglicherweise zwecks Kompatibilitt ntig ist) oder neue Programme ber GEMDOS oder die hhere BIOS-Nummer arbeiten. Da nmlich MIDI im BIOS nicht immer #3 ist, mu man ohnehin im RSVF die Nummer eines extra eingehngten Treibers eintragen und nur zu Kompatibilittszwecken das alte #3 untersttzen. Es ist zu entscheiden, wie weit man die Optimierung (tausche Speicherplatz und bersichtlichkeit gegen Geschwindigkeit) treibt. 31250Bd bedeutet beim Empfang eine Interruptfrequenz von 3125Hz bei 8N1 und eine zu unterschreitende Interruptantwortzeit von 320us. Der 68000/8MHz braucht 0.5us fr einen WORD-Speicherzugriff. Beim im TOS vorhandenen Sichern von 8 Registern (als LONG) vergehen also schon 8us, zustzlich zu der reinen Reaktionszeit der CPU. Nach der Bearbeitung werden nochmal 8us im Interrupt zur Wiederherstellung verbraucht. Der IKBD-ACIA ist mit 7812.5Bd vergleichsweise langsam. Direkt im MFP-Interrupt, sehr schnell, alle MIDI-Vektoren in KBDVECS sind tot. ### Genau so mache ich es erstmal ### !!! Drfte evtl mit einiger Musiksoft inkompatibel sein, egal. ### momentan BIOS-Funktionen nur ber eigene Nummer, alte BIOS und XBIOS-IOREC-MIDI noch nicht ersetzt (aufruf kann zu Absturz, Hngenbleiben oder so fhren), Nummer siehe RSVF-Objekt #### Schmeit bei Installation alles andere aus dem MFP-I4-Interrupt raus, wie z.B. Templmon. (Also Templmon erst nach diesem Treiber starten) Andere Varianten, evtl mal alternativ realisieren: Nur als midisys(), etwas langsamer, nur midivec() und vmiderr() tot. Als midisys(), langsamst, midivec() und vmiderr() werden benutzt, restliche Interruptbedingungen bearbeitet midisys() selbst. (Fr Programmierer:) Die MIDI-Schnittstelle auf der Softwareseite ================================================================= Im TOS werden MIDI-Daten immer direkt gesendet. Es gibt keinen Sende-IOREC. Nur Empfangsdaten werden im Interrupt behandelt, ein Empfangs-IOREC existiert (XBIOS 14 Iorec (Gert 2)). XBIOS 15 Rsconf existiert nicht. Zustzlich gibt es XBIOS 12 Midiws zum Versenden von Bytefolgen. Diese Funktion arbeitet im Polling. Im BIOS ist MIDI normalerweise Gert 3, auer bei BIOS 8 Bcostat, dort ist es 4. XBIOS 34 Kbdvbase liefert einen Datenblock, der Zeiger auf einige Routinen enthlt, die mit MIDI und dem IKBD zusammenhngen. Leider werden diese Routinen oft falsch beschrieben, auch im Profibuch sind Fehler drin. MIDI-ACIA und IKBD-ACIA liefern ihre Interruptmeldung aktiv-oder-verknpft (ihre L-aktiven Open Collector Ausgnge sind miteinander verbunden) ber den gleichen Eingang (I4) des MFP (ST-MFP), der auf den MFP-Interruptvektor auf Adresse $0118 fhrt. Hier lauert bereits die erste Falle: Der MFP erzeugt einen Interrupt nur bei einer H/L-Flanke am I4-Eingang. Diese Flanke tritt nur beim Wechsel von "beide ACIA wollen keinen Interrupt" zu "mindestens ein ACIA fordert Interrupt" auf. Setzt man jetzt die Interruptforderung nur im MFP zurck und bearbeitet nicht beide ACIA so lange, bis I4 wieder H wird, so bleibt I4 auf L und der MFP wird keine ACIA-Interrupts mehr melden. Dieser Fall kann z.B. eintreten, wenn in einer sehr frhen Phase der Systeminitialisierung Daten ber den MIDI-Port reinkommen. Kbdvbase (XBIOS 34) ------------------- Diese Funktion liefert einen Zeiger auf einen Datenblock mit Zeigern auf verschiedene Routinen im Zusammenhang mit MIDI und IKBD. typedef struct { void (*midivec)(); /* Midi-Eingabe */ void (*vkbderr)(); /* Tastaturfehler (default: nur RTS) */ void (*vmiderr)(); /* MIDIfehler (default: nur RTS) */ void (*statvec)(); /* Status des IKBD gelesen (default: nur RTS) */ void (*mousevec)(); /* Mausabfrage */ void (*clockvec)(); /* Uhrzeitabfrage */ void (*joyvec)(); /* Joystickabfrage (default: nur RTS) */ void (*midisys)(); /* MIDI-Systemvektor */ void (*ikbdsys)(); /* IKBD-Systemvektor */ WORD drvstat; /* IKBD-Treiberstatus (benutzt als zwei Bytes) */ } KBDVECS; Erzeugt I4 des MFP einen Interrupt, so werden in der Serviceroutine nacheinander midisys() und ikbdsys() aufgerufen. Falls I4 jetzt immer noch L (also aktiv) ist, wird der Aufruf dieser beiden Routinen solange wiederholt, bis I4 nach der Bearbeitung von ikbdsys() endlich H ist. Dann wird der Interrupt im MFP als bearbeitet markiert und die Serviceroutine beendet. Die XXXXsys() mssen selbst anhand des Statusregisters ihrer ACIA feststellen, ob sie arbeiten oder gleich zurckkehren. Vor dem Aufruf der Routinen wurden die Register A0-A3/D0-D3 gesichert, so da man sie benutzen kann. Sicherheitshalber sollte man aber nur A0-A2/D0-D2 nutzen, wie es die Konventionen der meisten C-Compiler auf dem Atari erlauben. Diese ganzen Aktionen laufen bei einem Interrupt Priority Level von 6 ab, so da keine weiteren Interrupts dazwischen kommen knnen. Wenn man den IPL heruntersetzt (zeitweilig in der XXXXsys-Routine), so knnen vom MFP aus wenigstens hherpriorisierte Interrupts wie der fr MODEM1 dazwischenkommen. vmiderr() und vkbderr() werden von midisys() bzw. ikbdsys() aufgerufen, wenn ein Empfangspufferberlauf vorlag. Das empfangene Zeichen wird trotzdem in D0.b bergeben. Die Fehlerbedingung wurde im ACIA bereits zurckgesetzt. Andere Fehlerbedingungen werden ignoriert und fhren nicht zum Aufruf der vXXXerr(). Falls man eigene XXXXsys()-Routinen einsetzt, werden die vXXXerr() also nur noch aufgerufen, wenn es die eigene XXXXsys()-Routine tut. Die vXXXerr() drfen A0-A2/D0-D2 benutzen und bestehen im TOS nur aus einem RTS. midivec() wird von midisys() aufgerufen, wenn ein Zeichen von der MIDI_ACIA fehlerfrei empfangen wurde. Das Zeichen wird in D0.b bergeben. Die Routine darf A0-A2/D0-D2 benutzen und schreibt im TOS das Zeichen in den MIDI-Empfangspuffer. Alle anderen Routinen werden von ikbdsys() aufgerufen, nachdem ikbdsys alle Byte empfangen hat, die zu dem entsprechenden Paket gehren. Diese Byte wurden in einem Puffer gesammelt und der Routine wird ein Zeiger auf diesen Puffer im Register A0 und auf dem Stack bergeben. Die Routinen drfen A0-A2/D0-D2 benutzen. Sie sollten so kurz wie mglich sein, denn eine Laufzeit von 1ms (wie im Profibuch angegeben) begrenzt die ber MODEM1 fehlerfrei empfangbare Datenrate bereits auf nur 9600Bd (die Daten von MIDI mit 31250Bd gehen schon viel frher hops). Eine Alternative sind reentrante Routinen (also den Pufferinhalt erst kopieren), die den IPL whrend ihrer Laufzeit auf weniger als 6 setzen und so wenigstens den MODEM1-Empfang (der im MFP hher priorisiert ist) erlauben. Wenn man diese 4 anderen Routinen betrachtet, so fehlt eine Routine, die die normalen Tastendrcke (Byte $00-$F5) verarbeitet. Der Zeiger auf diese Routine liegt erfahrungsgem (das ist nicht dokumentiert) genau vor der KBDVECS-Struktur. Dieser Routine wird das Zeichen in D0.b bergeben und sie darf A0-A2/D0-D2 benutzen. Sie verarbeitet die Zeichen und schreibt entsprechende Daten in den Empfangspuffer, der dann z.B. vom Bconin-Tastatur gelesen wird. Beim TOS2.06 ist jeder Empfangspuffereintrag ein LONG. mousevec() kann nicht nur vom ikbdsys(), sondern auch von der undokumentierten Tastenroutine und von der Tastaturrepeat-Routine aufgerufen werden, wenn die Tastatur zur Mausemulation benutzt wird. drvstat ist immer dann ungleich 0, wenn ibkdsys() gerade ein Paket zusammensammelt. Undokumentiert wird beim TOS2.06 das Highbyte zum Speichern der internen Routinennummer (abgeleitet aus dem empfangenen Header) und das Lowbyte als Abwrtszhler fr die Anzahl der noch zu empfangenden Byte benutzt. Wenn man einer der 4 Routinen selbstgebastelte Pakete zukommen lassen will, so mu man sicherstellen, da diese (im TOS) nicht reentranten Routinen nicht zuflligerweise auch aus dem Interrupt heraus aufgerufen werden. Also entweder IPL auf 6 oder 7 setzen, oder in KBDVECS kurzzeitig eine Dummy-Routine (die sich mglicherweise nur das Paket irgendwo merkt) anstelle der Originalroutine installieren, die man gerade selbst aufruft. Versionen --------- (Datum in der Form Jahr-Monat-Tag) 1994-08-27 sollte erstmalig richtig funktionieren 1994-10-24 TIOCM_RER (overrun, frame, parity) mit TIOCCTLGET erfragbar 1994-12-30 schnelle Bconout-Parameterbergabe gendert (und MAPT_APP/MAPT_OVE Funktiosnummer) 1995-01-15 luft jetzt mit TOS-Versionen vor 2.00 Harun Scheutzow, Berlin den 27.08.1994 und spter MIDI.PRG ******** This is a SERSOFST.TXT-conform driver for the MIDI-interface. You shouldn't use it together with music programs using the MIDI-interface because it is intended for file transfer and terminal purposes. I don't have the time to translate the whole text. If nobody else does it, sorry, English-speaking world, you will never got an English version. This driver installs with the GEMDOS-name "MIDI" and the first empty BIOS device number. It is fully interrupt driven. It allows the two baud rates possible on the MIDI-port(31250, 7812). It supports "none" and "XON/XOFF" handshake. Zmodem usually escapes the XON and XOFF characters that's why you can use this handshake with Zmodem. I got transfer rates of approximately 3000cps, that means near the physical limit. !!! Important: This is only a RSVF-driver, it doesn't replace the old BIOS-MIDI-numbers nor the XBIOS-Midiws-function. Use it only if you need a MIDI-RSVF-driver. !!! Festlegung einer Softwareschnittstelle, die eine vollstndig hardwareunabhngige Nutzung serieller Interfaces ermglicht ============================================================ Definition of a software interface, providing a fully hardware independend use of serial interfaces ============================================================== This file contains the english version too, begin to search at the middle of the text. Text von: Harun Scheutzow, Dresdener Strae 83, D-10179 Berlin Internet-Email: Harun_Scheutzow@B.maus.de letzte nderung der Definition: 12.11.1993 letzte nderung der Erklrungen: 24.10.1994 Es sollen mglichst alle Funktionen definiert werden, die ein Terminalprogramm, ein bertragungsprotokoll oder z.B. ein Faxprogramm bentigt. Diese Funktionen sollen ein hardwareunabhngiges Interface fr Programme darstellen. Dieser Vorschlag ist Eric Smith bekannt. Es ist (noch?) KEIN offizieller Atari-Standard. Eric findet den Vorschlag gut (nur die Callbacks hlt er bezglich Memory Protection fr nicht so toll) und meint: Es ist besser, einen inoffiziellen Standard zu haben, als gar keinen. Originalton im englischen Teil. MiNT oder TOS oder ein nachzuladender Treiber sollen mglichst viele der hier beschriebenen Funktionen untersttzen, soweit es die Hardware zult. Es mu aber jede Soft damit rechnen, da eine Funktion nicht existiert (Rckmeldung EINVFN, -32). Verhindert dies die Arbeit der Soft, so mu der Nutzer darber informiert werden. Dies hier ist ein Standardisierungsversuch fr das Interface, da Nutzerprogramme vorfinden. ber die Interna der Treiberimplementation soll nichts geschrieben werden. Bei allen Funktionen und Vorschlgen mu aber daran gedacht werden, da diese auch auf einem 68000 mit 8MHz bei 38400Bd ber den MFP (also ohne FIFO) realisierbar sind. Die steigende Leistung der CPUs ist kein Argument, da die gewnschte Datentransferrate auch stndig steigt. Fopen, Fread, Fwrite, Fclose drften als normale GEMDOS-Funktionen jedem bekannt sein. Fcntl ist die im MiNT (und in HSMODEM) vorhandene GEMDOS-Funktion $104, mit LONG Fcntl( WORD filehandle, LONG special, WORD subfunction). Fcntl liefert meist eine 0 als OK-Meldung, oder sonst einen Fehlercode. Irgendwelche abgefragten Werte werden blicherweise nicht als Returncode von Fcntl geliefert, sondern auf einer Speicherstelle, auf die special zeigt. Die Reservierung einer Schnittstelle will ich ber den ffnungsmodus von Fopen realisieren. Hier ein Versuch der Dokumentation, was MiNT bereits bieten soll. Allerdings sind in MiNT nicht alle Funktionen vorhanden oder funktionieren nicht ganz, wie sie sollten. Manche Zeilen sind C, manche Kommentar. Bei den angegebenen Funktionsaufrufen handelt es sich wirklich um Musteraufrufe, und nicht etwa um migestaltete Prototypen. Ermittlung, wieviel Byte nichtblockierend bertragen werden knnen ------------------------------------------------------------------ #define FIONREAD (('F'<< 8) | 1) #define FIONWRITE (('F'<< 8) | 2) Fcntl( handle, &count, FIONREAD) Fcntl( handle, &count, FIONWRITE) In count wird als 32Bit-Wert die Anzahl der Byte hinterlassen, die beim nchsten Fread/Fwrite mindestens gelesen/geschrieben werden knnen. Da aber mglicherweise mehrere Programme auf einen Port schreiben knnten, sollte man nur den Returnwert von Fread/Fwrite fr voll nehmen. Setzen und Rcksetzen von Break ------------------------------- #define TIOCCBRK (('T'<< 8) | 20) #define TIOCSBRK (('T'<< 8) | 21) Fcntl( handle, dummy, TIOCSBRK); /* Break aktivieren */ Fcntl( handle, dummy, TIOCCBRK); /* Break lschen */ Setzen/Abfragen der Eingabegeschwindigkeit und Steuerung der DTR-Leitung ------------------------------------------------------------------------ #define TIOCIBAUD (('T'<< 8) | 18) Fcntl( handle, &speed, TIOCIBAUD); Setze die Eingabegeschwindigkeit der Schnittstelle. In speed steht ein 32Bit-Wert, der die gewnschte Geschwindigkeit unkodiert in Bit pro Sekunde angibt. speed = 19200 wrde auf 19200bps setzen. In speed wird die Geschwindigkeit vor dem Aufruf von TIOCIBAUD zurckgegeben. Ist sie unbekannt, wird -1 geliefert. Ist beim Aufruf speed = -1, so wird nur die Geschwindigkeit erfragt. Ist speed = 0, so wird das DTR-Signal auf inaktiv gebracht (gelscht), ohne die Geschwindigkeit zu beeinflussen. Bei geschwindigkeitssetzendem Aufruf wird DTR automatisch aktiviert. Rckgabewert ist ERANGE wenn die Geschwindigkeit nicht einstellbar ist. Dann wird als "Ausnahme" in speed die nchstniedrigere mgliche Geschwindigkeit geliefert. Gibt es keine nchstniedrige, so wird die kleinstmgliche zurckgegeben. Setzen/Abfragen der Ausgabegeschwindigkeit und Steuerung der DTR-Leitung ------------------------------------------------------------------------ #define TIOCOBAUD (('T'<< 8) | 19) Fcntl( handle, &speed, TIOCOBAUD); Setze die Ausgabegeschwindigkeit der Schnittstelle. Die Funktionsbeschreibung ist identisch zu TIOCIBAUD. Untersttzt eine Schnittstelle getrennte Ein- und Ausgabegeschwindigkeit nicht, so beeinflut jeder Aufruf beide Geschwindigkeiten. bertragungsprotokolleinstellungen erfragen ------------------------------------------- #define TIOCGFLAGS (('T'<< 8) | 22) Fcntl( handle, &flags, TIOCGFLAGS); Liefert in flags einen 16Bit-Wert der eingestellten Parameter, die eine ODER-Verknpfung der folgenden Werte darstellen. Alle anderen Bit sind reserviert. Bei TIOCGFLAGS sollte man sie ignorieren. Sinnvollerweise erfragt man mit TIOCGFLAGS, modifiziert die bekannten Werte, und setzt dann per TIOCSFLAGS. /* Anzahl der Stoppbits */ #define TF_STOPBITS 0x0003 /* 0x0000 nicht erlaubt ERWEITERUNGSVORSCHLAG: So wird der Synchronmode aktiviert. Die restlichen Parameter erhalten im Synchronmode andere Bedeutungen. Diese sind spter noch festzulegen. */ #define TF_1STOP 0x0001 /* 1 Stoppbit */ #define TF_15STOP 0x0002 /* 1.5 Stoppbit */ #define TF_2STOP 0x0003 /* 2 Stoppbit */ /* Anzahl der Bits pro Zeichen */ #define TF_CHARBITS 0x000C #define TF_8BIT 0x0 /* 8 Bit */ #define TF_7BIT 0x4 #define TF_6BIT 0x8 #define TF_5BIT 0xC /* 5 Bit */ /* Handshakemodi und Paritt */ #define TF_FLAG 0xF000 #define T_TANDEM 0x1000 /* XON/XOFF (=^Q/^S) Flukontrolle aktiv */ #define T_RTSCTS 0x2000 /* RTS/CTS Flukontrolle aktiv */ #define T_EVENP 0x4000 /* even (gerade) Paritt aktiv */ #define T_ODDP 0x8000 /* odd (ungerade) Paritt aktiv */ /* even und odd schlieen sich gegenseitig aus */ bertragungsprotokolleinstellungen setzen ----------------------------------------- #define TIOCSFLAGS (('T'<< 8) | 23) Fcntl( handle, &flags, TIOCSFLAGS); Setzt die Einstellungen, Beschreibung dieser bei TIOCGFLAGS. Rckgabewert ist ERANGE bei illegaler oder nicht untersttzer Kombination in flags. Hier endet die Dokumentattion der mir bekannten und verstndlichen Funktionen in MiNT. Es folgen die neuen Vorschlge. Leeren der seriellen Puffer --------------------------- #define TIOCFLUSH (('T'<< 8) | 8) Fcntl( handle, special, TIOCFLUSH); (ist doch im Mint "/* BUG: this should flush the input/output buffers */") Auswhlbar ber den special-Parameter werden die seriellen Puffer unterschiedlich geleert: special Funktion 0 Der Sendepuffer soll komplett gesendet werden. Die Funktion kehrt erst zurck, wenn der Puffer leer ist (return E_OK, =0) oder ein systeminterner Timeout abgelaufen ist (return EDRVNR, =-2). Der Timeout wird vom System sinnvoll bestimmt. 1 Der Empfangspuffer wird gelscht. 2 Der Sendepuffer wird gelscht. 3 Empfangspuffer und Sendepuffer werden gelscht. -tout Ein negativer Parameter funktioniert wie 0, aber tout (man beachte, tout selbst ist positiv) gibt den Timeout in 1/200 Sekunden vor. Stoppen des Empfangs -------------------- #define TIOCSTOP (('T'<< 8) | 9) Ist nur in den Handshakemodi verfgbar und teilt dem Kommunikationspartner mit, da der Rechner nichts empfangen mchte. Die Funktion wartet eine sinnvolle Zeitspanne, um in der bertragung befindliche Zeichen einzusammeln. Dann geht sie davon aus, da der Partner schweigt und kehrt zurck. (Anwendungsbeispiel: Ein 8MHz-ST kann nicht gleichzeitig DMA und 57600Bd-Empfang ber den MFP.) Starten des Empfangs -------------------- #define TIOCSTART (('T'<< 8) | 10) Hebt die Wirkung von TIOCSTOP auf. Erfragen/Setzen der Puffereinstellungen --------------------------------------- #define TIOCBUFFER (('T'<<8) | 128) special zeigt beim Aufruf auf eine Struktur: LONG Gre des Eingabepuffers in Byte LONG untere Wassermarke des Eingabepuffers in Byte LONG obere Wassermarke des Eingabepuffers in Byte LONG Gre des Ausgabepuffers in Byte Soll ein Wert nur erfragt bzw. nicht gendert werden, so ist anstelle des Wertes eine -1 anzugeben. Wird anstelle eines Wertes -1 zurckgegeben, so wird diese Funktion nicht untersttzt. Werden Werte gesetzt, so sollte man auch den Rckgabewert prfen, da der Treiber bei ihm nicht passenden Vorgaben die nchstliegenden ihm passenden Werte einsetzt und benutzt. (Hinweis: Es ist allein Sache des Treibers, den Speicher irgendwo zu reservieren oder freizugeben. Das kann man auch unter TOS programmieren.) Erfragen der I/O-Leitungen und Signalisierungsfhigkeiten --------------------------------------------------------- #define TIOCCTLMAP (('T'<<8) | 129) special ist Zeiger auf eine Struktur aus 6 LONGs, die durch den Treiber ausgefllt wird. In jedem LONG wird fr jede vorhandene Steuer/Melde-Leitung oder Fhigkeit das Bit auf 1 gesetzt. 1.LONG: Leitung ber TIOCCTL(GET/SET) abfrag/beeinflubar 2.LONG: Reaktion (Routinenaufruf) bei Eintreten des Zustandes mglich. 3.LONG: Reaktion (Routinenaufruf) bei Beendigung des Zustandes mglich. 4.LONG: reserviert fr zuknftige Erweiterungen, bis dahin 0 5.LONG: reserviert fr zuknftige Erweiterungen, bis dahin 0 6.LONG: reserviert fr zuknftige Erweiterungen, bis dahin 0 Die Zuordnung der Bits zu den "Leitungen" lautet: #define TIOCM_LE 0x0001 /* line enable output, Ausgang */ #define TIOCM_DTR 0x0002 /* data terminal ready, Ausgang */ #define TIOCM_RTS 0x0004 /* ready to send, hat heute andere Bedeutung, Ausgang */ #define TIOCM_CTS 0x0008 /* clear to send, hat heute andere Bedeutung, Eingang */ #define TIOCM_CAR 0x0010 /* data carrier detect, Eingang */ #define TIOCM_CD TIOCM_CAR /* alternativer Name */ #define TIOCM_RNG 0x0020 /* ring indicator, Eingang */ #define TIOCM_RI TIOCM_RNG /* alternativer Name */ #define TIOCM_DSR 0x0040 /* data set ready, Eingang */ #define TIOCM_LEI 0x0080 /* line enable input, Eingang */ #define TIOCM_TXD 0x0100 /* Sendedatenleitung, Ausgang */ #define TIOCM_RXD 0x0200 /* Empfangsdatenleitung, Eingang */ #define TIOCM_BRK 0x0400 /* Break erkannt, Pseudo-Eingang */ #define TIOCM_TER 0x0800 /* Sendefehler, Pseudo-Eingang */ #define TIOCM_RER 0x1000 /* Empfangsfehler, Pseudo-Eingang */ #define TIOCM_TBE 0x2000 /* Hardware-Sendepuffer leer, Pseudo-Eingang */ #define TIOCM_RBF 0x4000 /* Hardware-Empfangspuffer voll, Pseudo-Eingang */ Nichtdefinierte Bits sollten ignoriert werden. Das Nichtvorhandensein einer Leitung im TIOCCTLMAP bedeutet nur, da diese Leitung nicht per TIOCCTLxxx abfragbar/steuerbar ist. Es bedeutet nicht, da diese Leitung hardwaremig nicht existiert. Es ist mglich, da eine Leitung mit Callback-Routinen berwachbar ist, aber nicht mit TIOCCTLGET abgefragt werden kann. Einige TIOCM_* haben Besonderheiten, die hier erklrt werden: TIOCM_TER, TIOCM_RER Der Routine wird in D0.b ein Byte bergeben, das den Fehler genauer angibt: Byte Fehler 0 allgemeiner, nicht genauer spezifizierbarer Fehler 1 Hardware-Empfangspufferberlauf 2 Software-Empfangspufferberlauf 3 Parittsfehler 4 Rahmenfehler Abfrage von TIOCM_BRK, TIOCM_RER und TIOCM_TER mit TIOCCTLGET: Ein auftretender "Fehler" setzt das Statusbit. Eine allgemeine (-1) oder spezielle Abfrage (auf BRK, RER, TER) liefert den Zustand des entsprechenden Statusbits und setzt es gleichzeitig zurck. TIOCM_TBE Der Routine wird in D0.w -1 bergeben, falls im Software-Sendepuffer kein Byte mehr ist. Andernfalls wird ein Byte aus dem Software-Sendepuffer gelesen und in D0.b bergeben, D0.bit15 ist dann =0. Die Routine gibt in D0.w -1 zurck, falls nichts gesendet werden soll. Sie gibt D0.bit15 =0 und in D0.b das Byte zurck, falls es gesendet werden soll. Diese Routine wird ebenfalls aufgerufen, wenn ein Byte neu in den Software-Sendepuffer geschrieben wurde, und der Sendepuffer schon lange leer ist. Gibt diese Routine ein selbst erzeugtes -1 zurck und stehen noch Daten im Software-Sendepuffer, so wird sie sptestens nach einer Sekunde erneut aufgerufen. TIOCM_RBF Der Routine wird in D0.b das empfangene Byte bergeben. Sie gibt in D0.w -1 zurck, falls nichts in den Software-Empfangspuffer geschrieben werden soll. Andernfalls gibt sie D0.bit15 =0 und in D0.b das Byte zurck, das in den Software-Empfangspuffer geschrieben werden soll. Abfragen der I/O-Leitungen und Signalisierungen ----------------------------------------------- #define TIOCCTLGET (('T'<<8) | 130) liefert auf der durch special angegebenen Speicherstelle ein LONG, in dem die aktuellen Zustnde der CTLleitungen abgelegt werden, Kodierung wie bei TIOCCTLMAP. Auf special wird auch ein Parameter hin bergeben: Ist er -1, so werden alle CTLleitungen erfragt, ist er <>-1, so darf nur ein Bit gesetzt sein, und es wird nur diese CTLleitung erfragt. Der Treiber darf trotzdem auch die Werte der anderen Leitungen zu liefern. Das geschieht aus Geschwindigkeitsgrnden. Unsinnig gesetzte Bits werden ignoriert. Setzen der I/O-Leitungen und Signalisierungen ----------------------------------------------- #define TIOCCTLSET (('T'<<8) | 131) special zeigt auf eine Struktur: LONG ctlmaske LONG ctlvalues Es werden die in ctlmaske gesetzten Bit (Kodierung wie bei TIOCCTLMAP) auf die in ctlvalues vorhandenen Werte gesetzt. In ctlmaske darf man natrlich nur Bits setzen, deren Funktion man kennt. Eingabeleitungen lassen sich nicht beeinflussen, solche Setzversuche werden wie unsinnige Bits ignoriert. Konzept der Callback-Funktionen ------------------------------- Ein Programm kann Funktionen anmelden, die beim Eintreten bestimmter Zustnde sehr schnell aufgerufen werden. Angemeldet wird die Funktion durch bergabe ihrer Adresse in procadr. Dabei ist Bit0 immer 0. Abgemeldet wird durch den gleichen Aufruf, aber mit gesetzem Bit0 (also =1) in procadr, also einer ungeraden Adresse! Bit31-1 mssen genau wie ctlline den gleichen Wert wie beim Installieren aufweisen. Wenn bei den einzelnen Funktionen nichts anderes steht, gelten folgende Grundstze: - Nur Register D0 und A0 drfen verndert werden. - Sie mu extrem kurz sein, mehr als 20 "normale" Assemblerbefehle sind unzulssig (ein MOVEM.L D1-D7/A1-A6,... oder DIV ist nicht als "normal"). Anders ausgedrckt: die Laufzeit der Routine sollte auf einer CPU MC68000 200 Takte nicht berschreiten. - Aufruf erfolgt im Supervisormode. - Der aktuelle InterruptPriorityLevel ist unbestimmt. - Ende mit RTS. Es ist denkbar, da mehrere Programme gleichzeitig eine Leitung berwachen. Man mu die Routine abmelden, bevor sie durch eine nichtresidente Beendigung des Programms aus dem Speicher fliegt. Es ist egal, welcher Filehandle zur An-/Abmeldung benutzt wird, wenn er auf das entsprechende Device pat (z.B. Fopen, Fcntl(...,TIOCCTLSFAST) /*Anmeldung*/, Fclose, ... Fopen, Fcntl(...,TIOCCTLSFAST) /*Abmeldung*/, Fclose). Manche Funktionen werden nur bei bestimmten Handshakemodi existieren und knnen nur unter diesen Modi angemeldet, aber unter jedem Modus abgemeldet werden. Sie werden beim Umschalten des Handshakes automatisch aktiviert und deaktiviert, solange sie angemeldet sind. Anmelden/Abmelden schneller Callback-Funktionen ----------------------------------------------- #define TIOCCTLSFAST (('T'<<8) | 132) Anmelden und Abmelden von Routinen, die bei Statusnderung der CTLleitungen aufgerufen werden. special ist ein Zeiger auf Struktur: LONG ctlline LONG procadr Die Routine wird mglichst (siehe dazu TIOCCTLMAP) bei jeder Flanke auf der in ctlline (dort darf nur ein Bit gesetzt sein, siehe TIOCCTLMAP) angegebenen Leitung aufgerufen. Der dabei angenommene neue Pegel der Leitung wird in D0.b bergeben: 0 inaktiv (bei DSR wre es TTL-High-Pegel) und $FF fr aktiv. Returnwerte der Funktion: E_OK alles OK 1 Routine installiert, aber sie ist nicht die einzige. So langsam wird es zeitkritisch, das Programm sollte wenn mglich die Routine wieder deinstallieren. (Das ist nur eine Empfehlung) EINVFN diese berwachungsmglichkeit gibt es nicht EACCDN Routine kann nicht mehr installiert werden. Anmelden/Abmelden langsamer Callback-Funktionen ----------------------------------------------- #define TIOCCTLSSLOW (('T'<<8) | 133) fast identisch zu CTLSIGFAST, mit einem Unterschied: Die Routine darf fast beliebig lang sein. Erfragen der Anzahl noch nicht gesendeter Byte ---------------------------------------------- #define TIONOTSEND (('T'<<8) | 134) Fcntl( handle, &count, TIONOTSEND) In count wird als 32Bit-Wert die Anzahl der Byte hinterlassen, die noch nicht gesendet wurden. Es wird versucht, im Rahmen der Mglichkeiten (Hardware-FIFOs), mglichst genau zu bestimmen, wieviel nichtgesendete Zeichen im Rechner sind. Einstellung des Verhaltens bei Fehlern -------------------------------------- #define TIOCERROR (('T'<<8) | 135) Fcntl( handle, &errmode, TIOCERROR); errmode ist ein LONG. Ist errmode -1, wird in errmode nur die aktuelle Einstellung geliefert. Ist errmode >=0, so werden die Einstellungen gesetzt und die vorigen Werte geliefert. In Bit7..0 von errmode wird ein Zeichen bergeben. Bit8 =1 schaltet das Einfgen dieses Zeichens in den Empfangspuffer bei einem Empfangsfehler ein. Normalerweise ist Bit8 =0, bei einem Fehler wird kein Zeichen in den Puffer geschrieben. Bit9 =1 schaltet das Lschen des Empfangspuffers bei Empfang von Break ein, normalerweise ist Bit9 =0 und es erfolgt keine Pufferlschung bei Break. Rckgabewert ist E_OK, bei nicht untersttzten Einstellungen ERANGE. --- Ende des Textes --- Definition of a software interface, providing a fully hardware independend use of serial interfaces ============================================================== written by: Harun Scheutzow, Dresdener Strae 83, D-10179 Berlin Internet-Email: Harun_Scheutzow@B.maus.de last change of definition: 12.Nov.1993 last change of explaination: 24.Oct.1994 It should be defined (if possible) all functions, a terminal program, a transfer protocol such as ZMODEM or eg. a fax program will need. This functions realize a hardware independent interface for programs. This proposal is known to Eric Smith. He wrote to me last: "Note that I can't say that this will be an 'official' Atari standard right now; we haven't had time to review it completely and make it official. But it seems OK to me, and it's better to have an unofficial standard than no standard at all, I think." (Only the callbacks he likes not so much, because of possible problems with memory protection). MiNT or TOS or a loaded driver should support as much as possible of the functions described here, if the hardware allows it. But every software has to consider, that a function could not exist and only return the error EINVFN (-32). If the absence of a function prevents the proper work of the software, the user must be informed about this fact by this software. This is a attemp to standardize the interface found by user programms. About the interna of driver implementation nothing should be written. All functions and suggestions should be implementable on an 68000 with 8MHz and 38400Bd transfer by the MFP (68901, without hardware-FIFO). The rising performance of the CPUs is no argument, because the demanded data transfer rate rises permanently too. Everybody should know Fopen, Fread, Fwrite, Fclose as normal GEMDOS-functions. Fcntl is the GEMDOS-function $104, with LONG Fcntl( WORD filehandle, LONG special, WORD subfunction), existing in MiNT (and in HSMODEM). Fcntl returns mostly a 0 as OK-message, or otherwise a error code. Any requested values are used to return in a memory cell the parameter special is pointing to, and not as return code of Fcntl. Reserving of an interface I like to realize about the opening mode of Fopen. The description of the following functions is a modified copy from same files included in a MiNT distribution. Some lines are C, some comment. The function calls are really examples and not prototypes. How many bytes may be transfered nonblocking? --------------------------------------------- #define FIONREAD (('F'<< 8) | 1) #define FIONWRITE (('F'<< 8) | 2) Fcntl( handle, &count, FIONREAD) Fcntl( handle, &count, FIONWRITE) count is a 32Bit-value in which the function returns the number of bytes, which can be at least read / written during the next Fread/Fwrite. Because more than one program could write to a interface, nobody should rely on this. Only Fread/Fwrite return, how much byte are really transfered. Set and Reset Break ------------------- #define TIOCCBRK (('T'<< 8) | 20) #define TIOCSBRK (('T'<< 8) | 21) Fcntl( handle, dummy, TIOCSBRK); /* aktivate Break */ Fcntl( handle, dummy, TIOCCBRK); /* clear Break */ Set/Inquire the input speed and DTR-line control ------------------------------------------------ #define TIOCIBAUD (('T'<< 8) | 18) Fcntl( handle, &speed, TIOCIBAUD); Set the input speed of the interface. speed is a 32Bit-value, which contains the requested speed uncoded in bits per second. speed = 19200 would set the speed to 19200bps. The old (real) input speed is returned in speed. If the old speed is unknown, -1 is returned. If speed = -1 as input parameter of TIOCIBAUD, only the input speed is returned. If speed = 0, the DTR-line will be inaktivated (cleared, dropped), without influence on the real speed. Every TIOCIBAUD-call which sets the speed, aktivates automatically DTR. Returnvalue is ERANGE if the requested speed is not available. In this case (as exception) the next lowest legal speed is returned in speed. If a next lowest speed is unavailable too, the lowest legal speed is returned. Set/Inquire the output speed and DTR-line control ------------------------------------------------- #define TIOCOBAUD (('T'<< 8) | 19) Fcntl( handle, &speed, TIOCOBAUD); Set output speed of the interface. The function description is identical with TIOCIBAUD. If a device does not support different input and output speed, TIOCIBAUD and TIOCOBAUD affects both speeds. Inquire protocol settings ------------------------- #define TIOCGFLAGS (('T'<< 8) | 22) Fcntl( handle, &flags, TIOCGFLAGS); Get the terminal control flags bits. 16 bit flag word flags is set to reflect the current terminal state. It is a OR-connection of bits and bit combinations. Not defined bits should be ignored. A program should read the flags with TIOCGFLAGS, modify the interesting, and set the new value with TIOCSFLAGS. /* Number of stopbits */ #define TF_STOPBITS 0x0003 /* 0x0000 illegal extension proposal: This aktives the synchron mode. The remaining bits will have other meanings in synchron mode, which must be defined in future. */ #define TF_1STOP 0x0001 /* 1 Stopbit */ #define TF_15STOP 0x0002 /* 1.5 Stopbit */ #define TF_2STOP 0x0003 /* 2 Stopbit */ /* Bits per character */ #define TF_CHARBITS 0x000C #define TF_8BIT 0x0 /* 8 Bit */ #define TF_7BIT 0x4 #define TF_6BIT 0x8 #define TF_5BIT 0xC /* 5 Bit */ /* Handshake and parity */ #define TF_FLAG 0xF000 #define T_TANDEM 0x1000 /* XON/XOFF (=^Q/^S) flow control aktiv */ #define T_RTSCTS 0x2000 /* RTS/CTS flow control aktiv */ #define T_EVENP 0x4000 /* even parity aktiv */ #define T_ODDP 0x8000 /* odd parity aktiv */ /* even and odd are mutually exclusive */ Set protocol settings --------------------- #define TIOCSFLAGS (('T'<< 8) | 23) Fcntl( handle, &flags, TIOCSFLAGS); Set the settings, description see TIOCGFLAGS. Returnvalue is ERANGE if a illegal or not support combination occurs in flags. End of documentation of existing MiNT functions. New proposals follow: Flush serial buffers -------------------- #define TIOCFLUSH (('T'<< 8) | 8) Fcntl( handle, special, TIOCFLUSH); (in MiNT "/* BUG: this should flush the input/output buffers */") Selected by the special-parameter the buffers are flushed in different ways: special function 0 Send the transmit buffer. The function returns, if the transmit buffer is empty (return E_OK, =0) or if a internal timeout occurs (return EDRVNR, =-2). The system takes a reasonable timeout. 1 Clear the receive buffer. 2 Clear the transmit buffer. 3 Clear receive and transmit buffer. -tout A negative parameter works as 0, but tout (hint: tout is positive) gives the timeout in 1/200 seconds. Stop receive ------------ #define TIOCSTOP (('T'<< 8) | 9) is only available in the handshake modi and signals the communication partner, that the computer wants to receive nothing. The function waits a reasonable time for collecting characters already in transmission. Then it returns, thinking, the partner stopped transmission. (Example for use: an 8MHz-ST is unable to do simultaneously DMA and 57600Bd-receive by MFP.) Start receive ------------- #define TIOCSTART (('T'<< 8) | 10) Eliminates effects of TIOCSTOP. Inquire/Set buffer settings --------------------------- #define TIOCBUFFER (('T'<<8) | 128) special points to a structure: LONG input buffer size in byte LONG low water mark in byte LONG high water mark in byte LONG output buffer size in byte If a value should inquired only, use a -1 instead of the value. Is a -1 returned instead of a value, this function is not supported. If values are set, the returned values should be examined, because the driver may use not the given ones, but the next values the driver founds suitable. (Hint: The driver has to allocate an free the memory. That is implementable under plain TOS too.) Inquire I/O-lines and signaling capabilities -------------------------------------------- #define TIOCCTLMAP (('T'<<8) | 129) special is a pointer to a structur of 6 LONGs which is filled out by the driver. In every LONG the corresponding bit is set to 1 for a existing control line or capability. 1.LONG: line inquire-/setable with TIOCCTL(GET/SET) 2.LONG: aktion (routine call) possible at start of condition 3.LONG: aktion (routine call) possible at end of condition 4.LONG: reserved for future extension, till then 0 5.LONG: reserved for future extension, till then 0 6.LONG: reserved for future extension, till then 0 corresponding bits and "lines": #define TIOCM_LE 0x0001 /* line enable output, output */ #define TIOCM_DTR 0x0002 /* data terminal ready, output */ #define TIOCM_RTS 0x0004 /* ready to send, today other meaning, output */ #define TIOCM_CTS 0x0008 /* clear to send, today other meaning, input */ #define TIOCM_CAR 0x0010 /* data carrier detect, input */ #define TIOCM_CD TIOCM_CAR /* alternative name */ #define TIOCM_RNG 0x0020 /* ring indicator, input */ #define TIOCM_RI TIOCM_RNG /* alternative name */ #define TIOCM_DSR 0x0040 /* data set ready, input */ #define TIOCM_LEI 0x0080 /* line enable input, input */ #define TIOCM_TXD 0x0100 /* transmit data line, output */ #define TIOCM_RXD 0x0200 /* receive data line, input */ #define TIOCM_BRK 0x0400 /* Break detected, pseudo-input */ #define TIOCM_TER 0x0800 /* transmit error, pseudo-input */ #define TIOCM_RER 0x1000 /* receive error, pseudo-input */ #define TIOCM_TBE 0x2000 /* hardware-transmitter buffer empty, pseudo-input */ #define TIOCM_RBF 0x4000 /* hardware-receiver buffer full, pseudo-input */ Undefined bits should be ignored. The absence of a line in TIOCCTLMAP means only, that this line is not accessible by TIOCCTLxxx. It does not mean, that this line does not exist in the hardware. It is possible, that a line can only be by monitored by callbacks, but not by TIOCCTLGET. Some TIOCM_* have special features, described here: TIOCM_TER, TIOCM_RER The routine gets in D0.b a byte, describing the error in detail: Byte Error 0 no more information available about this error 1 hardware-receiver buffer overflow 2 software-receiver buffer overflow 3 parity error 4 framing error Requesting TIOCM_BRK, TIOCM_RER or TIOCM_TER via TIOCCTLGET: If the condition occurs, the corresponding status bit ist set. A common (-1) or dedicated (BRK, RER or TER) request returns the state of the corresponding bit and resets it. TIOCM_TBE The routine gets in D0.w -1, if the software-transmit buffer is empty. Otherways it gets a byte read out from the software-transmit buffer in D0.b, D0.bit15 is =0 in this case. The routine returns in D0.w -1, if nothing should be sent. It returns D0.bit15 =0 and in D0.b the byte, if the byte should be sent. The routine is called too, if a new byte is written into the software-transmit buffer and the buffer was empty before. If the routine returns a self generated -1 and there are bytes available in the software-transmit buffer, the routine is called again latest after one second. TIOCM_RBF The routine gets in D0.b the received byte. The routine returns in D0.w -1, if nothing should be written into the software-receive buffer. Otherwise it returns D0.bit15 =0 and in D0.b the Byte zurck, which should be written into the software-receive buffer. Inquire I/O-lines and signals ----------------------------- #define TIOCCTLGET (('T'<<8) | 130) returns a LONG in the memory cell special points to, which contains the actual conditions of the CTLlines, coding see TIOCCTLMAP. On special is given a parameter to this function too: If -1, all CTLlines are inquired, if <>-1, only one bit has to be set, and only this CTLline is inquired. The driver may provide never the less the values of the other lines, because of speed reasons. Senseless set bits are ignored. Set I/O-lines and signals ------------------------- #define TIOCCTLSET (('T'<<8) | 131) special points to a structur: LONG ctlmaske LONG ctlvalues The bits which are set in ctlmaske (coding see TIOCCTLMAP), are set to the values in ctlvalues. A software should only set bit(s) in ctlmaske, if it knows its functions. Input lines are unchangable, such bits are ignored as senseless bits. concept of callback-functions ----------------------------- A programm can install functions, which are called nearly immediately if a condition occurs. A function becomes installed by giving its address in procadr. During this installation Bit0 is always 0. A function becomes uninstalled by the same call, but with set bit0 (=1) in procadr, with a odd address! Bit31-1 and ctlline must have the same value as during installation. If there are no special remarks for outstanding functions, the following basic rules apply: - Only register D0 and A0 may be changed. - It must be extremly short, more than 20 "normal" assembler instructions are not allowed (a MOVEM.L D1-D7/A1-A6,... or DIV is not "normal"). The rum time of the routine should not exceed 200 clocks on a CPU MC68000. - Call is made in supervisormode. - The actual InterruptPriorityLevel is unknown. - End with RTS. It is possible, that several programs watch one line simultaneously. The routine must be uninstalled, before it leaves the memory because a non resident program termination. It is unimportant, which file handle is used for (un-/)registration, if it matches the device (e.g. Fopen, Fcntl(...,TIOCCTLSFAST) /*installation*/, Fclose, ... Fopen, Fcntl(...,TIOCCTLSFAST) /*uninstallation*/, Fclose). Some functions exist only under special handshake modi and can only installed if this mode is activ, but uninstalled under every mode. Such functions are automatically activated and deaktivated, as long as they are installed. Install/Uninstall fast callback-functions ----------------------------------------- #define TIOCCTLSFAST (('T'<<8) | 132) Installation and uninstallation of routines, which are called if changes on the CTLlines occur. special is a pointer to a structur: LONG ctlline LONG procadr The routine is called on every transition (if possible, see TIOCCTLMAP) on the line marked in ctlline (only one bit should be set, see TIOCCTLMAP). The new level of the line is given in D0.b: 0 inaktiv (on the DSR line inaktiv means TTL-high-level, for example) and $FF aktiv. Returnvalues of TIOCCTLSFAST: E_OK everything OK 1 routine installed, but it is not the only one. It becomes time critic, if possible, the programm should uninstall the routine. This is only a recommendation. EINVFN this watch capability does not exist EACCDN routine can not be installed. Install/Uninstall slow callback-functions ----------------------------------------- #define TIOCCTLSSLOW (('T'<<8) | 133) nearly identical to TIOCCTLSFAST, with one difference: The routine may be (nearly) as long as it likes to be. Inquire number of unsent bytes ------------------------------ #define TIONOTSEND (('T'<<8) | 134) Fcntl( handle, &count, TIONOTSEND) The function returns in count as a 32bit-value the number of bytes, which are not sent at this moment. The function tries, limited by the hardware (hardware-FIFOs), exactly to find out how much unsent characters in the computer are. Set error behavior ------------------ #define TIOCERROR (('T'<<8) | 135) Fcntl( handle, &errmode, TIOCERROR); Errmode is a 32bit value. If errmode is -1 as input parameter, in errmode is only the actual setting returned. If errmode >=0, the error behavior will be set and the old setting is returned in errmode. In Bit7..0 of errmode is a character. Bit8 =1 switchs on the insert of this character into the receive buffer if a receive error occurs. Normally is Bit8 =0, and no character is inserted during a error. Bit9 =1 switchs on the clearance of receive buffer if break is received, normally is Bit9 =0 and the buffer is not influenced by break. Returnvalue is E_OK, or ERANGE for not supported settings. --- end of text --- Programmers Manual for SERSOFST.TXT-compatible drivers ====================================================== Dies ist in Englisch geschrieben, weil anscheinend besonders die nicht deutsch sprechenden Programmierer besondere Schwierigkeiten haben. Man mag darber denken, wie man will. Because the non-German developers seems to have more difficulties than the Germans, this text is in English language. It is a _quick_ collection of some hints. I repeat me: I'm not payed for doing this and it would be very nice, if I would get some sample code or so from other people. Literature ---------- A real programmer should read the SERSOFST.TXT, the RSVF_COO.TXT and the text files of drivers and DRVIN. BIOS/XBIOS versus GEMDOS ------------------------ At the moment you may mix GEMDOS-calls and BIOS/XBIOS-calls for one port. But I recommend only to use the GEMDOS-calls, if you like to write a "nice" program. I you maintain an old program (which uses only (X)BIOS and direct hardware accesses), and you like to make it "clean", then it should have a user-selectable possibility only to use (X)BIOS and _not_ to access the hardware directly. GEMDOS and the AUX ------------------ Atari recommends not to use the GEMDOS-AUX, especially the GEMDOS-calls number 3, 4, 18, 19. I recommend too not to use this calls and even not to use the "AUX:" or "U:\DEV\AUX", because this dirty things aren't supported, that means, they remain very slow under TOS. GEMDOS number 3, 4, 18, 19 is the slowest way, because your program does an trap#1 to the gemdos and the gemdos does a trap#13 to the bios (for bios device number 1). Additionally, that means that the GEMDOS could redirect this calls to another thing and the BIOS could do it again. If you use these gemdos-calls despite all warnings, you have to set the correct interface configuration via XBIOS Rsconf, and the correct BIOS device via Bconmap (if available). Opening a port -------------- If there is a RSVF-cookie (see RSVF_COO.TXT) then you can find out which ports are availabe and which GEMDOS-names and BIOS-numbers they have. Mostly there will be a MODEM1. You get a handle for this by using the GEMDOS-Fopen-function called with the name "U:\DEV\MODEM1". (C-Programmers: double the backslashs). This will work if DRVIN (and the driver) is installed, under MiNT, unter MagiC. Handling the I/O-ports like files is the normal way under many modern operating systems. And it is a fast way, because you can transfer many characters at on call. Using the handle ---------------- Please read the SERSOFST.TXT. It explains nearly everything. Some remarks: Fread and Fwrite work normally in a non-blocking mode, that means if you pass more bytes to Fwrite than actually can be transfered into the transmitter buffer (from the buffer they are transmitted by an interrupt routine or any other way not interesting for the application programmer), then the first n bytes will be transfered (n = as much as fit into the buffer) and Fwrite returns this n. This is the same behavior which shows Fwrite if you try to write to a disk which becomes full. And in a multitask system an other task could delete a file on the disk and a subsequent Fwrite will write again some bytes, the same way it works on this I/O-ports. If you request more bytes than actually available via Fread, then Fread will return as much bytes as available and the number of bytes. The same way as trying to read more bytes from a file on disk then being in this file. Why this SERSOFST.TXT-standard? ------------------------------- I think it's explained in the SERSOFST.TXT. Again: It makes programs fast (faster than using only BIOS at the clean way) and independend form the underlaying hardware. All good Atari-emulators provide a SERSOFST-compatible interface for the serial ports, that is my personal opinion (yes, there are even bad emulators. That is my personal opinion. Harun Scheutzow. Ask for SERSOFST.TXT/HSMODA-support :-) ). And if your program is clean, using the SERSOFST-stuff, it will run on every port, no matter whether this port is a MFP, a SCC, a 82550-FIFO-UART, an ACIA, some mystic hardware of an Atari-emulator, or even an emulated modem via a large network. Using clean programs (as Connect, GSZRZ, a self written Midicom-driver and so on) I had some successes even on unusual hardware: the programs runned correctly without any change on the Macintosh with the MagiCMac. The only precondition was the SERSOFST-conform driver for that hardware. Speed ----- Some people believe that serial communications have to be slow all the time. But even an old 8MHz-ST can transmit more than 15000cps (15KByte/second) via a SERSOFST-compatible driver using a well implemented Zmodem. This speeds become interesting for ISDN (or servicing more than one modem per computer). Buffer sizes and XBIOS Iorec ---------------------------- As long as (or if) the Fcntl TIOCBUFFER isn't implemented (that means it returns an error if requesting the actual buffer sizes), it is legal to change the size and address and water marks of buffers directly in the IOREC. The clean way for this direct access: Switch to "no handshake", disable the interrupts, change the buffers, re-enable the interrupts, switch to the old handshake mode. DTR on MODEM2/SERIAL2 via direct access, The SCC ------------------------------------------------ (ugly things not directly associated with SERSOFST) The Atari developer documentation is _very_ _wrong_. If you use the drivers you aren't in need of accessing DTR directly in the hardware. But if you do it, do it in the _only_ _one_ correct way: disable interrupts get the WR5-shadow-register from IOREC(of this port)+$1D (it is a byte) modify this shadow and write it back into the IOREC select WR5 in the SCC write the shadow into the SCC (WR5) re-enable interrupts (restore old state) This shadow exists because it's impossible on normal SCCs to read WR5 (and even on enhanced SCCs it is difficult and slow). This shadow exist for MODEM2 and SERIAL2 (the SCC ports) in all TOS-versions and MagiC and even the SERSOFST-drivers (for compatibility). HINT! Disable the interrupts every time you like to access a SCC-register other than RR0, WR0 and the data-register (directly, not via WR8/RR8). If you forget it, and your program wrote the register number into WR0, there may come an interrupt and access the SCC too, producing trouble, because the SCC thinks the value the interrupt routine writes to WR0 is some data and not a new register number, returning to your program the trouble continues. (The only way to end it: read from RR0, and forgetting the read data. You can read/write from/to RR0/WR0 without first writing a 0 to WR0, if you look into the TOS, you see that it writes 0es, this is nonsens, forget this senceless behavior!) Harun Scheutzow, 1994-11-25 . `.. `LIESMICH 7README 1ST ZSETTER PRG zSETTER STR S) SETTER TXT p,j4SETTER UPL |:SETTER_ERSC };~!SETTER_ESTR UD4SETTER_GRSC |F!SETTER_GSTR SO To get english messages and resources rename SETTER.STR to SETTER_G.STR and SETTER_E.STR to SETTER.STR. If there is a SETTER_G.STR but no SETTER_E.STR, SETTER.RSC should be english. Um deutsche Ausgaben und Resourcen zu erhalten, benennen Sie SETTER.STR in SETTER_E.STR und SETTER_E.STR in SETTER.STR um. Wenn Sie ein SETTER_E.STR aber kein SETTER_G.STR finden knnen, sollte SETTER.STR bereits deutsch sein. Markus Kohm, 08.04.1994To get english messages and resources rename SETTER.RSC to SETTER.GER and SETTER.ENG to SETTER.RSC. If there is an SETTER.GER but no SETTER.ENG, SETTER.RSC should be english. Um deutsche Ausgaben und Resourcen zu erhalten, benennen Sie SETTER.RSC in SETTER.ENG und SETTER.GER in SETTER.RSC um. Wenn Sie ein SETTER.ENG aber kein SETTER.GER finden knnen, sollte SETTER.RSC bereits deutsch sein. Markus Kohm, 06.04.1994`l3 ΰgJ$f#ONc~ o# (.@Nd"_.HNNuH0O$H&INj$H gG"Jrp KNlrf S`f&+֫BD`` JNi62RDAlBB0BgBDBA9lAf4RD`0|f*"JrpANlrf JNmм"gBDS|lJo0* |@f 2* |g|g,` C| KNJ@fBAp JNn"` JNgܕ f29Vf3V JO L NuH0]O$HBCG`LBDRC` JNi66JDfr`BA80* |@f2* |f4fJDf JNi6x0* |@f2* |f"J KprNlrfB@|b@0;N"BzZB"Jrp KNl`S`"JrpANl0SSJ@f`S` JNi60SSJ@f`jSTS`"JrpANl0SSJ@f`JS`"JrpANl0SSJ@f`,STS`"JrpANl0SSJ@f` 3Vp`J0* |@f2* |f JNi66f0* |g2* |@g49Vf 3 Vv0\OL NuH<]O$H(IBC&jrp INn" LNm(K`B@2@fBERC` LNi6:BAAfJEfr`BA:0, |@f2, |f4fJEfB@? LNi6_f|z0, |@f2, |f"L MprNlrf0SfDTKBB|bB4; N $FbF"Lrp MNlTK`U`"LrpANlXK0SUJ@f`U` LNi6RK0SUJ@f`pUTU`"LrpANlXK0SUJ@f`LU`"LrpANlTK0SUJ@f`,UTU`"LrpANlTK0SUJ@f` 3V`b0, |@f2, |f LNi6:f^0, |g2, |@g49Vf 3 V` LNm(g 3VB@`p\OL<8NuH0$HBC8&j`BE0H j!`REfREp" gRKB@|bV@0;NlJ p-NZNrX@@p.NZNr?p/NZNr2@op.NZNr`p/NZNr@VK`p0NZNrX@@B@ @BAH`p1NZNrX@@`p2NZNrX@@B@@r`Rp0NZNrX@@B@ @BAHG ``p0NZNrX@@B@@BAHҁRK`6p0NZNrX@@B@@BAHҁZK` 3Vp`Do8RCjmb0L 8NuH0$H&&HJf0B`nJj"pЃfC KN`N-DBD` r N<0 r N&RDJfBSDB@`BA3@@R@SDDm JL NuHapNuH>O&HBC$y~`$jRC fC Ka(HKV gPM LNm-@"K NN La=@J@k2 LNm-@0.HЮмN^$H f:' LNg` <"N JNZA%H0*H%HBA * LNn""Lr * jNlrg LNg JN~J` LNgBj09g`M09@n?29In?4.0<2N,XO5@J@j JN~J:`(|oBC09V5@29Hn5A5n5n/ r0*NBA *Nn""Kr * jNn0+ |@g KNg` KNgJ@gB@`Bjp&_$_NuH8&H$I8BCfJ@g,IlJDg Kp"NkHv`  e \g "fJDgj \f"KA3Nk` "f"KA6Nk`"KA9Nk KB@H|0NkH KB@HH@|0NkH`xJCg"KAO/H&&IElC@ KNj&H fB@`"KABNkpNZ"KNk"KAJNkpNZ"KNk"KANkpNZ"KNk"KA(NkpNZ"KNk"KAPNkpNZ"KNk"KAxNkpNZ"KNk"KANkpNZ"KNk"KANkpNZ"KNk"KANkpNZ"KNk"KANkpNZ"KNk"KA_NkpNZ"KNk"KANkBG>?G?G?G?G?G BCI`>0H o&"h*qA"KNk MNr(Tȼp# MN,HBE`vRNBF`RF| l< 6_`g 6A`e 6Z`c 6a`e 6z`c 60`e 69`bJFf 6 `f0H"NA NB7` zp# NN,H gJEg  La"KNk"KANkB@|bR@0;NXpFd"KANkRMTMRo "KANkJEf"KANk0/ La"KNk`"KA"NkBF|o$ Kp[NkH0 La"KNk Kp]NkH"KANk0HRo"KANkJEft"KA\Nk0/ Lah"KNk`^"KAaNkBF|o$ Kp[NkH0 La4"KNk Kp]NkH"KANk0HЀRo"KANkJEf"KANk0/ La"KNk`"KANkBF|o$ Kp[NkH0 La"KNk Kp]NkH"KANkpFHRG"KANkJEfh"KANk0 La^"KNk`T"KANkBF|o$ Kp[NkH0 La*"KNk Kp]NkH"KANkpFHЀRo"KANkJEf"KArNk0/ La"KNk`"KA|NkBF0 La"KNk"KANkRo"KANkJEf~"KANk0/ Lar"KNk`h"KANkBF0 LaP"KNk"KANkRW"KANkJEf"KANk0 La"KNk` "KA Nk"KANkRC o&hm"KANkpNZ"KNk"KAWNkpNZ"KNk"KAlNk0+ |@g KNg` KNgJ@gBF`|0O*L|NuH$HBCMlGdpC  JNJ@f*AaL6J@gC,/ pNZ"_Nk`nI~pC JNJ@fP g0C @aJ@fZ69VC,/ pNZ"_Nk`"v!C,/ pNZ"_Nk`C JNJ@fF g @*haJ@f,69VC,/ p NZ"_NkC, TNk`(`pC JNJ@f*T`,M*m gC MNJ@f fv!C,/ 0NZ"_Nk`\ g-m`( Ma"J@fZ69V g-M`(C,/ p"NZ"_Nk`vC,/ p#NZ"_NkC, JNkA,p NkH0L|NuH0:&HANZ"J@fCANkp`|xBC`0H s -gvRDDoJCgJCf|f K0NA6`8xE~`0H sa6RDDoJCg` R&hN~J$ fNZ0L 8Nu/ / Ab2t.CYWf.2)\N  !"#$%'(.01:@ABCPQUVWXYZ[ "*2:BJRZbjrz $H`hE``E`XE.`PE8`HED`@EO`8E]`0En`(Ew` E`E`E`E`E`E`E`E`E`E`E`E%`E3`EB`EV`Es`E`E`E`E`E`xE`pE `hE,``ED`XEY`PEv`HE`@E`8E`0E`(E`"E`E`E`E` E`EG p(NZ"H KN"J KNxp)NZ"H KNx KpN&_$_Nu/ YO$H4*2*0*CANZ?/r0*NOpEf J0<NqjpC JNJ@f */fC JN|:p/ JN&H`\p/ KN&H f JB@N&Hg +\g\BI"J LNCT LNxBMp*NZ/HVC LNPOJ@f(HVC LNXOJ@fpNZpN`0g Lp\Nn&H f Lp:Nn&H f&L`RKp "KATNB9bB"L JNC KN*y~`*m g"L MNJ@f gpNZpNS@fLpN4 LNv4,o ll2o l:kSEHŋD4ASBH…Blo:,SE<kSFHƍo 2@SAHA0+HH@J@f4+H…HBJBgp`B@Wlo<,SF0lH?@ ?@ 2,o 6+lHÇ06l0g J0-rN`8?4/0H l p20/ a"TOlf4,20,aRDUDl0g JBA0-NOL2*lf44*lf*0*lf HoHoHo Ho 0*rNO?/?/?/?/r0*NO JCg Ja` Ja JaP0<N4pNB@NPOLNu?/ 6$y~`$j" gjf fp NZpN`0 Ja$_6Nu?/ 6$y~`$j" gjf fp NZpN`l4*2*0N[B5@HjHjHjHjr0*NO?*?*?*?*?*t2909Na>O Ja JaN$_6Nu?/ 6$y~`$j" gjf fp NZpN`l4*2*0N[B5@HjHjHjHjr0*NO?*?*?*?*?*t2909Na>O Ja$ Ja$_6NuH8G~(S`$L(l" glf fpNZpN`T f&`%l LNJ@f09Va, f&`%L fA "Pi"Pi"PiLNuH0$HBC0| |b@0;N0 @Tzl^JG 0*_@|bP@0;N FFFFFFFF(F06<FBa`a<`|a`tad`na~`hv`dC KN0*? KB@N0NnC KNx0*? KB@N0NnC KNx KpNr0* kN``0<N4pNA0*aB@N0<N4`l0*a`b0*a`X0*a`NA0*a`@A0*a`22*0*aD`$2*0*av`2*0*a `0*a0L NuH BC$y~" g4r AXWf4(N T<H0hzp Ja`p Ja`p Ja`p Jaz`~p Jan0*f`lp Ja\0*2*jAm`Pv` v`6*DCRC`vj` BD`xj0*jJCo 8*jSD`JCj8*` JCg8*CJDjBD` jmxj0 Ja0*jm2*jAm0*rjAf Jpa`0*2*jAf Jpa`0*2*HA4*jBl`0*jJ@jB@`&0*2*HA4*jBl`0*j5@?*?*?*?*?*t2909Na>O Ja Ja Ja8LNuH O86E/9 20CAN^XOJ@g6BA0* y N`4 5yBj Jr09N8`hE~0@r AXWfN0(NGHKMParst2`,F2~pDg B@a6` pa,`pDg pa`pa`pDg 0<a`0<a`pDgpa`pDg 0<a`pa`pDgpa`pDg 0<a`vpa`l gh @pax`^HoHoHo Ho rB@NO?/?/?/?/?/?/4/2/ pNO ` g @2(kNW(B@OLNuH 6:/NV$y~`$j" gjf gDj2H6|f0j Ja` |f0j Ja0*k JNW(B@L(NuHOBC8>?|?|?|?C?C ?C ?C?C?C?C?C?C?C?C?C0N4G~ANR:r@g A.aZ6JCfpEg2/*0/(a$6JCfDpEg>ro&g o8/,`*JDf8/,?/(?4/*2/(0/&aXO6oBDJCo$` S(hN6J@g& gJCfJCgvJCgTJCjDC`BC0O>L8NuH8UO:(HBC3EN.5@R@fp NZpNp`HjHjCANPO5@CA Na5@rj5A0*fp NZpNvCAtBA0*N*HjHjHjHRrB@NOHjHj?*?*?*C J42<pNO0*H 5@2*H5AYjUj5j5j 0* 5@2*5AHjHj??*?*C J4B@2<NOa|6J@fG Sh Sh Sh SN]J6J@fnx`PpN40H tNv6B@N4JCg 09Va` Sh Sh ShRDDoJCgJCfa6 SN]dN0*gNN$0TOL8NuH>O&H<>(I?B 0/:x(<@|pBo8JDjBDDf0/O*H8$IBCG00g Sh Sh` Sh Sh|o Sh(` Sh(IHlHlHl"L SNO S0(T><(l?,?,?,??,?,4,2B@NO BgBg4"Mr p SaXO>?,?,?,4r SB@Nx\OM B@ SN:|0| g S@g"| g6`\p??4"Mr Spa^XO>`Bp??4"Mr SpaDXO>`(p Shg 2f4v`p Shg2gBR`2H ЀЁ Sp |gL|gFHn"N S0NXO2H ЀЁ S=p=p?.?.?.40rNx\O|g|f Hl"LB@ SNXO0Tl?,?,?,??,?,4,2pNO 0OL|NuH0YO$H6..&I<&I:0/>8o@rBAo8JDjBDDf0/@fBCI`0C@o4CH"ҁ҂rrH 3AN"H2CH ЀЁ r PN0/@ghHl"L0C JNXO2CH ЀЁ9r9r?,?,?,40C JrNx\O`2CH ЀЁrrRC| m:4r 0CANZ ol2H ЀЁ42^H….HBJBfRrZUr^>/H6/H :H$Ԃԅ22(^HN."<N. :H$Ԃԅ22(^HN&"<N&4H"ҁ҂5v:2rCGREA1E6(^E1C:/@gFHl"L J0NXO2H ЀЁ9r9r?,?,?,4 J0rNx\O0OLNuH>O/H0?@./A*/B& o.o Sh` ShKHmHmHm"M SNO S0(U?@2(m?A?-?-?-??-?-4-B@2NO BgBg4/2"o4rp SafXO8?-?-?-4r SB@Nx\OzM 0 SN6|0|| b@0;N6Vp??4/2"o4r SpaXO8`xp??4/2"o4r SpaXO8`XHR??"L$/."/2p SaVPO:J@jr??4"L Spr$aXO>z`HR??"L$/."/2p SaPO:J@jXr??4"L Spr$aXO>2@SA| oz `:GSE|`HR??"L$/."/2p SaPO:J@kp$NZ"H NN2H ЀЁ S"h"Q NNxp%NZ"H NNx S"h\"Q NNxp&NZ"H NNx S"ht"Q NNxp'NZ"H NNx NpN` >`>BR2H ЀЁ Sp 4fJHo C" S0NXO2H ЀЁ S?p"?p$?/$?/$?/$4/$0rNx\O0gHm"M SB@NXO0/U2/m?-?-?-??-?-4-p2NO 0O4L|NuH8(H>,*8/$$IBCG`0H2I'RCCn?$"0 LaTOJ@gBC`2I4H%(RCCnLNuH8(H><:8/$$IBCG`0HЀ22H4J' RCCn?4H2H0 LatTOJ@g6BC`.2I f4HԂ5(`2I4HԂ5(RCCnLNuH6O,H6/I:<EA/H K /gJFj,BBU`2UH ЀЁ v "P JNxRU Um` "o JN JNr(|f |l0`0<:B* Jp\Nn&H f Jp:Nn&H f&J`RK"K o NC KNHU"o JNXOJ@fpNZpN`HoCB@ NNXO[W[op n?@r n?A??/?/4/ NB@rNx\O Uf>p\ JNn&H f Jp:Nn&H f&J`RK"o KN JNr(BF0R@|b@0;N N6>Dm("o JNJ@g"J oNB@`fp``p`ZB2PDo0`08BU`B0H@o"C4UH"ҁ҂ v Pp N`2UH ЀЁ v "PBRU Um`<Hƍ0rƐA?@H"J2H$Ԃԁ v( PN0/4H"ҁ҂ v "PB1>:`>0HCp4UH"ҁ҂ v PN2UH ЀЁ v "PB1`RUF Um`V~DJGjBG:`BJGk"p Cp4UH"ҁ҂ v PN`2UH ЀЁ v "PBSU| 0jDlp`B@OLlNuH>O*H?@<$IBWBD:G4BB2"Jp Sa oo Sh` ShIHlHlHl"L SNO S0(T?@2(l?A?,?,?,??,?,4,B@2NO BgBg4/"Mrp SaXO?@?,?,?,4r SB@Nx\O~M0 SN6|0||b@0;N:V4p??/4/"Mr SpaTXO?@`Tp??/4/"Mr Spa2XO?@`2BB2p Sa^:~`SG|o2H ЀЁ S"p Qg`t2p Sa$:~`SG|o2H ЀЁ S"p Qg`t2p Sa:~`RG|l2H ЀЁ S"p Qg`t2p Sa:~`SG|of2H ЀЁ S"p Qg`Lt2"Jp Saz>J@jz` JGf>x~`SG|o2H ЀЁ S"p Qf`xBWJEg$pNZpNU@ft2p SaBE2H ЀЁ Sp JDfHn"N S0NXO2H ЀЁ S=p=p?.?.?.40rNx\OHn"Np SNXO S=h4=h6?.?.?.4rp Nx\OJDgHl"LB@ SNXO0/T2/l?,?,?,??,?,4,p2NO 0OL|NuH8$HBC0*kVH"j&q KNr(TD|I@BA|bA2;N bD"L0 Ka6`B@?"L$<"< K0aTO6`B@?C$," K0aTO6`dB@?"L4<2< K0aTO6`FB@?C4,2 K0aTO6`( y4hH"LBA0 KaV6 y4hHJCgP0*jmF2*jAl:?9?*49j??*?*092tNa>O 5|L8Nu/ / O$HI"Jrp$ANlrf^p0/"XN^( gJp0/"CXHNZ Tp0(C rp0/"м TA("JNlrg TN~JB09Vg`p`$B@` TXH"4H"T$QӲ(R@ Th"eB@O$(_$_NuH,O(H$Ip, JN*Hp; JN g " go*H f"JANANr&`.& Jg "JAN 7\0g \RRJB70"LA0NCANj*H f y!Vffd f09V` Ma6 MNg0OL4NuH0&HE"Ja6gH|!fFANr$H g"J Ka6g$|!f"ANr$H g"J Ka6fp`B@L Nu 9g @N~JNuA"gJ@k"Ai"d4H"Q q(NuNuH0$H&I<6:8H$는Ԅ( 2HN(o(<0C@n.<Em~` C>H 눐Ї.2HN.46L Nu/?8AlB@`2A6H 2HN&"<N&o&<08&NuH8(H6$I&o"KN84H"ҁ҂:4` / "J0 LaXO84H"ҁ҂:4JDf Eg|f0L8NuH8(H6&IE"JN84H"ҁ҂:4` / "K0 LatXO84H"ҁ҂:4JDf Eg|f0L8NuH $H86J@fH"ҁҀrN2H ЀЁ42JSBg`n2H ЀЁ:24H…2H ЀЁ爕r`0H4H"ҁ҂牑r2H ЀЁ:2|gEf2H ЀЁrB@L8NuH $H86H"ҁҀ:2`2H ЀЁ:2Eg Eg|fEf0`B@L8Nu?CB@aTONu/ $HNp JNJB@$_NuB@NJB@NuHQO&H:HoHoHo C NO 6+W8+o?/?/?/?/?/?/4/2/ B@NO ?/?/?/4/rB@ KNx\O0 KN:HoC KB@NXOWo?/?/?/?/?/?/4/2/ pNO 2|H ЀЁs 0POL8NuQO0i2hAl`0h?@2)i4(hBl`2(h?A0Po`0>2)ho`2(?A23o0/W3@2/o3A0/Wo4/oop`B@PONuHO/H,I<:*o0GBCt@g^pFgEI0rAXWfd0(NGRSab2"@N"L KN`C KN`zC KN`jC KN`\C KN`N|lHx"| |NXO(HpFg"lB@1PN` TB@0PNBg4BD2H ЀЁ45||fl u B@N&H`SK2H ЀЁ爷 g + gz`SKR2H ЀЁ爷 g + fANrf C KNJ@f6JCfp 4RDH"ҁ҂ug`JCg<0 Ma: Ma<BCH"ҁҀ85`2H ЀЁ85RCDgDfDfD:-2H ЀЁ:52H ЀЁ85`2H ЀЁ85SCDgJCfDfB@` o0pO LxxNuOA>?@Bo?X?X?X ?X ?XA0rN8ONu"#h0i0)iSiSiNuH>Ot?@*H,IEGIrp9@ 9@ 9@9@8BA9A9A9A9A9A9|HWC LNXO0/g / / / CANO 0j<0/OL|NuHO:0/$6/&>?B?@?B?@?C ?A ?C?Wpo?@ogx`xA20NOL8Nup a)Nu/r4BgBRHS"$劐$&փ`BXH&SJf`BPTH"SJf`BRH"SJf&NuaNu?6a1>J@j2DA3Vp`"VCJCk|(lA0HBpBpB@6Nu?629XgBAa1`0JCfa0`&|fa0`JCj|m pCa/`pa/6NuUOAra0TONu/ / A EGH f "gtf$ jD$`$"y ) i& SA# f N&  SN8ByG"K KpNy&&_$_NuH>E5| f$&j KNe&"+ ҫҫҼցpЃ&I K f +мo"9g$ ԃ#H*`rn3rf*`F"f* `Drf$*`6rf$*`(rf $"䁔*`po"D* Ѓ#H֕ Ѓ"+Ҽn,@ NN8 NA%H`,* +,k NN8 NA%HBH" KB@N%CNsD +Ы "@ kN>"j j *Ny&ANjpNL|NuH8QO/Hp"(ҨҀ¼$A#&h,` Afp +Rff +Gf^ +VfV +=fNBXBZK Nf$ +Uf +Lf +Lf +:fCf.# WX Xf`$Xr` =frRKfRKJg, yXHc j`RHf (=f (b`fBf>BX(oIHH J&HJo tāЂ& ԃ$BPJP.#$WX$X`RLSJo>  g  g`0  g  fSRL`SRLJo  g  gB`gSJnBBA `$WX$RXff$WB" gZ`T(I` ,fB`RIfr 0m< 9n6H|H҂g&$Ԃւ"`ֲd$$y&r(BfXPOLNu?6pN>N>0N6NuH $HBC g 8* 2|fp`TpDg JaP60|g ja6BBBBj 09Xf rDgB@`0*a@JCgp`B@LNu?/ $H gaN`DBCEd`22H ЁЀЁЀ02 4|g ЁЀЁЀAaRC| mB@$_6NuH $HBC f0`t8* 0|fp`b oFrDg*B j0*"a'lg*j@ ` pDg*Dt"0*aJjpDfv0<Dgj %jB0L8Nu/ $HSk jRB@` Jarj f| g$_NuH0$H6* 0<Cg j 6* pCgb2|PfZGdfpCg2+"|gAa%j"* j0*a4(n"JfrCgBB`4<`4<@j Bp`pЄ$ jRB@L NuH0$H&oBC896`\H|rg$n|+g6|6g&S@g6`~|tg2W@g `p|`(||`||`||` |`|f0|g4|f|`|f|`||@?<0 JaTO:V@l`0aJ@g|`|7E7D KL 8NuH<*H(IBCGd` 2H ЁЀЁЀ43 |fERC f| m g/"L MaXO g Ja J` 3#VL<NuH :$HBC8* 2<Dgj j 8* pDg\2|PfTtDf | fz v jRR l2|g,| f&,B%j" j0*a$g j@ p`JCg | fz `0|LxNuH0&H$IBC` JHaFR@fp`RCf0L NuH8*,&I$H6+ 4<Cg k 6+ pCg2|Pgp`^x "a),rCf 498g,.o"c ` ."J ka$؟߫؇ǜJgd8'k"+ k0+aF.o&`" J0+a0.ov؀Jf`.o((k`  g SSR`RLSJgJn&'LJgd'k"+ k0+a.o&`b" J0+a.nJf0<`0<@k `D"p Ja(H fIx " ؁$L`  g SSR`RLSJnJfDJo "a(`pLNuH $H&x:* pEgrEg Jg0|g Jav`"pEg(D`0|g rEg(`p`tr0*a Jjr`"҄ L8NuH YO$H,:j 6* (tCgrCfJg0|f|f& Ja>R@g4"0*a Jjp`B@`p.JEf0*a H.jp`X ހ`0<Cfm jm ߪB@`,%jB0<Cgj 4"0*a ,Jjp`B@XOLNuH8O/@,&I$Hv?k 4<ogk k ?k pog2/|Pf "/a' ,rof 498gx.+`fd*`* "k Ja!۫ۓJf KaJ@f0.+0<ogk օŜb" J0+a *fօ` Jf`?|BD>`.+(J`R  f:JDf$0/|g> kR x?DS` kR RJBD` kRSSRRJoJfJfd0/g KaJ@fh0<ogk Bo`>B'k`SRJJg  f J/"0+ La*gk@ `pЅրJf00g KaJ@gp`"0<ogk Jo "/a%`pO LNu/ $H0* A2|g d$`$<%B`%P2|f *a,%Hfj j A%H%|`j %jB$_NuH(O$H8BC" fHa $H gLva!:<a|:B/I y`Xm*rDB@ La$,JFg JCg Ja 0D@3V`4B@ La"9Zgff\B,"J La`"JAax JOLxNuH8$HaT&"9g(&A` "J LaRJ@f 4=8fA8` XK(S fܑLNu?/ O&Ha!$6pa! B@Aa">f C:AarA&H$Iv2 gfp`4BRID*LM2`gr t V0(fBBD -f.v`( 9n H|` Ha:|2IDAA8RKpr V0f4H*獚ڂ :fJBD`( 9n H|` Ha|2IDAA8RKpr V0f0H$銔ڂK p r V0g4`gr t V0(fBg#` #, g #M`#0H"a(L|8Nu hf" hW lph h_@m&0( hk` h fph h_@lB@NupNu ho h lpNuB@NuHO8&>UBgJn42 aL*Jk`t2pa8*Jj0D@3Vp`tJGf,`,܅42 a .gTJj t2pa. <AaT`2&o&<"A0a*gJo Ѕ`p`ރm OLNut2paJj2DA3VpNqNuCX#xB x fBQ` MiNTf2`PH fBQpNuH Ш(@29f*$g&e""y*Bɹd$$(չ'h`'HL<NuaNu` fNuRHSJfNu"HBB0`SJfNu y XlByNuB@an3adNuH4O|&H8A6E"J Ka yfa09F@@|GX S m,:<s0|gr`r@A S`m|0|g|`zKVBAB@ JaZJ@k0| | f:U`h0E Ja,0F@D|gJFkBADg 0a:$`6B SZo4|HpEg20a(pEgr f~ pEf,9HHfpax`9HHfpab`~ XOL NuH8&H&$H" fa`Jf Ka`Gx؃ȼ +r҄c"$ Ԅ(B)@( A a\'D`~cvA(H h`(H h gb Ы"@"g(b$$+Ԩb((٫)hBB`$ a(H gv֫"L J a Ja$L JLNuaNu/ OArҀ¼ CH$Qd` QёO@$_Nu// &29f$9HgJga$H`$yH` a$H f$29gBy a`3'V$| J$_&NuH>OH$H*I:BC" f 3(V`I."L Ja ?@M y Xm"M L0al,Jf2-0-a+@2-"0- a+@ 2-&0-$a+@$ -"-a""<ab+@JEg2||f"LA60<a,JkB/CA6a Aax+@`b ofV:!Bm(R+yBmaU+@ +@$+@Bm;| a;@ a;@r+A+A` \f,f a ><A`gl ,:fd,g <\fX,fR:A;|(pr y20g H|`H|;B+|BAB@ar+@ +@$+@`Jp* La f p? La g 3!V`&L`RKg+f .f g +\g +.f v"N La8` \f vC La$a |/HAa 60< La <H oa JjJCgp߰g0D@3V`FJCg /.f/f2/0/a+@ +@$+@g ,:fHa |;@`a ;@+yR/H;@(29Xg mf:`pm(g2<@I`2<|:pm(gUmpm(gUp. Ja&H gVCaPJ@gFC KaBJ@g8C Ka4J@g*C Ka&J@gC KaJ@gC Ka J@fUI0||fx29gH LB@a N(JDj0D@3Vp`Bo,A,r0a J0a 4 o`,g o#!,fUI+o -м"<a +@;| `+|+|;| Bma;@ a;@+|B@OL|NuB@aNu/ $I g"H`RIff$_NuaNu`JfNufSH HNu? f " gp`B@`4$ g JggfB@`Jfp`Jfp` HHC06Nu/ $H fCf$_NuH0$H&I f " gp`B@`F g4HaHaJggfB@`Jfp`Jfp` HHAL NuC fpNuf Nu/"f gp`B@`:& g(SkJggJkfB@`Jfp`Jfp` HHC&Nu/ / $H&I" fGSkf`BSj&_$_NuH0$H&I" f gp`B@`P" g>&HaHaSkJggJkfB@`Jfp`Jfp` HHAL 8Nu`fCfJfSH HNu INuH8O&H$I8vBo?|." g"I2Hpr T0f|+g |-f ?|HJDg|f |0f xg Xf g$RKHxJDf|0fx`x `|m|$n 2Ha /@BF2| g$nUAg UAgYAg`|g |g` RFRFRFRFRFpr T0gzG`(p r T0gzt0gzA`za?:_| Eo\ofLm60HЗ/JFg| f "҃ҁ`"` 2Ha "& o &?|`0HHff0/ffR?|p&0/o3XV g 2/kA$ O LNu// E*t@B44J|?5B4v j|5BpA5@4J|SB5B6p k||P5C 5|r5A5A Jax" jft`BB3< $_&NuH $Ha6a820a`" g$LNurt y20(gr A`20Nurt y20(gr A`20NuaNuOCa"AaJ@j2DA3Vp`B@ONuH8B$H&IIp"L Ja J@fZJg2r t y20(g *g </g<\f|:TK`09Xg Q@mC Ka(^K`C Ka`j"J KaC KaC KaJ@f C Kap`h09Xg8C JpadJ@f(\J y XmC% KaPK`.C. KaVK` /f9Zg:` </fv\fBB@LNuH0$H&Igj *:fbHa~TJ9Zg 9uZg/dev/ /g, \g&/` <\fv/` yXl Ha&fBB@L Nu/ / O&H(I`0A` ;g ,fRK`fB"LAaL`RLf:fB$B@O(_&_NuH0O6$H,49XfjaJ@gbxCHJkp(nx' A:0rEf$9g4&J(` < fpEgr 0aҴBA0aҪ SJn `~ J"0at(Jk&JgfJfb y Xm04L|H|L|H|0L|H|`L|H|L|H|LHCSfL|g4SDB|BN """"Qg2g _Nu2DA|^ANSf`24 Afg SgLH_>L|H>L|H>L|pH>L|@H>L|H>LHxASfL|g4SDB|BN # # # # Qg3 g4 `.2DA|^AN        Sf`HR??<NMXO$_NuHR/// /?<NNO$_ @NuHR/?<&NN\O$_NuHR??<NAXO$_NuHR?<NATO$_NuHR?<NATO$_NuHR/?< NA\O$_NuHR??<NAXO$_NuHR?<NATO$_NuHR/?<NA\O$_NuHR/?< NA\O$_NuHR?<*NATO$_NuHR?<,NATO$_NuHR?</NATO$_ @NuHR?/?<6NAPO$_NuHR/?<;NA\O$_NuHR?/?<NAXO$_NuHR//??<?NAO $_NuHR//??<@NAO $_NuHR/?<ANA\O$_NuHR??/?<BNAO $_NuHR??/?<CNAO $_NuHR???<FNA\O$_NuHR?/?<GNAPO$_NuHR/?<HNA\O$_ @NuHR//??<JNAO $_Nu??<LNAHR?/?<NNAPO$_NuHR??/?<WNAO $_NuHR?/??<NAO $_NuHR???<NA\O$_NuHR?< NATO$_NuHR?< NATO$_NuHR?<NATO$_NuHR???<NA\O$_NuHR/??<NAPO$_NuHR?<NATO$_NuHR/?<NA\O$_NuHR/?<NA\O$_NuHR??<NAXO$_NuHR/ /??<,NAO $_NuHR/ /??</NAO $_NuHR?/?<2NAPO$_NuHR??<3NAXO$_NuHR?<8NATO$_NuHR?<9NATO$_NuHR??/?<;NAO $_Nu$HBJBf$HBJBfNuHBЂNuHBЂNu$HBJBf($HBJBf H@B@H@NuB@H@HB0@0H@0H@Nu AH@r2B@tЀӁd҈рӁQF@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$ jDNuC>HRt""2"<20<NBA0$_Nu"<`"< `Hz#p "< `HRC2#HA #H HPA#"" 0<NB _0C2">#|z#| $_NuHQ#"<6a:"_2"o2"o2"o 2NuCz222""" "<3 `3z#"<2`HQHP"?l0,lS@?@2,lSA?AA0rNp4,H"ҁ҂ Tp gv`BCBA0Npr0NHr0Nb0, CR@?@>?l 0, lCU@?@ ?@2, lSA?AA0rNr0Npr0NHpl C?@>?l 0, lCY@?@ ?@2, lSA?AA0rN0, C?@>2, C?A0, lCS@?@ ?@4, lCSB?BA0rN0, C>2, C?A4, lCSB?B0, lCS@?@A0rN20Nb2*0Np2*0NH2*0NB@O L NuhAruNs cONfigERMaRkus cONfigER-2147483648rbrb+\\\"\0", w/* SETTER.PRG (c) Markus Kohm 28. August 1994 */ #ifndef SETTERBLK_H #define SETTERBLK_H #define SETTERFLAG 0 /* */ #define SETTERLONGS 1 /* */ #define SETTERSTRING 2 /* */ #define SETTERWORDS 3 /* */ /* 4 */ #define SETTERLIMITLONGS 5 /* */ #define SETTERFILEPATH 6 /* */ #define SETTERLIMITWORDS 7 /* */ typedef struct _setterblk { char magic[16]; /* */ struct _setterblk *magicpointer; /* */ struct{ char text[]; char type; char reserved; short flag; } flag char number; long valuelong char number; short valueword char number; long minrange, maxrange; long valuelimitlong char number; short minrange, maxrange; short valuelimitword char stringlength; char string[]; string char filepathlength; char filepath[filepath short endmagic; /* 0x0000 */ } SETTERBLK; /* */ /* */ extern SETTERBLK setterblk; #endif /* SETTER_H */ /* EOF */ SETTER.PRG (c) Markus Kohm 28. August 1994 */ #include "" SETTERBLK setterblk = { "hAruNs cONfigER", &setterblk, { , SETTERFLAG, 0 , 0xFFFF, 0, SETTERLONGS, , SETTERWORDS, , SETTERLIMITLONGS, , SETTERLIMITWORDS, , SETTERSTRING, , SETTERFILEPATH, }, 0 /* 0x0000 */ }; /* ; ; SETTER.PRG ; (c) Markus Kohm ; 28. August 1994 .GLOBL setterblk SETTERFLAG EQU 0 ; SETTERLONGS EQU 1 ; SETTERSTRING EQU 2 ; SETTERWORDS EQU 3 ; ; 4 SETTERLIMITLONGS EQU 5 ; SETTERFILEPATH EQU 6 ; SETTERLIMITWORDS EQU 7 ; .DATA .EVEN setterblk: .dc.b "hAruNs cONfigER", 0 ; .dc.l setterblk ; .dc.b .dc.b SETTERFLAG, 0 .dc.w 0xFFFF 0x0000 .dc.b SETTERLONGS, .dc.l .dc.b SETTERWORDS, .dc.b SETTERLIMITLONGS, .dc.l .dc.b SETTERLIMITWORDS, .dc.w .dc.b SETTERSTRING, .dc.b SETTERFILEPATH, .dc.b 0, 0 ; $0000 ; .END .C.S.Hwb+-i:-e:-c-c:SETTER.STR### SETTER.PRG ### KANN SETTER.STR NICHT LADEN! ### CANNOT LOAD SETTER.STR! *.*generic errordrive not readyunknown commandcrc errorbad requestseek errorunknown mediasector not foundno paperwrite faultread faultgeneral mishapwrite protectmedia changeunknown devicebad sectorsinsert diskinvalid function numberfile not foundpath not foundno more handlesaccess deniedinvalid handleinsufficient memoryinvalid memory block addressinvalid drive speccross device renameno more files (fsnext)locking conflictrange error/context unknowninternal errorinvalid program load formatset block failed/growth restraintstoo many symbolic linkswrite to broken pipefile exists, try again latername too longno ttynot in rangenot at domainI/O errordisk fullthis *should* be fakenot configurabletype not knownno more window-handledifferent setter-blocksunkown errorByte28. August 1994/dev/| : [1][Meneintrag: |Mentitel: ][Danke]*.*rbSETTERPATHINSDELHOMEUNDOHELPFatal error: insufficient memory  BBBBBBBBBB DDDDDD HHHHHH 2\U:\PROC;Zx0Nm???UCTTZUNIXMODEPCONVERT=   \*.*.ttp.prg.tos.g.sh.bat/dev/U:\dev\V:\:tty:con:/pipe/U:\pipe\Q:\>\z8X@z8@XzX $ > ,2(<   ($B.F$ " r   $&$$HL $ *   "  00            @j 4          *  $@     <            $ h,  2              ,0 " "  ""  < * L  $&<          "  8 &    D .(X<$( ( * *0  :&* (   : P  ($* 2 F . R D |(( "  " tb  2  ,"6dF,r4 : L`6&PD4$X:44 .`84(44&  *L &$ ND, $: 06 2J~p^,  . Z&( ,n2^ Xr T>,R*(BZ .  .f  L"&  D  V&  ,L>,($$$H &H, :` d*\^,x&v:6",V*D <&V 6 "("4$*4D  . l26>^6* 2( B BF> .R$$$$$ $3 Js<#o\Gb.PlCj  1 E V c g k s [2][Die Einstellungen wurden|gendert!|Sollen sie noch gesichert|werden?][Sichern|Weiter][3][Sichern war nicht|mglich!][Abbruch][1][Dateiauswahl ist nicht|mglich!][Abbruch][1][Der String ist lnger|als erlaubt!|Bitte krzen!][Manuell|Krzen][2][Diese Datei ist bereits|geladen. Soll sie erneut|geladen werden?][Laden|Abbruch][3][Warum bekomme ich Redaws|fr ein Fenster, das nicht|mir gehrt?!?][Abbruch][3][Warum soll ich ein Fenster|toppen, das nicht mir|gehrt?!?][Abbruch][3][Warum soll ich ein Fenster|wegschaffen, das nicht mir|gehrt?!?][Abbruch][3][Warum soll ich ein Fenster|vergern, das nicht mir|gehrt?!?][Abbruch][3][Warum soll ich ein Fenster|verschieben, das nicht mir|gehrt?!?][Abbruch][3][Warum soll ich den Inhalt|eines Fensters verschieben,|das nich mir gehrt?!?][Abbruch][3][SETTER_G.RSC konnte nicht|geladen werden!|Vielleicht nicht vorhanden|oder nicht genug Speicher!][Abbruch][3][Fehler in SETTER_G.RSC!|Die erwartete Struktur ist|nicht vorhanden!|Da hat einer manipuliert!!!][Abbruch][3][Kein AES-Handle verfgbar!|Diese Applikation kann daher|momentan nicht ausgefhrt|werden!][Abbruch][3][Kein VDI-Handle verfgbar!|Diese Applikation kann daher|momentan nicht ausgefhrt|werden!][Abbruch]SETTER_G.RSCKonfigurationsblock erstellt vonEntscheidung JA/NEIN, EIN/AUSMehrere 32Bit-Zahlwerte von -2147483648 bis 2147483647Zeichenfolge gerader LngeMehrere 16Bit-Zahlwerte von -32768 bis 32767ReserviertMehrere 32Bit-Zahlwerte im Bereich der folgenden SchrankenGltiger Pfad- bzw. DateinameMehrere 16Bit-Zahlwerte im Bereich der folgenden SchrankenKennzeichnung durch 16-Byte-MagicZeiger auf den Block selbstDas war der SETTER-Konfigurationsblock.Ich empfehle, die Definitionen durch sinnvolle Namen zu ersetzen.Fehler beim Import: Fehler beim Export: Da kein Setter geladen ist, kann auch keiner gespeichert werden: Kann obersten Setter nicht schlieen: Kann Setter nicht finden: Kann Setter nicht schlieen: Befehl nicht bekannt: [1][Wert auerhalb|des zulssigen Bereichs|von bis !][ndern!][3][Fehler bei Datei:|][Abbruch]Programm ffnen:Setter sichern als:Unbekannter Typ!Schalter istEINAUSWert(e)ZeichenketteDatei/PfadSETTER.PRG, ein Konfigurator **************************** Copyright ========= SETTER.PRG darf zusammen mit diesem Text frei kopiert werden, soweit die Bedingungen aus der Info-Box < SETTER | ber Setter ... | Info > befolgt werden. Ich hafte natrlich in keinster Weise fr irgendwelche Auswirkungen oder Nichtwirkungen, die der Einsatz oder Nichteinsatz von SETTER.* hat. Es ist zwar nicht sehr wahrscheinlich, aber durchaus mglich, da SETTER irgendwelche Daten vernichtet, die fr Sie essentielle Bedeutung haben! Originalton Harun: Mglicherweise finden auch andere Programmierer SETTER ntzlich, bitte, ihr drft es benutzen. Aber!: Wenn jemand eine erweiterte Version von SETTER in Umlauf bringt, mu: - diese ebenfalls frei kopierbar sein. - diese entsprechend gekennzeichnet sein. - er mir eine Nachricht, besser ein Exemplar, kostenlos zukommen lassen. Ich kann es nicht ausstehen, wenn jemand meine Spezifikation ndert. Erweitern ist erlaubt und erwnscht, aber bitte keine bereits vorhandenen Kommandos ndern. "Ich" bin: Harun Scheutzow, zu erreichen im Internet ber Harun_Scheutzow@B.maus.de bzw. im Mausnetz: Harun Scheutzow @B Ende des Originaltons. SETTERs Sinn und Zweck: ======================= Die kleinen ASCII-Textfiles, mit denen viele Programme konfiguriert werden, sind Harun auf die Nerven gegangen. Sie haben zwar den Vorteil der nderbarkeit mit jedem Texteditor, liegen als Nachteil aber mit im Verzeichnis rum und sind trotzdem oft nicht da, wo sie sein sollten. Deshalb hat er die Konfigurationsinformationen direkt im Programm untergebracht und mit einer kurzen Erklrung versehen. Bei residenten Programmen liegen diese Erklrungen natrlich im nichtresidenten Teil (kein Problem bei Assemblerprogrammierung). Konfiguriert werden solche Programme mit SETTER, das die Informationen und Erklrungen aus dem Programm liest und die Konfiguration wieder im Programm speichert. Nutzung ======= Entweder man zieht das zu bearbeitende Programm mit der Maus auf SETTER.PRG oder ruft SETTER von einer Shell mit einer Befehlszeile auf oder startet es durch Doppelklick. Ob Programm wirklich konfigurierbar sind, erkennt SETTER mit hoher Sicherheit automatisch. In der Befehlszeile sind folgende Kommandos erlaubt, die entsprechende ihrer Reihenfolge abgearbeitet werden: -I: Programm oder Setterblockdatei laden. -E: Obersten Konfigurationsblock in die Datei speichern. -C Obersten Konfiguationsblock freigeben. -C: Konfigurationsblock, der aus der angegebenen Datei geladen wurde, freigeben. Beispiel: -I:Datei1.PRG -E:Datei1.BLK -I:Datei2.PRG -C:Datei1.PRG -C 1. Datei1.PRG lesen 2. Den gelesenen Konfigurationsblock aus Datei1.PRG nach Datei1.BLKL speichern 3. Datei2.PRG lesen 4. Den Konfigurationsblock von Datei1.PRG vergessen 5. Den obersten Konfigurationsblock - das ist der aus Datei2.PRG - vergessen Wurde SETTER ohne Kommandos gestartet, so erscheint eine GEM-Oberflche mit Menzeile. U.U. ffnen sich gleich ein paar Fenster, nmlich falls Dateinamen bergeben wurden. Das Men ======== Die Tastaturkrzel im Men knnen mit Hilfe eines RSC-Kontruktion-Sets gendert werden. Es ist lediglich zu beachten, da dem Krzel kein Leerzeichen mehr folgen darf. SETTER ------ Hier findet sich nur der Menpunkt < ber SETTER ... >, der sich selbst erklrt. Datei ----- < ffnen ... > ber eine Dateiauswahl kann ein Konfigurationsblock aus einem Programm oder einem gespeicherten Setterblock eingelesen werden. Es ffnet sich dann ein Fenster, in dem die Konfiguration angezeigt wird. < Schlieen > Der oberste Konfigurationsblock wird freigegeben. Wurden nderungen daran vorgenommen, so erfolgt eine Sicherheitsabfrage, ob er nicht zunchst gesichtert werden soll. < Sichern > Der oberste Konfigurationsblock wird in die Datei gespeichert, aus der er stammt. < Sichern als ... > Der oberste Konfigurationsblock kann in eine andere oder eine neue Datei gespeichert werden. Wird in eine existierende Datei gespeichert, so erfolgt eine berprfung, ob diese Datei berhaupt einen Konfigurationsblock mit identischen Aufbau besitzt. Ist das nicht der Fall, verweigert SETTER die Zerstrung der Datei. Wird in eine neue Datei gespeichert, so wird in dieser nur der Konfigurationsblock mit einer vorangestellten Kennung gespeichert. Besitzt die Datei die Endung ".C", ".H" oder ".S", so tritt ein Sonderfall in Aktion. Bei ".S" wird eine Assemblersourcedatei mit dem Konfigurationsblock gespeichert; bei ".H" eine C-Headerdatei mit der Definition eines Types SETTERBLK, der im Aufbau genau dem Konfigurationsblock entspricht. Bei ".C" wird eine Initialisierung fr eine Variable setterblk von genau diesem Typ gespeichert und auerdem die zugehrige C-Headerdatei. Befinden sich in den Erklrungen Strings, die mit einem # beginnen und maximal 10 Zeichen enthalten, die einen gltigen C-Bezeichner darstellen, so werden in der C-Headerdatei Untertypen damit benannt. < Beenden > Alle offenen Konfigurationsblcke werden geschlossen und SETTER beendet. Fensterbedienung ================ Die Fenster sind normal bedienbar. Das oberste Fenster kann auer mit der Maus auch ber verschiedene Tasten bedient werden. Durch Anklicken einer Zeile, wird der Cursor sichtbar. Dieser kann dann mit den Cursortasten AUF und AB verschoben werden. Mit LINKS und RECHTS wird der Fensterinhalt nach links und rechts verschoben. Mit SHIFT-LINKS und SHIFT-RECHTS gelangt man an den Anfang bzw. das Ende des darstellbaren Bereichs, mit CTRL-LINKS und CTRL-RECHTS seitenweise nach links bzw. rechts. Durch Doppelklick oder mit Enter/Return wird zur entsprechenden Zeile eine Dialogbox angezeigt. In dieser kann die Konfiguration gendert werden. Das war schon alles in der Bedienung. Umschalten auf eine andere Sprache ================================== Da inzwischen alle Ausgaben in RSC- und String-Dateien ausgelagert wurden, ist es mglich, SETTER auf eine andere Sprache umzustellen. Dazu mu lediglich die gewnschte Sprachdatei SETTER_?.STR in SETTER.STR umbenannt werden. Folgende Sprachen sind derzeit vorhanden: SETTER_G.STR deutsche Ausgaben SETTER_E.STR englische Ausgaben Die Resourcedateien drfen nicht umbenannt werden. Welche Resourcen zu laden sind ist in der jeweiligen Stringdatei festgelegt. SETTER_G.STR --> SETTER.STR ===> automatisch wird SETTER_G.RSC geladen SETTER_E.STR --> SETTER.STR ===> automatisch wird SETTER_E.RSC geladen Implementierung einer neuen Sprache =================================== Zunchst kopiere man SETTER_G.STR und SETTER_G.RSC und bennene diese um, z.B. in SETTER_F.STR und SETTER_F.RSC fr franzsisch. Nun knnen die beiden Dateien mit einem normalen Resourcen-Editor verndert werden. Der erste String nach den Alerts in SETTER_?.STR gibt den Namen der RSC-Datei wieder und ist entsprechend zu ndern. Danksagung: =========== Mein Dank gilt Harun Scheutzow, der zwar des fteren eine andere Auffassung als ich vertritt, aber dennoch immer wieder ganz brauchbare Ideen hat. Vom ihm stammt die Idee und erste Ausfhrung von SETTER (als kleines TTP). Versionen ========= In der Dialogbox ber Setter < SETTER | ber SETTER ... > wird ein Datum angezeigt. Dieses gibt an Stelle einer Versionsnummer die Version wieder. Bei Fragen und Problemen sollte dieses Datum mit angegeben werden. Ich bin im MausNet per e-mail erreichbar: Markus Kohm @ KA2 oder via Internet: Markus_Kohm@KA2.maus.de 6. Dezember 1993 - erste freigegebene Version 9. Dezember 1993 - Wird ein einzelnes Fenster in den Hintergrund gelegt, wurde das Fenster versehentlich aus der internen Fensterliste gelscht. (gemeldet von Manfred Vogel) - Genereller Redrawfehler bei den Dialogboxen, wenn Let 'em Fly nicht verwendet wurde. - Zeitweiliger Redrawfehler bei den Dialogboxen, wenn Let 'em Fly nicht verwendet wurde. 10. Dezember 1993 - Bei Zeichenketten wird wie bei allen anderen Werten im Fenster nun auch ein senkrechter Strich zur Abtrennung angezeigt. - Bei der Ausgabe als C-Source war ein Fehler in der Anzahl der Listenelemente bei SETTERLIMITWORDS und SETTERLIMITLONGS. Es wurden immer von genau zwei Elementen zuviel ausgegangen. - Redrawoptimierung rausgeworfen, weil es beim Scrollen ber die Maus unter Umstnden sonst zu seltsamen Effekten kommt. - Fehlermeldungen bei Bereichsberschreitung wird nicht nun nicht nur zusammengebaut sondern auch ausgegeben. - Bei der Ausgabe als C-Source werden nun auch Anfhrungszeichen und Backslash korrekt behandelt. - Die Ausgabe als S-Source setzt nun zustzliche Labels wie beim C-Source. - C-Source- und S-Source-Ausgaben insgesamt verbessert. 15. Dezember 1993 - Fehler in der Darstellung der Titelboxen, der sich neu eingeschlichen hatte, wieder behoben. (gemeldet von Manfred Vogel) 22. Dezember 1993 - Fehler in der Cursorpositionierung mit der Maus behoben. Es wurde relativ zur ersten Datenzeile insgesamt positioniert. Nun wird korrekt relativ zur ersten angezeigten Datenzeile positioniert. (gemeldet von Thorsten Wollweber) 6. April 1994 - Soweit dies mglich war, sind nun die Texte aller ausgegebenen Meldungen in die RSC-Datei verlagert. Damit sollte eine fremdsprachige Version sehr viel leichter zu erstellen sein. 8. April 1994 - Da auf Grund obiger nderung kein Batch-Betrieb mehr mglich war, schlielich mute SETTER.RSC immer geladen werden, wurde das Konzept nochmals gendert. Die freien Strings sind nun in einer getrennten Datei abgelegt, die unabhngig vom AES geladen wird. Diese Datei wird im aktuellen Verzeichnis und ber die Environmentvariablen SETTER (Suchpfad!) und PATH gesucht. (Der reine Anwender braucht nicht weiter zu lesen.) Spezifikation des Speicherns modifizierbarer Informationen in Programmen ======================================================================== Original von Harun Scheutzow, 21.11.1993 erweitert von Markus Kohm, 06.12.1993 Die Modifikation erfolgt durch ein SETTER.TTP oder SETTER.PRG, welches das Programm bearbeitet, dessen Einsstellungen zu verndern sind. Im TEXT- oder DATA-Segment befindet sich auf einer geraden Adresse der nullterminierte String "hAruNs cONfigER" (inklusive 0-Byte genau 16 Zeichen lang) und dahinter ein LONG-Zeiger auf den Anfang des Strings. In Assembler: .even hkbg: .dc.b "hAruNs cONfigER",0 .dc.l hkbg Enthlt die Datei lediglich einen Setterblock, ohne ein Programm zu sein, so beginnt sie mit: .dc.b "MaRkus cONfigER",0 Darauf folgen als Liste die einzelnen Objekte, die aus Anzeigetext, Art der Konfiguration und Konfigurationsplatz bestehen. Der Anzeigetext ist ein C-String (also nullterminiert) und auf die nchste gerade Adresse evtl. mit einem zustzlichen 0-Byte aufgefllt. Ist der Anzeigestring leer (nur 0-Byte), so endet hier die Liste der Objekte. Das Konfigurationskommando ist ein WORD (16Bit) mit folgenden mglichen Werten im Highbyte: 0 Ja/Nein Entscheidung. Das folgende WORD wird fr JA auf $FFFF und fr NEIN auf $0000 gesetzt. 1 LONG-Werteingabe-Liste. Im Lowbyte steht die Anzahl der Listenelemente. Die folgenden LONG werden auf die Werte der eingegebenen 32-Bit-Integer gesetzt. Die interne ungltig-Kennung fr einen Platz ist $80000000. 2 String-Eingabe. Im Lowbyte steht die Maximallnge des Eingabestrings inklusive des abschlieenden Nullbytes. Diese Lnge mu gerade sein. Der eingegebene String wird unmittelbar hier hinter abgelegt und bis zur Maximallnge mit 0-Bytes aufgefllt. 3 WORD-Werteingabe-Liste. Im Lowbyte steht die Anzahl der Listenelemente. Die folgenden WORD werden auf die Werte der eingegebenen 16-Bit-Integer gesetzt. Die interne ungltig-Kennung fr einen Platz ist $8000. 4 Derzeit nicht verwendet, aber fr mich reserviert. 5 LONG-Werteingabe-Liste mit Wertbereichseingrenzung. Im Lowbyte steht die Anzahl der Listenelemente. Bevor nun die Liste wie bei 1 kommt, folgen zwei LONG, welchen die untere und obere Grenze des erlaubten Wertebereichs bestimmen. Die folgenden LONG werden auf die Werte der eingegebenen 32-Bit-Integer gesetzt. Die interne ungltig-Kennung fr einen Platz ist $80000000, darf aber nur verwendet werden, wenn dies im Wertebereich liegt. 6 Datei- oder Pfadname. Entspricht grundstzlich 2, jedoch ist die Lnge auf maximal 128 Byte beschrnkt und im Stringdialog ist zustzlich der Aufruf einer Dateiauswahlbox mglich. 7 WORD-Werteingabe-Liste mit Wertbereichseingrenzung. Im Lowbyte steht die Anzahl der Listenelemente. Bevor nun die Liste wie bei 3 kommt, folgen zwei WORD, welchen die untere und obere Grenze des erlaubten Wertebereichs bestimmen. Die folgenden WORDwerden auf die Werte der eingegebenen 16-Bit-Integer gesetzt. Die interne ungltig-Kennung fr einen Platz ist $8000, darf aber nur verwendet werden, wenn dies im Wertebereich liegt. Das war's bisher. Eine GEM-Version des Fremdkonfigurierungsprogramms, das Harun Scheutzow seinem Paket serieller Treiber beilegt. Diese GEM-Version von Markus Kohm, kann einiges mehr und kennt auch zustzliche Typen. Version vom 28. August 1994 .@||$#!~@0@H  @|           4 P  ' PP  P    + BYp  4@20)0Z-$.+   / ; / k 1  .   !0'B)   EYm    /@-  * l ("($(&( (( *( ,(.( + AA !! 03 7 '=% /@-  * @V(X(Z( \( ^( `(b(  "    0 L h    d%j%m%<% =( >+ + AA !!! !$/@-  * u((( ( ( ((  *, H d        ( D  ` %$!+ A!A"##!!!%'+ &A'A$())!' ! !"567>?@STU]^_!!!!%Fg!!!! -!!No!!!!5V!!w   ) 5AM Yeq }     % 1=I Uam y  0Idea:Harun ScheutzowGEM-Version:Markus KohmInfoOK SETTER File about SETTER ... I ---------------------- Desk-Zubehr 1 Desk-Zubehr 2 Desk-Zubehr 3 Desk-Zubehr 4 Desk-Zubehr 5 Desk-Zubehr 6 Open ... ^O ----------------- Close ^U Save ^S Save as ... ^M ----------------- Quit ^Q SETTER configurates other programs.SETTER is Shareware. The distribution is allowedand free, if you consider the following: - you distribute it absolutely free- you disribute it including all documentation an all other programs in files within thepackage.If you want to distribute SETTER with an otherprogram, this is only allowed, if that softwareis free too. If not, you have to send an actualversion of it to Harun Scheutzow and one toMarkus Kohm.Addresses:Harun ScheutzowMarkus KohmDresdener Strae 83Augartenstrae 29D-10179 BerlinD-76137 KarlsruheOK about SETTER ... - Datei ----------- Open ... Close Save Save as ... - Hilfe ----------- Help ------------------- Quit 1. Zeile 40 Spalten2345678ONOFFAbortOK1. Zeile 40 Spalten2345678AbortOKFSelect1. Zeile 40 Spalten2345678AbortOK30. September 1993(c) Markus Kohm, 1993SETTERe-mail:Harun_Scheutzow@B.maus.dee-mail:Markus_Kohm@KA2.maus.deSwitchinformation:SwitchStringinformation:String:12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXValueinformation:Values:+1234567890Allowed from ___________X9999999999+1234567890to ___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999|qx|xsg>>~UUUUV᪪UUUUV{`bRaBB?```'?$aQQQQa$$$$$344$34+B] 3i<[h6Hn| 5Odz ")[2][Strike changed!|Do want to save first?][Save|Continue][3][Cant save!][Abort][1][No fileselect!][Abort][1][The string is|to long!|Please cut it!][Manuell|Cut][2][This file is allready|open. Do you want to|open it again?][Open|Abort][3][Internal error!|Redraw-Window!][Abort][3][Internal Error!|Top Window!][Abort][3][Internal Error!|Backdrop or close|window!][Abort][3][Internal Error!|Size or full|window!][Abort][3][Internal Error!|Move Window!][Abort][3][Internal Error!|Move windowinterior!][Abort][3][Cannot load SETTER_E.RSC!|Not available?|Not enough memory?][Abort][3][Error at SETTER_E.RSC!|Cannot find expected structur!|Looks like manipulation!][Abort][3][No more AES-handles!|Cannot run this application.|Close an application and try|again.][Abort][3][No more VDI-handles!|Cannot run this application.|Close an application and try|again.][Abort]SETTER_E.RSCConfigurationblock made bySwitch YES/NO, ON/OFFSome 32Bit-Vylues from -2147483648 to 2147483647String of even lengthSome 16Bit-Values from -32768 to 32767ReservedSome 32Bit-Values at following rangesFilename or -pathSome 16Bit-Values at following ranges16-Byte-MagicPointer to the block itselfThis was the SETTER-ConfigurationsblockI recommend to change the names to some wise Import-error: Export-error: There's no setter so I cannot save one: Cannot close top-setter: Cannot find setter: Cannot close setter: Unknown command: [1][Value not at|allowed range|from to !][Change!][3][Fileerror at:|][Abort]Open program:Save setter as:Unknown typ!SwitchONOFFValue(s)StringFile/Path@||$#!@0@H  @|           4 P  ' PP  P    $ 7J] p 4@2 0;/k- #+  / 6 / f ,  ,   %4'F)   I\o    /@-  * l(((!( #( %( '()( + AA !! +/ 3 ';% /@-  * >T(V(X( Z( \( ^(`(  "    0 L h    b%j%m%<% =( >+ + AA !!! !$/@-  * u((( ( ( ((  *, H d        ( D  ` %$!+ A!A"##!!!%'+ &A'A$())!' !  "#$9:;MNObcdlmn!!!!4Uv!!!!<!!]~!!!!#De!!   *6 BNZ fr~     &2 >JV bnz   0Idee:Harun ScheutzowGEM-Version:Markus KohmInfoOK SETTER Datei ber SETTER ... I----------------------- Desk-Zubehr 1 Desk-Zubehr 2 Desk-Zubehr 3 Desk-Zubehr 4 Desk-Zubehr 5 Desk-Zubehr 6 ffnen ... ^O --------------------- Schlieen ^U Sichern ^S Sichern als ... ^M --------------------- Beenden ^Q SETTER ist ein Programm zur Fremdkonfigurierung.SETTER ist Shareware. Die Weitergabe ist jedocherlaubt und frei, soweit folgende Bedingungenerfllt sind:- die Weitergabe erfolgt kostenfrei- die Weitergabe erfolgt mit der komplettenDokumentation.Wird SETTER zusammen mit einem anderen Programmweitergegeben, das nicht ebenfalls frei kopier-bar ist, so ist auerdem Harun Scheutzow undMarkus Kohm je eine aktuelle Vollversion desProgramms zu berlassen.Adressen:Harun ScheutzowMarkus KohmDresdener Strae 83Augartenstrae 29D-10179 BerlinD-76137 KarlsruheOK ber SETTER ... - Datei ---------- ffnen ... Schlieen Sichern Sichern als ... - Hilfe ---------- Hilfe ------------------ Beenden 1. Zeile 40 Spalten2345678EINAUSAbbruchOK1. Zeile 40 Spalten2345678AbbruchOKFSelect1. Zeile 40 Spalten2345678AbbruchOK30. September 1993(c) Markus Kohm, 1993SETTERe-mail:Harun_Scheutzow@B.maus.dee-mail:Markus_Kohm@KA2.maus.deSchalterinformation:Schalterstellung:Stringinformation:String:12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX12345678901234567890123456789012________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXWertinformation:Werte:+1234567890Erlaubt von ___________X9999999999+1234567890bis ___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999+1234567890___________X9999999999|qx|xsg>>~UUUUV᪪UUUUV{`bRaBB?```'?$aQQQQa$$$$$ $3 Js<#o\Gb.PlCj  1 E V c g k s [2][Die Einstellungen wurden|gendert!|Sollen sie noch gesichert|werden?][Sichern|Weiter][3][Sichern war nicht|mglich!][Abbruch][1][Dateiauswahl ist nicht|mglich!][Abbruch][1][Der String ist lnger|als erlaubt!|Bitte krzen!][Manuell|Krzen][2][Diese Datei ist bereits|geladen. Soll sie erneut|geladen werden?][Laden|Abbruch][3][Warum bekomme ich Redaws|fr ein Fenster, das nicht|mir gehrt?!?][Abbruch][3][Warum soll ich ein Fenster|toppen, das nicht mir|gehrt?!?][Abbruch][3][Warum soll ich ein Fenster|wegschaffen, das nicht mir|gehrt?!?][Abbruch][3][Warum soll ich ein Fenster|vergern, das nicht mir|gehrt?!?][Abbruch][3][Warum soll ich ein Fenster|verschieben, das nicht mir|gehrt?!?][Abbruch][3][Warum soll ich den Inhalt|eines Fensters verschieben,|das nich mir gehrt?!?][Abbruch][3][SETTER_G.RSC konnte nicht|geladen werden!|Vielleicht nicht vorhanden|oder nicht genug Speicher!][Abbruch][3][Fehler in SETTER_G.RSC!|Die erwartete Struktur ist|nicht vorhanden!|Da hat einer manipuliert!!!][Abbruch][3][Kein AES-Handle verfgbar!|Diese Applikation kann daher|momentan nicht ausgefhrt|werden!][Abbruch][3][Kein VDI-Handle verfgbar!|Diese Applikation kann daher|momentan nicht ausgefhrt|werden!][Abbruch]SETTER_G.RSCKonfigurationsblock erstellt vonEntscheidung JA/NEIN, EIN/AUSMehrere 32Bit-Zahlwerte von -2147483648 bis 2147483647Zeichenfolge gerader LngeMehrere 16Bit-Zahlwerte von -32768 bis 32767ReserviertMehrere 32Bit-Zahlwerte im Bereich der folgenden SchrankenGltiger Pfad- bzw. DateinameMehrere 16Bit-Zahlwerte im Bereich der folgenden SchrankenKennzeichnung durch 16-Byte-MagicZeiger auf den Block selbstDas war der SETTER-Konfigurationsblock.Ich empfehle, die Definitionen durch sinnvolle Namen zu ersetzen.Fehler beim Import: Fehler beim Export: Da kein Setter geladen ist, kann auch keiner gespeichert werden: Kann obersten Setter nicht schlieen: Kann Setter nicht finden: Kann Setter nicht schlieen: Befehl nicht bekannt: [1][Wert auerhalb|des zulssigen Bereichs|von bis !][ndern!][3][Fehler bei Datei:|][Abbruch]Programm ffnen:Setter sichern als:Unbekannter Typ!Schalter istEINAUSWert(e)ZeichenketteDatei/PfadHS-MODEM =========================================================================== HS-Modem is FREEWARE and supported in the UK by: CyberSTrider 203 Parr Lane Bury BL9 8JW England E-mail: dbhabuta@cix.compulink.co.uk dbhabuta@mag-net.co.uk danny@micros.hensa.ac.uk The minimum contribution which entitles you to a Master Disk with printed label, registration letter and email and postal support is 6.00. Please make cheques, etc payable to DENESH BHABUTA. Users outside the UK may also send Denesh payment in their own currency, cheques. If doing so, please send the equivalent of 8 Pounds Sterling. Denesh Bhabuta (The CyberSTrider) 28 September 1995 [ESS-Code Filter] BIT-FTP 2 1 HDOCn%Main4APPENDIX A: Filtering UUEncoded Data6 9+THE ART OF ASCII <-> BINARY CONVERSIONs(NEW FEATURES & BUG FIXESr INTRODUCTIONl%&REGISTRATIONt*)INSTALLING & USING ESS-CODE,OPTIONS,? Quick Findt-y] Generate Tablee". Confirm Termination".`J Confirm Overwritese .4 Progress Displays$/\ Unix Line Termination$/  TOS 1.4 File Selector 0 AutoSave Optionsr&0dUse Fast SHIP Encodingf0Include Paths 1Specify Segments 2rSelect Target(3ADefault Conversion Method4zSegmentation 4ACKNOWLEDGEMENTSn7 rDISCLAIMERs7DISTRIBUTIONf$8lCONTACTING THE AUTHOR9CLOSING,;YSUZY B'S SOFTWARE INFORMATION=kMasterBrowsehImMasterPrintJYAutoDateaKc- ShadowTerm IIK!ACC-PadL6" NHelpMa#!NIndexM#"IndexN#"ESS-Code 6.4 ManualMichel Forget&$VER: ESSCODE.HYP 6.4 (July 20, 1995)NHelp+g -i +zz -t4Manual/ESS-Code 6.4 ZU֫7 U]u L/--%Ґ |W[PDfjAp0 0^%$l;鞉xLJR=|Lx!h:U!̠gD`U]G[uj eS'{Qέz5k5W^Aŕ{*i s67glϮYg{g4@lV 8=̳s^Z kzۑ/~0pda &!Q}%$rm +vS(%ȼ>VI\HԺP{սgn~ENN18[p(s&5o"?9BeKiP9+p}-VO#ԭK%dB@{ȼXDd[fFnKqJg`?o+N6y\/Vx s'OreȤrNc}js*Wb,n8$dfWD Wbmɜ2<Lk'Ҥ!{=~yb .(ЄۢQyy/̖0 ^@%IGLiȗCw0Zl0 F`ic*6z'O~C}HZy<9BV_Og^+X>?TRkcj.<㠝zB(bUC@ tf=-^ZqSzӢ$+Q fXR޳ZBNFKxH5 -̦uP ǒ },Jzp]N ËR: gl24kL0Z{p~°, 3\Qk'j3`=4E3%(uց`h n7tPlRȴ!AҊj:>#,a:_yEI H6J4n49w* 49YxZdhLu)䘪EvDd̙M'ɟgRBωcyj0Of,e,ZCDoB  }02f%TEK$ AQX@h9f$)G Zjs:5WjR52rtfmZ+/9Yc(3 P('ɬ t$3@}<'zb7.vaŅ-Q̎_e1֊r)?GȲ_d'\9O1=9laDTx>e~T" T cZ>9hf_P= ] 0ie[&auwW̔ u>md@#VFܜb3ȹ[#&D~=1KǦ3N{1#=n=tFܣ::;5#6A=<`h{0w^8J.F25/d$cy *CC""[Yj4r+!7@ jФG  N%Ѡc,(+;&2$S1Z?peR~/zn1__CZO+!pU$c[i QV.[C_n?pvQ#{= E[A/(@HNZFS'AhDԄJֆТD4Jd>_i3PG{}nN|w` - T7\x47+e/Zl``,H@5`Hэ|,?~Z<&ɔ"fOx0_E 8%e8޲v!8<3F']~ V\~-/ؽ^+qDV?r+!OyLJ~デ1Y[0\Q@9m(YnPZ_ŴMqp_؅+@ج0 k\~q1^sx[-y7ތ<KPq`8v l7n?q[5 <7/?z?' !sm۵KB j!}Q4vwng&o0jk:mtSn!|?'.SDZ< "!]e]A%yy$3AJMi;d^뚨JC:SU{P S>zFẘfĹ+X" Ϋ?j t4SvvܧW5ƫƫ0+ӹ?] 0MAhf-v\ð>"i 8ZWF,]vhwxun|* {*D1h|CF+V"=z{Ws),fhelxkjȪ s%&oeNu[D(ڒ!nDr']Y'=ŦqI8i o]wxv0ttpU#zQO҄YPmtʜrÂ*"B1fV;DU5lٙ*TW,R2} d1ٕVyRc"ZY:cv*UIrhG!&D:i2lTU*taμR\溌>.[_rjYuU 1wdeSsyyHv=ˍt)UY"D6!TԮ#TGPo9ot542K| g( hdéys9XoqEZi՟RHP5n_\ }5ep5PeM*MA8ڃ ^*8fzS3?ӽ?QcY]R+֏UyATd\yo_Kۙt^)vorCWgzdžsk?}Q\ bq5gt'+y ;P:=J:3ٗF}y:1p+X$kXEmY)(^-!$82UPI2ԙ:*Z)$\@WX=-bF8:(FFV@"qn ɂmC(n81 lm%VBC.O˃8QֺANHj12$q\Jɐ" ڔyddYըTXiH7C\F|Ig{:_Z4wlY^[.^t%G8.# M]>Dxzr&"gyWQəfI,{:pR &Q%եDZɠYcǡyμWBƪ!5D`$Ƀ2Ԛ Z9i1P5bKE{@.=є];2oFTۺRrg~E0 •Jj8Hj205iL cӫTx͠ϗ22SrbC8pHy vRI>V]l9BQ#߽ltU4dq[oT=]:.nk?[4]GK]]J]+>\@XO'VF\#\:uv-C5DH˔&` !ưɊFfcW/TeQCA'BDW< $i8RCqMRV&X5W0409XĬ5~Bp=o-I ÔܠS)2MJeR4 g7H\vkhzY'HA9KTI)r%[E:7(r\ԧUv8~$ȹ2$EWfpFu6,BvO=^_Ɣcźg&6/a; ppbG7>, -K="5Nat*!u.WJFcGq0iFWfD2XۗF^XmtL oT ܤlT*7ɪUTx +@cyG]d fo3@4F[_彮+'+(ԞXՠȩ|zQG GM p8vujΞE{k6CωSqg]/XZ=^@GX)Ugk=| hB'7j |BőS^2AqXl_Nv&Ll\l<tt,E]&T1'+I @1E)wO#y[d(_"oꡡRw[FVS\*DIgDEH(7vbPV-%}\f47A+2|w?;'ӜJAV:s;~x2O|<,Sƣ=24 lWR8&Wkk 3:N=tOYt'{VG]uzDSؓVUbN>ڀ.-E<#W;shC_ҏ*cґ=AmM}) z+<efjmdo~md#tX k :6x]RlT#􀚭,>_E#>B~rfFʀv0DmŚxc붭s+؉ OڠSqHSo$?RC/!*g}wYi" H0fPЭ!N0SNRkK7Wg$ks'UhOqzRsҎfˮEJ&5x'F 2+]>!Ji _k `=bLJ <4ԣ*8K(SxqӸ*.h Id ~n%$|_$4],5ȪLh3UՎ`8.AK|)虀=n̓9婕W mfX0Q]$g(cPb!v|0i`JS% 2V`aӜx-ct2v~=W8#F:~dN$]|c74$qs{F,T_'r+7^*#Jt 1´љZw~V2z:#`KnYTIYF8|WF$r|K VMJmӵ&NC%2c֠F$u#Dx߾c߃ҫۍ4%)yVt:QI,i݌ ㋯.1mU,oVX &wiH4I=0ex>tBCdED)[ nLaM),!1^ӌbI}^y-f]p㷻@4Rm, D28j,fxN53Xj==-'MEO;O0~&׋;>/G$Y`eh2}2^:?{s◙T3X~  M svܨA0@kmGl4z9 qi$pvېs+G]E]Z9u`.^}Iv eX\V%d[lf/i)~IkJUI$.bLA ](3K;J *RbZt2d-WN~*dxM-01{T&;M#*U䗶m7P84By\[sr3dCq,]bK{wPh$RZm-c>?_T?D-eX bR@,E,>[o/ijd܋߳)C^<% Iqމ0oFitsÿ]>Iy"̚ҹ\5zl- Sh H83e| @[[s:V]j`F`P@۲1])0jģݏMQRj)OhlEE sUa\i%+*ӎ_ Ο0gjdإ:KIOcZ]x}qLDžͶ=Rt^0xoXS}А׏kYti4˄[/T"鹂k'7KpdAl*]Iu -~ɃNc.=Z3_o_f|}_WN}/]?I$F*dIsXuY"YS[&^DoϾhI*rY qC3-pE0aWw K`\ѮŮex9KW߀tG>3%n#aRqe1:*\bs!MC*̋\Ü)G{rpqhf s=`. =&6IS 6"`ӄ^^V3YɈX $W1RbeCw2+cר,^HX6C 4F [LŽ{Т+R1ae5WIMy0 7aV_JnzȆ@ F (Qxֱq8MʎKa3*y2spϻ^p! 6Ƀ}C}F~}88`Ni|uzOH"mqCBX? nKZw"s[v?ѓ\ _|Jo.]D!KEbbBP}hu~=XPFp-%RlT=x!x<#nf-̴WSttx,kB}gx-R0>K< ZsJsL;"y@_g^nώJǐw(Vq2~9{ebїtPwАiڭiqCCkՕ}{1x8.BʝWD*?Gӯ*Q TƫxKopSP5?wCq;: ;<+ <KJfh 6Y8y/ ؟4sqoy|2x=Տ쟼k؛'ĭ[۟^ 99ؚ_mo**9%[^[Q[{m &JW2%/q^Dͣ.1e R~,ik>#L VLkiwc ІV称J'2f66Y~YJC-E9bcZJݩsτRrx흒. }"5®\is##/$@פ.~%Ԭ,[7!ac@``ndzFI {J;8ԅBD%XWzPE m\bvC<\%!x$xFյ.߄bDupMep=v8X9R?YtJKÓDs:aGi]ٴ%t* DD`AbY$2g/-a/jg5JE750Z0jP; Jm1yZEYKP@h(+`}q!VŐ/́t;ɒ 2Fєw!N*_9"'&^Ϙ+9^Ҵք Z^\Z勨ȚTB!.`%y?&GscbkA.&emXxMآ3D8vU dϺ-F@ 6w2@@dxcu |hIX6zn.; o7^ڷTTqJ־U ? kնےρ~@X[KDm(q P$M(p`7M<=ڶ҄? "Qp8Oĕ6X|(8(*\U]SS&̖lu%Exn4)#_]'_7ow}?J{+FO~x41LfE.0Nn\# lکJ)pc_a4ٖkլޮ|~cee| 4oE_yaeC27ʀ\6 (+bb/Hoײ}Y&@ў<.KlC=6;u^kYJKcr!{^?;y~ ,_( !̈́}T6NYڄAò$eN(=ȝ4 L~NTr 62yT[f4{gA ױ<MuMW!± f?,aC)! 3taCIa F5Z!ap[%aƂ~&"ɰ֓a.  m&)=fcɇں2F1l<^))(lAUtԤnD2H kVebﯵ6|)P_ Y#"N'"}jZSm|v(+fq($ 㒓ƚ'-w ]PPϞE.c|T1R >_ČƂ,aaN89P%t$Yo$~ 6y(HQlUԠyRS)t/Pp)k(HiЏiPDM^f.µz4Hy޽3,888 T%| [6l}N#|rYb)P2, |I#D] td#s4҈fڝic0`ϑAx3 [-f};pX9SbY-O a?]ym4ySr 0  +k)TRNyeg9φC "zBȧ#pX~eL1 x2jbwBa=:e˦zA:eMJ( _*. i`Ӱxnl#p:B]֤>4ASvJ~ C|hA \m NSv)| ŭ+8 t0Ix X-a[\R+{瓢g㘥W2|Rx&C><-0.,n:V8naEԶ]q1)Ag0J uROsk@'4 cݗqHJE5s]]+ru.,[Sx#L$xTnlOK8IB;zl#hCBkNCy=BF\^d; r$pڏ+ i;~kI_m'\im>P?UR%X'sNg-Ȃ>ivC(9m\GܿUY+ !&E҇M[ᇁ+d%JӢh0(F(لxmŪ#IP#P1*)X# T|0 4gQVt3! `&).s/d@d42[nB .߇o9t U%k9n|E\k}8ni'(4GS'J9495Na5kE exo׋[AYݪO}eQ Z |NGCo" NAu$RFD y0lz:Y*l=SiEKm0a8syD`ҥJWj3]N~Z©7u1}qL^Q{ZV\ɰd)7OӔa2݋6z;BVP#IP B=n"t*^SP~Nem]HP"HA@Ǐјr^'NceuX%/bRKz:饳i)e#0",c0ZYbbdsGzUX֚v!F"Yne1Jə'pګzj| w&\Vb>͖~<:<י!e{\vw۲@J2Ivi[xTQZJIeBrA؆gxh<Lއ: εYJIr|4Э ˅`|m.hOۼk:.CX}a O)U*Gzp#ʼn'Ï_+{ ϧW ab"|W1 Ʀ޹W-v$VK>eמ@;cն^| %5AU]u.Z-6B9=#qyi>9~ruѴޭEB1y"#й9$QJG7F*Sj9j70PH#WҪgru^{N"4ĬrBja]+dx͢{{j_="S;y4gvNEi* +!(7 b+a?W#ސk܌ٯqy:5˨@StB= ePDa'ZJ/%j  ;K*,Y<{D3GK/ʺYЄ/Rf )*4pvo?=RoTqx-IYlEi*E+Yj1FeQd q8dߢPoq5 g1ɞy|O-K ΔGg%d7 ӶW-K HcOc:åZ)r;\rq'YN9g\[v*FA[%M']9U']Jx- `T%2cTNy@*g-u{q`^Y7I?C<23!yȨ/\`>bO++ݼا}dM7Y]hC3hMeJ l՟SO&]FyD ZFc Oiǂκӆ3[ͭ[ġW,bp !"8NM-޽c{tvG6/8b?D")? l0̆l+H)sEjUi+GԞ{'G׳gܝ `Vt#wE9sC0"Vs>0vbuȥ v"/p( 8N]O)v q%&dhR Bŀu7<9rL 0 9Rt8.BJs*>F\[tMmE@ЅA1 d!' hF%ZZYr[SR-Ո JbvZt1i^"sr&.m.~xvi_9ñÞq5gQR cTo1DGovz .fĆ4Ѓ;57 ׳[bĕj$ \EP}[j䘿l?S"x'wE{Ja1{N_oc?=kնۊ~lh7,IxpwAh+ay K"GSYO?; 0׀6!=r/ڛ`~- <7Kv3/_Q|sd_4mssll_n4?JK__WdzvӲuo;E]zO?-z>HR5HkQx%s[mxݑDKJx +rX1_dGǦ.$V޷GI(G]P\;-Ib&woԠڤqN,mg#\嚉kdNy:KH+NE2jI/{b{pi-L^pJů/qAThi[•SDALJ"+[ҸׄhIa%|Y(m[YO=)mdS5F'1=%oSM9[:rfPstS(UoUCLHīn!1+ ||d3բC ѠYbk{40{ٸzTL C`-v\Y#u/0zKl:FjHIO^>ĕn=@Fs淵p=۠i55{SٱWV:>Xʏ͹\=uTmbTO髓v]*c`kWʛ?Pov V\n Zu[J\T^)RpRc,erƂ"#֨*ۙХ{Gs zczⷶc];qCgehDe4 ^MÒ18bW| I[{16^o!rM k벉4xVbG9kiEY@[, 4z]4[Hfe&$0LVw`:`{YoL\7苴e uvyE׮!(7D5Wݱ뿣\q6 !ZT A Kz[60<ξ?N &ATu,]A1ScWs+S@ߩ|ֈZƼJ%L2챱ꠊ{Ƹ ]je{Oa sf0Ck.ƣsҷ9dt[R|CN wHȑOu\u(cyɨ߼ DUBgZ dz瘖\ ʥ?d]bF49mx0[ <4N" AG օB g1eU,scz۰2"ڦPj` 1*;ad*/@\F ,Ny>,wA1Zhz^#v* h{؅`A0Z؍*o72( F-&H D~n@NW$`ѨtR]^BnmD2g8D@/'vY܎k)pM ?oW†~6?IiBM KZG8bA( הְ٤(y=ዔ~ZY T Э>VդC&]6we$,M30iNՈ&/Ao=e~i?TK`҈61y NE0o8ͤ%9*!=%5+z,S`?q8_JxPPL2lQjȀ ΀ R$64b 4 J7yP2ͭWdsYjPϱ-V *"sթ.R|E8rJȟHД!;FHh/b<ԺS'[@|^^͇q8@I05goN-g ()E2LZR( DYOQ V{t 0-L: =F-{ `X<[߲=$ oli GE{( ǁH(* )T7,_-[8`s{{y˄+茩jהa7HH-tS|),Kp^)'*/N6q :༅'| LF6;CK;+x` ?b frKk=_t7QKC ɝ^&tfFN*&t{_ W[ďL,CsS|NR՛& NquǞɬv-qRkm#YҌi5ӥKu_bI))+;UPNY®Km3һ}qh HYIσ2-qdZ Ri4Ҩ 'cc0N&IW4YG;Ʉ|N Go t;L D,nJE03U_'QOHL"-,*f|^Z^KAs<|'w2fipΈ(]yI'z*|5ybZg7RN|bq>c8 yZu Q ;ut'g>Q!O+buKπ 2`G~A9B)bdb΍}YVD7M4N #9ch6E*+xa U ς\+W3C[>,nj6Q#), ON{5)J[S骸[M2$;wDa0HW@YVIIқ~fLgqF _X4=ƖRUl2J@iuF\[Ԛﺰi ]L]$͈j*:޴Y^Dnq[vSx ,fW9ZG=CDI qJxaR@*txR$\ 2B JH.f^R <]?]oǚ2]mIsOsȇ]OFcaH)PDǨ7 lK S [4y`bRQ#íYOKމ!aIMW&*UѲSSB7 [vƠl|!eVf%r9C#9O=|cms0|Xt$𩪖L4~ÔZ{#2IᘋK<-cع0JaOSdGs ս'(&t9q'5SvIoJXy>cqjTeSrU8 Qx VgHa XqWd]OS(Z@uԗd;[S*$[Raq&P x1|m  )o~Sv5J?seILDLuD|jIo暂)(q5 5[cG Ad(1K?; c+)8NQnwp?cwqb7Ć W`28`4]ftu_$c<8GQ90?/8} ?1OPd!J%u0%<zʼn 5Jl偣b I ڗwu 8IEe WGLK2cG)4V]~#In &:V6,AUR ʗpTԼz"oμd0%S'Pxy-$pi4bȅ-IIS)CxBWƏD7dz> }IP#6heb]p+CUP)&h(*G]A=$/#=VX׸[!S?i>X yRXSk3~UW!ItҔHREF' esscodeESS-Code 6.4 ManualMain 1stConv(APPENDIX A: Filtering UUEncoded Data)THE ART OF ASCII <-> BINARY CONVERSIONNEW FEATURES & BUG FIXESINTRODUCTIONREGISTRATIONINSTALLING & USING ESS-CODE OPTIONS Quick FindGenerate TableConfirm TerminationConfirm OverwritesProgress DisplaysUnix Line TerminationTOS 1.4 File SelectorAutoSave OptionsUse Fast SHIP EncodingInclude PathsSpecify SegmentsSelect TargetDefault Conversion MethodSegmentationACKNOWLEDGEMENTS DISCLAIMERDISTRIBUTIONCONTACTING THE AUTHOR CLOSING SUZY B'S SOFTWARE INFORMATIONMasterBrowseMasterPrint AutoDateShadowTerm II ACC-PadNHelp NIndexIndex`kLFh``>>>> PURE-C <<<< for ATARI-ST Version 1.0 (C)88-90 Borland International &H f&op`B@#3 k # Ј<.@Jyg// ?<?<JNAO <"@(I$k,+<=.?yBoBoBo Bo BoArNbRO Nu?/ UO$I6N O8&HBC:E$`0H"s2IANREEo| mIkKkX|mXGC KNC KNh4 f|C KNh4 fjC KNh4 fXC KNh4 fFC# KNh4 f4C) KNh4 f"C1 KNh4 fC7 KNh4 f:CKA?NM R@gU@g`AVpNf`;y"5y 5y 5y5y5y5yAN8,H g B@a`6` B@AaR60g0HyHyHl/9r "yqtBApNZ|O` yr a NZpNfNnBgBgBgp??BB2NO B@Nfp yNd:-0|f\0g2HyHyHly/9q"yqt BApNZ|O:`pC yqa:JEfz` |fz`BE|`z0HC KN KN|fC KN~ fC KN~ g"N3*C KNN09NG`C KN~ g*HlpC KNeXOC KNfzpa`C KN~ fN3*C KN8r`|f`C KN~ f C KN~ fC KN~ gC KN"`nCB@AN\J@gZC KN^`LC KN~ gC KN_`.C KN~ fC KN~ f C KNiRFFn`BUAN۶ yr a<9r(Bm,Byr(AN8. g3pN#pC KNh4 g|fCAN8rC KNh4 g|fCANNC KNh4 g|fCANiC KNh4 g|fCAN_C# KNh4 g|fzCANC) KNh4 g|fTANC1 KNh4 g|f4CAN^C7 KNh4 g>|fCAN"`(|l yr` yr/AN۶XOp`3r(0g pNBm0-`CKA?NM R@gU@g`AVpNf`;y"5y 5y 5y5y5y5yAN8,H g B@a6` B@Aa60g0HyHyHl/9r "yqtBApNZ|O` yr aXNZN&8pNB@OL|xNupNNu?/ 6E ykfAn?Nb`B@2I rN&SRjJCgB@ jNdNMB@NBR$_6Nu/ EABAB@NeArB@Ne JrB@NeArB@NeArB@NeB@ yNB@ jNB@ jNB@ RNB@ jNrp RN`V$_NuHYO:Gø0+ ovHWHoHoHor B@NgZOBD`H0H s hm62("of,JEgNx`(pk @l2I s6("` S6("`RDk mJCo r 0NgXOL8NuHr@"M K0NeZ KNJgN3*|fLC KN~ fC KN~ gC" KNN09NG`C" KN8r`|f\C KN~ f C KN~ fC KN~ gC" KN"`HCB@A N\J@g6C KN^`*C KN~ gC" KN_` C" KNi#pxG|gRFFnOLOl$H6* C./I?j4?j6?j8 ?j: MmKIGpCg| o2| g&|(g |Fg``pa`V oa`Jr o0( mNd o0(| |/b"@0;NPLVh`r`@@@@@@66 ykfNHzHzHn/9q"yqt BApNZ|OJ@f|`A%N-z`jA*N-z`\A7N-z`NBrB@"mAHaDXO`6 yp frp" UN`` BAp" UN` yk\frp UN`` BAp UN` yr(frp UN`` BAp UN` ykfrp UN`` BAp UN` ykfrp UN`` BAp UN` yr*frp% UN`` BAp% UN` ymfrp( UN`` BAp( UN` ymfrp UN`` BAp UN` ykfrp UN`` BAp UN` ykfrp UN`` BAp UN` ykfrp UN`` BAp UN` yk~frp UN`` BAp UN` yk^frp; UN`` BAp; UN` UBh UBh UBh UBhB ykfrp- UN``:09kfr Up0N``$ ykfrp6 UN`` rp3 UN`BrB@"UAaXO` o h5fp`B@a8`BrB@"mAaXO`N`"LB@A>N\J@gN3*C" LNN09NG`pC"A"N`^A"N`P"LB@AMN\J@g?@b@6zJXb,*0b j(g j(g j(f$"LB@AN\J@gHC" LN_`8pj(grj(gA"N`pj(gN\J@gN3*C" LNN09NG`N`pa`B@a` j(g j(g j(f "KB@AN\J@gV KNb`JANb` ykf.HzHzjHn/9q"yqt BApNZ|OJ@fNOL|NuH0i8i@o2`20(h8)i@o4`408@l6`60(8)@l:`:823E0C3@2E3A4)oJAnB@`pL8Nu/v(`BA0 yNdRC|0o&Nu/ / pNfa(BgBgBgp??BB2NO B@NfE5|p RNd3k`Gkb0fr Rp0Nd`BAp0 RNd3p Sfrp. RNd` BAp. RNd Sfrp( RNd` BAp( RNd Sfrp) RNd` BAp) RNd Sfrp* RNd` BAp* RNd Sfrp+ RNd` BAp+ RNd Sfrp, RNd` BAp, RNd Sfrp- RNd` BAp- RNdCmANANbAa$`&_$_NuH:OpEkXGmIq09kbf>2g*HzHzHk/9q"TtpBANZ|O` yqN <`CB@AN\J@g| 9prN&p xANh*pAB@N*pЃNj,HJk gBFAp.Nd<J@o$CANHkpCANeXOCAN|` N"0N,JF`>0g*HzHzHk/9m"TtBApNZ|O` ymN <`JFgF?HoCAN.\O ykfzAN@S@fl0g.HzHztHk/9q"TtBApNZ|OJ@g6`&pC yqNJ@g NNZ0N3kV`ANB@AN .JGkb Nr20N|@gD0g(HzHzHk/9m"TtBApNZ|O` ymN <0N`0NRD`80g(HzHzHk/9m"TtBApNZ|O` ymN O*BCEmG`C"0HANRC| mBCM"V"NB@A N\J@gpIkX ykfb NN@S@fV0g:HzHzHj/9q"yqtBApNZ|OJ@g$3kV`pC yqNJ@fB@ NN (MqPJj:0g*HzHHz2Hj/"yqtBApNZ|O` VN <`CAN`CV0HANRC?HoCAN.\OCVB@AN\J@g| mKHWHoHoC MNcO HoHoC MN.POHjpC MNeXO MNzB@2IAN*Jj2f VN <`|`~`lA"<0N.A"0N|gF0g,HzHzHj/9q"yqtBApNZ|O` yqN <0N`RJf0NFgBB@2IAN*Jj62gTHzHzHj/"yqtBApNZ|O0N` RFpC@m*O"L|NuHO&&H29kXgM*K ykfEHjHjCANd&POpjS@gIƢ KNJgp."K l Nd rN&rdl&Jjvr l NfCp& lN  T2(HNrdN T1@ Tho"T3h T0(jBhHoHoHoHo r 0,NgZO0,of* KNJg T?(?(?(4(rp Ne$\O0,of< T?(?(?(4(rp Ne$\O T?(?(?(4(rpNe$\OHVHoHVHVHVBgp?BgBgBgBgBgBgBgBgBgBgr?"N M4p1rNbO.8HjHjCANd&POpjS@grDg Wf3r6pDg< Uf A0,a Uf0-lf r 0,Ng Uf0-lf?-?- ?- ?-r0,NgPOHjHj?-?- ?- CA4-r pNeOpj T1@rj T1A T1j T1j`HVHoHVHVHVBgp?BgBgBgBgBgBgBgBgBgBgr?"N M4p!rNbO.8r@g: Wf43r6`* rN&rdl&Jjv?Ap(N۶TOO,L|NuH E|"RAp Lp\Nd>RG LN(G20"L MNeHUC lNXO`"L MNfHWHoHoC oNcO C KNC KNC KNC KNC) KNHn)pC+ KNeXOC KNHWHoHoC MNcO ANJgC. KNC KNHSC lNXO lN ykfx LN@S@fj09kXg4HyHyHn0/9q"yqtBApNZ|OJ@g0`pC9 yqNJ@g3kV09NG` yk~fCT LN)H`CW LN)H ,f09NG LNre"LAzN`l"LANHWHoHoCANcO CAzNCYAzNCAzNC.AzNCAzNAzN09kXg0HyHyHn_/9qP"yqtBApNZ|O` yqPN RG LN(G20"L MNeHU?9p Cf lN\O`"L MNfHWHoHoC oNcO C KNC KNC KNC) KNHn)pC+ KNeXOC KNHWHoHoC MNcO ANJgC. KNC KNHS?9p Cf lN\OvJEoZ#pp""9p ЀЁЁ",BN#pЀ#pByr6p"oAa yr6fp`B@OLxNuH>O(H,IBpBpBp"EŀBBBypByr.Gp&Cx LN%Hf09NG LNre"LAzN`l"LANHWHoHoCANcO CAzNCYAzNCAzNC.AzNCAzNAzN09kXg2HyHyHk_/9qP"yqtBApNZ|O` yqPN <`r LNA/H` o (\g (:g Se NNJg "N JN`8 yr(f"CB@A{N\J@gC JN` "o JNK"J MNHWHoHoC MNcO C MN JN5@P yr(fzHWHoHoC JNcO C JNC JNC JNC) JNHk)pC+ JNeXOC JNC JN`HWHoHoC LNcO NNJfMC NNC NNC NNC) NNHk)pC+ NNeXOHWHoHoC JNcO C NNC NN"N JN JN5@Pa ykfl JN@S@f`09kXg6HyHyHk0/9q"yqtBApNZ|OJ@g&`pC9 yqNJ@g 3kV` yk~fCT JN%H`CW JN%H *f09NG MNre"MAzN`l"MANHWHoHoCANcO CAzNCYAzNCAzNC.AzNCAzNAzN09kXg0HyHyHk_/9qP"yqtBApNZ|O` yqPN < jN`5|@ LNh%@B LN"JANMC NNf"N JN JNK"L MNHWHoHoC MNcO C MNC MNC MNC) MNHk)pC+ MNeXOC NNC NNANJgC. NNC NN NN09kXgA"rB@Nep?Hj6r ?Hj2t ?Hj.p ?Hj*r?Hj&t?Hj:p? j"N2O& j&B j*B j.B j2B j6B j:BC j:Np."N j&Ndp."M j*Ndp."J j.NdC j2N ypfr j6 9pNf`>C j6N`. ypf/9pHVAN۶PO`HVAN۶XOpNA35@>3p ymfaK09p f0 op\Nd6RC oN(C20"o MNe`"L MN MNHU?<C jN\O LaTC jN jN jN09NGOL|NuH BCCBDL|0B@(@|@BE(M|O629kXg ykfCrDANE J2B@NeGI K MHSHTHU"N RNcdO HSHT???"M N4r B@NeOYTYS??42p Nf2XO3J@jL29kXg2HyHyHyU/9q "yqtpBANZ|O` yq N O&&H29kXgM*K ykfEHjHjCANd&POpjS@gI KNJgp."K l Nd rN&rdl&Jjvr l NfC_ lN  T2(dHNrdN T1@| Thdo"T3hd| T0(|jBh|HoHoHo Hor 0,NgZO0,of* KNJg T?(?(?(4(rpNe$\O0,of< T?(?(?(4(rp Ne$\O T?(?(?(4(rpNe$\O2< 09N`HVHoHVHVHVBgp?BgBgBgBgBgBgBgBgBgBgr?"N M4p1rNbO.8HjHjCANd&POpjS@grDg Wf3r6pDgF Uf2-lf A0,at Uf0-lf r 0,Ng Uf0-lf?-?- ?- ?-r0,NgPOHjHj?-?- ?- CA4-r pNeOpj T1@rj T1A T1j T1j`HVHoHVHVHVBgp?BgBgBgBgBgBgBgBgBgBgr?"N M4p!rNbO.8r@g: Wf43r6`* rN&rdl&Jjv?AaN۶TOO,L|Nu?629kXg, ykfL49r,fD yr.f:Nf"0NfL`"09kVfAuN۶` AN۶3r,6NuH.OBC8EȨ` 0@5RD|oKqIrD"j0<AN fJ0*>aN09kXg,HyHyHl y/-"UtBApNZ|O` mN <`RjHpC ANFJ@fH0*>a09kXg,HyHyHl y/- "Ut BApNZ|O` m N <`rANM `BSN  gM`t0@ rgH0*>ax09kXg*HyHyHl y/-"Ut BApNZ|O` mN OINEZKrDG"l:0< KN fR0,a09kXg2HyHyHm y/9q0"yqtBApNZ|O` yq0N <`RlpC KNFJ@f"l:0< KN gpC KNFJ@f"l:0< KN fR0,a09kXg2HyHyHm y/9q4"yqtBApNZ|O`P yq4N <`@ KN&ѹr8JgS B3JgpЀ82JDj.C KpNFJ@fB@`pC KNFJ@f KNUJ@j`B+0,a"KANAJNreCJ LN`hCJA(NHl6Hl,HlCA(NcO C LNC LNC, LNC LNC6 LN LN09kXg2HyHyHm y/9q8"yqt BApNZ|O` yq8N <`0@AZ00JDg|2M`JRARNAn2,g4,gBl 3zf$`2,g4,gBl9| 3zgBl2,g*3,g 0,aC ANr A0,Nf"HANAJNreCJ LN`hCJA(NHl6Hl,HlCA(NcO C LNC LNC, LNC LNC6 LN LN09kXg2HyHyHm y/9q<"yqt BApNZ|O`| yq"pAN(JDnN0,a09kXg0HyHyHm y/9q@"yqtBApNZ|O`v yq@N <`h#r<r@"9r8 ЀЁЁ",N#r<Ѐ#rNpOL|NuH>O|,H/IIHllHlbHlC NNcO GrDCArNCArNCArNC ArNHk pC ArNeXOBr8BrO$HIrDMǘp JaL-HfR0.Na@09kXg2HyHyHl y/9qT"yqt BApNZ|O` yqTN <`tp. nN@*Hp. nNT&Hg g" g "K MN"n NN yr*fPGC KN"N KNC w KNp&"KANdCB@AN\J@g C NNGC NN~ f "N KNC NN"K NNK NaR@gf/.C NNXOfrBr8 NNh-@t".t ЁЁЀЁrdN-@t"N KNf KNByr6 K 9rO&H*IE"K JNGI MNJg "M KN`"KB@AN\J@g JNh&KβC JN*C KN#ζ JN KN g"9ζfH09kXg0HyHyHT/9qP"yqtBApNZ|O`2 yqPN <`"09kXgArB@NeMp?Hyr ?Hyt ?Hyp?Hyr?HVt? yN2O yB yB yB yB VBC VNp."K yNdp."J yNdC* yN`HRA-N۶XO"KANHWHoHoCANcO MC NNC NNCF NNHlFpCH NNeXO09kXg"N yp.NdMpNAR@f UN yζN0NG`:R. ЀЄЄ"N,܆Byr6l A NC yr6f 0NG yζN UN` UN,:R@fXHoHoHoHoHoCX UNO[@fpo|R@3 9r|a> 9r|a, 9|a09|a /f$"/f$/f &/g$a0NG UN yζNp`0NG UN yζNO L|NuHOj&H/Iv(E"K JNG"J KNHWHoHoC KNcO MI"N LNC LNC LNC LNC LNC LNC LNHnpC LNeXOHnpC LNeXO JNh*KζC JN+H oNJg"o LN`* yr(f CB@AN\J@g C LN yk~fC LN*`C" LN* JN LN -g"fJ09kXg0HyHyHn$/9qP"yqtBApNZ|O` yqPN R@f`B@a 9f/9/9/9//Ci UNO09NG mN UNB@OL|NuNuH0629kXgTEGq|f*HyHyHj]/9q"StBApNZ|O|f*HyHyHj]/9q"StBApNZ|O|f*HyHyHj]/9q"StBApNZ|O|f*HyHyHj]/9q"StBApNZ|O|f*HyHyHj]/9q"StBApNZ|O|f*HyHyHj]/9q"StBApNZ|O|f*HyHyHj]/9q"StBApNZ|O|f*HyHyHj]/9q"StBApNZ|O| f*HyHyHj]/9q"StBApNZ|O| f*HyHyHj]/9q"StBApNZ|O| f*HyHyHj]/9q"StBApNZ|O| fHyHyHj]/9q"StBApNZ|O`ڶ|f yqN <|f yqN <|f yqN <|f yqN <|f yqN <|f yqN <|f yqN <|f yqN <| f yqN <| f yqN <| f yqN <| f yqN <9Zg AZNL Nu/ / &HpN$H g B%|Bj J&_$_NuH8&HE`B@ KNT(H gGf KLNu// E< ag AfBC bg Bfv cg Cfv dg Dfv eg Efv fg Ffv gg Gfv hg Hfv ig Ifv jg Jfv kg Kfv lg Lfv mg Mfv ng Nfv og Ofv pg Pfv0N JN2$_&NuH8apE`R2 29c0S@|nG|f ADp aIq yk~f ykfZ JN@S@fN09kXg2HyHyHkh/"yqtBApNZ|OJ@g`pCq TNJ@fC/ 0*gCANax` J"_N%Hf` ykf^ JN@S@fR09kXg8HyHyHkh/"yqtBApNZ|OJ@g3kV`VpCq TNJ@fDC/ 0*gCANa` J"_N%Hf0*gA` Jp ap`BLNuH86EZ jNdJ@f jNJ@g0*g J`Abp al`0*gGAN/ y0NП/AbNП/JCgp`B@HП/ jNП/ JNПмN(H f ADp a`DHR/*JCgA`AD/Hjb/90C LN.O LN؂J@g Lpap` LN JNBLNuH8(HE< Rp N R *grҀ$*e| Rp$N G0* g "RANL"RANLB@a6R@g a6R@fp`2 La//*(0* gA`AD/C RNO TLNuH>O$H/I Nh/@BzG6B`R."/ ЀЁЁ"/N*څByr6o A N/( yr6gP0h@PGp?C|mDJFf&BD5|.f Sp N `B@ S0N ` Sp?CBA50N C]G`dJFf8p@Cgr`BAp?C@BD5|.f Sp N `B@ S0N `$ S/p@Cgr`BAp?C@B@5 _N C_GRF|Of JaXBF|mNp?C|mDJFf&BD5|.f Sp N `B@ S0N ` Sp?CBA50N C]G`l|mvJFf8p@Cgr`BAp?C@BD5|.f Sp N `B@ S0N `$ S/p@Cgr`BAp?C@B@5 _N C_GRF|Of JaBF0. f2 VN,8R@g$R( .2.A|I$5\-@2`2 n fr`&0. Rn J@g .` .F-@2.|8RAf NNJGgJFf4|lB@`pCBD5|.f Sp N `B@ S0N `" S/|lB@`pCBA50 _N `pBF>6HB`TR."/ ЀЁЁ"/N*څByr6o A N/( yr6g0HրPG| fJFf0 rUNpBD5|.f Sp N `B@ S0N ` S/ rUNpBA50 _N rUN& S/rUNpBA50 _N rUN& S/rUNpBA50 _N rUN& S/rUNpBA50 _N rUN& SB@50N RF|f JaNBFBG6H0. f2 VN,8R@g$R( .2.A|I$5\-@2`2 n fr`&0. Rn J@g .` .F-@2.|8RAf> NNJGgGJFf0 rUNpBD5|.f Sp N `B@ S0N ` S/ rUNpBA50 _N `( rUN& S/rUNpBA50 _N 0SGJ@f`JFg Sp N R Sp$N 0+ g "SANL"SANLT SNdJ@f SNpJ@g0+gA`Ap aZpOL|NuB@Ah`R@|mB@C` BA1R@|VmB@`BA1BB1 T@1fNuH<*H$IGdI0+gZ6+8+`B@3P:|Vl|l0h@`||l p@Eh@^D`0h@\D|m^ j g 0* Rj `4 *2*4* A|I"4%@ R0* |N R *r2tЁ%@KQDBEfZ7C7D`fB@3P:|Ul2IA 02HN܀RD|fn j g 0* Rj `4 *2*4* A|I&4%@ R0* |N R *"tЁ%@ j g 2* Rj `4 *2*4* A|I&4%@ R0* |N "R *"tЁ%@ j g 2* Rj `4 *2*4* A|I&4%@ R0* |N "R *"tЁ%@ j g 2* Rj `4 *2*4* A|I&4%@ R0* |N "R *"tЁ%@BD<HBEf\SDo`Z j g 0* Rj `4 *2*4* A|I&4%@ R0* |N R *"tЁ%@SDf j g 0* Rj `4 *2*4* A|I&4%@ R0* |N R *"tЁ%@LOh?@?AaRv(*aJSoB(KKCDA N>BF~E CD JN` /g @Nom$ g Lpa:`0gADpa&`0HCκA NA Nh/@CA N/HfA Nh/@A pa`4RF| /gh"@ J0<N gT JNڀ( ЀЅЅ"/N&փByr6l AD NC yr6g,J`RNg < b< f/J`  d  f oRRNf oB0|bV@0;N >`09HfC JNpJ@g|09HgC JNpJ@gb"K Ja JN 2 g~`BG`C JNpJ@gC JNpJ@f * fp`B@3H` JN 2 f~`~` JN.SG 2 pfdB2ppC JNFJ@f fFpGHN(H gfCNC LNpJ@f /|z`0/f$C LN/HgN Lp a`. ykfl LN@S@f`09kXg6HyHyHmh/9q"yqtBApNZ|OJ@g&`pCq yqNJ@g 3kV`C LN/HgC< yN"L yN"yA:N( ЀЅЅ"/N&փByr6l AD NC yr6f oN`( oa&H fADp a` BG3j3hBd`C JNpJ@f g`pC JNFJ@ff gvM`RNg< fg:AN/09jgr`BAHҹdX f"LANpJ@g Lpa`fBG`6C JNpJ@ff f A pa`@ k f +"+Fg Lpa` SNdJ@f SNJ@g Lp ap`*BW KNȗ~`,J`RNg< fB~`OL|NuH>Of(H/IG LNJg"LAN`CB@AN\J@gByI yr(f"LB@A-N\J@g3CAN/HMO<(HBCEGκ`CD0HANRC| m LNJg>v`0HC$AANRC0HA$NJfxC`L09mfRBC8`RDC0HANRCpC?CAN.TOCB@AN\J@g| m`CANMD"NB@AN\J@gBE NNCi NN~ fV09kXg4HyHyHj]/9,"yqtBApNZ|OJ@gv` y,N <3kVp`rzBC8HjDpCi NNeXOKD?HVC MN.\O MN@<S@fRD"M2IANRCRE|gByK LNJgC$ MN` yr(f"MB@A-N\J@g3JDgBC09kXgAr0NeMp?HVr ?Hyt ?Hyz?Hy|?Hyp? yN2O yB yB yB VB yBC yNC yNp."K yNdCr VN`/ AN۶XO09kXgC yNpNA3HWHoHoC KNcO CANCANC:ANHj:pCR@fr? LBB02NTO`Bg L4/20NTOXC|Go0 Lp N JgpCHrIop`>|IIr8BC KN,>R@fJCg Lp N RC0Hѹr80CTOLNuH068<:/$HG J0@BA30N JpCH2|AABB30N |f Jp=N `$JEg, JpDH2|AABB30N Jp=N `4 JpDH2|AABB30N Jp?FBA30N L xNuH8$H&I(o -fV *-fNTJBC`D0H sN(0H2H"s JNFJ@f 2-@f 2-@f8p`RCTmB@LNu/ / O$HG"J KNB@@AB@C`XBA3ABA3|IBB3|BBBA3|IBB3|BBBA3|?V@|mBSH=SH=SHANO,&_$_NuH.O*H/I`$oT?@^vBo\MIX gAN@`0NJ@g| fv`BC`JCg /Xg|-f M0N"M0<AdN /Xg& /-df /-ef//\"@Aha:XOJ@f@09kXg4HyHyHy/9q"yqtBApNZ|O` yqN <`0/\fBC MN,<R@g 0NJ@f MN,>R@g 0NJ@f MN,8R@g 0NJ@f|g |g|fL09kXg4HyHyHy/9q"yqtBApNZ|O`N yqN <`>|=gм|=gJEk|op`B@6P:JFk|op`B@6`< t0@B2/^g  g o`B@N |=f gh"LApNj`ZJGk|op`B@6p>r t<@BAO/H",I$oFvBDGK g KN@`JCg, /Jg& -f --f//N"@ MaXOJ@gBD`JDg Np N BD gC KpNj(M` =fRLg  fv`<cp`B@AgBA00RLgv<cr`BAAgBB02  NB@N g6C KpNj`(  fv8` NB@N g "L KpNjRLfL"o"0< MN fJDg Np N BD gC KpNj g Ka$O&L|NuH.O/HX*I$oxvBDIX gAN@`|JCg//"o LaXOJ@gBD`tJDg Mp N gCApNjp LN@,H gBx6`BD6"M LNL g LN"LANj"oX0< LN frJDg Mp N gCApNj gAa$O\LtNuH8O&H(IvE JN@`0HրC J0Nj"K"<pAN(JDf KN g( JapO@LNuH<&H*I <Nj$HB@ KN&IJj$09kXg LpNf`A@N <`B@ MN (Jj"29kXgArpNf`ZAN <`Nz`V J"<0N* J"0N|g409kXgApNf` AN <0N0Np`Jf0N0N KNB@L<8Nu/ / Er *f"AN4A>N8$ f$G RN|N&H/ *R/CTN.PO K&_$_NuH<*HBCEIvAUN8&H gB+"K LN`CY LN LNdC^ LN LNd LNG\`"B@AeN@ g0RCQ@f.RMg| mB LNdJ@Nq\B LL<Nu/ $HNAB JNT$_NuH6O6&JM=|CANKANJgv ykfjAN@S@f^09kXg4HyHyHm/9q"yqtBApNZ|OJ@g$`pC yqNJ@g 3kVBnpCgC`CAN&H fD29kXg0HyHyHm/9q"yqtpBANZ|O` yqN < g @NAN,ANrzdAN\@N$H`EC JNp\ JNT,H f,Jp. NNT,H gBC JN"JANAg JN3l KOLlNuH>O(H:&J" fIEg ,:f ygTL,L` /f\RNf \f Lp\NT,HI*L,MBC8`v \f2pC NNFJ@f pX@@B LNd\BC8`: .fJCf .RCBD`&JCgp`p@lB@AkN@ gRDRNfBK: LNJgx ykfl LN@S@f`09kXg6HyHyHy/9q"yqtBApNZ|OJ@g$` pC yqNJ@g 3kVBUf< g KNRm?-CAN.TOCAN&H f`t0frC LN&H g^p\ LNT,H f,Lp. NN@,HgB KNRm?-/ CAN.\OCAN&H fIpEgC`C LN&H fF29kXg2HyHyHy/9q"yqtpBANZ|O` yqN < -g @N LN+H LNrzd LN\@N$H`E"L JNp\ JNT,H f,Jp. NNT,H gBC JN"JANA׵g JN3l KOL|8NuNNu09kXg2HyHyHy/9q"yqtBApNZ|ONu yqN O(H/I"v&J/J/J ypf 9p&닖փM g"N KpNHJ@fJ09kXg2HyHyHn/9q"yqtBApNZ|O`T yqN <`Dp C KNHJ@gpC KNHJ@gnpC" KNHJ@g\pC) KNHJ@gJ09kXg2HyHyHn/9q"yqtBApNZ|O` yqN <`"LAN f:A0N8$H f LNh// CO/H./I**vBo$o^ Jp/NT&H gEp\ JNT&H gEp: JNT&H gE /ng&@` o.N@&HC& o.N6/H"K /*g"M @N6/H ѯ&JgX/ /*r6N""ҀҀ/A& /bg"M @N6N ѯ& /&м"N&RC|lvN/HBFK` 0HBRF|mBr@BrfSGfp` "L o*NnH؀ o*NXJ@gCF LN0/RoJ@fP/ / C LNPOCq LN/ C LNXO//"C LNXO o"NؼPfSGfp` "L o.NnH؀pfp`4Gf /*g C LNC LN LNRGGlNB@O2L|NuH0O&HBCE0*.f:BD`0p 22f rNr 5p 22j.o5A.RDj(m"K2*.HpAN& KNBD`>p Ķrm2B@`7t r 0f R@r İrmr İrf r` RDj(m j*OPL Nu?/ E.`RHRIgBA2BA2gBABB2BABC2C0$_6Nu?/ E.`RHRI4S@JBggBB2 BC20gް|fB@`B@BB20BBBC2 C$_6Nu/ HN$H g`C.ANpN$_NuH0$H6" f HN&H`0H JN &H g K`C.ANpNL Nu/ / $HNR@ar&H"JN K&_$_Nup!@!@ gE#!|ͫ!|!|2Tv NuH0$H&I8&*|?r2t4ժ *dRp0rѪz@CDbB"Kt4A(0N^C JN|<`p0C JN||@p?F@bBC`BF0Fr2Ct4A(N^L xNuH0QO&H$IpCANr *|?|8dv8@`vx@0C@ JapC Jap"J KNrrXB@ JN|POL NuH O$H&(***,* p@AN "F†Змjxր$ r⨄&ք $FąЯмǷV܀"p $pં,܃"ƒ$FĄүҼ$ pځ r$r⪀*چ $FăЯ м؀"p$p ં(؅"…$FĆүҼ|ց "t䩀&ք "F…ЯмG*܀$p "p੄,܃"ƒ$FĄүҼ0Fځ r$r⪀*چ $FăЯмF؀"p$p ં(؅"…$FĆү Ҽiց "t䩀&ք "F…Я$мD܀$p "p੄,܃"ƒ$FĄү(Ҽ[ځ r$r⪀*چ $FăЯ,м\׾؀"p$p ં(؅"…$FĆү0Ҽk"ց "t䩀&ք "F…Я4мq܀$p "p੄,܃"ƒ$FĄү8ҼyCځ r$r⪀*چ $FăЯ<мI!؀"p$p ં(؅"†$FąүҼ%bց "t䩀&ք "F„Ям@@܀$p "p੄,܃"„$Făү,Ҽ&^ZQځ r$r⪀*چ $FĆЗмǪ؀"p$p ં(؅"†$FąүҼ/]ց "t䩀&ք "F„Я(мDS܀$p "p੄,܃"„$Făү<Ҽءځ r$r⪀*چ $FĆЯм؀"p$p ં(؅"†$Fąү$Ҽ!ց "t䩀&ք "F„Я8м7܀$p "p੄,܃"„$Făү Ҽ ځ r$r⪀*چ $FĆЯ мEZ؀"p$p ં(؅"†$Fąү4Ҽց "t䩀&ք "F„Ям܀$p "p੄,܃"„$FăүҼgoځ r$r⪀*چ $FĆЯ0м*L؀"p$p ં(؅"үҼ9Bց$ r⨄&ք Я мq܀$r r⨄,܃ Я,мma"ڀ$r ⨄*چ Я8м8 ؀$r r ⨄(؅ ЯмDր$"p੄&ք"үҼKϩ܁$p "p੄,܃"үҼK`ځ$p"੄*چ"ү(Ҽp؁$p"p ੄(؅"ү4Ҽ(~ց$ r⨄&ք Зм'܀$r r⨄,܃ Я м0ڀ$r ⨄*چ Ям؀$r r ⨄(؅ Я$м9ր$"p੄&ք"ү0Ҽۙ܁$p "p੄,܃"ү<Ҽ|ځ$p"੄*چ"үҼĬVe؁$p"p ੄(؅"FҗҼ)"Dց$ r⨄&ք FЯмC*܀$r r⨄,܃ FЯ8м#ڀ$r r⨄*چ FЯм9؀$r r ⨄(؅ FЯ0мe[Yր$"p੄&ք"Fү Ҽ ̒܁$p "p੄,܃"Fү(Ҽ}ځ$p"p੄*چ"FүҼ]؁$p"p ੄(؅"Fү Ҽo~Oց$ r⨄&ք FЯ<м,܀$r r⨄,܃ FЯмCڀ$r r⨄*چ FЯ4мN؀$r r ⨄(؅ FЯмS~ր$"p੄&ք"Fү,Ҽ:5܁$p "p੄,܃"FүҼ*һځ$p"p੄*چ"Fү$Ҽӑ؁$p"p ੄(؅ג٪۪ݪ r@AB@N|O@LxNuHBB2`rv618<x8Hv6(18<vAz:Xx8&1Hz<xAz:Xv6(18z<vAz:XRBXAAbL8NuHBB2`Rv6x18vAz:v1XወzAv6z18v筈zAv6z18v筈z:!XRBXAAbL8Nu/BA`t4v6(8RAAb&Nu/BB` v68RBBb&NuH>O*H,I86$o> yr6fp`V fEBB@5@5@GI/ HoHoHSHTC* MNO/H fp` g @p/N@ f( LNN,HC TNJ@ff0gJS@gF29kXg2HyHyHy/9q"yqtpBANZ|O` yqN QO$H/I,o0*o8G|09f0<3N&(S vy`` LN(D , f -fHm"U LNXOJ@g`|dl$( y|09 SN&(H"J0 LN g  f , fBp o4 ,"o("$o$*o,BU(SE`  f B@,rAXWf0(NCScsBBpCPANHJ@fA .Aa g o `p CXANHJ@fA.Aa g o( `zpCeANHJ@fAN o,0`RpCANHJ@fA.Aa g.,`*p CANHJ@fA .Aa\ g o4 RLf SPOL|Nu/ YO.Aa4 g^G WB@rCYWf0) N78BQbqRRpC WRHNHJ@f WB@(NJ@f W ((fp`pC WRHNHJ@f WB@(NJ@f W ((fn`pC WRHNHJ@f" WB@(NJ@f W ((fp`|pC WRHNHJ@f WB@(NJ@f W ((fp`F09kXg0HyHyHk/9q"yqtBApNZ|O` yqN YO&H. IN&IK g2f:pd8N*`,0"S WNHJ@f S 0=0gB@00NJ@fXK f g,@`RNgBA0NJ@f =g`hRNgBA0NJ@fgN$UxT<"fjRN`0SDfTd0 UN*0$H2HUJ \fRNgg<"ff<`Ox/H/I>BCEC oa,H fJ29kXg2HyHyHj/9q"yqtpBANZ|O` yqN <` NN,H gC oa&H fJ29kXg2HyHyHj/9q"yqtpBANZ|O`J yqN <`: KN08IC oa(&H gN06J@nJ29kXg2HyHyHj/9q"yqtpBANZ|O` yqN <`/C LN.XO ykfb LN@S@fV09kXg6HyHyHj/9q"yqtBApNZ|OJ@g`@pC yqNJ@f C LN*H g?CNTO`D/C LN.XOC LN*H g*"M0< LN g LN06J@jBC MNJDoJCgNDlJ09kXg2HyHyHj/9r"yqtBApNZ|O` yrN <`?C oaz/C LN.\OJCg?C/ LNA"_N.TO LNӒ?/C LN.\O ykfb LN@S@fV09kXg6HyHyHj/9q"yqtBApNZ|OJ@g`pC yqNJ@fC LN*H f LN`|f$BE`n o  fHp C%NHJ@gp C/ oNHJ@f$R og4< fB@(NJ@f`0REJ@g M"oB@N R ofBE`  f Mp N `pC& LNHJ@gp C0 LNHJ@fz`B@NJ@fBEJEg "M LNL LN 4 g"o0< LN f"o0< LN fn` "M LNL"o0< LN g oHh"P LNXOJ@g MN<`,?/C LN.\OC LN*H g NSFJFfByr6#r<r@pdHrCH#r<Ѐ#r,H(I:*o(EGBCCC LNJ@f&JCT LNJ@fRCCj o$af(H fH09kXg0HyHyHj/9r"yqtBApNZ|O` yrN Of,H<&I:*oΕBC8WAfC KpNHJ@fx`|g|f|JFg| oaT(H fC oa(H yf0"KAN$H`0"K LN$H f"M Nap`G"L KNHoHo HoC LNcO KNp("K yNdGC KNC KNANrgC KNC KNHy pC KNeXOHy pC KNeXOp("K yNdHWHoHoHor 09NgZO09of$G S?(?(?(4(rB@Ne$\OG0J@gS@g S@gS@g2`HHm/HS"J NNBO `0Hm/HS"J NNO `Hm/HS0"J NNO JN /g SN"o SNFJ@gN SN JNB@OL|xNuH>O:/H/IBCM>"o NNIBlG"K LN oNJg"oAN`"LB@AN\J@g9|"LANBDANHkpC NNeXOB@ NN:HoHoHoC NNcO MC NNC NNANrgC NNC NNHkpC NNeXOHkpC NNeXO09kXgArB@NeKEp?Hyr ?Hyt ?Hyp?HUr?HRt? yN2O UB yB yB yB RBC RNp."K UNdp."K yNd`//A+N۶XO"oANAN09kXg C yp.NdCW yNpNA3Byr6E>`"N JNC0 JNCj JN*H"JAN fJ29kXg2HyHyHkl/9r "yqtpBANZ|O` yr N <`BylB2B@Ct MNXO< MN oNJf|gxN:JEg<09NGJDfD09kXg0HyHyHkl/9r"yqtBApNZ|O` yrN OrBBoGCB@AN\J@gDxBE`4pE?CAN.TO0HCAB@N\J@g RoRE| m0/gK"MB@AN\J@gxCAN$HI g""J LpNC LN~ g"Jp LNBp La"LA NA /H"Jp LNBp La"LA NA /H"Jp LNBp La"LANM"Jp LN LN0:"J LpN LN08 JN`09kXg0HyHyHk/9"yqtBApNZ|O` yN < JN`09kXg0HyHyHk/9"yqtBApNZ|O` yN < ykfb MN@S@fV09kXfC yqpNJ@g8`,HyHyHk2/9q"yqtBApNZ|OJ@fC; MN$H gBF`C0HAN*H g,BGv`B"Mp LNC= oN~ f"o LN~ gCoRC`  fCn~JGf MNXJ@gJGfJ09kXg2HyHyHk/9"yqtBApNZ|O`, yN <`BGv`b"Mp LN/H g`C= NN~ f"N LN~ g Mg`  fCoRC09gHTCJ JNXO`~JGf MNXJ@g MN`B09kXg.HyHyHkHkM"yqtBApNZ|O``AMN <`TRFomp JN`@09kXg.HyHyHkHkq"yqtBApNZ|O` AqN "H y f0<`,H>/NXOL|`HyHySNVPOJ@k09&_Nu/ "y ),g2"@g,g(f$HgggJf`g<=f I$_Nu`O~"Ap~WF< o gJf J(fp @/ /Ho/?<?<KNAO$_ oJk0p`Z|g"|g&|g*|g.|g23 kL`03kL`&3kL`3kL`3 kL`3kLpONu/ O&HANd o o?|P BWBoBo?|BoAN29XgT" g&O&_Nu/ Hz?<&NN\O$_Nu 8NuH",H?<,NA>?<*NATH@0|A<|?=A|=A|=AH|SA=AH||P=A LDNuH $Hpj 2*`S@| JAk`R@| | lJ@jp`nt@B6mB8H؄A$pHjSCt@|f|mRC2H ЀЁ4*HЂ&"鉒8*H҄&$銔0HԀ LNu/YOM,C HzaXOXO,_NuH@B@H@CzraJ@kNu.Vp`/QOM-O, ICHzaXXOPO,_NuH@B@H@"VraJ@kNu.np`/YOM, IC HzaXO VBXO,_Nu"VS@eQ,NuH8]O$H&I(o&BCx%p JR@g2fJ@g@HNBEg>BA< <b;k`|<*f<`&<0< b ACp a$Wb<gt<.f6<*f4`$<0< b ACp a$Wb4g<߲<Lf g`<hggr@dp|?@0;N`````N`N``````````````````````````NNN````````````````` [0`|A`0A2"LaN@`\ [2"LaL@`JJEj `p0?4 La"TO@`*JEj `0H?4 LaTO@` JEj `p0?4 LaTO@`JEj `p0?4 LaTO@`@HN0\OLxNup24C8jxA aNA pJWF@?@gA 2SAktaSb (Q2/@4/(jt@jtBgf 0Ao@@Alx?B?D`hH0$H&IB(v`H0$H&IvJWFCJBj4Cb6xJAkCc8Cf K0a0 JN` 0 JN0 Kap0DL Nu6x0/g f@ JaP0/g@AN0/g@ Ja,0/g@A N0/g g@ Ja0OLNuH0E6`H0E4&H6g8Kg SC JpNQ J0|gNL Nu00000000 /YOMPC HzNHz2aPOJ.f2k?0Aa@20JAkXO,_Nup`JgAa jRG4`kID4`b,ֆSDgNRG4`b`NSGB@$2LNup`NSGp`H8vBG8gvzB$H&IINJ@kpRG4`k<0f,SDgPNRG<߰<XgI4`b0`SDg.NRGI4`b,ֆSDgNRG4`b`NSGB@$2LNuP`NSGp`H8vBE8gjB$H&IIXNJ@kdRE4`k<-Wg<+fNREI04`< b<ֆSDg NRE4`< b փ"փփց`NSE$JgD2B@LNup`NSEp`H<8z$H&IINJ@knREJ4k| gNSEJj$JDgJNREJ@kB| gJ4jNSE`0SDf`**o JDg NREJ@k| gJ4jNSE`SDfB2QL<8NuP`H06g(8$H&IJCjvJj NJ@kSCf` NJ@kSCfQC2L NuP`H<6g^8BE$H&I(o$Jj$NJ@j P`FNJ@k> F4Pg>SCf`**o NJ@j P`NJ@k F4PgSCfBQC2L<8NuBN`(VHNu(VHNuJ(g/a _(g(g/a _J@f B@Nu3 kLNuH8$H&I+g|2g+gC'I&'IR'I UAe"S(kt d W`2+gH@ KabLJ@f,H@ KaLJ@gkg&B JLNu3 kL`/ / B@JgB)g@)fJ&Q(i ge"// Ia"_ _J@f&Q`B@"(_&_Nu3 kLp`#H#H&HJfS#K " I(Ia"LJ@f`H:$H&I(S&gfJg^+g`)ft,k x$ڹd SfRe`.&// KaF$"J@k,f4(SSfRf& L\Nu3 kLp`"`&x,A'J'JE8'J & KaJ@kfRf"`H:$H&I(Sx&gZJgV+gX,k$dSfRe`6+g// Ka$"J@f.// Ka$"J@kf(S,k`& L\Nu3 kLp`"PdB@ Nu(g*gg/a _J@f/a _J@kf"P`3 kLpNupr`H&H&8|f֓b e&`8+g+g2 KaJ@f:"40+aJk* k&'HpLNu3 kL`3kLp`p/alXONu(g4(f>"P | dNu?/a _2J@f 0Nu3 kLpNuC!I!IR!I `H&H(o Ia6k g La` a|Jf(H <a F)Hg0@0;6 K (:gNaJ|g9@{00 l)H()H `da)b*a)b* / ?/?<=NAP$_JkR9@{0 la ~A()H)HRH)H QC#kR LLNup`p`p 3kL g la 2`YOCBgg Ar`THWf0XONup`rwar+w+a+rbwbabr+b rb+ w+b wb+ a+b ab+ Ap`Ar(WVNu?/ Aza4Aa*G6<`Gp+g Ka Q&_6Nu/ &H+g+g8aJ@f80+a"J@k,+g ka B@7@? Ka0&_Nu3 kLp`J@k"Pc  PNupNuH&H(k L0+"+ a.JkRgF+f, L"St gSj`"HSISSk ögSjJg&"'LBLNup`p`H&H(k6+"+g0DtaNJk+fZ"S"L Ip gSj`*| // " 0a"_"JkNgPAp SjH@" 0aLJk*g,`0" LaJkg&'LB@LNup`p`H06&Hp Cgp@CfFpC?/ ?<=NAPOJk&8jaTpCgF?<?p/?<BNAO Jj.`Br߲fNAXONua<3kLp`ް|c/ ??<>NAXO$_JkpNua3kLpNu/ /?<ANA\OJkp$_Nua3kLp$_NuH/<VNA J@kp$_Nua3kLp$_NuHR@W@e >?NAO $_JkNua3kLpNuT@a J@gX  _H&Hx&SgkJ9kvf~a<g&< g<<gP< g< e޸dRa`JgSSKpap apa`Rp ap a`bJg^`TxB9`Jx B9`f0g6f(g.f g&fgfgfggepNupNuJfpNu g<g8g4g0g,g(g$g ggggg ggf @Nu"HJgJgJgJgJg JgJgJf SNu"CB@f ANuSeg gb pNuJfpNupNu"SefBJgSf ANu/ / g($Ig"f&Hggg"J K`A&_$_Nu`H0$H|g|$bG ,rtgJ3kSJgtJ@f"p <0f:pgb<߶<Xf(pf"`N|f<0fg><߶<Xfg.G 3d"3d&HCHCJCfԃԁd` & gSJ"L Nu3"kLp` 3!kLp& g"`"CnB@f ANu "HJf" SgSI`!Sj @Nu/ E6BABBSe2g2 ge p` Jfp`p$_Nua /a " g p/a _Nu/ / &H" kgPR<"+eb(`fa g`$<eVd0Q/a" gnpЫd "K/a KaP _J@gH`L"/Hk?<?<JNAO Jf2'A K`$ nf te'@A!Aa K&_$_Nu`H &/?<HNA\OJf 9Zg @ NJ@fp @LNuH0&gPR<e a g!CC "A`rG&S f. < a gj&@Ap !|'H&#A"P` )d I"Q f`rd ` #@#C"nAL Nuk |`3 kL`/ oLQ d nf@axJg*`6C g,g"@ f` "/?<INA\OJj`p$_Nugp`/ &y g/ &S?<INA\O`&y g/ &S?<INA\O`&_NuH8$<CG g" c &@ f`(@ ,gb*"Ҩeg ` )H`p"@")Ө )H`>"@ gb" ҩeg`N"(ө`" "H" ҩf @"(ө" l eb&/ ?<INA\OJfQLNuP`Jg/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|A0|Nu|A 0|Nu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@  !"#  !"#$HBJBf$HBJBfNuHBЂNuHBЂNu$HBJBf($HBJBf H@B@H@NuB@H@HB0@0H@0H@Nu AH@r2B@tЀӁd҈рӁQF@Nu$HBJBf"$HBJBfB@H@NuB@H@HB0B@H@Nu A"B@H@HABAtҁрdЈӁрQNu$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$ jDNuH 6?<?p/?<BNAO (k6?<?p/?<BNAO *k?<?/?<BNAO J@k L8Nup3 kL`HRHP?< NA\O$_NuHRHP?<INA\O$_NuHR/?<HNA\O @$_NuH>@NAO $_NuHRHP?<NA\O$_NuH>?NAO $_NuHR?</NATO @$_NuHR??<>NAXO$_NuHR??<NAXO$_NuHR?<NATO$_NuHR?<ONATO$_NuHR?HP?<NNAPO$_NuHR?HP?<=NAPO$_NuHR?HP?<B@"O6*H(I&o2NT0EMHR/ "L M0abPOJ@gB TФf820NiTg09jN` J@gBA0Ni 3`tA09Nj820NiTg"09jN` J@gBA0Ni 3|f(20NiHRHR"J Jr0NhPOA0Nj:BSpOL|NuN-F09kBA09Nh309NN Nb&NuH:UO$H,I(o&j09kBC`09f"+g& + g'@ S29pN k29pN09f:"+fHWCt Sp2N(XO + fHWCtr kpN(XORCGRmx0o j, g j(TOL\NuH(UO$H6r@g49oH2909@@4*H…Aj09y2*H@j` *fr(j loHWC42,0, lN(XOHlC42,0, TN(XOCAN CAN CAN `8(j lo,HlC42,0,H TN(XOC AN TOLNu0^@@02^AA2NuH.O,H:<*I g29npB?@J@gt`t?BE4>C JaIp?BB2"N L0NXTO: oV0KMWo?|,BC8>;G:pE;@ ;@``Do0/frFAfJ;C;C;G;G HT"L M/ /0/8gr`2/$0 _"_NjJXODn FRG?|,`Bo,WRCCnvW`$;C;C ;C;CHT"L MBA0NjJXORCCn<Ro~BD6?C,;C ;CpF;@;@`\Co0/frEAfF;D:0/,;@ ;@HT"L M/ /JGgr`2/$0 _"_NjJXOCn ERo,~`BGRRDDnxR`";D ;D;D:HT"L MBA0NjJXORDDnO.LtNuH O86$H$ g@p?"JA0tNXTOp?BB2"JA0NXTOCA09NiO(LNu/ / $H *f$&j S2+0+a k2+0+av`&j S2+0+Ha`&_$_NuH4O*HG4+jt`BBE5H4vk5CvS5C698+DDi B5C69SCi B5C 4*j5B 8* j5DJAg?@BW`>Bop?BB2"MApNXTOHW/9C Jr09NjPOO(L,NuH0O$H?@<>&HBC8<:SAoSBoyfygzJEg+H?@+H?A+H?B+H>kkkk0RC JNe0/gHk0/gHk0/gHk0gHk` 0RC JNe0+f2+yo7yp kfG`40/ JNO L NuH>QO$H8.BCr@g yf yg|`BDERCB@*|g(Q@g`>,j Jaz0 Ja0.n 5@` Ja\0 Ja j 5h`:*|<*FN0|bP@0;NDv&v`DDj/0 oNPH""ҁҀ(W0, H@2*At@BjJ@jRjpl gSj`|f5|@`5|%| `5|%| 5|`5|%| SjSj`~|f5|0`5|%| `%| 0H|5@`n/0 oNPH""ҁҀ,W|f5| `5|j 0* H|NSHHj 5|%| B@.|| b@0;NLXXL n h f0.y@T@5@`0.y@S@5@` n h g0.yf yf VnSn`Rn0.@29AA5@``py5@`P%| 5|P W0(yS@5@5|py5@ry5A`j`B@*|g_@g`(,j ~?|Bo`(j ,T?l >,?l gK ml2-H ЁЀ&URm`@ -g*@`r pN+H*H g r <N&H* f MNZ` gV'|)'@7o 7G7o&5| A%H `( jf pj g j -f5|%| jp jgPOL|Nu"hBh$C0)||Pg 2A| f8i i0(S@gS@gS@gS@g `i `i`1|$p igNuH0O$H864RBgB9|pj?rj?tj?vj?BgBgB@24NcO )J LaJDg0?*?*?*?*p?429A09@NcO B@NdJ?+?+?+4rB@ JNe$\O0HA!RUL<NuH<$H6&jB@NdJK0*S@gS@gS@gS@g`jJCg0?+?+?+?+p?429A09@Nd~O 0-f0*"Nf"J@g 0*"NfLI jf@09g8"9g08`0H u hffSDjJDjrp yNNBD` 0HgRDTmST`0H2I+RDTm`JCg0?+?+?+?+p?429A09@Nd~O jf6pk?rk?tk?vk?BgBgpBA4NcO `B@C KNU RNZNWXSm;|(r@B@ JNL<NuH8$H(I:86&H IB@r@NB@A`2IC"q if|`R@hmG0+|2+AIUAfvBB+|gSBg _BgSBg`Z2g t@7B` r@7A`2g t@7B`r@7Ak0(gr`r"k 3A 0gt`BB"k 3Bp kgjj j 0(j|j0(j|HjjjpCg"29df//4"L J02NXOJ@f0pCg*&JG0+|gkp kg2"L J0aP lm.&JG0+|g lfk`kp kg0,o 3p`B@L8NuH+kySG`<* >* jSG?* 42* 0NVTOJCgpl gD2* D?40NVTOJEgr09NiB@LNuH?0UO$o&2*H ЀЁ&R2H ЀЁ R00 k |>29jn8*zj |j ~j64p2NT\?Bg?420NV\Opjg\2C?4G02NVTO0C?420GNVTO`.pjgBA0*"J ylan`BA0*"J ypaZ0TOL NuH< $o6*89:909jSDRj Rj 5D5E4rpNT\?p??4rj pj NV\O09jn?BgrE?tDrj pj NV\O42909NTzA4* 29Aj 09NjpjgBA NY`60* E?4* Drj pj NWTOrj0"J yhaHpjLtj ?B?B0* jY@?@?@4* jYB?B A09rNg R0( H@S@g:29oRW`TWRoSoRoSo09oSo Ar09Ng0* D?4* C2* 0* NVTOpjO LNuH?8O$o8&j2*H ЀЁ R60 BD:+<* >* pNU k f42909NTz`42909NTzpCg|pCg|pCg|pCg|pCg|Ip CghrD0Ni(C S0Nk 0+S@gS@g`0*o@` 0*o@@0*o @@ StGrF0Nj20Ni(`H20Ni(C S0Nk 0+S@gS@g`0*o@` 0*o@@0*o @@ S420NjJDg BA0Ni(B@OLNu// QO$opNUtrpNUx> 0*@j S@?@2jSA?Ato?BA09NiB@PO$_$NuHE` R&h(KBCx:1E4 R1E2 R1E0 R1E* RB&5CP R0(oIRC<,0|gr0 KNDJ@f~ R1C0`tpFg(BA K0NDJ@f\0|g8JEkofH:`D>,|O| fr0 KNDJ@f R1C2`|fr0 KNDJ@f R1C4p FgZBjBB@NdJ R0(:fNJEoJ2gFBj0 KrND0C$A"NW MN7JDo2H ЀЁ R"h KN@: R0(*o2(:fN7J@gUTM::B]XOL2*IA$r K"R0)*a R0(*o|fNC`09o2*>gB@N7XBjTHWHoCA r B@aۊPO L0/a5@>ox29IA$"p if( T hfp`B@5@@ T2(:f"H Ka T0(*obJCf^pN7X`TBj>r T0("NgBA K"T0)*a`209HA$$ R hfr`BA5A@ K"R0)*BAa * g K"@N`B@5@`PIJHTHT"LATr B@a>POAN0/La;@>o*N`09HA$* U hf;|@JEo2-Tm>A0a`H U (&g0:(,2-Tm>A"U0)*a U0(*o.JEk*r0NFD`2-Tm>AB@a\ U0(*oNC /BgA"@N`B@;@4rAXWf44(N  $()2?J(((JJ$$J|`"z||m |WXg|WYf L0+a>JGg0-gJFgp0r AXWfj0(N!"#)2WXWY0 2>vC Ta`$ Th: TfAah?+?+ ?+ ?+r T0("NgPO` Th:`2 Th:?+?+ ?+ ?+r T0("NgPO` Th: TfAa`0-@f2->gB@N7Xr0+Ng` Tfp0->ghB@N7XBm>`X0-f$2-gJGftmgB@N7XJGf0-@g 0-@g29IA$("TAa" /BgA"@N`B@;@<`0-@g TgJGfCVAXNWHoTHoVCXAVr0+aPOAN2/V0/XNaJ@g^o ?|&?|,?oX"?oV$x`f0-@f`*;|J;|R`P|)fp`B@;@FaApaBmF`.C TabC$A"NWAN7` JGfApa0-f29f4-Rf ;|J;|R0-Rfro g8~4-TgHmJC UpN8XO>`JDf@0-fro&g2/$0/"Nf\?@L`$HoJHoNCRATr B@aPOx`?kL0->g8 U2("oLf,JDk N7J@gHmJpC UN8XO>`l/UN`0-@f`AN0/LaJ@gPJDo"0-fNWj|grdpANb:HmJB@C oRN8XO>f;|R/oN>`BDJGgJGj0-@f2-TfApa0J@fpo gfBmD2->f4-Tg&C2/*0/( U hN:X;@JR@g2-Jf0-Df*2-Xf4-@f:-TfNNJ@f ApaJ@fNpo g2->f4-Tg U0(*oAN7p(o gAaJ@fp o gNڌ&` U0(*o*"h&&i SN@ mRg UN7J@gNC /Fg$ mJg2-Rj @ >` oF ` oFB0-JOZL8Nu/ YO$H jm"HWHoCA r B@aPO0*"ofp`B@XO$_Nu?/ QO6E` R0(*oRHoC hNeXOUWYop R"h&i?@ri?ABBCB@rNO& RBh.JCgNCPO$_6NuH>O&HM n$h6+"8+$?4rB@ JNelTO:kH"ҁҀI7|tlgjrl fbKHW"M0 JNG,XOUmJmmDmn>mn80fpNdJ<7U 7m 0-UR@7@2-mRA7A`f0,j"Hk C J0NeXO7l7l`.pC7@ rD7A 7|7|`BkAC ""0g B@NdJBVO L|8NuH<$H(I*o 6&jJ@f rl&UAg:?,$4,"rB@ KNelTO:kBDrl&g9|&JCgp`p9@,0 KNFr:k* l,gjr0H$ԂԀs(fVrs( fN:x`H0*$gB29g:tM2H ЀЁsf&pBANcNNWj|gBAp KNK`|???,$4,"2,,0 JNG\O:J@gXR@g:B@`TJCfJB@aR"J La 9g L"@N`B@3`"0*$g 2,$0," KNK LaNWp`pL<8NuH>Oz&H:?A.8/Lt@g|`BFJFg~`~E`JEf~v0rAXWf^0(NabrPH809f R2(*j65|D R0(0o R6(0` R0(*j2(0o` R6(2` R6(4JCo5|D`tpEf R2(*jtEf|20/ KNF6kh5|DrGf,H$ԂԀ23( K0NDJ@gr0 KND0`4r0 KNDJ@f"p?Bgr?4 R02NG\O` R0(*o5|D"W20 KNAfJ@f|afAZN@`pEgV R"h& i *P"R2),MI 0rAXWf0(NHPstTd &N@^J@fd &N@^J@gdBA R@NFD`BAB@NFD`N@^J@f&gN@^J@g&gBA NFD`6* MN@JFgX MN.Jgjgr`BA6`. "MrPANFJ@fpPAN@5C`RC|m`v jlpP4PgRjpPAN@`J MN@JFgJ MN&Jg.~`. "MrPANFJ@fpPAN@5G`SGJGj`0*orP4gSj`~20/NX>|Cg |gdU@g`pJFg p)N>6`B@N^p!N>6JCg|XfNC R"h&(i *TBtr R0(*NO&NC`ZJFgp`B@N?D`HBjD`B R"h&(i (TA"LNt"RC,2/ R0(* KNKL"LANp5@D0*Dg& R"h&2)|g KN@ W1|z=.pa~pOL|NuH0O8 y`"h& i $PG KNg g`Hy KN_rXO0 KN$6o@ JN("JAN  R  R"A0N0Np`B@OL NuH0O8E JNg gHy JN_rXOB@ JN$6ovrAN@B/p AN@&H fp AN@&H gBJDg2G y`"h&$i "R KNC KNp"KANdAN@0NOL NuH0&H"y` i&$h jBC` _fRCfNC0H"K RNdtr y`0(*NO&NCL Nu?/ Jg HNJ@f E`fp`fB@$_6Nu/ / $H&I"y`2)0H ЀЁA0( $k "Rf|`|h g1@ BBr y`0(0NO&&_$_NuH0$HNJgbvG>`"JpPANpJ@gDSCjv`pPCANSC|l"J KN k@lpP@3PgRk@L NuH<(H6*It@fHE`r@g0t AXWf(0(NGHKMPRSrdXpd( R"h& i &PNC R0(,B3tr R0(*NO&` LNE"` LNE\`NCNC`5|H%M/*$"j R hk HA0-HgR U hm 2("p Ng mart"UC,2 U0(* hNKL U"h&0)|g ha``0-Hg ma,B\OL<Nu/ UOE` R>,0(.gtCBA0(* hNKL RBh.TO$_Nu/ E` R0(.f t"HC,BA0(* hNKL R1|.$_NuH0&H86SAfaE` Rh*g h*g"h& i Pa2H ЀЁA"R#H&"Ri*g&h "SAZN R1D*|gaZL NutAgBANDJ@fpNuB@NuH $H68H$ԂԀA(2<hf4JDfxh f(0`Ahmhn 2<hf 6S@jB@`pLNuH0$H&HBCGRC2+0 JanJ@g r0 Ja`p kgL NuH0$H&HBC8GRD2+0 Ja2J@g6p kgJCg r J0aL NuH0&H"y`$i&6)*BDp jf,ERC2*0 KaJ@gr0 KaXx`p jgJDf Ka4L NuH0&H"y`$i&6)*BDESC2*0 KaJ@gr0 Kax`JCnJDf Ka L Nu?/ y`"h& i $PJAfafBa$_6NuBAPf4(||0g|g`0Nut hgpNuARA`NuH0$H8:&HBCNX8GRC0+||g| g|g`<0+ H@f2 J0NP`00 JNQ&:oH"ҁҀ42 JBf0` p kgpL 8NuH<*H6(IH"ҁҀE&j Hl0NeXO k f699y`699y*k MN2+SAgSAg`2*@SAT` 2*@AT0*l@l0,l`Tg _fSM09@` C _f9@f o0L<NuH>O$H6>>` g _gSFSGn NN"0NW< y`>(*h,fGgJH?@Br0 Ka(Gg* o "PAN`0 KaB|g,6H"ҁҀI8,:, tl f`pEf0,||PgH| fBAp KNK`pEDgrDgtDg|Efx EpWf2/rftPDg9E BBr0 JNO&pDgV><:>2H ЀЁIlf:,<`Gg pl grlgl BBr0 JNO&`0/rfrDgp@Df`2H ЀЁKM<p=@=@BnHn C 0 KNeXO=m=mCANWA 2/0/NaJ@g=| m BBr0 JNO&`Bnp NNY:r@g tn=B m BB J0rNO&pEgrm g&` pDgNWpDDgrWg0|` 0`B@`pODL|NuH0&H:8$I6pNf4"J20 KNeFB@NfL 8NuHO(H8>NWFBG`pNj"S )мo8 )мNj&Jo" SXHCp"QpT.C LpNUB@"SXI LNUKJDjhpNdJpm?rm?tm?pU?rl?CAtlrlplNcO B@NdJVlVl`>:,<,02,AA9@24,BB9A??,?42,0,Nd`\Orp La^p"SXI LNU gC LB@NU CNZ`4 S0(*oa?-?-?-4rB@ LNe$\O S0(*oaNWXOL8Nu?/ YO&H IaS@fl KNgJ@gVB y06(`, W0(f2(yo1yp hfA`BSCkA2B@NeJ@g fp` aTp`B@XO&_6NuNea49g^&HBC8z0+|gY@g`(JDg20 JNd`x`JEg20 JNdBEp kfGRC`JGg p JNdL Nu g"H`"y I gAph gpNup hgB@NuH:O$H8,I6&j" g0*g2*:f09do jlHA`fJBf jlT fMJCk(p???.?.?.4BA K0NdO `B?.?.?.4r0 KNe$\O`"2H ЀЁI$g NC""` AC""CAN`J@g:*"<, pNfMHnHnC Nr 0N PO`"NAN`J@g`C NNaANZXJCk*p???.?.?.4BA K0NdO 9F `?.?.?.4r0 KNe$\OHnHnC Nr 0N PO0.o2.nlJCk9C ANZXB@NfOL\xNu/BA4hmhn4ARAv hg0&NuH0$H6H"ҁҀG0+|<gBB02t AXWf2(N 0@HHHHHHH,,000`Z6jp`R2H ЀЁG6+o:8+2H ЀЁG` 0+||g|g`0` RCGClB@L NuH>(H6a 6J@o La:4H"ҁ҂EH&փրG8 L0BAN`V(HM gNSH LN@*H fNSH LN@*H g LN*B@+|| b(@0;N k h f 0:`0: k 0(J@g S@g S@g`Bj`0+E5@` 0+E@5@ k h f* 29HNj`f0:2+@A5A 2HNj`@ 2HN5@`, +f 0+ H|HAf>4+VB5B`Jf,Jfj`jj NSHHj p`B@L|8Nu<am*<zoGvhxhzh|h0<NdJJGg6660E62F6B[B[66/ "yA09rNjJXO`4B[B[66660E62F6/9"LA09rNjJXO0<NdJOLNuQO>?A?B?o Ar09NgPONuHQO68:0/2/ta>?D0E?@2o?AA09NhXPOL8NuO?@?@ >?A?A?A?B?B0/?@?@ Ar09NgONupNfpNfNupNfB@NfNuYO09^fHWHoCANd&PO`HWCA09NjxXO0/XONuUOHWHoNd&POTONuUOa|gHWHoCABBrpNblPOTONu@oNu0Nu@lNu0NuPo0NuH 86Hx"| |NtXO$HJCgF0H8|xm |n|vNJ*rCg j0@H8` R0@H8 ENJ||am(|zn| `|fx`|fx`|fx0L8Nu/ v@|1C1A0(@1@1B 1o &Nu/ $H0*@H2*HN2* HN$_NuH $H*r Pg26*Ht0*H rN&Jo(؀` Nڌ(؃ JNb:r@g$49^g6*f29ffajg|p Rgr EfNڌn| JEg0L8Nu/ $HBB2*0NY$_Nu/ $Ht 2*0NY$_NuH8O68:"HE$$IC LN`J@g\G67D7o7o"K LN`J@g8I"LANaC KNa/9"y L209NjJXOO L8Nu/ / &HEr09Nht$$&_$_NuH>Op?@?A:,H/IK&E 0- .ftr JpN;| .SoSo fJEk|n rM GH:+>+?G gF'@ k6.Kn7CC2. n7AytyFBBA09@@`k6pE|:"gC@k"oM NNBC8` gl(N"L2A<50 JN`f2H ЀЁG7E7o49o Np|N@,H gB LN"0NW67@`C2A05 JN`fRD| mtr0NWT@E6209o0/NW?@"oM NNBD>>` g>(N"L/I2A<50 JN`fp| NN@,H gB2H ЀЁG7o7| J02<N`Jofr0 JN`@`of7|r0 JN`Jp[ LN@(H gCNA@` AB0@ oN"0NW>`2<4B05 JN`@RD|m:*Xr0NWT@><9F@rWEFo4FBBD`B2A<54H ЀЂG7E7GA0@0 JNQ09@@GRDWo20NW629AAS@5@(5C09@o5@////tBA"oA pNNPO<BD`0@uf0`RDWopOL|NuHO&HANg IfT" f LN8&H fAN8&H g "KAN`&CAN‘NJ&rA8G CNJAN&Jo8S 7\0fB70ANdHJjrܲfCANNg0p` ANg0B@OLNu?/ O6ANg gdN&HJCgC`C/ CAN_rXOB@ANJ@f(HkCAN_rXOANNJ@gO&_6NuH0&H$I gN KN&JCoA0 \g RH\RHB"o KNL Nu// &$HN_ g`f gXH$p`PH fB@$_&Nu// NJ&$x CNJ J$_&NuHRpNBT$_Nup NuFAp Nup fpNupNupNuFApNuN`p PJAgBNuN`p Nu4(<g4<g.<g(<g"<g"<g< g|| gXNu h NuA Nu h hNuNV0(id6-P0h=@0(h=@-Q0i=@0)i=@`4-P0h=@0(h=@-Q0i=@0)i=@0.ndn0.ndd0.ndZ0.2.Ad020.2.Ad03@0.2.Ae03@0.2.Ae03@0i0)ipN^NupN^Nu4BehBd4Be hBdpNupNu "H@XS@2H@PS@2NuCHRt""2"<0<NBAH0$_Nu"<`"< `H@#`"<`H@#`p "< `HQHPH@"<az"_2"_2"o2"o2NuHQC@#H 222"" """"2 "<a," "_2E"Z2"Z2"Z2"Z2"Z2$ANuHRC#HA #H HPA#`"cD" 0<NB _0C"#|@#|H $_Nu3@3B"<`HQ#`"<6a"_2"o2"o2"o 2NuC@222""" "<3 `LHQHPC@222" "2"H`#h"<[a$"o2NuH`""_2"_28"o2:Nu#AZ#3rfta ##@NuC#H A #Hr&ta#@#NuCH $<r`2RBfr`#Ctr`2RBfrta#@Nuw%d %d %d %d %d %d %ld %d %d %d %d %d %d %d %d %d %d %d %d %d %d [Oh...r%d%d%d%d%d%d%ld%d%d%d%d%d%d%d%d%d%d%d%d%d%d[UUE/UUD|[BTOA/ATOB|[MIME1) UUE/UUD 2) BTOA/ATOB 3) MIME Selection: Batch: File?UUEUAA.M.MIM.MIMEDestination:B2A %s (Y/N) %c| %s -uue-uud-btoa-atob-ship-unship-mime-unmimeesscode.rsc ESS-Code[3][The resource file could |not be opened.][ Oh... ]ESSCODE_CONFIGESSCODE.INF[Okay!C=-gemini ESS-Code 6.4 Copyright 1993, 1994, Michel Forget Electric Storm Software SEGSIZEmmnn2The source file could not be|read.The destination file could not|be opened.There was a write error!The source file could not be|opened.ESSCODE.INF ESS-Code 6.4 [Oh...[UUE/UUD|[BTOA/ATOB|[MIME1) UUE/UUD 2) BTOA/ATOB 3) MIME Selection: UUEUAA.M.MIM.MIMEDestination:B2A[Yes|[NoMainINTRODUCTIONNIndexUUDecode File:UUEncode File:MIME-Decode File:MIME-Encode File:BTOA-Encode File:BTOA-Decode File:Save Options: File?Load Options: File?Split File: Source?%s%d1) Yes 2) No Selection: Source File #%s%s\\\ST-GUIDESTGUIDE ESSHELP*:\ESSCODE.HYP%s %s[Oh...aaz% Progress: %d%% table include %s \\\.[Yes|[No1) Yes 2) No Selection: wbw\...\[Oh...begin part %c %s rbDestination:.uueUUEncode File0%N/A[UUEncode File: %s] / Segment Size = %ld [UUEncode File: %s] begin %o %s end rDrSrzrrrs1sdspssstt0tDttttttuu^uuuvv,vvvw%wIw[wkw}wwwwwwxxx6xxxyy=yvyyz$zXzzz{{2{_{{{|'|X}8~ ESS-Code 6.4 There are no window handles|available!End of file encountered in|translation table!The translation table is|incomplete!Duplicate character found in|translation table!End of file encountered before|end of encoded data!End of file encountered immediately|after "BEGIN"!Bad prefix!Corrupt sequence!Error while writing decoded file!Unable to open input file!The data file is missing or there|is no "BEGIN" line in the data file!There is no filename in the "BEGIN"|line!File opening error!No include filename specified in|the data file!There is no data in the file!Missing part name in included|file!Part suffix mismatch!A segment must be at least 1K|long!The options file could not be|opened!The options file is corrupted (or|for a different version of ESS-Code).The options file could not be found!There was an error reading data from|the communications pipe!The resource file could not be found!There are no VDI workstations|available!Do you really want to quit?An existing file will be overwritten|if you continue. Should the file be|overwritten?There was an ambiguous (possibly harmless)|error while decoding.Which conversion method should be used for|this operation?You have not selected a segment size.Error while writing to output file!Invalid argument.File not found.No file received.Unfinished file.Invalid SHIP format.Wrong sequence.Failed CRC check.Mail command failed.Overwrite attempt failed.Write error.Too many output files.There is no more free memory.There was an unrecognized boundary line|in the encoded data. It will be ignored.The end of the encoded data was reached|prematurely.The encoded data was corrupted in transit.The encoded data file could not be opened.There was a general (unrecognized) error.MIME-Encoding is not suitable for encoding|textual data.The content type must be a subtype of application,|audio, image, or video.Ignoring invalid content type on message/rfc822.Ignoring invalid content type on message/partial.Ignoring invalid content type on message/multipart.Ignoring unknown content transfer encoding.Partial message has no identification parameter.Partial message has no number parameter.Partial message has an invalid number of parts.Partial message has invalid number.Multipart message has no boundary parameter.The selected file contains no MIME-Encoded|data.There was an error while attempting to open|a file or create a folder.There were no matching files.There are too many arguments on the command line!There are too few arguments on the command line!The ESS-Code context sensitive online manual could|not be found! The "ESSHELP" environment|variable must be defined (containing the full|pathname of the online manual) or the online|manual must be in the current directory.As a direct result of the growing investment of time and effort|invested in this product, ESS-Code is now Shareware. The|continued development of ESS-Code depends solely on user|contributions. Users who register ESS-Code will receive|a disk with the latest version of ESS-Code (optimized),|and a registered version of MasterBrowse (which includes many|bonus programs). For more information on how to register|ESS-Code, please refer to the manual.To use the ESS-Code context sensitive manual,|the ST-Guide accessory must be installed.rb[Cancel % Progress: %d%% Progress: 100%% (Operation Complete) Exiting - (Operation Aborted)[Oh...beginENDBEGINendinclude\...\Line: \\rtablebegin Destination:[Yes|[No1) Yes 2) No Selection: wbUUDecode File0%[UUDecode File: %s] Next Segment? (<%c> != <%c>A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:\*.*\\Select File:ESS_DEFAULT_PATH[Oh...Destination:rwbBTOA-Decode File0%[BTOA-Decode File: %s] \\\xbtoa Begin btoa End N %ld %lx E %lx S %lx R %lx 0123456789ABCDEF\.B2A\\..rbDestination:wbw[Oh...BTOA-Encode File[BTOA-Encode File: %s] 0%N/Axbtoa Begin xbtoa End N %ld %lx E %lx S %lx R %lx L{"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz}!{|+w0a, Qmpjc5dۈ2yܸو L+~|-dj qHA}mԵQӅlVdkbze\Ocl=c ;n Li^`Agqr<KG k5Blۻ֬@2lE\u ϫ=Y&0Q:Qa!V#Ϻ(_ ٲ $/o|XhLaf-=vAq *q3xɢ4 j m=-dlc\kkQlabe0bNl{WeP|b-I|LeMaX:QΣtԻ0JߥA=ؕפmCij4ngF`D-s3 L_ |Pq<'A  Wh% of a^)ɘИ"רY=. \;l  tҚG9w&sc d; mj>zjZ '}DhibW]egl6qnkv+zZgJoC`֣ѓ~8ORѻgWg?H6K +گ L6JAz``ègU1nFiyaf%oҠRh6 w G"U&/ź; (+Z\j1,ٞ[ޮd°c&ujm 6?rgWJz{+ 8Ҏվ | !Bhݳڃn&[owGwZjpf; \ebiaklE x NT9§g&a`IiGM>nwۮjJZ@ f7;𩼮S޻G0齽ʺŠS0$6TW)#gfz.aJ]h*o+ 7 Z-U9 ^You must select a filename that|follows the SHIP naming|conventions.ship errorship warning[Oh.../\:[Yes|[No1) Yes 2) No Selection: _S_TEMP_.)$(wbwMail -s "%s %s%s" "%s" < %s (last) f more $%s cont %lu %s part0000$%s ship %s end rb$ $ f ship -morecont endSHIP-Encode File:Destination:\\\SHIP-Encode File[SHIP-Encode File: %s] PART00010%N/A%dKMoving Output -> Target%sPART%04dSource File #%dSHIP-Decode File (Quick Find)SHIP-Decode File[SHIP-Decode File: %s] ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/>?456789:;<=  !"#$%&'()*+,-./0123  [Oh...[Cancel [1][Copy Error! The source file|could not be opened.][ Oh... ]Copy Error! The source file could not be opened.[1][Copy Error! The target file|could not be opened!][ Oh... ]Copy Error! The target file could not be opened.[1][Copy Error! The disk may|be full.][ Oh... ]Copy Error! The disk may be full.HOSTNAMErandom-atari%lu@%sTMP\tmp\partsABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_[Yes|[No1) Yes 2) No Selection: wbw[Cancel.dsctempdesc.txt\..\part%dr%s.%d[Cancel...[Oh...text/[Cancelapplication/audio/image/video/MIMESUBJECT%s/%ld [MIME-Encoded]rbMIME-Encode File\\\...[MIME-Encode File: %s] --Analyzing Data-- --Analyzing Data--N/A%s%02d[Yes|[No1) Yes 2) No Selection: wbwMessage-ID: <%s> Mime-Version: 1.0 Subject: %s (%02d/%02d) References: <%s> <%s> Content-Type: message/partial; number=%d; total=%d; id="%s" MIME-Version: 1.0 Subject: %s Content-Type: multipart/mixed; boundary="-" %cThis MIME-Encoded message was created with ESS-Code 6.4, for the%cPC & Atari ST/TT/Falcon. The same utility can be used to decode%cthis message, or the MUNPACK utility (UNIX, IBM, Amiga, & Macintosh)%ccan be used instead.%c This MIME-Encoded message was created with ESS-Code 6.4, for the PC & Atari ST/TT/Falcon. The same utility can be used to decode this message, or the MUNPACK utility (UNIX, IBM, Amiga, & Macintosh) can be used instead. --- Content-Type: multipart/appledouble; boundary="="; name="%s" Content-Disposition: inline; filename="%s" --= Content-Type: application/applefile Content-Transfer-Encoding: base64 Content-MD5: %s Content-Type: %s; name="%s" --=-- ----- image/gifGIFimage/jpegvideo/mpegapplication/postscript%!application/octet-stream  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~Memory exhausted message/rfc822[Oh...text/plainmessage/partialmessage/multipart/nametext/ubject:ontent-type:ontent-transfer-encoding:ontent-disposition:ontent-md5:uoted-printablebitase64inaryfilenameidnumbertotal%sCT[Yes|[No1) Yes 2) No Selection: w%d Saving %s part %d of %d%s%d content- message-id:%sFULLmultipart/digestmultipart/appledoubleboundarytempdesc.txt\\\Destination:.01.*\\\MIME-Decode File[MIME-Decode File: %s] --Analyzing Data-- --Analyzing Data--r[Canceltext/plainThe file specified is not an|ESS-Code filter file.The filter file specified could not|be opended.The end of the input file was reached|without encountering the data start|identifier.Apply Filter: Filter?Source File #%d / Cancel = DoneDestinationr[ESS-Code Filter][Oh...1) Yes 2) No Selection: [Yes|[Now%sThe input file could not|be opened.The output file could not|be opened.SHELL<@DHLPTX_fnx   ;Zx0NSunMonTueWedThuFriSatSundayMondayTuesdayWednesdayThursdayFridaySaturdayJanFebMarAprMayJunJulAugSepOctNovDecJanuaryFebruaryMarchAprilJuneJulyAugustSeptemberOctoberNovemberDecember***z$Id: EnhancedGEM v1.45 $_ ASCII-Table   !"#$%&'()*+,-./0123456789:;<=>? ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Cancel A$      @ @1 @R @s @  @  @ @    C !W" >%j(#Z$&~#Z'\+Z?AGIscrap.txt @ /_:wuڷuڷuڸt:wuwuwu_/ @@ 'O<<|>@? ??'?O???O?'??  |>@<<O'  @OO''  ? ? |>@|>@<<?9L2O''   @@?@ 'O2wuҗuҘt2wuwuO' @?` 7o 2e2e2e22 2}2}}}o7 `,4,4 ,4,4,4,4/5UU\*5\+58\+858\+858\+85\ǐD=0H?g?<<???<s>>>>>>>>>?|?|?|??????8888`8888880888@ @π@G /h_4~e9 ?~~~~~~????y||| uܼ7_?OGGGGDG~DG~DG~DF~~DD~~DD~~@~~@~~@~~~~~~@~~~~??????????/oo۷o}~>` 7o;=|>?` ??7?o?????o?7? ?`|>=;o7 `??~0  0  0  0  0  0  0  0  0  4 W2 00                S S S S*  S 9B2eQjeQjeQ"1B 0 GOOG 0 0#'OOOO'# 0 0'/O__O/' 0 0'''' 0C,4($$BBAABB$$(,4C 0#&$OOOO'# 0 0#'OOOO'# 0   @@@@@  0 @@@@ 0 0  @@@@   0 0  @@@@   0 0  @@@@   0 0     0 0#$$HHHH$$# 0 0#$$HHHH$$# 0xxxx@X \N9GqCACGqN9\X @`P HD"BBAABBD"HP `@P HD"BBAABBD"HP @@P HD"BBAABBD"HP @@?0 ($$"D!!"D$$(0 ?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?          ??          ?pLdCLdp@@@@@0    x 8??  @@  @@<???<<# <#<???@` 0 @@   ?` 00 `@x???   00``?   @@x@`0  0` >?~ <??< ?? 6 0v 4 00 4 @@ |0``0 |@@0<????????>0<????????<0????????0,# 0 > #/>0,# 0 0 #,0`>0    >0`VfVVvv666vvV&6&FfFV&FfFfvf&&v&CLIPBRDSCRAPDIRX:\CLIPBRD\*.*SCRAP.*SCRAP."@H`@@r  0    $2       *&     P    &    0               &     ",8 $  4                 "L &  VV$  N      4     2  > $            $ <"2              $     *"  &   > (< 60,j                         &     0                   >6      V$     ">  &   > ( : @0,j    4    0 "              *             600     &   4      "  $  "`&           .   (  X "": n>< &&:*"x "6 ,    "                  &                             , "     4 *  2  $ D"~ 6 02&>:&"l.$4 $    $l  .BVNZZZn^L4 . f          (* < >   .                                        $  " & "6@x, 62  hFFJB 8& >.   0*          (           &( 6           &                 " 2 "       $:  " $$ &4 `DV ," *J<        8  " :J20(DF&$$  & &2n(*B"v @(N(2             &"$        &&  " T   2 , 4 "    ,  .                  0 *         "$      Dނ"dV Z v*$*,.b 2F ` tD.R,<*V $0              .   0* 8 (      D <*$BlDv>8f0N 6L & \( :H"  Z4N, > .* $<.,<,P<" z$  | D<  LFZ* 24T4 $"F&  "  "J$4>"   LL 8 D @ 2V"8  $"$ Z4R 4L` pf "66 @J.x@(F2j04$ 0 >&BLB0: * @6r($\  *< 8    "* &  "  $@  6\ "D  "@  $L$ZLn8 T  <`NXV (> (FF(& "$.N* R@"6 $$P  FT&R~4 ,  8$ " &>@  ,@&(~ . "& $  (f 4"   , 2   @&:   &0X "(Z(&,j"&$$ *4D  .,0 $( $Zz(j@<TJ0000                  8@ BPP$ # @@ PP0 P  [  b  k z'  1P       +@Uj'&  !-"D#[$r%& 1(0 )*+,-*.A/X0o'29)345678991 S2B  m( Or #   $MOC A@"   .. .J. . y. q=\   =Ax , / A"    . ". Q   / \/ . .q=  =A , / @84   Wn  W  F W  PW xW rW6VWG TWU-W k Q+!)"v#W%$$ #I&W(''&S)W **)G9,7 -.W0//.U1W322 1A4W6554k7W+887M>:<;<W9==<E@??>CAA .@ O  %?@AFch#<#%&'cd<ez{!"l|00= ESS-Code File Convert Segmentation Options ESS-Code... ^A -------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 Split... ^H Join... ^I Apply Filter... -------------------- Introduction... Contents... HELP Index... -------------------- Quit ^Q UUEncode... ^E UUDecode... ^D BTOA-Encode... ^E BTOA-Decode... ^D SHIP-Encode... ^E SHIP-Decode... ^D MIME-Encode... ^E MIME-Decode... ^D ---------------------- Process Batch... ^B 9K F1 18K F2 27K F3 36K F4 45K F5 54K F6 User Defined... ^K ---------------------- No Segmentation ^N Options... ^O ------------------------- Cycle Windows ^W Close Window... ^U ------------------------- Save Options ^S Save Options As... ^S Load Options... ^L OkayCopyright 1993, 1994, Michel Forget/ / S H A R E W A R E / /OkayCancelTarget File:Target Path:Current File:Status:________________________________________________________________________________________________________________________________________________________________________________________Source File:Source Path:Current File:Status:Maximum Lines / Segment = ______________________________________________________________________________________________________ ______________________________________________Options Preferences Confirm TerminationConfirm OverwritesProgress DisplaysUNIX Line TerminationTOS 1.4 File SelectorAutoSave OptionsSelect TargetTarget <- EnvironmentQuick Find UUEncode/UUDecode Include PathsSpecify SegmentsGenerate Table Default Conversion UUE/UUDATOB/BTOAAskMIME SHIP-Encode/SHIP-Decode Use Fast SHIP EncodingCancelOkayUser Defined Segment Size____Maximum Segment Size: ____K9999UUDecode File = ABORT0 . . . . . . 20 . . . . . . 40 . . . . . . 60 . . . . . . 80 . . . . . . . 100UUEncode File = ABORT0 . . . . . . 20 . . . . . . 40 . . . . . . 60 . . . . . . 80 . . . . . . . 100?` 0gN1l` 6`'h0`6&<8ha`62?c&&d~Lhc v08&&`q Lhgf8c&&pLlgf6f$ll' A5f$k?L'`6?&mLg6?&m8 Lg w&- L?w&7L >6g&7φ?I08 v 8v# pY7@`8pv#Yga?v' 9[60f'? `[ 6f/9[ 6/[ 06pf/[3`6l?& Xc6f6&lX6#c&FX61p"&c̀DY0b#18?[``p`b#[1a< b!yÃ@^! a800b p``NA 160?b `<80L0b"1?0Iab'I 1b'CC8cb'pB1p 1b&7cF1 b& 1dg p`b&1dgAz8c b&pl:c b&?8l BINARY Conversion MultiTOS / Mag!X / Geneva --------------------------------------------------------------------- PC VERSION AVAILABLE: [DOS] SimTel/msdos/decode/ecd64dos.zip [WINDOWS] SimTel/win3/encode/ecd64awn.zip SimTel Archives & Mirrors [95/NT] RSN! --------------------------------------------------------------------- * * * I M P O R T A N T N O T I C E ! * * * As a direct result of the growing investment of time and effort placed into this application, ESS-Code is now a SHAREWARE product. Users who register ESS-Code will receive a disk with the latest version of ESS-Code (optimized), and a registered (optimized, personalized) version of MasterBrowse (which also includes MasterPrint, AutoDate, ACC-Pad, ShadowTerm II, and a coupon for a free catalog from Suzy B's Software and a $3 credit toward the purchase of a disk from the Suzy B's Software collection). The continued development of ESS-Code depends _solely_ on user contributions; if no such contributions are received, this application will not be developed further. For more information on registration, please read the "Registration" section of this manual. * * * * * * * * * * * * * * * * * * * * * * * *-----------------------------------------------------------------* | For information about the distribution of ESS-Code, please read | | the section of this manual entitled "Distribution". | *-----------------------------------------------------------------* - CONTENTS - I. INTRODUCTION II. REGISTRATION III. INSTALLING & USING ESS-CODE IV. OPTIONS A. Confirm Termination B. Confirm Overwrites C. Progress Displays D. Unix Line Termination E. TOS 1.4 File Selector F. AutoSave Options G. Use Fast SHIP Encoding I. Include Paths J. Specify Segments K. Select Target L. Segmentation V. ACKNOWLEDGEMENTS VI. DISCLAIMER VII. DISTRIBUTION VIII. CONTACTING THE AUTHOR IX. THE ART OF BINARY <-> ASCII CONVERSION X. CLOSING I. INTRODUCTION -=-=-=-=-=-=-=- This program was designed to allow computer users to exchange binary files over computer networks that do not support the transmission of binary data. This can be done by converting the binary file to an ASCII file, then converting the ASCII file back to its original binary state after transmission. There are four popular methods of conversion; UUEncoding/UUDecoding, MIME-Encoding/MIME-Decoding, BTOA-Encoding/BTOA-Decoding, and SHIP-Encoding/ SHIP-Decoding. Since each of these conversion methods is an accepted standard, there are a wide variety of encoding/decoding utilities for every computer platform. If output size is not an issue, the best conversion method to use is UUEncoding/UUDecoding. This method is fast, reliable, and allows large files to be segmented (and re-assembled) automatically. If output size is an issue, however, the best conversion method to use is MIME-Encoding/MIME-Decoding. This conversion method is not very fast, but produces very compact output. It is rapidly replacing UUEncoding/ UUDecoding as the conversion method of choice, because it is has all of the power of UUEncoding/UUDecoding and is nearly as widely supported. Why should you use ESS-Code instead of one of the many other utilities currently available? Here are six good reasons: 1) SPEED - ESS-Code is much faster than other coding programs that I have tested. In some cases, the difference is as much as 469%! (Yes, that is correct.) 2) APPEARANCE - ESS-Code uses GEM! This means that you are given a nicely formatted progress display (which shows the output file, the input file, the currently active parameters, the source and destination path, and a "percentage" meter in both numeric and graphic form that indicates how much of the current file has been processed. Since it is a GEM program, you can access your desk accessories at any time, and set your options using pull-down menus. ESS-Code uses NON-MODAL window dialogs and alert boxes, so you can use your accessories or applications (or even other ESS-Code dialog boxes) while inside a dialog box! With MultiTOS, all dialog boxes (and alert boxes) can be iconified. 3) FLEXABILITY - ESS-Code supports UUEncoding, UUDecoding, BTOA-Encoding, BTOA-Decoding, SHIP-Encoding, SHIP-Decoding, MIME-Encoding, MIME-Decoding, RAW-Splitting, and RAW-Concatening of files. All of your file conversion needs are handled by one program. Should the need arise, ESS-Code can even execute as a TOS program (with a TOS interface). 4) COMPATIBILITY - While conversion methods have remained roughly the same, the Atari ST has not. ESS-Code has support for the ARGV command line standard that Atari has adopted, as well as support for the default command line standard used by older ST systems. There are versions of ESS-Code for DOS, Windows, Windows95*, WindowsNT*, and TOS. Support on multiple platforms enhances compatibility. 5) OPTIONS - ESS-Code has more options than any other encoding or decoding program available for the Atari. 6) HELP - Using the ST-Guide HyperText accessory, the entire ESS-Code manual is available at any time from within ESS-Code. II. REGISTRATION -=-=-=-=-=-=-=-= OR: Why should I send this person money if I have the program already? I would like to start this section of the manual by saying I am not going to try to make you feel guilty; I would like to say it, but I will not. Like many authors of Shareware products, I have come to learn that very few people register Shareware software. I do not know why; I can only guess the reasons. The reasons do not really matter, though, because the end result is always the same. On GEnie, MasterBrowse is regularly downloaded by over 150 users. The numbers are much the same for CompuServe and Delphi, and much higher on the Internet. Only 34 people have registered MasterBrowse, though. I hope that more people elect to register ESS-Code. There are many incentives to do so, but the largest incentive of all is this; there will be no further development of this product unless some registrations are received. I cannot say it any more clearly; I love to write software for this system, but I cannot continue to do it without your support. Users who register ESS-Code will receive an optimized version of ESS-Code, a registered (and optimized) version of the popular text file viewer MasterBrowse, a series of utilities (AutoDate, ACC-Pad, MasterPrint, ShadowTerm II, and a coupon for a free catalog from Suzy B's Software. To register ESS-Code, send $15 (Canadian/US) to: Michel Forget 12209 Dovercourt Avenue Edmonton, Alberta CANADA T5L 4E1 If you do not live in North America (and you are writing to this address instead of the address for users in the United Kingdom), please send an international money order or the equivalent of $15 in your own currency. Please do not send a personal cheque unless you live in North America. If you live in the United Kingdom, you can send 14 UKPounds (cheque or money order) to Denesh Bhabuta: ESS (c/o Denesh Bhabuta) 203 Parr Lane Unsworth Bury Lancashire BL9 8JW III. INSTALLING & USING ESS-CODE -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ESS-Code is a very versatile application, so there are several ways that it can be invoked: 1) The simplest way to use ESS-Code is to execute ESSCODE.PRG and then select the options you would like to use and initiate an encoding or decoding operation. 2) If you have a hard disk, you may want to install ESSCODE.PRG an an application. For best results, please ensure that the current directory is set to "top window". Since TOS 1.2 does not handle installed applications correctly, it may be neccessary to edit the DESKTOP.INF file (add the full pathname of ESS-Code to the line containing the filename ESSCODE.PRG). 3) ESS-Code can also be installed on the desktop as an icon; this allows an entire group of files to be processed in a single pass. Simply drag the desired files to the ESS-Code icon and release the mouse button. ESS-Code will _automatically_ decide which files should be encoded and which files should be decoded. Depending on your preferences, ESS-Code will also decide which conversion method to use or ask which conversion method should be used. 4) ESS-Code can easily be invoked from a command line interpreter. Commands are not case-sensitive, but must be in the correct order and contain the correct number of arguments. If ESS-Code is invoked this way, it will use a TOS interface, which conforms to the emerging standard among GEM archiver utilities. -uue source destination_file -uud source destination_file -btoa source destination_file -atob source destination_file -ship source destination_path -unship destination_file source [source ...] -mime source destination_file -unmime source destination_file This method of invoking ESS-Code is not reliable when used with segmented input/output. IV. OPTIONS -=-=-=-=-=- There are several options that can be set to control how ESS-Code behaves: A. Confirm Termination - This option determines whether or not ESS-Code will ask for confirmation before terminating. B. Confirm Overwrites - This option determines how ESS-Code will behave if an existing file will be overwritten by an encoding or decoding operation; if it is enabled, you will be given the option of aborting the operation. C. Progress Displays - This option determines whether or not ESS-Code will show progress displays. Other than saving screen space, there is no real advantage to turning progress displays off. D. Unix Line Termination - This option will force ESS-Code to terminate ASCII lines with a linefeed (Unix) instead of a linefeed/carriage return (IBM/Atari). E. TOS 1.4 File Selector - If this option is enabled, ESS-Code will display prompts in the file selector. F. AutoSave Options - If this option is activated, ESS-Code will save your options when you exit the program. G. Use Fast SHIP Encoding - If this option is enabled, ESS-Code will use an alternate (faster but less efficient) conversion method during SHIP-Encoding operations. H. Include Paths - If this option is used, ESS-Code will include the complete path of the source file in the encoded data. Thus, when decoding, the file will be written to the same path. This option should usually not be used, since it is unlikely that the system that will receive the file will have the same directory structure as your system. I. Specify Segments - This option (when selected) causes ESS-Code to prompt the user for the name and location (using the file selector) of each piece of the file to be UUDecoded. This option will mainly be of interest to users of Hermes UUCP or UPoint, who will no longer have to copy messages out of their news directory, and then waste time renaming the segments. J. Select Target - This option allows you to choose the destination path for any encoding/decoding operation. This option is mainly for floppy users who want to decode to a ramdisk or a second floppy disk and CLI users (who must specify a destination on the command line). For those who would like the file selector to always be opened to the same path (which is especially useful for people who always extract files to the same place) the environment variable "ESS_DPATH" can be defined; it should contain a "\" terminated pathname. K. Default Conversion Method - This option determines which conversion method ESS-Code will use when processing a group of files (such as when the user selects "Process Batch" or when ESS-Code is passed files on the command line). L. Segmentation - An encoded file can be divided into pieces, which will be automatically joined together when being decoded. This makes it easier for network mailing software to process the encoded file. You can choose one of the preset sizes, or set your own. (Unless you are sure it will work, you should not use segment sizes larger than 50K). V. ACKNOWLEDGEMENTS -=-=-=-=-=-=-=-=-=- There are many people who are deserving of recognition for their aid in creating this application: First, I would like to thank Steve Yelvington, the author of UUCODER 1.0 (the program on which ESS-Code was based). Another person deserving of recognition is Christian Grunenberg, the author of the excellent EnhancedGEM Library which is the core of ESS-Code. Christian is also responsible for the solving of the Falcon problems; his observations were absolutely correct, and solved the problems completely when I was almost ready to give up. I would also like to thank Ofir Gal, Traci J. Ingram, Gerhard Hoelscher, Carsten Friehe, Manfred Ssykor, the users of the MausNet, the users of the Internet, Mark Adler, Steve Wells, Michael Mies, John G. Myers, and RSA Data Security Incorporated. In addition, I would like to thank the fine people of the GEM-List, who have contributed greatly to my understanding of the way the Atari operating system works. VI. DISCLAIMER -=-=-=-=-=-=-= ESS-Code does not come with any warranty, express or implied. If you use ESS-Code, you do so at your own risk. Neither the author of ESS-Code (Michel Forget) nor any other party will accept responsability for any equipment damage, data loss, or other unforseen consequence of the use or mis-use of ESS-Code. VII. DISTRIBUTION -=-=-=-=-=-=-=-=- There are two limitations placed on the distribution of ESS-Code: 1) When distributed, ESS-Code must contain all files found in the original archive. 2) ESS-Code may not be distributed on the cover disk of any magazine without the express written permission of the author. This limitation does not apply to electronic (or non-profit) magazines. VIII. CONTACTING THE AUTHOR -=-=-=-=-=-=-=-=-=-=-=-=-=- If you would like to contact me with bug reports, suggestions, or comments, you can do so through the following addresses (in order of personal preference): Internet: mforget@elfhaven.ersys.edmonton.ab.ca mforget@worldgate.com Mail: Michel Forget 12209 Dovercourt Avenue Edmonton, Alberta CANADA T5L 4E1 IX. THE ART OF BINARY <-> ASCII CONVERSION -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ESS-Code is an extremely flexible application; this section of the manual discusses (in detail) each of the four conversion methods supported by ESS-Code, and compares them. UUEncode/UUDecode ----------------- SYNOPSIS -- Speed: Very Fast Expansion: Poor (25%-30%) Segmentation: Yes Reconstruction: Automatic This method of conversion is one of the first to gain popularity, and is thus one of the most widely accepted/used conversion methods to date. It is supported on every computer platform, and provides reasonably good error checking. It is very fast, but not very efficient. The main advantages of using this conversion method are the speed, the ability to break up the output generated into small segments, and the ability to automatically reconstruct the segmented output. The main (perhaps only) disadvantage of using this conversion method is that it generates output that is 25% (or more) larger than the original binary information. BTOA-Encode/BTOA-Decode ----------------------- SYNOPSIS -- Speed: Slow Expansion: Good (20%-25%) Segmentation: No Reconstruction: Manual While this method of conversion is popular, it is not as widely used/accepted as UUEncode/UUDecode. It is vastly slower than UUEncode/ UUDecode, but it generates more compact output. The main advantage of using this conversion method is that it provides slightly better error checking that UUEncode/UUDecode. There are numerous disadvantages, though, such as the lack of automatic segmentation or reconstruction. SHIP-Encode/SHIP-Decode ----------------------- SYNOPSIS -- Speed: Average Expansion: Good (20%-25%) Segmentation: Yes Reconstruction: Semi-Automatic While this conversion method is not as widely accepted/used as any of the other conversion methods, it is used extensively on HP-UNIX platforms. It is faster than BTOA-Encode/BTOA-Decode, and offers a nearly identical expansion rate, but has very light error checking. It can create segmented output, and has semi-automaic reconstruction of segmented output. There are two variations of this conversion method; the 'Fast' conversion algorithm is somewhat faster than the default conversion algorithm, but (oddly) has a nearly identical expansion rate. MIME-Encode/MIME-Decode ----------------------- SYNOPSIS -- Speed: Fast Expansion: Average (20%-30%) Segmentation: Yes Reconstruction: Automatic This conversion method is rapidly becoming more popular than any other conversion method to date. It is fast, but has a low expansion rate. This conversion method, like UUEncode/UUDecode, has very good error checking. It can generate segmented output, and reconstruct that output with no user intervention. One of the main advantages to using this conversion method is that it is supported on nearly every computer platform; UNIX, Macintosh, IBM, Amiga, Atari, and others. The Exact Figures ----------------- Conversion Utility: ESS-Code 6.3 Electric Storm Software (Shareware) Archive #1: COMA_210.ZIP Orginal UUE BTOA SHIP MIME -------------------------------------------------------- Size | 256,695 | 355,276 | 321,079 | 321,422 | 343,520 | Time | MM.SS.XX | 00.28.57 | 02.00.24 | 01.28.50 | 00.52.38 | -------------------------------------------------------- Archive #2: EGEMSOZX.LZH Orginal UUE BTOA SHIP MIME -------------------------------------------------------- Size | 166,715 | 233,505 | 211,131 | 211,235 | 225,937 | Time | MM.SS.XX | 00.20.55 | 01.20.59 | 00.59.41 | 00.36.45 | -------------------------------------------------------- Archive #3: LPR_UTL3.ZOO Orginal UUE BTOA SHIP MIME -------------------------------------------------------- Size | 117,911 | 165,181 | 149,080 | 149,412 | 159,961 | Time | MM.SS.XX | 00.15.11 | 00.58.59 | 00.43.22 | 00.26.52 | -------------------------------------------------------- Conclusions ----------- Each of the four conversion methods is acceptable, but your specific situation may indicate which of the four conversion methods is best for you. The average user will probably prefer to use UUEncode/UUDecode, since it is the fastest of the four conversion methods, and offers automatic segmentation and automatic reconstruction of segmented output. People who use UNIX often should probably consider using MIME-Encoding; it is very common on UNIX systems, and is rapidly replacing all other conversion methods. If you are paying for data transfer by the kilobyte, though, SHIP-Encoding is probably the best solution for you. It creates extremely compact output, and offers automatic segmentation and semi-automatic reconstruction of segmented output. The error checking is light, but this is usually not a problem. X. CLOSING -=-=-=-=-= I hope that you are pleased with ESS-Code, and decide to continue using it after you have experimented with it. I have invested more than a year of my life in the creation of this program, though, so I _also_ hope that you will seriously consider sending in the requested donation. If the Atari is going to remain a viable system in the future, it needs more Shareware, Donation-Ware, Freeware, and Public Domain applications to compensate for the lack of commercial products available. In order to make programming for the Atari viable, though, the Atari community needs to show support for the programmers of these applications. -Michel Forget Electric Storm Software June 9, 1995 [ESS-Code Filter] USENET Newsgroup Format #1 BEGIN--cut END--cut 1 1 [ESS-Code Filter] USENET Newsgroup Format #2 BEGIN --- -- 1 1 [ESS-Code Filter] USENET Newsgroup Format #3 BEGIN---------- END---------- 1 1 [ESS-Code Filter] USENET Newsgroup Format #4 -- 1 1 [ESS-Code Filter] Post v1.2.0 Format BEGIN -- Cut END -- Cut 1 1 ESS-Code 6.4: N E W F E A T U R E S & B U G F I X E S -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Please note that this list of new features and bug fixes is in chronological order; new information will appear at the end of the list. [ESS-Code 6.0: June 16, 1994] * * * I M P O R T A N T N O T I C E ! * * * As a direct result of the growing investment of time and effort placed into this application, ESS-Code is now a SHAREWARE product. Users who register ESS-Code will receive a disk with the latest version of ESS-Code (optimized), and a registered (optimized, personalized) version of MasterBrowse (which also includes MasterPrint, AutoDate, ACC-Pad, ShadowTerm II, and a coupon for a free catalog from Suzy B's Software and a $3 credit toward the purchase of a disk from the Suzy B's Software collection). The continued development of ESS-Code depends _solely_ on user contributions; if no such contributions are received, this application will not be developed further. For more information on registration, please read the "Registration" section of this manual. * * * * * * * * * * * * * * * * * * * * * * * NEW FEATURE: ESS-Code now supports MIME-Encoding/MIME-Decoding. The MIME conversion method is rapidly replacing all other conversion methods; it is not as fast as some, but it generates very compact output and is extremely reliable. The MIME conversion method is supported on the UNIX, Amiga, Macintosh, IBM, and Atari computer platforms. NEW FEATURE: ESS-Code now has an expanded command line interface; the previous command line interface is still present (for use as an installed application). The new method consists of eight possible commands; the commands are not case sensitive, but the commands and arguments must appear in exactly the order shown below: -uue [source] [destination file] -uud [source] [destination file] -btoa [source] [destination file] -atob [source] [destination file] -ship [source] [destination path] -unship [destination file] [source] [...] -mime [source] [destination file] -unmime [source] [destination file] NEW FEATURE: The entire ESS-Code manual is now available at any time from within ESS-Code (if the ST-Guide accessory is installed). By making the online help external, the overall program size is reduced and the quality of the online help is vastly improved. If you want to move the "ESSCODE.HYP" file out of the ESS-Code directory, you must define the "ESSHELP" environment variable; it should contain the full pathname of "ESSCODE.HYP". ST-Guide is available on many FTP sites, commercial services, and public access bulletin board systems. If requested, a copy of the ST-Guide archive can be placed on the disk sent to registered users. [ESS-Code 6.1: June 29, 1994] NEW FEATURE: ESS-Code can now handle MIME-Encode/MIME-Decode requests from the operating system, or when ESS-Code is called as an installed application. Valid extensions for a MIME-Encoded file are ".M", ".MIM", & ".MIME" (case sensitive). [ESS-Code 6.2: October 6, 1994] BUG FIX: ESS-Code will now work with the Falcon (in any resolution)! The solution to this problem was presented by Christian Grunenberg, the author of EnhancedGEM (the GEM library that ESS-Code uses). BUG FIX: ESS-Code will now move files to the proper destination location if SHIP-Encoding is used. [ESS-Code 6.3: November 11, 1994] / Atari Version NEW FEATURE: At the request of several users, ESS-Code has been modified to conform to the emerging standard followed by GEM archive utilities. If it is executed directly, or executed by the desktop as an installed applications, the GEM-Interface will be utilized. If ESS-Code is invoked as a TOS program (.TTP) or given arguments for the CLI interface (-uue, -uud, -ship, -unship, -btoa, -atob, -mime, or -unmime) then a TOS-Interface will be utilized. The TOS interface is not as powerful as the GEM-Interface, by any stretch of the imagination, but it allows ESS-Code to be called by archive shells where it previously could not be. BUG FIX: ESS-Code will no longer explicitly state the path of the ESSCODE.HYP file -- instead, it will merely pass the name of the file and allow ST-Guide to locate it. If you do not want this to happen, create an environment variabled called "ESSHELP" and set it to the complete path of the ESSCODE.HYP file. NEW FEATURE: There are now three menu options in the "File" menu that communicate with ST-Guide. "Introduction" will display the introduction section of the manual. "Contents" will display the table of contents of the manual. "Index" will display the index of the manual. ALTERATION: The "ESS_DPATH" environment variable has been changed to "ESS_DEFAULT_PATH". [ESS-Code 6.4: June 9, 1995] ==IMPORTANT NOTE============================================================= It has been nearly seven months since the previous release of ESS-Code. There are several reasons for the lengthy delay: 1) I attend college now, and time is hard to find (even for something I love as much as programming). 2) I have been spending my free time writing the PC version of ESS-Code. It is done now, and has been released. For those who are interested, it is available at: SimTel/win3/encode/ecd64awn.zip (Windows) SimTel/msdos/decode/ecd64dos.zip (DOS) I want to stress, however, that I will be updating the Atari version of ESS-Code regularly, exactly as I have in the past. This version of ESS-Code incorporates many new features and fixes some major bugs. There has been some speculation that I have stopped supporting the Atari (presumably because of my long absence) -- that is definitely, absolutely, incorrect. I will continue to support the Atari for a long time to come. One final note that I would like to make is that the Atari version of ESS-Code and the PC version of ESS-Code are 100% compatible. I mention this because until now the PC market has had very little in the way of standard, UNIX compatible, file conversion utilities. You should now be able to send files to your friends with PC systems much more easily. ============================================================================= BUG FIX: When decoding multipart MIME-Encoded data, ESS-Code will no longer become confused or generate false output files. BUG FIX: When decoding MIME-Encoded data, ESS-Code will now show the name of the current input file being processed instead of the name of the current (temporary) output file being generated. NEW FEATURE: ESS-Code now has an option to allow you to included a character table in UUEncoded output. This was always done in the previous version, but now it is an option. NEW FEATURE: A "Quick Find" feature has been implemented in ESS-Code. This makes it possible for you to select the first segment of a multipart MIME-Encoded message or a multipart SHIP-Encoded message and then allow ESS-Code to automatically locate the remaining segments. NEW FEATURE: The "RAW Split" & "RAW-Concatenate" features have been replaced with a new set of functions that will allow you to split/join binary files as well as ASCII files. NEW FEATURE: In TOS mode, ESS-Code will now allow you to respond to "Yes/No" questions with a Y/N. You can still use the 1/2 method, if you prefer. NEW FEATURE: Do you receive encoded files in electronic mail, or download encoded files from USENET newsgroups? If so, you are very likely aquainted with the frustrating process of building a single file from the multiple messages. This must be done because the encoded files are rarely segmented using a standard method. ESS-Code now has the ability to create a single non-segmented file from a series of non-standard segmented files based on a template of your choosing. This vastly reduces the amount of time required to convert files. There are twelve templates supplied with ESS-Code; if none of them meets your needs, you can create your own using the following format: Example: -------- [ESS-Code Filter] USENET Newsgroup Format #1 BEGIN--cut END--cut 1 1 The first line ("[ESS-Code Filter]") is used to determine that the file is, in fact, a filter. The next line is the name of the filter (a description). The third line is the "start of data identifier". It must be a unique series of characters that appears immediately before the encoded data. The fourth line is the "end of data identifier". It must be a unique set of characters that appears immediately after the last line of encoded data in the segment being processed. The next line is the "start identifier count". This will usually be set to one, which will cause ESS-Code to accept the first instance of the start of data identifier. It can be set to another value if the file format is exceptionally strange and requires it. The last line is the same as the line discussed above, but corresponds to the "end of data identifier". You can use any ASCII text editor to create a filter, but please be aware that filters _ARE_ case sensetive. ALTERATION: The messages shown in file selector boxes have been changed so that they are (with any luck) less confusing. If you are ever in doubt, consult the manual. -Michel Forget Electric Storm Software June 9, 1995 [ESS-Code Filter] R.E.M. 1 1 [ESS-Code Filter] SimTel Format ------------ Part -------- End 1 1 [ESS-Code Filter] UU-XFER 2.0 Format BEGIN---------- END---------- 1 1 [ESS-Code Filter] X-File-Name Format BEGIN---------- END---------- 1 1 [ESS-Code Filter] xmitBin Format BEGIN --- CUT END --- CUT 1 1 . '.. '. `.. DEUTSCH `ENGLISH `MFILESORTSYS]hICON RSC}README TXTZCONTROLACCj. `.. `ZCONTROLHYP,p`ZCONTROLREF,p-dZCONTROLTXTp/LsZCONTROLUPLpLXHDOC,[Titel->Main'Diese Version English Version Orlando/Florida wCopyrightSharewareUK Register"c Free Update ServicepR Preisliste$ Entstehungsgeschichte%? Installation&@ Bedienung des Programms Hauptdialog&^r Popup-Dialog 'Optionen' Voreinstellung Modul-Auswahl(  Selektieren eines Moduls$  Starten eines Moduls "  Tastaturbedienung.# Parameter-bergabe an zControl"$?Anwendung anmelden&AV-Protokoll(Drag&Drop)Oy Iconifizierung+Die INF-Datei,Debug-Funktion..0Wo wird die INF-Datei gesucht?*0Undokumentierte Funktionen1KONFIG.CPX2LINK_CPX.CPX3F DFREE.CPX(4N!Das Format der INF-Datei06L" Das Format der Datei FILESORT.SYS:'#!Bezugsquellen;$"Danksagungen>%#Probleme@^&$HistoryCE&%IndexF'L0&|S*)^S`Die Anleitung zu zControlRalf Zimmermann $VER: 0.23 (27. Dezember 1995) -i +zz -t3Dokumentation/Utilities R)\.FKIR.<6m9Pm(9&6\ Ibf^B9rHsըpb,\_-R/0\JBrpU^ݿg~HˁJ0=oMn,?AtE^2%<[4@-k8ӗkUZq;DAmЁ#aKIiQz^[W]`oU߇6a8Eq휯tJ\Ky22'?MiEjݰ8Iy³#-#cICqYf(h9/>ꊣb&u*RB]FC2}e5^dVZe]CnV*:.өxJv´*)H`R^g4C9:R(^hu]ZwmSe_>嶢dt" J&nO,֎v`UA,q"CJ ܻJxJ|>'Ih*K-yj}S3xoO++2p%΄h1i=0V롨NsGZ9yN1| ) wɒ\u :cxD 6SNP>SBJ|d!Q" ֧<}8CmA@Ua S27yLFilTFB kSn@sU8@9e.HE%ˡvUlL餼D0 (Yo%fUO8KdEeV PX Oec\N\aߨ<BGx>aIKX{F'D0&gI}^TѴa.=`\?CKWZqn^vr[28e3UBڹǂHUbBwfS[xo@2THA  @-5+iq }pL'd1E>zs±έjoOV%0秲t QG<ޯӣcgb&H [ @\W"yHd[o)qՆT(1yuLI c]+Gޕ A࠻~ӆYa˥\Txŭ`xhr>nlh,r(xwxTyo5MhfGY`V)#PSLVvՓ"FU]k-LP/8ښ3@ow7GGߜ ,i]hfҹ<^SqHqb=0[=&62n}S[v3?`02B +Qfao%CI2ݩQi4b.{#`>dQIacXx>ch$% D1>#ٗBƵkEc= |:)ˏ"cq HBT+3mo@GV;GU/NxZ g:YS&z Zvȥf.:' "#wnn:S.QL|Wxa3E$B=?T{V7]Cj6pMW[a<(o$"ddt!ޘn?5M,QABfDvTXKjA[mfQLڤr{a8r}> ֯C,}ذi.P++VI›VY&2²H ĘWD|烜Cb͵fRG?-\mŵsiI1$o2\YڂM٭쓪Ѵ6'N0~ͮ9-p:5_"X3Me+_D4emj7ZXd.=|0iL5|g)XGNqHMӋqO!on dFy $%4*SQŠ1W(V9[dNIo> ~ QsgRA)e?,4ܠA?F3A/rUcD Wӝ' ؎ 1zK:mg;ā5N@VQp'[ ZJTnAixf(fد|cg5F3Ip+QmʲYzA)VS3+V凙a9_Jacc]m\ &pԩIh1]QP;|k<= o)ۨ}Nt J2!w\BZh3@L>%8/ gʦlnɆƽ[]-k81o427B6̕lGvN5[# Iiwĝ@r2ݾ Bq҈ +Y/(Rmv}ro ̧͖x$D @PױxCS-L%cն?l"HA`0,9$pnձ| /i[I;W~cc#Aw5lbgHJjzF쾓Omf1 z3$j0xqgkl,5gg+=SD7׈ȟ\AH{|'? 9٘oX!q_ AR#_#879x}hY#<61\DuK(!O2)tp|L'괛B oRԮ?;Pݓsj1Qm>G*Hl@ݘ+v NZҦϞR||kY~>kf>8B;L+"9EʏN>ׁ6.+ʗFgϫǯ68ю&/9Hje9y*gBkѕ& JAYWuMze=p$AO6j|w c3/b(\~Y3N.OHKUv騣j{YX'[RB4*[6e]HEdymGEl 3{ؑKۉ#~u^^>s{ ȉc26_ ȱtLAy7q.!>3UaLHפQہ`>H!#~T\,"%?R[NffqAHPuL:Jkړ8 `Uh1 9:AʬSkֹ؛GaԻ0ƿ?"V3m'uGID<3Bv:{rg pB/W-)trXqsKBtHM h  X{9=y;8*TZt8֐N9d%;̭ݶezml̶e+J-sX*9- 0["K^?zzDjg6fn:cӞ?\ZD!;U4|xMS,1~ƻUQK*\~|3r?|'~U}"I\ sE:qV^iȱ]gcvԾd7c .f{]V! 1w:NRHTVy-7/v(#S<=z6+Z`5sW#;oQZePfO>lĘSv..oGC[ MSkžxY9E]CKaTPMÓ6EӗCjX(e"^.X K c+ WoJXQ8҄vńǽ/-NmnM@'#Ԡ&S'olP (?4~y=OW'MnM,BKYd Kjm/J[_DQ(@/Ic!tY怨#a ;Cabv{$Ńnk5TseTh7 ,]uX70=sіj%'ݸ˗}=J!Ũ㻙5Ze ;f֔#xG`.cLuN &$4M_xB>3ktEpTTZ[l7t' [}U> 1}8`Z򖏀wgsX?:yj&i.0yOP뒰 Qi{ZRJv)#3}bPxI{ |qw(`4w2N?jġl&CR5wȖ&4|R:*K\]ncwkg#gm.6k~? wΥ^VޟUՆ^O&GeÒ3rTr6\+r)I6}dJo*M4ûOI \ 瀶)A"* ?G`ܒ)t@*YcPAPx1Cu(qAk]J9 ZE<) JQ- +U5&_ֿz! 2@vJtIS*¡x%Ϡ.El=4$` ` ٷ`\h (Ӽ3$YѺ2WIOGOІ}1F=vƨC)a>3?N4HmmFv7L{/"002bweΥ>v֠2:YB0d8ߏ@m#|g b- @=zgԃ#l5}(#TfZs4XWztWmZ6F6'GsY[uf+>%1H:{"T`G/@d^#ITH%Z 3C1 pFޖF%Nz<յywP^cK'Rˀ[v6|:V?`4 2н.^:q8m1TJNC)svGj^軛'f-Xİ80h&l(dV\V4(b+{$1ķU WqrM T6&}Gm O2'ॼAw>>>[B.26Ȩ@bbz6ܝ!0jE푰Ű"ugΞp/ 6 DI=W"X>qT:Ex#曭 ᏶ GOƝ5:rmcۭg 7NDzfc;E`MFr/wTVѧH3}::?]{::kZyދ Y5\l5A'6NYθ6DoYWFuHu83 CD =THa[2 ]GfmaCLGͼx.CkaGZќ|m"gtε;eF acz6rg#qV>aD3=r*[YI?r}w*|gvaFR$1>L "MNbE(4vG`biNH6 Ohlky>Pܒ>={WzrEq*-Թ嬃Lgbי)oʝۜX!P#Դ?Ths A" +V2_]F.#˞ẖct{h|* ۇ.'Նbsclڐ77'% ip&?fBSc*SȟQC;ʭ/{LN"_' ʎHl:}n^"WJX~M-l!=`[vlǜ@C o+'LKU!~M "6'x#Rה(q=%CjesKfj⛳/m.)<;3 QHzc"SLjAQ2wŞ~D*Z^g s 6d+Ku؈g[D*t@Եޒy9ӷ)EMP1JW%~]QWcz6c9L,3@BEX[\l]gzWwBYҐ6a|n^oy;W4HۭcQmVdǸ藥_| 2ιrOT|PItY7.s]miIBBkvy1qW\. ҉RCm-vD*=)ww!RYr¼&̌73kVuuXV1k#sa 8 B1j6XwTɽ X@[nv6e"Y 7łPHCЙYXF;4ՀX+Ʊt`䜞{nMAO@jb[q8[N$~)_B…\k^ b!+B ۃp Œ.?ӛ. *17&5]MtpXl>kWYN&07-VHE (0 >>S)ɆɄ)N66l\-)pAq(w*0rNVi'oO%%˛vpϓ#tC 50XFIxz-9?pqz\T iNĎ*czĴNi'_h ZlM :h4+IJfܺ?)_cB2+ ̙lfŎ. R(K3@S&W]dķ3-CbG}1Ĝy#ѥ #7*iPe1)5Xlk=ƅjV{yg.m6 66["j.b8Ӈ0i^IIӁ.A&i_yh܊xw H* e`c7⌐@h8/Ѣ0HY Dl$T-R~^m^jr И[]sJ ˣΊ E+O1oQZ8#dl)T1SU NKc#b;sOh?iH<|4d-QڞAf ԯQL0!N\%:$%?!-SS3hvwitϼv_tS:Ï+2w\8DczHi}E`B Nپff:!p|FiӺ1h55aMߵrN7C38q+ZS̿7="Kk`hVcA#oz=z>~MeOʦ,*zTͦ&I|E^-[E&GҠՒЌzsa=Er*Po. h?&6԰v:l?:C&f&E">4l7T\M@iv.j۸1@oBz<˒*?X^|> `f?%|&9sEKaw5U]@|iƅҗvׁQtlCov5qMIY`ld7|̈́$[9DVspTFì``a/A4.*̹&腸b%Kh"DcjDg 2+P5<4w"FyAkFV,pⷨ\F`X[\{rArm<:⬳?!bZwX)nF5YPNwƢkxcFK1Vz UGP8VP]>cXpo`o* 4B;ǒ,l`;cweҡ̐ұ*$ƺ!F 3䥓)%2CmϦ X *IʺHCNLvjRϘ?pE0B7 L zէ֯: 7̚> ςM}-o'*{X(XZŕC9/RnJ7Wힿy Zb̘c+]?$+X srqÊKT(c_1js\$ꓲ/܆\.s68f0.K#*؉'Lun\$ (`&7vЛWLZ1[-ۭC"umÍ 72@̤sm,l^L \L]us 9Oʓo xj7qi+7ow3h+.R7OI\4!B16B砞jcG1UA2t(gj`׉Nۚ&,EaIrdf` +-k7d:X N{+}z <tU晫+#f?(„.BǻgRXK_tp9RF#N3 #WFm!a&K&'1qdwXێemo=,6(slY`7H;6>,yFo#S__ݿ1Er- B&plH=CAɫ}gLTI.ۍ&cp ^&FbB6brO CI\ZƥO/xQ UDDJ8)՛^N؛6^ >$Zʶ={zsv?]5IF׹wwI#0xDIAl#|c0mO4ȍ`H+ vYgFė 9dIQa`6{Izν`7Ux4"]uwIjBjD <ߣZr8G?̑3zkn jHRr2`]m a1m~jh<a.篍4.K)"Qff((]Ľ >ax8%W&h4}SPjnt"%k1kرpbն*cxCcہ܈"]ePZkh᧶|O=MBݏ3ޒKb4\hH+ q)pPM] $Y⽂R A$ B8WX*gAnJc[([G+ ~zrzRiċ}+%6aPۮ,*YQ#\z:$B )Ӊ\\u_LXeӆ<_OѦa~̶${~o'y 5&pY4TNå" :K UN’=܁` hm˼4nZs2G %0Kg.pa߇6̓mF)>8uEh'X(q^Z<[e  [*:H':wMtLwv5 iZPYH|էg~6Qij!GPs|wF,;_L ~fqt;FWCo/qXߢia{>}IW3c,<9̑;s!gnlqta~*!Jcg գ }u3(VڹtU0;c`}S(ogɚͰv)X{?fX'Ev=Z<>Qٻ0,?iËGV"k;fxzgdrj+oֻ?uH*A{kzۍ*)LrM~eW-Bk{k0Q!ZM'# 5'χN7JZ~+Zo-+klv/FNoEW qZ-Lݎ#co6lvM?"g9|"d d&#Ϟ(OH;7F{G)>ݏ7e >dSsR +d/ۄO1C"_]ė+^VpV wII֖Cmd'Υi9#RWjZf%OVoڕ#n6Ku|j'sֻ٣{Qq$"AQdC1s~rΏq-]@v1wu#w<5A^BWꋰ؃Z"!̞2BD;#G~YwHyBdg~ y®`h1&BN9]c^ZaӨ*PWV}OL Ŗ!v/qc<W JmƝ ?$law+@9 .2*&םҞ!|55ur]$%ط4\|5+sW; %3u2%w grzf8XN&R} /\(;XpiO =OhԻ`m2>^eP~W4MHi T@O1*-u_>+tR?DgTF* <6p%{vhׯG'~N/cߘbE<0b @BR4G!hL?%%/w|`IX;Z7\&o뉲FPs 2 d(R"~Gp2(tC쑭}BW.w74P+FpG100Kh ;UÂR<^:}iW6\ vic}G0͗N|pԽ,Zr8q_ka?r,gj|6UP39ӟa۟2ϛ7+f%6 &O={5mݓ5IDAPxIysF߮M}wMXp31kFӗ90.-GhKIA0@+}ӷ}n $f5͊: [&kRoQ54vمb8[L^ʀĴ(NH]Φ}[rMDI\7̧fEIQG2 ~SkEк5I6brE:LIסvڃm.պ2T]_#r S3a N8`6 Ap{{nOB x?{oSyǔi915Rٺ`~l`m3$U9#6ܘu8Qо=Kw%L4Cxΰ ܌;_Qf/-%pUg\UH_w6?bcA>47s_0H{F @2w~RN~`AoȶW *Kg8nն[K,E/Dsڒ6!T~ns| r)oE]z9b `k hS}KkfH0Al3 :?ϔBƿkˆbaDc4ch,E\iob6k@封>% NĒ,owBҰ:O>ijN:j/{"Czq#ݑP.X0=E1Pt9H??X%]r*[b/O5(@:/ ă .wUx׹ǔHP?$vd6 lz(7fh v4OAZk `d &ЪTԠTQuxd&p ٌlLCkzHښNC!!f0|DY3HZ/)$w}vgndq!37vla_ [IYl_zFo \ ^00˖I3SYƗcVq4}f v 3 DHT*1c?XHl!/v6pBP]֖@4E S syqo'l@c̤-D uFMc.'2# ETe_]tLS^T(13aBU!pRP;\K)<{+n(z);[MmmN6ţ0>Y\)%SRXli)pO ׀0ܾwDqܫK+46396֜D4H" +u us&-\| ږJmNԑhO&jTUv4y^C *q^v?,3{|+Mc'\`,Kta)=pz8X**Ŷ܇xuU+#2Uv4lWݍjg-ioO8ӛ:^>VolÎ$_/ɃAp ^o(&ۓ;p[7{IA&iIu|o*BCUtxyp1[ڹ#nY =xtkϣׁhr&os#A>?<# j"H0@+SdM!j _$$DNd -RsjJxb*3 O26jD0!$\y]@v!ޝn5D(x3OƓ&ے*¾z*|je3*o&Ap~p^|H<'E{DRg u!3AE'y~gRUկ߬Kօ~h BӟN?ǥ //6][W.6(f.tr7Yv΋q//CubHCS|^ (M܆=c;T99p3ݘVVj*NZمc'Ax.O s}Q\zu[ޭkhh0 Hֵ޷yvE.ݺýzۿݶЋ93qj迕4nZ!}՘vŰv^C/?t~f gBSŐ*WVX G8^0^Us% \la "  Ҏ*Ն6i,$'V۵ZpokA^/WexZpC DCfUĿQKU&yLaz_YH4 c0y0=\9DV Cuzf;4̀*'ms3|7 Qp}˿ OJ|U2(Hve9T# zH^ |0L^Zx1p ˆRL}R6_T"Փn&v^"/(4c::8|~ipN,` $^ؔ,L~4K.pb /PN& / Ǯ:tHxe/)lKsؤ/.tcev]l [.Vȋ{K.p,/󝑗 B!|YZ3=-/h.G| L9iڧ+.BT+/#Ɩ_l,:"f?Řf>77}!q,Ss lj#teL 9Jئ|)G|,| K$dʲ)9NN# 9ϲo҄HnPBⱯ/?s3B s/G/#/Οc;xBգ.߈\rzyĜǫiQ; |»Jݚֈn,h`fՒ)ix NJveۗpa,M52/q4ֶ쓊Py^[Bn;׃ޝ^d`=Z˗5vLH;Q̙>3t$1 |Jk~"QͧNn\siJ=8K J>޵_w<\n1?5W濸bD+HTi@:LDTs ωGqTdl^>"y `oj:AEH>'J@WJ<.>hDQN$[y >"*7غ%7^{[Gq!;@pkF5Vu̲/}`g>A7%3 }f9ccn Pg-e`ˋ u>){ÇAK@5'IR R) OVi)m@eWExD)4AE4'qht.dt'6ރmURUX`:ΒqAUK;I~j dT. 1gt:fQ c? H5KϡD5 ѭu|5)GL"z)i暴9]ye?;z|W6*P6gxl2; eu_Tsp|sϪ X0`0@;3e rS- AV5uɹ9P~Y`AX`kf{Y]ܳٶ&!HzQ|4aӐ CH@KPV5ZN0fYv:gF 3H |֌u1~FȾS0zϕk*@5̱r)PIa σW 5"ì 9v)Y,6YY64[/kGڃ?iEέ:.uP%"[wH0t%yZW􃊐w  eH8޺ Tc+An38CDH9N&gX8J=HS+Y hy% ^s'klLP8iK_ȁJ@0hgxR5AZ@3^32![!s? ]@a0<)p k<ȝqpF%pj2S1]澡]>CH5:Ew|=}yOH;\ϗrH?Sgosz-Qp(&=-q·ᑒ@ٝuwem+ )!Q+D#|7:nZPv9ddfݽ$ۛTRDA}oA"|{ۓrF̌g2< w ǹ~"7z}`Q<}82 {O4OkxX:h=<BA(=޳f6H 'JB1j< G Z ﯅ (p_Wt=;`&\Ӽi<[d<,=eebq -$#pi$E_Xb"7 -hK :WUqG-0#7g\VwAgi =J `j> n{|h2lqbz mf3'eʙ6U=5s˩S8[j 0++;Xs'f:Cw@rUUTuRN|PmmQw5o7%duw0}\Wsg rF2{zQE_) u|[xOc.x:dT.B<;LAq [C.U3s ʪLyMX?Pk 6r""6Z`"ʟPg@syILeVǏ B4ɒBe~O|7YUld~/ogclfjQ9ei^óyja^cF-`>C gbך?LOImWx^ȫeng4G6ckY ~"Ի?. wr|H; 1 _~(e~lWt-=M=N{K_er2m5\K.ix.WB=LL&ZCqyAY\ɍ/+1|⃔&O9 /}t9/7 4 dʿc}0*ۙ=N*<%|DlFLk`v56d2qSMUA<'4V /A`y/ `}s?G7WՈȼǧfr g M F=T<"w^j&x@r%S4 lT-Q\TQJ*.SN9Bst062sU+/ G1+=ϞN >TcUVYcg߫y)u_]`WbKga8{}y3/>{2UA6> #5UijYC$THB}48d :KcC:,rg0eyPRa!'4 vI_&Pta1MyDu0s\(1ep?8viu5*5RT`ey˿U07>HT>}F\" ~.֥[yӽ Fx@= xz|H4nf͞kk]1JGly+ &" x7YeTC (@g*(klz&Pj5JW*٣_5^;PK5u:/ `A=Yz5rV>)4-<"!| 1?~X?(d?=>y>1?-ǐF?ȩSy.gpK{V=z<ʲ hxFhK7=V[Yeo_*;{ݽwX6j޻Yzobm;z,d{L{R:vIzN[uן路Dߪ /{_7WʿJ?XLG˩Ƚ+C<wXCq79A y*tKXN% W5kv}ZeKu1'; -zVv9^DF1epq[3X8yuĹxO e_ܫfշ7pm*ݍ~m|w_cZշ[)(IR*$eeKV<^1xFP ۩vflrp?=gߪWT&tM3MMsNNUuNeD7Y*U֛¹Q>Xwm,NRL cyL?.5y;ayNOyT?@IτNa^xP霮>J;L[~D+pWG.0q&(A+; ܉al9; ~"j/p~/[-"hj}ɏ$Q:"hHCjH2iމdysdt[=mV 渧vikڑa0vݜ=˚n\SȗCMPvJ\R 7zv\EZ"So#(F<4\@{yᢙ0[ [ |=HREFPT ZCONTROLDie Anleitung zu zControlTitelMainInhaltsverzeichnisDiese VersionSingle-TOS English VersionOrlando/Florida Orlando Florida Copyright Autor SharewareRegistrierungCopyrightEinschrnkungRaubkopieDisclaimerUK RegisterFree Update Service PreislisteEntstehungsgeschichte XControlKontrollfeldInstallationBedienung des ProgrammsHauptdialogBeta-VersionLaufschriftPopup-Dialog 'Optionen' OptionenVoreinstellung Sprache  Deutsch  Englisch Modul-AuswahlSelektieren eines ModulsStarten eines ModulsCPX-FensterTastaturbedienung TastaturCursor-Tasten!Parameter-bergabe an zControlAnwendung anmelden GeminiAV-Protokoll VA_STARTAV-ProtokollVA_DRAGACCWIND Drag&DropIconifizierungDie INF-DateiDebug-Funktion!Wo wird die INF-Datei gesucht? HOMEEnvironmentUndokumentierte Funktionen KONFIG.CPXLINK_CPX.CPX DFREE.CPXDas Format der INF-Datei CPX_PATHANZ_DISP_ENTRY COUNTRYWIND_MAIN WIND_CPX DEBUGSINGLELOAD$Das Format der Datei FILESORT.SYSFILESORT.SYSBezugsquellen Maus Modem MailboxAtari.News MausNetDanksagungen Probleme Speicherzuwenig SpeicherMagiC-Problem HistoryIndex Die Anleitung zu zControl 0.23 27. Dezember 1995 von Ralf Zimmermann Am Ruhwehr 35 D-65207 Wiesbaden dl1fdt@amsat.org Inhaltsverzeichnis ================== 1 Diese Version 1.1 English Version 2 Orlando/Florida 3 Copyright 3.1 Shareware 3.2 UK Register 3.2.1 Free Update Service 3.3 Preisliste 4 Entstehungsgeschichte 5 Installation 6 Bedienung des Programms 6.1 Hauptdialog 6.2 Popup-Dialog 'Optionen' 6.3 Voreinstellung 6.4 Modul-Auswahl 6.5 Selektieren eines Moduls 6.6 Starten eines Moduls 6.7 Tastaturbedienung 6.8 Parameter-bergabe an zControl 6.8.1 Anwendung anmelden 6.8.2 AV-Protokoll 6.8.3 Drag&Drop 6.9 Iconifizierung 7 Die INF-Datei 7.1 Debug-Funktion 7.2 Wo wird die INF-Datei gesucht? 8 Undokumentierte Funktionen 8.1 KONFIG.CPX 8.2 LINK_CPX.CPX 8.3 DFREE.CPX Anhang ====== A Das Format der INF-Datei B Das Format der Datei FILESORT.SYS C Bezugsquellen D Danksagungen E Probleme F History 1 Diese Version =============== Das Programm ist noch nicht ganz fertig! Ich wrde es als eine *gut getestete* Beta-Version bezeichnen. Ich habe aber im Moment nicht sehr viel Zeit und kann nicht absehen, wann all das eingebaut ist was ich gerne noch machen wrde. In der letzten Zeit haben sich die Anfragen nach diesem Programm gehuft. Ich habe mich deshalb entschlossen, erstmal diese Version an die ffentlichkeit zu bringen - denn das Programm funktioniert eigentlich ohne grere Probleme. Sobald ich wieder etwas mehr Zeit habe kommt eine neue Version! 'Ohne grere Probleme' heit in diesem Fall folgendes: In dieser Version luft zControl als ACCessorie nur unter Multitasking- Systemen. Sobald man versucht das Programm z.B. unter TOS 3.06 als ACC zu starten bekommt man beim booten einen krftigen Absturz. Bisher wei ich leider nicht woran es liegt und kann deshalb nichts daran ndern. Ich selbst benutze MagiC!3 bzw. MagicMac. Hoffen wir also auf einen Geistesblitz und auf die Zukunft. Dann wird zControl auch fr die (immer noch vorhandenen) Benutzer von Single-Tasking- Systemen auf dem Atari verwendbar sein. Als ACC unter Single-TOS wird beim booten eine Warnmeldung ausgegeben. Dabei werden keine CPX-Module geladen. Man kann die Module nachtrglich laden lassen. Falls es dabei zu einem Absturz kommt wrde ich mich ber einen Bugreport freuen, dabei bitte die verwendete Konfiguration beschreiben: Rechner, Speicher, Betriebssystem, HD-Treiber, AUTO-Ordner- Programme... Ab Version 0.22 gibt es eine Option namens SINGLELOAD, sie ermglicht das normale Arbeiten von zControl unter Single-TOS - die Module werden geladen. Diese Option dient zum Testen. Mehr zur Anwendung dieser Option findet man im Kapitel "Das Format der INF-Datei". *Wer diese Option unter Single-TOS austestet, soll mir doch bitte ber email berichten, wie sich zControl verhlt.* Ich habe hier in Florida leider keinen Rechner mit Single-TOS und bin daher von solchen Rckmeldungen abhngig. Bekannter Fehler: Wenn man noch CPX-Fenster offen hat, whrend man die Module neu ldt, so bekommt man einen Absturz des Programmes. Dies wird aus Zeitgrnden erst in der nchsten Version behoben. 1.1 English Version ------------------- Version 0.20 of zControl had an english manual, the version 0.21 now can run in english (and german of course). In the future, maybe, there will be other languages supported. Please note: There is an english version of this manual. 2 Orlando/Florida ================= Von End Juli 95 bis Mitte Mrz 96 bin ich in Orlando/Florida. Ich mache hier meine Diplomarbeit. Obwohl Orlando ein sehr netter Aufenthaltsort ist, hat es einen entscheidenden Nachteil. Ich habe keinen Zugriff auf meiner Atari-Rechner zuhause. Dies bedeutet eingeschrnkte Testmglichkeiten fr dieses Programm. 3 Copyright =========== zControl ist ein Shareware-Programm von Ralf Zimmermann Am Ruhwehr 35 65207 Wiesbaden Deutschland MausNet : Ralf Zimmermann @ OF2 internet : dl1fdt@amsat.org PacketRadio : DL1FDT@DB0GV Bankverbindung: Naspa Wiesbaden BLZ 510 500 15 Kto 1010 299 72 Der schnellste Weg, den Autor zu erreichen, ist sicherlich die email! 3.1 Shareware ------------- Dieses Programm wird als Shareware vertrieben. Das heit, Sie knnen das Programm beliebig und in vollem Umfang testen. Unter Testen verstehe ich einen Zeitraum von ca. 3 Wochen. Danach sollte klar sein, ob Sie das Programm weiter benutzen wollen oder nicht. Welche Einschrnkung hat das Programm in der ffentlichen Version? *- Keine -* Denn es gibt keine andere Version von zControl! Die Funktionen des Programms werden in der ffentlichen Version also *nicht* eingeschrnkt! Somit handelt es sich bei zControl um einen *echten* Vertreter der Gattung Shareware. Mit der Registrierung bezahlen Sie ein Programm, welches Sie schon besitzen und ausgiebig testen konnten. Viel fairer kann man Software wohl kaum anbieten. Ich hoffe das zahlt sich (trotzdem) aus. Wenn Ihnen das Programm gefllt und es weiter benutzen wollen, so mssen Sie sich bei dem Autor registrieren lassen. Die erfolgt einfach durch Zahlung des Shareware-Beitrags von DM 10, als berweisung, Bargeld oder Verrechnungsscheck. Bitte beachten Sie folgendes: Wenn Sie ein Shareware-Programm benutzen ohne sich registrieren zu lassen, dann benutzen Sie eine Raubkopie! Standard-Disclaimer: Das Programm wurde mit Sorgfalt erstellt. Der Autor bernimmt allerdings keinerlei Verantwortung fr irgendwelche Schden, die im Zusammenhang mit der Benutzung, Nicht-Benutzung oder Verschmutzung von zControl entstehen. 3.2 UK Register --------------- UK users may register for zControl via CyberSTrider, the shareware support scheme run by Denesh Bhabuta. The UK shareware fee for zControl currently stands at 6 Pounds Sterling, which entitles you to A printed labelled Master Disk with the latest version of zControl, plus a selection of other shareware supported by Denesh. Free e-mail, post and telephone support Free update service (as long as the registration fee does not go up, or it becomes commercial) If you use zControl, then you must register. Make cheques, postal orders, international money orders, and eurocheques payable to DENESH BHABUTA, for the sum of 6 Pounds Sterling (overseas users please add 1 pound), and send with your details to: CyberSTrider 203 Parr Lane Unsworth Bury Lancashire BL9 8JW England E-mail: dbhabuta@cix.compulink.co.uk danny@micros.hensa.ac.uk 3.2.1 Free Update Service Registered users may benefit from the free update service by sending an unlabelled blank floppy disk and stamped self addressed envelope to Denesh at the above address. 3.3 Preisliste -------------- Gegenwrtig kostet die Registrierung von zControl auf einen einzelnen Benutzer: DM 10,- 4 Entstehungsgeschichte ======================= Von Atari wird seit TOS 2.00 das Accessory XCONTROL.ACC mitgeliefert. Es dient als Umgebung fr die CPX-Module. Das sind Module, mit denen man den Rechner bzw. die Software konfigurieren kann. Es gibt z.B. Module zur Konfiguration der seriellen Schnittstellen, der Tastatur und des Druckers. Mancher Software liegt auch ein CPX-Modul bei. Die Module erkennt man an der Datei-Endung '.CPX'. Die Module sind ohne ein modulares Kontrollfeld (zControl oder XControl) nicht lauffhig! Nachdem sich mittlerweile gezeigt hat, da XControl wohl ein paar Bugs hat, entstand die Idee eine Alternative zu schaffen. *Diese Alternative soll nun zControl bieten.* Es ldt die gleichen CPX-Module wie XControl und verhlt sich weitgehend kompatibel, soweit es die Dokumentation zu den CPX-Modulen verlangt. Die Vorteile gegenber XControl liegen auf der Hand: zControl wird weiterentwickelt, d.h. eventuelle auftretende Probleme werden behoben. zControl untersttzt moderne Protokolle: - Drag&Drop - Iconifizierung - AV-Protokoll Das bedeutet, da sich das Programm perfekt in moderne Benutzeroberflchen integriert. zControl ermglicht das gleichzeitige arbeiten mit mehreren Modulen! Jedes CPX-Modul luft dabei in einem eigenen Fenster. zControl kann weitgehend per Tastatur bedient werden. zControl enthlt weitere ntzliche Features, die mancher vielleicht schon vermit hat. 5 Installation ============== Kopieren Sie die Datei ZCONTROL.ACC auf die oberste Ebene Ihres Bootlaufwerkes. Erzeugen Sie sich auf Ihrem Laufwerk einen Ordner mit dem Namen CPX und kopieren Sie Ihre CPX-Module dort hinein. Natrlich darf der Ordner auch anders heien. Dann booten Sie den Rechner neu. Nun rufen Sie das Programm ber den Eintrag in der Menuzeile auf. Klicken Sie auf den Knopf 'Optionen' im Hauptdialog. In dem erscheinenden Popup-Dialog whlen Sie den Eintrag 'Voreinstellung...'. Dort klicken Sie auf den Eintrag der unter 'CPX Verzeichnispfad' steht. In dem erscheinenden Dateiauswahldialog geben Sie an, aus welchem Ordner die CPX-Module geladen werden sollen. Die Besttigung erfolgt mit dem 'OK'-Knopf. blicherweise sollte dies z.B. ein Ordner mit folgendem Pfad sein: C:\CPX\ Klicken Sie auf den Knopf 'Sichern' und besttigen Sie die Sicherheitsabfrage. Danach sollte zControl bei jedem Start die CPX- Module im richtigen Ordner suchen. Unter Multitasking-Systemen kann zControl natrlich auch als Applikation gestartet werden. Man ndert dazu den Programmnamen von .ACC auf .APP oder .PRG und schon kann man zControl als normales Programm laufen lassen. 6 Bedienung des Programms ========================= Im folgenden wird kurz auf die Bedienung des Programmes eingegangen. 6.1 Hauptdialog --------------- Nach dem Starten des Programmes ffnet sich der Hauptdialog. Dort wird angezeigt, welche CPX-Module geladen wurden und somit verfgbar sind. Wurden mehr Module gefunden, als in den Dialog passen (was die Regel ist), so kann man mittels dem rechts angeordneten vertikalen Schieber die anderen Eintrge erreichen. ACHTUNG: In der Beta-Version wird der Fenstertitel als Laufschrift dargestellt. Dies soll einen daran erinnern, da es sich eben um eine Vorab-Version handelt! 6.2 Popup-Dialog 'Optionen' --------------------------- Info... Unter diesem Punkt erhalten Sie einen kurzen Copyright-Hinweis zu dem Programm, unter anderem steht hier auch die Versionsnummer des Programmes. Voreinstellung... Mit diesem Punkt kommen Sie zu einem Dialog, der Ihnen die Konfiguration des Programmes ermglicht. ffne CPX... Falls ein Modul selektiert ist, knnen Sie es hier starten, genau so als ob Sie einen Doppelklick auf den Modul-Eintrag gemacht htten. CPX Info... Falls ein Modul selektiert ist, erhalten Sie hier ein paar interne Informationen ber das Modul. Entferne CPX... Das selektierte Modul wird aus dem Speicher entfernt. 6.3 Voreinstellung ------------------ In diesem Dialog kann man CPX-Module neu laden. in den Dialog zur Modul-Auswahl wechseln. die Anzahl der angezeigten CPX-Eintrge im Hauptdialog bestimmen. die von zControl benutzte Sprache einstellen. Bisher wird Deutsch und Englisch untersttzt. das Verzeichnis, in dem die CPX-Module gesucht werden, einstellen. 6.4 Modul-Auswahl ----------------- In diesem Dialog kann man auswhlen, welche CPX-Module beim nchsten Laden bercksichtigt werden sollen. Aktive Module werden in der Liste mit einem Haken vor dem Eintrag dargestellt. Durch einen Mausklick auf einen Eintrag kann man den Status des Moduls verndern. Hinweis: Das (de)aktivieren wird auf dem Laufwerk durch verndern der Datei-Endung erreicht. Aktive Module haben die Endung '.CPX' und deaktivierte Module die Endung '.CPZ'. 6.5 Selektieren eines Moduls ---------------------------- Ein Modul wird durch einen einfachen Klick mit der linken Maustaste auf den Eintrag selektiert. Die Selektion ist durch die invertierte Darstellung erkennbar. Wenn man ein Modul selektiert hat, kann man mit dem Popup-Dialog 'Optionen' weitere Informationen zu dem Modul erhalten. 6.6 Starten eines Moduls ------------------------ Ein Modul wird durch einen Doppelklick mit der Maus auf den CPX-Eintrag drcken der Return-Taste bei selektiertem Eintrag (siehe Tastaturbedienung) eine VA_START-Meldung eine Drag&Drop-Meldung gestartet. Es wird fr jedes laufende CPX-Modul ein eigenes Fenster geffnet. Man kann in zControl gleichzeitig mehrere CPX-Module offen haben! Zur Zeit werden maximal 4 CPX-Fenster untersttzt, diese Zahl ist willkrlich gewhlt und kann in Zukunft erweitert werden. 6.7 Tastaturbedienung --------------------- zControl lst sich im Hauptdialog weitgehend per Tastatur bedienen: Cursor-Hoch - Bewegt den Selektierbalken um eine Position nach oben. - Falls noch keine Selektion existiert, wird der unterste Eintrag im Fenster selektiert. Cursor-Runter - Bewegt den Selektierbalken um eine Position nach unten. - Falls noch keine Selektion existiert, wird der oberste Eintrag im Fenster selektiert. Shift-Cursor - Bewegt den Selektierbalken Seitenweise. Return Enter - Falls eine Selektion existiert, so wird das entsprechende CPX-Modul aufgerufen. - Existiert keine Selektion, so wird das Fenster geschlossen. Esc - Hebt eine eventuell existierende Selektion auf. Control-U Control-Q - Das Fenster wird geschlossen. Control-Alternate-Leertaste - Das Fenster wird iconifiziert (siehe Iconifizierung) 6.8 Parameter-bergabe an zControl ---------------------------------- Beim Start als Programm kann man zControl Parameter bergeben. Bisher wird die Kommandozeile lediglich nach dem Namen eines CPX-Moduls abgesucht. Falls das entsprechende Modul beim Start von zControl geladen wurde, wird es aktiviert. zControl akzeptiert auch deaktivierte Module, mit der Datei-Endung CPZ. 6.8.1 Anwendung anmelden Es empfiehlt sich, zControl als Anwendung fr die Datei-Endung '*.CPX' anzumelden. Im Atari-Desktop funktioniert dies, indem man das Programm selektiert und im Menu die Funktion 'Anwendung anmelden' auswhlt. Dort trgt man die Endung 'CPX' fr das Programm ein. Danach mu diese Einstellung noch gesichert werden, mittels 'Arbeit sichern'. Wenn man dann ein Doppelklick auf eine CPX-Datei macht, so wird zControl gestartet und die gewhlte CPX-Datei aktiviert. Damit hat man die Mglichkeit, CPX-Module als Icon auf den Desktop zu legen und per Doppelklick direkt aufzurufen. Unter dem Desktop-Ersatz 'Gemini' kann man unter 'Anwendungen...' die Option 'Versteht VA_START-Meldung' aktivieren. Falls zControl schon gestartet ist, bergibt Gemini den Modulnamen per VA_START-Message als Parameter. Tip: Man kann sich eine leere Datei mit der Endung .CPX erstellen, die man lediglich zum aktivieren von zControl verwendet. Bei mir heist die datei z.B. _CALL.CPX und hat 0Bytes Gre. Diese Datei habe ich als Icon auf dem Desktop liegen, ein Doppelklick darauf aktiviert das als Accessorie installierte zControl. 6.8.2 AV-Protokoll zControl versteht die Meldung VA_START des AV-Protokolls. Als Parameter kann der Name eines CPX-Moduls bergeben werden. Falls das Modul schon geladen ist, wird es aktiviert. Andernfalls wird versucht, das Modul neu zu laden. zControl versteht auch die Meldung VA_DRAGACCWIND. Man kann z.B. aus Gemini heraus eine CPX-Datei auf das zControl-Fenster ziehen und fallenlassen. Das funktioniert dann genauso wie bei Drag&Drop. 6.8.3 Drag&Drop zControl versteht das Drag&Drop-Protokoll. Hat man ein Betriebssystem, welches Drag&Drop und untersttzt, so kann man einfach eine CPX-Datei vom Desktop auf das zControl-Fenster ziehen und dort fallenlassen. Daraufhin ldt zControl das Modul und aktiviert es. Folgende TOS-kompatible Betriebssysteme beherschen zur Zeit meines Wissens das Drag&Drop-Protokoll: MultiTOS mit einem AES >= 4.1 MagiC! 3.0 MagiCMac (auf dem Apple Macintosh) 6.9 Iconifizierung ------------------ Unter Iconifizierung versteht man die Verkleinerung eines normalen GEM-Fensters auf minimale Gre. Das Fenster ist dann sehr klein und zeigt nur noch ein Symbol an, nicht mehr den echten Inhalt. Besonders bei vielen offenen Fenstern ist es sehr angenehm, die geffneten Fenster eines Programms vorbergehend 'aus dem Weg zu schaffen'. zControl beherscht zwei verschiedene Arten des Iconify: MultiTOS-Iconify Unter MultiTOS wird rechts oben im Fenstertitel eine Iconify- Knopf angezeigt. Klickt man darauf, so wird das Fenster zu einem Icon verkleinert. ICFS-Iconify Falls kein Betriebssystem mit Iconify-Mglichkeiten gefunden wird, aber der Iconify-Server (ICFS) vorhanden ist, so wird das Iconify per ICFS untersttzt. Wenn man den Schlie-Knopf des Fensters bettigt und gleichzeitig eine der Tasten - Control - Shift - Alternate gedrckt hlt, so wird das Fenster zu einem Icon verkleinert. Das Iconifizieren kann man auch per Tastatur mittels Control- Alternate-Leertaste erreichen. Also einfach die Control- und die Alternate-Taste gedrckt halten und dann die Leertaste bettigen. 7 Die INF-Datei =============== zControl speichert seine Parameter in der Datei ZCONTROL.INF, welche beim Programmstart gesucht wird. Zur Zeit werden folgende Parameter gespeichert: Der Pfad aus dem die CPX-Module nachgeladen werden. Die Einstellung, wieviele CPX-Modul-Eintrge im Hauptdialog dargestellt werden. Die Position des zControl-Fensters. Die Positionen der CPX-Fenster. Smtliche Parameter werden gespeichert, wenn man im Dialog 'Optionen/Voreinstellung...' den Knopf 'Sichern' whlt. 7.1 Debug-Funktion ------------------ Manchmal kommt es vor, da ein CPX-Modul Probleme bereitet. Damit man bei einer groen Zahl von Modulen herausfinden kann, welches Modul das ist, kann man eine einfache Debug-Funktion aktivieren. Wenn man eine Zeile DEBUG = STDOUT von Hand in die INF-Datei einfgt, dann wird beim Starten jedes Moduls eine kurze Text-Ausgabe erzeugt. Damit kann man z.B. beim booten herausfinden, wo das Problem liegt. 7.2 Wo wird die INF-Datei gesucht? ---------------------------------- zControl sucht seine INF-Datei mit den Voreinstellungen der Reihenfolge nach mit folgenden Methoden: 1. Im AES-Environment, per shel_envrn(), wird nach der Variablen HOME gesucht. 2. Das beim Programmstart bergebene Environment wird nach der Variablen HOME abgesucht. 3. Mittels shel_read() wird versucht den Startpfad zu ermitteln. 4. In argv[0] wird nach dem Startpfad gesucht. 5. Auf dem Wurzelverzeichnis des Bootlaufwerks, welches mittels _bootdev ermittelt wird. blicherweise also C:\. Sobald eine der Methoden einen Pfad liefert, so wird er zum Laden und Speichern der INF-Datei verwendet. Es wird empfohlen, die HOME-Variable zu benutzen. In Zukunft werden hoffentlich immer mehr Programme dieses Verfahren benutzen. Unter dem Betriebssystem MagiC (oder Mag!X) kann man die HOME- Variable erzeugen indem man z.B. folgende Zeile in die Datei MAGX.INF schreibt: Die Zeile sollte auf jeden Fall vor der Zeile mit dem #_CTR stehen. Unter MultiTOS kann man die HOME-Variable erzeugen, indem man in der Datei GEM.CNF folgende Zeile eintrgt: setenv HOME=c:\gemini2\user 8 Undokumentierte Funktionen ============================ In XControl gibt es wenigstens zwei nicht-dokumentierte Funktionen, die von manchen Modulen benutzt werden. Das sind nur sehr wenige Module, aber es gibt sie. Zur Zeit werden nur alle dokumentierten Funktionenuntersttzt. Falls man Module hat, die Probleme machen, so sollte man Vorsicht walten lassen. Es folgt eine Auflistung der mir bekannten Module, die undokumentierte Funktionen von XControl verwenden. 8.1 KONFIG.CPX -------------- Es gibt ein CPX-Modul von Atari, welches leider eine Besonderheit darstellt. Es nennt sich KONFIG.CPX und dient zur Konfiguration der CPX-Header. Man kann dort z.B. die Farben des Icons und der Texte einstellen. Leider verwendet dieses Modul nicht-dokumentierte Funktionen von XControl. Das fhrt zum sofortigen Absturz des Rechners. Deshalb wird dieses Modul zur Zeit von zControl abgelehnt. Bei dem Versuch das Modul zu starten erscheint eine Fehlermeldung. 8.2 LINK_CPX.CPX ---------------- Das Modul von Richard Kurz verwendet ebenfalls nicht-dokumentierte Funktionen von XControl. Immerhin verhlt es sich etwas kooperativer als KONFIG.CPX und strzt nicht sofort ab... Trotzdem ist das Modul mit Vorsicht zu geniessen, diese Funktionen werden zur Zeit einfach nicht untersttzt! 8.3 DFREE.CPX ------------- Dieses Modul von Andreas Mandel benutzt auch eine nicht-dokumentierte Funktion (reserve2()), ich wei aber nicht weshalb. A Das Format der INF-Datei ========================== zControl verwendet in seiner Parameter-Datei folgende Schlsselworte: CPX_PATH Mit diesem Parameter wird festgelegt, in welchem Pfad die CPX- Module gesucht werden. ANZ_DISP_ENTRY Mit diesem Eintrag wird festgelegt, wieviele CPX-Modul-Eintrge im Hauptdialog dargestellt werden. Man kann zur Zeit zwischen vier und 12 Eintrgen anzeigen. COUNTRY Hier wird die Lnderkennung fr die verwendete Sprache von zControl gespeichert. WIND_MAIN Unter diesem Eintrag wird die Position des zControl-Fensters gespeichert. Das Fenster wird nach dem Programmstart an dieser Position geffnet. WIND_CPX? Hinter diesem Eintrag wird die Position eines Fensters fr ein CPX-Modul gespeichert. Anstelle des Fragezeichens steht in der INF-Datei die Nummer des Fensters, z.B. 'WIND_CPX2' fr das zweite CPX-Fenster. DEBUG Siehe Debug-Funktion. SINGLELOAD Falls die Zeile SINGLELOAD = TRUE in der INF-Datei auftaucht, dann werden auch als ACC unter Single-TOS die CPXe geladen. Dies ist dafr gedacht, da man ausprobieren kann, ob zControl auf dem entsprechenden Rechner luft oder nicht. Diese Option ist nur fr diejenigen, die zControl als ACC unter Single-TOS laufen lassen! B Das Format der Datei FILESORT.SYS =================================== Unter TOS werden die CPX-Dateien in einer festgelegten Reihenfolge geladen. Normalerweise ist dies die Reihenfolge in der die Dateien in den entsprechenden Ordner kopiert wurden. Wenn man die Reihenfolge der CPX-Module ndern mchte, so mu man dies recht aufwendig durch hin- und herkopieren realisieren. Die Reihenfolge in der die Module geladen werden ist die gleiche Reihenfolge in der sie dann im Kontrollfeld angezeigt werden. Unter MagiCMac auf dem Mac gibt es nun diese natrliche Reihenfolge nicht mehr. Die Dateien werden in alphabetischer Folge geladen. Das ist zwar schn, aber nicht praktisch. Fr diese beiden Flle habe ich eine neue Mglichkeit geschaffen. Wenn zControl in dem CPX-Ordner eine Datei mit dem Namen FILESORT.SYS findet, so wird diese ausgewertet. In dieser Datei befindet sich in jeder Zeile der Name eines CPX-Moduls, ohne Pfad. Beim Laden der Module wird nun als allererstes versucht die angegebenen Module der Reihe nach zu laden. Wenn ein Modul nicht gefunden wird, so gibt es hier keine Fehlermeldung. Nach dem abarbeiten der Datei FILESORT.SYS werden die restlichen CPX-Module geladen. Somit kann man zumindestens die Reihenfolge der ersten Module bestimmen. Ich gebe zu, dieses Verfahren ist nicht unbedingt einfach, denn man mu diese Datei fr sich selbst konfigurieren. Aber dieses Verfahren ist sehr flexibel. Die Idee ist allerdings, dieses Vorgehen in der Zukunft komfortabler zu gestalten, indem zControl selbst diese Datei erstellen wird. Zur Zeit kann man die Datei mit einem ASCII-Editor von Hand erstellen oder ndern. C Bezugsquellen =============== Bereits registrierte Benutzer erhalten die jeweils neueste Version des Programms beim Autor gegen Einsendung einer formatierten Diskette sowie eines frankierten und adressierten Rckumschlags. Fr noch- nichtregistrierte Benutzer kommt der SharewareBetrag von 10DM hinzu. Besitzer eines Modems finden die aktuelle Version von zControl in der Maus Offenbach 2: Maus OF2: 06103-921170 Der Archivname lautet jeweils ZCONTROL.LZH. Auf jeweils neue Versionen wird in der MausNet-Gruppe "ATARI.NEWS" hingewiesen. D Danksagungen ============== Ich mchte mich bei ein paar Leuten bedanken, ohne ihre Mithilfe wre zControl niemals so ein schnes Programm geworden. Ich habe zwar die ganze 'Dreckarbeit' gemacht, aber einige Ideen und Informationen kamen von auen. Vielen Dank an... *Dirk Haun @ WI2* fr Informationen und sein aufmerksames Testen. ("Na wer sagt's denn, es hat sich ja doch einer gefunden, der einen XControl-Clone schreibt") *Julian Reschke @ WI2* fr seine Informationen bezglich Drag&Drop und diesem ganzen modernen Kram... *Martin Osieka @ OF2* fr seine Hilfe bei allerlei Problemen. Besonderer Dank gebhrt ihm fr die Idee, wie man mehrere CPX-Module gleichzeitig verwaltet! So ein echter Informatiker kann hin und wieder sehr hilfreich sein - ich kann das nur empfehlen! ("Bitte nicht jeden Tag eine neue Release") *Rainer Wiesenfeller @ RS* fr das versprochene Bier, falls ich das irgendwann bekomme. ("... finde ich es gut, da sich mal jemand die Mhe gibt, dieses Programm neu zu programmieren und zu pflegen.") *Reiner Rosin @ WI2* der mir seinen Gruppenprogrammteil zur Verfgung gestellt hat. Zwar nicht freiwillig, aber immerhin... *Rene Bartholomay @ OL* der die Chance genutzt hat, der erste zahlende Benutzer von zControl zu werden. ;-) ("Endlich mal jemand, der auch an die Grobildschirmbenutzer denkt!") E Probleme ========== *Zu wenig Speicher unter MagiC* Manchmal kann es vorkommen, da zControl sich beschwert, da nicht gengend Speicher vorhanden ist um alle Module zu laden. Und das, obwohl man jede Menge Speicher hat. Dies kommt dadurch zustande, da sich ein Programm beim booten den gesamten Speicher reserviert und erst spter wieder freigibt. Unter MagiC kann man dies verhindern, indem man aus der Datei MAGX.INF die Zeile mit dem Eintrag #_TSL entfernt. Das premptive Multitasking wird dann erst von dem MagiC-CPX-Modul eingeschaltet. F History ========= *Version 0.23* - Die Funktion cpx_getcookie() sollte jetzt endgltig funktionieren. Ich hatte die korrigierte Routine nicht neu compiliert. *Version 0.22* Dies war eigentlich nur eine Beta-Version zum testen. - Man kann zControl jetzt auch deaktivierte Module (mit der Endung CPZ) bergeben. Sie werden dann gestartet. Die Dateiendung wird nicht verndert. - Es kam wie es kommen muste: Nur mal eben schnell eine Kleinigkeit gendert und schon Unheil angerichtet. Die Version 0.21 lief nicht ordentlich. Ich habe da etwas mit der Fensterverwaltung komplett durcheinandergebracht. - Das beta-Zeichen in dem Menu-Eintrag als ACC entfernt. Unter englischem TOS gab es Darstellungsprobleme. - Wenn nach dem starten von zControl ein Modul gelscht oder umbenannt wurde, so strzte das Programm beim Aufruf des entsprechenden Moduls ab. Jetzt gibt es eine Fehlermeldung und das Modul wird aus der Liste entfernt. *Version 0.21* - zControl kann jetzt in der Sprache umgeschaltet werden. Bisher wird Englisch und Deutsch untersttzt. - Iconifizierte Module bekommen keinen Mausclick und Tastendruck mehr. - CPX-Module bekommen jetzt auch folgende Meldungen: AP_DRAGDROP und VA_START - Die Funktion cpx_getcookie() hatte einen Fehler. - Die Zeitanzeige hatte ein paar Unschnheiten. *Version 0.20* - Die erste ffentliche Version von zControl. zControl - Der XControl-Clone (Version 0.23) von Ralf Zimmermann @ OF2 Das Programm stellt einen Ersatz fr das XCONTROL.ACC dar. Mehrere CPX-Module laufen gleichzeitig in eigenen Fenstern. Die Reihenfolge der Module kann bestimmt werden (wichtig fr MagiCMac). Unter Single-TOS nicht lauffhig! Jetzt mehrsprachig! Ein paar Bugfixes. .. `M.. `ZCONTROLHYP6pNUZCONTROLREF7pd@ZCONTROLTXTpfeZCONTROLUPLpIHDOC+TYTitle9MainBThis Version oEnglish Version >Orlando/Florida Copyright WSharewareUK RegisterPZ Price List Motivation~ InstallationB$T9 Operating the program Main dialogue(4 Popup-Dialogue 'Options'B Settings Choice Modules Select a module y Activate a module  Keyboard Handling4 Command Line Parameters for zControl"hAnwendung anmelden$!AV Protocol"Drag&Drop#, Iconify%The INF File&Debug FunctionB4'>Where will the INF file be searched?&)Undocumented Functions*KONFIG.CPX+RLINK_CPX.CPX,W<DFREE.CPX*,j The Format of the INF File2/!The Format of the FILESORT.SYS file 1" Sources of supply3 #!Thanks5$"Troubleshooting7%#History9 %$Index=#q B"4 I'FtaT)BUBThe Manual to zControloRalf Zimmermann $VER: 0.23 (December 27, 1995)9 -i +zz -t3Dokumentation/Utilities Rw)WX)FGAcwCy"r%/* Rk̃y{p-J~VqLߥ{@P/xReD}AM$xZD &2= oXl$M$S;Jd@Vqַ\/쬪hϛOT$}[B{b mhmŲ19;e+XcW7$3KDrՍIHؘfsrs>o|t QPo$P:~Va,*K*PzeM=6z9 [kۈX].ؑ7 S 3p "SJS|;ädic7Rxэa+s+:)5׳a=W:Ysdb ǘ=JKBK&J7SZkG{hZG9b@9#>>Ƅuz /ˠ,U.0|P$H@v)`ɛ:٧?%?LUVA fD}2i`b!s~W@"]}%R:<J"*1$lUJ t/A!MezXq}lj ϐš]-?%i*X[ NFF9K@*):3G]3 *k8 bE %E%P)Y.Aaۅ#lC*礁JKߪ34q{@kXx@I=t{=%LԘ~1f{v>?ǻ_BmӓQVυoQjXixr}BahռC6D3nڭi<4 Ն(s[ӝqua0p/DɃn7ݛ[@afo6|R=۪ӕk%ʝ?__9iVV,gH[v+LB`!k;[]$2{SS3<@-_Ok8I?~y(sO-H-鳪>WWJL }~s -欵A㏷̮VgL*b_{$c|#ĸ_R']ۤ7xLۂPB|.l@lu(O}bƴx p~'B8.N4$]#S4 K=څmÝB[;-8i)se;hQ08QT6sBX~e܉jK-}&lyTyOd%LtGY] g3)@1ɐҧgSkSܼͪVCp}4.7=|,-gF]EZ 'RBZ2s[S8ۋmT??LI!%>5&u$[>s-Nb}4%s:FaRDg׼`m~ ԱZ]uxWW`8w& $VM mo8҈ mguOBʤR@8@[^,F RD,k]e/6 rXaMuQFe?' 2M>E@.dmh^%Ciodmx {+g+!(NO)@;8e?Ώg-<[T*WqȻ&Teʸ^>6ɟE[Ķ? AdJhҦ-WRe:s:y2 -z p'\=s3ez]-0^]ӣ_N|qMXqrm!,^\ c8&R^O]D.ոխKUI /o._Rt]3@Womhp*as*G€t.+1Փ=[#Hb>R?&3K>c_}sRil"MSipSv51ZyjjYMtHv3㉚V`6|\)BqG.iATÎo2bxe'FеH r8in\Ewo#x^dllUZtڡ(~bQp; tÀY=гg&Sݴ0V[C⸵_Z;C־.[Eiģ˿W_׻NEd$'~->|Jāj+qQwl< hl3;|Z]|p! lvSzr⻯w*)$`pjMxXϢo{gR*s鵱ءчmQqKXэMM\^j'J},i(,%طB2wRh%0 ^Zm!t*Y׼K #k\[dO&3˖ädߌ\0BNE+N ?`9 {a&)Z A`lJ4ꁈږexbhBy\#ɱ2Mx%J  ܗ'K(ј \#F16Ua+HFkM]oE+GoG%.=|{iqօQx`'\]l5&BT yzXMMVJ:cl9@36i~ʭC-Kobm +˳I[s_ :dV^aM:9W⨣cw!8~b(gaH] 1bgO%` JowEQ>&NjQeG \|9}ƪ%IE6D0+2:F6/dD* }d/qq+d5Ҳ*a0^K:m H1 jWytJL]SWHij䰩ͳ Q}pn)ʼnukX.0"_ݸ.)e4xah VbctV̾~XLft:e5QD2nхO  Vz [Ɠ`6Hͼ Q+^5Z|XlYDaEb|9?ѐAh3,NU`=?>QQۜ ]`rl*xq}RSr&}d2T։M~9rd^q".?>͡K&/10eTA=?[s.\t1fafb0c1sO,g,I!QbՆmjf} c¤~$i$BW90RR?U2y LDAi4-+gpPT Qqb lC$.:ƉgAVumz;֕31I˪үХC`Bv\n^ 7p˗7"Jfw~4 {:浑ũDqZ9ޕY"uZN,u: K"qGF J.ɿȻCJȶ+s|d`[rxt8|K2/0eK'i'M83D, FP'Mþd7p|nm@ٵ[6Sx6es C  7߄* E[-9K>|ߔ.cr2jIm "YZPlu #,tC$7\NAOp|"I(46QyrJs(*bB"vhuyj9TڎvВXZ#d[X= _ْ&;Ț|˭cnz r6"Q[sn53eK B315i%mqgUFp0m51ûf;*PI2b;"sBa!"F?`џT)=N(>_g߳.q\L@ܯ+ L ~KCQ<2ه=+jK9^8Lfbvi͂3sJ<[v69H[$4 F3ٯEtJ[qb՛6hgVclGA:mr=E(,By+x+N}(r:av ܜ$ÂJCYJVgq|ysy2VIFs+B*tB߰f&@˒X,V7-D+W.M.}<'h{a3ŷ x؎9^,2yD%!V^vи [v!V" C %EgJ(x3< &CdbC=KF9)Q)DC9f>t JzІUI9%?lvVםC]5JŪɧz dZ?bls>יwu'$zyr^& LR0~,c!!ukdI5TgT1T[fW~ faR0)^Y<Fm)sTH̅-H˽1tڔ&??LVic')9g'yΑxy ZWHH5b#1^*ˆ + ]$Q C# le5N)w<$X"+;酧ҍIV8٤hcN@,[w;&B4ClDh(8wc##Ej Noh̋sfƑzaCc0F %'v VaB[{4X vR=i@Mu Oh%_D@uH8mEv0]n9M- qV4@Ё8OI7 9H|>a$ha”=Hԯn!-zFi g4SQ 9I>Q+ 816#ھչusQWh$7hz:=^;,lw_9KK〢](&D)FCʈycBg$7ݍN pZOOp [L|uk[r&Sy78zQ=G<&^9MnBz[5U}sF6v,ŒvD1B^8"gSId֋?ل\Y1Kld!fG Zٶh^˜2l0'|qmQ {TZJXnFXG.'ɶ*Kz62\ ǫ`rrʧ"W&Eh] KFB2-Z'gMjtV7T5"Oj&ԋ:T,=KɎ`\ uJzxҏIhcQf;ܧ'*1X±(XZ52<ࢅ>\ hz瑬q.e(= * @饽oGx^2];8XIst= <XOƇ;D<:As *j)5tҏ< ˄ :~6iFW!\T<­P.]3z{P򫴌50/mq6Q"(sV"H7 -к?+1g[o GCwŴ2]2݉hԵlV9iX/'N)CM+Jr `{-/fo HKk*{=*0 u|˫ˤϭG)WNBMnS;. '[v!8~g1dAXgIuK:%*C9-z'QE'Cjc^X֓t^mHG/1\n/yEɶiٮ]ES?0cZ7,Ad-@!|o#k-hX)wo(؝~⍂ ̞U픫L'#ZNǠ'׳24ZLr2Ja4^ :&JQBpBAes@(27g {e'_xf)G^v]}Rd [4&x~xz H0BɼF^+gxo&~7jB9LqDIee됴F;ZN%vT[G+'0$9/N% P9x[;,Or@ X]IlpY%4]T.,v jBTc=u=>>zB-Ɔor_PL)҇>ビZ]XJ،Λ8VE24-c/me`8rB* 2EN#CrR8d`8EIN'|8#`wPTlYb|L+8#$}M\ZOڪD3⭮]# M?\/AA-R<x]b|2fC/of}$́k4XXxnKEgHSifqT:O1[1T̄6!TҏpY~뵯4(r`O ͛\ ',b-1${O*myAv"MI` f5\֒nRoGIN~4nSwyqޥZ RO~^^|y|t~r:2[uHA% &\0CxeLjsL4L%PZG@<4U fu Ɓ|F24[Mϼ.ӫ/I6pv }fTk=Vٵlݿwnصd0AX˚L%iD&Zosq@rP0bA BII,_>a,Id8ZzzoA m BNLc +oh[|T~ iayW/z>;EX!#Ň!7#V>aX&t'e~m RIzKXw,Leqp*ǣ.}ZvfѯMoe`R[i*uKE:HPn -A]i<6B7‘+2)vw/Z0o3˳>A.4'*63_s$™y C~B0<@6tO bW SAb-L>HFr8 )'[=% vȇ'H%T HATJlJ8uۋ(`XĤ R*yjX^~HsPrr.(:bD7j]KX.b-Ug.fpzQd>-v+ O 0dĻ& ,Y 5 'JR6" +@yiX!f OLDTc4޾S܌Yh#T^)0&Inn#9J h}kZ^Lg;z*V :lZH1x|ݰBޘžžIXz(K)]:"酏$c$t?[iMJ8w*&.UsшC6ɔHv3᎛ | *ua;nk Zs|=:e+sV]mcԴ>G`5%ގs@>:i{B 8Fvͻi yczԪV@T 0 =-BY=/DN|j܄zUUx_4b-K0,RDC)pbvzG1t`(uvCoAd#4L\k(o';ShKuN?Ji*vƏg%|>VD_?*ԥgh Wa].cqi{t1(m]TFlGWO^JcR#K\Z&ǟv5i¯C{Ԝ,GfГ(b٫=Z;"g$KfP0q`$[،YK{%kzۚЏ!f9)ZF[&:+.MѤ %p>#Rspg6xu%" &LŵN5ɔ- <'(=D6QLMX w X]LhC- ֮HB}yriz/-$M\ɤ"0rfL؎dvX<@.CH/ݔyt~ox51KZes7okQ-=ziϗ\Y0Rv+:p.Gb gg*,)+ƫX_ԌoI\B 1V6%ࢊ4*kC=U|>Rc-H@ZyR(@oita^=z_VO@ea//r'5 2PC*q-TE=#$Dn+kG=oJW xNg147+jg%$ǿj$]g(9 %|47ĭ 'OV5$u#Lmµ8Gphjx;NOo 5~2h;-|ACA m3rO$x͐J5'c~䈅1;0-ωB8=W[.u1X0EHI~H>UW'bmekƒ60kL^<)(RRo[۸w_$Lm22?bISE I \<6P[hS`Ei@X3LA/E ^ƓM`Y<3< قrZLޕu.R2\@5Ńd04#0Qw V]4+i11E% YchUuҸ2ӼU"qh;h:oo=7yubmhDU=cwf1~dl3pc0CNߋ5 ,@GfpI=~9ݡL{Iy|Q0:dPH2gܚ/kPs u%b -{Bn0KyMhIR2~=f_U*pQze.=L &{J  {1bI'90V |>9X1%i~%5/&Z s C(Y|ȨAj ڍ.Ha`c* Β'{7}Ajlc ' y ]Sb(5C G+CLXoKlEc]JmխBQxډ,s,8Д8'}gp T)'ҕR~$x6kLQѢw9wiU|OgWWlm X`S 9Op,R:4_QQwvK-;s11Sdxؿj(LM;]ÿG/ͱUIk+aG5hӛOGޜǿVm:]IP|<3jO3PnǺóe; W|xWd >k7'UջW[[wB 4|{'pC[yӏKǼw㗹7YeKYlDAuiؗk (#yB^`&.bm&؜zj; 4cDC:W B^`_]T'p^O0׺3{Dᓄ@4TD\C9?̒/@=>z|)΂i1$S~#A * ~lcb 0bWw6 eH;w~ [ sJ Ȉ?\B2d7*G7a] 1= jD!~o] ^shKOky ͕Lfv&#Gc`+U"-+e]?Gwq̎sD-q T2< 3XOᣤD1;h]Lz*@+;H$JGTzfSVUYjP71崃ᆕJUb:WDc9Xq=x@8M1)5L;depC>;`mQKQFu'j9/6&d>^2s Ȑ@;ε[Ћ<{S86aMM@JOn : eW0oWB{+kW9J;j{9ۡNvNAEJ(^ X|g+0w{Cv `7`Sm:%3.ުrm33`qF~{`oam( Q~/̀1 v?u+ƣBE amN8?('?C}H~,ЇNCA^C˳/t>Or~޳^ۡmnۓCX‡v[hACp%A8ʇ^Jo,V_K B{s>}2_zYp.9nչZZ0w ~̇ˉy zJ'Tj:t1Y!ZבagP⁏>y1;W[nB블;Bs*`Ƌm3Q2B1Mmm ۠`m&@fH3==*KP:Smц!v1JȹciDd!W4vbC86fhd202.[_dm2s}#͘™R+ЄF}xhͻL*lVcM]A4c|k{>L-Vp1򳆘?#"EF?졸wN#1l + W^ ^9_&= y1G뽅بC1uAg3?sN` . K0F+ں8#?hC>*cRO1 c3M~Zr4<'M Y->?2AP a|ilg,j^;y!s3x^)ptzAvȽ2Fr?{vI{v6.׸ p]dH-nqp zl.!5U,.-6Bwo^p%(aDIVdXҊ:#v7~.[߂veJI')OJq n SAV BD!~"?@_2o 2M7@ChUښul,R˕ܹR!  \BZnYd*fX7CŮB *xH4!e!-iL&F,9!FpRJɕ( c+of2>or?T?BRtDsɡAy<~ Cм4 |AV£J ]sD*ǦXG| % *L#s`6>u_arR{!xWB C//!}ݔmPǥ7CwQ R!(m3!ܩC3ǽ!6C?zD?B>%Mj+ҝRiJ(M;xeUzC;aӻyO;W>x}M2>4E);q*3/|};S<\l2SYm}SC7*&d1YS:cL1WUiخP5@@CBWP p#wv7T $Ia896f]C(3HC0zhpNqgmP%vYiVAf^^U@'gL0 .hht4h.uCu ZcvgTU:Ygh} \!8pA8PO*p3yHro)x^t T0R Gx J#Je 7p%if˿6f< fVy3?2&lLc̙ RHu)Mw=BX wE_wwQfTݮ/"0v hsdkL(z:ͬd2C^Vt!*NcZatUv#BHJi#Y N0Pؿ<4qf 0؞Cp5 xFLȨò0򨁌. (k0_H`ufgeF@4YCjXl]lFTPe&M~&L#mfQ F3Σ4 C62]ۭŐk0^)=$ڱ'SH+O .$9\DG@< !āˎWGr{~~4 4 x!jY^eC! ㋼EÌ>:ާT>EO1-Vcϩ/ysFwz=_NJT9Y; \N zU.QQp q9!;TVlmbm N$UlI]ؑb7"W%HrNwwnW{]R`T! >OAmܛ6tTEJ6|b. &@ -ȏ‘I 6C+ =mjI6uP.Ѓ'qÎy;ddu7^;I|IAA yo9cqij>] ~j07ƃj (7́&hU Tf6p@ŏt)$*)^)z]U0=̗$7@8g_6}t ЅK%$Id^fHܥ=l ߕ0/0u(n%'P8r4j]#tUBR@' $#:l:6@{rPݺY胖|| (@ 򖖩D1;R/(X =S I3Xq!8p}{seߛbʁk{%n!Aa)0òkX{Hr]dҋ)ht>O}d :qabL8,\7!MFb8?n fPnJU#Uۦ G0 kSF=!Y \gMz ,lFlc$uQ&)dijmF;:bmt. s\iZk Qʹ:osuG6Ωn|0 >G3{~ =1?9/Kv:?=-_υQՂ Sc٤ۨH M1j & m_Up3Im@tF <7> p3Ée+=o{pSw%+0K^3=?aIixKk05dGA6g5Hj>Kv_  =4}K5#. $ |!҆I56NfRI6q`Lc`2uFƛDŽ'Kqդr_h\HAq8~wnᆊ5 (2_cZշ[)(IR*$eeKV<^1xFP ۩vflrp?=gߪWT&tM3MMsNNUuNeD7Y*U֛¹Q>Xwm,NRL cyL?.5y;ayNOyT?@IτNa^xP霮>J;L[~D+pWG.0q&(A+; ܉al9; ~"j/p~/[-"hj}ɏ$Q:"hHCjH2iމdysdt[=mV 渧vikڑa0vݜ=˚n\SȗCMPvJ\R 7zv\EZ"So#(F<4\@{yᢙ0[ [ |=HREF,T ZCONTROLThe Manual to zControlTitleMain ContentsThis VersionSingle-TOS English VersionOrlando/Florida Orlando Florida Copyright Author Shareware RegisterCopyrightRestriction PiracyDisclaimerUK RegisterFree Update Service! Price List Motivation XControlControl PanelInstallationOperating the programMain dialogueBeta versionScrolling window namePopup-Dialogue 'Options' Options Settings Language  German  English Choice ModulesSelect a moduleActivate a moduleCPX Window Keyboard Handling keyboardCursor Keys'Command Line Parameters for zControlAnwendung anmelden Gemini AV Protocol VA_STARTAV-ProtocolVA_DRAGACCWIND Drag&Drop IconifyThe INF FileDebug Function'Where will the INF file be searched? HOMEEnvironmentUndocumented Functions KONFIG.CPXLINK_CPX.CPX DFREE.CPXThe Format of the INF File CPX_PATHANZ_DISP_ENTRY COUNTRYWIND_MAIN WIND_CPX DEBUGSINGLELOAD&The Format of the FILESORT.SYS fileFILESORT.SYSSources of supply Maus Modem MailboxAtari.News MausNet ThanksTroubleshooting MemoryNot enough MemoryMagiC Problem HistoryIndex The Manual to zControl 0.23 December 27, 1995 by Ralf Zimmermann Am Ruhwehr 35 D-65207 Wiesbaden dl1fdt@amsat.org Contents ======== 1 This Version 1.1 English Version 2 Orlando/Florida 3 Copyright 3.1 Shareware 3.2 UK Register 3.3 Price List 4 Motivation 5 Installation 6 Operating the program 6.1 Main dialogue 6.2 Popup-Dialogue 'Options' 6.3 Settings 6.4 Choice Modules 6.5 Select a module 6.6 Activate a module 6.7 Keyboard Handling 6.8 Command Line Parameters for zControl 6.8.1 Anwendung anmelden 6.8.2 AV Protocol 6.8.3 Drag&Drop 6.9 Iconify 7 The INF File 7.1 Debug Function 7.2 Where will the INF file be searched? 8 Undocumented Functions 8.1 KONFIG.CPX 8.2 LINK_CPX.CPX 8.3 DFREE.CPX Appendix ======== A The Format of the INF File B The Format of the FILESORT.SYS file C Sources of supply D Thanks E Troubleshooting F History 1 This Version ============== This program is not finished! I'd like to describe it as a *very good tested* Beta-Version. At this time I have not the time to implement all the things I'd like to see in the program. And I can't say when I will have the final version. Within the last few months some people have been asking when zControl would come. So I decided to release this version to the public - the program works without major problems. As soon as I have some more time I will release a new version! 'Without major problems' means: In this version zControl runs as ACC only under multitasking systems. As soon as you try to start it under Single-TOS, such as TOS 3.06, as a ACC you get some bombs. Until now I didn't know what the problem is and therefore I can't change it. I am using MagiC!3 and MagicMac and have no problems with zControl. So let's hope for a magic idea for the future. From then on zControl will be fully usable for all users, even these with Single- Tasking systems. As an ACC under Single-TOS you get a warning message while booting. No CPX modules will be loaded. You can load the modules afterwards. If you get problems with this procedure I would appreciate a bug report to me. Please tell me something about your configuration: Computer, memory, operating system, HD-driver, AUTO-folder- programs... Since version 0.22 there is the option SINGLELOAD. With it, zControl works normal under Single-TOS - the modules will be loaded. This option is for testing purposes. In chapter "The Format of the INF File", you can read how to use it. *Whoever tries this option under Single-TOS, should write me a report via email.* Here in Florida I don't have a computer with Single-TOS, this is why I depend on those reports. 1.1 English Version ------------------- Version 0.20 of zControl had an English documentation, the version 0.21 now can run in English (and German of course). In the future, maybe, there will be other languages supported. Please note: There is an German version of this manual. 2 Orlando/Florida ================= From end of July 95 to mid of March 96 I am in Orlando/Florida. I am finishing my studies here. Although Orlando is a very nice place to stay - I can not access all the Atari equipment I have at home in Germany. This results in a restricted ability to test this program. I am sorry for that. 3 Copyright =========== zControl is a Shareware program by Ralf Zimmermann Am Ruhwehr 35 65207 Wiesbaden Germany MausNet : Ralf Zimmermann @ OF2 internet : dl1fdt@amsat.org PacketRadio : DL1FDT@DB0GV Bank Account: Nassauische Sparkasse Wiesbaden Bank code number 510 500 15 Account number 1010 299 72 The fastest way to reach the author should be to use the email! 3.1 Shareware ------------- This program is distributed as Shareware. This means you can test this program without any restrictions. By testing I consider 3 weeks. After this time you should know if you want to use this program or not. Which restrictions does this program have in the public version? *- None -* There is no other version of zControl! All features of this program are *not* restricted! Therefore zControl is a *real* representation of Shareware. By registering the program you pay for a program that you already have and that you were able to test thoroughly. I think there is no fairer way to distribute software. I hope it works. If you like the program and want to use it in the future, you have to register it. This can be done by paying the Shareware fee of DM10 to the author through remittance, cash or crossed cheque, or sending the registration fee too the appropriate support site. Please note the following: If you use a Shareware program without registering, you are using an unauthorized copy! Standard-Disclaimer: This program was made carefully. The author is not responsible for any damages that originate from the usage or non-usage of zControl. 3.2 UK Register --------------- UK users may register for zControl via CyberSTrider, the shareware support scheme run by Denesh Bhabuta. The UK shareware fee for zControl currently stands at 6 Pounds Sterling, which entitles you to A printed labelled Master Disk with the latest version of zControl, plus a selection of other shareware supported by Denesh. Free e-mail, post and telephone support Free update service (as long as the registration fee does not go up, or it becomes commercial) If you use zControl, then you must register. Make cheques, postal orders, international money orders, and eurocheques payable to DENESH BHABUTA, for the sum of 6 Pounds Sterling (overseas users please add 1 pound), and send with your details to: CyberSTrider 203 Parr Lane Unsworth Bury Lancashire BL9 8JW England E-mail: dbhabuta@cix.compulink.co.uk danny@micros.hensa.ac.uk *Free Update Service* Registered users may benefit from the free update service by sending an unlabelled blank floppy disk and stamped self addressed envelope to Denesh at the above address. 3.3 Price List -------------- If you register zControl directly at the author, the price to register one user presently is: DM 10,- 4 Motivation ============ Since TOS 2.00 you get the XCONTROL.ACC from Atari. It is the environment for CPX modules. These are modules for configurating your computer or programs. There are for example modules to configure the serial interface, the keyboard or the printer. Some modules come with their own CPX modules. All CPX modules have the file extension '.CPX'. The modules do not run without a modular Control Panel (zControl or XControl)! We all know that XControl has some nasty bugs. That was the beginning of my idea to build an alternative. *zControl is made to be this alternative.* It loads the same CPX modules as XControl and behaves almost compatible, as far as the documentation recommends that. The advantages in contrast to XControl are quite obvious: zControl will be developed in the future, all known bugs will be removed. zControl supports following protocols: - Drag&Drop - Iconify - AV-protocol This means that the program fits perfectly into modern user interfaces. zControl enables you to run up to four different modules at the same time! Each module runs in its own window. zControl can be controlled through the keyboard. zControl has some more useful features, you may have looked for. 5 Installation ============== Copy the file ZCONTROL.ACC to the root directory of your boot drive. Generate a folder named CPX and copy all your CPX modules into that folder. The folder can be named differently. Then reboot. Now call the program through the entry in the menu. Click on the button 'Options' on the main dialog. Choose 'Settings...' in the popup dialog you get. You get a file selector dialog. Please show zControl the folder from which the modules should be loaded in future. Usually this should be the folder C:\CPX\ Click on the button 'Save' and confirm the security dialog. After that, zControl should search the CPX modules in the correct folder while starting. Under multitasking systems you can run zControl as an application. Change the file extension from .ACC to .APP or .PRG and you can use zControl as a normal program. 6 Operating the program ======================= In the following pages you will learn how to operate the program. 6.1 Main dialogue ----------------- After entering the program you get the main dialogue. You can see which programs are loaded and therefor are available. If more modules were found than fit into the dialogue (as usual), you can scroll to the other modules by using the vertical slider to the right. ATTENTION: The beta version of zControl has a scrolling window name. This should remind you that this is only a beta version. As soon as the final version is finished this 'feature' will disappear. 6.2 Popup-Dialogue 'Options' ---------------------------- Info... You can get a short copyright information about this program. You will find the version number in this dialogue. Settings... You get to an dialogue where you can configure the program. Open CPX... You can activate a selected module with this popup entry as if you make a double click on the module entry. CPX Info... You can get some information about the selected module. Remove CPX... The selected module will be removed from the memory. 6.3 Settings ------------ In this dialogue you can reload CPX modules. switch to the dialogue 'Choice Modules'. change the number of CPX entries on the main dialogue. change the language used by zControl. Right now English and German are available. change the folder in which zControl looks for the CPX modules. 6.4 Choice Modules ------------------ In this dialogue you can change the selection of modules that will be loaded next time by zControl. Active modules in the list are marked with a hook. You can change the status of a module (active/inactive) through a click on the entry. Note: De/activating is made by changing the file extension of the module. Active modules have the extension '.CPX', inactive modules have the extension '.CPZ'. 6.5 Select a module ------------------- You can select a module easily by clicking with the left mouse button on the module entry. The selection is visible through the inverted display of that entry. If you have a selected module, you get more options in the 'Options' popup dialog. 6.6 Activate a module --------------------- You can activate a module through a double click with the mouse on the entry. pressing the Return key while the entry is selected. (see Keyboard Handling) a VA_START message. a Drag&Drop message. Each activated module has it's own window. Presently you can have up to four CPX windows at the same time. This number is arbitrary and may be changed in future versions. 6.7 Keyboard Handling --------------------- In the main dialogue zControl can be controlled via the keyboard: Cursor Up - Moves the selection bar one entry to the top. - If there is no selection before, the lowest entry will be selected. Cursor Down - Moves the selection bar one entry down. - If there is no selection before, the highest entry will be selected. Shift Cursor - Moves the selection bar one page. Return Enter - If there is a selection, the selected module will be activated. - If there is no selection, the window will be closed. Esc - If a selection exists, it will be removed. Control-U Control-Q - The window will be closed. Control-Alternate-Space - The window will be iconified. (see Iconify) 6.8 Command Line Parameters for zControl ---------------------------------------- While starting zControl as a program, you can hand over parameters. Presently the command line is only searched for names of CPX modules. If the module is found, it will be activated. zControl also accepts deactivated modules, with the file ending CPZ. 6.8.1 Anwendung anmelden It is recommended that you announce zControl as application for the file extension '*.CPX'. On the Atari desktop you can do this by selecting the program and selecting 'Anwendung anmelden' in the menu. You enter the extension 'CPX' for the program. You have to save this adjustment through selecting 'Arbeit sichern' in the menu. If you now double click on a CPX file, zControl will be activated and the CPX file will be activated. Through this, you have the option to put some CPX modules as icons on the desktop and having them activated directly by double clicking. With the desktop replacement 'Gemini' you can activate the option 'Versteht VA_START-Meldung' in the dialog 'Anwendungen...'. If zControl is already started and you request a CPX module, Gemini hands the name of the module via a VA_START message. Hint: You can make an empty file with the extension .CPX which you can use for activating zControl. My dummy file for example is named _CALL.CPX and has the size of 0bytes. This file lies as an icon on my desktop. A double click on this file activates zControl if used as an ACC. 6.8.2 AV Protocol zControl knows the VA_START message of the AV protocol. The name of the CPX module will be the parameter. If the module is loaded, it will be activated. If not, zControl will try to load it. zControl also knows the VA_DRAGACCWIND message. In Gemini you can drag a CPX file to the window of zControl. This works like Drag&Drop. 6.8.3 Drag&Drop zControl knows the Drag&Drop protocol. If you have a operating system which is capable of Drag&Drop, you can drag a CPX file from the desktop and drop it onto the window of zControl. After that, zControl will load the module and activate it. The following TOS compatible operating systems are capable of the Drag&Drop protocol: MultiTOS with an AES >= 4.1 MagiC! 3.0 MagiCMac (on the Apple Macintosh) 6.9 Iconify ----------- Iconify means the reduction of a normal GEM window to the minimal size. The window then is very small and shows a symbol in it, not the original contents. If you have many opened windows, it sometimes is comfortable to get some of the windows out of the way. zControl knows two different ways of Iconify: MultiTOS-Iconify Under MultiTOS you have an iconify button on the right top of the window. If you klick on that, the window will be iconified. ICFS-Iconify If no operating system with Iconify capability is found and the Iconify-Server (ICFS) is present, you get the Iconify via ICFS. If you click on the close button of the window and hold down one of the keys - Control - Shift - Alternate the window will be iconified. You can initiate the Iconify via keyboard via Control-Alternate- Space. This means to hold down the Control and the Alternate keys and then press Space. 7 The INF File ============== zControl saves his configuration in the file ZCONTROL.INF. This file will be searched at startup. Presently there are the following parameters: The path from where the CPX modules will be loaded. How many CPX module entries will be displayed on the main dialogue. The positions of the main dialogue window. The positions of the CPX windows. All parameters will be saved if you choose the button 'Save' in the dialog 'Options/Settings...'. 7.1 Debug Function ------------------ Sometimes there might be a problem with a CPX module. If you have many modules, you need to find out which one makes the trouble. For this purpose, you can activate a simple debug function. If you add the line DEBUG = STDOUT by hand to the INF file, you get some information form every module loading. By this you might find out where the problem is. 7.2 Where will the INF file be searched? ---------------------------------------- zControl looks for the INF file with it's configuration in different places. The sequence is as follows: 1. By using shel_envrn(), the variable HOME will be searched. 2. The environment handed over while starting the program will be searched for the variable HOME. 3. By using shel_read(), the start path will be looked for. 4. argv[0] will be examined for the start path. 5. The boot devide will be determined by _bootdev. The file will be searched on the root directory of that drive, normally C:\. As soon as one of the methods finds a path, this path will be used for loading and saving the INF file. It is recommended to use the HOME variable. In future there will be more programs that will use this variable. For the operating system MagiC (or Mag!X) you can create the HOME variable through adding the following line into the file MAGX.INF: This line should be before the #_CTR line. Under MultiTOS you can create the HOME variable through adding the following line to the GEM.CNF file: setenv HOME=c:\gemini2\user 8 Undocumented Functions ======================== XControl has at least two undocumented functions. These functions should not be used by normal CPX modules, but some modules unfortunately use them. Presently only the documented functions are supported. Following is a list of some modules that I know which use undocumented functions. 8.1 KONFIG.CPX -------------- There is a CPX module from Atari, named KONFIG.CPX. This module is used for the configuration of CPX headers, you can change the colors of the icons and the texts. This module uses undocumented functions of XControl. This leads to a crash of the system if used with zControl. That is why this module would not run under zControl. The program refuses to activate this module - you get an error message. 8.2 LINK_CPX.CPX ---------------- This module form Richard Kurz uses also undocumented functions of XControl. But it doesn't lead to a system crash. But be careful with this module. 8.3 DFREE.CPX ------------- This module from Andreas Mandel uses a undocumented function (reserve2()), I don't understand why. A The Format of the INF File ============================ zControl uses the following key words in the configuration file: CPX_PATH This parameter determines, from which folder the CPX modules will be loaded from. ANZ_DISP_ENTRY This entry determines, how many CPX modules will be displayed in the main dialogue. Presently you can have four to twelve entries. COUNTRY This entry determines the language used by zControl. WIND_MAIN This saves the position of the zControl window. The window will be opened at this position after startup. WIND_CPX? Behind this entry, the position of a CPX window will be saved. Instead of the question mark there will be the number of the window, for example 'WIND_CPX2' for the second CPX window. DEBUG See Debug Function. SINGLELOAD If the line SINGLELOAD = TRUE appears in the INF file, zControl loads all CPX, even if you run it as an ACC under Single-TOS. This option is needed for testing, if zControl is running on your computer. This option is only for those, who run zControl as an ACC under Single-TOS! B The Format of the FILESORT.SYS file ===================================== Running under TOS the CPX modules are loaded in a fixed sequence. Usually this is the same sequence in that the files were copied into their folder. If you want to change the sequence of the modules, you have to copy them by hand in the right sequence. The order in which the modules are loaded is the same order in which they will be shown in the control panel. Under MagiCMac on the Mac this is not working. The modules will be loaded in alphabetical order. That is quite nice, but not really what you want. This is why I created a new way. If zControl finds a file FILESORT.SYS in the same folder as the CPX modules, this module will be evaluated. In every line of this file there is one name of a module, without path. While loading the modules, zControl will first of all try to load the modules in the sequence given by this file. If a module in this list is not found, there will be no error message. After evaluating the file FILESORT.SYS the remaining CPX modules will be loaded. By this, you can define the sequence of the modules, at least the first ones. I know that this procedure is not really easy, you have to edit this file by yourself. But it is very flexible. The idea is to make it a lot easier by letting zControl create this file. Right now, you can create or edit this file with any ASCII editor by hand. C Sources of supply =================== Registered users can get the latest version from the author by sending a self addressed and stamped envelope with a formatted disk to the author. Non registered users should add the Shareware fee of DM10. If you have a modem, you can get the latest version of zControl in my home BBS called 'Maus Offenbach 2': Maus OF2: +49-6103-921170 The file name is ZCONTROL.LZH. The latest version will be announced in the MausNet newsgroup "ATARI.NEWS". D Thanks ======== I want to thank some people, without their help zControl would never got such a nice program. Ok, it was me who had all the coding work, but some good ideas and informations came from them. Many thanks to... *Dirk Haun @ WI2* for his information and the attentive testing. ("Na wer sagt's denn, es hat sich ja doch einer gefunden, der einen XControl-Clone schreibt") *Julian Reschke @ WI2* for his information about the Drag&Drop and all this modern stuff... *Martin Osieka @ OF2* for his help with several problems. A special thanks belongs to him for the idea on how to make several CPX modules work at the same time! Such an information scientist is sometimes really helpful - I can recommend that! ("Bitte nicht jeden Tag eine neue Release") *Rainer Wiesenfeller @ RS* for the promised beer, if I will get it some time. ("... finde ich es gut, da sich mal jemand die Mhe gibt, dieses Programm neu zu programmieren und zu pflegen.") *Reiner Rosin @ WI2* who agreed that I use his file directory in the MAUS WI2 for zControl. It wasn't voluntary, but I don't mind... ;-) *Rene Bartholomay @ OL* who used the possibility to be the first registered user of zControl. ;-) ("Endlich mal jemand, der auch an die Grobildschirmbenutzer denkt!") E Troubleshooting ================= *Not enough memory under MagiC* Sometimes zControl reports that you don't have enough memory to load all modules, even if you have plenty of memory. While booting, if a program reserves all the memory it finds, this can happen. The memory will be available later. Under MagiC you can prevent this, through deleting the line with #_TSL of your file MAGX.INF. The multitasking will be startet by the MagiC CPX module. F History ========= *Version 0.23* - The function cpx_getcookie() now should really work. I didn't compile the corrected code. *Version 0.22* This is a beta version, for testing only. - Now you can drop deactivated modules (those with the file ending CPZ) on zControls window. It will start the module. The file ending will not be changed. - It came like always: I changed only a small part and made a big mess. The version 0.21 was not really running. I mixed up the window management. - Removed the beta-sign in the menu entry as ACC. The English TOS had a display problem with that. - If you deleted or renamed a file after booting zControl and then tried to activate it, you got some bombs. Now you get an error message and the module will be deleted from the list. *Version 0.21* - zControl now can be switched in its language. Right now you can use English and German. - Iconified modules no longer get mouse clicks and keys. - CPX-Modules now get the following messages: AP_DRAGDROP and VA_START - The function cpx_getcookie() had an error. That is now fixed. - The time-display had a minor bug. Fixed it. *Version 0.20* - The first public version of zControl. zControl - The XControl-Clone (Version 0.23) by Ralf Zimmermann The program is a replacement for the XCONTROL.ACC from Atari. Several CPX modules can run at the same time in own windows. The sequence of the modules can be changed (important for MagiCMac). Some trouble under SingleTOS. Some bugfixes. Now english program. .general.cpx 680x0cac.cpx hd_space.cpx dcf_time.cpx calc.cpx scooikie.cpx callfsel.cpx dfree.cpx (XXzzz$( X z NzCONTROL?@UUUV@@@@ v@6@0&@`&@f@F@@O_@F@ABDO_@?zControl by Ralf Zimmermann The folder ENGLISH contains the english documentation. Der Ordner DEUTSCH enthlt die deutsche Anleitung. Ralf Zimmermann `@n``@>>>> PURE-C <<<< for ATARI-ST Version 1.0 (C)88-90 Borland International &H f&op`B@#3 k # Ј<.@?#Jyg<"@(I$k,"Jf"JfB// ?<?<JNAO A<~kRrRAfA6<HCBB`6 !jBJ)gHiRC` "fSI "WSAkHiRCBSQJ)gHiRCHy`$ON0 J"LNw? 9g @N 9g @NN ?<LNAA(p"@ "ByA1B33O"Nu/ Hz?<&NN\O$_Nu"_HpNLJ@fpN/YOM,C HzaXOXO,_NuH@B@H@CBA< <b;k`|<*f<`&<0< b ACp a$$Wb<gt<.f6<*f4`$<0< b ACp a$Wb4g<߲<Lf g`<hggr@dp|?@0;N`````N`N``````````````````````````NNN````````````````` [0`|A`0A2"LaN@`\ [2"LaL@`JJEj `p0?4 La"TO@`*JEj `0H?4 LaTO@` JEj `p0?4 LaTO@`JEj `p0?4 LaTO@`@HN0\OLxNup24C8jxA aA pJWF@?@gA 2SAktaSb (Q2/@4/(jt@jtBgf 0Ao@@Alx?B?D`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 H8$H&I+g|2g+gC'I&'IR'I UAe"S(kt d W`2+gH@ KaLJ@f,H@ KahLJ@gkg&B JLNu3 `H:$H&I(S&gfJg^+g`)ft,k x$ڹd SfRe`.&// Kab$"J@k,f4(SSfRf& L\Nu3 p`"`&x,A'J'JE8'J & KaJ@kfRf"`H:$H&I(Sx&gZJgV+gX,k$dSfRe`6+g// Ka$"J@f.// Ka$"J@kf(S,k`& L\Nu3 p`H&H&8|f֓b e&`8+g+g2 Ka$J@f:"40+abJk* k&'HpLNu3 `3p`p/aXONuH&H(o Ia6k g La` a|Jf(H <a )Hg0@0;6 K (:gNa0|g9@{00 l)H()H `da)b*a)b* / ?/?<=NAP$_JkR9@{0 la A()H)HRH)H QC# LLNup`p`p 3 g la z`YOCBgg Ar`THWf0XONup`rwar+w+a+rbwbabr+b rb+ w+b wb+ a+b ab+ Ap`Ar(WVNu?/ Ar Cg8pCW|?/ ?<NAXONua3p`ް|c/ ??<>NAXO$_JkpNua3pNu/ /?<ANA\OJkp$_Nua3p$_NuHR@W@e >?NAO $_JkNua3pNuT@aJ@gX  _H&Hx&SgkJ9kvf~a<g&< g<<gP< g< e޸dRa`JgSSKpap apa`Rp ap a`jJgf`\xB9`Rx B9`DJ9kLfTa`x< g<g0< g< eaN`p aFp a8 L$_NuBx`xB9`x B9`?<?<NMXNu??<?<NM\NuH@??<@NAO $_JkfNua23pNu3NuH |bg??/?<BNAO JkjLNuJo6(?<?p/?<BNAO JkDHz <e/`/??<@NAO Jk b?<?p/?<BNAO Jja3p`0<`H 6?<?B?<BNAO (Bg?/<?<BNAO *Bg?/?<BNAO JWHL8NuHR C$Q`"J$R" gf"Aa( JaX$_NuD@| |"b;NupNu   ??B@C gJ1kB@BA< C (<-Wg<+fg"1bAg1b @8@@D`JgD@86Nu JgJgJgJgJg JgJgJfSHggggg ggf @NugfSHNuJgNug fC`Jg INuSHNugFf8g>f0g6f(g.f g&fgfgfggepNupNuJfpNu g<g8g4g0g,g(g$g ggggg ggf @Nu"HJgJgJgJgJg JgJgJf SNu"Jg JgJgJfSHSefB ANuSeg gb pNuJfpNupNu"SefBJgSf ANu/ / g($Ig"f&Hggg"J K`A&_$_Nu`$ fJg` yf p#`L$Igf`#Sf yp#`$IgfB( 9# @$BNu`H0$H|g|$bGbrtgJ3kSJgtJ@f"p <0f:pgb<߶<Xf(pf"`N|f<0fg><߶<Xfg.G3d"3d&HCHCJCfԃԁd` & gSJ"L Nu3"p` 3!p& g"`"CB@f ANu//"4UB|"bZC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!`0123456789abcdefghijklmnopqrstuvwxyzH &/?<HNA\OJf 9xg @ NJ@fp @LNuH0&gPR<e a g!CC "A`tG&S f0 < a gj&@Ap !|'H&#A"P` )d I"Q f`rd ` #@#C"nAL Nuk |`3 `/ oBQ nf axJg*`6C g,g"@ f` "/?<INA\OJj`p$_Nugp`/ &y g/ &S?<INA\O`&y g/ &S?<INA\O`&_NuH8$<CG g" c &@ f`(@ ,gb*"Ҩeg ` )H`p"@")Ө )H`>"@ gb" ҩeg`N"(ө`" "H" ҩf @"(ө" l eb&/ ?<INA\OJfQLNuP`Jg/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{|}~@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@  !"#  !"#J@kNuD@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"_.HN###/</9NuY/9$yNu 8NuYOA CrQJ@g|fG$7@TIt0+TH T!w40+TH T!w0+TH T"h"H0+TH wHNb T1@2+TI wHNT@b T1@|2+TI T!wP0+TH T!wX0+TH T"h"`0+TH w`Nb T1@2+TI w`NT@b T1@2+TI T"h<#wh TA0a0+TH T"hT#wp TAHa0+THAʼ"T#p0+TH"kl#wl0+TH"kp(i(0+TH"k|#w 0+TH"k#w00+TH"k#w(0+TH"k#wl0+TH"k(iT(xO(_&_NuH0QOvA <_AKPN| J@g &|`DEGHRHR"J KpNPOJ@f$AN @ h0(@6J@k|l60POL Nu// N&$x CN$j jd0*HY@f |<` |`,` j($_&NuH0YO(v|fA r0NtO *"g @1j> j"1j@0*Jg"*LgC> AApNHj$_6Nu?/ E g< @0G& R1y RBh R1yAcN6J@k RrNR$_6Nu/ / OE RfH?*?*4*2*09NXXO4J@n4`&Hjr0NXOG0*:fLHkHkHk"K jN~O HkHk?+?+?+C K429B@NO`h667j8 *"g @7h7h` j7h7hHkHk?+?+?+C K429B@NO667j8HoHoHo Ho rB@NtOpC KaH?+?+4+20NXOa Ja` r 0NO&_$_Nu?/ 6E Rga,JCg0NH0Nr4$_6NuH8O$H gV PfDI~?,?,4,209NXXO4J@n4`Hjr0NXOG0*:fLHkHkHk"K lN~O HkHk?+?+?+C K429B@NO`d667j8 *"g @7h7h` 7|7|HkHk?+?+?+C K429B@NO667j8HoHoHo Ho rB@NtOpC Ka?+?+4+20NXO Ja` r 0NOLNu/ $H" g PgJ@g0NH0Nr4$_Nu??0Po`02)ho`2(4i6hCl`4h6)i8(hDl`6(h23A8@3D0C3HBlClp` BiBiB@86NuH0>O$o,6/0(o2 gT"*"gL0<NJGHkHkHkHSr0NtO j"1S j"1kHkHkHkHSr 0NtO0**g"*Fg j""h$.*Q,i AA8#H"jFC8 j" h$ jFA*"j""i$#H`V"KA~aJ@g*"K LaJ@g?+?+?+4r0 j"N\OHkHkHkHSr 0NtO0+o2+n0<NJ0**g("*Fg" j""h$#W j""h$" j""h$#NO L| Nu// QO$o g4 Rg.HoHoHo Ho r0NtOHW?// aNO PO$_$Nu/ / &Ha$H/ Bg/a,O &_$_NuH06$HG"J2H ЀЁ S p PN|J@g0"J2H ЀЁ S p PN k f ?Hka<\OL Nu?/ Ep ?Bg??*r!?t ?/9N$O6*RjB0*R?Bg?r!?t ?/9NO0*RC5@$_6NuH $H8N&CJDor|oP0H"J2HANB@` R@2HAmCAB@` 2R@4H…BmB0HH@J@gCl JNLNuH0ON6N8Gp@2I<?4p j<BEA <_IDTN| J@g?trp JN}TO`&B@+?BA?BB+?Cn JNh\Op Ja JpaGp@2I<A4x j||P6|doSdA <_IDTN| J@g2p JN|X`"?+H?+H?C} JNh\Op JaZ Jpa~O L NuH4QO$H&I g~ PgvHj4Hj2Hj0Hj.r0NtOK fHoHoHo Ho r? yNO5@5|*0NH0NrB@NpN?-?-4-2-p NXXO42-IA2AH ЀЁ Sh Sh k f4B\B?Hkan\O4L NuH(QOvEI0g Njmap?Hla0\O`| jg 6*paab0n jg 6*paaHHoCp TNXO T?h?hCthDBBAA0,N|g0aPOLNuH0*"H|gJCg *(g JB@az&J Ja$H g Ka Ka& g *4fL Nu/ / O(H ygEHjHjHjHRr09NtOHoHo?*?*?*CA429pNO g?l?l` ?|?|HjHj?/?/?/C J4/29B@NO?*?*?*?r09NPOB@NpNO(_$_Nu?/ $H6ad$H gN"*FgH"A4)"J|f A0a0BFp Ja rB@ Ja8By*rB@AJN3$_6NuH,O$H6/* CANhXOAa *(g CNFG$gI$9CK Ja+H9j/*(CANhXOHT/*(NPO%@$JCf ELCK$f"@ Mp(N%M$+| *$f j"j"JCgB$OL4Nu/ / $Hpj"f4G/* C KNhXO Ka JN{ Ja0(fB@ Ja&_$_NuH>6a(HE"4Gl`20¹Ff$r 03N"|0Aa,`VRR Rm4`0 sgRR RmIT6K< Rl0A(mm` 0*VH upN`0aT"T#HF5h CNFG$f0*VH upN TBF` T"hF )(f IaL T"hF )(gnCXHNMhB@ TXHN`,`S V  f VB TXH"Vf TaB@ T hFa+T T hFaX+K( +Fg: @B@a`00*VH uxpN T hFa TBFaBgHSaJ\OL|NuH8(H&IE~0H2jSAHN& "<@N 80+H2*jSAHN& "<@N 9@0+H2jSAHN& "<@N 9@0+H2*jSAHN& "<@N 9@LNuH8&H$I0o`B@66HrI~ 2lSAHN 62*o`BA7A6Hp 2,lSAHN 7@6*Hr 2lSAHN 7@6*Hr 2,lSAHN 7@LNuH>OI"lANE CANCAN "&HM f2,I vpN`RHnC KN*XO?.C KN*TO?,C KN*TOK Tg8HmHmHmHUr0NtO"M Ma?-?C KN*XOv`024@gJHmHm?4D?4B?C M44>B@2NO"M MaB?-??C KN*\O`T0248gHHmHm?4CN$H gCN$H gLN?@2k>|@n8J@k4|@n.C4Aa~0A1:1QOE j"fIKMG4|Ggn6| gn|g|gĔ|g`V|9gB| g<`F|Pgn|G7g|g|8g` |P2g|!gN`r?A?A?A>4**f| faߖJ@g C Ja`ړ Ja`par` Tg 0Ta`pa09f`pa09gp` TgpSrVAl`pV2@l pAa `^HzBgHUBg0Vo`B@?p?r"?t!?p ?/*N:O`& Tf"0or@tVBl0`pVa`0o pTa`HzLBgHUBg0Vo`B@?p?r?t!?p ?/*N:O`B@aZBU`pVaN0V:ap ?HRaT\O` Tf B@a(`zHzBgHUBg0Vo`B@??p"?r!?t ?/*N:O`D Tfpa`6HzBgHUBg0Vo`B@?0D@?r?t!?p ?/*N:OB@POL|NuH 86EJBgV0H y4H"ҁ҂"R"q ""Rq y40g "Rq `*2H ЀЁ Rp `2H ЀЁ RpLNu/ / EG0ot`BB2pa` Rot`BBrSpaJ Rot`BBrSpa4 Rot`BBrSpa Rot`BBrSp a Rot`BBrSp a Rot`BBrSp a Rot`BBrSp a Rot`BBrSp a R ot`BBr Spa R ot`BBr Spa&_$_NuH>ON2$HGBd KNICANCANBTBkB@ANt6` RkNf6JCgK. g @N0+Hap* fBl`0B@ANt6`M`0H U0RCg<.fANC NN|J@f0H U1` 0H UBp`0H U 0RC|m0H UB0RTNf6JCf 0kml T opT2,@l`rT9A`Blp ?Bgr ??t?v?/+@N$OBBgpTo`B@??,p?r?/+@NOp?Hk*a\OaN JNOL|Nu/ / QOa2EI0g N| mp?HlaB\O`O|6N2.IAXNEGC JNζ|g20CH"k0 JNB@ JN`*HSM  gRMBM C JNB@ JNt8`N2$HKg MB@N`*HSM xg XfDHnC0CH k0aXO0CH k0Bp2H ЀЁ Th`P zg ZfVHnC0CH k0aLXO0CH k012H ЀЁ ThpC?Hla \O`Nf8JDg" WNOL|NuH $H<BCxz4JBg SBgSBg `2z6E`*x`&2H ЀЁ224Dg0`p Agv`EJCj0LxNu?6J@f BAB@a606NuH $H682H ЀЁ rg rg rg02 J2aS@fp`2H ЀЁ62CfB@LNu/ UO&H>HWCX42+X0+V kLNXO7@Z0+\0gH2+Vg( kLB@rabJ@gtC\20+V kLN` kR05 kR1W7|XBkZTO&_NuH $H8:? jLB@r4NTO5@XR@frpN|BjX`CX20*X jLN^5@ZL0Nu/ / EG0HRS@ S1@ S2(@VA1A S"S3h S0(hhFU@1@ S2(hF1AB0*Rjo4*RjBA`2*R5A0* RmpRa0*H Sh0* ShBa&_$_Nu??QO68ar|f 09CaB@NHoHoC ABBrpNlPOpNPO86NuH0&H$I860HC@N~B30JDo0DH/ JNc0G0H/ JNd Sh Sh(` Sh@ Sh@(L Nu// UOEp(@2(|IA JpN&JkAr0N0NBTO$_&NuH>(H&J <8a$H g$"<8B@N LNRa%H f09xHA< p@pN`C LN ",H g"NrA <N rf jd f"L j N *$a*H g2*(m(c JB@a m N/ j NcR m N j NRa*+H f0" g Ja09xHA< p@pN NN *`0"j m N&M` Ja҄&J NN * g Ja KL|NuH8&HC k N "(H g"LrA <N rf LN * kd fr@B@AN"<2B@ANB@`R@|lA(f` A| R@|mB+0+"H|g.# Kap KaF0+"H|f KB@a(Bpk"g KaѶ$K` LN *(k4 g Ja LLNuH<$H8BC0*a&HIK0|$gn6||b@0;N|Nb||?g8n|(gDS@gF| g\`|Gg|g| g`f JaϘ` f Ja`~g gt2+*gHjBg/ a׮O `Z0+Jgn2+,fb4+^g* kLB@raJ@gtC\BA0+V kLNBk^HjBg/ a^O kR0p C kR\HN7|X`Bk,`HjBg/ a&O +Fg @"h$")g*Hj/NPO` gr 0N`BgBgBgBgr0*NPO`~C Ka.`pC Kaܴ`b;| gV"-gaJ@fJDg0,*f Ka`2f ;|pa0+Jg kR0 kR1j7|X`f09g`p kFa<` g?*?* ?* ?*r0NPO Ka: +Fg @"h$")g4+*f*Hk>/NPO`Za`B@at g$2+Jg kR0) kR1j7|Xp`| gL"+FgF A"h$$)$g:*Bg/N\O*`( jaJ@f` j aJ@f` rpN|vJCg$ g 2+Jg4+*f"J kRpN7|XB@L<Nu?/ QON6NErA4J<?2t i<AB@*?BA?BB*?C y h$ PNh\Op@2I<A4p j||P>|doWd?/H?/H?C y$h< RNh\OPO$_6NuH>OX6:8GA"Cp'QE?4rB@ j"NTO6 j"fMKI(0|"bb@0;NVV V  ""..::FFRR^^jjvvVFhpaHzݬBgHkBg0+ko`B@?p??r!?t ?/*N:O` paܶHzjBgHkBg0+ko`B@?p??r!?t ?/*N:O` patHoCp! jNXOol@Hz BgHkBg0+ko`B@?0+D@??r!?t ?/*N:O` DHzBgHkBg0+ko`B@??+?p!?r ?/*N:O` paHo0p?N\OpNJ j0( |gh"p!?HRaӸ\OHzPHkBg0+ko`B@?p!?r ?/*NO j0( |gh"p!?HRah\OHo0BgN\O` f2B@a` Z2pa` N2pa` B2pa` 62pa` *2pax` 2pal` 2pa`` 2paT` 2p aH` 2p a<` 2p a0` HoCp jNXO j?ht?hv?hz?h|?h~?hHozHop?r? kft`t?2*0HAHHwNRO<|b T@0;N VHyr0NXO%j" jaݴBgHRa\OBgBgBgBg j?(?(4(2(pNO "MB@ JNq`Hyr0NXO%j "BDCA(NCA(NBEr0C( j h\ Pa?+C j h PNhTO%j " j aBgHRa\O"MB@ JNq6R@|bt@0;N2hhhhhhhhhL0hhhhhbhlH0|g|g`"C(ANAa j "h QN7@Y@lr`2+7A| op `0+7@ax`C(AN0*H/3HVCAaPO VfJCA(NA(a,CA(NBEr0C( j h\ Pap?HRa\O j hZp?HRa\O`:A(N2Htd"RE`JEoSEr0C( j h\ PaB`BgNTOJ@gTC(ANAa~ j "h QN7@Y@lr`2+7A| op `0+7@aaF j hp?HRa \O`0*H spNS@fJHo0p?N\OpNJB@aC(ANAaNpnHo0BgN\O j h:p?HRaΒ\O`HoCp j NXO j ?h?h?hz?h|?h~?hHozHop??*r?HkNRO kg0+ka/H,B@aԴ o,aNaBgHRaɮ\O`aHyr0NXO ja0%j"BgHRa|\O"M/ |fp`p J"_Nq  j"h<"QTI LN~B, LN:S@o2`r:| l`r :`:0H@ j"h<"Q LpN~B, LN:S@o2`r:|l`r:U0N`0|g|g` B@ MaD`P Vg Vf2H ЀЁ jp jaҸ%j"`Tpa` j*f Ja|B@OL|8NuH>OBCE JaMHG(<4 SgR k"fR BE`0I2,Jg`4,XgZ0,VBgR9BVBlX0,^fDHoFr B@NtXO0/FTf,r lLB@aJ@gtC\BA0,V lLN9|^ TgxR ,Fgl @2Rt Ago (` (p lFPg5h5h 5h 5h 5h p lFPg5h5h5h5h5hRE|m 0|5@"t5A09g Sg09f JN<`BFpNHoFr B@NtXO0/Fa(*H>"?j$?j&?j(z`X0I",FgF A"h$$) g:#Hj,Hj*HoHj.?/NO<#J@g lFB@arRE|mpFgA.0*(aƆ@p Fg SgD2+*f>+CANANB3ANHkr0NXOz`l0I" g\$,FgV B"h$.) gJ٨ lF$(m8BV#HV"h$/) NPO# lFB Vf B@ lFaЖRE|mapFg2*$0*"Na(H g2,*gSAfaL`v0,Jg4*,2*$ L0*"a`Zf4*,2*$0*"aȆ@`B lF"h$ )g4BV#HV?*,Ho/NO# Vf B@ lFapFgt" gn4-*fh8-Jg M0**a`Vf2**0*(aڜ@`B mF"h$ )g4BV#HV?**?*(/NO # Vf B@ mFadBE`^0IrFgL$ gH(,FgB D"h$.)g60,*f0BV#HVHo/NO # Vf B@ lFaRE|mBE`^0IrFgL$ gH(,FgB D"h$.)g60,*f0BV#HVHo/NO # Vf B@ lFaΜRE|mBE`0I" g4,JgJCf8,^gB>,Zg 0,Xg6lVg0 Tg&rB@ lLa>J@gtC\BA0,V lLNBl^0,Zg lXf0 ,Fg @N{ ,Fg2,f @B@a` 0,Zfv`BCRE|mT09g8 Sf2v:`&0 sg5|.5s4A.B@aRE|m09g2+Jf49fBy09gv09gBgHSa\OBy9gLaAaH*H g2a -$a*H g BE`0af0aΤ` REymB9B@NJCf 09gOJL|NuH>O3&N2/HABdNKM"M NNC NNC NN ".I gP`4p LN`&H gB"M NN"L NN NaZ rg"W0< LN f WN *"M LNC LNp LNt6`."M LNCB LN La rg Nf6JCg$y` Ja<$H *4fBy&Bm oNOL|NuH8$H6&I"*"fp`rB@AJN%j"L5CP%KR0 j"aT5@XBjV5|ZBj^rB@ KN5|J(j"B@NapN0*^g, Rg&r jLB@aJ@gtC\BA0*V jLN%L"09g5|X6)7yBjJ0*XLNu/ E$rZB@ JN4f5|%|%| %|%|%|R%|$%| %|$%|:(%|,%|0%|4%|8%|<%|.@%|D%|H%||L%|P5|T%|VB%|%|B$_Nu?/ O6&HCACNHf 29g|o kg "HANgAaJO&_6NuH6O6$H,IaG CAN6KD g6 @ =f.R"W MN MN 5\g C MN`09gBD`lpC 2H vN`J@fP0H.`R Wg<=f W =f.R"W MN MN 5\gC MN`RD0H"6fC MNHp\ MN`. gR WB`N09g*JCo& Rg p\N`. gR WB"R MN`C MN |Gaζ<A o OLlNuYO09j6HWHoCA p NPOJ@g0/|| mr`BA309fp`ɑBBrp NZB@XONuH8QOEGIHRHR"J Kp NPOJ@g0gHRHR"K Jp NPOJ@g0gBgCABBrB@a TOJ@gj89W0f2,f 89| yHm"Pi>0"Pi0,"Pi0@"Pi0,@"Pi"Piip"Pii 0"Pi0@"Pi0"Pi0,"Pi0@"Pi0,@"Pi`&BTBlBR`20@AHApRR RxmPOLNuH6OB6/H&I6/H&IMa-PXNH=@R@gBDEr` 0@5RD| m5|HnHnCANPO=@=@HWC JNXO0.gdK yHg;|EHjHjHjHRrB@NtOBD`Bg0@DHAHpN\ORD|xm-U-m-m ,-m-m-m-mE%n" n"h QN n2(H=A n"h< iN n"h<2)H=A V1|. V1|F V1|^ V1|v V1| V1| V1| V1| V1| V1|B V1|*Z V1|?r V1|T V1|i V1|~ V1| V1|C6 n hNCEAN / f|0C n hN nh nhBD`2p4A aRD|m%n"CQAN+JHn"K o0aXOana=@jBn0.aaB0.a09f2.IA p0.N =@0-f29f4-ga`0.HA ppN0-grBpN+H -grಀf pa+H0-grBp N+H -grಀf p a+HaBaJ@gm@aHm/B@OLlNuH0$HN#&H fB@`z#A`N6fX kf7|ApN`< g AN7|Hk> j$ PNXOJ@gp`B@7@A`pN#0L Nu 8NuH0&&HAa ~$@ " gf g&p` gPJ`B@L NuH]O(H&>RAfN>G&pf K <_IDTN| J@fBCb0+H|J@gS@gS@gS@g` I`A`A ` A`A"L`H|dg| g4| gX`rW0H <0<0f 4J|gRI`2I|0H <0<0f4v j|gZ`2p i||4v j|g&0Hd4H… <06HÇ HC<00HdH@2H <00H H@<0`0+|g 4+|`RIf \OLNuHO/H&(*>2 WfN>G &pf K <_IDTN| J@fB/DpfA <_IAMN| J@fBK*pf M <_IPMN| J@fBpW|fAz`A/H o`&H|Hg[Agr]Ag|g`0r h|4+v j|JBgUBg`| m| J@fp ` | m| 2H <0<0f^4vj|gT`P0H|?2H <0<0f44v j|g*`&pW@2H <0<0f 4v j|gRH2H HA<0`@0r h|| lI`(MBA`RA|lf`2|g 4|`RH"oRf OL88Nu/ AH0(f1|BCEr`$ Ed$_Nu09Hfa yH g#HNu H#HNu"P g INu" INuH8&H(Ia$H g &"LG&&Bj JLNu/ a&H ga&_NuH8O$H?@ &P2+ fp4+Qm6`60+k2iAn8`8i0+im:`:)0+k 2)iAn<`<)i0C>>EJ@oJGn K`Iko*89k9k0k9@"L Ja $H gko$89E0k9@9G"L Ja$H gh0/ g Ja`$K0+k@l89ED9@9G"L Ja$H g.0+k @l&89F9kF9@"L Jav$H f`&0/ g Ka>`7C7E7W7G 7| JO LNuBNu/ / $H` &R$ Ka f&_$_NuH:QO$H(I,oa&H(T`:AC"" g C NaJ@gC Ka&H f JaB@`7l (T fpPOL\Nu` hh P$fNuH8$P`J&J`>0*lf22*lf(4*j lf0* l f2, j Ka`&L(S f$R fLNuH4)ihnt`BB6)8(hDmv`BC8)i hnx`BD:)<(h Fmz`BEJAn0JDf0J@nJBg JEfp`B@`B@`FJCg JEfp`B@`B@`2JEgp`*J@nJBg JDfp`B@`B@`JCg JDfp`B@`B@LxNuH<$H86&P$ gD`<20"L Ka J@g**J`20"L Ua J@f*Uf Ka4"H Ma8`&L(S fL<NuH4O$H6*Ia&HHoHoHo Ho rB@a HO g C MaJ@gpKHmHmHmHUr 0a O`>"MAa`J@g"M Ka&H f JazB@`.HmHmHmHUr 0aO0-o2-n JapOL,NuH,QO/H86EB"RAa?j0jS@?@2*jSA?AA0ra PO$_6Nu?O6B0A>2(B?A4hSB?B0/hS@?@?P?h 0/hS@?@ 4/ hSB?B0aR0aHoCAr0aXOr0a,O$6NuHYO:&H68(IJAfJBgxpa0<a>"K0AaJ@g>20Aa&W`$0+ g42A09|a`A0N&S fAa` "L0a0<aB@a@NAO $_NuHRHP?<NA\O$_NuH>?NAO $_NuHR?</NATO @$_NuHR??<>NAXO$_NuHRHP??<NAPO @$_NuHR?<ONATO$_NuHR?HP?<NNAPO$_NuHBg?<VNAO $_NuHR?HP?<=NAPO$_NuHRHP?<&NN\O$_NuH?>:/0/4$o8&o<(o@*oD,oHBC`N2H ЀЁ(2 22||| bA2;N\ 爐"3'"3'"3'A0H"ҁҀ% `"҄ҁ"5 ЀЁЀ oX"҄ҁ+"5 ЀЁЀ"҄ҁ+ 5+C2H ЀЁ% `R"牒ҁ"6 ЀЁЀ oX"牒ҁ-C2H ЀЁ% ` 4H"ҁ҂% ?/ N\ORCCnBC`0H oL"0!RCCnBC`B0H oP(0$犔Ԃ*6("ҁ҅ҁ"oX-(*0"牒ҁG!RCCnBC` 2H oT$0 ЀЂC!RCo6m3* y"hF3|L|Nu/4B||JAgv`v0|o2|`2A&NuH0 QO$o6/p4H"ҁ҂CANr0a4H"ҁ҂50/BAa4H"ҁ҂50/ral4H"ҁ҂50/BAaR4H"ҁ҂53*&9g C"hF3|POL Nu?6JAg8"HH"ҁҀ y p pN>2H ЀЁ yp`2H ЀЁ yp6NuH,QO*H>:<8/.Ep Rh>rh?Ath?Bph?@6(`Jp4H"ҁ҂ Rpg"JDgB@`p| F@4H"ҁ҂ Rp 2H ЀЁ R60JCfIC~ R h$NC R hp2H"u R hTN>p2H"u R hlN>pC R hN~ Rh Rh8 RhP Rhh Rh6ERCJCo pyㆶ@l4H"ҁ҂ Rp"JEf Rh" Rh"0yT@@f Rh Rh`ܾ|mr`BA Upaj|mr`BA mpaT|mr`BA mpa>|mr`BA m pa(|mr`BA mpa|mr`BA mpa|mr`BA mpa|mr`BA mpaо| mr`BA m p a2EH ЀЁ Rp"?/?/?/4/rB@ RN\OPOL4NuH?O,ox0/*o&oBFv8z?D>?o~~ANH0/|yo?|>I T1U T1mKJBU`,0H vN@l0H vN`0<RU0o|mrFI T1A?0/~yl`0922I@I@ T1ApFH T1@, T1@D T1@\ T1@t T1@ T1@ T1@ T1@ T1@2/~kD4/>g>8|yHƍFJDo0`B@82/|yTAAl` 0/|yT@8BoHo CB@ TNXO T?h?hp"KAN* G@p Th6rh7Ath7B|h7FpNBg?/@4/20/ NaXOHo(Ho*C,A*N&POpo&gBo`?|> T?hAN<?/$4/$r TB@NTO>rFg4/fR@g~6r0H$ԂԀ Tp(g6rp( f.2H ЀЁp ?+?+?+ T0r4N\OHo C0 TNXO?|2H ЀЁ T?p of|gFp4H"ҁ҂ Tpg.00 |?@Ht???+?+?+0BA4N`O v|g6p4H"ҁ҂ Tpg6pp f.0H$ԂԀp( ?+?+?+ T0r4N\O?|Ho C0 TNXO2H ЀЁ T?p`Bo T?h ?h ?hpFg2/>gp4|bB4; N  $,JDgSD`*:`zD`zD`~0/|yT@@llRDp??/@4/2 N0/aXO`L0| bB@0;N8 $(,04BE`"z`z`z`z`z`z` z`z`z|gHUHU"M MBBrpNlPOpN?+?+?+??+?+4+2pNO 0OLLxNuH? $o /&6/(8/*0N6@mH2/,f"0H$ԂԀ0H"ҁҀ5(`2H ЀЁ2H$Ԃԁ5(`p0/,f64H"ҁ҂:20Hðo.o`0/.4H"ҁ҂5`42H ЀЁ:24H…ôo.o`4/.2H ЀЁ5LNuH UO$H<>:8/6/ DlBDo0`0:Cl2`2:AgBAfF2H ЀЁ>20H$ԂԀ犞r(`dCo0`0:Dl2`2:AfBG`DEg2H ЀЁ422H ЀЁ爔r<0H2DHN2DHN .0TOLNuH UO$H<>:8/6/ DlBDo0`0:Cl2`2:AgBAfF2H ЀЁ>20H$ԂԀ犞r(`jCo0`0:Dl2`2:AfBG`JEg2H ЀЁ422H ЀЁ爔r<0H2DHN2DHN .0G>0TOLNuH00$o6/&o"?/ ?/ 4/ 20/ Ja@XO4H"ҁ҂5& gpgNL NuH00$o6/&o"?/ ?/ 4/ 20/ JaXO4H"ҁ҂5& gpgNL NuH?4]O&o./4:/66/:8/<$o>*oD?R y!K"38ֺ|g.Eg*Eg&2H ЀЁs 9g ?/N0\O0/8RClRl2`24Ao0`04`Rl0`04@o2`240/BfB?????/ aO`B?????/ aO0/Rg" gN 9g ?/N0\O?R09gBo`HWHoCAN&POpof>|g.Eg*Eg&4H"ҁ҂s 9g ?/N0\OBy\OL,NuH86/Z$IBo$?Q.pNHo HoCAN&POI,K& o\f2Ho "L0/4 KNXOHo "M0 KNXO0/U:`lHTC0/4 KNXOHUC0 KNXO0/U:`: o\f Bo09y?@>?|`BW09~y?@?o?|HoHoHoHoHo BgBgBgBgBgBgBg?/(?/(?/(?/(p?BgC@AB42pNO.?@$r@gBo* o\f(??4 K0/42aXOToUN?@(`&??420/4 KaXOToUN?@(Do:R`:R o\f(??4E20/4 KaXOToUN<`&??4E20/4 Ka"XOToUN<o(l?E*?F(JEgRE0E@g@fDo:R`:R o\f(??4E20/4 KaXOToUN<`&??4E20/4 KaXOToUN<o(l?E*?F(JEgSE0E@g@f3//^?/`/ ???/8p???/D/ aOBypo$gpN?o..O2L"_2NuCH#H 2222"<+`HQ3H#J"<,a"_2"o2NuHQHPCH222" 2" @Qm~ЏЫм '8IevчѣѴ0A]nқҬҽ(8:<LNP`bdӃӅӇӘӚӜӰӲӴӼӾ (*,79 ;DF HQS U^` bkm oxz |ԅԇ ԉԒԔ Ԗԟԡ ԣԬԮ ԰ԹԻ Խ  49>X]dm t{Մ  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        !  !        ! ? @+6 -* @/6 )? @# ) @# ) @#?)%@ @#"%D` ""#"  ""#%@ "b 0#%A" " 3#? %@3#"%A`"UU?%@ "`%@J"? ?qyyq @+- @/) @#0) @#0) @#0) @#0 ""# 0""0 ""#?""0 0# 00 0 3#0003#00UU{UUP?HyJ0Dxx 1AIA< 0`  @?  ?< 0`  @?  ?Ջ HN՘ Hnե H.ղ Hտ HN Hn H. H HN Hn  H. H' P((`>8 P((`.I T  10"``0`0 ` @@`@` A?0 3a4` q8``10A0@1 0 #  a`b@.brBC|0     X       .   J  f  8  Z |      *  "  "!! !   aր֟־ :!Y   xFb~   ׉  פ      H & H     &ק׿  @ @  B ^ z@   %  !  @ @ @  @  @"  @>  @Z  @v @ @  @   @@ @@ '   :    Vr    j $LƌȜD mؾ ^ٟ\ڕ>{Yn܌ܴ^ݪ(2 C:\CPX\ދޒޚޟާޯ޸ #.@RZd|ߔߝߥ߮ARGSU:\PIPE\DRAGDROP.AA,;JYl__:__:__xxxx__.__.____1234567890123456 ________________xxxxxxxxxxxxxxxx1234567890123456 ________________xxxxxxxxxxxxxxxx1234567890123456 ________________xxxxxxxxxxxxxxxx1234567890123456 ________________xxxxxxxxxxxxxxxx1234567890123456 ________________xxxxxxxxxxxxxxxx1234567890123456 ________________xxxxxxxxxxxxxxxx1234567890123456 ________________xxxxxxxxxxxxxxxx1234567890123456 ________________xxxxxxxxxxxxxxxx1234567890123456 ________________xxxxxxxxxxxxxxxx1234567890123456 ________________xxxxxxxxxxxxxxxx1234567890123456 ________________xxxxxxxxxxxxxxxx1234567890123456 ________________xxxxxxxxxxxxxxxxRalf ZimmermannAm Ruhwehr 3565207 WiesbadenMausNet: Ralf Zimmermann @ OF2! Beta-Version !Weitergabe verbotenGermanyinternet: dl1fdt@amsat.org12__9912345678901234567890123HauptdialogCPX VerzeichnispfadCPX-Module1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678abcdefgh.ijk____________XXXXXXXXXXXX1234Version : __.__ 9999abcdID : ____ XXXX____Resident : ____ XXXX123456__:__:__999999123456__.__.__999999123456789012123456789012123456789012123456789012123456789012123456789012123456789012123456789012123456789012123456789012123456789012123456789012CPX-Module ladenModule auswhlenzCONTROLOptionen123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890Copyright 1995Version 0.0x Jan 01 1234 OKEintrge fr CPX-ModuleSprache DeutschSichernOKAbbruchOKOKDateiname :OKAbbruchZeit :Datum:CONTROLKONTROLLE[1][zControl:|The maximum number of|CPX-windows is|already reached!][Cancel][1][zControl:|Die maximale Zahl von|CPX-Fenstern ist|bereits erreicht!][Abbruch][3][zControl:|The module KONFIG.CPX|can not be loaded.|(see manual)][Cancel][3][zControl:|Kann das Modul KONFIG.CPX|nicht starten.|(siehe Anleitung)][Abbruch][2][zControl:|The File 'ZCONTROL.INF'|could not be created.][OK][2][zControl:|Die Datei 'ZCONTROL.INF'|konnte nicht erzeugt werden.][OK][2][zControl:|INF-File could not|be closed.][Seen][2][zControl:|INF-File konnte nicht|geschlossen werden.][Na gut][3][zControl:|Error while opening|the file '%s'.][Go on][3][zControl:|Fehler beim ffnen|der Datei '%s'.][Weiter][2][zControl:|File '%s'|Line #%u|not evaluable.][OK][2][zControl:|Datei '%s'|Zeile #%u|nicht auswertbar.][OK][2][zControl:|The file 'ZCONTROL.INF'|was not found.][ Bad ][2][zControl:|Die Datei 'ZCONTROL.INF'|wurde nicht gefunden.][ Schade ][3][zControl:|Not enough memory|to load all CPX modules.][Cancel][3][zControl:|Nicht gengend Speicher|um alle CPX-Module|laden zu knnen.][Abbruch]Path for CPX modulesPfad fr CPX-Module auswhlen[2][Reload CPX modules?][Reload|Cancel][2][CPX-Module neu laden?][Laden|Abbruch]Yes Ja No Nein Control Panel Kontrollfeld[3][zControl:|This version does not|run as an ACC|under Single-TOS.][Cancel][3][zControl:|Diese Version luft|unter Single-TOS|nicht als ACC.][Abbruch][3][zControl:|The CPX module could|not be loaded.][Cancel][3][zControl:|Das CPX-Modul konnte|nicht geladen werden.][Abbruch] English Deutsch @(#)zControl Control Panel, V 0.23, Copyright (c) Ralf Zimmermann, Dec 27 1995CancelAbbruchSaveSichernOptionsOptionenDistribution prohibitedWeitergabe verbotenFilename :Dateiname :Date :Datum:Time :Zeit :CPX ModulesCPX-ModuleEntries in PopupsEintrge im PopupGeneralAllgemeinEntries for CPX ModulesEintrge fr CPX-ModuleLanguageSpracheCPX PathCPX VerzeichnispfadReload CPX ModulesCPX-Module ladenChoice ModulesModule auswhlenCPX ModulesCPX-Module .CPX.CPZ U:\PIPE\DRAGDROP.%c%cARGSZCONTROLGEMINI GEMINI GEMINI %02u:%02u:%02u %02u.%02u.%02uLoading: %s rbmalloc: 0x%lx bis 0x%lx Initialise: %s c->code: %lx Call: %s ZCONTROL.INFwCPX_PATH = %s ANZ_DISP_ENTRY = %u COUNTRY = %u WIND_MAIN = %u;%u WIND_CPX%u = %u;%u WIND_CPX%u = %u;%u rb = =ZCONTROL.INFrCPX_PATHANZ_DISP_ENTRYCOUNTRYDEBUGSTDOUTSINGLELOADTRUEWIND_MAIN;;WIND_CPX;;*.CP?.CPX.CP?.CPX.CPZ.CPZ.CPXrbrb%02u%02u%02u%02u%02u%2uInfo... Settings... Open CPX... CPX Info... Remove CPX... Info... Voreinstellung... ffne CPX... CPX Info... Entferne CPX... zControl-beta zControl-beta *.CPX%2u*.CPX zControl-beta %04x zControl-beta FILESORT.SYSr*.CPXHOME\HOME\C:\Version 0.23 Dec 27 1995 zControl-beta m/d/yd/m/yy/m/dy/d/mH:MpH:M:Sp(Qx2[2][Save|options?][OK|Cancel][2][Voreinstellungen|sichern?][OK|Abbruch][1][Error at|memory allocation!][OK][1][Fehler bei|Speicheranforderung!][OK][1][Error at|read/write|of files!][OK][1][Fehler beim|Schreiben/Lesen|von Dateien!][OK][1][File|not found!][OK][1][Datei nicht|gefunden!][OK][3][zControl:|The module uses|a nondocumented|funktion: reserve1().][Attention][3][zControl:|Das Modul verwendet|eine nichtdokumentierte|Funktion: reserve1().][Vorsicht][3][zControl:|The module uses|a nondocumented|funktion: reserve2().][Attention][3][zControl:|Das Modul verwendet|eine nichtdokumentierte|Funktion: reserve2().][Vorsicht] r+HHHIJK>K~KMLNK~KLMNr  V8z  v*$,.b 8F `   @F0R"<*D 2 X68DHP& 0N00 R.2 BF6 * @&&(N0.$ (&p,:z $&X($($&T($$.`0fJ $*$&L: RN  r( ^,. B$("(4 `(F T "   : ,"F.24d2*, "  $: 6   $  ,  4  &$ (ZfprF$J $0NP* (*    :> "8"0 .    @(2.B64\,$B H B"@< L0`( >B  "&l>. H:Z  0HZt:<8 H06 .6$z 4$ . 2 . . : $b0 H P @:j ^ H P 2@  :      .6 2    .  2 ( N |@$ P" > B$*@   .\ b "X. 2jn0 ":4< &( d4.*flZ $0x & 2 0$  \>(>(\(*,& &  "$** ($    0&Z("n&$$  4D  .(4^J00H`x000`0000 :5 1 0 0 0 0 -32768 0 1 0 1 1 2 0 0 0 0 0 0 0 1 5 1 0 0 0 2 288 0 1 0 1 1 2 0 0 0 0 0 0 0 1 1