F-BASIC詳細編(その2:デモ画面集)


本ページの各画面キャプチャについては、XM7 V3.4を使用させていただきました。
PI.さん、たけがみりうさん、いつも感謝しております。
(XM7がなかったらこんなページを作ろうという気にはなりませんでした。^^;)
お急ぎの方へ。
FM-8 デモ(前期、F-BASIC V1.0 の頃)FM-8 デモ(後期、F-BASIC V2.0 の頃)
FM-7 デモ(F-BASIC V3.0)FM-NEW7 デモ(F-BASIC V3.0 L2.0)
FM-77 デモ(F-BASIC V3.0 L2.0)FM-77L2 デモ(F-BASIC V3.0 L2.0)
FM音源カードデモ(付属テープ)音声合成カードデモ(F-BASIC V3.0 L2.0)マウスセットデモ(F-BASIC V3.0 L2.0)オマケコーナー

2. F-BASIC 詳細編

2.3 F-BASIC V1.0/2.0/3.0のデモプログラム

ここでは、FM-8/7/NEW7シリーズ本体付属テープのデモ、 DISK版F-BASIC V1.0/V2.0/V3.0のシステムディスクのデモ、 およびFM音源カード付属テープのデモについて紹介しています。
(各画像をクリックするとフルサイズの画像になります。)

2.3.1 FM-8 デモ(前期、F-BASIC V1.0 の頃)

fbdemo8tape-1
fbdemo1010-2
fbdemo1010-3
fbdemo1010-4
fbdemo1010-5
fbdemo8tape-2
fbdemo8tape-4
fbdemo8tape-5
fbdemo1010-1

補足:FM77AVシリーズ、FM-11シリーズで実行した場合の誤動作
 ・上記の DEMO は、F-BASIC V3.3/V3.4/V4.0/V5.0 で実行した場合、そのままではPAINTが乱れます。
  原因は2つあり、それぞれ別な対処が必要です。

fbdemo1010-7
fbdemo1010-6

それぞれの対策例は次の通りです。

対策1A (FM77AVシリーズ、FM-11シリーズ専用修正)
 20 CLS:COLOR 2
 40 COLOR 4
   ↓↓
 20 CLS:COLOR ,,2
 40 COLOR ,,4

もしくは
対策1B (FMシリーズ共通修正)
 30 CONNECT(0,16)-(152,16)- ... 途中省略 ... -(0,16)
 50 CONNECT(168,16)-(200,16)- ... 途中省略 ... -(168,16)
   ↓↓
 30 CONNECT(0,16)-(152,16)- ... 途中省略 ... -(0,16),2
 50 CONNECT(168,16)-(200,16)- ... 途中省略 ... -(168,16),4

対策2 (FMシリーズ共通修正)
 220 LINE(489,70)-(581,70),PSET,6
   ↓↓
 220 LINE(486,70)-(581,70),PSET,6


2.3.2 FM-8 デモ(後期、F-BASIC V2.0 の頃)
FM-7 デモ(F-BASIC V3.0)FM-NEW7 デモ(F-BASIC V3.0 L2.0)
FM-77 デモ(F-BASIC V3.0 L2.0)FM-77L2 デモ(F-BASIC V3.0 L2.0)
FM音源カードデモ(付属テープ)音声合成カードデモ(F-BASIC V3.0 L2.0)マウスセットデモ(F-BASIC V3.0 L2.0)

fbdemo2010-1
fbdemo2010-2
fbdemo2010-3
fbdemo2010-4
fbdemo2010-5
fbdemo2010-6
fbdemo2010-7
fbdemo2010-8
fbdemo2010-9
fbdemo2010-A
fbdemo2010-B
fbdemo2010-C

補足:バグと、FM77AVシリーズ、FM-11シリーズで実行した場合の誤動作
・バグ:上記の DEMO は、午前9時6分8秒以降に実行すると、途中でエラーで止まります。
 具体的には、RANDOMIZE TIME を実行しようとして、Overflow になります。
・FM77AV/FM-11:上記の DEMO を F-BASIC V3.3/V3.4/V4.0/V5.0 で実行した場合、PAINTが乱れたり、微妙に違った動きをします。

それぞれ別な対処が必要です。

fbdemo2010-D
fbdemo2010-E

それぞれの対策例は次の通りです。

バグ対策 (FMシリーズ共通修正)
 6340 GOSUB 6440:RANDOMIZE TIME
   ↓↓
 6340 GOSUB 6440:RANDOMIZE TIME/3

FM77AV/FM-11シリーズ対応 (FM77AVシリーズ、FM-11シリーズ専用修正)
 90 COLOR 7
 1640 DATA -3,50,12,40, ... 途中省略 ... ,-4,45,20,-5
   ↓↓
 90 COLOR ,,7
 1640 DATA -3,50,12,40, ... 途中省略 ... ,-4,43,20,58,20,-5


2.3.3 FM-7 デモ(F-BASIC V3.0)
FM-NEW7 デモ(F-BASIC V3.0 L2.0)
FM-77 デモ(F-BASIC V3.0 L2.0)FM-77L2 デモ(F-BASIC V3.0 L2.0)
FM音源カードデモ(付属テープ)音声合成カードデモ(F-BASIC V3.0 L2.0)マウスセットデモ(F-BASIC V3.0 L2.0)
F-BASIC V3.0のデモは機種毎に作られており、なんと4種類もあります。

fbdemo3010-0
fbdemo3010-1
fbdemo3010-2
fbdemo3010-3
fbdemo3010-4
fbdemo3010-5
fbdemo3010-6
fbdemo3010-7
fbdemo3010-8
fbdemo3010-9
fbdemo3010-A
fbdemo3010-B
fbdemo3010-C
fbdemo3010-D
fbdemo3010-E

FM-7デモの解析結果です。

FM-7 DEMO (F-BASIC V3.0 L1.0 5インチ版、FM-7付属TAPE)

  RUN"DEMO1" または RUN"DEMO2"

  TAPE版と共通になっており、容量の制限から2本組に分割している。
  裏RAMは使用せず、プログラムとデータをオンメモリにしてサイクリック
  に実行している。
  楽曲は少なく、3曲を使いまわしている。

  # 音楽シーケンサは、I/O別冊 FM-7/8活用研究 P.36 掲載の サウンド
  # エディタ V2.0 の一部(「シーケンサ」)が使われています。

DEMO1

  HORIZONデモ   元祖バージョン
  WAVEデモ
  FIGHTERデモ
  CROSSデモ
  BASE BALLデモ
  GRAPHデモ
    の順に実施。(サイクリック)

DEMO2

  FM-7ロゴデモ
  PALLETデモ
  自動車デモ
  GRAPHデモ2
  WAVEデモ2
  SHOOTINGデモ
    の順に実施。(サイクリック)

1. ファイル構成、ロードアドレス

DEMO1

  DEMO1    (BASIC)      デモプログラム本体
  DEMOSUB  $5100-$678F  (DEMO2と共通、TAPE版のファイル名はSUB)

DEMO2

  DEMO2    (BASIC)      ローダー
  DEMO21   (BASIC)      デモプログラム本体
  DEMOSUB  $5100-$678F  (DEMO1と共通、TAPE版のファイル名はSUB)

