home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 388_01 / curses / fbios.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-03  |  2.5 KB  |  174 lines

  1. /*
  2.  * fbios.c
  3.  *
  4.  * Stdscr Curses for PC Class Machines.
  5.  *
  6.  * Copyright 1990, 1993 by Anthony Howe.  All rights reserved.  No warranty.
  7.  */
  8.  
  9. #include <fbios.h>
  10.  
  11. #define VIDEO    0x10
  12. #define KBD    0x16
  13.  
  14. static union REGS regs;
  15.  
  16. void
  17. SetVideoMode(mode)
  18. int mode;
  19. {
  20.     regs.h.ah = 0;
  21.     regs.h.al = mode;
  22.     int86(VIDEO, ®s, ®s);
  23. }
  24.  
  25. void
  26. SetCursorShape(start_line, end_line)
  27. int start_line, end_line;
  28. {
  29.     regs.h.ah = 1;
  30.     regs.h.ch = start_line;
  31.     regs.h.cl = end_line;
  32.     int86(VIDEO, ®s, ®s);
  33. }
  34.  
  35. void
  36. SetCursorPos(page, row, col)
  37. int page, row, col;
  38. {
  39.     regs.h.ah = 2;
  40.     regs.h.bh = page;
  41.     regs.h.dh = row;
  42.     regs.h.dl = col;
  43.     int86(VIDEO, ®s, ®s);
  44. }
  45.     
  46. void 
  47. ScrollUp(nlines, attr, row_ul, col_ul, row_br, col_br)
  48. int nlines;
  49. chtype attr;
  50. int row_ul, col_ul, row_br, col_br;
  51. {
  52.     regs.h.ah = 6;
  53.     regs.h.al = nlines;
  54.     regs.h.bh = attr >> 8;
  55.     regs.h.ch = row_ul;
  56.     regs.h.cl = col_ul;
  57.     regs.h.dh = row_br;
  58.     regs.h.dl = col_br;
  59.     int86(VIDEO, ®s, ®s);
  60. }
  61.  
  62. chtype
  63. GetChtype(page)
  64. int page;
  65. {
  66.     regs.h.ah = 8;
  67.     regs.h.bh = page;
  68.     int86(VIDEO, ®s, ®s);
  69.     return ((chtype) regs.x.ax);
  70. }
  71.  
  72. void
  73. PutChtype(page, ch)
  74. int page;
  75. chtype ch;
  76. {
  77.     regs.h.ah = 9;
  78.     regs.x.cx = 1;
  79.     regs.h.bh = page;
  80.     regs.h.al = ch & 0xff;
  81.     regs.h.bl = (ch & 0xff00) >> 8;
  82.     int86(VIDEO, ®s, ®s);
  83. }
  84.  
  85. void
  86. PutChtypeN(page, ch, n)
  87. int page;
  88. chtype ch;
  89. int n;
  90. {
  91.     regs.h.ah = 9;
  92.     regs.x.cx = n;
  93.     regs.h.bh = page;
  94.     regs.h.al = ch & 0xff;
  95.     regs.h.bl = (ch & 0xff00) >> 8;
  96.     int86(VIDEO, ®s, ®s);
  97. }
  98.  
  99. void
  100. PutChar(page, ch)
  101. int page, ch;
  102. {
  103.     regs.h.ah = 10;
  104.     regs.x.cx = 1;
  105.     regs.h.bh = page;
  106.     regs.h.al = ch & 0xff;
  107.     int86(VIDEO, ®s, ®s);
  108. }
  109.  
  110. void
  111. PutCharN(page, ch, n)
  112. int page, ch, n;
  113. {
  114.     regs.h.ah = 10;
  115.     regs.x.cx = n;
  116.     regs.h.bh = page;
  117.     regs.h.al = ch & 0xff;
  118.     int86(VIDEO, ®s, ®s);
  119. }
  120.  
  121. void
  122. AddChar(page, ch)
  123. int page;
  124. int ch;
  125. {
  126.     regs.h.ah = 14;
  127.     regs.h.bh = page;
  128.     regs.h.al = ch;
  129.     int86(VIDEO, ®s, ®s);
  130. }
  131.  
  132. unsigned short
  133. GetCursorShape(page)
  134. int page;
  135. {
  136.     regs.h.ah = 3;
  137.     regs.h.bh = page;
  138.     int86(VIDEO, ®s, ®s);
  139.     return (regs.x.cx);
  140. }
  141.  
  142. int
  143. GetDisplayPage()
  144. {
  145.     regs.h.ah = 15;
  146.     int86(VIDEO, ®s, ®s);
  147.     return (regs.h.bh);
  148. }
  149.     
  150. int
  151. GetVideoMode()
  152. {
  153.     regs.h.ah = 15;
  154.     int86(VIDEO, ®s, ®s);
  155.     return (regs.h.al);
  156. }
  157.  
  158. int
  159. GetScreenWidth()
  160. {
  161.     regs.h.ah = 15;
  162.     int86(VIDEO, ®s, ®s);
  163.     return (regs.h.ah);
  164. }
  165.     
  166. int
  167. GetKey()
  168. {
  169.     regs.h.ah = 0;
  170.     int86(KBD, ®s, ®s);
  171.     return (regs.x.ax);
  172. }
  173.  
  174.