Carry lab.の市販されていないFM-7/8用のC-DOSを、 ゲームソフトから抜き出して組み立てる方法 Fujitsu FM-7/8 (MC6809)篇

«Quick Links» 1. 概要 (summary)  2. C-DOS FMの仕様 (specification)  3. C-DOS FMのメモリマップ (memory map)  4. 「C-DOS FM+Super BASE-09」の抜き出しと組み立て方法 (how to build the "C-DOS FM+Super BASE-09")  5. F-BASICファイルシステムを扱うために R-DOSかK-DOSを同時配置 (support the F-BASIC file system with R-DOS or K-DOS)  6. その他 (etc.)


1. 概要 (Summary)

Carry C-DOS (I)は、1983年前半の初版を最後にアップデートされておらず、 改良版もないのですが、それは、Z80の話であって、 そもそも、MC6809機種用はまったく発売されていません。
ここでは、MC6809版である、C-DOS FMをゲームソフトから抜き出して入手し、 Super BASE-09を改造して、C-DOS専用版へ改造する方法を扱います。

Super BASE-09は、Carry lab.から市販されていたり、 I/O誌の1984/4〜8月号(もしくは活用研究)に掲載されていますが、 そのままではカセットテープへのファイル読み書きしか対応していません。 本誌に、ディスク対応方法についてのヒントだけはあります。


2. C-DOS FMの仕様 (Specification)

C-DOSのFM版はCarry lab.のメーカから外部には販売されておらず、入手方法がないわけですが、 実際にはゲームプログラムから抜き出すことができます。
FM-7/8共通で使えるようです。
外部コマンドやユーティリティが何もありませんが、とりあえず使えるようです。

とりあえず、Super BASE-09をこのC-DOS FMへ対応させ、C-DOS FMについて少しだけ解析しました。 C-DOS本体等について解析した内容や、その説明は、rev.2の作成キットの説明にあるので、 そちらを参照してください。

FM-7/8版(MC6809)は、モニタが存在せず、独自仕様のBIOS(Carry FM-BIOSと呼びます)のみがC-DOSに連結された構造になっています。 ファイルシステムは、2バイトデータがビッグ・エンディアンになっているため、 PC-8801版とは、 ディレクトリエントリの、開始アドレス、ファイルサイズ、実行アドレスと、ディスク毎のボリューム番号に互換性がありません。 また、システムコールはRST 28H/30Hが、それぞれSWI/SWI3になっています。
外部トランジェスト・コマンド"MON"がモニタ・コマンド機能だけを実現しています。 "MON"とCarry FM-BIOSの詳細については、WICS/BASEのモニタの部分の説明にありますので、 そちらを参照してください。しかし、Carry FM-BIOSについての情報は、I/O誌や別冊活用研究参照だけです。
Carry FM-BIOSは、少しヴァージョン違いがあるようですが、Super BASE-09と同じようです。 Super BASE-09とC-DOSのCarry FM-BIOSシステムコールSWIについては同じなので、I/Oや活用研究に記載があります。
DOSシステムコールのSWI3は、未解析です。(Z80とほとんど同じだと思うなぁ!!)

デバッガ(DEBUGコマンド)は、 Carry lab.販売のテープのみしか入手できなかったため、デバッガのマニュアルが入手できていません。 コマンドだけをまとめてあります。 残念にがら、ブレークポイントを設定できないようです。 (その代わりにBreakキーで停止できて、レジスタ表示される)
1バイト命令のSWIがCarry FM-BIOSシステムコールで使用済みのため、 2バイト命令のSWI2しか残っていないからだと思います。

    cdos_fm_cmd.txt ... C-DOS FMのコマンドについて。現状、MONとDEBUGのみ。(文字コードはJapanese S-JISです)

    Readme_CDOS_BASE09_KIT.txt rev.2 ... C-DOS FMについての詳細等もあります。(文字コードはJapanese S-JISです)


3. C-DOS FMのメモリマップ (Memory Map)


$0000
  |     free area or work area
$2000
  |     C-DOS FM
$2C00
  |     Carry FM-BIOS (TSモニタの入出力部相当)
$3000
  |     Carry FM-BIOS work area (おそらく)
$3200
  |     free area (for trangent command)
$3400
  |     DOS work area (directory + bit table)
$3D00
  |     DOS work area (etc.)
$3E00
  |     free area
$F200(?)
  |     system reserved area with FBIOS
