OpenBoot 3.x コマンド・リファレンスマニュアル

テキスト入出力の制御

この節ではテキストの入出力用コマンドについて説明します。

表 4-20にテキスト入力制御用のコマンドを示します。

表 4-20 テキスト入力制御

コマンド 

スタックダイアグラム 

説明 

( ccc )

( -- ) 

コメントを開始します。習慣上スタックダイアグラム用に使用されます。 

¥ rest-of-line

( -- ) 

行の残りの部分をコメントとして扱います。 

ascii ccc

( -- char ) 

次のワードの最初の ASCII 文字の数値を取り出します。 

accept

( addr len1 -- len2 ) 

コンソールの入力デバイスから編集された入力行を獲得し、addr に格納します。len1 は許容される最大長です。len2 は実際に受け取られる長さです。

expect

( addr len -- ) 

コンソールから入力行を獲得して表示し、 addr に格納します。(代わりに accept を使用するよう推奨します。)

key

( -- char ) 

入力デバイスのキーボードから 1 文字を読みます。 

key?

( -- flag ) 

入力デバイスのキーボードでキーが押された場合 true。 

parse

( char -- str len ) 

入力バッファーからの、char で区切られたテキストを構文解析します。

parse-word

( -- str len ) 

入力バッファーからの、空白文字で区切られたテキストを、先行空白文字を読み飛ばして構文解析します。 

word

( char -- pstr ) 

入力文字列から char で区切られる文字列を集め、メモリー位置 pstr に入れます。(代わりに parse を使用するよう推奨します。)

コメントは、コードの機能を記述するために、(一般的にテキストファイル内の) Forth ソースコードに使用します。( 左側括弧がコメントを開始する Forth ワードです。右側括弧) の前までの文字はすべて、Forth インタプリタが無視します。スタックダイアグラムは (を使用するコメントとして取り扱われます。


注 -

「(」の後に空白文字を入れることを忘れないでください。それによって、「(」はForth ワードとして認識されます。


¥ (バックスラッシュ) はテキスト行末でコメントが終わりになることを示します。

key はキーが押されるまで待ち、押されると、そのキーの ASCII 値をスタックに返します。

ascii は、ascii x の形式で使用され、文字 x の数字コードをスタックに返します。

key? はキーボードを走査して、ユーザーが新たになんらかのキーを押したかどうかを調べ、フラグをスタックに返します。つまり、キーが押されていた場合は true を、押されていない場合は false を返します。フラグの使い方については、「条件フラグ」の説明を参照してください。

表 4-21に汎用のテキスト表示用コマンドを示します。

表 4-21 テキスト出力表示

コマンド 

スタックダイアグラム 

説明 

." ccc"

( -- ) 

後の表示に備えて、文字列をコンパイルします。 

(cr

( -- ) 

出力カーソルを現在行の先頭に戻します。 

cr

( -- ) 

ディスプレイ上の行を終了し、次の行に進みます。 

emit

( char -- ) 

文字を表示します。 

exit?

( -- flag ) 

スクロール制御プロンプト More [<space>,<cr>,q] ? を有効にします。リターンフラグは、ユーザーが出力を終了する場合 true です。

space

( -- ) 

空白文字 を表示します。

spaces

( +n -- )  

+n 箇の空白文字を表示します。

type

( addr +n -- ) 

addr から始まる +n 箇の文字を表示します。

cr は改行処理を出力デバイスに送ります。次の例を参照してください。


ok 3 . 44 . cr 5 .
3 44
5
ok 

emit は ASCII 値がスタックにある英字を表示します。


ok ascii a 
61 ok 42
61 42 ok emit emit
Ba
ok 

表 4-22にテキスト文字列操作用のコマンドを示します。

表 4-22 テキスト文字列操作

コマンド 

 

スタックダイアグラム 

説明 

",

( addr len -- ) 

addr から始まり、長さが len のバイトの配列をパックされた文字列としてコンパイルし、辞書の先頭に入れます。

" ccc"

( -- addr len ) 

翻訳結果またはコンパイル結果の入力ストリーム文字列をまとめます。 

." ccc"

 

文字列 cccを表示します。

.( ccc)

( -- )  

文字列 ccc を即時に表示します。

-trailing

( addr +n1 -- addr +n2 ) 

後続空白文字を削除します。 

bl

( -- char ) 

空白文字の ASCII コード。10 進の 32。 

count

( pstr -- addr +n ) 

パックされている文字列をアンパックします。 

lcc

( char -- lowercase-char ) 

文字を小文字に変換します。 

left-parse-string

( addr len char -- addrR lenR addrL lenL ) 

文字列を char で分割します (char は捨てられます)。

pack

( addr len pstr -- pstr ) 

文字列 addr,len をパックされた文字列として pstr に格納します。

upc

( char -- uppercase-char ) 

文字を大文字に変換します。 

一部の文字列操作コマンドは、アドレス (それらの文字があるメモリー内の位置) と長さ (文字列の文字数) を指定します。その他のコマンドは、パックされた文字列、または長さを表すバイトを格納するメモリー位置である pstr とその後の一連の文字を使用します。コマンドのスタックダイアグラムは、どの形式が使用されるかを示します。たとえば、count はパックされた文字列を addr-len (アドレスと長さの組み合わせ) 文字列に変換します。

コマンド ."." string" の形式で使用します。このコマンドは、インタプリンタに遭遇するとただちにテキストを出力します。" (二重引用符) はテキスト文字列の終わりを示します。次の例を参照してください。


ok  : testing 34 .  ." This is a test"  55 . ;
ok
ok testing
34 This is a test55
ok 

コロン定義の外部に " を使用すると、それぞれ最高 80 文字までの解釈済み文字列を 2 つしか同時にアセンブルできません。この制限はコロン定義には当てはまりません。