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

テキスト入出力の制御

この節ではテキストの入出力用コマンドについて説明します。これらのコマンドは文字列や文字配列を制御し、ユーザーからのコメント入力およびキーボードの走査制御を可能にします。

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

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

コマンド 

スタックダイアグラム 

説明 

( ccc )

( -- ) 

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

¥ rest-of-line

( -- ) 

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

ascii ccc

( -- char ) 

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

expect

( addr +n -- ) 

割り当てられた入力デバイスのキーボードから編集結果の 1 行を受け取り、addr に格納します。

key

( -- char ) 

割り当てられた入力デバイスのキーボードから 1 文字を読みます。 

key?

( -- flag ) 

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

span

( -- waddr ) 

expectで読み出された文字数を格納する変数。

word

( char -- pstr ) 

入力文字列から char で区切られる文字列を集め、メモリー位置 pstr に入れます。

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


注 -

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


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

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

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

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

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

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

コマンド 

スタックダイアグラム 

説明 

." 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-14 にテキスト文字列操作用のコマンドを示します。

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

コマンド 

スタックダイアグラム 

説明 

",

( addr len -- ) 

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

" ccc"

( -- addr len ) 

翻訳結果またはコンパイル結果の入力ストリーム文字列をまとめます。文字列内に"(00,ff) を使用して任意のバイト値を含めることができます。

.( 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 に入れます。

"p" ccc

( -- 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