]> 4ch.mooo.com Git - 16.git/blob - 16/xw_/mxpi.asm
wwww
[16.git] / 16 / xw_ / mxpi.asm
1                 PUBLIC  MXPUTIMAGE
2                 EXTRN   SUBCLIPIMAGE:BYTE
3                 EXTRN   MX_BYTESPERLINE:BYTE
4                 EXTRN   MX_VIDEOSEGMENT:BYTE
5 MX_TEXT         SEGMENT PARA PUBLIC USE16 'CODE'
6                 ASSUME CS:MX_TEXT, DS:DGROUP, SS:DGROUP
7 L$1:
8     DW  offset L$2
9     DW  offset L$6
10     DW  offset L$10
11     DW  offset L$14
12     DW  offset L$18
13     DW  offset L$20
14 L$2:
15         shr             cx,1
16         jb              L$5
17 L$3:
18         movsb
19         add             si,3
20         movsb
21         add             si,3
22         dec             cx
23         jne             L$3
24 L$4:
25         ret
26 L$5:
27         movsb
28         add             si,3
29         jcxz            L$4
30         jmp             L$3
31 L$6:
32         shr             cx,1
33         jb              L$9
34 L$7:
35         mov             al,byte ptr [si]
36         mov             ah,byte ptr 4[si]
37         and             word ptr es:[di],ax
38         inc             di
39         inc             di
40         add             si,8
41         dec             cx
42         jne             L$7
43 L$8:
44         ret
45 L$9:
46         lodsb
47         and             byte ptr es:[di],al
48         inc             di
49         add             si,3
50         jcxz            L$8
51         jmp             L$7
52 L$10:
53         shr             cx,1
54         jb              L$13
55 L$11:
56         mov             al,byte ptr [si]
57         mov             ah,byte ptr 4[si]
58         or              word ptr es:[di],ax
59         inc             di
60         inc             di
61         add             si,8
62         dec             cx
63         jne             L$11
64 L$12:
65         ret
66 L$13:
67         lodsb
68         or              byte ptr es:[di],al
69         inc             di
70         add             si,3
71         jcxz            L$12
72         jmp             L$11
73 L$14:
74         shr             cx,1
75         jb              L$17
76 L$15:
77         mov             al,byte ptr [si]
78         mov             ah,byte ptr 4[si]
79         xor             word ptr es:[di],ax
80         inc             di
81         inc             di
82         add             si,8
83         dec             cx
84         jne             L$15
85 L$16:
86         ret
87 L$17:
88         lodsb
89         xor             byte ptr es:[di],al
90         inc             di
91         add             si,3
92         jcxz            L$16
93         jmp             L$15
94 L$18:
95         mov             al,byte ptr [si]
96         cmp             al,ah
97         je              L$19
98         mov             byte ptr es:[di],al
99 L$19:
100         inc             di
101         add             si,4
102         dec             cx
103         jne             L$18
104         ret
105 L$20:
106         mov             al,byte ptr [si]
107         add             byte ptr es:[di],al
108         inc             di
109         add             si,4
110         dec             cx
111         jne             L$20
112         ret
113 MXPUTIMAGE:
114         push            bp
115         mov             bp,sp
116         sub             sp,14H
117         push            ds
118         push            si
119         push            es
120         push            di
121         mov             bx,word ptr 0eH[bp]
122         mov             ax,word ptr 0cH[bp]
123         mov             cx,word ptr 0aH[bp]
124         mov             dx,word ptr 8[bp]
125         call            near ptr MX_TEXT:SUBCLIPIMAGE
126         jae             L$21
127         jmp             near ptr L$26
128 L$21:
129         mov             word ptr 8[bp],dx
130         add             word ptr 10H[bp],si
131         mul             word ptr cs:MX_BYTESPERLINE
132         mov             di,bx
133         shr             di,1
134         shr             di,1
135         add             di,ax
136         mov             word ptr -0aH[bp],di
137         mov             es,word ptr cs:MX_VIDEOSEGMENT
138         and             bl,3
139         mov             byte ptr -10H[bp],bl
140         mov             bx,cx
141         shr             bx,1
142         shr             bx,1
143         and             cl,3
144         mov             al,8
145         shr             al,cl
146         mov             si,6
147 L$22:
148         mov             word ptr -8[bp+si],bx
149         shr             al,1
150         adc             bx,0
151         dec             si
152         dec             si
153         jge             L$22
154         mov             cl,byte ptr -10H[bp]
155         mov             al,11H
156         shl             al,cl
157         mov             byte ptr -14H[bp],al
158         mov             bx,word ptr 6[bp]
159         mov             byte ptr -12H[bp],bh
160         xor             bh,bh
161         cmp             bl,5
162         jbe             L$23
163         xor             bl,bl
164 L$23:
165         shl             bx,1
166         mov             ax,word ptr cs:L$1[bx]
167         mov             word ptr -0cH[bp],ax
168         cld
169         mov             byte ptr -0eH[bp],4
170         lea             bx,-8[bp]
171         mov             ds,word ptr 12H[bp]
172 L$24:
173         cmp             word ptr ss:[bx],0
174         je              L$26
175         mov             si,word ptr 10H[bp]
176         mov             ah,byte ptr -14H[bp]
177         and             ah,0fH
178         mov             al,2
179         mov             dx,3c4H
180         out             dx,ax
181         mov             ah,byte ptr -10H[bp]
182         and             ah,3
183         mov             al,4
184         mov             dx,3ceH
185         out             dx,ax
186         mov             dx,word ptr 8[bp]
187         mov             di,word ptr -0aH[bp]
188 L$25:
189         push            si
190         push            di
191         mov             cx,word ptr ss:[bx]
192         mov             ah,byte ptr -12H[bp]
193         call            word ptr -0cH[bp]
194         pop             di
195         pop             si
196         add             si,word ptr 0aH[bp]
197         add             di,word ptr cs:MX_BYTESPERLINE
198         dec             dx
199         jne             L$25
200         inc             bx
201         inc             bx
202         inc             byte ptr -10H[bp]
203         rol             byte ptr -14H[bp],1
204         adc             word ptr -0aH[bp],0
205         inc             word ptr 10H[bp]
206         dec             byte ptr -0eH[bp]
207         jne             L$24
208 L$26:
209         xor             ax,ax
210         pop             di
211         pop             es
212         pop             si
213         pop             ds
214         mov             sp,bp
215         pop             bp
216         retf            0eH
217 MX_TEXT         ENDS
218                 END