2. メモリマップ

  DEMO1/DEMO2共通

     0 -+---------------------------------------+
        |F-BASICワークエリア                    |
       -+---------------------------------------+
        |DEMO1/DEMO2/DEMO21    (BASIC)          |
       -+---------------------------------------+
        |変数領域                               |
        |空きエリア(ほとんどなし)               |
        |スタック領域                           |
        |文字領域                               |
  5100 -+---------------------------------------+
        |                                       |
        |               DEMOSUB (SUB)           |
  5430 -+-----------+                           |
        |シーケンサ |                           |
  5A70 -+-----------+                           |
        |音楽データ |                           |
  678F -+-----------+---------------------------+
        |                                       |
  6800 -+---------------------------------------+
        |DEMO1プログラム中で使用(FIRQベクタ設定)|
  680C -+---------------------------------------+
        |                                       |
  8000 -+---------------------------------------+
        |                                       |
        |            F-BASIC ROM                |
        |                                       |
  EC05 -+PLAYコマンド初期化処理                 |
        |                                       |
  FBFF -+---------------------------------------+

3. マシン語プログラム仕様

DEMO1/DEMO21

  DEMOSUB (SUB)
    $5100 ブロックコピー/ムーブ
    $5370 高速PALLET切り替え付き音楽演奏開始
    $5372 高速PALLET切り替え付き音楽演奏終了
    $5430 音楽シーケンサ (FM-7/8活用研究掲載 サウンドエディタ V2.0 の一部)
          $5430 音楽演奏開始
          $5432 音楽演奏終了
    $5A70 音楽データ
          $5A70 バッハ インベンションとシンフォニア  シンフォニア第1番ハ長調
          $6110 WAVE/WAVE2で使われている曲(楽曲名不明)
          $61B0 バッハ インベンションとシンフォニア  インベンション第1番ハ長調

  音楽演奏関係はユーザー関数(USR0, USR1, USR2, USR3)に定義され呼び出される。
    DEF USR0=&H5370 (高速PALLET切り替え付き音楽演奏開始)
    DEF USR1=&H5372 (高速PALLET切り替え付き音楽演奏終了)
    DEF USR2=&H5430 (音楽演奏開始)
    DEF USR3=&H5432 (音楽演奏終了)
  USR0で開始したらUSR1で終了、USR2で開始したらUSR3で終了、と対応つける必要がある。
  楽曲は引数で切り替える。(USR0とUSR2で同じ楽曲を参照)
    A=USR0(0)  バッハ インベンションとシンフォニア  シンフォニア第1番ハ長調
    A=USR2(1)  WAVE/WAVE2で使われている曲(楽曲名不明)
    A=USR2(2)  バッハ インベンションとシンフォニア  インベンション第1番ハ長調

2.3.4 FM-NEW7 デモ(F-BASIC V3.0 L2.0)
FM-NEW7 デモ(F-BASIC V3.0 L2.0)
FM-77 デモ(F-BASIC V3.0 L2.0)FM-77L2 デモ(F-BASIC V3.0 L2.0)

fbdemo3020n7-0
fbdemo3020n7-1
fbdemo3020n7-2
fbdemo3020n7-3
fbdemo3020n7-4
fbdemo3020n7-5
fbdemo3020n7-6
fbdemo3020n7-7
fbdemo3020n7-8

FM-NEW7デモの解析結果です。

FM-NEW7 DEMO (F-BASIC V3.0 L2.0 5インチ版、3.5インチ市販版、NEW7付属TAPE)

  RUN"DEMO-1" または RUN"DEMO-2"

  TAPE版と共通になっており、容量の制限から2本組に分割している。
  各1回のロードで済ませるため、裏RAMを駆使してプログラムとデータを
  オンメモリにしてサイクリックに実行している。

DEMO-1

  HORIZONデモ
  螺旋デモ
  JETデモ
  楽譜デモ

  FM-77以降の機種では低速モードにしないと、2回目以降の螺旋デモの音が汚くなる。

DEMO-2

  LINEデモ
  ワープロデモ
  FLOWERデモの順に実施。(サイクリック)

  FM-77以降の機種では低速モードにしないと、2回目以降のLINEデモの音が汚くなる。

1. ファイル構成、ロードアドレス

DEMO-1

  DEMO-1   (BASIC)      ローダー
  JET      $2000-$67FF
  NEW7.LOC $4D00-$5EFF  Kコンパイラランタイムを含む
  LOC.O    $4100-$413F
  DEMOSUB  $4000-$57FF  裏RAMコール、音楽シーケンサ+データ
  GROBE.M  $5800-$64FF  音楽シーケンサ+データ

  MAIN1    (BASIC)      メインプログラム

  # Kコンパイラ・ランタイムルーチンが使用されているのは意外でした。
  # しかしよく考えてみればデモプログラムのような物には向いている
  # のいかもしれませんね。
  # バージョンは V3.6 で、IODOS9 で使われてるのと同じ、$CD00〜$CFFF
  # にリロケートされたものが使われています。

  # 音楽シーケンサは、I/O別冊 FM-7/11活用研究 P.158 掲載の MUSIC
  # MAKER の一部(「シーケンサ」)が使われています。音楽データは、同
  # 記事掲載の「ジェネレータ」で生成されたもの、ということですね。

DEMO-2

  DEMO-2   (BASIC)      ローダー
  FLOWER   $1700-$5EFF  描画、音楽シーケンサ+データ
  LOC2.O   $6F00-$6FFF
  KDATA_M  $2000-$407F
  REL.OBJ  $5000-$505D
  LINEDEMO $3D00-$5BFF  描画、音楽シーケンサ+データ
  WPDEMO_M (BASIC)      メインプログラム

2. メモリマップ

  DEMO-1
                 ローディング中       →         実行中
     0 -+--------------------------------------------------+
        |F-BASICワークエリア                               |
       -+-----------------------------+-------+------------+
        |DEMO-1  (BASIC)              |       |            |
       -+-----------------------------+       |MAIN1       |
        |変数領域                     |       |(BASIC)     |
        |スタック領域                 |       |            |
        |文字領域                     |      -+------------+
  2000 -+----------+-------+----------+       |変数領域    |
        |          |       |          |       |スタック    |
        |          |       |          |       |文字領域    |
        |          |       |          | 4000 -+------------+
        |          | 4100 -+----------+       |DEMOSUB     |
        |          |       |LOC.O     | 411B -+CALL裏$D000 |
        |          |       |          | 412C -+CALL裏$C500 |
        |          | 413F -+----------+       |            |
        |JET       |       |          | 4180 -+音楽演奏開始|
        |          |       |          | 4182 -+音楽演奏終了|
        |          |       |          | 4200 -+----------+ |
        |          |       |          |       |シーケンサ| |
        |          |       |          | 4300 -+----------+ |
        |          |       |          |       |音楽データ| |
        |          | 4D00 -+----------+       |          | |
        |          |       |NEW7.LOC  | 5800 -+----------+-+
        |          |       |          |       |シーケンサ| |
        |          |       |          | 5900 -+----------+ |
        |          |       |          |       |音楽データ| |
        |          | 5EFF -+----------+       |          | |
  6480 -+Entry     |       |          |       |          | |
        |          |       |          | 64A6 -+----------+ |
        |          |       |          |       |     GROBE.M|
        |          |       |          | 64FF -+------------+
  67FF -+----------+       |          |       |            |
        |          |       |          |       |            |
        |                                                  |
  8000 -+------------------------+ +-----------------------+
        |JET(転送後)             | |                       |
  C500 -+Entry                   | |                       |
  C7F0 -+------------------------+ |                       |
        |                        | |                       |
  CD00 -+---------------------+--+ |      F-BASIC ROM      |
        |Kコンパイラランタイム|  | |                       |
  D000 -+---------------------+  + |                       |
        |NEW7.LOC(転送後)        | |                       |
  DEFF -+------------------------+ |                       |
        |                        | |                       |
  FBFF -+------------------------+-+-----------------------+ 
                 裏RAM                    F-BASIC ROM

  DEMO-2
                 ローディング中       →         実行中
     0 -+----------------------------------------------------+
        |F-BASICワークエリア                                 |
       -+-------------------------------+-------+------------+
        |DEMO-2  (BASIC)                |       |            |
       -+-------------------------------+       |WPDEMO_M    |
        |変数領域                       |       |(BASIC)     |
        |スタック領域                   |       |            |
        |文字領域                       |      -+------------+
        |            |       |          |       |変数領域    |
  1700 -+------------+       |          |       |スタック    |
        |FLOWER1     |       |          |       |文字領域    |
  1800 -+------------+       |          |       |            |
        |FLOWER2     | 2000 -+----------+       |            |
        |            |       |          |       |            |
        |            |       |KDATA_M   | 3D00 -+------------+
        |            |       |          |       |            |
        |            | 407F -+----------+       |LINEDEMO    |
  4200 -+----------+ |       |          | 4200 -+----------+ |
        |シーケンサ| |       |          |       |シーケンサ| |
  4300 -+----------+ |       |          | 4300 -+----------+ |
        |音楽データ| |       |          |       |音楽データ| |
        |          | | 5000 -+----------+       |          | |
        |          | | 5007 -+REL.OBJ   |       |          | |
        |          | | 505D -+----------+       |          | |
        |          | |       |          |       |          | |
        |          | |       |          | 5BFF -+----------+-+
  5EFF -+----------+-+       |          |       |            |
        |            |       |          |       |            |
        |                                                    |
  6F00 -+----------------------------------------------------+
        |漢字PUT                                             |
  6F80 -+FLOWER2転送           LOC2.O                        |
  6F82 -+FLOWER2呼び出し                                     |
  6FFF -+----------------------------------------------------+
        |                                                    |
  8000 -+-----------------------+ +--------------------------+
        |KDATA_M(転送後)        | |                          |
  A07F -+-----------------------+ |                          |
        |                       | |                          |
  B000 -+-----------------------+ |        F-BASIC ROM       |
        |FLOWER2(転送後)        | |                          |
  DA00 -+----------+            | |                          |
        |シーケンサ|            | |                          |
  DB00 -+----------+            | |                          |
        |音楽データ|            | |                          |
  F6DF -+----------+------------+ |                          |
        |                       | |                          |
  FBFF -+-----------------------+-+--------------------------+ 
                 裏RAM                     F-BASIC ROM

