2022年11月24日 | 公開。 |
2023年01月16日 | 「上書きモード・挿入モード」の節を追加。 |
SynBasicの画面には、物理画面と仮想画面の2つがあります。これらの違いを理解するためには、例えばリスト7に示すプログラムを、Syn BASICで実行すると、分かりやすいです。
10 FOR I=1 TO 100
20 PRINT I
30 NEXT
このプログラムは、1から100までの数字を、1行に1つずつ表示します。つまり、合計で100行表示します。
画面7でRUNボタン(三角形の青いボタン)をクリックすると、リスト7のプログラムを実際に実行できますので、実行してみましょう。
RUNボタン(青い三角形のボタン)をクリックして、プログラムを実行してみましょう。
プログラムを実行した直後の画面は、実行例1の様になっているはずです。プログラムが100行表示したものの、画面の表示領域が20行しかないために、実際に表示されている実行結果は、20行足らずになっています。
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 Ok
この状態で、↑キーを何度も押してカーソルを上に動かしたり、マウスポインターを画面7の中に合わせて上方向に回転させたり、スマホの場合は画面7を下方向にスワイプしたりすると、画面をスクロールダウンさせる事ができます。
一番上の行が表示されるまでスクロールダウンすると、実行例2の様な表示になるはずです。
Syn BASIC Version 0.30α ©2021-2022 Hiroshi Tanigawa(Synapse) Ok 10 FOR I=1 TO 100 20 PRINT I 30 NEXT run 1 2 3 4 5 6 7 8 9 10 11 12 13
この様に、Syn BASIC起動時のSyn BASIC Version…という表示や、プログラムリスト、RUNコマンドのrunという表示、そしてプログラムの実行結果の1、2、3、…の表示が全て記憶されており、画面をスクロールすると、それらを順次見る事ができます。つまり、実際に画面に表示されているよりも縦方向に広い画面がメモリ中にあり、その一部を画面に表示している事になります。
Syn BASICでは、実際に表示されている画面を物理画面といい、メモリ中に存在する広い画面を仮想画面と呼びます。
Syn BASICの起動時は、画面の桁数(横幅)は40桁に設定されています。また物理画面の行数(高さ)は20行に設定されています。仮想画面の行数は200行に設定されています。
これらの設定は、WIDTH文で変更する事ができます。
WIDTH文には、数値のパラメータが3つあり、それぞれのパラメータは,(カンマ)で区切ります。1番目のパラメータは画面の桁数(物理画面と仮想画面の両方の桁数)を、2番目のパラメータは物理画面の行数を、3番目のパラメータは仮想画面の行数を表します。
例えば、画面の桁数を80桁、物理画面の行数を25行、仮想画面の行数を1000行にしたい場合はWIDTH 80,25,1000
とします。
仮想画面の行数は最大で10000行まで指定できますが、あまり多くの行数を指定すると、メモリを多く消費し、また画面の表示速度が目に見えて遅くなります。プログラムの実行結果が数千行にわたって表示される様な場合を除いて、1000行以下で運用するのがいいでしょう。
大抵のテキストエディタ(例えばWindowsに付属のメモ帳)は、基本的に挿入モードで動作しますが、INSERTキーで挿入モードと上書きモードを切り替えられる様になっています。
挿入モードというのは、キーを押すと、カーソル位置に、キーに対応する文字を挿入する動作モードの事です。
例えば、次に示す様に、ABCDEという文字列が入力されており、カーソルがCの文字の位置にある場合を考えます。
挿入モードの場合、ここでFのキーを押すと、カーソル位置にfの文字が挿入され、画面が次の様になります。
一方で、上書きモードというのは、キーを押すと、カーソル位置に元々表示されていた文字が、キーで入力した文字で上書きされる(置き換えられる)動作モードの事です。
例えば、次に示す様に、ABCDEという文字列が入力されており、カーソルがCの文字の位置にある場合を考えます。
上書きモードの場合、ここでFのキーを押すと、入力したfの文字が、カーソル位置のCの文字を上書きし、次の様な状態になります。
前述の通り、大抵のテキストエディタではINSERTキーで挿入モードと上書きモードの切り替えができますが、Syn Basicの現バージョンでは、この切り替えの機能が実装されていません。入力時は、必ず挿入モードで動作します。
PRINT文等で文字列や数値を表示する場合は、常に上書きモードで表示します。
例えば、次に示す様に、画面にABCDEFGと表示されており、カーソルがCの文字にある場合を考えます。
この状態でPRINT "hij";
を実行すると、CDEの文字がhijで上書きされ、次の様な状態になります。