Grafika TC2048

Opis rozszerzonej grafiki TC2048


W przestrzeni adresowej można wyróżnić obszary ekranów:
Adres Hex Dec
Ekran 1 4000 - 57FF 16384 - 22527
Atrybuty 1 5800 - 5AFF 22528 - 23295
Ekran 2 6000 - 77FF 24576 - 30719
Atrybuty 2 7800 - 7AFF 30720 - 31487

Dostęp do rozszerzonych trybów graficznych jest możliwy poprzez port we/wy 255. Wykonując polecenia OUT 255,x można przełączać tryby graficzne. Można też sprawdzać aktualny stan tego portu rozkazem IN 255.
Podczas startu systemu zawsze jest wybierany tryb graficzny zgodny z ZX Spectrum (out 255,0), jest on wymuszony sprzętowo. Jednak w wypadku, gdy zostanie wykonany np. warm reset (JP 0), zadziała niewielka modyfikacja ROM-u pod adresami 4762 i 4763, gdzie zamiast wartości 10, 12 (#OA,#OC) które powodują skok do procedury wyświetlającej "(C) 1982 Sinclair..." jest adres końca interpretera BASIC-a, gdzie dodano nowe instrukcje:

14446 #386E #D3 #FF OUT (#FF),A ; wpisuje 0 to portu 255
14448 #3870 #CD #OA #OC CALL #OCOA ; skok do "(C) 1982 Sinclair..."
14451 #3873 #C9 RET ; "(C)", powrót do 4764

Tryby graficzne:

TrybOpis
0zgodny z ZX Spectrum, pamięć:
16384 do 22527 (#4000-#57FF) - 256*192
22528 do 23295 (#5800-#5AFF) - atrybuty
1j.w., ale pamięć:
24576 do 30719 (#6000-#77FF) - 256*192
30720 do 31487 (#7800-#7AFF) - atrybuty
2Multicolor: dane ekranu zaczynają się od 16384 (#4000), ale atrybuty są określone dla każdego bajtu w obszarze położonym 8192 bajty wyżej
6Hi-Res. Rozdzielczość 512x192 punktów, dokładny opis poniżej.

Jak już wspomniałem, wyboru trybu graficznego w TC2048 dokonuje się wpisując do portu 255 8-bitową licznę. Znaczenie poszczególnych bitów:
0 - jeśli ustawiona "1" = układ ULA tworzy obraz z danych od adresu $6000, atrybuty $7800
1 - jeśli ustawiona "1" = ULA pobiera atrybuty spod adresu $6000
2 - jeśli ustawiona "1" = tryb Hi-Res (512x192)
3, 4, 5 - bity te określają atrybuty ekranu (jeden z 8 kolorów)
6 - jeśli ustawiona "1" = wyłącza przerwania
7 - nie używane

Powrót do strony głównej...