]> 4ch.mooo.com Git - 16.git/blob - 16/xw_/mxpf.asm
wwww
[16.git] / 16 / xw_ / mxpf.asm
1                 PUBLIC  MXFILLPOLY
2                 EXTRN   MX_CLIPX1:BYTE
3                 EXTRN   MX_CLIPX2:BYTE
4                 EXTRN   MX_CLIPY1:BYTE
5                 EXTRN   MX_CLIPY2:BYTE
6                 EXTRN   MX_CODESEGMENT:BYTE
7                 EXTRN   MX_SCANBUFFER:BYTE
8                 EXTRN   MX_VIDEOSEGMENT:BYTE
9                 EXTRN   MX_BYTESPERLINE:BYTE
10 MX_TEXT         SEGMENT PARA PUBLIC USE16 'CODE'
11                 ASSUME CS:MX_TEXT, DS:DGROUP, SS:DGROUP
12 L$1:
13         mov             cx,word ptr [si]
14         sub             cx,word ptr [bx]
15         jg              L$2
16         ret
17 L$2:
18         push            bp
19         mov             ax,word ptr 2[si]
20         mov             bx,word ptr 2[bx]
21         sub             ax,bx
22         jg              L$4
23         jl              L$6
24         mov             ax,bx
25 L$3:
26         mov             word ptr es:[di],ax
27         add             di,4
28         dec             cx
29         jne             L$3
30         jmp             L$8
31 L$4:
32         cwd
33         div             cx
34         mov             bp,ax
35         xor             ax,ax
36         div             cx
37         xchg            ax,bx
38         mov             dx,8000H
39 L$5:
40         mov             word ptr es:[di],ax
41         add             di,4
42         add             dx,bx
43         adc             ax,bp
44         dec             cx
45         jne             L$5
46         jmp             L$8
47 L$6:
48         neg             ax
49         cwd
50         div             cx
51         mov             bp,ax
52         xor             ax,ax
53         div             cx
54         xchg            ax,bx
55         mov             dx,8000H
56 L$7:
57         mov             word ptr es:[di],ax
58         add             di,4
59         sub             dx,bx
60         sbb             ax,bp
61         dec             cx
62         jne             L$7
63 L$8:
64         pop             bp
65         ret
66 MXFILLPOLY:
67         push            bp
68         mov             bp,sp
69         sub             sp,1eH
70         push            ds
71         push            si
72         push            es
73         push            di
74         mov             cx,word ptr 10H[bp]
75         cmp             cx,3
76         jae             L$9
77         jmp             near ptr L$36
78 L$9:
79         les             di,dword ptr 0cH[bp]
80         lds             si,dword ptr 8[bp]
81         mov             word ptr -16H[bp],7fffH
82         mov             word ptr -1aH[bp],8000H
83         mov             word ptr -18H[bp],7fffH
84         mov             word ptr -1eH[bp],8000H
85         xor             dx,dx
86 L$10:
87         mov             bx,word ptr es:[di]
88         shl             bx,1
89         shl             bx,1
90         add             bx,si
91         mov             ax,word ptr [bx]
92         cmp             ax,word ptr -16H[bp]
93         jge             L$11
94         mov             word ptr -16H[bp],ax
95         mov             word ptr -0eH[bp],dx
96         mov             word ptr -10H[bp],dx
97 L$11:
98         cmp             ax,word ptr -1aH[bp]
99         jle             L$12
100         mov             word ptr -1aH[bp],ax
101         mov             word ptr -12H[bp],dx
102 L$12:
103         mov             ax,word ptr 2[bx]
104         cmp             ax,word ptr -18H[bp]
105         jge             L$13
106         mov             word ptr -18H[bp],ax
107 L$13:
108         cmp             ax,word ptr -1eH[bp]
109         jle             L$14
110         mov             word ptr -1eH[bp],ax
111 L$14:
112         inc             di
113         inc             dx
114         inc             di
115         inc             dx
116         dec             cx
117         jne             L$10
118         mov             ax,word ptr -1aH[bp]
119         cmp             ax,word ptr cs:MX_CLIPX1
120         jge             L$15
121         jmp             near ptr L$36
122 L$15:
123         mov             bx,word ptr -16H[bp]
124         cmp             bx,word ptr cs:MX_CLIPX2
125         jle             L$16
126         jmp             near ptr L$36
127 L$16:
128         sub             ax,bx
129         jg              L$17
130         jmp             near ptr L$36
131 L$17:
132         mov             ax,word ptr -1eH[bp]
133         cmp             ax,word ptr cs:MX_CLIPY1
134         jge             L$18
135         jmp             near ptr L$36
136 L$18:
137         mov             bx,word ptr -18H[bp]
138         cmp             bx,word ptr cs:MX_CLIPY2
139         jle             L$19
140         jmp             near ptr L$36
141 L$19:
142         sub             ax,bx
143         jg              L$20
144         jmp             near ptr L$36
145 L$20:
146         dec             word ptr 10H[bp]
147         shl             word ptr 10H[bp],1
148         mov             es,word ptr cs:MX_CODESEGMENT
149         mov             ax,offset MX_TEXT:MX_SCANBUFFER
150         mov             word ptr -4[bp],ax
151         mov             si,word ptr -0eH[bp]
152 L$21:
153         lds             bx,dword ptr 0cH[bp]
154         mov             di,word ptr [bx+si]
155         dec             si
156         dec             si
157         test            si,si
158         jge             L$22
159         mov             si,word ptr 10H[bp]
160 L$22:
161         mov             word ptr -0eH[bp],si
162         mov             si,word ptr [bx+si]
163         shl             di,1
164         shl             di,1
165         shl             si,1
166         shl             si,1
167         lds             bx,dword ptr 8[bp]
168         add             si,bx
169         add             bx,di
170         mov             di,word ptr -4[bp]
171         call            near ptr L$1
172         mov             word ptr -4[bp],di
173         mov             si,word ptr -0eH[bp]
174         cmp             si,word ptr -12H[bp]
175         jne             L$21
176         mov             ax,offset MX_TEXT:MX_SCANBUFFER+2
177         mov             word ptr -6[bp],ax
178         mov             si,word ptr -10H[bp]
179 L$23:
180         lds             bx,dword ptr 0cH[bp]
181         mov             di,word ptr [bx+si]
182         inc             si
183         inc             si
184         cmp             si,word ptr 10H[bp]
185         jbe             L$24
186         xor             si,si
187 L$24:
188         mov             word ptr -10H[bp],si
189         mov             si,word ptr [bx+si]
190         shl             di,1
191         shl             di,1
192         shl             si,1
193         shl             si,1
194         lds             bx,dword ptr 8[bp]
195         add             si,bx
196         add             bx,di
197         mov             di,word ptr -6[bp]
198         call            near ptr L$1
199         mov             word ptr -6[bp],di
200         mov             si,word ptr -10H[bp]
201         cmp             si,word ptr -12H[bp]
202         jne             L$23
203         mov             si,offset MX_TEXT:MX_SCANBUFFER
204         mov             ax,word ptr -16H[bp]
205         mov             cx,word ptr -1aH[bp]
206         sub             cx,ax
207         mov             bx,word ptr cs:MX_CLIPX1
208         sub             bx,ax
209         jle             L$25
210         sub             cx,bx
211         add             ax,bx
212         mov             word ptr -16H[bp],ax
213         shl             bx,1
214         shl             bx,1
215         add             si,bx
216 L$25:
217         mov             bx,ax
218         add             bx,cx
219         sub             bx,word ptr cs:MX_CLIPX2
220         jle             L$26
221         sub             cx,bx
222 L$26:
223         test            cx,cx
224         jg              L$27
225         jmp             near ptr L$36
226 L$27:
227         mov             word ptr -8[bp],cx
228         mov             word ptr -4[bp],si
229         mov             ds,word ptr cs:MX_CODESEGMENT
230         mov             ax,word ptr -18H[bp]
231         cmp             ax,word ptr cs:MX_CLIPY1
232         jl              L$28
233         mov             ax,word ptr -1eH[bp]
234         cmp             ax,word ptr cs:MX_CLIPY2
235         jg              L$28
236         jmp             L$32
237 L$28:
238         mov             di,cx
239         inc             di
240         sub             si,4
241 L$29:
242         dec             di
243         je              L$32
244         add             si,4
245         mov             ax,word ptr [si]
246         mov             cx,word ptr 2[si]
247         mov             dx,word ptr cs:MX_CLIPY2
248         cmp             ax,dx
249         jg              L$31
250         cmp             cx,dx
251         jle             L$30
252         mov             word ptr 2[si],dx
253         mov             bx,cx
254         sub             bx,dx
255         sub             cx,ax
256         jle             L$31
257         mov             cx,word ptr 2[si]
258 L$30:
259         mov             dx,word ptr cs:MX_CLIPY1
260         cmp             cx,dx
261         jl              L$31
262         sub             cx,ax
263         jle             L$31
264         cmp             ax,dx
265         jge             L$29
266         mov             word ptr [si],dx
267         sub             dx,ax
268         cmp             cx,dx
269         ja              L$29
270 L$31:
271         mov             word ptr [si],0ffffH
272         jmp             L$29
273 L$32:
274         mov             es,word ptr cs:MX_VIDEOSEGMENT
275         mov             si,word ptr -4[bp]
276         mov             cl,byte ptr -16H[bp]
277         and             cl,3
278         mov             al,11H
279         shl             al,cl
280         mov             byte ptr -2[bp],al
281         shr             word ptr -16H[bp],1
282         shr             word ptr -16H[bp],1
283 L$33:
284         mov             ax,word ptr [si]
285         test            ax,ax
286         js              L$35
287         mov             cx,word ptr 2[si]
288         sub             cx,ax
289         jle             L$35
290         mul             word ptr cs:MX_BYTESPERLINE
291         add             ax,word ptr -16H[bp]
292         mov             di,ax
293         mov             ah,byte ptr -2[bp]
294         mov             dx,3c4H
295         mov             al,2
296         out             dx,ax
297         mov             ax,word ptr 6[bp]
298         mov             dx,word ptr cs:MX_BYTESPERLINE
299         shr             cx,1
300         jae             L$34
301         mov             byte ptr es:[di],al
302         add             di,dx
303         jcxz            L$35
304 L$34:
305         mov             byte ptr es:[di],al
306         add             di,dx
307         mov             byte ptr es:[di],al
308         add             di,dx
309         dec             cx
310         jne             L$34
311 L$35:
312         rol             byte ptr -2[bp],1
313         adc             word ptr -16H[bp],0
314         add             si,4
315         dec             word ptr -8[bp]
316         jne             L$33
317 L$36:
318         xor             ax,ax
319         pop             di
320         pop             es
321         pop             si
322         pop             ds
323         mov             sp,bp
324         pop             bp
325         retf            0cH
326 MX_TEXT         ENDS
327                 END