[comp.sys.ibm.pc] Stop cursor blinking in MS-DOS

1dharvey@teknowledge-vaxc.ARPA (Doug Harvey) (04/19/88)

Does anyone know how to stop the cursor from blinking in DOS?
It doesn't annoy me enough to load a TSR program, but if there 
someone can provide me with locations I can patch using DEBUG, I
would appreciate it.  I'm using DOS versions 3.1 and 3.3.

While I'm at it, how about a way to assign new functions to some
of the function keys when at the DOS command level?  I'm happy
with F1, F3, and F6, but how about the others? 

Also, I have been using the "C" shell (/bin/csh) under UNIX, and
have quickly grown used to the file completion (set filec) feature.
Anyone know of something similar for DOS?  If not, I may attempt to
write my own...

Thanks

Doug

davidsen@steinmetz.ge.com (William E. Davidsen Jr) (04/21/88)

In article <22066@teknowledge-vaxc.ARPA> 1dharvey@teknowledge-vaxc.ARPA (Doug Harvey) writes:
| Does anyone know how to stop the cursor from blinking in DOS?

  As far as I can tell it's a hardware feature. There are programs which
give a non-blinking cursor by turning off the hardware cursor (set start
and stop lines to 15 as I recall) and doing it in software. If you
really want to stop it I think you can cut a trace, at least on the mono
and CGA boards.
-- 
	bill davidsen		(wedu@ge-crd.arpa)
  {uunet | philabs | seismo}!steinmetz!crdos1!davidsen
"Stupidity, like virtue, is its own reward" -me

parora@gpu.utcs.toronto.edu (Pavneet Arora) (04/28/88)

In article <22066@teknowledge-vaxc.ARPA>, 1dharvey@teknowledge-vaxc.ARPA (Doug Harvey) writes:
> Does anyone know how to stop the cursor from blinking in DOS?
> It doesn't annoy me enough to load a TSR program, but if there 
> someone can provide me with locations I can patch using DEBUG, I
> would appreciate it.  I'm using DOS versions 3.1 and 3.3.
> 

As far as I understand, the cursor takes on the attribute of the character in
video memory on top of which it is currently sitting, i.e. if you write your
own CLS routine which fills all the attribute bytes with 20h in whatever colour
you wish without setting the blink bit you should get a non-blinking cursor.

This is for colour systems.  I am not sure what the scoop is for mono.

Hope this helps.

pavneet
parora@utgpu

hwfe@ur-tut (Harlan Feinstein) (05/03/88)

   In article <22066@teknowledge-vaxc.ARPA>, 1dharvey@teknowledge-vaxc.ARPA
   (Doug Harvey) writes:
   Does anyone know how to stop the cursor from blinking in DOS?
   It doesn't annoy me enough to load a TSR program, but if there 
   someone can provide me with locations I can patch using DEBUG, I
   would appreciate it.  I'm using DOS versions 3.1 and 3.3.

      In article <1988Apr28.070623.1916@gpu.utcs.toronto.edu> 
      parora@gpu.utcs.toronto.edu (Pavneet Arora) writes:
      As far as I understand, the cursor takes on the attribute of the 
      character in video memory on top of which it is currently sitting, i.e.
      if you write your own CLS routine which fills all the attribute bytes
      with 20h in whatever colour you wish without setting the blank bit you
      should get a non-blinking cursor.

      This is for colour systems.  I am not sure what the scoop is for mono.

This is not true; the blinking of the cursor does not come from the background
color or blinking attributes.  It is true that the cursor takes its color from
the background, but as to the blinking, no.  As far as _I_ know, there's no
way other than turning it off and writing software to do your own cursor.

>pavneet
>parora@utgpu

Harlan
hwfe@tut.cc.rochester.edu

regoli@silver.bacs.indiana.edu (michael regoli) (05/04/88)

In article <1944@ur-tut.UUCP> hwfe@tut.cc.rochester.edu.UUCP (Harlan Feinstein) writes:
-
-   In article <22066@teknowledge-vaxc.ARPA>, 1dharvey@teknowledge-vaxc.ARPA
-   (Doug Harvey) writes:
-   Does anyone know how to stop the cursor from blinking in DOS?

i've posted UNBLINK.ARC to comp.binaries.ibm.pc which contains
a program to turn the blinking cursor to a solid block.

-- 
michael regoli
...ihnp4!iuvax!silver!regoli
regoli@silver.bacs.indiana.edu
regoli@iubacs.BITNET

eric@hpcvlx.HP.COM (Eric Gullerud) (05/05/88)

Here is a program that will turn the cursor on or off.  It uses
the BIOS Video call (INT 10H).  This program is actually a modified
version of an example program in the MSC 5.1 Reference Manual for the
"int86" library routine (on page 366).  The actual code to alter
the cursor is only 4 lines.

Hope this helps...
				Eric Gullerud	eric@hpcvlx.HP.COM

------------------------------ cut here ---------------------------------

/*
 *  blinker.c  --  turn the cursor on or off
 */

#define VIDEO_IO  0x10
#define SET_CRSR  1

#include <dos.h>
#include <stdio.h>

union REGS regs;

/* top and bottom values for cursors on various & sundry displays: */
#define MONO_TOP	12
#define MONO_BOT	13
#define COLOR_TOP	6
#define COLOR_BOT	7
#define EGA43_TOP	4
#define EGA43_BOT	5

main(int argc, char **argv) {
	int  top, bottom, mode;

	/* check for correct command usage */
	if (argc != 2) {
		printf("Usage: %s <on|off|slow|fast>\n",
			argv[0]);
		exit(1);
	}

	/* set top and bottom for cursor;  could be on command line too */
	top	= COLOR_TOP;	/* I have an EGA card; this is the mode */
	bottom	= COLOR_BOT;	/* ... that it boots up in */

	/* get cursor mode from command argument */
	if (!strcmp(argv[1], "on")) mode = 0;	/* default for EGA */
	else if (!strcmp(argv[1], "off")) mode = 1;
	else if (!strcmp(argv[1], "slow")) mode = 2;
	else if (!strcmp(argv[1], "fast")) mode = 3;
	else {
		printf("%s: illegal cursor mode (%s)\n", argv[0], argv[1]);
		exit(1);
	}

	/* Set up for cursor change call */
	regs.h.ah = SET_CRSR;
	regs.h.ch = top + (mode << 4);
	regs.h.cl = bottom;

	/* Execute BIOS interrupt call */
	int86(VIDEO_IO, &regs, &regs);
}