projects
/
YACASL2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ライセンスの年度表記を更新
[YACASL2.git]
/
src
/
exec.c
diff --git
a/src/exec.c
b/src/exec.c
index
1bc891e
..
7e7a431
100644
(file)
--- a/
src/exec.c
+++ b/
src/exec.c
@@
-74,7
+74,7
@@
bool loadassemble(const char *file)
/**
* プログラムレジスタ(PR)を表す文字列を返す
/**
* プログラムレジスタ(PR)を表す文字列を返す
- *
*
/
+ */
char *pr2str(WORD pr) {
char *str = malloc_chk(CERRSTRSIZE + 1, "pr2str.pr");
char *pr2str(WORD pr) {
char *str = malloc_chk(CERRSTRSIZE + 1, "pr2str.pr");
@@
-100,7
+100,7
@@
void svcin()
break;
}
if(sys->cpu->gr[1] + i > execptr->end) {
break;
}
if(sys->cpu->gr[1] + i > execptr->end) {
- setcerr(208,
NULL
); /* SVC input - memory overflow */
+ setcerr(208,
""
); /* SVC input - memory overflow */
break;
}
sys->memory[sys->cpu->gr[1]+i] = *(buffer + i);
break;
}
sys->memory[sys->cpu->gr[1]+i] = *(buffer + i);
@@
-119,7
+119,7
@@
void svcout()
for(i = 0; i < sys->memory[sys->cpu->gr[2]]; i++) {
if(sys->cpu->gr[1] + i > execptr->end) {
for(i = 0; i < sys->memory[sys->cpu->gr[2]]; i++) {
if(sys->cpu->gr[1] + i > execptr->end) {
- setcerr(209,
NULL
); /* SVC output - memory overflow */
+ setcerr(209,
""
); /* SVC output - memory overflow */
return;
}
/* 「文字の組」の符号表に記載された文字と、改行(CR)/タブを表示 */
return;
}
/* 「文字の組」の符号表に記載された文字と、改行(CR)/タブを表示 */
@@
-202,6
+202,7
@@
WORD get_val_adr_x(WORD adr, WORD oprx)
/**
* NOP命令。語長1(OPのみ)
/**
* NOP命令。語長1(OPのみ)
+ * \relates exec
*/
void nop()
{
*/
void nop()
{
@@
-210,6
+211,7
@@
void nop()
/**
* LD命令 - オペランドr,adr,x。語長2
/**
* LD命令 - オペランドr,adr,x。語長2
+ * \relates exec
*/
void ld_r_adr_x()
{
*/
void ld_r_adr_x()
{
@@
-222,6
+224,7
@@
void ld_r_adr_x()
/**
* LD命令 - オペランドr1,r2。語長1
/**
* LD命令 - オペランドr1,r2。語長1
+ * \relates exec
*/
void ld_r1_r2()
{
*/
void ld_r1_r2()
{
@@
-233,6
+236,7
@@
void ld_r1_r2()
/**
* ST命令。語長2
/**
* ST命令。語長2
+ * \relates exec
*/
void st()
{
*/
void st()
{
@@
-245,6
+249,7
@@
void st()
/**
* LAD命令。語長2
/**
* LAD命令。語長2
+ * \relates exec
*/
void lad()
{
*/
void lad()
{
@@
-256,7
+261,7
@@
void lad()
}
/**
}
/**
- * ADDA命令のテンプレート
+ * ADDA命令のテンプレート
\n
* 汎用レジスタrに値valを算術加算
*/
void adda(WORD r, WORD val)
* 汎用レジスタrに値valを算術加算
*/
void adda(WORD r, WORD val)
@@
-280,6
+285,7
@@
void adda(WORD r, WORD val)
/**
* ADDA命令 - オペランドr,adr,x。語長2
/**
* ADDA命令 - オペランドr,adr,x。語長2
+ * \relates exec
*/
void adda_r_adr_x()
{
*/
void adda_r_adr_x()
{
@@
-292,6
+298,7
@@
void adda_r_adr_x()
/**
* ADDA命令 - オペランドr1,r2。語長1
/**
* ADDA命令 - オペランドr1,r2。語長1
+ * \relates exec
*/
void adda_r1_r2()
{
*/
void adda_r1_r2()
{
@@
-303,6
+310,7
@@
void adda_r1_r2()
/**
* SUBA命令 - オペランドr,adr,x。語長2
/**
* SUBA命令 - オペランドr,adr,x。語長2
+ * \relates exec
*/
void suba_r_adr_x()
{
*/
void suba_r_adr_x()
{
@@
-315,6
+323,7
@@
void suba_r_adr_x()
/**
* SUBA命令 - オペランドr1,r2。語長1
/**
* SUBA命令 - オペランドr1,r2。語長1
+ * \relates exec
*/
void suba_r1_r2()
{
*/
void suba_r1_r2()
{
@@
-325,7
+334,7
@@
void suba_r1_r2()
}
/**
}
/**
- * ADDL命令のテンプレート
+ * ADDL命令のテンプレート
\n
* 汎用レジスタrに値valを論理加算
*/
void addl(WORD r, WORD val)
* 汎用レジスタrに値valを論理加算
*/
void addl(WORD r, WORD val)
@@
-345,6
+354,7
@@
void addl(WORD r, WORD val)
/**
* ADDL命令 - オペランドr,adr,x。語長2
/**
* ADDL命令 - オペランドr,adr,x。語長2
+ * \relates exec
*/
void addl_r_adr_x()
{
*/
void addl_r_adr_x()
{
@@
-357,6
+367,7
@@
void addl_r_adr_x()
/**
* ADDL命令 - オペランドr1,r2。語長1
/**
* ADDL命令 - オペランドr1,r2。語長1
+ * \relates exec
*/
void addl_r1_r2()
{
*/
void addl_r1_r2()
{
@@
-368,6
+379,7
@@
void addl_r1_r2()
/**
* SUBL命令 - オペランドr,adr,x。語長2
/**
* SUBL命令 - オペランドr,adr,x。語長2
+ * \relates exec
*/
void subl_r_adr_x()
{
*/
void subl_r_adr_x()
{
@@
-378,8
+390,10
@@
void subl_r_adr_x()
sys->cpu->pr += 2;
}
sys->cpu->pr += 2;
}
+
/**
* SUBL命令 - オペランドr1,r2。語長1
/**
* SUBL命令 - オペランドr1,r2。語長1
+ * \relates exec
*/
void subl_r1_r2()
{
*/
void subl_r1_r2()
{
@@
-391,6
+405,7
@@
void subl_r1_r2()
/**
* AND命令 - オペランドr,adr,x。語長2
/**
* AND命令 - オペランドr,adr,x。語長2
+ * \relates exec
*/
void and_r_adr_x()
{
*/
void and_r_adr_x()
{
@@
-403,6
+418,7
@@
void and_r_adr_x()
/**
* AND命令 - オペランドr1,r2。語長1
/**
* AND命令 - オペランドr1,r2。語長1
+ * \relates exec
*/
void and_r1_r2()
{
*/
void and_r1_r2()
{
@@
-414,6
+430,7
@@
void and_r1_r2()
/**
* OR命令 - オペランドr,adr,x。語長2
/**
* OR命令 - オペランドr,adr,x。語長2
+ * \relates exec
*/
void or_r_adr_x()
{
*/
void or_r_adr_x()
{
@@
-426,6
+443,7
@@
void or_r_adr_x()
/**
* OR命令 - オペランドr1,r2。語長1
/**
* OR命令 - オペランドr1,r2。語長1
+ * \relates exec
*/
void or_r1_r2()
{
*/
void or_r1_r2()
{
@@
-437,6
+455,7
@@
void or_r1_r2()
/**
* XOR命令 - オペランドr,adr,x。語長2
/**
* XOR命令 - オペランドr,adr,x。語長2
+ * \relates exec
*/
void xor_r_adr_x()
{
*/
void xor_r_adr_x()
{
@@
-449,6
+468,7
@@
void xor_r_adr_x()
/**
* XOR命令 - オペランドr1,r2。語長1
/**
* XOR命令 - オペランドr1,r2。語長1
+ * \relates exec
*/
void xor_r1_r2()
{
*/
void xor_r1_r2()
{
@@
-459,7
+479,7
@@
void xor_r1_r2()
}
/**
}
/**
- * CPA命令のテンプレート
+ * CPA命令のテンプレート
\n
* 汎用レジスタrの内容と値valを算術比較
*/
void cpa(WORD r, WORD val)
* 汎用レジスタrの内容と値valを算術比較
*/
void cpa(WORD r, WORD val)
@@
-474,6
+494,7
@@
void cpa(WORD r, WORD val)
/**
* CPA命令 - オペランドr,adr,x。語長2
/**
* CPA命令 - オペランドr,adr,x。語長2
+ * \relates exec
*/
void cpa_r_adr_x()
{
*/
void cpa_r_adr_x()
{
@@
-486,6
+507,7
@@
void cpa_r_adr_x()
/**
* CPA命令 - オペランドr1,r2。語長1
/**
* CPA命令 - オペランドr1,r2。語長1
+ * \relates exec
*/
void cpa_r1_r2()
{
*/
void cpa_r1_r2()
{
@@
-496,13
+518,11
@@
void cpa_r1_r2()
}
/**
}
/**
- * CPL命令のテンプレート
+ * CPL命令のテンプレート
\n
* 汎用レジスタrの内容と値valを論理比較
*/
void cpl(WORD r, WORD val)
{
* 汎用レジスタrの内容と値valを論理比較
*/
void cpl(WORD r, WORD val)
{
- WORD w[1];
- w[0] = sys->memory[sys->cpu->pr];
sys->cpu->fr = 0x0;
if(sys->cpu->gr[r] < val) {
sys->cpu->fr = SF;
sys->cpu->fr = 0x0;
if(sys->cpu->gr[r] < val) {
sys->cpu->fr = SF;
@@
-514,6
+534,7
@@
void cpl(WORD r, WORD val)
/**
* CPL命令 - オペランドr,adr,x。語長2
/**
* CPL命令 - オペランドr,adr,x。語長2
+ * \relates exec
*/
void cpl_r_adr_x()
{
*/
void cpl_r_adr_x()
{
@@
-526,6
+547,7
@@
void cpl_r_adr_x()
/**
* CPL命令 - オペランドr1,r2。語長1
/**
* CPL命令 - オペランドr1,r2。語長1
+ * \relates exec
*/
void cpl_r1_r2()
{
*/
void cpl_r1_r2()
{
@@
-536,8
+558,9
@@
void cpl_r1_r2()
}
/**
}
/**
- * SLA命令 - オペランドr,adr,x。語長2
+ * SLA命令 - オペランドr,adr,x。語長2
\n
* 算術演算なので、第15ビットは送り出されない
* 算術演算なので、第15ビットは送り出されない
+ * \relates exec
*/
void sla()
{
*/
void sla()
{
@@
-570,9
+593,10
@@
void sla()
}
/**
}
/**
- * SRA命令 - オペランドr,adr,x。語長2
- * 算術演算なので、第15ビットは送り出されない
+ * SRA命令 - オペランドr,adr,x。語長2
\n
+ * 算術演算なので、第15ビットは送り出されない
\n
* 空いたビット位置には符号と同じものが入る
* 空いたビット位置には符号と同じものが入る
+ * \relates exec
*/
void sra()
{
*/
void sra()
{
@@
-609,6
+633,7
@@
void sra()
/**
* SLL命令 - オペランドr,adr,x。語長2
/**
* SLL命令 - オペランドr,adr,x。語長2
+ * \relates exec
*/
void sll()
{
*/
void sll()
{
@@
-639,6
+664,7
@@
void sll()
/**
* SRL命令 - オペランドr,adr,x。語長2
/**
* SRL命令 - オペランドr,adr,x。語長2
+ * \relates exec
*/
void srl()
{
*/
void srl()
{
@@
-670,6
+696,7
@@
void srl()
/**
* JPL命令。語長2
/**
* JPL命令。語長2
+ * \relates exec
*/
void jpl()
{
*/
void jpl()
{
@@
-685,6
+712,7
@@
void jpl()
/**
* JMI命令。語長2
/**
* JMI命令。語長2
+ * \relates exec
*/
void jmi()
{
*/
void jmi()
{
@@
-700,6
+728,7
@@
void jmi()
/**
* JNZ命令。語長2
/**
* JNZ命令。語長2
+ * \relates exec
*/
void jnz()
{
*/
void jnz()
{
@@
-715,6
+744,7
@@
void jnz()
/**
* JZE命令。語長2
/**
* JZE命令。語長2
+ * \relates exec
*/
void jze()
{
*/
void jze()
{
@@
-730,6
+760,7
@@
void jze()
/**
* JOV命令。語長2
/**
* JOV命令。語長2
+ * \relates exec
*/
void jov()
{
*/
void jov()
{
@@
-745,6
+776,7
@@
void jov()
/**
* JUMP命令。語長2
/**
* JUMP命令。語長2
+ * \relates exec
*/
void jump()
{
*/
void jump()
{
@@
-756,6
+788,7
@@
void jump()
/**
* PUSH命令。語長2
/**
* PUSH命令。語長2
+ * \relates exec
*/
void push()
{
*/
void push()
{
@@
-769,6
+802,7
@@
void push()
/**
* POP命令。語長1
/**
* POP命令。語長1
+ * \relates exec
*/
void pop()
{
*/
void pop()
{
@@
-781,6
+815,7
@@
void pop()
/**
* CALL命令。語長2
/**
* CALL命令。語長2
+ * \relates exec
*/
void call()
{
*/
void call()
{
@@
-794,6
+829,7
@@
void call()
/**
* RET命令。語長1(OPのみ)
/**
* RET命令。語長1(OPのみ)
+ * \relates exec
*/
void ret()
{
*/
void ret()
{
@@
-807,6
+843,7
@@
void ret()
/**
* SVC命令。語長2
/**
* SVC命令。語長2
+ * \relates exec
*/
void svc()
{
*/
void svc()
{
@@
-830,6
+867,7
@@
void svc()
/**
* 仮想マシンCOMET IIの実行
/**
* 仮想マシンCOMET IIの実行
+ * \class exec
*/
void exec()
{
*/
void exec()
{