
# Předhodil jsem FORTHu číslo 0x21 a slovo : DOUBLE DUP + ; jako výsledek zbylo na zásobníku 0x42 - budu to považovat za hexadecimální odpověď

Fulscreen obrazky tu nejdou, tak aspon odkazem z mych stranek: http://mix.gilhad.cz/SW/FORTH/odpoved.png
Kód: Vybrat vše
: ascii 0 BEGIN DUP EMIT 1 + DUP 0x100 - ==0 UNTIL DROP ;
Kód: Vybrat vše
' ascii show
Ptal jsem se i na větší možnosti a dozvídám se, že:Ano, pro jednočipový mikrokontrolér ESP32 existuje implementace jazyka Forth, například ESP32Forth, která vznikla jako spolupráce Brada Nelsona a dalších vývojářů. Tato implementace umožňuje využít Forth jako alternativu k běžně používanému Wiring (Arduino) nebo MicroPythonu. Níže uvádím podrobnosti o hardwarových nárocích a programovacích možnostech: ...
Vypadá to, že Forth se dá použít v ESP32 relativně na vše.Forth na ESP32 nabízí širokou škálu funkcí, které využívají možnosti tohoto čipu. Mezi klíčové patří:
WiFi a BLE (Bluetooth Low Energy):
Implementace Forthu plně podporuje bezdrátovou komunikaci přes WiFi a BLE, což umožňuje vytvářet síťové aplikace nebo zařízení komunikující s mobilními telefony a jinými periferiemi.
Grafické displeje:
ESP32Forth a podobné implementace umožňují připojení a ovládání grafických displejů. Některé projekty dokonce nabízejí grafické uživatelské rozhraní (GUI) přístupné přes WiFi, což je ideální pro vizuální výstup.
Přístup k periferiím:
Forth poskytuje podporu pro různé periferie, například:
SPIFFS (SPI Flash File System) a SD karty pro ukládání dat,
senzory a aktuátory běžně používané v embedded projektech.
Tyto vlastnosti činí Forth vhodným pro vývoj aplikací na ESP32, které vyžadují bezdrátovou konektivitu, grafické rozhraní nebo interakci s externími hardwarovými komponentami.
(A může se stát, že se časem a optimalizacema a používáním dostanu k něčemu podobnému, jako ostatní implementace, nebo k něčemu zcela jinému. Ale i kdyby to bylo naprosto stejné, tak rozdíl bude, že všechna slova tam budou za nějakým účelem, k něčemu jsem je potřeboval a použil a vím, co a jak a proč dělají. Což pouhým převzetím cizího kódu nezískám.)scotws wrote:
... I realized that you don't program in Forth, you use Forth as the foundation of your own programming language based on Forth.
Kód: Vybrat vše
: ascii 0 BEGIN DUP EMIT 1 + DUP 100 - ==0 UNTIL DROP ;
Kód: Vybrat vše
-»: ascii «f_create»
-»0 -»BEGIN [0805][10E7]-»DUP [0805][10E7]-»EMIT [0805][10E7]-»1 [0805][10E7]-»+ [0805][10E7]-»DUP [0805][10E7]-»100 [0805][10E7]-»- [0805][10E7]-»==0 [0805][10E7]-»UNTIL -»DROP -»; -»
' ascii [0805][10DB]-»export
: ascii LIT \'0x00000000 DUP EMIT LIT \'0x00000001 + DUP LIT \'0x00000100 - ==0 0BRANCH \'0xFFFFFFD4 DROP ;
-»ascii
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÄÆÇÈÉËÌÍÏÑÒÓÕÖרÚÜÝÞàáâäåæèéêìîïðñòôö÷ùúüýþÿ-»EXOT
«What?»
«EXOT»
-»EXIT «the end»
Setup done
Kód: Vybrat vše
: ascii \ nove slovo
LIT \'0x00 \ promenna pro cyklus
\ BEGIN slouzi jako navesti
DUP EMIT \ vypis znak
LIT \'0x01 + \ i++
DUP LIT \'0x0100 - ==0 \ ? rovno 256?
0BRANCH \'0xFFFFFFD4 \ kdyz ne, opakuj
DROP ; \ uklid
Kód: Vybrat vše
DEFWORD w_ascii,0,"ascii",f_docol // 000064 : ascii \ nove slovo
.long w_lit_cw // 000065 LIT \'0x00 \ promenna pro cyklus
.long 0x00
// 000066 \ BEGIN slouzi jako navesti
.long w_dup_cw // 000067 DUP EMIT \ vypis znak
.long w_emit_cw
.long w_lit_cw // 000068 LIT \'0x01 + \ i++
.long 0x01
.long w_plus_cw
.long w_dup_cw // 000069 DUP LIT \'0x0100 - ==0 \ ? rovno 256?
.long w_lit_cw
.long 0x0100
.long w_minus_cw
.long w_zero_cw
.long w_0branch_cw // 000070 0BRANCH \'0xFFFFFFD4 \ kdyz ne, opakuj
.long 0xFFFFFFD4
.long w_drop_cw // 000071 DROP ; \ uklid
.long w_exit_cw
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti