N66SR BASIC リファレンス-コマンド一覧


PC-6601SRまでの機種(PC-6001, PC-6001mkII, PC-6601, PC-6601SR)のBASICコマンド一覧です。 PC-6001mkIISRのマニュアルをベースにしています。

ABS

60
演算
絶対値を与えます。

書式

ABS(X)
X:数式

解説

数式の値の絶対値|X|を与えます。


10 FOR X=-2 TO 2
20 PRINT X:" のぜったいちは";ABS(X);" です。"
30 NEXT X
40 END

対応

用語

ASC

60
文字列操作
文字列の最初の文字のキャラクタコードを与えます。

書式

ASC(d$)
文字列(キャラクタコード32以上の文字列)

解説

文字列の最初の文字のキャラクタコードを与えます。文字とキャラクタコードの対応については、資-4ページ資料2:キャラクタコード表を参照してください。


10 CLS:PRINT "B のキャラクタコードは ";ASC("B");"です。"
20 PRINT "BIG をASC(X$)をつかって あらわすと、"
30 PRINT "これも ";ASC("BIG");" です。"
40 PRINT :PRINT "HIT ANY KEY !";
50 IF INKEY$="" THEN 50
60 FOR X=48 TO 50
70 PRINT CHR$(X);" の キャラクタコードは";ASC(CHR$(X));" です。"
80 NEXT X
90 END

対応

CHR$:指定したキャラクタコードに対応する文字を与えます。

用語

キャラクタコード:キャラクタに割当てられたアスキー形式の0~255(10進)のコードをいいます。

AUTO

SR
プログラム作成コマンド
行番号を自動的に発生させます。

書式

AUTO [m][,n]
m:行番号
n:増分

解説

AUTOコマンドは、指定された行番号を発生し、行の入力待ちになります。以後、RETURNキーの入力ごとに増分で指定された増分ずつ増加した行番号を自動的に発生します。行番号、増分ともに省略された場合には、10が省略値として選択されます。STOPキーまたはCTRL+Cを押すと、AUTOコマンドはその動作を中止し、BASICのコマンドレベルに戻ります。この時、最後に発生された行番号の行は格納しません。

プログラム中にすでに存在する行と同じ行番号が発生した場合には、行番号の直後にアスタリスク(*)を表示し、注意を促します。この時、文字を入力してRETURNキーを押すと、その行は新しい内容に入れ代わります。また、何も入れないで RETURNキーを押した場合には、その行を削除します。


100 rem **test** 
110 print "auto"
120 end
130

list
100 rem **test** 
110 print "auto"
120 end

対応

用語

コマンドレベル:OKが表示された状態です。

BGM

SR
サウンド出力
PLAY文の実行の仕方を制御します。

書式

BGM x
x:数式(0または1)

解説

BGM文で0または1を指定することによって、後に実行するPLAY文を制御します。

・0を指定した場合

PLAY文の文字列が全て鳴り終るまで次の命令を実行しません。
10 BGM 0
20 PLAY "cdefgab"
30 PRINT "play end"

この場合、音楽が鳴り終ると、画面に"play end"と表示します。

・1を指定した場合

PLAY文の文字列が鳴っている最中に、次の命令を実行します。
10 BGM 1
20 PLAY "cdefgab"
30 PRINT "play end"

この場合、音楽が鳴っている最中に、画面に"play end"と表示され、その後も鳴り続きます。


10 SCREEN 2,2,2:CLS
20 A$="@10t240v14o5l8e-d-r4g-4e-d-r4g-4g-4e-d-r4g-4rg-4r4f4e-d-"
30 B$="@10t210v14o5l16r4b-8b-8r4b-8b-8r4b-8r8b-8r8b8b8r8"
40 C$="@5t120v13o4r8g-4.r8g-4.r8g-4e-4d-4.r8"
50 A1$="t120l16r8f8f8e-d-r8f8f8e-d-r8f8r8f8r8g-8g-8"
60 B1$="r8b8b8r4b8b8r4b8r8b8r8b-8b8"
70 C1$="d-4.r8d-4.r8d-4e-4g-4." 
80 KANJI(100,100),5, "ふんじゃった!"
90 BGM1:PLAY A$,B$,C$:PLAYA1$,B1$,C1$
100 FOR N=1 TO 320
110 ROLL 3 : NEXT N
120 ROLL:END

対応

用語

BLOAD

60ex
プログラムファイル操作コマンド
機械語プログラムをフロッピィディスクからメモリへ読み込みます。

書式

BLOAD f$ [,a][,R]
f$:ファイル名
a:先頭アドレス

解説

ファイル名によって指定された、機械語プログラムをメモリ上に読み込みます(ロードします)。ロードされる領域は、BSAVEコマンドにより機械語プログラムをファイルに書き込む(セーブする)際に指定したものと同じです。

先頭アドレスを指定した場合には、セーブした時に指定した開始番地ではなく、先頭アドレスで与えた番地からロードし始めます。したがって、先頭アドレスをつけてロードするプログラムは、セーブした時と異なる番地にロードしても実行可能な性質を持っていなければなりません。

Rオプションを指定すると、プログラムをロード後、セーブした時に指定した開始番地から、プログラムの実行をただちに開始します。このとき、すでに開かれているファイルはその状態を保持します。先頭アドレスを指定した場合は、実行開始番地も先頭アドレスの番地になります。


10 CLEAR,&HDFFF:CLS
20 PRINT"   がめん2に もじ(NEC)をかきます。"
30 PRINT"    HIT ANY KEY!!   "
40 IF INKEY$="" THEN 40
50 SCREEN 1,2,2:WIDTH40,20:CLS
60 BLOAD"NEC",R
70 LOCATE 0,17
80 END

注意:上記の例は35ページBSAVEの例と対応しています。BSAVEの例を実行してから、BLOADの例を実行してください。

対応

BSAVE:メモリにある機械語プログラムをフロッピィディスクに書き込みます。

用語

BSAVE

60ex
プログラムファイル操作コマンド
メモリにある機械語プログラムをフロッピィディスクに書き込みます。

書式

BSAVE f$,a,n
f$:ファイル名
a:先頭アドレス
n:プログラムの長さ(単位はバイト)

解説

メモリ上にある機械語プログラムを、ファイル名で指定されたファイルに書き込みます(セーブします)。メモリ上の指定された先頭アドレス以後の連続する指定された長さの内容を、機械語プログラムとしてセーブします。

セーブされる機械語プログラムを先頭アドレスから実行できるようにしておくと、BLOADコマンドにより、プログラムのロードと実行が自動的に行えます。

注意:N66SR-BASICでは、グラフィック画面のデータをセーブすることができません。78ページのGET@を使用してください。


10 CLEAR ,&HCFFF
20 FOR I=&HD000 TO &HD02A
30 READ D$:D=VAL("&h"+D$)
40 POKE I,D:NEXT I
50 BSAVE"NEC",&HD000,43
60 END
70 DATA21,00,00,06,AA,36,4E,23,23,36
80 DATA45,23,23,36,43,23,23,36,20,23
90 DATA23,10,EE,21,01,00,06,E3,36,09
100 DATA23,23,36,0A,23,23,36,0C,23,23
110 DATA10,F2,C9

上記の例は、34ページのBLOADの例と対応しています。

対応

BLOAD:機械語プログラムをフロッピィディスクからメモリへ読み込みます。

用語

CHR$

60
文字列操作
指定したキャラクタコードに対応する文字を与えます。

書式

CHR$(x)
x:数式(0<x<255)

解説

数式の値のキャラクタコードを持つ文字を与えます。数式の値が0~255の範囲にない場合は、?FC Errorになります。キャラクタコードと文字の対応については、資-4ページの資料2:キャラクタコード表を参照してください。


10 S=56:E=60
20 PRINT "さいしょの キャラクタコードは";S
30 PRINT "さいごの キャラクタコードは";E
40 PRINT
50 FOR I=S TO E
60 PRINT "CHR$(";I;")=";CHR$(I)
70 NEXT I
80 END

対応

ASC:文字列の最初の文字のキャラクタコードを与えます。

用語

CIRCLE

60ex
グラフィック表示
円または楕円を描きます。

書式

CIRCLE [STEP](x,y),r[,c][,s][,e][,a]
(x,y):中心の座標
r:半径(0<≦r)
c:色(1≦c≦16)
s:開始角度(単位はラジアン、|s|<2π)
e:終了角度(単位はラジアン、|e|<2π)
a:アスペクト比(垂直半径/水平半径)

解説

グラフィック画面上の1点(x,y)を中心とし、半径で指定される大きさの円を描きます。

色は1≦c≦16のカラーコードで指定します。N66SR-BASICの場合、13≦c≦16のカラーコードを指定すると、パレットの色で円を描くことができます。省略した場合には、現在COLOR文で指定されているグラフィクスの色を用います。

ディスプレイモードとBASICモードによって指定できるカラーコードが異なりますので、資-54ページの資料17:カラーコードと色の関係を参照してください。

CIRCLEは通常円を描きますが、開始角度、終了角度を指定すると、指定された角度の範囲内のみに円弧を描きます。角度の指定の単位はラジアンで、省略値はそれぞれ0と2πです。

・開始角度、終了角度が負であった場合には、その絶対値をとり、正にした角度が用いられますが、その時、中心から半径が描かれますので扇形を描くことができます。

・開始角度、終了角度は、-2πから+2πの範囲内にないと?FC Errorとなります。

アスペクト比は(垂直方向の半径/水平方向の半径)で指定します。省略された場合には、約0.85に設定されます。アスペクト比が1より小さい場合には、半径は水平方向の半径が基準になります。また1より大きい場合には、半径は垂直方向の半径が基準になります。つまり半径が同じでもアスペクト比が1より小さいならば横長の楕円となり、1より大きいならば縦長の楕円となります。

中心座標は、STEPをつけて相対座標により指定することもできます。

注意:PC-8000シリーズのディスプレイをお使いの方は、16色グラフィックモード(SCREEN 2)のとき、アスペクト比を0.5に4色グラフィックモード(SCREEN 3)のとき、1.0にすると真円が描かれます。


5 REM***CIRCLE***
10 SCREEN 3,2,2:COLOR,13:PALET:CLS
20 Y=50:A=.175:P=12:C=14
30 FOR X=70 TO 570 STEP 100
40 CIRCLE(X,Y),40,C,,,A
50 PAINT(X,Y),C,C
60 C=C+1:IF C=17 THEN C=14
70 A=A*1.3:IF A>3.2THEN 110
80 NEXT
90 IF Y=50 THEN Y=150 ELSE Y=50
100 GOTO 30
110 P=P+1:IF P=17THEN P=13
120 K=K+1:IF K=17 THEN K=1
130 PALET P,K
140 FOR Z=0 TO 200:NEXT:GOTO 110

対応

用語

CLEAR

60
定義文
変数の初期化およびメモリ領域の指定をします。

書式

CLEAR [m][,n]
m:文字領域の大きさ
n:メモリの上限

解説

すべての数値変数を0に、文字変数を""(ヌルストリング)に初期化します。DEFEN文によって定義された情報も無効にします。

文字領域の大きさは、BASICが文字列処理のために用いるメモリ領域の大きさをバイト数で指定します。

メモリの上限は、BASICの使用するメモリの上限値を番地で指定します。指定された番地以降に置かれたデータや機械語プログラムはBASICによってクリアまたは破壊されることはありません。

なお、起動時またはリセット時における文字領域の大きさは、N60-BASIC モードでは50バイト、N66SR-BASIC、N66-BASIC、およびN60-拡張BASICモードでは300バイトです。

メモリの上限は、N60-BASICモードではFA00H、N66SR-BASIC、N66-BASICおよびN60拡張BASICではフロッピィディスクユニットのドライブ数と、起動時またはリセット時に指定したファイル数によって変化します。(資-25ページ資料10:メモリマップを参照してください。)

文字領域の大きさ、およびメモリの上限は省略すると直前のCLEAR文で指定した大きさのまま、あるいは起動時またはリセット時の状態のままです。


5 REM *** CLEAR[[m],n] ***
10 PRINT"ユーザメモリ は ";FRE(0)
20 PRINT"もじりょういき は";FRE(A$)
30 INPUT"もじりょういき の じょうげんは";M
40 CLEAR M
50 PRINT"のこり の ユーザメモリ は";FRE(0)
60 PRINT"もじりょういき は";FRE(A$)
70 END

対応

FRE:メモリの未使用領域の大きさを与えます。

用語

ヌルストリング:空白の意味です。

CLOAD

60
プログラムファイル操作コマンド
プログラムをカセットテープからメモリへ読み込みます。

書式

CLOAD [f$]
f$:ファイル名

解説

CLOADコマンドはプログラムをカセットテープから読み込む(ロードする)命令です。ファイル名を探している最中に別のファイル名のプログラムが見つかれば、Skip:<ファイル名>を画面に表示し、また、目的のプログラムが見つかればFound:くファイル名>を表示し、プログラムをロードします。

ファイル名は6文字以内で指定してください。ファイル名を省略すると、カセットテープから一番最初に読み込むことができるプログラムを読み込みます。

注意:CLOADを実行すると、CLOAD前にメモリ上にあったプログラムや変数は消去され、開いていたファイルがあれば、閉じられます。(NEW文と同一)



対応

CSAVE:メモリにあるプログラムをカセットテープに書き込みます。

用語

CLOAD*

60
カセットテープ入出力
CSAVE*文で書き込まれた数値配列の情報を読み込みます。

書式

CLOAD* d
d:数値配列名

解説

数値配列のデータをカセットテープから読み込みます(ロードします)。数値配列名は、配列の大きさが10より大きい場合には、DIM文によって、定義されていなければなりません。 また、配列の大きさはCSAVE*文を実行した時の大きさ以上にします。数値配列名はCSAVE*文で書き込んだ(セーブした)ときと同じでなくてもかまいません。


10 DIM X(10)
20 CLOAD*X
30 FOR I=1 TO10
40 PRINT I,X(I)
50 NEXT I
60 END

上記の例は52ページCSAVE*の例と対応しています。CSAVE*の例を実行してから、CLOAD*の例を実行してください。

対応

CSAVE*:メモリ上にある数値配列の情報をカセットテープに書き込みます。

用語

CLOAD?

60
プログラムファイル操作コマンド
カセットテープに書き込んだプログラムとメモリにあるプログラムを比較します。

書式

CLOAD? [f$]
f$:ファイル名

解説

CLOAD?コマンドは現在メモリ上にあるプログラムとファイル名で指定されたカセットテープに書き込まれている(セーブされている)プログラムとを比較します。このときすべての内容が等しければBASICは“OK”と表示し、もしそうでなければ“Bad”と表示して実行を終了します。

この比較はメモリ上のプログラムが間違いなくカセットテープにセーブされているかを確認するためのものであり、一般に CSAVEコマンドに引き続いて行います。



対応

CSAVE:メモリにあるプログラムをカセットテープに書き込みます。

用語

CLOSE

60ex
フロッピィディスク入出力
ファイルを閉じます。(使用不可状態にします。)

書式

CLOSE [n1[,n2,...]]
n1,n2...:ファイル番号(1≦n≦15)

解説

指定されたファイル番号に対応するファイルを閉じます。以後、閉じられたファイル番号は異なるファイルを開くために利用できるようになります。また、閉じられたファイルは、同じあるいは異なったファイル番号によって再び開くことができます。

CLOSE文では、ファイル番号を複数指定することより、1度に複数のファイルを閉じることができます。また、ファイル番号が省略された場合には、その時に開いているファイルをすべて閉じます。指定できるファイル番号は、1から起動時またはリセット時に、How Many Files?で指定した数までです。

閉じられたファイルに対しては、再びOPENするまで入出力することができません。

CLOSE文は、ファイルがシーケンシャルファイルの出力用に開かれていた場合には、バッファに残っていたデータの掃き出しを行いますので、ファイルの出力処理を正しく終了するためには、必ずCLOSEを行わなくてはなりません。

END文、NEWコマンドは、自動的にすべてのファイルを閉じる処理を行います。 STOP文はファイルを閉じる作業は行いませんので注意してください。


10 OPEN "1:number2" FOR OUTPUT AS #1
20 A$="field no.1"
30 B=45678
40 C$="personal computer"
50 PRINT #1,A$;",";B
60 PRINT #1,C$
70 CLOSE 1:OPEN"1:number2" FOR INPUT AS #1
80 INPUT#1,X$,Y,Z$
90 PRINT "x$=[";X";"]"
100 PRINT "y=[";Y;"]";
110 PRINT "z$=[";Z$;"]"
120 END

対応

OPEN:ファイルを開きます。

用語

シーケンシャルファイル:データの読み書きが順次的に行われるファイルです。

バッファ:必要な情報を一時的に蓄えたりするための領域です。

CLS

60
画面操作
現在のアクティブ画面をクリアします。

書式

CLS

解説

SCREEN文の第2パラメータで指定されている画面をクリアします。テキスト画面については、CONSOLE文によって指定されたスクロール範囲をクリアします。 また、テキスト画面、グラフィック画面でも、CLS文によってCOLOR文で指定された背景色で画面を塗り変えます。


10 SCREEN 1,1,1:CLS:WIDTH 80,25:COLOR 16
20 CONSOLE0,1,0:CLS
30 PRINT SPC(4);"X°","SIN(X)",,"COS(X)";
40 CONSOLE 1,24:COLOR 16,1:LOCATE 0,1
50 FOR I=-180 TO 180 STEP 6
60 J=I*3.1415927/180
70 PRINT SPC(4);I,SIN(J),,COS(J)
80 K=K+1:IF K=21 THEN 100
90 NEXT:CONSOLE0,24:END
100 PRINT SPC(10);"Hit any key to next"
110 I$=INKEY$:IF I$="" THEN 110
120 CLS:LOCATE 0,1:K=0:GOTO 90

対応

用語

テキスト画面:ディスプレイモード中のテキストモードの画面です。

グラフィック画面:ディスプレイモード中の16色グラフィックモード及び4色グラフィックモードの画面です。

COLOR

60
画面操作
画面の文字やグラフィクスの色を指定します。

書式

COLOR
f:文字またはグラフィクスの色(1≦f≦16)
b:背景の色(1≦b≦16)
(c:色の組み合わせ(1≦c≦6))...N66SR-BASICの場合、必要ありません。)

解説

テキスト画面の文字の色や背景の色、およびグラフィック画面のグラフィクスの色や背景の色を指定します。

グラフィクスの色とは、グラフィック画面に点や線を表示したりする時に使われる色のことです。BASICの種々のグラフィック命令(PSET、LINE、CIRCLE文など)で特別に色を指定しなかった場合、COLOR文で指定した文字またはグラフィクスの色を採用します。

背景の色とは、テキスト画面、グラフィック画面の地の色のことで、この命令実行後CLS文によって画面をクリアすると、この色によって画面が塗り変えられます。またPRESET命令を色指定なしで実行すると、この色が採用されることになります。

N66SR-BASIC以外のBASICモードでは、色の組み合わせを指定します。色の組み合わせは 資-54ページ資料17:カラーコードと色の関係を参照してください。

N66SR-BASICのディスプレイモードとCOLOR文の関係は次の通りです。

ディスプレイモード 文字またはグラフィックスの色 背景の色
1 テキストモード 1~16 9~16
2 15色グラフィックモード 1~16 1~16
3 4色グラフィックモード 13~16 13~16

注意:N66SR-BASICの場合、13~16のカラーコードを指定すると、カラーコードの色でなく、パレットの色を設定します。(PALET文参照)


10 SCREEN 2,2,2:COLOR 1,1:CLS:K=2:R=80
20 FOR I=0 TO 360 STEP 24
30 A=I*3.1425927/180:B=(I+120)*3.1415927/180:C=(I+240)*3.1415927/180
40 AX=160+R*COS(A):AY=100+R*SIN(A)
50 BX=160+R*COS(B):BY=100+R*SIN(B)
60 CX=160+R*COS(C):BY=100+R*SIN(C)
70 LINE(AX,AY)-(BX,BY),K
80 LINE-(CX,CY),K:LINE-(AX,AY),K
90 PAINT(160,100),K,K
100 K=K+1:IF K=17THEN K=1
110 R=R-4: NEXT

注意:N60-BASICおよびN60-拡張BASICモードの場合は、使える色が9色で色の組み合せは2組しかありませんので、指定できる値の範囲は、それぞれ0≦f≦8、0≦b≦8、1≦c≦2になります。

対応

用語

CONSOLE

60
画面操作
画面のモード設定を行います。

書式

