140 REM [MAIN]
150 PRINT HR$
160 CM$=""
170 INPUT "Command";CM$
180 IF CM$="e" THEN GOTO 290
190 IF CM$="f" THEN GOTO 1390
200 IF CM$="r" THEN GOTO 400
210 IF CM$="rr" THEN GOTO 550
220 IF CM$="rc" THEN GOTO 660
230 IF CM$="l" THEN GOTO 830
240 IF CM$="s" THEN GOTO 1030
250 IF CM$="?" THEN GOTO 1170
260 IF CM$="q" THEN GOTO 1310
270 GOTO 140
290 REM [EDIT VALUE]
300 PRINT "[Edit Value]"
310 LET IC=0:LET IR=0
320 INPUT "Which Column,Row";IC,IR
330 IF IC<1 OR IC>5 THEN PRINT "!) Invalid column":GOTO 140
340 IF IR<1 OR IR>100 THEN PRINT "!) Invalid row":GOTO 140
350 PRINT "Current: ";CR(IC,IR)
360 INPUT "New Value";CR(IC,IR)
370 IF IR>MR THEN MR=IR
380 GOTO 140
400 REM [REVIEW SHEET]
410 PRINT "[Review Sheet]"
420 IF MR=0 THEN PRINT "!) No values entered":GOTO 140
430 GOSUB 2070
440 LET I=0:LET CM$=""
450 FOR N=1 to MR
460 PRINT N;"]";
470 GOSUB 2080
480 I=I+1
490 IF I=20 THEN I=0:INPUT "Continue (Y/n/c)";CM$
500 IF CM$="n" THEN GOTO 140
510 IF CM$="c" THEN I=21
520 NEXT N
530 GOTO 140
550 REM [REVIEW ROW]
560 PRINT "[Review Row]"
570 IF MR=0 THEN PRINT "!) No values entered":GOTO 140
580 N=0
590 INPUT "Which row";N
600 IF N<1 OR N>MR THEN PRINT "!) Invalid row":GOTO 140
610 GOSUB 2070
620 PRINT N;"]";
630 GOSUB 2080
640 GOTO 140
660 REM [REVIEW COL]
670 PRINT "[Review Row]"
680 IF MR=0 THEN PRINT "!) No values entered":GOTO 140
690 IC=0
700 INPUT "Which column";IC
710 IF IC<1 OR IC>5 THEN PRINT "!) Invalid column":GOTO 140
720 PRINT ,"[";IC;"]"
730 FOR N=1 to MR
740 PRINT N;"]",CR(IC,N)
760 I=I+1
770 IF I=20 THEN I=0:INPUT "Continue (Y/n/c)";CM$
780 IF CM$="n" THEN GOTO 140
790 IF CM$="c" THEN I=21
800 NEXT N
810 GOTO 140
830 REM [LOAD]
840 PRINT "[LOAD]"
850 IR=0
860 INPUT "Start loading into which row";IR
870 IF IR<1 OR IR>100 THEN PRINT "!) Invalid row":GOTO 140
880 PRINT "Type, paste, or PLAY values"
890 PRINT "Each line must have values for all 5 columns"
900 PRINT "255,0,1,0,255 on a line to end."
910 PRINT HR$
920 REM [LOADPOINT]
930 IF IR>100 THEN PRINT "!) All rows full":GOTO 140
940 LET N=0:LET N1=0:LET N2=0:LET N3=0:LET N4=0
950 PRINT "Row";IR;"]";
960 INPUT N,N1,N2,N3,N4
970 IF N=255 AND N1=0 AND N2=1 AND N3=0 AND N4=255 THEN GOTO 140
980 IF IR>MR THEN MR=IR
990 LET CR(1,IR)=N:LET CR(2,IR)=N1:LET CR(3,IR)=N2:LET CR(4,IR)=N3:LET CR(5,IR)=N4
1000 IR=IR+1
1010 GOTO 920
1030 REM [SAVE]
1040 PRINT "[SAVE]"
1050 IF MR=0 THEN PRINT "!) No values entered.":GOTO 140
1060 CM$=""
1070 PRINT "RECORD and then ENTER to list."
1080 PRINT "When done, ENTER after stopping tape."
1090 INPUT CM$
1100 FOR N=1 to MR
1110 PRINT CR(1,N);",";CR(2,N);",";CR(3,N);",";CR(4,N);",";CR(5,N)
1115 FOR D=1 TO 1000
1116 NEXT D
1120 NEXT N
1130 PRINT " 255 , 0 , 1 , 0 , 255"
1140 INPUT CM$
1150 GOTO 140
1310 REM [QUIT]
1320 CM$=""
1330 INPUT "Quit (y/N)";CM$
1340 IF CM$="y" THEN END
1350 GOTO 140
1390 REM [FUNCTIONS]
1400 IF MR=0 THEN PRINT "!) No values entered":GOTO 140
1410 PRINT HR$
1420 CM$=""
1430 INPUT "Function";CM$
1440 IF CM$="s" THEN GOTO 1520
1450 IF CM$="a" THEN GOTO 1720
1460 IF CM$="+" THEN GOTO 1930
1470 IF CM$="-" THEN GOTO 2040
1480 IF CM$="q" THEN GOTO 140
1490 IF CM$="?" THEN GOTO 2060
1500 GOTO 1390
1520 REM [FSUM]
1530 PRINT "[Func: Sum]"
1540 IC=0:IR=0
1550 INPUT "Top-left column,row";IC,IR
1560 IF IC<1 OR IC>5 THEN PRINT "!) Invalid column":GOTO 1390
1570 IF IR<1 OR IR>MR THEN PRINT "!) Invalid row":GOTO 1390
1580 BC=0:BR=0
1590 INPUT "Bottom-right column,row";BC,BR
1600 IF BC<1 OR BC>5 THEN PRINT "!) Invalid column":GOTO 1390
1610 IF BR<1 OR BR>MR THEN PRINT "!) Invalid row":GOTO 1390
1620 A=0
1630 FOR N=IC TO BC
1640 FOR N1=IR TO BR
1650 A=A+CR(N,N1)
1660 NEXT N1
1670 NEXT N
1680 PRINT
1690 PRINT "Sum of [";IC;",";IR;"] to [";BC;",";BR;"] =";A
1700 GOTO 1390
1720 REM [FAVG]
1730 PRINT "[Func: Average]"
1740 IC=0:IR=0
1750 INPUT "Top-left column,row";IC,IR
1760 IF IC<1 OR IC>5 THEN PRINT "!) Invalid column":GOTO 1390
1770 IF IR<1 OR IR>MR THEN PRINT "!) Invalid row":GOTO 1390
1780 BC=0:BR=0
1790 INPUT "Bottom-right column,row";BC,BR
1800 IF BC<1 OR BC>5 THEN PRINT "!) Invalid column":GOTO 1390
1810 IF BR<1 OR BR>MR THEN PRINT "!) Invalid row":GOTO 1390
1820 A=0:A1=0
1830 FOR N=IC TO BC
1840 FOR N1=IR TO BR
1850 A=A+CR(N,N1)
1860 A1=A1+1
1870 NEXT N1
1880 NEXT N
1890 PRINT
1900 PRINT "Average of [";IC;",";IR;"] to [";BC;",";BR;"] =";A/A1
1910 GOTO 1390
1930 REM [FMAX]
1940 PRINT "[Func: Max]"
1950 IC=0:IR=0
1960 INPUT "Top-left column,row";IC,IR
1970 IF IC<1 OR IC>5 THEN PRINT "!) Invalid column":GOTO 1390
1980 IF IR<1 OR IR>MR THEN PRINT "!) Invalid row":GOTO 1390
1990 BC=0:BR=0
2000 INPUT "Bottom-right column,row";BC,BR
2010 IF BC<1 OR BC>5 THEN PRINT "!) Invalid column":GOTO 1390
2020 IF BR<1 OR BR>MR THEN PRINT "!) Invalid row":GOTO 1390
2030 A=0:A1=0:A2=0
2031 FOR N=IC TO BC
2032 FOR N1=IR TO BR
2033 IF CR(N,N1)>A THEN A=CR(N,N1):A1=N:A2=N1
2034 NEXT N1
2035 NEXT N
2036 PRINT
2037 PRINT "Max val is [";A;"] in [";A1;",";A2;"]"
2038 GOTO 1390
2040 REM [FMIN]
2041 PRINT "[Func: Min]"
2042 LET IC=0:LET IR=0
2043 INPUT "Top-left column,row";IC,IR
2044 IF IC<1 OR IC>5 THEN PRINT "!) Invalid column":GOTO 1390
2045 IF IR<1 OR IR>MR THEN PRINT "!) Invalid row":GOTO 1390
2046 LET BC=0:LET BR=0
2047 INPUT "Bottom-right column,row";BC,BR
2048 IF BC<1 OR BC>5 THEN PRINT "!) Invalid column":GOTO 1390
2049 IF BR<1 OR BR>MR THEN PRINT "!) Invalid row":GOTO 1390
2050 A=CR(IC,IR):A1=IC:A2=IR
2051 FOR N=IC TO BC
2052 FOR N1=IR TO BR
2053 IF CR(N,N1)<A THEN LET A=CR(N,N1):LET A1=N:LET A2=N1
2054 NEXT N1
2055 NEXT N
2056 PRINT
2057 PRINT "Min val is [";A;"] in [";A1;",";A2;"]"
2058 GOTO 1390
2060 REM [FHELP]
2061 PRINT HR$
2062 PRINT
2063 PRINT "s) sum of range a) average of range"
2064 PRINT "+) max val in range -) min val in range"
2065 PRINT "q) quit to main menu"
2066 PRINT
2067 GOTO 1390