Title: Calculator
1Calculator
2\ Convert counted string at addr1 to double
number ud2 \ ud1 normally zero to begin
with \ addr2 points to first invalid
character gtNUMBER ( ud1 addr1 -- ud2
addr2 )
kbuf
ptr
\ Calculator (add) LOAD lcd256.whp LOAD
keypad12.whp VARIABLE ptr VARIABLE
first VARIABLE kbuf 20 ALLOT init ( --
) kbuf ptr ! SPI.INIT init.key lcd.init TRUE
first !
3\ Convert counted string at addr1 to double
number ud2 \ ud1 normally zero to begin
with \ addr2 points to first invalid
character gtNUMBER ( ud1 addr1 -- ud2
addr2 )
kbuf
31 32 33
Enter decimal number 123
ptr
display ( n -- ) first _at_ \ if first
digit IF init \ clear display FALSE first
! THEN hex2asc DUP gtdata8 \ display digit 1
ptr ! \ update ptr ptr _at_ C!
4\ Convert counted string at addr1 to double
number ud2 \ ud1 normally zero to begin
with \ addr2 points to first invalid
character gtNUMBER ( ud1 addr1 -- ud2
addr2 )
kbuf
3
31 32 33
Press E
ptr
0
enter ( n -- d ) DROP ptr _at_ kbuf - \ get
no. of chars kbuf C! \ make counted string 1
ptr ! 0 ptr _at_ C! \ make asciiz string 0 0 kbuf
\ convert ascii string gtNUMBER DROP \ to
double number TRUE first !
5 add ( d1 n -- d2 ) clear.lcd enter D
2DUP (D.) type.lcd calc ( --
) init BEGIN wait.for.keyup getkey
DUP 14 \ E key IF enter ELSE
DUP 10 \ A key IF add ELSE
DUP 12 \ C key IF init
ELSE display THEN THEN
THEN AGAIN