]> 4ch.mooo.com Git - 16.git/blobdiff - 16/xw__/mxsi.asm
refresh wwww
[16.git] / 16 / xw__ / mxsi.asm
diff --git a/16/xw__/mxsi.asm b/16/xw__/mxsi.asm
new file mode 100755 (executable)
index 0000000..a9179a8
--- /dev/null
@@ -0,0 +1,221 @@
+.387
+               PUBLIC  MXSTRETCHIMAGE
+               EXTRN   SUBCLIPBOX:BYTE
+               EXTRN   MX_BYTESPERLINE:BYTE
+               EXTRN   MX_VIDEOSEGMENT:BYTE
+MX_TEXT                SEGMENT PARA PUBLIC USE16 'CODE'
+               ASSUME CS:MX_TEXT, DS:DGROUP, SS:DGROUP
+L$1:
+    DW offset L$8
+    DW offset L$10
+    DW offset L$12
+    DW offset L$14
+    DW offset L$16
+    DW offset L$19
+MXSTRETCHIMAGE:
+       push            bp
+       mov             bp,sp
+       sub             sp,14H
+       push            ds
+       push            si
+       push            es
+       push            di
+       xor             dx,dx
+       mov             ax,word ptr 0eH[bp]
+       mov             bx,word ptr 0aH[bp]
+       div             bx
+       mov             word ptr -0aH[bp],ax
+       xor             ax,ax
+       div             bx
+       mov             word ptr -0cH[bp],ax
+       xor             dx,dx
+       mov             ax,word ptr 0cH[bp]
+       mov             bx,word ptr 8[bp]
+       div             bx
+       mov             word ptr -0eH[bp],ax
+       xor             ax,ax
+       div             bx
+       mov             word ptr -10H[bp],ax
+       mov             bx,word ptr 12H[bp]
+       mov             ax,word ptr 10H[bp]
+       mov             cx,word ptr 0aH[bp]
+       mov             dx,word ptr 8[bp]
+       call            near ptr MX_TEXT:SUBCLIPBOX
+       jae             L$2
+       jmp             near ptr L$7
+L$2:
+       mov             word ptr 0aH[bp],cx
+       mov             word ptr 8[bp],dx
+       sub             word ptr 12H[bp],bx
+       sub             word ptr 10H[bp],ax
+       mul             word ptr cs:MX_BYTESPERLINE
+       mov             di,bx
+       shr             di,1
+       shr             di,1
+       add             di,ax
+       mov             word ptr -2[bp],di
+       mov             es,word ptr cs:MX_VIDEOSEGMENT
+       and             bl,3
+       mov             byte ptr -6[bp],bl
+       mov             cl,bl
+       mov             al,11H
+       shl             al,cl
+       mov             byte ptr -14H[bp],al
+       mov             ax,word ptr 10H[bp]
+       test            ax,ax
+       je              L$3
+       mov             bx,ax
+       mul             word ptr -10H[bp]
+       mov             cx,dx
+       mov             ax,bx
+       mul             word ptr -0eH[bp]
+       add             ax,cx
+       mul             word ptr 0eH[bp]
+       add             word ptr 14H[bp],ax
+L$3:
+       mov             ax,word ptr 12H[bp]
+       test            ax,ax
+       je              L$4
+       mov             bx,ax
+       mul             word ptr -0cH[bp]
+       mov             cx,dx
+       mov             ax,bx
+       mul             word ptr -0aH[bp]
+       add             ax,cx
+       add             word ptr 14H[bp],ax
+L$4:
+       mov             ax,word ptr -0eH[bp]
+       mul             word ptr 0eH[bp]
+       mov             word ptr -0eH[bp],ax
+       mov             bx,word ptr 6[bp]
+       mov             byte ptr -8[bp],bh
+       xor             bh,bh
+       cmp             bl,5
+       jbe             L$5
+       xor             bl,bl
+L$5:
+       shl             bx,1
+       mov             ax,word ptr cs:L$1[bx]
+       mov             word ptr -4[bp],ax
+       mov             ds,word ptr 16H[bp]
+       xor             ax,ax
+       mov             word ptr -12H[bp],ax
+L$6:
+       mov             si,word ptr 14H[bp]
+       mov             ah,byte ptr -14H[bp]
+       and             ah,0fH
+       mov             al,2
+       mov             dx,3c4H
+       out             dx,ax
+       mov             ah,byte ptr -6[bp]
+       and             ah,3
+       mov             al,4
+       mov             dx,3ceH
+       out             dx,ax
+       mov             cx,word ptr 8[bp]
+       mov             di,word ptr -2[bp]
+       mov             ah,byte ptr -8[bp]
+       xor             bx,bx
+       mov             dx,word ptr cs:MX_BYTESPERLINE
+       call            word ptr -4[bp]
+       inc             byte ptr -6[bp]
+       rol             byte ptr -14H[bp],1
+       adc             word ptr -2[bp],0
+       mov             dx,word ptr -0cH[bp]
+       mov             ax,word ptr -0aH[bp]
+       add             word ptr -12H[bp],dx
+       adc             word ptr 14H[bp],ax
+       dec             word ptr 0aH[bp]
+       jne             L$6
+L$7:
+       xor             ax,ax
+       pop             di
+       pop             es
+       pop             si
+       pop             ds
+       mov             sp,bp
+       pop             bp
+       retf            12H
+L$8:
+       mov             al,byte ptr [si]
+       mov             byte ptr es:[di],al
+       add             di,dx
+       dec             cx
+       je              L$9
+       add             si,word ptr -0eH[bp]
+       add             bx,word ptr -10H[bp]
+       jae             L$8
+       add             si,word ptr 0eH[bp]
+       jmp             L$8
+L$9:
+       ret
+L$10:
+       mov             al,byte ptr [si]
+       and             byte ptr es:[di],al
+       add             di,dx
+       dec             cx
+       je              L$11
+       add             si,word ptr -0eH[bp]
+       add             bx,word ptr -10H[bp]
+       jae             L$10
+       add             si,word ptr 0eH[bp]
+       jmp             L$10
+L$11:
+       ret
+L$12:
+       mov             al,byte ptr [si]
+       or              byte ptr es:[di],al
+       add             di,dx
+       dec             cx
+       je              L$13
+       add             si,word ptr -0eH[bp]
+       add             bx,word ptr -10H[bp]
+       jae             L$12
+       add             si,word ptr 0eH[bp]
+       jmp             L$12
+L$13:
+       ret
+L$14:
+       mov             al,byte ptr [si]
+       xor             byte ptr es:[di],al
+       add             di,dx
+       dec             cx
+       je              L$15
+       add             si,word ptr -0eH[bp]
+       add             bx,word ptr -10H[bp]
+       jae             L$14
+       add             si,word ptr 0eH[bp]
+       jmp             L$14
+L$15:
+       ret
+L$16:
+       mov             al,byte ptr [si]
+       cmp             al,ah
+       je              L$17
+       mov             byte ptr es:[di],al
+L$17:
+       add             di,dx
+       dec             cx
+       je              L$18
+       add             si,word ptr -0eH[bp]
+       add             bx,word ptr -10H[bp]
+       jae             L$16
+       add             si,word ptr 0eH[bp]
+       jmp             L$16
+L$18:
+       ret
+L$19:
+       mov             al,byte ptr [si]
+       add             byte ptr es:[di],al
+       add             di,dx
+       dec             cx
+       je              L$20
+       add             si,word ptr -0eH[bp]
+       add             bx,word ptr -10H[bp]
+       jae             L$19
+       add             si,word ptr 0eH[bp]
+       jmp             L$19
+L$20:
+       ret
+MX_TEXT                ENDS
+               END