Subversion Repositories NedoOS

Rev

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

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