●●● Carry lab C-DOS について (2011/11版) ●●● Carry lab社のC-DOSに関するいくつかの改造について記述したドキュメント です。 発売されていたC-DOSとして存在するのはMZ-80B版、MZ-2000版、PC-8801版 で、MZ-2000用とPC-8801用が発売されたのが1983年6月頃だと思います。昔、 Carry lab社が解散する少し前に問い合わせたことがありますが、C-DOSについ ては83年に発売された後、一度も改版されなかったそうです。 おそらく、社内の開発システムとしては、もっと多くの機種用が存在したで しょうし、時代に応じて改良されていったのでしょう。 さて、C-DOSはもう古いソフトウエアで、そもそもCarry labが解散して25年 以上経過しています。そこで、C-DOSを新しい機種でもまともに使えるように 改造したり、改良版を入手する方法についていろいろと記述してみます。 ○ C-DOS 8801をSR以降で動作させる C-DOS 8801は、もちろん初代8801/mk2では問題なく使用できますが、SR以降 では使用できないといってもいいような状態です。有名なC-DOS IIと比較して、 C-DOS 8801について知っている人があまりにも少ないのは、SR以降で動作しな いからではないでしょうか。 正確には、SRだけはN-BASIC V1-Hモードで起動することができます。しかし、 起動しても$0000にジャンプする等、処理によって確率的に暴走してリセット さえ効かなくなったりします。 更に、V1-Sモードとなると画面が真っ暗になります。これは実はテキストが 表示されていないだけなので、そのままSUPERコマンドを打ち込んでSuper text monitor (TS-8801 Ver2.x)を起動すれば操作そのものはできますが、ち ょっと困ります。 このようになってしまう原因は、N-BASICへの切替えにSR以降と非互換なROM アドレスを使用していることと、TS-8801 Ver1.xのCRTCの設定方法がまずいこ とにありますのでこれを修正します。 書き換え方ですが、上記の方法でC-DOSを立ち上げてから、DUMPコマンドで セクタダンプさせて、Eを押して編集すればOKです。FR/MRはN-BASICで起動で きませんので、別の環境(TF-DOSでOK)で書き換えるしかありません。FH/MH以 降はV1-Sで「N」「8」「0」を同時に押してリセットすればN-BASICモードにな ります。 TRK:00 SCT:01 +$80 F3 3A C2 E6 E6 F9 F6 04 D3 31 C7 (N-BASICへの切替え) TRK:02 SCT:08 +$25 AF D3 51 3E 80 D3 68 (V1-Hで固まらない) (3E 80 D3 68 AF D3 51が元のコードでTS-8801 $0725〜) +$6A E4 (V1-Sでテキスト表示) (C4が元のコードでTS-8801 $076A) もちろんN-BASICのない88VAではこれでも動作しませんが、TS-8801そのもの はN88モードでも関係なく動作して、TF-DOSのTS-8801版ではそうしているので、 先頭セクタのローダだけをN88モードで動作するように置き換えればVAで動作 するような気がします。 さて、この修正ですが、Carry labのゲームに対しても有効です。JELDA 2 / Chack'n Popより前、つまりmkII時代かつC-DOSベースのゲームは、SR以降で動 作させるためにはN-BASICモードで起動する必要があったり、起動時のテキス トが表示されなかったりするのですが、同じ場所を書き換えることで対応でき ます。 ゲームで使用されているTS-8801はVer1.2ではなく、Ver1.1だったりします が、Ver1.2とCRTC設定が同じアドレスですので上記のC-DOSの方法がそのまま ゲームでも使えます。(POLATSTAR III、王将、NIDECOMCarryのFRONT LINE等) ○ C-DOS 2000と3.5'FD C-DOS 2000は、3.5'FDDへコンバートしてMZ-2500の2000モードで動作すると ディスクアクセスが、必ずDisk not readyになってしまいます。 原因は、MZ-2000の5'FDDのFD ready信号にあります。 FDがreadyかnot readyかは、MZの場合、モーターをONにしてからしばらく ready信号が入ってきます。その後、not readyかreadyの正しい信号が入りま す。MZ-2500でMZ-1F07等を外付5インチとしてつないでも状況は同じなので問 題は発生しないのですが、内蔵3.5インチの場合は逆、つまり最初にnot ready/readyが正しく判定可能になる前は、X1と同じくnot readyの信号が来て いるようです。これは、MZ-2000で使用していなかった、FDDのReady信号を利 用するように変更したことが理由だと思われます。 しかし、C-DOSはディスクアクセスが高速なのはよいのですが、not ready/readyの正しい信号が入る前にreadyと判断してしまうのです。したがっ て、C-DOSがDisk not readyを検出することはまずありません。 だから、not ready判定までのwait処理の時間を大きくするだけで問題は解 決するはずです…と思っていたのですが、C-DOSはwait処理そのものがなかっ たようで、これを追加しなければなりません。JETやCarryのディスク版ゲーム も同じはずですが、アドレスがずれているかもしれませんし、調べたことはあ りません。 実際の書き換えは次のようにすればOKです。ただし、ディスクアクセスの度 にWAITが入るので遅くなってしまいます。これを直そうとすると構造的な大改 造が必要です。 TRK:04 SCT:0C +$7D CD 90 EE (21 00 60が元のコードで実アドレス$EB7D〜) TRK:04 SCT:0F +$90 C5 06 03 21 00 B0 2B 7C B5 20 FB 10 F6 C1 21 00 +$A0 60 C9 (元のコードは空領域で実アドレス$EE90〜) * 4MHz時は21 00 B0を21 00 80程度にしてもかまわないのですが、6MHz動作 では失敗してしまいます。 ○ C-DOS 2000で80トラック使用する方法 MZのFDDですが、実は純正の最初のFDDであるMZ-80BF等はトラック番号が0〜 69の全70トラックしか使用できることが保証されていません。実際にはトラッ ク番号79までの全80トラック使用できますし、新しいFDDであるMZ-1F07等では トラック番号79までの利用が保証されていて、トラック番号83までの全84トラ ックが使用できるのですが、MZ-2000/2200/80BではSHARP自身のものを含めて、 各メーカから発売された市販ソフトウエアはトラック番号70より後はunformat になっていたり、他機種と共用ソフトでもその部分は使わなくてよいようにな っています。 例外はドリームランドくらいで、AUTO RUNをトラック番号80以降に置くこと をコピープロテクトにしていました。地獄の練習問題やHYDLIDE IIといったMZ としては新しいゲームでもこのルールを守られています。 しかし、もったいないですし、SHARP DISK BASIC等は、全80トラック利用す る方法が知られていて、80トラック化自体は結構メジャーです。 C-DOSの場合は、format後にDUMPコマンドでTRK:00/SCT:02にあるbitmap fat のOffset +$8C〜+$9Fまでを00で埋めれば0〜79トラックまでフル使用可能とな ります。(1ビット1セクタなので、上から16トラック毎に$20バイト使用されま す)この時、注意することは以下の通りです) ・この状態でBACKUPコマンドを実行すると、bitmap fatの状態がおかしくな るので、手で修正します。(何故か$46トラック目の一部だけが利用不可能 になるので、+$8C〜+$9FまでをFFか00で埋めて正しい状態にする) ・'83年頃のI/O誌に掲載されたPACKコマンド(Gerbage Collectionというか Compactionを行う)をそのまま実行するとディスクが破壊される。 ○ C-DOS 80Bの作り方 C-DOSは80B用も発売されていましたが、2000用を改造して作ることも簡単に できます。 具体的にはTRK:$02/SCT:$01からの$0000〜$14FFのMonitor TS-2000を Monitor TS-1000に置き換えるだけでそのまま動作します。注意すべきことは、 $00F0からの3バイトをTS-2000と同じようにC3 10 15としておくことだけです。 TS-1000はI/O誌、WICS・BASE本、80B活用研究に掲載されていますし、Carry lab発売のゲーム、その他に含まれています。 SuperBASE、WICSについても同様ですべて公開されていますので、80B用の C-DOSは本体がなくても完全に作ることができますが、WICS Compilerは、アド レスがDOSと重なっていますので、ソースを入力してコンパイルしなおす必要 があります。 今から80B用のC-DOSを入手するのは大変難しいと思います。 ○ その他 Victorious Nine 88用ディスク版には、C-DOSの改良版と思われるDOSが入っ ています。 ・Allmighty DOS (PC-8801用、多分8001mk2可) + Super BASE 8001mk2SR ・Dolphin OS (X1用) + Super BASE X1 ・Dolphin System (MZ-2000用) これらを使えるようにする方法や、このディスクに残っているファイルと88用 ゲームのC-DOSを合わせてC-DOSの再構成にチャレンジ、等がネタとしては考え られますが、気が向いた方はチャレンジしてみてください。 ちなみに、Allmighty DOSは、コントロールコードが違っていてあまり利用 価値がありませんが、無改造で88SR以降で動作しますし、Dolphin OSは普通に 入手不可能なC-DOS X1として使用できます。Dolphin Systemは88モード/MZモー ド切替え可能なC-DOSとして動作します。(X1/88版も88モード/MZモード利用可) TS-X1はMZのテープを読み書きできますので、死んだMZのテープデッキの代 わりにもなります。 今更どうでもいい話ばかりですけど。 その他、少し前に77AVを購入して遊んでみたらFRONT LINEからFM-7 C-DOSを 構成することに成功…しかし使い道なし…だったのですが、SuperBASEとデバッ ガを入手して起動可能にしました。けれど、Z-80と違って結構改造が必要なよ うであきらめました。I/Oを再入手して連載記事を見たら、やり方が書いてあ りましたが、C-DOS用に書いてあるわけではないし、今更6809を覚えて何かす る気など当然なし。せめてCarryのゲームを吸い上げようとしたら、全部アド レスが重なっていました。Baseがリロケータブルなので、C-DOSもそのような 改良されたものがある気がしますが、抜き出せたものは$2000固定。なお、 FM-7版はFM-8でも動作するはずです。 X1版C-DOSもゲームから抜けます。驚いたことにディスクはMZ互換。セット になっているTSモニタの書き換えアドレスが違っていて、C-DOSそのものが書 き換えをパスするようになっていましたので、全部書き換えて正しく起動する ようにしてみました。それで、TS-X1を調べてみたら、全部で4種類はあって、 更にC-DOSのアドレスはどれにも当てはまりませんでした。  なお、X1版C-DOSはUtilityの物理format以外は、MZ版がそのまま使用可能で す。 9801用テープ版フロントラインを入手して遊んでみたら、TS-9801を発見。 それどころかダンプしたらC-DOSとセットだった。さっそく改造したら動作可 能にできたのですが、FM版よりも更に使い道なし。気になるメモリの扱いです が、セグメント設定コマンドが追加されただけでモニタもDOSも全部64KB扱い でした。セグメントを設定してジャンプすれば、どんなアドレスでも動作しま す。最初使い方がわからず、逆アセンブラでコマンド処理部やTS-9801のIOCS コールを解析し、16進数4桁判定ルーチンが8ビットと同じだとわかりました。 面白かったのは、ドライブ1-4が2Dで、5以降が8'2D、5'2DDに対応していたこ とです。ただし、ディスクの内容そのものは2D扱い。当時9801はほとんど触っ たことがなかったし、まさか9801版があるとは思わなかったので、大変楽しめ ました。Flight in Hawaiの中にBASE86で書かれたソースが残っているので、 BASE86があれば使い道があるのでしょうが。 少なくとも、他にMZ-700版はあって、2000用のDOSがほぼそのまま動作する はずなので、Carryのゲームを入手すればC-DOS 700は構成できそうですが、 このあたりはレアソフトなようで、高価なので買うのが馬鹿らしいです。かと いって、WICS/BASE本から打ち込む気などもっとありません。 こうなると、ゲームがいろいろ出ていたIBM-JX版もあるんじゃないか、とか、 もしやIBM-PC/ATでも動くんじゃないか、とか、他にあるのかと夢が広がりま すが、もっと触ったことがない、ソフト入手が不可能そうで邪魔になりそうな 機種を入手する気はさすがに起きないです…それどころか、何台も溜って置場 に困り、田舎に置きっぱなしにしてあったのですが、大変不評で、使わないし で、さすがに古PCはもういいやと思いました。それで、古PCは、エミュレータ 開発の比較用に必要なMZ-2000以外全部処分してしまいました。従って、この ドキュメントに詳細情報が追加されることはなさそうです。抜きだした奴を調 べりゃわかるのはわかるのですが、今更どうでもいいやろ… 以上