アセンブルのソースを整理
[YACASL2.git] / src / struct.c
index 0662eff..2d3c67f 100644 (file)
@@ -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");
-    for(i = 0; i < GRSIZE; i++) {
+    for(i = 0; i < GRSIZE; i++) {                    /* 汎用レジスタ  */
         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プログラムの開始と終了のアドレスを初期化 */
-    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()
 {
-    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);
 }