PCエンジンの開発環境(補足)

今と余りに時代が違いすぎて分からないことが多いだろうから、PCエンジンを作っていた時代について、いろいろと補足。
DOSについて
88年当時、使っていたのはDOS 3.1-3.3。DOSはマイクロソフトが作ったMS-DOSというヤツ。今では普通の人はまず画面を見ることがほとんどないが、見たければアクセサリ>コマンドプロンプトを選択することで見ることが出来る。
PCエンジンが開発されている間にDOS4、DOS5とバージョンは上がったが、DOS4はあまりに中途半端なバージョンで、開発環境として使えるか? と言われると微妙すぎたのでスルーされた。91年あたりからDOS 5.0が発売されたが、いろいろな都合で、結局、PCエンジンの開発機は最後まで3.1-3.3あたりのバージョンを使っていた。
さてDOSと言うヤツは8086というとても古くさいCPUに対応して作られていた…とはいっても、この8086は今のX86といわれるコード体系の最初の一歩で偉大な…いや、そうでもないけど、まあ大ヒットCPUだ。8086は扱えるメモリの上限が1メガバイトだったのでDOSが使えるメモリの上限も1メガバイトになる。この1メガバイトのメモリのことを「コンベンショナルメモリ」と呼ぶ。
コンピュータの持ってる全てのメモリ領域が1メガバイトで、画面表示用のメモリや、BIOSや、I/Oやいろんなものがあるわけだから、全部がDOSの物にはならない。だからDOSはそのうちの640-768キロバイトぐらいしか使うことは出来なかった。そして仮想メモリとかそういう気が利いたことは一切ない(DOS EXTENDERとかそういうのはムシ)。だから640キロのメモリなら640キロのサイズのプログラムまでしか動かない、とてもわかりやすい構造になっている(そしてPC-9801は640キロが上限だった)。
ところで1メガバイトで「エー?」と言うなかれ。当時は64キロバイトのメモリが凄かった時代なのだ。15倍もある1メガバイトは途方もないメモリ量だった。
PCが起動すると、まずDOS自体がコンベンショナルメモリに入り、システムとして動くようになる。メモリは全く保護されていないので、プログラムを1文字間違えるだけで、DOSそのものを壊してしまい、簡単にDOSはハングアップする。ウィンドウズで言えば「ブルーデス」するのが全く当たり前だった。ただしレジストリや遅延書き込みもなかったので、ディスクに直接アクセスするようなプログラムでもなければディスクの破壊は起らなかったし、DOSはおっそろしく小さかったから起動は10秒もかからなかったので、ハングアップしたら「ちっ!」とかいってリセットすれば良かった。
DOSは設定にもよるが、だいたいトータル120キロぐらいコンベンショナルを使った。次に日本語のFEP(今でいうIME)が入り、これがまた120キロバイトぐらいなくす。640-240で、残り400キロぐらいになる。この400キロでmakeとアセンブラだのリンカだのを同時に動かさなければいけなかった(細かい設定でもちろん残りメモリは変動した)。400キロとかいう残りは、ちょっと何かをするとパンクしてしまうサイズでとても辛かった。
具体的な例を挙げると、例えば9801のグラフィックエディタを作るとして、1画面の容量は128キロバイト。400キロバイトからアンドゥバッファを一つ取るといきなりメモリがドカ減りしてしまう。実際、PCエンジンの開発ツールでもPEはundoバッファを取っていたのもあり、400キロ前後のコンベンショナルが必要で、ちょっと設定が悪いとメモリ不足で動かない騒ぎを引き起こした(そしてアーティストはそういうことには疎かったので、アーティストのためにマシンを設定するのもチームのプログラマの仕事の一つだった)。


