malloc周りの修正
[YACASL2.git] / src / struct.c
1 #include "struct.h"
2 #include "cmem.h"
3
4 /**
5  * COMET IIの仮想実行マシンシステム
6  */
7 SYSTEM *sys;
8
9 /**
10  * プログラム実行時の開始と終了のアドレス
11  */
12 EXECPTR *execptr;
13
14 /**
15  * COMET II仮想マシンのリセット
16  */
17 void reset(int memsize, int clocks)
18 {
19     int i;
20
21     sys = malloc_chk(sizeof(SYSTEM), "sys");
22     /* メモリサイズを設定 */
23     sys->memsize = memsize;
24     /* クロック周波数を設定 */
25     sys->clocks = clocks;
26     /* メモリを初期化 */
27     sys->memory = calloc_chk(sys->memsize, sizeof(WORD), "memory");
28     /* CPUを初期化 */
29     sys->cpu = malloc_chk(sizeof(CPU), "cpu");
30     for(i = 0; i < GRSIZE; i++) {
31         sys->cpu->gr[i] = 0x0;
32     }
33     sys->cpu->sp = sys->cpu->pr = sys->cpu->fr = 0x0;
34     /* CASL2プログラムの開始と終了のアドレスを初期化 */
35     execptr = malloc_chk(sizeof(EXECPTR), "prog");
36 }
37
38 /**
39  * COMET II仮想マシンのシャットダウン
40  */
41 void shutdown()
42 {
43     FREE(execptr);
44     FREE(sys->memory);
45     FREE(sys->cpu);
46     FREE(sys);
47 }