home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C128CPM / SGTOOL11.ARC / LIBC128.ARC / VDCSCRL.C < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-25  |  1.2 KB  |  54 lines

  1. /*
  2. SG C Tools 1.1
  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. extern uchar  vdcScrHorz;
  14. extern ushort vdcDispMem;
  15. extern ushort vdcAttrMem;
  16.  
  17. /* scroll window up given x1, y1, x2, y2 rectangle in current page */
  18.  
  19. void scrollupvdc(uchar X1, uchar Y1, uchar X2, uchar Y2)
  20. {
  21.   uchar XLen;
  22.   ushort DispOfs, AttrOfs;
  23.  
  24.   XLen = X2-X1+1;
  25.   DispOfs = Y1*vdcScrHorz+vdcDispMem+X1;
  26.   AttrOfs = Y1*vdcScrHorz+vdcAttrMem+X1;
  27.   for(; Y1 <= Y2; Y1++)
  28.   {
  29.     copymemvdc(DispOfs,DispOfs-vdcScrHorz,XLen);
  30.     copymemvdc(AttrOfs,AttrOfs-vdcScrHorz,XLen);
  31.     DispOfs += vdcScrHorz;
  32.     AttrOfs += vdcScrHorz;
  33.   }
  34. }
  35.  
  36. /* scroll window down given x1, y1, x2, y2 rectangle in current page */
  37.  
  38. void scrolldownvdc(uchar X1, uchar Y1, uchar X2, uchar Y2)
  39. {
  40.   uchar XLen;
  41.   ushort DispOfs, AttrOfs;
  42.  
  43.   DispOfs = Y2*vdcScrHorz+vdcDispMem+X1;
  44.   AttrOfs = Y2*vdcScrHorz+vdcAttrMem+X1;
  45.   XLen = X2-X1+1;
  46.   for(Y2++; Y2 > Y1; Y2--)
  47.   {
  48.     copymemvdc(DispOfs,DispOfs+vdcScrHorz,XLen);
  49.     copymemvdc(AttrOfs,AttrOfs+vdcScrHorz,XLen);
  50.     DispOfs -= vdcScrHorz;
  51.     AttrOfs -= vdcScrHorz;
  52.   }
  53. }
  54.