バージョン表示機能を追加
authorj8takagi <j8takagi@nifty.com>
Wed, 31 Oct 2012 16:13:40 +0000 (01:13 +0900)
committerj8takagi <j8takagi@nifty.com>
Wed, 31 Oct 2012 16:16:29 +0000 (01:16 +0900)
23 files changed:
Makefile
README
VERSION [new file with mode: 0644]
include/package.h.version [new file with mode: 0644]
src/Makefile
src/casl2.c
src/comet2.c
src/dumpword.c
test/system/casl2/opt_h/0.txt
test/system/casl2/opt_h/cmd
test/system/casl2/opt_v/0.txt.version [new file with mode: 0644]
test/system/casl2/opt_v/Makefile [new file with mode: 0644]
test/system/casl2/opt_v/cmd [new file with mode: 0755]
test/system/comet2/opt_h/cmd
test/system/comet2/opt_v/0.txt.version [new file with mode: 0644]
test/system/comet2/opt_v/Makefile [new file with mode: 0644]
test/system/comet2/opt_v/cmd [new file with mode: 0755]
test/system/dumpword/opt_h/0.txt [new file with mode: 0644]
test/system/dumpword/opt_h/Makefile [new file with mode: 0644]
test/system/dumpword/opt_h/cmd [new file with mode: 0755]
test/system/dumpword/opt_v/0.txt.version [new file with mode: 0644]
test/system/dumpword/opt_v/Makefile [new file with mode: 0644]
test/system/dumpword/opt_v/cmd [new file with mode: 0755]

index b2f9ba1..6e145d7 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,18 +1,21 @@
-.PHONY: all build gtags check doc info html doc-inner install uninstall install-info uninstall-info install-casl2lib uninstall-casl2lib clean clean-src clean-gtags clean-test clean-doc clean-doc-inner
+.PHONY: all build gtags check doc info html doc-inner install uninstall install-info uninstall-info install-casl2lib uninstall-casl2lib version clean clean-src clean-gtags clean-test clean-doc clean-doc-inner
 
 GTAGS ?= gtags
 RMF ?= rm -f
 WHICH ?= which
 ECHO ?= echo
 INSTALL ?= install
 
 GTAGS ?= gtags
 RMF ?= rm -f
 WHICH ?= which
 ECHO ?= echo
 INSTALL ?= install
+SED ?= sed
 
 prefix ?= ~
 bindir ?= $(prefix)/bin
 casl2libdir ?= $(prefix)/yacasl2/casl2lib
 
 
 prefix ?= ~
 bindir ?= $(prefix)/bin
 casl2libdir ?= $(prefix)/yacasl2/casl2lib
 
+VERSIONFILES = include/package.h test/system/casl2/opt_v/0.txt test/system/comet2/opt_v/0.txt test/system/dumpword/opt_v/0.txt
+
 all: build info html gtags
 
 all: build info html gtags
 
-build:
+build: version
        $(MAKE) -C src all
 
 gtags:
        $(MAKE) -C src all
 
 gtags:
@@ -52,7 +55,12 @@ install-casl2lib:
 uninstall-casl2lib:
        @$(MAKE) -C as/casl2lib uninstall-casl2lib
 
 uninstall-casl2lib:
        @$(MAKE) -C as/casl2lib uninstall-casl2lib
 
-clean: clean-src clean-gtags clean-doc clean-doc-inner
+version: $(VERSIONFILES)
+
+$(VERSIONFILES):
+       for f in $(VERSIONFILES); do $(SED) -e "s/@@VERSION@@/`cat VERSION`/g" $$f.version >$$f; done
+
+clean: clean-src clean-gtags clean-doc clean-doc-inner clean-version
 
 clean-src:
        @$(MAKE) -sC src clean
 
 clean-src:
        @$(MAKE) -sC src clean
@@ -68,3 +76,6 @@ clean-doc-inner:
 
 clean-test:
        @$(MAKE) -sC test clean
 
 clean-test:
        @$(MAKE) -sC test clean
+
+clean-version:
+       @$(RMF) $(VERSIONFILES)
diff --git a/README b/README
index befaa42..661d2c6 100644 (file)
--- a/README
+++ b/README
@@ -1,22 +1,36 @@
 このファイルは、YACASL2のREADMEファイルです。
 
 このファイルは、YACASL2のREADMEファイルです。
 