3. マシン語プログラム仕様

DEMO-1

  JET
    $6480 自身を$8000〜$C7F0に転送。
    $C500 (転送後の)Entryアドレス。

  LOC.O
    $4100 $4D00〜$6FFFを裏RAMの$CD00〜$EFFFに転送。
    $411B 裏RAMの$D000をコール (未使用)
    $412C 裏RAMの$E000をコール (未使用)

  DEMOSUB
    $4000 スムーズスクロール(2LINE分)
    $4100 $4D00〜$6FFFを裏RAMの$CD00〜$EFFFに転送。(未使用)
    $411B 裏RAMの$D000をコール (FM-NEW7)
    $412C 裏RAMの$C500をコール (JET)
    $4180 音楽演奏開始
    $4182 音楽演奏終了
    $4200 音楽シーケンサ (FM-7/11活用研究掲載 MUSIC MAKER の一部)
            $4200 音楽演奏開始(音楽データ=$DB00)
            $4202 音楽演奏開始(音楽データ=Xレジスタ)
            $4204 音楽演奏停止
    $4300 音楽データ(モーツァルト ピアノソナタ 第10番 ハ長調 K.330 第1楽章 ) 
            $FFFFが終了コード

  GROBE.M
    $5800 音楽シーケンサ (FM-7/11活用研究掲載 MUSIC MAKER の一部)
            $5800 音楽演奏開始(音楽データ=$DB00)
            $5802 音楽演奏開始(音楽データ=Xレジスタ)
            $5804 音楽演奏停止
    $5900 音楽データ(チャイコフスキー 組曲「くるみ割り人形」<中国の踊り> ) 
            $FFFFが終了コード

DEMO-2

  LOC2.O
    $6F00 裏RAMの指定アドレスから$20のサイズ分だけ表RAMに転送後、
          PUT BLOCK を行う。
          WPDEMO_M の中で漢字表示に使用。以下のパラメタを設定。
            $6F02  裏RAMのアドレス
            $6F04  BIOS FCB (PUT BLOCK)
            $6F0A  SUB COMMAND (PUT BLOCK)
            $6F0D- X1,Y1,X2,Y2 を格納
            $6F15- COLOR, FUNCTION を格納
    $6F80 $1800-$5EDF(FLOWER2) を、裏RAMの $B000- に転送。
          DEMO-2 から LOADM"LOC2.O",,R で実行されている。
    $6F82 裏RAMの$B000 をコール。
          WPDEMO_M の最後で FLOWER呼び出しの際使用されている。

  REL.OBJ
    $5007 転送実行。下記を事前に設定する。
            $5000 転送元開始アドレス
            $5002 転送元最終アドレス
            $5004 転送先アドレス
            $5006 エラーフラグ (最終アドレス<開始アドレス の時 $FF)
          ($5000)<($5004)の場合に順転送(先頭から末尾へ)、
          ($5000)>($5004)の場合に逆順転送(末尾から先頭へ)をするように
          なっているが、この条件判断はあまり意味がない。
          (領域が重なっている場合が考慮されていない。)

  FLOWER2(転送後) 
    $B000 FLOWERデモ本体
    $DA00 音楽シーケンサ (FM-7/11活用研究掲載 MUSIC MAKER の一部)
            $DA00 音楽演奏開始(音楽データ=$DB00)
            $DA02 音楽演奏開始(音楽データ=Xレジスタ)
            $DA04 音楽演奏停止
    $DB00 音楽データ(ショパン ワルツ第6番「子犬のワルツ」 ) 
            $FFFFが終了コード

  LINEDEMO
    $3D00 LINEDEMO本体
    $4200 音楽シーケンサ (FM-7/11活用研究掲載 MUSIC MAKER の一部)
            $4200 音楽演奏開始(音楽データ=$4300)
            $4202 音楽演奏開始(音楽データ=Xレジスタ)
            $4204 音楽演奏停止
    $4300 音楽データ(チャイコフスキー 組曲「くるみ割り人形」<小序曲>) 
            $FFFFが終了コード

4. 謎

   FLOWER1 の部分は何のためにあるのか?
fbdemo3020n7-9
fbdemo3020n7-A
fbdemo3020n7-B

I/O別冊のPROGRAM CONTEST作品集1に、上記の「TUBULAR SPACE for FM-NEW7」の元となった オリジナル版の「TUBULAR SPACE」が掲載されてましたので一緒に紹介しておきます。

tubular_space0
tubular_space1
tubular_space3

1. ファイル構成、ロードアドレス

  GAME / TUBE      (BASIC)      メインプログラム
  GAMESUB / TUBE2  $2000-$3E5F  機械語プログラム

2. メモリマップ

     0 -+------------------------+
        |F-BASICワークエリア     |
       -+------------------------+
        |GAME / TUBE (BASIC)     |
       -+------------------------+
        |変数領域                |
        |スタック領域            |
        |文字領域                |
  2000 -+------------------------+
        |GAMESUB / TUBE2         |
        |                        |
  3E60 -+------------------------+
        |                        |
        |                        |
  8000 -+------------------------+
        |                        |
        |  F-BASIC ROM           |
        |                        |
  FBFF -+------------------------+

2.3.5 FM-77 デモ(F-BASIC V3.0 L2.0)
FM-77L2 デモ(F-BASIC V3.0 L2.0)
FM音源カードデモ(付属テープ)音声合成カードデモ(F-BASIC V3.0 L2.0)マウスセットデモ(F-BASIC V3.0 L2.0)

