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