Subversion Repositories NedoOS

Rev

Rev 20 | Rev 476 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

        ┬тхфхэшх

▀ч√ъ NedoLang - яюфьэюцхёЄтю  ч√ър ╤ш ёю ёЄЁюующ ЄшяшчрЎшхщ. ╧ЁюуЁрььр эр NedoLang, юЇюЁьыхээр  яю ЁхъюьхэфрЎш ь ёютьхёЄшьюёЄш, ьюцхЄ ъюьяшышЁютрЄ№ё  ъюьяшы ЄюЁюь ╤ш яЁш яюфъы■ўхэшш Їрщыр nedodefs.h.

╧ръхЄ NedoLang яючтюы хЄ ЁрчЁрсрЄ√трЄ№ чруЁєцрхь√х яЁюуЁрьь√ (todo ш ╧╟╙) фы  Z80 ш ARM Thumb схч яЁштыхўхэш  тэх°эшї єЄшышЄ ш сшсышюЄхъ, эх ёўшЄр  ¤ьєы ЄюЁют/юЄырфўшъют. ╩Ёюьх Єюую, яюёъюы№ъє ъюьяшы ЄюЁ ьюцхЄ ъюьяшышЁютрЄ№ ёрь ёхс , Єю ьюцэю ЁрсюЄрЄ№ эхяюёЁхфёЄтхээю эр Z80 (todo ш эр ARM Thumb).

        ╩ръ эрўрЄ№ ЁрсюЄє

# ╤ючфрщЄх т ърЄрыюух nedolang ърЄрыюу ётюхую яЁюхъЄр. ╧хЁхщфшЄх т ¤ЄюЄ ърЄрыюу.

# ╤ючфрщЄх шёїюфэшъ уыртэюую ьюфєы  main.c. ┬ э╕ь эряш°шЄх:
PROC main()
{
}

# ╤ючфрщЄх Їрщы ёЄрЁЄряр main.s. ┬ э╕ь эряш°шЄх:
        org 0x6000 ;рфЁхё Ёрчьх∙хэш  яЁюуЁрьь√ фы  Z80 (фы  ARM ёь. шэёЄЁєъЎш■ ъ тр°хьє яЁюЎхёёюЁє)
        jp main ;яхЁхїюф эр яЁюЎхфєЁє main()
        include "main.ast" ;ъюф уыртэюую ьюфєы 
        include "main.var" ;яхЁхьхээ√х уыртэюую ьюфєы 
        include "../_sdk/lib.i" ;ёЄрэфрЁЄэр  сшсышюЄхър

# ╤ючфрщЄх ёъЁшяЄ ъюьяшы Ўшш compile.bat. ┬ э╕ь эряш°шЄх (фы  Z80 - фы  ARM шёяюы№чєхЄё  nedolarm, nedotarm, nedoaarm ш эхЄ ёЄрэфрЁЄэющ сшсышюЄхъш lib.i):
@echo off
path=..\_sdk\

echo ...compiling...
nedolang main.c
type err.f

echo ...tokenizing...
nedotok main.s main.ast main.var ../_sdk/lib.i

echo ...assembling...
nedoasm main.S_
type asmerr.f

pause

╙цх ьюцэю яЁютхЁ Є№, ўЄю тр°р яЁюуЁрььр ъюьяшышЁєхЄё  - чряєёърщЄх compile.bat ш ёьюЄЁшЄх ю°шсъш. ╤хщўрё ю°шсюъ эхЄ, яюърч√трхЄё  Єюы№ъю lbls ... buf ... - ъюышўхёЄтю ьхЄюъ ш ЁрчьхЁ сєЇхЁр яюф эшї. ┬р°р яЁюуЁрььр ёъюьяшышЁютрэр т main.bin.

# ╧юфъы■ўшЄх эхюсїюфшь√х сшсышюЄхъш, эряЁшьхЁ:
┬ эрўрых main.c:
#include "../_sdk/print.h"
┬ ъюэЎх main.s:
        include "../_sdk/print.i" ;ъюф сшсышюЄхъш print
┬ compile.bat шёяЁрт№Єх ёЄЁюўъє:
nedotok main.s main.ast main.var ../_sdk/lib.i ../_sdk/print.i

╠юцэю яЁютхЁшЄ№, ўЄю яЁюуЁрььр ъюьяшышЁєхЄё  ё сшсышюЄхърьш.

# ─юсрт№Єх ъюф т main():
  setxy(0x00,0x00);
  nprintf("Hello world!\n");

# ─юсрт№Єх ёъЁшяЄ чряєёър run.bat (фы  Z80):
call compile.bat
nedotrd test.trd -n
nedotrd test.trd -s 24576 -ac main.bin
..\..\emul\emul.exe test.trd

╧ЁхфяюырурхЄё , ўЄю ¤ьєы ЄюЁ emul.exe ыхцшЄ т ърЄрыюух ..\..\emul\ (Є.х. т ёюёхфэхь ё ърЄрыюуюь nedolang).

╥хяхЁ№ є трё эр фшёъх test.trd хёЄ№ чряєёърхь√щ ъюфют√щ Їрщы main.C ё рфЁхёюь 24576 ш юЄъЁ√трхЄё  ¤ьєы ЄюЁ.

# ┬ ..\batch\basics.trd хёЄ№ схщёшъ-чруЁєчўшъ boot, ъюЄюЁ√щ чруЁєцрхЄ ш чряєёърхЄ main.C ё рфЁхёюь 24576. ─юсрт№Єх т ётющ run.bat яхЁхф чряєёъюь ¤ьєы ЄюЁр:
nedotrd ..\batch\basics.trd -eh boot.$b
nedotrd test.trd -ah boot.$b

╥хяхЁ№ ьюцэю чряєёърЄ№ яЁюуЁрььє яЁюёЄ√ь эрцрЄшхь Enter т ¤ьєы ЄюЁх (ьюцэю фрцх эрёЄЁюшЄ№ ртЄючряєёъ).

# ╠юцхЄх єфрышЄ№ тЁхьхээ√х Їрщы√ (*.ast, *.var, *.org, *.pst, ю°шсъш ш ЄюъхэшчшЁютрээ√х рёёхьсыхЁэ√х ЄхъёЄ√) єЄшышЄющ clean.bat т ъюЁэхтюь ърЄрыюух nedolang.

┼ёыш ъюуфр-эшсєф№ яюэрфюсшЄё  яюфъы■ўшЄ№ ёрьюфхы№э√щ рёёхьсыхЁэ√щ Їрщы, эрчэрў№Єх хьє Ёрё°шЁхэшх *.s, ўЄюс√ єЄшышЄр clean.bat хую эх єфрышыр.

        ╬яшёрэшх  ч√ър

