Page 1 of 1

BIOS call from NTLDR: Int 10h / AX=1202h / BX=0301h

Posted: Thu Nov 29, 2012 8:28 pm
by atfel
I'm looking through NTLDR, and I ran into a BIOS call I don't understand. This is some of the first code in NTLDR.
It calls int 10h with ax=1202h and bx=0301h.

Here is similar code from Microsoft's Singularity project. The interrupt I don't understand is in the function BlInitializeVideo.
https://singularity.svn.codeplex.com/sv ... ntry16.asm
From the comments, it looks like this is meant to be a call with BL=10h instead of BL=01h, which it is actually called with.

I stepped through the interrupt in Bochs, and found that in that environment, it does absolutely nothing. I examined the VBIOS of vmware to find that the int 10h handler looked similar to Bochs', and also seemed to ignore a call with these parameters.

Also, in my NTLDR, there also is a call to int 10h / AX=2000h / BX=0. While in the singularity source code, they call it with AX=0200h, which actually corresponds to a BIOS routine.

Does anyone know if these are just typos, or are they for some obscure environment? Thanks in advance.

Re: BIOS call from NTLDR: Int 10h / AX=1202h / BX=0301h

Posted: Thu Nov 29, 2012 9:14 pm
by thepowersgang
From Ralph Brown's Interrupt List - http://www.ctyme.com/intr/rb-0160.htm
Int 10/AH=12h: BIOS Window Extension v1.1 - GET BLANKING ATTRIBUTE

Re: BIOS call from NTLDR: Int 10h / AX=1202h / BX=0301h

Posted: Thu Nov 29, 2012 11:34 pm
by Kazinsal
thepowersgang wrote:From Ralph Brown's Interrupt List - http://www.ctyme.com/intr/rb-0160.htm
Int 10/AH=12h: BIOS Window Extension v1.1 - GET BLANKING ATTRIBUTE
Odd. BIOS Window Extension is a TSR, which wouldn't actually be useful at all in the environment NTLDR exists in.

Closest one that works (and most likely the actual one you want): http://www.ctyme.com/intr/rb-0167.htm

Re: BIOS call from NTLDR: Int 10h / AX=1202h / BX=0301h

Posted: Fri Nov 30, 2012 5:26 pm
by atfel
Blacklight wrote: Odd. BIOS Window Extension is a TSR, which wouldn't actually be useful at all in the environment NTLDR exists in.

Closest one that works (and most likely the actual one you want): http://www.ctyme.com/intr/rb-0167.htm
Yeah, there's no TSRs. This is literally the first interrupt NTLDR calls (at least in this copy of XP I'm looking at), so I thought people would have seen this before. I thought maybe there was something really subtle that I might be missing. But now, I'm thinking that they really did mean to call it with BL=30h, but made a typo, and just didn't notice/care because it doesn't crash anything.