Login

Subversion Repositories NedoOS

Rev

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

//// imported
PROC tokaddlbl FORWARD(PCHAR txt, PBYTE proc, BYTE data);

EXTERN PCHAR _tword; //Єхъє∙хх ёыютю
EXTERN UINT _lentword;

EXTERN BYTE _temppar;

PROC asmtoken FORWARD(BYTE token);

PROC tokorg FORWARD();
PROC tokalign FORWARD();
PROC tokpage FORWARD();
PROC tokif FORWARD();
PROC tokelse FORWARD();
PROC tokendif FORWARD();
PROC tokdup FORWARD();
PROC tokedup FORWARD();
PROC tokmacro FORWARD();
PROC tokendm FORWARD();
//PROC tokusemacro FORWARD();
PROC tokexport FORWARD();
PROC toklocal FORWARD();
PROC tokendl FORWARD();
PROC tokdisp FORWARD();
PROC tokent FORWARD();
PROC tokinclude FORWARD();
PROC tokincbin FORWARD();
PROC tokdb FORWARD();
PROC tokdw FORWARD();
PROC tokdl FORWARD();
PROC tokds FORWARD();
PROC tokdisplay FORWARD();
PROC tokrepeat FORWARD();
PROC tokuntil FORWARD();
PROC tokstruct FORWARD();
PROC tokendstruct FORWARD();
PROC tokcomment FORWARD();
PROC tokcolon FORWARD();

EXTERN CHAR _c1small;
EXTERN CHAR _c2small;
EXTERN BOOL _asmwaseof;
EXTERN UINT _asmwaseols;

PROC tokeol FORWARD();
PROC asmrdword_tokspc FORWARD(); //ЄюъхэшчшЁєхЄ яЁюсхы√ яюёых яЁю°ыющ ъюьрэф√ ш ўшЄрхЄ эютє■
PROC toktext FORWARD(); //ухэхЁшЁєхЄ <text>text<endtext>
PROC tokerr FORWARD(BYTE token);
PROC tokerrcmd FORWARD();
FUNC BOOL matchcomma FORWARD();
FUNC BOOL matchprime FORWARD();
FUNC BOOL matchquote FORWARD();
FUNC BOOL matchreequ FORWARD();
FUNC BOOL matchopen FORWARD();
FUNC BOOL matchclose FORWARD();
FUNC BOOL tokexpr FORWARD(); //фюыцхэ ўшЄрЄ№, эю эх ё·хфрЄ№ ёшьтюы ъюэЎр т√Ёрцхэш  (ёъюсър, чря Єр , ъюэхЎ ёЄЁюъш)
FUNC BOOL tokexpr_close FORWARD(); //яюёых эхую эшўхую сюы№°х эхы№ч  яЁютхЁ Є№, Є.ъ. ъєЁёюЁ ьюу ёфтшэєЄ№ё 
PROC asm_direct_expr_close_token FORWARD(BYTE token);

////

FUNC BOOL matchopenbrace()
{
VAR BOOL ok;
  IF (*(PCHAR)_tword=='{') {asmtoken(+_TOKOPENBRACE); asmrdword_tokspc(); ok = +TRUE;
  }ELSE ok = +FALSE;
RETURN ok;
}

FUNC BOOL matchclosebrace()
{
VAR BOOL ok;
  IF (*(PCHAR)_tword=='}') {asmtoken(+_TOKCLOSEBRACE); asmrdword_tokspc(); ok = +TRUE;
  }ELSE ok = +FALSE;
RETURN ok;
}

FUNC BOOL matchpc()
{
VAR BOOL ok;
  IF ((_c1small=='p')&&(_c2small=='c')&&(_lentword==2)) {
    asmtoken(+_RG_PC); asmrdword_tokspc(); ok = +TRUE;
  }ELSE ok = +FALSE;
  RETURN ok;
}

FUNC BOOL matchlr()
{
VAR BOOL ok;
  IF ((_c1small=='l')&&(_c2small=='r')&&(_lentword==2)) {
    asmtoken(+_RG_LR); asmrdword_tokspc(); ok = +TRUE;
  }ELSE ok = +FALSE;
  RETURN ok;
}

