home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C128CPM / SGTOOL16.ARC / LIBC128.ARC / VDCBMSTR.C < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-27  |  1.4 KB  |  52 lines

  1. /*
  2. SG C Tools 1.6
  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.   register uchar I;
  25.   uchar  TextLen;
  26.   uchar  CharBuf[vdcMaxCharBytes];
  27.   ushort DispOfsX, DispOfsY, CharSet, CharSetOfs;
  28.  
  29.   TextLen = strlen(TextStr);
  30.   if(TextLen > 0) /* don't print null strings */
  31.   {
  32.     DispOfsX = ((Y*vdcScrHorz)*vdcCharVert)+vdcDispMem+X;
  33.     CharSet = (vdcCharsPerSet*vdcCharBytes)+vdcCharMem; /* use alt set */
  34.     fillattrvdc(X,Y,TextLen,Attr);
  35.     for(I = 0; TextStr[I]; I++, DispOfsX++)
  36.     {
  37.       CharSetOfs = vdcCharBytes*TextStr[I]+CharSet;
  38.       outvdc(vdcUpdAddrHi,(uchar) (CharSetOfs >> 8));
  39.       outvdc(vdcUpdAddrLo,(uchar) CharSetOfs);
  40.       for(Y = 0; Y < vdcCharVert; Y++)
  41.         CharBuf[Y] = invdc(vdcCPUData);
  42.       DispOfsY = DispOfsX;
  43.       for(Y = 0; Y < vdcCharVert; Y++, DispOfsY += vdcScrHorz)
  44.       {
  45.         outvdc(vdcUpdAddrHi,(uchar) (DispOfsY >> 8));
  46.         outvdc(vdcUpdAddrLo,(uchar) DispOfsY);
  47.         outvdc(vdcCPUData,CharBuf[Y]);
  48.       }
  49.     }
  50.   }
  51. }
  52.