SSブログ

MS-DOSユーザーズ・ワークベンチ(月刊ASCII 1989年5月号5) [月刊アスキー廃棄(スクラップ)]

この号の「MS-DOSユーザーズ・ワークベンチ」は8086系マシンでメモリが足りないMS-DOSでの苦労が思い出される解説記事だった。
ASCII1989(05)d01MS-DOS漫画_W520.jpg
読み返すと面白かったのでスクラップする。
起動しても何も起こらないプログラム
 MS-DOSでそのまま実行できるプログラムは,“.com",".exe",".bat"のいずれかの拡張子がついたファイルであることは3月号で話した。実は,このほかにもデバイスドライバというプログラムがあって,たいていの人はそのお世話になっているはずだ。デバイスドライバは,config.sysというファイルに登録しておくことで,システムの起動時に,システムに組み込まれたり,adddrv.exeを使うことで,起動後のシステムに常駐させることができる(注1).
 MS-DOSは,基本的にシングルタスクのオペレーティングシステムなので,同時に複数のプログラムを動かすことはできないが,一部のプログラムは,メモリ上に常駐し、あたかも同時に複数のプログラムが動いているかのような状態になる.
 たとえば,ATOKやVJEなどの日本語入力フロントプロセッサが,その代表選手だ.MIFESなどのエディタを使っているときでも,CTRL+XFERで,ただちに起動し,日本語を入力することができる。まるで,MIFESとATOKが同時に動いているような感じがするのが不思議である.
 こうしたことをシングルタスクのオペレーティングシステムで実現するには,割り込みという仕掛けを利用するらしいのだが,詳しいことを知る必要もないし,ぼくも説明できない.
 いずれにしても,そういうプログラムの作り方で,疑似的にマルチタスクをしているような状況を作り出すことができるわけだ。
 デバイスドライバ以外にも,メモリに常駐するプログラムがある.たとえば,neko.comである.カーソルを猫が追いかけるだけという単純なプログラムだが,アッという間に日本中のPC-9801を席捲したことは記憶に新しい。
 このプログラムを起動すると,一匹の猫が画面に表示される.そして,文字を入力したり,ファイルを表示させたりするなどで,カーソルが動くと,それを猫が追いかけていくわけだ(写真1)。単純にそれだけのプログラムであれば,たぶんここまでは流行しなかったろう.neko.comが画期的だったのは,それがTSRと呼ばれるジャンルのプログラムだった点だろう.TSRは,Terminated and Stay Residentの頭文字をとったもので,日本語では常駐終了型プログラムと訳される(図1)。つまり,neko.comは起動後,自分自身をメモリ上に常駐させ,ずっとカーソルの動きを監視し,それにあわせて猫のグラフィックスを表示させるのだ。ということは,猫がいても,dirとか、typeなどのcommand.comの内部コマンドはもちろんのこと,一部のアプリケーションでさえ動かすことができるのだ。
 TSRの形態を持ったプログラムは,4月号の特集で紹介された環境整備ソフトにもいくつかあるようだ。最近では,マウスのドライバが,デバイスドライバとしてではなく,TSRとして提供されることが多くなってきている(注2).また,フリーウェアでは,スクロールアウトした画面を取り戻すxscriptや,ishファイルを受信したとたんにデコードを始めるrishなどがある.おもしろいところでは,Multiplan用に発売されているPop-GRAPH(写真2)などのような,アプリケーションに別な機能を付加する一種のアドイン型ソフトもあるようだ。
 これらのプログラムは,起動しても何も起こらず,すぐに,command.comのプロンプトに戻る,そして,ユーザーが必要なときに,特定のキー操作をしたり,表示文字列などが何らかの条件に合致した場合に,プログラムが提供する機能を呼び出し.それが実現される。
注1) adddrvは、本来config.sysファイルによって起動時に登録しておかなければならなかったデバイスドライバを,システムの起動後に組み込むためのコマンドである..
 adddrv atok.drv
