更新日: 2011 年 11 月 15 日
KRAMD.SYS の説明
説明
KRAMD.SYS の添付ドキュメントです。
KRAMD.DOC
────────────────────────────────────
KRAMD version 1.01 1996,2006 by M.Kamada
────────────────────────────────────
単なる RAM ディスクドライバです。
□特徴
・RAM ディスク領域のスーパーバイザ保護機能
・アクセスランプ(TIMER-LED)
・高速?
□使い方
CONFIG.SYS で組み込みます。
DEVICE = KRAMD.SYS #[I][S][A]Mn
I SHIFT を押していないとき初期化する
S RAM ディスク領域をスーパーバイザ保護する
A TIMER-LED をアクセスランプにする
Mn 容量(KB単位, S 指定時は 256 の倍数にすること)
I
通常は RAMDISK.SYS と同様に起動時に SHIFT を押していると初期化
しますが、I を指定しておくと SHIFT を押していないとき初期化しま
す。
S
S を指定すると、RAM ディスク領域がスーパーバイザ保護されます。
あまり知られていませんが、X68030 には標準でメインメモリのスー
パーバイザ保護機能が存在します。また、X68000 の場合でも拡張スロ
ット用のメモリボード(シャープ純正、I/O データ機器製)に同じ機能
があります。この機能を使うと、アドレスが $00200000 以上の部分に
ついて 256KB 毎にスーパーバイザ保護するかどうかを指定できます。
S を指定する場合は、容量は 256 の倍数にして下さい。割り当てら
れるアドレスは自動的に 256 の倍数になります。
S を指定した KRAMD.SYS を2個以上組み込むと、先に組み込んだ方
のスーパーバイザ保護が無効になる場合があります。
A
A を指定すると、TIMER-LED が RAM ディスクのアクセスランプにな
ります。
Mn
Mn で容量を指定します。n の単位は KB です。例えば、RAM ディス
クを 2MB 確保するときは M2048 とします。
S を指定しているときは容量を 256 の倍数にして下さい。
例
DEVICE = \SYS\KRAMD.SYS #SAM3072
RAM ディスクを 3072KB 確保してスーパーバイザ保護します。
TIMER-LED がアクセスランプになります。
起動時に RAM ディスク領域が壊れているか、SHIFT キーが押されて
いたら初期化します。
□スーパーバイザ保護の恩恵
スーパーバイザ保護されていない RAM ディスク領域は、ちょっとしたミスで
簡単に壊れてしまいます。
簡単な例を示しましょう。次のプログラムはコマンドラインで指定した数だけ
* を出力するという簡単なものですが、あるチェックを怠っているためにスーパ
ーバイザ保護されていない RAM ディスクを破壊する可能性があります。理由は
各自で考えてみて下さい。
#include <stdio.h>
#define MAX_COUNT 1024
char work[MAX_COUNT];
void main(int argc, char *argv[])
{
int n, i;
char *p = work;
if (argc < 2 || sscanf(argv[1], "%d", &n) != 1 || n > MAX_COUNT) {
fprintf(stderr, "ERROR\n");
return;
}
i = n;
do {
*p++ = '*';
} while (--i);
fwrite(work, sizeof(char), n, stdout);
}
□更新履歴
version 1.00 → version 1.01
(2006-05-04)
容量に4095KBを指定すると1KB無駄になる不具合を修正しました。
ルートディレクトリに92個以上のファイルやディレクトリを作るとルー
トディレクトリの末尾に異常なエントリが出現する可能性がある不具合
を修正しました。
□お約束
無保証です。
転載はご自由に。
□連絡先
m_kamada@nifty.com
(EOF)