home *** CD-ROM | disk | FTP | other *** search
/ BURKS 2 / BURKS_AUG97.ISO / BURKS / SOFTWARE / LIBS / PMC101.ZIP / LIBSRC.ZIP / FILECOPY.C (.txt) < prev    next >
C/C++ Source or Header  |  1994-06-30  |  855b  |  48 lines

  1. #include "pmc.h"
  2.  
  3. long __pascal filecopy (WORD dst, WORD src, long size)
  4. {
  5.   REGSTRUCT rs;
  6.   WORD len;
  7.   long sizeout = 0;
  8.   int r;
  9.  
  10.   rs.w.FLAGS = rs.d.SSSP = 0;
  11.   rs.w.DS = (DWORD)_lowbufptr + database >> 4;
  12.   rs.w.DX = (DWORD)_lowbufptr + database & 15;
  13.  
  14.   while (size)
  15.   {
  16.     rs.w.CX = len = min (size, _lowbuflen);
  17.     rs.w.BX = src;
  18.     rs.b.AH = 0x3f;
  19.  
  20.     if ((r = xlt_simrmint (0x21, &rs, 0)) < 0)
  21.       return r;
  22.  
  23.     if (rs.w.FLAGS & fCF)
  24.       return rs.d.EAX | 0xffff0000;
  25.  
  26.     if (!(rs.w.CX = rs.w.AX))
  27.       break;
  28.  
  29.     rs.w.BX = dst;
  30.     rs.b.AH = 0x40;
  31.  
  32.     if ((r = xlt_simrmint (0x21, &rs, 0)) < 0)
  33.       return r;
  34.  
  35.     if (rs.w.FLAGS & fCF)
  36.       return rs.d.EAX | 0xffff0000;
  37.  
  38.     sizeout += rs.w.AX;
  39.     size -= rs.w.AX;
  40.  
  41.     if (rs.w.AX != len)
  42.       break;
  43.   }
  44.  
  45.   return sizeout;
  46. }
  47.  
  48.