Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
6809lib
77AVTyper
D77ToRS232C
T77ToRS232C
d77
disk2tape
fm7code
lib
memToRS232C
misc
python
rawReadToD77
rawReadToRS232C
rs232cLoader
rs232cTest
rs232cTfr
t77
CMakeLists.txt
build.py
buildD77.py
empty.D77
makepackage.py
readme.txt
readme_e.txt

readme.txt

富士通FM-7シリーズ再稼働支援ユーティリティ

Windows用
DISK2TAPE.EXE      FM-7 WAV経由D77ディスクイメージ実機書き戻しユーティリティ
D77FILEUTIL.EXE    FM-7 D77ディスクイメージ内ファイルユーティリティ
T77SAVE.EXE        FM-7 T77テープイメージ作成ユーティリティ
T77LOAD.EXE        FM-7 T77テープからファイル抜き出しユーティリティ

FM-7/77シリーズ用
COMTEST            RS232C接続確認ツール
RAWREAD            RS232C経由ディスクイメージ送信ツール (Windows用D77化ツール付き)
232CFILE           RS232C経由ファイル受信ツール (Windows用エンコーダ付き)
MEM2COM            RS232C経由メモリダンプ送信ツール

連携技
D77ToRS232C        RS232C経由ディスクイメージ書き戻しユーティリティ (Windows用D77サーバーとFM-7/77用クライアント)



by 山川機長 (CaptainYS)

http://www.ysflight.com



For English help, type:
    D77FILEUTIL.EXE -h
    T77SAVE.EXE -h
	Also see readme_e.txt



更新情報
2018/11/20 RS232Cユーティリティを追加。いくつかツールがありますが、RAWREADを使うと実機でディスクを読んでイメージ化に必要な情報を
           WindowsなどのPCに送信できます。

2018/01/31 DISK2TAPE:-fm77av オプションを使って.WAVを作ると、拡張RAMを使って一本の.WAVに多くのセクタを詰め込むようにした。
           DISK2TAPE:-use7000 オプションを使うと、&H7000~&H7FFFを使って一本の.WAVに多くのセクタを詰め込むようにした。
                     ただし、このオプションを使うとDisk BASICから実行できないのでTapeモードで起動する
           DISK2TAPE:裏RAMを&HF7FFまでしか使っていなかったのを&HFBFFまで使って一本の.WAVに多くのセクタを詰め込むようにした。
           DISK2TAPE:表RAMも&H2000以降しか使ってなかったので、&H1800以降を使うようにして一本の.WAVに多くのセクタを詰め込むようにした。
           DISK2TAPEは一枚のディスクを書き戻すのに1時間半ぐらいかかるので、できるだけ.WAVの入れ替え回数を減らして、一度仕掛けたら、
           出かけてコーヒーでも飲んで帰ってこれるぐらいの時間放置できるようにしようと思った。

2018/01/12 DISK2TAPE:書き込み先ドライブを指定できるようにしたつもりだけど未テスト。

2018/01/10 DISK2TAPE:AV40でディスクを入れずに起動したときDrive Mappingの影響でドライブ0にアクセスできなくなっていた問題を解決。

2018/01/03 Version 1




[概要]
このプログラムは、FM-7/FM-77の実機をふたたび稼働させることを目標に書いています。

例えば、レトロPC用デモをWindows上で開発して、エミュレータXM7上でテストして、カセットインターフェース経由で実機に流し込むような場合を想定しています。

また、実機でまたあの思い出のプログラムを走らせてみたいが、もうディスクはイメージしか残ってなくて元のディスクなんてもう読めないよ、というような場合、D77ディスクイメージの情報をカセットインターフェース経由で実機に送り込むことができます。FM77AV40で動作確認しました。なお、F-BASICフォーマットじゃなくても行けます。1024byte x 5sectorフォーマットでも書き戻し成功しました。

なので、この目標のためにはD77イメージ、T77イメージに書き込みさえできればよかったのですが、せっかくなので、D77イメージからファイルを抽出する機能も書きました。さらに、XM7で使用可能なF-BASIC形式のT77ファイルからファイルを抜き出す機能なんていうのは本当に必要無かったのですが、結局書きました。自分用メモの意味もあるし。

