home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Commodore Disc 17
/
Commodore_Disc_17_19xx_-_de.d64
/
assemb.kurs1
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
9KB
|
264 lines
1 rem--------------------
2 rem- assembler-kurs -
3 rem- teil 1 -
4 rem- -
5 rem- von -
6 rem- -
7 rem- ralf trabhardt -
8 rem--------------------
9 a=a+1:ifa=1thenload"mc-routinen 1",8,1
10 poke53280,0:poke53281,0:d=53272
15 sys49896
20 print"[147]":c=0:poked,(peek(d)and240)or12
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 1"
110 print"programmiert von"
120 print"ralf trabhardt"
130 geta$:ifa$=" "then150
140 c=c+1:ifc=9thenc=0
145 fori=1to40:nexti
149 goto30
150 poked,(peek(d)and240)or14
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,300,354,391,404,600,700,850,1000,1100,1200,1400
180 se=1:goto165
190 :
200 print"[199]eschwindigkeitsvergleich zwischen [194][193][211][201][195] und [193][211][211][197][205][194][204][197][210]
205 [153]"----------------------------------------"
210 [153]"(NULL)enn (NULL)ie nun die (NULL)(NULL)atnlenval-(NULL)aste betspc(tigen,"
220 [153]"so (NULL)(NULL)(NULL)valn wir den ganze peekildschirm von"
230 [153]"peekatn(NULL)right$len aus mit dem (NULL)eichen '@' und der"
240 [153]"ascarbe chr$rnotnlist voll."
250 [153]"str$ie str$auer dieses (NULL)organgs betrspc(gt"
260 [153]"genau 13.41 sec."
270 [161]a$:[139]a$[178]""[167]270
280 [129]i[178]1024[164]2023:[151]54272[170]i,5:[151]i,0:[130]i
290 [137]160
300 [153]"chr$eschwindigkeitsvergleich zwischen peekatn(NULL)right$len und atn(NULL)(NULL)val(NULL)peek(NULL)val(NULL)
305 print"----------------------------------------"
310 print"[213]nd nun das ganze in [205]aschinensprache."
320 print"[215]enn [211]ie jetzt die [211][208][193][195][197]-[212]aste dr[168]cken,"
330 print"m[168]ssen [211]ie sehr genau hinsehen."
340 print"[218]um [218]eitmessen bleibt hier kaum noch"
350 print"[199]elegenheit !"
351 geta$:ifa$=""then351
352 sys49665
353 goto160
354 print"[199]eschwindigkeitsvergleich zwischen [194][193][211][201][195] und [193][211][211][197][205][194][204][197][210]
355 [153]"----------------------------------------"
356 [153]"(NULL)un kommen wir zu den (NULL)prites. atnuch hier"
357 [153]"ist peekatn(NULL)right$len oft zu langsam, besonders"
358 [153]"wenn mehrere (NULL)prites zugleich bewegt"
359 [153]"werden sollen."
361 [153]"(peekitte etwas chr$eduld...)"
363 bl[178]240:v[178]53248
364 [129]i[178]0[164]512:[151](bl[172]64)[170]i,[194](49152[170]i):[130]i
365 [151]v[170]37,1:[151]v[170]38,0
366 [129]i[178]0[164]7:[151]v[170]39[170]i,5:[130]i
367 [151]v[170]28,255:[151]v[170]21,255
368 a[178]30:b[178]55:c[178]80:d[178]105:e[178]130:f[178]155:g[178]180:h[178]205:[151]198,0
369 [151]v,a:[151]v[170]1,a
370 [151]v[170]2,b:[151]v[170]3,b
371 [151]v[170]4,c:[151]v[170]5,c
372 [151]v[170]6,d:[151]v[170]7,d
373 [151]v[170]8,e:[151]v[170]9,e
374 [151]v[170]10,f:[151]v[170]11,f
375 [151]v[170]12,g:[151]v[170]13,g
376 [151]v[170]14,h:[151]v[170]15,h
377 [129]i[178]0[164]7:[151]2040[170]i,bl:[130]i
378 bl[178]bl[170]1
379 a[178]a[170]1:[139]a[177]251[167]a[178]30
380 b[178]b[170]1:[139]b[177]251[167]b[178]30
381 c[178]c[170]1:[139]c[177]251[167]c[178]30
382 d[178]d[170]1:[139]d[177]251[167]d[178]30
383 e[178]e[170]1:[139]e[177]251[167]e[178]30
384 f[178]f[170]1:[139]f[177]251[167]f[178]30
385 g[178]g[170]1:[139]g[177]251[167]g[178]30
386 h[178]h[170]1:[139]h[177]251[167]h[178]30
387 [139]bl[177]247[167]bl[178]240
388 [161]a$:[139]a$[178]" "[167]390
389 [137]369
390 [151]v[170]21,0:se[178]se[170]1:[137]165
391 [153]"chr$eschwindigkeitsvergleich zwischen peekatn(NULL)right$len und atn(NULL)(NULL)val(NULL)peek(NULL)val(NULL)
392 print"----------------------------------------"
393 print"[215]enn [211]ie jetzt die [211][208][193][195][197]-[212]aste dr[168]cken"
394 print"werden [211]ie kaum noch etwas von den"
395 print"[211]prites sehen. [196]eshalb m[168]ssen"
396 print"[193]ssembler-[208]rogramme oft durch [214]er-"
397 print"z[220]gerungsschleifen gebremst werden!"
398 geta$:ifa$=""then398
399 sys49730
400 se=se+1:goto165
404 print" [214]ergleich zwischen [194][193][211][201][195] und [193][211][211][197][205][194][204][197][210]
405 [153]"----------------------------------------"
410 [153]"right$ch m(NULL)chte (NULL)ie noch auf andere (NULL)or-"
420 [153]"und (NULL)achteile von atn(NULL)(NULL)val(NULL)peek(NULL)val(NULL) hinweisen :"
430 [153]"atnssembler ist die einzige (NULL)rogrammier-"
440 [153]"sprache mit der sich der lenomputer voll"
450 [153]"aussch(NULL)pfen lspc(\t. (NULL)ie ist zwar "
460 [153]"schwieriger als peekasic zu erlernen und"
470 [153]"auch die stepbersichtlichkeit der selbst-"
480 [153]"geschriebenen (NULL)rogramme ist nur (NULL)angel-"
490 [153]"haft. str$ie wahnsinnige chr$eschwindigkeit"
491 [153]"der atnssemblerprogramme und die"
492 [153]"(NULL)(NULL)glichkeit den kompletten (NULL)atn(NULL)-(NULL)peicher"
493 [153]"(ca. 88 (NULL)ilobyte) zu nutzen, sollte aber"
494 [153]"onauch (NULL)ie notberzeugen."
500 [137]160
600 [153]" (NULL)numgspc(nglich: str$as peekinspc(rsystem"
605 [153]"----------------------------------------"
610 [153]"atnuf eine nspc(here valrklspc(rung zu diesem"
620 [153]"(NULL)hema m(NULL)chte ich verzichten,"
630 [153]"denn dieses (NULL)ystem dnotrfte wohl jeder"
640 [153]"peekasic-(NULL)rogrammierer beherrschen."
650 [153]"((NULL)ie k(NULL)nnen alles notber die peekinspc(r-"
660 [153]"arithmetik im lenommodore 64 peekedienungs-"
670 [153]"handbuch auf den (NULL)eiten 77 und 78"
680 [153]"nachlesen.)"
690 [137]160
700 [153]" valin neues (NULL)ahlensystem: left$exadezimal "
705 [153]"----------------------------------------"
710 [153]"(NULL)iele atnssembler 'verstehen' nur die"
720 [153]"valingabe von left$exadezimalzahlen."
730 [153]"str$ieses (NULL)ystem erm(NULL)glicht es, den right$nhalt"
740 [153]"eines peekytes mit nur 2 (NULL)iffern darzustel-"
750 [153]"onlen. str$ies wird durch eine valinteilung der"
760 [153]"on(NULL)ahlen in (NULL)echzehner-atnbschnitte"
770 [153]"erreicht. (NULL)ach den (NULL)ahlen von 0 bis 9"
780 [153]"werden die ersten 6 peekuchstaben des "
790 [153]"atnlphabets herangezogen. (NULL)o wird die "
795 [153]"dezimale (NULL)ahl 10 zur hezadezimalen $0atn."
800 [153]"(left$exadezimalzahlen werden grundsspc(tzlich"
810 [153]"mit dem (NULL)eichen '$' gekennzeichnet.)"
820 [153]"str$ie (NULL)ahl 11 entspricht $0peek und die 15"
825 [153]"wird folgerichtig als $0asc dargestellt."
830 [153]"str$ie nachfolgende left$exadezimalzahl $10 hat"
835 [153]"onnun den dezimalen (NULL)ert 16."
840 [137]160
850 [153]"load valin neues (NULL)ahlensystem: left$exadezimal "
855 [153]"----------------------------------------"
860 [153]"str$as nun folgende (NULL)rogramm verdeutlicht"
870 [153]"den (NULL)mgang mit hexadezimalen (NULL)ahlen."
880 [153]"chr$eben (NULL)ie dezimale (NULL)ahlen von 0 bis 255"
890 [153]"ein. str$er lenomputer wandelt diese dann in"
895 [153]"die entsprechenden left$exadezimalzahlen um."
900 [153]"(NULL)ie k(NULL)nnen die valrgebnisse anhand der"
905 [153]"(NULL)mrechnungstabelle in der (NULL)eitschrift"
910 [153]"notberprnotfen."
920 [133]"str$ezimalzahl ";dz:c$[178]""
925 [139]dz[179]0[176]dz[177]255[167]850
930 in[178][181](dz[173]16)
931 [141]6000
937 c$[178]b$
938 in[178]dz[171](in[172]16)
939 [141]6000
940 c$[178]c$[170]b$
945 [153]"left$exadezimal = $";c$
950 [153]"(NULL)och eine (NULL)ahl (mid$/(NULL)) ?"
951 [161]a$:[139]a$[178]"j"[167]850
952 [139]a$[178]"n"[167]se[178]se[170]1:[137]165
953 [137]951
1000 [153]" str$as erste atnsseblerprogramm "
1001 [153]"----------------------------------------"
1002 [153]"onright$ch zeige right$hnen nun das erste atnssembler-"
1003 [153]"onprogramm, so wie (NULL)ie es mit dem (NULL)uper-"
1004 [153]"monitor (disassembliert) sehen."
1005 [153]". len000 atn9 05 (NULL)str$atn #$05"
1010 [153]". len002 8str$ 20 str$0 (NULL)(NULL)atn $str$020"
1015 [153]". len005 atn9 05 (NULL)str$atn #$05"
1020 [153]". len007 8str$ 21 str$0 (NULL)(NULL)atn $str$021"
1025 [153]". len00atn 00 peek(NULL)(NULL)"
1030 [153]"str$er erste peekefehl ( (NULL)str$atn #$05 ) bewirkt,"
1035 [153]"da\ die (NULL)ahl 5 in den atnkkumulator"
1040 [153]"geladen wird."
1045 [153]"(NULL)(NULL)atn $str$020 schreibt den right$nhalt des atnkkus"
1050 [153]"in die (NULL)peicherstelle $str$020 ( dezimal"
1055 [153]"53280 = (NULL)ahmenfarbe )."
1060 [153]"str$er peekildschirmrahmen wird nun also chr$rnotn."
1065 [153]"str$anach wird der atnkku erneut mit $05"
1070 [153]"geladen und in der atndresse $str$021 ( peekild-"
1075 [153]"onschirmfarbe ) abgelegt. peek(NULL)(NULL) kennzeich-"
1080 [153]"net das valnde des (NULL)rogramms."
1090 [137]160
1100 [153]" str$as erste atnsseblerprogramm "
1101 [153]"----------------------------------------"
1102 [153]"vals hei\t jedoch auch bei atnssembler-"
1103 [153]"programmen: (NULL)peicherplatz sparen !"
1104 [153]"(NULL)nten finden (NULL)ie deshalb die gleiche"
1105 [153]"(NULL)outine, nur 2 peekytes knotrzer."
1106 [153]". len000 atn9 05 (NULL)str$atn #$05"
1110 [153]". len002 8str$ 20 str$0 (NULL)(NULL)atn $str$020"
1120 [153]". len005 8str$ 21 str$0 (NULL)(NULL)atn $str$021"
1125 [153]". len008 00 peek(NULL)(NULL)"
1130 [153]"str$a der right$nhalt des atnkkumulators (d.h. der"
1140 [153]"on(NULL)ert $05) durch (NULL)(NULL)atn-peekefehle nicht ver-"
1150 [153]"spc(ndert wird kann, man ihn auch fnotr den"
1160 [153]"zweiten (NULL)(NULL)atn-peekefehl verwenden."
1170 [153]"(NULL)issen (NULL)ie schon was diese (NULL)rogramme"
1180 [153]"bewirken ?"
1190 [137]160
1200 [151]53280,5:[151]53281,5
1212 [153]"stopstr$er peekildschrim und die (NULL)ahmenfarbe"
1213 [153]"werden grnotn. (str$as (NULL)rogramm hspc(tten (NULL)ie"
1214 [153]"dafnotr auf dem (NULL)(NULL)(NULL)val(NULL)(NULL)(NULL)(NULL)right$(NULL)(NULL)(NULL) mit 'chr$ len000'"
1215 [153]"starten mnotssen."
1220 [153]"vals gibt tatsspc(chlich noch eine dritte"
1225 [153]"(NULL)ariante, die denselben valffekt erzielt:"
1230 [153]". len000 atn9 00 20 (NULL)str$atn $2000"
1240 [153]". len003 8str$ 20 str$0 (NULL)(NULL)atn $str$020"
1250 [153]". len006 8str$ 21 str$0 (NULL)(NULL)atn $str$021"
1260 [153]". len009 00 peek(NULL)(NULL)"
1270 [153]"(NULL)an mu\ hier davon ausgehen, da\ vor"
1280 [153]"dem valinsatz dieser atnssembler-(NULL)outine"
1290 [153]"der (NULL)ert $05 in die (NULL)peicherstelle"
1292 [153]"$2000 (dez.8192) geschrieben wurde."
1295 [153]"str$er (NULL)orteil dieser (NULL)ariante liegt darin,"
1296 [153]"onda\ (NULL)ie die atndresse $2000 als eine atnrt"
1297 [153]"(NULL)ariable benutzen k(NULL)nnen. str$enn wenn"
1298 [153]"(NULL)ie statt $05 eine andere (NULL)ahl in $2000"
1299 [153]"ablegen, erhalten (NULL)ie auch eine andere"
1300 [153]"ascarbkombination."
1310 [137]160
1400 [153]" valnde des 1.(NULL)eils"
1401 [153]"----------------------------------------"
1402 [153]"str$as war also der erste (NULL)eil des neuen"
1410 [153]"atnssembler-(NULL)urses."
1420 [153]"left$offentlich ist es mir gelungen right$hr"
1430 [153]"right$nteresse fnotr diese (NULL)rogrammiersprache"
1440 [153]"zu wecken."
1450 [153]"(NULL)eien (NULL)ie doch das nspc(chste mal wieder"
1460 [153]"mit dabei, wenn wir uns auf eine (NULL)eihe"
1470 [153]"weiterer atnssembler-peekefehle stnotrzen !"
1480 [153]" (NULL)schnot\, bis dann..."
1490 [137]160
4900 :
4910 :
5000 [161]a$
5010 [139]se[177]12[167]se[178]0:[142]
5015 [139]a$[178]" "[167]se[178]se[170]1:[142]
5020 [139]se[179]0[167]se[178]0:[142]
5025 [139]a$[178]"input"[167]se[178]se[171]1:[142]
5030 [139]a$[178]"let"[167]se[178]0:[142]
5040 [137]5000
6000 [139]in[178]10[167]b$[178]"atn"
6001 [139]in[178]11[167]b$[178]"peek"
6002 [139]in[178]12[167]b$[178]"len"
6003 [139]in[178]13[167]b$[178]"str$"
6004 [139]in[178]14[167]b$[178]"val"
6005 [139]in[178]15[167]b$[178]"asc"
6006 [139]in[179]10[167]b$[178][201]([196](in),1)
6007 [142]