home *** CD-ROM | disk | FTP | other *** search
/ Compute! Gazette 1993 January / 1993-01.d64 / calculease (.txt) < prev    next >
Commodore BASIC  |  2022-09-20  |  6KB  |  258 lines

  1. 10 goto80
  2. 20 fori=0ton
  3. 30 sysqq,u1,u2:printn-i;:print"[157] "
  4. 40 x=l+i*h
  5. 50 y(i)=val(re$)
  6. 60 next
  7. 70 return
  8. 80 poke56,48:clr:re$="":i=0:n=0:x=0:l=0:h=0:dimy(500):qq=828:u1=23:u2=25
  9. 90 s1=0:s2=0:s3=0
  10. 100 for r= 0 to 35:read a:poke qq+r,a:next:rem relocatable ml for crsr locating
  11. 110 data  032,253,174,032,158,183,134,002,032,253,174,032,158,183,138,168,166
  12. 120 data  002,224,025,176,033,192,040,176,029,024,032,240,255,096,162,014,076
  13. 130 data  139,227
  14. 140 gosub1250:rem    title
  15. 150 gosub1520:rem    setup smartval
  16. 160 gosub1900:rem    charcter define
  17. 170 gosub1370:rem    initialize
  18. 180 gosub2110:rem    settings
  19. 190 ifsb=1 then poke53265,peek(53265)and239:poke53280,1:rem blank screen
  20. 200 gosub480:rem     adjust intervel
  21. 210 gosub20:rem      pre calculate
  22. 220 sysqq,23,25:print"wait.."
  23. 230 on rule gosub610,670,740,820:rem calculations
  24. 240 ifsb=1 then poke53265,peek(53265) or16:poke53280,0
  25. 250 gosub900:rem     output
  26. 260 goto180
  27. 270 :
  28. 280 :
  29. 290 :
  30. 300 rem-limits etc.
  31. 310 print"[147]"
  32. 320 input"lower limit";l$
  33. 330 l=val(l$)
  34. 340 gosub1140:ifeithen310
  35. 350 return
  36. 360 :
  37. 370 :
  38. 380 print"[147]"
  39. 390 input"upper limit";u$
  40. 400 u=val(u$)
  41. 410 gosub1140:ifeithen380
  42. 420 return
  43. 430 :
  44. 440 :
  45. 450 print"[147](1 to 500)
  46. 460 [133]"number of divisions";n$:n1[178][197](n$):[139]n1[179]1  [176] n1[177]500 [167]450
  47. 470 n[178]n1
  48. 480 n[178][181](n[173]m)[172]m
  49. 490 [139]n[179]m[167]n[178]m
  50. 500 h[178](u[171]l)[173]n:[142]
  51. 510 :
  52. 520 :
  53. 530 [153]"loadrelation between y and x:":[153] "y=":[133] re$
  54. 540 x[178]u:check[178][197](re$)
  55. 550 [141]1140:[139]ei[167]530
  56. 560 [142]
  57. 570 :
  58. 580 :
  59. 590 :
  60. 600 [143]-trapezium
  61. 610 s0[178]y(0)[170]y(n)
  62. 620 [129]i[178]1[164]n[171]1:s1[178]s1[170]y(i):[130]
  63. 630 as[178](h[173]2)[172](s0[170]2[172]s1)
  64. 640 [142]
  65. 650 :
  66. 660 [143]-simpson
  67. 670 s0[178]y(0)[170]y(n)
  68. 680 [129]i[178]1[164]n[171]1[169]2:s1[178]s1[170]y(i):[130]
  69. 690 [129]i[178]2[164]n[171]2[169]2:s2[178]s2[170]y(i):[130]
  70. 700 as[178](h[173]3)[172](s0[170]4[172]s1[170]2[172]s2)
  71. 710 [142]
  72. 720 :
  73. 730 [143]-eight simp[167]on
  74. 740 s0[178]y(0)[170]y(n)
  75. 750 [129]i[178]1[164]n[171]1:[139]3[172][181](i[173]3)[178]i[167]s1[178]s1[170]y(i):[137]770
  76. 760 s2[178]s2[170]y(i)
  77. 770 [130]i
  78. 780 as[178]( 3[172]h[173]8)[172](s0[170]3[172]s2[170]2[172]s1)
  79. 790 [142]
  80. 800 :
  81. 810 [143]-weddle
  82. 820 [129]i[178]0[164]n[171]1[169]6
  83. 830 s[178]y(i)[170]5[172]y(i[170]1)[170]y(i[170]2)[170]6[172]y(i[170]3)[170]y(i[170]4)[170]5[172]y(i[170]5)[170]y(i[170]6):s0[178]s0[170]s
  84. 840 [130]i
  85. 850 as[178](3[172]h[173]10)[172]s0
  86. 860 [142]
  87. 870 :
  88. 880 :
  89. 890 [143]-output
  90. 900 [153]"load"
  91. 910 rp$[178]" "[170]re$[170]"  _x"[170]ms$[170]ms$
  92. 920 r1$[178][200](rp$,36)
  93. 930 r2$[178][202](rp$,37,30)
  94. 940 r3$[178][202](rp$,67,30)
  95. 950 ll[178][195](l$):lp[178]5[171]ll
  96. 960 xx[178]9:yy[178]1
  97. 970 [158]qq,xx[171] 1,yy   :[153]"!"
  98. 980 [158]qq,xx   ,yy   :[153]"atn"
  99. 990 [158]qq,xx[170] 1,yy   :[153]"atn"
  100. 1000 [158]qq,xx[170] 2,yy   :[153]"get"
  101. 1010 [158]qq,xx[171] 2,yy[170]1 :[153]u$
  102. 1020 [158]qq,xx[170] 3,yy[171]1 :[153]l$
  103. 1030 [158]qq,xx   ,yy[170]1 :[153]r1$
  104. 1040 [158]qq,xx[170]1 ,yy[170]6 :[153]r2$
  105. 1050 [158]qq,xx[170]2 ,yy[170]6 :[153]r3$
  106. 1060 as$[178]"= "[170][196](as):a0[178][195](as$):a0[178](40[171]a0)[173]2
  107. 1070 [158]qq,15,a0:[153] as$
  108. 1080 [158]qq,23,09:[153]"press any key to go on"
  109. 1090 [151]198,0:[146]198,1:[151]198,0:[142]
  110. 1100 :
  111. 1110 :
  112. 1120 :
  113. 1130 [143]-check error
  114. 1140 z[178][194](781)[172]2:[139]z[178]0[167]1180
  115. 1150 ea[178][194](41766[170]z)[170][194](41767[170]z)[172]256:[153]"";
  116. 1160 c[178][194](ea):[153][199](c[175]127);:[139]c[179]128[167]ea[178]ea[170]1:[137]1160
  117. 1170 [153]" error":ei[178]1:[141]1080:[142]
  118. 1180 ei[178]0:[142]:[143] no error
  119. 1190 :
  120. 1200 :
  121. 1210 :
  122. 1220 :
  123. 1230 :
  124. 1240 [143]-a
  125. 1250 [153]"load":[151]53281,0:[151]53280,0:[151]646,3
  126. 1260 [158]qq,3,15:[153]"calculease
  127. 1270 sysqq,4,15:print"==========
  128. 1280 [158]qq,8,1:[153]"program to evaluate definite integrals"
  129. 1290 [158]qq,10,13:[153]"by farid ahmad"
  130. 1300 [158]qq,23,14:[153]"please wait"
  131. 1310 [142]
  132. 1320 :
  133. 1330 :
  134. 1340 :
  135. 1350 :
  136. 1360 [143]-initialize
  137. 1370 sb$(0)[178]"off":sb$(1)[178]"on ":sb[178]0
  138. 1380 ru[178]4:u$[178]"(NULL)":u[178][197](u$):m[178]6
  139. 1390 l$[178]"(NULL)/2":l[178][197](l$)
  140. 1400 n$[178]"24":n[178][197](n$):n1[178]n
  141. 1410 re$[178]"sin(x) + cos(x) + x^2 + 3*x + 9
  142. 1420 gosub480
  143. 1430 for a =1 to 4:readia$(a):next
  144. 1440 rem dimy(500)
  145. 1450 m1$="lower limit is greater than upper limit[159]"
  146. 1460 for r =1to39:ms$=ms$+" ":mu$=mu$+"-":ml$=ml$+"[198]":next
  147. 1470 return
  148. 1480 :
  149. 1490 :
  150. 1500 :
  151. 1510 rem-poke smart val
  152. 1520 sa=49152:rem starting address (relocatable)
  153. 1530 h1=int((sa+13)/256):l1=(sa+13)-h1*256
  154. 1540 h2=int((sa+150)/256):l2=(sa+150)-h2*256:cs=0
  155. 1550 forad=satosa+206:readml:cs=cs+ml:pokead,ml:next
  156. 1560 ifcs<>23175thenprintchr$(147)"*** error in data statements ***":end
  157. 1570 pokesa+5,l1:pokesa+9,h1:pokesa+133,l2:pokesa+138,h2:rem relocate ml
  158. 1580 syssa
  159. 1590 return
  160. 1600 data169,076,133,124,169,013,133,125
  161. 1610 data169,192,133,126,096,141,255,003
  162. 1620 data104,141,252,003,104,141,253,003
  163. 1630 data072,173,252,003,072,201,217,208
  164. 1640 data007,173,253,003,201,183,240,011
  165. 1650 data  173,255,003,201,058,176,003,076
  166. 1660 data128,000,096,104,169,220,072,186
  167. 1670 data142,254,003,165,113,141,248,003
  168. 1680 data165,114,141,249,003,162,079,189
  169. 1690 data000,002,157,167,003,202,016,247
  170. 1700 data056,165,036,229,122,168,162,023
  171. 1710 data201,081,176,073,169,000,141,013
  172. 1720 data003,153,000,002,136,177,122,153
  173. 1730 data000,002,136,016,248,169,000,133
  174. 1740 data122,169,002,133,123,032,121,165
  175. 1750 data173,000,003,141,250,003,173,001
  176. 1760 data003,141,251,003,169,150,141,000
  177. 1770 data003,169,192,141,001,003,032,115
  178. 1780 data000,032,138,173,162,000,173,250
  179. 1790 data003,141,000,003,173,251,003,141
  180. 1800 data001,003,173,013,003,138,141,013
  181. 1810 data003,240,006,169,000,133,097,133
  182. 1820 data102,173,248,003,133,113,173,249
  183. 1830 data003,133,114,162,079,189,167,003
  184. 1840 data157,000,002,202,016,247,169,000
  185. 1850 data133,013,174,254,003,154,096
  186. 1860 :
  187. 1870 :
  188. 1880 :
  189. 1890 rem-new characters
  190. 1900 c=6:poke53272,(peek(53272)and240)or2*c
  191. 1910 s=53248:e=55296:nc=12288
  192. 1920 poke56333,127:poke1,51
  193. 1930 l0=e-s:en=l0+nc
  194. 1940 a%=l0/256:a=l0-256*a%:b%=(en-a)/256:b=en-256*b%-a:c%=(e-a)/256
  195. 1950 c=e-256*c%-a
  196. 1960 poke781,a%+1:poke782,a:poke90,c:poke91,c%:poke88,b:poke89,b%:sys41964
  197. 1970 poke1,55:poke56333,129
  198. 1980 reada:ifa=-1then return:rem----exit
  199. 1990 fori=0to7:readb
  200. 2000 poke12288+a*8+i,b
  201. 2010 next:goto1980
  202. 2020 data033,000,000,014,031,025,024,024,024
  203. 2030 data065,024,024,024,024,024,024,024,024
  204. 2040 data094,000,000,254,124,108,110,231,000
  205. 2050 data097,024,024,024,152,248,112,000,000
  206. 2060 data024,000,000,102,060,024,060,230,000
  207. 2070 data031,006,006,006,062,102,102,063,000
  208. 2080 data-1
  209. 2090 :
  210. 2100 :
  211. 2110 rem-z
  212. 2120 s0=0:s1=0:s2=0
  213. 2130 print"[147]"
  214. 2140 xx=6
  215. 2150 sysqq,00,3:print"           calculease           "
  216. 2160 sysqq,xx,3:print"s[146]creen blank        :"
  217. 2170 sysqq,xx+1,0:printmu$
  218. 2180 sysqq,xx+2,3:print"i[146]ntegration rule    :"
  219. 2190 sysqq,xx+3,3:print"n[146]umber of divisions :"
  220. 2200 sysqq,xx+4,3:print"l[146]ower limit         :"
  221. 2210 sysqq,xx+4,25:printl$
  222. 2220 sysqq,xx+5,3:print"u[146]pper limit         :"
  223. 2230 sysqq,xx+5,25:printu$
  224. 2240 sysqq,xx+6,0:printmu$
  225. 2250 sysqq,xx+7,3:print"f[146]unction..."
  226. 2260 sysqq,xx+9,00:print"y= ";re$
  227. 2270 rem   sysqq,16,00:printmu$
  228. 2280 sysqq,23,3:print"press return to evaluate integral"
  229. 2290 sysqq,xx,25:printsb$(sb)
  230. 2300 sysqq,xx+2,25:printia$(ru)
  231. 2310 sysqq,xx+3,24:print n;"[157] "
  232. 2320 poke198,0:wait198,1
  233. 2330 get t1$
  234. 2340 if t1$<>"i"then2380
  235. 2350 ru=ru+1:ifru>4thenru=1
  236. 2360 m=ru:if m=4then m=6
  237. 2370 gosub470: goto2300
  238. 2380 ift1$="n"thengosub450:goto2120
  239. 2390 ift1$="f"thengosub530:goto2120
  240. 2400 ift1$="l"thengosub310:goto2120
  241. 2410 ift1$="u"thengosub380:goto2120
  242. 2420 ift1$<>"s"then2450
  243. 2430 sb=sb+1:ifsb=2thensb=0
  244. 2440 goto2290
  245. 2450 ift1$<>chr$(13)then2320
  246. 2460 if l =<u then2500
  247. 2470 sysqq,21,0:print m1$:sysqq,23,0:printms$:gosub1080
  248. 2480 sysqq,21,0:print ms$
  249. 2490 goto2280
  250. 2500 sysqq,23,3:print"            working...            "
  251. 2510 return
  252. 2520 :
  253. 2530 data "trapezium  "
  254. 2540 data "simpson    "
  255. 2550 data "3/8 simpson"
  256. 2560 data "weddle's   "
  257. 2570 :
  258.