RSWAPについて、作者のコメントです。

(この文章は圧縮ファイルの中にも入っていますので解凍後お読み下さい。)

Resident SWAP version 1.22[EMB] 94/05/20 Copyright (C) 1990-1994 K.Mitobe

1.概要

RSWAP は子プロセス起動時に自動的に親プロセスを拡張(EMS)・増設(EMB)メ モリまたは Diskfile へ SWAP OUT するための TSR です。コンパイラなどの ような広いメモリ空間を必要とするプログラムをエディタ等の子プロセスで 起動できるようになります。

2.使い方

rswap { [filename] [-aiflc] [-nnum] [-m[size]] [-d[path]] [-p<X|E|F>.. .] | -r | -? }

rswap<CR> で常駐します。-i オプションを付けて常駐させることにより rs wap を動作しない状態で組み込むことができます。また、常駐後に rswap に -a/-i のオプションを指定して実行することにより、常駐している rswap の動作モードの変更ができます。

-a SWAP するモード。

-i SWAP しないモード。再度動作させるには、-aオプションを 指定する。

-r 常駐解除する。但し、SWAP OUT されたプロセスが存在して いればエラーとなり常駐解除されない。int 21h のベクタ が変更されているときもエラーとなる。

-f 02h,34h-3ehの割り込みベクタが親プロセスを指していても SWAP する。Software Tools-1 の calc コマンドのように NDP のエミュレータが割り込みベクタを使用しているプロ グラムでも SWAP したいときに指定する。

-l 常駐時に環境変数領域を開放しません。

-c UMB があっても強制的にコンベンショナルに常駐する。DO S5では自力でUMBに常駐するようになりました(v1.21から)。 DOS5でコンベンショナルに常駐させるときに指定してくだ さい。

-n{num} 割り込みベクタ num が親プロセスを指していても SWAP す る。最大8個まで指定できる。複数指定するときは -n05 - n06 と個別に指定するかわりに、-n05,06 のように複数指 定することもできる。num は16進で指定する。

-m{size} swap 対象となる親プロセスのサイズを size Kbyte 以上と する。-m を指定しないときは、-m16 と同じ。-m のみの場 合は -m0 と同じ。size は10進で指定する。

-d{path} このオプションは拡張・増設メモリの有無で意味が変わり ます。 拡張・増設メモリは EMB -> EMS の順に使われていき、EM B がなければ EMS のみの使用となります。(優先順位は-p で変更可能、後述)

拡張・増設メモリが... <なし> 拡張・増設メモリのかわりに disk file を使う。 path には temporary file を作成するディレクトリを指定 する。(例: path に f:\ を指定した場合、f:\SWAPXXXX.$ $$ が作成される。XXXX は process ID) path を指定しなかった場合は環境変数 TMP を使う。TMP が見つからなかったときは A:\ を使う。 file は hidden 属性で作成され、使用後に削除される。

<あり> -d{path} が指定されている場合、拡張・増設メモリがなく なったら path にfile を作成し、swap out。-d{path} が 指定されていない場合はメモリのみを使用する。(優先順位 は-pで変更可能、後述)

-p<X|E|F> X:XMS(EMB)、E:EMS、F:Disk fileのうち、どれを優先的に 使用するかを指定できます。-pEXF と指定した場合はEMS→ XMS→Disk fileの順に空きのあるものから使用されます。 -pXF と指定した場合はXMS→Disk fileの順に使用しEMSは 使用されません。defaultは-pXEFとなっています。

filename コマンドラインで指定しなかったときの default の file name は rswap.com と同じディレクトリの rswap.cnfです。 このファイルに swap out しないプロセスを記述できます。

常駐後に子プロセスを実行させると、自動的に親プロセスの使用しているメ モリブロックを拡張・増設メモリまたは Disk file に退避します。子プロセ スが終了すると、拡張・増設メモリまたは Disk file から親プロセスのメモ リを復元します。拡張・増設メモリ / Disk の空きがある間は再帰的に動作 します。但し、親プロセスの PSP(100H) と環境は退避されません。また、親 プロセスの PSP のあるセグメントの先頭の約 1Kbyte を RSWAP が作業領域 として使用します。 EMM 4.0 使用時には、親プロセスが退避されている EMS の ハンドルに "SW APXXXX" のハンドルネームを付加しています(XXXX は process ID)。

3.config fileについて

RSWAP と相性が悪く、SWAP OUT すると正常動作しないプログラムがいくつか 見つかっています(例―MP386のlu.com)。そのようなプログラムを SWAP OUT しないようにあらかじめこのファイルに定義しておきます。なお、このファ イルの一行目に埋め込みのオプションを書くことができます。 実際の記述例はアーカイブファイル内の rswap.cnf を参照して下さい。

4.注意事項・制限事項

次のようなプロセスからは SWAP OUT されません。

(1) COMMAND.COM (2) 00H,22H,23H,24H,30Hおよび-f,-nで指定されたベクタ以外を TRAP している場合 (3) AX=4B00H 以外でロードされる場合(オーバーレイ等) (4) INT 2EHで子プロセスを呼んでいるもの

子プロセスで TSR を常駐させることはできません。また、子プロセスで TS R の常駐解除を行うと、親プロセスに戻ったときに、TSR の使用していたメ モリブロックがゾンビのごとく復活して、実際には解放されてませんのでや らない方がよいでしょう。

プログラム間の相性については作者の環境では限られた組み合せでしか試す ことができないので、とんでもないことが起きるかもしれません。 特に、初めての組み合せで試してみるときには暴走によるデータ消失などの 事態への対策を行った上で動作させることをおすすめします。

5.転載・再配布について

RSWAP はフリーソフトウェアです。誰でも無料で使用できます。転載・再配 布する場合はオリジナルのアーカイブファイルに含まれているファイルすべ てを、改変されていない状態で行うようにして下さい。営利目的で使用する 場合には事前に電子メールなどで私へ連絡して下さい。 バグの修正・バージョンアップなどはPCS(ASCII-NET)だけで行う予定ですの で、他のBBSへ転載した場合には、転載した方が責任を持ってフォローを行っ ていただくか、あるいは、PCS だけでメンテナンスを行うことを明示して、 配布するようにして下さい。 このプログラムを使用したことによって生じた全ての結果に関して、作者は 一切の責任を持ちません。このプログラムにバグがあった場合、バグを修正 するように努力はいたしますが、バグを修正する義務は負わないものとしま す。

作者 作者の環境はPC-9801RA51/MS-DOS5.0/MEMORY-SERVER/VJE-β(3.1)などです。 ご不明の点がございましたら、ASCII-NETでの電子メールでお願いします。ま た相性の悪いプログラムが見つかった際には作者まで連絡して下さい。

三戸部謙次/k.mitobe(pcs30947)

戻る