ファイルからのロードについての記述を、load.cとload.hに
authorj8takagi <j8takagi@nifty.com>
Thu, 28 Feb 2019 06:54:13 +0000 (15:54 +0900)
committerj8takagi <j8takagi@nifty.com>
Thu, 28 Feb 2019 06:54:13 +0000 (15:54 +0900)
include/load.h [new file with mode: 0644]
include/word.h
src/casl2rev.c
src/comet2.c
src/comet2monitor.c
src/dumpword.c
src/exec.c
src/load.c [new file with mode: 0644]
src/word.c

diff --git a/include/load.h b/include/load.h
new file mode 100644 (file)
index 0000000..6ded1f4
--- /dev/null
@@ -0,0 +1,19 @@
+#ifndef YACASL2_LOAD_H_INCLUDE
+#define YACASL2_LOAD_H_INCLUDE
+
+/**
+ * @brief アセンブル結果読み込みエラーをエラーリストに追加する
+ */
+void addcerrlist_load();
+
+/**
+ * @brief 指定されたファイルからアセンブル結果を読み込む
+ *
+ * @return 読み込み終了アドレス。読み込めなかった場合は、0
+ *
+ * @param file 読み込むファイル名
+ * @param start 読み込み開始アドレス
+ */
+WORD loadassemble(const char *file, WORD start);
+
+#endif
index 7215a54..8e70f2e 100644 (file)
@@ -8,11 +8,6 @@
  */
 typedef unsigned short WORD;
 
-/**
- * @brief アセンブル結果読み込みエラーをエラーリストに追加する
- */
-void addcerrlist_load();
-
 /**
  * @brief wordデータ型についてのエラーをエラーリストに追加する
  *
index aa150b5..f81d640 100644 (file)
@@ -1,5 +1,6 @@
 #include "package.h"
 #include "disassemble.h"
+#include "load.h"
 
 /**
  * @brief casl2revコマンドのオプション
index 8b827ba..f358ec1 100644 (file)
@@ -1,5 +1,6 @@
 #include "package.h"
 #include "exec.h"
+#include "load.h"
 
 /**
  * comet2コマンドのオプション
index 8d83948..1f08637 100644 (file)
@@ -1,5 +1,6 @@
 #include "package.h"
 #include "exec.h"
+#include "load.h"
 
 /**
  * comet2monitorコマンドのオプション
index 3909890..88915a8 100644 (file)
@@ -49,14 +49,14 @@ int main(int argc, char *argv[])
             goto dumpwordfin;
         case '?':
             fprintf(stderr, usage, argv[0]);
-            setcerr(212, "");    /* invalid option */
+            setcerr(999, "");
             goto dumpwordfin;
         }
     }
 
     if(argv[optind] == NULL) {
-        setcerr(213, "");    /* invalid argument */
         fprintf(stderr, usage, argv[0]);
+        setcerr(999, "");
         goto dumpwordfin;
     }
     /* WORD値に変換 */
index 5d4e191..65bd3a7 100644 (file)
@@ -215,25 +215,6 @@ void addcerrlist_exec()
     addcerrlist(ARRAYSIZE(cerr_exec), cerr_exec);
 }
 
-WORD loadassemble(const char *file, WORD start)
-{
-    FILE *fp = NULL;
-    WORD end = 0;
-
-    assert(file != NULL);
-    if((fp = fopen(file, "rb")) == NULL) {
-        perror(file);
-        return 0;
-    }
-    end = start + fread(sys->memory + start, sizeof(WORD), sys->memsize - start, fp);
-    if(end == sys->memsize) {
-        setcerr(210, file);    /* load - memory overflow */
-        fprintf(stderr, "Load error - %d: %s\n", cerr->num, cerr->msg);
-    }
-    fclose(fp);
-    return end;
-}
-
 void nop()
 {
     sys->cpu->pr += 1;
diff --git a/src/load.c b/src/load.c
new file mode 100644 (file)
index 0000000..c511d05
--- /dev/null
@@ -0,0 +1,44 @@
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+#include "word.h"
+#include "struct.h"
+#include "cerr.h"
+
+/**
+ * @brief ファイル読み込みのエラー定義
+ */
+static CERR cerr_load[] = {
+    { 210, "load - memory overflow" },
+    { 211, "object file not specified" },
+    { 212, "invalid option" },
+    { 213, "invalid argument" },
+};
+
+/* load.hで定義された関数群 */
+void addcerrlist_load()
+{
+    addcerrlist(ARRAYSIZE(cerr_load), cerr_load);
+}
+
+WORD loadassemble(const char *file, WORD start)
+{
+    FILE *fp = NULL;
+    WORD end = 0;
+
+    assert(file != NULL);
+    if((fp = fopen(file, "rb")) == NULL) {
+        perror(file);
+        return 0;
+    }
+    end = start + fread(sys->memory + start, sizeof(WORD), sys->memsize - start, fp);
+    if(end == sys->memsize) {
+        setcerr(210, file);    /* load - memory overflow */
+        fprintf(stderr, "Load error - %d: %s\n", cerr->num, cerr->msg);
+    }
+    fclose(fp);
+    return end;
+}
index bb564cf..1c1f845 100644 (file)
@@ -73,22 +73,7 @@ static CERR cerr_word[] = {
     { 116, "out of hex range" },
 };
 
-/**
- * @brief ファイル読み込みのエラー定義
- */
-static CERR cerr_load[] = {
-    { 210, "load - memory overflow" },
-    { 211, "object file not specified" },
-    { 212, "invalid option" },
-    { 213, "invalid argument" },
-};
-
 /* word.hで定義された関数群 */
-void addcerrlist_load()
-{
-    addcerrlist(ARRAYSIZE(cerr_load), cerr_load);
-}
-
 void addcerrlist_word()
 {
     addcerrlist(ARRAYSIZE(cerr_word), cerr_word);