Sved's menu displays a black full-height cursor in VirtualBox
mateuszviste opened this issue · comments
In VirtualBox the cursor is not hidden when the file menu is open. Instead, the cursor becomes full-height (ie. a big, black, blinking rectangle). Not sure whether this is a VB glitch or if Sved's hiding-cursor routine could be improved, but as it is it looks ugly and very confusing.
The cursor-hiding routine used by Sved is as simple as this:
_asm {
mov ah, 1
mov cx, 0x0F0E
int 0x10
}
TechHelp implies that my method is good only for "later" BIOSes and suggests to set cx to 0x2020 instead.
RBIL says:
On some adapters, setting the end line greater than the number of lines in the font will result in the cursor extending to the top of the next character cell on the right
Dunno how this relates to the 0x2020 suggestion.
RBIL also points out that:
BUG: AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL is not equal to the current video mode
...so maybe I should prefix my routine with a dumb mov ah, 0x0f ; int 0x10
just to pull the current video mode into AL.
In VirtualBox the cursor is not hidden when the file menu is open. Instead, the cursor becomes full-height (ie. a big, black, blinking rectangle). Not sure whether this is a VB glitch or if Sved's hiding-cursor routine could be improved, but as it is it looks ugly and very confusing.
This doesn't happen here on my "German" SvarDOS system. The cursor is perfectly hidden.
In VirtualBox the cursor is not hidden when the file menu is open. Instead, the cursor becomes full-height (ie. a big, black, blinking rectangle). Not sure whether this is a VB glitch or if Sved's hiding-cursor routine could be improved, but as it is it looks ugly and very confusing.
This doesn't happen here on my "German" SvarDOS system. The cursor is perfectly hidden.
I do not think that it depends on the language, as I can reproduce the issue with and without the DISPLAY.EXE driver and with and without loading a custom codepage. I suppose this rather depends on the BIOS implementation used in VirtualBox, might change from one version to another. I am using VB version 7.0.12 here.
Anyway, the TechHelp reference does mention this exact issue "wrap-around cursors" on at least some BIOSes, so even if my case is a VB glitch that has been fixed in newer versions it would be still good to change the cursor-hiding method to something more universal.
I'm at VirtualBox 6.1.50 here.
Might be related to problems I had with Insight, dosemu2/dosemu2#1756
We use 2020h in cx
for hiding the cursor: https://hg.pushbx.org/ecm/insight/file/4d7e14ca09a9/src/windows.inc#l1505
We use 2020h in
cx
for hiding the cursor: https://hg.pushbx.org/ecm/insight/file/4d7e14ca09a9/src/windows.inc#l1505
Thanks for this information. So insight authors do as recommended by TechHelp. I think I will do the same, just need to find time to validate it on at least a couple of BIOS combinations.
I like that even seemingly trivial things can get annoyingly twisted. :)
Confirming that CX=2020h during INT 10h/AH=1 works fine. I tested it on VBox, DOSemu2, DOSBox and two 30 years-old PCs I have at hand. Cursor disappears cleanly now, no glitch.