FUNC BOOL matchsp()
{
VAR BOOL ok;
  IF ((_c1small=='s')&&(_c2small=='p')&&(_lentword==2)) {
    asmtoken(+_RG_SP); asmrdword_tokspc(); ok = +TRUE;
  }ELSE ok = +FALSE;
  RETURN ok;
}

FUNC BOOL matchrp()
{
VAR BOOL ok;
VAR BYTE n;
  ok = +FALSE;
  IF (_c1small=='r') {
      IF ((_c2small=='p') && (_lentword==2)) { //rp ьхЄър
        asmrdword_tokspc();
        asmtoken(+_RG_RPBYNAME);
        toktext(); //ухэхЁшЁєхЄ <text>text<endtext>
        asmrdword_tokspc();
        ok = +TRUE;
      }ELSE { //r0..r12, rp
        IF (((BYTE)_c2small>=(BYTE)'0') && ((BYTE)_c2small<=(BYTE)'9')) {
          n = (BYTE)_c2small - 0x30;
          IF (_lentword==2) { //r0..r9
            goto rnok;
          }ELSE IF ((_lentword==3) && (n==0x01) && ((BYTE)_tword[2]>=(BYTE)'0') && ((BYTE)_tword[2]<=(BYTE)'2')) {
            n = 0x0a + (BYTE)_tword[2] - 0x30;
            rnok:
            asmtoken(+_RG_R0 + n); asmrdword_tokspc(); ok = +TRUE;
          };
        };
      };
  }ELSE IF (_lentword==2) {
    IF       ((_c1small=='s')&&(_c2small=='p')) {asmtoken(+_RG_SP); asmrdword_tokspc(); ok = +TRUE;
    }ELSE IF ((_c1small=='l')&&(_c2small=='r')) {asmtoken(+_RG_LR); asmrdword_tokspc(); ok = +TRUE;
    }ELSE IF ((_c1small=='p')&&(_c2small=='c')) {asmtoken(+_RG_PC); asmrdword_tokspc(); ok = +TRUE;
    };
  };
RETURN ok;
}

////////////// ьр°шээючртшёшь√х уЁєяя√ ёЁртэхэшщ фы  ярЁёшэур ўрёЄ√ї ярЁрьхЄЁют

PROC asm_rp_close_token(BYTE mrtoken)
{
  IF (matchrp()) {
    IF (matchclose()) {asmtoken(mrtoken);
    }ELSE tokerr(+_ERRCLOSE); //no closing bracket
  }ELSE tokerr(+_ERRREG); //wrong register
}

///////////////////////////////////////////////////

PROC tokmov()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (matchrp()) {
    IF (matchcomma()) {
      IF (matchrp()) {
        asmtoken(+_FMTR8R8);
//      }ELSE IF (tokexpr()) {
//        asmtoken(+_FMTRN);
      }ELSE tokerr(+_ERREXPR); //wrong expr
    }ELSE tokerr(+_ERRCOMMA); //no comma
  }ELSE tokerr(+_ERRREG); //wrong register
}

PROC tokmovs()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (matchrp()) {
    IF (matchcomma()) {
      IF (matchrp()) {
        asmtoken(+_FMTR0R0);
      }ELSE IF (tokexpr()) {
        asmtoken(+_FMTR0N);
      }ELSE tokerr(+_ERREXPR); //wrong expr
    }ELSE tokerr(+_ERRCOMMA); //no comma
  }ELSE tokerr(+_ERRREG); //wrong register
}

PROC tokmvns()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (matchrp()) {
    IF (matchcomma()) {
      IF (matchrp()) {
        asmtoken(+_FMTR0R0);
      }ELSE IF (tokexpr()) {
        asmtoken(+_FMTR0N);
      }ELSE tokerr(+_ERREXPR); //wrong expr
    }ELSE tokerr(+_ERRCOMMA); //no comma
  }ELSE tokerr(+_ERRREG); //wrong register
}

PROC tokaddsubN()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (matchrp()) {
    IF (matchcomma()) {
      IF (matchrp()) {
        IF (matchcomma()) { //adds r0,r1,r2/N
          IF (matchrp()) {
            asmtoken(+_FMTR0R0R0);
          }ELSE IF (tokexpr()) {
            asmtoken(+_FMTR0R0N7);
          }ELSE tokerr(+_ERREXPR); //wrong expr
        }ELSE asmtoken(+_FMTR0R0SAME);
      }ELSE IF (tokexpr()) {
        asmtoken(+_FMTR0N);
      }ELSE tokerr(+_ERREXPR); //wrong expr
    }ELSE tokerr(+_ERRCOMMA); //no comma
  }ELSE tokerr(+_ERRREG); //wrong register
}

