アセンブルのソースを整理
[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->memsize;   /* スタックポインタ */
34     sys->cpu->pr = 0x0;            /* プログラムレジスタ */
35     sys->cpu->fr = 0x0;            /* フラグレジスタ */
36     /* CASL2プログラムの開始と終了のアドレスを初期化 */
37     execptr = malloc_chk(sizeof(EXECPTR), "execptr");
38     execptr->stop = false;
39 }
40
41 /**
42  * COMET II仮想マシンのシャットダウン
43  */
44 void shutdown()
45 {
46     FREE(execptr);
47     FREE(sys->memory);
48     FREE(sys->cpu);
49     FREE(sys);
50 }