d—59468,12:œZnU$²"£££££££££££":O$²"¤¤¤¤¤¤¤¤¤":I$²"INPUT-ROUTINE":B$²" BEELDSCHERM"•xƒ 169,255,133,1,169,3,133,2,160,0,230,1,208,4,230,2,48Ó‚ƒ 14,177,1,208,244,200,177,1,208,237,200,177,1,208,232,96Œ™"“¤¤¤¤¤¤";O$;O$:™"CURSUS MACHINE-TAAL (12)+–™"¤¤¤¤¤¤¤";O$:™"3. ZOEKROUTINES "W ™"EEN VEEL VOORKOMEND PROBLEEM VORMEN„ª™"DE ZOEK-ROUTINES. IN DEZE LES GAAN WE°´™"DE OPBOUW VAN EEN DERGELIJKE ROUTINEľ™"ONDERZOEKEN.ðÈ™"HET GROTE VOORDEEL VAN MACHINETAAL-Ò™"ZOEK-ROUTINES IS DE GROTE SNELHEID.EÜ™"(CA. 1000 MAAL SNELLER DAN BASIC.)aæŒ:I²0¤32:‡X:—826ªI,X:‚wðI²1:1740:‹FL§140¢ú™"“WE GAAN DE OPBOUW VAN ZOEK-ROUTINESÏ™"ONDERZOEKEN AAN DE HAND VAN EEN VOOR-Ý™"BEELD. ™"STEL WE WILLEN HET GEHEUGENGEBIED VAN3"™"$0400 TOT $8000 NAZOEKEN OP DRIEZ,™"OPVOLGENDE BYTES '$00-$00-$00'.ˆ6™"WE ZOEKEN DUS HET ADRES VAN HET EERSTE´@™"VAN DRIE OPVOLGENDE GEHEUGENPLAATSENÒJ™"MET STEEDS INHOUD $00.T™"DIT IS NAMELIJK HET EINDADRES VAN HET%^™"IN RAM STAAND BASICPROGRAMMA.;hI²2:1740:‹FL§140er™"“WE HEBBEN EEN TELLER NODIG DIE VAN’|™"$0400 TOT $8000 KAN TELLEN. DE INHOUDÀ†™"VAN DE CEL WAARVAN DE TELLER HET ADRESì™"AANGEEFT WORDT GETEST OP INHOUD $00.š™"ALS DE INHOUD GEEN $00 IS, WORDT DE<¤™"TELLERINHOUD 1 HOGER GEMAAKT.j®™"ALS DE INHOUD WEL $00 IS, WORDEN BEIDE”¸™"VOLGENDE CELLEN OOK OP $00 GETEST.™"ZIJN NIET BEIDE CELLEN $00, DAN ZOEKENìÌ™"WE VERDER, ANDERS WORDT HET ZOEKENÖ™"GESTOPT. MAXIMAAL WORDT TOT $8000%à™"GEZOCHT.;êI²3:1740:‹FL§250lô™"“ALS TELLER GEBRUIKEN WE DE PLAATSENšþ™"$01/$02. WE HEBBEN TWEE PLAATSEN NODIGÆ™"OMDAT HET ZOEK GEBIED OVER TWEE BYTEô™"ADRESSEN LOOPT. WE KIEZEN DE TELLER IN ™"ZERO-PAGE OMDAT DAT SNELLER WERKT ENH&™"OMDAT DEZE INDIREKT GEADRESSEERD^0™"KUNNEN WORDEN.t:I²4:1740:‹FL§370œD™"“EERST ZETTEN WE HET STARTADRES-1ÂN™"IN DE TELLER-GEHEUGENPLAATSEN.ìX™"DENK AAN DE VOLGORDE! (LAAG/HOOG):b™" LDA #$FF*l™" STA $01 $FF NAAR $01Av™" LDA #$03h€™" STA $02 $03 NAAR $02”Š™"OMDAT WE INDIREKT WILLEN ADRESSEREN´”™"ZETTEN WE NOG $00 IN YR:Ëž™" LDY #$00á¨I²5:1740:‹FL§500 ²™"“WE BEGINNEN NU DE ZOEK-LOOP MET HET1¼™"VERHOGEN VAN DE TELLER MET 1:XÆ™" INC $01 VERHOOG LOW-BYTEtЙ" °_BNE $04 = 0 ?žÚ™" ÝÝ INC $02 VERHOOG HIGH-BYTE¾ä™" ÝÝ BMI $.. = $80 ?Ñî™" Ý­À....ÿø™"DOOR BNE WORDT $02 ALLEEN VERHOOGD ALS$™"HET LOW-BYTE GEDEELTE NUL IS.M ™"HET BMI MOET BIJ HET BEREIKEN VANx™"$8000 WEGGESPRONGEN WORDEN NAAR EEN– ™"PLAATS WAAR RTS STAAT.¬*I²6:1740:‹FL§580Ù4™"“NU VOLGT DE TEST OF DE INHOUD VAN>™"DE CEL WAARVAN HET ADRES IN DE TELLER4H™"STAAT OOK NUL IS. ZO NIET, DAN SPRINGT`R™"HET PROGRAMMA NAAR DE PLAATS WAAR DE~\™"TELLER WORDT VERHOOGT.©f™" LDA ($01),Y BEDENK: Y=0 !Õp™" BNE $.. SPRING NAAR 'INC'ëzI²7:1740:‹FL§690„™"“WAS DE CELINHOUD WEL $00, DAN MOET DE;Ž™"VOLGENDE CEL WORDEN GETEST:]˜™" INY NU: Y=1w¢™" LDA ($01),Y¡¬™" BNE $.. NAAR 'LDY #$00'̶™"ALS DEZE CELINHOUD OOK $00 IS, MOETóÀ™"NOG DE DERDE CEL WORDEN GETEST:Ê™" INY NU: Y=2/Ô™" LDA ($01),YYÞ™" BNE $.. NAAR 'LDY #$00'†è™"EN ALS DEZE CELINHOUD OOK $00 IS, DAN²ò™" RTS TERUG NAAR BASIC.ÈüI²8:1740:‹FL§820ê™"“NU NOG EENS ALLES SAMEN:" ™" LDA #$FF STARTADR.=03FF' ™" STA $01< $™" LDA #$03P .™" STA $02w 8™" °ÀÀÀLDY #$00 Y, START = 0 B™" ݨ L™" ݰÀÀINC $01 ADR.= ADR.+1È V™" Ýݰ_BNE $.. = 0 ?Ü `™" ÝÝÝ INC $02þ j™" °ÝÝÝ_BMI $.. KLAAR ? !t™" ÝÝÝÝ*!~™" ÝÝÝ­ÀLDA ($01),Y Y = 0J!ˆ™" ÝÝ­À_BNE$.. = 0 ?T!’™" ÝÝt!œ™" ÝÝ INY Y = 1Œ!¦™" ÝÝ LDA ($01),Y¬!°™" Ý«ÀÀ_BNE $.. = 0 ?Ì!º™" ÝÝ INY Y = 2ä!Ä™" ÝÝ LDA ($01),Y"Ι" Ý­ÀÀ_BNE $.. = 0 ?$"Ø™" ­ÀÀÀÀRTS KLAAR:"âI²9:1740:‹FL§900d"ì™"“NU EEN KLEIN TESTJE! WE ROEPEN DE‘"ö™"ZOEKROUTINE MET SYS 826 AAN EN ZETTENÀ"™"DAN HET IN $01/02 STAAND ADRES DECIMAALë" ™"OP HET SCHERM: PEEK(1)+256*PEEK(2).#™"OM EEN IDEE TE KRIJGEN HOE SNEL DATC#™"GAAT,LATEN WE DE PET ONDER HET ZOEKENo#(™"EEN WITTE BALK OP HET SCHERM ZETTEN.#2™"BEN JE KLAAR (J/N) ?£#<¡X$:‹X$³±"J"§1340Ó#FC²0¤10:W²0¤400¬´(C):‚W:™"‘ ";10«C:‚C$P™"‘ ’":ž826:™"‘ADR =";Â(1)ª256¬Â(2);" $Z™"VLUG NIET WAAR ?!8$dI²10:1740:‹FL§1030c$n™"“EEN TOEPASSING VAN DIT PROGRAMMA ISŠ$x™"DE BEREKENING VAN DE LENGTE VAN¸$‚™"BASIC-PROGRAMMA'S. EEN BASIC-PROGRAMMAà$Œ™"BEGINT ALTIJD OP $0400 = 1024 EN %–™"EINDIGT OP DE PLAATS WAAR DE DRIE $00% ™"BEGINNEN.?%ª™"WE KUNNEN DUS SCHRIJVEN:%´™" 1. 'SYS 826'":™" 2. 'PRINT PEEK(1)+256*PEEK(2)-1024'¯%¾™"EN KRIJGEN ALS RESULTAAT DE LENGTE VANÔ%È™"HET BASIC-PROGRAMMA IN BYTES.ì%ÒI²11:1740:‹FL§1260&Ü™"“OPGAVEN :":™U$0&æ™"1. BEPAAL DE LENGTE VAN DIT PROGRAMMA.[&ð™"2. FRE(0) HOUDT OOK REKENING MET DE„&ú™" VOOR VARIABELEN NODIGE RUIMTE.°&™" MET DIT MACHINE-TAAL-PROGRAMMA ENÜ&™" FRE(0) MOET JE DE VOOR VARIABELENý&™" NODIGE RUIMTE BEPALEN.*'"™"3. PROBEER MET DE INTERNE KLOK TE BE-X',™" PALEN HOE SNEL DE ZOEKROUTINE IS INv'6™" K.BYTE PER SECONDE.Ž'@I²12:1740:‹FL§1390º'J™"“4. WAAROM WORDT ALS STARTADRES $03FFâ'T™" GENOMEN IN PLAATS VAN $0400 ?(^™"5. WANNEER WORDT $02 MET 1 VERHOOGD ?9(h™"6. BIJ PRECIES WELK ADRES WORDT INb(r™" ELK GEVAL GESTOPT MET ZOEKEN ?(|™"7. WAAROM GEBRUIKEN WE ALS TELLER NIET¬(†™" GEWOON XR OF YR ?×(™"8. WAAROM BEGINT DE BINNEN-LOOP MET)š™" 'INC $01' EN DE BEIDE BUITENSTE)¤™" MET 'LDY #$00' ?r)®™" - BLAD 13 - <+>=‘¤¤¤¤¤EINDE’ <->=OPNIEUW ";„)¸1760:‘FL‰100)™"“":€ )Ì NIEUW BLADè)Ö™" - BLAD";I;" - <+>=VERDER <->=TERUG";ú)àI²0¤11:¡X$:‚*ê¡X$:‹X$²""§1770!*ô‹X$²"+"§FL²0:Ž4*þ‹X$²"-"§FL²1:Ž>*‰1770