ER¶ÿ”
‰.LIOFF-";ASSEMBLER-KURS#8,Listing4(;2;8-Richtungs-Feinscrolling<;#F;AuseinemTextvon128Zeilen"P;*120Zeichensollimmerein"Z;Ausschnittvon20*40Zeichend;dargestelltwerden.n;(ymax=128-21=107)x;(xmax=120-40=80)‚;#Œ;MitdemJoystickkannmandas –;FensterinalleRichtungen" ;scrollen,durchDrueckendesª;Triggersschneller.´;¾;Ganzraffiniertekoennen È;nunnochberuecksichtigen,#Ò;dassdiehorizontaleBewegung"Ü;doppeltsoschnellwirktwie"æ;dievertikale,weilmanfuer!ð;ein(quadratisches)Zeichen"ú;horizontal4,abervertikal8";Bewegungen(bzw.hier:VBI's);braucht.Manmuesstealso#;dievertikal-Routinenjeweils";zweimalaufrufen.,;6;weiteresimText.@-"JSDLSTL=$230‚Displaylist-VektorTTEXT=$9500ƒ'Text'-Anfang^YP=$600†1.ZeileimFensterhXP=$601†1.Spalteim-"-rYMAX=107…AnzahlZeilen|XMAX=88†AnzahlSpalten†SPLUS=128„(SPLUS=2^X)>120H=$602/$603HilfsvektoršVER=$604…Vertikal-Merkreg.¤HOR=$605…Horizontal-Merker®;¸CONSOL=$D01FConsol-Taste!ÂSTICK0=$278‚Joystick-Register ÌSTRIG0=$284‚Trigger-RegisterÖ;!àVSCROL=$D405‚HardwareregisterêHSCROL=$D404‚fuerScrollingôBACK=$2C8„RahmenfarbeþCOLOR1=$2C5‚Schritfarbe COLOR2=$2C6‚Hintergrundfarbe;SETVBV=$E45CƒVBI-Installer!&XITVBV=$E462ƒOS-VBI-Einsprung0-:START„LDASDLSTL+1‚DL-D‰PHA‹ZeigerN‰LDASDLSTL„rettenX‰PHAˆ(aufStack)b;l‰LDACOLOR2…Farbenv‰STABACK„angleichen€;Š‰LDA#DL‹neue”‰STASDLSTL„Display-ž‰LDA/DL‹list¨‰STASDLSTL+1²;¼‰LDA#20†Ausgangs-Æ‰STAYP‡ZeileundÐ‰STAXP‡-SpalteÚ‰LDA#0‡sowieä‰STAVER†Merkerî‰STAHOR†init.ø;‰LDA#7‡Routine‰LDY#VBI…alsVBI‰LDX/VBI„(Deferred) ‰JSRSETVBVƒeintragen*;4.1‡LDACONSOL‚wenn>‰LSR‰<START>H‰BCS.1†(Bit0=0)R‰PLA‰dannalte\‰STASDLSTL‚DLzurueckf‰PLAp‰STASDLSTL+1z‰RTSŠundciao!„-ŽVBI†LDXSTRIG0‚Trigger?˜‰DEX¢;¬LOOP…LDASTICK0¶‰LSRˆhoch?(D1=0)À‰BCS.4Ê‰JSRHOCHÔ;Þ.4‡LSR†runter?(D2=0)è‰BCS.5ò‰JSRRUNTERü;.5‡LSR‡links?(D3=0)‰BCS.6‰JSRLINKS$;..6‡LSR†rechts?(D4=0)8‰BCS.7B‰JSRRECHTSL;V.7‡INX‰doppelt?`‰BEQLOOPj;t‰JSRSETADR‚NeueAdr.~‰LDAVER…berechnen,ˆ‰STAVSCROL‚Merkregs’‰LDAHOR…uebertra-œ‰STAHSCROL‚genund¦‰JMPXITVBV‚cioa!°-ºRUNTERƒPHAˆAkkurettenÄ‰LDAVER„wennganzÎ‰BNE.1…untenØ‰LDAYP…(yp=ymax),â‰CMP#YMAX‚dannnichtì‰BEQ.99„scrollenö;.1‡INCVER„feinnach
‰LDAVER„unten,wenn‰AND#7…8x,dannum‰STAVER„ganzeZeile(‰BNE.99„runter2;<‰INCYP…(yp=yp+1)F;P.99†PLAˆAkkubackZ‰RTSˆundcioa!d-nHOCH…PHAˆAkkurettenx‰LDAVERƒWennText‚‰BNE.1„oben(yp=0),Œ‰LDAYP„dannnicht–‰BEQ.99ƒscrollen ;ª.1‡DECVERƒfeinscrollen´‰LDAVERƒwenn7x,dann¾‰AND#7„umeineÈ‰STAVERƒganzeZeileÒ‰EOR#7„verschiebenÜ‰BNE.99æ;ð‰DECYP„(yp=yp-1)ú;.99†PLAˆAkkuback‰RTSˆundcioa!-"LINKS„PHA‡Akkuretten,‰LDAXP„Schonam6‰BEQ.99ƒlinkenRand?@;J‰INCHORƒwennnicht,T‰LDAHORƒnachlinks^‰AND#3„scrollen.h‰STAHORƒWenn4x,umr‰BNE.99ƒganzes|;’Zeichen†‰DECXP„scrollen;š.99†PLA‡Akkuzurueck¤‰RTS‡undcioa!®-¸RECHTSƒPHA‡AkkurettenÂ‰LDAXP‡SchonamÌ‰CMP#XMAX„rechtenÖ‰BNE.1‡Rand?à‰LDAHORƒwennjaundê‰BEQ.99ƒganz:cioa!ô;þ.1‡DECHORƒsonstfein-‰LDAHORƒscrollen.‰AND#3„Nach4x,‰STAHORƒumganzes&‰EOR#3„Zeichen0‰BNE.99ƒverschieben:;D‰INCXPN;X.99†PLA‡Akkuholenb‰RTS‡tschuessl-8vINFOT„.AT" Assembler-Kurs #8        Feinscrolling "3€‰.AT" Mit Joystick bewegen. Trigger: schnell "Š-”DL‡.HX707070ž‰.HX720000720000720000¨‰.HX720000720000720000²‰.HX720000720000720000¼‰.HX720000720000720000Æ‰.HX720000720000720000Ð‰.HX720000720000720000Ú‰.HX720000720000520000ä‰.HX7042î‰.DAINFOTø‰.HX200241‰.DADL-;DieRoutinesetztdieMSC ;(MemoryScanCounter)der#*;einzelnenZeilenjenachLage4;desSichtfensters.>-HSETADRƒLDA#0„DifferenzR‰TAX‡1.Zeiledes\‰LDYYP„Bereichsundf.1‡DEY‡1.Zeiledesp‰CPY#$FF‚Fenstersz‰BEQ.2„errechnen„‰CLCŽ‰ADC#SPLUS˜‰BCC.1¢‰INX¬‰BCS.1¶;À.2‡CLC‰DifferenzÊ‰ADCXPƒ1.TextspalteÔ‰BCC.3ƒundÞ‰INX†1.Fenstersp.è;ò.3‡CLCŠAnfangs-ü‰ADC#TEXT„adresse	‰STAHˆdes	‰BCC.31†Textes	‰INXŠdazu-$	.31†TXAŠrechnen.	‰CLC8	‰ADC/TEXTB	‰TAXL	;V	‰LDY#0ˆAdresse`	.4‡TXA‹inDLj	‰STADL+4+1,Y‚bringen
t	‰LDAH~	‰STADL+4,Y„undaufˆ	‰CLC‹naechste’	‰ADC#SPLUS„Zeileœ	‰STAH‰erhoehen¦	‰BCC.5°	‰INX„(X=HI-ByteAdr)º	.5‡INY…Adresse(Word)Ä	‰INYƒundModus-ZeigerÎ	‰INY†ueberspringenØ	‰CPY#63ƒ(21*3)24malâ	‰BNE.4ì	‰RTS‰dannciao!ö	-