Electronic spreadsheet. 1008 cells, each can hold an 8 letter label and a number.
Content
Source Code
1 LET z=0
2 CLEAR
5 LET S$="SAV NAME"
8 LET I=-1
10 LET I1=2
11 LET Z=0
12 LET A=1
13 LET FC1=0: LET FF=0
14 LET H=10
15 LET K=11
16 LET T=20
17 LET U=21
20 LET J1=A
21 INK 4
22 PAPER 0
23 CLS
24 BORDER 0
25 GO SUB 9300
30 LET M=A
40 DIM Y$(8)
50 LET Z$=" "
70 LET M$="████████████████████████████████"
270 PRINT AT 0,0;Z$
290 IF I<Z THEN GO TO 350
300 PRINT AT U,Z;"NEW OR OLD"
302 POKE 23658,8
305 PRINT AT H,H;"SCREEN-CALC"
306 PRINT AT K,Z;" © COPYRIGHT 1983 BANTASOFTWARE"
307 PRINT TAB 7;"ALL RIGHTS RESERVED"
310 PAUSE 0
315 LET K$=INKEY$
320 IF K$="N" THEN GO TO 2
330 IF K$="O" THEN GO TO 1000
340 GO TO 310
350 CLS
360 LET FC=Z
370 PRINT ,,"SIZE(MAX ";CELM;"):"
380 LET A$=""
390 PRINT AT A,17;A$;">"
410 LET B$=" "
430 LET K$=INKEY$
440 IF K$=CHR$ 13 THEN GO TO 500
450 PAUSE 6
460 IF K$="" THEN GO TO 390
465 PRINT AT U,Z;Z$
470 LET A$=A$+K$
480 GO TO 390
500 LET C=Z
508 PRINT AT A,17;" "
510 IF LEN A$<3 THEN GO TO 540
520 IF A$(2)="X" THEN LET C=2
530 IF A$(3)="X" THEN LET C=3
540 IF C=Z THEN PRINT AT 21,Z;"BAD INPUT"
550 IF C=Z THEN GO TO 380
560 LET X1=VAL A$(A TO C-A)
570 LET Y1=VAL A$(C+A TO LEN A$)
580 IF X1*Y1<=CELM AND X1*Y1>Z THEN GO TO 600
585 PRINT AT U,Z;"BAD SIZE, TRY AGAIN"
590 GO TO 380
600 PRINT AT A,16;A$,"OK?"
620 PAUSE 0
660 IF INKEY$="N" THEN GO TO 350
665 IF INKEY$<>"Y" THEN GO TO 620
666 GO SUB 8800
670 LET MA=X1
680 IF MA*Y1>CELM-Y1 THEN GO TO 720
690 LET MA=MA+A
700 GO TO 680
720 DIM A$(MA,Y1,8)
725 DIM A(MA,Y1)
730 DIM F$(FUNM,FUNL+2)
740 DIM P$(MA,Y1)
750 FOR I=A TO MA
760 FOR J=A TO Y1
770 LET P$(I,J)=CHR$ Z
780 NEXT J
790 NEXT I
800 LET INS=Z
810 LET CLER=Z
820 DIM X$(A)
1040 LET X=A
1050 LET Y=A
1060 LET BOX=Z
1070 CLS
1200 IF x$="A" THEN GO TO 1212
1202 PRINT X1;"X";Y1;TAB 11;S$;TAB 21;"FC=";FC
1203 PRINT AT A,Z;M$;"██ ";TAB 9;"▌ ▌";TAB T;"▌ ▌";TAB 30;"██"
1204 FOR I=-A TO A
1205 GO SUB 8700
1206 REM
1207 REM
1208 REM
1209 REM
1210 INVERSE 1: PRINT AT A,K*I+14;E$: INVERSE 0
1211 NEXT I
1212 FOR I=-I1 TO I1+A
1214 LET Y3=I+Y
1215 IF Y3>Y1 OR Y3<=Z THEN GO TO 1260
1216 DIM E$(2)
1217 LET E1=INT (Y3/H)
1218 LET E2=Y3-E1*H
1219 LET E$(A)=CHR$ (E1+48)
1220 LET E$(2)=CHR$ (E2+48)
1221 PRINT AT I*3+8,Z;
1222 INVERSE 1
1223 IF I=-I1 THEN PRINT E$;AT 2,30;E$
1224 INVERSE 0
1225 IF I=-I1 THEN PRINT AT 2,Z
1226 IF INS=A THEN PRINT AT 8,Z
1227 LET INS=Z
1229 IF X=A THEN GO TO 1250
1230 IF I>-I1 THEN GO SUB 1480
1235 PRINT A$(X-A,Y3);" ";A$(X,Y3);" ";
1237 IF X<X1 THEN PRINT A$(X+A,Y3)
1240 FOR J=-J1 TO J1
1241 LET X3=J+X
1243 IF X3<=X1 THEN IF P$(X3,Y3)<>CHR$ Z THEN GO SUB 5000
1245 NEXT J
1247 PRINT TAB Z;A(X-A,Y3);TAB K;A(X,Y3);TAB 22;
1248 IF X<X1 THEN PRINT A(X+A,Y3)
1249 GO TO 1260
1250 IF I>-I1 THEN GO SUB 1480
1254 PRINT TAB K;A$(X,Y3);" ";A$(X+A,Y3)
1255 FOR J=Z TO J1
1256 LET X3=J+X
1257 IF CODE P$(X3,Y3)<>Z THEN GO SUB 5000
1258 NEXT J
1259 PRINT TAB K;A(X,Y3);TAB 22;A(X+A,Y3)
1260 NEXT I
1265 IF BOX/2=INT (BOX/2) THEN PRINT AT 8,H;"▌▄▄▄▄▄▄▄▄▄▄▌";AT 9,H;"▌";AT 9,U;"▌";AT H,H;"▌";AT H,U;"▌";AT K,H;"▌▄▄▄▄▄▄▄▄▄▄▌"
1269 PRINT AT T,Z;Z$;Z$
1270 PRINT AT T,Z;"A=ALL B=BOX C=COL F=FIND J=JUMP"
1280 PRINT "E=END I=INSERT P=PRINT R=REPLACE"
1285 BEEP .5,16
1290 PAUSE 0
1300 LET K$=INKEY$
1301 LET I1=2
1302 LET J1=A
1303 DIM X$(A)
1304 IF K$="I" THEN LET X$="A"
1305 IF K$="P" THEN GO SUB 8200
1306 IF K$="B" THEN LET BOX=BOX+A
1310 IF K$="5" AND X>A THEN LET X=X-A
1320 IF K$="6" AND Y<Y1 THEN LET Y=Y+A
1330 IF K$="7" AND Y>A THEN LET Y=Y-A
1340 IF K$="8" AND X<X1 THEN LET X=X+A
1350 IF K$=CHR$ 11 AND Y>6 THEN LET Y=Y-6
1360 IF K$=CHR$ 10 AND Y<Y1-5 THEN LET Y=Y+6
1370 IF K$=CHR$ 8 AND X>3 THEN LET X=X-3
1380 IF K$=CHR$ 9 AND X<X1-2 THEN LET X=X+3
1390 IF K$="R" THEN GO SUB 2000
1400 IF K$="E" THEN GO TO 6000
1410 IF K$="I" THEN GO SUB 3000
1415 IF K$="C" THEN GO SUB 7000
1417 IF K$="F" THEN GO SUB 8000
1420 IF K$="J" THEN GO SUB 4000
1425 IF K$="A" THEN GO SUB 4700
1427 IF SCREEN$ (Z,Z)<"0" OR SCREEN$ (Z,Z)>"9" THEN DIM X$(A)
1430 IF X$<>"A" THEN GO TO 1070
1440 LET I1=Z
1450 LET J1=Z
1460 PRINT AT 9,K;" "
1470 PRINT AT H,K;" "
1475 GO TO 1200
1480 INVERSE 1
1481 PRINT E$;
1482 INVERSE 0
1484 PRINT "-------- ---------- --------";: INVERSE 1
1486 PRINT E$
1489 INVERSE 0
1490 RETURN
2000 IF CODE P$(X,Y)=Z THEN RETURN
2002 GO SUB 2900
2005 LET FC1=FC
2010 LET FC=CODE P$(X,Y)-A
2020 GO TO 3500
2900 IF CODE P$(X,Y)<>Z THEN PRINT AT 17,Z;F$(CODE P$(X,Y))
2910 RETURN
3000 PRINT AT T,Z;M$;M$
3002 LET XSAV=X: LET YSAV=Y
3005 LET INS=A
3006 REM
3010 PRINT AT T,Z;"A=ABORT N=NUMBER L=LOOP D=DATA";TAB Z;"F=FUNCTION T=TEXT C=CLEAR"
3030 PAUSE 0
3040 LET K$=INKEY$
3050 IF K$="A" THEN GO TO 3960
3055 IF K$="N" THEN LET FF=A: GO TO 3100
3060 GO SUB 2900
3062 LET C=9: LET K1=11
3065 IF K$="T" THEN GO TO 3100
3070 IF K$="F" THEN GO TO 3500
3075 IF K$="D" THEN GO TO 6200
3080 IF K$="L" THEN GO TO 4300
3085 IF K$="C" THEN GO TO 4290
3090 GO TO 3030
3100 DIM C$(H)
3102 LET C=9: LET K1=11
3103 IF K$="N" THEN LET C=H
3105 LET CT=Z
3110 PRINT AT C,K1;C$(A TO CT);: FLASH 1: PRINT ">"
3112 FLASH 0
3115 PAUSE 0
3120 LET K$=INKEY$
3130 IF K$="" THEN GO TO 3120
3140 IF CODE K$=13 THEN GO TO 3400
3145 IF CODE K$>7 AND CODE K$<12 AND C<>9 THEN GO TO 3200
3150 IF CODE K$=12 THEN GO TO 3300
3160 IF CODE K$=32 THEN LET K$=" "
3161 IF C<>9 AND K$="M" THEN LET K$="."
3162 IF C<>9 AND (K$<"0" OR K$>"9") AND K$<>"M" AND K$<>"." AND K$<>"-" THEN GO TO 3110
3165 LET CT=CT+A
3170 LET C$(CT)=K$
3180 GO TO 3110
3200 LET K2=CODE K$
3202 IF CT>Z THEN LET A(X,Y)=VAL C$
3204 PRINT AT C,(K1+CT);" ": LET K$=""
3205 IF CT=0 THEN PRINT AT C,K1;A(X,Y)
3210 IF K2=8 AND X>1 AND K1>=K THEN LET X=X-1: LET K1=K1-K
3220 IF K2=9 AND X<X1 AND K1<22 THEN LET X=X+1: LET K1=K1+K
3240 IF K2=10 AND Y<Y1 AND C<18 THEN LET Y=Y+1: LET C=C+3: LET K1=K1
3250 IF K2=11 AND Y>1 AND C>4 THEN LET Y=Y-1: LET C=C-3: LET K1=K1
3290 GO TO 3105
3300 LET CT=CT-A
3310 GO TO 3110
3400 IF C=9 THEN LET A$(X,Y)=C$: GO TO 3410
3405 IF CT>0 THEN LET A(X,Y)=VAL C$
3410 PRINT AT C,(K1+CT);" "
3412 LET X=XSAV: LET Y=YSAV
3420 GO TO 3980
3500 PRINT AT T,Z;M$;M$
3504 IF FC>=FUNM THEN LET K$="": RETURN
3505 REM
3510 PRINT AT U,Z;"FUNCTION? FC=";FC+A
3520 INPUT B$
3540 FOR I=A TO LEN B$
3541 LET CH=Z
3550 IF CODE B$(I)=32 OR (CODE B$(I)>39 AND CODE B$(I)<95) OR (CODE B$(I)>177 AND CODE B$(I)<190) OR B$(I)="PI" OR CODE B$(I)=165 THEN LET CH=A
3570 IF CH=Z THEN GO TO 3800
3580 NEXT I
3600 IF LEN B$<FUNL+1 THEN GO TO 3900
3610 PRINT AT T,12;"TOO LONG"
3800 PRINT AT T,Z;"BAD FUNCTION"
3810 GO TO 3510
3900 LET FC=FC+A
3910 LET P$(X,Y)=CHR$ FC
3920 LET F$(FC)=B$
3930 IF FC1>Z THEN LET FC=FC1
3940 LET FC1=Z
3980 LET K$=""
3985 IF P$(X,Y)>CHR$ Z AND FF=Z THEN PRINT AT 17,Z;F$(FC)
3987 IF FF=1 AND (C<>H OR K1<>K) THEN PRINT AT Z,Z;" ": LET INS=Z
3990 LET FF=Z: RETURN
4000 PRINT AT T,Z;M$;M$
4010 PRINT AT U,Z;"POSITION?"
4020 INPUT B$
4030 LET C=Z
4040 IF LEN B$<3 THEN GO TO 4070
4050 IF B$(2)="," THEN LET C=2
4060 IF B$(3)="," THEN LET C=3
4070 IF C=Z THEN GO TO 4000
4080 LET X2=VAL B$(A TO C-A)
4090 LET Y2=VAL B$(C+A TO LEN B$)
4100 IF X2>Z AND X2<=X1 THEN LET X=X2
4110 IF Y2>Z AND Y2<=Y1 THEN LET Y=Y2
4120 IF X<>X2 OR Y<>Y2 THEN GO TO 4000
4130 RETURN
4290 LET CLER=A
4300 PRINT AT T,Z;M$;M$
4310 LET B$=" "
4320 LET C$=""
4330 PRINT AT U,Z;"FOR COLUMN"
4340 INPUT C$
4350 LET B$(A TO 5)=C$
4360 LET XX1=VAL B$(A TO 2)
4370 IF B$(3)=" " THEN LET XX2=XX1
4380 IF B$(3)=" " THEN GO TO 4400
4390 LET XX2=VAL B$(4 TO 5)
4400 PRINT AT U,4;"ROW "
4420 INPUT C$
4430 LET B$(A TO 5)=C$
4440 LET YY1=VAL B$(A TO 2)
4450 IF B$(3)=" " THEN LET YY2=YY1
4460 IF B$(3)=" " THEN GO TO 4480
4470 LET YY2=VAL B$(4 TO 5)
4480 IF CLER=Z THEN GO SUB 3500
4490 FOR I=XX1 TO XX2
4500 FOR J=YY1 TO YY2
4510 IF CLER=Z THEN LET P$(I,J)=CHR$ FC
4512 IF CLER=A THEN LET A(I,J)=Z
4514 IF CLER=A THEN LET A$(I,J,A TO 8)=" "
4520 NEXT J
4530 NEXT I
4540 LET K$=""
4545 LET CLER=Z
4550 RETURN
4700 GO SUB 8800
4710 LET XX3=X3
4720 LET YY3=Y3
4730 FOR J=A TO Y1
4740 FOR I=A TO X1
4750 LET X3=I
4760 LET Y3=J
4770 IF CODE P$(X3,Y3)<>Z THEN GO SUB 5000
4780 NEXT I
4790 NEXT J
4800 LET X3=XX3
4810 LET Y3=YY3
4820 RETURN
4900 LET X3=X
4910 LET Y3=Y
5000 LET B$=""
5001 LET C$=""
5002 LET YY=Y3
5003 LET RT=A
5004 LET XX=X3
5005 LET C5=A
5006 LET C=A
5010 LET D=CODE P$(X3,Y3)
5012 IF F$(D,C)="I" THEN GO SUB 5500
5013 LET C=C5
5015 IF F$(D,C)="R" THEN GO SUB 5100
5020 IF F$(D,C)="C" THEN GO SUB 5200
5030 IF F$(D,C+2)="," THEN LET B$=B$+"A("+F$(D,C TO C+4)+")"
5040 IF F$(D,C+2)="," THEN LET C=C+5
5050 LET B$=B$+F$(D,C)
5060 IF F$(D,C+A)=" " OR F$(D,C+A)="E" THEN GO TO 5400
5070 LET C=C+A
5080 GO TO 5015
5100 LET TR=Z
5105 FOR L=A TO X3-A
5110 LET TR=TR+A(L,Y3)
5120 NEXT L
5130 IF F$(D,C-A)="A" THEN LET AR=TR/(X3-A)
5140 RETURN
5200 LET TC=Z
5205 FOR L=A TO Y3-A
5210 LET TC=TC+A(X3,L)
5220 NEXT L
5230 IF F$(D,C-A)="A" THEN LET AC=TC/(Y3-A)
5260 RETURN
5400 LET A(X3,Y3)=VAL B$
5410 RETURN
5500 LET RT=Z
5501 LET C$=""
5505 IF F$(D,C+4)="," THEN LET B$="A("+F$(D,C+2 TO C+6)+")"
5510 IF F$(D,C+4)="," THEN GO TO 5545
5530 LET C=C+A
5540 GO TO 5505
5545 LET C=C+7
5550 IF CODE F$(D,C)>59 AND CODE F$(D,C)<63 OR CODE F$(D,C)>198 AND CODE F$(D,C)<202 THEN GO TO 5580
5560 LET C=C+A
5570 GO TO 5550
5580 LET CK=CODE F$(D,C)
5585 LET C4=C+A
5590 LET C2=C+3
5600 IF F$(D,C+2)="," THEN LET C$="A("+F$(D,C TO C+4)+")"
5610 IF F$(D,C+2)="," THEN GO TO 5700
5620 LET C=C+A
5630 IF C<C2 THEN GO TO 5600
5640 LET C=C4
5645 LET D$=" "
5650 IF F$(D,C)>="." AND F$(D,C)<="9" THEN LET C$=D$+F$(D,C)
5655 IF F$(D,C)="T" THEN GO TO 5700
5660 LET C=C+A
5665 LET D$=C$
5670 GO TO 5650
5700 LET C=C+4
5703 IF F$(D,C-2)="," THEN LET C=C+6
5705 LET BST=VAL B$
5710 LET CST=VAL C$
5720 IF CK=62 AND BST>CST THEN LET RT=A
5730 IF CK=60 AND BST<CST THEN LET RT=A
5740 IF CK=61 AND BST=CST THEN LET RT=A
5750 IF CK=199 AND BST<=CST THEN LET RT=A
5760 IF CK=200 AND BST>=CST THEN LET RT=A
5770 IF CK=201 AND BST<>CST THEN LET RT=A
5780 LET C5=C+A
5790 LET B$=""
5800 IF RT=A THEN RETURN
5810 IF F$(D,C)="E" THEN GO TO 5850
5820 LET C=C+A
5830 GO TO 5810
5850 LET C5=C+5
5860 LET B$=""
5870 RETURN
6000 CLS
6010 PRINT "ALL OR DATA?"
6020 INPUT B$
6030 PRINT "SAVE NAME?"
6040 INPUT S$
6045 PRINT AT H,A;"START TAPE PLAYER, MAKE SURE TAPE IS PAST THE LEADER, PRESS ANY KEY"
6050 IF B$="D" THEN GO TO 6100
6060 IF B$<>"A" THEN GO TO 6010
6070 SAVE S$ LINE H
6080 GO TO H
6100 SAVE S$ DATA A()
6105 PRINT AT H,Z;"NUMERIC DATA SAVED PRESS ANY KEYTO SAVE LABELS";Z$
6110 SAVE S$ DATA A$()
6115 PRINT AT H,Z;"ALL DATA SAVED";Z$;Z$
6117 PAUSE 300
6120 GO TO H
6200 PRINT AT T,Z;M$;M$
6210 PRINT AT U,Z;"LOAD NAME?"
6220 INPUT L$
6230 LOAD L$ DATA A()
6240 LOAD L$ DATA A$()
6250 RETURN
7000 PRINT AT T,Z;M$;M$
7010 PRINT AT U,Z;"COLUMN?"
7020 INPUT C
7022 IF C=Z THEN RETURN
7025 PRINT AT T,Z;M$;M$
7030 IF C>MA THEN PRINT AT T,Z;"NO COLUMN"
7040 IF C>MA THEN GO TO 7010
7050 PRINT AT U,Z;"D=DELETE A=ADD"
7060 PAUSE 0
7062 LET K$=INKEY$
7065 GO SUB 8800
7070 IF K$="A" THEN GO TO 7200
7080 IF K$<>"D" THEN GO TO 7050
7090 FOR I=C+A TO X1
7100 FOR J=A TO Y1
7110 LET A(I-A,J)=A(I,J)
7120 LET A$(I-A,J)=A$(I,J)
7125 LET P$(I-A,J)=P$(I,J)
7130 NEXT J
7140 NEXT I
7150 LET X1=X1-A
7160 RETURN
7200 IF X1=MA THEN GO TO 7500
7210 FOR I=X1 TO C STEP -A
7220 FOR J=A TO Y1
7230 LET A(I+A,J)=A(I,J)
7240 LET A$(I+A,J)=A$(I,J)
7245 LET P$(I+A,J)=P$(I,J)
7250 NEXT J
7260 NEXT I
7270 LET X1=X1+A
7280 FOR I=A TO Y1
7290 LET A(C,I)=Z
7295 LET A$(C,I)=""
7300 NEXT I
7310 RETURN
7500 PRINT AT U,Z;"NO ROOM"
7510 PAUSE 0
7520 RETURN
8000 PRINT AT T,Z;M$;M$
8005 PRINT AT U,Z;"KEY?"
8010 INPUT Y$
8020 GO SUB 8800
8030 FOR I=A TO X1
8040 FOR J=A TO Y1
8050 IF A$(I,J)=Y$ THEN GO TO 8100
8060 NEXT J
8070 NEXT I
8080 PRINT AT U,Z;"NO MATCH"
8090 PAUSE 300
8095 RETURN
8100 LET X=I
8110 LET Y=J
8120 RETURN
8200 INPUT "FIRST COLUMN- 0=THIS SCREEN ";X5
8210 IF X5=0 THEN GO TO 8600
8215 IF X5<0 THEN GO SUB 8900: GO TO 8200
8220 INPUT "LAST COLUMN ";X6
8225 IF X6>X1 OR x6<x5 THEN GO SUB 8900: GO TO 8220
8230 INPUT "FIRST ROW ";Y5
8235 IF Y5<1 THEN GO SUB 8900: GO TO 8230
8240 INPUT "LAST ROW ";Y6
8245 IF Y6>Y1 OR Y6<Y5 THEN GO SUB 8900: GO TO 8240
8246 LET XSAV=X
8247 LET O$=" ": LET X=0
8248 FOR I=X5 TO X6-1
8249 GO SUB 8700
8250 LET O$=O$+E$(1 TO 2)+Z$(1 TO 9)
8252 NEXT I
8254 LET I=X6: GO SUB 8700
8255 LET O$=O$+E$(1 TO 2)+Z$(A TO 4)
8257 LET X=XSAV
8258 GO SUB 9100: GO SUB 9000: GO SUB 9200: LET O$=""
8260 FOR J=Y5 TO Y6
8262 IF J<10 THEN LET O$="0"+STR$ J: GO TO 8265
8263 LET O$=STR$ J
8265 GO SUB 9100: GO SUB 9000: GO SUB 9200
8268 LET O$=""
8270 FOR I=X5 TO X6-1
8280 LET O$=O$+A$(I,J)+Z$(A TO 3)
8290 NEXT I
8295 LET O$=O$+A$(I,J)
8300 GO SUB 9000
8305 LET O$=""
8310 FOR I=X5 TO X6
8320 LET N$=STR$ A(I,J)
8330 LET O$=O$+N$+Z$(A TO 10-LEN N$)
8380 LET O$=O$+" "
8390 NEXT I
8395 GO SUB 9000
8400 NEXT J
8410 RETURN
8600 IF X-1<1 THEN LET X5=1: GO TO 8615
8610 LET X5=X-1
8615 IF X+1>X1 THEN LET X6=X1: GO TO 8630
8620 LET X6=X+1
8630 IF Y-2<1 THEN LET Y5=1: GO TO 8650
8640 LET Y5=Y-1
8650 IF Y+3>Y1 THEN LET Y6=Y1: GO TO 8670
8660 LET Y6=Y+3
8670 GO TO 8246
8700 DIM E$(2)
8710 LET E1=INT ((X+I)/H)
8720 LET E2=X+I-E1*H
8730 LET E$(A)=CHR$ (E1+48)
8740 LET E$(2)=CHR$ (E2+48)
8750 RETURN
8800 FLASH 1: PRINT AT H,H;">CALCULATING"
8810 FLASH 0: RETURN
8900 PRINT AT U,Z;"INVALID ENTRY": BEEP .5,6: RETURN
9000 LPRINT O$: RETURN
9100 INVERSE 1: RETURN
9200 INVERSE 0: RETURN
9300 LET CELM=1008: LET FUNL=80: LET FUNM=150: RETURN
9997 SAVE "SCREEN" LINE 9998
9998 LET I=0
9999 GO TO 10
1 LET z=0
2 CLEAR
5 LET S$="SAV NAME"
8 LET I=-1
10 LET I1=2
11 LET Z=0
12 LET A=1
13 LET FC1=0: LET FF=0
14 LET H=10
15 LET K=11
16 LET T=20
17 LET U=21
20 LET J1=A
21 INK 4
22 PAPER 0
23 CLS
24 BORDER 0
25 GO SUB 9300
30 LET M=A
40 DIM Y$(8)
50 LET Z$=" "
70 LET M$="████████████████████████████████"
270 PRINT AT 0,0;Z$
290 IF I<Z THEN GO TO 350
300 PRINT AT U,Z;"NEW OR OLD"
302 POKE 23658,8
305 PRINT AT H,H;"SCREEN-CALC"
306 PRINT AT K,Z;" © COPYRIGHT 1983 BANTASOFTWARE"
307 PRINT TAB 7;"ALL RIGHTS RESERVED"
310 PAUSE 0
315 LET K$=INKEY$
320 IF K$="N" THEN GO TO 2
330 IF K$="O" THEN GO TO 1000
340 GO TO 310
350 CLS
360 LET FC=Z
370 PRINT ,,"SIZE(MAX ";CELM;"):"
380 LET A$=""
390 PRINT AT A,17;A$;">"
410 LET B$=" "
430 LET K$=INKEY$
440 IF K$=CHR$ 13 THEN GO TO 500
450 PAUSE 6
460 IF K$="" THEN GO TO 390
465 PRINT AT U,Z;Z$
470 LET A$=A$+K$
480 GO TO 390
500 LET C=Z
508 PRINT AT A,17;" "
510 IF LEN A$<3 THEN GO TO 540
520 IF A$(2)="X" THEN LET C=2
530 IF A$(3)="X" THEN LET C=3
540 IF C=Z THEN PRINT AT 21,Z;"BAD INPUT"
550 IF C=Z THEN GO TO 380
560 LET X1=VAL A$(A TO C-A)
570 LET Y1=VAL A$(C+A TO LEN A$)
580 IF X1*Y1<=CELM AND X1*Y1>Z THEN GO TO 600
585 PRINT AT U,Z;"BAD SIZE, TRY AGAIN"
590 GO TO 380
600 PRINT AT A,16;A$,"OK?"
620 PAUSE 0
660 IF INKEY$="N" THEN GO TO 350
665 IF INKEY$<>"Y" THEN GO TO 620
666 GO SUB 8800
670 LET MA=X1
680 IF MA*Y1>CELM-Y1 THEN GO TO 720
690 LET MA=MA+A
700 GO TO 680
720 DIM A$(MA,Y1,8)
725 DIM A(MA,Y1)
730 DIM F$(FUNM,FUNL+2)
740 DIM P$(MA,Y1)
750 FOR I=A TO MA
760 FOR J=A TO Y1
770 LET P$(I,J)=CHR$ Z
780 NEXT J
790 NEXT I
800 LET INS=Z
810 LET CLER=Z
820 DIM X$(A)
1040 LET X=A
1050 LET Y=A
1060 LET BOX=Z
1070 CLS
1200 IF x$="A" THEN GO TO 1212
1202 PRINT X1;"X";Y1;TAB 11;S$;TAB 21;"FC=";FC
1203 PRINT AT A,Z;M$;"██ ";TAB 9;"▌ ▌";TAB T;"▌ ▌";TAB 30;"██"
1204 FOR I=-A TO A
1205 GO SUB 8700
1206 REM
1207 REM
1208 REM
1209 REM
1210 INVERSE 1: PRINT AT A,K*I+14;E$: INVERSE 0
1211 NEXT I
1212 FOR I=-I1 TO I1+A
1214 LET Y3=I+Y
1215 IF Y3>Y1 OR Y3<=Z THEN GO TO 1260
1216 DIM E$(2)
1217 LET E1=INT (Y3/H)
1218 LET E2=Y3-E1*H
1219 LET E$(A)=CHR$ (E1+48)
1220 LET E$(2)=CHR$ (E2+48)
1221 PRINT AT I*3+8,Z;
1222 INVERSE 1
1223 IF I=-I1 THEN PRINT E$;AT 2,30;E$
1224 INVERSE 0
1225 IF I=-I1 THEN PRINT AT 2,Z
1226 IF INS=A THEN PRINT AT 8,Z