rasm.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #ifndef RASM_H
  2. #define RASM_H
  3. #include <stdio.h>
  4. #define MZX_BCC 1
  5. #define MAX_OBJ_SIZE 31744
  6. #define IMM_U16 (1 << 0)
  7. #define IMM_S16 (1 << 0)
  8. #define CHARACTER (1 << 2)
  9. #define COLOR (1 << 3)
  10. #define DIR (1 << 4)
  11. #define THING (1 << 5)
  12. #define PARAM (1 << 6)
  13. #define STRING (1 << 7)
  14. #define EQUALITY (1 << 8)
  15. #define CONDITION (1 << 9)
  16. #define ITEM (1 << 10)
  17. #define EXTRA (1 << 11)
  18. #define ERR_BADSTRING 1
  19. #define ERR_BADCHARACTER 2
  20. #define ERR_INVALID 3
  21. #define CMD (1 << 31)
  22. #define CMD_NOT CMD | 0
  23. #define CMD_ANY CMD | 1
  24. #define CMD_PLAYER CMD | 2
  25. #define CMD_NS CMD | 3
  26. #define CMD_EW CMD | 4
  27. #define CMD_ATTACK CMD | 5
  28. #define CMD_ITEM CMD | 6
  29. #define CMD_SELF CMD | 7
  30. #define CMD_RANDOM CMD | 8
  31. #define CMD_STRING CMD | 9
  32. #define CMD_CHAR CMD | 10
  33. #define CMD_ALL CMD | 11
  34. #define CMD_EDIT CMD | 12
  35. #define CMD_PUSHABLE CMD | 13
  36. #define CMD_NONPUSHABLE CMD | 14
  37. #define CMD_LAVAWALKER CMD | 15
  38. #define CMD_NONLAVAWALKER CMD | 16
  39. #define CMD_ROW CMD | 17
  40. #define CMD_COUNTERS CMD | 18
  41. #define CMD_ID CMD | 19
  42. #define CMD_MOD CMD | 20
  43. #define CMD_ORDER CMD | 21
  44. #define CMD_THICK CMD | 22
  45. #define CMD_ARROW CMD | 23
  46. #define CMD_THIN CMD | 24
  47. #define CMD_MAXHEALTH CMD | 25
  48. #define CMD_POSITION CMD | 26
  49. #define CMD_MESG CMD | 27
  50. #define CMD_COLUMN CMD | 28
  51. #define CMD_COLOR CMD | 29
  52. #define CMD_SIZE CMD | 30
  53. #define CMD_BULLETN CMD | 31
  54. #define CMD_BULLETS CMD | 32
  55. #define CMD_BULLETE CMD | 33
  56. #define CMD_BULLETW CMD | 34
  57. #define CMD_BULLETCOLOR CMD | 35
  58. #define CMD_FIRST CMD | 36
  59. #define CMD_LAST CMD | 37
  60. #define CMD_FADE CMD | 38
  61. #define CMD_OUT CMD | 39
  62. #define CMD_IN CMD | 40
  63. #define CMD_BLOCK CMD | 41
  64. #define CMD_SFX CMD | 42
  65. #define CMD_INTENSITY CMD | 43
  66. #define CMD_SET CMD | 44
  67. #define CMD_PALETTE CMD | 45
  68. #define CMD_WORLD CMD | 46
  69. #define CMD_ALIGNEDROBOT CMD | 47
  70. #define CMD_GO CMD | 48
  71. #define CMD_SAVING CMD | 49
  72. #define CMD_SENSORONLY CMD | 50
  73. #define CMD_ON CMD | 51
  74. #define CMD_STATIC CMD | 52
  75. #define CMD_TRANSPARENT CMD | 53
  76. #define CMD_OVERLAY CMD | 54
  77. #define CMD_START CMD | 55
  78. #define CMD_LOOP CMD | 56
  79. #define CMD_EDGE CMD | 57
  80. #define CMD_SAM CMD | 58
  81. #define CMD_PLAY CMD | 59
  82. #define CMD_PERCENT CMD | 60
  83. #define CMD_HIGH CMD | 61
  84. #define CMD_MATCHES CMD | 62
  85. #define CMD_NONE CMD | 63
  86. #define CMD_INPUT CMD | 64
  87. #define CMD_DIR CMD | 65
  88. #define CMD_COUNTER CMD | 66
  89. #define CMD_DUPLICATE CMD | 67
  90. typedef struct
  91. {
  92. char *name;
  93. int parameters;
  94. int *param_types;
  95. } mzx_command;
  96. int is_color(char *cmd_line);
  97. int is_param(char *cmd_line);
  98. int is_dir(char *cmd_line, char **next);
  99. int is_condition(char *cmd_line, char **next);
  100. int is_equality(char *cmd_line, char **next);
  101. int is_thing(char *cmd_line, char **next);
  102. int is_item(char *cmd_line, char **next);
  103. int is_command_fragment(char *cmd_line, char **next);
  104. int is_extra(char *cmd_line, char **next);
  105. int get_color(char *cmd_line);
  106. int get_param(char *cmd_line);
  107. int parse_argument(char *cmd_line, char **next, int *arg_translated, int *error);
  108. void get_word(char *str, char *source, char t);
  109. int match_command(mzx_command *cmd);
  110. int assemble_text(char *input_name, char *output_name);
  111. int assemble_command(int command_number, mzx_command *cmd, void *params[32],
  112. char *obj_pos, char **next_obj_pos);
  113. void print_command(mzx_command *cmd);
  114. void skip_whitespace(char *cpos, char **next);
  115. int get_line(char *buffer, FILE *fp);
  116. #endif