-.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
+SED ?= sed
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
-build:
+build: version
$(MAKE) -C src all
gtags:
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-test:
@$(MAKE) -sC test clean
+
+clean-version:
+ @$(RMF) $(VERSIONFILES)
このファイルは、YACASL2のREADMEファイルです。
-■YACASL2の概要
-YACASL2は、Linux上で動作するオープンソースのCASL II処理システムです。
+YACASL2の概要
+******************
+
+YACASL2は、UNIX/Linuxのコマンドラインインターフェイスで動作する
+オープンソースの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 アセンブラ言語の仕様
-■ドキュメント
-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.
-ライセンスの詳細は、ファイルLICENSEを参照してください。
+ライセンスの詳細は、同梱のLICENSEを参照してください。
--- /dev/null
+#ifndef YACASL2_PACKAGE_H_INCLUDED
+#define YACASL2_PACKAGE_H_INCLUDED
+
+#define PACKAGE_VERSION "@@VERSION@@"
+
+#endif
WHICH ?= which
CTAGS ?= ctags
ETAGS ?= etags
+SED ?= sed
INCLUDE := ../include
$(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
- @($(WHICH) $(CTAGS) && $(CTAGS) $^) >/dev/null
+ @$(WHICH) $(CTAGS) >/dev/null && $(CTAGS) $^
etags: $(INCLUDE)/*.h *.c
- @($(WHICH) $(ETAGS) && $(ETAGS) $^) >/dev/null
+ @$(WHICH) $(ETAGS) >/dev/null && $(ETAGS) $^
clean: clean_cmd clean_build clean_tags
#include "cerr.h"
#include "assemble.h"
#include "exec.h"
+#include "package.h"
/**
* casl2コマンドのオプション
{ "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 },
};
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 =
- "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();
/* オプションの処理 */
- 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;
case 'C':
clocks = atoi(optarg);
break;
+ case 'v':
+ fprintf(stdout, cmdversion, version);
+ return 0;
case 'h':
fprintf(stdout, usage, argv[0]);
return 0;
#include "exec.h"
#include "cmem.h"
#include "cerr.h"
+#include "package.h"
/**
* comet2コマンドのオプション
{"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},
};
{
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();
/* オプションの処理 */
- 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;
case 'C':
clocks = atoi(optarg);
break;
+ case 'v':
+ fprintf(stdout, cmdversion, version);
+ return 0;
case 'h':
fprintf(stdout, usage, argv[0]);
return 0;
#include <getopt.h>
#include "word.h"
#include "cerr.h"
+#include "package.h"
/**
* dumpwordコマンドのオプション
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 },
};
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();
- 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;
+ case 'v':
+ fprintf(stdout, cmdversion, version);
+ return 0;
case 'h':
fprintf(stdout, usage, argv[0]);
return 0;
-;;; 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 ...]
-cat ../../../../as/sum_10.casl
-../../../../casl2 -saltdh ../../../../as/sum_10.casl
+../../../../casl2 -h
--- /dev/null
+casl2 of YACASL2 version @@VERSION@@
--- /dev/null
+include ../Define.mk
+include ../Test.mk
--- /dev/null
+../../../../casl2 -v
-../../../../casl2 -O ../../../../as/sum_10.casl
-../../../../comet2 -tdh a.o
-rm -f a.o
+../../../../comet2 -h
--- /dev/null
+comet2 of YACASL2 version @@VERSION@@
--- /dev/null
+include ../Define.mk
+include ../Test.mk
--- /dev/null
+../../../../comet2 -v
--- /dev/null
+Usage: ../../../../dumpword [-alh] WORD
--- /dev/null
+include ../Define.mk
+include ../Test.mk
--- /dev/null
+../../../../dumpword -h
--- /dev/null
+dumpword of YACASL2 version @@VERSION@@
--- /dev/null
+include ../Define.mk
+include ../Test.mk
--- /dev/null
+../../../../dumpword -v