$FFFF

* SP=$FC80、メモリ最後付近はFMなので、I/Oや共有メモリがあります。
* Super BASE-09/Debugger等の構成やCarry lab.のゲームとアドレス衝突することから、 後のC-DOSでリロケータブルになっていると想像できますが、v0.70はアドレス固定です。
* そういえば、v0.70は$F200くらいから使えない。FBIOSも使っているのでしょう。


4. 「C-DOS FM+Super BASE-09」の抜き出しと組み立て方法 (How to Build the "C-DOS FM+Super BASE-09")

Super BASE-09をC-DOS FM-7/8対応する方法についての詳細は、少し下のリンク先のアーカイブ内にあります。
FD版ゲームから特定の領域をコピーすれば、マスターが作成できるキットになっています。
なお、FRONT LINE/WILD WESTERNのみ確認していますが、 SPACE CRUISERも同じでしたので使えます。
PC-8801版は、POLAR STAR III、王将にも含まれていますが、 FM版POLAR STAR IIIには、含まれていませんでした。
rev.2では、C-DOS FMの仕様について、わかる範囲で説明を追加しています。

    CDOSFM_BASE09_KIT_20161209.zip ... C-DOS FM+BASE09作成キット rev.2 (2016/12/09)


5. F-BASICファイルシステムを扱うためにR-DOSかK-DOSを同時配置
(Support the F-BASIC File System with R-DOS or K-DOS)

さて、残るC-DOS FMに必要な機能となると、F-BASICとのファイル互換方法だと思いますが、 これについては、簡単で良い方法があります。
I/O誌 1984/5月号や活用研究掲載のR-DOS(Relocatable DOS)や、 The BASIC掲載の、Super BASE-09上のK-DOSを、 C-DOS上から適当なアドレスへロードしてそのまま起動できます。
R-DOS/K-DOSについては、 はせりんさんのWEB (http://haserin09.la.coocan.jp/) に情報があります。
特に、はせりんさんのR-DOSデバッグ情報は必須です!!
R-DOSからは"EXEC $2000"で、K-DOSからは"Q"コマンドで、そのままC-DOSへ戻れるので、 F-BASICのファイルシステムへは自由にアクセスできます。
この結果、C-DOS FMは、 「MC6809のための大変便利で柔軟性のある開発システム」になれます。

注意するべきことは、C-DOSディスクのままR-DOSからディスクアクセスすると、 TRK:00/SCT:03の"S"をチェックしないため、かなり悲惨になることです。
そして、K-DOSは、C-DOSから起動すると、BASEのアドレスがぐちゃぐちゃになりますし、 Carry FM-BIOS削除版Super BASE-09から起動するとやはり正しく認識できませんが、それでも問題はないようです。 K-DOSは、FIRQベクトルを読み、その内容が期待した値であれば、 Super BASE-09からの呼び出しと判断して、「Chained to BASE-09」を表示し、 BREAKキーが押されたときに、"E:"のエディタプロンプトへ飛ぶように設定するようですが、 Suepr BASE-09から呼び出せばそれも正しく動作するようでした。


6. その他 (etc.)

2004年頃に、FM77AV40を購入して遊んでみたら、 FRONT LINEからFM-7 C-DOSを構成することに成功…しかし使い道なし… だったのですが、 更に、ヤフオクで SuperBASEとデバッガを入手して起動可能にしました。 (2004年頃かな)
けれど、とりあえず、Z-80と違って結構改造が必要なようであきらめました。 I/Oを再入手して連載記事を見たら、やり方が書いてありましたが、 C-DOS用に書いてあるわけではないし、 今更6809を覚えて何かする気など当然なし。
せめてCarryのゲームを吸い上げようとしたら、全部アドレスが重なっていました。 Baseがリロケータブルなので、C-DOSもそのような改良されたものがある気がしますが、抜き出せたものは$2000固定。
その後、ゲームだけは無理やりC-DOSから起動できるようにしてありました。 2005年の話です。

ところがです、 2016年になって、ついに解析して改造してしまいました。
ただのアホです。

実は、FMシリーズをほとんど使ったことがなかったので、 2004年になってヤフオクで入手しました。
昔聞いたことがあって、FM77AV40が1台あれば、FM-7シリーズはオールマイティで、 FM-8がダメって知っていました。
結局、2016年になってFM-8も入手してしまいましたがね…


Back to previous page.