1 REM ===================================== 2 REM CALC.BAS 3 REM 4 REM By Dan Shier 5 REM Commercial Rights Reserved 6 REM 7 REM Edited for COGS Disk by J Phillips 8 REM 22 March 1984 9 REM ===================================== 10 REM Last Modified: 8 JUN 1984 15 BKG=15: REM Inverse background color for IBM-PC 90 REM --- TITLE PAGE ---------- 100 CLS: LOCATE 6,1 105 FOR X = 1 TO 14: PRINT STRING$(26,219): NEXT 115 LOCATE 7,4: PRINT " 1 2 3 4 5 . 6 5 " 120 LOCATE 11,8: PRINT " 7": LOCATE 11,12: PRINT " 8": LOCATE 11,16: PRINT " 9": LOCATE 11,20: PRINT " X" 125 LOCATE 13,8: PRINT " 4": LOCATE 13,12: PRINT " 5": LOCATE 13,16: PRINT " 6": LOCATE 13,20: PRINT " /" 130 LOCATE 15,8: PRINT " 1": LOCATE 15,12: PRINT " 2": LOCATE 15,16: PRINT " 3": LOCATE 15,20: PRINT " +" 135 LOCATE 17,8: PRINT " 0": LOCATE 17,12: PRINT " .": LOCATE 17,16: PRINT " -": LOCATE 17,20: PRINT " =" 140 LOCATE 1,30: PRINT "C A L C U L A T O R" 145 PRINT: PRINT TAB(34)"By Dan Shier" 150 LOCATE 10,40: PRINT "CHOICES:" 155 LOCATE 12,40: PRINT " 1...Add a column of numbers" 160 LOCATE 14,40: PRINT " 2...Four function calculator" 170 LOCATE 16,40: PRINT " 3...Quit " 175 LOCATE 23,1 180 PRINT "Enter number of choice (1-3)....."; 182 Q$=INKEY$: IF Q$="" THEN 182 184 Q=VAL(Q$) 186 ON Q GOTO 300,500,20000 190 GOTO 100 292 REM --- ADD A COLUMN ------ 300 CLS 302 PRINT " ************************************************************************" 305 PRINT " * This routine adds columns of numbers, giving a running subtotal. *" 310 PRINT" * Entry of '0' ends data entry and gives the grand total. *" 320 PRINT " ************************************************************************" 325 PRINT 330 GOSUB 1000 345 PRINT 350 PRINT " NUMBER TOTAL ": LPRINT " NUMBER TOTAL " 355 PRINT "=====================": LPRINT "=====================" 360 SUM = 0: N=1 362 WHILE N <> 0 365 INPUT;"",N 370 SUM = SUM + N 375 LOCATE CSRLIN,13: PRINT SUM 377 LPRINT N; TAB(13) SUM 380 WEND 385 PRINT "---------------------": LPRINT "---------------------" 390 PRINT "GRAND TOTAL = ";SUM: LPRINT "GRAND TOTAL = ";SUM 393 PRINT 395 PRINT "PRESS A KEY TO CONTINUE....."; 400 Q$=INKEY$: IF Q$="" THEN 400 405 GOTO 100 492 REM --- FOUR FUNCTION CALCULATOR ---------- 500 CLS 505 PRINT " ********************************************************************" 510 PRINT " * Simulates a one memory pocket calculator *" 515 PRINT " * to load memory *" 520 PRINT " * to recall memory *" 525 PRINT " * to add to memory *" 530 PRINT " * to clear registers except memory *" 535 PRINT " * to clear all registers and exit *" 537 PRINT " * *" 540 PRINT " * + - * / to perform functions *" 542 PRINT " * for function entry defaults to '+' sign *" 545 PRINT " ********************************************************************" 590 LOCATE 14,1: GOSUB 1000 595 PRINT 600 N1 = 0:N2 = 0:RESULT = 0:MM = 0 605 PRINT " #1 FUNCTION #2 RESULTS": LPRINT " #1 FUNCTION #2 RESULTS" 610 PRINT "=======================================": LPRINT "=======================================" 615 PRINT N1;: LPRINT N1; 616 LOCATE CSRLIN, 12 618 F$= INKEY$: IF F$ = "" THEN 618 619 IF F$ = CHR$ (13) THEN F$ = "+" 622 PRINT F$;: LPRINT TAB(12) F$; 625 IF F$ = "M" THEN MM = N1: PRINT TAB(16)"MEMORY = ";MM: LPRINT TAB(16)"MEMORY = ";MM: GOTO 615 630 IF F$ = "R" THEN N1 = MM: PRINT: LPRINT: GOTO 615 635 IF F$ = "A" THEN MM = MM + N1: PRINT TAB(16)"MEMORY = ";MM: LPRINT"MEMORY = ";MM: GOTO 615 640 IF F$ = "C" THEN PRINT: PRINT "PRESS A KEY TO CONTINUE..."; GOTO 985 645 IF F$ = "E" THEN N1 = 0: PRINT: LPRINT: GOTO 615 650 IF F$<>"+" AND F$<>"-" AND F$<>"*" AND F$<>"/" THEN PRINT: LPRINT:GOTO 615 655 LOCATE CSRLIN, 17: INPUT;"",N2 660 LPRINT TAB(17) N2; 665 IF F$ = "+" THEN RESULT = N1 + N2 670 IF F$ = "-" THEN RESULT = N1 - N2 675 IF F$ = "*" THEN RESULT = N1 * N2 680 IF F$ = "/" THEN RESULT = N1 / N2 685 LOCATE CSRLIN,28: PRINT RESULT: LPRINT TAB(28) RESULT 690 N1 = RESULT: GOTO 615 980 END 985 Q$=INKEY$: IF Q$="" THEN 985 986 GOTO 100 992 REM --- SCREEN/PRINTER --------- 1000 PRINT "Results will also go to a printer if one is online." 1030 RETURN 19990 REM ********************** 19992 REM EXIT ROUTINE 19994 REM ********************** 20000 CLS: PRINT TAB(28) "E X I T P R O G R A M" 20005 LOCATE 8,20: PRINT "EXIT TO:" 20010 M$(1) = " 1. MENU, to run another program. " 20015 M$(2) = " 2. BASIC " 20020 M$(3) = " 3. MS-DOS System level " 20025 M$(4) = " 4. CANCEL Exit Command " 20030 FOR Y = 1 TO 4: LOCATE 2*Y + 8, 20: PRINT M$(Y): NEXT Y 20035 LOCATE 23,1: PRINT "Enter number or use arrows to make selection; then press " 20037 LOCATE ,,0: REM Cursor OFF 20040 Y=1: MVE=NO :X=1: Q$="" 20045 WHILE Q$ <> CHR$(13) 20050 LOCATE 2*Y + 8, 20: COLOR 0,BKG: PRINT M$(Y): COLOR 7,0 20055 Q$=INKEY$: IF Q$="" THEN 20055 20060 IF LEN(Q$) = 2 AND ASC(RIGHT$(Q$,1)) = 72 THEN MVE=YES: X=Y-1: IF X<1 THEN X=4 20065 IF LEN(Q$) = 2 AND ASC(RIGHT$(Q$,1)) = 80 THEN MVE=YES: X=Y+1: IF X>4 THEN X=1 20067 IF Q$ >="1" AND Q$ <= "4" THEN X=VAL(Q$): MVE=YES 20070 IF MVE=YES THEN LOCATE 2*Y + 8, 20: PRINT M$(Y): Y=X: MVE=NO 20075 WEND 20080 LOCATE ,,1: REM Cursor ON 20085 CLS 20100 IF Y = 1 THEN LOCATE 12,1: PRINT "Loading.....MENU": RUN "MENU" 20110 IF Y = 2 THEN END 20120 IF Y = 3 THEN SYSTEM 20130 IF Y = 4 THEN 100: REM Title Page 30000 CLS: END