第3章 より高度なブロテクト Ⅱ

第3章 より高度なブロテクト

3 - 2  ID の 絶対位置に関するプロテクト

765, 8876

■ 765, 8876
ID の 並ぴ を チェックする プロテクト より 強力な プロテクト である。

図 3 - 2 , Bを見ると,この並び方では,前述のIDの並びをチェックするプロテクトでは,A と B が 同一と認識される。
このため,インデックスホール後,最初のIDを読み出し,その後,それ以後のセクターID を,読み出せばチェックが可能となる。

以下に,この手順を示す。




No.  C  H  R  N 
1 0 0 1 1
2 0 0 2 1
3 0 0 3 1
4 0 0 4 1
5 0 0 5 1
6 0 0 6 1
7 0 0 7 1
8 0 0 8 1
9 0 0 9 1
10 0 0 A 1
11 0 0 B 1
12 0 0 C 1
13 0 0 D 1
14 0 0 E 1
15 0 0 F 1
16 0 0 10 1

正常 な並びの ID
[ 図 3 - 2 ]
  

No.  C  H  R  N 
1 0 0 E 1
2 0 0 2 1
3 0 0 B 1
4 0 0 8 1
5 0 0 5 1
6 0 0 2 1
7 0 0 F 1
8 0 0 C 1
9 0 0 9 1
10 0 0 6 1
11 0 0 3 1
12 0 0 10 1
13 0 0 D 1
14 0 0 A 1
15 0 0 7 1
16 0 0 4 1

その2
プロテクト
をかけたID(例)
[ 図 3 - 2 ]

IDの絶対位箇に
関するプロテクトを
かけたIDの並ぴ

  
( 01 ) 765の場合

765の場合, リード・ダイアグノスティックコマンドを使用して,インデックス・ホール直後のセクターをリードできるので,これを利用する。
リード・ダイアグノスティックは, リード・データコマンドと異なり,インデックス後最初のセクターのIDとホストマシンから送られたIDとを比較し,異なっていても,リード処理は行なわれる。
しかし, ID部のIDとホストマシンからのIDが異なっていた場合, STl(リザルトステータス1)のD2ビットが立つので,最初のセクターのIDが一致しているかどうかのチェックが可能となる。
Bの場合, C=O, H=O, R=3, N=lにて, リードダイアグノスティックコマンドを実行後, STlのD2ビットが立っていなければ,マスターディスケットと判断できる。
この後,さらに,リードIDコマンドにて, 1トラック分のセクターを読み出し,プロテクトをかけたIDとすべて一致しているかどうか,チェックをすれば,良い。
なお,上記のリードダイアグノスティック実行後,即リードIDを行なえば, 2番目のセクター以後が読み出せるので,これを基にテープルを作り,チェックを行なっても良い。 ( 図 4 - 2 の IDダンプのプログラムは,これを利用している)。


( 02 ) 8876の場合

8876の場合, 765のリードダイアグノスティックに相当するのが, リード・トラックコマンドである。
しかし, リード・トラックコマンドは,フォーマットに依存せず, インデックスホール直後から, 1トラック分すべてのデータを読み取る。
このため,インデックスホール後, 最初のセクターのIDを知るには, 読み取ったデータ中から, 最初のIDを捜さなければならない。
IBMシステム34フォーマットの場合, 読み取ったデータの先頭から,163パイト目が C,164パイト目が H, 以後, R , N となっている。
しかし, GAP4aの長さが,読み取った場合,必ずしも80バイトあるとは限らないので,実際は,直前のIDAMがどの位置にあるかをサーチして, C, H, R, Nのデータを読み取れば良い。

図 3 - 3 に, リード・トラックコマンドで,読み出したデータの先頭部分を示す。

この図では,読み取ったGAP4aの部分の先頭に, 1周前のGAP4bが混入しており ( 6バイト分),本来80バイトであるはずが, 86バイトとなっている。
よって, 169バイト目からIDがあり, C=27H, H = 1, R = 1, N = 1となっている。
この方法により, 最初のセクターを知った後, リードアドレスコマンドにて, 1トラック分のIDを読み出し,プロテクトをかけた時のIDと一致するかをチェックすれば良い。


〔補足〕
以上の方法のように, リードダイアグノスティック, リード・トラックを使用せず, リードID, リードアドレスのみによって,インデックス・ホール後最初のセクター(のID) を知る方法を紹介する。
1トラック内の各プロックの並びは,第1章図1-11-a,bのようになっているが, トラっク内最後のセクターと, 2周目の最初のセクターの間には,ポストアンプル部,及び,プリアンプル部は存在する(ECMAフォーマットでは,プリアンプル部は存在しない) 。
よって, リードIDコマンドないしリード・アドレスコマンドを連続して実行した場合, 1番目のセクターのIDを読み出してから次のセクターのIDを読み出されるまでの時間よりも, 最後のセクターのIDを読み出してから, 2周目の最初のセクターのIDが読み出される時間のほうが長くなるはずである。
また, 1番目から2番目のセクターのIDを読み出す時間, 2番目から3番目のセクターのID を読み出す時間… · …••最後から2 番目から最後のセクターのID を読み出す時間は, 一定のはずであり, 最後のセクターから, 2周目の最初のセクターのID を読み出す時間のみが大きくなっているはずである。
この事実から, 各セクターのID を読み出すと同時に,読み出しに要した時間を測定することにより,インデック・ホール後,最初のセクターのID を知ることができる。


00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
5000 48 48 48 48 48 48 52 42 42 42 42 42 42 42 42 42
5010 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 ← GAP 4a
5020 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42  ( 本来80 パイトであるが,
5030 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42    この場合 86バイト ある )
5040 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42
5050 42 42 42 42 42 43 FF FF FF FF FF FF FF FF FF FF
5060 FF FC 14 C2 C2 FC 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E ← IAM
5070 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E ← GAP1
5080 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E    
5090 4E 4E 4E 4E 4E 4E 4E 4E 00 00 00 00 00 00 00 00
50A0 00 00 00 00 14 A1 A1 FE 27 01 01 01 AB 5F 4E 4E ← IDMID ( C, H, R, N )
50B0 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E    CRC
50C0 4E 4E 4E 4E 00 00 00 00 00 00 00 00 00 00 00 00 ← GAP 2
50D0 14 A1 A1 FB FF FF FF FF FF FF FF FF FF FF FF FF ← DAM
50E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
50F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5100 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5110 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5120 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5130 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5140 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

注)GAP4a の データ が 4EH でなく, 42H, 43H などとなっているのは,
  ピットずれが発生しているためである。
[ 図 3 - 3 ]

3 - 3 GAPS の長さをチェックするフロテクト


■ 765, 8876
IBM フォーマット, ECMAフォーマットでは,データ長によりGAP3 の長さが変化する
が,この長さは極端に短い(1 バイトぐらいにする)とリード,ライト時に問題となる可能
性があるが,長い分には問題がない。
しかし,長くすると, 1トラックあたりに入るセクター数が少なくなる。
このプロテクトは,この可変できるGAP3の長さをキーワードとして使うもので, 今ま
でのプロテクトと異なり,本来データとして使用されていない部分を参照するものである。

(01)  765 の場合
765 の場合, WRITE ID コマンドでフォーマットを行なう際に, GAP3 の長さがパラメー
タとして指定できるので,これによりGAP3 の長さを決定する。
この場合、全セクターのGAP3 の長さは,同じとなるので,チェックの方法としては, 1
セクター目のGAP3 の長さをチェックすれば良い。
GAP3 の長さをチェックするには, リードダイアグノスティックコマンドにより,フォー
マットされているデータ長よりも大きいNの値で読み出すことにより,まずGAP3 以後まで
を読み出す。
図3-4 にN= lでフォーマットされたトラックに対し, N=2でリードダイアグノスティ
ックを実行した場合に読み出されたデータを示す。
この後,データ部のCRC の後から, 4EH のデータのバイト数が,いくつあるかをカウント
すれば良い。
この図のトラックは,フォーマットのみされており,データの書き込みが行なわれていな
いので,スプライシングポイントによるピットずれが発生していないが,図3-5 のように,
一度でもセクター対し,データを書き込むと,ピットずれが発生し, GAP3 の値が4EH では
なくなることが多い。
この場合は,逆に,データ部のCRCの後から,次のセクターの先頭のSYNC までのパイ
ト数をカウントする。


00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
4000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4050 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ← 1 番目のセクターのデータ
4060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4100 FB E5 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E CRC
4110 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E ← GAP3 ( この場合 48 バイト )
4120 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
4130 4E 4E 00 00 00 00 00 00 00 00 00 00 00 00 A1 A1
4140 A1 FE 00 00 02 01 AF SF 4E 4E 4E 4E 4E 4E 4E 4E
4150 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 00 00
4160 00 00 00 00 00 00 00 00 00 00 Al Al Al FB FF FF
4170 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4180 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4190 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ← 2番目のセクター
41AO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41BO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41CO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41DO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41EO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41FO FF IFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

CRC
〔図3-4〕
SYNCはビットずれが発生した場合, FFH となるので,これにより認識が可能である。

(02) 8876の場合

8876の場合は,フォーマット時に, 1トラック分のデータをすべてホストから送るので,
GAP3の長さもセクターごとに可変させることが可能である。
よって, 全セクターのGAP3の長さを変えてフォーマットを行ない, 全セクターのGAP3
の長さをチェックすれば, より強力なプロテクトとなる。
この方法でフォーマットしたトラックは, 765でも読むことが可能で, かつ全セクターの
GAP3の長さのチェックも可能である。
しかし,765では,このようなフォーマットは不可能であるので, 8876でこのフォーマット
をかけたディスケットを765のプロテクトに使用すれば,まず,同ーホストマシンのユーザー
第3章より高度なプロテクト57