機能としては、Apolloさん作のFTOOLSとかなりかぶるのですが、自分でD77/T77の中身を知りたかったのと、プログラムを直接WAVファイルに出したい、あと、コマンド一発でD77イメージをテープインターフェースで読める.WAVにしたいなど様々な理由でこの一連のプログラムを書くことにしました。

なお、FM-7のディスクの構造なんてほとんど忘れてしまった状態で、XM7を使ってリバースエンジニアリングしながら書いたので、間違ってる可能性もあるので、使うときは大事なディスクイメージファイルは必ずバックアップを取った上でご利用ください。

また、このプログラムの開発にあたって、FTOOLSをかなり参考にさせていただきました。それから、FM-7用のコードは実機に持っていく前にXM7上でテストできたのでかなり効率よく開発することができました。作者の方々、それと開発に携わった方々に感謝しています。



////////////////////////////////////////////////////////////

D77FILEUTILの使い方

既存のD77ファイルを読み込んでターミナルモード:
        d77fileutil d77file.d77

新規D77ファイルでターミナルモード:
        d77fileutil

既存のD77ファイルに対してコマンドモードで実行:
        d77fileutil d77file.d77 <オプション>

新規のD77ファイルに対してコマンドモードで実行:
        d77fileutil d77file.d77 -new <オプション>


オプション(オプション自体は大文字小文字区別なし)
-h
-help
-?
	ヘルプ表示

-new
	D77イメージを新規作成。このオプションは、D77イメージファイル名直後のみ
	有効。
	ただし、-newオプションを指定したとき、既に同名のD77イメージファイルが
	存在して、ライトプロテクトになっていた場合は失敗する。

-split
	D77のファイルフォーマットとしては複数枚のディスクイメージを
	一本のD77イメージファイルにまとめることも可能なような雰囲気だっ
	たので、そうなっていた場合、ディスク一枚分ずつに分割する。
	このオプションもファイル名直後のみ有効で、以降のオプションは無視
	される。

-files
	D77イメージ内のファイルの一覧表示。

-fat
	D77イメージのFile Allocation Table (Track 1 Side 0 Sector 1)をダンプ。

-dir
	ディレクトリ情報をダンプ。

-rawread filename-in-d77 raw-file-name
	D77イメージに保存されているファイルをそのまんま抽出。

-fmread filename-in-d77 fm-file-name
	D77イメージに保存されているファイルを、FM-FILEフォーマット
	(FTOOLS互換に作ったつもり)として抽出。

-binread filename-in-d77 bin-file-name
	マシン語ファイルをアドレス情報など抜きで抽出。

-kill filename-in-d77
	ファイルを削除。

-fmwrite fm-file-name filename-in-d77
	FM-FILEフォーマットのファイルを書き込み。filename-in-d77に
	"()", "[]", " ",または""を指定すると、ファイル名はFM-FILE
	の最初の8バイトから取る。

-srecwrite srec-file-name filename-in-d77
	SRECファイルを書き込む。なお、チェックサムは無視する。

-save text-file-name filename-in-d77
	テキストファイルをアスキー形式BASICファイルとしてD77イメージ
	に書き込む。

-savem binary-file-name filename-in-d77 startAddr execAddr
	バイナリファイルをD77イメージに書き込む。例えば、「あっ、この昔
	I/Oから打ち込んだプログラムってDEBUG出てたのか!知らなかった!
	やってみたいけど、でも今からどうやって直せばいいんだ!」というよ
	うな場合、-binreadで読み込んで、DEBUG適用して-savemを使って書き
	戻すような使い方ができる。
	なお、アドレスに0xまたは&Hをつけると16進数で指定可能。

-unprotect
	ライトプロテクトフラッグを解除。

-protect
	ライトプロテクトフラッグを設定。




////////////////////////////////////////////////////////////

T77SAVEの使い方

既存のT77イメージに追加でセーブ
	T77SAVE t77file.t77 <オプション>

新規T77イメージにセーブ
	T77SAVE t77file.t77 -new <オプション>

