home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / c64 / programming / atbasic.lzh / atbasic / atbasic_anl.bas (.txt) next >
Encoding:
Commodore BASIC  |  1995-01-04  |  19.4 KB  |  530 lines

  1. 2 a=12345.6789:dima%(123)
  2. 3 deffna(a)=sin(a)*sqr(a)
  3. 4 d%=123:printchr$(14)chr$(8)
  4. 5 (NULL)1,"[147]key_"
  5. 6 (NULL)2,"screen:_"
  6. 7 (NULL)3,"[147]di[210]_"
  7. 8 (NULL)4,"dload_"
  8. 9 (NULL)5,"collect"
  9. 10 (NULL)6,"enter_"
  10. 11 (NULL)7,"?'"
  11. 12 (NULL)8,"basic:_"
  12. 13 goto800
  13. 140 geta$:ifa$=""then140
  14. 141 return
  15. 150 print"[147][146][158][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]";
  16. 151 printleft$(a$+"                                        ",40)"[146][153]"
  17. 152 return
  18. 800 poke53280,.:poke53281,.:print"[147][150]                 @[194][193][211][201][195]
  19. 810 [153]"                 usrusrusrusrusrusr
  20. 815 print"            der [211][213][208][197][210]-[197][196][201][212][207][210]
  21. 820 [153]"            usrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusr
  22. 825 print"[153][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]
  23. 830 [153]"cont        ueber 40 neue peekefehle !!"
  24. 835 [153]"  str$ie unentbehrliche (NULL)rogrammierhilfe"
  25. 836 [153]"         ((NULL)(NULL)valvalstr$str$(NULL)(NULL) kompatibel)":[141]140
  26. 900 a$[178]"atn(NULL)(NULL)valright$(NULL)(NULL)(NULL)chr$":[141]150
  27. 905 [153]"str$iese atnnleitung stellt nur eine kleine
  28. 910 print"[194]efehlsuebersicht dar. [206]eue [194]efehle sind";
  29. 915 print"mit [150][210][207][212][153] gekennzeichnet, [193]usgaben des
  30. 920 [153]"lenomputers mit contpeek(NULL)atn(NULL)print und (NULL)asten in
  31. 925 print"[196][213][206][203][197][204][199][210][213][197][206][153].
  32. 930 [153]"(NULL)uerst wird der (NULL)oolkit beschrieben,
  33. 935 print"dann das [196]isk-[194]asic. [196]ann folgen weitere";
  34. 940 print"allgemeine [194]efehle, der [197]ditor und der
  35. 945 [153]"(NULL)onitor. atnm (NULL)chluss werden genauere
  36. 950 print"[197]inblicke in das [211]ystem gezeigt."
  37. 1000 gosub140:a$="[212][210][193][195][197]":gosub150
  38. 1005 print" [150][212][210][193][195][197][153]  schaltet das [218]eilenlisting
  39. 1010 [153]"waehrend des (NULL)rogrammablaufs ein.
  40. 1015 print"[196]ie aktuelle [218]eile wird dabei in den
  41. 1020 [153]"ersten zwei peekildschirmzeilen gelistet.
  42. 1025 print"[215]enn man die [211][200][201][198][212]-[212]aste[153] drueckt,laeuft
  43. 1030 [153]"das (NULL)rogramm kontinuierlich weiter,
  44. 1035 print"mit der [195][194][205]-[212]aste[153] kann man das [208]rogramm
  45. 1040 [153]"in einzelnen (NULL)chritten laufen lassen.
  46. 1045 print" [150][212][210][193][195][197] [207][198][198][153]  schaltet den [205]odus aus.
  47. 1099 [141]140
  48. 1100 a$[178]"str$val(NULL)val(NULL)val":[141]150
  49. 1105 [153]"str$er peekefehl  defstr$val(NULL)val(NULL)valprint  loescht (NULL)eilen.
  50. 1110 print"[196]ie [211]yntax ist die des [204]ist-befehls,
  51. 1115 [153]"also  defstr$val(NULL)val(NULL)val 100-print  loescht alle (NULL)eilen
  52. 1120 print"ab einschliesslich [218]eile 100.
  53. 1125 [153]"defstr$val(NULL)val(NULL)val 120-130print  loescht die (NULL)eilen
  54. 1130 print"von 120 bis 130,jeweils einschliesslich.
  55. 1135 [153]" defstr$val(NULL)val(NULL)val -150print loescht alle (NULL)eilen bis
  56. 1140 print"150 und  [150][196][197][204][197][212][197] 100[153]  die [218]eile 100
  57. 1199 [141]140
  58. 1200 a$[178]"atn(NULL)(NULL)(NULL)":[141]150
  59. 1205 [153]"atnutomatische (NULL)eilennummerierung
  60. 1210 print"beim [197]intippen von [208]rogrammen. [197]s
  61. 1215 [153]"erscheint immer die folgende (NULL)eilennr.
  62. 1220 print"auf dem [194]ildschirm. [205]it einer [204]eerzeile
  63. 1225 [153]"kann abgebrochen werden.
  64. 1235 print"[193]nfangszeile und [211]chrittweite lassen
  65. 1240 [153]"sich veraendern, (NULL)tandard ist atnnfangs-
  66. 1245 print"zeile 100 und [211]chrittweite 10. [211]yntax:
  67. 1255 [153]" defatn(NULL)(NULL)(NULL) ((NULL)valright$(NULL)val(NULL)(NULL)(NULL)(NULL)(NULL)val(NULL))(,(NULL)len(NULL)right$(NULL)(NULL)(NULL)valright$(NULL)val)print":[141]140
  68. 1260 [153]"loadvalin (NULL)ternchen vor der (NULL)ummer gibt an,
  69. 1262 print"dass die [218]eile schon existiert. [205]it
  70. 1264 [153]"einer (NULL)eerzeile kann man abbrechen, ohne";
  71. 1266 [153]"die (NULL)eile zu loeschen.
  72. 1268 print"[205]an kann den [194]efehl auch erweitern :
  73. 1270 [153]"(NULL)it defatn(NULL)(NULL)(NULL),,textprint kann man sich z.peek. bei
  74. 1272 print"[196]ata-[218]eilen das muehselige [197]intippen
  75. 1274 [153]"des str$atn(NULL)atn-peekefehls ersparen :
  76. 1276 print"[150][193][213][212][207](),(),[196][193][212][193][153]
  77. 1299 [141]140
  78. 1300 a$[178]"(NULL)(NULL)str$":[141]150
  79. 1305 [153]"str$er peekefehl  def(NULL)(NULL)str$print  holt ein peekasic-
  80. 1310 print"programmm zurueck,das mit [206][197][215] geloescht
  81. 1315 [153]"wurde.(NULL)ach dem (NULL)val(NULL) darf keine (NULL)ariable
  82. 1320 print"benutzt oder eine [194]asic-[218]eile eingegeben
  83. 1325 [153]"worden sein,da sonst der peekefehl def(NULL)(NULL)str$print
  84. 1330 print"nicht mehr funktioniert."
  85. 1340 print"[193]usserdem sollten [211][217][206][212][193][216] [197][210][210][207][210]s
  86. 1345 [153]"vermieden werden, da bei einem (NULL)(NULL)(NULL)(NULL)atn(NULL)
  87. 1350 print"[197][210][210][207][210] evtl. eine neue [214]ariable definert
  88. 1355 [153]"wird.
  89. 1399 gosub140
  90. 1400 a$="[196][213][205][208]":gosub150
  91. 1405 print"[196]er [194]efehl  [150][196][213][205][208][153]  listet alle aktuellen
  92. 1410 [153]"(NULL)ariablen,dimensionierte ascelder und
  93. 1415 print"definierte [198]unktionen.[197]in [193]usdruck
  94. 1420 [153]"koennte so aussehen :cont
  95. 1422 ifa$=chr$(13)ora$=chr$(141)thena$=""
  96. 1425 (NULL):gosub140
  97. 1430 print"[153][145][145][145][145][145]"tab(20)"[198]liesskommavariable"
  98. 1435 printtab(20)"[198]unktion"
  99. 1440 printtab(20)"[201]nteger-zahl"
  100. 1445 printtab(20)"[211]tring"
  101. 1450 printtab(20)"dimensioniertes [198]eld"
  102. 1499 gosub140
  103. 1500 a$="[198][201][206][196]":gosub150
  104. 1505 print"[205]it dem [194]efehl  [150][198][201][206][196][153]  kann man das ganze"
  105. 1510 print"[208]rogramm nach einer bestimmten [198]ormu-
  106. 1515 [153]"lierung durchsuchen.valin peekeispiel:
  107. 1520 print" [150][198][201][206][196] [199][197][212][153]  bringt z.b. diesen [193]usdruck:
  108. 1525 [153]"cont140 geta$:ifa$="[199](34)[199](34)"then140
  109. 1530 gosub140
  110. 1600 a$="[210][197][206][213][205][194][197][210]":gosub150
  111. 1610 print"[205]it dem [194]efehl  [150][210][197][206][213][205][194][197][210][153]  kann man die
  112. 1620 [153]"(NULL)eilen neu durchnummerieren.str$abei werden";
  113. 1630 [153]"alle (NULL)prungbefehle wie chr$(NULL)(NULL)(NULL),chr$(NULL)(NULL)(NULL)peek...
  114. 1640 print"so veraendert,dass sie auf die richtigen";
  115. 1650 print"[218]eilen zeigen,also [196]ieselben wie davor
  116. 1660 [153]"nur mit neuer (NULL)ummer.(NULL)yntax:
  117. 1670 print"[150][210][197][206][213][205][194][197][210](([218]eile)(,([211]chw.)(,(a)(-)(e))))[153]"
  118. 1680 print"[211]tandardparameter sind [218]eile =100 und
  119. 1682 [153]"(NULL)chrittweite ((NULL)chw.) =10.
  120. 1684 print"[205]it [150]a[153] und [150]e[153] bestimmt man den [194]ereich
  121. 1686 [153]"der umnummeriert werden soll.
  122. 1690 gosub140
  123. 1700 a$="[196][204][207][193][196]/[196][211][193][214][197]/[196][214][197][210][201][198][217]/[205][204][207][193][196]/[205][214][197][210][201][198][217]/[205][211][193][214][197]":gosub150
  124. 1705 print"[196]er [194]efehl  [150][196][204][207][193][196][153]  entspricht dem [204][207][193][196]-
  125. 1710 [153]"peekefehl mit der atnusnahme,dass er nur
  126. 1715 print"[194]asic-[208]rogramme laedt.[218]usaetzlich ist
  127. 1720 [153]"die (NULL)tandard-chr$eraeteadresse die atndresse
  128. 1725 print"8,also die [198]loppy."
  129. 1726 print"[197]ntsprechendes gilt fuer [196][211][193][214][197] und
  130. 1727 [153]"str$(NULL)val(NULL)right$asc(NULL).def(NULL)(NULL)(NULL)atnstr$print laedt (NULL)aschinensprache-
  131. 1728 print"programme,ohne [218]eiger zu veraendern.
  132. 1733 [141]140
  133. 1734 [153]"loaddie (NULL)yntax lautet wie folgt:
  134. 1735 print"[150][196][204][207][193][196]"chr$(34)"[206][193][205][197]"chr$(34)"(,[196]0)(,[213]8)[153]
  135. 1736 [153]"def(NULL)(NULL)atn(NULL)val"[199](34)"(NULL)atn(NULL)val"[199](34)"(,str$0)(,(NULL)8),atnnfadr.,valndadr.print
  136. 1737 print"[150][205][204][207][193][196]"chr$(34)"[206][193][205][197]"chr$(34)"(,[196]0)(,[213]8)(,[193]nfadr.)[153]
  137. 1740 [153]"(NULL)it dem defstr$print-(NULL)arameter kann man das
  138. 1745 print"[204]aufwerk bei einer [196]oppelfloppy bestim-
  139. 1750 [153]"men.str$er def(NULL)print-(NULL)arameter dient dazu,eine
  140. 1755 print"andere [199]eraeteadresse anzusteuern.
  141. 1760 [153]"defatnnfadr.print und defvalndadr.print bei def(NULL)(NULL)atn(NULL)valprint bedeuten
  142. 1765 print"die [193]nfangs- und [197]ndadresse des zu
  143. 1770 [153]"speichernden (NULL)aschinenspracheprogramms.":[141]140
  144. 1771 a$[178]"(NULL)(NULL)(NULL)":[141]150
  145. 1772 [153]"str$er peekefehl def(NULL)(NULL)(NULL)print laesst sich jetzt dazu
  146. 1773 print"benutzen, [208]rogramme zu laden und sofort
  147. 1774 [153]"zu starten.
  148. 1775 print"[211]yntax:"
  149. 1776 print"[150][210][213][206][153]              startet [208]rogramm
  150. 1777 [153]"def(NULL)(NULL)(NULL)"[199](34)"(NULL)atn(NULL)val"[199](34)"print        laedt
  151. 1778 print"                 und startet [208]rogramm
  152. 1779 [153]"(NULL)left$right$asc(NULL)/(NULL)(NULL)(NULL)-(NULL)(NULL)(NULL)(NULL)print   laedt und startet
  153. 1780 print"                 erstes [208]rogramm
  154. 1799 [141]140
  155. 1800 a$[178]"lenatn(NULL)atn(NULL)(NULL)chr$/str$right$(NULL)vallen(NULL)(NULL)(NULL)(NULL)":[141]150
  156. 1805 [153]"(NULL)it deflenatn(NULL)atn(NULL)(NULL)chr$print oder defstr$right$(NULL)vallen(NULL)(NULL)(NULL)(NULL)print kann man das
  157. 1810 print"[201]nhaltsverzeichnis der [196]iskette auf den
  158. 1815 [153]"peekildschirm bringen,ohne das (NULL)rogramm zu
  159. 1820 print"loeschen.
  160. 1825 [153]"deflenatn(NULL)atn(NULL)(NULL)chr$(#4)(,)("[199](34)"(NULL)?str$(NULL)*=(NULL)"[199](34)")(,(NULL)8)(,str$0)print
  161. 1830 print"'[211]?[196][211]*=[208]' bedeutet hierbei den [211]chlues-
  162. 1835 [153]"sel fuer die ascloppy,um nur die str$ateien
  163. 1840 print"anzuzeigen,die diesem [211]chluessel ent-
  164. 1845 [153]"sprechen (ascloppy-left$andbuch).
  165. 1850 print"[205]it dem [150]#4[153] kann man das [196]irectory auf
  166. 1855 [153]"chr$eraet (NULL)r. 4, also den str$rucker leiten."
  167. 1899 [141]140
  168. 1900 a$[178]"str$right$(NULL)(NULL)val(NULL)(NULL)val(NULL)-peekvalascvalleft$(NULL)val":[141]150
  169. 1905 [153]"def(NULL)len(NULL)atn(NULL)lenleft$"[199](34)"(NULL)atn(NULL)val"[199](34)"print
  170. 1910 print"  loescht [196]ateien auf [196]iskette
  171. 1915 [153]"deflen(NULL)(NULL)(NULL)vallen(NULL)print
  172. 1916 print"  prueft die [196]iskette
  173. 1920 [153]"defleft$valatnstr$val(NULL)"[199](34)"(NULL)atn(NULL)val"[199](34)",str$0,right$idprint
  174. 1921 print"  formatiert [196]isk
  175. 1925 [153]"deflen(NULL)(NULL)(NULL)"[199](34)"ascright$(NULL)val1"[199](34)"(NULL)(NULL)"[199](34)"ascright$(NULL)val2"[199](34)"print
  176. 1930 print"  kopiert file1 nach file2
  177. 1940 [153]"defpeekatnlen(NULL)(NULL)(NULL) str$0 (NULL)(NULL) str$1print"
  178. 1945 [153]"  kopiert ganze disk von str$0 nach str$1
  179. 1950 print"[150][210][197][206][193][205][197]"chr$(34)"[198][201][204][197]1"chr$(34)"[212][207]"chr$(34)"[198][201][204][197]2"chr$(34)"[153]
  180. 1955 [153]"  nennt file1 in file2 um"
  181. 1960 [153]"allgemeine syntax:"
  182. 1965 [153]"def...("[199](34)"(NULL)atn(NULL)val1"[199](34)")(,str$0)(NULL)(NULL)("[199](34)"(NULL)atn(NULL)val2"[199](34);
  183. 1970 [153]")(,str$0)(,(NULL)8)print
  184. 1999 gosub140
  185. 2000 a$="[196][201][211][203]":gosub150
  186. 2005 print"[205]it dem [194]efehl [150][196][201][211][203][153] kann man [203]ommandos"
  187. 2010 print"zur [198]loppy schicken.[150][196][201][211][203]"chr$(34)"[201]"chr$(34)"[153] sendet den"
  188. 2020 print"[201]nitialisierungs-[194]efehl.
  189. 2025 [153]"(NULL)yntax:
  190. 2030 print"[150][196][201][211][203]"chr$(34)"[194][197][198][197][200][204]"chr$(34)"(,[213]8)[153]"
  191. 2040 print"[193]usserdem dient [150][196][201][211][203][153] dazu, die [211]tandard-";
  192. 2041 print"geraeteadresse (die, die ohne [213]x ange-
  193. 2042 [153]"sprochen wird) festzulegen :
  194. 2044 print"[150][196][201][211][203] devadr[153]":gosub140
  195. 2075 a$="[196][211]/[196][211]$":gosub150
  196. 2077 print"[150][196][211][153] und [150][196][211]$[153] haben die gleiche [194]edeu-
  197. 2079 [153]"tung wie im peekasic 4.0 der 'grossen'
  198. 2081 print"[195][194][205]s :
  199. 2083 [153]"defstr$(NULL)print   =ascehlernummer der ascloppy
  200. 2085 print"     =[154]0[153]
  201. 2087 [153]"defstr$(NULL)$print  =ascehlertext der ascloppy
  202. 2089 print"     =[154]00, ok,00,00[153]
  203. 2091 [141]140
  204. 2093 a$[178]"atn(NULL)(NULL)val(NULL)str$/(NULL)val(NULL)chr$val":[141]150
  205. 2105 [153]"(NULL)it defatn(NULL)(NULL)val(NULL)str$print kann man ein (NULL)rogramm an ein
  206. 2110 print"im [211]peicher befindliches [208]rogramm an-
  207. 2115 [153]"haengen.(NULL)it def(NULL)val(NULL)chr$valprint werden die zwei
  208. 2120 print"[208]rogramme anhand der [218]eilennummern
  209. 2125 [153]"zusammengefuegt.
  210. 2130 print"[196]ie [211]yntax fuer beide [194]efehle ist wie
  211. 2135 [153]"bei str$(NULL)(NULL)atnstr$.
  212. 2140 gosub140
  213. 2200 a$="[204][201][211][212]/[197][206][212][197][210]":gosub150
  214. 2201 print"[150][204][201][211][212]#4[153] listet das [208]rogramm auf [199]eraet
  215. 2202 [153]"(NULL)ummer 4,also auf den str$rucker.
  216. 2203 print"[150][204][201][211][212]"chr$(34)"[206][193][205][197]"chr$(34)"(,[196]0)(,[213]8)[153] listet das
  217. 2204 [153]"(NULL)rogramm im atn(NULL)lenright$right$-lenode auf str$iskette.
  218. 2205 print"[205]it [150][197][206][212][197][210][153] laesst sich das [193][211][195][201][201]-[198]ile
  219. 2206 [153]"wieder in den (NULL)peicher holen.str$as
  220. 2207 print"[208]rogramm wird wie bei [205][197][210][199][197] einge-
  221. 2208 [153]"mischt.(NULL)an kann auch peekefehls-
  222. 2209 print"sequenzen als [193][211][195][201][201]-[198]ile abspeichern
  223. 2210 [153]"und dann durch defval(NULL)(NULL)val(NULL)print ausfuehren.
  224. 2211 gosub140
  225. 2212 print"[147][211]yntax :
  226. 2213 [153]"def(NULL)right$(NULL)(NULL)#4(,)(atn)(-)(val)
  227. 2214 print"[204][201][211][212]"chr$(34)"[206][193][205][197]"chr$(34)"(,[196]0)(,[213]8)(,)([193])(-)([197])
  228. 2215 [153]"val(NULL)(NULL)val(NULL)"[199](34)"(NULL)atn(NULL)val"[199](34)"(,str$0)(,(NULL)8)print
  229. 2216 print"[194]ei [204]ist auf dem [194]ildschirm werden alle
  230. 2217 [153]"(NULL)teuerzeichen unterdrueckt, was man im
  231. 2218 print"[196]irectory (falls es mit (d)load geladen
  232. 2219 [153]"ist) sehr gut sieht, aber es gibt ja
  233. 2220 print"den [194]efehl [196][201][210][197][195][212][207][210][217] oder [195][193][212][193][204][207][199].":gosub140
  234. 2221 print"[147][150][193][195][200][212][213][206][199] !![153]
  235. 2222 [153]"peekei peeketrieb mit (NULL)peeddos muss vor dem
  236. 2223 print"ersten [205]/[196]/[204][207][193][196] im [197]nter-[198]ile die
  237. 2224 [153]"atnnzeige des (NULL)peicherbereiches beim (NULL)aden";
  238. 2225 [153]"mit (NULL)(NULL)(NULL)val$0298,3 abgeschaltet werden, da
  239. 2226 print"der [194]efehl [150][197][206][212][197][210][153] sonst abbricht.
  240. 2227 [153]"str$iejenigen, die nur mit (NULL)peeddos arbei-
  241. 2228 print"ten, koennen das [208]rogramm aendern :":gosub140
  242. 2229 print"[147]1. [198]olgendes an @[194][193][211][201][195] anhaengen:
  243. 2230 [153]"    adr1 lda #0
  244. 2231 print"         sta $0298
  245. 2232 [153]"         jmp $ffe1
  246. 2233 print"    adr2 lda #3
  247. 2234 [153]"         sta $0298
  248. 2235 print"         jmp xxxx
  249. 2236 [153]"2. str$en jsr $ffe1 in dem peekefehl defval(NULL)(NULL)val(NULL)print
  250. 2237 print"   durch jsr adr1 ersetzen
  251. 2238 [153]"3. str$en dritten mid$(NULL)(NULL)-peekefehl (atnusfuehren
  252. 2239 print"   des [194][193][211][201][195]-[194]efehls) durch [202][205][208] adr2
  253. 2240 [153]"   ersetzen. str$er mid$(NULL)(NULL) an diese atndresse
  254. 2241 print"   existiert zweimal, nur den [197]rsten
  255. 2242 [153]"   aendern. ascuer xxxx setzen (NULL)ie dann
  256. 2243 print"   die alte [193]dresse ein."
  257. 2250 gosub140:print"[147]"
  258. 2251 print"[197]in [150][197][206][212][197][210][153]-[198]ile kann z.[194]. so erstellt
  259. 2252 [153]"werden :
  260. 2253 print"[207][208][197][206][160]1,8,1,"chr$(34)"[206][193][205][197]"chr$(34)
  261. 2254 print"[208][210][201][206][212]#1,"chr$(34)"[205][204][207][193][196]"chr$(34)"chr$(34)"chr$(34)"[211][205][207][206].$6000
  262. 2255 [153]"(NULL)(NULL)right$(NULL)(NULL)#1,"[199](34)"str$(NULL)(NULL)atnstr$"[199](34)"chr$(34)"[199](34)"(NULL)(NULL)val (NULL)1.0"
  263. 2256 [153]"(NULL)(NULL)right$(NULL)(NULL)#1,"[199](34)"left$right$(NULL)val(NULL) $6000"
  264. 2257 [153]"(NULL)(NULL)right$(NULL)(NULL)#1,"[199](34)"(NULL)(NULL)(NULL)"
  265. 2258 [153]"len(NULL)(NULL)(NULL)val 1
  266. 2260 print"[207]der ein [208]rogramm wird mit
  267. 2262 [153]"def(NULL)right$(NULL)(NULL)"[199](34)"(NULL)atn(NULL)val"[199](34)"print auf str$isk
  268. 2264 print"gespeichert.
  269. 2300 [141]140:a$[178]"(NULL)val(NULL)":[141]150
  270. 2305 [153]"str$ieser peekefehl dient der ascunktionstasten-
  271. 2310 print"belegung.[205]it [150][203][197][217]1,"chr$(34)"[196][213][205][208]"chr$(34)"[153] wird der [194]efehl
  272. 2315 [153]"str$(NULL)(NULL)(NULL) auf die ascunktionstaste 1 gelegt.
  273. 2320 print"[205]it [150][203][197][217][153] kann man die [194]elegung auf
  274. 2325 [153]"den peekildschirm bringen :cont"
  275. 2330 [228]:[141]140
  276. 2335 [153]"loadprintstr$abei wird der atnpostroph als left$och-
  277. 2340 print"komma und der [208]feil nach links als
  278. 2345 [153]"(NULL)val(NULL)(NULL)(NULL)(NULL)print gewertet.
  279. 2346 print""chr$(34)"?'[193]=';[193]_"chr$(34)" wird also zu :
  280. 2347 [153]"cont?"[199](34)"atn="[199](34)";atn  ((NULL)val(NULL)(NULL)(NULL)(NULL))cont
  281. 2348 print"[193]=";a:print"[210][197][193][196][217].[153]"
  282. 2355 print"[150][203][197][217] [207][198][198][153] schaltet die [198]unktionstasten-
  283. 2360 [153]"belegung aus, mit def(NULL)val(NULL) (NULL)(NULL)print wird sie
  284. 2365 print"eingeschaltet.
  285. 2366 [141]140
  286. 2370 a$[178]"len(NULL)(NULL)(NULL)(NULL)(NULL)":[141]150
  287. 2371 [153]"(NULL)it dem peekefehl deflen(NULL)(NULL)(NULL)(NULL)(NULL)print kann man die
  288. 2372 print"[194]ildschirmfarben veraendern.
  289. 2373 [153]"(NULL)yntax:
  290. 2374 print"[150][195][207][204][207][213][210]([210][193][206][196]),([200][201][206][212][197][210][199][210][213][206][196]),([195][213][210][211][207][210])[153]
  291. 2375 [153]"(NULL)enn z.peek. nur der (NULL)and veraendert werden";
  292. 2376 [153]"soll, kann man auch die restlichen
  293. 2377 print"[198]arben weglassen:
  294. 2378 [153]"deflen(NULL)(NULL)(NULL)(NULL)(NULL) 2print macht den (NULL)and rot.
  295. 2399 gosub140
  296. 2400 a$="[211][197][212] [212][201][205][197]/[193][204][193][210][205]":gosub150
  297. 2405 print"[196]er [195]ommodore 64 verfuegt ueber eine
  298. 2410 [153]"valchtzeituhr,die vom normalen peekasic
  299. 2415 print"nur ueber [208]rogramme ansprechbar ist.
  300. 2420 [153]"@peekatn(NULL)right$len hat dafuer diese peekefehle :"
  301. 2425 [153]"def(NULL)val(NULL) (NULL)right$(NULL)val "[199](34)"1213145"[199](34)
  302. 2430 [153]"(NULL)val(NULL) atn(NULL)atn(NULL)(NULL) "[199](34)"1300000"[199](34)
  303. 2435 [153]"(NULL)val(NULL) atn(NULL)atn(NULL)(NULL) (NULL)ascasc
  304. 2440 print"[211][197][212] [193][204][193][210][205] [207][206][153]":gosub140
  305. 2445 print"[147][200]ier wird die [213]hr ([150][212][201][205][197][153]) auf 12 uhr,
  306. 2450 [153]"13 minuten,14 sekunden und 5/10 sec.
  307. 2455 print"gestellt.[196]er [193]larm wird auf 13 [213]hr ge-
  308. 2460 [153]"stellt. (NULL)it def(NULL)val(NULL) atn(NULL)atn(NULL)(NULL) (NULL)ascascprint bzw def(NULL)(NULL)print kann
  309. 2465 print"der [193]larm aus und eingeschaltet werden.
  310. 2466 [153]"right$n der (NULL)ariable def(NULL)right$(NULL)valprint kann die aktuelle
  311. 2467 print"[213]hrzeit abgelesen werden.
  312. 2475 [153]"(NULL)enn der atnlarm eingetreten ist, haelt
  313. 2480 print"der [195]omputer an und brummt. [205]it der
  314. 2485 [153]"(NULL)aste (NULL)(NULL)(NULL)/(NULL)(NULL)(NULL)(NULL)print macht er weiter, als
  315. 2490 print"waere nichts geschehen.
  316. 2495 [141]140
  317. 2500 a$[178]"left$val(NULL)(NULL)":[141]150
  318. 2505 [153]"str$er peekefehl defleft$val(NULL)(NULL)print listet alle neuen
  319. 2510 print"[194]efehlswoerter und [198]unktionen:
  320. 2515 [153]"cont":[235]:[153]"print
  321. 2520 gosub140
  322. 2600 a$="[194][193][211][201][195]/[210][197][211][197][212]/[197][216][201][212]":gosub150
  323. 2610 print"[196]er [194]efehl [150][194][193][211][201][195][153] dient dazu, @[194][193][211][201][195] ohne
  324. 2615 [153]"(NULL)rogrammverlust zu verlassen.(NULL)it
  325. 2620 print"[210][213][206]-[211][212][207][208]/[210][197][211][212][207][210][197][153] kann man @[194][193][211][201][195] wieder
  326. 2625 [153]"einschalten.(NULL)it dem peekefehl def(NULL)val(NULL)val(NULL)print stellt
  327. 2630 print"man den [199]rundzustand von @[194][193][211][201][195] wieder
  328. 2635 [153]"her. (NULL)it defval(NULL)right$(NULL)print kehren (NULL)ie in das
  329. 2640 print"[195]ommodore [194]asic v2.0 [201]hres [195]64 zurueck.
  330. 2699 [141]140
  331. 2700 a$[178]"(NULL)len(NULL)valval(NULL)":[141]150
  332. 2710 [153]"(NULL)it dem peekefehl def(NULL)len(NULL)valval(NULL)print wird der aktuelle
  333. 2715 print"[194]ildschirm mit einem zweiten [194]ildschirm
  334. 2720 [153]"getauscht. (NULL)it diesem koennen (NULL)ie genau
  335. 2725 print"so wie mit dem normalen [194]ildschirm
  336. 2730 [153]"arbeiten, bis (NULL)ie ihn wieder mit dem
  337. 2735 print"urspruenglichen [194]ildschirm vertauschen.":gosub140
  338. 2740 print"[147][206]ach dem [197]inschalten des [195]omputers ist
  339. 2745 [153]"der left$ilfsbildschirm mit unsinnigem
  340. 2750 print"[218]eichenwirrwarr gefuellt.[197]r muss deshalb
  341. 2755 [153]"zuerst mit (NULL)left$right$asc(NULL)/len(NULL)(NULL)-left$(NULL)(NULL)valprint 'gereinigt'
  342. 2760 print"werden ([211]onst [193]bsturzgefahr).
  343. 2761 [153]"str$afuer bleibt der left$ilfbildschirm
  344. 2765 print"auch nach einem [210][197][211][197][212] noch erhalten,
  345. 2770 [153]"d.h. die right$nformationen gehen nicht
  346. 2775 print"verloren.
  347. 2799 [141]140
  348. 2800 a$[178]"peekright$(NULL)str$(NULL)lenleft$right$(NULL)(NULL)-valstr$right$(NULL)(NULL)(NULL)":[141]150
  349. 2801 [153]"@peekatn(NULL)right$len verfuegt ueber einen komfortablen
  350. 2802 print"[194]ildschirm-[197]ditor :[205]ehrere [212]asten er-
  351. 2803 [153]"hielten neue peekedeutungen :
  352. 2804 print"[210][213][206]/[211][212][207][208][153]  = [197]scape-[212]aste
  353. 2805 [153]"lentrl (NULL)  print  = (NULL)est der (NULL)eile hinter dem
  354. 2806 print"            [195]ursor loeschen
  355. 2807 [153]"lentrl atn  print  = lenursor hinter den letzten
  356. 2808 print"            [194]uchstaben der [218]eile setzen
  357. 2809 [153]"            (anhaengen)
  358. 2810 print"[195]trl [213]  [153]  = [195]ursor nach links unten"
  359. 2811 print"[195]trl [218]  [153]  = [201]nsert-[205]odus: der [210]est der
  360. 2812 [153]"            (NULL)eile wird zurueckgeschoben,";
  361. 2813 [153]"            wenn (NULL)aste gedrueckt wird."
  362. 2815 [153]"lentrl str$  print  = (NULL)eile rechts vom lenursor
  363. 2817 print"            um eins nach rechts schieben            (delete)
  364. 2830 [141]140
  365. 2833 [153]"load(NULL)em die (NULL)asten nicht gefallen, kann sie
  366. 2836 print"durch andere [212]asten ersetzen. [194]ei [211][208][197][197][196]-";
  367. 2839 print"[196][207][211]-[194]etrieb ist es am sinnvollsten,
  368. 2842 [153]"die lentrl (NULL) durch lentrl left$ome ($82) und
  369. 2845 print"[195]trl [204] durch [195]trl [196]el ($84) zu ersetzen,";
  370. 2848 print"da diese [212]asten in [211][208][197][197][196][196][207][211][160]genauso
  371. 2851 [153]"belegt sind.":[141]140
  372. 2854 [153]"loadstr$iejenigen, die sich ihr peeketriebsystem
  373. 2857 print"selbst brennen (z.[194]. [200]ypra-[208]erfekt),
  374. 2860 [153]"koennen in der (NULL)astaturdekodiertabelle
  375. 2863 print"ab $[197][195]78 (mit [195]trl) 'leere' [195]odes ($[198][198])
  376. 2866 [153]"durch unbenutzte lenodes (z.peek. $80-$84)
  377. 2869 print"ersetzen und die [193]bfrage in @[194][193][211][201][195] dem-
  378. 2872 [153]"entsprechend aendern.
  379. 2875 print"(z.[194]. [195]trl [195]rsr rechts => $80 => [195]ursor
  380. 2878 [153]"an das valnde der (NULL)eile setzen.)":[141]140
  381. 2881 a$[178]"(NULL)right$(NULL)(NULL)-(NULL)len(NULL)(NULL)(NULL)(NULL)-asc(NULL)(NULL)(NULL)(NULL)right$(NULL)(NULL)":[141]150
  382. 2884 [153]"(NULL)right$(NULL)(NULL)-(NULL)len(NULL)(NULL)(NULL)(NULL)-ascunktion bedeutet, dass
  383. 2887 print"[211]ie in einem [194]asic-[204]isting aus dem [194]ild-";
  384. 2890 print"schirm hinausfahren koennen, und es wird";
  385. 2893 print"in der richtigen [210]eihenfolge der [218]eilen
  386. 2896 [153]"nach oben oder unten weitergelistet.
  387. 2899 gosub140
  388. 2902 a$="[193][210][201][212][200][205][197][212][201][203]":gosub150
  389. 3510 print"[193]ls [218]ahlenwert kann in jedem [194]efehl
  390. 3515 [153]"oder in jeder ascunktion ein hexadezimaler
  391. 3520 print"oder binaerer [215]ert stehen.[200]exadezimale
  392. 3525 [153]"(NULL)erte sind durch ein def$print gekennzeichnet
  393. 3530 print"und haben eine variable [204]aenge von max.
  394. 3535 [153]"4 hex-(NULL)iffern. peekinaere (NULL)erte sind durch
  395. 3540 print"ein [150]%[153] gekennzeichnet und haben eine
  396. 3545 [153]"maximale (NULL)aenge von 16 (NULL)iffern.
  397. 3599 gosub140
  398. 3600 a$="[196][197][197][203]/[196][207][203][197]/[200][197][216]$/[194][201][206]$":gosub150
  399. 3605 print"[196]er [194]efehl [150][196][207][203][197][153] entspricht dem [194]efehl
  400. 3610 [153]"(NULL)oke, mit dem (NULL)nterschied,dass er (NULL)wei-
  401. 3615 print"[194]yte [193]dressen poket.[198]uer [150][196][197][197][203][153] gilt das
  402. 3620 [153]"gleiche mit (NULL)valval(NULL).
  403. 3625 print"[150][200][197][216]$([193])[153] ergibt den 4-stelligen
  404. 3630 [153]"hexadezimalen (NULL)ert der (NULL)ariable atn als
  405. 3635 print"[211]tring.[150][194][201][206]$([194])[153] erzeugt den 8-stelligen
  406. 3640 [153]"peekinaercode der (NULL)ariable peek.":[141]140
  407. 3700 a$[178]"(NULL)(NULL)(NULL)atn(NULL)/left$right$(NULL)atn(NULL)":[141]150
  408. 3710 [153]"str$er peekefehl def(NULL)(NULL)(NULL)atn(NULL)print setzt die (NULL)ntergrenze
  409. 3720 print"des [211]peichers fest.[204]iegt die [193]dresse
  410. 3725 [153]"ueber der des (NULL)peicherendes, wird ein
  411. 3730 print"[207][213][212] [207][198] [205][197][205][207][210][217] [197][210][210][207][210] ausgegeben. [211]onst
  412. 3735 [153]"wird die (NULL)peichergrenze gesetzt und ein
  413. 3740 print"[206][197][215] ausgefuehrt.[150][200][201][210][193][205][153] setzt die
  414. 3745 [153]"(NULL)peicherobergrenze.(NULL)enn dadurch ein
  415. 3750 print"[194][193][211][201][195]-[208]rogramm zerstoert wuerde, wird
  416. 3755 [153]"ein (NULL)(NULL)(NULL) (NULL)asc (NULL)val(NULL)(NULL)(NULL)(NULL) val(NULL)(NULL)(NULL)(NULL)closeausgegeben.
  417. 3760 print"[194]ei diesem [194]efehl wird ein [195][204][210] ausge-
  418. 3765 [153]"fuehrt.":[141]140
  419. 3770 [153]"load(NULL)yntax:"
  420. 3775 [153]"def(NULL)(NULL)(NULL)atn(NULL) adr"
  421. 3780 [153]"left$right$(NULL)atn(NULL) adrprint":[141]140
  422. 3800 a$[178]"(NULL)(NULL)(NULL)right$(NULL)(NULL)(NULL)":[141]150
  423. 3805 [153]"right$n @peekatn(NULL)right$len ist ein kleiner (NULL)onitor mit
  424. 3810 print"folgenden [194]efehlen integriert:
  425. 3815 [153]"def.(NULL) adr1 (adr2)print
  426. 3820 print"     [205]emory-[196]ump
  427. 3825 [153]"def.(NULL) anf1 end1 anf2print
  428. 3830 print"     [214]erschiebt anf1 bis end1 nach anf2
  429. 3835 [153]"def.len anf1 end1 anf2print
  430. 3840 print"     [214]ergleicht anf1 bis end1 mit anf2
  431. 3845 [153]"def.(NULL) anf end bytprint
  432. 3850 print"     [198]uellt anf bis end mit byt
  433. 3855 [153]"def.asc anf end "[199](34)"text"[199](34)
  434. 3860 [153]".asc anf end byt1 (..bytn)print
  435. 3865 print"     [211]ucht nach text oder byte(folgen)
  436. 3870 [153]"def.chr$ adrprint
  437. 3875 print"     [211]pringt nach adr
  438. 3880 [141]140
  439. 3900 [153]"load(NULL)um aendern von (NULL)peicherinhalten
  440. 3905 print"ueberschreibt man im [200]ex-[196]ump, der
  441. 3910 [153]"uebrigens auch in die (NULL)right$(NULL)(NULL)-(NULL)len(NULL)(NULL)(NULL)(NULL)-
  442. 3915 print"[198]unktion eingebunden ist, einfach die
  443. 3920 [153]"left$ex-(NULL)iffern. atnndere atn(NULL)lenright$right$-(NULL)erte weden
  444. 3925 print"nicht uebernommen.[154]
  445. 3930 [153]".;a000 94 e3 7b e3 43 42 4d 42 (NULL)waittab((NULL)tab(cbmbprint
  446. 3935 gosub140
  447. 4000 a$="[215][197][201][212][197][210][197] [194][197][211][207][206][196][197][210][200][197][201][212][197][206]":gosub150
  448. 4005 print"[194]ei der [213]ebernahme einer [194]asic-[218]eile
  449. 4010 [153]"wird eine (NULL)lammer-(NULL)ontrolle durchge-
  450. 4015 print"fuehrt : [215]enn nicht genauso viele
  451. 4020 [153]"(NULL)lammern auf wie zu vorhanden sind, wird";
  452. 4025 [153]"ein (NULL)(NULL)(NULL)(NULL)atn(NULL) val(NULL)(NULL)(NULL)(NULL) ausgegeben.
  453. 4030 print"[215]enn der [195]omputer im [208]rogramm auf ein
  454. 4035 [153]"atnusrufezeichen def!print stoesst, wird nach
  455. 4040 print"$c006 gesprungen.":gosub140
  456. 4100 a$="[215][197][201][212][197][210][197] [194][197][211][207][206][196][197][210][200][197][201][212][197][206]":gosub150
  457. 4101 print"[198]uer @[194][193][211][201][195] wurden zwei spezielle
  458. 4102 [153]"asclags definiert. right$m folgenden die atndres-";
  459. 4103 [153]"sen und peekitbelegungen (in (NULL)lammern =
  460. 4104 print"[205]odulprg.[193]dressen):
  461. 4105 [153]"$9ffe ($02a7):'internes' asclag
  462. 4106 print"   b7=1 :[204]ist bis [196]oppelpunkt ([196][213][205][208])
  463. 4107 [153]"   b2=1 :bei atnusgabe (NULL)teuerzeichen
  464. 4108 print"         unterdruecken ([204][201][211][212],[196][213][205][208],[205][207][206].,          [203][197][217])"
  465. 4109 print"$9fff ($02a8):'externes' [198]lag
  466. 4110 [153]"   b7=1 :atnlarm on
  467. 4111 print"   b6=1 :[212]race on
  468. 4112 [153]"   b5=1 :(NULL)ey on
  469. 4113 print"   b4=1 :[197]ditor on
  470. 4114 [153]"   b3=1 :(NULL)eichen in der (NULL)eile nicht in
  471. 4115 print"         [212]okens, [210][213][206] => jmp $c003
  472. 4116 [153]"   b1=1 :right$n (NULL)eilen nur normale (NULL)okens":[141]140
  473. 4117 a$[178]"(NULL)valright$(NULL)val(NULL)val peekval(NULL)(NULL)(NULL)str$val(NULL)left$valright$(NULL)val(NULL)":[141]150
  474. 4130 [153]"(NULL)enn (NULL)ie beim (NULL)val(NULL)val(NULL) keine (NULL)aste
  475. 4134 print"druecken, kommt die normale [205]eldung
  476. 4136 [153]"(NULL)enn (NULL)ie aber peekis zur (NULL)eldung die lentrlprint-
  477. 4138 print"[212]aste druecken, wird automatisch der
  478. 4140 [153]"peekefehl defval(NULL)(NULL)val(NULL)"[199](34)"@a*"[199](34)"print ausgefuehrt.
  479. 4142 print"[196]adurch kann man auf seinen [193]rbeits-
  480. 4144 [153]"str$isketten jeweils ein val(NULL)(NULL)val(NULL)-ascile spei-
  481. 4146 print"chern, dass dann automatisch z.[194]. [211][205][207][206]
  482. 4148 [153]"und left$(NULL)(NULL)(NULL)atn-atn(NULL)(NULL) laedt und man braucht
  483. 4150 print"diese [208]rogramme nicht mehr einzeln zu
  484. 4152 [153]"laden.
  485. 4200 gosub140:a$="[211][208][197][201][195][200][197][210][194][197][204][197][199][213][206][199]":gosub150
  486. 4205 print"[196]as [208]rogramm liegt im [205]odulbereich von
  487. 4210 [153]"$8000-$9fff. right$n der (NULL)eropage werden nur
  488. 4215 print"$fb-$ff sowie schon belegte [211]peicher-
  489. 4220 [153]"zellen benutzt, $02 bleibt frei. right$n der
  490. 4225 print"[210][193][205]-[214]ersion liegen die beiden [198]lags bei
  491. 4230 [153]"$9ffe/f, left$ilfsbildschirm fuer (NULL)len(NULL)valval(NULL) bei";
  492. 4235 [153]"$a001-$a813. ascunktionstasten und str$isk-
  493. 4240 print"[208]uffer sind im [208]rogramm eingebunden."
  494. 4241 print"[196]ie [196]isk-[211]tandardadresse liegt bei $9ffd";:gosub140
  495. 4245 print"[147][201]n der [205]odul-[214]ersion liegen die beiden
  496. 4250 [153]"asclags bei $02a7/8 ($02a6=flag (NULL)atn(NULL)/(NULL)(NULL)atn).
  497. 4251 print"[196]ie [196]isk-[193]dresse liegt bei $02a9.
  498. 4255 [153]"left$ilfsbildschirm, ascunktionstasten etc.
  499. 4260 print"liegen unter dem [205]odul im [210][193][205].
  500. 4265 [153]"str$eshalb wurden die (NULL)rogrammteile, die
  501. 4270 print"auf das [210][193][205] zugreifen, an den [193]nfang
  502. 4275 [153]"verlegt und beim valinschalten ins (NULL)atn(NULL)
  503. 4280 print"kopiert, so dass man ohne die [199]efahr
  504. 4285 [153]"eines atnbsturzes auf (NULL)atn(NULL) umschalten kann.";:[141]140
  505. 4300 a$[178]"(NULL)val(NULL)(NULL)(NULL)(NULL)val(NULL)":[141]150
  506. 4305 [153]"atnn (NULL)ektoren fuer das peeketriebssystem
  507. 4310 print"wurden der [201][210][209]- ($0314) und der [194][210][203]-
  508. 4315 [153]"(NULL)ektor ($0316) verstellt. (NULL)eiter wurden
  509. 4320 print"fuer den [194]ildschirm-[197]ditor die [214]ektoren
  510. 4325 [153]"fuer right$nput/(NULL)utput ($0324/$0326) auf
  511. 4330 print"eigene [210]outinen umgelenkt. [196]er [210][197][211][197][212]
  512. 4335 [153]"und der (NULL)(NULL)right$ werden ueber die (NULL)ektoren
  513. 4340 print"und die [195][194][205]80 [205]arkierung ab $8000 neu
  514. 4345 [153]"gesetzt.":[141]140
  515. 4350 [153]"loadatnn peekatn(NULL)right$len-(NULL)ektoren wurden die (NULL)ektoren
  516. 4355 print"von $0300 bis $030b geaendert, wobei
  517. 4360 [153]"der (NULL)ektor fuer (NULL)mwandlung in (NULL)lartext
  518. 4365 print"bei $0306 nicht gebraucht wird, da fuer
  519. 4370 [153]"(NULL)right$(NULL)(NULL) eine komplett neue (NULL)outine ge-
  520. 4375 print"schrieben wurde.":gosub140
  521. 5300 a$="[218][213][211][193][205][205][197][206][198][193][211][211][213][206][199]":gosub150
  522. 5305 print"[200]ier einmal zusammengefasst die [197]igen-  schaften von @[194][193][211][201][195]:
  523. 5315 [153]" - komfortabler (NULL)oolkit
  524. 5320 print" - umfangreiches [196]isk-[194]asic
  525. 5325 [153]" - komfortabler valditor
  526. 5330 print" - eigener kleiner [205]onitor
  527. 5335 [153]" - einfache valrweiterungsmoeglichkeiten
  528. 5336 print" - [211][208][197][197][196][196][207][211] kompatibel !
  529. 5340 [153]"
  530.