fl wvariable font 0 c, 20 c, 20 c, fc c, 20 c, 24 c, 3c c, 6a c, aa c, aa c, 92 c, a4 c, 48 c, 30 c, 0 c, 0 c, \ a 0 c, 0 c, 80 c, 88 c, 84 c, 84 c, 82 c, 82 c, 92 c, a2 c, a2 c, 42 c, 42 c, 0 c, 0 c, 0 c, 0 c, 40 c, 3c c, 0 c, 3c c, c2 c, 2 c, 2 c, 2 c, 2 c, 4 c, 8 c, 30 c, 0 c, 0 c, 0 c, 0 c, 40 c, 38 c, 0 c, 3c c, c4 c, 8 c, 10 c, 20 c, 50 c, 50 c, 90 c, 8e c, 0 c, 0 c, 0 c, 0 c, 24 c, 22 c, fa c, 20 c, 20 c, 2c c, 32 c, 62 c, a2 c, a2 c, a2 c, 64 c, 0 c, 0 c, 0 c, 0 c, 28 c, 24 c, 22 c, f8 c, 24 c, 24 c, 24 c, 44 c, 44 c, 44 c, 94 c, 8 c, 0 c, 0 c, 0 c, \ ka 0 c, 20 c, 20 c, 2c c, f0 c, 16 c, f8 c, 8 c, 48 c, 84 c, 84 c, 40 c, 3c c, 0 c, 0 c, 0 c, 0 c, 4 c, 4 c, 8 c, 10 c, 20 c, 40 c, 40 c, 40 c, 20 c, 10 c, 8 c, 4 c, 0 c, 0 c, 0 c, 4 c, 84 c, 84 c, be c, 84 c, 84 c, 84 c, 84 c, 84 c, 44 c, 44 c, 8 c, 10 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 40 c, 3e c, 4 c, 8 c, 0 c, 40 c, 80 c, 80 c, 40 c, 3e c, 0 c, 0 c, 0 c, 0 c, 20 c, 20 c, 16 c, f8 c, 10 c, 8 c, 8 c, 44 c, 82 c, 80 c, 40 c, 3c c, 0 c, 0 c, 0 c, \ sa 0 c, 40 c, 40 c, 40 c, 40 c, 40 c, 40 c, 40 c, 42 c, 42 c, 42 c, 44 c, 38 c, 0 c, 0 c, 0 c, 0 c, 8 c, 8 c, fe c, 8 c, 28 c, 58 c, 48 c, 48 c, 38 c, 8 c, 8 c, 10 c, 20 c, 0 c, 0 c, 0 c, 48 c, 48 c, 48 c, fe c, 48 c, 48 c, 48 c, 58 c, 40 c, 40 c, 40 c, 3c c, 0 c, 0 c, 0 c, 0 c, 40 c, 3c c, 8 c, 10 c, 20 c, 7e c, 88 c, 10 c, 20 c, 20 c, 10 c, c c, 0 c, 0 c, 0 c, 0 c, 20 c, 20 c, 20 c, fc c, 20 c, 2e c, 40 c, 40 c, 40 c, 90 c, 90 c, 8e c, 0 c, 0 c, 0 c, \ ta 0 c, 20 c, 20 c, 20 c, f8 c, 20 c, 40 c, 5c c, e2 c, 82 c, 2 c, 4 c, 38 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 18 c, e4 c, 2 c, 2 c, 2 c, 2 c, 4 c, 8 c, 30 c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, fe c, 4 c, 8 c, 10 c, 20 c, 20 c, 40 c, 40 c, 40 c, 20 c, 1c c, 0 c, 0 c, 0 c, 0 c, 20 c, 20 c, 20 c, 26 c, 18 c, 20 c, 40 c, 80 c, 80 c, 80 c, 40 c, 3e c, 0 c, 0 c, 0 c, 0 c, 20 c, 20 c, f4 c, 42 c, 4a c, 88 c, 88 c, 88 c, 38 c, 4c c, 4a c, 38 c, 0 c, 0 c, 0 c, \ na 0 c, 0 c, 80 c, 9e c, a2 c, 84 c, 80 c, 80 c, a0 c, a0 c, 90 c, c7 c, c0 c, 0 c, 0 c, 0 c, 0 c, 8 c, 88 c, 88 c, dc c, ea c, ca c, aa c, b2 c, 92 c, a6 c, ca c, e c, 0 c, 0 c, 0 c, 0 c, 40 c, 40 c, 64 c, ca c, 52 c, 52 c, 62 c, c2 c, c2 c, cc c, 54 c, 4a c, 0 c, 0 c, 0 c, 0 c, 0 c, 38 c, 54 c, 92 c, 92 c, 92 c, 92 c, a2 c, a2 c, a2 c, 44 c, 8 c, 0 c, 0 c, 0 c, 0 c, 0 c, 84 c, 84 c, be c, 84 c, 84 c, 84 c, 84 c, 94 c, ac c, a4 c, 9a c, 0 c, 0 c, 0 c, \ ha 0 c, 0 c, e8 c, 24 c, 46 c, 44 c, 82 c, 82 c, 82 c, 82 c, 82 c, 44 c, 38 c, 0 c, 0 c, 0 c, 0 c, 20 c, 10 c, 8 c, 10 c, 20 c, 14 c, 52 c, 4a c, 4a c, 4a c, 8a c, 30 c, 0 c, 0 c, 0 c, 0 c, 0 c, 20 c, 50 c, 50 c, 88 c, 88 c, 4 c, 4 c, 4 c, 2 c, 2 c, 2 c, 0 c, 0 c, 0 c, 0 c, 0 c, be c, 84 c, 84 c, be c, 84 c, 84 c, 84 c, 94 c, ac c, a4 c, 9a c, 0 c, 0 c, 0 c, 10 c, 10 c, fc c, 10 c, 10 c, 90 c, 7c c, 10 c, 10 c, 70 c, 98 c, 94 c, 60 c, 0 c, 0 c, 0 c, \ ma 0 c, 0 c, 70 c, 10 c, 10 c, 14 c, 14 c, 3c c, 56 c, 94 c, a4 c, 44 c, 8 c, 0 c, 0 c, 0 c, 0 c, 20 c, 20 c, f0 c, 24 c, 24 c, 62 c, a0 c, a0 c, a0 c, 42 c, 42 c, 3c c, 0 c, 0 c, 0 c, 0 c, 8 c, 88 c, 88 c, dc c, ea c, ea c, aa c, b2 c, 92 c, a2 c, 44 c, 8 c, 0 c, 0 c, 0 c, 0 c, 20 c, 20 c, 20 c, f8 c, 20 c, 24 c, a2 c, 7a c, 22 c, 22 c, 22 c, 1c c, 0 c, 0 c, 0 c, 8 c, 44 c, 40 c, 5c c, 22 c, e2 c, 22 c, 24 c, 20 c, 10 c, 10 c, 10 c, 10 c, 0 c, 0 c, 0 c, \ ya 8 c, 8 c, 9c c, aa c, aa c, aa c, aa c, ca c, ca c, 9a c, 8c c, 10 c, 20 c, 0 c, 0 c, 0 c, 0 c, 10 c, 10 c, 10 c, 1e c, 10 c, 10 c, 10 c, 10 c, 70 c, 98 c, 94 c, 62 c, 0 c, 0 c, 0 c, 0 c, 40 c, 20 c, 18 c, 40 c, 40 c, 80 c, b8 c, c4 c, 82 c, 2 c, 4 c, 78 c, 0 c, 0 c, 0 c, \ ra 0 c, 48 c, 94 c, a4 c, a4 c, a4 c, c4 c, c4 c, 84 c, 8 c, 8 c, 10 c, 20 c, 0 c, 0 c, 0 c, 0 c, 7c c, 4 c, 8 c, 10 c, 20 c, 7c c, c2 c, 82 c, 2 c, 32 c, 4c c, 30 c, 0 c, 0 c, 0 c, 0 c, 20 c, 20 c, e4 c, 2c c, 34 c, 34 c, 64 c, 64 c, a4 c, a6 c, 22 c, 22 c, 0 c, 0 c, 0 c, 0 c, 7c c, 4 c, 8 c, 10 c, 20 c, 7c c, c2 c, 82 c, 2 c, 2 c, 4 c, 38 c, 0 c, 0 c, 0 c, 0 c, 20 c, 20 c, e4 c, 2a c, 32 c, 22 c, 62 c, 62 c, a2 c, a2 c, 24 c, 28 c, 0 c, 0 c, 0 c, \ wa 0 c, 20 c, 20 c, f8 c, 20 c, 42 c, 74 c, 88 c, 14 c, 24 c, 40 c, 40 c, 3e c, 0 c, 0 c, 0 c, 0 c, 0 c, 10 c, 10 c, 20 c, 20 c, 20 c, 42 c, 62 c, 52 c, 52 c, 92 c, 94 c, 88 c, 0 c, 0 c, \ n 7 c, 25 c, 17 c, 8 c, 10 c, 20 c, 14 c, 52 c, 4a c, 4a c, 4a c, 8a c, 30 c, 0 c, 0 c, 0 c, 0 c, 0 c, 7c c, 4 c, 8 c, 10 c, 20 c, 7c c, c2 c, 82 c, 2 c, 2 c, 4 c, 38 c, 0 c, 0 c, 7 c, 5 c, 27 c, 50 c, 50 c, 88 c, 88 c, 4 c, 4 c, 4 c, 2 c, 2 c, 2 c, 0 c, 0 c, 0 c, 0 c, 40 c, 20 c, 18 c, 40 c, 40 c, 80 c, 38 c, c4 c, 82 c, 2 c, 4 c, 78 c, 0 c, 0 c, 0 c, 0 c, 20 c, 20 c, fc c, 20 c, 24 c, 3c c, 6a c, aa c, aa c, 92 c, a4 c, 48 c, 30 c, 0 c, 0 c, 0 c, 0 c, 84 c, 84 c, be c, 84 c, 84 c, 84 c, 84 c, 94 c, ac c, a4 c, 9a c, 84 c, 0 c, 0 c, 0 c, 20 c, 20 c, f0 c, 24 c, 22 c, 62 c, a0 c, a0 c, a0 c, 42 c, 42 c, 3c c, 0 c, 0 c, 0 c, 0 c, 0 c, 0 c, 18 c, e4 c, 2 c, 2 c, 2 c, 2 c, 4 c, 8 c, 30 c, 0 c, 0 c, 0 c, 0 c, 0 c, 28 c, 24 c, 22 c, f8 c, 24 c, 24 c, 24 c, 44 c, 44 c, 44 c, 94 c, 8 c, 0 c, 0 c, 0 c, 0 c, 40 c, 40 c, 40 c, 40 c, 40 c, 40 c, 40 c, 42 c, 42 c, 42 c, 44 c, 38 c, 0 c, 0 c, 0 c, 0 c, 0 c, 80 c, 88 c, 84 c, 84 c, 82 c, 82 c, 92 c, a2 c, a2 c, 42 c, 42 c, 0 c, 0 c, 0 c, 4 c, 84 c, 84 c, be c, 84 c, 84 c, 84 c, 84 c, 84 c, 44 c, 44 c, 8 c, 10 c, 0 c, 0 c, 0 c, 2 c, 29 c, 24 c, 20 c, 26 c, 18 c, 20 c, 40 c, 80 c, 80 c, 80 c, 40 c, 3e c, 0 c, 0 c, 0 c, 0 c, 24 c, 22 c, fa c, 20 c, 20 c, 2c c, 32 c, 62 c, a2 c, a2 c, a2 c, 64 c, 20 c, 0 c, 0 c, 0 c, 20 c, 20 c, 20 c, f8 c, 20 c, 24 c, a2 c, 7a c, 22 c, 22 c, 22 c, 1c c, 0 c, 0 c, 0 c, 0 c, 40 c, 40 c, 40 c, 40 c, 40 c, 40 c, 40 c, 42 c, 42 c, 42 c, 44 c, 38 c, 0 c, 0 c, 0 c, 0 c, 0 c, 7c c, 4 c, 8 c, 10 c, 20 c, 7c c, c2 c, 82 c, 2 c, 2 c, 4 c, 38 c, 0 c, 0 c, 0 c, 0 c, 80 c, 88 c, 84 c, 84 c, 82 c, 82 c, 92 c, a2 c, a2 c, 42 c, 42 c, 0 c, 0 c, 0 c, 0 c, 20 c, 10 c, 8 c, 10 c, 20 c, 14 c, 52 c, 4a c, 4a c, 4a c, 8a c, 30 c, 0 c, 0 c, 0 c, 0 c, 24 c, 22 c, fa c, 20 c, 20 c, 2c c, 32 c, 62 c, a2 c, a2 c, a2 c, 64 c, 20 c, 0 c, 0 c, 0 c, 24 c, 22 c, fa c, 20 c, 20 c, 2c c, 32 c, 62 c, a2 c, a2 c, a2 c, 64 c, 20 c, 0 c, 0 c, 0 c, 8 c, 8 c, fe c, 8 c, 28 c, 58 c, 48 c, 48 c, 38 c, 8 c, 8 c, 10 c, 20 c, 0 c, 0 c, 0 c, 20 c, 20 c, 20 c, f8 c, 20 c, 24 c, a2 c, 7a c, 22 c, 22 c, 22 c, 1c c, 0 c, 0 c, 0 c, 0 c, 40 c, 40 c, 64 c, ca c, 52 c, 52 c, 62 c, c2 c, c2 c, cc c, 54 c, 4a c, 0 c, 0 c, 0 c, variable buffer c allot \ buffer = 16byte wvariable mask \ mask(16bit) wvariable dot_mask variable tmp wvariable char_addr wvariable x \ 0 < x < 16(decial) wvariable y \ 0 < y < 10(decial) \ wvariable char_start wvariable char_end wvariable buff_ptr wvariable color_ptr wvariable disp_color variable color 10 allot : command 2 _maskoutlo 4 _maskoutlo \ A0 = L WRX = L 3 lshift outa COG@ or outa COG! \ outa <-- data 4 _maskouthi 2 _maskouthi \ WRX = H A0 = H FFFFF807 outa COG@ and outa COG! ; : parameter 4 _maskoutlo \ WRX = L 3 lshift outa COG@ or outa COG! \ outa <-- data 4 _maskouthi \ WRX = H FFFFF807 outa COG@ and outa COG! \ D0 - D7(P3 - P10) clear ; : lcd_initial 0 b 0 do dup pinout 1+ loop drop \ P0 - P10 output set 1 dup _maskouthi _maskoutlo \ RESX P0 = H to L 2 _maskouthi \ A0 P1 = H 4 _maskouthi \ WRX P2 = H 1 delms 1 _maskouthi \ RESX P0 = H 1 delms CA command \ Timing Control C parameter 3 parameter 0 parameter D parameter 3 parameter 28 parameter 0 parameter 30 delms 94 command \ Sleep Disable 200 delms 5C command 0 A710 0 do dup parameter loop drop \ V-ram initilize AF command \ Display On ; : buffer_copy \ (8bit data --) copy 1-line to buffer buff_ptr W@ swap over C! 1+ buff_ptr W! ; : buffer_read \ (-- 8bit data) buff_ptr W@ C@ buff_ptr dup W@ 1+ swap W! ; : column_set \ (column --) 10 u* dup tmp L! f + dup 8 rshift swap ff and tmp L@ dup 8 rshift swap ff and 15 command parameter parameter parameter parameter ; : page_set \ (page --) 10 u* dup f + swap \ start-addr, atart-addr+f 75 command parameter parameter \ set page ; : font_disp buffer buff_ptr W! char_addr W@ 10 0 do dup C@ \ dup . buffer_copy 1+ loop drop \ cr buffer buff_ptr W! y W@ x W@ column_set page_set color_ptr W@ dup W@ disp_color W! 2+ dup color 14 + > if drop color then color_ptr W! 5c command 10 0 do buffer_read \ read 1-line from buffer \ dup . 80 dot_mask W! 8 0 do dup dot_mask W@ and if disp_color dup W@ 8 rshift parameter ff and parameter else 0 dup parameter parameter then dot_mask dup W@ 1 rshift swap W! loop drop loop \ cr y W@ x W@ 1 + dup f > \ check x>15 if drop 0 swap 1 + dup 9 > \ check y>9 if 2drop 0 dup else swap then then x W! y W! ; : color_list color dup \ 1f swap W! 2+ dup \ blue f800 swap W! 2+ dup f800 swap W! 2+ dup \ red f81f swap W! 2+ dup \ magenda 7e0 swap W! 2+ dup \ green 7fe swap W! 2+ dup \ cyan ffe0 swap W! 2+ dup \ yellow ffff swap W! 2+ dup \ white a18a swap W! 2+ dup \ brown fbc0 swap W! 2+ dup \ orange f998 swap W! \ pink drop ; : LQ020 lcd_initial color_list color color_ptr W! font 2+ char_addr W! font 461 + char_end W! \ font 2e0 + char_end W! 0 dup y W! x W! 100 0 do \ char_addr W@ . font_disp char_addr W@ 10 + dup char_end W@ > if drop font 2 + then char_addr W! loop ;