annotate TL1/tl1.html @ 161:91447c3ccd58

fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 12 Feb 2019 09:16:24 +0900
parents 188111be26b4
children 7dd634f92ffd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 <html xmlns='http://www.w3.org/1999/xhtml'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 <head>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 <title>TL/1 言語仕様</title>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 <link rel='stylesheet' type='text/css' href='tl1.css' />
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 </head>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 <body>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 <h1>TL/1 言語仕様</h1>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 <h2>概要</h2>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 <p>この文章はプログラミング言語 TL/1 の言語仕様のまとめです。 雑誌やウェブ上にある説明などを元にして私の解釈や曖昧箇所の指摘を加えて仕様の体裁に再構成したものです。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 <p>説明のために元資料にない用語を使う場合もあります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 <p>この文章中で「未定義」としている箇所は、元資料から判断がつかないことを陽に示したものです。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 <p><a href="tl1-syntax-diagram.xhtml">構文図</a>も用意していますが、識別子の解釈に独特な部分があるので文章の方を先に読んでから構文図を参考にした方がよいでしょう。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 <h2>字句</h2>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 <h3>コメント</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 <p>パーセント記号 (%) から次の改行までは無視され、プログラム的には空白文字と同等の意味しか持ちません。 プログラムの説明などを記述するのに使ってください。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 <h3 id='identifier'>識別子</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 <p>英文字で始まり、後続する英数字 0 個以上で構成されます。 識別子を構成しない文字 (空白や記号) の直前までを 1 個の語として解釈します。 大文字と小文字は区別しません。 識別子の長さに上限はありません。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 <p>予約語、手続き名、関数名、大域単変数名、大域配列名、小域単変数名、小域配列名が同じ綴りを持つ可能性があります。 宣言時に既存の名前と重複しないかチェックされません。 宣言以外の箇所では処理系は以下の順序で名前の検索を試み、最初に発見された属性の識別子として解釈します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 <ol>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 <li>小域配列名</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 <li>小域単変数名</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 <li>大域配列名</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 <li>大域単変数名</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 <li>関数名</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 <li>手続き名</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 <li>予約語</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 </ol>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 <h3 id='number'>数値</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 <p>4 種類の表現方法があります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 <p>TL/1 で直接的に扱える数値はバイトサイズであり、ゆえにプログラム中で現れる数値表現は常に 0〜255 の範囲内です。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 <p>構文中で真偽値を要求している箇所においては 255 を真、それ以外の値は偽と解釈します。 真偽値を返す関数は真として 255 を、偽として 0 を返します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 <h4>十進定数</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 <p>0〜9 の文字を 1 つ以上並べて 0〜255 の範囲を数を表現できます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 <p>頭に余計な 0 を付けた場合 (例えば 02 のような) の挙動は未定義です。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 <h4>十六進定数</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 <p>記号 $ に 0〜9 または a〜f で十六進表現で 0〜255 を表します。a〜f は大文字 (A〜F) を使っても同じ意味です。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 <p>記号 $ の後に空白文字を入れてはいけません。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 <p>十六進で二桁にするために余計な 0 を頭に付けること (例えば $0A のような) は許されますが、それよりも多くの 0 を頭に付けた場合 (例えば $002) の挙動は未定義です。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 <h4>文字リテラル定数</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 <p>クオートで挟まれた一文字で表現します。 その一文字のアスキーコードと同じ数値が書かれたものと見做されます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 <pre class='example'>'A' % 65 と書いたのと同じ意味</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 <h4>論理定数</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 <p>識別子 <span class='reserved'>TRUE</span> もしくは <span class='reserved'>FALSE</span> で表します。 <span class='reserved'>TRUE</span> は $FF 、 <span class='reserved'>FALSE</span> は 0 と同じです。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 <h3>記号</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 <p>その他、演算子や構文には記号を用いますが、後述する構文の説明の中で取り上げます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 <h3>空白文字</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 <p>語の間に挿入することが出来ます。 語の区切りとしては 1 個あれば充分ですが、何個連続しても意味は変わりませんので外観を整えるために活用して下さい。 空白文字と解釈する文字は以下の通りです。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 <ul>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 <li>文字コード $1F 以下の文字 (制御文字)</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 <li>空白</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 <li>ピリオド (.)</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 <li>セミコロン (;)</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 </ul>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 <p>使い方に習慣的な意味がある場合もあり、それについては後述します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 <h2>プログラムの構成</h2>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 <p>プログラムは以下の順序で構成されます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 <ol>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 <li>手続き名宣言</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 <li>関数名宣言</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 <li>大域単変数名宣言</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 <li>大域配列名・配列の大きさ宣言</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 <li>主プログラムの定義</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 <li>手続き、または関数の定義群</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 </ol>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 <p>それぞれの内容は以下のようになります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 <h3>手続き名宣言</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 <p>プログラム中で使用する手続き名を予約語 <span class='reserved'>PROC</span> に続けて書きます。 手続き名が複数の場合はカンマで区切ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 <span class='reserved'>PROC</span> <span class='metavar'>手続き1</span> , <span class='metavar'>手続き2</span> , <span class='metavar'>手続き3</span> ...
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 <p>手続きが 0 個の場合は宣言を省略します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 <h3>関数名宣言</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 <p>プログラム中で使用する関数名を予約語 <span class='reserved'>FUNC</span> に続けて書きます。 関数名が複数の場合はカンマで区切ります。 </p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 <span class='reserved'>FUNC</span> <span class='metavar'>関数1</span> , <span class='metavar'>関数2</span> , <span class='metavar'>関数3</span> ...
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 <p>関数を 0 個の場合は宣言を省略します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 <h3>大域単変数名宣言</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 <p>プログラム全体で使用する単変数名を予約語 <span class='reserved'>VAR</span> に続けて書きます。 大域単変数名が複数の場合はカンマで区切ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 <span class='reserved'>VAR</span> <span class='metavar'>単変数1</span> , <span class='metavar'>単変数2</span> , <span class='metavar'>単変数3</span> ...
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 <p>大域単変数が 0 個の場合は宣言を省略します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 <p>後述の大域配列と合計して 256 バイト以内である必要があります。 更に<a href='#subprogram'>副プログラム</a>を呼出す場合は 2 バイトの余地が必要 (大域単変数と大域配列を合計した大きさが 254 バイト以下になる必要がある) です。 </p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 <h3>大域配列名・配列の大きさ宣言</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 <p>プログラム全体で使用する配列名とその大きさを予約語 <span class='reserved'>ARRAY</span> に続けて書きます。 配列の大きさは配列名の後に角括弧で囲んだ数値で表します。 配列名が複数の場合はカンマで区切ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 <span class='reserved'>ARRAY</span> <span class='metavar'>配列1</span> [ <span class='metavar'>配列1の大きさ</span> ] ,
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 <span class='metavar'>配列2</span> [ <span class='metavar'>配列2の大きさ</span> ] ,
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 <span class='metavar'>配列3</span> [ <span class='metavar'>配列3の大きさ</span> ] ...
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 <p>配列の大きさは配列の添字の最大値です。 例えば A[10] と宣言した配列に対しては 0〜10 の添字で安全に参照できることを意味します。 C などのように配列の要素数ではないことに注意してください。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 <h3>主プログラムの定義</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 <p>予約語 <span class='reserved'>BEGIN</span> と <span class='reserved'>END</span> で狭んだ 0 個以上の<a href='#statement'>実行文</a>から成ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 <h3 id='subprogram'>副プログラムの定義</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 <p>副プログラムとは手続きか関数です。 以下のような順序で構成されます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 <ol>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 <li>副プログラム名</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 <li>仮引数リスト</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 <li>小域単変数名宣言</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 <li>小域配列名・配列の大きさ宣言</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 <li>予約語 <span class='reserved'>BEGIN</span></li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 <li>0 個以上の実行文</li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 <li>予約語 <span class='reserved'>END</span></li>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 </ol>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 <p>これが副プログラムの個数分だけ繰返されます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 <p>副プログラムの定義は宣言の順序と一致しなくてもかまいません。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 <h4>副プログラム名</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 <p>プログラムの最初の手続き名宣言か関数名宣言で宣言した名前です。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 <h4>仮引数リスト</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 <p>丸括弧で囲まれた複数の識別子です。 識別子が複数の場合はカンマで区切ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 ( <span class='metavar'>仮引数1</span> , <span class='metavar'>仮引数2</span> , <span class='metavar'>仮引数3</span> ...)
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 <p>仮引数はいわゆる値渡しのみです。 呼出し時の実引数で初期化される点が異なるだけの小域単変数です。 (暗黙の小域単変数宣言)</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 <p>仮引数が 0 個の場合は丸括弧ごと省略することも出来ます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 <h4>小域単変数名宣言</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 <p>当該の副プログラム内だけで参照可能な単変数を宣言します。 形式は大域単変数と同じです。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 <p>小域単変数が 0 個の場合は宣言を省略します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 <p>大域単変数・大域配列と同様に、小域単変数と小域配列を合せた大きさが 256 バイト以下である必要があります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 <h4>小域配列名宣言</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 <p>当該の副プログラム内だけで参照可能な配列を宣言します。 形式は大域配列と同じです。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 <h2 id='statement'>実行文</h2>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 <h3>複文</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 <p>文括弧で 0 個以上の実行文を囲うことで 1 個の実行文にまとめることが出来ます。</p
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 >
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 <pre class='form'><span class='reserved'>BEGIN</span> <span class='metavar'>実行文リスト</span> <span class='reserved'>END</span></pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 <pre class='form'>{ <span class='metavar'>実行文リスト</span> }</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 <pre class='form'>[ <span class='metavar'>実行文リスト</span> ]</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 <pre class='form'>( <span class='metavar'>実行文リスト</span> )</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 <p>まとめられた文は複文と呼ばれ、あたかもひとつの実行文であるかのように振舞いますので、以降の説明で実行文が現れることが出来る箇所のどこにでも現れることが出来ます。 囲まれた実行文が 0 個の複文は空文と呼びます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 <p>どの括弧記号を使っても同じ意味ですが、必ず対応する閉じ括弧で閉じる必要があります。 例えば「{」で始めて「]」で閉じるような使い方は出来ません。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 <p>複文中のそれぞれの実行文を区切るために、空白文字として無視されるセミコロン (;) を書く習慣があります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 <p>主プログラム、副プログラムの本文も複文の一種ではありますが、上記で示した通り <span class='reserved'>BEGIN</span> と <span class='reserved'>END</span> で挟む必要があり、他の括弧は使えません。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 <h3>STOP</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 <p>実行を停止してモニタに飛びます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 <p>主プログラムの最後には自動的に挿入されるので書かなくてもよいですが、主プログラム/副プログラムの任意の場所に書けます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 <h3>RETURN</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 <p>手続き、または関数から復帰します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 <span class='reserved'>RETURN</span>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 <span class='reserved'>RETURN</span> <span class='metavar'>式</span>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 <p>手続きから復帰する場合には式を持たない書式で、関数から復帰する場合は 1 個の式が続く書式で書きます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 <p>手続きの最後には自動的に挿入されるので書かなくてもよいですが、手続き中のどこででも使用することが出来ます。 (一部の処理系では <span class='reserved'>FOR</span> ループ内で使ってはいけません。)</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 <p>関数の定義内では必ず 1 つ以上使う必要があります。 (コンパイル時にチェックされないことに注意してください。 また、 <span class='reserved'>FOR</span> ループ内で使ってはいけません。)</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 <p>関数内で <span class='reserved'>RETURN</span> 文を通過せずに終端 (関数の定義の終りを表す <span class='reserved'>END</span>) に行き当たった場合の挙動は未定義です。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 <h3>FOR</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 <p>単変数の値を変化させながら繰返しする処理を表します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 <span class='reserved'>FOR</span> <span class='metavar'>単変数</span> := <span class='metavar'>式</span> <span class='reserved'>TO</span> <span class='metavar'>式</span> <span class='reserved'>DO</span> <span class='metavar'>実行文</span>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 <span class='reserved'>FOR</span> <span class='metavar'>単変数</span> := <span class='metavar'>式1</span> <span class='reserved'>DOWNTO</span> <span class='metavar'>式2</span> <span class='reserved'>DO</span> <span class='metavar'>実行文</span></pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 <p>カウント用の <span class='metavar'>単変数</span> に式の値を代入し、 <span class='metavar'>単変数</span> を 1 ずつ増加または減少させながら実行文を繰返します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 <p><span class='metavar'>単変数</span> の増分は、 <span class='reserved'>TO</span> を用いたとき +1 、 <span class='reserved'>DOWNTO</span> を用いたときは -1 です。 (一部の処理系では <span class='reserved'>DOWNTO</span> を使えません。)</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 <h3>REPEAT</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 <pre class='form'><span class='reserved'>REPEAT</span> <span class='metavar'>文リスト</span> <span class='reserved'>UNTIL</span> <span class='metavar'>式</span></pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 <p><span class='metavar'>式</span> の値が真値になるまで <span class='metavar'>文リスト</span> を繰返し実行します。 <span class='metavar'>文リスト</span> は 0 個以上の実行文を並べたものです。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 <h3>WHILE</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 <pre class='form'><span class='reserved'>WHILE</span> <span class='metavar'>式</span> <span class='reserved'>DO</span> <span class='metavar'>実行文</span></pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 <p><span class='metavar'>式</span> の値が偽ならば <span class='metavar'>実行文</span> を実行せずに次の処理へ移ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 <p>式の値が真の場合は <span class='metavar'>実行文</span> を実行して再び <span class='metavar'>式</span> の評価に戻ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 <h3>IF</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 <pre class='form'><span class='reserved'>IF</span> <span class='metavar'>式</span> <span class='reserved'>THEN</span> <span class='metavar'>実行文1</span></pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 <pre class='form'><span class='reserved'>IF</span> <span class='metavar'>式</span> <span class='reserved'>THEN</span> <span class='metavar'>実行文1</span> <span class='reserved'>ELSE</span> <span class='metavar'>実行文2</span></pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 <p><span class='metavar'>式</span> の値が真なら <span class='metavar'>実行文1</span>を実行します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195 <p><span class='metavar'>式</span> の値が偽であり <span class='reserved'>ELSE</span> 節が省略されていないならば <span class='metavar'>実行文2</span> を実行します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 <p>式の値が偽であり <span class='reserved'>ELSE</span> 節が省略されているならば何もせずに次の処理へ移ります。 (一部の処理系では <span class='reserved'>ELSE</span> 節は使えません。)</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 <h3>CASE</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 <span class='reserved'>CASE</span> <span class='metavar'>式0</span> <span class='reserved'>OF</span>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202 <span class='metavar'>式1</span> <span class='metavar'>実行文1</span>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203 ...
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 <span class='metavar'>式k-1</span> <span class='metavar'>実行文k-1</span>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 <span class='reserved'>ELSE</span> <span class='metavar'>実行文k</span>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 <p><span class='metavar'>式0</span> の値を <span class='metavar'>式1</span> の値と比較して合致すれば <span class='metavar'>実行文1</span> を実行します。 その後は <span class='metavar'>実行文k</span> の次の処理に移ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208 <p>合致しなければ、同様にして合致するまで次々と式と比較し、合致した式に対応した実行文を実行します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 <p>式の箇所に予約語 <span class='reserved'>ELSE</span> が有った場合は無条件に合致したものとみなして <span class='metavar'>実行文k</span> を実行します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210 <p><span class='reserved'>CASE</span> 文における <span class='reserved'>ELSE</span> 節は <span class='reserved'>CASE</span> 文の最後の条件であることを示すマーカーでもあるので省略することは出来ません。 <span class='reserved'>ELSE</span> 節に実行すべき実行文がない場合は空文を書いてください。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 <h3>WRITE</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 <span class='reserved'>WRITE</span> ( <span class='metavar'>式</span> : <span class='metavar'>出力リスト</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215 <p>式の値が表す出力装置に対して出力リストの内容を出力します。 数値と出力装置との対応付けについては未定義ですが、一般的に 0 はコンソール画面であるとされています。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
216 <p>出力リストは以下の出力要素からなり、ひとつ以上の場合はカンマで区切ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
217 <h4>式</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 <p>式を記述します。 十進数左詰めで出力します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
219 <h4>右詰め</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
220 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 # ( <span class='metavar'>式1</span> , <span class='metavar'>式2</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
222 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223 <p><span class='metavar'>式2</span> の値を <span class='metavar'>式1</span> の桁数で十進右詰めで出力します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 <h4>文字列</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
225 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
226 &quot; <span class='metavar'>文字列</span> &quot;
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
227 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
228 <p>ダブルクォーテーションで囲まれた文字列を出力します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 <h4>アスキーコード</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
231 <span class='reserved'>ASCII</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
232 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
233 <p><span class='metavar'>式</span> で与えられたアスキーコードに相当する文字を出力します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
234 <h4>空白</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 <span class='reserved'>SPACE</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
237 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
238 <p><span class='metavar'>式</span> で与えられた個数分の空白を出力します。 <span class='metavar'>式</span> の値が 0 の場合は何も出力しません。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 <h4>改行</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
240 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
241 <span class='reserved'>CRLF</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
242 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
243 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
244 <span class='reserved'>CRLF</span>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
245 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
246 <p><span class='metavar'>式</span> で与えられた個数分の改行を出力します。 <span class='metavar'>式</span> の値が 0 の場合は何も出力しません。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
247 <p><span class='metavar'>式</span> を省略した形式の場合は 1 個の改行を出力します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
248 <h4>十六進数</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
249 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
250 <span class='reserved'>HEX</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
251 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
252 <p><span class='metavar'>式</span> で与えられた値を十六進数 2 桁で出力します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
253 <p>一部の処理系では使えません。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
254
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
255 <h3>代入</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
256 <pre class='form'><span class='metavar'>変数</span> := <span class='metavar'>式</span></pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
257 <pre class='form'><span class='metavar'>変数1</span> , <span class='metavar'>変数2</span> , ... , <span class='metavar'>変数k</span> := <span class='metavar'>式</span></pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
258 <p><span class='metavar'>式</span> の値を <span class='metavar'>変数</span> に代入します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
259 <p>変数がカンマで区切られたリストの場合は <span class='metavar'>式</span> の値を左辺全ての変数に代入します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
260 <p>代入記号はコロンとイコールの 2 語から成っているのでコロンとイコールの間に空白文字が有っても代入記号として認識されますが、一般的には間を空けずに書きます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
261
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
262 <h3>手続き呼出し</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
263 <p>手続きを呼出します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
264 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
265 <span class='metavar'>手続き名</span> ( <span class='metavar'>式</span> , <span class='metavar'>式</span> , ... <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
266 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
267 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
268 <span class='metavar'>手続き名</span>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
269 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
270 <p>引数をもつ手続きでは実引数を与えて呼出します。 引数を持たない手続きを呼出す場合には丸括弧ごと省略した記法で呼出せますが、引数を持たない手続きを丸括弧を省略せずに記述した場合はエラーです。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
271 <pre class='example'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
272 FOO() % このような呼び方はエラー
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
273 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
274 <p>実引数の渡し方はいわゆる値渡しに限定されているので、実引数が変数であっても手続きから戻ったときに値は変化しません。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
275
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
276 <h3>CALL</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
277 <p>機械語サブルーチンを呼出します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
278 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
279 <span class='reserved'>CALL</span> ( <span class='metavar'>AH</span> , <span class='metavar'>AL</span> , <span class='metavar'>A</span> , <span class='metavar'>H</span> , <span class='metavar'>L</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
280 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
281 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
282 <span class='reserved'>CALL</span> ( <span class='metavar'>AH</span> , <span class='metavar'>AL</span> , <span class='metavar'>A</span> , <span class='metavar'>H</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
283 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
284 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
285 <span class='reserved'>CALL</span> ( <span class='metavar'>AH</span> , <span class='metavar'>AL</span> , <span class='metavar'>A</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
286 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
287 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
288 <span class='reserved'>CALL</span> ( <span class='metavar'>AH</span> , <span class='metavar'>AL</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
289 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
290 <p>各パラメータは以下の意味を持ちます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
291 <table>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
292 <tr><td><span class='metavar'>AH</span></td><td>アドレスの上位 8 ビット</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
293 <tr><td><span class='metavar'>AL</span></td><td>アドレスの下位 8 ビット</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
294 <tr><td><span class='metavar'>A</span></td><td>アキュムレータに与える値</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
295 <tr><td><span class='metavar'>H</span></td><td>80 系 CPU では H レジスタに与える値、 6502 系 CPU では X レジスタに与える値</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
296 <tr><td><span class='metavar'>L</span></td><td>80 系 CPU では L レジスタに与える値、 6502 系 CPU では Y レジスタに与える値</td>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
297 </tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
298 </table>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
299 <p><span class='metavar'>A</span>, <span class='metavar'>H</span>, <span class='metavar'>L</span> は省略した形式がありますが、省略した場合はそれぞれの値は不定となります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
300 <p>この手続きは一部の処理系では利用できません。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
301
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
302 <h3>SENSE</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
303 <p>PC では STOP キー、 APPLE では cont-C が押されているか否かを検出し、押されていればモニタモードに戻ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
304
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
305 <h2>変数</h2>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
306 <p>変数はすべて 1 バイト長です。 以下の 4 種類があります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
307 <h3>単変数</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
308 <p><span class='reserved'>VAR</span> 宣言された英字で始まる英数字の列です。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
309 <p>大域、小域の区別があります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
310
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
311 <h3>配列変数</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
312 <pre class='form'><span class='metavar'>配列変数名</span> [ <span class='metavar'>式</span> ]</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
313 <p><span class='reserved'>ARRAY</span> 宣言された配列の <span class='metavar'>式</span> 番目の要素です。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
314 <p>大域、小域の区別があります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
315
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
316 <h3>MEM変数</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
317 <pre class='form'><span class='reserved'>MEM</span> ( <span class='metavar'>式1</span> , <span class='metavar'>式2</span> )</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
318 <p><span class='metavar'>式1</span> の値を上位、 <span class='metavar'>式2</span> の値を下位のアドレスとするメモリ内の 1 バイト。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
319
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
320 <h3>PORT</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
321 <pre class='form'><span class='reserved'>PORT</span> (<span class='metavar'>式</span> )</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
322 <p>PC 版専用です。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
323 <p>N-BASIC の INP, OUT に相当します。 代入文の左辺にあれば OUT 、 右辺にあれば INP と同等の作用をします。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
324
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
325 <h2>式</h2>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
326 <h3>定数</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
327 <p><a href='#number'>数値</a>の項で示した 4 種類のいずれかの形式で定数を表します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
328 <h3>関数呼出し</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
329 <pre class='form'><span class='metavar'>関数名</span> ( <span class='metavar'>式1</span> , <span class='metavar'>式2</span> , ... , <span class='metavar'>式k</span> )</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
330 <pre class='form'><span class='metavar'>関数名</span></pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
331 <p><span class='reserved'>FUNC</span> 宣言によって宣言された関数、または処理系が用意しているシステム関数 (後述) を呼出します。 引数のない関数を呼出す場合は関数名のみで呼出せます。 引数がない関数を括弧付きの書式で呼出そうとした場合はエラーです。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
332 <pre class='example'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
333 FOO := BAR() % このような呼び方はエラー
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
334 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
335 <h4>MHIGH</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
336 <p>1 バイト同士の掛け算の結果は 2 バイトになり得ますが、式の中では下位 1 バイトしか表現されません。 上位 1 バイトは専用の場所に格納されており、 <span class='reserved'>MHIGH</span> 関数で取出すことが出来ます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
337 <h4>MOD</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
338 <p>割り算すると商が返りますが、同時に余が計算されて専用の場所に格納されており、 <span class='reserved'>MOD</span> 関数で取出すことが出来ます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
339 <h4>RND</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
340 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
341 <span class='reserved'>RND</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
342 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
343 <p>1 以上 <span class='metavar'>式</span> 以下の一様乱数を返します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
344 <h4>GET</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
345 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
346 <span class='reserved'>GET</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
347 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
348 <p><span class='metavar'>式</span> が表す入力装置から 1 文字を入力し、そのアスキーコードの値を返します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
349 <p>数値と入力装置の対応付けは未定義ですが、一般に 0 はキーボードであるようです。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
350 <h4>READ</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
351 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
352 <span class='reserved'>READ</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
353 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
354 <p><span class='metavar'>式</span> の値に対応する入力装置から十進数を 1 つ入力し、その値を返します。 RUBOUT コードは区切り記号とみなされます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
355 <h4>NOT</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
356 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
357 <span class='reserved'>NOT</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
358 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
359 <p>1 の補数を返します。 後述の COM と同じです。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
360 <h4>NEG</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
361 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
362 <span class='reserved'>NEG</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
363 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
364 <p>2 の補数を返します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
365 <h4>COM</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
366 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
367 <span class='reserved'>COM</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
368 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
369 <p>1 の補数を返します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
370 <h4>LSR</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
371 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
372 <span class='reserved'>LSR</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
373 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
374 <p>1 ビット右シフトします。 最上位ビットには 0 が入り、最下位ビットはキャリーに入ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
375 <h4>ASR</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
376 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
377 <span class='reserved'>ASR</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
378 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
379 <p>1 ビット右シフトします。 最上位ビットは変化せず、最下位ビットはキャリーに入ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
380 <h4>ASL</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
381 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
382 <span class='reserved'>ASL</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
383 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
384 <p>1 ビット左シフトします。 最下位ビットには 0 が入り、最上位ビットはキャリーに入ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
385 <h4>ROR</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
386 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
387 <span class='reserved'>ROR</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
388 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
389 <p>1 ビット右シフトします。 キャリーは最上位ビットに入り、最下位ビットはキャリーに入ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
390 <h4>ROL</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
391 <pre class='form'>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
392 <span class='reserved'>ROL</span> ( <span class='metavar'>式</span> )
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
393 </pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
394 <p>1 ビット左シフトします。 キャリーは最下位ビットに入り、最上位ビットはキャリーに入ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
395 <h4>USR</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
396 <pre class='form'><span class='reserved'>USR</span> ( <span class='metavar'>AH</span> , <span class='metavar'>AL</span> , <span class='metavar'>A</span> , <span class='metavar'>AH</span> , <span class='metavar'>L</span> )</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
397 <pre class='form'><span class='reserved'>USR</span> ( <span class='metavar'>AH</span> , <span class='metavar'>AL</span> , <span class='metavar'>A</span> , <span class='metavar'>AH</span> )</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
398 <pre class='form'><span class='reserved'>USR</span> ( <span class='metavar'>AH</span> , <span class='metavar'>AL</span> , <span class='metavar'>A</span> )</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
399 <pre class='form'><span class='reserved'>USR</span> ( <span class='metavar'>AH</span> , <span class='metavar'>AL</span> )</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
400 <p>CALL 文と機能は同じですが、機械語サブルーチン実行後のアキュムレータの値を返却値として返します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
401 <p>処理系によっては使えません。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
402 <h4>RDHEX</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
403 <pre class='form'><span class='reserved'>RDHEX</span> (<span class='metavar'>式</span>)</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
404 <p>入力装置から十六進数1桁を入力します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
405 <p>処理系によっては使えません。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
406 <h4>RRC</h4
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
407 ><pre class='form'><span class='reserved'>RRC</span> (<span class='metavar'>式</span>)</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
408 <p>キャリーを経由せずに式の値を右に 1 ビットシフトします。 最下位ビットは最上位に入ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
409 <p>処理系によっては使えません。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
410 <h4>RLC</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
411 <pre class='form'><span class='reserved'>RLC</span> (<span class='metavar'>式</span>)</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
412 <p>キャリーを経由せずに式の値を左に 1 ビットシフトします。 最上位ビットは最下位ビットに入ります。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
413 <p>処理系によっては使えません。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
414 <h3>二項演算子</h3>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
415 <p>左右に 2 個の項をとって計算する演算子です。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
416 <pre class='form'><span class='metavar'>項1</span> <span class='metavar'>演算子</span> <span class='metavar'>項2</span></pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
417 <p>演算子の優先順位は表の通りです。 優先順位の同じ演算子は左結合します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
418 <table>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
419 <tr><td>①</td><td>乗除算演算子</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
420 <tr><td>②</td><td>加減算演算子</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
421 <tr><td>③</td><td>関係演算子</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
422 <tr><td>④</td><td>論理演算子</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
423 <tr><td>⑤</td><td>キャリー付き加減算演算子</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
424 </table>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
425 <p>優先順位を変更したい場合は式括弧を使用します。 以下 3 種類の括弧が式括弧として使えますが標準的には丸括弧を用いることとします。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
426 <pre class='form'>{ <span class='metavar'>式</span> }</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
427 <pre class='form'>[ <span class='metavar'>式</span> ]</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
428 <pre class='form'>( <span class='metavar'>式</span> )</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
429 <p>記号ではなく識別子の演算子については空白文字と解釈されるピリオドを両側に置く習慣があります。 私見ですが、関数呼出しとの区別をしやすくする工夫だと考えられます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
430 <pre class='example'>.<span class='reserved'>AND</span>.</pre>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
431
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
432 <h4>乗除算演算子</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
433 <table>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
434 <tr><td>*</td><td>乗算</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
435 <tr><td>/</td><td>除算の商</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
436 </table>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
437
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
438 <h4>加減算演算子</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
439 <table>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
440 <tr><td>+</td><td>加算</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
441 <tr><td>-</td><td>減算</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
442 </table>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
443
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
444 <h4>関係演算子</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
445 <p>2 つの値を比較して真偽値を返します。 <span class='reserved'>GT</span> と <span class='reserved'>LT</span> は左右の数値を 2 の補数表現の符号付き二進数とみなして比較します。 その他の演算子は数を符号なし二進数と解釈します。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
446 <table>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
447 <tr><td>&gt;</td><td>大きい</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
448 <tr><td>&lt;</td><td>小さい</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
449 <tr><td>#</td><td>等しくない</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
450 <tr><td>=</td><td>等しい</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
451 <tr><td><span class='reserved'>GT</span></td><td>大きい</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
452 <tr><td><span class='reserved'>LT</span></td><td>大きい</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
453 </table>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
454
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
455 <h4>論理演算子</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
456 <table>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
457 <tr><td class='reserved'>AND</td><td>論理積</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
458 <tr><td class='reserved'>OR</td><td>論理和</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
459 <tr><td class='reserved'>EOR</td><td>排他的論理和</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
460 </table>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
461
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
462 <h4>キャリー付き加減算演算子</h4>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
463 <p>二項を足した上でキャリーの値を足す、または二項を減算した上でキャリーの値を引く演算子です。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
464 <table>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
465 <tr><td class='reserved'>ADC</td><td>キャリー付き加算</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
466 <tr><td class='reserved'>SBC</td><td>ボロー付き減算</td></tr>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
467 </table>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
468 <p>システム関数の一部がフラグを変化させることが明記されている他はどの処理がフラグを変化させるかは未定義です。 一般に加減算はフラグを変化させるようですが、処理系によっては配列要素へアクセスしたときに変化させてしまう場合もあるようです。 キャリー付き加減算は加減算の直後に限って使うのが安全であると考えられます。</p>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
469 </body>
188111be26b4 add document
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
470 </html>