ten interlacing, i kdyz trosku jinak podanej, ma i ZX Spectrum. A je to fakt dost na hlavu. Na ZX Spectru to jde omluvit tim, ze musi sahat do atributove pameti a tak to jeste trosku dava smysl. Na CGA moc ne :)
Takze si v IBM rekli, ze na EGA to opravi, jenze se zasekli na svem predchozim rozhodnuti, ze na bitmapovou grafiku je jen jeden segment. Takze pro zmenu vymysleli planarni grafiku. Clovek by rekl "ok, ma to i Amiga, takze az se u IBM rozhodnou pro 256 nebo 4096 barev, bude to jen rozsireni toho vybiraciho registru"*. Ale ne, tam to zase prehodili na chunked grafiku. Skoro by vyvojar v te dobe brecel - musel si delat graficky knihovny minimalne ve trech verzich ;{
* ted to nedam z hlavy, ale stejne v tom registru nechali jen 4 bity na vyber pixel plane, takze zase malo. Moc planovani do budoucna tady IBM tedy nepredvedla.
Díváš se na to úplně špatnou optikou.
PCčko bylo až do začátku devadesátek profesionální pracovní a vědecký stroj. Šlo o grafy, jednoduchou komerční grafiku, křivky a maximálně mapy.
Na to všechno CGA/EGA/VGA stačila.
Hrálo se na domácích osmibitech, Amigách 500 a výš, Atari bylo spíš na práci. Na PC sice byly nějaké hry, ale to byl jen vedlejší efekt.
tak CGA s 200 radky tedy nestacila :) Ti lidi, co mastili dokumenty, delali ve spreadsheetu (Visicalc atd.), tak meli MDA.
A ta zase byla dost problematicka v CR (nabodenicka, nutno menit EPROM), ale to se vyresilo - vetsina lidi ani firem na takove PC stejne nemela valuty :)
EGA/VGA, to jo, to na obchodni grafiku stacilo, i AutoCAD se na tom uzivil (286 idealni s FPU).
ano, pro profi pouziti se okolo 1984/1985 pocitalo se 400 nebo 480 radky. CGA je ovsem starsi, vydana spolecne s prvnim PC uz v roce 1981.
Ovsem CGA byla skutecne hodne spatna i na dobu vzniku. I proto byla tak popularni karta Hercules (1982). To je zajimave - karta, kterou IBM nikdy neuznala, nikdy vlastne nebyla soucasti standardniho BIOSu, a pritom hodne popularni (bezela na MDA monitorech a pritom mela na svou dobu hodne jemnou grafiku).
Kdyby to nabídli jako kartu do Amigy tak by to nebylo k ničemu. Hry na těhle počítačích byly zásadně vyvíjené podle "nejmenšího možného jmenovatele" a už z principu v podstatě nikdy nevyužívaly žádná rozšíření. Na Atari ST pro jistotu až na pár světlých výjimek nevyužívaly ani blitter a stereo PCM zvuk, ačkoli pozdější série (tuším STE nebo STF, už si nepamatuju) už měly obojí v základní konfiguraci...
Navíc pokud se pamatuju Amiga 1200 měla jenom jeden slot pro rozšíření, takže uživalelé by museli neustále měnit karty podle aplikace, kterou zrovna chtějí používat.
Měli nabídnout 8bpp chunky režim v rámci základních fičur chipsetu AGA.
Diky za clanek, to je hodne prace nez clovek nakresli jeden obrazek...
Ja jsem mel SAM coupe (vlastne porad mam, v krabici), nasledovnik ZX. Preruseni pro vertikalni zatemneni se tam taky dalo chytat a pak se kreslilo na obrazovku, treba takovy ten posuvny text dole kde jste psali koho vseho zdravite. Programatori se predhaneli kdo zvladne za tu 1/50s (snimek v PAL) nakreslit vetsi pismenka...
A taky jsem prenasel na SAMa snimky z Amigy, uplne neco podobnyho. SAM mel teda lepsi grafiku, ale zas je to rok 1990...
Pokud budu mluvit o všech 286 a prvních 386 (což je třeba efektivně 8let dlouhá doba), pak je DMA rychlejší a programátoři tu techniku stejně museli zvládnout, protože jak jste chtěli utilizovat zvukovou kartu, bez DMA to nešlo. Navíc to umožňovalo některé zajímavé efekty.
8237 DMA má 4 kanály 0 až 3 (tedy i na XT), PC-AT už mělo v kaskádě tyhle čipy dva, kdy první pracoval se šířkou 8bit a druhý 16bit, 386ka už byla dál.
Tak houby, houby, moje vidění světa je pokřivené realitou.
1978 .... Intel 8088/8086
1982 .... Intel 80286
1985 .... Intel 80386
1989 .... Intel 80486
1993 .... Intel Pentium (a rozpad ČSFR)
1995 .... Intel Pentium II
Na konci roku 1993 vyšel DOOM1, který v principu pro chod potřeboval 486ku, protože na 386ce nejede moc plynule...
Kdyby nebyla 486 běžně dostupný procesor, vydání by pozdrželi nebo hru lépe optimalizovali.
Jo jeste dodam dulezitou vec. Radic DMA mel adresove registry jen 16bitove, takze do IBM PC dodelali 4 bitove latche (zachytne registry) pro horni 4 bity 20 bitove adresy (pro kazdy kanal 1 latch). Takze je teoreticky mozne pracovat s bloky 64 kB (to je fajn), ale musi byt zarovnane prave na 64 kB. U Video RAM to nevadi, u naseho zdrojoveho obrazku uz jo a chce to lepsi pripravu dat.
S tím DMA si nejsem tak jistý jestli to jde. V PC je použit obvod 8257 v pozdějších pak dva zapojené kaskádovitě. Podle mne DMA umužnuje pouze přenos mezi periferií (signály IOR, IOW) a pamětí (signály MEMR, MEMW). A jestli se nepletu tak Videoram v grafické kartě je zapojena jako klasiká pamět.
Procesor po dobu přenosu DMA nemůže dělat nic užitečnějšího, protože nemá sběrnici a jen čeká až DMA skončí. Přenos je rychlejší už jen z toho principu, že po sběrnici jdou jen data. Pokud by to dělal procesor pomocí smyčky, tak musí načítat neustále dokola instrukce. Odhaduju to na poměr instrukce : data - 5 : 1.
V případě použití "rep movsw" mi odpadne načítání instrukce, a tak by to mohlo být srovnatelné s DMA
Jestli mám v myšlenkách někde chybu, opravte mne, rád se nechám poučit
DMA řadič na PC měl čtyři kanály 8bitové a čtyři 16bitové na 4.77MHz a 1.5MB/s max.
Pro kopírování bloku dat byly potřeba dva DMA kanály, ale na XT a 286 byl jeden kanál vyhrazený pro refresh DRAM. Jeho přeprogramování vedlo na chybu parity paměti.
386 už uměla 32bitové přenosy, kopírování RAM bylo mnohem rychlejší přes CPU než přes pomalé DMA.
16bit DMA na ISA sběrnici se používalo na sekvenční přenos dat do/ze zvukové karty.
PCI sběrnice už uměla "bus master" přímý přístup do paměti kamkoliv, bez asistence DMA řadiče.
Na 286 přeprogramování kanálu 0 vedlo na chybu parity paměti, protože se tím zastavil refresh DRAM. Osobně vyzkoušeno někdy v roce 93-94.
Na 386 byl asi refresh řešený jinak (a nebo se jen nepouživaly paritní paměti).
Na 386 bylo REP MOVSD, šlo kopírovat i delší bloky než 64KB.
Na 486 už se zneužívalo FPU pro memcpy po 64bitech.
S DMA pro zvukovku problém nebyl.
DMA měl umět i paralelní port, ale nepodařilo se mi to rozchodit.
Nevím do jaké míry DOSBox emuluje low level hardware, který se přímo nepoužíval v gameskách.
ISA-DMA paměť->paměť bylo důležité i pro využití UMB, hlavně před hromadným využíváním chytrostí jako Dos4GW.
"As I said ISA-DMA is critical in the created UMBs, so SMARTDRV's floppy cache may not work if it is loaded high."
https://www.uwe-sieber.de/umbpci_e.html
Mluvíme o době, kdy bylo 1 MB fakticky maximum, kdy někdo měl jen 512 kB a ti majetní 1MB. Dokonce první 386ky se často expedovaly jen s jedním MB RAM.
Děkuji za daší článek. Ani jsem do ted nevěděl, že 8086 má instrukce pro blokové přenosy. Přiznávám, že zas tak pečlivě jsem jí nestudoval a v poslední době jsem učil základy JSA na střední škole a tam jsem instrukční sadu 8086 úmyslně hodně zkrouhl na "základní" instrukce (nebylo mým cílem vychovávat programátory 8086 ale na příkladu 8086 - PC bylo dostupné - ukázat základy programování v assembleru. Od příštího roku už to budu uřit jen na AVR).
Napadlo mne, co kdyby byl výchozí obrázek uložen ve formátu liché řádky a za ním pak sudé? Potom by vykrelení mohlo být realizováno jednou (možná dvěma) instrukcema blokového přenosu.
Jojo, přesně tohle jsem před lety řešíval. Problém se sněžením se ale týkal jen prvních sérií CGA karet. U pozdějších už to nebylo a u klonů také většinou ne. Já měl počítač PP-06, což je československý klon PX/XT se sovětským ekvivalentem i8088. Zajímavé je, že tenhle počítač má hardwarovou úpravu CGA karty, kdy je originální znaková sada nahrazena českou sadou, ovšem nikoliv Latin2, ale kód bratří Kamenických.
Variantou čekání na paprsek by také bylo přenastavit systémový časovač a sesynchornizovat ho s obnovovací frekvencí CGA. Pak by bylo přerušené generované s IRQ 0.
Ale na druhou stranu, ve chvíli, kdy je k dispozici jen jedna stránka videopaměti (týká se grafických režimů, ne textových), tak podobná sofistikovaná řešení stejně ztrácí smysl.