などのように行う.atok.drvには
device=atok6a.sys
device=atok6b.sys
のように書いておくadddr.exeを用いて組み込んだデバイスは,
deldrv.exe
で切り放すことできる.
注2) マウスドライバは,以前は,mouse.sysのようにデバイスドライバの形をとるものが多かったが,最近では,QuickBASICに付属するマウスドライバのようにmouse.comとして,TSRの形式で提供されるようになってきている.これは,ユーザーがconfig.sysを修正することなく,容易にマウスを組み込んだり、外したりできるようにするためと思われる.


ASCII1989(05)d02MS-DOS漫画写真1_W520.jpg
ASCII1989(05)d02MS-DOS漫画写真2_W520.jpg
懐かしいことだらけだ。ちょっと感覚が違うのは私は、「まるで,MIFESとATOKが同時に動いているような感じがするのが不思議である.」とも「疑似的にマルチタスクをしているような状況を作り出すことができるわけだ。」とも当時考えなかった。この感覚の差は何だろうか。おそらく割り込みを使ったプログラムを作ったことのあるなしによるものだろう。さらにもっと素人ならマルチタスクという概念すら知らないため筆者である小形克宏氏のような感覚はなかっただろう。
 neko.comも懐かしい。VRAMの空きエリアに常駐していため他のソフトがその物理メモリにアクセスすると誤動作した。これをneko.comはウイルスであると記事に書いたマスコミ関係者がいた。今も昔も半可通のマスコミ関係者は確かめもせず記事にして恥をかいている。

中略

