erstellt am / farita je 1998-12-28


Programlingvo E koncize (validas por PC-versio 0.9)


- Speco de memoro kaj procesilo bezonataj
- Minimuma vorttrezoro ( D . K )
- Dosieroj
- Fontotekstoj
- Etikedoj
- Generado de kodo øenerale
- Generado de kodo (ordonoj dependaj de la procesilo)
- Generado de kodo (ordonoj dependaj de la mastruma sistemo )
- Ordonoj por la demonstra moduso
- Analizo de la memoro
- Aliaj ordonoj

La dokumentitaj vortoj de E
---------------------------
OKT BIN HEX DEC DEKOMP ENHAVO EDIT INFO INIT AUS EIN ( FORGESU 
BF<- EN EL IRT IR0 IRU A- A+ A-> A<- A= IRS M=2 M=1 RE LOKO
AADR MADR ADR FERMU KOMPILU EL-D EN-D K D . LISTU

zurueck / reen!


Speco de memoro kaj procesilo bezonataj 

Por E oni bezonas E-kompililon.
Tio kompililo bezonas lineare adreseblan memoron kun minimuma
grandeco de 4 kilobajtoj, 16-bita adresado kaj 8-bita larøeco.
La jam ekzistanta PC-versio 0.9 de la kompililo funkcias en la
64K-a memorosegmento 2005 heksadecimale. La eniradreso estas 9C40 h.
La memoro devas havi samtempe leg-, skrib- kaj aplik-permeson.
Krome devas ekzisti stako-memoro (kun profundo de minimume 20
adresoj por subprogramaj saltoj). La stako ne bezonas esti ligata
la la æefmemoro de la komputilo.
La procesilo devas havi minimume unu 8-bitan æefregistron (akuon) kaj
1-bitaj registojn por la nul- kaj la transigo-statoj.
Laý la suba priskribo, E povas funkcii jam per æiu 8-bita mikroregilo
kun minimume 4K øis per la plej granda komputilego.
Kaýze de la facila portebleco de E, oni povas generi æiu-ajn kodon,
kiu eblas funkcii sur æiu-ajn regilo kaj komputilo.


Minimuma vorttrezoro ( D . K )


D                  Komenco de la difino de nova vorto


.                  Fino de difino de nova vorto.
                   Ekzemplo: D 'vortonomo' 176 69 180 14 205 16 203 .

'vortonomo'        Alvokas la kodon de la vorto 'vortonomo'.

'nombro'           Nombroj estas ekz. 0, 1, 2, 63245, 9999 .
                   Nombrojn oni nur povas kompili (1 aý 2 bajtoj).
                   Ili ne povas esti aplikataj kiel programo, escepte
                   ke la nombro estas difinita kiel vortonomo.


K                  La kodo post la vorto K difinas la sintenon de la
                   vorto dum la kompilado. Kiam oni ne uzas la vorton K,
                   tiam la vorto estas kompilita kiel subprogramo.
                   ekzemploj:
                   ekzemplo 1: D eligu-E A= 69 EL RE .
                               D eligu eligu-E RE .

                   dum la difinado sur la ekrano: nenio
                   alvoko de vorto: eligu   sur la ekrano: E

                    eligu-E estas kompilita kiel subprogramo!
 
                    ekzemplo 2: D eligu-E RE K A= 69 EL RE .
                                D eligu eligu-E RE .

                    dum la difinado sur la ekrano: E
                    alvoko de vorto: eligu   sur la ekrano: nenio

                    Dum la difino de la vorto eligu aperas E sur la
                    ekrano, æar tio estas la kompilokodo de la vorto
                    eligu-E. Nur la vorto RE estas kompilita en la
                    memoron kaj funkcias en la posta difino de "eligu"

       ****************************************************
       * La øenerala strukturo de vortodifino en E estas: *
       *                                                  *
       * D vortonomo [aplikokodo] [K] [kompiladokodo] .   *
       * [] = ne nepre bezonata                           *
       ****************************************************


Dosieroj


ENHAVO             ENHAVO listigas la unuan linion de æiu spuro de  la
                   disketo (dura disko). La listigo finiøas kiam oni
                   tajpas grandliteran E.


EN-D               Enigas blokon de 4096 bajtoj de magnet-diska memoro
                   al certa adreso de la memoro.
                   ekz.: EN-D 48 3 1 128 (memorloko, spuro, kapo, drajvo)
                   enigas ek de la adreso 48 * 256 = 12288 4096 bajtojn
                   de la spuro 3 per la kapo 1 de la unua dura disko.
                      numeroj de drajvoj    0 = disketilo  A:
                                            1 = disketilo  B:
                                          128 = dura disko C:
                                          129 = dura disko D:


EL-D               Eligas blokon de 4096 bajtoj de la æefmemoro sur spuro
                   de la magneta disko.
                   !!! Averto - La ordono EL-D povas detrui la enhavon de
                       la disko, kiam oni aplikas øin senpripensante !!!


Fontotekstoj



KOMPILU            KOMPILU kompilas fontotekston, kiu troviøas en la
                   (segmento de la) æefmemoro je la adreso 0.
                   Rimarko: E troviøas en la æefmemoro æiam en segmento
                   2005 heksadecimale = 8197 decimale.


FERMU              Markigas la finon de la teksto.


EDIT               EDIT estas malgranda tekstoprilabora programo
                   ( nur æirkaý 300 bajtojn granda).
                   Tajpante EDIT + enigoklavo kaj poste spacetoklavo
                   la teksto ek de la adreso 0 estas montrata linio post
                   linio. Tajpado de grandlitera F finas la programon.
                   Tio estas la tekstomontra moduso.
                   Ek de la tekstomontra moduso oni iras per premado de
                   la enigo-klavo al la skribomoduso.
                   Nun oni povas skribi tekston kaj korekti unu linion
                   per uzo de la repaþoklavo.
                   Kiam oni pemas denove la enigoklavon oni forlasas la
                   skribomoduson kaj reiras al la tekstomontra moduso.
                   Do - por skribi plurajn liniojn de teksto, oni devas
                   æiam dufoje premi la enigoklavon.


Etikedoj


LOKO               LOKO markigas lokon en la memoro. Eblas difini 128
                   de tiuj etikedoj - LOKO 0 øis LOKO 127 .


ADR                ADR estas montrilo al loko en la memoro. Alivorte
                   ADR estas adreso (16 bita) kiu montras la loko
                   difinita per LOKO.
                   Ekz.: ADR 32 montras al la loko LOKO 32 .


MADR               Kiam je la loko LOKO 32 estas la adreso
                   1025 = 4*256 + 1 MADR 32 montras al la malaltvalora
                   bajto do al la adreso, kiu enhavas la bajton 1 .


AADR               Same AADR 32 montras la la altvalora bajto de tiu
                   adreso kiu enhavas la bajton 4.


Generado de kodo øenerale


M=2                Sekvantaj nombroj estas kompilitaj kiel 2 bajtoj.
                   Ekz.: 16B 230 estas kompilita kiel 0 230 (ne nur 230!)

M=1                Sekvantaj nombroj estas kompilitaj kiel 1 bajto.
                   Ekz.: 8B  230 estas kompilita kiel 230   (ne 0 230!)

BF<-               La kompililo daýrigas la kompiladon je la adreso kiu
                   sekvas la ordonon BF<- .
                   Ekz.: BF<- 30000  aý BF<- ADR 123


Generado de kodo (ordonoj dependaj de la procesilo)


A=                 La sekva numero estas enigata en la akumulatoran
                   registron (AL-registro kiam temas pri 8086-procesilo)
                   Ekz.: A= 123


A<-                La sekva numero estas la adreso, kies enhavo estas
                   portata al A-registro
                   Ekz.: La enhavo de la adreso 12345 estu 65
                         A<- 12345
                         En la A-registro estas nun 65


A->                La enhavo de la A-registro estas transportata al la
                   adreso, kiu sekvas la ordonon
                   Ekz.: La enhavo de la A-registro estu 65
                         A-> 12345
                         La enhavo de la adreso 12345 estas nun 65


A+                 La sekva nombro plus la transigobito estas adiciitaj
                   al la A-registro. Kiam la rezulto estas pli granda ol
                   255 la transigo farigas 1 alikaze la transigo estas 0.
                   La rezulto restas en la A-registro.
                   Ekz.: Estu T = 0   A-registro = 65
                         A+ 200
                         A-registro = 265-256 = 9    T = 1


A-                 La sekva nombro kaj la transigo estas subtrahitaj de
                   la A-registro. Kiam la rezulto estas negativa, la
                   transigo estas 1 alikaze øi estas 0 .
                   Ekz.: Estu T = 0  A-registro = 65
                         A- 10
                         A-registro = 55             T = 0


IRU                La programo saltas al la memorloko, kies adreso estas
                   la numero, kiu sekvas la ordonon.
                   Ekz.: IRU 12345 aý IRU ADR 32
 

IR0                La programo saltas al la adreso, kiu sekvas la ordonon,
                   kiam antaýa kalkulo donis nulo kiel rezulto. Alikaze
                   la programo normale daýrigas per la sekva instrukcio.


IRT                La programo saltas al la adreso, kiu sekvas la ordonon,
                   kiam la transigobito estas 1, alikaze la programo
                   aplikas la sekvan instrukcion.


IRS                La programo saltas al subprogramo, kies adreso estas
                   la sekvanta nombro.
 

RE                 La programo reiras de subprogramo al la antaýa
                   programoparto.


Generado de kodo ( ordonoj dependaj de la mastruma sistemo )



EN                  EN prenas unu signon de la standarda enigaparato
                    (normale de la klavaro). Kiam neniu signo estas
                    (kiam oni ne premis sur la klavaro) la A-registro
                    ricevas la valoron nulo. Alikaze la A-registro
                    enhavas la valoron de la ASCII-kodo de la signo.


EL                  La enhavo de la A-registro estas eligata al la
                    standarda eligaparato (kutime la ekrano).
                    Øi estas eligata laý la tiel nomata telegram-moduso,
                    tio estas ke la ASCII-kodoj 7,8,10 kaj 13 estas
                    aplikataj.


Aliaj ordonoj


LISTU               LISTU listas æiujn vortojn de la vortaro.


FORGESU             La kompililo forviþas æiujn vortojn inklusive la
                    alvokita vorto.
                    Ekz.: FORGESU K forgesigas æiujn vortojn tiel, ke
                    restos nu la vortoj D, . kaj LISTU.
                    Sen tiuj vortoj la kompililo ne plu funkcias!


(                   Komentoj troviøas inter krampoj. La teksto inter la
                    (-signo kaj la )-signo estas ignorata, tio signifas
                    nek estas kompilata nek aplikata.


Ordonoj por la demonstra moduso



INFO                 Spuro 1 de la diskedo estas enigata al la memorbloko
                     48 ( =48*256 = 12288) kaj la fontoteksto estas
                     prilaborata. Funkcias tiel ke la fontoteksto estas
                     kvazaý aýtomate entajpata enskribante øin en la
                     tekstobufron de la komputilo.
                     Premo sur la paýzo-klavo haltas la tajpadon.


INIT                 Tiu vorto remetas la tekstomontrilon al la komenco de
                     la memorbloko 48.


EIN                  EIN enþaltas la demo-moduson.


AUS                  FINAS la demo-moduson.
 

Analizo de la memoro



DEKOMP               DEKOMP listas la kompilitajn nombrojn de la memoro
                     Du alvokoj de DEKOMP eblas.
                     Ekz. 1: DEKOMP 12345 listas la enhavon de la memoro
                             ek de la adreso 12345
                     Ekz. 2: DEKOMP "nomo_de_la_vorto" listigas la enhavon
                             de la memoro ek de la "nomo_de_la_vorto"
                     Dum æiu klavopremo 10 bajtoj estas montritaj.
                     La programo finas post enigo de grandlitera E.


DEC                  La decimala sistemo estas uzata por nombroj.
                     Tio estas la normala nombrosistemo uzata de E.
                     Ciferoj: 0 1 2 3 4 5 6 7 8 9


HEX                  La heksadecimala sistemo estas uzata.
                     Ciferoj: 0 1 2 3 4 5 6 7 8 9 A B C D E F


BIN                  La binara sistemo estas uzata.
                     Ciferoj: 0 1


OKT                  La oktala sistemo estas uzata.
                     Ciferoj: 0 1 2 3 4 5 6 7