Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Forth, za one sa razlčitim rasporedom vijuga...
#21
(08-10-2015, 10:02 PM)mveselic Wrote:
(08-10-2015, 09:52 PM)Macola Wrote: Eh da, još jedna dilema oko kreiranja verijable;

Kod tebe stoji ( variable count ) i pretpostavljam da je greška u kucanju. Posle se pojavljuje reč ( count-- ) a koristi se varijabla ( counter )

Po slobodi sam pretpostavio da je u stvari ( variable counter ) ?

Tj. sa ispravkom greške u kucanju trebalo bi da konačno bude ovo:

variable counter

: count-- ( -- )
 counter @ 0> if -1 counter +! then ;

Samo potvrdi da je ok pa da guramo dalje. Verujem da je nekoliko zainteresovanih za ovo  i da će vredeti tvoje pisanje o tome.
Znam da si preopterećen i da ti ovo zahteva dodatni napor, ali eto ima zainteresovanih.

Tako je! Izgleda da sam malo odlutao pisuci taj primer. Ali dobro je da si tu Smile

M.

Hvala Maki!

Znajući koliko si sistematičan i nepogrešiv čovek, uveren sam da si preopterećen 150% trenutno čim je se tebi dogodio slučajan previd.

Pozdrav

P.S.

Evo gurnuo sam časkom FF5.0 u PIC18F4620 i radi kao metak. :-)

U prethodnom postu sam postavio hex za to.
Reply
#22
Evo i trenutka za pomoć kolegi.

FF5.0 nema definiciju ( 0>). Ima samo ( 0< ) i ( 0= ).

Kako da je napravim, jer korisna je?
Da posmatram Z bit u STATUS registru ili da radim kao sa običnim brojem?

Hvala u napred.
Reply
#23
Mislim da smo prebrzo preleteli neke stvari Smile
Koji su i kako rade stack operatori?
Sta je return stack?
...

Ja bih dodao par linkova sa knjigama:
http://www.wulfden.org/downloads/Forth_R...gForth.pdf
http://users.ece.cmu.edu/~koopman/stack_...tents.html

Imalo je i par online Forth interpretera (za vezbanje) pisanih u JavaScript ali ne mogu da ih nadjem ...
Reply
#24
(08-10-2015, 11:59 PM)mikikg Wrote: Mislim da smo prebrzo preleteli neke stvari Smile
Koji su i kako rade stack operatori?
Sta je return stack?
...

Ja bih dodao par linkova sa knjigama:
http://www.wulfden.org/downloads/Forth_R...gForth.pdf
http://users.ece.cmu.edu/~koopman/stack_...tents.html

Imalo je i par online Forth interpretera (za vezbanje) pisanih u JavaScript ali ne mogu da ih nadjem ...

Cao Miki,

U pravu stack operatori nisu pomenuti osim vrlo povrsno. Moja inicijalna ideja je bila da prvo pokazem stvari koje su slicne drugim jezicima i lako svarljive. Stek gimnastika dolazi uskoro, u sledecim delovima...

Koopmanova knjiga je odlicna za ljude koji zele da znaju vise o stack procesorima. Ja sam je pre nekoliko godina koristio vrlo cesto a i bio u kontaktu sa Koopmanom u to vreme. Prijatan covek.

Pozdrav,
Mladen

PS Mislim da si mislio na: https://github.com/eatonphil/jsforth
Reply
#25
To oko stack sam spomenuo jer sam citao ove gore knjige pa su ih spominjali da postoje dva tipa, data stack i return stack. Kasnije je spomenut i treci tip stacka koji se koristi za floating point i odmah mi je bila ocigledna slicnost sa ARM Cortex M4 jezgrom gde bas imaju poseban FP stack, tacnije Forth bi tu mogao bas "ugodno" da radi.
Dalje je tu spomenuto i debagiranje i tu pocinju malo komplikacije.
Macola je spomenuo da je moguce to raditi direktno u terminalu ali kako slozenost programa raste to i nije bas najzgodnije resenje. Jedna od ocija je da se radi ipak sa kompajlerima ali da se na PC racunaru ima nekakav IDE koji bi bio uvezan preko posebnog porta (seriski ili JTAG) gde bi ta dva dela medjusobno komunicirali. To povlaci za sobom PC software koji nije bas siroko rasprostranjen a neka komercialna resenja nisu ni malo jeftina, cena im je >1000$ za npr SwiftForth.

