Ja się wtrącę, bo mam podobne pytanie:
Czy tryby VESA różnią się czymś w obsłudze od starszych odpowiedników (oczywiście oprócz tego że tryby zaczynają się od 100h)
I tak i nie :)
Generalnie obsluga jest taka sama. Z tym, ze chyba zaden z trybow VESA nie miesci calej mapy obrazu w jednym bloku 64KB wiec trzeba przelaczac sie pomiedzy bankami. Ale nie stanowi to wiekszego problemu. Aby zapalic piksel trzeba wyliczyc jego offset:
offset := (y*SzerokoscEkranu+x)*LiczbaBajtowNaPiksel
Poniewaz mamy dostep w danym momencie jedynie do 64KB pamieci karty, to rozdzielamy nasz offset na:
- bank := offset shr 16; (czyli starsze slowo)
- oraz offset w danym segmencie: offset := offset and $ffff
Teraz wystarczy tylko przelaczyc bank:
mov ax, 4f05h
mov bx, 0
mov dx, bank
int 10h
i zapisac pod $a000:offset nasz kolor.
Z calej operacji najbardziej czasochlonne jest przelaczanie banku, ale zazwyczaj, jezeli zrobi sie sprawdzanie czy istnieje potrzeba zmiany banku, dokonuje sie jej tylko kilka razy przy pojedynczym wyswietlaniu.
Z powodu chrakterystyki podzialu na banki wyswietlanie obrazu po wierszach jest znacznie szybsze niz po kolumnach, ale to wlasnie po wierszach najczesciej sie wyswietla :)
W razie problemow z VESA sluze pomoca.