▀ч√ъ т Єхъє∙хщ тхЁёшш эх юсхёяхўштрхЄ рэрыюуют ёыхфє■∙шї ъюэёЄЁєъЎшщ ╤ш:
- ьэюуюьхЁэ√х ьрёёшт√ (ьюцэю тчрьхэ шёяюы№чютрЄ№ т√ўшёыхэш  шэфхъёр шыш ьрёёшт√ єърчрЄхыхщ);
- ўшёыр ё яыртр■∙хщ Єюўъющ (todo!);
- sizeof(<expr>) - хёЄ№ Єюы№ъю +sizeof(<type>), +sizeof(<var>) эх фы  ьрёёштют;
- sizeof эхы№ч  шёяюы№чютрЄ№ т ъюэёЄрэЄрї;
- #include <filename> (хёЄ№ Єюы№ъю #include "filename");
- ьръЁюё√ #define (эхЁхъюьхэфєхьюх яютхфхэшх, хёЄ№ Єюы№ъю ъюэёЄрэЄ√ #define);
- for (ёыхфєхЄ тчрьхэ шёяюы№чютрЄ№ while шыш repeat);
- ёЄрЄшўхёъшх ёЄЁєъЄєЁ√ ш ьрёёшт√ ёЄЁєъЄєЁ (ёхщўрё фюёЄєя ъ ёЄЁєъЄєЁрь Єюы№ъю яю єърчрЄхы■);
- тыюцхээ√х ёЄЁєъЄєЁ√ (todo!);
- юс·хфшэхэш  (эхЁхъюьхэфєхьюх яютхфхэшх);
- ъюяшЁютрэшх ъюэёЄрэЄэ√ї ёЄЁюъ ўхЁхч =;
- т√їюф шч ёхЁхфшэ√ ЇєэъЎшш яю return (эхЁхъюьхэфєхьюх яютхфхэшх);
- т√їюф шч ёхЁхфшэ√ яЁюуЁрьь√ яю exit (эхЁхъюьхэфєхьюх яютхфхэшх);
- т√чют ЇєэъЎшш яю єърчрЄхы■ ё ярЁрьхЄЁюь ш тючтЁр∙рхь√ь чэрўхэшхь (ёхщўрё ьюцэю т√ч√трЄ№ яю єърчрЄхы■ Єюы№ъю яЁюЎхфєЁ√ схч ярЁрьхЄЁют);
- Єшя єърчрЄхы  эр єърчрЄхы№ (ьюцэю юсющЄш, Є.ъ. Єшя єърчрЄхы  єърч√трхЄё  яЁш Ёрч√ьхэютрэшш - *(<poitype>)poi; poke *(<poitype>)(<poiexpr>) = <expr>).

╩юьрэф√ ёюсшЁр■Єё  т сыюъш, юъЁєц╕ээ√х ЇшуєЁэ√ьш ёъюсърьш {<command><command>...<command>}.
╥ръющ сыюъ ¤ътштрыхэЄхэ юфшэюўэющ ъюьрэфх ш фюяєёЄшь тхчфх, уфх фюяєёЄшьр юфшэюўэр  ъюьрэфр.
╧юёых ърцфющ ъюьрэф√ фы  ёютьхёЄшьюёЄш ё ╤ш ЁхъюьхэфєхЄё  (эю эх ЄЁхсєхЄё ) ёЄртшЄ№ Єюўъє ё чря Єющ.

┬ юфэющ ёЄЁюъх ьюцхЄ с√Є№ ёъюы№ъю єуюфэю ъюьрэф. ╧хЁхтюф ёЄЁюъш ьхцфє ы■с√ьш ёыютрьш эш эр ўЄю эх тыш хЄ.
═юьхЁр ёЄЁюъ т шёїюфэюь ЄхъёЄх эх яш°єЄё . ╧ю¤Єюьє яЁш ю°шсърї т√тюфшЄё  эюьхЁ ёЄЁюъш шёїюфэюую ЄхъёЄютюую Їрщыр (яхЁтр  ёЄЁюър шьххЄ эюьхЁ 1).

╤ЄрэфрЁЄэ√х ъюььхэЄрЁшш юЇюЁьы ■Єё  ъръ /**ъюььхэЄрЁшщ*/. ┼ёыш тяхЁхфш Єюы№ъю юфэр чт╕чфюўър, Єю ¤Єю эх ъюььхэЄрЁшщ.
╤ЄрэфрЁЄэ√х ъюььхэЄрЁшш эх ьюуєЄ с√Є№ тыюцхээ√ьш.
┼ёЄ№ Єръцх ёЄрэфрЁЄэ√х юфэюёЄЁюўэ√х ъюььхэЄрЁшш юЄ // фю ъюэЎр ёЄЁюъш.
═хёЄрэфрЁЄэ√х юфэюёЄЁюўэ√х ъюььхэЄрЁшш: юЄ ;; фю ъюэЎр ёЄЁюъш.
╥ръцх шуэюЁшЁє■Єё  ёЄЁюъш, ъюЄюЁ√х эрўшэр■Єё  ё #, ъЁюьх Ёхрышчютрээ√ї ъюьрэф ё # (ёь. эшцх).
╩юььхэЄрЁшш ьюцэю ёЄртшЄ№ ьхцфє ы■с√ьш ёыютрьш, ъЁюьх ёыхфє■∙шї ёыєўрхт:
- яюёых яхЁтюую ёыютр ъюьрэф√ (фрцх фы  ъюьрэф, юяЁхфхы хь√ї яю ЇюЁьрЄє, фрцх ьхцфє ьхЄъющ ш фтюхЄюўшхь ш ьхцфє <varname> ш чэръюь '=');
- тэєЄЁш ЁрчьхЁр ьрёёштр яЁш хую юс· тыхэшш, Єю хёЄ№ Єръ эхы№ч : var int a[100/**ъюььхэЄрЁшщ*/];
- ьхцфє шьхэхь яхЁхьхээющ ш ътрфЁрЄэющ ёъюсъющ шэфхъёр ьрёёштр, Єю хёЄ№ Єръ эхы№ч : a/**ъюььхэЄрЁшщ*/[10].
- ьхцфє шьхэхь Єшяр ш *.
┬ёх ъюььхэЄрЁшш яЁш ъюьяшы Ўшш яхЁхфр■Єё  т рёёхьсыхЁэ√щ ЄхъёЄ Єюцх т тшфх ъюььхэЄрЁшхт (хёыш чрфрэр ёююЄтхЄёЄтє■∙р  юяЎш  ъюьяшы ЄюЁр, ёь. эшцх).

╧юыэюх шь  яхЁхьхээющ (ъюЄюЁюх шёяюы№чєхЄё  т рёёхьсыхЁх) ёЄЁюшЄё  шч шьхэш Єхъє∙хщ юсырёЄш тшфшьюёЄш (т Єхъє∙хщ тхЁёшш яєёЄюх), шьхэш ёрьющ яхЁхьхээющ ш яюёЄЇшъёр.
╧юыэюх шь  "__sys._petyamodule._pet" ючэрўрхЄ: юсырёЄ№ тшфшьюёЄш "__sys._petyamodule", яхЁхьхээр  "_pet", чрфрээр  т шёїюфэюь ЄхъёЄх (эхЄ Єюўъш т ъюэЎх).
╧юыэюх шь  "__globalarr" ючэрўрхЄ: уыюсры№эр  яхЁхьхээр  "__globalarr", чрфрээр  т шёїюфэюь ЄхъёЄх (эхЄ Єюўъш т ъюэЎх).
╧юыэюх шь  "__sys.mainproc.A." ючэрўрхЄ: юсырёЄ№ тшфшьюёЄш "__sys.mainproc", яхЁхьхээр  "A.", ёючфрээр  ртЄюьрЄшўхёъш (юЄьхўхэю Єюўъющ ".").
╥ръшь юсЁрчюь, ртЄюьрЄшўхёъш ёючфрээ√х яхЁхьхээ√х эх яхЁхёхър■Єё  яю шьхэрь ё яхЁхьхээ√ьш, чрфрээ√ьш т шёїюфэюь ЄхъёЄх.
╥ръ цх ёЄЁю Єё  яюыэ√х шьхэр чруюыютъют ЇєэъЎшщ (схч Єюўъш т ъюэЎх) ш ьхЄюъ фы  яхЁхїюфр (яюы№чютрЄхы№ёъшх схч Єюўъш, ртЄюьрЄшўхёъшх ё Єюўъющ т ъюэЎх).

