﻿
                tools80 - PC-8001 Emulator Utilities
                     Release 6.53 (Version 6.6.71)
           Copyright (c)1998-2026 Shigekazu HIRAO (HAL8999)
    +------------------------------------------------------------+

■はじめに■

・tools80 は、PC-8001エミュレータを活用するための道具を集めたものです
・tools80 は、CMT-8001(VB版) に添付していた CMT-TOOL.EXE の代替版です
  似たような機能をそろえましたが若干仕様が変っています。ご注意ください
  (「CMTファイルへの変換」が主な機能です)
・tools80 は無保証です
・tools80 は無償です
・Javaで書かれており、いろんな環境で走るかもしれません
・コンソールアプリケーションです。アプレットではありません
・バイナリにRelease番号の無いものは「プライベート・リリース」とします
  プライベート版添付の readme.txt 中のRelease番号は無効です
・プライベート版は開発に積極的に関与していただける方に個別配布します
  短い賞味期限を設定したサンプルをサイトで公開する場合もありますが、
  公式版ではありませんので注意してください
  サンプル公開では個別に使用条件を設定する場合があります
・プライベート版, 公式版ともに賞味期限が設定されている場合があります
  賞味期限を過ぎたプライベート版は起動できません
  公式版では一部の機能を制限する場合があります
・プライベート版は再配布禁止とします
・公式版の再配布は下記条件の範囲内でご自由にどうぞ
  ・再配布はアーカイブ丸ごとに限ります
  　内容を改変したり一部を削除,追加したものは認めません
  ・他のソフトウェアと一体での再配布は認めません
  ・商用のソフトウェアやハードウェアに同梱する形での再配布は認めません
・商用利用に関しては将来制限する可能性があります
  制限後は(制限前のリリースを含む)全てのバージョンが対象になります
  制限前に作成した成果物は制限の対象としません
  商用利用する方は、常に制限の有無を確認する義務があるものとします


■動作環境■

・Java2SE 1.3.0～ (JDK または JRE 1.3.0～)
  もっと低いバージョンでも実装可能だと思いますが、
  当方の開発環境が 1.3 なため、このようになっております
  ご了承ください
・JDK または JRE は、別途入手してください
   > JDK J2SE1.3  http://java.sun.com/j2se/1.3/ja/index.html
   > JRE J2SE1.3  http://java.sun.com/j2se/1.3/ja/jre/index.html


■実行方法■

・添付のバッチファイル及び「機能概要」「機能詳細」を参照してください


■機能概要■

   1. 抽出モード (-ext オプションあり)
     1-1 ディスクイメージとして扱えるファイル(拡張子)
          -fmt=9              → D882Dir [CP/M mode]
          上記以外            → D882Dir [CAS mode]
     1-2. ディスクイメージ以外のファイル(拡張子)
          -cmt オプションあり → Cmt2Dir [BAS:PC8X→CMT, MON:PC8X→CMT]
          -raw オプションあり → Cmt2Dir [BAS:PC8X→BAS, MON:PC8X→RAW]
          オプションなし      → Cmt2Dir [BAS:PC8X→BAS, MON:PC8X→BIN]
   2. ディレクトリを指定
     2-1. -d88 オプションなし → Dir2Cas (ファイルリスト)
     2-2. -d88 オプションあり → Dir2D88 (d88に追記)
   3. cas ファイルを指定      → Cas2Cmt (Job2Cmt)
     3-1. -obj オプションなし → Cas2Cmt (旧 Job2Cmt)
     3-2. -obj オプションあり → Cas2Cmt
