ファミリーベーシック システムコマンド・メモリ一覧|RUN・LIST・POKE を実機で確かめた辞典

ファミリーベーシック(Family BASIC)でプログラムを書いて動かすには、RUN(実行)・LIST(表示)・NEW(消去)といったシステムコマンドを使います。本ページは、これら実行制御のコマンドと、PEEK / POKE でメモリを直接読み書きするためのメモリマップを一覧にし、エミュレータ上で確かめた辞典です。

ファミベのユーザ領域は 2KB(実質 約1.95KB)しかありません。だからこそ &H7040&H77FF&H は16進数の表記)にプログラムがどう収まるか、どのアドレスがシステム予約かを把握しておくと、PEEK / POKE で踏んではいけない場所を避けられます。容量に余裕がほしい場合は RAM が 4KB(2KB の倍)に増えた V3(後継版の本体。メモリが 2KB→4KB に増えた) が選択肢になります。下表から各項目へ飛んでください。

辞典シリーズ:この辞典は命令カテゴリごとに分かれています。総目次は ファミリーベーシック 命令・コマンド完全リファレンス(hub)から。

対応バージョンと凡例

本ページのコマンド・メモリ仕様は Family BASIC V2.0A / V2.1 で共通です(特記なき項目は V2.0A / V2.1 実機確認)。各エントリの先頭にマークを付けています。

  • ✅ 実機確認 … エミュレータで実際に実行し、画面表示まで観察したもの
  • 📖 規格 … マニュアル記載の仕様。テープ I/O など本検証では未発火・未観察(挙動は規格ベース)

システムコマンド・メモリ早見表

項目 種類 実機での注意 詳細
CLEAR システム メモリ上限指定。同時に変数・配列もクリア CLEAR
NEW システム プログラム全消去。略号なし NEW
LIST システム プログラム表示。-, でも可 LIST
RUN システム 実行。必ず変数をクリアして開始 RUN
CONT システム 停止後の再開。編集すると不可 CONT
LOAD テープ テープから読込。失敗時 ?TP LOAD
SAVE テープ テープへ記録 SAVE
LOAD? テープ SAVE 後の検証(VERIFY) LOAD?
メモリマップ メモリ &H7040&H77FF がユーザ領域 メモリマップ
ユーザ空き領域 メモリ &H7040&H77FF(1984 バイト) ユーザ空き領域
PRG-ROM メモリ &H8000&HFFFF(インタプリタ本体) PRG-ROM

システムコマンド

CLEAR|メモリ上限の指定

📖 規格 ・ 構文 CLEAR アドレスタグ システム / メモリ

機能:BASIC で使用するメモリ領域の最上位アドレスを指定します。上限アドレスを縮めれば BASIC 領域が減り、その上の領域がマシン語などに確保されます。アドレス は数値(16bit)で、&H7AF まで(= &H77AF が上限)。

注意CLEAR は引数の有無で挙動が変わる2つの形があります。CLEAR アドレス はメモリ領域の上限を変更(本項)、CLEAR(引数なし)は変数・配列を全クリアします。いずれの形でも、CLEAR を実行すると同時に変数・配列がクリアされます(FOR-NEXT・GOSUB のネスティング、音楽・配列も含めてクリア)。マシン語プログラムを BASIC とは別領域に置きたい場合に使います。

NEW|プログラムの全消去

📖 規格 ・ 構文 NEWタグ システム / プログラム管理

機能:メモリ内のプログラムをすべて消去します。新しいプログラムを入力する前に必ず使います。

注意:事故を防ぐため略号はありませんCLEAR と異なり、メモリ上限などのシステム設定は変更しません。変更後の現プログラムを失いたくない場合は、別途 SAVE してから NEW してください。

LIST|プログラムの表示

✅ 実機確認 ・ 構文 LIST [(m)] [(-n)]略号 L.タグ システム / 表示

機能:メモリ内のプログラムを画面に表示します。引数の組み合わせで使い分けます。

  • LIST — 全プログラムを表示
  • LIST m — m 行目のみ表示
  • LIST m- — m 行目以降を全部表示
  • LIST m-n — m から n までを表示
  • LIST -n — 最初から n 行目まで表示

注意:範囲指定のハイフン -カンマ , で置き換えても動きます(例: LIST 100,200 = LIST 100-200、連載者検証)。表示中は ESC キーで中断、'(シングルクォート)で一時停止、矢印キーで停止/再開できます。

実機観察:行 10 / 20 を入力 → LIST10 PRINT "FIRST" 20 PRINT "SECOND" が再表示され、続けて検証スクリプトが流した RUN で実行されて FIRST SECOND が出ました。

10 PRINT "FIRST"
20 PRINT "SECOND"
LIST
  FIRST
  SECOND

RUN|プログラムの実行

📖 規格 ・ 構文 RUN [n]略号 R.タグ システム / 実行

機能:プログラムを実行します。RUN 単独なら最初の行から、RUN n なら n 行目から実行します。

注意RUN は引数の有無に関わらず、必ず変数をクリアします。変数をクリアせずに途中行から実行したい場合は GOTOCONT を使ってください。

CONT|停止したプログラムの再開