fbdemo302077-0
fbdemo302077-1A
fbdemo302077-1B
fbdemo302077-1C
fbdemo302077-1D
fbdemo302077-1E
fbdemo302077-1F
fbdemo302077-2A
fbdemo302077-2B
fbdemo302077-3
fbdemo302077-4
fbdemo302077-5A
fbdemo302077-5B
fbdemo302077-5C
fbdemo302077-5D
fbdemo302077-6A
fbdemo302077-6B
fbdemo302077-6C
fbdemo302077-6D
fbdemo302077-6E
fbdemo302077-6F

FM-77デモの解析結果です。

FM-77 DEMO (F-BASIC V3.0 L2.0 3.5インチ版 FM-77付属)

  RUN"DEMO"

  6本のプログラムに分割されているが、自動的に実行される。

    FM-77ロゴデモ
    DELPHIS
    鶴
    地球
    OS-9
    SNOW
      の順に実施。(サイクリック)
 
1. ファイル構成、ロードアドレス(SAVE時)

  DEMO     (BASIC)      タイトル画面

  DEMO1    (BASIC)      FM-77ロゴデモ
  DEMO1.M1 $4D00-$53D9  爆発(Kコンパイラ・ランタイム含む)、音楽シーケンサ+データ
  DEMO1.M2 $6000-$6783  キラキラ+効果音

  DEMO2    (BASIC)      DELPHIS
  DEMO2.M1 $3F00-$6821
  DEMO2.M2 $1600-$4D23

  DEMO3    (BASIC)      鶴
  DEMO3.M  $3000-$6E6B  描画、音楽シーケンサ+データ

  DEMO4    (BASIC)      地球
  DEMO4.M1 $3D00-$4BFF  音楽シーケンサ+データ
  DEMO4.M2 $4D00-$61FF  描画+アニメーション(Kコンパイラ・ランタイム含む)

  DEMO5    (BASIC)      OS-9

  DEMO6    (BASIC)      SNOW
  DEMO6.M  $3D00-$535F  描画、音楽シーケンサ+データ

  # Kコンパイラ・ランタイムルーチンが使用されているのは意外でした。
  # しかしよく考えてみればデモプログラムのような物には向いている
  # のいかもしれませんね。
  # バージョンは V3.6 のようです。

2. メモリマップ

  DEMO1 (FM-77ロゴデモ)

     0 -+-------------------+
        |F-BASICワークエリア|
       -+-------------------+
        |DEMO1 (BASIC)      |
       -+-------------------+
        |変数領域           |
        |スタック領域       |
        |文字領域           |
  4200 -+-------------------+
        |                   |
  4D00 -+-----------+-------+
        |Kランタイム|       |
  5000 -+-----------+       |
        |           DEMO1.M1|
  5200 -+-----------+       |
        |シーケンサ |       |
  5300 -+-----------+       |
        |音楽データ |       |
  53D9 -+-----------+-------+
        |                   |
  6000 -+-------------------+
        |DEMO1.M2           |
        |                   |
  6783 -+-------------------+
        |                   |
  71D5 -+-------------------+
        |  DISK-BASIC       |
  8000 -+-------------------+
        |                   |
        |  F-BASIC ROM      |
        |                   |
  FBFF -+-------------------+

  DEMO2 (DELPHIS)

          ローディング中        →           実行中
     0 -+-----------------------------------------------+
        |F-BASICワークエリア                            |
       -+-----------------------------------------------+
        |DEMO2    (BASIC)                               |
       -+-----------------------------------------------+
        |変数領域                                       |
        |スタック領域                                   |
        |文字領域                                       |
  1500 -+-----------------------------------------------+
        |                 |           |                 |
        |                 |     1600 -+-----------------+
        |                 |           |                 |
  3D00 -+-----------------+           |DEMO2.M2         |
        |                 |           |                 |
        |DEMO2.M1         |     4D23 -+-----------------+
        |                 |           |                 |
  6821 -+-----------------+           |                 |
        |                 |           |                 |
  71D5 -+-----------------------------------------------+
        |                   DISK-BASIC                  |
  8000 -+----------------------+-+----------------------+
        |                      | |                      |
  9F00 -+----------------------+ |                      |
        |DEMO2.M1(転送後)      | |     F-BASIC ROM      |
  C7FF -+----------------------+ |                      |
        |                      | |                      |
  FBFF -+----------------------+-+----------------------+ 
                 裏RAM                 F-BASIC ROM

  DEMO3 (鶴)

     0 -+-------------------+
        |F-BASICワークエリア|
       -+-------------------+
        |DEMO3 (BASIC)      |
       -+-------------------+
        |変数領域           |
        |スタック領域       |
        |文字領域           |
  3000 -+-------------------+
        |DEMO3.M            |
        |                   |
  6300 -+-----------+       |
        |シーケンサ |       |
  6400 -+-----------+       |
        |音楽データ |       |
  6E00 -+-----------+       |
        |VRAM OFFSET|       |
  6E6C -+-----------+-------+
        |                   |
  71D5 -+-------------------+
        |  DISK-BASIC       |
  8000 -+-------------------+
        |                   |
        |  F-BASIC ROM      |
        |                   |
  FBFF -+-------------------+

  DEMO4 (地球)

     0 -+-------------------+
        |F-BASICワークエリア|
       -+-------------------+
        |DEMO4 (BASIC)      |
       -+-------------------+
        |変数領域           |
        |スタック領域       |
        |文字領域           |
  1500 -+-------------------+
        |DEMO4.M2 へのパッチ| BASICプログラム中でパッチを当てている。
  150F -+-------------------+
        |                   |
  3300 -+----------+--------+
        |シーケンサ|        | LOADM時にOFFSETロードされる。
  3400 -+----------+DEMO4.M1|
        |音楽データ|        |
  41FF -+----------+--------+
        |                   |
  4D00 -+-----------+-------+
        |Kランタイム|       |
  5000 -+-----------+       |
        |DEMO4.M2           |
  61FF -+-------------------+
        |                   |
  71D5 -+-------------------+
        |  DISK-BASIC       |
  8000 -+-------------------+
        |                   |
        |  F-BASIC ROM      |
        |                   |
  FBFF -+-------------------+

  DEMO5 (OS-9)

     0 -+-------------------+
        |F-BASICワークエリア|
       -+-------------------+
        |DEMO5 (BASIC)      |
       -+-------------------+
        |変数領域           |
        |                   |
  6809 -+-------------------+
        |カーソル表示       |
  683B -+-------------------+
        |スタック領域       |
        |文字領域           |
  6FFF -+-------------------+ ← CLEAR の宣言はここ
        |                   |
  71D5 -+-------------------+
        |  DISK-BASIC       |
  8000 -+-------------------+
        |                   |
        |  F-BASIC ROM      |
        |                   |
  FBFF -+-------------------+

  DEMO6 (SNOW)

     0 -+-------------------+
        |F-BASICワークエリア|
       -+-------------------+
        |DEMO6 (BASIC)      |
       -+-------------------+
        |変数領域           |
        |スタック領域       |
        |文字領域           |
  3000 -+-------------------+
        |DEMO6.M            |
        |                   |
  4200 -+-----------+       |
        |シーケンサ |       |
  4300 -+-----------+       |
        |音楽データ |       |
  5360 -+-----------+-------+
        |                   |
  71D5 -+-------------------+
        |  DISK-BASIC       |
  8000 -+-------------------+
        |                   |
        |  F-BASIC ROM      |
        |                   |
  FBFF -+-------------------+

