2020年08月23日
川俣晶の縁側ヴィンテージ・パソコン total 895 count

BASICにおけるタイムアウト付き入力ステートメント(INPUT WAIT)の研究

Written By: 川俣 晶連絡先

 レトロPCのBASICにおいて、タイムアウト付き入力ステートメントを実装するものを4つだけ発見した。以下にそれをまとめる。

TRS-80 Level-III BASIC §

[LINE] INPUT#LEN m,n;["prompt string"];variable name(s)

mはタイムアウトした時に飛ぶ行番号

nは秒数

特徴: 名前が違う

N88-BASIC/N88-BASIC(86) §

[LINE] INPUT WAIT 待ち時間[, "プロンプト文"]; 変数名

待ち時間は0.1秒単位

タイムアウトすると後続の文を実行。(入力されると次の行を実行)

特徴: 独自性が強く、タイムアウトを設定できることと名前以外に他と共通点がない

日立Level-3 BASIC §

INPUT WAIT <行番号>;<待ち時間(秒)>,["<プロンプト文>"{;|,}] <変数名>[,<変数名...>]

特徴: TRS-80 Level-III BASICのほぼ忠実な複製だが、名前や区切り記号が異なっていて、微妙に違う。機能的には等価と考えられる。ただし、LINE INPUT WAITは無いようだ。

その他 §

 少なくとも以下のページからF-BASICには存在しないことが確認できる。

GW-BASICにもないことは以下のPDFで確認した。

考察 §

 N-BASICはTRS-80 Level-III BASICをかなり参考にしたと思われるが、LINE INPUT#LEN/INPUT#LENは実装しなかった。

 このことが心残りでN88-BASICでLINE INPUT WAIT/INPUT WAITを実装したのではないか?

 また、日立L3は、N-BASICへの対抗上、N-BASICが実装できなかったINPUT#LENを積極的に取り込もうとしたと考えられる。

 時系列で捉えると、TRS-80 Level-III BASIC→N-BASIC→日立L3→N88-BASIC→N88-BASIC(86)である。

 つまり、以下のような順序で変化していったことが考えられる。

  • 日立L3においてステートメント名と区切り文字が変更された
  • N88-BASICにおいて仕様が全面的に見直されたがステートメント名だけは日立L3を踏襲した