Da ne budem party-brejkers, za mene izbor programskog jezika bar za embeded platforme nije samo izbor nekog konkretnog jezika vec celo okruzenje koje prati neku SW/HW platformu.
Secam se da je Zoki za svoje potrebe pisao vazdan nekih pomocnih programa, prvo za DOS pa posle za Windows u Delfiju i to mu je oduzelo ogromno vreme, da ne spominjem mlacenje sa dubiozama oko Win API i to sve samo za neke alatke koje prakticno nemaju direktno veze sa programom za MCU.
Ako sad ima tako nesto a da bude jos i free valjalo bi to ovde spomenuti.
Reply
#26
Samo da se javim da pratim temu Smile Odlicna je, hvala!

Interaktivni Forth shell u JS (direktni link): http://codepen.io/eatonphil/full/YPbWVN/
“If you think you are too small to make a difference, try sleeping with a mosquito.” - Dalai Lama XIV
Reply
#27
(08-10-2015, 10:24 PM)Macola Wrote: Evo kog zanima Flash Forth 5.0 za PIC18F4620.

Dovoljno je uneti pomoću nekog programatora poput ICD", ICD3, Pickit2, Pickit3 ili sličnog FF_UART.hex iz priloga i na PIC postaviti RS232 sa MAX232 i kablom se povezati sa PC.
Ima na netu gomila o tome kako zakačiti MAX232 na 18F seriju:
https://www.google.rs/search?q=pic+18f+uart&source=lnms&tbm=isch&sa=X&ved=0CAcQ_AUoAWoVChMItqGm37efxwIVJXdyCh29DQUF&biw=1024&bih=628

Tera term se može skinuti ovde:
https://www.google.rs/search?q=tera+term&ie=utf-8&oe=utf-8&gws_rd=cr&ei=mBTJVbfUE8nMygPK9ZmoAQ

Terminalče se diže munjevito i treba ga setovati tako da mu serijska komunikacija bude: COMx (po potrebi korisnika), Baud rate 38400, data 8 bit, parity NONE, Flow control NONE, font "Terminal".

Trenutak po uključenju napajanja PIC na Tera term će se pojaviti poruka: "FlashForth PIC18F4620  19.01.2015"

Po pritisku enter:  "ok<#,ram>"
I po naredbi "words" sistem će izlistati listu reči od kojih se sastoji ovako netaknut Forth sistem.
Evo fotke o tome.



Inače, sistem startuje kao munja.

Evo i hex fajla za PIC18F4620 (ko ga ima na lageru):

 


Sada već možemo interaktivno vežbati...

Pre neki dan sam bas to probao, manji neki PIC je bio u pitanju poput F2550, dal' bese 2kB ceo Forth, zaboravih … Smile
UART terminal preko USB je na 38.4kBaud, sa kolegom sam nesto oko SPI testirao …
I to radi vrlo lepo, ceo "IDE" je u terminalu Wink
Reply
#28
Noge kako! :-)
Reply
#29
(01-19-2016, 01:42 AM)mikikg Wrote:
(08-10-2015, 10:24 PM)Macola Wrote: Evo kog zanima Flash Forth 5.0 za PIC18F4620.

Dovoljno je uneti pomoću nekog programatora poput ICD", ICD3, Pickit2, Pickit3 ili sličnog FF_UART.hex iz priloga i na PIC postaviti RS232 sa MAX232 i kablom se povezati sa PC.
Ima na netu gomila o tome kako zakačiti MAX232 na 18F seriju:
https://www.google.rs/search?q=pic+18f+u...24&bih=628

Tera term se može skinuti ovde:
https://www.google.rs/search?q=tera+term...ygPK9ZmoAQ

Terminalče se diže munjevito i treba ga setovati tako da mu serijska komunikacija bude: COMx (po potrebi korisnika), Baud rate 38400, data 8 bit, parity NONE, Flow control NONE, font "Terminal".

Trenutak po uključenju napajanja PIC na Tera term će se pojaviti poruka: "FlashForth PIC18F4620  19.01.2015"

