Höhere Auflösungen funktionieren eigentlich sehr gut über den VESA. Jedoch ist die Anwendung wesentlich aufwendiger als für den 320x200x256 Farben-Modus. Dann dieser brauch ja genau nur 64.000 Bytes! Und somit kann der komplette Video-Speicher in einem Segment angesprochen werden.
Bei höheren Auflösungen/Farbtiefen werden jedoch wesentlich mehr Bytes verbraucht. Im VESA ist das über sogenannte "banks" gelöst. Dort hat man je "bank" 64KB zu Verfügung zum Schreiben und Lesen. Für den entsprechenden Bildschirmbereich muss dann die entsprechende "bank" aktiviert sein. Es gibt Interrupt-Aufrufe, die eine "bank" umschalten können... aber viel zu langsam. Es gibt dafür auch eine schnellere Alternative.
Bei VESA kommt dann hinzu, dass bestimmt Funktionen auf der Grafikkarte implementiert sind, die unbedingt zu benutzen sind wenn die Performance nicht arg leiden soll. So gibt es die "Mapping" Funktion zum Verschieben eines Bildschirm-Bereiches (Fensterobjekte) welche aber nur über einen FAR CALL anzusprechen ist. Ausserdem habe ich keine Dokumentation hierzu gefunden.
Falls es jemand interessiert, kann ich Code posten für z.B. 320x200 mit 24 Bit Farbtiefe oder Auflösungenen bis zu über 1600x1200x32 Bit. Alles machbar mit VESA.