戻る
ファミリーベーシック
ファミリーコンピュータ : 任天堂 (Nintendo)

ファミリーベーシック Fファミリーベーシック V3

コンニチハ GAME BASIC BG

ファミリーベーシックはNintendo、SHARP、Hudsonが開発したファミリーコンピュータ用のBASICである。
初代(Ver1/2)とV3が用意されており、V3では命令の追加と容量が増えている。
(V3では最初の対話部分がなく直接BASICが起動するため、BG画面を呼び出す命令が追加されている)

特徴として、ファミコンの性能を生かしたスプライト機能とBG機能がある。
但し自由に定義ができるわけではないので、結果的にプログラミング入門としての用途が主である。
ソフトとキーボードがセットで提供されており、カセットテープの利用も可能である。
(Hu-BASICの特徴である省略表記も可能である)

ON...RETURNなど、他のBASICには余り存在していないコマンドもあり容量が少ない割に強力なBASICである。
(ただし、数値は整数しか扱えないため、割算の結果を使用する場合などには注意が必要)

Family BASIC 簡易リファレンス
コマンド
表記省略表記凡例使用例説明
LISTL.LIST [行番号]
LIST [行番号][{- | ,}[行番号2]]
LIST
LIST 100-200
メモリ上のプログラムを表示する
指定した範囲の行番号を表示する
DELETE V3DEL.DELETE 行番号
LIST [行番号][{- | ,}[行番号2]]
LIST
LIST 100-200
指定した行番号を削除する
指定した範囲の行番号を削除する(省略可能な行番号はどちらか1つ)
FIND V3F.FIND "検索文字列"FIND "A"指定した文字列をプログラムから検索し、表示する
AUTO V3A.AUTO [行番号][,増分]AUTO 100,5先頭に自動的に行番号を発生させる(増分を省略した場合は10)
RENUM V3REN.RENUM [新行番号][,[旧行番号],[増分]]RENUM 1000,10,100新行番号を先頭に行番号をつけ直す
NEWNEWNEWプログラムを全て消去し、変数を初期化する
CONTC.CONTCONTSTOPやBREAKキーで終了したプログラムの実行を再開する
RUNR.RUN [行番号]RUN 100指定した行番号からプログラムを実行する(行番号を省略した場合は先頭から実行する)
SAVESA.SAVE "ファイル名"SAVE "TEST"カセットテープにプログラムを保存する
LOADLO.LOAD ["ファイル名"]LOAD "TEST"カセットテープからプログラムを読み込む(ファイル名を省略した場合は最初に見つかったプログラムを読み込む)
LOAD?LO.?LOAD? ["ファイル名"]LOAD? "TEST"カセットテープのプログラムを照合する(ファイル名を省略した場合は最初に見つかったプログラムを照合する)
「?」は「PRINT/P.」と記述しても動作する(コマンド解釈上そうなっているだけで、意味はない)
SAVESA.SAVE "ファイル名"SAVE "TEST"カセットテープにプログラムを保存する
LOADLO.LOAD ["ファイル名"]LOAD "TEST"カセットテープからプログラムを読み込む(ファイル名を省略した場合は最初に見つかったプログラムを読み込む)
SAVES V3SAVES "ファイル名"SAVES "TEST"カセットテープにBGグラフィック画面を保存する
LOADS V3LOADS ["ファイル名"]LOADS "TEST"カセットテープからBGグラフィック画面を読み込む(ファイル名を省略した場合は最初に見つかったプログラムを読み込む)
CLICK V3CLI. {O. | OF.}CLICK {ON | OFF}CLICK ON
CLICK OFF
クリック音を出力する
クリック音を停止する
TRON V3TRONTRONトレースモードへ移行する
TROFF V3TROFFTROFFトレースモードを終了する
ERROR V3ERR.ERROR 2ERRORエラーを発生させる
SYSTEMS.SYSTEMSYSTEMGAME BASICモード(BASICやBGの選択)へ移行する(V3ではBACKUPと同等)
BGTOOL V3BG.BGTOOLBGTOOLBGグラフィックモードへ移行する([ESC][STOP]でBASICに復帰する)
BACKUP V3BA.BACKUPBACKUPプログラムとBGグラフィック画面をバックアップする
GAME V3GA.GAME ゲーム番号(0〜3)[,オプション]GAME 1内蔵ゲームを実行する
オプション
0 : BGデータの転送を行わない(省略時)
1 : BGデータの転送を行う
[戻る]
ステートメント:プログラム制御
表記省略表記凡例使用例説明
ENDE.ENDENDプログラムを終了する
STOPSTO.STOPSTOPプログラムを一時停止する(コマンド入力に戻る)
PAUSEPA.PAUSE [停止時間]PAUSE
PAUSE 30
プログラムの実行をキーが押下されるまで停止する
プログラムの実行を停止時間(1〜32767[1/30s])分停止する
REM'REMREM TEST注釈を入れる(実行には無関係)
但し、GOSUBのあとは「'」しか使用できない
FOR...TO...STEP〜NEXTF. TO ST.〜N.FOR 変数=開始値 TO 終了値 [STEP 増分]〜NEXT [変数][,変数2][,...]FOR I=0 TO 10 STEP 2〜NEXT IFORからNEXTまでの処理を繰り返す
GOSUBGOS.GOSUB 行番号GOSUB 1000サブルーチンを呼び出す
RETURNRE.RETURN [行番号]RETURNサブルーチンから復帰する
GOTOG.GOTO 行番号GOTO 1000指定した行番号から実行する
IF...THENIF T.IF 論理式 THEN {文 | 行番号}IF A=0 THEN 10論理式の条件判断をする
ON...GOTOO. G.ON 式 GOTO 行番号[,行番号2][,...]ON A GOTO 100,200式の値に応じて指定された行番号へ分岐する
ON...GOSUBO. GOS.ON 式 GOSUB 行番号[,行番号2][,...]ON A GOSUB 100,200式の値に応じて指定された行番号のサブルーチンを呼び出す
ON...RETURNO. RE.ON 式 RETURN 行番号[,行番号2][,...]ON A RETURN 100,200式の値に応じて指定された行番号へサブルーチンから復帰する
ON ERROR GOTO V3O. ERR. G.ON ERROR GOTO 行番号ON ERROR GOTO 100エラー発生時指定された行番号へ分岐する
RESUME V3RESU.RESUME {NEXT | 行番号}RESUME
RESUME NEXT
RESUME 100
エラー発生行へ復帰する
エラー発生行の次に復帰する
指定した行番号へ復帰する
KEYK.KEY n,文字列KEY 1,"RUN"+CHR$(13)ファンクションキー(n=1〜8)を定義する
KEYLISTK.L.KEYLISTKEYLISTファンクションキーの内容一覧を表示する
[戻る]
ステートメント:変数関連
表記省略表記凡例使用例説明
CLEARCLE.CLEAR [アドレス]CLEAR
CLEAR &HD000
変数、配列を初期化する
使用する上限アドレスを設定する
INPUTI.INPUT [文字列{; | ,}]変数[,変数2][,...]INPUT "X=";Xキーボードから入力した値を変数に代入する
(文字列で「,」入力時は「","」と括ること)
LINPUTLIN.LINPUT [文字列{; | ,}]文字列変数LINPUT "X=";X$キーボードから入力した文字列を変数に代入する
(INPUTと違い、入力したものはそのまま文字列とする)
LETLET 変数=式LET A=1変数に値を代入する(LETは省略できる)
DATAD.DATA 定数[,定数2][,...]DATA "TEST",765READで読み込むデータを定義する
READREA.READ 変数[,変数2][,...]READ A$,BDATAで定義したデータを変数に代入する
RESTORERES.RESTORE [行番号]RESTORE 1000READで読み込むDATAの先頭行を設定する
ON...RESTOREO. RES.ON 式 RESTORE 行番号[,行番号2][,...]ON A RESTORE 100,200式の値に応じて指定されたDATAの先頭行を設定する
DIMDI.DIM 変数名(最大値[,最大値2][,...])[,...]DIM A(100,10),B$(100)配列変数の定義をする
SWAPSW.SWAP 変数1,変数2SWAP A,B同型の変数の値を交換する
[戻る]
ステートメント:マシン語関連
表記凡例使用例説明
CALLCA.CALL アドレスCALL &HD000指定したアドレスのマシン語を実行する
POKEPO.POKE アドレス,数式[,...]POKE &HD000,&HC9指定したアドレスに値を書き込む
[戻る]
ステートメント:画面関連
表記省略表記凡例使用例説明
CLSCL.CLSCLS画面を消去する
COLORCOL.COLOR X,Y,カラーコードCOLOR 1,10,0テキスト画面の色を指定する
FILTER V3FIL.FILTER カラー番号FILTER 0画面全体を指定したカラー番号で表示する
CGENCGE.CGEN nCGEN 2BG、スプライト画面のキャラクタを定義する
CGSETCG.CGSET b,sCGSET 1,1BG、スプライト画面のパレット番号を設定する
b : 0〜1(BG)
s : 0〜2(Sprite)
DEF SPRITEDE.SP.DEF SPRITE n,(a,b,c,d,e)=fDEF SPRITE 2,(0,1,2,100,0)=0スプライトを定義する
POSITIONPOS.POSITION n,X,YPOSITION 0,10,10指定したスプライトの初期位置を設定する
n : スプライト番号(0〜7)
X : 0〜255[有効範囲0〜244,default:120)
Y : 0〜255[有効範囲5〜220,default:120)
SPRITESP.SPRITE {n[,X,Y] | ON | OFF}SPRITE 1,0,10
SPRITE ON
SPRITE OFF
スプライト(n=0〜7)を表示する(座標を省略した場合は表示を消去)
全スプライトを表示する
全スプライトの表示を消去する
DEF MOVEDE.M.DEF MOVE(n)=SPRITE(a,b,c,d,e,f)DEF MOVE(2)=SPRITE(0,1,2,100,0,0)スプライトの動作を定義する
MOVEM.MOVE n0[,n1[,...[,n7]]]MOVE 0,1,2指定したスプライトの動作を開始する
CUTCU.CUT n0[,n1[,...[,n7]]]CUT 0,1,2指定したスプライトの動作を停止する
ERAER.ERA n0[,n1[,...[,n7]]]ERA 0,1,2指定したスプライトの動作を停止し、表示を消去する
CAN V3CAN n0[,n1[,...[,n7]]]CAN 0,1,2指定したスプライトの定義を消去する
VIEWV.VIEWVIEWBGグラフィックをテキスト画面に表示する
LOCATELOC.LOCATE X,YLOCATE 10,10表示位置を指定する
X : 0〜27
Y : 0〜23
PALETPAL.PALET m n,(c1,c2,c3,c4)PALET S 0,14,1,5,9パレットを設定する
PRINT{P. | ?}PRINT [式[{, | ;}[式2[,...]]]]PRINT "HELLO,WORLD"画面上に表示する
SCREEN V3SC.SCREEN 表示面(0〜1),描画面(0〜1)SCREEN 1,1画面のモードを設定する
0:BG面0(テキスト)
1:BG面1(BGグラフィック)
BGGET V3BGG.BGGETBGGETBGグラフィックをBGグラフィック編集画面からBG面へ移動する
BGPUT V3BGP.BGPUTBGPUTBGグラフィックをBG面からBGグラフィック編集画面へ移動する
[戻る]
ステートメント:サウンド関連
表記省略表記凡例使用例説明
BEEPB.BEEPBEEPBEEP音を出力する
PLAYPL.PLAY "MML文字列[:[MML文字列2][:[MML文字列3]]]"PLAY "C:E:G"音楽を演奏する
[戻る]
文字列関数 ※変数型
表記省略表記凡例使用例説明
ASCAS.ASC(文字列式)ASC("TEST")文字列先頭のキャラクタコードを返す
CHR$CH.CHR$(数式)CHR$(41)指定したキャラクタコードの文字を返す
LENLE.LEN(文字列式)LEN(A$)文字列の文字数を返す
HEX$H.HEX$(数式)HEX$(255)10進数を16進数文字列に変換する
LEFT$LEF.LEFT$(文字列式,式)LEFT$(A$,2)文字列の左側から式で指定した桁数の文字列を返す
RIGHT$RI.RIGHT$(文字列式,式)RIGHT$(A$,2)文字列の右側から式で指定した桁数の文字列を返す
MID$MI.MID$(文字列式,式1[,式2])MID$(A$,2,1)文字列の式1で指定した位置から式2で指定した桁数の文字列を返す
VALVA.VAL(文字列式)VAL("123")文字列を数値に変換する
STR$STR.STR$(数式)STR$(A)数値を文字列に変換する
INSTR V3INS.INSTR([開始位置,]文字列1,文字列2INSTR(3,A$,"A")文字列1の指定位置から文字列2を検索して位置を返す
[戻る]
数値関数 ※演算子
表記凡例使用例説明
SGNSG.SGN(数式)SGN(A)数式の符号を返す
RNDRN.RND(数式)RND(A)指定した数字の範囲内(1〜32767)で整数乱数(0から指定未満)を返す
[戻る]
数学関数
表記省略表記凡例使用例説明
ABSAB.ABS(数式)ABS(-1000)絶対値を返す
[戻る]
その他関数
表記省略表記凡例使用例説明
MOVEM.MOVE(番号)MOVE(0)指定したスプライト(0〜7)の動作状況を返す
 0 : 動作完了
-1 : 動作中
CRASH V3CR.CRASH(スプライト番号)CRASH(0)指定したスプライト番号と衝突するスプライト番号を返す(複数の場合は値が小さい方が優先)
VCT V3VC.VCT(スプライト番号)VCT(0)指定したスプライト番号の方向を返す
FREFR.FREFREフリーエリアの値を返す
POSPOS(機能番号)POS(0)現在のカーソルX座標を返す(機能番号はダミー)
CSRLINCS.CSRLINCSRLIN現在のカーソルY座標を返す
SCR$ V3SC.
SCR$(X,Y,c)SCR$(0,0,1)指定した座標のBGグラフィックを返す
c : 配色番号(0[取得しない:default],1[取得する])
XPOSXP.XPOS(スプライト番号)XPOS(0)指定したスプライトのX座標を返す
YPOSYP.YPOS(スプライト番号)YPOS(0)指定したスプライトのY座標を返す
INKEY$INK.INKEY$[(0)]INKEY$
INKEY$(0)
押されたキーの値を返す(入力は待たない)
押されたキーの値を返す(カーソルが表示され、入力を待つ)
STICKSTI.STICK(コントローラ番号)STICK(1)コントローラの方向の値を返す
STRIGSTRI.STRIG(コントローラ番号)STRIG(1)コントローラのボタンの値を返す
PEEKPE.PEEK(アドレス)PEEK(&HD000)指定したアドレスの値を返す
ERL V3ERLERLエラー発生行を返す
ERR V3ERRERRエラー番号を返す
[戻る]

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

[戻る]

※ CGEN
CGEN n
SpriteのAはマリオなどのSprite定義群、Bは英数字などのBG定義群
デフォルトは2

nBGSprite
01A
11B
22A
32B

[戻る]

※ DEF SPRITE
DEF SPRITE n,(a,b,c,d,e)=f

n : スプライト番号(0〜7)

a : 配色番号(0〜3[CGSETで指定した配色群から選択])
b : サイズ(0:8x8、1:16x16)
c : 優先順位(0:BGより前,1:BGより後)
d : X軸(0:通常、1:反転)
e : Y軸(0:通常、1:反転)

f : 定義データ
b=0→1キャラクタ分(8bytes)の文字列データ
b=1→4キャラクタ分(32bytes)の文字列データ
(左上から右上、左下、右下の順に定義)

[戻る]

※ DEF MOVE
DEF MOVE(n)=SPRITE(a,b,c,d,e,f)

n : スプライト番号(0〜7)

a : キャラクタ種別(0〜15)
b : 方向(0〜8[0:停止、1〜8:1が上で時計回りで8が左上])
c : 速さ(0,1〜255[0:1/256frame、1[max:1/30s]〜255[min:255/30s])
d : 移動量(0[非表示],1〜255[x2dot])
e : 優先順位(0:BGより前,1:BGより後)
f : 配色番号(0〜3[CGSETで指定した配色群から選択])

キャラクタ種別
0マリオ
1レディ
2ファイターフライ
3アキレス
4ペンペン
5ファイアーボール
6
7スピナー
8スターキラー
9スターシップ
10爆発
11ニタニタ
12レーザー
13シェルクーパー
14サイドステッパー
15ニットピッカー

[戻る]

※ PALET
PALET m n,c1,c2,c3,c4

m : B[BG] | S[Sprite]

n : 配色番号(0〜3[CGSETで指定した配色群から選択])

c1 : バックグラウンドカラー(n=0の時有効)
c2 : 1番目のカラーコード
c3 : 2番目のカラーコード
c4 : 3番目のカラーコード

※CGSET実行で元に戻る

[戻る]

※ カラーコード

色系統暗色明色
白系統0163248
青系統1173349
2183450
3193551
4203652
赤系統5213753
6223854
7233955
8244056
緑系統9254157
10264258
11274359
12284460
黒系統132945
143046
153147

※黒系統はどれを選んでも黒なので、1色と数えて全52色が指定可能

[戻る]

※ FILTER
FILTER カラー番号

0 : 無色
1 : 赤色
2 : 緑色
3 : 黄色
4 : 青色
5 : 橙色
6 : 水色
7 : 白色

[戻る]

※ PLAY
PLAY "MML文字列[:[MML文字列2][:[MML文字列3]]]"
(MML文字列3ではエンベロープ無効[Yn/M1])

C,D,E,F,G,A,B : 音階
# : シャープ(音階の前につけると半音上がる)
    音長は音階もしくは休符のあとに指定(0〜9)
0 : 32分
1 : 16分
2 : 付点16分
3 : 8分
4 : 付点8分
5 : 4分
6 : 付点4分
7 : 2分
8 : 付点2分
9 : 全

T : テンポ(1[Fast]〜8[Slow])
Y : デューティ比(0[12.5%],1[25.0%],2[50.0%],3[75.5%])
M : エンベロープ(0[Off],1[On])
V : M0指定時音量(0〜15)
    M1指定時エンベロープ長(0〜15)
O : オクターブ(0〜5)
R : 休符(Rn[n=0〜9])

デフォルト : T4M0V15O3
音長無指定 : 5

[戻る]

※ コントローラ
STICK(n) : n=0〜1
0 : 中立状態
1 : 右
2 : 左
4 : 下
8 : 上
(同時入力の場合は数値を足す)

STRIG(n) : n=0〜1
0 : 中立状態
1 : START押下(1Pのみ)
2 : SELECT押下(1Pのみ)
4 : Bボタン押下
8 : Aボタン押下
(同時入力の場合は数値を足す)

[戻る]

※ 定数型・変数型
数値の精度別型はなく、整数で−32768〜32767が指定できる範囲である

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

[戻る]

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

[戻る]

※ エラーメッセージ一覧

エラーメッセージ一覧
番号表示英語表記意味
0?NFNEXT without FORNEXTに対応したFORがない
1?SNSyNtaxコマンド、またはステートメントの書き方が間違っている
2?RGRETURN without GOSUBRETURNに対応したGOSUBがない
3?ODOut of DATAREADに対応したDATAがない
4?ILILlegal function call引数が間違っている
5?OVOVerflow値が許容範囲を超えた
6?OMOut of Memoryメモリが不足している
7?ULUndefined Line number未定義の行番号を指定した
8?SOSubscript Out of range配列の添字が異常
9?DDDuplicate Definition配列が2重定義されている
10?DZDivision Zero除算の分母が0
11?TMType Mismatch変数または定数の型が合わない
12?STString Too long文字列が長すぎる(31文字)
13?FTFormula Too complex式が複雑すぎる
14?CCCan't ContinueCONTによるプログラムの再開ができない
15?UF V3Undefined Function未定義の関数を使用した
16?MOMissing Operandパラメータが不足している
17?TPTaPe readカセットテープの読み出しエラー
18?NR V3No RESUMERESUMEできない(ON ERROR GOTOの分岐先にRESUMEがない)
19?RE V3RESUME withoutON ERROR GOTOの分岐先でないのにRESUMEが存在する
20?NB V3No BG dataBGデータがRAM上にない
--?UP V3UnPrintable未定義のエラー

[戻る]

[TOPに戻る]