home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l200 / 6.ddi / LIB / SETCUR.C < prev    next >
Encoding:
C/C++ Source or Header  |  1986-09-08  |  2.0 KB  |  88 lines

  1. /*    set_cur(row, column) -- position cursor on screen
  2.  
  3.         Copyright (c) 1983  by  JMI Software Consultants, Inc.
  4.  */
  5.  
  6. #include "bio.h"
  7. #include "host.h"
  8.  
  9. /* This function requires DOS 2.0 and DEVICE=ANSI.SYS
  10.  */
  11. VOID set_cur(row, column)
  12.     COUNT row, column;
  13.     {
  14.     IMPORT BF **bfiles;
  15.     INTERN TEXT s[10] = {"\033[##;##H$"};
  16.  
  17.     if (column == -1)
  18.         {
  19.         column = row % 80;
  20.         row = row / 80 % 26;
  21.         }
  22.     ++row;
  23.     ++column;
  24.     s[2] = (row % 26) / 10 + '0';
  25.     s[3] = (row % 26) % 10 + '0';
  26.     s[5] = (column % 80) / 10 + '0';
  27.     s[6] = column % 10 + '0';
  28.     bdos(9, s);
  29.     bfiles[1]->bf_col = column + 1;
  30.     }
  31.  
  32. /* This function requires BIOS interrupt 0x10 VIDEO_IO
  33.  */
  34.  
  35. /*
  36. VOID set_cur(row, column)
  37.     COUNT row, column;
  38.     {
  39.     IMPORT BF **bfiles;
  40.     INTERN REGVAL move   = {0x0200, 0x0000, 0x0000, 0x0000, 0x0000};
  41.     REGVAL r;
  42.  
  43.     if (column == -1)
  44.         {
  45.         column = row % 80;
  46.         row = row / 80 % 26;
  47.         }
  48.     move.dx = ((row % 26) << 8) + column % 80;
  49.     int86(0x10, &move, &r);
  50.     bfiles[1]->bf_col = column + 1;
  51.     }
  52. */
  53. /* bas_mov - routine to output the escape sequences necessary to control
  54.              the cursor when special control characters are output to
  55.              the screen (eg. ascii 31 - move down).
  56.              Note that a call to bwr_flush must be made before this routine
  57.              can be called.
  58. */
  59.  
  60. VOID bas_mov(c)
  61.     XCHAR c;
  62.     {
  63.     INTERN TEXT cursup[]  = "\033[1A";
  64.     INTERN TEXT cursdown[]  = "\033[1B";
  65.     INTERN TEXT cursright[]  = "\033[1C";
  66.     INTERN TEXT cursleft[] = "\033[1D";
  67.     INTERN TEXT curshome[] = "\033[0;0H";
  68.     INTERN TEXT cursclear[] = "\033[2J";
  69.  
  70.     if (c == '\034')
  71.         da_write(sf_OUT, cursright, 4);
  72.     else if (c == '\035')
  73.         da_write(sf_OUT, cursleft, 4);
  74.     else if (c == '\036')
  75.         da_write(sf_OUT, cursup, 4);
  76.     else if (c == '\037')
  77.         da_write(sf_OUT, cursdown, 4);
  78.     else if (c == '\013')
  79.         da_write(sf_OUT, curshome, 6);
  80.     else if (c == '\014')
  81.         {
  82.         da_write(sf_OUT, cursclear, 4);
  83.         da_write(sf_OUT, curshome, 6);
  84.         }
  85.     else
  86.         xerror(1, "bas_mov");
  87.     }
  88.