comparison src/tft.inc @ 0:11d4fc797f74

init
author heinrichsweikamp
date Wed, 24 Apr 2013 19:22:45 +0200
parents
children ec4d8503ec45
comparison
equal deleted inserted replaced
-1:000000000000 0:11d4fc797f74
1 ;=============================================================================
2 ;
3 ; File tft.inc
4 ;
5 ; Declaring interfaces to the TFT screen and its Oxxx controler
6 ;
7 ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved.
8 ;=============================================================================
9 ; HISTORY
10 ; 2011-05-24 : [jDG] Cleanups from initial Matthias code.
11
12 ;=============================================================================
13 ; TFT public subroutines
14 ;=============================================================================
15
16 ; Writes two half-pixels at position (win_top,win_leftx2)
17 ; Inputs: win_leftx2, win_top, win_color:2
18 ; Trashed: WREG, PROD
19 extern pixel_write
20
21 ;-----------------------------------------------------------------------------
22 ; Writes one half-pixel at position (win_top,win_leftx2).
23 ; Inputs: win_leftx2, win_top, win_color:2
24 ; Trashed: WREG, PROD
25 extern half_pixel_write
26
27 ;-----------------------------------------------------------------------------
28 ; TFT_frame : draw a frame around current box with current color.
29 ; Inputs: win_top, win_leftx2, win_height, win_width, win_color1, win_color2
30 ; Outputs: (none)
31 ; Trashed: WREG, PROD, aa_start:2, aa_end:2, win_leftx2, win_width:1
32 extern TFT_frame
33
34 ;-----------------------------------------------------------------------------
35 extern TFT_DisplayOff ; Power-off everything (need a boot next)
36 extern TFT_boot ; Initialize screen hardware
37 extern TFT_Display_FadeIn ; Smooth lighting
38 extern TFT_Display_FadeOut ; Smooth darkening
39 extern TFT_ClearScreen
40 extern TFT_box_write
41 extern TFT_box
42 extern TFT_DataWrite_PROD
43 extern TFT_set_color
44 extern init_pixel_write
45 extern pixel_write
46 extern pixel_write_col320
47 extern half_vertical_line
48 extern half_horizontal_line
49 extern TFT_dump_screen
50
51 ;-----------------------------------------------------------------------------
52 ; Macro to encode standard colors.
53 ; TODO: User preferences... Maybe.
54 TFT_STD_COLOR macro
55 setf WREG ; Default to white
56 call TFT_set_color
57 endm
58
59 TFT_MASK_COLOR macro
60 movlw color_greenish ; Default to OSTC mask-green
61 call TFT_set_color
62 endm
63
64 TFT_ATTENTION_COLOR macro
65 movlw color_yellow ; Default to OSTC yelow
66 call TFT_set_color
67 endm
68
69 TFT_WARNINGS_COLOR macro
70 movlw color_red ; Default to OSTC red
71 call TFT_set_color
72 endm
73
74 ;TFT_DISABLED_COLOR macro
75 ; movlw color_grey ; Default to OSTC grey (dark blue)
76 ; call TFT_set_color
77 ; endm
78
79 ;=============================================================================
80 ; Low level macros (for aa_wordprocessor and color_processor).
81 ;
82 extern TFT_CmdWrite
83 Index_out macro low_b
84 movlw low_b
85 call TFT_CmdWrite
86 endm
87
88 ;=============================================================================
89 ; A shortcut for TFT_box and TFT_frame call sequences.
90 ;
91 extern box_frame_std, box_frame_common, box_frame_color, box_frame_color16
92 extern box_std_block, box_black_block, box_color_block
93
94 ; Erase a given screen area.
95 WIN_BOX_BLACK macro top, bottom, left, right
96 call box_black_block
97 db top, (bottom)-(top)+1, left, (right)-(left)+1
98 endm
99
100 ; Fill a given screen area with standard color (White).
101 WIN_BOX_STD macro top, bottom, left, right
102 call box_std_block
103 db top, (bottom)-(top)+1, left, (right)-(left)+1
104 endm
105
106 ; Fill a given screen area with color from WREG (8bits rrrgggbb)
107 WIN_BOX_COLOR macro top, bottom, left, right
108 call box_color_block
109 db top, (bottom)-(top)+1, left, (right)-(left)+1
110 endm
111
112 ; Draw a frame in standard color (White).
113 WIN_FRAME_STD macro top, bottom, left, right
114 call box_frame_std
115 db top, (bottom)-(top)+1, left, (right)-(left)+1
116 endm
117
118 ; Draw a frame with color from WREG (8bits rrrgggbb)
119 WIN_FRAME_COLOR macro top, bottom, left, right
120 call box_frame_color
121 db top, (bottom)-(top)+1, left, (right)-(left)+1
122 endm
123
124 ; Draw a frame with color from win_color (16bits in TFT format)
125 WIN_FRAME_COLOR16 macro top, bottom, left, right
126 call box_frame_color16
127 db top, (bottom)-(top)+1, left, (right)-(left)+1
128 endm
129
130 WIN_FONT macro win_font_input
131 movlw win_font_input
132 movff WREG,win_font
133 endm
134
135 WIN_TOP macro win_top_input
136 movlw win_top_input
137 movff WREG,win_top
138 endm
139
140 WIN_HEIGHT macro h
141 movlw h
142 movff WREG,win_height
143 endm
144
145 WIN_LEFT macro win_left_input
146 movlw win_left_input
147 movff WREG,win_leftx2
148 endm
149
150 WIN_WIDTH macro w
151 movlw w
152 movff WREG,win_width
153 endm
154
155 WIN_INVERT macro win_invert_input
156 movlw win_invert_input
157 movff WREG,win_invert
158 endm
159
160 WIN_COLOR macro win_color_input
161 movlw win_color_input
162 call TFT_set_color
163 endm
164
165 ;=============================================================================
166 ; TFT_write_flash_image
167 ;
168 ; Inputs: cx, cy : Image center (in 0..160 x 0..240 range)
169 ; image : flash image header's address
170 ; Outputs: win_top, win_left, win_height, win_width
171 ; image copyed on screen.
172 ; Trashed: PROD, hi, lo
173 ;
174 extern TFT_write_flash_image
175 extern TFT_write_flash_image_addr
176 TFT_WRITE_FLASH_IMAGE macro cx, cy, image
177 If LOW(image) != 0
178 Error "Image "image" mis-aligned"
179 Endif
180 If (UPPER(image) & 0xF0) != 0x30
181 Error "Image "image" not in image flash memory"
182 Endif
183 If (cx < 0) || (cx > 160)
184 Error "Image center's X "cx" not in 0..160 range".
185 Endif
186 If (cy < 0) || (cy > 240)
187 Error "Image center's Y "cy" not in 0..240 range".
188 Endif
189 ; Once we know image is aligned, we can use the compact (4bytes)
190 ; 12bit registers to pass the address:
191 lfsr FSR2, ((image)>>8) & 0xFFF
192 WIN_LEFT cx
193 WIN_TOP cy
194 call TFT_write_flash_image
195 endm
196
197 ;=============================================================================
198 ; TFT_write_prom_image
199 ;
200 TFT_WRITE_PROM_IMAGE macro icon
201 extern icon, color_image
202 movlw LOW(icon)
203 movwf TBLPTRL
204 movlw HIGH(icon)
205 movwf TBLPTRH
206 movlw UPPER(icon)
207 movwf TBLPTRU
208 call color_image
209 endm
210
211 ;=============================================================================
212 ; Macro to provides our own interface code.
213 ;
214 PIXEL_WRITE macro colRegister, rowRegister
215 movff colRegister,win_leftx2
216 movff rowRegister,win_top
217 call pixel_write
218 endm
219
220 INIT_PIXEL_WROTE macro colRegister
221 movff colRegister,win_leftx2
222 call init_pixel_write
223 endm
224
225 HALF_PIXEL_WRITE macro rowRegister
226 movff rowRegister,win_top
227 call half_pixel_write
228 endm
229