![]() | ![]() |
| 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:
| Tryb | Opis |
|---|---|
| 0 | zgodny z ZX Spectrum, pamięć: 16384 do 22527 (#4000-#57FF) - 256*192 22528 do 23295 (#5800-#5AFF) - atrybuty |
| 1 | j.w., ale pamięć: 24576 do 30719 (#6000-#77FF) - 256*192 30720 do 31487 (#7800-#7AFF) - atrybuty |
| 2 | Multicolor: 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 |
| 6 | Hi-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