home *** CD-ROM | disk | FTP | other *** search
- /* set_cur(row, column) -- position cursor on screen
-
- Copyright (c) 1983 by JMI Software Consultants, Inc.
- */
-
- #include "bio.h"
- #include "host.h"
-
- /* This function requires DOS 2.0 and DEVICE=ANSI.SYS
- */
- VOID set_cur(row, column)
- COUNT row, column;
- {
- IMPORT BF **bfiles;
- INTERN TEXT s[10] = {"\033[##;##H$"};
-
- if (column == -1)
- {
- column = row % 80;
- row = row / 80 % 26;
- }
- ++row;
- ++column;
- s[2] = (row % 26) / 10 + '0';
- s[3] = (row % 26) % 10 + '0';
- s[5] = (column % 80) / 10 + '0';
- s[6] = column % 10 + '0';
- bdos(9, s);
- bfiles[1]->bf_col = column + 1;
- }
-
- /* This function requires BIOS interrupt 0x10 VIDEO_IO
- */
-
- /*
- VOID set_cur(row, column)
- COUNT row, column;
- {
- IMPORT BF **bfiles;
- INTERN REGVAL move = {0x0200, 0x0000, 0x0000, 0x0000, 0x0000};
- REGVAL r;
-
- if (column == -1)
- {
- column = row % 80;
- row = row / 80 % 26;
- }
- move.dx = ((row % 26) << 8) + column % 80;
- int86(0x10, &move, &r);
- bfiles[1]->bf_col = column + 1;
- }
- */
- /* bas_mov - routine to output the escape sequences necessary to control
- the cursor when special control characters are output to
- the screen (eg. ascii 31 - move down).
- Note that a call to bwr_flush must be made before this routine
- can be called.
- */
-
- VOID bas_mov(c)
- XCHAR c;
- {
- INTERN TEXT cursup[] = "\033[1A";
- INTERN TEXT cursdown[] = "\033[1B";
- INTERN TEXT cursright[] = "\033[1C";
- INTERN TEXT cursleft[] = "\033[1D";
- INTERN TEXT curshome[] = "\033[0;0H";
- INTERN TEXT cursclear[] = "\033[2J";
-
- if (c == '\034')
- da_write(sf_OUT, cursright, 4);
- else if (c == '\035')
- da_write(sf_OUT, cursleft, 4);
- else if (c == '\036')
- da_write(sf_OUT, cursup, 4);
- else if (c == '\037')
- da_write(sf_OUT, cursdown, 4);
- else if (c == '\013')
- da_write(sf_OUT, curshome, 6);
- else if (c == '\014')
- {
- da_write(sf_OUT, cursclear, 4);
- da_write(sf_OUT, curshome, 6);
- }
- else
- xerror(1, "bas_mov");
- }