Question

I have been looking for the clear meaning of memory addresses 461h (Cursor Start) and 460h (Cursor End) in the BIOS Data Area.

But I have just found some references that say that it is the "size" of the cursor. Others say that they refer to scan lines, and the used values also differ broadly (63h and 00h for MCGA; 67h and 00 for 80x25 text mode; or 01h and 00h for instance) but it is still not specific enough, and it seems that it is necessary to adjust those values if the VGA registers are programmed manually for a standard graphics or text mode (more specifically text modes, which actually use a cursor) instead of using INT 10h, so that DOS or the BIOS itself can keep a consistent configuration.

I have seen the first 2 pages of Google results (Ralf Brown, mcamafia.de, Wikipedia, TinyVGA, BIOS Central, etc.) but the information they contain doesn't allow me to describe precisely what those values do, or to which configuration they correspond in the VGA registers, so I would be programming those values blindly.

So what would be the right definition for them?

Was it helpful?

Solution

My understanding:

460h-461h is "Cursor Shape", size=word. The low byte holds the ending scan line number, while the upper byte at address 40:61h holds the starting scan line. With video mode 3 the character cell is normally 16 scan lines high on a VGA. To turn off the cursor, set the ending scan line number above the starting scan line number.

Sample Cursor Shapes:

two line cursor at bottom:    0607h
lower half cursor:            0307h
upper half or quarter cursor: 0003h
full box cursor               0007h
blank cursor                  0100h
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top