3. マシン語プログラム仕様

  DEMO1.M1
    $4D00 Kランタイム
    $5000 FM-77爆発表示+効果音
    $5200 音楽シーケンサ (FM-7/11活用研究掲載 MUSIC MAKER の一部)
            $5200 音楽演奏開始(音楽データ=$4300)
            $5202 音楽演奏開始(音楽データ=Xレジスタ)
            $5204 音楽演奏停止
    $5300 音楽データ(ワーグナー「ニュルンベルクのマイスタージンガー」前奏曲)
            $FFFFが終了コード

  DEMO1.M2
    $6000  キラキラ+効果音

  DEMO3.M
    $3000 鶴描画
    $6300 音楽シーケンサ (FM-7/11活用研究掲載 MUSIC MAKER の一部)
            $6300 音楽演奏開始(音楽データ=$4300)
            $6302 音楽演奏開始(音楽データ=Xレジスタ)
            $6304 音楽演奏停止
    $6400 音楽データ(チャイコフスキー 組曲「くるみ割り人形」<花のワルツ> 前半) 
            $FFFFが終了コード
    $6E00 VRAM OFFSET
            $6E00 VRAM OFFSET値(2byte)
            $6E02 VRAM OFFSET実行

  DEMO4.M1 (オフセットロード後)
    $3300 音楽シーケンサ (FM-7/11活用研究掲載 MUSIC MAKER の一部)
            $3300 音楽演奏開始(音楽データ=$4300)
            $3302 音楽演奏開始(音楽データ=Xレジスタ)
            $3304 音楽演奏停止
    $3400 音楽データ(チャイコフスキー 組曲「くるみ割り人形」<花のワルツ> 後半) 
            $FFFFが終了コード

  DEMO4.M2
    $4D00 Kランタイム
    $5000 地球デモ本体

  DEMO5 内プログラム
    $6809 カーソル表示。演出のため、BASICプログラム実行中にもカーソルを点滅
     させています。BASICで表示を行うとすぐに解除されてしまうので、CLS文、
     PRINT文、LOCATE文の直後に置かれています。

  CLEAR 宣言の内側に格納されているお行儀の悪いプログラムです。
  コードレビューしてなかったのでしょうか。

  DEMO6.M
    $3000 SNOWデモ本体
    $4200 音楽シーケンサ (FM-7/11活用研究掲載 MUSIC MAKER の一部)
            $4200 音楽演奏開始(音楽データ=$4300)
            $4202 音楽演奏開始(音楽データ=Xレジスタ)
            $4204 音楽演奏停止
    $4300 音楽データ(ショパン ワルツ第6番「子犬のワルツ」) 
            $FFFFが終了コード

2.3.6 FM-77L2 デモ(F-BASIC V3.0 L2.0)
FM音源カードデモ(付属テープ)音声合成カードデモ(F-BASIC V3.0 L2.0)マウスセットデモ(F-BASIC V3.0 L2.0)

2.3.6.1 FM-77L2 デモ&ゲーム
fbdemo3020l2-0
fbdemo3020l2-1
fbdemo3020l2-2
fbdemo3020l2-3
fbdemo3020l2-4
fbdemo3020l2-B1
fbdemo3020l2-B2
fbdemo3020l2-B3
fbdemo3020l2-B4
fbdemo3020l2-B5
fbdemo3020l2-B6
fbdemo3020l2-B7
fbdemo3020l2-B8
fbdemo3020l2-N1
fbdemo3020l2-N12
fbdemo3020l2-N2
fbdemo3020l2-N23
fbdemo3020l2-N3
fbdemo3020l2-N34
fbdemo3020l2-N4
fbdemo3020l2-N45
fbdemo3020l2-N5

FM-77L2デモの解析結果です。

FM-77L2 DEMO (F-BASIC V3.0 L2.0 3.5インチ版 FM-77L2付属)

  RUN"DEMO"

  DEMO または GAME を選択可能。DEMOを選択すると下記のデモが
  実行される。プログラムは2本に分かれているが自動的に実行される。

    L2DEMO (逆スクロール+FM音源)
    BOY
    NEKO の順に実施。(サイクリック)
 
1. ファイル構成、ロードアドレス(SAVE時)

  DEMOS    (BASIC) 内部的には demo1, L2DEMOを実行
  demo1.m1 $2C00-$4D3C  タイトル画面データ
  demo1.m2 $1800-$1B9C  逆スクロール
  demo1.m3 $2000-$6BFF  音楽演奏+データ
  demo1.m4 $2C00-$3B57  富士通ロゴデータ
  brun     $1000-$2BFF  描画エンジン

  demo2    (BASIC) BOY と NEKO を実行
  sub.m    $1800-$1857  裏RAMへの転送と実行
  boy.d    $5000-$6D88  BOY データ
  boy.m    $5000-$6054  BOY プログラム本体
  neko.d   $5000-$6C3C  NEKO データ
  neko.m   $5000-$6C85  NEKO プログラム本体
  rtcd     $4D00-$4FFF  Kコンパイラ・ランタイムルーチン   &H300 Offset Load
  fmobj02  $2000-$6215  音楽演奏+データ
  boy.md   $3000-$383B  BOY 音楽データ                   &H1000 Offset Load
  neko.md  $202D-$3E25  NEKO 音楽データ
  fmdobj   $6300-$684F  音源データ(音色番号1〜40)
  fmd.dat  $69FC-$6B4F  上書き音源データ(音色番号31〜40) -&H300 Offset Load

  # Kコンパイラ・ランタイムルーチンが使用されているのは意外でした。
  # しかしよく考えてみればデモプログラムのような物には向いている
  # のいかもしれませんね。
  # バージョンは V3.6 で、IO-DOS9用に $CD00〜$CFFF にリロケート
  # されたものが使われています。

2. メモリマップ

  DEMOS(demo1)

        タイトル描画 → 逆スクロール・音楽 → 富士通ロゴ
     0 -+---------------------------------------------+
        |F-BASICワークエリア                          |
       -+---------------------------------------------+
        |DEMOS    (BASIC)                             |
       -+---------------------------------------------+
        |変数領域                                     |
        |スタック領域                                 |
        |文字領域                                     |
  1800 -+---------+- 1800-+---------+- 1800-+---------+
        |         |       |demo1.m2 |       |         |
        |brun     |  1B9C-+---------+       |brun     |
        |         |  2000-+---------+       |         |
  3400 -+---------+       |         |  3400-+---------+
        |demo1.m1 |       |demo1.m3 |       |demo1.m4 |
        |         |       |         |  4357-+---------+
  553C -+---------+       |         |       |         |
        |         |  7000-+---------+       |         |
        |         |       |         |       |         |
        |                                             |
  8000 -+---------------------------------------------+
        |                                             |
        |                F-BASIC ROM                  |
        |                                             |
  FBFF -+---------------------------------------------+


  demo2
               ローディング中        →         実行中
     0 -+-----------------------------------------------+
        |F-BASICワークエリア                            |
       -+-----------------------------------------------+
        |demo2    (BASIC)                               |
       -+-----------------------------------------------+
        |変数領域                                       |
        |スタック領域                                   |
        |文字領域                                       |
  1800 -+-----------------------------------------------+
        |sub.m                                          |
  1857 -+-----------------------------------------------+
        |                                               |
        |                  2000 -+----------------------+
        |                        |音楽データ            |
        |                  202D -+          +-----------+
        |                        |          |neko.md    | neko.md で上書きされる
        |                  3E25 -+          +-----------+
        |                  4000 -+          +-----------+
        |                        |          |boy.md     | boy.md で上書きされる
        |                  483B -+          +-----------+
  5000 -+-------------+          |fmobj02               |
        |             |    6215 -+----------------------+
        |転送バッファ |    6300 -+----------------------+
        |  neko.d     |          |音源データ            |
        |  neko.m     |    66FC -+          +-----------+
        |  boy.d      |          |fmdobj    |fmd.dat    | fmd.dat で上書きされる
        |  boy.m      |    684F -+----------+-----------+
        |             |          |                      |
  6xxx -+-------------+          |                      |
        |                                               |
  8000 -+----------------------+ +----------------------+
        |neko.d(転送後)        | |                      |
  9C3C -+----------------------+ |                      |
  9D00 -+----------------------+ |                      |
        |neko.m(転送後)        | |                      |
  B985 -+----------------------+ |                      |
  BA00 -+----------------------+ |                      |
        |boy.m(転送後)         | |                      |
  CA54 -+----------------------+ |     F-BASIC ROM      |
  CC00 -+----------------------+ |                      |
        |ワークエリア          | |                      |
  CD00 -+----------------------+ |                      |
        |rtcd(転送後)          | |                      |
  D000 -+----------------------+ |                      |
        |boy.d(転送後)         | |                      |
  ED88 -+----------------------+ |                      |
        |                      | |                      |
  FBFF -+----------------------+-+----------------------+ 
                 裏RAM                 F-BASIC ROM

