FORTH > volt: Vago-maro gep vezerlese DELPHI-ben

Istvan Retaller istvan.retaller at evoran.hu
Sun Mar 16 11:59:41 CET 2003


2003.03.16. 9:37:55, Gyapai Jozsef <gyapo at axelero.hu> wrote:

>
>> > Gepvezerlesre, folyamatiranyitasra azota sincs jobb nyelv.
>
>Miert? A gepi vagy az emberi oldal miatt, esetleg mindketto?
>A assembly biztosan gyorsabb, es sok mas, magas szintu nyelv biztosan 
>emberkozelibb. Miert pont a Forth?
>
>Udv.:
>
Szia, Gyapo!
A "tanithato" jellege miatt. Ez egy nyitott compiler, azaz menet kozben "tanithatsz meg" dolgokat neki. Pl.:
: vegallasba 1 motor_on while bal swithch_off loop 1 motor_off ;

A szintaktikara mar nem emlekszem, igy lehet, hogy a while ciklus nem pont igy van, de a lenyeg a dolog 
logikaja.

A sor elejen levo kettospont azt jelenti, hogy egy uj eljaras definiciojaba fogtam.
Az 1 a stack-re tesz egy 1-es erteket.
A motor_on kiveszi a stacktol, barmit is talal ott es az ennek megfelelo motort inditja.
A while...loop belseje:
A bal egy szimbolikus konstans, ami a bal oldali vegallaskapcsolonak megfelelo portot jelenti.
A switch_off egy logikai true/false erteket ad vissza, attol fuggoen, hogy nyitott vagy zart.
Az 1 motor_off - hoz lasd ertelemszeruen az 1 motor_on - t.



Eddig nem nagy durranas. Bepotyogod, kapsz egy OK-t. De utana _nincs_ compilalas, a definicio azonnal el.
Csak annyit irsz, Hogy "vegallasba" es az elso motor vegallasba megy. Ha sikerult elb..rontani, akkor egy
forget vegallasba
parancsra elfelejti a definiciot es ujra definialhatod.

Ezek a definicioid ujabb, magasabb szintuekbe foghatok ossze, igy egy-egy ujabb parancs egyre komplexebb 
vezerlesi reszfolyamatokat jelent. A vegen mar csak ilyeneket irogatsz:

: akarmi vegallasba hon_tartas behelyezes idozites kidobas nyitas ;

A dolog lenyege, hogy _nem_ vakon irod a programot, remenykedve, hogy jo lesz alapjaiban es csak itt-ott kell 
majd belenyulni, hanem _elesben_ kiprobalod a vezerelt gepen es akkor lepsz tovabb egy osszetettebb folyamat 
fele, ha az alapok jok.

A megirt program tulajdonkeppen egy ujabb kulcsszo. Annyit irsz, hogy "csinald" es akkor csinalja. Ha meg azt 
irod "vege", akkor lehuzza a rolot, lekapcsolja a villanyt es jo ejszakat kivan.

Termeszetesen az alsobb szintek attol meg felhasznalhatok, hogy egy magasabb szint hasznalja oket. Ezek tkp. 
szubrutinok, amik attol meg nem romlanak el, hogy tobb eljaras is meghivja. Attol meg lehet direktben is 
hivni.

Mindezek barmilyen alacsony vagy barmilyen magas szinten azonnal mukodnek billenytyuzetrol is, pl. 
diagnosztikai cellal az 1 motor_on ugyanugy jogos.

Persze, itt is szubrutinok, eljarasok futnak, de az alapveto kulonbseg az, hogy interaktiv modon, azonnal 
latom az eredmenyt es nem kell a fordit-futtat-javit, fordit-futtat-javit, fordit-futtat-javit ciklusokat 
vegigelvezni.

A Forth-rol meg annyit, hogy a 6809 processzort a Motorola kifejezetten miatta fejlesztette dual-stack 
jellegure, ugyanis a kettos stack (utasitas es adatstack) a mukodesbol adodoan alapkovetelmeny.

Ennyit roviden, ami maris tul hosszu lett.

Udv, RI







More information about the Elektro mailing list