Subversion Repositories NedoOS

Rev

Rev 50 | Blame | Compare with Previous | Last modification | View Log | Download

  1. //// imported
  2. PROC tokaddlbl FORWARD(PCHAR txt, PBYTE proc, BYTE data);
  3.  
  4. EXTERN PCHAR _tword; //Єхъє∙хх ёыютю
  5. EXTERN UINT _lentword;
  6.  
  7. EXTERN BYTE _temppar;
  8.  
  9. PROC asmtoken FORWARD(BYTE token);
  10.  
  11. PROC tokorg FORWARD();
  12. PROC tokalign FORWARD();
  13. PROC tokpage FORWARD();
  14. PROC tokif FORWARD();
  15. PROC tokelse FORWARD();
  16. PROC tokendif FORWARD();
  17. PROC tokdup FORWARD();
  18. PROC tokedup FORWARD();
  19. PROC tokmacro FORWARD();
  20. PROC tokendm FORWARD();
  21. //PROC tokusemacro FORWARD();
  22. PROC tokexport FORWARD();
  23. PROC toklocal FORWARD();
  24. PROC tokendl FORWARD();
  25. PROC tokdisp FORWARD();
  26. PROC tokent FORWARD();
  27. PROC tokinclude FORWARD();
  28. PROC tokincbin FORWARD();
  29. PROC tokdb FORWARD();
  30. PROC tokdw FORWARD();
  31. PROC tokdl FORWARD();
  32. PROC tokds FORWARD();
  33. PROC tokdisplay FORWARD();
  34. PROC tokrepeat FORWARD();
  35. PROC tokuntil FORWARD();
  36. PROC tokstruct FORWARD();
  37. PROC tokendstruct FORWARD();
  38. PROC tokcomment FORWARD();
  39. PROC tokcolon FORWARD();
  40.  
  41. EXTERN CHAR _c1small;
  42. EXTERN CHAR _c2small;
  43. EXTERN BOOL _asmwaseof;
  44. EXTERN UINT _asmwaseols;
  45.  
  46. PROC tokeol FORWARD();
  47. PROC asmrdword_tokspc FORWARD(); //ЄюъхэшчшЁєхЄ яЁюсхы√ яюёых яЁю°ыющ ъюьрэф√ ш ўшЄрхЄ эютє■
  48. PROC toktext FORWARD(); //ухэхЁшЁєхЄ <text>text<endtext>
  49. PROC tokerr FORWARD(BYTE token);
  50. PROC tokerrcmd FORWARD();
  51. FUNC BOOL matchcomma FORWARD();
  52. FUNC BOOL matchprime FORWARD();
  53. FUNC BOOL matchquote FORWARD();
  54. FUNC BOOL matchreequ FORWARD();
  55. FUNC BOOL matchopen FORWARD();
  56. FUNC BOOL matchclose FORWARD();
  57. FUNC BOOL tokexpr FORWARD(); //фюыцхэ ўшЄрЄ№, эю эх ё·хфрЄ№ ёшьтюы ъюэЎр т√Ёрцхэш  (ёъюсър, чря Єр , ъюэхЎ ёЄЁюъш)
  58. FUNC BOOL tokexpr_close FORWARD(); //яюёых эхую эшўхую сюы№°х эхы№ч  яЁютхЁ Є№, Є.ъ. ъєЁёюЁ ьюу ёфтшэєЄ№ё 
  59. PROC asm_direct_expr_close_token FORWARD(BYTE token);
  60.  
  61. //// extra (BYTE) for C++ Builder
  62. FUNC BOOL matchnzzncc()
  63. {
  64.   IF ((BYTE)_lentword==0x01) {
  65.     IF       (_c1small=='z') {asmtoken(+_ASMZ); asmrdword_tokspc(); RETURN +TRUE;
  66.     }ELSE IF (_c1small=='c') {asmtoken(+_ASMC); asmrdword_tokspc(); RETURN +TRUE;
  67.     };
  68.   }ELSE IF ((BYTE)_lentword==0x02) {
  69.     IF (_c1small=='n') {
  70.       IF       (_c2small=='z') {asmtoken(+_ASMNZ); asmrdword_tokspc(); RETURN +TRUE;
  71.       }ELSE IF (_c2small=='c') {asmtoken(+_ASMNC); asmrdword_tokspc(); RETURN +TRUE;
  72.       };
  73.     };
  74.   };
  75. RETURN +FALSE;
  76. }
  77.  
  78. FUNC BOOL matchcc()
  79. {
  80.   IF ((BYTE)_lentword==0x01) {
  81.     IF       (_c1small=='z') {asmtoken(+_ASMZ); asmrdword_tokspc(); RETURN +TRUE;
  82.     }ELSE IF (_c1small=='c') {asmtoken(+_ASMC); asmrdword_tokspc(); RETURN +TRUE;
  83.     }ELSE IF (_c1small=='p') {asmtoken(+_ASMP); asmrdword_tokspc(); RETURN +TRUE;
  84.     }ELSE IF (_c1small=='m') {asmtoken(+_ASMM); asmrdword_tokspc(); RETURN +TRUE;
  85.     };
  86.   }ELSE IF ((BYTE)_lentword==0x02) {
  87.     IF (_c1small=='n') {
  88.       IF       (_c2small=='z') {asmtoken(+_ASMNZ); asmrdword_tokspc(); RETURN +TRUE;
  89.       }ELSE IF (_c2small=='c') {asmtoken(+_ASMNC); asmrdword_tokspc(); RETURN +TRUE;
  90.       };
  91.     }ELSE IF (_c1small=='p') {
  92.       IF       (_c2small=='o') {asmtoken(+_ASMPO); asmrdword_tokspc(); RETURN +TRUE;
  93.       }ELSE IF (_c2small=='e') {asmtoken(+_ASMPE); asmrdword_tokspc(); RETURN +TRUE;
  94.       };
  95.     };
  96.   };
  97. RETURN +FALSE;
  98. }
  99.  
  100. FUNC BOOL matcha()
  101. {
  102.   IF (_c1small=='a') {
  103.     IF ((BYTE)_lentword==0x01) {
  104.       asmtoken(+_RG_A); asmrdword_tokspc(); RETURN +TRUE;
  105.     };
  106.   };
  107. RETURN +FALSE;
  108. }
  109.  
  110. FUNC BOOL matchc()
  111. {
  112.   IF (_c1small=='c') {
  113.     IF ((BYTE)_lentword==0x01) {
  114.       asmtoken(+_RG_C); asmrdword_tokspc(); RETURN +TRUE;
  115.     };
  116.   };
  117. RETURN +FALSE;
  118. }
  119. /**
  120. FUNC BOOL matchbc()
  121. {
  122.   IF (_c1small=='b') {
  123.     IF (_c2small=='c') {
  124.       IF ((BYTE)_lentword==0x02) {
  125.         asmtoken(+_RG_BC); asmrdword_tokspc(); RETURN +TRUE;
  126.       };
  127.     };
  128.   };
  129. RETURN +FALSE;
  130. }
  131. */
  132. FUNC BOOL matchde()
  133. {
  134.   IF (_c1small=='d') {
  135.     IF (_c2small=='e') {
  136.       IF ((BYTE)_lentword==0x02) {
  137.         asmtoken(+_RG_DE); asmrdword_tokspc(); RETURN +TRUE;
  138.       };
  139.     };
  140.   };
  141. RETURN +FALSE;
  142. }
  143.  
  144. FUNC BOOL matchhl()
  145. {
  146.   IF (_c1small=='h') {
  147.     IF (_c2small=='l') {
  148.       IF ((BYTE)_lentword==0x02) {
  149.         asmtoken(+_RG_HL); asmrdword_tokspc(); RETURN +TRUE;
  150.       };
  151.     };
  152.   };
  153. RETURN +FALSE;
  154. }
  155.  
  156. FUNC BOOL matchsp()
  157. {
  158.   IF (_c1small=='s') {
  159.     IF (_c2small=='p') {
  160.       IF ((BYTE)_lentword==0x02) {
  161.         asmtoken(+_RG_SP); asmrdword_tokspc(); RETURN +TRUE;
  162.       };
  163.     };
  164.   };
  165. RETURN +FALSE;
  166. }
  167.  
  168. FUNC BOOL matchaf()
  169. {
  170.   IF (_c1small=='a') {
  171.     IF (_c2small=='f') {
  172.       IF ((BYTE)_lentword==0x02) {
  173.         asmtoken(+_RG_AF); asmrdword_tokspc(); RETURN +TRUE;
  174.       };
  175.     };
  176.   };
  177. RETURN +FALSE;
  178. }
  179.  
  180. FUNC BOOL matchixiy()
  181. {
  182.   IF ((BYTE)_lentword==0x02) {
  183.     IF (_c1small=='i') {
  184.       IF       (_c2small=='x') {
  185.         asmtoken(+_RG_IX); asmrdword_tokspc(); RETURN +TRUE;
  186.       }ELSE IF (_c2small=='y') {
  187.         asmtoken(+_RG_IY); asmrdword_tokspc(); RETURN +TRUE;
  188.       };
  189.     };
  190.   };
  191. RETURN +FALSE;
  192. }
  193.  
  194. FUNC BOOL matchhlixiy()
  195. {
  196.   IF ((BYTE)_lentword==0x02) {
  197.     IF (_c1small=='h') {
  198.       IF (_c2small=='l') {
  199.         asmtoken(+_RG_HL); asmrdword_tokspc(); RETURN +TRUE;
  200.       };
  201.     }ELSE IF (_c1small=='i') {
  202.       IF       (_c2small=='x') {
  203.         asmtoken(+_RG_IX); asmrdword_tokspc(); RETURN +TRUE;
  204.       }ELSE IF (_c2small=='y') {
  205.         asmtoken(+_RG_IY); asmrdword_tokspc(); RETURN +TRUE;
  206.       };
  207.     };
  208.   };
  209. RETURN +FALSE;
  210. }
  211.  
  212. FUNC BOOL matchir()
  213. {
  214.   IF ((BYTE)_lentword==0x01) {
  215.     IF       (_c1small=='i') {
  216.       asmtoken(+_RG_I); asmrdword_tokspc(); RETURN +TRUE;
  217.     }ELSE IF (_c1small=='r') {
  218.       asmtoken(+_RG_R); asmrdword_tokspc(); RETURN +TRUE;
  219.     };
  220.   };
  221. RETURN +FALSE;
  222. }
  223.  
  224. FUNC BOOL matchrp()
  225. {
  226.   IF ((BYTE)_lentword==0x02) {
  227.     IF       (_c1small=='h') {IF (_c2small=='l') {asmtoken(+_RG_HL); asmrdword_tokspc(); RETURN +TRUE; };
  228.     }ELSE IF (_c1small=='d') {IF (_c2small=='e') {asmtoken(+_RG_DE); asmrdword_tokspc(); RETURN +TRUE; };
  229.     }ELSE IF (_c1small=='b') {IF (_c2small=='c') {asmtoken(+_RG_BC); asmrdword_tokspc(); RETURN +TRUE; };
  230.     }ELSE IF (_c1small=='i') {
  231.       IF       (_c2small=='x') {asmtoken(+_RG_IX); asmrdword_tokspc(); RETURN +TRUE;
  232.       }ELSE IF (_c2small=='y') {asmtoken(+_RG_IY); asmrdword_tokspc(); RETURN +TRUE;
  233.       };
  234.     }ELSE IF (_c1small=='s') {IF (_c2small=='p') {asmtoken(+_RG_SP); asmrdword_tokspc(); RETURN +TRUE; };
  235.     }ELSE IF (_c1small=='r') {
  236.       IF (_c2small=='p') { //rp ьхЄър (unused in nedoasm)
  237.         asmrdword_tokspc();
  238.         asmtoken(+_RG_RPBYNAME);
  239.         toktext(); //ухэхЁшЁєхЄ <text>text<endtext>
  240.         asmrdword_tokspc();
  241.         RETURN +TRUE;
  242.       };
  243.     };
  244.   };
  245. RETURN +FALSE;
  246. }
  247.  
  248. FUNC BOOL matchrb()
  249. {
  250.   IF ((BYTE)_lentword==0x01) {
  251.     IF       (_c1small=='a') {asmtoken(+_RG_A); asmrdword_tokspc(); RETURN +TRUE;
  252.     }ELSE IF (_c1small=='l') {asmtoken(+_RG_L); asmrdword_tokspc(); RETURN +TRUE;
  253.     }ELSE IF (_c1small=='e') {asmtoken(+_RG_E); asmrdword_tokspc(); RETURN +TRUE;
  254.     }ELSE IF (_c1small=='c') {asmtoken(+_RG_C); asmrdword_tokspc(); RETURN +TRUE;
  255.     }ELSE IF (_c1small=='h') {asmtoken(+_RG_H); asmrdword_tokspc(); RETURN +TRUE;
  256.     }ELSE IF (_c1small=='d') {asmtoken(+_RG_D); asmrdword_tokspc(); RETURN +TRUE;
  257.     }ELSE IF (_c1small=='b') {asmtoken(+_RG_B); asmrdword_tokspc(); RETURN +TRUE;
  258.     };
  259.   }ELSE IF ((BYTE)_lentword==0x02) { //rare
  260.     IF       ((_c1small=='h')&&(_c2small=='x')) {asmtoken(+_RG_HX); asmrdword_tokspc(); RETURN +TRUE;
  261.     }ELSE IF ((_c1small=='l')&&(_c2small=='x')) {asmtoken(+_RG_LX); asmrdword_tokspc(); RETURN +TRUE;
  262.     }ELSE IF ((_c1small=='h')&&(_c2small=='y')) {asmtoken(+_RG_HY); asmrdword_tokspc(); RETURN +TRUE;
  263.     }ELSE IF ((_c1small=='l')&&(_c2small=='y')) {asmtoken(+_RG_LY); asmrdword_tokspc(); RETURN +TRUE;
  264.     }ELSE IF ((_c1small=='r')&&(_c2small=='b')) { //rb ьхЄър (unused in nedoasm)
  265.       asmrdword_tokspc();
  266.       asmtoken(+_RG_RBBYNAME);
  267.       toktext(); //ухэхЁшЁєхЄ <text>text<endtext>
  268.       asmrdword_tokspc();
  269.       RETURN +TRUE;
  270.     };
  271.   };
  272. RETURN +FALSE;
  273. }
  274.  
  275. ////////////// ьр°шээючртшёшь√х уЁєяя√ ёЁртэхэшщ фы  ярЁёшэур ўрёЄ√ї ярЁрьхЄЁют
  276.  
  277. PROC asm_hlix_close_token(BYTE hltoken, BYTE ixtoken)
  278. {
  279.   IF (matchhl()) {
  280.     IF (matchclose()) {asmtoken(hltoken);
  281.     }ELSE tokerr(+_ERRCLOSE); //no closing bracket
  282.   }ELSE IF (matchixiy()) {
  283.     IF (tokexpr_close()) {asmtoken(ixtoken);
  284.     }ELSE tokerr(+_ERREXPR); //wrong expr / no closing bracket
  285.   }ELSE tokerr(+_ERRREG); //wrong register
  286. }
  287.  
  288. PROC asm_directhlixrp_close_token(BYTE directtoken, BYTE hltoken, BYTE ixtoken, BYTE rptoken)
  289. {
  290.   IF (matchhl()){
  291.     IF (matchclose()) {asmtoken(hltoken);
  292.     }ELSE tokerr(+_ERRCLOSE); //no closing bracket
  293.   }ELSE IF (matchixiy()) {
  294.     IF (tokexpr_close()) {asmtoken(ixtoken);
  295.     }ELSE tokerr(+_ERREXPR); //wrong expr / no closing bracket
  296.   }ELSE IF (matchrp()) {
  297.     IF (matchclose()) {asmtoken(rptoken);
  298.     }ELSE tokerr(+_ERRCLOSE); //no closing bracket
  299.   }ELSE //if(matchdirect()) {
  300.     IF (tokexpr_close()) {asmtoken(directtoken);
  301.     }ELSE tokerr(+_ERREXPR); //wrong expr / no closing bracket
  302.   //}else tokerr(+_ERRPAR); //wrong register
  303. }
  304.  
  305. PROC asm_directrb_token(BYTE directtoken, BYTE rbtoken)
  306. {
  307.   IF (matchrb()) { //<cmd> rb
  308.     asmtoken(rbtoken);
  309.   }ELSE //if(matchdirect()) { //<cmd> #N
  310.     IF (tokexpr()) {asmtoken(directtoken);
  311.     }ELSE tokerr(+_ERREXPR); //wrong expr
  312.   //}else tokerr(+_ERRPAR); //wrong register or direct expr
  313. }
  314.  
  315. ///////////////////////////////////////////////////
  316.  
  317. PROC tokex()
  318. {
  319. //  _ignoreprime = +TRUE;
  320.   asmtoken(+_ASMEX);
  321.   asmrdword_tokspc(); //ъюьрэфр ьюцхЄ с√Є№: a, <rp>/rp ьхЄър
  322.   IF (matchopen()) { //ex (sp),hl/ix/iy
  323.     IF (matchsp()) {
  324.       IF (matchclose()) {
  325.         IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: hl, ix, iy
  326.           IF (matchhlixiy()) {asmtoken(+_FMTEXRPRP);
  327.           }ELSE tokerr(+_ERRREG); //wrong register
  328.         }ELSE tokerr(+_ERRCOMMA); //no comma
  329.       }ELSE tokerr(+_ERRCLOSE); //no closing bracket
  330.     }ELSE tokerr(+_ERRREG); //wrong register
  331.   }ELSE IF (matchde()) { //ex de,hl
  332.     IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: hl
  333.       IF (matchhl()) {asmtoken(+_FMTEXRPRP);
  334.       }ELSE tokerr(+_ERRREG); //wrong register
  335.     }ELSE tokerr(+_ERRCOMMA); //no comma
  336.   }ELSE IF (matchaf()) { //ex af,af'
  337.     IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: af'
  338.       IF (matchaf()) {
  339.         IF (matchprime()) {asmtoken(+_FMTEXRPRP);
  340.         }ELSE tokerr(+_ERRREG); //wrong register
  341.       }ELSE tokerr(+_ERRREG); //wrong register
  342.     }ELSE tokerr(+_ERRCOMMA); //no comma
  343.   };
  344. //  _ignoreprime = +FALSE;
  345. }
  346.  
  347. PROC tokinc()
  348. {
  349.   asmtoken(+_ASMINC);
  350.   asmrdword_tokspc(); //ъюьрэфр ьюцхЄ с√Є№: <rb>, <rp>, '(' фы  (hl), '(' фы  (ix/iy[+-d]), rp ьхЄър (ухэхЁшЁютрЄ№ rpbyname), rb ьхЄър (ухэхЁшЁютрЄ№ rbbyname)
  351.   IF (matchopen()) { //inc (hl) шыш inc(ix/iy[+-d])
  352.     asm_hlix_close_token(+_FMTINCDECMHL/**_FMTALUCMDMHL*/, +_FMTINCDECIDX/**_FMTALUCMDIDX*/);
  353.   }ELSE { //эх ёъюсъш
  354.     IF (matchrp()) {asmtoken(+_FMTINCRP); //bc,de,hl,sp,ix,iy,rp ьхЄър
  355.     }ELSE IF (matchrb()) {asmtoken(+_FMTINCDECRB/**_FMTALUCMDRB*/); //b,c,d,e,h,l,a,hx,lx,hy,ly,rb ьхЄър
  356.     }ELSE tokerr(+_ERRREG); //wrong register
  357.   };
  358. }
  359.  
  360. PROC tokdec()
  361. {
  362.   asmtoken(+_ASMDEC);
  363.   asmrdword_tokspc(); //ъюьрэфр ьюцхЄ с√Є№: <rb>, <rp>, '(' фы  (hl), '(' фы  (ix/iy[+-d]), rp ьхЄър (ухэхЁшЁютрЄ№ rpbyname), rb ьхЄър (ухэхЁшЁютрЄ№ rbbyname)
  364.   IF (matchopen()) { //inc (hl) шыш inc(ix/iy[+-d])
  365.     asm_hlix_close_token(+_FMTINCDECMHL/**_FMTALUCMDMHL*/, +_FMTINCDECIDX/**_FMTALUCMDIDX*/);
  366.   }ELSE { //эх ёъюсъш
  367.     IF (matchrp()) {asmtoken(+_FMTDECRP); //bc,de,hl,sp,ix,iy,rp ьхЄър
  368.     }ELSE IF (matchrb()) {asmtoken(+_FMTINCDECRB/**_FMTALUCMDRB*/); //b,c,d,e,h,l,a,hx,lx,hy,ly,rb ьхЄър
  369.     }ELSE tokerr(+_ERRREG); //wrong register
  370.   };
  371. }
  372.  
  373. PROC tokadd()
  374. {
  375.   asmtoken(+_ASMADD);
  376.   asmrdword_tokspc(); //ъюьрэфр ьюцхЄ с√Є№: a, <rp>/rp ьхЄър
  377.   IF (matcha()) {
  378.     IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: N, '(' фы  hl, '(' фы  (ix/iy[+-d]), <rb>/rb ьхЄър
  379.       IF (matchopen()) {asm_hlix_close_token(+_FMTALUCMDMHL, +_FMTALUCMDIDX); //add a,(hl) шыш add a,(ix/iy[+-d])
  380.       }ELSE asm_directrb_token(+_FMTALUCMDN, +_FMTALUCMDRB); //add a,#N шыш add a,rb
  381.     }ELSE tokerr(+_ERRCOMMA); //no comma
  382.   }ELSE IF (matchhlixiy()) { //add hl/ix/iy,rp
  383.     IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: <rp>/rp ьхЄър
  384.       IF (matchrp()) {asmtoken(+_FMTADDHLRP);
  385.       }ELSE tokerr(+_ERRREG); //wrong register
  386.     }ELSE tokerr(+_ERRCOMMA); //no comma
  387.   };
  388. }
  389.  
  390. PROC tokadc()
  391. {
  392.   asmtoken(+_ASMADC);
  393.   asmrdword_tokspc(); //ъюьрэфр ьюцхЄ с√Є№: a, hl
  394.   IF (matcha()) {
  395.     IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: N, '(' фы  hl, '(' фы  (ix/iy[+-d]), <rb>/rb ьхЄър
  396.       IF (matchopen()) {asm_hlix_close_token(+_FMTALUCMDMHL, +_FMTALUCMDIDX); //adc a,(hl) шыш adc a,(ix/iy[+-d])
  397.       }ELSE asm_directrb_token(+_FMTALUCMDN, +_FMTALUCMDRB); //adc a,#N шыш adc a,rb
  398.     }ELSE tokerr(+_ERRCOMMA); //no comma
  399.   }ELSE IF (matchhl()) { //adc hl,rp
  400.     IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: <rp>/rp ьхЄър
  401.       IF (matchrp()) {asmtoken(+_FMTADCHLRP);
  402.       }ELSE tokerr(+_ERRREG); //wrong register
  403.     }ELSE tokerr(+_ERRCOMMA); //no comma
  404.   };
  405. }
  406.  
  407. PROC toksbc()
  408. {
  409.   asmtoken(+_ASMSBC);
  410.   asmrdword_tokspc(); //ъюьрэфр ьюцхЄ с√Є№: a, hl
  411.   IF (matcha()) {
  412.     IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: N, '(' фы  hl, '(' фы  (ix/iy[+-d]), <rb>/rb ьхЄър
  413.       IF (matchopen()) {asm_hlix_close_token(+_FMTALUCMDMHL, +_FMTALUCMDIDX); //adc a,(hl) шыш adc a,(ix/iy[+-d])
  414.       }ELSE asm_directrb_token(+_FMTALUCMDN, +_FMTALUCMDRB); //adc a,#N шыш adc a,rb
  415.     }ELSE tokerr(+_ERRCOMMA); //no comma
  416.   }ELSE IF (matchhl()) { //sbc hl,rp
  417.     IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: <rp>/rp ьхЄър
  418.       IF (matchrp()) {asmtoken(+_FMTSBCHLRP);
  419.       }ELSE tokerr(+_ERRREG); //wrong register
  420.     }ELSE tokerr(+_ERRCOMMA); //no comma
  421.   };
  422. }
  423.  
  424. PROC tokalucmd(BYTE token)
  425. {
  426.   asmtoken(token);
  427.   asmrdword_tokspc(); //ё·хфрхь ъюьрэфє //фры№°х ьюцхЄ с√Є№: N, '(' фы  hl, '(' фы  (ix/iy[+-d]), <rb>/rb ьхЄър
  428.   IF (matchopen()) {asm_hlix_close_token(+_FMTALUCMDMHL, +_FMTALUCMDIDX); //<cmd> (hl) шыш <cmd> (ix/iy[+-d])
  429.   }ELSE asm_directrb_token(+_FMTALUCMDN, +_FMTALUCMDRB); //<cmd> #N шыш <cmd> rb
  430. }
  431.  
  432. PROC tokcbxx(BYTE token)
  433. {
  434.   asmtoken(token);
  435.   asmrdword_tokspc(); //ё·хфрхь ъюьрэфє //фры№°х ьюцхЄ с√Є№: '(' фы  hl, '(' фы  (ix/iy[+-d]), <rb>/rb ьхЄър
  436.   IF (matchopen()) {asm_hlix_close_token(+_FMTCBCMDMHL, +_FMTCBCMDIDX); //<cmd> (hl) шыш <cmd> (ix/iy[+-d])
  437.   }ELSE { //<cmd> rb
  438.     IF (matchrb()) {asmtoken(+_FMTCBCMDRB);
  439.     }ELSE tokerr(+_ERRREG); //wrong register
  440.   };
  441. }
  442.  
  443. PROC tokbit(BYTE token)
  444. {
  445.   asmtoken(token);
  446.   asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  447.   IF (tokexpr()) {
  448.     asmtoken(+_OPBIT); //фы  bit/res/set: яЁютхЁ хЄ pseudon (ЁрчЁх°хэю Єюы№ъю 0..7, шэрўх ю°шсър), єьэюцрхЄ эр 8 ш яЁшсрты хЄ ъ срчх юяъюфр
  449.     IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: '(' фы  hl, '(' фы  (ix/iy[+-d]), <rb>/rb ьхЄър
  450.       IF (matchopen()) {asm_hlix_close_token(+_FMTCBCMDMHL, +_FMTCBCMDIDX); //<cmd> N,(hl) шыш <cmd> N,(ix/iy[+-d])
  451.       }ELSE { //<cmd> N,rb
  452.         IF (matchrb()) {asmtoken(+_FMTCBCMDRB);
  453.         }ELSE tokerr(+_ERRREG); //wrong register
  454.       };
  455.     }ELSE tokerr(+_ERRCOMMA); //no comma
  456.   }ELSE tokerr(+_ERREXPR); //wrong expr
  457. }
  458.  
  459. PROC tokout()
  460. {
  461.   asmtoken(+_ASMOUT);
  462.   asmrdword_tokspc(); //ё·хфрхь ъюьрэфє //фры№°х ьюцхЄ с√Є№: '(' фы  c, '(' фы  #N
  463.   IF (matchopen()) {
  464.     IF (matchc()) {
  465.       IF (matchclose()) {
  466.         IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: <rb>/rb ьхЄър
  467.           IF (matchrb()) {asmtoken(+_FMTOUTCRB);
  468.           }ELSE tokerr(+_ERRREG); //wrong register
  469.         }ELSE tokerr(+_ERRCOMMA); //no comma
  470.       }ELSE tokerr(+_ERRCLOSE); //no closing bracket
  471.     }ELSE IF (tokexpr_close()) { //out (#N),a
  472.       IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: a
  473.         IF (matcha()) {asmtoken(+_FMTALUCMDN);
  474.         }ELSE tokerr(+_ERRREG); //wrong register
  475.       }ELSE tokerr(+_ERRCOMMA); //no comma
  476.     }ELSE tokerr(+_ERRPAR); //wrong parameter / no closing bracket
  477.   }ELSE tokerr(+_ERROPEN); //no opening bracket
  478. }
  479.  
  480. PROC tokin()
  481. {
  482.   asmtoken(+_ASMIN);
  483.   asmrdword_tokspc(); //ё·хфрхь ъюьрэфє //фры№°х ьюцхЄ с√Є№: a, <rb>/rb ьхЄър
  484.   IF (matcha()) {
  485.     IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: '(' фы  c, '(' фы  #N
  486.       IF (matchopen()) {
  487.         IF (matchc()) {
  488.           IF (matchclose()) {asmtoken(+_FMTINRBC);
  489.           }ELSE tokerr(+_ERRCLOSE); //no closing bracket
  490.         }ELSE IF (tokexpr_close()) {
  491.           asmtoken(+_FMTALUCMDN); //in a,(#N)
  492.         }ELSE tokerr(+_ERRPAR); //wrong parameter / no closing bracket
  493.       }ELSE tokerr(+_ERROPEN); //no opening bracket
  494.     }ELSE tokerr(+_ERRCOMMA); //no comma
  495.   }ELSE IF (matchrb()) {
  496.     IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: '(' фы  c
  497.       IF (matchopen()) {
  498.         IF (matchc()) {
  499.           IF (matchclose()) {asmtoken(+_FMTINRBC);
  500.           }ELSE tokerr(+_ERRCLOSE); //no closing bracket
  501.         }ELSE tokerr(+_ERRPAR); //wrong parameter
  502.       }ELSE tokerr(+_ERROPEN); //no opening bracket
  503.     }ELSE tokerr(+_ERRCOMMA); //no comma
  504.   }ELSE tokerr(+_ERRREG); //wrong register
  505. }
  506.  
  507. PROC tokpush()
  508. {
  509.   asmtoken(+_ASMPUSH);
  510.   asmrdword_tokspc();
  511.   IF (matchaf()) {asmtoken(+_FMTPUSHPOPRP);
  512.   }ELSE IF (matchrp()) {asmtoken(+_FMTPUSHPOPRP);
  513.   }ELSE tokerr(+_ERRREG); //wrong register
  514. }
  515.  
  516. PROC tokpop()
  517. {
  518.   asmtoken(+_ASMPOP);
  519.   asmrdword_tokspc();
  520.   IF (matchaf()) {asmtoken(+_FMTPUSHPOPRP);
  521.   }ELSE IF (matchrp()) {asmtoken(+_FMTPUSHPOPRP);
  522.   }ELSE tokerr(+_ERRREG); //wrong register
  523. }
  524.  
  525. PROC tokld() //(ix) схч +d эх яюффхЁцштрхЄё , Є.ъ. фы  ¤Єюую эєцэ√ фюяюыэшЄхы№э√х ЇюЁьрЄ√ шыш тЁєўэє■ тёЄрты Є№ push0 - TODO
  526. {
  527.   asmtoken(+_ASMLD);
  528.   asmrdword_tokspc(); //ъюьрэфр ьюцхЄ с√Є№: 'I', 'R', <rb>, <rp>, '(' фы  NN, '(' фы  (hl), '(' фы  (ix/iy[+-d]), rp ьхЄър (ухэхЁшЁютрЄ№ rpbyname), rb ьхЄър (ухэхЁшЁютрЄ№ rbbyname)
  529.   IF (matchopen()) { //ёъюсъш т яхЁтюь ярЁрьхЄЁх
  530.     IF (matchhl()) { //ld (hl),rb шыш ld (hl),N
  531.       IF (matchclose()) {
  532.         IF (matchcomma()) {asm_directrb_token(+_FMTPUTMHLN, +_FMTPUTMHLRB);
  533.         }ELSE tokerr(+_ERRCOMMA); //no comma
  534.       }ELSE tokerr(+_ERRCLOSE); //no closing bracket
  535.     }ELSE IF (matchixiy()) { //ld (ix/iy[+-d]),rb шыш ld (ix/iy[+-d]),N
  536.       IF (tokexpr_close()) { //яюёых эхую яЁш ю°шсъх эшўхую сюы№°х эхы№ч  яЁютхЁ Є№, Є.ъ. ъєЁёюЁ ьюу ёфтшэєЄ№ё 
  537.         IF (matchcomma()) {asm_directrb_token(+_FMTPUTIDXN, +_FMTPUTIDXRB);
  538.         }ELSE tokerr(+_ERRCOMMA); //no comma
  539.       }ELSE tokerr(+_ERREXPR); //wrong expr / no closing bracket
  540.     }ELSE IF (matchrp()) { //ld (rp),a
  541.       IF (matchclose()) {
  542.         IF (matchcomma()) {
  543.           IF (matcha()) {asmtoken(+_FMTPUTMRPA);
  544.           }ELSE tokerr(+_ERRREG); //wrong register
  545.         }ELSE tokerr(+_ERRCOMMA); //no comma
  546.       }ELSE tokerr(+_ERRCLOSE); //no closing bracket
  547.     }ELSE //if(matchdirect()) { //ld (#NN),a шыш ld (#NN),rp
  548.       IF (tokexpr_close()) { //яюёых эхую яЁш ю°шсъх эшўхую сюы№°х эхы№ч  яЁютхЁ Є№, Є.ъ. ъєЁёюЁ ьюу ёфтшэєЄ№ё 
  549.         IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: 'a', <rp>/rp ьхЄър
  550.           IF (matcha()) {asmtoken(+_FMTPUTMNNA);
  551.           }ELSE IF (matchrp()) {asmtoken(+_FMTPUTMNNRP);
  552.           }ELSE tokerr(+_ERRREG); //wrong register
  553.         }ELSE tokerr(+_ERRCOMMA); //no comma
  554.       }ELSE tokerr(+_ERREXPR); //wrong expr
  555.     //}else tokerr(+_ERRPAR); //wrong register (todo яюяЁюсютрЄ№ ЄєЄ Єюцх expr)
  556.  
  557.   }ELSE { //эх ёъюсъш //ъюьрэфр ьюцхЄ с√Є№: 'I', 'R', <rb>, <rp>, rp ьхЄър (ухэхЁшЁютрЄ№ rpbyname), rb ьхЄър (ухэхЁшЁютрЄ№ rbyname)
  558.     IF (matchrp()) {
  559.       IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: NN, '(' фы  NN
  560.         IF (matchopen()) {asm_direct_expr_close_token(+_FMTGETRPMNN); //ld rp,(#NN)
  561.         }ELSE IF (matchrp()) {asmtoken(+_FMTMOVRPRP); //ld rp,rp
  562.         }ELSE //if(matchdirect()) { //ld rp,#NN
  563.           IF (tokexpr()) {asmtoken(+_FMTLDRPNN);
  564.           }ELSE tokerr(+_ERREXPR); //wrong expr
  565.         //}else tokerr(+_ERRPAR); //wrong parameter
  566.       }ELSE tokerr(+_ERRCOMMA); //no comma
  567.     }ELSE IF (matcha()) {
  568.       IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: 'I', 'R', N, '(' фы  NN, '(' фы  rp, '(' фы  (ix/iy[+-d]), <rb>/rb ьхЄър
  569.         IF (matchopen()) {asm_directhlixrp_close_token(+_FMTGETAMNN, +_FMTGETRBMHL, +_FMTGETRBIDX, +_FMTGETAMRP); //ld a,(#NN) шыш ld a,(hl) шыш ld a,(ix/iy[+-d]) шыш ld a,(rp)
  570.         }ELSE IF (matchir()) {asmtoken(+_FMTMOVAIR); //ld a,i/r
  571.         }ELSE asm_directrb_token(+_FMTLDRBN, +_FMTMOVRBRB); //ld a,#N шыш ld a,rb
  572.       }ELSE tokerr(+_ERRCOMMA); //no comma
  573.     }ELSE IF (matchrb()) {
  574.       IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: N, '(' фы  hl, '(' фы  (ix/iy[+-d]), <rb>/rb ьхЄър
  575.         IF (matchopen()) {asm_hlix_close_token(+_FMTGETRBMHL, +_FMTGETRBIDX); //ld rb,(hl) шыш ld rb,(ix/iy[+-d])
  576.         }ELSE asm_directrb_token(+_FMTLDRBN, +_FMTMOVRBRB); //ld rb,#N шыш ld rb,rb
  577.       }ELSE tokerr(+_ERRCOMMA); //no comma
  578.     }ELSE IF (matchir()) { //ld i/r,a
  579.       IF (matchcomma()) { //фры№°х ьюцхЄ с√Є№: 'a'
  580.         IF (matcha()) {asmtoken(+_FMTMOVIRA);
  581.         }ELSE tokerr(+_ERRREG); //wrong register
  582.       }ELSE tokerr(+_ERRCOMMA); //no comma
  583.     }ELSE tokerr(+_ERRREG); //wrong register
  584.   };
  585. }
  586.  
  587. PROC tokret()
  588. {
  589.   asmtoken(+_ASMRET);
  590.   asmrdword_tokspc(); //ё·хфрхь ret
  591.   IF ((_asmwaseols!=0)||(_asmwaseof)||(*(PCHAR)_tword==':')||(*(PCHAR)_tword==';')) { //ret
  592.     asmtoken(+_FMTXX);
  593.   }ELSE { //ret cc
  594.     IF (matchcc()) {asmtoken(+_FMTXX);
  595.     }ELSE tokerrcmd();
  596.   };
  597. }
  598.  
  599. PROC tokdjnz()
  600. {
  601.   asmtoken(+_ASMDJNZ);
  602.   asmrdword_tokspc(); //ё·хфрхь djnz
  603.   IF (tokexpr()) {asmtoken(+_FMTJRDD);
  604.   }ELSE tokerr(+_ERREXPR); //wrong expr
  605. }
  606.  
  607. PROC tokjr()
  608. {
  609.   asmtoken(+_ASMJR);
  610.   asmrdword_tokspc(); //ё·хфрхь jr
  611.   IF (matchnzzncc()) { //jr cc,NN
  612.     IF (matchcomma()) {
  613.       IF (tokexpr()) {asmtoken(+_FMTJRDD);
  614.       }ELSE tokerr(+_ERREXPR); //wrong expr
  615.     }ELSE tokerr(+_ERRCOMMA); //no comma
  616.   }ELSE { //jr NN
  617.     IF (tokexpr()) {asmtoken(+_FMTJRDD);
  618.     }ELSE tokerr(+_ERREXPR); //wrong expr
  619.   };
  620. }
  621.  
  622. PROC tokjp()
  623. {
  624.   asmtoken(+_ASMJP);
  625.   asmrdword_tokspc(); //ё·хфрхь jp
  626.   IF (matchcc()) { //jp cc,NN
  627.     IF (matchcomma()) {
  628.       IF (tokexpr()) {asmtoken(+_FMTJPNN);
  629.       }ELSE tokerr(+_ERREXPR); //wrong expr
  630.     }ELSE tokerr(+_ERRCOMMA); //no comma
  631.   }ELSE { //jp NN
  632.     IF (matchopen()) { //ёъюсър
  633.       IF (matchhlixiy()) { //jp (hl)/(ix)/(iy)
  634.         IF (matchclose()) {asmtoken(+_FMTJPRP);
  635.         }ELSE tokerr(+_ERRCLOSE); //no closing bracket
  636.       }ELSE IF (tokexpr_close()) {asmtoken(+_FMTJPNN);
  637.       }ELSE tokerr(+_ERREXPR); //wrong expr
  638.     }ELSE IF (tokexpr()) {asmtoken(+_FMTJPNN);
  639.     }ELSE tokerr(+_ERREXPR); //wrong expr
  640.   };
  641. }
  642.  
  643. PROC tokcall()
  644. {
  645.   asmtoken(+_ASMCALL);
  646.   asmrdword_tokspc(); //ё·хфрхь call
  647.   IF (matchcc()) { //call cc,NN
  648.     IF (matchcomma()) {
  649.       IF (tokexpr()) {asmtoken(+_FMTJPNN);
  650.       }ELSE tokerr(+_ERREXPR); //wrong expr
  651.     }ELSE tokerr(+_ERRCOMMA); //no comma
  652.   }ELSE { //call NN
  653.     IF (tokexpr()) {asmtoken(+_FMTJPNN);
  654.     }ELSE tokerr(+_ERREXPR); //wrong expr
  655.   };
  656. }
  657.  
  658. PROC tokrst()
  659. {
  660.   asmtoken(+_ASMRST);
  661.   asmrdword_tokspc(); //ё·хфрхь rst
  662.   IF (tokexpr()) {asmtoken(+_FMTRST);
  663.   }ELSE tokerr(+_ERREXPR); //wrong expr
  664. }
  665.  
  666. PROC tokim()
  667. {
  668.   asmtoken(+_ASMIM);
  669.   asmrdword_tokspc(); //ё·хфрхь im
  670.   IF (tokexpr()) {asmtoken(+_FMTIM);
  671.   }ELSE tokerr(+_ERREXPR); //wrong expr
  672. }
  673.  
  674. PROC tokxx(BYTE token) //ъюьрэфр схч ярЁрьхЄЁют
  675. {
  676.   asmtoken(token);
  677.   asmrdword_tokspc(); //ё·хфрхь ъюьрэфє
  678.   asmtoken(+_FMTXX);
  679. }
  680.  
  681. PROC tokalucmdN()
  682. {
  683.   tokalucmd(_temppar);
  684. }
  685.  
  686. PROC tokxxN()
  687. {
  688.   tokxx(_temppar);
  689. }
  690.  
  691. PROC tokcbxxN()
  692. {
  693.   tokcbxx(_temppar);
  694. }
  695.  
  696. PROC tokbitN()
  697. {
  698.   tokbit(_temppar);
  699. }
  700.  
  701. PROC tokpre()
  702. {
  703.   tokaddlbl("LD"  , (PBYTE)&tokld  , 0x00);
  704.   tokaddlbl("CALL", (PBYTE)&tokcall, 0x00);
  705.   tokaddlbl("JP"  , (PBYTE)&tokjp  , 0x00);
  706.   tokaddlbl("RET" , (PBYTE)&tokret , 0x00);
  707.   tokaddlbl("JR"  , (PBYTE)&tokjr  , 0x00);
  708.  
  709.   tokaddlbl("DB"  , (PBYTE)&tokdb  , 0x00); //db ..., тьхёЄю defb - эрфю яюёых ърцфюую т√Ёрцхэш  ЇюЁьрЄ writeN, ЁрчсшЁрЄ№ тЁєўэє■ эх яюыєўшЄё  шч-чр т√Ёрцхэш 
  710.   tokaddlbl("DW"  , (PBYTE)&tokdw  , 0x00); //dw ..., тьхёЄю defw - эрфю яюёых ърцфюую т√Ёрцхэш  ЇюЁьрЄ writeNN
  711.   tokaddlbl("DL"  , (PBYTE)&tokdl  , 0x00); //dl ..., тьхёЄю defl - эрфю яюёых ърцфюую т√Ёрцхэш  ЇюЁьрЄ writeNNNN
  712.   tokaddlbl("DS"  , (PBYTE)&tokds  , 0x00); //ds ..., тьхёЄю defs - эрфю ЇюЁьрЄ writeds
  713.  
  714.   tokaddlbl("POP" , (PBYTE)&tokpop , 0x00);
  715.   tokaddlbl("PUSH", (PBYTE)&tokpush, 0x00);
  716.  
  717.   tokaddlbl("ADD" , (PBYTE)&tokadd , 0x00);
  718.   tokaddlbl("ADC" , (PBYTE)&tokadc , 0x00);
  719.   tokaddlbl("SUB" , (PBYTE)&tokalucmdN, +_ASMSUB);
  720.   tokaddlbl("SBC" , (PBYTE)&toksbc , 0x00);
  721.   tokaddlbl("AND" , (PBYTE)&tokalucmdN, +_ASMAND);
  722.   tokaddlbl("OR"  , (PBYTE)&tokalucmdN, +_ASMOR);
  723.   tokaddlbl("XOR" , (PBYTE)&tokalucmdN, +_ASMXOR);
  724.   tokaddlbl("CP"  , (PBYTE)&tokalucmdN, +_ASMCP);
  725.   tokaddlbl("INC" , (PBYTE)&tokinc , 0x00);
  726.   tokaddlbl("DEC" , (PBYTE)&tokdec , 0x00);
  727.  
  728.   tokaddlbl("EX"  , (PBYTE)&tokex  , 0x00);
  729.  
  730.   tokaddlbl("RLC" , (PBYTE)&tokcbxxN, +_ASMRLC);
  731.   tokaddlbl("RRC" , (PBYTE)&tokcbxxN, +_ASMRRC);
  732.   tokaddlbl("RL"  , (PBYTE)&tokcbxxN, +_ASMRL);
  733.   tokaddlbl("RR"  , (PBYTE)&tokcbxxN, +_ASMRR);
  734.   tokaddlbl("SLA" , (PBYTE)&tokcbxxN, +_ASMSLA);
  735.   tokaddlbl("SRA" , (PBYTE)&tokcbxxN, +_ASMSRA);
  736.   tokaddlbl("SLI" , (PBYTE)&tokcbxxN, +_ASMSLI);
  737.   tokaddlbl("SRL" , (PBYTE)&tokcbxxN, +_ASMSRL);
  738.  
  739.   tokaddlbl("DJNZ", (PBYTE)&tokdjnz, 0x00);
  740.  
  741.   tokaddlbl("RST" , (PBYTE)&tokrst , 0x00);
  742.  
  743.   tokaddlbl("OUT" , (PBYTE)&tokout , 0x00);
  744.   tokaddlbl("IN"  , (PBYTE)&tokin  , 0x00);
  745.  
  746.   tokaddlbl("BIT" , (PBYTE)&tokbitN, +_ASMBIT);
  747.   tokaddlbl("RES" , (PBYTE)&tokbitN, +_ASMRES);
  748.   tokaddlbl("SET" , (PBYTE)&tokbitN, +_ASMSET);
  749.  
  750.   tokaddlbl("IM"  , (PBYTE)&tokim  , 0x00);
  751.  
  752.   tokaddlbl("RLCA", (PBYTE)&tokxxN, +_ASMRLCA);
  753.   tokaddlbl("RRCA", (PBYTE)&tokxxN, +_ASMRRCA);
  754.   tokaddlbl("RLA" , (PBYTE)&tokxxN, +_ASMRLA);
  755.   tokaddlbl("RRA" , (PBYTE)&tokxxN, +_ASMRRA);
  756.   tokaddlbl("DAA" , (PBYTE)&tokxxN, +_ASMDAA);
  757.   tokaddlbl("CPL" , (PBYTE)&tokxxN, +_ASMCPL);
  758.   tokaddlbl("SCF" , (PBYTE)&tokxxN, +_ASMSCF);
  759.   tokaddlbl("CCF" , (PBYTE)&tokxxN, +_ASMCCF);
  760.   tokaddlbl("NOP" , (PBYTE)&tokxxN, +_ASMNOP);
  761.   tokaddlbl("HALT", (PBYTE)&tokxxN, +_ASMHALT);
  762.   tokaddlbl("DI"  , (PBYTE)&tokxxN, +_ASMDI);
  763.   tokaddlbl("EI"  , (PBYTE)&tokxxN, +_ASMEI);
  764.   tokaddlbl("EXX" , (PBYTE)&tokxxN, +_ASMEXX);
  765.  
  766.   tokaddlbl("RETN", (PBYTE)&tokxxN, +_ASMRETN);
  767.   tokaddlbl("RETI", (PBYTE)&tokxxN, +_ASMRETI);
  768.  
  769.   tokaddlbl("LDI" , (PBYTE)&tokxxN, +_ASMLDI);
  770.   tokaddlbl("LDD" , (PBYTE)&tokxxN, +_ASMLDD);
  771.   tokaddlbl("LDIR", (PBYTE)&tokxxN, +_ASMLDIR);
  772.   tokaddlbl("LDDR", (PBYTE)&tokxxN, +_ASMLDDR);
  773.   tokaddlbl("CPI" , (PBYTE)&tokxxN, +_ASMCPI);
  774.   tokaddlbl("CPD" , (PBYTE)&tokxxN, +_ASMCPD);
  775.   tokaddlbl("CPIR", (PBYTE)&tokxxN, +_ASMCPIR);
  776.  
  777.   tokaddlbl("CPDR", (PBYTE)&tokxxN, +_ASMCPDR);
  778.   tokaddlbl("INI" , (PBYTE)&tokxxN, +_ASMINI);
  779.   tokaddlbl("IND" , (PBYTE)&tokxxN, +_ASMIND);
  780.   tokaddlbl("INIR", (PBYTE)&tokxxN, +_ASMINIR);
  781.   tokaddlbl("INDR", (PBYTE)&tokxxN, +_ASMINDR);
  782.   tokaddlbl("OUTI", (PBYTE)&tokxxN, +_ASMOUTI);
  783.   tokaddlbl("OUTD", (PBYTE)&tokxxN, +_ASMOUTD);
  784.   tokaddlbl("OTIR", (PBYTE)&tokxxN, +_ASMOTIR);
  785.   tokaddlbl("OTDR", (PBYTE)&tokxxN, +_ASMOTDR);
  786.   tokaddlbl("INF" , (PBYTE)&tokxxN, +_ASMINF);
  787.  
  788.   tokaddlbl("NEG" , (PBYTE)&tokxxN, +_ASMNEG);
  789.  
  790.   tokaddlbl("ORG" , (PBYTE)&tokorg , 0x00); /**org nn - эрфю ЇюЁьрЄ writeorg, ЁрчсшЁрЄ№ тЁєўэє■ эх яюыєўшЄё  шч-чр т√Ёрцхэш */
  791.  
  792. //  tokaddlbl("ALIGN",(PBYTE)&tokalign,0x00); /**align nn - эрфю ЇюЁьрЄ writealign, ЁрчсшЁрЄ№ тЁєўэє■ эх яюыєўшЄё  шч-чр т√Ёрцхэш */
  793. //  tokaddlbl("PAGE", (PBYTE)&tokpage, 0x00); /**page n - эрфю ЇюЁьрЄ writepage, ЁрчсшЁрЄ№ тЁєўэє■ эх яюыєўшЄё  шч-чр т√Ёрцхэш */
  794. //  tokaddlbl("IF"  , (PBYTE)&tokif  , 0x00); /**if nn - эрфю ЇюЁьрЄ writeif, ЁрчсшЁрЄ№ тЁєўэє■ эх яюыєўшЄё  шч-чр т√Ёрцхэш */
  795. //  tokaddlbl("ELSE", (PBYTE)&tokelse, 0x00); /**else*/
  796. //  tokaddlbl("ENDIF",(PBYTE)&tokendif,0x00); /**endif*/
  797. //  tokaddlbl("DUP" , (PBYTE)&tokdup , 0x00); /**dup nn - эрфю ЇюЁьрЄ writedup, ЁрчсшЁрЄ№ тЁєўэє■ эх яюыєўшЄё  шч-чр т√Ёрцхэш */
  798. //  tokaddlbl("EDUP", (PBYTE)&tokedup, 0x00); /**edup*/
  799. //  tokaddlbl("MACRO",(PBYTE)&tokmacro,0x00); /**macro name - ЁрчсшЁрЄ№ тЁєўэє■?*/
  800. //  tokaddlbl("ENDM", (PBYTE)&tokendm, 0x00); /**endm*/
  801.   //tokaddlbl("USEMACRO",(PBYTE)&tokusemacro, 0x00); /**usemacro name ... - ЁрчсшЁрЄ№ тЁєўэє■?*/
  802.   tokaddlbl("EXPORT",(PBYTE)&tokexport, 0x00); /**export name - ЁрчсшЁрЄ№ тЁєўэє■?*/
  803. //  tokaddlbl("LOCAL",(PBYTE)&toklocal,0x00); /**local name - ЁрчсшЁрЄ№ тЁєўэє■?*/
  804. //  tokaddlbl("ENDL", (PBYTE)&tokendl, 0x00); /**endl*/
  805. //  tokaddlbl("DISP", (PBYTE)&tokdisp, 0x00); /**disp nn - эрфю ЇюЁьрЄ writedisp*/
  806. //  tokaddlbl("ENT" , (PBYTE)&tokent , 0x00); /**ent*/
  807.   tokaddlbl("INCLUDE",(PBYTE)&tokinclude, 0x00); /**include "filename" - ЁрчсшЁрЄ№ тЁєўэє■?*/
  808.   tokaddlbl("INCBIN",(PBYTE)&tokincbin, 0x00); /**incbin "filename" - ЁрчсшЁрЄ№ тЁєўэє■?*/
  809. //  tokaddlbl("DISPLAY",(PBYTE)&tokdisplay, 0x00); /**display nn - ЇюЁьрЄ√ displaynum, displaystring - ЁрчсшЁрЄ№ тЁєўэє■ эх яюыєўшЄё  шч-чр т√Ёрцхэшщ*/
  810. //  tokaddlbl("REPEAT",(PBYTE)&tokrepeat, 0x00); /**repeat*/
  811. //  tokaddlbl("UNTIL",(PBYTE)&tokuntil, 0x00); /**until nn - эрфю ЇюЁьрЄ writeuntil*/
  812. //  tokaddlbl("STRUCT",(PBYTE)&tokstruct, 0x00); /**struct name - ЁрчсшЁрЄ№ тЁєўэє■?*/
  813. //  tokaddlbl("ENDSTRUCT",(PBYTE)&tokendstruct, 0x00); /**endstruct*/
  814.  
  815.   tokaddlbl(":",(PBYTE)&tokcolon, 0x00);
  816. //  tokaddlbl(";",(PBYTE)&tokcomment, 0x00); //яЁютхЁ хЄё  юЄфхы№эю
  817. }
  818.