==============================================================================
    LEVEL3/S1 BASIC 変換ツール
                                                              Version 0.8.2
                                                                2025/10/19

                           Copyright(C) Sasaji 2013-2025 All Rights Reserved.
==============================================================================

● はじめに

  このソフトは、BASICの中間言語形式やアスキー形式のデータからテキストファイルに、
  またその逆に変換するアプリケーションです。
  日立 ベーシックマスターレベル3シリーズに搭載されているLEVEL-3 BASIC、
  MB-S1シリーズに搭載されているS1 BASIC、
  MSXシリーズに搭載されているMSX BASICに対応しています。

● 動作確認環境

  ◆Windows .. Windows11(Intel 64bit) / Windows10(Intel 64bit)
  ◆MacOS .... Sequoia(15.6.1 Apple silicon) / High Sierra(10.13.6 Intel 64bit)

● インストール

  ◆Windows版

  1. l3s1basic_*.zipを解凍すると以下のファイルができます。

    l3s1basic.exe   ... アプリケーション本体
    Readme.txt      ... このファイル
    ChangeLog.txt   ... 更新履歴
    data/           ... 変換用データファイル
    lang/           ... ローカライゼーション
      ja/           ... 日本語
        l3s1basic.mo  ... 翻訳済みファイル

  2. l3s1basic.exe、data/、lang/以下を適当なフォルダにコピーしてください。
  3. l3s1basic.exeを実行します。

  実行時に、VC++ 2010 RUNTIMEのインストールが必要になるかもしれません。
  詳細はマイクロソフトのページで検索してください。

  ◆MacOS版

  1. l3s1basic_*.dmgを解凍すると以下のファイルができます。

    l3s1basic.app/  ... アプリケーションフォルダ
      Contents/
        MacOS/
          l3s1basic ... アプリケーション本体
        Resources/  ... リソース
          data/     ... 変換用データファイル
          lang/     ... ローカライゼーション
            ja/     ... 日本語
              l3s1basic.mo... 翻訳済みファイル
    Readme.txt      ... このファイル
    ChangeLog.txt   ... 更新履歴

  2. l3s1basic.app/を適当なフォルダにコピーしてください。
  3. l3s1basic.app/をクリックして実行します。

  ■実行すると、同じフォルダに設定ファイル(l3s1basic.ini)が作成されます。


● アンインストール

  インストールしたフォルダを削除してください。


● 用途

  ■PCで作成したBASICプログラムを実機/エミュでロードする。

  ・作成したBASICプログラム -> l3s1basicでl3ファイルに変換 -> エミュでLOAD
      または
  ・作成したBASICプログラム -> l3s1basicで中間言語 or アスキー形式に変換 ->
    -> wavtool(*)で実ファイルからwavファイルに変換 -> 実機とPCをつなぎLOAD

  ■実機/エミュからセーブしたBASICプログラムをPC上で読めるようにする。

  ・実機とPCをつなぎSAVE -> wavtool(*)でwavファイルから実ファイルに変換 ->
    -> l3s1basicでアスキー/UTF-8形式に変換
      または
  ・エミュでl3ファイルでSAVE -> l3s1basicでアスキー/UTF-8形式に変換

  ■L3 BASIC <-> S1 BASICを中間言語形式どうしで変換

  ・L3 BASICとS1 BASICは中間言語形式レベルでは互換性がありませんが本ソフトで
    変換できます。ただし、命令のオプションなどの違いは変換しません。

  (*)拙作のテープイメージを解析/作成するソフトです。