-h
-help
-?
	ヘルプ表示

-new
	T77イメージを新規作成。このオプションは、T77イメージファイル名直後のみ
	有効。

-fmwrite fm-file-name filename-in-T77
	FM-FILEフォーマットのファイルを書き込み。filename-in-T77に
	"()", "[]", " ",または""を指定すると、ファイル名はFM-FILE
	の最初の8バイトから取る。

-srecwrite srec-file-name filename-in-T77
	SRECファイルを書き込む。なお、チェックサムは無視する。

-save text-file-name filename-in-T77
	テキストファイルをアスキー形式BASICファイルとしてT77イメージ
	に書き込む。

-savem binary-file-name filename-in-T77 startAddr execAddr
	バイナリファイルをT77イメージに書き込む。
	なお、アドレスに0xまたは&Hをつけると16進数で指定可能。





////////////////////////////////////////////////////////////

DISK2TAPE.EXE      FM-7 WAV経由D77ディスクイメージ実機書き戻しユーティリティ

このプログラムを使うと、テープインターフェース経由でFM-7/77実機を使ってディスクドライブにD77イメージを書き戻すことができます。昔のディスク、イメージ化してあるけど、元ディスクなんてとっくに全滅したよ、というような場合に使えます。

ただし、コピープロテクトがかかっていたりすると書き戻せません。ディスクイメージにコピープロテクトがかかってたら、自力で解除してから書き戻してください。なお、F5,F6,F7セクタを検出するとエラーを出して処理を中止します。一応、オプションで、F5,F6,F7セクタがあったらE5,E6,E7セクタに変更して書き込むことができますが、当然、コードを解析して変更しないとコピープロテクションは解除できません。



[使い方]
disk2tape.exe d77filename.d77 <options>

[オプション]
-deldupsec
  同じ番号のセクタが同一トラックに存在していたら、片方削除。
  どっちのセクタが本物なのか判定できないので、成功するか不明。
-renumfx
  F5, F6, F7セクタがあったら書き戻しデータにはE5, E6, E7として出力する。
-drive 0|1|2|3
  書き込むドライブ番号を指定。でも、ぜんぜんテストしてないから動かないかも。

[出力]
山のような.T77ファイル(XM7で検証用)、.WAVファイル(実機用)



[実機での書き戻し]
必要なもの:

- ディスクドライブが生きてる実機
- データレコーダのふりをするPC (.WAV再生用)
- データレコーダインターフェースケーブル
- 忍耐力 (ディスク1枚に1時間半かかる)

まず、データレコーダインターフェースケーブルを持ってなかったら自作。半田ごてを使わせれば誰でも左に出るものはいないと思われる僕がやってFM-7用、FM77用で成功したんだからやればできる。一応、ピン配列は、

FM-7用   http://www.retropc.net/apollo/knowhow/cable/index.htm
FM-77用  https://www.beep-shop.com/blog/4274/

ここによると、

FM-7用 (8-pin DINコネクタ)
    +--+ +--+
   /   | |   \
  /    +-+    \
 /  7       6  \
/               \
|               |
| 3     8     1 |
|               |
\               /
 \  5       4  /
  \     2     /
   \         /
    +-------+
3 LOAD (GND)
5 LOAD (In)
1 SAVE (GND)
4 SAVE (Out)
6 Remote (+)
7 Remote (-)

なお、これは、本体コネクタを外から見た図、あるいは、DINコネクタのはんだ面を見た図。リモートはどうせPCをデータレコーダ代わりに使うからつなげる意味は無くて、左右間違えたらプラグをマイクとフォン端子差し替えればいいだけだから、重要なのは、
(1) 1-4と3-5であるということ
(2) オーディオケーブルの内側と外側を間違えないこと。オーディオケーブル切ったとき、外側に露出してるやつが多分グランドだから。テスタで調べるように。テスタがなかったら豆電球と乾電池と銅線で調べられる。
(3) 多分最近モノラルのデバイスって無いからステレオのケーブルを使うこと。

なお、GNDはプラグの根元に、データ(In/Out)は先っぽの二か所につなぐ。





