home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Commodore Disc 20
/
Commodore_Disc_20_19xx_-_de.d64
/
assemb.kurs4
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
5KB
|
171 lines
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