Last updated 2023/12/17 since 2003
1. 概要 (Summary)
これは、1983年頭頃に、Carry lab.社から発売されていた、C-DOS (I)に関するWEBページです。
C-DOSと呼ばれるOSはたくさん存在しますし、
国内のホビーユーザ間では、「C-DOS II」や、九十九電器(Tsukumo)の「Convinient DOS」が有名でしたが、これらとはまったく別物です。
海外では、C-DOSと言えば、Digital Research, Inc.の有名な「Concurrent DOS」のことを指すはずですので、
グローバル・スタンダードの世界では、日本ローカルなC-DOSという名称は、まったく通用しません。
ここで扱うC-DOSは、一言で言うと、
I/O誌等で発表されたために当時よく使われていた、WICS/BASEをフロッピーディスク環境で扱うための開発環境であり、
後に、JETターミナルの日本語システムとして、パソコン通信で有名になった、
C-DOS II/XINA(BASEの発展形)の旧環境です。
C-DOSは、市販されていた機種が、
SHARP MZ-80B/MZ-2000(2200)/NEC PC-8801の3機種のみのようで、
新しい機種(88SR以降、MZ-2500等の3.5インチ環境)で動作しない等の問題があります。
他の機種用もあるようなのですが、メーカの外へは、少なくとも通常のルートでは出ていないようです。
そして、このC-DOSは、今更入手困難です。
カセットテープ版のWICS/BASEは、様々な機種用が発売されていたのですが、
1983年頃が最後版です。こちらも、今となっては、どの機種のものも大変入手困難になっています。
C-DOSの改良版については、最初の製品以外が商品化されず、外部に情報が出なかったため、
私がCarry lab.と何の関係ないこともあって、ほとんど何もわかりません。
このページの趣旨は、
発売されていたゲームソフト等から結構いろいろと抜き出せるし、
当時のパソコン雑誌にいろいろと発表されているので、
いろいろなC-DOSを作ろう、解析しよう、活用しようという、「C-DOS攻略WEB」です。
なお、Carry lab.社は、1990年を最後に営業を止めています。
C-DOSの特徴は、次の通りだと思われます。
C-DOSの改良版は、PC-8801版Victorious NINEから抜き出せる、
「Allmighty-DOS / Dolphin OS / Dolphin System」があります。
MZ/X1のDolphin OS/System の場合は、3.5'FDD対応、
C-DOS 8801形式を読み書き可能等のメリットがあります。
PC-8801版に関しては、SR以降、PC-8001mkII/SRに対応しているのですが、
TSモニタの仕様が大きく変わっていて、肝心の互換性がありません。
C-DOSは、1983年中頃の版を最後に、アップデート版が外部へは出なかったのですが、
Carry lab.内部では開発が続けられていたようです。
C-DOS I v2があるらしいのですが、
当方は持っていないので、このWEBには、市販版と市販ゲーム等から抜けるものの情報しかありません。
Victorious NINEから抜き出せるものは、v2まで到達していません。
この、C-DOS I v2の後、有名なMS-DOSファイルシステム互換かつ、
CP/M(MSX-DOS)メモリマップと基本的に互換性がある、
日本語対応のC-DOS IIへ移行したのでしょう。
C-DOS IIに関しては、1985年頃のI/O誌に紹介がありますが、
インターネットで検索した方が早いかもしれません。
PC-8801用であれば、フリー版(日本語入力FEPだけがない)も見つかって、入手できるはずです。
2. C-DOS (I) システムの説明 (System Explanation)
市販されたC-DOSは、Z80版しかありませんので、Z80版を中心に扱います。
非市販版しかない、Fujitsu FM-7/8(MC6809)用と、NEC PC-9801(i8086)用は、
非市販C-DOSの抜き出しと組み立て
の項目の中を参照してください。
2.1 C-DOS (I) システムの概要 (System Summary)
Carry C-DOSシステムは、Z80版に関しては、Monitor部とDOS部の二つから構成されています。
SHARP MZ/X1と、NEC PCでファイルシステムが違います。surface(side)とデータビットが反転されています。
X1も1983年の最初のものは、MZと互換なので注意が必要です。
FMと、NEC PCでもファイルシステムが違います。FMは、2バイト数値がbig endianです。
* C-DOSの基盤となる、TSモニタに関しては、WICS/BASEの説明を参照してください。
(参考になる月刊誌や別冊の紹介があります)
* RST 30Hシステムコールについては、市販版のマニュアルを探して参照してください。
2.2. C-DOS (I) システムの技術情報 (Technical Information)
* 入力コマンド等のアルファベットは、基本的に大文字入力でなければなりません。
* 全部調べる元気がないので、調査が進むにつれて、version upしていく予定です。
(前にやって必要性がないだけに、いつまでも進まない…
もちろん自衛隊が犯人だったが、今は無理だ…)
C-DOS環境では、TSモニタのシステムコールが拡張されます。
Z80版では、EF 2B, EF 11, EF 0E, EF 0Fの4つのシステムコールが拡張されます。
EF 10を使った場合、EF 11の実行時に、アクセス先がFDなのか、
テープなのかを示す情報が更新されません。
テープに対してアクセスされずに、謎のエラーになることがあるので、使わないようにしましょう。
例えば、TSモニタのL/Sコマンドや、WICS/BASE上で、
ファイル名の最初に"@"をつけると、ディスクサービスになり、
フロッピーディスクへロード/セーブが行えます。
ロード時に、ファイル名が"@"だけだとディレクトリ表示できます。
その時、エラー(EF 2BがCY=1を返す)になるので、副作用はありません。
C-DOS上で、WICS/BASEを使う場合の注意点は、市販ゲームから入手できる、
C-DOS FMとDolphin/Allmighty-DOS以外を除いて、
同じファイル名に対するオーバーライトができないことです。
「E:@<DOS コマンド>」による、DOSコマンドが使えるSuper BASE、
「@<DOS コマンド>」が使えるWICS以外では、いちいちDOSへ戻らないとファイルを消せないので、
1枚のディスクに番号をつけながらソースを次々セーブしていく、等の使い方しかできません。
MZ-2000/80BのWICSは、C-DOS付属のものでも使えないよ…
もちろん、雑誌掲載のものはテープ版でコマンド拡張がないので、全部使えません。
3. 市販C-DOSテクニック集、改造パッチ等 (C-DOS Technique and Modification Patches)
市販されたC-DOSは、1983年前半の初版を最後にアップデートされておらず、改良版もないため、
88SR以降で動作しない、MZ-2500の3.5インチFDDで動作しない等、数々の問題が存在します。
ここでは、C-DOSを改良する方法について記述しています。
3.1 C-DOS 2000をMZ-2500等の3.5'FDDで動作させる (80Bもv1.1だったら同じだろう…)
C-DOS 2000 v1.1は、
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の信号が来てしまうようです。
これは、3.5インチドライブの信号の仕様変更によるようです。
C-DOSはディスクアクセスが高速なのは良いのですが、
not ready/readyの正しい信号が入る前にreadyと判断してしまうのです。
したがって、C-DOSが"disk not ready"を検出することはまずないのです…
通常は、not ready判定までのwait処理の時間を大きくするだけで問題が解決するはずなのですが、
C-DOSにはwait処理そのものがなくて、これを追加しなければなりません。
JET-2200AやCarry lab.のディスク版ゲームも同じはずですが、
アドレスがずれているかもしれませんし、調べたことはありません。
この場合は、エラーが出た時に、高速で連続リトライすれば解決します。
実際の書き換えは次のようにすればOKです。
ただし、ディスクアクセスの度にWAITが入るので遅くなってしまいます。
これを直そうとすると構造的な大改造が必要です。
TRK:04 SCT:0C (MZ-mode) +$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程度にしてもかまわないのですが、
MZ-2500 6MHz動作では失敗してしまいます。
MZ-80B版もおそらく同じなのですが、私は2000版を使っていて、持っていないのでわかりません。
更に、もう一つ起動時に問題がありまして、時々、
「Close Disc Drive」と一度出て、それを超えると普通に動作するようです。
ディスクランプが消える前に再読み込み、あるいは連続読み込みすれば動作しますので、
そのままでも、問題なく使えるのは使えます。
ずっと前にパッチしてるけど、WEBに書くのを忘れています… そのうち整理追加します…
(犯人は自衛隊)
3.2 C-DOS 2000で80トラック使用する方法 (多分80Bも同じ)
MZのFDDについてですが、
純正の最初のFDDであるMZ-80BF等はトラック番号が0〜69の全70トラックしか
使用できることが保証されていません。
初期型の一部に例外があるようですが、実際にはトラック番号79までの全80トラック使用できますし、
新しいFDDであるMZ-1F07等ではトラック番号79までの利用が保証されています。
MZ-2000/2200/80Bでは、SHARP自身のものを含めて、
各メーカから発売された市販ソフトウエアは、
トラック番号70より後はunformatになっていたり、
他機種と共用ソフトでも、その部分は使わなくてよいようになっています。
C-DOSの場合は、
あらかじめ、別の80トラック対応ソフトウエアで物理フォーマットしておきます。
その後、普通にformatした後に、DUMPコマンドでTRK:00/SCT:02にある
bitmap FATのoffset +$8C〜+$9Fまでを00で埋めれば、
0〜79トラックまでフル使用可能となります。
(1ビット1セクタなので、上から16トラック毎に$20バイト使用されます)
この時、注意することは以下の通りです。
ユーティリティを少し改造すればいいだけの気がするのですが、
僕は、上記の方法を毎回やっています。
だって、どんなに頑張っても、10枚くらいしかディスクを作れないでしょ?
WICS/BASEの全市販ソフトと全雑誌の打ち込みソフト、自作ソフト、全部吸い上げても、
このくらいしかない… いらないよ…
MZ-80BとMZ-2000用の両方を合わせたら、15枚くらいあるかもしれないな…
…ということで、MZ-80B市販版も同じはずです。(持ってない!!)
3.3 C-DOS 2000のシークタイムを変更 (80Bもv1.1だったら同じだろう…)
C-DOS 2000のシークタイム変更は、以下のようにして実現できます。
20ms 6ms 30ms (no verify only, with headload) Trk:04 Sct:0C (MZ-mode) $EBC0 1A -> 18 or 1b $EBDE 09 -> 08 or 0b * ディスクダンプ・エディタでは、下2桁の+$C0と+$DEだけを参照してください。 * Disk Utilityは、別にパッチが必要だと思います。(formatだけかな? 未確認)
3.4 C-DOS 8801をSR以降で動作させる
C-DOS 8801は、もちろん初代PC-8801やmkIIでは問題なく使用できますが、SR以降では使用できません。
有名なC-DOS IIと比較して、C-DOS 8801について知っている人があまりにも少ないのは、
SR以降で動作しないからではないでしょうか。
正確には、SRだけは、N-BASIC V1-Hモードで起動することができます。
しかし、起動しても$0000にジャンプする等、処理によって確率的に暴走してリセット
さえ効かなくなったりします。
更に、V1-Sモードとなると画面が真っ暗になります。
これは実はテキストが表示されていないだけなので、
そのままSUPERコマンドを打ち込んで
Super Text Monitor (TS-8801 v2.x)を起動すれば操作そのものはできますが、
ちょっと困ります。(FH以降は、v2.xもおそらくダメです。そのうち暴走します)
このようになってしまう原因は、
N-BASICへの切替えにSR以降と非互換なROMアドレスを使用していることと、
TS-8801 v1.xのCRTCの設定方法がまずいことにありますので、これを修正します。
書き換え方ですが、上記の方法でC-DOSを立ち上げてから、DUMPコマンドで
セクタダンプさせて、Eを押して編集すればOKです。FR/MRはN-BASICで起動で
きませんので、別の環境(TF-DOSでOK)で書き換えるしかありません。
FH/MH以降でv2.xが暴走する場合も同じですが、書き換えくらいならできるかも。
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)
v2.xも書き換え方法はほとんど同じなのですが、気付いたのがつい最近なので、
まだ作っていません。
もちろん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はv1.2ではなく、v1.1だったりしますが、
v1.2とCRTC設定が同じアドレスですので、
上記のC-DOSの方法がそのままゲームでも使えます。
(POLATSTAR III、王将、NIDECOMCarryのFRONT LINE等)
4. 非市販C-DOSの抜き出しと組み立て (How to Build the Non Released C-DOS)
非市販のC-DOSを、ゲームソフト等からの抜き出して、組み立てる方法に関する情報です。
5. 文献情報 (References)
C-DOSに関する文献情報を、まとめています。
メーカー発売商品に添付されたマニュアル以外にも、紹介記事や、雑誌発表ソフトウエアが、
少しだけ存在します。
http://www.hi-sumi.com/ の「C-DOS Explorer」の説明のところに、少し、新しいC-DOS v2の情報があります。
6. リンク集 (Link)
以上