4000140 41 42 43 45 46 FF FF FF FF FF FF FF FF FF FF
4010 !FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4020 IFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4030 IFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4040 IFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4050 IFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4060 IFF FF FF FF FF FF FF .FF FF FF FF FF FF FF FF FF
4070 IFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4080 IFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4090 IFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40AO IFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40B0 IFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40CO !FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4000 !FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40EO !FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40FO !FF FF FF FF FF FF FF FF FF FF FF FF FF FF F
410014F.E614E,64 24 24 24 24 24 24 24 24 24 24 24 24
41101241 24 241 24 24 24 24 24 24 24 24 24 24 24 24 24
4120 124124 24124 24 24 24 24 24 24 24 24 24 24 24 24
413012413FIFF IFF FF FF FF FF FF FF FF FF FF C2 82 82
4140 18013F FFI FF 3F 80 00 04 24 24 24 24 24 24 24 24
4150124124 241 24 24 24 24 24 24 24 24 24 24 3F FF FF
4160 IFFI FF FFI FF FF FF FF FF FF C2 82 82 80 00 00 00
4170 1001 00 001 00 00 00 00 00 00 00 00 00 00 00 00 00
4180 1001 00 00 I 00 00 00 00 00 00 00 00 00 00 00 00 00
@ABCEF
I← 1番目のセクターのデータ
GAP3
(4EHが24Hに変
化している)
O~d$$$$$$$$$$$$
$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$
$? ‘y_
一つつ_ $$$$$$$$
$$$$$$$$$$$$$?
ツー
4190100100 00100 00 00 00 00 00 00 00 00 00 00 00 00
41A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00I ← 2番目のセクター
41B0100100 00100 00 00 00 00 00 00 00 00 00 00 00 00
41CO 100100 001 00 00 00 00 00 00 00 00 00 00 00 00 00
4100 1001 00 001 00 00 00 00 00 00 00 00 00 00 00 00 00
41EO 100100 001 00 00 00 00 00 00 00 00 00 00 00 00 00
41FO 1001 00 001 00 00 00 00 00 00 00 00 00 00 00 00 00
CRC このポイントがスプライシングギャップである
〔図3-5〕
がプロテクトをはずすことは不可能となる。
さて,チェック法であるが,手順としては, 76 5と同じで, リード・トラックコマンドによ
り,1トラック分のデータを読み出し,データ部のCRCの後から,次のセクターのSYNC ま
でのバイト数をカウントすれば良い。
図3-6 に, リード・トラックで読み出したGAP3 を示す。
8876 の場合,GAP4a の長さが不定であるので,GAP3の位置をサーチするプログラムにエ
夫が必要である。
58 フロッピーディスクブロテクト活用ハンドフ'ック
5()(: )(: )
501(:)
5[心(. J
5030
50•斗(:)
5(:心(:)
5C)60
5070
50(吠)
51:)'う(:)
5(:沿(]
5C)BC)
5(:) Iご: (:)
50D0
5OE(:)
5(:)FC)
51 C) (:)
51 1(:)
51 :;::( :)
513C)
514(:)
515C)
5160
5 1 7(:)
51El0
51'う(:)
51A(:)
51B(:)
51 Iご:(:)
51D0
51E(:)
51FO
5200
521(:)
5220
5230
52'•斗(:)
525C)
526(:)
5270
528(:)
72 72 72 72 72 72 72 77 3'3 3':'J 3'3 3'3 3•ぅ3 '3 39 39
3"':J 3':i 3':i 3':i 3':i 3':i 3'':J 3"':J 3':i 3':i 3'':i 3'':i 3':i 3':i 3':i 3'':J
3'ぅ39 39 3•3 3・3 39 3・3 3•3 3•3 3・3 3•3 3•3 3'3 3 •3 3・3 3'3
3'3 3'3 3'3 3'3 3'3 3'3 3'3 3,3 3'3 3"3 3'3 3'3 3'3 3'3 3'3 3’ う
3’ ぅ39 3'3 3'3 3'3 3'3 3'3 3'3 3・3 3'3 3'3 3'3 3'3 3'3 3'3 3': ) プリアンプル部
3':i 3":i 3":i 3'3 3":i 3,3 38(:氏) (:)(:) (:氏) (:)(:) (:)(:) (:)(:) (:)(:) (:)(:) (:) (:)
(:)(:) C) (:) (: )31こ:2 Iこ: 2 Iこ:2 Flこ: 4E 4E 4E 4E 4E 4E 4E 4E 4E
4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4t~ 4E 4E 4E 4E
4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E:
,4•E4E 4E,•1E 4E ,.1E,.1E ,斗E,斗E| (:)(:) (―-)(:) (:)(:) (:)(:) (:)1:) 1: )(:) C)(:)
直) (:) 1:) (:)(:) C) (:) (:)(: ) 1 ・斗. A 1 A 1 F E (:)(:) (:)( :) (:) 1 (:) 1 F A (:)1こ: 4E:
4E 4E 4E 4E 4E 4E .斗E 4E 4E 4E 4E 4E 4E 4E 4E 4E
ID部
4E 4E 4E 4E 4E iy:) (:)(:) (:氏) (:)(:) (:)(:) (灰) (:)(:) (:)(:) (:)(:) (:)(:) (灰)
00 14 A 1 A 1 FBI FF- l•F F-1< FF FF FF FF- FF FF 1

3 - 4 1トラックの全セクターのIDを同じにすることによるフロテクト


■765, 8876
このプロテクトは, 1トラック内の全セクターのID(C, H, R, N) を同じにし,
つ,目的とするセクター,つまり,インデックス・ホール後,何番目のセクターであるかの
指定をして, リード,ライトを行なうものである。
通常のリードデータ, ライトデータコマンドでセクターに対し, リード,ライトが行なわ
れる場合,まず,ホストから送られたIDとトラック上のIDを比較し, 一致したセクターが
発見されれば,リード,ライトが行なわれるようになっているが,全セクターのIDが同一の

?・
s
mrcoooooooooooooooo ao rt g10cy oe r?? s? p .. y ooyp PNNno mac uekm dvcd ,law.0123456r orroo1234567891111111a IdtHNH
16
N1111111111111111
R1111111111111111
Hoooooooooooooooo
〔図3-7〕
60 フロッピーディスクプロテクト活用ハンドプック
場合は,最初に見つけられたセクターに対してリード,ライトを行なわれるため, 2度目に
リード,ライトする場合は, 異なるセクターに対して行なわれる場合がある。
つまり、各セクターのIDが同一のため,各セクターのトラック上の絶対位置がわからない
ためである。
図3-7に同一IDで16のセクターをフォーマットした場合のIDのダンプリスト例, 及び
図3-8に同一IDのあるセクターに対し,その後, リードを行った場合,絶対位置の異なる
セクターの内容が読み出された例を示す。
これらのセクターに対して,インデックス・ホール後X番目の位置にあるセクターに対し,
リード, ライトする方法を示す。
このデータを,
C=O, H=O
R=l, N=l
のセクターに書
き込む
C=O, H=O
R=l, N=l
のセクターの内
容を読み出すと,
同一のセクター
のはずであるが
違うセクターの
内容が読み出さ
れてしまう

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
C000 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C010 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C020 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C030 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C040 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C050 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C060 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C070 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C080 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C090 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C0A0 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C0B0 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C0C0 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C0D0 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C0E0 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
C0F0 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
00 01 02 03 04 05 06 07 08 09 0A B 0C 0D 0E 0F
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
C000 FF FF FF FF FF FF FF FF FF FFFF FF FF FF FF FF

C010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
C020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
C030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
C040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
C050 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
C060 FF FF FF FF FF FF FF FF FF FF.FF FF FF FF FF FF
C070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
C080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
C090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
COAO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
COBO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
COCO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
COOO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
COEO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
COFO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

