2011-02-01 Tue [ 昔のこと::古の技術 ]
今と余りに時代が違いすぎて分からないことが多いだろうから、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キロ前後のコンベンショナルが必要で、ちょっと設定が悪いとメモリ不足で動かない騒ぎを引き起こした(そしてアーティストはそういうことには疎かったので、アーティストのためにマシンを設定するのもチームのプログラマの仕事の一つだった)。
続きを読む▽
■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キロ前後のコンベンショナルが必要で、ちょっと設定が悪いとメモリ不足で動かない騒ぎを引き起こした(そしてアーティストはそういうことには疎かったので、アーティストのためにマシンを設定するのもチームのプログラマの仕事の一つだった)。
続きを読む▽






