現在流のスクリーンエディタと比較すると貧弱だが、Forthにもスクリーンエディタがある。
画面のコントロールは以下の4つのワードを使用する
AT (S col row -- ) カーソル位置の指定
BLOT (S col -- ) 行内カーソルより右クリア
DARK (S -- ) 画面クリア
-LINE (S -- ) 1行削除(下の行はスクロールアップ)
デフォールトではdumb端末を想定しており、
ATは (AT) (S col row -- ) 2DROP CR ;
BLOTは (BLOT) (S col -- ) C/L SWAP - SPACES ;
DARKは (DARK) (S -- ) 24 0 DO CR LOOP ;
-LINEは NOOP
となっている。
端末がANSIのエスケープシーケンスを受け付ける場合
例えばputtyとか、xtermとかなら以下の設定を受け付けることが出来る。
(avrcpmではputtyでシリアル、RunCPMではxtermなのでどちらもOK)
ANSIのエスケープシーケンスの場合
-----------------------------------
ANSI−AT カーソル位置の移動(n行、m列) (esc)n;mH
ANSI-BLOT 行内カーソルより右をクリア (esc)[K
ANSI-DARK 画面全体クリア (esc)[2J
ANSI--LINE 1行削除(下の行はスクロールアップ) (esc)[1M
使用例
------
EDITOR ANSI (ボキャブラリEDITORを選び、ANSIによりエスケープシーケンスを使うように設定)
1 EDIT (スクリーン1を編集する)
ここで Enter your ID: ........... と表示されるので、適当にIDをいれて Enter
上部18行に現在のスクリーンデータ、その下1行が現在の編集行、
それ以下5行はForthへの入力コマンド等が表示される。(画面は24行想定 .ALLにハードコーディング)
1 NEW
とすると1行目から順に入力することが出来る。
(ただし上下左右のカーソルコントロール等は出来ない)
画面のコントロールは以下の4つのワードを使用する
AT (S col row -- ) カーソル位置の指定
BLOT (S col -- ) 行内カーソルより右クリア
DARK (S -- ) 画面クリア
-LINE (S -- ) 1行削除(下の行はスクロールアップ)
デフォールトではdumb端末を想定しており、
ATは (AT) (S col row -- ) 2DROP CR ;
BLOTは (BLOT) (S col -- ) C/L SWAP - SPACES ;
DARKは (DARK) (S -- ) 24 0 DO CR LOOP ;
-LINEは NOOP
となっている。
端末がANSIのエスケープシーケンスを受け付ける場合
例えばputtyとか、xtermとかなら以下の設定を受け付けることが出来る。
(avrcpmではputtyでシリアル、RunCPMではxtermなのでどちらもOK)
ANSIのエスケープシーケンスの場合
-----------------------------------
ANSI−AT カーソル位置の移動(n行、m列) (esc)n;mH
ANSI-BLOT 行内カーソルより右をクリア (esc)[K
ANSI-DARK 画面全体クリア (esc)[2J
ANSI--LINE 1行削除(下の行はスクロールアップ) (esc)[1M
使用例
------
EDITOR ANSI (ボキャブラリEDITORを選び、ANSIによりエスケープシーケンスを使うように設定)
1 EDIT (スクリーン1を編集する)
ここで Enter your ID: ........... と表示されるので、適当にIDをいれて Enter
上部18行に現在のスクリーンデータ、その下1行が現在の編集行、
それ以下5行はForthへの入力コマンド等が表示される。(画面は24行想定 .ALLにハードコーディング)
1 NEW
とすると1行目から順に入力することが出来る。
(ただし上下左右のカーソルコントロール等は出来ない)
※コメント投稿者のブログIDはブログ作成者のみに通知されます