!**************************************************** ! Math ! Created by Steve Smith, SCP Communications ! 134 W 29th St. NYC 10001 on 1 Oct 87 ! Uses INKEY.SBR from the AMUS library !***************************************************** MAP1 ENTRY,S,1 MAP1 CALC,S,1 MAP1 NUMBER,S,33 MAP1 NUMBER1,F MAP1 RESULT,F MAP1 KEY,S,1 MAP1 X,F XCALL NOECHO CALL DRAW'CALC KEY = "1" ?TAB(-1,29) INPUT: ENTRY = "" XCALL INKEY,ENTRY ENTRY = UCS(ENTRY) ON VAL(ENTRY) GOTO ON1, ON2, ON3, ON4, ON5, ON6, ON7, ON8, ON9 GOTO WHAT ON1: CALL OFF ?TAB(-1,12);TAB(8,24);"1" CALL APPEND GOTO INPUT ON2: CALL OFF ?TAB(-1,12);TAB(8,32);"2" CALL APPEND: GOTO INPUT ON3: CALL OFF ?TAB(-1,12);TAB(8,40);"3" CALL APPEND: GOTO INPUT ON4: CALL OFF ?TAB(-1,12);TAB(12,24);"4" CALL APPEND: GOTO INPUT ON5: CALL OFF ?TAB(-1,12);TAB(12,32);"5" CALL APPEND: GOTO INPUT ON6: CALL OFF ?TAB(-1,12);TAB(12,40);"6" CALL APPEND: GOTO INPUT ON7: CALL OFF ?TAB(-1,12);TAB(16,24);"7" CALL APPEND: GOTO INPUT ON8: CALL OFF ?TAB(-1,12);TAB(16,32);"8" CALL APPEND: GOTO INPUT ON9: CALL OFF ?TAB(-1,12);TAB(16,40);"9" CALL APPEND: GOTO INPUT ON0: CALL OFF ?TAB(-1,12);TAB(20,24);"0" CALL APPEND: GOTO INPUT WHAT: IF ENTRY = "0" GOTO ON0 IF ENTRY = "Q" OR ENTRY = CHR(27) GOTO QUIT IF ENTRY = "." GOSUB APPEND: CALL OFF: GOTO INPUT IF ENTRY = "C" GOTO ERASE IF ENTRY = "+" OR ENTRY = "P" OR ENTRY = "-" OR ENTRY = "/" & OR ENTRY = "X" OR ENTRY = "," OR ENTRY = CHR(12) & OR ENTRY = CHR(10) GOTO DELIMIT IF ENTRY = "=" OR ENTRY = CHR(13) GOTO EQUALS IF ENTRY = "%" THEN CALC = ENTRY: GOTO EQUALS GOTO INPUT APPEND: NUMBER = NUMBER + ENTRY CALL CLEAR ?TAB(-1,12);TAB(4,56-LEN(NUMBER));NUMBER RETURN ERASE: CALL OFF IF ENTRY = "C" THEN ?TAB(16,48);"C" NUMBER = "" ?TAB(4,23);" " GOTO INPUT CLEAR: ?TAB(4,23);" " RETURN DELIMIT: IF ENTRY = "+" OR ENTRY = "P" OR ENTRY = "," THEN ?TAB(8,48);"+" IF ENTRY = "-" THEN ?TAB(8,56);"-" IF ENTRY = "X" OR ENTRY = CHR(12) THEN ?TAB(12,48);"X" IF ENTRY = "/" OR ENTRY = CHR(10) THEN ?TAB(12,56);"/" NUMBER1 = NUMBER CALC = ENTRY CALL OFF CALL CLEAR ?TAB(-1,11);TAB(4,56-LEN(NUMBER));NUMBER;TAB(-1,12) NUMBER = "" GOTO INPUT EQUALS: IF ENTRY = "=" OR ENTRY = CHR(13) THEN ?TAB(16,56);"=" IF ENTRY = "%" THEN ?TAB(20,40);"%" CALL OFF ?TAB(4,23);" " IF CALC = "+" OR CALC = "P" OR CALC = "," & THEN RESULT = NUMBER + NUMBER1 IF CALC = "-" THEN RESULT = NUMBER1 - NUMBER IF CALC = "X" OR CALC = CHR(12) THEN RESULT = NUMBER * NUMBER1 IF CALC = "/" OR CALC = CHR(10) THEN RESULT = NUMBER1 / NUMBER IF CALC = "%" THEN RESULT = NUMBER1 * NUMBER / 100 NUMBER = RESULT ?TAB(-1,12);TAB(4,56-LEN(NUMBER));NUMBER GOTO INPUT QUIT: ?TAB(-1,28);TAB(-1,0) END !!!!!!!!!!!!!!!!!!!!!!!!!!!!! OFF: ?TAB(-1,11) ON VAL(KEY) GOTO OFF1, OFF2, OFF3, OFF4, OFF5, OFF6, OFF7, OFF8, OFF9 IF KEY = "0" GOTO OFF0 IF KEY = "C" GOTO OFFC IF KEY = "+" OR KEY = "P" OR KEY = "," GOTO OFFPLUS IF KEY = "-" GOTO OFFMINUS IF KEY = "/" OR KEY = CHR(10) GOTO OFFDIVIDE IF KEY = "X" OR KEY = CHR(12) GOTO OFFTIMES IF KEY = "%" GOTO OFFPERCENT IF KEY = "=" OR KEY = CHR(13) GOTO OFFEQUAL GOTO ENDOFF OFF1: ?TAB(8,24);"1":GOTO ENDOFF OFF2: ?TAB(8,32);"2":GOTO ENDOFF OFF3: ?TAB(8,40);"3":GOTO ENDOFF OFF4: ?TAB(12,24);"4":GOTO ENDOFF OFF5: ?TAB(12,32);"5":GOTO ENDOFF OFF6: ?TAB(12,40);"6":GOTO ENDOFF OFF7: ?TAB(16,24);"7":GOTO ENDOFF OFF8: ?TAB(16,32);"8":GOTO ENDOFF OFF9: ?TAB(16,40);"9":GOTO ENDOFF OFF0: ?TAB(20,24);"0";TAB(1,1):GOTO ENDOFF OFFC: ?TAB(16,48);"C";TAB(1,1);:GOTO ENDOFF OFFPLUS: ?TAB(8,48);"+":GOTO ENDOFF OFFMINUS: ?TAB(8,56);"-":GOTO ENDOFF OFFDIVIDE: ?TAB(12,56);"/":GOTO ENDOFF OFFTIMES: ?TAB(12,48);"X":GOTO ENDOFF OFFPERCENT: ?TAB(20,40);"%";TAB(1,1):GOTO ENDOFF OFFEQUAL: ?TAB(16,56);"=";:GOTO ENDOFF ENDOFF: ?TAB(-1,12): KEY = ENTRY RETURN !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DRAW'CALC: ?TAB(-1,0);TAB(-1,23);TAB(-1,36) ?TAB(2,20);"2ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ3" ?TAB(3,20);"6 6" ?TAB(4,20);"6 6" ?TAB(5,20);"6 6" ?TAB(6,20);"4ZZZZZZZPZZZZZZZPZZZZZZZPZZZZZZZPZZZZZZZ9" ?TAB(7,20);"6 6 6 6 6 6" ?TAB(8,20);"6 6 6 6 6 6" ?TAB(9,20);"6 6 6 6 6 6" ?TAB(10,20);"4ZZZZZZZ8ZZZZZZZ8ZZZZZZZ8ZZZZZZZ8ZZZZZZZ9" ?TAB(11,20);"6 6 6 6 6 6" ?TAB(12,20);"6 6 6 6 6 6" ?TAB(13,20);"6 6 6 6 6 6" ?TAB(14,20);"4ZZZZZZZ8ZZZZZZZ8ZZZZZZZ8ZZZZZZZ8ZZZZZZZ9" ?TAB(15,20);"6 6 6 6 6 6" ?TAB(16,20);"6 6 6 6 6 6" ?TAB(17,20);"6 6 6 6 6 6" ?TAB(18,20);"4ZZZZZZZ8ZZZZZZZ8ZZZZZZZ8ZZZZZZZ8ZZZZZZZ9" ?TAB(19,20);"6 6 6 6 6 6" ?TAB(20,20);"6 6 C 6 6 6 6" ?TAB(21,20);"6 6 6 6 6 6" ?TAB(22,20);"1ZZZZZZZ]ZZZZZZZ]ZZZZZZZ]ZZZZZZZ]ZZZZZZZ5" ?TAB(-1,24) 1UMBERS: ?TAB(2,35);"SMITH-MATH" ?TAB(-1,11);TAB(8,24);"1";TAB(8,32);"2";TAB(8,40);"3";TAB(8,48);"+";TAB(8,56);"-" ?TAB(12,24);"4";TAB(12,32);"5";TAB(12,40);"6";TAB(12,48);"X";TAB(12,56);"/" ?TAB(16,24);"7";TAB(16,32);"8";TAB(16,40);"9";TAB(16,48);"C";TAB(16,56);"=" ?TAB(20,24);"0";TAB(20,40);"%";TAB(-1,12);TAB(20,54)"Q";TAB(-1,11);"uit"; ?TAB(3,61);tab(-1,30);"OPTIONAL KEYS";tab(-1,31) ?TAB(5,61);"ADD = numpad ,"; ?TAB(6,61);"MINUS = numpad -"; ?TAB(7,61);"TIMES = Rt arrow"; ?TAB(8,61);"DIVIDE= Dn arrow"; ?TAB(9,61);"EQUAL = [enter]"; ?tab(3,8);tab(-1,30);"USAGE";tab(-1,31) ?tab(5,1);"Press any key shown" ?tab(6,1);"to enter that num-" ?tab(7,1);"ber or perform that" ?tab(8,1);"function." ?TAB(10,1)"For multiple func-" ?tab(11,1)"tions, for example," ?tab(13,1)" 7 + 3 + 11 / 3" ?tab(15,1)"use the form," ?tab(17,1)"7 + 3 = (10) + 11" ?tab(18,1)"(21) / 3 = (7)" ?tab(20,1)"The () number are" ?tab(21,1)"the totals you see" ?tab(22,1)"when you press =.";TAB(-1,12);tab(1,1);TAB(-1,37) RETURN