Po pritisku enter:  "ok<#,ram>"
I po naredbi "words" sistem će izlistati listu reči od kojih se sastoji ovako netaknut Forth sistem.
Evo fotke o tome.



Inače, sistem startuje kao munja.

Evo i hex fajla za PIC18F4620 (ko ga ima na lageru):

 


Sada već možemo interaktivno vežbati...

Pre neki dan sam bas to probao, manji neki PIC je bio u pitanju poput F2550, dal' bese 2kB ceo Forth, zaboravih … Smile
UART terminal preko USB je na 38.4kBaud, sa kolegom sam nesto oko SPI testirao …
I to radi vrlo lepo, ceo "IDE" je u terminalu Wink

Koliko sam ja razumeo ti si probao ovo preko usb a ne preko RS232 porta.
Predpostavljam da si koristio neki USB to UART converter.
Reply
#30
Milane,

Kada skineš FF5.0, imaš tamo hex za PIC-eve sa USB. Ne treba njima UART.
Reply
#31
Lapsus! Imaš .mcp projekat "FF_USB" koga treba kompajlirati u MPLAB i onda ćeš imati taj hex.
Reply
#32
(01-19-2016, 12:13 PM)Macola Wrote: Milane,

Kada skineš FF5.0, imaš tamo hex za PIC-eve sa USB. Ne treba njima UART.

Pa to je odlicno za one koji nemaju RS232 na racunarima.
Znaci ubaci se programatorom HEX u MCU to mu dodje kao neki (bootloader) i onda se programi pisani u Forth samo preko USB ili RS232 spustaju na MCU bez programatora.
Reply
#33
He he,

Ne "spuštaju se" već ih pišeš upravo u PIC, koji ih istovremeno kompajlira i (ili) izvršava. :-)

Računar je samo "glupavi" terminal koji šalje ili prima slova u ASCII obliku.

U PIC-u je onda Fort sistem, koji je kompletan razvojni sistem, a terminal možeš podići sa čega hoćeš, možda i sa mobilnog telefona.

Nikad ti više ne treba ni jedan dodatni alat, osim PIC sa Forth sistemom i bilo čega na čemu možeš aktivirati terminal, od matorog 286, preko boljih mobilnih telefona, do oktal core mašina.

Jedina neophodna stvar od "treće strane" je programator za PIC, kojim jedan put moraš upisti Forth. Međutim, oni koji su već razgazili Forth, ladno će napraviti sopstveni programator za PIC, i to u naravno Forth-u.
Reply
#34
Možeš napisati željeni kod u bilo kom tekstualnom editoru, na primer u Notepadu, onda ga iskopiraš u terminal, koji ga ispali ka PIC.
U PIC se obavi kompajliranje i izvršenje tog koda.

A možeš pisati direktno u terminalu i kompajlirati liniju po liniju, ako treba i sa trenutnim izvršavanjem.

Sa terminala-konzole, uvek možeš na primer uključiti direktno neki pin, ili ga isključiti, ukoliko mu znaš lokaciju.
Onda možeš na terminalu izlistati bilo koje ćošence, do poslednjeg bita, PIC-ovih svih memorijskih lokacija, od EEPROM, preko FLASH i SFRR, pa do lokacija RAM.

Onda možeš pisati neki blok koda za vreme dok ti radi neki program, i u istom trenutku testirati taj blok. I tako dalje i tako dalje...

Onda na primer, možeš birati da li ćeš taj blok koji testiraš obavljati isključivo u ramu, pa ako ti se svidi onda mu zvekneš naredbu da se smesti u FLASH kao proveren deo koda.

Imaš uvek na raspolaganju naredbu marker koja će dozvoliti da besomučno maltretiraš, pišeš, brišeš, testiraš neki blok koda, a ispred tog markera će sve biti nevino i netaknuto.

Ima mnogo toga šta se može tim sistemom, a drugim ne može.

Forth bukvalno nije jezik, već meta jezik. Forth može prekompajlirati i sam sebe.