〔図3-8〕
第3章より高度なプロテクト61
(1) 765 の場合
765 の場合の手順を以下に示す。
① リードダイアグノスティックを実行する。
この場合のNは, トラックにフォーマットされているN と等しいか,それより小さい値を
使用する。
② ①の直後, リードID にて(x - 2) 個のID を読み出す。ただし, 2番目のセクター
の場合, ID は読まず,次のステップヘ進む。
③ ②の直後,ライトデータ,またはリードデータを実行する。
各手順は,次のような意味である。
①では, リードダイアグノスティックにより,インデックスホール後最初のセクターをサ
ーチする。
②では,①の直後(この点が重要である) (X - 2) 個のID を読み飛ばす。
たとえば, 5番目のセクターをアクセスする場合は, 3個のID を読み飛ばすので,次のセ
クターは,通算, 目的の5番目のセクターとなる。
③では,②の手順にて,次のセクターが目的のセクターであるように「位罹決め」がされ
ているので,②の手順の直後, リード,ライトを行なえば,目的のトラックに対して, リー
ドが可能である。
また, 1番目から, 最後のセクターまでのデータをすべて読み出すのであれば,①~ ③の
手順を繰り返さず,③の手順に,マルチセクターリードを使用すれば良い。
データを書き込む場合は,同様にマルチセクターライトを使用する。
(2)8876 の場合
8876 の場合の手順を以下に示す。
① 「ID の絶対位罹に関するプロテクト」の補足の方法により,インデックスホール後最
初のセクターのサーチを行なう。
② ①の直後, リードアドレスにより,( X - 2) 個のID を読み出す。ただし, X=2の
場合, ID は読まずに,③のステップに進む。
62 フロッビーディスクブロテクト活用ハンドプック
③ ②の直後,ライトデータ,またはリードデータを実行する。
765の手順と異なるのは,①で,これは, 8876がインデックス・ホール後最初のセクターに
対し,何らかの処理を行なうコマンドを持たないためである。
前述の補足の方法では, IDの読み出し時間の比較により最初のセクダーをサーチしたが,
あらかじめ最初のセクターのID読み出し時間と,他のセクターの読み出し時間を確認して
おき,ある時間以上かかって読み出されたIDのセクターは, 最初のセクターであると認識す
る方法も考えられ,むしろ実用的であろう。
このプロテクトの変形として, 全セクターのIDを同一とせず,いくつかのセクターのID
を同一とする方法もある。
この場合は,同一IDのセクターの1つ前のセクターは,すべて異なるIDを持たせておけ
ば,リード,ライトは, まずダミーで, 1つ前のセクターをリードし,その直後に,同一ID
のセクターにリード,ライトすることにより可能となり,手順も簡単である。
第3章より高度なプロテクト63
3-5 1トラック内に異なるテータ畏の
セクターを使用するプロテクト①
■765, 8876
通常,同ートラック内のセクターのデータ長はすべて同一となっているが,
とにデータ長を変えることによりかけるプロテクトである。
フォーマット時に各セクターのデータ長が可変できれば,
各セクターご
原理的には,
ライトが可能である。
しかし,このフォーマッティングが可能なのは, 8876など,フォーマットのデータをすべ
てホストマシンから送れるものでなければ不可能で, 765のように,マクロ的なパラメータを
フォーマットを行なうFDCでは違った方法が必要である。
問題なくリード,
送ることのみで,
以下に765を使用した場合の方法を解説する。
例として,図3-9に示すIDを持つ8個のセクターが正常にリード,
ようにフォーマットする場合を考える。
この例では, 2番目のセクターのデータ長がN=2となっており,
ライトが可能になる
他はN=lとなってい
る。
まず,図3-9に示すIDを使用して, N=lでフォーマットを行ない, 次に, 2番目のセ
8
?'
s
mrco-0-000000 ao rt g10cy oe
r?
'?•S?

p .. y ooyp PNNno mac uek m dved iaw. r
Drr0012345678a IdtHNH
R1-2-345678
Ho-goooooo
N
1
可←このセクターのみ
1
1
N=2
1
1
1
1
〔図3-9〕
64 フロッピーディスクプロテクト活用ハンドプック
クターに対し,ライト動作を行なう。
この後再ぴIDを読み出すと,図3-10のように,
えてしまっている。
N=2のセクターの次のセクターが消
これは, N=lでフォーマットされているセクターに対して,N=2でライト動作を行なっ
たため,次のセクターのID部のエリアにまでデータが書き込まれてしまい,見かけ上,次の
セクターが消えてしまったと認識されるためである。
これを避けるためには,図3-11のように,
を設けて, フォーマットを行ない,その後,
N=2のセクターの次にダミーとなるセクター
N=2のセクターにライト動作を行なえば,ダ
7

s
mrcooooooo ao rt g10cy oe r?'? s?' p .. y ooyp PNNno mac uekm dvcd r .law.
orroo1234567a IdtHNH
R1245678
Hooooooo
がる
‘ 一し
夕て
クっ
セま
のし
3て
=え
R消

N1211111
〔図3-10〕
, ?・
s
mrco 且且000000 ゜ rt g10cy oe
r?
?
•S?
’ p
.. y ooyp PNNno mac uekm dvcd .
la3.r
Drroo123456789a IdtHNH
R12-2-345678
Hoo-0-000000
ーセQOの一何
タのすN夕ば
ク一加, クれ
セミ追Rセい。
のダをのてい
2 に一凡他っ良
=後夕' は違も
N のクC 値とで

N12-0-111111
〔図3-11〕
第3章より高度なプロテクト65
ミーのセクターが消えるが, 目的とするフォーマットが得られる(図3-12)。
この手法を用いて, データ長の異なるセクターを1トラック内に作成することができるが,
いくつかの注意点を示しておく。
まず,アンフォーマット時の1トラックの容量は, 6250 (186叫パイトとなっているので,
これを越えないことである(5インチ, MFM時)。
また,データ長を可変してライト動作を行なった場合,データ長によっては上記の例のよう
に次のセクターだけでなく,数セクターに渡り消される場合があるので,あらかじめ,
クター分が消されるか計算するか,実験にて確認を行なうこと。
また, GAP3の長さも考應に入れなければならない。
何セ
8
?・
s
mrcoooooooo ao rt g10cY oe
r?
.?

S?
·
p .. y ooyp PNNno mac uekm dvcd iaw.r Drroo12345678a IdtHNH
R12345678
Hoooooooo
一の得
ヵゞ
勺タh
ク目ト
セ'ッ
のてマ。
一え一る
ミ肖ォれ. ‘‘.
ダがフら

N12111111
〔図3-12〕
66 フロッビーディスクブロテクト活用ハンドプック
3-e
■765
1トラック内に異なるテータ畏の
セクターを使用するフロテクト⑪
前出の図3-12 のフォーマットを行なう場合, ダミーのセクターを設けて, N=lでフォ
ーマットする方法を解説したが,同じフォーマットを行なうのに,もう一つ別の方法がある。
前出の方法は, 1トラックのセクター中,データ長の一番短い値(例ではN=l) にてフ
ォーマットを行ない,ライト動作により,ダミーのセクターを消去してフォーマットを完成
させる, という方法であったが,逆にセクター中,データ長の一番長い値(例ではN=2)
にてフォーマットを行なう方法である。
この場合, N=2のセクターは, そのデータ長でフォーマットがされているため, リード,
ライト動作は正常に行なわれるが, N=lのセクターは,一度データを書き込んでやらない
と,問題が発生する。
しかし,この2つの方法で1トラック内にデータ長のセクターを存在させるフォーマット
を行った場合,両方とも,すべてのセクターに対して正常にリード,ライトが行なわれるの
で,見分けが付かない。
そこで,さらにこの2つの手順の違いをキーワードとするプロテクトを考える。
つまり,セクターのデータ長を変化させることで,まず, 1次のプロテクトを行ない,さ
らにフォーマットの作成手順の違いをチェックする2次のプロテクトをかけるわけである。
例として,図3-9のフォーマットで考える。
まず、このフォーマットを上記の2つの手順により作成する。
そして, リードダイアグノスティックコマンドにより各512 パイト分のデータを読み出し
たものが,図3-13 及び図3-14 である。
図3-13 は, N= lでフォーマットした手順のもので各データは,何ら異常な点はないが,
図3-14 のN=2でフォーマットした手順のものは,データに異常が見られる。
つまり,データ部のCRCの後, GAP3 がなく, N=2でフォーマットしたときの, 254 バ
イト+ 2パイトのCRCが残ってしまっているのである。
これは, リード, ライト時には,何ら問題が発生しないので,このような方法により確認
しなければならない。
第3章より高度なブロテクト67
逆に,この方法のように, リードダイアグノスティックにより, データ部のCRCの後に
GAP3 が存在するかどうかにより, 2つの手順のいずれかを使用したかのチェックを行なう
ことが可能である。
4000 I FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4010 1FF FF ff FF FF FF FF FF FF FF FF FF FF FF FF FF
40201FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40301FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4040IFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40501FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40601FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40701FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40801FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4090 I FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40AOIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40BOIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40COIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40DOIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40EOIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40FOIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
I← データ部
4100 B E5 4E 24 E4 E4 E4 E4 E4 E4 E4 E4 EA EA E4 Ed ← GAP3 い$““““““
4110IE4IE4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 ヽ..‘‘~~贔~~~~ヽヽ~~、
4120IE4IE4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 、~、..‘‘..~‘‘‘‘‘..‘‘
4130IE4IE4 E4 E4 EOIOO 00 00 00 00 00 00 00 00 00 001 ..ii‘‘ ヽ=
4140 I OAI 1A 1A ff---rD 00 00 20 29 F3 C4 Ed E4 E4 E4 E41 = ) 目卜‘‘..、~
4150IE4IE4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 、~、~‘‘‘~~~‘‘』~』ヽ
4160 I EOI FF FF FF FF FF FF FF FF FF FF FF FF OA QA OAI =
4170100 100 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4180 1001 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4190100100 00 00 00 00 00 00 00 00 00 00 00 00 00 00
41AOIOOIOO 00 00 00 00 00 00 00 00 00 00 00 00 00 00
41B010017F FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41COIFFIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4100 I FFI FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41EOIFFIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41FOIFFIOO 00 00 00 00 00 00 00 00 00 00 00 00 00 00
CRC
〔図3-13 〕
68 フロッピーディスクブロテクト活用ハンドプック
I← 次のセクタ一部
4000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4050 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF Iーデータ部
4080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40AO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40CO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40EO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40FO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4100 FB ES 4E 00 00 00 00 00 00 00 00 00 00 00 00 00 ~
4110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0り.
4190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 N=2でフォーマット
41AO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 したときのデータ部の
41B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 残り
41CO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 512- (256+2)
4100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 =254パイト
41EO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
41FO
CRC
〔図3-1 4〕
第3章より高度なブロテクト69
S-7 テータ部のCRCエラーを利用する
フロテクト
■765, 8876
データ部, ID の部のCRC エラーは, 主にメディアの不良により発生するものであるが,
これを人為的に作り,プロテクトに利用する方法である。
データ部のCRC は,ライト動作(ライトデータコマンドにより,セクターのデータ部に書
き込みを行なう)時に自動的にFDC 内で計算され, 書き込まれる。
このため,メディアが不良でなければ,データ長にかかわらず, ー担ライト動作が行なわ
れるとデータ部のCRC エラーは発生しなくなる。
よってデータ部のCRC エラーを作成するには,フォーマット時に作成する方法が一般的
である。
765 の場合は, ID 部で指定するデータ長と異なるデータ長でフォーマットを行なえば,フォ
ーマットのみしただけの状態でリード動作を行えば,データ部CRC エラーが発生する。
これは当然のことで,データ長が,例えば, N=lでフォーマットされているセクターに
対し, ID 部がN=2であれば, リードされるデータ長は, 512 パイトが読み取られるので,
FDC は,本来CRC でない部分をCRC としてチェックを行なうため,エラーが発生するわけ
である。
8876 の場合は,フォーマット時にCRC を書き込むデータ(F7 卜1) を送らず,代りに,ダミ
ーのデータを送ればデータ部のCRC エラーを作成できる。
765 と異なるのは,データ長がID 部と同じであっても, CRC エラーが作成できる点であ
る。
ところで,データ部のCRC エラーは,データが読み取られた後に発見されるため,同時に
データの内容に対してもチェックを行ないプロテクトをかけることが可能である。
765 の場合は, ID のデータ長が, 実際にフォーマットされているデータ長に対して,大きい
か小さいかによって, 、読み取られるデータが異なるし, 8876 の場合,フォーマット時に同時
にデータ部のデータを書き込め(ただし,コントロールデータの値は書き込めない)ば良い。
8876 でこのようにしてかけたプロテクトは, 765 でチェックすることは可能であっても,同
じフォーマットで書き込むことは不可能であるので,強力なプロテクトとなる。
70 フロッピーディスクプロテクト活用ハンドプック