3. マシン語プログラム仕様

  brun     描画エンジン? "Wonder Soft" の文字列あり
  demo1.m1 画面データ
  demo1.m2 逆スクロール
  demo1.m3 音楽演奏+データ
  demo1.m4 富士通ロゴデータ

  sub.m   裏RAMへの転送と実行
    $1806 ブロック転送。以下のパラメタを設定。
          $1800 転送サイズ
          $1802 転送先アドレス
          $1804 転送元アドレス
    $1808 裏RAM指定アドレス実行。以下のパラメタを設定。
          $1800 実行アドレス

# NEKOの2〜4枚目の絵でヒゲの描き忘れはご愛嬌でしょうか。
# それにしても、このデモプロの画像キャプチャには骨が折れました。
fbdemo3020l2-G1
fbdemo3020l2-G2
fbdemo3020l2-G3

1. ファイル構成、ロードアドレス

  GAME      (BASIC)      ローダー
  game.m    $4D00-$70FF  ゲーム本体(Kコンパイラランタイム含む)

2. メモリマップ

     0 -+------------------------+
        |F-BASICワークエリア     |
       -+------------------------+
        |GAME (BASIC)            |
       -+------------------------+
        |変数領域                |
        |スタック領域            |
        |文字領域                |
  2000 -+------------------------+
        |                        |
        |                        |
  4D00 -+---------------------+--+ 
        |Kコンパイラランタイム|  |
  5000 -+---------------------+  |
        |game.m                  |
        |                        |
  7100 -+------------------------+
        |                        |
  8000 -+------------------------+
        |                        |
        |  F-BASIC ROM           |
        |                        |
  FBFF -+------------------------+
2.3.6.2 FM-スーパーシンセ
synth-0
synth-1
synth-2
synth-21
synth-22
synth-221
synth-23
synth-231
synth-24
synth-241
synth-242
synth-243
synth-244
synth-245
synth-246
synth-232
synth-25
synth-251
synth-26
synth-261
synth-262

FM-Super Synth メモリマップ

          ローディング中        →           実行中
     0 -+-----------------------------------------------+
        |F-BASICワークエリア                            |
       -+-----------------------------------------------+
        |SYNTH  (BASIC)    |         |*1 (BASIC)        |
       -+------------------+         +------------------+
        |変数領域          |         |変数領域          |
        |スタック領域      |         |スタック領域      |
        |文字領域          |         |文字領域          |
  3F00 -+------------------+   3F00 -+------------------+
        |                  |   40A0 -+プリンタ初期化    |
        |                  |   40F0 -+裏RAM $9000コール |
        |                  |   4100 -+メインエントリ    |
        |                  |         |                  |
  4F00 -+------------------+         |NC5               |
        |BOOT              |         |                  |
  5000 -+----------------+ +         |                  |
        |                | |         |                  |
        |                | |   5E14 -+      +-----------+
        |                | |         |      |xxxx.T     |音源データ上書き領域
        |                | |   5FA0 -+      +-----------+
        |                | |         |      |xxxx.S     |音楽データ上書き領域
        |この部分のみ転送| |   6000 -+------|           |
        |                | |         |      |           |
  6800 -+----------------+ +         |      |           |
        |                  |         |      |           |
  7000 -+------------------+   7000 -+      +-----------+
        |                  |         |                  |
        |                                               |
  8000 -+----------------------+-+----------------------+
        |BOOTの一部(転送後)    | |                      |
  9000 -+Entry                 | |                      |
        |                      | |                      |
  9800 -+----------------------+ |                      |
        |                      | |     F-BASIC ROM      |
        |                      | |                      |
  FBFF -+----------------------+-+----------------------+ 
                 裏RAM                 F-BASIC ROM

NC5のエントリ

  $3F00 USR2      
  $40A0 (EXEC)    プリンタ初期化(FBIOS経由)
  $40F0 USR1      裏RAM $9000コール
  $4100 USR/USR0  
2.3.6.3 FM音源ライブラリ

上記のFM-スーパーシンセが製品レベルであるのと比較し、次に紹介する2つのソフトは
開発途上というか、コンセプトデモ、あるいはエンジンデモと考えた方が良さそうな出来です。
GUIの開発が間に合わなかったのか、そもそもその計画がなかったのかは今となっては
不明ですが、今でいうCUIのみになっています。

その1
musicplayer-0
musicplayer-1
musicplayer-11
musicplayer-12
musicplayer-13
musicplayer-14
musicplayer-2
musicplayer-21
musicplayer-22
musicplayer-23
musicplayer-24
musicplayer-3
musicsample-0
その2
musiceditor-0
musicsample-1

MUSIC PLAYER ファイル構成 FMUTY (BASIC) MUSICを呼出すだけ。Protectされている。メモリマップは省略。 MUSIC (BASIC) MUSIC PLAYER メインプログラム SAMPLE (BASIC) ファイル名は任意、アスキーセーブされている事。 FMOBJ01 $6600-$6B0C 音楽演奏(メインRAM) FMOBJ02 $4FE0-$60DF 音楽演奏(裏RAM) FMDOBJ $6000-$63FB 音源データ1(音色番号1〜30) FMD.DAT $63FC-$654F 音源データ2(音色番号31〜40) Load/Save対象 MUSIC PLAYER メモリマップ ローディング中 → 実行中 0 -+-----------------------------------------------+ |F-BASICワークエリア | -+-----------------------------------------------+ |MUSIC (BASIC) | -+-----------------------------------------------+ |変数領域 | |スタック領域 | | - - - - - - - - - - - - - - - - - - - - - - - | |文字領域 (1000文字分) |(SAMPLE はここの領域に1行ずつ読み込まれて処理される) 4FE0 -+------------------+---------+------------------+ |FMOBJ02 | | | 5000 -+----------------+ + | | |この部分のみ転送| | 6000 -+------------------+ 60E0 -+----------------+-+ |FMDOBJ |音源データ1(音色番号1〜30) | | 63FC -+------------------+ | | |FMD.DAT |音源データ2(音色番号31〜40) Load/Save対象 | | 6550 -+------------------+ | | | | | | 6600 -+------------------+ | | |FMOBJ01 |音楽演奏 | | 6B0D -+------------------+ | | | | | | 8000 -+----------------------+-+----------------------+ |FMOBJ02の一部(転送後) | | | 90E0 -+----------------------+ | | | | | F-BASIC ROM | |音楽データバッファ | | | | | | | FBFF -+----------------------+-+----------------------+ 裏RAM F-BASIC ROM FMOBJ01 のエントリ $6606 Initial Routine $662E Play Routine (裏RAM内ルーチン呼び出し) $665A USR0 Entry (1行バイナリ変換&裏RAM格納) MUSIC EDITOR ファイル構成 TEXTED (BASIC) MUSIC EDITOR メインプログラム SAMPLE (BASIC) ファイル名は任意、アスキーセーブされている事。 FMOBJ02 $4FE0-$60DF 音楽演奏(裏RAM) FMOBJ03 $6600-$6CE3 音楽演奏(メインRAM) FMDOBJ $6000-$63FB 音源データ1(音色番号1〜30) FMD.DAT $63FC-$654F 音源データ2(音色番号31〜40) MUSIC EDITOR メモリマップ ローディング中 → 実行中 0 -+-----------------------------------------------+ |F-BASICワークエリア | -+-----------------------------------------------+ |TEXTED (BASIC) | |SAMPLE (BASIC) |REM文中に音楽データを格納 -+------------------+ | | |変数領域 | | | |スタック領域 | | | |文字領域 | +------------------+ 4FE0 -+------------------+ |変数領域 | |FMOBJ02 | |スタック領域 | 5000 -+----------------+ + |文字領域 | |この部分のみ転送| | 6000 -+------------------+ 60E0 -+----------------+-+ |FMDOBJ |音源データ1(音色番号1〜30) | | 63FC -+------------------+ | | |FMD.DAT |音源データ2(音色番号31〜40) | | 6550 -+------------------+ | | | | | | 6600 -+------------------+ | | |FMOBJ03 |音楽演奏 (REM文中の音楽データをバイナリ変換して | | 6CE3 -+------------------+ 裏RAMに格納後、演奏) | | | | | | 8000 -+----------------------+-+----------------------+ |FMOBJ02の一部(転送後) | | | 90E0 -+----------------------+ | | | | | F-BASIC ROM | |音楽データバッファ | | | | | | | FBFF -+----------------------+-+----------------------+ 裏RAM F-BASIC ROM FMOBJ03 のエントリ $6600 REM文中の音楽データをバイナリ変換して裏RAMに格納後、演奏

