Old Interrupts
Re:Old Interrupts
Pype: that's what I thought, thanks.
Kemp: yeah, that sounds like a very daunting task. I took a look around the BeOS drivers and they seem to have some major aries covered. No Intel or SiS or S3, though. Even though that information is mostly freely available. Go figure.
(some general comments)
Isn't V86 mode no longer available in long-mode (ie, 64-bit)? If so "we" are going to have additional problems in the near future.
I can't believe all these graphics card manufacturers are this tight lipped about there stuff. You would think they would like to have it running on as much different systems as possible. It's not like exposing an API (especially the 2D + resolution stuff) is gonna help your competitors, who no doubt already have your driver source through some leak in your company or reverse engineering.
Kemp's idea would be nice to see executed, but I won't hold my breath I am a bit suprised the BeOS / Unix etc. of these world haven't setup such a document / database yet.
Oh well....
Kemp: yeah, that sounds like a very daunting task. I took a look around the BeOS drivers and they seem to have some major aries covered. No Intel or SiS or S3, though. Even though that information is mostly freely available. Go figure.
(some general comments)
Isn't V86 mode no longer available in long-mode (ie, 64-bit)? If so "we" are going to have additional problems in the near future.
I can't believe all these graphics card manufacturers are this tight lipped about there stuff. You would think they would like to have it running on as much different systems as possible. It's not like exposing an API (especially the 2D + resolution stuff) is gonna help your competitors, who no doubt already have your driver source through some leak in your company or reverse engineering.
Kemp's idea would be nice to see executed, but I won't hold my breath I am a bit suprised the BeOS / Unix etc. of these world haven't setup such a document / database yet.
Oh well....
Re:Old Interrupts
If somebody's gonna set up such a document, got a test driver for bochs-with-vbe-without-bios set up somewhere on my laptop. Tried it with resolution switching with just ports and that works. Didn't try writing to it though (only realmode stuff, no access to 0xE0000000), but that should work. Dunno how to detect bochs vbe though.
Re:Old Interrupts
If you just want to know if VESA is there, this is some code that's working for me:
That code assumes 16-bit real-mode and 256 bytes available at 2000h:0000h
From some looking around it also seems there is a signature 'VBE2', I haven't encountered it yet though. First need to look up some info on that.
VesaModesSegment and VesaModesOffset point to a table containing 16-bit Vesa mode numbers, terminated by a 0FFFFh. This table *can* reside *inside* your 256 byte structure. So if you use int 10h function 4F01h to query each mode (which requires a 256 byte buffer again) do not use the same one. You may still need it
Code: Select all
VESA_SIGNATURE equ 'ASEV' ; VESA reversed
....
; vesa info needs a 256 byte buffer, use some memory above this code
mov ax, 2000h
mov es, ax
xor di, di
mov ax, 4F00h
int 10h
cmp ax, 4Fh
jne NoVesa
cmp ES:[VesaInfo.VesaSig], VESA_SIGNATURE
jne NoVesa
....
VesaInfo struc
VesaSig dd ?
VesaVersion dw ?
VesaVendorOffset dw ?
VesaVendorSegment dw ?
VesaCapabilities dd ?
VesaModesOffset dw ?
VesaModesSegment dw ?
VesaMemory dw ? ; in 64K blocks
VesaInfo ends
From some looking around it also seems there is a signature 'VBE2', I haven't encountered it yet though. First need to look up some info on that.
VesaModesSegment and VesaModesOffset point to a table containing 16-bit Vesa mode numbers, terminated by a 0FFFFh. This table *can* reside *inside* your 256 byte structure. So if you use int 10h function 4F01h to query each mode (which requires a 256 byte buffer again) do not use the same one. You may still need it
Re:Old Interrupts
Currently working my way through ATI's extended registers (for the older cards), there is a hell of a lot of them, lol ;D What I'm basically going to try to do is keep all the info from different sources seperate for now and eventually combine any that came with the same license. That way if you only want to know stuff that came from GPL'd code/docs you could just grab that, though I don't think there'll be too much trouble with licensing as I'll essentially be doing clean-room reverse engineering (ie, I make a list of what the seperate registers do, along with possibly some pseudo-code for various things and whoever uses them has to come up with their own implementation).
Of course, I'm not an expert as regards licensing, so anyone who knows better should probably correct me
Of course, I'm not an expert as regards licensing, so anyone who knows better should probably correct me
Re:Old Interrupts
no, as far as i know, intel has never even stated a market share number (that number is quoted from anandtech)
yes, anyone who plays alot of games, will prefer either ATI or nVidia -- but most people don't play any [graphically intense] games (this doesn't include simple card games to pass the time, of course)
and even if you do play some, intels newer chips are quite capable of playing even the most demanding games (though you will prob want to limit resolution to 800x600, and only use medium quality settings)
the only reason to purchase a add-on video card, is if you are a hard-core gamer (or you have specific needs -- such as multiple monitors)
that number is found by examining all the major computer retailers, and finding what cards are in the computers they sell -- most people wouldn't know how to add a video card (and many -- if not most -- pre-built computers with integrated video, cannot be upgraded, because they don't even have an AGP (or PCIe x16) slot to put a card into)
now i have a separate card (Gforce-4mx) and my brother (6800GS) and my parents (7500-AIW)
but if you notice, my brother is a hard-core gamer, mine is a P-III -- which predates good integrated video, and my parents is a video capture card (and a very old one at that)
this is obviously not the normal situation (esp. since all three are self-built)
there are many people who do use ATI or nVidia cards, but most do not -- integrated video saves you $100+ over a add-in card, and most people have no use for a faster card (esp. since intels newer chips do so well)
yes, anyone who plays alot of games, will prefer either ATI or nVidia -- but most people don't play any [graphically intense] games (this doesn't include simple card games to pass the time, of course)
and even if you do play some, intels newer chips are quite capable of playing even the most demanding games (though you will prob want to limit resolution to 800x600, and only use medium quality settings)
the only reason to purchase a add-on video card, is if you are a hard-core gamer (or you have specific needs -- such as multiple monitors)
that number is found by examining all the major computer retailers, and finding what cards are in the computers they sell -- most people wouldn't know how to add a video card (and many -- if not most -- pre-built computers with integrated video, cannot be upgraded, because they don't even have an AGP (or PCIe x16) slot to put a card into)
now i have a separate card (Gforce-4mx) and my brother (6800GS) and my parents (7500-AIW)
but if you notice, my brother is a hard-core gamer, mine is a P-III -- which predates good integrated video, and my parents is a video capture card (and a very old one at that)
this is obviously not the normal situation (esp. since all three are self-built)
there are many people who do use ATI or nVidia cards, but most do not -- integrated video saves you $100+ over a add-in card, and most people have no use for a faster card (esp. since intels newer chips do so well)
Re:Old Interrupts
I hope I remember that advice about keeping the VBE info block intact. That could come in very handy as I'm sure I've implemented that wrong. I also suggest you read vbe3.pdf at least 2 or 3 times for the interesting stuff with the higher versions.Rob wrote: VesaModesSegment and VesaModesOffset point to a table containing 16-bit Vesa mode numbers, terminated by a 0FFFFh. This table *can* reside *inside* your 256 byte structure. So if you use int 10h function 4F01h to query each mode (which requires a 256 byte buffer again) do not use the same one. You may still need it
Interestingly enough I have read that at least some S3 cards have a secondary modelist past the primary one. I have verified this with my own PCI S3 card with 1MB RAM; the primary list went up to 1600x1200 but the secondary list had 512x384 and 1152x864 and other "non-standard" ones. Of course most of the listed modes could not be set because there was insufficient frame buffer memory on the card but the mode info blocks did state this too. Also I found that WinXP could use the 1152x864 mode if I selected it from the full mode list it has when you click "Advanced..." somewhere.
Re:Old Interrupts
blipzor: yeah, I found that out during testing under I think QEMU. Nice little suprise that was.
I also saw there where some mode flags to tell if hardware supported a given mode. Was that set or not with those modes the card could not support due to memory issues?
I also saw there where some mode flags to tell if hardware supported a given mode. Was that set or not with those modes the card could not support due to memory issues?
Re:Old Interrupts
Was that set or not with those modes the card could not support due to memory issues?
the mode info blocks did state this too
Re:Old Interrupts
No good for me, I don't use IntelJAAman wrote:and even if you do play some, intels newer chips are quite capable of playing even the most demanding games (though you will prob want to limit resolution to 800x600, and only use medium quality settings)