OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 18.04.2024, 09:07

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 20 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
 Předmět příspěvku: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 14:13 
Offline
Profík
Uživatelský avatar

Registrován: 20.02.2017, 01:17
Příspěvky: 806
Has thanked: 19 times
Been thanked: 48 times
Mě včera napadla taková otázka: ZX Spectrum má na rozdíl od C-64 jen jeden video mód, jednu obrazovku, a to bitmapu a 2-barevné atributy. To ale vlastně znamená, že nedisponuje standardním textovým módem jako C-64. Nicméně přesto je ZX Spectrum postaveno na textovém módu ve smyslu jak zapisujeme znaky do obrazovky. Ve výsledku mi to vychází jako velmi flexibilní, že vlastně zapisujeme jak celé znaky tak jednotlivé pixely do stejného výstupu. Na svou dobu mi to přijde až nadčasové a geniální.

Zároveň tuším, že zde bude zakopán pes s rychlostí. Přece ULA musí ty znaky nějakým způsobem do té bitmapy vkládat (a míchat s ostatními pixely), takže tam musí být někde v ULA něco jako blitter nebo nějaký "fetching"...

Co vím, na C-64 se nedalo prostě jen tak poslat znaky když jste měli jako aktivní obrazovku bitmapu. To snad VIC-II ani neuměl to co dělá ULA...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 14:46 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1520
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 383 times
V ULA nic takového není.
Znak se zobrazí tak, že tam procesor nacpe postupně celou jeho bitmapu - tedy 9 bajtů na znak (8 bajtů pixelů a jeden bajt barvy do atributů).
Co se týče rutiny pro výpis znaku v ROM, nový obsah ten původní natvrdo přepisuje, výjimka je režim OVER 1, kdy se spolu XORují (procesor osmkrát vyčte původní bajt, XORuje s bitmapou znaku a zapíše zpět, pak zapíše atributy), pokud je použita "transparentní" barva, vyčte předtím původní atribut a spolu zkombinuje.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 14:57 
Offline
Radil

Registrován: 03.07.2018, 23:06
Příspěvky: 364
Has thanked: 221 times
Been thanked: 253 times
Znakový režim se u počítačů používal proto, že měl menší nároky na paměť. Na video-RAM v textovém režimu by u ZX Spectra stačilo 768 bytů pro znaky a 768 bytů pro barevné atributy. Když je počítač v textovém režimu, při vykreslování obrazu si z video-RAM zjistí, který řádek jakého znaku má vykreslovat, a potřebné informace o pixelech si vezme z ROM nebo vyhrazené RAM se znakovou sadou.

V grafickém režimu si zobrazovací systém bere data přímo z video-RAM. ULA ZX Spectra se chová přímo takto a o žádných znacích nic neví. Vše je řešeno softwarově. Informace o znacích si operační systém nebo programy berou z tabulky v ROM, případně RAM.

Doporučuji nastudovat si rozdíl ve způsobu zobrazování u ZX Spectra a Jupiter ACE.

_________________
Špóngiu navlhčiť


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 15:12 
Online
Pan Štábní
Uživatelský avatar

Registrován: 21.01.2021, 11:05
Příspěvky: 1626
Bydliště: Pardubice
Has thanked: 28 times
Been thanked: 247 times
:idea: ZX Spectrum emuluje textový mód softwérově :lol:

_________________
Praxe znamená, že vše funguje, ale nevíme proč. Teorie znamená, že vše víme, ale nic nefunguje.
Někdy je teorie spojena s praxí. Znamená to, že nic nefunguje a nikdo neví proč ...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 15:54 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 28.11.2014, 18:29
Příspěvky: 1493
Bydliště: Milovice
Has thanked: 12 times
Been thanked: 369 times
No ale veď všetci vedia, že je to znouzecnost, to isté s Ramkami, ktoré boly z polovice defektné ale aj tak sa použili ale z hovna bič upletieš ale všetci potom budú osračkovaný.
Ja teda C64 a príbuzné nemusím no terminál s Z80 + 1 zákaznický obvod /ULA, nieje úplne celkom to pravé orechové :lol: :lol: :lol:

_________________
STbrigáda
Atari 800XL, POFO, Atari Mega 2/4Mb Ram, Atari Mega STe, Atari TT 030


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 16:44 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2779
Has thanked: 226 times
Been thanked: 602 times
ULA jenom zobrazuje bitmapu, nic jiného než plivat pixely neumí. Znaky posíláš do softwarového kanálu, a ten je graficky vymaluje do videopaměti.

Geniální to samozřejmě je, protože u Sinclaira dokázali geniálně vojebat cokoliv, zjednodušit a zlevnit až na samou hranici funkčnosti i použitelnosti. A pak to prodávat nejlevněji ze všech...

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 17:18 
Offline
Profík
Uživatelský avatar

Registrován: 20.02.2017, 01:17
Příspěvky: 806
Has thanked: 19 times
Been thanked: 48 times
No ale přece i ve strojovém kódu mohu poslat naráz znak na pozici na obrazovce ne? Myšleno "pomocí POKE"...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 17:31 
Online
Pan Štábní
Uživatelský avatar

Registrován: 21.01.2021, 11:05
Příspěvky: 1626
Bydliště: Pardubice
Has thanked: 28 times
Been thanked: 247 times
Já jsem ZX beginer, ale řekl bych, že v ZX jen jeden mikrořádek ze znaku a pokud nevíš, tak ho ještě musíš vyčíst z ROM, jak ta část znaku vypadá.

