Rupo Disk Format

東芝ワープロRupoのフロッピー・ディスク(2DD)フォーマットの解説です。

NIFTYServe(現在の@nifty) の SRUPO(東芝Rupoステーション)「文書互換とデータ互換」会議室(8番会議室)の過去ログ(すでにライブラリ入)から必要部分を抜き出し、私なりに要約したものです。(註:SRUPOは既になくなり、現在はFRUPOU(東芝Rupoユーザーフォーラム)に継承されています。) 今後ソフトを自作する人の資料となれば幸いです。もし間違いがありましたら、どうかご指摘下さい。(東芝さんはRupoDiskフォーマットは非公開という立場ですので、質問は東芝さんにではなく、私あてにお願いします。)


(1)Disk Format( Rupo 2DD )

 256 bytes/sector,
 16 sectors/track,
 2 tracks/cylinder,
 80 cylinders/disk

ある特定のセクタを指定するのに、( c, h, r )という表示をすることにします。
c・・・トラック番号。0から始まり79で終わる。
h・・・ヘッド番号。表は0、裏は1で表わす。
r...セクタ番号。1から始まり16で終わる。

これ以降の説明はRupo70以外の一般のRupoのフォーマットについてのものです。


(2)タイトル(Rupoでいう文書名)の管理場所

(0,0,5)先頭の32バイト目から最初のタイトルが始まります、各タイトルはタイトル名の16バイトと情報の16バイトの計32バイトからなります。
タイトルは最大63個収容可能で、(0,0,12) の最後尾までの領域(32*63バイト)がこのために使われます。


(3)情報16バイトの意味

3,4バイト目に文書の開始アドレスがあります。ただしRupoDiskで2バイトデータを扱う場合は、逆ワード(リトル・エンディアン)で入っているので注意が必要です。
5,6バイト目に最大収容可能容量があります。
7,8バイト目には現在占有容量があります。
14バイト目に0x80(c言語による16進数表記)がある場合、この文書はすでに削除されたものですのでRupoでは表示されません。


(4)アドレスの計算

アドレスは0x0000から始まり、0x09FF(0x09FF = 16 * 2 * 80 - 1 )で終わります。
(0,0,1)から始まり、(79,1,16)で終わることに対応します。


(5)変換の開始位置と終了位置

開始アドレスに対応する(c,h,r)セクタを見ると、最初の16バイト(0x00 - 0x0F)にはさきほどと同じタイトルが書いてあります。
0x16,0x17には1行文字数(ワード単位)、0x84,0x85には文書使用行数が書いてあるので終了判定に使えます。
実際の文書はさらに6セクタ後の(c,h,r)+6から始まります。


(6)文書の変換

基本的にRupoの文書はJISコードのリトル・エンディアンで格納されています。
これを取り出し、目的のコードに変換するようにソフトを設計します。(MacintoshならばShiftJISコードでビッグ・エンディアン)