## -. dsk ファイルを指定      → Dsk2D88
   4. cmt ファイルを指定      → Cmt2Cas (ファイルリスト)
   5. t88 ファイルを指定      → T882Cas + T882Cmt
   6. bas ファイルを指定      → Bas2Cmt (オプションあり)
   7. cmu ファイルを指定      → Cmu2Cmt
   8. n80 ファイルを指定      → N802Cmt
   9. tk8 ファイルを指定      → TK82Cmt
  10. dmp ファイルを指定      → Dmp2Cmt (オプションあり)
  11. -asm, -asz              → Asm2Cmt (オプションあり)
  12. chr ファイルを指定      → Chr2Fon (フォント作成)
  14. 上記以外のファイルを指定→ Bin2Cmt

  ※各コンバータの出力ファイル (全て上書き / 確認なし)
    D882Dir：ソースの場所に ファイル名のディレクトリ＋展開したファイル
    Cmt2Dir：ソースの場所に ファイル名のディレクトリ＋展開したファイル
    Dir2Cas：ソースの場所に ディレクトリ名＋".cas"
    Dir2D88：ソースの場所に ディレクトリ名＋".d88"
    Cas2Cmt：casファイルの記述に従う (*OBJ)
    Cas2Cmt：ソースの場所に ファイル名の拡張子を除いたもの + ".cmt"
##  Dsk2D88：ソースの場所に ファイル名の拡張子を除いたもの + ".d88"
    Cmt2Cas：ソースの場所に ファイル名 + ".cas"
    Cmt2Raw：ソースの場所に ファイル名の拡張子を除いたもの + ".raw"
    T882Cmt：ソースの場所に ファイル名の拡張子を除いたもの + ".cmt"
    T882Cas：ソースの場所に ファイル名の拡張子を除いたもの + ".cas"
    Bas2Cmt：ソースの場所に ファイル名 + ".cmt"
    Bin2Cmt：ソースの場所に ファイル名 + ".cmt"
    Cmu2Cmt：ソースの場所に ファイル名 + ".cmt"
    N802Cmt：ソースの場所に ファイル名の拡張子を除いたもの + ".cmt"
    Tk82Cmt：ソースの場所に ファイル名の拡張子を除いたもの + ".cmt"
    Dmp2Cmt：ソースの場所に ファイル名の拡張子を除いたもの + ".cmt/hex/mot/raw"
    Asm2Cmt：ソースの場所に ファイル名の拡張子を除いたもの + ".cmt/hex/mot/raw"
    Chr2Fon：ソースの場所に ファイル名の拡張子を除いたもの + ".FON"

