]> 4ch.mooo.com Git - 16.git/blobdiff - 16/x_/mxsi.asm
clear
[16.git] / 16 / x_ / mxsi.asm
diff --git a/16/x_/mxsi.asm b/16/x_/mxsi.asm
deleted file mode 100755 (executable)
index b88d3b1..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-;-----------------------------------------------------------\r
-;\r
-; MXPI.ASM - Stretch image\r
-; Copyright (c) 1994 by Alessandro Scotti\r
-;\r
-;-----------------------------------------------------------\r
-WARN    PRO\r
-NOWARN  RES\r
-INCLUDE MODEX.DEF\r
-\r
-PUBLIC  mxStretchImage\r
-\r
-EXTRN   subClipBox              : NEAR\r
-\r
-MX_TEXT         SEGMENT USE16 PARA PUBLIC 'CODE'\r
-                ASSUME cs:MX_TEXT, ds:NOTHING, es:NOTHING\r
-\r
-EXTRN   mx_VideoSegment : WORD\r
-EXTRN   mx_BytesPerLine : WORD\r
-\r
-mxTable LABEL   WORD                    ; Raster ops\r
-        DW      subMove\r
-        DW      subAnd\r
-        DW      subOr\r
-        DW      subXor\r
-        DW      subTrans\r
-        DW      subAdd\r
-\r
-;-----------------------------------------------------------\r
-;\r
-; Stretches and copies a "raw" image from memory to screen.\r
-;\r
-; Input:\r
-;       Image     = pointer to image\r
-;       X, Y      = coordinates of destination\r
-;       Width     = width of image in pixels\r
-;       Height    = height of image in pixels\r
-;       NewWidth  = new width of image in pixels\r
-;       NewHeight = new height of image in pixels\r
-;       Op        = raster op (OP_xxx)\r
-; Output:\r
-;       none\r
-;\r
-mxStretchImage  PROC    FAR\r
-        ARG     Op:WORD,                \\r
-                NewHeight:WORD,         \\r
-                NewWidth:WORD,          \\r
-                Height:WORD,            \\r
-                Width:WORD,             \\r
-                Y:WORD,                 \\r
-                X:WORD,                 \\r
-                Image:DWORD             = ARG_SIZE\r
-        LOCAL   PixelOffset:WORD,       \\r
-                MoveFunction:WORD,      \\r
-                ReadPlane:BYTE,         \\r
-                OpInfo:BYTE,            \\r
-                WidthStep:DWORD,        \\r
-                HeightStep:DWORD,       \\r
-                ImageLo:WORD,           \\r
-                WritePlane:BYTE         = AUTO_SIZE\r
-        ASSUME  ds:NOTHING\r
-        .enter  AUTO_SIZE\r
-        .push   ds, si, es, di\r
-\r
-; Get width stretch factor\r
-    IF USE386 EQ TRUE\r
-        movzx   edx, [Width]\r
-        xor     eax, eax\r
-        movzx   ebx, [NewWidth]\r
-        shl     ebx, 16\r
-        idiv    ebx\r
-        mov     [WidthStep], eax\r
-    ELSE\r
-        xor     dx, dx                  ; Width stretch factor\r
-        mov     ax, [Width]\r
-        mov     bx, [NewWidth]\r
-        div     bx\r
-        mov     WORD PTR WidthStep[2], ax\r
-        xor     ax, ax\r
-        div     bx\r
-        mov     WORD PTR WidthStep[0], ax\r
-    ENDIF\r
-; Get height stretch factor\r
-    IF USE386 EQ TRUE\r
-        movzx   edx, [Height]\r
-        xor     eax, eax\r
-        movzx   ebx, [NewHeight]\r
-        shl     ebx, 16\r
-        idiv    ebx\r
-        mov     [HeightStep], eax\r
-    ELSE\r
-        xor     dx, dx\r
-        mov     ax, [Height]\r
-        mov     bx, [NewHeight]\r
-        div     bx\r
-        mov     WORD PTR HeightStep[2], ax\r
-        xor     ax, ax\r
-        div     bx\r
-        mov     WORD PTR HeightStep[0], ax\r
-   ENDIF\r
-\r
-; Clip image\r
-        mov     bx, [X]\r
-        mov     ax, [Y]\r
-        mov     cx, [NewWidth]\r
-        mov     dx, [NewHeight]\r
-        call    subClipBox\r
-        jc      @@Exit                  ; Full clipped\r
-        mov     [NewWidth], cx\r
-        mov     [NewHeight], dx\r
-        sub     [X], bx\r
-        sub     [Y], ax\r
-\r
-; Get pixel address\r
-        mul     [mx_BytesPerLine]\r
-        mov     di, bx\r
-        shr     di, 1\r
-        shr     di, 1\r
-        add     di, ax\r
-        mov     [PixelOffset], di\r
-        mov     es, [mx_VideoSegment]   ; ES:DI points to pixel\r
-        and     bl, 03h\r
-        mov     [ReadPlane], bl         ; Set read plane\r
-        mov     cl, bl\r
-        mov     al, 00010001b\r
-        shl     al, cl\r
-        mov     [WritePlane], al        ; Set write plane\r
-\r
-; Relocate image origin if previously clipped\r
-        mov     ax, [Y]\r
-        test    ax, ax\r
-        jz      @@OriginYDone\r
-    IF USE386 EQ TRUE\r
-        shl     eax, 16\r
-        imul    [HeightStep]\r
-        mov     ax, [Width]\r
-        mul     dx\r
-    ELSE\r
-        mov     bx, ax\r
-        mul     WORD PTR HeightStep[0]\r
-        mov     cx, dx\r
-        mov     ax, bx\r
-        mul     WORD PTR HeightStep[2]\r
-        add     ax, cx\r
-        mul     [Width]\r
-    ENDIF\r
-        add     WORD PTR [Image], ax\r
-@@OriginYDone:\r
-        mov     ax, [X]\r
-        test    ax, ax\r
-        jz      @@OriginXDone\r
-    IF USE386 EQ TRUE\r
-        shl     eax, 16\r
-        imul    [WidthStep]\r
-        add     WORD PTR [Image], dx\r
-    ELSE\r
-        mov     bx, ax\r
-        mul     WORD PTR WidthStep[0]\r
-        mov     cx, dx\r
-        mov     ax, bx\r
-        mul     WORD PTR WidthStep[2]\r
-        add     ax, cx\r
-        add     WORD PTR [Image], ax\r
-    ENDIF\r
-@@OriginXDone:\r
-        mov     ax, WORD PTR HeightStep[2]\r
-        mul     [Width]\r
-        mov     WORD PTR HeightStep[2], ax\r
-\r
-; Install move function\r
-        mov     bx, [Op]\r
-        mov     [OpInfo], bh            ; Remember additional info if needed\r
-        xor     bh, bh\r
-        cmp     bl, OP_ADD\r
-        jbe     @@SetMoveFunction\r
-        xor     bl, bl\r
-@@SetMoveFunction:\r
-        shl     bx, 1\r
-        mov     ax, mxTable[bx]\r
-        mov     [MoveFunction], ax\r
-\r
-; Put image\r
-        mov     ds, WORD PTR Image[2]\r
-        xor     ax, ax\r
-        mov     [ImageLo], ax\r
-@@Loop:\r
-        mov     si, WORD PTR Image[0]   ; Get pointer to image\r
-        mov     ah, [WritePlane]\r
-        and     ah, 0Fh\r
-        mov     al, 02h\r
-        mov     dx, TS\r
-        out     dx, ax                  ; Select write plane\r
-        mov     ah, [ReadPlane]\r
-        and     ah, 03h\r
-        mov     al, 04h\r
-        mov     dx, GDC\r
-        out     dx, ax                  ; Select read plane\r
-        mov     cx, [NewHeight]\r
-        mov     di, [PixelOffset]       ; ES:DI points to video memory\r
-        mov     ah, [OpInfo]            ; Additional raster op info\r
-        xor     bx, bx\r
-        mov     dx, [mx_BytesPerLine]\r
-        call    [MoveFunction]          ; Draw column\r
-        inc     [ReadPlane]             ; Next read plane\r
-        rol     [WritePlane], 1         ; Next write plane\r
-        adc     [PixelOffset], 0        ; Update video offset if needed\r
-        mov     dx, WORD PTR WidthStep[0]\r
-        mov     ax, WORD PTR WidthStep[2]\r
-        add     [ImageLo], dx\r
-        adc     WORD PTR Image[0], ax   ; Next image column\r
-        dec     [NewWidth]\r
-        jnz     @@Loop                  ; Repeat for all columns\r
-\r
-@@Exit:\r
-        xor     ax, ax\r
-        .pop    ds, si, es, di\r
-        .leave  ARG_SIZE\r
-\r
-;-----------------------------------------------------------\r
-;\r
-; Move functions, on entry:\r
-;       AH = additional raster op info (e.g. transparent color)\r
-;       BX = 0,\r
-;       CX = pixel count,\r
-;       DX = mx_BytesPerLine.\r
-;\r
-subMove         PROC    NEAR\r
-@@Loop: mov     al, ds:[si]\r
-        mov     es:[di], al\r
-        add     di, dx\r
-        dec     cx\r
-        jz      @@Exit\r
-        add     si, WORD PTR HeightStep[2]\r
-        add     bx, WORD PTR HeightStep[0]\r
-        jnc     @@Loop\r
-        add     si, [Width]\r
-        jmp     @@Loop\r
-@@Exit: ret\r
-subMove         ENDP\r
-;\r
-subAnd          PROC     NEAR\r
-@@Loop: mov     al, ds:[si]\r
-        and     es:[di], al\r
-        add     di, dx\r
-        dec     cx\r
-        jz      @@Exit\r
-        add     si, WORD PTR HeightStep[2]\r
-        add     bx, WORD PTR HeightStep[0]\r
-        jnc     @@Loop\r
-        add     si, [Width]\r
-        jmp     @@Loop\r
-@@Exit: ret\r
-subAnd          ENDP\r
-;\r
-subOr           PROC     NEAR\r
-@@Loop: mov     al, ds:[si]\r
-        or      es:[di], al\r
-        add     di, dx\r
-        dec     cx\r
-        jz      @@Exit\r
-        add     si, WORD PTR HeightStep[2]\r
-        add     bx, WORD PTR HeightStep[0]\r
-        jnc     @@Loop\r
-        add     si, [Width]\r
-        jmp     @@Loop\r
-@@Exit: ret\r
-subOr           ENDP\r
-;\r
-subXor          PROC     NEAR\r
-@@Loop: mov     al, ds:[si]\r
-        xor     es:[di], al\r
-        add     di, dx\r
-        dec     cx\r
-        jz      @@Exit\r
-        add     si, WORD PTR HeightStep[2]\r
-        add     bx, WORD PTR HeightStep[0]\r
-        jnc     @@Loop\r
-        add     si, [Width]\r
-        jmp     @@Loop\r
-@@Exit: ret\r
-subXor          ENDP\r
-;\r
-subTrans        PROC     NEAR\r
-@@Loop: mov     al, ds:[si]\r
-        cmp     al, ah\r
-        je      @@Skip\r
-        mov     es:[di], al\r
-@@Skip:\r
-        add     di, dx\r
-        dec     cx\r
-        jz      @@Exit\r
-        add     si, WORD PTR HeightStep[2]\r
-        add     bx, WORD PTR HeightStep[0]\r
-        jnc     @@Loop\r
-        add     si, [Width]\r
-        jmp     @@Loop\r
-@@Exit: ret\r
-subTrans        ENDP\r
-;\r
-subAdd          PROC     NEAR\r
-@@Loop: mov     al, ds:[si]\r
-        add     es:[di], al\r
-        add     di, dx\r
-        dec     cx\r
-        jz      @@Exit\r
-        add     si, WORD PTR HeightStep[2]\r
-        add     bx, WORD PTR HeightStep[0]\r
-        jnc     @@Loop\r
-        add     si, [Width]\r
-        jmp     @@Loop\r
-@@Exit: ret\r
-subAdd          ENDP\r
-\r
-mxStretchImage  ENDP\r
-\r
-MX_TEXT         ENDS\r
-END\r