home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
genie-commodore-file-library
/
C64Software
/
COLUMN-CALC
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2019-04-13
|
7KB
|
263 lines
5 REM"ADAPTED BY STEVEN DARNOLD, P.O. BOX 201 ALEXANDRA, NEW ZEALAND
8 [151]53280,11:[151]53281,11
9 [134]V(15,60),X$(50),V$(15,60):CR$[178]"LOAD":CT$[178]"OPEN ******* CALCULATING *******CONT"
10 [153]"RETURNLOADOPENC O L U M N C A L C U L A T O R":C%[178]1:R%[178]1
20 [153]"CONT VCONTIEW COLUMNS
30 PRINT" E[154]NTER DATA
40 [153]" DCONTO CALCULATIONS
50 PRINT" Z[154]ERO MATRIX
60 [153]" GCONTET DATA FROM DISK
70 PRINT" S[154]AVE DATA TO DISK
80 [153]" MCONTEMORY CHECK
85 PRINT" P[154]RINT DATA ON PRINTER"
87 PRINT" Q[154]UIT"
90 PRINT"[159]WHAT IS YOUR CHOICE ?":Y=0
95 GETAN$:IFAN$=""THEN95
96 IF AN$="Q"THEN PRINT"[147]":END
97 FORX=1TO8:IFAN$=MID$("VEDZGSMP",X,1)THENY=X
98 NEXT:ONYGOSUB230,1000,2020,120,702,802,940,12010:GOTO10
120 PRINTCR$:FORX=1TO15
130 FORY=1TO50
140 V(X,Y)=0
150 NEXTY
160 NEXTX
165 RETURN
190 INPUT"[147]ENTER COLUMN (1 TO 13):";C%
200 IFC%<1ORC%>13THENPRINT"[147]";:GOTO190
210 PRINT:INPUT"ENTER ROW (1 TO 31):";R%
220 IFR%<1ORR%>31THEN210
230 PRINT"[147]";:GOSUB500
240 PRINT"";
250 FORY=R%TOR%+19
260 PRINTTAB(9);
270 FORX=C%TOC%+2
280 X$=STR$(V(X,Y))
290 PRINTSPC(10-LEN(X$));X$;
300 NEXT
310 PRINTCHR$(13);
320 NEXT
325 PRINT" ";
330 PRINT"U[154]P D[154]OWN L[154]EFT R[154]IGHT J[154]UMP M[154]ENU";
340 GETC$:IFC$=""THEN340
360 IFC$="U"THENR%=R%-10:PRINTCHR$(13);"";:GOTO220
380 IFC$="D"THENR%=R%+10:PRINTCHR$(13);"";:GOTO220
400 IFC$="L"THENC%=C%-2:GOTO470
420 IFC$="R"THENC%=C%+2:GOTO470
440 IFC$="J"THEN190
450 IFC$="M"THEN10
460 GOTO340
470 IFC%<1ORC%>13THENPRINTCHR$(13);:GOTO190
480 GOTO230
500 PRINTTAB(9);
510 FORI=1TO3
520 PRINT"[154] COLUMN[146]";
530 NEXT
540 PRINTCHR$(13);TAB(9);
550 FORI=C%TOC%+2
560 S%=7:IFI<10THENS%=8
570 PRINTSPC(S%);"";STR$(I);"[146]";
580 NEXT
590 PRINTCHR$(13);
600 FORI=R%TOR%+19
610 S$="":IFI<10THENS$=" "
620 PRINTTAB(2);"[154]ROW"S$STR$(I);"[146][159]"
630 NEXT
640 RETURN
702 INPUT"[147]WHAT IS NAME OF FILE YOU WANT";FL$
710 PRINT"[147]LOOKING FOR ";FL$
720 OPEN1,8,3,(FL$)
725 PRINT"FOUND ";FL$;" .....LOADING"
730 FORX=1TO12
740 FORY=1TO49
750 INPUT#1,V(X,Y)
760 NEXTY
770 NEXTX
780 PRINT"OK.....GOT DATA"
790 FORI=1TO1000:NEXTI
795 CLOSE1:RETURN
802 INPUT"[147]WHAT NAME FOR THIS FILE";FL$
840 OPEN1,8,3,(FL$)+",S,W"
850 FORX=1TO12
860 FORY=1TO49
870 PRINT#1,V(X,Y)
880 NEXTY
890 NEXTX
900 PRINT"OK.....DATA ON DISK"
910 FORI=1TO1000:NEXTI
920 CLOSE1:RETURN
940 PRINT" "FRE(A)"BYTES FREE
950 [129]I[178]1[164]1000:[130]I
960 [142]
1000 [153]"LOAD":[153]
1010 [133]"WHICH COLUMN (1-12)";K$
1020 CL[178][197](K$):[139]CL[179]1[176]CL[177]12[167]1000
1030 [139]CL[178]13[176]CL[178]14[176]CL[178]15[167][153]"RESERVED FOR TOTALS":[137]1010
1040 [133]"HOW MANY ROWS (1-50)";K$
1050 K[178][197](K$):[139]K[177]50[176]K[179]1[167]1040
1060 [153]:[153]"ROW","CURRENT","COLUMN";CL
1070 [129]Y[178]1[164]K
1080 [153]:[153]Y,V(CL,Y),:[133]"CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD";V:V(CL,Y)[178]V
1090 [130]Y
1100 [153]"CCONT FOR ANOTHER COLUMN MCONT FOR MENU
1110 GETD$:IFD$=""THEN1110
1120 IFD$="C"THEN1000
1130 RETURN
2020 PRINT"[147][159]YOU MAY CHOOSE ANY OF THE FOLLOWING"
2030 PRINT" 1[154] SUM DOWN COLUMNS
2040 [153]" 2CONT SUM ACROSS ROWS
2050 PRINT" 3[154] REPRODUCE ANY COLUMN
2060 [153]" 4CONT ADD-MULT-DIV-SUB AT ANY POINT
2070 PRINT" 5[154] AVERAGE ACROSS ROWS (DO 2[146] FIRST)
2080 [153]" 6CONT MAKE ROW % OF BASE ROW
2090 PRINT" 7[154] MAKE COLUMN % OF BASE COLUMN
2100 [153]" 8CONT SUM INDIVIDUAL COLUMNS
2110 PRINT" 9[154] SERIES OF CALCULATIONS
2120 [153]" MCONT RETURN TO MENU
2121 PRINT"[159] [163][163][163][163][163][163] [163][163] [163][163][163][163]
3500 [153]"WHICH ONE ?";
3510 [146]198,7:[161]AN$:[139]AN$[178]""[167]3510
3515 [139]AN$[178]"M"[167][142]
3520 [145][197](AN$)[141]4001,5010,6010,7010,8010,9010,10010,11010,11510
3530 [137]2020
4001 [153]"LOADDO YOU WISH TO DESIGNATE THE ROWS TO BE SUMMED?"
4002 [161]A$:[139]A$[178]""[167]4002
4003 [139]A$[178]"N"[167]S1[178]1:S2[178]49:[137]4005
4004 [133]"FIRST ROW";S1:[133]"LAST ROW";S2:[139]S1[177]S2[176]S1[179]0[176]S2[177]49[167]4001
4005 [153]CR$;CT$:[153]"SUM WILL BE STORED IN ROW"S2[170]1
4010 [129]X[178]1[164]14
4020 V(X,S2[170]1)[178]0
4030 [130]X
4040 [129]X[178]1[164]14
4050 [129]Y[178]S1[164]S2
4060 V(X,S2[170]1)[178]V(X,S2[170]1)[170]V(X,Y)
4070 [130]Y
4080 [130]X
4090 [142]
5010 [153]CR$;CT$:[153]"SUM WILL BE STORED IN COLUMN 13
5020 FORY=1TO48
5030 V(13,Y)=0
5040 NEXTY
5050 FORY=1TO48
5060 FORX=1TO12
5070 V(13,Y)=V(13,Y)+V(X,Y)
5080 NEXTX
5090 NEXTY
5100 RETURN
6010 INPUT"[147]DUPLICATE WHICH COLUMN";CX
6015 INPUT"PUT IT IN WHICH COLUMN";X
6030 FORY=1TO50
6040 V(X,Y)=V(CX,Y)
6050 NEXTY
6060 RETURN
7010 Y=0
7020 PRINT"[147]A[146]DD M[146]ULTIPLY S[146]UBTRACT D[146]IVIDE
7030 [161]A$:[139]A$[178]""[167]7030
7040 [129]X[178]1[164]4:[139]A$[178][202]("AMSD",X,1)[167]Y[178]X
7050 [130]:[145]Y[137]7070,7130,7190,7250:[137]7030
7070 [133]"LOADAMOUNT TO ADD";AD
7080 [133]"WHAT COL #";X
7090 [133]"WHAT ROW #";Y
7100 V(X,Y)[178]V(X,Y)[170]AD
7110 [137]7999
7130 [133]"LOADAMOUNT TO MULTIPLY BY";ML
7140 [133]"WHAT COL #";X
7150 [133]"WHAT ROW #";Y
7160 V(X,Y)[178]V(X,Y)[172]ML
7170 [137]7999
7190 [133]"LOADAMOUNT TO SUBTRACT";SB
7200 [133]"WHAT COL #";X
7210 [133]"WHAT ROW #";Y
7220 V(X,Y)[178]V(X,Y)[171]SB
7230 [137]7999
7250 [133]"LOADAMOUNT TO DIVIDE BY";DV
7260 [133]"WHAT COL #";X
7270 [133]"WHAT ROW #";Y
7280 V(X,Y)[178]V(X,Y)[173]DV
7290 V(X,Y)[178][181](V(X,Y)[172]1000[170].5)[173]1000
7300 [137]7999
7999 [142]
8010 [133]"LOADHOW MANY ITEMS IN EACH ROW";AVE
8020 [153]CR$;CT$:[153]"AVERAGE WILL BE STORED IN COLUMN 14
8030 FORY=1TO50
8035 IFV(13,Y)=0THEN8050
8040 V(14,Y)=V(13,Y)/AVE:V(14,Y)=INT(V(14,Y)*1000+.5)/1000
8050 NEXTY
8060 FORY=1 TO 200:NEXTY:RETURN
9010 INPUT"[147]WHICH IS BASE ROW";BR
9020 INPUT"WHICH IS ROW FOR PERCENTAGES";Y:IFBR=YTHENRETURN
9030 FORX=1TO13
9055 IFV(X,BR)=0THEN9075
9060 V(X,Y)=V(X,Y)/V(X,BR):V(X,Y)=INT(V(X,Y)*10000+.5)/100
9075 NEXTX
9080 RETURN
10010 INPUT"[147]WHICH IS BASE COLUMN";CX
10020 INPUT"WHICH IS COLUMN FOR PERCENTAGES";X:IFX=CXTHENRETURN
10030 FORY=1TO50
10055 IFV(CX,Y)=0THEN10075
10060 V(X,Y)=V(X,Y)/V(CX,Y):V(X,Y)=INT(V(X,Y)*10000+.5)/100
10075 NEXTY
10080 RETURN
11010 PRINT"[147]WHICH COLUMN DO YOU WANT TO SUM";
11020 INPUTCA:IFCA<1ORCA>15THEN11020
11030 PRINT"W[146]HOLE COLUMN OR P[146]ART OF COLUMN?"
11040 GETYN$:IFYN$<>"P"ANDYN$<>"W"THEN11040
11050 IFYN$="P"THENGOSUB11210:GOTO11065
11060 S1=1:S2=49
11065 V(CA,S2+1)=0
11070 FORY=S1TOS2
11080 V(CA,S2+1)=V(CA,S2+1)+V(CA,Y)
11090 NEXTY
11100 RETURN
11210 INPUT"ROW OF FIRST ITEM IN THE SUM";S1
11215 INPUT"ROW OF LAST ITEM IN THE SUM";S2:IFS1>S2ORS1<0ORS2>49THEN11210
11220 RETURN
11510 PRINT:PRINT"[145][145][145][145][145][145]HOW MANY CALCULATIONS (1-8)?"
11515 FORI=1TO5:PRINT" ":NEXT
11520 GETNM$:IFNM$=""THEN11520
11525 IFVAL(NM$)<0ORVAL(NM$)>8THEN11520
11530 NM=VAL(NM$):IFNM=0THENRETURN
11540 PRINT"[145][145][145][145][145][145]ENTER OPERATIONS IN THE ORDER YOU WANT THEM TO BE PERFORMED."
11550 FORI=1TONM
11560 PRINT"ENTER OPERATION #"I"[157] [157][157][157][157][157][157][157][157]";
11570 GETA$:OP(I)=VAL(A$):IFOP(I)<1OROP(I)>8THEN11570
11575 PRINTOP(I)
11580 NEXTI
11590 FORI=1TONM
11600 ONOP(I)GOSUB4001,5010,6010,7010,8010,9010,10010,11010
11610 NEXTI
11620 RETURN
12010 PRINT"[147]MAKE SURE PRINTER IS ON.":PRINT"...HIT ANY KEY WHEN READY."
12020 GETA$:IFA$=""THEN12020
12030 PRINT"DO YOU WANT TO DESIGNATE THE ROWS TO BE PRINTED?"
12040 GETA$:IFA$=""THEN12040
12050 IFA$="N"THENS1=1:S2=50:GOTO12070
12060 INPUT"FIRST ROW TO BE PRINTED";S1:INPUT"LAST ROW TO BE PRINTED";S2
12070 SP$=" "
12080 OPEN4,4
12100 PRINT#4," COLUMNS ";:FORI=1TO4:PRINT#4,I;" ";:NEXT
12109 PRINT#4,"5 "
12110 PRINT#4
12120 FORY=S1TOS2
12130 PRINT#4,LEFT$("ROW"+STR$(Y)+SP$,10);
12135 FORI=1TO5:PRINT#4,RIGHT$(SP$+STR$(V(I,Y)),14);:NEXTI:PRINT#4
12136 PRINT#4,"-------------------------------------------------------------";
12137 PRINT#4,"-------------------"
12140 NEXTY:PRINT#4:PRINT#4
12150 PRINT#4," COLUMNS ";:FORI=6TO9:PRINT#4,I;" ";:NEXT
12155 PRINT#4,"10"
12160 FORY=S1TOS2
12170 PRINT#4,LEFT$("ROW"+STR$(Y)+SP$,10);
12175 FORI=6TO10:PRINT#4,RIGHT$(SP$+STR$(V(I,Y)),14);:NEXTI:PRINT#4
12176 PRINT#4,"-------------------------------------------------------------";
12177 PRINT#4,"-------------------"
12180 NEXTY:PRINT#4:PRINT#4
12190 PRINT#4," COLUMNS ";:FORI=11TO14:PRINT#4,I;" ";:NEXT
12195 PRINT#4,"15"
12200 FORY=S1TOS2
12210 PRINT#4,LEFT$("ROW"+STR$(Y)+SP$,10);
12215 FORI=11TO15:PRINT#4,RIGHT$(SP$+STR$(V(I,Y)),14);:NEXTI:PRINT#4
12216 PRINT#4,"-------------------------------------------------------------";
12217 PRINT#4,"-------------------"
12220 NEXTY
12230 PRINT#4:CLOSE4:RETURN