FM-77用(mini 5-pin DIN)
    +--+ +--+
   /   | |   \
  /    +-+    \
 /  5       4  \
/               \
|      +-+      |
|      | |      |
|  3   +-+   2  |
\               /
 \             /
  \        1  /
   \         /
    +-------+
1 GND
2 Remote (+)
3 Remote (-)
4 Save
5 Load

このピンは左右非対称だから、コネクタをどっちから見てるかの心配はない。1番ピンがグランド。その対角にあるのがLoad用。ほぼ上にあるのがSave用。真ん中の2本はいらない。

コネクタ買ったら、ケーブルを挟むようにも穴に通すようにもなってなくて、一瞬焦るが、はんだがつきやすい材質らしく、僕の腕でもケーブル作れたからはんだ付けの基本だけやっとけば絶対大丈夫。

ケーブルができたら、データレコーダのふりをするPCが必要。

***** 再生するときはボリューム最大にすること。なお、だから間違ってスピーカーに出さないように。 *****

今まで、MacBook Pro 2008、DellのXPSデスクトップ(型番忘れたんだけど本体持ち上げるのが面倒で確認してない)で成功。ThinkPad X250で失敗。失敗するPCでも、出てる音をサンプルしてみると正しい波形が出ているようなので、どうも出力のボリュームを最大にしても足りないらしい。

なお、書き戻しには関係ないけど、もしも、FM-7実機からデータレコーダケーブル経由で.WAVにセーブしたものがあったら、そのまま読み込もうとしてもだめで、Audacityとか使ってボリュームマックスまで増強してからでないと読めなかった。でも、その機能は今はいらない。


次に、D77ファイルから山のような.WAVファイルを作成。くどいようだけど、コピープロテクトがかかってないディスクイメージしか使えない。なお、ディスク中の1ビットが大体20~40バイトに膨れ上がるので、80MBぐらいのWAVファイルになる。


そして、あとはひたすら実機で書き戻し。FM7/77本体側で、

RUN "CAS0:"

として、????_01.wavをデータレコーダのふりをするPCで再生。ディスクフォーマットプログラムが起動するので、フロッピーディスクをドライブ0にセットしてリターンキーを押す。なお、このディスクはフォーマットされてしまうので、大事なディスクをフォーマットしてしまって「あっ」と言わないように。

フォーマットが終わったら、????_02.wav~最後まで同じように実行。残りのWAVは順番は関係ない。あと、例えばシステムディスクとかだと最初の方しか使ってないから.WAVファイルを作るとき-fbasicオプションを追加しておくといいと思う。

僕はAudacityを使って.WAVを再生するけど、Audacityで再生するのであれば、****波形表示を拡大しない****。拡大してると、再生箇所がウィンドウ右端に行ったタイミングで波形の表示部分を切り替える瞬間があって、その微妙なラグでDevice I/O Errorが出ることがある。波形表示を非拡大でやったときは一度も失敗したことない。あと、再生中のPCでは他のプロセスは全部落とす。

あと、くどいようだけどボリューム最大で。あと、最近の安い(オーディオなんておまけな)ラップトップだと失敗するらしい。音にこだわってるPCの方がいいと思う。

Good luck!



ちなみに、FM-77AVを現役で使ってたころも、自力でディスクフォーマットプログラムなんか書いたことが無くて、DISK2TAPEを作るとき、それが心配だった。どうやって書いたかというと、F-BASIC 3.0のシステムディスクの"SYSDSK"が呼び出している"DFMCD"を解析した。どうやらDFMCD内では、まずフォーマットイメージを作って、あとはそれをひたすらTrack WriteコマンドでFDCに送り込むだけのようだった。プログラムによっては、標準の256バイトセクタではなく512バイトとか1024バイトセクタのものもある。そんなフォーマットを自力のプログラムで作れるか、まったく未知の領域だった。

しかし、XM7上でのテストは完璧で、失敗しなさそう。あとは海を越えてこちらに向かっているFM77AV40、FM77AVのディスクドライブが無事かどうかだった。

