69

The cursor used on my 486 (and Pentium 3) in MS-DOS 6/7 has a thick underlined character. I cannot find that in code page 437. The underscore character is the closest to it, but is thinner.

Where does this cursor character come from? Or did I miss something?

0

3 Answers 3

124

The text-mode cursor isn’t a character, it’s managed separately by the video output circuitry (which is how it keeps blinking even when your computer is busy or locked up). It can be enabled or disabled, and its size can be determined — at least, its start and end scanlines, which determine its height; the cursor always occupies the full width of a character cell. That way you can have the simple cursor beneath your text, the half-cell cursor typically used for insert mode, a full-cell cursor, etc. Even a cursor above your text if you want! On EGA, and many VGA clones, you can also have a split cursor: if the end line is above the start line, you end up with a two-part cursor with lines at the top (down to the end line) and at the bottom (from the start line).

The OSDev Wiki has more information on the topic, including pointers to the BIOS functions you can use, and code to directly manipulate the VGA registers (the cursor is also available on MDA, Hercules, CGA and EGA obviously). FreeVGA is also relevant (amongst many other resources on the topic).

Emulating IBM PC Cursors illustrates the various effects and provides an in-browser emulator running PC Magazine’s CTYPE so you can try different settings directly. (Thanks to Michael Kjörling for the suggestion!)

2
  • In a pleasing echo of that, some 90's graphics accelerators (Cirrus Logic and others) supported "hardware 64x64 cursor" for Windows acceleration.
    – Jonathan
    Aug 26, 2020 at 9:27
  • @Jonathan indeed, and with the same result — it was possible for Windows to be locked up, but for the mouse cursor to still move in response to mouse movements. Hardware mouse cursors are still supported nowadays; the main indicator that a hardware mouse cursor (or generic variant thereof) is in use is that it stays bright when the rest of the screen is dimmed, during fade-to-black transitions (e.g. when the screen saver kicks in on some platforms). Aug 26, 2020 at 10:02
54

The cursor on the CGA, MDA, EGA, and VGA cards was a hardware sprite generated on the earlier cards by the 6845 video controller, and on later cards by a chip that emulates the 6845. That chip has an address counter that is used to fetch data from memory, as well as a line counter and a cursor-state latch. It also has a programmable registers for cursor address, cursor start line, cursor end line, and blink pattern.

Every time the display controller advances to line N of a character row, it compares N against the cursor-start and cursor-end registers. If it matches the former, it sets the cursor-state latch; if it matches the latter, it clears the latch. At all other times, the latch keeps its state. If the cursor is programmed to be active in rows 10-13 of each character, this signal will be active while drawing rows 10-13 of every character line.

Any time this latch is set, the value in an internal 5-bit frame counter matches the requirements of the blink pattern, and the display is fetching data from the programmed cursor address, the 6845 chip will output a "cursor" signal. The CGA and MDA will then filter this signal with a redundant (worse than useless) blink circuit. Whenever the filtered signal is high, the CGA or MDA will ignore the bit pattern of the character being displayed and unconditionally display the foreground color. The cursor has no effect upon anything stored in memory, and because of the CGA's redundant blink circuit there's not even any way for software to tell whether it's visible at any moment in time.

0
-3

Its been a very long time since I used MSDOS but on most video cards it flashed, that is it put down a _for several refresh cycles of the video page, and then a dim rectangle ▒ for several refresh cycles. so it looked like the character block was flashing on and off. This could actually be changed. As I recall you had to put lines in config.sys or Autoexec.bat.

I remember one mod people did was change to a little smiley face rather than the rectangle, like this ☺ but a square rather than round smiley.

You could use any character in the ascii dingbats see image(Note square smiley is second character.) and link bellow for wikipeidia.

enter image description here

https://en.wikipedia.org/wiki/Code_page_437

Note it was latter MSDOS versions(I think 3.0+.) that added ascii dingbats.

9
  • 6
    Welcome to Retrocomputing! What you describe might be possible with a TSR (but it would be very hard to get right), it certainly wasn’t the default behaviour; there was no standard way of using ▒ or a smiley as the cursor character. Feb 3, 2018 at 9:47
  • 2
    What you call ASCII dingbats have been in place since the original IBM-DOS 1.0. The character bitmaps were stored in ROM, so they were not even a DOS thing. It wasn't until maybe DOS 3.3 that DOS became "aware" of character bitmaps and added support to change them, to provide better international language support (look up codepages and the CHCP command). Maybe that's what you were thinking of? I don't know whether the original IBM PC 5150's MDA and/or CGA hardware supported changing the character bitmaps, or whether that required newer/different hardware. Feb 4, 2018 at 1:35
  • Stephen Kitt What I describe was the cursor on every video card I had while running MSDOS starting from a 8088 to a 80485 from a hercules graphics card, to a CGA, to an EGA, to a VGA, and on an early S3 graphics coprossesor, after that MSDOS was gone and it was on to Win95. The only card that only had a blinking _ as the cursor was a IBM monochrome card they were text only. I started on CPM with a blinking _ from on board graphics with Z80. CPM 86 on a PC was a _for several refresh cycles of the video page, and then a dim rectangle ▒ looking like it blinked too.
    – DEH
    Feb 4, 2018 at 5:16
  • Now the BIOS prompt was just the _ flashing on all the cards as I remember.
    – DEH
    Feb 4, 2018 at 5:17
  • Anyway it was a very long time ago, so who knows I mite be brain dead.
    – DEH
    Feb 4, 2018 at 5:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .