.387 PUBLIC MXFILLBOX EXTRN SUBCLIPBOX:BYTE EXTRN SUBHORIZONTALLINEINFO:BYTE EXTRN MX_VIDEOSEGMENT:BYTE EXTRN MX_BYTESPERLINE:BYTE MX_TEXT SEGMENT PARA PUBLIC USE16 'CODE' ASSUME CS:MX_TEXT, DS:DGROUP, SS:DGROUP L$1: mov ah,al shr cx,1 rep stosw rcl cx,1 rep stosb ret L$2: mov byte ptr [bx],al add bx,dx loop L$2 ret L$3: mov si,di L$4: mov ah,byte ptr [si] mov byte ptr [si],al inc si loop L$4 ret L$5: mov ah,byte ptr [bx] mov byte ptr [bx],al add bx,dx loop L$5 ret MXFILLBOX: push bp mov bp,sp sub sp,8 push ds push si push es push di mov bx,word ptr 10H[bp] mov ax,word ptr 0eH[bp] mov cx,word ptr 0cH[bp] mov dx,word ptr 0aH[bp] call near ptr MX_TEXT:SUBCLIPBOX jae L$6 jmp near ptr L$12 L$6: mov word ptr 0aH[bp],dx call near ptr MX_TEXT:SUBHORIZONTALLINEINFO mov word ptr 0cH[bp],cx mov byte ptr -2[bp],al mov byte ptr -4[bp],ah mov ax,word ptr cs:MX_VIDEOSEGMENT mov es,ax mov ds,ax cld mov word ptr -6[bp],offset L$2 mov word ptr -8[bp],offset L$1 mov ax,word ptr 6[bp] cmp al,3 ja L$7 cmp al,0 je L$7 shl al,1 shl al,1 shl al,1 mov ah,al mov al,3 mov dx,3ceH out dx,ax mov word ptr -6[bp],offset L$5 mov word ptr -8[bp],offset L$3 L$7: mov ah,byte ptr -2[bp] or ah,ah je L$8 mov dx,3c4H mov al,2 out dx,ax mov dx,word ptr cs:MX_BYTESPERLINE mov cx,word ptr 0aH[bp] mov bx,di mov al,byte ptr 8[bp] call word ptr -6[bp] inc di L$8: mov cx,word ptr 0cH[bp] jcxz L$10 mov dx,3c4H mov ax,0f02H out dx,ax mov al,byte ptr 8[bp] mov bx,di mov dx,word ptr 0aH[bp] push di L$9: mov di,bx call word ptr -8[bp] mov cx,word ptr 0cH[bp] add bx,word ptr cs:MX_BYTESPERLINE dec dx jne L$9 pop di add di,word ptr 0cH[bp] L$10: mov ah,byte ptr -4[bp] or ah,ah je L$11 mov dx,3c4H mov al,2 out dx,ax mov dx,word ptr cs:MX_BYTESPERLINE mov cx,word ptr 0aH[bp] mov bx,di mov al,byte ptr 8[bp] call word ptr -6[bp] L$11: mov dx,3ceH mov ax,3 out dx,ax L$12: xor ax,ax pop di pop es pop si pop ds mov sp,bp pop bp retf 0cH MX_TEXT ENDS END