--- /dev/null
+.387
+ PUBLIC MXFILLPOLY
+ EXTRN MX_CLIPX1:BYTE
+ EXTRN MX_CLIPX2:BYTE
+ EXTRN MX_CLIPY1:BYTE
+ EXTRN MX_CLIPY2:BYTE
+ EXTRN MX_CODESEGMENT:BYTE
+ EXTRN MX_SCANBUFFER:BYTE
+ EXTRN MX_VIDEOSEGMENT:BYTE
+ EXTRN MX_BYTESPERLINE:BYTE
+MX_TEXT SEGMENT PARA PUBLIC USE16 'CODE'
+ ASSUME CS:MX_TEXT, DS:DGROUP, SS:DGROUP
+L$1:
+ mov cx,word ptr [si]
+ sub cx,word ptr [bx]
+ jg L$2
+ ret
+L$2:
+ push bp
+ mov ax,word ptr 2[si]
+ mov bx,word ptr 2[bx]
+ sub ax,bx
+ jg L$4
+ jl L$6
+ mov ax,bx
+L$3:
+ mov word ptr es:[di],ax
+ add di,4
+ dec cx
+ jne L$3
+ jmp L$8
+L$4:
+ cwd
+ div cx
+ mov bp,ax
+ xor ax,ax
+ div cx
+ xchg ax,bx
+ mov dx,8000H
+L$5:
+ mov word ptr es:[di],ax
+ add di,4
+ add dx,bx
+ adc ax,bp
+ dec cx
+ jne L$5
+ jmp L$8
+L$6:
+ neg ax
+ cwd
+ div cx
+ mov bp,ax
+ xor ax,ax
+ div cx
+ xchg ax,bx
+ mov dx,8000H
+L$7:
+ mov word ptr es:[di],ax
+ add di,4
+ sub dx,bx
+ sbb ax,bp
+ dec cx
+ jne L$7
+L$8:
+ pop bp
+ ret
+MXFILLPOLY:
+ push bp
+ mov bp,sp
+ sub sp,1eH
+ push ds
+ push si
+ push es
+ push di
+ mov cx,word ptr 10H[bp]
+ cmp cx,3
+ jae L$9
+ jmp near ptr L$36
+L$9:
+ les di,dword ptr 0cH[bp]
+ lds si,dword ptr 8[bp]
+ mov word ptr -16H[bp],7fffH
+ mov word ptr -1aH[bp],8000H
+ mov word ptr -18H[bp],7fffH
+ mov word ptr -1eH[bp],8000H
+ xor dx,dx
+L$10:
+ mov bx,word ptr es:[di]
+ shl bx,1
+ shl bx,1
+ add bx,si
+ mov ax,word ptr [bx]
+ cmp ax,word ptr -16H[bp]
+ jge L$11
+ mov word ptr -16H[bp],ax
+ mov word ptr -0eH[bp],dx
+ mov word ptr -10H[bp],dx
+L$11:
+ cmp ax,word ptr -1aH[bp]
+ jle L$12
+ mov word ptr -1aH[bp],ax
+ mov word ptr -12H[bp],dx
+L$12:
+ mov ax,word ptr 2[bx]
+ cmp ax,word ptr -18H[bp]
+ jge L$13
+ mov word ptr -18H[bp],ax
+L$13:
+ cmp ax,word ptr -1eH[bp]
+ jle L$14
+ mov word ptr -1eH[bp],ax
+L$14:
+ inc di
+ inc dx
+ inc di
+ inc dx
+ dec cx
+ jne L$10
+ mov ax,word ptr -1aH[bp]
+ cmp ax,word ptr cs:MX_CLIPX1
+ jge L$15
+ jmp near ptr L$36
+L$15:
+ mov bx,word ptr -16H[bp]
+ cmp bx,word ptr cs:MX_CLIPX2
+ jle L$16
+ jmp near ptr L$36
+L$16:
+ sub ax,bx
+ jg L$17
+ jmp near ptr L$36
+L$17:
+ mov ax,word ptr -1eH[bp]
+ cmp ax,word ptr cs:MX_CLIPY1
+ jge L$18
+ jmp near ptr L$36
+L$18:
+ mov bx,word ptr -18H[bp]
+ cmp bx,word ptr cs:MX_CLIPY2
+ jle L$19
+ jmp near ptr L$36
+L$19:
+ sub ax,bx
+ jg L$20
+ jmp near ptr L$36
+L$20:
+ dec word ptr 10H[bp]
+ shl word ptr 10H[bp],1
+ mov es,word ptr cs:MX_CODESEGMENT
+ mov ax,offset MX_TEXT:MX_SCANBUFFER
+ mov word ptr -4[bp],ax
+ mov si,word ptr -0eH[bp]
+L$21:
+ lds bx,dword ptr 0cH[bp]
+ mov di,word ptr [bx+si]
+ dec si
+ dec si
+ test si,si
+ jge L$22
+ mov si,word ptr 10H[bp]
+L$22:
+ mov word ptr -0eH[bp],si
+ mov si,word ptr [bx+si]
+ shl di,1
+ shl di,1
+ shl si,1
+ shl si,1
+ lds bx,dword ptr 8[bp]
+ add si,bx
+ add bx,di
+ mov di,word ptr -4[bp]
+ call near ptr L$1
+ mov word ptr -4[bp],di
+ mov si,word ptr -0eH[bp]
+ cmp si,word ptr -12H[bp]
+ jne L$21
+ mov ax,offset MX_TEXT:MX_SCANBUFFER+2
+ mov word ptr -6[bp],ax
+ mov si,word ptr -10H[bp]
+L$23:
+ lds bx,dword ptr 0cH[bp]
+ mov di,word ptr [bx+si]
+ inc si
+ inc si
+ cmp si,word ptr 10H[bp]
+ jbe L$24
+ xor si,si
+L$24:
+ mov word ptr -10H[bp],si
+ mov si,word ptr [bx+si]
+ shl di,1
+ shl di,1
+ shl si,1
+ shl si,1
+ lds bx,dword ptr 8[bp]
+ add si,bx
+ add bx,di
+ mov di,word ptr -6[bp]
+ call near ptr L$1
+ mov word ptr -6[bp],di
+ mov si,word ptr -10H[bp]
+ cmp si,word ptr -12H[bp]
+ jne L$23
+ mov si,offset MX_TEXT:MX_SCANBUFFER
+ mov ax,word ptr -16H[bp]
+ mov cx,word ptr -1aH[bp]
+ sub cx,ax
+ mov bx,word ptr cs:MX_CLIPX1
+ sub bx,ax
+ jle L$25
+ sub cx,bx
+ add ax,bx
+ mov word ptr -16H[bp],ax
+ shl bx,1
+ shl bx,1
+ add si,bx
+L$25:
+ mov bx,ax
+ add bx,cx
+ sub bx,word ptr cs:MX_CLIPX2
+ jle L$26
+ sub cx,bx
+L$26:
+ test cx,cx
+ jg L$27
+ jmp near ptr L$36
+L$27:
+ mov word ptr -8[bp],cx
+ mov word ptr -4[bp],si
+ mov ds,word ptr cs:MX_CODESEGMENT
+ mov ax,word ptr -18H[bp]
+ cmp ax,word ptr cs:MX_CLIPY1
+ jl L$28
+ mov ax,word ptr -1eH[bp]
+ cmp ax,word ptr cs:MX_CLIPY2
+ jg L$28
+ jmp L$32
+L$28:
+ mov di,cx
+ inc di
+ sub si,4
+L$29:
+ dec di
+ je L$32
+ add si,4
+ mov ax,word ptr [si]
+ mov cx,word ptr 2[si]
+ mov dx,word ptr cs:MX_CLIPY2
+ cmp ax,dx
+ jg L$31
+ cmp cx,dx
+ jle L$30
+ mov word ptr 2[si],dx
+ mov bx,cx
+ sub bx,dx
+ sub cx,ax
+ jle L$31
+ mov cx,word ptr 2[si]
+L$30:
+ mov dx,word ptr cs:MX_CLIPY1
+ cmp cx,dx
+ jl L$31
+ sub cx,ax
+ jle L$31
+ cmp ax,dx
+ jge L$29
+ mov word ptr [si],dx
+ sub dx,ax
+ cmp cx,dx
+ ja L$29
+L$31:
+ mov word ptr [si],0ffffH
+ jmp L$29
+L$32:
+ mov es,word ptr cs:MX_VIDEOSEGMENT
+ mov si,word ptr -4[bp]
+ mov cl,byte ptr -16H[bp]
+ and cl,3
+ mov al,11H
+ shl al,cl
+ mov byte ptr -2[bp],al
+ shr word ptr -16H[bp],1
+ shr word ptr -16H[bp],1
+L$33:
+ mov ax,word ptr [si]
+ test ax,ax
+ js L$35
+ mov cx,word ptr 2[si]
+ sub cx,ax
+ jle L$35
+ mul word ptr cs:MX_BYTESPERLINE
+ add ax,word ptr -16H[bp]
+ mov di,ax
+ mov ah,byte ptr -2[bp]
+ mov dx,3c4H
+ mov al,2
+ out dx,ax
+ mov ax,word ptr 6[bp]
+ mov dx,word ptr cs:MX_BYTESPERLINE
+ shr cx,1
+ jae L$34
+ mov byte ptr es:[di],al
+ add di,dx
+ jcxz L$35
+L$34:
+ mov byte ptr es:[di],al
+ add di,dx
+ mov byte ptr es:[di],al
+ add di,dx
+ dec cx
+ jne L$34
+L$35:
+ rol byte ptr -2[bp],1
+ adc word ptr -16H[bp],0
+ add si,4
+ dec word ptr -8[bp]
+ jne L$33
+L$36:
+ xor ax,ax
+ pop di
+ pop es
+ pop si
+ pop ds
+ mov sp,bp
+ pop bp
+ retf 0cH
+MX_TEXT ENDS
+ END