Compucolor.org – Virtual Media

Listing of file='CALC1.BAS;01' on disk='vmedia/chip_125-sideB-sector.ccvf'

100 REM   PROGRAM TO SIMULATE A PRINTING CALCULATOR.
200 REM   BY JOHN CRANE CONSULTING.  FOR  COMPUCOLOR II.
300 REM   ALL RIGHTS RESERVED - AUGUST 1979.
400 REM
500 REM
600 T= 0:M= 0:REM   SET TOTAL & MEMORY TO 0.
650 PI= 3.141592654
700 GOSUB 10000:REM   CLEAR SCREEN AND PRINT HEADER.
710 PRINT "THIS PROGRAM CONVERTS YOUR COMPUCOLOR II INTO A "
720 PRINT "PRINTING CALCULATOR WHICH SUPPORTS MANY SCIENTIFIC"
730 PRINT "AS WELL AS ARITHMETIC FUNCTIONS."
740 PRINT
750 PRINT "IF YOU DO NOT HAVE A PRINTER ATTACHED TO THE RS232"
760 PRINT "CONNECTOR, THE PROGRAM WILL STILL OPERATE USING THE"
770 PRINT "TELEVISION SCREEN AS THE OUTPUT DEVICE."
780 PRINT
790 PRINT "AT THIS TIME PLEASE TURN THE PRINTER ON AND PAGE THE PAPER"
800 PRINT "TO THE TOP OF THE FIRST PAGE."
810 PRINT
820 PRINT "PLEASE ENTER THE BAUD RATE OF THE PRINTER : "
830 PRINT "       ( IF NO PRINTER; ENTER 0 )"
840 PLOT 28,28,3,46,16
850 INPUT T
860 B= 0
870 IF T= 0THEN B= 7:GOTO 950
880 IF T= 110THEN B= 1:GOTO 950
890 IF T= 150THEN B= 2:GOTO 950
900 IF T= 300THEN B= 3:GOTO 950
910 IF T= 1200THEN B= 4:GOTO 950
920 IF T= 2400THEN B= 5:GOTO 950
930 IF T= 4800THEN B= 6:GOTO 950
940 IF T= 9600THEN B= 7:GOTO 950
942 IF B= 0THEN PLOT 28,11:PRINT "ILLEGAL INPUT !!":FOR I= 1TO 1000:NEXT I
944 PLOT 28,11:GOTO 820
950 REM   BEGINNING OF MAIN PROGRAM.
960 REM
970 REM
980 T= 0
1300 GOSUB 12000:REM   PRINT HEADER ON PAPER.
1400 GOSUB 10000:REM   CLEAR SCREEN AND PRINT CRT HEADER.
1500 PRINT "FUNCTIONS :  +   -   *   /   ^   INTEGER   ABS VALUE   CHG SIGN"
1502 PRINT
1504 PRINT "            SIN  COS  TAN  LOG   CLRTOTAL  CLRALL     CLRMEMORY"
1506 PRINT
1510 PRINT "            +M  -M  *M  /M  >M   RECALLMEMORY    END PROGRAM"
1520 PRINT
1550 PRINT "ENTER CALCULATIONS BELOW : "
1600 PLOT 3,0,30:REM   MOVE TO BOTTOM OF THE SCREEN.
1610 PRINT "( TO END PROGRAM TYPE 'END' FOR FUNCTION ENTRY. )"
1620 PLOT 3,0,12:REM   MOVE TO START OF CALCULATION AREA.
1700 PRINT :PRINT
1800 GOSUB 16000:REM   PRINT FIRST TOTAL ON CRT.
1900 GOSUB 13000:REM   PRINT INITIAL TOTAL ON PAPER.
2000 REM   ROUTINE TO ENTER FUNCTION **************************
2010 REM
2020 INPUT "ENTER FUNCTION : ";F$
2030 F1= 0:REM   RESET FLAG TESTING FOR O.K. FUNCTION INPUT.
2040 GOSUB 18000:REM   TEST INPUT FUNCTION.
2050 IF F1= 1THEN GOTO 2200:REM   F$ IS OK - INPUT N.
2060 IF F1= 2THEN PRINT :GOTO 2210:REM   F$ IS OK - SKIP N.
2070 IF F1= 3THEN T= 0:PRINT :GOTO 2210:REM   CLR TOTAL ONLY.
2080 IF F1= 4THEN T= 0:M= 0:GOTO 1400:REM   RESTART T=0, M=0.
2090 IF F1= 5THEN GOTO 20000:REM   END PROGRAM.
2100 PLOT 28,11
2110 PRINT "ILLEGAL FUNCTION ENTRY !!!":FOR I= 1TO 2000:NEXT
2120 PLOT 28,11:GOTO 2000:REM   REPEAT INPUT.
2200 PLOT 11:INPUT "ENTER NUMBER   :   ";N
2210 GOSUB 19000:REM   UPDATE TOTAL PER FUNCTION ENTRY.
2700 GOSUB 14000:REM   PRINT N AND FUNCTION ON PAPER.
2800 GOSUB 17000:REM   PRINT TOTAL ( WITH BACKGROUND ) ON CRT.
2900 GOSUB 15000:REM   PRINT TOTAL ON PAPER.
3000 PLOT 28,28,11,28,11,28,11:PRINT :GOTO  2000:REM   MOVE UP & REPEAT ENTRY.
10000 REM   SBR TO CLEAR SCREEN AND PRINT CRT HEADER.
10100 REM
10200 PLOT  12
10300 PRINT TAB( 15)
10400 PLOT 14,6,76
10500 GOSUB 11000:REM   PRINT HEADER TEXT.
10600 PLOT 15,6,2:REM   SET NORMAL SCREEN TEXT.
10700 PRINT :PRINT
10800 RETURN
11000 REM   TEXT FOR HEADER ***********************************
11100 REM
11200 PRINT "  COMPUCOLOR II CALCULATOR  "
11300 RETURN
12000 REM   SBR TO PRINT HEADER ON PAPER **********************
12100 REM
12300 PLOT  27,18,B,27,13:REM   B= BAUD RATE FOR PRINTER.
12400 PLOT  14
12500 GOSUB 11000:REM   HEADER TEXT.
12600 PLOT 15,6,2:REM   RETURN TO NORMAL DISPLAY.
12700 PRINT :PRINT
12800 POKE 33265,0
12900 RETURN
13000 REM   SBR TO PRINT 1ST TOTAL ON PAPER *******************
13100 REM
13200 PLOT  27,13
13300 PRINT  "CALCULATOR CLEARED ..... TOTAL = ";T
13400 POKE  33265,0
13500 RETURN
14000 REM   SBR TO PRINT INPUTTED NO. ON PAPER ****************
14100 REM
14200 PLOT  27,13
14300 IF F1= 2THEN PRINT "        ";F$:GOTO 14500
14400 PRINT  "         ";F$;"  ";N
14500 POKE  33265,0
14600 RETURN
15000 REM   SBR TO PRINT TOTAL ON PAPER ***********************
15100 REM
15328 PLOT  27,13
15300 PRINT  "____________________"
15400 PRINT "TOTAL    =  ";T;
15450 PRINT TAB( 30)"MEMORY =  ";M
15500 POKE  33265,0
15600 RETURN
16000 REM   SBR TO PRINT 1ST TOTAL ON CRT *********************
16100 PLOT 6,127:PRINT "CALCULATOR CLEARED ..... ";
16200 PLOT 6,56:PRINT "TOTASC L = ";T;"  "
16300 PLOT 6,2
16400 RETURN
17000 REM   SBR TO PRINT TOTAL ON CRT *************************
17100 IF T< 0GOTO 17130:REM   JUMP TO RED BACKGROUND ROUTINE.
17110 PLOT 11,6,56:REM        BLK CHRS ON WHITE BACKGROUND.
17120 GOTO 17140:REM          PRINT VALUE OF TOTAL.
17130 PLOT 11,6,8:REM         BLK CHRS ON RED BACKGROUND.
17140 PRINT "TOTAL          =  ";T;"    ";
17200 IF M< 0GOTO 17230:REM   JUMP TO RED BACKGROUND ROUTINE.
17210 PLOT 6,56:REM           BLK CHRS ON WHITE BACKGROUND.
17220 GOTO 17240:REM          PRINT VALUE IN MEMORY.
17230 PLOT 6,8:REM            BLK CHRS ON RED BACKGROUND.
17240 PRINT "  MEMORY  =  ";M;"  "
17250 PLOT 6,2
17300 RETURN
18000 REM   SBR TO CHECK FUNCTION ****************************
18010 REM
18100 IF F$= "+"THEN F1= 1:REM   FUNCTION OK - NEXT GET N.
18110 IF F$= "-"THEN F1= 1
18120 IF F$= "*"THEN F1= 1
18130 IF F$= "/"THEN F1= 1
18140 IF F$= "^"THEN F1= 1
18150 IF F$= ">M"THEN F1= 1
18160 IF F$= "SIN"THEN F1= 1
18170 IF F$= "COS"THEN F1= 1
18180 IF F$= "TAN"THEN F1= 1
18200 IF F$= "A"THEN F1= 2:REM   FUNCTION OK - DON'T GET N.
18210 IF F$= "I"THEN F1= 2
18220 IF F$= "CS"THEN F1= 2
18230 IF F$= "+M"THEN F1= 2
18240 IF F$= "-M"THEN F1= 2
18250 IF F$= "*M"THEN F1= 2
18260 IF F$= "/M"THEN F1= 2
18270 IF F$= "CM"THEN F1= 2
18280 IF F$= "RM"THEN F1= 2
18290 IF F$= "LOG"THEN F1= 2
18300 IF F$= "CT"THEN F1= 3:REM   CLEAR TOTAL ONLY.
18310 IF F$= "CA"THEN F1= 4:REM   CLEAR CALCULATOR AND MEMORY.
18400 IF LEFT$ (F$,1)= "E"THEN F1= 5:REM   END PROGRAM.
18900 RETURN
19000 REM   SBR TO DO CALCULATION ***************************
19010 REM
19020 IF F$= "+"THEN T= T+ N
19030 IF F$= "-"THEN T= T- N
19040 IF F$= "*"THEN T= T* N
19050 IF F$= "/"THEN T= T/ N
19060 IF F$= "^"THEN T= T^ N
19070 IF F$= "A"THEN T= ABS (T)
19080 IF F$= "I"THEN T= INT (T)
19090 IF F$= "CS"THEN T= T* (- 1)
19100 IF F$= "+M"THEN M= M+ T
19110 IF F$= "-M"THEN M= M- T
19120 IF F$= "*M"THEN M= M* T
19130 IF F$= "/M"THEN M= M/ T
19140 IF F$= "RM"THEN T= M
19150 IF F$= ">M"THEN M= N
19160 IF F$= "CM"THEN M= 0
19170 IF F$= "SIN"THEN T= SIN (N* PI/ 180):REM   N IN DEGREES.
19180 IF F$= "COS"THEN T= COS (N* PI/ 180):REM   N IN DEGREES.
19190 IF F$= "TAN"THEN T= TAN (N* PI/ 180):REM   N IN DEGREES.
19200 IF F$= "LOG"THEN T= LOG (T)/ LOG (10)
19900 RETURN
20000 REM   ROUTINE TO END PR0GRAM ***************************
20100 REM
20200 PLOT  27,13:PRINT  CHR$ (12):REM   PAGE PRINTER PAPER.
20300 POKE  33265,0
20400 PRINT :PRINT
20500 LOAD "MENU":RUN
20600 END