--- /dev/null
+#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
*/
typedef unsigned short WORD;
-/**
- * @brief アセンブル結果読み込みエラーをエラーリストに追加する
- */
-void addcerrlist_load();
-
/**
* @brief wordデータ型についてのエラーをエラーリストに追加する
*
#include "package.h"
#include "disassemble.h"
+#include "load.h"
/**
* @brief casl2revコマンドのオプション
#include "package.h"
#include "exec.h"
+#include "load.h"
/**
* comet2コマンドのオプション
#include "package.h"
#include "exec.h"
+#include "load.h"
/**
* comet2monitorコマンドのオプション
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値に変換 */
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;
--- /dev/null
+#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;
+}
{ 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);