Stránka 1 z 2

memxFORTH

Napsal: 26 dub 2025, 13:13
od gilhad
Rozhodl jsem se udělat si něco na "tahání za nožičky a čtení výsledků" pro arduina, abych snáz odhaloval chyby zapojení. Jenže to chce nějakou interaktivní slupku, protože pořád něco kompilovat a nahrávat není moc ono. Zvlášť pro jednorázové věci, jako "a nevypadnul mi nějaký drát na breadboardu?" Takže jsem se rozhodnul dát si tam něco jako FORTH, protože to by se mohlo vejít a dát ovládat.

Protože RAM je vždycky málo (i když 2kB by měly být dost pro každého), tak toho chci narvat co nejvíc do FLASH. Zejména definice všech slov, která tam budu chtít mít. A na druhou stranu bych rád definoval nová slova kdykoli mě napadne, tedy ukládal je do RAM a to znamená nějaký systém, jak tyhle dvě oblasti propojit.

Řešením se ukázalo použít __memx ukazatele a tady je "technologická ukázka", že by tak něco jako FORTH udělat šlo

https://github.com/githubgilhad/memxFORTH-init

Budu na tom pokračovat dál spíš ve formě jiného projektu, protože tam už se ty __memx ukazatele totálně ztratí pod náporem jiné funkčnosti, tak tohle nechám jako spíš nevelkou ukázku, že to vůbec nějak jde

Re: memxFORTH

Napsal: 27 dub 2025, 11:13
od cube
Forth je cool :) Jen mě vždycky bolí mozek z toho pamatovat si co mám na stacku.

Ty __memx pointery se přeloží na 24bit a podmínku při každém použití, že? Znamená to že forth word musí být taky 24bit? A pokud ano, nebylo by efektivnější vynutit zarovnání všech věcí v paměti na 2B, mít a držet RAM/flash ve spodním bitu?

Re: memxFORTH

Napsal: 27 dub 2025, 11:14
od cube
(vždycky = 3x když jsem se v tom něco snažil dělat :) )

Re: memxFORTH

Napsal: 29 dub 2025, 05:49
od gilhad
__memx jsou 3byty a testuje se vrchní bit, jestli se použije LD nebo LPM.
A protože se to chystám portovat i na atmega2560, tak to v horním bytu bude trochu složitější, než jen horní bit.
Ale popravdě řečeno ještě nevím, jak tohle pojmu. Uvidím, až tam dojdu. Dnes to umí "nějak" tohle:
WORDS TEST DEBUG TROUBLE DOUBLE QUIT INTERPRET BRANCH . NUMBER , WORD KEY EXIT + DUP LIT BASE STATE LAST

a dospěl jsem k přesvědčení, že když program napíšu správně a nefunguje, tak za to může překladač :)

Re: memxFORTH

Napsal: 02 kvě 2025, 08:30
od gilhad
A když za to může překladač, tak je ho potřeba opravit :)

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119989

Re: memxFORTH

Napsal: 02 kvě 2025, 13:00
od tomasp
No ale postavili se k tomu čelem a opravili to svižně.

Re: memxFORTH

Napsal: 17 kvě 2025, 02:28
od gilhad
Ten počítač za cenu oběda, co jsem ukazoval na Make Faire už kromě honění hadů začíná dělat i věci opravdu zajímavé https://github.com/githubgilhad/NanoHomeFORTH

Teď na něm běží memxFORTH, co si píšu, má kolem stovky primitiv a 13 slov kompozitních (všechno ve FLASH) a nová slova už jdou zadávat přímo z klávesnice na obrazovku, debugovat a používat. (Už ten FORTH dost začínám debugovat v něm samém)

Tady jsem se rozhodl si vykreslit vestavěný font (před mezerou mám dvojité zavorky a šipečky), tak jsem si na to napsal slovo

Kód: Vybrat vše

: ascii 0 BEGIN DUP EMIT 1 + DUP 0x100 - ==0 UNTIL DROP ; 
, prohlídnul si, jak se přeložilo

Kód: Vybrat vše

 ' ascii show 
a rovnou i spustil. (Z předchozího ladění mi nahoře ještě běží ukazatele aktuální volné paměti a jejího minima, updatované při každém framu)
Obrázek
Monitor, klávesnice a počítač, co víc člověk potřebuje?

Re: memxFORTH

Napsal: 19 kvě 2025, 12:32
od petr-kubac
Koukal jsem na GitHub a nevím co mě fascinuje více jestli FORTH, nebo ultra jednoduché, ale funkční (polo-softwarové) generování VGA
A taky mám dotaz - kolik pro Forth zbyde času - uvážíme-li, že posuvný registr pro VGA je třeba neustále krmit.

Re: memxFORTH

Napsal: 19 kvě 2025, 12:54
od petr-kubac
Odpovídám si sám - 10% zbývá na FORTH. Tipuji že jede jen během HSYNC + VSYNC ???

A to jsem si myslel, že moje "stereofonní ultrazvuky" kde bylo 50 taktů na zpracování jednoho vzorku z AD převodníku - byly "natěsno"

Re: memxFORTH

Napsal: 19 kvě 2025, 13:13
od Dex
A kdybys chodil občas na RoboDoupata nebo třeba na pražský Maker Faire mohl jsi to vidět naživo ;)