Niedziela 19 Maj 2024r. Godz 00:00:00      
Postów: 251      

Inicjalizacja trybu graficznego VGA

Dla naszych potzreb trzeba najpierw sobie wybrać rozdzielczość i liczbę kolorów jaka nam będzie w danym programie potrzebna. Do tego służy tabela w specyfikacji.Kiedy mamy już wybrany tryb przechodzimy do inicjalizacji. Do przykładu wybierzmy tryb 640x480x16. Jego oznaczenie to 0x12. Na sam początek proponuję wybierac tryby z zakresu 0x00-0x07 i 0x0D-0x13


char tryb=0x12;
asm
{
        MOV AH,0x00
        MOV AL, tryb
        INT 0x10
}

Po wystąpieniu powyższego kodu zmieni się nam rozdzielczość. Teraz trzeba wybrać która strona ma być wyświetlana, jeżeli jest dostępna więcej niż jedna. Załóżmy że 0


char strona=0x00;
asm
{
        MOV AH,0x05
        MOV AL, strona
        INT 0x10
}

No i w tym momencie już można używać grafiki

Można też ustalić sobie od razu kolor tła i w trybie tekstowym ramki wokół ekranu. To udostępnia nam funkcja 0x0B przerwania 0x10


char kolor=0x05;
asm
{
        MOV AH, 0x0B
        MOV BH, 0x00
        MOV BL, kolor
        INT 0x10
}

W tym momencie najprościej sobie zrobić funkcję inicjującą zawierającą wszystkie powyższe instrukcje.


void init(char tryb=0x12, char kolor=0x00, char strona=0x00)
{
        asm
        {
                MOV AH,0x00
                MOV AL, tryb
                INT 0x10
                MOV AH,0x05
                MOV AL, strona
                INT 0x10
                MOV AH, 0x0B
                MOV BH, 0x00
                MOV BL, kolor
	        INT 0x10
	}
}

Warto też na zakończenie programu przywrócić tryb tekstowy. Czyli uruchomić poniższą funkcję:


void close()
{
	asm
	{
		MOV AX,0x0002
		INT 0x10
	}
}