Obsah

Porty HGFX

HGFX používá několik portů, víceméně se zde režim jen zapíná, a více se na porty nesahá. Pro rychlejší ovládání HGFX se používají Registry. Porty najdeme v General sadě ZXI.

gZxi_01h - Extra graphics modes

HodnotaPopis
00Classic ZX
01HiResColour(HRC) - 512×192 pixels / 64×48 attributes / Spectrum attributes
02HiResindeXedColour(HRXC) - 512×192 pixels / 64×48 attributes / indeXedColours
03HGFX 1, 256×192 pixels, two buffers, 256 colors, ZX / linear memory layout
04HGFX 2, 512×192 pixels, one buffer, 256 colors, linear memory layout
05HGFX 3, 512×384 pixels, one buffer, 16 colors, linear memory layout

gZxi_20h - General settings

bitPopis
b0memory layout: 0 - standard ZX; 1 - linear
b1border colour: 0 - standard ZX; 1 - indexed (index 0-7)
b2ZX transparency: 0 - enable; 1 - disable

gZxi_21h - high byte of Videoram area

40h - default

gZxi_22h - high byte of Registers area

5Bh - default

gZxi_23h - high byte of Indexed colour table area

5Ch - default

gZxi_2Fh - status

bitPopis
b00 - ready; 1 - busy

Registry HGFX

Pro ovládání rychlejších funkcí HGFX jsou použity registry. Je to malý blok v paměti, do kterého se dají zapisovat hodnoty rychleji pomocí LD (REG),A, LD (HL),A nebo dokonce LD (REG),HL. Pokud jsou registry umístěny v RAM, je možné jejich hodnoty i číst a použít tak třeba INC (HL). Podtržené názvy jsou zkrácené verze pro používání v ASM.

00 - Video parameters

bityPopis
b00 - Zobrazovat Buffer A; 1 - Zobrazovat buffer B
b10 - Zapisovat do Bufferu A; 1 - Zapisovat do Bufferu B
b20 - Číst z Bufferu A; 1 - Číst z Bufferu B

01h - Planar Mode

HodnotaJménoPopis
00INK ModeTento režim zapíše barvu pouze tam, kde se do videoram zapisuje z pohledu Z80 bitová 1. Jaká barva, to zaleží na nastavení SColor a PMask. Kde se zapisuje bitová 0, se nic nemění.
01COPY ModePokud nepředcházelo čtení z Bufferu (nazveme to cInk), chová se podobně jako INK. Ale tam kde se zapisuje z pohledu Z80 do videoram bitová 0 se nastaví Indexovaná barva dle registru 0Eh Paper Color Index. Pokud ale předcházelo čtení z Bufferu, uloží se do interní Cache hodnoty 8 pixlů, jednotlivé Indexy barev, které je možné při příštím zápisu opět do Bufferu zapsat. Čtená hodnota (z pohledu Z80) musí být stejná jako zapisovaná, jinak se provede pouze cInk.
02ATTR ModeTento režim zapíše podobně jako režim INK Mode barvu SColor a PMask tam, kde se do videoram zapisuje z pohledu Z80 bitová 1. Kde se zapisuje bitová 0, se nastaví barva definovaná pomocí SPColor. a PMask.

02h - Advance Commands

HodnotaNázevPopis
00NOP
01COPY_ALLZkopíruje velice rychle celý obsah zdrojového Bufferu do cílového Buferru.
02ERASE_ALLSmaže velice rychle celý cílový Buffer.

03h - Ink Color Index

04h - Planar Mask

0Dh Advanced Graphics Feature

HodnotaJménoPopis
00Standartní RežimKlasický režim 256 indexovaných barev
01FILL RežimRežim pro podporu vektorů
02HAM RežimRežim pro vícebarevné zobrazení

0Eh Paper Color Index

0Fh Fill Planar Mask

Offsety

Následujicí registry jsou Offsety. Všechny jsou 16 bitové a dovolují i záporné hodnoty (Signed). Je možné tedy nastavit i takové hodnoty jako třeba -6 nebo -32768. Jednotky jsou v Pixlech, Offsety určují jaká je poloha naší videoram v Bufferu X a Y. Pokud bude Videoram nastavená na adresu 16384, následně nastavíme D_OffsetX na 128 a D_OffsetY na 96, potom zápis na adresu 16384 bude zobrazen přesně uprostřed obrazovky.

Offsety máme dva, jeden pro zápis a druhý pro čtení z Bufferu.

05h - Destination OffsetX

07h - Destination OffsetY

09h - Source OffsetX

0Bh - Source OffsetY