CONSOLE [m][,n][,f][,k][,p]
m:スクロール開始行(O≦m≦19)又は(0≦m≦24)...N66SR-BASICのみです。
n:スクロールの長さ(1≦n≦20-m)又は(0≦n≦25-m)...N66SR-BASICのみです。
f:ファンクションキー表示スイッチ(ONなら1、OFFなら0)
k:キークリック音スイッチ(ONなら1、OFFなら0)
p:プリンタオプション(0または1)

解説

画面のモード設定を行います。

スクロール開始行とスクロールの長さを指定することによって、画面上でスクロールする範囲を指定します。

CLSおよびPRINT CHRS(12)は、このスクロール範囲に対して実行します。

スクロール範囲の指定はディスプレイモードが1(テキストモード)の場合に有効となります。

ファンクションキー表示スイッチに1を指定した場合には、画面最下行にその時点でファンクションキーに登録されている文字列を表示し、0を指定した場合には表示しません。

ファンクションキーの表示はディスプレイモードが1(テキストモード)の画面に表示でき、画面ごとに設定できます。

キーのクリック音スイッチを1に指定すると、キーのクリック音が発生し、0を指定した場合には発生しません。

プリンタオプションは、PC-6001MKIISR専用プリンタ(PC-PR104)のみ作動します。プログラムリストをとる際、0を指定すると、従来どおりひらがなをカタカナに変換しますが、1を指定すると、ひらがなはひらがな、カタカナはカタカナで印字します。省略値は、0となっています。


10 CLS
20 CONSOLE 0,8,0:A$="ABCDEFG"
30 FOR I=1 TO 7
40 PRINT LEFT$(A$,I)
50 NEXT I
60 CONSOLE 7,8,1
70 FOR I=1 TO 3
80 PRINT A$
90 NEXT I
100 END

注意:N60-BASICおよびN60-拡張BASICモードの場合には、スクロール開始行およびスクロールの長さの最大値がそれぞれ15、16-mになります。

対応

用語

CONT

60
プログラム実行コマンド
STOP キーの入力、またはSTOP文によって停止したプログラムの実行を再開します。

書式

CONT

解説

CONTコマンドは通常デバッグのためSTOP文と共に用います。STOP文や STOPキー(CTRL-C)の入力によりプログラムの実行を停止し、ダイレクトモードで変数の値等を調べた後に、CONTコマンドによって実行を再開します。

ただし、実行停止中にプログラムの内容を変更した場合には、CONTコマンドによる継続実行はできません。


5 REM *** CONT ***
10 FOR I=1 TO 7
20 PRINT "♥♣♦♠";
30 NEXT I:PRINT
40 PRINT:PRINT"Hit STOP key or CTRL-C !"
50 PRINT "Type CONT and hit RETURN !"
60 FOR I=0 TO 500:NEXTI
70 PRINT:GOTO10

対応

用語

デバッグ:プログラムにある誤りを検出して、訂正することをいう。

COS

60
演算
余弦値(コサイン)を与えます。

書式

COS(x)
x:数式(単位はラジアン)

解説

数式の値に対する三角関数cos xの値を与えます。


10 FOR I=0 TO 60 STEP 30
20 H=I*3.14159265/180
30 PRINT"X=";I;"°"
40 PRINT SPC(3):PRINT "コサイン のあたいは";COS(H)
50 PRINT:NEXT I
60 END

対応

SIN:正弦値(サイン)を与えます。

TAN:正接値(タンジェント)を与えます。

用語

CSAVE

60
プログラムファイル操作コマンド
メモリにあるプログラムをカセットテープに書き込みます。

書式

CSAVE f$
f$:ファイル名(1≦ファイル名の文字数≦6)

解説

メモリ上にあるプログラムにファイル名をつけてカセットテープへ書き込みます(セーブします)。カセットテープ上にセーブされたプログラムは、CLOAD文を使って再びメモリ上に読み込む(ロードする)ことができます。

カセットテープ上にセーブされたプログラムは、ファイル名により区別します。このファイル名は最大6文字からなる文字列によって指定します。プログラムが正しくセーブされているかどうかはCLOAD?を使って確認できます。

注意

  • 機械語プログラムをセーブ、ロードする場合には、BSAVE,BLOADを使ってください。
  • CSAVE実行中は、絶対にSTOPキーは押さないでください。もし、誤ってSTOPキーを押した場合、カセットテープが正常に作動しているかを確かめます。正常に作動していれば、そのままの状態にしておきます。PC-6001MKISR は、セーブ終了後、リセットボタン押下時と同じ状態になりますが、プログラムは正常にセーブされています。このときは下記の(1)により回復可能です。
    カセットテープをセットしていなかったり、途中で止めてしまったときは、下記の(2)により回復できる場合がありますが、回復できない場合もあります。このときは、もう一度プログラム入力から行ってください。
  1. カセットテープにセーブされているので、CLOADコマンドでロードする。
  2. MONコマンドでB-Rと入力する。ディスクが接続されている場合、MONコマンドを入力する前に、“How many files(0~15)?”で前回入力した値と同じ値を入力します。 前回、RETURNキーだけ入力した場合、RETURNキーのみ入力します。



対応

CLOAD:プログラムをカセットテープからメモリへ読み込みます。

用語

CSAVE*

60ex
カセットテープ入出力
メモリ上にある数値配列の情報をカセットテープに書き込みます。

書式

CSAVE* d
d:数値配列名

解説

数値配列に代入されている数値情報をカセットテープに書き込みます(セーブします)。数値配列名は、配列の大きさが10より大きい場合には、DIM文によって定義していなければなりません。

セーブされた数値配列の情報は、CLOAD*によって再びメモリ上に呼び出すことができます。


10 DIM X(10)
20 FOR I=1 TO 10
30 X(I)=2^I
40 NEXT I
50 CSAVE*X
60 END

上記の例は42ページCLOAD*の例と対応しています。

対応

CLOAD*:CSAVE*文で書き込まれた数値配列の情報を読み込みます。

用語

CSRLIN

60
画面入出力
現在のカーソルの行位置を与えます。

書式

CSRLIN

解説

現在のカーソルの行位置を与えます。値の範囲は、画面の最上行が0、最下行が25行モ ードのときは24、20行モードのときは19となります。

N66-BASICの場合には、最下行は19、N60-BASICおよびN60-拡張BASICモードの場合には、最下行は15となります。


10 CLS
20 Y=INT(RND(1)*100)
30 IF Y>19 THEN 20
40 X=INT(RND(1)*100)
50 IF X>39 THEN 40
60 LOCATE X,Y
70 PRINT POS(0):CSRLIN
80 END

対応

POS:カーソルの桁位置(縦方向)を与えます。

用語

CVS

mkII
演算
MKS$関数で変換された5バイトの文字型データを数値に変換します。

書式

CVS(d$)
d$:文字変数名(d$の長さ=5)

解説

フロッピィディスク上のランダムファイルから読み込んだデータは、文字型になっています。MKS$関数で文字型に変換されているデータを数値に戻します。


10 OPEN "しょうひん" AS #1
20 M=LOF(1)
30 R=0:INPUT "レコード NO.";R
40 IF R=0 THEN END
50 PR=INT((R-1)/8)+1
60 LR=R-(PR-1)*8
70 FIELDF#1,(LR-1)*32 AS D$,22 AS S$,5 AS T$,5 AS N$
80 IF PR>M THEN PRINT "ERROR":GOTO 30
90 GET #1,PR
100 PRINT "しょうひんめい: "S$
110 PRINT "たんか    :"CVS(T$)
120 PRINT "すうりょう  :"CVS(N$)
130 PRINT
140 GOTO 30

注意:上記の例は118ページMKS$の例と対応しています。MKS$の例を実行してから、CVSの例を実行してください。

対応

MKS$:数値を5バイトの文字列に変換します。

用語

ランダムファイル:ファイル内の任意の場所を指定して、他の場所には触れずに直接、読み 書きできるファイルです。

DATA

60
データ
READ文で読み込む数値や文字列定数を格納します。

書式

DATA C1[,C2...]
C1C2...:数値または文字列定数

解説

  • DATA文は非実行文でプログラム中のどこに置いてもかまいません。1つのDATA文には1行(255文字)に入るだけのデータをセットすることができます。また、1つのプログラム内には、任意の数のDATA文を置くことができます。
  • READ文はDATA文の行番号の小さい方から順番にDATA文中のデータを読み込みます。
  • DATA文中の数値または文字列定数は、READ文で読み込まれる場合にREAD文で指定する変数の型と一致していなければなりません。
  • データはコンマ(,)で区切ります。文字列定数でカンマ(,)やピリオド(.)がある場合には、その文字列定数をダブルクォーテーション(")でくくる必要があります。
  • RESTORE文によってREAD文で読み込むDATA文を行単位で指定することができます。
  • 文字列定数で文字列の先頭または最後に空白がある場合は、そのまま、その空白を読み込みます。


5 REM ***DATA***
10 SCREEN 1,1,1:COLOR16,1:CLS
20 INPUT"あさ=1,ひる=2,よる=3";A
30 ON A GOTO 50,60,70
40 GOTO 20
50 RESTORE 120:GOTO 80
60 RESTORE 130:GOTO 80
70 RESTORE 140:GOTO 80
80 READ A$
90 TALK A$
100 GOTO 20
110 END
120 DATA"f2 o hayo-."
130 DATA"f2 ^kox niciwa."
140 DATA"f2 ^kox baxwa."

対応

READ:DATA文で指定しているデータを読み込み、変数に割り当てます。

RESTORE:READ文で読むDATA文の開始行番号を指定します。

用語

DEF USR

SR
定義文
機械語で作られたユーザ関数の実行開始番地を定義します。

書式

DEF USR=m
m:開始番地

解説

USR関数(ユーザ関数)が呼び出す、機械語ルーチンの実行開始番地の設定を行います。開始番地はUSR関数の実行開始番地を指定します。


10 CLEAR ,&HDFFF
20 DEF USR=&HE000
30 FOR I=&HE000TO &HE01F
40 READ D$:D=VAL("&h"+D$)
50 POKE I,D:NEXT I
60 INPUT"   もじれつを いれてください";A$
70 B$=USR(A$)
80 COLOR 11:PRINT B$
90 COLOR 16:END
100 DATAFE,03,C0,EB,56,23,23,7E,23,66
110 DATA6F,14,15,C8,7E,FE,61,DA,1C,E0
120 DATAFE,7B,D2,1C,E0,E6,DF,77,23,C2
130 DATA0C,E0

注意:上記の例は、英小文字で入力すると、英大文字となって画面に出力します。

対応

USR:機械語で作られた関数ルーチンを呼び出します。

用語

DEFFN

60
定義文
ユーザによって作られた関数を定義します。

書式

DEFFN d(x)=z
d:関数名
x:引数(数値変数)
z:関数の定義式

解説

DEFEN文によって、プログラム中で何度も使う演算と、演算で使う変数を関数としてあらかじめ定義しておくと、以降のプログラムでこの関数を呼び出すだけで演算結果を求めるこ とができます。

関数の名前はFNとこれに続く関数名を含めたもので、関数名は数値変数名と同じ規則でつけます。

引数はその関数が呼ばれた時に関数の定義式の中の同じ名前の変数に対応します。この変数名は関数を定義する時だけ有効となり、プログラム中に同一の変数名があっても影響を受けません。また、関数の定義式の中に引数以外の変数を使用している場合には、関数が呼ばれた時点で、その変数がもっている値を使用します。

関数定義式は、その関数の演算内容を記述する式で、1行の範囲に限ります。

DEFEN文は非実行文ですが、これによって定義される関数がプログラム中で呼ばれる前に実行していなければなりません。


5 REM *** DEF FN ***
10 DEF FNA(X)=2*X^2
20 DEF FNB(X)=-2*X^2
30 DEF FNC(X)=2*X^3
40 FOR X=-1 TO 2
50 PRINT"*** X=";X;" ***"
60 PRINT"     FNA(";X;")=";FNA(X)
70 PRINT"     FNB(";X;")=";FNB(X)
80 PRINT"     FNC(";X;")=";FNC(X)
90 NEXT X
100 END

対応

用語

DELETE

mkII
プログラム作成コマンド
プログラムを部分的に削除します。

書式

DELETE m[-n]
m:開始行番号
n:終了行番号

解説

指定された開始行番号から終了行番号までのプログラムを削除します。開始行番号だけを指定した場合は、その行だけを削除し、-(終了行番号)を指定した場合には、プログラムの先頭から(終了行番号)までを削除します。


DELETE 100              (行番号100を削除する。)
DELETE 100-150          (行番号100から行番号150までを削除する。)
DELETE -150             (プログラムの先頭から行番号150までを削除する。)

対応

用語

DIM

60
定義文
配列変数の要素の大きさを指定して配列を宣言し、メモリ領域を確保します。

書式

DIM d1(n1[,n2])[,d2(n1'[,n2'...])...]
d1,d2...:配列名
n1,n2...n1',n2'...:添字の最下値

解説

配列変数の添字の最大値を設定し、同時にメモリ上にその配列の領域を割り当てます。 DIM文で宣言せずに配列変数を用いた場合、その添字の最大値は10とみなします。もし、設定された最大値より大きい値の添字を用いた場合には、?BS Errorが起こります。

また、DIM文が実行された時点で、その配列のすべての要素は数値なら0、文字なら"" (ヌルストリング)に設定されます。


10 DIM A$(3,7)
20 CONSOLE,,1,1
30 FOR J=0 TO 3
40 FOR I=0 TO 7
50 READ A$(J,I)
60 NEXT I
70 NEXT J
80 FOR I=0 TO 7
90 FOR I=0 TO 3
100 PRINT A$(J,I);
110 FOR K=0 TO 100:NEXT K
120 NEXT J
130 NEXT I
140 END
150 DATAわ," ",6," ",う,て," ",く
160 DATAた,P,0,の,た,゛,よ,ね,し,C,0
170 DATAき,゛,す,ろ," ",は,-,1,よ,い
180 DATA。,し,!

対応

用語

配列変数:7ページ「1-10-4 配列変数」を参照してください。

?BS Error(Bad Subscript Error):配列の添字が宣言した大きさを越えています。配列の添字の個数が宣言したときと違います。

DSKF

60ex
フロッピィディスク入出力
ディスクに関する情報を与えます。

書式

DSKF (d,[f])
d:ドライブ番号 (1≦d≦2)
f:機能 (0≦f≦10)

解説

<ドライブ番号>で指定されたディスクに関する情報を関数の値として返します。<機能>は値として返す情報の種類を指定します。<機能>として指定する値と、その時に返される関数の値の意味は次のようになっています。

省略された時:ディスクの残り容量をクラスタ単位で返す。

  • 0:最大トラック番号(=片面当りのトラック数-1)
  • 1:1トラック当りのセクタ数
  • 2:片面ディスク(0を返す)あるいは両面ディスク(1を返す)
  • 3:1トラック当りのクラスタ数
  • 4:ボリューム当りのクラスタ数
  • 5:ディレクトリトラック番号
  • 6:1クラスタ当りのセクタ数
  • 7:FATの開始セクタ番号
  • 8:FATの終了セクタ番号
  • 9:FATの数
  • 10:ディスク属性の入っているセクタ番号

N60、N66-BASICモードでは、<機能>を指定することはできず、返される情報は指定したドライブの残りクラスタ数のみです。なお、1クラスタは8セクタです。


10 SCREEN 1,1,1:CLS
20 D=0:INPUT"     DRIVE NO.";D
30 IF D=0 THEN END
40 PRINT"FREE AREA    =";DSKF(D);"CLUSTER"
50 PRINT"TRACK        =";DSKF(D,0);"/DRIVE"
60 PRINT"SECTOR       =";DSKF(D,1);"/TRACK"
70 PRINT"CLUSTER      =";DSKF(D,2);"VOLUME"
80 PRINT"DIRECTORY NO.=";DSKF(D,3);"TRACK" :PRINT
90 GOTO 20

対応

用語

ディレクトリ:1枚のディスクに記録されているすべてのファイルの名前、性格および格納位置の表です。

FAT:1枚のディスクの中の記憶場所の状態(どのクラスタが使用中か未使用か)を示す表

DSKI$

60ex
フロッピィディスク入出力
フロッピィディスクから直接読み込んだ内容を文字列として与えます。

書式

DSKI$(d,t,s)
d:ドライブ番号 (1≦d≦2)
t:トラック番号 (0<≦79)
s:セクタ番号 (1≦s≦16)

解説

通常のファイル操作とは無関係に、フロッピィディスク上の指定したセクタから直接読み込みを行います。

DSKI$は、そのパラメータにより指定されたセクタ上に書かれているデータ256バイトを0番バッファに読み出すとともに、最初の255文字の文字列を関数の値として返します。

文字列の長さは255文字までなので、関数の値として256バイトのデータすべてを得ることはできません。そこで、通常のランダムアクセスの場合と同じようにFIELD文によって、0番バッファへ複数の文字列変数を割り当てることによりこれを解決することができます。

指定できる値の範囲は、ドライブ番号は1から接続しているドライブの数まで、トラック番号は0から79まで、セクタ番号は1から16までです。これらの値の範囲を越えて指定した 場合には、??DN Error または??TS Errorになります。但し、1Dのディスクドライブを使用の場合、トラック番号は0から34までしか指定できません。


10 INPUT "ドライブ NO.";D;
20 INPUT "トラック   NO.";T;
30 INPUT "セクタ   NO.";S;
40 INPUT "キーワード";X$
50 D$=DSKI$(D,T,S)
60 IF X$=LEFT$(D$,LEN(X$)) GOTO 90
70 PRINT "ちがっています。"
80 END
90 PRINT "あっています。"
100 END

注意:上記の例は、DSKO$の例と対応しています。 DSKO$の例を実行してから、DSKI$の例を実行してください。

対応

??DN Error (Bad Drive Number Error):接続していないフロッピィディスクドライブ番号を指定しています。

??TS Error (Bad Track/Sector Error) :DSKI$関数やDSKO$文で、トラック番号またはセクタ番号の指定が間違えています。

用語

DSKO$

60ex
フロッピィディスク入出力
フロッピィディスクに情報を直接書き込みます。

書式

DSKO$ d,t,s
d:ドライブ番号 (1≦d≦2)
t:トラック番号 (0<≦79)
s:セクタ番号 (1≦s≦16)

解説

通常のファイル操作とは無関係に、フロッピィディスク上の指定したセクタに0番のバッファの内容を書き込みます。したがってその前に、0番のバッファにデータをセットしてお くことが必要です。

0番バッファは、通常のディスクファイル操作の際には用いることはできませんが、DSKI$とDISKO$による直接操作の場合のみ、使用することができます。

バッファには、256文字分入りますが、1個の文字型変数に入る文字列の長さは255文字です。ランダムアクセスの場合と同じようにFIELD文により、0番バッファへ変数領域を割り当てます。そしてLSET、RSET文により、0番のバッファにデータをセットします。

指定できる値の範囲は、ドライブ番号は1から接続しているドライブの数まで、トラック番号は0から79まで、セクタ番号は1から16までです。これらの値の範囲を越えて指定した場合には、??DN Erorまたは??TS Errorになります。但し、1Dのディスクドライブ使用の場合、トラック番号は0から34までしか指定できません。


10 INPUT "ドライブ NO.";D;
20 INPUT "トラック   NO.";T;
30 INPUT "セクタ   NO.";S;
40 INPUT "キーワード";X$
50 FIELD#0,255 AS W$
60 LSET W$=X$
70 DSKO$ D,T,S
80 END

上記の例は、DSKI$の例と対応しています。

対応

DSKI$:フロッピィディスクから直接読み込んだ内容を文字列として与えます。

用語

END

60
定義文
プログラムの終了を宣言します。

書式

END

解説

プログラムの実行を終了し、すべてのファイルをクローズしてコマンドレベルに戻ります。END文はプログラムの実行を終了させたいときに使い、また、いくつ使ってもかまいません。 プログラムの最後のEND文は省略することができますが、この場合、ファイルのクローズは行いません。


10 INPUT "INPUT NO.(1 OR 2)";N
20 IF N=1 THEN PRINT"おしまい !":END
30 IF N=2 THEN PRINT"とまっちゃった。":STOP
40 GOTO 10

対応

用語

EOF

60ex
フロッピィディスク入出力
ファイルの終わりを検出します。

書式

EOF(n)
n:ファイル番号(1≦n≦15)

解説

シーケンシャルファイルのINPUTモードの時にファイル番号で指定したファイルが終わりに達したかどうかを調べる関数です。関数の値として終わりに達していれば真(-1)、そうでなければ偽(0)を返します。ファイル番号で指定されたファイルは INPUTモードでオープンされていなければなりません。


10 OPEN "データ " FOR INPUT AS #1
20 IF EOF(1) THEN END
30 INPUT #1,N,R
40 PRINT "SQR("N" )="R
50 GOTO 20