○ メイン画面の説明

 [ 入力ファイル情報 ]
    ファイルを開くとファイルを解析した情報が設定されます。

    BASIC中間言語        ... BASIC中間言語形式のファイルです。
    BASIC種類            ... ROM BASIC/DISK BASICなどの種類です。

    アスキー形式テキスト ... BASICアスキー形式のファイルです。

    UTF-8形式テキスト    ... UTF-8形式のテキストファイルです。
    テキスト種類         ... 割り当てた文字セットの種類です。

    解析した結果と異なる場合は適宜変更してください。

    ●詳細は、後述の「対応ファイルの種類」の項を参照ください。

 [ 出力ファイル情報 ]
    出力するファイルの種類を設定します。

    BASIC中間言語        ... BASIC中間言語形式のファイルです。
    ディスク用(バイナリ) ... 上記のBASIC中間言語と同じです。
    テープイメージ(バイナリ) ... BASIC中間言語形式のテープイメージです。
    BASIC種類            ... BASIC中間言語形式で出力する時の種類を指定します。

    アスキー形式テキスト ... BASICアスキー形式のファイルです。
    ディスク用(アスキー) ... アスキー形式テキストと同じですが、改行をCR+LFに
                             します。
    テープイメージ(アスキー) ... アスキー形式のテープイメージです。改行をCRに
                             します。

    UTF-8形式テキスト    ... UTF-8形式のテキストファイルです。
    テキスト種類         ... UTF-8形式テキストで出力する時の文字セットの種類
                             です。

    エクスポート ........... 選択した種類のファイルを出力します。
                             テープイメージを出力する時、内部ファイル名を入力
                             するダイアログが表示されます。

    ●詳細は、後述の「対応ファイルの種類」の項を参照ください。

 [ 表示形式 ]
    インターレース/ノンインターレース/インターレース(全角)/漢字(シフトJIS)
      ... 表示したい文字セットの種類を選択します。
    フォント ... 表示に使用しているフォント名です。変更ボタンで変更できます。
    ●日本語フォントを選んでください。


○ メニュー説明

「ファイル」メニュー
  「開く...」 ......... 変換したいファイルを開きます。
                        サポートしているファイルは、
                        BASIC中間言語形式のファイル(拡張子は.binとしています。)
                        BASICアスキー形式のファイル(拡張子は.basとしています。)
                        UTF-8形式のテキストファイル(拡張子は.txtとしています。)
                        テープイメージのファイル(拡張子は.l3としています。)

  「閉じる」 .......... ファイルを閉じます。

  「エクスポート」 .... ファイルを変換し出力します。
    「BASIC中間言語形式」........... BASIC中間言語形式のファイルを出力。
          メイン画面のBASIC種類に応じた変換を行い出力します。
    「アスキー形式テキスト」........ BASICアスキー形式のファイルを出力。
    「UTF-8形式テキスト」........... UTF-8形式のテキストファイルを出力。
          メイン画面のテキスト種類に応じた変換を行い出力します。

    「ディスク用(バイナリ)」........ BASIC中間言語形式のファイルを出力。
          メイン画面のBASIC種類に応じた変換を行い出力します。
    「ディスク用(アスキー) 」....... アスキー形式のファイルを出力。
          改行をCR+LFにて出力します。

    「テープイメージ(バイナリ)」.... BASIC中間言語形式のテープイメージを出力。
          メイン画面のBASIC種類に応じた変換を行い出力します。
    「テープイメージ(アスキー) 」... アスキー形式のテープイメージを出力。

  「最近使用したファイル」.. 以前に開いたファイルを一覧で表示します。

  「終了」 ............ アプリケーションを終了します。

「機種」メニュー
  「L3/S1 BASIC」 ...... LEVEL-3/S1 BASICを対象にします。
  「MSX BASIC」 ........ MSX BASICを対象にします。

「設定」メニュー
  「ファイル設定」 ........ ファイル設定ダイアログを表示します。
  「表示設定」 ............ 表示設定ダイアログを表示します。
  「テープイメージ設定」... テープイメージ内のファイル名を設定します。