3 - 8 ID部のCRCエラーを利用するブロテクト


■8876
8876 は,データ部のCRC エラーを作成する方法と同様の方法でID 部のエラーを作成する
ことが可能である。
リード動作では, ID 部にCRC エラーがあると,続くデータ部は読み取られず, ID 部の
CRC ェラーが発見された時点で,コマンドが異常終了されてしまう。
よって,この場合, リード・トラックコマンドでデータ部を読まないかぎり,データ部が
あろうとなかろうと同じである。
よって,図3-1 5のようなフォーマットを使用すればより多くのID 部が入るので,これに
より, 2次的なプロテクトをかけることも可能である。
このプロテクトは, 765 でもチェックすることは可能であるが,フォーマットを作成するこ
とは不可能であるので, 765 ではこのプロテクトは,はずせないことになる。
rインデックスホール
プリアンプル部I ID 部1 ID 部2
IDAM
C I H I R I N
ID 部3
ポスト
アンプル部
CRC
LこのCRC 部には, コントロールデータ“F
7 H" を使用せず,ダミーのデータ2バイト
(本来のCRCの値と異なっていれば何でも良
い)を書き込む。
〔図3-15 〕
第3章より高度なプロテクト71


3 - 9  テータ部か読み取れないことを利用するフロテクト


