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