?login_element?

Subversion Repositories NedoOS

Rev

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