■765, 8876
リード動作を行なった場合,データ部が読み取れないことを利用するプロテクトである。
データ部が読み取れない(FDC のリザルトステータスの該当するエラーピットが立つ)原
因としては, DAMまたは, DDAMが正常に読み取れなかったか, DAM, またはDDAMが
存在しないかのいづれかである。
よって,これと同じ状態を人為的に作り出せば良いわけであるが,この手順は, FDC によ
って異なるので,個別に解説する。
(1) 765 の場合
765 の場合, WRITE ID コマンドによりフォーマッティングを行なうが,このコマンドは,
マクロパラメータをFDC に送るだけでフォーマッティングを行なうものであるので,
DAM, ないしはDDAMを存在させないようにフォーマッティングすることは不可能である。
また,ライト動作時も,メディアが不良でないかぎり,正常にDAMまたはDDAMが書き
込まれてしまうので, 一見DAM, DDAM を操作することは不可能と思われるが, 実は実験
を行なうと, 面白い事実がわかった。
765 の場合, N = Oでフォーマットを行なうとデータ長128 バイト/ セクターでフォーマッ
トが行なわれる。
これは, MFM, FMモードいづれも同じであり,正常にフォーマットが行なわれる。
しかし, N=Oの場合, MFMモードにて,ライト動作を行なうと, DAM, DDAMが破
壊され,この後, リード動作を行なうと,データが読み出せないこととなった。
よって, N=Oと限定はされるが, 765 でもこのプロテクトがかけられることとなる。
図3-16 に,この方法によって, DAMを読み出し不能としたセクターのダンプを示す。
765 のリードダイアグノスティックでは読み出せないので, 8876 のリード・トラックによっ
て読み出している。
8876 のリード・トラックコマンドで読み出されるデータは, ミッシングクロックのデータ,
つまり, アドレスマークに同期して読み出されるが,図のDAM部分はビットずれが発生し
72 フロッピーディスクプロテクト活用ハンドプック
ており,これではFDC がDAMとして認識できないことがわかる。
これは箪者の想像であるが,おそらく,765 はN=Oの場合, MFMモードでライト動作を
行なうと, DAMのAlH3 バイトを書き込んだ時点でライト動作が異常終了するためではな
いかと思われる。
しかし, 765 のマニュアルには, MFMモード時にN=Oのデータ長を使用することについ
ては規定されておらず,一概にLSI のロジックミスと考えるのは不適当である。
(2)8876 の場合
8876 の場合は,自由のフォーマットでフォーマッティングすることが可能であるので,
DAM, DDAM を書かないことも,またDAM, DDAMを765 の場合と同じように不完全に書
き込む(DAM のFBH ないしはF8 卜Iのかわりにダミーの値を書き込めば良い)ことも可能
である。
特に, DAMを書かなければデータ部は必要ないので, 図3- 15 のフォーマットを使用する
こともできる(ただし, ID 部のCRC はコントロールデータ“F7 記を使用して正常に書か
れるようにする)。
逆に,データ部を残しておき, リード・トラック・コマンドにて,読み出し,チェックす
る, といった2次のプロテクトを使用することも可能である。
501:)1: )
5010
51 :)三1)
5030
51: )41:)
51:)51: )
51:)61: )
51:) 71: )
51:)BI)
5,: )' うC)
50AO
51)E(: )
501ご(:)
51:)DC)
5OEI:)
51:f℃)
5100
51 10
5120
5130
51斗0
・3 0 'ぅo.3o.3C) •3C) •う(:)うO ・30 BE 4E 4E 4E 4E 4E 4E 4E
4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
← プリアンプル部
4E 4E 4E 4E 4E 4E 4E I: )(:) (:)(:) Cl( :) (:)(:) 1)I:) (:)( :) (:)(:) (:) (:) (31: )
(:)(:) (:)1: ) (:)(:) )こ:2 |: 三')こ: •2 ~-c 4E 4E 4E 4E 4E 4E 4E 4E 4E
4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
4E 4E 4E .斗E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
4E 4E 4E 4E 4E 4E 4E 4E 4国()(:) (: )(:) (:)(:) (:)( :l C) (:) (灰) (:)(:) IAM
() 0 (: 1(:) (:1( :1 (:1(: ) (:)() 14 A1 A1 FErO(:) () I:) (:1 1 1:1(: ) EA 2D 4E
4E 4E 4E 4E 4E 0
正常に;; りかれている
4E 4E 4E 4E 4E ( l
畑) Ki5 A1 A1 FD F
77 77 77 77 77 1
Tl 77 77 77 77 ~
77 77 77 77 77,
77 77 77 77 77 ; ・9
77 77 77 Tl 77 ―;
77 77 77 77 77 ―、
Tl 77 77 77 77 ―、
破壊されたDAM
本来ならば. FDHは. FBH でなければならない。
かつ、このI 、加'.i でヒ・ソトずれが発生してしヽる。
(この時.点でコマンドが躾常終了しているとも考えられる)
〔図3-16 〕
第3章より高度なプロテクト73
3-10 スプライシンク・キャッフ
(ピットすれ)を利用したフロテクト
■765, 8876
スプライシング・ギャップという言葉は, 著者の造語で,あるセクターにデータが書き込
4000IFF FF FF~ FF
4010/FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4020 /FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4030/FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4040 IF F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4050/FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ← テ'ータ部
4070/FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4080 /FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4090/FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40AO /FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40B0/FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40CO /FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4000/FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF GAP3,データは4EHで, フォ
40EO /FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40FO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ーマット時と同じである。
4100 IFB ES/4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
4110/4ET4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
4120 /4El4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
413014El4E 4E 4E 4EIOO 00 00 00 00 00 00 00 00 00 00
4140 IOOIAl Al Al FE 00 00 02 01 AF SF 4E 4E 4E 4E 4E
415014E14E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
416014EIOO 00 00 00 00 00 00 00 00 00 00 00 Al Al Al
41701FBIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4180 IFF ir:F FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41901FFIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41AO IFFIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41B0 IFF IF F FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41CO IFF IF F FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41DOIFFIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41EO IFFIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
41FOIFFIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
CRC
w-JNNNNNNNNNNNNN
NNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNN
NNNNN
0 0 0'リ_NNNNN
NNNNNNNNNNNNNNNN
N 。。。
I← 次のセクター
〔図3-17〕スプライシング・ギャップのない場合(μ PD-765A)
74 フロッピーディスクプロテクト活用ハンドプック
まれた場合,その前後にて発生するギャップ(ずれ)をこう称している。
このプロテクトは, トラック上に,このスプライシング・ギャップが存在するか否かをチ
ェックするプロテクトである。
スプライシング・ギャップは,フォーマットのみを行なった(ライト動作を行なっていな
い) トラックには存在せず,かつ,ライト動作を1度も行なっていないセクターの前後にも
存在しない。
チェック方法としては, 765の場合はリードダイアグノスティックコマンド, 8876の場合
は,リード・トラックコマンドにより, GAP3の値が,フォーマット時の値(MFMなら4Eり
と同じかどうかをチェックする。
40001FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4010 IF F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4020 IF F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40301FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40401FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40501FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40601FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40701FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40801FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4090IFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40AOIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
40BOIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
I-データ部
40CO IF F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FFI GAP3, 最 初 の 1パイト目以外
4000jFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF はすべて12Hで,フォーマッ
40EOIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
ト時のデータ, 4EHと異なる。
40FOIFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4100IFB.ESl4E.12 12 12 12 12 12 12 12 12 12 12 12 121"'11..N
4110112112 12112 12 12 12 12 12 12 12 12 12 12 12 12
4120 I1 2I 1 2 12 I 1 2 12 12 12 12 12 12 12 12 12 12 12 12
4130112112 12112 lFIFF FF FF FF FF FF FF FF FF FF FF
4140jE1j~FF FF 9F CO 00 02 12 12 12 12 12! 出A@ ノタ
4150 112112 121 12 12 12 12 12 12 12 12 12 12 12 12 12
416011FIFF FFI FF FF FF FF FF FF FF FF FF FE 14 14 14
4170100100 00100 00 00 00 00 00 00 00 00 00 00 00 00
4180 100 Io o 001 oo oo oo oo oo oo oo 00 00 oo oo oo on
4190100 Ioo oo¥ oo oo oo oo oo oo oo oo oo oo oo oo 001-次のセクター
41AO 100100 00100 00 00 00 00 00 00 00 00 00 00 00 00
41B0100100 00100 00 00 00 00 00 00 00 00 00 00 00 00
41CO 100100 00100 00 00 00 00 00 00 00 00 00 00 00 00
4100100100 00100 00 00 00 00 00 00 00 00 00 00 00 00
41EO 100100 00¥00 00 00 00 00 00 00 00 00 00 00 00 00
41FO 100 I0 0 00 ¥00 00 00 00 00 00 00 00 00 00 00 00 00
CRC この点にスプライシングギャップが存在する
〔図3-17〕スプライシング・ギャップのある場合(μ PD-765A)
第3章より高度なプロテクト75
同じであれば,スプライシング・ギャップは存在していないと判断する。
ところで, 8876のリード・トラックコマンドでは,アドレスマークが発見されると,それ
に同期が取られるので, 1セクター目にスプライシング・ギャップがあっても, 2セクター
目のDAMで同期が取られるため, 2セクター目のGAP3をチェックして, 2セクター目の
スプライシング・ギャップの存在がチェックできるが, 765のリードダイアグノスティックコ
マンドでは,データの読み出しの先頭,つまり,インデックスホール後, 最初のセクターの
5(:)(.:)(:) •:1E 4E.:1E.,1E.::[E.::[E —•:1E,1E 7;-:'7:2 72 7•2 72 72 72 7こ:
弓(:)1(:) •7 之72 7:: 72 7之7 ;: •7';2 7 ::2 7.;2 7.2 72 72 7'こ7.2’72'7.2
51:応;'I) 72 72 72 72 72 72 72 7立: 7;翌7~-: 72 72 72 72 7:と7三:
忠:応3(:) n 72 72 7之72 72 72 72 7立72 72 7 :と7•2 72 7:2 7;2
51:)•:,l£) 72 72 72 72 72 72 72 72 72 72 72 72 72 72 7 こ' 7 :;••:I← プリアンプル部
5(:迂江) 72:入2 7と72 7 之•72 70 (: )(:) (:氏) (:)(:) (:氏) (:)(:) (:)(:) (:)(:) (:)(:) (:)( :)
5(:柘瓦) (:)(:) (:)(:) (:) 6 1:2l:2 1こ2 Flこ. 4E 4E.4E 4E.otE 4E.4E 4E 4E
507(:) '社:: 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
忠:泥}(:) 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 斗E 4E 4E 4E 4E 4E
5(:心(:) 4E 斗E 4E 、+E 4E,:1E,:1E 4E 4E (: )(:) (直) (:氏) (:)(:) (:)(:) (:)(:) (:.)(:)
5(:)A(:) 直) (:)(:i C)(: l (:)(:) (:)(:) 14 A1 A1 FE (:)(:) (: )(:) (:)1 (: )1 FA (:)1こ•:1EI← ID部
5(:)I虹) 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
51:)1:::o 4E 4E 4E 4E 斗E (:)(:) ()::)( (:)(:) (:氏) (:)(:) (:)(:) (:)(:) (:)(:) ) :)(:( (:)(:) ()(:)
5(:)DO C)1:) 14 A1 A1 「.-8 FF FF FF FF FF FF FF FF FF FF I→-F
5(:)E(:) FF FF fi• F l••「F f-.f,- f「.,f. r,-f, FF F「F F「F FF FF I:r• F FF FF Fl; —
50fハ:〉lrF FF FF FF FF I.-F FF FF FF FF FF FF FF FF l;•F I;—I•—
5 1 (氏) F F F F F F F F F F F F F F f「F f「F'F'F FF'f•F FF f;"F'F'ft FF'
51 iO li"F FI.i" FF FF FF FF FF FF FF FIi" FF Fl;" FF FF FI;• F ".Ii
51.,.:o I:「~- FF FF FF f「F F'F FF fi" f• F'F F・i-- FF- FF FF f•·F ftf,-fi" f,
51ふ:\ FF FF FF FF FF FF FF FF ITF FF FF FF FF FF FF F;l“I← デ ー タ 部
51 •'11:! f「F FF FF FF FF FF FF FF FF FF FF F「F F F F F FF FF
51'..孔) 1,-i;- i•-1•- FF-I:「r,- F-F- FF l•T n- FF n-,.-F-F-F i,-r- FF n-I:「i;-
5 1 f.瓦) Ii•F F F FF F F f「F r,-F F・r,- f, r,-FF[「F FF FF Ff「f「F FF F F
5 1 -,7( :I i•·F 1,-F 1,-F F-F FF l•F f,-1, FF FF- F-F- FF- FF- FF- 1,-F l"I;-
5 1 f.3 (:) 町「f「F FF FF FF F「F f•f• f• f• f• r,- FF FF F F F F FF FF
51'うQ FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
51(';(:) FF FF FF FF FF F F FF FF CRC
51 1•3 1 :) r・F f• F l•F F.F. l•F· n・ |•9Tr,-
5 1 1.:: (:) FF FF FF FF FF「FF r,・f,・ Flず
51E 9):( ドF- n- FF F-F- F-F- l•B 4E 4E 4E 4E 4E ·l•ビ
51 .E( :} 4E 4E 4E 4E 4E 4E 斗E 4E 4E: 斗E,::I•E efE 4E SI•E 4E 4E← GAP3, デ ー タ は4EH
51ド(:) 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E .:キE 4E..1 E でフォーマット時と同
52(:. 1(:I 4E 4E 4E 4E 4E ·•11三斗E 4E ·,1•E 4E (:)(:) (:)(:) C)(:) (:)( :) (:)( :) (:)( ::) じである。
521(:) (灰I ):(C) (灰) (:)(:1 (:)(:) CI(:1 14 A1 A1 ;1-E :(II:I (I:):) :()2 (:)1 AIr :31;-
52之(:) 4E 4E 4E 4E 4E 4E 4E-1•E 4[ 4E 4E 4E 4E-1.E 4E 4E
5230 4E 4E 4E 4E 4E 4E(:氏) (()::) ( ()):: (()::)) :():1 ()(:) : (:)1:) (:氏) C):)( (:m|← 次 の セ ク タ ー
52斗(:) (:)(:) (:)( :) 1 4 A 1 A 1 F E( F F F F F F FF FF F F F F F F FF F F i”
525C) FF FF FF FF FF FF FF FIr FF FF FF FF FF FF I;-F FI.r
〔図3-18〕スプライシング・ギャップのない場合(MB8876A)
76 フロッピーディスクブロテクト活用ハンドブック
DAM, ないしはDDAMで同期が取られるだけで,以後はアドレスマークがあっても同期は
取られない。
このため,あるセクターにスプライシング・ギャップが存在すると,それ以後は,ビット
がずれてデータが読み出されてしまうので,それ以後のセクターにスプライシング・ギャッ
プがあろうとなかろうと, GAP3の値はフォーマット時の値と異なってしまう。
5(:)(:)(:) :21 21 21 21 21 三'1 21 工:) (:)'3 (:)'3 (:) ':1 (:)'う(:)'う(:)'う(:)' 3(: r =)
5(:) 1(3 C)'う(:)'う(:)' 3 (:)'3 (:)'3(:)'3 (:)'3 (:)'3 (:)'3(:)'3 (:) '3 (:)'う(:)'3(:) 'う(:)'う(:)'3
5(:)芯(:) C)'う(:)'3(:)'う(:)'う (3•3 (:)':) (:)'3 (:):} ' (:)を))[ 'う(:)'3(}:を) ))::(' (:)'う(:)'う(:)'五 l
5C) :•う(:) (:)'う(:)'3 (:)'3(:)'3 (:)•3 (: )‘3(:y3 (:)'う(:)'3(:r3 (:)•3 (:) ‘3(:) '3 (:r3 (:rう(:)笠;l
5ひ:江) (:)らl):('3 C)'3 (:)'3 (:)'3 C)'3 (:)'3 C)'3 :1)'3 (}'3 (:)'3):( ):' (:)':) :(;:')1( :)を) (.:)'五I
5(3□(:) [:)'う(:)'3(:) '3(:)'3 (3'う(:)'う(:)fi- FF FF r,-|i" r,•-F FI;- FF FF FF I可: ;ードプリアンプル部
50も(:) FF..|:「F F「1 .1 4 1:こ: ::I:2 Fl:.:.1-E 4E,:1E 、1E.:1.E 4E,::1.E,4E,:I.E
5C).7(:) ,:tE 4E,HE 4E 4E,:1E,:tE,:1E 4E 4E,:1E 4E 4E 、1E,4•E,:1E
5(:)f:虹) 9::j.E,:4E,:tE ,斗E 4E 4E 4E 4E 4E 4•E 土1-E 4E 4E,:1E 4E 4•E
5(:)'う(:) 斗E 4E-: 4E 4E 4E 4E ,斗E 4E 4E (:)(:) (:)(--) ): ():():(:() (:氏) (:)(:) (:)(:)
5(:)A ):( 訳) (氏:) ):()(: (:.)(:) (:)(:) 1:1 , A1 A1 FE (:)(:) ( :):( (31) :( .1 f「A ():1.: 4E| ←ID部
5QB1:) 斗E 4E,.1E 斗E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
5( )3: (. 1:. 4E 4E 4E 4E 4E 07 f「 F• f, f, fi'f, n-n, f, r, FF fi-F''rq,- fi F'
5C)i)C) |;•F l:立A1 A1 rTB FF FF FF FF FF FF FI;• FF FF FF r.-r,..
5(:) 1三(:) FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
c-...J:--ー、1’、’‘:" (一—’、 FF FF FF FF FF FF FF FF FF FF FF FF FF Fi: FF i;―i了
51 (-)(:) f•-F F-F FF Fi< f•-F f•F FF FF FF. FF FF FF FF f•F fl, Ffi
51 ) 1:( FF FF FF FF FF FF FF FF Fi;- FF FF FF FF FF I;•F FF
51之(:) f「F FF FF FF FF FF FF FF F F FF FF FF FF FF FF FF
5130 FF FF FF FF FF FF FF FF FF FF FF FIT FF FF FF FF
51,,10 r,-F f•~- F'F FF F'f, FF F'F ~-F n-F"f, Fo"F" F'f;・ f•f• f,f, f,f;・ /←データ部
515( :) FF l3-r,- FF FF FF FF r,-F FF FF FF FF FF FF FF Ii” |i•—
5 Uふ(:) l;• F l•, F FF FF FF FF FF9 FF「 f「F'fof「 F「ド FF FF fi'fi'fifi
5 1 7(3 FドFF FF FF FF FF FF FF FF FF Ii-F I;-F IrF FF FI;•
51BI:) r➔··fi 「9F F F~ fi [「fi"ド- fi-f「n-F「f「Fli. CRC
5 ):1 '0 F・1;- fi-1,- ..r,-,. l•-1<" i;-i;-:I「F FF FI;—
51A(:) I:「F F F I;•• F Ii" F F F F F FF |• 9.f「f「F
51B1:) FF FF FF FF FF FF FF F F FF F F FF I•i••F i1―IT
5 1 1ご(:) FF FF FF l:;•F FF FF FF F F F F F F F F F F F F
5 1 1)(:) Fl;• FF FF |i-F I:「F I;•B E5 6•:1. ;24 :24 :2•:1:2 ・:1 :と4 ;2•:1 .;忍•:1
51EC) 区4:;: 4 と4 24 ;?•:1 も;d :炉1 24・:: 4:竺;1・24 ;図•:1· ;;’,•;1 29,i.:::‘£1 -,
51r,-(:) 24 ・24 24 込4 ::区斗込斗•24 :24 •24 区4 24 ・24 '24 24 :;と4 .,•が中GAP3, 最初の1
5200 24 立:と1 24 24 2斗;24 24 2斗24 3F FF FF FF FF FF「FF パイト以外はすぺ
5210 FF FF FF FF FF l::: A1 A1 FE: (:)(:)(: )(:) :)(: ).;(1 AF 51r 1.,9E てフォーマット時
52::文) .:.'E 4E 4E 4E 4E 4E 4E 4E 斗E 4E 斗E 4E 斗E 4E 4E 4E のデータ, 4EHと
5230 4E 4E 4E 4E 4E (:K3 (:)(:) ():(3 (:) (:) ):((:) ):( (:) (:) (:)(:) (:) ): ():( (:) (:)(:) (:) 異なる
524( :) C)(: ) 14 A1 A1 FB FF FF FF FF FF FF FF FF FF FF FF °
5250 FF FF FF FF FF FF FF FIr FF FIT r,-F FF FF FF FF Flr
この点にスフ-°ライシングギャップが存在する
〔図3-18〕スプライシング・ギャップのある場合(MB8876A)
第3章より高度なプロテクト77
よって, 765 を使用する場合,この点に注意してプロテクトをかける必要がある。
図3-17 に765 のリード・ダイアグノスティックで読んだ,スプライシング・ギャップのあ
る場合と,ない場合のダンプリスト,図3-18 に8876 のリード・トラックで読んだ場合の同
ダンプリストを示す。
このプロテクトは,けっこう強力で, GAP3 の値をこの方法で読み出し,チェックしない
かぎり,プロテクトがかかっていないように見えるといった利点を持つ。
78 フロッピーディスクブロテクト活用ハンドプック
8-11 GAP4bの値を変えることによる
フロテクト
■765, 8876
このプロテクトは,通常では使用されないGAP4b (ポストアンプル部)の値を変えること
15% 19% 18% 舷/% 20% 10 %
1番目の2番目の\\ n番目のGAP4 b
Iプリセクタセクタセクタ(ボスト① アンプル
一部一部一部アンプル)
I
J
約6250 バイト
/ J 2番目の3番目の4番目の
② | つヽ9 --,• ,, |セクターIセクターセクターセクター
N= 5
約3384 ノゞイト
プリ1番目の2番目の3番目のID 4番目の1
③ |アンプルセクターセクターセクター部セクター
146+649X3 =2093 ノゞイト4158 バイト
プリ1番目の擬似的に
④ Iァンプルセクター作成工夫したGAP4 b
〔図3-19 〕
512 バイト/セクター
GAP3=75パイト
にて4セクター/トラックのマットを行な
う。
1番目と4番目のセクターのID 部の
N は5(4096 バイト/セクターとする。
4番目のセクターにデータを書き込む。
このセクターのID のN は5であるので
データ部は4096 バイトとして書き込まれ
る。4番目のセクターにデータを書きこ
むことによって小さくなったGAP4 b
(約1バイト)。
1番目のセクターにデータを書き込む。
このセクターのID のN は5であるので
データ部は4096 バイトとなり, 2番目,
3番目のセクターを消し,さらに4番目
のセクターのID 部と1部のデータ部ま
でが消される。本来のGAP4 b
第3章より高度なブロテクト79
によってかけるプロテクトである。
GAP4b の値は通常4恥であるが,この値に他の値を使用してフォーマットを行なう。
8876 の場合は,ライト・トラックにてフォーマットを行なう場合に該当するデータに4EH
を使用せず他の値を使用してフォーマットを行なうだけである。
しかし, 765 の場合は、WRITEID にてフォーマットを行なうと, GAP4b の値は自動的に
4恥となってしまうため,フォーマット時にGAP4b の値を変えることは不可能である。よ
って, 765 にてこのフォーマットを作成するためには次のような手順を使用する。
図3-19, ①のように5インチ, MFMの場合, 1トラックあたりの容量は6250 パイト+ a と
なっている。
ここで, 4096 パイト/ セクター, 1セクター/ トラックの場合にGAP4b の値を変化させる
方法を例にして考える。
まず,②のように512 バイト/ セクター, GAP3=75バイトにて4セクター/ トラックのフ
ォーマットをWRITE ID によって作成する。
この場合1番目と5番目のセクターのID 部のN を5とする。
他のセクターのID パラメータは何でも良い。
次に③のように4番目のセクターにデータを書き込む。
ID 部のNの値が5であるため, 書き込みは4096バイト分行なわれる。
このため, GAP4b の部分まで書き込みが行なわれるので,GAP4b は約1パイト( 実際は
もっと多い)と小さくなる。
また,この時に書き込んだデータが擬似GAP4b となるので,データとしては, OOH やFFH
スプライシングギャップによるピットずれが発生した場合でも認識しやすい)などの単一
データを使用すると良い。
また単ーデータ中に,キーワード的に数バイト異なったデータを使用するのも効果的であ
る。
この後,さらに1番目のセクターに対してデータの書き込みを行なう(図の④)。
このセクターのID 部のN も5であるので,データ部に4096パイト分が書き込まれる。
このため, 2番目, 3番目のセクター,及ぴ4番目のセクターのID 部とデータ部の1部が
消去される。
これにより,残った4番目のセクターのデータ部が擬似的なGAP4b として作成されたわ
けである。
次にチェックの方法であるが,これはGAP4b の値を, 765 の場合は,リードダイアグノス
ティックで, 8876 の場合はリードトラックにて読み出し,本米の値であるかどうかのチェッ
クを行えば良い。
80 フロッピーディスクブロテクト活用ハンドブック
ここで注意しなければならないのは, GAP4b は,スプライシングギャップがあると4EH
以外の値,たとえば2和などになるので,逆に擬似的に作成したGAP4b の値であるかどうか
のチェックを行なう方が簡単である。
擬似的に作成されたGAP4bの値としてOOH' またはFFHが使用されている場合は,ピッ
トずれが発生しても,必ず0伽またはFFHとなるからである。
このプロテクトは765 で使用する場合,手順が複雑であるが,逆に強力である(解析されに
くい)のでその効果は大きい。
図3-20 にこの方法で作成したGAP4b のダンプリストと,通常時のGAP4b のダンプリ
スプライシングギャップがない場合
4F90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FAO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FBO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FCO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
← データ部
4FOO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FEO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FFO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF GAP4bの値は4EH
5000 35 3514E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4-E 4E 4E グノSSNNNNNNNNNNNNNN
5010 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E NNNNNNNNNNNNNNNN
5020 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E NNNNNNNNNNNNNNNN
5030 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E NNNNNNNNNNNNNNNN
5040 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E NNNNNNNNNNNNNNNN
SOSO 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E NNNNNNNNNNNNNNNN
5060 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E NNNNNNNNNNNNNNNN
5070 AE 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E NNNNNNNNNNNNNNNN
CRC スプライシングギャップがある場合
4F90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FAO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FBO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
← データ部4FCO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FDO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF GAP4bの値は27H
4FEO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FFO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF (ピットずれが発生)
5000 35 3514E 27 27 27 27 27 27 27 27 27 27 27 27 27 _.J SSN' ''' ''' ''''' 、
5010 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
,ヽ9 9 9 9 9 9 9 9 9 9 9,、
5020 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 / 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
5030 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
,,, ,, ,,,,,,,,,,,
5040 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
,,,,ヽ, ,,, ,,, ,,、、
SOSO 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 9., ., 、.,., ., 、、、.,., ., .,、,
5060 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
ヽヽ9 9 9 9 9 9 9 9 9 9 ヽ, ,,
5070 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
,,,,ヽ,, ,ヽ, ,,,,,,
CRC
〔図3-20 〕通常のフォーマットで作成されたGAP4b
第3章より高度なブロテクト81
ストを示す。
これらは,いずれも765 にて作成したものである。
スプライシングギャップがある場合l
4F90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FAO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FBO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF f- データ部
4FCO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FDO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FEO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FFO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5000 35 35 4E 00 00 00 00 00 00 00 00 00 00 00 00 00 SSN
5010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
5020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
5030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00...,
5040 00 oo oo oo oo oo oo oo oo oo oo oo oo oo oo oo le AP 4bの値はOOH
SOSO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
5060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
5070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
CRC
スプライシングギャップがある場合2
4F90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FAO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FBO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FCO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FFf- データ部
4FDO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FEO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4FFO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5000 35 35 4E FF FF FF FF FF FF FF FF FF FF FF FF FF! SSN
5010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FFiGAP4bの値はFFH
5030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
SOSO FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
CRC
//―-
このように擬似GAP4bを作成する時にデータと
して, OOH またはFFHを使用すると,スプライ
シングギャップが発生して, ピットずれを起し
ても必ずOOHまたはFFHとなるので確認しやすい。
〔図3-20〕図3-19の方法により作成したGAP4b
82 フロッピーディスクプロテクト活用ハンドプック

3 - 12  一見アンフォーマットに見えるフロテクト


■8876
8876 ではIBM, ECMA フォーマット以外のフォーマットが可能である。
また, リード・トラックにより,フォーマットに係わらずl トラック内のすべてのデータ
を読み出すことが可能である。
そこで,通常のリード,ライト動作で使用される各セクターのID 部を作成せずデータを書
き込めば, リード・トラックにて読み出さないかぎり, 一見アンフォーマットを見られると
いったプロテクトを作成することが可能である。
この場合,注意しなくてはならないのは, トラックの最初に少なくとも1つ以上のアドレ
スマークが存在しないと, リードトラック時にデータの同期が取れず,ピットがずれた状態
でデータが読み出されてしまう。
よって,プリアンプルに相当する部分が少なくとも必要になる。
図3-21 にこのフォーマットの2つの例を示す。
いづれもID 部が存在しないので,一見アンフォーマットと見ることができる。
また図3-22 に図3-2 1の2つの例を使用したフォーマットのダンプ例を示す。
① l プリアンプ)レ
② I プリアンプル1 DAM I

