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