Login

Subversion Repositories NedoOS

Rev

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

//// imported
#include "../_sdk/io.h"
#include "../_sdk/str.h"
////
EXPORT VAR BOOL _cmts;
EXPORT VAR UINT _curlnbeg; //эюьхЁ ёЄЁюъш эр ьюьхэЄ эрўрыр Єюъхэр

EXPORT VAR PBYTE _ferr;

EXPORT VAR PBYTE _fvar;

EXPORT VAR BOOL _hints;
EXPORT VAR BOOL _errs;

VAR PBYTE _curfile;

PROC endhint FORWARD();

EXPORT VAR CHAR _m_fn[_STRLEN];
EXPORT VAR PCHAR _fn;
EXPORT VAR UINT _lenfn;

EXPORT VAR BOOL _wasdig;
EXPORT VAR CHAR _nbuf[6];
EXPORT VAR UINT _lennbuf;
VAR UINT _num;

EXPORT PROC emitdig(UINT d)
{
VAR BYTE dig;
  dig = (BYTE)'0';
  WHILE (_num >= d) {
    _num = _num - d;
    INC dig;
    _wasdig = +TRUE;
  };
  IF (_wasdig) {
    //_lennbuf = stradd(_nbuf, _lennbuf, (CHAR)dig);
    _nbuf[_lennbuf] = (CHAR)dig;
    INC _lennbuf;
  };
}

EXPORT PROC emitn(UINT i)
{
  _num = i;
  _lennbuf = 0;
  _wasdig = +TRUE;
  IF (i != 0) {
    _wasdig = +FALSE;
    emitdig(10000);
    emitdig(1000);
    emitdig(100);
    emitdig(10);
  };
  emitdig(1);
  _nbuf[_lennbuf] = '\0'; //strclose(_nbuf, _lennbuf);
}

EXPORT PROC emituint(UINT i, PBYTE f)
{
  emitn(i);
  fputs(_nbuf, f);
}

/////////////////////////////////////
//яЁюЎхфєЁ√ эшчъюую єЁютэ , т√ч√трхь√х ъюфюухэхЁрЄюЁюь

EXPORT PROC asmc(CHAR c)
{
  writefout((BYTE)c);
}

EXPORT PROC asmstr(PCHAR s)
{
  fputs(s, _fout);
}

EXPORT PROC asmuint(UINT i)
{
  emituint(i, _fout);
}

EXPORT PROC endasm()
{
  writefout((BYTE)'\n');
}

/////////////////////////////////////
//яЁюЎхфєЁ√ эшчъюую єЁютэ , т√ч√трхь√х ъюьяшы ЄюЁюь ш ъюфюухэхЁрЄюЁюь

#ifdef USE_COMMENTS
;;EXPORT PROC cmt(CHAR c) {
;;  IF (_cmts) writefout((BYTE)c);
;;}

;;EXPORT PROC cmtstr(PCHAR s) {
;;  IF (_cmts) fputs(s, _fout);
;;}

;;EXPORT PROC cmtuint(UINT i) {
;;  IF (_cmts) emituint(i, _fout);
;;}

;;EXPORT PROC endcmt() {
;;  IF (_cmts) {
;;    fputs(" ;Line=", _fout);
;;    emituint(_curlnbeg, _fout);
;;    writefout(+(BYTE)'\n');
;;  };
;;}
#endif //USE_COMMENTS

#ifdef USE_HINTS
;;EXPORT PROC hint(CHAR c) {
;;  IF (_hints) writefout((BYTE)c);
;;}

;;EXPORT PROC hintstr(PCHAR s) {
;;  IF (_hints) fputs(s, _fout);
;;}

;;EXPORT PROC hintuint(UINT i) {
;;  IF (_hints) emituint(i, _fout);
;;}

;;EXPORT PROC endhint() {
;;  IF (_hints) {
;;    fputs(" ;Line=", _fout);
;;    emituint(_curlnbeg, _fout);
;;    writefout(+(BYTE)'\n');
;;  };
;;}

;;EXPORT PROC hinttype(PCHAR msg, BYTE t) {
;;  hintstr("//"); hintstr(msg); hintstr(" type="); hintuint((UINT)t); endhint();
;;}
#endif //USE_HINTS

EXPORT PROC err(CHAR c)
{
  IF (_errs) writebyte(_ferr, (BYTE)c);
}

EXPORT PROC errstr(PCHAR s)
{
  IF (_errs) fputs(s, _ferr);
}

EXPORT PROC erruint(UINT i)
{
  IF (_errs) emituint(i, _ferr);
}

EXPORT PROC enderr()
{
  IF (_errs) {
    writebyte(_ferr, (BYTE)';'); fputs(_fn, _ferr);
    fputs(" line=", _ferr); emituint(_curlnbeg, _ferr);
    writebyte(_ferr, (BYTE)'\n');
  };
}

EXPORT PROC varc(CHAR c)
{
  writebyte(_fvar, (BYTE)c);
}

EXPORT PROC varstr(PCHAR s)
{
  fputs(s, _fvar);
}

EXPORT PROC varuint(UINT i)
{
  emituint(i, _fvar);
}

EXPORT PROC endvar()
{
  writebyte(_fvar, (BYTE)'\n');
}