SSブログ

恐ろしいFD交換、郵便でNETゲーム(月刊ASCII 1990年5月号9) [月刊アスキー廃棄(スクラップ)]

この号のTBN「なんでも相談室」で怖い記事があった。私は経験しなかったが、経験した人は恐ろしかっただろう。
御用心…ディスク交換の危険な罠
Q:MS-DOSを使用中,プロテクトシールを貼ったフロッピーディスクにファイルをコピーしようとすると,“書込み禁止です”というメッセージが出てキー入力を求められます。
 ここで,フロッピーを書き込み禁止でない他のフロッピーに入れ換えて,“R”を押すとファイルがコピーされますが,その後にディレクトリを見ると以前あったはずのファイルが消え,コピーしたはずのないファイルが表われてしまいます。どうやらFATやディレクトリが最初に書き込もうとしたディスクのものと入れ替わってしまったようです.これはMS-DOSのバグなのでしょうか.

A:ご質問を読んで,こんな恐ろしいことがあっていいはずがないと思いつつも,実際に試してみたところ本当に再現されてしまいました(図1).使用したシステムはPC-98XL,日本電気製のMS-DOSVer.3.3B(PS98-018-HMW)です.PC-9801以外でも、J-3100などのIBM-PC系マシンでまったく同じことが起こりました.村中さんのご指摘の通り,ディレクトリとFATが丸ごと入れ替わってしまったようです。このような誤操作は,実際の作業時に行なってしまう可能性が十分にあるので、非常に危険です。原因を解明して対策を練る必要があります。

ASCII1990(05)h02TBNディスク交換図1_W520.jpg
 まず,このディスクの内容をもっと詳しく調べてみましょう.図2はプロテクトシールが貼ってあるディスク(甲とします),図3は最初の書き込みに失敗した後に挿入するプロテクトシールを貼っていないディスク(乙とします)のFATエリア(セクタ1)とルートディレクトリ(セクタ5)のダンプリストです。図のように,操作を加える前の2つのディスクではFAT,ディレクトリともまったく違っています。

ASCII1990(05)h03TBNディスク交換図2_W520.jpg
ASCII1990(05)h03TBNディスク交換図3_W520.jpg
 問題の操作を行なった後の,ディスク乙のFATとディレクトリを図4に示します。FAT,ディレクトリとも,書き込みを行なう前のディスク乙とはまったく変わってしまっています。新たにコピーされたファイルのディレクトリとFATは図4中の(a)ですが,それ以外の部分はディスク甲と同じになっていることに注意してください.

ASCII1990(05)h03TBNディスク交換図4_W520.jpg
 このディスク乙の各ファイルを読み出してみるとディスク乙にもともとあったファイルの断片が出てくるので,データの部分までは入れ替わっていないようです.ディスク乙をchkdskコマンドなどで調べても特に異常は見付かりません.ただし,ディスク甲にサブディレクトリがある場合にはサブディレクトリの内容はまったくでたらめになり,chkdskでエラーが見付かりました(図5)これは,MS-DOSではサブディレクトリの情報も通常のファイルと同じ領域に保存するので,ディスク乙にもともとあった普通のファイルデータをディレクトリのデータと誤認してしまうためです。

ASCII1990(05)h03TBNディスク交換図5_W422.jpg
 この危険な現象は,どのようなメカニズムで発生するのでしょうか.
 MS-DOSでは,ディスク中のデータファイルの配置状況をFATとディレクトリの2つの領域で管理しています(詳しい管理の様子は,本誌1990年1月号440ページの「なんでも相談室」やMS-DOSの解説書を参照してください)。新たにファイルを作成したり前からあるファイルを更新するときには,FATから空きデータ領域を探してデータを書き込むとともに,それに合わせてFATとディレクトリ領域も書き換えます。
 このとき,プログラムがデータを書き込むたびにディスク上のFATやディレクトリを書き換えていたのでは,ディスクアクセスなどの時間がかかり、処理速度が著しく低下してしまいます。このため多くのマシンのMS-DOSでは,ファイル書き込みをするときにFATとディレクトリデータをメモリ上のバッファに読み込み、このバッファ上のFATとディレクトリを更新しながら処理を進めます.そして,すべての処理を終えてファイルをクローズするときなどに,バッファ上のFATとディレクトリをディスクに書き戻します.このような処理のことを一般に“buffering(バッファリング)”と呼びます。
 さて,FATとディレクトリがバッファ上に読み込まれているときにエラーなどで処理を中断してディスクを交換し,処理を続行・終了させると,交換する前のディスクのFATとディレクトリが交換されたディスクに書き込まれてしまいます。どうやらMS-DOSは,書き込み禁止ディスクであることを検知する以前に,FATとディレクトリをバッファに読み込んでしまい,ディスクが交換されたことをチェックせずに別のディスクに書き戻してしまうようです。問題の現象は,このような仕組みで起こっているのです。
 実は、この場合に限らず,ディスクキャッシュ,仮想記憶,マルチタスクOSでのファイルアクセスなど,バッファリングに類する処理には必ずこれと同じような危険が伴います.したがって,バッファの更新と書き戻しは,バッファデータとディスクなどのデータの新旧や同一性を常にチェックして、不当な書き込みがなされないように注意しなければなりません.
 PC-9801をはじめ多くのパソコンはフロッピーディスクの入れ換えをハードウェアで検知することができるので,本来ならこのような危険を回避することは十分可能なはずです。ところがMS-DOSのディスクI/Oなどの致命的エラーを処理するルーチン(注1)が何らかの理由でディスク交換のチェックを怠っているために,不当な書き込みが行なわれてしまうようです。これをMS-DOSのバグであるとは一概には言えないかもしれません.ですが大切なデータを破壊してしまう危険性が非常に大きいので,ぜひとも改善してほしい点です.
 このようにMS-DOSのエラー処理自体に問題があるようなので,エラー処理ルーチンを自分で作り直す以外には根本的な解決策はないようです.エラー処理ルーチンはソフトウェア割り込み(INT 24H)で起動する常駐プログラムを作ればよいでしょう.腕に自信のある人は挑戦してみてください.
 結局自衛策としては,ファイルの書き込み(ファイル名の変更なども含めて)を行なっている最中には,絶対ディスクの入れ換えをしない,ディスクの間違いなどでエラーメッセージが出てもすぐにディスクを入れ換えて処理を続行したりせず,一度処理を中止して(エラーメッセージが出てキー入力を求められたら“A”を押す)コマンドラインなどに戻ってから改めてディスクを入れ換えてやり直す,などの点を常に注意するのがよいでしょう.
 なお,MS-DOSのコマンド以外にアプリケーション上でファイルの書き込みをする場合でも同じような問題が発生することが多いので,注意してください.