EMSとVZと常駐ソフト
これではたまらないので大流行したのが仮想86モードを使ったEMSと、それを使ってメモリを節約する仕掛け。
EMSをおおざっぱに説明すると「DOSが管理してない(しかしコンベンショナルに見える)アドレスの一部に大容量のメモリをアクセスできる覗き窓をつけて、データやプログラムをコンベンショナルから追い出せるようにする」仕掛けだ。
これはもともとはメモリが足りなくなってきたときに延命策としてロータス・マイクロソフト・インテルの三社が共通で規格として作ったのだけど、専用ハードが高すぎてあまりはやっていなかった。ところが386以上のCPUを持つマシンで、仮想86モードを使ってDOSでは何の役にも立たなかったプロテクトメモリをEMSとして使えるようにするソフトウェアが作られ、EMSは大流行した。で、これを使うことでFEPがEMSに移動したり、いろいろやれるようになって、結構メモリの空き領域を確保できるようになった。
だけど、もちろんこんな設定をアーティストが出来るわけがないので、新人のアーティストがやってくると、設定するのはやっぱりプログラマの仕事だった。
これが1988-1989の話で、このEMSで少しメモリに余裕が出てきた1989年に登場したのがVZ Editor。
9800円で発売され、最初は全然信じず購入したけど、history+xscriptだった僕の環境はあっというまにVZの常駐モードに取って代わられ、イースはこれなしでは出来なかった…といいたいぐらい便利に使わせてもらった。
と、これで「常駐」が出てきたので説明。この常駐は今良く言われる「タスクトレイに常駐する」とは全く意味が違う。
まずDOSはマルチタスクではなかった。だからタスクバーにいろんなソフトが動いていて、ワンセグ見ながら仕事するとか、エンコードしながらテキストを書くとなんて事は全くなかった。
テキストエディタを動かしている間は、エディタしか動かないし、アセンブラを動かすときはテキストエディタは必ず閉じなければならない。だけど、これでは余りに不便だ…というので登場したのが常駐ソフト、TSR(Terminate and Stay Resident)。これはプログラムを起動した後、メモリを解放せずにプログラムをメモリ上に置いたままにするテクニックで、これといくつかのテクニックを組み合わせることで「キーボードの特定の組み合わせで電卓とかメモが呼び出せる機能」とか、そんな様々な機能が無理矢理実現されていた。
超有名だったBorlandのsidekickとかホント役に立った。
でも、もちろん、ものすごく危なっかしいやり方なのでソフト同士の相性がすごくあって、ナニカトナニカは組み合わせると動かない…なんてのが当たり前だった。もちろん、この危ない組み合わせを熟知しているのもPC使っている人間の基本だった。

ところで歴史的な話をしておくと、このDOSの領域はWindows 2000より前のWindowsでは必ず必要な部分で、なおかつこのコンベンショナルメモリの1メガバイトは、歴史的な都合上、システムが保護出来ない問題があったので、3.1,95,98(meまで含む)は簡単にハングアップするOSだった。この問題が解決されたNT系になった今日でも、システム系ファイルを全部表示するにしてCドライブを見るとconfig.sysだのio.sysだのmsdos.sysだのautoexec.batだのといった、古いソフトとの互換性を保つための盲腸のようなファイルが残っていたりする。

FDについて
あと、このシリーズでFD、FDと書いているが、このFDは3.5インチではない。5.25インチフロッピーディスクだ。1988-89年には、まだ3.5インチは全く普及しておらず、使われていたのはMSXぐらいのものだった。
これまた歴史的な話を書いておくとマイコン初期には8インチと5.25インチ(8インチがフロッピーディスクで、5.25インチはミニフロッピーなのだ)のどちらも使われており、それが5インチの技術革新が著しく、80年代半ばには5インチが中心になる。そして、その前後に3.5インチや3インチやいろいろな5インチの後釜を狙った企画が乱立し、勝利したのは3.5インチ、という流れだった。
ちなみに5インチも、もともとは片面単密度80キロ > 片面倍密度128キロ > 両面倍密度256キロ > 両面倍トラック(640キロ) > 両面高密度(1024キロ)となった。
僕は最初から最後まで使ったことがある。
ネットワークについて
「ネットワーク」自体は存在した。
DOS3時代にNovelがNetwareを発売し、対抗してMSがLANマネージャーを発売していたので、1988年当時、既にLANは存在した。ちなみにインターネットは商用化(開放)以前。世の中はパソコン通信の全盛時代だ。
ではどうして使わなかったのか?
まず、当時はネットワークボードは1枚10万円以上するもので、話にならないぐらいお値段が高かった。
次にこれはDOSの問題になるが、コンベンショナルメモリをデバイスドライバが使いすぎた。400キロバイトほどしか残っていないところで、100キロバイト以上(バッファなどまでコミだとそれぐらい使った)のメモリを消費するLANマネージャーもしくはnetwareをコンベンショナルに載せる…となると、開発機としては役に立たなくなってしまう、というぐらいメモリを消費してしまう問題があった。
つまりネットワークなど使い物にならなかったのだ。
これがさっきのEMSで解決されたのが1989年頃だったが、まず当時はネットワーク関係がEMSにまともに対応していなかったし、対応してからあともいろいろな制限があり、非常に使いにくかったし、ハードの値段が高いのは変わりなかった。
だからPCエンジンで開発している間は、あまり実用性のあるものとはいえない代物だった、というのが本当のところだ。
と、いろいろな落ち穂拾い終わり。

