memxFORTH

Uživatelský avatar
fulda
Příspěvky: 1493
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: 51
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 2528 x
Uživatelský avatar
gilhad
Příspěvky: 285
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 ...)
Uživatelský avatar
gilhad
Příspěvky: 285
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: memxFORTH

Příspěvek od gilhad »

Takže práce na grafické kartě pokračují, už se začíná ledacos rýsovat :)

A s tím pájením pod mikroskopem jdou dělat i značné vylomeniny:

Potřeboval jsem si vytáhnout hodinový signál z Arduino Mega PRO - no, on tam není, ale když propojím dvě nožičky na procesoru, tak ho ven dostanu oklikou, to přece nemůže být až takový problém, vždyť je nedělí ani půl milimetru.

Hrál jsem si s tím asi půl hodiny a docela se mi to povedlo celkem hezky Obrázek

Ten oblouček má 0.4mm, spojuje ty dva piny a ten mezi nima elegantne míjí.

Spojuje sice hezky, ale blbé piny. Měl jsem to spojit o kousek vedle.

No nevadí, tak to oddělám a zkusím znovu (stejně jsem nechtěl jít spát). Oddělání se povedlo, ale znovu už míň - pájka zatekla mezi nožičky kam neměla a nechtělo se jí ven. No naštěstí vlastně teď zrovna tu nožičku mezi vlastně stejně nepotřebuju, tak to udělám jinak.

Sice to není tak hezké, ale zase to pro změnu funguje:

Obrázek

Takže mám 16MHz a můžu konečně začít zkoumat, jestli mi to k něčemu bude (víc viz můj github projekt a zvláště jeho žurnálek :)

A při testování mi velice pomohlo,že na tom běžel FORTH, takže jsem si mohl velice snadno tahat různě za nožičky a číst, co to vlastně dělá.

Kód: Vybrat vše

: x DUP 0 PORTE C! DDRE C! PORTE C! PINE C@ FC AND . ;  ( clear output on PE,
 open another pin for output and set it, read the port, ignore bits 0 and 1 (RX TX) )
: p? PINE C@ 0FC AND . ; ( what is on Port E? )
: p! PORTE C! p? ; ( set port E to value on Top Of Stack (TOS) )
: pp ff PINE C! p? ; ( change all output pins on port E to other values )
bit3 x ( set PE3 - nice, nothing extra happened )
0 p! ( just normal function )
bit7 x ( try the hack )
p? ( WOW we read 1 on PE5 and PE6 and PE7, also Arduino D3 is ON )
0 p! ( and now it is OFF again - nice ! )
Uživatelský avatar
gilhad
Příspěvky: 285
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: memxFORTH

Příspěvek od gilhad »

Tak úspěšně pokračuju na https://github.com/githubgilhad/MegaHomeFORTH projektu, už mi Arduino Mega PRO generuje VGA signál a já budu moct co nevidět začít navrhovat PCB :)
(Barvy jsou ošklivé, protože půlka drátků chybí a tak to chytá veškerý šum okolo místo signálu. Ale s tím se počítá.)

Obrázek
Uživatelský avatar
petr-kubac
Příspěvky: 146
Registrován: 24 úno 2013, 14:43
Bydliště: Prostřední Suchá
Kontaktovat uživatele:

Re: memxFORTH

Příspěvek od petr-kubac »

Fantastické - skláním se před vaší vytrvalostí.

Jen nepatrná poznámka - ten font se mi zdá trochu "únavný na oči", hlavně u velkých písmen, ale nevím jestli nerovnoměrná tloušťka svislých čar je úmysl, nebo je časování VGA tak "natěsno", že to jinak nejde.
"The best computer language is a solder" - "Nejlepší programovací jazyk je pájka" - Bob Pease
Uživatelský avatar
gilhad
Příspěvky: 285
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: memxFORTH

Příspěvek od gilhad »

Nějak mi to nepřišlo tak výrazné, ale zatím jsem rád, že se zobrazuje něco, a chci dát dohromady PCB se všemi možnostmi (i když pak spíš použiju karty dvě, jednu pro grafiku, druhou pro soubory, klávesnici a další rozšíření, protože asi nezvládnu upočítat všechno naráz).
Teď jsem rád, že mi to chodí nějak, čili HW je asi správně a až budu mít to PCB, tak uvidím jak moc budu ještě laborovat s softwarem grafické karty a jak moc si budu hrát se softwarem HD6309 jako hlavního počítače...
Ale dokud nemám klávesnici+monitor+SD, tak ten počítač pro mě není dost kompletní pro užívání ... takže se snažím dostat do stavu, kdy budu mít HW funkční nějak a pak uvidím, kde mě vlastně bota tlačí :)
Uživatelský avatar
gilhad
Příspěvky: 285
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: memxFORTH

Příspěvek od gilhad »

Tak další pokrok v MegaHomeFORTH projektu - navrhnul jsem PCB, PCBway mi ho jako sponsorský dar vyrobila a zaslala zdarma a dnes jsem tam přesadil procesor, krystal a LEDky z Arduino Mega Pro a už mi to něco dělá - jdou tam nahrávat programy a můžu blikat LEDkama (kromě toho, že můžu plně ovládat GPIO piny, pokud si na ně něco připojím)
Obrázek
Obrázek
Uživatelský avatar
petr-kubac
Příspěvky: 146
Registrován: 24 úno 2013, 14:43
Bydliště: Prostřední Suchá
Kontaktovat uživatele:

Re: memxFORTH

Příspěvek od petr-kubac »

Začíná z toho být projekt mezinárodního dosahu ve stylu Commander X16, nebo Agon Light nebo další.....
Zvažte jestli to nechte "komercionalizovat" ve stylu konstruktérů výše uvedených počítačů.

Máte můj neskonalý obdiv !!!
"The best computer language is a solder" - "Nejlepší programovací jazyk je pájka" - Bob Pease
Uživatelský avatar
gilhad
Příspěvky: 285
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: memxFORTH

Příspěvek od gilhad »

Zatím se tím jen bavím :) A kdyby se tím začal zabývat i někdo další, tak bych byl jen rád. Sám na komercializaci nestačím (nebo se mi nechce tomu věnovat energii), navíc je to pořád jen ve stavu zrodu, a funguje to jen "na papíře", a jak tam začínám pájet součástky, tak mi roste seznam toho, co příště udělat nějak jinak ... (jako, nenarazil jsem zatím na nic co by bylo vyloženě špatně, ale taky tam zatím mám jen ten procesor a krystal, tak to moc neznamená).
Jestli mi to bude chodit i s tím 8biťákem (až (pokud) ho postavím), tak by mohlo mít smysl začít přemýšlet, zda to nenabídnout jako stavebnici / hotovou hračku i s nějakým nejzákladnějším SW, ale tak daleko ještě nejsem :oops:
Odpovědět