(竹田)

注1:“書込み禁止です”というメッセージを出して,処理の中止・続行無視などの選択をするルーチン,ソフトウェア割り込みINT 24Hで起動される。通常はcommand.comの内部に用意されている.
ちょっと戸惑ったがPC-9801は起動したディスクがA:ドライブになる仕様だった。この図ではC:がFDDでA:ドライブがHDDだと思われる。だからHDDの*.iniをカレントディレクトリのFDDのC:にコピーしようとしていた。C:はHDDと思っているから図を見てもピンとこなかった。


34年前コンピュータゲームのRPGを郵便でやっていたと言っても今の人たちには嘘だと言われ信用してもらえないだろう。
遊演体 ネットゲーム'90 蓬莱学園の冒険
ASCII1990(05)h05ネットゲームの遊子ちゃん00合体_W520.jpg
郵便によるロールプレイングゲーム
 マンガのほうをごらんいただけば分かる通り,ネットゲームとは郵便を使った新手のロールプレイングゲームです.テーブルトークのロールプレイングゲームであればゲームマスターなる進行役を相手にプレイヤーたちが「ああしたい、こうしたい」と叫ぶところを,すべて郵便を介して行なってしまうのです.
 舞台は絶海の孤島にある謎の高校蓬莱学園.ここは,ほとんど島全体が学園という感じの不思議な島であります.この史上最大最強にして世界一危険な学校(マニュアルより).プレイヤーたちは,果たしていかなる謎を追いかけることになるのでしょうか.
 入会申し込みをすませると,まず送られてきますのが生徒手帳この巨大なメールプレイの中で,我々プレイヤーは,ある架空の学園の生徒になってしまおうというのですから,こうした手帳も必要なのかもしれません。所属するクラブや委員会は,そのままプレイヤ一の能力として主催者に登録されるとのこと.ゆめゆめいい加減に選んではなりません。
 シナリオは始まったばかりなのですが,これまでにおおむね次のような事件が起こっております。

(1)応石なる石がプレイヤーにばらまかれたこと
(2)意味不明の不思議な手紙の断片が発見されたこと
(3)始業式で武装グループによる破壊活動が起こり生徒会長が脱出したこと
(4)白昼堂々校庭の真ん中で殺人事件が起きたこと
(5)島にある大林で怪獣が目撃されたこと
(6)海に海賊が出没したこと……
 こうした事件の起こる中,積極的なプレイヤーはだんだんに大きな謎に迫っていくことができるのだそうです.
 たとえば,蓬莱タイムズ3月号には「無名剣盗難」に関するニュースが載っています。巻末の行動リストを参照すると…….
01:静養して体力の回復をはかる
02:遭遇モードをいまとは反対にかえる
03:住所公開モードをいまとは反対にかえる
   :
06:生徒会選挙立候補の届出をする
07:学園の自然・地理を弁天図書館で調べる
   :
16:下旬のラジオ番組「論破アルーム」に参加する
17:中旬の新空港反対デモに参加する
18:謎の「無名剣」の行方を追う
   :
ここで今月の行動に18を選べば,無名剣の盗難に関するアクションの結果が送られてくるというわけですね.行動結果は一つではなく,同じ行動を選択しても結果は同じとは限りません。
 アクションにはあらかじめ主催者側が用意している定番行動のほかに,内容を自分で記入できるフリーアクションがあります。定番行動に比べると成功率は下がりますが,ゲームマスターによる自分だけのリアクションが期待できるとなれば,醍醐味はむしろこちらにあるでしょう。

