memxFORTH

Uživatelský avatar
fulda
Příspěvky: 1484
Registrován: 04 led 2016, 16:18

Re: memxFORTH

Příspěvek od fulda »

petr-kubac píše: 19 kvě 2025, 12:54 Odpovídám si sám - 10% zbývá na FORTH. Tipuji že jede jen během HSYNC + VSYNC ???
To je jen otázka vnímání velikosti vesmíru. Třeba někteří do toho času nacpali emulátor PMD85. Vlastně ne, tam skládají jen composite video.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
nostalcomp
Příspěvky: 35
Registrován: 24 říj 2023, 18:45

Re: memxFORTH

Příspěvek od nostalcomp »

petr-kubac píše: 19 kvě 2025, 12:54 Odpovídám si sám - 10% zbývá na FORTH. Tipuji že jede jen během HSYNC + VSYNC ???
Ještě k tomu připočti bordery. Samotné synchropulsy moc času neposkytují. Ale pokud uvažujeme PAL video, tak se z jednoho TV mikrořádku (64uS) využívá zpravidla něco kolem 40uS na zobrazení dat a tedy 24uS zbývá (obraz je zateměn a procesor se může věnovat něčemu jinému). U Didaktiku M byl obraz jen tuším 32uS široký (proto byl v podstatě čtvercový a ne obdélník), čili v každém řádku zbývá 32uS, ale tam se CPU o zobrazení nestará, na to má ULU.

Ve vertikálním směru je to ještě lepší. Bez nutnosti nějakého centrování je při neprokládaném PAL TV zobrazení 100% viditelných nějakých 256 řádků z 312 (někdo počítá až do 320, zejména u čistě HW zobrazovacích jednotek). Čili máme k dispozici minimálně 56 TV mikrořádků á 64uS, tedy minimálně 3,584 mS, kdy se procesor může věnovat něčemu jinému. A to je spooooousta času :) Ačkoliv je nutné přiznat, že během těch borderů si procesor musí "odskočit" na generování (alespoň počátek a konec) těch synchropulsů.

U VGA je to trochu větší honička.

Kromě zmiňovaného emulátoru PMD85 v Atmeze, je celá řada počítačů, kde se CPU přímo podílí na zobrazení a další věci (klávesnice a obvykle BASIC) zpracovává ve výše uvedených prodlevách. A to při podstatně nižším taktovacím kmitočtu CPU, než má to dnešní Arduino. Namátkou: ZX80/81 (Z80 3,5MHz), COMP+JuTer (UB8830 8MHz). Všechny jsem studoval a stavěl jako repliky.

Pak jsou počítače, kde se sice CPU přímo nepodílí na zobrazení, ale při zobrazování je stejně odstaven, páč zobrazovací obvody skrze DMA vyčítají data ze společné RAM a procesor stojí. Typicky ruský RADIO-86RK, Cosmac VIP, nebo vzorové Intelácké Low cost terminály se zobrazovacími kontroléry 8275 nebo 8276. U toho terminálu s 8276 je jako CPU použit pomalý 8051 a během zobrazení přímo sype data do 8276 bez nutnosti použití DMA kontroléru 8257. Kromě toho pochopitelně obsluhuje maticovou klávesnici a sériovou linku. Já to zkoušel a to dokonce ve VGA režimu. Fungovalo to, ale byl to fakt kalup :)

Na obrázku níže je TV video generované přímo klasickým jednočipem 8051 čistě softwarově bez dalšího HW v podobě posuvných registrů a podobně. Jednočip má krystal 24MHz a strojní takt (/12) je tedy 0,5uS. Nejrychleji jsem dokázal vysouvat data rychlostí 1,5uS/pixel. Čili mohu dosáhnout "úctyhodného" rozlišení kolem 25px v ose X :) Nápis na obrázku má na šířku 20px. Pokud bych nebyl maximalista a vertikálně zobrazoval třeba jen kolem 200 mikrořádků (ZX 80/81/Spectrum zobrazují jen 192 a stačí to), mám hafo času něco počítat. Uvažoval jsem o Tetrisu a Videostopu, ale pak mě to nějak přestalo bavit... Barevné zobrazení je možné jen díky připojení do SCARTu. Do RCA Cinche zobrazuje jen v úrovních šedi (pokud se nepřipojí externí enkodér barev).

8051 SW PAL TV video
8051 SW PAL TV video
ahoj.jpg (7.29 KiB) Zobrazeno 826 x
Uživatelský avatar
gilhad
Příspěvky: 276
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: memxFORTH

Příspěvek od gilhad »

Asi 90% sežere zobrazování, interrupty jsou pro Vsync a pro zobrazení řádků.

Ve zbytku jede program (na který tím pádem zbyde asi tak 10%), který o těch přerušeních "neví a nestará se" a prostě zapisuje do "VideoRAM" jako do obyčejného pole znaků a ono to pak nějak samo ... :)

Problém je, že na FORTH tam zbývá dost málo RAM, takže uživatel může nadefinovat jen pár slov. Pokusím se to zobrazování přeportovat na ATmega2560 (jako je v Arduino Mega), ale budu tam muset udělat vlastní PCB, protože potřebuju ten pin se systémovýma hodinama (a vytáhnout i ostatní piny taky neuškodí, a rozšířit paměť a ... a ...)
Odpovědět