home *** CD-ROM | disk | FTP | other *** search
/ Input 64 / Input_64_85-01_1985_Verlag_Heinz_Weise_de.d64 / HILFSPROGRAMME (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  14KB  |  294 lines

  1. 1000 rem **** m o d u l   f u e r *****
  2. 1020 rem **** h i l s p r o g r a m m e
  3. 1040 :
  4. 1060 rem*******************************
  5. 1080 poke50257,20:rem nicht sichern
  6. 1100 rem*******************************
  7. 1120 :
  8. 1140 rem*******************************
  9. 1160 a$(1)="[196][193][212][193] - [199]enerator"
  10. 1180 a$(2)="[210][197] - [206][197][215] - [210]outine"
  11. 1200 a$(3)="[194][193][211][201][195] 2 mal im [210][193][205]"
  12. 1220 a$(4)="[204][201][211][212] im [208]rogramm"
  13. 1260 rem*******************************
  14. 1280 :
  15. 1300 printchr$(14);chr$(8);"[147][144]";:poke53280,5 :poke53281,5:si=54272
  16. 1320 print"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]";
  17. 1340 print"[221]                                      [146][221]";
  18. 1360 print"[221]    w i r   s t e l l e n   v o r :   [146][221]";
  19. 1380 print"[221]                                      [146][221]";
  20. 1400 print"[221]    [200] i l f s p r o g r a m m e       [146][221]";
  21. 1420 print"[221]                                      [146][221]";
  22. 1440 print"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]" :print
  23. 1460 print"[193]uf den folgenden [211]eiten stellen wir"
  24. 1480 print"[201]hnen mehrere [200]ilfsprogramme vor.":print
  25. 1500 print"[211]ie werden die [193]nwendung dieser"
  26. 1520 print"[200]ilfsprogramme kennenlernen.":print
  27. 1530 print"[205]it [195][212][210][204][146] [211][146] sichern [211]ie in diesem [198]all"
  28. 1535 print"nur das angewaehlte [200]ilfsprogramm!":print
  29. 1540 print"[196]arueberhinaus stehen [201]hnen die"
  30. 1560 print"bekannten [198]unktionen von  [201][206][208][213][212] 64  [146]"
  31. 1580 print"zur [214]erfuegung."
  32. 1640 gosub5800
  33. 1650 :
  34. 1660 poke53280,0:poke53281,0:print"[147]";
  35. 1670 poke50257,20:rem nicht sichern
  36. 1680 print"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]";
  37. 1700 print"[221]                                      [146][221]";
  38. 1720 print"[221]      [193] u s w a h l t a f e l         [146][221]";
  39. 1740 print"[221]                                      [146][221]";
  40. 1760 print"[221]    [200] i l f s p r o g r a m m e       [146][221]";
  41. 1780 print"[221]                                      [146][221]";
  42. 1800 print"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]" :print:print:print
  43. 1820 fori=1to4:print"    "i"[157] [146]  = "a$(i):print:nexti
  44. 1840 z=24:s=0:gosub5960:print"[194]itte waehlen [211]ie (1-4) !";:fort=0to200:nextt
  45. 1860 getg$:ifg$=""then1880
  46. 1870 ifg$>"0"andg$<"5"thengosub6000:goto1900
  47. 1875 gosub6100
  48. 1880 gosub5960:print"[194]itte waehlen [211]ie (1-4[146])"; :fort=0to200:nextt:goto1840
  49. 1900 a=val(g$):print"[147]";:f=8:gosub5360:z=5:s=0:gosub5960
  50. 1920 on a gosub 2000,3240,3680,4120
  51. 1940 goto1660
  52. 1960 :
  53. 1980 rem 1. hilfsprogramm
  54. 2000 poke50259,025:poke50260,051:poke50261,211:poke50262,052:rem uebergabe
  55. 2010 poke50257,24:rem teilweise sichern
  56. 2020 print"[196]ieses [200]ilfsprogramm liest die [215]erte"
  57. 2040 print"eines frei bestimmbaren [211]peicherbereichs";
  58. 2060 print"aus und legt diese in [196][193][212][193]-[218]eilen ab.":print
  59. 2080 print"[158][197]inige [193]nwendungsbeispiele waeren z.[194].:":print
  60. 2100 print"[211]ie wollen in ein [194][193][211][201][195]-[208]rogramm eine"
  61. 2120 print"[210]outine in [205]aschinensprache einbinden":print
  62. 2140 print"              [158]oder":print
  63. 2160 print"[211]ie wollen [201]hr selbstentwickeltes"
  64. 2180 print"[205]aschinensprache-[208]rogramm in einer [198]orm"
  65. 2200 print"weitergeben, die es ermoeglicht, das"
  66. 2220 print"[208]rogramm auch ohne [205]onitor zu laden."
  67. 2240 gosub5480:ifg$="m"org$="[205]"thenreturn
  68. 2260 print"[147]";:f=8:gosub5360:z=5:s=0:gosub5960
  69. 2280 print"[201]n der vorliegenden [198]orm erwartet das"
  70. 2300 print"[208]rogramm zu [194]eginn einige [197]ingaben:":print:print
  71. 2320 print"[158]   - erste [218]eilennummer der [196][193][212][193]-[218]eilen":print
  72. 2340 print"   - [211]chrittweite der [218]eilennummern":print
  73. 2360 print"   - [211]tartadresse des [211]peicherbereichs":print
  74. 2380 print"   - [197]ndadresse des [211]peicherbereichs":print:print
  75. 2400 print"[196]iese [193]bfrage kann aber auch entfallen,"
  76. 2420 print"wenn die [196][193][212][193]-[210]outine als [213]nterprogramm"
  77. 2440 print"verwendet wird und die [214]ariablen vom"
  78. 2460 print"[200]auptprogramm mit [215]erten versorgt"
  79. 2480 print"werden."
  80. 2500 gosub5480:ifg$="m"org$="[205]"thenreturn
  81. 2520 print"[147][158]";:f=2:gosub5360:
  82. 2540 z=5:s=0:gosub5960:print"[158][197][160][201][160][206][160][199][160][193][160][194][160][197][160][215][160][197][160][210][160][212][160][197][160]:":print
  83. 2560 print"erste [218]eilennr. = ":print
  84. 2580 print"[211]chrittweite    = ":print
  85. 2600 print"[211]tartadresse    = ":print
  86. 2620 print"[197]ndadresse      = ":gosub5140
  87. 2640 t$="[215]ir legen zuerst die erste [218]eilennummer fest; z.[194].: 1000   "
  88. 2660 gosub5280:z=7:s=20:gosub5960:print"<";
  89. 2680 gosub5480:ifg$="m"org$="[205]"thenreturn
  90. 2700 z=7:s=20:gosub5960:print"1000"
  91. 2720 t$="[196]anach den [218]eilenabstand; z.[194].: 10   "
  92. 2740 gosub5280:z=9:s=20:gosub5960:print"<";
  93. 2760 gosub5480:ifg$="m"org$="[205]"thenreturn
  94. 2780 z=9:s=20:gosub5960:print"10"
  95. 2800 t$="[193]ls dritte [197]ingabe benoetigen wir die [211]tartadresse; z.[194].: 42562"
  96. 2820 gosub5280:z=11:s=20:gosub5960:print"<";
  97. 2840 gosub5480:ifg$="m"org$="[205]"thenreturn
  98. 2860 z=11:s=20:gosub5960:print"42562"
  99. 2880 t$="[213]nd als letzte [197]ingabe die [197]ndadresse; z.[194].: 42588"
  100. 2900 gosub5280:z=13:s=20:gosub5960:print"<";
  101. 2920 gosub5480:ifg$="m"org$="[205]"thenreturn
  102. 2940 z=13:s=20:gosub5960:print"42588"
  103. 2960 t1$="[201]n diesem [211]peicherbereich liegt uebrigens die [194]etriebssystemroutine"
  104. 2980 t2$="[160]fuer den [194][193][211][201][195]-[194]efehl [160][206][197][215][160][160]"
  105. 3000 t$=t1$+t2$:gosub5280:fort=0to2000:nextt
  106. 3020 t1$="[206]achdem wir die vier [215]erte dem [208]rogramm uebergeben haben, werden die "
  107. 3040 t2$="entsprechenden [196][193][212][193]-[218]eilen erzeugt"
  108. 3060 t$=t1$+t2$:gosub5280
  109. 3080 forz=5to13step2:s=0:gosub5960:print"                              ":nextz
  110. 3100 z=5:s=0:gosub5960:print"[196][160][193][160][212][160][193][160][218][160][197][160][201][160][204][160][197][160][206][160]:":print:print
  111. 3120 print"1010 [196][193][212][193] 208,253,169,  0,168,145, 43,200,145, 43,165, 43, 24,";
  112. 3140 print"105,  2,133, 45":print
  113. 3160 print"1020 [196][193][212][193] 165, 44,105,  0,133, 46, 32,142,166,169":print
  114. 3180 gosub5640:return
  115. 3200 :
  116. 3220 rem 2. hilfsprogramm
  117. 3240 poke50259,212:poke50260,052:poke50261,188:poke50262,058:rem uebergabe
  118. 3250 poke50257,24:rem teilweise sichern
  119. 3260 print"[205]it diesem [200]ilfsprogramm koennen [211]ie ein";
  120. 3280 print"[208]rogramm retten, dass [211]ie versehentlich"
  121. 3300 print"mit  [206][197][215]  geloescht haben.":print
  122. 3340 print"[158][196]ie [210][197]-[206][197][215]-[210]outine muss aber unmittelbar";
  123. 3360 print"nach dem irrtuemlichen [206][197][215]-[194]efehl zum"
  124. 3380 print"[197]insatz kommen":print
  125. 3400 print"[213]nser [200]ilfsprogramm enthaelt in einigen"
  126. 3420 print"[196][193][212][193]-[218]eilen ein kurzes [208]rogramm in"
  127. 3440 print"[205]aschinensprache":print
  128. 3460 print"[158][197]s muss daher vor der ersten [193]nwendung"
  129. 3480 print"einmal als [205]aschinenprogramm  erzeugt"
  130. 3500 print"und abgespeichert werden":print
  131. 3582 gosub5480:ifg$="m"org$="[205]"thenreturn
  132. 3583 print"[147]";:f=8:gosub5360:z=5:s=0:gosub5960
  133. 3584 print"[215]enn die [210]outine benoetigt wird, kann"
  134. 3586 print"sie einfach 'absolut' mit ',1' geladen"
  135. 3588 print"werden und dann mit [211][217][211] [[193][196][210][197][211][211][197]]"
  136. 3589 print"aufgerufen werden.":print
  137. 3590 print"[158][196]as [194][193][211][201][195]-[208]rogramm ist danach 'gerettet'";
  138. 3592 print"und kann normal benutzt werden."
  139. 3600 gosub5480:ifg$="m"org$="[205]"thenreturn
  140. 3601 print"[147][158]";:f=2:gosub5360:
  141. 3602 z=5:s=0:gosub5960:print"[158][197][160][201][160][206][160][199][160][193][160][194][160][197][160][215][160][197][160][210][160][212][160][197][160]:":print
  142. 3604 print"[211]tartadresse           = 53180":print
  143. 3606 print"[196]iskette oder [203]assette = [196]":gosub5120
  144. 3608 t1$="[215]ir muessen zuerst die [211]tartadresse festlegen, an der unser"
  145. 3610 t2$="[160][205]aschinen-[208]rogramm beginnen soll."
  146. 3611 t$=t1$+t2$:gosub 5280:fort=oto2000:nextt
  147. 3612 t1$="[215]ir koennen die vorgegebene [193]dresse"
  148. 3614 t2$="[160]mit [210][197][212][213][210][206] uebernehmen, oder eine andere geeignete [193]dresse eingeben;"
  149. 3615 t3$="[160]z.[194].: 49152 [194]eginn des oberen [210][193][205]-[194]ereichs"
  150. 3616 t$=t1$+t2$+t3$:gosub 5280:z=7:s=25:gosub5960:print"49152"
  151. 3617 gosub5480:ifg$="m"org$="[205]"thenreturn
  152. 3620 t1$="[196]anach legen wir fest, ob wir das [205]aschinen-[208]rogramm auf [196]iskette"
  153. 3622 t2$="[160]oder auf [203]assette abspeichern wollen. ([194]ei [196]iskette nur [210][197][212][213][210][206]"
  154. 3624 t3$="[160]druecken). [198]uer [203]assette geben wir [203] ein.   "
  155. 3626 t$=t1$+t2$+t3$:gosub 5280:z=9:s=25:gosub5960:print"[203]"
  156. 3628 gosub5480:ifg$="m"org$="[205]"thenreturn
  157. 3630 t1$="[193]uf dem [194]ildschirm erscheinen nun die ueblichen [200]inweise, die [211]ie von"
  158. 3632 t2$="[160]der [203]assetten-[194]edienung gewohnt sind:[160] [160][160][160][160]"
  159. 3634 t$=t1$+t2$:gosub 5280
  160. 3635 z=11:s=0:gosub5960:print"[208][210][197][211][211] [210][197][195][207][210][196] & [208][204][193][217] [207][206] [212][193][208][197]":print"[207][203]"
  161. 3636 print"[211][193][214][201][206][199] [210][197]-[206][197][215] 49152":print"[210][197][193][196][217]":gosub5480
  162. 3638 t1$="[196]ie [211]tartadresse ist [212]eil des [208]rogramm-[206]amens. [194]eim [204]aden der"
  163. 3640 t2$="[160][210]outine muessen [211]ie also in diesem [198]all eingeben '[210][197]-[206][197][215] 49152'     "
  164. 3642 t$=t1$+t2$:gosub5280
  165. 3656 gosub5640:return
  166. 3658 :
  167. 3660 rem 3. hilfsprogramm
  168. 3680 poke50259,189:poke50260,058:poke50261,128:poke50262,061:rem uebergabe
  169. 3690 poke50257,24:rem teilweise sichern
  170. 3700 print"[205]it dem folgenden kurzen [200]ilfsprogramm"
  171. 3720 print"ist es moeglich, zwei unabhaengige"
  172. 3740 print"[194][193][211][201][195]-[208]rogramme im [210]echner zu halten"
  173. 3760 print"und zwischen ihnen beliebig hin und "
  174. 3780 print"her zu schalten.":print
  175. 3800 print"[158][196]ieses [200]ilfsprogramm ist in [205]aschinen-"
  176. 3820 print"[211]prache geschrieben und teilt den "
  177. 3840 print"verfuegbaren [194][193][211][201][195]-[210][193][205]-[194]ereich in"
  178. 3860 print"zwei gleich grosse [212]eilbereiche auf.":print
  179. 3880 print"[196]a auch die [214]ariablen-[214]erwaltung nicht"
  180. 3900 print"vergessen wurde, koennen [211]ie wie gewohnt";
  181. 3920 print"in [194][193][211][201][195] programmieren.":print
  182. 3930 print"[158][196]ie [200]andhabung des [200]ilfsprogramms ist"
  183. 3935 print"denkbar einfach:"
  184. 3940 gosub5480:ifg$="m"org$="[205]"thenreturn
  185. 3960 print"[147]";:f=8:gosub5360:z=5:s=0:gosub5960
  186. 3970 print"[158][211]ie laden das [200]ilfsprogramm vor [194]eginn"
  187. 3972 print"[201]hrer [194][193][211][201][195]-[208]rogrammierung als normales"
  188. 3975 print"[194][193][211][201][195]-[208]rogramm in den [210]echner":print
  189. 3977 print"[196]as [200]ilfsprogramm initialisiert sich"
  190. 3980 print"selbst und loescht danach auch die"
  191. 3982 print"eigenen [194][193][211][201][195]-[218]eilen":print
  192. 3985 print"[158][205]it dem [194]efehl  [211][217][211] 36917[146]  koennen"
  193. 3987 print"[211]ie nun innerhalb [201]hres [194][193][211][201][195]-[208]rogramms"
  194. 3990 print"zwischen den beiden [194]ereichen umschalten";:print
  195. 3992 print"[193]lle [193]nweisungen (z.[194].: [206][197][215]) beziehen"
  196. 3995 print"sich nun immer nur auf den aktivierten"
  197. 3997 print"[194]ereich":print
  198. 4000 print"[158][197]xperimentieren [211]ie ruhig einmal!!!"
  199. 4007 gosub5640:return
  200. 4080 :
  201. 4100 rem 4. hilfsprogramm
  202. 4120 poke50259,129:poke50260,061:poke50261,008:poke50262,063:rem uebergabe
  203. 4130 poke50257,24:rem teilweise sichern
  204. 4140 print"[158][194]eim [193]ustesten von [194][193][211][201][195]-[208]rogrammen kann";
  205. 4160 print"es hilfreich sein, den eigentlichen "
  206. 4180 print"[208]rogrammablauf kurz zu unterbrechen,"
  207. 4200 print"einige [208]rogramm-[218]eilen anzeigen zu"
  208. 4220 print"lassen und dann im [208]rogrammablauf"
  209. 4240 print"direkt fortzufahren.":print
  210. 4260 print"[196]as [200]ilfsprogramm ist als [213]nterprogramm"
  211. 4280 print"geschrieben und kann somit von jeder"
  212. 4300 print"[211]telle aus mit [199][207][211][213][194] 50000 angesprungen"
  213. 4320 print"werden.":print
  214. 4340 print"[158][215]enn das [200]ilfsprogramm aufgerufen wird,"
  215. 4360 print"erwartet es die [197]ingaben von [193]nfangs-"
  216. 4380 print"und [197]ndzeile. [196]er [218]eilenbereich wird"
  217. 4400 print"danach gelistet."
  218. 4410 gosub5480:ifg$="m"org$="[205]"thenreturn
  219. 4415 print"[147]";:f=8:gosub5360:z=5:s=0:gosub5960
  220. 4420 print"[196]urch druecken einer beliebigen [212]aste"
  221. 4440 print"wird das [200]auptprogramm mit dem naechsten";
  222. 4442 print"[194]efehl fortgesetzt.":print
  223. 4444 print"[158][215]enn [211]ie allerdings eine angezeigte"
  224. 4446 print"[218]eile veraendern wollen, muessen [211]ie das";
  225. 4448 print"[208]rogramm mit  [210][213][206]/[211][212][207][208]  unterbrechen.":print
  226. 4450 print"[213]m bei einem [206][197][213][211][212][193][210][212] den [196][193][212][197][206]-[214][197][210][204][213][211][212]"
  227. 4452 print"zu vermeiden, starten [211]ie einfach mit:":print
  228. 4454 print"[158]    [199][207][212][207] [erste [218]eilen-[206]ummer]":print
  229. 4460 print"[206]atuerlich koennen [211]ie den [196][193][212][197][206]-[214][197][210][204][213][211][212]";
  230. 4462 print"nicht vermeiden, wenn [211]ie eine [218]eile":
  231. 4464 print"veraendert haben."
  232. 4495 gosub5640:return
  233. 4500 return
  234. 4520 :
  235. 5080 rem ****** unterprogramme ******
  236. 5100 :
  237. 5120 rem fenster fuer fliessDO
  238. 5140 z=16:s=0:gosub5960:print"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]";
  239. 5160 print"[221]                                      [146][221]";
  240. 5180 print"[221]                                      [146][221]";
  241. 5200 print"[221]                                      [146][221]";
  242. 5220 print"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]";:return
  243. 5240 :
  244. 5260 rem fliesstext
  245. 5280 t$="[160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160]"+t$:fori=1tolen(t$)-19:z=18:s=10:gosub5960
  246. 5300 print"[158]";mid$(t$,i,20):forz=0to100:nextz,i:return
  247. 5320 :
  248. 5340 rem ueberschrift setzen
  249. 5360 poke53280,f:poke53281,f
  250. 5380 print"[144][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183]";:printa$(a)
  251. 5400 print"[175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175]";:return
  252. 5420 :
  253. 5440 :
  254. 5460 rem hinweiszeile
  255. 5480 z=24:s=0:gosub5960:print"[144][215]eiter =   [215] [146]       [205]enue =  [205] [146]";
  256. 5500 fort=0to200:nextt
  257. 5510 getg$:ifg$=""then5540
  258. 5520 ifg$="m"org$="[205]"org$="w"org$="[215]"thengosub6000:goto5580
  259. 5530 gosub6100
  260. 5540 gosub5960:print"[144][215]eiter =   [215]        [205]enue =  [205] ";
  261. 5560 fort=0to200:nextt:goto5480
  262. 5580 gosub5960:print"                                 ";:return
  263. 5600 :
  264. 5620 rem hinweiszeile (ohne w)
  265. 5640 z=24:s=0:gosub5960:print"[144]                      [205]enue =  [205] [146]";
  266. 5660 fort=0to200:nextt
  267. 5670 getg$:ifg$=""then5700
  268. 5680 ifg$="m"org$="[205]"thengosub6000:goto5740
  269. 5690 gosub6100
  270. 5700 gosub5960:print"[144]                      [205]enue =  [205] ";
  271. 5720 fort=0to200:nextt:goto5640
  272. 5740 gosub5960:print"                                 ";:return
  273. 5760 :
  274. 5780 rem hinweiszeile (ohne m)
  275. 5800 z=24:s=0:gosub5960:print"[144][215]eiter =   [215] [146]";
  276. 5820 fort=0to200:nextt
  277. 5830 getg$:ifg$=""then5860
  278. 5840 ifg$="w"org$="[215]"thengosub6000:goto5900
  279. 5850 gosub6100
  280. 5860 gosub5960:print"[144][215]eiter =   [215] ";
  281. 5880 fort=0to200:nextt:goto5800
  282. 5900 gosub5960:print"                                 ";:return
  283. 5920 :
  284. 5940 rem cursor setzen
  285. 5960 poke214,z:poke211,s:sys58640:print"";:return
  286. 5970 :
  287. 5990 rem gueltige eingabe
  288. 6000 pokesi,59:pokesi+1,139:pokesi+6,240:pokesi+4,17
  289. 6010 pokesi+24,15:fort=0to100:nextt:pokesi+4,0:return
  290. 6020 :
  291. 6090 rem ungueltige eingabe
  292. 6100 pokesi,180:pokesi+1,8:pokesi+6,240:pokesi+4,17
  293. 6110 pokesi+24,15:fort=0to100:nextt:pokesi+4,0:return
  294.