そして正月明け、FM77AV40が届く。なぜか、手元に「MAGUS」と「棋太平」と「九玉伝」と「プロ野球ファン」のディスクがイメージじゃなくFDそのままで残っていたので、AV40でまずMAGUSを起動してみる。これでディスクが動かなかったら速いFM-7としてしか使えない。まあ、それでも価値はあるっちゃあるけど。

電源を投入して、ディスクがガリガリ動く。「こいつ、動くぞ!」そして、懐かしいMAGUSの画面が!ディスクドライブ0は生きている!このままDISK2TAPEでF-BASICシステムディスクを書き戻そう、と、思ったのだがここでトラブル発生。

最初の.WAVファイルにセーブされたフォーマットプログラムがトラック0で固まってしまう。DRQもIRQも来ないようだ。エミュレータ上では完璧だったのになぜ!?気を取り直して、BIOSのRESTOREコマンドが成功しているかどうかを確認してみると、フォーマットを始める以前の問題で、RESTOREコマンドが失敗していた。

ふと思ったのは、ディスクドライブを入れていなかったから、BIOSがあきらめてディスクをオフにしてテープモードBASICを起動しているのではないか?ということ。そうであれば、生ディスクを入れた状態で起動すれば何か違わないか?そう思って、一枚未フォーマットの(DOSフォーマットだった鴨しれない) ディスクを入れて電源投入。そして、TAPE2DISKで作ったWAVファイルからフォーマットプログラムをロードして実行する。

なんと、あっさり成功。ほっと胸をなでおろす。とりあえず、使えることはわかった。その後、DISK BASICで起動した状態で実行すると、フォーマットプログラム以下完璧に動くことがわかった。

しかし、ちょっと問題があって、これを使うひとがDisk BASICで起動可能なディスクイメージを持ってなかったとして、未フォーマットのディスクがあればいいけど、既にフォーマット済みのディスクしか無かったら、電源を入れたときトラック0セクタ1を読み込んでIPLにジャンプしてしまうから起動できない。

生ディスクを入れて起動したとき、実機は何をやってるのか?

という話をしてみたところApolloさんから、FD1Eではないか、という返事が電光のごとく返ってきた。さすが、やっぱりすごい。

試しにドライブマッピングの確認。ドライブに何も入れずに起動して、

POKE &HFD1E,0
PRINT HEX$(PEEK(&HFD1E))

とやってみる。すると、B2が返ってきた。下位4ビットがマッピングだから、論理ドライブ0は物理ドライブ2にマップされている。今度は生ディスクを入れて起動して、同じコマンドを実行すると、B0。論理ドライブ0が物理ドライブ0にマップされている。

これだったのか。フォーマットプログラムの最初の部分に、

POKE &HFD1E,&H5F
POKE &HFD1E,&H5A
POKE &HFD1E,&H55
POKE &HFD1E,&H50
POKE &HFD1D,&H80

(最後の1行はモーターをオンにするだけ)と追加したところ、ディスクを入れずに起動してもあっさりフォーマットに成功するようになった。

FD1EはAV以前では使ってなかったはずで、それらの機種では書き込んでも無視されるだけのはず。なお、77AVのドライブでも書き戻しに成功した。

ところで、AV40で書いたディスクはAVでは読めないという話だったんだけど、普通に読めた。トラックの幅の半分しか書いてないはずなんだけど、まあ、書き戻しの手間が減ってよかったけど。

そういうわけで、現バージョンでは、生ディスクを入れて起動する必要は無くて、普通に電源を投入してテープBASICが起動したら、???_01.wav から順に RUN "CAS0:" していけばいいだけになった。




////////////////////////////////////////////////////////////

RS232Cユーティリティの使い方

RS232CユーティリティはFM-7/77側のRS-232CポートからPCのCOMポートに接続してデータのやりとりを実現するプログラムです。disk2tapeみたいな大技としてrawReadTo232C (FM-7ファイル名 RAWREAD) があり、これを使うと実機フロッピーからRead Track, Read Address Mark, Read Sector のコマンドで読める情報をターミナル経由でPCに転送することができます。似たようなツールとしてApolloさん作のD77IMGがありますが、RAWREADはどちらかというとFM-7系実機で自動的に読み出せる情報をできる限りPCに送って保存することを目的としています。PCで受信したディスクイメージは、D77化ツールでエミュレータ用D77ファイルに変換することができます。

