Rev 473 | 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 offpath=..\_sdk\echo ...compiling...nedolang main.ctype err.fecho ...tokenizing...nedotok main.s main.ast main.var ../_sdk/lib.iecho ...assembling...nedoasm main.S_type asmerr.fpause╙цх ьюцэю яЁютхЁ Є№, ўЄю тр°р яЁюуЁрььр ъюьяшышЁєхЄё - чряєёърщЄх 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.batnedotrd test.trd -nnedotrd 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.$bnedotrd 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 $