28.04. 2023
Timex TC2048 a jeho grafické režimy
Vytiahol som Timex TC2048 a hral som sa s jeho grafickými možnosťami. A keďže je to zdokumentované dosť
biedne (v podstate som to našiel len na starých comp.sys.sinclair FAQ), spisujem si to sem nech to nemusím
hľadať.
1. Prepínanie grafických režimov
Prepínanie sa deje na porte 255 (FFh). BASIC je štandartný SINCLAIR BASIC, takže žiadne extra príkazy
nie su, musí sa OUTovať. Tu je význam jednotlivých bitov:
|
2. Štandartný grafický režim
Po zapnutí je počítač v režime kompatibilnom so ZX Spectrom. Video RAM je teda od 16384 (4000h). Čo je iné
je druhá Video RAM, tá začína na 24576 (6000h). Ak teda Video RAM prepneme pomocou OUT 255,1 zobrazí sa
SCREEN 1. Keďže ROM používa vždy SCREEN 0, stratia sa nám hlásenia na obrazovke.
3. HiColour grafický režim
HiColour režim funguje tak, že atribúty neležia od adresy 22528 (5800h), ale začínajú na 24576 (6000h),
čiže SCREEN 1. Fromát farieb v atríbúte je rovnaký ako na bežnom ZX Spectre, ale atribút teraz pokrýva len 8x1
bod. Takže máme 6144 bytov pixelov plus 6144 bytov atribútov.
Po prepnutí sa do HiColour režimu je obrazovka čierna. To je v poriadku, keďže je atribútová pamäť prázdna.
Počítač ale normálne reaguje, len ROM používa vždy SCREEN 0.
Systémové premenné ležia stále na svojom mieste od adresy 23552 (5C00h).
4. HiRes režim
HiRes mód má rozlíšenie 512x192 bodov v dvoch farbách. Tie sa určujú bitmi 3 až 5 na porte 255, takže
nie je možné mať ich ľubovolnú kombináciu. Vysoké rozlíšenie je dosiahnuté kombináciou dvoch Screenov, tie sa
striedajú po stĺpcoch (každý nepárny stĺpec 8 bodov je SCREEN 0 a každý párny stĺpec 8 bodov je SCREEN 1).
V praxi to vyzerá tak, že PRINT vypisuje texty s 8 bodovou medzerou medzi znakmi a DRAW kreslí prerušovanú
čiaru. No a CLS samozrejme maže len SCREEN 0, takže čokoľvek v párnych stĺpcoch zostáva stále na obrazovke.
|
Keďže Screen 1 leží od adresy 24576 (6000h), vieme pomocou POKE zaplniť aj párne stĺpce, aj keď to je
pri výpise textu v BASICu nepohodlné a zdĺhavé. Oba screeny sú, samozrejme, adresované rovnako ako Video RAM
na ZX Spectre. Zaujímavosť je snáď to, že tento režim používa BRIGHT 1, zrejme kvôli lepšiemu kontrastu.
Aj tu platí, že sytémové premenné ležia stále na svojom mieste od adresy 23552 (5C00h).
5. Bity 6 a 7
Bit 6 portu 255 vypína a zapína generovanie prerušenia. Bit ovláda priamo hardvér, takže ani inštrukcia EI
prerušenie nepovolí, treba na to myslieť pri používaní. Niektoré rutiny v ROM by mali byť rýchlejšie ak je
prerušenie zakázané.
Bit 7 určuje ktorá externá pamäť sa bude stránkovať. Toto je funkcia prebratá z Timexu 2068, na 2048 nerobí
nič, pretože externú pamäť nie je kam pripojiť.
Na TC2068 tento bit nastavuje alebo stránkovanie externej ROM alebo RAM. Ak je bit nastavený na 0,
portom 244 (F4h) sa určujú 8kB stránky z kártridžov, ak je bit 1, pristránkovávajú sa 8kB stránky externej
ROM. Každý bit portu 244 predstavuje 1 banku (0 - 7), takže sa vie prestránkovať celý adresný priestor 64kB.
Pri stránkovaní treba dávať pozor na zásobník.
Príkaz NEW vracia akékoľvek zmeny na porte 255 do východzieho stavu.
6. Kompatibilita
Timex TC2048 je veľmi dobre kompatibilný s klasickým ZX Spectrom. Sem-tam nejaká vec nefunguje, ale väčšina
hier, diem aj ostatných programov funguje, väčšina hardvéru funguje tiež (otestované s divide, Opus Discovery,
AY interfejsom). Sú tu ale nejaké rozdiely.
Port 255 sa na ZX Spectre používa v podstate len na "floating bus" (veľmi zjednodušene - ak sa číta
z nezapojeného portu, ULA vráti bajt práve zapisovaný do Video RAM, prípadne 255 ak sa lúč nachádza
v borderi). Toto na Timexe nefunguje, pretože čítanie portu 255 tu vráti posledný bajt na port poslaný. Vidieť
sa to dá napríklad na hre Short Circuit 1, ktorá floating bus využíva. Na Timexe kvôli tomu hlavný sprajt
bliká (vidieť sa to dá aj vo Fuse).
Najvýraznejší rozdiel je ale zrejme rýchlosť, Timex je taktovaný mierne rýchlejšie než bežné Spectrum
(3.52800 MHz vs 3.50000 MHz) takže napríklad multicolory nie su väčšinou úplne načasované (testované napríklad
v druhej časti Shock Megadema). Ale to už s rozšírenou grafikou ani portami nemá čo robiť. Na rýchlosť
sa možno pozriem niekedy nabudúce.
|