Merge branch 'master'
[YACASL2.git] / src / exec.c
index c7c125e..99a01d7 100644 (file)
@@ -86,17 +86,9 @@ static CERR cerr_exec[] = {
 };
 
 /**
- * @brief アセンブル結果読み込みエラーの定義
+ * @brief 実行モード: trace, logical, dump, dump_start, dump_end,  monitor, step
  */
-static CERR cerr_load[] = {
-    { 210, "load - memory overflow" },
-    { 211, "object file not specified" },
-};
-
-/**
- * @brief 実行モード: trace, logical, dump, monitor, step
- */
-EXECMODE execmode = {false, false, false, false, false};
+EXECMODE execmode = {false, false, false, 0, 0xFFFF, false, false};
 
 char *pr2str(WORD pr)
 {
@@ -116,7 +108,7 @@ void svcin()
         return;
     }
     for(i = 0; i < INSIZE; i++) {
-        if(*(buf + i) == '\0' || *(buf + i) == '\n') {
+        if(!buf[i] || buf[i] == '\n') {
             --i;
             break;
         }
@@ -124,7 +116,7 @@ void svcin()
             setcerr(208, "");    /* SVC input - memory overflow */
             break;
         }
-        sys->memory[sys->cpu->gr[1]+i] = *(buf + i);
+        sys->memory[sys->cpu->gr[1] + i] = buf[i];
     }
     sys->memory[sys->cpu->gr[2]] = i + 1;
     FREE(buf);
@@ -216,11 +208,6 @@ WORD get_val_adr_x(WORD adr, WORD oprx)
 }
 
 /* exec.hで定義された関数群 */
-void addcerrlist_load()
-{
-    addcerrlist(ARRAYSIZE(cerr_load), cerr_load);
-}
-
 void addcerrlist_exec()
 {
     addcerrlist(ARRAYSIZE(cerr_exec), cerr_exec);
@@ -768,7 +755,8 @@ void exec()
     char *s;
     const char *monmsg = "COMET II machine code monitor. Type ? for help.\n";
 
-    create_code_cmdtype();                          /* 命令のコードとタイプがキーのハッシュ表を作成 */
+    create_cmdtable(HASH_CODE);                 /* 命令のコードとタイプがキーのハッシュ表を作成 */
+
     if(execmode.trace == true) {
         fprintf(stdout, "\nExecuting machine codes\n");
     }
@@ -782,7 +770,7 @@ void exec()
             }
             if(execmode.dump) {                    /* dumpオプション指定時、メモリを出力 */
                 fprintf(stdout, "#%04X: Memory::::\n", sys->cpu->pr);
-                dumpmemory(0x0, 0xFFFF);
+                dumpmemory(execmode.dump_start, execmode.dump_end);
             }
             fprintf(stdout, "\n");
         }
@@ -837,7 +825,7 @@ void exec()
     }
 execfin:
     freebps();
-    free_code_cmdtype();                           /* 命令のコードとタイプがキーのハッシュ表を解放 */
+    free_cmdtable(HASH_CODE);              /* 命令のコードとタイプがキーのハッシュ表を解放 */
     if(cerr->num > 0) {
         fprintf(stderr, "Execute error - %d: %s\n", cerr->num, cerr->msg);
     }