Login

Subversion Repositories NedoOS

Rev

Rev 653 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

//// imported
#include "../_sdk/io.h"
#include "../_sdk/str.h" //stradd, strjoineol
#include "../_sdk/emit.h"

#ifdef TARGET_SCRIPT
#include <math.h>
#endif

EXTERN BYTE _token; //Єхъє∙шщ ёўшЄрээ√щ Єюъхэ
EXTERN BYTE _prefixedtoken; //Ёрё°шЇЁютрээ√щ Єюъхэ ё єў╕Єюь \n ш Є.я.
EXTERN BYTE _curdir; //Єюъхэ Єхъє∙хщ юсЁрсрЄ√трхьющ фшЁхъЄшт√ рёёхьсыхЁр (эєцэю фы  яЁртшы№эющ юсЁрсюЄъш ЇюЁьрЄр)
EXTERN BOOL _labelchanged; //Їыру "шчьхэшыш ьхЄъє" - эєцэю фы  ю°шсъш яю LABEL (эю эх яю REEQU)
EXTERN LONG _value[_MAXVALS];
EXTERN PBYTE _inclfile[_MAXINCLUDES];

EXTERN UINT _curlnbeg; //эюьхЁ ёЄЁюъш эр ьюьхэЄ эрўрыр Єюъхэр

EXTERN BYTE _reg; //яюёыхфэшщ ЁхушёЄЁ
EXTERN BYTE _oldreg; //яЁхф√фє∙шщ ЁхушёЄЁ
EXTERN BYTE _base; //срчр ъюфр ъюьрэф√
EXTERN BYTE _base2; //срчр2 ъюфр ъюьрэф√ (фы  єёыютэ√ї яхЁхїюфют)

EXTERN BYTE _nvalues; //ўшёыю чэрўхэшщ т ёЄхъх
EXTERN BYTE _ninclfiles; //ўшёыю юЄъЁ√Є√ї Їрщыют

EXTERN UINT _curaddr; //рфЁхё, ъєфр яш°хь
EXTERN UINT _curshift; //$=(_curaddr+curshift), curshift=(disp-_curaddr)
EXTERN UINT _curbegin; //эрўры№э√щ рфЁхё сыюър, ъєфр яш°хь
//EXTERN BYTE _curpage0;
//EXTERN BYTE _curpage1;
//EXTERN BYTE _curpage2;
//EXTERN BYTE _curpage3;

EXTERN PBYTE _pstr; //ьхЄър т ёЄЁюъх чрърэўштрхЄё  TOK_ENDTEXT
EXTERN PBYTE _curlabeltext;
EXTERN PBYTE _evallabeltext;
EXTERN PCHAR _fn;
EXTERN UINT _lenfn;

PROC asmpushvalue FORWARD(LONG value);
PROC asmpushbool FORWARD(BOOL b);
FUNC LONG asmpopvalue FORWARD();
//PROC asmwritestate FORWARD();
//PROC asmreadstate FORWARD();
PROC readlabel FORWARD();
FUNC UINT findlabel FORWARD(PBYTE labeltext);
FUNC LONG getlabel FORWARD(); //т√ч√трЄ№ эхяюёЁхфёЄтхээю яюёых findlabel!!!
PROC errwrongreg FORWARD();
PROC errwrongpar FORWARD();
PROC asmerrtext FORWARD();
PROC asmbyte FORWARD(BYTE _token);
PROC asmemitblock FORWARD(); //чряшёрЄ№ рфЁхёр сыюър org
PROC asmdir_label FORWARD();
PROC asmfmt_reequ FORWARD();

PROC asmreadprefixed FORWARD();

EXTERN PBYTE _fincb;
EXTERN BOOL _asms;

PROC decltoken FORWARD(BYTE bb);
PROC decldig FORWARD(UINT d);

EXTERN PBYTE _forg;
EXTERN PBYTE _fdecl;

EXTERN BYTE _isaddr; //ьрёър "т т√Ёрцхэшш шёяюы№чютрыё  рфЁхё"

EXTERN UINT _plabel_index; //яюёых findlabel ёюфхЁцшЄ єърчрЄхы№ эр эрўрыю фрээ√ї ьхЄъш

#ifdef TARGET_THUMB
#include "asmf_arm.c" //// ьр°шээючртшёшь√х яЁюЎхфєЁ√ ш юс· тыхэш 
#else
#include "asmf_z80.c" //// ьр°шээючртшёшь√х яЁюЎхфєЁ√ ш юс· тыхэш 
#endif

PROC fsm()
{
VAR UINT scale; //яюърчрЄхы№ ёшёЄхь√ ёўшёыхэш 
#ifdef TARGET_SCRIPT
VAR double fvalue;
VAR LONG ffraction;
VAR LONG ffractionscale;
VAR LONG fexp;
VAR BOOL fexpminus;
#endif
VAR LONG tempvalue; //чэрўхэшх, ёўшЄрээюх яю popvalue ш ъюЄюЁюх яш°хь яю pushvalue
VAR UINT i;
  loop:
    _token = readfin();
    switch (_token) {

#include "asmj.c" //// ёЄрэфрЁЄэ√х тхЄъш

#ifdef TARGET_THUMB
#include "asmj_arm.c" //// ьр°шээючртшёшь√х тхЄъш
#else
#include "asmj_z80.c" //// ьр°шээючртшёшь√х тхЄъш
#endif

      default : {err((CHAR)_token); enderr(); goto loop;}
    };
  endloop:;
}