]> 4ch.mooo.com Git - 16.git/blobdiff - 16/xw__/mxcl.asm
trying to translate that lib into open watcom...
[16.git] / 16 / xw__ / mxcl.asm
diff --git a/16/xw__/mxcl.asm b/16/xw__/mxcl.asm
new file mode 100755 (executable)
index 0000000..1f5af64
--- /dev/null
@@ -0,0 +1,111 @@
+.387
+               PUBLIC  MXCIRCLE
+               EXTRN   MX_VIDEOSEGMENT:BYTE
+               EXTRN   MX_CLIPX1:BYTE
+               EXTRN   MX_CLIPX2:BYTE
+               EXTRN   MX_CLIPY1:BYTE
+               EXTRN   MX_CLIPY2:BYTE
+               EXTRN   MX_BYTESPERLINE:BYTE
+MX_TEXT                SEGMENT PARA PUBLIC USE16 'CODE'
+               ASSUME CS:MX_TEXT, DS:DGROUP, SS:DGROUP
+MXCIRCLE:
+       push            bp
+       mov             bp,sp
+       sub             sp,2
+       push            ds
+       push            si
+       push            di
+       xor             si,si
+       mov             di,word ptr 8[bp]
+       mov             ax,3
+       sub             ax,di
+       sub             ax,di
+       mov             word ptr -2[bp],ax
+       mov             ds,word ptr cs:MX_VIDEOSEGMENT
+L$1:
+       cmp             si,di
+       jg              L$3
+       mov             ax,si
+       mov             bx,di
+       call            near ptr L$4
+       mov             ax,si
+       neg             ax
+       mov             bx,di
+       call            near ptr L$4
+       mov             ax,si
+       mov             bx,di
+       neg             bx
+       call            near ptr L$4
+       mov             ax,si
+       neg             ax
+       mov             bx,di
+       neg             bx
+       call            near ptr L$4
+       mov             ax,di
+       mov             bx,si
+       call            near ptr L$4
+       mov             ax,di
+       neg             ax
+       mov             bx,si
+       call            near ptr L$4
+       mov             ax,di
+       mov             bx,si
+       neg             bx
+       call            near ptr L$4
+       mov             ax,di
+       neg             ax
+       mov             bx,si
+       neg             bx
+       call            near ptr L$4
+       mov             ax,word ptr -2[bp]
+       test            ax,ax
+       jl              L$2
+       mov             ax,di
+       shl             ax,1
+       shl             ax,1
+       sub             ax,4
+       sub             word ptr -2[bp],ax
+       dec             di
+L$2:
+       mov             ax,si
+       shl             ax,1
+       shl             ax,1
+       add             ax,6
+       add             word ptr -2[bp],ax
+       inc             si
+       jmp             L$1
+L$3:
+       xor             ax,ax
+       pop             di
+       pop             si
+       pop             ds
+       mov             sp,bp
+       pop             bp
+       retf            8
+L$4:
+       add             bx,word ptr 0cH[bp]
+       add             ax,word ptr 0aH[bp]
+       cmp             bx,word ptr cs:MX_CLIPX1
+       jl              L$5
+       cmp             bx,word ptr cs:MX_CLIPX2
+       jg              L$5
+       cmp             ax,word ptr cs:MX_CLIPY1
+       jl              L$5
+       cmp             ax,word ptr cs:MX_CLIPY2
+       jg              L$5
+       mul             word ptr cs:MX_BYTESPERLINE
+       mov             cx,bx
+       shr             bx,1
+       shr             bx,1
+       add             bx,ax
+       and             cl,3
+       mov             ax,102H
+       shl             ah,cl
+       mov             dx,3c4H
+       out             dx,ax
+       mov             al,byte ptr 6[bp]
+       mov             byte ptr [bx],al
+L$5:
+       ret
+MX_TEXT                ENDS
+               END