ぴゅう太 (TP1000)

密かに、くろーびす氏の協力に感謝
ぴゅう太のスペック
CPU TMS9995 10.738MHz
VDP TMS9918
PSG SN76489
ROM 32KB(使用領域20KB)
RAM なし(CPU内に256B)
V-RAM 16KB
TI社のチップで固められた稀有なパソコン 日本で発売された同じようなハードといったら一応TI−99ぐらいしかない(CPUはTMS9990) 更に独特なニホンゴBASICが異才を放ち、海外ではTomy Tutorという名前で発売されており、 ロットによってはマスクROMを使用したり、拡張性もあったり以外と本格的なハード(G−BASICだけが冗談で作られたとしか思えない) ワークエリアはなく、CPUの内の16ワード*8バンクの計256バイトとVDPで使われない領域を使用 尚、初代ぴゅう太は少なくとも3種類のバージョンがあるみたいなのですが回路図は当然手持ちのハードのみです。 製造番号はZTST 038581です。(恐らく中期バージョン) 初期は256KBitPROM1個らしく、中期は256KBitマスクROM1個、後期はマスクROM2つになっているみたいです (注)TI社のチップはMSBとLSBが通常と逆になっています。(ROMの部分ではアドレス、データバスの並びが逆なのはその為です  
機種による文字化け 左がぴゅう太、右がぴゅう太Jr.による画面となります カナ文字か英小文字の定義がされているか機種によって違い 文字化けが起こる問題が生じます   その為後期のソフトになると英大文字表記になり文字化けの問題を回避しています ただしプレイヤー選択ルーチンはBIOSコールで行う為 メッセージ表示が機種ごとに変化します  
グラフィックモード メニューでGRAPHICを選択するとグラフィックモードになります このときMODキーを押すと 背景作成モード → 全背景作成モード → アニメ作成モード → 背景・アニメ作成モード と状態が変わり4回押すと、背景作成モードに戻ります    背景作成モード     画面は32×24のセル(キャラクタ)に分かれていますが下1/3に   サンプルカラーとパレットがありセルの一部分は隠れています   メインカーソルが隠れている場所に行くと、サンプルカラー、パレットは上に移動し   隠れていたセルが出現します     メインカーソル    ロケット型をしていてセルの位置及び移動方向を示しています    移動はカーソルキーで押し続けると連続して移動します     パレット    パレットは8×8ドットが8倍に拡大されている場所で    スペースキーを押すとメインカーソルの位置のセルが表示されます    同時にパレットの左上にサブカーソルが点滅します     サブカーソル    サブカーソルはパレットの中と左側1列の中を移動が出来ます    移動はカーソルキーでパレットの外(左側)にある時にカラーキーを押すと    パレットの中の横1列がその色になります(サブカーソルは移動方向に1つ進みます)    パレットの中にある場合はカラーキーを押すと、その位置のドットに色がつきます    ただしパレットの横1ライン中2色までしか色をつける事ができません。     カラーキー    カラーキーはサンプルカラーに表示された英数字を使います    カラーキーはサブカーソルが表示されている場合のみ有効    メインカーソルが表示されているときは押したキーの文字を表示します     1=透明 、2=黒  、3=灰色 、4=白     5=淡い黄、6=黄  、7=淡い緑、8=緑     9=濃い赤、0=淡い赤、Q=赤  、W=濃い赤     E=紫  、R=淡い青、T=青  、Y=濃い青     スペースキーでセルを表示したときサンプルカラーYの下に数字が表示されます   これは個々のセルのナンバーを表します。     メインカーソルはパレットにかかれたデータを記憶しています   RTキーを押すことでパレットのデータをセルに書き込みます。    全背景出力モード     全背景出力モードでカラーキーを押すと画面の地色(バックドロップ画面)を変える事が出来ます    アニメ作成モード     画面は背景作成モードと同じようにサンプルカラーとパレットが表示されます   違う所はメインカーソルが無くなり”ABCD”のブロックが4つ表示されます   この”ABCD”のブロックをアニメ(スプライト)として背景と同じように絵を描きます   アニメは4つあり左から順にアニメ(4)、アニメ(3)、アニメ(2)、アニメ(1)とします   最初はアニメ(4)が点滅していますがRTキーを押すごとに順番に点滅していきます   点滅しているアニメはカーソルキーで移動する事が出来ます   アニメはA、B、C、Dの4つに分かれていて、この1つ1つを順番にパレットに呼び出す事によって   背景作成モードと同様に絵を作成します      アニメが点滅しているときにスペースキーを押すと4分の1の”A”の部分がパレットに呼び出されます   スペースキーを押すごとに”A”→”B”→”C”→”D”…と変わります     パレットの中はアニメの色に関係無く透明部分(”0”)は灰色で色のついた部分(”1”)は青で表示   1つのアニメには1色だけしか色をつけられません   アニメには優先順位があり重ねた場合アニメ(4)が一番奥、アニメ(1)が一番手前(手前が優先順位が高い)になります    背景・アニメ出力モード     サンプルカラー、パレットが消え背景とアニメが全面に現れます   カラーキーで画面の地色(バックドロップ画面)の変更   コントローラでアニメを動かす事ができます   コントローラ1でアニメ(4)、コントローラ2でアニメ(2)を操作します   アニメ(4)とアニメ(2)しか操作できませんがアニメ(3)とアニメ(1)は   アニメ(4)あるいはアニメ(2)を重ねることで一緒に操作出来ます   全てのアニメを重ねるとコントローラ1か2のどちらでも操作出来ます   背景・アニメ出力モードでMONキーを押す事でモニターへ飛びます    グラフィックモードのモニター   メニユ−   :画面データの消去を行いメニュー画面に飛びます   GRAPHIC:グラフィックモードに戻ります   GBASIC :G−BASICに飛びます(BASICプログラムは消去される)   セ−ブ    :データをテープにセーブします(ナマエはカナ文字か英字で4文字以内、2文字目からは数字、記号の使用可)   ロ−ド    :データをテープにロードします(ナマエを忘れた場合、名前の入力でオシエテと入力してロードすると表示される)   カクニン   :テープにセーブしたデータの確認を行います(ナマエを忘れた場合、名前の入力でオシエテと入力してロードすると表示される)           他のモードに変えるとカクニンの使用不可  
G−BASICモード メニューからG−BASICモード、 グラフィックモードのモニターからGBASICコマンドで G−BASICを呼び出すと 画面一番下に”タイプインOK”というメッセージとその下にカーソルが点滅します カーソルは画面一番下の行だけしか移動できませんが、文字や記号が書かれた画面を上下移動で プログラムの自由な位置に移動出来ます カーソルの下を押すとすでにタイプインしたプログラムを1行ずつ下がってきます カーソルの上を押すとすでにタイプインしたプログラムを1行ずつ上げていきます      モニターモードーへ行く方法   タイプイン       :行番号 オワリ   プログラム実行中および後:MONキー   シングルステップ実行中 :RTキーを押しながらMONキー(タイミングが合わないとモニターへ飛ばない)      G−BASICモードのモニター(先頭4文字で識別可)   メニユ−   :画面データの消去を行いメニュー画面に飛びます   GRAPHIC:グラフィックモードに飛びます(BASICプログラムは消去される)   GBASIC :G−BASICに飛びます  (BASICプログラムは消去される)   ジッコウ   :プログラムの実行を行います   ステツプ   :シングルステップを行います   ヘンシユウ  :プログラムの編集を行います   セ−ブ    :データをテープにセーブします(ナマエはカナ文字か英字で4文字以内、2文字目からは数字、記号の使用可)   ロ−ド    :データをテープにロードします(ナマエを忘れた場合、名前の入力でオシエテと入力してロードすると表示される)   カクニン   :テープにセーブしたデータの確認を行います(ナマエを忘れた場合、名前の入力でオシエテと入力してロードすると表示される)     EMENU  :不明   EBASIC :不明   テレホン   :不明   EDIT   :不明   DEBUG  :不明   ソノタ1   :不明             他のモードに変えるとカクニンの使用不可        プログラムの制限   行番号は1〜9999までで行番号のすぐ後はスペースを1文字の空白が必要になります   1つの命令文の長さは行番号+空白を含めて31文字までです   プログラムの行数は約100ステップです    扱える数値   0〜65535の整数    演算結果が65535を超えると0から加算された値として表示されます     演算結果    表示     65536   0     65537   1     65538   2    演算結果が0よりも小さくなった場合は、65535から順次減算されます     演算結果    表示        −1   65535        −2   65534        −3   65533     −32768〜+32767の負の数    演算結果が+32767を超えると−327678から1つずつ加算された値として表示されます     演算結果    表示     32768  −32768     32769  −32767     32770  −32766    また演算結果が−32768より小さくなった場合は+32767から1つずつ減算された値として表示されます     演算結果    表示    −32769   32767    −32770   32766    −32771   32765   正と負のまたがる場合は加減計算しかできません   演算結果に少数点を含む数値は少数点以下は切り捨てになります    定数と変数   数値定数 0〜65535の整数   文字定数 8文字   変数名  最大4桁(アルファベット、2文字目以降は数字の使用可)        文字定数は最後に$をつける     1つのプログラムで数値変数と文字変数で同じ名前は使えません    AとA$、ABとAB$等の使用不可   1つのプログラムの中で使用出来る変数の数は最大47個までです    演算の優先順位   1:*と/   2:+と−   BASICの命令   行番号 シキ 変数=定数          変数          式    代入を行います    シキの文字はタイプインの時は省略可ただしリストを取るとシキの文字は出現する)     行番号 カケ セル番号,定数          変数          文字定数    画面に文字を書きます    セル番号は1〜761(範囲外だと表示されません)    数値の範囲は2種類あります         0〜 65535の範囲の場合 カケ セル番号,変数    −32768〜+32767の範囲の場合 カケ セル番号,+変数      セル番号対応図          行番号 オワリ    プログラムの宣言終了でモニターへ飛びます     行番号 行番号ニイケ    指定した行番号に飛びます     行番号 マワレ”トジル”の行番号 変数=初期値カラ最終値[カンカク[間隔値]        |   行番号 トジル    変数に初期値から最終値までの間の値を間隔値ごとにきざんで代入を行います    マワレの文からトジルの文にはさまれたプログラムが数値の値が変わるたびに繰り返し実行されまsy    マワレの後には必ずトジル文の行番号が必要    初期値、最終値、間隔値には1〜65535の整数のみ変数の使用不可    カンカクを省略すると間隔値は1になる     行番号 モシ 条件式ナラバ 行番号ニイケ    条件式判断を行います    値が指定した条件を満たす場合はナラバの後の>行番号に飛びます    値が指定した条件を満たさない合は次の行番号に行きます       条件式に使われる関係演算子      等しい      =      より小さい    <      より大きい    >      小さいか等しい <=      大きいか等しい >=      等しくない   <>     行番号 トマレ    プログラムの実行が一時停止されます    実行を続行させる場合はRTキーを押します     行番号 行番号ヲヨベ    サブルーチンを呼びます     行番号 カエレ    サブルーチンから帰ります     行番号 タイマ番号 オン    タイマーの使用を行います    タイマの番号は1〜7で7つのタイマがあります    タイマーは0.01秒〜40秒の0.01秒ごとカウントです     またタイマーは条件式判断文でチェック出来ます       モシ タイマ番号=条件式ナラバ 行番号ニイケ      ただし一度条件式判断文でチェックを行い条件式を満たした場合      タイマーは0になり再びカウントされます     行番号 オト 種類    種類     イチオン ピッという音(一般キーのタイプの音)     ニオン  ブッという音(エラーの音)     サンオン ピロンという音(メニューでRTキーを押したときの音)     シオン  バーンという音    4種類の音が出力出来ますが続けて実行すると最後に指定した音しか出ません     行番号 変数=ランスウ(n)     n=最大値 1〜65535(ただし768を超えると上の方に偏る傾向があります)    0〜最大値の乱数を発生します     行番号 アフレ オン    演算結果でオーバーフローを起こしたときにプログラムを停止させRTキーを押すとモニターへ飛びます      行番号 アフレ オフ    演算結果でオーバーフローを起こしてもプログラムは停止ないようにします    演算結果で−32768〜+32767の範囲(負と正にまたがる計算)では    アフレ オンだと邪魔になるのでアフレ オフを使用します    G−BASICの最初はアフレ オフの状態になります     行番号 セル(n)=セル(m)    セル番号mをセル番号nの絵柄にコピーします    n、mは定数、変数、式     行番号 アニメn=イチ(y,x)     n=1〜4 アニメの番号     y=Y座標 1〜192(256を超えると256を引いた数値)     x=X座標 1〜256(256を超えると256を引いた数値)    アニメ(スプライト)の左上を指定した座標で表示します    表示範囲はY座標 1〜192、X座標 1〜256ですが    アニメを表示したくない場合がY座標を200辺りにする     変数=ヨコ(アニメn)     n=1〜4 アニメの番号    アニメ(スプライト)の位置(X座標)を調べます     変数=タテ(アニメn)     n=1〜4 アニメの番号    アニメ(スプライト)の位置(X座標)を調べます     行番号 キイn 変数1,変数2       n 1=コントローラ1         2=コントローラ2       変数1 方向キーの状態          0=何も押されていない          1=上          2=右上          3=右          4=右下          5=下          6=左下          7=左          8=左上       変数2 シュートキーの常態          0=何も押されてない          1=LEFT          2=RIGHT    コントローラの状態を変数1と変数2に送ります    コントローラは特定のキーを押したのと同じになります  
CPU CPUはTI社のTMS9995を使用クロックは10.738MHz(内部2.6845MHz) このクロックはVDPと共用で使われています   システムROM CRC:7553bb6a 256KBit マスクROMみたいです。(実際に256KBitとして読む事ができます。)   I/O周辺 CMT−IFはトーンバースト方式です   キーボード、コントローラ周り CRUINでシリアルでキーデータを読み込んでいます J−2はキーボード、J−3はコントローラ端子になりキーボードとデータが重なります A9 〜A11で読むデータのセレクト(/Y0〜/Y7) A12〜A14で読むビットのセレクトになります   キーマトリクス コントローラ TP1101   PSG SN76489を使用、クロックはVDPから出力されるCPUCLK 3.7597MHz   VDP TMS9918を使用、CPUCLK端子はPSGのクロックに使用しています。 コネクタ 端子名は、とりあえずつけてみただけです J−1はカートリッジ端子(偶数が前) C-1は背面にある拡張端子(奇数が上) J−2はカセットIF /KILL SROMを0にすると本体内のシステムROMの使用禁止 SELEXM 1=拡張メモリを選択        0=本体、カードリッジメモリ、I/Oを選択   /EXM00 拡張メモリ>0000−>3FFF /EXM40 拡張メモリ>4000−>7FFF /EXM80 拡張メモリ>8000−>BFFF /EXMC0 拡張メモリ>C000−>FFFF /EXP0  >E600−>E7FF ROM? E600:55のチェックあり /EXP1  >E800−>E8FF プリンタ用I/Oポート /EXP2  >EA00−>EBFF /EXP3  >EC00−>EDFF ???キーボードポート   /CROM0 >8000−>BFFF カートリッジメモリ /CROM1 >E400−>E5FF カートリッジI/Oポート用?   /IOPORT 1=>0000−>BFFFアクセスもしくは外部メモリアクセス         0=>C000−>FFFFアクセス(I/Oポート)   ゲームカートリッジ (64KBit)回路図 手持ちの全ての64KBitソフトはこうなっていました(初期のロットでは2732を2つ使っているのもあるそうです) 尚、ROMは64KBitのマスクです。(データバスとアドレスバスは通常のROMと同じ表記にしています)   メモリマップ >0000 リセット  WP=>F0A0にして>0254へジャンプします   >0004   WP=>F0A0にして>0254へジャンプします   >0008   WP=>F0A0にして>0254へジャンプします   >000C 内蔵タイマベクタ  DATA >F0C0  DATA >16DA   >0010   DATA >F07A  DATA >095E   >0014   DATA >F0C0  DATA >055A   >0018 CPU RAM >F00C−>F083のクリア  入力:WP=>EFEC    CPU内蔵RAM >F00C−>F083を>00で埋めます  BLWP命令でコールします   >001C CPU RAM >F00C−>F081のクリア  入力:WP=>EFEC    CPU内蔵RAM >F00C−>F081を>00で埋めます  BLWP命令でコールします       >0020 VDP初期化  入力:R8=VDPデータ アドレス  出力:R0=VDPステータス(Bit0−7)  使用:R9、R10、R11、R12     >F070 Bit6    VDPのR#00−#08までの設定を行います   >0024 VDP レジスタの設定  入力:R9=設定データ 上位=データ、下位=レジスタ  出力:R0=VDPステータス(Bit0−7)  使用:R10、R11     >F070 Bit6    VDPのレジスタの設定を行います   >0028 VRAMオールクリア  出力:R0=VDPステータス(Bit0−7)  使用:R7、R8、R9、R10、R11、R13、R14     >F070 Bit6    VRAM >0000−>3FFFを>00で埋めます   >002C VRAM FILL  入力:R8=埋めるデータ(上位のみ)     R9=VRAM先頭アドレス     R7=長さ  出力:R0=VDPステータス(Bit0−7)  使用:R7、R11、R13、R14     >F070 Bit6    VRAMにデータを埋めます   >0030 VRAMアドレスの設定 ライト  入力:R9=VRAMアドレス  使用:R11     >F070 Bit6    書き込みを行う為のVRAM指定を行います  またR9は入力の値に直して返します   >0034 VRAMアドレスの設定 リード  入力:R7=VRAMアドレス  出力:>F074=VRAMアドレス  使用:R11     >F070 Bit1=1           Bit6    読み込みを行う為のVRAM指定を行います   >0038 VRAM 1バイト書き込み  入力:R9=VRAMアドレス     R8=ライトデータ(上位のみ)  出力:>F074=VRAMアドレス+1  使用:R11、R14     >F070 Bit6    RAMに1バイト書き込みを行います   >003C VRAM 1バイト読み込み  入力:R9=VRAMアドレス  出力:R8=リードデータ(上位のみ)     >F074=VRAMアドレス+1  使用:R11、R14     >F070 Bit6    VRAMに1バイト読み込みを行います   >0040 キーデータからアスキーコードに変換  出力:>F0E9=アスキーコード  使用:R11、R12    キーデータ(>F0C2−>F0C9)から  押されているキーをアスキーコードに変換  ただし、コントロールコードは下記のみ   RTキー >0D   上キー  >F0   左キー  >F1   下キー  >F2   右キー  >F3   MOD  >F4   >0044 コントローラの内容を読む  出力:R10=コントローラデータ  使用:R8、R9、R10、R11、R12     >F0EA−>F0EB     >F0EC−>F0ED    >F0C6と>F0C7を読み  コントローラデータに変換   >0048 乱数発生  入力:R10=範囲  出力:R8=乱数  使用:R9、R10、R11     >F0D8−>F0D9     >F0EA−>F0EB     >F0C0−>F0C1    乱数の発生を行います   >004C メモリ転送  入力:R7=転送元アドレス     R8=Bit0−1  コマンド           2−15 長さ     R9=転送先アドレス  出力:R9=転送先最終アドレス+1     R7=転送元の最終アドレス+1  使用:R11、R12     >F074=VRAMアドレス    R8のコマンドで各メモリの転送を行います   00:メモリからメモリへ転送   01:メモリからVRAMへ転送   10:VRAMからメモリへ転送   11:VRAMからVRAMへ転送   >0050 タイマnの選択またはタイマnのチェック  入力:R8=Bit0−2  タイマn(n=0−7)           3−15 チェックするタイマn カウントデータ下位のみ(0でタイマn指定)  出力:EQ=1 チェックするカウンタ値未満        0 チェックするカウンタ値以上  使用:R6、R7、R8、R11     >F080−>F09E=タイマ 0から7のうち1つ     >F0D6−>F0D7=カウンタ H     >F0D8−>F0D9=カウンタ L    タイマnをカウンタを利用してカウント、チェックします  このルーチンでは2種類の動作ができます    タイマnを選択:カウンタ0000でコール   タイマnに内蔵カウンタ H、Lの値をコピー    EQ=1    タイマnのチェック:カウンタ0000以外でコール   カウンタがチェック値未満    R8=>0000    EQ=1     カウンタがチェック値以上    R8=カウントデータ    EQ=0   >0054 左右反転のキャラクタ定義  入力:R8 =定義するキャラクタアドレス     R9 =定義するVRAMアドレス     R10 Bit0   =1 2×2キャラクタ定義                 0 1×1キャラクタ定義         Bit1−7 =0         Bit8−15=定義するキャラクタ数    使用:R5、R7、R8、R9、R10、R11、R12     >F070 Bit6  キャラクタデータを左右反転して定義を行います  ただし1×2キャラクタ定義の場合  データアドレス+>10 2キャラクタ定義  データアドレス     2キャラクタ定義の順になります    定義するキャラクタ数は1×1で1、2×2で1となります       >0058 十進数表示F0F0 >005C 十進数表示F0F4       >0060 キャラクタの指定方向へ表示  入力:R7=パターン・ネーム・テーブル オフセットアドレス     R8=Bit0−2 :方向        Bit3−7 :長さ−1        Bit8−15:表示するキャラクタ    キャラクタを指定方向に表示します  R7の値は>1C00を引いた値になります     方向:000=上 、001=右上、010=右 、011=右下      100=下 、101=左下、110=左 、111=左上   >0064 PSG オ−ルオフ  使用:R9、R11     >F0CA=PSGトラック0コマンド     >F0CB=PSGトラック0コマンド     >F0CC=PSGトラック0コマンド     >F0E2=PSGトラックデータアドレス       PSGの全チャンネルを音量オフにする為のデータを設定します  またPSGアクセス自体は別の処理(割込み)で行われます     >0068 PSGトラック0セット  入力:R9=PSGトラック0データアドレス  出力:>F0CA=PSGトラック0コマンド >01     >F0E2=PSGトラック0データアドレス  使用:R11    PSGトラック0の演奏を行います     PSGコマンドは割込み内のルーチンでDECされます    >01     PSGポート>E200に書き込み    >02−>7F 演奏する長さ    >00     演奏終了開始    >FF−>80 演奏終了(DECされて>80で停止)    <例>演奏データ   BYTE >06                     ;ポートに書き込むバイト数   BYTE >8A,>05,>90,>A1,>07,>B0 ;ポートに書き込むデータ   BYTE >4C                     ;PSGコマンド    |   BYTE >02   BYTE >9F,>BF   BYTE >00     >006C PSGトラック1セット  入力:R9=PSGトラック1データアドレス  出力:>F0CB=PSGトラック1コマンド >01     >F0E4=PSGトラック1データアドレス  使用:R11    PSGトラック1の演奏を行います   >0070 PSGトラック2 セット  入力:R9=PSGトラック2 データアドレス  出力:>F0CC=PSGトラック2コマンド >01     >F0E6=PSGトラック2データアドレス  使用:R11    PSGトラック2の演奏を行います       >0074 レジスタ VRAM退避 入力:R0〜R12 出力:>F05C=スタック領域 インデックス(+>0016)    レジスタの内容をVRAM内のスタック領域に退避します   >F060−>F06B(R0、R6−R12)   >F0A2−>F0AB(R1−R5)の順で退避   >0078 レジスタ VRAM復帰 出力:R0〜R12    >F05C=スタック領域 インデックス(−>0016)    VRAM内のスタック領域からレジスタに復帰します  >F05C=>0000で復帰しようとすると>0014へジャンプ       >007C VRAMアクセスアドレスの取得  入力:R9=Bit0−3  番号 0−F        Bit4−15 オフセットアドレス  出力:R9=VRAMアドレス  使用:R11、R12    まずR9の内容を番号と加算する値に分け  チェックする範囲外だと>0014へジャンプ  範囲内なら番号のチェックする先頭VRAMアドレス+R9(Bit4から15)がR9に入る    番号|チェックする範囲  −−+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−   0|>1C00−>1EFF VRAMアドレス パターン・ネーム・テーブル(セル)   1|>0000−>07FF VRAMアドレス パターン・ジェネレータ・テーブル トップ   2|>0800−>0FFF VRAMアドレス パターン・ジェネレータ・テーブル ミドル   3|>1000−>17FF VRAMアドレス パターン・ジェネレータ・テーブル ロウ   4|>2000−>27FF VRAMアドレス カラー・テーブル トップ   5|>2800−>2FFF VRAMアドレス カラー・テーブル ミドル   6|>3000−>37FF VRAMアドレス カラー・テーブル ロウ   7|>1F00−>1F7F VRAMアドレス スプライト属性テーブル   8|>1800−>1BFF VRAMアドレス スプライト・パターン・ジェネレータ・テーブル   9|>3800−>3FFF VRAMアドレス   A|>1F80−>1FFF VRAMアドレス スタック領域、ワーク   B|>1880−>1BFF VRAMアドレス   C|>1F10−>1F7F VRAMアドレス   D|>3800−>3FFF VRAMアドレス プログラム領域   E|>3800−>3FFF VRAMアドレス プログラム領域   F|>F000−>FFFF CPUアドレス   >0080 VRAM連続読み込み  入力:R8=転送先アドレス     R9=>007Cパラメータ(転送元VRAMアドレス)        Bit0−3  番号 0−F        Bit4−15 オフセットアドレス     R10=長さ  出力:R12=転送元VRAMアドレス+>1000  使用:R11    転送元アドレスにVRAMデータをメモリに転送します   >0084 VRAMからメモリへの1バイト転送  入力:R7=転送先アドレス     R9=>007Cパラメータ(転送元VRAMアドレス)  使用:R11、R12    VRAMの内容1バイトをメモリに転送します   >0088 >008C >0090 >0094 >0098 >009C       >00A0 VRAM連続書き込み  入力:R8=転送先アドレス     R9=>007Cパラメータ(転送先VRAMアドレス)        Bit0−3  番号 0−F        Bit4−15 オフセットアドレス     R10=長さ  出力:R12=転送元VRAMアドレス+>1000  使用:R11    転送元アドレスにあるデータをVRAMに転送します  ゲームカートリッジではキャラクタ定義に使用   >00A4 >00A8 >00AC >00B0   >00B4 スプライト 座標の設定  入力:R8=設定する座標データのあるアドレス     R9=スプライト No.nn(>00−>1F)  使用:R11、R12    スプライト座標の書き込みを行います       >00B8 >00BC       >00C0 スプライト番号からパラメータの取得  入力:R9 =スプライト No.nn(>00−>1F)  出力:R9 =>007Cパラメータ 番号、オフセット     R10=>0001 (転送する為の長さ)  使用:R11    スプライト番号から>007Cのパラメータに変換を行います  R10は>00B4で使用するためのデータになります       >00C4 アドレス計算 >00C8 アドレス計算 >00CC VRAMコピー >00D0 タイマn スタート >00D4 タイマn チェック   >00D8 乱数セット  出力:>F06A=乱数データ  使用:R11、R12    >F06Aに乱数値を置きます   >00DC 十進数表示  入力:R9 =Bit0−2  未使用         Bit3    1=>F0F4を表示、0=>F0F0を表示         Bit4−5  未使用?         Bit6−10 Y座標         Bit11−15X座標     R10=Bit0−2 ???         Bit3−5 ???    十進数を表示します  十六進数から十進数には変換はしていないのと  事前にキャラクタ定義をする必要があります   >00E0 >00E4 データを反転してキャラクタ定義   >00E8 VRAM FILL  入力:R8=埋めるデータ(上位のみ)     R9=>007Cパラメータ(転送先VRAMアドレス)        Bit0−3  番号 0−F        Bit4−15 オフセットアドレス     R10=長さ  出力:R0=VDPステータス(Bit0−7)  使用:R11、R13、R14     >F070 Bit6    VRAMをR8のデータで埋めます   >00EC VRAM >00 FILL  入力:R9=>007Cパラメータ(転送先VRAMアドレス)        Bit0−3  番号 0−F        Bit4−15 オフセットアドレス     R10=長さ  出力:R0=VDPステータス(Bit0−7)  使用:R11、R13、R14     >F070 Bit6    VRAMを>00で埋めます   >00F0 コントローラ入力  入力:R7=>0000 コントローラ1        >0001 コントローラ2  出力:何か押された場合      R8=Bit0  0         Bit1  0         Bit2  0         Bit3  0         Bit4  0         Bit5  0         Bit6  SLキー         Bit7  SRキー         Bit8  0         Bit9  0         Bit10 0         Bit11 0         Bit12 0         Bit13 0         Bit14 0         Bit15 1=入力あり、0=入力なし        R9=Bit0  0         Bit1  0         Bit2  0         Bit3  0         Bit4  0         Bit5  0         Bit6  0         Bit7  1=方向キー入力あり、0=方向キー入力なし         Bit8  0         Bit9  0         Bit10 0         Bit11 0         Bit12 0         Bit13 0         Bit14 0         Bit15 1=シュートキー入力あり、0=シュートキー入力なし      R10=方向キー番号          0=上          1=右上          2=右          3=右下          4=下          5=左下          6=左          7=左上     コールした次のアドレスに戻る       何も押されない場合      なし     コールした次のアドレス+4に戻る  使用:R11、R12    割込みで得たキーデータを元に入力データに変換します  BL @>00F0でコールして次の2つのアドレスに分岐されます    <例>   BL @>00F0 ;コントローラ入力   B  @TRUE  ;何か押された   B  @FAIL  ;何も押されていない        |   >00F4 >00F8   >00FC 指定範囲内の表示  入力:R8=表示するデータアドレス     R9=>007Cパラメータ(転送元VRAMアドレス)        Bit0−3  番号 0−F        Bit4−15 オフセットアドレス     R10上位=表示する縦範囲     R10下位=表示する横範囲  使用:R11、R12    R9で指定した場所から縦×横のメッセージを表示を行います  ゲームのタイトル(スクランブル)に使用されています   >0100 >0104 >0108   >010C DRAW  入力:R8=DRAWキャラクタ アドレス     R9=>007Cパラメータ(転送元VRAMアドレス)        Bit0−3  番号 0        Bit4−15 オフセットアドレス     R10=DRAWデータアドレス  使用:R11     >F056=R11退避用    設定したオフセット座標にDRAWキャラクタを書きます  ゲームのタイトル描画(フロッガー等)に使用  DRAWデータはデータの長さ、オフセット座標、オフセット座標...となります    <例>  LI R8,>DRAWCHR  LI R9,>0100    ;パターン・ネーム・テーブル>1D00  LI R10,>DRAWDATA    DRAWCHR:   BYTE >FF ;CHR >FFで書く  DRAWDATA:   BYTE >03 ;オフセット座標 3バイト   BYTE >00 ;一番左上    >1D00に書く   BYTE >20 ;一番左上から下 >1D20に書く   BYTE >01 ;一番左上から+1>1D01に書く     >0110 >0114 >0118   >011C レジスタ退避  出力:>F062−>F063=R6 の内容     >F064−>F065=R7 の内容     >F066−>F067=R8 の内容     >F068−>F069=R9 の内容     >F06A−>F06B=R10の内容     >F06C−>F06D=R12の内容  使用:>F060−>F061=レジスタ退避用(R0)     R11       レジスタ退避を行います   >0120 レジスタ復帰  出力:R0 =>F060−>F061の内容     R6 =>F062−>F063の内容     R7 =>F064−>F065の内容     R8 =>F066−>F067の内容     R9 =>F068−>F069の内容     R10=>F06A−>F06Bの内容     R11=>F06C−>F06Dの内容  使用:R11、R12    レジスタ復帰を行います   >0124 >0128 >012C >0130 >0134 >0138 S.E.0 >013C S.E.1 >0140 >0144 >0148 >014C >0150 >0154 >0158 >015C >0160 >0164 クリア ワークメモリ >0168   >016C PSGトラック0演奏終了のチェック  出力:Zf=1 演奏終了        0 演奏中  使用:R11、R12     >F0CA=PSGトラック0コマンド    PSGトラック0の演奏が終わったかチェック(PSGコマンド>80)を行います   >0170 PSGトラック1演奏終了のチェック  出力:Zf=1 演奏終了        0 演奏中  使用:R11、R12     >F0CB=PSGトラック1コマンド    PSGトラック1の演奏が終わったかチェック(PSGコマンド>80)を行います   >0174 PSGトラック2演奏終了のチェック  出力:Zf=1 演奏終了        0 演奏中  使用:R11、R12     >F0CC=PSGトラック2コマンド    PSGトラック2の演奏が終わったかチェック(PSGコマンド>80)を行います   >0178 VRAM 2バイト書き込み  入力:R8上位=第1バイト ライトデータ     R8下位=第2バイト ライトデータ     R9=VRAMアドレス  出力:>F074=VRAMアドレス+2  使用:R11、R14     >F070 Bit6    VRAMに2バイトデータを書き込みます   >017C VRAM 2バイト読み込み  入力:R9=VRAMアドレス  出力:R8上位=第1バイト リードデータ     R8下位=第2バイト リードデータ     >F074=VRAMアドレス+2  使用:R11、R14     >F070 Bit6    VRAMに2バイト読み込みを行います         >0180 >0184     >0188 ソフトウェアディレイ  入力:R13=ディレイ数  使用:R11、R12    ソフトウェアデイレイをかけます   >018C オフセットアドレスからスプライトX、Yに変換  入力:R8=パターン・ネーム・テーブル オフセットアドレス  出力:R8上位=スプライトY     R8下位=スプライトX  使用:R8、R11、R13    パターン・ネーム・テーブル オフセットアドレスから  スプライト属性テーブルで使用するX、Yに変換します  システムではカーソル表示に使用   >0190 本体内蔵フォント アドレスの取得  出力:R8  使用:R11    本体内にある文字フォントがあるアドレスを取得(定義はしない)  ゲームで内蔵フォントを使用する場合に使用   CHR$00−$0F 記号   CHR$10−$1F 数字   CHR$20−$3F 英字   CHR$40−$6F カナ       >0190       >0194 VRAM8バイト書き込み  入力:R7=データアドレス     R9=VRAMアドレス  出力:R8=>0000  使用:R8、R10、R11    8バイトのデータをVRAMに書き込みを行います   >0198 VDPの初期化 >019C セルの初期化 >01A0 >01A4 >01A8 >01AC >01B0 >01B4 >01B8 >01BC     >01C0 MAG スプライトの拡大  入力:R12=>0000 拡大しない         >0001 拡大する  使用:R11、R12、R13     >F06F    スプライトの拡大の有無の設定   >01C4 >01C8 >01CC >01D0 >01D4 >01D8 >01DC >01E0       >01E4 X、Y座標からオフセットアドレスに変換  入力:R12=X座標     R13=Y座標  出力:R8=オフセットアドレス     R13=Y座標の左端のオフセットアドレス  使用:R8、R11、R13    座標からパターン・ネーム・テーブル用のオフセットアドレスに変換を行います       >01E8 >01EC >01F0 >01F4     >01F8 十進ワークのクリア  入力:R12=>0000 >F0F0−>F0F2をクリア         >0001 >F0F4−>F0F6をクリア         >0002 >F0F0−>F0F2、>F0F4−>F0F6をクリア  使用:R11、R13    十進数表示用のワークをクリアします   >01FC カラー設定  入力:R9=カラー(VDP R#07データ)  使用:R0、R11、R12、R13    カラー(VDP R#07)の設定       >0200 >0204 >0208 >020C >0210 >0214       >0218 2倍拡大文字の定義  入力:R9=定義するCHR VRAMアドレス     R10=拡大したいCHRデータ  出力:R9=定義するCHR VRAMアドレス+>20(+4キャラクタ)  使用:R0    8×8ドット文字を2倍の16×16ドット文字に変換して  キャラクタ定義にします(4キャラクタ分消費される)   >021C キー入力チェック  入力:R6=チェックするキー (上位のみアスキー)  使用:R11     >F0E9    チェックしたいキー入力があるか調べます  チェックしたいキーが押されれば、コールした次のアドレスに戻る  何も押されなければ、      コールした次のアドレス+2に戻る  また通常キー入力はカナ文字となるので注意が必要    <例>  CLR R6      ;チェックするキーは>00なので何か押されたかとなる  BL  @>021C  ;キー入力チェック  JMP @ANYKEY ;何かキーが押された処理へ  JMP @NOKEY  ;キーが押されていない処理へ   >0220 RTキー入力チェック  使用:R11     >F0E9    RTキー入力があるか調べます  RTキーが押されれば、コールした次のアドレスに戻る  何も押されなければ、 コールした次のアドレス+2に戻る    <例>  BL  @>0220  ;RTキー入力チェック  JMP @RTKEY  ;RTキーが押された処理へ  JMP @NORTKEY;RTキーが押されていない処理へ       >0224 >0228       >022C プレイヤー人数の選択  入力:R10=>0000  出力:>F0E8=>00 1人用           >01 2人用     1または2キーが押された場合      >F0E8に人数−1をセット、コールした次のアドレスに戻る     何も押されていない場合      コールした次のアドレス+2に戻る  使用:R1、R11    ’プレイヤー 1,2 ?’を表示して  1キーか2キーが押されたかチェックを行います  メッセージを表示するので事前にキャラクタ定義する必要があります   >0230 カーソル表示  入力:R4上位=スプライト属性テーブルデータ スプライト#nn     R4下位=スプライト属性テーブルデータ カラー     R5  =スプライト属性テーブル アドレス  使用:R0、R11     タイマー0     >F0E0=カーソル オフセットアドレス     >F0F3 Bit0 1=カーソルオフ、0=カーソルオン    タイマー0を用いてカーソルの点滅を行います  カーソルはスプライトで表示され  F0F3 Bit0=1 入力パラメータR4のカラーで表示(通常は>00の透明)            0 白で表示  カラーの有無で点滅を行います   >0234 VRAMにデータ列の書き込み (メッセージの表示)  入力:R7=表示するデータアドレス     R9=Bit0  長さ        Bit1  長さ        Bit2  長さ        Bit3  長さ        Bit4  長さ        Bit5  VRAMアドレス A5 (残りのA0−A4は0になる)        Bit6  VRAMアドレス A6        Bit7  VRAMアドレス A7        Bit8  VRAMアドレス A8        Bit9  VRAMアドレス A9        Bit10 VRAMアドレス A10        Bit11 VRAMアドレス A11        Bit12 VRAMアドレス A12        Bit13 VRAMアドレス A13        Bit14 VRAMアドレス A14        Bit15 VRAMアドレス A15  使用:R0、R9、R12     >F074=VRAMアドレス    VRAMにデータ列の書き込みを行います  主に画面に文字列の表示で使用   >5000−>7FFF:メモリ 未使用 >8000−>BFFF:メモリ ROMカートリッジまたは拡張RAM  >8000−>8002:ここに>1578を書き込んでチェックしている              書き込みが出来たらF06E Bit5=0              また>5581のチェックもある     >0238 >023C ライン インプット >0240 >0244 >0248 >024C >0250     >C000−>DFFF:メモリ ??? 拡張ROM >E000:I/O VDP データ >E002:I/O VDP レジスタ >E200:I/O SN76489 >E400−>E5FF:/CS GROM1 カードリッジ拡張用 >E600−>E6FF:/EXP0 メニユー行く前に、E600に>55があるとE600にジャンプ >E800−>E8FF:/EXP1 プリンタ >EA00−>EAFF:/EXP2 >EC00−>EC7E:I/O KEY BORAD SELECT  >EC00−>EC0F:キーライン0 12QWASZXの選択 A15は無視、1バイトで1つのキー >EC10−>EC1F:キーライン1 34ERDFCVの選択 押した判断はCRUで読む >EC20−>EC2F:キーライン2 56TYGHBNの選択 >EC30−>EC3F:キーライン3 789UIJKMの選択 >EC40−>EC4F:キーライン4 0−OPL;.,の選択 >EC50−>EC5F:キーライン5   ¥@:ム/ロの選択 >EC60−>EC6F:キーライン6  英記モRT MO の選択 >EC70−>EC7F:キーライン7 左上下右    の選択     >EE00:I/O CMT OUT ’0’ >EE20:I/O CMT OUT ’1’ >EE40:I/O CMT OUT Interrupt On >EE60:I/O CMT OUT Interrupt Off >EE80:I/O CMT OUT Interrupt RESET >EEA0:I/O KB/CMT LS74のF.F リセット >EEC0:拡張用? >EEE0:拡張用 音響カプラ?   >EFEC−>EFED:*初期化R0 >EFEE−>EFEF:*初期化R1 >EFF0−>EFF1:*初期化R2 >EFF2−>EFF3:*初期化R3 >EFF4−>EFF5:*初期化R4 >EFF6−>EFF7:*初期化R5 >EFF8−>EFF9:*初期化R6 >EFFA−>EFFB:*初期化R7 >EFFC−>EFFD:*初期化R8 >EFFE−>EFFF:*初期化R9 >F000−>F001:初期化R10、VRAM >1FF0、>1FF1の内容 >F002−>F003:初期化R11、VRAM >1FF2、>1FF3の内容 >F004−>F005:初期化R12、VRAM >1FF4、>1FF5の内容             >0000=GRAPHIC  背景内             >FFFF=GRAPHICパレット内 >F006−>F007:初期化R13、VRAM >1FF6、>1FF7の内容             パレット内 カーソル オフセットアドレス >F008−>F009:初期化R14、VRAM >1FF8、>1FF9の内容             >0000=GRAPHICパレット 下部に表示             >FFFF=GRAPHICパレット 上部に表示 >F00A−>F00B:初期化R15、VRAM >1FFA、>1FFBの内容 >F00C−>F00D:VRAM >1FFC、>1FFDの内容 >F00E−>F00F:VRAM >1FFE、>1FFFの内容   >F010−>F011:GRAPHIC スペースキーを押した回数 >F012−>F013:GRAPHIC MOD キーを押した回数   >F014−>F015:アニメ4位置オフセット >F016      :アニメ4スプライト#nn >F017      :アニメ4カラー   >F018−>F019:アニメ3位置オフセット >F01A      :アニメ3スプライト#nn >F01B      :アニメ3カラー   >F01C−>F01D:アニメ2位置オフセット >F01E      :アニメ2スプライト#nn >F01F      :アニメ2カラー   >F020−>F021:アニメ1位置オフセット >F022      :アニメ1スプライト#nn >F023      :アニメ1カラー   >F024      :GRAPHIC カーソル方向        >F030      :GRAPHIC パレット内 セル番号 万の桁(アスキーコード未使用) >F031      :GRAPHIC パレット内 セル番号 千の桁(アスキーコード未使用) >F032      :GRAPHIC パレット内 セル番号 百の桁(アスキーコード) >F033      :GRAPHIC パレット内 セル番号 十の桁(アスキーコード) >F034      :GRAPHIC パレット内 セル番号 一の桁(アスキーコード)       >F05A−>F05B:R11退避用 >F05C−>F05D:VRAMスタック インデックス   >F05E   Bit0   Bit1   Bit2   Bit3   Bit4   Bit5 不明 拡張ハード? 1=接続していない?、0=接続している?   Bit6   Bit7   >F060−>F061 レジスタ退避用(R0) >F062−>F063 R6 退避用 >F064−>F065 R7 退避用 >F066−>F067 R8 退避用 >F068−>F069 R9 退避用 >F06A−>F06B R10退避用 >F06C−>F06D R12退避用   >F06E:メニュー モード   Bit0 拡張RAM      1=あり 、0=なし   Bit1   Bit2 メニューモード    1=オン 、0=オフ   Bit3 拡張BASIC    1=あり 、0=なし   Bit4 カードリッジ     1=あり 、0=なし   Bit5 カードリッジ ID  1=>66、0=>55   Bit6 G−BASICモード 1=オン 、0=オフ   Bit7 GRAPHICモード 1=オン 、0=オフ     拡張用はカードリッジ ID>AAで>5000を実行              ID>66で>8002を実行              ID>55で>8002を実行(ゲームカードリッジ)   >F06F:VDP R#01データ+アルファ   Bit0 4/16K   Bit1 BLANK   Bit2 IE   Bit3 不明 通常は0   Bit4 不明 通常は0   Bit5 不明 通常は1(モニター関連?)   Bit6 SIZE   Bit7 MAG   >F070:   Bit0 GRAPHIC、BASIC 1=オン、0=オフ   Bit1 ファイル名入力       1=オン、0=オフ   Bit2 M3   Bit3   Bit4   Bit5   Bit6 VDPアクセス 1=アクセス中 、0=アクセスしていない   Bit7   >F071:   Bit0   Bit1 1=INT4サブルーチンを実行する、0=INT4サブルーチンを実行しない   Bit2   Bit3   Bit4   Bit5   Bit6   Bit7   >F072:   Bit0   Bit1 1=G−BASIC、0=GRAPHIC   Bit2   Bit3   Bit4 1=システム実行 、0=カードリッジ実行   Bit5 1=EMEM実行可、0=EMEM実行不可   Bit6 1=EBAS実行可、0=EBAS実行不可   Bit7     Bit8   Bit9   Bit10   Bit11   Bit12   Bit13   Bit14   Bit15     >F074−>F075:次のVRAMアドレス >F076−>F077:PSG R11 >F078−>F079:PSG R12   >F07A−>F07B:INT4 R0、PSG R13 >F07C−>F07D:INT4 R1、PSG R14 PSGコマンドアドレス >F07E−>F07F:INT4 R2、PSG R15 PSGデータアドレス >F080−>F081:INT4 R3 、タイマ0H >F082−>F083:INT4 R4 、タイマ0L >F084−>F085:INT4 R5 、タイマ1H >F086−>F087:INT4 R6 、タイマ1L >F088−>F089:INT4 R7 、タイマ2H >F08A−>F08B:INT4 R8 、タイマ2L >F08C−>F08D:INT4 R9 、タイマ3H >F08E−>F08F:INT4 R10、タイマ3L >F090−>F091:INT4 R11、タイマ4H >F092−>F093:INT4 R12、タイマ4L >F094−>F095:INT4 R13、タイマ5H >F096−>F097:INT4 R14、タイマ5L >F098−>F099:INT4 R15、タイマ6H   >F09A−>F09B:タイマ6L >F09C−>F09D:タイマ7H >F09E−>F09F:タイマ7L   >F0A0−>F0A1:R0 >F0A2−>F0A3:R1 >F0A4−>F0A5:R2 >F0A6−>F0A7:R3 >F0A8−>F0A9:R4 >F0AA−>F0AB:R5 >F0AC−>F0AD:R6 >F0AE−>F0AF:R7 >F0B0−>F0B1:R8 >F0B2−>F0B3:R9 >F0B4−>F0B5:R10 >F0B6−>F0B7:R11 >F0B8−>F0B9:R12 >F0BA−>F0BB:R13 >F0BC−>F0BD:R14 >F0BE−>F0BF:R15   >F0C0−>F0C1:タイマ割込みR0 G−BAISC >0420、EBAS >05E0   Bit0   Bit1   Bit2   Bit3   Bit4   Bit5   Bit6   Bit7     Bit8   Bit9   Bit10   Bit11   Bit12   Bit13   Bit14   Bit15   >F0C2−>F0C3:タイマ割込みR1 キーデータ1、0 >F0C4−>F0C5:タイマ割込みR2 キーデータ3、2 >F0C6−>F0C7:タイマ割込みR3 キーデータ5、4 >F0C8−>F0C9:タイマ割込みR4 キーデータ7、6 >F0CA−>F0CB:タイマ割込みR5 PSGトラック0、1コマンド >F0CC−>F0CD:タイマ割込みR6 PSGトラック2コマンド >F0CE−>F0CF:タイマ割込みR7 >F0D0−>F0D1:タイマ割込みR8 >F0D2−>F0D3:タイマ割込みR9 >F0D4−>F0D5:タイマ割込みR10 >F0D6−>F0D7:タイマ割込みR11 カウンタ H >F0D8−>F0D9:タイマ割込みR12 カウンタ L 割込み毎で+1、>2EE0でカウンタ H+1 >F0DA−>F0DB:タイマ割込みR13 >F0DC−>F0DD:タイマ割込みR14 >F0DE−>F0DF:タイマ割込みR15   >F0E0−>F0E1:カーソル位置オフセットアドレス   >F0E2−>F0E3:PSGトラック0データアドレス >F0E4−>F0E5:PSGトラック1データアドレス >F0E6−>F0E7:PSGトラック2データアドレス   >F0E8:ゲームプレイ人数 >00=一人用、>01=二人用 >F0E9:キーデータ変換 アスキーコード   >F0EA:コントローラ1   Bit0 1=入力あり、0=入力なし   Bit1 −   Bit2 SL 1=オン、0=オフ   Bit3 SR 1=オン、0=オフ   Bit4 下  1=オン、0=オフ   Bit5 左  1=オン、0=オフ   Bit6 上  1=オン、0=オフ   Bit7 右  1=オン、0=オフ >F0EB:コントローラ2   Bit0 1=入力あり、0=入力なし   Bit1 −   Bit2 SL 1=オン、0=オフ   Bit3 SR 1=オン、0=オフ   Bit4 下  1=オン、0=オフ   Bit5 左  1=オン、0=オフ   Bit6 上  1=オン、0=オフ   Bit7 右  1=オン、0=オフ   >F0EC−>F0ED:汎用 >F0EE−>F0EF:十進数表示用VRAMアドレス   >F0F0:十進数A  千、百の桁 >F0F1:十進数A  十、一の桁 >F0F2:十進数A 十万、万の桁   >F0F3:   Bit0 1=カーソル オフ、0=カーソル オン   Bit1 1=キーが押された、0=キーが離された   Bit2   Bit3   Bit4   Bit5 1=カードリッジまたはシステムを実行  、0=実行していない   Bit6 1=タイマ割込みサブルーチンを実行しない、0=タイマ割込みサブルーチンを実行する   Bit7 1=拡張ハードでキー入力可       、0=拡張ハードでキー入力不可   >F0F4:十進数B  千、百の桁 >F0F5:十進数B  十、一の桁 >F0F6:十進数B 十万、万の桁   >F0F7:キー入力モード   Bit0   Bit1   Bit2   Bit3   Bit4   Bit5 1=記号モード オン、0=記号モード オフ   Bit6 1=英数モード オン、0=英数モード オフ   Bit7 1=カナモード オン、0=カナモード オフ   >F0F8:十進数表示ワーク  千、百の桁 >F0F9:十進数表示ワーク  十、一の桁 >F0FA:十進数表示ワーク 十万、万の桁       >FFFA−>FFFB:CPU内蔵タイマ >FFFC−>FFFF:CPU NMIベクトル     >8000に>55があれば(ゲームROMの先頭) メニューでゲームカートリッジの選択が出来る様になります 選択すると>8002へジャンプします >8000に>66の場合 メニューでゲームカートリッジの選択が出来る様になります 選択すると>8002へジャンプします >8000に>AAの場合 >F06EのBit3=1にして>5000にジャンプします     起動時に>8000に書き込みが出来るかチェックを行っているが 通常のシステムが拡張RAMにも対応可なのかは不明 VRAM >0000−>07FF パターンジェネレータトップ >0800−>0FFF パターンジェネレータミドル >1000−>17FF パターンジェネレータロウ >1800−>187F スプライトパターン >1880−>1883 ???カーソルワーク >1C00−>1CFF パターン・ネーム・テーブル トップ >1D00−>1DFF パターン・ネーム・テーブル ミドル >1E00−>1FFF パターン・ネーム・テーブル ロウ >2000−>27FF カラー・テーブル トップ >2800−>2FFF カラー・テーブル ミドル >3000−>37FF カラー・テーブル ロウ >3800−>3F7F GRAPHIC BGトップまたはロウ保存用(サンプルカラー、パレット)             G−BASIC プログラム領域 >3F9C−>3FBB キーバッファ >3FBC       >0D キーバッファエンドマーク?   >3FDD−>3FEA レジスタ保存用 R0、R6−R10、R12 >3FF9−>3FFE レジスタ保存用 R13−R15   Home へ戻る