PROC tokcmp()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (matchrp()) {
    IF (matchcomma()) {
      IF (matchrp()) {
        asmtoken(+_FMTR0R0);
      }ELSE IF (tokexpr()) {
        asmtoken(+_FMTR0N);
      }ELSE tokerr(+_ERREXPR); //wrong expr
    }ELSE tokerr(+_ERRCOMMA); //no comma
  }ELSE tokerr(+_ERRREG); //wrong register
}

PROC tokalucmdN()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (matchrp()) {
    IF (matchcomma()) {
      IF (matchrp()) {
        asmtoken(+_FMTR0R0);
      }ELSE tokerr(+_ERRREG); //wrong register
    }ELSE tokerr(+_ERRCOMMA); //no comma
  }ELSE tokerr(+_ERRREG); //wrong register
}

PROC tokrsbs()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (matchrp()) {
    IF (matchcomma()) {
      IF (matchrp()) {
        IF (matchcomma()) {
          IF (tokexpr()) {
            asmtoken(+_FMTR0R0ZERO);
          }ELSE tokerr(+_ERREXPR); //wrong expr
        }ELSE tokerr(+_ERRCOMMA); //no comma
      }ELSE tokerr(+_ERRREG); //wrong register
    }ELSE tokerr(+_ERRCOMMA); //no comma
  }ELSE tokerr(+_ERRREG); //wrong register
}

PROC tokshiftN()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (matchrp()) {
    IF (matchcomma()) {
      IF (matchrp()) {
        IF (matchcomma()) {
          IF (tokexpr()) {
            asmtoken(+_FMTR0R0N31);
          }ELSE tokerr(+_ERREXPR); //wrong expr
        }ELSE asmtoken(+_FMTR0R0);
      }ELSE tokerr(+_ERRREG); //wrong register
    }ELSE tokerr(+_ERRCOMMA); //no comma
  }ELSE tokerr(+_ERRREG); //wrong register
}

PROC tokrors()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (matchrp()) {
    IF (matchcomma()) {
      IF (matchrp()) {
        asmtoken(+_FMTR0R0);
      }ELSE tokerr(+_ERRREG); //wrong register
    }ELSE tokerr(+_ERRCOMMA); //no comma
  }ELSE tokerr(+_ERRREG); //wrong register
}

PROC tokpushpop()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (matchopenbrace()) {
    rloop:
    IF (matchrp()) {
      IF (matchcomma()) goto rloop; //ёяшёюъ ЁхушёЄЁют
      IF (matchclosebrace()) {
        asmtoken(+_FMTPUSHPOP);
      }ELSE tokerr(+_ERRCLOSE); //no closing bracket
    }ELSE tokerr(+_ERRREG); //wrong register
  }ELSE tokerr(+_ERROPEN); //no opening bracket
}

PROC tokldr()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (matchrp()) {
    IF (matchcomma()) {
      IF (matchopen()) {
        IF (matchrp()) {
          IF (matchclose()) { //ldr r0,[r1]
            asmtoken(+_FMTR0R0);
          }ELSE IF (matchcomma()) { //ldr r0,[r1,N*4]
            asmtoken(+_FMTR0R0NX4);
          }ELSE tokerr(+_ERRCLOSE); //no closing bracket
        }ELSE tokerr(+_ERRREG); //wrong register
      }ELSE IF (tokexpr()) { //ldr r0,mem
        asmtoken(+_FMTRADDR);
      }ELSE tokerr(+_ERREXPR); //wrong expr
    }ELSE tokerr(+_ERRCOMMA); //no comma
  }ELSE tokerr(+_ERRREG); //wrong register
}