╧хЁхьхээ√х ш яЁюўшх шьхэр фюёЄєяэ√ шч  ч√ър ёыхфє■∙шь юсЁрчюь:
i фы  фюёЄєяр ъ яхЁхьхээющ i, юяЁхфхы╕ээющ т Єхъє∙хщ юсырёЄш тшфшьюёЄш (Єю хёЄ№ т Єхъє∙хщ ЇєэъЎшш) шыш ъ уыюсры№эющ яхЁхьхээющ.
func2() фы  фюёЄєяр ъ ЇєэъЎшш func2(), юяЁхфхы╕ээющ ёэрЁєцш Єхъє∙хщ юсырёЄш тшфшьюёЄш (Єю хёЄ№ т Єхъє∙хь ьюфєых).
//_submodule._v фы  фюёЄєяр ъ яхЁхьхээющ _v, юяЁхфхы╕ээющ т фюўхЁэхщ юсырёЄш тшфшьюёЄш _submodule.
//═х шьххЄ ёь√ёыр эрч√трЄ№ ьюфєыш схч яюфў╕Ёъштрэш  - юэш сєфєЄ эхфюёЄєяэ√ шч тэх°эхую ьюфєы .
//_submodule.proc2() фы  фюёЄєяр ъ яЁюЎхфєЁх proc2(), юяЁхфхы╕ээющ т фюўхЁэхщ юсырёЄш тшфшьюёЄш _submodule.
//__sys._anothermodule.func5() фы  фюёЄєяр ъ ЇєэъЎшш func5(), юяЁхфхы╕ээющ т ьюфєых _anothermodule, тъы■ўхээюь т уыюсры№э√щ ьюфєы№ __sys.

└тЄюьрЄшўхёъш ёючфрээ√х яхЁхьхээ√х эхфюёЄєяэ√ шч  ч√ър.

╚фхэЄшЇшърЄюЁ√ (шьхэр яхЁхьхээ√ї, яЁюЎхфєЁ, ЇєэъЎшщ, ьхЄюъ) фюыцэ√ эрўшэрЄ№ё  ё сєът√ (шыш чэрър яюфў╕Ёъштрэш  фы  уыюсры№э√ї яхЁхьхээ√ї ш уыюсры№э√ї яЁюЎхфєЁ/ЇєэъЎшщ) ш ёюёЄю Є№ шч сєът, ЎшЇЁ ш чэръют яюфў╕Ёъштрэш . ╧юыэюх шь  яхЁхьхээющ эх фюыцэю с√Є№ фышээхх 79 чэръют. ╨рчЁх°рхЄё  шёяюы№чютрЄ№ Ёєёёъшх сєът√ т шфхэЄшЇшърЄюЁрї. ╨єёёъшх сєът√ юёЄр■Єё  т Єюь цх тшфх, ъръ юэш чръюфшЁютрэ√ т шёїюфэюь ЄхъёЄх (т ъюфшЁютъх cp866, cp1251 шыш utf8).

╚ьх■Єё  ёыхфє■∙шх Єшя√ фрээ√ї:
* byte (шьххЄ ЁрчьхЁ 1 срщЄ, схч чэрър)
* bool (фюяєёЄшь√ Єюы№ъю чэрўхэш  +true ш +false, ЁрчьхЁ эх ЁхуырьхэЄшЁєхЄё )
* char (шьххЄ ЁрчьхЁ 1 срщЄ, чэръютюёЄ№ эх ЁхуырьхэЄшЁєхЄё )
* int (чэръютюх Ўхыюх, шьххЄ ЁрчьхЁ т юфэю ёыютю яЁюЎхёёюЁр)
* uint (схччэръютюх Ўхыюх, шьххЄ ЁрчьхЁ т юфэю ёыютю яЁюЎхёёюЁр)
* long (фышээюх Ўхыюх, шьххЄ ЁрчьхЁ т фтр ёыютр яЁюЎхёёюЁр)
[* float]
* pbyte,pbool,pchar,pint,puint,plong,[pfloat], <typename>* (єърчрЄхы№ - шьххЄ ЁрчьхЁ т юфэю ёыютю яЁюЎхёёюЁр)
* struct <structname> (ёЄЁєъЄєЁр <structname> - Єюы№ъю фы  ъюэёЄрэЄэ√ї ёЄЁєъЄєЁ ш +sizeof(struct <structname>))
* struct <structname>* (єърчрЄхы№ эр ёЄЁєъЄєЁє <structname>)

╥шя bool т Єхъє∙хщ тхЁёшш шьххЄ ЁрчьхЁ 1 срщЄ, тьхёЄю true ш false ёыхфєхЄ яшёрЄ№ +TRUE ш +FALSE (т Єхъє∙хщ ЁхрышчрЎшш Ёртэ√ 0xff ш 0x00, эю эх ЁхъюьхэфєхЄё  ёьх°штрЄ№ ыюушўхёъшх чэрўхэш  ё ўшёыют√ьш).
╦■сюх чэрўхэшх, юЄышўэюх юЄ FALSE, тюёяЁшэшьрхЄё  ъръ TRUE, эю эх ЁхъюьхэфєхЄё  шёяюы№чютрЄ№ ¤ЄюЄ ЇръЄ фы  сєфє∙хщ ёютьхёЄшьюёЄш.
╧хЁхьхээ√х Єшяр long эхы№ч  шёяюы№чютрЄ№ т ёЁртэхэш ї, єьэюцхэш ї ш фхыхэш ї, яю¤Єюьє эхы№ч  уютюЁшЄ№ юс шї чэръютюёЄш.

╙чэрЄ№ ЁрчьхЁ Єшяр, яхЁхьхээющ яЁюёЄюую Єшяр шыш ёЄЁєъЄєЁ√ т срщЄрї ьюцэю ё яюью∙№■ +sizeof(<type>). ┬√Ёрцхэшх +sizeof(<type>*) т√фр╕Є ЁрчьхЁ єърчрЄхы .

╨рчЁх°рхЄё  шёяюы№чютрЄ№ эхюс· тыхээ√х ъюэёЄрэЄ√ т ЇюЁьх +<variable>, хёыш шь  эрўшэрхЄё  ёю чэрър яюфў╕Ёъштрэш  '_'. ┬ ¤Єюь ёыєўрх ъюэёЄрэЄр яюыєўрхЄ Єшя byte (шэрўх bool). ╨хъюьхэфєхЄё  шёяюы№чютрЄ№ Єръє■ чряшё№ Єюы№ъю фы  ъюэёЄрэЄ шч enum.

┬ т√Ёрцхэш ї ёЄЁюую яЁютхЁ ■Єё  Єшя√. ┬ ы■сющ юяхЁрЎшш ё фтєь  юяхЁрэфрьш Єшя√ юяхЁрэфют фюыцэ√ ёютярфрЄ№.

╧Ёштхфхэшх Єшяют т√уы фшЄ Єръ:
(<type>)<value>

╧юёъюы№ъє эр°  ч√ъ эх фюяєёърхЄ Ёрчэ√х Єшя√ т юфэюь юяхЁрЄюЁх, Єю фы  ёьх∙хэш  єърчрЄхы  эр N срщЄ тяхЁ╕ф шёяюы№чєхЄё  т√Ёрцхэшх:
(<type>)((UINT)<pointername> + N)
╚ыш фы  PBYTE:
&<pointername>[N]
─ы  яюыєўхэш  єърчрЄхы  эр ьрёёшт шёяюы№чєхЄё  т√Ёрцхэшх:
(PCHAR)<arrayname>
╧Ёш шёяюы№чютрэшш т√чютр ЇєэъЎшш т ърўхёЄтх ярЁрьхЄЁр эрфю ёЄртшЄ№ яЁртшы№э√щ Єшя єърчрЄхы  (єърчрЄхы№ эх Ёртхэ ьрёёштє, т юЄышўшх юЄ ╤ш).