注意:上記の例は、141ページのPRINT#の例と対応しています。PRINT#の例を実行してから、EOFの例を実行してください。

対応

用語

ERASE

SR
定義文
配列変数を消去します。

書式

ERASE d1[,d2...]
d1,d2...:配列変数名

解説

指定した配列変数を消去します。以後、同一変数名の配列変数をDIM文で宣言することができます。もし、ERASE文を実行せずに同一変数名で宣言すると、?DD Errorになります。

また、その配列変数に割り当てられていたメモリエリアを、他の目的に使用することもできます。


10 ON ERROR GOTO 70
20 DIM A(100),B(30)
30 ERASE A
40 DIM A(60)
50 DIM B(20)
60 END
70 PRINT ERL;"ギョウニ DD ERROR ガ ハッセイ シマシタ。
80 RESUME NEXT

対応

DIM:配列変数の要素の大きさを指定して配列を宣言し、メモリ領域を確保します。

?DD Error (Dupulicate Definition Error):すでに宣言された配列と同じ名前の配列をDIM文で再び宣言しています。

用語

ERR

SR
エラー処理
発生したエラーのエラーコード及びエラーの発生した行番号を与えます。

書式

ERL/ERR

解説

エラーが発生した時点で、システム変数ERRはエラーコードを、ERLはエラーの発生した行番号を持っています。エラーがダイレクトモードの実行によって生じた場合、ERLとして65535を持ちます。

一般に、ERR及びERLは ON ERROR GOTO文によって指定したエラー処理ルーチンにおいて、処理の流れを制御するために使います。


5 REM***ERL/ERR***
10 ON ERROR GOTO 100
20 INPUT"    3と2でわりきれる しぜんすうは";N
30 ERL=30
40 IF N=0 OR N<0 THEN ERROR 200
50 IF INT(N/3)<>(N/3) THEN ERROR 201
60 IF INT(N/2)<>(N/2) THEN ERROR 201
70 IF ERL<>30 THEN 20
80 COLOR10:PRINT"***  "N"は 6のばいすうです。"
90 COLOR 16:END
100 COLOR 11:IF ERR=200 THEN PRINT"    しぜんすうとは せいのせいすうです。"
110 IF ERR=201 AND ERL=50 THEN PRINT"3でわりきれません。"
120 IF ERR=201 AND ERL=60 THEN PRINT"2でわりきれません。"
130 PRINT:COLOR 16:RESUME NEXT

対応

用語

ERROR

SR
エラー処理
エラー発生のシミュレート、エラー番号のユーザー定義をします。

書式

ERROR n
n:整数表記(1≦n≦255)

解説

整数表記の値は1から255までの範囲の数を指定します。資-1ページ資料1:エラーメッセージ表に記載しているエラーコードはBASICで定義しているエラーで、これらのエラーコードを指定すると対応するエラーメッセージが出力され、コマンドレベルに戻ります。

また、未定義のエラーコードのエラーをプログラム中で条件に応じてERROR文で発生させ、ON ERROR GOTO文によって指定したエラー処理ルーチン内で、ユーザが定義したエラーコードとして使用することができます。


10 SCREEN1,1,1:COLOR 16,1:CLS
20 INPUT "ERROR NO.(1-225)";E
30 IF 0<E AND E<256 THEN 40 ELSE 20
40 PRINT "RROT";E;"の シミュレートをします"
50 ERROR E
60 END

対応

用語

EXEC

60
機械語関係コマンド
機械語プログラムを実行します。

書式

EXEC a
a:機械語プログラムの先頭番地(0≦a≦&HFFFF)

解説

指定した番地から始まる機械語プログラムの実行を開始します。

機械語プログラムの実行後、N66SR-BASIC又はN66-BASICに戻るには、機械語プログラムの最後にRET(&HC9)命令を置きます。


