Carry lab.の市販されていないPC-9801用のC-DOSを、 ゲームソフトから抜き出して組み立てる方法 NEC PC-9801 (i8086)篇

«Quick Links» 1. 概要 (summary)  2. NEC PC-9801用の仕様 (specification)  3. NEC PC-9801用のメモリマップ (memory map)  4. NEC PC-9801用の組み立て方法 (how to build the "PC-9801 C-DOS")


1. 概要 (Summary)

Carry C-DOS (I)は、1983年前半の初版を最後にアップデートされておらず、 改良版もないのですが、それは、Z80の話であって、 そもそも、i8086機種用はまったく発売されていません。
ここでは、i8086版である、NEC PC-9801用のC-DOSを入手する方法を扱います。
残念ながら、SuperBASE i8086版はどこにもありませんので、 入手不可能なようです。
このC-DOSは、使い道がありません。 Flight in Hawaiの中にi8086版のBASEで書かれたソースが残っているので、 i8086版のBASEがあれば使い道があるのでしょうけど。


2. NEC PC-9801用の仕様 (Specification)

NEC PC-9801版(i8086)は、モニタとDOSが連結している以外、 8ビットの64KBのままの構成でコマンドもほぼ同じです。 (CS=DS=ES=SS)
但し、セグメントを指定して別領域メモリを扱うことができ、 DOSへビルトイン・コマンドが追加されています。
TS-9801とセットなので、呼び出し方はTS-9801と同じで、 BASICから、DEFSEG=&Hxxxxとしてロードして0番地を呼び出せば、どこでも実行できます。
ファイルシステムは、MZ/PC形式どちらも扱うことができます。 (FM形式はなし)
ドライブ番号の1〜4が5'2D 320KB、5〜8が5'2HD 1MB、9〜12が5'2DD 640KBとなっていますが、 どれも実体は320KB 2Dイメージで、先頭の320KB分しか使えないようです。


3. NEC PC-9801用のメモリマップ (Memory Map)


$0000
  |     Monitor TS-9801 and C-DOS (these are connected)
$xxxx(?... perhaps, about $2700)
  |     free area
$F700(?)
  |     DOS work area
  |         (perhaps, bit table. $F700 to $F7FF)
  |         (perhaps, directory. $F800 to $FFFF)
$FFFF

* 全部忘れました、メモくらい作っとくんだった… 犯人は自衛隊員達!!
* CS=DS=ES=SS ですが、データ領域のセグメントを設定してアクセス可能


4. NEC PC-9801用の組み立て方法 (How to Build the "PC-9801 C-DOS")

9801用テープ版フロントラインを入手して遊んでみたら、TS-9801を発見。 それどころかダンプしたらC-DOSとセットだった。
さっそく改造したら動作可能にできました。
気になるメモリの扱いですが、 セグメント設定コマンドが追加されただけでモニタもDOSも全部64KB扱いでした。 セグメントを設定してジャンプすれば、どんなアドレスでも動作します。 最初使い方がわからず、 逆アセンブラでコマンド処理部やTS-9801のIOCSコールを解析し、 16進数4桁判定ルーチンが8ビットと同じだとわかりました。
面白かったのは、ドライブ1-4が2Dで、5以降が8'2D、5'2DDに対応していたこ とです。
ただし、ディスクの内容そのものは2D扱い。 当時9801はほとんど触ったことがなかったし、 まさか9801版があるとは思わなかったので、大変楽しめました。

実際の方法については、また今度。 実は、結構書き換えが必要ですので、再調査しないと…
メモもどこかにあるかも…
全部、こうなった犯人は自衛隊員達です!!

ちなみに、全部2005年の話です。
昔もらったPC98の古いゲーム集で遊ぶため、憧れ(?)のPC-9801Eをヤフオクで入手し たのです。
Eは、5MHz/8MHzの両方があり、初代より有用です。5MHzがないと遊べないし。 そして、F/Mは内蔵5インチドライブが邪魔なのです。
それで、こうなったのです。



Back to previous page.