╫Єхэшх яю єърчрЄхы■ фюяєёърхЄё  Єюы№ъю ё эхяюёЁхфёЄтхээ√ь яЁштхфхэшхь Єшяр: *(<pointertype>)<pointervalue>

┬√чют ЇєэъЎшщ юЇюЁьы хЄё  ъръ <procname>([<expression>,...]).
╧ЁюЎхфєЁ√ ш ЇєэъЎшш Єхїэшўхёъш шьх■Є яыртр■∙хх ўшёыю ярЁрьхЄЁют, эю эх ЁхъюьхэфєхЄё  шёяюы№чютрЄ№ ¤Єю яютхфхэшх.

┬ т√Ёрцхэш ї <expression> шьх■Єё  ёыхфє■∙шх яЁшюЁшЄхЄ√ юяхЁрЎшщ:
1. ╚эфхъёэ√х ътрфЁрЄэ√х ёъюсъш: arr[] шыш pointer[]
2. ╧ЁхЇшъё√ (+, -, ~ (шэтхЁёш ), ! (ыюушўхёъюх юЄЁшЎрэшх), & (тч Єшх рфЁхёр яхЁхьхээющ &<variable>, яЁюЎхфєЁ√/ЇєэъЎшш &<func>, ¤ыхьхэЄр ьрёёштр &<array>[<expression>], яюы  ёЄЁєъЄєЁ√ &(<structname>-><field>)), * (ўЄхэшх яю єърчрЄхы■)).
3. ╙ьэюцхэшх, фхыхэшх, &, &&.
4. ╤ыюцхэшх, т√ўшЄрэшх, |, ^, ||, -> (рфЁхёрЎш  ¤ыхьхэЄр ёЄЁєъЄєЁ√ яю єърчрЄхы■).
5. ╤Ёртэхэш  ш ёфтшуш (<<, >>). ╤Ёртэхэш  ш ёфтшуш ЁрсюЄр■Є Єюы№ъю фы  Єшяют byte, char, int, uint. ─ы  bool ЁрчЁх°хэ√ Єюы№ъю ёЁртэхэш  эр ЁртхэёЄтю ш эхЁртхэёЄтю. ╤Ёртэхэшх эр ЁртхэёЄтю ьюцэю яшёрЄ№ == шыш =, эю тЄюЁющ трЁшрэЄ эхёютьхёЄшь ё ╤ш.

┬ т√Ёрцхэш ї фюяєёЄшь√ ёыхфє■∙шх тшф√ чэрўхэшщ:
* шфхэЄшЇшърЄюЁ яхЁхьхээющ - яюыєўрхЄ Єшя яю Єшяє яхЁхьхээющ.
* Ўхыр  ўшёыютр  ъюэёЄрэЄр схч чэрър - яюыєўрхЄ Єшя byte (хёыш чряшё№ т ёЄшых 0xff ё эх сюыхх ўхь 2 ЎшЇЁрьш шыш т ёЄшых 0b111 ё эх сюыхх ўхь 8 ЎшЇЁрьш), long (хёыш т ъюэЎх ёЄюшЄ L) шыш uint (т юёЄры№э√ї ёыєўр ї).
* Ўхыр  ўшёыютр  ъюэёЄрэЄр ёю чэръюь (+ шыш -) - яюыєўрхЄ Єшя int.
* ўшёыютр  ъюэёЄрэЄр ё яыртр■∙хщ Єюўъющ - яюыєўрхЄ Єшя float (ъюЄюЁ√щ яюър эх яюффхЁцштрхЄё ).
* ёшьтюы№эр  ъюэёЄрэЄр 'c' шыш '\<ёшьтюы>' (фюяєёЄшь√ Єюы№ъю '\n', '\r', '\t', '\0', '\'', '\"', '\\'), уфх <ёшьтюы> - юфшэ ёшьтюы - яюыєўрхЄ Єшя char.
* ёЄЁюъютр  ъюэёЄрэЄр "ёЄЁюър" - яюыєўрхЄ Єшя pchar. ─юяєёърхЄё  ёъыхштрэшх ёЄЁюъют√ї ъюэёЄрэЄ Єшяр "str1""str2" (ьхцфє эшьш фюяєёЄшь яхЁхтюф ёЄЁюъш). ╤ЄЁюъют√х ъюэёЄрэЄ√ ёючфр■Єё  ртЄюьрЄшўхёъш ё эєыхт√ь ъюфюь т ъюэЎх.

╓хы√х ўшёыют√х ъюэёЄрэЄ√ ьюуєЄ с√Є№ фхё Єшўэ√х (100), °хёЄэрфЎрЄхЁшўэ√х (0x10), фтюшўэ√х (0b11), тюё№ьхЁшўэ√х (0o177 шыш ъръ трЁшрэЄ 0177 ё т√фрўхщ яЁхфєяЁхцфхэш  шч-чр фтєёь√ёыхээюёЄш чряшёш).

╩юьрэф√, ъюЄюЁ√х юяЁхфхы ■Єё  яю ЇюЁьрЄє:

* <labelname><:> - юяЁхфхышЄ№ ьхЄъє фы  яхЁхїюфр. ╠хЄър фюыцэр с√Є№ єэшъры№эющ тэєЄЁш Єхъє∙хщ юсырёЄш тшфшьюёЄш. ╧юфў╕Ёъштрэшх фюсртыхэю, ўЄюс√ ьхЄъє с√ыю ыєў°х тшфэю т ЄхъёЄх яЁюуЁрьь√.
* <label>([<expression>,...]) - т√чтрЄ№ яЁюЎхфєЁє. ═хы№ч  ёЄртшЄ№ яЁюсхы яхЁхф юЄъЁ√тр■∙хщ ёъюсъющ (ёЁ. ЇюЁьрЄ if).
* <var>=<expression> - т√ўшёышЄ№ ш чряшёрЄ№ т яхЁхьхээє■. ╥шя т√Ёрцхэш  фюыцхэ ёююЄтхЄёЄтютрЄ№ Єшяє яхЁхьхээющ. ╧юыєўшЄ№ т єърчрЄхы№ рфЁхё ьрёёштр ьюцэю Єръ: poi=(PBYTE)arr.
* <var><[><expression><]>=<expression> - т√ўшёышЄ№ ш чряшёрЄ№ т  ўхщъє ьрёёштр. ╥ръшь цх юсЁрчюь ьюцэю яшёрЄ№ т ьрёёшт, рфЁхё ъюЄюЁюую яхЁхфрэ ъръ єърчрЄхы№. ┴єф№Єх юёЄюЁюцэ√, уЁрэшЎ√ ьрёёштр эх яЁютхЁ ■Єё !
─юёЄєя ъ  ўхщърь ьрёёштр эр ўЄхэшх фхырхЄё  Єръ цх: <var><[><expression><]> (т Єюь ўшёых хёыш рфЁхё ьрёёштр яхЁхфрэ ъръ єърчрЄхы№).
* <var>-><field>=<expression> - т√ўшёышЄ№ ш чряшёрЄ№ т яюых ёЄЁєъЄєЁ√ (ъюЄюЁр  ыхцшЄ яю єърчрЄхы■ <var>). ─юяєёър■Єё  Ўхяюўъш ->.

╩юьрэф√, ъюЄюЁ√х эрўшэр■Єё  ё ъы■ўхтюую ёыютр:

