X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=16%2Fxw_%2Fmxtl.asm;fp=16%2Fxw_%2Fmxtl.asm;h=3f791b41de13518d76d10f79cc30e01e992031a1;hb=75a35fd2843da7105acc7eee68674131431d0ccb;hp=0000000000000000000000000000000000000000;hpb=1c75464b9fad87da35a11650cab4e63aa532e5fc;p=16.git diff --git a/16/xw_/mxtl.asm b/16/xw_/mxtl.asm new file mode 100755 index 00000000..3f791b41 --- /dev/null +++ b/16/xw_/mxtl.asm @@ -0,0 +1,122 @@ + 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