home *** CD-ROM | disk | FTP | other *** search
- |
- | Routine de conversion
- | 1 octet/pixel -> 8 plans de bits
- |
- | Inspiree de la methode parue dans Stratos Magazine 2
- |
- | Patrice Mandin
-
- | ------------- Init table C2P
-
- .globl _init_c2p
-
- .text
- _init_c2p:
- movel d2,sp@-
-
- lea table_c2p,a0
- movew #255,d0
- c2p_initbcl:
- lea a0@(0,d0:w:8),a1
- moveq #7,d1
- c2p_initbyte:
- btst d1,d0
- sne d2
- negw d2
- moveb d2,a1@(0,d1:w)
-
- dbra d1,c2p_initbyte
-
- dbra d0,c2p_initbcl
-
- movel sp@+,d2
- rts
-
- | ------------- Conversion C2P
-
- .globl _convert_c2p
-
- .text
- _convert_c2p:
- movel sp@(4),c2p_source
- movel sp@(8),c2p_dest
- movel sp@(12),c2p_width
- movel sp@(16),c2p_height
- movel sp@(20),c2p_dblligne
- movel sp@(24),c2p_linewidth
-
- moveml d2-d7/a2-a6,sp@-
-
- movel c2p_source,a0
- movel c2p_dest,a1
- lea table_c2p,a2
- movel #0x000f0001,d3
- moveq #0,d0
-
- movel c2p_height,d7
- subql #1,d7
- c2p_bcly:
- movel a1,a5 | Save start address of line
-
- | Conversion
-
- movel c2p_width,d6
- lsrw #4,d6
- subql #1,d6
- c2p_bclx:
- | Octets 0-7
-
- moveq #0,d1
- moveq #0,d2
- moveq #7,d5
- c2p_bcl07:
- moveb a0@+,d0
- lea a2@(0,d0:w:8),a3
- lsll #1,d1
- lsll #1,d2
- orl a3@+,d1
- orl a3@,d2
- dbra d5,c2p_bcl07
-
- movepl d1,a1@(0)
- movepl d2,a1@(8)
- addw d3,a1
- swap d3
-
- | Octets 8-15
-
- moveq #0,d1
- moveq #0,d2
- moveq #7,d5
- c2p_bcl815:
- moveb a0@+,d0
- lea a2@(0,d0:w:8),a3
- lsll #1,d1
- lsll #1,d2
- orl a3@+,d1
- orl a3@,d2
- dbra d5,c2p_bcl815
-
- movepl d1,a1@(0)
- movepl d2,a1@(8)
- addw d3,a1
- swap d3
-
- dbra d6,c2p_bclx
-
- | Double ligne ?
-
- tstl c2p_dblligne
- beq c2p_nodblligne
-
- movel a5,a6 | src line
- movel a5,a1 | dest line
- addl c2p_linewidth,a1
-
- movel c2p_width,d6
- lsrw #2,d6
- subql #1,d6
- c2p_copydbl:
- movel a6@+,a1@+
- dbra d6,c2p_copydbl
-
- addl c2p_linewidth,a5
- c2p_nodblligne:
- movel a5,a1
- addl c2p_linewidth,a1
-
- dbra d7,c2p_bcly
-
- moveml sp@+,d2-d7/a2-a6
- rts
-
- .data
-
- .even
- .comm c2p_source,4
- .comm c2p_dest,4
- .comm c2p_width,4
- .comm c2p_height,4
- .comm c2p_dblligne,4
- .comm c2p_linewidth,4
- .comm table_c2p,2048
-