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 / VDCBMSTR.C < prev    next >
C/C++ Source or Header  |  1993-08-10  |  1KB  |  51 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 <string.h>
  11. #include <hitech.h>
  12. #include <vdc.h>
  13.  
  14. extern uchar  vdcScrHorz;
  15. extern ushort vdcDispMem;
  16. extern ushort vdcCharMem;
  17. extern uchar  vdcCharBytes;
  18. extern uchar  vdcCharVert;
  19.  
  20. /* bit map string print given x and y char offset in current page */
  21.  
  22. void printbmvdc(uchar X, uchar Y, uchar Attr, char *TextStr)
  23. {
  24.   uchar  TextLen;
  25.   uchar  CharBuf[vdcMaxCharBytes];
  26.   ushort DispOfsX, DispOfsY, CharSet, CharSetOfs;
  27.  
  28.   TextLen = strlen(TextStr);
  29.   if(TextLen > 0) /* don't print null strings */
  30.   {
  31.     DispOfsX = ((Y*vdcScrHorz)*vdcCharVert)+vdcDispMem+X;
  32.     CharSet = (vdcCharsPerSet*vdcCharBytes)+vdcCharMem; /* use alt set */
  33.     fillattrvdc(X,Y,TextLen,Attr);
  34.     for(X = 0; X < TextLen; X++, DispOfsX++)
  35.     {
  36.       CharSetOfs = vdcCharBytes*TextStr[X]+CharSet;
  37.       outvdc(vdcUpdAddrHi,(uchar) (CharSetOfs >> 8));
  38.       outvdc(vdcUpdAddrLo,(uchar) CharSetOfs);
  39.       for(Y = 0; Y < vdcCharVert; Y++)
  40.         CharBuf[Y] = invdc(vdcCPUData);
  41.       DispOfsY = DispOfsX;
  42.       for(Y = 0; Y < vdcCharVert; Y++, DispOfsY += vdcScrHorz)
  43.       {
  44.         outvdc(vdcUpdAddrHi,(uchar) (DispOfsY >> 8));
  45.         outvdc(vdcUpdAddrLo,(uchar) DispOfsY);
  46.         outvdc(vdcCPUData,CharBuf[Y]);
  47.       }
  48.     }
  49.   }
  50. }
  51.