5 IF ?&2420<>169 THEN *LOAD"SC_MC" 10 MODE 4 15 VDU23,1,0;0;0;0;0; 25 *KEY10"OLD |M" 30 VDU28,0,27,39,21 35 VDU24,0;130;1279;860; 40 CLS 45 50 REM DEFAULT DECIMAL PLACES 55 ?&8B=4:CLS 60 65 PRINT"CHANGE CALC FORMAT ?" 70 A=GET:IF A<>13 THEN GOSUB 595 75 CLS 76 77 REM CALL &2506 SET&CLEAR BEFORE ENTRY 78 REM THIS MAY BE REMOVED TO SAFE GUARD DATA ON RESTARTING 79 REM IF SO THEN THE MEMORY MUST BE INITIALISED WITH THE \R OPTION 80 REM FIRST TIME ROUND ONLY 81 83 CALL &2506 84 85 *FX4,1 90 CALL &2420 95 *FX4,0 100 105 PRINTTAB(0,5)"Calculating "; 110 CALL &2AF4:CALL &2DA8 115 IF ?&8A THEN 150 ELSE 125 120 125 FOR X=1 TO 15 130 FOR Y=1 TO 30 135 GOSUB 190 140 NEXT:NEXT:GOTO 175 145 150 FOR Y=1 TO 30 155 FOR X=1 TO 15 160 GOSUB 190 165 NEXT:NEXT 170 175 CALL &2B01 180 ?1083=-1:GOTO 85 185 190 ?1115=X:?1114=Y:A$="" 195 ?1083=0 200 CALL &2BCA 205 GOSUB 415:GOSUB 220 210 RETURN 215 220 IF A$="" THEN RETURN 225 IF VAL(A$)<>0 THEN RETURN 230 IF LEN(A$)=1 THEN RETURN 235 IF INSTR(A$,CHR$(34)) THEN RETURN 240 IF INSTR(A$,CHR$(39)) THEN RETURN 245 D$=A$:Len=LEN(A$) 250 IF INSTR(A$,"SUM") THEN 525 255 C%=0:N1=0:N2=0 260 GOSUB 455 265 GOSUB 380 270 N1=VAL(A$) 275 REPEAT 280 S$=MID$(D$,1,1) 285 GOSUB 455 290 GOSUB 380 295 N2=VAL(A$) 300 A=INSTR("+-*/^%",S$) 305 ON A GOSUB 475,480,485,490,495,500 310 N2=0 315 UNTIL Len<1 320 325 ?1115=X:?1114=Y 330 S$=STR$(N1) 335 C%=INSTR(S$,".") 340 IF C% THEN GOSUB 510 345 GOSUB 395:CALL &2F8F 350 FOR N=1 TO LEN(S$) 355 ?(N+&0C60)=ASC(MID$(S$,N,1)) 360 NEXT 365 ?&78=LEN(S$):?1083=-1 370 CALL &2960:RETURN 375 380 ?1115=ASC(Q$)-64:GOSUB 440 385 ?1114=VAL(D$):GOSUB 440 390 IF ?1114>9 THEN GOSUB 440 395 A$="":?1083=-1 400 CALL &2BCA:GOSUB 415 405 RETURN 410 415 IF ?&75=0 THEN RETURN 420 FOR N=1 TO ?&75 425 A$=A$+CHR$(?(N+&0C30)) 430 NEXT:RETURN 435 440 C%=C%+1:D$=MID$(D$,C%) 445 Len=LEN(D$):C%=1:RETURN 450 455 REPEAT 460 C%=C%+1:Q$=MID$(D$,C%,1) 465 UNTIL Q$>"@":RETURN 470 475 N1=N1+N2:RETURN 480 N1=N1-N2:RETURN 485 N1=N1*N2:RETURN 490 N1=N1/N2:RETURN 495 N1=N1^N2:RETURN 500 N1=N1/100*N2:RETURN 505 510 IF INSTR(S$,"E") THEN RETURN 515 S$=MID$(S$,1,C%+?&8B):RETURN 520 525 C%=INSTR(D$,"SUM")+2 530 GOSUB 455:GOSUB 380 535 FC=?1115:FR=?1114 540 GOSUB 455:GOSUB 380 545 TC=?1115:TR=?1114:N1=0 550 FOR R=FR TO TR 555 FOR C=FC TO TC 560 ?1115=C:?1114=R:N2=0 565 GOSUB 395 570 N2=VAL(A$) 575 N1=N1+N2 580 NEXT:NEXT 585 GOTO 325 590 595 CLS:PRINT:PRINT"FORMAT:":PRINT 600 PRINT"1 CALCULATE "; 605 IF ?&8A THEN PRINT"ROWS"; ELSE PRINT"COLUMNS"; 610 PRINT" FIRST " 615 PRINT 620 PRINT"2 DECIMAL PLACES= ";?&8B 625 A=GET 630 IF A=13 THEN RETURN 635 IF A=50 THEN 655 640 IF A<>49 THEN 625 645 IF ?&8A THEN ?&8A=0 ELSE ?&8A=&FF 650 GOTO 595 655 IF ?&8B=6 THEN ?&8B=1 ELSE ?&8B=?&8B+1 660 GOTO 595 665 670 END