#include "pmc.h"
long __pascal filecopy (WORD dst, WORD src, long size)
{
REGSTRUCT rs;
WORD len;
long sizeout = 0;
int r;
rs.w.FLAGS = rs.d.SSSP = 0;
rs.w.DS = (DWORD)_lowbufptr + database >> 4;
rs.w.DX = (DWORD)_lowbufptr + database & 15;
while (size)
{
rs.w.CX = len = min (size, _lowbuflen);
rs.w.BX = src;
rs.b.AH = 0x3f;
if ((r = xlt_simrmint (0x21, &rs, 0)) < 0)
return r;
if (rs.w.FLAGS & fCF)
return rs.d.EAX | 0xffff0000;
if (!(rs.w.CX = rs.w.AX))
break;
rs.w.BX = dst;
rs.b.AH = 0x40;
if ((r = xlt_simrmint (0x21, &rs, 0)) < 0)
return r;
if (rs.w.FLAGS & fCF)
return rs.d.EAX | 0xffff0000;
sizeout += rs.w.AX;
size -= rs.w.AX;
if (rs.w.AX != len)
break;
}
return sizeout;
}