Sam Forth je tako kako stoji i objektno orijentisan sistem i onaj običan, upravo kako ga ti formiraš. Njegova funkcionalnost se proteže od asemblera pa do najviših jezika, istovremeno.
Reply
#35
Evo Miki me može ispraviti ako sam negde pogrešio u pisanju.
Reply
#36
(01-19-2016, 01:11 PM)Macola Wrote: Možeš napisati željeni kod u bilo kom tekstualnom editoru, na primer u Notepadu, onda ga iskopiraš u terminal, koji ga ispali ka PIC.
U PIC se obavi kompajliranje i izvršenje tog koda.

A možeš pisati direktno u terminalu i kompajlirati liniju po liniju, ako treba i sa trenutnim izvršavanjem.

Sa terminala-konzole, uvek možeš na primer uključiti direktno neki pin, ili ga isključiti, ukoliko mu znaš lokaciju.
Onda možeš na terminalu izlistati bilo koje ćošence, do poslednjeg bita, PIC-ovih svih memorijskih lokacija, od EEPROM, preko FLASH i SFRR, pa do lokacija RAM.

Onda možeš pisati neki blok koda za vreme dok ti radi neki program, i u istom trenutku testirati taj blok. I tako dalje i tako dalje...

Onda na primer, možeš birati da li ćeš taj blok koji testiraš obavljati isključivo u ramu, pa ako ti se svidi onda mu zvekneš naredbu da se smesti u FLASH kao proveren deo koda.

Imaš uvek na raspolaganju naredbu marker koja će dozvoliti da besomučno maltretiraš, pišeš, brišeš, testiraš neki blok koda, a ispred tog markera će sve biti nevino i netaknuto.

Ima mnogo toga šta se može tim sistemom, a drugim ne može.

Forth bukvalno nije jezik, već meta jezik. Forth može prekompajlirati i sam sebe.

Sam Forth je tako kako stoji i objektno orijentisan sistem i onaj običan, upravo kako ga ti formiraš. Njegova funkcionalnost se proteže od asemblera pa do najviših jezika, istovremeno.

Prosto neverovatno ko bih reko da je sam PIC sposoban da uradi kompajliranje.
Ovo je stvarno mocno programiranje ja do danas nisam znao na kom principu to radi.

Za testiranje programa pisanih u Forth nasao sam zanimljive developmen ploce:

http://www.ebay.com/itm/Mini-System-PIC-...Sw4UtWTk-Y

http://www.ebay.com/itm/Bolt-18F2550-PIC...Rwdfp3gy6w
Reply
#37
Kao što svojevremeno pomenuh u temi:

- Forth je moćan sistem,
- u jednom jedinom MCU se ima čitav i kompletan razvojni sistem koji podleže uticaju bilo kog tekstualnog terminala, a da taj ima isti oblik komunikacije koji zahteva dotični Forth sistem, Kao što pomenuh plastično, može se komunicirati sa Forth kontrolerom pomoću, recimo Komodora 64 :-),
- ne mora se više kupovati ničiji kompajler i dodatni pribor, niti koristiti tuđe i zatvorene biblioteke,
- ima postfiks konotaciju, na koju se nije lako navići, poput vožnje u Britaniji na primer, ali kada se navikne i to postane model razmišljanja, onda to nije nište teže od bilo kog drugog oblika programiranja,
- može se imati potpuna kontrola do poslednjeg bita u memorijskoj mapi, i poslednjeg detalja hardvera, takođe se sve od toga u bilo kom trenutku može izlistati na terminal(če),
- sledeći je po konzumaciji koda, odmah posle asemblera,
- izuzetna brzina izvršavanja sa relativno niskim klokom,
- Može prekompajlirati sam sebe, što ga ne stavlja na listu popularnih načina programiranja, jer programer veoma lako može učiniti svoju firmu vrlo zavisnom od njega,
- savršen je za projekte koji se moraju modifikovati i testirati "u letu", tj. tokom rada,
- definitivno je najbrži razvojni sistem jer se odmah i interaktivno testira napisani kod,
- poput na primer funkcije u C, osnovna jedinica Forth-a je REČ (i na početku bi reč :-), samo za razliku od nedovoljno savršene C funkcije, koja može vratiti samo jednu vrednost, REČ u Forth može primiti i vratiti neograničen broj vrednosti (stvar veličine stack-a), takođe REČ u Forth može biti od pokretanja jednog pina do čitavog programa u toj reči.
- veoma lako se formiraju "vezni stubovi" pomoću kojih se "amputiraju" i umeću čak i glomazni delovi koda, a da pri tom ne naruše opštu strukturu ostatka,
- Forth nije jezik već svojevrsna filozofija, i težak je za učenje jer malo traži navike koje su maltene suprotne od uobičajenih kod ostalih metoda,
-potpuno je jedinstven i dozvoljava apsolutnu individualnost sistema, tj. može se imati sopstveni Forth koji ne podleže ni jednom standardu, osim sopstvenom,,
- nije u široj i komercijalnoj upotrebi, osim: svemirskih operacija, vojnih potreba, ultrabrzih i ultraelastičnih mernih aplikacija, primarnih i vitalnih podsistema kod personalnih računara i tako te sitnice...,
- i pored nekomercijalnosti ga rado koristi vojska i na primer NASA jer oni bar lako programera nateraju na lojalnost :-),

