#!/usr/bin/perl # 単一パターンになる組み合わせを出力する. # # EFM フレーム (588 シンボルで、 24 バイトと SubChannel を運ぶ) # SYNC SUBCHANNEL DATA-CONTENT C2訂正情報 DATA-CONTENT C1訂正情報 # 24 3 (14+3) (14+3)*12 (14+3)*4 (14+3)*12 (14+3)*4 # # 3 は、マージビット。選択は現場監督が行う。 # # 2352 バイトのオーディオ・フレーム(あるいは生セクタ)を、EFMフ #レームにマッピングする方法は、理解できなかった。 # 最初に、24バイトに分割する時にインターリーブが入る。法則は理解 #できなかった。 # その24バイトに「C2訂正コードを加えた28バイト」を、更にイン #ター・リーブする。・・・この法則も理解できなかった。 # そうやって出来上がった、28バイトに対して、C1エラー訂正コード #を追加する。これで、32バイト。 # 後は、サブチャネルを加えて33バイト。 # この33バイトを、EFM変調すると561シンボルになる。これに、 #同期パターン(24シンボル+3マージビット)を加えた、588シンボ #ルが1EFMフレーム。 # # 1オーディオ・フレームは2352バイトなので、98EFMフレーム #で1オーディオ・フレームを構成。 # サブチャネルのバイト数があわないような気がするが、オーディオ・フ #レームの先頭をマークするのに、特別な組み合わせのサブチャネルが使わ #れていたような気がしなくもない。これも、理解出来なかった部分。 # 馬鹿ですな>俺 # とりあえず、2EFMフレーム分が、『特別な印』として使われるとす #ると、サブチャネルが96バイトで、世間の値と一致。 # # どのみち、今回はサブチャネル関係なしなので忘れる。 # # while() { next if substr($_,0,1) ne ':'; $n = substr($_,4,3); $P[$n] = substr($_,23,2)+0; $S[$n] = substr($_,26,2)+0; } # 全ての組み合わせを調べるテスト. # 0123456789ABCDEF $SP = '37FFFFFFEC8'; $PP = '9DFFFFFFE62'; # 0 1 2 3 4 5 6 7 8 9 A B C D E F @SF = (0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4); @MSG = ('0','1','1','2A', '1','2A','2B','3A', '1','2A','2B','3A', '2B','3A','3B','4'); $a = 0; while($a<256) { $b = 0; while($b<256) { # Min is 1001. # w1 is a->b / w2 is b->a. $p1 = hex(substr($SP,$S[$a],1)) & hex(substr($PP,$P[$b],1)); $p2 = hex(substr($SP,$S[$b],1)) & hex(substr($PP,$P[$a],1)); $w1 = $SF[$p1]; $w2 = $SF[$p2]; if($w1 < 2 && $w2 < 2) { # SINGLE PTN !!. # printf('%02x%02x SINGLE%c',$a,$b,10); printf('%02x%02x %s-%s%c',$a,$b,$MSG[$p1],$MSG[$p2],10); } else { printf('%02x%02x %s-%s%c',$a,$b,$MSG[$p1],$MSG[$p2],10); } ++$b; } ++$a; } __END__ #0 1 2 3 #123456789012345678901234567890123 :89 137 10000001000001 0 0 3 :90 144 10000000100001 0 0 3 81 :91 145 10000010000001 0 0 3 :9A 154 10010000000001 0 0 3 :9B 155 10001000000001 0 0 3 :B9 185 10000000001001 0 0 3 :C9 201 10000100000001 0 0 3 :D9 217 10000000010001 0 0 3 :81 129 10000100100001 0 0 4 :82 130 10010000100001 0 0 4 :83 131 10001000100001 0 0 4 :8A 138 10010001000001 0 0 4 :8B 139 10001001000001 0 0 4 :92 146 10010010000001 0 0 4 0x90 :A1 161 10000100001001 0 0 4 :A9 169 10000001001001 0 0 4 :B1 177 10000010001001 0 0 4 :BA 186 10010000001001 0 0 4 :BB 187 10001000001001 0 0 4 90 :C1 193 10000100010001 0 0 4 :D1 209 10000010010001 0 0 4 :DA 218 10010000010001 0 0 4 :DB 219 10001000010001 0 0 4 :AA 170 10010001001001 0 0 5 :AB 171 10001001001001 0 0 5 :B2 178 10010010001001 0 0 5 :D2 210 10010010010001 0 0 5 :69 105 10000001000010 0 1 3 :70 112 10000000100010 0 1 3 :71 113 10000010000010 0 1 3 :7A 122 10010000000010 0 1 3 :7B 123 10001000000010 0 1 3 :E8 232 10000100000010 0 1 3 :F9 249 10000000010010 0 1 3 :61 97 10000100100010 0 1 4 :62 98 10010000100010 0 1 4 :63 99 10001000100010 0 1 4 :6A 106 10010001000010 0 1 4 :6B 107 10001001000010 0 1 4 :72 114 10010010000010 0 1 4 :E2 226 10000100010010 0 1 4 :F1 241 10000010010010 0 1 4 F9 :FA 250 10010000010010 0 1 4 :FB 251 10001000010010 0 1 4 :F2 242 10010010010010 0 1 5 :59 89 10000000000100 0 2 2 :49 73 10000001000100 0 2 3 :50 80 10000000100100 0 2 3 :51 81 10000010000100 0 2 3 :5A 90 10010000000100 0 2 3 :5B 91 10001000000100 0 2 3 :E9 233 10000100000100 0 2 3 :41 65 10000100100100 0 2 4 :42 66 10010000100100 0 2 4 :43 67 10001000100100 0 2 4 :4A 74 10010001000100 0 2 4 :4B 75 10001001000100 0 2 4 :52 82 10010010000100 0 2 4 :39 57 10000000001000 0 3 2 :21 33 10000100001000 0 3 3 :29 41 10000001001000 0 3 3 :31 49 10000010001000 0 3 3 :3A 58 10010000001000 0 3 3 :3B 59 10001000001000 0 3 3 :2A 42 10010001001000 0 3 4 :2B 43 10001001001000 0 3 4 :32 50 10010010001000 0 3 4 :19 25 10000000010000 0 4 2 :1A 26 10010000010000 0 4 3 :1B 27 10001000010000 0 4 3 :33 51 10000100010000 0 4 3 :99 153 10000010010000 0 4 3 :C2 194 10010010010000 0 4 4 :10 16 10000000100000 0 5 2 :02 2 10010000100000 0 5 3 :03 3 10001000100000 0 5 3 :D3 211 10000100100000 0 5 3 :09 9 10000001000000 0 6 2 :0A 10 10010001000000 0 6 3 :0B 11 10001001000000 0 6 3 :11 17 10000010000000 0 7 2 :12 18 10010010000000 0 7 3 :01 1 10000100000000 0 8 2 :8C 140 01000001000001 1 0 3 80 :94 148 01000010000001 1 0 3 :98 152 01001000000001 1 0 3 :A6 166 01000000100001 1 0 3 :BC 188 01000000001001 1 0 3 :CC 204 01000100000001 1 0 3 :DC 220 01000000010001 1 0 3 :80 128 01001000100001 1 0 4 :84 132 01000100100001 1 0 4 :88 136 01001001000001 1 0 4 :A4 164 01000100001001 1 0 4 DC :AC 172 01000001001001 1 0 4 :B4 180 01000010001001 1 0 4 :B8 184 01001000001001 1 0 4 :C4 196 01000100010001 1 0 4 :D4 212 01000010010001 1 0 4 :D8 216 01001000010001 1 0 4 :A8 168 01001001001001 1 0 5 :7C 124 01000000000010 1 1 2 :6C 108 01000001000010 1 1 3 :74 116 01000010000010 1 1 3 :78 120 01001000000010 1 1 3 :E0 224 01000100000010 1 1 3 7C :E6 230 01000000100010 1 1 3 :FC 252 01000000010010 1 1 3 :60 96 01001000100010 1 1 4 :64 100 01000100100010 1 1 4 :68 104 01001001000010 1 1 4 :E4 228 01000100010010 1 1 4 :F4 244 01000010010010 1 1 4 :F8 248 01001000010010 1 1 4 :5C 92 01000000000100 1 2 2 :4C 76 01000001000100 1 2 3 :54 84 01000010000100 1 2 3 :58 88 01001000000100 1 2 3 :66 102 01000000100100 1 2 3 :EC 236 01000100000100 1 2 3 :40 64 01001000100100 1 2 4 :44 68 01000100100100 1 2 4 :48 72 01001001000100 1 2 4 :3C 60 01000000001000 1 3 2 :24 36 01000100001000 1 3 3 :2C 44 01000001001000 1 3 3 :34 52 01000010001000 1 3 3 :38 56 01001000001000 1 3 3 :28 40 01001001001000 1 3 4 :1C 28 01000000010000 1 4 2 :18 24 01001000010000 1 4 3 :9C 156 01000010010000 1 4 3 :A2 162 01000100010000 1 4 3 :26 38 01000000100000 1 5 2 :00 0 01001000100000 1 5 3 :C0 192 01000100100000 1 5 3 :0C 12 01000001000000 1 6 2 :08 8 01001001000000 1 6 3 :14 20 01000010000000 1 7 2 :04 4 01000100000000 1 8 2 :8F 143 00100001000001 2 0 3 87 :93 147 00100000100001 2 0 3 :97 151 00100010000001 2 0 3 :BF 191 00100000001001 2 0 3 :CF 207 00100100000001 2 0 3 :DF 223 00100000010001 2 0 3 :87 135 00100100100001 2 0 4 :A7 167 00100100001001 2 0 4 :AF 175 00100001001001 2 0 4 :B7 183 00100010001001 2 0 4 :C7 199 00100100010001 2 0 4 DF :D7 215 00100010010001 2 0 4 :7F 127 00100000000010 2 1 2 :6F 111 00100001000010 2 1 3 :73 115 00100000100010 2 1 3 :77 119 00100010000010 2 1 3 :E3 227 00100100000010 2 1 3 :FF 255 00100000010010 2 1 3 :67 103 00100100100010 2 1 4 :E7 231 00100100010010 2 1 4 :F7 247 00100010010010 2 1 4 :5F 95 00100000000100 2 2 2 :4F 79 00100001000100 2 2 3 :53 83 00100000100100 2 2 3 :57 87 00100010000100 2 2 3 :EF 239 00100100000100 2 2 3 :47 71 00100100100100 2 2 4 :3F 63 00100000001000 2 3 2 :27 39 00100100001000 2 3 3 :2F 47 00100001001000 2 3 3 :37 55 00100010001000 2 3 3 :1F 31 00100000010000 2 4 2 :9F 159 00100010010000 2 4 3 :B3 179 00100100010000 2 4 3 :13 19 00100000100000 2 5 2 :23 35 00100100100000 2 5 3 :0F 15 00100001000000 2 6 2 :17 23 00100010000000 2 7 2 :07 7 00100100000000 2 8 2 :9E 158 00010000000001 3 0 2 :86 134 00010000100001 3 0 3 :8E 142 00010001000001 3 0 3 :96 150 00010010000001 3 0 3 9E :BE 190 00010000001001 3 0 3 :DE 222 00010000010001 3 0 3 :AE 174 00010001001001 3 0 4 :B6 182 00010010001001 3 0 4 :D6 214 00010010010001 3 0 4 :7E 126 00010000000010 3 1 2 :6E 110 00010001000010 3 1 3 :76 118 00010010000010 3 1 3 :EE 238 00010000100010 3 1 3 :FE 254 00010000010010 3 1 3 :F6 246 00010010010010 3 1 4 :5E 94 00010000000100 3 2 2 :46 70 00010000100100 3 2 3 :4E 78 00010001000100 3 2 3 :56 86 00010010000100 3 2 3 :3E 62 00010000001000 3 3 2 :2E 46 00010001001000 3 3 3 :36 54 00010010001000 3 3 3 :1E 30 00010000010000 3 4 2 :C6 198 00010010010000 3 4 3 :06 6 00010000100000 3 5 2 :0E 14 00010001000000 3 6 2 :16 22 00010010000000 3 7 2 :9D 157 00001000000001 4 0 2 :A0 160 00001000100001 4 0 3 :BD 189 00001000001001 4 0 3 :C8 200 00001001000001 4 0 3 :DD 221 00001000010001 4 0 3 :EA 234 00001001001001 4 0 4 :7D 125 00001000000010 4 1 2 :EB 235 00001001000010 4 1 3 :F3 243 00001000100010 4 1 3 :FD 253 00001000010010 4 1 3 :5D 93 00001000000100 4 2 2 :C3 195 00001000100100 4 2 3 :CA 202 00001001000100 4 2 3 :3D 61 00001000001000 4 3 2 :79 121 00001001001000 4 3 3 :1D 29 00001000010000 4 4 2 :22 34 00001000100000 4 5 2 :CB 203 00001001000000 4 6 2 :CD 205 00000100000001 5 0 2 :A3 163 00000100100001 5 0 3 :A5 165 00000100001001 5 0 3 :C5 197 00000100010001 5 0 3 :E1 225 00000100000010 5 1 2 :E5 229 00000100010010 5 1 3 :F0 240 00000100100010 5 1 3 :ED 237 00000100000100 5 2 2 :D0 208 00000100100100 5 2 3 :25 37 00000100001000 5 3 2 :05 5 00000100010000 5 4 2 :B0 176 00000100100000 5 5 2 :30 48 00000100000000 5 8 1 :95 149 00000010000001 6 0 2 :B5 181 00000010001001 6 0 3 :D5 213 00000010010001 6 0 3 :75 117 00000010000010 6 1 2 :F5 245 00000010010010 6 1 3 :55 85 00000010000100 6 2 2 :35 53 00000010001000 6 3 2 :CE 206 00000010010000 6 4 2 :15 21 00000010000000 6 7 1 :8D 141 00000001000001 7 0 2 :AD 173 00000001001001 7 0 3 :6D 109 00000001000010 7 1 2 :4D 77 00000001000100 7 2 2 :2D 45 00000001001000 7 3 2 :0D 13 00000001000000 7 6 1 :85 133 00000000100001 8 0 2 :65 101 00000000100010 8 1 2 :45 69 00000000100100 8 2 2 :20 32 00000000100000 8 5 1