参加者同士の情報交換システム
 こうして、あたかも巨大なゲームブックを解くかのようにゲームは進みます。
さまざまな情報が全国の数千人もの参加者達にばらまかれるということは、カンのいい読者諸君にはもうお気付きの通り.参加者間の情報交換が大事なのです.
 そのために用意されているのが、住所公開制度とプライベートイベントとりわけ住所公開モードを「公開」にしておくとスゴイ.月々のリプライシートには,ゲームの中で知り合った友人(他プレイヤー)の名前がプリントアウトされるのですが,なんとびっくりモードを「公開」にしてあるプレイヤーは,本当の住所,氏名も打ち出されてしまいます.つまり、そうやって手紙なり,電話なりを使って参加者同士連絡を取り合ってくれということです.あたかも巨大な文通組織に組み込まれたようなものですが、返事を書く義務はないので,そのあたりは安心とのこと.参加者はまた、プライベートイベントと称して,自分達で集まって情報交換をすることもできます(月々のプライベートイベントは蓬莱タイムズにも紹介される).また,情報交換にパソコン通信を使い始めたグループもいて,PC-VANなどにボードもできています.
 ゲームは4月から始まりました.現在も転入を受け付け中ですが,そろそろ締め切りも近いとか.蓬莱学園への転入希望者は,遊演体に電話をして問い合わせてみてください。
(近藤功司)


ASCII1990(05)h05ネットゲームの遊子ちゃん01_W520.jpg
ASCII1990(05)h05ネットゲームの遊子ちゃん02_W520.jpg
なんとも気の長いゲームだこと。記事をスクラップしていても信じられない。

ZMODEMTでらくらく転送
Q:最近,アスキーネットなどでサポートするようになったというファイル転送プロトコルのZMODEMは,「効率が良い」とか「高機能だ」とか聞いています。どのような機能を持つものなのでしょうか?
A:ZMODEMは,米国Omen Technology社のChunk Foresbergという人物が考案した,最新のファイル転送プロトコルのひとつです.現在,パソコン通信で主流となっているファイル転送プロトコルのXMODEMやYMODEMと比較して,転送効率の良さや取り扱いやすさが高く評価されています.メジャーなパソコン通信ネットでは,米国のGEnie,国内ではアスキーネットがダウンロード用のプロトコルとして採用しています.
 さてそのZMODEMですが,基本的な仕様は1ブロック長が1024bytes,CRC-32によるエラー検出を行なうというものです。基本的な仕様は他のファイル転送プロトコルにも似たようなものがあります。ZMODEMがそれらに比べてどのような点で優れているのか,その主な特徴をX/YMODEMと比較しながら紹介しましょう.
 まずは,最も気になる転送効率(モデムの転送速度に対する,ヘッダやエラーチェックなどを除いた実際に転送されたデータ量の割合)です.編集部において2台のコンピュータをクロスケーブルで接続して実験してみたことろ,95%以上という高効率を記録しました.95%の効率というと,2400bpsの通信速度で1秒間に約230文字転送されることになります.これは,通常のXMODEM(ブロック長128bytes,Checksum)で約30%,XMODEM-1k(ブロック長1024bytes,CRC)で約70%程度の効率であることを考えると,非常に高い効率だといえます。同等の効率を実現できるプロトコルとしてはYMODEM-gがありますが,YMODEM-gでは転送中のエラー検出,パケット再転送による訂正ができません.その点ZMODEMは,エラー検出・訂正もしっかりとサポートしています。この高い転送効率は,ZMODEMは転送中にエラーが発生しない限りACK/NAK(パケットを受信した合図)を送信側に返送しないことなどから実現されています。
 扱いやすさの点に注目すると,次のような特徴があります。ひとつは、送信側がZMODEMによる転送を開始すると,自動的に受信状態になるオートダウンロード機能をサポートすることです.これは,ホストにファイルの転送を指示した後,通信ソフトにダウンロードを指示する手間を省くことができるというもので,一般のパソコン通信を考えるととても便利な機能です。もうひとつは,複数ファイルのバッチ転送が可能なこと,これは,YMODEMで実現されているバッチ転送と同様の機能です。送信側がファイル名やファイルの長さなど各種の情報も伝えるため,ダウンロード時のファイル名を指定する必要もありません.
 このほかにもZMODEMには,転送中に何らかのエラーで転送を中断してしまったファイルを,転送できなかった残りの部分だけを再転送して完全なものとするレジューム機能や、受信側がZMODEMをサポートしていない場合にYMODEMに自動的に切り替わる機能など実に多彩な機能が盛り込まれています。ZMODEMは,今後パソコン通信で主流となるファイル転送プロトコルの有力候補のひとつであることは間違いないでしょう.ZMODEMに関する詳しいドキュメントは,Omen Technology社がリリースしているものがアスキーネットPCSなどにアップロードされています。
(樋田)

XMODEMしか覚えていないし、使った記憶もない。多分私が使っていた通信ソフトが対応していなかったのだろう。

















nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。