通常、システムはすべてのユーザー入力にキーボードを、また大部分の表示出力にディスプレイ画面付きのフレームバッファーをそれぞれ使用します。(サーバーシステムはシステムのシリアルポートに接続された ASCII 端末を使用できます。システム本体への端末の接続についての詳細は、システムのインストールマニュアルを参照してください。) 入力先、出力先、それらの両方をシステムのいずれかのシリアルポートに変更できます。これは、たとえばフレームバッファーのデバッグ時に便利です。
表 4-15 に入出力先変更用のコマンドを示します。
表 4-15 入出力先の変更用コマンド
コマンド |
スタックダイアグラム |
説明 |
---|---|---|
input |
( device -- ) |
入力用のデバイス (keyboard または device-specifier) を選択します。 |
io |
( device -- ) |
入出力用のデバイスを選択します。 |
output |
( device -- ) |
出力用のデバイス (screen または device-specifier) を選択します。 |
input および output コマンドは、それぞれ、現在の入力および出力用デバイスを一時的に変更します。変更はコマンドの入力時に行われます。システムをリセットする必要はありません。システムリセットまたは電源の再投入を行うと、入出力デバイスは NVRAM システム変数 input-device と output-device に指定されているデフォルト設定に戻ります。これらの変数は、必要に応じて変更できます (デフォルトの変更についての詳細は、第 3 章「システム変数の設定」を参照してください)。
input の前には、keyboard、ttya、ttyb または device-specifier テキスト文字列のうちのどれか 1 つを入れます。たとえば、入力が現在キーボードから受け入れられていて、入力がシリアルポート ttya に接続されている端末から受け入れられるように変更する場合、次のように入力します。
ok ttya input ok |
この時点で、キーボードは (Stop-A 以外は) 機能しなくなりますが、ttya に接続されている端末から入力されるテキストはすべて入力として処理されるようになります。すべてのコマンドが通常どおりに実行されます。
キーボードを再び入力デバイスとして使用するには、端末のキーボードを使用して次のように入力します。
ok keyboard input ok |
同様に、output の前にも screen、ttya、または ttyb のどれか 1 つを入れます。たとえば、通常のディスプレイ画面でなく、ttya に出力を送る場合は、次のように入力します。
ok ttya output |
通常のディスプレイ画面は応答の ok プロンプトを表示せず、ok プロンプトも以降のすべての出力も ttya に接続されている端末に表示されます。
io も、入出力の両方を指定した場所に変更する点以外、同じ方法で使用されます。
一般的に、input、output、io には device-specifier を指定する必要があります。device-specifier はデバイスパス名、デバイスの別名のどちらでもかまいません。次の 2 つの例に示すように、デバイスは、二重引用符 (") を使用して Forth の文字列として次のように指定する必要があります。
ok " /sbus/cgsix" output |
または、次のように指定します。
ok " screen" output |
上記の 2 つの例では 、ttya、screen、keyboard は Forth のワードであり、いずれも、それぞれの対応のデバイス別名文字列をスタックに入れます。