`8IBM p| Hy NMHz<<b Hz`&O`?< NA.KNu (Ver. 18.4.91) p Hello !! I am your personal boot sector GUARDIAN As long as I display this message YOUR BOOT SECTOR IS NOT INFECTED BY ANY VIRUS --------------------------------------- This guardian was placed on your diskette by FASTCOPY PRO (c) 1991 ICP Verlag, Martin Backschat q @`  @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+-//3A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!Aa!AaAa!Aaǁɡ!Aaׁ١!Aa!Aa " B b  !"!B!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(B(b((((()")B)b)))))*"*B*b*****+"+B+b+++++,",B,b,ǂ,ɢ,,,-"-B-b-ׂ-٢---.".B.b...../"/B/b/////0#0C0c00 0 0 01#1C1c111112!#2#C2%@`  @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+-//3A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!Aa!AaAa!Aaǁɡ!Aaׁ١!Aa!Aa " B b  !"!B!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(B(b((((()")B)b)))))*"*B*b*****+"+B+b+++++,",B,b,ǂ,ɢ,,,-"-B-b-ׂ-٢---.".B.b...../"/B/b/////0#0C0c00 0 0 01#1C1c111112!#2#C2%BASLIB35 t0;BASLIB_4 |mCOMPILERPRG =CUTLIB PRGqZd#FPULIB35 /u+GEM LIB`W|cOM-BASICHLPFeZ<OM_BAS_4PRG \a1`*oM(OGaDS\aNAJk.LNN4ECAN'T LOAD BASLIB_4(  lp,p@I`OMIKRON.CompilerNrN4м-@p .pGN6$ <ٙrN,NrNrN4-@pN-@-|I<-|)]@Q-|Hp-@Lp-@TN#OMIKRON.BASIC Compiler Version 4.08ENP+mlh@p-@Tp-@lAHNp-@$p0./ &@ .$`"E .$NѮ@+mlh .$R-@$o&_p -@D .DR-@ -|j0 .pNpNN B`H pNpNpNpNpNpNpNpNpNpNN ` &pNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNN *`r pNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNN `JpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNNN` pNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNN`pNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNN`fpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNNj`<pNpNpNpNpNpNpNpNN`~$pNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNN(`pNpNpNpNp NpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNpNN`pNN ` pNpNN$`Jl .pNpNpNpNpNpN .@NpNN`l\pNpNpNpNpNpNpNp Np Np Np NpNpNp&Np/Np4NN`` <Npc@N <Npe@N <Npb@N <Npn@N <Npo@Npl@N <N <N <Npi@NpaNpf@N <NpNN`N`pNp NpNpNpNpNpNpNpNpNpNNd`NpNp Np NpNpNpNpNpNpNpNpNN"A -@`.`\*oM(OGaDS\aNAJk.LNN4ECAN'T LOAD BASLIB_4 .0/0<r$< NX .0/0<r$< NX .0/0< r$< NXpS/0?NX-@4 .$R-@$o&_CNlN+mlhrUpHCNl6$LxRN+mlhphf .hм -@lp-@$ .`/ &@ .$`.$nD .$ЀЀ" < JgR .$R-@$o&_ .\ @p0.RrF€$. ԂԀ&.lh .м0ЃЂЁЮ +mlh .м @p0 .м @ . .Tg-| FPU -|,` -| BAS .мU @". HAHp .м @ . .м @ LIB_ .м @p4r#WHHpJg$ .м @ LIB3 .м @p5$."<pN ./NGX .lh/NGX ."ЀЁ/NGXr2.RpF/NGX+mlh .TJg/<NGX/<NGX n"(ҁ n$( n (Hp/NuX&LJ[jDJjFWDdC8HCHCBCրJjD n((Hxp/NuXLJ[jDJjFWDdD:H@H@B@ЄJjDЃЂЁ/NGX+mlh` n"(/p/NuX"J[jDJjFWDdA4H@H@B@ЁJjD/NGX+mlh n"(/p/NuX"J[jDJjFWDdA4H@H@B@ЁJjD/NGX+mlh n"(ҁ n ( Ё/NGX n "ЀЁЀ/NGX n ((/NGX .DR/NGX ./NGX .Ю<Ю,/NGX n"(( n$ ԂԀԂ n&(փ n(( n (Hp/NuX*LJ[jDJjFWDdE?HEHEBEڀJjD/ n"(H|p/NuXL>J[jDJjFWDdA?H@H@B@ЁJjD"ЅЄЃЂЁЮ4Ю<мd-@8+mlhr$.DRp0.RvFƀ .8l -@8+mlh$.".pN-nhdphfp-@ .d\ @p0p-@$ ./ &@ .$`H . @ .d"@0H0 .T @$nH .$ЀЀ  $.rpN\d .$R-@$o&_p-@$ .`/ &@ .$`$nx .$ЀЀ JgJN Undefined 6$H0r .$/N XL NNN N+mlh$nD .$ЀЀ" < Jgnr .$/N X6$pr NPNtSBHkЂBdBAtAd2$HpN+mlh$nD .$ЀЀ" </NGX .$R-@$o &_A$r2pN+mlhr2.pJg+mlh . @p$.rpNp-@$ .D/ &@ .$`8$n` .$ЀЀ NNN/NGX+mlh .$R-@$o&_ .(JgpJg0p@Ѝм@ @ -@ .м @ м-@`NLOADER6$pNN6$ <NN6$pNNENP+mlhA$r2pN+mlhNstart6$pNHN6$pNN6$ <NN6$pY@NNENP+mlhA$r2pN+mlhp-@p(f \p-@$ .`/ &@ .$`z$nD .$ЀЀ" <`JgRr .$/N XENP+mlhEpN-@+mlhN- @pJAgfprENENP+mlhNP @pJAgfprENENP+mlhNF @pJAgfEtvN_NH+mlhCNl6$pr NPN6$pCd6 <NN6$$nD .$ЀЀ" <мЮNNENP+mlhA$r2pN+mlhR .$R-@$o&_-nhdp-@$ .S/ &@ .$`Nln_6$ .d @0HN xSDHkЄDdBAN6$/pNHtNL$NtAd2ENP+mlhEt v <NNH+mlhEt v/ $nH .$ЀЀ J$_ мЮNNH+mlhA$r2pN+mlh\d .$R-@$o*&_pNHtNL$HpN+mlh .(JgP .X//.NR>P/<NRjX/<N2*X/<8NRXNu` -_-_Nu/./.Hz .Xf N`".P^$. Bt <JWAHHJg".X^$. Bt <JWAHHJg" . @pJg T`R`".XW .P^AHHJgJfR$nH .ЀЀ rVHgb$nH .ЀЀ" <-@ . @ Jg( . @ -@ . @ . -n` . @ . .$nH".ҁҁ$N`8`Nu-_NuCA/!Hz`-_Nu/.Hz .İo0 .Xf N` . @p-@N` .Xf N`NJNu`-_(-_-_Nu/././.(Hz .l(NOut of system memory/?Nx\ . @p-@rWpWgt .R @p-@$ $g" .R @pЮT-@N<`8".X Art .V @pЁ-@$ .ZЮ$-@N@p-@NSfN SfN<6SfN<6SfN<6SfN<6SfN<6SfN<6SfN<6SfN<6SfN<6*.̚_SfN SfN<6SfN<6SfN SfNSfNSfN SfN SfN<6SfN<6SfN<6SfN<6SfN~SfNSfNSfN*.̚oSfN<6SfN<6SfN<6SfN<6SfN<6SfN<6SfNSfN<6SfN<6SfN<6SfN<6SfN<6SfN<6SfN<6SfN<6SfN<6*.̚SfN<6SfNSfNSfN<6SfN<6SfN<6SfN<6SfN<6SfN<6SfN<6SfN<6SfN<6SfN<6SfN<6SfN<6SfN<6*.̚SfN<6SfNSfNSfNSfNSfNSfNSfNSfNSfNSfN(SfN@ .J4f .X//.NQTPNJ .İo NL`J4f .//.NQTP .(JgN2N<`-_Nu$n0 .@RN>@RN>@ . @p-@CA #!` -_4-_0NupA0/!pA4/!HzTN>@".W ArW .W @pWgp-@RN>NNM .rSWp^gV .Jg6/.|/.N=P/.x/</.|/./.NFO` .Ѐм/NRX-nԀ@NMr^HH .|Jg .JgTpo(/</./</.x/.N=O` /</</.4/.Nk:O` /</</.4/.Nk:Or/ ./NuX"Ѯ0+mlh`,/.4/.pN1P/.pN/~Xp -@00 . @pr-f fRN>@ . .JgNoN .//.NQTP/</.x/././.N=O/.|/.N=P/.x/</.|/./.NFO/././</.x/.N=O/.x/</././.|NFO/</.hNI$PNo ./NuX/N-XX+mlh`HN(/<NRX/<NLxXNo ./NuX/N-XX+mlhNnJf8 .JgNoN .//.NQTP/</.x/././.N=O/.|/.N=P/.x/</.|/./.NFO/././</.x/.N=O/.x/</././.|NFO/</.hNI$PNo ./NuX/N-XX+mlh`HN(/<NRX/<NLxXNo ./NuX/N-XX+mlhR . @p[oVN< .T/NQX .4Jg .4//.4NQTPNu`-_A!!1-_0-_Nu/./.0A ?///.HzNJ NJ . @pr g NL` .Jg/<NRXNu`-_-_4-_0Nup A0/!pA4/!pA/!Hz-n".R Art . @pЮЁ-@N>@ .T-@-n .TJg(Jf .tJg/<NRXp-@tN6"NJ . @pYg NL` .Jg/<NRXRN>@$n0 .@NM$n0 .+mlh]"<a$. B4H </NRX-nT`N'NKPNJ .TJg(Jf .tJg/<NRXp-@tN6" . @p[g NL` .Jg/<NRXR/<NJ,X .Đ/NQX .4Jg .4//.4NQTP .Jg .//.NQTPNP-nX .//.NR>PNt" .T-@N( .//.NQTPN@NM/< NRX . @prgNu".R Art . @pЁ-@ . Юp @p-@pfr . /NXTN@$nP .ЀЀ .$RN"pS-@+mlh . @p-@ .rU€p>WpIWg>".pRJg.$n0 .W@HHp?WHHrIWHH فWHHJgR .$R-@$o&_$n@ .$ЀЀ$/./.N*$Pp-@$nP .ЀЀp0*S-@$p/ &@ .$`$nP .ЀЀ .$RN"pS-@+mlh".pS-@$n@ .$ЀЀ-RN>@$n0 .@$n0 .V . @p[o$RN>@ . @pfRN@$n0 .@$n0 .@$n0 .@$n0 .@$n0 .@NOR$n . @pЀЀ JgN>@NML/<:NRX . @prfR$n . @pЀЀ JgN>@NML/<;NRX . @prfR$n . @pЀЀ JgN>@NML/<@ . @pfR . @pr"fRN>@p-@N<".p-@p-@N< .S/N=hX-@+mlh".po -@T-nNJ ". Ar[^ . @pt"VgPp-@DR$n@ .DЀЀ$RDN>@$n0 .@$n0 .@$n0 .@/./</.NOO N"`-n .//.NQTPN@ . @p-@p"f R` .R @p-@TN>N . W Wg$/.H/./.0/.d/. W Wg$/.H/./.0/.d/. .0df fl/</.D/.H/./.8N6PO/.D/. .0dfd W Wg .Jgf/</.x/.H/./.N=O/.x/</.0/./.NFO/.H/./</.x/.N=O`/</.D/.H/.N-ON'b/<NRX-nL(Ncr/.D/.LNxP/.P/.HNxP/<#NRX/<NRX/.H/./</.DN-O` W Wg .Jgf/</.x/.H/./.N=O/.x/</.0/./.NFO/.H/./</.x/.N=O`/</.D/.H/.N5O/<NRX-nL(Ncr/.D/.LNxP/.P/.HNxP/<#NRX/<NRX/.H/./</.DN5O`^ W WAHH WHH WHHJgA 6$* <rxNXf`A 2 (NENP+mlhprEN6$H0 <N6$pNNL Nfr/CNlN"S-@@+mlhJTfr .@-@@ .Jgh/</.x/.H/./.N=O/.x .@D//.0/./.NFO/.H/./</.x/.N=O` .HT//./.@N#O /<NKpX-n/.H/./.@/.0/.@NNP .Jg/<4NRX`/<?NRXp-@R` . @pf(TN>@RNM\/<vNRX`N>@NM . @p-@ r Wp Wg p-@L`p-@ p-@L . Jgp-@ p-@LJl . Jg^N/0/<"N2*X/<%NRX/.DN.X/<NRX/<"N2*X/<%NRX`p /NRX .LѮplp /NRX .LѮJfp /NRX .LѮpfp /NRX .LѮ . Jg> . @p]l./</.H/</.0N-O/<NRX`F . JgN.L/<5NRXp-@ .Jg2 .Jg/<5NRX`/<@NRXp-@p-@ N< . @p]l$/</.H/</.0N-O`N>@NNP .Jg/<3NRX`/<>NRXN@-n8 . @prf0NNP/<NRXR-nN>@p-@` . @prfJf:/<?N2*X/<%NRX/< N2*X/<%NRXR/./.H/. .@NM`N.Z . @prfR . @pro-nN>@`p-@ . @prfR . @pro N>@/</<NORP` /</.L/</.0N-O . @prfR . @pro N>@/</<NORP`/.P/<_N2hP . @prfR . @pro&-nN>@/</<NORP`p-@N2/<ENRX .Jg` .Jg/.4N/DXCA #!N>@/./<NvrPND-nā .Jg/.DN.X .JgHJf/.DN/DXCA #!N>@/./<NvrPND-nȁ` .S-@RN>@/.N2*Xpl/<ANRXpf/<GNRXJf/<BNRXJl/<CNRXNDp-@ . @p]lt/<DNRXN< . @p]l/<NRX` . @prgN>@NM\`N1 . @prfR . @p[oN>@/<NNX`/.H/@Jl4NNP . @p[o RN>@/<wNRX`@/.H/.Np-_-_H".Hp//.N!P/</.N"PN@/.H/.Np-_-_HN'N@ . @prfR$n . @pЀЀ JgN>@N< . @pr!f RN@RN>NNNPNR/<LNRXN@p-@H$n, .@p-@p-@D . @p]mXRT$n@ .DЀЀ$RD . @pr,f RTN>@ . @pfR$n@ .DЀЀ$/<xNX .DS-@$p/ &@ .$`t$n@ .$ЀЀ-R . @pr,fRN>@NM\N/0`,N>@NM\/</.4/</.DN-O .$S-@$l&_ n@-PN>@/./.H/. .@$n0 .@R .@ .@/.H/.Np-_-_H".Hp//.N"PN< . @p[o@N>@ .䰮g(NRETURN type mismatch/?N\NMN"N@ . @pr"f RN>@ . @p]l$n@ .DЀЀ$ .DS-@$p/ &@ .$`h$n@ .$ЀЀ-RN>@$n0 .@-n<-n؁-n$n0 .NNMpl p-@ `Jf p-@ `p-@ `p-@ ". . //.H/. .S/N(X-_-_HXJl, . JgZN)$/.d/.N1PN1N0/</.4/</.N-O/<2NRX-nl``Nu .d`f -nl`-nd".pЮ-@/./.N1P/.4/.N1P/./.N1P/</.4/</.N-O .D/N@$n0 .@NM< . @prf,RN>@/</</@NO`/.T/<N2hP/<NRXN@NNt . @prf\RN>@/</.H/. .@RN>@J] . @ptWg0Jlp:f/./.H/. .@NNtN.L/.l/.N1P/.4/.HN1P/<2NRXCA #!N>@NM\-nā/.HN.XN./.L/.N1P`$n0 .@NM,-nā`@NNRN>@/<NNXCA #!N>@NM,-nāp:f/<"NRX`/<#NRX`RNNtCA #!N>@NM<-nāp:f/<NRX`/<NRXN@NNP . @prfRN>@NN` /</.L/<N/.$N5O/<NRXN@NNP . @prf4RN>@NNRN>@/</<NORP`2/</.L/<N/.$N5O/.P/<N2hP/<NRXN@RN>NNNP/</.H/. .S/N(X-_-_HXN)$p@f/<NRXN@-nRN>N$n0 .@NM\/.NRXNu . @p[o6/<NRXN>@ND . @prfR`N@NO . @prfRp-@$n . @pЀЀ JgN>@NML".p-@ . @prfR$n . @pЀЀ Jg*N>@"< .Ԁ/NNX".p-@ .Jg0pop//@NML/<NRX . @prfRp-@$n . @pЀЀ JgN>@NML".p-@ . @prfR$n . @pЀЀ Jg*N>@"< .Ԁ/NNX".p-@ .Jg0pop//@ .@".0Hp W .0Ht Wg .0H@HY/N-XXN.` .0H@H/N-XX/.H/.Np-_-_HN'`N`N .0Jg> .4Jg .4//.4NQTP/<NJ,X-n4T`N"`X/</./<|/.N5O . @prf(RN>@/.H/.Np-_-_HN'N@N<$n . @pЀЀ Jg(N>@/.H/.Np-_-_HN(@`/.d/<N2hP/<NRXN< . @p[oN>@NNP`/.HN,0X/<NRXN< . @p-@p'f&TN>@N@N@N@N@/./</<NOO RN>@N@N<$n . @pЀЀ JgN>@NO . @p-@p-@p-@ .Jg .S @ ./.X/<N*$P/<NK*X-nRN>@/</.H/.N-_-_HXp Vr3V@HHpGVHHJg"NIllegal ON .../?N\p fN'p3f".Hp//.N"PpGfN(@ .Jg .S @ .p g/<NJ,X-n . @p]l .JgUpGf/<NRX .S @ .N< . @prfRN>@/./.H/. .@ . @pr"fR$n . @pЀЀ" . @pVHHJgN>@ . @p]l-nāN>@/./.H/. .@". <//.H/. .@ .Jg./</.x/<NOO /<INRX`,/</</<NOO /<NRXN< . @prMfNR/</.L/.hNvO .Jg/<@NRX`/<NRXN<". ArW .T @p]]g8N>@ .Jg/<7NRX`/<NRXN< .S @pfl . @p-@$Rpd$Wr^$W@HHp_$WHHJg0N>@ .Jg/</.x/<NOO .$/ Bg&@dfj>/.|/.N=P/.|/</.x/./.NFO/</.x/</.|/.N=O/<INRX`>_f8>/.x/</.x/./.NFO/<KNRX`^f>/<KNRX`T&_`/</</<NOO .$/ Bg&@dfT>/<NX .TJg$/</.H/<?/.0N-O` /</.H/</.0N-O/</.D <//.0N5O/</.T/</.0N5O/.P/.HNxP/.L/.DNxP/.X/.TNxP/<$NRX/</.P/</.HN-O/</.L/</.DN5O/</.X/</.TN5O/<NzX/<NRX`r_fl> .TFJg(/</.L/.@N#O /<NKpX/</.Pr .T//.0N&O/<NRX`^f>/<NRX`T&_N .Jg/<JNRX`/<NRX`:^f4> .Jg/<LNRX`/<NRX`:_f4> .Jg/<MNRX`/<NRX`:df0> .Jg/<NNRX`/<NRXT&_/.\N.XN<-_ -_(-_NuCA/!A(/!A /!HzN>@ .@/.H/.Np-_-_HN(@/.DN1*X/<NRXN<". ArWHHp-@ .JgRN>@$n0 .@$n0 .@NNP/.NRXN@ . @prfNM\/.dN/~XRN>@ .R @prXfL/<NMpX/.hN/~XTN>@/<NMpX/<WNRXN<`r/</<N P/</.h/<N/.$N5ON.h/</.d/</.0/.@NJO/.P/.N1Pp-@`T/</<N P/</.d/<N/.$N5ORN>@". Ar]] . @ptWg/<NMpX/.hN/~XN2/.H/<N2hP/</.D/<L/.$N-O/</.H/</.D/.@/<NMpX`/<N2*X/.NRXN<-_,-_(NuCA(/!A,/!HzNM/</.(/</.DN-ON,ZRN>@NM/</.(/</.DN-ORN>@NM/< .(R//</.DN-O .(R/NXRN>@NM/< .(R//</.DN-ONup-@$n . @pЀЀ JgN>@NNtp-@ . @prfR$n . @pЀЀ Jg N>@". .Ԁ/NMpXRpop//@ . @prfDR$n@ .DЀЀ$RDT . @pr,f RTN>@` . @pfR$n@ .DЀЀ$ .DS-@$p/ &@ .$`t$n@ .$ЀЀ-R . @pr,fRN>@NM\N/0`,N>@NM\/</.4/</.DN-O .$S-@$l&_pcf/<NRXpff/<NRXpgf/<NRX/.N-XX n@-P . @prg N>@/./<NvrPND$n@ .DЀЀ-RN@R/</.HN|P/</.LN|P/</.PN|P/</.TN|P/</.XN|PCA #!N>@-nā/<NMpXpdf/<NRX`/<NRXN<-_,-_(NuCA(/!A,/!HzN>@R$nDp".U Art .W @pЁЀЀ H-@ .@NNP/<NRXN@NNP/<NRXN@/./.H/. .@/</.LNORP . @prf"RN>@/</.PNORP`/.P/@/</</@/<NMpX/</./</.DN-O`T . @prfR`RN@N<$n . @pЀЀ JgN/<NRX . @prfRN/<NRX`N@NNtRN>@NM@NNRN>@NN . @p-@RN>@/</<NORPRN>@/</<NORPpf^/</.T/</.L/.@NNtRN>@NNRN>@/</<NORP .JgRN>@/<NMpX . @p[o6RN>@NORN>@NO2 .R/NRX`/.NRXNu/<N2XN@NNRN>@NNRN>@NN* . @p]l/<NRXN@ . @prfR$n . @pЀЀ JgN>NNO-nԀ<`N2 . @prfR$n . @pЀЀ JgN>NNO2-nԀ<`/.XN.|X/.TNX/</.T/</.XN-ONO2/<NRXN< . @p-@pXfT/<NXN< f6TN>@NNtRN>@NM@NNRN>@NNRN>@/<NMpX/<NRXN@NNRN>@$n0 .@ .@ .SfN SfN!6SfN!SfN!SfN!SfN"pSfN"pSfN"pSfN"pN *.̚SfN"pSfN"|SfN"SfN"SfN"SfN#SfN#@ . @prfN>@N@NNP . @prfRN>@NN`N.h/<INRXN@/</.H/. .@ . @prfR$n . @pЀЀ JgN>@ . @prfR$n . @pЀЀ JgN>@N@NNt . @prfR". Ar[^ . @ptVgN>@NM<`N.L . @prfRN>@NN`N.h/<NRXN@N@NNRN>@NN*/<NRXN@NNP/< NRXN@NNRN>@NN*/< NRXN@NNP/<NRXN@NNP/< NRXN@NNP/<NRXN@NNP/<NRXN@RN>NNNPNR/<NRXR$n . @pЀЀ Jg$N>@/./<NvrPNDRN@/./.H/. .@/</.H/. .@/./<NvrPNDRN@/./</<NOO /<NRXN@RNNtN>@NM@RNNtN>@NM< . @p]l/<NRXN@NN/<NRXN@RNNtN>@NM@/./.H/. .@"<pij//.H/. .@ . @prfR$n . @pЀЀ JgN>@/<NRXN@ . @prfR$n . @pЀЀ JgN>@N< . @p]l/<)NRX`/<N2XN< . @pf".R Ar .TЁ @p]lT .S @p-@pn . @pNH6$ .R @pNHN6$ .T @pNHN6$ .V @pNHNN/?Nz\/NRX+mlhXY`v .Jg, .ѮNOdd INLINE length/?N\N@NNP/<(NRXN@N@NNtR-nN>@RN>@NNCA #!N>@-nā .@ . @prf6RN>@NNCA #!N>@-nāNN*`NNPN.h/.PN.|X/< NRXN<-nN>@RN>@NNt . @prf6RN>@NNCA #!N>@-nāNM,`(CA #!N>@-nāNM@NRx/.d$nDp".S Art .U @pЁЀЀ H//.N O Kf/<$NRX`/<%NRXN< . @prJWHHD/N2*XR/<&NRXN<".T Art .R @pЁ-@XN>@ .@ .T-@/.d/</.(N O /.DN1*X/./<NvrPND l$/<NJ,X .T/NRX`Z/.N2*X/.d/</.(N O /</.d/</.D/.@NJO/</.N"P .Юo(NOut of system memory/?Nx\ .//.NQTP .Юp/NpXЮt-@+mlh .X @ gDN1MEMORY_BLOCK size error (may be multiple defined)/?N\".P$. ."A$Bd4d$d$$e d$$$$$$$$Q .ѮN@N@` -_4-_0Nu/.0pA4/!HzJlp-@d/. .@ .|Jg -nl`-npl . @prg6 .J`f*/</.D/</.l/.@N6POp-@`-n<`-nDl 0l-n8`-nDl`-n@`/</.l/.0/.0/.`NPO`8/. .N .bNu-n<-n؁N>bNu`-_0-_-_-_ -_$-_Nu/./.$/. /././.0Hzp-@ .4Jg.N#AnzArg Stack Op ConstG ConstN . @p-@$n .ЀЀ Jf4N* Command-token in formula/?N\p!Nh f .R @pм-@`-n̂ W Wgp-@$n( .ЀЀ Sf gp-@$n( .ЀЀ Tf6$n4/ $n .ЀЀ J$_" .ЀЀ Rfp-@$n .ЀЀ Jl \f~ .T @pR-@ .V @p-@ lp Ѯ$n( .ЀЀ U-@ .V @pfp-@ fp-@`l".T Art .R @pЮpЁ-@ . /NpXЮtS @p-@+mlh . @p-@ fp-@`$$n .ЀЀ-R$n( .ЀЀ Jo$n( .ЀЀ U-@`$n( .ЀЀ Rf~ W .R @p[Wg p-@`Pp-@p-@$ ./ &@ .$`,$n4 .$ЀЀ Jfp-@ .$R-@$o&_`P$n4 .ЀЀ-RJ^HH .SJg"".$n4 .SЀЀ o -@ .4Jg$ .N .N .N(N+mlh .R-@$n0 .<ЀЀ$$n, .<ЀЀ$$n4 .SЀЀ$$n8 .<ЀЀ$$n< .<ЀЀ$RNu/</./</.HN-O/.N/~X/.N/DXJxlN)$/<2NRXNu .Jg>$n8 . ЀЀ"S^HHp$]HHf-n(p-@$`p$lN-nx .,".VHHJg R` .l-nx-|$`p-@$`H-nD .,".VHHJg R` .`lp-@$-nD`p-@$N,"., .$F//.$n8 . ЀЀ//. NRO/.(/./.$$n8 . ЀЀ/NxON,`rt$n8 . ЀЀ&JWJ$WCHH-@$N,"., .$F//<$n8 . ЀЀ//. NRO/.$$n8 . ЀЀ/NvrPNN,Nu$n0 . ЀЀ-R$nDp".T Art .R @pЁЀЀ H-@Nu-nd .,".VHHJg R` .ll-ndN1".,$.pF-@/./.$/./. N(X-_-_$XNu .,gN.NuNKp$o(/./.$/.N O .dЮ-@NuC A#!NuCA/!Hz`-_,Nu".,$.(p娀A,/!Hz-nx .,".VHHJg R` .l,NAll FPU Register occupied/?N\Nu/.,NMpXNu/<NMpXNu/<NMpXNu/<NMpXNu/.NMpXNu-_,NuCA,/!Hz/.,/</< ./</.(/.$/.N-ONL4NuNK/</.(/.$/.N-ON'tNL4NuNK/</.(/.$/.N5ONL4Nu .Jg2NK/</.(/.$/./.N=ONL4`6NLH/< .(R//</.N-ON1NL4Nu .Jg2NK/</.(/.$/./.N=ONL4`NLHN/NL4NuNr$n8 . SЀЀ"$n8 .8ЀЀ o -@$p$l p-@$n0 . SЀЀ  @p-@$$n0 .8ЀЀ  @p-@ $f fxNPNr$nDp/ $n0".8ҁҁ J$_"T Art/ $n0 .8ЀЀ J$_ R @pЁЀЀ H-@N+p-@$Nz fh/.,NRX$n0 . SЀЀ-R8$nDp".8T Art .8R @pЁЀЀ H-@N+p-@$Nz .8/NXJg"+mlh .8/N|X-@$+mlh$n0 . SЀЀ-R$nDp".T Art .R @pЁЀЀ H-@r$W ́Wgp-@$-|Ёr$W ́Wgp-@$-|ρJ$f$/././.@N#O p-@$Nzr$^p$]g/.@N+4Xp-@$`N2LN+p-@$Nz/.,NRX$n0 . SЀЀ-R$nDp".T Art .R @pЁЀЀ H-@N+p-@$Nz $f fxNPNr$nDp/ $n0".8ҁҁ J$_"T Art/ $n0 .8ЀЀ J$_ R @pЁЀЀ H-@N+p-@$Nz f$nDp/ $n0".8ҁҁ J$_"T Art/ $n0 .8ЀЀ J$_ R @pЁЀЀ H-@/</.(/./.N-O$n0 . SЀЀ-R8$nDp".8T Art .8R @pЁЀЀ H-@N+dp-@$Nz .8/NXJgf+mlh .8/N|X-@$+mlh$n0 . SЀЀ-R$nDp".T Art .R @pЁЀЀ H-@r$W ́Wgp-@$-|Ёr$W ́Wgp-@$-|ρJ$f$/././. . S/N|X-@$+mlhJ$f N.>Nu/.,NRXN .8/NXJg+mlh .8/N|X-@$+mlhJ$f N.>NuNP .0Jg/.(/.$/.0NO Nu .$JjD-@8 8fN,ZN,N 8lp8fNp8fN1/?Nr\Np8fN1+/?N \Np8fN2/?Nr\Np8fN2+/?N \Np8fN1+1/?N \Np8fN3-/?N \Np8fN3/?Nr\Np 8fN3+/?N \Np 8fN2+1/?N \Np 8fN1+2/?N \Np8fN4-/?N \Np8fN4/?N \Np8fN2+2/?N \Np8fN1+3/?N \Np8fN1+3+/?N \Np8fN4-1/?N \Np8fN5-/?N \Np 8fN5/?Nr\Np(8fN2+3/?N \Np28fN1+3+1/?N \Np@8fN6/?Nr\NpP8fN2+4/?N \Npd8fN1+3+2/?N \N 8fN7/?Nr\N 8fN8/?Nr\N 8fN81/?Nr\N 8fN82/?Nr\N 8fN83/?Nr\N 8fN84/?Nr\N 8fN85/?Nr\N 5t8fN86/?Nr\N 8fN87/?Nr\NN/.N1RXN,Z/.( .$JjD//.0NO N,ZN,/. .$JjD//.0NO /</.(/</./.@NJONNJ$lN,NuA1$_! %NuCE Z/!?]2 NPHz+mlhN/.N1RXNNNNuA1$_! %NuCE Z/!?]2 NPHz+mlhNNup-@8p0./ &@ .8`2CNl$.8SBHkЂBdBAtAd2ENP+mlhCNl6$N+Nf$/</.(/</./.@NJO+mlhCNl6$N-NfN)v+mlhCNl6$N1Nf$/</.(/</.(/.@NJO+mlhEpNr1o6/</.(EpN0//.0/.@N.O+mlh+mlh .8R-@8o&_Nu`N'/</.4NNHP/<NKXN,N/</./</.(N-O/.( .8H@H//.0NO N,ZN,/./.8/.0NO /</.(/</./.@NJO/</.4/.8N#O NNJ$o/<NKX`/<NL XN,Nu .0Jg`N/././<NRJ$m&/.(/</././.NFO`p$/NRXJfp$/NRXp$l$/</.(/</./.@NJONNup$lNr . S/NXJg+mlh .8/NXJgD+mlh . S/N|X"/ .8/N|X"-@$+mlhN2LNu`0 . S/N|X-@$+mlh/.,NRXN*Nu`f . S/NLXJgP+mlh . S/NX-@+mlh/.,NRX/</.(/././.@NTONuNp$o@ .Jg&/.(/</././.NFO`p"$/NRXp$l$/</.(/</./.@NTONNuNr .JgJ$l`p-@$N,"., .$F//</.$NRJ$fr .(X/N.|XNu/.(/<N2hPNuN,Nr/.,NQX".,p//<NP,P/<RNRXNN-Nu . U-@8$n, .8ЀЀ"$n, . ЀЀ l S8`Nu . S-@8$n, .8ЀЀ"$n, . ЀЀ Rl S8`Nu .JgD .x(n8 .x(g*/</.(/</.x/.N=ONu`Nu .D(fNuJ$fr .(X/N/DXp$o$/< .(R//</.HN-ON/"Nu .D(fNu/.DN1RXp$o$/</.H/< .(R/N-OJ$f/.Tr .(X/N1PNu . S/NXJg+mlh . S/N|X-@$+mlhN.>J$]p$]g*NBad JOYSTICK number/?N\`&/</.( .$м>//.N-O`NP/</.(/</.0/.@N/</.(/<>/.N-O/<NJ,XN.>/</.(/<?/.N-O/<'NSXNu/.(//</.(/.$/.$".̒| ./</.(/< .dЮ/".̒| ./</.( .X//.N-ONu $f/<N,X"., <F//.$/. . S/N(X-_-_$X".pf X$` .r€ .䀁-@p-@$N.>/</.(/.$/.N-O/<N-,XNu".,p-@$p$]HHѮ$p".,p-@0p0]HHѮ0 .0$Wr(^@HH .0$^HHЀT-@".,$.p-@/.NX"., .F//./N'/<NKpX/</.(/</.N-O/<N-,XNup$lNNr/././<NRp(f/.NLLXN`/.NLxXp-@(N`:p(f/.NLxXN`/.NLLXp-@(NN,NuNu`-_$Nu/.$Hz$n0 . SЀЀ-R$ .$ @pjJjDUlR/<N,X/<NRX/.d/SfNSfNSfN SfN,SfNɜSfNSfN\SfNDSfNfSfNSfN&N* Bad extended formula token/?N\p!Nh/.(/</.(/./.NFONu/.(/</.(/./.NFONu/.(/</.(/./.NFONu/.NL-_/./</.(/./.NFO/.(/</.(/./.NFO/.(/</././.NFONu/.(/</.(/./.tNFONu/.(/</.(/./.NFONu/.(/</.(/./.NFONu/.(/</.(/./.tNFONu/.NL-_=| -|ڢ -|!h6/./</.(/./.tNFO/</.(/</.0/.N=O/.(/</././.NFONu/.(/</.(/./.NFONu/.(/</.(/./.NFONu/.(/</.(/./.NFONu/.NL-_/./</.(/./.NFO/.(/</.(/./.NFO/.(/</././.NFONu/.NL-_/./</.(/./.NFO/.(/.N=P/.(/</././.NFONu/.NL-_/./</.(/./.NFO/.(/.N=P/.(/</././.NFONu/.NL-_/</./</.(/.N=O/./</././.NFO=| -| -|/./</.0/./.NFO/./</././.NFO/.(/</././.NFO/.(/</.(/./.NFONu/.(/</.(/./.xNFONu/.NL-_/./.N=P/./</.(/./.NFO/.(/</././.xNFONu/.NL-_/./</.(/./.NFO/.(/.N=P/.(/</././.NFONu/.NL-_/./</.(/./.NFO/.(/.N=P/.(/</././.NFONuNu`J .$Jg p-@$`p-@$N,NQp*.RSfN;SfNSfNSfN SfN&SfN@SfN@SfNZSfNtSfNΎSfNΨSfNSfNSfNSfNSfN*SfNDSfN^SfNxSfNϒSfNϬN* Bad extended formula token/?N\p!Nh .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXN .$м/NRXNNN,Nu$n0 . SЀЀ-R$-nd .,".VHHJg R` .ll-ndN1".,$.pF-@$nDp".$T Art .$R @pЁЀЀ H-@$n0 . ЀЀ-R$ .$V @p-@@ @\ @_g/<?N,Xp-@@$n< . ЀЀ U-@$p/ &@ .$`& . U-@8$n, .8ЀЀ"$n, . ЀЀ Ю$l S8`$n8 .8ЀЀ-RP$n0 .8ЀЀ  @pW$n0".8ҁҁ" ArW@HH$n0 .8ЀЀ  @pWHHJgp-@P/./</.PNR/</.(/.$/.N-O @f8/</./</.$N&TO/</.(NMxPN' @fv/<N,X"., <F//.$/./. N(X-_-_$X/.h/.$/.N O /<9NRXN/<N-,X @fR/<N,X/</.h/././.@N6PO/<9NRXN/<N-,X .,gN.Nu/</.(/</.0N5O/< .(R//</.0N5ONu/<YNSX/</.(/</.0N5O/</.( .̐VЀм//./.p-@0`\fV>".0/ . S/N|X"J[jDJjFWDdA4H@H@B@ЁJjD-@0+mlh`Vf> . S/N|XJf:p-@0NDivision by Constant Zero/?N\`@`@ .0N6$H0 . S/N|XL NNN-@0+mlh`0+mlhf$> . S/N|XѮ0+mlh`*f$> . S/N|X0+mlh`2f,> . S/N|X" .0-@0+mlh`2f,> . S/N|X" .0-@0+mlh`4f.> . S/N|X0WHH-@0+mlh`4f.> . S/N|X0^HH-@0+mlh`4f.> . S/N|X0]HH-@0+mlh`4f.>".0/ . S/N|X"-@0+mlh`4f.>".0/ . S/N|X"-@0+mlh`,f&> . S/N|XR-@0+mlh`,f&> . S/N|XS-@0+mlh`,f&> . S/N|XЀ-@0+mlh`@f:> . S/N|XNJg UAh2<pN-@0+mlh`*f$> . S/N|X-@0+mlh`,f&> . S/N|XD-@0+mlh`4JWf.NIllegal Constant Expression/?N\T&_`$ m<".T Art .R @pЮpЁ/NpXЮt-@0+mlh ./ Bg&@g gg f> .R @p-@0`Rg gg f.>".T Art .R @pЁH-@0`lg gg fH>".pJg .R @ -@0` ".X Art . @ Ё-@0`f>rENP+mlh .R-@ .\/ &@ . `8CNl6$ . @pNHNENP+mlh . R-@ o&_CNlNN-@0+mlh`f>rENP+mlh .R-@ .м / &@ . `8CNl6$ . @pNHNENP+mlh . R-@ o&_CNlNN-@0+mlh`f> .0 @0H-@0`f> .0 @ -@0`f>rENP+mlh .0-@ .0Z/ &@ . `8CNl6$ . @pNHNENP+mlh . R-@ o&_CNlNN-@0+mlh`f>rENP+mlh .0-@ .0м / &@ . `8CNl6$ . @pNHNENP+mlh . R-@ o&_CNlNN-@0+mlh`4JWf.NIllegal Constant Expression/?N\T&_ .0Nu`&-_ +_lNuC/-l+mhlA /!Hz`-_-_A!!1-_8Nu/.8A ?//$n0 . ЀЀ A/! . @pA/!Hz l$n .ЀЀ Uf&Nr .8/NXE 4$$+mlh ./ Bg&@af >=| -|ڢ -|!h6`Ff@>A 6$*H4 . S/NXL,N0E 4$$+mlh`vf> . S/NX*6$p2<xNXfJ=| -| -|NDivision by Constant Zero/?N\`<`A 6$*H4 . S/NXL,NE 4$$+mlh`Ff@>A 6$*H4 . S/NXL,NE 4$$+mlh`PfJ> . S/NXN"/A 2 (N"NxE 4$$+mlh`PfJ> . S/NXN"/A 2 (N"NxE 4$$+mlh`RfL>A 6$*H4 . S/NXL,NXWHHNxE 4$$+mlh`RfL>A 6$*H4 . S/NXL,NX^HHNxE 4$$+mlh`RfL>A 6$*H4 . S/NXL,NX]HHNxE 4$$+mlh`PfJ>A 2 (N"/ . S/NXN"NxE 4$$+mlh`PfJ>A 2 (N"/ . S/NXN"NxE 4$$+mlh`Df>> . S/NX*6$ <rxNE 4$$+mlh`Df>> . S/NX*6$ <rxNE 4$$+mlh`Df>> . S/NX*6$ <rxN0E 4$$+mlh`Df>> . S/NX*6$ <rxNE 4$$+mlh`0f*> . S/NXE 4$$+mlh`8f2> . S/NXJgAE 4$$+mlh`4JWf.NIllegal Constant Expression/?N\T&_` m<".T Art .R @pЮpЁ/NpXЮt-@8+mlh ./ Bg&@g gg f&> .R @pNxE 4$$`^g gg f:>".T Art .R @pЁHNxE 4$$`g gg f`>".pJg .R @ NxE 4$$`,".X Art . @ ЁNxE 4$$`f>rENP+mlh .R-@ .\/ &@ . `8CNl6$ . @pNHNENP+mlh . R-@ o&_CNlNxE 4$$+mlh`f>rENP+mlh .R-@ .м / &@ . `8CNl6$ . @pNHNENP+mlh . R-@ o&_CNlNE 4$$+mlh`*f$> .8 @0HNxE 4$$`fX>".T Art .R @pЮpЁ/NpXЮt-@8+mlh .8 @ NxE 4$$ķf>rENP+mlh .8-@ .8Z/ &@ . `8CNl6$ . @pNHNENP+mlh . R-@ o&_CNlNxE 4$$+mlh`f>rENP+mlh .8-@ .8м / &@ . `8CNl6$ . @pNHNENP+mlh . R-@ o&_CNlNE 4$$+mlh`4JWf.NIllegal Constant Expression/?N\T&_A 2 (Nu-_$NuCA$/!Hz$nD .$ЀЀ rVHg.NIllegal Constant Assignment/?N\Nu`&-_ +_lNuC/-l+mhlA /!Hz$n0 . ЀЀ  @pWHHNu`&-_ +_lNuC/-l+mhlA /!Hz`-_Nu$n0 . ЀЀ A/!Hz$nDp".T Art .R @pЁЀЀ HNu-_,CAH#!A#!-_ NuCA /!A/!AH/!A,/!Hz`(-_D-_ -_-_(-_$-_<-_-_-_0Nu/.0/././. FPx/?N\p!NhNu-_-_d-_`NuCA`/!Ad/!A/!Hz/.d/./.d/.`/<:NFONu-_-_NuCA/!A/!Hz .м/NRX .Jg/.NRXNu-_-_-_dNuCAd/!A/!A/!Hz`-_(-_-_dNupAd/!pA/! .dA(/!Hz/./.dNDPp".d$.(pм@Ё/NRX/.NRXNu/<`NRX-nTNu-_lNuCAl/!Hz .lм`/NRXNu-_lNuCAl/!Hz .lмb/NRXNu/<dNRX-nTNu-_lNuCAl/!Hz .lмd/NRXNu/<eNRX-nTNu-_lNuCAl/!Hz .lмe/NRXNu/<fNRX-nTNu-_lNuCAl/!Hz .lмf/NRXNu/<gNRX-nTNu-_lNuCAl/!Hz .lмg/NRXNu-_lNuCAl/!Hz .lмh/NRXNu-_lNuCAl/!Hz .lмi/NRXNu-_lNuCAl/!Hz .lмj/NRXNu-_lNuCAl/!Hz .lмk/NRXNu-_lNuCAl/!Hz .lмl/NRXNu-_lNuCAl/!Hz .lмo/NRXNu-_-_`NuCA`/!A/!Hz`-_dNupAd/!Hz .4`f-n` .`мP/NRXN;Nu-_-_`NuCA`/!A/!Hz`-_dNupAd/!Hz .4`f-n` .`мQ/NRXN;Nu-_-_`NuCA`/!A/!Hz`-_dNupAd/!Hz .4`f-n` .`мV/NRXN;Nu-_-_`NuCA`/!A/!Hz`-_dNupAd/!Hz .4`f-n` .`мW/NRXN;Nu-_-_`NuCA`/!A/!Hz`-_dNupAd/!Hz .4`f-n` .`м[/NRXN;Nu-_-_`NuCA`/!A/!Hz`-_dNupAd/!Hz .4`f-n` .`м\/NRXN;Nu-_-_`NuCA`/!A/!Hz`-_dNupAd/!Hz .4`f-n` .`м]/NRXN;Nu-_-_`NuCA`/!A/!Hz`-_dNupAd/!Hz .4`f-n` .`м^/NRXN;Nu-_-_`NuCA`/!A/!Hz`-_dNupAd/!Hz .4`f-n` .`м_/NRXN;Nu-_-_NuCA/!A/!Hz .мQ/NRX/.NQXNu`&-_ +_lNuC/-l+mhlA /!Hz` -_L-_8NupA8/!/.LHzp-@Lp/ &@ .L`R .8Jg*$.LE . ".LVHHF"Jf`% . ".LVHH-@8 .LS-@Ll&_-n L .LNu-_ -_NuCA/!A /!Hz . H g&NStructure too long/?N\ . @ . H0Nu-_ NuCA /!Hz . H g&NStructure too long/?N\ . @ . H0TNu-_ NuCA /!Hz . @ . H0TNu-_ -_NuCA/!A /!Hz . @ . Nu-_ NuCA /!Hz . @ . XNu-_lNuCAl/!Hz .TJg8$nr .lЀЀ $.lr‚VHg .pJgp-@t/.lNSX/<NNRX .lм/NRXNu-_lNuCAl/!Hz .ltĀ$n`r .lЀЀ %Nu-_lNuCAl/!Hz .ltĀ$n`r .lЀЀ %Nu-_-_-_`-_-_-_d-_xNuCAx/!Ad/!A/!A/!A`/!A/!A/!HzJmJmpxf/</<N4Ppxf/./.`/./.dN-Opxf/</<N5P .JgpxfB/</././.d/.N=O/./.`/</./.N=OJxfB/</././.d/.N=O/./.`/</./.N=O`pxf0/./.`/./.dN-O/</<N5PJxfD/./.`/./.dN-O/</<N5P/</<N5PJxl8/</<N5P .X//.` .X//.dN-O`pxf/ .U//.`/</.HN-O//<N4X/<N4X .P//.`/</.HN-OJxl,/./.`/</.HN-O/<N4X`pxf//</.H .U//.dN-O//<N5RX/<N5X/</.H .P//.dN-OJxl,/</.H/./.dN-O/<N5X`pxf/NN-nN".PW . @pWWAHHJg .Pf./.TNIF without ENDIF in/?NO NuNNNu`".T Art .R @pЁ-@$ .$Юp @p-@r .$-@$pfZ$nD .$ЀЀ" <$nD".$ҁҁ$Jf*$nD .$ЀЀ" <$nD".$ҁҁ$pf2Jf*$nD .$ЀЀ" <$nD".$ҁҁ$`p/oHpf .R @pr6fp".X Art .V @pЁ-@$Z$nD .$ЀЀ "< .$nD".$ҁҁ$Jg` -_x-_TNu .AT/! .xRAx/!Hzpxl.NDEF PROC inside structure/?N\NuN . Jg2 . @pf .R @prPf`` . @pr4f` .Pn .Pn6/.TNDEF PROC without RETURN in/?NO NuNNu`*$nD .$ЀЀ" <$nD".$ҁҁ$Nu".R Arpfp".V Art .T @pЁ-@$X$nD .$ЀЀ "< .$nD".$ҁҁ$Jgv` -_x-_TNu .AT/! .xRAx/!Hzpxl,NDEF FN inside structure/?N\Nu". Ar]^ . @pt"Vg2N". Ar]] . @pt"WAHHJg . @pr"fNuN . Jg2 . @pf .R @prQf`` . @pr4f` .Pf .Pf4/.TNDEF FN without RETURN in/?NO NuNNu`*$nD .$ЀЀ" <$nD".$ҁҁ$Nu`pRN". ArpW . @p]]AHHJgt".S Arv .U @pЮ\Ё$@ . @p]lNu`Fp/f .R @pr(f .Xf .Pf` N` .Pf`RN . @p-@".XWp/WAHHJgp/f .R @prJf` .PflNu` .R @pf".T Ar .VЁ @p]l .T/NLX6$N;NENP+mlhp0.Jg+mlhCNl6$N;xNT-@$+mlh".$SpENNENP+mlh .$RrENENP+mlh/.$/<CNl/?NO -_$+mlh/.$NX`T`xJVJ Wgf .R @p]l.NRETURN without DEF PROC/?N\`(NRETURN without DEF FN/?N\ oBEF65FUN29BEF95FUN100;FUN101FUN102BEF26 BEF36BEF46(BEF56 BEF66 BEF76FUN70lBEF96FUN80FUN90FUNA0FUNB00FUNC0| FUND0lFUNE0a"BEF27BEF37BEF474FUNF0hFBEF67 BEF97BEFB7JFUN61dFUN71FUN81FUNB1BEF38BEF48FUNC1|*FUND1FUNE1aFFUNF1iDBEF98FUN62FUN72FUN82BEF19BEF39NFUN15CFUNB2FUNC2|FUND2FUNE2aBEF99FUNF2iFUN53@FUN73LBEF1ABBEF2A BEF3ABEF4AFUN83FUNB3BEF9A(FUNC3FUND3FUNE3aFUNF3jFUN54hBEF2BBEF3BBEF4BFUN74tFUN84BEF9BFUNA6٬FUNB6BEF1EBEF2E FUNC6lFUND6FUNE6a"BEF6EFUN10A_FUN10B_BEF9EFUN10C_ FUN10D_,FUN10E_ɜFUN77FUN876FUN10F_BEF1FhBEF2FBFUNA7FBEF4FzFUNB7.BEF6FFUNC7FUND7BEF9FFUNE7aFFUN110_\FUN111_DFUN112_fFUN113_FUN68LBEF141#|FUN78BEF115 2BEF116 >BEF117 BEF118!6BEF119!BEF11A!BEF11B!BEF11C"pBEF11D"pBEF11E"pBEF11F"pFUN88,BEF121"|BEF120"pBEF122"BEF123"BEF124"BEF125#BEF126#) ] 59 !9  ") / -E-   4   U   ")                  A#      .  "      *                    G 1 !0Y!$   ! !   !      \      5 50 1              )  /     :  6    (     G! F#"          ) p                           )H ! 4#"                                &(,!!! Z7+'$)0**,) ####' t7(0%45"F  X Cd( i( *%56 U-T|R) & D3(!3*7(:6 1DD<& )&!& +$&.    1 CQ  - - - -         ! '  --    "  !'"''- `Z+L Pg Vg Cg Mg `Lp`p`p/TWa,XNu&J QNuKMNi+IJfHz?< NA\pLQNu+_+nA~+H8C,A#AM8#A##r&m +$gA0('A a .Ю///<JNAPa8A - fA!?<"NN @A"PH.C Av8gP/<NNXP+@?<"NNT @C:" C6!I AvC Ap"+H |E+J +N+xNzx(ACKp "QAKh Ap"Q- fAEKp aAKB!&m+|+|F#p+@Bp a+;mTp+@BpMa+;mT;mTpA000BXBm6pNa+PyafTaRxRRm( - f: mJ(,k0BgHz?<=a*Pk<HmHx??<?a*SWa*O A A!a mQa!M,HF:HDFe4Ge6SBSC<>@ADEJ@j@B@JAjABAJDjDBDJEjEBEJf2J-g,C$QmQG>amQF<anQE:anQD8@mAmH +|m;|Ha`LNuH7aavLNuH7aaLNuH?a`LNuH?aaLNuHa\LNuHabLNuH :(CiC:a@"BKdKd `Q"DMdMd `QL0Nu/ @a _Nua QNuap `Na/p aDp a> Nu/ or fR/H _NuH N.SG*EfzEC R,`TRQ&HCHC܃Q>HFHFBF܇P^܆vx&mX(KJg&P(K"K(Ę&.ޅ/(/H L` "NّбXfL٭XaA(CvّQ(&ۛ&HB BgHBX66C SAf&`T6Q Ĝo8p2<v HBSg0e8kBd6d&e` HF&&&&QHFQLNu6&]n`6&&n`&6]n`/-haR+_h``/-haB+_h`d/-ha2+_h`\/-ha+_h`0/-ha+_h`4/-ha+_h`,HaZLNuHa_LNuHa[LNuHa`ZLNu`| $r a=z JjDz-r6BBHB(8HB4HD0 :e^DRAJf L|NuHr0a=F "&H|/ ae2 @J-,g8B$@a:X2-"a="m$R6RCKd0Kd Kd ` QLNuHr0a< "&H|/ aeH2 @J-,g8B$@a92-"a<"m$R6RCKd0Kd Kd ` QLNuHaYLNuHa_LNuHaiLNuHamLNuJ[jDJjFWD d?B@H@HA2HA02 JgDNuH8tvx`ҁRCdSCj LJgDNue萁`HaYax*L aYBL aXLNuHH4Ha^`awL,a_L,a]LNuJ[jDJjFWD d?B@H@0B@H@JgDNuH8tv`ҁRCdSCj LJgDNueꐁ`H:( d>Ta;,`"D6KdKd `QQL8NuJAf$4NuH "mh_ m`da; m`e=4RBB0"HXB+H`"$4L$@gIdId `Q` RAId2Id"Id `""""Q"_Nuff&CgNur@BNugAgNur@BNupNupNuf fCgNur@BgNuDENugжAgNur@BgNuDENuCa0 AOg& AAg AKg APg AVg ACg AMf<2NuA2jrVNuSAkA2g-g ??<>NAXJDf -bg @R-aN.m|AZ ra -2-aJmfAH r#ar`A6 radp0-a`F# m1Pa` l? in USE "TRACE_ON" TO GET ERRORLINE m@T"m"iȐDnp" ҈$AIdWo J\`"J]dQNu// 2)a7$YJ*j$/ 0@G$R&_ `Q$_ _2NuRAId0Id Id ` Q$_ _2Nu8DEWDDA1@Nu8DEWDDA!@Nu8DEWDDA1@Nu+@NuAQ+H$a+m m,-NuAy+H$Bm JAV,g Ad9Ha.fLNuAQ+H$+m m-,Nuaa@`a `6^%0x;@HItBCBD:<BFa`LNuQ6BmBmNu/ H(<:6(@4fIt Z8Dd8Cd60G`QaL/? 2ax8 &_`P6BmNu&m`(K(-ha뎹d gD`a6$m`* f8 H`4Q&m`IXd8 gaB`B" f8$gRBR&DSAJ`7$Q+Kh+K/ ?0-S@k@G +Ifa fa8&_Nu 2NuJmf +mlha,J-6f&m`F 2ANuJmfJ-6fJmf Jmfp?a asPaa:B3@J-6fGv6-(Kr"g&Sr,gfS 2 KARC;CJfBmNugfS R2 @t,gfS4 KB`S-a@R-aFf:8gA8BXp`.?Gp~a0?BCa6>`pCas"QCf Jjp`a-7fQ8`VQ7Cr g(Cr `gCr ^gCr g Cr ~f fp`2>Wf) ga fa(` e8 g0@Cg^ Lr4`SBk6RSBk  g ^f dr` g +gl -gV g aeG Xg Sg Mg CfUBk6Ff` e 0eJ :ez Ae> [e ae0 {eC~ g` gZJj?)LfH g& `g g ~gf mf ^fJk*@7`$ 0` %fPr` Uf Lf) %` Uf Lf Ag g gJmg Ag %gH 0gB Ag< g6 g0 Lg* Ug$ Mg`5 SBk5fr` SBk5 fr`VJAgJ-8f.J- zg.Cg*?>Cp H@E0DgRDH@Qa 0m780ap~J-7gpDapjP8`FRCCd>RD`0H@ f,JCg$Cg4J- zf.SCpDap8p ap:pDap, 0` Sf*JCgJ- zfSCpDap >CgSDE0Qav` Rf2 gF- z`¸Cg>Cp H@E0DgRDH@Qa>` MfCgRCpCao` KfJCf gvp`vSCpDao`f`b m 0(?fpfaolE0>C` paodao^Qf p aoP>CpDao>Q0fpeao0Nu>D`ao,Q>C`pTJg| /a Nu L4/` SBRSBk3:RSBjNu  g ^g ae Cg +g -g >f BaZk1XBx8+ RDDf&_Nu(kCpdQDa0 mp"-``0&j"CfPf"BQe`;Ba.Caa*;@ mp"m|Y*-NŊ`L4$Y/Jk$ < Ue <URkH@`"Q`2*$R0R@H`1"Q1!Q -p+@RPEaaavHmHx?-?<?aHk0Xf* m!m!m">?-/-?<BakA.Hx0?-?<?ak0tXfA+Ha m"m#H#H mA0./?-?<?ak00Xfaap0 mАШШ//-/<JNAO aaxaQEp0-f mDNaN m@"m"i" ҈$AIdWRe J\`"J]d]XfF PDNu @"MBBQAerPA`QL$m ZD"H` fg Pep`. hDNuSBv CdCTe2 @BC`QNuJ@WFNuH @"B8Ad8D` VfCLNudxLNuxLNuH afLNuH0ag,L Nu+HbNu/  Ara+0Y0 _NuR@RAD:Ud.H78;D&HartarLNuH @B@`k ae {d  `;QLNuAEEEIIIOOUUYAIOUAOH @B@`k Ae [d  `;QLNuH@"@a*&`QLNuPH~8LGIp><< Xf- 2L22AIH@H` HA6B2QHAQLTUGfLNuHEGȓQ`VH+|;|aIp0-LNuH+|;|aIp0-S@LNup0-Nup0-Nu -2-NuHJk4a`r$Rd0d d `HB QHBQLNu?<Ha l\LNuHpAa"_"`QBLNuZ@/?<Ha 6\ @Jo+ V+HVX Nu/ m p0 _Nu/ m p0( _Nu/ m p0( _Nu``h`g\`ݚH8?<,a 4Tra(R6[xa:6Kx?a:6Cx?aLNuƄ 00HCNuHBa k)O  +RfJk g"BAHA 02H@ 0LNuHpS@@@G Sk)g) +Fg +Og?<?B?<Ba kO &`H>|$r a&~`H>|$r a&l`H>|$r"a&Z`UAe6k8/ @ : _f&@@?Hm?<6a P0-"&Nua&> -h`Nu <0-NuHJg"mA@NLNup`H02a%H6&H`HaVLQLNuH S-a@R-ka"Fga&$ra% LNur LNu/ra%r _NuJAgHH78&@(@aKPLNuH??4a%D`Q24 _NuH:SDԄAe@DegAv0 CdNup actQNu+|;|/aD"6-SCC`Вm`Caa ;@a aPP9aaaX`߼H70aW L NuH? aQLNuH70a]L NuH? a\LNuH0BCEa`L NuH BCa`LLNuH7aPLNuH?aOLNuP;anQ;Nu/" $ "@ d HЄHdd2d"d `""""Q$NuH7~aRLNuH?~aRLNuH7a_hLNuH?a_vLNuH7$&*a_FaDLNuH?$&a_La?LNu//?r a"0 _Nu A e"( @ e %2%ɈNu`%//?ra"0 _Nu]Ae e2%Nu//ra"~ _NuYAe eNu/?ra"Z0 _NuUAe0eNuH?aa^LNuH@ @pJAg AerSAQLNu2 (aC %%5C6$*ff2CgNur@BgNuNugAgNur@BgNuNupNupNu2 aB%5C6$ffزCgNur@BNugƶAgNur@BNuQ;R@RARBRCRDREHF:;B;C;E+I+J+HCf$NEf$HBf$B/H瘀&HD ag/C aj+KLBmBm&m0-8-ag(C&mag2 (&m6$*HzJ-;fij`irH&m0-8-agL(CajLRm8-meRm0-me`P;aQ;NuH70J-FfaLaQL NuH70J-Ffa6aPL NuH70J-Ffa aVL NuH70J-Ffa aVL Nu$<5*<ȯv`C\H70J-FfaaZL NuH70J-FfaaVL NuH70J-FfaaVL NuH? J-FfaLaOLNuH? J-Ffa6aOLNuH? J-Ffa aULNuH? J-Ffa aVLNu$<5v`aG 2aI+LJI+LNp+@H@+@pZa@LGa&$HGap x heJmTg0-VLNu Jf" SA@`C" A"0A"X0BA6"AT"AJ"Ah"0<S-AN`NBR-gNu/ @ AxdQv.` \fQ°fPQJfPRGB"_NuC/ @ A|d<QB!"_Nua./ AS@@GB3G@C B C|d`QBC AIg AOg AAg AUg ARg APg AVg ACg AMg AKgx AFgp6`6x8+ -(@RDDa'@NuJSfxJgNup`aa7A6r'A'| a&_NurOa?</ ?<=ak7A6r'A'| a?<?Hx?<Ba^kO&_Nuaal7A6r'A'| aL&_NuxrRa\?</ ?<=aPjt߰fBg/ ?<?B?<BaRO & kNu/ S@@@GJSgaJg(Hx  e </??<@aO `/?+ Bg??<@aO Bk&_Nu/ ?<Aa\j @fFBg/ ?<aXBmNuaa;@//<@??<?atkO `aa;@/Jf&-/??<@aZkO ` PabQNut`t HvG` t`t H&)GINHA*HE>@"(d"Jgd"SH(ICBpHa&`L$(R*NdNeSeLNudte(*NdN$&RgS(؁*NdN`*(NdN(` *ڃN(RgRSg긃g*(RNd$/*N*S`*ڃN(Rg Sg긃g*SNd&/(N(R`SD*NdNڄ$//"SaD "R`:h"B^Dh"B^ ,.,3h.3xNu,.܆އ<3h>3xFGFNu3X3HNuH,.܆އ܄ޅ܆އAhCx<>FGffFf.`gGf.LNuDLNuDLNuH,.܄ޅ܆އAhCx<>FGff.Ff$.f.,`g Gf .f.,LNuDLNuDLNuH,.܆އ܄ޅ܆އ sh<3h"sx?3x>HG>Fd<F`Vf<HGGLNuH,.܆އ܄ޅ܆އ sh<3h"sx>3xprQD`a:gQ DLNuAa$AgfIfHg`HfQ`ag` g@ 0eB :e: Ae6 [e( ae* {e 9h;j@A f0< Nu@R@NupNuCEAAACEEEIIIAEOOUUY....AIOUNNAO........AOOOAAON/ K$UNK$_NuN,./3h'xh'xNu,.܆އ?3h7xh7xNu3HXHXNuH K,.܆އ܄ޅ܆އ<06, &L NuH K,.܄ޅ܆އ<06, &, &L NuH,.܆އ܄ޅ܆އAhCx.,?02!#͈! G! LNua/ ?<AaVk\Nu :g \f$IQ ?fP *fPQBNuH.Jg0j f`( .gfSS.BAKBfLNuaHC$I BQa&JC$I @6Qa(JeTJfPHmv?<a\$m`&-h(pBgHm?<NakpAe4Q>O`& m`$HPrt,fLNu"Ha&Ca;@Bg?/?<Ba,kO e*/܇/r?-?<?aO kxaXAg"`/܀/Ҁ?-?<?aO kNa.,"JaCHzJg?<`;@Bg?/?<BakO e&/܇/t?-?<@aO aEg`/܀/Ԁ?-?<@adO a` Z4J(j6CC X0"@Ad2A`Qp `QNu Z4J(j6CC X0"@Ad2Ap `Q`QNur`r`HSE8DEDA4Akn4<x6<z|P~ Pd6<zF~ Pd4<@x~(fDEDEBe0Ce24H`@$xN@F'!JBBFLNu8DEWDDA!@Nu8DEWDDA00Nu"mE0("QʱdX+IJNu*.* @6fAvC$IaHmv?<a\?<7Hm?<Naj @f0`hJmfpKaMA^ra^A"JfS-gt*\.B4 J2 AHa*A rBa -a6a >O`PNu' +H^Nu+HfNu+HZNuv$<a+ a+@rи+@n+HjNuR@RAHCD:@f&HS@8aTHC8-:a(4<"<` aT(78'8QLNuR@RAHH4&HD:UDdB;A>BmL?aVxRm2->GeLNuR@RARBRCRDREHF:;B;C;E+I+J+HCfEfBf/H瘀&HD aS/C aVl+KLBmBmBma/,H&m0-8-aST(C&m8-0-aSB2 (&m6$*aTL,aTHRm2-me&m0-8-aSL(CaURm8-mexRm0-medL\J-:fX$$maULNu/A# _NuSe`oFpUnkp`pЉr@td0d d `H@ QH@QJAgNug" `"<BB 0³dNu2<t0 ³dNuHRBRC08&IaR$aU +KL"mHaLR@RARBRCH@f:Bf4@f.;@+H&I8aQPH0R8H+| ;|;|`&r`rk+@Dj+| Bm`&rj`H ARa+|;| `&$;A Ad "@B@`0QNuAR H,a+| Tm;| `%r`D+|;|;AR/a% r`$;@RH +|g;|`%YAV`g A"f`"A /?<Ia\Nu _xf/ ?\N]x/ mp -Rg:lfH" ѭlRSgej2 ` Ueg`$44NuaHC$I @6a4&JC$I @6a$(Jz`HC BQa JfC @6aJfHmHm/<Va kO LNup`aTp :f@A @d ??<aXHm?<;a\Nua / ?<9af*\Nua / ?<:af\Nu/ ;B6+@J&@BpA000BXp4aDp0-T&_NuNu?<aTNuA"<}0H@0ЁHg0H@0ЁHf@@ @e@ xpNNupE`Bt6<$<aaи`/ar nNuSA@F'AC64RHJBf` FNuSA@F'AC64P`@SAF'AC6P J  FNu`HH@F'ACAA8@8@FNu r$_ _Nu// "ZJ)j/ ?6CG"Q06&_J@gS@RdD@Ad2aZ?`Q2"_ _Nur `CRz` ArPE"Q"$&QE+|p;E`"8rq`;@+|Bm`!PBCRDREH<Nu+_a 2CaaaOx( m/(,HmHm/<Kaa"mC0JgJg`a/-NuS@@@A??gt/ PRfn?<Bak@O NuS@@@A//?g@ PRfLAQ(GHJf8J-g2Q&-//Hx?<Hab\k?<HaR\& @&PŸmgAB0-S@H@0-S@ B BA0-00@H0BX00-GHJg2+S+|m;|;|RA+HA+Ha gDG;DLJg4Jgz`+S+|m;|;|RA+HA+Ha:J-gpea<-Jg L`X`<`F`P`Z`d`n`x``````>`J`V`b`n`z````````b``````L`j```$```(`v```b```````*`<`B`J`h`r``l`p`P``````````````f`````2`6`:`@``````H````````2`:`V`~`````B`j`n`````` ``*`4`>`H`†`’`ž`¨`²`````"`8`D`T```l`z`Ú``8``$``2``@``N``V`h`z`ƌ`Ƽ```````"`,`6`@`J`T`^`h`r`|`dž`ǐ`ǚ``Ű``ž`*``nj`ǐ`` `"`B`^`~`Ȋ`Ȫ```````ͨ```````Ҹ`:```4`6`8`````ָ`ֺ`ּ`־``&`b`؈````ٜ``````4`ے````2```x`ܐ`ܨ`````B`D`f`݊`ݬ`ݮ````` `<`T`v```<`>`n`߀`ߒ``߾````4`n````<`>`j`l`|``` `T``````` A<>AUCUĖAo: C!d.2gh Jgtkx dFH@xЀ[DDiVNu 2NuDC C!dB2g,dD AJg2kx dH@xЀ[DDiNuтdTAiNu2Nup2<NuJAkx`~gCCi(*H@<HBԆH@GBDHDԄGH@:BBHBЂk EрgUAiEчeNuTAiDNup2<NuJgTJAk.`JgD <TAiNug CAi2J@gBCevgH@h(:HEBE|<xTHBJBgH@:BB`8BBH@:dSDԀdHDH@h:HEBE|<8NuJ-g0-aEA"C CR E Ch ps`*$<6<`X<FeUFm~Fe|ІeNu|TANuUFm~Fe|ƐjNuЀUANu$6 <2<`<FdUFm~Fe|ІeNu|TANuUFm~Fe|ƐjNuЀUANu$<zv`<Fe4UFm~>Fe| G d؆eNu|ІeNuRdRDTANuUFm~>Fe| G deNu|jNu؄рUANu$6* <xr`d<Fd4UFm~>Fe| G d؆eNu|ІeNuRdRDTANuUFm~>Fe| G deNu|jNu؄рUANu A<F~G?<a>CClDABEG62 CAd< C e *tC `,@DCC 禊DJ_fمтd TAiNuTNudD@ AJkfJg8BFJf xF d H@HD0BDFJk SF؄р[FFiNupx2<Nug CAi2JgdBgdڄՀSWv@D` dڄՀ߇݆څՂeQ` SCkއ݆څՂdQFFJ_gfFFJ_ge(Rd$Rd DdRd RdTAiTAi߾( Nu `~***g CCiBC<*,HFݭdRm,HFݭdRm,HF.HGݥdRm,ݕdRm<ݕdRm,HFݭdRm,HFݭdRm,HFݭdRm,HFݭdRm,ݥdRm,HF.HGݕdRm,.HGHFݕdRm,HFݭdRm,HFݭdRm,.HFHG6-( %ІkgCلрUAi0JCjRe Nupx2<NuRdTAitNuDNuDNu?CCg6gDNu6AgmDNugNuAglDNugNur@JgzjRADi dA H@SAЀ[SANuJAk:Ig6e A dDAA Nu A gdDAA DNu fNupNu  @ 6ɿlŭ+pxIϦGɀT~ތ Jvuu ;]=]5(`R yjNpx2<t;Ba\  g  gE.Bg +g -f>a6 $gN %gD &fJa Hg8 Dg6 Bg( Og hg dg bg og$` a -fFWf(KB`aBg .f>a 0eVRm0  e_  e< *e Rd./$***6* ah$*6 aaafJWgSW`+zJWgRW eg Eg dg DfZa6~ +g -f~a"6 0e40  e  e *e d dڂa`JGjDt4HԅgP[jD ?eJfN`\6 C gN CfBC Cfv CfvBJk Bi0Q`BiQJogJgRAXNupx2<XNu6 Cd$*?a6Jfa>`a` <x2<H7 | E? gH$**6*/ a$_LHQU<QLNuteNuBNut-ft JgH0@HJFf ?a8$< ~66j DC CDdaL6JWka`apJog&$<6<0agd$<6<a`SW`$<ɿ*<6<lazfgd$<z6<aSW`$<zBCaIDAA?QWk J- f0J-!f Wd$> G(e><(`J- fE Wl@J-!f:BGE|0&RFbfJgتуSFPJfQQJfJg\.<RFj"J- fFFgJ-!g F e<< 0Q|0&RFbfJgتуSFPJfQJfJf|DJ- f"J-!f Wm WlXONu Df Wet+<jDFt-JFf0TNuE$0~/RG@e~0RG@bg@SG0fTNud $<BCaaR^Wk J- f0J-!f Wd$> G(e><(`J- fE Wl.J-!f(BGE|0RFbgВSFXJfYQJgH.<RFj J- fFFgJ-!g F e| 0Q|0RFbgВSFXJfYJf<E`X0J- gpEJfpD0NuB@'d #o~ƀZz@ NrԥHvT ;B@'d fJg"?/BA Qd $V~*YX r?/6$a$?/? 2$/6/a$6a\SWfP$6`?ABg Am$<va`SWBg$<062r6xz <$UGe,JFg*HA/ <ra$6?/a$LQNuHAHx <raL$6?Ha\L$LQNu$<ڢva$6 <ڢr Am:a$6a a Am$g ev$<ar` $<BCa`E`-  h5]( ڢ$<ڢ* C@d C e $*C g.DCC 毄BCJkfJgpSCڅՂ[C (24/Bg$<zvaPEPa$*6a$*6a&THJkabL,aNuDaRL,aNux <r`PQڙU> ~8i:K{fiR57ƤKQ wΠX/g֋rohDB>ZkUO8,e_&9SD<]ݪ?ABgE$*6PTafeRW Wf>gh Gf$<zva`RG<GFGHH$*+6+ CaL,H (+2+aZ$<zvaL,aEa>g Gg$G<FGHG$*6a>GANu$<ڢ**=yrN.\a8ܑaI$Eؿk?/a?/ /2/ a$6\`vHa L,H (2aL,`?/af?/ /2/ ab$6\`2HaL,H (2aL,`a&$<v`a"`a$<zv`a`?/$6aT$<vaa$6Jga`> <ڢ($DL??// a@*$6`a$<zv`a.`a`H$6a$<vaaDL a`NqJg"f?BA$<4BCa$<4va$<vaE0a $<va$60H@aap$&m$B+'|B+B| ptBCBD*< , .R@a|d( _g #fB ,fDfC`SB;B"RBJCgJDg e6HEEHEEC`JDg6HE Cd CE`EptxR@ad ^fR+ 1^gJ+fB` _f ` *f,J+g+dzT+@RDadh@RDA` -g +fF|BJ+f|J+jtatd0 #g *fhB++@S3@RD`P #f"@RDJ+g+eR+`(R+` +gز+f+g J+V W!R@RB1 GNut&m$R>~rpR2g .g Eg Df+J@f0RSJ<@J+gS:H@<EJAkf J+g`0S@3 Q6< +f3+> RJ -->g J+g+ J+fBE`3 RA3 RAQ|QJ+g.+ .fg Eg DfS<03RA Q+gL Eg DfS0+SB. JWgB@+%NuRC 0Q$GRCg0`Nu/v&+ր/փJ-:fփ֟փ$NuHxa(CEaE<38787,38'8'J-:f,38'8'RDmeLF-=NuQa}Y`hg_YYstdffy_`YYmjn`_YYYLvMyJ|}~ya8ompnn`Yjnphjiogm_Yn`j_igmjin`jY_miY_m`nmonph`jjnjiog__iiminhjmgihgnmj`nhi_mghghg`_h`jg_i_gin`m_`hj_giTPLMmn_`ijghatYYYnijijijst@Jam_n`8JPQn`8@@FF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@wwwwwwwwwwwwwwwwwwwwwwwwww@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@wwwwww@@@IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIGGGGGGGGGGGGGGGGGGGGGGIIGGGGGGGGGGGGGGGGGGGGGGJJJJJJJJJJJJJIIIIJJJJJJJ@IIIIIIIIIIIIIIIIII߀߀ހހIIIIIIIIIIIAAAAAAAAAAAAAAAAAAAAAAAA@@@@@@@@@@ހހ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@66666666666666666666666666666666OOO666666666666666666666666666666@@@@@@@@@@@FFFFFFFFFFFFFFF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@€€'''''''''''''@@@@@@@JJIIIIIIIIIIIIIIIIIIIIIGGGGGGGG@@@SSSS@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQ@@EE@@@@?????????????????????????????????@@@@@@@@@@@@JJJJ@@@@''''''€€€€€€€@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IIIIIIIIIIIIIIIIIIIIIIIIIIII@@@@@@@@@@@TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@''''@@@@@@@@@@@@@@@@@UUGGGIIIIIIII@@@UUU@@@PPPQQPPPPPPP@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JJJJJJƀVVVVVVVVVVVVVWWQQQQ      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JJJJ@@@@@@XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZcccccddeeeeeeeee !!!!!!!"""""""#######$$$$$$$%%WWWWWW&&&&&&&'''''''''''''''WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW'''(((((((((((((((WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW((()))))))*******+++++++,,,,,,,----------------------------------------------------................./////////////////////0000000000000000000000000000000000000000000000111111111111111111111111111111112222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333uuuu4444444444444444444444444444444444455wwwwwwwwwwwwwwwwwwwwwwwwwvvvvvvvvvvvvvv666666666666666666666777€88JJ€€II8888888888888888888888888888888888888888888888WWWWW888665577€QQQQQQQQQQQQ888888888888888888888888888888888888888888888888888888888888888888888888xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx999999999999999999999999999999999999999999999999::::::::::;;;;;;;;;;<<<<<<<<<<===>>>>>>>>>>>>????WWWWWWWWWWWWWWWWW@@@@@@@@@@@AAAAABBB{{{CCCCCCCCCCCCCCCCCDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFF66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGGGGƀƀƀƀƀƀƀƀƀƀƀƀƀHƀƀƀƀƀƀƀƀƀIIIIIIIIIIII                                                IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOPPPPPPPQQQRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTT~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~UUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZ[[[[\\\\]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_______________VVVVVVVVVVVVVVVVVVVV```````aaaaaaaabbbbbbbbKKffccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggghhhhhhhhhiiiiiiiiijjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnooJJooJJJJJJJooooooooooooooooppppppppqqqqqqqqqqqqqrrrrrrrrrrrrrrrsssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwxxxxxxxyyyyyyyzzzzzzz{{{{{{{||||||||||}}}}}}}}}~~~~~~~ÁÁÀĀŀŀŀŀŀŀŀŀŀŀŀŀJJJJJJƀƀƀƀƀŁƀƀƁƁƁƁƁƀƀƀƀƀƀƀƀƀŁŁŁŁŁŁŀƀƀƀƀƀƀƀƀƀƀƀƀƀƀƀƀƁȀʀʀʀʀʀʀʀʀʀʀʀʀʀʀʀʀʀʀʀˀˀˀˀˀˀˀ̀̀̀̀̀̀̀̀̀̀΀ǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǀӀӀȁȁȁȁȁҁҁҁҁҁҁҁҀԀԀԀԀҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁՀՀՀՀՀՀրրրրրր׀؀ــــــ܀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀HHHHHH@@ρρρρρρρρWWЁссс                                                                                                            ӁӁ                                           !!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""############################$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%&&&&&&&&&&&'(((((((((((((((((((((((((((((((((()))**********************bbbbbbbbbbbbbbbbbbbbbbbsssssssssssssssssssssssssssssssssssssssssssssssss@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YYttttLLMMaa}@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@gg____________________________________________________________________________ցցmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmׁׁׁiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\hh````````````````````````````````````````````````````````````````````````````````````````````jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn؁؁؁؁؁؁؁؁فففففځځځځځځځہہہہkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkooooooooooooooooooooooooooooooooooopppppppppppppppppppppppppppppppppppppppppppppppppppppppppp܁܁݁݁߁߁⁷ぽ䁺FFFFFFFFFFFFFFFFFrrrrrrrrrrrrrrqqqqqqqqqŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁzzzzz||||@@@@@@@@@@@@@@Ł@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW΁΁΁΁SSSSSSSSSSS΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁ˁˁ΁΁΁΁́́́΁΁΁΁΁΁΁΁΁΁ɁɁɁɁɁɁ́΁΁΁΁ds{dsdsds߁pgx::::88 }}{x }??@_@?`M`Ac"< .ӮӮӮ "Hd d3 d# d `# # # # Q"<p#Q`pIHxHT/<JNAO/,,Hl(Hm/<KNABNAJA:\OM-BASIC.INF OMIKRON.BASLIB 4.06 (C) 1991 ASY/SR Kb:OHz?<&NNKb(J-=frBNAJXBRAOMBAEb $j?$zNH2/Ka m"hвPgP.aE aL'TNuXBRAOMBAHKaJ-k.HzH /e"Hdana to_/zL NuP.P/aE2/zL Nu@J-f.`@JWk&/-l+mhlJ-.gaJ-/ga+mlh+_lFNuNuHKa*PLS-Q.J-g Bfp!`aLg -jg @H,mLNLX m0-rh;A@Ag -^g @H,mLNLXJ-Dg B-D -bg @H,mLNLXR-J-.fbQLL'NuHK`tPLS-Q/ -ng0"-r$8n$ҭvn"+Ar @H,mLNLXR-J-/fQLL'Nu<f*J-Kf$- fJ-k Bfp!`PP.aC<fB-F<fPFH@<bfJbgPDH@NuH@Nu/<a2ZX//< a2LXr AAf"B-F/<a24XJ@g/<a2$X` Nu pNu/<a2 XJ@Nu0-fS-a@R-kaFg/<a1XaNuH@"Jf`x+L<Pg<Vg<Cg<Mg `\p`p`p/TWa0XNu&J QNuK^8Ni+IJ`Hz?< NA\pLQNu+_+nA+H8C,A #A]#A##r&m +$gA0('A a .Ю///<JNAPa@A - fA!?<"NN @A"PH2C Av8gP/<NNXP+@?<"NNT @C8" C4!I AtC An"+H E+J+N+xN~x,AC\\p "QA[ Ap"Q- fAE\p aA[!AE\ par&m+|+|F#p+@Bp a/;mXp+@BpMa/;mXpA000BXBm:pNa/P}awaRxRRm, - f: mJ(,k0BgHz?<=a.Pk<HmHx??<?a.SWa.O A A!a mQav!M+_h`?2*@e.$RJ*k p"2Nu2/EA$jp"2Nup2Nu+_NNuHEG m 7P Bk P`HEG"m 5Q Bj Q$&;@VA H@r@I0 H@2$HB>,HF:HDFe4Ge6SBSC<>@ADEJ@j@B@JAjABAJDjDBDJEjEBEJf2J-!g,C(QmQG>amQF<anQE:anQD8@mAmH +|m;|HaqLNuH7arLNuH7asLNuH?aqLNuH?ar6LNuHan.LNuHasDLNuH :(CiSaPV"BKdKd `Q"DMdMd `QL0Nu/ @a _Nua QNuap `4a/p a*p a$ Nu/ or fR/H _NuH N.SG*Efz|C R,`TRQ&HCHC܃Q>HFHFBF܇P^܆vx&mX(KJg&P(K"K(Ę&.ޅ/(/H L` "NّбXfL٭XaQ\(CvّQ(&ۛ&HB|gHBX66C SAf&`T6Q ĜoDp2<v HB|gPfTSg0e8kBd6d&e` HF&&&&QHFQLNu6&]n`6&&n`&6]n`&&& n`/-ha+_h`D/-hat+_h`H/-had+_h`@/-ha+_h`/-ha+_h`/-ha+_h`HakLNuHapLNuHalLNuHaqtLNu`J-g/ m(J(Lg@`bJ-0gaF`NH>| $r aMz JjDz-r6BBHB(8HB4HD<0<:e^DRAJf L|NuJ-gH?~| zE`AvHr0aM< "&H|/ av2 @J-0g8B$@a>2-&aM"m(R6RCKd0Kd Kd ` QLNuJ-gH?~|zD`AHr0aL "&H|/ av2 @J-0g8B$@a>*2-&aL"m(R6RCKd0Kd Kd ` QLNuHajLNuHapLNuHazLNuHa~LNuJ[jDJjFWDd?B@H@HA2HA02 JgDNuH8tvx`ҁRCdSCj LJgDNue萁`J[jDJjFWDd?B@H@0B@H@JgDNuH8tv`ҁRCdSCj LJgDNueꐁ`H:(²dNaKZ`"D6KdKd `QQL8NuJAf$4NuH "mh_ m`daK6 m`eN4RB|0"HXB+H`"$4L$@gIdId `Q` RAId2Id"Id `""""Q"_Nuff&CgNur@BNugAgNur@BNupNupNuf fCgNur@BgNuDENugжAgNur@BgNuDENuCa0|Og&|Ag |Kg|Pg|Vg|Cg|MfM2NuA2jrVNuSAkA2gLNuH@a޲|Ig|Vg|Cg|MfL;@LNuC`5!9A"9A.9<19<9<9<9<9<9D 9E 9F 9D9KN S-At 2XWf0QIQF;@r2||9A`fI 00AHAABAQB@SAo+H;A -dg+m+@+@a;PaBAal+mlhBmBmBm>-g ??<>NAXJHf -fg @R-aN.m|AZ raz -2-anJmfAH r#a\`A6 raNp0-aJF# m1Pa` l? in USE "TRACE_ON" TO GET ERRORLINE m@T"m"iȐDnp" ҈$AIdWo J\`"J]dQNuUnprintable error Syntax errorRETURN without GOSUB Out of DATAIllegal function call OverflowOut of memoryUndefined StatementDivision by zeroType mismatchString too longRESUME without errorMissing OperandBreak Bus error Adress errorUnknown opcodeDivision by zero CHK error TRAPV errorPrivilege violationTrace!Out of memory or odd MALLOCationMatrix not regularFIELD overflowBad file numberFile not foundBad file modeFile already openFile not openTOS error #00File already existsFile type mismatch Bad disk Disk fullInput past endBad record numberBad file namePath not foundToo many files Write error Read errorDisk write protected RSVD. EX.Protocol violation Format errorUninitialized interruptFPU: Unordered conditionFPU: Inexact resultFPU: Division by zeroFPU: UnderflowFPU: Operand errorFPU: OverflowFPU: Sig. NANHac8a~L abL aaLNuHH4Haga~L,ahhL,afLNu// 2)aD $YJ*j$/ 0@G$R&_ `Q$_ _2NuRAId0Id Id ` Q$_ _2Nu8DEWDDA1@Nu8DEWDDA!@Nu8DEWDDA1@Nu+@NuAU+H(a+m$ m01NuA}+H(Bm$JAV0g|dFfHa/ LNuAU+H(+m $m10NuaaR`^%0x;@HItBCBD:<BFa`LNuQ:BmBmNu/ H(<:6(@4fIt Z8Dd8Cd60G`QaL/? 2aTx8 &_`P:BmNu&m`(K(-ha礹d < gD`aBv$m`* fEb H`4Q&m`IXdE,< gaX`B" fE($gRBR&DSAJ`7$Q+Kh+K/ ?0-S@k@G +Ifa< fa8&_Nu 2NuJmf +mlha,J-:f&m`F 2|NuJmfJ-:fJmf Jmfp?a a PaaZB3@J-:fGv6-(Kr"g&Sr,gfS 2 KARC;CJfBmNugfS R2 @t,gfS4 KB`S-a@R-aFf:E&gAE BXp`.?Gp~a0?BCa6>`pCaCQCf Jjp`a-;fQ<`VQ;C~.<g(C~4<`gC~:<^gC~<<g C~F<~f < fp`2>Wf)< ga<fa(`< e8<g0|Cg^ Lr4`SBkCRSBk< g<^f < dr`<g־<+gl<-gV<g <ae|߾<Xg<Sg<Mg<CfUBkBf`< e<0eJ<:ez<Ae><[e<ae0<{eC<g`<gZJj?)LfH<g&<`g <g<~gf mf<^fJk*@;`$<0`<%fPr`<Uf<Lf)<%`<Uf<߾<Lf< <AgȾ<g¾<gJmg<Ag<%gH<0gB<Ag<<g6<g0<Lg*<Ug$<Mg`ASBkAfr` SBkArfr`VJAgJ-Cp H@E0DgRDH@Qa 0m;<0a}J-;gpDa}P<`FRCCd>RD`0H@<f,JCg$Cg4J- f.SCpDa}p a}pDa} 0`<Sf*JCgJ- fSCpDa}b>CgSDE0Qav`̰<Rf2 gF- `¸Cg>Cp H@E0DgRDH@Qa>`<MfCgRCpCa}`<KfJCf gvp`vSCpDa|`f`b m0(?fpfa|E0>C` pa|a|Qf p a|>CpDa|Q0fpea|Nu>D`a|Q>C`pTJg| /a Nu L4/` SBRSBk?RSBjNu< g<^g<ae< <Cgо<+gξ<-gȾ<>f< k gBkBAp4NuaJ-gJNuS@d p?a0S@f/ |46RCmfBm@G8gb+<KfS-C<Of( kp0+R@//??<@azk>H WDe??<>Babk>0XBx8+ RD|f&_Nu(kCpdQDa=0 mp"-``0&j"CfPf"BQe`;Ba:Caa2;@ mp"m|Y*-RŊ`L4$Y/Jk$ < Ue <URkH@`"Q`2*$R0R|H`1"Q1!Q -p+@VPIaaaHmHx?-?<?aPk=Xf< m!m"!m&>?-/-?<Ba kA.Hx0?-?<?akUd;(H78;D&Ha|a}rLNuH @B@`k<ae<{d < `;QLNuAEEEIIIOOUUYAIOUAOH @B@`k<Ae<[d < `;QLNuH@"@a6`QLNuPH~8LGIp><< Xf9j2L22|IH@H` HA6B2QHAQLTUGfLNuHEGȓQ`pH+|;|aWp0-LNuH+|;|aVp0-S@LNup0-Nup0-Nu -2-NuHJk4a`r$Rd0d d `HB QHBQLNu?<Ha t\LNuHpAa"_"`QBLNuZ|/?<Ha >\ @Jo8 Z+HZX Nu/ mp0 _Nu/ mp0( _Nu/ mp0( _Nu``u`t`t`٦H8?<,a 4Tra46[xa:6Kx?a:6Cx?aLNuƄ 00HCNuHBa k6RO  +RfJk g"BAHA 02H@ 0LNuHpS@|@G Sk6&g6& +Fg +Og?<?B?<Ba kO &`H>|$r a2`|$r a2`*H>|$r"a2`UAe6k8/ @ : _f&<@|?Hm?<6a P0-&*Nua2 -h`Nu <0-NuHJg"mA@NLNup`H02a22H6&H`HabLQLNuH S-a@R-ka.Fga2$ra1 LNur LNu/ra1 _NuJAgUNH78&@(@aXLNuH??4a1`Q24 _NuH:SDԄAe@DegAv0 CdNup apQNu+|;|/aQ"6-SCC`Вm`Caa ;@a afP=aaan`H70adlL NuH? a^LNuH70akDL NuH? aj;B;C;E+I+J+HCf0Ef0Bf0/H瘀&HD art/C auV+KLBmBm&m0-8-arL(C&marB2 (&m6$*HzJ-?fs`sH&m0-8-ar L(CatRm8-meRm0-me`P?aQ?NuH70J-JfaLa^JL NuH70J-Jfa6a^"L NuH70J-Jfa acL NuH70J-Jfa ad&L Nu$<5*<ȯv`PH70J-JfaahLL NuH70J-Jfaad L NuH70J-JfaadL NuH? J-JfaLa]LNuH? J-Jfa6a\LNuH? J-Jfa ac*LNuH? J-Jfa acXLNu$<5v`JH? J-JfaagLNuH? J-JfaacdLNuH? J-Jfaac^LNuH70acJ-JfaHL NuH? acXJ-JfaDLNuH70acJ-JfaL NuH? acJ-JfaLNu$<.*<v `OR$<.v `I^H70a`hJ-JfaL NuH? aZJJ-JfaLNuH70acRJ-JfaL NuH? ac,J-JfaLNuH70acvL NuH? acRLNuH70achL NuH? acDLNuH70acL NuH? ac|LNuH70acL NuH? acLNuH70acL NuH? acLNuH70acL NuH? ac|LNuH70adL NuH? acLNuH70aeL NuH? ae>LNuC`LHF>Cf,ҲEf,̰Bf,ƺDf,H&JH RDRE anaqxLL -> K"K/K$aNL?$KL->`+_Jk+@Jk0|d"҈҈+AaaӶab/-` mNN mX0gS@g0Nu@J8LgF' FNu mXJPgRPNu@J8LgF' FNuS-H+NA/LR-faJNuS-H+NM`S-H+NN`ʲ|@d+$@QB#NuHG 2g+aG 2aI+LNI+LRp+@H@+@pZa@LGa&$HGap x heJmXg0-ZLNu Jf" SA@`C" A"0A"X0BA:"AX"AN"Al"0<S-AN`NBR-gNu/ @|xd*Qv.`<\fQ°fPQJfPRGB"_NuC/ @||d*QB!"_Nua'/ |S@|GB3G@C B||d*Z`QBC|Ig|Og|Ag|Ug|Rg|Pg|Vg|Cg|Mg|Kgx|Fgp6`^x8+ -(@RD|a('@NuJSf)JgNup`0aa7A6r'A'| a&_NurOa?</ ?<=ak)X7A6r'A'| a?<?Hx?<Ba^k),O&_Nuaal7A6r'A'| aL&_NuxrRa\?</ ?<=aPjt߰f(Bg/ ?<?B?<BaRO & kNu/ S@|@GJSg'aJg(Hx e </??<@a$nO `/?+ Bg??<@a$TO Bk&_Nu/ ?<Aa\j|f&Bg/ ?<aXBmNuaa;@//<@??<?atk&BO `aa;@/Jf&-/??<@a#k&O ` Pa#QNut`tHvGX` t`tH&)G4IZHA*HJ-gpEB@"(d"Jgd"SK(ICBpHa&`L$(R*NdNeSeLNudte(*NdN$&RgS(؁*NdN`*(NdN(` *ڃN(RgRSg긃g*(RNd$/*N*S`*ڃN(Rg Sg긃g*SNd&/(N(R`SD*NdNڄ$//"SaD "R`:8(8(T(>,.܄܄܄܄ޅޅޅޅ3Hh3HxGHDNu,.܄܄܄܄ޅޅޅޅ3Hh3Hx3hx3hhNu,.,3h.3xܼ޼Nu,.܆އ<3h>3x||FNu3X3HNuH,.܆އ܄ޅ܆އAhCx<>||ffFf.`gGf.LNuDLNuDLNuH,.܄ޅ܆އAhCx<>||ff.Ff$.f.,`g Gf .f.,LNuDLNuDLNuH,.܆އ܄ޅ܆އ sh<3h"sx?3x>HG>Fd<F`Vf<HGGLNuH,.܆އ܄ޅ܆އ sh<3h"sx>3xprQD`a:gQ DLNuAa$AgfIfHg`HfQ`ag`< g@<0eB<:e:<Ae6<[e(<ae*<{e<9h;j|A<f0< Nu|R@NupNuCEAAACEEEIIIAEOOUUY....AIOUNNAO........AOOOAAON/ L$UNL$_NuN,./3h'xh'xNu,.܆އ?3h7xh7xNu3HXHXNuH K,.܆އ܄ޅ܆އ<06, &L NuH K,.܄ޅ܆އ<06, &, &L NuH,.܆އ܄ޅ܆އAhCx.,?02!#͈! G! LNuaP/ ?<Aak \Nu´<:g<\f$IQĴ<?fPĴ<*fPQBNuH.Jg0j f`(<.gfSS.BAKBfLNualHC$I BQa&JC$I @6Qa(Je :JfPHmz?<a,\$m`&-h(pBgHm?<NakpAe4Q>O`& m`$HPrt,fLNu"Ha&Ca;@Bg?/?<BakO e*/܇/r?-?<?aO k^aAg"`/܀/Ҁ?-?<?ajO k4a,"JaCHzJgh?<`;@Bg?/?<Ba.kO e&/܇/t?-?<@anO a^Eg`/܀/Ԁ?-?<@aHO a8` Z4J(j6CC X0"@Ad2A`Qp `QNu Z4J(j6CC X0"@Ad2Ap `Q`QNur`r`HSE8DEDA4Akn4<x6<z|P~ Pd6<zF~ Pd4<@x~(fDEDEBe0Ce24H`@$xN@F'!J|BFLNu8DEWDDA!@Nu8DEWDDA 00Nu"mE0("QʱdX+INNu*.* @6fAvC$IaHmz?<a`\?<7Hm?<NaNj |f`hJmfpKaYA^raA"JfS-gt*\.B4 J2 AHaA rBaɾ -aa>O`PNu' +HbNu+HjNu+H^NuJ-g@f`&HS@8a^a(4<"<` a^78'8QLNuR@RAHH4&HD>UDd ;A>BmL?a`jRm2->GeLNuR@RARBRCRDREHF>;B;C;E+I+J+HCfEfBf/H瘀&HD a]|/C a`^+KLBmBmBma;H&m0-8-a]H(C&m8-0-a]62 (&m6$*a^L,a^HRm2-me&m0-8-a\L(Ca_Rm8-mexRm0-medL\J->fX$$ma_LNu/A/ _NuSe`oFpUnkp`pЉr@td0d d `H@ QH@QJAgNug" `"<BB 0³dNu2<t0 ³dNuHRBRC08&Ia\a^+KL"mHaLR@RARBRCH@fBf@f;@+H&I8a[P@a\TLNu$p"-gFQH.mBJk BNRBg AN az h"mN0`Caކ @p`QArWRA2NuIF^FDGBr ;ABm;|;@V`7@< <HpYaULAaUA`UJ[K@|| FNuC$v" "" v0""@"PHBHCHDHE4H@4444Jm g~?HE/6PL?`$LfFA@AH@HA eDE00Qa@4 _6L`,LfDEH@HAB@BA≀Ƃ eFA00QNu A/ P?( ?psaX0|dg|g 0 _1@ Nu\NuCE v" """ "@"0"PHBHCHDHE444441m0<`QAe"@a0a@Aa@IA??<-aXNurtv x0z agg a eRNuge dBJENuXNuQAe"@a0aJmf@`AAa|Pd|dYA??<+aVXNu`V"@ Z0J(j8DE X@SBBe¶@d0@d0`QNu4HA0H`64LH H+|Bm`4A000000000ºCgnUCRC0+|Bm`4H<+| Bm;|`4H<+| Bm;|`4hH<+| Bm;| `4Lp@!;@VH<+|;|J-gpa3L<H<"`4BD:<H0V;C(H+| p;@;@`3x;C$H+| Bm;|`3fH0V;C(H+| ;|;|`30BD:<H0V8H+| ;|;|`3 +|V8H+| ;|;|`2H0V8H+| ;|;|`2r`rk+@Dj+| Bm`2rj`H AVa+|;| `2;Aڲ|d"@B@`0QNuAV H,a+| Tm;| `2r`D+|;|;AV/a2 r`$;@VH +|g;|`2\YAZ`g A"f`"A /?<IaD\Nu _xf/ ?\R]x/ mp -Vg:lf" ѭlVSgej2 `ŦUeg`$44NuaHC$I @6a&JC$I @6a(Jz`HC BQaJfC @6aJfHmHm/<Va|kJO LNup`ap :f|A|d ??<aFXHm?<;a8\Nua/ ?<9a&f\Nua|/ ?<:af\Nu/ ;B:+@N&@BpA000BXp4ap0-X&_NuNu?<aTNuA"<}0H@0ЁHg0H@0ЁHf@||e@ xpNNupE`O0J-gr'|pGvJ(f:R"Ht Jjt-0|gaT@Fd"ahO " "Ha T4SBJ0QLNupaDaHza~QNuG t+Ѐjt-H@X6pvJfRU@rfS@vNurS@k@`a:Qp$I.0`a ´<0g$IQ"JNua fS`T*|<0YCgPCRNu / fpE`pEJokSR@NuJ/f"||@d2IAAAA/gD@Nup(Nu~-CxJkxg xk`x0|gt0a(gaC`(dap`azH"Rn"J(bg(!0``4g *HEAD(bz"J8g!`~l.vGr(Єo.o$.` t0SAka`Sk JEj`VEQO r(R`(a."Ja(ݜj r%t%a``!Q8g``((gC`v(QC(a$I(H``QNuSNANa `6A}a`.AU+H(NuCHCCᆌ!FHFJFgBL@NuHQJAgBh| "@Etvz|xSAeaD<_faHSa8`<+g\<-gT<*g<^g<,g<.g<#fa`Re V NuSAeNug؅ܼNu` :p &fH@&,fJAg #g .g ,g *g6`aS`J(faaa@`IJf`aRVgUc`lJDgJFf܅gRf܄xzgDzHE&J`ʸ<d\`hdNu<d&HR@RA@f ^S@/8:aHC8(HaLx*aHp\2hQNuJJJJJJJJIf f f raNuf raNuQAaHHJfH" Ixa`L*K&IxzaG /&M/ ~(K$Kx*aG$ JfrHr a0 _Nu/'h0|?X>ra0 X _Nu| e*2%Y|?:B] @%HNu`]Ae2%Y|?:B]B @%HNu/'` kJ\2\]2e0<`#Q` Nu'h&HzxaCBHH#hQLQHNuCfEfڰBf+H+I+JHzx&maB$&maB/C&maB/CL8H@\H`HH"QLhQL QNu'h&HzxaB|HH"hQLQHNuJJHF>CfEfBfDfH J aB(->/K$ K"KLL aL?$KL`/pLAQ(GHJf8J-g2Q&-//Hx?<Ha \k?<Ha\& @&PŸmgAB0-S@H@0-S@ B BA0-00|H0BX00-GHJg2+S+|m;|;|VA+HA+Hav<gFG;DLJg6Jgz`+S+|m;|;|VA+HA+Ha*J-gpea=-!Jg L`R`d`v`````````&`````\``j``x````` ``L`^`p`````````````` `` `*``@``N``\`` `~```````:`\`r`z````8`Z``````ƺ`<```6`8`:`````ʺ`ʼ`ʾ```D`ˀ`̦``~`ͺ```$`4``R`ϰ```.`P`~`Ж`Ю```` `<```b`ф`Ѩ``````<`>`Z`r`Ҕ```Z`\`ӌ`Ӟ`Ӱ````,`.`l`Ԧ`Ծ``,`t`v`բ`դ`մ``*`X`֌```` ``H`J`H`F`D`B`@`>`<`:`(`(`,`ێ`ۦ````````````߮`` `&`V`z```r`````h`j`h`f`d`b```^`\`Z`X`V`T`R`P`N` A<>AUCUĖAo:|!d.2gh JgtkxdFH@xЀ[DDiVNu 2NuDC|!dB2g,dD AJg2kxdH@xЀ[DDiNuтdTAiNu2Nup2<NuJAkx`~gCCi(*H@<HBԆH@GBDHDԄGH@:BBHBЂk EрgUAiEчeNuTAiTNup2<NuJgdJAk>`JgT <TAi(Nug CAi2J@gBCevgH@h(:HEBE|<xTHBJBgH@:BB`8BBH@:dSDԀdHDH@h:HEBE|<8NuJ-g0-aEA"C CV E Cl ps`$<6<`X<FeUFm~Fe|ІeNu|TANuUFm~Fe|ƐjNuЀUANu$6 <2<`<FdUFm~Fe|ІeNu|TANuUFm~Fe|ƐjNuЀUANu$<zv`<Fe4UFm~>Fe|ƾ| d؆eNu|ІeNuRdRDTANuUFm~>Fe|ƾ| deNu|jNu؄рUANu$6* <xr`d<Fd4UFm~>Fe|ƾ| d؆eNu|ІeNuRdRDTANuUFm~>Fe|ƾ| deNu|jNu؄рUANu A<F~G?<a>CClDABEG62|Ad<| e *t| `,@DC| 禊DJ_fمтd TAiNuTNudD@ AJkfJg8BFJf x| d H@HD0BD|Jk SF؄р[FFiNupx2<Nug CAi2JgtBgdڄՀSWv@D` dڄՀ߇݆څՂeQ` SCkއ݆څՂdQFFJ_gfFFJ_ge(Rd$Rd DdRd RdTAiTAi( Nu `~***g CCiBC<*,HFݭdRm,HFݭdRm,HF.HGݥdRm,ݕdRm<ݕdRm,HFݭdRm,HFݭdRm,HFݭdRm,HFݭdRm,ݥdRm,HF.HGݕdRm,.HGHFݕdRm,HFݭdRm,HFݭdRm,.HFHG6-( %ІkgCلрUAi0JCjRe Nupx2<NuRdTAi݄NuDNuDNu?C|g6gDNu6AgmDNugNuAglDNugNur@JgzjRADid| H@SAЀ[SANuJAk:Ig6e| dDA| Nu| gdDA| DNufNupNu  @ 6ɿlŭ+pxIϦGɀT~ތ Jvuu ;]=]5(`R yjNpx2<t;Ba\< g< gE.Bg<+g <-f>a6<$gN<%gD<&fJa <Hg8<Dg6<Bg(<Og<hg <dg<bg<og$` aڴ<-fFWf(KB`aBg<.f>a<0eVRm<0< e_< e<<*e< Rd./$***6* ah$*6 aaafJWgSW`+zJWgRW<eg<Eg <dg<DfZa6~<+g<-f~a"6<0e4<0< e<< e <*e< ddڂa`JGjDt4HԅgP[jD?eJfN`l6| gN|fBC|fv|fvBJk Bi@Q`BiQJogJgRAXNupx2<XNu6|d$*?a6Jfa>`a` <x2<H7 | E? gH$**6*/ a$_LHQU<QLNuteNuBNut-ft JgH0@HJFf ?a8$< ~66j DC|DdaL6JWka`apJog&$<6<0agd$<6<a`SW`$<ɿ*<6<lazfgd$<z6<aSW`$<zBCaIDA|?QWk J-$f0J-%f Wd$>|(e><(`J-$fE Wl@J-%f:BGE|0&RFbfJgتуSFPJfQQJfJg\.<RFj"J-$fFFgJ-%g| e<< 0Q|0&RFbfJgتуSFPJfQJfJf|DJ-$f"J-%f Wm WlXONu<Df Wet+<jDFt-JFf0TNuE$0~/RG@e~0RG@bg@SG0fTNud $<BCaaR^Wk J-$f0J-%f Wd$>|(e><(`J-$fE Wl.J-%f(BGE|0RFbgВSFXJfYQJgH.<RFj J-$fFFgJ-%g| e| 0Q|0RFbgВSFXJfYJf<E`X0J-$gpEJfpD0NuB@'d #o~ƀZz@ NrԥHvT ;B@'d fJg"?/BAQd $V~*YX r?/6$a$?/? 2$/6/a$6a\SWfP$6`?|Bg|m$<va`SWBg$<062r6xz <$UGe,JFg*HA/ <ra$6?/a$LQNuHAHx <raL$6?Ha\L$LQNu$<ڢva$6 <ڢr|m:a$6a a슲|m$gev$<ar` $<BCa`E`-  h5]( ڢ$<ڢ*|@d| e $*| g.DC| 毄BCJkfJgpSCڅՂ[C (24/|g$<zvaPEPa$*6a$*6a&THJkabL,aNuDaRL,aNux <r`PQڙU> ~8i:K{fiR57ƤKQ wΠX/g֋rohDB>ZkUO8,e_&9SD<]ݪ?|BgE$*6PTafeRW Wf>gh|f$<zva`RG<GFGHH$*+6+ CaL,H (+2+aZ$<zvaL,aEa>g |g$G<FGHG$*6a>|ANu$<ڢ**=yrN.\a8ܑaI$Eؿk?/a?/ /2/ a$6\`vHa L,H (2aL,`?/af?/ /2/ ab$6\`2HaL,H (2aL,`a&$<v`a"`a$<zv`a`?/$6aT$<vaa$6Jga`> <ڢ($DL??// a@*$6`a$<zv`a.`a`H$6a$<vaaDL a`NqJg2f*?BA$<4BCa$<4va$<vaE0a $<va$60H@aap$&m(B+'|B+B| ptBCBD*< , .R@a|d(<_g<#fB<,f|f|`SB;B&RBJCgJDg e6HEEHEEC`JDg6HE|d CE`EptxR@ad<^fR+ 1^gJ+fxB`ز<_f `Ȳ<*f,J+g+dPT+@RDad>@RDA`<-g <+fF|BJ+f|J+jtatd<#g<*fhB++@S3@RD`P<#f"@RDJ+g+eR+`(R+` +gز+f+g J+V$W%R@RB1 GNut&m(RB~rpR2g<.g <Eg<Df+J@f0RSJ<@J+gS:H@<EJAkf J+g`0S@3 Q6< +f3+B RJ --Bg J+g+ J+fBE`3 RA3 RAQ|QJ+g.+ .fg <Eg<DfS<03RA Q+gL<Eg<DfS0+SB. JWgB@+%NuRC 0Q$GRCg0`Nu/v&+ր/փJ->fփ֟փ$NuHxa(CEaE<38787,38'8'J->f,38'8'RDmeLF-ANuQ@QA@fab+K&mBmBm8-0a^J8f6R@me J-@f,`a@J8g:aZJ-@g / &maJ&_0-8-@f R@;@mdP0a(C0-a23 3(3$38*38638aaJ-@g / &ma&_Rm0-meRmBm8-me@BmBmB@BDJ-@farHRm8-0mdax$38*38638La`LJ-Ag ABF->NuJ->fמ`݂J->f`J->f`J->f`a/ 2 (&_NuH;|H8-0-a(C0-aLH6$*aLL6$*aLLaRm8-mePXL?Nu8a6<$<zaP/ &ma&_Rm0-meNuHBm8-0-aF.L,/HzJ-?g`"(_aRm8-meLNu/ 6&J->f&&_Nup/`"a @]0Sf&@\Nu K e 0SfNu(int, int, const char*, ...); // output int addch(const char ch); int addstr(const char * str); int printw(const char * fmt, ...); int inch(); int insch(char c); int insertln(); // output + positioning int mvaddch(int y, int x, char ch); int `N%* pjl f( XUnprintable errorStructure too long Syntax errorRETURN without GOSUB Out of DATAIllegal function call OverflowOut of memoryUndefined StatementSubscript out of rangeDuplicate definitionDivision by zeroIllegal directType mismatchRETURN without functionString too longFormula too complexCan't continueUndefined user function No RESUMERESUME without error use EXITMissing operandLine buffer overflowREPEAT without UNTILUNTIL without REPEATFOR without NEXTNEXT without FORIF without THEN or ENDIFWHILE without WENDWEND without WHILE'THEN, ELSE or ENDIF without IF or THENtE*** OMIKRON.BASIC V4.08 OMIKRON.Software *** - Press [Help] to enter Editor - bytes free.Reset Bus error Adress errorUnknown opcodeDivision by zero,Out of memory. SAVE or re-CLEAR immediatelyEXIT without structureUse EXIT TO in functionsMatrix not regularBad line numberFIELD overflowInternal error #ex48-addr-Bad file numberFile not foundBad file modeFile already openFile not openTOS error #00File already existsFile type mismatch Bad disk Disk fullInput past endBad record numberBad file namePath not foundDirect statement in fileToo many files Write error Read errorDisk write protectedIllegal pointerIllegal SELECT-CASE-StructureA:\OM-BASIC.INFNONAME.BASP80.BAS.PRG.BAS *.*C:\COMPILER.PRG   NONAME.BASC:\OM-BASIC.HLP#lBreakl? in   ')+-/`B&Mی!.nAp@XQE$4p2ZQ=|!1R~#L`aNQ`L`a` $z?E&$jNE2 z"hвPgH,Jd a%L@NuHM.d,R,W.ۺNu*oB?< NA\M-O @f-@Nh-H-O-xO T/ m Hh/ /<JNA A. +-O A Q 8g @ "_FPUf HA|T JfJ. gBg/<NN\/<NNXP-@ av8fv.?<NAT|f ??<NAXACpQ.Ep2ZQ-xphL-kL j-lL f-_xC-Il=i. =i0 8L<gJxp ab=n zvxpMaT=n z=n z#.Bn rpNtN\-|d=| p A0QR`N 0. "R@=@#z0. $R@=@#|-|f=|=|=|-=|N 0. *=@xp0.#zмx4.#|r`ҀQ-Ar0k>aO p///?<NNO @-PaaBn|Bp=@a a!0.`H-xA!?<"NNT @-h C!I -x Ab!-x*-x&?<"NNT @A"PHC @0<J8pg0<~AtCENv6$@d G^#KQ!,LNuH~`H~MF-|z=|=GNLxNuHM -|{NLxNuvtN\/MCR,_Nu/ .g /?<INA\?<HNATJoB"@". Ag$.,gJd2`"Q"EӚӚӚӚӚП-@XNup,`Rpfaa(=n#,J.#4g-|x=|N-|eBnN =n#*-|eBnN p3t xvA rBXB0#z0#|B0#z0#|N\=| rp3t xvN\pxa.FfA@N`/.?< NA\BgNAJH~2|EN"Q!hp!?<"NNT @!n !&!*L ! &HJg'yLNuHMd x hd0(HY@fA<` A`,` h( .f abL.Nu . -@ Ns"q(.4 Prp"`Prp#`p$r`p&r`p(r`p) oe:dJ.ffCj|002T aaa a aap3``2|A0|:e^ANuMz-G .. xgh xgV :xg( xg $xg xg`JgJgJgp0.. JAkpx`^.. x`].. Nur@|.. NuweOK J.#f\apAH!*!1AY&& . g *@B ` nBAgbB/tRBJfBe2$ n !dRSABnt CNCauvE TCf "\fBNCpEa `u?.lBnlJ.-fa r`rABaQ-=_lB.nTdB.B@Bnn `?.lBnlg rellS rutrAH|a:L>=_lB. `Jn~fJ@ga\aaJ nf2aoB n6 TgA Ta jK T?<-OTA$z,`6-I T|*#a"n Tal`RBCt2"Ha0e&< d /B _a6 tĀւtêB=A INu-H-OPC TgN0$nȐJ2  g  f4FB|BRAR`@|ea|aaJfB2 IdBB.HNu.n2&H n$H& JfH|e6<HQC T$<6"R`Q`g/ BnlBnj4pqa AraB@A BAQB@SAoaaA Tfppa ga`p a pqa pKa a"_Nu gBB.e=|A T/ 0.aT$If6(HR@aHS@& *LT exzK a((J](zK$a,g>a(I(K$zarxzK (Had0 Tݘ eA T\`QNuBnLa~aJga jT// G6ak@ n\f8Ha9dLj*ab<(f*<a7Ha9DLj "_ _aD`"_ _pE,@02gkNa2|`kE Re>$nPdkNuR< g< g<{d <ae NuaJgRNu"_ _0NuGa// E\r%< Qa<Aeְ<[dBAPSRa FN =<=<>><>=<=<>()#{R}S&[ajAra$ .2.a2.|g?Arap0` NuCxEՈ3nx 5nx Nu| aQ Nu| aQ NupH?.=n#,J. g. HpfaLA Q(G vHJf@J. g:Q &.rX//Hy?<HNA\kg?<HNA\& @ r-@r&PJ. fn dgA TB0.#zS@H@0.#|S@ B B A 0.#z00#||H0BX0x . gL0. dG vHJg<-S -|m=|=|A -HA -HN . gL<gFG v=D dLJg6Jgz`-S -|m=|=|A -HA -HNJ. gpea=_L?Nu?<%NNTNuHpvAJg P"g$ _VDOfHB|fvr"<}Ap(H@(HJCg( ЁHļgp(H@(HЁJCg( Hļf@||e Hz @ xpNLNupHaapE`+<Pg<Vg<Cg<Mg r`r`r`r|?/`2.jkSAAtv< d tv< gtv< g t<fJVAG Sk2gx +Of2(k8r2+RAk f/ /??<@a4 BA7ALNuSPd8BP`4PPP`,|Af<gRP< d&SP<gҰ< g԰< fBP?BVWNM\LNuJn^gG>r-Wfpa"pRa+-va;0`#$@[\]^`{|}~?BVWNM\Nu#$@[\]^`{|}~ *(Jk#ERHC)ig$%0+ytusDI"/p a6 Nu/p ap a Nua`/paaaaa Nu/. | aG .NuHx2. &n tn &Bn `8SD Q–QLNuHx2. &n tn &8. Ēn ` 8SD QQLNuHp&n tn 4. v QLNuBn 2. n fBn a=A a`RA=A NuH?<| /<NM\LJnlg?.j=nlja=_jNuHJnjf2.dga 2.~n|e . g . fpJnfh. gB<bgR<cgJ<YfB. gv| =C v| =C `@ `8 AfSn dBn ` Bf4. Rn n d=B ` Cf4. Rn n d=B ` DfSn dBn ` Ef&&n 4. 2. x 6QQBn Bn ` Hg<IfSn j|Bn araP`j<Jf0&n tn &rn 2. n BSCx Q`4<Kf*&n tn 2. n 6. n x Q`<Lfaj2. a`<Mfa2. a`ذ<vfP `ʰ<wfQ `<jf=n =n `<kf=n =n `<lf 2. ad`~<of 2. &n tn 4. v Q`X<df2. &n tn n v Q<Yf@ `F<bg<cg<ffQ ` <efP B. B. ~`<f@ <f@ `. nlx8(@zn h>&n -K . gr< fBn `< fa`|<gv<gp<fn jbBn `\< fr2. |PAn e2. =A `:< e4J. g G <f$2. n eJ. ga8` 2. SARA=A G @? . g/<NM\a`/<NM\B. aLNuH-|=|=|N8. ":. $SS nl=D =E Hzn n n -H LNuaeEiou^`aAeiou^aeiouaAeioOuUyaAnNoO .-#gA#ZC"""2CA#Zf< | #NuapJnvf"a n0B-H oB-H$-H(-H,A"xN}pBX BXB QB@aaB vB zB ~ .rg @-Pr/?<INA\`B.eQB B|BxBBnBBBBBBBhBZ=|JntfBd=| A,  AX"_.P>-O\! p!!Jntgd!!-@`/ pJvg-@v nlXJPg0 n$"n( 6<`($g"Į$$BB"fSngdB5CBjQB.eNuBnlBnjBnhGp?a0QBnNu AR@nlfBnl0g +KfSn/ W@eF +Of, k8r2+RA//??<@akdv ??<>Ba~kdbXB(+z:+ g`,܅S n$"n( RE|`$Xj*f:k ےjBBRQpE$kےQK8(U(za *_Nu"g(AJ"fR Ff Ng0$L4$vUQ`HCk ےjBBj\QHCQ`Hpr *O4B@H@6HC06H@? f0@0|:e^@adfL NutQNuJ k`K T MP p>/< NMXBB|W@f4. bn dg0fJ vf aBn d`a/.Ba@-_Fg/.Ba-_Bn|Jn~fH@| g|bfpjaB. `ar`y,|Hf Jn fJ. f/pjatabpkaj |Pf&2. n fJ. f/pjaJapka@ p g6rk0 n0Aae"|dAZy`JfQPgaB`rA64XWf0JgaHJgaJCgA4N`a`NuJ.g . g<e aBaatNu`Hx&n tn 62. 8. D–DSCQ| LNuHx&n tn 62. 8. CJ#DSCcQ| LNuH&n tn 62. 8. D(K , pfa. gpwag( # g$ &LJk| aQH܃gpKapYa< a< apeaJgpvaLNuF. `F.NuJ.fpDa~a`Ha `@J.fpDabp axpD`VHpjaLpHaF. gpwa:&n 4. 2. (KR*Lg $ g" ?a>Q2n gpKa&MJBgaQJgpvapkaLNuH@| f A TK rn pfa0. n g(U 4|fpBa`pCa0. n f4. (U  f JBg8pDav`2. p an B4|d2`pCaP(UQBRBaa0aaj-nHDNup apAa~pjaxap aapk`hpBab0. n fNu2. 4. n g pBaBpAa

.,g ??<>a X>..g ??<>aX0B,F#?J.gaDPta>=A-n@Jng =A-n@0=@|<9fr. 00AHAAA BAQB@SAoR-H=AJ.gB.B=| .gJnfaB.a|`P*n`(RSstAH PMHLPCMDKHGEw0 RHb r KSal n 1PB|Nu<fJ.pfP~B dA,J.f<fBn|<fP|H@<bfJgPzdA,NuH@Nu/<NMX//< NMXr AAfB|/<NMXJ@g/<NMX` Nu pNu0.hfag/<NMXaNuH@"Jf` +L<Pg<Vg<Cg<Mg `Jp`p`p/TWNMXNu".$. ]e" ЂgW"@e\"`]$`$B0"j  Nu".@g2 AC Te"JBfJgS-H@a|f]a2 Nu rNuJgQKH*.6C63030gֲ<f \fTRe\v<eJC*n$.g58`@<eg<gg<hg<ig<fg<jg`r;k0gb6C63030f|dL6C6;0RN0NaB\ W dgH T"l\g( (ЬL` Cʳg Q T](`L`F~*.:@\^ 0fLTNu6<` Wfa\6<` Wf ` Wfa|\ Wf ap\`dpH`.vU@g6<HS@gvS@gvHS@g vS@gvU@-o@ Bn=|?taPRAg-H@=_a0.`v<f^<f,PH@C(([)I"T&)֬ L<f`<f```-H@ Bn=|`XSa~R\ WgT W gv W fRWa`K/M`v W e W gaF\` Wdv Wf` Wd v W`v `dv` W g v WfxRW/HT`&*od CKNuvX`v` WdvUW`v`v/T?`v/` EgB yg< 6fR&.$Ʈ$*CvC&.g*|Ʈ$*C(v Jf*`h&.$Ʈ$*CvC&.g* g`RJxf-Hx-HBBB`*n&CHC`Jn8fdg~anJn~fJ@g .g/ *@?<PeI-OTJnzgBnz .g/ *@?<PeI-OT"nl\24.BAg .g/ *@?<PeIp-OT=Qdg4 .g.".$8n"Үn"-A/ *@?<PeI0-OT.dgg0JgS.dgBAg<fR`<fA4BC+ 4 J!fRIS-M@H`@ta4L|gXJ.f(.f"p[a0aa@ Iap]apa0`*A 000/ *D?<PeHv-OTRvdA,J.dgCd,NH .(&.0$.<$n8(J"JrdX2( &Z* j ʮ$&E&S J$Df$D2f`YA"jYA" I&Id2Id`""Q`-I<g?a0Sg"Sg [gSgUgdSgJUgZUg SgfUgt< g88g([gBSg`H g gpy`pf0a`*ph`T`axa -gp`TT` fp a`RS *f0Sa0B@U@ e8Q f$ (RfT`aB@U@ e Q``p((n$ g * f * gSpa|S(HaxV g ea`0<(|FgL|6g./aL R|eg(|gg |hg|ig`pXHjaj$_rSAR`"H`/Q(_f-Jp ,(n$(4خ(S/Ȯ$(D(J$fRLSD:<*L Ff" ,NfT?z  eUD`?z <_fU`<_gUe:Jk.|fpHDLJ.f I4PgRD0;@.gHgNu|// Q _Sa( _Nu|JCfQ` $#!L%%B%F%|WR@I&J,g,J,g( , g J,f ,Aeaa * g NuS8 J$fRLJg-J=DԸD`ܷUeNuPfCN<ggSgn`C6.|Bp<f0<(@I&&$<g/PeC|Re<dr<g<g<g<g<gr<g<g<gz<gtr<gl<gf<g`<gZr<gRr <gJ<fF0<|\f:/@eBVT`&v@(n$&4֮(Ʈ$(Cv$eB0``eB /// A a "_. _.GNuPeB $"@<d,<d<d<d<d<d<d<g<dr<dʰ<dX<dF<f0<|\fn $(@,<daL<<d< <X* $(@p,,(n$4HadL`~NuFN Nu?aR2|[e^BB(k " gRpvanen`paXapBC`a`<f/ Q$Sf-J`~aBB(k\ " gRpva )eNuapHHXd@lfa\LLRQNuaRX`BtvaNu?/ Xa."_0`0t `t&`t$`t%aJjD-,"B@H@H@HA2HA0HAA0|:e^A?Jf0e\OfNup"r`ٵdDQNugv#`v.4?H0P/ 0aPN(K _L "H6g Eg Dg .f<#g`Ù2  fRSA`طeQNu/.(/ή$*GKa (.ή$*GX.NuVpzNjd2VVX~(((4Dn ""Pzj*NRp666vvvvvvvvvvw2.0HRffl&&BLBLLNRZblvwXwPwdwdw\wnwxwxwwxjxvxvttxxdpdddddjjjpddddddjjv|vvL Zdddddddddddjjjjvvvvdddddjjd$(0$$$$.H瀈IaEB@Rxtz M*HNc.J@g6C62020fRfTS2LNua,]@ea͘JfXNup`"an$W4EN k,j ap<*fBF/a$oTgf|jpJFj<g<e'<<d'4|SFX?a$o4E// N k&_,Gk' a0 f,<d&rt<d<d<ertffUHFH.`N _p`*A ,J.dfbpAH!! fg`,aH a>a8a2 a(*a2a<a DaZ` JpNupNu/a$_k&<f J`<gGz2@03gNa <"g<`g<g <Ae^`PRr&IRagRgRe `~pNup`Va˺/ /*H/.8|N&S> M"_NuagSFk^gfzUGgz]GgzUGgzte2HtRgRt2Qa0Q~NuH@aH@aXHNua `aYIa~NupNuGa8k62.\|f$t`G ak6~ nFNe .[>d?J.Lf8aBB<(fza@2.\|n"JkR)0`zJ. fzP aQ 2.\]0`G^p/#QHERE/paBgRW/aȖJ. g<,f _]|`:<)gJoj&<Rf R  g  faXA<dX` _ak ok"<``aİ<g<f34*G:p&QNua?~Jf<j~Jf~ E;4FB&n$(n(K (<, * R@`&fƄE8(E4 Vgxf&n$/`JWgK((Uxza4=|Bn&n($_/ Y&.,(CfS<R@H(ր&(؇K,z&LaQSGBQ&_Y$0 2H>UHHpNup8`p6`ݬpa\"NuaȚ<f"`<f<`e<ddpNupNupa$Nup`aV[@eaJfXNupHza2f2P`<Nua kJGk NuXakJGk NuakJGj zNuXakJGj hNuA`~GC~pN$nD`$nDgS-JDak*ؾ_f0Nu/a&$_gAB`0Bn``paf aNana0aVa<f a4ad`"<fa$aa@a` a2k a /aP|g |g WpX`aa2|g|g`*2a`pafaaa`T// akpafP?aJ_k!`"_ _ak)JGjaak)gXf)a\k)aD`aa:aa4aZa,aRa$a0kJGkNua Wak6 _$I"W.akf.*I>pagXR<gINu _"_akpagXa`favkpaf?aak튾_faB`aaLana0aa(`^a<#fRaNa$aFa2ad<g<f&dak*JGja `aj4aa`4aj&`$a<#fRaaHaLJGNua`aa`aaaa`ak%JGjLaڰ<f%"akJGj.Nuajk%?ada\k%_fNuaRa`npXa|g<gr9gr:Sg]jpa&`TakBa`a4a aaaaa aaa` aapa`a```/a $_<'gJ<#gL<hgB<kg@<+g:<Wg4 JSaa< g<3g<Gf$a8aX`p `ap3a^` a|gNa:aa\jhaa<1g|?` _"_ala*a``/aj*Gak n\fahk<d _ak!fNu _/ a"k&$_(JtrgrSgrSgNuQf"Jd!L=B`ap`xNu`aaV`aaN`aaX`poafaLa a0aa*a6k`BBNuBBaJkNuBBa`@/ a kJGk n$_r<p d4 JAG[f6N0<Td <Td<Td<Tdr)g DAR?2pNu!?DW2`!?!?D22`J*gpjNuaka<<fDS`XG0@03gBNp`>~pNup `,@0;Nmu0<@0;NT  ^  jZ  dp42 !^!d"""# iPiZ():i`))ij*.*\***++,-123L3444455n677899i;RF>L>R>Z>D`D~EE EGzGGGGHHHHHH"HPHXH`HIJDJRKK KKK$KLL6LLLLLLLLLLLMMMMMM$M*MZMMNNNNN N&N0N6NRBRFRJRNRRRRRShSS: VN'`2ELSE@- VNENDIF VNUNTILf0aJf*oJ.df -nHD oNS VN -OT VNp`Ġp`ĚWENDf*oaJgJgJ.df-nHD oN*_P-OT VNIFa`JfR0- VNV VNTHENBn80.6f@- VNT VNp`FORAE e M"Jfܳfسf/ a-K$ * (ʮ$ڮ(&EJ+ff&n$ / ?/ aR&_a Ja>|ngN&_$_//? / / <xr -f Ra~N$_/D /@?A&_~a$ (Į$Ԯ(&B6$+*+2/ /(/"|~C /?/?NQV VNN&_$_/?]/ / <r -f RaN$_/@?A&_~a$ (Į$Ԯ(&B6$+2/ /|~C /??NQ, VNо|n\N&_$_/Y/ / p -fRai|$_&_.~a" (®$Ү(&A$ /|~C /??NQ~ VNN4@fl&_$_/Y/ / p -f Ra"N|$_/@&_~a0" (®$Ү(&A4H /|~C /??NQ VN(J"_/ ?N>gTGUAf JfЀdfYGXGtgBE ?/ / / Pe-OTS$ICfA NA NNu0;pN8d>`TZp`<NEXT"Of>/ f&o" (®$Ү(Ë lr2HA-A6 VNDATAp VN-p@"n$rg&Q.efa`Tac2-@ VNDEF Eg: yg g gp `V f a. fR "fa VNRabS2f"C?/ R eL gab?@f e2R e* gab"W#@ eRab2f"W3A"_2 VN R`-KF.FH $&@J+g&S0>SGng d82 (Nu2 Nu|UGef 0HNu NuUGgpNufpNupNu(2a4خ8(DeRBJd4Je`$$QNuJdJe`QNu/ ghkνSnTgSFkXgNx`LSFk gFN`>Jj:Rd6TANv`.Ue4@f6Nu`R&Nu6&Nu6&&NuUFjNX* (ʮ$ڮ(&E+fSngeʲkgL"n<`g|<ag|ھ<bg~<cga&ghSn\gSFk^gNx`RSFk gLN`DJj@RdSrd eR0/.?.Hn?=@j]e^g$SgDWfXRBoBUe*Bnja&=WjC-I/IN6?n/nC-I-n=n`Bnj fjTa\,2R=Wj4.lf4kFg$|dRAv0 Cd`rp azQ`fn d.2. Ad2pa@n d`FJ@knf`at=WjJFk*=o-o-oagC-I-n=na-nHD]e8g&0.lf0.jj2.fFA|aQ`p aR]d`a Bnj VN@,;#ASUSING dBBB VNaִ|dLJAgN6=n-n VNLPRINT?<`TO^%0xRaZ?SrdRa`=_h`HINPUTB.p gBnna@ faRa0 g`J.pf/p?ap a / / gV?ItBCBD:<BFahJn~f |J_kA`ag &&_a` eR?.hBnha=_h`Bnh VN?BBBB/?Hz$?<?<?<_BgR e ga~/@?A etR gad/C/K eZR gaY?@BJf e/C/KBJf6<:4(_8 _Dd8Cd60G T`QaJn~f/ /?pL* g|a:8L P/?* g|a$2 |J_kA`ae&&_a VN&n<(K(.DaHd < gD`a$n<* f H`4Q&n`pCaQCf Jjp`FJn^g@.dg .g".$8npTNu.dg"nl\24.BAg .fa"gab.qfQr`VQqCd<g(Cj<`gCp<^gCr<g C|<~f < fp`2>Wf)< ga<fJn^f6a`< e.<g&|Cg Lr4`SBkRSBk< g<^f < dr`<g־<+gb<-gL<g <ae<߾<Xg<Sg<Mg<CfUBkxf`< e<0eF<:ev<Ae:<[e<ae,<{eC[<g`<gZJj?)LfH<g&<`g <g<~gf n\f<^fJk*@q`$<0`<%fPr`<Uf<Lf)<%`<Uf<߾<Lf< <AgȾ<g¾<gJn\g<Ag<%gB<0g<<Ag6<g0<g*<Lg$<Ug`\SBkVfr` SBkHfr``JAgPJ.rf.J.g.Cg*?>Cp H@E0DgRDH@Qa 0nqr0aJ.qgpDaPr`RCCdRD`0H@<f,JCg$Cg4J.f.SCpDafp a|pDaZ 0`<Sf*JCgJ.fSCpDa8>CgSDE0Qav`̰<Rf2 gF.`vCg>Cp H@E0DgRDH@Qa>`<MfCgRCpCa`<<KfJCf g*p`vSCpDa`` nl0(?fpfaE0>C` paaQf p a>CpDalQ0fpea^Nu>D`anQ>C`pTJg| /a Nu L4/` SBRSBkvRSBjNu< g<^g<ae <CgҾ<+gо<-gBn^<MfP^<>f<a8*n P=|p0.tg|`|aa=|B@BnBnt`/ t,.(&n$ `JWfRBQveK((U(DXDza &n(BQ*_NuGOTO.efaaa `łp`_Fg"ZFj TFk"UFaoذdaNf*INu*@JgNu6gTCH..("n$,<(.(`$$Yj$ Į$$BJf @4A`VgQ`$a($ Į$$B$gn*BNu.egNuH n "n$BxaeaL?NuJ.ggH n$"n(` gf( Ȯ$$D((*r ndXATAJ"grSJ"f f *:d҄X4 |$Į$Ԯ(BԁK,z" ¼(A(a $n$r`&g ƁdeehQgL??Nu f/ a*_aH|g|n/ ad MaF*_Nuan:dNNuLISTBgp e g a> e Rp ea80/ ?a~02@e=G,PG`HSv/??<?ak JgJ.`f JnvffIv /ГDn(/??<?ak fQL \/ xe( ATUDe6`Q "e$=YA|p 0Q-Yb-YfAp Q| #?.,?<>aHk,Bn,aBntBnvp=@ntfJ.gvN8D@<9`??<>akBn,X`xa` a`ah`Bg?B?<Bak aNxG Tv`&IHT/<P??<?ak (fxSDe<g,< fJCg< g |gRC`aaJn~f`a`JfJCfNuBH A TapB ngBaDaa`LNu - sure (Y/N)? Araa<߰<Nfa`&P<Jg <Og<Yfa`SAVEC]e<g a` afa g(-MbaV*nb-O rA-H nana>R.gabB n*nbJ."fHn?<NA\?<Hn?<NNAPJkA TCfCg<.f`.BAKBHn?<Aagr߲f\HnHn T/<Vagr߲fO A TCfHn?<Aagr߲f\BgHn?<=G,aX=|Bn ea/ n0|g\/-nHDP"n x8-nHDaFQ @  /TA?Bg?.,?<@a@k$@fF _\`*_Hz8p/?.,?<@ak ?.,?<>ak| #Bn,`L \xTe(IK$za2PTIAp 2Q2A|p 2Q"b"fAp"Q .$`BQG,pIp")QvEzHR/??<@adkH ff$[*Q`>NEW e |-#aja`#CALLaFtD/gNBg e:R ,fRaFT2|>d՘/XW`aFJ2|@dՂ?TW gT"_A/M@PfN@MQf-@*_ VNTRONJvg&".@C TeSvfBvd` VNTROFFRvd".@C Te VNp-@v VNSTEPSTOP``CONTa0.R@gdJnf^ g ea/ aB-M*_ fRaa,-Md*nP=|.n\-OT-n`H0. ba`tp`POKEaE/RaD"BJf< _PfQf VNWPOKEaD/RaD2@g H@J@f H@ _Pf0Qf VNLPOKEaD/RaD _Pf Qf VNGOSUB.efaa*/ aR?<Pe"-OT`RETURN d@ Wglp Wg& WfSvf d,RT*_-OT`T*_-OT VN WfDa.Gk"_HaZLSA`-_H-_T*_`D"oaZP-_H-_T*_ VNp`lR PROC.efa&Rp@&n$&s" ®$&A(-Sj// ]e<9e`SPeraB-M@*n dF&_?Hn T?<Na"|fFkpJkPC k8p Q VNRnR?abp7JSfRS7_ dB VNFIELDa8 Sk +RfBg/ Ra=? gG``Ra $&@J+g&S04(_2$lp2Bknl nf&6?/ g\ VN kRfR/ ?aDJFjH W@gDHRa=||d̶2a?B?<Ba6`GETa kFRg.p?a/ ?+ Bg??<?a k 2+ @7A VN/ -fRaj&_Jkf:Jkf4C k8p "Q?<Oa|fFkpJkT`Bk VNPUTap@aBJg*Hy e </??<@aL `/ ?+ Bg??<@a2 Bk VNBLOADa 8N fRa;t/BgHn T?<=ak>=G,P <@/??<?NAJkP??<>akPBn, VN`BSAVEa/8N/.r eRa:/@Ra:.Hn T?<Aa\r߰gJklBgHn T?<=G,??<@NAJkDXfd??<>aJk.PBn, VN,)LSETa8(/ /a,&&_$ Į$&B(J+g&S0$[8"@4Be2A`Qp `Q VNRSETaܗ(/ /a&&_$ Į$&B(J+g&S0$[8"@4²Be2A`!Qp `Q VNSWAPa|// RarJFk f* ʮ$&EJ+g&S0(_&* ʮ$(EJ,g(T0Sng &(068 &( VNUkf 068 VNSf  VN& ( f gS T VN g`(_(* ʮ$(E* ʮ$&E..(DHtxHsxJ+gP&S0J,g(T0 n8*,"E$Fkh:g ##6g%%8) ' P VNJ,f: n8*,"E$Fk(BB/:g#6g%8) ' P VNRr` r`LINE g XgPp`ݰr(@HA\`2.`JgҀ-A Nup`READ.efaa/ // .|f .xga*@ e*@a&_&a" g .ga`S -@|*_ gS VNv e@ g8?a7vJk$6` Hv e g?/a7~d&0 eR?Nu`ưSPRITEa7VSR2fƘC / pap a~rp a/Crparpa"_026Akn4<x6<z|P~ Qd6<zF~ Qd4<@x~)fDEDEBe0Ce24H`@$xN@F'#J|BF k#@ k#@ VNEXITp e ga6tRdŶS-@F`=@HJgV0P@gBT@g\@gP@g,\@g8JnFfp-`B"oaL^P-_H"o._`^BvdT"_`NO "_`F W Yg*Sg Yf"_ eVP0H;` "_P`/ *oSa"M*_ -OT0.HQR dtp." gT*I VNRESTOREB| eDaa8/ a`A`"M*_ .xg(dr(@HA2JgЁ`-M|`a-@| VNFILESHn?<NA\C T"*.* eaa.=C`C T?<7HQ~N?aTjrϲf\ VNJnlfpKN9.fjArC xRDJfS !Sf !Af !Bf !.f_aaZA 2a0anA@grDa .anaN8~O`jA0raaA ga2`Ara`2.`A T`xFILES"\*.*"LOAD ""' 'EDITr ea4aT"pfN9 NCONaX 'g +g #g hg kg Wga3S`a Ud VN e<3e ga"@`R`Ba/ *@`Ra / aH  ea`Nua`-@fJ.gN4&B.`6NaB-@Na:-@NRa*-@k^gZи-@Sa-@Na-@Na-@NTa|dJg / a *_ VNuMAT gavH Lg> fR dg@ ^g _g MgH(M f f eVa(H e4 f ^gj _g^ dg~Ra((KLLN> VN// fpa$$Ka N= VN L\/ JfXQ&_&S0/NuQ`PRa((KLLN= VNRaHHa{N=/KL((KaL-_LLL/.H@@N>ap$_$a VNRa(La VNHzat|/?JFf/?Ra`TRa((KLaF VNRaaz VNLTa{ VNRaLa~ VNRaaL`*INVDETRESUMEpJ.gJng~BnB. n e f|a| j *H VNp `L SORTB.l f\.lRQ f -]fPa/ . ή$&GJ9gv #f4~p/Ajr ePRa-K$ /. ή$&G.(S #fNA,0",E`t&n$ $<gRBCl $$ge"t<g&_/. ή$&G.&S0e"+pSR6C.lBC E0Hpa( VNLp$(R*NdNeSe VNNudPe(*NdN$&RgS(؁*NdN`*(NdN(` *ڃN(RgRSg긃g*(RNd$/*N*S`*ڃN(Rg Sg긃g*SNd&/(N(R`SD*NdNڄ$//"SaD "R`:j$D`^j$D`L,.,3h.3xNu,.܆އ<3h>3xFGFNu3X3HNuH,.܆އ܄ޅ܆އAhCx<>FGffFf.`gGf.LNuDLNuDLNuH,.܄ޅ܆އAhCx<>FGf$fFFf<.f6.,`"g,Gf.f.,LNuDLNuDLNuH,.܆އ܄ޅ܆އ sh<3h"sx?3x>HG>88Fd<F`Vf<HGGLNuH,.܆އ܄ޅ܆އ sh<3h"sx>3x88prQD`a:gQ DLNuAa$AgfIfHg`HfQ`ag`< g@<0eB<:e:<Ae6<[e(<ae*<{e<9h;j@A<f0< Nu|R@NupNuCEAAACEEEIIIAAEOOUUY....AIOUNNAO........AOOOAAON/ L$n`NL$_NuN,./3h'xh'xNu,.܆އ?3h7xh7xNu3HXHXNuH K,.܆އ܄ޅ܆އ<06, &L NuH K,.܄ޅ܆އ<06, &, &L NuH$n8,.܆އ܄ޅ܆އ sh"sx?3hg!7xhg#7x'x'hLNuCMDa*R@rdS@=@l VNMODEA^ g A\ %"gH/aVa0(_"@t`QCpWf8 VNIF^FDGBUSAr =ARa*XBn=|=@a2 VNUPPER$LOWER$SrNua* g g eR Xg0@f?a)?Ra)?Ra)<:8>J.g$LDHD@FEEHEAFHFGHGrNuBITBLTagxHRazg0GooLkJA B"H`A BC $@L8Ck(8( D444xBLH8# BDBEQ`hRa g g VN/Rag0Gk$_A C B2IphfL$vBK1611! B@BAFe4Ge6PSBSC<>@ADEJ@j@B@JAjABAJDjDBDJEjEBEJ.g2J.g,EҾRmRG>bmRF<bnRE:bnRD8@mAm.H-|m=|H Tr g fRa(Dr@@f|=Aa* VNT/a(rd`8L<. FLU@fJ000AI>H@L` HA6B0QHAQLTUGf VNLOCATE2. 4. g e2a'Sr2. d2 fRa't4. @e4pN9pYN9< aB< a8 VNHELPCOLORCSRLINERRERLERR$MEMORYHIGHLOWIPLa' 2VfHBp@A|AF VNPISEGPTRGEMDOS?<`?L.0`$L fFCBCHBHC eDE66Q2HpsNBL L2.0`,L fDEHBHCBBBC⋄Ɔ eFC66Q`pVDIRa&8"BJAf|?H@=@ataralanah o-H T=h XCx" "J_(_#L J_#_1_&_#K1_"\0=_ ZJnfpsNBR n T0. Z @g @dg1n X VNt`t?Rab4r"_( -D$ Ȯ$&D(خ0/?BJf $ f#fNRa$tr`AESRaaE"BJf?aaaaaACx" "1_#_1_#_1_#_ 1_#_J_&_"7nv0<0NBR VNBIOS?< ` XBIOS?< fRv&C ga/ / Ra$>d?< f4 ,fRa$2|n/XW`a$2|nx?TW` %fRT o (egNN`NA`NM| &&_T$ ga„ VNTIMERMOUSEXMOUSEYMOUSEBUTTIME$RaQAeP"@a0a@Aa@IA??<-NAX VNrtv x0z agg a eRNuge dBJENuXNuDATE$RaTQAe"@a0aJn\f@`AAaAPdAdYA??<+NAX VN - Changes will be lost Quit BASICSYSTEMN?Ar NKV .*#f ArNKVa٠N*zENDJng4pJ.fN?=|BnAX.P!Y !!-@`-O\`BnjBnh.n\-OT-n`HN-EOFLOFLOCHEX$OCT$BIN$FREa"xY/Ar` A"gf"A ?<INA\ VNLPOSPOSUSRINPUT$INPUT$PEEKWPEEKLPEEKINKEY$CHR$MID$Ra-nHD/ /Ra!Sd4?0<`:MID$Ra-nHD/ /Ra!Sd?Ra!d?T-nHDaR @0@e20&&_J+g&S0"[84@eAe4JdJd `Q VNLEFT$RIGHT$STR$VALSTRING$INSTRINSTRLENMIRROR$ASCMINMAXVARPTRtrPALETTEA@ d VN g/a _2|`gv2|f0T fR`LLIST=|j`2WRITEBg fRa t>Srd eR0/.?.Hn?=@j]egSgWfTRBoBUeBnja=WjC-I/Iag?n/nC-I-n=n`pBnja=WjJFk2=o-o-oa+C-I-n=nNKL`/p"av NKLp"ah-nHD]egp,aPR]d"`N8 Bnj VNMERGEa(=|tN4=|B@BnPv`ӚDRAW ga?Ra2046a& d VNRa?Ra64La`H H T-|Bn`END_PROC`fEND_FN`Z{ VN}`LOCK (g,aBtf @p`<Q STEF-@" VNp-@"R`LIST$W_PIXELH_PIXELW_CHARH_CHARDEFER-M `&pGNG*Jg&@-@$ v+f޼<d<fv`v`<d< <F$ JfJJkf2 +(+`2+a(4`/<f2 +`l<f `b<fp0`T.<f(2 <g4P<g4<g5r<g5<g6<g7<g7-MFraB`1X&n$ `f`/?JFf/?Pep|`D+-+=-=*=/=/aJj$@pJAg|erSAQ|<eNuSELECTAIB@/ BgBa/?<PeN-OT VNEND_SELECT f O-OT VNpNGCASEAI/LgS`aXf g g`/aL((Dgja|DK,zNLh`aha2aha`kJGkNuazaP`rNup(N2g@`HK,zNLzLd8e`HD((QHDQNu/ "$ (Nk("_Nu2AHA02AHA0NuJ.gla0A ``J.g^a"A \` J.gPaA Xa`FJ.g@A T`pA TL`2AHAD02FAAHAE0QNuJ.g0.aG TAx"C?) ? E I " A TN`psNB0 @g @dg C3_ NuTNuBOXa^A T000000000AgnUARA0-|Bnap VNPBOXa H T-| Bn=|aH VNaT?RaL? g4a4JkS0@f?Ra JkS0@f`6420@ANua ?Ra6420NuRBOXp` PRBOXp ?aH T-| Bn=_a VNCIRCLEp` PCIRCLEp?a?Ra?Ra? < d of`>Rax?RapH@0H@-@=_ ` H@-@ T-| =|=_a VN-@=_ \ H@-@ T-| BnRW=_a VN`ELLIPSEp` PELLIPSEp?a?Ra?Ra?Ra? < d of`BRa?RaH@0H@-@ H@-@ X H@-@ T-| =|=_a& VN H@-@ X H@-@ T-| =|UW=_a VNCLIPBn Tea=|H T-|=|J.gpaL THa VNPOINTTa=|k-@ TDj-| Bna VNTEXTrj g`r -XgT %ga?Ra?RaJ eNHRa?Ra?RazA00=_ XLaF H@-@ T-| Tn=| a6 VNAa H@-@ T-|=| a VN=A|df"@B@`0QNuTa-|=|=@?a0. "_f r`xFILLr Xgh %ga?Ra?Ra=@ H@-@ T-|g=|a| VNHEIGHTSTYLEEXPLNLOGSQRRNDFACTCDBLCSNGCINTLCINTMKD$MKS$MKIL$MKI$CVDCVSCVILCVIBITRa/Ra ?g(a2/Ra _$fJf VN VN// Ra&_& * ʮ$&EJ+g&S0[dVkv SkvSkv"dƖASCQCkR`Jf VN VNINTABSSGNFIXSPCTABSPACE$FRACNOT-^SHLSHR*/\MOD+-=<><>>=<=ANDORIMPXOREQVNANDNOR)(+1-1*2/2VERSIONROTATIONPATTERNWIDTH@SINCOSTANCOTATNRESERVEDARCSINARCCOSARCTANARCCOTSINHCOSHTANHCOTHSECHCOSECHARSINHARTANHARCOTHSECCOSECBRKJ VNRaĪPv`CHAIN gaĒBntN4=|B@Bn fadn=@tAL!! nXhXg6r a fRBg ea ܰd> fR?< ea Jgd>NT". $.DRMDIR`_6FORM_ALERTRa |d?Ra fHaLR(@Cx" A"E T"5nv"4"T"$"04p000BX0<BNB0. tH|* ga VNFSEL_INPUT`4|@d @QB!Nut?r RAJW|`FILESELECTRaJAgzHRaHRaRH.L H6C aLC aG I a.LA aL6A a~0. tL.H|a VNCx" A"E T"5nv""X"$$"0Zp 0BX0<NBNuCx" A"E T"5nv""X"$$$"0[p 0BX0<NBNuMOUSEONJnfN)`N) VNMOUSEOFFN)`HCOPY g ?<NNT`R&n =|j6. `8. a͸QN8QBnj`WVBLN6 VNCLSpEN9 VNWAIT .Zgn SNcHBZ VN/ aи-@Z*_`U VNa a-$<va-X|`( aJSrd,RNuTUNEa?a.>2d @F'ACRHa(F gS@F' F VNAC<PFJAfNuVOLUMEan?atd g>2@F'aF VN?Radn68>pr@F'a  K F VNNOISEaV|d.?RaF| d2@F'ACA|8F VNREGISTER ogSNcH g VNaNGTEXT ROTATION =r S`jFILL PATTERN =A//a^/ $&@J+g&_ _ Wf $&@&S0p0Q dS -|p=@aF VNLINE PATTERN ==|qa0d dl`LINE WIDTH =a=@ T-|Bna VN``OFFJOYSTICKL COMPILER (g Jgat`R VNQUIT`tNDC TeaF@eAeRBRCH VNINLINEJnga Ief|d#C T @t@v`pe_@C@xe_DCDQ2NuHAN TL` VNLIBRARYRp@&n$&s $&@(/RaJfC XaN>nBgHn X?<=NFkZ>=G,?<?B?<BNFfD&nD-KD&BoNFHS/??<?NFj`춀gNKSWNFBn,O"K [agp;NG [pK<2fQ/ Ni(T&_e$$K B"nDIvprK4g0.Saw|g |e|d G>(>1p?peKK &U](KxzNL6&(S "LK$(zNLիd2`"QBnt`LIBRARY CODE MNK j *H VNUNLISTMEMORY_MOVEa /Ra/Ra"@  _Pfe.d2d"d `H@""""QH@QQf VNd3 d# d `H@# # # # QH@Q`MEMORY_MOVEBa/Ra/Ra"@  _Pfe8ddd` H@QH@QQf VNd d  d` H@        QH@Q`EXECaA BP eRa䰮n*n VNSEEKaRBg?0g4|Rf0Ra/ f Ra?@?<BNFkO VNPOLYGONNjx`PPOLYGONNjx . ή$&G(S #fWf0=D=CBn L0J.faX&La VNOUTLINE JWr=A=AphH@-@aR VNMEMORY_BLOCKa<` ><G>;pNp$~gG>;pNp..............0.....,.............,......f...................................^.... ....2d(.X~.....`..| @ > : 6 z V z   > |  B l v ...................""#`"!X!l$R$d$$4bv4Nl .   <"# J>&  Z p ..6r$L~F@Z<nn 4N!!!!"2""""$"f"p"z"""""!!!0^|NU/?JFf/?Pep$nlj@|`/?JFf/?PeXp0.|`/?JFf/?Pe:p0.R@S|`/?JFf/?Pe .2.Nj(n4``l/?JFf/?Pe/?<,NA8T _rNjt::]~aV:M~?aL:EaD`J/?JFf/?Pe/?<*NA8T _rNj:t/6.\f"M~a:~`&ʇ 00HENuUCft.~a:M~a:MMvdEPCeC~a`aH@NUa:@0YX rNj$`/?JFf/?PeP <ڢ(j &@6HR`a"g|jRg\`rXgR//Hy?<HNA\k?<HNA\" @ r-@r JGj0KdKd `QB` /?<HNA\|A``dBXdBd `HABBBBQHAQ`aZH@H|`aL`r2+(k8k f&/ /??<?afk k gBkBAp4Nup6`p8NGaT Skg +Rg +Oga< <`JkVHH|`>NFa Skrg +Fg +Og?<?B?<BakVPBW?/?<?B?<Ba&k

Bak2  +Rf8+ g"BAHA02H@0|`Nj`a Skgx +Fg +Og?<?B?<BNFk &`JFjNUAeD"@ :f:@e4|g.|n(?Hn?<6NFkP .2.|`,NT .D<|`p0.f|` p$nlj>|`a~A/".g 4"APfN,_Qf|A``HzaPd2Nj6&JH`NJQLNua4SvdNU=BhaBnh`xa$@pPfQf|``a$@Pf0QfH|`Ha$@Pf Qf|`2NU/?JFf/?Pe/NJf _|2g/NJ _$rNj$`arBJfrNj`aV$SdaDЂBdBA`a6&da&a$$SdaЂBdBAAd2`|NUa$dlNUAd2`Va$dLraƴAdBЁ2`4$z >UFj^62<0Nj< 2(J&Ja!2 @|JngB$La92.Nj&nR4RBJd4Jd`$$Q`z Jngaj|`z`z`za4$r"Nj0 ~ JjD~-(O>BBHB6HC46HB?$f4B0|:e^B¹f2 @`^/ *@Ia*_`LUFjda` JAg@$@pBJf0NUad2Nj6KdKd `Q`t `&@6$.r,Ce$(GR:$KE` VWf A|`p|`&@6$.NUa$Sdހ"@dBB`p0|`|$@G4J`Q`bJAgb$@p|`PHSNUHSLC`Jf LS`&LS`HSNUHSLC`^Jg LS`LS` $|`SFkgax$6r Nj4$$`SFkga^`Jj RdTANv$6rNj4$`a$rNj$`|UFja2Hf4rNj4`Z| eX$@( 2 |`0]Ae0$@ 2 |`YAe`$@ |`UAeH$@0 H|`af$NUaZr d VHH|`SFnDg a(|`a#|`|j`JjDhr@|`Jg UFjg p|`pJkp`SFng a3|`Xa4|`NSFn(g$*6a3a|`4$6a3a@|`"p|``SFng a5$|`a4|`Ri|`r@|`SFng a5p|`a4|`Si|`DrA|`SFng*e($6~p|`VЀi|`jDrA`r@`TAi*RF`SFof|`na|UAiRF`^px2<RF`P/?JFf/?PeH <|`2/?JFf/?Pe*p|`/?JFf/?Pe0H|`NU/?JFf/?Pe |`/?JFf/?Pe2 |`/?JFf/?PeZ2 ( |`t/?JFf/?Pe(BANj4JdJd `Q`:`B/?JFf/?Pe&n$p0"3(®$Ү(خ(-D$ &A2+Nj(4خ8(DeRBJd4Jd`$$Q&n$ `JdJd `Q&n$ `/?JFf/?Peh&n$p0 3$Ю(&@2 +(+|`p/?JFf/?Pe,&n$p0 3&@$Ю($@2 *(|`2`/?JFf/?Pe&n$p0 3&@$Ю($@ (|`/?JFf/?Pe&n$p0 3&@($Ю($@0H|`p`b/?JFf/?Pev``h/?JFf/?Pev.efarNjBt4-MF(n$$4((Į$Ԯ(خ(-D$ &B g f" -[f~+`NUQ |`$g\*BJCkCN"T-IT#nD fRa"nDa "g,/.F/.N/.H/.D/<Pe>-nDH-OT VN/.F-nNT/.DPeRNjJFkf"_HaRA`LS*_`vCN"T-IT#nD fRah"nDaj "g,/.F/.N/.H/.D/<Pe-nDH-OT VN/.F-nNT/.DPeRNjJFj"_HaA`LS*_`g|g& VHH|`p|`0H`|d  _/?/?Rn<&Y///Pe/ `h&i * ʮ$&EJgF) HJ+g &S0|ng e/ 2+Nj S84a62"_`2 (`/P` JgJf/&Y&<(2 a"_JfNuBn.<`&&_<(2 ?a>QNup0(n$"4®$Ү((A0$$X|Nup0(n$ 4$Ю((@ |Nu(n$t4$4(&Į$֮(Ԯ(-C$ &B"S$ f ~0Nk"S0(I~4!a&*!fЅ&e&`<f(2 UFda*!fЅŰdրQփ փր2,Nj(4&n$ `(n$t4$4(&Į$֮(Ԯ(-C$ &B"S$ f ~PNk"S0(I4!a.~&*!fЅ&e&`<f(2 UFda *!fЅŰdրQփ ր2 (&n$ |`R(n$t4$4(&Į$֮(Ԯ(-C$ &B"S$ f ~0Nk"S0(I4!a~&*!fЅ&e&`<f(2 UFdat*!fЅŰdրQփ փր2 &n$ |`(n$t4$4(&Į$֮(Ԯ(-C$ &B"S$ f ~ Nk"S0(I4!a~&*!fЅ&e&`<f(2 UFda*!fЅŰdրQ &n$ |`2(n$t4$4(&Į$֮(Ԯ(-C$ &B"S$ f ~Nk"S0(I4!ax~&*!fЅ&e&``<f(2 UFdaT*!fЅŰdրQփ0H&n$ |`(n$t4$4(&Į$֮(Ԯ(-C$ &B"S$ f ~Nk"S0(I4!a~&*!fЅ&e&`<f(2 UFda*!fЅŰdրQp&n$ |`(n$t4$4(&Į$֮(Ԯ(-C$ &B"S$ f ~Nk"S0(I4!a^~&*!fЅ&e$`F<f(2 UFda<*!fЅŰdրQ4 $(@VHH&n$ |`~JnhfJjg g e`|a&<f(2 aA T00=|i=|BnaA "p0(|`|kD`Jg A`N~bSFnfJgpx2<`Jkfp|`>f*6$Jg̼|kxdbDe2Da\|FgaJFgBCa'"|`BCEa'n|`a6$<vSFgeaa >|`hza |`\a `Vt |NuxDe$Jgef8Hĸf0NuBa B6~<gSF 2(?g"` H2aLLQ<NuH6a LlQ<NuC`4C$6*.<f(2 `&C$6*.<f(2 `C>f*6$FgaSFn&g2e48|$@&BAd8B` VfAepN|mpNpNxz|BGffAmnfepNgCmnfepNF`(?/pCkNj&Ba &_6a`KdKd `QNu>f*6$FgaSFgk"Ђi|`̐a pB6a ha|`da x|`>f*6$FgaSFk4g(i |`Ԁa (B6a Ca|`ha||`^a BF`TC$`CJ>f*6$JFkf*6$FgJGka`SFk fa|`6a ZBF`,|BGJj0~Dh*Jg xf`a @6a a|`p`JjFGDhJgxgPJGfD`ȴdBH@J@gH@DG?a l@6a dar|_`H@"&HAJAgHAJAg$`ԁeJkJGgD `pNuUFd@Jgf*6$:GUEda|`>f*6$:GUEda|`>f*6$ax@d |`߶>f*6$ax@d |`ߘ>f*6$ah|`߂>f*6$aR|F`j>f*6$a:|F`R>f*6$a"|F`:>f*6$a F|`">f*6$Fga*SFnXg4H4Haa"L,aL,a|`BaB6aHaa"L a~L a|`޴2Hf&iHC0H|`ޚSFkga:a!|`ކ|ka&|?a<`n`aD%&Va:%&4a0,H,|a&,,a11a,- a--SFgeaJn fa"d$_$RN|`Jn fa"Z$_$jN|`a&#v*\a-"-va-.a--SFgead$_$RNJn fa!|`ݤ$_$jNJn fa!|`݌al.,.dab.J.aX./>aN//zaD/(/a:/8/a0/0Na&11`a"(a/0va !SFgea$_$RN|`$_$jN|`>f*6$FgaSFg>kF"m"liHBJBfHBH af|`ܶ$BaXB6aPar|`ܜa"BF`ܒ$6*><f(2 FgaSFgeBaB6aa J|`Za dBF`P>f*6$FgaXSFk`glBFJgj|DJj FDge dTip0JFgD|`p`p|`2BBHB6HCBB46 `a`ar|`aa|`۾BabB6aZ||F|`SFkga@xBF`ێSFk ga.|`~JjRdTANv|`jUFja|`\UFja4@f|`F~gCCNv(*H@<HBԆH@GBDHDԄGH@:BBHBЂk EрgUANvEчeNuTANvNup2<Nu A<>AUCUĖAo:|!d.2gh JgvkxdFH@xЀ[DDNvNu 2NuDC|!d@2g,dD AJg4kxdH@xЀ[DDNvNuтdTANvNu2NupA`2<NuJg <TANvNug CANv2J@gBCevgH@h(:HEBE|<xTHBJBgH@:BB`8BBH@:dSDԀdHDH@h:HEBE|<8ACClDABEG62|Ad:| e *tC `,@DCC 禊DJ_fمтdTANvNuTNudD@ AJkfJg8BFJf xF d H@HD0BDFJk SF؄р[FFNvNupx2<Nug CANv2JgBgdڄՀSWv@D` dڄՀ߇݆څՂeQ` SCkއ݆څՂdQFFJ_gfFFJ_ge$Rd RdDdRd RdTANvTANv( NuBBBg CCNvBC< ,HFݨdRh,HFݨdRh,HF.HGݠdRh,ݐdRh<ݐdRh,HFݨdRh,HFݨdRh,HFݨdRh,HFݨdRh,ݠdRh,HF.HGݐdRh,.HGHFݐdRh,HFݨdRh,HFݨdRh,.HFHG6(( Іk gCلрUANvJCjRe Nupx2<NuRdTANvNuDNuDNu?C|g6gDNu6AgmDNugNuAglDNugNu2<@JgjRADNvdA H@SAЀ[SANuJAk:Ig6e| dDAA Nu| gdDAA DNufNupNu  @ 6ɿlŭ+pxIϦGɀT~ތ Jvuu ;]=]5(`R yjNA`px2<tBnaҴ< g< gE*Bg<+g <-f>a<$gN<%gD<&fJa<Hg8<Dg6<Bg(<Og<hg <dg<bg<og$` aP<-fFWf(MB`aa,<0eZRn0< e_< e@<*e Rd2/$***6* / af$_$*6 aaaJWgSW`-z?<JogRo<eg$<Eg`<eg<EgRW<dg<Df\BWa~<+g<-f~az6<0e40< e< e <*e ddڂa@`JGjDt4/HԅgR[jD?e Jf`6| g|fBC|fv|fvBJk BNvQ`BNvQJogRA-!gUfBW`JWg>R<|e|Jg"|@e|AfgX n eBFNuXUFaX|Nupx2<`6|dJ$*?a6Jfa`xa&`p <x2<H7 | EB? gH$**6*/ a$_LHQU<QLNuteNuBNuA`t-ft JgH0@HJFf ?a$< ~66j DC|DdaH6JWka^`aJog&$<6<0a&gd$<6<abSW`$<ɿ*<6<lafgd$<z6<aSW`$<zBCa.IDAA?QWk$.f6.f Wd(>n e">. `.fE0 WlB.f:BGE|0&RFbfJgتуSFPJfQQJfJg`.<RFj&.fFFg.gn e<. 0Q|0&RFbfJgتуSFPJfQJfJf|D.f$.f Wm WlXONu<Df Wet+<jDFt-JFf0TNuE$0~/RG@e~0RG@bg@SG0fTNud $<BCaa^Wk$.f6.f Wd(>n e">. `.fE Wl0.f(BGE|0RFbgВSFXJfYQJgN.<RFj&.fFFg.gn e<. 0Q|0RFbgВSFXJfYJf<E`X0.gpEJfpD0NuB@'d #o~ƀZz@ NrԥHvT ;B@'d J. g aH`fJg?/BAQd $V~*YX r?/6$a?/? 2$/6/a$6aSWfP$6`J. g aH `,?|Bg|m$<vaSWBg$<06$<va$6a>?/6$a?/$<SBCa$2r6xz <$UGe,JFg*HA/ <ra$6?/a@$LQNuHAHx <ra,L$6?HazL$LQNu/xa(Nu|Y0BXHYNu/a(Nug,"fPff`<2TY|LYNuJ. gaH`$<ڢva`J. ganHh`~$6 <ڢrad|m6$6aha|m$gev$<a` $<BCapE`2-  h5]( ڢJ. g aH` $<ڢ*|@d| e $*C g.DCC 毄BCJkfJgpSCڅՂ[C (24/|g$<zvaEPa|$*6a$*6a&THJka*L,aNuDaL,a2Nux <r`PQڙU> ~8i:K{fiR57ƤKQ wΠX/g֋rohDB>ZkUO8,e_&9SD<]ݪJ. g aH `?|BgE$*6PTaBfeRW Wf>gh|f$<zva:`RG<GFGHH$*+6+ CaRL,H (+2+a$<zva.L,aEa>g |g$G<FGHG$*6a>|ANu$<ڢ**=yrN.\a8ܑaI$EؿkJ. g aH`Z?/aD?/ /2/ a$6\`J. g aH`HaL,H (2aL,`8?/a?/ /2/ a$6\`\Ha\L,H (2alL,`a$<v`*a`a($<zv`a8`J. g aH `?/$6a$<va*a$6Jga` <ڢ(a`J. g aH`a>aUANvNuJ. g aH`a a`a?/v$<a~$6NuaHv$<zaL,NuJ. g a@H `aHa(:L?/a|$6`(aHaj(:L?/aV$6`a $<v`a`J. g aH `adHa,>$DL??// a*$6`na$<zv`^a`a`H$6ax$<vaaFL aJ. g aXH`Jgf?BA$<4BCa$<4va8$<vatE0a6$<vad$60H@aaR$Fe|ƾ| d؆eNu|ІeNuRdRDTANuUFm~>Fe|ƾ| deNu|jNu؄рUANu$6* <xr`8<Fd4UFm~>Fe|ƾ| d؆eNu|ІeNuRdRDTANuUFm~>Fe|ƾ| deNu|jNu؄рUANut&nR~rpR2g<.g <Eg<Df+J@f0RSJ<@J+gS:H@<EJAkf J+g`0S@3 Q6< +f3+ RJ .-g J+g+ J+fBE`3 RA3 RAQ|QJ+g.+ .fg <Eg<DfS<03RA Q+gL<Eg<DfS0+SB. JWgB@+%NuRC 0Q$GRCg0`Nu"@>&nB+'|B+B| ptBCBD*< , .R@ad(<_g<#fB<,fDfC`SB=BRBJCgJDg e6HEEHEEC`JDg6HE|d CE`EptxR@a d<^fR+ 1^gJ+fB`ز<_f `Ȳ<*f,J+g+dZT+@RDadH@RDA`<-g <+fF|BJ+f|J+jta~d<#g<*fhB++@S3@RD`P<#f"@RDJ+g+eR+`(R+` +gز+f+g B@J+fF@=@F@=@NuR@RB1 GNuN4" /$ Į$&B$J+g&S0R|"ֻ< d2B<fBY7<]nNu <gB#SnNu" ®$&A"BAQƼJnNu" ᙲ<d\A $&@ +f4&S0p Jgp$BBHB84HD8$+0HD@R@RD=DNu/&+ր$փJ.gւփ$Nuփւփ$Nu. ax@fH&GaL`a78'8S@QNuHxa(CEaE<38787,38'8'J.f,38'8'RDneLnNuaBnBn@f8an-K&nBnBn8.0aJ8f:R@neJ.faz`aJ8g:aPJ.g / &na@&_0.8.ڸ@f R@=@ذndP0a(C0.a23 3(3$38*38638aaJng / &na&_Rn0.ذneRnBn8.ڸneBnL?J.fa>`apRn2.>GePXNup/NGH&&Laab-KLHHaFLa-KL?.?a@f_f2nf=|` K e 0SfNuH"H" NjLD @ 0Sf&@ LNuH H/ Q&_&S0&a-K$LH Ha=@=D-KLanfFnf>-KLa޸nf*nf"BnBn&n0.8.a(C&na2 (&n6$*aH&n0.8.aL(CaRn2.ڲneRn8.ظne`H H/ Q&_&S0&a-K$LH Ha&=@=D-KLanf^=D-KLanfFnf>BnBnBnaרH&n0.8.a(C&n8.0.a 238 38(38&n63$3*3aL,a HRn2.ܲne&n0.8.aL(CaRn8.ڸnepRn0.ذne\L\J.fX$ $&@&S0$naNupNGBnBnC TafgC TC0-IJf*.*BRCa=@.9|//,?..?<@a kgNїfB0..aJfrXNu ,&.(nX`CpQpeBB[NuJnf.HH"nX<.fJng.BAKBLNufSJnf`HP"np XQL NuA,p=Bg/ ?aPkB0Nu/ NjJAfNc$@SA"WQB"WN2"_JCNu??<>atXjNCaC TC0-IG TE"JC0-If=|Bn`rpA`LC Ta|a VN .: Uf. T|@A|d ??<NAXHn T?<;a\k~Nup9`p:C THQ?a,a\k` VNC TaCRa HnHn TBg?<Va k0 VN`r9@@=AJFga a,aV`K@??<>a)XNuB#=@<.,gaJ."f<.nT."aaa_"aJ."g n@NK ` .nA Q"BA`H nlC p0(R@"4.#&<@@A<AAp0(R@"4.#(°|ep@@A|erA@LNu=n#,/r$6.#zSC8.#|SDH T-|=|=|a\ RVgS@=@~BPPPP"Q"-xNnaaJ.fXx"a nlC&p=h\v0(X"E4 3@ 3@  3@ @3@ nxV"PBn rpNta,.nTBnaA pWQQJ.g ` daPHzQJ.#f pkN9J vfND0`N4P-aaQ=n#*Nu . #g"ANpU@k bP#`;~a`HP#`=nja NuPHA d/ / / / aPJ."gh.kf8-|=|=|a-|k=|=| =| #$a`ah-|&=|aA X=n X#&=n Z#(`ZJ."g2.kg n,#|e=|#(=|#&`6k=| #(=|#&`".kf=|#(=|#&` =| #(=|#&a.0.jrA."@J."gNq=@jt@@; ngBn=A{{@={v`,,P(PhP?v8UD|JBg<>.f>O|d~UAAe>SGv8SD:RE<GUnkEF=E=G=F=C=DpEN9aaA T LNu-|=|=n"a0J.#4gp`p -|k=|=@=@#$a NuHpnjgx-|=|0."R@n#"egp=@"=@a0. "=@"a-|t=|=|=|laA T>(Pg=|WaA T<(PgfNqLNuAL8L~yjfDEH<.~CBe<SF@=F~JGgNup1ABQNu0.2.a0.2.A`QQNu~6.SC`~va<.vHz:SEn8.SDCJ."fLH nnJCk SCkQLHJGjD`$Ig0&HEh&&&&QQQn`@z` $IQgREQQn`$BaQ"NuJ."gHN)LNuP"J."gHN)LNut`4.aH$nnx8.#8.vJ@k S@kQL’Bdr4.zAd2AJ."fpnjgU@kfdCj`$p@GH ::HxQL0RQJBg.p0:Bvr8LdLd4Ld`$$QQ`*CXzAgEYBIHp6 Cg`bpG@pI@pK@pM@|.<:>GFWGUFpC탆(탆4QQ`hpG@pI@pK@pM@|.<:>GFWGSFpvC탆탆HCHC4QQ2I *L,MSEedpG@SEepI@SEe pK@|.<:8>GFWGSFpC탆탆HCHCCKQL@J2AAJBk,p0:Bvr8LdLd `QQ`Chz`C_z v6.xUx`8p&IH` 4.#(SB/ 2.xSATQR$_QLķDQp`,H` 4.#(SB/ 2.xSATQ$_LQLķDQ`H<.#(>.#&HBgaT-|k=|=n#$a-|=|=|a-|'=|-|aLv-| =An=| H`I(`8Qr2.#A8tH TaLJBg>A64FSCSDH T-|=|=|a`-|rBnaPL`v`6.a8.zCjrDjCeܸBd4BdJ."f$nn/x8.#8.vJ@k`Q(pnjg*U@k&fAv6:ƖBpSB2FQQ`p<.x~>.xz:.#zRvVVÔABJ0.#(S@H@ 2.xSATQL2Id.`H@ 2.xSAFZQLH@ 2.xSAFZQLQH@ 2.xSATQLQ`vACI0I@CxBDJ0J@D{0N{@J6;0V8;@RFDAfDxTBz::ʚBUBJpZ2IdFZId`FFQRQ``??H<.#(>.#&6FSBSCx8.#DDAH?<aT-|=|=|a@-|=|=|a(-|=|=|a-|h=|=|a-|rBnLH TaL`0.~nn2.|nJ."gNuaN$nnHx8.vJ@k S@kQLJ."fpnjgNU@eJg\6CCtABIB <J."fJ.g <`J.grv6:4Q`v6:"x8.x:.#(SE` v6:xzI@FApJ."f J.g p`J.gQ`H<.#(>.#&@46GFSBSCHJ."fx?<`x?<a\T-|=|=|a-|=|=DaLJ.g4RBH T-|rBna`L`H-| =|=o an/. X"n T& KdBB.e|*#=|E T& p0.~Ѐ"ЁЁЮ @\". e A](HxzK NL!h\0 \(A(($zK$NLh(A(zK$NL"A`Ր\dK`2QNuQ"J.|g"=||`JgP"A~Q0.|nd =n|aJpnze0.|nzR@=@a0a *~HzE&J|."Q"JgDJf<g:< e4fJ."g <S`$PJ.gJ."f an""J."gbNu2SAW"H@A\UAgA+|gJk g||CafNа<f,JfNua.JAg"SASt\`"WRA."a*`<afQ"Cagj gBr n0Aae0|d*A`JfQPJgP"J.gaa`NuJn|f"J."g0.~S@ea=@|A/Q~XNuaxga8fapa2f\Jn|fNuaeJ."gBn|A/`aJf&L|nbf nddSndnff nhdSnh2<n|Ct !QPNu2<n|t QPNuA.Jn|fpafR.".fx`xJngaBnJfa.DA.(J.gA/2`Jrn|PfNuJngaBnJ."gpafQ"A-XNu2Y0YWCNus&tdstKMRRSSb6DrD r xC<"<(<.<4x< y<z<{<;><8=!.A5B<CBxD?T?U?V@Y@ [=@\B]@@Ha@HG@wGH@PANH@P?H@P@???@G;:^:^=@8<<9'"41:^=@<2<'"}E #$(:^#\!@%t!"#,B5Z5Z5h55~5589;,/5h505~%5#5;,;;>dh< <<<<"<(<.<4:n==>=*"->.>n,=< .6 -&Gb*.)SEGPTR= ASC(BLOAD CONT DATA ELSE FOR GOTO HCOPY INPUT KEY LPRINT MID$(NEXT OPEN PRINT RETURN SYSTEM THEN USING VARPTR WHILE MOUSEX MOUSEY PP P     --------------------H2QNua,aZCAnp -I raBBBYraQpPPn@.@TnHTnV.zT.6V.NV.fAE-H\\-HA|-Hp =@ r?prAar0Qra^p-@ rphtxaLL |A r0HHp3t aFptA a4BnZ  fraa`=@ rtxpkv`p=A rAt-H vxCx" A"0000BXE T""P"P"P"0<=nv XA TN`NBNu".b<g".f<ga`$|e2<HA-A|`Apatl/a AB<g,<g <fr`2.SA0.~Adp=@a`-f|AAAe (YAg "Jg@Tg0"HSaDgJnf2p n"n R@Xg Xe`1N`Lan~dp`a D@n~ep`pt < gSrЁd0eeNua`a./aaR NuaH@|Ca Q"-|a HzJ."gAAa8afPa`Jng$ n"n ]prt`BPf0t0\eNuJnf n"n 0X]`24RBgRBgAdJ0XeNuU$HXf6Xe )f&H -_ Xa/. XL zK NLh J =@~Nu#ŦAf?.Bn0.a&4.6.<=F?.zJ."g=nz~ 2B0"H0< eSJFg0 H@gSB: H<.zEe|'d|'a6Fe,0.zFAd"Fe@d4Fe@d6"H`Q`=_zNuH/nzo2.zJ."fjRn0.R@neA@7a=|0.A ."Hn0 W2/a<0.La ` N8Bnj _LNuN9=|jQ`rv."P"af_"J."f"0.T@neA?a$Bn0.S@raQ"J."g=|`S@raa3SBd2/< NMX|fX/<NMXJ@g/<NMXH@<ag8Nuf2.A 0|g=@~ndBAAdB@=@=n|Bna``Z p/r4gk "DSNu<f@`޲<fF<gr`R/tg<g<g"$"DSNu<gJ>.RG4.| |gZ<<9|CgPSF|gHSF|g@|{|zg8^F|g0^F|g(<Fg SFg SFg`4<7`4<8<<9`4<:<`~REDgp?Ef/< NMXI|fp0"ЁЁЀ&nT&+ Sǖ pr.f&`ZrBgFg4gSaBgFg@pSCn`4g(<g<e>(TBgU`SappSCn`LJBfSCgBSJ4g`|e-Ha>S" =A=E0aB".ܒH=Aа@NupNuLp>SFe(. SDDdJ."f`HnH`~REDgHp?Ef/< NMXfn0adL*W2"H4GTBBev R$I&M4g$f$<Ae<[d<Ae<[dVWf> H=G=EX@NuPXpNuaH@.=@N1T`N12JNuN2agGg\C TN1jk8f6`N1fk,tag<(f RBa<,g<)faf L$|`DTNu$Xf:( g6( Ȯ$$D8"G;:ŷ Vfg JFj|(HdJg(HeJFk LYQ-H$=H4 nFNn/. X/. TB.e|*#=|L? \Nu4. bn dg0| N4B. /< NMXfpEN9a,Bn d`ZNpNuA MENU06:pG`DA=|#` AJ.#yg"2.#0. MENU<0<0pG` |aeg*/<'?<Ha`\Jgx-@#BgHn#k?<=aFjPC CpBQC A#kajA p|ta0. zBgHn |gXHn#h?<=aj8PBg.#hHn#h?<=a.#hJjPA*Ika`a`TP,Hn#/<??<?akӜO p?<?/?<BakӂO /.#/<'??<?arkfO -@#Jf&A@Ik~a`zaؒ`#< fLRR` n#-H#H fQL pѮ#Ю#Ю#d,Ra2Ю#-@#a&-@#B#`.L .#Ю#e#'gxD`6  fP`Bg?/.#?<BakҬO /.#/.#??<?akҒO n#J#g n#C[fa2AZ/a`R,gpH@r2 A[B PH@r$ gR`FJgԲ@eJgae*AQG n#$eA# # # Z-H#pBg`f<f& z[&gl zZ .#Ю#[ fP`T<g<<fT n##fA$Jg0-`#-`#-`#BBB-H#` zZnU#e J fR` n#`aְ??<>adX/.#?<IaV\`H .#Ю#$Hd:"<7e g  g fB`JfB "\dJgS`B""<\"eLNu?.~=|~ n"n $I ("J fa`Rn~\f=_~a`a  fT faZ`$a fTx g x QRg`a )fU/aJk"/eި(ؼ /(IzK$NL2Z(""E<OxQC$o&*\S S2""Q""_ _(HP . Ӑ\d( \K zNLh`H`HpHIv$.$ d0 h "HaJf|Pg |Qg` @Rg0 @Sg.dpLNu "ne\` I]pLNuR`Sf`~a (g  fT~ faIpzQ<Og JBB`& ."԰fp))[((H\&L/ zK NLa&H&(\E $S6(؃&Q(I(ؼ "zK$NLh _T . \dNua&np|߰<d +:fTaE ~\fS"JT(K<.gf"0 KU@gS@fVgS!fR`Qp(KR@gf`E QQQNu-I-K-Ha" x hdA $<====p!Q0.z2"ntSBBHEv `Qp` (:f|@A|d/??<NAX _HP?<;NA\Nu?<NATrAA:R@?HP?<GNAPA"HJf|\Nu/a:aQ ` /a,a*n*QaKI*p+$QpaGI /8 x hdNX` $/RN 8X/pa^ap2d`Jn rgSn tfJ. f:AC Tf !\f$IR*nrRg<.fWQQa˚`ڢA p|߰<d. :f(Jf$?aH0aIK*p+$Q`$ntCf "\fRC G*nr U.*frBJ.gGt p Qg<.fr`gQQNuEtaE nR#Ŧ JC$abHAMhaY8<faВA$CaC IJg :$IUg$Ig<\f`"JgR<*g0A|߰<d :fJg$Ita$"np"QNu*nrQRg<.fWQAC Tf`A"C$"aa#ŦALaXv<faA#C"aLG"Hn?<NA>/ tNv?adk>E At x<:.Jgp WS`QpQJf&JaX`U0Kj8N< 8Nt v)_dpnjtOS@fza>tO`pJCka2a,`D Q&JxpHG8 >QHD0.fNu0At'v|P"aQ"NuJ"kN>na|*#a~`xa|*#ap`hr2.~`".|HA-Ab`Vr2.~RA`".|HA-Af`@P"a|Q"H@AgSgSggSgSfXa||*#aaP"F."a:`^LbDfhn~f4.|Bd<En|Fd=E|0aLbEPEeGe2EECp`Q`0B0?.~=D~a@=_~-nbfNua.ba d n~d=D~&h&)(H(zK NLh(K (zK$NLh$n Te`J.dg=|dJ.hg=|h..bfdHNuaLbDf pakTH0aL<EŐEdpGe06@n~f2.|FdAendnhC`Q` QH0.~aL2.|CAd R@`4AG|dEB`!QE`Q`JGgRF&. nSC>.~Ce8Ce<Ce>v6 ЃЃЀ6"҃҃ҁ6$ԃԃԂ"H$H’Nua$(&)&n d&n<÷DdDdenbnf>.~a .(J(zK NL&n (2(H*J:*ڄ*ŹeTMםe(j(zK$NL(jd8d(d `HC((((QHCQNuCBA# G"Qa|*#ana"aP6.~:x|HxbBgHn"?<=akP<~xDGAHpp/??<?akŞO @gA"HEpx  g  fQ  fR8IHa ^=WbRnfaRn~LA"HĞDjBG0`Q`v0.bnfd~CBA"2G"QaaFatLxbJFgREBFBgHn"?<BFakzXa` . #g"AFaRDU@kbA-H#`(aɔ`N?N> n0B-H 0o-H$-H(-H,P"N>nBbBfaP`LP"pv6$X Z6g R@ea`P"NQ"Q"`"4H=Br*RCg xRA e=A|`0.bnfd."a.gA SaLbJGgRFH 0atvP"|aߜQ"LPRDFea_"`azaŨBFBgHn?<`p`a`NpnJ."gaDa&`na`aH@<Cf pag<\f pagNpak$0.~a=@-HB.a* n0.aP"P"Hzv`0J0.ndBnn~d`Jn~gBn|BnBn~a~`:Bn| . S@=@~R@ndp=@`0.~gSn~nfaZ`\0.|ACQ-I4a\d@}QaxRn~a n~ gS0.|`QQaPSn~aRn~0.~nnfa`Ar 0<VF@@}NuA0<r VR@Nu0.~S@eà$H4CaA@`VgSR@2@|dZ=A|`QB Ja̴Sn~`afa^a0.~a$J@gaha^`T0.~R@a "Ht r`VgSR@4aPA=@|B|d`QBa>Rn~aSn~`Rn~0.~nnfaaaL8.~n0.2.DDa0.2.a`ʨaaH`p0.~ @K "U]Nuad I(HxzNL0 pRnba$SnbNuA BPa˘a(HdbxzNLhp2.~LbDdnbJGgRFFdnfJjJDfBbnffBfAtv6Ae րkAd60XQNuHp0D`Hp02aLNu .#6gɾ-@|a`ɌpA#6 QBNupA#V!`QNuACaaezJ.#5f2P QA=HafQ#5=|a-n|#6`նJ.#5fP#5`Q#5-|#0ACaQ`,/R <fR&H _ f UNu/R <0e$<:e<Ae<[e<_g<ae<{e (Ff (NfU&H`R&H _<0e$<:e<Ae<[e<_g<ae<{e(<$g.<#g(<!g"<%g`R(<Lg<Bg<Fg`R UNu 8#0de-x#02.4.pnjg0nenenfP"?.~=n~aH@?0.ư|dp2.WA@d02APg>e20A8.QRADfr46RCSDAC ngCDHH _|f=_~Q"`0nend8:4nn6<>P"H/-n=F~=G|aH@||ga Q"p`LaP"aQ"H@?6.Ɩnd6.gav4/RBng?Bnea6.SC4/SBe?BL<>.nnHBdCBnAQ RBQ||fpLaQ"aZ`~`TQ"L`=F~=G|Fe fGeFGHb-nNuFna`@A;"pJ.fp@pJngp@nn"/A:paCl,_A:P"J(WpJ(gp=@hh"aa`Cr3< QNuaeiouaeiouA^anoANOaeiouyAOUaeiouE^`Sn/< NMXgBn .`J."fQ"a|Jg@."Q"Cx<^g0Cz<`g&C<~gC<gC<g`"@"Nu< fNu2gfI<^gް<`gذ<~gҰ<g̰<gNu .fJnfJag22A0t Bd&AB2QJAfR." ."fpP"QQ"H@C"gP<Zg0<~g*<>g$<?g<@g<Wg<Xg Jfa"`nB`/®$ A B _X"S<ZfTJ."fNJfaH@A<~g*A<>g A<?gA<Wg A<Xg`-H|?`<@f8JfJ."fr/.A:g"A<?gA<WgA<XgH@NuJg  @ H@Jf-HNuHz$B#BQ"?</<NM\Nu-OQ"Bna .g.~a8Xp.}a,^p~ޮ,a?.z=|zA"<0H@0ЁHd0H@0ЁHeAprn#aprta=_zBn#aJ#k HM=dA7-H>&Ha@La 8ePHz0.S@r4<`tp8W."g aF."aa>J.f nAdd-x8.:.<.a8.:.<.aa`aDJfJ."g4p|Jng&J."g2.ƒnend ".ȲgpH@`JBgp~UBdp}Jnfaf@|`J."gvJnfpJ."gj .#gP#H瀀aLafL=@aQ"aaafQ#yp.J/aj `tP#y=n#aV.n`f/<NMXJ@fNua:.NM.n .#g P#/a NuCvp8. YLR@AeBeQpNu@Nu-HCbpL6Jz gz0QCE"pt ft rEQL>=D=CCHE=D`QQpafL8?.z=EzJ."f,Dpnjg|gDU@eg L<FFNqL`Lxp2`2R@H؀=D#a"L?.z=ozBn#2.Aa*=_zLQ=_zNuJng p-@ nL`/<NMXJ@faJBf0.fafڰngNunn6.LAeBdH8.SDLA$ p@8(A 8| -LgRASBHaL/<NMXtJ@fajL nf8.ĶDe RDAeJBg6L?a4g\UBd40.fafT=@`nn6.LAe BdapNupNu nl g:a-@r2B@H@4.#&4.#(°nze0.zS@ne2.SFH4(ng0.=BF@nNutNu"""b". FILE FIND BLOCK MODE GO RUN Y:65535 X:255 SIZE:4000000 NONAME.BAS  NEW ^N ------------------ LOAD ... ^O LOAD BLOCK ... ------------------ SAVE ^S SAVE AS ... ^M SAVE BLOCK ... ------------------ PRINT ... ^P ------------------ DIRECTORY DIRECT MODE ^C ------------------ QUIT ^Q   FIND ... ^F FIND NEXT ^G FIND TOKEN ... ^T FIND DEF ... FIND ERROR ------------------ LIST ... LIST TOKEN ... ------------------ REPLACE ... RENAME TOKEN ...   INSERT MOVE ^V KILL ^E ------------------ BLOCK START ^B BLOCK END ^K HIDE ^H ------------------ LOAD BLOCK ... SAVE BLOCK ... ------------------ PRINT BLOCK ^P   SWITCH SCREEN F2 SPLIT SCREEN F1 CHANGE SIZE/FONT F3 ---------------------- PREFERENCES ... ^L SAVE SETTINGS  TO LAST MARK ^Z GO TO ... F1 LINE TO TOP LINE TO BOTTOM ------------------ TO MARK #1 1 TO MARK #2 2 TO MARK #3 3 TO MARK #4 4 ------------------ SET MARK #1 ^1 SET MARK #2 ^2 SET MARK #3 ^3 SET MARK #4 ^4 ------------------ FIND ERROR #  RUN ^R SAVE & RUN ^W TRON & RUN COMPILE C SAVE & COMPILE Y RUN *.BAS EXEC *.PRG ^X OS-SHELL ACCESSORY HELP FIND:& REPLACE BY: QQuery A All Options:O OK CCANCEL SHELL COMMAND:SEARCH FOR:LIST:FIND TOKEN:DIRECTORY PATHNAME:LIST TOKEN:FIND DEFINITION:SYNTAX ERROR OR TOKEN NOT FOUND: O OK CCANCEL PPRINTER PROTOKOLL NEW PROGRAMMChanges will be lost !Save edited file ?Y Yes N No CCancel PREFERENCESScreen OutputDDirect V VDI Edit ModeIInsert WOverwriteLinenumbers1 On 0 Off ErrorlinesSShow HHide Automatic BackupYYes N No Compiler:O OK CCANCEL Printer Width:QUIT BASIC SYSTEMChanges will be lost !Save edited file ?Y Yes N No CCancel Repeat Count:Replace ?YYes N No CCancelAPrevious GO TO: O OK CCANCEL BStartK End BlockPageU TopDBottomRENAME TOKEN:NEW NAME (NO POSTFIX): O OK CCANCEL HELP-File not found !HELP-Keyword not found ! PRINTING... LOAD FILE: RUN FILE: EXEC FILE: SAVE FILE: LOAD BLOCK: SAVE BLOCK:PRESS ANY KEY TO CONTINUE.END OF LISTING. PRESS ANY KEY. SYNTAX ERROR OR TOKEN NOT FOUND: Desk Quit accessorye Press any key ...No Shell availableShell error (less memory)File Execution Error?.Bna=_NuCJkaNNuSFk,6.~DdvCd6~` 0G@ea0GeaRGGdNuAJPkHDn~gRa20oa0J."f06oLbDe CefJGg24oFgr4<aaLNuJf2/nfA2<J."fa20/Waa`SFk,6.~DdvCd6~` 0G@ea0GeaRGGdNuHDn~g:r2 n"n ҁҁ\d g Q6f0or4<aLNuHzM|?/<NM\QLNuder test noch'ne Zeile ?****?           (((((,&?00 <"8<2""!( ,3" 4               ?                                                                   !-11-!!=3=53!=      &&  """2-       UUU8lll||lll80~~0<˜<ƒ8x0||<<<~xx0x`~ln `| 1h<|bf 0fF8ll:|l6 000 0 0f<~ 80 0`0 ~~0  0X4`fffvza`0 0`0 | l8~00p0844,<< 8~UUUUUUU$Bf$$<<$$fB$tBBt.BB.<B""!$ *98B fff$$~~$$~~$$>~X|>~|&V, 04jd8|l|8:nl~: 000000 0 0Z~<<~Z~~~~ 00``<~fn~vff~<8xX~~<~f 0`~~<~ff~< <8 0``0 ~~~~`0  0`<~f <~ffnn`f~<<~ff~~fff|~ff||ff~|<~f````f~<|~ffffff~|~~``||``~~~~``||````<~f`nnff~<ffff~~ffff<<<<f~<ffn|xx|nff````````~~Bf~~ffffffffvv~nnfff<~ffffff~<|~ff~|````<~ffffff~<|~ff~|llff<~f`|>f~<~~ffffffff~<fffff<<<ffffff~~fBff<<<<```l~fffff <8```flxpxlf000000008T~jjjjjl~fffff<~fff~<l~fff~l````6~fff~6l~f````<0 <8000xx000<fffff~6ffff<<ffbjj~4ff<<~~ 0~~pppxxp2~L$$BB~<~f````f~<0fffffff~6 0<~f~`~<X~46~|ln~|lnn2|X~~<~fff~<~~<~ff~~ff~<<~fffff$ff>~`86ff~<<~jjjjj~<0<~jjjjj~<>p`~~`p><~ffffffff~~~~~~~~~~`0  0`~~ 0``0 ~~p~~>|@>|@$$<<8P08$$$$<$$~~K [dl7u&A~$I5N&?W$Nu! t$& $.8` 7o 2e2e2e22 2}2}}}o7 `0L) "*1=E L ^ e k"u&~$ 80! $& $ ??_o/7  ?`?@|>|>;\:l6/7 ` " & $$!LhzɌɠ 0P OMIKRON.Basic Version 4.0Copyright 1992 byAutoren: T. Kemp,S. Rinke, A. Sdlerɪp8p`fv6jv`ffu;!COx0 HsH` 0 T xqv:8??0l0llllll8lplpl8llllll@@GGHHG>~ 8 0 0 0 0 8  ~DD"> "Z?xxp 9    89|q|8@'DD$DdDD: - &7D7 D $AAAAAAAAA A EEXIT   7F")2n&<w$$$$"$(&$"#$%$$($ ,5?SELECT MENU KEY:MENU ENTRY xxxxxxxxxxxxxxxxxxxxO OK CCANCEL AUDSShift CControlAAltern.'&!$H oh2Iefg^Ie*4JdS`L|H|L|H|0C`r`dЁddd` H@QH@QLNu/ _dIe*4Jd S`AL|0H>L|H>r`dЁd d  d` H@        QH@QLNuM?HanavHgSg`QRaa _Jj KaL 2f4Ha0a8/gSg` IRaRQ _JjL@Nu$N&NNuptI vjK`4CCBCK0 "]JNuHA"BAHA 4HB2 4HA<0 fLNuHppr g v <'Vd;R<.g<0< c<e"<Cd$HBHBJBfЁЂdpLNuCE`NUU|/ C $a & _C 2a  JC @a A X!L(/M-H>BB&Hx IETdaQJ:f-k:Hz6'_p///?<NNO @X-X .-X 2a2a8'n:B:,_NupRf!fS.dNua4 n>L a0+R@2+J.f BCRAHI` BC|HHFYA| ~SAaP~z2MxEaSGfCV-IRBNag$nR$-JRJNf-HN`$_ n>\|~0kZ2FG"X:<g4ft Eg4/ Ia _Bv`L HANL`/??<> Ia>< _`NuH(aL7Nua|یRfRf/=MHa(Nuff^fNu .BgT @t( g ha4a@LBn~tvaBRBUATCHMprtapzrLa,_Nu?+RWSCjvnFnHNua@B@ASBSCNuE (OapNua@BJEk(L@BdACd?+RWxGHDSW_DD.LNuH~&H nN-HB gaJ nBaaaab?aa0kakf|gffgH/(Hx!QEa _IH`&|Rf!ffnR.aNNuhaBax` x<gP`X$IN`a"H@4J|JfQBgʰ<gL<rgD<ag/.> f<Hg<Pg"nB$ g i4.~JgF<GgYgUgZg Qg< g <g<g<g| e`) g:<$g4<%g.<&g(<zb@<ae<߲<Fb0<Ad <0e$<9bJgaBgCS@aRn~`@p`0JBgSn~`aT@g) gav@g`"HadBn~`a.Bg"HRS@ab `SBk=B~`E (OaB`g.L`NupAR$nRY` pEV nR(nRff(J T`a Hz H@0HX` Xp`XpL~Nur<xe<v n .0HD n 20(OaHDHzBagnJEkhfb.L`L( f:a p0.L~`HN)LNuaJkfaHN)LNu8DeE82@gN@Nu()g$DN// ha =@~  _Nu/`  g Jf _Nu~VĞVĞaxaxSGfaxt||HMzpaL_p~`ta3 JkD3 H`,$Ig$ g`/ S$ S"JaE"_$IB`$"JaLNuHMzpa ~|p Cep M??zkaz 0az'pr~azjp2/jpJjn aLE8>t |gR`4Qz|a_a/gprtJojta,zrLazjpa|z.kfp`0."gafL_Nu??z az0azJWgpaz0`Bxa~~xHMaGGGGHp2tazhpaLz xaLWNu~|H`|~`|~aDH T=E=F=G=D/ N&_NuHMpr4aRzrLaLWNua8:<>@Apr/MH T iC E H~I88BT$""??JRB kdB2"zy|~a^=nx ,_Nu-H`JfSNu  fSNu/a  _Nu// f"_ _Nu/aa"B1 NuAHp JgJg`LNupaJ@frkgNupH`?<?NMXLNurۊۢ &O OK  0^@$:n ,2(| > "TJ.VrT.\(T\(LT xFx,f@f@p"*~hblD2F  @0$.,H*T240, nH@&p0P40 (F6Hjn>4>n"Z dB0Jl\2L0"bL^>>>ƆR" D &R\&Z&`4:2, h:tB.2 v>,FB @8(>r 0*< 4.&  <$"\2p         b B  z  Ff4 (); IntTmp operator ~ (); friend IntTmp abs(IntTmp&); friend IntTmp sqr(IntTmp&); friend IntTmp po`"D*oM(OGaDS\aNAJk.LNN4ECAN'T LOAD BASLIB35! <<,!~I`_OMIKRON.CompilerNfvN <`N-@|p-@p?NT-@-n|p? .H? .H@H?pG?NP-@\ .мANH6$N:NENP+mlh . @pJg6CNl6$ . @pNHNENP+mlhR`CNl6$N\NENP+mlhp@Ѝм @ JWHH-@ .Jg^p@Ѝм@ @ -@p-@ .м @p/ &@ .`FCNl6$ .мЮ @pNHNNENP+mlh .R-@o&_CNl/?NTA1"_! #+mlh+mlhp0.-@l+mlhrE0*AdpR@NN6$N -NOINFNfLr2._pENENP+mlhCNl/?NTA1"_! #+mlhp-@,+mlhNNp0.°lWHHJgH+mlhCNl6$N,xNT-@(+mlh .(JgL .(RrEN6$N,NENP+mlh".(SpENENP+mlhCNl/?NTA1"_! #+mlhCNlN6$N\N6$N\xNT"/CNlN6$N:N6$N:xNT"o S-@(+mlhr2.’(pENENP+mlh".(E0*AdpR@NENP+mlhCNl6$pS@HkԀ@dBCpCd6N:NfEpNA-@+mlhprENENP+mlh-n| .R? .H? .H@H?pG?NP-@\ .мANH6$N:NENP+mlh . @pJg6CNl6$ . @pNHNENP+mlhR`CNl6$N\NENP+mlh+mlhrpEN6$N\Nf6rpENENP+mlhprENENP+mlh+mlhCNl6$CNlNENP+mlhNNCNl6$N*.PRGNENP+mlhp0.Jf$NACN-@t+mlhN`p-@t+mlhrtVp0.JWAHH+mlhJgNCNl6$N.xNT+mlhJgrE0*AdpR@N6$N.PRGNf&r2.YpENENP+mlh`RN/l? Nur .PRG-Dateien knnen bearbeitet werden!NpN@ENP+mlhN+mlhCNlN6$N\N6$N\xNT"/CNlN6$N:N6$N:xNT"o S-@(+mlhr2.(pEN6$CNlNENP+mlhCNl6$N.prgNN-@x+mlhCNl6$N.tmpNN-@+mlh <@/0 70 kByte) in dieses VerzeichnisNpN@ENP+mlhNA" A"p@Ѝм @ Ё-@T$.TԼ".0pN".|$.T"A$B$$$$$$$$.|rpN .| @0H-@@ .|T @ -@P .|\ @ -@X .|м @ -@H .@Jo".@ptN A  @ t@ԍԼ B$Ԁ".XpNp-@ <@/ &@ .`<$n .Ѐ0HJlR$ .R$n".$ҁҁ$ .R-@o&_A  @ t@ԍԼ B$ԀԼ".HpNpNp-@p / &@ .`$n .Ѐ4@ .R-@o&_CNl/?N.\+mlhp0.Jg+mlhCNl6$N,xNT-@(+mlh".(SpENENP+mlh .(RrENENP+mlhCNl/?NTA1"_! #+mlhp0.+mlhJgCNl/?N.\+mlh`>/<@N Xp-@t ./ &@ .t`/.tN X .tR-@to&_ .dJg/<FN X .Jg/<AN XJ,f/<?N Xp/ n0(H" / n0(H$"pS@-@p-@4p-@8 .мrH4H´f iHP`LNp\l \r/$n .8RЀ0H"/$n .\rH4H´f iHP`LN<" .8RЁЀ0H""-@Jf($n/ $n .8Ѐ J$_0HЀ4Nq`J$n .8Ѐ0HrR€$.pS$n// $n .8Ѐ J$_0H" ҁ4`$n .8Ѐ0H$n// $n .8Ѐ J$_0H" ҁ4R8$n .8Ѐ0H-@\r/$n .8Ѐ0H"/$n .\rH4H´f iHP`LN<Ю8Ѐ0H""$n// $n .8Ѐ J$_0H" ҁ4`8$n .8Ѐ0H$n// $n .8Ѐ J$_0H" ҁ4 .8R-@8ox&_ .4Ѐ-@l .dFJg n0("Hrf n0("HrH4H´f iHP`LN<м-@ .-@ .4 S/ &@ .`0$n .м Ѐ0H$n".ҁ4 .R-@o&_l .lH@H n1@ .lH n1@/.h/</.xNP-_h/./.NX-_/.|/</.hNO .|T @ -@0 .|м @ -@`/< .|T @ //.hN|O .|\ @0H n1@ .|P @0H n1@ 0f* n0( H"t/ n0( H"Ю`Ё-@` .`H@H n1@ .`H n1@ .|м @0H n1@ .|м @0H n1@ n1| n1| n1|A" A"p@Ѝм @ Ё//.l/.NlX-_lXp4-@l/.|/.l/.hNX-_lX .|м0 @pr`g/.N-_CNl6$N.TMPNN+mlhN+Es knnen nur Programme ge'cutlib't werden,NN1die mit COMPILER 3.5 oder hher bersetzt wurden.NpN@ENP+mlhN/</?NX .R-@o&_ .xH? .xH@H?pA?N\-@\/.\NrXCNl6$N.tmpN6$H0CNl6$N.prgNL N+mlhNA1$_! %NuCE Z/!?]2 NPHz+mlhCNlN6$N\N6$N\xNT"/CNlN6$N:N6$N:xNT"o -@(+mlhx8.Ș(TCNl6$N.NTJf*CNl6$N.PRGNENP+mlh+mlhp-@p0./ &@ .`, .Ю|S @E .N+mlh .R-@o&_ .Ю|S @p/.h/</.|NP-_h/.|/</.hNO /< .|T @ //.hN|O /.|/<0/.hNO /<".|Ҽ A"$.|P B$&.|X C& .| @ ЃЂЁ//.hN|O .|м$ @ -@l/.|/.l/.hNX-_lX/.hN-_hJlf\Nl? NCNlNN: Library-Tabelle fehlt.N+mlhpN@ENP+mlhNp-@t .lS/ &@ .t`@r .tЮ| @p$.tr‚VHHJg/.tN X .tR-@to&_NurE0*AdpR@N6$pCd6N -Nf~rE0*AdpR@NNLN-@+mlh .JgL-nr2.YpENENP+mlhCNl/?NTA1"_! #+mlh+mlhNurE0*AdpR@N6$pCd6N -Nf6NjJnN6$rE0*AdpR@NxAd2xNTJfN<+mlhNjJnN6$rE0*AdpR@NxAd2xNTJfN<+mlhNjJnN6$rE0*AdpR@NxAd2xNTJfN<+mlhrE0*AdpR@NENP+mlhr2.YpENENP+mlhCNl/?NTA1"_! #+mlh+mlhNuCA#31$_! %NuCE R/!?*2 NPHz+mlhrE0*AdpR@N6$N NW/rE0*AdpR@N6$N NW"AHHJg,+mlhr2.SpENENP+mlh`|rpEN6$N NW/rpEN6$N NW"AHHJg&+mlhprENENP+mlh`Nu-_ NuCA /!HzJ lN l". p9NhNuCAL#!-_DNuCAD/!AL/!Hzp? .DH? .DH@H?p?NX-@\/.\NrXp-@LNuC AL#!NuCAL/!Hz .LJg .L?p>?NXp-@LNu/.hN :-_h/.N :-_Nu-_ NuCA /!Hz`-_Nu/.Hz F f JdfNu$n . ЀЀ Jf$n . ЀЀp$$n . ЀЀ -@$n . RЀЀ U/ &@ .`N$n/ $n .Ѐ J$_0HЀЀ Jf$n .Ѐ0H/N X .R-@o&_NuNpNhB16>NIX<FR.E  } {b G  # YYE"".459??)*p ` AP @ g); } inline void Integer::operator /= (long y) { rep = div(rep, y, rep); } inline IntTmp Integer::operator % (Integer& y) { return (mod(rep, y.r`M`AS"< .ӮӮӮ "Hd d3 d# d `# # # # Q"<p#Q`pIHxHT/<JNAO/,,Hl(Hm/<KNABNAJA:\OM-BASIC.INF OMIKRON.FPULIB 3.56 (C) 1991 ASY/SR KS.OHz?<&NNKSJ-9frBNAJXBRAOMBAER$j?$zNH2/KR m"hвPgP*aBr aL'TNuXBRAOMBAHKRJ-k.HzH /e"Hdana toQ/zL NuP*P+aB/zL Nu@J-f.`@JWk&/-l+mhlJ-*gaJ-+ga+mlh+_lFNuNuHKRPHS-Q*J-g Bbp!`~aLg -fg @H,mLNLX m 0-rh;A@Ag -Zg @H,mLNLXJ-@g B-@ -^g @H,mLNLXR-J-*fbQHL'NuHKQhPHS-Q+ -jg0"-n$8n$ҭrn"+An @H,mLNLXR-J-+fQHL'Nu f*J-Gf$- fJ-k Bbp!`jPP*a@ fB-B fPBH@ bfJ^gP@H@NuH@Nu/<a/X//< a/Xr AAf"B-B/<a/XJ@g/<a/X` Nu pNu/<a/XJ@Nu0-fS-a@R-kaFg/<a/pXaNuH@"Jf`+L Pg Vg Cg Mg `Mp`p`p/TWa.XNu&J QNuKO.Ni+IJfHz?< NA\pLQNu+_+nA~+H8C,A#AN#A##r&m +$gA0('A a .Ю///<JNAPa8A - fA!?<"NN @A"PH.C Av8gP/<NNXP+@?<"NNT @C:" C6!I AvC Ap"+H |E+J +N+xNzx(ACMRp "QAL Ap"Q- fAELp aAL!&m+|+|F#p+@Bp a-;mTp+@BpMa-p;mT;mTpA000BXBm6pNa-LPyagaRxRRm( - f: mJ(,k0BgHz?<=a,@Pk<HmHx??<?a,(SWa,"O A A!a mQa!M,HF:HDFe4Ge6SBSC<>@ADEJ@j@B@JAjABAJDjDBDJEjEBEJf2J-g,C$QmQG>amQF<anQE:anQD8@mAmH +|m;|HaaLNuH7aaLNuH7ab`LNuH?aaLNuH?aa`LNuHa^HLNuHabLNuH :(CiD4aA "BKdKd `Q"DMdMd `QL0Nu/ @a _Nua QNuap `a/p ap a Nu/ or fR/H _NuH N.SG*EfzEC R,`TRQ&HCHC܃Q>HFHFBF܇P^܆vx&mX(KJg&P(K"K(Ę&.ޅ/(/H L` "NّбXfL٭XaB(CvّQ(&ۛ&HB BgHBX66C SAf&`T6Q Ĝo.pHBJk,d6d&e` HF&&&&QHFQLNu&6]n`/-haR+_h`/-haB+_h`/-ha2+_h`|/-ha+_h`P/-ha+_h`T/-ha+_h`LHa[LNuHa`xLNuHa\LNuHa`LNu`J-,gaf`NH>| $r a>z JjDz-r6BBHB(8HB4HD0 :e^DRAJf L|NuHr0a>` "&H|/ adZ2 @J-,g8B$@a;r2-"a>6"m$R6RCKd0Kd Kd ` QLNuHr0a= "&H|/ ac2 @J-,g8B$@a;2-"a="m$R6RCKd0Kd Kd ` QLNuHa[ LNuHa_LNuHagLNuHaiLNuJ[jDJjFWD d?B@H@HA2HA02 JgDNuH8tvx`ҁRCdSCj LJgDNue萁`IP1HJHCJx@((t(1H!JHA x @f(((1hJ x @f" HAJjReNuRAieNu`?IP1HJHCJx@(((1H!JHA x @f(((1hJ x @f" (HANuJ[jDJjFWD d?B@H@0B@H@JgDNuH8tv`ҁRCdSCj LJgDNueꐁ`H:( d?a;`"D6KdKd `QQL8NuJAf$4NuH "mh_ m`da; m`e>4RBB0"HXB+H`"$4L$@gIdId `Q` RAId2Id"Id `""""Q"_NuJfJfNuJAkJCk$CgNur@BNuJCjAgNur@BNupNupNuJfJfNuJAkJCkCgNur@BgNuDENuJCj̶AgNur@BgNuDENuCa0 AOg& AAg AKg APg AVg ACg AMf=2NuA2jrVNuSAkA2g=tNuH@a AIg AVg ACg AMf=V;@LNuC`5!9A"9A.9<19<9<9<9<9<9D 9E 9F 9D9K>S-At 2XWf0r1B x@f1JJx@!PQEQB;@r2@ @9Aq6fI 00AHAABAQB@SAo+H;A -dg+m+@+@a;PaBAa+mlhBmBmBm>-g ??<>NAXJDf -bg @R-aDN.m|AZ ra: -2-a.JmfAH r#a`A6 rap0-a F# m1Pa` l? in USE "TRACE_ON" TO GET ERRORLINE m@T"m"iȐDnp" ҈$AIdWo J\`"J]dQNu// 2)a8B$YJ*j$/ 0@G$R&_ `Q$_ _2NuRAId0Id Id ` Q$_ _2Nu8DEWDDA1@Nu8DEWDDA!@Nu8DEWDDA1@Nu+@NuAQ+H$a+m m,-NuAy+H$Bm JAV,g Ad:Ha/ LNuAQ+H$+m m-,Nuaa@`|a `6^%0x;@HItBCBD:<BFa`LNuQ6BmBmNu/ H(<:6(@4fIt Z8Dd8Cd60G`QaL/? 2ax8 &_`P6BmNu&m`(K(-haֹd gD`a6$m`* f9 H`4Q&m`IXd9j ga`B" f9f$gRBR&DSAJ`7$Q+Kh+K/ ?0-S@k@G +Ifa fa*8&_Nu 2NuJmf +mlha,J-6f&m`F 2ANuJmfJ-6fJmf Jmfp?a aktPaaB3@J-6fGv6-(Kr"g&Sr,gfS 2 KARC;CJfBmNugfS R2 @t,gfS4 KB`S-a@R-aLFfH:9LgA9FBXp`.?Gp~a0?BCa6>`pCakQCf Jjp`a-7fQ8`VQ7Cj g(Cj `gCj ^gCj g Cj ~f fp`2>Wf) ga fa(` e8 g0@Cg^ Lr4`SBk7TRSBk  g ^f dr` g +gl -gV g aeG Xg Sg Mg CfUBk6f` e 0eJ :ez Ae> [e ae0 {eC~ g` gZJj?)LfH g& `g g ~gf mf ^fJk*@7`$ 0` %fPr` Uf Lf) %` Uf Lf Ag g gJmg Ag %gH 0gB Ag< g6 g0 Lg* Ug$ Mg`5SBk5fr` SBk5fr`VJAgJ-8f.J- zg.Cg*?>Cp H@E0DgRDH@Qa 0m780ahdJ-7gpDahPP8`FRCCd>RD`0H@ f,JCg$Cg4J- zf.SCpDahp ah pDah 0` Sf*JCgJ- zfSCpDag>CgSDE0Qav` Rf2 gF- z`¸Cg>Cp H@E0DgRDH@Qa>` MfCgRCpCag` KfJCf gvp`vSCpDagl`f`b m 0(?fpfagRE0>C` pagJagDQf p ag6>CpDag$Q0fpeagNu>D`agQ>C`pTJg| /a Nu L4/` SBRSBk3RSBjNu  g ^g ae Cg +g -g >f Ba,k2tXBx8+ RDDf&_Nu(kCpdQDa1t mp"-``0&j"CfPf"BQe`;Ba/>Caa;@ mp"m|Y*-NŊ`L4$Y/Jk$ < Ue <URkH@`"Q`2*$R0R@H`1"Q1!Q -p+@RPEaDaaHmHx?-?<?ak1bXfr m!m!m">?-/-?<BakJA.Hx0?-?<?ak1Xf(A+Ha m"m#H#H mA0./?-?<?ak0Xfaa4p0 mАШШ//-/<JNAO aaaXQEp0-f mDNaN m@"m"i" ҈$AIdWRe J\`"J]d]XfF PDNu @"MBBQAerPA`QL$m ZD"H` fg Pep` hDNuSBv CdCTe2 @BC`QNuJ@WFNuH @"B8Ad8D` VfCLNudxLNuxLNuH a^LNuH0a_<< Xf-2L22AIH@H` HA6B2QHAQLTUGfLNuHEGȓQ`H+|;|aIp0-LNuH+|;|aIp0-S@LNup0-Nup0-Nu -2-NuHJk4a`r$Rd0d d `HB QHBQLNu?<Ha >\LNuHpAa"_"`QBLNuZ@/?<Ha \ @Jo,` V+HVX Nu/ m p0 _Nu/ m p0( _Nu/ m p0( _Nu`@```_B`H8?<,a 4Tra(6[xa:6Kx?a:6Cx?aLNuƄ 00HCNuHBa Rk*O  +RfJk g"BAHA 02H@ 0LNuHpS@@@G Sk*ng*n +Fg +Og?<?B?<Ba kO &`H>|$r a'"`vH>|$r a'`dH>|$r"a&`RUAe6k8/ @ : _f&@@?Hm?<6a vP0-"&Nua& -h`Nu <0-NuHJg"mA@NLNup`H02a&|H6&H`HaڞLQLNuH S-a$@R-kajFgan$ra&2 LNur LNu/ra& _NuJAgH H7x&@"@aILNuH??4a%`Q24 _NuH:SDԄAe@DegAv0 CdNup a[ZQNu+|;|/aD"6-SCC`Вm`Ca a ;@a aߘP9aDaaޠ`H70aRL NuH? aOJLNuH70aUL NuH? aUxLNuNqH4aUL,H ("aUL,`FNqH0aUDL H "aU4L `BFH7aNXLNuH?aNLNuP;aQ;Nu/" $ "@ d HЄHdd2d"d `""""Q$NuH7~aNLNuH?~aNLNuH7aWnLNuH?aWLNuH4$&*aWLaE&L,NuH0$&aWha@>L Nu//YA?r a#j0 _Nu A e&(@(% %2%AYNu`&L(H,YA>ra#0 LNu]Ae(@ %2%AYNu`&//ra" _NuYAe eNu/?ra"0 _NuUAe0eNuH?aRaULNuH@ @pJAg AerSAQLNu2 (aB%%5C6$*JfJfNuJAkJCk8CgNur@BgNuDENuJCjAgNur@BgNuDENupNupNu2 aA%5C6$JfJfNuJAkJCkҲCgNur@BNuJCj¶AgNur@BNuQ;R@RARBRCRDREHF:;B;C;E+I+J+HCf$Ef$Bf$/H瘀&HD a_/C ab+KLBmBm&m0-8-a_b(C&ma_X2 (&m6$*HzJ-;fa"`a8H&m0-8-a_ L(Cab&Rm8-meRm0-me`P;aQ;NuH70J-FfaLaLL NuH70J-Ffa6aLL NuH70J-Ffa aNL NuH70J-Ffa aNL NuH4$<5*<ȯ6?B?<BaRO & kNu/ S@@@GJSgaJg(Hx  e </??<@aO `/?+ Bg??<@aO Bk&_Nu/ ?<Aa\j @fBg/ ?<aXBmNuaa;@//<@??<?atkO `aa;@/Jf&-/??<@a,kO ` Pa4QNut`t HvG` t`t H&)GINHA*HE>@"(d"Jgd"SH(ICBpHa&`L$(R*NdNeSeLNudte(*NdN$&RgS(؁*NdN`*(NdN(` *ڃN(RgRSg긃g*(RNd$/*N*S`*ڃN(Rg Sg긃g*SNd&/(N(R`SD*NdNڄ$//"SaD "R`:dh"B^h"B^Zr,.,3h.3xNu,.܆އ<3h>3xFGFNu3X3HNuH,.܆އ܄ޅ܆އAhCx<k>kFf.` >jGf.LNuDLNuDLNuH,.܄ޅ܆އAhCx<k>k(Ff.f.`>jGf .f.LNuDLNuDLNuH,.܆އ܄ޅ܆އ sh<3h"sx?3x>HG>Fd<F`Vf<HGGLNuH,.܆އ܄ޅ܆އ sh<3h"sx>3xprQD`a:gQ DLNuAa$AgfIfHg`HfQ`ag` g@ 0eB :e: Ae6 [e( ae* {e 9h;j@A f0< Nu@R@NupNuCEAAACEEEIIIAEOOUUY....AIOUNNAO........AOOOAAON/ K$UNK$_NuN,./3h'xh'xNu,.܆އ?3h7xh7xNu3HXHXNuH K,.܆އ܄ޅ܆އ<06, &L NuH K,.܄ޅ܆އ<06, &, &L NuH,.܆އ܄ޅ܆އAhCx.,?02!#͈! G! LNua/ ?<Aa~k\Nu :g \f$IQ ?fP *fPQBNuH.Jg0j f`( .gfSS.BAKBfLNuaHC$I BQa&JC$I @6Qa(JeNJfPHmv?<a\$m`&-h(pBgHm?<NakpAe4Q>O`& m`$HPrt,fLNu"Ha&Ca;@Bg?/?<BaTkO e*/܇/r?-?<?a.O kraAg"`/܀/Ҁ?-?<?aO kHaV,"JaCHzJg?<`&;@Bg?/?<BakO e&/܇/t?-?<@aO aEg`/܀/Ԁ?-?<@a^O a` Z4J(j6CC X0"@Ad2A`Qp `QNu Z4J(j6CC X0"@Ad2Ap `Q`QNur`r`HSE8DEDA4Akn4<x6<z|P~ Pd6<zF~ Pd4<@x~(fDEDEBe0Ce24H`@$xN@F'!JBBFLNu8DEWDDA!@Nu8DEWDDA00Nu"mE0("QʱdX+IJNu*.* @6fAvC$IaHmv?<a\?<7Hm?<Naj @f*`hJmfpKaDTA^ra^A"JfS-gt*\.B4 J2 AHa*A rBa -aa >O`PNu' +H^Nu+HfNu+HZNu6<@$<a+a+@rи+@n+HjNuR@RAHCD:@f&HS@8aKC8-:a(4BmL?aMRm2->GeLNuR@RARBRCRDREHF:;B;C;E+I+J+HCfEfڰBf/H瘀&HD aJ/C aM+KLBmBmBma.H&m0-8-aJ(C&m8-0-aJ|2 (&m6$*aLL,aL`HRm2-me&m0-8-aJ:L(CaM@Rm8-mexRm0-medL\J-:fX$$maM@LNu/A# _NuSe\oFpUnkp`pЉr@td0d d `H@ QH@QJAgNug" `rt 0³dNut0 ³dNuHRBRC08&IaIfaL+KL"mHaLR@RARBRCH@f:Bf4@f.;@+H&I8aIP`P`n``````&`0`<`X```F`` `.`<`J```````2`L`````@`J`T`^`h`````````$`.`B`T`l`˜`®```````0`Ø````~``Ō``Ś``Ũ``&`8`J``` ``2`<`F`P`Z`d`n`x`ǂ`nj`ǖ`Ǡ`Ǫ`Ǵ`Ǿ```n``|``Ŋ`Ǻ`Ǿ``N`P`p`Ȍ`Ȭ`ȸ`````<`>`&````*`*`4`4`Ҿ`@```:`<`>`````־`````.`j`ؐ````ٜ``````4`ے````2```x`ܐ`ܨ`````B`D`f`݊`ݬ`ݮ````` `<`T`v```<`>`n`߀`ߒ``߾````4`n````<`>`j`l`|``` `T```````IP1HJHCJx@((t(1H(JHA x @f(((1hJ x @f" HAJjReNuRAieNu`IP1HJHCJx@((t(1H"JHA x @f(((1hJ x @f" HAJjReNuRAieNu`p2<NuJAkx`IP1HJHCJx@((t(1H#JHA x @f(((1hJ x @f" HAJjReNuRAieNu`&p2<NuJg8JAk`$IP1HJHCJx@((t(1H JHA x @f(((1hJ x @f" HAJjReNuRAieNu`+|d;| p AR0QR`a -+@+|;|;|a;m;m+|f;|;|;|-;|Ra0-;@p0-4-r`ҀQ+ANu+|eBm`2AHA02AHA0NuJ-gta0A$`J-gfa"A ` J-gXaAa`NJ-gHA`pA??L`2AHAD02FAAHAE0Q<>NuJ-g0-aEA"C CR E Ch ps`JAk: A@e><@Ae|ІeNu|RANuH0$<6<Ae|ƐjNuЀSANuJAj> Ae><Ae|ІeNu|RANuH0$6 <2<@Ae|ƐjNuЀSANuJAkR A@e2><@>Ae*| G d؆eNu|ІeNuRdRDRANuH4$<6<>Ae| G deNu|jNu؄рSANuJAjX Ae2><>Ae*| G d؆eNu|ІeNuRdRDRANuH4$6* <x2<@>Ae| G deNu|jNu؄рSANuIP1HJHCJx@(((1H(JHA x @f(((1hJ x @f" (HANuIP1HJHCJx@(((1H"JHA x @f(((1hJ x @f" (HANupxrNuIP1HJHCJx@(((1H JHA x @f(((1hJ x @f" (HANuIP1HJHCJx@(((1H#JHA x @f(((1hJ x @f" (HANuDNuDNu?`JAkA?k DAA kNupNuAkDAA kDNu` @@@@@@@@ @ɿ@4ŭ+p@ixIϦ@ӓGɀA~ތCQFvuu MH;]=]Z`R yu%pxrt;BaP  g  gE0Bg +g -f>a* $gN %gD &fJa Hg8 Dg6 Bg( Og hg dg bg og$` a -fFWf"KB`aBg .f>a 0eVRm0  e_  e< *e Rd./$***6* a$*6 aa6aZJWgSW`+zJWgRW eg Eg dg DfZa*~ +g -f~a6 0e40  e  e *e d dڂa`JGjD4HԅgX[jD ?eJgݾpxrXNu6 C gD CfBC Cfv CfvBJk Bi݈Q`BeQJogJgAXNu6 Cd$*?a6Jfa`af` <x26j DC CDdaR6JWka`aJog( A@nf ef$<6<@aSW` A@4n*f ɿe f ef$<z6<@aSW`$<z6 G(e><(`J- fE Wl@J-!f:BGE|0&RFbfJgتуSFPJfQQJfJg\.<RFj"J- fFFgJ-!g F e<< 0Q|0&RFbfJgتуSFPJfQJfJf|DJ- f"J-!f Wm WlXONu Df Wet+<jDFt-JFf0TNuE$0~/RG@e~0RG@bg@SG0fTNud $<6 G(e><(`J- fE Wl.J-!f(BGE|0RFbgВSFXJfYQJgH.<RFj J- fFFgJ-!g F e| 0Q|0RFbgВSFXJfYJf<E`X0J- gpEJfpD0NuB@'d #o~ƀZz@ NrԥHvT ;B@'d IP1HJHAJx@((r(1hJ x @f" HAJjReNuRAieNu`IP1HJHAJx@(((1hJ x @f" (HANu<k.F?e"~Fo |SFNuJg <2F?e0~?Fo|SF G exNuȆNug <x2$DL??// ar*$6aL,NuH4ajHaRHL? aL,OaL,NuNqH4a*$<z6&m$B+'|B+B| ptBCBD*< , .R@a|d( _g #fB ,fDfC`SB;B"RBJCgJDg e6HEEHEEC`JDg6HE Cd CE`EptxR@ad ^fR+ 1^gJ+f`B` _f ` *f,J+g+d8T+@RDad&@RDA` -g +fF|BJ+f|J+jtatd #g *fhB++@S3@RD`P #f"@RDJ+g+eR+`(R+` +gز+f+g J+V W!R@RB1 GNut&m$R>~rpR2g .g Eg Df+J@f0RSJ<@J+gS:H@<EJAkf J+g`0S@3 Q6< +f3+> RJ -->g J+g+ J+fBE`3 RA3 RAQ|QJ+g.+ .fg Eg DfS<03RA Q+gL Eg DfS0+SB. JWgB@+%NuRC 0Q$GRCg0`Nu/v&+ր/փJ-:fփ֟փ$NuHxa(CEaE<38787,38'8'J-:f,38'8'RDmeLF-=NuQa}Y`hg_YstdffyYYmjn`_YLvMyJ|}~ya8Yn`Y}jYnYYmonjYimiYYh`h`j`hjn[`[\jTPLMmn_`ijghatYYYnjst@Jam_n`8JPQn`8@@FF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@wwwwwwwwwwwwwwwwwwwwwwwwww@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@wwwwww@@@IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIGGGGGGGGGGGGGGGGGGGGGGIIGGGGGGGGGGGGGGGGGGGGGGJJJJJJJJJJJJJIIIIJJJJJJJ@IIIIIIIIIIIIIIIIII߀߀ހހIIIIIIIIIIIAAAAAAAAAAAAAAAAAAAAAAAA@@@@@@@@@@ހހ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@66666666666666666666666666666666OOO666666666666666666666666666666@@@@@@@@@@@FFFFFFFFFFFFFFF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@€€'''''''''''''@@@@@@@JJIIIIIIIIIIIIIIIIIIIIIGGGGGGGG@@@SSSS@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQ@@EE@@@@?????????????????????????????????@@@@@@@@@@@@JJJJ@@@@''''''€€€€€€€@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IIIIIIIIIIIIIIIIIIIIIIIIIIII@@@@@@@@@@@TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@''''@@@@@@@@@@@@@@@@@UUGGGIIIIIIII@@@UUU@@@PPPQQPPPPPPP@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JJJJJJƀVVVVVVVVVVVVVWWQQQQ      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JJJJ@@@@@@XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZcccccddeeeeeeeee !!!!!!!"""""""#######$$$$$$$%%WWWWWW&&&&&&&'''''''''''''''WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW'''(((((((((((((((WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW((()))))))*******+++++++,,,,,,,----------------------------------------------------.............................................//////////////////////////////////000000000000000000000000000000000000000000000011111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222333333333333333333333333333uuuu444444444444444444444444444444444444455wwwwwwwwwwwwwwwwwwwwwwwwwvvvvvvvvvvvvvv666666666666666666666777€88JJ€€€II8888888888888888888888888888888888888888888888WWWWW888665577€QQQQQQQQQQQQ888888888888888888888888888888888888888888888888888888888888888888888888xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx999999999999999999999999999999999999999999999999::::::::::;;;;;;;;;;<<<<<<<<<<===>>>>>>>>>>>>????WWWWWWWWWWWWWWWWW@@@@@@@@@@@AAAAABBB{{{CCCCCCCCCCCCCCCCCDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFF66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGGGGƀƀƀƀƀƀƀƀƀƀƀƀƀHƀƀƀƀƀƀƀƀƀIIIIIIIIIIII                                                IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOPPPPPPPQQQRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTT~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~UUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZ[[[[\\\\]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_______________VVVVVVVVVVVVVVVVVVVV```````aaaaaaaabbbbbbbbKKffccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggghhhhhhhhhiiiiiiiiijjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnooJJooJJJJJJJooooooooooooooooppppppppqqqqqqqqqqqqqrrrrrrrrrrrrrrrsssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwxxxxxxxyyyyyyyzzzzzzz{{{{{{{||||||||||||||||||}}}}}}}}}}}}}}}}}~~~~~~~ÁÁÀĀŀŀŀŀŀŀŀŀŀŀŀŀJJJJJJƀƀƀƀƀŁƀƀƁƁƁƁƁƀƀƀƀƀƀƀƀƀŁŁŁŁŁŁŀƀƀƀƀƀƀƀƀƀƀƀƀƀƀƀƀƁȀʀʀʀʀʀʀʀʀʀʀʀʀʀʀʀʀʀʀʀˀˀˀˀˀˀˀ̀̀̀̀̀̀̀̀̀̀΀ǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǁǀӀӀȁȁȁȁȁҁҁҁҁҁҁҁҀԀԀԀԀҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁҁՀՀՀՀՀՀրրրրրր׀؀ــــــ܀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀HHHHHH@@ρρρρρρρρWWЁссс                                                                                                            ӁӁ                                           !!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""############################$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%&&&&&&&&&&&'(((((((((((((((((((((((((((((((((()))**********************bbbbbbbbbbbbbbbbbbbbbbbsssssssssssssssssssssssssssssssssssssssssssssssss@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YYttttLLMMaa}@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ggggggggggggggggggggggggggggggggggggggggggggg_____________________________________________ցցmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmׁׁׁiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh``````````````````````````````````jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn؁ځځځځځځہہہہkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkoooooooooooooooooooooooooooooooooooooooooopppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp܁܁݁݁FFFFFrrrrrrrrrrrrrrrrrrrrrrrrrqqqqqqqqqqqqqqqqqqŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁzzzzz||||@@@@@@@@@@@@@@Ł@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW΁΁΁΁SSSSSSSSSSS΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁΁ˁˁˁ΁΁΁΁΁΁́́́́΁΁΁΁΁΁΁΁΁΁ɁɁɁɁɁɁ́΁΁΁΁. */ #ifndef _MPlex_h #pragma oncea GEM APPL_INITXYWHI PATCH_BASICCTRLINTINADDROUTINTOUTPTSINPTSOUTADDRINGLOBAL MN_SELECTED WM_REDRAW WM_TOPPED WM_CLOSED WM_FULLED WM_ARROWEDWM_HSLIDWM_VSLIDWM_SIZEDWM_MOVED WM_NEWTOPAC_OPENAC_CLOSEMU_KEYBD MU_BUTTONMU_M1MU_M2MU_MESAGMU_TIMER ACCESSORY GRAF_HANDLE APPL_EXIT_SUB GRAF_HANDLEVS_NDC GRAF_MOUSE VST_HEIGHTWIND_GET FORM_DIALTEXTINTOUT0 APPL_READ APPL_WRITE APPL_FIND APPL_TPLAY APPL_TRECORD FNRESERVEDV_CLSVWKV_CLSWK WIND_DELETE WIND_UPDATEMENU_BAR RSRC_FREE APPL_EXIT EVNT_KEYBDINTOUT1INTOUT2INTOUT3INTOUT4 EVNT_BUTTON EVNT_MOUSE EVNT_MESAGT EVNT_TIMERINTOUT5INTOUT6 EVNT_MULTI EVNT_DCLICKMENU_BAR MENU_BAR_ FNWIND_CHECK MENU_ICHECK MENU_IENABLE MENU_TNORMAL MENU_TEXTDUMDUM MENU_TEXT MENU_REGISTEROBJC_ADD OBJC_DELETE OBJC_DRAW OBJC_FIND OBJC_OFFSET OBJC_ORDER OBJC_EDIT OBJC_CHANGE OBJC_CHANGEFORM_DO FORM_DIAL FORM_ALERT FORM_ERROR FORM_CENTER FORM_KEYBD FORM_BUTTONGRAF_RUBBERBOX GRAF_DRAGBOX GRAF_MOVEBOX GRAF_GROWBOXGRAF_SHRINKBOX GRAF_WATCHBOX GRAF_SLIDEBOX GRAF_MOUSE GRAF_MOUSE_ GRAF_MKSTATE SCRP_READ SCRP_WRITEPATH FSEL_INPUTLABEL FSEL_EXINPUTLVS_CLIP VSWR_MODE VSF_PERIMETER VSF_INTERIOR VSF_COLOR VST_COLOR VST_HEIGHT VST_EFFECTS VST_ALIGNMENT VQT_EXTENT V_BARV_GTEXT WIND_CREATE WIND_OPEN WIND_CLOSEWIND_GETWIND_SETWIND_SETWIND_SETWIND_SETWIND_SET WIND_FIND WIND_CALC WIND_NEWV FNRSRC_CHECK RSRC_LOAD RSRC_GADDR RSRC_SADDR RSRC_OBFIX SHEL_READ SHEL_WRITESHEL_GETSHEL_PUT SHEL_FIND SHEL_ENVRNV_PLINE V_PMARKER V_FILLAREA V_CELLARRAY V_ARC V_PIESLICEV_CIRCLE V_ELLIPSEV_ELLARCV_ELLPIEV_RBOXV_RFBOX V_JUSTIFIEDPTSOUT00PTSOUT10PTSOUT01PTSOUT11 VST_ROTATIONVS_COLORVST_FONTVSL_TYPE VSL_WIDTH VSL_COLORVSM_TYPE VSM_HEIGHT VSM_COLOR VSF_STYLEVQ_COLOR VRQ_LOCATOR VSIN_MODE VSM_LOCATOR VRQ_VALUATOR VSM_VALUATOR VRQ_CHOICE VSM_CHOICE VRQ_STRING VSM_STRINGVQL_ATTRIBUTESVQM_ATTRIBUTESVQF_ATTRIBUTESVQT_ATTRIBUTES V_OPNWKV_OPNWK FNV_OPN_CHECKV_OPNVWKV_OPNVWK FNV_OPNV_CHECKVQ_EXTND V_CONTOURFILL V_GET_PIXEL VST_POINT VST_POINTVSL_ENDS VRO_CPYFM VR_TRNFMVSC_FORM VSF_UDPATVEX_TIMV VSL_UDSTYV_RECFL VQIN_MODEVQT_NAME VQT_FONTINFO VQ_CHCELLS V_EXIT_CUR V_ENTER_CURV_CURUP V_CURDOWN V_CURRIGHT V_CURLEFT V_CURHOMEV_EEOSV_EEOL V_CURADDRESS V_CURTEXTV_RVONV_RVOFF VQ_CURADDRESS VQ_TABSTATUS V_HARDCOPYV_DSPCURV_RMCUR V_FORM_ADVV_OUTPUT_WINDOWV_CLEAR_DISP_LIST V_BIT_IMAGEVQ_SCAN V_ALPHA_TEXT VS_PALETTE VQP_FILMS VQP_STATE VSP_STATEVSP_SAVE VSP_MESSAGE VQP_ERRORV_META_EXTENTS V_WRITE_META VM_FILENAME VS_SCANLINE VS_SYSFONTPTSOUT02PTSOUT12PTSOUT03PTSOUT13 VQT_WIDTH VQ_CELLARRAY VRT_CPYFM V_SHOW_CV_SHOW_CV_HIDE_CVQ_MOUSEVEX_BUTVVEX_MOTVVEX_CURVVQ_KEY_SVS_CLIPV_CLRWKV_UPDWKVST_LOAD_FONTSVST_UNLOAD_FONTSVS_NDCNROFFSETV_OLDV_NEWUEF6 GEMLIB 3.04Release 23.10.91467 c ffH&dd& $(,048<@" D"H"L"P"T"X"\"`"d"h"l"(p")t"x"|"""" f, IF >>>-BR"X"MJCX"C":X""7"@"d>> ?  "F > >>?  " b~MHHY AOMIKRON.BASIC> >>?> >>?,46$55$"<"$8"~b~e <$8,(",46$5$"8"~b~e <$8,(",4658"]e <$8,(v8",46$$8e<$8,(46$8e<$8,(467#"- "} #"- "} " ? N""-  "<"}<"} 46-b~HHeE465e<$8,(",46$$$55555e<$8,(",",",",",46$$$$$5555e<$8,(",",",",465"8"~b~e<$8,()+2  ~2~46 $" _$" ^e<$8,(46$$$$$$$$$ $  55555555 $" $"  $" $"$" _$" ^"8"~b~e<$8,( ,<)+2  ~2~",",",",",",",46 $5$",e<$8,(",46$("8"$""e<$8,(46$"8"( ,>"e<$8,(("460$$8"( (,e<$8,(464$$8"( (,e <$8,(468$$8"( (,e!<$8,(46<$8"(""0 08" (,e"<$8,(46H@D)][2][Fehler in der GEM.LIB !!|Bitte verwenden Sie die|neue Syntax von Menu_Text| -->>][Weiter])v[2][Menu_Text (Index,Text$,Adr)|Adr: Adresse eines Buffers|mit der Lnge von Text$ an-|zulegen mit MEMORY(..)][Weiter]46L58"]$"<e#<$8,(",46P$$8e(<$8,(46T$8e)<$8,(46X$$$$$$8e*<$8,(46\$$$$85e+<$8,(",46`$855e,<$8,(",",46d$$8e-<$8,(46h$$5$$8e.<$8,($",46l$$8$"$"e/<$8,(46p$$$$$$8$"$"e/<$8,(46t$85e2<$8,(",46 x> > >>?46x$$$$$$$$$"",F "", "Fe3< $8,(46|$58"]e4<$8,(v8",46$e5<$8,(4685555e6<$8,(",",",",46$$$8555e7<$8,(",",",46$$855e8<$8,(",",46$$$$55eF<$8,(",",46$$$$$$$$55eG<$8,(",",46$$$$$$eH<$8,(46$$$$$$$$eI<$8,(46$$$$$$$$eJ<$8,(46$$$85eK<$8,(",46$$$85eL<$8,(",4655555eM<$8,(",",",",",465eM<$8,(",46  7 "J] " ~b~$"11 111%">-1  } 8"eN<$8,(46$eN<$8,(465555eO<$8,(",",",",4658"~b~eP<$8,(468"~b~eQ<$8,(465557"@@" "8"~b~8"~b~eZ<$8,("܃"܃",465557  ~}sL|#" ""@"L|#" ""F"L|#" "6"F""b~ "}1"  ?- >>" #"">      ? ?,6>>,?> >?> >? "1b~ "@@" "8"]8"~b~8"~b~e[<$8,(v8"܃"܃",4, "" ~46$$$$$5ed<$8,(,2  ~,",46$$$$ e ,N2~$"ee<$8,(46  ,O2~$"ef<$8,(46 ? ,O2  ~$"eg<$8,(46$$5$,$ Feh<$8,(",46$$5555$,$Feh<$8,(",",",",46$$,F$" $"$ei<$8,(46$$"^$"_$"$"ei<$8,(46$$$$,Fei<$8,(46 $$7$,F$"^$"_""0 0ei<$8,(46$$$$$$$,F$"ei<$8,(46($$5ej<$8,(",46$"$,F "",F "$,F "",F "ek<$8,(46,$$$$$$5555el<$8,(",",",",4607 ~}" ? f ? C2~2  ~?Bem<$8,(2 2484 ~44"D ~44"' "~44"" 4"446<58,"F8"]en<$8,(28<<v8",467"<<8,"F28eo<$8,(46@$$5(ep<$8,(46D$$8eq<$8,(46H$8er<$8,(46L557"""8"~b~8"~b~ex<$8,("܃"܃46P$$$8"]8"]ey<$8,(v8v846T5$"8"~b~ez<$8,("܃46X$"8"~b~e{<$8,(46\55"8"~b~e|<$8,(",46`57"]  ~}b~  "@  ""b ~,~ |" " 2" ||" " |=||="F |""vl "]8"8" e}<$8,(v" ~v "" p "| " !|"|" |= "46dd $0,446hd $0,446007$"$" d $0,446ld  $0,446p    0000d  $0,4460000 "d  $0,446t$$000 "0"0"0"0"0"d  $0,446x$$000 "0"0"0"0"0"d  $0,446|000 "0"0"0"d  $0,4460000 "d  $0,4460000$$ "d  $0,4460000$$ "d  $0,4460000 "d  $0,4460000 " d  $0,44600$$07 " !"$" $"d  $0,4460d  $0,44605555d  $0,4"4"4"4"446$d  $0,446$$$$d $0,446$d $0,446$d $0,4460d $0,446$d $0,446$d $0,44600"d $0,446$d $0,446$d $0,446$d $0,446$d $0,446$d $0,446$$5555d $0,4",",",",4600555d $0,4","4"446005555d $0,4"  ","4"446$55d $0,4",",46$555d $0,4" ",",46$5d $0,4",4655d $0,4" ",46$$0057"$d $0,4" /"" ", ,"" ", 46$$0057"$d $0,4" /"" ", ,"" ", 46$d  $0,446$$d! $0,4465555555d# $0,4",",",",","4"44655555d$ $0,4",",","4"44655555d% $0,4",",",",",465555555555d& $0,4",",",",",","4"4"4"446$$d' $0,446 >44 }44"D }44"' }44" 4"446 $$$$$$$$$ $ $,"Fd?  $0-,41 46  Fd $0,41 4644 }44"D }44"' }44" 4"446$$$$$$$$$ $ $,"Fd?d  $0-,41 46  F1 de $0,446 $d?f $0-,446$00$dg $0,446$dh $0,446(0055di $0,4",",46$dj $0,446,$dk $0,4460$4444dk $0,4464$$dl $0,4468 $00000000 "^ "_ " ^ " _dm $0,446<  "^ "_ " ^ " _dn $0,446@$$$$$7#"$"ہ do %$0,446Ddp $0,446H55 "^ "_dv $0,4"  ",46L$dq $0,446P0000dr $0,446T$5ds $0,4",46X$557d $0 ,4"" ", ",46\55d $0,4",",46`55 "d $0,4",",46dfE46hEe46lA46pB46tC46xD46|H46J46K46  4646p46q465 5 "Y"x465 "d $0,4",46.4600 "d $0,446 "d $0,446 "d $0,4460000 "d $0,446 "d $0,446$$00007$" " ;#"$" $"d $0,44655555 "d $0,4",",",",",467" """$" $"d $0,446$ "<d $0,44657 "["d $0},4"|", 46 "\d $0,446 "]d $0,446 "^d $0,446 "_d $0,4465 "`d $0,4",460000 "bd $0,446$  "cd $ 0,4467$" ;#"$" $" "dd $0,446$ "ed $0,446 "f$"^$"_d $0,446555555557!"$" dt $0,4"4"4"4"4"4"4"4"446$5555du $0,4","4"4"4460000  55 5"  d $0,4"  " " 46  $$$00000000 "^ "_ " ^ " _dy $0,44646$dz $0,446d{ $0,446555d| $0,4","4"446 5 "^ "_d} $0,4"  46$5 "^ "_d~ $0,4"  46(5 "^ "_d $0,4"  46,5d $0,4",4600000$"d $0,446$"d $0,4464d $0,4468d $0,446<5$"dw $0,4",46@$dx $0,4461b~46D 7"b~111 11 46HLPT7b~F"b$~"H}L}P 1T4"b~o>!1, {}JW:g_(*L`??UL?#jPZ "#J%ԋفi==VېCVOG7..)Tφ'GWw[yT`3 XOperatoren Mathematische Operatoren Prioritt der Operatoren ^Vergleichsoperatoren 7Zeiger VPointer/Adressoperatoren VZeiger auf Funktionen gVT 52 Steuerzeichen des VT 52 TOS-Fehlermeldungen fFehlermeldungen hNFehlermeldungen des Basics 1 Structure too long &2 Syntax error '63 RETURN without GOSUB (Q4 Out of DATA ,5 Illegal function call ,6 Overflow -t7 Out of memory .S?8 Undefined Statement 1S9 Subscript out of range 2o10 Duplicate definition 4W.11 Division by zero 5A12 Illegal direct 5[13 Type mismatch 6$f14 RETURN without function 715 String too long 8_16 Formula too complex 817 Can't continue 9y18 Undefined user function :MN19 No RESUME :20 RESUME without error ;*21 use EXIT <22 Missing operand =23 Line buffer overflow >qt24 REPEAT without UNTIL ?p25 UNTIL without REPEAT @WL26 FOR without NEXT @h27 NEXT without FOR A D28 IF without THEN or ENDIF ARZ29 WHILE without WEND Bl30 WEND without WHILE CH31 THEN, ELSE or ENDIF without IF or THEN Cc33 Reset D34 Bus error D]35 Adress error E-c36 Unknown opcode E37 Division by Zero F~44 Out of memory. SAVE or re-CLEAR immedeately F?45 EXIT without structure G46 Use EXIT TO in functions Hd47 Not regular matrix H49 Bad line number I50 FIELD overflow J?R52 Bad file number Jk53 File not found J<54 Bad file mode K;55 File already open L56 File not open M4y57 TOS error #XX Mu58 File already exists N$E59 File type mismatch Oj60 Bad disk PlQ61 Disk full P62 Input past end Q63 Bad record number Rp64 Bad file name SCv65 Path not found Si66 Direct statement in file T$ 67 Too many files U.68 Write error U69 Read error Vc70 Disk write protected V71 Illegal pointer Wv72 Illegal SELECT-CASE-Structur X}COLOR Z 3STYLE Z?3PATTERN Zs+WIDTH ZELINE WIDTH ZELINE PATTERN [ELSE ]%THEN ]%IF ]%IF THEN ELSE ENDIF ]%ABS `EAES aAND dRARCCOS ehkARCCOT f#ARCOTH gARCSIN h_ARCTAN j[DARSINH kARTANH lZASC mZATN nl8BACKUP oBIN$ qtBIOS s&BIT x BITBLT ~ BLOAD \BOX T~BRK BSAVE @CALL CASE CDBL 86CHAIN oCHDIR -*CHR$ XOCINT CINTL CIRCLE ZSCLEAR CLIP wCLOSE y5CLS CMD COMMON COMPILER CONT mPRINT# BPRINT @ D}PRINT USING G PROC TPUT WRAD [RBOX \READ _ [REM aiRENUM c REPEAT eRESERVED hRESTORE kRESUME mRETURN qURIGHT$ wHRMDIR y'RND yRSET {g8RUN |SAVE /SEC SECH SELECT (SEGPTR hSGN SHL SHR SIN SINH SORT QSPACE$ j3SPC 1SQR STOP =STR$  STRING$ SWAP hSYSTEM XTAB NTAN ]TANH `TEXT TEXT COLOR +HEIGHT TEXT HEIGHT ROTATION oTEXT ROTATION oTEXT STYLE YITIME$ 7TIMER TROFF {TRON 5TUNE RUNTIL [UPPER$ TUSING iUSR !VAL *VARPTR VDI VOLUME KWAIT /WEND iWHILE eWPEEK 8WPOKE GRWRITE ޚWRITE # WVBL W_CHAR W_PIXEL XBIOS x XOR INDEX <... PA... B... 8ZC... D... E... dF... sG... H... tRI... uK... =#L... aM... VN... >O... BP... `R... 8S...  `T... kU... +V... <gW...  X...  Z...  QMen  FILE  FIND !BLOCK @NMODE GO ;RUN MENU10 XNEW ^N MENU11 LOAD ... ^O }MENU13 }LOAD BLOCK ... F7 F8 MENU14 SAVE ^S MENU16 SAVE AS ... ^M C6MENU17 C6SAVE BLOCK ... F7 SF8 MENU18 PRINT ... ^P MENU1: DIRECTORY LMENU1< LDIRECT MODE ^C MENU1= QUIT ^Q MENU1? MENU20 nFIND ... ^F %MENU21 %FIND NEXT ^G 'MENU22 'FIND TOKEN ^T MENU23 FIND DEF ... !MENU24 !FIND ERROR "MENU25 "LIST ... F2 F3 #bMENU27 #bLIST TOKEN F2 SF3 %Y MENU28 %Y REPLACE ... F3 F3 (}.MENU2: (}.RENAME TOKEN )MENU2; )MENU30 *fINSERT rechte MT +MENU31 +MOVE ^V +zMENU32 +zKILL ^E ,WJMENU33 ,WJBLOCK START ^B ,MENU35 ,BLOCK END ^K .MENU36 .HIDE ^H 0AMENU37 0ALOAD BLOCK ... F7 SF8 1UMENU39 1USAVE BLOCK ... F7 F8 2rMENU3: 2rPRINT BLOCK S^P 3vMENU3< 3vMENU40 3SWITCH SCREEN SF2 4kMENU41 4kSPLIT SCREEN SF1 5&+MENU42 5&+CHANGE FONT/SIZE SF3 6kMENU43 6kPREFERENCES 8PREFERENCES ^L 8MENU45 8VDI-Treiber :]SAVE SETTINGS =MbMENU46 =MbMENU50 =LLAST MARK ^Z >MENU51 >GO TO F1 ?MENU52 ?LINE TO TOP @GMENU53 @GMENU54 A KTO MARK # AY@SET MARK # A+MENU56 A6MENU57 A6MENU58 B46MENU59 Bk6MENU5; BEMENU5< BEMENU5= C.EMENU5> CtEFIND ERROR CMENU5@ CMENU60 DVRUN ^R E6MENU61 E6SAVE & RUN ^W EbuMENU62 EbuTRON & RUN EfMENU63 EfCOMPILE FeMENU64 FeSAVE & COMPILE Y G0MENU65 G0RUN *.BAS HMENU66 HEXEC *.PRG ^X IgMENU67 IgOS-SHELL JMENU68 JACCESSORY L-MENU69 L-HELP M eMENU6: M eGEM-Befehle NriGrafikbefehle NSystembefehle PjEin-/Ausgabebefehle QfWDiskettenbefehle RStrukturbefehle S[6Variablentypen, Variablenverwaltung TStringfunktionen U]Zahlenkonvertierung, Zahlensysteme V Mathematische Funktionen VrHilfe X \ ]z ^ ^ _H _ `u ` a e e fB g7s g` h g ht3 l m1d mAppl_Init n, >=, <> AND OR EQV, IMP, NAND, NOR, XOR (niedrigste Prioritt)Beispiele:PRINT -3^2, (-3)^2, 3*1 SHL 2, (3*1) SHL 2-9 9 12 18OKPRINT -1>=2 OR 1<2, -1>=((2 OR 1)<2)-1 0OKVergleichsoperatorenOMIKRON.BASIC stellt die folgenden Vergleichs-operatoren zur Verfgung:Zeichen: Bedeutung: > grer als < kleiner als = gleich >= grer oder gleich <= kleiner oder gleich <> ungleichZeigerPointer/Adressoperatoren"&" ermittelt die Adresse einer Variablen, Funktion oder eines Feldes. Zurckgegeben wird die Adresse des Objekts (Variable, Funktion, Feld) im Speicher. Da zumindest im Interpreter nur relative Zeiger auf das jeweilige Segment (vgl. SEGPTR/VARPTR) zurckgegeben werden, knnen Sie nicht direkt auf die Objekte ber diesem Wert zugreifen, sondern mssen hierfr den Dereferenz-Operator "*" verwenden. Der Adre-Operator "&" kann insbesondere auch Zeiger auf Funktionen ermitteln und somit knnen Funktionen indirekt aufgerufen werden."*" greift auf ein Objekt zu (dereferenziert es). Direkt hinter dem Operator mu die Zeigervariable folgen. Welcher Typ gemeint ist, mu auch hier - wie bei einer normalen Variablen - noch mit einem Postfix angegeben werden. Speziell wenn es sich um einen Zeiger auf Funktionen handelt, ruft "*" die Funktion auf die die Zeigervariable zeigt auf.Beispiele: 0 Text$="Dies ist ein Beispieltext" 1 Ptr_Text=&Text$ 2 PRINT *Ptr_Text$ 'Das $-Zeichen ist wichtig!Dies ist ein Beispieltext 0 Summe=0 1 Ptr_Summe=&Summe 2 N=10 3 FOR I= 1 TO N 4 *Ptr_Sum=*Ptr_Sum+I*I 5 NEXT I 6 PRINT SummeZeiger auf FunktionenDer Adre-Operator "&" ermittelt die Adresse eines Objekts (Variable, Feld oder Funktion). Der Ausdruck: "Ptr_Str_Cmp=&FN Cmp(A$, B$)" speichert in der Variable "Ptr_Str_Cmp" einen Zeiger auf die Funktion "FN Cmp(,)" (also deren Adresse) ab. Mit diesem Zeiger kann die Funktion nun indirekt aufgerufen werden: "PRINT FN *Ptr_Str_Cmp("A","B") " Solche Funktions-Zeiger knnen ebenso wie Zeiger auf ein Feld an Prozeduren bergeben werden. Mit oberem Beispiel wre eine "Sortier-Prozedure" denkbar, die zum String-Vergleich lediglich einen Funktionszeiger bergeben bekommt. Abhngig von der Vergleichsfunktion wird nach ganz unterschiedlichen Kriterien sortiert (z.B. aufsteigend, absteigend oder gro=klein ...)Beispiel: (auch im DEMO-Ordner) Ptr=&FN Sin2#(X#) PRINT "Wertetabelle von Sinusquadrat:" Werte_Tab Ptr,0#,1#,.1# PRINT "Wertetabelle von Cosinusquadrat:" Werte_Tab &FN Cos2#(X#),0#,1#,.1# ' A$= INPUT$(1) END ' DEF FN Sin2#(X#)= SIN(X#)* SIN(X#) DEF FN Cos2#(X#)= COS(X#)* COS(X#) ' DEF PROC Werte_Tab(Ptr_To_Df_Fn,Von#,Bis#,Schritt#) LOCAL X#=Von# ' WHILE X#<=Bis# PRINT X#,FN *Ptr_To_Df_Fn#(X#)' Vorsicht: hier X#=X#+Schritt#' kann compilert keine Typprfung WEND ' mehr durchgefhrt werden RETURNWICHTIG: Wenn Sie auch den Compiler verwenden, achten Sie auf genaue bereinstimmung der Parameterlisten der ber Zeiger aufgerufenen Funtionen. Das Compilat kann zur Laufzeit keine Typanpassung vornehmen, da nicht bekannt ist auf welche Funktion der Zeiger gerade verweist. Im oberen Beispiel drfen Sie "FN *Ptr_To_Df_Fn" nur mit einem Double-Float als Parameter aufrufen (hier X#). Die normalerweise notwendige Konvertierung von integer nach double-float kann nicht automatisch erfolgen, der Integer-Parameter wird falsch bergeben.VT 52Steuerzeichen des VT 52Steuerzeichen des VT 52 - StandardsCHR$(7) Gibt einen Ton ausCHR$(8) Cursor eins nach linksCHR$(9) (TAB) Cursor zur nchsten 8-er-Spalte CHR$(10) Cursor nach unten (Zeilenvorschub) CHR$(13) Cursor an linken Rand (Carriage Return)CHR$ (27)+"X" wird im folgenden ESC X genannt. Bei den folgenden Steuerzeichenkombinationen handelt es sich um die sogenannten "ESCape-Sequenzen":ESC A bewegt den Cursor um eine Zeile nach obenESC B bewegt den Cursor um eine Zeile nach untenESC C bewegt den Cursor um eine Spalte nach rechtsESC D bewegt den Cursor um eine Spalte nach linksESC E lscht den Bildschirm und stellt den Cursor in die linke obere EckeESC H stellt den Cursor in die linke obere EckeESC I bewegt den Cursor um eine Zeile nach oben und schiebt, wenn ntig, den Bildschirm um eine Zeile nach untenESC J Rest des Bildschirms lschenESC K Rest der Zeile lschenESC L Zeile einfgenESC M Zeile herauslschenESC Y n1 n2 Cursor positionieren: n1 = CHR$(Zeile+32), n2 = CHR$(Spalte+32).ESC b n Schriftfarbe setzen: n ist CHR$(Farbe).ESC c n Hintergrundfarbe setzen: n ist CHR$(Farbe).ESC d Bildschirm bis zum Cursor lschenESC e Cursor einschaltenESC f Cursor ausschaltenESC j Cursorposition speichernESC k gespeicherte Cursorposition abrufenESC l Zeile lschenESC o Zeile bis zum Cursor lschenESC p Inversdarstellung einESC q Inversdarstellung ausESC v Automatischer berlauf ein (Cursor rckt nach 80. Spalte vor in die nchste Zeile.)ESC w Automatischer berlauf aus (Cursor bleibt an 79. Spalte stehen.)TOS-FehlermeldungenFehler-Nr.: Bedeutung:0 Alles in Ordnung, Operation ok.1 allgmeiner Fehler2 Laufwerk nicht bereit3 Befehl nicht bekannt4 Prfsummenfehler5 Nicht ausfhrbar6 Spur nicht gefunden/Daten defekt/Disk defekt7 Bootsektor nicht ok8 Sektor nicht gefunden/Daten defekt9 Kein Papier mehr10 Schreibfehler (Daten defekt)11 Lesefehler (Daten defekt)12 allgemeiner Fehler13 Disk ist schreibgeschtzt14 Disk wurde gewechselt15 Diskettenformat nicht bekannt16 Sektoren falsch geschrieben ("Verify Error")17 Keine Disk im Laufwerk18-31 32 Funktionsnummer ungltig33 (Programm-) Datei nicht gefunden34 Pfad nicht gefunden35 zuviele Dateien offen - erffnen neuer nicht mehr mglich36 Zugriff unmglich/verboten37 Dateikennziffer ("Handle") ungltig38 39 nicht genug Speicher brig40 Kein Speicherblock an dieser Adresse41-45 46 Laufwerksbezeichnung ungltig47 48 Umbenennen geht nur mit gleichem Laufwerk49 keine weitere Datei vorhanden50-57 58 Record ist geschtzt59 Passender Schutz nicht gefunden60-63 64 Bereichsfehler65 Interner GEMDOS-Fehler66 Ungltiges Programmdateiformat67 Fehler bei Mshrink/Speicherblock nicht vergrerbarFehlermeldungen Fehlermeldungen des Basics TOS-FehlermeldungenFehlermeldungen des Basics1 Structure too long2 Syntax error3 RETURN without GOSUB4 Out of DATA5 Illegal function call6 Overflow7 Out of memory8 Undefined Statement9 Subscript out of range10 Duplicate definition11 Division by zero12 Illegal direct13 Type mismatch14 RETURN without function15 String too long16 Formula too complex17 Can't continue18 Undefined user function19 No RESUME20 RESUME without error21 use EXIT22 Missing operand23 Line buffer overflow24 REPEAT without UNTIL25 UNTIL without REPEAT26 FOR without NEXT27 NEXT without FOR28 IF without THEN or ENDIF29 WHILE without WEND30 WEND without WHILE31 THEN, ELSE or ENDIF without IF or THEN33 Reset34 Bus error35 Adress error36 Unknown opcode37 Division by Zero44 Out of memory. SAVE or re-CLEAR immedeately45 EXIT without structure46 Use EXIT TO in functions47 Not regular matrix49 Bad line number50 FIELD overflow52 Bad file number53 File not found54 Bad file mode55 File already open56 File not open57 TOS error #XX58 File already exists59 File type mismatch60 Bad disk61 Disk full62 Input past end63 Bad record number64 Bad file name65 Path not found66 Direct statement in file67 Too many files68 Write error69 Read error70 Disk write protected71 Illegal pointer72 Illegal SELECT-CASE-Structur1 Structure too longMehr als 64k Programmtext befinden sich zwischen zwei Strukturwrtern (z.B. FOR...NEXT, WHILE..WEND, REPEAT..UNTIL)2 Syntax errorIrgend etwas stimmt an dem Befehl nicht, den Sie gerade eingetippt haben (z.B. Tippfehler). Dabei haben Sie jedoch nicht eine Unmglichkeitverlangt, wie z.B. eine Zahl durch null zu teilen, sondern OMIKRON.BASIC kann den Befehl an sich nicht verstehen.3 RETURN without GOSUBDas Programm ist auf den Befehl RETURN gestoen, ohne da es sich in einem mit GOSUB aufgerufenen Unterprogramm befand. Dies passiert z.B. dann, wenn Sie Ihre Unterprogrammdefinitionen hinter das Hauptprogramm geschrieben haben und Ihr Hauptprogramm nicht mit END o.. endet.Beispiel:100 GOSUB Eingabe110 PRINT "dreimal";A;"ist";3*A500-Eingabe510 INPUT"Nenne mir eine Zahl";A520 RETURNDieses Programm luft nun zuerst einmal korrekt ab, anschlieend taucht aber ein ?RETURN without GOSUB in 520 auf. Denn das Programm ist einfach in Ihr Unterprogramm "reingelaufen". Fgen Sieein:499 ENDEin anderer hufiger Fehler besteht darin, da eine Schleife nicht ordnungsgem verlassen wurde:500 FOR I=1 TO 100510 INPUT "ARTIKEL"+STR$(I)+": ";A$(I)515 IF A$(I)="" THEN GOTO 530520 NEXT I530 RETURNSchleifen bricht man korrekterweise gar nicht oder nur mit EXIT vorzeitig ab.4 Out of DATAEin READ-Befehl findet keine Daten mehr. Abhilfe: Mehr Daten eingeben, berprfung auf Daten-Ende in das Programm einbauen oder nochmal abzhlen.5 Illegal function callEine Funktion oder ein Befehl wurde auf eine Art und Weise verwendet, auf die sie nicht verwendet werden darf. Abhilfe: die Argumente berprfen.6 OverflowDer Rechenbereich von OMIKRON.BASIC geht bis 5.11E+4931 (5,11 mal 10 hoch 4931). Wenn Sie diesen Rechenbereich berschreiten (z.B. durch PRINT 2^100000), wird die ?Overflow-Fehlermeldung ausgegeben.7 Out of memoryZwei Bedeutungen:1. kein Speicherplatz mehr. Abhilfe: Variablen-Felder kleiner dimensionieren, ohne RAM-Disk booten, GEMDOS-Speicher verkleinern (CLEAR-Befehl).2. kein Platz mehr auf dem Prozessor-Stapel. Platz auf dem Prozessor-Stapel wird belegt durch:- offene Schleifen- aufgerufene Unterprogramme- aufgerufene Prozeduren oder Funktionen- bestimmte Befehle wie SORTOft tritt dieser Fehler auf, wenn man mit GOSUB in ein Unterprogramm springt und dann mit GOTO irgendwo hin springt, ohne da ein RETURN erfolgt ist, beispielweise:10 GOSUB 2020 GOTO 10Abhilfe: Programm auf oben genannten Fehler berprfen. Falls der Fehler durch zu tiefe Rekursion (Selbstaufruf von Funktionen oder Prozeduren) entstand, knnen Sie den Stapelplatz mit dem Befehl CLEAR vergrern.8 Undefined StatementDas gewnschte Sprungziel existiert nicht. Beispiele:- GOTO 100 - Zeilennummer 100 gibt's nicht- Datei_Ausgeben(3,4) - Prozedur Datei_Ausgeben existiert nicht bzw. existiert, braucht aber eine andere Anzahl von Parametern- LIUST (vertippt, sollte list heien) - Prozedur Liust existiert nicht9 Subscript out of rangeSie verwenden ein Element eines Variablen-Feldes, dessen Feldindex grer ist, als das Feld dimensioniert ist.Beispiel:10 DIM A$(100)20 I=200: PRINT A$(I)Hufig tritt dieser Fehler auch auf, wenn Sie ein Feld nicht selbst definiert haben, sondern es automatisch von OMIKRON.BASIC dimensioniertwurde. Siehe Befehl DIM.10 Duplicate definitionSie definieren z.B. eine Prozedur/Funktion zweimal. Beispiel:1000 DEF PROC A(X)1010 PRINT CHR$(27);CHR$(X):RETURN2000 DEF PROC A(X)2010 PRINT X;" zum Quadrat ist ";X^2:RETURNAbhilfe: Vernnftige Namen verwenden, dann passiert so etwas nicht (...so leicht).11 Division by zeroEs wurde versucht, durch null zu teilen.12 Illegal directDer gewnschte Befehl darf nicht im Direktmodus ausgefhrt werden.13 Type mismatchFalscher Variablentyp. Beispiele:A="23" - Einer Zahlenvariablen darf kein Text zugewiesen werdenB$=23 - Einer Textvariablen darf keine Zahl zugewiesen werdenPRINT 3+"4" - in Berechnungen nicht Zahlen und Texte mischen!Q=B(X$) - Als Feldindex sind keine Textvariablen zugelassen14 RETURN without functionEntspricht ?RETURN without GOSUB, jedoch ist das Programm hier nicht auf ein gewhnliches RETURN, sondern auf ein RETURN (wie es in mehr- zeiligen Funktionen verwendet wird, siehe DEF FN) gestoen.15 String too longDie Lnge von Zeichenketten (Strings) ist auf 32766 Zeichen begrenzt.16 Formula too complexZu komplizierte Berechnung, die den verfgbaren Stackplatz sprengt. Abhilfe: Formel vereinfachen, in mehrere Teilberechnungen aufteilen, oder mit CLEAR (siehe dort) mehr Prozessor-Stapelplatz reservieren.17 Can't continueNach Fehlermeldungen oder nachdem Programmzeilen verndert wurden, ist kein CONT mehr mglich.18 Undefined user functionDie gewnschte Funktion wurde nicht definiert.19 No RESUMEDas Programm trifft in einer mit ON ERROR GOTO aufgerufenen Fehlerbehandlungs-Routine auf den END-Befehl oder auf das Programmende. Abhilfe: RESUME einbauen oder den Fehler gezielt mit ON ERROR GOTO 0 ausgeben (siehe ON ERROR GOTO).20 RESUME without errorDas Programm triff auf RESUME, obwohl es gerade nicht in einer mit ON ERROR GOTO aufgerufenen Fehlerbehandlungs-Routine ist. Das passiert hauptschlich, indem (wie bei ?RETURN without GOSUBerklrt) das Programm einfach in die Fehler-Routine "hineinluft".21 use EXITIn manchen BASIC-Dialekten kann man eine Schleife so verlassen (Zeile 120):100 FOR I=1 TO 10110 INPUT"Name";Name$(I)120 IF Name$(I)<>"/" THEN NEXTIn OMIKRON.BASIC knnen Schleifen nur mit dem Befehl EXIT vorzeitig verlassen werden22 Missing operandEin Operand fehlt. Beispiele:1000 DATA 1,2,3, (nach Komma mu ein Wert folgen)PRINT 3+ (nach Rechenzeichen mu ein Wert folgen)23 Line buffer overflowEine Programmzeile darf bei der Eingabe hchstens 255 Zeichen, beim LISTen hchstens 512 Zeichen enthalten. Abhilfe: Zeile auftrennen in mehrere Zeilen. Der Fehler tritt auch dann gerne auf, wenn das Programm mit "PROTECT.BAS" (auf der Demodisk) geschtzt wurde oder wenn es teilweise durch Schreib- oder Lesefehler zerstrt wurde.24 REPEAT without UNTILEine Schleife wurde mit REPEAT geffnet, doch es gibt kein zugehriges UNTIL.25 UNTIL without REPEATZu einem UNTIL fehlt das zugehrige REPEAT.26 FOR without NEXTEine Schleife wurde mit FOR geffnet, doch es gibt kein zugehriges NEXT.27 NEXT without FORZu einem NEXT fehlt das zugehrige FOR.28 IF without THEN or ENDIFZwei Mglichkeiten:- Zu einem IF fehlt das THEN- Zu einem mehrzeiligen IF fehlt das ENDIF, Beispiel:100 IF Anzahl>Max_Anzahl THEN110 PRINT"Die Anzahl ist zu gro"120 PRINT"Whlen Sie eine kleinere Anzahl"130 GOTO EingabeHier fehlt 140 ENDIF, um das mehrzeilige IF abzuschlieen.29 WHILE without WENDEine Schleife wurde mit WHILE geffnet, doch es gibt kein zugehriges WEND.30 WEND without WHILEZu einem WEND fehlt das zugehrige WHILE.31 THEN, ELSE or ENDIF without IF or THENZu einem THEN, ELSE oder ENDIF fehlt das zugehrige IF bzw. zu einem ELSE oder ENDIF fehlt das zugehrige THEN.33 ResetSie haben die RESET-Taste hinten am Computer gedrckt. Ihr Programm bleibt bei RESET erhalten, jedoch wird ein CLEAR ausgefhrt, die Variablen werden also gelscht.34 Bus errorBus-Fehler in einem mit CALL oder USR aufgerufenen Maschinenprogramm.35 Adress errorAdress-Fehler in einem mit CALL oder USR aufgerufenen Maschinenprogramm.36 Unknown opcodeIn einem mit CALL oder USR aufgerufenen Maschinenprogramm kommt ein unbekannter Maschinenbefehl vor.37 Division by ZeroIn einem mit CALL oder USR aufgerufenen Maschinenprogramm kommt eine Division durch Null vor.44 Out of memory. SAVE or re-CLEAR immedeatelyDem BASIC-Editor bzw. dem OMIKRON.BASIC ist der interne Speicher ausgegangen. Wenn Sie jetzt nicht sofort Ihr Programm speichern, bzw. mittels CLEAR mehr Speicher anfordern, kann es zu einem Absturzkommen, der den Verlust Ihres Programmes mit sich bringt.45 EXIT without structureDer Befehl EXIT soll ausgefhrt werden, obwohl keine Schleife offen und kein Unterprogramm aufgerufen ist.46 Use EXIT TO in functionsMehrzeilige Funktionen knnen nicht mit einfachem EXIT verlassen werden. Verwenden Sie stattdessen EXIT TO.47 Not regular matrixDie Matrix, die Sie mit MAT INV invertieren wollten, war nicht regulr, d.h., es existiert keine Inverse dazu.49 Bad line numberSie haben vor einer Zeile keine Zeilennummer geschrieben, obwohl Sie sich im Zeilennummer-Modus befinden. Vgl. auch MODE-Men, Menpunkt PREFERENCES.50 FIELD overflowIn einer FIELD-Anweisung wurden zuviel Daten angegeben.52 Bad file numberDateien (Files) drfen nur Nummern von 1 bis 16 erhalten (siehe ).53 File not foundDie gewnschte Datei existiert nicht.54 Bad file modeWenn Sie mit OPEN "I" geffnete Dateien beschreiben oder mit OPEN "O" geffnete lesen wollen, oder wenn Sie random-access- und sequentielle Dateien verwechseln, tritt dieser Fehler auf.55 File already openEine bereits geffnete Datei soll nochmals geffnet werden. Dieser Fehler kann z.B. auftreten, wenn Sie aus Versehen versuchen, mehrere Dateien mit der gleichen Datei-Nummer zu ffnen, z.B.100 OPEN "I",1,"Adressen.DAT"110 OPEN "I",1,"Lager.DAT"56 File not openEine Datei mu geffnet werden, bevor man sie beschreiben oder aus ihr lesen kann (siehe OPEN).57 TOS error #XXDas Betriebssystem TOS meldet, da Fehler Nr. XX aufgetreten ist. Siehe TOS-Fehlermeldungen58 File already existsEine Datei gleichen Namens exisitiert bereits in dem angegebenen Verzeichnis. Bevor Sie eine neue Datei ffnen knnen, mu eine Datei gleichen Namens gelscht werden. Der Fehler kann auch auftreten, wenn eine Datei schreibgeschtzt ist und neu erffnet werden soll. (Zum Bsp. bei SAVE)59 File type mismatchEine Datei hatte den falschen Typ. Dieser Fehler kann auftreten, wenn Sie ein Programm mittels LOAD einladen wollen, das kein BASIC-Programm ist, bzw. ein Programm mittels EXEC starten wollen, das nicht ausfhrbar ist.60 Bad diskDie eingelegte Diskette ist defekt. Verwenden Sie eine andere.61 Disk fullAuf der Diskette oder Harddisk ist nicht mehr gengend Speicherplatz vorhanden, um das Programm oder die Datei darauf abzuspeichern. Den auf einer Diskette noch verfgbaren Speicherplatz erhalten Sie mit FRE.62 Input past endEs wurde versucht, ber das Ende einer (sequentiellen) Datei, also ber das EOF-Zeichen hinaus, Daten zu lesen. Abhilfe: Abfrage mit derEOF-Funktion vor der Eingabe.63 Bad record numberEs wurde versucht, in einer random-access-Datei auf einen Record (Datensatznummer) zuzugreifen, der die Kapazitt des GEMDOS sprengen wrde (Siehe OPEN und Diskettenbefehle).64 Bad file nameIn Datei-Namen sind einige Zeichen nicht zugelassen: Doppelpunkt, Komma, Semikolon, Punkt etc.65 Path not foundEin Verzeichnis oder eine Datei wurde nicht gefunden. Vgl. auch "File not found"66 Direct statement in fileEin Programm, das im ASCII-Format vorliegt und mit LOAD eingeladen werden soll, enthlt Zeile(n), die keine Zeilennummer enthalten.Abhilfe:Im Editor mit [Shift]-[F8] das Programm einladen, fehlende Zeilennumern einfgen.67 Too many filesIm Inhaltsverzeichnis einer Diskette ist nur Platz fr eine begrenzte Anzahl Eintrge. Abhilfe: Programme/Dateien mit dem KILL-Befehl lschen.68 Write errorBeim Schreiben von Daten auf Diskette/Festplatte ist ein Fehler aufgetreten. Vermutlich ist die Diskette defekt.69 Read errorBeim Lesen der Daten von Diskette/Festplatte ist ein Fehler aufgetreten. Vermutlich ist die Diskette defekt.70 Disk write protectedDie Diskette ist schreibgeschtzt und Sie wollten etwas darauf abspeichern. Abhilfe: Schreibschutz entfernen.71 Illegal pointerSie versuchen mit dem Operator "*" auf einen falschen oder nicht-existenten Pointer zuzugreifen. Vermutlich haben Sie die falsche Zeigervariable verwendet, oder diese noch nicht mittels &-Operatoreingerichtet, z.B.CLEARA=*T? Illegal pointer72 Illegal SELECT-CASE-StructurSie haben eine fehlerhafte SELECT-CASE-Struktur in Ihrem Programm. Wahrscheinlich fehlt das END_SELECT bzw. das DEFAULT oder Sie haben eine falsche Strukturtiefe. Abhilfe: Bei jeder neuen Struktur etwas einrcken; dadurch wird das Programm bersichtlicher und Sie sehen sofort, wo eine Struktur noch nicht korrekt geschlossen wurde.COLORTEXT COLOR, LINE COLOR, FILL COLORSTYLETEXT STYLE, LINE STYLE, FILL STYLEPATTERNLINE PATTERN, FILL PATTERNWIDTHLINE WIDTHTyp: BefehlSyntax:LINE WIDTH = LINE WIDTH = Erklrung:Stellt die Linienstrke in Pixeln ein fr alle DRAW-Befehle und fr alle umrahmten gefllten Flchen ein (siehe PBOX, BOX usw.). Die aktuelle VDI-Version untersttzt nur ungerade Linienstrken.LINE PATTERNTyp: BefehlSyntax:LINE PATTERN = LINE PATTERN = Erklrung:Das Linienmuster ergibt, als 16 Bit Integer-Wert aufgefat, das Linienmuster. Jedes gesetzte Bit wird gezeichnet, jedes gelschte bleibt frei.Beispiel:LINE PATTERN = $FFFF ' durchgezogenLINE PATTERN = $FF00 ' gestrichelt 50 %LINE PATTERN = $F000 ' gestrichelt 25 %ELSETHENIFIF THEN ELSE ENDIFTyp: BefehlSyntax:IF  THEN [ELSE ] [ENDIF]IF THEN ] [ENDIF]Erklrung:Die IF-THEN-Anweisung erlaubt die bedingte Ausfhrung von Befehlen. Die von der THEN-Anweisung abhngigen Befehle werden nur ausgefhrt, wenn der logische Ausdruck wahr (ungleich 0) ist. Die von der ELSE-Anweisung abhngigen Befehle entsprechend bei falschem logischen Ausdruck (gleich 0).Wenn alle abhngigen Befehle in eine Zeile passen, kann das ENDIF entfallen. Ansonsten beschliet das ENDIF den Block der abhngigen Anweisungen. Stehen sehr viele Alternativen zur Auswahle so ist in vielen Fllen die Verwendung von SELECT CASE vorteilhafter.Beispiel:ABSTyp: FunktionSyntax:ABS()Erklrung:ABS berechnet den Absolutbetrag des numerischen Ausdrucks. Negative Werte erhalten so ein positives Vorzeichen, whrend positive Werte unverndert bleiben.Beispiel:0 A=-5.21 PRINT A2 PRINT ABS(A)3 PRINT ABS(A+3.2)+3.2-5.2 5.2 5.2AESTyp: BefehlSyntax:AES(, , , , , )AES(, , , , , )Erklrung:Mit dem Befehl AES rufen Sie GEM AES (Graphics Environment Manager - Application Environment Services) auf. Die einzelnen Funktionen des GEM AES schlagen Sie bitte im Anhang nach.Fr VDI- und AES-Befehle benutzen Sie einfacher die GEM- oder EasyGEM-Library.ANDTyp: OperatorSyntax: AND Erklrung:Die beiden Ausdrcke werden bitweise logisch und verknpft.Beispiel:0 0 PRINT BIN$(%1010 AND %1100)1 IF 1<2 AND 2<3 THEN PRINT "Hab' ich's doch gewut!"2 IF 1<4 AND 2=4 THEN PRINT "Das ist aber falsch!!!" 1000Hab' ich's doch gewut!ARCCOSTyp: FunktionSyntax:ARCCOS()Erklrung:Berechnet den arcus cosinus des numerischen Ausdrucks.Der numerische Ausdruck mu einen Wert zwischen -1 und 1 sein. Das Ergebnis ist abhngig vom eingestellten Winkelmodus (siehe DEG, RAD).Beispiel:0 PRINT ARCCOS(-.5)1 DEG2 PRINT ARCCOS(1) 2.0943951 84.26083ARCCOTTyp: FunktionSyntax:ARCCOT()Erklrung:Berechnet den arcus cotangens des numerischen Ausdrucks. Das Ergebnis ist abhngig vom eingestellten Winkelmodus (siehe DEG, RAD).Beispiel:0 PRINT ARCCOT(5)1 DEG2 PRINT ARCCOT(1) .19739556 45ARCOTHTyp: FunktionSyntax:ARCOTH()Erklrung:Berechnet den area cotangens hyperbolicus des numerischen Ausdrucks. Der numerische Wert mu auerhalb des Bereichs von -1 bis 1 liegen.Beispiel:0 PRINT ARCOTH(5) .20273255ARCSINTyp: FunktionSyntax:ARCSIN()Erklrung:Berechnet den arcus sinus des numerischen Ausdrucks. Der numerische Ausdruck mu ein Wert zwischen -1 und 1 sein. Das Ergebnis ist abhngig vom eingestellten Winkelmodus (siehe DEG, RAD).Beispiel:0 PRINT ARCSIN(1)1 DEG2 PRINT ARCSIN(.5) 1.5707963 30ARCTANTyp: FunktionSyntax:ARCTAN()Erklrung:Berechnet den arcus tangens des numerischen Ausdrucks. ARCTAN ist identisch mit ATN. Das Ergebnis ist abhngig vom eingestellten Winkelmodus (siehe DEG, RAD).Beispiel:0 PRINT ARCTAN(-1)1 DEG2 PRINT ARCTAN(1)-.78539816 45ARSINHTyp: FunktionSyntax:ARSINH()Erklrung:Berechnet den area sinus hyperbolicus des numerischen Ausdrucks.Beispiel:0 PRINT ARSINH(-1)-.88137359ARTANHTyp: FunktionSyntax:ARTANH()Erklrung:Berechnet den area tangens hyperbolicus des numerischen Ausdrucks. Der numerische Ausdruck mu ein Wert innerhalb von -1 und 1 sein.Beispiel:0 PRINT ARTANH(.5)-.54930614ASCTyp: FunktionSyntax:ASC()Erklrung:Ermittelt den ASCII-Wert des ersten Zeichens vom Stringausdruck. ASC ist die Umkehrfunktion von CHR$.Siehe auch ASCII-Tabelle.Beispiel:0 PRINT ASC("abc")1 PRINT ASC( CHR$(24)) 97 24ATNTyp: FunktionSyntax:ATN()Erklrung:Berechnet den arcus tangens des numerischen Ausdrucks. ATN ist identisch mit ARCTAN. Das Ergebnis ist abhngig vom eingestellten Winkelmodus (siehe DEG, RAD).Beispiel:0 PRINT ATN(-1)1 DEG2 PRINT ATN(1)-.78539816 45BACKUPTyp: BefehlSyntax:BACKUP BACKUP Erklrung:Erstellt von der Datei(en) eine Sicherheitskopie. Die Sicherheitskopie erhlt die Extension ".BAK" und wird im selben Ordner abgelegt. Jokerzeichen im Dateinamen sind zugelassen.Kann die Datei(en) nicht gefunden werden, wird der Befehl abgebrochen und ohne Fehlermeldung im Programmablauf fortgefahren.Beispiel:BACKUP "a:\*.BAS"BACKUP "version?.*"BIN$Typ: FunktionSyntax:BIN$()Erklrung:Wandelt den numerischen Ausdruck in eine Zeichenkette um, die den gerundeten Wert des Ausdrucks als Binrzahl darstellt. Der num. Ausdruck wird immer zuvor nach Integer-Langwort-Format gewandelt. Ein betragsmig zu groer Wert erzeugt ein "Overflow".Beispiel:0 PRINT BIN$(4)1 PRINT BIN$(24)2 PRINT BIN$(1E+10) 100 11000? Overflow in 2BIOSTyp: BefehlSyntax:BIOS[(][],[[,[L ]]][)]BIOS[(][], [[,[L ]]][)]Erklrung:Die in Funktionsnummer genannte BIOS-Funktion wird aufgerufen und Parameterliste bergeben. Der Rckgabe-Wert der BIOS-Funktion wird der Rckgabe-Variable zugewiesen. Wenn vor den Parametern ein "L " gestellt ist, so wird der Parameter als LONG bergeben, ansonsten immer als WORD. 0: Getmpb(->buffer.l) ermittelt Zeiger auf MDB 1: Bconstat(device.w) ergibt Status (=0 nix) 2: Bconin(device.w) Zeicheneingabe 3: Bconout(device.w,char.w) Zeichenausgabe 4: Rwabs(rwflag.w,->buffer.l,anzahl.l, recnr.l,drive.w) Block-Lesen/Schreiben 5: Setexec(vec_nr.w,new_vector.l) Vektor setzen 6: Tickcal Timerzeit in ms 7: Getbpb(drive.w) Bpb des Laufwerks ermittleln 8: Bcostat(device.w) Ausgabebereitschaft 9: Mediach(drive.w) Mediumswechsel feststellen A: Drvmap Angeschlossene Laufwerke B: Kbshift(stat.w) Zustand der ShiftkeysBeispiel:0-Schleife1 BIOS(Shift,11,-1)2 PRINT @(0,0);Shift3 GOTO Schleife 4, wenn CONTROL gedrcktBITTyp: FunktionSyntax:BIT(,)BIT(,)Erklrung:Der gerundete Wert wird in eine 32 stellige Binrzahl gewandelt. Ein betragsmig zu groer Wert erzeugt ein "Overflow".Die Funktion ergibt -1, wenn das von rechts gezhlte Bit der Binrarzahl gesetzt ist, andernfalls 0.Das niederwertigste Bit hat die Bitnummer 0.Das hchstwertigste Bit hat die Bitnummer 31 und stellt das Vorzeichen dar. Ein falsche Bitnummer erzeugt ein "Illegal function call".Beispiel:0 PRINT BIT(0,1)1 PRINT BIT(2,1)2 PRINT BIT(31,-1)3 PRINT BIT(12,-1)-1 0-1-1 oderBITTyp: BefehlSyntax:BIT ,{|()}=BIT ,{|()}=Erklrung:Weist, wenn Bitwert null ist, einem einzelnen Bit den Wert null zu, andernfalls den Wert eins.Das Bit wird durch Bitnummer angegeben. Das niederwertigste Bit hat die Bitnummer null.Es knnen entweder Bits von Integer-Variablen oder vom Speicher gendert werden.WICHTIG: Bei nderungen von Speicher erfolgt der Zugriff immer byteweise d.h. die hchste Bitnummer ist 7. Beim Modifizieren von Integer-Variablen hingegen sind Bitnummer bis 31 erlaubt. Eine falsche Bitnummer fhrt zu einem "Illegal function call".Beispiel:0 Adresse=MEMORY(1)1 PRINT PEEK(Adresse)2 BIT (2,(Adresse))=13 PRINT PEEK(Adresse)4 A=195 BIT (2,A)=06 PRINT A 0 4 17BITBLTTyp: BefehlSyntax:BITBLT [,,,] TO [,,,][;]BITBLT  TO ,COLOR 1: BITBLT ,,, TO ,,,[;]2:BITBLT ,,,TO [;]3:BITBLT  TO ,,,[;]4:BITBLT TO ,COLOR Erklrung:Kopiert einen rechteckigen Bildschirmausschnitt. Als Quelle bzw. Ziel dienen je nach Syntax:1: von Bildschirm nach Bildschirm2: von Bildschirm nach Speicher3: von Speicher nach Bildschirm4: von Speicher nach SpeicherSyntax 4 ermglicht die Umwandlung von s/w-Vorlagen in Farbblits, die dann direkt in den Bildschirm geblittet werden knnen. Als Farbe ist je nach Auflsung ein Wert zwischen 0 und 1, 0 und 3, bzw. 0 und 15 anzugeben.Bei Syntax 1 bis 3 ist zustzlich die Angabe eines Modus mglich, der eine punktweise Verknpfung der Bildinformationen von Quelle und Ziel ermglicht:MODUS 0: immer 0MODUS 1: Quelle AND ZielMODUS 2: Quelle And (NOT Ziel)MODUS 3: QuelleMODUS 4: (NOT Quelle) AND ZielMODUS 5: ZielMODUS 6: Quelle XOR ZielMODUS 7: Quelle OR ZielMODUS 8: NOT(Quelle OR Ziel)MODUS 9: NOT(Quelle XOR Ziel)MODUS 10: NOT ZielMODUS 11: Quelle OR (NOT Ziel)MODUS 12: NOT QuelleMODUS 13: (NOT Quelle) OR ZielMODUS 14: NOT(Quelle AND Ziel)MODUS 15: immer 1Wird die Angabe Modus weggelassen, so wird nach Modus 3 verfahren.Bit-Blits in den Bildschirm bercksichtigen ein gesetztes Grafikfenster (siehe CLIP).Bei Bit-Blits innerhalb des Bildschirms gelten die jeweils kleineren Hhen und Breiten.Der Speicherplatzbedarf fr einen Bit-Blit in den Speicher lt sich folgendermaen berechnen:6+(Breite+15) SHR 4 * Hhe * 1 SHL (3-Auflsung).Auflsung=0 ist 16-Farb-Modus, Auflsung=1 4-Farb-Modus und Auflsung=2 ist s/w-Modus. Die sechs Wort Vorspann setzen sich so zusammen:1. Anzahl Bitplanes * 2; entspricht 1 SHL (3-Auflsung)2. Breite in Pixel3. Hhe in PixelBeispiel:0 Bildspeicher= MEMORY(6+65 SHR 4*65*8)1 PELLIPSE 50,50,30,202 BITBLT 25,20,50,50 TO Bildspeicher3 WAIT .54 CLS5 BITBLT Bildspeicher TO 20,20,50,506 WAIT .57 BITBLT 20,20,50,50 TO 20,30,50,50,68 WAIT .59 PCIRCLE 45,55,8BLOADTyp: BefehlSyntax:BLOAD [,]BLOAD [,]Erklrung:Die genannte Datei wird ab der Startadresse in den Speicher geladen. Fehlt dieser Ausdruck, so wird in den Bildschirm (logische Bildschirmadresse) geladen.Beispiel:Speicher= MEMORY(100)BLOAD "BEISPIEL.DAT",SpeicherBOXTyp: BefehlSyntax:BOX ,{ TO ,|,,}BOX ,{ TO ,|,}Erklrung:Zeichnet ein nicht geflltes Rechteck auf den Bildschirm. Dabei sind entweder zwei gegenberliegende Ecken anzugeben, oder eine Ecke, Breite und Hhe des Rechtecks.Farbe, Linienstil und -breite knnen ber LINE COLOR, LINE STYLE bzw. LINE WIDTH bestimmt werden.Ist mittels CLIP ein Bildfenster definiert, wird auerhalb dieses Bereichs nicht gezeichnet.Siehe auch RBOX, PBOX, PRBOX.Beispiel:0 BOX 20,30,70,40BRKTyp: BefehlSyntax:BRKErklrung:Dieser Befehl dient ausschlielich zur Fehlersuche in compilierten Programmen. Er lst im Compilat eine Ausnahmebehandlung "Illegal Instruction" aus. Damit ist es mglich ein Programm an einer bestimmten Stelle zu unterbrechen, um so die Fehlersuche mit einem Debugger zu beginnen.Im Interpreter fhrt dieser Befehl zu einem "Internal Error". Dies ist jedoch normal und hat keine Bedeutung.BSAVETyp: BefehlSyntax:BSAVE [,,]BSAVE [,,]Erklrung:Speichert den ab Startadresse liegenden Speicherbereich unter Dateiname ab. Fehlen Adresse und Lnge wird der Bildschirm abgespeichert.Beispiel:BSAVE "BILDSCH.DAT"CALLTyp: BefehlSyntax:CALL [(][L ]][[,[L ]]])]Erklrung:Ein Maschienensprache-Unterprogramm wird aufgerufen. Die Startadresse ist durch die numerische Variable gegeben. Die folgenden Ausdrcke werden in umgekehrter Reihenfolge auf dem Stack bergeben d.h. der erste Parameter befindet sich zu unterst auf dem Stack also bei 4(SP). Den Ausdrcken darf ein "L " voran gestellt werden, um den betreffenden Parameter als LONG zu bergeben. Ansonsten wird immer ein WORD bergeben.Das Maschinenprogramm mu mit RTS enden und wird im Supervisor-Modus aufgerufen. Es darf alle Register verndern auer USP und SSP. Im Register A0 erhlt es die Adresse des Segmentpointers bergeben. Es ist damit z.B. mglich mit Hilfe bergebener Zeiger auf eine bestimmte Variable zuzugreifen. Das Maschinenprogramm kann im Register D0 einen Wert zurckgeben. Dieser befindet sich nach der Ausfhrung des Maschinenprogramm in RESERVED(0). Fehler, wie "Adress Error" oder "Bus Error", die Ihr Maschinenprogramm verursacht, werden in der Zeile des CALL-Befehls gemeldet. Beispiel:0 Test$ = "PNJLSPO/TPGUXBSF"1 CALL Decode ( L &Test$, 1 ) ' Zeiger auf Test$ und "1" bergeben2 PRINT Test$OMIKRON.SOFTWAREDas Maschinenprogramm: move.l 4(SP),A1 ; Zeiger auf String holen move.w 8(SP),D1 ; Parameter (die "1") holen move.l (A1),A2 ; Zeiger ins Stringsegment bilden adda.l 28(A0),A2 move.w 4(A1),D0 ; Lnge des Strings subq.w #1,D0 ; wg. DBRAloop: move.b (A2),D2 ; ein Zeichen des Strings holen sub.b D1,D2 ; Zeichen modifizieren move.b D2,(A2)+ ; und Zeichen zurckschreiben dbra D0,loop ; fr alle Zeichen des Strings rtsCASETyp: BefehlSyntax:CASE [TO ][[, [TO ]]]Erklrung:CASE leitet innerhalb einer SELECT-CASE Anweisung eine Teilzweig ein. Dieser Programmzweig wird dann ausgefhrt, wenn eine der genannten Mglichkeit auf den bei SELECT genannten Ausdruck zutrifft. Mehrere Mglichkeiten werden einfach mit Kommata abgetrennt aufgezhlt. Auf Bereiche sind mit TO mglich.CDBLTyp: FunktionSyntax:CDBL()Erklrung:Wandelt einen beliebigen numerischen Ausdruck in doppelt-genaues-Fliekomma-Format um.Siehe auch CINT, CINTL, CSNG.Beispiel:0 A=11 B=32 PRINT CDBL(A/B)3 PRINT CDBL(A)/CDBL(B) .33333333337213844 .33333333333333333CHAINTyp: BefehlSyntax:CHAIN [MERGE ][,]CHAIN [MERGE ][,]Erklrung:Ldt die Datei als Basic-Programm und startet es. Durch MERGE wird das Programm zum Aktuellen hinzugeladen. Bei gleichen Zeilennummern wird die alte Zeile gelscht (siehe auch RENUM).Das zu ladende Programm mu als ASCII-Datei vorliegen (als Block gesichert oder SAVE ,A).Anders als beim Befehl RUN knnen Variablenwerte bergeben werden (siehe COMMON).Zustzlich kann eine Startmarke angegeben werden, an der das aufgerufene Programm starten soll, fehlt diese Angabe, so wird am Programmanfang gestartet.Beispiel:CHAIN "BEISPIEL.BAS",23CHDIRTyp: BefehlSyntax:CHDIR Erklrung:Legt den Standardpfad auf den in Stringausdruck genannten Pfad fest. Es ist mglich, einen kompletten Pfad (":[[\]]") zu benennen, oder durch folgende Stringausdrcke innerhalb des Pfades zu wandern:"..": Ordner schlieen, zurck auf nchsthhere Ebene"\" : zurck ins Hauptverzeichnis"[\][[\]]": Ordner (und Unterordner) ffnen, mit fhrendem \ vom Hauptverzeichnis ausBeispiel:CHDIR "A:\.BAS"CHDIR "\"CHDIR "B:\BASIC\PROGR"CHR$Typ: FunktionSyntax:CHR$()Erklrung:Erzeugt einen ein Zeichen langen String entsprechend der ASCII-Tabelle. CHR$ ist die Umkehrfunktion zu ASC.Siehe auch ASCII-Tabelle.Beispiel:0 PRINT CHR$(7)1 PRINT CHR$(80); CHR$(76)2 A$= CHR$(189)+" by OMIKRON."3 PRINT A$Bb by OMIKRON.CINTTyp: FunktionSyntax:CINT()Erklrung:Wandelt einen beliebigen numerischen Wert in Integer-Wort-Format (ganze Zahlen von -32768 bis +32767) um. Der Definitionsbereich der Funktion umfat natrlich gerade den Integer-Wort-Bereich. Andere Werte fhren zu "OVERFLOW".Siehe auch CDBL, CINTL, CSNG.Beispiel:0 A=11 B=32 PRINT CINT(A/B)3 PRINT CINT(A)/CINT(B)4 PRINT CINT(40000) 0 .33333333? Overflow in 4CINTLTyp: FunktionSyntax:CINTL()Erklrung:Wandelt einen beliebigen numerischen Wert in Integer-Langwort-Format (ganze Zahlen von -214783658 bis +214783657) um. Der Definitionsbereich der Funktion umfat den Integer-Langwort-Bereich. Andere Werte fhren zu "OVERFLOW".Siehe auch CDBL, CINT, CSNG.Beispiel:0 A=11 B=32 PRINT CINTL(A/B)3 PRINT CINTL(A)/CINTL(B)4 PRINT CINTL(1E+10) 0 .33333333? Overflow in 4CIRCLETyp: BefehlSyntax:CIRCLE ,,[,,]CIRCLE ,,[,,]Erklrung:Zeichnet einen nicht gefllten Kreis auf den Bildschirm. und geben den Kreismittelpunkt an. Optional knnen Start- und Endwinkel in Zehntel-Graden angegeben werden. Hierbei ist Winkel=0 rechts vom Mittelpunkt, Winkel=900 oberhalb des Mittelpunkts etc.Farbe, Linienstil und -breite knnen ber LINE COLOR, LINE STYLE bzw. LINE WIDTH bestimmt werden.Ist mittels CLIP ein Bildfenster definiert, wird auerhalb dieses Bereichs nicht gezeichnet.Siehe auch ELLIPSE, PCIRCLE, PELLIPSE.Beispiel:0 CIRCLE 70,50,401 CIRCLE 70,50,30,0,18002 CIRCLE 60,50,20,1800,32003 CIRCLE 70,50,25,500,6004 CIRCLE 70,50,25,1200,1300CLEAR oder MAT CLEARTyp: BefehlSyntax:CLEAR [][,]CLEAR [][,]Erklrung:Lscht alle Variableninhalte und Dimensionierungen. Offene Dateien werden geschlossen, ON ERROR GOTO- und ON TIMER GOSUB-Aufrufe werden abgeschaltet. COMMON-Anweisung werden gelscht. Optional knnen die Gre des GEMDOS-Speichers und/oder des Prozessor-Stapels bestimmt werden.Standardmig sind fr diese 65536, bzw. 4096 Bytes belegt.Der GEMDOS-Speicher wird zum Reservieren vom Speicher mit MEMORY und von bestimmten Betriebssystemfunktionen bentigt. Wenn Sie also selbst eine grere Menge an GEMDOS-Speicher anfordern, so mssen Sie ihm entsprechend gro einstellen.Stapelspeicherplatz wird vom Basicprogramm beim Aufrufen von Unterprogrammen, von lokalen Variablen und zum Sortieren bentigt. Programme mit rekursiven Unterprogrammaufrufen bentigen deshalb unter Umstnden mehr Stapelplatz.Zu beachten ist: Der Verbrauch an Stapelplatz ist im Interpreter und im Compilaten unterschiedlich und mu gegebenfalls getrennt ermittel werden.Beispiel:CLEAR 32768,16384CLEAR ,4096CLIPTyp: BefehlSyntax:CLIP [,{ TO ,|,,}]CLIP [,{ TO ,|,Breite,Hhe}]Erklrung:Definiert ein Grafik-Fenster, das den Zeichenbereich fr folgende Zeichenbefehle begrenzt: BITBLT, BOX, CIRCLE, DRAW, ELLIPSE, FILL, PBOX, PCIRCLE, PELLIPSE, POLYGON, PPOLYGON, PRBOX, RBOX, TEXT. Auerhalb dieses Fenster wird die Zeichenoperation zwar ausgefhrt, der Bildschirm wird dabei jedoch nicht verndert.Das Fenster kann entweder durch Angabe zweier gegenberliegender Eckpunkte oder eines Eckpunktes mit Hhe und Breite zu definiert werden.Ohne Parameterangaben wird das Grafik-Fenster ausgeschaltet (dies ist auch die Standard-Einstellung). Die Zeichenbefehle werden nun in keiner Weise begrenzt. Es ist deshalb mglich, da z.B. durch falsch berechnete Koordinaten, ungewollt wichtiger Speicher berschrieben wird (Abstrze und Datenverluste mglich). Sie sollten daher immer wenn Sie mit Grafikbefehlen arbeiten das Grafik-Fenster auf den gesamten Bildschirm einstellen: "CLIP 0,0,W_PIXEL,H_PIXEL".Beispiel:0 CLIP 30,30,20,201 PCIRCLE 30,30,202 CLIP 60,60 TO 150,1003 PRBOX 65,65,200,200CLOSETyp: BefehlSyntax:CLOSE [[[]]]CLOSE [[[]]]Erklrung:Schliet den oder die mit der Dateinummer assozierte(n) Datei(en). Ohne Angabe von Parametern werden alle Dateien geschlossen.Siehe auch OPEN.Beispiel:CLOSECLOSE 1,7,OmCLSTyp: BefehlSyntax:CLSErklrung:Der gesamte Bildschirm wird gelscht und der Cursor springt in die linke obere Ecke des Text-Fensters.Beispiel:0 PELLIPSE 50,50,40,201 WAIT .52 CLSCMDTyp: FunktionSyntax:CMD CMD Erklrung:Lenkt die Ausgaben von PRINT, LIST etc. auf eine Datei um. Die der Dateinummer entsprechende Datei mu zuvor mittels OPEN geffnet worden sein. Durch die Mglichkeit Dateien auch auf den Drucker zu ffnen (siehe OPEN), kann die Ausgabe auch auf den Drucker oder die serielle Schnittstelle umgelenkt werden.Ist der numerische Ausdruck null, so kommen die Ausgaben wieder zum Bildschirm.Beispiel:OPEN "P",3: CMD 3CMD 0COMMONTyp: BefehlSyntax:COMMON [[Variable]]Erklrung:Gibt die Variablen an, deren Inhalte bei Aufruf eines Programms mit CHAIN an dieses bergeben werden.Der Befehl mu mit der gleichen Variablenliste sowohl im aufrufenden, als auch im aufgerufenen Programm am Anfang stehen, bzw. in der bei CHAIN genannten Start-Zeile.Die Variableninhalte werden der Reihe nach zugewiesen. Eine Typenumrechnung (beispielsweise von Integer nach Fliekomma) wird automatisch durchgefhrt. Einer String-Variablen eine numerische Variable zuzuweisen, oder umgekehrt, ist unzulssig. Felder knnen nicht als ganzes bergeben werden. Die Zuweisung einzelner Elemente ist aber mglich.Ein COMMON wird durch CLEAR gelscht.Beispiel:COMMON A$,De,O(23)COMPILERTyp: BefehlSyntax:COMPILER {OFF|ON|}Erklrung:Zwischen COMPILER OFF und COMPILER ON stehende Programmteile werden beim Compilieren nicht mitbersetzt und fallen so aus dem Programm.Im Stringausdruck knnen dem Compiler Steuerworte (z.B. "Multitasking always" etc.) bergeben werden, die vom Interpreter nicht beachtet werden.Beispiel:COMPILER OFFCOMPILER "Trace_On" oderCOMPILERTyp: FunktionSyntax:COMPILERErklrung:Ergibt den Wert -1, wenn das laufende Programm als Compilat, und 0, wenn es im Interpreter luft.Beispiel:0 IF NOT(COMPILER) THEN PRINT "Interpreter!"1 IF COMPILER THEN PRINT "Compiler!"Interpreter!CONTTyp: BefehlSyntax:CONT [][ TO ]CONT [][ TO ]Erklrung:Fhrt die Programmausfhrung nach Abbruch durch CONTROL-C oder STOP fort, an der Unterbrechungsstelle fort, bzw. an der Start-Marke.Optional kann die Programmausfhrung an der End-Marke automatisch wieder angehalten werden.Der Befehl CONT kann nicht mehr ausgefhrt werden, nachdem am Programm nderungen vorgenommen wurden, 16 Fehlermeldungen ausgegeben wurden oder nach einer Fehlermeldung "? Out of Memory".Beispiel:CONT "Auswahl_Dump"CONTINUETyp: BefehlSyntax:CONTINUEErklrung:CONTINUE innerhalb einer SELECT-CASE-Anweisung bergeht jeweils die nchste CASE-Bedingung und fhrt das Programm hinter dem CASE weiter aus.Beispiel:0 A$="Q"1 SELECT A$2 CASE "Q"3 PRINT "Das Zeichen war ein Q"4 CONTINUE5 CASE "0" TO "9"6 PRINT "Das Zeichen war eine Ziffer"7 END_SELECTDas Zeichen war ein QDas Zeichen war eine ZifferCOPYTyp: BefehlSyntax:COPY  TO COPY TO Erklrung:Erstellt von Quell-Datei eine Kopie, mit dem Namen Ziel-Datei. Quell- und Ziel-Datei mssen jeweils mit Pfad angegeben werden. Fehlt in Ziel-Datei der Dateiname, so erhlt die Kopie den Namen des Originals.Kann die Datei nicht gefunden werden, wird der Befehl abgebrochen und ohne Fehlermeldung im Programmablauf fortgefahren.Beispiel:COPY "a:\*.BAS" TO "c:\"COSTyp: FunktionSyntax:COS()Erklrung:Berechnet den cosinus des numerischen Ausdrucks. Das Ergebnis ist abhngig vom eingestellten Winkelmodus (siehe DEG, RAD).Beispiel:0 PRINT COS( PI )1 DEG2 PRINT COS(90)-1 0COSECTyp: FunktionSyntax:COSEC()Erklrung:Berechnet den cosecans des numerischen Ausdrucks. Das Ergebnis ist abhngig vom eingestellten Winkelmodus (siehe DEG, RAD).Beispiel:0 PRINT COSEC( PI /2)1 DEG2 PRINT COSEC(180) 1-6.8356528E+8COSECHTyp: FunktionSyntax:COSECH()Erklrung:Berechnet den cosecans hyperbolicus des numerischen Ausdrucks. Beispiel:0 PRINT COSECH(1) .85091813COSHTyp: FunktionSyntax:COSH()Erklrung:Berechnet den cosinus hyperbolicus des numerischen Ausdrucks. Beispiel:0 PRINT COSH(.5) 1.127626COTTyp: FunktionSyntax:COT()Erklrung:Berechnet den cotangens des numerischen Ausdrucks. Das Ergebnis ist abhngig vom eingestellten Winkelmodus (siehe DEG, RAD).Beispiel:0 PRINT COT(3)1 DEG2 PRINT COT(90)-7.0152526 0COTHTyp: FunktionSyntax:COTH()Erklrung:Berechnet den cotangens hyperbolicus des numerischen Ausdrucks. Der numerische Wert mu ungleich null sein.Beispiel:0 PRINT COTH(1) 1.3130353CSNGTyp: FunktionSyntax:CSNG()Erklrung:Wandelt einen beliebigen numerischen Ausdruck in einfach-genaues-Fliekomma-Format um.Siehe auch CDBL, CINT, CINTL.Beispiel:0 A#=1#1 B#=3#2 PRINT CSNG(A#/B#)3 PRINT CSNG(A#)/CDBL(B#) .33333333 .33333333333333333CSRLINTyp: FunktionSyntax:CSRLINErklrung:Ergibt die Zeile, in der sich der Cursor gerade befindet. Die oberste Zeile hat die Nummer eins, im Gegensatz zu @, das die oberste Zeile mit null zhlt.Siehe auch POS, LOCATE, @.Beispiel:0 PRINT @(10,0);"Hier ist Zeile: "; CSRLINHier ist Zeile: 11CVDTyp: FunktionSyntax:CVD()Erklrung:Die ersten 10 Zeichen des Stringausdrucks werden in eine doppelt-genaue-Fliekommazahl umgewandelt. Umkehrfunktion zu MKD$.Die Funktion dient in erster Linie zum Lesen von Binr-Dateien, welche Fliekommazahlen nicht in ihrer lesbaren ASCII-Darstellung, sondern in ihrer binr Darstellung enthalten.Beispiel:PRINT CVD("1234567890")PRINT CVD( MKD$(1234567890)) 0.7708077718716055D+1895 1234567890CVITyp: FunktionSyntax:CVI()Erklrung:Die ersten beiden Zeichen des Stringausdrucks werden in eine Integer-Wort-Zahl umgewandelt. Umkehrfunktion zu MKI$.Die Funktion dient in erster Linie zum Lesen von Binr-Dateien, welche Integer-Wort-Zahlen nicht in ihrer lesbaren ASCII-Darstellung, sondern in ihrer binr Darstellung enthalten.Beispiel:PRINT CVI("12")PRINT CVI( MKI$(12)) 12594 12CVILTyp: FunktionSyntax:CVIL()Erklrung:Die ersten 4 Zeichen des Stringausdrucks werden in eine Integer-Langwort-Zahl umgewandelt. Umkehrfunktion zu MKIL$.Die Funktion dient in erster Linie zum Lesen von Binr-Dateien, welche Integer-Lang-Wortzahlen nicht in ihrer lesbaren ASCII-Darstellung, sondern in ihrer binr Darstellung enthalten.Beispiel:PRINT CVIL("1234")PRINT CVIL( MKIL$(1234)) 825373492 1234CVSTyp: FunktionSyntax:CVS()Erklrung:Die ersten 6 Zeichen des Stringausdrucks werden in eine einfach-genaue-Fliekommazahl umgewandelt. Umkehrfunktion zu MKS$.Die Funktion dient in erster Linie zum Lesen von Binr-Dateien, welche einfach-genaue-Fliekommazahlen nicht in ihrer lesbaren ASCII-Darstellung, sondern in ihrer binr Darstellung enthalten.Beispiel:PRINT CVS("123456")PRINT CVS( MKIL$(123456)) 7.7080777E+1894 123456DATATyp: BefehlSyntax:DATA [[,]]Erklrung:Die numerischen und/oder String-Ausdrcke sind der Reihe nach als offene Zuweisung im Programm gespeichert. Die DATA-Zuweisung hat auch dann Gltigkeit, wenn sie vom Programm noch nicht durchlaufen wurde.Mittels READ knnen die Ausdrcke wiederum der Reihe nach einer entsprechenden Variable zugewiesen werden. RESTORE verschiebt den Zeiger, der auf die nchste offene Zuweisung zeigt.Beispiel:0 DATA "Hund",A$1 Inh=22 READ A$,B$,C$,A3 PRINT A$,B$,C$,A4 DATA "Katze",23*InhHund Hund Katze 46DATE$Typ: BefehlSyntax:DATE$=Erklrung:Weist der Systemuhr das Datum Stringausdruck zu.Stringausdruck ist in Abhngigkeit vom Lndermodus anzugeben:MODE "D": "TT.MM.JJ"MODE "USA": "MM/TT/JJ"(T=Tag, M=Monat, J=Jahr)Beispiel:0 MODE "D"1 DATE$="21.08.83"2 PRINT DATE$21.08.83 oderDATE$Typ: FunktionSyntax:DATE$Erklrung:Gibt einen Stringausdruck des Datums entspechend dem eingestellten Lndermodus:MODE "D": "TT.MM.JJ"MODE "USA": "MM/TT/JJ"(T=Tag, M=Monat, J=Jahr)Beispiel:0 MODE "D"1 DATE$="21.08.83"2 MODE "USA"3 PRINT DATE$08/21/83DEFSiehe DEF FN, DEF PROC oder DEF USR.DEF FNTyp: BefehlSyntax:DEF FN [([[,]])][=]DEF FN [([[,Parameter]])][=]Erklrung:Weist der Funktionsvariablen die Funktion zu. Es knnen ein oder mehrere Parameter definiert werden, die beim Aufruf angegeben werden mssen. Die Parameter sind lokale Variablen (siehe auch LOCAL).Der Wert der Funktion kann direkt durch =Ausdruck angegeben werden oder alternativ nach einer ein- oder mehrzeiligen Berechnung durch RETURN Ausdruck.Die Funktion ist im Programm ber FN[([[,Parameter]])] aufrufbar.Die Funktionsdefinition kann an beliebiger Stelle im Programm erscheinen. Eine mehrzeilige Funktionsdefinition darf whrend des Programmablauf nicht durchlaufen werden. Eine mehrzeilige Funktionsdefinition sollte mit END_FN beendet werden. Diese Anweisung wirkt wie ein normales RETURN und dient in erster Linie der besseren Strukturierung des Programms.Beispiel: 0 PRINT FN Doppelt(13) 1 PRINT FN Primzahl$(13) 2 END 3 DEF FN Doppelt(A)=2*A 4 DEF FN Primzahl$(A) 5 LOCAL N,P$="Primzahl" 6 FOR N=2 TO SQR(A) 7 IF A MOD N=0 THEN P$="keine Primzahl" 8 NEXT N 9 RETURN P$10 END_FN 26PrimzahlDEF PROCTyp: BefehlSyntax:DEF PROC [([R][[,[R ]]])]Erklrung:Leitet eine Prozedurdefinition ein. Es knnen ein oder mehrere Parameter definiert werden. Die Parameter sind lokale Variablen (siehe auch LOCAL). Durch vorangestelltes R werden die Werte nach Beendigung der Prozedur an die im Prozeduraufruf genannten Variablen bergeben.Die Prozedur wird durch ein RETURN oder besser durch ein END_PROC beendet.Zum Aufruf ist der Prozedurnamen zu nennen und gegebenenfalls die in Klammern gesetzten und durch Komma getrennten Ausrcke. Ist in der Definition an einer Stelle ein R vor die Variable gestellt, so mu an entsprechender Stelle im Aufruf eine Variable stehen. An diese wird am Ende der Prozedur der Inhalt der Prozedur-Variablen bergeben.Die Prozedurdefinition kann an beliebiger Stelle im Programm erscheinen. Die Prozedurdefinition darf whrend des Programmablauf nicht durchlaufen werden.Beispiele: 0 Zentriere "Dieser Text erscheint zentriert" 1 Gesprerrt "OMIKRON.SOFTWARE",2 2 END 3 DEF PROC Zentriere(Text$) 4 PRINT TAB((W_CHAR-LEN(Text$))/2);Text$; 5 END_PROC 6 DEF PROC Gesperrt(Text$,Anzahl_Leerzeichen) 7 LOCAL I 8 FOR I=1 TO LEN(Text$) 9 PRINT MID$(Text$,I,1);10 PRINT " "*Anzahl_Leerzeichen;11 NEXT I12 END_PROC Dieser Text erscheint zentriertO M I K R O N . S O F T W A R EDEF USRTyp: BefehlSyntax:DEF USR=Erklrung:Legt die Adresse fest, die beim Aufruf eines Maschienensprache-Programms durch USR angespungen wird.Beispiel:DEF USR Scroll_ScreenDEFAULTTyp: BefehlSyntax:DEFAULTErklrung:Innerhalb einer SELECT-CASE Anweisung wird mit DEFAULT oder OTHERWISE der Programmzweig eingeleitet, der ausgefhrt werden soll, wenn keine der anderen Alternativen zutraf. Der DEFAULT-Zweig mu immer die letzte Mglichkeit innerhalb der SELECT-CASE Anweisung sein. Ein weiteres CASE darf nicht folgen.Beispiel:Siehe END_SELECTDEFDBLTyp: BefehlSyntax:DEFDBL {Buchstabe|Buchstabe-Buchstabe}[[,{Buchstabe|Buchstabe-Buchstabe}]]Erklrung:Es knnen einzelne Buchstaben oder Buchstabenbereiche (nach Alphabet) genannt werden. Die Buchstaben mssen gro geschrieben werden. Nachfolgend im Programmtext erscheinende Variablen ohne Postfix, die mit einem solchen Buchstaben beginnen werden automatisch als doppelt-genaue-Fliekomma-Variablen interpretiert.Das nachtrgliche Einfgen des Befehls verndert schon bestehende Variablenstrukturen nicht. Er ndert lediglich das Anzeigeverhalten des Editors.Beispiel:DEFDBL "A-Z" ' alle Variblen sind doppelt-genauDEFINTTyp: BefehlSyntax:DEFINT {Buchstabe|Buchstabe-Buchstabe}[[,{Buchstabe|Buchstabe-Buchstabe}]]Erklrung:Es knnen einzelne Buchstaben oder Buchstabenbereiche (nach Alphabet) genannt werden. Nachfolgend im Programmtext erscheinende Variablen ohne Postfix, die mit einem solchen Buchstaben beginnen werden automatisch als Integer-Wort-Variablen interpretiert.Das nachtrgliche Einfgen des Befehls verndert schon bestehende Variablenstrukturen nicht. Er ndert lediglich das Anzeigeverhalten des Editors.Beispiel:DEFINT "I,J,K"DEFINTLTyp: BefehlSyntax:DEFINTL {Buchstabe|Buchstabe-Buchstabe}[[,{Buchstabe|Buchstabe-Buchstabe}]]Erklrung:Es knnen einzellne Buchstaben oder Buchstabenbereiche (nach Alphabet) genannt werden. Die Buchstaben mssen gro geschrieben werden. Nachfolgend im Programmtext erscheinende Variablen ohne Postfix, die mit einem solchen Buchstaben beginnen werden automatisch als Integer-Langwort-Variablen interpretiert.Das nachtrgliche Einfgen des Befehls verndert schon bestehende Variablenstrukturen nicht. Er ndert lediglich das Anzeigeverhalten des Editors.Beispiel:DEFINTL "I,J,K,X-Z"DEFSNGTyp: BefehlSyntax:DEFSNG {Buchstabe|Buchstabe-Buchstabe}[[,{Buchstabe|Buchstabe-Buchstabe}]]Erklrung:Es knnen einzellne Buchstaben oder Buchstabenbereiche (nach Alphabet) genannt werden. Die Buchstaben mssen gro geschrieben werden. Nachfolgend im Programmtext erscheinende Variablen ohne Postfix, die mit einem solchen Buchstaben beginnen werden automatisch als einfach-genaue-Fliekomma-Variablen interpretiert.Das nachtrgliche Einfgen des Befehls verndert schon bestehende Variablenstrukturen nicht. Er ndert lediglich das Anzeigeverhalten des Editors.Beispiel:DEFSNG "A-Z"DEFSTRTyp: BefehlSyntax:DEFSTR {Buchstabe|Buchstabe-Buchstabe}[[,{Buchstabe|Buchstabe-Buchstabe}]]Erklrung:Es knnen einzellne Buchstaben oder Buchstabenbereiche (nach Alphabet) genannt werden. Die Buchstaben mssen gro geschrieben werden. Nachfolgend im Programmtext erscheinende Variablen ohne Postfix, die mit einem solchen Buchstaben beginnen werden automatisch als String-Variablen interpretiert.Das nachtrgliche Einfgen des Befehls verndert schon bestehende Variablenstrukturen nicht. Er ndert lediglich das Anzeigeverhalten des Editors.Beispiel:DEFSTR "T"DEGTyp: BefehlSyntax:DEGErklrung:Schaltet fr trigonometrische Funktionen auf Berechnung nach Gradma um (0 bis 360). Standardeinstellung ist Bogenma (0 bis 2), siehe RAD.WICHTIG: Wenn der Befehl zusammen mit dem COMPILER 4.0 verwendet wird und die Compilate den Coprozessor auf ATARI TT ausnutzen, ist folgendes zu beachten: Die Befehle DEG und RAD wirken als Steuerworte d.h. der Rechenmodus wird ab der Stelle ab der der Befehl im Programm steht umgestellt. Wann der Befehl ausgefhrt wird ist gleichgltig. Falls das Programm wie im Beispiel einen unverzweigten Ablauf von oben nach unten hat, ist die unterschiedliche Behandlung belanglos. Es ist bei Coprozessor Compilaten jedoch nicht mglich, den Winkelmodus in Abhngigkeit von einer Bedingung zu setzen. Hier mu man selbst Vorkehrung fr eine Umrechnung vorsehen.Beispiel:DEGPRINT SIN(45)RADPRINT SIN(45) .70710678 .85090352DETTyp: FunktionSyntax:DET(([],[)) Erklrung:Diese Funktion berechnet die Determinante einer quadratischen Matrix. Die Matrix mu in Form eines zweidimensionalen Fliekommafeldes vorliegen. Die Gre der Matrix mu fr beide Dimensionen angegeben werden. Wenn die Grenangabe fehlt, werden automatisch die beim Dimensonieren verwendeten Maximalwerte verwendet.Beispiel:0 DATA 1.,2.,3.,4.,5.,6.,7.,8.,9.1 DIM Matrix!(2,2)2 FOR I=0 TO 23 FOR J=0 TO 24 READ Matrix!(I,J)5 NEXT J6 NEXT I7 PRINT DET(Matrix!(,))0DIMTyp: BefehlSyntax:DIM ([[,([[,,[[ TO ,]]DRAW [TO] ,[[ TO ,]]Erklrung:Zeichnet an der durch X und Y gegebenen Koordinate einen Punkt. Durch Angabe von TO vor dieser Koordinate wird eine Linie vom letzten gezeichneten Punkt aus gezeichnet.Optional knnen weitere durch TO abgetrennte Koordinaten angegeben werden, die dann durch Linien verbunden werden.Farbe, Linienstil und Linienbreite knnen ber LINE COLOR, LINE STYLE, bzw. LINE WIDTH bestimmt werden.Ist mittels CLIP ein Bildfenster definiert, wird auerhalb dieses Bereiches nicht gezeichnet.Siehe auch POLYGON und PPOLYGON.Beispiel:0 DRAW 100,1001 DRAW 150,1002 DRAW TO 100,1503 DRAW 70,70 TO 20,30 TO 60,40DUMPTyp: BefehlSyntax:DUMP [{Buchstabe|Buchstabe-Buchstabe}[[,{Buchstabe|Buchstabe-Buchstabe}]]]Erklrung:Alle Variablen werden mit Inhalt auf dem Bildschirm ausgegeben. Bei Feldern wird jedoch nur der Dimensionsbereich angegeben.Optional knnen einzellne Buchstaben oder Buchstabenbereiche (nach Alphabet) genannt werden. Dann werden nur solche Variablen aufgelistet, die mit einem der genannten Buchstaben beginnen.Beispiel:0 Cop$="OMIKRON.Software":Betrag#=229.45#1 DUMP "B,C"COP$="OMIKRON.Software"BETRAG#= 229.45EDITTyp: BefehlSyntax:EDIT []Erklrung:Springt vom Direkt-Modus in den Editor. Mit dem numerischen Ausdruck kann die Zeilennummer angegeben werden, an der der Cursor positioniert wird.Wird 0 oder -1 angegeben, so steht der Cursor in der ersten, bzw. letzten Programmzeile.Der Editor kehrt mit Anklicken des Eintrags DIRECT MODE im FILE-Men in den Direkt-Modus zurck. verlassen werden.ELLIPSETyp: BefehlSyntax:ELLIPSE ,,,[,,]ELLIPSE ,,,[,,]Erklrung:Zeichnet um den Mittelpunkt X,Y eine Ellipse mit den angegebenen Radien. Optional knnen Start- und Endwinkel in Zehntel-Graden angegeben werden. Hierbei ist Winkel=0 rechts vom Mittelpunkt, Winkel=900 oberhalb des Mittelpunkts etc.Farbe, Linienstil und Linienbreite knnen ber LINE COLOR, LINE STYLE, bzw. LINE WIDTH bestimmt werden.Ist mittels CLIP ein Bildfenster definiert, wird auerhalb dieses Bereiches nicht gezeichnet.Siehe auch CIRCLE, PELLIPSE, PCIRCLE.ENDTyp: BefehlSyntax:ENDErklrung:Beendet den Programmablauf und schliet alle Dateien.ENDIFTyp: BefehlSyntax:ENDIFErklrung:ENDIF beendet den abhngigen Programmzweig einer mehrzeiligen IF-Anweisung. Beispiel:IF Count>Maximum THEN Count=0 Max_Count+=1ENDIFEND_FNTyp: BefehlSyntax:END_FNErklrung:Mit END_FN wird eine mehrzeilige Funktions-Definition abgeschlossen. END_FN wirkt genau wie RETURN, kann jedoch keine Werte zurckgeben. END_FN sollte jedoch immer am Ende einer Funktion verwendet werden. So wird anschaulich klar bis zu welcher Stelle die Funktion reicht, auch wenn sie mehrere Ausgnge hat.Beispiel:0 PRINT FN Fakultaet(10)1 END2 DEF FN Fakultaet(N)3 IF N=1 THEN4 RETURN 15 ELSE6 RETURN FN Fakultaet(N-1)*N7 ENDIF8 END_FNEND_PROCTyp: BefehlSyntax:END_PROCErklrung:Mit END_PROC wird eine Prozedur-Definition abgeschlossen. END_PROC wirkt genau wie RETURN, sollte jedoch immer einmal am Ende einer Prozedur verwendet werden. So wird anschaulich klar bis zu welcher Stelle die Prozedur reicht, auch wenn sie mehrere Ausgnge hat.Beispiel:0 DEF PROC Zentriere(Text$)1 PRINT TAB((W_CHAR-LEN(Text$))/2);Text$;2 END_PROCEND_SELECTTyp: BefehlSyntax:END_SELECTErklrung:Beendet eine SELECT-CASE Anweisung. Wenn alle mglichen Alternativen aufgezhlt sind, wird die SELECT-Anweisung mit END_SELECT abgeschlossen.Beispiel:0 INPUT "Wert 1-3 : ";Wert1 SELECT Wert2 CASE 13 PRINT "Der Wert war eins"4 CASE 25 PRINT "Der Wert war zwei"6 CASE 37 PRINT "Der Wert war drei"8 DEFAULT9 PRINT "Es sind nur Werte zwischen 1 un 3 zugelassen"10 END_SELECT11 ENDEOFTyp: FunktionSyntax:EOF()EOF()Erklrung:Ergibt -1 (=wahr), wenn das Ende der Datei erreicht ist, sonst 0. Die Datei mu zuvor mit OPEN geffnet worden sein.Beispiel:0 OPEN "I",1,"C:\DESKTOP.INF"1 WHILE NOT EOF(1)2 In$=INPUT$(1,1)3 PRINT In$;4 WEND5 CLOSE 1Gibt den Inhalt von DESKTOP.INF aus.EQVTyp: OperatorSyntax: EQV Erklrung:Verknpft die beiden Ausdrcke bitweise quivalent.Beispiel:0 PRINT BIN$((%1010 EQV %1100)+%10000)1001ERLTyp: FunktionSyntax:ERLErklrung:Gibt nach Verzweigen durch ON ERROR GOTO oder ON TRON GOSUB die Nummer der Zeile zurck, in der der Fehler auftrat, bzw. die zuletzt bearbeitet wurde.ERRTyp: FunktionSyntax:ERRErklrung:Gibt nach Verzweigen durch ON ERROR GOTO die Fehler-Nummer an, nach Verzweigen durch ON TRON GOSUB die Nummer des gerade bearbeiteten Tokens. ERR$Typ: FunktionSyntax:ERR$Erklrung:Ergibt nach Verzweigen durch ON ERROR GOTO den Fehler-Meldungs-Text, nach Verzweigen durch ON TRON GOSUB den gerade bearbeiteten Befehl. ERRORTyp: BefehlSyntax:ERROR()ERROR()Erklrung:Erzeugt den durch den numerischen Ausdruck angegebenen Fehler.Siehe auch Fehlerliste.Beispiel:ERROR 32EXECTyp: BefehlSyntax:EXEC [,[,]]EXEC [,[,]]Erklrung:Startet ein beliebiges ausfhrbares Programm (".PRG", ".APP", ".TTP" ...). Optional kann auch eine Commando-Zeile und ein Environment bergeben werden. Beim Commando-String ist zu beachten, da das erste Zeichen die Lnge des restliche Commando-Strings enthlt und da er insgesamt nicht lnger als 128 Zeichen wird.Beispiel:0 Cmd$="C:\TEST.BAS"1 Cmd$= CHR$( LEN(Cmd$))+Cmd$2 EXEC "C:\COMPILER.PRG",Cmd$EXITTyp: BefehlSyntax:EXIT {[]|TO EXIT {[Zahl der Strukturen>]|TO Erklrung:Mit EXIT kann eine Struktur - also eine Schleife, ein Unterprogramm oder ein SELECT-CASE - verlassen werden. Die Programmausfhrung wird direkt hinter dem Strukturende fortgesetzt. Auf diese Weise knnen also zustzliche Abbruchbedingung in eine Schleife eingebaut oder eine Prozedur vorzeitig verlassen werden. Die Variante mit Anzahl zum Verlassen mehrerer Strukturen ist inkompatibel zum Compiler und sollte deshalb vermieden werden. Wird hinter TO noch ein Sprungziel angegeben, so wird nicht direkt am Strukturende weiter gemacht, sondern erst an der angegebenen Marke. Trotzdem darf auch hier nicht mehr als eine Struktur verlassen werden. Das Sprungziel mu also in der nchsthheren Ebene liegen. Mit EXIT TO z.B. zwei Schleifen auf einmal zu verlassen ist verboten. Ebenso drfen Prozeduren und mehrzeilige Funktionen nicht mit EXIT TO verlassen werden.Beispiel:0 REPEAT1 INPUT "Geben Sie einen Wert ein (nur RETURN -> ENDE): ";W$2 IF W$="" THEN EXIT3 Summe!+=VAL(W$)4 UNTIL 05 PRINT Summe!EXPTyp: FunktionSyntax:EXP()Erklrung:Ergibt den Wert der Potenz von e (Eulersche Zahl) und dem numerischen Ausdruck. Die Umkehrfunktion ist LN.Beispiel:0 PRINT EXP(1.)1 PRINT "Die Eulersche Zahl:"; EXP(1#) 2.7182818Die Eulersche Zahl: 2.7182818284590452FACTTyp: FunktionSyntax:FACT()Erklrung:Berechnet die Fakultt des ganzzahlig-abgerundeten numerischen Ausdrucks. Der Definitionsbereich reicht von 0 - 1754; andere Werte erzeugen eine Fehlermeldung ("Overflow" bzw. "Ill. function call").Beispiel:0 PRINT FACT(1000)1 PRINT FACT(10000) 4.0238726E+2567? Overflow in 1FIELDTyp: BefehlSyntax:FIELD [#], [AS ] [[, AS ]]FIELD [#], [AS ] [[, AS ]]Erklrung:Definiert fr die durch die Dateinummer gegebene Random-Access-Datei die Datenstruktur. Die Datei mu zuvor mit OPEN "R" geffnet worden sein, die Datensatzlnge mu den summierten Satzlngen der FIELD-Anweisung entsprechen. Ist die Datenstruktur zu umfangreich, um in einer Zeile definiert zu werden, so kann sie in zwei Zeilen aufgeteilt werden. Man verwendet hierzu eine zweite FIELD-Anweisung, wobei die erste Anzahl ohne Puffervariable die Summe aller bereits aufgezhlten reprsentiert (siehe Beispiel).Nach einem Lese-Vorgang durch GET enthalten die Puffervariable den gelesenen Dateisatz.Bei einem Schreib-Vorgang mit PUT werden die Inhalte der Puffervariablen als Datensatz gespeichert.Es ist darauf zu achten, da die Lnge der Puffervariable zu keiner Zeit verndert wird. Hierzu knnen die Feldinhalte mit LSET oder RSET bergeben werden. Weiterhin sind als Puffervariable nur einfach Strings zugelassen - Feldelemente sind verboten.Im Hinblick auf den Compiler gilt folgendes: Puffervariable fr FIELD-Anweisungen drfen niemals lokal verwendet werden (LOCAL). Sie sollten wirklich ausschlielich der Nutzung als Dateipuffer vorbehalten bleiben. Beispiel:0 OPEN "F",1,"C:\*.*",01 FIELD 1,21,1 AS Att$,2 AS Tim$,2 AS Dat$,4 AS Len$,14 AS Name$2 WHILE NOT EOF(1)3 GET 1,04 PRINT LEFT$(Name$, INSTR(Name$, CHR$(0))); TAB (15); CVIL(Len$)5 WEND6 CLOSE 1FILESTyp: BefehlSyntax:FILES []FILES []Erklrung:Gibt ein Inhaltsverzeichnis des in Dateiname genannten Pfades. Jokerzeichen innerhalb des Dateinames sind zugelassen.FILESELECTTyp: BefehlSyntax:FILESELECT (,,)FILESELECT (,,)Erklrung:Ruft eine Dateiauswahl-Box auf. Es mu unbedingt ein gltiger Pfad angegeben werden, da sonst ein Systemabsturz folgt. Der Dateiname wird als Vorgabe angezeigt.Vor Ausfhrung des Befehls sollte unbedingt die Maus mit MOUSEON eingeschaltet werden.Pfad und Dateiname enthalten nach Ausfhrung die gewhlte Datei. OK ist ungleich 0 (=wahr), wenn die Dateiauswahl-Box durch Doppelklick auf eine Datei oder mit OK verlassen wurde. Bei einem Fehler oder Abbruch ist OK gleich 0.Beispiel:0 Pfad$="A:\*.PRG"1 Datei$="OM-BASIC.PRG"2 MOUSEON3 FILESELECT (Pfad$,Datei$,Okay)4 MOUSEOFF5 N= LEN(Pfad$)6 REPEAT N=N-1 UNTIL MID$(Pfad$,N,1)="\"7 Pfad$= LEFT$(Pfad$,N)8 PRINT Pfad$;Datei$A:\OM-BASIC.PRGFILLTyp: BefehlSyntax:FILL ,,Erklrung:Fllt eine Flche ab der durch X und Y gegebenen Koordinate. Als Flchenrand gilt jeder Punkt, der die Umri-Farbe hat. Gibt man Umri-Farbe=-1 an, so gilt jeder Punkt als Flchenrand, der eine andere Farbe hat, als der an der X,Y-Koordinate.Gefllt wird mit der durch FILL COLOR definierten Farbe und dem durch FILL STYLE definierten Fllmuster.Die Befehle PBOX, PROX, PCIRCLE, PELLIPSE und PPOLYGON fllen eine Flche schneller als der entsprechende Zeichenbefehl mit anschlieendem FILL.Ist mittels CLIP ein Bildfenster definiert, wird auerhalb dieses Bereiches nicht gefllt.FILL COLORTyp: BefehlSyntax:FILL COLOR=Erklrung:Der numerische Wert gibt die bei Fll-Befehlen verwendtete Farbe an. Je nach Auflsung ist ein Wert zwischen 0 und 1, 0 und 3, bzw. 0 und 15 mglich.Siehe auch Palette. FILL PATTERNTyp: BefehlSyntax:FILL PATTERN =  [[,]]FILL PATTERN = ()[[,()]]Erklrung:Durch FILL PATTERN = wird das benutzter-definierbare Fllmuster festgelegt. Die Bitkombinationen fr das Fllmuster beffinden sich in den ersten 16 Worten der Integer-Wort-Feldes ab dem angegebenen Feldoffset. Ist mehr als eine Farbebene vorhanden, so ist fr jede Farbebene ein weiteres Feld anzugeben. Benutzt wird das so definierte Fllmuster mit FILL STYLE = 4,1.FILL STYLETyp: BefehlSyntax:FILL STYLE=,FILL STYLE=,Erklrung:Whlt den bei Fll-Befehlen verwendeten Fllstil. Mit Fllartkann gewhlt werden:0: nicht fllen1: komplett fllen2: Punktmuster3: Strichmuster4: durch FILL PATTERN festgelegtes MusterFllstil mu immer angegeben werden, hat aber nur bei Fllart 2 und 3 eine Bedeutung. Siehe auch Fllstil-Tabelle.FIXTyp: BefehlSyntax:FIX()Erklrung:Rundet den numerischen Wert auf eine ganze Zahl ab. Im Gegensatz zu INT wird auch im negativen Bereich abgerundet.Das Gegenstck zu FIX ist FRAC.Beispiel:0 PRINT FIX( PI )1 PRINT FIX(-12.5), INT(-12.5) 3-12 -13FNTyp: FunktionSyntax:FN [([[,]])]FN [([[,Parameter]])]Erklrung:Ruft eine durch DEF FN definierte Funktion auf und weist der Funktions-Variable den Funktionswert zu.Die in der Definition genannten Parameter mssen bergeben werden.Beispiel:0 PRINT FN Dreifach(3)1 PRINT FN Primzahl$(12)2 END3 DEF FN Dreifach(A)=3*A4 DEF FN Primzahl$(A)5 LOCAL N,P$="Primzahl"6 FOR N=2 TO SQR(A)7 IF A MOD N=0 THEN P$="keine Primzahl"8 NEXT N9 RETURN P$ 9keine PrimzahlSTEPTOFORFOR TO [STEP] NEXTTyp: BefehlSyntax:FOR  =  TO  [STEP : : NEXT [][[,]]FOR = TO [STEP : : NEXT []Erklrung:Die wohl bekannteste Programmschleife. Der Schleifenvariable wird zu Beginn der Startwert zugewiesen, welcher sodann beim jedem neuen Durchlauf um die Schrittweite erhht oder erniedrigt wird. Fehlt die Schrittweite wird sie automatisch auf eins festgelegt.Mgliche Schleifenvariable sind: Alle einfachen Variablentypen, jedoch keine Feldelemente. Zu beachten ist ferner: Wenn die Schleifenvariable abwrts gezhlt werden soll, ist unbedingt eine negative Schrittweite anzugeben (z.B. -1). Wenn die Schleifenbedingung gleich zu Anfang nicht erfllt ist (z.B. Startwert ist grer als Endwert bei positiver Schrittweite), dann wird die Schleife berhaupt nicht durchlaufen. Die FOR-NEXT-Schleife ist also eine abwesende Schleife.Die Schleife wird geschlossen durch die NEXT-Anweisung wobei die Schleifenvariable weggelassen werden kann. Die NEXT Anweisung bezieht sich dann immer auf die letzte FOR-Anweisung.Um die Schleife vorzeitig zu verlassen verwenden sie EXIT.Beispiel: FOR X#=-PI TO PI STEP .1#:PRINT X#:NEXT0 DIM A(10)1 FOR I=0 TO 102 A(I)=RND(20):PRINT A(I)3 NEXT I4 Maximum=05 FOR I=0 TO 106 Maximum=MAX(Maximum,A(I))7 NEXT I8 PRINT "Die grte Zahl ist: ";MaximumDie grte Zahle ist: ....FORM_ALERTTyp: BefehlSyntax:FORM_ALERT (,[,)FORM_ALERT (,[,)Erklrung:Stellt eine Warn-Box dar. Default gibt an, welcher der in Warnmeldung genannten Knpfe durch RETURN ausgelst werden kann. Soll dies fr keinen gelten, so ist Default gleich 0 zu bergeben.Die Warnmeldung ist folgendermaen aufgebaut:[Icon][Zeile 1|Zeile 2|Zeile 3|Zeile 4|Zeile 5|][Knopf 1|Knopf 2|Knopf 3]Icon ist eine Zahl zwischen 0 und 3:0: kein Icon1: Ausrufezeichen2: Fragezeichen3: Stop-Symbolandere Werte knnen zu Abstrzen fhren.Die Zeilen drfen jeweils hchstens 30 Zeichen lang sein.Die Knopfgre orientiert sich am lngsten Knopftext.Nach Ausfhrung enthlt Rckgabe die Nummer des gewhlten Knopfes.Beispiel:0 Datei$="A:\TEST.TXT"1 MOUSEON2 FORM_ALERT (1,"[2][Die Datei|"+Datei$+"|wird unwiderruflich gelscht.][OK|Abbruch]",Datei_Ex)3 MOUSEOFF4 IF Datei_Ex=1 THEN KILL A$FRACTyp: FunktionSyntax:FRAC()Erklrung:Ergibt den Nachkommaanteil des numerischen Ausdrucks. Das Vorzeichen bleibt erhalten.Das Gegenstck zu FRAC ist FIX.Beispiel:PRINT FRAC( PI ),FRAC(5.36), FRAC(-5.36) .14159265358979324 .36 -.36FRETyp: BefehlSyntax:FRE FRE Erklrung:Gibt einen durch MEMORY reservierten Speicherbereich wieder frei. Als Speicheradresse ist die Adresse anzugeben, die beim Aufruf von MEMORY zurckgegeben wurde.Beispiel:0 Puffer=MEMORY(1024)1 PRINT "Puffer angelegt bei: ";HEX$(Puffer)2 FRE Puffer oderFRETyp: FunktionSyntax:FRE({|})FRE({|})Erklrung:Wird ein numerischer Dummy angegeben, so ergibt die Funktion, den fr den Benutzer freien Speicherbereich, nachdem der Variablenspeicher aufgerumt wurde (garbiage collection).Der Wert des Dummys ist dabei ohne Belang.Wird ein Leerstring (="") bergeben, so ergibt die Funktion den fr den Benutzer freien Speicherbereich, ohne da zuvor eine garbiage collection durchgefhrt wird.Sonst wird der Stringausdruck als Laufwerksbezeichner interpretiert, und der auf diesem Laufwerk freie Speicherbereich ermittelt. Beispiel:PRINT FRE(0), FRE(""), FRE("C:")GEMDOSTyp: BefehlSyntax:GEMDOS[(][],[[,[L ]]][)]GEMDOS[(][],[[,[L]]][)]Erklrung:Ruft eine Funktion des GEMDOS (ein Teil des Betriebssystems) auf.Wenn vor den Parametern ein "L " gestellt ist, so wird der Parameter als LONG bergeben, ansonsten immer als WORD. 0: Pterm0 Programmende 1: Cconin Taste 2: Cconout(char.w) Zeichen ausgeben 3: Cauxin Zeichen von RS 232 lesen 4: Cauxout(char.w) Zeichen ber RS 232 ausgeben 5: Cprnout(char.w) Zeichen an Drucker 6: Crawio(char.w) Zeichen auf den Bildschirm 7: Crawcin Holt ein Zeichen v. Tastatur 8: Cnecin Holt ein Zeichen v. Tastatur 9: Cconws(->string.l) Gibt Zeichen aus (0term) A: Cconrs(->buffer.l) Eine Zeile eingeben B: Cconis Taste gedrckt E: Dsetdrv(drive.w) Setzt Standardlaufwerk 10: Cconos Consolenstatus 11: Cprnos Druckerstatus (<>0 bereit) 12: Cauxis RS 232 empfangsbereit ? 13: Cauxos RS 232 sendebereit ? 19: Dgetdrv Ermittelt Standardlaufwerk 1A: Fsetdta(->dta.l) Setzt DTA-Adresse 20: Super(USP.l) Super ein/aus 2A: Tgetdate Holt Datum 2B: Tsetdate(datum.w) Setzt Datum 2C: Tgettime Holt Systemzeit 2D: Tsettime(time.w) Setzt Systemzeit 2F: Fgetdta Ermittelt DTA-Adresse 30: Sversion Versionsnummer 31: Ptermres(len.l,fail.w) Resident verlassen 36: Dfree(->buffer.l,drive.w) Freier Diskplatz 39: Dcreate(->name.l) Richtet Ordner ein 3A: Ddelete(->name.l) Lscht Ordner 3B: Dsetpath(->pfad.l) Stellt Standardpfad ein 3C: Fcreate(->name.l,attribut.w) Legt Datei an 3D: Fopen(->name.l,modus.w) ffnet Datei 3E: Fclose(handle.w) Schliet Datei 3F: Fread(handle.w,len.l,->buffer.l) Liest Datei 40: Fwrite(handle.w,len.l,->buffer.l) Schreibt 41: Fdelete(->name.l) Lscht Datei 42: Fseek(pos.l,handle.w,modus.w) Positioniert Dateizeiger 43: Fattrib(->name.l,modus.w,attr.w) Verndert/Ermittelt Attribut 45: Fdup(device.w) ffnet Datei auf Device 46: Fforce(device.w,handle.w) Lenkt Ausgabe in Datei 47: Dgetpath(->buffer.l,drive.w) Holt S.-Pfad 48: Malloc(len.l) reserviert Speicher 49: Mfree(adr.l) gibt Speicher frei 4A: Mshrink(dummy.w,base_adr.l,len.l) Verkleinert res. Speicher-Block 4B: Pexec(mode.w,->name.l,->cmd.l,->env.l) Fhrt Programm aus 4C: Pterm(return.w) beendet Programm 4E: Fsfirst(->name.l,attribut.w) Sucht im Inhaltsverzeichnis 4F: Fsnext Sucht weiter 56: Frename(dummy.w,->old.l,->new.l) Benennt Dateien um 57: Fdatime(->buffer.l,handle.w,mode.w) Setzt Uhrzeit bei DateiBeispiel:0 PRINT FN Get_Path$1 END2 DEF FN Get_Path$' Standard-Pfad ermitteln3 LOCAL Path$,Drive,Adr4 GEMDOS (Drive,$19)' Standard-Laufwerk5 Path$= CHR$(0)*1286 Adr= LPEEK( VARPTR(Path$))+ LPEEK( SEGPTR +28)7 GEMDOS (,$47,L Adr,Drive+1)8 Path$= CHR$(Drive+65)+":"+ LEFT$(Path$, INSTR(Path$, CHR$(0))-1)+"\"9 RETURN Path$10 END_FNGETTyp: BefehlSyntax:GET ,{[,,}1: GET ,2: GET ,,3: GET ,,Erklrung:Nach Syntax 1 wird ein Datensatz aus der durch die Dateinummer gegebenen Datei gelesen und den in FIELD genannten Puffervariablen zugewiesen. Die Datei mu zuvor mittels OPEN "R" geffnet worden sein. Ist der Datensatz nicht vorhanden enthalten die Puffervariablen Leerzeichen, EOF gibt den Wert -1 (=wahr) zurck.Nach Syntax 2 und 3 wird aus der durch die Dateinummer gegebenen Datei die gegebene Anzahl Zeichen gelesen und ab der Speicheradresse bzw. in der String-Variable abgelegt. Die Datei mu zuvor mit OPEN "U" geffnet worden sein.Gelesen wird ab der aktuellen Dateiposition, die mit SEEK gesetzt werden kann.GOSUBTyp: BefehlSyntax:GOSUB Erklrung:Verzweigt in das durch  definierte Unterprogramm.Vom Unterprogramms kann mittels RETURN wieder in das Hauptprogramm zurckgesprungen werden. Dann wird als nchstes der der GOSUB-Anweisung folgende Befehl ausgefhrt.Die im Unterprogramm verwendeten Variablen sind global (siehe LOCAL). Unter OMIKRON.Basic geschriebene Programm knnen im Prinzip vollstndig auf GOSUB verzichten, da ein Unterprogramm-aufruf immer auch mittels einer Prozedur verwirklicht werden kann. Ein Unterprogramm per GOSUB aufzurufen ist eigentlich nicht mehr zeitgem. Aus Grnden der Kompatibilitt wurde der Befehl natrlich im Sprachumfang belassen.GOTOTyp: BefehlSyntax:GOTO Erklrung:Verzweigt an die durch  definierte Stelle im Programm. ACHTUNG: Verzweigen Sie niemals in eine Struktur (Schleife oder SELECT-CASE) oder in eine Prozedur. Sprnge per GOTO sind nur in der gleichen Hierachie-Ebene erlaubt. Um eine Struktur vorzeitig zu verlassen verwenden Sie EXIT.Generell fhrt die Verwendung von GOTO sehr schnell zu sehr unbersichtlichen Programmen. Man sollte daher zu viele GOTOs nach Mglichkeit vermeiden. Die strukturierte Programmierung, wie sie von OMIKRON.Basic untersttzt wird, kommt in jedem Falle auch ganz ohne GOTO aus. Es ist jedoch nicht auszuschlieen, da in einem oder anderen Fall (z.B. bei nicht behebbaren Fehlern) ein GOTO einfach praktischer ist.HCOPYTyp: BefehlSyntax:HCOPYErklrung:Ruft die Systemroutine "Hard-Copy" auf, die auch ber Alternate Help erreichbar ist. Die Einstellung auf die verschiedenen Druckertypen erfolgt ber das Kontrollfeld-Accessory, das dem Atari beiliegt.Wie in der Systemroutine kann der Ausdruck durch Alternate Help abgebrochen werden.Beispiel:HCOPYHCOPY TEXTTyp: BefehlSyntax:HCOPY TEXTErklrung:Gibt eine Textkopie des Bilddschirms auf dem Drucker aus.WICHTIG: Diese Funktion wird vom COMPILER ab Version 3.5 nicht mehr untersttzt (Kompatibilittsprobleme).Beispiel:HCOPY TEXTHEX$Typ: FunktionSyntax:HEX$()Erklrung:Wandelt den numerischen Ausdruck in eine Zeichenkette um, die den gerundeten Wert des Ausdrucks als Hexadezimalzahl darstellt.Beispiel: 400 FF 0 1 ....HIGHTyp: FunktionSyntax:HIGH()Erklrung:Ermittelt die oberen 16 Bit des in Integer-Langwort gewandelten numerischen Ausdrucks. Gegenstck zu dieser Funktion ist LOW. Beispiel:PRINT HEX$(HIGH($12346789)) 1234H_CHARTyp: FunktionSyntax:Diese Funktion ergibt die Hhe des Bildschirms in Zeichen. Der Wert entspricht den Informationen, die vom VDI bei Inquire Character Cells geliefert werden.H_PIXELTyp: FunktionSyntax:Diese Funktion ergibt die Hhe des Bildschirms in Pixeln. Der Wert entspricht den Informationen, die vom VDI bei V_Opnvwk geliefert werden.IMPTyp: OperatorSyntax: IMP Erklrung:Die beiden Aussagen werden logisch implement verknpft. Die Wahrheitstabelle hierzu fhrt nur zu einer unwahren Aussage, wenn der erste Ausdruck wahr, er zweite aber unwahr ist.Beispiel:0 PRINT BIN$((%1010 IMP %1100)+%10000) 1101INKEY$Typ: FunktionSyntax:INKEY$Erklrung:Holt eine Eingabe vom Tastatur-Buffer ab. Ist keine Eingabe vorhanden, gibt die Funktion einen Leerstring. Sonst ist der String 4 Zeichen lang.Der ASCII-Wert des ersten Zeichens ergibt den Zustand der Shift-Tasten:Bit 0: rechtes ShiftBit 1: linkes ShiftBit 2: ControlBit 3: AlternateBit 4: Caps LockDer ASCII-Wert des zweiten Zeichens entspricht dem Scan-Code der gedrckten Taste (siehe auch Scan-Code-Tabelle).Das dritte Zeichen hat keine Bedeutung; ist immer CHR$(0).Das vierte Zeichen entspricht dem ASCII-Wert der Eingabe, oder ist CHR$(0), wenn die Eingabe keine ASCII-Wert hat (z.B. Home)Beispiel:0 REPEAT1 REPEAT2 A$= INKEY$3 UNTIL LEN(A$)4 FOR N=1 TO 45 PRINT ASC( MID$(A$,N,1)),6 NEXT7 IF RIGHT$(A$,1)>=" " THEN PRINT RIGHT$(A$,1) ELSE PRINT8 UNTIL ASC( MID$(A$,2,1))=97 'Ende mit Undo 0 30 0 97 a 0 48 0 98 b 2 46 0 67 C 2 32 0 68 D 0 1 0 27 0 28 0 13 0 97 0 0 INPUTTyp: BefehlSyntax:INPUT [;][[,]]INPUT [;][[,]]Erklrung:Der INPUT Befehl liest eine oder mehrere Variablen von der Tastatur ein. Wenn angegeben, wird eine Eingabeaufforderung (Prompt) ausgegeben, ansonsten einfach ein Fragezeichen. Die Eingabe wird mit [RETURN] abgeschlossen. Wenn mehrere Werte in einer Zeile eingegeben werden sollen, mssen diese durch Kommata abgetrennt werden. Wenn num. Variable eingelesen werden sollen, wird alles bis zum ersten ungltigen Zahlzeichen als Wert bernommen, der Rest wird ignoriert. Fhrende Leerzeichen werden berlesen. Der Wert die die Variable vor Ausfhrung des INPUT-Befehls hatte spielt keine Rolle, es wird im jedem Fall ein neuer Wert zugewiesen. Wesentlich erweiterte Mglichkeiten bietet der INPUT USING Befehl.Beispiel:0 INPUT "Geben Sie 3 Werte ein: ";A,B,C1 PRINT A,B,C2 INPUT @(10,0);"Geben Sie Ihren Namen ein: ";N$3 PRINT N$INPUT #Typ: BefehlSyntax:INPUT #,[[,]]INPUT #,[[,]]Erklrung:Es wird aus einer sequentiellen Datei einer oder mehrere Variablen eingelesen. Wie bei INPUT sind knnen mehrere Variablen in einer Zeile, durch Komma getrennt, erscheinen.WICHTIG: Mit INPUT # mssen Sie immer eine ganze Zeile der Datei mit einer INPUT Anweisung lesen, d.h. die INPUT Anweisung mu genauso viel Variablen enthalten, wie Werte in einer Zeile stehen. Wenn Sie nicht wissen, wieviel Werte in einer Zeile stehen, so lesen Sie besser mit LINE INPUT die ganze Zeile ein und weisen die Werte erst spter an die eizelnen Variablen zu.Beispiel:0 OPEN "O",1,"C:\TEST.DAT"1 WRITE #1,1,2,32 WRITE #1,4,5,63 CLOSE 14 '5 OPEN "I",1,"C:\TEST.DAT"6 WHILE NOT EOF(1)7 INPUT #1,A,B,C8 PRINT A,B,C9 WEND10 CLOSE 1INPUT USINGTyp: BefehlSyntax:INPUT [;] USING ,[],[],[][,]INPUT [;] USING ,[],[],[][,]Erklrung:INPUT USING ermglicht eine formatierte Maskeneingabe mit diversen Einstellungsmglichkeiten. Abhngig vom Steuerstring werden bei der Eingabe nur bestimmte Zeichen zugelassen:"0" Ziffern"a" Buchstaben (einschl. lnderspezifische Zeichen)"%" Sonderzeichen (ausschl. lnderspezifische Zeichen)"^" Ctrl-zeichen (Eingabe mit [Control]-[A] [Control]-[Buchstabe])"+" einzelnes Zeichen zulassen"-" einzelnes Zeichen verbietenOb Sie dabei die Steuerzeichen selbst gro oder klein schreiben, ist egal.Um also Namen eingeben zu knnen, knnte ihr Steuerstring so aussehen: "A +- +." alle Buchstaben einschl. Sonderzeichen, der Bindestrich und der Punkt sind zugelassen.Telefonnummern wrde man mit "0 +/" eingeben knnen.Weiterhin besteht die Mglichkeit bestimmte Zeichen gleich bei der Eingabe umwandeln zu lassen:"u" alles nach Grobuchstaben wandeln"l" alles nach Kleinbuchstaben wandeln"c" wird Zeichen1 eingegeben so wird es automatisch durch Zeichen2 ersetzt. Hinweis: Zeichen1 mu natrlich auch in der Auswahl der zugelassenen Zeichen sein.Um also bei einer Zahleneingabe immer sofort statt Dezimalpunkt mit Komma zu arbeiten wrde ein Steuerstring "0 +.+, c.," bentigt.Grundstzlich wird die Eingabe mit RETURN beendet. Sie knnen jedoch mit dem Steuerstring weitere Tasten oder Ereignisse bestimmen, die die Eingabe beenden: "x" Sobald die Taste mit demselben ASCII-Code wie gedrckt wird, wird die Eingabe abgebrochen."s" Sobald die Taste mit demselben Scancode wie der ASCII-Code von gedrckt wird, wird die Eingabe abgebrochen. Dies ermglicht z.B. die Unterscheidung zwischen Ziffernblock und Haupttastatur und erlaubt auch den Abbruch durch Tasten, die als ASCII-Code eine Null zurckgeben, wie z.B. [Cursor hoch]."<" linke Randberschreitung: Die Eingabe wird abgebrochen, wenn der Cursor ber den linken Rand hinaus bewegt wird.">" rechte Randberschreitung: Die Eingabe wird abgebrochen, wenn der Cursor ber den rechten Rand hinaus bewegt wird."m" die INPUT USING darf durch sogenannte Multitasking-Befehle wie ON TIMER GOSUB oder ON MOUSEBUT GOSUB unterbrochen werden. Normalerweise ist INPUT USING ein Befehl und kann nicht durch Multitasking unterbrochen werden. Wenn der Steuerstring ein "m" enthlt wird dies trotzdem ermglicht. Hinweis: In Compilaten ist eine Unterbrechung des INPUT USING Befehls grundstzlich immer mglich. Wenn die Unterbrechung allerdings mehr erledigen soll als nur eine Kleinigkeit sollte vorbergehend die INPUT USING Funktion verlassen werden. Die wird mit POKE RESERVED(4),1 ausgelst.Der Prompt wird wie bei allen Eingabeanweisungen vor der Eingabe ausgegeben und kann natrlich auch ein Positionangabe mit "@" enthalten.Die Eingabe-Variable mu immer von Stringtyp sein, da sie whrend der Eingabe als Puffer dient. Numerische Eingaben werden nach der Eingabe mittels VAL umgewandetl.Die Rckgabe-Variable gibt Aufschlu ber die Abbruchursache: 0 die Eingabe wurde mit RETURN verlassen-1 linke Randberschreitung-2 rechte Randberschreitung-3 RESERVED(4) wurde auf 1 gesetztPositive Werte stehen fr eine andere Abbruchtaste. Sie wird durch einen vier Byte langen Wert gekennzeichnet, der - hnlich wie bei INKEY$ die Shift(b)its, den (S)cancode und den (A)SCII-Code enthlt: $BB SS 00 AA (hexadezimale Darstellung)Durch die Angabe einer Lnge kann die Eingabe auf eine bestimmte Zeichenzahl begrenzt werden. Die Lnge sollte immer mit angegeben werden, da eine zu lange Eingabezeile (mehr Spalten als darstellbar) nicht vernpftig funktioniert.Der ASCII-Code des Fllzeichens bestimmt das Zeichen mit dem die Eingabezeile hinterlegt wird, um das Eingabefeld anzudeuten. Wird nichts angegeben so ist das "_"-Zeichen voreingestellt. Denkbar wre z.B. 42 ("*") fr Zahleneingaben bei Schecks oder 32 (Leerzeichen) wenn gar nicht hinterlegt werden soll.Die Positions-Variable schlielich bestimmt die Position die der Cursor zu Beginn der Eingabe einnimmt. Sie liefert auch die zuletzt eingenomme Cursor-Position zurck. Man kann also z.B. den Cursor gezielt an die Fehlerstelle bewegen, wenn im Fehlerfall die Eingabe wiederholt werden mu. Es wre auch denkbar den Cursor immer wieder an den Anfang der Eingabe zu stellen, um so schneller Korrekturen vornehmen zu knnen.WICHTIG: Die Eingabe-Variable wird im Unterschied zu INPUT nicht in jedem Fall zuerst gelscht, sondern erscheint als Vorgabe in der Eingabezeile. Damit knnen Sie dem Anwender bereits sinnvolle Eingaben vorschlagen z.B. das aktuelle Datum. Es gengt dann ein einfaches RETURN, um die Eingabe zu bernehmen. Wenn mehrfach dieselben oder hnliche Eingaben verlangt werden, kann der alte Wert einfach stehen bleiben oder geringfgig modifiziert bernommen werden.Hinweis: Wenn wrend der INPUT USING Anweisung Control-C gedrckt wird, wird erst nach verlassen der Eingabe das Programm abgebrochen. Nach Beendigung der Eingabe mit INPUT USING wird kein Zeilenvorschub ausgegeben. Soll also die nchste Ausgabe in einer neuen Zeile erfolgen, so mu zuvor ein Zeilenvorschub ausgegeben werden.Beispiel:0 Eingabe1 END2 DEF PROC Eingabe3 CLS4 PRINT @(5,5);"Name :";5 PRINT @(6,5);"Strae :";6 PRINT @(8,5);"PLZ/Ort :";7 PRINT @(10,5);"Telefon :";8 PRINT @(13,5);"Angaben in Ordnung (J/N) ?";9 Exit$="s"+ CHR$($48)+"s"+ CHR$($50)10 Max_Feld=511 REPEAT12 SELECT Feld13 CASE 014 INPUT @(5,15);Name$ USING "a+-+ "+Exit$,Taste,5015 CASE 116 INPUT @(6,15);Strasse$ USING "a0+ +-"+Exit$,Taste,3017 CASE 218 INPUT @(8,15);Plz$ USING "0x "+Exit$,Taste,419 CASE 320 INPUT @(8,20);Ort$ USING "a0+ +-+/"+Exit$,Taste,5021 CASE 422 INPUT @(10,15);Tel$ USING "0c-/+/+ "+Exit$,Taste,1523 CASE 524 Jn$=""25 INPUT @(13,32);Jn$ USING "u+J+N"+Exit$,Taste,126 END_SELECT27 Scan= HIGH(Taste) AND $FF28 IF Scan=$48 THEN Feld= MAX(Feld-1,0)' Cur Up29 IF Scan=$50 OR Taste=0 THEN Feld= MIN(Feld+1,Max_Feld)' Cur Down30 UNTIL Jn$="J"31 RETURNINPUT$Typ: FunktionSyntax:INPUT$([,])INPUT$([,])Erklrung:Liest eine bestimmte Anzahl Zeichen von der Console (der Tastatur) bzw. von der genannten Datei.Beispiel:0 OPEN "I",1,"C:\DESKTOP.INF"1 WHILE NOT EOF(1)2 PRINT INPUT$(1,1);3 WEND4 CLOSE 15 '6 PRINT "Taste drcken ..."7 Dummy$= INPUT$(1)8 ENDINSTRTyp: FunktionSyntax:INSTR([,],)INSTR([,],)Erklrung:Sucht die angegebene Zeichenfolge im Stringausdruck und gibt dessen Position zurck. Ist die Zeichenfolge nicht im Stringausdruck enthalten, so ist der Funktionswert 0.Der ganze Stringausdruck wird vom ersten Zeichen ab durchsucht, es kann aber auch mit Suchbeginn eine Startposition bergeben werden.Das erste Zeichen im Stringausdruck hat die Position 1.Beispiel:PRINT INSTR("OMIKRON.Software",".")0 Pfad$="C:\PROJEKTE\BASIC\SOURCES\"1 P=INSTR(Pfad$,"\")2 WHILE P3 PRINT "Backslash gefunden an Position:"; P4 P=INSTR(P,Pfad$,"\")5 WEND 8Backslash gefunden an Position: 3 Backslash gefunden an Position: 12Backslash gefunden an Position: 18Backslash gefunden an Position: 26INTTyp: FunktionSyntax:INT()Erklrung:Liefert die nchst kleinere ganze Zahl. Dadurch werden positive Werte ab- und negative Werte aufgerundet.Die Funktion FIX rundet immer ab. Beispiel:PRINT INT( PI ), INT(12.5), INT(-12.5) 3 12 -13IPLTyp: BefehlSyntax:IPL Erklrung:Weist dem System den numerischen Ausdruck als Interrupt-Priority-Level zu. Alle Interrupts deren Level gleich oder kleiner ist, als der gegebene werden dann ignoriert. Ein Programmabbruch durch Control C kann verhindert werden, indem das hchstwertige Bit (=31) gesetzt wird.Standardeinstellung ist IPL 3.Beispiel:0 IPL 3+(1 SHL 31) 'verhindert Programmabbruch mit CTRL-CKEYTyp: BefehlSyntax:KEY =Erklrung:Weist den Funktionstasten F1 bis F10 (Nummer 1 bis 10), bzw. Shift-F1 bis Shift-F10 (Nummer 11 bis 20) einen maximal 32 Zeichen langen Stringausdruck zu.Auch Steuerzeichen wie Cursor hoch o.. lassen sich ber die entsprechenden Escape-Sequenzen (siehe VT-52 Tabelle) eingeben.Escape lt sich durch vormaliges Control-A in den Stringausdruck aufgenommen werden:KEY1="Control-A EscapeC".Return erhlt man durch CHR$(13):KEY2="stop"+CHR$(13)Die aktuellen Funktionstastendefinitionen knnen ber SAVE SETTINGS im Men MODE abgespeichert werden.Siehe auch KEY LIST. KEY LISTTyp: BefehlSyntax:KEY LISTErklrung:Gibt die Liste der Funktionstasten F1 bis F10 (Nummer 1 bis 10) und Shift-F1 bis Shift-F10 (Nummer 11 bis 20) zusammen mit den ber KEY definierten Texten aus.Beispiel:KEY 1="OMIKRON.Software"KEY 2="".....KILLTyp: BefehlSyntax:KILL KILL Erklrung:Die genannte Datei wird gelscht.Beispiel:KILL "TEST.BAS"LDUMPTyp: BefehlSyntax:LDUMP [{Buchstabe|Buchstabe-Buchstabe}[[,{Buchstabe|Buchstabe-Buchstabe}]]]Erklrung:Alle Variablen werden mit Inhalt auf dem Drucker ausgegeben. Bei Feldern wird jedoch nur der Dimensionsbereich angegeben.Optional knnen einzellne Buchstaben oder Buchstabenbereiche (nach Alphabet) genannt werden. Dann werden nur solche Variablen aufgelistet, die mit einem der genannten Buchstaben beginnen.LEFT$Typ: FunktionSyntax:LEFT$(,)Erklrung:Ergibt einen Teilstring des Stringausdrucks beginnend mit dem ersten Zeichen mit der durch den numerischen Ausdruck gegebenen Lnge. Ist der numerische Ausdruck grer als die Lnge des Stringausdrucks, so wird der gesamte String zurckgegeben.Siehe auch RIGHT$, MID$.Beispiel:0 A$="OMIKRON.Software"1 PRINT LEFT$(A$,7)OMIKRONLENTyp: FunktionSyntax:LEN()Erklrung:Ergibt die Lnge des Stringausdrucks (maximal 32766).LETTyp: BefehlSyntax:LET =Erklrung:Weist der Variablen den Ausdruck zu. Auf den Befehl kann aber verzichtet werden (er ist nur aus Kompatibilittsgrnden implementiert).Die Zuweisung lautet dann:=Beispiel:0 LET A=5+31 PRINT A 8LINE COLORTyp: BefehlSyntax:LINE COLOR=Erklrung:Der numerische Wert gibt die bei Zeichen-Befehlen verwendtete Farbe an. Siehe auch Palette. LINE INPUTTyp: BefehlSyntax:LINE INPUT [#][;][[,]]Erklrung:LINE INPUT entspricht fast in jeder Hinsicht dem normalen INPUT. Es kann sogar wie INPUT mit USING zusammen zur Masken-Eingabe verwendet werden (siehe INPUT USING). Lediglich Trennzeichen wie z.B. Kommas werden von LINE INPUT ignoriert; es wird immer bis zum Zeilenende eingelesen. Wenn also mehr als eine Variable eingelesen werden soll, so sind diese in unterschiedlichen Zeilen einzugeben.Beispiel:0 OPEN "O",1,"C:\TEST.DAT"1 WRITE #1,"123","456","487"2 WRITE #1,"123","456","487"3 CLOSE 14 OPEN "I",1,"C:\TEST.DAT"5 INPUT #1,A$,B$,C$6 LINE INPUT #1,Line$7 CLOSE 18 PRINT A$,B$,C$9 PRINT Line$123 456 487"123","456","487"LINE STYLETyp: BefehlSyntax:LINE STYLE=Erklrung:Der numerische Wert gibt die bei Zeichen-Befehlen verwendtete Linienart an. Folgende Linienarten sind mglich:1: durchgezogene Linie (Standardeinstellung)2: 12 Pixel Strich, 4 Pixel Lcke3: 3 Pixel Strich, 5 Pixel Lcke4: 7 Pixel Strich, 3 Lcke, 3 Strich, 3 Lcke5: 8 Pixel Strich, 8 Pixel Lcke6: 4 Pixel Strich, 3 Lcke, 2 Strich, 2 Lcke, 2 Strich, 3 Lcke7: durch LINE PATTERN frei definirbarIst durch LINE WIDTH eine andere Linienbreite als 1 gegeben, so wird immer eine durchgezogene Linie gezeichnet.HINWEIS: Um die Lcke zu zeichnen wird immer Farbe 0 verwendet. Deshalb ist es in einer Schwarz-Wei-Auflsung nicht ohne weiteres mglich eine weie gestrichelte Linie auf schwarzem Grund zu zeichnen. Man mu zustzlich den geeigneten Zeihenmodus (MODE =) whlen.LISTTyp: BefehlSyntax:LIST [][{-|,}[]]Erklrung:Gibt ein Programm-Listing auf dem Bildschirm aus. Ohne Parameter wird das gesammte Listing ausgegeben. Ist nur Parameter genannt wird die entsprechende Programmzeile gelistet. Ist der Marke ein - oder , vorgestellt bzw. angehngt, so wird ein Listing vom Anfang bis zur angegebenen Zeilennummer, bzw. von der angegebenen Zeilennummer bis zum Ende ausgegeben.Sind zwei Marken durch - oder , getrennt gegeben, so wird der entsprechende Programmabschnitt aufgelistet.Beispiel:LIST 10-30LIST Schleife,LLISTTyp: BefehlSyntax:LLIST [][{-|,}[]]Erklrung:Gibt ein Programm-Listing auf dem Drucker aus. Ohne Parameter wird das gesammte Listing ausgegeben. Ist nur Parameter genannt wird die entsprechende Programmzeile gelistet. Ist der Marke ein - oder , vorgestellt bzw. angehngt, so wird ein Listing vom Anfang bis zur angegebenen Zeilennummer, bzw. von der angegebenen Zeilennummer bis zum Ende ausgegeben.Sind zwei Marken durch - oder , getrennt gegeben, so wird der entsprechende Programmabschnitt aufgelistet.Beispiel:LLIST 10-30LLIST Schleife,LNTyp: FunktionSyntax:LN ()Erklrung:Berechnet den natrlichen Logarithmus des numerischen Ausdrucks. Der Definitionsbereich umfat alle positiven reellen Zahlen. Negative Argumente fhren zu "Ill. function call".Beispiel:0 PRINT LN(10), LN(10#)1 PRINT LN(-1) 2.3025851 2.3025850929940457? Illegal function call in 1LOADTyp: BefehlSyntax:LOAD LOAD Erklrung:Die genannte Datei wird als Basic-Programm geladen.Alle Variableninhalte und Dimensionierungen werden gelscht, offene Dateien werden geschlossen, Multi-Tasking-Aufrufe werden abgeschaltet. COMMON-Anweisung werden gelscht.Es ist unerheblich, ob das Programm als OMIKRON.BASIC-Programm oder ASCII-Datei gespeichert wurde. Siehe auch SAVE.LOCTyp: FunktionSyntax:LOC()LOC()Erklrung:Gibt die Nummer des zuletzt gelesenen oder geschriebenen Datensatzes in einer Random-Access Datei an. Die Datei mu zuvor durch OPEN "R" geffnet worden sein. Hat noch kein Zugriff auf die Datei stattgefunden, oder wurde ber das Dateiende hinaus gelesen, so ergibt die Funktion den Wert 0. LOCALTyp: BefehlSyntax:LOCAL [=][[,[=] ]]Erklrung:Definiert eine oder mehrere Variablen in einer Prozedur oder mehrzeiligen Funktion als lokal und weist ihnen gegebenenfalls den genannten Ausdruck zu.Die lokale Variable hat nur innerhalb dieser Routine Gltigkeit. Ruft sich die Routine selbst auf (rekursiv), so unterscheiden sich lokale Variablen der einzelnen Aufruftiefen.Beispiel:LOCATETyp: BefehlSyntax:LOCATE ,LOCATE ,Erklrung:Positioniert den Cursor auf die angegebene Bildschirmstelle. Die oberste Zeile hat hierbei die Nummer eins, whrend die Spaltenzhlung bei 0 beginnt.Siehe auch @, CSRLIN, POS.Beispiel:LOCATE 3,5: PRINT "Das ist ein Test" Das ist ein TestLOFTyp: FunktionSyntax:LOF()LOF()Erklrung:Gibt die Lnge einer sequentiellen Datei in Zeichen, einer Random-Access-Datei in Datenstzen an. Ist die sequentielleDatei zum Schreiben geffnet werden nur die neu geschriebenenDaten gezhlt. Ist sie zum Lesen geffnet wird das Dateiende-Zeichen (CHR$(24)) mitgezhlt.Die Datei mu zuvor mit OPEN geffnet worden sein.Beispiel:LOGTyp: FunktionSyntax:LOG(,)LOG(,)Erklrung:Errechnet den Logarithmus des Wertes zur angegebenen Basis. Basis und Wert mssen beide grer 0 sein.Beispiel:PRINT LOG(2,1024), LOG(3,81), LOG(10#,8475) 10 4 3.9281397068751198LOWTyp: FunktionSyntax:LOW()Erklrung:Ermittelt die unteren 16 Bit des in Integer-Langwort gewandelten numerischen Ausdrucks. Gegenstck zu dieser Funktion ist HIGH. Beispiel:PRINT HEX$(LOW($12345678)), LOW(1025) 5678 1LOWER$Typ: FunktionSyntax:LOWER$()Erklrung:Wandelt alle im Stringausdruck enthaltenen Buchstaben in kleine Buchstaben um. Ist MODE "D" eingestellt, so werden auch die Umlaute , , gewandelt.Gegenstck zu dieser Funktion ist UPPER$.Beispiel:PRINT LOWER$("Dies ist ein Test: ")dies ist ein test: LPEEKTyp: FunktionSyntax:LPEEK()Erklrung:Liest an der durch numerischen Ausdruck gegebenen Adresse ein Langwort. Der numerische Ausdruck mu durch zwei teilbar sein, dasonst ein Bus-Fehler auftritt.Siehe auch PEEK, WPEEK, POKE, WPOKE, LPOKE.Beispiel:PRINT "Basisadresse des Betriebssystems:"; HEX$(LPEEK($4F2))Basisadresse des Betriebssystems: FC0000LPOKETyp: BefehlSyntax:LPOKE ,LPOKE ,Erklrung:Legt Wert an der gegebenen Adresse als ein Langwort ab. Der numerische Ausdruck mu durch zwei teilbar sein, dasonst ein Bus-Fehler auftritt.Der Wert mu zwischen -2147483648 und 2147483647 liegen.Siehe auch POKE, WPOKE, PEEK, WPEEK, LPEEK.LPOSTyp: FunktionSyntax:LPOS()Erklrung:Ermittelt die Anzahl der seitdem letzten Line-Feed (CHR$(10)) an den Drucker bergebenen Zeichen. Sind darin keine Steuerzeichen enthalten und befindet sich der Drucker nicht im Grafikmodus, entspricht dies der Druckspalte.Der numerische Ausdruck ist ohne Bedeutung.LPRINT oder MODE LPRINTTyp: BefehlSyntax:LPRINT [USING ] [[{;|,}]][{,|;}]Erklrung:Genau wie bei PRINT werden die folgenden Ausdrcke ausgegeben allerdings auf den Drucker. Fr die Formatierung und Tabulierung der Ausgabe gelten die gleichen Regeln wie fr PRINT. Auch die zustzliche USING Anweisung lt sich genau wie bei PRINT USING einsetzen. Hinweis: Wenn mittels MODE LPRINT "D" auf Lndermodus deutsch umgeschaltet wurde, werden alle deutschen Umlaute und "" auf Epson-kompatiblen Druckern automatisch richtig ausgegeben. Diese Zeichenkonvertierung kann sich unter Umstnden strend auswirken, wenn Steuerzeichen oder eine Grafik zum Drucker bertragen werden soll. Man sollte also zuvor stets mit MODE LPRINT "USA" die Zeichenkonvertierung abschalten.Beispiel:0 MODE LPRINT "USA"1 LPRINT " "2 MODE LPRINT "D"3 LPRINT " "LSETTyp: BefehlSyntax:LSET =Erklrung:Der Stringausdruck wird linksbndig in String-Variable eingesetzt ohne da deren Lnge verndert wird. Hierzu wird der Stringausdruck hinten abgeschnitten oder durch Leerzeichen ergnzt. Dieser Befehl wird besonders bei Zuweisungen an Puffervariable (siehe FIELD) benutzt.Siehe auch RSET.Beispiel:0 A$= SPACE$(20)1 LSET A$="OMIKRON"2 PRINT "*";A$;"*"*OMIKRON *MAT oder MAT CLEARTyp: BefehlSyntax:MAT {+|-|*|/} MAT =[ {+|-|*|/} ] 1: MAT =12: MAT =3: MAT {+|-|*|/}4: MAT ={+|-|*|/}Erklrung:Zunchst ein paar grundstzliche Dinge: Matrixbefehle funktionieren nur mit zweidimensionalen Fliekommafelder. Dabei spielt es keine Rolle, ob Sie einfache oder doppelte Genauigkeit verwenden. Die Gre der Matrizen wird durch die angegebenen Indices bestimmt. Die Zhlung der Elemente beginnt wie immer bei Null. "Matrix!(2,2)" meint also eine dreireihige quadratische Matrix. "Matrix!(N,M)" ist entsprechend eine N+1,M+1 Matrix. Wie immer bei der Verwendung von Feldern kann der Index auch weggelassen werden, was genauso behandelt wird, als htte man den hchsten Index angegeben. Wurde das Feld "Matrix!" also auf 3,3 dimensioniert dann ist "Matrix!(,)" eine vierreihige quadratische Matrix.Bei der Verwendung des Befehls MAT sind vier verschiedene Syntaxen zu unterscheiden:1. Erzeugen einer Einheitsmatrix. Der quadratischen Matrix wird die Einheitsmatrix zugewiesen. 2. Die Matrixzuweisung: es werden alle Elemente der rechten Seite der linken zugewiesen. Hinweis: dieser Befehl funktioniert mit beliebigen Felder, die nicht die speziellen Anforderungen von Matrizen im Sinne von OMIKRON.Basic gengen. Es wird einfach alles von rechts nach links kopiert bis zum angegebenen Element. Eine Typkonvertierung ist dabei natrlich nicht mglich.3. Skalare Matrix-Operationen: Je nach Operator wird: zu jedem Element ein Wert addiert von jedem Element ein Wert subtrahiert jedes Element mit einem Wert multipliziert jedes Element durch einen Wert dividiert4. Vektorielle Matrix-Operationen: Je nach Operator werden: zwei Matrizen addiert (elementweise) zwei Matrizen subtrhiert (elementweise) zwei Matrizen multipliziert zwei Matrizen dividiert (mit der Inversen multipliziert)Bei der Matrizen-Multiplikation bzw. Division ist auf eine geeignete Wahl der Matrix-Dimensionen zu achten. Es gilt:A(P,Q)=B(P,N)*C(N,Q). Bei der Division mu zustzlich die Matrix C quadratisch sein.Beispiel:0 N=31 DIM Matrix!(N,N),Mat_A!(N,N),Mat_B!(N,N),Mat_C!(N,N)2 DIM Array(10),Feld(10)3 '4 MAT Matrix!(,)=15 MAT Mat_A!(1,1)+26 MAT Mat_C!(,)=Mat_B!(,)+Mat_A!(,)7 MAT Matrix!(1,2)=Mat_A!(1,2)8 MAT Feld(5)=Array(6)' der kleinere Index giltMAT CLEARTyp: BefehlSyntax:MAT CLEAR Erklrung:MAT CLEAR lscht ein beliebiges Feld bis zum angegebenen maximalen Index. Wird kein Index angegeben, so wird das gesamte Feld gelscht.Beispiel:0 N=31 DIM Matrix!(N,N)2 DIM Array(10)3 '4 MAT CLEAR Matrix!(,)5 MAT CLEAR Array(5)INVMAT INVTyp: BefehlSyntax:MAT = INV Erklrung:Berechnet die inverse Matrix. Beide Matrizen mssen quadratisch sein. Existiert die inverse Matrix nicht (Determinate = 0), so wird eine Fehlermeldung erzeugt.Beispiel:0 N=31 DIM Mat_A!(N,N),Mat_B!(N,N)2 '3 MAT Mat_A!(,)=14 MAT Mat_B!(,)= INV Mat_A!(,)MAXTyp: FunktionSyntax:MAX (,)Erklrung:Gibt den greren der beiden Ausdrcke als Funktionswert.Vergleiche zwischen numerischen und Stringausdrcken sind unzulssig.Siehe auch MIN.Beispiel:PRINT MAX(1,4), MAX(-6, PI) 4 3.1415926535897932MEMORYTyp: FunktionSyntax:MEMORY()MEMORY()Erklrung:Die MEMORY-Funktion dient zum reservieren von GEMDOS-Speicher. Sie entspricht weitgehend der zugehrigen Betriebssystemfunktion MALLOC. Mit MEMORY reservierte Speicherblcke werden jedoch bei Programmende oder bei CLEAR automatisch freigegeben. Der Aufruf mit minus eins als Parameter liefert die Lnge des grte freien Blocks zurck. Ansonsten wird die Speicheradresse zurckgegeben ab der der verlangte Speicherblock zur Verfgung steht. Um ausreichend groe Mengen GEMDOS-Speicher mit MEMORY reservieren zu knnen, mu der entsprechende Parameter bei CLEAR vergrert werden. Steht nicht ausreichend Speicher zur Verfgung, wird ein "Out of memory" ausgelst.Um Speicherblcke, die Sie per MEMORY angelegt haben, wieder freizugeben verwenden Sie FRE.Beispiel:Speicher=MEMORY(1024)MERGETyp: BefehlSyntax:MERGE Erklrung:Ldt zum aktuellen Basic-Programm das in Stringausdruck genannte hinzu. Das zu ladende Programm mu als ASCII-Dastei vorliegen (als Block gesichert oder SAVE ,A).Bei gleichen Zeilennummern, wird die alte Zeile gelscht (siehe auch RENUM).MID$Typ: BefehlSyntax:MID$(,,)=MID$(,,)=Erklrung:Weist der String-Variable ab der angegebenen Stelle den Stringausdruck zu, max. die angegebene Anzahl Zeichen. Dabei wird die Lnge der String-Variablen nicht verndert.Siehe auch LSET, RESET.Beispiel:0 Firma$="OMIKRON Soft & Hardware GmbH"1 MID$(Firma$,8,1)="."2 PRINT Firma$OMIKRON.Soft & Hardware GmbH oderMID$Typ: FunktionSyntax:MID$([,])MID$(,[,])Erklrung:Ergibt einen Teilstring des Stringausdrucks beginnend ab der gegebenen Stelle mit der gegebenen Lnge. Ist Lnge nicht gegeben oder grer als der verbleibende Teil des Stringausdrucks, so endet der Teilstring am Ende des Stringausdrucks.Beispiel:0 A$="OMIKRON.Software"1 PRINT MID$(A$,6,7)2 PRINT MID$("abcdefg",4)ON.SoftdefgMINTyp: FunktionSyntax:MIN (,)Erklrung:Gibt den kleineren der beiden Ausdrcke als Funktionswert.Vergleiche zwischen numerischen und Stringausdrcken sind unzulssig.Siehe auch MAX.Beispiel:PRINT MIN(-6,0), MIN(7,7.1)-6 7MIRROR$Typ: FunktionSyntax:MIRROR$()Erklrung:Spiegelt den gegebenen Stringausdruck. Das erste Zeichen wird mit dem letzten vertauscht, das zweite mit dem vorletzten etc.Beispiel:0 PRINT MIRROR$("12340")04321MKD$Typ: FunktionSyntax:MKD$()Erklrung:Wandelt den numerischen Ausdruck in eine doppelt-genaue-Fliekommazahl um, und diese in einen 10 Zeichen langen Stringausdrucks. Umkehrfunktion zu CVD.Beispiel:0 Zahl$=MKD$( PI )1 FOR I=1 TO 102 PRINT HEX$(ASC(MID$(Zahl$,I,1)));3 NEXT I 0 4 C9 F DA A2 21 68 C2 36MKDIRTyp: BefehlSyntax:MKDIR Erklrung:Legt einen neuen Ordner an. Der Ordnername wird in String-Ausdruck mit oder ohne Pfad angegeben, in letzterem Fall wird der Standardpfad benutzt (siehe CHDIR).MKI$Typ: FunktionSyntax:MKI$()Erklrung:Wandelt den numerischen Ausdruck in eine Integer-Wort-Zahl um, und diese in einen 2 Zeichen langen Stringausdrucks. Umkehrfunktion zu CVI.Beispiel:PRINT MKI$($5445)+MKI$($5354)TESTMKIL$Typ: FunktionSyntax:MKIL$()Erklrung:Wandelt den numerischen Ausdruck in eine Integer-Langwort-Zahl um, und diese in einen 4 Zeichen langen Stringausdrucks. Umkehrfunktion zu CVIL.Beispiel:PRINT MKIL$($57656C74)WeltMKS$Typ: FunktionSyntax:MKS$()Erklrung:Wandelt den numerischen Ausdruck in eine einfach-genaue-Fliekommazahl um, und diese in einen 6 Zeichen langen Stringausdrucks. Umkehrfunktion zu CVS.Beispiel:0 Zahl$=MKS$( PI )1 FOR I=1 TO 62 PRINT HEX$(ASC(MID$(Zahl$,I,1)));3 NEXT I 0 4 C9 F DA A2MODTyp: OperatorSyntax: MOD Erklrung:Ermittelt den Restwert einer Division des ersten numerischen Ausdrucks durch den zweiten. Der Teiler mu natrlich ungleich 0 sein. Das Vorzeichen entspricht dem des ersten Ausdrucks.Beispiel:PRINT 10 MOD 3,-20 MOD 7,15 MOD -6 1 -6 3MODE oder MODE LPRINTTyp: BefehlSyntax:MODE MODE Erklrung:Stellt den lnderspezifischen Modus ein. Mgliche Einstellungen sind "D" fr Deutschland, "GB" fr England, "I" fr "Italien", "F" oder "F^" fr Frankreich und "USA" fr die Vereinigten Staaten von Amerika. Die Lndereistellung hat Einflu auf Datums- und Zeitformat, auf die Sonderzeichen von INPUT USING, auf LOWER$ und UPPER$ und auf die Sortierreihenfolge bei SORT.Beispiel:0 MODE "D"1 PRINT DATE$2 MODE "USA"3 PRINT DATE$MODE LPRINTTyp: BefehlSyntax:MODE LPRINT MODE LPRINT Erklrung:Die Lnderkennung "D" bewirkt die richtige Ausgabe alle deutschen Umlaute und des "" auf einem Epson-kompatiblen Drucker. Wird als Lnderkennung "USA" oder "GB" angegeben, so unterbleibt jede Zeichenumwandlung. Wichtig: die Zeichenumwandlung des MODE LPRINT Befehls wirkt nur auf die Druckerausgabe mit LPRINT (nicht etwa ber OPEN "P"). Wenn mittels LPRINT Steuerzeichen zum Drucker bermittelt werden sollten oder eine Grafik ausgedruckt werden soll, so mu unbedingt MODE LPRINT "USA" eingestellt sein. Wenn dies versumt wird, knnen unter Umstnden Teile der Steuerzeichen oder der Grafik durch die Zeichenumwandlung verndert werden und erzielen so nicht das gewnschte Ergebnis.Beispiel:0 MODE LPRINT "USA"1 LPRINT " "2 MODE LPRINT "D"3 LPRINT " "MOUSEBUTTyp: FunktionSyntax:MOUSEBUTErklrung:Gibt den Zustand der Maustasten an:0: keine Taste1: linke Taste2: rechte Taste3: beide Tasten Siehe auch MOUSEX, MOUSEY.Beispiel:0 PRINT CHR$(27);"fTaste bricht ab ...":PRINT1 REPEAT2 PRINT CHR$(27);"A";MOUSEBUT;MOUSEX;MOUSEY;CHR$(27);"K"3 UNTIL LEN(INKEY$)MOUSEOFFTyp: BefehlSyntax:MOUSEOFFErklrung:Schaltet die Maus ab (wird nicht mehr angezeigt).Da das Betriebssystem die Anzahl der Mauseinschaltungen und -ausschaltungen mitzhlt, ist darauf zu achten, da innerhalb eines Programms die Maus genausooft aus-, wie eingeschaltet wird.Im Direktmodus sorgt OMIKRON.BASIC selbstndig fr korrekte Mausaktivierung.MOUSEONTyp: BefehlSyntax:MOUSEONErklrung:Schaltet die Maus an (Maus wird angezeigt).Da das Betriebssystem die Anzahl der Mauseinschaltungen und -ausschaltungen mitzhlt, ist darauf zu achten, da innerhalb eines Programms die Maus genausooft aus-, wie eingeschaltet wird.Im Direktmodus sorgt OMIKRON.BASIC selbstndig fr korrekte Mausaktivierung.MOUSEXTyp: FunktionSyntax:MOUSEXErklrung:Ergibt die X-Koordinate der Mausposition. Dabei ist unerheblich, ob die Maus geradde angezeigt wird oder nicht.Siehe auch MOUSEY, MOUSEBUT.Beispiel:0 PRINT CHR$(27);"fTaste bricht ab ...":PRINT1 REPEAT2 PRINT CHR$(27);"A";MOUSEBUT;MOUSEX;MOUSEY;CHR$(27);"K"3 UNTIL LEN(INKEY$)MOUSEYTyp: FunktionSyntax:MOUSEYErklrung:Ergibt die Y-Koordinate der Mausposition. Dabei ist unerheblich, ob die Maus geradde angezeigt wird oder nicht.Siehe auch MOUSEY, MOUSEBUT.Beispiel:0 PRINT CHR$(27);"fTaste bricht ab ...":PRINT1 REPEAT2 PRINT CHR$(27);"A";MOUSEBUT;MOUSEX;MOUSEY;CHR$(27);"K"3 UNTIL LEN(INKEY$)NAMETyp: BefehlSyntax:NAME  AS NAME AS Erklrung:Die genannte Datei erhlt einen neuen Namen.Die Datei kann mit Pfad angegeben werden, dann mu dieser Pfad aber auch im neuen Dateinamen angegeben sein.NANDTyp: OperatorSyntax: NAND Erklrung:Verknpft die beiden numerischen Ausdrcke logisch nicht-und.Beispiel:0 PRINT BIN$((%1010 NAND %1100)+%10000) 111NEWTyp: BefehlSyntax:NEW []NEW []Erklrung:Lscht das im Speicher befindliche Basic-Programm, alle Variableninhalte und Dimensionierungen. Offene Dateien werden geschlossen, ON ERROR GOTO- und ON TIMER GOSUB-Aufrufe werden abgeschaltet. COMMON-Anweisung werden gelscht. Optional kann ein Name des neuen Programms, das anschlieend geschrieben wird, angegeben werden.NEXTTyp: BefehlSyntax:NEXT [][[,]]NEXT [][[,]]Erklrung:Beendet eine FOR-NEXT-Schleife. Ist keine Schleifenvariable angegeben, so bezieht sich das NEXT immer auf das letzte FOR. Durch die Aufzhlung mehrerer Schleifenvariablen knnen mehrere Schleifen auf einmal beendet werden.Siehe auch FOR TO STEP NEXT.NOISETyp: BefehlSyntax:NOISE ,NOISE ,Erklrung:Schaltet Rauschen auf die Tonkanle des Sound-Chips.Nummer gibt die aufzuschaltenden Tonkanle:1: Tonkanal 12: Tonkanal 24: Tonkanal 3Durch entsprechende Adddition knnen mehrere Tonkanle angesprochen werden.Frequenz mu ein Wert von 0 bis 31 sein. Je kleiner der Wert, desto hher ist das Rauschen.Um das Rauschen zu hren mu den entsprechenden Kanlen mittels VOLUME eine Lautstrke zugewiesen werden.Siehe auch TUNE.NORTyp: OperatorSyntax: NOR Erklrung:Verknpft die beiden numerischen Ausdrcke logisch nicht-oder.Beispiel:0 PRINT BIN$((%1010 NOR %1100)+%10000) 1NOTTyp: FunktionSyntax:NOT Erklrung:Negiert den num. Ausdruck bitweise. Da alle Ausdrcke ungleich 0 als wahr angesehen werden, macht NOT nicht unbedingt aus einem wahren Ausdruck einen falschen.Beispiel:0 Ok=11 PRINT NOT(2>1), NOT Ok 0 -2OCT$Typ: FunktionSyntax:OCT$()Erklrung:Wandelt den numerischen Ausdruck in eine Zeichenkette um, die den gerundeten Wert des Ausdrucks als Oktalzahl darstellt.Beispiel:PRINT OCT$($12345678) 2215053170ONSiehe bei:ON ERROR GOTO, ON GOSUB, ON GOTO, ON HELP GOSUB, ON KEY GOSUB, ON MOUSEBUT GOSUB, ON RESTOREON TIMER GOSUB, ON TRON GOSUBON ERROR GOTOTyp: BefehlSyntax:ON ERROR GOTO {|0}Erklrung:Wenn whrend des Programmlaufs ein Fehler auftritt, der eine Fehlermeldung und den Programmabbruch zur Folge htte, kann dieser mit ON ERROR GOTO abgefangen werden. Bei Auftreten des Fehlers wird zur angegebenen Marke verzweigt. Wird statt einer Marke eine Null angegeben so ist die Fehlerberwachung wieder abgeschaltet. Die eigene Fehlerbehandlung mu unbedingt mit RESUME abgeschlossen werden, damit erkennbar ist was zur Fehlerbehandlung und was zum normaler Programm gehrt. Tritt whrend der Fehlerbehandlung erneut ein Fehler auf, so wird in jedem Fall abgebrochen. Wenn die Fehlerberwachung schon innerhalb der Fehlerbehandlung abgeschaltet wird, wird der zunchst abgefangene Fehler doch noch ausgegeben und anschlieend abgebrochen. Die Systemvariablen ERR, ERR$ und ERL enthalten Fehlernummer, Fehlertext und Fehlerzeile. (Siehe Fehlermeldungen). Beispiel siehe auch RESUME.Beispiel:0 ON ERROR GOTO Fehler1 OPEN "A",1,"C:\TEST.DAT"2 PRINT #1,"Dies ist ein Test"3 CLOSE 14 END5-Fehler6 IF ERR =53 THEN ' falls File not found7 OPEN "O",1,"C:\TEST.DAT"' Datei neu erzeugen8 CLOSE 19 RESUME10 ELSE11 ON ERROR GOTO 0' andere Fehler ausgeben12 ENDIFON GOSUBTyp: BefehlSyntax:ON  GOSUB  [[,]]Erklrung:In Abhngigkeit von  wird zu einem der durch  definierten Unterprogramm verzweigt. Ist der num. Ausdruck eins, wird zum Ersten, ist er zwei, zum Zweiten verzeigt usw. Ist der num. Ausdruck 0 oder grer als die Anzahl der angegebenen Marken, so wird berhaupt nicht verzweigt und der Befehl wird ignoriert.Vergleiche ON GOTO.Beispiel:0 INPUT "Wert (1-3): ";Wert1 ON Wert GOSUB Tier,Gemuese,Baum2 END3-Tier: PRINT "Hund": RETURN4-Gemuese: PRINT "Kohl": RETURN5-Baum: PRINT "Eiche": RETURNON GOTOTyp: BefehlSyntax:ON  GOTO  [[,]]Erklrung:In Abhngigkeit von  wird zu einer der angegebenen Marken verzweigt. Ist der num. Ausdruck eins, wird zur ersten, ist er zwei, zur zweiten Marke verzeigt usw. Ist der num. Ausdruck 0 oder grer als die Anzahl der angegebenen Marken, so wird berhaupt nicht verzweigt und der Befehl wird ignoriert.Vergleiche ON GOSUB.Beispiel:0 INPUT "Wert (1-3): ";Wert1 ON Wert GOTO Tier,Gemuese,Baum2 END3-Tier: PRINT "Hund": END4-Gemuese: PRINT "Kohl": END5-Baum: PRINT "Eiche": ENDON HELP GOSUBTyp: BefehlSyntax:ON HELP GOSUB Erklrung:Wenn die HELP-Taste gedrckt wird, so wird zu dem durch  definierten Unterprogramm verzeigt.HINWEIS: Fr compilerte Programme gilt: das Unterprogramm sollte keine Stringverarbeitung enthalten!Beispiel:0 ON HELP GOSUB Hilfe1 PRINT "Bitte HELP-Taste drcken"2 REPEAT3 UNTIL Ende' hier steht ihr Hauptprogramm4 END5 '6-Hilfe7 Taste$= INKEY$8 PRINT "Die Hilfe Taste wurde gedrckt"9 Ende=-110 RETURNON KEY GOSUBTyp: BefehlSyntax:ON KEY GOSUB Erklrung:Immer wenn eine Taste gedrckt wird, wird zu dem durch  definierten Unterprogramm verzeigt. Wichtig: das Unterprogramm mu die gedrckte Taste sofort durch Aufrufen der INKEY Funktion abholen, da sonst erneut in das Unterprogramm verzweigt wird, was einen Stapelberlauf und "Out of Memory" zur Folge hat.HINWEIS: Fr compilerte Programme gilt: das Unterprogramm sollte keine Stringverarbeitung enthalten!Beispiel:0 ON KEY GOSUB Taste1 PRINT "Bitte einige Tasten drcken ESC->Ende"2 REPEAT3 UNTIL Ende' hier steht ihr Hauptprogramm4 END5 '6-Taste7 Taste= CVIL( INKEY$ )8 Shiftbits=Taste SHR 249 Scancode= HIGH(Taste) AND $FF10 Ascii=Taste AND $FF11 PRINT "Shiftbits:";Shiftbits;" Scancode:";Scancode12 PRINT "ASCII:";Ascii13 IF Scancode=1 THEN Ende=-114 RETURNON MOUSEBUT GOSUBTyp: BefehlSyntax:ON MOUSEBUT GOSUB {|0}Erklrung:Immer wenn einer der beiden Maustasten (oder beide) gedrckt sind wird in das durch  definierte Unterprogramm verzweigt. Wichtig: das Unterprogramm wird nur angesprungen, wenn sich der Zustand der Maustasten ndert: Wenn Sie also eine Maustaste drcken und dann gedrckt halten, so wird das Unterprogramm nue einmal abgearbeitet. Die Null hinter GOSUB schaltet die Mausknopfberwachung aus.HINWEIS: Fr compilerte Programme gilt: das Unterprogramm sollte keine Stringverarbeitung enthalten!Beispiel:0 ON MOUSEBUT GOSUB Maustaste1 PRINT "Bitte Maustasten drcken"2 REPEAT3 UNTIL LEN( INKEY$ )' hier steht ihr Hauptprogramm4 END5 '6-Maustaste7 PRINT "Mausknopfzustand: "; MOUSEBUT8 RETURNON RESTORETyp: BefehlSyntax:ON  RESTORE  [[,]]Erklrung:Der Zeiger, der auf die nchste durch READ zu lesende offene Zuweisung zeigt wird in Abhngig von  verschoben. Ist der Wert des num. Ausdrucks eins, so gilt die erste, ist er zwei, so gilt die zweite Marke usw. Der DATA-Zeiger zeigt auf die erste durch DATA definierte offene Zuweisung, die hinter der betreffenden  erscheint. Ist der num. Ausdruck 0 oder grer als die Anzahl der angegebenen Marken, so wird der DATA-Zeiger nicht verschoben und der Befehl ignoriert.Beispiel:0 DATA "erster Text"1 -Tier: DATA "Hund"2 -Gemuese: DATA "Kohl"3 -Baum: DATA "Eiche"4 INPUT "WERT (1-3): ";Wert5 ON Wert RESTORE Tier,Gemuese,Baum6 READ Text$7 PRINT Text$ON TIMER GOSUBTyp: BefehlSyntax:ON TIMER  GOSUB {|0}ON TIMER GOSUB {|0}Erklrung:Das durch  definierte Unterprogramm, wird alle Sekunden angesprungen. Wird als Sprungziel Null angegeben wird die Zeitgeberberwachung wieder abgeschaltet. Achten Sie darauf, da Ihr Unterprogramm nicht zuviel Zeit in Anspruch nimmt. Bentigt im Extremfall Ihr Unterprogramm mehr Zeit als das von Ihnen eingestellte Intervall, so wird es sofort nach Beenden erneut aufgerufen und es bleibt keine Zeit mehr zur Ausfhrung des eigentlichen Programms.HINWEIS: Fr compilerte Programme gilt: das Unterprogramm sollte keine Stringverarbeitung enthalten!Beispiel:0 MODE "D"1 ON TIMER 1 GOSUB Uhr2 FOR I=1 TO 1E+7: NEXT ' hier knnte Ihr Hauptprogramm stehen3 END4 '5-Uhr6 PRINT CHR$(27)+"j"+@(0,0)+TIME$+" "+DATE$+CHR$(27)+"k";7 RETURNON TRON GOSUBTyp: BefehlSyntax:ON TRON GOSUB {|0}Erklrung:Wenn mittels TRON der Trace-Modus aktiviert wurde, wird vor jedem Befehl in das durch  gegebene Unterprogramm verzweigt. Die normale Protokollfunktion des Trace-Modus wird abgeschaltet und kann stattdessen durch ein intelligenteres Unterprogamm ersetzt werden, das nur bestimmte Dinge ausgibt oder auch Variableninhalte prft. Hierzu haben die Systemvariablen ERR, ERR$ und ERL im TRON-Unterprogramm eine besondere Bedeutung: ERR$ liefert den nun auszufhrenden Befehl als Klartext, ERL die Nummer der Zeile, die gerade ausgefhrt wird. ERR enthlt die interne Tokennummer, die nicht weiter von Bedeutung ist (entspricht dem Befehl in ERR$). Um sich einen berblick zu verschaffen probieren Sie das Beispiel einmal aus. Es lt das Programm im Einzel-Schritt-Modus ablaufen und zeigt den zugehrigen Befehl am oberen Bildschirmrand an.Wenn statt einer Marke eine Null an gegeben wird, ist wieder die normale Protokoll-Funktion des Trace-Modus aktiviert.HINWEIS: Im Compilat existert ein entsprechender Befehl nicht. Enthlt ein Programm Befehle fr Trace-Unterprogramme werden diese vom Compiler ignoriert.Beispiel:0 ON TRON GOSUB Trace: TRON1 REPEAT2 PRINT I3 I+=34 UNTIL I>55 END6 -Trace7 PRINT CHR$(27);"j";@(0,0);ERR$;" ";ERL;" Taste drcken ...";8 PRINT CHR$(27);"K";CHR$(27);"k";9 REPEAT UNTIL LEN(INKEY$): RETURNOPENTyp: BefehlSyntax:OPEN ,,[,]OPEN ,, [,]Erklrung:OPEN ffnet eine Datei. Die ein Zeichen lange Mode-Kennung charakterisiert die Art der Datei, die geffnet werden soll. OMIKRON.Basic verwaltet bis zu 16 gleichzeitig offene Dateien. Die Dateinummer mu deshalb zwischen 1 und 16 liegen und dient bei allen weiteren Datei-Operationen als Erkennungsmerkmal (Handle); welche Datei ist gemeint.Der Dateiname enthlt den Namen der Datei, wobei wieder entweder nur der Name, ein kompletter Pfad oder ein relativer Pfad verwendet werden knnen.Die verschiedenen Modi im Einzelnen - zunchst eine bersicht:"I" "Input" Sequentielle Datei; nur zu lesen"O" "Output" Sequentielle Datei; nur zu schreiben lscht eine bereits bestehende Datei"A" "Append" Sequentielle Datei; nur zu schreiben an eine bestehende Datei wird angefgt"R" "Random" Random-Access-Datei; lesen und schreiben feste Satzlnge; Verwendung von FIELD/PUT/GET"U" "User" Random-Access-Datei; lesen und schreiben keine feste Satzlnge; Verwendung von PUT/GET/SEEK"F" "Files" Inhaltsverzeichnis eines Laufwerks oder Pfades lesen."P" "Printer" ffnet einen Kanal auf den Drucker"V" "V24" ffnet einen Kanal auf die RS232-Schnittstelle."M" "MIDI" ffnet einen Kanal auf die MIDI-Schnittstelle."K" "Keyboard" ist seit der Version 3.5 nicht mehr vorhanden.Zunchst zu den drei sequentiellen Dateimodi "Input", "Output" und "Append". Mgliche Schreib-Lese-Funktionen: PRINT #, WRITE #, INPUT #, INPUT$(,) oder LINE INPUT #. Desweiteren knnen EOF und LOF ermittelt werden. WICHTIG: Um eine Datei mit "Append" zu ffnen mu diese bereits bestehen, ansonsten wird ein Fehler ausgelst.Die Random-Access-Datei vom Typ "R" bentigt als zustzlichen Parameter die Satzlnge. Wird keine Satzlnge angegeben so gilt die voreingestellte Satzlnge von 128. Vor jedem Schreib- oder Lesevorgang mu mittels FIELD eine oder mehrere Puffervariablen definiert werden. GET und PUT lesen bzw. schreiben dann einen beliebigen Datensatz. Der erste Datensatz hat die Nummer 1. Wird ein Satz geschrieben, der noch nicht innerhalb der Datei existierte, so wird die Datei automatisch verlngert. LOF ermittelt die Dateilnge in Stzen. LOC ergibt die Nummer des letzten gelesenen oder geschriebenen Satzes. EOF zeigt an, ob ein weiterer Satz zum Lesen bereitsteht.Die "User" Datei bentigt keine Angabe der Satzlnge. Man kann beliebige Datenmengen lesen oder schreiben. Die Vereinbarung einer Puffervariablen entfllt, man schreibt/liest mit PUT/GET direkt einen Speicherblock oder einen String. Zustzlich kann der Schreib-Lese-Zeiger mit SEEK neu positioniert werden. LOF ergibt die Dateilnge in Bytes. LOC ergibt die Position des Schreib-Lese-Zeigers in Byte (beginnend mit 0). EOF zeigt an, ob ein weiteres Byte zum Lesen bereitsteht.Eine "Inhaltsverzeichnisdatei" dient zum Auslesen eines Inhaltsverzeichnisses eines Laufwerk oder eines Pfades. Dabei kann der Dateiname eine Jokerauswahl enthalten z.B. "C:\*.BAS". Als zustzlicher Parameter mu eine Kennzahl fr die gewnschten Dateiattribute angegeben werden. Diese Kennzahl setzt sich wie folgt zusammen: 1 fr schreibgeschtzte Dateien +2 fr verborgene Dateien +4 fr Systemdateien +8 fr Diskettenname+16 fr OrdnerWenn also nur "normale" Datei gesucht werden lautet die Kennzahl null, verborgene und Systemdateien dazu: sechs. Sollen nur Ordner gesucht werden: 16. Ein Verzeichniseintrag wird immer mit GET ,0 geholt, zuvor sollte man mit EOF() sicherstellen, da noch ein weiterer Eintrag vorhanden ist. Um den Verzeichniseintrag auswerten zu knnen, sollten einige Puffervariablen gem folgendem Schema definieren: FIELD ,21,1 AS Att$,2 AS Tim$,2 AS Dat$,4 AS Len$,14 AS Name$Der Aufbau entspricht genau dem Aufbau der sogenannten DTA (Betriebssystem-Struktur). Zu beachten ist, da Name$ in der Regel noch Null-Zeichen (CHR$(0)) enthlt, die eventuell ab gespalten werden mssen (z.B. wenn Strings verkettet werden sollen).Die Datei-Modi, welche die Schnittstellen des Rechners ansprechen funktionieren analog zu sequentiellen Datei. Es wird eben von der betreffenden Schnittstelle gelesen bzw. auf ihr ausgegeben. Besonders ntzlich ist dies in Zusammenhang mit dem CMD-Befehl. Man kann so z.B. auf einfache Weise alle Bildschirmausgaben ber PRINT auf den Drucker umlenken. (siehe CMD). Funktionen wie LOF, LOC oder EOF sind bei Datei (Kanlen), die sich auf Schnittstellen beziehen nicht erlaubt. Beispiel:ORTyp: OperatorSyntax: OR Erklrung:Verknpft die beiden numerischen Ausdrcke logisch oder.Beispiel:0 PRINT BIN$(%1010 OR %1100) 1110OTHERWISETyp: BefehlSyntax:OTHERWISEErklrung:OTHERWISE entspricht exakt dem Befehl DEFAULT siehe dort.PALETTETyp: BefehlSyntax:PALETTE [],[[,]]PALETTE [],[[,]]Erklrung:Setzt eine neue Farbpalette. Die Farbwerte werden der Reihe nach direkt in die Register des Video-Bausteins geschrieben. Ein Farbwert setzt sich zusammen aus einer dreistelligen hexadezimalen Zahl, wobei jede Hex-Ziffer die Farbsttingung von Rot, Grn und Blau angibt. $777 steht also fr wei, $700 fr Rot usw.WICHTIG: Da dieser Befehl die Videohardware des ATARI ST voraussetzt und mit anderen Grafiksystemen nicht zusammenarbeitet, ist er in hchstem Mae inkompatibel und sollte daher nicht verwendet werden. Stattdessen sollte der entsprechende VDI-Befehl zum Einsatz kommen: Vs_Color(,,,). Die Farbsttigung wird hier allerdings in 1/1000 angegeben und ist somit unabhngig von den Fhigkeiten der Videohardware. PBOXTyp: BefehlSyntax:PBOX ,{ TO ,|,,}PBOX ,{ TO ,|,}Erklrung:Zeichnet ein geflltes Rechteck auf den Bildschirm. Dabei sind entweder zwei gegenberliegende Ecken anzugeben, oder eine Ecke, Breite und Hhe des Rechtecks.Gefllt wird mit der durch FILL COLOR definierten Farbe und dem durch FILL STYLE definierten Fllstil.Die Umrandung ist unabhngig von den Einstellungen durch LINE STYLE und LINE WIDTH immer eine durchgezogene, ein Pixel breite Linie. Die Farbe entspricht der Fllfarbe. Die Umrandung kann mit OUTLINE OFF aus- bzw. OUTLINE ON eingeschaltet werden.Ist mittels CLIP ein Bildfenster definiert, wird auerhalb dieses Bereiches nicht gezeichnet.Siehe auch PRBOX, BOX, RBOX.PCIRCLETyp: BefehlSyntax:PCIRCLE ,,[,,]CIRCLE ,,[,,]Erklrung:Zeichnet um den Mittelpunkt X,Y einen gefllten Kreis mit dem angegebenen Radius. Optional knnen Start- und Endwinkel in Zehntel-Graden angegeben werden. Hierbei ist Winkel=0 rechts vom Mittelpunkt, Winkel=900 oberhalb des Mittelpunkts etc.Gefllt wird mit der durch FILL COLOR definierten Farbe und dem durch FILL STYLE definierten Fllstil.Die Umrandung ist unabhngig von den Einstellungen durch LINE STYLE und LINE WIDTH immer eine durchgezogene, ein Pixel breite Linie. Die Farbe entspricht der Fllfarbe. Die Umrandung kann mit OUTLINE OFF aus- bzw. OUTLINE ON eingeschaltet werden.Ist mittels CLIP ein Bildfenster definiert, wird auerhalb dieses Bereiches nicht gezeichnet.Siehe auch PELLIPSE, CIRCLE, ELLIPSE.PEEKTyp: FunktionSyntax:PEEK()Erklrung:Liest an der durch numerischen Ausdruck gegebenen Adresse ein Byte.Siehe auch WPEEK, LPEEK, POKE, WPOKE, LPOKE.PELLIPSETyp: BefehlSyntax:PELLIPSE ,,,[,,]PELLIPSE ,,,[,,]Erklrung:Zeichnet um den Mittelpunkt X,Y eine Ellipse mit den angegebenen Radien. Optional knnen Start- und Endwinkel in Zehntel-Graden angegeben werden. Hierbei ist Winkel=0 rechts vom Mittelpunkt, Winkel=900 oberhalb des Mittelpunkts etc.Gefllt wird mit der durch FILL COLOR definierten Farbe und dem durch FILL STYLE definierten Fllstil.Die Umrandung ist unabhngig von den Einstellungen durch LINE STYLE und LINE WIDTH immer eine durchgezogene, ein Pixel breite Linie. Die Farbe entspricht der Fllfarbe. Die Umrandung kann mit OUTLINE OFF aus- bzw. OUTLINE ON eingeschaltet werden.Ist mittels CLIP ein Bildfenster definiert, wird auerhalb dieses Bereiches nicht gezeichnet.Siehe auch PCIRCLE, ELLIPSE, CIRCLE.PITyp: FunktionSyntax:PIErklrung:Gibt die Kreiszahl pi als doppelt-genaue-Fliekomma-Zahl. Beispiel:0 PRINT PI 3.1415926535897932POINTTyp: FunktionSyntax:POINT(,)POINT(,)Erklrung:POINT liefert den Farbwert eines bestimmten Punktes.POKETyp: BefehlSyntax:POKE ,POKE ,Erklrung:Legt Wert an der gegebenen Adresse als ein Byte ab.Der Wert mu zwischen 0 und 255 liegen.Siehe auch WPOKE, LPOKE, PEEK, WPEEK, LPEEK.POSTyp: FunktionSyntax:POS ()Erklrung:Ergibt die Spalte, in der sich der Cursor gerade befindet. Die Spaltenzhlung beginnt bei 0. Der Parameter ist ohne Bedeutung.Siehe auch CSRLIN, LOCATE, @.Beispiel:PRINT "X"*10, POS(0)XXXXXXXXXX 16PRBOXTyp: BefehlSyntax:PRBOX ,{ TO ,|,,}PRBOX ,{ TO ,|,}Erklrung:Zeichnet ein geflltes Rechteck mit abgerundeten Ecken auf den Bildschirm. Dabei sind entweder zwei gegenberliegende Ecken anzugeben, oder eine Ecke, Breite und Hhe des Rechtecks.Gefllt wird mit der durch FILL COLOR definierten Farbe und dem durch FILL STYLE definierten Fllstil.Die Umrandung ist unabhngig von den Einstellungen durch LINE STYLE und LINE WIDTH immer eine durchgezogene, ein Pixel breite Linie. Die Farbe entspricht der Fllfarbe. Die Umrandung kann mit OUTLINE OFF aus- bzw. OUTLINE ON eingeschaltet werden.Ist mittels CLIP ein Bildfenster definiert, wird auerhalb dieses Bereiches nicht gezeichnet.Siehe auch PBOX, RBOX, BOX.PRINT oder PRINT USING, PRINT#, PRINT @Typ: BefehlSyntax:PRINT [[ [TAB(][][{,|;}] ]]PRINT [[ [TAB(][][{,|;}] ]]Erklrung:Der PRINT Befehl dient zur Ausgabe von Ergebissen am Bildschirm. Er kann ber den CMD Befehl auch auf andere Ausgabegerte umgelankt werden. Die Ausgabe lt sich auf verschiedene Weise tabulieren: Trennung bzw. Enden auf:Komma: der Cursor geht zur nchsten Tabulatorposition (8er Spalte)Semikolon: der Cursor bleibt an der letzten SchreibpositonWenn am Ende der PRINT Anweisung weder Komma noch Semikolon erscheinen wird automatisch ein Zeilenvorschub ausgegeben.Eine weitere Tabuliermglichkeit bietet der TAB Befehl. Der Cursor rckt immer auf die angegebene Tabulierspalte vor. Ist diese Spalte durch frhere Ausgaben bereits berschritten, so wird die Cursor-Position nicht verndert.Beispiel:0 PRINT 1,2,31 PRINT 1,2,2 PRINT 33 PRINT TAB (10);1; TAB (20);2PRINT#Typ: BefehlSyntax:PRINT #, [[ [TAB(][][{,|;}] ]]PRINT #, [[ [TAB(][][{,|;}] ]]Erklrung:Genauso wie PRINT dient auch PRINT # der Ausgabe. Es wird auf die durch Dateinummer bestimmte Datei ausgegeben. Siehe PRINT.Beispiel:0 OPEN "O",1,"C:\TEST.DAT"1 PRINT #1,1,2,32 PRINT #1,4,5,63 CLOSE 1PRINT @Typ: BefehlSyntax:PRINT @(,); ...PRINT @(,); ...Erklrung:Ausgabe und Syntax wie bei PRINT. Zustzlich wird eine Startzeile und eine Startspalte angegeben, bei der die Ausgabe beginnt. Die Zhlung fr Zeile und Spalte beginnt bei Null.Grundstzlich liefert die @(,) Funktion einen String, der ber PRINT ausgegeben den Cursor an die entsprechende Position setzt. Diese Funktion kann daher berall da erscheinen, wo eine beliebiger anderer String htte stehen knnen.Beispiel:0 FOR I=0 TO 201 PRINT @(I,2*I);"*"2 NEXT IPRINT USINGTyp: BefehlSyntax:PRINT USING  ...PRINT USING ... Erklrung:PRINT USING dient zur formatierten Zahlenausgabe. Alle Tabuliermglichkeiten und die gesamte Syntax wie bei PRINT. Zustzlich kann an jeder Stelle der USING Befehl gefolgt von einem Steuerstring auftauchen. Die im Steuerstring getroffenen Formatanweisung gelten dann solange fr jede numerische Ausgabe, bis ein neues USING Kommando auftaucht oder der PRINT Befehl zu Ende ist.Formatierungsmglichkeiten:"#" steht fr eine Ziffer"." Dezimal-Punkt an dieser Stelle"," Dezimal-Komma an dieser Stelle"," spter "." Dezimal-Punkt wo angegeben; Tausender mit "," trennen"." spter "," Dezimal-Komma wo angegeben; Tausender mit "." trennen",,," Tausender mit , trennen; keine Nachkomma-Stellen"..." Tausender mit . trennen; keine Nachkomma-Stellen"-" Wenn negativ, Minuszeichen an dieser Stelle"+" Vorzeichen immer an dieser Stelle ausgeben (auch +) Ausnahme zu +/-: Steht das + oder - direkt vor dem ersten #, *, . oder Komma, so wird das Vorzeichen direkt vor der ersten gltigen Stelle ausgegeben."*" vorderes Fllzeichen festlegen. Das _ (underline) darf nicht Fllzeichen sein. Nicht benutzte Ziffernstellen (also #-Zeichen etc.) werden normalerweise als Leerzeichen ausgegeben. Mit z.B. "*0" werden diese Ziffernstellen als Nullen ausgegeben, d.h., man erreicht eine Ausgabe mit fhrenden Nullen."_" gibt das Zeichen aus, auch wenn es sich um ein Zeichen handelt, das normalerweise eine Bedeutung fr den Formatstring htte. "_#" gibt beispielsweise ein "#" aus; dieses "#" ist dann kein Platzhalter fr eine Ziffer."^^^^" Exponent steht an dieser Stelle (erzwingt Exponentialdarstellung)Alle weiteren Zeichen werden so ausgegeben, wie sie sind.Hinweis: Wenn Sie fr das Vorzeichen nicht extra eine Stelle zuweisen, beansprucht es 1 Ziffernstelle fr sich (auch wenn die Zahl positiv ist). Die Formatmaske "###" kann daher nu zweistellige Werte fassen, da eine Stelle immer fr das Vorzeichen reserviert bleibt. Wenn der auszugebende Wert nicht in die Formatmaske pat, so wird die Maske selbst mit einem "%" am Anfang ausgegeben.WICHTIG: PRINT USING rundet nicht, die Nachkommastellen werden einfach abgeschnitten.Einschrnkungen bei PRINT USING:Sie drfen nicht mehr als insgesamt 30 Ziffernplatzhalter definieren. Die Anzahl der Stellen fr den Exponenten darf nicht kleiner sein als 4. Das Zeichen Underline (_) darf nicht Fllzeichen sein. Die gesamte Lnge des Formatstrings darf nicht grer sein als 253 Zeichen.Wenn Sie in einer Zeile, die einen PRINT USING oder USING-Befehl enthlt, einen ?SYNTAX ERROR erhalten, dann knnte das auch an einem fehlerhaften Formatstring (etwa: zwei Vorzeichen) liegen.Beispiel:0 PRINT USING "####.##",1.51 PRINT USING "# # # # #",10002 Betrag!=13450.993 PRINT USING "**.########,## DM",Betrag!4 Betr#=123456789.01#5 PRINT USING "*0### Millionen ### Tausend und ### DM, ## PF-",Betr#6 PRINT USING "##.##### ^^^^"; EXP(10)7 PRINT USING "###### DM",FN Round!(Betrag!,0)8 END9 DEFFN Round!(Betrag!,Stellen)10 LOCAL Scale!=10^Stellen11 RETURN FIX(Betrag!*Scale!+.5)/Scale!12 END_FNPROCTyp: BefehlSyntax:[PROC] [(][[,]][)]Erklrung:Ruft eine selbst definierte Prozedur (siehe DEF PROC) auf. Wie Sie der Syntaxbeschreibung entnehmen knnen, ist die Angabe des Wortes "PROC" optional, d.h. Sie knnen die Prozedur einfach durch Nennung ihres Namens aufrufen. Auch die Angabe der Klammern, die die Parameter einschlieen, ist freigestellt. Ein Prozeduraufruf unterscheidet sich somit kaum von Standard-Befehlen.Beispiel:0 Zentriere "Das ist ein Test"1 Home2 END3 DEF PROC Zentriere(Text$)4 PRINT TAB((W_CHAR-LEN(Text$))/2);Text$;5 END_PROC6 DEF PROC Home ' Cursor in die linke obere Ecke setzen7 PRINT CHR$(27);"H";8 END_PROCPUTTyp: BefehlSyntax:PUT ,{[,,}1: PUT ,2: PUT ,,3: PUT ,Erklrung:Nach Syntax 1 wird ein Datensatz in die durch die Dateinummer gegebene Datei geschrieben.Die Datei mu zuvor mittels OPEN "R" geffnet worden sein.Die geschriebenen Daten setzen sich aus den in FIELD genannten Puffervariablen zusammen. Da die Lnge der Puffervariablen nicht verndert werden darf, empfiehlt sich die Zuweisung mit LSET oder RSET.Nach Syntax 2 bzw. 3 werden die angegebene Anzahl Bytes ab der Speicheradresse bzw. der gegebene Stringausdruckin die mit Dateinummer genannte Datei geschrieben.Die Datei mu zuvor mit OPEN "U" geffnet worden sein.Beispiel:0 A$= SPACE$(20)1 RSET A$="OMIKRON"2 PRINT "*";A$;"*"* OMIKRON*RADTyp: BefehlSyntax:RADErklrung:Schaltet fr trigonometrische Funktionen auf Berechnung nach Bogenma um (0 bis 360). Dies ist auch die Standardeinstellung. Siehe auch DEG.RBOXTyp: BefehlSyntax:RBOX ,{ TO ,|,,}RBOX ,{ TO ,|,}Erklrung:Zeichnet ein nicht geflltes Rechteck mit abgerundeten Ecken auf den Bildschirm. Dabei sind entweder zwei gegenberliegende Ecken anzugeben, oder eine Ecke, Breite und Hhe des Rechtecks. Linienfarbe, Linienstil und Linienbreite knnen ber LINE COLOR, LINE STYLE, bzw. LINE WIDTH bestimmt werden.Ist mittels CLIP ein Bildfenster definiert, wird auerhalb dieses Bereiches nicht gezeichnet.Siehe auch BOX, PRBOX, PBOX.READTyp: BefehlSyntax:READ [[,]]Erklrung:Der Variable wird eine durch DATA definierte offene Zuweisung bergeben. Die offenen Zuweisungen werden der Reihe nach gelesen. Der Zeiger, der auf die nchste zu lesende Zuweisung zeigt, kann jedoch mit RESTORE verschoben werden.Die Zuweisung eines Stringausdrucks an eine numerische Variable oder umgekehrt ist unzulssig.Beispiel:0 DATA "Hund",A$,"Maus",A$1 Inh=22 READ A$3 READ B$4 PRINT A$,B$5 RESTORE 86 READ C$,A7 PRINT C$,A8 DATA "Katze",23*InhHund HundKatze 46REMTyp: BefehlSyntax:REM Erklrung:Durch REM abgetrennte Texte werden vom Basic nicht beachtet und dienen nur dem Programmierer zur Erluterung o.Im Gegensatz zu ' das an jeder Stelle im Programm (auer in durch " " eingeschlossene Teile), mu REM entweder am Zeilenanfang oder hinter einem : stehen. Der Rest dieser Zeile ist dann als Kommentartext gekennzeichnet.RENUMTyp: BefehlSyntax:RENUM [],[][,]RENUM [],[][,]Erklrung:Weist den Programmzeilen eine neue Zeilennummer zu. Gezhlt wird, wenn nicht durch Schrittweite gegeben in Einser-Schritten. Optional kann die Zeilennummer gegeben werden, an der die Neunummerierung beginnen soll, und die erste neue Programmzeile.Auch Sprunganweisungen (GOTO) und Unterprogrammaufrufe (GOSUB) werden entsprechend angepat.REPEATTyp: BefehlSyntax:REPEATErklrung:Leitet die REPEAT-UNTIL Schleife ein. Alle was zwischen REPEAT und UNTIL steht wird solange ausgefhrt bis die Bedingung hinter UNTIL erfllt (<>0) ist. Da die Bedingung erst am Ende des ersten Durchlaufs geprft wird, mu die Schleife mindestens einmal durchlaufen werden, selbst wenn die Bedingung nie erfllt war.Durch Angabe einer nie erfllten Bedingung (die Null) kann die REPEAT-UNTIL Schleife auch als Endlosschleife verwendet werden, die nur mit EXIT verlassen werden kann.Beispiel:0 REPEAT1 I+=12 PRINT I3 UNTIL I>44 REPEAT5 INPUT "Geben Sie eine Zahl ein:";Zahl6 Summe+=Zahl7 IF Zahl=0 THEN EXIT8 UNTIL 09 PRINT SummeRESERVEDTyp: FunktionSyntax:RESERVED()Erklrung:RESERVED ermglich den Zugriff auf interne Speicherbereiche des Interpreters bzw. Compilers. Insbesondere ergibt RESERVED(0) den Rckgabewert (das Register D0) des letzten Maschinenprogramms, das mit CALL aufgerufen wurde.Ein weiteres wichtiges Flag wird ber RESERVED(4) erreicht. Setzt man dieses Flag mit "POKE RESERVED(4),1", so wird im Compilat eine INPUT USING Anweisung abgebrochen. Der Rckgabewert lautet in diesem Fall -3.Beispiel:0 ON TIMER 10 GOSUB Tim1 INPUT "Sie haben 10 sec.Sekunden Zeit:";Eingabe$ USING "a0m",Ret,30,P2 PRINT3 IF Ret = -3 THEN PRINT "Zu lange gewartet" ELSE PRINT Eingabe$4 END5 -Tim6 POKE RESERVED(4),17 RETURNRESTORETyp: BefehlSyntax:RESTORE []Erklrung:Der Zeiger, der auf die nchste durch READ zu lesende offene Zuweisung zeigt wird verschoben. Er zeigt auf die erste durch DATA definierte offene Zuweisung, die hinter der  erscheint.RESTORE alleine verschiebt den Zeiger auf die erste berhaupt im Programm erscheinende offene Zuweisung. Dort steht der Zeiger auch zu Programmbeginn.Beispiel:0 DATA "Katze","Maus"1 DATA "Hund","Maus"2-Bleistift3 DATA "Radiergummi"4 READ A$: PRINT A$5 RESTORE 5-46 READ B$: PRINT B$7 RESTORE Bleistift8 READ C$: PRINT C$9 RESTORE10 READ D$,E$,F$: PRINT D$,E$,F$KatzeHundRadiergummiKatze Maus HundRESUMETyp: BefehlSyntax:RESUME [{NEXT|}]Erklrung:RESUME beendet eine mit ON ERROR definierte Fehlerroutine. Der Befehl, der den Fehler ausgelst hat wird erneut ausgefhrt. Bei RESUME NEXT wird der verursachende Befehl bersprungen und beim nchsten fortgefahren. Soll das Programm an andere Stelle fortgesetzt werden, so ist auch die Angabe einer Sprungmarke mglich. RESUME mit Sprungmarke verlt keine Strukturen oder Unterprogramme, die Sprungmarke mu also immer in derselben Hierachieebene liegen in der auch der Fehler erfolgte.Beispiel: 0 ON ERROR GOTO Fehler 1 PRINT 1/0 2 PRINT LN(-1) 3 END 4-Fehler 5 MOUSEON 6 FORM_ALERT (1,"[2]["+ ERR$ +"|in Zeile"+ STR$( ERL )+"][Nochmal|Weiter|Abbruch]",F_But) 7 MOUSEOFF 8 IF F_But=1 THEN RESUME 9 IF F_But=2 THEN RESUME NEXT10 IF F_But=3 THEN RESUME Fatal11-Fatal12 PRINT "Fataler Fehler erzwang Programmabbruch:"13 PRINT ERR$ ;" in Zeile"; ERL14 ENDRETURNTyp: BefehlSyntax:RETURN []Erklrung:RETURN verlt eine Prozedur oder ein Unterprogramm. RETURN mit Angabe eines Ausdrucks verlt eine mehrzeilige Funktion und gibt den Ausdruck als Funktionswert zurck. Der Programmablauf wird an der Stelle fortgesetzt, von der aus der Aufruf erfolgt ist. Wird ein RETURN ausgefhrt ohne da ein Aufruf erfolgte so wird ein "RETURN without GOSUB" ausgelst.Prozeduren knnen (und sollten) auch mit END_PROC abgeschlossen werden, wobei pro Prozedur allerdings nur ein END_PROC verwendet werden sollte, damit Anfang und Ende einer Prozedur klar definiert sind.Ebenso steht fr Funktionen der Befehl END_FN zu Verfgung. Dieser steht nur als Ende der Funktionsdefinition und gibt selbst keine Werte zurck. Trotzdem sollte er stets verwendet werden, um das Ende einer Funktion (speziell mit mehreren Ausgngen) klar zu kennzeichnen.RETURN darf nicht innerhalb einer Struktur wie REPEAT-UNTIL, FOR-NEXT, WHILE-WEND oder SELECT-CASE aufgerufen werden. Es mu vielmehr immer zuerst die Struktur per EXIT verlassen und dann mit RETURN zurckgesprungen werden.Beispiel:0 PRINT FN Fib(10)1 END2 DEF FN Fib(N)3 IF N>2 THEN4 RETURN FN Fib(N-1)+FN Fib(N-2)5 ELSE6 RETURN 17 ENDIF8 END_FN 55RIGHT$Typ: FunktionSyntax:RIGHT$(,)Erklrung:Ergibt einen Teilstring des Stringausdrucks mit der durch den numerischen Ausdruck gegebenen Lnge. Der Teilstring endet am letzten Zeichen des Stringausdrucks.Ist der numerische Ausdruck grer als die Lnge des String-Ausdrucks, so wird der gesamte String zurckgegeben.Siehe auch LEFT$, MID$.Beispiel:0 A$="OMIKRON.Software"1 PRINT RIGHT$(A$,8)SoftwareRMDIRTyp: BefehlSyntax:RMDIR RMDIR Erklrung:Entfernt einen Ordner, vorausgesetzt darin sind weder Dateien noch Unterordner enthalten.RNDTyp: FunktionSyntax:RND()Erklrung:Ergibt eine Zufallszahl in Abhngigkeit vom numerischen Ausdruck: 0 : Letzte Zufallszahl wiederholen 1 : Wert von einschlielich 0 bis ausschlielich 1sonst: ganzer Wert zwischen 0 und dem numerischen Ausdruck, wobei der grere von beiden nicht erreicht wird.Beispiel:PRINT RND(10) ?? (Zufallszahl)RSETTyp: BefehlSyntax:RSET =Erklrung:Der Stringausdruck wird rechtsbndig in String-Variable eingesetzt ohne da deren Lnge verndert wird. Hierzu wird der Stringausdruck vorne abgeschnitten oder durch Leerzeichen ergnzt.Siehe auch LSET.Beispiel:RUNTyp: BefehlSyntax:RUN [] [,]RUN [] [,]Erklrung:RUN startet das aktuelle Basic-Programm. Alle Variablen werden gelscht und alle Strukturen des Programms geprft. Das Programm kann nur gestartet werden, wenn die Strukturprfung erfolgreich beendet wurde, ansonsten erscheint eine Fehlermeldung.Mit der Angabe einer Marke kann man bestimmen ab welcher Position im Programmtext das Programm gestartet wird.Wird ein Programmname hinzugefgt, so wird zunchst das neue Programm geladen und dann gestartet. Das aktuelle Programm wird zuvor ohne Sicherheitsabfrage gelscht. Beispiel:RUN Test ' startet ab der Marke "Test"RUN 20 ' startet ab Zeile 20RUN "DEMO" ' ldt und startet das Programm "DEMO.BAS"SAVETyp: BefehlSyntax:SAVE [][,A]SAVE [][,A]Erklrung:Das aktuelle Basic-Programm wird unter Dateiname gesichert. Ist kein Dateiname angegeben, so wird der alte Name benutzt. Das Programm kann auch als ASCII-Datei gespeichert werden, dann mu ,A angegeben werden. Siehe auch LOAD.Wenn im Vollbildeditor die Option fr automatisches Backup angewhlt ist, erhlt eine auf dem gleichen Pfad befindliche Datei mit gleichem Namen (altes Programm) die Extension .BAK. Ein altes .BAK wir dann gelscht. SECTyp: FunktionSyntax:SEC()Erklrung:Berechnet den secans des numerischen Ausdrucks. Das Ergebnis ist abhngig vom eingestellten Winkelmodus (siehe DEG, RAD).Beispiel:RAD : PRINT SEC( .5) 1.1394939SECHTyp: FunktionSyntax:SECH()Erklrung:Berechnet den secans hyperbolicus des numerischen Ausdrucks.Beispiel:PRINT SECH(1) .64805427SELECTTyp: BefehlSyntax:SELECT Erklrung:Mit SELECT wird die SELECT-CASE Anweisung eingeleitet. Der hinter SELECT stehende Ausdruck wird ausgewertet und auf eine Integer-Zahl abgebildet. Bei Stringausdrcken sind nur die ersten vier Zeichen von Belang. Abhngig von diesem einmal ermittelten Wert wird in die folgenden CASE-Teile verzweigt. Der Ausdruck wird nur einmal zu Beginn bewertet, d.h. wenn er spter noch einmal modfiziert wird, hat das keine Auswirkungen mehr auf die SELECT-CASE Verzwigungen.SEGPTRTyp: FunktionSyntax:SEGPTRErklrung:Die Funktion SEGPTR liefert einen Zeiger auf eine interne Tabelle, die wiederum Zeiger auf verschiedene - vom Basic-Interpreter verwaltete - Speicherbereiche enthlt. Die Benutzung dieser Zeiger sollte dem Spezialisten vorbehalten bleiben.Offset Speicherbereich 0 Zeilen-Nummern-Tabelle 4 Start des BASIC-Programmes 8 Variablenpointer-Tabelle 12 Variablen-Tabelle 16 Reserviert 20 Arrays 24 Dateibuffer 28 Strings 32 Frei 36 Programm-Zeiger zeigt auf den gerade ausgefhrten Befehl 40 Garbage-Top 44 Garbage-Bottom 48 Garbage-High 52 Stack-Maximalwert (unterhalb davon noch 1K fr OS) 56 Stack-Bottom 60 Hchste Speicheradresse des BASIC (einstellbar mit CLEAR)SGNTyp: FunktionSyntax:SGN()SGN( X )Erklrung:Die Signum-Funktion liefert:-1 fr X < 00 fr X = 01 fr X > 0Beispiel:PRINT SGN(7), SGN(-6), SGN(0) 1 -1 0SHLTyp: OperatorSyntax: SHL  SHL Erklrung:Verschiebt bitweise nach links. Die hchstwertigsten Bits gehen verloren. Im niederwertigsten Bit wird eine Null nach geschoben. Anzahl mu zwischen 0 und 31 liegen sonst wird ein "Ill. function call" ausgelst.SHL vermittelt eine vorzeichenlose Integer-Multiplikation mit Zweierpotenzen ("X SHL Y" entspricht "X*(2^Y)"). Beispiel:PRINT 4 SHL 2,1 SHL 1016 1024SHRTyp: OperatorSyntax: SHR  SHR Erklrung:Verschiebt bitweise nach rechts. Die niederwertigsten Bits gehen verloren. Im hchstewertigen Bit wird eine Null nach geschoben. Anzahl mu zwischen 0 und 31 liegen sonst wird ein "Ill. function call" ausgelst.SHR vermittelt eine vorzeichenlose Integer-Division durch Zweierpotenzen ("X SHR Y" entspricht "X\(2^Y)"). Beispiel:PRINT 81 SHR 2,64 SHR 120 32SINTyp: FunktionSyntax:SIN()Erklrung:Berechnet den sinus des numerischen Ausdrucks. Das Ergebnis ist abhngig vom eingestellten Winkelmodus (siehe DEG, RAD).Beispiel:SINHTyp: FunktionSyntax:SINH()Erklrung:Berechnet den sinus rbolicus des numerischen Ausdrucks.Beispiel:PRINT SINH(10) 11013.233SORTTyp: BefehlSyntax:SORT [ASC] ([]) [TO ([])]SORT [ASC] ([]) [TO ([])]Erklrung:SORT sortiert ein eindimensionales Feld. Die Feldelemente werden in aufsteigender Reihenfolge angeordnet. Bei Stringfeldern wird streng nach DIN sortiert, d.h. Gro- und Kleinschreibung bleibt unbercksichtigt. Alle Umlaute werden wie die ausgeschriebenen Buchstabenkombinationen behandelt ( = AE, = OE ...). Wenn MODE "D" eingestellt ist, wird zustzlich "" wie "ss" einsortiert.Wenn nur nach ASCII-Werten sortiert werden soll, ist der Zusatz ASC anzugeben.Folgt hinter dem SORT-Befehl ein TO mit einem weiteren Feldbezeichner, so wird dieses Feld mit umsortiert. Auf diese Weise knnen Indexfelder einfach verwaltet werden.Anzahl gibt die Zahl der Element an, die sortiert werden soll. Wird 0 angegeben, so wird das gesamte Feld sortiert. Das weglassen des Anzahlparameters, wirkt als htten sie den hchsten Index angegeben. Es wird alles, bis auf das letzte Element sortiert.Beispiel:0 DIM Werte(10)1 FOR I=0 TO 102 Werte(I)= RND(10)3 NEXT I4 '5 SORT Werte(0)6 '7 FOR I=0 TO 108 PRINT Werte(I)9 NEXT I 0 DIM Texte$(11) 1 ' 2 REPEAT 3 INPUT "beliebiger Text [Return]->ENDE : ";Texte$(N) 4 IF LEN(Texte$(N))=0 THEN EXIT 5 N+=1 6 UNTIL N>10 7 ' 8 SORT Texte$(N) 9 '10 FOR I=0 TO N11 PRINT Texte$(I)12 NEXT ISPACE$Typ: FunktionSyntax:SPACE$()Erklrung:Ergibt einen mit Leerzeichen (CHR$(32)) gefllten String mit der durch den numerischen Ausdruck gegebenen Lnge. Die Funtion ist identisch zu SPC$.Siehe auch STRING$.Beispiel:PRINT "*";SPACE$(14);"*"* *SPCTyp: FunktionSyntax:SPC()Erklrung:Ergibt einen mit Leerzeichen (CHR$(32)) gefllten String mit der durch den numerischen Ausdruck gegebenen Lnge. Die Funktion ist identisch zu SPACE$.Siehe auch STRING$.Beispiel:PRINT "*";SPC(14);"*"* *SQRTyp: FunktionSyntax:SQR()Erklrung:Berechnet die Quadratwurzel des numerischen Ausdrucks. Der numerische Ausdruck mu ein positiver Wert sein.Beispiel:PRINT SQR(2.), SQR(2#) 1.4142136 1.414213562373095STOPTyp: BefehlSyntax:STOPErklrung:STOP bricht die Programmausfhrung mit der Fehlermeldung "?Break in ..." ab. Der Interpreter schaltet automatisch in den Direktmodus. Es ist nun mglich beliebige Befehle direkt auszufhren, um so z.B. Variableninhalte (DUMP), bestimmte Feldelemente oder Speicherbereiche zum Zweck der Fehlersuche anzuschauen. Auch ein Wechseln in den Vollbildeditor ist mglich. Das Programm kann jederzeit mit CONT wieder fortgesetzt werden, solange das Programm nicht gendert wurde. Wurde zuvor mit DEFER eine Stelle im Programmtext markiert, wird statt im Direktmodus abzubrechen, das Programm an der markierten Stelle fortgesetzt.Siehe auch DEFER, CONT.Beispiel:0 REPEAT1 IF RND(20)>18 THEN STOP2 Count+=13 UNTIL 0 ' endlos? Break in 1STR$Typ: FunktionSyntax:STR$()Erklrung:STR$ wandelt den numerischen Ausdruck in einen String um. STR$ ist also das Gegenstck zu VAL. Bei der Umwandlung werden alle mit USING getroffenen Einstellungen beachtet. Der erzeugte String sieht also genauso aus, wie das, was PRINT USING ausgeben wrde.STR$ wandelt immer ins Dezimal-Format gegebenenfalls in Exponentialdarstellung. Zur Wandlung in andere Zahlensysteme verwenden Sie HEX$, OCT$ oder BIN$.Siehe auch VAL, USING, HEX$, OCT$, BIN$.Beispiel:0 Pi$=STR$(PI)1 USING " DM ###.##"2 Betrag$=STR$(12.121)3 USING ' abschalten4 PRINT Pi$,Betrag$ 3.1415926535897932 DM 12.12STRING$Typ: FunktionSyntax:STRING$(,{|})STRING$(,{ASCII-Code|}Erklrung:Erzeugt einen String der Lnge Anzahl, in dem das durch String-Ausdruck oder seinem entsprechenden ASCII-Code (siehe ASCII-Tabelle) gegebene Zeichen entsprechend oft vorkommt. Es gilt nur das erste in Stringausdruck vorkommende Zeichen. Siehe auch SPACE$, SPC$, *.Beispiel:PRINT STRING$(10,"*"),STRING$(10,240)********** SWAPTyp: BefehlSyntax:SWAP ,Erklrung:Vertauscht die Inhalte der beiden gegebenen Variablen. Die beiden Variablen mssen identischen Variablentyps sein. Ein Tausch einer Feldvariable mit einer nicht-Feldvariable ist nur beim Typ Integer-Langwort erlaubt.Beispiel:0 A=10:B=201 SWAP A,B2 PRINT A,B 20 10SYSTEMTyp: BefehlSyntax:SYSTEMErklrung:Verlt OMIKRON.Basic und kehrt zum aufrufenden Programm zurck. Vor der tatschlichen Ausfhrung wird der Benutzer aufgefordert, den Befehl zu besttigen. Enthlt diese Sicherheitsabfrage den Zusatz "Changes will be lost" so wurde das aktuelle Programm noch nicht gesichert. Wenn Sie trotzdem fortfahren ist die letzte nderung bzw. das aktuelle Programm verloren.Beispiel:SYSTEMQuit BASIC - Changes will be lost - sure (Y/N)?TABTyp: FunktionSyntax:TAB()Erklrung:Diese Funktion tabuliert Ausgaben von PRINT, LPRINT oder PRINT #. Der numerische Ausdruck gibt die neue Ausgabespalte an auf die der Schreibzeiger vorrckt. Es werden soviele Leerzeichen ausgegeben, bis die gewnschte Spalte erreicht ist.Siehe auch @, SPC, PRINT.Beispiel:0 PRINT TAB(10);"10. Spalte";TAB(25);"25. Spalte"1 PRINT TAB(10);1.256;TAB(25);3.6589 10. Spalte 25. Spalte 1.256 3.6589TANTyp: FunktionSyntax:TAN()Erklrung:Berechnet den tangens des numerischen Ausdrucks. Das Ergebnis ist abhngig vom eingestellten Winkelmodus (siehe DEG, RAD).Beispiel:RAD: PRINT TAN(PI / 8) .41421356237309505TANHTyp: FunktionSyntax:TANH()Erklrung:Berechnet den tangens hyperbolicus des numerischen Ausdrucks.Beispiel:PRINT TANH(.5) .46211716TEXTTyp: BefehlSyntax:TEXT ,,[,,,]TEXT ,,[,,,]Erklrung:Dieser Befehl gibt einen formatierten Grafik-Text. Die Koordinaten X und Y erlauben pixelgenaues Positionieren des Textes. Die Koordinaten beziehen sich immer auf die linke untere Ecke des Textes.Wenn Textbreite und Formatflags mit angegeben sind, wird je nach Einstellung zustzlich Formatiert. Ist mindestens eines der beiden Flags auf eins gesetzt so werden Wort- oder Buchstabenzwischenrume gedehnt, so da ein ausgeglichener Blocksatz entsteht.Textfarbe, Stil, Gre und Ausrichtung knnen ber TEXT COLOR, TEXT STYLE, TEXT HEIGHT bzw. TEXT ROTATION bestimmt werden.Ist mittels CLIP ein Bildfenster definiert, wird auerhalb dieses Bereiches nicht gezeichnet.Beispiel:0 TEXT 10,23,"Dieser lange Satz soll genau in den Kasten passen",420,1,01 BOX 9,9,422,182 PRINT : PRINTTEXT COLORTyp: BefehlSyntax:TEXT COLOR = TEXT COLOR = Erklrung:Definiert die Schriftfarbe fr Grafik-Text.HEIGHTTEXT HEIGHTTyp: BefehlSyntax:TEXT HEIGHT = TEXT HEIGHT = Erklrung:Setzt die Text-Hhe des Grafik-Textes. Die Hhenangabe in Punkten wird vom VDI anhand der Hhenangabe im Dateikopf der Systemzeichenstze umgerechnet. Eine Punktgrsse von 4 ergibt die 6x6 Schrift, 6 die 8x8 Schrift, 13 die 8x16 Schrift und ?? die 16x32 Schrift (standardmig nur bei ATARI TT vorhanden). Ist eine passende Schriftgrsse nicht direkt als fertiges Pixelmuster verfgbar, versucht das VDI durch Vergern oder Verkleinern einer benachbarten Schriftgre die Lcke zu schlieen. Das Ergebnis zeigt das Beispielprogramm: es kann durchaus vorkommen, da eine 12 Punkt Schrift grer ist als eine 13 Punkt Schrift. Beispiel:0 FOR Text_H=2 TO 171 TEXT HEIGHT =Text_H2 TEXT 10,Y+5, STR$(Text_H)+" Punkt Textprobe"3 Y+=Text_H*24 NEXT Text_HROTATIONTEXT ROTATIONTyp: BefehlSyntax:TEXT ROTATION = TEXT ROTATION = Erklrung:Legt den Neigungswinkel fr Grafiktext fest. Abhngig vom Workstationtreiber ist die Einstellung des Winkels nur eingeschrnkt mglich. Der Standard-Bildschrim-Treiber fr ATARI ST/TT kann z.B. nur 90 Grad-Schritte. Die Winkelangabe erfolgt in 1/10 Grad (d.h. 900 entspricht 90 Grad).Beispiel:TEXT ROTATION = 2700TEXT 10,10,"Der Text geht nach unten"TEXT STYLETyp: BefehlSyntax:TEXT STYLE=TEXT STYLE=Erklrung:Definiert die Stil-Attribute des mit TEXT auszugebenden Grafiktextes. Dabei steht jedes Bit in Stil-Attribut fr einen Texteffekt. Ist es gesetzt, so wird der Effekt verwendet. Beliebige Kombinationen sind zulssig.Bit Wertigkeit Effekt 0 1 fett 1 2 hell 2 4 kursiv 3 8 unterstrichen 4 16 outline (Umrilinie)Die TEXT STYLE Einstellung betrifft nur die Ausgaben mit dem Befehl TEXT. Auf den Befehl PRINT haben sie keinen Einflu. Beispiel:0 TEXT STYLE = 11 TEXT 10,10,"Dieser TEXT erscheint fett"2 TEXT STYLE = 4 + 163 TEXT 10,20,"Dieser TEXT hingegen kursiv & outlined"TIME$Typ: BefehlSyntax:TIME$=Erklrung:Weist der Systemuhr die Zeit Stringausdruck zu.Stringausdruck ist unabhngig vom Lndermodus (siehe MODE) anzugeben (0 Uhr bis 23:59:59):"HH.MM.SS"(H=Stunde, M=Minute, S=Sekunde)Die mit TIMER ermittelbare Rechner-Laufzeit wird nicht beeinflut. oderTIME$Typ: FunktionSyntax:TIME$ Erklrung:Gibt die Systemuhr in folgender Form als String:"HH.MM.SS"(H=Stunde, M=Minute, S=Sekunde)Das Ergebnis ist nicht abhngig vom ber MODE eingestellbaren Lndermodus.TIMERTyp: FunktionSyntax:TIMERErklrung:Ergibt die Laufzeit des Rechners seit dem Einschalten in 1/200 stel Sekunden.Beispiel:0 T=TIMER1 FOR I=0 TO 1000002 NEXT I3 PRINT (TIMER-T)/200 3.675TROFFTyp: BefehlSyntax:TROFFErklrung:TROFF schaltet den TRACE-Modus des Interpreters ab.WICHTIG: Innerhalb des Programms kann TRON und TROFF geschachtelt werden, d.h. pro Einschaltvorgang durch TRON ist auch ein Ausschaltvorgang durch TROFF notwendig.Im Direkt-Modus wird durch TROFF der TRACE-Modus in jedem Fall ausgeschaltet.Siehe auch TRON.TRONTyp: BefehlSyntax:TRONErklrung:TRON schaltet den TRACE-Modus des Interpreters ein. Dadurch wird vor der Ausfhrung eines jeden Befehls die Zeilennummer und der Befehl am Bildschirm ausgegeben. Wenn Sie den Programmablauf ber weite Strecken kontrollieren mchten, achten Sie darauf, da der automatische Zeilenumbruch eingeschaltet ist. Ansonsten schaut sich quasi die Ausgabe am rechten Bildschirmrand. Den automatischen Umbruch aktivieren Sie mit PRINT CHR$(27);"v";.Wurde mit ON TRON GOSUB ein spezielles TRACE-Unterprogramm definiert so wird bei jedem Befehl dieses Unterprogramm durchlaufen. TROFF schaltet den TRACE-Modus wieder ab und setzt die normale Programmausfhrung fort.WICHTIG: Innerhalb des Programms kann TRON und TROFF geschachtelt werden, d.h. pro Einschaltvorgang durch TRON ist auch ein Ausschaltvorgang durch TROFF notwendig.Siehe auch VT-52-Liste, ON TRON GOSUB, TROFF.Beispiel:0 TRON:PRINT CHR$(27);"v";1 REPEAT2 UNTIL LEN(INKEY$)3 ENDTUNETyp: BefehlSyntax:TUNE ,[[,,]]TUNE ,[[,,]]Erklrung:Den angegebenen Tonkanlen wird die Frequenz zugewiesen. Tonkanal mu ein wert von 1 bis 3 sein, Frequenz mu ein Wert von 0 bis 4095 sein. 0 schaltet den Ton ab, 1 ist der hchste und 4095 der tiefste Ton.Um den Ton zu hren mu den entsprechenden Kanlen mittels VOLUME eine Lautstrke zugewiesen werden.Siehe auch NOISE.Beispiel:0 Conterm=$4841 Conterm_Rett= PEEK(Conterm)2 POKE Conterm,03 T=0:Dt=14 VOLUME 1,155 REPEAT6 TUNE 1,T7 T+=Dt8 IF T=4095 OR T=0 THEN Dt*=-19 UNTIL LEN( INKEY$ )10 VOLUME 1,011 POKE Conterm,Conterm_RettUNTILTyp: BefehlSyntax:UNTIL UNTIL Erklrung:Beeendet die REPEAT-UNTIL-Schleife. Ist die Abbruch-Bedingung nicht erfllt so wird die Schleife nocheinmal ausgefhrt.Siehe auch REPEAT-UNTIL.UPPER$Typ: FunktionSyntax:UPPER$()Erklrung:Wandelt alle im Stringausdruck enthaltenen Buchstaben in groe Buchstaben um. Ist MODE "D" eingestellt, so werden auch die Umlaute , , gewandelt.Gegenstck zu dieser Funktion ist LOWER$.USING oder INPUT USINGTyp: BefehlSyntax:USING []Erklrung:Stellt das Ausgabeformat fr die Befehle PRINT, LPRINT, PRINT# und die Funktion STR$ ein. USING allein ohne Stringausdruck schaltet wieder auf normale Ausgabe zurck. Welche Zeichen der Stringausdruck enthalten darf und wie diese wirken sehen Sie bitte unter PRINT USING nach.USRTyp: FunktionSyntax:USR()Erklrung:Die mit DEF USR definierte Maschinensprachefunktion wird aufgerufen. Der Parameter wird im Register D0 bergeben. Der im Register D0 erhaltene Wert wird als Funktionsergebnis an das Basic-Programm zurckgegeben.VALTyp: FunktionSyntax:VAL()Erklrung:Der Stringausdruck wird nach Mglichkeit in ein numerisches Ergebnis umgewandelt. Dabei wird solange von links nach rechts gelesen, bis kein gltiges Zahlzeichen mehr folgt. Fhrende Leerzeichen werden berlesen.Gltige Zahlzeichen sind: $ & % 0 1 2 3 4 5 6 7 8 9 + - . D E VAL kann durch hinzufgen der Prefixe "$" oder "%" auch zum Wandeln zwischen verschiedenen Zahlensystemen benutzt werden (z.B. HEX -> Dezimal).Beispiel:0 Hex_In$="0u+A+B+C+D+E+F"1 INPUT "Geben Sie eine HEX-Zahl ein : ";Zahl$ USING Hex_In$,,22 PRINT3 Zahl$= RIGHT$("000"+Zahl$,3)4 PRINT Zahl$;"h ist Dezimal: "; VAL("$"+Zahl$)VARPTRTyp: FunktionSyntax:VARPTR()Erklrung:Die Funktion entspricht exakt dem Adress-Operator & und ermittelt einen Zeiger auf die Variable. Bei Feldvariablen haben die Indices keine Bedeutung und knnen deshalb entfallen.Dieser Zeiger stellt jedoch nicht in jedem Fall direkt die Adresse der zugehrigen Variablen dar. Zudem werden Variablen vom Interpreter und Compiler unterschiedlich verwaltet. Deshalb sollte der Zugriff ber diesen Zeiger immer ber den Zeiger-Operator * erfolgen. Direktes Verwenden oder gar Manipulieren des Zeigers erfordert eine genaue Kenntnis der Speicherverwaltung von Interpreter und Compiler (siehe Anhang).Beispiel: 0 ' grtes Element suchen 1 DIM Werte#(10) 2 PRINT FN Get_Max#(VARPTR(Werte#()),5) ' nur die ersten 5 3 END 4 DEF FN Get_Max#(Pointer,N) 5 LOCAL I,Maximum#=0# 6 FOR I=0 TO N 7 Maximum#=MAX(*Pointer#(I),Maximum#) 8 NEXT I 9 RETURN Maximum#10 END_FN0VDITyp: BefehlSyntax:VDI(, , , , , )VDI(, , , , , )Erklrung:Mit dem Befehl VDI rufen Sie GEM VDI (Graphik Environment Manager - Virtual Device Interface) auf. Die einzelnen Funktionen des GEM VDI schlagen Sie bitte im Anhang nach.Fr VDI- und AES-Befehle benutzen Sie einfacher die GEM- oder EasyGEM-Library.VOLUMETyp: BefehlSyntax:VOLUME ,{|,}VOLUME ,{|,}Erklrung:Dem angegebenen Tonkanal wird eine Lautstrke oder eine Hllkurve und deren Intervall zugewiesen. Tonkanal mu ein Wert von 1 bis 3 sein, Lautstrke von 0 (Ton aus) bis 15 (maximale Lautstrke).Wird statt der Laustrke Hllkurve gegeben, so sind folgende Werte mglich:8 : an, fallend, an, fallend, ...9 : an, fallend, aus10: an, fallend, steigend, fallend, steigend, ...11: an, fallend, an12: aus, steigend, aus, steigend, ...13: aus, steigend, an14: aus, steigend, fallend, steigend, fallend, ...15: aus, steigend, ausIntervall mu ein Wert zwischen 0 und 65535 sein. Je kleiner Intervall ist, desto schneller luft die Hllkurve ab.Bei Verwendung einer Hllkurve werden die Lautstrken aller drei Tonkanale gleichzeitig gesteuert.Bei der Verwendung von Sound-Befehlen sollte der Tastaturklick mittels der Betriebsystemvariable comterm abgeschaltet werden.Beispiel:0 Conterm=$4841 Conterm_Rett= PEEK(Conterm)2 POKE Conterm,03 V=0:Dv=14 TUNE 1,10005 REPEAT6 WAIT .027 VOLUME 1,V8 V+=Dv9 IF V=15 OR V=0 THEN Dv*=-110 UNTIL LEN( INKEY$ )11 VOLUME 1,012 POKE Conterm,Conterm_RettWAITTyp: BefehlSyntax:WAIT Erklrung:Wartet die im numerischen Ausdruck genannte Zeit in Sekunden. Der Fehler betrgt +/- 1/200 stel Sekunde.Die Multitasking-Funktionen ON HELP GOSUB, ON KEY GOSUB, ON MOUSEBUT GOSUB und ON TIMER GOSUB werden jedoch whrenddessen weiterbearbeitet.Beispiel:0 T=TIMER1 REPEAT2 PRINT "Diese Schleife luft genau 5 Sekunden"3 WAIT .54 UNTIL TIMER>T+200*5WENDTyp: BefehlSyntax:WENDErklrung:Beendet die WHILE-WEND Schleife.Siehe WHILE-WEND.WHILETyp: BefehlSyntax:WHILE  : : WENDWHILE : : WENDErklrung:Mit WHILE wird eine Programmschleife eingeleitet, die solange, die von ihr abhngigen Befehle wiederholt, bis der logische Ausdruck (die Bedingung) nicht mehr erfllt (falsch, gleich 0) ist. Die Bedingung wird immer am Anfang der Schleife geprft, d.h. die WHILE-WEND-Schleife ist eine abweisende Schleife. Wenn die Bedingung gleich zu Anfang nicht erfllt ist wird keine der abhngigen Befehle ausgefhrt und zum Ende der Schleife (hinter das WEND) verzweigt.Beispiel: 0 OPEN "I",1,"C:\DESKTOP.INF" 1 WHILE NOT EOF(1) 2 PRINT INPUT$(1,1); 3 WEND 4 CLOSE 1 5 PRINT "Bitte geben sie mehrere Wrter durch Leerzeichen getrennt ein: " 6 INPUT Satz$ 7 P=INSTR(Satz$," ") 8 WHILE P 9 PRINT "Leerzeichen gefunden an Position:"; P10 P=INSTR(P,Satz$," ")11 WENDWPEEKTyp: FunktionSyntax:WPEEK()Erklrung:Liest an der durch numerischen Ausdruck gegebenen Adresse ein Wort. Der numerische Ausdruck mu durch zwei teilbar sein, dasonst ein Bus-Fehler auftritt. Der gelesene Wert wird immer als Zweierkomplement-Darstellung einer Integer-Wort-Zahl aufgefat und liegt im Bereich von -32768 bis +32767.Siehe auch PEEK, LPEEK, POKE, WPOKE, LPOKE.Beispiel:0 Speicher=MEMORY(10)1 WPOKE Speicher,$FFFF2 PRINT WPEEK(Speicher) -1WPOKETyp: BefehlSyntax:WPOKE ,WPOKE ,Erklrung:Legt Wert an der gegebenen Adresse als ein Langwort ab. Der numerische Ausdruck mu durch zwei teilbar sein, dasonst ein Bus-Fehler auftritt.Der Wert mu zwischen 0 und 65535 liegen. Negative Werte grer-gleich -32768 sind auch zulssig und gelten als Zweier-Komplement (-1=65535, -2=65534, -3=65533, ...).Siehe auch POKE, LPOKE, PEEK, WPEEK, LPEEK.Beispiel:0 Speicher=MEMORY(10)1 WPOKE Speicher,$FFFF2 WPOKE Speicher+2,-13 WPOKE Speicher+4,65500WRITETyp: BefehlSyntax:WRITE [[,]]WRITE [[,]]Erklrung:WRITE gibt wie PRINT beliebige Ausdrcke auf dem Bildschrim aus.Stringausdrcke werden in Anfhrungszeichen gesetzt und alle Ausgaben durch Kommata getrennt.Beispiel:0 Test$="OMIKRON.Software"1 WRITE ,Test$,PI,1.23"OMIKRON.Software", 3.1415926535897932, 1.23WRITE #Typ: BefehlSyntax:WRITE #,[[,]]WRITE #,[[,]]Erklrung:WRITE # gibt - hnlich wie PRINT # - beliebige numerische oder String-Ausdrcke in eine Datei aus. Die Datei mu zuvor mit OPEN geffnet worden sein. Im Vergleich zu PRINT # setzt WRITE # alle Stringausdrcke in Anfhrungszeichen und trennt alle Ausdrcke durch Kommata ab. Das hat besonders beim Schreiben von Dateien, die mit INPUT # wieder gelesen werden sollen, groe Vorteile.Siehe auch PRINT #, INPUT #Beispiel:0 Test$="OMIKRON.Software"1 OPEN "C",12 WRITE #1,Test$,PI,1.233 CLOSE 1"OMIKRON.Software", 3.1415926535897932, 1.23WVBLTyp: BefehlSyntax:WVBLErklrung:Wartet auf einen Vertical-Blank-Interrupt.Die Multitasking-Funktionen ON HELP GOSUB, ON KEY GOSUB, ON MOUSEBUT GOSUB und ON TIMER GOSUB werden jedoch whrenddessen weiterbearbeitet.W_CHARTyp: FunktionSyntax:Diese Funktion ergibt die Breite des Bildschirms in Zeichen. Der Wert entspricht den Informationen, die vom VDI bei Inquire Character Cells geliefert werden.W_PIXELTyp: FunktionSyntax:Diese Funktion ergibt die Breite des Bildschirms in Pixeln. Der Wert entspricht den Informationen, die vom VDI bei V_Opnvwk geliefert werden.XBIOSTyp: BefehlSyntax:XBIOS[(][],[[,[L ]]][)]XBIOS[(][], [[,[L ]]][)]Erklrung:Die in Funktionsnummer genannte XBIOS-Funktion wird aufgerufen und die Parameter bergeben. Der Rckgabe-Wert der XBIOS-Funktion wird der Rckgabe-Variable zugewiesen. Wenn vor den Parametern ein "L " gestellt ist, so wird der Parameter als LONG bergeben, ansonsten immer als WORD. 0: Initmous(mode.w,->para.l,->service_routine.l) Mausroutinen Initialisieren 1: Ssbrk(len.l) reserviert Speicher (nur BIOS) 2: Physbase ermittelt phys. Bildadresse 3: Logbase ermittelt log. Bildadresse 4: Getrez Auflsungskennung 5: Setscreen(log_scr.l,phy_scr.l,res.w) Setzt/Ermittelt Bildschirmparameter 6: Setpalette(->palette.l) Farbpalette 7: Setcolor(colornr.w,colorvalue.w) einz. Farbe 8: Floprd(->buffer.l,0.l,drive.w,sector.w, track.w,side.w,count.w) Disk-Sektor lesen 9: Flopwr(->buffer.l,0.l,drive.w,sector.w, track.w,side.w,count.w) Disk-Sektor schreiben A: Flopfmt(->buffer.l,0.l,drive.w,count.w, track.w,side.w,interleave.w,$87654321.l,init.w) Track formatieren B: Getdsb C: Midiws(count.w,->buffer.l) Midi-Ausgabe D: Mfpint(nummer.w,->routine.l) MFP-Interrupt E: Iorec(device.w) IO-Kontrollstruktur F: Rsconf(baud.w,ctrl.w,ucr.w,rsr.w,tsr.w,scr,w) Konfiguration der RS 232 10: Keytbl(->tabn.l,->tabs.l,->tabc.l) Tastaturtabellen 11: Random Zufallszahl 12: Protobt(->buffer.l,serial.l,typ.w,exec.w) Bootsektor erzeugen 13: Flopver(->buffer.l,0.l,drive.w,sector.w, track.w,side.w,count.w) Disk-Sektor vergleichen 14: Scrdmp Bildschirm-Harcopy 15: Cursconf(mode.w,frequenz.w) Cursor-Konfig. 16: Settime(time.l) Zeit setzen 17: Gettime Zeit ermitteln 18: Bioskeys Standardtastenbelegung 19: Ikbdws(len.w,->buffer.l) Tastaturp. Ausgabe 1A: Jdisint(nr,w) Disable MFP-Interrupt 1B: Jenabint(nr.w) Enable MFP-Interrupt 1C: Giaccess(data.w,regnr.w) Soundchip 1D: Offgibit(bitnr.w) Bit=0 (Port A) 1E: Ongibit(bitnr.w) Bit=1 (Port A) 1F: Xbtimer(timernr.w,ctrl.w,data.w,->routine.l) Timer Interrupt Routine des MFP inst. 20: Dosound(->sound_data.l) Sound abspielen 21: Setprt(para.w) Drucker Konfiguration 22: Kbdvbase IO-Basis Adresse 23: Kbrate(delay.w,repeat.w) Wiederholungsrate 24: Prtblk(->para_block.l) Bildschrirm-Hardcopy 25: Vsync Bildrcklauf abwarten 26: Supexec(->routine.l) Routine im S-Mode 27: Puntaes 40: Blitmode Blitter Modus setzen/ermittelnBeispiel:0 PRINT HEX$(FN Logbase)1 END2 DEF FN Logbase3 LOCAL R=04 XBIOS R,35 RETURN R6 END_FNXORTyp: OperatorSyntax: XOR Erklrung:Die beiden Ausdrcke werden bitweise logisch exklussiv-oder verknpft.Beispiel:0 PRINT BIN$((%1010 XOR %1100)+%10000) 10110INDEXA... B... C... D... E... F...G... H... I... K... L... M...N... O... P... R... S... T...U... V... W... X... Z... <...<...A...ABSAESAdress -> Pointer/AdressoperatorenANDARCCOSARCCOTARCOTHARCSINARCTANARSINHARTANHASCATNAppl_ExitAppl_FindAppl_InitAppl_ReadAppl_TplayAppl_TrecordAppl_WriteAusgabe -> Ein-/AusgabebefehleB...BACKUPBIN$BIOSBITBITBITBLTBLOADBOXBRKBSAVEC...CALLCASECDBLCHAINCHDIRCHR$CINTCINTLCIRCLECLEARCLIPCLOSECLSCMDCOMMONCOMPILERCONTCONTINUECOPYCOSCOSECCOSECHCOSHCOTCOTHCSNGCSRLINCVDCVICVILCVSD...DATADATE$DATE$DEF FN DEF PROC DEF USR DEFAULTDEFDBLDEFINTDEFINTLDEFSNGDEFSTRDEGDETDIMDiskettenbefehleDRAWDUMPE...EDITELLIPSEEin-/AusgabebefehleENDENDIFEND_FNEND_PROCEND_SELECTEOFEQVERLERRERR$ERROREXECEXITEXPEvnt_ButtonEvnt_DclickEvnt_KeybdEvnt_MesagEvnt_MouseEvnt_MultiEvnt_TimerF...FACTFIELDFILESFILESELECTFILLFILL COLOR FILL PATTERN FILL STYLE FIXFNFOR TO [STEP] NEXT FORM_ALERTFRACFREFREFSEL_INPUT -> FILESELECTForm_AlertForm_CenterForm_DialForm_DoForm_ErrorG...GEMDOSGEM-BefehleGETGOSUBGOTOGraf_DragboxGraf_GrowboxGraf_HandleGraf_MkstateGraf_MouseGraf_MoveboxGraf_RubberboxGraf_ShrinkboxGraf_SlideboxGraf_WatchboxGrafikbefehleH...HCOPYHCOPY TEXTHEX$HIGHber HilfeH_CHARH_PIXELI...IF THEN ELSE ENDIF IMPINKEY$INPUTINPUT #INPUT USINGINPUT$INSTRINTIPLK...KEYKEY LISTKILLL...LDUMPLEFT$LENLETLINE COLORLINE INPUTLINE PATTERNLINE STYLELINE WIDTHLISTLLISTLNLOADLOCLOCALLOCATELOFLOGLOWLOWER$LPEEKLPOKELPOSLPRINTLSETM...MATMAT CLEARMAT INVMathematische FunktionenMathematische OperatorenMAXMEMORYMERGEMID$MID$MINMIRROR$MKD$MKDIRMKI$MKIL$MKS$MODMODEMODE LPRINTMOUSEBUTMOUSEOFFMOUSEONMOUSEXMOUSEYMenMenu_BarMenu_BarMenu_IcheckMenu_IenableMenu_RegisterMenu_TextMenu_TnormalN...NAMENANDNEWNEXTNOISENORNOTO...OCT$ON ERROR GOTO ON GOSUBON GOTOON HELP GOSUBON KEY GOSUB ON MOUSEBUT GOSUB ON RESTORE ON TIMER GOSUB ON TRON GOSUB OPENOperatorenOROTHERWISEObjc_AddObjc_ChangeObjc_DeleteObjc_DrawObjc_EditObjc_FindObjc_OffsetObjc_OrderP...PALETTEPBOXPCIRCLEPEEKPELLIPSEPIPOINTPointer/AdressoperatorenPOKEPOSPRBOXPRINTPRINT @PRINT USING PRINT#Prioritt der OperatorenPROCPUTR...RADRBOXREADREMRENUMREPEATRESERVEDRESTORERESUMERETURNRIGHT$RMDIRRNDRSETRUNRsrc_FreeRsrc_GaddrRsrc_LoadRsrc_ObfixRsrc_SaddrS...SAVESECSECHSEGPTRSELECTSGNSHLSHRSINSINHSORTSPACE$SPCSQRSteuerzeichen des VT 52STOPSTR$STRING$StringfunktionenStrukturbefehleSWAPSYSTEMSystembefehleScrp_ReadScrp_WriteShel_EnvrnShel_FindShel_GetShel_PutShel_ReadShel_WriteT...TABTANTANHTEXTTEXT COLORTEXT HEIGHTTEXT ROTATIONTEXT STYLETIME$TIMERTROFFTRONTOS-FehlermeldungenTUNEU...UNTILUPPER$USINGUSRV...VALVariablentypen, VariablenverwaltungVARPTRVDIVDI-TreiberVOLUMEV_BarV_Bit_ImageV_CellarrayV_CircleV_Clear_Disp_ListV_ClrwkV_ClsvwkV_ContourfillV_CuraddressV_CurdownV_CurhomeV_CurleftV_CurrightV_CurtextV_CurupV_DspcurV_EeolV_EeosV_EllarcV_EllipseV_EllpieV_Enter_CurV_Exit_CurV_FillareaV_Form_AdvV_Get_PixelV_GtextV_HardcopyV_Hide_CV_JustifiedV_Meta_ExtentsV_OpnvwkV_Output_WindowV_PlineV_PmarkerV_RboxV_RecflV_RfboxV_RmcurV_RvoffV_RvonV_Show_CV_UpdwkV_Write_MetaVergleichsoperatorenVex_ButvVex_CurvVex_MotvVex_TimvVm_FilenameVq_CellarrayVq_ChcellsVq_ColorVq_CuraddressVq_ExtndVq_Key_SVq_MouseVq_TabstatusVqf_AttributesVqin_ModeVql_AttributesVqm_AttributesVqp_ErrorVqp_FilmsVqp_StateVqt_AttributesVqt_ExtentVqt_FontinfoVqt_NameVqt_WidthVr_TrnfmVro_CpyfmVrq_ChoiceVrq_LocatorVrq_StringVrq_ValuatorVrt_CpyfmVs_ClipVs_ColorVs_PaletteVsc_FormVsf_ColorVsf_InteriorVsf_PerimeterVsf_StyleVsf_UdpatVsin_ModeVsl_ColorVsl_EndsVsl_TypeVsl_UdstyVsl_WidthVsm_ChoiceVsm_ColorVsm_LocatorVsm_StringVsm_TypeVsm_ValuatorVsm_heightVsp_MessageVsp_SaveVsp_StyleVst_AlignmentVst_ColorVst_EffectsVst_FontVst_HeightVst_Load_FontsVst_PointVst_RotationVst_Unload_FontsVswr_ModeVT 52W...WAITWENDWHILEWPEEKWPOKEWRITEWRITE #WVBLW_CHARW_PIXELWind_CalcWind_CloseWind_CreateWind_DeleteWind_FindWind_GetWind_OpenWind_SetWind_UpdateX...XBIOSXORZ...Zahlenkonvertierung, ZahlensystemeZeigerZeiger auf FunktionenMenDie Men-Zeile:FILE  FIND BLOCK MODE GO RUN (Weitere Mglichkeit: HELP-Taste drcken, wenn Mauszeiger ber Men-Eintrag.)FILE Das File-Men:NEW ^N----------------------LOAD ... ^OLOAD BLOCK ... F7 F8----------------------SAVE ^SSAVE AS ... ^MSAVE BLOCK ... F7 SF8----------------------PRINT ... ^P----------------------DIRECTORY DIRECT MODE ^C----------------------QUIT ^QFIND Das Find-Men:FIND ... ^FFIND NEXT ^GFIND TOKEN ^TFIND DEF ... FIND ERROR----------------------LIST ... F2 F3LIST TOKEN F2 SF3----------------------REPLACE ... F3 F3RENAME TOKENBLOCK Das Block-Men:INSERT rechte MTMOVE ^VKILL ^E----------------------BLOCK START ^BBLOCK END ^KHIDE ^H----------------------LOAD BLOCK ... F7 SF8SAVE BLOCK ... F7 F8----------------------PRINT BLOCK S^PMODE Das Mode-Men:SWITCH SCREEN SF2SPLIT SCREEN SF1CHANGE FONT/SIZE SF3----------------------PREFERENCES ^LSAVE SETTINGSGO Das GO-Men:LAST MARK ^ZGO TO F1LINE TO TOPLINE TO BOTTOM----------------------TO MARK #----------------------SET MARK #----------------------FIND ERRORRUN Das Run-Men:RUN ^RSAVE & RUN ^WTRON & RUNCOMPILE SAVE & COMPILE YRUN *.BASEXEC *.PRG ^XOS-SHELLACCESSORY HELP  Das FILE-Men enthlt Eintrge zum Laden undSpeichern des Basic-Programms.NEW ^N NEW lscht das aktuelle Programm. Wenn seit dem letzten Sichern noch etwas verndert wurde (erkennbar an der Asterix-Marke vor dem Namen recht oben in der Statuszeile), erfolgt zuvor eine Sicherheitsabfrage.LOAD ... ^O LOAD ldt ein BASIC-Programm. Das Programmmu mit SAVE gesichert worden sein und darfnicht als ASCII vorliegen. Um ASCII-Programmezu laden lschen Sie den Arbeitsspeicher mit NEW und whlen Sie dann LOAD BLOCK.LOAD BLOCK ... F7 F8 LOAD BLOCK ldt einen Block zum bestehenden Programm hinzu. Der Block mu als ASCII vorliegen und nicht mit SAVE, sondern mu mit SAVE BLOCK abgespeichert worden sein. Der geladene Block wird an der aktuellen Cursor-position eingefgt.SAVE ^S SAVE speichert das aktuelle Programm ohne Dateiauswahlbox unter seinem aktuellen Namen ab. Ausnahme: Der aktuelle Name ist "NONAME.BAS". In diesem Fall wird immer eine Dateiauswahlbox dargestellt. Falls unter PREFERENCES die Backup-Option angewhlt ist, so wird eine ltere Programmversion automatisch nach ".BAK" umbenannt - andernfalls wird sie berschrieben.SAVE AS ... ^M SAVE AS speichert das aktuelle Programm, wobei stets in der Dateiauswahlbox der Name besttigt oder gendert werden kann. Falls unter PREFERENCES die Backup-Option angewhlt ist, so wird eine ltere Programmversion automatisch nach ".BAK" umbenannt - andernfalls wird sie berschrieben.SAVE BLOCK ... F7 SF8 SAVE BLOCK speichert den markierten Block als ASCII-Datei. Dabei wird stets eine Dateiauswahlbox angezeigt. Markieren Sie einen Block mit Ctrl-B und Ctrl-K (Anfang und Ende) oder mit gehaltener, linker Maustaste.PRINT ... ^P PRINT gibt ein LISTING des gesamten Programms auf dem Drucker aus. Die Angabe einer Druckbreite ermglicht einen automatischen Zeilenumbruch.DIRECTORY DIRECTORY bringt nach Auswahl eines Pfades mit Maske ein ausfhrliches Inhaltsverzeichnis auf den Bildschirm (mit Lnge, Datum und Zeit).DIRECT MODE ^C DIRECT MODE verlt den Vollbildeditor und wechselt in den Direktmodus. [HELP] kehrt aus dem Direktmodus in den Vollbildeditor zurck.QUIT ^Q QUIT verlt den OMIKRON.BASIC-Interpreter. Wenn seit dem letzten Sichern noch etwas verndert wurde (erkennbar an der Asterix-Marke vor dem Namen recht oben in der Statuszeile), erfolgt zuvor eine Sicherheitsabfrage. Das FIND-Men enthlt Eintrge zum Suchen, Auflisten und auch Ersetzen von Teilen des Programms.FIND ... ^F FIND sucht nach einer bestimmten Zeichenfolge. Gro- und Kleinschreibung wird hierbei grundstzlich nicht unterschieden. Enthlt die Zeichenfolge Leerzeichen so mu sie in Anfhrungszeichen eingeschlossen werden.FIND NEXT ^G FIND NEXT sucht erneut nach dem zuletzt gesuchten Ausdruckt. Was gesucht wird hngt von der zuletzt verwendeten Suchfunktion (FIND, FIND_TOKEN oder FIND ERROR) ab.FIND TOKEN ^T FIND TOKEN sucht nach einem bestimmten TOKEN. Im Gegensatz zu FIND wird hier zwischen Variablen- name "Test" und Prozedurname "Test" unter- schieden. Prozeduren werden mit "P" und Felder mit Klammern kenntlich gemacht. Beispiele:"P Ausgabe" - Prozedur Ausgabe suchen"Wert#(,,)" - Das dreidimensionale doppeltgenaue Fliekommafeld Wert suchen."FN Lies_Zahl$" - eine Stringfunktion"-Abbruch" - eine ProgrammmarkeFIND DEF ... FIND DEF sucht die Stelle der Definition einer Prozedur oder Funktion. Prozeduren werden mit "P" am Anfang kenntlich gemacht. Beispiele:"P Ausgabe" - Prozedur Ausgabe"FN Lies_Zahl$" - eine StringfunktionFIND ERROR FIND ERROR sucht die nchste fehlerhafte Zeile. Ntzlich nach dem Importieren von fremden BASIC-Programmen mittels LOAD BLOCK.LIST ... F2 F3 LIST sucht nach einer bestimmten Zeichenfolge (vgl. FIND) und erstellt eine Liste aller zutreffenden Stellen. Um mit dem Cursor eine bestimmte Stelle zu erreichen gengt einfaches Anklicken der Liste. Mit Ctrl-Z kehrt der Cursor zur jeweils letzen Position vor dem Anklicken zurck.Gro- und Kleinschreibung wird hierbei grundstzlich nicht unterschieden. Enthlt die Zeichenfolge Leerzeichen so mu sie in Anfhrungszeichen eingeschlossen werden.LIST TOKEN F2 SF3 LIST TOKEN sucht nach einem bestimmten TOKEN (vgl. FIND TOKEN) und erstellt eine Liste aller zutreffenden Stellen. Um mit dem Cursor eine bestimmte Stelle zu erreichen gengt einfaches Anklicken der Liste. Mit Ctrl-Z kehrt der Cursor zur jeweils letzen Position vor dem Anklicken zurck.Diese Funktion wird gleichermaen durch einen DOPPELKLICK AUF EIN WORT im Programmtext ausgelst.Im Gegensatz zu LIST wird hier zwischen Variablenname "Test" und Prozedurname "Test" unterschieden. Prozeduren werden mit "P" und Felder mit Klammern kenntlich gemacht. Beispiele:"P Ausgabe" - Prozedur Ausgabe"Wert#(,,)" - Das dreidimensionale doppeltgenaue Fliekommafeld Wert"FN Lies_Zahl$" - eine Stringfunktion"-Abbruch" - eine ProgrammmarkeREPLACE ... F3 F3 REPLACE sucht eine Zeichenfolge und ersetzt sie durch eine Zweite. Dabei kann dies entweder mit oder ohne Nachfrage geschehen. Verwenden Sie diese Funktion nicht zum Umbennen von Variablen oder Prozeduren. Hier sollte die wesentlich bessere Funktion RENAME TOKEN verwendet werden.RENAME TOKEN RENAME TOKEN benennt eine Variable, ein Feld, eine Prozedur oder eine Funktion um. Eine Typnderung der Variable ist allerdings nicht mglich es darf deshalb der neue Name kein Postix enthalten. Das BLOCK-Men enthlt Eintrge zum Markieren, Lschen, Laden und Speichern von Blcken.INSERT rechte MT INSERT fgt den aktuelle markierten Block an der Cursorposition(zeile) ein. Diese Funktion ist auch ber die rechte Maustaste erreichbar.MOVE ^V MOVE verschiebt den aktuellen Block an die Cursorzeile. Dabei werden die Blockmarken automatisch gelscht.KILL ^E KILL lscht den aktuellen Block OHNE Sicherheits-abfrage !!!BLOCK START ^B Markiert den Beginn des aktuellen Blocks. Ein Block besteht immer aus einer oder mehreren ganzen Zeilen (Zeilenblock), wenn sich Anfang- und Endemarken in verschiedenen Zeilen befinden. Falls Anfang- und Endemarke in derselben Zeile sind, so wird nur ein Spaltenblock markiert (nur in dieser Zeile). Ein Block kann grundstzlich auch durch das Drcken und Halten der linken Maustaste markiert werden.BLOCK END ^K Markiert das Ende des aktuellen Blocks. Ein Block besteht immer aus einer oder mehreren ganzen Zeilen (Zeilenblock), wenn sich Anfang- und Endemarken in verschiedenen Zeilen befinden. Falls Anfang- und Endemarke in derselben Zeile sind, so wird nur ein Spaltenblock markiert (nur in dieser Zeile). Ein Block kann grundstzlich auch durch das Drcken und Halten der linken Maustaste markiert werden.HIDE ^H HIDE: Der aktuelle Block wird nicht mehr durch eine gesonderte Darstellung hervorgehoben. Die Blockmarken bleiben jedoch erhalten und alle Block-Funktionen arbeiten normal. Die erneutes HIDE wird der Block wieder sichtbar gemacht.LOAD BLOCK ... F7 SF8 LOAD BLOCK ldt einen Block zum bestehenden Programm hinzu. Der Block mu als ASCII vorliegen und nicht mit SAVE, sondern mu mit SAVE BLOCK abgespeichert worden sein. Der geladene Block wird an der aktuellen Cursor-position eingefgt.SAVE BLOCK ... F7 F8 SAVE BLOCK speichert den markierten Block als ASCII-Datei. Dabei wird stets eine Dateiauswahlbox angezeigt. Markieren Sie einen Block mit Ctrl-B und Ctrl-K (Anfang und Ende) oder mit gehaltener, linker Maustaste.PRINT BLOCK S^P Gibt den aktuellen Block auf dem Drucker aus. Die Angabe einer Druckbreite ermglicht einen automatischen Zeilenumbruch. Das MODE-Men enthlt Eintrge, die allgemeine Einstellungen bzgl. der Darstellung und des Editorverhaltens ermglichen.SWITCH SCREEN SF2 SWITCH SCREEN wechselt bei geteiltem Darstellungsmodus mit dem Cursor in die andere Hlfte.SPLIT SCREEN SF1 SPLIT SCREEN wechselt in den geteilten Darstellungsmodus. Hier wird der Bildschirm in zwei Bereiche unterteilt, die jeweils einen beliebigen Ausschnitt des aktuellen Programms anzeigen. Der Trennbalken zwischen den Bildbereichen kann mit der linken Maustaste verschoben werden.CHANGE FONT/SIZE SF3 CHANGE FONT/SIZE schaltet zwischen den mglichen Gren der Zeichendarstellung um. Wenn die Ausgabe ber den VDI-Treiber erfolgt und GDOS geladen ist wird zustzlich ein neuer Zeichensatz gewhlt. Die Zeichensatznummer sowie Treiberart werden mittels SAVE SETTINGS in der OM-BASIC.INF gesichert.Whlen Sie den Ausgabetreiber unter PREFERENCES - Screen Output ...PREFERENCESPREFERENCES ^L PREFERENCES erlaubt die Einstellung einiger Editor-Parameter wie z.B. Schreibmodus oder Backup-Funktion beim Speichern. Eine wichtige Einstellung soll besonders hervor gehoben werden:Unter Screen Output kann der Ausgabe-Treiber gewhlt werden. Hier ist als Standard der VDI-Treiber gewhlt. Wenn Sie jedoch eine Standard-Atari-Hardware (ST oder TT) verwenden, sollten Sie in jedem Fall die direkten Treiber einmal versuchen. Der Bildaufbau ist dann in der Regel deutlich schneller, wenngleich hier nicht das Hchstma an Kompatibilitt gegeben ist.Zustzlich kann hier der Pfad, auf dem Programme wie der COMPILER oder CUTLIB gestartet werden, eingestellt werden.VDI-TreiberDer VDI-Treiber verwendet zum Aufbau des Editor-Bildschirms nur Standard-VDI-Befehle. Dieser Treiber bietet ein Hchstma an Kompatibilitt und sollte auf allen Grobildschirmen und Graphikkarten lauffhig sein. Ist GDOS geladen, so sind alle nicht proportionalen Zeichenstze ebenfalls verfgbar. (Drcken Sie mehrfach F3, bis der gewnschte Zeichensatz erscheint.)Im Gegensatz hierzu funktioniert der direkte Bildschrimtreiber nur auf Standard-Atari-Hardware (ST oder TT). Er bietet hhere Ausgabegeschwindigkeit, lt jedoch nur zwei verschiedene Zeichenstze zu.SAVE SETTINGS SAVE SETTINGS speichert alle erdenklichen Einstellungen als "OM-BASIC.INF"-Datei ab. Das GO-Men enthlt Eintrge die den Cursor neu positionieren.LAST MARK ^Z LAST MARK springt nach Neupositionieren durch Anklicken einer Liste an die alte Position zurck. Dies funktioniert in bis zu acht Ebenen, soda auch mehrfach verzweigt und zurckgesprungen werden kann. Zusammen mit der Doppelklick-LIST-Funktion kann man sich schnell einen berblick ber mehrer Teile des Programms verschaffen ohne dabei die Orientierung zu verlieren.GO TO F1 GO TO positioniert den Cursor. Als mgliche Ziele dienen: Zeilennummern Marken Prozedurnamen (Eingabe wie bei FIND TOKEN) FunktionsnamenEbenso kann zum Beginn oder Ende des aktuellen Blocks verzweigt werden.LINE TO TOP LINE TO TOP - Die aktuelle Zeile wird zur obersten Zeile. LINE TO BOTTOM - Die aktuelle Zeile wird zur untersten Zeile.TO MARK #Der Cursor wird auf eine der vier Marken gesetzt.SET MARK #Setzt eine der vier Marken. Der Cursor wird auf Marke #1 positioniert. Der Cursor wird auf Marke #2 positioniert. Der Cursor wird auf Marke #3 positioniert. Der Cursor wird auf Marke #4 positioniert. Der aktuelle Cursorposition wird als Marke #1 vermerkt. Der aktuelle Cursorposition wird als Marke #2 vermerkt. Der aktuelle Cursorposition wird als Marke #3 vermerkt. Der aktuelle Cursorposition wird als Marke #4 vermerkt.FIND ERROR FIND ERROR sucht die nchste fehlerhafte Zeile. Ntzlich nach dem Importieren von fremden BASIC-Programmen mittels LOAD BLOCK. Das RUN-Men enthlt Eintrge zum Starten des aktuellen Programms, Start der Zusatzprogramme oder beliebiger externer Programme sowie Accessories.RUN ^R RUN startet das aktuelle Basic-Programm.SAVE & RUN ^W SAVE & RUN speichert zunchst das aktuelle Progamm wie unter SAVE ab und startet es anschlieend.TRON & RUN TRON & RUN startet das aktuelle Programm mit aktivierten TRACE MODUS (siehe TRON).COMPILE COMPILE startet den OMIKRON.BASIC Compiler zum bersetzen des aktuellen Basic-Programms. Das Programm wird hierzu nicht erst abgespeichert sondern direkt aus dem Speicher des Interpreters bersetzt. Der Pfad des Compilers ist unter PREFERENCES einstellbar.SAVE & COMPILE Y SAVE & COMPILE startet den OMIKRON.BASIC Compiler zum bersetzen des aktuellen Basic-Programms. Das Programm wird IMMER zuerst wie bei SAVE abgespeichert und dann vom Compiler aus dem Speicher des Interpreters bersetzt. Der Pfad des Compilers ist unter PREFERENCES einstellbar.RUN *.BAS RUN *.BAS ldt ein neues Basic-Programm wie unter LOAD und startet es sofort. Das aktuelle Programm wird dabei aus dem Speicher gelscht.EXEC *.PRG ^X EXEC *.PRG startet ein beliebiges externes Programm. Mit dieser Funktion knnen Sie ein weiteres Programm wie vom Desktop aus starten ohne den Interpreter verlassen zu mssen (Voraussetzung: gengend Hauptspeicher).Insbesondere knnen Sie hier auch Basic-Compilate starten, die Sie vielleicht gerade mit dem Compiler erzeugt haben.OS-SHELL OS-Shell ermglicht den Zugriff auf alle Shellfunktionen, wenn der Interpreter von einer Shell gestartet wurde, die ihre Fhigkeiten ber _shell_p ($04F6) zur Verfgung stellt. Der alternative Desktop Gemini beispielsweise bietet alle Funktion der Mupfel.ACCESSORY ACCESSORY schaltet auf einen GEM-Men-Bildschirm um und macht so alle geladenen Accessories zugnglich. Mit dem Men-Eintrag "Quit Accessory" kehren Sie zum Vollbildeditor zurck.HELP Hilfe: ber Hilfe ber Men Mathematische Funktionen Zahlenkonvertierung, Zahlensysteme Stringfunktionen, Strukturbefehle Variablentypen, Variablenverwaltung Diskettenbefehle, Ein-/Ausgabebefehle Systembefehle, Grafikbefehle GEM-Befehle, VT 52, Fehlermeldungen Alphabetischer INDEXGEM-Befehle AES FILESELECT FORM_ALERT FSEL_EXINPUT FSEL_INPUT VDI GrafikbefehleBITBLT, BOX, CIRCLE, CLIP, COLOR, DRAW, ELLIPSE, FILL, FILL COLOR, FILL PATTERN, FILL STYLE, HEIGHT, LINE COLOR, LINE PATTERN, LINE STYLE, LINE WIDTH, MODE, NDC, OUTLINE, PALETTE, PBOX, PCIRCLE, PELLIPSE, POINT, POLYGON, PPOLYGON, PRBOX, RBOX, TEXT, TEXT COLOR, TEXT HEIGHT, TEXT ROTATION, TEXT STYLESystembefehleBIOS, BRK, CALL, DEF USR, FRE, GEMDOS, HIGH, INLINE, IPL, LOW, LPEEK, LPOKE, MEMORY, MEMORY_BLOCK, MEMORY_MOVE, MEMORY_MOVEB, PEEK, POKE, UNLIST, USR, WPEEK, WPOKE, WVBL, XBIOSEin-/AusgabebefehleCLS, CLOSE, CMD, CSRLIN, EOF, FIELD, GET, HCOPY, HCOPY TEXT, INKEY$, INPUT, INPUT #, INPUT USING, INPUT$, LINE INPUT, LOC, LOCATE, LOF, LPRINT, MODE LPRINT, OPEN, POS, PRINT, PRINT#, PRINT @, PRINT USING, PUT, SEEK, TAB, USING, WRITE, WRITE #DiskettenbefehleBACKUP, BLOAD, BSAVE, CHAIN, CHDIR, COMMON, COPY, FILES, KILL, LOAD, MERGE, MKDIR, NAME, RMDIR, SAVEStrukturbefehleCASE, CONTINUE, DEFAULT, DEF FN, DEF PROC, ELSE, ENDIF, END, END_FN, END_PROC, END_SELECT, EXIT, FN, FOR, GOSUB, GOTO, IF, NEXT, ON GOSUB, ON GOTO, OTHERWISE, PROC, REPEAT, RETURN, SELECT, STEP, THEN, UNTIL, WEND, WHILEVariablentypen, VariablenverwaltungCLEAR, DATA, DEFDBL, DEFINT, DEFINTL, DEFSNG, DEFSTR, DIM, DUMP, LDUMP, LET, LOCAL, ON RESTORE, READ, RESTORE, SORT, SWAPStringfunktionenASC, CHR$, INSTR, LEFT$, LEN, LOWER$, LSET, MID$, MIRROR$, RIGHT$, RSET, SPACE$, SPC, STR$, STRING$, UPPER$, VALZahlenkonvertierung, ZahlensystemeBIN$, CDBL, CINT, CINTL, CSNG, CVD, CVI, CVIL, CVS, HEX$, MKD$, MKI$, MKIL$, MKS$, OCT$Mathematische FunktionenABS, ARCCOS, ARCCOT, ARCOTH, ARCSIN, ARCTAN, ARSINH, ARTANH, ATN, COS, COSEC, COSECH, COSH, COT, COTH, DEG, DET, EXP, FACT, FIX, FRAC, HIGH, INT, INV, LN, LOG, LOW, MAT, MAT CLEAR, MAX, MIN, PI, RAD, RND, SEC, SECH, SGN, SIN, SINH, SQR, TAN, TANHHilfeber die Benutzung von HELP:Hilfe erhalten Sie zu ber 800 Stichwrtern, darunter alle Basic Befehle und Funktionen, alle GEM-Aurfufe und vieles mehr.Um Hilfe zu einem Befehl zur erhalten mu sich der Cursor auf dem betreffenden Befehlswort befinden. Drcken Sie nun die Taste HELP.Hilfe zu allen MENS erhalten Sie indem Sie ein Men herunterklappen lassen, den Mauszeiger auf den gewnschten Eintrag bewegen, aber noch nicht auslsen. Jetzt drcken Sie die HELP Taste.Wenn in einem Hilfetext ein Begriff fett gedruckt erscheint, ist ber diesen Begriff weitere Information vorhanden. Ein Klick auf diesen Begriff und schon erscheinen weitere Informationen.Die Fehlermeldung "HELP-Keyword not found" bedeutet, da kein entsprechendes Suchwort gefunden werden konnte. Bitte kontrollieren Sie das Wort unterm Cursor (Schreibweise) oder schauen Sie im Index nach."HELP-File not found" sollte eigentlich nie erscheinen, da die Hilfe Datei immer im aktuellen Pfad, auf "C:\", "A:\" und ber "Shel_Find" gesucht wird. Stellen Sie also sicher, da die Hilfe-Datei auf einem der genannten Pfade zu finden ist, sonst ist im entscheidenden Moment keine Hilfe verfgbar.Ein numerischer Ausdruck ist ein beliebiger Term, der ein numerisches Ergebnis liefert. Dabei spielt der Typ (ganzzahlig, einfach- oder doppeltgenau) keine Rolle.Ein Ausdruck vom Typ String. Er kann insbesondere auch die Funktion @(,) enthalten.Vorzeichenlose ganze Zahl, die eine Funktion aus den Betriebssystem Bibliotheken AES, BIOS, GEMDOS, VDI oder XBIOS auswhlt.Globales Parameterfeld fr das AES. Hier steht der angegebene Index fr die Zahl der im Feld enthaltenen Werte.Globales Parameterfeld fr das AES und das VDI. Hier steht der angegebene Index fr die Zahl der im Feld enthaltenen Werte.Globales Parameterfeld fr das AES und das VDI. Hier steht der angegebene Index fr die Zahl der im Feld enthaltenen Werte.Globales Parameterfeld fr das AES. Hier steht der angegebene Index fr die Zahl der im Feld enthaltenen Werte.Globales Parameterfeld fr das AES. Hier steht der angegebene Index fr die Zahl der im Feld enthaltenen Werte.Ein Dateiname ist ein String, der folgenden Aufbau hat:"[][\][[\]]"Laufwerk steht fr eine das Laufwerk kennzeichnenden Buchstaben zwischen "A" und "P", gefolgt von einem Doppelpunkt.Ein Ordnername besteht aus bis zu acht Zeichen und eventuell einer drei Zeichen langen Namenserweiterung, die durch "." abgetrennt wird. Der Ordnername darf keine Jokerzeichen beinhalten. Ein aus einem oder mehreren Ordnern bestehder Dateiname nennt man auch Pfad. Der Pfad heit vollstndig, wenn angefangen vom Laufwerk bis hin zum Namen alle Angaben vorhanden sind.Der Name selbst entspricht dem Ordnernamen, nur da hier fast immer auch Jokerzeichen zugelassen sind.Wenn bei der Angabe des Dateinamens die Laufwerksangabe fehlt, so wird vom Standardlaufwerk ausgegangen. Fehlt auch der Pfad so wird der Standardpfad verwendet. Numerische Variable gleich welchen Typs. In Einzelfllen sind mglicherweise nur einfach Variablen zugelassen und keine Felder.Liefert den Ergebniswert bzw. die Fehlernummer einer Betriebssystemfunktion zurck. Bei INPUT USING Art der Abbruchbedingung.Die an eine Funktion oder Prozedur bergebenen Werte. Bei Betriebssystemaufrufen des BIOS, GEMDOS, XBIOS oder bei Aufrufen mit CALL kann durch ein vorangestelltes "L " eine bergabe als LONG-WORD bewirkt werden.Vorzeichenlose Zahl zwischen 0 und 31. Die Wertigkeit des entsprechenden Bits ist 2^.Ganzzahlige Variable WORD oder LONG, auch Feldvariablen sind zulssig.32 Bit breite (1 LONG) Integer-Zahl, die eine bestimmte Speicherzelle benennt.Eine Marke bezeichnet eine bestimmte Stelle eines Programms:1. Eine bestimmte Zeile. Wenn mit Zeilennummern gearbeitet wird kann man durch Nennung der Nummer eine bestimmte Zeile erreichen. Die Zeilennummer kann auch berechenet werden, d.h. als Marke ist auch ein beliebiger numerischer Ausdruck zugelassen. Wenn der Ausdruck jedoch aus einer einzigen numerischen Variablen besteht, so ist diese in Klammern zu setzen, um nicht mit einem Label verwechselt zu werden.2. Ein bestimmtes Programm-Label: An jeder Stelle des Programms kann mit "-" ein Label vereinbart werden. Der Bezeichner darf nur die blichen Zeichen enthalten (alle Buchstaben, Ziffern und "_", aber z.B. keine Umlaute). Will man sich auf ein solches Label beziehen wird einfach der Bezeichner genannt, das vorangestellte Minuszeichen unterbleibt. Man kann stattdessen, das Label auch ber einen Stringausdruck benennen. Er mu den Bezeichner des Label in Grobuchstaben enthalten und darf fr Compilate nicht lnger als acht Zeichen sein.Laufwerk steht fr eine das Laufwerk kennzeichnenden Buchstaben zwischen "A" und "P", gefolgt von einem Doppelpunkt.Winkelangaben sind stets in 1/10 Grad vorzunehmen, d.h. z.B. 900 entspricht 90 Grad.Eine vorzeichenlose Zahl zwischen 1 und 16. Die Zahl steht in fester Verbindung mit der zugehrigen Datei (Siehe OPEN). Alle Befehle und Funktionen wirken auf die Datei, die der Dateinummer durch OPEN zugeordnet wurde.Appl_InitFunktion: Meldet eine Applikation fr GEM an.Appl_ReadAppl_Read(Ap_Rlength,Ap_Rbuff$,Ap_Rreturn)Funktion: Liest eine Nachricht Ap_Rlength= Anzahl der zu lesenden Bytes R Ap_Rbuff$ = Message Buffer R Ap_Rreturn = 0=Ok, >0=FehlerAppl_WriteAppl_Write(Ap_Wid,Ap_Wbuff$,Ap_Wreturn)Funktion: Schreibt eine Nachricht Ap_Wid = Nr. der Application ID, der etwas migeteilt wird Ap_Wbuff$ = Message Buffer R Ap_Wreturn = 0=Ok, >0=FehlerAppl_FindAppl_Find(Ap_Fname$,Ap_Fid)Funktion: Ermittelt die Applikations-ID einer Applikation Ap_Fname$ = Dateiname der Applikation Ap_Fid = Application ID der ApplikationAppl_TplayAppl_Tplay(Ap_Tpnum,Ap_Tpscale,Ap_Tpmem)Funktion: Spielt EVENTs ab Ap_Tpnum = Anzahl der Ereignisse Ap_Tpscale = Geschwindigkeit (100=Normal,200=Doppelt) AP_Tpmem = Adresse der Daten im SpeicherAppl_TrecordAppl_Trecord(Ap_Trcount,Ap_Trmem)Funktion: Zeichnet EVENTs auf Ap_Trcount = Anzahl der Ereignisse AP_TRMEM = Adresse der Daten im SpeicherAppl_ExitFunktion: Meldet die Applikation wieder abEvnt_KeybdEvnt_Keybd(Ev_Kreturn)Funktion: Wartet auf einen Tastendruck R Ev_Kreturn = Keyboard CodeEvnt_ButtonEvnt_Button(Ev_Bclicks, Ev_Bmask, Ev_Bstate, Ev_Breturn, Ev_Bmx, Bv_Bmy, Ev_Bbutton, Ev_Bkstate)Funktion: Wartet auf Maustaste Ev_Bclicks = Anzahl der zu erwartenden Mausklicks Ev_Bmask = Maske fr Mausknpfe Ev_Bstate = zu erwartender Mausknopf-Zustand R Ev_Breturn = Anzahl der tatschlichen Mausklicks R Ev_Bmx = Mausposition X R Ev_Bmy = Mausposition Y R Ev_Bbutton = Mausknopf-Zustand R Ev_Bkstate = Zustand der SHIFTKEYSEvnt_MouseEvnt_Mouse(Ev_Moflags, Ev_Mox, Ey_Moy, Ev_Mowidth, Ev_Moheigth, Ev_Momx, Ev_Momy, Ev_Mobutton, Ev_Mokstate)Funktion: Wartet darauf, da die Maus ein Rechteck betritt oder verlt Ev_Moflags= 0=wartet auf betreten, 1=wartet auf verlassen Ev_Mox = Rechteck X Ev_Moy = Rechteck Y Ev_Mowidth= Rechteck Breite Ev_Moheight = Rechteck Hhe R EV_Momx = Mausposition X R EV_Momy = Mausposition Y R Ev_Mobutton=Mausknopf-Zustand R EV_Mokstate = Zustand der ShiftkeysEvnt_MesagEvnt_Mesag(Ev_Mgbuff$)Funktion: Wartet auf ein Ereignis mit Meldung Ev_Mgbuff$= Message BufferEvnt_TimerEvnt_Timer(Ev_Tcount)Funktion: Wartet eine bestimmte Zeit Ev_Tcount = Zeitintervall in MillisekundenEvnt_MultiEvnt_Multi(Ev_Mflags, EV_Mbclicks, Ev_Mbmask, EV_Mbstate, Ev_Mm1flags, EV_Mm1x, EV_Mm1y, EV_Mm1width, EV_Mm1height, Ev_Mm2flags, EV_Mm2x, EV_Mm2y, EV_Mm2width, EV_Mm2height, Ev_Mtcount, Ev_Mmgbuff$, Ev_Mwhich, Ev_Mmox, Ev_Mmoy, Ev_Mmobutton, Ev_Mmokstate, Ev_Mkreturn, Ev_Mbreturn)Funktion: Wartet auf mehrere Ereignisse gleichzeitig Ev_Mflags = zu erwart. EVENT-Maske aus Mu_Keybd, Mu_button, Mu_M1, Mu_M2, Mu_Mesag, Mu_Timer Ev_Mbclicks = Anzahl der zu erwartenden Mausklicks Ev_Mbmask = Maske fr Mausknpfe Ev_Mbstate= zu erwartender Mausknopf-Zustand Ev_Mm1flags = 0=wartet auf betreten, 1=wartet auf verlassen EV_Mm1x = Rechteck X EV_Mm1y = Rechteck Y EV_Mm1width = Rechteck Breite EV_Mm1height = Rechteck Hhe EV_Mm2flags = 0=wartet auf betreten, 1=wartet auf verlassen EV_Mm2x = Rechteck X EV_Mm2y = Rechteck Y EV_Mm2width = Rechteck Breite EV_Mm2height = Rechteck Hhe EV_Mtcount= Zeitintervall in Millisekunden R EV_Mmgbuff$ = Message Buffer R EV_Mwhich = Eingetr. EVENT-Maske aus Mu_Keybd, Mu_button, Mu_M1, Mu_M2, Mu_Mesag, Mu_Timer R EV_MMOX = Mausposition X R EV_MMOY = Mausposition Y R Ev_Mmobutton = Mausknopf-Zustand R EV_Mmokstate = Zustand der Shiftkeys R EV_Mkreturn = Keyboard Code R EV_Mbreturn = Anzahl der tatschlichen MausklicksEvnt_DclickEvnt_Dclick(Ev_Dgetset,Ev_Dspeed)Funktion: Ermittelt Doppelklick-Geschwindigkeit Ev_Dgetset= 0 (abfragen) 1 (SETZEN) R Ev_Dspeed = momentane/zu setzende Double-Click- GeschwindigkeitMenu_BarMenu_Bar(Me_Btree)Funktion: Stellt eine Menuzeile dar Me_Btree = Adresse des Menu-Objektbaums oderMenu_BarFunktion: Schaltet die Menuzeile abMenu_IcheckMenu_Icheck(Me_Citem,Me_Ccheck)Funktion: Setzt oder lscht Haken-Symbol im Menu ME_CITEM = Objektnummer im MenuObjektbaum ME_CCHECK = 0=NOT CHECKED, 1=CHECKEDMenu_IenableMenu_Ienable(Me_Eitem,Me_Eenable)Funktion: Setzt einen Menueintrag aktiv oder inaktiv ME_EITEM = Objektnummer im MenuObjektbaum ME_EENABLE= 0=DISABLED, 1=ENABLEDMenu_TnormalMenu_Tnormal(Me_Nitem,Me_Nnormal)Funktion: stellt einen Menutitel normal oder invers darME_NITEM =Objektnummer im MenuObjektbaum ME_NNORMAL= 0=INVERS, 1=NORMALMenu_TextMenu_Text(Me_Titem,Me_Ttext$)Funktion: ndert den Text eines Menueintrags ME_TITEM = Objektnummer im MenuObjektbaum ME_TTEXT$ = NEUER TEXTMenu_RegisterMenu_Register(Me_Rstring$,Me_Rmenuid)Funktion: Legt den Menueintrag fr ein Accessory an ME_RSTRING$ = NEUER NAME im DESK Menu R ME_RMenuID = Menu IDObjc_AddObjc_Add(Ob_Aparent,Ob_Achild,Ob_Atree)Funktion: Hngt ein Objekt an einen Objektbaum an OB_APARENT= BERBEORDNETE Objektnummer OB_ACHILD = UNTERZUORDNENDE Objektnummer OB_Atree = Adresse des ObjektbaumsObjc_DeleteObjc_Delete(Ob_Dlobject,Ob_Dltree)Funktion: Trennt ein Objekt vom Objektbaum OB_DLOBJECT = herauszulsende Objektnummer OB_DLtree = Adresse des ObjektbaumsObjc_DrawObjc_Draw(OB_DRStartOB, OB_DRDEPTH, OB_DRXCLIP, OB_DRYCLIP, OB_DRWCLIP, OB_DRHCLIP, OB_DRtree)Funktion: Zeichnet einen Objektbaum OB_DRStartOB = zu zeichnende Objektnummer OB_DRDEPTH= Anzahl der Unterebenen des Startobjekts, die gezeichnet werden sollen OB_DRXCLIP= Begrenzungsrechteck X OB_DRYCLIP= Begrenzungsrechteck Y OB_DRWCLIP= Begrenzungsrechteck Breite OB_DRHCLIP= Begrenzungsrechteck Hhe OB_DRtree = Adresse des ObjektbaumsObjc_FindObjc_Find(OB_FStartOB, OB_FDEPTH, OB_FMX, OB_FMY, OB_Ftree, OB_FOBNUM)Funktion: Ermittelt das Objekt, das an einer bestimmten Koordinamte sichtbar ist OB_FStartOB = zu ZEICHNENDE Objektnummer OB_FDEPTH = Anzahl der Unterebenen des Startobjekts, die gezeichnet werden sollen OB_FMX = Zeiger X OB_FMY = Zeiger Y OB_Ftree = Adresse des Objektbaums R OB_FOBNUM = Nummer des gefundenen Objekts oder -1Objc_OffsetObjc_Offset(Ob_Ofobject,Ob_Oftree,Ob_Ofxoff,Ob_Ofyoff)Funktion: Berechnet die Koordinaten eines Objekts Ob_Ofobject=Objektnummer OB_Oftree = Adresse des Objektbaums R OB_OFXOFF = X-Koordinate des Objekts R OB_OFYOFF = Y-Koordinate des ObjektsObjc_OrderObjc_Order(Ob_Orobject,Ob_Ornewpos,Ob_Ortree)Funktion: ndert die Reihenfolge von Objekten Ob_Orobject=Objektnummer OB_ORNEWPOS = Neue Stellung des Objekts (-1=erstes, 0=letztes, 1=zweitletztes...) OB_ORtree = Adresse des ObjektbaumsObjc_EditObjc_Edit(Ob_Edobject,Ob_Edchar,Ob_Edidx,Ob_Edkind,Ob_Edtree)Funktion: Editiert den Text eines Objekts Ob_Edobject=Objektnummer OB_EDCHAR = KEYBOARD CODE R OB_EDIDX= CURSOR-POSITION (IN & OUT) OB_EDKIND = 1=INIT, 2=DISPLAY CHAR, 3=EXIT OB_EDtree = Adresse des ObjektbaumsObjc_ChangeObjc_Change(OB_COBJECT, OB_CNEWSTATE, [OB_CXCLIP,OB_CYCLIP, OB_CWCLIP, OB_CHCLIP,] OB_Ctree)Funktion: ndert den Objektstatus eines Objekts Ob_Cobject = Objektnummer OB_CNEWSTATE = neuer Objektstatus OB_CXCLIP = Begrenzungsrechteck X OB_CYCLIP = Begrenzungsrechteck Y OB_CWCLIP = Begrenzungsrechteck Breite OB_CHCLIP = Begrenzungsrechteck Hhe OB_Ctree = Adresse des ObjektbaumsForm_DoForm_Do(Fo_Dostartob,Fo_Dotree,Fo_Doreturn)Funktion: Editiert eine komplette Dialogbox Fo_DOStartOB = Nummer des zuerst aktiven editierbaren Textes Fo_Dotree = Adresse des Objektbaums Fo_Doreturn = ausgelstes EXIT-ObjektForm_DialForm_Dial(Fo_Diflag,Fo_Dix,Fo_Diy,Fo_Diw,Fo_Dih)Funktion: Reserviert Bildschirmbereich FO_DIflag = 0=Start, 1=GROW, 2=SHRINK, 3=FINISH FO_DIX = Rechteck X FO_DIY = Rechteck Y FO_DIW = Rechteck Breite FO_DIH = Rechteck HheForm_AlertForm_Alert(Fo_Adefbttn,Fo_Astring$,Fo_Aexbttn)Funktion: Stellt eine Alarmbox dar FO_ADEFBTTN = DEFAULT Button (0=KEINER, 1=ERSTER...) FO_ASTRING$ = Definitionsstring R FO_AEXBTTN = ausgelster EXIT-ButtonForm_ErrorForm_Error(Fo_Enum)Funktion: Eine Alarmbox fr TOS-Fehler FO_ENUM = TOS FEHLERnummerForm_CenterForm_Center(Fo_Ctree,Fo_Cx,Fo_Cy,Fo_Cw,Fo_Ch)Funktion: Zentriert eine Dialogbox FO_Ctree = Adresse des Objektbaums R FO_CX = Objekt X R FO_CY = Objekt Y R FO_CW = Objekt Breite R FO_CH = Objekt HheGraf_RubberboxGraf_Rubberbox(GR_RX, GR_RY, GR_Rminwidth, Gr_Rminheight, Gr_Rlastwidth, GR_Rlastheight)Funktion: Zeichnet ein Gummiband-Rechteck GR_RX = Rubberbox X GR_RY = Rubberbox Y GR_RMINwidth = minimale Breite GR_RMINheight = minimale Hhe R GR_RLASTwidth = eingegebene Breite R GR_RLASTheight = eingegebene HheGraf_DragboxGraf_Dragbox(GR_Dwidth, GR_Dheight, GR_DStartX, GR_DStartY, GR_DBOUNDX, GR_DBOUNDY, GR_DBOUNDW, GR_DBOUNDH, GR_DFINISHX, GR_DFINISHY)Funktion: Zechnet ein verschiebbares Rechteck GR_Dwidth = DRAGBOX Breite GR_Dheight= DRAGBOX Hhe GR_DStartX= Start X GR_DStartY= Start Y GR_DBOUNDX= Begrenzung X GR_DBOUNDY= Begrenzung Y GR_DBOUNDW= Begrenzung Breite GR_DBOUNDH= Begrenzung Hhe R GR_DFINISHX = EINGEGEBENES X R GR_DFINISHY = EINGEGEBENES YGraf_MoveboxGraf_Movebox(GR_Mwidth, GR_Mheight, GR_MStartX, GR_MStartY, GR_MDESTX, GR_MDESTY)Funktion: Zeichnet ein Rechteck, welches sich von Start nach Ziel bewegt GR_Mwidth = DRAGBOX Breite GR_Mheight= DRAGBOX Hhe GR_MStartX= Start X GR_MStartY= Start Y GR_MDESTX = Ziel X GR_MDESTY = Ziel YGraf_GrowboxGraf_Growbox(GR_GSTX, GR_GSTY, GR_GSTwidth, GR_GSTheight, GR_GFINX, GR_GFINY, GR_GFINwidth, GR_GFINheight)Funktion: Zeichnet ein sich ausdehnendes Rechteck GR_GSTX = Start X GR_GSTY = Start Y GR_GSTwidth = Start Breite GR_GSTheight = Start Hhe GR_GFINX = ENDE X GR_GFINY = ENDE Y GR_GFINwidth = ENDE Breite GR_GFINheight = ENDE HheGraf_ShrinkboxGraf_Shrinkbox(GR_SFINX, GR_SFINY, GR_SFINwidth, GR_SFINheight, GR_SSTX, GR_SSTY, GR_SSTwidth, GR_SSTheight)Funktion: Zeichnet ein schrumpfendes Rechteck GR_SFINX = ENDE X GR_SFINY = ENDE Y GR_SFINwidth = ENDE Breite GR_SFINheight = ENDE Hhe GR_SSTX = Start X GR_SSTY = Start Y GR_SSTwidth = Start Breite GR_SSTheight = Start HheGraf_WatchboxGraf_Watchbox(GR_WOBJECT, GR_WINSTATE, GR_WOUTSTATE, GR_Wtree, GR_Wreturn)Funktion: berwacht Betreten und Verlassen einer Box Gr_Wobject=Objektnummer GR_WINSTATE = Objektstatus fr Maus in der BOX GR_WOUTSTATE = Objektstatus fr Maus ausserhalb der BOX GR_Wtree = Adresse des Objektbaums R GR_Wreturn = 0=Maus ausserhalb, 1=Maus innerhalbGraf_SlideboxGraf_Slidebox(GR_SLPARENT, GR_SLOBJECT, GR_SLVH, GR_SLtree, R_SLreturn)Funktion: Zeichnet eine nur waagrecht oder nur senkrecht verschiebbare Box GR_SLPARENT = BERGEORDNETES Objekt GR_SLOBJECT = zu VERSCHIEBENDES Objekt GR_SLVH = 0=HORIZONTAL, 1=VERTIKAL R GR_SLreturn = EINGEGEBENE POSITION (0-1000)Graf_HandleGraf_Handle (Gr_Handle, Gr_Hwchar, Gr_Hhchar, Gr_Hwbox, Gr_Hhbox)Funktion: Ermittelt das Handle der Workstation, die das AES benutzt R GR_HANDLE = VDI SCREEN WORKSTATION HANDLE R GR_HWCHAR = CHARACTER CELL Breite R GR_HHCHAR = CHARACTER CELL Hhe R GR_HWBOX = CHARACTER Breite R GR_HHBOX = CHARACTER HheGraf_MouseGraf_Mouse(Gr_Monumber)Funktion: Stellt die Mausform ein Gr_Monumber=Mausformnummer oderGraf_Mouse(GR_MOHOTX, GR_MOHOTY, GR_MOFCOLOR, GR_MODCOLOR, VARPTR(GR_MOFORM%(31)))Funktion: Stellt eine selbstdefinierte Mausform ein GR_MOHOTX = HOT SPOT X GR_MOHOTY = HOT SPOT Y GR_MOMCOLOR = MASK COLOR GR_MODCOLOR = DATE COLOR GR_MOFORM%(0) = ERSTES MaskeNWORT GR_MOFORM%(16) = ERSTES DatenWORTGraf_MkstateGraf_Mkstate(Gr_Mkmx,Gr_Mkmy,Gr_Mkmstate,Gr_Mkkstate)Funktion: Ermittelt Maus- und Shifttasten-Zustand R GR_MKMX = Mausposition X R GR_MKMY = Mausposition Y R Gr_Mkmstate=Mausknopfzustand R GR_MKKSTATE = Keyboard State (Shift Keys)Scrp_ReadScrp_Read(Sc_Rscrap$)Funktion: Ermittelt das Inhaltsverzeichnis fr temporre Dateien R SC_RSCRAP$ = SCRAP DIRECTORYScrp_WriteScrp_Write(Sc_Rscrap$)Funktion: Legt das Inhaltsverzeichnis fr temporre Dateien fest SC_RSCRAP$= SCRAP DIRECTORYWind_CreateWind_Create(WI_CRKIND, WI_CRWX, WI_CRWY, WI_CRWW, WI_CRWH, WI_CRreturn)Funktion: Legt ein Fenster an WI_CRKIND = Maske aus 1=TITEL, 2=CLOSE, 4=FULL, 8=MOVE, 16=INFO, 32=SIZE, 64=UPARROW, 128=DOWNARROW, 256=VSLIDE, 512=LEFTARROW, 1024=RIGHTARROW, 2048=HSLIDE WI_CRWX = MAXIMALGRSSE X WI_CRWY = MAXIMALGRSSE Y WI_CRWW = MAXIMALGRSSE Breite WI_CRWH = MAXIMALGRSSE Hhe R WI_CRreturn = WINDOW HANDLE (ODER NEGATIV)Wind_OpenWind_Open(Wi_Ohandle,Wi_Owx,Wi_Owy,Wi_Oww,Wi_Owh)Funktion: Stellt ein Fenster dar WI_OHANDLE= WINDOW HANDLE WI_OWWX = GRSSE X WI_OWWY = GRSSE Y WI_OWWW = GRSSE Breite WI_OWWH = GRSSE HheWind_CloseWind_Close(Wi_Clhandle)Funktion: Lscht ein Fenster vom Bildschirm WI_CLHANDLE = WINDOW HANDLEWind_DeleteWind_Delete(Wi_Dhandle)Funktion: Lscht ein Fenster WI_DHANDLE= WINDOW HANDLEWind_GetWind_Get(Wi_Ghandle,Wi_Gfield,Wi_Gw1)Funktion: Ermittelt Fenster-Parameter WI_GFIELD = 8=HSLIDE, 9=VSLIDE, 10=TOP, 15=HSLSIZE, 16=VSLSIZE R WI_GW1 = SLIDERSTELLUNG / SLIDERGRSSE / WINDOW Handle oderWind_Get(Wi_Ghandle,Wi_Gfield,Wi_Gw1,Wi_Gw2,Wi_Gw3,Wi_Gw4)Funktion: Ermittelt Fenster-Parameter WI_GHANDLE= WINDOW HANDLE WI_GFIELD = 4=WORKXYWH, 5=CURRXYWH, 6=PREVXYWH, 7=FULLXYWH, 11=FIRSTXYWH, 12=NEXTXYWH R WI_GW1 = Bereich X R WI_GW2 = Bereich Y R WI_GW3 = Bereich Breite R WI_GW4 = Bereich HheWind_SetWind_Set(Wi_Shandle)Funktion: Setzt Fenster-Parameter WI_SHANDLE= HANDLE des zu TOPPENDEN WINDOW oderWind_Set(Wi_Shandle,Wi_Sfield,Wi_Sw1)Funktion: Setzt Fenster-Parameter WI_SHANDLE= WINDOW HANDLE WI_SFIELD = 1=KIND, 8=HSLIDE, 9=VSLIDE, 10=TOP, 15=HSLSIZE, 16=VSLSIZE WI_SW1 = KOMPONENTENMaske (S. Wind_CREATE) / SLIDERSTELLUNG / SLIDERGRSSE oderWind_Set(Wi_Shandle,Wi_Sfield,Wi_Swline$,Wi_Slinmem)Funktion: Setzt Fenster-Parameter WI_SHANDLE= WINDOW HANDLE WI_SFIELD = 2=NAME, 3=INFO WI_SWLINE$= INHALT der ZEILE WI_SLINMEM= Adresse des SpeicherBereichS fr WI_SWLINE$ oderWind_Set(Wi_Shandle,Wi_Sw1,Wi_Sw2,Wi_Sw3,Wi_Sw4)Funktion: Setzt Fenster-Parameter WI_SHANDLE= WINDOW HANDLE WI_SW1 = CURRENT SIZE X WI_SW2 = CURRENT SIZE Y WI_SW3 = CURRENT SIZE Breite WI_SW4 = CURRENT SIZE Hhe oderWind_Set(Wi_Stree,Wi_Sobject)Funktion: Setzt Fenster-Parameter WI_Stree = Adresse des NEUEN DESKTOP-Objektbaums WI_SOBJECT= Objektnummer des StartObjektsWind_FindWind_Find(Wi_Fmx,Wi_Fmy,Wi_Freturn)Funktion: Ermittelt das an einem bestimmten Punkt sichtbare Fenster WI_FMX = Mausposition X WI_FMY = Mausposition Y R WI_Freturn = WINDOW HANDLEWind_UpdateWind_Update(Wi_Ubegend)Funktion: Teilt Beginn und Ende des Aufbaus eines Fensterinhalts mit WI_UBEGEND= 0=END_UPDATE, 1=BEG_UPDATE, 2=END_MCTRL, 3=BEG_MCTRLWind_CalcWind_Calc(Wi_Ctype, WI_CKIND, WI_CINX, WI_CINY, WI_CINW, WI_CINH, WI_COUTX, WI_COUTY, WI_COUTW, WI_COUTH)Funktion: Berechnet Fenstergren WI_CTYPE = 0=WORK>BORDER, 1=BORDER>WORK WI_CKIND = KOMPONENTENMaske (S. Wind_CREATE) WI_CINX = EINGABE X WI_CINY = EINGABE Y WI_CINW = EINGABE Breite WI_CINH = EINGABE Hhe R WI_COUTX= AUSGABE X R WI_COUTY= AUSGABE Y R WI_COUTW= AUSGABE Breite R WI_COUTH= AUSGABE HheRsrc_LoadRsrc_Load(Re_Lname$,Re_Lreturn)Funktion: Ldt eine Resource-Datei RE_LNAME$ = RESOURCE-DATEINAME R RE_Lreturn = 0=FEHLER, 1=KEIN FEHLERRsrc_FreeFunktion: Lscht eine Resource-Datei aus dem SpeicherRsrc_GaddrRsrc_Gaddr(Re_Gtype, Re_Gindex, Re_Gaddr)Funktion: Ermittelt die Adresse einer Datenstruktur RE_GTYPE = 0=Objektbaum, 1=0BJEKT, >1=ObjektTYP RE_GINDEX = Nummer der DatenSTRUKTUR R RE_GADDR= Adresse der DatenSTRUKTURRsrc_SaddrRsrc_Saddr(Re_Sindex,Re_Saddr)Funktion: Setzt die Adresse einer Datenstruktur RE_SINDEX = Nummer der Datenstruktur RE_SADDR = Adresse der DatenstrukturRsrc_ObfixRsrc_Obfix(Re_Oobject,Re_Otree)Funktion: Wandelt Buchstaben-Koordinaten in Punktkoordinaten um Re_Object=Objektnummer RE_Otree = Adresse des ObjektbaumsShel_ReadShel_Read(Sh_Rcmd$,Sh_Rtail$)Funktion: Ermittelt die Kommandozeile, mit der die Applikation aufgerufen wurde R SH_RCMD$= COMMAND R SH_RTAIL$ = COMMAND TAILShel_WriteShel_Write(SH_WDOEX, SH_WISGR, SH_WISCR, SH_WCMD$, SH_WTAIL$, SH_Wreturn)Funktion: Startet ein Programm SH_WDOEX = 0=TERM, 1=EXEC SHELL SH_WISGR = 0=NOT GRAPHIC, 1=GRAPHIC APPLICATION SH_WISCR = 0=NOT AES, 1=AES APPLICATION SH_RCMD$ = COMMAND SH_RTAIL$ = COMMAND TAILShel_GetShel_Get(Sh_Gbuff$)Funktion: (nicht dokumentiert) R SH_Gbuff$ = HOLT DESKTOP.INF-PARAMETERShel_PutShel_Put(Sh_Pbuff$)Funktion: (nicht dokumentiert) SH_Pbuff$ = SETZT DESKTOP.INF-PARAMETERShel_FindShel_Find(Sh_Fbuff$,Sh_Freturn)Funktion: Sucht eine Datei und ermittelt Pfadnamen R SH_Fbuff$ = Buffer fr NAMEN (IN) & fr FILE- Spezifikation(Out) R SH_Freturn = 0=FEHLER, 1=KEIN FEHLERShel_EnvrnShel_Envrn(Sh_Eparm$,Sh_Evalue$)Funktion: Sucht bestimmten Parameter im Environment String SH_EPARM$ = Z.B. "PATH=" R SH_EVALUE$ = Z.B. "A:\"V_OpnvwkFunktion: Initialisierung fr Grafik auf BildschirmV_ClsvwkFunktion: Abmeldung fr Grafik auf BildschirmV_BarV_Bar(X,Y,X2,Y2)Funktion: Zeichnet einen ausgefllten Balken X = X LINKS OBEN Y = Y LINKS OBEN X2 = X RECHTS UNTEN Y2 = Y RECHTS UNTENV_ClrwkFunktion: Lscht Bildschirm bzw. WorkstationV_UpdwkFunktion: (fr Druckerworkstation: Grafik ausgeben)Vst_Load_FontsVst_Load_Fonts(Number)Funktion: Ldt Zeichenstze nach NUMBER mu beim Aufruf 0 sein. Nach dem Aufruf enthlt NUMBER die Anzahl der dazugeladenen Fonts.Vst_Unload_FontsVst_Unload_Fonts(0)Funktion: Lscht Zeichenstze aus dem SpeicherVs_ClipVs_ClipFunktion: Lscht das Clipping Rectangle oderVs_Clip(X,Y,X2,Y2)Funktion: Setzt das Clipping Rectangle X, Y und X2, Y2 sind die Koordinaten von 2 gegen- berliegenden Punkten, die das Rechteck begrenzen.V_PlineV_Pline(X)Funktion: Zeichnet Polygon X gibt die Anzahl der Punkte an, die durch Linien verbunden werden sollen. In das Array PTSIN%(1, X) mssen die X/Y-Paare eingespeichert werden, bevor die Funktion aufgerufen wird. Es gilt jeweils: X0=ptsin%(0,0); y0=ptsin%(1,0); x7=ptsin%(0,7); y7=ptsin%(1,7) etc.V_PmarkerV_Pmarker(X)Funktion: Zeichnet Markierungen X gibt die Anzahl der Marker an, die gesetzt werden, wie bei V_Pline mssen die einzelnen Punkte in das Array PTSIN%(1, X) eingebracht werden.V_GtextV_Gtext(X,Y,Text$)Funktion: Gibt Grafiktext ausX und Y sind die Bildschirmkoordinaten, TEXT$ derauszugebende Text.V_FillareaV_Fillarea(X)Funktion: Zeichnet ausgeflltes PolygonX gibt wie bei V_Pline und V_Pmarker die Anzahl der Eckpunkte der Flche an. Die Punkte selbst sind in PTSIN%(0, X) abgelegt.V_CellarrayV_Cellarray(Row_Length, El_Used, Num_Rows, Wrt_Mode, Num_Cols, X, Y, X2, Y2)Funktion: Zeichnet Box mit Farbbergang (Schachbrettmuster)NUM_COLS ist die Anzahl der Farben. Diese mssen im Array INTIN%(0 bis NUM_COLS-1) abgelegt werden. X, Y und X1, Y1 sind die Punkte, die das rechteckige Cellarray begrenzen.V_ContourfillV_Contourfill(X,Y,Index)Funktion: Fllt von einem Punkt ausgehendINDEX gibt die Farbe an, die als Randbegrenzung dienen soll. Bei neg. INDEX wird jede Farbe, die nicht der des Punktes X, Y entspricht, als Randfarbe akzeptiert. X, Y sind die Koordinaten des Startpunkts.V_RecflV_Recfl(X,Y,X2,Y2)Funktion: Zeichnet ausgeflltes Rechteck X, Y und X2, Y2 geben 2 Eckpunkte des Rechtecks an.V_CircleV_Circle(X,Y,Radius)Funktion: Zeichnet KreisflcheV_EllarcV_Ellarc(X,Y,Xradius,Yradius,Begang,Endang)Funktion: Zeichnet Teil eines EllipsenbogensFr die Ellipse gibt man den Radius in X-Richtung (=Xradius) und Y-Richtung getrennt an. Begang ist der Anfangswinkel, Endang der Endwinkel des Ellipsen- ausschnitts. Die Winkel gehen von 0 bis 3600 in 1/10-Grad-Schritten. Gezeichnet wird gegen den Uhr- zeigersinn, null Grad entsprechen der X-Achse.V_EllpieV_Ellpie(X,Y,Xradius,Yradius,Begang,Endang)Funktion: Zeichnet Teil einer EllipsenflcheFr die Ellipse gibt man den Radius in X-Richtung (=Xradius) und Y-Richtung getrennt an. Begang ist der Anfangswinkel, Endang der Endwinkel des Ellipsen- ausschnitts. Die Winkel gehen von 0 bis 3600 in 1/10-Grad-Schritten. Gezeichnet wird gegen den Uhr- zeigersinn, null Grad entsprechen der X-Achse.V_EllipseV_Ellipse(X,Y,Xradius,Yradius)Funktion: Zeichnet EllipsenflcheFr die Ellipse gibt man den Radius in X-Richtung (=Xradius) und Y-Richtung getrennt an. Begang ist der Anfangswinkel, Endang der Endwinkel des Ellipsen- ausschnitts. Die Winkel gehen von 0 bis 3600 in 1/10-Grad-Schritten. Gezeichnet wird gegen den Uhr- zeigersinn, null Grad entsprechen der X-Achse.V_RboxV_Rbox(X,Y,X2,Y2)Funktion: Zeichnet Box mit abgerundeten EckenV_RfboxV_Rfbox(X,Y,X2,Y2)Funktion: Zeichnet gefllte Box mit abgerundeten Ecken.V_JustifiedV_Justified(X,Y,Text$,Word_Space,Char_Space,Length)Funktion: Gibt bndigen Grafiktext ausWord_Space: Flag, ob der Platz zwischen Wrtern verlngert werden darf (><0) oder nicht (=0)Char_Space: Flag, ob der Abstand der Zeichen verndert werden darf (<>0) oder nicht (=0)Length: Breite des Textes in PixelnX, Y: BildschirmkoordinatenVswr_ModeVswr_Mode(Mode)Funktion: stellt den Zeichenmodus (siehe MODE =) ein Mode =1: Replace Mode =2: Transparent Mode =3: XOR Mode =4: Reverse TransparentVs_ColorVs_Color(Index,Rgb_Inr,Rgb_Ing,Rgb_Inb)Funktion: Legt das Aussehen einer Farbe festIndex ist die Farbnummer Rgb_Inr gibt den Rotanteil in 1/1000 an. Rgb_Ing gibt den Grnanteil an Rgb_Inb gibt den Blauanteil anVsl_TypeVsl_Type(Linestyle)Funktion: Legt den Linienstil festLinestyle gibt den Linientyp an:1-solid, 2-long dash, 3-dot, 4-dash/dot, 5-dash, 6-dash/dot/dot, 7-user definedVsl_UdstyVsl_Udsty(Pattern)Funktion: Legt das Aussehen des selbstdefinierbaren Linientyps fest.Pattern ist das Linienaussehen (16bit)Vsl_WidthVsl_Width(Width)Funktion: Legt die Breite von Linien festWidth gibt die Liniendicke (ungerade, >=3) anVsl_ColorVsl_Color(Color_Index)Funktion: Legt die Linienfarbe festColor_Index gibt die Farbnummer fr Polyline-Operationen anVsl_EndsVsl_Ends(Beg_Style,End_Style)Funktion: Legt das Aussehen der Endpunkte von Linien fest Beg_Style: Aussehen des Anfangs der Polyline End_Style: Aussehen des Endes der Polyline 1-eckig, 1-Pfeile, 2-abgerundetVsm_TypeVsm_Type(Symbol)Funktion: Legt das Aussehen der Markierungen festSymbol: Aussehen des Polymarkers. 1-Dot, 2-+, 3-*,4-O, 5-X, 6-"Diamond"Vsm_heightVsm_height(Height)Funktion: Legt die Gre der Markierungen festHeight: Hhe des PolymarkersVsm_ColorVsm_Color(Color_Index)Funktion: Legt die Farbe der Markierungen festColor_Index ist die Farbnummer fr die PolymarkersVst_HeightVst_Height(Height)Funktion: Legt die Gre des Textes festHeight gibt die Zeichenhhe in NDC/RC an. oderVst_Height(Height, Char_Width, Char_Height, Cell_Width, Cell_Height)Funktion: Legt die Gre des Textes festHeight gibt die Zeichenhhe in NDC/RC an.Die anderen Variablen sind beim Aufruf nicht von Bedeutung. In ihnen werden aber Werte zurckgegeben.Vst_PointVst_Point(Point)Funktion: Legt die Gre des Textes festPoint gibt die Zeichenhhe in 1/72 Inch an. oderVst_Point(Point, Char_Width, Char_Height, Cell_Width, Cell_Height)Funktion: Legt die Gre des Textes festPoint gibt die Zeichenhhe in 1/72 Inch an.Die anderen Variablen sind beim Aufruf nicht von Bedeutung. In ihnen werden aber Werte zurckgegeben.Vst_RotationVst_Rotation(Angle)Funktion: Legt die Ausrichtung des Textes festAngle: Neigungswinkel der Schrift, in 1/10 Grad.Hinweis: Diese Funktion ist nicht in allen Workstationtreibern vollstndig implementiert. Auf dem ATARI-Bildschirm kann Schrift nur in 90 Grad Schritten gedreht werden.Vst_FontVst_Font(Font) (nur mit GDOS)Funktion: Legt die Schriftart des Textes festFont gibt die Zeichensatznummer an.Vst_ColorVst_Color(Color_Index)Funktion: Legt die Farbe des Textes festColor_Index gibt die Farbnummer fr Textoperationen an.Vst_EffectsVst_Effects(Effect)Funktion: Legt Texteffekte fest Effect gibt in einen Bits das Aussehen der Schrift an: Bit 0- thickened Bit 1- light Bit 2- italic Bit 3- underlined Bit 4- outlined Bit 5- shadowedVst_AlignmentVst_Alignment(Hor_In,Vert_In)Funktion: Legt die Bndigkeit des Textes fest Hor_In: horizontale Ausrichtung 0-linksbndig, 1-mittig, 2-rechtsbndig Vert_In: vertikale Ausrichtung 0-baseline, 1-half line, 2-ascent line, 3-bottom, 4-descent, 5-topVsf_InteriorVsf_Interior(Style)Funktion: Legt den Fllstil festStyle selektiert den Fillstyle.Zur Auswahl stehen: 0-leer. 1-voll. 2-pattern, 3-hatch, 4-user definedVsf_StyleVsf_Style(Style_Index)Funktion: Legt den Fllindex festVsf_ColorVsf_Color(Color_Index)Funktion: Legt die Fllfarbe festColor_Index gibt die Farbnummer fr Flloperationen an.Vsf_PerimeterVsf_Perimeter(Per_Vis)Funktion: Schaltet die Umrahmung von Fllflchen ein oder ausPer_Vis ist ein Flag, das den Rand beim Fllen beeinflut. Per_Vis=0 heit kein Rand, <>0 heit Rand.Vsf_UdpatVsf_Udpat(X)Funktion: Legt das selbstdefinierbare Fllmuster festX ist die Anzahl der Planes, die gleichzeitig gesetzt werden sollen. Die Daten fr jede Plane mssen in das Array INTIN%(n) geschrieben werden. Fr jede Plane mssen 16 Worte Fillstyle angegeben werden.Vsin_ModeVsin_Mode(Dev_Type, Mode)Funktion: Legt Eingabemodus festDev_Type gibt die Nummer des log. Eingabegerts anMode ist 1 fr Warten auf Antwort, 2 fr nicht WartenVrq_LocatorVrq_Locator(X,Y,Term,Xreturn,Yreturn)Funktion: Ermittelt die MauspositionX, Y sind Koordinaten der Anfangskoordinate des LocatorsXreturn, Yreturn sind Endkoordinaten des LocatorsVsm_LocatorVsm_Locator(X,Y,Status,Term,Xout,Yout)Funktion: Ermittelt die MauspositionX, Y sind die Anfangskoordinaten des LocatorsStatus gibt an, wie die Eingabe beendet wurde:Xout und Yout sind die End-Koordinaten des Locators.Vrq_ValuatorVrq_Valuator(Valuator_In,Valuator_Out,Term)Funktion: Ermittelt die Nummer einer CursortasteVsm_ValuatorVsm_Valuator(Val_In,Status,Val_Out,Term)Funktion: Ermittelt die Nummer einer CursorstasteStatus, Val_Out, Term sind nur Rckgabeparameter.Vrq_ChoiceVrq_Choice(Ch_In,Ch_Out)Funktion: Ermittelt die Nummer einer FunktionstasteCh_In ist die ursprngliche choice number,Ch_Out ist die neue choice number.Vsm_ChoiceVsm_Choice(Status,Choice_Out)Funktion: Ermittelt die Nummer einer FunktionstasteStatus ist 1, wenn der Zugriff erfolgreich war,Choice_Out ist die Ausgabe der Funktion.Die Funktion hat keine Eingabeparameter.Vrq_StringVrq_String(Max_Length,Echo_Mode,Echo_X,Echo_Y,Text$)Funktion: Ermittelt eine EingabezeileText$ ist Rckgabeparameter.Max_Length - max. Lnge des StringsEcho_Mode - 0=kein Echo, 1=EchoEcho_X und Echo_Y sind die Koordinaten der "Echo Area" in NDC/RCVsm_StringVsm_String(Max_Length,Echo_Mode,Echo_X,Echo_Y,Text$)Funktion: Ermittelt eine EingabezeileText$ ist Rckgabeparameter.Max_Length - max. Lnge des StringsEcho_Mode - 0=kein Echo, 1=EchoEcho_X und Echo_Y sind die Koordinaten der "Echo Area" in NDC/RCVsc_FormVsc_Form(X,Y,1,Maskcol,Datcol,Data$)Funktion: Setzt die MausformX, Y sind die Koordinaten des "hot spot"Maskcol ist der Farbindex der Maske, normalerweise 0Datcol ist der Farbindex der Daten, normalerweise 1Data$ ist ein 64 Zeichen langer String, der in den ersten Zeichen die 16 Words der Cursormaske und in den nachfolgenden Zeichen die 16 Words der Cursordaten enthlt.Vex_TimvVex_Timv(Adresse,Milliseconds)Funktion: Tauscht den Timer-Vektor ausAdresse ist die 32-bit-Adresse der neuen Timerroutine.Adresse ist auch Rckgabeparameter und gibt die Startadresse der alten Timerroutine an.Milliseconds ist Rckgabeparameter, es gibt die Anzahl Millisekunden pro Timer Tick an.V_Show_CV_Show_C(Flag)Funktion: Zeigt die Maus anFlag=0 heit, da die Aufrufe von V_Hide_C ignoriert werden: der Cursor wird auf jeden Fall dargestellt.Bei Flag<>0 wird der Cursor erst eingeschaltet, wenn soviel V_Show_C's aufgerufen wurden, wie V_Hide_C's gemacht wurden.V_Hide_CFunktion: Lscht die Maus vom BildschirmVq_MouseVq_Mouse(Butstate,X,Y)Funktion:Mauszustand Ermitteln Butstate, X, Y sind nur Rckgabeparameter. X, Y geben die Koordinaten der Maus an, Butstate gibt im Bit 0 den Zustand des linken Mausknopfes an.Vex_ButvVex_Butv(Adresse)Funktion: Tauscht Mausknopf-Vektor ausAdresse ist die Adresse der neuen Mausroutine,in Adresse wird die Adresse der bisherigen Mausroutine zurckgegeben.Vex_MotvVex_Motv(Adresse)Funktion: Tauscht Maus-Bewegungs-Vektor ausAdresse ist die Adresse der neuen Mausroutine,in Adresse wird die Adresse der bisherigen Mausroutine zurckgegeben.Vex_CurvVex_Curv(Adresse)Funktion: Tauscht den Maus-Aufbau-Vaktor ausAdresse ist die Adresse der neuen Mausroutine,in Adresse wird die Adresse der bisherigen Mausroutine zurckgegeben.Vq_Key_SVq_Key_S(Pstatus)Funktion: Ermittelt den Zustand der Shift-BitsPStatus ist Rckgabeparameter und enthlt den Keyboardstatus.Vrt_CpyfmVrt_Cpyfm(P_Src_Mfdb, P_Des_Mfdb, Wr_Mode, Color1, Color0, Xsource, Ysource, X2source, X2source, Xdest, Ydest, X2dest, Y2dest)Funktion: Wandelt einen Einfarb- in einen Mehrfarb-Bitblock um. P_Scr_Mfdb ist Pointer auf den Memory Form Definition Block (MFDB) des Quellrechtecks P_Des_Mfdb ist Pointer auf den MFDB des Zielrechtecks Wr_Mode ist die Nummer der auszufhrenden logischen Operation Color1 gibt die Farbe der 1-Bits an (NOT USED!) Color0 gibt die Farbe der 0-Bits an. Xsource, Ysource, X2source, X2source definieren gegenberliegende Ecken des Quellrechtecks. Xdest, Ydest, X2dest, Y2dest Ecken des ZielrechtecksVro_CpyfmVro_Cpyfm(P_Src_Mfdb, P_Des_Mfdb, Wr_Mode, Color1, Color0, Xsource, Ysource, X2source, X2source, Xdest, Ydest, X2dest, Y2dest)Funktion: Kopiert einen Bitblock P_Scr_Mfdb ist Pointer auf den Memory Form Definition Block (MFDB) des Quellrechtecks P_Des_Mfdb ist Pointer auf den MFDB des Zielrechtecks Wr_Mode ist die Nummer der auszufhrenden logischen Operation Color1 gibt die Farbe der 1-Bits an (NOT USED!) Color0 gibt die Farbe der 0-Bits an. Xsource, Ysource, X2source, X2source definieren gegenberliegende Ecken des Quellrechtecks. Xdest, Ydest, X2dest, Y2dest Ecken des ZielrechtecksVr_TrnfmVr_Trnfm(P_Src_Mfdb,P_Des_Mfdb)Funktion: Wandelt Bitblock-Formate um P_Scr_Mfdb ist Pointer auf den Memory Form Definition Block (MFDB) des Quellrechtecks P_Des_Mfdb ist Pointer auf den MFDB des ZielrechtecksV_Get_PixelV_Get_Pixel(X,Y,Pel,Index)Funktion: Ermittelt den Farbwert eines Bildschirmpunktes X, Y- Koordinaten des Punktes Rckgabeparameter: Pel - Pixel Value Index - Farbindex des Pixels.Vq_ExtndVq_Extnd(Flag)Funktion: Erweiterte Nachfrage, was der VDI-Workstationtreiber nun eigentlich kann Flag - 0 gibt die Werte von "OPEN WORKSTATION" zurck, gibt die Werte der eigentlichen "EXTENDED INQUIRY" zurck. Die 57 Rckgabewerte entnehmen Sie den Arrays Ptsout%(0,0-1,6)Vq_ColorVq_Color(Color_Index,Set_Flag,Index,Rgb_R,Rgb_G,Rgb_B)Funktion: Ermittelt Farbaussehen Color_Index ist die angefragte Farbnummer Set_Flag 0 - gibt die gesetzten Farbwerte zurck Set_Flag 1 - gibt die auf dem Gert realisierten Farbwerte zurck Rckgabeparameter: Index - sollte immer Color_Index entsprechen Rgb_R, Rgb_G, Rgb_B sind die Farbanteile fr Rot, Grn, Blau in 1/1000 ProzentVql_AttributesVql_Attributes(Line_Type, Color_Index, Write_Mode, Beg_Style, End_Style, Line_Width, Void)Funktion: Ermittelt Linienattribute Es gibt nur Rckgabeparameter. Die Namen erklren sich selbst. Beg_Style ist das Aussehen des Anfangspunktes der Polyline, End_Style entsprechend das Aussehen des Endpunktes. Void wird immer als 0 zurckgegeben.Vqm_AttributesVqm_Attributes(Polymarker_Type, Color_Index, Write_Mode, Polymarker_Width, Polymarker_Height)Funktion: Ermittelt Markierungs-AttributeNur Rckgabeparameter!Vqf_AttributesVqf_Attributes(Interior_Style, Color_Index, Style_Index, Write_Mode, Perimeter_Status)Funktion: Ermittelt FllattributeNur Rckgabeparameter!Vqt_AttributesVqt_Attributes(Text_Face, Color_Index, Rot_Angle, Hor_Alignment, Vert_Alignment, Write_Mode, Char_Width, Chr_Height, Cell_Width,Cell_height)Funktion: Ermittelt TextattributeNur Rckgabeparameter!Vqt_ExtentVqt_Extent(Text$,Dx1,Dy1,Dx2,Dy2,Dx3,Dy3,Dx4,Dy4)Funktion: Ermittelt die Ausmae eines Textes Text$ ist der Eingabestring dieser Funktion Rckgabeparameter: DX1-DX4, DY1-DY4 DX und DY steht fr DELTA X und DELTA Y.Vqt_WidthVqt_Width(Character, Ade, Cell_Width, Left_Delta, Right_Delta)Funktion: Ermittelt die Gre eines Zeichens Character ist das angefragte Zeichen. Rckgabeparameter: ADE enthlt den ADE-Wert des angefragten ZeichensVqt_NameVqt_Name(Element_Num,Index,Name$)Funktion: Ermittelt die Beschreibung eines Zeichensatzes Element_Nun ist die Nummer des angefragten Fonts. Rckgabeparameter: INDEX ist die "face ID" NAME$ enthlt im Klartext den Namen des Fonts.Vq_CellarrayVq_Cellarray (X, Y, X2, Y2, Row_Length, Num_Rows, El_Used, Rows_Used, Status)Funktion: Fragt die Definition fr CELLARRAY ab X, Y untere linke Ecke des Pixelarrays X2, Y2 obere rechte Ecke des Pixelarrays Row_Lwngth, Num_Rows Rckgabeparameter: El_Used, Rows_Used, Status INTOUT%( ) enthlt die FarbindizesVqin_ModeVqin_Mode(Dev_Type,Input_Mode)Funktion: Ermittelt den Eingabemodus Dev_Type gibt das logische Eingabegert an. Input_Mode ist Rckgabeparameter und enthlt 1 fr Request, 2 fr SampleVqt_FontinfoVqt_Fontinfo(Min_Ade,Max_Ade)Funktion: Ermittelt Informationen ber Zeichensatz Min_Ade und Max_Ade sind Rckgabeparameter. Min_Ade - 1.Zeichen im Font Max_Ade - letztes Zeichen im Font Die restlichen Informationen befinden sich im Array Es gilt wieder: Ptsout(0)=Ptsout%(0,0) Ptsout(1)=Ptsout%(1,0) Ptsout(2)=Ptsout%(0,1) Ptsout(3)=Ptsout%(1,1) Ptsout(4)=Ptsout%(0,2)Vq_ChcellsVq_Chcells(Rows,Columns)Funktion: Ermittle Zeilen und Spalten des Textschirms Rows, Columns sind Rckgabeparameter. Rows -Zeilen, Columns-SpaltenV_Exit_CurFunktion: Cursor AusV_Enter_CurFunktion: Cursor EinV_CurupFunktion: Cursor nach obenV_CurdownFunktion: Cursor RunterV_CurrightFunktion: Cursor nach rechtsV_CurleftFunktion: Cursor nach linksV_CurhomeFunktion: Cursor nach ganz links obenV_EeosFunktion: Loscht Rest des BildschirmsV_EeolFunktion: Lscht Rest der ZeileV_CuraddressV_Curaddress(Y,X)Funktion: Setzt CursorpositionY, X sind d/ie Koordinaten des CursorsV_CurtextV_Curtext(Text$)Funktion: Druckt TextTEXT$ wird ausgegeben.V_RvonFunktion: Revers EinV_RvoffFunktion: Revers AusVq_CuraddressVq_Curaddress(Y,X)Funktion: Ermittelt CursorpositionY, X sind Rckgabeparameter.Vq_TabstatusVq_Tabstatus(Status)Funktion: Testet, ob Grafiktablett o.. vorhandenStatus ist Rckgabeparameter.V_HardcopyFunktion: Gibt eine Hardcopy ausV_DspcurV_Dspcur(X,Y)Funktion: Zeigt einen Grafik-Cursor an.X, Y geben die Koordinaten des Grafikcursors an.V_RmcurFunktion: Lscht den Grafik-CursorV_Form_AdvFunktion: Fhrt einen Seitenvorschub ausV_Output_WindowV_Output_Window(X,Y,X2,Y2)Funktion: Hardcopy eines Bildschirmausschnittes X, Y -Eine Ecke des Windows X2, Y2-die gegenberliegende Ecke des Windows.V_Clear_Disp_ListFunktion: (fr Drucker: Druckt alles bisherige nicht mehr aus)V_Bit_ImageV_Bit_Image(Filename$,Aspect,Scaling,Num_Pts,X,Y,X2,Y2)Funktion: Eine Bit-Image-Datei wird ausgegebenAspect ist Flag: 0-direkt bertragen, 1-Kreis bleibt Kreis, 2-Seitenform bleibt SeitenformScaling: Inputargument Intin(1), siehe GEM VDI-BeschreibungNum_Pts gibt die Anzahl der gltigen X/Y-Paare an (0, 1 oder 2)X, Y ist das 1. X/Y-Paar. Je nach NUM_PTS ist der Wert von X/Y gegenstandslos.X2/Y2 ist das 2.X/Y-Paar. Bei NUM_PTS=0 oder 1 sind diese Werte berflssig.X, Y, X2, Y2 mssen jedoch in jedem Fall angegeben werden!Vs_PaletteVs_Palette(Palette)Funktion: Whlt Farben auf einem IBM ausPalette =0 heit rot, grn, braunPalette =1 heit cyan, magenta, weiVqp_FilmsVqp_Films(Film_Names$)Funktion: Erfragt Filmtypen des TreibersFilm_Name$ ist ein Rckgabeparameter und 125 Zeichen lang.Er enthlt hintereinander 5 Strings.Vqp_StateFunktion: Status des Paletten-Treibers ermittelnDie Werte werden im Array INTOUT%(0-20) zurckgegeben.Vsp_StyleFunktion: Status des Paletten-Treibers wird gesetztDie Werte mssen vor dem Aufruf in das Array INTIN%(0-20) eingebracht werden.Vsp_SaveFunktion: Status des Paletten-Treibers wird abgespeichertVsp_MessageFunktion: Paletten-Treiber-Meldungen abschaltenVqp_ErrorVqp_Error(Errnum)Funktion: Fehler des Paletten-Treibers lesenERRNUM ist Rckgabeparameter und enthlt die Fehlernummer.V_Meta_ExtentsV_Meta_Extents(Min_X,Min_Y,Max_X,Max_Y)Funktion: Grenzen fr Metafile festlegenMin_X, Min_Y geben die minimalen X-Y-Werte des Rechtecks anMax_X, Max_Y geben die maximalen X-Y-Werte des Rechtecks an.V_Write_MetaV_Write_Meta(Num_Intin,Intin,Num_Ptsin)Funktion: Sub-Opcode in Metafile schreibenNum_Intin ist die Anzahl der Daten, die im Intin-Array liegen (Intin%(X))Intin Sub-OpcodeNum_Ptsin ist die Anzahl der X/Y-Paare im PTSIN%(1,Y)-Array.Vm_FilenameVm_Filename(Filename$)Funktion: ndert den Dateinamen fr MetafileFilename$ ist der bis zu 74 Zeichen lange neue Metafilename.ring res[], int maxn, String& sep); friend int split(String& x, String res[], int maxn, Regex& sep); friend StrTmp join(String src[], int n, String& sep); friend StrTmp replicate(char c, int n); friend StrTmp replicate(String& y, int n); friend StrTmp common_prefix(String& x, String& y, int startpos = 0); friend StrTmp common_suffix(String& x, String& y, int startpos = -1); friend StrTmp reverse(String& x); friend StrTmp upcase(String& x); friend StrTmp downcase(String& x); friend StrTmp capitalize(String& x); // in-place versions of above void reverse(); void upcase(); void downcase(); void capitalize(); // conversion char& operator [] (int i); const char* operator char*(); // IO friend ostream& operator<<(ostream& s, String& x); friend ostream& o