ER—„ÿ”
‰.LIOFF‰JMPSTART-"(;ASSEMBLER-KURS#8,Listing12;"<;EinfuehrunginFeinscrolling"F;mittelsGrobscrollingindasP;Prinzip.Z;d;AuseinemTextvon115*95#n;Zeichen(Datenwirrwar)sollen"x;immer40*24Zeichen(Screen)‚;alsAusschnittgezeigtŒ;werden.–;# ;MitdemJoystickkannmandasª;FensternunZeichenweise!´;bewegen,durchDrueckendes¾;Triggersschneller.È;Ò;weiteresimText.Ü;æ;(solldasVerschiebennur!ð;Zeichenweiseerfolgen,kannú;mannatuerlichauchden!;Sichtbereicheinfachnurin#;einenfestenScreenkopieren, ;stattfuerjedeZeileneue"";Pointerzusetzen.Dochbeim#,;Finescrollinggehtdasnicht)6-"@SDLSTL=$230‚Displaylist-VektorJTEXT=$9500ƒ'Text'-AnfangTYP=$600†Fenster-Position^XP=$601†(linke,obereEcke)hH=$602/$603Hilfsvektorr;|CONSOL=$D01FConsol-Taste!†STICK0=$278‚Joystick-Register STRIG0=$284‚Trigger-Registerš;¤SPLUS=128„2^X>115wegenMSC®ZMAX=95†95Zeilen¸SMAX=115…115SpaltenÂ;ÌBACK=$2C8„RahmenfarbeÖCOLOR1=$2C5‚Schritfarbe àCOLOR2=$2C6‚Hintergrundfarbeê;ôSETVBV=$E45CƒVBI-Installer!þXITVBV=$E462ƒOS-VBI-Einsprung-DL‡.HX707070‰.HX420000420000420000&‰.HX4200004200004200000‰.HX420000420000420000:‰.HX420000420000420000D‰.HX420000420000420000N‰.HX420000420000420000X‰.HX420000420000420000b‰.HX420000420000420000l‰.HX41v‰.DADL€-Š;DieRoutinesetztdieMSC”;(MemoryScanCounter)der#ž;einzelnenZeilenjenachLage¨;desSichtfensters.²-¼SETADRƒLDA#0„DifferenzÆ‰TAX‡1.ZeiledesÐ‰LDYYP„BereichsundÚ.1‡DEY‡1.Zeiledesä‰CPY#$FF‚Fenstersî‰BEQ.2„errechnenø‰CLC‰ADC#SPLUS‰BCC.1‰INX ‰BCS.1*;4.2‡CLC…Differenzder>‰ADCXP‚erstenSpaltenH‰BCC.3‚addierenR‰INX\;f.3‡CLCŠAnfangs-p‰ADC#TEXT„adressez‰STAHˆdes„‰BCC.31†TextesŽ‰INXŠdazu-˜.31†TXAŠrechnen¢‰CLC¬‰ADC/TEXT¶‰TAXÀ;Ê‰LDY#0ˆAdresseÔ.4‡TXA‹inDLÞ‰STADL+4+1,Y‚bringen
è‰LDAHò‰STADL+4,Y„undaufü‰CLC‹naechste‰ADC#SPLUS„Zeile‰STAH‰erhoehen‰BCC.5$‰INX„(X=HI-ByteAdr)..5‡INY…Adresse(Word)8‰INYƒundModus-ZeigerB‰INY†ueberspringenL‰CPY#72ƒ(24*3)24malV‰BNE.4`‰RTS‰dannciao!j-tSTART„LDASDLSTL+1‚DL-~‰PHA‹Zeigerˆ‰LDASDLSTL„retten’‰PHAˆ(aufStack)œ;¦‰LDA#$90°‰STACOLOR2†Farbenº‰LDA#$A0‡aendernÄ‰STABACKÎ‰LDA#$AØ‰STACOLOR1â;ì‰LDA#DL‹neueö‰STASDLSTL„Display-‰LDA/DL‹list
‰STASDLSTL+1;‰LDA#40†Ausgangs-(‰STAXP‡Position2‰LDA#60†des<‰STAYP‡FenstersF;P‰LDA#7‡RoutineZ‰LDY#VBI…alsVBId‰LDX/VBI„(Deferred)n‰JSRSETVBVƒeintragenx;‚.1‡LDACONSOL‚wennŒ‰LSR‰<START>–‰BCS.1†(Bit0=0) ‰PLA‰dannalteª‰STASDLSTL‚DLzurueck´‰PLA¾‰STASDLSTL+1È‰RTSŠundciao!Ò-ÜVBI†LDASTRIG0‚Triggeræ‰BEQLOOP„gedrueckt?ð‰LDA20ú‰AND#$3ƒoder(2^x)-1‰CMP#$3‰BNELOOPE;!";AnstattdesWertes$3(%11)!,;koenntemanauchalleWerte#6;nehmen,diealleBitsgesetzt#@;haben(z.B.%111).Diestritt!J;dannregelmaessigauf,wennT;Register20jedenOS-VBI^;erhoehtwird.h;r;wohlgemerkt:DieRoutinen#|;HOCH,RUNTER,RECHTS,LINKSver-†;aenderndenAkku(Stick0);nicht!š;Ausserdemhaettemandie#¤;Routinenbessergleicheinge-"®;setzt,anstattzueinerSub-#¸;routinezuverzweigen.......!!Â;(soist'suebersichtlicher)Ì;ÖLOOP…LDASTICK0à‰LSRˆhoch?(D1=0)ê‰BCS.4ô‰JSRHOCHþ;.4‡LSR†runter?(D2=0)‰BCS.5‰JSRRUNTER&;0.5‡LSR‡links?(D3=0):‰BCS.6D‰JSRLINKSN;X.6‡LSR†rechts?(D4=0)b‰BCS.7l‰JSRRECHTSv;€.7‡JSRSETADRŠ;”LOOPE„JMPXITVBVž-¨HOCH…LDXYP„schonoben?²‰BEQ.1¼‰DECYP‚nein,dannhoch
Æ.1‡RTSÐ-ÚRUNTERƒLDXYP„schonunten?ä‰CPX#ZMAXî‰BEQ.1„wennnicht,ø‰INCYP†runter
.1‡RTS-LINKS„LDXXP„schonlinks? ‰BEQ.1„wennnicht,*‰DECXP†links
4.1‡RTS>-HRECHTSƒLDXXPƒschonrechts?R‰CPX#SMAX\‰BEQ.1…wennnicht,f‰INCXP…rechts
p.1‡RTSz-