10 CLEAR,&HDFFF:CLS:COLOR 11
20 PRINT"     がめん2に もじ(NEC)を だします。"
30 PRINT"       HIT ANY KEY":COLOR 16
40 IF INKEY$=""" THEN 40
50 SCREEN 1,2,2:WIDTH40,20:CLS
60 FOR I=&HE000TO &HE02A
70 READ D$:D=VAL("&h"+D$)
80 POKE I,D:NEXT I
90 EXEC &HE000
100 LOCATE 0,17:END
110 DATA21,00,00,06,AA,36,4E,23,23,36
120 DATA45,23,23,36,43,23,23,36,20,23
130 DATA23,10,EE,21,01,00,06,E3,36,09
140 DATA23,23,36,0A,23,23,36,0C,23,23
150 DATA10,F2,C9

対応

用語

EXP

60
機能演算
eに対する指数関数の値を与えます。

書式

EXP(x)
x:数式

解説

数式の値に対する指数関数exの値を与えます。


10 FOR X=0 TO 5
20 PRINT "EXP(";X;")=";EXP(X)
30 NEXT X
40 END

対応

用語

FIELD

60ex
フロッピィディスク入出力
バッファに変数領域を割り当てます。

書式

FIELD [#]n,x, AS d1$ [,x2 AS d2$...]
n:ファイル番号(0≦n≦15)
X1,X2...:領域の大きさ(0≦x≦255)
d1$,d2$...:文字列変数名

解説


5 REM *** FIELD ***
10 OPEN "じゅうしょ" AS #1
20 M=LOF(1)
30 R=0:INPUT "レコード NO.";R
40 IF R=0 THEN END
50 PR=INT((R-1)/4)+1
60 LR=R-(PR-1)*4
70 REM *** FIELD ***
80 FIELD#1,(LR-1)*64 AS D$,20 AS N$,30 AS A$,14 AS T$
90 IF PR>M THEN PRINT "ERROR":GOTO 30
100 GET #1,PR
110 PRINT "なまえ   : ";N$
120 PRINT "じゅうしょ   : ";A$
130 PRINT "でんわ   : ";T$
140 PRINT
150 GOTO 30

注意:上記の例は145ページのPUTの例と対応しています。PUTの例を実行してから、FIELDの例を実行してください。

対応

用語

FILES

60ex
ディスクファイル操作コマンド
フロッピィディスクにセーブされているファイルの名前、種類、大きさを画面に表示します。

書式

FILES [d]
d:ドライブ番号(1≦d≦2)

解説

ドライブ番号を指定すると、フロッピィディスクにセーブされているファイルの名前、種類と、その大きさを画面に表示します。ファイルの大きさは、クラスタ単位で表示します。クラスタについては、資-19ページ資料9:ディスクファイルの構造を参照してください。

指定できるドライブ番号は1から接続しているドライブの数までです。また、ドライブ番号を省略した場合には、ドライブ1を選択します。

ファイルの種類は、表示されるファイルの名前と拡張子との区切り文字によって表します。

  • 区切り文字が空白の場合 ... アスキーセーブされたプログラムファイル。OPEN文で作られたBASICのデータファイル。
  • 区切り文字がピリオドの場合 ... バイナリセーブで作られたBASICプログラムファイル。
  • 区切り文字がアスタリスクの場合 ... BSAVEコマンドで作られた機械語プログラムファイル。


10 INPUT "ドライブ NO.";D
20 CLS
30 PRINT"ドライブ"D" の FILES"
40 PRINT
50 FILES D
60 PRINT
70 END

対応

用語

FOR...TO...STEP~NEXT

60ex
流れ制御文
FOR文からNEXT文までを条件に従って繰り返し実行します。

書式

FOR m=n1 TO n2 [STEP n3] ~ NEXT [m]
m...:添字変数名
n1:初期値
n2:終値
n3:増分(省略すると+1)

解説

添字変数はカウンタとして使用し、最初は初期値に設定されます。FOR文以降からNEXT文まで実行すると、カウンタ値はSTEP文で指定した増分だけ増減します。

次に、カウンタ値が終値に達していなければ、終値に達するまでFOR文以降からNEXT文までを繰り返し実行し、カウンタ値が終値に達したらNEXT文の次を実行します。

STEP文が省略された場合、増分+1とみなされます。また増分は負の値をとることもできます。

次の場合には、添字変数に初期値を設定してFOR文以降からNEXT文までの実行を1回だけ行ってから添字変数に増分を増減してNEXT文の次の文を実行します。

  • 増分の値が正で、初期値が終値より大きい場合
  • 増分の値が負で、初期値が終値より小さい場合
  • 初期値と終値が同じ値で増分が0の場合(但し、変数には初期値が代入されています。)

FOR~NEXTは入れ子構造にすることができます。これは1つのFOR~NEXTのなかにもう1つのFOR~NEXTを置くことができるということで、この場合、それぞれの添字変数は別のものを使用しなければなりません。また1つのFOR~NEXTは完全に他のFOR~NEXTの内部になければなりません。

10 FOR I=0 TO...
20 FOR J=1 TO
90 NEXTJ
100 NEXTI

1つのFOR文に対して複数のNEXT文があってもかまいませんが、正しくFOR文に対応していなければなりません。IF文中にNEXT文を使うときには、充分に気をつけてください。


10 FOR I=0 TO 50 STEP 10
20 PRINT I/10,I
30 NEXT I
40 END

対応

用語

FRE

60
機械語関係
メモリの未使用領域の大きさを与えます。

書式

FRE(f)
f:機能

解説

BASICの利用可能なメモリ領域のうちの、未使用領域の大きさを与えます。機能が数値ならメモリの未使用領域の大きさ、文字なら未使用の文字領域の大きさを与えます。


5 REM *** FRE(X) ***
10 PRINT"ユーザメモリ は ";FRE(0)
20 PRINT"もじりょういき は";FRE(A$)
30 PRINT"もじりょういき の じょうげんは";M
40 CLEAR M
50 PRINT"のこり の ユーザメモリ は";FRE(0)
60 PRINT"もじりょういき は";FRE(A$)
70 END

対応

CLEAR:変数の初期化およびメモリ領域の指定をします。

用語

GET

60ex
フロッピィディスク入出力
データをランダムファイルからバッファに読み込みます。

書式

GET [#]n[,r]
n:ファイル番号(1≦n≦15)
r:レコード番号(1≦r)

解説

ファイル番号で指定したファイル中のデータを、対応するバッファ中に読み込みます。指定したファイルは、ランダムファイルとして、OPEN文によって開かれていなければなりません。

ファイル番号はOPEN文で指定したファイルの番号です。レコード番号で指定したレコード256バイトをバッファに読み込みます。レコード番号を省略した場合には、直前に行ったGET文、またはPUT文で指定したレコードの次のレコードを読み込みます。

GET文を行った後、INPUT#文などのシーケンシャルアクセス入力を行った場合には、バッファに入っているデータから入力を行いますので注意してください。


5 REM *** GET# ***
10 OPEN "じゅうしょ" AS #1
20 M=LOF(1)
30 R=0:INPUT "レコード NO.";R
40 IF R=0 THEN END
50 PR=INT(R-1)/4)+1
60 LR=R-(PR-1)*4
70 FIELD#1,(LR-1)*64 AS D$,20 AS N$,30 AS A$,14 AS T$
80 IF PR>M THEN PRINT "ERROR":GOTO 30
90 REM *** GET ***
100 GET #1,PR
110 PRINT "なまえ   : "N$
120 PRINT"じゅうしょ: "A$
130 PRINT""でんわ  : T$
140 PRINT
150 GOTO 30

注意:上記の例は145ページのPUTの例と対応しています。PUTの例を実行してから、GETの例を実行してください。

対応

PUT:バッファ中のデータをランダムファイルに書き込みます。

用語

レコード:1回に入力あるいは出力される1組のデータを呼びます。1レコードの長さは256バイト、すなわち1セクタです。

GET@

60ex
グラフィック表示
アクティブ画面のグラフィック情報を配列変数またはフロッピィディスクに書き込みます。

書式

GET [@][STEP](x1,y1)-[STEP](x2,y2),d
(x1,y1):右上の座標
(x2,y2):右下の座標
d:数値配列名
GET [@][STEP](x1,y1)-[STEP](x2,y2),f$
(x1,y1):右上の座標
(x2,y2):右下の座標
f$:ファイル名

解説

(1)グラフィック画面上の2点(x1,1)と(x2,y2)を結ぶ線を対角とする四角形の領域のグラフイック情報を、配列変数名で指定された配列変数に書き込みます(セーブします)。

配列変数は、グラフィック情報を読み込むために用意する数値型の配列変数の名前です。

ただし、GET@文を実行する前にこの配列変数の大きさを、DIM文によって宣言しておかなければなりません。この配列変数の大きさは次の式によって計算し、N66SR-BASICの場合、()内の小数点以下を切り上げ、N60、N66-BASICの場合、()内の小数点以下を切り捨て、求められる値以上に定義します。なお、式中の(x1,y1)は左上の絶対座標、(x2,y2)は右下の絶対座標です。

N66SR-BASICの場合

( | [ x2 + 1 2 ] - [ x1 + 1 2 ] | + 1 ) × ( | y2 - y1 | + 1 ) × 2 + 4 5 - 1

N60,N66-BASICの場合

( ( [ x2 / 8 ] - [ x1 / 8 ] + 1 ) × ( x2 - y1 + 1 ) ) × 2 + 4 5 + 1

(2)画面上の2点(1,y1)と(x2,y2)を結ぶ線を対角線とする四角形の領域のグラフィク情報をフロッピィディスクにファイル名をつけて書き込みます。

STEPをつけると相対座標になります。


5 REM***GET@***
10 DIM D(60,60)
20 SCREEN 2,2,2:COLOR 2,1:CLS
30 FOR I=6 TO 36 STEP 6
40 CIRCLE(30,40),I,5 ,,,(9+I/50)
50 NEXT I
60 GET@(0,0)-(60,80),D
70 PUT@(70,0),D,PRESET
80 GOTO 80

対応

PUT@:GET@文で書き込んだグラフィック情報を読み、画面上に表示します。

用語

アクティブ画面: SCREEN文の第2パラメータで指定した画面です。

GOSUB-RETURN

60
流れ制御文
サブルーチンのコール、およびサブルーチンからのリターンを行います。

書式

GOSUB m
RETURN
m:先頭行番号

解説

サブルーチンプログラムの先頭行番号をGOSUB文によってコールし、サブルーチンプログラム内のRETURN文によってGOSUB文の次の文へ戻ります。

サブルーチンプログラムとは、1つの独立したプログラムで、RETURNで終わっているものをいいます。サブルーチンプログラムは、GOSUB文によって、いつでも何度でも呼び出すことができます。

1つのサブルーチンプログラムから他のサブルーチンプログラムをコールすることもできます。これをサブルーチンの多重化と呼びます。サブルーチンの多重化はメモリのスタック領域の容量が許す限り行うことができます。もし、スタック領域がたりなくなった場合には、?OM Errorになります。

サブルーチンプログラムは必ずGOSUB文によってコールされなければなりません。もし、単独でサブルーチンプログラムを実行した場合、RETURN文を実行しようとして?RG Errorになります。

また、1つのサブルーチンプログラム内に複数のRETURN文があってもかまいませんが、正しくGOSUB文と対応していなければなりません。


10 S=0
20 FOR I=0 TO 5
30 INPUT"DATA";A
40 GOSUB100
50 NEXT
60 PRINT"ごうけい=";S,"へいきん=";S/5
70 END
100 S=S+A
110 RETURN

対応

用語

?OM Error (Out of Memory Error):プログラムが大きすぎてメモリが足りません。
サブルーチンが自分自身をコールしています。

?RG Error (Return without Gosub Error): GOSUB文がないのにRETURN文が使われています。

GOTO

60
流れ制御文
指定した行ヘジャンプします。

書式

GOTO m
m:行番号

解説

行番号で指定した行へジャンプします。


5 REM *** GOTO ***
10 INPUT"おなまえは ";N$
20 PRINT"1+1=";
30 INPUT C
40 IF C=2 THEN 70
50 PRINT N$;"さん もういちど がんばろう !"
60 GOTO 20
70 PRINT "よくできました。"
80 END

対応

用語

GRP$

SR
文字列操作
指定したセミグラフィックキャラクタコードを持つ文字を与えます。

書式

GRP$(x)
x:数式(0≦x≦255)

解説

数式の値のセミグラフィックキャラクタコードを持つ文字を与えます。テキスト画面、グラフィック画面共に出力できます。WIDTHコマンドで行数を25にすると、セミグラフィックモード(2)を出力します。(資-4ページ資料2:キャラクタコード表参照)

数式の値が0~255の範囲にない場合は、?FC Errorになります。キャラクタコードと文字の対応については、資-4ページの資料2:キャラクタコード表(セミグラフィック)を参照してください。キャラクタコード表(テキスト)のキャラクタ文字を出力したいときは、CHR$関数で行ってください。


10 S=80:E=86:C=0
20 SCREEN 2,2,2:COLOR 16,1:CLS
30 PRINT SPC(4);"START CODE は";S
40 PRINT SPC(4);"END CODE は";E
50 FOR I=S TO E
60 PRINT"GRP$(";I;")=";GRP$(I)
70 C=C+1 :IF C=19 THEN GOSUB 110
75 NEXT:PRINT
80 INPUT"   START&END CODE(0-255)";S,E
90 IF S>255 OR E>255 THEN 80  ELSE 20
100 END
110 CLS:C=0:RETURN

対応

CHR$:指定したキャラクタコードに対応する文字を与えます。

用語

HEX$

60ex
文字列操作
10進数を16進表示の文字列に変換します。

書式

HEX$(x)
x:数式(-65535≦x≦65535)

解説

数式の値を16進に変換して、その文字列を与えます。HEX$関数で変換された文字を数値に戻すには、VAL関数を使用します。


5 REM *** HEX$ ***
10 CLS
20 INPUT " スタート アドレス";S
30 INPUT " エンド アドレス";E
40 FOR I=S TO E STEP 8
50 PRINT HEX$(I);":";:FOR B=0 TO 7
60 PRINT " ";RIGHT$("0"+HEX$(PEEK(I+B)),2);
70 NEXT B:PRINT:NEXT I

対応

VAL:文字列の表わす数値に変換します。

OCT$:10進数を8進数に変換し、その文字列を与えます。

用語

IF...THEN

60
流れ制御文
条件判断を行い、真ならTHENのあとの文を実行します。

書式

IF r THEN s
r:条件式
s:文

解説

条件式が真(0以外)ならばTHEN以降の文を実行し、偽ならば次の文を実行します。

THEN以降の文がGOTO文の場合には、"THEN"または"GOTO"のいずれかを省略することができます。たとえば、IFA=5 THEN GOTO 30の場合には、
IF A=5 THEN 30
または
IF A=5 GOTO 30
とすることができます。

IF...THEN文においてTHENのあとに続けて別のIF文を置いて多重にすることができます。ただし、多重にできるのは1行に書ける範囲に限ります。


5 REM *** IF  THEN ***
10 INPUT"INPUT NO.";N:PRINT
20 IF N=1 THEN PRINT"ABC"
30 IF N=2 THEN PRINT"DEF"
40 IF N=3 THEN PRINT"GHI"
50 IF N=4 GOTO 70
60 PRINT:GOTO10
70 END

対応

用語

条件式には関係演算子や論理演算子がよく使用されます。7ページの1-11:式と演算を参照してください。

INKEY$

60
画面へ出力
キーが押されていればその文字を、押されていなければヌルストリングを与えます。

書式

INKEY$

解説

キーが押されていない状態(キーボードバッファが空)であれば、INKEY$関数はヌルストリング(空白)を返します。

キーが押されている状態(キーボードバッファが空でない)であれば、バッファの先頭から1文字取り出し、その文字を返します。 なお、CTRL+C、STOPキーは、INKEY$関数によって拾うことはできません。また、押されたキーは画面上には表示しません。

INKEY$では、プログラムは停止しませんので、キー入力待ちにするためには、次のようにしてください。

10 A$=INKEY$:IFA$=""THEN 10


5 REM *** INKEY$ ***
10 PRINT "Hit any key or return to end"
20 I$=INKEY$:IF I$="" THEN 20
30 IF ASC(I$)=13 THEN PRINT"おしまい !";END
40 IF ASC(I$)=20 THEN D$=INKEY$:GOTO 20
50 PRINT " キャラクターコード は";ASC(I$)
60 IF ASC(I$)>32 THEN PRINT "おした keyは '";I$;"'key です。"
70 PRINT :GOTO 10

対応

用語

INP

60
I/Oポート入出力
指定した入力ポートの値を与えます。

書式

INP(a)
a:I/Oポートアドレス (0≦a≦&HFF)

解説

I/Oポートアドレスで指定されたポートから1バイト(8ビット)のデータを読み取り、それを関数値として与えます。I/Oポートアドレスとして指定できる値の範囲は0から255(&HFF)までです。I/Oポートアドレスと装置との対応は、38ページの資料13:I/Oポートアドレスを参照してください。


5 REM *** INP ***
10 CLS
20 PRINT "ポート #","バイト"
30 CONSOLE 1,19
40 FOR C=100 TO 175 STEP 5
50 PRINT C,INP(C)
60 NEXT C
70 CONSOLE 0,20
80 END

対応

OUT:指定した出力ポートに情報を出力します。

用語

INPUT

60
画面入出力
指定した変数へデータをキーボードから入力します。

書式

INPUT [d$;]d1[,d2...]
d$:プロンプト文(注釈文)
d1,d2...:変数名

解説

INPUT文を実行すると、疑問符(?)と1文字分のスペースを画面に表示し、キー入力待ちの状態になります。プロンプト文がある場合には、プロンプト文と疑問符(?)と1文字分のスペースを画面に表示します。

データはRETURNキーを押すことによって入力し、変数に代入します。変数をカンマ(,)で区切って複数個指定した場合には、入力するデータもカンマで区切って変数の数だけ入力しなければなりません。もし、データの個数が変数の個数より少ない場合には、疑問符が2つ(??)と1文字分のスペースを表示し残りのデータの入力待ちになります。データの個数が変数の個数より多い場合には、"??Extra Ignored"と表示し、余分なデータを無視して次の文を実行します。

また、対応する変数とデータの型は一致していなければなりません。もし一致しなかった場合には、"?Redo from start"と表示して再びキー入力待ちになります。

データを入力する時にRETURNキーだけ押した場合には、何も行われなかったとみなし、変数の内容は、INPUT文を実行する直前と変わりません。

文字変数に文字列を入力する場合、特にカンマ(,)や文字列の前後の意味のある空白を入力する場合には、ダブルクォーテーション(")で文字列をくくります。この場合以外は文字列をダブルクォーテーションでくくる必要はありません。また、ダブルクォーテーションを 文字として入力することは、文字列をダブルクォーテーションでくくった場合にはできませんが、くくらなかった場合には文字列の最後の1文字をダブルクォーテーションにすることができます。


5 REM *** INPUT ***
10 CLS
20 INPUT "* あなた の おなまえは";N$
30 INPUT "*でんわ ばんごうは";T$
40 LOCATE12,8
50 PRINT"Name:";N$
60 LOCATE13,9
70 PRINT"Tel:";T$
80 END

対応

PRINT:アクティブ画面に情報を表示します。

用語

INPUT#

60ex
フロッピィディスク入出力
シーケンシャルファイルからデータを読み込みます。

書式

INPUT# n,d1[,d2...]
n:ファイル番号(1≦n≦15)
d1,d2...:変数名

解説

データを読み込む対象がシーケンシャルファイルであることと、疑問符(?)を表示しないことを除けば、INPUT文とほぼ同じです。

ファイル番号は、OPEN文によって、そのファイルをINPUTモードとしてオープンしたときに指定した番号です。

変数とデータの型は一致していなければなりません。また、変数の個数よりデータの個数の方が少ない場合には、??EF Errorになりますが、多い場合には残りのデータは無視します。


5 REM *** DINPUT# ***
10 OPEN "データ" FOR INPUT AS #1
20 IF EOF(1) THEN END
30 INPUT #1,N,R
40 PRINT "SQR("N") ="R
50 GOTO 20

上記の例は141ページのPRINT#の例と対応しています。PRINT#の例を実行してから、INPUT#の例を実行してください。

対応

PRINT#:シーケンシャルファイルにデータを書き込みます。

用語

??EF Error (Input Past End Eror):シーケンシャルファイルにおいて、全てのデータを読み込んでいるのにINPUT#命令で読み込もうとしています。

INPUT# (その他入出力)

60ex
その他の入出力
データを指定した変数へ入力します。

書式

INPUT# -f,d1[,d2...]
f:入力機器番号(0≦f≦2)
d1,d2...:変数名

解説

INPUT#文はINPUT文に似ていて、指定した変数へデータを入力しますが、入力機器番号を指定することによって入力機器を変えることができます。

入力機器と入力機器番号は次のように対応しています。

  • INPUT#-0...キーボード
  • INPUT#-1...カセットテープ
  • INPUT#-2...RS-232C

ディスクファイルのうち、シーケンシャルファイルからの入力もINPUT#文を使います。入力機器を指定する場合は、INPUT#のあとにマイナス(-)がつきますので気をつけてください。

変数と入力データの関係はINPUT文と同じです。変数の個数と型は、データの変数の個数と型に一致していなければなりません。


5 REM *** INPUT# ***
10 DIM A$(2),B$(2),C$(2)
20 PRINT" キーボードから もじを 3かい INPUT してください。"
30 FOR I=0 TO 2
40 INPUT#-0,A$(I)
50 NEXT I:PRINT
60 PRINT" *がめんに ひょうじします。"
70 PRINT "Hit any key or RETURN to END"
80 IN$=INKEY$:IF IN$=""THEN80
90 IF ASC(IN$)=13 THEN END
100 FOR I=1 TO 3
110 PRINT#-0,I;" ";A$(I-1)
120 NEXT I
130 END

対応

PRINT#:情報を出力します。

用語

INT

60
演算
数式の値を越えない最大の整数値を与えます。

書式

INT(x)
x:数式

解説

数式の値を越えない最大の整数値を与えます。


5 REM *** INT(X) ***
10 INPUT "ステップは";H
20 FOR I=-1 TO 1 STEP H
30 PRINT"*** X=";I;" ***"
40 PRINT"INT(";I;")=";INT(I)
50 PRINT:NEXT I
60 END

対応

用語

KANJI

mkII
漢字出力
漢字を画面に表示します。

書式

KANJI [STEP](x,y),c,k1,[k2...]
(x,y):左上の座標
c:漢字の色(1≦c≦16、省略すると事前にCOLOR文で指定した色)
k1,k2...:漢字コード及び文字列(内蔵漢字ROMのみの場合:1≦k≦1024、拡張漢字ROMカートリッジを付けた場合:拡張漢字ROMカートリッジの取扱説明書を参照)

解説

「グラフィック画面上の(x,y)で指定された位置に漢字および文字を表示します。STEPをつけると相対座標による指定になります。(x,y)は漢字または文字列を表示しようとする左上の座標を指定します。

漢字の色は1≦c≦16のカラーコードで指定します。N66SR-BASICの場合、13≦c≦16のカラーコードを指定すると、パレットの色で漢字を表示することができます。漢字はディスプレイモードが15色または4色グラフィックモードの場合に表示できます。カラーコードは資料17:カラーコードと色の関係を参照してください。

内蔵漢字ROMの場合、漢字を表示するには資料3:漢字コード表を参照して漢字コードで指定します。漢字の他にキャラクタ文字も共に表示することができます。なお、N66SR-BASICの場合、キャラクタ文字も漢字と同じ16×16のドットで表示します。(資-4ページ資料2:キ ャラクタコード表参照) 拡張漢字ROMカートリッジ(PC-6601-01)を付けた場合はJISコードで指定します。詳しくは拡張漢字ROMカートリッジの取扱説明書を参照してください。


10 SCREEN 3,2,2:PALET:COLOR,1:ROLL:CLS
20 PALET 13,1:PALET 14,10:PALET 15,11
30 S=0:KN=0:C=2:Y=4:CN=32
40 FOR X=0 TO 620 STEP 20
50 IF C=4 THEN C=1
60 C=C+1:KN=KN+1:IF KN>1024 THEN 80
70 KANJI(X,Y),C,KN:GOTO 100
80 CN=CN+1:IF CN=255 THEN ROLL:END
90 KANJI(X,Y),C,CHR$(CN)
100 NEXT X
110 IF Y=184 THEN GOSUB 200:GOTO 40
120 IF S=1 THEN GOSUB 210 :GOTO 40
130 Y=Y+20 :GOTO 40
200 Y=-16:M=4
210 LINE(0,Y+20)-(639,Y+40),1,BF
220 FOR R=1 TO (20+M)/2:ROLL,2:NEXT
230 S=1:Y=Y+20:M=0:RETURN

対応

用語

KEY

60
定義文
ファンクションキーの内容を定義します。

書式

KEY n,d$
n:キー番号(1≦n≦10)
d$:定義する文字列式(d$の文字数≦8)

解説

ファンクションキーは5つあり、SHIFTキーを押した状態と合計10の文字列を記憶させておくことができます。

キー番号は1から10までで、6から10まではシフトモードです。

各ファンクションキーは最大8文字までの文字列およびコントロール文字などを記憶でき、キーボードから入力できない文字は、CHR$関数をプラス記号で継いで使います。たとえば、RUNを記憶させたければ、文字列は"RUN"+CHR$(13)とします。画面の最下行にファンクションキーの内容を表示すると、N66SR-BASIC、N66-BASICモードでは6文字、N60-BASICおよびN60拡張BASICでは5文字までしか表示しません。


5 REM *** KEY ***
10 KEY1,"CLOAD"
20 KEY3,"CSAVE"
30 KEY4,"RUN"+CHR$(13)
40 PRINT"Hit any key to back !"
50 IN$=INKEY$:IF IN$="" THEN 50
60 KEY1,"color"
70 KEY3,"goto"
80 KEY4,"list"
90 END

対応

用語

コントロール文字:コードの0~31のキャラクタで、文字ではなく、特殊な働きをするものです。

KILL

60ex
ディスクファイル操作コマンド
フロッピィディスクにセーブされているファイルを削除します。

書式

KILL f$
f$:ファイル名

解説

ファイル名で指定したファイルをフロッピィディスクから削除します。

削除するファイルはクローズ状態になっていなければなりません。もしオープン状態のファイルを削除しようとすると、??AO Errorとなります。また、1つのKILLコマンドでは1つのファイルしか削除できません。

KILLコマンドはすべてのディスクファイル(プログラム、ランダムデータ、シーケンシャルデータ)について使用できます。

ドライブの指定は、ファイル名の前にドライブ番号を含めることによって行います。省略した場合、ドライブ1を指定したとみなされます。


KILL "name"

対応

用語

??AO Error (File Already Open Error):オープンされているファイルを削除(KILL)しようとしています。

LCOPY

60
プリンタ出力
画面の情報をプリンタに出力します。

書式

LCOPY [f]
f:コピーモード

解説

コピーモードは1か2の値をとり、それぞれ次のように働きます。省略した場合には1が選択されます。N60-BASICおよびN60-拡張BASICモードの場合には、コピーモードを省略します。

  • f=1:200×320ドットでプリンタにコピーします。
  • f=2:400×320ドットでプリンタにコピーします。


5 REM***LCOPY***
10 SCREEN 3,2,2:COLOR ,1:CLS
20 FOR I=1 TO 3
30 CIRCLE(I*100,100),30,I+1
40 PAINT(I*100,100),I+1,I+1
50 NEXT
60 READ A,B,C$
70 KANJI(60,40),2,A,B,C$
80 LCOPY2
90 END
100 DATA 86,938,"を コピーします。"

注意:BASICモードとLCOPY文が実行できるプリンタの関係は次の通りです。

  コピー機能
N66SR-BASIC,N66-BASIC
モードのLCOPY
N60-BASICおよび
N60-拡張BASICモードのLCOPY
1(200×320) 2(400×320)
プリンタ PC-6021 × ×
PC-2021 × ×
PC-8023C
PC-8024
PC-8027
PC-8821
×
PC-8822
PC-8824
PC-8825
PC-PR101
PC-PR103
PC-PR104
PC-PR201
PC-PR202
×
PC-PR401
PC-PR402 ×
PC-6022
PC-6023
PC-8826
× × ×

対応

用語

LEFT$

60
文字列操作
文字列の左側から任意の長さの文字列を与えます。

書式

LEFT$(d$,x)
d$:文字列
x:数式(0≦x≦d$の文字数)

解説

文字列の左側から数式で指定した文字数の文字列を与えます。数式の値が文字列の総文字数以上の場合には、文字列のすべてを与えます。また、数式の値が0の場合にはヌルストリングを与えます。

LEFT$("ab",3) → ab

LEFT$("ab",0) → ""


10 CLS
20 N$="12345"
30 FOR I=1 TO 5
40 PRINT LEFT$(N$,I)
50 NEXT I
60 END

対応

RIGHT$:文字列の右側から任意の長さの文字列を与えます。

用語

LEN

60
文字列操作
文字列の文字数を与えます。

書式

LEN(d$)
d$:文字列

解説

表示(出力)されない文字や空白も文字数に数えます。つまり、キャラクタコードの0から255までのキャラクタはすべて文字として数えます。(資-4ページ資料2:キャラクタコード表参照)


5 REM *** LEN(X$) ***
10 INPUT "あなた の おなまえは";N$
20 PRINT "'";N$;"'は";LEN(N$);" もじです。"
30 END

対応

用語

LET

60
定義文
変数に値を代入します。

書式

LET d=s
d:変数名
s:式

解説

LETは省略できます。つまり、式の値を変数名に代入するには、等号だけでもかまいません。式は数値でも文字列でもかまいませんが、変数の型と一致していなければなりません。もし、型が一致しない場合には?TM Errorになります。


5 REM *** LET ***
10 LET A=987
20 LET B=.56
30 C=A+B
40 PRINT"A  =";A
50 PRINT"B  =";B
60 PRINT"A+B=";C
70 END

対応

用語

?TM Eror (Type Mismatch Eror):文字と数値をいっしょに取り扱っています。

LFILES

60ex
ディスクファイル操作コマンド
フロッピィディスクにセーブされているファイルの名前、種類、大きさをプリンタに出力します。

書式

LFILES [d]
d:ドライブ番号(1≦a≦2)

解説

ドライブ番号で指定された、フロッピィディスクにセーブされているファイルの名前、種類と、その大きさをプリンタに出力します。ファイルの大きさは、クラスタという単位で表示します。

指定できるドライブ番号は1から接続しているドライブの数までです。また、ドライブ番号を省略した場合には、ドライブ1が選択されます。

出力されるファイルの種類はFILESコマンドの場合と同じです。


10 INPUT "ドライブ NO.";D
20 PRINT
30 PRINT"ドライブ"D" の FILES をプリンタ に アウトプット します"
40 LFILES
50 PRINT
60 END

対応

FILES:フロッピィディスクにセーブされているファイルの名前、種類、大きさを画面に表示します。

用語

クラスタ:1トラック=2クラスタ=16セクタ クラスタ単位でファイルを管理します。(1クラスタ=8セクタ)

LINE

60
グラフィック表示
指定された2点間に直線を引きます。

書式

LINE [STEP][(x1,y1)]-[STEP](x2,y2)[,c][,B[F]]
(X1,y1):始点の座標
(x2,y2):終点の座標
c:色(1≦c≦16)
B,BF:オプション機能

解説

グラフィック画面上の2点(x1,y1)と(x2,y2)を結ぶ直線を描きます。(x1,y1)が省略された場合、その直前に実行されたグラフィック文の座標の値を採用します。直前に実行されたグラフィック文がLINE文の場合には終点の座標を採用します。また、STEPをつけると相対座標による指定になります。

引く線の色は1≦c≦16のカラーコードで指定します。N66SR-BASICの場合、13≦c≦16のカラーコードを指定しますと、パレットの色で線を描くことができます。省略された場合、現在COLOR文で指定されているグラフィクスの色が用いられます。BASICモード、ディスプレイモードによって指定できるカラーコードが異なりますので、資-54ページ資料17:カラーコードと色の関係を参照してください。

オプション機能は、BかBFのどちらかを指定することができます。BはBoxの意味で、(X1,y1)と(x2,y2)の2点を対角とする四角形の箱を描き、BFはBox Fillの意味でその四角形を塗りつぶします。


5 REM *** LINE ***
10 SCREEN 2,2,2:CLS:C=2
20 FOR X=0 to 319 STEP 4
30 LINE(X,0)-(319-X,199),C
40 NEXT:C=C+1:IF C=17 THEN C=1
50 FOR Y=0 TO 199 STEP 4
60 LINE(0,199-Y)-(319,Y),C
70 NEXT
80 C=C+1
90 GOTO 20

対応

用語

LIST

60
プログラム作成コマンド
メモリにあるプログラムの全部または一部を画面に表示します。

書式

LIST [m][-[n]]
m:開始行番号
n:終了行番号

解説

指定された開始行番号から終了行番号までのプログラムリストを画面に表示します。LISTコマンドは実行し終わると、いつでもコマンドレベルに戻ります。

  1. 行番号を省略した場合は、プログラムの先頭から最後まで全部をリストアウトします。
  2. 開始行番号のみを指定した場合は、その指定した行だけを表示します。
  3. 最初の行番号とそれに続くハイフンまでを指定した場合は、その行番号から始まり、それよりも大きい行番号の行すべてを表示します。
  4. ハイフンとそれに続く終了行番号だけを指定した場合は、プログラムの始めからその行番号までの行を表示します。
  5. 両方の行番号をハイフンでつないで指定した場合は、その範囲のすべての行を表示します。
    リストアウトの途中で STOPキーを押すと、リストアウトを中止します。
    リストアウトの途中でESCキーを押すと、リストアウトを中断し、再びキーを押すと再開します。


5 REM *** LIST ***
10 CLS
20 PRINT" 1=LIST         2=LIST 70-   3=LIST -80"
30 PRINT" 4=LIST 20-60   5=NEW":PRINT
40 INPUT "INPUT NO.";A
50 ON A GOTO 70,80,90,100,110
60 GOTO20
70 LIST
80 LIST 70-
90 LIST -80
100 LIST 20-60
110 NEW

対応

用語

コマンドレベル:ダイレクトモードでキー入力(コマンド)待ちになっている状態。

LIST L(N66-BASIC)

mkII
プログラム作成コマンド
指定した行番号を使用している行番号を画面に表示します。(N66SR-BASICでは使用できません)

書式

LIST L [,m]
m:行番号

解説

指定された行番号が、参照されている文にある場合、その行の行番号を画面に表示します。参照する文とは、GOTO文、GOSUB文、ON...GOTO文、ON...GOSUB文、IF文、RESTORE文、(RUNコマンド)、(LISTコマンド)のことです。

行番号の指定を省略するとすべての行について行番号のリストを表示します。


10 INPUT"INPUT NO.":PRINT
20 IF N=1 THEN PRINT"ABC"
30 IF N=2 THEN PRINT"DEF"
40 IF N=3 THEN PRINT"GHI"
50 IF N=4 GOTO 70
60 PRINT:GOTO 10
70 END

LIST L
00010 -     00060
00020  -
00030  -
00040  -
00050  -
00060  -
00070  -    00050
OK

対応

用語

LIST V(N66-BASIC)

mkII
プログラム作成コマンド(N66SR-BASICでは使用できません)
指定した変数名を使用しているすべての行の行番号を画面に表示します。

書式

LIST V[,d]
d:変数名

解説

指定された変数名とその変数名が使われている行の行番号をすべて画面に表示します。

変数名を省略するとすべての変数名についてそれぞれ使われているすべての行番号のリストを表示します。

変数名は、頭から2文字までしか表示しません。オプション文字の"R"と"A"と"B"と“BF”、 NAME文とFIELD文とOPEN文の“AS”、OPEN文の“AP[PEND]”、およびPUT文の“X[OR]”も変数名として扱い表示します。

なお、配列の場合には、配列変数名の後ろにカッコをつけて、単純変数名と区別します。


10 INPUT"INPUT NO.":PRINT
20 IF N=1 THEN PRINT"ABC"
30 IF N=2 THEN PRINT"DEF"
40 IF N=3 THEN PRINT"GHI"
50 IF N=4 GOTO 70
60 PRINT:GOTO 10
70 END

LIST V
N     -    00020    00030    00040    00050

対応

用語

LLIST

60
プログラム作成コマンド
メモリにあるプログラムの全部または一部をプリンタに出力します。

書式

LLIST [m][-[n]]
m:開始行番号
n:終了行番号

解説

指定された開始行番号から終了行番号までのプログラムリストをプリンタに出力します。LISTコマンドがプログラムリストを画面に表示するのに対し、LLISTコマンドがプログラムリストをプリンタに出力すること以外はLISTコマンドと同じです。



対応

LIST:メモリにあるプログラムの全部または一部を画面に表示します。

用語

LLIST L(N66-BASIC)

mkII
プログラム作成コマンド(N66SR-BASICでは使用できません)
指定した行番号を使用している行の行番号をプリンタに出力します。

書式

LLIST L[,m]
m:行番号

解説

指定された行番号が、参照されている文にある場合、その行の行番号をプリンタに出力します。LIST Lコマンドが画面に表示するのに対し、LLIST Lコマンドがプリンタに出力すること以外はLIST Lコマンドと同じです。



対応

LIST L:指定した行番号を使用している行の行番号を画面に表示します。

用語

LLIST V(N66-BASIC)

mkII
プログラム作成コマンド
指定された変数名が使われているすべての行の行番号をプリンタに出力します。

書式

LLIST V[,d]
d:変数名

解説

指定された変数名とその変数名が使われている行の行番号をすべてプリンタに出力します。

LIST Vコマンドが画面に表示するのに対し、LLIST Vコマンドがプリンタに出力すること以外はLIST Vコマンドと同じです。



対応

LIST V:指定された変数名が使われている行の行番号を画面に表示します。

用語

LOAD

60ex
プログラムファイル操作コマンド
プログラムをフロッピィディスクからメモリへロードします。

書式

LOAD f$,[R]
f$:ファイル名

解説

ファイル名で指定されたプログラムファイルをフロッピィディスクからメモリ上に読み込みます。ロードするプログラムは、SAVEコマンドを使ってディスクにファイルされたものです。ロードを実行すると、開いているファイルをすべて閉じ、変数はその値が失われます。

Rオプションをつけると、ファイルは開かれたままで、プログラムをロードし、ただちに実行を開始します。

LOADコマンドは、指定されたファイルを見つけて、実際のプログラムのロードを開始するまでは、メモリ上のプログラムを保存します。


load "test"
Ok

対応

SAVE:メモリにあるプログラムをフロッピィディスクにセーブします。

用語

LOC

60ex
フロッピィディスク入出力
入出力したレコード番号を与えます。

書式

LOC(n)
n:ファイル番号(1≦n≦15)

解説

ファイル番号で指定されたファイルがランダムファイルの場合には、LOC関数は、そのランダムファイルに対して最後に読み書き(GET、PUT)したレコード番号を返します。

ファイル番号で指定されたファイルが、シーケンシャルファイルの場合には、そのファイルがオープンされてから、読み書きされたセクタの総数を返します。

指定したファイルは、OPEN文によってオープンされていなければなりません。ファイル番号はOPEN文で指定したファイルの番号です。


10 INPUT "データ ファイルめい";F$
20 OPEN F$ FOR INPUT AS #1
30 IF EOF(1) GOTO 60
40 INPUT #1,D$
50 GOTO 30
60 S=LOC(1)
70 PRINT "しょよう セクタ  すう="S
80 PRINT "しょよう クラスタ すう="INT(S/8)+1
90 END

対応

用語

レコード番号:ランダムファイルの際、1回に入力あるいは出力される1組のデータを「レコード」と呼び、そのレコードを記録する場所に付けた番号をレコード番号といいます。

セクタ:1クラスタ=8セクタ。

LOCATE

60
画面入出力
画面のカーソルの位置を指定します。

書式

LOCATE [x][,[y][,c]]
x:x座標(0≦x≦39及び79)
y:y座標(O≦y≦19及び24)
C:カーソルスイッチ(ON=1、OFF=0)

解説

カーソルを画面のキャラクタ座標(x,y)の位置へ移動します。

xは水平座標を表し、省略した場合は0とみなします。

yは垂直座標を表し、省略した場合は現在カーソルがセットされている行とみなします。

これらは共に画面の左上を(0,0)とするキャラクタ座標により指定します。

カーソルスイッチはカーソルの状態を決めるスイッチで、0だと表示しなくなり、1で表示します。N60、N66-BASICの場合、カーソルスイッチの指定はできません。

注意:書式のx座標、y座標の範囲は、N66SR-BASICの範囲です。N60、N66-BASICについては、19ページ「1-16-2 N60、N66-BASICの座標系」を参照してください。


5 REM *** LOCATE ***
10 A$="ABCDEFGH"
20 CLS:FOR I=1 TO 8
30 LOCATE 3+I,I-1:PRINT LEFT$(A$,I)
40 NEXT I
50 END

対応

用語

LOF

60ex
フロッピィディスク入出力
ファイルの総レコード数を与えます。

書式

LOF(n)
n:ファイル番号(1≦n≦15)

解説

ファイル番号で指定されたファイルがシーケンシャルファイルの場合、LOC関数では、そのシーケンシャルファイルに対して最後に読み書きしたレコード番号を返しますが、ランダムファイルの場合、そのファイルの最大レコード番号を返します。

指定したファイルは OPEN文によってオープンされていなければなりません。ファイル番号はOPEN文で指定したファイルの番号です。


10 OPEN "じゅうしょ" AS #1
20 M=LOF(1)
30 R=0:INPUT "レコード NO.";R
40 IF R=0 THEN END
50 PR=INT((R-1)/4)+1
60 LR=R-(PR-1)*4
70 FIELD#1,(LR-1)*64 AS D$,20 AS N$,30 ASA$,14 AS T$
80 IF PR=<M THEN GET#1,PR
90 INPUT "なまえ   ";X1$
100 INPUT "じゅうしょ";X2$
110 INPUT "でんわ  ";X3$
120 LSET N$=X1$:LSET A$=X2$:LSET T$=X3$
130 PUT #1,PR
140 GOTO 20

注意:上記の例は77ページのGETの例と対応しています。

対応

用語

LOG

60
演算
自然対数を与えます。

書式

LOG(x)
x:数式

解説

数式の値に対する自然対数(eを底数とする対数)log eXの値を与えます。


5 REM *** LOG ***
10 FOR I=10 TO 60 STEP 10
20 PRINT " LOG(";I;")=";LOG(I)
30 NEXT I
40 END

対応

用語

EXP:eに対する指数関数の値を与えます。

LPOS

60
プリンタ出力
現在のプリンタのヘッドの位置を与えます。

書式

LPOS(x)
x:ダミー

解説

プリンタのヘッドの水平方向の位置を与えます。

ダミーは意味を持ちません。


10 PRINT LPOS(X)
20 LPRINT "abcdefg";
30 PRINT "at 30:";LPOS(X)
40 LPRINT "hijklmnop";
50 PRINT "at 50:";LPOS(X)
60 LPRINT "qrs"
70 PRINT "at 70:";LPOS(X)
80 END

対応

用語

LPRINT

60
プリンタ出力
プリンタに情報を出力します。

書式

LPRINT [s1{, | ;} ...]
s1,...:式

解説

指定した式の値や文字列をプリンタに出力します。式が省略されている場合は改行のみを行ないます。式の値や文字列を表示する領域は、あらかじめ各行を14文字ごとに分割して定められており、区切り記号にコンマを使うと次の領域の始めから、また、セミコロンを使うと直前にプリントしたもののすぐ後ろに続いて次の値や文字列が出力されます。

式の最後にセミコロンおよびコンマを指定すると改行動作をおこさず、その行で次のLPRINT文による出力を続行します。

注意:変数と"で囲まれた文字列との区切りに限って","または";"を省略することができ、このときはセミコロンと同様の働きをします。

また、数値の前に符号のための桁を確保します。

数値の絶対値が100000000以上または0.01未満になると指数形式で出力されます。


10 A=123:B=456
20 A$="dog":B$="cat"
30 LPRINT A,B
40 LPRINT A;B
50 LPRINT A,B,78,91
60 LPRINT A$;B$
70 LPRINT
80 LPRINT A;B;A$" and "B$
90 END

対応

PRINT:アクティブ画面に情報を表示します。

用語

LSET

60ex
フロッピィディスク入出力
バッファにデータを左づめで書き込みます。

書式

LSET d$=s$
d$:文字変数名
s$:文字列式

解説

Left Setの意味でランダムファイルのバッファのFIELD文で定義した文字変数に該当する領域にデータを書き込みます。書き込むデータは文字型データでなければならず、数値データはMKS$によって文字型データに変換します。

文字列式の文字数がFIELD文で割り当てられた長さより短い場合は左づめにし、領域(フィールド)の右側を空白で満たします。また、文字列がフィールドより長い場合は、右側の部分が失われます。


10 OPEN "じゅうしょ" AS #1
20 M=LOF(1)
30 R=0:INPUT "レコード NO.";R
40 IF R=0 THEN END
50 PR=INT((R-1)/4)+1
60 LR=R-(PR-1)*4
70 FIELD#1,(LR-1)*64 AS D$,20 AS N$,30 AS A$,14 AS T$
80 IF PR=<M THEN GET#1,PR
90 PRINT "なまえ   ";X1$
100 PRINT "じゅうしょ";X2$
110 PRINT "でんわ  ";X3$
120 LSET N$=X1$:LSET A$=X2$:LSET T$=X3$
130 PUT #1,PR
140 GOTO 20

注意:上記の例は77ページのGETの例と対応しています。

対応

RSET:バッファにデータを右づめで書き込みます。

用語

SR
画面制御コマンド
メニュー画面に戻ります。

書式

MENU

解説

メニュー画面に戻ります。本体背面のリセットボタンを押した状態と同様になります。



対応

用語

MERGE

60ex
プログラムファイル操作コマンド
プログラムを合成します

書式

MERGE f$
f$:ファイル名

解説

メモリ上のプログラムとファイル名により指定したプログラムファイルをフロッピィディスクから読み込みながら1つにして、メモリ上に置きます。ここで、指定されたファイルはアスキー型式でセーブされていなければなりません。そうでない場合には、エラーになります。

もし、ファイル中のプログラムと、メモリ中のプログラムに同一の行番号があった場合には、メモリ中の行をファイル中の行に置き換えます。

MERGEコマンドは実行を終了すると、常にコマンドレベルに戻ります。



対応

用語

アスキー型式:SAVE"ファイル名",A ... アスキー型式の意。

MID$

60
文字列操作
文字列の任意の位置から任意の長さの文字列を与えます。

書式

<dtMID$(D$,x[,y])
d$:文字列
x:数式1(1≦x)
y:数式2(0≦y≦d$の文字数)

解説

文字列の数式1で指定した位置から右側に数式2で指定した長さの文字列を与えます。

数式2を省略した場合、および文字列において数式1で指定された位置から数式2で指定した長さより文字数が少ない場合は、数式1で指定した位置より右側の文字列すべてを与えます。また、文字列の総文字数が数式1より小さい場合には、ヌルストリングを与えます。


5 REM *** MID$ ***
10 A$="ABC1234567890DEF"
20 PRINT MID$(A$,4,10)
30 END

対応

用語

MKS$

60ex
文字列操作
数値を5バイトの文字列に変換します。

書式

MKS$(x)
x:数式

解説

MKS$関数は、数値データをランダムファイル・バッファに対してLSET文またはRSETき込むときに、5バイトの文字列に変換するために使用します。数値が持つ内部表現の値をそのまま対応する文字コードにすることによって数値から文字への変換を行います。

MKS$関数で文字に変換されているデータを数値に戻すにはCVS関数を使用します。


5 REM ***MKS$ ***
10 OPEN "しょうひん" AS #1
20 M=LOF(1)
30 R=0:INPUT "レコード NO.";R
40 IF R=0 THEN END
50 PR=INT((R-1)/8)+1
60 LR=R-(PR-1)*8
70 FIELD#1,(LR-1)*32 AS D$,22 AS S$,5 AS T$,5 AS N$
80 IF PR=<M THEN GET#1,PR
90 INTPU "しょうひんめい";X1$
100 INPUT "たんか   ";X2
110 INPUT "すうりょう ";X3
120 LSET S$=X1$:LSET T$=MKS$(X2):LSET N$=MKS$(X3)
130 PUT #1,PR
140 GOTO 20

注意:上記の例は、54ページCVSの例と対応しています。

対応

CVS:MKS$関数で変換された5バイトの文字型データを数値に変換します。

用語

MON

mkII
機械語関係コマンド
内蔵の機械語モニタに制御を移します。

書式

MON

解説

N66-BASICまたはN66SR-BASICモードから内蔵の機械語モニタに制御を移すためのコマンドです。機械語モニタのコマンドは付-22ページ付録2:機械語モニタを参照してください。モニタのBコマンドで、N66-BASICまたはN66SR-BASICモードに戻ります。



対応

用語

NAME...AS

60ex
ディスクファイル操作コマンド
ファイルの名前を変えます。

書式

NAME f1$ AS f2$
f1$:現在のファイル名
f2$:新しいファイル名

解説

現在のファイル名で表されているディスク上のファイルを新しいファイル名に変更します。

ドライブの指定は、ファイル名中にドライブ番号を含めることによって行います。ドライブ番号を省略した場合、ドライブ1を指定したとみなします。

なお、ファイル名の変更を行うファイルは閉じた状態でなければなりません。


10 INPUT "ドライブ NO.";D$
20 CLS
30 FILES VAL(D$)
40 PRINT:F1$=""
50 INPUT "げんざい の ファイルめい";F1$
60 IF F1$="" THEN END
70 INPUT "あたらしい ファイルめい   ";F2$
80 F1$=D$+":"+F1$
90 F2$=D$+":"+F2$
100 NAME F1$ AS F2$
110 GOTO 20

対応

用語

NEW

60
システム制御コマンド
メモリにあるプログラムを抹消し、すべての変数をクリアします。

書式

NEW

解説

NEWコマンドは、コマンドレベルにあるとき新しいプログラムを入力する前に、メモリにあるプログラムを抹消し、すべての変数をクリアするために実行します。NEWコマンドの実行が終わると、いつもコマンドレベルに戻ります。

NEWコマンドは、開かれているファイルがある場合は、それを自動的にすべて閉じます。



対応

用語

OCT$

SR
文字列操作
10進数を8進数に変換し、その文字列を与えます。

書式

OCT$(x)
x:数式

解説

数式の値の範囲は-65535から65535までです。


5 REM ***OCT$***
10 FOR I=1 TO 16
20 DE$=RIGHT$(  "+STR$(I),3)
30 OC$=RIGHT$(  "+OCT$(I),3)
40 HE$=RIGHT$(  "+HEX$(I),3)
50 PRINT "DECIMAL:";DE$,"OCTAL:";OC$,"HEX:";HE$
60 NEXT I
70 END

対応

用語

ON ERROR GOTO

SR
エラー処理
エラー割込み機能を可能にし、エラー処理ルーチンの開始行を定義します。

書式

ON ERROR GOTO m
m:行番号

解説

この命令を実行しておくと、エラーが発生したときに割り込みがかかり(エラー割込み機能)、指定された行番号つまりエラー処理ルーチンヘプログラムの制御が移ります。もし行番号の行が存在しなければ、?UL Errorが起こります。

通常、エラーが発生すると、BASICで用意しているエラーメッセージを表示し、プログラムの実行を終了し、コマンドレベルに戻ります。しかし、ON ERROR GOTO文を実行してあると、エラーが発生したときにBASICで用意しているエラー処理を行わず、行番号で指定したエラー処理ルーチンへジャンプします。

エラー割込み機能を禁止するには、ON ERROR GOTO 0を実行してください。その後のエラーはエラーメッセージを表示し、プログラムの実行を停止します。また、エラー処理ルーチンにON ERROR GOTO 0の文がある場合には、BASICはエラー割込みの原因となったエラーのエラーメッセージを表示し、プログラムの実行を停止します。すべてのエラー処理ルーチンにおいて、エラー回復処理を行わないエラー割込みが発生した場合には、ON ERROR GOTO 0を実行することをお勧めします。

注意:エラー処理サブルーチンの実行中にエラーが起きた場合には、それに対するエラーメッセージを表示し、実行は停止します。エラー処理サブルーチンの中ではエラー割込みは起こりません。


10 ON ERROR GOTO 80
20 READ A$
30 PRINT A$
40 GOTO 20
50 ON ERROR GOTO 0
60 END
70 IF ERR=4 THEN 80 ELSE 50
80 PRINT:PRINT "コレイジョウ データ ガ アリマセン"
90 RESUME 50
100 DATANEC  ,PC,-****

対応

用語

ON...GOSUB-RETURN

60
流れ制御文
指定されたいずれかのサブルーチンをコールします。

書式

ON s GOSUB m1[,m2,...]
s:数式(1≦s)
m1,m2:先頭行番号

解説

数式の値によってどの行番号から始まるサブルーチンプログラムを呼び出すかを決定します。行番号の並びは、1から始まる数に対応します。たとえば数式の値が3の場合には、行番号の並びの3番目の行番号から始まるサブルーチンプログラムを呼び出します。数式の値が負になった場合には ?FC Errorになりますが、数式の値が0または行番号の並びの個数より大きい場合にはエラーにならず次の文を実行します。


5 REM *** ON GOSUB***
10 INPUT " INPUT NO.(1-3)";A
20 ON A GOSUB 40,50,60
30 GOTO 10
40 PRINT "A=1":RETURN
50 PRINT "A=2":RETURN
60 PRINT "A=3":RETURN

対応

用語

サブルーチンプログラム:RETURN文で終わっている1つの独立したプログラム。

?FC Error(Function Call Error):許されている範囲外の数を使っています。

ON...GOTO

60
流れ制御文
指定したいずれかの行へジャンプします。

書式

ON s GOTO m1[,m2,...]
s:数式(1≦s)
m1,m2...:行番号

解説

数式の値によってプログラムのどの行番号ヘジャンプするかを決定します。行番号の並びは1から始まる数に対応します。たとえば、数式の値が3の場合には行番号の並びの3番目の行番号で指定した行にジャンプします。数式の値が負になった場合には、?FC Errorになります。また、数式の値が0または行番号の並びの個数より大きい場合には、エラーにならずに次の文を実行します。


5 REM ***ON GOTO***
10 INPUT " INPUT NO.(1-3)";A
20 ON A GOTO 40,50,60
30 GOTO 10
40 PRINT "A=1":GOTO10
50 PRINT "A=2":GOTO10
60 PRINT "A=3":GOTO10

対応

用語

OPEN

60ex
フロッピィディスク入出力
ファイルを開き、使用可能状態にします。

書式

OPEN f$[FOR m] AS [#]n
f$:ファイル名
m:入出力モード
n:ファイル番号 (1≦n≦15)

解説

ファイル名で指定したファイルを、指定したファイル番号で開きます。(オープンします。) 以後、オープンしたファイルへの入出力は、ファイル番号を指定することにより行います。モードは、シーケンシャルファイルへの入出力モードを指定します。モードには次の3種類があります。

  • INPUT 既存のファイルから読み込みを行うことを指示します。
  • OUTPUT 新しくファイルを作り、書き込みを行うことを指示します。
  • APPEND 既存のファイルの終わりに追加して書き込みを行うことを指示します。

INPUT、APPENDモードでは、指定されたファイルが存在しないと、?FF Errorとなります。

OUTPUTモードでは、常に指定した名前のファイルを新しく作り、同一名のファイルがあった場合には、前のファイルは削除します。

入出力モードはFORと共に省略できます。入出力モードを省略した場合、INPUT#文を使うとシーケンシャルファイルのINPUTモード、PRINT#文を使うとシーケンシャルファイルのOUTPUTモードとBASICが自動的に処理します。

ランダムファイルでは、入出力モードの指定を省略します。FIELD文が使われるとランダムファイルと自動的に処理します。ランダムファイルの場合、GET文で既存のファイルから読み込みを行うことを指示し、PUT文で新しくファイルを作り、書き込みを行うことを指示します。

ファイル番号は、1から15までの値を用いることができますが、起動時またはリセット時にHow Many Files?で指定したファイルの数を越えてはなりません。また、すでにオープンしているファイルが利用している番号を用いることはできません。

OPEN文は以後の入出力の際に用いるバッファ領域を確保し、ファイルを閉じるまでの間、そのバッファは指定したファイルへの入出力操作専用に用います。このバッファはファイル番号と同一の番号で参照します。



対応

用語

??FF Eror(File Not Found Error):指定されたファイルが見つかりません。

OUT

60
I/Oポート入出力
指定した出力ポートに1バイトのデータを送ります。

書式

OUT a,s
a:I/Oポートアドレス(0≦a≦&HFF)
s:式(0≦s≦&hFF)

解説

I/Oポートアドレスで指定されたポートに式で指定された値を出力します。指定できるI/Oポートアドレスおよび式の値の範囲は0から255(&HFF)までです。

I/Oポートアドレスと装置との対応は、資-38ページ資料13:I/Oポートアドレスを参照してください。


10 PRINT "ノイズのおとが きこえますか ?"
20 OUT&HA0,7:OUT&HA1,7
30 OUT&HA0,8:OUT&HA1,8
40 FOR I=0 TO 31
50 OUT&HA0,6:OUT&HA1,I
60 FOR J=1 TO 50:NEXT J
70 NEXT I
80 PRINT"とめるときは stopキーを おしてください。"
90 END

上記のプログラムを実行すると、“サー”というノイズ音を発生します。

対応

INP:指定した入力ポートから値を与えます。

用語

I/Oポート:CPUが周辺機器と信号を入出力するところ。

PAD

60ex
タッチパネル入力
タッチパネルからの入力の有無を検出して入力座標を与えます。

書式

PAD(f)
f:機能

解説

ジョイスティック端子2に接続したタッチパネルからの入力の有無を検出し、もし入力があれば、その入力座標を求める関数です。

機能は次のように対応しています。

  • f=0:入力の有無を検出します。入力がないときは0、あるときは1を与えます。
  • f=1:PAD(0)=1のとき、そのx座標を与えます。与える値の範囲は0から255までです。
  • f=2:PAD(0)=1のとき、そのy座標を与えます。与える値の範囲は0から255までです。


10 SCREEN2,2,2:COLOR5:CLS
20 IF PAD(0)=0 GOTO 20
30 X=PAD(1)*320/256
40 Y=PAD(2)*200/256
50 PSET(X,Y),6:GOTO 20

対応

用語

PAINT

60
グラフィック表示
指定された境界色で囲まれた領域を指定した色で塗りつぶします。

書式

PAINT [STEP](x,y)[,c][,c']
(x,y):塗りつぶす領域内の座標
c:領域色(1≦c≦16)
c':境界色(1≦c≦16)

解説

(x,y)により指定した点を含む境界色で囲まれた領域を、指定した領域色で塗りつぶします。STEPをつけると相対座標となります。

領域色、境界色はともに1≦c≦16のカラーコードで指定します。N66SR-BASICの場合、13≦c≦16のカラーコードを指定すると、パレットの色で塗ります。領域色を省略した場合には、COLOR文で指定したグラフィクスの色を用います。境界色を省略した場合には領域色の指定と同じパレット番号及びカラーコードが境界色として用います。

BASIC モード、ディスプレイモードによって指定できるカラーコードが異なりますので資-54ページ資料17:カラーコードと色の関係を参照してください。

(x,y)は塗り始める座標を指定します。もしこの点が、既に指定した境界色と同じ色であった場合には、PAINT文は何の画面操作も行いません。


5 REM ***PAINT***
10 SCREEN 2,2,2:COLOR 3,5:CLS
20 FOR I=1 TO 8
30 X1=INT(RND(1)*319)
40 X2=INT(RND(1)*319)
50 Y1=INT(RND(1)*199)
60 Y2=INT(RND(1)*199)
70 LINE(0,Y1)-(319,Y2),8
80 LINE(X1,0)-(X2,319),8
90 LINE(X1,Y1)-(X2,Y2),8,B
100 NEXT I
110 FOR C=1 TO 5
120 FOR I=1 TO 16
130 X1=INT(RND(1)*319)
140 Y1=INT(RND(1)*199)
150 PAINT(X1,Y1),I,8
160 NEXT I:NEXT C

対応

用語

PALET

SR
定義文
カラーパレットを変更します。

書式

PALET [P,C]
P:パレット番号(13≦P≦16)
C:カラーコード(1≦C≦16)

解説

N66SR-BASICには、13~16までのカラーパレットが用意されています。カラーパレットは、テキストモードでもグラフィックモードでも使えます。PALET文は、どのパレットにどの色を対応させるかを決めるものです。

パレット番号とは、ユーザのために用意された13から16までの4つのカラーパレットにつけられた固有の番号で、ユーザはそれぞれのパレットにどの色を持ってくるかをカラーコードによって指定します。(カラーコードは資-54ページの資料17:カラーコードと色の関係を参照してください。)

パレットの初期値(RESETボタン押下時又はSCREENモード変更時)は、下記のように設定されています。

SCREEN 1,2,3
パレット番号 カラーコード
13 13
14 シアン 14
15 15
16 16

もし、カラーパレットを全く変更しなければ、カラーパレットとカラーコードは同じものとして使ってさしつかえありません。カラーパレットを変更すると、上記の表で示したカラーコードの色は変更したカラーパレットの色に変わります。

画面に表示している色及びこれから画面に対して行うすべてのグラフィック命令(PSET、LINEなど)におけるカラー表示は、カラーコード13~16を指定することによって、パレットの13~16に割り付けているカラーコードの色に設定されます。 プログラム中でカラーパレットを変更した場合は、困惑しないようにプログラム終了時にパレットを初期状態に戻しておくようにしてください。初期状態に戻すには、“PALET”と指定します。


10 CONSOLE 0,20,0,0
20 SCREEN 3,2,2:PALET:PALET 13,1:CLS
30 FOR I=14 TO 16
40 LINE(0,(I-13)*50)-STEP(639,15),I,BF
50 NEXT I
60 FOR J=1 TO 100:CO=1:P=13
70 P=P+1:IF P=17 THEN P=14
80 K=K+1:IF K=17 THEN K=1
90 PALET P,K:CO=CO+1:IF CO<6 THEN 70
100 NEXT:END

対応

用語

PEEK

60
機械語関係
メモリの指定されたアドレスの内容を与えます。

書式

PEEK(a)
a:アドレス(-65535≦a≦65535)

解説

アドレスによって指定されたメモリ番地の内容を与えます。アドレスは0~65535(&H0~&HFFFF)の値で、もし小数点以下がある場合、整数化してから実行します。 与えられる数値は1バイトの整数です。


10 WIDH 80,25
20 INPUT " start address(hex) ";SA$
30 SA=VAL("&H"+SA$)
40 INPUT " end   address(hex) ";EA$
50 EA=VAL("&H"+EA$)
60 CO=1
70 PRINT RIGHT$("000"+HEX$(SA),4);": ";
80 FOR I=SA TO SA+15
90 DA=PEEK(I)
100 PRINT RIGHT$("0"+HEX$(DA),2);" ";
110 NEXT I
120 SA=SA+16:NEXT
130 IF SA<=EA THEN 70
140 END

対応

POKE:メモリ上に指定されたアドレス情報を書き込みます。

用語

PLAY

SR
サウンド出力
音楽を演奏します。

書式

PLAY [C1$][,[C2$][,[C3$][,[C4$][,[C5$][,[C6$]]]]]]
C1$~C6$:チャンネルA~Fの文字列

解説

PLAY文は音楽を演奏する文です。新しいサウンドLSIを採用しているため、音色が設定でき、また、六重奏まで可能です。第1文字列~第3文字列はFM音源に対する文字列となり、第4文字列~第6文字列はPSG音源に対する文字列となります。

たとえば、次のようなPLAY文の場合

PLAY "c", "e",,"g"

ドとミの音がFM音源の音(この場合は、電子ピアノの音)で鳴り、ソの音が従来(N60、N66-BASICモード)のPSG音源の音で鳴ります。

第1文字列~第3文字列に対しては、“@”(アットマーク)を使って音色を設定できます。設定できる音色番号は、1~12、253~255で、それぞれの番号には次に示すような音色が対応しています。音色設定の初期値は、3(電子ピアノ)になっています。

音色番号 音色
1 ブラス
2 バイオリン
3 電子ピアノ
4 エレクトリック・ブラス
5 電子オルガン
6 パイプオルガン
7 フルート
8 オーボエ
9 クラリネット
10 ビブラフォン
11 ハープシコード
12 ベル
253 ユーザー設定1
254 ユーザー設定2
255 ユーザー設定3

たとえば、次のようなPLAY文の場合、

PLAY "@1c","e","@7g"

ブラスの音色でド、電子ピアノの音色でミ、フルートの音色でソの音が鳴ります。

音色番号の253~255は、自由に設定できる音色です。PLAY文を実行する前に必ずワークエリア内にPOKE文を使ってデータをセットしてください。セットしないと、?FC Error になります。

文字列は、音階を表すA~Gのアルファベットと、音の長さを表す数字が基本になり、その他に下表に示すものを指定できます。

文字 意味 設定値 初期値
@x 音色の設定 1≦x≦12
253≦x≦255
3
Mx エンベロープ周期 1≦x≦65535 255
Sx エンベロープ形状 0≦x≦15 0
Vx 音の大きさ 0≦x≦15 8
Lx 音の長さ 1≦x≦64 4
Ox オクターブ 1≦x≦8 4
Tx テンポ 32≦x≦255 120
Rx 休符 1≦x≦64 4
Nx 音階 0≦x≦96 &nbsp;
+,# 音を半音上げる &nbsp; &nbsp;
- 音を半音下げる &nbsp; &nbsp;
. 付点 &nbsp; &nbsp;

注意:この項のPLAY文の機能は、N66SR-BASIC以外のN60、N66-BASICでは使用できません。N60、N66-BASICモードを選択した場合は、次の項を見てください。


5 REM ***PLAY***
10 A$="@05o4ee8d8ccdde8d8c"
20 B$="o5gg8f8eed8c8d8e8c2"
30 C$="o4ee8f8ggaag8f8e"
40 D$="o4ee8f8ggaag2"
50 PLAY A$
60 PLAY B$
70 PLAY C$
80 PLAY D$
90 END

対応

用語

PLAY(N66-BASIC)

60
サウンド出力
音楽を演奏します。

書式

PLAY

解説

PLAY文は音楽を演奏する文で、三重奏まで可能です。文字列は音階を表すA~Gまでのアルファベットと、音の長さを表す数字が基本になっています。その他にオクターブ、音量、エンベロープの周期、形状、テンポなどの指定ができます。詳しくは、付-1ページ付録1:音のハイテクニックな命令を参照してください。

文字意味初期値
Mxエンベロープ周期の設定 (1≦x≦65535)255
Sxエンベロープ形状の設定 (0≦x≦15)0
Vx音量の設定 (0≦x≦15)8
Lx長さの設定 (1≦x≦64)4
Oxオクターブの設定 (1≦x≦8)4
Txテンポの設定 (32≦x≦255)120
Rx休符の設定 (1≦x≦64)4
+音を半音上げる
-音を半音下げる
.付点

注意:テンポ(T)と長さ(L)は、その積(T×L)が9750を越えないように設定してください。


5 REM *** PLAY1 ***
10 A$="T200S14O5CDEFGEG"
20 B$="T200S14O5CCO4GGEEE"
30 C$="T200S14O5EFGAGBAGO6CCEECC"
40 PLAY A$,B$,C$
50 END

対応

用語

POINT

60
グラフィック表示
指定した座標のドットの色を与えます。

書式

POINT [STEP](x,y)
(x,y):座標

解説

(x,y)により指定されたグラフィック画面上に表示されているドットの色を1≦c≦16のカラーコードで与えます。N66SR-BASICの場合、パレットが設定してあると、13≦c≦16の色はパレットの色に影響します。STEPをつけると相対座標となります。与えられるカラーコードはBASICモード、ディスプレイモードによって色が異なりますので資-54ページ資料17:カラーコードと色の関係を参照してください。


5 REM ***POINT***
10 SCREEN 2,2,2
20 COLOR,1
30 CLS
40 PSET(110,10),1
50 PSET(110,15),2
60 PSET(110,20),3
70 PSET(110,25),4
80 PSET(110,30),5
90 PSET(110,35),6
100 PSET(110,40),7
110 PSET(110,45),8
120 FOR I=10 TO 45 STEP 5
130 PRINT I:POINT(110,I)
140 NEXT
150 GOTO 150

対応

用語

POKE

60
機械語関数
メモリ上に指定されたアドレスに情報を書き込みます。

書式

POKE

解説

指定されたメモリ上のアドレスに1バイト(8ビット)のデータを書き込みます。数式は書き込まれるデータで、0~255(&H0~&HFF)の値でなくてはいけません。もし小数点以下があると整数化してから実行します。

アドレスは2バイトの整数で、0~65535(&H0~&HFFFF)の値です。ただし、この命令は現在のメモリの内容を書き換えるため、不用意に使うとBASICが使っているワークエリアを壊してしまい、誤動作の原因となることもあります。使うときには、メモリマップなどで使用可能な領域かどうかを確認してください。(メモリマップの詳細は、資-25ページ資料10: メモリマップを参照)

POKE文の逆の働きをする関数としてPEEK関数を用意しています。これらPOKEとPEEK は、効率的なデータの格納や機械語サブルーチンの引数の受け渡しなどに役立ちます。


10 CLEAR ,&HDFFF
20 WIDTH 80,25
30 FOR ADD=&HE000TO &HE00F
40 POKE ADD,DA:DA=DA+1
50 NEXT ADD
60 FOR ADD=&HE000TO &HE00F
70 PRINT RIGHT$(" 0"+HEX$(PEEK(ADD)),4);
80 NEXT ADD

対応

PEEK:メモリの指定されたアドレスの内容を与えます。

用語

POS

60
画面入出力
カーソルの桁位置(縦方向)を与えます。

書式

POS(x)
x:ダミー

解説

ダミーは定数でも変数でもかまいません。N66SR-BASICの場合、WIDTHコマンドで桁数を40にすると関数の値の範囲が0~39で、画面の左端が0、右端が39となり、桁数を80にすると関数の値の範囲が0~79で、画面の左端が0、右端が79となります。また、N66-BASICモードの場合、0~39となり、N60-BASICおよびN60-拡張BASICモードの場合、0~31となります。


5 REM ***POS***
10 CLS
20 FOR I=0 TO 16
30 LOCATE I*2,I,0:PRINT POS(X)
40 NEXT I
50 END

対応

CSRLIN:現在のカーソルの行位置を与えます。

用語

PRESET

60
グラフィック表示
任意のドットの色を背景の色にします。

書式

PRESET [STEP](x,y)
(x,y):座標

解説

グラフィック画面上の(x,y)で指定したドットをリセットします。STEP をつけた場合は相対座標による指定となります。

つまり、(x,y)で指定したドットを、現在COLOR文で指定している背景の色で塗り変えます。


5 REM ***PRESET***
10 DIM K(750),L(750)
20 INPUT "50までの かずを いれてください。";A
30 SCREEN 2,2,2:CLS
40 FOR J=1 TO A
50 FOR I=1 TO 15
60 IJ=I+(J-1)*15
70 K(IJ)=INT(RND(1)*319)
80 L(IJ)=INT(RND(1)*199)
90 PSET(K(IJ),L(IJ)),I
100 NEXT I:NEXT J
110 COLOR 16: PRINT "ひょうじを おわりました。"
120 PRINT "このてんを けしていきます。"
130 FOR B=1 TO A*15
140 PRESET(K(B),L(B))
150 NEXT B:END

対応

PSET:任意のドットの色を指定します。

用語

PRINT

60
画面入出力
アクティブ画面に情報を表示します。

書式

PRINT [S1,{, | ;}...]
S1...:式

解説

  • 指定した式の値や文字列を画面に表示します。式を省略した場合は改行のみを行います。
  • 式の値や文字列を表示する領域は、あらかじめ各行を14文字ごとに分割して定められており、区切り記号にカンマを使うと次の領域の始めから、またセミコロンを使うと直前にプリントしたもののすぐ後ろに続いて次の値や文字列を表示します。
  • 式の最後にセミコロン及びカンマを指定すると改行動作をおこさずに、その行で次のPRINT文による出力を続行します。
  • 変数とダブルクォーテーションで囲まれた文字列との区切りに限って","、または";"を省略することができ、このときはセミコロンと同様の働きをします。
  • 数値の前に符号のための桁を確保します。数値の絶対値が 100,000,000以上、または 0.01未満になると指数形式で表示します。
  • この命令"PRINT"の簡略形として疑問符(?)を使用することができます。
  • 数値を表示する場合に、その数値が現在のカーソルの位置より後方に表示しきれないとき、次の行にわたるようなときには改行して表示します。


5 REM ***PRINT***
10 A=123:B=456
20 A$=""せんとう":B$="へいわ"
30 PRINT A;B:789
40 PRINT A,B,789
50 PRINT A$;B$
60 PRINT A;B,A$;" と "B$
70 END

対応

INPUT:指定した変数へデータをキーボードから入力します。

用語

PRINT#

60ex
フロッピィディスク入出力
シーケンシャルファイルにデータを書き込みます。

書式

PRINT#

解説

ファイル番号はOPEN文によって、そのファイルをOUTPUTまたはAPPENDモードとしてオープンしたときに指定した番号です。式はファイルに書き込まれる数値または文字列です。

PRINT#文はPRINT文で画面へ表示するときと全く同じように書き込みますからデータがフロッピィディスクから正しく読み込むことができるように、下記を参照して適切に区切ってフロッピィディスクに書き込むように注意してください。

  1. 式の並びにおいて、数値はセミコロンで区切るようにしてください。
    PRINT#1;A;B;C;X;Y;Z
    もし区切り記号にカンマを使うと、プリント領域の間に挿入する余分な空白もフロッピィディスクに書き込んでしまいます。
  2. 同様の理由で、式の並びの中の文字列もセミコロンで区切ってください。例をあげると、 A$="PC-",B$="6001MK2SR"のときPRINT#1,A$;B$はフロッピィディスクにPC-6001MK2SRと書き込みます。
    また"PC-"と"6001MK2SR"を別の文字列として読み込むときは、PRINT#文中に区切り記号","を入れてください。
    PRINT#1,A$;",";B$ これによって、PC-6001MK2SRとなり、2つの文字変数として読み込むことができます。
    もし、文字列そのものがデータとしてカンマ、セミコロン、意味のあるはじめの空白、キャリッジリターン、またはラインフィードなどを含む場合は、別のダブルクォーテーションCHR$(34)で囲んでディスクに書き込んでください。たとえば、A$="NEC, PC-"でカンマ を含んでいる場合には、PRINT #1,CHR$(34);A$:CHR$(34);B$;とします。
    フロッピィディスクには次のように書き込みます。
    “NEC,PC-""6001MK2SR"


5 REM ***PRINT#1***
10 OPEN "データ" FOR OUTPUT AS #1
20 FOR I=1 TO 10
30 N=INT(RND(1)*1000)
40 R=SQR(N)
50 PRINT #1,N;R
60 NEXT I
70 CLOSE #1
80 END

注意:上記の例は88ページのINPUT#の例と対応しています。

対応

INPUT#:シーケンシャルファイルからデータを読み込みます。

用語

OUTPUT:OPEN文の入出力モードに相当します。シーケンシャルファイルで新しくファイルを作り、書き込みを行うことを指示します。

APPEND:OPEN文の入出力モードに相当します。シーケンシャルファイルで既存のファイルの終わりに追加して書き込みを行うことを指示します。

PRINT#(その他入出力)

60
その他入出力
情報を出力します。

書式

PRINT#-f,S1,[,s2...]
f:出力機器番号(0≦f≦4)
s1,s2...:式

解説

PRINT#文は、PRINT文に似ていて情報データを出力しますが、出力機器番号を指定することによって出力機器を変えることができます。

出力機器と出力機器番号は次のように対応しています。

PRINT#-0ディスプレイ
PRINT#-1カセットテープ
PRINT#-2RS-232C
PRINT#-3プリンタ

ディスクファイルのうち、シーケンシャルファイルへの出力もPRINT注文を使います。出力機器を指定する場合は、“PRINT#”のあとにマイナス(-)がつきますので気をつけてください。情報(データ)の出力方法は PRINT#文と同じですのでPRINT#文を参照してください。


10 DIM A$(2),B$(2),C$(2)
20 PRINT " キーボードから もじを 3かい INPUT してください。"
30 FOR I=0 TO 2
40 INPUT#-0:A$(I)
50 NEXT I:PRINT
60 PRINT " *がめんに ひょうじします。"
70 PRINT "hit any key or RETURN to END"
80 IN$=INKEY$:IF IN$=""THEN80
90 IF ASC(IN$)=13 THEN END
100 FOR I=1 TO 3
110 PRINT#-0,I;" ";A$(I-1)
120 NEXT I
130 END

対応

INPUT#:データを指定した変数へ入力します。

用語

PSET

60
グラフィック表示
任意のドットの色を指定します。

書式

PSET [STEP](x,y)[,c]
(x,y):座標
c:色(1≦c≦16)

解説

グラフィック画面上の(x,y)の位置に任意の色の点を描きます。STEPをつけると相対座標による指定となります。点の色は1≦c≦16のカラーコードで指定します。N66SR-BASICの場合、13≦c≦16のカラーコードを指定すると、パレットの色で描きます。省略した場合には、現在COLOR文で指定されているグラフィクスの色を用います。指定できるカラーコードはBASICモード、ディスプレイモードによって色が異なりますので、資54ページ資料17:カラーコードと色の関係を参照してください。


5 REM ***PSET***
10 INPUT A
20 SCREEN 3,2,2:CLS
30 FOR J=1 TO A
40 FOR I=1 TO 15
50 K=INT(RND(1)*319)
60 L=INT(RND(1)*199)
70 PSET(K,L),I
80 NEXT I
90 NEXT J
100 END

対応

PRESET:任意のドットの色を背景の色にします。

用語

PUT

60ex
フロッピィディスク入出力
バッファの中のデータをランダムファイルに書き込みます。

書式

PUT [#]n[,r]
n:ファイル番号(1≦n≦15)
r:レコード番号(1≦r)

解説

ファイル番号で指定されたファイルに、対応するバッファの内容を書き込みます。指定されたファイルは、ランダムファイルとしてOPEN文でオープンされていなければなりません。ファイル番号はOPEN文で指定したファイル番号です。バッファの中のデータ256バイトは指定したレコードに書き込みます。レコード番号を省略した場合には、直前に行ったGET文、またはPUT文で指定したレコードの次のレコードに書き込みます。


10 OPEN "じゅうしょ" AS #1
20 M=LOF(1)
30 R=0:INPUT "レコード NO.";R
40 IF R=0 THEN END
50 PR=INT((R-1)/4)+1
60 LR=R-(PR-1)*4
70 FIELD#1,(LR-1)*64 AS D$,20 AS N$,30 AS A$,14 AS T$
80 IF PR=<M THEN GET#1,PR
90 PRINT "なまえ   ";X1$
100 PRINT "じゅうしょ";X2$
110 PRINT "でんわ  ";X3$
120 LSET N$=X1$:LSET A$=X2$:LSET T$=X3$
130 REM *** PUT ***
140 PUT #1,PR
150 GOTO 20

注意:上記の例は77ページのGETと対応しています。

対応

GET:データをランダムファイルからバッファに読み込みます。

用語

PUT@

60ex
グラフィック表示
GET@文で書き込んだグラフィック情報を読み込み、画面上に表示します。

書式

(1) PUT [@][STEP](x,y),d,[m]
(x,y):左上の座標
d:数値配列変数名
m:条件
(2) PUT [@][STEP](x,y),f$,[m]
(x,y):左上の座標
f$:ファイル名
m:条件

解説

(1) GET@文によって配列に書き込んだ(セーブした)グラフィック情報を画面上の任意の位置に表示します。配列変数名は表示したいグラフィックパターンがセーブされている数値配列変数名です。

(2) GET@文によってフロッピィディスクにファイル名f$でセーブしたグラフィック情報を、フロッピィディスクから読み込んで(ロードして)画面上の任意の位置に表示します。
条件とは、グラフィック情報を画面に表示する際、いろいろな機能を指定するもので、次のものを用意しています。

PSETグラフィック情報をそのまま表示します。
PRESETグラフィック情報をリバース(逆)にして表示します。
ORグラフィック情報と、すでにある画面上のグラフィック情報を1ドットごとにOR(論理和)し、その結果を画面に表示します。
ANDグラフィック情報と画面上のグラフィック情報を1ドットごとにAND(論理積)し、その結果を画面に表示します。
XORグラフィック情報と画面上のグラフィック情報を1ドットごとにXOR(排他的論理和)し、その結果を画面に表示します。


5 REM ***PUT@***
10 DIM D(32,32)
20 SCREEN 2,2,2:COLOR 2,1,1:CLS
30 FOR I=6 TO 36 STEP 6
40 CIRCLE(30,40),I,I/6,,,(.9+I/50)
50 NEXT I
60 GET@(0,0)-(60,80),D
70 PUT@(70,0),D
80 PUT@(90,20),D,OR
90 PUT@(110,40),D,AND
100 PUT@(130,60),D,XOR
110 PUT@(150,80),D,PSET
120 PUT@(170,100),D,PRESET
130 FOR I=1 TO 5000
140 NEXT I
150 END

対応

GET@:アクティブ画面のグラフィック情報を書き込みます。

OR AND:論理演算

XOR:論理演算の一種で、X=YのときX XOR Y=0、X><YのときX XOR Y=1となります。

用語

READ

60
データ
DATA文で指定しているデータを読み込み、変数に割り当てます。

書式

READ d1[,d2...]
d1,d2...:変数名

解説

READ文はいつでもDATA 文と組み合わせて使います。READ文はDATA文のデータを1対1対応の方法で変数に割り当てていきます。READ文の変数は数値変数でも文字変数でもかまいませんが、読み出された値と変数の型が一致していなければなりません。もし、型が一致していない場合には ?SN Errorになります。

1つのREAD文が1つまたはそれ以上のDATA文を参照したり、またいくつかのREAD文が1つのDATA文を参照することができます。DATA文が複数ある場合には順番に参照します。もしREAD文の変数がDATA文のデータの個数より多いときは?OD Errorになります。

READ文で指定された変数がDATA文のデータの個数よりも少ない場合には、次のREAD文が読まれなかった残りのデータを読みます。もし、それ以上READ文がない場合には、残りのデータは無視します。いくつかあるDATA文のうち任意のDATA文のデータを読み出したり、繰り返し同じデータを読み出したりしたいときにはRESTORE文を使います。


10 READ A,B,C,D,E,F,G,H,I,J
20 AV=(A+B+C+D+E+F+G+H+I+J)/10
30 PRINT "へいきん=";AV
40 END
50 DATA 11,18,4,6,8,3,15,14,2,5

対応

DATA:READ文で読み込む数値や文字列定数を格納します。

?SN Error (Syntax Eror):文字を書きまちがえています。

?OD Error (Out of Data Error):READ文を実行しようとしてもデータがありません。

RESTORE:READ文で読み込むデータの開始位置を指定します。

用語

REM

60
定義文
プログラムに注釈を入れます。

書式

REM [d$]
d$:注釈

解説

REM文は非実行文で、プログラムの実行に影響を与えず注釈行とすることができます。プログラムリストでは入力した内容をそのまま出力します。REM文はGOTO文、GOSUB文の飛び先として使うことは可能です。

REM文の行はコロン:も注釈文中の文字とみなすのでコロンで区切って他の文を続けることはできません。


10 REM rem ぶん の れい
20 FOR I=1 TO 38
30 READ A$
40 PRINT A$;:FOR J=0 TO 50:NEXT J
50 NEXT I
60 END
70 DATA R,E,M,ふ,゛,ん,は," ",フ,゜
80 DATA ロ,ク,゛,ラ,ム,に," ",ち,ゅ,う,し
90 DATA ゃ,く,を," ",つ,け,る,と,き,に
100 DATA " ",も,ち,い,ま,す,。

対応

用語

RENUM

60ex
プログラム作成コマンド
プログラムの行番号を整理します。

書式

RENUM
m1:新行番号
m2:現在の行番号

解説

新行番号とは、新しくつける行番号の最初の行番号で、省略した場合は10となります。現在の行番号は行番号のつけ替えを始める現在のプログラムの行番号です。省略値はそのプログラムの最初の行番号です。

RENUMコマンドは、また、GOTO、GOSUB、THEN、ON...GOTO、およびON...GOSUBおよびERL文などで参照している行番号の行が存在しない場合には、"Undefined line XXXXX in yyyyy"を表示します。この場合、N66SR-BASICでは誤った行番号(xxxxx)は RENUMコマンドによって変更しませんが、行番号yyyyyは変更します。N60、N66-BASICでは、誤った行番号xxxxxは RENUM コマンドによってスペース5桁におきかえ、行番号 yyyyは変更します。

RENUMコマンドをプログラム行の順序を変えるのに使うことはできません。たとえば、10、20、30の3つの行がある場合に、RENUM15、30とすることはできません。また、65530以上の行番号を発生することもできません。このような場合には、?FC Error となります。



対応

用語

?FC Error (Illegal Function Call Error):許されている範囲外の数を使っています。

RESTORE

60
データ
READ文で読み込むデータの開始行番号を指定します。

書式

RESTORE [m]
m:DATA文の行番号

解説

READ文で読むDATA文を指定します。行番号が省略されると、次にくるREAD文はプログラム中の最初のDATA文から読み始めます。行番号を指定すると、指定された行のDATA文から読み始めます。


10 RESTORE:READ	A,B,C,D,E,F,G
20 PRINT A,D,F
30 RESTORE 100
40 READ A$,B$,C$,D$,E$,F$,G$
50 PRINT A$;B$;C$;D$;E$;F$;G$
60 END
70 DATA 1,4,6
80 DATA 2,5,3
90 DATA 7,8,9,0
100 DATA P,C,-
110 DATA 6,0,0,1
120 DATA A,B,C,D,E,F,G

対応

用語

READ:DATA文で指定しているデータを読み込み、変数に割り当てます。

DATA:READ文で読み込むデータを指定します。

RESUME

SR
エラー処理
エラー回復処理終了後、プログラムの実行を再開します。

書式

RESUME [0]
RESUME NEXT
RESUME 行番号

解説

プログラムの実行を再開する場所に応じて次のように3つの書式を選ぶことができます。

RESUMEまたはRESUME 0エラーの原因となった文のすぐ次の文から実行を再開します。
RESUME NEXTエラーの原因となった文からプログラムの実行を再開します。
RESUME 行番号行番号で指定した行から実行を再開します。


5 REM ***RESUME***
10 ON ERROR GOTO 70
20 READ A
30 PRINT A:
40 GOTO 20
50 ON ERROR GOTO 0
60 END
70 IF ERR=4 THEN 80 ELSE 50
80 PRINT:PRINT "コレイジョウ データ が アリマセン"
90 RESUME:50
100 DATA 0,1,2,3,4,5,6,7,8,9

対応

用語

RIGHT$

60
文字列操作
文字列の右側から任意の長さの文字列を与えます。

書式

RIGHT$

解説

文字列の右側から数式で指定した文字数の文字列を与えます。数式の値が文字列の総文字数以上の場合には、文字列のすべてを与えます。また、数式の値が0の場合にはヌルストリングを与えます。

RIGHT$("abc",4) → abc

RIGHT$("ab",0) →


10 FOR I=1 TO 5
20 READ X$
30 IF RIGHT$(X$,2)="FE" OR RIGHT$(X$,2)="CE" THEN PRINT X$
40 NEXT I
50 END
60 DATA "BOY","PIANO","VOICE","DESK","KNIFE"

対応

LEFT$:文字列の左側から任意の長さの文字列を与えます。

用語

RND

60
演算
0から1の間の乱数を与えます。

書式

RND

解説

0以上1未満の乱数を与えます。発生する乱数は機能の値によって次のように異なります。

f>0同一乱数系列の次の乱数を発生します。
f=01つ前に発生した乱数を与えます。つまり、同じ値を繰り返します。
f<0新しい乱数系列を設定して乱数を発生します。(乱数の初期化)


5 REM ***RND***
10 FOR I=1 TO 10
20 A=RND(1)
30 PRINT A,INT(A*10)
40 NEXT I
50 END

対応

用語

ROLL

SR
画面操作
グラフィック画面を縦横にスクロールさせます。

書式

ROLL

解説

指定されたドット数だけ、グラフィック画面を上、下、左、右方向へスクロールさせます。

横のドット数を正の値で指定すると、左方向へスクロールし、負の値で指定すると、右方 向へスクロールします。縦のドット数を、正の値で指定すると上方向へスクロールし、負の値で指定すると下方向へスクロールします。ただし、640×200ドットの4色グラフィック画面の場合、横のスクロールは2ドット単位にスクロールしますので、横のドット数を320または-320にすると横に1回転します。

また、ROLLの座標系は、グラフィック座標系と異なり、Y座標が0~203になります。そのため、縦のドット数を204、または-204にすると縦に1回転します。

下記に図を使って示します。

上記のように、Y座標がグラフィック座標のY座標に4ドット追加されるため、COLOR文を変更した場合、グラフィック座標内の背景色と追加された4ドットの背景色が異なることがあります。第3パラメータに“Y”を入力すると、追加された4ドットの背景色はグラフィック座標内の背景色と同じ色になります。

この命令は漢字など日本語の文章を表示するときのスクロールに使うことができます。

ROLL文によって移動した(0,0)は、“ROLL”と指定すると初期状態に戻ります。


10 SCREEN 2,2,2:ROLL:PALET:CLS
20 CIRCLE(159,99),30,13
30 PAINT(159,99),13,13
40 CIRCLE(79,99),30,11
50 PAINT(79,99),11,11
60 CIRCLE(239,99),30,10
70 PAINT(239,99),10,10
80 FOR I=1 TO 204:ROLL 0,1:NEXT
90 FOR I=1 TO 204:ROLL 0,-1:NEXT
100 FOR I=1 TO 320:ROLL 1,0:NEXT
110 FOR I=1 TO 320:ROLL -1,0:NEXT
120 FOR I=1 TO 320:ROLL 1,0:NEXT
130 FOR I=1 TO 320:ROLL -1,-1:NEXT
140 FOR J=1 TO 1000:NEXT
150 END

Y座標の200~203への書き込み方

OUT &HCE,(200~203)
POKE (0~319),(色指定)

上記のプログラムを指定します。ただし、ROLL文を実行するとクリアされます。()の中は範囲のいずれかを指定します。

対応

用語

ROLL(関数)

SR
グラフィック表示
ROLL文によって何ドットスクロールしたかを与えます。

書式

ROLL(x)
x=0...横のスクロールドット値(0~319)
x=1...縦のスクロールドット値(0~203)

解説

ROLL文によって移動した、原点(0,0)のドット値を与えます。ドット値の範囲は、横0~319、縦0~203です。


10 SCREEN2,2,2:ROLL:PALET:CLS:I=I+1
20 CIRCLE(159,99),30,I+1
30 PALET(159,99),I+1,I+1
40 FOR J=1 TO 204
50 ROLL 0,1
60 GOSUB 110:NEXT
70 FOR J=1 TO 320
80 ROLL 1,0
90 GOSUB 110:NEXT
100 GOTO 10
110 X=ROLL(0)
120 Y=ROLL(1)
130 LINE(17*8,14*10)-STEP(8*7,10),1,BF
140 LOCATE17,14:PRINT X;",";Y
150 RETURN

対応

用語

RSET

60ex
フロッピィディスク入出力
バッファにデータを右づめで書き込みます。

書式

RSET d$=s$
d$:文字変数
S$:文字列

解説

FIELD文で定義した文字変数に該当する領域(フィールド)にデータを右づめで書き込みます。書き込むデータは文字型データでなければならず、数値データはMKS$によって文字型データに変換します。

文字列式の文字数がFIELD文で割り当てられた長さより短い場合は右づめにし、領域(フィールド)の左側は空白を満たします。また、文字列がフィールドより長い場合は、LSETと同様に文字列の右側の部分が失われます。


10 OPEN "じゅうしょ" AS #1
20 M=LOF(1)
30 R=0:INPUT "レコード NO.";R
40 IF R=0 THEN END
50 PR=INT((R-1)/4)+1
60 LR=R-(PR-1)*4
70 FIELD#1,(LR-1)*64 AS D$,20 AS N$,30 AS A$,14 AS T$
80 IF PR=<M THEN GET#1,PR
90 PRINT "なまえ   ";X1$
100 PRINT "じゅうしょ ";X2$
110 PRINT "でんわ  ";X3$
120 RSET N$=X1$:RSET A$=X2$:RSET T$=X3$
130 PUT #1,PR
140 GOTO 20

対応

LSET:バッファにデータを左づめで書き込みます。

用語

RUN

60
プログラム実行コマンド
プログラムの実行を開始します。

書式

(1) RUN [m]
m:行番号
(2) RUN f$,[,R]
f$:ファイル名

解説

(1) メモリにあるプログラムの実行を開始します。開始行番号を指定すると、その行から実行を始めます。指定のない場合には、行番号の最も若い行から実行を始めます。プログラムの実行が終わるとコマンドレベルに戻ります。

(2) ファイル名で指定されるプログラムをフロッピィディスクからメモリにロード後、実行を開始します。

RUNコマンドを実行すると、開いているファイルをすべて閉じ、目的のプログラムをロードする前にメモリの内容をクリアします。しかし、Rオプションをつけた場合には、すべてのデータファイルは開いたままになります。



対応

用語

SAVE

60ex
プログラムファイル操作コマンド
メモリにあるプログラムをフロッピィディスクにセーブします。

書式

SAVE f$,[,A]
f$:ファイル名

解説

ファイル名で指定されるフロッピィディスク内のファイルに、指定したファイル名でプログラムを書き込みます(セーブします)。指定したファイル名と同じ名前のファイルがフロッピィディスクに存在する場合には更新し、存在しない場合には新しくファイルを作ります。

Aオプションを指定した場合には、プログラムはアスキー形式でセーブします。オプションの指定がない場合には、バイナリ形式でプログラムのセーブを行います。アスキー形式のセーブはバイナリ形式よりも多くのファイルスペースを必要としますが、セーブしたプログラムファイルを操作する場合には、アスキー形式でセーブされていることを必要とします。 たとえば、MERGEコマンドは、アスキー形式のファイルを必要とします。また、アスキー形式でセーブされたファイルは、データファイルとして読み出すことができます。



対応

用語

バイナリ形式:2進数で入出力します。

SCREEN

60
画面操作
画面のモード選択を行います。

書式

SCREEN [m][,a][,V]
m:ディスプレイモード(1≦m≦3)
a:文字またはグラフィクスが有効になる画面(1≦a≦2)
v:表示画面(1≦v≦2)

解説

グラフィック画面に対しての種々のモードを設定します。

ディスプレイモードは3種類でそれぞれ次のような特徴があります。

ディスプレイモード     文字 背景
1 テキスト(セミグラ)モード 40文字×20行 80文字×20行
40文字×25行 80文字×25行
16色 8色
2 16色グラフィックモード 320×200ドット
(但し、文字は40文字×20行で表示)
16色 16色
3 4色グラフィックモード 640×200ドット
(但し、文字は80文字×20行で表示)
4色 4色

N66SR-BASICのページ数は2ページまでで、1ページ目と2ページ目のスクリーン構成の組合せは次の3種類です。

1ページ目 2ページ目
テキストモード(SCREEN1) テキストモード(SCREEN1)
テキストモード(SCREEN1) 16色グラフィックモード(SCREEN2)
テキストモード(SCREEN1) 4色グラフィックモード(SCREEN3)

SCREEN文の初期状態(RESETボタン押下時)は、1ページ目2ページ目とも40文字×20行のテキストモードになっています。1ページ目はテキストモードと固定されていますが、SCREEN文のディスプレイモードを変更することによって、2ページ目の画面を16色グラフィックモード又は4色グラフィックモードにすることができます。

文字またはグラフィクスが有効になる画面はアクティブ画面と言い、文字やグラフィクスの命令を実行する画面を番号で指定します。但し、テキストモードの場合は文字又はセミグラフィック文字しか表示しません。

表示画面はビジュアル画面と言い、文字やグラフィクスを表示する画面を番号で指定します。また、プログラムの実行中以外の場合には、PAGEキーを押すことによりビジュアル画面を変えることができます。

指定できるアクティブ画面およびビジュアル画面の番号は1~2までです。

<SCREEN文を用いての初期化>

SCREEN文を用いてディスプレイモードを変更してもPALET、ROLL及び、WIDTHは、キー入力待ちの状態になるまで以前の状態が続行されます。プログラム中でこれらを変更する必要がある場合は、以下の様にしてください。

SCREEN 1,a,v:WIDTH40((40,20),(80,25))
SCREEN 1,a,v:PALET
SCREEN 2,a,v:PALET
SCREEN 2,a,v:ROLL

注意:N66-BASIC、N60-BASICおよびN60-拡張BASICモードの場合、ディスプレイモード、アクティブ画面およびビジュアル画面の番号は1から4までです。なお、画面1ではディスプレイモードは3および4に指定することはできず、アクティブ画面およびビジュアル画面の番号は、1から起動後に“How Many Pages?"で指定した数までです。

N66-BASIC、N60-BASICおよびN60-拡張BASICモードの場合のディスプレイモードについては資-54ページ資料17:カラーコードと色の関係を参照してください。

なお、関数のSCREENの場合は162ページを参照してください。


5 REM ***SCREEN***
10 INPUT"SCREEN NO.(2 OR 3)";S
20 IF S=2 THEN 400
25 IF S=3 THEN 600
26 IF S<>3 AND S<>4 THEN 10
400 SCREEN 2,2,2:CONSOLE 0,20,0,0:CLS 
410 COLOR 1,1
420 FOR I=0 TO 90 STEP 6
430 COLOR(I+6)/6
440 LINE(I,I)-(319-I,199-I),,B:NEXT I
460 FOR I=0 TO 90 STEP 6
470 COLOR(I/6)/6
480 LINE(I,I)-(319-I,199-I),,BF
490 NEXT I
500 GOTO 500
600 SCREEN 3,2,2:CONSOLE 0,20,0,0:CLS:FOR I=1 TO 4:PALET I,I+1:NEXT
610 COLOR 1,1
620 FOR I=0 TO 90 STEP 6
630 COLOR(I+6)/6
640 LINE((I*2),I)-(639-(2*I),199-I),,BF
650 NEXT
660 FOR I=0 TO 90 STEP 6
670 COLOR(I+6)/6
680 LINE((I+2),I)-(639-(2*I),199-I),,BF
690 NEXT I
700 GOTO 700

対応

用語

SCREEN(関数)

60
画面入出力
指定した位置のキャラクタコードを与えます。

書式

SCREEN(x,y)
×:水平位置(0≦x≦39または79)
y:行位置(0<≦19または24)

解説

(x,y)により指定された画面上に表示されているキャラクタコードを与えます。文字とキャラクタコードの対応については、資-4ページ資料2:キャラクタコード表を参照してください。上記の書式のx,y座標の範囲は、N6SR-BASICの範囲です。N60、N66-BASICの座標の範囲は、19ページ「1-16-2 N60、N66-BASICの座標系」を参照してください。

注意:N66SR-BASICでX≠Yのときは、約倍の処理時間がかかります。


5 REM ***SCREEN***
10 FOR I=0 TO 4
20 PRINT HEX$(SCREEN(I,0))
30 NEXT I
40 END

対応

用語

SGN

60
機能演算
符号を調べ、正なら1、ゼロなら0、負なら-1を与えます。

書式

SGN(x)
x:数式

解説

数式の値が正なら1、ゼロなら0、負なら-1を与えます。


5 REM ***SGN***
10 INPUT X,Y,Z
20 PRINT "X=";X,"Y=";Y,"Z=";Z
30 PRINT SGN(X*Y*Z)
40 END
 

対応

用語

SIN

60
演算
正弦値(サイン)を与えます。

書式

SIN(x)
x:数式(単位はラジアン)

解説

数式の値に対する三角関数sin Xの値を与えます。


5 REM ***SIN(X)***
10 FOR I=0 TO 60 STEP 30
20 H=I*3.14159265/180
30 PRINT"X=";I;"゜";
40 PRINT SPC(8):PRINT " サイン のあたいは";SIN(H)
50 PRINT SPC(8):PRINT " コサイン のあたいは";COS(H)
60 PRINT SPC(5):PRINT " タンジェント のあたいは";TAN(H)
70 PRINT:NEXT I
80 END

対応

COS:余弦値(コサイン)を与えます。

TAN:正接値(タンジェント)を与えます。

用語

SOUND

60
サウンド出力
サウンドLSIのレジスタへ直接、データを書き込みます。

書式

SOUND r,x
r:レジスタ番号(0≦r≦178)
×: 数式(0≦x≦255)

解説

SOUND文は、サウンドLSIへ直接、データを書き込む命令です。指定されたレジスタに、数式で指定された値を設定します。

N66SR-BASICモードの場合、レジスタはR0~R178までありますが、新しいLSIには空きレジスタ(R43、R35など)があり、それらを指定しても何も行われません。

なお、N66SR-BASIC以外のBASICモードの場合、レジスタはR0~R15までしか使用できませんので注意してください。

R179以上のレジスタを指定した場合は、エラーになります。

詳細は、付-1ページの付録1:音のハイテクニックな命令を参照してください。


10 SOUND 7,7
20 FOR J=1 TO 10
30 FOR I=0 TO 15 STEP.5
40 PRINT I:SOUND 8,I
50 NEXT I
60 FOR I=15 TO 0 STEP -.5
70 PRINT I:SOUND 8,I
80 NEXT I
90 NEXT J
100 END

対応

用語

SPACE$

SR
文字列操作
任意の長さの空白文字列を与えます。

書式

SPACE$(x)
x:数式(0≦x≦255)

解説

数式の数だけの空白をもった文字列を与えます。数式の値は0から255まで許されています。


5 REM ***SPACE$***
10 WIDTH 80,25
20 FOR I=-8 TO 8
30 A$=SPACE$(ABS(I*I))+"*"
40 PRINT A$
50 NEXT I
60 END

対応

用語

SPC:任意の数だけ空白を与えますが、PRINT文の出力文中でのみ使用することができます。

SPC

60
画面入出力
任意の数だけ空白を与えます。

書式

SPC(x)
x:数式(0≦x≦255)

解説

SPC関数はPRINT文の出力文中でのみ使用することができます。

ただし、N66SR-BASIC以外のBASICモードでは、LPRINTでも使用することができます。

数式の値は、0から255まで許されます。


5 REM ***SPC***
10 FOR I=1 TO 25
20 PRINT "さいとう";
30 PRINT SPC(I)
40 PRINT "たけし";
50 NEXT I
60 END

対応

用語

SQR

60
演算
平方根(ルート)を与えます。

書式

SQR(x)
x:数式(0≦x)

解説

数式の値の平方根 x を与えます。


5 REM *** SQR ***
10 FOR I=1 TO 9
20 PRINT " ルート";I;" は";SQR(I);" です。"
30 NEXT I
40 END

対応

用語

STICK

60
ジョイスティック入力
ジョイスティックの状態を与えます。

書式

STICK(f)
f:機能

解説

ジョイスティックまたはキーボードのカーソル移動キーの状態を与えます。機能は次のようになっています。

f=0キーボードのカーソルキー
f=1ジョイスティック1のスティック
f=2ジョイスティック2のスティック

与えられる値は1から8までの数値で、その数値は方向を表します。

keyboard stick

キーボードのカーソル移動キーの場合には、2、4、6、8方向は2つのキーを同時に押します。

2の方向[↑]と[→]、4の方向[↓]と[→]、6の方向[↓]と[←]、8の方向[↑]と[←]


5 REM ***STICK***
10 PRINT STICK(0)
20 PRINT STICK(1)
30 PRINT STICK(2)
40 GOTO 10

対応

STRIG:ジョイスティックのトリガーボタンの状態を与えます。

用語

STOP

60
流れ制御文
プログラムの実行を停止して、コマンド待ちになります。

書式

STOP

解説

STOP文はプログラムの実行を停止するためのもので、プログラム中のどこで使用してもかまいません。

STOP文を実行すると、次のメッセージを表示します。

Break in nn(nnは停止した行番号)

CONTコマンドによりプログラムの実行を再開できます。ただし、プログラムの実行停止中にプログラムの修正を行った場合には再開できません。


5 REM ***STOP***
10 INPUT"INPUT NO.(1 OR 2)";N
20 IF N=1 THEN PRINT"おしまい !":END
30 IF N=2 THEN PRINT"とまっちゃった。":STOP
40 GOTO 10

対応

CONT:STOP キーの入力、またはSTOP文によって停止したプログラムの実行を再開します。

用語

STR$

60

書式

STR$

解説


5 REM ***STR$***
10 A=1984:B=12:C=7
20 PRINT STR$(A)+"年";STR$(B)+"月";STR$(C)"+"日"
30 END

対応

VAL:文字列の表わす数値に変換します。

用語

STRIG

60
ジョイスティック入力
ジョイスティックのトリガーボタンの状態を与えます。

書式

STRIG

解説

ジョイスティックのトリガーボタンまたはキーボードのスペースキーの状態を与えます。機能は次のようになっています。

f=0キーボードのスペースキー
f=1ジョイスティック1のトリガーボタン
f=2ジョイスティック2のトリガーボタン

与える値は0か1で、トリガーボタンまたは、スペースキーを押していれば1、押していなければ0を与えます。


5 REM ***STRIG***
10 PRINT STRIG(0);
20 PRINT STRIG(1);
30 PRINT STRIG(2)
40 GOTO 10

対応

STICK:ジョイスティックの状態を与えます。

用語

STRING$

SR
文字列操作
任意の文字を任意の数だけ与えます。

書式

STRING$(n,d$)
n:式
d$:文字列
x:数式

解説

文字列または数式によって与えた文字を、式で指定した数だけ与えます。

与える文字は、文字列または数式によって指定します。文字列の場合は、与える文字列の最初の一文字が有効です。数式の場合は、値が0から255の範囲に限られ、この値をキャラクタコードとみなし、対応する文字を採用します。


5 REM ***STRING$***
10 INPUT A$
20 L=LEN(A$)
30 PRINT STRING$(L+4,"♥")
40 PRINT "♥ ";SPC(LEN(A$)+1);"♥"
50 PRINT "♥ ";A$;" ♥"
60 PRINT "♥ ";SPC(LEN(A$)+1);"♥"
70 PRINT STRING$(L+4,"♥")
80 END

対応

用語

TAB

60
画面入出力
現在、カーソルがある行の先頭から任意の位置まで空白を与えます。

書式

TAB(x)
x:数式(0≦x≦255)

解説

TAB関数はPRINT文の出力文中のみで使用できます。

ただし、N66SR-BASIC以外のBASICモードではLPRINT文中でも使用できます。

数式の値は、0から255(0が左端)までです。


5 REM ***TAB(X)***
10 FOR I=1 TO 7
20 IF 8-I=4 THEN 110
30 IF 8-I>I THEN 50
40 GOTO80
50 PRINT TAB(I);CHR$(49+I)
60 PRINT TAB(8-I);CHR$(49+I)
70 GOTO120
80 PRINT TAB(8-I);CHR$(49+I);
90 PRINT TAB(I);CHR$(49+I)
100 GOTO 120
110 PRINT TAB(I);CHR$(49+I)
120 NEXT I
130 END

対応

用語

TALK

mkII
音声合成出力
音声を出力します。

書式

TALK v$
V$:文字列(1≦v$に含まれる音節≦30)

解説

男性または女性の声で音声を出力します。音声の文字列は、声の種類、発声速度の指定、固定語の指定、ローマ字表記のテキスト(文字列)から成り、その作り方は応用編「1-2 声を出してみよう」を参照してください。また、音声文字列の前につける制御文字列の3文字目を“#”にし、楽譜文字列を音声文字列のあとにコロン“:”で区切ってつけると、歌を歌います。(応用編「1-3 歌わせてみよう」参照)

N66-BASICの場合、How Many Pages?では画面を2以上に指定してください。TALK文では、VRAM用領域&H0~&H3FFFをワークエリアとして使用しており、そのエリアは画面数の最大画面番号の画面エリアになっています。したがって、How Many Pages?で指定した画面数の最大画面番号の画面エリアが失われます。


5 REM ***TALK***
10 INPUT "じこくを にゅうろく してください。(15:35のように)";A$
20 B=VAL(RIGHT$(A$,2))
30 A=VAL(LEFT$(A$,2))
40 IF B>59 THEN 80
50 IF A>0 AND A<12 THEN 90
60 IF A>=12 AND A<18 THEN 100
70 IF A>=18 AND A<25 THEN 110
80 TALK "f3 tadasiku iretekudasai":GOTO 10
90 TALK "f3 ohyayougozaimasu*":GOTO 120
100 TALK "f3 koxniciwa":GOTO 120
110 TALK "f3 koxbaxwa'"
120 END

対応

用語

TAN

60
演算
正接値(タンジェント)を与えます。

書式

TAN(x)
x:数式(単位はラジアン)

解説

数式の値に対する三角関数tan xの値を与えます。


5 REM ***TAN(X)***
10 FOR I=0 TO 60 STEP 30
20 H=I*3.14159265/180
30 PRINT "X=";I;"°"
40 PRINT SPC(5):PRINT "タンジェント のあたいは";TAN(H)
50 PRINT SPC(8):PRINT " サイン のあたいは";SIN(H)
60 PRINT SPC(8):PRINT "コサイン のあたいは";COS(H)
70 PRINT:NEXT I
80 END

対応

SIN:正弦値(サイン)を与えます。

COS:余弦値(コサイン)を与えます。

用語

TIME

60
定義文
(2/999)秒ごとに最下位の桁が2ずつ増えるタイマーを与えます。

書式

TIME

解説

(2/999)秒ごとに最下位の桁が2ずつ増えるタイマーですので、4行目が約1秒(1.02564秒)になります。これを補正して1秒を単位とするタイマーのプログラムを例に示します。ただし、TIME関数はハードウェアの影響を受けるため、正確なタイマーとして使用できません。


5 REM ***TIME***
10 CLS
20 REM WIDTH 40,20
30 X=TIME
40 Y=TIME-X
50 Z=INT(Y/999)
60 LOCATE 19,9,0:PRINT Z
70 GOTO 40

対応

用語

USR

60
機械語関係
機械語で作られた関数ルーチンを呼び出します。

書式

USR(x)
x:引数(-32768≦x≦32767)

解説

ユーザの作成した機械語関数ルーチン(USR関数)を呼び出します。USR関数は、あらかじめ、POKE文でメモリ中に準備し、またDEF USR文により、その実行開始番地を設定していなければなりません。

引数によりBASICから機械語ルーチンへの値の受け渡しをすることができます。

USR関数が呼び出され、対応する機械語ルーチンに制御が移った時、Aレジスタは、渡された引数の型を示す値を持っています。その値と意味は次のようになっています。

Aの値引数の型
22バイトの整数(2の補数表現)
3文字列型
4単精度型

引数が文字列の場合には(DE)レジスタペアが4バイトから成るストリング・ディスクリプタを指しています。ストリング・ディスクリプタと呼ばれる領域は次のようになっています。

  1. ストリング・ディスクリプタの最初のバイトはその文字列の長さ(0から255)を保持します。
  2. 2番目のバイトは空き領域になっています。
  3. 3番目のバイトは文字列の置かれている先頭アドレスの下位8ビットを保持します。
  4. 最後のバイトは、文字列の置かれている先頭アドレスの上位8ビットを保持します。引数が数値の場合には、(HL)レジスタに浮動小数点アキュムレータ(FAC)と呼ばれる5バイトの領域の1バイト目のアドレスが入っています。実際の引数は、このFACの中の各型に応じて以下のように格納して渡します。
整数型のとき
FACの2バイト目(HL)レジスタペアが指しているところ)に引数の下位8ビット、3バイト目に上位8ビットが入ります。
単精度実数型のとき
FACの5バイト目は指数部になっており、(指数-128)の値が入ります。小数点は仮数部の最上位ビットの左にあると想定します。4バイト目は仮数部の最高部7ビットを保持し ます。このバイトの最上位ビットは符号を示し、0で正、1で負を表します。3バイト目と2バイト目は、仮数部の中部の16ビットを保持し、1バイト目は最低部の8ビットを保持します。

USR関数がBASICに値を返すにはFACで求めた関数値を設定することで行えます。通常返す値は、引数として渡した値と同じ型となります。

また機械語プログラムを作成する際には次の点に注意してください。

  1. BASICに制御を戻すためには、プログラムはリターン命令(RET)を用いなければなりません。
  2. 機械語ルーチンからBASICに戻る時には、呼び出された時とスタックポインタ(SP)の値が等しくなければなりません。
  3. 機械語ルーチンに引き渡された引数が文字列であった場合、引数の値はストリング・ディスクリプタのアドレスとなりますが、機械語ルーチンではこの4バイトのストリング・ディスクリプタを書き換えてはなりません。またストリング・ディスクリプタによって指されるストリングの内容は変更することはできますが、その長さを変更してはなりません。


10 CLEAR,&HDFFF
20 DEF USR=&HE000
30 FOR I=&HE000 TO &HE01F
40 READ D$:D=VAL("&H"+D$)
50 POKE I,D:NEXT I
60 PRINT"アルファベットを こもじでにゅうりょくしてください。"
70 PRINT"にゅうりょくをおえたら リターンキーをおしてください。"
80 INPUT A$
90 B$=USR(A$):PRINT B$
100 PRINT "おおもじに なりましたね!":END
110 DATAFE,03,C0,EB,56,23,23,7E,23,66
120 DATA6F,14,15,C8,7E,FE,61,DA,1C,E0
130 DATAFE,7B,D2,1C,E0,E6,DF,77,23,C2
140 DATA0C,E0

実行後、英字を入力すると、CAPSキーに関係なく英字が表示されます。

対応

POKE:メモリ上に指定されたアドレスに情報を書き込みます。

DEF USR:機械語で作られたユーザ関数の実行開始番地を定義します。

用語

USR

60
機械語関係
機械語で作られた関数ルーチンを呼び出します。

書式

USR(x)
x:引数(-32768≦x≦32768)

解説

ユーザの作成した機械語関数ルーチン(USR関数)を呼び出します。USR関数はあらかじめメモリ内に準備されており、その実行開始番地が設定されていなければなりません。実行開始番地の設定は&HEAEB番地に開始番地の下位8ビット、&HFAEC番地に上位8ビットを、POKE文で書き込むことによって行います。

引数によりBASICから機械語ルーチンへの値の受け渡しをすることができます。引数の値の範囲は-32768から32767の間です。機械語プログラム中で引数の値を受けとるには、&H741番地をコールするとDEレジスタに値を代入します。

BASICにデータを引き渡すには、ABレジスタにデータをロードした後、&HD16番地にジャンプします。


10 CLEAR 300,&HDFDF
20 POKE&HFAEB,&HE0
30 POKE&HFAEC,&HDF
40 FORI=&HDFE0 TO &HDFF3
50 READ D$:D=VAL("&h"+D$)
60 POKE I,D:NEXT I:PRINT "?";
70 A$=INKEY$:IFA$=""GOTO70
80 A=ASC(A$):IFA=13 THEN END
90 A=USR(A)
100 PRINT CHR$(A);:GOTO 70
110 DATA cd,41,07,7b,fe,61,38,06
120 DATA fe,7b,30,02,d6,20,47,af
130 DATA cd,16,0d,c9

対応

POKE:メモリ上に指定されたマドレスに情報を書き込みます。

用語

VAL

60
文字列操作
文字列の表す数値に変換します。

書式

VAL(d$)
d$:文字列

解説

文字列を数値に変換します。もし、文字列の最初の文字が+、-、&または数字以外ならば、VALの値は0になります。(N66SR-BASICの場合、文字列の最初のスペースも0になります。)また、文字列の途中で数値に変換できない文字がある場合には、その文字以後の文字列を無視します。(文中列中のスペースも無視します。)


10 FOR I=0 TO 15
20 PRINT "16しんの ";HEX$(I);" の 10しんすうは";VAL("&H"+HEX$(I))
30 NEXT I
40 END

対応

STR$:数値を文字列に変換します。

用語

WAIT

SR
I/Oポート入出力
コンピュータの入力ポートをモニタする間、プログラムの実行を停止します。

書式

WAIT P,s1[,s2]
P:ポート番号
s1,s2:式1,式2

解説

WAIT文を実行すると、指定した入力ポートのビットパターンが指定した状態になるまでプログラムの実行を中断します。指定したポートから読み込んだデータと式2とのXORの結果を得、式1のANDが取られます。もしその結果が0(偽)なら、BASICはもう一度ポートの状態を読み込み同じ操作を繰り返します。もし結果が0でなければ(真)、プログラムの実行 は次の文に移ります。式2を省略した場合は0と見なします。

注意:WAIT文の実行により無限ループにはいってしまう場合があります。その場合はPC-6001MKISR本体の背面リセットボタンを押してください。


5 REM ***WAIT***
10 PRINT "この プログラムは、プリンタのじゅんびが"
20 PRINT "できるまで プログラムのじっこうを"
30 PRINT "ていしする プログラムです。"
40 PRINT "プリンタのじゅんびをしてください。"
50 WAIT &HC0,255,253
60 PRINT:PRINT "プリンタのじゅんびが できました。"
70 END

対応

用語

XOR:排他的論理和

AND:論理積

WIDTH

SR
画面制御コマンド
テキスト画面に表示する文字の桁数と行数を指定します。

書式

WIDTH [f][,l]
f:桁数(80又は40)
l:行数(25又は20)

解説

テキスト画面に表示する文字の行数と1行の桁数を指定します。

桁数は80、40どちらかを指定します。桁数を省略した場合、現在の桁数が採用します。行数は20、25どちらかを指定します。省略された場合、現在の行数を採用します。つまり、 テキスト画面におけるキャラクタ座標系は下図のようになります。

注意:グラフィック画面にもキャラクタ座標があります。ただし、キャラクタ座標は固定で変更することはできません。下記のような設定になっています。

16色グラフィックモードのキャラクタ座標40文字×20行(固定)
4色グラフィックモードのキャラクタ座標80文字×20行(固定)


5 REM ***WIDTH***
10 PRINT "ヒョウジ シタイ ガメン ノ コウセイハ "
20 PRINT "1.(80ケタ X 25ギョウ)"
30 PRINT "2.(80ケタ X 20ギョウ)"
40 PRINT "3.(40ケタ X 25ギョウ)"
50 PRINT "4.(40ケタ X 20ギョウ)"
60 INPUT A
70 ON A GOTO 90,100,110,120:GOTO 10
90 WIDTH 80,25:PRINT "(80ケタ X 25ギョウ)":GOTO 130
100 WIDTH 80,20:PRINT "(80ケタ X 20ギョウ)":GOTO 130
110 WIDTH 40,25:PRINT "(40ケタ X 25ギョウ)":GOTO 130
120 WIDTH 40,20:PRINT "(40ケタ X 20ギョウ)":GOTO 130
130 END

対応

用語