********************************************************************** Tiny Forth Reference Guide T. Nakagawa ********************************************************************** ---------------------------------------------------------------------- スタック操作用ワード ---------------------------------------------------------------------- DRP ( x -- ) スタックの1番目のデータを捨てる DUP ( x -- x x ) スタックの1番目のデータの複製を作りスタックに積む SWP ( x2 x1 -- x1 x2 ) スタックの1番目と2番目のデータを交換する >R ( x -- ) パラメータスタックの1番目のデータをリターンスタックに積む R> ( -- x ) リターンスタックの1番目のデータをパラメータスタックに積む ---------------------------------------------------------------------- 算術演算用ワード ---------------------------------------------------------------------- + ( x2 x1 -- y ) スタックの1番目のデータと2番目のデータを加算した結果をスタックに積む - ( x2 x1 -- y ) スタックの2番目のデータを1番目のデータで減算した結果をスタックに積む * ( x2 x1 -- y ) スタックの1番目のデータと2番目のデータを乗算した結果をスタックに積む / ( x2 x1 -- y ) スタックの2番目のデータを1番目のデータで除算した商をスタックに積む MOD ( x2 x1 -- y ) スタックの2番目のデータを1番目のデータで除算した剰余をスタックに積む ---------------------------------------------------------------------- 論理演算用ワード ---------------------------------------------------------------------- AND ( x2 x1 -- y ) スタックの1番目のデータと2番目のデータの論理積をスタックに積む OR ( x2 x1 -- y ) スタックの1番目のデータと2番目のデータの論理和をスタックに積む XOR ( x2 x1 -- y ) スタックの1番目のデータと2番目のデータの排他的論理和をスタックに積む ---------------------------------------------------------------------- 関係演算用ワード ---------------------------------------------------------------------- = ( x2 x1 -- y ) スタックの1番目のデータが2番目のデータと等しければ1を,そうでなければ0をスタックに積む < ( x2 x1 -- y ) スタックの1番目のデータが2番目のデータより小さければ1を,そうでなければ0をスタックに積む > ( x2 x1 -- y ) スタックの1番目のデータが2番目のデータより大きければ1を,そうでなければ0をスタックに積む <= ( x2 x1 -- y ) スタックの1番目のデータが2番目のデータより小さいか等しければ1を,そうでなければ0をスタックに積む >= ( x2 x1 -- y ) スタックの1番目のデータが2番目のデータより大きいか等しければ1を,そうでなければ0をスタックに積む <> ( x2 x1 -- y ) スタックの1番目のデータが2番目のデータと等しくなければ1を,そうでなければ0をスタックに積む NOT ( x -- y ) スタックの1番目のデータが0ならば1を,そうでなければ0をスタックに積む ---------------------------------------------------------------------- メモリ操作用ワード ---------------------------------------------------------------------- @ ( x -- y ) アドレスxのメモリ領域(2バイト)を読み込みスタックに積む ! ( x2 x1 -- ) アドレスx1のメモリ領域(2バイト)にデータx2を書き込む @@ ( x -- y ) アドレスxのメモリ領域(1バイト)を読み込みスタックに積む !! ( x2 x1 -- ) アドレスx1のメモリ領域(1バイト)にデータx2を書き込む ---------------------------------------------------------------------- 出力用ワード ---------------------------------------------------------------------- . ( x -- ) スタックの1番目のデータを画面に出力する ---------------------------------------------------------------------- 辞書操作用ワード ---------------------------------------------------------------------- : ( -- ) ; ( -- ) ワード列という名前のワードとして辞書に登録する VAR ( -- ) という名前の変数のワードを定義する FGT ( -- ) という名前のワードとそれ以降に登録された全てのワードを削除する ---------------------------------------------------------------------- 制御文用ワード ---------------------------------------------------------------------- IF ( x -- ) THN ( -- ) スタックの1番目のデータが真ならばワード列を実行する IF ( x -- ) ELS ( -- ) THN ( -- ) スタックの1番目のデータが真ならばワード列を実行し偽ならばワード列を実行する BGN ( -- ) END ( x -- ) ワード列を実行してスタックの1番目のデータが偽ならば再び繰り返す BGN ( -- ) WHL ( x -- ) RPT ( -- ) ワード列を実行してスタックの1番目のデータが真ならばワード列を実行して再び繰り返す DO ( x2 x1 -- ) LOP ( -- ) スタックの1番目のデータを初期値,スタックの2番目のデータを終了値としてリターンスタックに積み,ワード列を実行後カウンタ値を+1して終了値より小さければ繰り返す I ( -- y ) カウンタ値のアドレスをスタックに積む