9e3d256f9eb3f88b57937a76f25289a8c0c9c4bb
[YACASL2.git] / src / struct.c
1 #include "casl2.h"
2
3 /* COMET IIの仮装実行マシンシステム */
4 SYSTEM *sys;
5
6 /* CASL IIプログラムのプロパティ */
7 PROGPROP *prog;
8
9 /* COMET II仮想マシンのリセット */
10 void reset(int memsize, int clocks)
11 {
12     int i;
13
14     sys = malloc_chk(sizeof(SYSTEM), "sys");
15     /* メモリサイズの設定 */
16     sys->memsize = memsize;
17     /* クロック周波数の設定 */
18     sys->clocks = clocks;
19     /* メモリの初期化 */
20     sys->memory = calloc_chk(sys->memsize, sizeof(WORD), "memory");
21     /* CPUの初期化 */
22     sys->cpu = malloc_chk(sizeof(CPU), "cpu");
23     for(i = 0; i < GRSIZE; i++) {
24         sys->cpu->gr[i] = 0x0;
25     }
26     sys->cpu->sp = sys->cpu->pr = sys->cpu->fr = 0x0;
27     /* CASL2プログラムのプロパティ */
28     prog = malloc_chk(sizeof(PROGPROP), "prog");
29 }
30
31 /* COMET II仮想マシンのシャットダウン */
32 void shutdown()
33 {
34     free_chk(prog, "prog");
35     free_chk(sys->memory, "sys.memory");
36     free_chk(sys->cpu, "sys.cpu");
37     free_chk(sys, "sys");
38 }