Windows PC側ではCOMポートターミナルソフトを使います。実験した環境ではTeraTermを使いました。TeraTermのCOMポートの設定はFM-7/77側の設定と合わせておく必要があります。AV20/40以降ではI/OからRS232Cを設定するのでTeraTermの設定は、

    19200bps
    1 Stop bit
    No parity
    Hardware Flow Control

でうまく動いてます。一連のプログラムをどうやって実機に流し込むかという問題ですが、ファイルをCOMポート経由で受け取ってディスクにセーブする 232CFILE を転送してしまえばあとは楽ちんです。が、最初に232CFILE, 232CFILM の2本のプログラムをどうにか実機に転送しなくてはなりません。

ひとつの方法は、FM77AV Keyboard Emulatorの自動タイピング機能を使う方法で、.basファイルはそのまま入力として与えれば良くて、マシン語ファイルは自動タイピング機能に入力できるように.type というファイル名でパッケージに入っています。あるいは、パッケージの.wavファイルでテープI/Fから流し込むこともできます。

あるいは、Disk2Tapeを使ってパッケージに入ってる.D77イメージのディスクを実機上でフロッピーに焼いてしまってもいいです。

I/Oで鍛えたからタイプしてやるぜ!という人のために.dumpというテキストファイルに昔懐かしいダンプリストも入ってます。

いったん232CFILE, 232CFILMを転送してしまえばあとは RUN "232CFILE" でWindows側からファイルを流し込むことができます。流し込むときはWindows側ではテキストファイル *.232C をターミナルソフトにPasteしてください。

また、RS232C接続を確立したことを確認しないことには話が始まらないのでCOMTEST, COMTESTM の2本のファイルも最初に送り込むことをお勧めします。





- COMTEST
必要なファイル: COMTEST, COMTESTM

実行方法:
RUN "COMTEST"

受け側のWindowsでターミナルソフトを起動して、送りてのFM-7側でこのプログラムを実行すると"Hello from FM-7!"という文字列が届くはずです。またターミナルからいくつか文字をタイプしてEnterを押すと、FM-7側に送った字が表示され、FM-7側から"PING!"というメッセージが返ってくるはずです。

COMポートの設定が一致してないと字が化けたり抜けたりします。まずここで字が化けずに欠けなくならないと以下のツールを使う意味はありません。





- 232CFILE
必要なファイル: 232CFILE, 232CFILM

実行方法:
RUN "232CFILE"

送りてのWindowsのターミナルソフトからエンコードされたファイルを受け取ってFM-7側のディスクまたはテープに保存します。起動したらあとは待つだけ。ただ、ごみデータが送られてきた後だと混乱することがあるので、ファイルを送る前にESC, Enterを押してわざとエラーを起こしてから送り出した方が成功するかもしれません。うっかりターミナルでキーを押してしまっていて失敗したことがあったので。

Windows用送信ファイルエンコーダ: rs232cTfr.exe
実行方法
    rs232cTfr machingo.txt -srecwrite binary.srec
    rs232cTfr machingo.txt -savem binary.bin 0x1000 0x1200
    rs232cTfr basic.txt -save asciitext.bas

232CFILEで受信できる形式にファイルをエンコードします。asm6809みたいなので作ったSRECファイルとか、あと単純なバイナリとか、テキスト形式のBASICファイルをエンコードできます。なお、単純なバイナリからエンコードするときは、FM-7の開始アドレスと実行アドレスの指定が必要になります。

どうやってエンコードしてるかは、ソースを公開してるので読んでください。C/C++ぐらい読めますよね!?




- RAWREAD
必要なファイル: RAWREAD, RAWREADM

実行方法:
RUN "RAWREAD"

