home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 309_01 / hercs.h < prev    next >
Text File  |  1990-03-20  |  3KB  |  177 lines

  1. /* hercs.h */
  2.  
  3. #define CRTC            0x93b0
  4. #define INDEX           4
  5. #define DATA            5
  6. #define MODE            8
  7. #define VIDMEM          0x8000
  8. #define BOLD            0x0f
  9. #define NORMAL          0x07
  10. #define UNDERLINE       0x01
  11. #define REVERSE         0x70
  12. #define BLINKING        0x87
  13.  
  14. #data
  15. char cursx, cursy;
  16.  
  17. #const
  18. char vidtab[16] = {97,80,82,15,25,6,25,25,2,13,12,0,0,0,0,0};
  19.  
  20. #code
  21. initvideo()
  22. {
  23.   int regnumber;
  24.   char *videomem;
  25.   char *videoregs;
  26.  
  27.   videoregs = CRTC;
  28.   videomem = VIDMEM;
  29.  
  30.   home();
  31.   videoregs[MODE] = 0;
  32.   clrscr();
  33.   for( regnumber = 0; regnumber < 16; regnumber = regnumber + 1)
  34.   {
  35.       videoregs[INDEX] = regnumber;
  36.       videoregs[DATA] = vidtab[regnumber];
  37.   }
  38.   videoregs[MODE] = 0x28;
  39. }
  40.  
  41. clrscr()
  42. {
  43.   int videopos;
  44.   char *videomem;
  45.   videomem = VIDMEM;
  46.   for( videopos = 0; videopos < 4000; videopos = videopos+2 )
  47.   {
  48.      videomem[videopos] = 0x20;
  49.      videomem[videopos+1] = NORMAL;
  50.   }
  51. }
  52.  
  53. gotoxy( x, y )
  54. char x, y;
  55. {
  56.   cursx = x;
  57.   cursy = y;
  58.   if( cursx > 79 )
  59.   {
  60.      cursx = 0;
  61.      cursy = cursy + 1;
  62.   }
  63.   if( cursy > 24 )
  64.   {
  65.      cursy = 24;
  66.      scrollup();
  67.   }
  68. }
  69.  
  70. home()
  71. {
  72.    cursx = 0;
  73.    cursy = 0;
  74. }
  75.  
  76. scrollup()
  77. {
  78.    int videoffset;
  79.    char *videomem;
  80.    videomem = VIDMEM;
  81.    for( videoffset = 160; videoffset < 4000; videoffset = videoffset+1)
  82.    {
  83.       videomem[videoffset - 160] = videomem[videoffset];
  84.    }
  85.    for( videoffset = 3840; videoffset < 4000; videoffset = videoffset + 2 )
  86.    {
  87.       videomem[videoffset] = 0x20;
  88.    }
  89. }
  90.  
  91. writecharattr( ch, attrib )
  92. char ch;
  93. char attrib;
  94. {
  95.    int videoffset;
  96.    char *videomem;
  97.    videomem = VIDMEM;
  98.    videoffset = ((cursy * 80) + cursx) * 2;
  99.    if( ch == 0x0d ) cursx = 0;
  100.    else if( ch == 0x0a ) cursy = cursy + 1;
  101.    else
  102.    {
  103.       videomem[videoffset] = ch;
  104.       videomem[videoffset+1] = attrib;
  105.       cursx = cursx + 1;
  106.    }
  107.    gotoxy( cursx, cursy );
  108. }
  109.  
  110. write( string )
  111. char *string;
  112. {
  113.    while( *string )
  114.    {
  115.       writecharattr( *string, NORMAL );
  116.       string++;
  117.    }
  118. }
  119.  
  120. writeattr( string, attr )
  121. char *string, attr;
  122. {
  123.    while( *string )
  124.    {
  125.       writecharattr( *string, attr );
  126.       string++;
  127.    }
  128. }
  129.  
  130. writeln( string )
  131. char *string;
  132. {
  133.    while( *string )
  134.    {
  135.         writecharattr( *string, NORMAL );
  136.         string++;
  137.    }
  138.    writecharattr( 0x0a, NORMAL );
  139.    writecharattr( 0x0d, NORMAL );
  140. }
  141.  
  142. writeint(value)
  143. int value;
  144. {
  145.         int x;
  146.         char sign, str[8];
  147.         str[7] = '\0';
  148.         for( x = 0; x < 7; x++ )  str[x] = ' ';
  149.         if( value < 0 ) {
  150.                 sign = '-';
  151.                 value = (-value);
  152.         }
  153.         else sign = '+';
  154.         x = 6;
  155.         do {
  156.                 str[x--] = (value % 10) + '0';
  157.                 value /= 10;
  158.         } while( value >  0 );
  159.         str[x] = sign;
  160.         write( str );
  161. }
  162.  
  163. writehexbyte(value)
  164. char value;
  165. {
  166.    char temp;
  167.    temp = ((value & 0xf0) >> 4);
  168.    if( temp > 9 ) temp = temp + 7;
  169.    temp = temp + 0x30;
  170.    writecharattr( temp, NORMAL);
  171.    temp = value & 0x0f;
  172.    if( temp > 9 ) temp = temp + 7;
  173.    temp = temp + 0x30;
  174.    writecharattr( temp, NORMAL);
  175. }
  176.  
  177.