ellvis / zeroteam / blog

ellvis(@)zeroteam(.)sk

---------------------------------------------------------------------


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:
bity 0 - 2 nastavujú patričný grafický režim
           - 000 screen 0
           - 001 screen 1
           - 010 HiColour režim
           - 110 HiRes režim
bity 3 - 5 nastavujú farby v HiRes režime
           - 000 - čierna na bielej
           - 001 - modrá na žltej
           - 010 - červená na svetlomodrej
           - 011 - fialová na zelenej
           - 100 - zelená na fialovej
           - 101 - svetlomodrá na červenej
           - 110 - žltá na modrej
           - 111 - biela na čiernej
bit 6 vypína a zapína generovanie prerušenia
bit 7 nastavuje zdroj externej pamäte (na TC2048 nerobí nič)

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.
timex-hires-basic
   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.



<-- 20230305 Moderné zobrazovadlo pre nemoderný hardvér | index | 20230518 Poznámky v počítači -->

---------------------------------------------------------------------

made by ellvis using Bluefish in 2023, RSS feed