Merge branch 'master' into cmd-casl
authorj8takagi <j8takagi@nifty.com>
Sat, 13 Feb 2010 03:32:21 +0000 (12:32 +0900)
committerj8takagi <j8takagi@nifty.com>
Sat, 13 Feb 2010 03:32:21 +0000 (12:32 +0900)
include/casl2.h
src/assemble.c
src/cmd.c
src/comet2.c

index 42ed92d..7cd937c 100644 (file)
@@ -98,9 +98,6 @@ bool create_cmdtype_code();
 /* 無効な場合は0xFFFFを返す */
 WORD getcmdcode(const char *cmd, CMDTYPE type);
 
-/* 命令と命令タイプからハッシュ値を生成する */
-unsigned hash_cmdtype(const char *cmd, CMDTYPE type);
-
 /* 命令と命令タイプがキーのハッシュ表を表示する */
 void print_cmdtype_code();
 
@@ -110,9 +107,6 @@ void free_cmdtype_code();
 /* 命令コードがキーのハッシュ表を作成する */
 bool create_code_type();
 
-/* 命令コードからハッシュ値を生成する */
-unsigned hash_code(WORD code);
-
 /* 命令コードから命令タイプを取得する */
 /* 無効な場合はNONEを返す */
 CMDTYPE getcmdtype(WORD code);
index 36edd2b..7966ea9 100644 (file)
@@ -143,7 +143,7 @@ bool assemblecmd(const CMDLINE *cmdl, PASS pass)
     CMDARRAY ascmd[] = {
         { START, 0, 1, "START" },
         { END, 0, 0, "END" },
-        { DC, 0, OPDSIZE, "DC" },
+        { DC, 1, OPDSIZE, "DC" },
         { DS, 1, 1, "DS" },
         { 0, 0, 0, NULL }
     };
index 83e80af..aba0edd 100644 (file)
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -44,6 +44,22 @@ CMDCODEARRAY cmdcodearray[] = {
 int cmdcodesize = ARRAYSIZE(cmdcodearray);
 CMDCODETAB *cmdtype_code[ARRAYSIZE(cmdcodearray)], *code_type[ARRAYSIZE(cmdcodearray)];
 
+/* 命令と命令タイプからハッシュ値を生成する */
+unsigned hash_cmdtype(const char *cmd, CMDTYPE type) {
+    HKEY *keys[2];
+
+    /* 命令をセット */
+    keys[0] = malloc(sizeof(HKEY));
+    keys[0]->type = CHARS;
+    keys[0]->val.s = strdup(cmd);
+    /* 命令タイプをセット */
+    keys[1] = malloc(sizeof(HKEY));
+    keys[1]->type = INT;
+    keys[1]->val.i = (int)(type & 070);
+    /* ハッシュ値を返す */
+    return hash(2, keys, cmdcodesize);
+}
+
 /* 命令と命令タイプがキーのハッシュ表を作成する */
 bool create_cmdtype_code()
 {
@@ -67,22 +83,6 @@ bool create_cmdtype_code()
     return true;
 }
 
-/* 命令と命令タイプからハッシュ値を生成する */
-unsigned hash_cmdtype(const char *cmd, CMDTYPE type) {
-    HKEY *keys[2];
-
-    /* 命令をセット */
-    keys[0] = malloc(sizeof(HKEY));
-    keys[0]->type = CHARS;
-    keys[0]->val.s = strdup(cmd);
-    /* 命令タイプをセット */
-    keys[1] = malloc(sizeof(HKEY));
-    keys[1]->type = INT;
-    keys[1]->val.i = (int)(type & 070);
-    /* ハッシュ値を返す */
-    return hash(2, keys, cmdcodesize);
-}
-
 /* 命令と命令タイプから、命令コードを取得する */
 /* 無効な場合は0xFFFFを返す */
 WORD getcmdcode(const char *cmd, CMDTYPE type)
@@ -127,6 +127,19 @@ void free_cmdtype_code()
     }
 }
 
+/* 命令コードからハッシュ値を生成する */
+unsigned hash_code(WORD code)
+{
+    HKEY *keys[1];
+
+    /* 命令コードをセット */
+    keys[0] = malloc(sizeof(HKEY));
+    keys[0]->type = INT;
+    keys[0]->val.i = (int)(code >> 8);
+    /* ハッシュ値を返す */
+    return hash(1, keys, cmdcodesize);
+}
+
 /* 命令コードがキーのハッシュ表を作成する */
 bool create_code_type()
 {
@@ -149,19 +162,6 @@ bool create_code_type()
     return true;
 }
 
-/* 命令コードからハッシュ値を生成する */
-unsigned hash_code(WORD code)
-{
-    HKEY *keys[1];
-
-    /* 命令コードをセット */
-    keys[0] = malloc(sizeof(HKEY));
-    keys[0]->type = INT;
-    keys[0]->val.i = (int)(code >> 8);
-    /* ハッシュ値を返す */
-    return hash(1, keys, cmdcodesize);
-}
-
 /* 命令コードから命令タイプを取得する */
 /* 無効な場合はNONEを返す */
 CMDTYPE getcmdtype(WORD code)
index 1adf426..c612995 100644 (file)
@@ -37,7 +37,7 @@ bool loadassemble(char *file) {
         perror(file);
         return false;
     }
-    fread(memory, sizeof(WORD), memsize, fp);
+    endptr = startptr + fread(memory, sizeof(WORD), memsize, fp);
     fclose(fp);
     return true;
 }
@@ -75,6 +75,7 @@ int main(int argc, char *argv[])
         }
     }
     reset();
+    startptr = 0;
     if(loadassemble(argv[optind]) == true) {
         exec();    /* プログラム実行 */
     }