ドキュメントの整理
[YACASL2.git] / doc / yacasl2.info
diff --git a/doc/yacasl2.info b/doc/yacasl2.info
new file mode 100644 (file)
index 0000000..264952b
--- /dev/null
@@ -0,0 +1,1182 @@
+This is yacasl2.info, produced by makeinfo version 4.13 from
+manual.texi.
+
+Copyright (C) 2010-2012 j8takagi
+
+INFO-DIR-SECTION Programming
+START-INFO-DIR-ENTRY
+* YACASL2: (yacasl2).                     CASL II 処理システム
+* casl2: (yacasl2)casl2 invocation.       casl2の呼び出し
+* comet2: (yacasl2)comet2 invocation.     comet2の呼び出し
+* dumpword: (yacasl2)dumpword invocation. dumpwordの呼び出し
+END-INFO-DIR-ENTRY
+
+\1f
+File: yacasl2.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
+
+* Menu:
+
+* Overview::                    YACASL2の概要
+* Sample usage::               YACASL2の使用例
+* casl2 invocation::            casl2の呼び出し
+* comet2 invocation::           comet2の呼び出し
+* dumpword invocation::         dumpwordの呼び出し
+* CASL2LIB Manual::             CASL2LIBマニュアル
+
+\1f
+File: yacasl2.info,  Node: Overview,  Next: Sample usage,  Prev: Top,  Up: Top
+
+1 YACASL2の概要
+******************
+
+ YACASL2は、UNIXやLinuxのコマンドラインインターフェイスで
+動作するオープンソースのCASL II処理システムです。 CASL
+IIは情報処理試験で用いられるアセンブラ言語で、
+次の資料により仕様が公開されています。
+
+     試験で使用する情報処理用語・プログラム言語など Ver
+     2.2(平成24年5月22日)
+     (http://www.jitec.jp/1_13download/shiken_yougo_ver2_2.pdf)[PDFファイル]
+     別紙 1 アセンブラ言語の仕様
+
+ YACASL2は、CASL IIアセンブラ言語で記述されたファイルをアセンブルし、
+仮想マシンCOMET II上で実行します。
+アセンブルと実行は、連続で行うこともできますし、
+アセンブル結果をファイルに保存してあらから実行することもできます。
+YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試験の問題を
+はじめ各種参考書やサイトに記載されたCASL IIのプログラムを
+そのままアセンブルして実行できます。 また、本パッケージ中にCASL
+IIのサンプルプログラムが多数収録されています。
+
+ YACASL2は、「ふつうの処理系」として動作します。 ほかの多くのCASL
+IIエミュレータと違い、デバッガとして動作したり、
+コンピュータ内部の模式図を表示したりすることはありません。
+そのかわり、YACASL2は、次のような動作内容をすべてテキストで出力します。
+
+   * ラベルとアドレスの対応
+
+   * アセンブル結果
+
+   * 実行時のレジスタの内容
+
+   * 実行時のメモリの内容
+
+ 出力された動作内容は、GNU/Linuxのさまざまなツール、 たとえば、`cat'
+`less' `grep' `wc'などを使って解析できます。
+
+ YACASL2の操作は、端末上のコマンドラインインターフェイスで行います。
+
+\1f
+File: yacasl2.info,  Node: Sample usage,  Next: casl2 invocation,  Prev: Overview,  Up: Top
+
+2 YACASL2の使用例
+*********************
+
+ YACASL2 は、テキストファイルに記述されたCASLプログラムを処理します。
+以下の例で用いられるCASLプログラムのファイルは、
+テキストエディタなどで作成するか、インストールしたディレクトリの
+中にある`as'ディレクトリからコピーしてください。
+
+* Menu:
+
+* Simple output::               実行結果の出力だけを表示
+* Assemble result::             アセンブル結果の確認
+* Register and memory::         実行時のレジスタとメモリを表示
+* Only assemble::               アセンブルと実行を別に行う
+* Analyze word::                1語の解析
+* Use CASL2LIB::                CASL2ライブラリの使用
+
+\1f
+File: yacasl2.info,  Node: Simple output,  Next: Assemble result,  Prev: Sample usage,  Up: Sample usage
+
+2.1 実行結果の出力だけを表示
+========================================
+
+ インストール時にコマンド実行の確認に使った`hello.casl'は、次のような内容です。
+CASL IIのマクロ命令OUTは、文字列を出力します。
+
+     $ cat hello.casl
+     MAIN     START
+              OUT     OBUF,LEN
+              RET
+     OBUF     DC      'Hello, World!'
+     LEN      DC      13
+              END
+
+ 次のコマンドを実行すると、CASL II のアセンブルと仮想マシン COMET II
+上での実行が連続で行われ、文字列が出力されます。
+
+     $ casl2 hello.casl
+     Hello, World!
+
+ `addl.casl'は、3と1の和を求めます。
+
+     $ cat addl.casl
+     ;;; ADDL r,adr
+     MAIN     START
+              LD      GR1,A
+              ADDL    GR1,B
+              RET
+     A        DC      3
+     B        DC      1
+              END
+
+ このプログラムには出力命令がないため、オプションなしで実行した場合には結果が出力されません。
+
+     $ casl2 addl.casl
+     $
+
+ 実行内容を確認するには、後述のようにCPU
+内にあるレジスタやメモリの内容を表示するか、結果を出力するための処理を追加する必要があります。
+
+\1f
+File: yacasl2.info,  Node: Assemble result,  Next: Register and memory,  Prev: Simple output,  Up: Sample usage
+
+2.2 アセンブル結果の確認
+==================================
+
+ casl2の処理途中で行われるアセンブルの結果を表示するには、オプション`-a'を指定します。
+また、ラベルとアドレスの対応表を表示するには、オプション`-l'を指定します。
+
+ 次のコマンドでは`hello.casl'の、ラベルとアドレスの対応表と、アセンブル結果と、実行結果が表示されます。
+OUTはアセンブラ命令で複数の機械語命令で構成されているため、命令行1行に対して、複数行のコードが生成されます。
+
+     $ casl2 -a -l hello.casl
+
+     Assemble hello.casl (0)
+
+     Label::::
+     MAIN.LEN ---> #0020
+     MAIN ---> #0000
+     MAIN.OBUF ---> #0013
+
+     Assemble hello.casl (1)
+     hello.casl:    1:MAIN    START
+     hello.casl:    2:        OUT     OBUF,LEN
+         #0000   #7001
+         #0001   #0000
+         #0002   #7002
+         #0003   #0000
+         #0004   #1210
+         #0005   #0013
+         #0006   #1220
+         #0007   #0020
+         #0008   #F000
+         #0009   #0002
+         #000A   #1210
+         #000B   #0021
+         #0021   #000A
+         #000C   #1220
+         #000D   #0022
+         #0022   #0001
+         #000E   #F000
+         #000F   #0002
+         #0010   #7120
+         #0011   #7110
+     hello.casl:    3:        RET
+         #0012   #8100
+     hello.casl:    4:OBUF    DC      'Hello, World!'
+         #0013   #0048
+         #0014   #0065
+         #0015   #006C
+         #0016   #006C
+         #0017   #006F
+         #0018   #002C
+         #0019   #0020
+         #001A   #0057
+         #001B   #006F
+         #001C   #0072
+         #001D   #006C
+         #001E   #0064
+         #001F   #0021
+     hello.casl:    5:LEN     DC      13
+         #0020   #000D
+     hello.casl:    6:        END
+     Hello, World!
+
+ `addl.casl'の、ラベルとアドレスの対応表と、アセンブル結果は、次のようになります。
+
+     $ casl2 -a -l addl.casl
+
+     Assemble addl.casl (0)
+
+     Label::::
+     MAIN.A ---> #0005
+     MAIN.B ---> #0006
+     MAIN ---> #0000
+
+     Assemble addl.casl (1)
+     addl.casl:    1:;;; ADDL r,adr
+     addl.casl:    2:MAIN    START
+     addl.casl:    3:        LD      GR1,A
+         #0000   #1010
+         #0001   #0005
+     addl.casl:    4:        ADDL    GR1,B
+         #0002   #2210
+         #0003   #0006
+     addl.casl:    5:        RET
+         #0004   #8100
+     addl.casl:    6:A       DC      3
+         #0005   #0003
+     addl.casl:    7:B       DC      1
+         #0006   #0001
+     addl.casl:    8:        END
+
+ なお、オプション`-A'を指定すると、アセンブル結果が表示される時点で処理が終了します。
+仮想マシンCOMET II での実行は行われません。
+
+\1f
+File: yacasl2.info,  Node: Register and memory,  Next: Only assemble,  Prev: Assemble result,  Up: Sample usage
+
+2.3 実行時のレジスタとメモリを表示
+=================================================
+
+ YACASL2では実行中のCPUのレジスタとメモリの内容をそれぞれ、`-t'と`-d'を指定することで表示できます。
+
+ また、`-M'で、仮想マシンCOMET II のメモリ容量を語(16
+ビット)単位で指定できます。
+小さいプログラムを実行するときは、メモリ容量を小さくすれば結果が見やすくなります。
+
+* Menu:
+
+* Register specify::            特定のレジスタを表示
+* End value::
+* Step count::                  プログラムのステップ数を表示
+
+ `addl.casl'に必要なメモリ容量は8語のため、次のようにCPUのレジスタとメモリの内容を表示できます。
+
+     $ casl2 -t -d -M8 addl.casl | less
+
+     Assemble addl.casl (0)
+
+     Assemble addl.casl (1)
+
+     Executing machine codes
+     #0000: Register::::
+     #0000: GR0:      0 = #0000 = 0000000000000000
+     #0000: GR1:      0 = #0000 = 0000000000000000
+     #0000: GR2:      0 = #0000 = 0000000000000000
+     #0000: GR3:      0 = #0000 = 0000000000000000
+     #0000: GR4:      0 = #0000 = 0000000000000000
+     #0000: GR5:      0 = #0000 = 0000000000000000
+     #0000: GR6:      0 = #0000 = 0000000000000000
+     #0000: GR7:      0 = #0000 = 0000000000000000
+     #0000: SP:       8 = #0008 = 0000000000001000
+     #0000: PR:       0 = #0000 = 0000000000000000
+     #0000: FR (OF SF ZF): 000
+     #0000: Memory::::
+     #0000: adr : 0000 0001 0002 0003 0004 0005 0006 0007
+     #0000: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
+     #0002: Register::::
+     #0002: GR0:      0 = #0000 = 0000000000000000
+     #0002: GR1:      3 = #0003 = 0000000000000011
+     #0002: GR2:      0 = #0000 = 0000000000000000
+     #0002: GR3:      0 = #0000 = 0000000000000000
+     #0002: GR4:      0 = #0000 = 0000000000000000
+     #0002: GR5:      0 = #0000 = 0000000000000000
+     #0002: GR6:      0 = #0000 = 0000000000000000
+     #0002: GR7:      0 = #0000 = 0000000000000000
+     #0002: SP:       8 = #0008 = 0000000000001000
+     #0002: PR:       2 = #0002 = 0000000000000010
+     #0002: FR (OF SF ZF): 000
+     #0002: Memory::::
+     #0002: adr : 0000 0001 0002 0003 0004 0005 0006 0007
+     #0002: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
+     #0004: Register::::
+     #0004: GR0:      0 = #0000 = 0000000000000000
+     #0004: GR1:      4 = #0004 = 0000000000000100
+     #0004: GR2:      0 = #0000 = 0000000000000000
+     #0004: GR3:      0 = #0000 = 0000000000000000
+     #0004: GR4:      0 = #0000 = 0000000000000000
+     #0004: GR5:      0 = #0000 = 0000000000000000
+     #0004: GR6:      0 = #0000 = 0000000000000000
+     #0004: GR7:      0 = #0000 = 0000000000000000
+     #0004: SP:       8 = #0008 = 0000000000001000
+     #0004: PR:       4 = #0004 = 0000000000000100
+     #0004: FR (OF SF ZF): 000
+     #0004: Memory::::
+     #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007
+     #0004: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
+
+\1f
+File: yacasl2.info,  Node: Register specify,  Next: End value,  Prev: Register and memory,  Up: Register and memory
+
+2.3.1 特定のレジスタを表示
+------------------------------------
+
+ `addl.casl'のレジスタやメモリの中で、実行中に値が変化しているのはGR1だけです。
+こうした場合は、`grep'を使って表示される内容を絞り込むことで動作を検証しやすくなります。
+
+     $ casl2 -t addl.casl | grep 'GR1:'
+     #0000: GR1:      0 = #0000 = 0000000000000000
+     #0002: GR1:      3 = #0003 = 0000000000000011
+     #0004: GR1:      4 = #0004 = 0000000000000100
+
+ この内容を、先に出力したアセンブル結果と引き比べてください。
+次の表のように、PRとGR1、命令行が対応していることがわかります。
+
+PR                     GR1                    命令行
+#0000                  #0000                  
+#0002                  #0003                  `LD GR1,A'
+#0004                  #0004                  `ADDL GR1,B'
+
+\1f
+File: yacasl2.info,  Node: End value,  Next: Step count,  Prev: Register specify,  Up: Register and memory
+
+2.3.2 プログラム終了時の値を表示
+---------------------------------------------
+
+ `grep'と`tail'を組み合わせれば、プログラム終了時の値を表示できます。
+
+ `addl.casl'でプログラム終了時の値を確認するには、次のようにします。
+
+     $ casl2 -t addl.casl | grep 'GR1:' | tail -1
+     #0004: GR1:      4 = #0004 = 0000000000000100
+
+ `sum_10.casl'は、1から10までの整数の和を求めます。
+
+     $ cat sum_10.casl
+     ;;; 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
+
+ `sum_10.casl'でファイル終了時の値を確認するには、次のようにします。
+
+     $ casl2 -t sum_10.casl | grep 'GR0:' | tail -1
+     #0010: GR0:     55 = #0037 = 0000000000110111 = '7'
+
+\1f
+File: yacasl2.info,  Node: Step count,  Prev: End value,  Up: Register and memory
+
+2.3.3 プログラムのステップ数を表示
+------------------------------------------------
+
+ `grep'と`wc'を組み合わせれば、プログラムのステップ数を表示できます。
+
+     $ casl2 -t hello.casl | grep 'GR1:' | wc -l
+     11
+
+     $ casl2 -t addl.casl | grep 'GR1:' | wc -l
+     3
+
+ `sum_10.casl'はプログラム内にループがあるため、ステップ数が大きくなります。
+
+     $ casl2 -t sum_10.casl | grep 'GR0:' | wc -l
+     54
+
+\1f
+File: yacasl2.info,  Node: Only assemble,  Next: Analyze word,  Prev: Register and memory,  Up: Sample usage
+
+2.4 アセンブルと実行を別に行う
+===========================================
+
+ `casl2'に`-O'`ファイル名'を指定すると、オブジェクトファイルを作成できます。
+
+     $ casl2 -Ohello.o hello.casl
+
+ 作成されたオブジェクトファイルの内容は、`od'を使って確認できます。
+テキストファイルではないため、`cat'などでは確認できません。
+
+     $ od -t x2 hello.o
+     0000000 7001 0000 7002 0000 1210 0013 1220 0020
+     0000020 f000 0002 1210 0021 1220 0022 f000 0002
+     0000040 7120 7110 8100 0048 0065 006c 006c 006f
+     0000060 002c 0020 0057 006f 0072 006c 0064 0021
+     0000100 000d 000a 0001
+     0000106
+
+ オブジェクトファイルの実行には、`casl2'を使います。
+
+     $ comet2 hello.o
+     Hello, World!
+
+\1f
+File: yacasl2.info,  Node: Analyze word,  Next: Use CASL2LIB,  Prev: Only assemble,  Up: Sample usage
+
+2.5 1語の解析
+=================
+
+ CASL IIでは、1語(1 word、16ビット)を単位としてデータが処理されます。
+`dumpword'は、指定した1語を10進数、16進数、2進数で表示します。
+
+     $ dumpword 72
+         72:     72 = #0048 = 0000000001001000 = 'H'
+
+\1f
+File: yacasl2.info,  Node: Use CASL2LIB,  Prev: Analyze word,  Up: Sample usage
+
+2.6 CASL2ライブラリの使用
+=================================
+
+ YACASL2の`as/casl2lib'ディレクトリには、CASL
+IIで記述されたライブラリファイルが格納されています。
+
+ このフォルダには、たとえば次のようなプログラムが含まれています。
+
+`OUTL'
+     `outl.casl'。
+     GR1に格納された値を、0以上65535以下の整数として出力します。
+
+`OUTA'
+     `outa.casl'。
+     GR1に格納された値を、-32767以上32767以下の整数として出力します。
+
+`MULL'
+     `mull.casl'。
+     GR1とGR2に格納された値を0以上65535以下の整数と見なし、積をGR3に格納します。
+
+`DIVL'
+     `divl.casl'。
+     GR1とGR2に格納された値を0以上65535以下の整数と見なし、商をGR3、剰余をGR0に格納します。
+
+2.6.1 数値を出力する
+---------------------------
+
+ 3と1の和を求める`addl.casl'で演算結果を出力するには、まず`addl.casl'を編集します。
+CASL IIの`CALL'命令で`OUTL'を副プログラムとして呼び出します。
+
+     $ cat addl_outl.casl
+     MAIN    START
+             LD      GR1,A
+             ADDL    GR1,B
+             _CALL    OUTL_
+             RET
+     A       DC      3
+     B       DC      1
+             END
+
+ 変更したら`casl2'を、複数のファイルを指定して実行します。
+
+     $ casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl
+     4
+
+\1f
+File: yacasl2.info,  Node: casl2 invocation,  Next: comet2 invocation,  Prev: Sample usage,  Up: Top
+
+3 `casl2'の呼び出し
+************************
+
+ `casl2'は、引数として指定されたCASLファイルをアセンブルし、仮想マシンCOMET
+II上で実行します。 CASLファイルは、アセンブラ言語CASL
+IIで記述されたテキストファイルです。
+引数が指定されない場合は、エラーメッセージを表示して終了します。
+
+     $ casl2 hello.casl
+
+ 複数のCASLファイルを指定することで、副プログラムを呼び出すこともできます。
+
+     $ casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl
+
+オプション
+---------------
+
+ `casl2'は、次のオプションを指定できます。
+
+`-s'
+`--source'
+     CASLファイルの内容を表示します。
+
+`-l'
+`--label'
+     ラベルの一覧を次の形式で表示します。
+     表示後、ほかの作業を続行します。
+
+          <プログラム名>.<ラベル名> ---> <アドレスの16進数表現>
+
+`-L'
+`--labelonly'
+     `-l'と同じ形式でラベルの一覧を表示します。
+     表示後、ほかの作業は続行せず、終了します。
+
+`-a'
+`--assembledetail'
+     アセンブル詳細結果を表示し、ほかの作業を続行します。
+
+`-A'
+`--assembledetailonly'
+     アセンブル詳細結果を表示して終了します。
+
+`-o<OBJECTFILE>'
+`--assembleout<OBJECTFILE>'
+     アセンブル結果をオブジェクトファイル`<OBJECTFILE>'に出力し、ほかの作業を続行します。
+     出力されたオブジェクトファイルは、`comet2'で実行できます。
+     オブジェクトファイルを指定しない場合、出力先は`a.o'です。
+     オブジェクトファイルは1つだけ指定できます。
+
+`-O[<OBJECTFILE>]'
+`--assembleoutonly[<OBJECTFILE>]'
+     アセンブル結果をオブジェクトファイル`<OBJECTFILE>'に出力し、終了します。
+     出力されたオブジェクトファイルは、`comet2'で実行できます。
+     オブジェクトファイルを指定しない場合、出力先は`a.o'です。
+     オブジェクトファイルは1つだけ指定できます。
+
+`-t'
+`--trace'
+`--tracearithmetic'
+     プログラム実行中のレジスタの値を次の形式で表示します。
+
+          <PR値の16進数表現>: <レジスタ>: <値の10進数表現> =
+          <値の16進数表現> = <値の2進数表現>[ ='文字']
+
+        *
+          `<PR値の16進数表現>'と`<レジスタ>'、`<値の16進数表現>'は、4けたの16進数で表されます。
+          `<PR値の16進数表現>'と`<値の16進数表現>'には、先頭に`#'が付きます。
+          範囲は`#0000'から`#FFFF'です
+
+        * `<値の10進数表現>'は符号の付いた10進数です。
+          範囲は-32768から32767です。
+
+        * `<値の2進数表現>'は、16けたの2進数で表されます。
+          範囲は、`0000000000000000'から`1111111111111111'です
+
+        * `[
+          ='文字']'は、レジストリの値が「文字の組」の範囲に含まれる場合に表示されます。
+
+     表示されるレジスタには、次の種類があります。
+
+    `GR0 GR1 GR2 GR3 GR4 GR5 GR6 GR7'
+          汎用レジスタ
+
+    `SP'
+          スタックポインタ
+
+    `PR'
+          プログラムレジスタ
+
+    `FR'
+          フラグレジスタ
+
+     例えば、次のように表示されます。
+
+          #0002: GR1:      3 = #0003 = 0000000000000011
+
+`-T'
+`--tracelogical'
+     `-t'と同じように、プログラム実行中のレジスタの値を表示します。
+     ただし`-t'と異なり、`<値の10進数表現>'は符号の付かない10進数です。
+     値の範囲は0から65535です。
+
+`-d'
+`--dump'
+     メモリの内容をすべて表示します。
+
+`-M <MEMORYSIZE>'
+`--memorysize <MEMORYSIZE>'
+     アセンブルおよび実行時のメモリサイズ`<MEMORYSIZE>'を0から65535の範囲で指定します。
+     指定しない場合、512です。
+
+`-C <CLOCKS>'
+`--clocks <CLOCKS>'
+     実行時のクロック周波数`<CLOCKS>'を0より大きい整数で指定します。
+     指定しない場合、クロック周波数は5000000です。
+
+`-v'
+`--version'
+     `casl2'のバージョンを表示して終了します。
+
+`-h'
+`--help'
+     `casl2'の使用方法を表示して終了します。
+
+\1f
+File: yacasl2.info,  Node: comet2 invocation,  Next: dumpword invocation,  Prev: casl2 invocation,  Up: Top
+
+4 `comet2'の呼び出し
+*************************
+
+ `comet2'は、引数として指定されたオブジェクトファイルを仮想マシンCOMET
+II上で実行します。
+オブジェクトファイルは、`casl'に`-o'または`-O'を指定して出力します。
+
+     $ comet2 hello.o
+
+ 引数で指定できるオブジェクトファイルは1つだけです。
+引数が指定されない場合は、エラーメッセージを表示して終了します。
+複数の引数を指定した場合、2番目以降の引数は無視されます。
+
+オプション
+---------------
+
+ `comet2'は、次のオプションを指定できます。
+
+`-t'
+`--trace'
+`--tracearithmetic'
+     プログラム実行中のレジスタの値を次の形式で表示します。
+     `<値の10進数表現>'は符号の付いた10進数です。
+     範囲は-32768から32767です。
+
+          <PR値の16進数表現>: <レジスタ>: <値の10進数表現> = <値の16進数表現> = <値の2進数表現>[ ='文字']
+
+        *
+          `<PR値の16進数表現>'と`<値の16進数表現>'は、先頭に`#'が付いた4けたの16進数で表されます。
+          範囲は、`#0000'から`#FFFF'です
+
+        * `<値の2進数表現>'は、16けたの2進数で表されます。
+          範囲は、`0000000000000000'から`1111111111111111'です
+
+        * `[
+          ='文字']'は、レジストリの値が「文字の組」の範囲に含まれる場合に表示されます。
+
+     例えば、次のように表示されます。
+
+          #0002: GR1:      3 = #0003 = 0000000000000011
+
+     表示されるレジスタには、次の種類があります。
+
+    `GR0 GR1 GR2 GR3 GR4 GR5 GR6 GR7'
+          汎用レジスタ
+
+    `SP'
+          スタックポインタ
+
+    `PR'
+          プログラムレジスタ
+
+    `FR'
+          フラグレジスタ
+
+`-T'
+`--tracelogical'
+     `-t'と同じように、プログラム実行中のレジスタの値を表示します。
+     ただし、`-t'と異なり、`<値の10進数表現>'は符号の付かない10進数です。
+     値の範囲は0から65535です。
+
+`-d'
+`--dump'
+     メモリの内容をすべて表示します。
+
+`-M <MEMORYSIZE>'
+`--memorysize <MEMORYSIZE>'
+     実行時のメモリサイズ`<MEMORYSIZE>'を0から65535の範囲で指定します。
+     指定しない場合、512です。
+
+`-C <CLOCKS>'
+`--clocks <CLOCKS>'
+     実行時のクロック周波数`<CLOCKS>'を0より大きい整数で指定します。
+     指定しない場合、5000000です。
+
+`-v'
+`--version'
+     `comet2'のバージョンを表示して終了します。
+
+`-h'
+`--help'
+     `comet2'の使用方法を表示して終了します。
+
+\1f
+File: yacasl2.info,  Node: dumpword invocation,  Next: CASL2LIB Manual,  Prev: comet2 invocation,  Up: Top
+
+5 `dumpword'の呼び出し
+***************************
+
+ `dumpword'は引数として指定された数値を、整数、#0000から#FFFFまでの範囲の16進数、2進数で表示します。
+文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。
+引数は、10進数または先頭に「#」の付いた16進数で指定します。
+表示される整数は、オプションにより符号付きか符号なしかを指定します。
+オプションなしの場合は符号付きです。
+整数の範囲は、符号付きの場合は-32768以上32767以下、符号なしの場合は0以上65535以下です。
+
+     $ dumpword 10
+         10:     10 = #000A = 0000000000001010 = '\n'
+
+ 引数が指定されない場合は、使い方を表示して終了します。
+複数の引数を指定した場合、1つ目の引数だけが表示され、2つ目以降の引数は無視されます。
+
+注意
+------
+
+ マイナスの数や16進数はシェルの仕様により、そのままでは指定できません。
+
+ マイナスの数を指定するときは、次のように`--'を付けます。
+
+     $ dumpword -- -72
+        -72:    -72 = #FFB8 = 1111111110111000
+
+ 先頭に「#」を付けて16進数を指定するときは、次のように「'」で囲みます。
+
+     $ dumpword '#0048'
+      #0048:     72 = #0048 = 0000000001001000 = 'H'
+
+オプション
+---------------
+
+ `dumpword'は、次のオプションを指定できます。
+
+`-a'
+`--arithmetic'
+     出力される整数の範囲を-32,768以上32,767以下にします。
+     オプションなしの場合と同じです。
+
+`-l'
+`--logical'
+     出力される整数の範囲を0以上65,535以下にします。
+
+`-v'
+`--version'
+     `dumpword'のバージョンを表示して終了します。
+
+`-h'
+`--help'
+     `dumpword'の使用方法を表示して終了します。
+
+\1f
+File: yacasl2.info,  Node: CASL2LIB Manual,  Prev: dumpword invocation,  Up: Top
+
+6 CASL2LIBマニュアル
+*************************
+
+* Menu:
+
+* ABS::                         ABS - `abs.casl'
+* DIVA::                        DIVA - `diva.casl'
+* DIVL::                        DIVL - `divl.casl'
+* INL::                         INL - `inl.casl'
+* L2STR::                       L2STR - `l2str.casl'
+* MAX::                         MAX - `max.casl'
+* MINIM::                       MINIM - `minim.casl'
+* MULA::                        MULA - `mula.casl'
+* MULL::                        MULL - `mull.casl'
+* OUTA::                        OUTA - `outa.casl'
+* OUTB::                        OUTB - `outb.casl'
+* OUTD_Q15::                    OUTD_Q15 - `outd_q15.casl'
+* OUTL::                        OUTL - `outl.casl'
+* REV::                         REV - `rev.casl'
+* STR2L::                       STR2L - `str2l.casl'
+
+\1f
+File: yacasl2.info,  Node: ABS,  Next: DIVA,  Prev: CASL2LIB Manual,  Up: CASL2LIB Manual
+
+6.1 `ABS' - `abs.casl'
+======================
+
+ GR1を符号付き整数とみなし、絶対値に変換
+
+入力
+------
+
+`GR1'
+     符号付き整数
+
+出力
+------
+
+`GR1'
+     入力された値の絶対値
+
+`OF'
+     入力された値が-32768の場合、1
+
+`SF'
+     入力された値が負数(-32767から-1)の場合、1
+
+依存する副プログラム
+------------------------------
+
+ なし
+
+使用例
+---------
+
+     ;;; CASL2LIB > ABSを呼び出し、-1の絶対値を表示
+     MAIN    START
+             LD      GR1,A
+             CALL    ABS
+             CALL    OUTA
+             RET
+     A       DC      -1
+             END
+
+     $ casl2 call_abs.casl $CASL2LIB/abs.casl $CASL2LIB/outa.casl \
+       $CASL2LIB/divl.casl $CASL2LIB/rev.casl
+     1
+
+\1f
+File: yacasl2.info,  Node: DIVA,  Next: DIVL,  Prev: ABS,  Up: CASL2LIB Manual
+
+6.2 `DIVA' - `diva.casl'
+========================
+
+ 符号付き整数の割算を筆算方式で行う
+
+入力
+------
+
+`GR1'
+     被除数
+
+`GR2'
+     除数
+
+出力
+------
+
+`GR0'
+     商
+
+`GR3'
+     剰余
+
+`OF'
+     次の場合、1
+        * GR2が0
+
+        * GR1が-32768
+
+        * GR2が-32768
+
+`SF'
+     商が負数(-32767から-1)の場合、1
+
+`ZF'
+     商が0の場合、1
+
+依存する副プログラム
+------------------------------
+
+   * `DIVL'
+
+使用例
+---------
+
+     ;; CASL2LIB > DIVAを呼び出し、-32767 / 255 の商と剰余を表示
+     MAIN    START
+     BEGIN   LD      GR1,A
+             LD      GR2,B
+             CALL    DIVA
+             JOV     ERR
+             LD      GR1,GR0
+             CALL    OUTA
+             LD      GR1,GR3
+             CALL    OUTA
+             JUMP    FIN
+     ERR     OUT     EMSG,ELEN
+     FIN     RET
+     A       DC      -32767
+     B       DC      255
+     EMSG    DC      'error'
+     ELEN    DC      5
+             END
+
+     $ casl2 call_diva.casl $CASL2LIB/diva.casl $CASL2LIB/divl.casl \
+       $CASL2LIB/outa.casl $CASL2LIB/abs.casl $CASL2LIB/rev.casl
+     -128
+     -127
+
+\1f
+File: yacasl2.info,  Node: DIVL,  Next: INL,  Prev: DIVA,  Up: CASL2LIB Manual
+
+6.3 `DIVL' - `divl.casl'
+========================
+
+ 符号なし整数の割算を筆算方式で行う
+
+入力
+------
+
+`GR1'
+     被除数
+
+`GR2'
+     除数
+
+出力
+------
+
+`GR0'
+     商
+
+`GR3'
+     剰余
+
+`OF'
+     GR2が0の場合、1
+
+`SF'
+     商が32768から65535の場合、1
+
+`ZF'
+     商が0の場合、1
+
+依存する副プログラム
+------------------------------
+
+ なし
+
+使用例
+---------
+
+     ;; CASL2LIB > DIVLを呼び出し、65534 / 255 の商と剰余を表示
+     MAIN    START
+     BEGIN   LD      GR1,A
+             LD      GR2,B
+             CALL    DIVL
+             JOV     ERR
+             LD      GR1,GR0
+             CALL    OUTL
+             LD      GR1,GR3
+             CALL    OUTL
+             JUMP    FIN
+     ERR     OUT     EMSG,ELEN
+     FIN     RET
+     A       DC      65534
+     B       DC      255
+     EMSG    DC      'error'
+     ELEN      DC      5
+             END
+
+     $ casl2 call_divl.casl $CASL2LIB/divl.casl $CASL2LIB/outl.casl \
+       $CASL2LIB/rev.casl
+     256
+     254
+
+\1f
+File: yacasl2.info,  Node: INL,  Next: L2STR,  Prev: DIVL,  Up: CASL2LIB Manual
+
+6.4 `INL' - `inl.casl'
+======================
+
+ 符号なし整数の入力を受け付ける
+
+入力
+------
+
+`標準入力'
+     符号なし整数
+
+出力
+------
+
+`GR1'
+     入力された符号なし整数
+
+`GR0'
+     文字列の長さ。 数字以外が入力された場合は`#FFFF'
+
+依存する副プログラム
+------------------------------
+
+   * `STR2L'
+
+使用例
+---------
+
+ 次のコマンドを実行すると、数値の入力が受け付けられ、入力された数値が表示される。
+
+     ;;; casl2 -M1024 call_inl.casl $CASL2LIB/inl.casl $CASL2LIB/str2l.casl  $CASL2LIB/mull.casl \
+     ;;; $CASL2LIB/outl.casl $CASL2LIB/divl.casl $CASL2LIB/rev.casl
+     MAIN    START
+     LOOP    CALL    INL             ; GR1に数値、GR0に文字列の長さ
+             JOV     OV
+             AND     GR0,GR0
+             JZE     FIN
+             CPL     GR0,=#FFFF
+             JZE     NAN
+             CALL    OUTL
+             JUMP    LOOP
+     OV      CPL     GR0,=#FFFF
+             JZE     LENOV
+             OUT     OVMSG,MLEN1
+             JUMP    LOOP
+     NAN     OUT     NANMSG,MLEN2
+             JUMP    LOOP
+     LENOV   OUT     LENOVMSG,MLEN3
+     FIN     RET
+     OVMSG   DC      'Over 65535'
+     MLEN1   DC      10
+     NANMSG  DC      'Not integer'
+     MLEN2   DC      11
+     LENOVMSG DC     'Str too long. Stop'
+     MLEN3   DC      18
+             END
+
+     $ casl2 -M1024 call_inl.casl $CASL2LIB/inl.casl $CASL2LIB/str2l.casl $CASL2LIB/mull.casl \
+       $CASL2LIB/outl.casl $CASL2LIB/divl.casl $CASL2LIB/rev.casl
+
+\1f
+File: yacasl2.info,  Node: L2STR,  Next: MAX,  Prev: INL,  Up: CASL2LIB Manual
+
+6.5 `L2STR' - `l2str.casl'
+==========================
+
+ 符号なし整数を文字列に変換する
+
+入力
+------
+
+`GR1'
+     符号なし整数
+
+`GR2'
+     変換した文字列を格納するアドレス
+
+出力
+------
+
+`GR0'
+     文字列の長さ
+
+依存する副プログラム
+------------------------------
+
+   * `DIVL'
+
+\1f
+File: yacasl2.info,  Node: MAX,  Next: MINIM,  Prev: L2STR,  Up: CASL2LIB Manual
+
+6.6 `MAX' - `max.casl'
+======================
+
+ 連続した複数のWORDを符号付き整数とみなして最大値を返す
+
+入力
+------
+
+`GR1'
+     WORD値を格納したアドレス
+
+`GR2'
+     値の個数
+
+出力
+------
+
+`GR0'
+     最大値
+
+依存する副プログラム
+------------------------------
+
+ なし
+
+\1f
+File: yacasl2.info,  Node: MINIM,  Next: MULA,  Prev: MAX,  Up: CASL2LIB Manual
+
+6.7 `MINIM' - `minim.casl'
+==========================
+
+ 連続した複数のWORDを符号付き整数とみなして最小値を返す
+
+入力
+------
+
+`GR1'
+     WORD値を格納したアドレス
+
+`GR2'
+     値の個数
+
+出力
+------
+
+`GR0'
+     最小値
+
+依存する副プログラム
+------------------------------
+
+ なし
+
+\1f
+File: yacasl2.info,  Node: MULA,  Next: MULL,  Prev: MINIM,  Up: CASL2LIB Manual
+
+6.8 `MULA' - `mula.casl'
+========================
+
+\1f
+File: yacasl2.info,  Node: MULL,  Next: OUTA,  Prev: MULA,  Up: CASL2LIB Manual
+
+6.9 `MULL' - `mull.casl'
+========================
+
+\1f
+File: yacasl2.info,  Node: OUTA,  Next: OUTB,  Prev: MULL,  Up: CASL2LIB Manual
+
+6.10 `OUTA' - `outa.casl'
+=========================
+
+\1f
+File: yacasl2.info,  Node: OUTB,  Next: OUTD_Q15,  Prev: OUTA,  Up: CASL2LIB Manual
+
+6.11 `OUTB' - `outb.casl'
+=========================
+
+\1f
+File: yacasl2.info,  Node: OUTD_Q15,  Next: OUTL,  Prev: OUTB,  Up: CASL2LIB Manual
+
+6.12 `OUTD_Q15' - `outd_q15.casl'
+=================================
+
+\1f
+File: yacasl2.info,  Node: OUTL,  Next: REV,  Prev: OUTD_Q15,  Up: CASL2LIB Manual
+
+6.13 `OUTL' - `outl.casl'
+=========================
+
+\1f
+File: yacasl2.info,  Node: REV,  Next: STR2L,  Prev: OUTL,  Up: CASL2LIB Manual
+
+6.14 `REV' - `rev.casl'
+=======================
+
+\1f
+File: yacasl2.info,  Node: STR2L,  Prev: REV,  Up: CASL2LIB Manual
+
+6.15 `STR2L' - `str2l.casl'
+===========================
+
+
+\1f
+Tag Table:
+Node: Top\7f441
+Node: Overview\7f847
+Node: Sample usage\7f2911
+Node: Simple output\7f3789
+Node: Assemble result\7f5169
+Node: Register and memory\7f8091
+Node: Register specify\7f11230
+Node: End value\7f12267
+Node: Step count\7f13817
+Node: Only assemble\7f14383
+Node: Analyze word\7f15311
+Node: Use CASL2LIB\7f15712
+Node: casl2 invocation\7f17247
+Node: comet2 invocation\7f21748
+Node: dumpword invocation\7f24607
+Node: CASL2LIB Manual\7f26628
+Node: ABS\7f27546
+Node: DIVA\7f28410
+Node: DIVL\7f29644
+Node: INL\7f30755
+Node: L2STR\7f32398
+Node: MAX\7f32812
+Node: MINIM\7f33221
+Node: MULA\7f33637
+Node: MULL\7f33772
+Node: OUTA\7f33906
+Node: OUTB\7f34042
+Node: OUTD_Q15\7f34182
+Node: OUTL\7f34338
+Node: REV\7f34477
+Node: STR2L\7f34609
+\1f
+End Tag Table
+
+\1f
+Local Variables:
+coding: utf-8
+End: