戻る
N60-BASIC / N66-BASIC / N66SR-BASIC
PC-6001 : 日本電気 (NEC)

N60-BASIC
N66-BASIC N66SR-BASIC

N60-BASICはMicrosoft BASICにNEC独自の拡張を行ったものである。
PC-6001シリーズのBASICはN60、N60m、N66といったように機種毎に拡張されたものが使用されている。
N60m-BASICはTALK文の仕様以外はほぼN66-BASICとほぼ同じである。
同様にN66SR-BASICは画面、サウンド周り以外はN66-BASICとほぼ同じである。

コマンド名にN60EXと付いている場合はN60-EXTEND BASIC以降に対応していると意味になる。
同様にN66と付いている場合はN60m, N66-BASIC以降、N66SRと付いている場合はN66SR-BASICに対応している意味となる。

なお、N60-BASICに関しては初代PC-6001のものと、それ以降のものでは画面仕様が異なることに留意。

N60/N66-BASIC簡易リファレンス
コマンド
表記凡例使用例説明
AUTO N60EXAUTO [行番号][,増分]AUTO 100,5先頭に自動的に行番号を発生させる(増分を省略した場合は10)
DELETEDELETE 行番号[,[行番号2]][,...]
DELETE [行番号][-[行番号2]]
DELETE 10,100
DELETE 100-200
指定した行番号を削除する
指定した範囲の行番号を削除する
LISTLIST {[行番号] | [.]}
LIST [行番号][,[行番号2]][,...]
LIST [行番号][-[行番号2]]
LIST
LIST 10,100
LIST 100-200
メモリ上のプログラムを表示する
指定した行番号を表示する
指定した範囲の行番号を表示する
LLISTLLIST {[行番号] | [.]}
LLIST [行番号][,[行番号2]][,...]
LLIST [行番号][-[行番号2]]
LLIST
LLIST 10,100
LIST 100-200
メモリ上のプログラムをプリンタに出力する
指定した行番号をプリンタに出力する
指定した範囲の行番号をプリンタに出力する
LIST L N66 onlyLIST L[,行番号]LIST L,10指定した行番号が使われている行の行番号を表示する
LIST V N66 onlyLIST V[,変数名]LIST V,Z指定した変数名が使われている行の行番号を表示する
LLIST L N66 onlyLLIST L[,行番号]LLIST L,10指定した行番号が使われている行の行番号をプリンタに出力する
LLIST V N66 onlyLLIST V[,変数名]LLIST V,Z指定した変数名が使われている行の行番号をプリンタに出力する
RENUM N60EXRENUM [新行番号][,旧行番号]RENUM 1000,10,100新行番号を先頭に行番号をつけ直す
NEWNEWNEWプログラムを全て消去し、変数を初期化する
CLEARCLEAR [文字列領域サイズ][,BASIC使用上限アドレス]CLEAR 32767,&hf0fb変数を初期化し、領域サイズとBASIC使用上限アドレスを設定する
CONTCONTCONTSTOPキーやSTOP,ENDで終了したプログラムの実行を再開する
RUNRUN {[行番号] | "[ファイル装置番号:]ファイル名"}RUN 100指定した行番号からプログラムを実行する(行番号を省略した場合は先頭から、ファイル名を指定した場合は読み込んで実行する)
CSAVECSAVE "ファイル名"CSAVE "test"カセットテープにプログラムを保存する
CSAVE*CSAVE* 数値配列名CSAVE* Xカセットテープに数値配列情報を保存する
CLOADCLOAD ["ファイル名"]CLOAD "test"カセットテープからプログラムを読み込む(ファイル名を省略した場合は最初に見つかったプログラムを読み込む)
CLOAD*CLOAD* 数値配列名CLOAD* XカセットテープからCSAVE*で保存された数値配列情報を読み込む
CLOAD?CLOAD? ["ファイル名"]CLOAD? "test"カセットテープのプログラムを照合する(ファイル名を省略した場合は最初に見つかったプログラムを照合する)
LCOPYLCOPY [コピーモード]LCOPY画面の情報をプリンタに出力する
・コピーモード(N60、N60EXでは省略)
1:200×320で出力
2:400×320で出力
SAVE N60EXSAVE "[ファイル装置番号:]ファイル名"[,A]SAVE "1:test.bas"記録メディアに[ASCII形式で]プログラムを保存する
LOAD N60EXLOAD "[ファイル装置番号:]ファイル名"[,R]LOAD "1:test.bas"記録メディアからプログラムを読み込む(Rを付加した場合は実行も行う)
BSAVE N60EXBSAVE "[ファイル装置番号:]ファイル名",開始アドレス,サイズBSAVE "1:test.bin",&hd000,&h1000記録メディアにマシン語ファイルを保存する
BLOAD N60EXBLOAD "[ファイル装置番号:]ファイル名"[,開始アドレス][,R]BLOAD "1:test.bin",&hd000記録メディアからマシン語ファイルを読み込む(Rを付加した場合は実行も行う)
FILES N60EXFILES [ファイル装置番号]FILES 1記録メディアにあるファイル一覧を出力する
LFILES N60EXLFILES [ファイル装置番号]LFILES 1記録メディアにあるファイル一覧をプリンタに出力する
KILL N60EXKILL "[ファイル装置番号:]ファイル名"KILL "1:test.bas"記録メディア上のファイルを削除する
NAME N60EXNAME "[ファイル装置番号:]旧ファイル名" as "[ファイル装置番号:]新ファイル名"NAME "1:test.bas" as "1:test2.bas"記録メディア上のファイル名を変更する
MERGE N60EXMERGE "[ファイル装置番号:]ファイル名"MERGE "1:test.bas"記録メディア上のASCII形式ファイルとメモリ上のプログラムをマージする
MON N66MONMONモニタコマンドモードにする
EXECEXEC 開始アドレスEXEC &H1234マシン語プログラムを実行する
MENU N66SRMENUMENUメニュー画面に戻る
[戻る]
ステートメント:プログラム制御
表記凡例使用例説明
ENDENDENDプログラムを終了する
STOPSTOPSTOPプログラムを一時停止する
REM N66SR{REM | '} [注釈]REM TEST注釈を入れる(実行には無関係)
FOR...TO...STEP〜NEXTFOR 変数=開始値 TO 終了値 [STEP 増分]〜NEXT [変数][,変数2][,...]FOR I=0 TO 10 STEP 2〜NEXT IFORからNEXTまでの処理を繰り返す
GOSUBGOSUB 行番号GOSUB 1000サブルーチンを呼び出す
RETURNRETURN [行番号]RETURNサブルーチンから復帰する
GOTOGOTO 行番号GOTO 1000指定した行番号から実行する
IF...THEN | GOTOIF 論理式 {THEN 文 | GOTO 行番号}IF A=0 {THEN END | GOTO 10}論理式の条件判断をする
ON...GOTOON 式 GOTO 行番号[,行番号2][,...]ON A GOTO 100,200式の値に応じて指定された行番号へ分岐する
ON...GOSUBON 式 GOSUB 行番号[,行番号2][,...]ON A GOSUB 100,200式の値に応じて指定された行番号のサブルーチンを呼び出す
ON ERROR GOTO N66SRON ERROR GOTO 行番号ON ERROR GOTO 100エラー発生時の分岐処理ルーチンを指定する ※エラーメッセージ一覧
RESUME N66SRRESUME {[0] | NEXT | 行番号}RESUME 100エラー処理を終了し、実行を再開する
0     : エラー原因になった行から再開する(0を省略しても同じ)
NEXT  : エラー原因になった次の行から再開する
行番号: 指定した行番号から再開する
WAIT N60EXWAIT ポート番号,式1[,式2]WAIT 1,&H80ポートをモニタし、指定された値になるまでプログラムの実行を停止する
[戻る]
ステートメント:変数関連
表記凡例使用例説明
INPUTINPUT [文字列{; | , }]変数[,変数2][,...]INPUT "X=";Xキーボードから入力した値を変数に代入する
LETLET 変数=式LET A=1変数に値を代入する(LETは省略できる)
DATADATA 定数[,定数][,...]DATA "TEST",765READで読み込むデータを定義する
READREAD 変数[,変数][,...]READ A$,BDATAで定義したデータを変数に代入する
RESTORERESTORE [行番号]RESTORE 1000READで読み込むDATAの先頭行を設定する
DEF FNDEF FN関数名(パラメータ[,パラメータ2[,...]])=定義式DEF FNTEST(X,A,B)=X^2+AX+Bユーザ定義関数を定義する
DIMDIM 変数名(最大値1[,最大値2][,...])[,...]DIM A(100,10),B$(100)配列変数の定義をする
ERASE N60EXERASE 変数名[,変数名2[,...]]ERASE A,B$配列変数を消去する
[戻る]
ステートメント:マシン語関連
表記凡例使用例説明
DEF USRDEF USR[番号]=アドレスDEF USR1=&HD000USRで呼び出すマシン語サブルーチンを定義する
POKEPOKE アドレス,数式POKE &HD000,&HC9指定したアドレスに値を書き込む
[戻る]
ステートメント:画面関連
表記凡例使用例説明
CLSCLSCLS画面を消去する
LOCATELOCATE X,Y[,カーソル表示]LOCATE 10,10指定した位置にカーソルを移動する
PRINTPRINT | ? [式[{, | ;}式2[,...]]]PRINT "HELLO,WORLD"画面上に表示する
COLORCOLOR [テキスト/グラフィック色][,バックグラウンド色][,色の組み合せ]COLOR 1,1,1テキスト/グラフィックとバックグラウンド及び組み合わせを指定する
PALET N66SRPALET [パレット番号,カラーコード]PALET 13,1カラーパレットを変更する(パレット番号:13〜16)
CONSOLECONSOLE [スクロール開始行][,[スクロール行の長さ]][,[ファンクションキー表示モード]][,[キークリック音モード]][,[プリンタオプション N66SR]]CONSOLE 0,20,1,0テキスト画面を設定する
SCREENSCREEN 画面モード[,アクティブページ][,ディスプレイページ]SCREEN 2画面のモードを設定する
WIDTH N66SRWIDTH 画面サイズWIDTH 80画面桁数を設定する(40/80)
CIRCLECIRCLE [STEP](X,Y),半径,[カラーコード],[開始角度],[終了角度],[比率]CIRCLE(0,0),100,2円を描画する
GET@GET@(X1,Y1)-{(X2,Y2) | STEP(X,Y)},配列変数GET@(0,0)-(15,15),A%画面上のグラフィックパターンを配列変数に読み込む
PUT@PUT@(X1,Y1)-{(X2,Y2) | STEP(X,Y)},{配列変数 | KANJI(漢字コード)}[,条件][,フォアグラウンドカラー][,バックグラウンドカラー]PUT@(0,0),A%,PSET
PUT@(0,0),KANJI(&K2033)
GET@で取り込んだパターンや指定した漢字を表示する
PSET  : そのまま描画する
PRESET: 色を反転して描画する
OR    : 画面上のパターンと配列変数のパターンをドット単位でORした結果を描画する
AND   : 画面上のパターンと配列変数のパターンをドット単位でANDした結果を描画する
XOR   : 画面上のパターンと配列変数のパターンをドット単位でXORした結果を描画する(省略時はXOR)
LINELINE{(X1,Y1) | STEP(X1,Y1)}-{(X2,Y2) | STEP(X2,Y2)}[,カラーコード][,{B | BF}LINE(0,0)-(100,100),4,BF直線(B:四角形,BF:塗りつぶした四角形)を描画する
PAINTPAINT{(X,Y) | STEP(X,Y)}[,領域カラーコード][,境界カラーコード]PAINT(100,100),5,2指定した境界色で囲まれた領域を塗る
PSETPSET{(X,Y) | STEP(X,Y)}[,カラーコード]PSET(100,100),2指定した座標にドットを表示する
PRESETPRESET{(X,Y) | STEP(X,Y)}[,カラーコード]PRESET(100,100),2指定した座標のドットを消去する
KANJI N66KANJI {(X,Y) | STEP(X,Y)}[,カラーコード],漢字コード1[,...]KANJI(100,100),2,777漢字を表示する
ROLL N66SRROLL X,YROLL 0,1グラフィック画面を縦横にスクロールさせる
[戻る]
ステートメント:サウンド関連
表記凡例使用例説明
SOUNDSOUND レジスタ,データSOUND 15,10サウンドLSIを制御する
PLAYPLAY 文字列1[,文字列2[,文字列3][,...,文字列6 N66SR]]]PLAY "O3CDEFGAB"MMLの文法に従って演奏する(N66SRでは文字列1〜3はFM音源、文字列4〜6はPSG音源)
BGM N66SRBGM 制御モードBGM 1PLAY文の実行を制御する
・制御モード
0:PLAY文の演奏が全て終わるまで次の命令を実行しない
1:PLAY文の演奏が終わる前に次の命令を実行する
TALK N66TALK 制御文字列TALK "F42."
TALK "M2 KOXNICIWA."
音声を出力する
[戻る]
ステートメント:ディスク関連
表記凡例使用例説明
OPEN N60EXOPEN ファイル名 [FOR モード] AS #ファイル番号OPEN "test.bas" FOR INPUT AS #1指定したファイルをファイル番号でOPENする
INPUT : 入力モード
OUTPUT: 出力モード
APPEND: 追加モード
省略時: ランダムモード
CLOSE N60EXCLOSE #ファイル番号1[,#ファイル番号2][,...]CLOSE #1指定したファイル番号のファイルをCLOSEする
FIELD N60EXFIELD #ファイル番号,フィールド幅 as 文字変数[,フィールド幅] [as ....]FIELD #1,128 as TEST$,64ランダムファイルバッファにフィールド変数を割り当てる
GET N60EXGET #ファイル番号[,数式]GET #1,10ファイルからデータをファイルバッファに読み込む
PUT N60EXPUT #ファイル番号[,数式]PUT #1,10ファイルバッファのデータをファイルに書き込む
INPUT #INPUT #ファイル番号 | 入力機器番号,変数名1[,変数名2]INPUT #1,A,Bシーケンシャルファイル中のデータを読み込んで変数に代入する(LINEを付加した場合はコンマなどを無視して代入)
・入力機器番号(-nで指定)
0:キーボード
1:カセットテープ
2:RS-232C
PRINT #PRINT #ファイル番号 | 出力機器番号,式[;式2[,...]]PRINT #1,A;Bファイルにデータを書き込む
・出力機器番号(-nで指定)
0:ディスプレイ
1:カセットテープ
2:RS-232C
3:プリンタ
4:ボイスシンセサイザー(PC-6053)
DSKO$ N60EXDSKO$(ファイル装置番号,ヘッド番号,トラック番号,セクタ番号)DSKO$(1,1,2,3)ファイル装置に直接256bytesの文字列を書きこむ
LSET N60EXLSET 文字変数=文字列LSET A$="TEST"ランダムファイルバッファのフィールドに左詰めで文字列を代入する
RSET N60EXRSET 文字変数=文字列RSET A$="TEST"ランダムファイルバッファのフィールドに右詰めで文字列を代入する
[戻る]
ステートメント:その他
表記凡例使用例説明
ERROR N66SRERROR エラー番号ERROR 19指定したエラー番号のエラーを発生させる ※エラーメッセージ一覧
KEYKEY 番号,文字列KEY 1,"TEST"指定した番号のファンクションキーに文字列を設定する
LPRINTLPRINT [式[{, | ;}式2[,...]]]LPRINT A$プリンタに出力する
OUTOUT ポート番号,数式OUT &HD0,10ポートに値を出力する
[戻る]
文字列関数
表記凡例使用例説明
ASCASC(文字列式)ASC("TEST")文字列先頭のキャラクタコードを返す
VALVAL(文字列式)VAL("123")文字列を数値に変換する
CHR$CHR$(数式)CHR$(41)指定したキャラクタコードの文字を返す
GRP$ N66SRGRP$(数式)GRP$(41)指定したセミグラフィックキャラクタコードの文字を返す
STR$STR$(数式)STR$(A)数値を文字列に変換する
STRING$ N66SRSTRING$(式,[文字列 | 数式})STRING$(10,"=")指定した文字数だけ追加した文字列を返す
SPACE$ N66SRSPACE$(数式)SPACE$(A)指定した長さの空白文字列を返す
SPCSPC(数式)SPC(A)指定した長さの空白を返す(出力文字式内でのみ使用)
TABTAB(数式)TAB(A)指定した位置まで空白を返す(出力文字式内でのみ使用)
DATE$ N66SRDATE$DATE$="10/01/01"日付文字列変数を操作する
TIME$ N66SRTIME$TIME$="12:34:56"時刻文字列変数を操作する
HEX$ N60EXHEX$(数式)HEX$(255)10進数を16進数文字列に変換する
OCT$ N66SR N60EXOCT$(数式)OCT$(255)10進数を8進数文字列に変換する
LENLEN(文字列式)LEN(A$)文字列の文字数を返す
LEFT$LEFT$(文字列式,式)LEFT$(A$,2)文字列の左側から式で指定した桁数の文字列を返す
MID$MID$(文字列式,式1[,式2])[=文字列]MID$(A$,2,1)文字列の式1で指定した位置から式2で指定した桁数の文字列を返す(=文字列を指定した場合はその文字列と置換する)
RIGHT$RIGHT$(文字列式,式)RIGHT$(A$,2)文字列の右側から式で指定した桁数の文字列を返す
[戻る]
数値関数
表記凡例使用例説明
INTINT(数式)INT(A)数式の整数値を返す(数式の値を超えない整数値)
SGNSGN(数式)SGN(A)数式の符号を返す
RNDRND(数式)RND(A)0以上1未満の乱数を返す
正数: 次の乱数を発生する(省略した場合も同様)
負数: 乱数を初期化する
0   : 同じ乱数を生成する
[戻る]
数学関数
表記凡例使用例説明
ABSABS(数式)ABS(-1000)絶対値を返す
SINSIN(数式)SIN(3.14)正弦(サイン)の値を返す
COSCOS(数式)COS(3.14)余弦(コサイン)の値を返す
TANTAN(数式)TAN(3.14)正接(タンジェント)の値を返す
EXPEXP(数式)EXP(1)自然対数の低(e)に対する指数関数の値を返す
LOGLOG(数式)LOG(1)自然対数の値を返す
SQRSQR(数式)SQR(2)平方根の値を返す
[戻る]
その他関数
表記凡例使用例説明
DSKF N60EXDSKF(ファイル装置番号)DSKF(1)指定したファイル装置の残り容量(クラスタ)を返す
DSKI$ N60EXDSKI$(ファイル装置番号,ヘッド番号,トラック番号,セクタ番号)DSKI$(1,1,2,3)ファイル装置から直接読み込んだ256bytesの文字列を返す
LOC N60EXLOC(ファイル番号)LOC(1)指定したファイル番号の論理的位置を返す
LOF N60EXLOF(ファイル番号)LOF(1)指定したファイル番号の総レコード数を返す
EOF N60EXEOF(ファイル番号)EOF(1)シーケンシャルファイルの終わりを検出する
FREFRE(機能)FRE(0)使用可能なメモリサイズを返す(機能指定が数値ならメモリ未領域が、文字なら未使用文字列領域のサイズが返される)
INKEY$INKEY$INKEY$押されたキーの値を返す
STICKSTICK(機能)STICK(0)ジョイスティックの方向を返す
0:キーボードのカーソルキー
1:ジョイスティック1
2:ジョイスティック2
STRIGSTRIG(機能)STRIG(0)ジョイスティックのトリガーボタン状態を返す
0:キーボードのスペースキー
1:ジョイスティック1
2:ジョイスティック2
PAD N60EXPAD(機能)PAD(0)タッチパネルからの入力の有無を検出して、入力座標を返す
0:入力の有無を検出し、入力がない時は0、ある時は1を返す
1:入力がある時、X座標を返す
2:入力がある時、Y座標を返す
SCREENSCREEN(X,Y)SCREEN(10,10)指定した位置のアスキーコードを返す
ROLL N66SRROLL(機能)ROLL(0)ROLL文によって何ドットスクロールしたかを返す
0:横のスクロール値(0〜319)
1:縦のスクロール値(0〜203)
CSRLINCSRLINCSRLIN現在のカーソル行位置を返す
POSPOS(番号)POS(0)現在のカーソル桁位置を返す(番号指定は無視される)
POINTPOINT{(X,Y) | STEP(X,Y)}POINT(100,100)指定した座標のカラーコードを返す
LPOSLPOS(番号)LPOS(0)プリンタのヘッド位置を返す(番号指定は無視される)
INPINP(ポート番号)PORT(100)指定したポート番号の入力値を返す
PEEKPEEK(アドレス)PEEK(&HD000)指定したアドレスの値を返す
USRUSR番号(式)I=USR1(TEST)マシン語関数を呼び出す
TIMETIMETIME電源ON時からのタイムカウンタを返す
ERR N66SRERRERR発生したエラーのエラーコードを返す
ERL N66SRERLERLエラーの発生した行番号を返す
[戻る]

※ モニタコマンド
D[adr1,adr2] : Dump(メモリをダンプする)
(adr1,adr2 : 開始アドレス、終了アドレス)
Q[adr1,adr2] : Query(メモリをASCIIでダンプする)
(adr1,adr2 : 開始アドレス、終了アドレス)
G[adr] : Go(メモリの内容を実行する)
S[adr] : Set(メモリを編集する)
M[adr1,adr2,adr3] : Move(メモリの内容を移動する)
(adr1,adr2,adr3 : 開始アドレス、終了アドレス、移動先アドレス)
F[adr1,adr2,d : Fill(メモリの範囲置換)
(adr1,adr2,d : 開始アドレス、終了アドレス、値)
X[register] : eXemine(レジスタの操作)
R[offset] : Read(カセットテープからデータを入力する)
(offset : 送信されたデータのアドレスに加算するアドレス値)
W[adr1,adr2] : Write(カセットテープへデータを出力する)
(adr1,adr2 : 開始アドレス、終了アドレス)
L[offset] : Load(RS-232Cからデータを入力する)
(offset : 送信されたデータのアドレスに加算するアドレス値)
P[adr1,adr2] : Punch(RS-232Cへデータを出力する)
(adr1,adr2 : 開始アドレス、終了アドレス)
C : Copy(モニタ使用中の出力をプリンタに切り換える)
E : Echo(入出力データの内容を同時に画面表示する)
B : Break(BASICに戻る)
(R : NEWで消去したBASICプログラムを復元する)
(G : モニタからBASICプログラムを実行する)

[戻る]

※ PRINT書式
; : 式を続けて表示する(A;B) 例 1;2
1 2
, : 式をTABで区切って表示する(A,B) 例 1,2
1         2

[戻る]

※ カラーコード
PC-6001シリーズの色指定は複雑である
SCREENで設定されるモードで変わるが、文字とグラフィックで指定できる色が異なる場合があるため注意が必要
また、PC-6001初代とそれ以降のN60-BASIC modeでは色指定が異なるので、更に注意が必要
(恐らくあらゆるBASICの中で一番ややこしいのがこれである…)

初代では白は薄い緑っぽい白で、緑もちょっと薄かったりと全体がいわゆるパステルカラーっぽい発色である
デフォルトでは文字白の背景緑となり、もう1つのセットでは文字マゼンタ、背景赤となる
SCREEN 4では白が白というよりは絶妙な滲みが出て何とも言えない味がある

・N60-BASIC (PC-6001)

SCREEN 1 (テキストモード:32文字×16行)
組み合わせ コード テキスト
グラフィック
1,2 1 白、背景緑
2 緑、背景白
3 マゼンタ、背景赤
4 赤、背景マゼンタ

SCREEN 2 (セミグラフィックモード:64×48)
組み合わせ コード テキスト グラフィック
背景
1 0 白、背景緑
1 白、背景緑
2 緑、背景白
3 マゼンタ、背景赤
4 赤、背景マゼンタ
5 ― (COLOR 4と同じ)
6 シアン
7 マゼンタ
8
2 0 赤、背景マゼンタ
1 赤、背景マゼンタ
2 マゼンタ、背景赤 シアン
3 緑、背景白 マゼンタ
4 白、背景緑
5 ― (COLOR 4と同じ)
6
7
8

SCREEN 3 (カラーグラフィックモード:128×192)
組み合わせ コード テキスト
グラフィック
背景
1 1
2
3
4
2 1
2 シアン
3 マゼンタ
4

SCREEN 4 (フルグラフィックモード:256×192)
組み合わせ コード テキスト
グラフィック
背景
1 0 白、背景緑
1 緑、背景白
2 0 黒、背景白
1 白、背景黒

・N60-BASIC (PC-6001mk2以降), N60-EXTEND BASIC

SCREEN 1 (テキストモード:32文字×16行)
組み合わせ コード テキスト
グラフィック
1 1
2 白反転
3
4 緑反転
2 1
2 緑反転
3
4 白反転

SCREEN 2 (セミグラフィックモード:64×48)
組み合わせ コード テキスト グラフィック
背景
1 0
1
2 白反転
3
4 緑反転
5
6 白反転 シアン
7 マゼンタ
8 緑反転
2 0
1
2 緑反転 シアン
3 マゼンタ
4 白反転
5
6 白反転
7
8 白反転

SCREEN 3 (カラーグラフィックモード:128×192)
組み合わせ コード テキスト
グラフィック
背景
1 1
2
3
4
2 1
2 シアン
3 マゼンタ
4

SCREEN 4 (フルグラフィックモード:256×192)
組み合わせ コード テキスト
グラフィック
背景
1 0
1
2 0
1

・N66-BASIC(N60m-BASIC), N66SR-BASIC
N66SR-BASICでは色の組み合わせは不要になり、カラーコードの13〜16がPALET文で色の変更ができるようになった

N66 : SCREEN 1 (テキストモード:40文字×20行)
N66 : SCREEN 2 (セミグラフィックモード:80×40)
組み合わせ コード テキスト
グラフィック
背景
1 1
2
3 青緑
4 黄緑
5 青紫
6 赤紫 マゼンタ
7 空色 シアン
8
9
10
11
12
13
14 マゼンタ
15 シアン
16
2 1
2
3 青緑 青緑
4 黄緑 黄緑
5 青紫 青紫
6 赤紫 赤紫
7 空色 空色
8
9
10
11
12
13
14 マゼンタ
15 シアン
16

N66 : SCREEN 3 (15/8色グラフィックモード:160×200)
N66SR : SCREEN 1 (テキスト・セミグラフィックモード:40/80文字×20/25行)
N66SR : SCREEN 2 (15色グラフィックモード:320×200)
組み合わせ コード テキスト
グラフィック
背景
1 1
2 青紫
3
4 赤紫
5 青緑
6 空色
7 黄緑
8 灰色
9
10
11
12 マゼンタ
13 N66SR:PALET
14 シアン N66SR:PALET
15 N66SR:PALET
16 N66SR:PALET
2 1
2
3
4
5
6 シアン
7 マゼンタ
8

N66SR-BASICの4色グラフィックモードはPALETで色を変更できる

N66 : SCREEN 4 (4色グラフィックモード:320×200)
N66SR : SCREEN 3 (4色グラフィックモード:640×200)
組み合わせ コード テキスト
グラフィック
背景
1 1
2
3
4 マゼンタ
2
(N66SR-BASICのデフォルト配色)
1
2 シアン
3
4
3 1
2 青紫
3
4 赤紫
4 1 青緑
2 空色
3 黄緑
4
5 1
2
3
4
6 1
2 シアン
3 マゼンタ
4

[戻る]

※ サウンドLSI操作
AY-3-8910、N66SR-BASICの場合はYM2203のレジスタを操作する

レジスタ(AY-3-8910) : 0(R0)〜15(R15)
R0.R1 : Ch.A 周波数
R2.R3 : Ch.B 周波数
R4.R5 : Ch.A 周波数
R6 : Noise 周波数
R7 : Ch. 設定
R8 : Ch.A 音量
R9 : Ch.B 音量
R10 : Ch.C 音量
R11,R12 : エンベロープ周期
R13 : エンベロープ形状
R14 : I/O ポート A
R14 : I/O ポート B
データ : 0〜255

[戻る]

※ MML構文
C,D,E,F,G,A,B : 音階(音階のあとに音長指定可能)
+ #: 半音上げる
-  : 半音下げる
Ln : 音長指定(初期値4 : 1〜64 /「.」も使用可能)
Rn : n分休符(音長指定は同じ)
Tn : テンポ指定(初期値120 : 32〜255)
On : オクターブ指定(初期値4 : 1〜8)
Vn : 音量指定(初期値8 : 0〜15)
@n N66SR : 音色の設定(初期値3 : 1〜12,253〜255)
Nn N66SR : 音階指定(0〜96)
Sn : ソフトウェアエンベロープの種類を指定(初期値0 : 0〜15)
Mn : ソフトウェアエンベロープの周期を指定(初期値255 : 1〜65535)

[戻る]

※ TALK構文
TALK {f | m}{num}{space | # | num}[発声文字列]
引数 1 : 女声 | 男声
引数 2 : 発声速度(2[速い]〜6[遅い])
引数 3 : 発声指定
space : 発声文字列を使用
(ローマ字を使用するが、ち→[ci]、つ→[cu]、っ→[q]、ん→[x]、てぃ→[ti]、とぅ→[tu]、などというように一部標準のものとは異なる
# N66SR : 音階をつけて発声
(発声文字列に「:」を付けてMMLとほぼ同じ構文で指定)
num : 固定文字列を使用(指定に関わらず女声となる)

数字 固定文字列
0 終わりました
1 お待ち下さい
2 故障中です
3 いらっしゃいませ
4 ありがとうございました

[戻る]

※ 定数型・変数型
(N6x-BASICでは数値型に整数や単精度などの型がない)

A$ : 文字列型(A$="TEST")
&O : 8進数形式(&O777、&127)
&H : 16進数形式(&HFFFF)

[戻る]

※ 演算子
+   : 加算・結合(A+B、A$+B$)
-   : 減算(A-B)
*   : 乗算(A*B)
/   : 除算(A/B)
\   N66SR : 整数除算(A\B)
MOD N66SR : 整数の剰余(A MOD B)
^   : べき算(A^B)
=   : 等号・代入(A=3、A=B+C)
> < : 不等号・比較(A>3、A<=2)
NOT : 否定(NOT 2)
AND : 論理積(2 AND 1)
OR  : 論理和(2 OR 1)
XOR N66SR : 排他的論理和(2 XOR 1)
IMP N66SR : 包含(1 IMP 0)→XORの否定

[戻る]

※ エラーメッセージ一覧

N60-BASICは他のMicrosoft系BASICとエラーメッセージの表示に違いがある。
下記にその一覧を記す。
エラーメッセージ一覧
番号表示英語表記意味
?Extra IgnoredINPUT文で指定した変数の数より、多いデータを入力している
1?NF ErrorNEXT without FORNEXTに対応したFORがない
2?SN ErrorSyNtax errorコマンド、またはステートメントの書き方が間違っている
3?RG ErrorRETURN without GOSUBRETURNに対応したGOSUBがない
4?OD ErrorOut of DataREADに対応したDATAがない
5?FC Errorillegal Function Call関数やステートメントの引数が間違っている
6?OV ErrorOVerflow値が許容範囲を超えた
7?OM ErrorOut of Memoryメモリが不足している
8?UL ErrorUndefined Line number未定義の行番号を指定した
9?BS ErrorsuBScript out of range配列の添字が指定した範囲外
10?DD ErrorDuplicate Definition配列やユーザ関数が二重宣言された
11?/0 Errordivision by zero除算の分母が0
12?ID ErrorIllegal Directダイレクトモードで使えないステートメントを使った
13?TM ErrorType Mismatch変数または定数の型が合わない
14?OS ErrorOut of String space変数領域が不足している
15?LS ErrorString too Long文字定数または文字変数が256文字を超えた
16?ST ErrorString formula Too complex文字式が複雑すぎる
17?CN ErrorCaN't continueCONTによるプログラムの再開ができない
18?UF ErrorUndefined user Function未定義関数を参照した
19?NR ErrorNo Resumeエラー処理にRESUMEがない
20?RW ErrorResume Without errorエラー処理でないのにRESUMEが使用された
21?UE ErrorUnprintable Errorエラーメッセージの定義されていないエラー
22?MO ErrorMissing Operand必要なオペランドが不足している
23?BO Errorline Buffer Overflow行入力バッファが許容範囲を超えた
24?NA Errorfeature Not Available使用不可能な機能を使用しようとした
25?DB ErrorDisk BASIC featureディスクBASICコマンドが実行された
26?FN ErrorFOR without NEXTFORに対するNEXTがない
27?TR ErrorTape Read errorテープ読み込みエラー
28?FD ErrorFile Data errorデータの構成が不適当
?UE ErrorUndefined Error未定義エラー
50??FO ErrorFIELD OverflowFIELDの長さが256文字を超えている
51??IE ErrorInternal Error内部エラー
52??BN ErrorBad file Number使用されたファイル番号は使用できない
53??FF ErrorFile not Found指定したファイルが存在しない
54??AO Errorfile Already Open指定したファイルが既にOPENされている
55??EF Errorinput past Endシーケンシャルファイルにおいて、全てのデータを読み込んでいるのにINPUT#命令で読み込もうとしている
ランダムファイルにおいて、GET文で指定したレコード番号はファイルの大きさを超えている
56??NM Errorbad file NaMe errorファイル名の中にコントロール文字などのファイル名に使用できない文字が含まれている
ファイル名がヌルストリングになっている
57??DS ErrorDicect Statement in fileASCII形式のファイル中にダイレクトステートメントが存在する
58??SP ErrorSequential after PUTPUT文を実行した後、シーケンシャル入出力を行おうとした
59??SQ ErrorSeQuential I/O onlyシーケンシャル入出力以外の入出力命令を実行した
60??CF ErrorClose File number指定したファイルがCLOSEされている
61??FW ErrorFile Write proctectedファイルへの書き込みが保護されている
62??DO ErrorDisk Offlineディスク装置が接続されていない
63??DM ErrorDisk not Mountedディスクがマウントされていない
64??IO Errordisk I/O errorディスク装置エラー
65??FE ErrorFile already Exists指定したファイルは既に存在している
66??BM ErrorBad file Mode error中間言語形式のファイルをマージ(MERGE)しようとしている
67???? Error 未定義エラー
68??DF ErrorDisk Fullディスク容量が一杯である
69??AT Errorbad Allocation Table異常なアロケーションテーブルがある
70??DN Errorbad Drive NumberOPENされていないドライブ番号が使用された
71??TS Errorbad Track/Sector異常なトラックもしくはセクターがある
72??DR ErrorDisk Read errorディスク読み込みエラー
73??RD ErrorRename across Disks異なるディスク装置へのリネームを行おうとした

[TOPに戻る]