Im coding on vesa mode 116h, i knw its properties like banks windows and resolution, my only problem is that i dont knw how to switch banks and dont know what the windows refer to. I also want help on the vesa service that provides the pointer to bank switch code and window code. And also, when i create a program using vesa functions must i pay the vesa committee?

9 Years
Discussion Span
Last Post by Duoas

You need to find yourself a good reference. I recommend Ferraro's Programmer's Guide to the EGA and VGA Cards. It's a bit out of date but all the info you need is there.

To set a bank use something like:

mov ax, 4F05  ; VESA function:
mov bh, 0     ; set bank window
mov bl, wnum  ; window number (0 or 1)
mov dx, bnum  ; bank number (depends on granularity)
int 10h

The bank number is of course dependent on your card's granularity, which you must look up with the appropriate function.

The window is simply the part of video memory accessed when you read or write to the host's video access memory. Many SVGAs have the ability to do "single" or "dual" mode access. That is to say, you can have a different part of video memory addressed when reading and writing. I think that all SGVA cards can do single window access, but I'm not sure about that. (It is another thing that you should set-up in your initialization).

If all this went over your head, you need to get a good reference and read it hard.

Hope this helps.


Oh yeah, you don't have to pay VESA anything to use the functions. Now if you download software from them or attempt to duplicate their code or specification that may be different...

The whole point of VESA was to provide a single standard for interfacing with an SVGA. Before VESA organized, if you wrote a program or game or anything that used SVGA features you had to provide a driver for every type of SVGA card you could imagine your user having. Remember all those old DOS games that came in 2K of files and had 15K of drivers?


Now what about the service giving me a direct pointer to the bank switch code so that i can call it using a far pointer? My book doesnt have that


I honestly don't remember that much about it... and you can google the info just as well as I can.
You have to gather information about video capabilities and single/dual window addressing before doing anything anyway... The table of function pointers is stored in the same place as far as I recall...
I don't think there is any advantage to using a far ptr function over an interrupt function.


This article has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.