PROC tokstr() //todo = tokldr
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (matchrp()) {
    IF (matchcomma()) {
      IF (matchopen()) {
        IF (matchrp()) {
          IF (matchclose()) { //str r0,[r1]
            asmtoken(+_FMTR0R0);
          }ELSE IF (matchcomma()) { //str r0,[r1,N*4]
            asmtoken(+_FMTR0R0NX4);
          }ELSE tokerr(+_ERRCLOSE); //no closing bracket
        }ELSE tokerr(+_ERRREG); //wrong register
      }ELSE IF (tokexpr()) { //str r0,mem
        asmtoken(+_FMTRADDR);
      }ELSE tokerr(+_ERREXPR); //wrong expr
    }ELSE tokerr(+_ERRCOMMA); //no comma
  }ELSE tokerr(+_ERRREG); //wrong register
}

PROC tokjp()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (tokexpr()) {asmtoken(+_FMTBADDR);
  }ELSE tokerr(+_ERREXPR); //wrong expr
}

PROC tokjpccN()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (tokexpr()) {asmtoken(+_FMTBSHORTADDR);
  }ELSE tokerr(+_ERREXPR); //wrong expr
}

PROC tokbl()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (tokexpr()) {asmtoken(+_FMTBLONGADDR);
  }ELSE tokerr(+_ERREXPR); //wrong expr
}

PROC tokbx()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (matchrp()) {asmtoken(+_FMTR);
  }ELSE tokerr(+_ERREXPR); //wrong expr
}

PROC tokblx()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  IF (matchrp()) {asmtoken(+_FMTR);
  }ELSE tokerr(+_ERREXPR); //wrong expr
}

PROC tokxxN()
{
  asmtoken(_temppar);
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  asmtoken(+_FMTXX);
}

PROC tokend()
{
  asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
}

