.387 PUBLIC MXLINE EXTRN MX_BYTESPERLINE:BYTE EXTRN MX_VIDEOSEGMENT:BYTE EXTRN MX_CLIPX1:BYTE EXTRN MX_CLIPX2:BYTE EXTRN MX_CLIPY1:BYTE EXTRN MX_CLIPY2:BYTE MX_TEXT SEGMENT PARA PUBLIC USE16 'CODE' ASSUME CS:MX_TEXT, DS:DGROUP, SS:DGROUP L$1: DW offset L$29 DW offset L$32 DW offset L$35 DW offset L$38 MXLINE: push bp mov bp,sp sub sp,12H push ds push si push di mov ax,word ptr 10H[bp] mov bx,word ptr 0eH[bp] mov cx,word ptr 0cH[bp] mov dx,word ptr 0aH[bp] call near ptr L$8 jae L$2 jmp near ptr L$7 L$2: mov si,cx xchg ax,si sub ax,si jge L$3 xchg cx,si xchg dx,bx neg ax L$3: mov word ptr -2[bp],ax mov cx,word ptr cs:MX_BYTESPERLINE mov ax,dx sub ax,bx jge L$4 neg cx neg ax L$4: mov word ptr -4[bp],ax mov word ptr -0cH[bp],cx mov ax,bx mul word ptr cs:MX_BYTESPERLINE mov cx,si shr si,1 shr si,1 add si,ax and cl,3 mov ax,1102H shl ah,cl mov byte ptr -12H[bp],ah mov dx,3c4H out dx,ax mov ax,word ptr cs:MX_VIDEOSEGMENT mov ds,ax xor bx,bx mov al,byte ptr 6[bp] cmp al,0 je L$5 and al,3 shl al,1 shl al,1 shl al,1 mov ah,al mov al,3 mov dx,3ceH out dx,ax inc bx inc bx L$5: mov ax,word ptr -2[bp] mov cx,word ptr -4[bp] cmp ax,cx jae L$6 inc bx L$6: shl bx,1 call word ptr cs:L$1[bx] cmp byte ptr 6[bp],0 je L$7 mov ax,3 mov dx,3ceH out dx,ax L$7: xor ax,ax pop di pop si pop ds mov sp,bp pop bp retf 0cH L$8: mov di,ax mov si,dx xor al,al cmp cx,word ptr cs:MX_CLIPX1 jge L$9 or al,1 L$9: cmp cx,word ptr cs:MX_CLIPX2 jle L$10 or al,2 L$10: cmp si,word ptr cs:MX_CLIPY1 jge L$11 or al,4 L$11: cmp si,word ptr cs:MX_CLIPY2 jle L$12 or al,8 L$12: mov byte ptr -10H[bp],al xor al,al cmp di,word ptr cs:MX_CLIPX1 jge L$13 or al,1 L$13: cmp di,word ptr cs:MX_CLIPX2 jle L$14 or al,2 L$14: cmp bx,word ptr cs:MX_CLIPY1 jge L$15 or al,4 L$15: cmp bx,word ptr cs:MX_CLIPY2 jle L$16 or al,8 L$16: mov byte ptr -0eH[bp],al mov ah,byte ptr -10H[bp] test ah,al je L$17 jmp near ptr L$28 L$17: or ah,al jne L$18 jmp near ptr L$27 L$18: mov ax,cx sub ax,di mov word ptr -0aH[bp],ax mov ax,si sub ax,bx mov word ptr -0cH[bp],ax mov al,byte ptr -0eH[bp] L$19: test al,al jne L$20 xchg di,cx xchg si,bx xchg byte ptr -10H[bp],al L$20: test al,1 je L$21 mov ax,word ptr cs:MX_CLIPX1 sub ax,di mov di,word ptr cs:MX_CLIPX1 jmp L$22 L$21: test al,2 je L$23 mov ax,word ptr cs:MX_CLIPX2 sub ax,di mov di,word ptr cs:MX_CLIPX2 L$22: imul word ptr -0cH[bp] idiv word ptr -0aH[bp] add bx,ax mov al,8 cmp bx,word ptr cs:MX_CLIPY2 jg L$26 mov al,4 cmp bx,word ptr cs:MX_CLIPY1 jl L$26 xor al,al jmp L$26 L$23: test al,4 je L$24 mov ax,word ptr cs:MX_CLIPY1 sub ax,bx mov bx,word ptr cs:MX_CLIPY1 jmp L$25 L$24: mov ax,word ptr cs:MX_CLIPY2 sub ax,bx mov bx,word ptr cs:MX_CLIPY2 L$25: imul word ptr -0aH[bp] idiv word ptr -0cH[bp] add di,ax mov al,1 cmp di,word ptr cs:MX_CLIPX1 jl L$26 mov al,2 cmp di,word ptr cs:MX_CLIPX2 jg L$26 xor al,al L$26: mov ah,byte ptr -10H[bp] test ah,al jne L$28 or ah,al je L$27 jmp near ptr L$19 L$27: mov ax,di mov dx,si clc ret L$28: stc ret L$29: mov di,ax neg di shl cx,1 mov word ptr -6[bp],cx mov cx,ax shl ax,1 mov word ptr -8[bp],ax mov al,2 mov ah,byte ptr -12H[bp] mov bl,byte ptr 8[bp] mov dx,3c4H inc cx L$30: mov byte ptr [si],bl dec cx je L$31 rol ah,1 adc si,0 out dx,ax add di,word ptr -6[bp] jl L$30 add si,word ptr -0cH[bp] sub di,word ptr -8[bp] jmp L$30 L$31: ret L$32: mov di,cx neg di shl ax,1 mov word ptr -6[bp],ax mov ax,cx shl ax,1 mov word ptr -8[bp],ax mov bl,byte ptr 8[bp] mov ah,byte ptr -12H[bp] mov al,2 mov dx,3c4H inc cx L$33: mov byte ptr [si],bl dec cx je L$34 add si,word ptr -0cH[bp] add di,word ptr -6[bp] jl L$33 rol ah,1 adc si,0 out dx,ax sub di,word ptr -8[bp] jmp L$33 L$34: ret L$35: mov di,ax neg di shl cx,1 mov word ptr -6[bp],cx mov cx,ax shl ax,1 mov word ptr -8[bp],ax mov al,2 mov ah,byte ptr -12H[bp] mov bl,byte ptr 8[bp] mov dx,3c4H inc cx L$36: mov bh,byte ptr [si] mov byte ptr [si],bl dec cx je L$37 rol ah,1 adc si,0 out dx,ax add di,word ptr -6[bp] jl L$36 add si,word ptr -0cH[bp] sub di,word ptr -8[bp] jmp L$36 L$37: ret L$38: mov di,cx neg di shl ax,1 mov word ptr -6[bp],ax mov ax,cx shl ax,1 mov word ptr -8[bp],ax mov bl,byte ptr 8[bp] mov ah,byte ptr -12H[bp] mov al,2 mov dx,3c4H inc cx L$39: mov bh,byte ptr [si] mov byte ptr [si],bl dec cx je L$40 add si,word ptr -0cH[bp] add di,word ptr -6[bp] jl L$39 rol ah,1 adc si,0 out dx,ax sub di,word ptr -8[bp] jmp L$39 L$40: ret MX_TEXT ENDS END