Tryb 13 godz
Tryb 13h to standardowy tryb 256 kolorów na sprzęcie graficznym VGA wprowadzony w 1987 roku wraz z IBM PS/2 . Ma rozdzielczość 320×200 pikseli . Był szeroko stosowany [ potrzebne źródło ] w grach komputerowych i oprogramowaniu do grafiki / animacji pod koniec lat 80. i od początku do połowy lat 90. „13h” odnosi się do numeru trybu w BIOS- ie VGA . „h” oznacza szesnastkowy .
Tryb 13h zapewnia programistom liniowy blok pamięci wideo 320x200 , w którym każdy bajt reprezentuje jeden piksel. Pozwala to na łatwość programowania kosztem dostępu do innych przydatnych funkcji sprzętu VGA.
Biorąc pod uwagę proporcje ekranu o rozdzielczości 320 × 200 do użytku na wyświetlaczu 4: 3, tryb 13h nie ma kwadratowych pikseli .
Szczegóły techniczne
Tryb 13h jest czymś w rodzaju ciekawostki, ponieważ VGA jest urządzeniem planarnym z punktu widzenia sprzętu i nie nadaje się do operacji z masą graficzną. VGA ma 256 KiB pamięci wideo składającej się z 4 banków po 64 KiB, zwanych płaszczyznami (lub „mapami” w dokumentacji IBM). Planarny układ pamięci dzieli piksele poziomo na grupy po cztery. Dla dowolnego bajtu w aperturze pamięci wideo komputera PC o pojemności 64 KiB, na ekranie można uzyskać dostęp do czterech pikseli, wybierając wymaganą płaszczyznę (płaszczyzny). Jest to bardziej skomplikowane dla programisty, ale umożliwia dostęp do całej dostępnej pamięci wideo i inne korzyści (patrz tryb X ).
Tryb 13h umożliwia jednak programiście dostęp do VGA w sposób „masywny” (liniowy), w którym każdy kolejny adres w otworze reprezentuje kolejny piksel na ekranie. Płaszczyznami nie trzeba manipulować, aby wybrać właściwe piksele do modyfikacji lub odczytania. Osiąga się to za pomocą ustawienia VGA „Chain 4”, w którym dwa najniższe bity 16-bitowego adresu apertury są używane do wyboru płaszczyzny do zapisu/odczytu. W rezultacie programista ma prosty model dostępu; minusem jest to, że teraz tylko 2 14 (16 KiB) przestrzeni adresowej płaszczyzny wideo jest dostępnych (pozostałe 2 bity są używane do wybierania płaszczyzn), więc łącznie tylko 64 KiB jest adresowalnych (4 × 16 KiB). Górne 48 KiB każdej płaszczyzny pozostaje niewykorzystane w tym trybie.
W przeciwieństwie do SVGA i wyższych głębi kolorów, tryb 13h, będący częścią zestawu trybów wideo MCGA , ma 18 bitów koloru, po 6 na kanał. Dane palety nie są przechowywane w pamięci per se , ale raczej modyfikowane, odczytywane i zapisywane przez wywołania portów I/O niskiego poziomu, do rejestrów DAC .
Dane palety kolorów były często kopiowane pojedynczo z portów niskiego poziomu do miejsca w pamięci za danymi ekranu, aby można było zapisać kolory wraz z pikselami, do których należały. Zrzut ekranu w trybie 13h to zaledwie 64 000 bajtów wartości od 0 do 255, z których każda jest indeksem koloru ze znanej palety wielu kolorów. Jeśli paleta kolorów jest pomieszana lub całkowicie niewłaściwa, zielony liść będzie wyglądał na niebieski lub dowolny inny możliwy kolor, w zależności od tego, do czego został ustawiony ten konkretny kolor, który z 256.
Ze względu na sposób przydzielania fragmentów pamięci w takim środowisku, bajty w segmencie 0xA000 od przesunięcia 64000 do 64768 mogą być zapisywane bez negatywnych skutków. Pozwala to programiście zapisać dodatkowe bajty, 256 (kolory) × 3 (kanały kolorów) = 768 bajtów, na końcu pliku przechwytywania ekranu. Muszą one zostać ponownie odczytane i zapisane w porcie kolorów, aby mogły się zmienić, gdy obraz zawierający stopkę informacji o kolorze zostanie załadowany. Zastosowaną metodą było posiadanie globalnej palety i dopasowanie kolorów ze starej palety kolorów do nowej palety kolorów. Oznaczało to zmianę indeksu każdego piksela, co wskazywałoby na niemal idealne dopasowanie jednego koloru ze starego do nowego zestawu kolorów. Miało to również wady, ponieważ czasami nie było wystarczającej liczby gradientów i pojawiały się artefakty i tym podobne.
Nie jest konieczne ustawianie trybu graficznego w systemie BIOS; możliwe jest przełączanie trybu graficznego w 32-bitowym trybie chronionym, jeśli jest to trochę bardziej skomplikowane. Polega na zapisywaniu danych o rozmiarze do kontrolera VGA.
Warianty
Alternatywny planarny tryb 256-kolorowy jest dostępny po wyłączeniu trybu Chain 4 (unchaining). Tryby wideo utworzone przy użyciu tej techniki są zbiorczo nazywane trybem X , chociaż pierwotne użycie tego terminu dotyczyło trybu VGA, który również miał kwadratowe piksele. Chociaż te tryby (wraz z bardzo wieloma innymi możliwymi trybami VGA) nie zostały szczegółowo udokumentowane przez IBM, funkcje sprzętowe VGA i funkcje użyte do ich implementacji zostały udokumentowane co najmniej już w 1988 r. W dokumentacji technicznej interfejsu sprzętowego PS / 2 .
Notacja
W języku asemblera x86 tryb jest wprowadzany, gdy AL wynosi 13h, AH wynosi 0 i wykonywany jest BIOS INT 10h . Jednak „h” jest czasami pomijane w przypadku języków, które nie obsługują tej metody zapisu; na przykład jest znany jako tryb ekranu 13 w QuickBasic i jego spin-offach. QuickBASIC ma swój własny schemat numerowania trybów ekranu, a wiele trybów ekranu QuickBASIC ma numery, które różnią się od trybów BIOS-u, na których są oparte. W C szesnastkowa liczba 13 jest zapisywana jako 0x13.
Linki zewnętrzne
- Programowanie 256 kolorów VGA Davida Brackeena w C
- Wprowadzenie do VGA... Tryb 13h
- Asembler dla bystrzaków: tryb 13h