口゜
用ぃ使
良てとし
Vとお域て領しタにデ
AP

G まはタ部トタ一後イ一最バデの
10

ク数ッ

ラずト

①の例では, プリアンプル部のIAM によってデータの同期が行なわれる。
②の例で, プリアンプル部のIAM 及びDAM(DDAM でも良い)によってデータの同期が行なわれる。
〔図3-21 〕
第3章より高度なブロテクト83
59 :氏) 9;9 ,―_)£ , .31::・31 ::'31: .31::•3 I:: ・3I:: •3 1:: .3 1こ: 'ぅc .3 I::.3 1こ: .3 1こ: .3 1: .31: •3 1:
邸)1 I) ・況:9五:•31こ: .31:: ・:/ 1こ:・五:.31 : .うIこ: .31:: .31 こ..うI:; .31:・ ・31::: ・31: :'•31::: ・31::.
邸) ・2(1 1・3 1こ・31: :.31::: ・3,::: ・:/ 1:::・:/ 1こ:.3,こ:'3 1こ:.31::'う): •31: : .31: •3 1:: ウ)こ:.31:::・3 ,こ:
5(:に39: , .JI : •3 1:: ・3 ,:::・うIこ'3 1; .3,::: •3 ,:::・3 1:: 'うIこ・3 ,こ・3 1: ・31 こ:.31 ::.3,:::' うI::.うIこ
5040 1・3 ,こ・31::.うC ・3 1こ・うI:..31::・3,こ:•:/ 1:::・3 ,:: ・3 ,:::・3 ,こ:.31:: .3 1こ9 1:· •3C. .3 1こ:
釦翫) ' 3I: ,瓦) 9: )()直) 9:) () () 9) ,:)( ) (:)(:) 9:M) ,江)9:)1) (灰) 9:)1,こ:2 I::; •2 1:2 |.J
50E.O W C 4£ 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
5070 14E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
5080 14E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
5(:だl(:) •4E .1E .4 E 54 68 63 73 ぷ:)E,•3 73 ・とて) 73 E. 1 E. D 70 E, 1こ
50A(:)ら5 三' () 6F E.E, 21) 71) 72 E,F 74 65 63 74 21) 62 7 •う2 ()
5(:屯O 14D 4::: 38 38 37 3E, 2゜73 E.5 72 69 E,5 73 20 2゜21)
59:)1こ. 9)
51:I)9:)
59: )巳:)
59:)ドて)
51 9: )9:)
51 19: )
51::: .,:)
5130
5140
5150
516(>
5l7{:)
5180
51'3 0
51A(:)
5180
51 Iこ: 9)
,•',•' ... ,· ,•' ,, '.' ,,. ,•' ,,. ,.. ,,. ,, ,.,·
.、... .,.9,..... ,9,.. .,., .,,, .・,・,,
., •' ,、r... .ヽ.' ・9 、9 ,、.、., •' ·', ,·
,・,,,,,,,,・,・,,,・,・.. .,.・, ,..., ,,・
.,•.9 ,9 ... ... ,、... ,· ,·· ," ... . ...... ,·· .
., I I'! ) " ) l
゜ #NNNNNNNNNNNNNNN フリアンプル部
NNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNN
辿l. hi s i s ,sampl
"' ':, f pr,:, te,c t by
M8887E, Stcl'" i e, s
) ゜容フ内
ンのダーーc
夕-s A
L

