home *** CD-ROM | disk | FTP | other *** search
/ Commodore Disc 17 / Commodore_Disc_17_19xx_-_de.d64 / assemb.kurs1 (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  9KB  |  264 lines

  1. 1 rem--------------------
  2. 2 rem-  assembler-kurs  -
  3. 3 rem-      teil 1      -
  4. 4 rem-                  -
  5. 5 rem-       von        -
  6. 6 rem-                  -
  7. 7 rem-  ralf trabhardt  -
  8. 8 rem--------------------
  9. 9 a=a+1:ifa=1thenload"mc-routinen 1",8,1
  10. 10 poke53280,0:poke53281,0:d=53272
  11. 15 sys49896
  12. 20 print"[147]":c=0:poked,(peek(d)and240)or12
  13. 30 print""
  14. 40 ifc=0orc=8thenprint"[144]"
  15. 50 ifc=1orc=7thenprint"[151]"
  16. 60 ifc=2orc=6thenprint"[152]"
  17. 70 ifc=3orc=5thenprint"[155]"
  18. 80 ifc=4thenprint""
  19. 100 print"assembler-kurs teil 1"
  20. 110 print"programmiert von"
  21. 120 print"ralf trabhardt"
  22. 130 geta$:ifa$=" "then150
  23. 140 c=c+1:ifc=9thenc=0
  24. 145 fori=1to40:nexti
  25. 149 goto30
  26. 150 poked,(peek(d)and240)or14
  27. 151 print"[147][155][197]s gilt folgende [212]astaturbelegung:"
  28. 152 print"[211][208][193][195][197][146]= [206][166]chste [211]eite"
  29. 153 print" [198]1 [146] = [197]ine [211]eite zur[168]ck"
  30. 154 print" [198]7 [146] = [197]rste [211]eite "
  31. 155 geta$:ifa$=""then155
  32. 156 se=1:goto165
  33. 157 :
  34. 160 gosub5000
  35. 165 print"[147][155]":poke53280,0:poke53281,0
  36. 170 onsegoto200,300,354,391,404,600,700,850,1000,1100,1200,1400
  37. 180 se=1:goto165
  38. 190 :
  39. 200 print"[199]eschwindigkeitsvergleich zwischen             [194][193][211][201][195] und [193][211][211][197][205][194][204][197][210]
  40. 205 [153]"----------------------------------------"
  41. 210 [153]"(NULL)enn (NULL)ie nun die (NULL)(NULL)atnlenval-(NULL)aste betspc(tigen,"
  42. 220 [153]"so (NULL)(NULL)(NULL)valn wir den ganze peekildschirm von"
  43. 230 [153]"peekatn(NULL)right$len aus mit dem (NULL)eichen '@' und der"
  44. 240 [153]"ascarbe chr$rnotnlist voll."
  45. 250 [153]"str$ie str$auer dieses (NULL)organgs betrspc(gt"
  46. 260 [153]"genau 13.41 sec."
  47. 270 [161]a$:[139]a$[178]""[167]270
  48. 280 [129]i[178]1024[164]2023:[151]54272[170]i,5:[151]i,0:[130]i
  49. 290 [137]160
  50. 300 [153]"chr$eschwindigkeitsvergleich zwischen             peekatn(NULL)right$len und atn(NULL)(NULL)val(NULL)peek(NULL)val(NULL)
  51. 305 print"----------------------------------------"
  52. 310 print"[213]nd nun das ganze in [205]aschinensprache."
  53. 320 print"[215]enn [211]ie jetzt die [211][208][193][195][197]-[212]aste dr[168]cken,"
  54. 330 print"m[168]ssen [211]ie sehr genau hinsehen."
  55. 340 print"[218]um [218]eitmessen bleibt hier kaum noch"
  56. 350 print"[199]elegenheit !"
  57. 351 geta$:ifa$=""then351
  58. 352 sys49665
  59. 353 goto160
  60. 354 print"[199]eschwindigkeitsvergleich zwischen             [194][193][211][201][195] und [193][211][211][197][205][194][204][197][210]
  61. 355 [153]"----------------------------------------"
  62. 356 [153]"(NULL)un kommen wir zu den (NULL)prites. atnuch hier"
  63. 357 [153]"ist peekatn(NULL)right$len oft zu langsam, besonders"
  64. 358 [153]"wenn mehrere (NULL)prites zugleich bewegt"
  65. 359 [153]"werden sollen."
  66. 361 [153]"(peekitte etwas chr$eduld...)"
  67. 363 bl[178]240:v[178]53248
  68. 364 [129]i[178]0[164]512:[151](bl[172]64)[170]i,[194](49152[170]i):[130]i
  69. 365 [151]v[170]37,1:[151]v[170]38,0
  70. 366 [129]i[178]0[164]7:[151]v[170]39[170]i,5:[130]i
  71. 367 [151]v[170]28,255:[151]v[170]21,255
  72. 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
  73. 369 [151]v,a:[151]v[170]1,a
  74. 370 [151]v[170]2,b:[151]v[170]3,b
  75. 371 [151]v[170]4,c:[151]v[170]5,c
  76. 372 [151]v[170]6,d:[151]v[170]7,d
  77. 373 [151]v[170]8,e:[151]v[170]9,e
  78. 374 [151]v[170]10,f:[151]v[170]11,f
  79. 375 [151]v[170]12,g:[151]v[170]13,g
  80. 376 [151]v[170]14,h:[151]v[170]15,h
  81. 377 [129]i[178]0[164]7:[151]2040[170]i,bl:[130]i
  82. 378 bl[178]bl[170]1
  83. 379 a[178]a[170]1:[139]a[177]251[167]a[178]30
  84. 380 b[178]b[170]1:[139]b[177]251[167]b[178]30
  85. 381 c[178]c[170]1:[139]c[177]251[167]c[178]30
  86. 382 d[178]d[170]1:[139]d[177]251[167]d[178]30
  87. 383 e[178]e[170]1:[139]e[177]251[167]e[178]30
  88. 384 f[178]f[170]1:[139]f[177]251[167]f[178]30
  89. 385 g[178]g[170]1:[139]g[177]251[167]g[178]30
  90. 386 h[178]h[170]1:[139]h[177]251[167]h[178]30
  91. 387 [139]bl[177]247[167]bl[178]240
  92. 388 [161]a$:[139]a$[178]" "[167]390
  93. 389 [137]369
  94. 390 [151]v[170]21,0:se[178]se[170]1:[137]165
  95. 391 [153]"chr$eschwindigkeitsvergleich zwischen             peekatn(NULL)right$len und atn(NULL)(NULL)val(NULL)peek(NULL)val(NULL)
  96. 392 print"----------------------------------------"
  97. 393 print"[215]enn [211]ie jetzt die [211][208][193][195][197]-[212]aste dr[168]cken"
  98. 394 print"werden [211]ie kaum noch etwas von den"
  99. 395 print"[211]prites sehen. [196]eshalb m[168]ssen"
  100. 396 print"[193]ssembler-[208]rogramme oft durch [214]er-"
  101. 397 print"z[220]gerungsschleifen gebremst werden!"
  102. 398 geta$:ifa$=""then398
  103. 399 sys49730
  104. 400 se=se+1:goto165
  105. 404 print"       [214]ergleich zwischen                      [194][193][211][201][195] und [193][211][211][197][205][194][204][197][210]
  106. 405 [153]"----------------------------------------"
  107. 410 [153]"right$ch m(NULL)chte (NULL)ie noch auf andere (NULL)or-"
  108. 420 [153]"und (NULL)achteile von atn(NULL)(NULL)val(NULL)peek(NULL)val(NULL) hinweisen :"
  109. 430 [153]"atnssembler ist die einzige (NULL)rogrammier-"
  110. 440 [153]"sprache mit der sich der lenomputer voll"
  111. 450 [153]"aussch(NULL)pfen lspc(\t. (NULL)ie ist zwar "
  112. 460 [153]"schwieriger als peekasic zu erlernen und"
  113. 470 [153]"auch die stepbersichtlichkeit der selbst-"
  114. 480 [153]"geschriebenen (NULL)rogramme ist nur (NULL)angel-"
  115. 490 [153]"haft. str$ie wahnsinnige chr$eschwindigkeit"
  116. 491 [153]"der atnssemblerprogramme und die"
  117. 492 [153]"(NULL)(NULL)glichkeit den kompletten (NULL)atn(NULL)-(NULL)peicher"
  118. 493 [153]"(ca. 88 (NULL)ilobyte) zu nutzen, sollte aber"
  119. 494 [153]"onauch (NULL)ie notberzeugen."
  120. 500 [137]160
  121. 600 [153]"         (NULL)numgspc(nglich:                         str$as peekinspc(rsystem"
  122. 605 [153]"----------------------------------------"
  123. 610 [153]"atnuf eine nspc(here valrklspc(rung zu diesem"
  124. 620 [153]"(NULL)hema m(NULL)chte ich verzichten,"
  125. 630 [153]"denn dieses (NULL)ystem dnotrfte wohl jeder"
  126. 640 [153]"peekasic-(NULL)rogrammierer beherrschen."
  127. 650 [153]"((NULL)ie k(NULL)nnen alles notber die peekinspc(r-"
  128. 660 [153]"arithmetik im lenommodore 64 peekedienungs-"
  129. 670 [153]"handbuch auf den (NULL)eiten 77 und 78"
  130. 680 [153]"nachlesen.)"
  131. 690 [137]160
  132. 700 [153]"      valin neues (NULL)ahlensystem:                      left$exadezimal  "
  133. 705 [153]"----------------------------------------"
  134. 710 [153]"(NULL)iele atnssembler 'verstehen' nur die"
  135. 720 [153]"valingabe von left$exadezimalzahlen."
  136. 730 [153]"str$ieses (NULL)ystem erm(NULL)glicht es, den right$nhalt"
  137. 740 [153]"eines peekytes mit nur 2 (NULL)iffern darzustel-"
  138. 750 [153]"onlen. str$ies wird durch eine valinteilung der"
  139. 760 [153]"on(NULL)ahlen in (NULL)echzehner-atnbschnitte"
  140. 770 [153]"erreicht. (NULL)ach den (NULL)ahlen von 0 bis 9"
  141. 780 [153]"werden die ersten 6 peekuchstaben des "
  142. 790 [153]"atnlphabets herangezogen. (NULL)o wird die "
  143. 795 [153]"dezimale (NULL)ahl 10 zur hezadezimalen $0atn."
  144. 800 [153]"(left$exadezimalzahlen werden grundsspc(tzlich"
  145. 810 [153]"mit dem (NULL)eichen '$' gekennzeichnet.)"
  146. 820 [153]"str$ie (NULL)ahl 11 entspricht $0peek und die 15"
  147. 825 [153]"wird folgerichtig als $0asc dargestellt."
  148. 830 [153]"str$ie nachfolgende left$exadezimalzahl $10 hat"
  149. 835 [153]"onnun den dezimalen (NULL)ert 16."
  150. 840 [137]160
  151. 850 [153]"load      valin neues (NULL)ahlensystem:                      left$exadezimal  "
  152. 855 [153]"----------------------------------------"
  153. 860 [153]"str$as nun folgende (NULL)rogramm verdeutlicht"
  154. 870 [153]"den (NULL)mgang mit hexadezimalen (NULL)ahlen."
  155. 880 [153]"chr$eben (NULL)ie dezimale (NULL)ahlen von 0 bis 255"
  156. 890 [153]"ein. str$er lenomputer wandelt diese dann in"
  157. 895 [153]"die entsprechenden left$exadezimalzahlen um."
  158. 900 [153]"(NULL)ie k(NULL)nnen die valrgebnisse anhand der"
  159. 905 [153]"(NULL)mrechnungstabelle in der (NULL)eitschrift"
  160. 910 [153]"notberprnotfen."
  161. 920 [133]"str$ezimalzahl ";dz:c$[178]""
  162. 925 [139]dz[179]0[176]dz[177]255[167]850
  163. 930 in[178][181](dz[173]16)
  164. 931 [141]6000
  165. 937 c$[178]b$
  166. 938 in[178]dz[171](in[172]16)
  167. 939 [141]6000
  168. 940 c$[178]c$[170]b$
  169. 945 [153]"left$exadezimal = $";c$
  170. 950 [153]"(NULL)och eine (NULL)ahl (mid$/(NULL)) ?"
  171. 951 [161]a$:[139]a$[178]"j"[167]850
  172. 952 [139]a$[178]"n"[167]se[178]se[170]1:[137]165
  173. 953 [137]951
  174. 1000 [153]"    str$as erste atnsseblerprogramm "
  175. 1001 [153]"----------------------------------------"
  176. 1002 [153]"onright$ch zeige right$hnen nun das erste atnssembler-"
  177. 1003 [153]"onprogramm, so wie (NULL)ie es mit dem (NULL)uper-"
  178. 1004 [153]"monitor (disassembliert) sehen."
  179. 1005 [153]". len000  atn9 05     (NULL)str$atn #$05"
  180. 1010 [153]". len002  8str$ 20 str$0  (NULL)(NULL)atn $str$020"
  181. 1015 [153]". len005  atn9 05     (NULL)str$atn #$05"
  182. 1020 [153]". len007  8str$ 21 str$0  (NULL)(NULL)atn $str$021"
  183. 1025 [153]". len00atn  00        peek(NULL)(NULL)"
  184. 1030 [153]"str$er erste peekefehl ( (NULL)str$atn #$05 ) bewirkt,"
  185. 1035 [153]"da\ die (NULL)ahl 5 in den atnkkumulator"
  186. 1040 [153]"geladen wird."
  187. 1045 [153]"(NULL)(NULL)atn $str$020 schreibt den right$nhalt des atnkkus"
  188. 1050 [153]"in die (NULL)peicherstelle $str$020 ( dezimal"
  189. 1055 [153]"53280 = (NULL)ahmenfarbe )."
  190. 1060 [153]"str$er peekildschirmrahmen wird nun also chr$rnotn."
  191. 1065 [153]"str$anach wird der atnkku erneut mit $05"
  192. 1070 [153]"geladen und in der atndresse $str$021 ( peekild-"
  193. 1075 [153]"onschirmfarbe ) abgelegt. peek(NULL)(NULL) kennzeich-"
  194. 1080 [153]"net das valnde des (NULL)rogramms."
  195. 1090 [137]160
  196. 1100 [153]"    str$as erste atnsseblerprogramm "
  197. 1101 [153]"----------------------------------------"
  198. 1102 [153]"vals hei\t jedoch auch bei atnssembler-"
  199. 1103 [153]"programmen: (NULL)peicherplatz sparen !"
  200. 1104 [153]"(NULL)nten finden (NULL)ie deshalb die gleiche"
  201. 1105 [153]"(NULL)outine, nur 2 peekytes knotrzer."
  202. 1106 [153]". len000  atn9 05     (NULL)str$atn #$05"
  203. 1110 [153]". len002  8str$ 20 str$0  (NULL)(NULL)atn $str$020"
  204. 1120 [153]". len005  8str$ 21 str$0  (NULL)(NULL)atn $str$021"
  205. 1125 [153]". len008  00        peek(NULL)(NULL)"
  206. 1130 [153]"str$a der right$nhalt des atnkkumulators (d.h. der"
  207. 1140 [153]"on(NULL)ert $05) durch (NULL)(NULL)atn-peekefehle nicht ver-"
  208. 1150 [153]"spc(ndert wird kann, man ihn auch fnotr den"
  209. 1160 [153]"zweiten (NULL)(NULL)atn-peekefehl verwenden."
  210. 1170 [153]"(NULL)issen (NULL)ie schon was diese (NULL)rogramme"
  211. 1180 [153]"bewirken ?"
  212. 1190 [137]160
  213. 1200 [151]53280,5:[151]53281,5
  214. 1212 [153]"stopstr$er peekildschrim und die (NULL)ahmenfarbe"
  215. 1213 [153]"werden grnotn. (str$as (NULL)rogramm hspc(tten (NULL)ie"
  216. 1214 [153]"dafnotr auf dem (NULL)(NULL)(NULL)val(NULL)(NULL)(NULL)(NULL)right$(NULL)(NULL)(NULL) mit 'chr$ len000'"
  217. 1215 [153]"starten mnotssen."
  218. 1220 [153]"vals gibt tatsspc(chlich noch eine dritte"
  219. 1225 [153]"(NULL)ariante, die denselben valffekt erzielt:"
  220. 1230 [153]". len000  atn9 00 20  (NULL)str$atn $2000"
  221. 1240 [153]". len003  8str$ 20 str$0  (NULL)(NULL)atn $str$020"
  222. 1250 [153]". len006  8str$ 21 str$0  (NULL)(NULL)atn $str$021"
  223. 1260 [153]". len009  00        peek(NULL)(NULL)"
  224. 1270 [153]"(NULL)an mu\ hier davon ausgehen, da\ vor"
  225. 1280 [153]"dem valinsatz dieser atnssembler-(NULL)outine"
  226. 1290 [153]"der (NULL)ert $05 in die (NULL)peicherstelle"
  227. 1292 [153]"$2000 (dez.8192) geschrieben wurde."
  228. 1295 [153]"str$er (NULL)orteil dieser (NULL)ariante liegt darin,"
  229. 1296 [153]"onda\ (NULL)ie die atndresse $2000 als eine atnrt"
  230. 1297 [153]"(NULL)ariable benutzen k(NULL)nnen. str$enn wenn"
  231. 1298 [153]"(NULL)ie statt $05 eine andere (NULL)ahl in $2000"
  232. 1299 [153]"ablegen, erhalten (NULL)ie auch eine andere"
  233. 1300 [153]"ascarbkombination."
  234. 1310 [137]160
  235. 1400 [153]"         valnde des 1.(NULL)eils"
  236. 1401 [153]"----------------------------------------"
  237. 1402 [153]"str$as war also der erste (NULL)eil des neuen"
  238. 1410 [153]"atnssembler-(NULL)urses."
  239. 1420 [153]"left$offentlich ist es mir gelungen right$hr"
  240. 1430 [153]"right$nteresse fnotr diese (NULL)rogrammiersprache"
  241. 1440 [153]"zu wecken."
  242. 1450 [153]"(NULL)eien (NULL)ie doch das nspc(chste mal wieder"
  243. 1460 [153]"mit dabei, wenn wir uns auf eine (NULL)eihe"
  244. 1470 [153]"weiterer atnssembler-peekefehle stnotrzen !"
  245. 1480 [153]"           (NULL)schnot\, bis dann..."
  246. 1490 [137]160
  247. 4900 :
  248. 4910 :
  249. 5000 [161]a$
  250. 5010 [139]se[177]12[167]se[178]0:[142]
  251. 5015 [139]a$[178]" "[167]se[178]se[170]1:[142]
  252. 5020 [139]se[179]0[167]se[178]0:[142]
  253. 5025 [139]a$[178]"input"[167]se[178]se[171]1:[142]
  254. 5030 [139]a$[178]"let"[167]se[178]0:[142]
  255. 5040 [137]5000
  256. 6000 [139]in[178]10[167]b$[178]"atn"
  257. 6001 [139]in[178]11[167]b$[178]"peek"
  258. 6002 [139]in[178]12[167]b$[178]"len"
  259. 6003 [139]in[178]13[167]b$[178]"str$"
  260. 6004 [139]in[178]14[167]b$[178]"val"
  261. 6005 [139]in[178]15[167]b$[178]"asc"
  262. 6006 [139]in[179]10[167]b$[178][201]([196](in),1)
  263. 6007 [142]
  264.