home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ENTERPRS / CPM / UTILS / S / SGTOOL12.ARC / LIBC128.ARC / VDCCPY.C < prev    next >
C/C++ Source or Header  |  1993-08-10  |  845b  |  38 lines

  1. /*
  2. SG C Tools 1.2
  3.  
  4. (C) 1993 Steve Goldsmith
  5. All Rights Reserved
  6.  
  7. Compiled with HI-TECH C 3.09 (CP/M-80).
  8. */
  9.  
  10. #include <hitech.h>
  11. #include <vdc.h>
  12.  
  13. /* fast copy using block copy */
  14.  
  15. void copymemvdc(ushort SMem, ushort DMem, ushort CopyLen)
  16. {
  17.   uchar Blocks, Remain;
  18.   register uchar I;
  19.  
  20.   outvdc(vdcUpdAddrHi,(uchar) (DMem >> 8));
  21.   outvdc(vdcUpdAddrLo,(uchar) DMem);
  22.   outvdc(vdcVtSmScroll,(invdc(vdcVtSmScroll) | 0x80));
  23.   outvdc(vdcBlkCpySrcAddrHi,(uchar) (SMem >> 8));
  24.   outvdc(vdcBlkCpySrcAddrLo,(uchar) SMem);
  25.   if (CopyLen > vdcMaxBlock)
  26.   {
  27.     Blocks = CopyLen/vdcMaxBlock;
  28.     Remain = CopyLen%vdcMaxBlock;
  29.     for(I = 1; I <= Blocks; I++)
  30.       outvdc(vdcWordCnt,vdcMaxBlock);
  31.     if (Remain > 0)
  32.       outvdc(vdcWordCnt,Remain);
  33.   }
  34.   else
  35.     if (CopyLen > 0)
  36.       outvdc(vdcWordCnt,CopyLen);
  37. }
  38.