○ ファイル設定ダイアログの説明

  L3/S1 BASIC と MSX BASIC それぞれ独立して設定します。
  上部にあるボタンで切り換えてください。

  [ 入力ファイル ]
  ・ テキストファイル
    ファイル終端コードまで読む ... チェックを入れると終端コードがあった場合に
                                   そこで読み込みを終了します。

  [ 出力ファイル ]
  ・ 中間言語形式
    ファイル終端コードを追加 ... チェックを入れるとファイル末尾に終端コードが
                                 入ります（テープイメージは除く）。

  ・ アスキー形式テキスト
    CR、LF、CR+LF .............. 改行コードを指定します。デフォルトはCR。
                                 テープイメージの場合はCR固定、ディスク用の場合
                                 はCR+LF固定になります。
    ファイル終端コードを追加 ... チェックを入れるとファイル末尾に終端コードが
                                 入ります（テープイメージは除く）。

  ・ UTF-8形式テキスト
    CR、LF、CR+LF .............. 改行コードを指定します。デフォルトはLF。
    BOMを含める   .............. チェックを入れるとファイルの先頭にBOMマークが
                                 入ります。

  ・ スタートアドレス
    BASIC中間言語形式に含めるスタートアドレスを指定します。
    L3 BASICのみ有効です。


