?login_element?

Subversion Repositories NedoOS

Rev

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

  1. //ЄюъхэшчрЄюЁ эх чэрхЄ ъюф√ ъюьрэф
  2. //ЄюъхэшчрЄюЁ эх яюфуы ф√трхЄ тяхЁ╕ф ш эх юЄьрЄ√трхЄ эрчрф
  3. //_asmwaseol ухэхЁшЁєхЄё  т asmrdword_tokspc(), р eol т√тюфшЄё  яюёых ъюьрэф√
  4.  
  5. //// imported
  6. #include "../_sdk/str.h"
  7. #include "../_sdk/io.h"
  8.  
  9. CONST PUINT LED_DSETTX;
  10. CONST PUINT LED_DCLRTX;
  11.  
  12. VAR UINT _curlnbeg; //эюьхЁ ёЄЁюъш эр ьюьхэЄ эрўрыр Єюъхэр //фы  read, emit
  13. VAR BOOL _cmts; //фы  read, emit
  14.  
  15. CONST BOOL _isalphanum[256];
  16.  
  17. EXTERN PCHAR _tword; //Єхъє∙хх ёыютю
  18. EXTERN UINT _lentword;
  19. //EXTERN CHAR _s0[_STRLEN]; //Єхъє∙хх ёыютю
  20.  
  21. EXTERN BOOL _waseof;
  22. EXTERN PBYTE _fin;
  23. EXTERN PBYTE _fout;
  24. FUNC BYTE readfin FORWARD();
  25.  
  26. EXTERN UINT _curline; //Єхъє∙шщ эюьхЁ ёЄЁюъш
  27. EXTERN UINT _waseols; //ўшёыю EOL ё яЁю°ыюую Ёрчр
  28. EXTERN UINT _spcsize; //ўшёыю яЁюсхыют яюёых яЁюўшЄрээющ ъюьрэф√
  29. EXTERN CHAR _cnext;
  30.  
  31. FUNC UINT stradd FORWARD(PCHAR s, UINT len, CHAR c);
  32. FUNC BOOL strcplow FORWARD(PCHAR s1, PCHAR s2);
  33.  
  34. PROC rdchcmt FORWARD();
  35. PROC rdch FORWARD();
  36. PROC rdquotes FORWARD(CHAR eol);
  37. PROC initrd FORWARD();
  38.  
  39. CONST BYTE _ASMMAXSPC;
  40.  
  41. PROC tokpre FORWARD(); //чряюыэшЄ№ ЄрсышЎє ьхЄюъ
  42.  
  43. ////
  44. VAR CHAR _c1small;
  45. VAR CHAR _c2small;
  46. VAR BOOL _asmwaseof;
  47. VAR UINT _asmwaseols; //ўшёыю EOL ё яЁю°ыюую Ёрчр
  48. VAR UINT _asmspcsize;
  49.  
  50. VAR CHAR _stokfn[_STRLEN]; //Єхъє∙хх ёыютю
  51. VAR PCHAR _tokfn; //Єхъє∙хх ёыютю
  52. VAR UINT _lentokfn;
  53.  
  54. VAR BYTE _temppar;
  55.  
  56. PROC migalka(PCHAR fn)
  57. {
  58. VAR UINT i;
  59.   _tokfn = (PCHAR)_stokfn;
  60.   _fin = nfopen(fn, "rb");
  61.   IF (_fin != (PBYTE)0) {
  62.     _waseof = +FALSE;
  63.     _curline = 1;
  64.     initrd();
  65.  
  66.     _lentokfn = 0;
  67.     i = 0;
  68.     WHILE (fn[_lentokfn] != '\0') {
  69.       _tokfn[_lentokfn] = fn[_lentokfn];
  70.       IF (fn[_lentokfn] == '.') i = _lentokfn;
  71.       INC _lentokfn;
  72.     };
  73.     //_lentokfn = strjoineol(_tokfn, 0, fn, '.'); //terminator is not copied
  74.     //_lentokfn = stradd(_tokfn, _lentokfn, '.');
  75.     _lentokfn = i+1; //after last dot
  76.     _lentokfn = stradd(_tokfn, _lentokfn, (CHAR)((BYTE)fn[_lentokfn]&0xdf));
  77.     _lentokfn = stradd(_tokfn, _lentokfn, '_');
  78.     _tokfn[_lentokfn] = '\0';
  79.     _fout = openwrite(_tokfn);
  80.  
  81.     loop: //WHILE (!_waseof) { //todo шыш endasm ('}')
  82.       _cnext = (CHAR)readfin();
  83.       IF (_waseof) goto quit;
  84.       writebyte(_fout, (BYTE)_cnext);
  85.     goto loop; //};
  86.     quit:
  87.    
  88.     fclose(_fout); //closefout();
  89.  
  90.     fclose(_fin); //closefin();
  91.    
  92.     led:
  93.       //POKE *(PUINT)(LED_DSETTX) = 1<<7;
  94.       POKE *(PUINT)(LED_DRXTX) = 1<<7;
  95.       //POKE *(PUINT)(LED_DCLRTX) = 1<<7;
  96.       POKE *(PUINT)(LED_DRXTX) = 0<<7;
  97.     goto led;
  98.   };
  99. }
  100.