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

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