Šta više reći?
Ko se nije susreo sa tim u nekom ozbiljnijem obliku od "helou world", ne može ni znati, a ni pretpostaviti koja snaga leži iza toga, i naravno može imati predrasudu pa čak i strah od toga.
U najvećoj većini slučajeva (pa i kod mene na primer) ljudi se teško odriču starih navika, i nikako da nađu razloga i opravdanja za utrošak malo više vremena i ponovno ozbiljnije učenje, bez obzira na izuzetan krajnji rezultat (a moja malenkost, govedo, je imala besplatno na raspolaganju dva vrhunska učitelja na tu temu).

Poznavao sam Mikijevog oca, čika Zokija, koji je bio "zverka" u Forth i čuda činio sa par kilobajta, takođe znam Mladena Veselića koji je isto "mag" u Forth-u, i za koga znam da je toliko preopterećen da nema vremena za forum.
Takođe znam kakva je čuda Mladen napravio upravo u Forth, a i dan danas ih vrlo aktivno pravi i to za veoma ozbiljne i veoma složene aplikacije .

Sistem je ludo zanimljiv, samo ko bude spreman da intenzivno uči i potroši vremena na Forth.
Već posle prvih jednostavnih naprava se neće više nikad pokajati zbog utrošenog vremena.

Ako mislite zaraditi novac pomoću Forth, da, može, ali ako proizvodite i prodajete naprave pokretane njim.

Ako mislite prodati svoje programersko znanje Forth, kao programersku uslugu, onda zaboravite jer, kao što se većina ljudi plaši nepoznatog, tako i Forth unosi neopravdan strah onima koji se nisu dublje zakačili sa njim, i naravno da je teško kupcu programerskih usluga objasniti bilo šta, ukoliko tome ne zna ništa baš ( a mali broj ljudi zna o tome), i ne može držati pod kontrolom svoje osoblje, i naravno učiniti ga trenutno zamenljivim nekom drugom osobom...

Pozdrav

P.S.

I da ne zaboravim najvažnije: čak i na klasičnim RISC i ARM MCU, koji apsolutno nisu pravo okruženje za Forth, postižu se sjajni rezultati.

A tek se oni pravi rezultati, poput uključivanja Nitro pogona na autu (NOS), postižu sa pravim stack procesorom koji je prirodno okruženje za Forth.
E tu tek dolazi do izražaja moć te metode.
Reply
#38
Ima jedan interesantan primer a inace koristan Bresenham-ov algoritam za linearnu interpolaciju, napisan u 59 programskih jezika, a ima i u Forth-u …
http://rosettacode.org/wiki/Bitmap/Brese..._algorithm
Reply
#39
Napravili su Forth i za STM32 ...
http://hackaday.com/2017/01/27/forth-the...ore-241542
Reply
#40
Quote:Poštovani,

pratim ovu stranicu i vaš forum. Nakon dužeg praćenja tema na Forth programski jezik odlučio sam ga naučiti u potpunosti. Naravno ukoliko to bude moguće ...

Nov kolega na forumu, nadam se da ce mo se fino ispricati i dotaci neke nove teme oko Forth na ARM-u! Wink

Inace evo ovde Forth na Blue Pill Smile
A milina je sto ima i za MSP430FRxxxx koji nativno u sebi radi sa FRAM pa mogu da se menjaju interne Words!

http://mecrisp.sourceforge.net
https://jeelabs.org/article/1705b/
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)