Jo ZX-Spektrum, pamatuju jak jsme na to delali reklamni software. Vykradli jsme
rutinu pro zobrazovani zoomovaneho textu z te demonstracni kazety horizont a
ovladalo se to joystikem a melo to i cheat.
Nejvice softu pro 8mibity jsme delali na C64. Moc toho ale nebylo era 8mi bitu
skoncila ponekud brzy (do 1992) a ATARI ST nevydrzelo o moc let dele. Zakazky
na amigu jsme nemeli. Na ST jsme delali hudebni soft a textak.
Ty novy diskuze jsou hrozny, jediny zpusob jak nacpat mezeru do textu je
<p><br>
Už se to tu diskutovalo. Nejpravděpodobnější teorie je, zjednodušení rutin malující text na obrazovce (protože navzdory grafického výstupu si myslím, že hlavní tíha byla stále na textu). Přechod na další mikrořádku byl prováděn jednoduše tak, že se inkrementovala horní půlka 16 bitového registru. To znamená připočíst 256 bajtů. A právě jedna třetinka obrazovky má přesně 256 znaků, čili 8×32 = 256. Kdyby to bylo po řádcích, muselo by se připočítat 32, kdyby mikrořádky následovali až po řádcích, bylo by to 768. To jsou všechno čísla, jejich přičítání zabralo na Z80 víc taktů a víc registrů, než jednoduché přičítání jedničky k horní půlce adresového registru.
Navíc, současně se zobrazením znaku se musel nastavit příslušný atribut. Po nakreslení znaku stačilo už jen vyšší půlku adresy posunou 3× vpravo a odečíst jedničku. Výsledkem byla adresa v atributové oblasti (po přičtení čísla 16384, které se dá realizovat i osmibitově v horní půlce adresového registru)
Něco o tom tu bylo také minule,
já si vzpomínám že v BASICu to bylo s grafikou ještě divočejší,
protože zatímco „první znak“ začínal vlevo nahoře, tak „první bod
obrazovky“ byl vlevo dole :-D Nejlepší způsob by asi byl nahlédnou to
výpisu ROM, na netu se vyskytuje anglicky i česky v opravdu velkém množství míst. Doporučuji tu
poslední.
Když pomineme maximální jednoduchost a rychlost rutin při zachování
spousty funkcí, a že jich tam bylo, tak hlavním důvodem pro použití tak
(zdánlivě) nelogického uspořádání obrazovky byla především cena, ono
by to Spectrum samozřejmě šlo udělat jinak – lépe(?), ale stálo by
potom skoro tolik co C64! Tenhle
kousek kódu (15 instrukcí) se stará o vykreslení znaku, pak se ještě
nastavují atributy, to mi připomnělo že kromě osmi standardních barev
(0–7) existovaly ještě dvě další: 8 – transparentní, a 9 –
kontrastní. Vzpomenete si ještě někdo, k čemu byly dobré?
Transparentní a kontrastní? Neznám. Jinak já měl barev 15: 0. Černá
A od barev 1 až 7 ještě verze se zvýšeným jasem (bright). Existovaly klony ZX Spectra, které měly barev 16 – černá se zvýšeným jasem vypadala jinak než „obyčejná“. S čímž ovšem většina grafiků nepočítala a podle toho obrázky při zobrazení vypadaly :-)
Ony tyhle dvě barvy byly tak trochu tajné, na klávesnici nebyly vypsané a
třeba v návodu Didaktiku Gama je odbyli jednou větou. I když on celý ten
návod byl hóóódně stručný, o to víc jsem si vyhrál při
experimentování :-)
O té „světle černé“ jsem něco četl, ale nepamatuji si, kde se to
vyskytovalo. Nemělo to zrovna to Mistrum z AR? Mě spíš docela štve, že
eMko i Kompakt mi na barevné televizi jedou jen černobíle, jak přes anténu
tak i přes Video :-(
Transparentni barva znamenala, ze příslušná barevná informace se zachovala, tedy nepřepsala se. Jinými slovy, pokud se psalo někam, kde bylo modre pozadi, tak pakliže člověk nastavil PAPER 8, zůstalo tam modré pozadí. Pokud zrovna nedal zároveň INK 8, způsobilo to, že se měnila jen barva inku
Transparentni se musel kombinovat s druhou barvou. Pokud dal člověk INK 9, pak barva popředí byla bílá, pokud barva pozadí byla tmavá, a naopak. Podobně se to dalo udělat s PAPER 9, který se pak nastavoval podle popředí.
Opravte mne, pokud říkám něco blbě. Už si nepamatuju, jak se řešilo zachování blikání, či brightu
Říkáte to správně, transparentní prostě atributy neměnila, zůstaly
u každého přepsaného znaku tak, jak byly po předchozím tisku. Kontrastní
byla ještě zajímavější, pro barvy 0–3 byla bílá, pro 4–7 černá,
když díky (zase zdánlivě podivnému) seřazení barev na Spectru stačilo
testovat jediný bit… Mělo to jedinou výjimku, pod kontrastním INKem se
kontrastní PAPER ignoroval. Ilustrační foto, kde jsou
trochu vidět i atributy a současné použití grafiky a textu.
FLASH a BRIGHT mohly být 0, 1 nebo 8, se stejnou funkcí jako u těch barev,
kdy transparentní neměnily předchozí nastavení.
Ještě doplnění k té grafice, i „kreslící“ obrazovka měla v BASICu
jen 22 řádky, poslední dva byly tzv. dialogové, třeba pro INPUT, takže
použitelný rozsah obrazovky měl jen 256×176 bodů.
Na ZX spectrum nebylo až tak podivné řazení barev. Používalo se řazení GRB
G R B
0 0 0 – cerna
0 0 1 – blue
0 1 0 – red
0 1 1 – magenta
1 0 0 – green
1 0 1 – cyan
1 1 0 – yellow
1 1 1 – white
Světlejší barvy jsou víceméně ty, co obsahují zelenou složku (což zní
logicky)