root/include/monitor.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 #ifndef YACASL2_MONITOR_H_INCLUDE
   2 #define YACASL2_MONITOR_H_INCLUDE
   3 
   4 #include <stdio.h>
   5 #include <string.h>
   6 #include <assert.h>
   7 #include "assemble.h"
   8 #include "exec.h"
   9 #include "load.h"
  10 
  11 /**
  12  * @brief モニター
  13  */
  14 enum {
  15     MONARGSIZE = 3,          /**<モニター引数の最大数 */
  16 };
  17 
  18 /**
  19  * @brief モニター引数を表すデータ型
  20  */
  21 typedef struct {
  22     int argc;                   /**<オペランド数 */
  23     char *argv[MONARGSIZE];      /**<オペランド配列 */
  24 } MONARGS;
  25 
  26 /**
  27  * @brief モニター命令行を表すデータ型
  28  */
  29 typedef struct {
  30     char *cmd;                  /**<コマンド */
  31     MONARGS *args;               /**<引数 */
  32 } MONCMDLINE;
  33 
  34 /**
  35  * @brief ブレークポイント表を表すデータ型
  36  */
  37 typedef struct _BPSLIST {
  38     struct _BPSLIST *next;        /**<リスト次項目へのポインタ */
  39     WORD adr;                   /**<アドレス */
  40 } BPSLIST;
  41 
  42 /**
  43  * ブレークポイント表のサイズ
  44  */
  45 enum {
  46     BPSTABSIZE = 251,         /**<ブレークポイント表のサイズ */
  47 };
  48 
  49 enum {
  50     MONINSIZE = 40    /**<モニターの、入力領域 */
  51 };
  52 
  53 typedef enum {
  54     MONREPEAT = 0,
  55     MONNEXT = 1,
  56     MONQUIT = 2,
  57 } MONCMDTYPE;
  58 
  59 /**
  60  * @brief アドレスのハッシュ値を返す
  61  *
  62  * @return ハッシュ値
  63  *
  64  * @param adr アドレス
  65  */
  66 unsigned adrhash(WORD adr);
  67 
  68 /**
  69  * @brief 文字列から、モニターの引数を取得する
  70  *
  71  * @return モニターの引数
  72  *
  73  * @param *str 文字列
  74  */
  75 MONARGS *monargstok(const char *str);
  76 
  77 /**
  78  * @brief 行から、モニターの命令と引数を取得する
  79  *
  80  * @return モニターの命令と引数
  81  *
  82  * @param *line 行
  83  */
  84 MONCMDLINE *monlinetok(const char *line);
  85 
  86 /**
  87  * @brief モニターの命令を実行する
  88  *
  89  * @return モニター命令の種類
  90  *
  91  * @param *cmd モニター命令
  92  * @param *args モニター命令の引数
  93  */
  94 MONCMDTYPE monitorcmd(char *cmd, MONARGS *args);
  95 
  96 /**
  97  * @brief ブレークポイント表にアドレスがある場合はtrue、ない場合はfalseを返す
  98  *
  99  * @return trueまたはfalse
 100  *
 101  * @param *adr アドレス
 102  */
 103 bool getbps(WORD adr);
 104 
 105 /**
 106  * @brief ブレークポイント表にアドレスを追加する
 107  *
 108  * @return 追加した場合はtrue、追加しなかった場合はfalse
 109  *
 110  * @param *adr アドレス
 111  */
 112 bool addbps(WORD adr);
 113 
 114 
 115 /**
 116  * @brief ブレークポイント表からアドレスを削除する
 117  *
 118  * @return 削除した場合はtrue、削除しなかった場合はfalse
 119  *
 120  * @param *adr アドレス
 121  */
 122 bool delbps(WORD adr);
 123 
 124 /**
 125  * @brief ブレークポイント表を解放する
 126  *
 127  * @return なし
 128  */
 129 void freebps();
 130 
 131 /**
 132  * @brief COMET IIモニターを起動する
 133  *
 134  * @return なし
 135  */
 136 void monitor();
 137 
 138 #endif

/* [<][>][^][v][top][bottom][index][help] */