8(AMESSAGE.COMCOMsJ 006  c}E% q0 \C)CC8`DCeECiD` RP h1$E ȍ @y b Y)hܭ]L]` q  DMD   u j)`0  ,p0i2 &28jJ1f02 9 g iJf0i1)xԍӭ232002&yC  B JKIHiDiELV`L & & BLV`.L|&x&0}l Ly& &` Fj`8冨凪` &EӅӥ &`ʆǪƩ Ɛe0}e` &ƦʆǢ &Ɛeǐ & &L& &'&&&8儨児祂*L&&&*ń0}8&&L& >'`hihiHHȱȱL&c !#3`Ly&JJJJ`H &h0}`Hȩh U&L' ^&L' &L' &L' &H8`HhHh B0 }(L' BHI V䅠L' Ly( &L'Ԇ ؠPIPP` (P &L' (L(0 } (L( (L(H- (8塪墨hL( )L( )L( (ȹP`텠8堨塪 (芨O0 }ȩ-`PP q(P棩 Ѥģ0-ģ6000:,80H & &ehe&eģ00 }ʥ 8堅塅`$ (&*i0:0i (Ʀ`¢ 护°ڱ%ȱ%E (LC*0 }担CS 5(LC*I )LC*H )LC* (LC* &B V 'NLMȑ` MLN%B VL0}'S:*E:*H /( ** ' /(h)0I**L'[\ZUVT` #+**` *+L( +Lw( #+L(0}) ` *+L( '` 0d y&ҥ `2)2ҩ`p`0)0}9+`@0)ӈJJJJ)`Ѕ`ȱ`` ,ȥ`HhƣĢ`0}ƥĤ`Ѣ ,`ȱѢĦ`膡``ťƤ0}e8夰L, Ƥ8`ŦeѠe桊L,/` Gblazerii"9k2L22020} T,0 ,j2i2j2i2 ,i2ij2i ,i2ij2i ,0 ,ig21 ,h2g2h2` L130} '+3+3-3,3 V+`LL3 /(La3 D:BLAZER.DAT3T ' z)// /( e`L3 /(L3 D:BLAZER.DAT30 } ' // ' ( /( e`L3J.m/K.i9/m/:/m/ +.m/.i0!}]/m/^/m/  +.m/.iIL4.m/.iK/m/L/m/ +/m//i0"}L4/m//io/m/p/m/ +////_.m/`.i/QLB58///////0#}0LB5////ILB5/.m/.i/QL58///////0L5////I!L5//m/0$}/i/QL58///////0L5////I-L5/'/m/(/i/QLG68////0%}///0LG6////ILG6/`Z=LN6H6 H6L6I6H6s6s6I6L60J6J6ILt6J68 I6H6 +0&}I6I6 +8 H6I6 +H6H6 +I6Lh6H6H6LS6 +ƍ8v/v/v/L7Щ *7ƍ0'}/͓///L>7//// 3 + +// (L`7 PnT7X <( +L|7h : 7u <(// (L7 0(}uKtŠ7 <(IL7L7L7J6J6I}L7 3J6L7 /`UL77 u/t/ V+7ILr8 K6r/q/ V+8q/t/80)} r/u/u/t/ N+77I Lr87I Ll8 +it/ +iu/u/t/ N+7Lo8Lr8L58` Lw8Ѝs8Эs8IL8~/0*}L8 K6 +,4x/(y/`L88x/mz/Ůx/mz/3L88z/z/ 2 + /y/m{/Ůy/m0+}{/(L798{/{/ 3 + /x/mz/x/y/m{/y/x/my/i8 'ee0,} T, t8`L9`L9`L9--i.-is/ '1ee T,--i.-is/ '0-}^ee T,--i`.-is/ 'ee T,--ih.-is/ 0.} 'ee T,/`L: +~/ / +L: LEVEL : : 5(w/ ( +L; leben :0/} : 5(v/ ( +L%; : ; 5(// (/ /LG; I3 +L]; : ;S <(// (/00}/ >'//:: +:::M/ :M/L$< 8:::IL;:s/ 3s/IL;s/ 3:IL;:: 3:I01}L<:Ȍ/ 9/ 9 9 3::L6<IL6q/Mt05}/L==L>=u/r/L>=L->r/Mu/L(>=L->=/L>/L>=Lu> +i '806}==L> +i '8==t/m=u/m= N+==I =IL ?/L ?=u/07}t/ V+t/m=t/u/m=u/= 7L?t/m=u/ N+==I =ILf?/Lf?=u/t/ V+t/m=t/= 7Lk?08}=u/m=t/ N+==I =IL?/L?=u/t/ V+u/m=u/= 7L?==/=/=IL?=/09}=IL?=/` 2L?r/q/ N+??IL@ ??I L8@r/q/ V+xILAxJJJ)8嬅x0:}JJ)e?xJ)8嬅x)e? 3q/m?LGAq/m?ŮLGAq/m?r/ N+?0;}?I ?I ?IL:A??r/q/? .3q/m?q/?IL&As/ =??r/q/? .3LGA?I"LGA K6 3r/m? L0<}Ar/m?ŮLAr/m?q/ N+??I ?I ?ILA??r/q/? .3r/m?r/?ILAs/ =??r/0=}q/? .3LA?I"LA K6 3LA 3`HLB?9?9=9=9 `1 1 2 : /AAr/q/ V+ 3IL]B0>} /LmBI*LmB + & 3B 8 ?B 8 3AAw/ >'8 宅ALBA = 3AILBAs/B/i0?}/ 3s/ILBs/ 3BILBBB 8 9 3// / 3L-B`LCC/C/q/r/t/ u/xx/xy/s/z/{///0@}|/}///⍗/w///v// B``C3// / 3L-B`LCC/C/q/r/t/ u/xx/xy/s/z/{///02hh`p:qhOpOppjP0p1j`pppppppGhppppppB|ppAPp  4B}  BACby%wald!rnold*uli6ersion~4C}~gg 00v|vs?3ppp`  ?3ss<<p07>pB BA0ة4D} `$001X0Y 0̍RJ$J$A ?$} Disk-Doctor v2.0 August '87 (c) by Ewald Arnold 7963 Kreenr4E}ied Р > 6 1> =d>T $ # d>>ɛ d> #L00HH >>-Lu1+Lj1N4F}L61*/݆> L_11݇>1݈>d>1H1H` ?$???` 6 @6L>$ΐ$Ώ$ J: :;`REA(8PRV3HUN4UHU 4DOS4G}*6LIN6WRI78TRA2VER6PRI9;LNKb7EDI7DIR `L2 = 5 r84H}\> +<=>0$$N>O> r8 $$LH2 6 ?$Bitte warten... J:JJ=> ?$Fehlersektor: $$ a% = 3]>\>Q4I}ʽ? f> g>B$$qhL2 }5N>O>f> g> ?$Ende bei: $$ a% = @6La2L3 &$O>N> a% = = 5P>4J}Q> ?$ von: $$ a% = J:JJ 5P>Q> 3 $$ 5 ?$ nach: $$ a% = ?$ Anzahl: Q>P> a% =L 3 =`ʽ?4K}f>?H)g>hJJ]> f>` = r8UN>O>$$ r8$$?N>?)O> &$$$ a% =J J @6 =`L>84L};>L4;> =$J$T>d>H r8h $$LB4d> J:d>>ɛ2" r8)T>@T>LE4d>d>d>T>>"̙@T>T>L_54M}d>JJ@??d>;> @6L_5$b>$c>d>:>T>9C> iL4;>U> @6rd>U>@?̽?@UL4d4N}> &$c>b> a%U ?$Byte: $:> A& ?$ =U:> 3>"U $ $ =]> 3> =d>L4 =`$R>$)$NR>j` c56@4O}@` c569@8`?@` @?` c56I9@@`@8`R>S>R>.S> L5mR>$S>i$ 5`@4P}`@  +6 @6L>L:;C>L66C>X Y Z `$͑$$͒$B 3C> $$ J:`g> f>%$$f>$]>\> 4Q}J:ʽ?JJ\>`8` >$J$$b>$c> r8$$ r8 b>c>L6 6A> ?$ Sektor: DVSTAT: FSTAT: SIOV: J:4R}JJJ=>- >$$ a% > A& > A& >=> 3> =A>$b>$c> @6 =A> 3> ?$ defekte ` 7# r8aHʘ??4S})f>h) f>?9> 7 r82ʽ?)f> f>? 7 r8ʘ? r8$$ j= =`L>d>>* d>d>`` r8$$ J:4T}d>e> U; $TTɛ $L8e>d> :d>` r8$$ J:` r8$$ T:` = ># $ r8HH a% >$ $h A&h A& =`d4U}>8`>ɛ>$轆><& ɛd> h&`>X% ɛd> %`E>L8E>h$$ J: 5 r8$$E>4V}0 }5L8 5h$$ )8 5 T:` +6P>Q> 5$N>$O>h$$ J:N>$O>$ 5 r8$$ J: 5P>Q> @6) 4W}= &$Q>P> a% =L8$$$$ 5F>h$$ 8> r8$$ r88> J:=>` ?$}Freie: ? ? a% =8> 5$$4X}>>P> Q> =$$ a%U 5.*F>. $$$Q> = Q>P>>> $ɛL= $L= >@RL[: >W $$8$$4Y}$ $J$ Y=> j= ==>L>`@ ` !"#$%&Xi(dYie>>d>@>?>?>d)8R4Z}:0L f>d)8::04 f>d>d>?Ȍ?>di(deie>>@> U;d>` >L-; U;d> $ɛd>L<;`d>} $Xd4[}Ye>>?>@>di(deied>HJJJJ: ddh): ȑd: dd>d>?HJJJJ:?>dhH):dȌ?>h )f4\}>h)`JJJJJ: f>dȌ@>'>>0Lj;`<> ) z`.`G>$\> = r8\>G>>> ?$Nr. Status Name Start L nge4]}\>@L0?\>),) i?h>ʈh> <,G>\>>> $L0< ?$- Ende -4^}`h>B>) $i>^>Ȍ9> f>\> 3>U$ $B> A& =-B>ɀ b>-B>? $ = f>9>9>h> . $f>Ua>`>4_} a% U_>^> a% =`$$ %X%i`. => %X%i`9 `ʽ? %X%i`e  3 %X%i`4`}P ]> %[%i`F \%i`G `L$ L$L$ &Lj= $L>) ) L/>L/># `La%$0 -Sgefunden:4a} Sektor: 嚳򚐐򎚐뚐嚐RHR ?$}REA (s)Sektor lesenW4b}RI (s) ' beschreibenEDI (s) ' editierenPRI Pufferinhalt zeigenLNK s,(d,b,z)Sektoren-Links ndern '*' a4c}ls PlatzhalterMAP (s,off)Bitmap anzeigenSET s Sektor in Bitmap setzenCLR s Sektor lschen. Betrifft jeweils 4d}Sektor 360VER (s),(z)Lesbarkeit testenTRA (d),(s)File tracenHUN s String/ZahlenUHU s ' ' nach Strings und4e} Zahlen suchen UHU testet nur 125/253 Bytes '?' als Platzhalter $ ?$}REP (d)Dos-File rep4f}arieren -> nur Bitmap setzen!DIS (ss,b,adr)DisassemblierenDIR (d)DirectoryDOS Dos-File-ModusLIN linearer Mo4g}dus N n chster Dos-Sektor+ - Sektor plus /minus 1ASC nur Ascii-ZeichenKAS alle ZeichenUMR z Zahlenumr4h}echnungHexzahlen mit '$'s/z -> Start/Ziel-Sektord -> Filenummer b -> Byte im Sektor SELECT -> Pause START -> Ende4i}hR`HH`%H$H` $H $hHH` $L*$`hh $LE$HH`H` B Vh`K)4j}I JD$EBLVS:? $$$  $ $ 1`S4k}@ $ Ѝ$$!$ Y`) ) `$$"$`` %X%04l}^%^%X% $^%^%`0 $`0X%0&5&85&0&X%L%m\%\%`_%X%ɛC ?4m}0A:=)X%`%&&em`%&X%ei_%`8`'d HJJJJX& $h)X& $`0123456789ABCDE4n}F:&<&ɛ 80& &&:&ڦ``8` 0@P`p&&& &ҭ&Ҡd2&`4o} r8L>$$&&& r8& r8&& J:`$ $& A&& A& $&&&&?Lo'$ $& A&& A& 4p}$ ' ?$`& & &ii''HLH&U $&&) +H+H`&C> ?L' @6&=>0!&4q}JJ&&&&?`8`BRK0ORA8---0---0---0ORA3ASL3---0PHP0ORA2ASL0---0---0ORA4ASL4---0BPL;ORA9---0---0---0ORA7ASL7---0CL4r}C0ORA6---0---0---0ORA5ASL5---0JSR4AND8---0---0BIT3AND3ROL3---0PLP0AND2ROL1---0BIT4AND4ROL4---0BMI;AND9---0---0---0AND7ROL7---4s}0SEC0AND6---0---0---0AND5ROL5---0RTI0EOR8---0---0---0EOR3LSR3---0PHA0EOR2LSR0---0JMP4EOR4LSR4---0BVC;EOR9---0---0---0EOR7LSR74t}---0CLI0EOR6---0---0---0EOR5LSR5---0RTS0ADC8---0---0---0ADC3ROR3---0PLA0ADC2ROR0---0JMP:ADC4ROR4---0BVS;ADC9---0---0---0ADC7R4u}OR7---0SEI0ADC6---0---0---0ADC5ROR5---0---0STA8---0---0STY3STA3STX3---0DEY0---0TXA0---0STY4STA4STX4---0BCC;STA9---0---0STY7ST4v}A7STX<---0TYA0STA6TXS0---0---0STA5---0---0LDY2LDA8LDX2---0LDY3LDA3LDX3---0TAY0LDA2TAX0---0LDY4LDA4LDX4---0BCS;LDA9---0---0LDY4w}7LDA7LDX<---0CLV0LDA6TSX0---0LDY5LDA5LDX6---0CPY2CMP8---0---0CPY3CMP3DEC3---0INY0CMP2DEX0---0CPY4CMP4DEC4---0BNE;CMP9---0---04x}---0CMP7DEC7---0CLD0CMP6---0---0---0CMP5DEC5---0CPX2SBC8---0---0CPX3SBC3INC3---0INX0SBC2NOP0---0CPX4SBC4INC4---0BEQ;SBC9---0-4y}--0---0SBC7INC7---0SED0SBC6---0---0---0SBC5INC5---0,,),-6,>,L,l,~,,%-,Z,& U A&&$U -L4- ?$ #$ -L4-U 9-L4-U 94z}- ?$,XL4-U 9- ?$,YL4- ?$ $ - ?$,YL4- ?$ $ - ?$,XL4- ?$ ($ - ?$,X)L4- ?$ ($ - ?$),YL4- ?$ - $ '&0&&4{}m&H&iL,Ii&&8&&H& A&h A&U& - U& A&U& A&$U& -& -L4- ?$ $ -L4- ?$ ( 9-) $L$ ?$$4|} '& '& A&& A&UH U& A& $& A& $& A&$U& -& -& -hU` '& A&UH U& A& $& A&$U& 4}}-& -hU`ɛ) `0 `<|>fff;0~0006~ ~1~>>`|x||v```ff;~~Qx(2R , + 1̍3 , ++ ,M,,,8},ɏ +i +Ɏ +8 +ɇ+ɆΏ+ɹɀL)L4 L *-H--h--H--h- (L)H88h`--L)8}---- (L)* **L(*΋* * *L(H+)+h?Ɋɽɒ27t4!]ɜ%9ɠɧ4ɶ?ɢ ɾɸL(8}L(L) )0L(<-- (L)-I--I-8L) +,Y--L) +,--L) +-=,- X+i)i8)<-8}+-+++.++.+>ΐ+8L(<---- (L(R X+eԅԩ8eՅթ+ ,c. ,d. ,e. ,: 8}, ,+i1 ,. , ,$ ,+ *++ )ͩ ,LH* ,L(HJJJJ* ,h)* ,`0123456789ABCDEF8}* *O.*P.`* 3H-3h-3H-3h-i@` X+eԅԩ8eՅՠ<ԍ++++>->8}-+>->-ΐ+8`++ .+ .+ .++,++) + & & &Յ`,JJ+, im+,)`( ) 8}0 1+ԍ,,0ԩ,5"-#ԩЩlc-`HH`HH`4,), iw,8}4,), ilc-+) i>_-+)`JJ+JJJ +i%,4`(c.d.e.ݬ, ,c.L,`d ̝88}͝9Ν:ϝ;`@ `?0 HHV-W-ԩнl- ԍнs-нz-н- Խ-нe-н^-V-hh8}@V-T-T-)JU-f-) U-f-L_"=!!!="t88888}@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^8}_@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_^:eichen.ummerc by%!@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ 8} !"#$%&'()*+,-./0123456789:;<=>?`abcdefghijklmnopqrstuvwxyz{|}~}  Ƞ8} Fehler! Nummer: Abbruch mit Ctrl-X,  laden von: Abbruch mit Ctrl-X,  speichern von: a8}den, aven, nhalt-> Eingabe? ՄԠ/ ,/Ȍ/L/`0///ݬ, ,/L// ,/ ,/ ,`8}L'1/ /   >L50"0#0 /? /Lj0/m // , /ɛ1/Lt0 ,ɛ 1L1.FN8}T011pD1E"0JB V0'p#0BHID8E V0 1L11/& /1 / , ,p B V`8}. /`RpD1EJB V011 , 10 111 m1LF1` m1L0pB՝D1EH8}I V`11A 111 /`D1:*.*D1: 1* '@BO.pBw.8}0/.0D.H-BA v0 1y z  y $z LM 0 1L(ppB 8}Av #ontrol %3# ,aden3aven$irectory0feiltasten #ursorsteuerung#ontrol 0feilt8}asten :eichenauswahl3paceinvertiert )nsertsetztund$el backsplOschteinen0unktim%ditierfeld8}倴쁀 tauscht%ditierfeld+op8}ierregister +opierregister legt%ditierfeldin2egisterab holt2egisterins%ditierf8}eld listet(exwertedes:eichens invertiert%ditierfeld lOscht%ditierfeld8} kopiert%ditierfeldnach2egister ablegenabholendes3tack inhaltsin2egister-aximal8}:eichenkOnnengespeichertwerden !nzeigelinksoben8}倒$erobere"lockzeigtdenganzen:eichensatz daruntereine'2:eilemitgeKnder8}tem'4)! -odusjevier"itwKhlendie&arbe daruntereinenormale'2:eile8}!lle{nderungenim%ditierfeldwerdensofortinden:eichensatzJbertragenundumgekehrtbei:ei8}chenwechsel8} 8} 6iel3passwJnscht8}%wald!rnold+reenried8}們(+reenried87,LE  B JKIHiDiELV`L , , BLV`L|,x,<}l Ly, &` Fj`8冨凪` ,EӅӥ ,`ʆǪƩ Ɛe<}e` ,ƦʆǢ &Ɛeǐ , ,L, ,'&&&8儨児祂*L,&&*ń<}8&&L, >-`hihiHHȱȱL,c !#3`Ly,JJJJ`H ,h<}`Hȩh U,L- ^,L- ,L- ,L- ,H8`HhHh B<}.L- BHI V䅠L- Ly. ,L-Ԇ ؠPIPP` .P ,L- .L.<} .L. .L.S:/E:/H /. / / - /.h)0I//L-[\ZUVT``Hh<}Ģ`ƥĤ`TH,7)/ /`ETURNL/ -//////B//m///i//<}///D//m///i////ȑ//H//m///i////ȑ// V`2, <} Lk0 -c0g0f0e0d0c0 /`5,h0ME'0Qycode=764; , I00BYTE ALLCHR,GF_ERR 0000DEFINE TEXTLE<}N="100,0 1 FONTPA"8"0%10 F0"D:*.* 02 @@ LO11`$BYX ARRL_1 <}-S1V1W1Y1X1T1Z1(S1 -X1eY1emZ1X1iY1X1Y1[1[1L18[1逍[1L1<}[1i[1X1Y1[1X1Y1Z1Z1MU1L1`'32 BL2 -222222 \1@ w.22I=L|2222 \1<}22Lj22Lp222222 \12I-L2222 \122L2822L222222 \12IL2222 \12`L<}/2L2R} .L3(򠠠2 5.LH3(é𠠠3 5.<} :/L3*ˠ3[ ".`L3L33 ".`L3L3<}3 ".`L3 :/R . 3L"4| Textfile laden |4 ".LJ4| Directory |4, <}".Lr4| Textfile auf Bildschirm |4T ".L4| Drucken |4| ".L4| Zeichensatz laden |4 ".L4<}| Atari Zeichensatz |4 ". 3 :/L5 5 5.00 . :/LH5 <}52 5.1 .R`5L^5 :/R . 3L5| I/O Fehler ist aufgetreten|5t ".L5| |5 ".L5|<} ** druecken ** |5 ". 3 w.Z5Z5IL5 2`L6R :/ .L(6 6 ".L@6 | kein File |6<}2 ".LX6 | geladen |6J ".Lp6 6b ".` L|6 :/L66 ". w.x6x6IL6` L6N<}1{,M1z,1 /.L6D:*.*6ש - 2R :/1Lx760 c.1IL%7Lr70 ".66ILF7R<} :/6I"Lh7 y6 2R :/6IL 7 y6L{7 [5 3`Z7L71IL9R :/ .L77<} ".L7| Probedruck auf |7 ".L7| Bildschirm |7 ".L8| -------------- |7 ".L28| = langsam |8 <}".LQ8| fuer Menue |8< ".Lp8| |8[ ".L8| druecken |8z ".L88 "<}. w.77IL8R} .0070m00m077I&L9 .77 .L/97IL)9 .7L/97 .<}007I!L90Ȍ0͐000Lg900LM90Ȍ0͐000L900Lu9IL9L90M0 0M0L<}8 . . . y6 2L9 6 3`L9L9| |9 ".L :| gebe den Filenamen ein: |: ".LH:<}| |:* ".Lp:|  |:R ".L:| |D: | |:z ".L:| <}  |: ". 3 9 0 W/0D0:09 :/@ w.99*LD;Z9LD;9<}LD;9 .89 9099I~L; 9L;8999 :/ .89 909IL;L;L:N1{,M1z,1<} /.0 -`L;R :/ . 3L;| |; ". 91L< h0 11L)<<} 1 [5L6< y6 3`L=<R :/ . 3Lq<|  |83=6= 1}D16= 183=3=3=L=<}86=6=6=L=`TE("|L->%>%>LK>18%>逍%>LP>1%>'>%>Ls>%>Ls>%>i@'>%> L>_%>L>8%> '><} 1IL> -'> -e(>e)>&>&>L?(>)>&> 1(>)>&>L<}>`ETUL??? *> 7= .A . .1 .?? 1?1IL^??I?? .8??81?ELC?`*L??<}0L?? L?z͂?L?? .L?? ?`)L?1IL^DR :/ .L?? ".L @| <} |? ".L)@| |@ ".LG@| Welches Format? |@3 ".Le@| |@Q ".L@| 38 Zeichen |<}@o ".L@| 60 Zeichen |@ ".L@@ ". 2?8? 1R :/ . 3LA| <} |@ ".L=A| |A ".LeA| nur Sonderzeichen vom FONT|AG ".LA| alle Zeic<}hen vom FONT |Ao ". 3"  2?8?0R :/ .LAA ".LA|  |A<} ".LB| |B ".L3B| Papier einlegen |B ".LQB| und Drucker an- |B= ".LoB| schalten , dann |B[ ".L<}B| Return druecken |By ".LBB ". w.??ILB R :/ .LBB ".LC|<}= MENUE|B ".LCC ".1 /.L4CP:C1 -1LKD1LC00?0m00m0<}??I&LC .?? ?LC?ILC .?LC? ?00?I1LCLC0M0 0M0LcCLKD00<}0m00m0??ILD .LD? ?00I1L8DLKD0M0 0M0LC1LVD [5 /.LdD 6 y6 2 3` <} LpD /1 1 /.LDK:D -' 00 W/@ҩ G/@ G/  2 3   2<}lDlDILD :1000 THEN FLAG=1 FIUNTIL PEEK(53279)=6ODSNDRST()RETURN +10 FI IF FLAG=1 AND WWP<500 THEN FLAG=2 F|RPROGRAM ATARI; BEGIN WRITELN('HALLO'); END.END. WRITELN(''); WRITELN;DRUCK; BUBBLESORT;WRITE1PROGRAM VARDEMO;VAR A1:INTEGER; B1:REAL;BEGIN A1:=1; B1:=1;WRITELN(A1);WRITELN(B1);END. LESORT;WRITEpPROGRAM LOOPDEMO;VAR I:INTEGER; BEGIN FOR I:=1 TO 5 DO WRITELN('ATARI'); WRITELN('----------'); FOR I:=1 TO} 5 DO BEGIN WRITELN('ATARI'); WRITELN('IST SUPER'); END;END. ('ATARI'); WRITELN('----------'); FOR I:=1 TOLPROGRAM READDEMO;VAR I,I1,I2:INTEGER; BEGIN WRITELN('HALLO'); WRITELN('BITTE EINE GERADE ZAHL EINGEBEN'); READ}LN(I); WRITELN('DIE ZAHLEN WAR :',I); WRITELN('STIMMT, ODER ???'); WRITELN('-------------------------------------'); W}RITELN('NUN BITTE ZWEI ZAHLEN EINGEBEN'); READLN(I1,I2); WRITELN('DIE ZAHLEN WAREN :',I1,' UND ',I2); WRITELN('STIMMT, O}DER ???');END. EI ZAHLEN EINGEBEN'); READLN(I1,I2); WRITELN('DIE ZAHLEN WAREN :',I1,' UND ',I2); WRITELN('STIMMT, OPROGRAM IFTHENDEMO;(*DIES IST EIN DEMONSTRATIONSPROGRAMM *)VAR A,I:INTEGER;BEGIN WRITELN('BITTE EINE ZAHL EINGEBEN (1 } BIS 10)'); READLN(A); IF A<5 THEN WRITELN('ZAHL IST KLEINER ALS 5 !'); IF A>=5 THEN BEGIN WRITELN('-------- }-----------------'); WRITELN('ZAHL IST GROESSER= ALS 5!'); WRITELN('-------------------------'); END; WRITELN;WRIT }ELN;WRITELN('WIEVIEL MAL (1 BIS 10)');READLN(I); IF (I>=1) AND (I<=10) THEN FOR A:=1 TO I DO WRITELN('A }TARI!');END.(* man beachte bei der IF THEN Anweisung wenn mehrere Bedingungen verknuepft werden, die Einzelbedingung }en in Klammern gesetzt werden muessen !!!*)eisung wenn mehrere Bedingungen verknuepft werden, die Einzelbedingung1PROGRAM ELSEDEMO;VAR A,I:INTEGER;BEGIN WRITELN('BITTE EINE ZAHL VON 1 BIS 10 EINGEBEN'); READLN(A); IF A<=5 THEN } WRITELN('ZAHL IST <= 5') ELSE WRITELN('ZAHL IST > 5'); (* -----------------------------------*) WRITELN('BITTE N}OCH NE ZAHL VON 1 BIS 10 ???'); READLN(A); IF A<=5 THEN BEGIN WRITELN('-------------'); WRITELN('ZAHL IST <= 5');} WRITELN('-------------'); END ELSE BEGIN WRITELN('------------'); WRITELN('ZAHL IST > 5'); WRITELN('------}------'); END; END.---'); END ELSE BEGIN WRITELN('------------'); WRITELN('ZAHL IST > 5'); WRITELN('------PROGRAM TAUSCHSORT;CONST MAX=100;VAR FELD: ARRAY[1..MAX] OF INTEGER; (* FUNKTION ZUR ERZEUGUNG VON ZUFALLS- ZAHLE}N *)FUNCTION RAND: INTEGER;BEGIN RAND:=0;#A LDA $D20A ;Random Hardwareadresse ;liefert Zufallszahl } ;von 0 - 255 LDY #5 STA (_SP), Y ;#END;(* ----------------------------------*)PROCEDURE CREATE;VAR C}1:INTEGER;BEGIN FOR C1:=1 TO MAX DO FELD[C1]:=RAND;END; PROCEDURE DRUCK; VAR C1:INTEGER;BEGIN FOR C}1:=1 TO MAX DO WRITELN(C1,' -- ',FELD[C1]); WRITELN;END;PROCEDURE TAUSCHSORT;VAR C1,I1,I2,H:INTEGER;BEGIN FO}R I1:=1 TO MAX-1 DO FOR I2:=I1+1 TO MAX DO IF FELD[I2]}(SX,SY) UNTIL ZZ=32 OD COLOR=173 PLOT(SX,SY) OD FIRETURN;*********** PM - TABELLE ***********PROC PMT ()?} BYTE TOP=106,PMB=54279,PMK=53277, PRIO=623 ZERO (39936,1024) TOP=152 PMB=152 PMK=3 PRIO=4 F0=CZ RETURN;**********@}* ZEICHENSATZ ************PROC ZEICHEN () BYTE I BYTE P56=756 MOVEBLOCK (CH,57344,1024) MOVEBLOCK (1585,BALL,40) MOVEBLA}OCK (1630,LOCH,40) MOVEBLOCK (1675,SPIN,40) MOVEBLOCK (1720,SCHA,40) MOVEBLOCK (1763,PMOB,28) MOVEBLOCK (CH+24,ZAUN,64) B}GRAPHICS (2+16) P56=152 P08=198 P09=55 P10=150 P11=25 P12=146 SCR=62RETURN;*********** TITELSCHRIFT ***********PROC SCHRIC}FT () BYTE P60,P61 CARD DL BA SCH=[0 0 71 8 6 1 0 0 0 0 0 98 0 108 0 97 0 122 0 101 0 114 0 105 105 0 0 D}0 0 17 25 24 23 0 34 57 0 225 243 244 242 239 243 239 230 244 0 0] MOVEBLOCK (1536,SCH,48)E} DL=PEEKC(560) POKE (DL,1) POKE (DL+1,0) POKE (DL+2,6) P60=PEEK(560)+2 P61=PEEK(561) P42=P60 P43=P61 RETURNF};************* BALLPLOT *************PROC BAL(BYTE C,X,Y) COLOR=C PLOT (X,Y)RETURN;******* HISCORE-LADEROUTINE ********G}PROC LAD () CLOSE(1) OPEN (1,"D:BLAZER.DAT",4,0) HSC=INPUTCD (1) CLOSE (1) POKEY_INIT()RETURN;******* HISCORE-SAVEROUTH}INE ********PROC SAV () CLOSE(1) OPEN (1,"D:BLAZER.DAT",8,0) PRINTCD (1,HSC*10) CLOSE (1) POKEY_INIT()RETURN;********I} SOUND-UNTERPROGRAMM *******PROC SOUNDS () SOUND (0,BS(BZ),10,HB(LB)) SOUND (1,GU(GZ),10,HG(LG)) IF SH(SZ)#1 THEN SJ}OUND (2,SH(SZ), 8,HS(LS)) FI IF DR(DZ) THEN SOUND (3,DR(DZ), 0,HD(LD)) FI ZB==+1 ZS==+1 ZG==+1 ZD==+1 IF ZB=BL(BZ)K} THEN LB==-1 ZB=0 IF LB<0 THEN LB=15 BZ==+1 IF BZ=19 THEN BZ=0 FI FI FI IF ZS=SL(SZ) THEN LS==-1L} ZS=0 IF LS<0 THEN LS=15 SZ==+1 IF SZ=33 THEN SZ=0 FI FI FI IF ZG=GL(GZ) THEN LG==-1 ZG=0 IF LGHSC THEN HSC=SC SAV () FI SNDRST () POSITION (5,4) PRINTCD (6,SC) PRINTD (6," PnT") PS}OSITION (2,7) PRINTD(6,"h : ") PRINTCD (6,HSC) PRINTD (6," uKt") DO IF P79=6 OR ST=0 THEN EXIT ELSE Q=T}=+1 IF Q=125 THEN SOUNDS () Q=0 FI FI OD RESTART () FIRETURN ;************* SUBMONS ********U}******PROC KON (BYTE ZM) COLOR=12 PLOT (XM,YM) IF ZM=129 THEN TOD () COLOR=129 PLOT (X,Y) XM=(19-X) YM=(11-Y) ZM=LV}OCATE(XM,YM) IF ZM<>32 THEN DO IF ZM<>32 THEN XM=RAND(18)+1 YM=RAND(11)+1 ZM=LOCATE (XM,YM) W} ELSE EXIT FI OD FI FIRETURN ;*********** KOLLISION ? ************PROC KOL () BYTE P P=P52 P78=0 IF X}P=8 AND BED=0 THEN TOD () ZERO (39936,255) XS=52 YS=40 P78=0 FIRETURN;********** PLAYERMOVEMENT **********PROC PMOV (Y}BYTE F) IF XS+XPS>197 OR XS+XPS<51 THEN XPS=-XPS SOUND (0,50,14,10) WAIT (200) FI IF YS+YPS>209 OR YS+YPS<40 THEN YPS=Z}-YPS SOUND (0,51,14,10) WAIT (200) FI XS=XS+XPS YS=YS+YPS XP=XS MOVEBLOCK(39936+YS,1763+F*14,14) KOL ()RETURN;********[}**** TENNISBALL ************PROC STEUER ()RETURN;************* MONSTER **************PROC MONSTER ()RETURN;******** ANI\}MIERTE GRAFIK ********* PROC DREH () MOVEBLOCK (CH+8,1585+Z*8,8) MOVEBLOCK (CH+16,1630+Z*8,8) MOVEBLOCK (CH+96,1675+Z*]}8,8) MOVEBLOCK (CH+104,1720+Z*8,8) F0=CZRETURN;*********** LEVELBERICHT ***********PROC LEVBER () BYTE W=[0],F=[0],O=^}[0] CARD Q=[0] SNDRST () BED=1 FELD (0) DEVICE=6 POSITION (3,2) PRINT("LEVEL : ") PRINTBE(LEV) POSITION (3,4) PRINT_}("leben : ") PRINTBE(LE) POSITION (3,6) PRINT(" : ") PRINTC(SC) DEVICE=0 IF SC=0 THEN LAD () FI POSITION (3,8)`} PRINTD(6," : ") PRINTCDE(6,HSC) LEVKON==/3 Q=0 SNDRST () DO Q==+1 IF Q=LEVKON THEN PMOV () F==+1 W==+1 Ia}F W=5 THEN W=0 Z==+1 FI SOUNDS () IF Z=5 THEN Z=0 FI SOUNDS () IF F=2 THEN F=0 O==+1 FI SOUNDb}S () IF O=5 THEN O=0 QQ=1 MONSTER () QQ=0 FI STEUER () DREH () SOUNDS() Q=0 ELSE IF P79=6 OR ST=0 THEN c} EXIT FI FI OD BED=0 LEVKON==*3 SNDRST ()RETURN;************ NEUES LEVEL ***********PROC LEVEL ()BYTE I,J,Q SNd}DRST () LEV==+1 LEVKON=1250-LEV*50 FOR I=1 TO 15 DO FOR J=1 TO I DO DO Q==+1 UNTIL Q=200 OD Q=0e} SOUND (0,J,10,I) SOUND (1,I,10,J) OD OD LEVBER () PUTD(6,125) FELD(1)RETURN;******** SCHATZ AUFGENOMMEN *******f}*PROC SCHATZ (BYTE Z) BYTE P,I,J,K P=(Z+1)*5+5 SC==+P SS==+1 IF SS=SCHZ THEN LEVEL () SS=0 FIq}JM[\@}   *@Xu+B-堲-B&%DOS SYSBKMENUE POWBNMESSAGE COMB\BLDZEI POWB:BLDZEI TURB B-----------B- C.COM -B- Files -B-----------B B=BLAZER COMB=ADSKDOC COMB*~ZDESIGN COMB4LIST1029COMB B-----------B- Action! -B-Programme-B-----------B BINPDEMO ACTBVALDEMO ACTBSTRDEMO ACTBSCOPDEMOACTBCOPSDEMOACTBASSIDEMOACTBCOMPDEMOACTBTSORT ACTBBUBBSORTACTB ROTATOR ACTBcBLAZER2 ACTBSOUNDS ACTB"ROCK ACTBCOMP5 ACTB.HURRIC ACTBBLAZER DATB-----------BERSTDEMOPASBVARDEMO PASBLOOPDEMOPASB READDEMOPASBIFDEMO PASBELSEDEMOPASBTAUSCH PASB !BUBBLE PASB-----------B+PASCAL1 KRSBAPASCAL2 KRSBYPASCAL3 KRSBvPASCAL4 KRSBBEF6 KRSBBEF7 KRSB*SORT KRSBSCROLL OBJBDLIS OBJBKURSMENUPOWBDRUCKEN POWB>BLDZEI PICBEISPIELZS1 FOR I=0 TO 15 DO K=15!I FOR J=0 TO 15 DO SOUND (0,40,10,K) OD ODRETURN;********* MONSTERSTEUERUNG *********r}PROC MONS () BYTE XMS=[0],YMS=[0],ZM, SPX=[0],SPY=[0],ZC ZC=LOCATE (XM,YM) IF ZC=12 THEN ZC=32 FI IF ZC=32 THEN s}COLOR=12 PLOT (XM,YM) FI;* Richtung X * IF X>XM THEN XMS=1 ELSEIF X=XM THEN XMS=0 ELSE XMS=-1 FI;* Richtung Y *t} IF Y>YM THEN YMS=1 ELSEIF Y=YM THEN YMS=0 ELSE YMS=-1 FI IF LX=0 AND LY=0 THEN IF XMS<>0 THEN YMS=(RAND(2)+1u})*2-3 SPY=1 ELSE XMS=(RAND(2)+1)*2-3 SPX=1 FI FI;* Kontrolle X&Y * ZM=LOCATE (XM+XMS,YM+YMS) IF ZM=32 OR (ZM=129 Av}ND QQ=0) THEN COLOR=ZC PLOT (XM,YM) XM=XM+XMS YM=YM+YMS KON (ZM) ELSE;* Kontrolle X * ZM=LOCATE(XM+XMS,YM) IF ZM=w}32 OR (ZM=129 AND QQ=0) THEN COLOR=ZC PLOT (XM,YM) XM==+XMS KON (ZM) ELSE XMS=0 FI;* Kontrolle Y * ZM=LOCx}ATE(XM,YM+YMS) IF ZM=32 OR (ZM=129 AND QQ=0) THEN COLOR=ZC PLOT (XM,YM) YM==+YMS KON (ZM) ELSE YMS=0 FI Fy}I LX=XMS LY=YMS IF SPX=1 THEN SPX=0 LX=0 FI IF SPY=1 THEN SPY=0 LY=0 FIRETURN ;*********** BALLSTEUERUNG *******z}***PROC BALLMOV () BYTE XX=[0],YY=[0],C,ZC,ZZ,Q=[0] ZC=LOCATE (X,Y) IF ZC=129 THEN ZC=32 FI IF ZC=32 THEN COLOR=129 PL{}OT (X,Y) FI IF SI#15 THEN XX=-(SI RSH 3 & 1) +(SI RSH 2 & 1) YY=-(SI RSH 1 & 1) +(SI & 1) SOUNDS () IF X+|}XX<19 AND X+XX>0 THEN ZZ=LOCATE (X+XX,Y) IF ZZ=32 OR ZZ=129 OR ZZ=173 THEN C=ZC BAL (C,X,Y) X==+XX IF ZZ=173 TH}}EN SCHATZ (Z) Q=0 FI C=129 BAL (C,X,Y) ELSEIF ZZ=34 THEN TOD () FI FI SOUNDS () IF Y+YY<1~}1 AND Y+YY>0 THEN ZZ=LOCATE (X,Y+YY) IF ZZ=32 OR ZZ=129 OR ZZ=173 THEN C=ZC BAL (C,X,Y) Y==+YY IF ZZ=173} THEN SCHATZ (Z) Q=0 FI C=129 BAL (C,X,Y) ELSEIF ZZ=34 THEN TOD () FI FI SOUNDS () ELSE} SOUNDS () FIRETURN;*********** HAUPTROUTINE ***********PROC MAIN () BYTE XX=[0],YY=[0],C,ZZ,Q=[0],W=[0], F=[0] }STEUER=BALLMOV MONSTER=MONS PMT () ZEICHEN () SCHRIFT () LEVBER () FELD (1);* Hauptschleife * DO XX=0 YY=0 COLOR=}129 PLOT(X,Y) SOUNDS () IF P64=28 THEN P64=255 RESTART () ELSEIF P64=42 THEN SNDRST () BREAK () FI SOUN}DS () PMOV (F) BALLMOV () PMOV (F) SOUNDS () Q==+1 W==+1 IF Q>10-LEV/2 THEN Q=0 MONS () FI SOUNDS () IF} W=5 THEN W=0 Z==+1 F==+1 CZ==+16 FI SOUNDS () IF Z=5 THEN Z=0 FI SOUNDS () IF F=2 THEN F=0 FI} PMOV (F) DREH () SOUNDS () WAIT (LEVKON) SOUNDS () ODRETURNPROC START () RESTART=START X=1 Y=1 XM=18 YM=10 X}S=120 YS=120 Z=1 XPS=1 YPS=1 LX=1 LY=1 SCHZ=0 SS=0 CZ=8 LEVKON=1250 LEV=0 SC=0 LE=5 SCR=0 MAIN ()RETURN;*************} THE END *************LX=1 LY=1 SCHZ=0 SS=0 CZ=8 LEVKON=1250 LEV=0 SC=0 LE=5 SCR=0 MAIN ()RETURN;*************;*********************************;* * ;***** SOUND - GRUNDPROGRAMM *****;* } * ;***** (c) 1987 by ASTROSOFT *****;* *;*********************************;}DEFINE BA="BYTE ARRAY", C1="243",CS1="230",D1="217", DS1="204",E1="193",F1="182", FS1="173",G1="162",GS1}="153", A1="144",AS1="136",B1="128", C2="121",CS2="114",D2="108", DS2="102",E2="96",F2="91", FS2=}"85",G2="81",GS2="76", A2="72",AS2="68",B2="64", C3="60",CS3="57",D3="53", DS3="50",E3="47",F3="45", } FS3="42",G3="40",GS3="37", A3="35",AS3="33",B3="31", C4="29", D="64",G="32",HP="24",H="16", V}P="12",V="8",AP="6", A="4",SP="3",S="2",Z="1", N="0",E="1", M="6",P="10",Q="12",R="15", T="16",U=}"18",X="23",Y="27", C="70",B="99"; *** TON/LAENGENDATAS ***BA BS=[] ; TONHOEHEN BASSBA BL=[] ; TONLAENGEN BASSBA }SH=[] ; TONHOEHEN DRUM1BA SL=[] ; TONLAENGEN DRUM2BA GU=[] ; TONHOEHEN MELODIEBA GL=[] ; TONLAENGEN MELODIEBA DR=[] ; T}ONHOEHEN DRUM2BA DL=[] ; TONLAENGEN DRUM2; *** HUELLKURVENDATAS ***BA HB=[0 1 1 1 1 1 1 2 2 2 2 2 3 3 3 3] BA HS=}[0 1 1 1 1 1 2 2 2 3 4 5 6 8 10 13]BA HG=[2 3 3 3 4 4 5 5 6 6 7 7 7 6 6 5]BA HD=[0 0 0 0 0 0 0 0 0 0} 1 3 5 6 7 7];*************************;;********* LEERLAUFSCHLEIFE *********PROC WAIT (BYTE W) BYTE I FOR I=1 TO W DO} ODRETURNPROC POKEY_INIT=$E465()RETURN;****** SOUND - HAUPTPROGRAMM *******PROC SOUNDS () BYTE BZ=[0],SZ=[0],GZ=[0]},DZ=[0] BYTE ZB=[0],ZS=[0],ZG=[0],ZD=[0] BYTE P4=764,I,SCR=559 INT LB=[15],LS=[15],LG=[15],LD=[15] POKEY_INIT() ; ԅ}Π SCR=0 SNDRST () DO SOUND (0,BS(BZ),10,HB(LB)) SOUND (1,GU(GZ),10,HG(LG)) IF SH(SZ)#1 THEN SOUND (}2,SH(SZ), 8,HS(LS)) FI IF DR(DZ) THEN SOUND (3,DR(DZ), 0,HD(LD)) FI ZB==+1 ZS==+1 ZG==+1 ZD==+1 IF P4#255 THEN } SCR=34 SNDRST() BREAK() FI;*** Bass *** IF ZB=BL(BZ) THEN LB==-1 ZB=0 IF LB<0 THEN LB=15 BZ==+1 IF B}Z=0 THEN BZ=0 FI FI FI;*** Drum1 *** IF ZS=SL(SZ) THEN LS==-1 ZS=0 IF LS<0 THEN LS=15 SZ==+1 IF SZ}=0 THEN SZ=0 FI FI FI; *** Melodie *** IF ZG=GL(GZ) THEN LG==-1 ZG=0 IF LG<0 THEN LG=15 GZ==+1 } IF GZ=0 THEN GZ=0 FI FI FI;*** Drum2 *** IF ZD=DL(DZ) THEN LD==-1 ZD=0 IF LD<0 THEN LD=15 DZ==+1} IF DZ=0 THEN DZ=0 FI FI FI WAIT (250) ;<-- Tempo veraenderbar! OD ;(Achtung Byte-Variable!)RETURN}F DZ=0 THEN DZ=0 FI FI FI WAIT (250) ;<-- Tempo veraenderbar! OD ;(Achtung Byte-Variable!)RETURN;******* E U R O P E ******;;***** ROCK THE NIGHT *****;;* programed by ASTROSOFT *;DEFINE BA="BYTE ARRAY", C1="}243",CS1="230",D1="217", DS1="204",E1="193",F1="182", FS1="173",G1="162",GS1="153", A1="144",AS1="136",B}1="128", C2="121",CS2="114",D2="108", DS2="102",E2="96",F2="91", FS2="85",G2="81",GS2="76", A2="7}2",AS2="68",B2="64", C3="60",CS3="57",D3="53", DS3="50",E3="47",F3="45", FS3="42",G3="40",GS3="37", } A3="35",AS3="33",B3="31", C4="29", G="32",HP="24",H="16", VP="12",V="8",AP="6", A="4",SP="3",S}="2",Z="1", N="0",E="1",T="10",U="12", B="99"; *** TON/LAENGENDATAS ***BA BS=[E1 D1 D1 E1 N N D1 D1 } C1 G1 D1 N N DS1 DS1 E1 N N D1 D1 E1 D1 D1 C1 G1 D1 D1 E1 D1 FS1 G1 D1 } E1 C1 E1 D1 FS1 G1 D1 B1 N A1 A1 B1 N A1 A1 B1 C1 D1 E1 G1 D1 A1 E1 }G1 D1 A1 E1 G1 D1 A1 E1 G1 D1 A1 C1 C1 N N D1 D1]BA BL=[HP A A V V} V A A HP V V V V S AP V V V A A HP A A H H H A A S AP H H H A A S }AP H H V V A A V H A A V H H H H H H H H H H H H H} H H H H H G V V V A A]BA SH=[T E U E T E U E N T E U E T E U E N N]BA S}L=[A VP A VP A VP A V A A VP A VP A VP A V S S]BA GU=[N E3 D3 B2 D3 E3 E3 N D3 E3 D3 B2 } N E3 E3 E3 E3 E3 G3 G3 G3 G3 G3 FS3 FS3 D3 FS3 N D3 D3 B2 D3 D3 E3 N G3 FS3 E3 E3 E3 D3 B2 B2 } N E3 E3 E3 G3 G3 G3 G3 G3 A3 A3 G3 G3 FS3 FS3 FS3 N G3 G3 G3 G3 A3 FS3 E3 D3 E3 D3 E3 E3 D3 E3 G3 } N G3 G3 G3 G3 A3 FS3 N FS3 FS3 FS3 FS3 FS3 E3 FS3 FS3 E3 E3 E3 FS3 FS3 E3 FS3 G3 A3 A3 G3 FS3 E3 } G3 E3 D3 E3 E3 E3 N FS3 FS3 FS3 FS3 FS3 FS3 E3 E3 E3 G3 E3 D3 E3 E3 E3 G3 FS3 N FS3 E3 N G}3 E3 D3 E3 E3 E3 N FS3 FS3 FS3 FS3 G3 G3 FS3 E3 G3 E3 D3 E3 E3 E3 G3 FS3 N FS3 E3 N N B3 A3 G3 E}3 G3 A3 G3 G3 N]BA GL=[A A A A AP S V A A A A H A S S S S A AP S A A A A A A H A A S }A S A VP A A S A S S S A V AP S S A S A A S A S A A S A S H AP S S S A V S S A S A S A A }A VP AP S S S A AP S A S S A A A S S H A A A A H A A A A A A A A V V A S S V AP }S S S S S A S S V V V A S S A A V A A V V V V A S S V AP S S S S S A A V V V A S S A A } V A A V V A A S S A S S A V G]BA DR=[B N B N B N B N B B]BA DL=[S AP S AP S AP S S S S]; *** HUELLKUR}VENDATAS ***BA HB=[0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3] BA HS=[0 0 1 1 1 1 2 2 2 3 4 4 5 6 8 11]BA HG=[2 3 4 5 5} 6 6 6 7 7 8 8 7 7 6 5]BA HD=[0 0 0 0 0 0 0 0 0 0 1 3 4 5 6 7];*************************;PROC WAIT (BYTE }W) BYTE I FOR I=1 TO W DO ODRETURNPROC POKEY_INIT=$E465()RETURN;*********** HAUPTPROGRAMM **********PROC SOUNDS (}) BYTE BZ=[0],SZ=[0],GZ=[0],DZ=[0] BYTE ZB=[0],ZS=[0],ZG=[0],ZD=[0] BYTE P=764,I,SCR=559 INT LB=[15],LS=[15],LG=[15],LD=}[15] POKEY_INIT() SCR=0 SNDRST () DO SOUND (0,BS(BZ),10,HB(LB)) SOUND (1,GU(GZ),10,HG(LG)) IF SH(SZ)#1 THEN SOUND} (2,SH(SZ), 8,HS(LS)) FI IF DR(DZ) THEN SOUND (3,DR(DZ), 0,HD(LD)) FI ZB==+1 ZS==+1 ZG==+1 ZD==+1 IF P=28 THEN } SCR=34 SNDRST() BREAK() FI IF ZB=BL(BZ) THEN LB==-1 ZB=0 IF LB<0 THEN LB=15 BZ==+1 IF BZ=72 THEN } BZ=0 FI FI FI IF ZS=SL(SZ) THEN LS==-1 ZS=0 IF LS<0 THEN LS=15 SZ==+1 IF SZ=19 THEN SZ=0 } FI FI FI IF ZG=GL(GZ) THEN LG==-1 ZG=0 IF LG<0 THEN LG=15 GZ==+1 IF GZ=169 THEN G}Z=0 FI FI FI IF ZD=DL(DZ) THEN LD==-1 ZD=0 IF LD<0 THEN LD=15 DZ==+1 IF DZ}=10 THEN DZ=0 FI FI FI WAIT (200) WAIT (200) ODRETURN ZD=0 IF LD<0 THEN LD=15 DZ==+1 IF DZL;*********************************;* * ;*** COMPUTER-KOMPOSITION NR.5 ***;* } * ;***** (c) 1987 by ASTROSOFT *****;* *;*********************************;}DEFINE BA="BYTE ARRAY", C1="243",CS1="230",D1="217", DS1="204",E1="193",F1="182", FS1="173",G1="162",GS1}="153", A1="144",AS1="136",B1="128", C2="121",CS2="114",D2="108", DS2="102",E2="96",F2="91", FS2=}"85",G2="81",GS2="76", A2="72",AS2="68",B2="64", C3="60",CS3="57",D3="53", DS3="50",E3="47",F3="45", } FS3="42",G3="40",GS3="37", A3="35",AS3="33",B3="31", C4="29", D="64",G="32",HP="24",H="16", V}P="12",V="8",AP="6", A="4",SP="3",S="2",Z="1", N="0",E="1", M="6",P="10",Q="12",R="15", T="16",U=}"18",X="23",Y="27", C="70",B="99"; *** TON/LAENGENDATAS ***BA BS=[D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 E1 E1 }E1 E1 E1 E1 C1 C1 C1 C1 C1 C1]BA BL=[A S S A S S A S S A S S A S S A S S A S S A S S]BA SH=[Q E R E Q E R Q R } Q N N R N N Q N N R Q R]BA SL=[A A A A A A A S S A S S A S S A S S A S S]BA GU=[N B2 C3 D3 B2 C3 D3 B2 C3 D}3 E3 A2 C3 A2 C3 A2 C3 A2 C3 A2 G2 A2 B2 C3 A2 B2 C3 A2 B2 C3 D3 C3 A2 C3 D3 C3 C3 D3 F3 C3 G3]BA GL=[}D S S A S S A S S A V A S S A S S A S S V S S A S S A S S A V A S S S A S S S A V]BA DR=[B N} B B]BA DL=[S S S S]; *** HUELLKURVENDATAS ***BA HB=[0 1 1 1 1 1 2 2 2 3 3 3 3 4 4 4] BA HS=[0 1 1 1 1 2 2 2 } 3 3 4 5 6 7 9 12]BA HG=[2 3 4 5 5 6 6 6 7 7 8 8 8 7 7 6]BA HD=[0 0 0 0 0 0 0 0 0 0 1 3 4 5 6 6];********}*****************;PROC WAIT (BYTE W) BYTE I FOR I=1 TO W DO ODRETURNPROC POKEY_INIT=$E465()RETURNPROC SOUNDS () }BYTE BZ=[0],SZ=[0],GZ=[0],DZ=[0] BYTE ZB=[0],ZS=[0],ZG=[0],ZD=[0] BYTE PA=764,I,SCR=559 INT LB=[15],LS=[15],LG=[15],LD=[1}5] POKEY_INIT() SCR=0 SNDRST () DO SOUND (0,BS(BZ),10,HB(LB)) SOUND (1,GU(GZ),10,HG(LG)) IF SH(SZ)#1 THEN SOUND (2},SH(SZ), 8,HS(LS)) FI IF DR(DZ)#0 THEN SOUND (3,DR(DZ), 0,HD(LD)) FI ZB==+1 ZS==+1 ZG==+1 ZD==+1 IF PA#255 THEN } SCR=34 SNDRST() BREAK() FI IF ZB=BL(BZ) THEN LB==-1 ZB=0 IF LB<0 THEN LB=15 BZ==+1 IF BZ=24 THEN }BZ=0 FI FI FI IF ZS=SL(SZ) THEN LS==-1 ZS=0 IF LS<0 THEN LS=15 SZ==+1 IF SZ=21 THEN SZ=0 FI FI} FI IF ZG=GL(GZ) THEN LG==-1 ZG=0 IF LG<0 THEN LG=15 GZ==+1 IF GZ=41 THEN GZ=0 FI FI FI IF} ZD=DL(DZ) THEN LD==-1 ZD=0 IF LD<0 THEN LD=15 DZ==+1 IF DZ=4 THEN DZ=0 FI FI FI WAIT (150) WAIT (}150) ODRETURN1 ZD=0 IF LD<0 THEN LD=15 DZ==+1 IF DZ=4 THEN DZ=0 FI FI FI WAIT (150) WAIT (;******** S C O R P I O N S ******;;*** ROCK YOU LIKE A HURRICANE ***;;***** programed by ASTROSOFT ****;DEFINE BA="BYT}E ARRAY", C1="243",CS1="230",D1="217", DS1="204",E1="193",F1="182", FS1="173",G1="162",GS1="153", } A1="144",AS1="136",B1="128", C2="121",CS2="114",D2="108", DS2="102",E2="96",F2="91", FS2="85",G2="81",G}S2="76", A2="72",AS2="68",B2="64", C3="60",CS3="57",D3="53", DS3="50",E3="47",F3="45", FS3="42",G}3="40",GS3="37", A3="35",AS3="33",B3="31", C4="29", D="64",G="32",HP="24",H="16", VP="12",V="8",A}P="6", A="4",SP="3",S="2",Z="1", N="0",E="1",T="10",U="11", B="99"; *** TON/LAENGENDATAS ***BA BS=[N N} E1 E1 D1 E1 D1 E1 E1 D1 E1 D1 N E1 G1 A1 C1 D1 }E1 G1 A1 C1 D1 E1 G1 A1 C1 D1 E1 G1 A1 C1 D1]BA BL=[240 48 G H H G } G G H H G D H H H V VP VP H H V VP VP H H V VP VP} H H V VP VP]BA SH=[B1 A1 A1 A1 C2 C2 C2 C2 C2 A1 A1 A1 C2 C2 B1 B1 B1 A1 A1 A1 C2 C2 C2 }C2 C2 A1 A1 A1 B1 B1 B1 B1 B1 A1 A1 A1 C2 C2 C2 C2 C2 A1 A1 A1 C2 C2 B1 B1 B1 A1 A1 A1 C2 C2 C2} C2 C2 A1 A1 A1 B1 B1 B1 B1 B1 A1 A1 A1 C2 C2 C2 C2 C2 A1 A1 A1 C2 C2 B1 B1 B1 A1 A1 A1 C2 C2 C2 }C2 C2 A1 A1 A1 B1 B1 B1 B1 B1 A1 A1 A1 C2 C2 C2 C2 C2 A1 A1 A1 C2 C2 B1 B1 B1 A1 A1 A1 C2 C2 C2 C}2 C2 A1 A1 A1 B1 B1 B1 B1 N B1 B1 N B1 N B1 B1 N B1 N B1 N C1 C1 C1 N N E1 E1 N FS1 FS1 }N A1 N B1 B1 C1 C1 C1 N N E1 E1 N FS1 FS1 N A1 N B1 B1 C1 C1 C1 N N E1 E1 N FS1 FS1 N A1 N B1 B1} C1 C1 C1 N N E1 E1 N FS1 FS1 N A1 N B1 B1]BA SL=[G A A A A A A A A A A A A A A A A A A A} A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A} A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A }A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A } A A A A A A V A A A A A A A A A A A A A A V A A A A A A A A A A A A A A V A A A A A} A A A A A A A A A V]BA GU=[N N D2 G2 G2 FS2 FS2 E2 N E2 D2 E2 E2 E2 N E2 D2 E2 E2 E2 E2 N G1 } C2 C2 D2 D2 N D2 G2 G2 FS2 FS2 E2 N E2 A2 E2 E2 E2 E2 N D2 D2 E2 E2 E2 E2 N E2 AS2 A2} G2 A2 A2 N E2 B2 B2 A2 A2 G2 N G2 G2 G2 G2 G2 N D2 D2 E2 E2 E2 E2 N E2 G2 A2 FS2 FS2 N D2 } B2 B2 A2 A2 G2 G2 G2 G2 G2 G2 N D2 D2 E2 E2 E2 E2 N AS2 A2 G2 A2 A2 A2 N E2 E2 E}2 N N G2 G2 FS2 E2 D2 E2 E2 E2 N N E2 E2 E2 N N G2 G2 FS2 E2 D2 E2 E2 E2 G2 G2 } N]BA GL=[HP A A A V A A A A A A V A V A A A V A A A A A A V A V A A A V }A A A A A A A A A V A A A V A A A A A A A A A V A A A V A A A A A V A A V A A A V} A A A A A A V A V A A A V A A VP A A A A V A A A V A A V A A A A A G V H}P A A V H VP A A A A A A A V H G A A V H VP A A A A A A A A A H G]}BA DR=[FS2 N N N N A1 D2 B2 E1 E1 E1 N N E1 E1 E1 N N G1 N FS1} N N E1 E1 E1 N N D1 D1 N N E1 E1 E1 N N G1 N FS1 N D2 D2 N E1 E1 E1 N N FS1 } FS1 FS1 G2 G2 G2 B1 B1 C2 C2 E2 FS2 FS2 G2 G2 G2 B1 B1 C2 C2 E2 FS2 FS2 G2 G}2 G2 B1 B1 C2 C2 E2 FS2 FS2 G2 G2 G2 B1 B1 C2 C2 E2 FS2 FS2]BA DL=[G D G H A A A }A G G G G VP A A A V VP A A A V VP A A A V VP A V V VP A A A V} VP A A A A S S VP A A A V VP A G G A A VP A V A V V A V A A VP A }V A V V A V A A VP A V A V V A V A A VP A V A V V A V]; *** HUELLKURV}ENDATAS ***BA HB=[0 1 1 1 1 1 1 2 2 2 2 2 3 3 3 3] BA HG=[2 3 4 5 5 6 6 6 7 7 8 8 8 7 7 6]BA HS=[1 1 1 2 2} 2 3 3 3 4 4 4 3 3 2 1]BA HD=[0 0 1 1 1 1 1 1 2 2 2 2 3 3 3 2];*************************;PROC WAIT (BYTE }W) BYTE I FOR I=1 TO W DO ODRETURNPROC POKEY_INIT=$E465()RETURNPROC SOUNDS () BYTE BZ=[0],SZ=[0],GZ=[0],DZ=[0] BY}TE ZB=[0],ZS=[0],ZG=[0],ZD=[0] BYTE P=764,I,SCR=559 INT LB=[15],LS=[15],LG=[15],LD=[15] POKEY_INIT() SCR=0 SNDRST () DO} SOUND (0,BS(BZ),10,HB(LB)) SOUND (1,GU(GZ),10,HG(LG)) SOUND (2,SH(SZ),10,HS(LS)) SOUND (3,DR(DZ),10,HD(LD)) ZB==+1 }ZS==+1 ZG==+1 ZD==+1 IF P=28 THEN SCR=34 SNDRST() BREAK() FI IF ZB=BL(BZ) THEN LB==-1 ZB=0 IF LB<0 THEN } LB=15 BZ==+1 IF BZ=33 THEN BZ=0 FI FI FI IF ZS=SL(SZ) THEN LS==-1 ZS=0 IF LS<0 THEN LS=15 SZ==+}1 IF SZ=201 THEN SZ=0 FI FI FI IF ZG=GL(GZ) THEN LG==-1 ZG=0 IF LG<0 THEN LG=15 GZ==+1 IF} GZ=139 THEN GZ=0 FI FI FI IF ZD=DL(DZ) THEN LD==-1 ZD=0 IF LD<0 THEN LD=15 DZ==+1 IF DZ=92 THEN } DZ=0 FI FI FI WAIT (250) ODRETURNHEN LD==-1 ZD=0 IF LD<0 THEN LD=15 DZ==+1 IF DZ=92 THEN 420300}///⍗/w///v// B``C3// / 3L-B`LCC/C/q/r/t/ u/xx/xy/s/z/{///PROGRAM ATARI; BEGIN WRITELN('HALLO'); END.END. WRITELN(''); WRITELN;DRUCK; BUBBLESORT;WRITE1PROGRAM VARDEMO;VAR A1:INTEGER; B1:REAL;BEGIN A1:=1; B1:=1;WRITELN(A1);WRITELN(B1);END. LESORT;WRITEpPROGRAM LOOPDEMO;VAR I:INTEGER; BEGIN FOR I:=1 TO 5 DO WRITELN('ATARI'); WRITELN('----------'); FOR I:=1 TO } 5 DO BEGIN WRITELN('ATARI'); WRITELN('IST SUPER'); END;END. ('ATARI'); WRITELN('----------'); FOR I:=1 TOLPROGRAM READDEMO;VAR I,I1,I2:INTEGER; BEGIN WRITELN('HALLO'); WRITELN('BITTE EINE GERADE ZAHL EINGEBEN'); READ }LN(I); WRITELN('DIE ZAHLEN WAR :',I); WRITELN('STIMMT, ODER ???'); WRITELN('-------------------------------------'); W }RITELN('NUN BITTE ZWEI ZAHLEN EINGEBEN'); READLN(I1,I2); WRITELN('DIE ZAHLEN WAREN :',I1,' UND ',I2); WRITELN('STIMMT, O }DER ???');END. EI ZAHLEN EINGEBEN'); READLN(I1,I2); WRITELN('DIE ZAHLEN WAREN :',I1,' UND ',I2); WRITELN('STIMMT, OPROGRAM IFTHENDEMO;(*DIES IST EIN DEMONSTRATIONSPROGRAMM *)VAR A,I:INTEGER;BEGIN WRITELN('BITTE EINE ZAHL EINGEBEN (1} BIS 10)'); READLN(A); IF A<5 THEN WRITELN('ZAHL IST KLEINER ALS 5 !'); IF A>=5 THEN BEGIN WRITELN('--------}-----------------'); WRITELN('ZAHL IST GROESSER= ALS 5!'); WRITELN('-------------------------'); END; WRITELN;WRIT}ELN;WRITELN('WIEVIEL MAL (1 BIS 10)');READLN(I); IF (I>=1) AND (I<=10) THEN FOR A:=1 TO I DO WRITELN('A}TARI!');END.(* man beachte bei der IF THEN Anweisung wenn mehrere Bedingungen verknuepft werden, die Einzelbedingung}en in Klammern gesetzt werden muessen !!!*)eisung wenn mehrere Bedingungen verknuepft werden, die Einzelbedingung1PROGRAM ELSEDEMO;VAR A,I:INTEGER;BEGIN WRITELN('BITTE EINE ZAHL VON 1 BIS 10 EINGEBEN'); READLN(A); IF A<=5 THEN } WRITELN('ZAHL IST <= 5') ELSE WRITELN('ZAHL IST > 5'); (* -----------------------------------*) WRITELN('BITTE N}OCH NE ZAHL VON 1 BIS 10 ???'); READLN(A); IF A<=5 THEN BEGIN WRITELN('-------------'); WRITELN('ZAHL IST <= 5');} WRITELN('-------------'); END ELSE BEGIN WRITELN('------------'); WRITELN('ZAHL IST > 5'); WRITELN('------}------'); END; END.---'); END ELSE BEGIN WRITELN('------------'); WRITELN('ZAHL IST > 5'); WRITELN('------PROGRAM TAUSCHSORT;CONST MAX=100;VAR FELD: ARRAY[1..MAX] OF INTEGER; (* FUNKTION ZUR ERZEUGUNG VON ZUFALLS- ZAHLE}N *)FUNCTION RAND: INTEGER;BEGIN RAND:=0;#A LDA $D20A ;Random Hardwareadresse ;liefert Zufallszahl } ;von 0 - 255 LDY #5 STA (_SP), Y ;#END;(* ----------------------------------*)PROCEDURE CREATE;VAR C}1:INTEGER;BEGIN FOR C1:=1 TO MAX DO FELD[C1]:=RAND;END; PROCEDURE DRUCK; VAR C1:INTEGER;BEGIN FOR C}1:=1 TO MAX DO WRITELN(C1,' -- ',FELD[C1]); WRITELN;END;PROCEDURE TAUSCHSORT;VAR C1,I1,I2,H:INTEGER;BEGIN FO}R I1:=1 TO MAX-1 DO FOR I2:=I1+1 TO MAX DO IF FELD[I2]}rd dann einfach mit "END." beendet. (kein ";", sondern ".")Das vollstaendige Programm sieht dannso aus: PROGRAM ATARI;?} BEGIN WRITELN('HALLO'); END.Es ist wohl klar ,was dieses Programmmacht, oder ??? Es geht weiter mit : @}  ̲Ӡ mmacht, oder ??? Es geht weiter mit : FPASCAL2.KRS V A R I A B L E N =====================Wie in Action! , aber nicht in Basic,B}muessen alle Variablen zuerst dem Com-piler mitgeteilt werden, die man be-nutzen moechte.Die Variablendeklaration wird mitC} demSchluesselwort "VAR" eingeleitet.Dieses"VAR" steht zwischen "PROGRAM" und dem"BEGINN". Es gibt 3 verschiedene VariablD}engrund-typen: INTEGER : Zahlen von -32768 bis 32767 REAL : Fliesskommazahlen CHAR : Eine BYTE Variablen fuer E} ein Zeichen (CHARacter)Die Syntax fuer die Variablendek-laration ist :VAR name : type;Also z.B.:VAR COUNF}TER:INTEGEG;Man beachte wieder das ";"Fuer mehrere Variablen des gleichen Typs:VAR A1,A2,ZAPPER,ATARI,MARKUS :INTEGER;G}Fuer Variablen unterschiedlicher TypenVAR I:INTEGER; A:REAL;Man beachte ,dass das Schluesselwort "VAR" nur einmal eH}rscheinen darf. "VAR"kann zur bessereren Strukturierung auchalleine stehen:VAR A1 : INTEGER; M1 : REAL;Alle VeI}reinbarungen muessen natuerlich wieder mit dem ";" abgeschlossen werden.Das ";" dient, wie oben schon gesagt,um einzelne J}Befehle oder Anweisungen abzuschliessen. Es koennen auch mehreredavon in einer Zeile stehen:VAR A1:INTEGER; M1:REAL; K} oder WRITELN; WRITELN;Alles klar ???Zur Wertzuweisung (Basic: LET) muss ausser dem wohl von allen vermuteten "=" L}Zeichen noch ein ":" vorangestelltwerden: z.B.: A1:=1;Wieso der Doppelpunkt ??? Fragt mich nicht ich weiss es auch nicM}ht.Ein ganzes Programm koennte dann so aussehen:PROGRAMM VARDEMO;VAR A1:INTEGER; B1:REAL; BEGIN A1:=1;N} B1:=1; WRITELN(A1); WRITELN(B1);END.An dieser Stelle sei nochmals darauf hingewiesen, dass die Variablenverein-baO}rung zwischen PROGRAMM name und demBEGIN stehen muss !!!Das Programm ist auf der Diskette unter"VARDEMO.PAS" gespeichert.P} Wie das Com-pilieren vor sich geht , sollte mannoch vom letzten Clubmagazin herkennen.Wenn das Programm compiliert und gQ}e-startet ist, erscheint folgende Ausgabe 1 1.0E+00Die erste Zahl ist die INTEGER VariableDie zweite dann logischerweiR}se die REALZahl. An diesem Beispiel sieht man,dass die REAL Zahlen alle in Wissen-schaftlicher Schreibweise ausgegebenwerS}den.Das "E" steht dabei 10 hoch(10^). Die Zahl dahinter ist dann die "Hochzahl".(Muesste irgenwann einmal in der SchuledrT}angewesen sein !!!, Bei sehr grossenZahlen wird diese Schreibweise naemlichauch bei den meisten Taschenrechnern angewandt U}!!!)Die "richtige" Zahl laesst sich dannalso mit "1*10^0" ermitteln. Und das ist ja wohl 1, oder ???Wie man diese AusgabV}e umgehen kann,wirdspaeter erklaert.Die CHAR Variablen werden in einem derspaeteren Kapitel behandelt. Im Augen-blick bW}leiben wir noch bei den 'Zahlen'Der Kurs geht weiter mit :  ̳Ӡ X} den 'Zahlen'Der Kurs geht weiter mit :  ̳Ӡ PASCAL3.KRS Schleifen u.s.w... ====================Irgendwo sind ja fast alle PrograZ}mmier-sprachen gleich. Da gibt es Befehle,Bedingungen und Schleifen. So natuer-lich auch in Pascal. Was waere ein Pascal [}ohne eine FOR..TOSchleife ???Aber es gibt da so einige Feinheiten: Um solch eine Schleife auszufuehren,muss man zuna\}echst wieder eine Variabledeklarieren. Diese muss unbedingt vomTyp INTEGER sein !!!Irgendwann im Programm kommt dann die]}Anweisung:( 'I' als Variable INTEGER) FOR I:=1 TO 10 DO ^ ^Man beachte, dass auch hie^}r - wie bei Wertzuweisungen - ":=" stehen muss.Ausserdem muss nach dem FOR ... TO dasSchluesselwort "DO" stehen, das einfa_}chzu Syntax dazugehoert. Nach "DO" aberKEIN ";" !!!Nach dieser FOR ... TO Anweisung - istklar - muss dann logischerweise`} das stehen, was der Computer dann aus-fuehren soll.Dabei hat man zwei Moeglichkeiten:1. Moeglichkeit: Es ist nur eina} Befehl,der innerhalb der Schleife ausgefuehrt werden soll. In diesem Fall schreibt man einfach den Befehl hinter das b}"DO", der ausgefuehrt werden soll: Soll das Wort "ATARI" z.B.: 5 mal ausgedruckt werden, so muss es heissen: FOc}R I:=1 TO 5 DO WRITELN('ATARI');2. Moeglichkeit: Es sollen mehrere Befehle ausgefuehrt werden. Dann muessen alld}e Befehle mit einem zusaetzlichen BEGIN ... END; einge- schlossen werden. Wir sehen dabei, dass BEGIN und END nicht nure} fuer das Hauptprogramm zustaendig sind,sondern auch zusammengefasste Befehle ein- schliessen koennen. In Action! ist f} das nicht notwendig,denn dort gibt es ja die DO ... OD Anweisungen. Ein Beispiel auch dazu. Es sollen immer zwei Wog}erter ausgedruckt werden FOR I:=1 TO 5 DO BEGIN WRITELN('ATARI'); WRITELN('IST SUPER'); END;Man merke sichh} also: Mehrere Anweisung-en IMMER mit BEGIN ... END umschliessenDas DEMO dazu findet man auf der Diskunter "LOOPDEMO.PASi}---------------------------------------Den ersten Befehl, den wir gelernt haben war "WRITELN". Der zweite wichtige j}Befehl zur Ein- und Ausgabeist "READLN", das fuer "READ LiNe" (Lies Zeile) steht und einem INPUT Be-fehl entspricht. k}Moechten wir von der Tastatur eine Zahlin eine Variable einlesen, so muss mannur schreiben: READLN(I);Beil}m laufenden Programm haelt der Com-puter an und der Benutzer muss eineZahl eingeben und mit ab-schliessen.Bei zwm}ei Zahlen kann man entweder zweiREADLN Befehle benutzen, oder mit Kommadie Variablennamen in der READLN An-weisung trennenn}. z.B.: READLN(I1,I2);Ein Demonstrationsprogramm befindetsich dazu unter "READDEMO.PAS" auf der o}Diskette.Darin sind auch noch andere Befehls- formen des WRITELN enthalten. Bei Writeln kann man naemlich auch mehrere p}Sachen in 'eins' ausdrucken. Bei mehreren Variablen muss man auch ein-fach nur mit Komma die Namen trennen:z.B.: WRIq}TELN(I1,I2);Dazwischen kann auch Text mit ausge-druckt werden:z.B: WRITELN(I1,' und ',I2);Der WRITELN Befehl scr}hliesst immer mitRETURN ab. (der Cursor ist danach alsoin einer neuen Zeile.) Will man dasnicht , so gibt es auch noch dens} "WRITE"Befehl. (also ohne "LN")Das entspricht dann einem Basic PRINTmit angehaengtem ";".READ ohne "Lt}N" gibt es dann natuerlichauch, um nur ein Element einzulesen.(z.B.: bei CHAR Variablen.)Der Kurs geht weiter mit u} PASCAL4.KRSchauch, um nur ein Element einzulesen.(z.B.: bei CHAR Variablen.)Der Kurs geht weiter mit PASCAL4.KRS IF...THEN...ELSE --------------------Wie es in anderen Programmiersprachenuw}eblich ist, muss man natuerlich auchin Pascal die Moeglichkeit haben, be-stimmte Anweisungen bedingt ausfuehren zu lassen.x} Dazu ... ist klar... dienenIF THEN ELSE Strukturen. Beginnen wir mit einem einfachen Fall:Es soll ueberprueft werden, oy}b die Variable 'A' den Wert 1 hat.also: IF A=1 THEN WRITELN('A ist 1');Man beachte hierbei, dass bei der Be-dingung 'z}A=1' nicht ein ':=' steht,wiees bei den Wertzuweisungen der Fall sein muss.Im obigen Beispiel wird , wenn die Be-dingung{} erfuellt ist, nur ein Befehlausgefuehrt. Dieser muss mit einem ';'enden. Ist die Bedingung nicht erfuellt, so wird das P|}rogramm einfach in der Zeilefortgesetzt. Sollen mehrere Befehle nach dem THEN ausgefuehrt werden, so muessen diesein BEG}}IN ... END eingeschlossen werden.z.B.: IF A=1 THEN BEGIN WRITELN('A'); WRITELN('IST'); WRITELN('~}1'); END;An dieser Stelle ist es sicher ganz gut, einmal darauf einzugehen, wann maneigentlich mehrere Befehle in e}in BEGIN ... END einschliessen muss."EIN BEFEHL" ist immer genau eine An-weisung,die mit einem ";" abgeschlossenwird.z.B΀}. ist : FOR I:=1 TO 5 DO WRITE('.');genau EINE Anweisung. Soll diese Schleife hinter einem THEN ausgefuehrtwerden,΁} so braucht hier kein BEGIN ...END zu stehen. Man beachte , dass auch dies als EINBefehl (hinter einem THEN) betrachte΂}twerden kann: FOR I:=1 TO 5 DO BEGIN WRITELN(A); A:=A+1; END;Die BEGIN ... END Einkl΃}ammerung beziehtsich nur auf die FOR .. TO Struktur und NICHT auf eine vorausgehende IFTHEN Struktur.Ein Beispiel fuer I΄}F THEN Strukturen ist auf der Disk unter "IFDEMO.PAS"zu finden.Erlaeterungen zum Programmtext werdenein΅}geleitet mit '(*' und abgeschlossenmit '*)'. Dazwischen kann beliebigerText stehen. Basic-Freaks kennen sicherden REM BefeΆ}hl, oder.In Action! tut dies dann das Semikolon,aber das weis man ja...Ausser dem einfachen IF THEN kann mannoch ELSE b·}enutzen. Die Gesamtstruktur sieht etwa folgendermassen aus: IF bedingung THEN befehl(e) ELSE befehl(e)Wenn dΈ}ie Bedingung NICHT erfuellt ist,so wird alles das ausgefuehrt, was hinter ELSE steht. Alles was meherere Anweisungen ent-Ή}haelt, muss natuerlich wieder in ein BEGIN ... END eingeschlossen werden.Jedoch eines ist zu beachten: Vor ELSE darf KEΊ}IN ";" oder "END;" stehen. Vor ELSE muss das ";" wegge- lassen werden oder nur "END" ohne ";" stehen.z.B.: IF A<=5 TH΋}EN WRITELN('ZAHL IST <= 5') ELSE WRITELN('ZAHL IST > 5');Bei mehreren Anweisungen IF A<=5 THEN BEGIN WRΌ}ITELN('-------------'); WRITELN('ZAHL IST <= 5'); WRITELN('-------------'); END ELSE BEGIN WRITELN('------΍}-------'); WRITELN('ZAHL IST > 5');; WRITELN('-------------'); END;Das vollstaendige Demo dazu unter Ύ} "ELSEDEMO.PAS" auf der Disk.---------------------------------------u unter k---------------------------------------- Action! Kurs ================ B e f e h l e Ґ} Teil 6 ---------------------------------------- Kommen wir nun zur Stringhandhabung.SRINGґ}S, ist klar,sind Zeichenketten. InAction! sind dies BYTE oder CHAR Arrays.Wer sich ueber CHAR gewundert habensollte: CHARҒ} ist mit BYTE absolut iden-tisch. Vielleicht dient es der Lesbar-keit einiger Programme,aber wer weiss...Deklarieren wirғ} aber erstmal einenSTRING:BYTE ARRAY KETTE(255)Hier wird also KETTE als BYTE ARRAY aufmaximal 255 Bytes "DIMensioniertҔ}". Aberdas ist ja sowieso bekannt. Um Zeichenketten nun einzulesen, gibt es folgende 3 INPUT PROCs:a) INPUTS ҕ} Synatx: INPUTS(KETTE) In den String 'KETTE' wird von der Tastatur, falls nicht die System- variable DEVICE geaeҖ}ndert wurde,eine Zeichenkette von maximal 255 Zeichen eingelesenb) INPUTSD Synatx: INPUTSD(KANAL,KETTE) Wie Iҗ}NPUTS, jedoch vom KANALc) INPUTMD Synatx: INPUTMD(KANAL,KETTE,MAX) Wie gehabt, nur dass nicht 255 Zeichen eingelҘ}esen werden koennen, sondern genau die Anzahl, die in dem BYTE 'MAX' steht. (Sollte man immer benutzen, da man so meҙ}hr Kontrolle ueber die Eingabe hat. Ausserdem muss man den String dann nicht auf 255 Zeichen dimensionieren, was jҚ}a nicht immer noetig ist.Ein Beispiel dazu:BYTE ARRAY TEXT(50)PROC INPDEMO() PRINTE("HALLO, DEIN NAME IST ???") қ} INPUTMD(0,TEXT,50) PRINT("HALLO ") PRINTE(TEXT) RETURN Doch nun zu den Sonderfunktionen derStringhandhabung in Ҝ}Action!Es gibt einige Special PROCs und FUNCs,mit denen man eine ganze Menge an-stellen kann:Wer kennt von Basic her nicҝ}ht die VALund STR$ Funktionen, mit denen es moeglich ist, Zahlen in Strings und um-gekehrt umzuwandeln...1. VALB SҞ}yntax: A=VALB(STRING) Das 'B' am Ende von 'VAL' steht natuerlich fuer BYTE. So muss 'A' , ist klar, eine BYTE Vҟ}ariable sein. Und STRING ist sowieso klar... Wenn in dem String nun Zahlen stehen, so werden diese in das BYTEҠ} 'A' gewandelt.dazu ein Beispiel:BYTE ABYTE ARRAY KETTE ; LAENGE WIRD HIER ; VOM COMPILER ҡ} ; KONTROLLIERT!PROC VALBDEMO() KETTE="123" A=VALB(KETTE) PRINT(KETTE) PRINT(" ... ") PRINTBE(A)RETURNҢ} Fuer die INT und CARD Variablen heissendie Funktionen dann VALI und VALCAber ң}dass haette man sich sicher auchdenken koennen , oder ???Umgekehrt sind es PROCs, die STRB,STRCund STRI heissen.Die SynҤ}tax : STRB(ZAHL,STRING)auch hier wieder ein Beispiel:BYTE ABYTE ARRAY KETTE(30) PROC STRBDEMO() A=123 STRB(A,KETTҥ}E) PRINT(KETTE) PRINT(" ... ") PRINTBE(A)RETURNEs geht weiter mit: ---------- - BEF7.Ҧ}KRS - ---------- PRINTBE(A)RETURNEs geht weiter mit: ---------- - BEF7.!---------------------------------------- Action! Kurs ================ B e f e h l e ֨} Teil 7 ----------------------------------------1) SCOPY Diese PROC kopiert einen STRING in֩} einen anderen. Syntax:SCOPY(ZIEL,QUELLE) Ziel und Quelle muessen Strings sein. (also BYTE ARRAY) Sollte֪} ZIEL kleiner dimensioniert worden sein, so wird auch nur in diesen Teil kopiert. Es gibt auch die Moeglichkeit, e֫}inen String gar nicht auf eine bestimmte Laenge zu dimensionieren. Action! kontrolliert den noetigen Speicher- p֬}latz dann alleine!ein Beispiel:CHAR ARRAY ZIEL(50),QUELLE PROC SCOPDEMO() QUELLE="ATARI" SCOPY(ZIEL,QUELLE)֭} PRINTE(QUELLE) PRINTE(ZIEL)RETURN 2) SCOPYS Diese PROC kopiert einen Teilstring in einen anderen String. Syn֮}tax: SCOPYS(ZIEL,QUELLE,START,END) START und END sind BYTE Werte. CHAR ARRAY ZIEL(50),QUELLE PROC COPSDEMO()֯} QUELLE="ATARI" SCOPYS(ZIEL,QUELLE,1,2) PRINTE(QUELLE) PRINTE(ZIEL)RETURN 3) SASSIGN Kopiert einen String in eְ}inen Teil- string. Syntax: SASSIGN(ZIEL,QUELLE,START,END) START und END beziehen sich nun auf ZIEL.Ein Beispֱ}iel:CHAR ARRAY ZIEL,QUELLE PROC ASSIDEMO() QUELLE="ATARI" ZIEL="SUPER" SASSIGN(ZIEL,QUELLE,6,11) PRINTE(QUELLֲ}E) PRINTE(ZIEL) PUTE() ZIEL="SUPER"; man achte auf:   SASSIGN(ZIEL,QUELLE,6,7) PRINTE(QUELLE) PRINTE(ZIEL)REֳ}TURN4) SCOMPARE Diese Funktion vergleicht zwei STRINGS. Syntax: I=SCOMPARE(STRING1,STRING2) I muss eine Iִ}NT Variable sein. Es gibt 3 moeglich Ergebnisse: I<0 dann ist STRING1 < STRING2 I=0 dann ist STRING1 ֵ}= STRING2 I>0 dann ist STRING1 > STRING2Der Vergleich erfolgt nach dem ATASCIIZeichensatz.Es werden immer die ASCIIWerֶ}te verglichen. So ist ein kleines 'a'z.B. "groesser" als ein grosses 'A'. (siehe ASCII Tabelle...)Auf Gross-und Kleinbuchsַ}taben sollte manalso aufpassen. Am besten ist es ,wennman alle Kleinbuchstaben vorher in Grossbuchstaben wandelt!!!Ein Bָ}eispiel:CHAR ARRAY STRING1,STRING2 INT APROC COMPDEMO() STRING1="ATARI" STRING2="AMIGA" A=SCOMPARE(STRING1,STRING2)ֹ} PRINTIE(A)RETURNAlle Beispiele befinden sich natuerlichauch auf der Diskette... Der Kurs geht weiter mit : ֺ} ---------- - SORT.ACT - ----------er Diskette... Der Kurs geht weiter mit : I---------------------------------------- Action! Kurs ================ Sortieren ڼ}----------------------------------------Nach einigen Anfragen wollte ich nunkurz auf allgemeine Sortierverfahren eiڽ}ngehen. Die gebraeuchlichsten sind wohl TAUSCH-SORT un BUBBLESORT.Bevor man etwas Sortieren will, mussman sich zunaechstھ} im Klaren daruebersein, was man eigentlich sortieren will. Nehmen wir also z.B.: ein Feld vonZahlen. Dieses Feڿ}ld soll mit zufaelliggewaehlten Zahlen belegt werden und an-schliessend sortiert ausgegeben werden.1. TAUSCHSORT.Bei d}iesem Sortierverfahren werden alleElemente des Feldes miteinander ver-glichen. d.h. das 1. mit dem 2., danndas 1. mit dem }3. u.s.w.... Sollte das Element bei dem Vergleichkleiner sein als das 1. Element, so wirdes einfa}ch verTAUSCHT. Sollte es grosser oder gleich sein, so wird gar nichts gemacht und mit dem naechsten weitergemacht...Ein }Beispiel:Man hat hat Zahlenfeld mit 4 Zahlen:Auf der rechten Seite ist immer das aktuelle Zahlenfeld. Auf der linkenSeit}e wird immer der Vergleich ange-geben, also welches Element mit welchenverglichen wird(INVERS dargestellt) undob getauscht} werden muss:Vergleich Tauschen1-2 JA 3 11-3 NEIN 4 11-4 JA } 4 3 1 4 3 2Bis hierhin sind alle Elemente mit dem1. Element verglichen worden. Nun ist}gewaehrleistet, dass das kleinste Ele-ment auch wirklich am Anfang des Feldessteht. Dieses 1. Element kann man nunausser }Acht lassen. Nun muss das 2. Ele-ment mit allen uebrigen verglichen werden:Vergleich Tauschen2-3 JA } 1 22-4 JA 1 4 1 2 4 3Nun hat man auch das 2.kleinste Elementgefund}en. Den Rest kann man sich sicherdenken: Es muss das 3. Element mit allen uebrigen verglichen, gegebenfallsvertauscht, wer}den u.s.w...Prinzip verstanden ???Dann kann ja das Programm folgen...Man braucht zwei verschiedene Schleifen:Die 1. Sc}hleife soll immer das 1. zumVergleich gehoerende Element zaehlen.Die 2. Schleife zaehlt die zu vergleich-enden Elemente bi}s zum Feldende.Nehmen wir mal ein Feld namens F mit 10Elementen...: FOR I1=1 to 9 DO FOR I2=I1+1 to 10 DO IF }F(I2)