projects
/
YACASL2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master'
[YACASL2.git]
/
include
/
exec.h
diff --git
a/include/exec.h
b/include/exec.h
index
dbf2c49
..
08b4dd1
100644
(file)
--- a/
include/exec.h
+++ b/
include/exec.h
@@
-2,200
+2,373
@@
#define YACASL2_EXEC_INCLUDED
#include <stdbool.h>
#define YACASL2_EXEC_INCLUDED
#include <stdbool.h>
+#include <stdio.h>
+#include <assert.h>
+#include <time.h>
#include "struct.h"
#include "word.h"
#include "struct.h"
#include "word.h"
+#include "cmem.h"
+#include "cerr.h"
+#include "monitor.h"
+#include "disassemble.h"
enum {
INSIZE = 256 /**<IN命令の、入力領域 */
};
/**
enum {
INSIZE = 256 /**<IN命令の、入力領域 */
};
/**
- *
å®
\9f
è¡
\8c
ã
\83
¢ã
\83
¼ã
\83
\89
å
\9e
\8b
+ *
@brief å®
\9f
è¡
\8c
ã
\82
¨ã
\83
©ã
\83
¼ã
\82
\92
ã
\82
¨ã
\83
©ã
\83
¼ã
\83
ªã
\82
¹ã
\83
\88
ã
\81
«è¿½å
\8a
ã
\81
\99
ã
\82
\8b
*/
*/
-typedef struct {
- bool trace; /**<レジストリの内容を表示する場合はtrue */
- bool logical; /**<レジストリの内容を論理値(0から65535)で表示する場合はtrue */
- bool dump; /**<メモリの内容を表示する場合はtrue */
-} EXECMODE;
+void addcerrlist_exec();
/**
/**
- * 実行モード: trace, logical, dump
+ * @brief 指定されたファイルからアセンブル結果を読み込む
+ *
+ * @return 読み込み終了アドレス。読み込めなかった場合は、0
+ *
+ * @param file 読み込むファイル名
+ * @param start 読み込み開始アドレス
*/
*/
-extern EXECMODE execmode;
+WORD loadassemble(const char *file, WORD start);
+
+/**
+ * @class Exec
+ * @brief execから関数ポインタで呼び出される関数
+ * @relatesalso exec
+ **/
/**
/**
- * 実行エラーをエラーリストに追加
+ * @brief COMET II仮想マシンを実行する
+ *
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
addcerrlist_
exec();
+void exec();
/**
/**
- * アセンブル結果読み込みエラーをエラーリストに追加
+ * @brief NOP命令。語長1(OPのみ)
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
addcerrlist_load
();
+void
nop
();
/**
/**
- * 指定されたファイルからアセンブル結果を読み込む
+ * @brief LD命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-
bool loadassemble(char *file
);
+
void ld_r_adr_x(
);
/**
/**
- * COMET II仮想マシンのリセット
+ * @brief LD命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
reset
();
+void
ld_r1_r2
();
/**
/**
- * NOP命令
+ * @brief ST命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
nop(const WORD r, const WORD v
);
+void
st(
);
/**
/**
- * LD命令
+ * @brief LAD命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void l
d(const WORD r, const WORD v
);
+void l
ad(
);
/**
/**
- * ST命令
+ * @brief ADDA命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
st(const WORD r, const WORD v
);
+void
adda_r_adr_x(
);
/**
/**
- * LAD命令
+ * @brief ADDA命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
lad(const WORD r, const WORD v
);
+void
adda_r1_r2(
);
/**
/**
- * ADDA命令
+ * @brief SUBA命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
adda(const WORD r, const WORD v
);
+void
suba_r_adr_x(
);
/**
/**
- * SUBA命令
+ * @brief SUBA命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void suba
(const WORD r, const WORD v
);
+void suba
_r1_r2(
);
/**
/**
- * ADDL命令
+ * @brief ADDL命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void addl
(const WORD r, const WORD v
);
+void addl
_r_adr_x(
);
/**
/**
- * SUBL命令
+ * @brief ADDL命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
subl(const WORD r, const WORD v
);
+void
addl_r1_r2(
);
/**
/**
- * AND命令
+ * @brief SUBL命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
and(const WORD r, const WORD v
);
+void
subl_r_adr_x(
);
/**
/**
- * OR命令
+ * @brief SUBL命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
or(const WORD r, const WORD v
);
+void
subl_r1_r2(
);
/**
/**
- * XOR命令
+ * @brief AND命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
xor(const WORD r, const WORD v
);
+void
and_r_adr_x(
);
/**
/**
- * CPA命令
+ * @brief AND命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
cpa(const WORD r, const WORD v
);
+void
and_r1_r2(
);
/**
/**
- * CPL命令
+ * @brief OR命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
cpl(const WORD r, const WORD v
);
+void
or_r_adr_x(
);
/**
/**
- * SLA命令
+ * @brief OR命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
sla(const WORD r, const WORD v
);
+void
or_r1_r2(
);
/**
/**
- * SRA命令
+ * @brief XOR命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
sra(const WORD r, const WORD v
);
+void
xor_r_adr_x(
);
/**
/**
- * SLL命令
+ * @brief XOR命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
sll(const WORD r, const WORD v
);
+void
xor_r1_r2(
);
/**
/**
- * SRL命令
+ * @brief CPA命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
srl(const WORD r, const WORD v
);
+void
cpa_r_adr_x(
);
/**
/**
- * JMI命令
+ * @brief CPA命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
jmi(const WORD r, const WORD v
);
+void
cpa_r1_r2(
);
/**
/**
- * JNZ命令
+ * @brief CPL命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
jnz(const WORD r, const WORD v
);
+void
cpl_r_adr_x(
);
/**
/**
- * JZE命令
+ * @brief CPL命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
jze(const WORD r, const WORD v
);
+void
cpl_r1_r2(
);
/**
/**
- * JUMP命令
+ * @brief SLA命令 - オペランドr,adr,x。語長2
+ *
+ * 算術演算なので、第15ビットは送り出されない
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
jump(const WORD r, const WORD v
);
+void
sla(
);
/**
/**
- * JPL命令
+ * @brief SRA命令 - オペランドr,adr,x。語長2
+ *
+ * 算術演算なので、第15ビットは送り出されない
+ * 空いたビット位置には符号と同じものが入る
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
jpl(const WORD r, const WORD v
);
+void
sra(
);
/**
/**
- * JOV命令
+ * @brief SLL命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
jov(const WORD r, const WORD v
);
+void
sll(
);
/**
/**
- * PUSH命令
+ * @brief SRL命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
push(const WORD r, const WORD v
);
+void
srl(
);
/**
/**
- * POP命令
+ * @brief JPL命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
pop(const WORD r, const WORD v
);
+void
jpl(
);
/**
/**
- * CALL命令
+ * @brief JMI命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
call(const WORD r, const WORD v
);
+void
jmi(
);
/**
/**
- * RET命令
+ * @brief JNZ命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
ret(const WORD r, const WORD v
);
+void
jnz(
);
/**
/**
- * SVC命令
+ * @brief JZE命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-void
svc(const WORD r, const WORD v
);
+void
jze(
);
+/**
+ * @brief JOV命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
+ */
+void jov();
+
+/**
+ * @brief JUMP命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
+ */
+void jump();
+
+/**
+ * @brief PUSH命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
+ */
+void push();
+
+/**
+ * @brief POP命令。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
+ */
+void pop();
+
+/**
+ * @brief CALL命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
+ */
+void call();
+
+/**
+ * @brief RET命令。語長1(OPのみ)
+ * @relatesalso Exec
+ *
+ * @return なし
+ */
+void ret();
/**
/**
- * COMET II仮想マシンの実行
+ * @brief SVC命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
*/
-
bool exe
c();
+
void sv
c();
/**
/**
- * COMET IIのメモリを表示
+ * @brief COMET IIのメモリを表示する
+ *
+ * @return なし
+ *
+ * @param start 表示の開始アドレス
+ * @param end 表示の終了アドレス
*/
*/
-void dumpmemory();
+void dumpmemory(
WORD start, WORD end
);
/**
/**
- * COMET IIのレジスタを表示
+ * @brief COMET IIのレジスタを表示する
+ *
+ * @return なし
*/
void dspregister();
*/
void dspregister();