2.3.7 FM音源カードデモ(付属テープ)
音声合成カードデモ(F-BASIC V3.0 L2.0)
マウスセットデモ(F-BASIC V3.0 L2.0)

fmongendemo-1
fmongendemo-0
fmongendemo-2
fmongendemo-3
fmongendemo-4
fmongendemo-5
fmongendemo-6
fb302077l2f2

2.3.8 音声合成カードデモ(F-BASIC V3.0 L2.0)
マウスセットデモ(F-BASIC V3.0 L2.0)

fbdemoonsei-1
fbdemoonsei-2A
fbdemoonsei-2B
fbdemoonsei-3
fbdemoonsei-4
fbdemoonsei-5
fbdemoonsei-2C
fbdemoonsei-2D
fbdemoonsei-3A
fbdemoonsei-6
fbdemoonsei-7
fbdemoonsei-8
fbdemoonsei-9

音声合成カードデモの解析結果です。

音声合成カードDEMO(FN-NEW7,FM-77システムディスク添付)

  音声合成カード(MB22437、FM77-431)のためのデモ。
  しかし、音声合成カードを実装していなくても起動できる。

1. ファイル構成、ロードアドレス(SAVE時)

  FM-NEW7版

  ONSEI    (BASIC)
  TALK     $7000-$70C0
  DEMO-O   $6E00-$7059
  ART-O    $6D00-$6DE1
  WOMAN-D  $0000-$0CB8  WOMAN 描画データ
  TOKEI-D  $0000-$0760  TOKEI 描画データ
  WAKA1-D  $0000-$1010  KOMACHI 描画データ
  WAKA2-D  $0000-$0DE8  AKAHITO 描画データ

  FM-77版

  ONSEI    (BASIC)      FM-NEW7版とはメモリマップが異なる。
  TALK     $7000-$70C0
  DEMO-O   $6E00-$70FF
  ART-O    $6D00-$6DE1
  URADIM-O $6780-$67FF
  WOMAN    (DATA)       WOMAN 描画データ
  TOKEI    (DATA)       TOKEI 描画データ
  KOMACHI  (DATA)       KOMACHI 描画データ
  AKAHITO  (DATA)       AKAHITO 描画データ
  ISE      (DATA)       ISE 描画データ
  TEIKA    (DATA)       TEIKA 描画データ

2. メモリマップ

  FM-NEW7版

     0 -+---------------------------------------------+
        |F-BASICワークエリア                          |
  0BF9 -+---------------------------------------------+
        |        ONSEI (BASIC)                       |
  4F00 -+---------------------------------------------+
        |変数領域                                     |
        |                      +----------------------+
        |                      |DIM B%(3,600)         |
        |                      |描画データ            |
        |                      +----------------------+
        |                                             |
       -+---------------------------------------------+
        |文字領域、スタック                           |
  6D00 -+---------------------------------------------+
        |        ART-O                                |
  6E00 -+---------------------------------------------+
        |        DEMO-O                               |
  7100 -+---------------------------------------------+
        |        TALK                                 |
  71D5 -+---------------------------------------------+
        |        DISK BASIC                           |
  8000 -+---------------------------------------------+
        |                                             |
        |        F-BASIC V3.0 ROM                     |
        |                                             |
  FBFF -+---------------------------------------------+

  DEFINT B:DIM B(3,600)            ... 描画データ用配列(4.8KB)
  AD%=VARPTR(B(0,0)):LOADM NA$,AD% ... 配列に直接読み込む

  配列に値を設定する最速の方法。
  FOR〜NEXT で READ DATA を回すよりも早い。

  FM-77版

     0 -+---------------------------------------------+
        |F-BASICワークエリア                          |
  0BF9 -+---------------------------------------------+
        |        ONSEI (BASIC)                       |
  4F00 -+---------------------------------------------+
        |変数領域                                     |
        |                                             |
       -+---------------------------------------------+
        |文字領域、スタック                           |
  6C80 -+---------------------------------------------+
        |      URADIM-O                               |
  6D00 -+---------------------------------------------+
        |        ART-O                                |
  6E00 -+---------------------------------------------+
        |        DEMO-O                               |
  7100 -+---------------------------------------------+
        |        TALK                                 |
  71D5 -+---------------------------------------------+
        |        DISK BASIC                           |
  8000 -+--------------------+ +----------------------+
        |                    | |                      |
        |      描画データ    | |   F-BASIC V3.0 ROM   |
        |                    | |                      |
  FBFF -+--------------------+-+----------------------+ 
               裏RAM                  BASIC ROM

  FM-77では描画データは通常のデータファイル形式。(実は、マウスデモ
  データと共通。)
  OPEN"I"でファイルを開いて4ワードずつ読み出しては裏RAMに格納する。

3. マシン語プログラム仕様

  TALK
    $7100 音声合成
          DEF USR=&H7100:A=USR("文字列") で呼び出す。

  DEMO-O
    $6E00 TILE カラーチェンジ
          DEF USR=&H6E00:A=USR(TILE$) で呼び出す。

  ART-O
    $6D00 描画ルーチン
          サブシステムを直接たたいて高速描画を行う。
          裏RAMに切り替えてから描画しているので、描画データは
          どちらのRAMにあってもよい。

  URADIM-O
    $6C80 描画データを4ワードずつ裏RAMへ転送する。
          (詳細は下のマウスセットデモの解析を参照してください。)


2.3.9 マウスセットデモ(F-BASIC V3.0 L2.0)

fbdemomouse-0
fbdemomouse-1
fbdemomouse-2
fbdemomouse-2A
fbdemomouse-3
fbdemomouse-3A
fbdemomouse-3B
fbdemomouse-3C
fbdemomouse-4
fbdemomouse-5
fbdemomouse-5A
fbdemomouse-6
fbdemomouse-6A
fbdemomouse-7
fbdemomouse-7A
fbdemomouse-7B
fbdemomouse-8
fbdemomouse-9A
fbdemomouse-9B
fbdemomouse-9C
fbdemomouse-9D
fbdemomouse-9E
fbdemomouse-9F

