comparison code_part1/OSTC_code_asm_part1/aa_wordprocessor.asm @ 120:5c7f98fad01a

aa_wordprocessor too fast ?
author JeanDo
date Sat, 11 Dec 2010 16:23:43 +0100
parents 3bcccb697bce
children 25433449bcb5
comparison
equal deleted inserted replaced
93:6ee3a42fd006 120:5c7f98fad01a
1 ;============================================================================= 1 ;=============================================================================
2 ; 2 ;
3 ; file aa_wordprocessor.asm 3 ; File aa_wordprocessor.asm
4 ; brief Anti-aliased word processor 4 ;
5 ; author JD Gascuel. 5 ; Anti-aliased word processor
6 ; 6 ;
7 ; copyright (c) 2010, JD Gascuel. All rights reserved. 7 ; This program is free software: you can redistribute it and/or modify
8 ; $Id: aa_wordprocessor.asm 72 2010-11-29 22:45:12Z gascuel $ 8 ; it under the terms of the GNU General Public License as published by
9 ; the Free Software Foundation, either version 3 of the License, or
10 ; (at your option) any later version.
11 ;
12 ; This program is distributed in the hope that it will be useful,
13 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 ; GNU General Public License for more details.
16 ;
17 ; You should have received a copy of the GNU General Public License
18 ; along with this program. If not, see <http://www.gnu.org/licenses/>.
19 ;
20 ; Copyright (c) 2010, JD Gascuel.
9 ;============================================================================= 21 ;=============================================================================
10 ; HISTORY 22 ; HISTORY
11 ; 2010-11-22 : [jDG] Creation. 23 ; 2010-11-22 : [jDG] Creation.
12 ; 24 ; 2010-12-01 : [jDG] Adding 3bits antialiased fonts.
13 ; BUGS : None known yet... 25 ;
26 ; BUGS :
27 ; * If the three fonts are not in the same half of the PROM memory, TBLPTRU
28 ; will be badly set, and font48 or font90 will display giberish...
14 ;============================================================================= 29 ;=============================================================================
15 ; 30 ;
16 ; MEMORY FOOTPRINT: 31 ; MEMORY FOOTPRINT:
17 ;------------------ 32 ;------------------
18 ; 33 ;
264 ; Inputs : win_top, win_leftx2, aa_height, aa_width. 279 ; Inputs : win_top, win_leftx2, aa_height, aa_width.
265 ; Output : PortD commands. 280 ; Output : PortD commands.
266 ; Trashed: PROD 281 ; Trashed: PROD
267 ; 282 ;
268 aa_box_cmd: 283 aa_box_cmd:
284 AA_CMD_WRITE 0x35 ; this is the left border
269 movf win_leftx2,W,BANKED ; Compute left = 2*leftx2 285 movf win_leftx2,W,BANKED ; Compute left = 2*leftx2
270 mullw 2 286 mullw 2
271 AA_CMD_WRITE 0x35 ; this is the left border
272 AA_DATA_WRITE_PROD 287 AA_DATA_WRITE_PROD
273 288
274 movf aa_width,W,BANKED ; right = left + width - 1 289 movf aa_width,W,BANKED ; right = left + width - 1
275 addwf PRODL,F,A 290 addwf PRODL,F,A
276 movf aa_width+1,W,BANKED 291 movf aa_width+1,W,BANKED
277 addwfc PRODH,F,A 292 addwfc PRODH,F,A
293 AA_CMD_WRITE 0x36 ; Write and the right border
278 decf PRODL,F,A ; decrement result 294 decf PRODL,F,A ; decrement result
279 bc aa_box_cmd_1 ; No borrow (/Carry) ? skip propagating. 295 bc aa_box_cmd_1 ; No borrow (/Carry) ? skip propagating.
280 decf PRODH,F,A 296 decf PRODH,F,A
281 aa_box_cmd_1: 297 aa_box_cmd_1:
282
283 AA_CMD_WRITE 0x36 ; Write and the right border
284 AA_DATA_WRITE_PROD 298 AA_DATA_WRITE_PROD
285 299
286 movf win_top,W,BANKED ; Write top / bottom window 300 movf win_top,W,BANKED ; Write top / bottom window
287 movwf PRODH,A ; (remember PRODH output first) 301 movwf PRODH,A ; (remember PRODH output first)
288 addwf aa_height,W,BANKED 302 addwf aa_height,W,BANKED
289 decf WREG,A 303 decf WREG,A
290 movwf PRODL,A ; And PRODL is later... 304 movwf PRODL,A ; And PRODL is later...
291 AA_CMD_WRITE 0x37 305 AA_CMD_WRITE 0x37
292 AA_DATA_WRITE_PROD 306 nop
293 307 nop
308 AA_DATA_WRITE_PROD
309
310 AA_CMD_WRITE 0x20
294 movf win_leftx2,W,BANKED ; Start ptr left 311 movf win_leftx2,W,BANKED ; Start ptr left
295 mullw 2 312 mullw 2
296 AA_CMD_WRITE 0x20 313 AA_DATA_WRITE_PROD
297 AA_DATA_WRITE_PROD 314
298 315 AA_CMD_WRITE 0x21
299 movf win_top,W,BANKED ; Start ptr top 316 movf win_top,W,BANKED ; Start ptr top
300 mullw 1 ; Load into PRODH:L 317 mullw 1 ; Load into PRODH:L
301 AA_CMD_WRITE 0x21
302 AA_DATA_WRITE_PROD 318 AA_DATA_WRITE_PROD
303 319
304 return 320 return
305 321
306 ;------------------------------------------------------------------------------ 322 ;------------------------------------------------------------------------------