1 \input texinfo @c -*-texinfo-*-
4 @documentlanguage ja_JP
6 @setfilename yacasl2.info
7 @documentencoding UTF-8
8 @settitle YACASL2 - CASL II 処理システム
9 @firstparagraphindent insert
17 Copyright @copyright{} 2010-2018 j8takagi
20 @dircategory Programming
22 * YACASL2: (yacasl2.info). CASL II 処理システム
23 * casl2: (yacasl2.info)casl2 invocation. casl2の呼び出し
24 * comet2: (yacasl2.info)comet2 invocation. comet2の呼び出し
25 * dumpword: (yacasl2.info)dumpword invocation. dumpwordの呼び出し
30 @subtitle コマンドラインインターフェイスで動作するオープンソースのCASL II処理システム
35 @node Top, Overview, (dir), (dir)
38 * Overview:: YACASL2の概要
39 * Sample usage:: YACASL2の使用例
40 * casl2 invocation:: casl2の呼び出し
41 * comet2 invocation:: comet2の呼び出し
42 * dumpword invocation:: dumpwordの呼び出し
43 * CASL2LIB Manual:: CASL2LIBマニュアル
48 @node Overview, Sample usage, Top, Top
51 YACASL2は、UNIXやLinuxのコマンドラインインターフェイスで
52 動作するオープンソースのCASL II処理システムです。
53 CASL IIは情報処理試験で用いられるアセンブラ言語で、
60 @uref{http://www.jitec.jp/1_13download/shiken_yougo_ver2_2.pdf, 試験で使用する情報処理用語・プログラム言語など Ver 2.2(平成24年5月22日)}[PDFファイル]
67 YACASL2は、CASL IIアセンブラ言語で記述されたファイルをアセンブルし、
69 アセンブルと実行は、連続で行うこともできますし、
70 アセンブル結果をファイルに保存してあとから実行することもできます。
71 YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試験の問題を
72 はじめ各種参考書やサイトに記載されたCASL IIのプログラムを
74 また、本パッケージ中にCASL IIのサンプルプログラムが多数収録されています。
76 YACASL2は、「ふつうの処理系」として動作します。
77 ほかの多くのCASL IIエミュレータと違い、デバッガとして動作したり、
78 コンピュータ内部の模式図を表示したりすることはありません。
79 そのかわり、YACASL2は、次のような動作内容をすべてテキストで出力します。
96 出力された動作内容は、GNU/Linuxのさまざまなコマンド、
97 たとえば、@command{cat}、@command{less}、@command{grep}、@command{wc}などを使って解析できます。
99 YACASL2の操作は、端末上のコマンドラインインターフェイスで行います。
101 @node Sample usage, casl2 invocation, Overview, Top
103 YACASL2 は、テキストファイルに記述されたCASLプログラムを処理します。
104 以下の例で用いられるCASLプログラムのファイルは、
105 テキストエディタなどで作成するか、インストールしたディレクトリの
106 中にある@file{as}ディレクトリからコピーしてください。
109 * Simple output:: 実行結果の出力だけを表示
110 * Assemble result:: アセンブル結果の確認
111 * Register and memory:: 実行時のレジスタとメモリを表示
112 * Only assemble:: アセンブルと実行を別に行う
113 * Analyze word:: 1語の解析
114 * Use CASL2LIB:: CASL2ライブラリの使用
117 @node Simple output, Assemble result, Sample usage, Sample usage
118 @section 実行結果の出力だけを表示
120 インストール時にコマンド実行の確認に使った@file{hello.casl}は、次のような内容です。
121 CASL IIのマクロ命令OUTは、文字列を出力します。
124 $ @kbd{cat hello.casl}
128 OBUF DC 'Hello, World!'
133 次のコマンドを実行すると、CASL II のアセンブルと仮想マシン COMET II 上での実行が連続で行われ、文字列が出力されます。
136 $ @kbd{casl2 hello.casl}
140 @file{addl.casl}は、3と1の和を求めます。
143 $ @kbd{cat addl.casl}
154 このプログラムには出力命令がないため、オプションなしで実行した場合には結果が出力されません。
157 $ @kbd{casl2 addl.casl}
161 実行内容を確認するには、後述のようにCPU 内にあるレジスタやメモリの内容を表示するか、結果を出力するための処理を追加する必要があります。
163 @node Assemble result, Register and memory, Simple output, Sample usage
166 casl2の処理途中で行われるアセンブルの結果を表示するには、オプション@option{-a}を指定します。
167 また、ラベルとアドレスの対応表を表示するには、オプション@option{-l}を指定します。
169 次のコマンドでは@file{hello.casl}の、ラベルとアドレスの対応表と、アセンブル結果と、実行結果が表示されます。
170 OUTはアセンブラ命令で複数の機械語命令で構成されているため、命令行1行に対して、複数行のコードが生成されます。
173 $ @kbd{casl2 -a -l hello.casl}
175 Assemble hello.casl (0)
182 Assemble hello.casl (1)
183 hello.casl: 1:MAIN START
184 hello.casl: 2: OUT OBUF,LEN
207 hello.casl: 4:OBUF DC 'Hello, World!'
221 hello.casl: 5:LEN DC 13
227 @file{addl.casl}の、ラベルとアドレスの対応表と、アセンブル結果は、次のようになります。
230 $ @kbd{casl2 -a -l addl.casl}
232 Assemble addl.casl (0)
239 Assemble addl.casl (1)
240 addl.casl: 1:;;; ADDL r,adr
241 addl.casl: 2:MAIN START
242 addl.casl: 3: LD GR1,A
245 addl.casl: 4: ADDL GR1,B
257 なお、オプション@option{-A}を指定すると、アセンブル結果が表示される時点で処理が終了します。
258 仮想マシンCOMET II での実行は行われません。
260 @node Register and memory, Only assemble, Assemble result, Sample usage
261 @section 実行時のレジスタとメモリを表示
263 YACASL2では実行中のCPUのレジスタとメモリの内容をそれぞれ、@option{-t}と@option{-d}を指定することで表示できます。
265 また、@option{-M}で、仮想マシンCOMET II のメモリ容量を語(16 ビット)単位で指定できます。
266 小さいプログラムを実行するときは、メモリ容量を小さくすれば結果が見やすくなります。
269 * Register specify:: 特定のレジスタを表示
271 * Step count:: プログラムのステップ数を表示
274 @file{addl.casl}に必要なメモリ容量は8語のため、次のようにCPUのレジスタとメモリの内容を表示できます。
277 $ @kbd{casl2 -t -d -M8 addl.casl | less}
279 Assemble addl.casl (0)
281 Assemble addl.casl (1)
283 Executing machine codes
285 #0000: GR0: 0 = #0000 = 0000000000000000
286 #0000: GR1: 0 = #0000 = 0000000000000000
287 #0000: GR2: 0 = #0000 = 0000000000000000
288 #0000: GR3: 0 = #0000 = 0000000000000000
289 #0000: GR4: 0 = #0000 = 0000000000000000
290 #0000: GR5: 0 = #0000 = 0000000000000000
291 #0000: GR6: 0 = #0000 = 0000000000000000
292 #0000: GR7: 0 = #0000 = 0000000000000000
293 #0000: SP: 8 = #0008 = 0000000000001000
294 #0000: PR: 0 = #0000 = 0000000000000000
295 #0000: FR (OF SF ZF): 000
297 #0000: adr : 0000 0001 0002 0003 0004 0005 0006 0007
298 #0000: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
300 #0002: GR0: 0 = #0000 = 0000000000000000
301 #0002: GR1: 3 = #0003 = 0000000000000011
302 #0002: GR2: 0 = #0000 = 0000000000000000
303 #0002: GR3: 0 = #0000 = 0000000000000000
304 #0002: GR4: 0 = #0000 = 0000000000000000
305 #0002: GR5: 0 = #0000 = 0000000000000000
306 #0002: GR6: 0 = #0000 = 0000000000000000
307 #0002: GR7: 0 = #0000 = 0000000000000000
308 #0002: SP: 8 = #0008 = 0000000000001000
309 #0002: PR: 2 = #0002 = 0000000000000010
310 #0002: FR (OF SF ZF): 000
312 #0002: adr : 0000 0001 0002 0003 0004 0005 0006 0007
313 #0002: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
315 #0004: GR0: 0 = #0000 = 0000000000000000
316 #0004: GR1: 4 = #0004 = 0000000000000100
317 #0004: GR2: 0 = #0000 = 0000000000000000
318 #0004: GR3: 0 = #0000 = 0000000000000000
319 #0004: GR4: 0 = #0000 = 0000000000000000
320 #0004: GR5: 0 = #0000 = 0000000000000000
321 #0004: GR6: 0 = #0000 = 0000000000000000
322 #0004: GR7: 0 = #0000 = 0000000000000000
323 #0004: SP: 8 = #0008 = 0000000000001000
324 #0004: PR: 4 = #0004 = 0000000000000100
325 #0004: FR (OF SF ZF): 000
327 #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007
328 #0004: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
331 @node Register specify, End value, Register and memory, Register and memory
332 @subsection 特定のレジスタを表示
334 @file{addl.casl}のレジスタやメモリの中で、実行中に値が変化しているのはGR1だけです。
335 こうした場合は、@command{grep}を使って表示される内容を絞り込むことで動作を検証しやすくなります。
338 $ @kbd{casl2 -t addl.casl | grep 'GR1:'}
339 #0000: GR1: 0 = #0000 = 0000000000000000
340 #0002: GR1: 3 = #0003 = 0000000000000011
341 #0004: GR1: 4 = #0004 = 0000000000000100
344 この内容を、先に出力したアセンブル結果と引き比べてください。
345 次の表のように、PRとGR1、命令行が対応していることがわかります。
347 @multitable @columnfractions .3 .3 .4
348 @item PR @tab GR1 @tab 命令行
356 @tab @code{ADDL GR1,B}
359 @node End value, Step count, Register specify, Register and memory
360 @subsection プログラム終了時の値を表示
362 @command{grep}と@command{tail}を組み合わせれば、プログラム終了時の値を表示できます。
364 @file{addl.casl}でプログラム終了時の値を確認するには、次のようにします。
367 $ @kbd{casl2 -t addl.casl | grep 'GR1:' | tail -1}
368 #0004: GR1: 4 = #0004 = 0000000000000100
371 @file{sum_10.casl}は、1から10までの整数の和を求めます。
374 $ @kbd{cat sum_10.casl}
376 ;;; 出力 GR0: 1から10までの整数をすべて加算した値
380 LD GR1,FST ; GR1に初項を転送
381 LOOP ADDL GR0,GR1 ; ループ先頭
382 ADDL GR1,STEP ; GR1 <- GR1 + 公差
383 CPL GR1,LST ; GR1が末項より大きい場合は終了
394 @file{sum_10.casl}でファイル終了時の値を確認するには、次のようにします。
397 $ @kbd{casl2 -t sum_10.casl | grep 'GR0:' | tail -1}
398 #0010: GR0: 55 = #0037 = 0000000000110111 = '7'
401 @node Step count, , End value, Register and memory
402 @subsection プログラムのステップ数を表示
404 @command{grep}と@command{wc}を組み合わせれば、プログラムのステップ数を表示できます。
407 $ @kbd{casl2 -t hello.casl | grep 'GR1:' | wc -l}
412 $ @kbd{casl2 -t addl.casl | grep 'GR1:' | wc -l}
416 @file{sum_10.casl}はプログラム内にループがあるため、ステップ数が大きくなります。
419 $ @kbd{casl2 -t sum_10.casl | grep 'GR0:' | wc -l}
423 @node Only assemble, Analyze word, Register and memory, Sample usage
424 @section アセンブルと実行を別に行う
426 @command{casl2}に@option{-O}@file{ファイル名}を指定すると、オブジェクトファイルを作成できます。
429 $ @kbd{casl2 -Ohello.o hello.casl}
432 作成されたオブジェクトファイルの内容は、@command{od}を使って確認できます。
433 テキストファイルではないため、@command{cat}などでは確認できません。
436 $ @kbd{od -t x2 hello.o}
437 0000000 7001 0000 7002 0000 1210 0013 1220 0020
438 0000020 f000 0002 1210 0021 1220 0022 f000 0002
439 0000040 7120 7110 8100 0048 0065 006c 006c 006f
440 0000060 002c 0020 0057 006f 0072 006c 0064 0021
441 0000100 000d 000a 0001
445 オブジェクトファイルの実行には、@command{comet2}を使います。
448 $ @kbd{comet2 hello.o}
452 @node Analyze word, Use CASL2LIB, Only assemble, Sample usage
455 CASL IIでは、1語(1 word、16ビット)を単位としてデータが処理されます。
456 @command{dumpword}は、指定した1語を10進数、16進数、2進数で表示します。
460 72: 72 = #0048 = 0000000001001000 = 'H'
463 @node Use CASL2LIB, , Analyze word, Sample usage
464 @section CASL2ライブラリの使用
466 YACASL2の@file{as/casl2lib}ディレクトリには、CASL IIで記述されたライブラリファイルが格納されています。
468 このフォルダには、たとえば次のようなプログラムが含まれています。
473 GR1に格納された値を、0以上65535以下の整数として出力します。
477 GR1に格納された値を、-32767以上32767以下の整数として出力します。
481 GR1とGR2に格納された値を0以上65535以下の整数と見なし、積をGR3に格納します。
485 GR1とGR2に格納された値を0以上65535以下の整数と見なし、商をGR3、剰余をGR0に格納します。
490 3と1の和を求める@file{addl.casl}で演算結果を出力するには、まず@file{addl.casl}を編集します。
491 CASL IIの@command{CALL}命令で@command{OUTL}を副プログラムとして呼び出します。
494 $ @kbd{cat addl_outl.casl}
505 変更したら@command{casl2}を、複数のファイルを指定して実行します。
508 $ @kbd{casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl}
512 @node casl2 invocation, comet2 invocation, Sample usage, Top
513 @chapter @command{casl2}の呼び出し
522 @command{casl2}は、引数として指定されたCASLファイルをアセンブルし、仮想マシンCOMET II上で実行します。
523 CASLファイルは、アセンブラ言語CASL IIで記述されたテキストファイルです。
524 引数が指定されない場合は、エラーメッセージを表示して終了します。
527 $ @kbd{casl2 hello.casl}
530 複数のCASLファイルを指定することで、副プログラムを呼び出すこともできます。
533 $ @kbd{casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl}
538 @command{casl2}は、次のオプションを指定できます。
551 <プログラム名>.<ラベル名> ---> <アドレスの16進数表現>
556 @option{-l}と同じ形式でラベルの一覧を表示します。
557 表示後、ほかの作業は続行せず、終了します。
560 @itemx --assembledetail
561 アセンブル詳細結果を表示し、ほかの作業を続行します。
564 @itemx --assembledetailonly
568 @itemx --assembleout<OBJECTFILE>
569 アセンブル結果をオブジェクトファイル@file{<OBJECTFILE>}に出力し、ほかの作業を続行します。
570 出力されたオブジェクトファイルは、@command{comet2}で実行できます。
571 オブジェクトファイルを指定しない場合、出力先は@file{a.o}です。
572 オブジェクトファイルは1つだけ指定できます。
574 @item -O[<OBJECTFILE>]
575 @itemx --assembleoutonly[<OBJECTFILE>]
576 アセンブル結果をオブジェクトファイル@file{<OBJECTFILE>}に出力し、終了します。
577 出力されたオブジェクトファイルは、@command{comet2}で実行できます。
578 オブジェクトファイルを指定しない場合、出力先は@file{a.o}です。
579 オブジェクトファイルは1つだけ指定できます。
583 @itemx --tracearithmetic
584 プログラム実行中のレジスタの値を次の形式で表示します。
587 <PR値の16進数表現>: <レジスタ>: <値の10進数表現> =
588 <値の16進数表現> = <値の2進数表現>[ ='文字']
593 @code{<PR値の16進数表現>}と@code{<レジスタ>}、@code{<値の16進数表現>}は、4けたの16進数で表されます。
594 @code{<PR値の16進数表現>}と@code{<値の16進数表現>}には、先頭に@code{#}が付きます。
595 範囲は@code{#0000}から@code{#FFFF}です
598 @code{<値の10進数表現>}は符号の付いた10進数です。
602 @code{<値の2進数表現>}は、16けたの2進数で表されます。
603 範囲は、@code{0000000000000000}から@code{1111111111111111}です
606 @code{[ ='文字']}は、レジストリの値が「文字の組」の範囲に含まれる場合に表示されます。
609 表示されるレジスタには、次の種類があります。
612 @item GR0 GR1 GR2 GR3 GR4 GR5 GR6 GR7
628 #0002: GR1: 3 = #0003 = 0000000000000011
632 @itemx --tracelogical
633 @option{-t}と同じように、プログラム実行中のレジスタの値を表示します。
634 ただし@option{-t}と異なり、@code{<値の10進数表現>}は符号の付かない10進数です。
641 @item -M <MEMORYSIZE>
642 @itemx --memorysize <MEMORYSIZE>
643 アセンブルおよび実行時のメモリサイズ@option{<MEMORYSIZE>}を0から65535の範囲で指定します。
647 @itemx --clocks <CLOCKS>
648 実行時のクロック周波数@option{<CLOCKS>}を0より大きい整数で指定します。
649 指定しない場合、クロック周波数は5000000です。
653 @command{casl2}のバージョンを表示して終了します。
657 @command{casl2}の使用方法を表示して終了します。
660 @node comet2 invocation, dumpword invocation, casl2 invocation, Top
661 @chapter @command{comet2}の呼び出し
670 @command{comet2}は、引数として指定されたオブジェクトファイルを仮想マシンCOMET II上で実行します。
671 オブジェクトファイルは、@command{casl}に@option{-o}または@option{-O}を指定して出力します。
674 $ @kbd{comet2 hello.o}
677 引数で指定できるオブジェクトファイルは1つだけです。
678 引数が指定されない場合は、エラーメッセージを表示して終了します。
679 複数の引数を指定した場合、2番目以降の引数は無視されます。
683 @command{comet2}は、次のオプションを指定できます。
689 @itemx --tracearithmetic
690 プログラム実行中のレジスタの値を次の形式で表示します。
691 @code{<値の10進数表現>}は符号の付いた10進数です。
695 <PR値の16進数表現>: <レジスタ>: <値の10進数表現> = <値の16進数表現> = <値の2進数表現>[ ='文字']
700 @code{<PR値の16進数表現>}と@code{<値の16進数表現>}は、先頭に@code{#}が付いた4けたの16進数で表されます。
701 範囲は、@code{#0000}から@code{#FFFF}です
704 @code{<値の2進数表現>}は、16けたの2進数で表されます。
705 範囲は、@code{0000000000000000}から@code{1111111111111111}です
708 @code{[ ='文字']}は、レジストリの値が「文字の組」の範囲に含まれる場合に表示されます。
714 #0002: GR1: 3 = #0003 = 0000000000000011
717 表示されるレジスタには、次の種類があります。
720 @item GR0 GR1 GR2 GR3 GR4 GR5 GR6 GR7
734 @itemx --tracelogical
735 @option{-t}と同じように、プログラム実行中のレジスタの値を表示します。
736 ただし、@option{-t}と異なり、@code{<値の10進数表現>}は符号の付かない10進数です。
743 @item -M <MEMORYSIZE>
744 @itemx --memorysize <MEMORYSIZE>
745 実行時のメモリサイズ@option{<MEMORYSIZE>}を0から65535の範囲で指定します。
749 @itemx --clocks <CLOCKS>
750 実行時のクロック周波数@option{<CLOCKS>}を0より大きい整数で指定します。
755 @command{comet2}のバージョンを表示して終了します。
759 @command{comet2}の使用方法を表示して終了します。
762 @node dumpword invocation, CASL2LIB Manual, comet2 invocation, Top
763 @chapter @command{dumpword}の呼び出し
772 @command{dumpword}は引数として指定された数値を、整数、#0000から#FFFFまでの範囲の16進数、2進数で表示します。
773 文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。
774 引数は、10進数または先頭に「#」の付いた16進数で指定します。
775 表示される整数は、オプションにより符号付きか符号なしかを指定します。
777 整数の範囲は、符号付きの場合は-32768以上32767以下、符号なしの場合は0以上65535以下です。
781 10: 10 = #000A = 0000000000001010 = '\n'
784 引数が指定されない場合は、使い方を表示して終了します。
785 複数の引数を指定した場合、1つ目の引数だけが表示され、2つ目以降の引数は無視されます。
789 マイナスの数や16進数はシェルの仕様により、そのままでは指定できません。
791 マイナスの数を指定するときは、次のように@option{--}を付けます。
794 $ @kbd{dumpword -- -72}
795 -72: -72 = #FFB8 = 1111111110111000
798 先頭に「#」を付けて16進数を指定するときは、次のように「'」で囲みます。
801 $ @kbd{dumpword '#0048'}
802 #0048: 72 = #0048 = 0000000001001000 = 'H'
805 @unnumberedsubsec オプション
807 @command{dumpword}は、次のオプションを指定できます。
813 出力される整数の範囲を-32,768以上32,767以下にします。
818 出力される整数の範囲を0以上65,535以下にします。
822 @command{dumpword}のバージョンを表示して終了します。
826 @command{dumpword}の使用方法を表示して終了します。
829 @node CASL2LIB Manual, , dumpword invocation, Top
830 @chapter CASL2LIBマニュアル
833 * ABS:: @kbd{ABS} - @file{abs.casl}
834 * DIVA:: @kbd{DIVA} - @file{diva.casl}
835 * DIVL:: @kbd{DIVL} - @file{divl.casl}
836 * INL:: @kbd{INL} - @file{inl.casl}
837 * L2STR:: @kbd{L2STR} - @file{l2str.casl}
838 * MAX:: @kbd{MAX} - @file{max.casl}
839 * MINIM:: @kbd{MINIM} - @file{minim.casl}
840 * MULA:: @kbd{MULA} - @file{mula.casl}
841 * MULL:: @kbd{MULL} - @file{mull.casl}
842 * OUTA:: @kbd{OUTA} - @file{outa.casl}
843 * OUTB:: @kbd{OUTB} - @file{outb.casl}
844 * OUTD_Q15:: @kbd{OUTD_Q15} - @file{outd_q15.casl}
845 * OUTL:: @kbd{OUTL} - @file{outl.casl}
846 * REV:: @kbd{REV} - @file{rev.casl}
847 * STR2L:: @kbd{STR2L} - @file{str2l.casl}
850 @node ABS, DIVA, CASL2LIB Manual, CASL2LIB Manual
851 @section @kbd{ABS} - @file{abs.casl}
852 GR1を符号付き整数とみなし、絶対値に変換
869 入力された値が負数(-32767から-1)の場合、1
872 @unnumberedsubsec 依存する副プログラム
875 @unnumberedsubsec 使用例
877 @verbatiminclude casl2lib/abs/call_abs.casl
881 $ @kbd{casl2 call_abs.casl $CASL2LIB/abs.casl $CASL2LIB/outa.casl \
882 $CASL2LIB/divl.casl $CASL2LIB/rev.casl}
886 @node DIVA, DIVL, ABS, CASL2LIB Manual
887 @section @kbd{DIVA} - @file{diva.casl}
921 商が負数(-32767から-1)の場合、1
927 @unnumberedsubsec 依存する副プログラム
932 @unnumberedsubsec 使用例
934 @verbatiminclude casl2lib/diva/call_diva.casl
938 $ @kbd{casl2 call_diva.casl $CASL2LIB/diva.casl $CASL2LIB/divl.casl \
939 $CASL2LIB/outa.casl $CASL2LIB/abs.casl $CASL2LIB/rev.casl}
944 @node DIVL, INL, DIVA, CASL2LIB Manual
945 @section @kbd{DIVL} - @file{divl.casl}
975 @unnumberedsubsec 依存する副プログラム
978 @unnumberedsubsec 使用例
980 @verbatiminclude casl2lib/divl/call_divl.casl
984 $ @kbd{casl2 call_divl.casl $CASL2LIB/divl.casl $CASL2LIB/outl.casl \
990 @node INL, L2STR, DIVL, CASL2LIB Manual
991 @section @kbd{INL} - @file{inl.casl}
1001 @unnumberedsubsec 出力
1008 数字以外が入力された場合は@code{#FFFF}
1011 @unnumberedsubsec 依存する副プログラム
1017 @unnumberedsubsec 使用例
1018 次のコマンドを実行すると、数値の入力が受け付けられ、入力された数値が表示される。
1021 @verbatiminclude casl2lib/inl/call_inl.casl
1025 $ @kbd{casl2 -M1024 call_inl.casl $CASL2LIB/inl.casl $CASL2LIB/str2l.casl $CASL2LIB/mull.casl \
1026 $CASL2LIB/outl.casl $CASL2LIB/divl.casl $CASL2LIB/rev.casl}
1029 @node L2STR, MAX, INL, CASL2LIB Manual
1030 @section @kbd{L2STR} - @file{l2str.casl}
1034 @unnumberedsubsec 入力
1043 @unnumberedsubsec 出力
1049 @unnumberedsubsec 依存する副プログラム
1055 @node MAX, MINIM, L2STR, CASL2LIB Manual
1056 @section @kbd{MAX} - @file{max.casl}
1058 連続した複数のWORDを符号付き整数とみなして最大値を返す
1060 @unnumberedsubsec 入力
1069 @unnumberedsubsec 出力
1075 @unnumberedsubsec 依存する副プログラム
1078 @node MINIM, MULA, MAX, CASL2LIB Manual
1079 @section @kbd{MINIM} - @file{minim.casl}
1081 連続した複数のWORDを符号付き整数とみなして最小値を返す
1083 @unnumberedsubsec 入力
1092 @unnumberedsubsec 出力
1098 @unnumberedsubsec 依存する副プログラム
1101 @node MULA, MULL, MINIM, CASL2LIB Manual
1102 @section @kbd{MULA} - @file{mula.casl}
1104 @node MULL, OUTA, MULA, CASL2LIB Manual
1105 @section @kbd{MULL} - @file{mull.casl}
1107 @node OUTA, OUTB, MULL, CASL2LIB Manual
1108 @section @kbd{OUTA} - @file{outa.casl}
1110 @node OUTB, OUTD_Q15, OUTA, CASL2LIB Manual
1111 @section @kbd{OUTB} - @file{outb.casl}
1113 @node OUTD_Q15, OUTL, OUTB, CASL2LIB Manual
1114 @section @kbd{OUTD_Q15} - @file{outd_q15.casl}
1116 @node OUTL, REV, OUTD_Q15, CASL2LIB Manual
1117 @section @kbd{OUTL} - @file{outl.casl}
1119 @node REV, STR2L, OUTL, CASL2LIB Manual
1120 @section @kbd{REV} - @file{rev.casl}
1122 @node STR2L, , REV, CASL2LIB Manual
1123 @section @kbd{STR2L} - @file{str2l.casl}