10 PRINT CHR$(27)+"[2J"+CHR$(27)+"[;H" 30 WIDTH 80 50 DIM CR(5,100) 60 PV$="BW Sheet 1.0" 70 HR$="==========" 90 MR=0 110 PRINT PV$ 120 PRINT "? for help." 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 1170 REM [HELP] 1180 PRINT HR$ 1190 PRINT PV$ 1200 PRINT 1210 PRINT MR;" rows in this sheet." 1230 PRINT 1240 PRINT "e) edit value f) functions sub-menu" 1250 PRINT "r) review sheet rr) review row rc) review column" 1260 PRINT "l) load s) save" 1270 PRINT "q) quit" 1280 PRINT 1290 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)