○ 表示設定ダイアログの説明

  L3/S1 BASIC と MSX BASIC それぞれ独立して設定します。
  上部にあるボタンで切り換えてください。

  コロンとカンマの後にスペースを挿入する。 ...
    チェックを入れると命令間で改行されやすくなるので可読性が少し上がります。
    ●エクスポートするファイルには影響しません。

  テキスト色 .......... リスト内の色分けを設定します。
    「変更」... 色選択ダイアログを表示します。
    「戻す」... デフォルトの色に戻します。

    色分けする種類は以下の通り：
      行番号 .......... 行先頭の番号およびGOTO文など分岐命令の番号
      命令 ............ 命令、関数、演算子
      変数 ............ 変数
      引用文字列 ...... クオート(")で囲まれた文字列
      コメント ........ REM文やシングルクオート(')で始まる文字列
      "DATA"行 ........ DATA文で始まる文字列

  以下はBASIC種類によらず共通設定になります。

  Language ............ メニューなどの表示言語を設定します。
    ●設定を反映させるにはアプリケーションの再起動が必要です。


● 対応ファイルの種類

  ■BASIC中間言語形式のファイル
    レベル3/S1/MSXのメモリ内で保存されている形式。
    レベル3/S1ではAオプションをつけずにSAVEした場合、MSXではCSAVEした場合で、
  テープに関する付加情報を取り除くとこの形式になります。
    レベル3の説明書には内部表現形式とも書かれています。

  ■テープイメージ(バイナリ)
    L3/S1エミュからAオプションをつけずにSAVEしたテープイメージ。
    拡張子はデフォルトで.l3となります。
    MSXエミュ(BlueMSXなど)からCSAVEしたテープイメージ。(FMSX形式のヘッダがつく)
    拡張子はデフォルトで.CASとなります。

  ■ディスク用(バイナリ)
    BASIC中間言語形式のファイルと同じです。拡張子はデフォルトで.BASとなります。

  ■BASICアスキー形式のファイル
    レベル3/S1ではAオプションを付けてSAVEした場合、MSXではSAVE"CAS:"した場合で、
  テープに関する付加情報を取り除くとこの形式になります。
    レベル3の説明書にはキャラクタ形式とも書かれています。

  ■テープイメージ(アスキー)
    L3/S1エミュからAオプションを付けてSAVEしたテープイメージ。
    拡張子はデフォルトで.l3となります。
    MSXエミュ(BlueMSXなど)からSAVE"CAS:"したテープイメージ。(FMSX形式のヘッダが
  つく)
    拡張子はデフォルトで.CASとなります。

  ■ディスク用(アスキー)
    BASICアスキー形式のファイルと同じですが、改行コードがCR+LFとなります。
    (設定ダイアログで変更可能)
    拡張子はデフォルトで.BASとなります。

  ■UTF-8形式のテキストファイル
    BASICアスキー形式のファイルはレベル3/S1/MSX独自のキャラクターが含まれている
  ことがあります。これらは、現在のPCでは正しく表示されないため、似ている文字を
  割り当てることで表示できるようにしたものがこのファイルです。
    このファイルには、以下のような割り当てパターンがあります。
  レベル3/S1のとき：
    インターレース       ... 半角カナ、かなを全角で割り当てたもの。
    ノンインターレース   ... 記号などを近似の文字で割り当てたもの。
    インターレース(全角) ... アルファベットを含むすべてを全角で割り当てたもの。
    漢字(シフトJIS) ........ 漢字BASIC用。半角カナおよび全角文字をそのまま割り
                             当てたもの。
  MSXのとき:
    日本語(半角) ........... 半角カナ、かなを全角で割り当てたもの。
    日本語(全角) ........... アルファベットを含むすべてを全角で割り当てたもの。

  【注意】日本語以外の文字コードには対応していません。


● 変換用データファイルについて

  dataフォルダにあります。

   BASICコード変換テーブル:
    l3s1_basic_code.dat
    msx_basic_code.dat

   アスキー <-> UTF-8文字変換テーブル:
    l3s1_char_code.dat
    msx_char_code.dat
    これらファイルはUTF-8で記述してください。


● 制限事項
   ・ファイル中に省略形を用いることはできません。ただしREMは'にできます。
    (例: PRINTの代わりに?は使用できない。)
   ・L3 BASICとS1 BASICの変換は命令レベルのみで、オプションなどの違いは変換
     しません。このため変換したファイルをマシン上でRUNするとIllegal function
     callなどのエラーになる可能性はあります。
   ・S1 BASICでバイナリ保存する場合、倍精度実数に丸め誤差が発生することが
     あります。実数演算を伴うプログラムはアスキー形式で保存してください。


● 開発環境

  Windows版: (CPU: Corei7 4770S 3.1GHz / Mem: 8GB)
    Microsoft Windows10 (64ビット環境)
      Microsoft Visual C++ 2010 Express Edition
      wxWidgets 3.2.4

  MacOS版: (Mac Mini CPU: M2 / Mem: 8GB)
    Mac OS Ventura(13.5 Apple Silicon)
    Xcode 14 + wxWidgets 3.2.4

  Linux版: (VMwareです。)(CPU: Corei7 4770S 3.1GHz / Mem: 512KB)
    Ubuntu 22.04 (amd64) + GTK+ 3
      wxWidgets 3.0.5


● クレジット

  wxWidgets:
    wxWidgets is a C++ library that lets developers create applications for
  Windows, OS X, Linux and UNIX on 32-bit and 64-bit architectures as well as
  several mobile platforms including Windows Mobile, iPhone SDK and embedded
  GTK+. It has popular language bindings for Python, Perl, Ruby and many other
  languages. Unlike other cross-platform toolkits, wxWidgets gives its
  applications a truly native look and feel because it uses the platform's
  native API rather than emulating the GUI. It's also extensive, free, open-
  source and mature.
    http://www.wxwidgets.org/


● 免責事項

・このソフトはフリーウェアです。ただし、著作権は放棄しておりません。
  著作権は作者Sasajiにあります。
・このソフトによって発生したいかなる損害についても作者は一切責任を負いません。
  このソフトを使用するにあたってはすべて自己責任で行ってください。
・雑誌やネットなどに転載される場合、不特定多数の方に再配布を行う場合でも
  承諾の必要はありませんが、転載の旨をご連絡いただけたら幸いです。

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

連絡先：Sasaji (sasaji@s-sasaji.ddo.jp)
 * My WebPage: http://s-sasaji.ddo.jp/bml3mk5/
 * GitHub:     https://github.com/bml3mk5/L3S1Basic
 * X(Twitter): https://x.com/bml3mk5

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