📖 規格 ・ 構文 CONT略号 C.タグ システム / 実行制御

機能STOP / BREAK / エラーで停止したプログラムを再開します。

再開可能な条件STOP 文で停止した、BREAK(CTR+C)で中断した、エラー停止後にプログラムを変更していない場合。

再開不可プログラムを1行でも変更すると CONT は使えません?CC エラー)。END で終了した場合や、エラー後にプログラムを直接編集した場合も再開できません。

LOAD|テープから読み込む

📖 規格 ・ 構文 LOAD ["ファイル名"]略号 LO.タグ システム / IO / テープ

機能:カセットテープからプログラムを読み込みます(SAVE の逆)。ファイル名(16文字以内)を指定すると、テープを最初から走査して名前一致するプログラムを LOAD します。省略時は、テープの最初に見つかった BASIC プログラムを読み込みます。

注意:読み込み開始時に LOADING ファイル名 が表示され、走査中にスキップしたファイルは SKIP ファイル名 が表示されます。読込結果は OK で終了、失敗時は ?TP ERROR。テープ I/O は本検証では未観察のため規格ベースです。

SAVE|テープへ記録する

📖 規格 ・ 構文 SAVE ["ファイル名"]略号 SA.タグ システム / IO / テープ

機能:プログラムをカセットテープに記録します(LOAD の逆)。ファイル名(16文字以内)を指定すると、その名前でプログラムを記録します。

注意:1本のテープに複数プログラムを記録できます(整理時はファイル名を1つずつ別にする)。記録中に WRITING、終了時に OK が出ます。テープ I/O は本検証では未観察のため規格ベースです。

LOAD?|記録の検証(VERIFY)

📖 規格 ・ 構文 LOAD? ["ファイル名"]略号 LO.?(TOC 表記では LO.P.) ・ タグ システム / IO / テープ / 検証

機能SAVE したプログラムが正しく記録されたかを検証します。SAVE した直後にこれを実行することで、書き込みの正常性を確認できます。テープに記録されたプログラムとメモリ内のプログラムが一致するか比較し、一致すれば LOADING ファイル名 の後 OK、不一致なら ?TP ERROR(Tape read ERROR、LOAD 参照)。検証用なので、メモリ内のプログラムを上書きしません。

注意SAVE 直後の確認に使います(テープ媒体の信頼性が低い時代の名残)。SAVE "X" : LOAD? "X" のセットで使うのが定番です。テープ I/O は本検証では未観察のため規格ベースです。

メモリ

メモリマップ|物理メモリの全体像

📖 規格 ・ タグ メモリ / アドレス / 制約

PEEK / POKE / CALL で扱うアドレスの全体像です。

アドレス範囲 領域 用途
&H0000&H07FF ワーク RAM(本体内蔵) システム作業領域(2KB)
&H0800&H1FFF 未使用 アクセス不可
&H2000&H5FFF システム使用 画面表示・入出力用(PPU=画面表示チップ)
&H6000&H6FFF 未使用 アクセス不可
&H7000&H77FF ワーク RAM(BASIC カセット用) 各種ボードデータまたは BASIC フリーエリア
&H7800&H7FFF 未使用 アクセス不可
&H8000&HFFFF プログラム ROM ファミベ BASIC ROM 本体

重要な制約&H7000&H703F のエリアは POKE 等で個別に使用できません(システム予約)。ユーザが自由に使えるのは事実上 &H7040&H77FF の範囲です。本体 RAM &H0000&H07FF(2KB)は内部利用が中心です。

「2KB 制約」の正体:「メモリ 2KB」と言うときの 2KB は本体内蔵 RAM(&H0000&H07FF)を指します。一方、BASIC プログラム本体は &H7040&H77FF(約 1.95KB)に格納されます。これがファミベの「2KB 制約」の正体です。

ユーザ空き領域|自由に使える RAM

📖 規格 ・ アドレス &H7040&H77FFサイズ 1984 バイト ・ アクセス RW ・ タグ メモリ / ユーザ領域

用途:BASIC プログラム本体 + 各種ボード(BG GRAPHIC / MUSIC / MESSAGE)のデータ。

注意:サイズは約 2KB ですが、選択しているボードによって用途が変わります。GAME BASIC プログラムを書く場合は実質ここがプログラム上限で、LIST 出力時の長さ感もこの領域に依存します。

PRG-ROM|BASIC インタプリタ本体

📖 規格 ・ アドレス &H8000&HFFFFサイズ 32768 バイト ・ アクセス R ・ タグ メモリ / ROM

用途:ファミリーベーシック BASIC インタプリタの ROM 本体(32KB)。

注意PEEK で読むとインタプリタコードが取れます。CALL でこの領域内のサブルーチンを呼べます(アドレスは逆アセンブラ等で確認)。


どうやって確かめたか

各コマンドは、Family BASIC のエミュレータに上記のコードを流し込み、実行後の画面表示をそのまま記録しています。LIST のように RUN 前の表示まで観察できたものは ✅、テープ I/O(LOAD / SAVE / LOAD?)のように本検証で実機発火させていないものは 📖 として規格ベースで記載しました。検証の詳細は連載で扱っています。

関連