10 REM *********************************************************** 20 REM * * 30 REM * TINY PLANNER * 40 REM * * 50 REM * REVISED:12/28/1982 BY MARK BASS * 60 REM * NEW FEATURES : DISK SAVE/LOAD * 70 REM * COLUMN/ROW GRID, COPY, RSUM, BIGBOARD/CPM SCREEN * 80 REM * CONDITIONAL LPRINT * 90 REM * * 100 REM ********************************************************** 110 CLEAR 4096 120 REM TINY PLANNER 130 GOSUB 220 140 GOSUB 890 150 IF R$ = "Y" THEN 140 160 IF F THEN LPRINT "DO YOU WISH TO SAVE THIS MODEL TO DISK (Y/N)"; 170 PRINT "DO YOU WISH TO SAVE THIS MODEL TO DISK (Y/N)"; : GOSUB 3600 180 IF R$ = "Y" THEN GOTO 4140 190 PRINT CS$ : PRINT "THANK YOU." : PRINT 200 IF F THEN LPRINT : IF F THEN LPRINT "THANK YOU." : IF F THEN LPRINT 210 END 220 REM ****************************** 230 PRINT "DO YOU WISH TO ECHO TO YOUR PRINTER (Y/N)"; 240 F = 0 : GOSUB 3600 250 IF R$ = "Y" THEN F = 1 260 IF F THEN LPRINT "DO YOU WISH TO RETRIEVE A MODEL FROM DISK (Y/N)"; 270 PRINT "DO YOU WISH TO RETRIEVE A MODEL FROM DISK (Y/N)"; : GOSUB 3600 280 IF R$ = "Y" THEN GOTO 4370 290 GOSUB 3780 300 GOSUB 370 310 IF R$ = "N" THEN GOTO 300 320 DIM DA(NR,NC) 330 DIM CN$(NC),RN$(NR) 340 GOSUB 620 350 RETURN 360 REM ****************************** 370 REM CONFIGURE 380 PRINT CS$; : PRINT "HOW MANY ROWS AND" 390 IF F THEN LPRINT ; : IF F THEN LPRINT "HOW MANY ROWS AND" 400 PRINT : PRINT "COLUMNS IN THE MODEL ?" : PRINT : PRINT 410 IF F THEN LPRINT : IF F THEN LPRINT "COLUMNS IN THE MODEL ?" : IF F THEN LPRINT : IF F THEN LPRINT 420 NR = 0 : PRINT "# ROWS (ACROSS)"; : INPUT NR 430 IF F THEN LPRINT "# ROWS (ACROSS)" 440 IF F THEN LPRINT NR : IF NR <= 0 THEN IF F THEN LPRINT "WHAT?" 450 IF NR <= 0 THEN PRINT "WHAT?" : GOTO 420 460 NC = 0 : PRINT "# COLS (UP&DOWN)"; : INPUT NC : 470 IF F THEN LPRINT "# COLS (UP&DOWN)" 480 IF F THEN LPRINT NC : IF NC <= 0 THEN IF F THEN LPRINT "WHAT?" 490 IF NC <= 0 THEN PRINT "WHAT?" : GOTO 460 500 MS = (NC+1)*(NR+1)*5+(NC+1)*13+(NR+1)*13 510 IF MS > SZ THEN IF F THEN LPRINT "NOT ENOUGH MEMORY" : LPRINT 520 IF MS > SZ THEN PRINT "NOT ENOUGH MEMORY" : PRINT : GOTO 420 530 PRINT : IF F THEN PRINT 540 FOR I = 1 TO NC : FOR J = 1 TO NR : IF F THEN LPRINT "X "; 550 PRINT "X "; : NEXT : PRINT : IF F THEN LPRINT 560 NEXT 570 IF F THEN LPRINT : IF F THEN LPRINT "SHAPE OK (Y OR N) "; 580 PRINT : PRINT "SHAPE OK (Y OR N) "; 590 GOSUB 3600 600 RETURN 610 REM ****************************** 620 REM SYSMBOL TABLE 630 IF F THEN LPRINT ;"WHAT IS THE NAME OF EACH ROW AND COLUMN ?" 640 PRINT CS$;"WHAT IS THE NAME OF EACH ROW AND COLUMN ?" 650 IF F THEN LPRINT : IF F THEN LPRINT "NAMES CAN BE UP TO 10 CHARACTERS LONG." 660 PRINT : PRINT "NAMES CAN BE UP TO 10 CHARACTERS LONG." 670 IF F THEN LPRINT : IF F THEN LPRINT : IF F THEN LPRINT "ROWS (ACROSS) FIRST." : IF F THEN LPRINT 680 PRINT : PRINT : PRINT "ROWS (ACROSS) FIRST." : PRINT 690 FOR I = 1 TO NR 700 R$ = "" : IF F THEN LPRINT I;" OF";NR; 710 PRINT I;" OF";NR; 720 RN$(I) = LEFT$("R"+MID$(STR$(I),2)+BL$,10) 730 R$ = "" 740 INPUT R$ : IF R$ <> "" THEN RN$(I) = LEFT$(R$+BL$,10) 750 IF F THEN LPRINT R$ 760 NEXT 770 IF F THEN LPRINT : IF F THEN LPRINT : IF F THEN LPRINT "COLUMNS (UP AND DOWN)." : IF F THEN LPRINT 780 PRINT : PRINT : PRINT "COLUMNS (UP AND DOWN)." : PRINT 790 FOR I = 1 TO NC 800 R$ = "" : IF F THEN LPRINT I;"OF";NC; 810 R$ = "" : PRINT I;"OF";NC; 820 CN$(I) = LEFT$("C"+MID$(STR$(I),2)+BL$,10) 830 R$ = "" 840 INPUT R$ : IF R$ <> "" THEN CN$(I) = LEFT$(R$+BL$,10) 850 IF F THEN LPRINT R$ 860 NEXT 870 RETURN 880 REM ****************************** 890 REM BUILD MODELS 900 GOSUB 980 910 GOSUB 1830 920 GOSUB 2620 930 IF F THEN LPRINT ;"MODEL AGAIN (Y/N)"; 940 PRINT CS$;"MODEL AGAIN (Y/N)"; 950 GOSUB 3600 960 RETURN 970 REM ****************************** 980 REM ENTER DATA 990 IF F THEN LPRINT ;"* DATA ENTRY STEP *" : IF F THEN LPRINT 1000 PRINT CS$;"* DATA ENTRY STEP *" : PRINT 1010 IF F THEN LPRINT "ENTER DATA (Y/N)"; 1020 PRINT "ENTER DATA (Y/N)"; 1030 GOSUB 3600 1040 IF R$ = "N" THEN 1210 1050 REM 1060 IF F THEN LPRINT "ENTER ROWS (Y/N)"; 1070 PRINT CS$;"ENTER ROWS (Y/N)"; 1080 GOSUB 3600 1090 IF R$ = "N" THEN 1130 1100 REM 1110 PRINT CS$ : GOSUB 1400 : IF E THEN 1130 1120 GOSUB 1230 : GOTO 1100 1130 REM 1140 IF F THEN LPRINT "ENTER COLS. (Y/N)"; 1150 PRINT CS$;"ENTER COLS. (Y/N)"; 1160 GOSUB 3600 1170 IF R$ = "N" THEN 1210 1180 GOSUB 1700 : IF E THEN 1210 1190 PRINT CS$ 1200 GOSUB 1530 : GOTO 1180 1210 RETURN 1220 REM ****************************** 1230 REM ENTER ROW 1240 IF F THEN LPRINT ;"ENTER";NC;"VALUES -" 1250 PRINT CS$;"ENTER";NC;"VALUES -" 1260 IF F THEN LPRINT "1 FOR EACH COLUMN." : IF F THEN LPRINT 1270 PRINT "1 FOR EACH COLUMN." : PRINT 1280 IF F THEN LPRINT "** ROW ";RN$(R);" **" : IF F THEN LPRINT 1290 PRINT "** ROW ";RN$(R);" **" : PRINT 1300 IF F THEN LPRINT : IF F THEN LPRINT "COLUMN";TAB(11);"VALUE" 1310 PRINT : PRINT "COLUMN";TAB(11);"VALUE" 1320 FOR I = 1 TO NC 1330 IF F THEN LPRINT LEFT$ (CN$(I),5); : IF F THEN LPRINT DA(R,I); 1340 PRINT LEFT$ (CN$(I),5); : PRINT DA(R,I); 1350 INPUT DA(R,I) 1360 IF F THEN LPRINT DA(R,I) 1370 NEXT 1380 RETURN 1390 REM ****************************** 1400 REM GET ROW # 1410 E = 0 : N$ = "" : IF F THEN LPRINT "ROW NAME OR 'END'" 1420 PRINT "ROW NAME OR 'END'" 1430 INPUT N$ : IF F THEN LPRINT N$ 1440 IF N$ = "END" THEN E = 1 : RETURN 1450 N$ = LEFT$(N$+BL$,10) 1460 FOR I = 1 TO NR 1470 IF RN$(I) = N$ THEN R = I : I = 1E+06 1480 NEXT 1490 IF I = NR+1 THEN IF F THEN LPRINT "WHAT ...? " 1500 IF I = NR+1 THEN PRINT "WHAT ...? " : GOSUB 4620 : GOTO 1410 1510 RETURN 1520 REM ****************************** 1530 REM ENTER COLS 1540 IF F THEN LPRINT ;"ENTER";NR;"VALUES -"; 1550 PRINT CS$;"ENTER";NR;"VALUES -"; 1560 IF F THEN LPRINT "1 FOR EACH ROW" : IF F THEN LPRINT 1570 PRINT "1 FOR EACH ROW" : PRINT 1580 IF F THEN LPRINT "** COL ";CN$(C);" **" : IF F THEN LPRINT 1590 PRINT "** COL ";CN$(C);" **" : PRINT 1600 IF F THEN LPRINT : IF F THEN LPRINT "ROW";TAB(11);"VALUE" 1610 PRINT : PRINT "ROW";TAB(11);"VALUE" 1620 FOR I = 1 TO NR 1630 IF F THEN LPRINT LEFT$(RN$(I),5); : IF F THEN LPRINT DA(I,C); 1640 PRINT LEFT$(RN$(I),5); : PRINT DA(I,C); 1650 INPUT DA(I,C) 1660 IF F THEN LPRINT DA(I,C) 1670 NEXT 1680 RETURN 1690 REM ****************************** 1700 REM GET COL # 1710 E = 0 : N$ = "" : IF F THEN LPRINT "COL NAME OR 'END'"; 1720 PRINT "COL NAME OR 'END'"; 1730 INPUT N$ : IF F THEN LPRINT N$ 1740 IF N$ = "END" THEN E = 1 : RETURN 1750 N$ = LEFT$(N$+BL$,10) 1760 FOR I = 0 TO NC 1770 IF CN$(I) = N$ THEN C = I : I = 1E+06 1780 NEXT 1790 IF I = NC+1 THEN IF F THEN LPRINT "WHAT ...? " 1800 IF I = NC+1 THEN PRINT "WHAT ...? " : GOSUB 4720 : GOTO 1710 1810 RETURN 1820 REM ****************************** 1830 REM CALCULATE 1840 IF F THEN LPRINT ;"* CALCULATE STEP *" : IF F THEN LPRINT 1850 PRINT CS$;"* CALCULATE STEP *" : PRINT 1860 IF F THEN LPRINT "CALCULATE (Y/N)"; 1870 PRINT "CALCULATE (Y/N)"; 1880 GOSUB 3600 1890 IF R$ = "N" THEN 2140 1900 REM 1910 IF F THEN LPRINT ;"WORK ON ROWS (Y/N)"; 1920 PRINT CS$;"WORK ON ROWS (Y/N)"; 1930 GOSUB 3600 1940 IF R$ = "N" THEN 2060 1950 IF F THEN LPRINT ;"COPY OR RSUM (Y/N)"; 1960 PRINT CS$;"COPY OR RSUM (Y/N)"; 1970 GOSUB 3600 1980 IF R$ = "N" THEN 2030 1990 B = 9 : GOSUB 3500 2000 IF OP$ = "COPY" THEN GOSUB 4050 2010 IF OP$ = "RSUM" THEN GOSUB 4820 2020 IF OP$ = "COPY" OR OP$ = "RSUM" THEN 1950 2030 IF F THEN LPRINT : LPRINT "1ST "; 2040 PRINT : PRINT "1ST "; : GOSUB 1400 : IF E THEN 2060 2050 GOSUB 2160 : GOTO 1950 2060 REM 2070 IF F THEN LPRINT ;"WORK ON COLS. (Y/N) "; 2080 PRINT CS$;"WORK ON COLS. (Y/N) "; 2090 GOSUB 3600 2100 IF R$ = "N" THEN 2140 2110 IF F THEN LPRINT : LPRINT "1ST "; 2120 PRINT : PRINT "1ST "; : GOSUB 1700 : IF E THEN 2140 2130 GOSUB 2390 : GOTO 2110 2140 RETURN 2150 REM ****************************** 2160 REM WORK ON ROWS 2170 R1 = R 2180 GOSUB 3480 2190 IF F THEN LPRINT : LPRINT "2ND "; 2200 PRINT : PRINT "2ND "; : GOSUB 1400 : IF E THEN 2260 2210 R2 = R 2220 IF F THEN LPRINT : LPRINT "ANS "; 2230 PRINT : PRINT "ANS "; : GOSUB 1400 : IF E THEN 2260 2240 R3 = R 2250 GOSUB 2280 2260 RETURN 2270 REM ****************************** 2280 REM DO ROW 2290 IF F THEN LPRINT : IF F THEN LPRINT "WORKING..." 2300 PRINT : PRINT "WORKING..." 2310 FOR I = 1 TO NC 2320 C3 = I : C2 = I : C1 = I 2330 GOSUB 3660 2340 NEXT 2350 IF F THEN LPRINT : IF F THEN LPRINT "COMPLETED" 2360 PRINT : PRINT "COMPLETED" 2370 RETURN 2380 REM ****************************** 2390 REM WORK ON COLS 2400 C1 = C 2410 GOSUB 3480 2420 IF F THEN LPRINT : LPRINT "2ND "; 2430 PRINT : PRINT "2ND "; : GOSUB 1700 : IF E THEN 2490 2440 C2 = C 2450 IF F THEN LPRINT : LPRINT "ANS "; 2460 PRINT : PRINT "ANS "; : GOSUB 1700 : IF E THEN 2490 2470 C3 = C 2480 GOSUB 2510 2490 RETURN 2500 REM ****************************** 2510 REM DO COL 2520 PRINT : PRINT "WORKING..." 2530 IF F THEN LPRINT : IF F THEN LPRINT "WORKING..." 2540 FOR I = 1 TO NR 2550 R3 = I : R2 = I : R1 = I 2560 GOSUB 3660 2570 NEXT 2580 PRINT : PRINT "COMPLETED" 2590 IF F THEN LPRINT : IF F THEN LPRINT "COMPLETED" 2600 RETURN 2610 REM ****************************** 2620 REM DISPLAY 2630 IF F THEN LPRINT ;"* DATA DISPLAY STEP *" 2640 PRINT CS$;"* DATA DISPLAY STEP *" 2650 IF F THEN LPRINT : IF F THEN LPRINT "DISPLAY DATA (Y/N)"; 2660 PRINT : PRINT "DISPLAY DATA (Y/N)"; 2670 GOSUB 3600 2680 IF R$ = "N" THEN 3010 2690 IF F THEN LPRINT : REM ROWS 2700 PRINT 2710 IF F THEN LPRINT : IF F THEN LPRINT "DISPLAY ROWS (Y/N)"; 2720 PRINT : PRINT "DISPLAY ROWS (Y/N)"; 2730 GOSUB 3600 2740 IF R$ = "N" THEN 2850 2750 IF F THEN LPRINT 2760 PRINT : GOSUB 1400 : IF E THEN 2850 2770 RT = 0 : FOR I = 0 TO NC : RT = RT+DA(R,I) : NEXT 2780 N = INT((NC+1)/NL) : IF (NC+1)-NL*N > 0 THEN N = N+1 2790 PRINT "DISPLAY ROWS IN A GRID (Y/N)"; 2800 C = 1 : IF F THEN LPRINT "DISPLAY ROWS IN A GRID (Y/N)"; 2810 GOSUB 3600 2820 IF R$ = "N" THEN 2840 2830 GOSUB 5040 : GOTO 2750 2840 GOSUB 3030 : GOTO 2750 2850 REM 2860 IF F THEN LPRINT : IF F THEN LPRINT "DISPLAY COLS (Y/N)"; 2870 PRINT : PRINT "DISPLAY COLS (Y/N)"; 2880 GOSUB 3600 2890 IF R$ = "N" THEN 3010 2900 IF F THEN LPRINT 2910 PRINT : GOSUB 1700 : IF E THEN 3010 2920 CT = 0 : FOR I = 0 TO NR : CT = CT+DA(I,C) : NEXT 2930 N = INT((NR+1)/NL) : IF (NR+1)-NL*N > 0 THEN N = N+1 2940 PRINT "DISPLAY COLUMNS IN A GRID (Y/N)"; 2950 IF F THEN LPRINT "DISPLAY COLUMNS IN A GRID (Y/N)"; 2960 R = 1 : GOSUB 3600 2970 IF R$ = "N" THEN 2990 2980 GOSUB 5380 : GOTO 3000 2990 GOSUB 3260 3000 GOTO 2900 3010 RETURN 3020 REM ****************************** 3030 REM ROW PANEL 3040 FOR I = 1 TO N 3050 IF F THEN LPRINT : IF F THEN LPRINT "COLUMN ";RN$(R) : IF F THEN LPRINT 3060 PRINT CS$ : PRINT "COLUMN ";RN$(R) : PRINT 3070 LI = NR : IF LI > 10 THEN LI = 10 3080 FOR J = 1 TO LI 3090 IF C > NC THEN IF F THEN LPRINT 3100 IF C > NC THEN PRINT 3110 IF C <= NC THEN PRINT CN$(C);DA(R,C) : C = C+1 3120 IF C <= NC THEN IF F THEN LPRINT CN$(C);DA(R,C) 3130 NEXT 3140 IF F THEN LPRINT : IF F THEN LPRINT 3150 PRINT : PRINT 3160 IF F THEN LPRINT "ROW TOTAL ";RT 3170 PRINT "ROW TOTAL ";RT 3180 IF I " " THEN 3220 3230 NEXT 3240 RETURN 3250 REM ****************************** 3260 REM COL PANEL 3270 FOR I = 1 TO N 3280 IF F THEN LPRINT : IF F THEN LPRINT "ROW ";CN$(C) : IF F THEN LPRINT 3290 PRINT CS$ : PRINT "ROW ";CN$(C) : PRINT 3300 FOR J = 1 TO 10 3310 IF R > NR THEN IF F THEN LPRINT 3320 IF R > NR THEN PRINT 3330 IF R <= NR THEN PRINT N$(R);DA(R,C) 3340 IF R <= NR THEN IF F THEN LPRINT N$(R);DA(R,C) : R = R+1 3350 NEXT 3360 IF F THEN LPRINT : IF F THEN LPRINT 3370 PRINT : PRINT 3380 IF F THEN LPRINT "COL TOTAL ";CT 3390 PRINT "COL TOTAL ";CT 3400 IF I " " THEN 3440 3450 NEXT 3460 RETURN 3470 REM ****************************** 3480 REM GET OPERATOR 3490 B = 1 3500 IF F THEN LPRINT : OP$ = "" 3510 FOR I = B TO NP : IF F THEN LPRINT OP$(I);" "; 3520 PRINT OP$(I);" "; : NEXT : PRINT : IF F THEN LPRINT 3530 INPUT OP$ 3540 FOR I = 1 TO NP : IF OP$(I) = OP$ THEN I = 1E+06 3550 NEXT 3560 IF I = NP+1 THEN IF F THEN LPRINT "TRY AGAIN" 3570 IF I = NP+1 THEN PRINT "TRY AGAIN" : GOTO 3500 3580 RETURN 3590 REM ****************************** 3600 REM GET Y OR N 3610 GOSUB 4000 : IF R$ = "" THEN 3610 3620 IF R$ <> "Y" AND R$ <> "N" THEN IF F THEN LPRINT : LPRINT "KEY 'Y' OR 'N'"; 3630 IF R$ <> "Y" AND R$ <> "N" THEN PRINT : PRINT "KEY 'Y' OR 'N'"; : GOTO 3610 3640 RETURN 3650 REM ****************************** 3660 REM CALCULATIONS 3670 IF OP$ = "+" THEN DA(R3,C3) = DA(R1,C1)+DA(R2,C2) : GOTO 3750 3680 IF OP$ = "-" THEN DA(R3,C3) = DA(R1,C1)-DA(R2,C2) : GOTO 3750 3690 IF OP$ = "*" THEN DA(R3,C3) = DA(R1,C1)*DA(R2,C2) : GOTO 3750 3700 IF OP$ = "/" AND DA(R2,C2) <> 0 THEN DA(R3,C3) = DA(R1,C1)/DA(R2,C2) : GOTO 3750 3710 IF OP$ = "%" THEN DA(R3,C3) = DA(R1,C1)*DA(R2,C2)/100 : GOTO 3750 3720 IF OP$ = "%+" THEN DA(R3,C3) = DA(R1,C1)+(DA(R1,C1)*DA(R2,C2)/100) : GOTO 3750 3730 IF OP$ = "%-" THEN DA(R3,C3) = DA(R1,C1)-(DA(R1,C1)*DA(R2,C2)/100) : GOTO 3750 3740 IF OP$ = "%D" AND DA(R1,C1) <> 0 THEN DA(R3,C3) = ((DA(R2,C2)-DA(R1,C1))/DA(R1,C1))*100 : GOTO 3750 3750 DA(R3,C3) = INT((DA(R3,C3)*D2+5)/10)/D1 3760 RETURN 3770 REM ****************************** 3780 REM INITIALIZE 3790 DIM N$(64) 3800 NR = 0 : NC = 0 3810 DIM S(64) 3820 REM 3830 NL = 16 3840 CS$ = CHR$(26) : REM CLEAR SCREEN 3850 BL$ = " " 3860 NP = 8 : DIM OP$(NP) 3870 FOR I = 1 TO NP : READ OP$(I) : NEXT 3880 DATA +,-,*,/,%,%+,%-,%D 3890 DP = 2 : D1 = 10^DP : D2 = 10^(DP+1) 3900 IF F THEN LPRINT ;"TINY PLAN" : IF F THEN LPRINT : IF F THEN LPRINT "VERSION 1.1 JULY 1982" 3910 PRINT CS$;"TINY PLAN" : PRINT : PRINT "VERSION 1.1 JULY 1982" 3920 IF F THEN LPRINT "FROM THE 12/1982 (ISSUE 31) COMPUTE!" 3930 PRINT "FROM THE 12/1982 (ISSUE 31) COMPUTE!" 3940 IF F THEN LPRINT : IF F THEN LPRINT : IF F THEN LPRINT "ELECTRONIC SPREAD SHEET" : IF F THEN LPRINT 3950 PRINT : PRINT : PRINT "ELECTRONIC SPREAD SHEET" : PRINT 3960 FOR I = 1 TO 2000 : NEXT 3970 SZ = FRE(0)-150 3980 RETURN 3990 REM ****************************** 4000 R$ = "" : INPUT R$ 4010 IF LEN(R$) = 0 THEN R$ = " " 4020 IF F THEN LPRINT R$ 4030 RETURN 4040 REM ****************************** 4050 REM PROPAGATE A NUMBER THROUGH A ROW 4060 INPUT "ENTER VALUE YOU WISH TO PROPAGATE";V 4070 IF F THEN LPRINT "ENTER VALUE YOU WISH TO PROPAGATE";V 4080 GOSUB 1400 : IF E THEN 4120 4090 FOR U = 1 TO NC 4100 DA(R,U) = V 4110 NEXT 4120 RETURN 4130 REM ****************************** 4140 REM ROUTINE TO SAVE TO DISK AND END 4150 INPUT "WHAT IS THE VERSION NUMBER";V 4160 IF F THEN LPRINT "WHAT IS THE VERSION NUMBER";V 4170 N$ = STR$(V) : N$ = RIGHT$(N$,LEN(N$)-1) 4180 N$ = "MODEL"+N$+".DAT" 4190 OPEN "O",1,N$ 4200 PRINT #1,NR,NC : REM OUTPUT ARRAY BOUNDARY 4210 FOR O = 1 TO NR 4220 FOR I = 1 TO NC 4230 PRINT #1,DA(O,I) 4240 NEXT 4250 NEXT 4260 FOR O = 1 TO NR 4270 PRINT #1,RN$(O) 4280 NEXT 4290 FOR O = 1 TO NC 4300 PRINT #1,CN$(O) 4310 NEXT 4320 CLOSE 1 4330 IF F THEN LPRINT : IF F THEN LPRINT "THANK YOU. MODEL";V;" SAVED TO DISK" 4340 PRINT : PRINT "THANK YOU. MODEL";V;" SAVED TO DISK" 4350 END 4360 REM ****************************** 4370 REM ROUTINE TO LOAD FROM DISK AND RETURN 4380 INPUT "WHAT IS THE VERSION NUMBER";V 4390 IF F THEN LPRINT "WHAT IS THE VERSION NUMBER";V 4400 N$ = STR$(V) : N$ = RIGHT$(N$,LEN(N$)-1) 4410 N$ = "MODEL"+N$+".DAT" 4420 OPEN "I",1,N$ 4430 INPUT #1,NR,NC 4440 DIM DA(NR,NC) 4450 DIM CN$(NC) 4460 DIM RN$(NR) 4470 FOR O = 1 TO NR 4480 FOR I = 1 TO NC 4490 INPUT #1,DA(O,I) 4500 NEXT 4510 NEXT 4520 FOR O = 1 TO NR 4530 INPUT #1,RN$(O) 4540 NEXT 4550 FOR O = 1 TO NC 4560 INPUT #1,CN$(O) 4570 NEXT 4580 CLOSE 4590 GOSUB 3810 4600 GOTO 350 4610 REM ****************************** 4620 IF F THEN LPRINT "THE ROW NAMES ARE : " : IF F THEN LPRINT 4630 PRINT "THE ROW NAMES ARE : " : PRINT 4640 FOR I = 1 TO NR 4650 IF F THEN LPRINT RN$(I);" "; 4660 PRINT RN$(I);" "; 4670 NEXT 4680 IF F THEN LPRINT 4690 PRINT 4700 RETURN 4710 REM ****************************** 4720 IF F THEN LPRINT "THE COLUMN NAMES ARE : " : IF F THEN LPRINT 4730 PRINT "THE COLUMN NAMES ARE : " : PRINT 4740 FOR I = 1 TO NC 4750 IF F THEN LPRINT CN$(I);" "; 4760 PRINT CN$(I);" "; 4770 NEXT 4780 PRINT 4790 IF F THEN LPRINT 4800 RETURN 4810 REM ****************************** 4820 REM SUM N ROWS 4830 IF F THEN LPRINT "ENTER THE NAMES OF THE ROWS TO BE SUMMED" 4840 PRINT "ENTER THE NAMES OF THE ROWS TO BE SUMMED" 4850 Z = 0 4860 Z = Z+1 : GOSUB 1400 : IF E THEN 4890 4870 S(Z) = R 4880 GOTO 4860 4890 OP$ = "+" 4900 IF F THEN LPRINT "ANSWER IN WHAT ROW " 4910 PRINT "ANSWER IN WHAT ROW " 4920 GOSUB 1400 : IF E THEN 4900 4930 R3 = R : R2 = R : REM ADD S(U) TO ANSWER 4940 IF F THEN LPRINT "WORKING ..." 4950 PRINT "WORKING ..." 4960 FOR U = 1 TO Z 4970 FOR V = 1 TO NC 4980 C3 = V : C2 = V : C1 = V : R1 = S(U) 4990 DA(R3,C3) = DA(R1,C1)+DA(R2,C2) 5000 NEXT 5010 NEXT 5020 RETURN 5030 REM *********************************** 5040 REM ROW GRID DISPLAY 5050 IF R = NR THEN GOTO 5370 5060 N = INT(NC/NL) : IF NC-NL*N > 0 THEN N = N+1 5070 FOR I = 1 TO N 5080 IF F THEN LPRINT : IF F THEN LPRINT "COLUMN ";RN$(R); 5090 PRINT CS$ : PRINT "COLUMN ";RN$(R); 5100 S = C 5110 LI = NR : IF LI-R > 6 THEN LI = R+5 5120 FOR U = R+1 TO LI 5130 IF F THEN LPRINT RN$(U); 5140 PRINT RN$(U); 5150 NEXT 5160 IF F THEN LPRINT 5170 PRINT 5180 FOR V = S TO NL 5190 IF C <= NC THEN IF F THEN LPRINT CN$(C);DA(R,C); 5200 IF C <= NC THEN PRINT CN$(C);DA(R,C); 5210 O = 1 5220 FOR U = R+1 TO LI 5230 IF C > NC THEN 5260 5240 O = O+1 : IF F THEN LPRINT TAB(10*O);DA(U,C); 5250 PRINT TAB(10*O);DA(U,C); 5260 NEXT 5270 PRINT : IF F THEN LPRINT 5280 C = C+1 5290 NEXT 5300 IF I > = N THEN 5370 5310 IF F THEN LPRINT : IF F THEN LPRINT "MORE ..." 5320 PRINT : PRINT "MORE ..." 5330 IF F THEN LPRINT : IF F THEN LPRINT "SPACE TO CONTINUE " 5340 PRINT : PRINT "SPACE TO CONTINUE " 5350 GOSUB 4000 : IF R$ <> " " THEN 5350 5360 NEXT 5370 RETURN 5380 REM ****************************** 5390 REM COLUMN GRID 5395 IF C = NC THEN 5710 5400 N = NR : IF N > 6 THEN N = 6 5410 H = N 5420 IF F THEN LPRINT : IF F THEN LPRINT "COLUMN ";RN$(R); 5430 PRINT CS$ : PRINT "COLUMN ";RN$(R); 5440 FOR I = R+1 TO N 5450 PRINT RN$(I); 5460 IF F THEN LPRINT RN$(I); 5470 NEXT 5480 IF F THEN LPRINT 5490 PRINT 5500 E = C+(NL-1) : IF E > NC THEN J = NC-E : E = E+J 5510 FOR V = C TO E 5520 PRINT CN$(V);DA(R,V); 5530 IF F THEN LPRINT CN$(V);DA(R,V); 5540 O = 1 5550 FOR U = R+1 TO N 5560 O = O+1 : IF F THEN LPRINT TAB(10*O);DA(U,V); 5570 PRINT TAB(10*O);DA(U,V); 5580 NEXT 5590 PRINT : IF F THEN LPRINT 5600 NEXT 5610 IF N <> NR THEN H = H+6 : IF H > NR THEN J = NR-H : H = H+J 5620 R = N+1 5630 IF N = NR THEN 5710 5640 N = H : IF F THEN LPRINT : IF F THEN LPRINT "MORE ...." 5650 PRINT : PRINT "MORE ..." 5660 IF F THEN LPRINT : IF F THEN LPRINT "SPACE TO CONTINUE " 5670 PRINT : PRINT "SPACE TO CONTINUE " 5680 GOSUB 4000 5690 IF R$ <> " " THEN 5690 5700 GOTO 5420 5710 RETURN 5720 REM ****************************** 5730 REM * * 5740 REM * THE VERY END . * 5750 REM * * 5760 REM ****************************** 5770 END  REM * * 5740 REM *