TSRの常駐のさせかたのノウハウ
 TSRは,メモリ上に常駐するため,必ず,ある程度のメモリを占有する.MS-DOSが管理できるメモリ容量は640Kbytesだから,そこからMS-DOS自身,command.com,そして,日本語入力フロントプロセッサをはじめとした,各種デバイスドライバなどの占有するメモリを差し引いた部分が,ユーザーが自由に使えるメモリとなる.ここに,いくつかのTSRを常駐させると,メモリ容量の残りが不足し,一太郎などが起動できないといったことが起こる(注3).
 TSRの起動は,autoexec.batの中に書いて,システムの起動時に続けて起動するのが普通だが,このとき,環境変数の設定前に常駐を行わせるように,autoexec.batの中で書いておくと,ほんの少しではあるが,メモリを節約することができる.環境変数設定後は,それぞれのTSRがすべての環境変数を知っている状態になり,もし,それが必要でない場合は,メモリの無駄になってしまうからである.
 MS-DOSのVer.3.3の場合,環境変数が何も設定されていない状態では,“PATH=”と“COMSPEC=A:\COMMAND.COM"という文字列が自動的に設定されるようだ。これが最低限の環境設定状態である.だから,この時点で,TSRを常駐させるのだ。
 そのためにも,autoexec.batの中では,プログラムをpathに頼らず,フルパス指定して起動させる。たとえば,neko.comが,\usr\binにある場合は,\usr\bin\nekoとして起動するわけだ.
 そして,必要なTSRをすべて常駐させた後に,pathをはじめとしたさまざまな環境変数を設定するわけだ.
 どうして,そこまでしてメモリの節約をしなければならないのかというと,ちょっとしたハッカー気分でchkdskコマンドを実行して,メモリの残りの容量を見てほしい。たぶん,日本語入力フロントプロセッサをはじめとした,各種のデバイスドライバやTSRで,メモリの残り容量は400Kbytesをきっているに違いないだろう.400Kbytesをきると,一太郎はまず起動できないし,通信ソフトのcctなども,起動はできても、できることが限定される.あるいは,makeなどのプログラミング用のツールが,ほかのプログラムを呼び出せなくなるといったことが起こる。かくいうぼくの場合は、メモリの残り容量は,300Kbytesをきっている.だから,一太郎を起動する際には,常駐させたTSRやシェル類を解放し,メモリを空けるといった姑息なことをやっている(図3).
 だが,こうした苦労をするのも,あともう少しの辛抱だ。というのも,MS-DOSの管理できるメモリ容量を拡大するEMS(注4)が普及しつつあり,日本語入力フロントプロセッサなどのシステムは,こちらに追い出される傾向にあるからだ。EMSは,MS-DOSの管理外のメモリを自由にアクセスするための仕掛けで,Expanded Memory Specification文字をとったものだ。たとえば日本語入カフロントプロセッサの場合,一部がMS-DOSに常駐し,残りをEMSの管理下のメモリに持っていく。これだけで,VJEやATOKなら100Kbytes近くが浮くことになるのだから,その効果は絶大だ。EMSは,アメリカでは,Lotus1-2-3などのメモリの容量によって扱えるワークシートの大きさが変化するようなアプリケーションで,自由に使えるメモリの量を拡大するために使われることが多いようだ。しかし,漢字という,メモリをよく食べる文字体系をコンピュータで使っている日本という特殊な国であるからこそ、そのありがたみが特によく分かるというものだ。
 ちなみに,メルコやIOデータ機器等では,すでに日本語入力フロントプロセッサをメインメモリの外に追い出すアプリケーションをリリースしているが,太郎を使う場合にはEMS上のATOKを使うことができないという失礼な状況になってしまう。しかし,一太郎は使わないけれども,日本語入力フロントプロセッサはATOKという人には朗報だろう。また,この春にリリースされるATOK7では,自分自身がEMSをサポートし,メインメモリの占有する領域をできるだけ減らす方向にあるといわれている.
 つまり,128Kbytesや256Kbytesといった少ないメモリの中で,できるだけメモリを消費しないようにがんばってアプリケーションを作っていた時代が,大容量メモリ時代となり,いくらでもメモリを浪費できるような状況が手に入ったと思いきや、結局はそのツケが今ごろまわってきて,苦労しているというわけだ。しかし,悪いのはメモリをふんだんに使えないMS-DOSの仕様であり,メモリを浪費するアプリケーションを作ったプログラマではない.
 いずれにしても,各アプリケーションは,機能の追加を繰り返した結果,メモリを大量に消費するようになってしまい,640Kbytesぐらいのメインメモリでは足りないのが普通といったようなおかしな状況になってきているのだ。
 かつて,PC-9801シリーズに最初から搭載されていたメモリの量は,128Kbytesだった。それがVMあたりで384Kbytesとなり,今は,640Kbytes,フルに実装されているのが普通となった。パソコ ンにやらせたいことが多くなればなるほど,メモリがたくさん必要になるということだ.
 そして,たくさん必要だからといってありすぎても,それを有効に生かすことができないのが,これまでのMS-DOSだったのだ。
 たとえば,従来,RAMボードを購入し本体に増設したところで,それは,キャッシュディスクやRAMディスクとしてしか利用できず,できることといえば,ファイル操作の速度を向上させるだけのことだった。しかも,本体の640Kbytesのメモリのうち,128Kbytesが無駄になるなどデメリットも大きかったのだ(注5).
 これでは,ハードディスクの価格がここまで下がり,スピードも向上してきた現在,RAMボードの存在価値は,非常に小さなものとなってしまう。なにしろ,RAMディスクやキャッシュディスクがあっても,改善されるのはスピードだけで,メモリ不足が解消されるわけではない.逆にいえば,スピードさえガマンすれば,ハードディスクだけでも十分だし,実用上さしつかえない程度の速度は得られる.ところが,EMSでは,メモリ不足によって本来は実現不可能なことができてしまうという点で,得られるものがまったく違ってくる.
 近い将来,OS/2などが主流のオペレーティングシステムとなり,640Kbytes以上のメモリ領域を自由に使えるようになったときにこそ,メモリは多ければ多いほどいいということになるのだろうが,それまでの間は、EMSなどの小手先の技術でお茶を濁すしかない.
 もしも,ハードディスクをつけるか,RAMディスクをつけるかで迷っている方がいるのなら,何も考えずにハードディスクを購入してほしい。その理由はこれ以上しつこくいうこともあるまい。
