任天堂が1984年に出した ファミリーベーシック(Family BASIC) は、ファミコンでBASICプログラミングができる学習環境でした。本ページは、その命令とコマンドを 実機で観察し直して 編んだリファレンスの総索引です。連載「LLMのためのFamily BASICリファレンス」全15回に、SRAMの番外編とボード活用のおまけを加えた全20回を、命令別と用途別の両方から引けるように並べ直しました。
マニュアルの記述ではなく、実際にカセットを挿して動かした結果を一次ソースにしています。だから「マニュアルに載っていない記法」や「AIの想定と実機が食い違う挙動」まで拾えています。「MOVE命令の使い方を知りたい」「SCR$は何を返すのか」といった1命令単位の疑問から入って、該当回の該当節へ直接飛べる入口として使ってください。
このページの使い方
- 命令を本文で引く → 命令辞典 … 全コマンドをカテゴリ別の実本文(構文・実機挙動・例)で
- どの回で検証したか引く → 命令別インデックス … 命令名から該当の連載回へ
- やりたいことから引く → 用途別インデックス … 「音を鳴らしたい」「データを保存したい」から逆引き
- 物語として通しで読む → 連載を順番に読む … AIに40年前のBASICを書かせるまでの制作記
命令辞典(カテゴリ別に本文で引く)
「PRINT はどう書く?」「?SN ERROR の意味は?」という1命令単位の疑問は、命令辞典から本文で直接引けます。各命令はエミュレータで動かして挙動を確定しています。
- 総目次 → ファミリーベーシック 命令辞典
- ステートメント(命令文)43命令:
PRINTFOR〜NEXTDEF SPRITEMOVEPOKEほか - 関数 23関数:
RNDASCMID$STICKSCR$ほか - 演算子・記法・実用パターン 28項目:算術/関係/論理演算子、記法の制約、スプライト定石
- エラーコード 17コード:
?SN?OV?ILほか(マニュアルと実機の食い違いを明示) - システムコマンド・メモリ 11項目:
RUNLISTPEEK/POKEほか - 言語仕様・文字コード 約40項目:整数16bit・変数名2文字・文字コード表
命令別インデックス
実機観察で挙動を確定した命令を、カテゴリ別にまとめます。各命令の詳細(構文・実機での挙動・AIが間違えるポイント)はリンク先の節にあります。
グラフィック / スプライト
| 命令 | 内容 | 解説 |
|---|---|---|
MOVE |
スプライトの簡易移動。静的なSPRITE命令とは別系統で扱われる |
リファレンス(9) 画面・スプライト編 |
DEF SPRITE / SPRITE |
スプライトの形と表示属性を定義する | リファレンス(9) 画面・スプライト編 |
| 画面6命令 | 画面表示まわりの6命令。構文を実機で確定 | リファレンス(9) 画面・スプライト編 |
画面 / 文字表示
| 命令 | 内容 | 解説 |
|---|---|---|
SCR$ |
画面に表示されている文字を読み取る。LOCATE+PRINTと対をなす |
リファレンス(11) メモリ・カーソル編 |
CSRLIN / POS |
カーソルの現在位置を返す。PRINT直後にどう動くか |
リファレンス(11) メモリ・カーソル編 |
PRINT(カンマ区切り) |
カンマで区切ると桁を揃えて並ぶ(8桁ごとの区切り) | リファレンス(4) 記法編 |
サウンド
| 命令 | 内容 | 解説 |
|---|---|---|
PLAY |
音を鳴らす。鳴り終わるまで次の命令に進まない | リファレンス(10) 音・入力編 |
| ミュージックボード | PLAY文とは別系統の作曲モード。AIに自動入力させて作曲 |
おまけ:AIに作曲させる |
入力(パッド / キー)
| 命令 | 内容 | 解説 |
|---|---|---|
STICK |
方向キーの入力。押している方向が数値で返る | リファレンス(10) 音・入力編 |
STRIG |
ボタンの入力。1P/2Pで別に取れる | リファレンス(10) 音・入力編 |
INKEY$ / INPUT / LINPUT / KEY n |
キーボード入力の各種命令 | リファレンス(10) 音・入力編 |
メモリ / 保存
| 命令 | 内容 | 解説 |
|---|---|---|
POKE / PEEK |
メモリを直接書き込む/読み出す。同じ番地(例 &H7100)に対称に効く |
リファレンス(11) メモリ・カーソル編 |
| SRAM / バックアップスイッチ | 電源を切ってもプログラムが残る仕組みと、その”未定義”の性質 | 番外編:バックアップスイッチの正体 / SRAM未定義 |
演算 / 関数 / エラー
| 命令 | 内容 | 解説 |
|---|---|---|
RND |
乱数。実は毎回同じ並びで出る(RND(10)は 0, 9, 7 で始まる) |
リファレンス(8) 演算子・関数編 |
| 演算子 / エラーコード | AIの想定と実機が食い違う構文の通り方・エラー | リファレンス(8) 演算子・関数編 |
?CC ERROR |
特定のエラー。再現しにくいため複数の条件から絞り込んで観察 | リファレンス(11) メモリ・カーソル編 |
記法 / 構文の罠(マニュアル外の事実)
| 項目 | 内容 | 解説 |
|---|---|---|
LET |
他のBASICと違い、この命令は使えない | リファレンス(4) 記法編 |
NEXT |
後ろに変数を付けるとエラーになる | リファレンス(4) 記法編 |
| 単項マイナス | マニュアルに記載はないが実機では動く | リファレンス(4) 記法編 |
DIM |
配列を宣言すると同時に中身がゼロで初期化される | リファレンス(4) 記法編 |
LIST |
範囲指定のハイフンはカンマでも代用できる(記載なし) | リファレンス(4) 記法編 |
用途別インデックス
「やりたいこと」から逆引きする入口です。
- まず全体像をつかみたい → (1) AIがファミリーベーシックを書けない理由/(14) 連載のまとめ
- スプライトを動かしたい → (9) 画面命令とスプライトの仕組み
- 音を鳴らす・作曲したい → (10) 音・パッド・キー入力/おまけ:ミュージックボードで作曲
- コントローラ入力を取りたい → (10) 音・パッド・キー入力
- メモリを直接読み書きしたい → (11) メモリ直接操作(POKE/PEEK)ほか
- プログラムを保存したい(SRAM) → 番外編:バックアップスイッチの正体
- GAME BASIC以外のボードを使いたい → おまけ(1) 計算ボード/(2) 作曲ボード/(3) 伝言ボード
- AIに書かせたい・ローカルLLMで動かしたい → (5) 検証ベンチの設計/(6) ベンチを動かす/(12) 資料あり/なしで精度比較/(13) ローカル4モデルを選び直す/(15) 学習データに焼き込む
連載を順番に読む(全15回)
リファレンスをどう作ったか、という制作の物語として通しでも読めます。
- AI が Family BASIC を書けない理由
- 中古マニュアルと AI OCR でリファレンスを作る
- 紙マニュアルをスマホで撮って起こす — macOS文字認識とClaude Vision
- マニュアルに書いていない記法
- ローカルLLMベンチの設計
- ローカルLLMベンチを動かしてみる
- 実機検証ベースに作り直してベータ配布する
- Tier A — 演算子・関数・エラーの食い違い
- Tier B — 画面6命令とOAM 10スプライト
- Tier C — sound / pad / keys
- Tier D — 直接テスト困難な5命令を三角測量
- 公開版でベンチ再走 — referenceあり/なしのPASS率比較
- temp 0でローカル4モデルを選び直す
- 連載クロージング — AIと一緒に、もう一度ファミベで遊ぶ
- 実機観察リファレンスをLoRAに焼く(学習編)
番外編・おまけ
- 番外編:バックアップスイッチの正体 / SRAM未定義、あるいは未知からの交信
- おまけ(ボード活用):(1) 総論+CALC / (2) ミュージックボードで作曲 / (3) メッセージボードに書き込む
関連:創作トラック
この実機リファレンスを使って、実際にファミリーベーシックで遊び・作る側の連載が辺境部にあります。
pareido.jp「あの頃AIがあったら」第1回: ファミリーベーシックでもバイブコーディングしたい – パレイドこんにちは、パレイド辺境部の橘です。 新しい連載を始めます。1984 年のファミリーベーシック——2KB の RAM と行番号つき BASI…pareido.jp