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も入手してしまいましたがね…