home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Run Magazine ReRun 1985 Spring
/
rerun-1985-spring.d64
/
calcaid64
(
.txt
)
next >
Wrap
Commodore BASIC
|
2022-09-20
|
12KB
|
487 lines
1 dimda$(25,29),fc$(25,29),cu$(2),da(25,29)
5 cu$(1)=chr$(18)+" "+chr$(146)+chr$(157):cu$(2)=" "+chr$(157)
6 pa=1:z=0:p=100
20 gosub10000
30 printchr$(19);
40 fort=1to10:getg$:next
50 in$=""
52 de=0
54 printcu$(pa);
56 de=de+1
60 getg$
61 ifg$=chr$(34)then60
62 ifg$<>""then70
65 ifde<24then54
68 pa=3-pa
70 ifg$=chr$(29)thenifc<27thenc=c+1:gosub10000:goto30
71 ifg$=chr$(145)thenifrd>0thenrd=rd-1:gosub10000:goto30
72 ifg$=chr$(19)thenc=0:rd=0:goto9900
73 ifg$="_"then22000
74 ifg$=chr$(147)then350
75 ifg$=chr$(17)thenifrd<6thenrd=rd+1:gosub10000:goto30
76 ifg$=chr$(29)org$=chr$(145)org$=chr$(17)then60
77 ifg$=chr$(136)and(peek(53281)and15)<15thenpoke53281,(peek(53281)+1):goto60
78 ifg$=chr$(136)and(peek(53281)and15)=15thenpoke53281,0:goto60
79 ifg$=chr$(137)then400
80 ifg$=chr$(157)thenifc>0thenc=c-1:gosub10000:goto30
81 ifg$=chr$(133)thenprintchr$(18);"f";chr$(146);:goto140
82 ifg$=chr$(139)then13000
83 ifg$=chr$(140)and(peek(53280)and15)=15thenpoke53280,0:goto60
84 ifg$=chr$(140)and(peek(53280)and15)<15thenpoke53280,peek(53280)+1:goto60
85 ifg$=chr$(134)then24000
86 ifg$=chr$(138)then25000
87 ifg$=chr$(135)then13400
90 ifg$=chr$(13)then300
100 ifg$=chr$(20)then200
125 iflen(in$)>30then52
130 printg$;
140 in$=in$+g$
199 goto52
200 iflen(in$)=0then60
210 iflen(in$)=1thenprintchr$(20);:goto50
220 in$=left$(in$,len(in$)-1):printchr$(20);
230 goto60
300 ifleft$(in$,1)<"a"orleft$(in$,1)>"z"then20000
305 ifmid$(in$,2,1)<"0"ormid$(in$,2,1)>"9"then20000
306 ifmid$(in$,3,1)<"0"ormid$(in$,3,1)>":"then20000
310 ifval(mid$(in$,2,2))<0orval(mid$(in$,2,2))>29then20000
320 ifmid$(in$,3,1)<>":"andmid$(in$,4,1)<>":"then20000
330 goto500
350 gosub12500:ifg$="n"then9900
355 gosub12550
360 forr=0to25:forcd=0to29
370 da$(r,cd)="":fc$(r,cd)="":da(r,cd)=0
380 next:next:z=0
390 goto9900
400 printchr$(19);:print
410 printchr$(18);" maximum precision (0 to 6) press key "
420 getg$:ifg$<"0"org$>"6"then420
430 p=10^val(g$)
440 goto9900
500 gosub12000
520 ifmid$(in$,3,1)=":"thens=4:goto540
530 ifmid$(in$,4,1)=":"thens=5
540 ifmid$(in$,s,1)=chr$(133)then2000
550 ifmid$(in$,s,1)=""thenda$(r,cd)="":da(r,cd)=0:goto9900
1450 iffc$(r,cd)<>""thengoto11000
1500 t$=mid$(in$,s,1)
1510 ift$<"0"ort$>"9"thenift$<>"+"andt$<>"-"then1560
1512 da(r,cd)=val(mid$(in$,s,19))
1513 da$(r,cd)=mid$(in$,s,19)
1515 iflen(da$(r,cd))=9then1590
1518 iflen(da$(r,cd))>9then1580
1520 forx=1to9-len(da$(r,cd))
1530 da$(r,cd)=" "+da$(r,cd)
1540 next
1545 goto9900
1560 da$(r,cd)=mid$(in$,s,9):goto9900
1580 da$(r,cd)="*********"
1590 goto9900
2000 ifmid$(in$,s+1,1)="t"andlen(in$)=s+1then2010
2005 goto2020
2010 ifcd<>0andr<>0then20000
2015 z=1:ct=cd:rt=0:goto9900
2020 ifmid$(in$,s+1,1)="o"andlen(in$)=s+1then2030
2025 goto2040
2030 z=0:goto9900
2040 ifmid$(in$,s+1,3)="sum"thengosub14000:goto9900
2050 ifmid$(in$,s+1,3)="min"thengosub14000:goto9900
2060 ifmid$(in$,s+1,3)="max"thengosub14000:goto9900
2070 ifmid$(in$,s+1,3)="avg"thengosub14000:goto9900
2080 ifmid$(in$,s+1,3)="cop"thengosub14000:gosub26010:goto2085
2081 goto2110
2085 ifr1=r2then2100
2088 forx=r1tor2
2090 da(x,c1)=da(r,cd):da$(x,c1)=da$(r,cd)
2095 next:goto9900
2100 forx=c1toc2
2103 da(r1,x)=da(r,cd):da$(r1,x)=da$(r,cd)
2106 next:goto9900
2110 ifmid$(in$,s+1,1)="c"andlen(in$)=s+1then2120
2115 goto2130
2120 gosub12500
2125 ifg$="n"thengoto9900
2128 da(r,cd)=0:da$(r,cd)="":fc$(r,cd)="":goto9900
2130 ifmid$(in$,s+1,1)="v"andlen(in$)=s+1then2140
2135 goto2150
2140 gosub12600:goto9900
2145 goto9900
2150 ifmid$(in$,s+1,1)="j"andlen(in$)=s+1then2160
2155 goto2500
2160 c=val(mid$(in$,2,2)):ifc>27thenc=27
2162 ifasc(left$(in$,1))>84thenrd=6
2163 ifasc(left$(in$,1))<=84thenrd=0
2165 goto9900
2500 ifmid$(in$,s+1,1)<"a"ormid$(in$,s+1,1)>"z"then20000
2505 ifmid$(in$,s+2,1)<"0"ormid$(in$,s+2,1)>"9"then20000
2510 ifval(mid$(in$,s+2,2))<0orval(mid$(in$,s+2,2))>29then20000
2580 t$=mid$(in$,s+3,1)
2590 ift$="+"ort$="-"ort$="*"ort$="/"ort$="^"then2650
2600 t$=mid$(in$,s+4,1)
2610 ift$="+"ort$="-"ort$="*"ort$="/"ort$="^"then2670
2620 goto20000
2650 s1=s+4:goto2680
2670 s1=s+5
2680 ifmid$(in$,s1,1)<"a"ormid$(in$,s1,1)>"z"then3000
2690 ifmid$(in$,s1+1,1)<"0"ormid$(in$,s1+1,1)>"9"then20000
2700 ifval(mid$(in$,s1+1,2))<0orval(mid$(in$,s1+1,2))>29then20000
2710 goto3100
3000 ift$="/"andval(mid$(in$,s1,19))=0then20000
3100 fc$(r,cd)=mid$(in$,s,19)
9900 gosub10000
9910 printchr$(19);
9999 goto50
10000 printchr$(147)
10010 printchr$(18);" "
10015 ifz=1thenprinttab(5);ct;tab(16);c+1;tab(27);c+2:goto10021
10020 printtab(5);c;tab(16);c+1;tab(27);c+2
10021 ifz=1then10026
10022 printchr$(65+rd);:printtab(2);da$(rd,c);
10023 printtab(13);da$(rd,c+1);
10024 printtab(24);da$(rd,c+2)
10025 goto10030
10026 printchr$(65+rt);:printtab(2);da$(rt,ct);
10027 printtab(13);da$(rt,c+1);
10028 printtab(24);da$(rt,c+2)
10030 forr=rd+1tord+19
10040 printchr$(65+r);
10045 ifz=1thenprinttab(2);da$(r,ct);:goto10060
10050 printtab(2);da$(r,c);
10060 printtab(13);da$(r,c+1);
10070 printtab(24);da$(r,c+2)
10080 next
10090 return
11000 printchr$(19);:print
11005 printchr$(18);"protected formula ";fc$(r,cd)
11010 getg$:ifg$=""then11010
11020 goto20
12000 r=asc(left$(in$,1))-65
12010 cd=val(mid$(in$,2,2))
12020 return
12500 printchr$(19);:print
12505 printchr$(18);" are you sure press 'y' or 'n' "
12510 getg$:ifg$<>"y"andg$<>"n"then12510
12520 return
12550 printchr$(19);:print
12555 printchr$(18);" working please wait... "
12560 return
12600 printchr$(19);:print
12605 printchr$(18);
12606 iffc$(r,cd)<>""thenprint"form. ";fc$(r,cd);" - ";
12607 print"val.";da(r,cd)
12610 getg$:ifg$=""then12610
12620 return
13000 printchr$(19);:print
13005 printchr$(18);"press 'space' to print-'return' to exit"
13010 getg$:ifg$<>chr$(32)andg$<>chr$(13)then13010
13020 ifg$=chr$(13)then9900
13030 open4,4
13040 r=0:cd=0
13050 iffc$(r,cd)<>""then13080
13060 cd=cd+1:ifcd=30thencd=0:r=r+1:ifr=26then13300
13070 goto13050
13080 print#4,chr$(r+65);cd;
13090 print#4,chr$(16)"06";fc$(r,cd);
13100 cd=cd+1:ifcd=30thencd=0:r=r+1:ifr=26then13300
13110 iffc$(r,cd)<>""then13140
13120 cd=cd+1:ifcd=30thencd=0:r=r+1:ifr=26then13300
13130 goto13110
13140 print#4,chr$(16)"20";chr$(r+65);cd;
13150 print#4,chr$(16)"26";fc$(r,cd);
13160 cd=cd+1:ifcd=30thencd=0:r=r+1:ifr=26then13300
13170 iffc$(r,cd)<>""then13200
13180 cd=cd+1:ifcd=30thencd=0:r=r+1:ifr=26then13300
13190 goto13170
13200 print#4,chr$(16)"40";chr$(r+65);cd;
13210 print#4,chr$(16)"46";fc$(r,cd);
13220 cd=cd+1:ifcd=30thencd=0:r=r+1:ifr=26then13300
13230 iffc$(r,cd)<>""then13260
13240 cd=cd+1:ifcd=30thencd=0:r=r+1:ifr=26then13300
13250 goto13230
13260 print#4,chr$(16)"60";chr$(r+65);cd;
13270 print#4,chr$(16)"46";fc$(r,cd)
13280 goto13060
13300 print#4,chr$(10)
13310 print#4
13320 close4:goto9900
13400 printchr$(147):print" print spreadsheet"
13410 print:print
13420 print" enter the top left cell
13430 [153]" to be printed or
13440 print" press 'return' to exit"
13450 print:g$=""
13460 input" ";g$:ifg$=""then9900
13465 ifg$<"a0"org$>"z9"then13400
13467 r1=asc(left$(g$,1))-65:tc=val(mid$(g$,2)):iftc>29then13400
13470 printchr$(147):print" print spreadsheet"
13472 print:print
13474 print" enter the bottom right cell
13476 [153]" to be printed or
13478 print" press 'return' to exit"
13480 print:t$=""
13482 input" ";t$:ift$=""then9900
13484 ift$<"a0"ort$>"z9"then13470
13486 r2=asc(left$(t$,1))-65:t=val(mid$(t$,2)):ift<tcthen13470
13487 ifr2<r1then13470
13488 gosub13700
13490 t$=chr$(16)
13500 open4,4
13505 print#4,chr$(10)
13525 forr=r1tor2
13535 iftc>tthen13700
13540 print#4,t$;"03";da$(r,tc);
13545 iftc+1>tthen13600
13550 print#4,t$;"14";da$(r,tc+1);
13555 iftc+2>tthen13600
13560 print#4,t$;"25";da$(r,tc+2);
13565 iftc+3>tthen13600
13570 print#4,t$;"36";da$(r,tc+3);
13575 iftc+4>tthen13600
13577 print#4,t$;"47";da$(r,tc+4);
13580 iftc+5>tthen13600
13585 print#4,t$;"58";da$(r,tc+5);
13590 iftc+6>tthen13600
13595 print#4,t$;"69";da$(r,tc+6);
13600 print#4,chr$(13);:next
13610 tc=tc+7:iftc>tthenprint#4:close4:goto9900
13620 printchr$(147):print:print
13630 print" ...... more to come ......"
13635 print
13640 print" please align printer paper"
13650 print"