XM7用のディスクイメージ .D77 形式ファイルはベタファイルに比べて表現力がかなり高いとは言ったもののディスクの中身を完全に再現するほどの表現力はありません。そのため、コピープロテクトの種類によっては表現しきれないものがあります。そもそもコピープロテクト自体も当時の技術の貴重な記録なのでできればその情報を残しておきたいところなのですが、.D77にしてしまったらその情報は失われます。ディスクの完全に近いコピーを保存するにはKryoFluxのようなデバイスを使う方法もありますが、僕はKryoFlux持ってないという問題がありました。そういうわけで実機でKryoFluxに近いことをしようと思ったらありとあらゆるReadコマンドで抜き出せる限りの情報を抜き出すしかない、ということで作ったのがRAWREADです。PCに転送したディスクの読み取り情報は、rawReadToD77というWindows用ユーティリティ(ソースも公開)を使うことで.D77形式ファイルに変換することができます。これだけでXM7上で動作するイメージになる場合も結構あります。すべてクリア確認までしたわけではないですが。

D77ファイル作成ツールとしてよく使われていると思われるNDITT (Windows XP用)を使っていたのですが、よく失敗します。とくにコピープロテクトで意図的にエラーが発生していたりするとぜんぜんダメですね。実家から発掘してきたFM Music Worldなどはプロテクトの巻き添えを食って本来正常であるべきセクタが無いものと思ってしまうようでXM7で起動できませんでした。しかし、RAWREADを使って読みだしたデータから精製したD77ファイルはプロテクトを正常に再現し、普通に起動できました。

使い方は、まず受け側のWindowsでCOMポートターミナルを起動して、ログファイルの記録を開始します。そして、送り手側のFM-7系実機でRAWREADを起動します。FM-7側でイメージ化したいディスクをドライブに入れ、ドライブ番号、ディスク名(D77化するとき使う。あと後日の確認用に入れることをお勧め。)、開始トラック、終了トラックを指定して、最後にYを入力(なお、開始トラック以降はただリターンキーでも化)するとディスクを読んで内容の送信を始めます。AV40だと19200bpsの設定で大体40分ぐらいで一枚のディスクが転送できます。D77化するだけに比べてかなり余計なデータを送信しているからこんなに時間がかかりますが、D77イメージだけ欲しい人はSECTORINFOとSECTORDUMPだけあればいいので適当にBASICプログラムを解析していらないEXECを削除してください。送信が終わったら受けてのターミナルソフトでログを終了。ログファイルは生情報となるので最低三重にバックアップを取り複数個所に分散して冷暗所に保管してください。なお、複数枚のディスクを連続で送信して一本のログにすると、D77化ツールは複数ディスクを一本のD77ファイルにします。

Windows側D77化ツール: rawReadToD77
ターミナルで受け取ったログファイルを

    rawReadToD77 logfile.txt diskimage.d77

のような感じでコマンドラインからD77ファイル化することができます。単純なプロテクトだとそのままXM7で実行可能なディスクイメージになります。でも凝ったプロテクトだと手を入れないと実行できないです。がんばってプロテクト解除してください。なお、日本ではどうか知らないですが、アメリカではクラシックゲームの動態保存のためのプロテクト解除は合法化されたそうです。(https://www.digitaltrends.com/gaming/dmca-exemption-revives-defunct-single-player-games/)  日本も早くアメリカに追いつくといいですね。

ソースファイルは全部公開してるので中身を知りたい人は見てください。





- MEM2COM
必要なファイル: MEM2COM, MEM2COMM

実行方法:
RUN "MEM2COM"

FM-7のメモリダンプをPCに送信します。受け側のPCのターミナルにテキストで送ってくるので解釈は適当にやってください。C/C++コードぐらい書けますよね!?

プログラム自体は$1200ぐらいまでに収まってるのでそれより後半のメインメモリは送信できます。なお起動時に裏RAMをオンにするので裏RAMの内容も送信できます、というかF-BASIC ROMを送信できないけどそういう場合はあらかじめF-BASIC ROMを裏RAMにそっくりコピーしてから実行すればいいだけか。






-D77ToRS232C        RS232C経由ディスクイメージ書き戻しユーティリティ (Windows用D77サーバーとFM-7/77用クライアント)

長くなったので、readme_D77ToRS232C.txt を参照してください。