注3) 何度も子プロセスを起動したり,いくつものTSRを常駐させて,一太郎などの大きなアプリケーションを起動すると、「メモリが足りません」といった表示が出て起動できないといったことが起こる.ただし,一太郎の場合,グラフィックスなどの機能は使えないものの,あある程度メモリの残り容量があれば起動されることもある.
注4) 現在、日本では,I・Oバンク方式のメモリ増設が主流であるが,日本電気は,MS-DOSVer.3.3よりEMSをサポートしている.MS-DOSに付属するEMSドライバは,ソフトウェアによるEMSエミュレータといえる。(株)メルコからは,ハードウェアによるEMSボードが発売されているEMSは,LIM規格と呼ばれる仕様の規格があるため,ソフトウェアのEMSでもハードウェアのEMSでも規格にあっているならば,アプリケーションは問題なく動作するはずである。ただし,アプリケーションがEMSに対応していなければならないのは当然のことである.
注5) I・Oバンク方式のRAM増設では,メインメモリ640Kbytesのうち,上位の128Kbytesを切り放し、その領域を増設RAMがメインメモリとの窓口にして,データのやり取りをする.そのため,メインメモリ上の128Kbytesは使用できなくなる.しかし,PC-9801RA/RXでは,この領域を利用可能にするドライバが,I・Oデータ機器,メルコの両社より提供されている。これを使用することで,メインメモリの128Kbytesが利用できるようになる.

さらっと書かれているけどなんという酷い状態だったと思い返す。当時は、仕方がないことだとあきらめていた。このような環境で諸悪の根源は8086を使ったことだと8086憎し、8086だけは許せないと私は根性が曲がっていった。

以下略

すら☆そうじ氏の漫画をスクラップする。以上の解説を読むと面白く読める。
ASCII1989(05)d02MS-DOS漫画01_W365.jpg
ASCII1989(05)d02MS-DOS漫画02_W470.jpg
ASCII1989(05)d02MS-DOS漫画03_W292.jpg
ASCII1989(05)d03MS-DOS漫画04_W465.jpg
ASCII1989(05)d03MS-DOS漫画05_W345.jpg
ASCII1989(05)d03MS-DOS漫画06_W275.jpg
ASCII1989(05)d03MS-DOS漫画07_W415.jpg
ASCII1989(05)d03MS-DOS漫画08_W202.jpg
ASCII1989(05)d03MS-DOS漫画09_W470.jpg
ASCII1989(05)d04MS-DOS漫画10_W368.jpg
ASCII1989(05)d04MS-DOS漫画11_W390.jpg
ASCII1989(05)d04MS-DOS漫画12_W372.jpg
ASCII1989(05)d04MS-DOS漫画13_W371.jpg
ASCII1989(05)d04MS-DOS漫画14_W420.jpg
ASCII1989(05)d04MS-DOS漫画15_W326.jpg
ASCII1989(05)d05MS-DOS漫画16_W419.jpg
ASCII1989(05)d05MS-DOS漫画17_W381.jpg
ASCII1989(05)d05MS-DOS漫画18_W291.jpg
ASCII1989(05)d05MS-DOS漫画19_W495.jpg
ASCII1989(05)d05MS-DOS漫画20_W316.jpg
ASCII1989(05)d05MS-DOS漫画21_W268.jpg
ASCII1989(05)d06MS-DOS漫画22_W431.jpg
ASCII1989(05)d06MS-DOS漫画23_W466.jpg
ASCII1989(05)d06MS-DOS漫画24_W200.jpg
ASCII1989(05)d06MS-DOS漫画25_W470.jpg
ASCII1989(05)d06MS-DOS漫画26_W368.jpg
ASCII1989(05)d06MS-DOS漫画27_W250.jpg
ASCII1989(05)d07MS-DOS漫画28_W199.jpg
ASCII1989(05)d07MS-DOS漫画29_W433.jpg
ASCII1989(05)d07MS-DOS漫画30_W515.jpg
ASCII1989(05)d07MS-DOS漫画31_W471.jpg
ASCII1989(05)d07MS-DOS漫画32_W489.jpg
ASCII1989(05)d08MS-DOS漫画33_W505.jpg
ASCII1989(05)d08MS-DOS漫画34_W422.jpg
ASCII1989(05)d08MS-DOS漫画35_W470.jpg
ASCII1989(05)d08MS-DOS漫画36_W421.jpg
ASCII1989(05)d08MS-DOS漫画37_W221.jpg




nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。