fl { PropForth5.5 2013/04/01 21:09:47 BigFont This is used to display BigFont(16Character X 2Line) on character-LCD. BigFont need 3characters X 2characters(total 6characters) per one charcter. Dispay character: ! " ' ( ) * + , - . / 0 to 9 A to Z : ; < = > a to z Characters[# $ % & ? @] is not defined. } hex wvariable big_font -2 allot \ ! " # $ % & ' ( ) * + , - . / 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, FF c, 20 c, 20 c, 02 c, 20 c, 03 c, 03 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 02 c, 04 c, 20 c, 20 c, 20 c, 20 c, 02 c, 01 c, 20 c, 01 c, 02 c, 20 c, 20 c, 01 c, 02 c, 20 c, 02 c, 01 c, 05 c, FF c, 05 c, 05 c, FF c, 05 c, 20 c, 03 c, 20 c, 01 c, FF c, 01 c, 20 c, 20 c, 20 c, 02 c, 04 c, 20 c, 20 c, 20 c, 20 c, 01 c, 01 c, 01 c, 20 c, 20 c, 20 c, 03 c, 20 c, 20 c, 20 c, 20 c, 03 c, 03 c, 01 c, 20 c, \ 0 - 9 02 c, 05 c, 03 c, FF c, 02 c, 04 c, 02 c, 03 c, 20 c, 20 c, FF c, 20 c, 05 c, 05 c, 03 c, FF c, 00 c, 00 c, 05 c, 05 c, 03 c, 00 c, 00 c, FF c, 03 c, 20 c, 03 c, 01 c, 01 c, FF c, 03 c, 05 c, 05 c, 00 c, 00 c, FF c, 03 c, 05 c, 05 c, FF c, 00 c, FF c, 05 c, 05 c, 03 c, 20 c, 20 c, FF c, 03 c, 05 c, 03 c, FF c, 00 c, FF c, 03 c, 05 c, 03 c, 00 c, 00 c, FF c, \ : ; < = > ? @ 20 c, 05 c, 20 c, 20 c, 05 c, 20 c, 20 c, 05 c, 20 c, 02 c, 05 c, 20 c, 20 c, 02 c, 05 c, 01 c, 05 c, 02 c, 05 c, 05 c, 05 c, 02 c, 02 c, 02 c, 05 c, 02 c, 20 c, 02 c, 05 c, 01 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, 20 c, \ A - Z 03 c, 05 c, 03 c, FF c, 01 c, FF c, 03 c, 05 c, 03 c, FF c, 00 c, 03 c, 03 c, 05 c, 05 c, FF c, 02 c, 02 c, 03 c, 05 c, 02 c, FF c, 02 c, 04 c, 03 c, 05 c, 05 c, FF c, 00 c, 00 c, 03 c, 05 c, 05 c, FF c, 01 c, 01 c, 03 c, 05 c, 05 c, FF c, 02 c, FF c, 03 c, 20 c, 03 c, FF c, 01 c, FF c, 05 c, 03 c, 05 c, 02 c, FF c, 02 c, 05 c, 05 c, 03 c, 03 c, 02 c, FF c, 03 c, 20 c, 03 c, FF c, 01 c, 03 c, 03 c, 20 c, 20 c, FF c, 02 c, 02 c, 03 c, 02 c, 03 c, FF c, 01 c, FF c, 03 c, 05 c, 03 c, FF c, 20 c, FF c, 03 c, 05 c, 03 c, FF c, 02 c, FF c, 03 c, 05 c, 03 c, FF c, 01 c, 01 c, 03 c, 05 c, 03 c, 01 c, 01 c, FF c, 03 c, 05 c, 03 c, FF c, 01 c, 03 c, 03 c, 05 c, 05 c, 00 c, 00 c, FF c, 05 c, 03 c, 05 c, 20 c, FF c, 20 c, 03 c, 20 c, 03 c, FF c, 02 c, FF c, 03 c, 20 c, 03 c, 04 c, 02 c, 04 c, 03 c, 20 c, 03 c, FF c, 04 c, FF c, 03 c, 20 c, 03 c, 03 c, 01 c, 03 c, 03 c, 20 c, 03 c, 01 c, FF c, 01 c, 05 c, 05 c, 03 c, 03 c, 00 c, 02 c, \ [ \ ] ^ _ ` FF c, 01 c, 20 c, FF c, 02 c, 20 c, 03 c, 20 c, 20 c, 20 c, 01 c, 03 c, 20 c, 01 c, FF c, 20 c, 02 c, FF c, 20 c, 02 c, 20 c, 01 c, 20 c, 01 c, 20 c, 20 c, 20 c, 02 c, 02 c, 02 c, 20 c, 01 c, 05 c, 20 c, 20 c, 20 c, \ a - z 05 c, 05 c, 03 c, 05 c, 00 c, FF c, 03 c, 02 c, 20 c, FF c, 02 c, 04 c, 02 c, 05 c, 05 c, 04 c, 02 c, 02 c, 20 c, 02 c, 03 c, 04 c, 02 c, FF c, 02 c, 05 c, 02 c, 04 c, 00 c, 00 c, 20 c, 02 c, 05 c, 01 c, FF c, 01 c, 02 c, 05 c, 02 c, 02 c, 00 c, 04 c, 03 c, 02 c, 20 c, FF c, 20 c, FF c, 20 c, 05 c, 20 c, 20 c, FF c, 20 c, 20 c, 20 c, 05 c, 03 c, 02 c, 04 c, 03 c, 20 c, 02 c, FF c, 04 c, 02 c, 03 c, 20 c, 20 c, 04 c, 02 c, 02 c, 03 c, 03 c, 02 c, FF c, 01 c, FF c, 03 c, 05 c, 02 c, FF c, 20 c, FF c, 02 c, 05 c, 02 c, 04 c, 02 c, 04 c, 03 c, 05 c, 02 c, FF c, 01 c, 20 c, 02 c, 05 c, 03 c, 20 c, 01 c, FF c, 02 c, 05 c, 05 c, FF c, 20 c, 20 c, 02 c, 05 c, 05 c, 02 c, 00 c, 05 c, 02 c, 03 c, 02 c, 20 c, 04 c, 02 c, 03 c, 20 c, 03 c, 04 c, 02 c, FF c, 03 c, 20 c, 03 c, 04 c, 02 c, 04 c, 03 c, 20 c, 03 c, 04 c, FF c, FF c, 03 c, 20 c, 03 c, 03 c, 01 c, 03 c, 03 c, 20 c, 03 c, 02 c, 00 c, 04 c, 05 c, 05 c, 03 c, 03 c, 00 c, 02 c, wvariable char_segment -2 allot 1F c, 1F c, 1F c, 00 c, 00 c, 1F c, 1F c, 1F c, 1F c, 1F c, 1F c, 00 c, 00 c, 00 c, 00 c, 00 c, 00 c, 00 c, 00 c, 00 c, 00 c, 1F c, 1F c, 1F c, 00 c, 00 c, 00 c, 1F c, 1F c, 1F c, 1F c, 1F c, 1F c, 1F c, 1F c, 1F c, 1F c, 00 c, 00 c, 00 c, 00 c, 00 c, 00 c, 1F c, 1F c, 00 c, 00 c, 00 c, decimal wvariable bigfont_x \ position for bigfont's x wvariable bigfont_y \ position for bigfont's y 1 bigfont_x W! 1 bigfont_y W! wvariable bf_line \ line-number for BigFont wvariable bf_char \ character-number for BigFont \ Set character from 0x0 to 0x05 \ ( -- ) : set_char_segment char_segment h40 6 0 do 8 0 do dup lcd_com \ command for character to CG-RAM 1+ swap C@++ lcd_char \ write data swap loop loop 2drop ; \ Display big_font \ ( c -- ) c:character code : set_big_font h20 - 6 u* big_font + \ get big_font's address 2 0 do 3 0 do C@++ lcd_char loop \ print 1-line for bigfont bigfont_x W@ 1- 2 lshift 1+ \ next x lcd_pos bigfont_y W@ 1- 1 lshift 2+ \ next y lcd-pos lcd_pos loop drop ; \ Convert position for BogFont to lcd_pos \ ( x y -- ) : bf_pos dup bigfont_y W! 1- 1 lshift 1+ swap dup bigfont_x W! 1- 2 lshift 1+ swap lcd_pos ; \ Clear BigFont LCD \ ( -- ) : bf_clear lcd_init 1 bigfont_x W! 1 bigfont_y W! ; \ Set number of BigFont's characters and lines \ ( -- ) : bf_set line W@ 1 rshift bf_line W! char W@ 2 rshift bf_char W! ; \ Move to next bigfont position \ ( -- ) : next_bigfont_pos bigfont_x W@ 1+ dup bf_char W@ > if drop 1 bigfont_x W! bigfont_y W@ 1+ dup bf_line W@ > if drop 1 then bigfont_y W! else bigfont_x W! then bigfont_x W@ bigfont_y W@ bf_pos ; \ Display BigFont string \ ( cstr -- ) : bf_str C@++ dup if bounds do i C@ set_big_font \ put big_font next_bigfont_pos \ calculate next bigfont position loop else 2drop then ; \ Display decimal-number \ ( n -- ) n:number : bf_dec 0 result W! d1000000000 tmp L! dup h80000000 and if negate h2D set_big_font next_bigfont_pos then \ check minus? d10 0 do dup tmp L@ >= if tmp L@ u/mod h30 + set_big_font next_bigfont_pos 1 result W! else result W@ tmp L@ 1 = or if h30 set_big_font next_bigfont_pos then then tmp L@ d10 u/ tmp L! loop drop ;