"Sněžení" nebylo bezdůvodně. Umožňovalo použít paměti jen s jedním portem (pouze jedno souběžné čtení/zápis v jednu chvíli). Pozdější klony CGA už využívaly, že paměti mezitím zlevnily, takže měly dvojportové paměti a problém se sněžením nebyl (posílání pixelů na monitor bylo souběžně s čtením/zápisem z programu).
Zobrazení CGA na Hercules grafice (a monitoru) rezidentním programem bylo velmi pomalé - na hry nepoužitelné. Brácha měl doma na test úplně první grafiku od ATI, která uměla jak Hercules, tak CGA - tu dokázala posílat na MDA/Hercules monitor. Nějak si s tím pohráli, aby ten monitor nezničili - i když se říkalo, že se ten monitor namáhá. Na monitoru to bylo vizuálně standardní CGA (stupně šedi, ne dithering; všechny pixely stejné rozměry).
Re jednoportové paměti - ano, to je pravda. byly vlastně čtyři řešení:
1) nechat to tak, jak to udělalo IBM
2) aspoň vyvést IRQ, aby programátor mohl překreslovat v blank/syncech
3) dvouportové paměti
4) mít paměti tak rychlé, že by se o přístup mohl GPU a 6854 dělit. To měl právě BBC Micro, kde měli 6502 s 2MHz a museli použít (dražší) paměti zvládající 4MHz. Potom se přistupovalo k Video RAM režimem sudá-lichá.
Nebo samozřejmě double buffering, ale to je taky drahé (tedy bylo).
23. 12. 2021, 08:51 editováno autorem komentáře
U AT to nebylo o moc lepsi. Musel bych zapatrat v analech, ale pamatuji uz z docky z jednoho JZD že další irq se řešilo naretezenim dvou svabu - nějaké intel 8272 asi. Pricemz ten co měl napojeni na cpu se retezil přes IRQ 2 s tím dalším.
Tohle byl strašný prasokockohadopes. Ale to nesmi brát clovek optikou dnešní doby, kdy si kdejaký rozmazaný embedak ztěžuje na nevyhovující instrukci nebo flagy.
Dělalo se za úplně jiných technologických a finančních omezení.
Pokud si pamatuju, tak jako řadič přerušení se používal I8259 a ten se dal rozšířit. S 9ks se dalo mít až 64 úrovní přerušení... Ale musely být k dispozici signály CAS[2..0] - https://pdos.csail.mit.edu/6.828/2014/readings/hardware/8259A.pdf Figure 11
Ja jsem jednu dobu (o neco pozdeji) mel Hercules kartu jako druhou v PC - pro vyvoj kernel driveru pod WinNT nepostradatelne - respektive levnejsi nez druhe PC propojene pres seriovy port/firewire. A o neco vetsi konfort nez SoftIce.
Ftipne bylo ze ta karta byla cela z diskretnich soucastek (74xx) a tudiz pekne dlouha, delsi nez motherboard a skoro nez case. Presto jsem ji nakonec do case dostal, ale tak, ze 'ladnym obloukem' byla oprena o chladic procesoru a v case koncila v zarazce pro vedlejsi slot :-)
Monitory sem mel nakonec dva - cerno/zluty a cerno/bily.
To byl celkem běžný setup. A hlavně programátorsky velmi pohodlné protože HCGA měla jinde rozsah paměti a nesvihalo se to s hlavní grafikou(měl jsem už SVGA Tridenta).
Člověk si pak připadal jak ředitel NASA s cernobilym monitorem z nemecke pokladny a 486. Das war noch zeiten... V te dobe za pakatel.
23. 12. 2021, 17:17 editováno autorem komentáře
Té barevné palety je škoda. Kdyby byla měnitelná třeba aspoň v rozsahu, jak to měl Commodore (tedy 16 barev, to ostatně stejně umí v textovém režimu), tak by spousta her vypadala o dost líp. Obvodově by to bylo nepatrně horší. Minimálně jeden LUT navíc, ale možná by to životnost CGA trošku prodloužilo. A hlavně by to nechtělo žádné zásahy do monitorů, které stejně musely těch 16 barev dát.
PC-88 v Japonsku to tak měl: 640x200x8 volně namíchaných barev a ty hry vypadaly o hodně líp (líp jak 16 barev EGA). Jinak ty CGA monitory se pak využily s EGA kartami, kde člověk akorát přišel o 640x350 (textový a grafický režim; pro aplikace byl způsob, jak zjistit, že monitor umí jen 200 řádků). Mimochodem Windows 3.x uměl ta rozlišení s nečtvercovými pixely (640x350, 640x200 a po úpravě i 320x200 - v novějších verzi 3.1 už bylo potřeba donahrát low-res EGA 640x200 z 3.0).
Motoroly sa dnes ako mikroradice este bezne pouzivaju. Sem-tam aj na nove dizajny. To bol dovod, preco povodne zamyslane vyhodenie podpory tejto architektury z GCC bolo "preplatene" a nakoniec odvolane. O Z80 neviem, ale kedze sa dnes relativne bezne pouzivaju aj 8051, tak by som sa Z80tke tiez vobec nedivil.
Používá se eZ80, což je 24-bitový procesor (má instrukční sadu Z80, ale rozšířené registry, takže nativně zvládá 16 MB paměti). Je superskalární, takže na stejné frekvenci zvládá násobek instrukcí za jednotku času oproti originálu, a navíc běží až na 50 MHz (novější možná i více). Já v tom kdysi psal nějaké aplikace a přeneslo mě to do časů Sinclaira, s řádově vyšší rychlostí a pamětí.
Ano, a prave ten nedostatkovy MC6845 byl nahrazen nejprve alternativou od jineho vyrobce a pak taky CPLD implementaci, ale soft nejel a chtel original cip, ale pak jsme na to prisli, ze je tam pouzito neco navic.
Z dnesniho pohledu to uz nekdo prozkumal:
http://81.174.146.201/acorn/The%206845%20CRTC/the_6845_crtc.html
Ted nevim zda ta odlisnost spadala do techto 3 typu, nebo to bylo jeste neco jineho. Ale prislo me to hardcore, ze si nekdo dal namahu navazat DRM k CRTC :-) Nicmene pro servis to byl znacnej opruz.
Z80 byla luxusní a měli tam pár super vychytávek, na svou dobu (index registry, booleovský koprocesor, refresh pro DRAMky, propracovaný interrupty).
Toshibácký klony jako TMPZ84C15 byly v půlce 90. let docela luxusní kousky.
To o jednočipech od Zilogu moc říct nejde, hlavně kvůli mizerné dokumentaci a podpoře. Nechceš trávit mládí hledáním co a jak... Nehledě na to, že poslední revize datasheetů jsou z roku 2011.
Důvod proč CGA měla paletu jakou měla krásně shrnuje toto video
https://www.youtube.com/watch?v=niKblgZupOc
TL;DR - Composite video
23. 12. 2021, 14:01 editováno autorem komentáře
On tam jen vysvětluje, že s kompozitním výstupem to doplní další barvy na úkor horizontálního rozlišení (což umělo i osmibitové Atárko nebo Apple II), ne důvod, proč tam není měnitelná paleta. Stejně dobře by to fungovalo s měnitelnou paletou; samozřejmě ty "nové" barvy by byly taky jiné, což je v pořádku.
Mimochodem, třeba Atari ST mělo také kompozitní výstup, ovšem paletu plně programově měnitelnou.
Diky za super clanek.
Ja bych se zeptal na to svetelne pero - to me kdysi zajimalo. Neni nekde nejaky blyzsi popis jak tohle zarizeni fungovalo, a dalo by se to zprozvoznit i na dnesnich masinach?
Dokonce jsem premyslel o tom jak by mohl fungovat ovladac na dnesnim okenim systemu. A jediny zpusob co me napadl, je pri zmacknuti nejakeho tlacitka testovat (treba pomoci problikavani) proste pixel po pixelu celou plochu focusovaneho okna, aby se dala urcit poloha pera. Ale jednak mi to prijde trochu jako metoda hrube sily a jednak jsem se zatim nikdy nedostal k tomu to vyzkouset prakticky. Ale jak jsi se o tom zminil v clanku, tak jsem si na to vzpomel....
Nefunguje světelné pero tak, že pošle do GPU signál v moment, kdy se sledovaný pixel rozsvítí? GPU ví, jaký pixel teď kreslilo (jaký pixel byl teď rozsvícen paprskem). Proto to nefunguje na LCD (všechny pixely svítí furt). Podle toho, jak to popisuju, to funguje u světlých prvků (černou nemá, jak zjistit). U her na starých konzolích to bylo tak, že po stisku spouště na pistoli vykreslil na moment celou obrazovku nějakou světlou barvou (bílá, červená, ...), takže poznal zamíření na kterýkoli pixel (aby pak udělal efekt výstřelu na správném místě).
Přesně jak píše Ladislav - prostě se na žádost vybarví celá obrazovka a světelné pero (tedy v podstatě fototranzistor + nějaké primitivní zapojení okolo) pošle signál zpět do karty. A ta dokáže přesně zjistit okamžik příjmu - protože 6845 má počitadla adresy znaku + znaku na řádku + počitadlo řádků (a mikrořádků). Adresa znaku, který se právě vykresloval (tedy jehož adresa byla poslána na MA) se zapíše do registrů pro světelné pero.
Je to relativně nepřesné a hlavně si nedovedu představit celej den takto stylusem máchat nad stolem :-)
Je to ukázáno tady někde okolo druhé minuty: https://www.youtube.com/watch?v=Nu-Hoj4EIjU