﻿==================================================================
=== FBF/VX-MENU 両ファイルシステム共通プログラムを作るために   ===
===                                           <<互換性情報>>   ===
==================================================================
                                                      2024.12.24

■はじめに
  ファイル管理に貧弱だった VX-3にも遂にファイルシステム
 が登場しました。「FBF(FX-Binary-Filer)」「VX-MENUシステム」です。
 これらのシステムを利用すれば、PB-1000同様データをファイルとして
 出し入れを行う事ができ、従来では出来なかった処理が可能となります。
 ２種類のファイルシステムは利用用途が違う為に、両対応を意識して
 ソフトウェアを開発すれば、利用者の幅も広がる事でしょう。
 このドキュメントはファイルシステムの特徴・プログラミング時の注意事項
 を記載してあります。

■ファイルシステムの特徴
  以下はファイルシステムの特徴です。
                            FBF                      VX-MENU
---------------------------------------------------------------------
バージョン                  4.2                       0.21
ファイルサイズ　         約1613バイト             約4814バイト
登録可能ファイル種別    バイナリのみ         バイナリ/BASIC/テキスト
登録可能ファイル数         255個                    255個
ファイル名制限             8文字           8文字(ファイル名)+3文字(拡張子)
ファイラ機能          　　  別途                     内蔵 
機械語エリア確保            無                       内蔵
呼び出し種別            コマンドライン/          コマンドライン
                        ワークエリア
コマンド種類         BS/BL/KL/RN/SF/SI/OF/RR        BS/BL/SF/KL
	             RL/MV/JP
動作メモリ環境              16KB～                    32KB～
その他                疑似リロケータブル            通信機能
                      一括バックアップ可能         PBF変換機能
----------------------------------------------------------------------

<< 両ファイルシステムの相違点 >>

--------------------------------------------------------------------------

■機械語エリアの確保の方法について
   VX-MENU には　&H6CD0番地からの機械語確保の機能が搭載されています。
  FBF には搭載されていませんので、
  同梱されている「拡張CLEAR命令」を使用して機械語領域の確保を行う必要があります。

  FBFでの手順)
   1) FBF-BINxx.BAS を使用して、改良版拡張CLEAR命令(CL.R)を
　    PCからファイルシステムに取り込む
   2) MODE110(実行アドレス)CL,xxxx [EXE] で機械語エリアを確保する。
      ※詳しくは「FBFxx_RR作成資料.pdf」を参照。

--------------------------------------------------------------------------

■ファイル名の名前付けについて
    VX-MENU では PB-1000 や MS-DOS と同じく、
　「8(ファイル名)+3(拡張子)」のファイル名を使用出来ます。
   ただし、PB-1000と同じく英大小文字を区別します。
   FBFは「8文字ファイル名」となっていますので、両ファイルシステムで対応させるには、
   8文字ファイル名に統一する必要があります。

   ※FBF では.(ピリオド)もファイル名の文字数にカウントします。
     VX-MENU ではピリオドは
     ファイル名と拡張子の区切り記号なのでカウントされません。

--------------------------------------------------------------------------

■ファイルシステムへの実行アドレスについて
   FBF には、ファイルシステムへの呼び出し部分を
   パスワード保存エリアにコピーして実行アドレスを固定(&H6AD0)する機能が
   ありますが、VX-MENU では未対応の為に以下の様に行います。
    -------------------------------------------------------------
    10 A=(PEEK&H68CA+PEEK&H68CB*256)+2:BASE=PEEK(A)+PEEK(A+1)*256
    -------------------------------------------------------------

　 以後、MODE110(BASE)～で、ファイルシステムを呼び出します。

--------------------------------------------------------------------------

■ファイルシステムの呼び出し方法について
  ファイルシステムへの呼び出しには、
  引数無しで呼び出す方法と引数有りで呼び出す方法があります。
    ---------------------------------------
    MODE110(実行アドレス) →引数無し
    MODE110(実行アドレス)BS"TEST"～ →引数有り
    ---------------------------------------

  FBF では引数無しで呼び出された場合は
  ワークエリア指定(POKE文による情報を書き込んでからの呼び出し)でのファイル処理を行いますが、
  VX-MENU を引数無しで呼び出した場合はファイル管理画面になります。
  両ファイルシステム対応のBASICプログラムを作成する場合、必ず引数有りで呼び出すようにします。

