View difference between Paste ID: ANdt62rS and
SHOW:
|
|
- or go back to the newest paste.
1 | - | |
1 | + | lcd_grey_data: |
2 | lea.l (-2*4, %sp), %sp | |
3 | movem.l %a2-%a3, (%sp) | |
4 | movem.l (2*4+4, %sp), %a0-%a2 /* values, phases, length */ | |
5 | add.l %a2, %a2 | |
6 | lea.l (%a1, %a2.l*4), %a2 /* end address */ | |
7 | lea.l LCD_BASE_ADDRESS+2, %a3 /* LCD data port address */ | |
8 | .ph_loop: | |
9 | clr.l %d1 | |
10 | move.l (%a1), %d0 /* fetch 4 pixel phases */ | |
11 | bclr.l #31, %d0 /* Z = !(p0 & 0x80); p0 &= ~0x80; */ | |
12 | seq.b %d1 /* %d1 = ........................00000000 */ | |
13 | lsl.l #1, %d1 /* %d1 = .......................00000000. */ | |
14 | bclr.l #23, %d0 /* Z = !(p1 & 0x80); p1 &= ~0x80; */ | |
15 | seq.b %d1 /* %d1 = .......................011111111 */ | |
16 | lsl.l #1, %d1 /* %d1 = ......................011111111. */ | |
17 | bclr.l #15, %d0 /* Z = !(p2 & 0x80); p2 &= ~0x80; */ | |
18 | seq.b %d1 /* %d1 = ......................0122222222 */ | |
19 | lsl.l #1, %d1 /* %d1 = .....................0122222222. */ | |
20 | bclr.l #7, %d0 /* Z = !(p3 & 0x80); p3 &= ~0x80; */ | |
21 | seq.b %d1 /* %d1 = .....................01233333333 */ | |
22 | lsl.l #1, %d1 /* %d1 = ....................01233333333. */ | |
23 | add.l (%a0)+, %d0 /* add 4 pixel values to the phases */ | |
24 | move.l %d0, (%a1)+ /* store new phases, advance pointer */ | |
25 | ||
26 | clr.l %d1 | |
27 | move.l (%a1), %d0 /* fetch 4 pixel phases */ | |
28 | bclr.l #31, %d0 /* Z = !(p0 & 0x80); p0 &= ~0x80; */ | |
29 | seq.b %d1 /* %d1 = ....................012344444444 */ | |
30 | lsl.l #1, %d1 /* %d1 = ...................012344444444. */ | |
31 | bclr.l #23, %d0 /* Z = !(p1 & 0x80); p1 &= ~0x80; */ | |
32 | seq.b %d1 /* %d1 = ...................0123455555555 */ | |
33 | lsl.l #1, %d1 /* %d1 = ..................0123455555555. */ | |
34 | bclr.l #15, %d0 /* Z = !(p2 & 0x80); p2 &= ~0x80; */ | |
35 | seq.b %d1 /* %d1 = ..................01234566666666 */ | |
36 | lsl.l #1, %d1 /* %d1 = .................01234566666666. */ | |
37 | bclr.l #7, %d0 /* Z = !(p3 & 0x80); p3 &= ~0x80; */ | |
38 | seq.b %d1 /* %d1 = .................012345677777777 */ | |
39 | lsr.l #7, %d1 /* %d1 = ........................01234567 */ | |
40 | add.l (%a0)+, %d0 /* add 4 pixel values to the phases */ | |
41 | move.l %d0, (%a1)+ /* store new phases, advance pointer */ | |
42 | ||
43 | move.w %d1, (%a3) /* transfer to lcd */ | |
44 | move.w %d1, (%a3) /* transfer to lcd */ | |
45 | ||
46 | cmp.l %a2, %a1 | |
47 | bls .ph_loop | |
48 | ||
49 | movem.l (%sp), %a2-%a3 | |
50 | lea.l (2*4, %sp), %sp | |
51 | rts |