@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr ^^<s3>00x|73>00x`c6<9c` 33c366fffg~33>00xgfffff<11111}{!!\]_ED!EOHI B V`} } !  ө)6L]""$$ (p%}J[WܠjeC /D%Zub2gTSt$8®݊Ò2% 5RŢt}d.’$3@X7t5w5$?## $#L+D:*.*S:C:P:$#.#) `:#(6ENeU\l؏&/ؕ؄sأ$L }ENeU\lأ$8آǔƐƉƐƇ4cY%٦rULۉCۄړp^gyض%iwܸJڅ*ܣ$ڭڞجئأأ$ } ,(""(222000000..222222222222222222222222222222**22*22&222$2222222222 ,(""(0 }000000--**2*&22$2222222 V`hh@,lHH$HHHHHHӍl"H$H }Hl $`GHFH\` ` 4ӭ l 4Lq ӠԪӅԆL} Ӡ L( ӑ) } ` b% +L:#HH 0 HHLj%ӥHlL{ee 8eeee}Ӧee褢%ƚƜ`88夅奅8夕}奕Ӡȱȱȱ㦢`L+`8` .E)))8@8e0 *څۅ}܅݅ޅ߄ԠF0y"ޥy"ݥy"ܥy"ۥy"ڥy"و0ǠF0y"ݥy"ܥy"ۥy"ڥy"٥y"؈0}ǠF0y"ܥy"ۥy"ڥy"٥y"إy"׈0ǠF0y"ۥy"ڥy"٥y"إy"ץy"ֈ0ǠF}0y"ڥy"٥y"إy"ץy"֥y"Ո0L-`8`E)))8i@0 *ڄԠ"(}"!""" "L**""""""&О"("!"""} "L**""""""&О"("!""" "L**"}"""""&О"("!""" "L**"""""}"&О"("!""" "L**""""""&Оd}"("!""" "L**""""""&ОL-6"e""e}""e""e""e""i""}"""}"""}"""}"""}"""}""ǭ"m"""m"""m}"""m"""m"""m"""}"""}"""}"""}"""}"""}""ǥՅօׅ؅مԅՅօׅ؅`}` ` ` `80 `ԥՅ +.JJJJ)iFiFi1FicFi'ȐȦoFiUȐF}iiFi#iFiGi Fii@F iiFiiciՊFigi'iՊօשBL-`I)})83Ԥԥդե֤֥פץؤإ٤L,K6"ХL--L--L--}E0:e٥eإeץe֥eՐ؅٥ׅإօץՅ֩L-8٥إץ֥հ'I8م٘}؅ؘׅטօ֘ՅL-ؤm\G0Q@Ն֩م؅2եمֆשم"ե؅֥م׆ةեׅ֥؅ץم}؆لԘ)q +` . |. &7i |. ,%!L?.`刱䈱㈱∱ሱ }`ԅՅօׅ؅م`ԍՍ֍׍؍ٍ`ԍՍ֍׍؍ٍ`L.L. Խսֽ׽!}ؽ` L%/`ӽޕ &ԅ)@إ)JJJe)e - M 1."} &Je0F 2 . /L(8`@ԠՈքׄ؄` . |. , . . |. , #/L(8`0 I@ԥ) 2#}f / . & r 1. #/ &?P , .Iiԩ +)ԅ ,ӽޕL(`8`$$})Ԧ61718191:1;1 (ť)8@0$Յ)e)e -F . / , . &1 1. #/ &%}F I`U9>`D'RFuCU?b9dYdg@W2@?tS)%)@0)%ԅԢ / . &G  1.&}Ӱ6 #/ &.ӽߕ ,ԅԥ B1 (`8``0?i? . . / , #/ &ԍՍ֍'}׍؍ٍ . . ( / , O2 / ,0 .JeF 2`L+) .e٥eإeץe֥eՊi(}؊؅٥ׅإօץՅֆե1ԥ'JffffJffffJffffJffffم`ԩ&&&&*&&&&*&&&&*&&&&)}*`Pi`)JJJeԅԘ)Peԅ`եԆ8@EB)JJJeԅԥ)PeԅԘ)3eԅԽ3eՅ՘)JJJ}3ԥ}3*}`)JJJeԅԥ)PeԅԹ3eԅԹ3eՅդЧ` 0@P`'Nu pX@(#d,X L(  兢0+}襙 bɥ⥋㩀 50ɥ0DȱȱȄ   ik#ZMkVgğe拰ㅋ⅊,}0 eee拰 L f5дƨħ 4LY4 f5К,樥ŧH 4h h5L4樤ܱ.* O %30  5-}Ԅ +(fԤԈ`ř嚰Ԥ`ڥۥड़0-԰eڅڐۈ0eeL+58` O.}#`,#5  6`]5 6DE 68DHEIHI V0$ 6Sл B V,#/} 6` $#LllBHI V0HH V0Ԩh``a$%Ȏ$$xө$Ѝ$ ` `@0}X a)6 Ӆʢ ʎD  _ɠ %` ɩHH `өL: g1}% D:MENU2.COM өjJHH`ՠԢӱԙ!ӹ!`֝DEIHB V0YڝDa۝E2}օܥׅݥܝHݝI V0+Ӡڑڑ0`l `  䅠 _ɠԐ3}e拢 &L &Lħ © ¥4 䥝ň剰' k ɀ8@4= LY ĩ`OJ ]J4}?L˜ KԪȱLRHHצ R, hhLRHHHHHH /0ȑȑޠhhhh5}hh`HHHHHHHHHH $H bɐhȥLHhhhhLň剰)6}i桰` )``L(兢ħ #$ x Hҩ h$襚ҥ 7}` UV #T` ` `,H ¥ȍ` JKhLŢ  #)I L ¤Ȣ`L¦ ¦ L8} ½J*K+ $LąLĩ …L~ …`H Ġh é`,H hH Ġ  ĭ 8}}9} L n [h`LkL © 8倝偝 Ġ  ĥ󥃅  Lĩ :}LHé éLH#h ĩ`H hKJ L+ , H hHHħ s hKhJ  Lĩ# qL;} ĩ ŘL ũ& QŽLM " ĽNL  ĥԝL՝M  ĥԝN%LV  ¤ħ` Ťħ` ƪ <}Ċ Ťħ` ¢`届 x݅ L ĽCӠɀ L]Ɉ L] Ln LŠ=}IHEDBL$HH hh +L `ħ LĢl ¦`YDAER ԅՅ֦>}󅗄`L+ ¢p 0 Hp hɈL` ,#,$,!Lé ,H ĥDEԝH՝Ih ?}L©L $`L© , k ĩԅ  + ĥ 夨ħ`2ƪƪ ! A!Ƚa!Ƚ!Ƚ!Ƚ!@}!``氤hhL1@$ƪư 0 0 n$P`L+FҐ֥װ綾إٰو LǠA}Ffؐ ee&ee* &eeeԪeըee$.ƪ@!Ƚ`!Ƚ!Ƚ!Ƚ!Ƚ!`B}!!!!`!@!^!` Ȅ 8 n奱 ٥Lǥ֤צưĘ=ŗ78֪א&C} eԥe$`L: L ԅՅօׄ 1פ& ٤ţĢԅeՅe8包卅D} ]& 8Ԩժ%אְ`ֆL夨ħ` FҰg8&0ei֥i0Tׅiإi0BJe؅eمE}0&ffff&0 &0 eeL+օפإ颎 %8包ԥ卅 L ɥF} ȱъŠe拰8``,ªȱȱI ѝ3ȥLɥHHO]G}  ȥe暰Х ȥL+ʅȱhh`Lħ OԪȱԨ``L :H}0 `L(奷 bɥ󥋅ȱȱȱȄ#鈄0B8eeŶI}ɛ,@LBˤ,ɛ`L?± ˤ樱f Oƨ x݅ + ~ [ˠ O樥0# +  L˥J}`LL :ɛ,$PH h $P润䧰 ʐLʦ䧐 +` ʐL3LK}BˢԝD՝E֝HםI L 兢L]& 兢L% ,L6 ,L6 &L6 (L6妪@!I@!` ؐb`P KW ؐRBL} ؐ=;G ؐ4@ ;+ƪƪ@!=A! (ƪƪ@!A! ƪ@! ,@@檦@!`!!!!!!`ƪ@! ǩM}jҤ /L.٤ƪƪ@!@!, 舽`!`!!ـ!!٠!!!!!`@!jI*` . ֪ (N}ϰ`(8` ֤ׅԄ +҅L: Lyƪ8吪周Ly sũ + ŐL Ly sŠԄ h O}L} L}٩    e쪽pLyL( + ڥHJJJJ h) 0:i`  ک; n +ȱ)ȥ%P}ݓ Lh ԍՅԄׅ֩өL:ƪ?Ԣ )ɠ )  -L &Lڦ@!)@!` n)8@Q} -L:` / n)8@I= n)8@/ѩ֔$ሄ ,L: + n 0LR}8 n 0L8 n H1L8 n /L8 n /L8 n D/L8 n 1L8LLإL( &)ԥ)8@JjHS}@MC)JJJe)e .F / .P . &F . #/ &L.L(HHHHHH /hhhhhh T}& Y/hԅL:,` L _ܘ%ᨥ%Ly _ܘᨥLy _ܘEᨥELyٚ<|'g 0L`U}!!!!i ` &LإL٥LyɥLzvmZ ƨ!0 4 䦵 ¥ԝD՝E֝HeV}םI Lܤį eį L` x݅ƨLLLܤ ©`#ۢ Lĩ_,W}ߤ ڄ . eڅԥeۅհ"8څ֥ۅא8ܥݰL۠Q%0ԅإՅ٥ަ0%QX}% L-ե0LޥڤLyمօנ6&֐ eו`L( Hħ hբՅ `ޥԢ `ޥՅY}&&֐eܥeېڈ 7 \ 7 j N \ N j$0!ee80å/8ܥ۰uڕZ}0eUiV`TUV`8UV`eTi`8TȢ` $L„')Q ȱ8[} e新`8`L齀).Q Ӱȱ8e新 O :L䅫# *$Ŭ\} Ʃ HL"䥫ș L` Ml/#樱0ZS'`ȱȱȱȱȱȱȄ`ȱօȘuԩׅu՘e֨҄]}`樱I 屝Ҡȱȱȱȱȱ` n$҅J?eԨe` L 兙 兛 n %3 Ԥ` ^}, , , L檤 ٙ!ؙ!י!֙!ՙ`!ԙ@!ә !ҙ!` 䤪ƪ!ٹ!ع!׹!ֹ`!չ@!Թ !ӹ!`ƪ!_}!乡!㹁!a!A!Lp ґȥӑȥԑȥՑȥ֑ȥבȥؑȥّ` ***j)e)e`ʭȅi`}ȅiȅȩȩ Lfإ  4  \ +] ¥򄟄a}   넨ɛ$0L祔 Z f0#ڠ쩀 ߩ6ei$0 녖چ + !5b}ɛȑ @膔7 ɛ 襔!ɛL! _ɩ8$IȢ %ec} &!$P* &8孨客 "&$ 1L~ L~ &L _ɰe拢 &L~ +0 %30Ԅd} 襡L 9:枢0 O L :H9Hhh tLHH`e}hhLCL馩`ʆLC枢0ְşLC`A枢Ɣ!L!Lf}!T 򈩛LQLD ijq ߰,iŰD VD8` 覲`8` 넬 S( +饰g}0 S0:$$ p8`$p (ȩ@҅ҥ򄬤 ߰ A L8򨢄 %Ӥ򈦬ʽ ʽ %h} +HH 屝EҨhh$P0Ƭ 襯I `_A[`8`80 &Ոi}ԅ` 넬$ +  + h갳 h) + , 褔ԙ!` "8` 襔 ɛ "ȱ"j}嫤!`! `) ɛ%)a{)_0:A[_դ`RE͕DATINPUԑCOLOҝLISԖENTEҚLEԛIk}FOҗNEXԑGOTϑGO TϑGOSU½TRAАBYŐCONԞCO͟CLOSŐCLҐDEǞDI͐ENĐNEנOPEΖLOAĖSAVŢSTATUӣNOTPOINԡXIϤOΒPOKťPRINԐRAl}REAĨRESTORŐRETURΩRUΐSTOАPOХGEԫPUԑGRAPHICӒPLOԒPOSITIOΐDOӒDRAWTϓSETCOLOҬLOCATŔSOUNĦLPRINԐCSAVŐCLOAĚERRm}OR- DPOKœMOVœ-MOVŪ*ƐREPEAԑUNTȊWHILŐWENĐELSŐENDIBPUBGEԒFILLTϐDϐLOOШEXIDIҖLOC˖UNLOC˖RENAMŖDELETőPAUSn}ŖTIME$PROøEXEÐENDPROÑFCOLOҪ*̕-RENU͒DEDUMЪTRACTEXԖBLOAĖBRUθGO*’PAINԟCLӔDSOUNCIRCLū%PUԘ%GEԚo}GOTGOSUTSTETHEΣ<<>ުNOOANĨ<<>STRCHRUSASVALEADATCOPEESIRNFREXLOCLOSQSGAp}BINPADDLSTICPTRISTRIDPEE˦INSTINKEYEXOHEXDEDIFRATIMETIMMOEXERNRANTRUN%%%%GOUINSTERER+,q}%5&6(+8,<Xk`fghilm^deDѳHc?,Ќ,е,Y_Ҳ+7,/r}01 2!3"4Ɛ"-"."-؂ٿ֐ːs}ĐאŐbj+9,+;,ʐͭt}ͭ@ABC\=>[<+:е<,&%rvnnxc<u}\-78s_XV+@D&0d*"'2GJh v}NRl~&2 +饰(+VWZ ]a8`L`  ¤ħ.H h L5 䄡 w} 䅭 bɠ04Ů .ŭ%) e拰 ĩ L+Ư0 Lex}`毤Hɛ) h`  L ȱ R @ʆ ȱȄ Iğ` :62T Fy} :7 8 Lbԩ- L 8 8,I ɨ 8L.UH `ƨh $ %3   + \L L 8󅯩z}" ¥ 8" ©" Ư" L8q :Z#]abj(=) W같  L樤ħ`hh`H Yh{}Z L<>EO ƹƹ0`H f5h`I&` =? FQA` L񄳱ȱI |}䦐Ħ ąŅ T k /䧰 k ,Ǡ ĩJH ThĥȑĥȑĦʊȑ`HHą}}ŅH h hhhh ȱIELZ L`ȱI Hȱȱȱȱȱ ~} , h @ $L+L.*ȱȱȱȱȱjEE `EjI `e`ħ ¥}0 ` Lk 䦪`! 䧰L A@L `I&`L ©؅ L}.0`STOPPED륺 bɠhhL :ʅ` k %3Hƹ h5h`hbjH h} #ԤLQ #LLei  `LԑȥՑȥ֑ȥבȥؑȥّ``䈥}剰#)iiLɠL4űI&`048ץğ=ȱȄ }`L  L0e拠0ȱȄL  䦪`!' >?L (<ж`!  $Л +`,LőŐ78Ƒ8 Ƒ`8` - PѠ}`,,L L PQ 8,L ȱI ѝߠȱ`}ԩ,L E  $EL+L],,,؍ 0âLɀL ©7 F󦹩 RbL g }0g `Ո V fL{Ն + +􅕄L AT LINE?BLOAMEVALU>#VAR$LE?DAT>3276INPUDISTACOVERFLO?L}IN?FOTOO LON?DE?GOSUGARBAG?CHMEͣ?LOA?NES?WHIL?REPEA?D?EXIXPRO?EXE?PRO?IS OPE?DEWR ONLCMNOT OPEΣRD ONL}EOTRUNTIMEOUNA!FRAMCURSO!OVERRUCHKSUDONMODNOT IMPRA͠D?>#FILEDSK FULFATAL I/FILENAMPOINLOCKEDCM}>DI?FILPOIN?APPNBAD SECTORӥHՄ +h & .hԩ + ,҅L: ƪn (@Մ$ 0`} 0` 0LoH - . /h &@Յ՘JJJJ X) 0:i`AVC2 sŠ 5  <)  }< L L + e +e`e`&&&&&&eee` }&&eee&*`` 兙 䦪!0 4 ۄܱ **m ݤܱEۅڦڱ=} ܥeƥiեLN@ ` **)]` 00`` ( ((((((((}8`W)ߥ & &e &߽řِ׼JJJJ&eXޥeYߥ䥛 9 FfЎᰈ} `  M 8*` 兙 󥐅i祣L{ &}L  0 & L ȑ & L; # )ȱ L } )ȱ) )ȱ 8ƣŐő0eސ`ƙ8ް`)ȱJJJ}```=`]``` E߭H Ġ} hL±&Lv`[  ȱ R}]  L L  䅠 bɰhhğȱȄ L l"0e拱LjLx`[  ȱ Rl<= 2 DLISSCREENSCREENSCREENSCREENDQXDAWIYZWAR<?}   AP}A@ +@@d1B7t@dCAUA gAR@qM@}Z D:AUTORUN.COM'B@@H'B@CA((P PBBA26-@<I-@$@}%@&(->B-@5$@%@I(<-F<P6-R:,Z6-d.F:Ad,AU).A}dAUi@wn!!"*"@Ax@M@336-+"@)"@a,&+"}@)"@E,I-@$@%@&( B-@5$@%@I(  6-% @6-@}!@6-@I-@$@%@&(->B-@5$@%@I(<-""=T:,"})"AUj +A1A @C@@dUB7t@dgAR@j(}"@% D:CODERUN"@% D:TURBO.CUR!"@!% D:ONMOFIG.TUR"Z"@!@A3B}7tAZ6-?:C: hhhLl, 6-C:,6-C:,}6-C:,'6-C:,56-%@>6-C:,Z, 6.,6-BBwd 6-nZ D:DECODER.COMxf-@}@ D:POSTCR.TXT<)@L6-%$AV[C@f@U8A8A%)8}A86-?:A6,U6-%+U:A,&,&AS-@@ D:HELPCR.TXTBC@AH6-}S@e,@@ D:LESCR.TXT;)@K6-%$AVZC@e@U8A}8A%)8A86-?:A6,U6-%+U:A,&,&A 6-6-6- +PKK6.A} |𠠠| || || |POKEY | 7-@@U@367<,.>:AU,7 T }LOOPTP%-@%( P-@(1B2H@R%9%@16}-@""<, M@6>6-R:,>6-+"@,$@&+"@,$@@3"@)"@39C:},%@J%%!@!*% @9%6-%T9%@^=T:,"hO6-&@"!6-%'@}-"@?B2wO% D:MENU2.COMr%@b| A@O 6-6-6-Q}O 6-6-6-QO 6-6-6-QO 6-6-6-QO""9U:@,%}@A9%@<&!6-R:,!6-T:,0"@:YC6-+!@* @,$@`}&+!@* @,$@`OYM@D%%!@G*% As%6-%NB2HX"@Rb;16}-%+"@,$@@&+"@,$@@;M@l@v"A;16-%+"@,$A&+"@,$A;}M@@T6-F:A ,H6-%+"@,&+"@,%+",&+"AU,TA AA !6-}  6-""9U:@,%@A@j"Ar6-F:A,T6-%+"@,&+"@,%+"@},&+"AU,`AjM@A="@R*"QT O (}A@ '@}@d'B7t@d*KAR@'A@9A @K@4=-@=(}#MENU PAGINA KLEUR>QHTRO\&6-F:A,&@&BByfQA@'AY}@F9B2w@E6-@Q6-@Rp6-$AV%Az#-%A'# !B2H}!B2V@QTOB2w% D:MENU2.COMQ% D:CODERUN# !B2Hi}(%,0}6anuithet-%.5*/934)#+\]3#2/,,%.+./0}-%.56anuit0!').!*/934)#+\]3#2/,},%.6anuit+,%52*/934)#+\]6//2'2/.$}+,%52+./0 */934)#+\]!#(4%2'2/.$+,%52}}lWelkom bij de Februari-aflevering van CodeRunner.Deze keer gaat wederom over het bespelen van het beeldscherm. Daarbij ma}ken we gebruik van enkele nieuwe machinetaal instrukties. De vorige keren werd de 'displaylist' behandeld. Dat is een soort b}oodschappenlijstje voor de computer. Het beeldscherm wordt ingedeeld (binnen de mogelijkheden) aan de hand van deze lijst. Ee}n displaylist kan er ongeveer zo uitzien in een assembler :100 DPL .byte $70 ; lege beeldlijnen110 .byte $42 ; tek}st120 .word tekst ; inhoud van de tekst 130 .byte $41 ; sprong terug naar140 .word dpl ; het begin van d}e lijst150 tekst .sbyte " Dit wordt afgedrukt"Wanneer we dit assembleren vanaf bijvoorbeeld adres $0600 ofwel 1536 onstaat} het volgende :adres : Waarde:$0600 $70$0601 $42$0602 $07$0603 $06$0604 $41$0605 } $00$0606 $06$0607 tot de lengte van de tekst, de waarde van de letters.Op adres $0602 en $0603 staat het adres }vermeld waar de computer de tekst kan vinden. Dit is op adres $0607. De computer leest 16 bits getallen omgekeerd. Dus eerst }het lage deel van het getal en dan het hoge deel. $0607 staat dan ook in het geheugen als $07,$06. De assembler regelt dit vo}or je als je met labels werkt, zoals het label 'tekst'.Het zelfde geldt voor het adres van het begin van de displaylist aan }het einde van de lijst. Op $0605 een $00 en op $0606 het getal $06. Draai je dat om dan zie je $0600.Het lage deel van een 1}6-bits getal noemen we een 'low-byte' het hoge deel een 'high-byte'.Een byte bestaat zoals bekend uit 8 bits. Deze bits zij}n een soort schakelaartjes die of aan of uit kunnen staan. Om dit zichtbaar te maken is een rekenkundig-stelsel handig met tw}ee mogelijkheden die de stand 'aan' en 'uit' kunnen weergeven.Dat stelsel is het 'binaire' stelsel. Het woord zegt het al bi}jna, het bestaat slechts uit twee getallen nl. de 0 en de 1.Wanneer we de 0 met de uit stand vergelijken en de 1 met de and}ere situatie is de inhoud van een byte bijvoorbeeld zo voor te stellen :01001011 of 11111111 of 00000000D.m.v. een eenvou}dige formule is het mogelijk om deze getallen te koppelen aan voor ons begrijpelijke waarden.Van links naar recht hebben zi}j de volgende waarden:128 64 32 16 8 4 2 1 Het getal 1 is binair : 00000001Het getal 2 is binair : 00000010Het getal 3 }is binair : 00000011( 1 en 2 optellen )Het getal 4 is binair : 00000100Het getal 5 is binair : 00000101( 1 en 4 optellen })Het grootste getal wat in een byte kan worden opgeborgen is dan ook :128+64+32+16+8+4+2+1 ofwel 11111111.En dat is : 255}Van recht naar links zijn deze getallen als volgt gevormd: 2 tot de macht 0 = 1 2 tot de macht 1 = 2 etc.Dus:2^0 = 1, 2^1 }= 2, 2^2 = 4, 2^3 = 8, 2^4 = 16, 2^5 = 32 2^6 = 64 2^7 = 128Hierna een vergelijking van decimale, hexadecimale en binaire g}etallen :Decimaal: Hex: Binair:0 0 00001 1 00012} 2 00103 3 00114 4 01005 } 5 01016 6 01107 7 01118 8 } 10009 9 100110 A 101011 B 1}01112 C 110013 D 110114 E 111015 } F 1111Voor de getallen 0 tm 15 zijn dus 4 bits genoeg. Dit noemt men een 'nible.'Nu wat nieuwe ma}chinetaal opdrachten.Tot nu toe hadden we LDA en STA.Ook de andere registers kun je gebruiken om getallen over te brengen. }Bijvoorbeeld met de opdrachten LDX en STX en LDY an STY.Het is ook mogelijk registers en adressen in het geheugen met 1 te v}ehogen en met 1 te verlagen.Dat gebeurt met de opdrachten:INC (INCrement) en DEC (DECrement).In het X register staat bijvo}orbeeld het getal 10. Nu geven we de opdracht : INX ofwel INcrementX. Daarna staat in X het getal 11. Verlagen gebeurt met DE}X.Dit kan ook met het register Y : INY en DEY. Maar ook direct met adressen in het geheugen. Als we m.b.t. de bovenstaande d}isplaylist de opdracht geven INC $0602 wordt de inhoud van dit adres met 1 verhoogd.Zo kan verlagen met de opdracht DEC $060}2.Ook is het mogelijk een adres en de accumulator direct met twee te vermenigvuldigen of te delen.Andere vermenigvuldiginge}n zijn zonder verder programma niet direct mogelijk. Onze CPU kent hiertoe geen opdrachten. Vermenigvuldigen en delen met tw}ee kan d.m.v. het verschuiven van bits.In adres $0602 staat bijvoorbeeld het getal 7. Binair is dat : 00000111. We kunnen nu} de opdracht geven: ASL $0602 (Arithmetic Shift Left).De bits op adres $0602 schuiven dan 1 keer naar links. Na de uitvoerin}g van de opdracht staat er op het betreffende adres : 00001110. Geven we hierna de opdracht: LSR (Logical Shift Right) $0602 }dan staat er weer 00000111.Het voorgaande wordt goed duidelik in het volgende programma'tje:In $0602 staat het getal 7 : } Binair 00000111 DecimaalASL $0602 00001110 14ASL $0602 00011100 28ASL $0602 00111000 56A}SL $0602 01110000 112ASL $0602 11100000 224ASL $0602 11000000ASL $0602 10000000ASL $0602 000}00000Het zelfde kan met de accumulator. De opdracht wordt dan in een assembler : LSR A en ASL A.Bij de opdrachten ROL en }ROR schuiven de bits er aan de ene kant uit en komen aan de andere kant weer terug : 00010000 16ROL $060}2 00100000 32 etc. 01000000 64 10000000 128 00000001 1 } 00000010 2 00000100 4 00001000 8 00010000 16Het is} dan ook begrijpelijk dat met deze opdrachten de displaylist makkelijk kan worden veranderd terwijl je die op het scherm ziet}.Dit kan o.a. door het manipuleren van het aantal lege lijnen op het scherm.De codes hiervoor zijn :Aantal lege beeldlijn}en: Code: 1 0 2 16 3 3}2 4 48 5 64 6 80 } 7 96 8 112Maak nu de volgende diplaylist :10 *=$060015 } JMP START16 ;20 DPL .BYTE 16 ; 2 lege lijnen.30 .BYTE $4640 .WORD TEXT50  } .BYTE $4160 .WORD DPL65 ;70 TEXT .SBYTE "Deze tekst gaat op en neer"73 ;75 START ROL DPL } JMP STARTHet aantal lege beeldlijnen bovenaan de diplaylist wordt nu steeds verhoogd en verlaagd via de get }allen 16,32,64,128.De tekstregel er onder wordt tijdens dit proces naar beneden en naar boven geforceerd. Hierdoor ontstaat  }een springende tekstregel.Er zijn natuurlijk allerlei manieren om een regel te laten springen maar deze bewijst de werking v }an de bit-schuif opdrachten. In het voorbeeldprogramma zie je een en ander aan het werk. De opdracht van CodeRunner is ie}dere week het zelfde:Pruts zoveel als je kunt in de voorbeeldprogramma's, verander er in en probeer het effect. Het is nooit} erg als je computer vastloopt of als je erge rare dingen op je beeldscherm ziet. Er gaat echt niets van kapot. Bewaar je pro}gramma wel voor het proberen op diskette, anders ben je het kwijt als het vast loopt.Ook de opdrachten INC en DEC zijn inter}essant om de DPL te manipuleren.Laat altijd de VB sprong ($41) en het adres er na in tact. Veel plezier met de maffe effecte}n show.Tot de volgende keer.tijd de VB sprong ($41) en het adres er na in tact. Veel plezier met de maffe effecte(Deze keer in plaats van de post een extra stukje basic.De laatste keer ging het over de opdracht 'POKE' in deze computert}aal.Met POKE kun je getallen in het geheugen van de computer zetten, net als bijvoorbeeld de opdracht STA of STX in machinet}aal.Dit keer sluiten we aan bij het maken van een displaylist zoals die in het machinetaal gedeelte aan de orde is.Er kun}nen vanuit basic een aantal standaard dilplaylists worden opgeroepen. We doen dit met de opdracht GRAPHICS n. Of alleen GR. n}. Waarbij n een nummer is. Het volgende programma'tje laat er een aantal zien.Laadt Basic door een DOS diskette in de diskdr}ive te doen en de computer aan te zetten zonder op OPTION te drukken. Je krijgt dan het prompt 'READY'. Hierna kun je gaan pr}ogrammeren.Basic werkt met regelnummers. Het programma :10 FOR I = 0 to 8 20 GRAPHICS I : COLOR 130 FOR J = 0 TO 10 : P}LOT J,5 : NEXT J30 FOR PAUSE = 0 TO 250 : NEXT PAUSE40 NEXT IType na het intypen van het programma de opdracht RUN, en zi}e het resultaat.Het programma werkt met zgn. FOR - NEXT lussen. Ieder willekeurig woord watje in het programma aanbrengt wo}rdt opgevat als een variabele. Dit kan zijn bijvoorbeeld : OSSESTAART, PUDDING, PRAK, A, B, CW234 etc. Zoalng het maar geen w}oorden zijn die gelijk zijn aan een opdracht. Dus het woord POKE of FOR of NEXT kan niet dienen als variabele.In zo'n variab}ele kun je een getal opslaan. Kijk maar eens :Als je in basic typt : A=1 ( dan op de return knop drukken. )En dan aan de co}mputer vraagt ? A of PRINT A ( druk de variabele A af ), dan zie je weer het getal 1.Met de opdracht FOR - NEXT kun je geta }llen elkaar laten opvolgen in een variabele.FOR I (de variabele I) = 0 (vanaf 0) TO 8 (tot 8).GRAPHICS I ( de displaylist !}met het nummer van de variabele I )NEXT I ( naar het volgende getal in I )I is dan eerst 0, dan 1, dan 2 etc.FOR PAUSE ="} 0 TO 250 : NEXT PAUSE is een lege lus. Het programma verhoogt de variabele PAUSE van 0 tot 250 en meer niet. Dat vertraagt h#}et programma. Vandaar dat de variabele de naam PAUSE heeft gekregen hier.FOR J = 0 TO 10 : PLOT J,5 : NEXT JDit zet op de$} 5e regel iets op het scherm vanaf kolom 0 tot kolom 10.Duizend maal je naam afdrukken op het scherm is dan ook een koud ku%}nstje :10 FOR I = 0 TO 100020 PRINT "Mijn naam"30 NEXT IZet je achter de aanhalingstekens een punt komma ( ; ) dan komt h&}et allemaal netjes achter elkaar.In mooie gekleurde letters kan het ook.10 GRAPHICS 220 FOR I = 0 TO 2030 ?#6;"Mijn naa'}m"40 NEXT IHet is ok mogelijk de standaard diplaylists op deze manier een beetje aan te passen.We zoeken eerst de plaats (}van de diplaylist in het computergeheugen.Deze plek staat zoals uit de machinetaal afdeling bekend in de bytes $230 en $231.)} In Atari-basic moet het decimaal, dus op plekje 560 en 561.Je moet de inhoud van adres 560 opvragen en optellen bij de inho*}ud van 561 wanneer die met 256 is vermenigvuldigd. Dat moet zo omdat 561 een high-byte is.Immers in adres 560 staat bijvoorb+}eeld : 00 en in 561 staat 06. We weten dat dit hexadecimaal het getal 0600 is. En dat de computer eerst het lage deel van h,}et getal leest en dan het hoge. De opdracht PEEK leest echter de bytes gewoon zoals ze zijn en maakt geen onderscheid tussen -}low en high byte.Wanneer we echter de highbyte vermenigvuldigen met 256 en optellen bij de lowbyte komen we wel aan het juis.}te getal.DPL = PEEK(560) + 256 * PEEK(561).geeft het goede adres van de displaylist in de variabele DPL.We kunnen nu de/} displaylist zichtbaar maken met de opdracht PEEK :10 DPL = PEEK(560) + 256 * PEEK(561): RES = DPL20 PRINT PEEK(DPL);" "0};30 DPL=DPL+140 IF PEEK(DPL) = 65 THEN GOTO 6050 GOTO 2060 FOR I = 0 TO 270 PRINT PEEK(DPL+I)80 NEXT I90 DPL=RES100 P1}OKE DPL,71110 POKE DPL+1,PEEK(DPL+5)120 POKE DPL+2,PEEK(DPL+6)130 ENDJe kunt er met POKE natuurlijk ook lekker in veran2}deren. Zo onstaat er een regel met gekleurde letters bovenaan je beeld in het voorgaande voorbeeld. Probeer maar eens wat uit3}. Met de MAC65 kun je hex getallen omzetten in decimale getallen via de opdracht ? (vraagtekentje). Dat is daarbij misschien 4}wel handig.Stuur een leuk programma'tje op naar CodeRunner wat in basic op een leuke manier een diplaylist verandert.Gebru5}ik daarbij alleen de opdrachten POKE en PEEK.De meest orginele wordt gepubliceerd.Tot de volgende keer.Jack de Bruijn}>dX;n$X; Opstarten vanuit DOS met M 600xX;䠠X;ᠠX;򠠠X;!7}頱X;򠠠X;X;堠EIX;X; STA!8}RT !MAINX;DPL;Displaylist  " , 6 @ FJ D1 TEXTT A^ DPLhX;r A A|0TEXT A!9}dit gaat op en neer A;; tekstregelMAIN6Q>4DPL;; Vertel de computer waar de diplaylist is.P0 Q>5DPLP1!:}X;LOOP$> LP1TDPL TDPL TDPLTDPL;; op en neer TDPL PAUSE#D1;; heen en0&HLP!;}10Q>:PDPLD PDPLN PDPLX PDPLb PDPLl"D1v"D1;; weer"D1"D1 !LOOPX; PAUSE5!<}A5C5$> L1%>L21HL2 0HL1 7*?47>>H7R:\X;"D1"D1 !LOOPX; PAUSE5 TBREAVRGPOSTLESHELPOPDRWINDPIJLSCROMINSCROMAXSCROPOSLEHELOPDPIJPIJLVSCROLHELLOPDLLELPOSP%>}SCROLPMPPYCHELCURSUOPDRACHPOSEXAMPLVRAGEEINDPXPCOPEXMANTTXTTXLPODPODABPQC#P%?}\RH&&lPbdBGD BGD BUD B BfD B7BGDBbBsBBw%@}B7BUD@BVB(BwDDABv@@@ @!@%A}"@#E$G%&@'(@R)*A+AU,BF-@.@e/D*0A$%B}1@A2BdD3456o7o8o9o T INITT(7PA+A %C}7TRAP 14102;@,<~~;A,;@",;AG,;A `,;A,;A,;B,;@ %D},;@ ,;@!,;@,F'6-6-'6-A `PG 6-C:,6-C:,6-C:,'6-C:,06-C:,%E}>6-%@G6-C:,Z, 6.,6-BBwd 6-6-iZ D:DECODER.COMnd+@@%F} D:POST.TXT:)@J6-%$AVYC@d@oU8A8A%)8A86-?:%G}A6,U6-%+U:A,&,&AxQ+@@ D:HELP.TXT@C@AF6-Q@d+%H}@@ D:OPDR.TXT:)@J6-%$AVYC@d@U8A8A%)8%I}A86-?:A6,U6-%+U:A,&,&Ac*@@ D:LES.TXT9)@I6-%$AV%J}XC@c@U8A8A%)8A86-?:A6,U6-%+U:A,&,&A 6-6%K}-6- +Pll6.b |𠠠| || || || |example | |vragen | |POKEY | %L}7-@@@367<,.>:AU,7 T LOOPTP%-@%( %M} P-@(1B2H@R%9%@16-@"< M@>6-R:,>6-%N}+"@,$@&+"@,$@"3"@)"@39C:,%@,%%!@!*% @G%6-%O}%69%@@=T:,"JO6-&@"!6-%'@-"@?B2wO% D:MENU2.COM%P}T%@b^ AhOr 6-6-6-|QO 6-6-6-QO 6-%Q}6-6-QO 6-6-6-QO""9U:@,%@A9%@<!6%R}-R:,!6-T:,"@YC6-+!@* @,$@`&+!@* @,$@`OYM@%S}&%%!@G*% As%6-%0B2H:"@RD;16-%+"@,$@@&+"@,$@@;M%T}@N@X"Ab;16-%+"@,$A&+"@,$A;M@l@vT6-F:A ,H6-%+"@%U},&+"@,%+",&+"AU,TA AA !6-  6-""9U:@,%@A%V}@j"Ar6-F:A,T6-%+"@,&+"@,%+"@,&+"AU,`AjM@A%W}="@R*"QTO (}A@'@@d'B7t@d KAR@%X}'A@9A @K@=-@=(#MENU PAGINA KLEUR Q*%Y}T4O>&6-F:A,&@&BByHQA@'AY@F9B2w@E6-@Q6-@R%Z}R6-$AV%A\#-%A'# f!B2H!B2V@pQzTO (}%[}B2HA A(( DRUK (()AUA PP)PQ%\}TODIM P$(6),Q$(21)6.MIDDEN6.LINKS RECHTS (67@<@,.($ M%]}AP.GEEF EEN WOORD...867@<@,.B(L(DRUK RETURN...[Q`OjB2Ht%^} #A~-@@ (} "((-@@ " ( "(("(DRUK DE JUIS%_}TE TOETS...%((()G *(JAMMER, VOLGENDE KEER BETER.-@D(HMMM, NIET SLECHT.GA((DRUK RETURN...%`})AUAP PQ A$=A$+B$A- IS COMPLETE ONZIN B- PLAKT B$ ACHTER A$ VAST())C- ZE%a}T DE WAARDE VAN A$+B$ IN A$,652A$(LEN(A$))=C$< A- PLAKT C$ ACHTER A$ VASTF**B- VERNIETIGD DE LAATSTE BYTE VAN A$%b}PC- ZET A$ ACHTER B$,66ZPTRIG(0)=0dA- KAN NIETn))B- ZET DE TRIGGER VAN PADDLE(0) AANx,,C- ZET DE TRIGGER &}|) Turbo cursus IV ===============In deze aflevering van de turbo-cursus gaan we proberen om commu)d}nicatie met de computer mogelijk te maken. Het is eigenlijk vrij eenvoudig om de computer met de buitenwereld te laten commun)e}iceren. Twee manieren gaan we behandelen. De eerste is via de joystick poort en de tweede manier is via het toetsenbord.De )f}volgende instrukties lopen we langs:1>> STICK2>> STRIG3>> PADDLE4>> PTRIG5>> INPUTTevens gaan we ons bezig houden me)g}t string bewerkingen. Hiervoor gebruiken we de volgende instrukties:1>> LEN(.$)2>> VAL(.$)3>> INSTR(.$,.$)4>> UINSTR(.$,)q} BTURBO COMBMENU2 COMBAUTORUN COMBDECODER COMBCODERUN BHELPCR TXTB?LESCR TXTB$POSTCR TXTB6CRXMPL5 SRCB'=TURBO CURBUcLES TXTBOPDR TXTBPOST TXTBHELP TXTB9ONMOFIG TURIDEMO1 _DEMO2 kDEMO3 %DOS SYS.$)5>> STR$(.)Nadat je dit deel van de cursus onder de knie hebt, kun je echt gaan programmeren. Niet een game of iets de)r}rgelijks, maar je kunt de computer actie laten ondernemen als er van buitenaf iets met de computer wordt gedaan.STICK.---)s}---Op onze computers kunnen we twee joy-sticks aansluiten. De eerste noemen we STICK(0) en de tweede noemen we STICK(1). Va)t}riabelen hebben we al behandeld, dus daar ga ik verder niet op in. Zijn er onduidelijkheden, kijk dan de voorgaande afleverin)u}gen eens na.Stel, we willen weten welke richting een joystick wordt geduwt.Het volgende programma laat zien hoe we dat kun)v}nen doen:10 A=STICK(0)20 ?A30 GOTO 10Dit programma laat een constante scroll van getallen zien. Run dit programma eens )w}en stop een joystick in de voorste poort. Speel een beetje met je Joystick en je zal zien dat de waarde veranderen.Welke wa)x}arde hoort bij welke richting? 14 10 6 11 15 7 9 )y} 5 13We kunnen dit illustreren met het volgende programma:10 A=STICK(0)20 POSITION 5,12:REM WORDT LATE)z}R BESPROKEN30 IF A=14 THEN ?"NOORD "40 IF A=6 THEN ?"NOORD/OOST"50 IF A=7 THEN ?"OOST "60 IF A=5 THEN ?"ZUID/OOS){}T "70 IF A=13 THEN ?"ZUID "80 IF A=9 THEN ?"ZUID/WEST "90 IF A=11 THEN ?"WEST "100 IF A=10 THEN ?"NOORD/WEST"1)|}10 IF A=15 THEN ?"NIETS!!!!!"120 GOTO 10(Voor cursisten van Code Runner: zet deze waarden eens om in binaire getallen en e)}}r zal veel duidelijk worden. Elke richting zijn eigen bitje. Een combinatie van bits is dus schuin).Zoals je ziet laten we )~}de computer reageren op een handeling van buiten af. In de voorgaande voorbeelden kun je STICK(0) vervangen voor STICK(1). Je)} moet dan wel je joystick in de achterste poort doen. Je snapt dat je de computer elke willekeurige handeling kunt laten verr)}ichten.STRIG(0)--------STRIG is een afleiding van Stick TRIGger. Een trigger is je vuurknop van de joystick. Net als ST)}ICK(0) kan STRIG(0) ook een waarde bevatten. Deze is altijd 1 of 0. Als de trigger wordt ingedrukt is STICK(0) 0 en als hij l)}osgelaten wordt bevat STICK(0) de waarde 1.In een programma kun je bv. een wachtroutine met een vuurknop maken.10 hier st)}aat 20 een programmadeel30 maar nu komt er een wachtlus.40 IF STRIG(0)=1 THEN GOTO 4050 vervolg programmaHet programma )}blijft op regel 40 'hangen' zolang de vuurknop NIET is ingedrukt.Ook tekenen wordt nu mogelijk. We gaan het kleinste tekenp)}rogramma maken dat er is. Er staan een aantal instruktie'S in die later behandeldt worden. Het is slechts een voorbeeld moet )}je maar denken.10 GR.31:COLOR 120 TRAP 2030 X=80:Y=9040 S=STICK(0):T=STRIG(0)50 X=X+(S=7)-(S=11)60 Y=Y+(S=13)-(S=14)7)}0 IF T=0 THEN PLOT X,Y80 GOTO 40Er zijn ook nog een andere 'soort' joysticks. We noemen ze Paddles. Een paddle is een doo)}sje met een draai-knop er op. We kunnen paddles uitlezen met de opdracht:A=PADDLE(0)De 0 mag ook een 1,2 of 3 zijn. De wa)}arde van de paddle loopt van 0 to 220. Helemaal naar links is 0 en helemaal naar rechts is 220. Bedenk zelf eens een toepassi)}ng voor het gebruik van paddles.Op een Paddle zit ook weer een vuurknop. Deze kunnen we uitlezen met PTRIG(0) (Paddle TRIGg)}er). Zie verder STRIG(0).INPUT.------De tweede manier om de computer met de buitenwereld te laten communiceren is via h)}et toetsenbord. Stel dat we informatie van de gebruiker willen hebben? We vragen deze dan gewoon en bewaren de informatie dan)} in nummerieke of string variabelen. De instruktie hiervoor is: INPUT -----10 INPUT A20 ?"Je typte getal ";A)}Indien je dit programma runt verschijnt er een vraagteken. Typ nu een getal in en druk op return. Zie, de computer heeft het )}gezien en laat het nog eens op het scherm zien.10 DIM A$(20)20 ?"Wat is uw naam???"30 INPUT A$40 ?:?"U heet dus ";A$Je)} ziet dat in voorbeeld 1 een nummerieke variabele wordt gevraagd en in voorbeeld 2 een string. Als je een string invoert als )}de computer een getal verwacht, geeft hij een ERROR. Dit wil zeggen dat er iets gebeurt dat de computer niet begrijpt.10 DI)}M A$(20)30 INPUT"WAT IS UW NAAM ";A$40 INPUT"WAT IS UW NAAM ",A$50 INPUT A$Drie manieren om een string te vragen. In reg)}el 10 en 20 zet de computer eerst text op het beeldscherm en daarachter!! vraagt hij om een invoer. Omdat in regel 40 een com)}ma wordt gebruikt, laat de computer het vraagteken weg.We gaan met iemand communiceren. We vragen aan iemand hoeveel geld h)}ij op de bank heeft. En dan willen we nog weten hoelang dat blijft staan en dan nog even de rente weten. De computer kan je d)}an razend snel zeggen hoeveel geld er na verloop van tijd op de bank staat.10 DIM A$(20)20 INPUT"WAT IS UW NAAM ",A$30 IN)}PUT"HOEVEEL GELD HEEFT U OP DE BANK ",GELD40 INPUT"HOELANG LAAT U HET STAAN ",JAREN50 INPUT"WAT IS DE RENTE ",RENTE60 REM)}70 FOR TEL=1 TO JAREN80 GELD=GELD+(GELD/100)*RENTE90 NEXT TEL100 ?:?:?110 ?"BESTE ";A$120 ?"NA ";JAREN;" SPAREN HEEFT U")}130 ?GELD;" GULDEN OP DE BANK"140 ?:?:?150 RUNHet bewerken van string-variabelen.-----------------------------------)}In de laatste aflevering hebben we gezien dat we de computer perfect namen ed. kunnen laten onthouden. We gaan nu kijken o)}f we nog meer kunnen doen met 'strings'.We gaan eerst eens kijken of de computer kan zien hoelang een string is. Dit doen )}we met LEN(.$).10 DIM A$20 INPUT"HOE HEET JE ",A$30 ?:?40 LENGTE=LEN(A$):REM !!!!!50 ?A$;" SCHRIJF JE MET ";LENGTE;" LE)}O P D RACHT.PROBEER EENS EEN PROGRAMMA IN ELKAAR TE ZETTEN DAT EEN HYPOTHEEK BEREKENING DOET. JE LEENT 150.000 VA-}N DE BANK.DE JAAR RENTE STAAT VAST VOOR 7.5%. HET GELEENDE BEDRAG MOET IN 30 JAAR AFGELOST ZIJN. LAAT DE COMPUTER UITREKENEN-} WELKE AFLOSSING GEBRUIKT MOET WORDEN.EEN ANDERE OPDRACHT:MAAK EN SIMPEL PROGRAMMA IN TURBO-BASIC WAAR IN EEN ADRESSENBE-}STAND WORDT BIJGEHOUDEN. JE MOET KUNNEN INVOEREN EN OPZOEKEN. HET BESTAND MOET DE VOLGENDE GEGEVENS BEWAREN: NAAM A.}. *****/*/ */*/ */*/ */******/*//// ***/ ****/ *****/*/ */ */ *//// //*//*/ */ */ ***/ 1} */*/ */ */ ///*/ */*/ /***/ ****/ *// /// //// /Ik ontving de volgende vraag:I1}k typ het volgende programma in en het werk niet zoals ik wil:10 A=120 FOR P=1 TO 100 STEP A30 A=A+140 ?P50 NEXT PHet1} is de bedoeling dat de STEP steeds een stapje groter wordt. Hoe pak ik dat aan???Wel Rene,Allereerst bedankt voor de p1}ositieve brief. Ik denk niet dat het zal lukken met een for-next loop. De computer kijkt na de step grootte op het moment dat1} hij op regel 20 komt. Daarna niet meer!! Je kunt A dus wel veranderen, maar de step blijft het zelfde. Ook de waarden voor e1}n na TO kun je tussendoor aanpassen, maar ook dat zal de computer negeren. De variabele krijgt wel een andere waarde, maar de1} begin- en eind waarde van de lus blijft zoals hij is.Probeer het volgende programma een s om het probleem op te lossen:11}0 A=1:P=120 REPEAT30 A=A+1:P=P+A40 ?P50 UNTIL P=>100Rene:Ik heb ook nog een programma inelkaar gezet dat prima funk1}tioneert. Maar als ik het ga compileren, krijg ik een error. Hoe voorkom ik dit.John:Als het goed is verteld de compiler1} aan jou in welke regel de fout zit. De compiler is veel kritischer dan Turbo-basic. Turbo-basic geeft pas een error als hij 1}iets tegen komt dat hij niet kan uitvoeren. De compiler kijkt eerst of alle lussen kloppen. Bij elke FOR mag maar 1 NEXT zijn1}. Ook wordt vaak de ENDIF vergeten. Het volgende programma loopt prima in basic, maar is niet te compileren.10 FOR P=1 TO 12}QRRRRRRRRRRRRRRRRRRRRRRE|452"/#52353(%,03#(%2-|QRRRRRRXRRRRRRRRRRRRRRRRRRRRRRXRRRRRRE|5}*oystick^_voorhoofd menus|ARRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRD|||*oyst5}ick\regelomhoog||*oystick]regelomlaag||&irekeuzemenu|ARRRRRRRRRRRRR5}RRRRRRRRRRRRRRRRRRRRRRRD|||*oystick\paginaomhoog||*oystick]5}paginaomlaag|ARRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRD|||*o\&ire+leur5}omhoog||*o]&ire+leuromlaag||*oystick\+leuromhoog||*oystick]+leuromlaa5}g|ARRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRD|㉀瀰|ZRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR5}RRRC|ARRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRD|㉀瀰|ZRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR4}TITEMENKEFIGURFIGURFIGURFIGURFIGURFIGUURFIGUURFIGUURFIGUURFIGUURSELECPRINSAVDUMSET9}USTARNAMENUM_BYTEBLANKBLANLOO8:9;A( > A9} @' BSDG IKP=RL9}P Av!xx"B#A!$@w !!!!| 9} |!!| Onmogelijke figuren |(!!| |2!!| door |<9}!!| |F!!| Kick vd Dool |P!!| Zwijndrecht 1991 |Z!!9}dTnTxPPPTTO +@7(@(@7(@ OnOgLiKe*9}(@*(@ IgRe'A'AR@( door$($( 9} Kick vd Dool MAPPQTT"O,C +A1@CAR@9}63(3((Dit programma tekent Onmogelijke figuren@..(& Dit zijn figuren die wel te tekenen,J""( maar niet te mak9}en zijn.T2(2(' Kies eerst het nummer van de tekening^..(& Als de tekening op het scherm staat,h( druk dan op9}:m ( voor Pokey menur''( voor Printen (normaal)|))(! voor Printen (overdwars)&&( 9} voor Saven (62 sect.)""( Dit menu ( ( Tekening ( Tekening 9}( Tekening ( Tekening ( Tekening 2(2('File-naam van picture wordt PIC9}TURE.PIC))(!Screendumps zijn EPSON compitable<)"@IP"@PP"@QP9}"@RP"@SP&="@20P:QDTNTXOb+@%@l0@@9}v'0@'@ #A-@@B " ,/ 20,65,19}70,20170,20,290,55290,55,290,135290,135,130,170130,170,20,14520,145,20,6541,65,161,299}51,67,161,34161,29,161,96 161,96,140,102118,109,30,134 30,134,30,73*30,73,118,954118,95,1189},161>118,161,43,145H40,131,40,76R170,20,170,100\170,100,290,135f170,100,140,109p118,116,20,1459}z43,145,118,123140,116,170,107170,107,262,134262,134,140,160140,95,161,90182,85,278,659}290,55,182,78161,84,130,91130,91,130,170140,95,140,160118,155,55,14220,65,130,9141,65,129}6,85126,85,161,77182,72,265,54265,54,182,30182,35,255,56$182,30,182,95.182,95,278,12389}278,123,278,65B268,67,268,121L248,131,140,154VP`QjTtT~O+@%@0@9}@'0@'@ #A@-@@ " ,/ 9}140,10,170,10170,10,270,160270,160,240,188240,188,80,18880,188,58,160 58,160,140,10170,109},105,130105,130,170,130(140,130,170,752170,75,240,188<155,105,188,160F188,160,58,160PPZQd9}TnTxO+@%@0@@'0@'@ #A-9}@@' " ,/ 40,5,240,5240,5,290,65290,65,290,188290,188,92,1889}92,188,92,17392,173,280,173280,173,280,80280,80,92,80"92,80,92,65,92,65,290,65640,5,40,9}20@40,20,208,20J208,20,234,50T234,50,65,50^65,50,65,35h65,35,208,35r208,35,220,50|226,80,29}26,113226,113,280,173226,113,40,11340,113,40,12840,128,208,128208,128,234,158234,158,65,19}5865,158,65,14365,143,208,143208,143,220,158PQTTO+@%@0@9}@&'0@'@0 #A:-@@D "N ,/X9} b80,10,220,10l220,10,240,30v240,30,240,170240,170,100,170100,170,80,15080,150,80,1029}20,10,220,150220,150,120,150120,150,120,50120,50,100,30120,50,200,50200,30,200,130200,1309},220,150200,130,120,130100,170,100,30100,30,200,30P QT T*O4+@%@>09}@@H'0@'@R #A!\-@@(f "p ,/9}z 99,5,117,5117,5,148,55148,55,218,5599,5,198,160198,160,100,16090,173,290,1739}290,173,284,186284,186,64,18664,186,20,12020,120,99,599,30,38,12038,120,64,16064,160,1249},70 124,70,99,30 218,55,290,173 157,68,215,160$ 215,160,266,160. 266,160,210,688 210,68,158,68B 9}90,173,140,95L 64,186,132,82V 132,82,181,160` 38,120,55,120j 55,120,107,43t 55,120,72,147~ 210,68,29}00,81 200,81,167,81 200,81,249,160 P Q T T O < ) "@w% D:MENU2.COM (9}"@)"A(6-?:A6, "@y)"AP "@)"AP "@IP "@P9}P "@QP "@RP( "@SP2 ="@2< PF QP TZ Td On #A'x 9}-A6A "   77104,169,128,133,216,165,88,133,212,133,214,165,89 77133,213,133,215,169,25,133,2179},198,217,240,102,32 33144,6,169,41,133,218,198,218,240,71,160,0,162 220,177,214,37,216,201,1,38,219,24,165,214,105 449}40,133,214,165,215,105,0,133,215,232,224,8,144 66230,165,219,32,160,6,165,212,133,214,165,213,133 77215,70,216,144,2099},169,128,133,216,24,165,212,105 551,133,212,133,214,165,213,105,0,133,213,133,215 3376,32,6,24,165,212,105,24,133,212,19}33,214,165 22213,105,1,133,213,133,215,76,21,6,169,80,133 //217,198,217,240,8,169,0,32,160,6,76,131,6 0096,160,9,1529},72,185,172,6,32,160,6,104,168 44136,208,243,96,170,173,55,228,72,173,54,228,72 **138,162,0,96,1,64,4,42,27,10,8,65,279} Q" T, T6 O@ ;@ ,J ;A ,T 6-C:,^ --@AA )67,.>:@@,- h 6.D1:P9}ICTURE.PICr 6-A $A'@| Q T T O 6-@6-A=6-F:@,%F:@,$AV9}I6-3>:@',>:@d,>:@',>:@e,>:@,AdAU -@97@@9}@ P:h @>:@',>:@B,>:,>:,>:,-A6@ SF:Ad,"AU/6-9}F:%+$@@,%,@ @>:,D O@S  Q T T O 6-U:@, @@9} B@ @ Q T& T D:ONMO*.*T O 6-U:@, @@8DTTERS."LEN(A$) zet in de nummerieke variabele de lengte van de string. Andere toepassingen zien we straks.Zoals ik de vor)}ige keer vertelde kan een string geen waarde bevatten. Het is wel mogelijk om een string om te zetten naar een nummerieke var)}iabele. Dit doen we met VAL(.$).10 DIM A$(10)20 INPUT"UW LEEFTIJD IS ",A$30 in a$ is nu een waarde,40 maar a$ kan er nie)}ts mee!!50 we gaan er een nummerieke60 variabele van maken.70 Z=VAL(A$)80 in variabele Z zit nu90 de waarde100 ?"OVER 5)} JAAR BENT U ";Z+5Als we van een string (mits het een getal is!!!) een nummerieke variabele kunnen maken, kan het misschien)} ook anders om....10 DIM A$(5)20 INPUT"UW LEEFTIJD IS ",X30 A$=STR$(X):REM !!!!!!!40 ?A$Dat kan dus ook. We gebruiken )}daarvoor de instruktie STR$(variabele).Je ziet dat er aardig wat gedaan kan worden met strings. We zijn er nog lang niet. W)}e gaan even verder met een stukje theorie over strings.Een string kan maximaal ongeveer 32000 tekens bevatten. Dit lijkt mi)}j ruim voldoende. Wat nu te doen als we niet de hele string willen laten zien, maar een deel??We vertellen de compter gewoon)} welk deel en hij laat het zien.10 DIM A$(10)20 A$="HALLO"30 ?A$(1)De computer print nu HALLODoor 1 getal tussen haak)}jes te zetten achter de string variabele werkt de computer vanaf het getal.Maak van regel 30 ?A$(2)De computer zegt nu AL)}LOGrappig he? Van af het getal tot aan het einde laat de computer de string zien. We gaan nog een stap verder. Stel dat we )}vanaf de 2e tot de 4e letter willen laten zien? We zetten dan gewoon 2 getallen tussen de haakjes.30 ?A$(2,4)ALL is het r)}esultaat.De getallen tussen haakjes mogen natuurlijk ook nummerieke variabelen zijn.10 DIM A$(5)20 A$="HALLO"30 FOR P=1 )}TO 540 ?A$(P,P)50 NEXT PRESULTAAT:HALLOOp deze manier kunnen we ook delen van een string veranderen. Stel in een )}string staat HALLO en we willen daar HABBO van maken.A$(3,4)="BB"Ik hoop dat dit alles een beetje te begrijpen is. Ik zal)} een voorbeeld programma laten zien, dat kijkt of een woord achterstevorem gelezen het zelfde is. Bv. negen, pop of raarEers*}t moet het woord ingetoetst worden. Dan gaat de computer de lengte bepalen en via een FOR NEXT loop zet hij de string achters*}tevoren in een andere string. Dan hoeft de computer alleen nog maar de twee strings te vergelijken. Als ze het zelfde zijn ka*}n het woord achterstevoren gelezen worden. Het programma ziet er zo uit:10 DIM A$(10),B$(10)20 INPUT"WOORD (MAX 10 TEKENS)*} ",A$30 REM bepaal lengte40 L=LEN(A$)50 REM zet van achter naar voren in B$60 FOR P=1 TO L70 B$(L-P+1,L-P+1)=A$(P,P)80*} NEXT P90 REM geef resultaat weer100 IF A$=B$110 ?A$;"=";B$120 ELSE130 ?A$;"<>";B$140 ENDIF150 GOTO 20Cursisten di*}e dit programma begrijpen zijn al aardig op weg om de geheimen van het programmeren te ontfutselen aan de computer. We gaan n*}og weer een stapje verder.We kunnen natuurlijk proberen om strings aan elkaar te plakken. In A$ zetten we HALLO en in B$ ze*}tten we POKEY.Daarna plakken we ze aan elkaar10 DIM A$(100),B$(100)20 A$="HALLO "30 B$="POKEY "40 REM we plakken achter*} A$ B$ vast50 REM eerst kijken hoelang A$ is60 L=LEN(A$)70 REM L is de laatse letter daar80 REM moet B$ achter!90 L=L+1* }100 A$(L)=B$120 ?A$We zijn aangekomen bij de laatste instruktie's die we deze maand behandelen. We gaan zoeken binnen een* } string naar iets.Dit doen we met INSTR().In A$ staat 'pokey is te gek'Nu gaan we kijken op welke positie 'gek' staat b* }innen A$. We zetten het woord 'gek' in B$. En geven dan de opdracht ?INSTR(A$,B$).Zoek B$ binnen A$ en zeg op wel* }ke plaats dat dan staat. Indien het resultaat 0 is staat B$ niet binnen A$.We gaan nog een stapje verder. Zoek vanaf de 5e * }letter van A$ naar het woord 'gek'. ?INSTR(A$,B$,5)De 5 mag ook weer een variabele zijn. Ook B$ mag vervangen worden door*} het woord wat we zoeken.?INSTR(A$,"gek",5)Omdat de computer GEK als iets anders ziet dan gek, (grote en kleine letters)*} heeft de maker van Turbo-Basic en wel heel prettige instruktie bedacht.UINSTR()Deze instruktie werkt het zelfde als INST*}R(), maar kijkt nu niet of letters groot, klein of zelfs inverse video isProbeer zelf zoveel mogelijk uit. Kijk goed naar*} de voorbeelden in deze cursus.Een laatste tip. Deze tekst is gewoon in een text verwerker te laden, en dan uit te printen.*}Tot de volgende Turbo-cursus waarin we ons met grafische dingetjes zoals tekenen gaan bezig houden.John Maris.en.(z020 IF P<5 THEN NEXT P30 ?"P IS GELIJK OF GROTER DAN 5"40 NEXT PDe compiler checkt de listing en ziet 2 maal een NEXT en2} slexhts eenmaal een FOR. Hij zal het programma dan ook niet compileren.Ik hoop dat je iets opschiet met mijn antwoord. Moc2}hten er lezers zijn die hier iets aan toe te voegen hebben hoor dat graag.Heeft u ook een vraag? Stuur deze dan oop aan :2} Stichting Pokey Postbus 798 3100 AT Schiedam o.v.v. Turbo-cursusDe vraag hoeft niet m2}et de cursus te maken te hebben. Heeft u vragen in het algemeen over turbo-basic programmeren, of loopt u op de ene of andere2} manier vast, schroom niet en vuur je vragen af. Deze rubriek is er voor.Tot de volgende keer.t u op de ene of andere0fDRES WOONPLAATSSTUUR JE OPLOSSING NAAR: STICHTING POKEY POSTBUS 798 .} 3100 AT SCHIEDAM------------------------- STICHTING POKEY POSTBUS 798 ,=arbij alleen de opdrachten POKE en PEEK.De meest orginele wordt gepubliceerd.Tot de volgende keer.Jack de BruijnVAN PADDLE(0) UIT,65% D:TURBO.CURA- KAN NIETn))B- ZET DE TRIGGER VAN PADDLE(0) AANx,,C- ZET DE TRIGGER $.UPPpBPppppppppT*QTVpppD\@R/PA!-)'!4/*%344/>}     >}!"#$% PQ&'()*+,-./012345> };<       QRQRQR;< ?> >!}ST?>  ;<QR SCMN    ;< ;<@A@A  Q>"}RQRQR@A?> @A?> ;< @A@A    QRQR>#}QRRSSCK>SCFGMN=> @A >$} @A ;< #   ;<   >%}   ST=>  ;<   >&}    QR  @A ?>?>>'}    TU?> ; ;<  QR >(} #@A ?>;<@A@A ;< `*EP>)}P߭P8 ڭPi ۭ01ܩީUVv[ԩ2V \"/P01!b \01"/` V>*} ̐ ^ IV0uLb܍ԭPiPPiPPɊPU *PQP` 0@P`pp`P@0 zV){VPzVV)VPV`p`P@0 >+} 0@P`pލԭPiPPiPPNP[ VWPVPLb>,}WX&'$."#)%/0&'78)%&'6%78$%&'/0)%oooWX2!+,78&'1% ![\6%23$.&'>-}[\6%)%(78WX2!&'$.78$%._kekelmWX$%&'/0)%78)%23)%WX6%78$.)%WX6%]^"#]^&'"#+,1%+,&'o>.}oo)%"#]^[\"#6%+,&'/06%]^[\1%)%WX&')*)%]^"#]^&'$.&'/02!)%!78&'/0)%oo>/}o/0/0_hi$.78+,78XY2!+,_bclmYZ&']^&'6%78"#-%...>0}23)%]^$%2!)%WX+,&'1%+,$%$.#/0)*1%)%6%6%)%(78...WX)%-%786%)%(78>1}... !+,)*6%)%(78.../0+,YZ6%)%(78YZ...23WX&'$.6%)%(78...>2}!)%$.6%)%(78%&'$.23o-%&'6%$.+,23)%6%+,$%6%]^)*2![\78[\23)%78+,>3})*&'2!6%+,1%78%&'...+,"#%"#+,$. ![\6%6%+,&'WX[\/0+,&'1%Z[+,"#WX23$%2%+,-%$%)%/01%+,&'o/0)>4}%-%$%2!&'6%#232!]^&'/0[\6%$.WX2!$%]^+,6%]^&'WX6%!+,)%$..HЩ >5}Щ Ԡ[h@H܍Թ[ ԍЈx ԩ>Щ:Щ4ХލԠˢ[h@H[\[ ԍЈ| ԩЩЩР\h>6}@bdfdbH \ Ԉt Ԡ?\h@HР ԭԹp\ ԍй\Јv[h@>7}  \] >8}!"#$% &'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL+MNOPQR  !"#$%&'()*+,-./012345>9}678889:;<=>?@8AB CDEFGGGGHI+ JKLMGGGGGNOPQRSTUGVWXXXYZ[\]^_`XabXXXXXcdefghi]J^jkXlXaP P``Pi>:}P`P`P8P` *Pi*P"eL%^+PP`E*P+P`+PL ^xxI$d d>;}xDFdg`dxFfd`dxDFfd`dxDFdgddFdd`dxDDdgddx  @@@@DF><}DDdg$dxDDddFbcdd8,8,@FfdDFdg`dxFdgddDF dd@{ddxy`@{f>=}ddDxfddDxfddD{fdDxf$dD  @@fdDsd4$d>>}Dxd{dxϳf$?;f    @@@@DDd$ddxDDd`ddx,8,DDdgddxyzDDdd>?}DFddx @ `p`dxDFddxDFd'FddddDFFdgFbc@aqFf>@} `p&'@@@ $@8,;- `@@sf4$dD;.dddD;   @@@@ .;f@z{d>A}D``P;fdD;fddD{.d`D f{f   `@@@;f;f{f``@ >B}     ︸??>|||||||||>C}~~||~~>????>~~|~~>?????Ϗ>D}>E}~~?||||||||| -'-' ` %% UUVYfUZ>F}ejUUEUjUkUUUPnhnA`n*%**/*/TXUUjkUV-&.&.&.(>G}@**/*, UTnThH&)&*+.+/k꥚eUUk|}nnAAnn>H}B/*/*%$ !hH香VZ(((( UP!&+.)$ @nظ.+.*)&)&香feQhRD>I}@EYfk↑香eXF  nnAn}~AnnB>J}:&+.)$ &@nHdAEY*` jfk nn@n&!.@H>K}htt)%$!$ D@EEYfkYfk○香e香eQDQD@Bn Ann>L}AAnnC:C:香efRFH!.+.+$ @h蘑fk香efRFB@>M}n@@tunn@H  Yf香QD@nA>N}@nAnnC:eQD !&+.)$ n@H 香e>O}e``*QD nuv@+ @ @ UfUfAPAnI>P}nB ?Bf !%&*+/.Xh耄DUDTnn@@nnC.VfUDPAn>Q}AnAAvownnH  VF*)%$ *XHn@n@@n>R}n@Ax0i"7Lҽ*.+3,41ȱ2-H.I>S}FȱG/]0^[ȱ\#8MȌ5J_ OPgPmofPp"7L (`d`HH >T}hhh`aa`,dPҝhd`ef G G* Gf  *Lbc>U}12#`+b0L K5}36}45i5}663456HhLbh>V}hLȐPLbDD* ꔝ(딝"씝0픝-Lb@>i$LbphigLb+H)'>W}hJJJJ)Lbi&g hjL{l.ch/12$#`bc(b/+cHhh>X}i/Lrc/"i.h0!e)0&ilch-90!,,{,}.chLCe.;.>Y}.ch+*))Lr+ .}'Li8.'.ch`xrke_ZUPKGC?<852/,*'%#!8 j j>Z}FAn0R"zU4w`N8'xpjd^WR2  >[}E1DP wD"5e*yP5P└  ) >\}        >]}1wӕӕ+B+B+B+B+B+B+B+BYY|||||>^}|||ĖĖA@ A*A@A*A@A6A@A6A@A6@ A@A*A @ A?}KVNd p&&&&&&Fp >B`}~~?>>Ba}>>>>>>?Bb}>>>>>>>~?Bc}>>>>Bd}>~>>>>>Be}>>>>>>Bf}>>~~Bg}~~pp&Bh}GaG`GBi}`G`G` ߀ Bj} ??  ߀?~Bk}~~??~??Bl}?~~~~?Bm}?߀߀?Bn}~pp  Bo}~߀?   Bp} $ppBq}Br}?~Bs}~Bt}??~Bu}Bv}?Bw}Bx}By}pppKVQcRcHh`1_c`cH_c`cBz}Oh`ZpN_A1`@a01`iB{} Pc0# Pc Pc Pc ^c) Pc Pc Pc ^ccPcŞWA6\UEUWQWB|} 0PQMUEQDL PDTUEEUQQUQWгWVQBUVTVDLúUTEQUDUQV:,5BUWTQDL;WܻyEEUsW3WWB}}UQ.nW3[UWVRU^UQW3]W35^UV_ҿ WWW_UW3V_WW3PU5B~}QU\WRԿWWD{WQU\TVUWV3SV?3U^W35VUTWRԿV뫪WD_U[VWUS3VPB}mP VQUQUn?3W5WU\PһTD˫W׫VDEDEU[WUS3??VWW>ꪮUQQUoQ?3UTVWWWӻUDB}TDWЫGW_WԿVWWWUQ3W?WWUWT>ꪮW>PWW3WUPW׿WUDWԿW?WWWQUSV3?WUWB}?>QWW31U3QUWWW\OWӿWVW\U35WUSW3VWW3Un?W3ZU\VVWѰWB}UWZUWW?QUo31qVUW35EUMOVԺWݻTOMUW3W?WVUqAUEQUWV֫VDMUWQs3?.W֮1WQCUEUB}WET ;W VDEVUE@UWQUP>WVQUEDUQSUVDQDWTMUWQ3PWQVUGUWTDTWD@,VDWELUWW?(WWWVUB}DUEWUTQD@LWDTETUTQUEUQUQW3WWBUTUEQD@ DDWEVUEU@U3WUBUTDTQD WDTDTECUEUQWWB}WQQWUQBUEWTVDW@VDWTHUQQWJUTPDEBUT\UWQQBUJ\UWTDWTEMU_UVQBUW_UDTDEUZ@UnUTUTUTPUWWUj]UQB}^UUZXUת]Uj\UTUnVUERUV]Uת\U_UzVUiRUZ]U׫\U_UVURU֪RUV]UOWVU׺PUTSUZWB}VUVUEWU>WUVPURSUJVUVUWUWU?VUP^WUNQV[UW׻WU_S׻;WԱWԿV{^03?W?WURVQ.[ WUWB}VWVԿQ;30W>_3WV3?PWWNW ϻ_QQPW0?03WW3WB}3?0WQ? W WWWW WSW?W00?V30W3W0RW?Q10?3?D PWWW B}W 30W300WW30V3W00W0W33W130W@@WQP @ D W @W0VWW00V0B}300V3W3W@WD@ @D@D  DWW DWW WVQWWVW]WWU}\UWU}WUGUW֥U\UԩWUB}iUWU]GUWW\UWU}UVGUW\U}QUWuGUWU]U|WUWoDUԤWT]Uh Ws]EDUTWUUWWW|WqEDU֤VWB}њWԚWi*UWQEDU֤WWתWԚWi)UiWUEDU٤VVWUi)@(UQEDUTWP=@<UQEDUܤPWي@)B}(UQUEDU@W@?}UTDUWSU_AU}@UWWAU}@UWWWWW}?@UWԦWђVWԊWiB}*@UWSUWW}@UTTUPTUPWUAWUU@UTWWPUPW@@UTWWP_ 3W]RU_VUWTB}PYf`"X fRUѕYWY֥Y_UZefUYVYfiRU]_W]_UYVeefUYVYfYVRUW]W]]_U]C? SUL_UB}EDQEUEQEDRUWTEDUEDWE_U@QEUEQESUTEDU@DWE_UEQQEUEQEEQSUTUEDUEDPWE_UEQDW@EW@DSUTU@EDT@,U_VTWB}UTVT]U_ԕWU֕mUIkKY]FUm)iMEzU*RU*^UQԪRԪQRUQZԪRZԪQZ^UԫRUԫ[UQTQUVT_UWVѪWjWVWזWVRUWתWוWԚWךWB}_UVVUQ^UVVRVFUԭVIԭWTWVWRWZWKWiRUiW-WWWWUJVmJFUԕVԕDUTQVT]UZKVikJZJ.QץRUו5Ve5Օ*Wj"DUֵWUՕB}RUKjJVKUUUTRZJ\kJZRTRU׵XUյRUIZWR\VWRZI\UՕ\וjUTDUؔ4dLXSSXLd4^U5j5DUBUSVRSXUJRSVԪSVRJRU׭B}SԪS׵XU5V5NUIkKSI;UWjCUWfUIkI9UWTWVWRWZWKWiRUiW-WWWW}UTVRRVT_UJ-WRW֥-JRU֭KZWRRVWRZK_UՕRוwUVRZB}J^TVZRUZץJUTRW[\UTVRZRUתTVUTVRZJj+RU׵VЭVUWYIUQT\UתWWUVQUVֵjRUЪZJk)W+ZPRZJRUWSUSGUTB}V[UTVR[Im%YU+RKԪVKjDUeeVUԕGUTWVT\UԪPԪQUVֵjRUתTQU֪ZRPVRZRUQVUԕRԕDUPT^UTVRZJj)P֭)JRUܭUJB}ZPRZJZUP\UQTAUתWRUWTWVWRRUԪWZWJWkW)WWWWRUԕWuUVT_UZkW)+jZRH5V֕5JRU׭SVVS*JRVVRDUVYUPTEUJ)PB}֭)JWUTVRZRU֩JZPRZJ)\UPCUIkIWUIkI UIkIVUIkKSI=UTVRZKiKZRVT_Ui-PUՕ-ihUWJWUWJGUWWUWiUiKZRVTPUTVB}RZKi_UՕ-i-oUJ%W%PUWTVUT]UתZVRZJk)WWUֵ]UVLUVRPZRV[UѪRVYRՕXUѪTUWedWUԫXUוQ׵@UWTWVZJRUB}RZXWMWeW5WժWUյRU׵WЩ)+kjVJԪWZJ*DUWWֵRURTXUTRRUԪRԪRԪRU֪RVVTVRRVVTVRRUյQеՕQ׵_UT\VT_UJ-B}^֥-JRU֩VTYUTRUQ\UWԕ]URTXUTRRUԪZԪRU֫RV^TVR]UՕ\ֵ]URTXUTRRUԪRԪRԪRUԪSUSSSUԪRUWW5\UW5WRURTXUB}TRRUԪRԪS׭RUԪSUSS[UWW5@UTVR\ZRVT]U*SQ֕*RUѦZRVPUԪPZJEUԥRRUZVXTVZRUשSԪSץRUJRSVԪSVRJRU׭B}X׵JUZVXTVZRUשXץUTVVTFUԕW֕*RUתjYJk)RU׵CUZVXTVZRU׫QҤW׭RUjZKi-Wܥ+jJZRJRUԕYUՕRURB}TXUTRRU׫[ԪBUԪAUW5WRU*JWZX_YK*RUՕ+jJZRVTVU_UTVSYM嵕QUVRUj)W^-שRUZVXTVZRUߥPוRURTVUՕB}+jJZRVRU%Z]UTVR\ZRVT]U*W\W׵*RU׫RWV\TWVR]UՕ\ֵ]URTXUTRRUԪ\ԪQשRU֪RVPTVRXUյSֵ[UTVR\ZRB}VT]U*W\ђ*RU׫RWV\TӶfJVTSUՕ\ӵImPUZVXTVZRUԪRתP׭RU֪ZRVVRZW)WkZ]UԕQוPUWMmAUQTRUJ)WЩ*jZVB}QUՕRUѬRVTWUӕjZVRZRUQSUV\UWRWSAUԪ[VRJRUԪ[ץRUץ%WeAUZVYT_U׫Y֭)JRUV[UVRUשY5ו]UjZWVWTGUשWWB}WW)WkWJWZRRUVQUWTWVWSWYMRU֩5WWDU*JVRVVVTXU׺VVVԥW.*jRUԵVVVWФJZRU֪imVeV5VV\UZTXUTZRUԪW+jJZB}RVRXMe5WԥRURWTVSٍ+jWJ*RU֥^UՕRUZTCUԪW+jJZRRVRjRURWTVSٍRץRU֥@UWRWS_UTVRRUԪPUTVRZJj+RUުZB}Jj+PUԪRUֵ_UW5WJURZZRRUץXUեbUWiWKWZWRWVWTGUWWWWW-ibUZTXUTZRUԵZԵoUZe5Vі5eZXUѩVTVUѥTVZUPB}[UTPVTZUjkQ]ՕjXUЩVT9WTVZUPURJW*VW*JRXUץRשDUV[UU='1'ux?]k8UE=Ж=З=Д=Е5ygB}8eGpU^Y8Eg8?GU]Uk8Eg85^8Wf8_a8};Е~;ДZ8V>G8Z8Y8䕜R[1'UY8@8)?{;З;ЖUr8B}@8E|kkW_8K88q88n88{8@8?m|Ji9f8Z8G8@8?TWr8@8|ZN8=QխTt8@8?M8UD_9k8B}98k>9`8a8k8Um8@8@8䗜]U@8Y8K88;>8:>f8m88~EFa8Uk8=j8m8g9a8m8Hq8j8US`8k8n8tB}^8|TPn8WU>MM80 jim`gzyrpvtJHIOBC@FZRUm^_U_?\]?]RR]RSB}SPPPQQ;QeQVVVVwVWWW/WWaWAWTTTTT"T5TTmTrT@TSTUUUUUUUUUUU*U-U%U?U1U UUUgU_VUTUT^P^SUtU]w]VB}U\U\QUQUTUQRUWU`VTVU]URU`UWUWTWUWJ3$픝^8]\]RWSPQVWWTWWWVWQWPWSWRW]̪_]SQWT|_\]RSPQVWT_\]RWSԪW_W\]WB}RVSVPVQQVתV]U_\]RSQWU\]WRSU_\QUԕWU_VUWUPWUWRUPRUSWUSQUSPWUUPRUWYUPYU]UTUWU_WU=?9Q;$!V;"/B}(V;V;V;ȑQx`h0 Hpn=9vV;^:\%Q$W'TWVQPSR]\_^YWUQ[ESFWBWFIPXDQUWACWMCOSUZGB}QUQ@WLWAN ]WPYP_P]VPYP_P]PWT]TSTPTWV_V]VRVHHJuJHNHHJqwuJ|qHMDYPY|qHMDYPYpuLAX]T]rwNCZ_V_WPVB}PWDZDWHNHDZYZY_]P]PVP|rqrqwuHuHND|rqrqwuHuHNHYR_PYR_DYMFOFNFHFNFOFMFCFMDMFOFNFHFNFOFMFNF~T~B}MQMQFQCQDQMQFQCQHQqUqrupuvuwurupuvuwurupuvuwurupuvuwurIpIvIwIrIpIvIwIrKpKvKwKrKpKvKwK ]QSZACBLGZACBLB}N]Q]^ZACNOLBGZACNKHNBV]_Z[X^SV]_ZGDZ^]W]GAXZ]W]GAXZ]W]GAXZ]W]GAXZSWSEG^XSWSEG^XSWSEG^XSWSB}EG^X uKAAAuWAVAAAAuWAVAGGGKWGVGGGGKWGVGANurrprpvwvwKwvwKANurrprpwKwvwKwB}vwKEQQQEWQEQGSQSGWSGSEQQQEWQEQZVQVZWVZVIBAEIBAEIBAEIBAEKLCGKLCGKLCGKLCGIBAEIBAEIBAEIBAENCFZNB}CFZNCFZNCFZIVIIIWIVIKVKKKWKVKIVIIIWIVINVNNNWNVNUQ^EBQ^EBQ^EBQ^EBSXGLSXGLSXGLSXGLAB}GX^]EBIvEBIvEBIvEBIvGLKpGLKpGLKpGLKpuKLBAEG]SX^]g85]-_'_M8'?;0 jim`gzyrpvtJHIOBC@AZB}RUm^_U_?\]?]RR]RSSPPPQQ;QeQVVVVwVWWW/WWaWAWTTTTT"T5TTmTrT@TSTUUUUUUUUUUUU-U%U?U1U UUUgB}U_UPUUUUTWTUUJWUWTWUWJaci 6<)_U\]SQV_]SQWT|_\RSPQVWTY^_\]RSPQW_\]RSPQV_]SQW\_W\W]WRWSWPWQWVWT]SB}QW\]RSPQUWU\WUVWUTWUQUWTUTQVUQQURWURUTPUTPWU]YUPYUPVUSWUՐU_U螕؊處ص]論E_B}{_z^U論XPQ5_U螕`處c]論E_{5z4Uە論XRB}S5_U螕ޕ處ٕ]論WE؟_{`zcUۙ論X\؞]5T_FIpA6_WUWTWUAPQB}AQUKS1VQ}T}gUPWWU_W1UQTZTZVgVWT6TAPgVWT_UY_AUW6UAPQuAQUk$ՔĔɔ_\]SQWZVPR\^_\PWT]_YW[WXWYW^W_W\W]WRWB}SWPWQWVWWTY^W_\]RSPQVWWTTVPR\^_\]RSPQVWT\^_W\W]WRSTPUxUuÖAP|TWWQ@RWЖ|TVVSB}C\|TQQ]T]u}uuI5T5RP5論RᔟXP甅u唅T5䔥V8QB}He[mQ5M8Q5T5RR5論RXR딅u锅T5蔥V8SHe[B}mS5M8S5T5W߅R\5W論RaX\uT5؟V8؞]ꛟHe[B}m؞]5M8؞]5|u:'06>쎃?قـ4֖纀s&oww_sII;IIٽ=ټ_F}?==<us~?I0I?su5IIsfsu?z1w;W_?wٿ=پڼ=WWW_S==F}hPnIHy6hF};.*-:18'$/$*( )6>$",}p !1;4:)<8801+1=-998 &.5&7 .PI}HRW\xQYGtT@TU[GCKXdi_BfVAMFaOjl]{i|l~xrgSf~PnbaLblHagF}hkvqApNCFNjm"d%wbdg|te/q2akb}emqpcj?BG J RX[ ,1;(d&g32&l.o:!&?;F}'x:{5.*?Ȅ0Ƈ36:3,)& ,4255+-",: w}slojDppZh[azfakQcj|hgG}KJIOAVH7\EYOPR O"[.jG}? 6 3/+  *%:/526tfpfdc8*! <"([X3^Sq|PNeJNvOF\PXvoZBlifJBbQO|d^h~qYleyv|VRG}~P{w`L//$!"H@t{joƯ]0욝G}ʺ<   2 ("%-%/;7161;pwWVezi ibeou ~^S{IP}wLu@\PrpKTDIAOlx`efEL~}gy|uYvG}~sUdzaku|tMhngf{[qZFmAto":G}x=:  0  )x",$855.=2092'/&)9 * 5/6)#*K_P|OMVRVvVNR@_Qo]F^QSGCFfhd@CMLzzG}]/+?:,%#8KV{qdghkdJyN~hpDvIxwlG}y= 23_Xtq^D@H&$($*-8 <8=!=;1 ' :(,$5(4^S}RZPTQ[S_zvPjo^BAwaiENfUMG}PCe`k{ehUZuMVz]RpJOyh`gJFG|dgy{oa +0G }ba;74 '#+%0-1.)#&:0);; 9, )  )'24Z`}K{JVJMuQ_F|sdKmXJAG }iXHQLANxaRzq\}hp}yr[WsKPDkMbboItvjimGAG iG }Y?::5?0 +(#  (7)43-8;4 8 !''02,"6#^P}U{MKQCSuw|eG }jrmmfn`bnIXs]hssws~xrW\WbhmxoIfoq@L\tdpuG }P;=92!<1.-(*&4=25' 72?=!<0''29= 9?$&.+1'8(3E~NU~zMJXEG}OQPHZucnZ_JNch@TDJBVaMv[yfbZl|vV|Tc}ryLiceaJsipj`gyiDNdyӛ!G}Pu<*)#(&,!"APOP #% 6,) <;>3$+"*#'!2Vgf+5t~JNG}gYP~R[u|faq]F@XXRjYtmHLAIkoZjxnz`Y{ms~u~RqO`b`kEHjodBCrsz,I:7;TFPFDC"'*HK$ #=+)("7*8= >3%%=/'/$<1G}(D\^I[}xMWuZRGZunkHDH[IkfVPBPBZf^r\h`rw{s[PfcgndNL{xsmdo`OCddr#G}1D:=Pn+2=& 73-/,#*&;$49,3<8! (<::%.8-2G}. '+JNTz^WyBqYXtRr_YJnFMGA\DFRJVmd1:/&>0Y|mPzRkqO~bGrismio`D"6 2ְG}GMgn? 81*&$&2# =4695:9 'G}  "> q{HTzSM|v^[][TSaj fhdf~`178/+5=">7;?2\U<+(L2+NH+'1!1CHйӶӱ[[[[SPUV1>94#G}Yp^%I)QVpSyu\%>aLPxj+"0*8_ )G}G h vXA`uKӗU:Q/>ܳjchfbpr@ƮG}#&{wy8$!;$=qaa{lfjxxiqqtc FїyG}̓ԦXOjB?u .5 bֲmկ¿~YR% ]|9$* [U 1,6G }/-'4?>9*$R<$k~$* n 9xsfM;zeNEnyhWitWT kY\cQ]^?e\WFa03+U-101MN/ut*(9F'}=BFq†Ҋ}ӐG!}Β*-0熻񗈁<񒏌&Ԙ,廊௰=^C>Z0-LQG"}4,M[R\'`}jcp{dmzsr 9 o=w5;43z6}EatEKB@OPnoT`~c\e<)c@^:3(!W0dMLy-.H,uC^:ENYptG#}ԃc_ &-A鏐༁R&.åԬܱsxź{=81$ Zy8G$}I5R_@Q076/2)D%)C]!^x${uv+oph4 vx`<xqdKytKLql Shkg|fyx_FElW$RT5kP-Q/MAr#tJ+yF9BOZq@°G%}u۷ȶ{ӯЮ֧ئkžSD῀4:!䀙ټںߨװүˮ̵̤ź<^G&}=B8:[ 06J0QO\IM-R(J+D%[#$,}y'tp$ l ngt}jde35abx@yaxvsxkBmphstj'U|odb'YD#[PK`6ZYJuTKRID A%'G'}&@لʭ ݨ묷lT\0t7>CF$*-ߡߤרҬ֯μǹG(}ƿ?BQ\DYZG7I67,2(/T]^W'YFG\"'  ! <x}`OfqdKyujhsnq n iWTU`a98";<%Y'01570-Q.)(O<5I7'G)}&:43=A?sʹͱc٩gjnZ^AJ29򎓌"ꖋ)惜埆߬ڦզҮͭG*}¢Zy(jv?knSBx{wpp`hAbf9]^TUYTcR]KMrG+}EGEEHBQ~GU.~靬ۮr`?X(QԒ_ۆB>ʫG<0!鹼6`艎8lG,}ϟˁojNk⣠7ڧ~1>-K\&-%-4#M~qqѽ `b<:Z}.tq޳Ά)mViiaZaXQ5RYVWG-}KpKKGxGv }^_GE>iShlOO vWxU+Ɲ^4>v%q,HHkkM;F7M5K>=T((,b7(G.}j/31 $p9 ?>E2=Ɗa7 ;ř-$'&$&A-IGzr&}!Ku}Ԛ.bGfgO%RG/}SmnAHF@ApA}DEs~P^pW7_M!US-ɯpqsrEwB(v!=@.ȡ64LO TT[ 0dG0}՞W+#mp+u̝5|>4)47d. ɕ+)1˳'+Y#D(ϱ BÀ~GtQtu~sB%Tn`憈dt݉eG1}\`ViZS}`uHfĤFqs{jL{ =pbJ'ms|e#x){sBa6sGJx~5;ֺ}XK W%-]G2}<6#':h]z+йpq34.;/}/̓n9.vĕ,6%/B,  U={~y#Nwmh/ǧdG3}d1`e_]iHKV-A.u MzEFfIF`M_p X{x\`0۶ssvthI{|Di<Š; ?SG4} ,!r u/33;u|~*/,//=Qӈ42?+.s,MĪ2ŻV8qіљwbȝrleG5}mX`5eRiOIKBMB·!+_,TYq6?GSk;aP77$̠/uqy>y7}k$DGJG8}sMRkUX*^a&(hUk0>rKux{ ?ő*;06302,҃rr/ "!:(EZ^4 ǀ;uG9}u}tfG1oaZaQ2U5@tKCFIp)IJ NOT^ cd%hink,069||>:G:}FvJ  P#B(X[a !v)+dlPpsvFo} =2?Ô746#+x/*"ߝ##ߡ q~+ ͳVW@G;}tyRrgkond̝UHX^RNu\EAB>CsFw { po4bctpg2kU,<0tu#"}-zz-)~G<}0BEH [rNMA'YM@12d&}jևr2a5#bh9o[ >Á0?P2`an.yTÏޞ,wBCDkhjZWG=} }xxq!–?<2>Ev-.BF7)* cU Y!610(n/.14GyG>}E;>0UD7KX[eQ$鞎Y, bbokԚrKu|}}4?4;9;@Pu?1TXm;)P@e/-$ྡྷ;nbS KG?} yw@v]xE|d|uain<8vg` RPXZPmTEKFQEp[Y]o!bv39YeqssA %(yNH0XpG@}4fjhXT?1;5 7͙-ו/}w+!΢$򽂪GA}x~㌍kh?>a16 TWƪ哘HGGA@slwK]g~VSTEP{j\X_=BEzSeCOZ,mGB}o: qut]FxKzU"3 iu5&95-↲D߽!&'9׵kP] YI9_WABSI.[Q\GRS~zqĢGC}e|pblr}l !ػw˞olec#+IE)C@@GKVw MJBv|VUjM\}HQ'DEGD}Mn/s^VQ2XZU1!/8n/,*EV %꟞ -[q0 `c;n=-ub%$#20: zyePMNeOX+ҁ+PIGE}m<Zf m⣠Fйv >h0 `X6sMtӨ12&sgfjQJOL_~QRVYFU`i[_QNtGF}GlN/\L_$(QdZ[[LN~2VY &$4R  XL /t"qA۠&{,(eXgfOm|onfz>9m]60D-Â!GG}aj, rs^U}6~pLܿkk/X^\!}"/u&ELB؅Gy LMOo-&CJGH}MG]ORBW)jV`{sD#%,,yMTW$8 7 ]>S)ⱳ7 ;(myxy.d1tNٌ9~; ~? b; )xGI}!#"A* R.&yt=0XPa_]Y-LMLKFIHz MsRGJ}W{V]VJ7G&4gDghm;%Pn`qrcda&v9)cjd+,"N*SN v/ J\Ku0da'N}q+A}/tgfp5^p=.*iß9ҙފ]WeF{GK}ҁYܟԊE1)龿𜢒lTх؉߀EԃǀǓ˫b  H.DDPBם%GL}SyPSL6uS09<8IMh ##ZRU4RP<帙q<}fpaEڈ э߁/Ι4=Ů;8;8?4h,X6V "!W|]9_TMGR}@ʢP8:xO R$ֆ ,31:'$O{T"1sېQ{^}DfAkJls' wd,^dFaKGS}jLN6mK2lD7jA-+-%pP8rKlu~gýX QtWs ' % !rtj4j 4{4]1|2$Y7!.:DGT}$7J033n4eraV)5[>A;$ W)q1Q 9YB@j7Il ưWz̾]`GU}$h^(%QbK8TEi@/Ņ2DvV%|PCmDhKes`bX|j{nvasȠl  |Ѡl  pbug/:/]P:&P7!)GV}fCe^=(fFuTpSPQuDgY }B!&:  1yxT܀tqoO(b`~z5GX}F EC ]cfdk5i3lr q+w)u'K>3=!퍱'ݽۿGY}׀ՆnҔ̗˯Ƿ Új?h=8u97z44w21c*-g*)c&%c&![[\YUOI K LIF?D};{xU.ެG[}ځٍփkўЃ͈9}=?U;Y6ȳ3϶ͨ}zx(ontl* qV&$]C@^EDZBWLsrHEoTYk\GgG^}PKcRM_nq[tpWx|Sc}LxdKt@DB EzQcVj] +m@3!w7{~>BF q PNRG_}`^"!'g+W)Qm-3s7Kw;9}=8UWY6Z\4Ҭ%DF"JL&pr uzOB}b WZ e j_Rm|'*zywt%;rqol=G}L= ( L 0q A    IB JC;? D W Ka} LL  ` W )LA!  ߰")-݆ p" Kb} $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ`Kc}$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H Kd}p h  hyhy D L> L JJ    ! LA*` BFKe}7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!LKf}EE !E^ ^ E E7EȩEdE/EȩE  DKg} .L }  ;F d  ;?F7F? ( .   Z D LL d Kh} . D  L    p  E` , d)  D L) 0BM݊L݉Ki} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ GKj} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >GKk} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISKKy}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU Kz} L ? .  t`GBJ ~DEHI B V0dVK{}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEhK|}DEL8HI4 0 HI,0 0  9 .G VLOK}},0 L4*IJ`llD1:TURBO.COM NEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHIK~} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHIK} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO K}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -K}LLu ÝDEHILV 9 .l 9 .l  `` s$B BHK}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu H}*@ A @ AA@A6@A@A*A@A*@ A@A@     OOOO_ GA ?}GA G A C"KC$A" KCA E C C"GC$A$C"M$CA E A E"AEC H ߗhiLB OQRZ?}T ☍-㘍.\ UmS[lO` PXY]^f` ☍㘍h ao_?}gnP`ԗݗ %.7@IR[dmvǘИ٘cdcۘxd(?}(cc(2 2 d cd}ccccc d 22c24c2 4?} cxc c c c cccc< cAܘk $3D ?}       ` f <o#j igd5+ba_>\ ZYWTXNN MMFD#BFAGKI M-S/ƨ˧Π͛œ݋ꈈ̃ G}D硬\ߚܘe܉׃۲o4ɒ ~PR