--------------------------------------------------------------------------

■リザルトコードについて
  FBF では処理結果を「リザルトコード」で示しますが、VX-MENU ではエラーが出ます。
  ただし、FBF でもコマンドラインの構文エラー時は「SN error」を発生します。
  VX-MENU では、FBFのリザルトコードのアドレス(&H67A0)を操作しません。
  よって「不定値」となります。

--------------------------------------------------------------------------

■FBF と VX-MENU のコマンドライン命令の種類について
   FBF は VX-MENU に比べて使用出来るコマンドライン命令が多いですが、
　両ファイルシステムで
  互換性を持たせるには、BS/BL/SF/KL 以外の命令は使わないようにします。
  逆に SIコマンド等、FBFにしかないコマンドを実行してわざとエラーを発生させる事で、
  どちらのファイルシステムが導入されているか確認する事も出来ます。

--------------------------------------------------------------------------

■RR形式プログラムの実行について
   VX-MENU では Ver.0.17以降で、コマンドの短縮形でのRR形式プログラムの実行が
  実装されました。FBFでは Ver.3.3以降でコマンドの短縮形が実装されています。

  VX-MENU では Ver.0.19 で MENU上からの「ファイル名.R」のRR形式の実行が
  実装されましたが、コマンドライン指定からの実行は「2文字.R」のみ可能となります。

  CAL実行のRR形式(.r)をサポートするのは、FBFのみです。

  従って、両システムを考慮して、ファイル名を「2文字.R」にしてください。
  全く同じ文法で実行できます。

--------------------------------------------------------------------------

■ファイル操作を行うRR形式プログラムについて
   RR形式プログラム中でファイル削除を行いメモリブロックが移動する場合、
  FBF では救済措置($､MVコマンド)がありますが、VX-MENU にはありませんので、
  このような操作は極力避けるべきです。
　尚、FBFでは同じファイルの再保存の場合でも、ファイルの位置は移動します。

--------------------------------------------------------------------------

■バンク2 対応について
   VX-MENU はバンク2対応しておりますが、FBF では対応しておりません。
  バンク2に対する全ての機能は FBF では利用できません。

--------------------------------------------------------------------------

■エラー処理を両ファイルシステム対応にするには
  FBFではリザルトコードで返し、VX-MENUではエラーが発生する為に、
　少々工夫をしてエラー対処を行います。

  10 ON ERROR GOTO 80
  20 A=(PEEK&H68CA+PEEK&H68CB*256)+2:BASE=PEEK(A)+PEEK(A+1)*256
  30 POKE &H67A0,0
  40 MODE110(BASE)BL"TEST.EXE",&H0
  50 IFPEEK(&H67A0)=1 THEN 70
  60 PRINT "load complete.":END
  70 PRINT "file not found!":END
  80 RESUME 70
  
  解説:

  10行目 ON ERROR GOTO でエラー割り込みの宣言をします(VX-MENU使用時エラー処理の為)。
  20行目 ファイルシステム呼び出しアドレスの算出。≪おまじない≫です。
  30行目 FBFのリザルトコード(&H67A0)を初期化します。
         VX-MENUでは&H67A0は操作しません(不定)です。
         よって始めに0をセットしておけば、FBFリザルトコードの判断文(50行)を入れても
         VX-MENUで動かした際に影響がありません。
  40行目 ファイルシステムを呼び出して、「TEST.EXE」を0H番地からロードしています。
         この段階でエラーがあると、VX-MENUはエラーが発生します。
         FBFではエラーがあると、PEEK&H67A0が「1」になります。
  50行目 FBFで処理に失敗した際(PEEK&H67A0=1)に70行にジャンプします。
         VX-MENUで実行時にはこの行は処理正常時に実行され、&H67A0=0のままなので、
         そのまま「素通り」します。
  60～70行目 処理終了/エラーメッセージを表示します。
         70行目はFBF/VX-MENU共にエラー処理のルーチンである事に注目してください。
  80行目 VX-MENUでロードに失敗するとエラー割り込みが発生し、この行にジャンプします。
         しかし実際のエラー処理の為に70行目に復帰します。 
         こうする事でFBF/VX-MENU共通のエラー処理が行えます。

==================================================================
