*/
extern SYSTEM *sys;
+/**
+ * 命令ハッシュ表のハッシュの種類
+ */
+typedef enum {
+ HASH_CMDTYPE,
+ HASH_CODE,
+ HASH_MAX,
+} CMDTAB_HASH;
+
/**
* COMET II 命令
* 命令タイプは、オペランドにより5種類に分類
/**
* オペランドなし
*/
- NONE = 00,
+ NONE = 0,
} CMDTYPE;
/**
*/
typedef struct _CMDTAB {
struct _CMDTAB *next; /**<リスト次項目へのポインタ */
- COMET2CMD *cmd; /**<命令コード表の項目 */
+ const COMET2CMD *cmd; /**<命令コード表の項目 */
} CMDTAB;
/**
extern EXECPTR *execptr;
+/**
+ * @brief 実行モードを表すデータ型
+ */
+typedef struct {
+ bool trace; /**<レジストリの内容をステップごとに表示する場合はtrue */
+ bool logical; /**<レジストリの内容を論理値(0から65535)で表示する場合はtrue */
+ bool dump; /**<メモリの内容をステップごとに表示する場合はtrue */
+ int dump_start; /**<メモリの内容をステップごとに表示する場合の開始アドレス */
+ int dump_end; /**<メモリの内容をステップごとに表示する場合の終了アドレス */
+ bool monitor; /**<モニターモードの場合はtrue */
+ bool step; /**<ステップ実行の場合はtrue */
+} EXECMODE;
+
+/**
+ * @brief 実行モード: trace, logical, dump, monitor, step
+ */
+extern EXECMODE execmode;
+
+/**
+ * @brief 汎用レジスタの番号からレジスタを表す文字列を返す
+ *
+ * @return 汎用レジスタを表す文字列。「GR0」「GR1」・・・「GR7」のいずれか
+ *
+ * @param word レジスタ番号[0-7]を表すWORD値
+ */
+char *grstr(WORD word);
+
/**
* COMET II仮想マシンのリセット
*/
void shutdown();
/**
- * 名前とタイプがキーの命令ハッシュ表を作成する
+ * @brief 命令ハッシュ表を作成する
+ *
+ * @return なし
+ *
+ * @param hash ハッシュ値
*/
-bool create_cmdtype_code();
-
-/**
- * 命令の名前とタイプから、命令コードを返す
- * 無効な場合は0xFFFFを返す
- */
-WORD getcmdcode(const char *cmd, CMDTYPE type);
+bool create_cmdtable(CMDTAB_HASH hash);
/**
- * å\90\8då\89\8dã\81¨ã\82¿ã\82¤ã\83\97ã\81\8cã\82ã\83¼ã\81®å\91½ä»¤ã\83\8fã\83\83ã\82·ã\83¥è¡¨ã\82\92解æ\94¾ã\81\99ã\82\8b
+ * 命令ハッシュ表を解放する
*/
-void free_cmdtype_code();
+void free_cmdtable(CMDTAB_HASH hash);
/**
- * コードがキーの命令ハッシュ表を作成する
+ * 命令の名前とタイプから、命令コードを返す
+ * 無効な場合は0xFFFFを返す
*/
-bool create_code_cmdtype();
+WORD getcmdcode(const char *cmd, CMDTYPE type);
/**
* 命令コードから命令の関数ポインタを返す
*/
char *getcmdname(WORD code);
-/**
- * コードがキーの命令ハッシュ表を解放する
- */
-void free_code_cmdtype();
-
#endif /* YACASL2_CASL2_INCLUDEDの終端 */