home *** CD-ROM | disk | FTP | other *** search
- 1 rem--------------------
- 2 rem- assembler-kurs -
- 3 rem- teil 4 -
- 4 rem- -
- 5 rem- von -
- 6 rem- -
- 7 rem- ralf trabhardt -
- 8 rem--------------------
- 9 a=a+1:ifa=1thenload"mc-routinen 4a",8,1
- 10 ifa=3then150
- 11 d=53272:print"[147]"
- 15 sys26691
- 20 c=0
- 30 print""
- 40 ifc=0orc=8thenprint"[144]"
- 50 ifc=1orc=7thenprint"[151]"
- 60 ifc=2orc=6thenprint"[152]"
- 70 ifc=3orc=5thenprint"[155]"
- 80 ifc=4thenprint""
- 100 print"assembler-kurs teil 4"
- 110 print"programmiert von"
- 120 print"ralf trabhardt"
- 130 geta$:ifa$=" "then145
- 140 c=c+1:ifc=9thenc=0
- 141 fori=1to40:nexti
- 142 goto30
- 145 load"mc-routinen 4b",8,1
- 150 sys24633
- 151 print"[147][155][197]s gilt folgende [212]astaturbelegung:"
- 152 print"[211][208][193][195][197][146]= [206][166]chste [211]eite"
- 153 print" [198]1 [146] = [197]ine [211]eite zur[168]ck"
- 154 print" [198]7 [146] = [197]rste [211]eite "
- 155 geta$:ifa$=""then155
- 156 se=1:goto165
- 157 :
- 160 gosub5000
- 165 print"[147][155]":poke53280,0:poke53281,0
- 170 onsegoto200,320,470,650,695,750,900,760,860
- 180 se=1:goto165
- 190 :
- 200 print"[197]ine [193]dressierungart haben wir bisher"
- 210 print"noch grob vernachl[166]ssigt, die [218][197][210][207][208][193][199][197]"
- 220 print"[155][193]dressierung. [196]ie [218]eropage ('[206]ullseite')";
- 230 print"besteht aus den ersten 256 [211]peicher-"
- 240 print"stellen des [195]omputers ($0000-$00[198][198])."
- 250 print"[211]ie erkennen sicher schon, da\ somit bei";
- 260 print"allen [193]dressen der [218]eropage das h[220]her-"
- 270 print"wertige [194]yte $00 ist. [196]aher hat diese"
- 280 print"'[211]eite' auch ihren [206]amen."
- 290 print"[196]ieses h[220]herwertige [194]yte kann aber"
- 300 print"einfach weggelassen werden, was uns [218]eit";
- 310 print"und [211]peicherplatz sparen hilft."
- 315 goto160
- 320 print"[211]o schreibt man z.[194]. statt [204][196][193] $00[198][193]"
- 330 print"einfach [204][196][193] $[198][193]."
- 340 print"[196]ie meisten [193]dressen der [218]eropage sind"
- 350 print"bereits vom [195]omputer belegt und sollten"
- 360 print"nicht benutzt werden. [207]hne einen "
- 370 print"[208]rogrammabsturz zu riskieren stehen "
- 380 print"[201]hnen lediglich die [211]peicherstellen"
- 390 print"$00[198]7-$00[198][197] zur [214]erf[168]gung."
- 400 print"[196]ie [218]eropage-[193]dressen k[220]nnen selbsver-"
- 410 print"st[166]ndlich auch indiziert werden. [197]s gilt";
- 420 print"z.[194]. [204][196][193] $[198]8,[216]
- 430 [153]"print#(NULL)enn das (NULL)-(NULL)egister den (NULL)ert $02"
- 440 [153]"enthspc(lt, wird der right$nhalt der (NULL)peicher-"
- 450 [153]"stelle $00ascatn in den atnkku geladen."
- 460 [137]160
- 470 [153][163]14)"cont(NULL)str$atn #$00"
- 480 [153][163]14)"(NULL)(NULL)atn $asc9"
- 490 [153][163]14)"(NULL)str$atn #$20"
- 500 [153][163]14)"(NULL)(NULL)atn $ascatn"
- 510 [153][163]14)"(NULL)str$(NULL) #$05"
- 520 [153][163]14)"(NULL)str$atn ($asc9),(NULL)"
- 530 [153]"liststr$ieses kleine (NULL)rogramm ist ein peekeispiel"
- 540 [153]"fnotr die indirekte atndressierung. vals wird"
- 550 [153]"der right$nhalt der (NULL)peicherstelle, die durch";
- 560 [153]"den (NULL)eiger asc9/ascatn plus dem (NULL)-(NULL)egister"
- 570 [153]"angegeben ist (hier: $2005) in den atnkku"
- 580 [153]"geladen."
- 590 [153]"str$iese atndressierungsart erm(NULL)glicht ein"
- 600 [153]"sehr variables (NULL)rogrammieren, da durch "
- 610 [153]"einfaches (NULL)erspc(ndern der (NULL)eiger ein"
- 620 [153]"v(NULL)llig anderes valrgebnis erzielt werden"
- 630 [153]"kann."
- 640 [137]160
- 650 [153][163]14)"(NULL)str$(NULL) #$04"
- 651 [153][163]14)"(NULL)str$atn ($asc9,(NULL))"
- 654 [153]"listpeekei der indiziert-indirekten (NULL)eropage-"
- 655 [153]"adressierung ( diese peekezeichnung habe"
- 660 [153]"ich nicht erfundenclose), z.peek. cont(NULL)str$atn ($asc9,(NULL))"
- 665 [153]"listwird der right$nhalt des (NULL)-(NULL)egisters zum"
- 670 [153]"(NULL)eiger (hier: asc9/ascatn) dazuaddiert. str$ann"
- 675 [153]"wird der right$nhalt der atndresse, auf die der";
- 680 [153]"neue (NULL)eiger ( ascstr$/ascval ) weist, in den "
- 685 [153]"atnkku geladen."
- 690 [137]160
- 695 [153]"(NULL)enden wir uns wieder der praktischen"
- 700 [153]"atnnwendung zu. right$n der letzten ascolge"
- 705 [153]"wurde right$hnen gezeigt wie man (NULL)prites in"
- 710 [153]"atnssembler darstellen kann. left$eute kommt"
- 715 [153]"peekewegung in die (NULL)prites. str$abei wird das"
- 720 [153]"folgende left$auptprogramm '(NULL)prite bewegenlist'"
- 725 [153]"und die schon bekannten (NULL)nterprogramme"
- 730 [153]"'(NULL)prite einlesenlist' und '(NULL)arteschleifelist'"
- 735 [153]"verwendet."
- 740 [137]160
- 750 [158]24896
- 755 se[178]se[170]1:[137]165
- 760 [153]"str$as folgende (NULL)rogramm soll right$hnen zeigen,";
- 765 [153]"was (NULL)ie mit dem (NULL)issen aus den "
- 770 [153]"vergangenen vier (NULL)ursteilen schon "
- 775 [153]"anstellen k(NULL)nnen."
- 780 [153]"valine komplette valrklspc(rung dieses "
- 785 [153]"(NULL)rogramms wnotrde den (NULL)ahmen dieses (NULL)urses";
- 790 [153]"sprengen. (NULL)it einem geeigneten atnssembler";
- 795 [153]"k(NULL)nnen (NULL)ie das (NULL)rogramm aber selbst"
- 800 [153]"untersuchen. vals belegt in den"
- 805 [153]"'(NULL)len-(NULL)(NULL)(NULL)(NULL)right$(NULL)val(NULL) 4peek' den (NULL)peicherplatz von"
- 810 [153]"$618str$ bis $6710. str$as left$auptprogramm"
- 815 [153]"beginnt bei $618str$."
- 820 [153]"(NULL)chlie\en (NULL)ie nun bitte einen mid$oystick"
- 825 [153]"an den (NULL)ort 2. (NULL)ie verlassen das"
- 830 [153]"peekeispielprogramm, indem (NULL)ie den mid$oystick";
- 835 [153]"nach hinten drnotcken."
- 850 [137]160
- 860 [158]24973
- 862 [151]53269,0
- 865 se[178]se[170]1:[153]"load"
- 870 [158]24633
- 880 [137]165
- 900 [153]"open.81str$5 20 atn0 81 mid$(NULL)(NULL) $81atn0"
- 905 [153]".81str$8 atn9 30 (NULL)str$atn #$30"
- 915 [153]".81str$atn 8str$ 00 str$0 (NULL)(NULL)atn $str$000"
- 920 [153]".81str$str$ 8str$ 01 str$0 (NULL)(NULL)atn $str$001"
- 925 [153]".81val0 valval 00 str$0 right$(NULL)len $str$000"
- 930 [153]".81val3 valval 01 str$0 right$(NULL)len $str$001"
- 935 [153]".81val6 20 20 81 mid$(NULL)(NULL) $8120"
- 940 [153]".81val9 atnstr$ 00 str$0 (NULL)str$atn $str$000"
- 945 [153]".81vallen len9 val0 len(NULL)(NULL) #$val0"
- 950 [153]".81asc0 lenval 00 str$0 str$vallen $str$000"
- 955 [153]".81asc3 lenval 01 str$0 str$vallen $str$001"
- 956 [153]".81asc6 20 20 81 mid$(NULL)(NULL) $8120"
- 960 [153]".81asc9 atnstr$ 00 str$0 (NULL)str$atn $str$000"
- 961 [153]".81asclen len9 30 len(NULL)(NULL) #$30"
- 965 [153]".81ascval str$0 asc0 peek(NULL)val $81asc0"
- 970 [153]".8200 4len val0 81 mid$(NULL)(NULL) $81val0"
- 980 [153]"list$str$000 ist die (NULL)-(NULL)oordinate und $str$001 die";
- 985 [153]"(NULL)-(NULL)oordinate des (NULL)prites."
- 986 [153]"atnb $8120 beginnt die (NULL)arteschleife und"
- 987 [153]"das (NULL)prite wird ab $81atn0 eingelesen.
- 989 print"[214]ergleichen [211]ie dieses [208]rogramm bitte "
- 990 print"mit dem [208]rogrammflu\plan in der "
- 995 print"[218]eitschrift.";
- 999 goto160
- 5000 geta$
- 5010 ifse>12thense=0:return
- 5015 ifa$=" "thense=se+1:return
- 5020 ifse<0thense=0:return
- 5025 ifa$="[133]"thense=se-1:return
- 5030 ifa$="[136]"thense=0:return
- 5040 goto5000
- 6000 ifin=10thenb$="[193]"
- 6001 ifin=11thenb$="[194]"
- 6002 ifin=12thenb$="[195]"
- 6003 ifin=13thenb$="[196]"
- 6004 ifin=14thenb$="[197]"
- 6005 ifin=15thenb$="[198]"
- 6006 ifin<10thenb$=right$(str$(in),1)
- 6007 return
-