* const - юяЁхфхышЄ№ ъюэёЄрэЄє: const<type><variable>[=<constnum>], уфх <constnum>::=[-|+]<num>|'<char>'|"<string>"["<string>"...] шыш фы  ьрёёштют/ёЄЁєъЄєЁ: const<type><variable><[><expr><]>={<constnum>[,<constnum>...]}
╧Ёюяєёъ чэрўхэш  шыш ёяшёър чэрўхэшщ эєцхэ фы  шёяюы№чютрэш  тэх°эшї ъюэёЄрэЄ (эх шч Єхъє∙хую ъюьяшышЁєхьюую ьюфєы ). ╤яшёюъ чэрўхэшщ фы  ьрёёштр фюыцхэ ёююЄтхЄёЄтютрЄ№ ўшёыє чэрўхэшщ т ьрёёштх (эх яЁютхЁ хЄё ).
═хы№ч  юяЁхфхы Є№ фтр Ёрчр юфэє ш Єє цх ъюэёЄрэЄє ёю чэрўхэшхь (TODO яЁютхЁ Є№ т рёёхьсыхЁх). ╤ь. т√°х яЁю эхюс· тыхээ√х ъюэёЄрэЄ√.
* extern - юяшёрЄ№ Єшя тэх°эхщ яхЁхьхээющ: extern<type><variable> - фюяєёърхЄё  Єюы№ъю ёэрЁєцш яЁюЎхфєЁ ш ЇєэъЎшщ (эх яЁютхЁ хЄё ).
* var - юяЁхфхышЄ№ яхЁхьхээє■: var<type><variable>[=<expression>] - хёыш ё яЁшётрштрэшхь, Єю фюяєёърхЄё  Єюы№ъю тэєЄЁш яЁюЎхфєЁ шыш ЇєэъЎшщ (эх яЁютхЁ хЄё ). ▌Єю шьхээю яЁшётрштрэшх, р эх юяЁхфхыхэшх эрўры№эюую чэрўхэш  яхЁхьхээющ. ═хы№ч  яЁшётрштрЄ№ ьрёёшт√ (эх яЁютхЁ хЄё ). ┬ ЁхъєЁёштэ√ї яЁюЎхфєЁрї ш ЇєэъЎш ї яЁшётрштрэшх т var чряЁх∙хэю (эх яЁютхЁ хЄё ), р яюёых сыюър тёхї var тё╕ яюёыхфє■∙хх Єхыю ЇєэъЎшш фюыцэю с√Є№ т ЇшуєЁэ√ї ёъюсърї {} (эх яЁютхЁ хЄё ), шэрўх яхЁхьхээ√х эх сєфєЄ яЁртшы№эю тюёёЄрэртыштрЄ№ё  яЁш ЁхъєЁёшш.
* var ё ътрфЁрЄэ√ьш ёъюсърьш - юяЁхфхышЄ№ ьрёёшт ЇшъёшЁютрээюую ЁрчьхЁр: var<type><variable><[><expression><]> -  ўхщъш ьрёёштр эєьхЁє■Єё  ё 0, Єю хёЄ№ т ьрёёштх a[10] эх ёє∙хёЄтєхЄ  ўхщъш ё шэфхъёюь 10. ╚эфхъё фюыцхэ шьхЄ№ Єшя byte шыш uint.
* enum - юяЁхфхышЄ№ яюёыхфютрЄхы№э√щ Ё ф ъюэёЄрэЄ: enum{<enumconstname>,<enumconstname>...} - яхЁтр  ъюэёЄрэЄр яюыєўшЄ чэрўхэшх 0, тЄюЁр  1 ш Є.ф. ▌Єш ъюэёЄрэЄ√ эхтшфшь√ ъръ яхЁхьхээ√х, яю¤Єюьє фы  шёяюы№чютрэш  шї эрфю ышсю юс· тшЄ№ ўхЁхч const, ышсю шёяюы№чютрЄ№ +<enumconstname> (ёь. т√°х яЁю эхюс· тыхээ√х ъюэёЄрэЄ√).
* poke* - т√ўшёышЄ№ ш чряшёрЄ№ т ярь Є№ ё эєцэ√ь Єшяюь: poke*<pointervalue>=<expression> - ъы■ўхтюх ёыютю эєцэю, ўЄюс√ ьюцэю с√ыю яЁюяєёърЄ№ ; т ъюэЎх юяхЁрЄюЁют.
[* module - юяЁхфхышЄ№ ьюфєы№ (юсырёЄ№ тшфшьюёЄш): module<label><command> - ъюьрэфр <command> ёючфр╕Єё  т юсырёЄш тшфшьюёЄш тэєЄЁш Єхъє∙хщ юсырёЄш тшфшьюёЄш (эряЁшьхЁ, хёыш с√ыр юсырёЄ№ тшфшьюёЄш mainmodule, Єю тэєЄЁш ъюьрэф√ "module submodule{...}" сєфхЄ юсырёЄ№ тшфшьюёЄш mainmodule.submodule. ╠юцэю яютЄюЁэю юяЁхфхы Є№ юфэє ш Єє цх юсырёЄ№ тшфшьюёЄш, ўЄюс√ фюсрты Є№ Єєфр ўЄю-Єю эютюх.]
* proc - юяЁхфхышЄ№ яЁюЎхфєЁє: proc<procname>[recursive][forward]([<type><par>,...])[<command>] - Єюцх ёючфр╕Є юсырёЄ№ тшфшьюёЄш тэєЄЁш Єхъє∙хщ юсырёЄш тшфшьюёЄш. ╧ю¤Єюьє <procname> фюыцэю с√Є№ єэшъры№э√ь тэєЄЁш Єхъє∙хщ юсырёЄш тшфшьюёЄш. ┼ёыш хёЄ№ ёыютю forward, Єю Єхыю яЁюЎхфєЁ√/ЇєэъЎшш эх ёючфр╕Єё , ш <command> эх эєцэр (шёяюы№чєхЄё  яЁш шёяюы№чютрэшш тэх°эшї яЁюЎхфєЁ/ЇєэъЎшщ шыш хёыш шї Єхыю юяшёрэю эшцх т√чютр). ┼ёыш хёЄ№ ёыютю recursive, Єю ыюъры№э√х яхЁхьхээ√х ёюїЁрэ ■Єё  яЁш тїюфх-т√їюфх т яЁюЎхфєЁє/ЇєэъЎш■, р яЁш т√чютх ёюїЁрэ ■Єё  ёЄрЁ√х чэрўхэш  ярЁрьхЄЁют. ┬эєЄЁш ЁхъєЁёштэющ яЁюЎхфєЁ√/ЇєэъЎшш эхы№ч  юс· ты Є№ ьрёёшт√ (эх яЁютхЁ хЄё ).
* func - юяЁхфхышЄ№ ЇєэъЎш■: func<type><funcname>[recursive][forward]([<type><par>,...])[<command>] - Єюцх ёючфр╕Є юсырёЄ№ тшфшьюёЄш тэєЄЁш Єхъє∙хщ юсырёЄш тшфшьюёЄш. ╧ю¤Єюьє <funccname> фюыцэю с√Є№ єэшъры№э√ь тэєЄЁш Єхъє∙хщ юсырёЄш тшфшьюёЄш. ╤ь. т√°х яЁю ёыютр recursive ш forward.
* if - ры№ЄхЁэрЄштр: if (<boolexpression>) <command>[else<command>]; - ';' яЁюЄшт ю°шсъш "if (expr); cmd" ш яЁюЄшт ю°шсъш тыюцхээ√ї эхяюыэ√ї ры№ЄхЁэрЄшт. ╧Ёюсхы яюёых if юс чрЄхыхэ (ёЁ. ЇюЁьрЄ т√чютр яЁюЎхфєЁ√). ╧Ёш тыюцхээ√ї if фюёЄрЄюўэю юфэюую ';'.
*TODO ifnot
*TODO ifz
*TODO ifnz
* while - Ўшъы ё яЁхфєёыютшхь: while (<boolexpression>) <command>[;] - ';' яЁюЄшт ю°шсъш "while(expr);cmd".
*TODO whilenot
*TODO whilez
*TODO whilenz
* repeat - Ўшъы ё яюёЄєёыютшхь: repeat<command>until (<boolexpression>) - хёыш ёфхырЄ№ ёъюсъш эхюс чрЄхы№э√ьш, Єю эх яюыєўшЄё  юяЁхфхышЄ№ "ыюушўхёъюх т√Ёрцхэшх тхЁїэхую єЁютэ ", ъюЄюЁюх ьюцэю юёЄртшЄ№ тю Їырух.
*TODO untilnot
*TODO untilz
*TODO untilnz
* break - т√щЄш шч Ўшъыр while шыш repeat шыш шч сыюър switch: ярЁрьхЄЁют эх шьххЄ, яЁюёЄю break.
* return - тхЁэєЄ№ чэрўхэшх шч ЇєэъЎшш: return<expression> - фюыцэр с√Є№ яюёыхфэхщ ъюьрэфющ т ЇєэъЎшш. ╥шя тючтЁр∙рхьюую чэрўхэш  фюыцхэ ёююЄтхЄёЄтютрЄ№ Єшяє ЇєэъЎшш.
* goto - яхЁхщЄш эр ьхЄъє: goto<labelname> - ЁрчЁх°рхЄё  Єюы№ъю тэєЄЁш Єхъє∙хщ яЁюЎхфєЁ√ шыш ЇєэъЎшш.
* call - т√чтрЄ№ яЁюЎхфєЁє яю єърчрЄхы■: call (<expression>) - Єшя т√Ёрцхэш  - ы■сющ єърчрЄхы№ шыш UINT (¤Єю эх яЁютхЁ хЄё ).
* asm - рёёхьсыхЁэр  тёЄртър: asm(" cmd1"" cmd2""label1"...) - ърцфр  ъюьрэфр ухэхЁшЁєхЄё  ъръ юЄфхы№эр  ёЄЁюър. ═хы№ч  яшёрЄ№ ъюьрэф√ схч яЁюсхыют шыш Єрсєы Ўшщ тэрўрых - ЄюъхэшчрЄюЁ ш рёёхьсыхЁ шї эх яющьєЄ.
* inc - єтхышўшЄ№ чэрўхэшх яхЁхьхээющ эр хфшэшЎє: inc <var>
* dec - єьхэ№°шЄ№ чэрўхэшх яхЁхьхээющ эр хфшэшЎє: dec <var>
* struct - юс· тшЄ№ ёЄЁєъЄєЁє: struct<structname>{<type1><field1>[;]<type2><field2>[;]...} - фюяєёърхЄё  шёяюы№чютрэшх т ёЄЁєъЄєЁх єърчрЄхыхщ эр ёЄЁєъЄєЁ√, юс· тыхээ√х т√°х, ш эр ёрьє ёхс  (фы  ёютьхёЄшьюёЄш ё ╤ш эрфю т юс· тыхэшш ёЄЁєъЄєЁ√ яюы ,  ты ■∙шхё  єърчрЄхы ьш эр ёЄЁєъЄєЁ√, яЁхфтрЁ Є№ ёыютюь struct). ╧юЄюь ьюцэю юс· тшЄ№ єърчрЄхы№ эр ёЄЁєъЄєЁє: var struct <structname>* <structpointername> - ш шёяюы№чютрЄ№ яюы  ёЄЁєъЄєЁ√: <structpointername>-><field>
* switch - сыюъ ьэюцхёЄтхээюую тхЄтыхэш  яю чэрўхэш■ Єшяр byte:
switch (<byteexpr>){
case <byteconst>: [<commands>]
case <byteconst>: [<commands>]
...
default: [<commands>]
};
╨рчЁх°рхЄё  Єюы№ъю юфшэ switch т яЁюЎхфєЁх/ЇєэъЎшш. ┬ёх эрчтрэш  тхЄюъ <byteconst> фюыцэ√ с√Є№ юяшёрэ√ т const шыш enum. ╧юы  "case <byteconst>:" ш "default:" (тхЄър яю єьюыўрэш■) ¤ътштрыхэЄэ√ ьхЄърь (label), яю¤Єюьє юэш ьюуєЄ ёЄю Є№ т яЁюшчтюы№э√ї ьхёЄрї, р ртЄюьрЄшўхёъшщ т√їюф шч тхЄюъ эх яЁхфєёьюЄЁхэ. ─ы  ¤Єюую ьюцэю шёяюы№чютрЄ№ goto шыш break (break чфхё№ т√їюфшЄ шч switch).
* #include "filename" - тыюцхээю тъы■ўшЄ№ ЄхъёЄ шч фЁєуюую Їрщыр. ╚ёяюы№чєхЄё  фы  яюфъы■ўхэш  тэх°эшї юяЁхфхыхэшщ (фєсышЁютрэш  эр фрээ√щ ьюьхэЄ чряЁх∙хэ√).
* #define <constname> <value> шыш #define <costname> (<type>)(<expr>) - юяЁхфхышЄ№ ъюэёЄрэЄє ёютьхёЄшью ё ╤ш. ┬ юЄышўшх юЄ const, ьюцэю яЁхюяЁхфхы Є№. ╥ЁхсєхЄё  фы  ъюэёЄрэЄ т чруюыютюўэ√ї Їрщырї ш ъюэёЄрэЄ ЁрчьхЁр ьрёёштют, ьюцэю ш фы  фЁєушї ёыєўрхт.
# #undef <constname> - єфрышЄ№ Ёрэхх юяЁхфхы╕ээє■ ъюэёЄрэЄє (шыш ы■сющ фЁєующ шфхэЄшЇшърЄюЁ, эю ¤Єю сєфхЄ эхёютьхёЄшью ё ╤ш).
* єёыютэр  ъюьяшы Ўш  (ЁрчЁх°рхЄё  эхтыюцхээр ): #ifdef <defined_const> ... [#else] ... #endif шыш #ifndef <defined_const> ... [#else] ... #endif.
* export - ёЄртшЄё  яхЁхф юяЁхфхыхэшхь (яЁюЎхфєЁ√/ЇєэъЎшш, яхЁхьхээющ, ъюэёЄрэЄэюую ьрёёштр/ёЄЁєъЄєЁ√), ёьх∙хэшх рфЁхёр ъюЄюЁюую эєцэю ¤ъёяюЁЄшЁютрЄ№ т Їрщы filename.D_.
* typedef <type> <typename> - юяЁхфхышЄ№ эют√щ Єшя эр юёэютх ёЄрЁюую. ─ы  ёЄЁєъЄєЁэ√ї Єшяют эрфю яшёрЄ№ ёыхтр ёыютю struct фы  ёютьхёЄшьюёЄш ё ╤ш.

┬ёх ъюьрэф√ ё # фюыцэ√ эрўшэрЄ№ё  ё эрўрыр ёЄЁюъш ш чрэшьрЄ№ тё■ ёЄЁюъє.

┬ єёыютш ї (if, while, until) шьххЄё  юяЄшьшчрЎш  ёЁртэхэшщ чр ёў╕Є яЁютхЁъш, ўЄю юэш юёє∙хёЄты ■Єё  эр 1-ь єЁютэх тыюцхээюёЄш т√Ёрцхэш  (ёъюсъш эх єўшЄ√тр■Єё  - юэш  ты ■Єё  ўрёЄ№■ ёшэЄръёшёр ъюьрэф√). ╧ю¤Єюьє эр ¤Єюь цх єЁютэх эхы№ч  яшёрЄ№ фЁєушх юяхЁрЎшш (эряЁшьхЁ, эхы№ч  a==b==c, ьюцэю (a==b)==c). ▌Єю эх яЁютхЁ хЄё ?
┬ т√ўшёыхэш ї (яЁшётрштрэшх, var, return, ярЁрьхЄЁ√ т√чютют) ёЁртэхэш  ьюцэю яшёрЄ№ Єюы№ъю т ёъюсърї, ўЄюс√ юэш эх юърчрышё№ эр 1-ь єЁютэх тыюцхээюёЄш (эряЁшьхЁ, эхы№ч  a = b==c, ьюцэю a = (b==c)).

╨хъюьхэфєхь√щ ёЄшы№ юЇюЁьыхэш  єёыютшщ:
if (cond1) do1();
if (cond2) {
  do2();
}else if (cond3) {
  if (cond4) {do3();
  }else do4();
};
if (cond5) {
  do5();
}else if (cond6) {
  do6();
}else {
  do7();
};

╨хъюьхэфєхЄё  тёх ъы■ўхт√х ёыютр  ч√ър яшёрЄ№ сюы№°шьш сєътрьш, р т Єхъє∙хщ тхЁёшш - Єшя√ ш STRUCT юс чрЄхы№эю сюы№°шьш сєътрьш.
╫Єюс√ ёъюьяшышЁютрЄ№ Єръющ цх шёїюфэшъ ё яюью∙№■ ъюьяшы ЄюЁр ╤ш, эєцэю шёяюы№чютрЄ№ #include "nedodefs.h".

╥ръющ ёшэЄръёшё Ц юфшэ шч трЁшрэЄют, яюыєўшт°шїё  шч ёыхфє■∙шї ЄЁхсютрэшщ:
- яЁш рэрышчх ъюьрэф шёяюы№чютрЄ№ Єюы№ъю ыхт√щ ъюэЄхъёЄ;
- ы■ср  ъюьрэфр юяЁхфхы хЄё  схч яюшёър яю ьхЄърь (чрЁхчхЁтшЁютрээ√ї ёыют эхЄ);
- яЁш ¤Єюь фюыцэр юсхёяхўштрЄ№ё  ёютьхёЄшьюёЄ№ ё ъюьяшы ЄюЁюь ╤ш.

        ╤ЄЁєъЄєЁр яЁюхъЄр
        
╧ЁюхъЄ ёюёЄюшЄ шч ьюфєыхщ эр NedoLang (ьюуєЄ тъы■ўрЄ№ фЁєушх ьюфєыш ўхЁхч #include) ш эр рёёхьсыхЁх (ьюуєЄ тъы■ўрЄ№ фЁєушх рёёхьсыхЁэ√х ьюфєыш ўхЁхч include). ╠юфєыш яю юфэюьє яхЁхфр■Єё  т ъюьяшы ЄюЁ (ъЁюьх тъы■ўрхь√ї ўхЁхч #include), яюЄюь тёх рёёхьсыхЁэ√х Їрщы√ эрфю ЄюъхэшчшЁютрЄ№, яюЄюь эрфю т√чтрЄ№ NedoAsm ё шьхэхь ёЄрЁЄря-Їрщыр *.s.

╤ЄрЁЄря-Їрщы - рёёхьсыхЁэ√щ Їрщы ё чряєёър■∙шь ъюфюь, фюыцхэ тъы■ўрЄ№ (ўхЁхч include "filename.ast") юёЄры№э√х Їрщы√ яЁюхъЄр. ┬ Ёхры№эюёЄш тьхёЄю filename.ast сєфхЄ уЁєчшЄ№ё  filename.A_ ш Є.я.

nedolang.exe - ъюьяшы ЄюЁ, шьххЄ ёыхфє■∙шх ярЁрьхЄЁ√:
filename1.c filename2.c ... - ъюьяшышЁютрЄ№ яхЁхўшёыхээ√х ьюфєыш яю юфэюьє.
-C - тъы■ўшЄ№ т√фрўє ъюььхэЄрЁшхт (фы  ъюьяшы Ўшш).
-H - тъы■ўшЄ№ т√фрўє яюфЁюсэюую ыюур (фы  ъюьяшы Ўшш).
┬√їюфэ√х Їрщы√ ъюьяшы ЄюЁр:
*.ast - рёёхьсыхЁэ√щ ЄхъёЄ ё ъюфюь
*.var - рёёхьсыхЁэ√щ ЄхъёЄ ё фрээ√ьш
err.f - ю°шсъш ъюьяшы Ўшш
[label.f - ьхЄъш тю тэєЄЁхээхь ЇюЁьрЄх]

nedotok.exe - ЄюъхэшчрЄюЁ, т√ч√трхЄё  Єръ:
nedotok filename1.ast filename2.var filename3.s filename4.i ...
(т√їюфэ√х Їрщы√ сєфєЄ эрч√трЄ№ё  filename1.A_, filename2.V_ ш Є.я.).

nedoasm.exe - рёёхьсыхЁ, т√ч√трхЄё  Єръ:
nedoasm filename.A_
┬√їюфэ√х Їрщы√ рёёхьсыхЁр:
filename.bin - тёх ёухэхЁшЁютрээ√х срщЄ√ ъюфр ш фрээ√ї яюфЁ ф
filename.org - фрээ√х ЁхыюърЎшш (т ЇюЁьрЄх: 2 срщЄр ёьх∙хэшх, уфх ыхцшЄ ЁхыюЎшЁєхь√щ рфЁхё)
[label0.f..label7.f - ьхЄъш тю тэєЄЁхээхь ЇюЁьрЄх]
filename.pst - яюёЄ-ьхЄъш тю тэєЄЁхээхь ЇюЁьрЄх (яюър эх яюффхЁцштрхЄё )
asmerr.f - ю°шсъш рёёхьсышЁютрэш 
filename.D_ - ЄюъхэшчшЁютрээ√щ Їрщы фхъырЁрЎшщ (ъюьрэф√ export label т рёёхьсыхЁх)
└ёёхьсыхЁ т√уЁєцрхЄ ъюф яюфЁ ф, яю¤Єюьє фюяєёЄшь Єюы№ъю юфшэ ORG - эрўры№э√щ. ┬√ЁртэштрЄ№ фрээ√х ьюцэю ўхЁхч DS -$&mask.

nedoexp.exe - фхЄюъхэшчрЄюЁ (юЄырфюўэ√щ ¤ъёяюЁЄ ЄюъхэшчшЁютрээюую рёёхьсыхЁр), т√ч√трхЄё  Єръ:
nedoexp filename.A_
(т√їюфэющ Їрщы exp.f)

        ┴шсышюЄхъш:

- └ёёхьсыхЁэ√щ Їрщы lib.i ёюфхЁцшЄ ёЄрэфрЁЄэ√х ьрЄхьрЄшўхёъшх ЇєэъЎшш (єьэюцхэшх, фхыхэшх, ёфтшуш) фы  Z80.
- ╟руюыютюўэ√щ Їрщы str.h ёюфхЁцшЄ ЇєэъЎшш ЁрсюЄ√ ёю ёЄЁюърьш. ─ы  хую шёяюы№чютрэш  яюфъы■ўрщЄх т ёЄрЁЄрях яюф Z80 str.i (шыш цх тьхёЄю эхую str.c ъюьяшышЁєщЄх т str.ast, str.var ш яюфъы■ўрщЄх шї т ёЄрЁЄрях).
- ╟руюыютюўэ√щ Їрщы io.h юфхЁцшЄ ЇєэъЎшш ЁрсюЄ√ ё Їрщырьш. ─ы  хую шёяюы№чютрэш  яюфъы■ўрщЄх т ёЄрЁЄрях яюф Z80 iofast.i яюф TR-DOS шыш io_os.i яюф NedoOS (шыш цх тьхёЄю эхую io.c яюф TR-DOS схч ЇєэъЎшщ эшчъюую єЁютэ  ъюьяшышЁєщЄх т io.ast, io.var ш яюфъы■ўрщЄх шї т ёЄрЁЄрях).
- runtime.h, runtime.i - эхюс чрЄхы№эр  ЁрэЄрщь-сшсышюЄхър фы  Z80 (яЁхЁ√трэш , яюЁЄ√).
- sprite.h, sprite.i - ёяЁрщЄютр  сшсышюЄхър фы  Z80.
- print.h, print.i (print_os.i фы  NedoOS) - сшсышюЄхър т√тюфр ЄхъёЄр фы  Z80 (setxy, prchar, nprintf).

        ╙ЄшышЄ√ фы  Windows:

- nedotrd - ЁрсюЄр ё юсЁрчюь фшёър т ЇюЁьрЄх TRD. ╠юцэю яхЁхтхёЄш эр NedoLang, хёыш т Їрщыютющ сшсышюЄхъх яюффхЁцрЄ№ ftell(pos)/fseek.
- nedores - ъюэтхЁЄюЁ уЁрЇшўхёъшї ЁхёєЁёют. ╧юър чрЄЁєфэшЄхы№эю яхЁхтхёЄш эр NedoLang шч-чр ЁрчьхЁр ьрёёштр.
- nedopad - юсЁхчър шыш фюяюыэхэшх Їрщыр фю чрфрээюую ЁрчьхЁр. ╠юцэю яхЁхтхёЄш эр NedoLang.
- _gui - яЁюёЄхщ°шщ шэЄхЁЇхщё ттюфр ш ъюьяшы Ўшш шёїюфэшър эр NedoLang (ьюцэю ё ртЄюьрЄшўхёъющ яхЁхъюьяшы Ўшхщ т яЁюЎхёёх ттюфр) ё яЁюёьюЄЁюь ю°шсюъ ш Ёхчєы№ЄрЄр т рёёхьсыхЁэюь тшфх.

╙ЄшышЄ√ эр NedoLang:
- nedodefb - яхЁхтюф Їрщыр т рёёхьсыхЁэюх °хёЄэрфЎрЄхЁшўэюх яЁхфёЄртыхэшх ё юсЁхчъющ шыш фюяюыэхэшхь (яюър Єюы№ъю фы  Z80). ╠юцэю яхЁхтхёЄш эр NedoLang. ═хюс чрЄхы№эю яЁш шёяюы№чютрэшш яЁхф√фє∙хщ єЄшышЄ√.
- nedodiff - ёЁртэхэшх фтєї Їрщыют (яюър Єюы№ъю фы  Z80, Є.ъ. шёяюы№чєхЄ print.i).
- batch - шэЄхЁяЁхЄрЄюЁ ъюьрэфэ√ї Їрщыют (яюър Єюы№ъю фы  Z80, ыхцшЄ яю рфЁхёє 64000).
- nedodel - єфрыхэшх Їрщыр.
- movedisk - єяыюЄэхэшх юсЁрчр фшёър яюёых єфрыхэш  Їрщыют.

╧Ёш єърчрэшш яєЄхщ т #include, include ш т ъюьрэфэющ ёЄЁюъх эрфю шёяюы№чютрЄ№ яЁ ьє■ ъюёє■ ўхЁЄє '/'.
╨хчєы№ЄрЄ ъюьяшы Ўшш ъырф╕Єё  т Єє цх фшЁхъЄюЁш■, уфх ыхцшЄ шёїюфэ√щ Їрщы.

╘юЁьрЄ рёёхьсыхЁэюую ЄхъёЄр чртшёшЄ юЄ рЁїшЄхъЄєЁ√ Ўхыхтюую яЁюЎхёёюЁр.

╧юффхЁцштр■Єё  фшЁхъЄшт√:
- db <byte>,<byte>... (dcb фы  ARM Thumb) - ёъюьяшышЁютрЄ№ срщЄ√
- dw <word>,<word>... (dcd фы  ARM Thumb) - ёъюьяшышЁютрЄ№ ёыютр
- dl <long>,<long>... (dcq фы  ARM Thumb) - ёъюьяшышЁютрЄ№ фтющэ√х ёыютр
- ds <size>[,<byte>] (space фы  ARM Thumb) - ёъюьяшышЁютрЄ№ яєёЄющ сыюъ чрфрээюую ЁрчьхЁр, ьюцэю 0
- org <addr> - єърчрЄ№ рфЁхё Ёрчьх∙хэш  яЁюуЁрьь√, ё ъюЄюЁюую юэр сєфхЄ ЁрсюЄрЄ№
- align <2^n> (фы  ARM Thumb) - яЁюяєёЄшЄ№ срщЄ√ фы  т√Ёртэштрэш  рфЁхёр Ёрчьх∙хэш  эр рфЁхё, ъЁрЄэ√щ ярЁрьхЄЁє (Єюую цх ьюцэю фюсшЄ№ё  ё яюью∙№■ ds -$&<2^n-1>
- end (фы  ARM Thumb - эшўхую эх фхырхЄ)
- include "filename.ast" - яюфъы■ўшЄ№ шёїюфэшъ ё чрфрээ√ь шьхэхь. ╘ръЄшўхёъш яюфъы■ўрхЄё  ЄюъхэшчшЁютрээ√щ filename.A_. ╨рчЁх°рхЄё  тыюцхээюёЄ№
- incbin "filename" - яюфъы■ўшЄ№ сшэрЁэ√щ Їрщы
- <label>=<expression> - яЁшётюшЄ№ ьхЄъє (ьюцэю яхЁхяЁшётюшЄ№)
- <label> equ <expression> - яЁшётюшЄ№ ьхЄъє (ьюцэю яхЁхяЁшётюшЄ№ - todo чряЁхЄшЄ№)
- export <label> - т√уЁєчшЄ№ чэрўхэшх ьхЄъш т Їрщы filename.D_ (ЄюъхэшчшЁютрээ√щ) т тшфх <label>=_+<labelvalue>. ▌ЄюЄ Їрщы ьюцэю тъы■ўрЄ№ т рёёхьсыхЁэ√щ ЄхъёЄ ўхЁхч include "filename.dcl".
- todo disp
- todo ent

╥хъє∙шщ рфЁхё ъюьяшы Ўшш ьюцэю яюыєўшЄ№ ё яюью∙№■ чэрър $.

╬яЁхфхы хьр  ьхЄър фюыцэр ёЄю Є№ т эрўрых ёЄЁюъш.

╨рчЁх°рхЄё  яшёрЄ№ эхёъюы№ъю ъюьрэф т ёЄЁюъх ўхЁхч яЁюсхы (ўхЁхч фтюхЄюўшх яюър эх ЁрсюЄрхЄ).

└ёёхьсыхЁ фтєїяЁюїюфэ√щ. ╩юфюухэхЁрЎш  яЁюшёїюфшЄ эр тЄюЁюь яЁюїюфх. ═р ьюьхэЄ ухэхЁрЎшш ърцфющ ёЄЁюўъш єцх фюыцэ√ с√Є№ т√ўшёыхэ√ тёх шёяюы№чєхь√х ьхЄъш, шэрўх т√тюфшЄё  ю°шсър.

dw $,$ ЁрсюЄрхЄ ъръ dw $ dw $