Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. //===== ƒ«®¡ «ì­ë¥ ª®­áâ ­âë
  2. #define SHOW "WRITESTR"
  3. // ----
  4. #define STD_INPUT_HANDLE        -10
  5. #define STD_OUTPUT_HANDLE       -11
  6. #define STD_ERROR_HANDLE        -12
  7. #define CREATE_NEW              1
  8. #define CREATE_ALWAYS           2
  9. #define OPEN_EXISTING           3
  10. #define OPEN_ALWAYS             4
  11. #define TRUNCATE_EXISTING       5
  12. // ----
  13. #define GENERIC_READ    0x80000000
  14. #define GENERIC_WRITE   0x40000000
  15. #define GENERIC_EXECUTE 0x20000000
  16. #define GENERIC_ALL     0x10000000
  17. // ---- Š®­áâ ­âë ª®¬¯¨«ïâ®à 
  18. #define _END    0x1B
  19. #define FILENAMESIZE 80
  20. #define IDLENGTH 65 // „«¨­  ¨¬¥­¨ ¨¤¥­â¨ä¨ª â®à , ¢ª«îç ï NULL-â¥à¬¨­ â®à
  21. #define MAXDATA 512000  //  §¬¥à ¡ãä¥à®¢ ¯®¤ ª®¤ ¨ ¤ ­­ë¥
  22. #define MAXDBGS 50000 //  §¬¥à ¡ãä¥à®¢ ¯®¤ ®â« ¤®ç­ã  ¨­ä®à¬ æ¨î
  23. #define MAXDLLS 100
  24. #define MAXINPUT 512000 // Œ ªá¨¬ «ì­ë  à §¬¥à ¢å®¤­®£® ä ©« 
  25. #define MAXMDL  100     // Œ ªá¨¬ «ì­®¥ ç¨á«® includes
  26. #define MAXPOSTS 150000 //  §¬¥à ¡ãä¥à®¢ ¯®¤ POST ®¡à ¡®âªã
  27. #define NULL    0
  28. #define SORTSIZE 20
  29. #define STRLEN 1000 // „«¨­  ¡ãä¥à  ¯®¤ token
  30. // ------------------------------------------
  31. //===== ã¬¥à®¢ ­­ë¥ ª®­áâ ­âë
  32. // ---- Š®¤ë ¢®§¢à â 
  33. enum{ e_ok, e_outofmemory, e_cannotopeninput, e_toomanyerrors,
  34.         e_internalerror, e_noinputspecified, e_unknowncommandline,
  35.         e_extract, e_cannotopenmapfile, e_someerrors };
  36. // ---- Š®¤ë tokens tk_xxxx
  37. enum{
  38. tk_eof,tk_number,tk_string,tk_var,
  39. tk_id,
  40. tk_db,tk_dw,tk_dd,tk_dq,        // ’¨¯ë ¯¥à¥¬¥­­ëå
  41. tk_byte,tk_char,tk_word,tk_short,
  42. tk_dword,tk_int,
  43. tk_enum,                        // ã¬¥à®¢ ­­ë¥ ª®­áâ ­âë
  44. tk_struc,       // Ž¯à¥¤¥«¥­¨¥ áâàãªâãàë
  45. tk_if,tk_else,tk_endif, // “á«®¢­ ï ª®¬¯¨«ïæ¨ï
  46. tk_include,tk_define, // ‚ª«î祭¨¥ ä  « //Ž¯à¥¤¥«¥­¨¥ ª®­áâ ­âë
  47. tk_import,              // ˆ¬¯®àâ ¨§ DLL
  48. tk_map,                 // ƒ¥­¥à æ¨ï MAP-ä ©« 
  49. tk_debug,       // ƒ¥­¥à æ¨ï ®â« ¤®ç­®© ¨­ä®à¬ æ¨¨
  50. tk_list,                // ‚ë¤ ç  ASM-«¨á⨭£ 
  51. tk_dll,                 // ƒ¥­¥à æ¨ï DLL-ä ©« 
  52. tk_loop,tk_return,tk_do,
  53. tk_while,tk_void,
  54. tk_continue,tk_break,
  55. tk_docase,tk_case,tk_default,
  56. tk_carryflag,tk_extract,tk_FALSE,tk_from,
  57. tk_notcarryflag,tk_notoverflow,tk_overflow,tk_TRUE,
  58. tk_zeroflag,tk_notzeroflag,
  59. tk_assign,tk_swap,
  60. tk_minus,tk_plus,
  61. tk_minusminus,tk_plusplus,tk_mult,tk_div,tk_mod,
  62. tk_multminus,tk_divminus,tk_modminus,tk_rr,tk_ll,
  63. tk_rrminus,
  64. tk_llminus,
  65. tk_minusequals,tk_plusequals,tk_rrequals,tk_llequals,
  66. tk_or,tk_and,tk_xor,tk_not,
  67. tk_orminus,
  68. tk_andminus,tk_xorminus,
  69. tk_orequals,tk_andequals,tk_xorequals,
  70. tk_equalto,
  71. tk_notequal,tk_greater,tk_greaterequal,tk_less,
  72. tk_lessequal,
  73. tk_oror,tk_andand,tk_openbrace,tk_closebrace,
  74. tk_openbracket,tk_closebracket,tk_openblock,tk_closeblock,
  75. tk_colon,tk_semicolon,tk_comma,tk_period,
  76. tk_dollar,tk_question,tk_tilda,
  77. tk_reg,tk_controlreg,tk_debugreg,tk_testreg,tk_seg,
  78. tk_undefproc,tk_proc,
  79. tk_postnumber,
  80. tk_local,tk_locallabel,tk_param,tk_locnumber,
  81. tk_DLL,tk_API,tk_directive,tk_command,tk_mnemonics,
  82. tokens
  83. };
  84. // ---- Š®¤¨à®¢ª  ⨯  ¯à®æ¥¤ãà
  85. enum{ cpt_near, cpt_far };
  86. // ---- Š®¤¨à®¢ª  POST § ¯¨á¥©
  87. enum { POST_CALL=1, POST_API, POST_DATA, POST_LOC, POST_STR };
  88. // ---- Ž¯¨á ­¨¥ áâàãªâãàë ¢ dbginfo: dbg_...
  89. enum{ dbg_mod=0,        // ®¬¥à ¬®¤ã«ï
  90.         dbg_line=4, // ®¬¥à áâப      ¢ ¬®¤ã«¥
  91.         dbg_loc=8,      // ®§¨æ¨ï ¢ EXE-ä ©«¥
  92.         dbg_size=12}; // à §¬¥à áâàãªâãàë
  93. // ---- Ž¯¨á ­¨¥ áâàãªâãàë idrec
  94. enum{ left=0,   // “ª § â¥«ì ­  idrec
  95.         right=4,                // “ª § â¥«ì ­  idrec
  96.         recid=8,                // ˆ¬ï ¨¤¥­â¨ä¨ª â®à 
  97.         newid=recid+4,  // “ª § â¥«ì ­   «¨ á ¤«ï recid
  98.         rectok=newid+4, // ®¬¥à token
  99.         rectype=rectok+4, // ’¨¯ token: void, byte, char, word, ...
  100.         recsrc=rectype+4, // ˆá室­ë© ⥪áâ
  101.         recpost=recsrc+4, // ”« £ POST ¯¥à¥¬¥­­®©
  102.         recnumber=recpost+4, // ‡­ ç¥­¨¥ ¨«¨ offset ¢ recsrc
  103.         recmodline=recnumber+4,// ®¬¥à ¬®¤ã«ï ¨ áâப¨
  104.         recsize=recnumber+4};// à §¬¥à áâàãªâãàë
  105. // ---- Ž¯¨á ­¨¥ áâàãªâãàë localrec
  106. enum{ localnext=0,              // “ª § â¥«ì ­  á«¥¤ãîéãî localrec
  107.         localid=4,              // ˆ¬ï «®ª «ì­®  ¯¥à¥¬¥­­®©
  108.         localtok=localid+IDLENGTH,// ‡­ ç¥­¨¥ token
  109.         localtype=localtok+4, // ⨯ ¯¥à¥¬¥­­®©
  110.         localnumber=localtype+4,        // ®§¨æ¨ï ¢ á⥪¥
  111.         local_size=localnumber+4};      //  §¬¥à áâàãªâãàë
  112.