LinkedIn にシェア
Pocket

6件のコメント

  • AGENT: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)
    FDといえば、89年に通っていた中学の視聴覚教室がPC-9801UV21を導入していたので、うちの中学校では3.5インチがスタンダードになってましたね。おかげで5インチ派だった僕は逆に不便だった・・・・・・

  • AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8
    こういう当時の環境を記述して補足しておくと、先に書いたPCエンジンの開発環境が
    どういう立ち位置のものだったのかが、よりわかりやすく理解できるのでいいですね。
    こうなると他のメーカーやハードがどういう風に開発してたのかも気になってきますね。

  • AGENT: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10
    >>はちはち様
    まさにそれが理由で書いてあるのです。twitterで当時ネットあったんですか? みたいな、自分からするとポカーンなことを聞かれたので(笑)
    >>gstron 様
    UV21は結構鬼っこで、98シリーズは最後まで5.25インチ、いわゆるミニフロッピーが主流で終わりました。しかもラップトップが3.5インチが中心になったので、ネジレ現象を起こしていて、良くデスクトップの98に3.5インチつけてましたね。
    PC/ATは僕が最初に買い出した頃はタワー型がゲーマー向けの主流で、フルサイズのATで、やっぱり5インチが主流でしたが、1990年代から3.5インチが主流に変わっていきました。

  • AGENT: KDDI-SA3D UP.Browser/6.2_7.2.7.1.K.1.5.1.120 (GUI) MMP/2.0
    確かに、当時の環境は色々補足しないといけないから大変ですね(汗)
    98のMS−DOS3.0〜5.0ならばギリギリ、Windows3.1くらいですか?
    FDも、1.25MフォーマットとIBM1.44Mフォーマット混在時代ですね?確か…1D》1DD》2D》2DD》2HD…1Dは日本橋からあっという間に無くなった記憶があります。
    てっきり、6502の開発専用機があるものだと…まさかこんな環境だったとは思いもしませんでした(汗)

  • AGENT: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.84 Safari/534.13
    >>沖野かもめ 様
    ギリギリ3.1時代ですが、PCE開発システムそのものは3.1で使ったことはありません。DOS5はテストはしましたし、人によってはDOS5環境もあったと思います。そしてPE,DFといったツールはDOSの98用のツールでATに移行せず、消えていくことになりました。

  • AGENT: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1
    はじめまして。
    天外2及びイースシリーズなどのFanのものです。
    ↑のPC9801についてあまりにも懐かしかったので
    コメントさせてください。
    まさか自分が初めて買ったPC9801+DOS3.3Dの構成でも
    PCエンジンソフトが開発されていたという事実に
    驚き、また縁を感じました。
    当時のPCゲームやるためには、メモリを確保するために
    FEPやマウスドライバなど常駐するソフトをけずり
    (Autoexec.batからはずしてDOS起動)
    ようやく起動したと思ったら、ゲーム中にハングしたりと
    非常にタイトな環境でしたし、ゲームするためには
    プログラマよりな知識が不可欠でしたね。
    いやー。なつかしい。
    駄文失礼致しました。

コメントは現在停止中です。