root/include/exec.h

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

INCLUDED FROM


   1 #ifndef YACASL2_EXEC_H_INCLUDED
   2 #define YACASL2_EXEC_H_INCLUDED
   3 
   4 #include <stdbool.h>
   5 #include <stdio.h>
   6 #include <assert.h>
   7 #include <time.h>
   8 #include "struct.h"
   9 #include "word.h"
  10 #include "cmem.h"
  11 #include "cerr.h"
  12 #include "monitor.h"
  13 #include "disassemble.h"
  14 
  15 enum {
  16     INSIZE = 256    /**<IN命令の、入力領域 */
  17 };
  18 
  19 /**
  20  * @brief 実行エラーをエラーリストに追加する
  21  */
  22 void addcerrlist_exec();
  23 
  24 /**
  25  * @class Exec
  26  * @brief execから関数ポインタで呼び出される関数
  27  * @relatesalso exec
  28  **/
  29 
  30 /**
  31  * @brief COMET II仮想マシンを実行する
  32  *
  33  * @relatesalso Exec
  34  *
  35  */
  36 void exec();
  37 
  38 /**
  39  * @brief NOP命令。語長1(OPのみ)
  40  * @relatesalso Exec
  41  *
  42  */
  43 void nop();
  44 
  45 /**
  46  * @brief LD命令 - オペランドr,adr,x。語長2
  47  * @relatesalso Exec
  48  *
  49  */
  50 void ld_r_adr_x();
  51 
  52 /**
  53  * @brief LD命令 - オペランドr1,r2。語長1
  54  * @relatesalso Exec
  55  *
  56  */
  57 void ld_r1_r2();
  58 
  59 /**
  60  * @brief ST命令。語長2
  61  * @relatesalso Exec
  62  *
  63  */
  64 void st();
  65 
  66 /**
  67  * @brief LAD命令。語長2
  68  * @relatesalso Exec
  69  *
  70  */
  71 void lad();
  72 
  73 /**
  74  * @brief ADDA命令 - オペランドr,adr,x。語長2
  75  * @relatesalso Exec
  76  *
  77  */
  78 void adda_r_adr_x();
  79 
  80 /**
  81  * @brief ADDA命令 - オペランドr1,r2。語長1
  82  * @relatesalso Exec
  83  *
  84  */
  85 void adda_r1_r2();
  86 
  87 /**
  88  * @brief SUBA命令 - オペランドr,adr,x。語長2
  89  * @relatesalso Exec
  90  *
  91  */
  92 void suba_r_adr_x();
  93 
  94 /**
  95  * @brief SUBA命令 - オペランドr1,r2。語長1
  96  * @relatesalso Exec
  97  *
  98  */
  99 void suba_r1_r2();
 100 
 101 /**
 102  * @brief ADDL命令 - オペランドr,adr,x。語長2
 103  * @relatesalso Exec
 104  *
 105  */
 106 void addl_r_adr_x();
 107 
 108 /**
 109  * @brief ADDL命令 - オペランドr1,r2。語長1
 110  * @relatesalso Exec
 111  *
 112  */
 113 void addl_r1_r2();
 114 
 115 /**
 116  * @brief SUBL命令 - オペランドr,adr,x。語長2
 117  * @relatesalso Exec
 118  *
 119  */
 120 void subl_r_adr_x();
 121 
 122 /**
 123  * @brief SUBL命令 - オペランドr1,r2。語長1
 124  * @relatesalso Exec
 125  *
 126  */
 127 void subl_r1_r2();
 128 
 129 /**
 130  * @brief AND命令 - オペランドr,adr,x。語長2
 131  * @relatesalso Exec
 132  *
 133  */
 134 void and_r_adr_x();
 135 
 136 /**
 137  * @brief AND命令 - オペランドr1,r2。語長1
 138  * @relatesalso Exec
 139  *
 140  */
 141 void and_r1_r2();
 142 
 143 /**
 144  * @brief OR命令 - オペランドr,adr,x。語長2
 145  * @relatesalso Exec
 146  *
 147  */
 148 void or_r_adr_x();
 149 
 150 /**
 151  * @brief OR命令 - オペランドr1,r2。語長1
 152  * @relatesalso Exec
 153  *
 154  */
 155 void or_r1_r2();
 156 
 157 /**
 158  * @brief XOR命令 - オペランドr,adr,x。語長2
 159  * @relatesalso Exec
 160  *
 161  */
 162 void xor_r_adr_x();
 163 
 164 /**
 165  * @brief XOR命令 - オペランドr1,r2。語長1
 166  * @relatesalso Exec
 167  *
 168  */
 169 void xor_r1_r2();
 170 
 171 /**
 172  * @brief CPA命令 - オペランドr,adr,x。語長2
 173  * @relatesalso Exec
 174  *
 175  */
 176 void cpa_r_adr_x();
 177 
 178 /**
 179  * @brief CPA命令 - オペランドr1,r2。語長1
 180  * @relatesalso Exec
 181  *
 182  */
 183 void cpa_r1_r2();
 184 
 185 /**
 186  * @brief CPL命令 - オペランドr,adr,x。語長2
 187  * @relatesalso Exec
 188  *
 189  */
 190 void cpl_r_adr_x();
 191 
 192 /**
 193  * @brief CPL命令 - オペランドr1,r2。語長1
 194  * @relatesalso Exec
 195  *
 196  */
 197 void cpl_r1_r2();
 198 
 199 /**
 200  * @brief SLA命令 - オペランドr,adr,x。語長2
 201  *
 202  * 算術演算なので、第15ビットは送り出されない
 203  * @relatesalso Exec
 204  *
 205  */
 206 void sla();
 207 
 208 /**
 209  * @brief SRA命令 - オペランドr,adr,x。語長2
 210  *
 211  * 算術演算なので、第15ビットは送り出されない
 212  * 空いたビット位置には符号と同じものが入る
 213  * @relatesalso Exec
 214  *
 215  */
 216 void sra();
 217 
 218 /**
 219  * @brief SLL命令 - オペランドr,adr,x。語長2
 220  * @relatesalso Exec
 221  *
 222  */
 223 void sll();
 224 
 225 /**
 226  * @brief SRL命令 - オペランドr,adr,x。語長2
 227  * @relatesalso Exec
 228  *
 229  */
 230 void srl();
 231 
 232 /**
 233  * @brief JPL命令。語長2
 234  * @relatesalso Exec
 235  *
 236  */
 237 void jpl();
 238 
 239 /**
 240  * @brief JMI命令。語長2
 241  * @relatesalso Exec
 242  *
 243  */
 244 void jmi();
 245 
 246 /**
 247  * @brief JNZ命令。語長2
 248  * @relatesalso Exec
 249  *
 250  */
 251 void jnz();
 252 
 253 /**
 254  * @brief JZE命令。語長2
 255  * @relatesalso Exec
 256  *
 257  */
 258 void jze();
 259 
 260 /**
 261  * @brief JOV命令。語長2
 262  * @relatesalso Exec
 263  *
 264  */
 265 void jov();
 266 
 267 /**
 268  * @brief JUMP命令。語長2
 269  * @relatesalso Exec
 270  *
 271  */
 272 void jump();
 273 
 274 /**
 275  * @brief PUSH命令。語長2
 276  * @relatesalso Exec
 277  *
 278  */
 279 void push();
 280 
 281 /**
 282  * @brief POP命令。語長1
 283  * @relatesalso Exec
 284  *
 285  */
 286 void pop();
 287 
 288 /**
 289  * @brief CALL命令。語長2
 290  * @relatesalso Exec
 291  *
 292  */
 293 void call();
 294 
 295 /**
 296  * @brief RET命令。語長1(OPのみ)
 297  * @relatesalso Exec
 298  *
 299  */
 300 void ret();
 301 
 302 /**
 303  * @brief SVC命令。語長2
 304  * @relatesalso Exec
 305  *
 306  */
 307 void svc();
 308 
 309 /**
 310  * @brief COMET IIのメモリを表示する
 311  *
 312  * @param start 表示の開始アドレス
 313  * @param end 表示の終了アドレス
 314  */
 315 void dumpmemory(WORD start, WORD end);
 316 
 317 /**
 318  * @brief COMET IIのレジスタを表示する
 319  *
 320  */
 321 void dspregister();
 322 
 323 #endif

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