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 $