ファミリーベーシック V2.1A


小容量のメモリ構成ながら意外としっかりした作りになっている。 いろいろ不満はあるものの低価格BASICとしては結構な出来と思われる  
NMI割り込み(V−Sync)  PPUからの割り込み  エントリアドレスは$00ED    ゼロページ内にジャンプするのでBASICで任意に変える事が出来ます   セレクト  $CDA7   BASIC $880F   リセット割り込み  電源を入れたり、リセットボタンが押されるとココに飛びます  エントリアドレスは$C400     IRQ割り込み  エントリアドレスは$FFF0  謎の部分があります。  割り込みベクタをみると$FFFEが$FFF0となっています   AFFF0:CLI         DB  $5C         RTS    この$5Cが謎で動作不明です  もし、このIRQが使えるとして、OPコード$5Cは1バイト命令と思われます  その下のRTSで帰るという事はスタック関係と思われます  BRKが掛かったときにPSR、PCの順にスタックに退避するので  $5Cの後RTSで帰ったとすると、PSRの1バイトをスタックから取り出す事になります  この取り出したPSRをどうするのか確かめていませんし  全く関係なく残ったデータなのかもしれません  ただプログラムの流れでは何かにPSRを保存してデバッキングする為のようにみえます  
ROMの回路図    PRG ROMにはHVC−FB1−2 A、HVC−FB1−2 Bと印字(バージョンで変わります)  CHR ROMにはHVC−FB1−0と印字されています。(CHR ROMはV1.0と同じ)  単3電池を2本使い、RAMの内容をバックアップしています。  ワーキングRAMはS−RAMでスイッチの切り換えでバックアップスイッチ ONでスタンバイモードにします。  スタンバイモードではデータを書き込む事が出来ないのを利用してBASICではRAM領域にデータの書き込みチェック   データの書き込みが出来れば  スイッチ OFF、   データの書き込みが出来なければスイッチ ON  バックアップスイッチの判断をしています。  またS−RAMのアドレスは$6000から配置されていますが、ミラーを利用して  $7000−$77FFとして使用しています。  
ファミリーBASICキーボードの回路図       本体前面にある15ピンからキーボードを接続するためどうしても複雑になります IC4017の RSTはOUT0で、1にすることでIC4017のカウンタをリセット IC4017の/CKEはOUT1で、1から0にすれば IC4017のQ0−9が順番にカウント(選択)されます IC4019に繋がっているキーデータP3 1 〜 P3 8をポート$4017 D4−1で読みます 1度に読み込むデータは4Bitなので2回読むことになります 下位、上位データを読み込む事でIC4017の/CKEが0から1になり 次のキーラインを読む為下位データを選択した時点で/CKEは1から0になり キーラインが新しくカウント(指定)されます   キーボード 出力ポート  4016 D2:OUT2 デバイスの選択          1=キーボード、0=CMT READ  4016 D1:OUT1 データ セレクト&ラインカウンタ 1=上位データ、0=下位データ  4016 D0:OUT0 キーライン(P2)のリセット   1=行う   、0=行わない   入力ポート  4017 D4:キーデータD7(上位の場合)/キーデータD3(下位の場合)  4017 D3:キーデータD6(上位の場合)/キーデータD2(下位の場合)  4017 D2:キーデータD5(上位の場合)/キーデータD1(下位の場合)  4017 D1:キーデータD4(上位の場合)/キーデータD0(下位の場合)    キーボードはロッジクで組まれ、タイミングをソフトで行う必要があります。    1.キーラインのリセット      $4016:$05(OUT2=1、OUT1=0、OUT0=1)、NOP*6     *2.下位データ セレクトのセット      $4016:$04(OUT2=1、OUT1=0、OUT0=0)、ウエイト      3.下位データの読み込み      $4017にあるキーデータ(下位)を読み、ワークにセット(右シフト1回してAND #$0Fにしてセット)      4.上位データ セレクトのセット      $4016:$06(OUT2=1、OUT1=1、OUT0=0)、ウエイト      5.上位データの読み込み      $4017にあるキーデータ(上位)を読み、ワークにセット(左シフト3回してAND #$F0にしてセット)    これを*2の所でループ(計9回繰り返し)して、全てのキースキャンが出来ます。  ROM$AF9B−$AFE3を参照   CMT 出力ポート  4016 D2:OUT2 デバイスの選択          1=キーボード、0=CMT READ  4016 D0:OUT0 CMTライト データ   入力ポート  4016 D1:CMTリード データ    シャープのMZ、X1と同じくPWM方式でソフトでタイミングを行います。  テープフォーマットもかなりMZ、X1に近いです。  BASIC自体はBASICプログラムしかセーブ・ロードしかできません。  バイナリファイルをセーブ・ロードする場合はプログラムを自作する必要があります。     インフォメーションブロック(FCB)     ”0”*20000     テープマーク (”1”*40+”0”*40)     ”1”     インフォーメーション 128バイト     チェックサム 2バイト     ”1”     データブロック     ”0”*20000     テープマーク (”1”*20+”0”*20)     ”1”     データブロック     チェックサム 2バイト     ”1”      1バイトデータの内容       ”1”、D7、D6、D5、D4、D3、D2、D1、D0      インフォメーションブロック       属性        1バイト($02=BASIC、$03=BG−GRAPHIC)       ファイルネーム  16バイト 16文字以内の場合 最後にエンドマーク$00       予備        1バイト $00       長さ        2バイト       ロードアドレス   2バイト       実行アドレス    2バイト       空き      104バイト    (注)チェックサムは単純にデータを足したものではなく、1バイトデータの各Bitの内容の’1’の数になります。     データが$FFなら+8、$C0なら+2、$00なら+0になります       BG−GRAPHICデータは     BG−Bの内容をCPU $0700−$07FFHへ転送したデータを4分割でセーブ     BG−Bへ転送するデータをCPU $0700−$07FFHに4分割でロード、PPUへ転送  
キャラクタ スプライトのキャラクタになります     BGのキャラクタになります これがBASICのアスキーコードの基準となります アスキーコードは$00−$1Fのキャラクタは表示されずコントロールコードとして使用されます ただしPRINT文には反映されません   $00=Null                  $10=^P *SHIFT+F5   $01=^A INSモードのON/OFF      $11=^Q *SHIFT+F6   $02=^B *SHIFT+F1          $12=^R INS   $03=^C BREAK(プログラム停止は出来ない)$13=^S   $04=^D 画面の初期設定            $14=^T   $05=^E カーソル以降1行分の消去       $15=^U   $06=^F *SHIFT+F2          $16=^V カナ モードにする   $07=^G BEEP音を出す           $17=^W 英数字モードにする、*SHIFT+F7   $08=^H DEL                $18=^X *SHIFT+F8   $09=^I                    $19=^Y   $0A=^J ラインフィールド           $1A=^Z カーソル以降画面下の消去   $0B=^K HOME               $1B=ESC   $0C=^L 画面クリア              $1C=カーソル右   $0D=^M RETURN             $1D=カーソル左   $0E=^N *SHIFT+F3          $1E=カーソル上   $0F=^O *SHIFT+F4          $1F=カーソル下      *SHIFT+Fnは英数モードキー入力で使用     BG GRAPHIC SELECT  キャラクタを書きます     カーソルキー       カーソルの移動   [RETURN]      配色番号の変更   [INS]         マーカー左移動   [DEL]         マーカー右移動   [HOME]        グループ +1   [SHIFT]+[HOME] グループ −1   [D]           キャラクタの消去   [ESC]         ファンクションメニュー    グループ表      COPY  キャラクタのコピーを行います     カーソルキー       カーソルの移動   [INS]         キャラクタの取得   [DEL]         キャラクタの複製   [ESC]         ファンクションメニュー   MOVE  キャラクタの移動を行います     カーソルキー       カーソルの移動   [INS]         1回目 キャラクタの取得                2回目 キャラクタの消去   [DEL]         キャラクタの移動   [ESC]         ファンクションメニュー   CLEAR  画面(BG−B)の消去を行います     [SPACE]       画面消去の実行   [ESC]         ファンクションメニュー   FILE  CMTのロード・セーブを行います  画面の指示に従いセーブかロードを決め  ファイルネーム(最大16文字)を入力して[RETURN]   CHAR  文字の入力を行います     [ESC]         ファンクションメニュー   ファンクションメニュー   カーソルキー上 カーソル上の移動   カーソルキー下 カーソル下の移動   [SPACE]  メニュー(MODE)の実行  
ABS(数式)  絶対値を求める   ASC(文字列)  文字列の最初の1文字目をキャラクタコードの数値に変換  ヌルストリングの場合0になる   BEEP  音を鳴らす   CALL アドレス アドレス…&H0000〜&HFFFFまたは−32768〜32767  マシン語のサブルーチンの実行   CGEN n n…0〜3  BG、スプライト面にキャラクタの割り当てを行う  ポート$2000 Bit4−3の設定になります    +−−−−−−−−−−−−+  |n|BG面|スプライト面|  |−+−−−+−−−−−−|  |0| A | A    | A=マリオ等のスプライトキャラクタ  |1| A | B    | B=英数字等のBG   キャラクタ  |2| B | A    |  |3| B | B    | デフォルト、^DはCGEN2の設定  +−−−−−−−−−−−−+   CGSET m,n m…0〜1 BG面 n…0〜2 スプライト面    BG、スプライト面のパレットグループの指定  *BG GRAPHICで描いた背景をそのままの色にしておく場合は   CGSET1,1にする   CHR$(数式)  数値0〜255または&H0〜&HFFをキャラクタコードして変換する   CLEAR  変数、配列のクリアを実行   CLEAR アドレス  BASICで使用するメモリ上限アドレスの指定   CLS  テキスト画面をクリア   COLOR x,y,n x…カラム 0〜27 y…行   0〜23 n…配色番号 0〜3    テキスト画面のカラー指定   CONT  プログラムの再開   CSRLIN  カーソルY座標の取得   CUT n0[,n1,n2,n3,n4,n5,n6,n7]  n0〜n7…DEF MOVEで定義した番号 0〜7    MOVEで動いたスプライトを停止   DATA 定数[,定数,定数,……]  定数…数値または文字列    READ文で使用するデータの定義   DEF MOVE(n)=SPRITE(a,b,c,d,e,f)  n…キャラクタの動作番号 0〜7  a…キャラクタの種類   0〜15  b…方向  c…速さ   0=256フレーム毎、1(最高速)〜255(最低速)  d…移動量  0=表示しない、   1〜255(移動量)  e…優先順位 0=BGより前、   1=BGより後  f…配色番号 0〜3(CGSETで指定した番号)     スプライトの動作の定義を行う     キャラクタの動作番号    0…マリオ       6…車      12…レーザー    1…レディ       7…スピナー   13…シェルクーパー    2…ファイターフライ  8…スターキラー 14…サイドステッパー    3…アキレス      9…スターシップ 15…ニットピッカー    4…ペンペン     10…爆発    5…ファイアーボール 11…ニタニタ     方向    812    7■3  ■=スプライト    654  0=停止状態     速さ    c=フレーム毎1/30秒 × 2ドット(斜め移動ではx、yとも2ドット)     移動量    d×2ドットの移動量   DEF SPRITE n,(a,b,c,d,e)=f  n…定義するスプライト番号 0〜7  a…配色番号 0〜3(CGSETで指定した番号)  b…合成型  0=8×8キャラクタ、1=16×16キャラクタ  c…優先順位 0=BGより前   、1=BGより後  d…X軸反転 0=反転しない   、1=反転する  e…Y軸反転 0=反転しない   、1=反転する  f…b=0 8×8キャラクタの場合    文字列 ”i”    文字式 CHR$(i)    文字変数 1キャラクタ分のデータ      b=1 16×16キャラクタの場合    文字列 ”ijkl”    文字式 CHR$(i)+CHR$(j)+CHR$(k)+CHR$(l)    文字変数 4キャラクタ分のデータ      b=1 16×16キャラクタのfのデータ     +−−−+     |i|j|     |−+−|     |k|l|     +−−−+    スプライトの定義を行います  定義可能のスプライト番号は0〜7の8個   DIM 配列名(m1[,m2])[,配列名(n1[,n2])]  配列宣言を行います  配列名は数値変数、文字列変数の両方可   END  プログラムを終了、BASICコマンド待ちへ行きます   ERA n0[,n1,n2,n3,n4,n5,n6,n7]  n0〜n7…DEF MOVEで定義した番号 0〜7    MOVEで動いたスプライトを停止、消去を実行   FOR i=l TO m [STEP s] NEXT  i…ループ変数  l…初期値  m…終了値  s…増分値(負でも可)    FOR〜NEXT間の処理を繰り返します  NEXTの後にループ変数名をつけるとエラーになります   FRE  ユーザメモリの未使用サイズの取得   GOTO 行番号  指定した行番号へジャンプ   GOSUB 行番号  指定して行番号をサブルーチンとして呼び出す   HEX$(n)  n…数式 −32768〜+32767    数式を16進数文字列に変換   IF 式 THEN 行番号または文  倫理式による分岐の実行  条件が成立すれば THEN以降の行番号へジャンプ、または文を実行     成立しなければ次の行番号へ    真=0、偽=0以外   INKEY$  キーボードから一文字入力の実行  実行時キーが押されていれば押されたキーのキャラクタコードが入る        押されていなければヌルストリング0が入る    キャラクタコードは$00−$1Fを除く   INKEY$(0)  キーボードから一文字入力の実行  カーソルブリンクになり、キーが押されるまで待ちます  押されたキーのキャラクタコードが入る    キャラクタコードは$00−$1Fを除く   INPUT 変数[,変数…] INPUT 文字列,変数[,変数…] INPUT 文字列;変数[,変数…]  文字列…メッセージ  変数……キーボードから入力した数値または文字を入れる変数    キーボードから文字入力を行い、数値または文字を変数に代入  INPUT文の文字列の後の;は文字列の後に?が表示されます               ,は文字列の後に何も表示されません  INPUTで指定した変数の数と入力したデータの個数は同じでないといけません  区切りは,になる為文字列で,を入れたい場合”,”とダブルクォーテションを付ける  数値入力で文字を入力した場合、その文字が変数扱いになります(ただし値は0)   KEY n,文字列  n………ファンクションキー番号 1〜8  文字列…定義する文字列15文字以内    ファンクションキーの内容を定義します  コントロールコードやキーボードで入力出来ないキャラクタを定義する場合  はCHR$(n)を使用します   KEYLIST    定義されているファンクショキーの内容を表示します  コントロールコードは()内に表示されます($00−$1Fでは+$40で表示)  リターン(コントロールコード$0D ^M)の場合(M)と表示   LEFT$(文字列,n)  文字列…31文字まで  n………文字列から取り出す長さ    文字列の左端からn文字まで取得  nが文字列より大きい場合は文字列全て  nが0      の場合はヌルストリング   LEN(文字列)    文字列の長さを取得 0〜31  文字列が0の場合はヌルストリング  コントロールコード、スペースも文字列の長さに加わる   LINPUT 文字変数 LINPUT 文字列,文字変数 LINPUT 文字列;文字変数  文字列……メッセージ  文字変数…キーボードから入力した文字を入れる文字変数    キーボードから文字入力を行い、文字を文字変数に代入  LINPUT文の文字列の後の;と,は同じ動作をします  INPUT文と違い”,”とダブルクォーテションを入れる必要はなし  文字列も文字変数の最初に入る為  入力可能な文字は文字列と文字変数を含めて31文字まで   LIST[m][−n] LIST[m][,n]  m…表示する初めの行  n…表示する終りの行    メモリにあるBASICプロラムの表示   LOAD[”ファイル名”]    カセットにあるBASICプロラムのロード  ファイル名は16文字まで  BG画面のロードはBG GRAPHICで行う   LOAD?[”ファイル名”] LOADPRINT[”ファイル名”]    カセットでセーブしたBASICプロラムのベリファイ  ファイル名は16文字まで   LOCATEx,y  x…水平方向 カラム 0〜27  y…垂直方向 行   0〜23    カーソルを指定の位置へ移動  BASICのシステム上、画面全体の移動不可   MID$(文字列,m,n)  文字列…文字列 最大31文字  m………文字列の最初を1として取得開始の文字位置  n………取得する文字の長さ    指定した文字列のmからm+nの文字を取得   MOVEn0[,n1,n2,n3,n4,n5,n6,n7]  n0〜n7…DEF MOVEで定義した番号 0〜7    DEF MOVEで定義された動作の開始   MOVE(n)  n…0〜7 DEF MOVEで定義したキャラクタの動作番号    MOVE命令で動いているキャラクタの動作が完了したか調べる    0=動作完了   −1=動作中   NEW  BASICプログラムの消去   ON 式 GOTO 行番号[,行番号,行番号…]  式の値によって指定された行へジャンプ   ON 式 GOSUB 行番号[,行番号,行番号…]  式の値によって指定された行へサブルーチンジャンプ   ON 式 RETURN 行番号[,行番号,行番号…]  式の値によって指定された行へ復帰   ON 式 RESTORE 行番号[,行番号,行番号…]  式の値によってデータを指定   PALETm n,c1,c2,c3,c4  m……B=BGカラーを選択、S=スプライトカラーを選択  n……配色番号 0〜3  c1…バックドロップの色 ただしn(配色番号)=0で有効  c2…パレット+1のカラーコード  c3…パレット+2のカラーコード  c4…パレット+3のカラーコード    配色番号のカラーの設定   PAUSE[n]  n…0〜32767    BASICプログラムの一時休止  nを省略すると何かキーが押されるまで待つ   PEEK(アドレス)    指定したメモリからデータの取得   PLAY 文字列    文字列を演奏プログラムとして実行  ”チャンネルA:チャンネルB:チャンネルC”の形式になり  各チャンネルに下記のコマンドが使用可  ただしチャンネルCではエンベロープは無効(Yn、M1)  T、Y、M、V、Oコマンドは値の維持可     T…テンポ (速い)1〜8(遅い)   Y…デューティ比      0=12.5%、2=50.0%      1=25.0%、3=75.5%   M…エンベロープ 0=オフ、1=オン   V…音量またはエンベロープの長さ      M0の場合 音量少 0〜15 音量大      M1の場合 短い  0〜15 長い   O…オクターブ (低音)0〜5(高音)   R…休符 後ろに長さを指定     C〜B…音階 後ろに長さを指定    C、#C、D、#D、E、F、#F、G、#G、A、#A、B       0〜9…長さ    0…  32分音符  5…   4分音符    1…  16分音符  6…付点 4分音符    2…付点16分音符  7…   2分音符    3…   8分音符  8…付点 2分音符    4…付点 8分音符  9…    全音符     :…重音 次のチャンネルの演奏データ     *デフォルト O3T4M0V15、音の長さ5   POKE アドレス,データ[,データ,データ…]  データ…0〜255 または &H00〜&HFF    指定したメモリのデータを書き込む   POS(0)    画面のカーソル水平位置(X座標)の取得  ()内の値は何でも構わない   POSITION n,x,y  n…DEF MOVEで定義した動作番号 0〜7  x…水平方向 0〜255(有効範囲 0〜244)  y…垂直方向 0〜255(有効範囲 5〜220  デフォルト値 x=120,y=120    MOVE文でスプライトを動かす為の初期位置の設定   PRINT [定数][;[定数]……]       [変数][,[変数]  ]       [式 ][ [式 ]  ]    画面に計算結果等を画面に出力  続けて出力する場合,か;を使用    ,は表示画面行を8文字で分割した区切りの最初に表示する  前のデータが区切りを超えると次のデータは次の区切りになる   |8文字|8文字|8文字|4文字|…1行    ;はつづけて出力  ただし正の数値表示の場合、最初にスペースが入る    最後の;では次のPRINT文の内容を続けて表示可  ただしカーソルを移動する命令が実行されたら無効    PRINTのみだと1行改行   READ 変数[,変数……]    DATA文にあるデータを変数に代入    変数と代入データ型は同じでないとエラー  読み込むデータが少ないとエラー    RESTORE指定がないと  最初のREADは最初のデータを読み  次のREADは続けて次のデータを読む   REM[コメント] ’[コメント]    BASICプログラム内にコメントを書く(行内範囲まで)  REMと’は別扱いになっており  GOSUB命令の後には’のみ使用可   RESTORE[行番号]    次に読むREAD文のDATAの指定  RESTOREのみの場合、1番最初にあるDATA文を指定   RETURN[行番号]  サブルーチンからの復帰  行番号がある場合、その行に復帰  行番号がない場合、GOSUBされた所に復帰   RIGHT$(文字列,n)  文字列…31文字まで  n………文字列から取り出す長さ    文字列の右端からn文字まで取得  nが文字列より大きい場合は文字列全て  nが0      の場合はヌルストリング   RND(n)  n…数式または整数1〜32767    指定した数式または整数の範囲内の乱数の発生   RUN[行番号]    変数を全てクリア、BASICプログラムの実行    行番号ありの場合、その行から実行  行番号なしの場合、最初の行から実行   SAVE[”ファイル名”]    BASICプロラムをカセットにセーブ  ファイル名は16文字まで(省略可)  BG画面のセーブはBG GRAPHICで行う   SCR$(x,y[,c])  x…水平方向 カラム 0〜27  y…垂直方向 行   0〜23  c…配色番号     0=配色番号を取得しない(省略すると0)             1=配色番号を取得する    BG−GRAPHICで描かれた文字または絵の取得   SGN(n)  n…数式または整数ー32768〜32767    数式また整数の値の符号の取得    1=正    0=0   −1=負   SPRITEn[x,y]  n…スプライト番号 0〜7  x…スプライト水平座標 0〜255(有効範囲 0〜240)  y…スプライト垂直座標 0〜255(有効範囲 5〜220)    DEF SPRITEて定義されているスプライトを指定の位置に表示  座標の位置を省略すると消去    同一座標に複数のスプライトを表示した場合  スプライト番号が小さいものが手前に表示される    スプライトは水平に4つ(8文字分)まで表示可  超えると重なる水平部分は表示されない   SPRITE OFF  全スプライトの表示オフ   SPRITE ON  全スプライトの表示オン   STICK(n)  n…0=Iコントローラ    1=IIコントローラ    コントローラ十字ボタンの入力状態の取得     8  2 1   4  0=何も押されていない    同時入力の場合、対応する数字が加わる   STOP    BASICプログラムの中断  変数はクリアされないのでCONTで次の文の再実行可   STRIG(n)  n…0=Iコントローラ    1=IIコントローラ    コントローラSELECT、TART、B、A字ボタンの入力状態の取得     SELECT=2(Iコントローラのみ)   START =1(Iコントローラのみ)   B     =4   A     =8    同時入力の場合、対応する数字が加わる   STR$(x)  x…数式    数式の値を文字列に変換  正の数の場合は先頭にスペースが入る   SWAPn,m  n…変数1  m…変数2    2つの変数の値を交換  ただし交換する変数の型は同一でないといけない   SYSTEM  GAME BASICモードにする  BASICプログラムは保護される   VAL(文字列)  文字列…数字の文字列 −32768〜32767                &H0〜&HFFFF    文字列は数値に変換  ただし文字列の最初の文字が+−&または数字以外なら0となる  文字列の中に16進数の文字以外があれば、それ以降は無視される   VIEW    BG GRAPHIC画面をバックグランド面(テキスト)へコピー  カーソール位置はホームへ戻る    BG GRAPHIC画面の色をそのまま持ってくる場合  CGSET1,1を使用   XPOS(n)  n…DEF MOVEで定義されたスプライト動作番号 0〜7    DEF MOVEで定義された動作番号の水平位置の取得   YPOS(n)  n…DEF MOVEで定義されたスプライト動作番号 0〜7    DEF MOVEで定義された動作番号の垂直位置の取得  
数の表現範囲  10進 −32768 から 32767  16進 &H0000 から &HFFFF   変数  英字で始まる2文字を識別(255文字まで表記可)   行番号の範囲  0 から 65534 最大255桁   配列の大きさ  2次元配列まで(メモリ範囲内で要素制限無し)   GOSUB〜RETURN ネスト  メモリ範囲内で制限なし   FOR〜NEXT     ネスト  メモリ範囲内で制限なし   演算の優先順位   1. ()で囲まれた式   2. 関数   3. * /   4. MOD   5. + −   6. = <> > < >= <=   7. NOT   8. AND   9. OR  10. XOR   エラーメッセージ  NF=NEXT without FOR      :FORが無いがNEXTがある  SN=Syntax error          :文法間違い  RG=RETURN without GOSUB  :GOSUBが無いがRETURNがある  OD=Out of DATA           :DATAが用意されていない  IL=Illegal functioncall  :ステートメント、関数の呼び出し間違い  OV=Overflow              :演算結果が許容範囲オーバー  OM=Out of memory         :メモリ不足になった  UL=Undefined line Number :指定した行番号が無い  SO=Subscript out of range:配列の添字が規定外  DD=Duplicate Definition  :配列の2重定義  DZ=Division by zero      :0の除算を実行  TM=Type mismatch         :変数の型が合わない  ST=String too long       :文字が31文字超えた  FT=Formula Too complex   :式が複雑すぎる  CC=Can’t countinue       :CONTでプログラムの再開出来ない  MO=Missing operand       :最低限必要なパラメータが無い  TP=Tape read ERROR       :CMTから正しくデータが読めない
クィックスタート Tキーを押しながら起動(リセット)、Tキーを離すと直接BASICメニュー画面に飛びます ただしバックアップRAM領域のテストメモリを行うので プログラムメモリの内容は全て$55に書き込まれます プログラムを残しながらクィックスタートを行う場合は BACK UP SWITCHをONにしてメモリを保護してから起動 起動終了後、BACK UP SWITCHをOFFにします  
変数領域 BASICプログラム後に配置され $001D−$001Eの内容から$001F−$0020までが領域となります  実数   $02、変数名2バイト、数値(下位、上位)    文字列   $03、変数名2バイト、長さ(下位、上位)、文字列32バイト(エンドマーク$00含む)    大きさは固定 A$=”0”とA$=”0123”は同じ大きさになります    配列 実数   $82、変数名2バイト、1次(下位、上位)、数値(2バイトごと)...     $82、変数名2バイト、1次(下位、上位)、2次(下位、上位)、数値(2バイトごと)...      1次配列データはa(0)  、a(1)  …の順    2次配列データはa(0,0)、a(1,0)…の順   中間言語  $0B 行番号  次の2バイト(16進数表記      下位、上位の順)  $11 16進数 次の2バイト(&Hまたは&以降の数値 下位、上位の順)  $12 実数   次の2バイト(16進数表記      下位、上位の順)  $22 ”  $2C ,  $2D − (DATA、LIST用)  $27 ’  $28 (  $29 )  $3A :  $3B ;    $80 GOTO    $9146 | $A0 VIEW     $A932  $81 GOSUB   $90C6 | $A1 MOVE     $C0CE  $82 RUN     $857C | $A2 END      $820B  $83 RETURN  $9126 | $A3 PLAY     $9A1D  $84 RESTORE $98E0 | $A4 BEEP     $B30F  $85 THEN    $83A6 | $A5 LOAD     $97FC  $86 LIST    $85AF | $A6 SAVE     $978C  $87 SYSTEM  $80D7 | $A7 POSITION $C0B6  $88 TO      $836D | $A8 KEY      $95AA  $89 STEP    $836D | $A9 COLOR    $BA4E  $8A SPRITE  $A7F3 | $AA DEF      $A887  $8B PRINT   $8740 | $AB CGEN     $A6CA  $8C FOR     $927E | $AC SWAP     $9496  $8D NEXT    $930D | $AD CALL     $918C  $8E PAUSE   $9198 | $AE LOCATE   $91CA  $8F INPUT   $93C2 | $AF PALET    $A6EA  $90 LINPUT  $94F6 | $B0 ERA      $C0ED  $91 DATA    $8343 |   $92 IF      $9204 |   $93 READ    $994D |   $94 DIM     $964E |   $95 REM     $8343 |   $96 STOP    $86DA |   $97 CONT    $8717 |   $98 CLS     $AB75 |   $99 CLEAR   $9226 |   $9A ON      $954D |   $9B OFF     $836D |   $9C CUT     $C0F0 |   $9D NEW     $8382 |   $9E POKE    $91DF |   $9F CGSET   $A746 |     $CA ABS     $A369  $CB ASC     $A40A  $CC STR$    $A485  $CD FRE     $A31A  $CE LEN     $A3FF  $CF PEEK    $A358  $D0 RND     $A39F  $D1 SGN     $A379  $D2 SPC     $836D  $D3 TAB     $836D  $D4 MID$    $A5FB  $D5 STICK   $A6AA  $D6 STRIG   $A6B9  $D7 XPOS    $A346  $D8 YPOS    $A34F  $D9 VAL     $A4BE  $DA POS     $A32E  $DB CSRLIN  $A2F3  $DC CHR$    $A461  $DD HEX$    $A4B5  $DE INKEY$  $A520  $DF RIGHT$  $A5BD  $E0 LEFT$   $A574  $E1 SCR$    $A41D    $EF XOR  $F0 OR  $F1 AND  $F2 NOT  $F3 <>  $F4 >=  $F5 <=  $F6 =  $F7 >  $F8 <  $F9 +  $FA −  $FB MOD  $FC /  $FD *     プログラムの格納 <例>  10 FOR I=0 TO 10  20 PRINT ”TEST ”;   30 NEXT   上記のプログラムだと下記の様に格納されます    703E:11                     ;1行の長さ……イ  703F:0A 00                  ;行番号 10…ロ  7041:8C 20 49 F6 12 00 00 20;プログラム……ハ       88 20 12 0A 00  704E:00                     ;エンドマーク    704F:0E                     ;1行の長さ  7050:14 00                  ;行番号 20  7052:8B 20 22 54 45 53 54 20;プログラム       22 3B  705C:00                     ;エンドマーク    705D:07                     ;1行の長さ  705E:1E 00                  ;行番号 30  7060:8D                     ;プログラム  7061:00                     ;エンドマーク    7062:00 00                  ;最終マーク   イ…このアドレス+1行の長さで次の行番号のアドレスになります   このとき次の行番号のアドレスの内容が$00だとプログラムの格納は終了となります ロ…行番号 16進数で下位、上位の順 10行なので$000Aを$0A、$00とする ハ…プログラム本体中間言語で格納   $8C       :FOR   $20       :’ ’   $49       :I   $F6       :=   $12 00 00 :0 (実数)   $20       :’ ’   $88       :TO   $20       :’ ’   $12 0A 00 :10(実数)10なので16進数で$000A   $00       :エンドマーク 行の終わり     変数の配置 RUNすると変数Iが使用されるのでBASICプログラムの後ろに変数エリアが配置されます   7064:02 49 00 ;変数の型$02、変数名I(アスキーコード)      mm nn    ;変数の数値      
セレクト ワーク $0000:      VSYNC用 文字列ポインタ下位             VSYNCタスク$06用 メッセージ データ             VSYNCタスク用 コマンド比較 アドレス $0001:      VSYNC用 文字列ポインタ上位   $0002:      VSYNC タスク アドレス下位             データ アドレス下位 $0003:      VSYNC タスク アドレス上位             データ アドレス上位             仮想OBJポインタ下位 $0004:      データ レングス0(文字列データの長さ)             仮想OBJポインタ上位   $0005      :データ レングス1(文字列データブロック分) $0006−$0007:VSYNCタスク コマンド ポインタ(下位、上位) $0010      :ポート$2001の内容0 $10 $0011      :ポート$2001の内容 $0012      :ポート$2005の内容(水平) $0013      :ポート$2005の内容(垂直) $0018      :スペシャルキー フラグ $FF=オン、$00=オフ $0020      :ロジックカウンタ $00 (メイン) $0021      :ロジックカウンタ $01 (キーリピート) $0022      :ロジックカウンタ $02 (両端の長方形の色を暗くする) $0023      :ロジックカウンタ $03 $0024      :ロジックカウンタ $04 $0025      :ロジックカウンタ $05 $0026      :ロジックカウンタ $06 $0027      :ロジックカウンタ $07 $0028      :ロジックカウンタ $08 $0029      :ロジックカウンタ $09 (次の1文字を書き始める) $002A      :ロジックカウンタ $0A ($00で次の行のメッセージを書く) $002B      :ロジックカウンタ $0B $002C      :ロジックカウンタ $0C (カラーパネル) $002D      :ロジックカウンタ $0D (アイドリング $00で時間切れ、ウェイトに使用) $002E−$002F:各種ボードのカーソル位置(上位、下位) $0030      :カーソルOBJのX座標 $0031      :カーソルOBJのY座標 $0032      :    カーソル位置のBG PPUアドレス上位 $0033      :DEL カーソル位置のBG PPUアドレス上位 $0034      :    カーソル位置のBG PPUアドレス下位 $0035      :DEL カーソル位置のBG PPUアドレス下位 $0036      :ボード $00=カリキュレータ、$01=メッセージ、$03=セレクト、$04=ミュージック $0037      :キーデータ(ASCIIコード) $0038      :キーデータ(ASCIIコード) $0039      :キーデータ(ASCIIコード) $003B      :VSYNCカウンタ (NMIが掛かる事に+1) $0040      :押されたキー $0042      :メッセージボード 指定している行 $0043      :ボード ネーム インデックス $00=BASIC、$01=カリキュレータ、$02=ミュージック、$03=メッセージ $0046      :BACK UP SWITCHチェック フラグ $00=チェックしない、$AA=チェックする $004C      :INSモードスイッチ $FF=オン、$00=オフ $004F      :BG−AまたはBG−Bの上位アドレスの指定 $20=BG−A、$24=BG−B $0050      :カナキースイッチ $FF=オン、$00=オフ $0051−$0058:乱数ジェネレート レジスタ $0060      :VSYNCコマンド(第1データ VSYNCタスクnn)              $00     =新しいVSYNCコマンドを実行              $01から$FF=VSYNCタスクのパラメータを読む $0062      :VSYNCコマンド nn $0064      :VSYNCコマンド アドレス $0065:文字列インデックスカラー        $00=BG  カラー        $01=OBJ カラー $0066:ファンクションキーフラグ        $FF=オン        $00=オフ $0067:ファンクションキーデータ        Bit7−4:押されたFnのn−1の値        Bit3−0:押されたFnの文字数 $0068:ファンクションキースイッチ        $FF=オン        $00=オフ $006B:セレクト  VSYNCコマンド(第2データ) $006D:キーマトリックス ビットデータ(押されたビット)       ファンクションキー        $F0=F1キー        $F1=F2キー        $F2=F3キー        $F3=F4キー        $F4=F5キー        $F5=F6キー        $F6=F7キー        $F7=F8キー         キーマトリック        $07=Bit7が1        $06=Bit6が1        $05=Bit5が1        $04=Bit4が1        $03=Bit3が1        $02=Bit2が1        $01=Bit1が1        $00=Bit0が1   $006E:キーマトリクス ラインナンバ 0から8 $006F:CTRL フラグ $FF=オン、$00=オフ $0070:SHIFTフラグ $FF=オン、$00=オフ $0071:GRPH フラグ $FF=オン、$00=オフ $0072:カナ   フラグ $FF=オン、$00=オフ   $0073      :VSYNCタスク内初期化フラグ $00=初期化しない、$01=初期化する $0077      :入力フラグ           $02=コマンド入力、$FF=名前入力 $0078      :画面のコントロール              NMIで参照され画面のオン・オフの実行               $00    =BG+OBJオン               $01−$FF=BG+OBJオフ $007A      :RAMテストNMIフラグ    $FF=初回NMI、$00=2回目以降のNMI $007B      :RAMテストデータ              $00=RAMテストを実行していない              $03=RAMテスト Ok              $55=テストしたデータ              $AA=テストしたデータ   $0088      :どのボードか訊ねる(VSYNCタスク$06用 [C0]メッセージ )              $0E=カクシュ ボード              $0F=GAME BASIC              $10=カリキュレータ ボード              $11=ミュージック ボード              $12=メッセージ ボード $008A      :メッセージナンバ              VSYNCタスク$08、$0Eでセットされ              NMI割り込みが掛かるとVRAMにデータが書き込まれる               $00=$0301からの文字列               $01=セレクト 画面               $02=カリキュレータ ボード画面               $03=’RAM OK’を表示               $04=メッセージ ボード画面               $05=ボード ライン0、ライン1、カラー               $06=ボード     、ライン1、カラー               $07=ボード     、    、カラー               $08=ボードの外枠               $09=ミュージック ボード画面   $00B4      :コマンド入力用 コマンドと比較して合っている数 $00B5      :コマンド入力用 コマンドと比較して合っている数   $00B7      :メッセージ用 表示する位置インデックス($00B9から$00BAにセット)              $00=$20C6              $01=$20E6              $02=$2106              $03=$2126              $04=$2146              $05=$2166              $06=$2186              $07=$21A6              $08=$2246              $09=$2266              $0A=$2286 $00B9−$00BA:メッセージ用 PPUアドレス上位、下位 $00BB      :コンピュータ パネル用 PPUアドレス 下位             カーソル右端 フラグ $00=右端を超えていない、$01=右端を超えた $00BC      :コンピュータ パネル用 PPUアドレス 上位   $00C3      :VSYNCコマンド(第3データ VSYNCタスク$06用メッセージナンバ) $00C5      :メッセージ データ インデックス $00C6      :メッセージ フラグ $00=表示終了、$01=表示、$FF=表示初期化 $00C8      :入力コマンド ファンクションキー データ インデックス   $00D0      :ウラナイの西暦 千の桁 $00D1      :ウラナイの西暦 百の桁 $00D2      :ウラナイの西暦 十の桁 $00D3      :ウラナイの西暦 一の桁 $00D4      :ウラナイの月  十の桁 $00D6      :ウラナイ    $0D $00D7      :ウラナイの日  十の桁 $00D8      :ウラナイの日  一の桁 $00D8      :ウラナイ    $0D   $00E0:キー入力モード $FD=BG GRAPHIC CHAR または BASIC               $5E=BG GRAPHIC SELECT               $3E=BG GRAPHIC ファンクション メニュー               $20=BG GRAPHIC COPY、MOVE               $1F=               $1E=               $03=   $00ED      :NMI(VSYNC)フック $CD7A   $00FC      :セレクト  BGM $00FE      :セレクト  S.E.−A              $01=各種ボード、セレクト に切り替わる音              $02=文字列表示が終了した音              $03=文字列表示が終了した音              $04=カラーパネルからセレクト に切り替わる                  時間切れの音                  各種ボードの改行              $10=セレクト 内でRETURN $00FF:セレクト  S.E.−B   $0100−$01FF:スタック エリア $0200−$02FF:スプライトDMAエリア   $0300−$03FF:VSYNC用文字列バッファ $0300:      VSYNC用文字列インデックス(最終データの位置) $0301:      VSYNC用文字列             PPUアドレス上位または$00=エンドマーク             PPUアドレス下位             コード Bit7:INCモード  1=Y方向、0=X方向                 Bit6:書き込みモード 1=埋める、0=文字列                 Bit5:長さ D5                 Bit4:長さ D4                 Bit3:長さ D3                 Bit2:長さ D2                 Bit1:長さ D1                 Bit0:長さ D0             データ (埋める場合1バイト、文字列の場合長さの分)                   |             以降エンドマークがでるまで繰り返し   $0480−$040F:F1キーの内容 $0490−$049F:F2キーの内容 $04A0−$04AF:F3キーの内容 $04B0−$04BF:F4キーの内容 $04C0−$04CF:F5キーの内容 $04D0−$04DF:F6キーの内容 $04E0−$04EF:F7キーの内容 $04F0−$04FF:F8キーの内容   $0500−$0512:入力した名前 $0550:コマンドデータ(比較して合っている所まで$0D含む)   $0634:キーマトリクス P2 1        Bit7:F8キー   1=押されている、0=押されていない        Bit6:RETURN 1=押されている、0=押されていない        Bit5:[キー    1=押されている、0=押されていない        Bit4:]キー    1=押されている、0=押されていない        Bit3:カナキー   1=押されている、0=押されていない        Bit2:右SHIFT 1=押されている、0=押されていない        Bit1:¥キー    1=押されている、0=押されていない        Bit0:STOPキー 1=押されている、0=押されていない $0635:キーマトリクス P2 2        Bit7:F7キー   1=押されている、0=押されていない        Bit6:@キー    1=押されている、0=押されていない        Bit5:;キー    1=押されている、0=押されていない        Bit4::キー    1=押されている、0=押されていない        Bit3:ンキー    1=押されている、0=押されていない        Bit2:/キー    1=押されている、0=押されていない        Bit1:=キー    1=押されている、0=押されていない        Bit0:^キー    1=押されている、0=押されていない $0636:キーマトリクス P2 3        Bit7:F6キー   1=押されている、0=押されていない        Bit6:Oキー    1=押されている、0=押されていない        Bit5:Lキー    1=押されている、0=押されていない        Bit4:Kキー    1=押されている、0=押されていない        Bit3:<キー    1=押されている、0=押されていない        Bit2:>キー    1=押されている、0=押されていない        Bit1:Pキー    1=押されている、0=押されていない        Bit0:0キー    1=押されている、0=押されていない $0637:キーマトリクス 2 4        Bit7:F5キー   1=押されている、0=押されていない        Bit6:Iキー    1=押されている、0=押されていない        Bit5:Uキー    1=押されている、0=押されていない        Bit4:Jキー    1=押されている、0=押されていない        Bit3:Mキー    1=押されている、0=押されていない        Bit2:Nキー    1=押されている、0=押されていない        Bit1:9キー    1=押されている、0=押されていない        Bit0:8キー    1=押されている、0=押されていない $0638:キーマトリクス P2 5        Bit7:F4キー   1=押されている、0=押されていない        Bit6:Yキー    1=押されている、0=押されていない        Bit5:Gキー    1=押されている、0=押されていない        Bit4:Hキー    1=押されている、0=押されていない        Bit3:Bキー    1=押されている、0=押されていない        Bit2:Vキー    1=押されている、0=押されていない        Bit1:7キー    1=押されている、0=押されていない        Bit0:6キー    1=押されている、0=押されていない $0639:キーマトリクス P2 6        Bit7:F3キー   1=押されている、0=押されていない        Bit6:Tキー    1=押されている、0=押されていない        Bit5:Rキー    1=押されている、0=押されていない        Bit4:Dキー    1=押されている、0=押されていない        Bit3:Fキー    1=押されている、0=押されていない        Bit2:Cキー    1=押されている、0=押されていない        Bit1:5キー    1=押されている、0=押されていない        Bit0:4キー    1=押されている、0=押されていない $063A:キーマトリクス P2 7        Bit7:F2キー   1=押されている、0=押されていない        Bit6:Wキー    1=押されている、0=押されていない        Bit5:Sキー    1=押されている、0=押されていない        Bit4:Aキー    1=押されている、0=押されていない        Bit3:Xキー    1=押されている、0=押されていない        Bit2:Zキー    1=押されている、0=押されていない        Bit1:Eキー    1=押されている、0=押されていない        Bit0:3キー    1=押されている、0=押されていない $063B:キーマトリクス P2 8        Bit7:F1キー   1=押されている、0=押されていない        Bit6:ESC    1=押されている、0=押されていない        Bit5:Qキー    1=押されている、0=押されていない        Bit4:CTR    1=押されている、0=押されていない        Bit3:左SHIFT 1=押されている、0=押されていない        Bit2:GRPH   1=押されている、0=押されていない        Bit1:1キー    1=押されている、0=押されていない        Bit0:2キー    1=押されている、0=押されていない $063C:キーマトリクス P2 9        Bit7:HOME   1=押されている、0=押されていない        Bit6:カーソル 上 1=押されている、0=押されていない        Bit5:カーソル 右 1=押されている、0=押されていない        Bit4:カーソル 左 1=押されている、0=押されていない        Bit3:カーソル 下 1=押されている、0=押されていない        Bit2:スペース   1=押されている、0=押されていない        Bit1:DEL    1=押されている、0=押されていない        Bit0:INS    1=押されている、0=押されていない   $063D−$064E:キー入力用バッファ     BASIC ワーク   $0000      :$59=コールドスタートを実行した、$59以外=電源スタート $0003−$0004:フリーエリア最終領域        下位、上位(初期値$77FF) $0005−$0006:BASICプログラムの先頭アドレス 下位、上位(初期値$703E) $0007−$0008:BASICプログラムの最終アドレス 上位、下位(バックアップ場所 $703C−$703D) $0009−$000A:汎用バッファ ポインタ下位、上位             実行中プログラム行 アドレス下位、上位 $000B−$000C:入力したプログラム行アドレス下位、上位             実行中プログラム行     下位、上位 $000D−$000E:実行中プログラム行の先頭アドレス下位、上位 $000F−$0010:入力したプログラム行 下位、上位   $0011−$0012:実行中プログラム行 ($000B−$000C)退避用 $0013−$0014:実行中プログラム行の先頭アドレス($000D−$000E)退避用   $0015−$0016:汎用バッファ ポインタ退避用($0009−$000A、$0058−$0059)   $0017      :スタック退避用 $0018      :スペシャルキー フラグ $FF=オン、$00=オフ   $0019      :PPUアドレス 上位             コマンドリスト 上位             BEEP、キーリピート用 カウンタ             BG−GRAPHIC ジャンプテーブル下位             CMTデータ ワーク0   $001A      :PPUアドレス 下位             コマンドリスト 下位             BG−GRAPHIC ジャンプテーブル上位             CMTデータ ワーク1   $001B      :VSYNCタスク アドレス下位             CMTライト ビット ディレイ0               ”1”=$6A              ”0”=$34 $001C      :VSYNCタスク アドレス上位             CMTライト ビット ディレイ1              ”1”=$6A              ”0”=$34   $001D−$001E:変数領域 先頭アドレス下位、上位 $001F−$0020:変数領域 最終アドレス下位、上位 $0021      :$80+文字列の長さ             マシン語領域先頭アドレス下位?(未使用) $0022      :マシン語領域先頭アドレス上位?(未使用)   $0024      :ブレークフラグ $FF=オン、$00=オフ $0027      :変数、実数の型 $02=数値変数、$03=文字変数   $0028      :1文字表示ルーチン ジャンプテーブル下位             符号付き被乗数・被除算の下位             演算結果下位 $0029      :1文字表示ルーチン ジャンプテーブル下位             符号付き被乗数・被除算の上位             演算結果上位   $002A      :符号付き 除算ワーク0 $002B      :符号付き 除算ワーク1   $002C      :ASCIIコードから変換した数値下位 0から9             符号付き 乗数・除算の下位             符号付き 除算ワーク2             CMT チェックサム比較用下位             VSYNCタスク PPUアドレス計算 Y $002D      :ASCIIコードから変換した数値上位 0から9             符号付き 乗数・除算の上位             CMT チェックサム比較用上位   $0030      :BASICプログラム解析ワークインデックス   $0032      :ポート$2000の内容 $0033      :ポート$2001の内容1 $0E $0034      :演算用ワーク0 $0035      :演算用ワーク1 $0036      :演算用ワーク2 $0037      :演算用ワーク3 $0038      :$00 $0039      :$00 $003A      :$00 $003B      :$00 $003D−$0042:BASIC 16進数表示バッファ(ASCIIデータ)   $0044−$0045:入力した行番号 下位、上位 $0046      :16進数表示バッファ($003D−$0042)インデックス $0046      :16進数から10進数変換用ワーク インデックス $0047      :16進数から10進数変換用アスキーコード $30−$39   $0048      :カーソル X座標 $0049      :カーソル Y座標             BG−GRAPHIC メニューカーソル $00−$05(メニューの種類)   $004A−$004B:PPUアドレス 下位、上位 $004C      :INSモードスイッチ $FF=オン、$00=オフ   $004D−$004E:プログラムバッファ ポインタ 下位、上位 ($0300−$03FF)   $004F:BG−AまたはBG−Bの上位アドレスの指定 $20=BG−A、$24=BG−B $0050:カナキースイッチ $FF=オン、$00=オフ $0052−$0053:文字列データ 下位、上位 $0054−$0055:中間言語検索用ポインタ 下位、上位 $0056−$0057:RND用 $0058−$0059:汎用バッファ ポインタ退避用 下位、上位 ($0009−$000A) $005A      :プログラム1行分の長さ $005B−$005C:BASICコマンド検索アドレス 下位、上位 $005D      :MOVEコマンド 第nnパラメータ(01−08) $005E      :キー入力用 $00=通常、$01−$FF=デバグ用? 出力キーデータの$03(^C)を返す $005F      :BG−GRAPHIC CMT PPUアドレス 下位、上位 $0061      :表示するカーソルのキャラクタ(ASCII) $0062      :VRAMバッファ インデックス $0063      :VSYNCタスクnn (nn=$00から$0F $00でタスク実行終了) $0064      :文字列インデックス $0065      :文字列インデックスカラー $00=BG、$01=OBJ $0066      :ファンクションキーフラグ $FF=オン、$00=オフ $0067      :ファンクションキーデータ              Bit7−4:押されたFnのn−1の値              Bit3−0:押されたFnの文字数 $0068      :ファンクションキースイッチ $FF=オン、$00=オフ $0069      :ポート$2005(垂直)の内容 $006B      :カーソル X座標退避用 $006C      :カーソル Y座標退避用 $006D      :キーマトリックス ビットデータ(押されたビット)             ファンクションキー              $F0=F1キー              $F1=F2キー              $F2=F3キー              $F3=F4キー              $F4=F5キー              $F5=F6キー              $F6=F7キー              $F7=F8キー               キーマトリック              $07=Bit7が1              $06=Bit6が1              $05=Bit5が1              $04=Bit4が1              $03=Bit3が1              $02=Bit2が1              $01=Bit1が1              $00=Bit0が1   $006E      :キーマトリクス ラインナンバ (0から8) $006F      :CTRL フラグ  $FF=オン、$00=オフ $0070      :SHIFTフラグ  $FF=オン、$00=オフ $0071      :GRPH フラグ  $FF=オン、$00=オフ $0072      :カナ   フラグ  $FF=オン、$00=オフ   $0073      :カーソル点滅にあるキャラクタ(ASCIIコード)             文字列 V−SYNCタスク nn $0074      :文字列 V−SYNCタスク用             汎用レジスタ              CGEN用              カラーパレット              VIEW用             汎用カウンタ              カーソル点滅              CMT1バイトリード              KEY LIST 表示インデックス              SPRITE              メニュー $0075      :キーデータ(ASCIIコード)             文字列 データ リードインデクス             CMT リード ディレイ $0076      :キーバッファ インデックス   $0077      :BASIC キーリピートカウンタ0 $0078      :BASIC キーリピートカウンタ1 $0079      :BASIC キーリピートカウンタ2   $007B      :キーリピートフラグ $FF=オン、$00=オフ   $007C      :BG GRAPHIC              $00=SELECT              $01=COPY              $02=MOVE              $03=CLEAR              $04=FILE              $05=CHAR   $007D      :BG GRAPHIC SELECTキャラクタグループ $00−$0C   $007E      :テキスト スクロールカウンタ スクロールするたびに−1 $007F      :BG GRAPHIC SELECTカーソル $00−$07   $0088      :BG GRAPHIC SELECT MODEnn (nn=$00−$03)   $008A−$008B:変数名2バイト $008C−$008D:使用した変数   アドレス 下位、上位 (タイプ、名前) $008E−$008F:使用した変数の値 アドレス 下位、上位   $0090      :PLAY文 ””の中の長さ            :KEY LIST用 Fnキー $0091      :PLAY文 バッファポインタ下位             CMT テープマークの数             CMT チェックサム下位 $0092      :PLAY文 バッファポインタ上位             CMT チェックサム上位   $0098      :中間言語データ検索用(アスキーコード) $0099      :中間言語 $009A−$009B:汎用バッファ ポインタ 上位、下位 保存用 $009D      :ポート$2005(水平)の内容 $009E      :BG−B クリアラフグ $81以外=クリア可、$81=クリア不可   $00A9      :アニメキャラクタ インデックス 0から7 $00AB      :MOVEを実行でVSYNCタスクとMOVEの振り分け $FF=MOVE、$00=VSYNCタスク $00AC      :MOVEフラグ $FF=実行、$00=停止 $00AD−$00AE:CMT データ    ポインタ 下位、上位 $00AF      :CMT ファイルネームポインタ 下位 $00B0      :CMT ファイルネームポインタ 上位             INS用 右端を超えたキャラクタ $00B1:BASIC CMTロードフラグ $00=LOAD、$01=LOAD?   $00B9      :PLAY文 Ch1 T(テンポ 1から8) $00BA      :PLAY文 Ch2 T(テンポ 1から8) $00BB      :PLAY文 Ch3 T(テンポ 1から8) $00BC      :PLAY文 Ch1 V(音量、エンベロープの長さ 0から15) $00BD      :PLAY文 Ch2 V(音量、エンベロープの長さ 0から15) $00BE      :PLAY文 Ch3 V(音量、エンベロープの長さ 0から15) $00BF      :PLAY文 Ch1 O(オクターブ 0から5) $00C0      :PLAY文 Ch2 O(オクターブ 0から5) $00C1      :PLAY文 Ch3 O(オクターブ 0から5) $00C3      :PLAY文 Ch1 音の長さ(0から9) $00C4      :PLAY文 Ch2 音の長さ(0から9) $00C5      :PLAY文 Ch3 音の長さ(0から9) $00C6      :PLAY文 Ch1で音を鳴らす位置(バッファポインタ下位) $00C7      :PLAY文 Ch2で音を鳴らす位置(バッファポインタ下位) $00C8      :PLAY文 Ch3で音を鳴らす位置(バッファポインタ下位) $00C9      :APUチャンネル              Bit7:エラー     1=エラー発生、0=エラー無し              Bit6:              Bit5:              Bit4:              Bit3:              Bit2:APU Ch3 1=使用する、0=使用しない              Bit1:APU Ch2 1=使用する、0=使用しない              Bit0:APU Ch1 1=使用する、0=使用しない   $00CA      :PLAY文 Ch nの指定 $00=Ch1、$01=Ch2、$02=Ch3   $00CB      :PLAY文 Ch1カウンタ $00CC      :PLAY文 Ch2カウンタ $00CD      :PLAY文 Ch3カウンタ   $00CE      :APUチャンネル ストップ $4015からこの値を引く              Bit7:              Bit6:              Bit5:              Bit4:              Bit3:              Bit2:APU Ch3 1=停止する、0=停止しない              Bit1:APU Ch2 1=