-■YACASL2の概要
-YACASL2は、Linux上で動作するオープンソースのCASL II処理システムです。
+YACASL2の概要
+******************
+
+YACASL2は、UNIX/Linuxのコマンドラインインターフェイスで動作する
+オープンソースのCASL II処理システムです。
 CASL IIは、情報処理試験で用いられるアセンブラ言語で、次の資料で仕様が定義されています。
 
 CASL IIは、情報処理試験で用いられるアセンブラ言語で、次の資料で仕様が定義されています。
 
-  試験で使用する情報処理用語・プログラム言語など(2008年10月版
-  http://www.jitec.ipa.go.jp/1_00topic/topic_20081027_hani_yougo.pdf (PDFファイル)
+  試験で使用する情報処理用語・プログラム言語など Ver 2.2(平成24年5月22日
+  http://www.jitec.jp/1_13download/shiken_yougo_ver2_2.pdf (PDFファイル)
       別紙 1 アセンブラ言語の仕様
 
       別紙 1 アセンブラ言語の仕様
 
-■ドキュメント
-YACASL2のインストール方法、使い方などはファイルdoc/index.htmlを参照してください。
 
 
-■Webサイト
-次のURLを参照してください。
-http://www.j8takagi.net/yacasl2/
+同梱ドキュメント
+******************
+
+YACASL2のインストール方法は、INSTALLを参照してください。
+YACASL2の使い方は、doc/index.htmlを参照してください。
+
+
+Webサイト
+******************
+
+YACASL2のWebサイトは、次のURLです。
+
+  http://www.j8takagi.net/yacasl2/
+
+
+ライセンス
+******************
 
 
-■ライセンス
-Copyright 2010-2011, j8takagi.
+Copyright 2010-2012, j8takagi.
 YACASL2 is licensed under the MIT license.
 
 YACASL2 is licensed under the MIT license.
 
-ライセンスの詳細は、ファイルLICENSEを参照してください。
+ライセンスの詳細は、同梱のLICENSEを参照してください。
diff --git a/VERSION b/VERSION
new file mode 100644 (file)
index 0000000..e6ea989
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+0.2p0
diff --git a/include/package.h.version b/include/package.h.version
new file mode 100644 (file)
index 0000000..14d755a
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef YACASL2_PACKAGE_H_INCLUDED
+#define YACASL2_PACKAGE_H_INCLUDED
+
+#define PACKAGE_VERSION "@@VERSION@@"
+
+#endif
index ab66853..afb82a6 100644 (file)
@@ -4,6 +4,7 @@ RMF ?= rm -f
 WHICH ?= which
 CTAGS ?= ctags
 ETAGS ?= etags
 WHICH ?= which
 CTAGS ?= ctags
 ETAGS ?= etags
+SED ?= sed
 
 INCLUDE := ../include
 
 
 INCLUDE := ../include
 
@@ -32,15 +33,15 @@ all: ../casl2 ../comet2 ../dumpword ctags etags
        $(CC) -c $(CFLAGS) $<
 
 %.d: %.c
        $(CC) -c $(CFLAGS) $<
 
 %.d: %.c
-       @$(CC) -MM -I $(INCLUDE) $< | sed 's/\($*\.o\):/\1 $@:/g' >$@
+       @$(CC) -MM -I $(INCLUDE) $< | $(SED) 's/\($*\.o\):/\1 $@:/g' >$@
 
 -include $(subst .c,.d,casl2.c comet2.c dumpword.c $(COMMONSRC) $(CASL2SRC) $(ASSRC) $(EXECSRC))
 
 ctags: $(INCLUDE)/*.h *.c
 
 -include $(subst .c,.d,casl2.c comet2.c dumpword.c $(COMMONSRC) $(CASL2SRC) $(ASSRC) $(EXECSRC))
 
 ctags: $(INCLUDE)/*.h *.c
-       @($(WHICH) $(CTAGS) && $(CTAGS) $^) >/dev/null
+       @$(WHICH) $(CTAGS) >/dev/null && $(CTAGS) $^
 
 etags: $(INCLUDE)/*.h *.c
 
 etags: $(INCLUDE)/*.h *.c
-       @($(WHICH) $(ETAGS) && $(ETAGS) $^) >/dev/null
+       @$(WHICH) $(ETAGS) >/dev/null && $(ETAGS) $^
 
 clean: clean_cmd clean_build clean_tags
 
 
 clean: clean_cmd clean_build clean_tags
 
index 79d3e02..204d307 100644 (file)
@@ -8,6 +8,7 @@
 #include "cerr.h"
 #include "assemble.h"
 #include "exec.h"
 #include "cerr.h"
 #include "assemble.h"
 #include "exec.h"
+#include "package.h"
 
 /**
  * casl2コマンドのオプション
 
 /**
  * casl2コマンドのオプション
@@ -26,6 +27,7 @@ static struct option longopts[] = {
     { "dump", no_argument, NULL, 'd' },
     { "memorysize", required_argument, NULL, 'M' },
     { "clocks", required_argument, NULL, 'C' },
     { "dump", no_argument, NULL, 'd' },
     { "memorysize", required_argument, NULL, 'M' },
     { "clocks", required_argument, NULL, 'C' },
+    { "version", no_argument, NULL, 'v' },
     { "help", no_argument, NULL, 'h' },
     { 0, 0, 0, 0 },
 };
     { "help", no_argument, NULL, 'h' },
     { 0, 0, 0, 0 },
 };
@@ -107,17 +109,17 @@ asfin:
 int main(int argc, char *argv[])
 {
     int memsize = DEFAULT_MEMSIZE, clocks = DEFAULT_CLOCKS, opt, i, stat;
 int main(int argc, char *argv[])
 {
     int memsize = DEFAULT_MEMSIZE, clocks = DEFAULT_CLOCKS, opt, i, stat;
-    char *af[argc];
-    char *objfile = NULL;
+    char *af[argc], *objfile = NULL;
+    const char *version = PACKAGE_VERSION,  *cmdversion = "casl2 of YACASL2 version %s\n";
     const char *usage =
     const char *usage =
-        "Usage: %s [-slLaAtTdh] [-oO[<OBJECTFILE>]] [-M <MEMORYSIZE>] [-C <CLOCKS>] FILE1[ FILE2  ...]\n";
+        "Usage: %s [-slLaAtTdvh] [-oO[<OBJECTFILE>]] [-M <MEMORYSIZE>] [-C <CLOCKS>] FILE1[ FILE2  ...]\n";
 
     cerr_init();
     addcerrlist_casl2();
     addcerrlist_assemble();
     addcerrlist_exec();
     /* オプションの処理 */
 
     cerr_init();
     addcerrlist_casl2();
     addcerrlist_assemble();
     addcerrlist_exec();
     /* オプションの処理 */
-    while((opt = getopt_long(argc, argv, "tTdslLao::O::AM:C:h", longopts, NULL)) != -1) {
+    while((opt = getopt_long(argc, argv, "tTdslLao::O::AM:C:vh", longopts, NULL)) != -1) {
         switch(opt) {
         case 's':
             asmode.src = true;
         switch(opt) {
         case 's':
             asmode.src = true;
@@ -159,6 +161,9 @@ int main(int argc, char *argv[])
         case 'C':
             clocks = atoi(optarg);
             break;
         case 'C':
             clocks = atoi(optarg);
             break;
+        case 'v':
+            fprintf(stdout, cmdversion, version);
+            return 0;
         case 'h':
             fprintf(stdout, usage, argv[0]);
             return 0;
         case 'h':
             fprintf(stdout, usage, argv[0]);
             return 0;
index 1bdc3e9..36060d3 100644 (file)
@@ -6,6 +6,7 @@
 #include "exec.h"
 #include "cmem.h"
 #include "cerr.h"
 #include "exec.h"
 #include "cmem.h"
 #include "cerr.h"
+#include "package.h"
 
 /**
  * comet2コマンドのオプション
 
 /**
  * comet2コマンドのオプション
@@ -17,6 +18,7 @@ static struct option longopts[] = {
     {"dump", no_argument, NULL, 'd'},
     {"memorysize", required_argument, NULL, 'M'},
     {"clocks", required_argument, NULL, 'C'},
     {"dump", no_argument, NULL, 'd'},
     {"memorysize", required_argument, NULL, 'M'},
     {"clocks", required_argument, NULL, 'C'},
+    { "version", no_argument, NULL, 'v' },
     {"help", no_argument, NULL, 'h'},
     {0, 0, 0, 0},
 };
     {"help", no_argument, NULL, 'h'},
     {0, 0, 0, 0},
 };
@@ -28,14 +30,15 @@ int main(int argc, char *argv[])
 {
     int memsize = DEFAULT_MEMSIZE, clocks = DEFAULT_CLOCKS;
     int opt, stat = 0;
 {
     int memsize = DEFAULT_MEMSIZE, clocks = DEFAULT_CLOCKS;
     int opt, stat = 0;
-    const char *usage = "Usage: %s [-tTdh] [-M <MEMORYSIZE>] [-C <CLOCKS>] FILE\n";
+    const char *version = PACKAGE_VERSION,  *cmdversion = "comet2 of YACASL2 version %s\n";
+    const char *usage = "Usage: %s [-tTdvh] [-M <MEMORYSIZE>] [-C <CLOCKS>] FILE\n";
 
     cerr_init();
     addcerrlist_load();
     addcerrlist_exec();
 
     /* オプションの処理 */
 
     cerr_init();
     addcerrlist_load();
     addcerrlist_exec();
 
     /* オプションの処理 */
-    while((opt = getopt_long(argc, argv, "tTdM:C:h", longopts, NULL)) != -1) {
+    while((opt = getopt_long(argc, argv, "tTdM:C:vh", longopts, NULL)) != -1) {
         switch(opt) {
         case 't':
             execmode.trace = true;
         switch(opt) {
         case 't':
             execmode.trace = true;
@@ -53,6 +56,9 @@ int main(int argc, char *argv[])
         case 'C':
             clocks = atoi(optarg);
             break;
         case 'C':
             clocks = atoi(optarg);
             break;
+        case 'v':
+            fprintf(stdout, cmdversion, version);
+            return 0;
         case 'h':
             fprintf(stdout, usage, argv[0]);
             return 0;
         case 'h':
             fprintf(stdout, usage, argv[0]);
             return 0;
index dea7d9b..d39dfaf 100644 (file)
@@ -4,6 +4,7 @@
 #include <getopt.h>
 #include "word.h"
 #include "cerr.h"
 #include <getopt.h>
 #include "word.h"
 #include "cerr.h"
+#include "package.h"
 
 /**
  * dumpwordコマンドのオプション
 
 /**
  * dumpwordコマンドのオプション
@@ -11,6 +12,7 @@
 static struct option longopts[] = {
     { "arithmetic", no_argument, NULL, 'a' },
     { "logical", no_argument, NULL, 'l' },
 static struct option longopts[] = {
     { "arithmetic", no_argument, NULL, 'a' },
     { "logical", no_argument, NULL, 'l' },
+    { "version", no_argument, NULL, 'v' },
     { "help", no_argument, NULL, 'h' },
     { 0, 0, 0, 0 },
 };
     { "help", no_argument, NULL, 'h' },
     { 0, 0, 0, 0 },
 };
@@ -23,15 +25,19 @@ int main(int argc, char *argv[])
     bool logicalmode = false;    /* レジストリの内容を論理値(0から65535)で表示する場合はtrue */
     int opt;
     WORD word;
     bool logicalmode = false;    /* レジストリの内容を論理値(0から65535)で表示する場合はtrue */
     int opt;
     WORD word;
+    const char *version = PACKAGE_VERSION,  *cmdversion = "dumpword of YACASL2 version %s\n";
     const char *usage = "Usage: %s [-alh] WORD\n";
 
     cerr_init();
     addcerrlist_word();
     const char *usage = "Usage: %s [-alh] WORD\n";
 
     cerr_init();
     addcerrlist_word();
-    while((opt = getopt_long(argc, argv, "alh", longopts, NULL)) != -1) {
+    while((opt = getopt_long(argc, argv, "alvh", longopts, NULL)) != -1) {
         switch(opt) {
         case 'l':
             logicalmode = true;
             break;
         switch(opt) {
         case 'l':
             logicalmode = true;
             break;
+        case 'v':
+            fprintf(stdout, cmdversion, version);
+            return 0;
         case 'h':
             fprintf(stdout, usage, argv[0]);
             return 0;
         case 'h':
             fprintf(stdout, usage, argv[0]);
             return 0;
index de9f598..335b97e 100644 (file)
@@ -1,18 +1 @@
-;;; sum_10.casl
-;;; 出力 GR0: 1から10までの整数をすべて加算した値
-MAIN    START
-        PUSH    0,GR1
-        LAD     GR0,0           ; GR0を初期化
-        LD      GR1,FST         ; GR1に初項を転送
-LOOP    ADDL    GR0,GR1         ; ループ先頭
-        ADDL    GR1,STEP        ; GR1 <- GR1 + 公差
-        CPL     GR1,LST         ; GR1が末項より大きい場合は終了
-        JPL     FIN             ; ↓
-        JUMP    LOOP            ; ループ終端
-FIN     POP     GR1
-        RET
-FST     DC      1               ; 初項
-LST     DC      10              ; 末項
-STEP    DC      1               ; 公差
-        END
 Usage: ../../../../casl2 [-slLaAtTdh] [-oO[<OBJECTFILE>]] [-M <MEMORYSIZE>] [-C <CLOCKS>] FILE1[ FILE2  ...]
 Usage: ../../../../casl2 [-slLaAtTdh] [-oO[<OBJECTFILE>]] [-M <MEMORYSIZE>] [-C <CLOCKS>] FILE1[ FILE2  ...]
index 579896a..ecdb7de 100755 (executable)
@@ -1,2 +1 @@
-cat ../../../../as/sum_10.casl
-../../../../casl2 -saltdh ../../../../as/sum_10.casl
+../../../../casl2 -h
diff --git a/test/system/casl2/opt_v/0.txt.version b/test/system/casl2/opt_v/0.txt.version
new file mode 100644 (file)
index 0000000..fe7c385
--- /dev/null
@@ -0,0 +1 @@
+casl2 of YACASL2 version @@VERSION@@
diff --git a/test/system/casl2/opt_v/Makefile b/test/system/casl2/opt_v/Makefile
new file mode 100644 (file)
index 0000000..b6dac59
--- /dev/null
@@ -0,0 +1,2 @@
+include ../Define.mk
+include ../Test.mk
diff --git a/test/system/casl2/opt_v/cmd b/test/system/casl2/opt_v/cmd
new file mode 100755 (executable)
index 0000000..3788ac9
--- /dev/null
@@ -0,0 +1 @@
+../../../../casl2 -v
index 88ce894..cc7599c 100755 (executable)
@@ -1,3 +1 @@
-../../../../casl2 -O ../../../../as/sum_10.casl
-../../../../comet2 -tdh a.o
-rm -f a.o
+../../../../comet2 -h
diff --git a/test/system/comet2/opt_v/0.txt.version b/test/system/comet2/opt_v/0.txt.version
new file mode 100644 (file)
index 0000000..8604bf2
--- /dev/null
@@ -0,0 +1 @@
+comet2 of YACASL2 version @@VERSION@@
diff --git a/test/system/comet2/opt_v/Makefile b/test/system/comet2/opt_v/Makefile
new file mode 100644 (file)
index 0000000..b6dac59
--- /dev/null
@@ -0,0 +1,2 @@
+include ../Define.mk
+include ../Test.mk
diff --git a/test/system/comet2/opt_v/cmd b/test/system/comet2/opt_v/cmd
new file mode 100755 (executable)
index 0000000..d0bd98d
--- /dev/null
@@ -0,0 +1 @@
+../../../../comet2 -v
diff --git a/test/system/dumpword/opt_h/0.txt b/test/system/dumpword/opt_h/0.txt
new file mode 100644 (file)
index 0000000..49695b2
--- /dev/null
@@ -0,0 +1 @@
+Usage: ../../../../dumpword [-alh] WORD
diff --git a/test/system/dumpword/opt_h/Makefile b/test/system/dumpword/opt_h/Makefile
new file mode 100644 (file)
index 0000000..b6dac59
--- /dev/null
@@ -0,0 +1,2 @@
+include ../Define.mk
+include ../Test.mk
diff --git a/test/system/dumpword/opt_h/cmd b/test/system/dumpword/opt_h/cmd
new file mode 100755 (executable)
index 0000000..aed55ae
--- /dev/null
@@ -0,0 +1 @@
+../../../../dumpword -h
diff --git a/test/system/dumpword/opt_v/0.txt.version b/test/system/dumpword/opt_v/0.txt.version
new file mode 100644 (file)
index 0000000..332219d
--- /dev/null
@@ -0,0 +1 @@
+dumpword of YACASL2 version @@VERSION@@
diff --git a/test/system/dumpword/opt_v/Makefile b/test/system/dumpword/opt_v/Makefile
new file mode 100644 (file)
index 0000000..b6dac59
--- /dev/null
@@ -0,0 +1,2 @@
+include ../Define.mk
+include ../Test.mk
diff --git a/test/system/dumpword/opt_v/cmd b/test/system/dumpword/opt_v/cmd
new file mode 100755 (executable)
index 0000000..402efec
--- /dev/null
@@ -0,0 +1 @@
+../../../../dumpword -v