home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1986 May / 64er_Magazin_86-05_1986_Markt__Technik_de.d64 / hypra-basic (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  6KB  |  190 lines

  1. 5 iffg<>0then10
  2. 7 fg=1:load"basic .ass",8,1
  3. 10 dima%(100):an=1:md=1:poke53280,0:poke53281,0:f=1:poke646,f:mp=12600
  4. 15 poke55,56:poke56,49
  5. 20 hl$="                                       "
  6. 30 h$="[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][192]"
  7. 40 rem****hauptmenue*******
  8. 50 printchr$(147)tab(9)" hauptmenue [146] hypra-basic":printh$:an=1:md=1
  9. 60 print"folgende optionen sind moeglich:":printh$:print
  10. 70 printtab(5)"[f1][146] erweiterung erstellen
  11. 80 [153][163]5)"[f3]wait erweiterung abspeichern
  12. 90 printtab(5)"[f5][146] parameter eingeben
  13. 100 [153][163]5)"[f7]wait parameter anzeigen"
  14. 110 [153][163]5)"[f2]wait protokoll":[153]:[153]h$
  15. 115 [153][163]10)"bitte waehlen sie !!"
  16. 120 [151]198,0:[146]198,1:[161]s$:s[178][198](s$)
  17. 130 [139]s[179]133[176]s[177]137[167]120
  18. 140 s[178]s[171]132
  19. 150 [145]s[141]210,410,600,800,11000
  20. 160 [137]50
  21. 200 [143]*****erweiterungerstellen***
  22. 210 [141]1010
  23. 220 [151]211,8:[151]214,0:[158]58640:[153]"sind sie sicher ? (j/n)"
  24. 230 [151]198,0:[146]198,1:[161]s$:[139]s$[179][177]"j"[176]an[178]0[167][142]
  25. 240 [141]10010
  26. 250 [153][199](147)"sie muessen jetzt zwei speicherbereiche"
  27. 260 [153]"auswaehlenen":[153]:[153]"1) bereich fuer befehlstabelle.dieser"
  28. 270 [153][163]3)"darf nur im 'normalen ram' liegen.
  29. 280 print:print"2) bereich fuer die erweiterung.hier
  30. 290 [153][163]3)"ist der speicherbereich beliebig.":[153]
  31. 292 [153]"falls beide programmteile nacheinander"
  32. 293 [153]"stehen sollen,bitte bei 'befehle' nur"
  33. 294 [153]"<return> druecken.":[153]h$
  34. 295 [153]"die befehlstabelle braucht";hg" bytes":[153]h$
  35. 300 [133]"1) tabelle:";sd$:sd[178][197](sd$):[139]sd[178]0[167]250
  36. 305 [153][163]12)sd[170]hg
  37. 310 [133]"on2) befehle:";ma$:ma[178][197](ma$):ms[178]ma
  38. 320 [139]ma[178]0[167][142]
  39. 330 [153][199](147)"erweiterung wird generiert":[153]
  40. 340 la[178]sd[170]162[170]ha:[141]10410
  41. 350 [129]ki[178]1[164]an:mo%[178]a%(ki):[153]mo%,
  42. 360 hm[178][181](mo%[173]70)[170]1:[139]md[179][177]hm[167][141]10210
  43. 370 [141]10660:[130]:[142]
  44. 400 [143]*****programmabspeichern**
  45. 410 [153][199](147)[163]10)"erweiterung speichern":[153]h$
  46. 420 [153]"beim abspeichern koennen zwei verschie- dene";
  47. 430 [153]" files abgelegt werden.":[153]
  48. 440 [153]"1) befehlstabelle"
  49. 450 [153]"2) module":[153]
  50. 460 [153]"dies ist erforderlich,wenn beide pro-"
  51. 470 [153]"grammteile unabhaengig voneinander
  52. 480 print"existieren. falls sie beide programme"
  53. 490 print"gemeinsam generiert haben, geben sie un-";
  54. 500 print"ter module einen leerstring ein.":printh$
  55. 510 input"tabelle:";na$
  56. 520 input"befehle:";nb$:printh$
  57. 525 print"sind sie sicher,dass die richtige dis- "
  58. 527 print"kette im laufwerk ist? (j/n)"
  59. 528 poke198,0:wait198,1:geta$:ifa$="n"thenreturn
  60. 530 ifnb$=""thensys(mp+362)"@:"+na$,8,sd,ma+1:return
  61. 540 sys(mp+362)"@:"+na$,8,sd,bt+1
  62. 550 sys(mp+229)ms,ma+1,mp+2000
  63. 560 close1:open1,8,1,"@:"+nb$:print#1,chr$(ms-int(ms/256)*256);chr$(ms/256);
  64. 570 n=ma+1-ms
  65. 580 fori=0ton-1:print#1,chr$(peek(mp+2000+i));:next:close1
  66. 590 return
  67. 600 rem*******parametereingeben***
  68. 610 printchr$(147)tab(10)"parameter eingeben":printh$
  69. 615 input"modulnummer     :";mo$
  70. 620 input"wieviele befehle:";ab
  71. 630 printh$
  72. 640 fori=1toab
  73. 650 poke211,0:poke214,5:sys58640:printi"[157]) ";:input"name:";na$(i):printh$
  74. 660 input"    startadresse:";as$(i)
  75. 670 input"    endadresse  :";ae$(i)
  76. 680 input"    datenbytes  :";ad$(i)
  77. 690 printh$:next
  78. 700 printtab(10)"sind sie sicher (j/n)"
  79. 710 poke198,0:wait198,1:geta$:ifa$="n"thenreturn
  80. 720 close1:open1,8,1,"@:"+mo$+"modul,s"
  81. 730 print#1,str$(ab)
  82. 740 fori=1toab:print#1,na$(i):print#1,as$(i):print#1,ae$(i):print#1,ad$(i)
  83. 750 next:close1:return
  84. 800 rem******parameteranzeigen****
  85. 810 printchr$(147)tab(10)"parameter anzeigen":printh$
  86. 820 input"von modulnummer:";m1
  87. 830 input"bis modulnummer:";m2:printh$
  88. 840 fork=m1tom2:poke214,5:sys58640
  89. 845 fori=1to15:printhl$:next
  90. 850 poke211,0:poke214,5:sys58640
  91. 860 mo%=k:gosub10530:print"modulnummer:"k:print"anzahl der befehle:"ab:printh$
  92. 870 fori=1toab
  93. 880 poke214,9:sys58640:printi"[157]) name:"na$(i);left$(hl$,10):print
  94. 890 print"startadresse:"as(i);left$(hl$,10)
  95. 900 print"endadresse  :"ae(i);left$(hl$,10)
  96. 910 print"datenbytes  :"ad(i);left$(hl$,10)
  97. 930 printh$:printtab(6)"weiter mit beliebiger taste"
  98. 940 poke198,0:wait198,1:next:next:return
  99. 999 end
  100. 1000 rem*****moduleauswaehlen*****
  101. 1010 printchr$(147)tab(10)"module auswaehlen!"
  102. 1020 printh$
  103. 1040 print"bitte modulnummern eingeben:"
  104. 1050 printh$
  105. 1060 fori=1to19:printhl$:next
  106. 1070 printh$:printtab(5)" e [146] = ende          f [146] = fehler";
  107. 1080 poke211,30:poke214,2:sys58640:poke19,1:inputmn$:poke19,0:print
  108. 1090 ifleft$(mn$,1)="e"thenan=an-1:return
  109. 1100 ifleft$(mn$,1)="f"andan>1thenan=an-1:mn$="   ":goto1130
  110. 1110 iflen(mn$)>3orval(mn$)=0then1080
  111. 1120 a%(an)=val(mn$)
  112. 1130 z=int(an/10)+4:s=(an-(z-4)*10)*4:poke211,s:poke214,z:sys58640:printmn$
  113. 1150 ifmn$<>"   "thenan=an+1
  114. 1160 goto1080
  115. 10000 rem****laengedecodebestimmen*
  116. 10010 hg=0:ha=0:ab=0:zb=0:forji=1toan
  117. 10015 hm=int(a%(ji)/70)+1:ifhm<>mdthengosub10210
  118. 10020 close1:open1,8,0,mid$(str$(a%(ji)),2,4)+"modul,s"
  119. 10030 input#1,a$:h=val(a$):zb=zb+h
  120. 10040 forj=1toh
  121. 10050 input#1,h1$,h2$(j),h3$(j),h4$(j):ha=ha+len(h1$)+6
  122. 10060 next
  123. 10070 hb=(val(h3$(h))+val(h4$(h)))-val(h2$(1)):ifhb>hgthenhg=hb
  124. 10090 close1:next
  125. 10100 hg=int((hg/256)+1)*256:hg=hg+ha+170:return
  126. 10200 rem****moduldiskausgeben****
  127. 10210 h1=peek(211):h2=peek(214)
  128. 10212 forx=1984to2023:pokex-1156,peek(x):pokex,32:x1=x1+1:next
  129. 10215 poke211,0:poke214,24:sys58640
  130. 10220 printtab(3)"[152]bitte moduldisk nr."hm" einlegen! ";
  131. 10230 md=hm:poke646,f:poke198,0:wait198,1
  132. 10240 forx=1984to2023:pokex,peek(x-1156):pokex+54272,f:next:poke211,h1
  133. 10250 poke214,h2:sys58640:return
  134. 10300 rem******programmladen*****
  135. 10310 hi=int(la/256):lo=la-256*hi
  136. 10330 sys(57812)na$,8,0:poke780,0:poke781,lo:poke782,hi:sys65493
  137. 10340 return
  138. 10400 rem******decoderoutineholen**
  139. 10410 h=la:la=sd:sys(mp+229)13025,13184,sd
  140. 10430 la=h:h=sd+11:hi=int(h/256):lo=h-256*hi:pokesd+1,lo:pokesd+6,hi
  141. 10440 h=sd+161:hi=int(h/256):lo=h-256*hi:pokesd+25,lo:pokesd+29,hi
  142. 10460 hi=int(la/256):lo=la-256*hi:pokesd+103,lo:pokesd+107,hi
  143. 10470 pokela-1,0:bt=sd+161:return
  144. 10500 rem*****parameterladen*****
  145. 10530 fl$=mid$(str$(mo%)+"modul,s,r",2,13)
  146. 10540 close2:open2,8,2,fl$
  147. 10550 input#2,a$:ab=val(a$)
  148. 10560 forji=1toab:input#2,na$(ji):input#2,a$:as(ji)=val(a$)
  149. 10570 input#2,a$:ae(ji)=val(a$)
  150. 10580 input#2,a$:ad(ji)=val(a$)
  151. 10590 next
  152. 10600 close2:return
  153. 10610 rem****befehlstabellebearbeiten**
  154. 10615 yy=len(na$(i)):pokebt,yy
  155. 10620 fork=1toyy:pokebt+k,asc(mid$(na$(i),k,1)):next:bt=bt+k
  156. 10630 hi=int(pz/256):lo=pz-256*hi:pokebt,lo:pokebt+1,hi
  157. 10635 hi=int(ma/256):lo=ma-256*hi:pokebt+2,lo:pokebt+3,hi
  158. 10636 le=ae(ab)+ad(ab)-as(1):pokebt+4,int(le/256):bt=bt+5
  159. 10640 return
  160. 10650 rem**********verschieb**********
  161. 10660 gosub10530:a$=str$(mo%)+"erw .ass":na$=mid$(a$,2,13):gosub10310:pz=la
  162. 10670 n1=pz:fori=1toab:gosub10610:n=as(i)
  163. 10680 sysmp,pz:a=peek(247)
  164. 10690 ifa<>3then10740
  165. 10700 a1=peek(249)+256*peek(250)
  166. 10710 ifa1<as(1)ora1>ae(ab)+ad(ab)then10750
  167. 10720 a1=a1-as(1):a1=n1+a1:hi=int(a1/256):lo=a1-256*hi
  168. 10730 pokepz+1,lo:pokepz+2,hi
  169. 10740 ifa=0thena=1
  170. 10750 pz=pz+a:n=n+a:ifn<>ae(i)+1then10680
  171. 10760 pz=pz+ad(i):next
  172. 10770 sys(mp+229)la,pz,ma
  173. 10780 ma=ma+le+1:return
  174. 11000 rem******protokoll********
  175. 11010 printchr$(147)tab(12)"protokoll":printh$
  176. 11020 gn=3
  177. 11025 close1:open1,gn
  178. 11030 print#1,"erweiterung hypra-basic version 1.1":print#1,h$
  179. 11040 print#1,"anzahl der befehle:         ";zb
  180. 11050 print#1,"startadresse befehlstabelle:";sd
  181. 11060 print#1,"startadresse der module:    ";ms:print#1,h$
  182. 11070 print#1,"bytes fuer tabelle:         ";hg
  183. 11080 print#1,"bytes fuer befehle:         ";ma-ms:print#1,h$
  184. 11082 print#1,"die erweiterung enthaelt folgende module":print#1
  185. 11085 fori=1toki-1:print#1,a%(i);:next:print#1
  186. 11090 iffk=1thenfk=0:gn=3:close1:return
  187. 11100 print#1,h$:print#1,"  ausgabe auf drucker (j/n)"
  188. 11110 poke198,0:wait198,1:geta$:ifa$="n"thenclose1:return
  189. 11120 gn=4:fk=1:close1:goto11025
  190.