K
mb
s
t
・ピ
S・
b
rm-

  • n

l
p
Glf
as

  • ,i

.li
t
eSrh70
stus
.ur
o
s
.l
p
6T.18

  • ,-

.l
l
t.
eSrh
7

  • 3

8
.c
s
.c
r

  • s

i
p6Tf
8
B
1
・ピ
M
P

.l
t
.P
Sr
h
708

  • 3

Si
p
9bTf
8B
l
h
Srh7i38.C
MP
ya s 部
.lp
6Tf8
B
l
mb
h7
I38.PMP
yas
f
8Blmb
s
t
es 夕
T
08

  • U

M
P
y
a
S
r-
.l
i
R

  • l

m
bst.
CS
・ピ
r
.bM
Py
a
s-
,-.l
.lt

  • CS


l
rnb
st
.pser
o

i
p
ya
S
r-i
.l
t
.eSrh
-
L



7374557355

20空翌迄一塁
54

10
3?

3?
r
ir4
53-[
.←
08
.り
7

0•
F
62
7-.、-
6
667
677-.、
-
6
『.P
-
3?.
,↑
6
7374
65
73
6572

oF
二塁
5465
38

n
.3.1
うう
4513.]
2
0.
8
.".
70Q
F8
."
.5
[ .. -6
667
677

7
6-.,

  • 3?

[
..
1
6
3.1-
.,:
6
73

72203OF73

365465383

  • r45

3

  • ['-

.o.
8
.o.
7.0•
F8
.CJ
51
D
·0
.u
676
7
7

7:6-フ

  • 3.]

2632
64

  • .'』

7
盆は
703654

38

42

翌孟
73
72
g
08
翌三
―3
55
40
喜ば

703554

38

42
認塁


蒻⑳
37-
mioF

6540


61

  • 3

73-m
i
54

38

4220

塁竺認
73

5573
.o.
F
8
.o.
S
D
09
?ソ・
リ1
.o.3.1.
o.
3??ッ
↑5 ••
-
6
3-][9
1
6
4

:-
77t.9
-
6

  • .,i7-.,


6
66
翌心認翌


7374657355
72i
3
•CJuJ
D-CJ.o

・91
_り
3
.u
r.??

4
5J3
l['.
i
64

-
77
i.,_
6

  • [9-

7f ••
-
666767

  • 3

庄唸函

imi7374
55
7355

⑳研
732

.)

. りーゴ
n

1.
o
.3
•1,0.
3F
1
5ゴ
453-

i.

•8

  • '

-
77.'.
76
2
7
r,-666
7
67
7-
,16
.'
9
,'
〔図3-22 〕① の例
84 フロッビーディスクブロテクト活用ハンドプック
509:)()
59)1()
59) 20
59)3(:)
5040
5050
5()も)
59:)79:)
5089)
5()'う(:)
50A9)
5OB9)
501こ9)
50D9:I
5(9ECI
59)F9)
5100
5110
5120
5130
5140
5150
5169)
5170
5180
51ウ9)
51AO
51BCI
511::9)
00 21 21 21 21 21 21 21 21 21 21 2 I 21 21 21 21
21 21 ・21 ・21 21 21 21 21 21 21 21 ・21 21 21 21 21
21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
噂1 21 21 21 21 21 ・21 21 21 21 21 21 21 21 21 21
21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
21 FF FF FF FF FF FF FF FF FF FF FF FE 14 1こ21:: ・2
FC 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
;塁醤:(;笞塁腐腐塁腐腐認腐は
65 20 E,F 66 ・20 70 72 6F 74 65 63 74 ・21:) E,2 7’ ぅ・ュ:)
4 D 4 2 3 8 3 8 3 7 3 6 2 0 7 3 E, 5 7 2 E, ・;:1 6 5 7 3 2 0 2 <) ・ュ: )
2<) 54 E,8 6':i 73 ⑳蒻73 20 73 6 1 E,D 70 E,1:: 65 2()
!E.F 66 20 70 72 6F 74 E,5 63 74 ・2() 62 7 •ぅ・三'() 4D 4こ・
38 38 37 36 20 73 E,5 72 6"3 65 73 2,) ・29) 2•(:) •20 54
E, 8 6"3 73 20 6'3 73 20 73 61 6D 70 E,C 65 20 E,F E,E,
20 70 72 E,F 74 65 63 74 20 62 7"3 20 4D 42 38 38
37 36 20 73 65 72 E, ・3 E,5 73 20 20 20 20 54 68 69
73 20 6"3 73 20 73 61 E,D 70 年: E,5 20 E,F 66 ⑳ 7()
72 6F 74 E,5 63 74 ⑳ 62 79 20 4D 42 38 38 37 36
⑳ 73 65 72 69 65 73 20 20 2,) ・20 54 E,8 6':i 73 20
硲73 20 73 61 6D 70 年65 20 6F E,6 20 70 72 6F
74 65 E,3 74 ・20 62 7"3 20 4D 42 38 38 37 36 ⑳ 73
E,5 72 6':i E,5 73 20 20 20 20 54 68 69 73 20 6'3 73
⑳ 73 61 E, D 7<) 年: 65 20 E,F 66 20 70 72 6F 74 E,5
63 74 20 62 7・:1 20 4D 42 38 38 37 36 ⑳ 73 E,5 72
63 65 73 ::::() ⑳ : 0 20 54 E,8 E, •3 73 ⑳ 6'3 73 20 73
61 E,D 70 E, 1:: 65 印) E,~- E,E, ⑳ 70 72 E,F 74 65 63 74
亡はSYNC及びDAM 部を示す
〔図3- 22 〕②の例
1111111111 1 1111 .. ..... .... ... .
II II II 11 11 11 11 11 ... ....... .. .
1111 11 1 111111111 ...... .. ... .....
II II II II II II II II
" " " " " " " " 丁ププリアンプル部
'itNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNN 三i叫9::: 心?
NNN
: Thi s i s sarnp 1.,
データの内容
,,:,f pyc,t,,,:t by MB
8876 S,? Y i,? S T
hi s l s sampl と,こ9f|
prnt,,,:t by MB88I (ASCII ダンプ)
76 S,?Y l,?S Thi
s 1 s samp l,;. Q f p
rotect by MB8876
series Thi s
is sample,:,f pr,コ
te,:t by MB8876 s
,;.r i,;.s This i s
sao-,ple of pr,c,te
,: t by MB8876 s,;. r
i,;. s Thi s is s
ar,1 p l e,:, f pr ot,;. ,: t
・データ部
第3章より高度なプロテクト85