_________________
Praxe znamená, že vše funguje, ale nevíme proč. Teorie znamená, že vše víme, ale nic nefunguje.
Někdy je teorie spojena s praxí. Znamená to, že nic nefunguje a nikdo neví proč ...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 18:07 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1520
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 383 times
tommik píše:
No ale přece i ve strojovém kódu mohu poslat naráz znak na pozici na obrazovce ne? Myšleno "pomocí POKE"...

To Spectrum právě neumí.
Je potřeba poslat ne kód znaku, ale celou jeho grafickou předlohu, a to (za standardních podmínek, jak jsem už psal) alespoň 8 bajtů, takže osmkrát POKE (+ 1 bajt barvy).

Vypsání znaku rutinou v ROM se samozřejmě provede tak, že se "jen" do A naplní kód znaku a zavolá RST 10, ale za tím se skrývá celkem komplexní rutina, která potřebnou grafickou předlohu znaku vyhledá, pošle ji do videoRAM (8 bajtů) a případně doplní barvu do atributů.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 18:15 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3661
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 795 times
tommik píše:
Mě včera napadla taková otázka: ZX Spectrum má na rozdíl od C-64 jen jeden video mód, jednu obrazovku, a to bitmapu a 2-barevné atributy. To ale vlastně znamená, že nedisponuje standardním textovým módem jako C-64....
Presne tak. Predstav si, ze na C64 natvrdo zapnes Hires 320x200, vypnes sprajty a toto bude jediny, napevno dany graficky rezim. Ziadne znaky, ziadna textova videoramka, jedine cista pixelova grafika, s atributami 8x8 pixelov. A vsetok soft, ktory chce cokolvek zobrazit (ci uz text, alebo grafiku), to musi pekne do takychto pixelov vykreslit. Taky je ZX Spektrum :)
tommik píše:
Co vím, na C-64 se nedalo prostě jen tak poslat znaky když jste měli jako aktivní obrazovku bitmapu.
A presne tak isto aj na ZX Spektre. ULA o nejakych znakoch alebo textovom rezime nevie absolutne nic, je proste natvrdo "zadratovana" na graficky Hires rezim.
tommik píše:
No ale přece i ve strojovém kódu mohu poslat naráz znak na pozici na obrazovce ne? Myšleno "pomocí POKE"...
Mozes maximalne zavolat podprogram do romky, ktory ten znak za teba do pixelov vykresli, ale stale plati, ze to proste musi "odmakat" procesor.

(nastastie skvely Z80 to zvlada lavou zadnou :) )


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 18:26 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1520
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 383 times
Busy píše:
nastastie skvely Z80 to zvlada lavou zadnou :)

Jo tak proto mají počítače s procesorem 6502 hardwarový textový režim...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 18:47 
Offline
Profík
Uživatelský avatar

Registrován: 20.02.2017, 01:17
Příspěvky: 806
Has thanked: 19 times
Been thanked: 48 times
Aha, takže je to "softwarově" pomocí rutiny v ROM...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 20:14 
Offline
Profík
Uživatelský avatar

Registrován: 20.02.2017, 01:17
Příspěvky: 806
Has thanked: 19 times
Been thanked: 48 times
Jsem někde narazil na to, že to zdánlivě nelogické vykreslování do obrazovky na Spectru je právě kvůli znakům...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 20:37 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1520
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 383 times
Jasně, protože další mikrořádek máš přesně o 256 bajtů dál, takže v dvojregistru HL stačí jen INC H pro přesun na další mikrořádek při vykreslování znaku.
Dolní polovinu dvojregistru neměníš, respektive její inkrementaci použiješ až pro přechod na další znak.

(Obecné "downHL", posun o jeden mikrořádek dolů, je trochu složitější, protože musí hlídat přechod přes obrazové třetiny, to ale u standardní znakové rutiny nehrozí.)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ULA vs. VIC-II znaky a bitmapa
PříspěvekNapsal: 13.10.2021, 20:56 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3661
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 795 times
tommik píše:
Jsem někde narazil na to, že to zdánlivě nelogické vykreslování do obrazovky na Spectru je právě kvůli znakům...
Nie, ta sialena organizacia videoramky nie je kvoli znakom alebo softweru, ale kvoli tomu aby mohla ULA efektivnejsie vycitavat videoramku pri zobrazovani.

Videoramka je fyzicky realizovana dynamickymi ramkami 4116 alebo 4164, ktore maju multiplexovanu adresovu zbernicu, co znamena ze najprv treba do ramky zapisat nizsi bajt adresy, a potom vyssi bajt, a az potom je mozne citat z danej adresy. Videoramka na ZX Spektre je organizovana tak, aby nizsi bajt adresy kazdeho pixeloveho bajtu (cosi ako Hires RAM) bol zhodny s nizsim bajtom atributu (cosi ako color RAM) zodpovedajuceho danym pixelom. To znamena, ze namiesto styroch taktov stacia na vycitanie pixelov a ich farieb iba tri takty, lebo nizsi bajt adresy je uz v ramke zapisany z citania pixelov a pre citanie atributu staci zapisat uz iba vyssi bajt adresy.

Vdaka tomuto zobrazovanie menej brdzi hlavny procesor a hlavny procesor tym padom moze bezat rychlejsie. Je to tiez jeden z dovodov (aj ked menej vyznamny) preco ZX Spektrum nemusi vypinat zobrazovanie grafiky, ked nieco nahrava z kazetaku.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 20 ]  Přejít na stránku 1, 2  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 5 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz