+@kbd{casl2}に@option{-O}@file{ファイル名}を指定すると、オブジェクトファイルを作成できます。
+
+@example
+$ @kbd{casl2 -Ohello.o hello.casl}
+@end example
+
+作成されたオブジェクトファイルの内容は、@kbd{od}を使って確認できます。テキストファイルではないため、@kbd{cat}などでは確認できません。
+
+@example
+$ @kbd{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
+@end example
+
+オブジェクトファイルの実行には、@kbd{comet2}を使います。
+
+@example
+$ @kbd{comet2 hello.o}
+Hello, World!
+@end example
+
+@node Analyze Word, CASL2lib, Only Assemble, Usage
+@section 1語の解析
+
+CASL IIでは、1語(16ビット)を単位としてデータが処理されます。
+@kbd{dumpword}は、指定した1語を10進数、16進数、2進数で表示します。
+
+@example
+$ @kbd{dumpword 72}
+ 72: 72 = #0048 = 0000000001001000 = 'H'
+@end example
+
+マイナスの数は、次のように@kbd{--}を付けて指定します。
+
+@example
+$ @kbd{dumpword -- -72}
+ -72: -72 = #FFB8 = 1111111110111000
+@end example
+
+16進数は、次のように次のように@kbd{'}で囲み@kbd{#}を付けて指定します。
+
+@example
+$ @kbd{dumpword '#0048'}
+ #0048: 72 = #0048 = 0000000001001000 = 'H'
+@end example
+
+@node CASL2lib,, Analyze Word, Usage
+@section CASL2ライブラリの使用
+
+YACASL2の@file{as/casl2lib}ディレクトリには、CASL IIで記述されたライブラリファイルが格納されています。
+
+このフォルダには、たとえば次のようなプログラムが含まれています。
+
+@table @option
+@item OUTL
+@file{outl.casl}。GR1に格納された値を、0〜65535の数値として出力します。
+
+@item OUTA
+@file{outa.casl}。GR1に格納された値を、-32767〜32767の数値として出力します。
+
+@item MULL
+@file{mull.casl}。GR1とGR2に格納された値を0〜65535の整数と見なし、積をGR3に格納します。
+
+@item DIVL
+@file{divl.casl}。GR1とGR2に格納された値を0〜65535の整数と見なし、商をGR3、剰余をGR0に格納します。
+@end table
+
+@subsection 数値を出力する
+
+3と1の和を求める@file{addl.casl}で演算結果を出力するには、まず@file{addl.casl}を編集します。CASL IIの@kbd{CALL}命令で@kbd{OUTL}を副プログラムとして呼び出します。
+
+@example
+$ @kbd{cat addl_outl.casl}
+MAIN START
+ LD GR1,A
+ ADDL GR1,B
+ @emph{CALL OUTL}
+ RET
+A DC 3
+B DC 1
+ END
+@end example
+
+変更したら@kbd{casl2}を、複数のファイルを指定して実行します。
+
+@example
+$ @kbd{casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl}
+4
+@end example
+
+@node Command Manual,CASL2LIB Manual,Usage,TOP
+@chapter YACASL2コマンドマニュアル
+
+@cindex YACASL2コマンドマニュアル
+
+YACASL2のコマンドとオプションについて解説します。
+
+@menu
+* casl2::
+* comet2::
+* dumpword::
+@end menu
+
+@node casl2
+@section @kbd{casl2}
+
+@pindex casl2
+@cindex casl2
+
+@kbd{casl2}は、引数として指定されたCASLファイルをアセンブルし、仮想マシンCOMET II上で実行します。CASLファイルは、アセンブラ言語CASL IIで記述されたテキストファイルです。引数が指定されない場合は、エラーメッセージを表示して終了します。
+
+@example
+$ @kbd{casl2 hello.casl}
+@end example
+
+複数のCASLファイルを指定することで、副プログラムを呼び出せます。
+
+@example
+$ @kbd{casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl}
+@end example
+
+@unnumberedsubsec オプション
+
+@kbd{casl2}は、次のオプションを指定できます。
+
+@table @option
+@item -s
+@itemx --source
+CASLファイルの内容を表示します。
+
+@item -l
+@itemx --label
+ラベルの一覧を次の形式で表示します。表示後、ほかの作業を続行します。
+
+@example
+<プログラム名>.<ラベル名> ---> <アドレスの16進数表現>
+@end example
+
+@item -L
+@itemx --labelonly
+@option{-l}と同じ形式でラベルの一覧を表示します。表示後、ほかの作業は続行せず、終了します。
+
+@item -a
+@itemx --assembledetail
+アセンブル詳細結果を表示し、ほかの作業を続行します。
+
+@item -A
+@itemx --assembledetailonly
+アセンブル詳細結果を表示して終了します。
+
+@item -o<OBJECTFILE>
+@itemx --assembleout<OBJECTFILE>
+アセンブル結果をオブジェクトファイル@file{<OBJECTFILE>}に出力し、ほかの作業を続行します。出力されたオブジェクトファイルは、@kbd{comet2}で実行できます。オブジェクトファイルを指定しない場合、出力先は@file{a.o}です。オブジェクトファイルは1つだけ指定できます。
+
+@item -O[<OBJECTFILE>]
+@itemx --assembleoutonly[<OBJECTFILE>]
+アセンブル結果をオブジェクトファイル@file{<OBJECTFILE>}に出力し、終了します。出力されたオブジェクトファイルは、@kbd{comet2}で実行できます。オブジェクトファイルを指定しない場合、出力先は@file{a.o}です。オブジェクトファイルは1つだけ指定できます。
+
+@item -t
+@itemx --trace
+@itemx --tracearithmetic
+プログラム実行中のレジスタの値を次の形式で表示します。@code{<値の10進数表現>}は符号の付いた10進数です。範囲は-32768から32767です。
+
+@example
+<PR値の16進数表現>: <レジスタ>: <値の10進数表現> = <値の16進数表現> = <値の2進数表現>[ ='文字']
+@end example
+
+@itemize
+@item
+@code{<PR値の16進数表現>}と@code{<値の16進数表現>}は、先頭に@code{#}が付いた4けたの16進数で表されます。範囲は、@code{#0000}から@code{#FFFF}です
+
+@item
+@code{<値の2進数表現>}は、16けたの2進数で表されます。範囲は、@code{0000000000000000}から@code{1111111111111111}です
+
+@item
+@code{[ ='文字']}は、レジストリの値が「文字の組」の範囲に含まれる場合に表示されます。
+@end itemize
+
+表示されるレジスタには、次の種類があります。
+
+@table @code
+@item GR0 GR1 GR2 GR3 GR4 GR5 GR6 GR7
+汎用レジスタ
+
+@item SP
+スタックポインタ
+
+@item PR
+プログラムレジスタ
+
+@item FR
+フラグレジスタ
+@end table
+
+例えば、次のように表示されます。
+
+@example
+#0002: GR1: 3 = #0003 = 0000000000000011
+@end example
+
+@item -T
+@itemx --tracelogical
+@option{-t}と同じように、プログラム実行中のレジスタの値を表示します。ただし、@option{-t}と異なり、@code{<値の10進数表現>}は符号の付かない10進数です。値の範囲は0から65535です。
+
+@item -d
+@itemx --dump
+メモリの内容をすべて表示します。
+
+@item -M <MEMORYSIZE>
+@itemx --memorysize <MEMORYSIZE>
+アセンブルおよび実行時のメモリサイズ@option{<MEMORYSIZE>}を0から65535の範囲で指定します。指定しない場合、512です。
+
+@item -C <CLOCKS>
+@itemx --clocks <CLOCKS>
+実行時のクロック周波数@option{<CLOCKS>}を0より大きい整数で指定します。指定しない場合、クロック周波数は5000000です。
+
+@item -h
+@itemx --help
+@kbd{casl2}の使用方法を表示して終了します。
+@end table
+
+@node comet2
+@section @kbd{comet2}
+
+@pindex comet2
+@cindex comet2
+
+@kbd{comet2}は、引数として指定されたオブジェクトファイルを仮想マシンCOMET II上で実行します。オブジェクトファイルは、@kbd{casl}に@option{-o}または@option{-O}を指定して出力します。
+
+@example
+$ @kbd{comet2 hello.o}
+@end example
+
+引数で指定できるオブジェクトファイルは1つだけです。引数が指定されない場合は、エラーメッセージを表示して終了します。複数の引数を指定した場合、2番目以降の引数は無視されます。
+
+@unnumberedsubsec オプション
+
+@kbd{comet2}は、次のオプションを指定できます。
+
+@table @option
+
+@item -t
+@itemx --trace
+@itemx --tracearithmetic
+プログラム実行中のレジスタの値を次の形式で表示します。@code{<値の10進数表現>}は符号の付いた10進数です。範囲は-32768から32767です。
+
+@example
+<PR値の16進数表現>: <レジスタ>: <値の10進数表現> = <値の16進数表現> = <値の2進数表現>[ ='文字']
+@end example
+
+@itemize
+@item
+@code{<PR値の16進数表現>}と@code{<値の16進数表現>}は、先頭に@code{#}が付いた4けたの16進数で表されます。範囲は、@code{#0000}から@code{#FFFF}です
+
+@item
+@code{<値の2進数表現>}は、16けたの2進数で表されます。範囲は、@code{0000000000000000}から@code{1111111111111111}です
+
+@item
+@code{[ ='文字']}は、レジストリの値が「文字の組」の範囲に含まれる場合に表示されます。
+@end itemize
+
+例えば、次のように表示されます。
+
+@example
+#0002: GR1: 3 = #0003 = 0000000000000011
+@end example
+
+表示されるレジスタには、次の種類があります。
+
+@table @code
+@item GR0 GR1 GR2 GR3 GR4 GR5 GR6 GR7
+汎用レジスタ
+
+@item SP
+スタックポインタ
+
+@item PR
+プログラムレジスタ
+
+@item FR
+フラグレジスタ
+@end table
+
+@item -T
+@itemx --tracelogical
+@option{-t}と同じように、プログラム実行中のレジスタの値を表示します。ただし、@option{-t}と異なり、@code{<値の10進数表現>}は符号の付かない10進数です。値の範囲は0から65535です。
+
+@item -d
+@itemx --dump
+メモリの内容をすべて表示します。
+
+@item -M <MEMORYSIZE>
+@itemx --memorysize <MEMORYSIZE>
+実行時のメモリサイズ@option{<MEMORYSIZE>}を0から65535の範囲で指定します。指定しない場合、512です。
+
+@item -C <CLOCKS>
+@itemx --clocks <CLOCKS>
+実行時のクロック周波数@option{<CLOCKS>}を0より大きい整数で指定します。指定しない場合、5000000です。
+
+@item -h
+@itemx --help
+@kbd{comet2}の使用方法を表示して終了します。
+@end table
+
+@node dumpword
+@section @kbd{dumpword}
+
+@pindex dumpword
+@cindex dumpword
+
+@kbd{dumpword}は、引数として指定された数値を、整数、#0000〜#FFFFの範囲の16進数、2進数で表示します。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。引数は、10進数または先頭に「#」の付いた16進数で指定します。表示される整数は、オプションにより符号付きか符号なしかを指定します。オプションなしの場合は符号付きです。整数の範囲は、符号付きの場合は-32768から32767、符号なしの場合は0から65535です。
+
+@example
+$ @kbd{dumpword 10}
+@end example
+
+引数で指定できる1つだけです。引数が指定されない場合は、使い方を表示して終了します。複数の引数を指定した場合、2番目以降の引数は無視されます。
+
+@unnumberedsubsec オプション
+
+@kbd{dumpword}は、次のオプションを指定できます。
+
+@table @option
+
+@item -a
+@itemx --arithmetic
+出力される整数の範囲を-32,768〜32,767にします。オプションなしの場合と同じです。
+
+@item -l
+@itemx --logical
+出力される整数の範囲を0〜65,535にします。
+
+@item -h
+@itemx --help
+@kbd{dumpword}の使用方法を表示して終了します。
+@end table
+
+@node CASL2LIB Manual,,Command Manual,TOP
+@chapter CASL2LIBマニュアル
+
+@menu
+* ABS::
+* DIVA::
+* DIVL::
+* INL::
+* L2STR::
+* MAX::
+* MINIM::
+* MULA::
+* MULL::
+* OUTA::
+* OUTB::
+* OUTD_Q15::
+* OUTL::
+* REV::
+* STR2L::
+@end menu
+
+@node ABS, DIVA, CASL2LIB Manual, CASL2LIB Manual
+@section @kbd{ABS} - @file{abs.casl}
+GR1を符号付き整数とみなし、絶対値に変換
+
+@unnumberedsubsec 入力
+@table @code
+@item GR1
+符号付き整数
+@end table
+
+@unnumberedsubsec 出力
+@table @code
+@item GR1
+入力された値の絶対値
+
+@item OF
+入力された値が-32768の場合、1
+
+@item SF
+入力された値が負数(-32767から-1)の場合、1
+@end table
+
+@unnumberedsubsec 依存する副プログラム
+なし
+
+@unnumberedsubsec 使用例
+@example
+@verbatiminclude casl2lib/abs/call_abs.casl
+@end example
+
+@example
+$ @kbd{casl2 call_abs.casl $CASL2LIBDIR/abs.casl $CASL2LIBDIR/outa.casl
+ $CASL2LIBDIR/divl.casl $CASL2LIBDIR/rev.casl}
+1
+@end example
+
+@node DIVA, DIVL, ABS, CASL2LIB Manual
+@section @kbd{DIVA} - @file{diva.casl}
+符号付き整数の割算を筆算方式で行う
+
+@unnumberedsubsec 入力
+@table @code
+@item GR1
+被除数
+
+@item GR2
+除数
+@end table
+
+@unnumberedsubsec 出力
+@table @code
+@item GR0
+商
+
+@item GR3
+剰余
+
+@item OF
+次の場合、1
+@itemize
+@item
+GR2が0
+
+@item
+GR1が-32768
+
+@item
+GR2が-32768
+@end itemize
+
+@item SF
+商が負数(-32767から-1)の場合、1
+
+@item ZF
+商が0の場合、1
+@end table
+
+@unnumberedsubsec 依存する副プログラム
+@itemize
+@item @code{DIVL}
+@end itemize
+
+@unnumberedsubsec 使用例
+@example
+@verbatiminclude casl2lib/diva/call_diva.casl
+@end example
+
+@example
+$ @kbd{casl2 call_diva.casl $CASL2LIBDIR/diva.casl $CASL2LIBDIR/divl.casl
+ $CASL2LIBDIR/outa.casl $CASL2LIBDIR/abs.casl $CASL2LIBDIR/rev.casl}
+-128
+-127
+@end example
+
+@node DIVL, INL, DIVA, CASL2LIB Manual
+@section @kbd{DIVL} - @file{divl.casl}
+符号なし整数の割算を筆算方式で行う
+
+@unnumberedsubsec 入力
+@table @code
+@item GR1
+被除数
+
+@item GR2
+除数
+@end table
+
+@unnumberedsubsec 出力
+@table @code
+@item GR0
+商
+
+@item GR3
+剰余
+
+@item OF
+GR2が0の場合、1
+
+@item SF
+商が32768から65535の場合、1
+
+@item ZF
+商が0の場合、1
+@end table
+
+@unnumberedsubsec 依存する副プログラム
+なし
+
+@unnumberedsubsec 使用例
+@example
+@verbatiminclude casl2lib/divl/call_divl.casl
+@end example
+
+@example
+$ @kbd{casl2 call_divl.casl $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl
+ $CASL2LIBDIR/rev.casl}
+256
+254
+@end example
+
+@node INL, L2STR, DIVL, CASL2LIB Manual
+@section @kbd{INL} - @file{inl.casl}
+
+符号なし整数の入力を受け付ける
+
+@unnumberedsubsec 入力
+@table @code
+@item 標準入力
+符号なし整数
+@end table
+
+@unnumberedsubsec 出力
+@table @code
+@item GR1
+入力された符号なし整数
+
+@item GR0
+文字列の長さ。数字以外が入力された場合は@code{#FFFF}
+@end table
+
+@unnumberedsubsec 依存する副プログラム
+@itemize
+@item
+@code{STR2L}
+@end itemize
+
+@unnumberedsubsec 使用例
+@example
+@verbatiminclude casl2lib/divl/call_divl.casl
+@end example
+
+@example
+$ @kbd{casl2 call_divl.casl $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl
+ $CASL2LIBDIR/rev.casl}
+256
+254
+@end example
+
+@node L2STR
+@section @kbd{L2STR} - @file{l2str.casl}
+
+@node MAX
+@section @kbd{MAX} - @file{max.casl}
+
+@node MINIM
+@section @kbd{MINIM} - @file{minim.casl}
+
+@node MULA
+@section @kbd{MULA} - @file{mula.casl}
+
+@node MULL
+@section @kbd{MULL} - @file{mull.casl}
+
+@node OUTA
+@section @kbd{OUTA} - @file{outa.casl}
+
+@node OUTB
+@section @kbd{OUTB} - @file{outb.casl}
+
+@node OUTD_Q15
+@section @kbd{OUTD_Q15} - @file{outd_q15.casl}
+
+@node OUTL
+@section @kbd{OUTL} - @file{outl.casl}
+
+@node REV
+@section @kbd{REV} - @file{rev.casl}
+
+@node STR2L
+@section @kbd{STR2L} - @file{str2l.casl}
+