annotate code_part1/OSTC_code_asm_part1/display_lowlevel.asm @ 841:8d73c9dcf851 default tip

3.16 release
author mh
date Tue, 24 Oct 2023 10:38:04 +0200
parents b317df6bc367
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
815
2a0e5d884fc3 BUGFIX: Fix licence in German
heinrichsweikamp
parents: 798
diff changeset
1 ; OSTC Mk.2, 2N and 2C - diving computer code
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
2 ; Copyright (C) 2009 HeinrichsWeikamp GbR
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
3
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
4 ; This program is free software: you can redistribute it and/or modify
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
5 ; it under the terms of the GNU General Public License as published by
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
6 ; the Free Software Foundation, either version 3 of the License, or
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
7 ; (at your option) any later version.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
8
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
9 ; This program is distributed in the hope that it will be useful,
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
10 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
11 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
12 ; GNU General Public License for more details.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
13
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
14 ; You should have received a copy of the GNU General Public License
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
15 ; along with this program. If not, see <http://www.gnu.org/licenses/>.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
16
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
17
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
18 ; written by: Matthias Heinrichs, info@heinrichsweikamp.com
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
19 ; written: 090801
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
20 ; History:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
21 ; 2009-08-30: [MH] last updated.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
22 ; 2011-01-07: [jDG] Added flip_screen option
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
23 ; known bugs: pixel-write (loogbok curves) not done yet...
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
24 ; ToDo:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
25
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
26 WIN_FONT macro win_font_input
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
27 movlw win_font_input
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
28 movff WREG,win_font
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
29 endm
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
30
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
31 WIN_TOP macro win_top_input
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
32 movlw win_top_input
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
33 movff WREG,win_top
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
34 endm
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
35
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
36 WIN_LEFT macro win_left_input
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
37 movlw win_left_input
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
38 movff WREG,win_leftx2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
39 endm
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
40
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
41 WIN_INVERT macro win_invert_input
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
42 movlw win_invert_input
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
43 movff WREG,win_invert
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
44 endm
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
45
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
46 WIN_COLOR macro win_color_input
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
47 movlw win_color_input
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
48 call DISP_set_color
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
49 endm
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
50
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
51 ;=============================================================================
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
52
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
53 word_processor: ; word_processor:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
54 clrf POSTINC2 ; Required, to mark end of string.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
55 call aa_wordprocessor
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
56 movlb b'00000001' ; Back to Rambank1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
57 return
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
58
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
59 ;=============================================================================
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
60 ; Macro to provides our own interface code.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
61 ;
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
62 PIXEL_WRITE macro colRegister, rowRegister
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
63 movff colRegister,win_leftx2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
64 movff rowRegister,win_top
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
65 call pixel_write
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
66 endm
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
67
707
2129862bbfe6 correct a typo
heinrichsweikamp
parents: 706
diff changeset
68 INIT_PIXEL_WRITE macro colRegister
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
69 movff colRegister,win_leftx2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
70 call init_pixel_write
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
71 endm
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
72
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
73 HALF_PIXEL_WRITE macro rowRegister
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
74 movff rowRegister,win_top
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
75 call half_pixel_write
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
76 endm
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
77
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
78 ;-----------------------------------------------------------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
79 ; Init for half_pixel_write
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
80 ; Set column register on DISPLAY device, and current color.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
81 ; Inputs: win_leftx2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
82 ; Outputs: win_color:2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
83 ; Trashed: WREG, PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
84 init_pixel_write:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
85 movff win_leftx2,WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
86 mullw 2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
87 rcall pixel_write_col320 ; Start Address Vertical (.0 - .319)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
88 goto DISP_standard_color
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
89
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
90 ;-----------------------------------------------------------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
91 ; Writes two half-pixels at position (win_top,win_leftx2)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
92 ; Inputs: win_leftx2, win_top, win_color:2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
93 ; Trashed: WREG, PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
94 pixel_write:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
95 movff win_leftx2,WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
96 mullw 2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
97 rcall pixel_write_col320 ; Start Address Vertical (.0 - .319)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
98 rcall half_pixel_write ; Write this half-one.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
99
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
100 movff win_leftx2,WREG ; Address of next one
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
101 mullw 2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
102 infsnz PRODL ; +1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
103 incf PRODH
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
104 rcall pixel_write_col320
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
105 bra half_pixel_write ; Note: Cmd 0x20 is mandatory, because
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
106 ; of the autoincrement going vertical
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
107
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
108 ;---- Do the 16bit 319-X-->X, if needed, and send to DISPLAY ------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
109 pixel_write_col320:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
110 movff win_flags,WREG ; BEWARE: bank0 bit-test
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
111 btfsc WREG,1 ; Display1
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
112 bra pixel_write_noflip_H_display1 ; Yes.
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
113 btfss WREG,0 ; 180° rotation ?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
114 bra pixel_write_noflip_H
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
115
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
116 movf PRODL,W ; 16bits 319 - PROD --> PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
117 sublw LOW(.319) ; 319-W --> W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
118 movwf PRODL
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
119 movf PRODH,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
120 btfss STATUS,C ; Borrow = /CARRY
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
121 incf WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
122 sublw HIGH(.319)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
123 movwf PRODH
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
124
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
125 pixel_write_noflip_H:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
126 movlw 0x21 ; Start Address Vertical (.0 - .319)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
127 rcall DISP_CmdWrite
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
128 bra DISP_DataWrite_PROD ; And return...
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
129
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
130 pixel_write_noflip_H_display1:
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
131 movlw 0x06
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
132 rcall DISP_CmdWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
133 movf PRODH,W
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
134 rcall DISP_DataWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
135 movlw 0x07
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
136 rcall DISP_CmdWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
137 movf PRODL,W
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
138 rcall DISP_DataWrite
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
139
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
140 incf PRODL,F
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
141 movlw .0
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
142 addwfc PRODH,F ;+1
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
143
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
144 movlw 0x08
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
145 rcall DISP_CmdWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
146 movf PRODH,W
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
147 rcall DISP_DataWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
148 movlw 0x09
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
149 rcall DISP_CmdWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
150 movf PRODL,W
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
151 bra DISP_DataWrite ; And return...
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
152
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
153
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
154 ;-----------------------------------------------------------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
155 ; Writes a vertical line of half-pixel at position (win_top,win_leftx2,win_height).
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
156 ; Inputs: win_leftx2, win_top, win_height, win_color:2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
157 ; Trashed: WREG, PROD, TABLAT, TBLPTRL
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
158 half_vertical_line:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
159 clrf TABLAT ; Loop index.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
160
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
161 half_vertical_line_loop:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
162 movff win_leftx2,WREG ; Init X position.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
163 mullw 2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
164 movf TABLAT,W ; Get loop index
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
165 andlw 1 ; Just low bit
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
166 xorwf PRODL,F ; And use it to jitter current X position
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
167 rcall pixel_write_col320 ; Start Address Vertical (.0 - .319)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
168
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
169 movff win_height,WREG ; Index reached height (Bank0 read) ?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
170 xorwf TABLAT,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
171 btfsc STATUS,Z ; Equals ?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
172 return ; Yes: done.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
173 movff win_top,WREG ; Y = top + index (Bank0 read)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
174 addwf TABLAT,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
175 rcall half_pixel_write_1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
176 incf TABLAT,F ; index++
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
177 bra half_vertical_line_loop
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
178
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
179 ;-----------------------------------------------------------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
180 ; Writes one half-pixel at position (win_top,win_leftx2).
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
181 ; Inputs: win_leftx2, win_top, win_color:2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
182 ; Trashed: WREG, PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
183 half_pixel_write:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
184 movff win_top,WREG ; d'0' ... d'239'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
185 ; Variant with Y position in WREG.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
186 half_pixel_write_1:
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
187 movff win_flags,PRODL ; Display1? win_flags is in bank0...
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
188 btfsc PRODL,1
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
189 bra half_pixel_write_1_display1 ; Yes.
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
190
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
191 btfsc PRODL,0 ; 180° rotation ?
836
heinrichsweikamp
parents: 835
diff changeset
192 sublw .239 ; 239-Y --> Y
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
193 mullw 1 ; Copy row to PRODL (PRODH=0)
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
194
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
195 movlw 0x20 ; Horizontal Address START:END
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
196 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
197 rcall DISP_DataWrite_PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
198
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
199 movlw 0x22 ; Start Writing Data to GRAM
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
200 rcall DISP_CmdWrite
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
201 bsf DISPLAY_rs ; Data!
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
202 movff win_color1, PORTD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
203 bcf DISPLAY_rw
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
204 bsf DISPLAY_rw ; Upper
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
205 movff win_color2, PORTD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
206 bcf DISPLAY_rw
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
207 bsf DISPLAY_rw ; Lower
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
208 return ; Done.
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
209
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
210 half_pixel_write_1_display1:
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
211 mullw 1 ; Copy row to PRODL (PRODH=0)
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
212 ; Row address start
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
213 movlw 0x02
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
214 rcall DISP_CmdWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
215 movlw .0
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
216 rcall DISP_DataWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
217 movlw 0x03
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
218 rcall DISP_CmdWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
219 movf PRODL,W
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
220 rcall DISP_DataWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
221
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
222 incf PRODL,F
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
223
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
224 movlw 0x04
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
225 rcall DISP_CmdWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
226 movlw .0
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
227 rcall DISP_DataWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
228 movlw 0x05
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
229 rcall DISP_CmdWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
230 movf PRODL,W
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
231 rcall DISP_DataWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
232
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
233 movlw 0x22 ; Start Writing Data to GRAM
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
234 rcall DISP_CmdWrite
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
235 bsf DISPLAY_rs ; Data!
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
236 movff win_color4, PORTD
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
237 bcf DISPLAY_rw
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
238 bsf DISPLAY_rw ; Upper
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
239 movff win_color5, PORTD
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
240 bcf DISPLAY_rw
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
241 bsf DISPLAY_rw ; High
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
242 movff win_color6, PORTD
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
243 bcf DISPLAY_rw
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
244 bsf DISPLAY_rw ; Lower
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
245 return
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
246
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
247
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
248 ; -----------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
249 ; DISP Display Off
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
250 ; -----------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
251 DISP_DisplayOff:
835
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
252 rcall DISP_ClearScreen
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
253
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
254 movff win_flags,WREG ; Display0? win_flags is in bank0...
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
255 btfss WREG,1 ; Display0?
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
256 bra DISP_DisplayOff_display0 ; Yes
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
257
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
258 ; Display 1
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
259 clrf PORTD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
260 bcf DISPLAY_hv
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
261 bcf DISPLAY_cs
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
262 bcf DISPLAY_e_nwr
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
263 bcf DISPLAY_rw
835
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
264 bcf DISPLAY_rs
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
265 bcf DISPLAY_nreset
835
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
266 bcf DISPLAY_vdd
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
267 return
835
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
268
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
269 DISP_DisplayOff_display0:
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
270 movlw 0x05
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
271 rcall DISP_CmdWrite
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
272 movlw 0x00
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
273 rcall DISP_DataWrite
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
274 movlw 0x00
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
275 rcall DISP_DataWrite
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
276 WAITMS d'32'
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
277 bcf DISPLAY_hv
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
278 WAITMS d'32'
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
279 movlw 0x10
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
280 rcall DISP_CmdWrite
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
281 movlw 0x00
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
282 rcall DISP_DataWrite
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
283 movlw 0x01
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
284 rcall DISP_DataWrite
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
285 WAITMS d'100'
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
286 clrf PORTD
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
287 bcf DISPLAY_cs
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
288 bcf DISPLAY_e_nwr
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
289 bcf DISPLAY_rw
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
290 bcf DISPLAY_rs
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
291 bcf DISPLAY_nreset
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
292 WAITMS d'10'
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
293 bcf DISPLAY_vdd
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
294 return
30136fc61392 Change power-off sequence
heinrichsweikamp
parents: 815
diff changeset
295
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
296
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
297 ;=============================================================================
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
298 ; Fast macros to write to DISPLAY display.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
299 ; Adding a call/return adds 3 words and a pipeline flush, hence make it
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
300 ; nearly twice slower...
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
301 ;
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
302 ; Input : commande as macro parameter.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
303 ; Output : NONE
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
304 ; Trash : WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
305 ;
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
306 AA_CMD_WRITE macro cmd
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
307 movlw cmd
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
308 rcall DISP_CmdWrite ; slow but saves a lot of bytes in flash
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
309 endm
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
310 ;
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
311 ; Input : data as macro parameter.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
312 ; Output : NONE
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
313 ; Trash : WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
314 ;
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
315 AA_DATA_WRITE macro data
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
316 movlw data
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
317 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
318 endm
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
319 ;
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
320 ; Input : PRODH:L as 16bits data.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
321 ; Output : NONE
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
322 ; Trash : NONE
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
323 ;
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
324 AA_DATA_WRITE_PROD macro
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
325 rcall DISP_DataWrite_PROD ; slow but saves a lot of bytes in flash
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
326 endm
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
327
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
328 ;=============================================================================
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
329 ; Output DISPLAY Window Address commands.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
330 ; Inputs : win_top, win_leftx2, win_height, aa_width.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
331 ; Output : PortD commands.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
332 ; Trashed: PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
333 ;
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
334 DISP_box_write:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
335 movff win_flags,WREG ; Display1? win_flags is in bank0...
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
336 btfsc WREG,1 ; Display1?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
337 bra DISP_box_write_display1 ; Yes
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
338
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
339 movff win_leftx2,WREG ; Compute left = 2*leftx2 --> PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
340 mullw 2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
341
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
342 movff win_flags,WREG ; BEWARE: bank0 bit-test
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
343 btfsc WREG,0 ; 180° rotation ?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
344 bra DISP_box_flip_H ; YES:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
345
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
346 ;---- Normal horizontal window ---------------------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
347 ; Output 0x35 left,
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
348 ; 0x36 right == left + width - 1.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
349 AA_CMD_WRITE 0x35 ; this is the left border
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
350 AA_DATA_WRITE_PROD ; Output left
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
351 AA_CMD_WRITE 0x21 ; Also the horizontal first pix coord.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
352 AA_DATA_WRITE_PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
353
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
354 movf aa_width+0,W,ACCESS ; right = left + width - 1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
355 addwf PRODL,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
356 movf aa_width+1,W,ACCESS
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
357 addwfc PRODH,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
358 decf PRODL,F,A ; decrement result
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
359 btfss STATUS,C
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
360 decf PRODH,F,A
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
361
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
362 AA_CMD_WRITE 0x36 ; Write and the right border
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
363 AA_DATA_WRITE_PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
364
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
365 bra DISP_box_noflip_H
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
366
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
367 ;---- Flipped horizontal window --------------------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
368 DISP_box_flip_H:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
369 ; Output 0x36 flipped(left) = 319-left
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
370 ; 0x35 flipped(right) = 319-right = 320 - left - width
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
371 movf PRODL,W ; 16bits 319 - PROD --> PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
372 sublw LOW(.319) ; 319-W --> W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
373 movwf PRODL
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
374 movf PRODH,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
375 btfss STATUS,C ; Borrow = /CARRY
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
376 incf WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
377 sublw HIGH(.319)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
378 movwf PRODH
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
379 AA_CMD_WRITE 0x36 ; this is the left border
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
380 AA_DATA_WRITE_PROD ; Output left
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
381 AA_CMD_WRITE 0x21
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
382 AA_DATA_WRITE_PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
383
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
384 movf aa_width+0,W ; 16bits PROD - width --> PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
385 subwf PRODL,F ; PRODL - WREG --> PRODL
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
386 movf aa_width+1,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
387 subwfb PRODH,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
388 infsnz PRODL ; PROD+1 --> PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
389 incf PRODH
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
390 AA_CMD_WRITE 0x35 ; this is the left border
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
391 AA_DATA_WRITE_PROD ; Output left
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
392
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
393 DISP_box_noflip_H:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
394 movff win_flags,WREG ; BEWARE: bank0 bit-test
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
395 btfsc WREG,0 ; 180° rotation ?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
396 bra DISP_box_flip_V
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
397
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
398 ;---- Normal vertical window -----------------------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
399 ; Output 0x37 (top) (bottom)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
400 movff win_top,PRODH ; top --> PRODH (first byte)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
401 movff win_height,WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
402 addwf PRODH,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
403 decf WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
404 movwf PRODL ; top+height-1 --> PRODL (second byte)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
405
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
406 AA_CMD_WRITE 0x37
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
407 AA_DATA_WRITE_PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
408
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
409 movff PRODH,PRODL
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
410 clrf PRODH ; Start pixel V coord == top.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
411 AA_CMD_WRITE 0x20
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
412 AA_DATA_WRITE_PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
413
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
414 return
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
415
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
416 ;---- Flipped vertical window ----------------------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
417 ; Output 0x37 flipped(bottom) = 239-bottom = 240 - top - height
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
418 ; flipped(top) = 239-top
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
419 DISP_box_flip_V:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
420 movff win_top,PRODL
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
421 movff win_height,WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
422 addwf PRODL,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
423 sublw .240 ; 240 - top - height
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
424 movwf PRODH ; First byte
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
425
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
426 movf PRODL,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
427 sublw .239 ; 249-top
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
428 movwf PRODL ; --> second byte.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
429
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
430 AA_CMD_WRITE 0x37
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
431 AA_DATA_WRITE_PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
432
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
433 clrf PRODH ; Start pixel V coord.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
434 AA_CMD_WRITE 0x20
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
435 AA_DATA_WRITE_PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
436
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
437 return
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
438
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
439 DISP_box_write_display1:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
440 movff win_leftx2,WREG ; Compute left = 2*leftx2 --> PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
441 mullw 2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
442
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
443 movlw 0x06
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
444 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
445 movf PRODH,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
446 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
447 movlw 0x07
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
448 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
449 movf PRODL,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
450 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
451
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
452 movf aa_width+0,W,ACCESS ; right = left + width - 1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
453 addwf PRODL,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
454 movf aa_width+1,W,ACCESS
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
455 addwfc PRODH,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
456 decf PRODL,F,A ; decrement result
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
457 btfss STATUS,C
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
458 decf PRODH,F,A
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
459
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
460 movlw 0x08
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
461 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
462 movf PRODH,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
463 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
464 movlw 0x09
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
465 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
466 movf PRODL,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
467 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
468
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
469 ;---- Normal vertical window -----------------------------------------
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
470 ; Output (top) (bottom)
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
471 movff win_top,PRODH ; top --> PRODH (first byte)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
472 movff win_height,WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
473 addwf PRODH,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
474 decf WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
475 movwf PRODL ; top+height-1 --> PRODL (second byte)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
476
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
477 movlw 0x02
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
478 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
479 movlw 0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
480 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
481 movlw 0x03
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
482 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
483 movf PRODH,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
484 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
485
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
486 movlw 0x04
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
487 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
488 movlw 0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
489 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
490 movlw 0x05
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
491 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
492 movf PRODL,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
493 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
494 return
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
495
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
496 ;=============================================================================
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
497 ; DISP_frame : draw a frame around current box with current color.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
498 ; Inputs: win_top, win_leftx2, win_height, win_width, win_color1, win_color2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
499 ; Outputs: (none)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
500 ; Trashed: WREG, PROD, aa_start:2, aa_end:2, win_leftx2, win_width:1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
501 global DISP_frame
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
502 DISP_frame:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
503 movff win_top,aa_start+0 ; Backup everything.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
504 movff win_height,aa_start+1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
505 movff win_leftx2,aa_end+0
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
506 movff win_width,aa_end+1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
507
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
508 ;---- TOP line -----------------------------------------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
509 movlw 1 ; row ~ height=1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
510 movff WREG,win_height
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
511 rcall DISP_box
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
512
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
513 ;---- BOTTOM line --------------------------------------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
514 movff aa_start+0,PRODL ; Get back top,
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
515 movff aa_start+1,WREG ; and height
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
516 addwf PRODL,W ; top+height
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
517 decf WREG ; top+height-1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
518 movff WREG,win_top ; top+height-1 --> top
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
519 rcall DISP_box
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
520
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
521 ;---- LEFT column --------------------------------------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
522 movff aa_start+0,win_top ; Restore top/height.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
523 movff aa_start+1,win_height
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
524 movlw 1 ; column ~ width=1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
525 movff WREG,win_width
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
526 rcall DISP_box
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
527
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
528 ;---- RIGHT column -------------------------------------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
529 movff aa_end+0,WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
530 movff aa_end+1,PRODL
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
531 addwf PRODL,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
532 decf WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
533 movff WREG,win_leftx2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
534 bra DISP_box
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
535
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
536 ;=============================================================================
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
537 ; DISP_box : fills current box with current color.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
538 ; Inputs: win_top, win_leftx2, win_height, win_width, win_color1, win_color2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
539 ; Outputs: (none)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
540 ; Trashed: WREG, PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
541
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
542 global DISP_box
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
543 DISP_box:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
544 ;---- Define Window ------------------------------------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
545 movff win_width,WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
546 bcf STATUS,C
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
547 rlcf WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
548 movwf aa_width+0
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
549 movlw 0
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
550 rlcf WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
551 movwf aa_width+1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
552 rcall DISP_box_write
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
553
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
554 ;---- Fill Window --------------------------------------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
555 movlw 0x22 ; Start Writing Data to GRAM
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
556 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
557
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
558 clrf PRODH ; Column counter.
719
ad5ab9910820 decoplan bargraph
heinrichsweikamp
parents: 713
diff changeset
559 bsf DISPLAY_rs ; Data!
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
560 DISP_box2: ; Loop height times
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
561 movff win_height,PRODL
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
562
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
563 DISP_box3: ; loop width times
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
564 movff win_flags,WREG ; Display1? win_flags is in bank0...
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
565 btfsc WREG,1 ; Display1?
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
566 bra DISP_box3aa ; Yes
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
567
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
568 movff win_color1,PORTD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
569 bcf DISPLAY_rw
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
570 bsf DISPLAY_rw ; Upper
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
571 movff win_color2,PORTD
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
572 bra DISP_box3a ; Done.
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
573 DISP_box3aa:
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
574 movff win_color4,PORTD
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
575 bcf DISPLAY_rw
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
576 bsf DISPLAY_rw ; Upper
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
577 movff win_color5,PORTD
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
578 bcf DISPLAY_rw
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
579 bsf DISPLAY_rw ; Lower/High
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
580 movff win_color6,PORTD
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
581
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
582 DISP_box3a:
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
583 bcf DISPLAY_rw
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
584 bsf DISPLAY_rw ; Lower/High
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
585
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
586 movff win_flags,WREG ; Display1? win_flags is in bank0...
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
587 btfsc WREG,1 ; Display1?
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
588 bra DISP_box3ab ; Yes
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
589
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
590 movff win_color1,PORTD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
591 bcf DISPLAY_rw
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
592 bsf DISPLAY_rw ; Upper
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
593 movff win_color2,PORTD
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
594 bra DISP_box3b
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
595
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
596 DISP_box3ab:
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
597 movff win_color4,PORTD
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
598 bcf DISPLAY_rw
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
599 bsf DISPLAY_rw ; Upper
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
600 movff win_color5,PORTD
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
601 bcf DISPLAY_rw
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
602 bsf DISPLAY_rw ; High
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
603 movff win_color6,PORTD
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
604
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
605 DISP_box3b:
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
606 bcf DISPLAY_rw
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
607 bsf DISPLAY_rw ; Lower
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
608 decfsz PRODL,F ; row loop finished ?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
609 bra DISP_box3 ; No: continue.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
610
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
611 incf PRODH,F ; column count ++
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
612
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
613 movff win_bargraph,WREG ; current column == bargraph ?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
614 cpfseq PRODH
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
615 bra DISP_box4 ; No: just loop.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
616
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
617 clrf WREG ; Yes: switch to black
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
618 movff WREG,win_color1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
619 movff WREG,win_color2
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
620 movff WREG,win_color3
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
621 movff WREG,win_color4
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
622 movff WREG,win_color5
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
623 movff WREG,win_color6
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
624 DISP_box4:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
625 movff win_width,WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
626 cpfseq PRODH
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
627 bra DISP_box2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
628
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
629 setf WREG ; Reset bargraph mode...
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
630 movff WREG,win_bargraph
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
631
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
632 movff win_flags,WREG ; Display1? win_flags is in bank0...
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
633 btfsc WREG,1 ; Display1?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
634 return ; Yes, done.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
635
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
636 movlw 0x00 ; NOP, to stop window mode
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
637 bra DISP_CmdWrite ; Returns....
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
638
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
639 ;=============================================================================
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
640 ; DISP_ClearScreen: An optimized version of PLEX_box, for full screen black.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
641 ; Trashed: WREG, PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
642
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
643 global DISP_ClearScreen
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
644 DISP_ClearScreen:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
645 movff win_flags,WREG ; Display1? win_flags is in bank0...
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
646 btfsc WREG,1 ; Display1?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
647 bra DISP_ClearScreen_display1; Yes
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
648
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
649 movlw 0x35 ; VerticalStartAddress HIGH:LOW
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
650 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
651 mullw 0
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
652 rcall DISP_DataWrite_PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
653
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
654 movlw 0x36 ; VerticalEndAddress HIGH:LOW
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
655 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
656 movlw 0x01
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
657 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
658 movlw 0x3F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
659 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
660
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
661 movlw 0x37 ; HorizontalAddress START:END
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
662 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
663 movlw 0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
664 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
665 movlw 0xEF
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
666 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
667
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
668 movlw 0x20 ; Start Address Horizontal (.0 - .239)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
669 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
670 rcall DISP_DataWrite_PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
671
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
672 movlw 0x21 ; Start Address Vertical (.0 - .319)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
673 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
674 rcall DISP_DataWrite_PROD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
675
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
676 movlw 0x22 ; Start Writing Data to GRAM
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
677 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
678
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
679 ; See Page 101 of DISPLAY Driver IC Datasheet how to handle rs/rw clocks
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
680 bsf DISPLAY_rs ; Data!
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
681 clrf PORTD
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
682 movlw .160
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
683 movwf PRODH
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
684 DISP_ClearScreen2:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
685 movlw .240
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
686 movwf PRODL
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
687 DISP_ClearScreen3:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
688 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
689 bsf DISPLAY_rw ; Upper
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
690 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
691 bsf DISPLAY_rw ; Lower
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
692 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
693 bsf DISPLAY_rw ; Upper
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
694 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
695 bsf DISPLAY_rw ; Lower
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
696 decfsz PRODL,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
697 bra DISP_ClearScreen3
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
698 decfsz PRODH,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
699 bra DISP_ClearScreen2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
700 movlw 0x00 ; NOP, to stop Address Update Counter
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
701 bra DISP_CmdWrite ; And return...
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
702
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
703 DISP_ClearScreen_display1:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
704 ; Column Address start
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
705 movlw 0x02
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
706 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
707 movlw 0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
708 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
709 movlw 0x03
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
710 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
711 movlw 0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
712 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
713
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
714 ; Column Address end
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
715 movlw 0x04
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
716 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
717 movlw 0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
718 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
719 movlw 0x05
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
720 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
721 movlw 0xEF
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
722 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
723
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
724 ; Row address start
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
725 movlw 0x06
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
726 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
727 movlw 0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
728 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
729 movlw 0x07
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
730 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
731 movlw 0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
732 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
733
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
734 ; Row address end
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
735 movlw 0x08
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
736 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
737 movlw 0x01
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
738 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
739 movlw 0x09
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
740 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
741 movlw 0x3F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
742 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
743
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
744 movlw 0x22 ; Start Writing Data to GRAM
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
745 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
746
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
747 bsf DISPLAY_rs ; Data!
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
748
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
749 movlw .160
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
750 movwf PRODH
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
751 DISP_ClearScreen2_display1:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
752 movlw .240
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
753 movwf PRODL
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
754 clrf PORTD
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
755 DISP_ClearScreen3_display1:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
756 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
757 bsf DISPLAY_rw ; Upper
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
758 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
759 bsf DISPLAY_rw ; High
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
760 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
761 bsf DISPLAY_rw ; Lower
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
762 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
763 bsf DISPLAY_rw ; Upper
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
764 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
765 bsf DISPLAY_rw ; High
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
766 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
767 bsf DISPLAY_rw ; Lower
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
768 decfsz PRODL,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
769 bra DISP_ClearScreen3_display1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
770 decfsz PRODH,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
771 bra DISP_ClearScreen2_display1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
772 return
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
773
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
774
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
775 ; -----------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
776 ; DISP Write Cmd via W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
777 ; -----------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
778 DISP_CmdWrite:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
779 bcf DISPLAY_rs ; Command!
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
780 movwf PORTD ; Move Data to PORTD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
781 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
782 bsf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
783 return
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
784
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
785 ; -----------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
786 ; DISP Write Display Data via W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
787 ; -----------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
788 DISP_DataWrite:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
789 bsf DISPLAY_rs ; Data!
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
790 movwf PORTD ; Move Data to PORTD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
791 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
792 bsf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
793 return
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
794
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
795 ; -----------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
796 ; DISP Data Cmd via W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
797 ; -----------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
798 DISP_DataWrite_PROD:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
799 bsf DISPLAY_rs ; Data!
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
800 movff PRODH,PORTD ; Move high byte to PORTD (DISPLAY is bigendian)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
801 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
802 bsf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
803 movff PRODL,PORTD ; Move low byte to PORTD
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
804 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
805 bsf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
806 movff win_flags,WREG ; Display1? win_flags is in bank0...
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
807 btfss WREG,1 ; Display1?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
808 return ; No, done.
705
55983c4d6b2d aa fonts processor
heinrichsweikamp
parents: 693
diff changeset
809 movff win_color3,PORTD ; Move low(est) byte to PORTD
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
810 bcf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
811 bsf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
812 return
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
813
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
814
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
815 ; -----------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
816 ; DISP Read data into WREG
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
817 ; -----------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
818 ; NOTE: you should "setf TRISD" before calling this function,
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
819 ; to make PortD an input port...
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
820 DISP_DataRead:
687
a8a36c85e031 ignore screenshots with display1 (for now)
heinrichsweikamp
parents: 684
diff changeset
821 movff win_flags,WREG ; Display1? win_flags is in bank0...
a8a36c85e031 ignore screenshots with display1 (for now)
heinrichsweikamp
parents: 684
diff changeset
822 btfsc WREG,1 ; Display1?
a8a36c85e031 ignore screenshots with display1 (for now)
heinrichsweikamp
parents: 684
diff changeset
823 return ; Yes, done.
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
824 bsf DISPLAY_rs ; Data register.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
825 bcf DISPLAY_e_nwr ; Read enable.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
826 nop
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
827 nop
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
828 nop
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
829 nop
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
830 movf PORTD,W ; Read byte.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
831 bsf DISPLAY_e_nwr ; release bus.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
832 return
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
833
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
834 ; -----------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
835 ; DISP boot
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
836 ; -----------------------------
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
837 DISPLAY_boot:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
838 movlw LOW 0x17FDC
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
839 movwf TBLPTRL
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
840 movlw HIGH 0x17FDC
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
841 movwf TBLPTRH
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
842 movlw UPPER 0x17FDC
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
843 movwf TBLPTRU
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
844 TBLRD*
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
845 movlw 0x01
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
846 cpfseq TABLAT ; Display1?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
847 bra display0_init ; No, Display0
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
848
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
849 banksel win_flags
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
850 bsf win_flags,0
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
851 bsf win_flags,1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
852 banksel flag1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
853 bcf DISPLAY_hv ; Backlight off
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
854 nop
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
855 bcf DISPLAY_vdd
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
856 WAITMS d'10'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
857 bsf DISPLAY_vdd
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
858 WAITMS d'100'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
859 bsf DISPLAY_rw
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
860 nop
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
861 bcf DISPLAY_cs
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
862 nop
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
863 bsf DISPLAY_nreset
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
864 WAITMS d'1'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
865 bcf DISPLAY_nreset
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
866 WAIT10US d'2'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
867 bsf DISPLAY_nreset
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
868 WAITMS d'120'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
869 bsf DISPLAY_e_nwr ; release bus.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
870 rcall display1_init ; Init sequence
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
871 rcall DISP_ClearScreen
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
872 WAITMS d'60'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
873 bsf DISPLAY_hv ; Backlight on
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
874 return
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
875
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
876 display1_init:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
877 movlw LOW display1_config_table
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
878 movwf TBLPTRL
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
879 movlw HIGH display1_config_table
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
880 movwf TBLPTRH
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
881 movlw UPPER display1_config_table
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
882 movwf TBLPTRU
688
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
883 display1_init_loop:
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
884 TBLRD*+
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
885 movlw 0xFF
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
886 cpfseq TABLAT
688
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
887 bra display1_config_write ; Write Config pair to Display
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
888 ; Delay ms or quit (return)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
889 TBLRD*+
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
890 tstfsz TABLAT ; End of config?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
891 bra $+4 ; No
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
892 return ; Done.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
893 movf TABLAT,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
894 call WAITMSX ; Wait WREG milliseconds
688
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
895 bra display1_init_loop ; Loop
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
896
688
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
897 display1_config_write: ; With command in WREG
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
898 movf TABLAT,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
899 rcall DISP_CmdWrite ; Write command
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
900 TBLRD*+ ; Get config
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
901 movf TABLAT,W
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
902 rcall DISP_DataWrite ; Write config
688
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
903 bra display1_init_loop ; Loop
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
904
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
905
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
906 display1_config_table:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
907 ; Reg, Dat or 0xFF, Delay or 0xFF, 0x00 (End)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
908 db 0x96,0x01
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
909 db 0x19,0x87
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
910 db 0xFF,.10
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
911 db 0x26,0x80
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
912 db 0x1B,0x0C
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
913 db 0x43,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
914 db 0x20,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
915 db 0x1F,0x07
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
916 db 0x44,0x7F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
917 db 0x45,0x14
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
918 db 0x1D,0x05
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
919 db 0x1E,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
920 db 0x1C,0x04
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
921 db 0x1B,0x14
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
922 db 0xFF,.40
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
923 db 0x43,0x80
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
924 db 0x42,0x08
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
925 db 0x23,0x95
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
926 db 0x24,0x95
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
927 db 0x25,0xFF
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
928 db 0x21,0x10
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
929 db 0x2B,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
930 db 0x95,0x01
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
931 db 0x1A,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
932 db 0x93,0x0F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
933 db 0x70,0x66
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
934 db 0x18,0x01
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
935 db 0x46,0x86
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
936 db 0x47,0x60
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
937 db 0x48,0x01
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
938 db 0x49,0x67
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
939 db 0x4A,0x46
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
940 db 0x4B,0x13
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
941 db 0x4C,0x01
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
942 db 0x4D,0x67
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
943 db 0x4E,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
944 db 0x4F,0x13
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
945 db 0x50,0x02
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
946 db 0x51,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
947 db 0x38,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
948 db 0x39,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
949 db 0x27,0x02
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
950 db 0x28,0x03
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
951 db 0x29,0x08
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
952 db 0x2A,0x08
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
953 db 0x2C,0x08
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
954 db 0x2D,0x08
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
955 db 0x35,0x09
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
956 db 0x36,0x09
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
957 db 0x91,0x14
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
958 db 0x37,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
959 db 0x01,0x06
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
960 db 0x3A,0xA1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
961 db 0x3B,0xA1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
962 db 0x3C,0xA1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
963 db 0x3D,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
964 db 0x3E,0x2D
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
965 db 0x40,0x03
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
966 db 0x41,0xCC
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
967 db 0x0A,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
968 db 0x0B,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
969 db 0x0C,0x01
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
970 db 0x0D,0x3F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
971 db 0x0E,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
972 db 0x0F,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
973 db 0x10,0x01
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
974 db 0x11,0x40
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
975 db 0x12,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
976 db 0x13,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
977 db 0x14,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
978 db 0x15,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
979 db 0x02,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
980 db 0x03,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
981 db 0x04,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
982 db 0x05,0xEF
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
983 db 0x06,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
984 db 0x07,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
985 db 0x08,0x01
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
986 db 0x09,0x3F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
987 db 0x16,0x88
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
988 db 0x72,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
989 db 0x22,0x60
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
990 db 0x94,0x0A
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
991 db 0x90,0x7F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
992 db 0x26,0x84
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
993 db 0xFF,.40
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
994 db 0x26,0xA4
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
995 db 0x26,0xAC
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
996 db 0xFF,.40
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
997 db 0x26,0xBC
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
998 db 0x96,0x00
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
999 db 0xFF,0x00 ; End of table pair
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1000
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1001
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1002 display0_init: ; Display0
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1003 banksel win_flags
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1004 bcf win_flags,1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1005 banksel flag1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1006 bcf DISPLAY_hv
713
8c293e76a517 no flicker when powering on
heinrichsweikamp
parents: 708
diff changeset
1007 btfsc DISPLAY_hv
8c293e76a517 no flicker when powering on
heinrichsweikamp
parents: 708
diff changeset
1008 bra $-4
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1009 WAITMS d'32'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1010 bsf DISPLAY_vdd
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1011 nop
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1012 bcf DISPLAY_cs
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1013 nop
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1014 bsf DISPLAY_nreset
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1015 WAITMS d'250' ; Standard wake-up
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1016 bsf DISPLAY_e_nwr
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1017 nop
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1018 bcf DISPLAY_nreset
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1019 WAIT10US d'2'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1020 bsf DISPLAY_nreset
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1021 WAITMS d'10'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1022
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1023 movlw 0x24 ; 80-System 8-Bit Mode
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1024 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1025
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1026 movlw 0x02 ; RGB Interface Control (S6E63D6 Datasheet page 42)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1027 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1028 movlw 0x00 ; X X X X X X X RM
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1029 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1030 movlw 0x00 ; DM X RIM1 RIM0 VSPL HSPL EPL DPL
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1031 rcall DISP_DataWrite ; System Interface: RIM is ignored, Internal Clock
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1032
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1033 movlw 0x03 ; Entry Mode (S6E63D6 Datasheet page 46)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1034 rcall DISP_CmdWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1035 movlw 0x00 ; CLS MDT1 MDT0 BGR X X X SS 65k Color
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1036 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1037
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1038 ; Change direction for block-writes of pixels
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1039 lfsr FSR0,win_flags
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1040 movlw b'00000000' ; [flipped] X X I/D1 I/D0 X X X AM
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1041 btfss INDF0,0 ; BANK-SAFE bit test.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1042 movlw b'00110000' ; [normal] X X I/D1 I/D0 X X X AM
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1043 rcall DISP_DataWrite
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1044
688
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1045 movlw LOW display0_config_table
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1046 movwf TBLPTRL
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1047 movlw HIGH display0_config_table
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1048 movwf TBLPTRH
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1049 movlw UPPER display0_config_table
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1050 movwf TBLPTRU
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1051 rcall display0_init_loop
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1052 rcall DISP_brightness_full ; Gamma settings...
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1053 rcall DISP_ClearScreen
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1054 bsf DISPLAY_hv ; OLED volatages on
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1055 return
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1056
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1057
688
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1058 display0_config_table:
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1059 ; Reg, Dat0, Dat1 or 0xFF,0x00,0x00 for end
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1060 db 0x18,0x00,0x28,0xF8,0x00,0x0F
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1061 db 0xF9,0x00,0x0F,0x10,0x00,0x00
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1062 db 0x05,0x00,0x01,0xFF,0x00,0x00
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1063
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1064
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1065 DISP_brightness_full: ; Choose between Eco and High...
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1066 btfsc DISPLAY_brightness_high ; DISPLAY brightness (=0: Eco, =1: High)
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1067 bra DISP_brightness_full_high
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1068 ; Mid
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1069 bsf PORTB,7
708
71bb907d0ce5 brightness settings for display1
heinrichsweikamp
parents: 707
diff changeset
1070 nop
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1071 bcf PORTB,6
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1072
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1073 movff win_flags,WREG ; Display1? win_flags is in bank0...
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1074 btfsc WREG,1 ; Display1?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1075 return ; Yes, done.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1076
688
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1077 movlw LOW display0_gamma_high_table
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1078 movwf TBLPTRL
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1079 movlw HIGH display0_gamma_high_table
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1080 movwf TBLPTRH
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1081 movlw UPPER display0_gamma_high_table
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1082 movwf TBLPTRU
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1083 bra display0_init_loop ; And return...
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1084
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1085
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1086 DISP_brightness_full_high:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1087 ; Full
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1088 bsf PORTB,7
708
71bb907d0ce5 brightness settings for display1
heinrichsweikamp
parents: 707
diff changeset
1089 nop
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1090 bsf PORTB,6
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1091
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1092 movff win_flags,WREG ; Display1? win_flags is in bank0...
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1093 btfsc WREG,1 ; Display1?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1094 return ; Yes, done.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1095
688
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1096 movlw LOW display0_gamma_full_table
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1097 movwf TBLPTRL
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1098 movlw HIGH display0_gamma_full_table
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1099 movwf TBLPTRH
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1100 movlw UPPER display0_gamma_full_table
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1101 movwf TBLPTRU
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1102 bra display0_init_loop ; And return...
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1103
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1104
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1105 DISP_brightness_low:
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1106 ;Low
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1107 bcf PORTB,7
708
71bb907d0ce5 brightness settings for display1
heinrichsweikamp
parents: 707
diff changeset
1108 nop
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1109 bcf PORTB,6
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1110 movff win_flags,WREG ; Display1? win_flags is in bank0...
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1111 btfsc WREG,1 ; Display1?
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1112 return ; Yes, done.
688
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1113 movlw LOW display0_gamma_low_table
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1114 movwf TBLPTRL
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1115 movlw HIGH display0_gamma_low_table
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1116 movwf TBLPTRH
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1117 movlw UPPER display0_gamma_low_table
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1118 movwf TBLPTRU
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1119 bra display0_init_loop ; And return...
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1120
688
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1121 display0_init_loop:
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1122 TBLRD*+
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1123 movlw 0xFF
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1124 cpfseq TABLAT
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1125 bra display0_config_write ; Write Config pair to Display
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1126 ; Delay ms or quit (return)
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1127 TBLRD*+
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1128 tstfsz TABLAT ; End of config?
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1129 bra $+4 ; No
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1130 return ; Done.
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1131 movf TABLAT,W
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1132 call WAITMSX ; Wait WREG milliseconds
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1133 bra display0_init_loop ; Loop
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1134
688
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1135 display0_config_write: ; With command in WREG
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1136 movf TABLAT,W
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1137 rcall DISP_CmdWrite ; Write command
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1138 TBLRD*+ ; Get config
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1139 movf TABLAT,W
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1140 rcall DISP_DataWrite ; Write config
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1141 TBLRD*+ ; Get config
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1142 movf TABLAT,W
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1143 rcall DISP_DataWrite ; Write config
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1144 bra display0_init_loop ; Loop
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1145
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1146
688
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1147 display0_gamma_high_table:
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1148 ; Reg, Dat0, Dat1 or 0xFF,0x00,0x00 for end
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1149 db 0x70,0x1B,0x80,0x71,0x1F,0x00
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1150 db 0x72,0x22,0x00,0x73,0x17,0x11
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1151 db 0x74,0x1A,0x0E,0x75,0x1D,0x15
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1152 db 0x76,0x18,0x11,0x77,0x1E,0x18
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1153 db 0x78,0x1D,0x11,0xFF,0x00,0x00
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1154
688
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1155 display0_gamma_full_table:
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1156 ; Reg, Dat0, Dat1 or 0xFF,0x00,0x00 for end
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1157 db 0x70,0x1F,0x00,0x71,0x23,0x80
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1158 db 0x72,0x2A,0x80,0x73,0x15,0x11
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1159 db 0x74,0x1C,0x11,0x75,0x1B,0x15
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1160 db 0x76,0x1A,0x15,0x77,0x1C,0x18
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1161 db 0x78,0x21,0x15,0xFF,0x00,0x00
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1162
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1163 display0_gamma_low_table:
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1164 ; Reg, Dat0, Dat1 or 0xFF,0x00,0x00 for end
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1165 db 0x70,0x14,0x00,0x71,0x17,0x00
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1166 db 0x72,0x15,0x80,0x73,0x15,0x11
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1167 db 0x74,0x14,0x0B,0x75,0x1B,0x15
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1168 db 0x76,0x13,0x0E,0x77,0x1C,0x18
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1169 db 0x78,0x15,0x0E,0xFF,0x00,0x00
c04e5c18acf9 some cleanups
heinrichsweikamp
parents: 687
diff changeset
1170
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1171
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1172 DISP_set_color:;Converts 8Bit RGB b'RRRGGGBB' into 16Bit RGB b'RRRRRGGG GGGBBBBB'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1173 movwf DISPLAY1_temp ; Get 8Bit RGB b'RRRGGGBB'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1174 movwf DISPLAY2_temp ; Copy
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
1175 movff WREG,win_color6 ; Another (bank-safe) copy
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1176
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1177 ; Display0
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1178 ; Mask Bit 7,6,5,4,3,2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1179 movlw b'00000011'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1180 andwf DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1181
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1182 movlw b'00000000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1183 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1184 movlw b'01010000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1185 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1186 movlw b'10100000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1187 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1188 movlw b'11111000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1189 movwf DISPLAY3_temp ; Blue done.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1190
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1191 movff DISPLAY1_temp, DISPLAY2_temp ; Copy
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1192 ; Mask Bit 7,6,5,1,0
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1193 movlw b'00011100'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1194 andwf DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1195 rrncf DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1196 rrncf DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1197
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1198 movlw b'00000000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1199 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1200 movlw b'00000100'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1201 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1202 movlw b'00001000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1203 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1204 movlw b'00001100'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1205 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1206 movlw b'00010000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1207 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1208 movlw b'00010100'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1209 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1210 movlw b'00100000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1211 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1212 movlw b'00111111'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1213 movwf DISPLAY4_temp
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1214
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1215 rrcf DISPLAY4_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1216 rrcf DISPLAY3_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1217
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1218 rrcf DISPLAY4_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1219 rrcf DISPLAY3_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1220
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1221 rrcf DISPLAY4_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1222 rrcf DISPLAY3_temp,F ; DISPLAY3_temp (b'GGGBBBBB') done.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1223
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1224 movff DISPLAY1_temp, DISPLAY2_temp ; Copy
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1225 clrf DISPLAY1_temp
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1226
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1227 rrcf DISPLAY4_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1228 rrcf DISPLAY1_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1229
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1230 rrcf DISPLAY4_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1231 rrcf DISPLAY1_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1232
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1233 rrcf DISPLAY4_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1234 rrcf DISPLAY1_temp,F ; Green done.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1235
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1236 ; Mask Bit 4,3,2,1,0
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1237 movlw b'11100000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1238 andwf DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1239
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1240 rrncf DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1241 rrncf DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1242 rrncf DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1243 rrncf DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1244 rrncf DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1245
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1246 movlw b'00000000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1247 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1248 movlw b'00000100'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1249 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1250 movlw b'00001000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1251 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1252 movlw b'00001100'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1253 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1254 movlw b'00010000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1255 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1256 movlw b'00010100'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1257 dcfsnz DISPLAY2_temp,F
798
d79aa21ee54c BUGFIX: Fix color codes 192-223 (Mk.2 and 2N only)
heinrichsweikamp
parents: 753
diff changeset
1258 movlw b'00011000'
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1259 dcfsnz DISPLAY2_temp,F
798
d79aa21ee54c BUGFIX: Fix color codes 192-223 (Mk.2 and 2N only)
heinrichsweikamp
parents: 753
diff changeset
1260 movlw b'00011111'
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1261 movwf DISPLAY4_temp
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1262
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1263 rrcf DISPLAY4_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1264 rrcf DISPLAY1_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1265
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1266 rrcf DISPLAY4_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1267 rrcf DISPLAY1_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1268
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1269 rrcf DISPLAY4_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1270 rrcf DISPLAY1_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1271
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1272 rrcf DISPLAY4_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1273 rrcf DISPLAY1_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1274
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1275 rrcf DISPLAY4_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1276 rrcf DISPLAY1_temp,F ; Red done.
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1277
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1278 movff DISPLAY1_temp,win_color1
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1279 movff DISPLAY3_temp,win_color2 ; Set Bank0 Color registers...
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
1280
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
1281 movff win_flags,WREG ; Display1? win_flags is in bank0...
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
1282 btfss WREG,1 ; Display1?
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
1283 return ; No
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1284
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1285 DISP_set_color_display1:;Converts 8Bit RGB b'RRRGGGBB' into 24Bit RGB b'00RRRRRR 00GGGGGG 00BBBBBB'
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
1286 movff win_color6,DISPLAY1_temp
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
1287 movff win_color6,DISPLAY2_temp
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
1288
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1289 ; Mask Bit 7,6,5,4,3,2
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1290 movlw b'00000011'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1291 andwf DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1292
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1293 movlw b'00000000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1294 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1295 movlw b'01010000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1296 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1297 movlw b'10100000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1298 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1299 movlw b'11111000'
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
1300 movff WREG,win_color6 ; B
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1301
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1302 movff DISPLAY1_temp, DISPLAY2_temp ; Copy
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1303 ; Mask Bit 7,6,5,1,0
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1304 movlw b'00011100'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1305 andwf DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1306 rrncf DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1307 rrncf DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1308
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1309 movlw b'00000000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1310 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1311 movlw b'00010000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1312 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1313 movlw b'00100000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1314 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1315 movlw b'00110000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1316 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1317 movlw b'01000000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1318 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1319 movlw b'01010000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1320 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1321 movlw b'10000000'
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1322 dcfsnz DISPLAY2_temp,F
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1323 movlw b'11111100'
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
1324 movff WREG,win_color5 ; G
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1325
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1326 ; Mask Bit 4,3,2,1,0
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1327 movlw b'11100000'
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1328 andwf DISPLAY1_temp,F
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1329
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1330 rrncf DISPLAY1_temp,F
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1331 rrncf DISPLAY1_temp,F
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1332 rrncf DISPLAY1_temp,F
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1333 rrncf DISPLAY1_temp,F
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1334 rrncf DISPLAY1_temp,F
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1335
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1336 movlw b'00000000'
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1337 dcfsnz DISPLAY1_temp,F
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1338 movlw b'00010000'
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1339 dcfsnz DISPLAY1_temp,F
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1340 movlw b'00100000'
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1341 dcfsnz DISPLAY1_temp,F
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1342 movlw b'00110000'
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1343 dcfsnz DISPLAY1_temp,F
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1344 movlw b'01000000'
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1345 dcfsnz DISPLAY1_temp,F
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1346 movlw b'01010000'
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1347 dcfsnz DISPLAY1_temp,F
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1348 movlw b'10000000'
684
99b3fb0ab4c7 pixel_write fix
heinrichsweikamp
parents: 681
diff changeset
1349 dcfsnz DISPLAY1_temp,F
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1350 movlw b'11111100'
706
d68c6a6b1f38 aa fonts processor
heinrichsweikamp
parents: 705
diff changeset
1351 movff WREG,win_color4 ; R
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents:
diff changeset
1352 return