関数a2wordの名前をnh2wordに変更
authorj8takagi <j8takagi@nifty.com>
Mon, 1 Feb 2010 23:51:53 +0000 (08:51 +0900)
committerj8takagi <j8takagi@nifty.com>
Mon, 1 Feb 2010 23:51:53 +0000 (08:51 +0900)
include/word.h
src/assemble.c
src/dumpword.c
src/word.c

index 30e89a7..24dea80 100644 (file)
@@ -17,7 +17,7 @@ WORD n2word(const char *str);
 WORD h2word(const char *str);
 
 /* 10進数または16進数の文字列をWORD値に変換 */
-WORD a2word(const char *str);
+WORD nh2word(const char *str);
 
 /* WORD値を10進数の文字列に変換 */
 char *word2n(WORD word);
index 963db49..3297041 100644 (file)
@@ -39,7 +39,7 @@ WORD getadr(const char *prog, const char *str, PASS pass)
     if(*str == '=') {
         adr = getliteral(str, pass);
     } else if((*str == '#') || isdigit(*str) || *str == '-') {
-        adr = a2word(str);
+        adr = nh2word(str);
     } else {
         if(pass == SECOND && (adr = getlabel(prog, str)) == 0xFFFF) {
             if(prog != NULL) {
@@ -79,7 +79,7 @@ WORD getliteral(const char *str, PASS pass)
     if(*str == '\'') {    /* 文字定数 */
         writestr(str, true, pass);
     } else {
-        writememory(a2word(str), lptr++, pass);
+        writememory(nh2word(str), lptr++, pass);
     }
     return adr;
 }
@@ -88,8 +88,7 @@ WORD getliteral(const char *str, PASS pass)
 /* DC命令とリテラルで使い、リテラルの場合はリテラル領域に書込 */
 void writestr(const char *str, bool literal, PASS pass)
 {
-    assert(cerrno == 0);
-    assert(*str == '\'');
+    assert(cerrno == 0 && *str == '\'');
     str++;
     while(*str != '\0') {
         if(*str == '\'') {
@@ -115,7 +114,7 @@ void writeDC(const char *str, PASS pass)
         writestr(str, false, pass);
     } else {
         if(*str == '#' || isdigit(*str) || *str == '-') {
-            adr = a2word(str);
+            adr = nh2word(str);
         } else {
             if(pass == SECOND && (adr = getlabel(prog, str)) == 0xFFFF) {
                 setcerr(103, str);    /* label not found */
@@ -335,10 +334,11 @@ bool cometcmd(const CMDLINE *cmdl, PASS pass)
             }
             cmd |= x;
         }
-        /* CALLの場合はプログラムの入口名を表すラベル、
-           それ以外の場合は同一プログラム内のラベルを取得 */
-        if(cmd == 0x8000) {        /* CALL命令 */
-            adr = getadr(NULL, cmdl->opd->opdv[0], pass);
+        /* CALLの場合はプログラムの入口名を表すラベルを取得 */
+        /* CALL以外の命令の場合と、プログラムの入口名を取得できない場合は、 */
+        /* 同一プログラム内のラベルを取得 */
+        if(pass == SECOND && cmd == 0x8000) {        /* CALL命令 */
+            adr = getlabel(NULL, cmdl->opd->opdv[0]);
         }
         if(cmd != 0x8000 || (pass == SECOND && adr == 0xFFFF)) {
             adr = getadr(prog, cmdl->opd->opdv[0], pass);
index f907eac..e78b108 100644 (file)
@@ -35,7 +35,7 @@ int main(int argc, char *argv[])
         exit(-1);
     }
     /* WORD値に変換 */
-    word = a2word(argv[optind]);
+    word = nh2word(argv[optind]);
     if(cerrno > 0) {
         fprintf(stderr, "Dumpword Error - %d: %s\n", cerrno, cerrmsg);
         exit(-1);
index e4b9af8..83ae9bd 100644 (file)
@@ -40,7 +40,7 @@ WORD h2word(const char *str)
 }
 
 /* 10進数または16進数の文字列をWORD値に変換 */
-WORD a2word(const char *str)
+WORD nh2word(const char *str)
 {
     WORD word;
     if(!isdigit(*str) && *str != '-' && *str != '#') {