マウスセットデモの解析結果です。

マウスセットDEMO(FN-NEW7,FM-77システムディスク添付)

  マウスセット(MB22436)のためのデモ。

1. ファイル構成、ロードアドレス(SAVE時)

  FM-NEW7版

  MICKEY   (BASIC)
  OEKAKI7  (BASIC)      Ver 1.0            ... 描画はF-BASICのLINE/CIRCLE/PAINT
  MOUSE    $6000-$67FE  マウスドライバ
  URADIM-O $6780-$67CF
  TEST     (DATA)       TEST 描画データ
  WOMAN    (DATA)       WOMAN 描画データ
  KOMACHI  (DATA)       KOMACHI 描画データ

  FM-77版

  MICKEY   (BASIC)
  OEKAKI7N (BASIC)      Ver 2.0
  MOUSE    $6000-$67FE  マウスドライバ
  ART7-O   $6660-$6741  高速描画ルーチン   ... このおかげで約3倍高速
  URADIM-O $6780-$67FF                     ... 音声合成カードデモと共用
  WOMAN    (DATA)       WOMAN 描画データ   ... 音声合成カードデモと共通
  TOKEI    (DATA)       TOKEI 描画データ   ... 音声合成カードデモと共通
  KOMACHI  (DATA)       KOMACHI 描画データ ... 音声合成カードデモと共通
  AKAHITO  (DATA)       AKAHITO 描画データ ... 音声合成カードデモと共通
  ISE      (DATA)       ISE 描画データ     ... 音声合成カードデモと共通
  TEIKA    (DATA)       TEIKA 描画データ   ... 音声合成カードデモと共通

2. メモリマップ

  FM-NEW7版

     0 -+---------------------------------------------+
        |F-BASICワークエリア                          |
  0BF9 -+---------------------------------------------+
        |     MICKEY (BASIC)  →  OEKAKI7 (BASIC)    |
  4F00 -+---------------------------------------------+
        |変数領域                                     |
        |                                             |
       -+---------------------------------------------+
        |文字領域、スタック                           |
  6780 -+---------------------------------------------+
        |      URADIM-O                               |
  6800 -+---------------------------------------------+
        |      MOUSE                                  |
  71D5 -+---------------------------------------------+
        |        DISK BASIC                           |
  8000 -+--------------------+ +----------------------+
        |                    | |                      |
        |      描画データ    | |   F-BASIC V3.0 ROM   |
        |                    | |                      |
  FBFF -+--------------------+-+----------------------+ 
               裏RAM                  BASIC ROM

  FM-77版

     0 -+---------------------------------------------+
        |F-BASICワークエリア                          |
  0BF9 -+---------------------------------------------+
        |     MICKEY (BASIC)  →  OEKAKI7N (BASIC)   | <= NEW7版と異なる点
  4F00 -+---------------------------------------------+
        |変数領域                                     |
        |                                             |
       -+---------------------------------------------+
        |文字領域、スタック                           |
  6660 -+---------------------------------------------+
        |      ART7-O                                 | <= NEW7版と異なる点
  6780 -+---------------------------------------------+
        |      URADIM-O                               |
  6800 -+---------------------------------------------+
        |      MOUSE                                  |
  71D5 -+---------------------------------------------+
        |        DISK BASIC                           |
  8000 -+--------------------+ +----------------------+
        |                    | |                      |
        |      描画データ    | |   F-BASIC V3.0 ROM   |
        |                    | |                      |
  FBFF -+--------------------+-+----------------------+ 
               裏RAM                  BASIC ROM

  描画データは通常のデータファイル形式。FM-77版では音声合成デモ
  データとファイルそのものを共用している。)

3. マシン語プログラム仕様

  MOUSE
    $6800 マウスドライバ
          DEFINT A:DIM A(8)
          A(6)=&H12BD '12 BD  NOP; JSR
          A(7)=&H6800
          A(8)=&H3900 '39     RTS
          A(0)〜A(5)にパラメタを設定
          EXEC VARPTR(A(6)) で呼び出す。
          という実に回りくどいやりかたをしています。

          設定値:
          A(0)=0:A(1)=2 初期化
          A(0)=1        マウスカーソル表示
          A(0)=2        マウスカーソル消去
          A(0)=3        マウスボタン・座標ゲット
                         → ボタン=A(1):X=A(2):Y=A(3)
          A(0)=21       終了

          戻り値:
          A(0)   ステータス
          A(1)   マウスボタン
          A(2)   X座標
          A(3)   Y座標

  URADIM-O
    $6780 描画データの裏RAMへの格納と取り出し。
          DEFINT B:DIM B(8)
          B(6)=&H12BD:'12 BD
          B(7)=&H6780
          B(8)=&H3900:'39
          B(0)〜B(5)にパラメタを設定
          EXEC VARPTR(B(6)) で呼び出す。

          パラメタ:
          B(0)   0=裏RAMから取り出し。1=裏RAMへ格納
          B(1)   DATAポインタ
          B(2)   上位4bit=Function, 下位12bit=X座標1
          B(3)   上位4bit=Color, 下位12bit=Y座標1
          B(4)   X座標2
          B(5)   Y座標2

          Function:
          1 = LINE
          2 = BOX
          3 = CIRCLE
          4 = PAINT

  ART7-O
    $6660 描画ルーチン(FM-77版のみ)
          サブシステムを直接たたいて高速描画を行う。
          裏RAMに切り替えてから描画しているので、描画データは
          どちらのRAMにあってもよい。

尚、このデモはマウスセットをサポートしていない L70 よりも前のバージョンの XM7
では動作しませんが、BASICコードを一行書き換えることにより、マウス操作を GCURSOR
命令に置き換えて動作させることができます。

  51010 GCURSOR(X,Y),(X,Y):HT=1:RETURN

L70 以降のバージョンの XM7 ではそのままで動作します。


オマケコーナー

fujitsu



オマケコーナーその2

fm7maze


謝辞:Laver様、インベンションとシンフォニアに関するご指摘ありがとうございました。
謝辞:りう様、FM-7 DEMOにおける音楽再生ルーチンに関する情報ありがとうございました。
謝辞:福井利夫様、FM-8 DEMO における問題点について情報ありがとうございました。
F-BASIC起動画面集  F-BASIC詳細編  F-BASIC詳細編(その2:デモ画面集)
FM77AVシリーズ システムディスク編
FM77AVシリーズ デモ・入門ディスク編
CP/M-80編 CP/M-80 アプリケーション編
OS-9編
FLEX編 FLEX アプリケーション編
F-BASIC ファイルシステム(およびその上位互換)上に構築されたOS、開発システム
FM-7/8シリーズ用プログラミング言語とその処理系
番外編(その2:勝手に誤記修正編)
番外編(その3:6809用MMU考察)
番外編(その5:FM-7,8シリーズのROM一覧)
番外編(その6:FM-77用拡張メモリ他について)
番外編(その7:FM-8/7/77/77AVシリーズの微妙な非互換性)
番外編(その8:FM-7/8シリーズ用アドオンCPUカード)
番外編(その11:FM-11,16シリーズのROM一覧)
緊急特集:MB22603の秘密
FM-8改造 備忘録
--------
レベル3BASICとF-BASIC を覗いてみる
テクノポリス誌ナウシカベンチマークとミンキーモモベンチマーク
ASCIIART(マンデルブロ集合)ベンチマーク
漢字ROM博物館(情報募集中)
--------
各種電子デバイス関連
--------
入り口ページに戻る

ご意見、ご要望はこちらまで(笑)
Copyright (C) 2019 by Haserin