Subversion Repositories NedoOS

Rev

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

  1. //// imported
  2. #include "../_sdk/io.h"
  3. #include "../_sdk/str.h" //stradd, strjoineol
  4. #include "../_sdk/emit.h"
  5.  
  6. EXTERN BYTE _token; //Єхъє∙шщ ёўшЄрээ√щ Єюъхэ
  7. EXTERN BYTE _prefixedtoken; //Ёрё°шЇЁютрээ√щ Єюъхэ ё єў╕Єюь \n ш Є.я.
  8. EXTERN BYTE _curdir; //Єюъхэ Єхъє∙хщ юсЁрсрЄ√трхьющ фшЁхъЄшт√ рёёхьсыхЁр (эєцэю фы  яЁртшы№эющ юсЁрсюЄъш ЇюЁьрЄр)
  9. EXTERN BOOL _labelchanged; //Їыру "шчьхэшыш ьхЄъє" - эєцэю фы  ю°шсъш яю LABEL (эю эх яю REEQU)
  10. EXTERN LONG _value[_MAXVALS];
  11. EXTERN PBYTE _inclfile[_MAXINCLUDES];
  12.  
  13. EXTERN UINT _curlnbeg; //эюьхЁ ёЄЁюъш эр ьюьхэЄ эрўрыр Єюъхэр
  14.  
  15. EXTERN BYTE _reg; //яюёыхфэшщ ЁхушёЄЁ
  16. EXTERN BYTE _oldreg; //яЁхф√фє∙шщ ЁхушёЄЁ
  17. EXTERN BYTE _base; //срчр ъюфр ъюьрэф√
  18. EXTERN BYTE _base2; //срчр2 ъюфр ъюьрэф√ (фы  єёыютэ√ї яхЁхїюфют)
  19.  
  20. EXTERN BYTE _nvalues; //ўшёыю чэрўхэшщ т ёЄхъх
  21. EXTERN BYTE _ninclfiles; //ўшёыю юЄъЁ√Є√ї Їрщыют
  22.  
  23. EXTERN UINT _curaddr; //рфЁхё, ъєфр яш°хь
  24. EXTERN UINT _curshift; //$=(_curaddr+curshift), curshift=(disp-_curaddr)
  25. EXTERN UINT _curbegin; //эрўры№э√щ рфЁхё сыюър, ъєфр яш°хь
  26. //EXTERN BYTE _curpage0;
  27. //EXTERN BYTE _curpage1;
  28. //EXTERN BYTE _curpage2;
  29. //EXTERN BYTE _curpage3;
  30.  
  31. EXTERN PBYTE _pstr; //ьхЄър т ёЄЁюъх чрърэўштрхЄё  TOK_ENDTEXT
  32. EXTERN PBYTE _curlabeltext;
  33. EXTERN PBYTE _evallabeltext;
  34. EXTERN PCHAR _fn;
  35. EXTERN UINT _lenfn;
  36.  
  37. PROC asmpushvalue FORWARD(LONG value);
  38. PROC asmpushbool FORWARD(BOOL b);
  39. FUNC LONG asmpopvalue FORWARD();
  40. //PROC asmwritestate FORWARD();
  41. //PROC asmreadstate FORWARD();
  42. PROC readlabel FORWARD();
  43. PROC findlabel FORWARD(PBYTE labeltext);
  44. FUNC LONG getlabel FORWARD(); //т√ч√трЄ№ эхяюёЁхфёЄтхээю яюёых findlabel!!!
  45. PROC errwrongreg FORWARD();
  46. PROC errwrongpar FORWARD();
  47. PROC asmerrtext FORWARD();
  48. PROC asmbyte FORWARD(BYTE _token);
  49. PROC asmemitblock FORWARD(); //чряшёрЄ№ рфЁхёр сыюър org
  50. PROC asmdir_label FORWARD();
  51. PROC asmfmt_reequ FORWARD();
  52.  
  53. PROC asmreadprefixed FORWARD();
  54.  
  55. EXTERN PBYTE _fincb;
  56. EXTERN BOOL _asms;
  57.  
  58. PROC decltoken FORWARD(BYTE bb);
  59. PROC decldig FORWARD(UINT d);
  60.  
  61. EXTERN PBYTE _forg;
  62. EXTERN PBYTE _fdecl;
  63.  
  64. EXTERN BYTE _isaddr; //ьрёър "т т√Ёрцхэшш шёяюы№чютрыё  рфЁхё"
  65.  
  66. #ifdef TARGET_THUMB
  67. #include "asmf_arm.c" //// ьр°шээючртшёшь√х яЁюЎхфєЁ√ ш юс· тыхэш 
  68. #else
  69. #include "asmf_z80.c" //// ьр°шээючртшёшь√х яЁюЎхфєЁ√ ш юс· тыхэш 
  70. #endif
  71.  
  72. PROC asmloop()
  73. {
  74. VAR UINT scale; //яюърчрЄхы№ ёшёЄхь√ ёўшёыхэш 
  75. VAR LONG tempvalue; //чэрўхэшх, ёўшЄрээюх яю popvalue ш ъюЄюЁюх яш°хь яю pushvalue
  76. VAR UINT i;
  77.   loop:
  78.     _token = readfin();
  79.     switch (_token) {
  80.  
  81. #include "asmj.c" //// ёЄрэфрЁЄэ√х тхЄъш
  82.  
  83. #ifdef TARGET_THUMB
  84. #include "asmj_arm.c" //// ьр°шээючртшёшь√х тхЄъш
  85. #else
  86. #include "asmj_z80.c" //// ьр°шээючртшёшь√х тхЄъш
  87. #endif
  88.  
  89.       default : {err(+(CHAR)_token); enderr(); goto loop;}
  90.     };
  91.   endloop:;
  92. }
  93.  
  94.