No.  C  H  R  N 
1 0 0 1 1
2 0 0 2 1
3 0 0 3 1
4 0 0 4 1
5 0 0 5 1
6 0 0 6 1
7 0 0 7 1
8 0 0 8 1
9 0 0 9 1
10 0 0 A 1
11 0 0 B 1
12 0 0 C 1
13 0 0 D 1
14 0 0 E 1
15 0 0 F 1
16 0 0 10 1

その1 正常 な ID
〔図 2 - 1〕
  
 

No.  C  H  R  N 
1 23 12 64 1
2 84 62 12 1
3 F6 20 6E 1
4 06 8E 44 1
5 46 84 26 1
6 65 48 95 1
7 11 FE 65 1
8 E9 FS 06 1
9 49 ES F4 1
10 6E 20 FA 1
11 60 2C 6E 1
12 08 E3 2C 1
13 E8 06 FD 1
14 F6 ES 06 1
15 C9 EF OF 1
16 56 E8 F4 1

その2
プロテクト
をかけたID(例)
〔図 2 - 1 〕
  

3 - 13 GAPにテータを入れるプロテクト


■8876
通常, GAP はスプライシングギャップを避けるなどに使用されるエリアで,このエリアに
データを書き込むことはない。
このプロテクトは,逆に通常データ領域として使用されていないこのエリアにデータを書
き込むことによって作成するプロテクトである。
GAP に関しては,任意のデータを書き込んでもリード, ライト動作には問題がないが,
SYNCには本米の値(8876 では0伽またはFFl-1 , 765 では00 卜I のみ)以外が書き込まれる
と,アドレスマークをサーチすることが不可能となるので, SYNCにはデータを書き込むこ
とは出来ない。
注意点としては, GAP に任意のデータが書き込めるのは,フォーマットを行なう場合のみ
である。
また,このプロテクトをかけたトラックのセクターにはライト動作を行なってはならない。
これは, ライト動作によりGAP3 のデータが破壊される(スプライシング・ギャップが発
生する)ためである。
リード動作, 及ぴリードアドレスなどは,行なって良い。
チェックの方法は, リード・トラックにより, 1 トラック分のデータを読み出し, GAPの
データをチェックすれば良い。
図3-23 に例を示す。
なお,このプロテクトは, 765 でも読み出すことが可能( リード・ダイアグノスティックを
使用する)なので, 8876 でこのフォーマットを行ない, 765 用のプロテクトとして使用するこ
とも可能である。
また,このプロテクトは765 では外すことは出来ない。
86 フロッピーディスクプロテクト活用ハンドブック
5O(:)(:) F8 らll::ウl:: •:)1 こ: ' 31:: 豆I こ:.:)Iご: .:)I ご.' :)Iこ: うI: ,31こ: ' :)Iご: ' :)t こ:':, ,こ' :iiこ: ' :iiこ・:マr,9 -・9 ●.9 .9 .. 9 .. 9 .,9 ..9 .9 .9 ..9 9 .. 9 .. 1. ., .
5C)1(:) ,31:: ' 31:: '3 1 :: '31こ: 'jlこ: '31:: '3 1こ' ’:iiこ: '31 :, ' 31こ: '31:. ,31こ: '31こ: '•31 :. ,31こ.'jl こ: '•'... '. ・..'. ... ・'.・'.・' ..... '.... ..' .'. .. ..
5I:l21:) '31こ:.うl::らIC'jlこ:. jl こ:ざ11: : .31 こ..:/1 こ:. :/1 こ:.:IIこ: •:) I:· •31:: .3 1こ: .::/1こ: ':/1こ:.31: '. ・... .. .'. ・'. .'. .... .•' ... ... '.. .•' ... '..... . .
503(:) 931: :' 31 こ:':JI こ:' 31: :' 31 こ:' 31: : ,31:: ' 31: :'うIこ'うl: : '31 ご'31 こ: '31 こ:' 31こ: 'うlご:'うlこ: '. ...... '.. .•'....,• '•' '•' ... ... .. ・'.. .. • ' .• '
504() 93 l::' :IC':/Iこ:' :JI こ':/I こ:,31: :' 31 こ:' :JI こ:うlこ: ' :/1 こ:' 31: :' 31 こ:' :J Iこ:' :/1 こ:' :JI こ:' :JI こ: ●',--・ ,-・・,.'.-. -.-. -.- ・.- .-,.・- ,.・- ,. ・.--・ ,--・ .--· .-.• . .-
51:も(:) '31 こ:(:)(:) (:)(:) (: )(: ) (:)( 3 (:)(:) (:)(:) (:)(:) C)(:) (:)(:) (:)(:) (:)(:) (:1 1 l:2 l:..2 1ご.2 ,.')'.リ’.'I
5(:)G() ユ1 7 3 6 1 E, D 7 0 E, t: 6 5 2 () 6 F 6 6 2 1:) 7 3 6 1 6 D 7 1ーー) ら1こ: 廿sarnp 1 E-,:, f sari-,p 1
5070 65 20 E,F E,E, 20 73 E, 1 6D 70 E,1 ご:65 2C) er 66 之(:) 73 1, e,:, i san・,p 1,:-,:, f s
5(:)B(:) 61 6D 70 6C 65 20 6fi" 66 20 73 61 6D 70 6C 65 20 amp 1 "' ,:, f sarnp 1 "'
5() 'う(:) 6F 66 2() |O(: ) (:)(:) (:)() C)(:) (:)(:) (:)(:) C) (:) (:)(:) (:)(:) (:)(:) (:)( :) (:)(:) 14 o f
50AO Al Al