PROC tokpre()
{
  tokaddlbl("NOP"  , (PBYTE)&tokxxN    , +_ASMNOP);
//_ASMADR, //???

  tokaddlbl("ADCS" , (PBYTE)&tokalucmdN, +_ASMADCS);
  tokaddlbl("ADDS" , (PBYTE)&tokaddsubN, +_ASMADDS);
  tokaddlbl("SBCS" , (PBYTE)&tokalucmdN, +_ASMSBCS);
  tokaddlbl("SUBS" , (PBYTE)&tokaddsubN, +_ASMSUBS);
  tokaddlbl("RSBS" , (PBYTE)&tokrsbs,    +_ASMRSBS);
  tokaddlbl("CMN"  , (PBYTE)&tokalucmdN, +_ASMCMN);
  tokaddlbl("CMP"  , (PBYTE)&tokcmp    , +_ASMCMP);
  tokaddlbl("TST"  , (PBYTE)&tokalucmdN, +_ASMTST);
  tokaddlbl("MULS" , (PBYTE)&tokalucmdN, +_ASMMULS);
  tokaddlbl("BICS" , (PBYTE)&tokalucmdN, +_ASMBICS);
//_ASMNEG,

  tokaddlbl("ANDS" , (PBYTE)&tokalucmdN, +_ASMANDS);
  tokaddlbl("ORRS" , (PBYTE)&tokalucmdN, +_ASMORRS);
  tokaddlbl("EORS" , (PBYTE)&tokalucmdN, +_ASMEORS);

  tokaddlbl("ASRS" , (PBYTE)&tokshiftN , +_ASMASRS);
  tokaddlbl("LSLS" , (PBYTE)&tokshiftN , +_ASMLSLS);
  tokaddlbl("LSRS" , (PBYTE)&tokshiftN , +_ASMLSRS);
  tokaddlbl("RORS" , (PBYTE)&tokrors   , +_ASMRORS);

  tokaddlbl("B"    , (PBYTE)&tokjp     , +_ASMB);
  tokaddlbl("BEQ"  , (PBYTE)&tokjpccN  , +_ASMBEQ);
  tokaddlbl("BNE"  , (PBYTE)&tokjpccN  , +_ASMBNE);
  tokaddlbl("BCS"  , (PBYTE)&tokjpccN  , +_ASMBCS); //HS?
  tokaddlbl("BCC"  , (PBYTE)&tokjpccN  , +_ASMBCC); //LO?
  tokaddlbl("BMI"  , (PBYTE)&tokjpccN  , +_ASMBMI);
  tokaddlbl("BPL"  , (PBYTE)&tokjpccN  , +_ASMBPL);
  tokaddlbl("BVS"  , (PBYTE)&tokjpccN  , +_ASMBVS);
  tokaddlbl("BVC"  , (PBYTE)&tokjpccN  , +_ASMBVC);
  tokaddlbl("BHI"  , (PBYTE)&tokjpccN  , +_ASMBHI);
  tokaddlbl("BLS"  , (PBYTE)&tokjpccN  , +_ASMBLS);
  tokaddlbl("BGE"  , (PBYTE)&tokjpccN  , +_ASMBGE);
  tokaddlbl("BLT"  , (PBYTE)&tokjpccN  , +_ASMBLT);
  tokaddlbl("BGT"  , (PBYTE)&tokjpccN  , +_ASMBGT);
  tokaddlbl("BLE"  , (PBYTE)&tokjpccN  , +_ASMBLE);
  tokaddlbl("BAL"  , (PBYTE)&tokjpccN  , +_ASMBAL);

  tokaddlbl("BL"   , (PBYTE)&tokbl     , +_ASMBL);
  tokaddlbl("BLX"  , (PBYTE)&tokblx    , +_ASMBLX);
  tokaddlbl("BX"   , (PBYTE)&tokbx     , +_ASMBX);

//_ASMBKPT, //???

//_ASMDMB,
//_ASMDSB,
//_ASMISB,
//_ASMCPSID,
//_ASMCPSIE,
//_ASMSEV,
//_ASMSVC,
//_ASMYIELD,

  tokaddlbl("LDR"  , (PBYTE)&tokldr    , +_ASMLDR);
  tokaddlbl("LDRB" , (PBYTE)&tokldr    , +_ASMLDRB);
  tokaddlbl("LDRH" , (PBYTE)&tokldr    , +_ASMLDRH);
  tokaddlbl("LDRSB", (PBYTE)&tokldr    , +_ASMLDRSB);
  tokaddlbl("LDRSH", (PBYTE)&tokldr    , +_ASMLDRSH);
//_ASMLDM, //???
//_ASMLDMFD, //???
//_ASMLDMIA, //???
  tokaddlbl("STR"  , (PBYTE)&tokstr    , +_ASMSTR);
  tokaddlbl("STRB" , (PBYTE)&tokstr    , +_ASMSTRB);
  tokaddlbl("STRH" , (PBYTE)&tokstr    , +_ASMSTRH);
//_ASMSTM, //???
//_ASMSTMEA, //???
//_ASMSTMIA, //???

  tokaddlbl("MOV"  , (PBYTE)&tokmov    , +_ASMMOV);
  tokaddlbl("MOVS" , (PBYTE)&tokmovs   , +_ASMMOVS);
  tokaddlbl("MVNS" , (PBYTE)&tokmvns   , +_ASMMVNS);
//_ASMMRS,
//_ASMMSR,
//_ASMCPY, //???

  tokaddlbl("POP"  , (PBYTE)&tokpushpop, +_ASMPOP);
  tokaddlbl("PUSH" , (PBYTE)&tokpushpop, +_ASMPUSH);

//_ASMREV,
//_ASMREV16,
//_ASMREVSH,
//_ASMSXTB,
//_ASMSXTH,
//_ASMUXTB,
//_ASMUXTH,

  tokaddlbl("DCB"  , (PBYTE)&tokdb  , 0x00); //db ..., тьхёЄю defb - эрфю яюёых ърцфюую т√Ёрцхэш  ЇюЁьрЄ writeN, ЁрчсшЁрЄ№ тЁєўэє■ эх яюыєўшЄё  шч-чр т√Ёрцхэш 
  tokaddlbl("DCD"  , (PBYTE)&tokdw  , 0x00); //dw ..., тьхёЄю defw - эрфю яюёых ърцфюую т√Ёрцхэш  ЇюЁьрЄ writeNN
  tokaddlbl("DCQ"  , (PBYTE)&tokdl  , 0x00); //dl ..., тьхёЄю defl - эрфю яюёых ърцфюую т√Ёрцхэш  ЇюЁьрЄ writeNNNN
  tokaddlbl("SPACE", (PBYTE)&tokds  , 0x00); //ds ..., тьхёЄю defs - эрфю ЇюЁьрЄ writeds

  tokaddlbl("ORG"  , (PBYTE)&tokorg , 0x00); /**org nn - эрфю ЇюЁьрЄ writeorg, ЁрчсшЁрЄ№ тЁєўэє■ эх яюыєўшЄё  шч-чр т√Ёрцхэш */

  tokaddlbl("ALIGN",(PBYTE)&tokalign,0x00); /**align nn - эрфю ЇюЁьрЄ writealign, ЁрчсшЁрЄ№ тЁєўэє■ эх яюыєўшЄё  шч-чр т√Ёрцхэш */
//  tokaddlbl("PAGE", (PBYTE)&tokpage, 0x00); /**page n - эрфю ЇюЁьрЄ writepage, ЁрчсшЁрЄ№ тЁєўэє■ эх яюыєўшЄё  шч-чр т√Ёрцхэш */
//  tokaddlbl("IF"  , (PBYTE)&tokif  , 0x00); /**if nn - эрфю ЇюЁьрЄ writeif, ЁрчсшЁрЄ№ тЁєўэє■ эх яюыєўшЄё  шч-чр т√Ёрцхэш */
//  tokaddlbl("ELSE", (PBYTE)&tokelse, 0x00); /**else*/
//  tokaddlbl("ENDIF",(PBYTE)&tokendif,0x00); /**endif*/
//  tokaddlbl("DUP" , (PBYTE)&tokdup , 0x00); /**dup nn - эрфю ЇюЁьрЄ writedup, ЁрчсшЁрЄ№ тЁєўэє■ эх яюыєўшЄё  шч-чр т√Ёрцхэш */
//  tokaddlbl("EDUP", (PBYTE)&tokedup, 0x00); /**edup*/
//  tokaddlbl("MACRO",(PBYTE)&tokmacro,0x00); /**macro name - ЁрчсшЁрЄ№ тЁєўэє■?*/
//  tokaddlbl("ENDM", (PBYTE)&tokendm, 0x00); /**endm*/
  //tokaddlbl("USEMACRO",(PBYTE)&tokusemacro, 0x00); /**usemacro name ... - ЁрчсшЁрЄ№ тЁєўэє■?*/
  tokaddlbl("EXPORT",(PBYTE)&tokexport, 0x00); /**export name - ЁрчсшЁрЄ№ тЁєўэє■?*/
//  tokaddlbl("LOCAL",(PBYTE)&toklocal,0x00); /**local name - ЁрчсшЁрЄ№ тЁєўэє■?*/
//  tokaddlbl("ENDL", (PBYTE)&tokendl, 0x00); /**endl*/
//  tokaddlbl("DISP", (PBYTE)&tokdisp, 0x00); /**disp nn - эрфю ЇюЁьрЄ writedisp*/
//  tokaddlbl("ENT" , (PBYTE)&tokent , 0x00); /**ent*/
  tokaddlbl("INCLUDE",(PBYTE)&tokinclude, 0x00); /**include "filename" - ЁрчсшЁрЄ№ тЁєўэє■?*/
  tokaddlbl("INCBIN",(PBYTE)&tokincbin, 0x00); /**incbin "filename" - ЁрчсшЁрЄ№ тЁєўэє■?*/
//  tokaddlbl("DISPLAY",(PBYTE)&tokdisplay, 0x00); /**display nn - ЇюЁьрЄ√ displaynum, displaystring - ЁрчсшЁрЄ№ тЁєўэє■ эх яюыєўшЄё  шч-чр т√Ёрцхэшщ*/
//  tokaddlbl("REPEAT",(PBYTE)&tokrepeat, 0x00); /**repeat*/
//  tokaddlbl("UNTIL",(PBYTE)&tokuntil, 0x00); /**until nn - эрфю ЇюЁьрЄ writeuntil*/
//  tokaddlbl("STRUCT",(PBYTE)&tokstruct, 0x00); /**struct name - ЁрчсшЁрЄ№ тЁєўэє■?*/
//  tokaddlbl("ENDSTRUCT",(PBYTE)&tokendstruct, 0x00); /**endstruct*/

  tokaddlbl("END"  , (PBYTE)&tokend  , 0x00); //ds ..., тьхёЄю defs - эрфю ЇюЁьрЄ writeds

  tokaddlbl(":",(PBYTE)&tokcolon, 0x00);
//  tokaddlbl(";",(PBYTE)&tokcomment, 0x00); //яЁютхЁ хЄё  юЄфхы№эю
}