■各コンバータの詳細■

 ◆ D882Dir
    ※ディスクイメージとして扱えるすべてのファイルを受け付けます
    ・[CP/M mode]
      ・CP/Mフォーマットのd88ファイルを指定ディレクトリに展開します
    ・[CAS mode] (CP/M 以外)
      ・BAS,BIN(,DAT)を指定ディレクトリに抽出します
        ファイル名は "<通し番号>.bas, .bin, .dat" になります
      ・抽出ファイル一覧を cas形式 で同じディレクトリ内に出力します
        ファイル名は d88ファイル名の拡張子を除いたもの＋".cas" になります
    ・データ抽出中にセクタが見つからなかった場合はそこで打ち切ります
      -debug オプションで、終了せずに次のファイルから展開を再開します
      -debug オプションは「PC-DOS Version 3.1」以外は動作確認していません
    ・-fmt=n オプションで、フォーマット(FAT形式)の指定ができます
      フォーマットはシステム領域(一部)のパターンで識別しています
      データディスクなど自動識別が不可能な場合に指定してください
      マイナスを付けた場合は自動識別失敗時の「デフォルト指定」になります
      n:1 : MicroDiskBasic Ver1.2   ※N88/N80 DiskBASIC系
        2 : S-DOS80 Version 1.01    ※N88/N80 DiskBASIC系
        3 : S-DOS80 Version 2.0     ※N88/N80 DiskBASIC系
        4 : S-DOS ver1.1 (Shimizu)  ※N88/N80 DiskBASIC系
        5 : CP YOU-PCD Ver. 1.00    ※N88/N80 DiskBASIC系
        6 : GAME-DOS (SystemSoft New PC DOS.80 Ver2.0)
        7 : CM-PCD (CMU-800 DISK VERSION)
        8 : PC-DOS Version 3.1 (Kyoto Computer Brains)
        9 : 56K CP/M Version 2.2 (for NEC PC-8001)
       10 : PC-8001 Disk BASIC      ※自動解析未対応
       11 : N88/N80 Disk BASIC      ※自動解析未対応


 ◆ Cmt2Dir
    ※テープイメージとして扱えるすべてのファイルを受け付けます
    テープイメージから BAS,BIN,CMUファイルに変換します
    BAS,BIN,CMU 以外は CMTデータとしてデータブロック毎に掃き出します
    ファイル名は "<通し番号>.bas, .bin, .cmu, .cmt" になります
    インデックス代わりの casファイルも出力しますが、テープイメージとしての
    使用はできません
    変換したファイルのヘッダ(バイナリ)は出力しません (Version 6.6.53～)
    ヘッダの情報は casファイルに name= オプションで出力します
    BAS,BIN,CMUファイルのボーレート等の情報はソース側の設定に拠らず <*,8N>
    になります
    -raw オプションで、モニタ形式のブロックをベタに書き出します
    ROMファイルの作成を想定しています (※Cmt2Mem は廃止しました)


 ◆ Dir2Cas
    指定ディレクトリ中のファイル一覧を出力します(下位ディレクトリは無視)
    cmtやt88は内容を調べて書き出します
    その際ファイル名をもとに「適当」に TITLE ブロックでまとめます
    ファイルの順番もアルファベット順ですので、要確認です
    ※tools80R3.6 の Dir2Job と、pcm8001R3.6 の Dir2Cas を合わせたものです


 ◆ Dir2D88 (要 -d88 オプション)
    ディレクトリ中のファイルをd88ファイルに書き込みます (結合イメージ未対応)
    出力ファイルの雛型として、フォーマット済みの完全なd88ファイルが必要です
    雛型はなるべく「きれい」なイメージを用意してください
    雛形にシステムが入っている場合はフォーマットを自動判別できるかもしれません
    -fmt=n オプションで、フォーマット(FAT形式)の指定ができます
      n:9 : 56K CP/M Version 2.2 (for NEC PC-8001)
       10 : PC-8001 Disk BASIC   ※自動解析未対応
       11 : N88/N80 Disk BASIC   ※自動解析未対応
        2 : S-DOS80 Version 1.01 ⇒ N88/N80 DiskBASIC系
        3 : S-DOS80 Version 2.0  ⇒ N88/N80 DiskBASIC系
        5 : CP YOU-PCD Ver. 1.00 ⇒ N88/N80 DiskBASIC系
       ※実行アドレス等の追加情報が必要なフォーマットには対応しません
    □56K CP/M Version 2.2 (for NEC PC-8001)
      下位ディレクトリは無視します
      ファイルの格納効率は良くありません (最後の連続領域に格納する)
      オリジナルのファイル名を 8.3型式に切り詰めて使います
        既にあるCP/Mファイル名とのバッティングはチェックしません
        CP/Mファイル名の妥当性のチェックはしません
      添付の cpm.d88 にはシステムはコピーされていません
    □DiskBASIC系
      下位ディレクトリは無視します
      BASIC,マシン語ファイルには、タイプ判定用に拡張子(BAS,BIN)が必要です
      ファイル名は元のファイル名の最後の拡張子を削除したものから生成します
          Test.OBJ.bin  → "Test  OBJ"
          Test  OBJ.bin → "Test  OBJ"
        既にあるファイル名とのバッティングはチェックしません
        ファイル名の妥当性のチェックはしません
      マシン語ファイルの格納方法は N88/N80 DiskBASIC 仕様のみの対応です
      ※PC-8001 Disk BASIC でも 同仕様で書き込まれます
        PC-8001用の DiskBASIC を独自拡張したものには対応していません
      フォーマットの自動判別には対応していないので -fmt=10,11 指定が必要です
      添付の bas.*.d88 にはシステムはコピーされていません


 ◆ Cas2Cmt (-obj オプション)
    *.cas に従い、Bas2Cmt,Bin2Cmt,Cmu2Cmt,Ipl2Cmt,Cmt2Cmtします
    出力する CMTファイル名を *OBJ で指定する必要があります
    変換オプションが使えるので「BASICファイル名」等も任意に設定できます
    casファイルの仕様は、format.cas を参照してください

 ◆ Cas2Cmt
    *.cas ファイルを cmtファイルに変換します
    変換オプションが使えるので「BASICファイル名」等も任意に設定できます
    casファイルの仕様は、format.cas を参照してください


 ◆ Cmt2Cas
    Cmtファイルを解析します
    対応フォーマットは format.cas を参照してください


 ◆ T882Cmt
    t88からcmt形式に変換します


 ◆ T882Cas
    t88からcas形式に変換します
    *MARK,*SPACE,*BLANK,*USARTの情報も併せて取得します
    0.01秒未満の *MARK,*SPACE,*BLANK は無視します


 ◆ Bas2Cmt
    *.bas(BASICのメモリイメージ)からcmt形式に変換します
    BASICのリンクポインタを辿り、必要な範囲のみを抽出します
    リンクポインタが壊れているファイルは変換できません
    ジャンプ先がアドレスのままセーブされたファイルは、展開先が抽出元と異なる
    場合に正常に実行できません → -chk オプションで確認できます
    BASICファイルネームは「j80」で固定です
    直接変換できない場合は casファイルを書いて -all オプションを試してください
    　ASCII などがよく使っていた BASICとマシン語をいっしょにセーブしたもの等
    　BASIC末尾以降もcmtに含めます(EOF または 0x00 が 10byte 見つかるまで)

    [cmt8001 で変換に失敗するが、実機では読める場合の作業手順]
     ・実機で読んで、マシン語としてセーブ → BASICイメージに復元
    　1) 実機に読ませる
    　2) モニタからセーブ       (W 8021,FFFF) ...末尾は適当に調整可
    　3) cmt8001 で変換         (cmt8001 foo.wav → foo.cmt)
    　4) tools80 で変換         (tools80 foo.cmt → foo.raw)
    　5) ファイル名(拡張子)変更 (foo.raw → foo.bas)
    　6) tools80 で変換         (tools80 foo.bas -all → foo.bas.cmt)
    　　 ※ -all は、リンクが壊れていても無理矢理読むため
    [VB版 MEMO]
    　・0x80(C0)20番地を含むイメージを対象
    　・ファイル全部をcmt化(リンク,末尾0x00×10byte 無視)


 ◆ Bin2Cmt
    *.bin(ヘッダ＋マシン語のメモリイメージ)からcmt形式に変換します
    ヘッダに示された範囲のみを抽出します
    ヘッダ(4byte)：[LL HH][LL HH] -> 開始アドレス, 終了アドレス+1
    [VB版 MEMO]
    　・ソースファイルにヘッダなし
    　・ファイル全部をcmt化


 ◆ Cmu2Cmt
    *.cmu(CMU-800のシーケンス? データファイル)からcmt形式に変換します
    CMUファイルネームは「J80」で固定です


 ◆ N802Cmt


 ◆ Tk82Cmt


 ◆ Dmp2Cmt
    ・.dmpから cmt形式, インテルHEX形式, モトローラS形式 に変換します
      [出力オプション指定]
        無指定              MONITOR                         (CMTファイル)
        -cmt=pc80	<name>  MONITOR / PC-8801:MONITOR       (CMTファイル)
        -cmt=basic  <name>  BASIC(偽装) <, MONITOR/MON88>   (CMTファイル)
        -cmt=cmupc  <name>  CMU (PC-8001)                   (CMTファイル)
        -cmt=grace  <name>  テクポリ:GRACEモニタ (PC-8801)  (CMTファイル)
        -cmt=tkbs   <name>  TK-80BSのCMT出力用HEX           (CMTファイル)
        -cmt=tk85   <name>  TK-85/MP-85:MONITOR             (CMTファイル)
        -cmt=tk80           TK-80:MONITOR                   (CMTファイル)
        -cmt=mb68   <name>  MB688X:MONITOR                  (CMTファイル)
        -bin                N88 DiskBASIC BIN型式   (隙間は 00h で埋める)
        -raw                ベタイメージ            (隙間は 00h で埋める)
        -hex                Intel HEXフォーマット
        -mot                MOTOROLA Sフォーマット
        -name=<filename>    ファイル名等  (-cmt の対応フォーマットみ有効)
    ・dmpは書籍掲載のダンプリストに近いフォーマットのテキストファイルです
      多少の印刷フォーマットの違いやスキャン時のカラムの乱れは何とかします
      dmpファイルの仕様は、format.dmp を参照してください
    ・チェックサムエラーの有無にかかわらず cmt ファイルを出力します
    ・出力フォーマットの詳細は章末を参照願います

 ◆ Asm2Cmt
    ・8080, 8085, Z80 用のアセンブラです
    ・以下のオプションを受け付けます
      ・アセンブル (80系)
        -tgt=8080   8080の命令セットを受け付ける (default)
        -tgt=8085   8085の命令セットを受け付ける
        -tgt=z80    Z80の命令セットを受け付ける
        -asm        拡張子によらず IntelMnemonic とする ※
        -asz        拡張子によらず ZilogMnemonic とする ※
        ※拡張子が *.asm, *asz 以外の場合は必須
          -tgt=z80 が指定された場合は常に ZilogMnemonic が選択されます
      ・アセンブル (80系以外)
        -tgt=6800   MC6800
        -tgt=scmp   SC/MP
      ・出力フォーマット
        無指定              MONITOR                         (CMTファイル)
        -cmt=pc80	<name>  MONITOR / PC-8801:MONITOR       (CMTファイル)
        -cmt=basic  <name>  BASIC(偽装) <, MONITOR/MON88>   (CMTファイル)
        -cmt=cmupc  <name>  CMU (PC-8001)                   (CMTファイル)
        -cmt=tkbs   <name>  TK-80BSのCMT出力用HEX           (CMTファイル)
        -cmt=tk85   <name>  TK-85/MP-85:MONITOR             (CMTファイル)
        -cmt=tk80           TK-80:MONITOR                   (CMTファイル)
        -cmt=mb68   <name>  MB688X:MONITOR                  (CMTファイル)
        -bin                N88 DiskBASIC BIN型式   (隙間は 00h で埋める)
        -raw                ベタイメージ            (隙間は 00h で埋める)
        -hex                Intel HEXフォーマット
        -mot                MOTOROLA Sフォーマット
        -name=<filename>    ファイル名等  (-cmt の対応フォーマットみ有効)
      ・その他
        -debug      ログファイルを出力します        (デバッグモード)
        -debug -sym シンボルファイルも出力します    (デバッグモード)
    ・通常モードの動作
      ・2PASS目は解決できなかった式のみFIXします    (R6.6 まで)
        2PASS目もファイルを読んで処理をします       (R6.7 から)
      ・ログは出力しません
      ・エラーを検知した場合、最低限の情報をコンソールに出力し、即ABENDします
      ・エラーが発生した場合はオブジェクトを出力しません
    ・デバッグモードの動作
      ・2PASS目もファイルを読んで処理をします
      ・各PASSでエラーが発生した場合、そのPASSの最後までのログを出力します
        最初のエラー以降の処理結果(ログ内容)は信頼できません
        デバッグ時の見通しを良くする為に出力しているものです
    ・出力フォーマットの詳細は章末を参照願います


 ◇ Dmp2Cmt, Asm2Cmt の出力フォーマットと指定方法

    ・無指定                MONITOR

    ・-cmt=pc80<:name>      MONITOR / PC-8801:MONITOR
      PC-80系のモニタフォーマットです
      アドレスが連続していない場合はブロックを分けます
      name で88モニタのヘッダを付けることができます (先頭ブロックのみ)

    ・-cmt=basic            BASIC(偽装) <, MONITOR>
      BASIC偽装を想定したバイナリから BASICフォーマットのイメージにします
      識別子[0xD3]10byte + [ファイル名]6byte, [BASIC末尾:0x00]10byte(+α)も
      DMPファイル上(またはアセンブル結果)に用意しておく必要があります
      偽装するバイナリ中に 10byte以上連続した 0x00 が存在してはいけません
      アドレスが連続していない場合はブロックを分けます
      先頭ブロックのみがBASIC偽装となります
      続くブロックは MONITOR フォーマットとなります
      88モニタのヘッダには対応していません

    ・-cmt=tkbs             TK-80BSのCMT出力用HEX
      インテルHEX形式とほぼ同じです
      冒頭に改行が挿入されます
      エンドレコードに sum(0xFF) がありません
      エンドレコード後に改行がありません

    ・-cmt=tk85<:id>        TK-85/MP-85:MONITOR
      TK-85/MP-85 のモニタフォーマットです
      アドレスが連続していない場合はブロックを分けます
      id で「ファイル No.」を指定できます (省略時 : 0)
     「ファイル No.」はブロック毎に +1 されます

    ・-cmt=tk80             TK-80:MONITOR
      TK-80 のモニタフォーマットです

    ・-cmt=mb68<:name>      MB688X:MONITOR
      MB688X のモニタフォーマットです
      name でファイル名を設定できます (省略時 : J68)

    ・-bin
      N88 DiskBASIC の バイナリフォーマットで出力します (.bin)
      複数ブロックに分かれる場合の隙間は 0x00 で埋めます

    ・-raw
      ベタファイルで出力します (.raw)
      複数ブロックに分かれる場合の隙間は 0x00 で埋めます

    ・-hex
      インテルHEX形式で出力します (.hex)
      j80, u80 のデバッガ(メモリエディタ)での使用を想定しています

    ・-mot
      モトローラS形式で出力します (.mot)
      j68 のデバッガ(メモリエディタ)での使用を想定しています


 ◆ Chr2Fon
    フォント作成ツールです
    *.chr がソースです(text/SJIS) ["."：ドットなし / "."以外：ドットを打つ]
    j80 beta2.3から、フォントの添付を止めた代りに用意しました
    ・*EOF で、それ以降のデータを無視します
    ・*H=n で、8ライン以外のフォントも生成できます
      無指定の場合は 8 です
      フォント定義開始後は変更できません (無視します)
    ・*fmt=MCM で、MCM6570,6670系ののフォントも生成できます
      H=9 固定です
      フォント定義開始後は変更できません (無視します)


■謝辞■

・tools80 作成にあたり、次の方々に協力していただきました

  [cmt形式に関する情報提供および確認]
  ・Hiroshi Kanemoto <kanemoto@ops.dti.ne.jp>


・tools80 作成にあたり、以下の資料を参考にしました

  [Javaに関する資料]
  ・Java(tm) House Mailing List Homepage     http://java-house.etl.go.jp/ml/
  ・Core Java2 Vol.1 基礎編         Cay S.Horstmann/Gary Cornell ASCII出版局


■その他■

・Java版のリリースにあたり、名前と一部の仕様・機能を変更しました
    CMT-TOOL.EXE(VB版)           → Release 1.0
      ・CMT-8001.EXE 同梱
    tools80(Java版)                 Release 2.0～
      ・機能の変更点は、本文参照

・今後(も)、VB版のメンテはおこないません m(_ _)m


■履歴■

・history.txt を参照してください


    +------------------------------------------------------------+
        hal_8999@hotmail.com
        upd780c1@gmail.com
        https://twitter.com/upd780c1
        http://upd780c1.g1.xrea.com/
    +------------------------------------------------------------+
