]> 4ch.mooo.com Git - 16.git/blobdiff - 16/xw__/mxtl.asm
refresh wwww
[16.git] / 16 / xw__ / mxtl.asm
diff --git a/16/xw__/mxtl.asm b/16/xw__/mxtl.asm
new file mode 100755 (executable)
index 0000000..e93aedf
--- /dev/null
@@ -0,0 +1,123 @@
+.387
+               PUBLIC  MXPUTTILE
+               PUBLIC  MXTRANSPUTTILE
+               EXTRN   MX_BYTESPERLINE:BYTE
+               EXTRN   MX_VIDEOSEGMENT:BYTE
+MX_TEXT                SEGMENT PARA PUBLIC USE16 'CODE'
+               ASSUME CS:MX_TEXT, DS:DGROUP, SS:DGROUP
+MXPUTTILE:
+       push            bp
+       mov             bp,sp
+       sub             sp,0
+       push            ds
+       push            si
+       push            es
+       push            di
+       mov             ax,word ptr 0aH[bp]
+       mul             word ptr cs:MX_BYTESPERLINE
+       mov             di,word ptr 0cH[bp]
+       shr             di,1
+       shr             di,1
+       add             di,ax
+       mov             es,word ptr cs:MX_VIDEOSEGMENT
+       lds             si,dword ptr 0eH[bp]
+       shr             word ptr 8[bp],1
+       shr             word ptr 8[bp],1
+       mov             cl,byte ptr 0cH[bp]
+       and             cl,3
+       mov             ah,11H
+       shl             ah,cl
+       mov             word ptr 0aH[bp],4
+       mov             bx,word ptr cs:MX_BYTESPERLINE
+       sub             bx,word ptr 8[bp]
+L$1:
+       mov             al,2
+       mov             dx,3c4H
+       out             dx,ax
+       mov             word ptr 0cH[bp],di
+       mov             dx,word ptr 6[bp]
+L$2:
+       mov             cx,word ptr 8[bp]
+       shr             cx,1
+       rep movsw
+       rcl             cx,1
+       rep movsb
+       add             di,bx
+       dec             dx
+       jne             L$2
+       mov             di,word ptr 0cH[bp]
+       rol             ah,1
+       adc             di,0
+       dec             word ptr 0aH[bp]
+       jne             L$1
+       xor             ax,ax
+       pop             di
+       pop             es
+       pop             si
+       pop             ds
+       mov             sp,bp
+       pop             bp
+       retf            0cH
+MXTRANSPUTTILE:
+       push            bp
+       mov             bp,sp
+       sub             sp,0
+       push            ds
+       push            si
+       push            es
+       push            di
+       mov             ax,word ptr 0aH[bp]
+       mul             word ptr cs:MX_BYTESPERLINE
+       mov             di,word ptr 0cH[bp]
+       shr             di,1
+       shr             di,1
+       add             di,ax
+       mov             es,word ptr cs:MX_VIDEOSEGMENT
+       lds             si,dword ptr 0eH[bp]
+       shr             word ptr 8[bp],1
+       shr             word ptr 8[bp],1
+       mov             cl,byte ptr 0cH[bp]
+       and             cl,3
+       mov             ah,11H
+       shl             ah,cl
+       mov             word ptr 0aH[bp],4
+       mov             bx,word ptr cs:MX_BYTESPERLINE
+       sub             bx,word ptr 8[bp]
+L$3:
+       mov             al,2
+       mov             dx,3c4H
+       out             dx,ax
+       mov             word ptr 0cH[bp],di
+       mov             dx,word ptr 6[bp]
+L$4:
+       mov             cx,word ptr 8[bp]
+       jcxz            L$7
+L$5:
+       mov             al,byte ptr [si]
+       test            al,al
+       je              L$6
+       mov             byte ptr es:[di],al
+L$6:
+       inc             si
+       inc             di
+       dec             cx
+       jne             L$5
+L$7:
+       add             di,bx
+       dec             dx
+       jne             L$4
+       mov             di,word ptr 0cH[bp]
+       rol             ah,1
+       adc             di,0
+       dec             word ptr 0aH[bp]
+       jne             L$3
+       xor             ax,ax
+       pop             di
+       pop             es
+       pop             si
+       pop             ds
+       mov             sp,bp
+       pop             bp
+       retf            0cH
+MX_TEXT                ENDS
+               END