!****************************************************
! Math
! Created by Steve Smith, SCP Communications
! 134 W 29th St. NYC 10001 on 1 Oct 87
! Uses INKEY.SBR from the AMUS library
!*****************************************************
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