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
/
struct.c
diff --git
a/src/struct.c
b/src/struct.c
index
0662eff
..
2d3c67f
100644
(file)
--- a/
src/struct.c
+++ b/
src/struct.c
@@
-27,12
+27,15
@@
void reset(int memsize, int clocks)
sys->memory = calloc_chk(sys->memsize, sizeof(WORD), "memory");
/* CPUを初期化 */
sys->cpu = malloc_chk(sizeof(CPU), "cpu");
sys->memory = calloc_chk(sys->memsize, sizeof(WORD), "memory");
/* CPUを初期化 */
sys->cpu = malloc_chk(sizeof(CPU), "cpu");
- for(i = 0; i < GRSIZE; i++) {
+ for(i = 0; i < GRSIZE; i++) {
/* 汎用レジスタ */
sys->cpu->gr[i] = 0x0;
}
sys->cpu->gr[i] = 0x0;
}
- sys->cpu->sp = sys->cpu->pr = sys->cpu->fr = 0x0;
+ sys->cpu->sp = sys->memsize; /* スタックポインタ */
+ sys->cpu->pr = 0x0; /* プログラムレジスタ */
+ sys->cpu->fr = 0x0; /* フラグレジスタ */
/* CASL2プログラムの開始と終了のアドレスを初期化 */
/* CASL2プログラムの開始と終了のアドレスを初期化 */
- execptr = malloc_chk(sizeof(execptr), "prog");
+ execptr = malloc_chk(sizeof(EXECPTR), "execptr");
+ execptr->stop = false;
}
/**
}
/**
@@
-40,8
+43,8
@@
void reset(int memsize, int clocks)
*/
void shutdown()
{
*/
void shutdown()
{
-
free_chk(execptr, "execptr"
);
-
free_chk(sys->memory, "sys.memory"
);
-
free_chk(sys->cpu, "sys.cpu"
);
-
free_chk(sys, "sys"
);
+
FREE(execptr
);
+
FREE(sys->memory
);
+
FREE(sys->cpu
);
+
FREE(sys
);
}
}