1: //======================================================================================== 2: // SPC.java 3: // en:SCSI protocol controller 4: // ja:SCSIプロトコルコントローラ 5: // Copyright (C) 2003-2024 Makoto Kamada 6: // 7: // This file is part of the XEiJ (X68000 Emulator in Java). 8: // You can use, modify and redistribute the XEiJ if the conditions are met. 9: // Read the XEiJ License for more details. 10: // https://stdkmd.net/xeij/ 11: //======================================================================================== 12: 13: //---------------------------------------------------------------------------------------- 14: // 内蔵SCSIと拡張SCSIの兼用 15: // MB89352 16: //---------------------------------------------------------------------------------------- 17: 18: package xeij; 19: 20: import java.awt.event.*; 21: import java.io.*; 22: import java.util.*; 23: import javax.swing.*; 24: import javax.swing.event.*; 25: 26: public class SPC { 27: 28: public static final boolean SPC_DEBUG_ON = false; 29: public static final boolean SPC_DEBUG_COMMAND = SPC_DEBUG_ON && true; 30: public static final boolean SPC_DEBUG_PHASE = SPC_DEBUG_ON && true; 31: public static final boolean SPC_DEBUG_PORT = SPC_DEBUG_ON && false; 32: 33: public static final boolean SPC_REPORT_UNIMPLEMENTED_COMMAND = true; 34: 35: public static final boolean SPC_REMOVABLE_HDD = true; //true=リムーバブル 36: 37: public static final int SPC_MAX_BYTES_PER_BLOCK = 2048; //セクタ長の上限 38: 39: //データインフェーズで残りが8バイトになったらステータスフェーズに切り替えてINTSのSRをセットする 40: //ACKがFalseになるのを待たずにステータスフェーズに移行するハードディスクを接続したときS_DATAINIが最後の数バイトを受け取り損ねるバグを露見させる 41: public static final boolean SPC_EXPOSE_DATAINI_BUG = false; 42: 43: //ベースアドレス 44: public static final int SPC_BASE_EX = 0x00ea0000; //拡張SCSIのSPCのベースアドレス 45: public static final int SPC_BASE_IN = 0x00e96020; //内蔵SCSIのSPCのベースアドレス 46: 47: //ROM起動ハンドル 48: public static final int SPC_HANDLE_EX = 0x00ea0020; //拡張SCSIのROM起動ハンドル 49: public static final int SPC_HANDLE_IN = 0x00fc0000; //内蔵SCSIのROM起動ハンドル 50: 51: //フェーズ 52: public static final int SPC_PHASE_MASK = 0b00000111; 53: public static final int SPC_DATA_OUT_PHASE = 0b00000000; //Data Out Phase。データアウトフェーズ 54: public static final int SPC_DATA_IN_PHASE = 0b00000001; //Data In Phase。データインフェーズ 55: public static final int SPC_COMMAND_PHASE = 0b00000010; //Command Phase。コマンドフェーズ 56: public static final int SPC_STATUS_PHASE = 0b00000011; //Status Phase。ステータスフェーズ 57: public static final int SPC_MESSAGE_OUT_PHASE = 0b00000110; //Message Out Phase。メッセージアウトフェーズ 58: public static final int SPC_MESSAGE_IN_PHASE = 0b00000111; //Message In Phase。メッセージインフェーズ 59: 60: //レジスタ 61: public static final int SPC_BDID = 0x01; //Bus Device ID。自分のID 62: public static final int SPC_BDID_I7 = 0b10000000; //ID 7 63: public static final int SPC_BDID_I6 = 0b01000000; //ID 6 64: public static final int SPC_BDID_I5 = 0b00100000; //ID 5 65: public static final int SPC_BDID_I4 = 0b00010000; //ID 4 66: public static final int SPC_BDID_I3 = 0b00001000; //ID 3 67: public static final int SPC_BDID_I2 = 0b00000100; //ID 2 68: public static final int SPC_BDID_I1 = 0b00000010; //ID 1 69: public static final int SPC_BDID_I0 = 0b00000001; //ID 0 70: public static final int SPC_SCTL = 0x03; //SPC Control 71: public static final int SPC_SCTL_RD = 0b10000000; //Reset & Disable。1=ハードウェアリセット 72: public static final int SPC_SCTL_CR = 0b01000000; //Control Reset。1=転送回路リセット 73: public static final int SPC_SCTL_DM = 0b00100000; //Diag Mode。1=自己診断モード 74: public static final int SPC_SCTL_AE = 0b00010000; //Arbitration Enable。0=アービトレーションフェーズなし(SASI),1=あり(SCSI) 75: public static final int SPC_SCTL_PE = 0b00001000; //Parity Enable。1=入力データのパリティをチェックする。出力データは常にパリティが付く 76: public static final int SPC_SCTL_SE = 0b00000100; //Select Enable。0=常にイニシエータ,1=セレクションフェーズが来たらターゲットになる 77: public static final int SPC_SCTL_RE = 0b00000010; //Reselect Enable。1=リセレクションフェーズに応答する 78: public static final int SPC_SCTL_IE = 0b00000001; //Interrupt Enable。0=割り込み禁止,1=許可。禁止されていてもINTSは変化する 79: public static final int SPC_SCMD = 0x05; //SPC Command 80: public static final int SPC_SCMD_CC = 0b11100000; //Command Code 81: public static final int SPC_SCMD_CC_BR = 0b00000000; //Bus Release。ターゲットのときバスフリーフェーズへ移行 82: public static final int SPC_SCMD_CC_SL = 0b00100000; //Select。セレクション/リセレクションを開始 83: public static final int SPC_SCMD_CC_RA = 0b01000000; //Reset ATN。ATNをクリア 84: public static final int SPC_SCMD_CC_SA = 0b01100000; //Set ATN。ATNをセット 85: public static final int SPC_SCMD_CC_TR = 0b10000000; //Transfer。転送開始 86: public static final int SPC_SCMD_CC_TP = 0b10100000; //Transfer Pause。転送中断 87: public static final int SPC_SCMD_CC_RR = 0b11000000; //Reset ACK/REQ。CPU転送のときACK/REQをクリア 88: public static final int SPC_SCMD_CC_SR = 0b11100000; //Set ACK/REQ。CPU転送のときACK/REQをセット 89: public static final int SPC_SCMD_RO = 0b00010000; //RST Out。1=SCSIバスリセット 90: public static final int SPC_SCMD_IT = 0b00001000; //Intercept Transfer。1=CPU転送時FIFOバッファの内容を保持 91: public static final int SPC_SCMD_PT = 0b00000100; //Program Transfer。0=DMA転送(DREQあり),1=CPU転送(DREQなし) 92: public static final int SPC_SCMD_TM = 0b00000001; //Termination Mode。イニシエータのとき0=カウント0で終了する,1=カウント0で終了しない(Padding)、ターゲットのとき0=パリティエラーがあってもカウント0まで転送する,1=パリティエラーがあると直ちに終了する 93: public static final int SPC_INTS = 0x09; //Interrupt Sense 94: public static final int SPC_INTS_SL = 0b10000000; //Selected。1=他のデバイスのセレクションフェーズで選択されてターゲットになった 95: public static final int SPC_INTS_RS = 0b01000000; //Reselected。1=他のデバイスのリセレクションフェーズで選択されてイニシエータになった 96: public static final int SPC_INTS_DC = 0b00100000; //Disconnected。1=バスフリーフェーズになった。バスを使うとき0に戻すこと 97: public static final int SPC_INTS_CC = 0b00010000; //Command Complete。1=SelectやTransferなどのコマンドが終了した。ターゲットのときパリティエラーで停止した 98: public static final int SPC_INTS_SR = 0b00001000; //Service Required。1=PCTLレジスタとバスのフェーズが一致しないんだけどどうにかして。入力中、送信の終わった相手がフェーズをさっさと切り替えた。受信するデータがまだFIFOに残っているのに 99: public static final int SPC_INTS_TO = 0b00000100; //Time Out。1=セレクション/リセレクションに応答がない。セレクションタイムアウトのときSELが1のままなのでTEMP=$00で復旧させる必要がある 100: public static final int SPC_INTS_HE = 0b00000010; //SPC Hard Error。1=なんかエラーが出た。SERRを見てくれ 101: public static final int SPC_INTS_RC = 0b00000001; //Reset Condition。1=SCSIバスがリセットされた(RST信号が1になった) 102: public static final int SPC_PSNS = 0x0b; //(Read) Phase Sense 103: public static final int SPC_PSNS_REQ = 0b10000000; //REQ 104: public static final int SPC_PSNS_ACK = 0b01000000; //ACK 105: public static final int SPC_PSNS_ATN = 0b00100000; //ATN 106: public static final int SPC_PSNS_SEL = 0b00010000; //SEL。1=セレクションフェーズ 107: public static final int SPC_PSNS_BSY = 0b00001000; //BSY 108: public static final int SPC_PSNS_MSG = 0b00000100; //MSG 109: public static final int SPC_PSNS_CD = 0b00000010; //C/D 110: public static final int SPC_PSNS_IO = 0b00000001; //I/O 111: public static final int SPC_SDGC = 0x0b; //(Write) SPC Diag Control 112: public static final int SPC_SDGC_REQ = 0b10000000; //Diag REQ 113: public static final int SPC_SDGC_ACK = 0b01000000; //Diag ACK 114: public static final int SPC_SDGC_XFER = 0b00100000; //Xfer Enable。CPU転送のとき1=データ転送割り込み許可 115: public static final int SPC_SDGC_BSY = 0b00001000; //Diag BSY 116: public static final int SPC_SDGC_MSG = 0b00000100; //Diag MSG 117: public static final int SPC_SDGC_CD = 0b00000010; //Diag C/D 118: public static final int SPC_SDGC_IO = 0b00000001; //Diag I/O 119: public static final int SPC_SSTS = 0x0d; //SPC Status 120: public static final int SPC_SSTS_INIT = 0b10000000; //Connected INIT。1=イニシエータ 121: public static final int SPC_SSTS_TARG = 0b01000000; //Connected TARG。1=ターゲット 122: public static final int SPC_SSTS_BUSY = 0b00100000; //SPC Busy。1=コマンド実行中 123: public static final int SPC_SSTS_TRIP = 0b00010000; //Transfer in Progress。1=DMA転送中 124: public static final int SPC_SSTS_SRIN = 0b00001000; //SCSI Reset In。RST信号の状態 125: public static final int SPC_SSTS_TC0 = 0b00000100; //TC=0。1=転送カウンタが0 126: public static final int SPC_SSTS_DF = 0b00000010; //DREG status Full。1=8バイトのFIFOが一杯 127: public static final int SPC_SSTS_DE = 0b00000001; //DREG status Empty。1=8バイトのFIFOが空 128: public static final int SPC_SERR = 0x0f; //SPC Error Status 129: public static final int SPC_SERR_DI = 0b10000000; //Data Error SCSI。1=入力データにパリティエラーがある 130: public static final int SPC_SERR_DO = 0b01000000; //Data Error SPC。1=出力データにパリティエラーがある 131: public static final int SPC_SERR_XO = 0b00100000; //Xfer Out。1=Xfer EnableのときData Request中 132: public static final int SPC_SERR_PE = 0b00001000; //TC Parity Error。1=転送カウンタにパリティエラーがある 133: public static final int SPC_SERR_ST = 0b00000010; //Short Transfer Period。1=REQ/ACKが速すぎてSPCが追従できない 134: public static final int SPC_PCTL = 0x11; //Phase Control 135: public static final int SPC_PCTL_IE = 0b10000000; //Busfree INT Enable。1=バスフリーフェーズを検出したらDisconnected割り込みを要求する 136: public static final int SPC_PCTL_TP = 0b00000111; //Transfer Phase。転送フェーズ 137: public static final int SPC_PCTL_MSG = 0b00000100; //MSG 138: public static final int SPC_PCTL_CD = 0b00000010; //C/D 139: public static final int SPC_PCTL_IO = 0b00000001; //I/O。0=Out,1=In 140: public static final int SPC_PCTL_SR = 0b00000001; //Selectコマンドのセレクション/リセレクション選択 141: public static final int SPC_PCTL_SR_R = 0b00000001; //Selectコマンドでリセレクションを開始 142: public static final int SPC_PCTL_SR_S = 0b00000000; //Selectコマンドでセレクションを開始 143: public static final int SPC_MBC = 0x13; //Modified Byte Counter 144: public static final int SPC_DREG = 0x15; //Data Register 145: public static final int SPC_TEMP = 0x17; //Temporary Register 146: public static final int SPC_TCH = 0x19; //Transfer Counter High 147: public static final int SPC_TCM = 0x1b; //Transfer Counter Mid 148: public static final int SPC_TCL = 0x1d; //Transfer Counter Low 149: 150: //ステータスバイト 151: public static final int SPC_GOOD = 0x00; 152: public static final int SPC_CHECK_CONDITION = 0x02; 153: public static final int SPC_CONDITION_MET = 0x04; 154: public static final int SPC_BUSY = 0x08; 155: public static final int SPC_INTERMEDIATE = 0x10; 156: public static final int SPC_INTERMEDIATE_CONDITION_MET = 0x14; 157: public static final int SPC_RESERVATION_CONFLICT = 0x18; 158: public static final int SPC_COMMAND_TERMINATED = 0x22; 159: public static final int SPC_QUEUE_FULL = 0x28; 160: 161: //メッセージコード 162: public static final int SPC_COMMAND_COMPLETE = 0x00; 163: public static final int SPC_EXTENDED_MESSAGE = 0x01; //拡張メッセージ長nとnバイトの拡張メッセージが続く 164: public static final int SPC_SAVE_DATA_POINTER = 0x02; 165: public static final int SPC_RESTORE_POINTERS = 0x03; 166: public static final int SPC_DISCONNECT = 0x04; 167: public static final int SPC_INITIATOR_DETECTED_ERROR = 0x05; 168: public static final int SPC_ABORT = 0x06; 169: public static final int SPC_MESSAGE_REJECT = 0x07; 170: public static final int SPC_NO_OPERATION = 0x08; 171: public static final int SPC_MESSAGE_PARITY_ERROR = 0x09; 172: public static final int SPC_LINKED_COMMAND_COMPLETE = 0x0a; 173: public static final int SPC_LINKED_COMMAND_COMPLETE_WITH_FLAG = 0x0b; 174: public static final int SPC_BUS_DEVICE_RESET = 0x0c; 175: public static final int SPC_ABORT_TAG = 0x0d; 176: public static final int SPC_CLEAR_QUEUE = 0x0e; 177: public static final int SPC_INITIATE_RECOVERY = 0x0f; 178: public static final int SPC_RELEASE_RECOVERY = 0x10; 179: public static final int SPC_TERMINATE_IO_PROCESS = 0x11; 180: public static final int SPC_SIMPLE_QUEUE_TAG = 0x20; //0x20-0x7fは2バイト 181: public static final int SPC_HEAD_OF_QUEUE_TAG = 0x21; 182: public static final int SPC_ORDERED_QUEUE_TAG = 0x22; 183: public static final int SPC_IGNORE_WIDE_RESIDUE = 0x23; 184: public static final int SPC_IDENTIFY = 0x80; 185: 186: //センスエラーコード[0] 187: public static final int SPC_INVALID_COMMAND = 0x20; 188: public static final int SPC_INVALID_SECTOR_ADDRESS = 0x21; 189: public static final int SPC_EXTENDED_SENSE = 0x70; //拡張センスデータ(8バイト以上)。[2]=センスキー,[7]=[8]以降の長さ 190: //センスキー[2] 191: public static final int SPC_NO_SENSE = 0x00; 192: public static final int SPC_RECOVERED_ERROR = 0x01; 193: public static final int SPC_NOT_READY = 0x02; 194: public static final int SPC_MEDIUM_ERROR = 0x03; 195: public static final int SPC_HARDWARE_ERROR = 0x04; 196: public static final int SPC_ILLEGAL_REQUEST = 0x05; 197: public static final int SPC_UNIT_ATTENTION = 0x06; 198: public static final int SPC_DATA_PROTECT = 0x07; 199: public static final int SPC_BLANK_CHECK = 0x08; 200: public static final int SPC_COPY_ABORTED = 0x0a; 201: public static final int SPC_ABORTED_COMMAND = 0x0b; 202: public static final int SPC_EQUAL = 0x0c; 203: public static final int SPC_VOLUME_OVERFLOW = 0x0d; 204: public static final int SPC_MISCOMPARE = 0x0e; 205: 206: //デバイスタイプ 207: // スタンダードInquiryデータの1バイト目の下位5bit 208: public static final int SPC_DIRECT_ACCESS_DEVICE = 0x00; //ダイレクトアクセスデバイス(HDD) 209: public static final int SPC_SEQUENCIAL_ACCESS_DEVICE = 0x01; //シーケンシャルアクセスデバイス(磁気テープ) 210: public static final int SPC_PRINTER_DEVICE = 0x02; //プリンタデバイス 211: public static final int SPC_PROCESSOR_DEVICE = 0x03; //プロセッサデバイス 212: public static final int SPC_WRITE_ONCE_DEVICE = 0x04; //ライトワンスデバイス(追記型光ディスク) 213: public static final int SPC_CDROM_DEVICE = 0x05; //CD-ROMデバイス 214: public static final int SPC_SCANNER_DEVICE = 0x06; //スキャナデバイス 215: public static final int SPC_OPTICAL_MEMORY_DEVICE = 0x07; //光メモリデバイス(消去可能光ディスク) 216: public static final int SPC_MEDIUM_CHANGER_DEVICE = 0x08; //メディアチェンジャデバイス(磁気テープライブラリ) 217: public static final int SPC_COMMUNICATION_DEVICE = 0x09; //コミュニケーションデバイス 218: 219: //コマンド名 220: // デバイスタイプ 221: // A 全デバイス共通 222: // D ダイレクトアクセスデバイス 223: // T シーケンシャルアクセスデバイス 224: // P プリンタデバイス 225: // G プロセッサデバイス 226: // W ライトワンスデバイス 227: // C CD-ROMデバイス 228: // S スキャナデバイス 229: // O 光メモリデバイス 230: // L メディアチェンジャデバイス 231: // N コミュニケーションデバイス 232: // サポート 233: // m 必須 234: // e 拡張仕様 235: // o オプション 236: // z タイプ依存 237: // v ベンダ固有 238: // r 予約 239: // 参考 SCSI-2詳細解説;菅谷誠一著;CQ出版社 240: public static final String[] SPC_COMMAND_NAME = ( 241: //グループ0 コマンド長6バイト | SCSI-1| SCSI-2 | 242: // |ADTPGWC|ADTPGWCSOLN| 243: "Test Unit Ready," + //$00|ooooooo|mmmmmmmmmmm| 244: "Rezero Unit/Rewind," + //$01| omvvoo| omvrooroor|DWCOL:Rezero Unit/T:Rewind 245: "," + //$02| vvvvvv| vvvvvvrrrr| 246: "Request Sense," + //$03|mmmmmmm|mmmmmmmmmmm| 247: "Format Unit," + //$04| mrovrr| mrorrrrorr|DO:Format Unit/P:Format 248: "Read Block Limits," + //$05| vevvvv| vmvvvvrrrr| 249: "Format Block(SASI)," + //$06| vvvvvv| vvvvvvrrrr| 250: "Reassign Blocks/Initialize Element Status," + //$07| ovvvor| ovvrorroor|DWO:Reassign Blocks/L:Initialize Element Status 251: "Read(6)/Receive/Get Message(6)," + //$08| mmvooo| mmvooororo|DWCO:Read(6)/T:Read/G:Receive/N:Get Message(6) 252: "," + //$09| vvvvvv| vvvvvvrrrr| 253: "Write(6)/Print/Send/Send Message(6)," + //$0A| mmmmor| ommmorrorm|DWO:Write(6)/T:Write/P:Print/G:Send/N:Send Message(6) 254: "Seek(6)/Track Select/Slew and Print," + //$0B| ooovoo| ororoororr|DWCO:Seek(6)/T:(Track Select)/P:Slew and Print 255: "," + //$0C| vvvvvv| vvvvvvrrvr| 256: "," + //$0D| vvvvvv| vvvvvvrrrr| 257: "," + //$0E| vvvvvv| vvvvvvrrrr| 258: "Read Reverse," + //$0F| vovvvv| vovvvvrrrr| 259: "Write Filemarks/Synchronize Buffer," + //$10| vmovvv| vmovvvrrrr|T:Write Filemarks/P:Synchronize Buffer 260: "Space," + //$11| vovvvv| vmvvvvrrrr| 261: "Inquiry," + //$12|eeeeeee|mmmmmmmmmmm| 262: "Verify," + //$13| vovvvv| vovvvvrrrr| 263: "Recover Buffered Data," + //$14| voovvv| voovvvrrrr| 264: "Mode Select(6)," + //$15|zooovoo|zomoroooooo| 265: "Reserve Unit," + //$16| ooovoo| mmmrmmmmor|DWCOL:Reserve/TPS:Reserve Unit 266: "Release Unit," + //$17| ooovoo| mmmrmmmmor|DWCOL:Release/TPS:Release Unit 267: "Copy," + //$18|ooooooo|ooooooooorr| 268: "Erase," + //$19| vovrvv| vmvvvvrrrr| 269: "Mode Sense(6)," + //$1A|zoooroo|zomoroooooo| 270: "Start-Stop Unit/Load Unload/Stop Print/Scan," + //$1B| oooroo| oooroooorr|DWCO:Start-Stop Unit/T:Load Unload/T:Stop Print/S:Scan 271: "Receive Diagnostic Results," + //$1C|ooooooo|ooooooooooo| 272: "Send Diagnostic," + //$1D|ooooooo|mmmmmmmmmmm| 273: "Prevent-Allow Medium Removal," + //$1E| oorroo| oorrooroor| 274: "," + //$1F| rrrrrr| rrrrrrrrrr| 275: //グループ1 コマンド長10バイト | SCSI-1| SCSI-2 | 276: // |ADTPGWC|ADTPGWCSOLN| 277: "," + //$20| vrrrvv| vrrrvvrvrr| 278: "," + //$21| vrrrvv| vrrrvvrvrr| 279: "," + //$22| vrrrvv| vrrrvvrvrr| 280: "," + //$23| vrrrvv| vrrrvvrvrr| 281: "Set Window," + //$24| vrrrvv| vrrrvvmrrr| 282: "Read Capacity/Get Window," + //$25| errree| mrrrmmomrr|DWO:Read Capacity/C:Read CD-ROM Capacity/S:Get Window 283: "," + //$26| vrrrvv| vrrrvvrrrr| 284: "," + //$27| vrrrvv| vrrrvvrrrr| 285: "Read(10)/Get Message(10)," + //$28| errrmm| mrrrmmmmro|DWCO:Read(10)/S:Read/N:Get Message(10) 286: "Read Generation," + //$29| vrrrvv| vrrrvvrorr| 287: "Write(10)/Send/Send Message(10)," + //$2A| errrmr| orrrmromro|DWO:Write(10)/S:Send/N:Send Message(10) 288: "Seek(10)/Locate/Position to Element," + //$2B| oorroo| oorrooroor|DWCO:Seek(10)/T:Locate/L:Position to Element 289: "Erase(10)," + //$2C| vrrrrv| vrrrvrrorr| 290: "Read Updated Block," + //$2D| vrrrrv| vrrrvrrorr| 291: "Write and Verify(10)," + //$2E| orrror| orrrorrorr| 292: "Verify(10)," + //$2F| orrroo| orrroororr| 293: "Search Data High(10)," + //$30| orrroo| orrroororr| 294: "Search Data Equal(10)/Object Position," + //$31| orrroo| orrroooorr|DWCO:Search Data Equal(10)/S:Object Position 295: "Search Data Low(10)," + //$32| orrroo| orrroororr| 296: "Set Limits(10)," + //$33| orrroo| orrroororr| 297: "Pre-Fetch/Read Position/Get Data Buffer Status," + //$34| rrrrrr| oorroooorr|DWCO:Pre-Fetch/T:Read Position/S:Get Data Buffer Status 298: "Synchronize Cache," + //$35| rrrrrr| orrroororr| 299: "Lock-Unlock Cache," + //$36| rrrrrr| orrroororr| 300: "Read Defect Data(10)," + //$37| rrrrrr| orrrrrrorr| 301: "Medium Scan," + //$38| rrrrrr| rrrrorrorr| 302: "Compare," + //$39|oooo-oo|ooooooooorr| 303: "Copy and Verify," + //$3A|oooo-oo|ooooooooorr| 304: "Write Buffer," + //$3B|rrrrrrr|ooooooooooo| 305: "Read Buffer," + //$3C|rrrrrrr|ooooooooooo| 306: "Update Block," + //$3D| rrrrrr| rrrrrrrorr| 307: "Read Long," + //$3E| rrrrrr| orrroororr| 308: "Write Long," + //$3F| rrrrrr| orrrorrorr| 309: //グループ2 コマンド長10バイト | SCSI-1| SCSI-2 | 310: // |ADTPGWC|ADTPGWCSOLN| 311: "Change Definition," + //$40|rrrrrrr|ooooooooooo| 312: "Write Same," + //$41| rrrrrr| orrrrrrrrr| 313: "Read Sub-Channel," + //$42| rrrrrr| rrrrrorrrr| 314: "Read TOC," + //$43| rrrrrr| rrrrrorrrr| 315: "Read Header," + //$44| rrrrrr| rrrrrorrrr| 316: "Play Audio(10)," + //$45| rrrrrr| rrrrrorrrr| 317: "," + //$46| rrrrrr| rrrrrrrrrr| 318: "Play Audio MSF," + //$47| rrrrrr| rrrrrorrrr| 319: "Play Audio Track Index," + //$48| rrrrrr| rrrrrorrrr| 320: "Play Audio Track Relative(10)," + //$49| rrrrrr| rrrrrorrrr| 321: "," + //$4A| rrrrrr| rrrrrrrrrr| 322: "Pause Resume," + //$4B| rrrrrr| rrrrrorrrr| 323: "Log Select," + //$4C|rrrrrrr|ooooooooooo| 324: "Log Sense," + //$4D|rrrrrrr|ooooooooooo| 325: "," + //$4E| rrrrrr| rrrrrrrrrr| 326: "," + //$4F| rrrrrr| rrrrrrrrrr| 327: "XDWRITE," + //$50 XOR 10byte 328: "XPWRITE," + //$51 XOR 10byte 329: "XDREAD," + //$52 XOR 10byte 330: "," + //$53| rrrrrr| rrrrrrrrrr| 331: "," + //$54| rrrrrr| rrrrrrrrrr| 332: "Mode Select(10)," + //$55|rrrrrrr|zoooroooooo| 333: "," + //$56| rrrrrr| rrrrrrrrrr| 334: "," + //$57| rrrrrr| rrrrrrrrrr| 335: "," + //$58| rrrrrr| rrrrrrrrrr| 336: "," + //$59| rrrrrr| rrrrrrrrrr| 337: "Mode Sense(10)," + //$5A|rrrrrrr|zoooroooooo| 338: "," + //$5B| rrrrrr| rrrrrrrrrr| 339: "," + //$5C| rrrrrr| rrrrrrrrrr| 340: "," + //$5D| rrrrrr| rrrrrrrrrr| 341: "," + //$5E| rrrrrr| rrrrrrrrrr| 342: "," + //$5F| rrrrrr| rrrrrrrrrr| 343: //グループ3 予約 344: "," + //$60 345: "," + //$61 346: "," + //$62 347: "," + //$63 348: "," + //$64 349: "," + //$65 350: "," + //$66 351: "," + //$67 352: "," + //$68 353: "," + //$69 354: "," + //$6A 355: "," + //$6B 356: "," + //$6C 357: "," + //$6D 358: "," + //$6E 359: "," + //$6F 360: "," + //$70 361: "," + //$71 362: "," + //$72 363: "," + //$73 364: "," + //$74 365: "," + //$75 366: "," + //$76 367: "," + //$77 368: "," + //$78 369: "," + //$79 370: "," + //$7A 371: "," + //$7B 372: "," + //$7C 373: "," + //$7D 374: "," + //$7E 375: "," + //$7F 376: //グループ4 コマンド長16バイト 377: "XDWRITE EXTENDED," + //$80 XOR 16byte 378: "REBUILD," + //$81 XOR 16byte 379: "REGENERATE," + //$82 XOR 16byte 380: "," + //$83 381: "," + //$84 382: "," + //$85 383: "," + //$86 384: "," + //$87 385: "," + //$88 386: "," + //$89 387: "," + //$8A 388: "," + //$8B 389: "," + //$8C 390: "," + //$8D 391: "," + //$8E 392: "," + //$8F 393: "," + //$90 394: "," + //$91 395: "," + //$92 396: "," + //$93 397: "," + //$94 398: "," + //$95 399: "," + //$96 400: "," + //$97 401: "," + //$98 402: "," + //$99 403: "," + //$9A 404: "," + //$9B 405: "," + //$9C 406: "," + //$9D 407: "," + //$9E 408: "," + //$9F 409: //グループ5 コマンド長12バイト | SCSI-1| SCSI-2 | 410: // |ADTPGWC|ADTPGWCSOLN| 411: "," + //$A0| rrrrrr| rrrrrrrrrr| 412: "," + //$A1| rrrrrr| rrrrrrrrrr| 413: "," + //$A2| rrrrrr| rrrrrrrrrr| 414: "," + //$A3| rrrrrr| rrrrrrrrrr| 415: "," + //$A4| rrrrrr| rrrrrrrrrr| 416: "Play Audio(12)/Move Medium," + //$A5| rrrrrr| rrrrrorrmr|C:Play Audio(12)/L:Move Medium 417: "Exchange Medium," + //$A6| rrrrrr| rrrrrrrror| 418: "," + //$A7| rrrrrr| rrrrrrrrrr| 419: "Read(12)/Get Message(12)," + //$A8| rrrrrr| rrrroororo|WCO:Read(12)/N:Get Message(12) 420: "Play Audio Track Relative(12)," + //$A9| rrrrrr| rrrrrorrrr| 421: "Write(12)/Send Message(12)," + //$AA| rrrrrr| rrrrorroro|WO:Write(12)/N:Send Message(12) 422: "," + //$AB| rrrrrr| rrrrrrrrrr| 423: "Erase(12)," + //$AC| rrrrrr| rrrrrrrorr| 424: "," + //$AD| rrrrrr| rrrrrrrrrr| 425: "Write and Verify(12)," + //$AE| rrrrrr| rrrrorrorr| 426: "Verify(12)," + //$AF| rrrrrr| rrrroororr| 427: "Search Data High(12)," + //$B0| rrrrrr| rrrroororr| 428: "Search Data Equal(12)," + //$B1| rrrrrr| rrrroororr| 429: "Search Data Low(12)," + //$B2| rrrrrr| rrrroororr| 430: "Set Limits(12)," + //$B3| rrrrrr| rrrroororr| 431: "," + //$B4| rrrrrr| rrrrrrrrrr| 432: "Request Volume Element Address," + //$B5| rrrrrr| rrrrrrrror| 433: "Send Volume Tag," + //$B6| rrrrrr| rrrrrrrror| 434: "Read Defect Data(12)," + //$B7| rrrrrr| rrrrrrrorr| 435: "Read Element Status," + //$B8| rrrrrr| rrrrrrrror| 436: "," + //$B9| rrrrrr| rrrrrrrrrr| 437: "," + //$BA| rrrrrr| rrrrrrrrrr| 438: "," + //$BB| rrrrrr| rrrrrrrrrr| 439: "," + //$BC| rrrrrr| rrrrrrrrrr| 440: "," + //$BD| rrrrrr| rrrrrrrrrr| 441: "," + //$BE| rrrrrr| rrrrrrrrrr| 442: "," + //$BF| rrrrrr| rrrrrrrrrr| 443: //グループ6 ベンダ固有 444: "," + //$C0 445: "," + //$C1 446: "Assign Drive(SASI)," + //$C2 コマンド長6バイト 447: "," + //$C3 448: "," + //$C4 449: "," + //$C5 450: "," + //$C6 451: "," + //$C7 452: "," + //$C8 453: "," + //$C9 454: "," + //$CA 455: "," + //$CB 456: "," + //$CC 457: "," + //$CD 458: "," + //$CE 459: "," + //$CF 460: "," + 461: "," + 462: "," + 463: "," + 464: "," + 465: "," + 466: "," + 467: "," + 468: "," + 469: "," + 470: "," + 471: "," + 472: "," + 473: "," + 474: "," + 475: "," + 476: //グループ7 ベンダ固有 477: "," + 478: "," + 479: "," + 480: "," + 481: "," + 482: "," + 483: "," + 484: "," + 485: "," + 486: "," + 487: "," + 488: "," + 489: "," + 490: "," + 491: "," + 492: "," + 493: "," + 494: "," + 495: "," + 496: "," + 497: "," + 498: "," + 499: "," + 500: "," + 501: "," + 502: "," + 503: "," + 504: "," + 505: "," + 506: "," + 507: "," + 508: ",").split (",", 256); 509: 510: //レジスタ名 511: public static final String[] SPC_REGISTER_NAME = ( 512: //0 00 00 0000 00 00 00 11 11 11 11 11 11 11 11 513: //1 23 45 6789 ab cd ef 01 23 45 67 89 ab cd ef 514: ",BDID,,SCTL,,SCMD,,,,INTS,,PSNS,,SSTS,,SERR,,PCTL,,MBC,,DREG,,TEMP,,TCH,,TCM,,TCL,,").split (",", 32); 515: 516: //インタフェイスの有無 517: public static boolean spcSCSIEXRequest; //次回のリセットでspcSCSIEXOnに設定される値 518: public static boolean spcSCSIEXOn; //true=拡張SCSIポートあり 519: public static boolean spcSCSIINOn; //true=内蔵SCSIポートあり 520: 521: //インタフェイス 522: public static SPCChip spcSCSIEXChip; //拡張SCSIポート 523: public static SPCChip spcSCSIINChip; //内蔵SCSIポート 524: 525: //ユニット 526: public static SCUnit[] spcUnitArray; //SCSIユニットの配列 527: 528: //メニュー 529: public static JMenu spcMenu; 530: public static JCheckBoxMenuItem spcSCSIINMenuItem; 531: public static JCheckBoxMenuItem spcSCSIEXMenuItem; 532: 533: //ファイルフィルタ 534: public static javax.swing.filechooser.FileFilter spcFileFilter; //java.io.FileFilterと紛らわしい 535: 536: //開くダイアログ 537: public static OpenDialog spcOpenDialog; //開くダイアログ。null=作る前 538: public static int spcOpenUnit; //開くユニットの番号 539: public static ArrayList<File[]> spcOpenHistory; //作る前に追加されたヒストリ 540: 541: //フォーマットダイアログ 542: public static JDialog spcFormatDialog; //ダイアログ 543: public static JFileChooser2 spcFormatFileChooser; //ファイルチューザー 544: public static SpinnerNumberModel spcFormatModel; //容量のスピナーモデル 545: public static int spcFormatPartitionMegaBytes; //容量(MB)。1MB倍して32KB加えたサイズで作成する 546: public static int spcFormatBytesPerRecord; //1レコードあたりのバイト数(2の累乗) 547: public static JCheckBox spcFormatPartitioningCheckBox; //領域確保チェックボックス 548: public static boolean spcFormatPartitioningOn; //true=領域確保する 549: //protected static boolean spcFormatCopySystemFiles; //true=システム転送 550: public static JCheckBox spcFormatCopyHumanSysCheckBox; //HUMAN.SYSチェックボックス 551: public static JCheckBox spcFormatCopyCommandXCheckBox; //COMMAND.Xチェックボックス 552: public static boolean spcFormatCopyHumanSysOn; //true=HUMAN.SYSを書き込む 553: public static boolean spcFormatCopyCommandXOn; //true=COMMAND.Xを書き込む 554: public static javax.swing.filechooser.FileFilter spcFormatFilter; //SCSI HDイメージファイルフィルタ 555: 556: //spcInit () 557: // 初期化 558: public static void spcInit () { 559: 560: //インタフェイスの有無 561: spcSCSIEXRequest = Settings.sgsGetOnOff ("scsiex"); 562: spcSCSIEXOn = false; 563: spcSCSIINOn = false; 564: 565: //インタフェイス 566: spcSCSIEXChip = new SPCChip (true); //拡張SCSI 567: spcSCSIINChip = new SPCChip (false); //内蔵SCSI 568: 569: //ファイルフィルタ 570: // SASI/SCSIハードディスクのイメージファイルかどうかを調べる 571: // ファイルチューザーとドロップターゲットで使う 572: spcFileFilter = new javax.swing.filechooser.FileFilter () { //java.io.FileFilterと紛らわしい 573: @Override public boolean accept (File file) { 574: if (file.isDirectory ()) { 575: return true; 576: } 577: String path = file.getPath (); 578: if (spcIsInserted (path)) { //既に挿入されている 579: return false; 580: } 581: long longLength = file.length (); 582: for (HDMedia media : HDMedia.HDM_ARRAY) { 583: if (media.humDiskEndByte == longLength) { //ファイルサイズが一致 584: return true; 585: } 586: } 587: return spcIsHds (file, true) || spcIsIso (file); //拡張子がHDSで装置初期化されているか、拡張子がISO 588: } 589: @Override public String getDescription () { 590: return (Multilingual.mlnJapanese ? 591: "SASI/SCSI ハードディスクまたは CD-ROM のイメージファイル (*.HDF,*.HDS,*.ISO)" : 592: "SASI/SCSI hard disk or CD-ROM image files (*.HDF,*.HDS,*.ISO)"); 593: } 594: }; 595: 596: //開くダイアログ 597: spcOpenDialog = null; 598: spcOpenUnit = 0; 599: spcOpenHistory = new ArrayList<File[]> (); 600: for (int i = JFileChooser2.MAXIMUM_HISTORY_COUNT - 1; 0 <= i; i--) { 601: spcAddHistory (JFileChooser2.pathsToFiles (Settings.sgsGetString ("schistory" + i))); 602: } 603: 604: //ユニット 605: // ダイアログが書き込み禁止でもパラメータは:Rを付けなければ書き込み禁止にしない 606: spcUnitArray = new SCUnit[16]; 607: for (int u = 0; u < 16; u++) { 608: SCUnit unit = spcUnitArray[u] = new SCUnit (u, null); 609: String path = Settings.sgsGetString ("sc" + u); 610: String hdN = Settings.sgsGetString ("hd" + u); //SASIまたはSCSI 611: if (!hdN.equals ("")) { //hdNが指定されている 612: String hdNWithoutR = hdN.endsWith (":R") || hdN.endsWith (":r") ? hdN.substring (0, hdN.length () - 2) : hdN; //":R"を取り除く 613: File file = new File (hdNWithoutR); 614: if (spcIsHds (file, true) || 615: spcIsIso (file)) { //hdNはSCSI HD/CDらしい 616: path = hdN; 617: Settings.sgsPutString ("hd" + u, ""); //消しておく 618: } 619: } 620: boolean userWriteProtect = false; 621: if (path.toUpperCase ().endsWith (":R")) { //書き込み禁止モードで開く 622: path = path.substring (0, path.length () - 2); 623: userWriteProtect = true; 624: } 625: boolean hostWriteProtect = !new File (path).canWrite (); 626: if (path.length () != 0) { 627: unit.connect (true); //接続されていなければ接続する 628: if (unit.insert (path, 629: userWriteProtect || hostWriteProtect)) { //挿入できた 630: spcAddHistory (new File (path).getAbsoluteFile ()); 631: } 632: } 633: } 634: 635: //フォーマットダイアログ 636: spcFormatDialog = null; 637: spcFormatFileChooser = null; 638: spcFormatPartitionMegaBytes = 100; 639: spcFormatBytesPerRecord = 512; 640: spcFormatPartitioningCheckBox = null; 641: spcFormatPartitioningOn = true; 642: //spcFormatCopySystemFiles = true; 643: spcFormatCopyHumanSysCheckBox = null; 644: spcFormatCopyCommandXCheckBox = null; 645: spcFormatCopyHumanSysOn = true; 646: spcFormatCopyCommandXOn = true; 647: spcFormatFilter = new javax.swing.filechooser.FileFilter () { //java.io.FileFilterと紛らわしい 648: @Override public boolean accept (File file) { 649: if (file.isDirectory ()) { 650: return true; 651: } 652: String path = file.getPath (); 653: if (spcIsInserted (path)) { //既に挿入されている 654: return false; 655: } 656: return spcIsHds (file, false); //拡張子がHDSならばファイルが存在しなくてもよい 657: } 658: @Override public String getDescription () { 659: return (Multilingual.mlnJapanese ? 660: "SCSI ハードディスクのイメージファイル (*.HDS)" : 661: "SCSI hard disk image files (*.HDS)"); 662: } 663: }; 664: 665: } //spcInit() 666: 667: //spcReset () 668: public static void spcReset () { 669: //拡張SCSI 670: spcSCSIEXOn = spcSCSIEXRequest; 671: XEiJ.busSuper (spcSCSIEXOn ? MemoryMappedDevice.MMD_EXS : MemoryMappedDevice.MMD_NUL, 0x00ea0000, 0x00ea2000); //必要なときだけ接続する 672: //内蔵SCSI 673: // 内蔵SASIと同じページにあるので内蔵SCSIがなくてもページごと切り離すことはできない 674: spcSCSIINOn = XEiJ.currentModel.isSCSI (); 675: // 拡張 内蔵 unit0-7 unit8-15 676: // ----------------------------- 677: // 有効 有効 拡張 内蔵 678: // 有効 無効 拡張 無効 679: // 無効 有効 内蔵 無効 680: // 無効 無効 無効 無効 681: spcSCSIEXChip.spiReset (spcSCSIEXOn ? 0 : -8); 682: spcSCSIINChip.spiReset (spcSCSIINOn ? spcSCSIEXOn ? 8 : 0 : -8); 683: for (int u = 0; u < 16; u++) { 684: spcUnitArray[u].scuReset (u < 8 ? spcSCSIEXOn ? spcSCSIEXChip : spcSCSIINOn ? spcSCSIINChip : null : 685: spcSCSIEXOn && spcSCSIINOn ? spcSCSIINChip : null); 686: } 687: if (spcSCSIEXOn) { 688: MainMemory.mmrWb (0x00ed0070, MainMemory.mmrRbs (0x00ed0070) | 0x08); //拡張フラグをセットする 689: } else { 690: MainMemory.mmrWb (0x00ed0070, MainMemory.mmrRbs (0x00ed0070) & ~0x08); //拡張フラグをクリアする 691: } 692: } //spcReset() 693: 694: //spcTini () 695: // 後始末 696: public static void spcTini () { 697: spcSCSIEXChip.spiTini (); 698: spcSCSIINChip.spiTini (); 699: 700: //インタフェイスの有無 701: Settings.sgsPutOnOff ("scsiex", spcSCSIEXRequest); 702: 703: //開くダイアログ 704: // 開くダイアログを作らなかったときはパラメータを更新しない 705: if (spcOpenDialog != null) { 706: Settings.sgsPutOnOff ("screadonly", spcOpenDialog.getReadOnly ()); 707: Settings.sgsPutOnOff ("scappreboot", spcOpenDialog.getReboot ()); 708: ArrayList<String> pathsList = spcOpenDialog.getHistory (); 709: int n = pathsList.size (); 710: for (int i = 0; i < n; i++) { 711: Settings.sgsPutString ("schistory" + i, pathsList.get (i)); 712: } 713: for (int i = n; i < 16; i++) { 714: Settings.sgsPutString ("schistory" + i, ""); 715: } 716: } 717: 718: //ユニット 719: for (int u = 0; u < 16; u++) { 720: AbstractUnit unit = spcUnitArray[u]; 721: Settings.sgsPutString ( 722: "sc" + u, 723: unit.abuConnected && unit.abuInserted ? 724: unit.abuWriteProtected ? unit.abuPath + ":R" : unit.abuPath : 725: ""); 726: } 727: 728: } //spcTini() 729: 730: public static void spcMakeMenu () { 731: 732: //アクションリスナー 733: ActionListener listener = new ActionListener () { 734: @Override public void actionPerformed (ActionEvent ae) { 735: Object source = ae.getSource (); 736: String command = ae.getActionCommand (); 737: switch (command) { 738: case "Expansion SCSI port": //拡張 SCSI ポート 739: spcSCSIEXRequest = ((JCheckBoxMenuItem) source).isSelected (); 740: break; 741: case "Create new SCSI hard disk image files": //SCSI ハードディスクのイメージファイルの新規作成 742: spcOpenFormatDialog (); 743: break; 744: } 745: } 746: }; 747: 748: //SCSIメニュー 749: spcMenu = ComponentFactory.createMenu ("SCSI"); //横に長いとサブメニューを開きにくいので短くする 750: ComponentFactory.addComponents ( 751: spcMenu, 752: ComponentFactory.createHorizontalBox ( 753: Multilingual.mlnText ( 754: ComponentFactory.createLabel ("SCSI hard disk and CD-ROM"), 755: "ja", "SCSI ハードディスクと CD-ROM")), 756: ComponentFactory.createHorizontalSeparator () 757: ); 758: for (int u = 0; u < 16; u++) { 759: spcMenu.add (spcUnitArray[u].getMenuBox ()); 760: } 761: ComponentFactory.addComponents ( 762: spcMenu, 763: ComponentFactory.createHorizontalSeparator (), 764: spcSCSIINMenuItem = ComponentFactory.setEnabled ( 765: Multilingual.mlnText ( 766: ComponentFactory.createCheckBoxMenuItem (XEiJ.currentModel.isSCSI (), "Built-in SCSI port", listener), "ja", "内蔵 SCSI ポート"), 767: false), //機種の指定で内蔵SASIと内蔵SCSIを切り替えるので操作できないことにする 768: spcSCSIEXMenuItem = Multilingual.mlnText ( 769: ComponentFactory.createCheckBoxMenuItem (spcSCSIEXRequest, "Expansion SCSI port", listener), 770: "ja", "拡張 SCSI ポート"), 771: ComponentFactory.createHorizontalSeparator (), 772: Multilingual.mlnText (ComponentFactory.createMenuItem ("Create new SCSI hard disk image files", listener), 773: "ja", "SCSI ハードディスクのイメージファイルの新規作成"), 774: !SUK.SUK_ON ? null : ComponentFactory.createHorizontalSeparator (), 775: !SUK.SUK_ON ? null : SUK.sukGetMenu () 776: ); 777: 778: } 779: 780: //inserted = spcIsInserted (path) 781: // パスで指定したファイルが既に挿入されているか調べる 782: public static boolean spcIsInserted (String path) { 783: for (SCUnit unit : spcUnitArray) { 784: if (unit != null && 785: unit.abuConnected && //接続されている 786: unit.abuInserted && //挿入されている 787: unit.abuPath.equals (path)) { //パスが一致している 788: return true; //既に挿入されている 789: } 790: } 791: return false; //まだ挿入されていない 792: } //spcIsInserted(String) 793: 794: static class OpenDialog extends AbstractOpenDialog { 795: public OpenDialog () { 796: super (XEiJ.frmFrame, 797: "Open SCSI hard disk or CD-ROM image files", 798: "SCSI ハードディスクまたは CD-ROM のイメージファイルを開く", 799: false, //ファイル 800: spcFileFilter); 801: } 802: @Override public void openFiles (File[] files, boolean reboot) { 803: spcOpenFiles (files, reboot); 804: } 805: } //class OpenDialog 806: 807: //spcOpenFiles (list, reset) 808: // 開くダイアログで選択されたファイルを開く 809: public static void spcOpenFiles (File[] list, boolean reset) { 810: boolean success = true; 811: for (int u = spcOpenUnit, k = 0; k < list.length; ) { 812: if (16 <= u) { //ユニットが足りない 813: success = false; //失敗 814: break; 815: } 816: SCUnit unit = spcUnitArray[u]; //ユニット 817: if (!unit.abuConnected) { //接続されていない 818: u++; 819: continue; 820: } 821: File file = list[k++]; //イメージファイル 822: if (!file.isFile ()) { //イメージファイルが存在しない 823: success = false; //失敗 824: continue; 825: } 826: if (!unit.insert (file.getPath (), 827: spcOpenDialog.getReadOnly () || !file.canWrite ())) { //挿入できない 828: success = false; //失敗 829: continue; 830: } 831: u++; 832: } 833: if (success) { //すべて挿入できた 834: spcAddHistory (list); //ヒストリに追加する 835: if (reset) { //ここから再起動 836: if (spcOpenUnit < 8) { 837: XEiJ.mpuReset (0xa000, SPC_HANDLE_EX + (spcOpenUnit << 2)); //拡張SCSIがなければ内蔵SCSIに読み替えられる 838: } 839: } 840: } 841: } //spcOpenFiles(File[],boolean) 842: 843: //spcMakeFormatDialog () 844: // フォーマットダイアログを作る 845: // コマンドラインのみ 846: public static void spcMakeFormatDialog () { 847: 848: //アクションリスナー 849: ActionListener listener = new ActionListener () { 850: @Override public void actionPerformed (ActionEvent ae) { 851: switch (ae.getActionCommand ()) { 852: case JFileChooser.APPROVE_SELECTION: 853: case "Start formatting": //フォーマットを開始する 854: { 855: File[] list = spcFormatFileChooser.getSelectedFiles (); 856: if (list.length > 0) { 857: spcFormatDialog.setVisible (false); 858: spcFormatFiles (list); 859: } 860: } 861: break; 862: case JFileChooser.CANCEL_SELECTION: 863: case "Cancel": //キャンセル 864: spcFormatDialog.setVisible (false); 865: break; 866: case "256 bytes": //256 バイト 867: spcFormatBytesPerRecord = 256; 868: break; 869: case "512 bytes": //512 バイト 870: spcFormatBytesPerRecord = 512; 871: break; 872: case "Partitioning": 873: spcFormatPartitioningOn = spcFormatPartitioningCheckBox.isSelected (); //領域確保 874: if (spcFormatPartitioningOn) { //領域確保する 875: spcFormatCopyHumanSysCheckBox.setEnabled (true); //HUMAN.SYSを書き込むかどうか選択できる 876: spcFormatCopyHumanSysCheckBox.setSelected (spcFormatCopyHumanSysOn); //HUMAN.SYSを書き込む/書き込まない 877: } else { //領域確保しない 878: spcFormatCopyHumanSysCheckBox.setEnabled (false); //HUMAN.SYSを書き込むかどうか選択できない 879: spcFormatCopyHumanSysCheckBox.setSelected (false); //HUMAN.SYSを書き込まない 880: } 881: if (spcFormatPartitioningOn && spcFormatCopyHumanSysOn) { //領域確保してHUMAN.SYSを書き込む 882: spcFormatCopyCommandXCheckBox.setEnabled (true); //COMMAND.Xを書き込むかどうか選択できる 883: spcFormatCopyCommandXCheckBox.setSelected (spcFormatCopyCommandXOn); //COMMAND.Xを書き込む/書き込まない 884: } else { //領域確保しないかHUMAN.SYSを書き込まない 885: spcFormatCopyCommandXCheckBox.setEnabled (false); //COMMAND.Xを書き込むかどうか選択できない 886: spcFormatCopyCommandXCheckBox.setSelected (false); //COMMAND.Xを書き込まない 887: } 888: break; 889: //case "Copy System Files": //システムファイルを転送する 890: // spcFormatCopySystemFiles = ((JCheckBox) ae.getSource ()).isSelected (); 891: // break; 892: case "HUMAN.SYS": 893: spcFormatCopyHumanSysOn = spcFormatCopyHumanSysCheckBox.isSelected (); //HUMAN.SYSを書き込む/書き込まない 894: if (spcFormatCopyHumanSysOn) { //HUMAN.SYSを書き込む 895: spcFormatCopyCommandXCheckBox.setEnabled (true); //COMMAND.Xを書き込むかどうか選択できる 896: spcFormatCopyCommandXCheckBox.setSelected (spcFormatCopyCommandXOn); //COMMAND.Xを書き込む/書き込まない 897: } else { //HUMAN.SYSを書き込まない 898: spcFormatCopyCommandXCheckBox.setEnabled (false); //COMMAND.Xを書き込むかどうか選択できない 899: spcFormatCopyCommandXCheckBox.setSelected (false); //COMMAND.Xを書き込まない 900: } 901: break; 902: case "COMMAND.X": 903: spcFormatCopyCommandXOn = spcFormatCopyCommandXCheckBox.isSelected (); //COMMAND.Xを書き込む/書き込まない 904: break; 905: } 906: } 907: }; 908: 909: //ファイルチューザー 910: spcMakeFormatFileChooser (); 911: spcFormatFileChooser.setFileFilter (spcFormatFilter); 912: spcFormatFileChooser.addActionListener (listener); 913: 914: //ダイアログ 915: spcFormatModel = new SpinnerNumberModel (spcFormatPartitionMegaBytes, 1, 2047, 1); 916: ButtonGroup sectorGroup = new ButtonGroup (); 917: spcFormatDialog = Multilingual.mlnTitle ( 918: ComponentFactory.createModalDialog ( 919: XEiJ.frmFrame, 920: "Create new SCSI hard disk image files", 921: ComponentFactory.createBorderPanel ( 922: 0, 0, 923: ComponentFactory.createVerticalBox ( 924: spcFormatFileChooser, 925: ComponentFactory.createHorizontalBox ( 926: Box.createHorizontalStrut (12), 927: Box.createHorizontalGlue (), 928: Multilingual.mlnText (ComponentFactory.createLabel ("Capacity (MB): "), "ja", "容量 (MB): "), 929: ComponentFactory.createNumberSpinner (spcFormatModel, 4, new ChangeListener () { 930: @Override public void stateChanged (ChangeEvent ce) { 931: spcFormatPartitionMegaBytes = spcFormatModel.getNumber ().intValue (); 932: } 933: }), 934: Box.createHorizontalGlue (), 935: Multilingual.mlnText (ComponentFactory.createLabel ("Sector size: "), "ja", "セクタサイズ: "), 936: Multilingual.mlnText (ComponentFactory.createRadioButtonMenuItem (sectorGroup, spcFormatBytesPerRecord == 256, "256 bytes", listener), "ja", "256 バイト"), 937: Multilingual.mlnText (ComponentFactory.createRadioButtonMenuItem (sectorGroup, spcFormatBytesPerRecord == 512, "512 bytes", listener), "ja", "512 バイト"), 938: Box.createHorizontalStrut (12), 939: Multilingual.mlnText (spcFormatPartitioningCheckBox = ComponentFactory.createCheckBox (spcFormatPartitioningOn, "Partitioning", listener), "ja", "領域確保"), 940: Box.createHorizontalGlue (), 941: Box.createHorizontalStrut (12) 942: ), 943: Box.createVerticalStrut (12), 944: ComponentFactory.createHorizontalBox ( 945: Box.createHorizontalStrut (12), 946: Box.createHorizontalGlue (), 947: //Multilingual.mlnText (ComponentFactory.createCheckBox (spcFormatCopySystemFiles, "Copy System Files", listener), "ja", "システムファイルを転送する"), 948: spcFormatCopyHumanSysCheckBox = ComponentFactory.setEnabled ( 949: ComponentFactory.createCheckBox (spcFormatCopyHumanSysOn, "HUMAN.SYS", listener), 950: spcFormatPartitioningOn), 951: Box.createHorizontalStrut (12), 952: spcFormatCopyCommandXCheckBox = ComponentFactory.setEnabled ( 953: ComponentFactory.createCheckBox (spcFormatCopyHumanSysOn && spcFormatCopyCommandXOn, "COMMAND.X", listener), 954: spcFormatPartitioningOn && spcFormatCopyHumanSysOn), 955: Box.createHorizontalGlue (), 956: Box.createHorizontalStrut (12), 957: Multilingual.mlnText (ComponentFactory.createButton ("Start formatting", KeyEvent.VK_F, listener), "ja", "フォーマットを開始する"), 958: Box.createHorizontalStrut (12), 959: Multilingual.mlnText (ComponentFactory.createButton ("Cancel", KeyEvent.VK_C, listener), "ja", "キャンセル"), 960: Box.createHorizontalStrut (12) 961: ), 962: Box.createVerticalStrut (12) 963: ) 964: ) 965: ), 966: "ja", "SCSI ハードディスクのイメージファイルの新規作成"); 967: 968: } //spcMakeFormatDialog() 969: 970: //spcMakeFormatFileChooser () 971: // フォーマットファイルチューザーを作る 972: public static void spcMakeFormatFileChooser () { 973: if (spcFormatFileChooser == null) { 974: spcFormatFileChooser = new JFileChooser2 (); 975: //spcFormatFileChooser.setMultiSelectionEnabled (true); //複数選択可能 976: spcFormatFileChooser.setControlButtonsAreShown (false); //デフォルトのボタンを消す 977: } 978: } 979: 980: //spcOpenFormatDialog () 981: // フォーマットダイアログを開く 982: public static void spcOpenFormatDialog () { 983: if (spcFormatDialog == null) { 984: spcMakeFormatDialog (); 985: } 986: XEiJ.pnlExitFullScreen (true); 987: spcFormatDialog.setVisible (true); 988: } //spcOpenFormatDialog() 989: 990: //success = spcFormatFiles (list) 991: // SCSIハードディスクのイメージファイルを作成する 992: // コマンドラインのみ 993: // spcFormatPartitionMegaBytes 994: // spcFormatBytesPerRecord 995: // //spcFormatCopySystemFiles 996: // spcFormatPartitioningOn 997: // spcFormatCopyHumanSysOn 998: // spcFormatCopyCommandXOn 999: // を設定しておくこと 1000: public static boolean spcFormatFiles (File[] list) { 1001: boolean success = true; 1002: format: 1003: { 1004: SCMedia media = new SCMedia (spcFormatBytesPerRecord, //bytesPerRecord 1005: (int) ((32768L + ((long) spcFormatPartitionMegaBytes << 20)) / spcFormatBytesPerRecord)); //diskEndRecord 1006: //データの配列を作る 1007: // セクタ0から先頭のパーティションのシステムファイルまでがすべて収まっている 1008: // パーティションの手前に32KB、IPLが1KB、FATが最大で128KB、ルートディレクトリが16KB、HUMAN.SYSが58KB、COMMAND.Xが28KB 1009: byte[] array = new byte[1024 * 512]; //データの配列。512KB 1010: media.scmMakeFormatData (array, spcFormatPartitioningOn, spcFormatCopyHumanSysOn, spcFormatCopyCommandXOn); 1011: //イメージファイルを作る 1012: int u = 0; 1013: for (File file : list) { 1014: String path = file.getPath (); 1015: if (!path.toUpperCase ().endsWith (".HDS")) { //適切な拡張子が指定されていない 1016: path += path.endsWith (".") ? "HDS" : ".HDS"; //拡張子を付ける 1017: file = new File (path); 1018: } 1019: if (spcIsInserted (path)) { //他のユニットに挿入されている 1020: success = false; //失敗 1021: break format; 1022: } 1023: //書き出す 1024: if (!XEiJ.rscPutFile (path, array, 0, array.length, (int) media.humDiskEndByte)) { //書き出せない 1025: success = false; //失敗 1026: break format; 1027: } 1028: //空いているユニットがあれば挿入する 1029: while (u < 16) { 1030: SCUnit unit = spcUnitArray[u++]; //ユニット 1031: if (unit.abuConnected && //接続されていて 1032: !unit.abuInserted && //空いていて 1033: unit.insert (path, 1034: false)) { //挿入できた 1035: //フォーマットしたディスクの書き込みを禁止しても意味がないのでここでは書き込みを禁止しない 1036: break; 1037: } 1038: } 1039: } 1040: } //format 1041: if (success) { //すべてフォーマットできた 1042: spcAddHistory (list); //ヒストリに追加する 1043: } 1044: return success; 1045: } //spcFormatFiles(File[]) 1046: 1047: //spcSetFat (bb, fatOffset, fat12, cluster, next) 1048: // FATに書く 1049: public static void spcSetFat (byte[] bb, int fatOffset, boolean fat12, int cluster, int next) { 1050: if (fat12) { 1051: int i = fatOffset + 3 * (cluster >> 1); 1052: if ((cluster & 1) == 0) { //偶数クラスタ(HML→ML.H..) 1053: bb[i ] = (byte) next; //ML。next&0x0ff 1054: bb[i + 1] = (byte) (bb[i + 1] & 0xf0 | next >> 8 & 15); //.H。(next&0xf00)>>8 1055: } else { //奇数クラスタ(hml→..l.hm) 1056: bb[i + 1] = (byte) (next << 4 | bb[i + 1] & 15); //l.。(next&0x00f)<<4 1057: bb[i + 2] = (byte) (next >> 4); //hm。(next&0xff0)>>4 1058: } 1059: } else { 1060: int i = fatOffset + (cluster << 1); 1061: bb[i ] = (byte) (next >> 8); 1062: bb[i + 1] = (byte) next; 1063: } 1064: } //spcSetFat(byte[],int,boolean,int,int) 1065: 1066: 1067: //spcAddHistory (file) 1068: // ファイルをヒストリに追加する 1069: public static void spcAddHistory (File file) { 1070: spcAddHistory (new File[] { file }); 1071: } 1072: 1073: //spcAddHistory (files) 1074: // 複数のファイルをヒストリに追加する 1075: public static void spcAddHistory (File[] files) { 1076: if (spcOpenDialog == null) { 1077: spcOpenHistory.add (files); 1078: } else { 1079: spcOpenDialog.addHistory (files); 1080: } 1081: spcMakeFormatFileChooser (); 1082: spcFormatFileChooser.addHistory (files); 1083: spcFormatFileChooser.selectLastFiles (); 1084: } 1085: 1086: 1087: //success = spcIsHds (file, formatted) 1088: // ファイルはHDSか 1089: // formatted true=拡張子がHDSでファイルが存在して装置初期化されていなければならない 1090: // false=拡張子がHDSならばファイルが存在しなくてもよい 1091: public static boolean spcIsHds (File file, boolean formatted) { 1092: //拡張子がHDSか 1093: String upperName = file.getName ().toUpperCase (); 1094: if (!(upperName.endsWith (".HDS") || 1095: upperName.endsWith (".DIM.001"))) { 1096: return false; 1097: } 1098: //ファイルが存在するか 1099: if (!formatted) { 1100: return true; 1101: } 1102: if (!file.isFile ()) { 1103: return false; 1104: } 1105: //ファイルサイズが64KB以上かつ256で割り切れるか 1106: long longLength = file.length (); //ファイルサイズ 1107: if (longLength < (long) (1024 * 64) || 1108: (longLength & 255) != 0) { 1109: return false; 1110: } 1111: //先頭512バイトを読み込む 1112: byte[] bb = new byte[512]; 1113: try (BufferedInputStream bis = new BufferedInputStream (new FileInputStream (file))) { 1114: if (bis.read (bb, 0, 512) != 512) { 1115: return false; 1116: } 1117: } catch (IOException ioe) { 1118: return false; 1119: } 1120: //装置初期化されているか 1121: // 0000 q X68SCSI1マジック 1122: // 0008 w 1レコードあたりのバイト数(2の累乗) 1123: // 000a l ディスクのレコード数 1124: // 000e b Read(10),Write(10)が動作するか 1125: // 000f b デバイスタイプ 1126: if (ByteArray.byaRls (bb, 0) == ('X' << 24 | '6' << 16 | '8' << 8 | 'S') && 1127: ByteArray.byaRls (bb, 4) == ('C' << 24 | 'S' << 16 | 'I' << 8 | '1')) { 1128: //SxSIか 1129: boolean sxsi = ByteArray.byaRls (bb, 42) == ('S' << 24 | 'x' << 16 | 'S' << 8 | 'I'); 1130: //1レコードあたりのバイト数 1131: int bytesPerRecord = ByteArray.byaRwz (bb, 8); 1132: //1レコードあたりのバイト数が256または512か 1133: if (bytesPerRecord != 256 && 1134: bytesPerRecord != 512) { 1135: return false; 1136: } 1137: //ディスクのレコード数 1138: long diskEndRecord = (long) ByteArray.byaRls (bb, 10) & 0xffffffffL; 1139: //SxSIは1レコードあたりのバイト数が512だがディスクのレコード数は1024で計算されている 1140: if (sxsi) { 1141: diskEndRecord <<= 1; 1142: } 1143: //ディスクのバイト数 1144: long diskEndByte = (long) bytesPerRecord * diskEndRecord; 1145: //ディスクのバイト数とファイルサイズが一致しているか 1146: // FORMAT.XはRead Capacityが返す最終論理ブロックアドレスを論理ブロック数と誤解して1ブロック少ない容量で装置初期化を行う 1147: return (longLength == diskEndByte || 1148: longLength == diskEndByte + (long) bytesPerRecord || 1149: longLength == diskEndByte + (long) (bytesPerRecord << 1)); 1150: } 1151: //IBMスーパーフロッピーか 1152: // 0000 b 0xeb 1153: // 01fe b 0x55 1154: // 01ff b 0xaa 1155: if (bb[0x0000] == (byte) 0xeb && 1156: bb[0x01fe] == (byte) 0x55 && 1157: bb[0x01ff] == (byte) 0xaa) { //IBMスーパーフロッピー 1158: return true; 1159: } 1160: return false; 1161: } //spcIsHds(File,boolean) 1162: 1163: //spcIsIso (file) 1164: // ファイルはISOか 1165: // 参考 1166: // http://euc.jp/periphs/iso9660.ja.html 1167: public static boolean spcIsIso (File file) { 1168: String upperName = file.getName ().toUpperCase (); 1169: if (upperName.endsWith (".ISO")) { //拡張子がISO 1170: if (file.isFile ()) { //ファイルが存在する 1171: long longLength = file.length (); //ファイルサイズ 1172: if (((int) longLength & 2047) == 0 && //ファイルサイズが2048で割り切れる 1173: (long) (2048 * 18) <= longLength) { //ファイルサイズが18セクタ以上 1174: try (DataInputStream dis = new DataInputStream (new BufferedInputStream (new FileInputStream (file)))) { 1175: dis.skipBytes (2048 * 16); //セクタ16まで読み飛ばす 1176: long id = dis.readLong (); //0 ボリューム記述子種別と規格識別子とボリューム記述子版数とボリュームフラグ 1177: dis.skipBytes (84 - 8); 1178: int diskEndRecord = dis.readInt (); //84 ボリュームのブロック数 1179: dis.skipBytes (130 - 88); 1180: int bytesPerRecord = (int) dis.readChar (); //130 ブロックのバイト数 1181: long diskEndByte = (long) bytesPerRecord * (long) diskEndRecord; //ボリュームのバイト数 1182: if (id >>> 8 == ((long) 0x01 << 48 | 1183: (long) 'C' << 40 | (long) 'D' << 32 | (long) '0' << 24 | (long) '0' << 16 | (long) '1' << 8 | 1184: (long) 0x01) && //ボリューム記述子種別と規格識別子とボリューム記述子版数が一致 1185: bytesPerRecord == 2048 && //ブロックのバイト数が2048 1186: 0 <= diskEndRecord && //ボリュームのブロック数が31bitに収まっている 1187: diskEndByte <= longLength) { //ボリュームのバイト数がファイルサイズ以下。一致しているとは限らない 1188: return true; 1189: } 1190: } catch (IOException ioe) { 1191: } 1192: } //if ファイルサイズ 1193: } //if ファイルが存在する 1194: } //if 拡張子がISO 1195: return false; 1196: } //spcIsIso(File) 1197: 1198: 1199: 1200: //======================================================================================== 1201: //SCSIフォーマットデータ 1202: // 無償公開されたHuman68k version 3.02のシステムディスクに入っているFORMAT.Xから抽出したデータを使う 1203: 1204: //---------------------------------------------------------------------------------------- 1205: //SCSIディスクID 1206: // SCSIディスクのセクタ0に書き込まれる 1207: /* 1208: public static final int[] SPC_DISK_ID_1 = { 1209: // perl -e "do'sjdump.pl';$p=0;$m=2;$o=0x3ce4;$l=8;open IN,'HUMAN302.XDF'or die;binmode IN;seek IN,1024*592,0;read IN,$b,64;seek IN,1024*592+vec($b,15,32)+32*$m,0;read IN,$b,32;seek IN,1024*592+vec($b,7,32)+64+$o,0;read IN,$b,$l;close IN;sjdumpcode($b,0,$l,$p)" 1210: 0x58,0x36,0x38,0x53,0x43,0x53,0x49,0x31, //00000000 X68SCSI1 1211: }; 1212: */ 1213: // perl misc/itob.pl xeij/SPC.java SPC_DISK_ID_1 1214: public static final byte[] SPC_DISK_ID_1 = "X68SCSI1".getBytes (XEiJ.ISO_8859_1); 1215: /* 1216: public static final int[] SPC_DISK_ID_2 = { 1217: // perl -e "do'sjdump.pl';$p=0x10;$m=2;$o=0x669d;$l=35;open IN,'HUMAN302.XDF'or die;binmode IN;seek IN,1024*592,0;read IN,$b,64;seek IN,1024*592+vec($b,15,32)+32*$m,0;read IN,$b,32;seek IN,1024*592+vec($b,7,32)+64+$o,0;read IN,$b,$l;close IN;sjdumpcode($b,0,$l,$p)" 1218: 0x48,0x75,0x6d,0x61,0x6e,0x36,0x38,0x4b,0x20,0x53,0x43,0x53,0x49,0x2d,0x44,0x49, //00000010 Human68K SCSI-DI 1219: 0x53,0x4b,0x20,0x62,0x79,0x20,0x4b,0x65,0x69,0x73,0x6f,0x6b,0x75,0x20,0x47,0x69, //00000020 SK by Keisoku Gi 1220: 0x6b,0x65,0x6e, //00000030 ken 1221: }; 1222: */ 1223: // perl misc/itob.pl xeij/SPC.java SPC_DISK_ID_2 1224: public static final byte[] SPC_DISK_ID_2 = "Human68K SCSI-DISK by Keisoku Giken".getBytes (XEiJ.ISO_8859_1); 1225: 1226: //---------------------------------------------------------------------------------------- 1227: //SCSIディスクIPL 1228: // SCSIディスクのセクタ1に書き込まれる 1229: // HELPキーが押されていたらメニューを表示する 1230: // 選択されたパーティションのパーティションIPLを読み込んで起動する 1231: /* 1232: public static final int[] SPC_DISK_IPL = { 1233: // perl -e "do'sjdump.pl';$p=0x400;$m=2;$o=0x77da;$l=0x7bc2-$o;open IN,'HUMAN302.XDF'or die;binmode IN;seek IN,1024*592,0;read IN,$b,64;seek IN,1024*592+vec($b,15,32)+32*$m,0;read IN,$b,32;seek IN,1024*592+vec($b,7,32)+64+$o,0;read IN,$b,$l;close IN;sjdumpcode($b,0,$l,$p)" 1234: 0x60,0x00,0x00,0xca,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00000400 `..ハ............ 1235: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00000410 ................ 1236: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00000420 ................ 1237: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00000430 ................ 1238: 0x1a,0x1b,0x5b,0x36,0x3b,0x33,0x32,0x48,0x58,0x36,0x38,0x30,0x30,0x30,0x20,0x53, //00000440 ..[6;32HX68000 S 1239: 0x43,0x53,0x49,0x20,0x44,0x49,0x53,0x4b,0x20,0x49,0x50,0x4c,0x20,0x4d,0x45,0x4e, //00000450 CSI DISK IPL MEN 1240: 0x55,0x1b,0x5b,0x32,0x35,0x3b,0x32,0x32,0x48,0x83,0x4a,0x81,0x5b,0x83,0x5c,0x83, //00000460 U.[25;22Hカーソル 1241: 0x8b,0x83,0x4c,0x81,0x5b,0x82,0xc5,0x91,0x49,0x91,0xf0,0x82,0xb5,0x82,0xc4,0x83, //00000470 キーで選択してリ 1242: 0x8a,0x83,0x5e,0x81,0x5b,0x83,0x93,0x83,0x4c,0x81,0x5b,0x82,0xf0,0x89,0x9f,0x82, //00000480 ターンキーを押し 1243: 0xb5,0x82,0xc4,0x82,0xad,0x82,0xbe,0x82,0xb3,0x82,0xa2,0x00,0x1b,0x5b,0x32,0x36, //00000490 てください..[26 1244: 0x3b,0x32,0x38,0x48,0x91,0x49,0x91,0xf0,0x82,0xb5,0x82,0xbd,0x82,0xe0,0x82,0xcc, //000004a0 ;28H選択したもの 1245: 0x82,0xf0,0x8e,0xa9,0x93,0xae,0x8b,0x4e,0x93,0xae,0x82,0xc6,0x82,0xb5,0x82,0xc4, //000004b0 を自動起動として 1246: 0x93,0x6f,0x98,0x5e,0x82,0xb5,0x82,0xdc,0x82,0xb7,0x00,0x00,0x72,0x00,0x70,0x04, //000004c0 登録します..r.p. 1247: 0x4e,0x4f,0x08,0x00,0x00,0x01,0x67,0x02,0x4e,0x75,0x4f,0xfa,0xff,0x24,0x42,0x85, //000004d0 NO....g.NuO..$B. 1248: 0x70,0xf5,0x72,0x25,0x43,0xfa,0x03,0x02,0x4e,0x4f,0x4a,0x00,0x66,0x00,0x01,0x92, //000004e0 p.r%C...NOJ.f... 1249: 0x22,0x29,0x00,0x04,0xe0,0x89,0xe2,0x89,0x43,0xfa,0x02,0xea,0x22,0x81,0x74,0x02, //000004f0 ")..煢竕C..."》. 1250: 0x26,0x3c,0x00,0x00,0x04,0x00,0x43,0xfa,0x02,0xe0,0x61,0x00,0x02,0x3a,0x4a,0x00, //00000500 &<....C..濛..:J. 1251: 0x66,0x00,0x01,0x6e,0x43,0xfa,0x02,0xd2,0x47,0xfa,0xfe,0xea,0x0c,0x91,0x58,0x36, //00000510 f..nC..メG....噌6 1252: 0x38,0x4b,0x66,0x00,0x01,0x70,0x74,0x0e,0x42,0x43,0x42,0x47,0x42,0x86,0x43,0xe9, //00000520 8Kf..pt.BCBGB.C. 1253: 0x00,0x10,0x4a,0x11,0x67,0x16,0x52,0x46,0x26,0xc9,0x10,0x29,0x00,0x08,0x08,0x00, //00000530 ..J.g.RF&ノ.).... 1254: 0x00,0x00,0x66,0x08,0x52,0x43,0x4a,0x00,0x66,0x02,0x52,0x47,0x51,0xca,0xff,0xe0, //00000540 ..f.RCJ.f.RGQハ.濳 1255: 0x4a,0x43,0x67,0x00,0x01,0x46,0x72,0x0a,0x70,0x04,0x4e,0x4f,0x08,0x00,0x00,0x04, //00000550 Cg..Fr.p.NO.... 1256: 0x66,0x12,0x4a,0x47,0x67,0x0e,0x53,0x47,0x67,0x1c,0x43,0xfa,0xfe,0xd4,0x61,0x00, //00000560 f.JGg.SGg.C..ヤa. 1257: 0x01,0xc8,0x60,0x28,0x43,0xfa,0xfe,0xca,0x61,0x00,0x01,0xbe,0x43,0xfa,0xff,0x1e, //00000570 .ネ`(C..ハa..セC... 1258: 0x61,0x00,0x01,0xb6,0x60,0x14,0x47,0xfa,0xfe,0x7c,0x20,0x5b,0x24,0x28,0x00,0x08, //00000580 a..カ`.G..| [$(.. 1259: 0x4a,0x28,0x00,0x08,0x66,0xf4,0x60,0x00,0x00,0xc2,0x7a,0x02,0x42,0x43,0x45,0xfa, //00000590 J(..f.`..ツz.BCE. 1260: 0xfe,0x64,0x22,0x52,0x10,0x29,0x00,0x08,0x67,0x0a,0xb0,0x05,0x67,0x06,0x72,0x02, //000005a0 .d"R.)..g.ー.g.r. 1261: 0x61,0x00,0x01,0x7a,0x61,0x00,0x01,0x1a,0x58,0x8a,0x52,0x43,0xb6,0x46,0x65,0xe2, //000005b0 a..za...X崖CカFe秡 1262: 0x60,0x2a,0x61,0x00,0x01,0x0a,0x61,0x00,0x00,0xf6,0xb0,0x3c,0x00,0x1d,0x67,0x3a, //000005c0 *a...a...ー<..g: 1263: 0xb0,0x3c,0x00,0x35,0x67,0x0c,0xb0,0x3c,0x00,0x3c,0x67,0x1a,0xb0,0x3c,0x00,0x3e, //000005d0 ー<.5g.ー<.<g.ー<.> 1264: 0x66,0xe4,0x61,0x00,0x00,0xec,0x52,0x43,0xb6,0x46,0x65,0x02,0x42,0x43,0x61,0x00, //000005e0 f臑...RCカFe.BCa. 1265: 0x00,0xb6,0x66,0xf2,0x60,0xcc,0x61,0x00,0x00,0xd8,0x53,0x43,0x6a,0x04,0x36,0x06, //000005f0 .カf.`フa..リSCj.6. 1266: 0x53,0x43,0x61,0x00,0x00,0xa2,0x66,0xf2,0x60,0xb8,0x47,0xfa,0xfd,0xf8,0xe5,0x43, //00000600 SCa..「f.`クG...蕕 1267: 0x20,0x73,0x30,0x00,0x24,0x28,0x00,0x08,0x4a,0x05,0x67,0x3e,0x43,0xfa,0x01,0xd2, //00000610 s0.$(..J.g>C..メ 1268: 0x72,0x0e,0x43,0xe9,0x00,0x10,0x4a,0x29,0xff,0xf8,0x67,0x12,0x20,0x11,0x08,0x00, //00000620 r.C...J)..g. ... 1269: 0x00,0x18,0x66,0x0a,0x42,0x11,0xb4,0x80,0x67,0x04,0x12,0xbc,0x00,0x02,0x51,0xc9, //00000630 ..f.B.エ.g..シ..Qノ 1270: 0xff,0xe2,0x2f,0x02,0x74,0x02,0x26,0x3c,0x00,0x00,0x04,0x00,0x43,0xfa,0x01,0x9a, //00000640 ../.t.&<....C..啾 1271: 0x61,0x00,0x00,0xec,0x24,0x1f,0x4a,0x00,0x66,0x26,0xc4,0xbc,0x00,0xff,0xff,0xff, //00000650 ...$.J.f&トシ.... 1272: 0x26,0x3c,0x00,0x00,0x04,0x00,0x43,0xfa,0xfd,0x98,0xd3,0xfc,0x00,0x00,0x04,0x00, //00000660 &<....C..侖..... 1273: 0x61,0x00,0x00,0xd4,0x4a,0x00,0x66,0x08,0x0c,0x11,0x00,0x60,0x66,0x22,0x4e,0xd1, //00000670 a..ヤJ.f....`f"Nム 1274: 0x45,0xfa,0x00,0xea,0x43,0xfa,0x00,0xdc,0x61,0x00,0x00,0xae,0x22,0x4a,0x61,0x00, //00000680 E..鵑..ワa..ョ"Ja. 1275: 0x00,0xa8,0x60,0xfe,0x45,0xfa,0x00,0xf5,0x60,0xea,0x45,0xfa,0x01,0x0c,0x60,0xe4, //00000690 .ィ`.E...`鵙...`胼 1276: 0x45,0xfa,0x01,0x23,0x60,0xde,0x41,0xfa,0xfd,0x5c,0x20,0x03,0xe5,0x40,0x20,0x70, //000006a0 ..#`゙A..\ .蕁 p 1277: 0x00,0x00,0x10,0x28,0x00,0x08,0xb0,0x05,0x67,0x02,0x4a,0x00,0x4e,0x75,0x42,0x80, //000006b0 ...(..ー.g.J.NuB. 1278: 0x4e,0x4f,0xe0,0x48,0xb0,0x3c,0x00,0x4e,0x66,0x02,0x70,0x1d,0x4e,0x75,0x61,0x5a, //000006c0 NO潯ー<.Nf.p.NuaZ 1279: 0x43,0xfa,0xfd,0x32,0x30,0x03,0xe5,0x40,0x43,0xf1,0x00,0x00,0x22,0x51,0x72,0x24, //000006d0 C..20.蕁C..."Qr$ 1280: 0x74,0x09,0xd4,0x43,0x70,0x23,0x4e,0x4f,0x72,0x28,0x61,0x46,0x24,0x09,0x41,0xfa, //000006e0 t.ヤCp#NOr(aF$.A. 1281: 0x00,0xf8,0x94,0x88,0xe8,0x8a,0x84,0xfc,0x00,0x0a,0xd4,0xbc,0x00,0x30,0x00,0x30, //000006f0 ..蝿闃....ヤシ.0.0 1282: 0x72,0x20,0xb4,0x7c,0x00,0x30,0x67,0x02,0x32,0x02,0x61,0x26,0x48,0x42,0x32,0x02, //00000700 r エ|.0g.2.a&HB2. 1283: 0x61,0x20,0x72,0x29,0x61,0x1c,0x72,0x20,0x61,0x18,0x74,0x07,0x42,0x41,0x12,0x19, //00000710 a r)a.r a.t.BA.. 1284: 0x61,0x10,0x51,0xca,0xff,0xf8,0x72,0x03,0x60,0x02,0x72,0x0b,0x70,0x22,0x4e,0x4f, //00000720 a.Qハ..r.`.r.p"NO 1285: 0x4e,0x75,0x70,0x20,0x4e,0x4f,0x4e,0x75,0x70,0x21,0x4e,0x4f,0x4e,0x75,0x48,0xe7, //00000730 Nup NONup!NONuH轎 1286: 0x7c,0x00,0x72,0x22,0x60,0x06,0x48,0xe7,0x7c,0x00,0x72,0x21,0x2a,0x3a,0x00,0x96, //00000740 .r"`.H轎.r!*:.籾 1287: 0xe0,0x8b,0xea,0xab,0xe5,0x8a,0xea,0xaa,0x70,0xf5,0x4e,0x4f,0x4c,0xdf,0x00,0x3e, //00000750 苦ォ蜉.ェp.NOL゚.> 1288: 0x4e,0x75,0x1a,0x1b,0x5b,0x31,0x36,0x3b,0x33,0x33,0x48,0x00,0x20,0x20,0x82,0x72, //00000760 Nu..[16;33H. S 1289: 0x82,0x62,0x82,0x72,0x82,0x68,0x83,0x66,0x83,0x42,0x83,0x58,0x83,0x4e,0x82,0xaa, //00000770 CSIディスクが 1290: 0x93,0xc7,0x82,0xdf,0x82,0xdc,0x82,0xb9,0x82,0xf1,0x00,0x20,0x20,0x8a,0xc7,0x97, //00000780 読めません. 管理 1291: 0x9d,0x83,0x75,0x83,0x8d,0x83,0x62,0x83,0x4e,0x82,0xaa,0x89,0xf3,0x82,0xea,0x82, //00000790 ブロックが壊れて 1292: 0xc4,0x82,0xa2,0x82,0xdc,0x82,0xb7,0x00,0x20,0x20,0x8b,0x4e,0x93,0xae,0x89,0xc2, //000007a0 います. 起動可 1293: 0x94,0x5c,0x82,0xc8,0x97,0xcc,0x88,0xe6,0x82,0xaa,0x82,0xa0,0x82,0xe8,0x82,0xdc, //000007b0 能な領域がありま 1294: 0x82,0xb9,0x82,0xf1,0x00,0x82,0x68,0x82,0x6f,0x82,0x6b,0x83,0x75,0x83,0x8d,0x83, //000007c0 せん.IPLブロッ 1295: 0x62,0x83,0x4e,0x82,0xcc,0x93,0xe0,0x97,0x65,0x82,0xaa,0x88,0xd9,0x8f,0xed,0x82, //000007d0 クの内容が異常で 1296: 0xc5,0x82,0xb7,0x00,0x00,0x00,0x00,0x00, //000007e0 す..... 1297: }; 1298: */ 1299: // perl misc/itob.pl xeij/SPC.java SPC_DISK_IPL 1300: public static final byte[] SPC_DISK_IPL = "`\0\0\312\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\33[6;32HX68000 SCSI DISK IPL MENU\33[25;22H\203J\201[\203\\\203\213\203L\201[\202\305\221I\221\360\202\265\202\304\203\212\203^\201[\203\223\203L\201[\202\360\211\237\202\265\202\304\202\255\202\276\202\263\202\242\0\33[26;28H\221I\221\360\202\265\202\275\202\340\202\314\202\360\216\251\223\256\213N\223\256\202\306\202\265\202\304\223o\230^\202\265\202\334\202\267\0\0r\0p\4NO\b\0\0\1g\2NuO\372\377$B\205p\365r%C\372\3\2NOJ\0f\0\1\222\")\0\4\340\211\342\211C\372\2\352\"\201t\2&<\0\0\4\0C\372\2\340a\0\2:J\0f\0\1nC\372\2\322G\372\376\352\f\221X68Kf\0\1pt\16BCBGB\206C\351\0\20J\21g\26RF&\311\20)\0\b\b\0\0\0f\bRCJ\0f\2RGQ\312\377\340JCg\0\1Fr\np\4NO\b\0\0\4f\22JGg\16SGg\34C\372\376\324a\0\1\310`(C\372\376\312a\0\1\276C\372\377\36a\0\1\266`\24G\372\376| [$(\0\bJ(\0\bf\364`\0\0\302z\2BCE\372\376d\"R\20)\0\bg\n\260\5g\6r\2a\0\1za\0\1\32X\212RC\266Fe\342`*a\0\1\na\0\0\366\260<\0\35g:\260<\0005g\f\260<\0<g\32\260<\0>f\344a\0\0\354RC\266Fe\2BCa\0\0\266f\362`\314a\0\0\330SCj\0046\6SCa\0\0\242f\362`\270G\372\375\370\345C s0\0$(\0\bJ\5g>C\372\1\322r\16C\351\0\20J)\377\370g\22 \21\b\0\0\30f\nB\21\264\200g\4\22\274\0\2Q\311\377\342/\2t\2&<\0\0\4\0C\372\1\232a\0\0\354$\37J\0f&\304\274\0\377\377\377&<\0\0\4\0C\372\375\230\323\374\0\0\4\0a\0\0\324J\0f\b\f\21\0`f\"N\321E\372\0\352C\372\0\334a\0\0\256\"Ja\0\0\250`\376E\372\0\365`\352E\372\1\f`\344E\372\1#`\336A\372\375\\ \3\345@ p\0\0\20(\0\b\260\5g\2J\0NuB\200NO\340H\260<\0Nf\2p\35NuaZC\372\37520\3\345@C\361\0\0\"Qr$t\t\324Cp#NOr(aF$\tA\372\0\370\224\210\350\212\204\374\0\n\324\274\0000\0000r \264|\0000g\0022\2a&HB2\2a r)a\34r a\30t\7BA\22\31a\20Q\312\377\370r\3`\2r\13p\"NONup NONup!NONuH\347|\0r\"`\6H\347|\0r!*:\0\226\340\213\352\253\345\212\352\252p\365NOL\337\0>Nu\32\33[16;33H\0 \202r\202b\202r\202h\203f\203B\203X\203N\202\252\223\307\202\337\202\334\202\271\202\361\0 \212\307\227\235\203u\203\215\203b\203N\202\252\211\363\202\352\202\304\202\242\202\334\202\267\0 \213N\223\256\211\302\224\\\202\310\227\314\210\346\202\252\202\240\202\350\202\334\202\271\202\361\0\202h\202o\202k\203u\203\215\203b\203N\202\314\223\340\227e\202\252\210\331\217\355\202\305\202\267\0\0\0\0\0".getBytes (XEiJ.ISO_8859_1); 1301: 1302: //---------------------------------------------------------------------------------------- 1303: //SCSIデバイスドライバ 1304: // ROMのデバイスドライバが古いとき置き換えて使用する 1305: /* 1306: public static final int[] SPC_DEVICE_DRIVER = { 1307: // perl -e "do'sjdump.pl';$p=0xc00;$m=2;$o=0x7e88;$l=0xb1e0-$o;open IN,'HUMAN302.XDF'or die;binmode IN;seek IN,1024*592,0;read IN,$b,64;seek IN,1024*592+vec($b,15,32)+32*$m,0;read IN,$b,32;seek IN,1024*592+vec($b,7,32)+64+$o,0;read IN,$b,$l;close IN;sjdumpcode($b,0,$l,$p)" 1308: 0xff,0xff,0xff,0xff,0x40,0x00,0x00,0x00,0x00,0x6e,0x00,0x00,0x00,0x80,0x01,0x53, //00000c00 ....@....n.....S 1309: 0x43,0x48,0x44,0x49,0x53,0x4b,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x46,0x00,0x00, //00000c10 CHDISK.......F.. 1310: 0x03,0x46,0x00,0x00,0x0d,0x0c,0x00,0x00,0x00,0xf8,0x00,0x00,0x07,0x9e,0x00,0x00, //00000c20 .F.............. 1311: 0x03,0xb0,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0xb8,0x00,0x00,0x08,0x14,0x00,0x00, //00000c30 .ー...ク...ク...... 1312: 0x08,0x06,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0xb8,0x00,0x00,0x01,0x2c,0x00,0x00, //00000c40 .....ク...ク...,.. 1313: 0x00,0x01,0x70,0x02,0x70,0x07,0x70,0x0c,0x70,0x08,0x00,0x01,0x70,0x0d,0x70,0x0c, //00000c50 ..p.p.p.p...p.p. 1314: 0x70,0x0c,0x70,0x0c,0x70,0x0c,0x70,0x0c,0x70,0x0c,0x70,0x0c,0x70,0x0c,0x48,0xe7, //00000c60 p.p.p.p.p.p.p.H. 1315: 0x00,0x02,0x4d,0xfa,0x0d,0xc8,0x2d,0x4d,0x00,0x00,0x4c,0xdf,0x40,0x00,0x4e,0x75, //00000c70 ..M..ネ-M..L゚@.Nu 1316: 0x48,0xe7,0x7f,0xfe,0x4d,0xfa,0x0d,0xb6,0x2a,0x6e,0x00,0x00,0x70,0x00,0x10,0x2d, //00000c80 H...M..カ*n..p..- 1317: 0x00,0x02,0x0c,0x00,0x00,0x0c,0x62,0x1a,0x22,0x6d,0x00,0x0e,0x41,0xfa,0xff,0x7c, //00000c90 ......b."m..A..| 1318: 0xd0,0x40,0xd0,0x40,0xd1,0xc0,0x20,0x50,0x20,0x08,0x41,0xfa,0xff,0x54,0xd1,0xc0, //00000ca0 ミ@ミ@ムタ P .A..Tムタ 1319: 0x4e,0xd0,0x30,0x3c,0x70,0x0c,0x60,0x02,0x42,0x40,0x32,0x00,0x1b,0x41,0x00,0x03, //00000cb0 Nミ0<p.`.B@2..A.. 1320: 0xe0,0x49,0x1b,0x41,0x00,0x04,0x4a,0x40,0x67,0x12,0x4a,0x6e,0x05,0xac,0x66,0x06, //00000cc0 潛.A..J@g.Jn.ャf. 1321: 0x4a,0x6e,0x05,0xae,0x67,0x06,0x3d,0x7c,0xff,0xff,0x05,0xb2,0x4c,0xdf,0x7f,0xfe, //00000cd0 Jn.ョg.=|...イL゚.. 1322: 0x4e,0x75,0x4a,0xae,0x05,0xca,0x67,0xca,0x22,0x6e,0x05,0xca,0x70,0x80,0x22,0x3c, //00000ce0 NuJョ.ハgハ"n.ハp."< 1323: 0x00,0x00,0x01,0xf5,0x4e,0x4f,0x60,0xba,0x20,0x6d,0x00,0x0e,0x20,0x2d,0x00,0x12, //00000cf0 ....NO`コ m.. -.. 1324: 0x0c,0x80,0x00,0x00,0x00,0x08,0x67,0x14,0x0c,0x80,0x00,0x00,0x00,0x04,0x66,0xa8, //00000d00 ......g.......fィ 1325: 0x30,0xee,0x05,0xc4,0x20,0x2e,0x05,0xa8,0x30,0x80,0x60,0x9c,0x30,0xee,0x05,0xc4, //00000d10 0..ト ..ィ0.`.0..ト 1326: 0x20,0x2e,0x05,0xa8,0x30,0xc0,0x20,0xae,0x05,0xc6,0x60,0x8c,0x20,0x6d,0x00,0x0e, //00000d20 ..ィ0タ ョ.ニ`. m.. 1327: 0x20,0x2d,0x00,0x12,0x0c,0x80,0x00,0x00,0x00,0x02,0x66,0x00,0xff,0x7c,0x3d,0x50, //00000d30 -........f..|=P 1328: 0x05,0xc4,0x60,0x00,0xff,0x74,0x0c,0x2d,0x00,0x17,0x00,0x16,0x64,0x00,0xff,0x64, //00000d40 .ト`..t.-....d..d 1329: 0x53,0x82,0x02,0x82,0x00,0x00,0x00,0x0f,0x2d,0x42,0x05,0xa8,0x05,0x39,0x00,0x00, //00000d50 S.......-B.ィ.9.. 1330: 0x0c,0xec,0x66,0x00,0xff,0x4e,0x61,0x00,0x1a,0xb8,0x2d,0x40,0x05,0xca,0x20,0x3c, //00000d60 ..f..Na..ク-@.ハ < 1331: 0x00,0x00,0x00,0xf5,0x72,0x24,0x28,0x2e,0x05,0xa8,0x4e,0x4f,0xb0,0xbc,0x00,0x00, //00000d70 ....r$(..ィNOーシ.. 1332: 0x00,0x00,0x67,0x64,0xb0,0xbc,0xff,0xff,0xff,0xff,0x67,0x00,0xff,0x56,0xb0,0xbc, //00000d80 ..gdーシ....g..Vーシ 1333: 0x00,0x00,0x00,0x08,0x67,0x50,0xb0,0xbc,0x00,0x00,0x00,0x02,0x66,0x00,0xff,0x44, //00000d90 ....gPーシ....f..D 1334: 0x20,0x3c,0x00,0x00,0x00,0xf5,0x72,0x2c,0x76,0x0e,0x28,0x2e,0x05,0xa8,0x43,0xee, //00000da0 <....r,v.(..ィC. 1335: 0x05,0xd2,0x4e,0x4f,0xb0,0xbc,0x00,0x00,0x00,0x00,0x66,0x00,0xff,0x26,0x43,0xee, //00000db0 .メNOーシ....f..&C. 1336: 0x05,0xd2,0x10,0x11,0x02,0x00,0x00,0x70,0x0c,0x00,0x00,0x70,0x66,0x00,0xff,0x14, //00000dc0 .メ.....p...pf... 1337: 0x10,0x29,0x00,0x02,0x67,0x10,0xb0,0x3c,0x00,0x01,0x67,0x0a,0xb0,0x3c,0x00,0x06, //00000dd0 .)..g.ー<..g.ー<.. 1338: 0x67,0x04,0x60,0x00,0xfe,0xfe,0x60,0x86,0x70,0xf5,0x72,0x2b,0x28,0x2e,0x05,0xa8, //00000de0 g.`...`.p.r+(..ィ 1339: 0x4e,0x4f,0x4a,0x80,0x66,0x00,0xfe,0xec,0x70,0xf5,0x72,0x25,0x28,0x2e,0x05,0xa8, //00000df0 NOJ.f...p.r%(..ィ 1340: 0x43,0xee,0x05,0xd2,0x4e,0x4f,0x4a,0x80,0x66,0x00,0xfe,0xd8,0x43,0xee,0x05,0xd2, //00000e00 C..メNOJ.f..リC..メ 1341: 0x22,0x29,0x00,0x04,0xb2,0xbc,0x00,0x00,0x04,0x00,0x67,0x18,0xb2,0xbc,0x00,0x00, //00000e10 ")..イシ....g.イシ.. 1342: 0x02,0x00,0x67,0x08,0x3d,0x7c,0x00,0x02,0x05,0xa0,0x60,0x0e,0x3d,0x7c,0x00,0x01, //00000e20 ..g.=|....`.=|.. 1343: 0x05,0xa0,0x60,0x06,0x3d,0x7c,0x00,0x00,0x05,0xa0,0xe0,0x89,0xe2,0x89,0x2d,0x41, //00000e30 ..`.=|....煢竕-A 1344: 0x05,0xa4,0x43,0xee,0x05,0xd2,0x2a,0x2e,0x05,0xa4,0x74,0x00,0xe5,0x8a,0xea,0xaa, //00000e40 .、C..メ*..、t.蜉.ェ 1345: 0x76,0x01,0xe5,0x8b,0xea,0xab,0x28,0x2e,0x05,0xa8,0x70,0xf5,0x72,0x21,0x4e,0x4f, //00000e50 v.蜍.ォ(..ィp.r!NO 1346: 0x4a,0x80,0x66,0x00,0xfe,0x7e,0x0c,0x91,0x58,0x36,0x38,0x53,0x66,0x00,0xfe,0x74, //00000e60 J.f..~.噌68Sf..t 1347: 0x0c,0xa9,0x43,0x53,0x49,0x31,0x00,0x04,0x66,0x00,0xfe,0x68,0x1d,0x69,0x00,0x0e, //00000e70 .ゥCSI1..f..h.i.. 1348: 0x05,0xb0,0x3d,0x7c,0x00,0x00,0x05,0xac,0x3d,0x7c,0x00,0x00,0x05,0xae,0x0c,0x29, //00000e80 .ー=|...ャ=|...ョ.) 1349: 0x00,0x01,0x00,0x0f,0x67,0x10,0x0c,0x29,0x00,0x02,0x00,0x0f,0x66,0x0e,0x3d,0x7c, //00000e90 ....g..)....f.=| 1350: 0xff,0xff,0x05,0xae,0x60,0x06,0x3d,0x7c,0xff,0xff,0x05,0xac,0x61,0x00,0x03,0xb6, //00000ea0 ...ョ`.=|...ャa..カ 1351: 0x4a,0x80,0x66,0x00,0xfe,0x2e,0x4a,0x46,0x67,0x00,0xfe,0x28,0x3d,0x7c,0x00,0x00, //00000eb0 J.f...JFg..(=|.. 1352: 0x05,0xb2,0x3d,0x46,0x05,0xb4,0x4a,0xae,0x05,0xca,0x67,0x06,0x41,0xfa,0x30,0x8a, //00000ec0 .イ=F.エJョ.ハg.A.0柿 1353: 0x60,0x04,0x41,0xfa,0x19,0x4c,0x2d,0x48,0x05,0xce,0xd1,0xfc,0x00,0x00,0x10,0x00, //00000ed0 .A..L-H.ホム..... 1354: 0x2b,0x48,0x00,0x0e,0x10,0x2d,0x00,0x16,0xd0,0x06,0x04,0x00,0x00,0x17,0x65,0x02, //00000ee0 +H...-..ミ.....e. 1355: 0x9c,0x00,0x1b,0x46,0x00,0x0d,0x41,0xee,0x05,0x44,0x2b,0x48,0x00,0x12,0x43,0xee, //00000ef0 ...F..A..D+H..C. 1356: 0x04,0x04,0x70,0x0e,0x20,0xc9,0x43,0xe9,0x00,0x14,0x51,0xc8,0xff,0xf8,0x1b,0x7a, //00000f00 ..p. ノC...Qネ...z 1357: 0xfd,0x06,0x00,0x16,0x70,0x0f,0x41,0xee,0x05,0x84,0x10,0xfc,0xff,0xff,0x51,0xc8, //00000f10 ....p.A.......Qネ 1358: 0xff,0xfa,0x24,0x2e,0x05,0xa8,0x05,0xf9,0x00,0x00,0x0c,0xec,0x70,0x00,0x3d,0x40, //00000f20 ..$..ィ......p.=@ 1359: 0x05,0xc4,0x2d,0x40,0x05,0xc6,0x2d,0x40,0x0d,0xd2,0x2d,0x40,0x0d,0xd6,0x61,0x00, //00000f30 .ト-@.ニ-@.メ-@.ヨa. 1360: 0x02,0xa6,0x60,0x00,0xfd,0x74,0x4a,0x6e,0x05,0xac,0x66,0x22,0x4a,0x6e,0x05,0xae, //00000f40 .ヲ`..tJn.ャf"Jn.ョ 1361: 0x66,0x1c,0x72,0x09,0x70,0xf5,0x4e,0x4f,0x02,0x00,0x00,0xc0,0x67,0x06,0x72,0x00, //00000f50 f.r.p.NO...タg.r. 1362: 0x70,0xf5,0x4e,0x4f,0x1b,0x7c,0x00,0x01,0x00,0x0e,0x60,0x00,0xfd,0x4c,0x61,0x00, //00000f60 p.NO.|....`..La. 1363: 0x01,0xea,0x4a,0x80,0x67,0x02,0x60,0x1c,0x70,0x00,0x10,0x2d,0x00,0x01,0x41,0xee, //00000f70 .鵯.g.`.p..-..A. 1364: 0x05,0x84,0x41,0xf0,0x00,0x00,0x4a,0x10,0x66,0x0a,0x1b,0x7c,0x00,0x01,0x00,0x0e, //00000f80 .Б...J.f..|.... 1365: 0x60,0x00,0xfd,0x26,0x70,0x00,0x10,0x2d,0x00,0x01,0x41,0xee,0x05,0x84,0x41,0xf0, //00000f90 `..&p..-..A..Б. 1366: 0x00,0x00,0x10,0xbc,0x00,0x00,0x1b,0x7c,0xff,0xff,0x00,0x0e,0x60,0x00,0xfd,0x0a, //00000fa0 ...シ...|....`... 1367: 0x4a,0x6e,0x05,0xac,0x66,0x40,0x4a,0x6e,0x05,0xae,0x66,0x3a,0x72,0x09,0x70,0xf5, //00000fb0 Jn.ャf@Jn.ョf:r.p. 1368: 0x4e,0x4f,0x02,0x00,0x00,0xc0,0x67,0x06,0x72,0x00,0x70,0xf5,0x4e,0x4f,0x0c,0x2d, //00000fc0 NO...タg.r.p.NO.- 1369: 0x00,0x08,0x00,0x0d,0x64,0x16,0x1b,0x7c,0x00,0x42,0x00,0x0d,0x4a,0x6e,0x05,0xc4, //00000fd0 ....d..|.B..Jn.ト 1370: 0x67,0x06,0x08,0xed,0x00,0x03,0x00,0x0d,0x60,0x00,0xfc,0xce,0x1b,0x7c,0xff,0xff, //00000fe0 g.......`..ホ.|.. 1371: 0x00,0x0d,0x60,0x00,0xfc,0xc4,0x10,0x2d,0x00,0x0d,0x67,0x2c,0xb0,0x3c,0x00,0x01, //00000ff0 ..`..ト.-..g,ー<.. 1372: 0x67,0x62,0xb0,0x3c,0x00,0x02,0x67,0x6e,0xb0,0x3c,0x00,0x03,0x67,0x00,0x00,0x88, //00001000 gbー<..gnー<..g..芦 1373: 0xb0,0x3c,0x00,0x06,0x67,0x70,0xb0,0x3c,0x00,0x07,0x67,0x00,0x00,0x90,0x1b,0x7c, //00001010 <..gpー<..g....| 1374: 0xff,0xff,0x00,0x0d,0x60,0x00,0xfc,0x92,0x61,0x00,0x01,0x30,0x4a,0x80,0x67,0x10, //00001020 ....`..誕..0J.g. 1375: 0x0c,0x40,0x00,0x01,0x67,0x0a,0x0c,0x40,0x70,0x02,0x67,0x1e,0x60,0x00,0xfc,0x7c, //00001030 .@..g..@p.g.`..| 1376: 0x4a,0x6e,0x0d,0xda,0x66,0x0a,0x1b,0x7c,0x00,0x02,0x00,0x0d,0x60,0x00,0x00,0xa2, //00001040 Jn.レf..|....`..「 1377: 0x1b,0x7c,0x00,0x0a,0x00,0x0d,0x60,0x00,0x00,0x98,0x1b,0x7c,0x00,0x04,0x00,0x0d, //00001050 .|....`....|.... 1378: 0x60,0x00,0x00,0x8e,0x4a,0xae,0x05,0xba,0x66,0xbe,0x4a,0xae,0x05,0xb6,0x66,0xb8, //00001060 `..捌ョ.コfセJョ.カfク 1379: 0x61,0x00,0x00,0xa6,0x60,0xe4,0x2d,0x7c,0xff,0xff,0xff,0xff,0x05,0xb6,0x4a,0xae, //00001070 a..ヲ`.-|.....カJョ 1380: 0x05,0xba,0x67,0x56,0x60,0xba,0x2d,0x7c,0xff,0xff,0xff,0xff,0x05,0xba,0x4a,0xae, //00001080 .コgV`コ-|.....コJョ 1381: 0x05,0xb6,0x67,0x46,0x60,0xaa,0x4a,0xae,0x05,0xb6,0x67,0xa4,0x2d,0x7c,0x00,0x00, //00001090 .カgF`ェJョ.カg、-|.. 1382: 0x00,0x00,0x05,0xb6,0x4a,0xae,0x05,0xba,0x67,0x1a,0x60,0x94,0x4a,0xae,0x05,0xba, //000010a0 ...カJョ.コg.`寧ョ.コ 1383: 0x67,0x8e,0x2d,0x7c,0x00,0x00,0x00,0x00,0x05,0xba,0x4a,0xae,0x05,0xb6,0x67,0x04, //000010b0 g.-|.....コJョ.カg. 1384: 0x60,0x00,0xff,0x7e,0x70,0xf5,0x72,0x32,0x28,0x2e,0x05,0xa8,0x76,0x00,0x4e,0x4f, //000010c0 `..~p.r2(..ィv.NO 1385: 0x4a,0x80,0x66,0x00,0xff,0x54,0x60,0x00,0xff,0x68,0x70,0xf5,0x72,0x32,0x28,0x2e, //000010d0 J.f..T`..hp.r2(. 1386: 0x05,0xa8,0x76,0x01,0x4e,0x4f,0x4a,0x80,0x66,0x00,0xff,0x3e,0x60,0x00,0xff,0x52, //000010e0 .ィv.NOJ.f..>`..R 1387: 0x4a,0x6e,0x05,0xc4,0x67,0x06,0x08,0xed,0x00,0x03,0x00,0x0d,0x4a,0xae,0x05,0xb6, //000010f0 Jn.トg.......Jョ.カ 1388: 0x67,0x06,0x08,0xed,0x00,0x04,0x00,0x0d,0x4a,0xae,0x05,0xba,0x67,0x06,0x08,0xed, //00001100 g.......Jョ.コg... 1389: 0x00,0x06,0x00,0x0d,0x60,0x00,0xfb,0xa2,0x4a,0x6e,0x05,0xac,0x66,0x08,0x4a,0x6e, //00001110 ....`..「Jn.ャf.Jn 1390: 0x05,0xae,0x66,0x28,0x4e,0x75,0x70,0x02,0x4e,0x4f,0x08,0x00,0x00,0x03,0x66,0x0e, //00001120 .ョf(Nup.NO....f. 1391: 0x70,0xf5,0x72,0x30,0x28,0x2e,0x05,0xa8,0x76,0x00,0x4e,0x4f,0x4e,0x75,0x70,0xf5, //00001130 p.r0(..ィv.NONup. 1392: 0x72,0x30,0x28,0x2e,0x05,0xa8,0x76,0x01,0x4e,0x4f,0x4e,0x75,0x70,0xf5,0x72,0x2f, //00001140 r0(..ィv.NONup.r/ 1393: 0x28,0x2e,0x05,0xa8,0x76,0x02,0x4e,0x4f,0x4e,0x75,0x48,0xe7,0x70,0xc0,0x70,0x7f, //00001150 (..ィv.NONuH輛タp. 1394: 0x4e,0x4f,0xb2,0xae,0x0d,0xd6,0x66,0x12,0x24,0x2e,0x0d,0xd2,0x26,0x00,0x96,0x82, //00001160 NOイョ.ヨf.$..メ&.魔 1395: 0x0c,0x83,0x00,0x00,0x00,0x64,0x65,0x00,0x00,0xe2,0x2d,0x40,0x0d,0xd2,0x2d,0x41, //00001170 .....de...-@.メ-A 1396: 0x0d,0xd6,0x72,0x09,0x70,0xf5,0x4e,0x4f,0x02,0x00,0x00,0xc0,0x67,0x06,0x72,0x00, //00001180 .ヨr.p.NO...タg.r. 1397: 0x70,0xf5,0x4e,0x4f,0x20,0x3c,0x00,0x00,0x00,0xf5,0x72,0x24,0x28,0x2e,0x05,0xa8, //00001190 p.NO <....r$(..ィ 1398: 0x4e,0x4f,0x4a,0x80,0x67,0x00,0x00,0x92,0xb0,0xbc,0x00,0x00,0x00,0x08,0x67,0xd2, //000011a0 NOJ.g..腸シ....gメ 1399: 0xb0,0xbc,0x00,0x00,0x00,0x02,0x66,0x00,0x00,0x8a,0x61,0x00,0x07,0x16,0x4a,0x40, //000011b0 ーシ....f..蛎...J@ 1400: 0x67,0xc0,0xb0,0x7c,0x00,0x01,0x66,0x70,0x70,0x0f,0x41,0xee,0x05,0x84,0x10,0xfc, //000011c0 gター|..fpp.A..... 1401: 0xff,0xff,0x51,0xc8,0xff,0xfa,0x61,0x00,0x01,0x26,0x4a,0x80,0x67,0x0c,0x3d,0x7c, //000011d0 ..Qネ..a..&J.g.=| 1402: 0xff,0xff,0x05,0xb2,0x60,0x5c,0x48,0xe7,0x70,0xc0,0x28,0x2e,0x05,0xa8,0x76,0x04, //000011e0 ...イ`\H輛タ(..ィv. 1403: 0x43,0xee,0x05,0xd2,0x74,0x3f,0x72,0x29,0x70,0xf5,0x4e,0x4f,0x4a,0x80,0x67,0x20, //000011f0 C..メt?r)p.NOJ.g 1404: 0x0c,0x80,0x00,0x00,0x00,0x08,0x67,0xe2,0x0c,0x80,0x00,0x00,0x00,0x02,0x66,0x32, //00001200 ......g.......f2 1405: 0x61,0x00,0x06,0xc0,0x4a,0x40,0x67,0xd2,0xb0,0x7c,0x00,0x01,0x66,0x1a,0x60,0xa8, //00001210 a..タJ@gメー|..f.`ィ 1406: 0x08,0x29,0x00,0x07,0x00,0x02,0x67,0x08,0x3d,0x7c,0xff,0xff,0x0d,0xda,0x60,0x06, //00001220 .)....g.=|...レ`. 1407: 0x3d,0x7c,0x00,0x00,0x0d,0xda,0x70,0x01,0x2d,0x40,0x0d,0xdc,0x4c,0xdf,0x03,0x0e, //00001230 =|...レp.-@.ワL゚.. 1408: 0x4e,0x75,0x2d,0x7c,0x00,0x00,0x00,0x00,0x0d,0xd2,0x2d,0x7c,0x00,0x00,0x00,0x00, //00001240 Nu-|.....メ-|.... 1409: 0x0d,0xd6,0x70,0xff,0x4c,0xdf,0x03,0x0e,0x4e,0x75,0x20,0x2e,0x0d,0xdc,0x4c,0xdf, //00001250 .ヨp.L゚..Nu ..ワL゚ 1410: 0x03,0x0e,0x4e,0x75,0x43,0xee,0x05,0xd2,0x2a,0x2e,0x05,0xa4,0x74,0x02,0xe5,0x8a, //00001260 ..NuC..メ*..、t.蜉 1411: 0xea,0xaa,0x76,0x01,0xe5,0x8b,0xea,0xab,0x28,0x2e,0x05,0xa8,0x70,0xf5,0x72,0x21, //00001270 .ェv.蜍.ォ(..ィp.r! 1412: 0x4e,0x4f,0x4a,0x80,0x66,0x76,0x0c,0x91,0x58,0x36,0x38,0x4b,0x66,0x6c,0x26,0x49, //00001280 NOJ.fv.噌68Kfl&I 1413: 0x45,0xee,0x04,0x04,0x7c,0x00,0x7e,0x0e,0x47,0xeb,0x00,0x10,0x4a,0x13,0x67,0x52, //00001290 E...|.~.G...J.gR 1414: 0x0c,0x93,0x48,0x75,0x6d,0x61,0x66,0x4a,0x0c,0xab,0x6e,0x36,0x38,0x6b,0x00,0x04, //000012a0 .滴umafJ.ォn68k.. 1415: 0x66,0x40,0x10,0x2b,0x00,0x08,0x08,0x00,0x00,0x00,0x66,0x36,0x24,0x2b,0x00,0x08, //000012b0 f@.+......f6$+.. 1416: 0x43,0xee,0x00,0x04,0x2a,0x2e,0x05,0xa4,0xe5,0x8a,0xea,0xaa,0x76,0x01,0xe5,0x8b, //000012c0 C...*..、蜉.ェv.蜍 1417: 0xea,0xab,0x28,0x2e,0x05,0xa8,0x70,0xf5,0x72,0x21,0x4e,0x4f,0x4a,0x80,0x66,0x1c, //000012d0 .ォ(..ィp.r!NOJ.f. 1418: 0x43,0xe9,0x00,0x12,0x4a,0x51,0x67,0x0a,0x72,0x04,0x24,0xd9,0x51,0xc9,0xff,0xfc, //000012e0 C...JQg.r.$ルQノ.. 1419: 0x52,0x46,0x51,0xcf,0xff,0xa4,0x70,0x00,0x4e,0x75,0x70,0xff,0x4e,0x75,0x43,0xee, //000012f0 RFQマ.、p.Nup.NuC. 1420: 0x05,0xd2,0x2a,0x2e,0x05,0xa4,0x74,0x02,0xe5,0x8a,0xea,0xaa,0x76,0x01,0xe5,0x8b, //00001300 .メ*..、t.蜉.ェv.蜍 1421: 0xea,0xab,0x28,0x2e,0x05,0xa8,0x70,0xf5,0x72,0x21,0x4e,0x4f,0x4a,0x80,0x66,0xdc, //00001310 .ォ(..ィp.r!NOJ.fワ 1422: 0x0c,0x91,0x58,0x36,0x38,0x4b,0x66,0xd2,0x26,0x49,0x45,0xee,0x04,0x04,0x7c,0x00, //00001320 .噌68Kfメ&IE...|. 1423: 0x7e,0x0e,0x47,0xeb,0x00,0x10,0x4a,0x13,0x67,0x54,0x0c,0x93,0x48,0x75,0x6d,0x61, //00001330 ~.G...J.gT.滴uma 1424: 0x66,0x4c,0x0c,0xab,0x6e,0x36,0x38,0x6b,0x00,0x04,0x66,0x42,0x10,0x2b,0x00,0x08, //00001340 fL.ォn68k..fB.+.. 1425: 0x08,0x00,0x00,0x00,0x66,0x38,0x24,0x2b,0x00,0x08,0x43,0xee,0x00,0x04,0x2a,0x2e, //00001350 ....f8$+..C...*. 1426: 0x05,0xa4,0xea,0xaa,0xe5,0x8a,0x76,0x01,0xe5,0x8b,0xea,0xab,0x28,0x2e,0x05,0xa8, //00001360 .、.ェ蜉v.蜍.ォ(..ィ 1427: 0x70,0xf5,0x72,0x21,0x4e,0x4f,0x4a,0x80,0x66,0x82,0x43,0xe9,0x00,0x12,0x72,0x04, //00001370 p.r!NOJ.f.C...r. 1428: 0x20,0x19,0xb0,0x9a,0x66,0x00,0xff,0x74,0x51,0xc9,0xff,0xf6,0x52,0x46,0x51,0xcf, //00001380 .ー喃..tQノ..RFQマ 1429: 0xff,0xa2,0xbc,0x6e,0x05,0xb4,0x66,0x00,0xff,0x62,0x70,0x00,0x4e,0x75,0x3d,0x7c, //00001390 .「シn.エf..bp.Nu=| 1430: 0x00,0x08,0x05,0xc2,0x3d,0x7c,0x00,0x00,0x05,0xc0,0x4a,0x6e,0x05,0xb2,0x67,0x44, //000013a0 ...ツ=|...タJn.イgD 1431: 0x61,0x00,0xff,0x4c,0x4a,0x80,0x67,0x2c,0x0c,0x80,0xff,0xff,0xff,0xff,0x67,0x2c, //000013b0 a..LJ.g,......g, 1432: 0x0c,0x80,0x00,0x00,0x00,0x08,0x67,0xe8,0x0c,0x80,0x00,0x00,0x00,0x02,0x66,0x00, //000013c0 ......g.......f. 1433: 0xf8,0xe2,0x61,0x00,0x04,0xfe,0x4a,0x40,0x67,0x0a,0x0c,0x40,0x00,0x01,0x67,0xd0, //000013d0 .秣...J@g..@..gミ 1434: 0x60,0x00,0xf8,0xd8,0x3d,0x7c,0x00,0x00,0x05,0xb2,0x67,0x08,0x30,0x3c,0x70,0x07, //000013e0 `..リ=|...イg.0<p. 1435: 0x60,0x00,0xf8,0xc8,0x4a,0x2e,0x05,0xb0,0x66,0x06,0x72,0x21,0x60,0x00,0x00,0x8a, //000013f0 `..ネJ..ーf.r!`..較 1436: 0x72,0x26,0x60,0x00,0x01,0xec,0x3d,0x7c,0x00,0x08,0x05,0xc2,0x3d,0x7c,0xff,0xff, //00001400 &`...=|...ツ=|.. 1437: 0x05,0xc0,0x60,0x0c,0x3d,0x7c,0x00,0x08,0x05,0xc2,0x3d,0x7c,0x00,0x00,0x05,0xc0, //00001410 .タ`.=|...ツ=|...タ 1438: 0x4a,0x6e,0x05,0xc4,0x67,0x08,0x30,0x3c,0x70,0x0d,0x60,0x00,0xf8,0x8e,0x4a,0x6e, //00001420 Jn.トg.0<p.`..捌n 1439: 0x05,0xb2,0x67,0x44,0x61,0x00,0xfe,0xc8,0x4a,0x80,0x67,0x2c,0x0c,0x80,0xff,0xff, //00001430 .イgDa..ネJ.g,.... 1440: 0xff,0xff,0x67,0x2c,0x0c,0x80,0x00,0x00,0x00,0x08,0x67,0xe8,0x0c,0x80,0x00,0x00, //00001440 ..g,......g..... 1441: 0x00,0x02,0x66,0x00,0xf8,0x5e,0x61,0x00,0x04,0x7a,0x4a,0x40,0x67,0x0a,0xb0,0x7c, //00001450 ..f..^a..zJ@g.ー| 1442: 0x00,0x01,0x67,0xd0,0x60,0x00,0xf8,0x54,0x3d,0x7c,0x00,0x00,0x05,0xb2,0x67,0x08, //00001460 ..gミ`..T=|...イg. 1443: 0x30,0x3c,0x70,0x07,0x60,0x00,0xf8,0x44,0x4a,0x2e,0x05,0xb0,0x66,0x04,0x72,0x22, //00001470 0<p.`..DJ..ーf.r" 1444: 0x60,0x06,0x72,0x27,0x60,0x00,0x01,0x6a,0x2d,0x6d,0x00,0x0e,0x05,0x94,0x2d,0x6d, //00001480 `.r'`..j-m....-m 1445: 0x00,0x12,0x05,0x9c,0x70,0x00,0x10,0x2d,0x00,0x01,0xe5,0x88,0x41,0xee,0x05,0x44, //00001490 ...徘..-..蛻A..D 1446: 0xd1,0xc0,0x20,0x50,0x20,0x2d,0x00,0x16,0xd0,0xa8,0x00,0x10,0x2d,0x40,0x05,0x98, //000014a0 ムタ P -..ミィ..-@.. 1447: 0x3c,0x2e,0x05,0xa0,0x24,0x2e,0x05,0x98,0xed,0xaa,0x2e,0x2e,0x05,0x9c,0xed,0xaf, //000014b0 <...$..倆ェ...懦ッ 1448: 0x22,0x6e,0x05,0x94,0x26,0x07,0xb6,0xbc,0x00,0x00,0x01,0x00,0x63,0x06,0x26,0x3c, //000014c0 "n..&.カシ....c.&< 1449: 0x00,0x00,0x01,0x00,0x70,0xf5,0x28,0x2e,0x05,0xa8,0x2a,0x2e,0x05,0xa4,0x4e,0x4f, //000014d0 ....p.(..ィ*..、NO 1450: 0x4a,0x80,0x67,0x00,0x00,0xd2,0xb0,0xbc,0xff,0xff,0xff,0xff,0x67,0x00,0x00,0xea, //000014e0 J.g..メーシ....g... 1451: 0xb0,0xbc,0xff,0xff,0xff,0xfe,0x67,0x00,0x00,0xaa,0xb0,0xbc,0x00,0x00,0x00,0x08, //000014f0 ーシ....g..ェーシ.... 1452: 0x67,0x86,0xb0,0xbc,0x00,0x00,0x00,0x02,0x66,0x00,0xf7,0xa8,0x61,0x00,0x03,0xc4, //00001500 g.ーシ....f..ィa..ト 1453: 0x4a,0x40,0x67,0x00,0xff,0x74,0xb0,0x7c,0x00,0x01,0x67,0x00,0xff,0x6c,0x0c,0x40, //00001510 J@g..tー|..g..l.@ 1454: 0x70,0x07,0x66,0x00,0xf7,0x96,0x0c,0x81,0x00,0x00,0x00,0x22,0x66,0x00,0xf7,0x8c, //00001520 p.f........"f..靴 1455: 0x43,0xee,0x05,0xd2,0x08,0x11,0x00,0x07,0x67,0x00,0xf7,0x80,0x43,0xe9,0x00,0x03, //00001530 ..メ....g...C... 1456: 0x10,0x19,0xe1,0x88,0x10,0x19,0xe1,0x88,0x10,0x19,0xe1,0x88,0x10,0x19,0x2d,0x40, //00001540 ..瘉..瘉..瘉..-@ 1457: 0x0d,0xe0,0x61,0x00,0x03,0x5a,0x4a,0x80,0x67,0x00,0xff,0x2e,0xb0,0xbc,0xff,0xff, //00001550 .濛..ZJ.g...ーシ.. 1458: 0xff,0xff,0x67,0x74,0xb0,0xbc,0xff,0xff,0xff,0xfe,0x67,0x36,0xb0,0xbc,0x00,0x00, //00001560 ..gtーシ....g6ーシ.. 1459: 0x00,0x08,0x67,0xde,0xb0,0xbc,0x00,0x00,0x00,0x02,0x66,0x00,0xf7,0x36,0x61,0x00, //00001570 ..g゙ーシ....f..6a. 1460: 0x03,0x52,0x4a,0x40,0x67,0x00,0xff,0x02,0xb0,0x7c,0x00,0x01,0x67,0xc4,0x67,0x00, //00001580 .RJ@g...ー|..gトg. 1461: 0xf7,0x2a,0x52,0xae,0x05,0xc6,0x53,0x6e,0x05,0xc2,0x66,0x00,0xfe,0xec,0x60,0x00, //00001590 .*Rョ.ニSn.ツf...`. 1462: 0xf7,0x1a,0x52,0xae,0x05,0xc6,0x53,0x6e,0x05,0xc2,0x66,0x00,0xfe,0xdc,0x30,0x3c, //000015a0 ..Rョ.ニSn.ツf..ワ0< 1463: 0x70,0x0c,0x60,0x00,0xf7,0x06,0x20,0x03,0xe1,0x88,0xeb,0xa8,0xd3,0xc0,0xd4,0x83, //000015b0 p.`... .瘉.ィモタヤ. 1464: 0x9e,0x83,0x62,0x00,0xff,0x00,0x4a,0x6e,0x05,0xc0,0x66,0x00,0x01,0x68,0x3d,0x7c, //000015c0 档b...Jn.タf..h=| 1465: 0x00,0x00,0x05,0xbe,0x60,0x00,0xf6,0xe2,0x4a,0x6e,0x05,0xbe,0x66,0x00,0xf6,0xd4, //000015d0 ...セ`..祀n.セf..ヤ 1466: 0x72,0x00,0x70,0xf5,0x4e,0x4f,0x3d,0x7c,0xff,0xff,0x05,0xbe,0x60,0x00,0xfe,0x9a, //000015e0 r.p.NO=|...セ`... 1467: 0x2d,0x6d,0x00,0x0e,0x05,0x94,0x2d,0x6d,0x00,0x12,0x05,0x9c,0x70,0x00,0x10,0x2d, //000015f0 -m....-m...徘..- 1468: 0x00,0x01,0xe5,0x88,0x41,0xee,0x05,0x44,0xd1,0xc0,0x20,0x50,0x20,0x2d,0x00,0x16, //00001600 ..蛻A..Dムタ P -.. 1469: 0xd0,0xa8,0x00,0x10,0x2d,0x40,0x05,0x98,0x3c,0x2e,0x05,0xa0,0x24,0x2e,0x05,0x98, //00001610 ミィ..-@..<...$..倆 1470: 0xed,0xaa,0x26,0x2e,0x05,0x9c,0xed,0xab,0x22,0x6e,0x05,0x94,0x70,0xf5,0x28,0x2e, //00001620 ェ&..懦ォ"n.廃.(. 1471: 0x05,0xa8,0x2a,0x2e,0x05,0xa4,0x4e,0x4f,0x4a,0x80,0x67,0x00,0x00,0xd0,0xb0,0xbc, //00001630 .ィ*..、NOJ.g..ミーシ 1472: 0xff,0xff,0xff,0xff,0x67,0x00,0x00,0xd6,0xb0,0xbc,0xff,0xff,0xff,0xfe,0x67,0x00, //00001640 ....g..ヨーシ....g. 1473: 0x00,0xa8,0xb0,0xbc,0x00,0x00,0x00,0x08,0x67,0x96,0xb0,0xbc,0x00,0x00,0x00,0x02, //00001650 .ィーシ....g眠シ.... 1474: 0x66,0x00,0xf6,0x50,0x61,0x00,0x02,0x6c,0x4a,0x40,0x67,0x84,0xb0,0x7c,0x00,0x01, //00001660 f..Pa..lJ@g┣|.. 1475: 0x67,0x00,0xff,0x7e,0x0c,0x40,0x70,0x07,0x66,0x00,0xf6,0x40,0x0c,0x81,0x00,0x00, //00001670 g..~.@p.f..@.... 1476: 0x00,0x27,0x66,0x00,0xf6,0x36,0x43,0xee,0x05,0xd2,0x08,0x11,0x00,0x07,0x67,0x00, //00001680 .'f..6C..メ....g. 1477: 0xf6,0x2a,0x43,0xe9,0x00,0x03,0x10,0x19,0xe1,0x88,0x10,0x19,0xe1,0x88,0x10,0x19, //00001690 .*C.....瘉..瘉.. 1478: 0xe1,0x88,0x10,0x19,0x2d,0x40,0x0d,0xe0,0x61,0x00,0x02,0x04,0x4a,0x80,0x67,0x00, //000016a0 瘉..-@.濛...J.g. 1479: 0xff,0x40,0xb0,0xbc,0xff,0xff,0xff,0xff,0x67,0x62,0xb0,0xbc,0xff,0xff,0xff,0xfe, //000016b0 .@ーシ....gbーシ.... 1480: 0x67,0x36,0xb0,0xbc,0x00,0x00,0x00,0x08,0x67,0xde,0xb0,0xbc,0x00,0x00,0x00,0x02, //000016c0 g6ーシ....g゙ーシ.... 1481: 0x66,0x00,0xf5,0xe0,0x61,0x00,0x01,0xfc,0x4a,0x40,0x67,0x00,0xff,0x14,0xb0,0x7c, //000016d0 f..濛...J@g...ー| 1482: 0x00,0x01,0x67,0xc4,0x60,0x00,0xf5,0xd4,0x52,0xae,0x05,0xc6,0x53,0x6e,0x05,0xc2, //000016e0 ..gト`..ヤRョ.ニSn.ツ 1483: 0x66,0x00,0xfe,0xfe,0x60,0x00,0xf5,0xc4,0x52,0xae,0x05,0xc6,0x53,0x6e,0x05,0xc2, //000016f0 f...`..トRョ.ニSn.ツ 1484: 0x66,0x00,0xfd,0x86,0x30,0x3c,0x70,0x0c,0x60,0x00,0xf5,0xb0,0x3d,0x7c,0x00,0x00, //00001700 f...0<p.`..ー=|.. 1485: 0x05,0xbe,0x4a,0x6e,0x05,0xc0,0x66,0x1c,0x60,0x00,0xf5,0x9e,0x4a,0x6e,0x05,0xbe, //00001710 .セJn.タf.`..曷n.セ 1486: 0x66,0x00,0xf5,0x90,0x72,0x00,0x70,0xf5,0x4e,0x4f,0x3d,0x7c,0xff,0xff,0x05,0xbe, //00001720 f..甚.p.NO=|...セ 1487: 0x60,0x00,0xfe,0xbe,0x3d,0x7c,0x00,0x08,0x05,0xc2,0x2d,0x6d,0x00,0x0e,0x05,0x94, //00001730 `..セ=|...ツ-m.... 1488: 0x2d,0x6d,0x00,0x12,0x05,0x9c,0x70,0x00,0x10,0x2d,0x00,0x01,0xe5,0x88,0x41,0xee, //00001740 -m...徘..-..蛻A. 1489: 0x05,0x44,0xd1,0xc0,0x20,0x50,0x20,0x2d,0x00,0x16,0xd0,0xa8,0x00,0x10,0x2d,0x40, //00001750 .Dムタ P -..ミィ..-@ 1490: 0x05,0x98,0x3a,0x2e,0x05,0xa0,0x24,0x2e,0x05,0x98,0xeb,0xaa,0x2e,0x2e,0x05,0x9c, //00001760 ..:...$..俯ェ...罹 1491: 0xeb,0xaf,0x7c,0x04,0xeb,0xae,0x28,0x2e,0x05,0xa8,0x2a,0x2e,0x05,0xa4,0x24,0x6e, //00001770 ッ|..ョ(..ィ*..、$n 1492: 0x05,0x94,0xbe,0x86,0x64,0x04,0x26,0x07,0x60,0x02,0x26,0x06,0x22,0x6e,0x05,0xce, //00001780 .叛.d.&.`.&."n.ホ 1493: 0x72,0x21,0x70,0xf5,0x4e,0x4f,0x4a,0x80,0x67,0x00,0x00,0xc8,0xb0,0xbc,0xff,0xff, //00001790 r!p.NOJ.g..ネーシ.. 1494: 0xff,0xff,0x67,0x00,0x00,0xe4,0xb0,0xbc,0xff,0xff,0xff,0xfe,0x67,0x00,0x00,0xa0, //000017a0 ..g..莢シ....g... 1495: 0xb0,0xbc,0x00,0x00,0x00,0x08,0x67,0x00,0xff,0x7c,0xb0,0xbc,0x00,0x00,0x00,0x02, //000017b0 ーシ....g..|ーシ.... 1496: 0x66,0x00,0xf4,0xf0,0x61,0x00,0x01,0x0c,0x4a,0x40,0x67,0x00,0xff,0x68,0xb0,0x7c, //000017c0 f...a...J@g..hー| 1497: 0x00,0x01,0x67,0x00,0xff,0x60,0x0c,0x40,0x70,0x07,0x66,0x00,0xf4,0xde,0x43,0xee, //000017d0 ..g..`.@p.f..゙C. 1498: 0x05,0xd2,0x08,0x11,0x00,0x07,0x67,0x00,0xf4,0xd2,0x43,0xe9,0x00,0x03,0x10,0x19, //000017e0 .メ....g..メC..... 1499: 0xe1,0x88,0x10,0x19,0xe1,0x88,0x10,0x19,0xe1,0x88,0x10,0x19,0x2d,0x40,0x0d,0xe0, //000017f0 瘉..瘉..瘉..-@.濛 1500: 0x61,0x00,0x00,0xac,0x4a,0x80,0x67,0x00,0xfc,0x70,0xb0,0xbc,0xff,0xff,0xff,0xff, //00001800 ..ャJ.g..pーシ.... 1501: 0x67,0x76,0xb0,0xbc,0xff,0xff,0xff,0xfe,0x67,0x34,0xb0,0xbc,0x00,0x00,0x00,0x08, //00001810 gvーシ....g4ーシ.... 1502: 0x67,0xde,0xb0,0xbc,0x00,0x00,0x00,0x02,0x66,0x00,0xf4,0x88,0x61,0x00,0x00,0xa4, //00001820 g゙ーシ....f...a..、 1503: 0x4a,0x40,0x67,0xcc,0xb0,0x7c,0x00,0x01,0x67,0xc6,0x60,0x00,0xf4,0x7e,0x52,0xae, //00001830 J@gフー|..gニ`..~Rョ 1504: 0x05,0xc6,0x53,0x6e,0x05,0xc2,0x66,0x00,0xfe,0xec,0x60,0x00,0xf4,0x6e,0x52,0xae, //00001840 .ニSn.ツf...`..nRョ 1505: 0x05,0xc6,0x53,0x6e,0x05,0xc2,0x66,0x00,0xfc,0x30,0x30,0x3c,0x70,0x0c,0x60,0x00, //00001850 .ニSn.ツf..00<p.`. 1506: 0xf4,0x5a,0x20,0x03,0xe1,0x88,0xeb,0xa8,0x32,0x00,0x53,0x41,0xb5,0x09,0x66,0x30, //00001860 .Z .瘉.ィ2.SAオ.f0 1507: 0x51,0xc9,0xff,0xfa,0xd3,0xc0,0xd4,0x83,0x9e,0x83,0x62,0x00,0xff,0x06,0x3d,0x7c, //00001870 Qノ..モタヤ.档b...=| 1508: 0x00,0x00,0x05,0xbe,0x60,0x00,0xf4,0x32,0x4a,0x6e,0x05,0xbe,0x66,0x00,0xf4,0x24, //00001880 ...セ`..2Jn.セf..$ 1509: 0x72,0x00,0x70,0xf5,0x4e,0x4f,0x3d,0x7c,0xff,0xff,0x05,0xbe,0x60,0x00,0xfe,0x96, //00001890 r.p.NO=|...セ`... 1510: 0x3d,0x7c,0x00,0x00,0x05,0xbe,0x30,0x3c,0x70,0x0b,0x60,0x00,0xf4,0x0e,0x48,0xe7, //000018a0 =|...セ0<p.`...H. 1511: 0x10,0x40,0x20,0x2e,0x0d,0xe0,0x43,0xee,0x05,0xd2,0x32,0xfc,0x00,0x00,0x32,0xfc, //000018b0 .@ ..澆..メ2...2. 1512: 0x00,0x04,0x22,0xc0,0x43,0xee,0x05,0xd2,0x76,0x08,0x61,0x64,0x4c,0xdf,0x02,0x08, //000018c0 .."タC..メv.adL゚.. 1513: 0x4e,0x75,0x48,0xe7,0x40,0x40,0x70,0xf5,0x72,0x2c,0x28,0x2e,0x05,0xa8,0x76,0x0e, //000018d0 NuH蹇@p.r,(..ィv. 1514: 0x43,0xee,0x05,0xd2,0x4e,0x4f,0x4a,0x80,0x66,0x18,0x42,0x41,0x12,0x29,0x00,0x02, //000018e0 C..メNOJ.f.BA.).. 1515: 0xe3,0x49,0x43,0xfa,0xf3,0x5a,0x70,0x00,0x30,0x31,0x10,0x00,0x4c,0xdf,0x02,0x02, //000018f0 紵C..Zp.01..L゚.. 1516: 0x4e,0x75,0x30,0x3c,0x70,0x0c,0x4c,0xdf,0x02,0x02,0x4e,0x75,0x70,0x00,0x10,0x2d, //00001900 Nu0<p.L゚..Nup..- 1517: 0x00,0x01,0xe5,0x88,0x41,0xee,0x05,0x44,0xd1,0xc0,0x2b,0x48,0x00,0x12,0x20,0x50, //00001910 ..蛻A..Dムタ+H.. P 1518: 0x1b,0x68,0x00,0x0a,0x00,0x0d,0x60,0x00,0xf3,0x90,0x07,0x00,0x00,0x00,0x00,0x00, //00001920 .h....`......... 1519: 0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee,0x43,0xed, //00001930 NU..H躋p&IE..獷. 1520: 0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0,0x61,0x28, //00001940 ..r..レQノ..C...a( 1521: 0x4a,0x80,0x66,0x1a,0x22,0x4b,0x72,0x05,0x70,0xf5,0x4e,0x4f,0x0c,0x80,0xff,0xff, //00001950 J.f."Kr.p.NO.... 1522: 0xff,0xff,0x67,0x0a,0x61,0x4c,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x70,0xff, //00001960 ..g.aLL゚.JN]Nup. 1523: 0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x48,0xe7,0x68,0x00,0x32,0x3c,0x00,0x01, //00001970 L゚.JN]NuH輊.2<.. 1524: 0x72,0x01,0x70,0xf5,0x4e,0x4f,0x4a,0x80,0x67,0x06,0x51,0xca,0xff,0xf4,0x60,0x1a, //00001980 r.p.NOJ.g.Qハ..`. 1525: 0x48,0x44,0xeb,0x0c,0x89,0x29,0x00,0x01,0x72,0x03,0x70,0xf5,0x4e,0x4f,0x4a,0x80, //00001990 HD...)..r.p.NOJ. 1526: 0x66,0x08,0x70,0x00,0x4c,0xdf,0x00,0x16,0x4e,0x75,0x70,0xff,0x4c,0xdf,0x00,0x16, //000019a0 f.p.L゚..Nup.L゚.. 1527: 0x4e,0x75,0x43,0xed,0xff,0xff,0x72,0x06,0x70,0xf5,0x4e,0x4f,0x4a,0x80,0x66,0x1a, //000019b0 NuC...r.p.NOJ.f. 1528: 0x43,0xed,0xff,0xfe,0x72,0x07,0x70,0xf5,0x4e,0x4f,0x4a,0x80,0x66,0x0c,0x10,0x2d, //000019c0 C...r.p.NOJ.f..- 1529: 0xff,0xfe,0x48,0x40,0x10,0x2d,0xff,0xff,0x4e,0x75,0x70,0xff,0x4e,0x75,0x0d,0x0a, //000019d0 ..H@.-..Nup.Nu.. 1530: 0x53,0x43,0x53,0x49,0x20,0x44,0x49,0x53,0x4b,0x20,0x44,0x52,0x49,0x56,0x45,0x52, //000019e0 SCSI DISK DRIVER 1531: 0x20,0x66,0x6f,0x72,0x20,0x58,0x36,0x38,0x30,0x30,0x30,0x20,0x76,0x65,0x72,0x73, //000019f0 for X68000 vers 1532: 0x69,0x6f,0x6e,0x20,0x31,0x2e,0x30,0x34,0x0d,0x0a,0x43,0x6f,0x70,0x79,0x72,0x69, //00001a00 ion 1.04..Copyri 1533: 0x67,0x68,0x74,0x20,0x31,0x39,0x39,0x30,0x2d,0x39,0x32,0x20,0x53,0x48,0x41,0x52, //00001a10 ght 1990-92 SHAR 1534: 0x50,0x2f,0x46,0x69,0x72,0x73,0x74,0x20,0x43,0x6c,0x61,0x73,0x73,0x20,0x54,0x65, //00001a20 P/First Class Te 1535: 0x63,0x68,0x6e,0x6f,0x6c,0x6f,0x67,0x79,0x0d,0x0a,0x00,0x00,0x00,0x00,0x00,0x00, //00001a30 chnology........ 1536: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001a40 ................ 1537: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001a50 ................ 1538: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001a60 ................ 1539: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001a70 ................ 1540: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001a80 ................ 1541: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001a90 ................ 1542: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001aa0 ................ 1543: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ab0 ................ 1544: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ac0 ................ 1545: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ad0 ................ 1546: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ae0 ................ 1547: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001af0 ................ 1548: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b00 ................ 1549: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b10 ................ 1550: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b20 ................ 1551: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b30 ................ 1552: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b40 ................ 1553: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b50 ................ 1554: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b60 ................ 1555: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b70 ................ 1556: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b80 ................ 1557: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b90 ................ 1558: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ba0 ................ 1559: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001bb0 ................ 1560: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001bc0 ................ 1561: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001bd0 ................ 1562: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001be0 ................ 1563: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001bf0 ................ 1564: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c00 ................ 1565: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c10 ................ 1566: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c20 ................ 1567: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c30 ................ 1568: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c40 ................ 1569: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c50 ................ 1570: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c60 ................ 1571: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c70 ................ 1572: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c80 ................ 1573: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c90 ................ 1574: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ca0 ................ 1575: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001cb0 ................ 1576: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001cc0 ................ 1577: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001cd0 ................ 1578: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ce0 ................ 1579: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001cf0 ................ 1580: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d00 ................ 1581: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d10 ................ 1582: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d20 ................ 1583: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d30 ................ 1584: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d40 ................ 1585: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d50 ................ 1586: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d60 ................ 1587: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d70 ................ 1588: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d80 ................ 1589: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d90 ................ 1590: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001da0 ................ 1591: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001db0 ................ 1592: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001dc0 ................ 1593: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001dd0 ................ 1594: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001de0 ................ 1595: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001df0 ................ 1596: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e00 ................ 1597: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e10 ................ 1598: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e20 ................ 1599: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e30 ................ 1600: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e40 ................ 1601: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e50 ................ 1602: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e60 ................ 1603: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e70 ................ 1604: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e80 ................ 1605: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e90 ................ 1606: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ea0 ................ 1607: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001eb0 ................ 1608: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ec0 ................ 1609: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ed0 ................ 1610: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ee0 ................ 1611: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ef0 ................ 1612: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f00 ................ 1613: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f10 ................ 1614: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f20 ................ 1615: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f30 ................ 1616: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f40 ................ 1617: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f50 ................ 1618: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f60 ................ 1619: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f70 ................ 1620: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f80 ................ 1621: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f90 ................ 1622: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001fa0 ................ 1623: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001fb0 ................ 1624: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001fc0 ................ 1625: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001fd0 ................ 1626: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001fe0 ................ 1627: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ff0 ................ 1628: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002000 ................ 1629: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002010 ................ 1630: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002020 ................ 1631: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002030 ................ 1632: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002040 ................ 1633: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002050 ................ 1634: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002060 ................ 1635: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002070 ................ 1636: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002080 ................ 1637: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002090 ................ 1638: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000020a0 ................ 1639: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000020b0 ................ 1640: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000020c0 ................ 1641: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000020d0 ................ 1642: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000020e0 ................ 1643: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000020f0 ................ 1644: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002100 ................ 1645: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002110 ................ 1646: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002120 ................ 1647: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002130 ................ 1648: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002140 ................ 1649: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002150 ................ 1650: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002160 ................ 1651: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002170 ................ 1652: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002180 ................ 1653: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002190 ................ 1654: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000021a0 ................ 1655: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000021b0 ................ 1656: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000021c0 ................ 1657: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000021d0 ................ 1658: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000021e0 ................ 1659: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000021f0 ................ 1660: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002200 ................ 1661: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002210 ................ 1662: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002220 ................ 1663: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002230 ................ 1664: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002240 ................ 1665: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002250 ................ 1666: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002260 ................ 1667: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002270 ................ 1668: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002280 ................ 1669: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002290 ................ 1670: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000022a0 ................ 1671: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000022b0 ................ 1672: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000022c0 ................ 1673: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000022d0 ................ 1674: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000022e0 ................ 1675: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000022f0 ................ 1676: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002300 ................ 1677: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002310 ................ 1678: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002320 ................ 1679: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002330 ................ 1680: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002340 ................ 1681: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002350 ................ 1682: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002360 ................ 1683: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002370 ................ 1684: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002380 ................ 1685: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002390 ................ 1686: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000023a0 ................ 1687: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000023b0 ................ 1688: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000023c0 ................ 1689: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000023d0 ................ 1690: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000023e0 ................ 1691: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000023f0 ................ 1692: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002400 ................ 1693: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002410 ................ 1694: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002420 ................ 1695: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002430 ................ 1696: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002440 ................ 1697: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002450 ................ 1698: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002460 ................ 1699: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002470 ................ 1700: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002480 ................ 1701: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002490 ................ 1702: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000024a0 ................ 1703: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000024b0 ................ 1704: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000024c0 ................ 1705: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000024d0 ................ 1706: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000024e0 ................ 1707: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000024f0 ................ 1708: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002500 ................ 1709: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002510 ................ 1710: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002520 ................ 1711: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002530 ................ 1712: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002540 ................ 1713: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002550 ................ 1714: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002560 ................ 1715: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002570 ................ 1716: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002580 ................ 1717: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002590 ................ 1718: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000025a0 ................ 1719: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000025b0 ................ 1720: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000025c0 ................ 1721: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000025d0 ................ 1722: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000025e0 ................ 1723: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000025f0 ................ 1724: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002600 ................ 1725: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002610 ................ 1726: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002620 ................ 1727: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002630 ................ 1728: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002640 ................ 1729: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002650 ................ 1730: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002660 ................ 1731: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002670 ................ 1732: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002680 ................ 1733: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002690 ................ 1734: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000026a0 ................ 1735: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000026b0 ................ 1736: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000026c0 ................ 1737: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000026d0 ................ 1738: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000026e0 ................ 1739: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000026f0 ................ 1740: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002700 ................ 1741: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002710 ................ 1742: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002720 ................ 1743: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002730 ................ 1744: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002740 ................ 1745: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002750 ................ 1746: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002760 ................ 1747: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002770 ................ 1748: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002780 ................ 1749: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002790 ................ 1750: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000027a0 ................ 1751: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000027b0 ................ 1752: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000027c0 ................ 1753: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000027d0 ................ 1754: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000027e0 ................ 1755: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000027f0 ................ 1756: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002800 ................ 1757: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002810 ................ 1758: 0x48,0xe7,0x08,0x00,0x70,0xf5,0x72,0x0a,0x4e,0x4f,0x0c,0x80,0x00,0x00,0x00,0x04, //00002820 H...p.r.NO...... 1759: 0x64,0x36,0x61,0x00,0x00,0xce,0x41,0xfa,0x01,0x1c,0x08,0x04,0x00,0x00,0x67,0x08, //00002830 d6a..ホA.......g. 1760: 0x20,0xbc,0x00,0xe9,0x60,0x20,0x60,0x0c,0x08,0x04,0x00,0x01,0x67,0x1a,0x20,0xbc, //00002840 シ.饒 `.....g. シ 1761: 0x00,0xea,0x00,0x00,0x70,0x80,0x22,0x3c,0x00,0x00,0x01,0xf5,0x43,0xfa,0x00,0xfa, //00002850 ....p."<....C... 1762: 0x4e,0x4f,0x4c,0xdf,0x00,0x10,0x4e,0x75,0x70,0x00,0x4c,0xdf,0x00,0x10,0x4e,0x75, //00002860 NOL゚..Nup.L゚..Nu 1763: 0x48,0xe7,0x00,0xa2,0x78,0x00,0x41,0xf9,0x00,0xfc,0x00,0x00,0x61,0x00,0x00,0x9e, //00002870 H..「x.A.....a..曷 1764: 0x4a,0x80,0x66,0x16,0x0c,0xa8,0x53,0x43,0x53,0x49,0x00,0x24,0x66,0x0c,0x0c,0x68, //00002880 .f..ィSCSI.$f..h 1765: 0x49,0x4e,0x00,0x28,0x66,0x04,0x08,0xc4,0x00,0x00,0x41,0xf9,0x00,0xea,0x00,0x20, //00002890 IN.(f..ト..A.... 1766: 0x61,0x7a,0x4a,0x80,0x66,0x16,0x0c,0xa8,0x53,0x43,0x53,0x49,0x00,0x24,0x66,0x0c, //000028a0 azJ.f..ィSCSI.$f. 1767: 0x0c,0x68,0x45,0x58,0x00,0x28,0x66,0x04,0x08,0xc4,0x00,0x01,0x13,0xfc,0x00,0x31, //000028b0 .hEX.(f..ト.....1 1768: 0x00,0xe8,0xe0,0x0d,0x0c,0x39,0x00,0x56,0x00,0xed,0x00,0x6f,0x67,0x18,0x13,0xfc, //000028c0 .鞨..9.V...og... 1769: 0x00,0x56,0x00,0xed,0x00,0x6f,0x13,0xfc,0x00,0x07,0x00,0xed,0x00,0x70,0x13,0xfc, //000028d0 .V...o.......p.. 1770: 0x00,0x00,0x00,0xed,0x00,0x71,0x08,0x04,0x00,0x00,0x66,0x08,0x08,0xf9,0x00,0x03, //000028e0 .....q....f..... 1771: 0x00,0xed,0x00,0x70,0x13,0xfc,0x00,0x00,0x00,0xe8,0xe0,0x0d,0x4c,0xdf,0x45,0x00, //000028f0 ...p.....鞨.L゚E. 1772: 0x4e,0x75,0x61,0x00,0xff,0x6c,0x08,0x39,0x00,0x03,0x00,0xed,0x00,0x70,0x66,0x06, //00002900 Nua..l.9.....pf. 1773: 0x08,0x84,0x00,0x01,0x4e,0x75,0x08,0x84,0x00,0x00,0x4e,0x75,0x2c,0x4f,0x43,0xfa, //00002910 ....Nu....Nu,OC. 1774: 0x00,0x28,0x24,0x79,0x00,0x00,0x00,0x08,0x23,0xc9,0x00,0x00,0x00,0x08,0x20,0x10, //00002920 .($y....#ノ.... . 1775: 0x08,0x00,0x00,0x00,0x66,0x12,0xb0,0xbc,0x00,0x20,0x00,0x00,0x65,0x0a,0x23,0xca, //00002930 ....f.ーシ. ..e.#ハ 1776: 0x00,0x00,0x00,0x08,0x70,0x00,0x4e,0x75,0x2e,0x4e,0x23,0xca,0x00,0x00,0x00,0x08, //00002940 ....p.Nu.N#ハ.... 1777: 0x70,0xff,0x4e,0x75,0x00,0xe9,0x60,0x20,0x48,0xe7,0x50,0x62,0xb2,0xbc,0x00,0x00, //00002950 p.Nu.饒 H躅bイシ.. 1778: 0x00,0x10,0x65,0x18,0xb2,0xbc,0x00,0x00,0x00,0x20,0x65,0x40,0xb2,0xbc,0x00,0x00, //00002960 ..e.イシ... e@イシ.. 1779: 0x00,0x40,0x65,0x0e,0xb2,0xbc,0x00,0x00,0x00,0x20,0x65,0x30,0x45,0xfa,0x00,0x3a, //00002970 .@e.イシ... e0E..: 1780: 0x60,0x16,0x92,0xbc,0x00,0x00,0x00,0x20,0x45,0xfa,0x00,0x6e,0x60,0x0a,0x92,0xbc, //00002980 `.直... E..n`.直 1781: 0x00,0x00,0x00,0x40,0x45,0xfa,0x00,0xe2,0xe5,0x89,0x2c,0x7a,0xff,0xb8,0x22,0x32, //00002990 ...@E..粢.,z.ク"2 1782: 0x10,0x00,0xd5,0xc1,0x4e,0x92,0x4c,0xdf,0x46,0x0a,0x4e,0x75,0x70,0xff,0x4c,0xdf, //000029a0 ..ユチN鱈゚F.Nup.L゚ 1783: 0x46,0x0a,0x4e,0x75,0x70,0xff,0x4e,0x75,0x00,0x00,0x0a,0x08,0x00,0x00,0x0b,0x08, //000029b0 F.Nup.Nu........ 1784: 0x00,0x00,0x0a,0xe8,0x00,0x00,0x0c,0x16,0x00,0x00,0x01,0x56,0x00,0x00,0x01,0x00, //000029c0 ...........V.... 1785: 0x00,0x00,0x0d,0x18,0x00,0x00,0x0d,0x64,0x00,0x00,0x0d,0xb0,0x00,0x00,0x0d,0xfa, //000029d0 .......d...ー.... 1786: 0x00,0x00,0x0e,0x0e,0x00,0x00,0x0c,0xce,0x00,0x00,0x0c,0x84,0xff,0xff,0xff,0xfc, //000029e0 .......ホ........ 1787: 0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0xfc,0x00,0x00,0x01,0x76,0x00,0x00,0x03,0x00, //000029f0 ...........v.... 1788: 0x00,0x00,0x03,0x6e,0x00,0x00,0x04,0xde,0x00,0x00,0x0f,0x4e,0x00,0x00,0x10,0x0a, //00002a00 ...n...゙...N.... 1789: 0x00,0x00,0x03,0xe0,0x00,0x00,0x04,0x4c,0x00,0x00,0x04,0xca,0x00,0x00,0x02,0x12, //00002a10 .......L...ハ.... 1790: 0x00,0x00,0x02,0x64,0x00,0x00,0x0f,0x6c,0x00,0x00,0x01,0xc4,0x00,0x00,0x05,0xe2, //00002a20 ...d...l...ト.... 1791: 0x00,0x00,0x0f,0x8a,0x00,0x00,0x05,0x60,0x00,0x00,0x05,0xa0,0x00,0x00,0x02,0xb6, //00002a30 .......`.......カ 1792: 0x00,0x00,0x05,0x20,0xff,0xff,0xff,0xbc,0xff,0xff,0xff,0xbc,0xff,0xff,0xff,0xbc, //00002a40 ... ...シ...シ...シ 1793: 0x00,0x00,0x06,0x2c,0x00,0x00,0x06,0x80,0x00,0x00,0x06,0xce,0x00,0x00,0x07,0x1a, //00002a50 ...,.......ホ.... 1794: 0xff,0xff,0xff,0xbc,0xff,0xff,0xff,0xbc,0xff,0xff,0xff,0xbc,0xff,0xff,0xff,0xbc, //00002a60 ...シ...シ...シ...シ 1795: 0xff,0xff,0xff,0xbc,0xff,0xff,0xff,0xbc,0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c, //00002a70 ...シ...シ...<...< 1796: 0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c, //00002a80 ...<...<...<...< 1797: 0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c, //00002a90 ...<...<...<...< 1798: 0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c, //00002aa0 ...<...<...<...< 1799: 0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c,0x48,0xe7,0x00,0x02,0x2c,0x7a,0xfe,0x96, //00002ab0 ...<...<H...,z.. 1800: 0x10,0x2e,0x00,0x09,0x08,0x00,0x00,0x05,0x66,0x38,0x10,0x2e,0x00,0x0b,0x08,0x00, //00002ac0 ........f8...... 1801: 0x00,0x07,0x67,0xec,0x02,0x00,0x00,0x07,0xb0,0x3c,0x00,0x00,0x66,0x1a,0x61,0x00, //00002ad0 ..g.....ー<..f.a. 1802: 0x06,0x94,0x48,0x40,0x66,0x06,0x4c,0xdf,0x40,0x00,0x4e,0x75,0x4a,0x40,0x67,0x08, //00002ae0 .禰@f.L゚@.NuJ@g. 1803: 0x48,0x40,0x4c,0xdf,0x40,0x00,0x4e,0x75,0x10,0x2e,0x00,0x0b,0x4c,0xdf,0x40,0x00, //00002af0 H@L゚@.Nu....L゚@. 1804: 0x4e,0x75,0x61,0x00,0x08,0xbc,0x70,0xff,0x4c,0xdf,0x40,0x00,0x4e,0x75,0x48,0xe7, //00002b00 Nua..シp.L゚@.NuH. 1805: 0x00,0x02,0x2c,0x7a,0xfe,0x40,0x10,0x2e,0x00,0x09,0x08,0x00,0x00,0x05,0x66,0x3c, //00002b10 ..,z.@........f< 1806: 0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xec,0x02,0x00,0x00,0x07,0x02,0x00, //00002b20 ........g....... 1807: 0x00,0x07,0xb0,0x3c,0x00,0x01,0x66,0x1a,0x61,0x00,0x06,0x46,0x48,0x40,0x66,0x06, //00002b30 ..ー<..f.a..FH@f. 1808: 0x4c,0xdf,0x40,0x00,0x4e,0x75,0x4a,0x40,0x67,0x08,0x48,0x40,0x4c,0xdf,0x40,0x00, //00002b40 L゚@.NuJ@g.H@L゚@. 1809: 0x4e,0x75,0x10,0x2e,0x00,0x0b,0x4c,0xdf,0x40,0x00,0x4e,0x75,0x61,0x00,0x08,0x62, //00002b50 Nu....L゚@.Nua..b 1810: 0x70,0xff,0x4c,0xdf,0x40,0x00,0x4e,0x75,0x12,0x00,0x00,0x00,0x00,0x00,0x4e,0x55, //00002b60 p.L゚@.Nu......NU 1811: 0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee,0x43,0xed,0xff,0xf0, //00002b70 ..H躋p&IE..獷... 1812: 0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0,0x13,0x43,0x00,0x04, //00002b80 r..レQノ..C....C.. 1813: 0x61,0x00,0x0e,0xb8,0x4a,0x80,0x66,0x00,0x05,0xd2,0x22,0x4b,0x61,0x00,0x0a,0xe8, //00002b90 a..クJ.f..メ"Ka... 1814: 0x0c,0x80,0xff,0xff,0xff,0xff,0x67,0x00,0x05,0xc2,0x61,0x00,0x0e,0xea,0x4c,0xdf, //00002ba0 ......g..ツa..鶚゚ 1815: 0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x03,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0, //00002bb0 .JN]Nu......NU.. 1816: 0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee,0x43,0xed,0xff,0xf0,0x72,0x05, //00002bc0 H躋p&IE..獷...r. 1817: 0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0,0x13,0x43,0x00,0x04,0x61,0x00, //00002bd0 .レQノ..C....C..a. 1818: 0x0e,0x6a,0x4a,0x80,0x66,0x00,0x05,0x84,0x22,0x4b,0x61,0x00,0x0a,0x9a,0x0c,0x80, //00002be0 .jJ.f..."Ka..... 1819: 0xff,0xff,0xff,0xff,0x67,0x00,0x05,0x74,0x61,0x00,0x0e,0x9c,0x4c,0xdf,0x0e,0x4a, //00002bf0 ....g..ta..廰゚.J 1820: 0x4e,0x5d,0x4e,0x75,0x1a,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7, //00002c00 N]Nu......NU..H躋 1821: 0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda, //00002c10 p&IE..獷...r..レ 1822: 0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0,0x13,0x43,0x00,0x04,0x13,0x42,0x00,0x02, //00002c20 Qノ..C....C...B.. 1823: 0x61,0x00,0x0e,0x18,0x4a,0x80,0x66,0x00,0x05,0x32,0x22,0x4b,0x61,0x00,0x0a,0x48, //00002c30 a...J.f..2"Ka..H 1824: 0x0c,0x80,0xff,0xff,0xff,0xff,0x67,0x00,0x05,0x22,0x61,0x00,0x0e,0x4a,0x4c,0xdf, //00002c40 ......g.."a..JL゚ 1825: 0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x15,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0, //00002c50 .JN]Nu......NU.. 1826: 0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee,0x43,0xed,0xff,0xf0,0x72,0x05, //00002c60 H躋p&IE..獷...r. 1827: 0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0,0x13,0x43,0x00,0x04,0x13,0x42, //00002c70 .レQノ..C....C...B 1828: 0x00,0x01,0x61,0x00,0x0d,0xc6,0x4a,0x80,0x66,0x00,0x04,0xe0,0x22,0x4b,0x61,0x00, //00002c80 ..a..ニJ.f..."Ka. 1829: 0x09,0xac,0x0c,0x80,0xff,0xff,0xff,0xff,0x67,0x00,0x04,0xd0,0x61,0x00,0x0d,0xf8, //00002c90 .ャ......g..ミa... 1830: 0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x07,0x00,0x00,0x00,0x00,0x00,0x4e,0x55, //00002ca0 L゚.JN]Nu......NU 1831: 0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee,0x43,0xed,0xff,0xf0, //00002cb0 ..H躋p&IE..獷... 1832: 0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0,0x61,0x00,0x0d,0x7c, //00002cc0 r..レQノ..C...a..| 1833: 0x4a,0x80,0x66,0x00,0x04,0x96,0x22,0x4b,0x61,0x00,0x09,0x62,0x0c,0x80,0xff,0xff, //00002cd0 J.f..."Ka..b.... 1834: 0xff,0xff,0x67,0x00,0x04,0x86,0x61,0x00,0x0d,0xae,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d, //00002ce0 ..g...a..ョL゚.JN] 1835: 0x4e,0x75,0x08,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70, //00002cf0 Nu......NU..H躋p 1836: 0x26,0x49,0x45,0xfa,0xff,0xee,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9, //00002d00 &IE..獷...r..レQノ 1837: 0xff,0xfc,0x2c,0x02,0x43,0xed,0xff,0xf0,0x13,0x46,0x00,0x03,0xe0,0x8e,0x13,0x46, //00002d10 ..,.C....F..燻.F 1838: 0x00,0x02,0xe0,0x8e,0x13,0x46,0x00,0x01,0x13,0x43,0x00,0x04,0x61,0x00,0x0d,0x1c, //00002d20 ..燻.F...C..a... 1839: 0x4a,0x80,0x66,0x00,0x04,0x36,0xe1,0x8b,0xeb,0xab,0x22,0x4b,0x61,0x00,0xfd,0xd0, //00002d30 J.f..6瘠.ォ"Ka..ミ 1840: 0x0c,0x80,0xff,0xff,0xff,0xff,0x67,0x00,0x04,0x22,0x0c,0x80,0xff,0xff,0xff,0xfe, //00002d40 ......g.."...... 1841: 0x67,0x00,0x01,0x54,0x61,0x00,0x0d,0x40,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75, //00002d50 g..Ta..@L゚.JN]Nu 1842: 0x0a,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49, //00002d60 ......NU..H躋p&I 1843: 0x45,0xfa,0xff,0xee,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc, //00002d70 E..獷...r..レQノ.. 1844: 0x2c,0x02,0x43,0xed,0xff,0xf0,0x13,0x46,0x00,0x03,0xe0,0x8e,0x13,0x46,0x00,0x02, //00002d80 ,.C....F..燻.F.. 1845: 0xe0,0x8e,0x13,0x46,0x00,0x01,0x13,0x43,0x00,0x04,0x61,0x00,0x0c,0xae,0x4a,0x80, //00002d90 燻.F...C..a..ョJ. 1846: 0x66,0x00,0x03,0xc8,0xe1,0x8b,0xeb,0xab,0x22,0x4b,0x61,0x00,0xfd,0x0c,0x0c,0x80, //00002da0 f..ネ瘠.ォ"Ka..... 1847: 0xff,0xff,0xff,0xff,0x67,0x00,0x03,0xb4,0x0c,0x80,0xff,0xff,0xff,0xfe,0x67,0x00, //00002db0 ....g..エ......g. 1848: 0x00,0xe6,0x61,0x00,0x0c,0xd2,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x28,0x00, //00002dc0 .訛..メL゚.JN]Nu(. 1849: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70, //00002dd0 ........NU..H躋p 1850: 0x26,0x49,0x43,0xed,0xff,0xf0,0x45,0xfa,0xff,0xe6,0x72,0x09,0x12,0xda,0x51,0xc9, //00002de0 &IC...E..誡..レQノ 1851: 0xff,0xfc,0x2c,0x03,0x43,0xed,0xff,0xf0,0x23,0x42,0x00,0x02,0x13,0x43,0x00,0x08, //00002df0 ..,.C...#B...C.. 1852: 0xe0,0x8b,0x13,0x43,0x00,0x07,0x61,0x00,0x0c,0x42,0x4a,0x80,0x66,0x00,0x03,0x5c, //00002e00 煖.C..a..BJ.f..\. 1853: 0x26,0x06,0xe1,0x8b,0xeb,0xab,0x22,0x4b,0x61,0x00,0xfc,0xf4,0x0c,0x80,0xff,0xff, //00002e10 &.瘠.ォ"Ka....... 1854: 0xff,0xff,0x67,0x00,0x03,0x46,0x0c,0x80,0xff,0xff,0xff,0xfe,0x67,0x78,0x61,0x00, //00002e20 ..g..F......gxa. 1855: 0x0c,0x66,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x2a,0x00,0x00,0x00,0x00,0x00, //00002e30 .fL゚.JN]Nu*..... 1856: 0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x45,0xfa,0xff,0xec, //00002e40 ....NU..H躋pE... 1857: 0x26,0x49,0x43,0xed,0xff,0xf0,0x72,0x09,0x12,0xda,0x51,0xc9,0xff,0xfc,0x2c,0x03, //00002e50 &IC...r..レQノ..,. 1858: 0x43,0xed,0xff,0xf0,0x23,0x42,0x00,0x02,0x13,0x43,0x00,0x08,0xe0,0x8b,0x13,0x43, //00002e60 C...#B...C..煖.C 1859: 0x00,0x07,0x61,0x00,0x0b,0xd6,0x4a,0x80,0x66,0x00,0x02,0xf0,0x26,0x06,0xe1,0x8b, //00002e70 ..a..ヨJ.f...&.瘠 1860: 0xeb,0xab,0x22,0x4b,0x61,0x00,0xfc,0x32,0x0c,0x80,0xff,0xff,0xff,0xff,0x67,0x00, //00002e80 .ォ"Ka..2......g. 1861: 0x02,0xda,0x0c,0x80,0xff,0xff,0xff,0xfe,0x67,0x0c,0x61,0x00,0x0b,0xfa,0x4c,0xdf, //00002e90 .レ......g.a...L゚ 1862: 0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x61,0x00,0x0b,0xee,0x4a,0x80,0x66,0x02,0x70,0xfe, //00002ea0 .JN]Nua..珵.f.p. 1863: 0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x2f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002eb0 L゚.JN]Nu/....... 1864: 0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x45,0xfa,0xff,0xec,0x60,0x80, //00002ec0 ..NU..H躋pE...`. 1865: 0x04,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x45,0xfa, //00002ed0 ......NU..H躋pE. 1866: 0xff,0xf0,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed, //00002ee0 ..C...r..レQノ..C. 1867: 0xff,0xf0,0x13,0x43,0x00,0x04,0xe0,0x8b,0x13,0x43,0x00,0x03,0x61,0x00,0x0b,0x4c, //00002ef0 ...C..煖.C..a..L 1868: 0x4a,0x80,0x66,0x00,0x02,0x66,0x61,0x00,0x0b,0x8e,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d, //00002f00 J.f..fa..鮫゚.JN] 1869: 0x4e,0x75,0x1e,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70, //00002f10 Nu......NU..H躋p 1870: 0x45,0xfa,0xff,0xf0,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc, //00002f20 E...C...r..レQノ.. 1871: 0x43,0xed,0xff,0xf0,0x02,0x03,0x00,0x01,0x13,0x43,0x00,0x04,0x61,0x00,0x0b,0x0c, //00002f30 C........C..a... 1872: 0x4a,0x80,0x66,0x00,0x02,0x26,0x61,0x00,0x0b,0x4e,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d, //00002f40 J.f..&a..NL゚.JN] 1873: 0x4e,0x75,0x1b,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70, //00002f50 Nu......NU..H躋p 1874: 0x45,0xfa,0xff,0xf0,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc, //00002f60 E...C...r..レQノ.. 1875: 0x43,0xed,0xff,0xf0,0x02,0x03,0x00,0x03,0x13,0x43,0x00,0x04,0x61,0x00,0x0a,0xcc, //00002f70 C........C..a..フ 1876: 0x4a,0x80,0x66,0x00,0x01,0xe6,0x61,0x00,0x0b,0x0e,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d, //00002f80 J.f..訛...L゚.JN] 1877: 0x4e,0x75,0xc1,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70, //00002f90 Nuチ.....NU..H躋p 1878: 0x45,0xfa,0xff,0xf0,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc, //00002fa0 E...C...r..レQノ.. 1879: 0x43,0xed,0xff,0xf0,0x02,0x03,0x00,0x01,0x13,0x43,0x00,0x04,0x76,0x06,0x61,0x00, //00002fb0 C........C..v.a. 1880: 0x0a,0x8a,0x4a,0x80,0x66,0x00,0x01,0xa4,0x61,0x00,0x0a,0xcc,0x4c,0xdf,0x0e,0x4a, //00002fc0 .開.f..、a..フL゚.J 1881: 0x4e,0x5d,0x4e,0x75,0x0b,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7, //00002fd0 N]Nu......NU..H躋 1882: 0x52,0x70,0x45,0xfa,0xff,0xf0,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9, //00002fe0 pE...C...r..レQノ 1883: 0xff,0xfc,0x2c,0x02,0x43,0xed,0xff,0xf0,0x13,0x46,0x00,0x03,0xe0,0x8e,0x13,0x46, //00002ff0 ..,.C....F..燻.F 1884: 0x00,0x02,0xe0,0x8e,0x13,0x46,0x00,0x01,0x61,0x00,0x0a,0x40,0x4a,0x80,0x66,0x00, //00003000 ..燻.F..a..@J.f. 1885: 0x01,0x5a,0x61,0x00,0x0a,0x82,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0xc2,0x00, //00003010 .Za...L゚.JN]Nuツ. 1886: 0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa, //00003020 ....NU..H躋p&IE. 1887: 0xff,0xee,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x22,0x03, //00003030 .獷...r..レQノ..". 1888: 0x43,0xed,0xff,0xf0,0x13,0x41,0x00,0x05,0x76,0x06,0x61,0x00,0x09,0xfe,0x4a,0x80, //00003040 C....A..v.a...J. 1889: 0x66,0x00,0x01,0x18,0x26,0x01,0x22,0x4b,0x61,0x00,0x05,0xe2,0x0c,0x80,0xff,0xff, //00003050 f...&."Ka....... 1890: 0xff,0xff,0x67,0x00,0x01,0x06,0x61,0x00,0x0a,0x2e,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d, //00003060 ..g...a...L゚.JN] 1891: 0x4e,0x75,0x06,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70, //00003070 Nu......NU..H躋p 1892: 0x45,0xfa,0xff,0xf0,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc, //00003080 E...C...r..レQノ.. 1893: 0x43,0xed,0xff,0xf0,0x2c,0x02,0x13,0x46,0x00,0x03,0xe0,0x8e,0x13,0x46,0x00,0x02, //00003090 C...,..F..燻.F.. 1894: 0xe0,0x8e,0x13,0x46,0x00,0x01,0x13,0x43,0x00,0x04,0x61,0x00,0x09,0x9e,0x4a,0x80, //000030a0 燻.F...C..a..曷. 1895: 0x66,0x00,0x00,0xb8,0x61,0x00,0x09,0xe0,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75, //000030b0 f..クa..澂゚.JN]Nu 1896: 0x07,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x45,0xfa, //000030c0 ......NU..H躋pE. 1897: 0xff,0xf0,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed, //000030d0 ..C...r..レQノ..C. 1898: 0xff,0xf0,0x2c,0x02,0x13,0x46,0x00,0x03,0xe0,0x8e,0x13,0x46,0x00,0x02,0xe0,0x8e, //000030e0 ..,..F..燻.F..燻 1899: 0x13,0x46,0x00,0x01,0x13,0x43,0x00,0x04,0x61,0x00,0x09,0x50,0x4a,0x80,0x66,0x6a, //000030f0 .F...C..a..PJ.fj 1900: 0x61,0x00,0x09,0x94,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x0e,0x00,0x00,0x00, //00003100 a..猫゚.JN]Nu.... 1901: 0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee, //00003110 ..NU..H躋p&IE..獷 1902: 0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0, //00003120 ...r..レQノ..C... 1903: 0x2c,0x02,0x13,0x46,0x00,0x03,0xe0,0x8e,0x13,0x46,0x00,0x02,0xe0,0x8e,0x13,0x46, //00003130 ,..F..燻.F..燻.F 1904: 0x00,0x01,0x13,0x43,0x00,0x04,0x61,0x00,0x09,0x02,0x4a,0x80,0x66,0x1c,0x76,0x04, //00003140 ...C..a...J.f.v. 1905: 0x22,0x4b,0x61,0x00,0x04,0xe8,0x0c,0x80,0xff,0xff,0xff,0xff,0x67,0x0c,0x61,0x00, //00003150 "Ka.........g.a. 1906: 0x09,0x36,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x70,0xff,0x4c,0xdf,0x0e,0x4a, //00003160 .6L゚.JN]Nup.L゚.J 1907: 0x4e,0x5d,0x4e,0x75,0x2f,0x0b,0x47,0xfa,0x00,0xd8,0x61,0x38,0x26,0x5f,0x4e,0x75, //00003170 N]Nu/.G..リa8&_Nu 1908: 0x2f,0x0b,0x47,0xfa,0x01,0xa8,0x61,0x2c,0x48,0xe7,0xc0,0x00,0x10,0x39,0x00,0xe8, //00003180 /.G..ィa,H鄲..9.鞨 1909: 0xe0,0x0b,0xe8,0x08,0x0c,0x00,0x00,0x0e,0x64,0x12,0x4e,0x7a,0x00,0x02,0x22,0x00, //00003190 .......d.Nz..". 1910: 0x08,0xc0,0x00,0x0b,0x4e,0x7b,0x00,0x02,0x4e,0x7b,0x10,0x02,0x4c,0xdf,0x00,0x03, //000031a0 .タ..N{..N{..L゚.. 1911: 0x26,0x5f,0x4e,0x75,0x48,0xe7,0x00,0x60,0x10,0x2e,0x00,0x0b,0x02,0x00,0x00,0x07, //000031b0 &_NuH..`........ 1912: 0x1d,0x40,0x00,0x11,0x20,0x03,0x1d,0x40,0x00,0x1d,0xe0,0x88,0x1d,0x40,0x00,0x1b, //000031c0 .@.. ..@..煦.@.. 1913: 0xe0,0x88,0x1d,0x40,0x00,0x19,0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xf6, //000031d0 煦.@..........g. 1914: 0x45,0xf9,0x00,0xe8,0x40,0x40,0x15,0x7c,0x00,0xff,0x00,0x00,0x35,0x7c,0x00,0x00, //000031e0 E..錙@.|....5|.. 1915: 0x00,0x1a,0x15,0x7c,0x00,0x80,0x00,0x04,0x15,0x7c,0x00,0x04,0x00,0x06,0x41,0xee, //000031f0 ...|.....|....A. 1916: 0x00,0x15,0x25,0x48,0x00,0x14,0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xf6, //00003200 ..%H..........g. 1917: 0x1d,0x7c,0x00,0x80,0x00,0x05,0x4e,0x93,0x4a,0x80,0x66,0x26,0x08,0x2e,0x00,0x03, //00003210 .|....N笛.f&.... 1918: 0x00,0x09,0x66,0x12,0x08,0x2e,0x00,0x04,0x00,0x09,0x67,0xf0,0x08,0xee,0x00,0x04, //00003220 ..f.......g..... 1919: 0x00,0x09,0x70,0x00,0x60,0x0c,0x08,0xee,0x00,0x03,0x00,0x09,0x70,0xfd,0x60,0x02, //00003230 ..p.`.......p.`. 1920: 0x70,0xff,0x25,0x7c,0x00,0xe9,0x60,0x01,0x00,0x14,0x4c,0xdf,0x06,0x00,0x4e,0x75, //00003240 p.%|.饒...L゚..Nu 1921: 0x48,0xe7,0x7c,0x40,0x15,0x7c,0x00,0x31,0x00,0x05,0x28,0x03,0xb6,0xbc,0x00,0x00, //00003250 H轎@.|.1..(.カシ.. 1922: 0x01,0x00,0x63,0x08,0x2a,0x3c,0x00,0x00,0x01,0x00,0x60,0x02,0x2a,0x03,0x25,0x49, //00003260 ..c.*<....`.*.%I 1923: 0x00,0x0c,0x35,0x45,0x00,0x0a,0x08,0x2e,0x00,0x03,0x00,0x09,0x66,0x00,0x00,0x98, //00003270 ..5E........f... 1924: 0x08,0x2e,0x00,0x00,0x00,0x0d,0x67,0xee,0x08,0x2e,0x00,0x03,0x00,0x09,0x66,0x00, //00003280 ......g.......f. 1925: 0x00,0x86,0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xec,0x70,0x00,0x10,0x2e, //00003290 ..........g.p... 1926: 0x00,0x19,0xe1,0x88,0x10,0x2e,0x00,0x1b,0xe1,0x88,0x10,0x2e,0x00,0x1d,0x22,0x04, //000032a0 ..瘉....瘉....". 1927: 0x92,0x80,0x70,0x00,0x30,0x2a,0x00,0x0a,0x24,0x05,0x94,0x80,0x92,0x82,0x67,0x08, //000032b0 逐p.0*..$.楳窒g. 1928: 0xd3,0xaa,0x00,0x0c,0x93,0x6a,0x00,0x0a,0x14,0xbc,0xff,0xff,0x15,0x7c,0x00,0x80, //000032c0 モェ..屠...シ...|.. 1929: 0x00,0x07,0x4e,0x71,0x4e,0x71,0x4e,0x71,0x4e,0x71,0x4e,0x71,0x08,0x2e,0x00,0x03, //000032d0 ..NqNqNqNqNq.... 1930: 0x00,0x09,0x66,0x32,0x08,0x2e,0x00,0x04,0x00,0x09,0x66,0x06,0x08,0x12,0x00,0x07, //000032e0 ..f2......f..... 1931: 0x67,0xea,0x08,0x2a,0x00,0x01,0x00,0x01,0x66,0x00,0xff,0x7c,0x4a,0x2a,0x00,0x01, //000032f0 g..*....f..|J*.. 1932: 0x66,0x18,0x4a,0x6a,0x00,0x0a,0x66,0x12,0xd3,0xc5,0x98,0x85,0x96,0x85,0x66,0x00, //00003300 f.Jj..f.モナ..妹f. 1933: 0xff,0x4c,0x70,0x00,0x60,0x10,0x70,0xfd,0x60,0x06,0x70,0xfe,0x60,0x02,0x70,0xff, //00003310 .Lp.`.p.`.p.`.p. 1934: 0x15,0x7c,0x00,0x10,0x00,0x07,0x4c,0xdf,0x02,0x3e,0x4e,0x75,0x48,0xe7,0x7c,0x40, //00003320 .|....L゚.>NuH轎@ 1935: 0x15,0x7c,0x00,0xb1,0x00,0x05,0xb6,0xbc,0x00,0x00,0x01,0x00,0x63,0x08,0x2a,0x3c, //00003330 .|.ア..カシ....c.*< 1936: 0x00,0x00,0x01,0x00,0x60,0x02,0x2a,0x03,0x25,0x49,0x00,0x0c,0x35,0x45,0x00,0x0a, //00003340 ....`.*.%I..5E.. 1937: 0x08,0x2e,0x00,0x03,0x00,0x09,0x66,0x52,0x08,0x2e,0x00,0x00,0x00,0x0d,0x66,0xf0, //00003350 ......fR......f. 1938: 0x14,0xbc,0xff,0xff,0x15,0x7c,0x00,0x80,0x00,0x07,0x4e,0x71,0x4e,0x71,0x4e,0x71, //00003360 .シ...|....NqNqNq 1939: 0x4e,0x71,0x4e,0x71,0x08,0x2e,0x00,0x03,0x00,0x09,0x66,0x2e,0x08,0x2e,0x00,0x04, //00003370 NqNq......f..... 1940: 0x00,0x09,0x66,0x06,0x08,0x12,0x00,0x07,0x67,0xea,0x08,0x2a,0x00,0x01,0x00,0x01, //00003380 ..f.....g..*.... 1941: 0x66,0xbe,0x4a,0x2a,0x00,0x01,0x66,0x16,0x4a,0x6a,0x00,0x0a,0x66,0x10,0xd3,0xc5, //00003390 fセJ*..f.Jj..f.モナ 1942: 0x98,0x85,0x96,0x85,0x66,0x90,0x70,0x00,0x60,0x10,0x70,0xfd,0x60,0x06,0x70,0xfe, //000033a0 ..妹f壬.`.p.`.p. 1943: 0x60,0x02,0x70,0xff,0x15,0x7c,0x00,0x10,0x00,0x07,0x4c,0xdf,0x02,0x3e,0x4e,0x75, //000033b0 `.p..|....L゚.>Nu 1944: 0x48,0xe7,0x40,0x42,0x2c,0x7a,0xf5,0x8e,0x1d,0x7c,0x00,0x90,0x00,0x03,0x10,0x39, //000033c0 H蹇B,z...|.....9 1945: 0x00,0xed,0x00,0x6f,0x0c,0x00,0x00,0x56,0x67,0x3a,0x13,0xfc,0x00,0x31,0x00,0xe8, //000033d0 ...o...Vg:...1.鞨 1946: 0xe0,0x0d,0xbd,0xfc,0x00,0xe9,0x60,0x20,0x66,0x0a,0x13,0xfc,0x00,0x07,0x00,0xed, //000033e0 .ス..饒 f....... 1947: 0x00,0x70,0x60,0x08,0x13,0xfc,0x00,0x0f,0x00,0xed,0x00,0x70,0x13,0xfc,0x00,0x00, //000033f0 .p`........p.... 1948: 0x00,0xed,0x00,0x71,0x13,0xfc,0x00,0x56,0x00,0xed,0x00,0x6f,0x13,0xfc,0x00,0x00, //00003400 ...q...V...o.... 1949: 0x00,0xe8,0xe0,0x0d,0x10,0x39,0x00,0xed,0x00,0x70,0x02,0x00,0x00,0x07,0x1d,0x40, //00003410 .鞨..9...p.....@ 1950: 0x00,0x01,0x70,0x00,0x1d,0x40,0x00,0x05,0x1d,0x40,0x00,0x11,0x1d,0x40,0x00,0x19, //00003420 ..p..@...@...@.. 1951: 0x1d,0x40,0x00,0x1b,0x1d,0x40,0x00,0x1d,0x1d,0x40,0x00,0x17,0x70,0x80,0xbd,0xfc, //00003430 .@...@...@..p.ス. 1952: 0x00,0xe9,0x60,0x20,0x66,0x04,0x72,0x6c,0x60,0x06,0x22,0x3c,0x00,0x00,0x00,0xf6, //00003440 .饒 f.rl`."<.... 1953: 0x43,0xfa,0x00,0x38,0x4e,0x4f,0x1d,0x7c,0x00,0x10,0x00,0x03,0x1d,0x7c,0x00,0x00, //00003450 C..8NO.|.....|.. 1954: 0x00,0x0b,0x70,0x02,0x61,0x00,0x06,0x58,0x1d,0x7c,0x00,0x10,0x00,0x05,0x70,0x05, //00003460 ..p.a..X.|....p. 1955: 0x61,0x00,0x06,0x4c,0x1d,0x7c,0x00,0x00,0x00,0x05,0x20,0x3c,0x00,0x00,0x9c,0x40, //00003470 a..L.|.... <..廖 1956: 0x61,0x00,0x06,0x3c,0x4c,0xdf,0x42,0x02,0x4e,0x75,0x48,0xe7,0xc0,0x02,0x2c,0x7a, //00003480 a..<L゚B.NuH鄲.,z 1957: 0xf4,0xc4,0x10,0x2e,0x00,0x09,0x1d,0x40,0x00,0x09,0x4c,0xdf,0x40,0x03,0x4e,0x73, //00003490 .ト.....@..L゚@.Ns 1958: 0x48,0xe7,0x09,0x02,0x2c,0x7a,0xf4,0xae,0x1d,0x7c,0x00,0x00,0x00,0x11,0x10,0x2e, //000034a0 H...,z.ョ.|...... 1959: 0x00,0x0d,0x02,0x00,0x00,0xf8,0x66,0xf6,0x1d,0x7c,0x00,0x60,0x00,0x05,0x60,0x18, //000034b0 ......f..|.`..`. 1960: 0x48,0xe7,0x09,0x02,0x2c,0x7a,0xf4,0x8e,0x1d,0x7c,0x00,0x00,0x00,0x11,0x10,0x2e, //000034c0 H...,z...|...... 1961: 0x00,0x0d,0x02,0x00,0x00,0xf8,0x66,0xf6,0x02,0x44,0x00,0x07,0x10,0x3c,0x00,0x01, //000034d0 ......f..D...<.. 1962: 0xe9,0x28,0x09,0x39,0x00,0xed,0x00,0x71,0x66,0x0c,0x80,0x2e,0x00,0x01,0x1d,0x7c, //000034e0 .(.9...qf......| 1963: 0x00,0x10,0x00,0x03,0x60,0x06,0x1d,0x7c,0x00,0x00,0x00,0x03,0x1d,0x40,0x00,0x17, //000034f0 ....`..|.....@.. 1964: 0x30,0x3c,0x09,0xc4,0x1d,0x40,0x00,0x1b,0xe0,0x48,0x1d,0x40,0x00,0x19,0x1d,0x7c, //00003500 0<.ト.@..潯.@...| 1965: 0x00,0x03,0x00,0x1d,0x1d,0x6e,0x00,0x09,0x00,0x09,0x1d,0x7c,0x00,0x20,0x00,0x05, //00003510 .....n.....|. .. 1966: 0x70,0x01,0x61,0x00,0x05,0x9a,0x10,0x2e,0x00,0x09,0x66,0x08,0x1d,0x7c,0x00,0x05, //00003520 p.a.......f..|.. 1967: 0x00,0x0d,0x66,0xf2,0x10,0x2e,0x00,0x0d,0x08,0x00,0x00,0x07,0x67,0x9a,0x10,0x2e, //00003530 ..f.........g... 1968: 0x00,0x09,0x67,0xf0,0xb0,0x3c,0x00,0x04,0x67,0x26,0x1d,0x40,0x00,0x09,0xb0,0x3c, //00003540 ..g.ー<..g&.@..ー< 1969: 0x00,0x10,0x67,0x0c,0x48,0x40,0x10,0x2e,0x00,0x0b,0x4c,0xdf,0x40,0x90,0x4e,0x75, //00003550 ..g.H@....L゚@侵u 1970: 0x70,0x00,0x4c,0xdf,0x40,0x90,0x4e,0x75,0x70,0xff,0x4c,0xdf,0x40,0x90,0x4e,0x75, //00003560 p.L゚@侵up.L゚@侵u 1971: 0x70,0x01,0x61,0x00,0x05,0x4a,0x1d,0x7c,0x00,0x00,0x00,0x17,0x20,0x3c,0x00,0x00, //00003570 p.a..J.|.... <.. 1972: 0x02,0x58,0x1d,0x40,0x00,0x1d,0xe0,0x88,0x1d,0x40,0x00,0x1b,0xe0,0x88,0x1d,0x40, //00003580 .X.@..煦.@..煦.@ 1973: 0x00,0x19,0x1d,0x7c,0x00,0x04,0x00,0x09,0x70,0x02,0x61,0x00,0x05,0x22,0x10,0x2e, //00003590 ...|....p.a..".. 1974: 0x00,0x09,0x67,0xfa,0x1d,0x40,0x00,0x09,0xb0,0x3c,0x00,0x04,0x67,0x08,0xb0,0x3c, //000035a0 ..g..@..ー<..g.ー< 1975: 0x00,0x10,0x67,0xac,0x60,0x9e,0x08,0x2e,0x00,0x05,0x00,0x0d,0x66,0xf8,0x1d,0x6e, //000035b0 ..gャ`.......f..n 1976: 0x00,0x09,0x00,0x09,0x08,0x2e,0x00,0x07,0x00,0x0d,0x66,0x94,0x60,0x86,0x48,0xe7, //000035c0 ..........f覗.H. 1977: 0x10,0x02,0x2c,0x7a,0xf3,0x80,0x10,0x11,0x02,0x00,0x00,0xe0,0x0c,0x00,0x00,0x00, //000035d0 ..,z............ 1978: 0x67,0x0e,0xb0,0x3c,0x00,0x20,0x67,0x0c,0xb0,0x3c,0x00,0xa0,0x67,0x0a,0x60,0x0a, //000035e0 g.ー<. g.ー<..g.`. 1979: 0x76,0x06,0x60,0x06,0x76,0x0a,0x60,0x02,0x76,0x0c,0x10,0x2e,0x00,0x09,0x08,0x00, //000035f0 v.`.v.`.v....... 1980: 0x00,0x05,0x66,0x2c,0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xec,0x02,0x00, //00003600 ..f,........g... 1981: 0x00,0x07,0x0c,0x00,0x00,0x02,0x66,0x0e,0x61,0x00,0x02,0xa6,0x48,0x40,0x66,0x06, //00003610 ......f.a..ヲH@f. 1982: 0x4c,0xdf,0x40,0x08,0x4e,0x75,0x10,0x2e,0x00,0x0b,0x4c,0xdf,0x40,0x08,0x4e,0x75, //00003620 L゚@.Nu....L゚@.Nu 1983: 0x61,0x00,0xfd,0x8e,0x70,0xff,0x4c,0xdf,0x40,0x08,0x4e,0x75,0x48,0xe7,0x00,0x02, //00003630 a..姿.L゚@.NuH... 1984: 0x2c,0x7a,0xf3,0x12,0x10,0x2e,0x00,0x09,0x08,0x00,0x00,0x05,0x66,0x2c,0x10,0x2e, //00003640 ,z..........f,.. 1985: 0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xec,0x02,0x00,0x00,0x07,0xb0,0x3c,0x00,0x00, //00003650 ......g.....ー<.. 1986: 0x66,0x0e,0x61,0x00,0x01,0x66,0x48,0x40,0x66,0x06,0x4c,0xdf,0x40,0x00,0x4e,0x75, //00003660 f.a..fH@f.L゚@.Nu 1987: 0x10,0x2e,0x00,0x0b,0x4c,0xdf,0x40,0x00,0x4e,0x75,0x61,0x00,0xfd,0x44,0x70,0xff, //00003670 ....L゚@.Nua..Dp. 1988: 0x4c,0xdf,0x40,0x00,0x4e,0x75,0x48,0xe7,0x00,0x02,0x2c,0x7a,0xf2,0xc8,0x10,0x2e, //00003680 L゚@.NuH...,z.ネ.. 1989: 0x00,0x09,0x08,0x00,0x00,0x05,0x66,0x2c,0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07, //00003690 ......f,........ 1990: 0x67,0xec,0x02,0x00,0x00,0x07,0xb0,0x3c,0x00,0x01,0x66,0x0e,0x61,0x00,0x01,0x9c, //000036a0 g.....ー<..f.a..廩 1991: 0x48,0x40,0x66,0x06,0x4c,0xdf,0x40,0x00,0x4e,0x75,0x10,0x2e,0x00,0x0b,0x4c,0xdf, //000036b0 @f.L゚@.Nu....L゚ 1992: 0x40,0x00,0x4e,0x75,0x61,0x00,0xfc,0xfa,0x70,0xff,0x4c,0xdf,0x40,0x00,0x4e,0x75, //000036c0 @.Nua...p.L゚@.Nu 1993: 0x48,0xe7,0x10,0x02,0x2c,0x7a,0xf2,0x7e,0x10,0x2e,0x00,0x09,0x08,0x00,0x00,0x05, //000036d0 H...,z.~........ 1994: 0x66,0x2e,0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xec,0x02,0x00,0x00,0x07, //000036e0 f.........g..... 1995: 0xb0,0x3c,0x00,0x03,0x66,0x10,0x76,0x01,0x61,0x00,0x02,0x06,0x48,0x40,0x66,0x06, //000036f0 ー<..f.v.a...H@f. 1996: 0x4c,0xdf,0x40,0x08,0x4e,0x75,0x10,0x2e,0x00,0x0b,0x4c,0xdf,0x40,0x08,0x4e,0x75, //00003700 L゚@.Nu....L゚@.Nu 1997: 0x61,0x00,0xfc,0xae,0x70,0xff,0x4c,0xdf,0x40,0x08,0x4e,0x75,0x48,0xe7,0x10,0x02, //00003710 a..ョp.L゚@.NuH... 1998: 0x2c,0x7a,0xf2,0x32,0x10,0x2e,0x00,0x09,0x08,0x00,0x00,0x05,0x66,0x2e,0x10,0x2e, //00003720 ,z.2........f... 1999: 0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xec,0x02,0x00,0x00,0x07,0xb0,0x3c,0x00,0x07, //00003730 ......g.....ー<.. 2000: 0x66,0x10,0x76,0x01,0x61,0x00,0x01,0xba,0x48,0x40,0x66,0x06,0x4c,0xdf,0x40,0x08, //00003740 f.v.a..コH@f.L゚@. 2001: 0x4e,0x75,0x10,0x2e,0x00,0x0b,0x4c,0xdf,0x40,0x08,0x4e,0x75,0x61,0x00,0xfc,0x62, //00003750 Nu....L゚@.Nua..b 2002: 0x70,0xff,0x4c,0xdf,0x40,0x08,0x4e,0x75,0x48,0xe7,0x10,0x02,0x2c,0x7a,0xf1,0xe6, //00003760 p.L゚@.NuH...,z.. 2003: 0x10,0x2e,0x00,0x09,0x08,0x00,0x00,0x05,0x66,0x2c,0x10,0x2e,0x00,0x0b,0x08,0x00, //00003770 ........f,...... 2004: 0x00,0x07,0x67,0xec,0x02,0x00,0x00,0x07,0xb0,0x3c,0x00,0x06,0x66,0x0e,0x76,0x01, //00003780 ..g.....ー<..f.v. 2005: 0x61,0x38,0x48,0x40,0x66,0x06,0x4c,0xdf,0x40,0x08,0x4e,0x75,0x10,0x2e,0x00,0x0b, //00003790 a8H@f.L゚@.Nu.... 2006: 0x4c,0xdf,0x40,0x08,0x4e,0x75,0x61,0x00,0xfc,0x18,0x70,0xff,0x4c,0xdf,0x40,0x08, //000037a0 L゚@.Nua...p.L゚@. 2007: 0x4e,0x75,0x48,0xe7,0x00,0x02,0x2c,0x7a,0xf1,0x9c,0x70,0x00,0x10,0x2e,0x00,0x0b, //000037b0 NuH...,z.徘..... 2008: 0x4c,0xdf,0x40,0x00,0x4e,0x75,0x70,0x04,0x4e,0x75,0x48,0xe7,0x10,0x40,0x20,0x03, //000037c0 L゚@.Nup.NuH..@ . 2009: 0x1d,0x40,0x00,0x1d,0xe0,0x88,0x1d,0x40,0x00,0x1b,0xe0,0x88,0x1d,0x40,0x00,0x19, //000037d0 .@..煦.@..煦.@.. 2010: 0x10,0x2e,0x00,0x0b,0x02,0x00,0x00,0x07,0x1d,0x40,0x00,0x11,0x10,0x2e,0x00,0x0b, //000037e0 .........@...... 2011: 0x08,0x00,0x00,0x07,0x67,0xf6,0x1d,0x6e,0x00,0x09,0x00,0x09,0x1d,0x7c,0x00,0x80, //000037f0 ....g..n.....|.. 2012: 0x00,0x05,0x10,0x2e,0x00,0x0d,0x02,0x00,0x00,0xf0,0xb0,0x3c,0x00,0x70,0x67,0x06, //00003800 ..........ー<.pg. 2013: 0xb0,0x3c,0x00,0xb0,0x66,0xec,0x4a,0x2e,0x00,0x09,0x66,0x10,0x08,0x2e,0x00,0x01, //00003810 ー<.ーf.J...f..... 2014: 0x00,0x0d,0x66,0xf2,0x1d,0x59,0x00,0x15,0x53,0x83,0x66,0xea,0x10,0x2e,0x00,0x09, //00003820 ..f..Y..Sデ..... 2015: 0x67,0xfa,0x1d,0x40,0x00,0x09,0xb0,0x3c,0x00,0x10,0x67,0x06,0x4c,0xdf,0x02,0x08, //00003830 g..@..ー<..g.L゚.. 2016: 0x4e,0x75,0x70,0x00,0x4c,0xdf,0x02,0x08,0x4e,0x75,0x48,0xe7,0x10,0x40,0x10,0x2e, //00003840 Nup.L゚..NuH..@.. 2017: 0x00,0x0b,0x02,0x00,0x00,0x07,0x1d,0x40,0x00,0x11,0x20,0x03,0x1d,0x40,0x00,0x1d, //00003850 .......@.. ..@.. 2018: 0xe0,0x88,0x1d,0x40,0x00,0x1b,0xe0,0x88,0x1d,0x40,0x00,0x19,0x1d,0x6e,0x00,0x09, //00003860 煦.@..煦.@...n.. 2019: 0x00,0x09,0x1d,0x7c,0x00,0x80,0x00,0x05,0x10,0x2e,0x00,0x0d,0x02,0x00,0x00,0xf0, //00003870 ...|............ 2020: 0xb0,0x3c,0x00,0x70,0x67,0x06,0xb0,0x3c,0x00,0xb0,0x66,0xec,0x4a,0x2e,0x00,0x09, //00003880 ー<.pg.ー<.ーf.J... 2021: 0x66,0x10,0x08,0x2e,0x00,0x00,0x00,0x0d,0x66,0xf2,0x12,0xee,0x00,0x15,0x53,0x83, //00003890 f.......f.....Sデ 2022: 0x66,0xea,0x10,0x2e,0x00,0x09,0x67,0xfa,0x1d,0x40,0x00,0x09,0xb0,0x3c,0x00,0x10, //000038a0 .....g..@..ー<.. 2023: 0x67,0x06,0x4c,0xdf,0x02,0x08,0x4e,0x75,0x70,0x00,0x4c,0xdf,0x02,0x08,0x4e,0x75, //000038b0 g.L゚..Nup.L゚..Nu 2024: 0x48,0xe7,0x10,0x40,0x10,0x2e,0x00,0x0b,0x02,0x00,0x00,0x07,0x1d,0x40,0x00,0x11, //000038c0 H..@.........@.. 2025: 0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xf6,0x1d,0x59,0x00,0x17,0x1d,0x7c, //000038d0 ........g..Y...| 2026: 0x00,0xec,0x00,0x05,0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x66,0xf6,0x1d,0x7c, //000038e0 ............f..| 2027: 0x00,0xcc,0x00,0x05,0x53,0x83,0x66,0xcc,0x70,0x00,0x4c,0xdf,0x02,0x08,0x4e,0x75, //000038f0 .フ..Sデフp.L゚..Nu 2028: 0x48,0xe7,0x10,0x40,0x10,0x2e,0x00,0x0b,0x02,0x00,0x00,0x07,0x1d,0x40,0x00,0x11, //00003900 H..@.........@.. 2029: 0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xf6,0x1d,0x7c,0x00,0xec,0x00,0x05, //00003910 ........g..|.... 2030: 0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x66,0xf6,0x12,0xee,0x00,0x17,0x1d,0x7c, //00003920 ........f......| 2031: 0x00,0xcc,0x00,0x05,0x53,0x83,0x66,0xcc,0x70,0x00,0x4c,0xdf,0x02,0x08,0x4e,0x75, //00003930 .フ..Sデフp.L゚..Nu 2032: 0x00,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x45,0xfa, //00003940 ......NU..H躋pE. 2033: 0xff,0xf0,0x61,0x00,0x01,0x2c,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x01,0x00, //00003950 ..a..,L゚.JN]Nu.. 2034: 0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x45,0xfa,0xff,0xf0, //00003960 ....NU..H躋pE... 2035: 0x61,0x00,0x01,0x0e,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x08,0x00,0x00,0x00, //00003970 a...L゚.JN]Nu.... 2036: 0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee, //00003980 ..NU..H躋p&IE..獷 2037: 0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x2c,0x02,0x43,0xed, //00003990 ...r..レQノ..,.C. 2038: 0xff,0xf0,0x13,0x46,0x00,0x03,0xe0,0x8e,0x13,0x46,0x00,0x02,0xe0,0x8e,0x13,0x46, //000039a0 ...F..燻.F..燻.F 2039: 0x00,0x01,0x13,0x43,0x00,0x04,0x61,0x00,0x00,0x92,0x4a,0x80,0x66,0x00,0x00,0x82, //000039b0 ...C..a..谷.f..ゃ 2040: 0xe1,0x8b,0xeb,0xab,0x22,0x4b,0x61,0x00,0xf1,0x46,0x0c,0x80,0xff,0xff,0xff,0xff, //000039c0 躯ォ"Ka..F...... 2041: 0x67,0x6e,0x0c,0x80,0xff,0xff,0xff,0xfe,0x67,0x0c,0x61,0x00,0x00,0xba,0x4c,0xdf, //000039d0 gn......g.a..コL゚ 2042: 0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x61,0x00,0x00,0xae,0x4a,0x80,0x66,0x02,0x70,0xfe, //000039e0 .JN]Nua..ョJ.f.p. 2043: 0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000039f0 L゚.JN]Nu%....... 2044: 0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49,0x43,0xed,0xff,0xf0, //00003a00 ..NU..H躋p&IC... 2045: 0x45,0xfa,0xff,0xe6,0x72,0x09,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0, //00003a10 E..誡..レQノ..C... 2046: 0x61,0x28,0x4a,0x80,0x66,0x1a,0x22,0x4b,0x76,0x08,0x61,0x00,0xfc,0x5a,0x0c,0x80, //00003a20 a(J.f."Kv.a..Z.. 2047: 0xff,0xff,0xff,0xff,0x67,0x0a,0x61,0x5e,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75, //00003a30 ....g.a^L゚.JN]Nu 2048: 0x70,0xff,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x48,0xe7,0x48,0x00,0x32,0x3c, //00003a40 p.L゚.JN]NuH踪.2< 2049: 0x00,0x01,0x61,0x00,0xfa,0x6c,0x4a,0x80,0x67,0x06,0x51,0xc9,0xff,0xf6,0x60,0x18, //00003a50 ..a..lJ.g.Qノ..`. 2050: 0x48,0x44,0xeb,0x0c,0x89,0x29,0x00,0x01,0x61,0x00,0xfb,0x64,0x4a,0x80,0x66,0x08, //00003a60 HD...)..a..dJ.f. 2051: 0x70,0x00,0x4c,0xdf,0x00,0x12,0x4e,0x75,0x70,0xff,0x4c,0xdf,0x00,0x12,0x4e,0x75, //00003a70 p.L゚..Nup.L゚..Nu 2052: 0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0, //00003a80 C...r..レQノ..C... 2053: 0x61,0xb8,0x4a,0x80,0x66,0x24,0x43,0xed,0xff,0xff,0x61,0x00,0xfc,0x34,0x4a,0x80, //00003a90 aクJ.f$C...a..4J. 2054: 0x66,0x18,0x43,0xed,0xff,0xfe,0x61,0x00,0xfc,0x74,0x4a,0x80,0x66,0x0c,0x10,0x2d, //00003aa0 f.C...a..tJ.f..- 2055: 0xff,0xfe,0x48,0x40,0x10,0x2d,0xff,0xff,0x4e,0x75,0x70,0xff,0x4e,0x75,0x48,0xe7, //00003ab0 ..H@.-..Nup.NuH鈞 2056: 0xe0,0x80,0x41,0xf9,0x00,0xe8,0x80,0x23,0x72,0x00,0x12,0x10,0x12,0x10,0x74,0x00, //00003ac0 .A..閠#r.....t. 2057: 0x14,0x10,0xb4,0x10,0x65,0xf8,0x92,0x42,0x64,0x04,0xd2,0x7c,0x00,0xc8,0xc3,0x42, //00003ad0 ..エ.e.達d.メ|.ネテB 2058: 0x90,0x82,0x62,0xea,0x4c,0xdf,0x01,0x07,0x4e,0x75,0x48,0xe7,0xf8,0x42,0x70,0x80, //00003ae0 垂b鶚゚..NuH鋩Bp. 2059: 0x32,0x3c,0x01,0x40,0x43,0xfa,0x00,0xc6,0x4e,0x4f,0x21,0xc0,0x0c,0xc0,0x70,0x80, //00003af0 2<.@C..ニNO!タ.タp. 2060: 0x32,0x3c,0x01,0x41,0x43,0xfa,0x02,0x92,0x4e,0x4f,0x21,0xc0,0x0c,0xc4,0x70,0x80, //00003b00 2<.AC..誰O!タ.トp. 2061: 0x32,0x3c,0x01,0x43,0x43,0xfa,0x03,0x04,0x4e,0x4f,0x21,0xc0,0x0c,0xc8,0x70,0x80, //00003b10 2<.CC...NO!タ.ネp. 2062: 0x32,0x3c,0x01,0x44,0x43,0xfa,0x00,0xdc,0x4e,0x4f,0x21,0xc0,0x0c,0xcc,0x70,0x80, //00003b20 2<.DC..ワNO!タ.フp. 2063: 0x32,0x3c,0x01,0x45,0x43,0xfa,0x01,0xdc,0x4e,0x4f,0x21,0xc0,0x0c,0xd0,0x70,0x80, //00003b30 2<.EC..ワNO!タ.ミp. 2064: 0x32,0x3c,0x01,0x46,0x43,0xfa,0x01,0xbe,0x4e,0x4f,0x21,0xc0,0x0c,0xd4,0x70,0x80, //00003b40 2<.FC..セNO!タ.ヤp. 2065: 0x32,0x3c,0x01,0x47,0x43,0xfa,0x00,0x74,0x4e,0x4f,0x21,0xc0,0x0c,0xd8,0x70,0x80, //00003b50 2<.GC..tNO!タ.リp. 2066: 0x32,0x3c,0x01,0x48,0x43,0xfa,0x00,0x72,0x4e,0x4f,0x21,0xc0,0x0c,0xdc,0x70,0x80, //00003b60 2<.HC..rNO!タ.ワp. 2067: 0x32,0x3c,0x01,0x4b,0x43,0xfa,0x00,0x70,0x4e,0x4f,0x21,0xc0,0x0c,0xe0,0x70,0x80, //00003b70 2<.KC..pNO!タ.瀾. 2068: 0x32,0x3c,0x01,0x4d,0x43,0xfa,0x00,0x6e,0x4e,0x4f,0x21,0xc0,0x0c,0xe4,0x70,0x80, //00003b80 2<.MC..nNO!タ.舊. 2069: 0x32,0x3c,0x01,0x4f,0x43,0xfa,0x00,0xca,0x4e,0x4f,0x21,0xc0,0x0c,0xe8,0x32,0x3c, //00003b90 2<.OC..ハNO!タ..2< 2070: 0x80,0x00,0x74,0x0f,0x22,0x7c,0x00,0x00,0x00,0x00,0x61,0x00,0x02,0x6e,0xd2,0x7c, //00003ba0 ..t."|....a..nメ| 2071: 0x01,0x00,0x51,0xca,0xff,0xf0,0x4c,0xdf,0x42,0x1f,0x4e,0x75,0x2f,0x38,0x0c,0xc0, //00003bb0 ..Qハ..L゚B.Nu/8.タ 2072: 0x48,0xe7,0x48,0x04,0x4b,0xfa,0xf4,0x14,0x60,0x48,0x2f,0x38,0x0c,0xd8,0x48,0xe7, //00003bc0 H踪.K...`H/8.リH踪 2073: 0x48,0x04,0x4b,0xfa,0xfd,0x90,0x60,0x3a,0x2f,0x38,0x0c,0xdc,0x48,0xe7,0x48,0x04, //00003bd0 .K..秦:/8.ワH踪. 2074: 0x4b,0xfa,0xf5,0x30,0x60,0x2c,0x2f,0x38,0x0c,0xe0,0x48,0xe7,0x48,0x04,0x4b,0xfa, //00003be0 K..0`,/8.潯踪.K. 2075: 0xf4,0xd6,0x60,0x1e,0x2f,0x38,0x0c,0xe4,0x48,0xe7,0x48,0x04,0x4b,0xfa,0xf4,0x7a, //00003bf0 .ヨ`./8.腥踪.K..z 2076: 0x60,0x10,0x2f,0x38,0x0c,0xcc,0x48,0xe7,0x48,0x04,0x4b,0xfa,0xfd,0x3a,0x60,0x00, //00003c00 `./8.フH踪.K..:`. 2077: 0x00,0x02,0x78,0x00,0x38,0x01,0x02,0x41,0xf0,0x00,0xb2,0x7c,0x80,0x00,0x66,0x3a, //00003c10 ..x.8..A..イ|..f: 2078: 0xe0,0x4c,0xe2,0x4c,0x64,0x04,0x08,0xc4,0x00,0x10,0x02,0x44,0x00,0x07,0x09,0x39, //00003c20 澂祗d..ト...D...9 2079: 0x00,0xed,0x00,0x71,0x67,0x24,0x4e,0x95,0x02,0x80,0xff,0xff,0xff,0x1e,0x4a,0x80, //00003c30 ...qg$N.......J. 2080: 0x66,0x0a,0x70,0x00,0x4c,0xdf,0x20,0x12,0x58,0x8f,0x4e,0x75,0x00,0x80,0xff,0xff, //00003c40 f.p.L゚ .X蒐u.... 2081: 0xff,0x00,0x4c,0xdf,0x20,0x12,0x58,0x8f,0x4e,0x75,0x4c,0xdf,0x20,0x12,0x4e,0x75, //00003c50 ..L゚ .X蒐uL゚ .Nu 2082: 0x2f,0x38,0x0c,0xe8,0x48,0xe7,0x7f,0x48,0x78,0x00,0x38,0x01,0x02,0x41,0xf0,0x00, //00003c60 /8.鍠..Hx.8..A.. 2083: 0xb2,0x7c,0x80,0x00,0x66,0x6e,0x22,0x04,0xe0,0x4c,0xe2,0x4c,0x64,0x04,0x08,0xc4, //00003c70 イ|..fn".澂祗d..ト 2084: 0x00,0x10,0x02,0x44,0x00,0x07,0x09,0x39,0x00,0xed,0x00,0x71,0x67,0x4e,0x49,0xf9, //00003c80 ...D...9...qgNI. 2085: 0x00,0x00,0x09,0xfe,0x20,0x01,0xe0,0x58,0xc0,0xbc,0x00,0x00,0x00,0x0f,0xd9,0xc0, //00003c90 .... .濆タシ....ルタ 2086: 0x10,0x14,0x08,0x00,0x00,0x07,0x66,0x34,0xc0,0x3c,0x00,0x7f,0x67,0x2e,0x24,0x3c, //00003ca0 ......f4タ<..g.$< 2087: 0x00,0x01,0x56,0x60,0x43,0xfa,0x02,0x84,0xb0,0x3c,0x00,0x14,0x67,0x1a,0x24,0x3c, //00003cb0 ..V`C..┣<..g.$< 2088: 0x00,0x02,0xac,0xc0,0x43,0xfa,0x02,0x88,0xb0,0x3c,0x00,0x28,0x67,0x0a,0x24,0x3c, //00003cc0 ..ャタC..芦<.(g.$< 2089: 0x00,0x00,0xaf,0x50,0x43,0xfa,0x02,0x50,0x61,0x00,0xf3,0x00,0x4c,0xdf,0x12,0xfe, //00003cd0 ..ッPC..Pa...L゚.. 2090: 0x58,0x8f,0x4e,0x75,0x4c,0xdf,0x12,0xfe,0x4e,0x75,0x02,0x41,0xf0,0x00,0xb2,0x7c, //00003ce0 X蒐uL゚..Nu.A..イ| 2091: 0x80,0x00,0x66,0x0a,0x4c,0xdf,0x00,0x02,0x58,0x8f,0x70,0x00,0x4e,0x75,0x4c,0xdf, //00003cf0 ..f.L゚..X術.NuL゚ 2092: 0x00,0x02,0x4e,0x75,0x2f,0x38,0x0c,0xd4,0x48,0xe7,0x7e,0x64,0x4b,0xfa,0xef,0xea, //00003d00 ..Nu/8.ヤH轜dK..鸛 2093: 0x60,0x10,0x2f,0x38,0x0c,0xd0,0x48,0xe7,0x7e,0x64,0x4b,0xfa,0xf0,0x4a,0x60,0x00, //00003d10 ./8.ミH轜dK..J`. 2094: 0x00,0x02,0x78,0x00,0x38,0x01,0x02,0x41,0xf0,0x00,0xb2,0x7c,0x80,0x00,0x66,0x62, //00003d20 ..x.8..A..イ|..fb 2095: 0xe0,0x4c,0xe2,0x4c,0x64,0x04,0x08,0xc4,0x00,0x10,0x02,0x44,0x00,0x07,0x09,0x39, //00003d30 澂祗d..ト...D...9 2096: 0x00,0xed,0x00,0x71,0x67,0x4c,0x2c,0x03,0x26,0x06,0xd6,0xbc,0x00,0x00,0x00,0xff, //00003d40 ...qgL,.&.ヨシ.... 2097: 0xe0,0x8b,0xb6,0xbc,0x00,0x00,0x01,0x00,0x63,0x06,0x26,0x3c,0x00,0x00,0x01,0x00, //00003d50 煖カシ....c.&<.... 2098: 0x7a,0x00,0x4e,0x95,0x02,0x80,0xff,0xff,0xff,0x1e,0x4a,0x80,0x66,0x16,0xd4,0x83, //00003d60 z.N.......J.f.ヤ. 2099: 0x22,0x03,0xe1,0x89,0xd3,0xc1,0x9c,0x81,0x62,0xce,0x4c,0xdf,0x26,0x7e,0x58,0x8f, //00003d70 ".瘟モチ怐bホL゚&~X術 2100: 0x70,0x00,0x4e,0x75,0x4c,0xdf,0x26,0x7e,0x58,0x8f,0x00,0x80,0xff,0xff,0xff,0x00, //00003d80 .NuL゚&~X....... 2101: 0x4e,0x75,0x4c,0xdf,0x26,0x7e,0x4e,0x75,0x4e,0x54,0xff,0x00,0x48,0xe7,0x7e,0x60, //00003d90 NuL゚&~NuNT..H轜` 2102: 0x78,0x00,0x38,0x01,0x02,0x41,0xf0,0x00,0xb2,0x7c,0x80,0x00,0x66,0x60,0x22,0x04, //00003da0 x.8..A..イ|..f`". 2103: 0xe0,0x4c,0xe2,0x4c,0x64,0x04,0x08,0xc4,0x00,0x10,0x02,0x44,0x00,0x07,0x09,0x39, //00003db0 澂祗d..ト...D...9 2104: 0x00,0xed,0x00,0x71,0x67,0x48,0x24,0x49,0x2c,0x03,0x26,0x06,0xb6,0xbc,0x00,0x00, //00003dc0 ...qgH$I,.&.カシ.. 2105: 0x01,0x00,0x65,0x06,0x26,0x3c,0x00,0x00,0x01,0x00,0x43,0xec,0xff,0x00,0x61,0x00, //00003dd0 ..e.&<....C...a. 2106: 0xff,0x24,0x2a,0x03,0x53,0x85,0xb5,0x09,0x66,0x14,0x51,0xcd,0xff,0xfa,0x52,0x82, //00003de0 .$*.S.オ.f.Qヘ..R. 2107: 0x9c,0x83,0x62,0xd6,0x4c,0xdf,0x06,0x7e,0x4e,0x5c,0x70,0x00,0x4e,0x75,0x70,0xfe, //00003df0 怎bヨL゚.~N\p.Nup. 2108: 0x4c,0xdf,0x06,0x7e,0x4e,0x5c,0x00,0x80,0xff,0xff,0xff,0x00,0x4e,0x75,0x4c,0xdf, //00003e00 L゚.~N\......NuL゚ 2109: 0x06,0x7e,0x4e,0x5c,0x2f,0x38,0x0c,0xc4,0x4e,0x75,0x4e,0x54,0xff,0x00,0x48,0xe7, //00003e10 .~N\/8.トNuNT..H輾 2110: 0x78,0x44,0x78,0x00,0x38,0x01,0x02,0x41,0xf0,0x00,0xb2,0x7c,0x80,0x00,0x66,0x46, //00003e20 Dx.8..A..イ|..fF 2111: 0xe0,0x4c,0xe2,0x4c,0x64,0x04,0x08,0xc4,0x00,0x10,0x02,0x44,0x00,0x07,0x09,0x39, //00003e30 澂祗d..ト...D...9 2112: 0x00,0xed,0x00,0x71,0x67,0x30,0x20,0x09,0x67,0x38,0x76,0x0a,0x61,0x00,0xf1,0xd6, //00003e40 ...qg0 .g8v.a..ヨ 2113: 0x02,0x80,0xff,0xff,0xff,0x1e,0x4a,0x80,0x66,0x0e,0x61,0x00,0x00,0x8c,0x70,0x00, //00003e50 ......J.f.a..継. 2114: 0x4c,0xdf,0x22,0x1e,0x4e,0x5c,0x4e,0x75,0x00,0x80,0xff,0xff,0xff,0x00,0x4c,0xdf, //00003e60 L゚".N\Nu......L゚ 2115: 0x22,0x1e,0x4e,0x5c,0x4e,0x75,0x4c,0xdf,0x22,0x1e,0x4e,0x5c,0x2f,0x38,0x0c,0xc8, //00003e70 ".N\NuL゚".N\/8.ネ 2116: 0x4e,0x75,0x76,0x0a,0x43,0xfa,0x00,0xb4,0x61,0x00,0xf1,0x9a,0x02,0x80,0xff,0xff, //00003e80 Nuv.C..エa....... 2117: 0xff,0x1e,0x4a,0x80,0x66,0xd2,0x43,0xec,0xff,0x00,0x74,0x04,0x76,0x01,0x7a,0x00, //00003e90 ..J.fメC...t.v.z. 2118: 0x61,0x00,0xee,0x56,0x02,0x80,0xff,0xff,0xff,0x1e,0x4a,0x80,0x66,0xba,0x45,0xec, //00003ea0 a.皞......J.fコE. 2119: 0xff,0x00,0x43,0xfa,0x00,0x68,0x0c,0xaa,0x58,0x36,0x38,0x4b,0x00,0x00,0x66,0xa8, //00003eb0 ..C..h.ェX68K..fィ 2120: 0x43,0xfa,0x00,0x5a,0x20,0x2a,0x00,0x04,0xb0,0xbc,0x00,0x00,0x9f,0xd9,0x65,0x00, //00003ec0 C..Z *..ーシ..渟e. 2121: 0xff,0x7a,0x43,0xe9,0x00,0x14,0xb0,0xbc,0x00,0x01,0x3d,0x1d,0x65,0x00,0xff,0x6c, //00003ed0 .zC...ーシ..=.e..l 2122: 0x43,0xe9,0x00,0x14,0x60,0x00,0xff,0x64,0x4b,0xf9,0x00,0x00,0x09,0xfe,0x20,0x01, //00003ee0 C...`..dK..... . 2123: 0xe0,0x58,0xc0,0xbc,0x00,0x00,0x00,0x0f,0xdb,0xc0,0x10,0x3c,0x00,0x28,0x0c,0x29, //00003ef0 濆タシ....ロタ.<.(.) 2124: 0x00,0x07,0x00,0x03,0x67,0x10,0x10,0x3c,0x00,0x14,0x0c,0x29,0x00,0x02,0x00,0x04, //00003f00 ....g..<...).... 2125: 0x67,0x04,0x10,0x3c,0x00,0x0a,0x1a,0x80,0x42,0x80,0x4e,0x75,0x01,0x01,0x00,0x03, //00003f10 g..<....B.Nu.... 2126: 0x01,0x35,0x80,0x00,0x00,0x00,0x01,0x01,0x00,0x03,0x01,0x54,0x80,0x00,0x00,0x00, //00003f20 .5.........T.... 2127: 0x01,0x01,0x00,0x03,0x02,0x66,0x80,0x00,0x00,0x00,0x01,0x01,0x00,0x03,0x02,0x98, //00003f30 .....f.......... 2128: 0x80,0x00,0x00,0x00,0x01,0x01,0x00,0x07,0x02,0x66,0x80,0x00,0x00,0x00,0x01,0x01, //00003f40 .........f...... 2129: 0x00,0x07,0x02,0x98,0x80,0x00,0x00,0x00, //00003f50 ........ 2130: }; 2131: */ 2132: // perl misc/itob.pl xeij/SPC.java SPC_DEVICE_DRIVER 2133: public static final byte[] SPC_DEVICE_DRIVER = "\377\377\377\377@\0\0\0\0n\0\0\0\200\1SCHDISK\0\0\0\0\0\0\1F\0\0\3F\0\0\r\f\0\0\0\370\0\0\7\236\0\0\3\260\0\0\0\270\0\0\0\270\0\0\b\24\0\0\b\6\0\0\0\270\0\0\0\270\0\0\1,\0\0\0\1p\2p\7p\fp\b\0\1p\rp\fp\fp\fp\fp\fp\fp\fp\fH\347\0\2M\372\r\310-M\0\0L\337@\0NuH\347\177\376M\372\r\266*n\0\0p\0\20-\0\2\f\0\0\fb\32\"m\0\16A\372\377|\320@\320@\321\300 P \bA\372\377T\321\300N\3200<p\f`\2B@2\0\33A\0\3\340I\33A\0\4J@g\22Jn\5\254f\6Jn\5\256g\6=|\377\377\5\262L\337\177\376NuJ\256\5\312g\312\"n\5\312p\200\"<\0\0\1\365NO`\272 m\0\16 -\0\22\f\200\0\0\0\bg\24\f\200\0\0\0\4f\2500\356\5\304 .\5\2500\200`\2340\356\5\304 .\5\2500\300 \256\5\306`\214 m\0\16 -\0\22\f\200\0\0\0\2f\0\377|=P\5\304`\0\377t\f-\0\27\0\26d\0\377dS\202\2\202\0\0\0\17-B\5\250\59\0\0\f\354f\0\377Na\0\32\270-@\5\312 <\0\0\0\365r$(.\5\250NO\260\274\0\0\0\0gd\260\274\377\377\377\377g\0\377V\260\274\0\0\0\bgP\260\274\0\0\0\2f\0\377D <\0\0\0\365r,v\16(.\5\250C\356\5\322NO\260\274\0\0\0\0f\0\377&C\356\5\322\20\21\2\0\0p\f\0\0pf\0\377\24\20)\0\2g\20\260<\0\1g\n\260<\0\6g\4`\0\376\376`\206p\365r+(.\5\250NOJ\200f\0\376\354p\365r%(.\5\250C\356\5\322NOJ\200f\0\376\330C\356\5\322\")\0\4\262\274\0\0\4\0g\30\262\274\0\0\2\0g\b=|\0\2\5\240`\16=|\0\1\5\240`\6=|\0\0\5\240\340\211\342\211-A\5\244C\356\5\322*.\5\244t\0\345\212\352\252v\1\345\213\352\253(.\5\250p\365r!NOJ\200f\0\376~\f\221X68Sf\0\376t\f\251CSI1\0\4f\0\376h\35i\0\16\5\260=|\0\0\5\254=|\0\0\5\256\f)\0\1\0\17g\20\f)\0\2\0\17f\16=|\377\377\5\256`\6=|\377\377\5\254a\0\3\266J\200f\0\376.JFg\0\376(=|\0\0\5\262=F\5\264J\256\5\312g\6A\3720\212`\4A\372\31L-H\5\316\321\374\0\0\20\0+H\0\16\20-\0\26\320\6\4\0\0\27e\2\234\0\33F\0\rA\356\5D+H\0\22C\356\4\4p\16 \311C\351\0\24Q\310\377\370\33z\375\6\0\26p\17A\356\5\204\20\374\377\377Q\310\377\372$.\5\250\5\371\0\0\f\354p\0=@\5\304-@\5\306-@\r\322-@\r\326a\0\2\246`\0\375tJn\5\254f\"Jn\5\256f\34r\tp\365NO\2\0\0\300g\6r\0p\365NO\33|\0\1\0\16`\0\375La\0\1\352J\200g\2`\34p\0\20-\0\1A\356\5\204A\360\0\0J\20f\n\33|\0\1\0\16`\0\375&p\0\20-\0\1A\356\5\204A\360\0\0\20\274\0\0\33|\377\377\0\16`\0\375\nJn\5\254f@Jn\5\256f:r\tp\365NO\2\0\0\300g\6r\0p\365NO\f-\0\b\0\rd\26\33|\0B\0\rJn\5\304g\6\b\355\0\3\0\r`\0\374\316\33|\377\377\0\r`\0\374\304\20-\0\rg,\260<\0\1gb\260<\0\2gn\260<\0\3g\0\0\210\260<\0\6gp\260<\0\7g\0\0\220\33|\377\377\0\r`\0\374\222a\0\0010J\200g\20\f@\0\1g\n\f@p\2g\36`\0\374|Jn\r\332f\n\33|\0\2\0\r`\0\0\242\33|\0\n\0\r`\0\0\230\33|\0\4\0\r`\0\0\216J\256\5\272f\276J\256\5\266f\270a\0\0\246`\344-|\377\377\377\377\5\266J\256\5\272gV`\272-|\377\377\377\377\5\272J\256\5\266gF`\252J\256\5\266g\244-|\0\0\0\0\5\266J\256\5\272g\32`\224J\256\5\272g\216-|\0\0\0\0\5\272J\256\5\266g\4`\0\377~p\365r2(.\5\250v\0NOJ\200f\0\377T`\0\377hp\365r2(.\5\250v\1NOJ\200f\0\377>`\0\377RJn\5\304g\6\b\355\0\3\0\rJ\256\5\266g\6\b\355\0\4\0\rJ\256\5\272g\6\b\355\0\6\0\r`\0\373\242Jn\5\254f\bJn\5\256f(Nup\2NO\b\0\0\3f\16p\365r0(.\5\250v\0NONup\365r0(.\5\250v\1NONup\365r/(.\5\250v\2NONuH\347p\300p\177NO\262\256\r\326f\22$.\r\322&\0\226\202\f\203\0\0\0de\0\0\342-@\r\322-A\r\326r\tp\365NO\2\0\0\300g\6r\0p\365NO <\0\0\0\365r$(.\5\250NOJ\200g\0\0\222\260\274\0\0\0\bg\322\260\274\0\0\0\2f\0\0\212a\0\7\26J@g\300\260|\0\1fpp\17A\356\5\204\20\374\377\377Q\310\377\372a\0\1&J\200g\f=|\377\377\5\262`\\H\347p\300(.\5\250v\4C\356\5\322t?r)p\365NOJ\200g \f\200\0\0\0\bg\342\f\200\0\0\0\2f2a\0\6\300J@g\322\260|\0\1f\32`\250\b)\0\7\0\2g\b=|\377\377\r\332`\6=|\0\0\r\332p\1-@\r\334L\337\3\16Nu-|\0\0\0\0\r\322-|\0\0\0\0\r\326p\377L\337\3\16Nu .\r\334L\337\3\16NuC\356\5\322*.\5\244t\2\345\212\352\252v\1\345\213\352\253(.\5\250p\365r!NOJ\200fv\f\221X68Kfl&IE\356\4\4|\0~\16G\353\0\20J\23gR\f\223HumafJ\f\253n68k\0\4f@\20+\0\b\b\0\0\0f6$+\0\bC\356\0\4*.\5\244\345\212\352\252v\1\345\213\352\253(.\5\250p\365r!NOJ\200f\34C\351\0\22JQg\nr\4$\331Q\311\377\374RFQ\317\377\244p\0Nup\377NuC\356\5\322*.\5\244t\2\345\212\352\252v\1\345\213\352\253(.\5\250p\365r!NOJ\200f\334\f\221X68Kf\322&IE\356\4\4|\0~\16G\353\0\20J\23gT\f\223HumafL\f\253n68k\0\4fB\20+\0\b\b\0\0\0f8$+\0\bC\356\0\4*.\5\244\352\252\345\212v\1\345\213\352\253(.\5\250p\365r!NOJ\200f\202C\351\0\22r\4 \31\260\232f\0\377tQ\311\377\366RFQ\317\377\242\274n\5\264f\0\377bp\0Nu=|\0\b\5\302=|\0\0\5\300Jn\5\262gDa\0\377LJ\200g,\f\200\377\377\377\377g,\f\200\0\0\0\bg\350\f\200\0\0\0\2f\0\370\342a\0\4\376J@g\n\f@\0\1g\320`\0\370\330=|\0\0\5\262g\b0<p\7`\0\370\310J.\5\260f\6r!`\0\0\212r&`\0\1\354=|\0\b\5\302=|\377\377\5\300`\f=|\0\b\5\302=|\0\0\5\300Jn\5\304g\b0<p\r`\0\370\216Jn\5\262gDa\0\376\310J\200g,\f\200\377\377\377\377g,\f\200\0\0\0\bg\350\f\200\0\0\0\2f\0\370^a\0\4zJ@g\n\260|\0\1g\320`\0\370T=|\0\0\5\262g\b0<p\7`\0\370DJ.\5\260f\4r\"`\6r\'`\0\1j-m\0\16\5\224-m\0\22\5\234p\0\20-\0\1\345\210A\356\5D\321\300 P -\0\26\320\250\0\20-@\5\230<.\5\240$.\5\230\355\252..\5\234\355\257\"n\5\224&\7\266\274\0\0\1\0c\6&<\0\0\1\0p\365(.\5\250*.\5\244NOJ\200g\0\0\322\260\274\377\377\377\377g\0\0\352\260\274\377\377\377\376g\0\0\252\260\274\0\0\0\bg\206\260\274\0\0\0\2f\0\367\250a\0\3\304J@g\0\377t\260|\0\1g\0\377l\f@p\7f\0\367\226\f\201\0\0\0\"f\0\367\214C\356\5\322\b\21\0\7g\0\367\200C\351\0\3\20\31\341\210\20\31\341\210\20\31\341\210\20\31-@\r\340a\0\3ZJ\200g\0\377.\260\274\377\377\377\377gt\260\274\377\377\377\376g6\260\274\0\0\0\bg\336\260\274\0\0\0\2f\0\3676a\0\3RJ@g\0\377\2\260|\0\1g\304g\0\367*R\256\5\306Sn\5\302f\0\376\354`\0\367\32R\256\5\306Sn\5\302f\0\376\3340<p\f`\0\367\6 \3\341\210\353\250\323\300\324\203\236\203b\0\377\0Jn\5\300f\0\1h=|\0\0\5\276`\0\366\342Jn\5\276f\0\366\324r\0p\365NO=|\377\377\5\276`\0\376\232-m\0\16\5\224-m\0\22\5\234p\0\20-\0\1\345\210A\356\5D\321\300 P -\0\26\320\250\0\20-@\5\230<.\5\240$.\5\230\355\252&.\5\234\355\253\"n\5\224p\365(.\5\250*.\5\244NOJ\200g\0\0\320\260\274\377\377\377\377g\0\0\326\260\274\377\377\377\376g\0\0\250\260\274\0\0\0\bg\226\260\274\0\0\0\2f\0\366Pa\0\2lJ@g\204\260|\0\1g\0\377~\f@p\7f\0\366@\f\201\0\0\0\'f\0\3666C\356\5\322\b\21\0\7g\0\366*C\351\0\3\20\31\341\210\20\31\341\210\20\31\341\210\20\31-@\r\340a\0\2\4J\200g\0\377@\260\274\377\377\377\377gb\260\274\377\377\377\376g6\260\274\0\0\0\bg\336\260\274\0\0\0\2f\0\365\340a\0\1\374J@g\0\377\24\260|\0\1g\304`\0\365\324R\256\5\306Sn\5\302f\0\376\376`\0\365\304R\256\5\306Sn\5\302f\0\375\2060<p\f`\0\365\260=|\0\0\5\276Jn\5\300f\34`\0\365\236Jn\5\276f\0\365\220r\0p\365NO=|\377\377\5\276`\0\376\276=|\0\b\5\302-m\0\16\5\224-m\0\22\5\234p\0\20-\0\1\345\210A\356\5D\321\300 P -\0\26\320\250\0\20-@\5\230:.\5\240$.\5\230\353\252..\5\234\353\257|\4\353\256(.\5\250*.\5\244$n\5\224\276\206d\4&\7`\2&\6\"n\5\316r!p\365NOJ\200g\0\0\310\260\274\377\377\377\377g\0\0\344\260\274\377\377\377\376g\0\0\240\260\274\0\0\0\bg\0\377|\260\274\0\0\0\2f\0\364\360a\0\1\fJ@g\0\377h\260|\0\1g\0\377`\f@p\7f\0\364\336C\356\5\322\b\21\0\7g\0\364\322C\351\0\3\20\31\341\210\20\31\341\210\20\31\341\210\20\31-@\r\340a\0\0\254J\200g\0\374p\260\274\377\377\377\377gv\260\274\377\377\377\376g4\260\274\0\0\0\bg\336\260\274\0\0\0\2f\0\364\210a\0\0\244J@g\314\260|\0\1g\306`\0\364~R\256\5\306Sn\5\302f\0\376\354`\0\364nR\256\5\306Sn\5\302f\0\37400<p\f`\0\364Z \3\341\210\353\2502\0SA\265\tf0Q\311\377\372\323\300\324\203\236\203b\0\377\6=|\0\0\5\276`\0\3642Jn\5\276f\0\364$r\0p\365NO=|\377\377\5\276`\0\376\226=|\0\0\5\2760<p\13`\0\364\16H\347\20@ .\r\340C\356\5\3222\374\0\0002\374\0\4\"\300C\356\5\322v\badL\337\2\bNuH\347@@p\365r,(.\5\250v\16C\356\5\322NOJ\200f\30BA\22)\0\2\343IC\372\363Zp\00001\20\0L\337\2\2Nu0<p\fL\337\2\2Nup\0\20-\0\1\345\210A\356\5D\321\300+H\0\22 P\33h\0\n\0\r`\0\363\220\7\0\0\0\0\0NU\377\360H\347Rp&IE\372\377\356C\355\377\360r\5\22\332Q\311\377\374C\355\377\360a(J\200f\32\"Kr\5p\365NO\f\200\377\377\377\377g\naLL\337\16JN]Nup\377L\337\16JN]NuH\347h\0002<\0\1r\1p\365NOJ\200g\6Q\312\377\364`\32HD\353\f\211)\0\1r\3p\365NOJ\200f\bp\0L\337\0\26Nup\377L\337\0\26NuC\355\377\377r\6p\365NOJ\200f\32C\355\377\376r\7p\365NOJ\200f\f\20-\377\376H@\20-\377\377Nup\377Nu\r\nSCSI DISK DRIVER for X68000 version 1.04\r\nCopyright 1990-92 SHARP/First Class Technology\r\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\347\b\0p\365r\nNO\f\200\0\0\0\4d6a\0\0\316A\372\1\34\b\4\0\0g\b \274\0\351` `\f\b\4\0\1g\32 \274\0\352\0\0p\200\"<\0\0\1\365C\372\0\372NOL\337\0\20Nup\0L\337\0\20NuH\347\0\242x\0A\371\0\374\0\0a\0\0\236J\200f\26\f\250SCSI\0$f\f\fhIN\0(f\4\b\304\0\0A\371\0\352\0 azJ\200f\26\f\250SCSI\0$f\f\fhEX\0(f\4\b\304\0\1\23\374\0001\0\350\340\r\f9\0V\0\355\0og\30\23\374\0V\0\355\0o\23\374\0\7\0\355\0p\23\374\0\0\0\355\0q\b\4\0\0f\b\b\371\0\3\0\355\0p\23\374\0\0\0\350\340\rL\337E\0Nua\0\377l\b9\0\3\0\355\0pf\6\b\204\0\1Nu\b\204\0\0Nu,OC\372\0($y\0\0\0\b#\311\0\0\0\b \20\b\0\0\0f\22\260\274\0 \0\0e\n#\312\0\0\0\bp\0Nu.N#\312\0\0\0\bp\377Nu\0\351` H\347Pb\262\274\0\0\0\20e\30\262\274\0\0\0 e@\262\274\0\0\0@e\16\262\274\0\0\0 e0E\372\0:`\26\222\274\0\0\0 E\372\0n`\n\222\274\0\0\0@E\372\0\342\345\211,z\377\270\"2\20\0\325\301N\222L\337F\nNup\377L\337F\nNup\377Nu\0\0\n\b\0\0\13\b\0\0\n\350\0\0\f\26\0\0\1V\0\0\1\0\0\0\r\30\0\0\rd\0\0\r\260\0\0\r\372\0\0\16\16\0\0\f\316\0\0\f\204\377\377\377\374\377\377\377\374\377\377\377\374\0\0\1v\0\0\3\0\0\0\3n\0\0\4\336\0\0\17N\0\0\20\n\0\0\3\340\0\0\4L\0\0\4\312\0\0\2\22\0\0\2d\0\0\17l\0\0\1\304\0\0\5\342\0\0\17\212\0\0\5`\0\0\5\240\0\0\2\266\0\0\5 \377\377\377\274\377\377\377\274\377\377\377\274\0\0\6,\0\0\6\200\0\0\6\316\0\0\7\32\377\377\377\274\377\377\377\274\377\377\377\274\377\377\377\274\377\377\377\274\377\377\377\274\377\377\377<\377\377\377<\377\377\377<\377\377\377<\377\377\377<\377\377\377<\377\377\377<\377\377\377<\377\377\377<\377\377\377<\377\377\377<\377\377\377<\377\377\377<\377\377\377<\377\377\377<\377\377\377<H\347\0\2,z\376\226\20.\0\t\b\0\0\5f8\20.\0\13\b\0\0\7g\354\2\0\0\7\260<\0\0f\32a\0\6\224H@f\6L\337@\0NuJ@g\bH@L\337@\0Nu\20.\0\13L\337@\0Nua\0\b\274p\377L\337@\0NuH\347\0\2,z\376@\20.\0\t\b\0\0\5f<\20.\0\13\b\0\0\7g\354\2\0\0\7\2\0\0\7\260<\0\1f\32a\0\6FH@f\6L\337@\0NuJ@g\bH@L\337@\0Nu\20.\0\13L\337@\0Nua\0\bbp\377L\337@\0Nu\22\0\0\0\0\0NU\377\360H\347Rp&IE\372\377\356C\355\377\360r\5\22\332Q\311\377\374C\355\377\360\23C\0\4a\0\16\270J\200f\0\5\322\"Ka\0\n\350\f\200\377\377\377\377g\0\5\302a\0\16\352L\337\16JN]Nu\3\0\0\0\0\0NU\377\360H\347Rp&IE\372\377\356C\355\377\360r\5\22\332Q\311\377\374C\355\377\360\23C\0\4a\0\16jJ\200f\0\5\204\"Ka\0\n\232\f\200\377\377\377\377g\0\5ta\0\16\234L\337\16JN]Nu\32\0\0\0\0\0NU\377\360H\347Rp&IE\372\377\356C\355\377\360r\5\22\332Q\311\377\374C\355\377\360\23C\0\4\23B\0\2a\0\16\30J\200f\0\0052\"Ka\0\nH\f\200\377\377\377\377g\0\5\"a\0\16JL\337\16JN]Nu\25\0\0\0\0\0NU\377\360H\347Rp&IE\372\377\356C\355\377\360r\5\22\332Q\311\377\374C\355\377\360\23C\0\4\23B\0\1a\0\r\306J\200f\0\4\340\"Ka\0\t\254\f\200\377\377\377\377g\0\4\320a\0\r\370L\337\16JN]Nu\7\0\0\0\0\0NU\377\360H\347Rp&IE\372\377\356C\355\377\360r\5\22\332Q\311\377\374C\355\377\360a\0\r|J\200f\0\4\226\"Ka\0\tb\f\200\377\377\377\377g\0\4\206a\0\r\256L\337\16JN]Nu\b\0\0\0\0\0NU\377\360H\347Rp&IE\372\377\356C\355\377\360r\5\22\332Q\311\377\374,\2C\355\377\360\23F\0\3\340\216\23F\0\2\340\216\23F\0\1\23C\0\4a\0\r\34J\200f\0\0046\341\213\353\253\"Ka\0\375\320\f\200\377\377\377\377g\0\4\"\f\200\377\377\377\376g\0\1Ta\0\r@L\337\16JN]Nu\n\0\0\0\0\0NU\377\360H\347Rp&IE\372\377\356C\355\377\360r\5\22\332Q\311\377\374,\2C\355\377\360\23F\0\3\340\216\23F\0\2\340\216\23F\0\1\23C\0\4a\0\f\256J\200f\0\3\310\341\213\353\253\"Ka\0\375\f\f\200\377\377\377\377g\0\3\264\f\200\377\377\377\376g\0\0\346a\0\f\322L\337\16JN]Nu(\0\0\0\0\0\0\0\0\0NU\377\360H\347Rp&IC\355\377\360E\372\377\346r\t\22\332Q\311\377\374,\3C\355\377\360#B\0\2\23C\0\b\340\213\23C\0\7a\0\fBJ\200f\0\3\\&\6\341\213\353\253\"Ka\0\374\364\f\200\377\377\377\377g\0\3F\f\200\377\377\377\376gxa\0\ffL\337\16JN]Nu*\0\0\0\0\0\0\0\0\0NU\377\360H\347RpE\372\377\354&IC\355\377\360r\t\22\332Q\311\377\374,\3C\355\377\360#B\0\2\23C\0\b\340\213\23C\0\7a\0\13\326J\200f\0\2\360&\6\341\213\353\253\"Ka\0\3742\f\200\377\377\377\377g\0\2\332\f\200\377\377\377\376g\fa\0\13\372L\337\16JN]Nua\0\13\356J\200f\2p\376L\337\16JN]Nu/\0\0\0\0\0\0\0\0\0NU\377\360H\347RpE\372\377\354`\200\4\0\0\0\0\0NU\377\360H\347RpE\372\377\360C\355\377\360r\5\22\332Q\311\377\374C\355\377\360\23C\0\4\340\213\23C\0\3a\0\13LJ\200f\0\2fa\0\13\216L\337\16JN]Nu\36\0\0\0\0\0NU\377\360H\347RpE\372\377\360C\355\377\360r\5\22\332Q\311\377\374C\355\377\360\2\3\0\1\23C\0\4a\0\13\fJ\200f\0\2&a\0\13NL\337\16JN]Nu\33\0\0\0\0\0NU\377\360H\347RpE\372\377\360C\355\377\360r\5\22\332Q\311\377\374C\355\377\360\2\3\0\3\23C\0\4a\0\n\314J\200f\0\1\346a\0\13\16L\337\16JN]Nu\301\0\0\0\0\0NU\377\360H\347RpE\372\377\360C\355\377\360r\5\22\332Q\311\377\374C\355\377\360\2\3\0\1\23C\0\4v\6a\0\n\212J\200f\0\1\244a\0\n\314L\337\16JN]Nu\13\0\0\0\0\0NU\377\360H\347RpE\372\377\360C\355\377\360r\5\22\332Q\311\377\374,\2C\355\377\360\23F\0\3\340\216\23F\0\2\340\216\23F\0\1a\0\n@J\200f\0\1Za\0\n\202L\337\16JN]Nu\302\0\0\0\0\0NU\377\360H\347Rp&IE\372\377\356C\355\377\360r\5\22\332Q\311\377\374\"\3C\355\377\360\23A\0\5v\6a\0\t\376J\200f\0\1\30&\1\"Ka\0\5\342\f\200\377\377\377\377g\0\1\6a\0\n.L\337\16JN]Nu\6\0\0\0\0\0NU\377\360H\347RpE\372\377\360C\355\377\360r\5\22\332Q\311\377\374C\355\377\360,\2\23F\0\3\340\216\23F\0\2\340\216\23F\0\1\23C\0\4a\0\t\236J\200f\0\0\270a\0\t\340L\337\16JN]Nu\7\0\0\0\0\0NU\377\360H\347RpE\372\377\360C\355\377\360r\5\22\332Q\311\377\374C\355\377\360,\2\23F\0\3\340\216\23F\0\2\340\216\23F\0\1\23C\0\4a\0\tPJ\200fja\0\t\224L\337\16JN]Nu\16\0\0\0\0\0NU\377\360H\347Rp&IE\372\377\356C\355\377\360r\5\22\332Q\311\377\374C\355\377\360,\2\23F\0\3\340\216\23F\0\2\340\216\23F\0\1\23C\0\4a\0\t\2J\200f\34v\4\"Ka\0\4\350\f\200\377\377\377\377g\fa\0\t6L\337\16JN]Nup\377L\337\16JN]Nu/\13G\372\0\330a8&_Nu/\13G\372\1\250a,H\347\300\0\209\0\350\340\13\350\b\f\0\0\16d\22Nz\0\2\"\0\b\300\0\13N{\0\2N{\20\2L\337\0\3&_NuH\347\0`\20.\0\13\2\0\0\7\35@\0\21 \3\35@\0\35\340\210\35@\0\33\340\210\35@\0\31\20.\0\13\b\0\0\7g\366E\371\0\350@@\25|\0\377\0\0005|\0\0\0\32\25|\0\200\0\4\25|\0\4\0\6A\356\0\25%H\0\24\20.\0\13\b\0\0\7g\366\35|\0\200\0\5N\223J\200f&\b.\0\3\0\tf\22\b.\0\4\0\tg\360\b\356\0\4\0\tp\0`\f\b\356\0\3\0\tp\375`\2p\377%|\0\351`\1\0\24L\337\6\0NuH\347|@\25|\0001\0\5(\3\266\274\0\0\1\0c\b*<\0\0\1\0`\2*\3%I\0\f5E\0\n\b.\0\3\0\tf\0\0\230\b.\0\0\0\rg\356\b.\0\3\0\tf\0\0\206\20.\0\13\b\0\0\7g\354p\0\20.\0\31\341\210\20.\0\33\341\210\20.\0\35\"\4\222\200p\0000*\0\n$\5\224\200\222\202g\b\323\252\0\f\223j\0\n\24\274\377\377\25|\0\200\0\7NqNqNqNqNq\b.\0\3\0\tf2\b.\0\4\0\tf\6\b\22\0\7g\352\b*\0\1\0\1f\0\377|J*\0\1f\30Jj\0\nf\22\323\305\230\205\226\205f\0\377Lp\0`\20p\375`\6p\376`\2p\377\25|\0\20\0\7L\337\2>NuH\347|@\25|\0\261\0\5\266\274\0\0\1\0c\b*<\0\0\1\0`\2*\3%I\0\f5E\0\n\b.\0\3\0\tfR\b.\0\0\0\rf\360\24\274\377\377\25|\0\200\0\7NqNqNqNqNq\b.\0\3\0\tf.\b.\0\4\0\tf\6\b\22\0\7g\352\b*\0\1\0\1f\276J*\0\1f\26Jj\0\nf\20\323\305\230\205\226\205f\220p\0`\20p\375`\6p\376`\2p\377\25|\0\20\0\7L\337\2>NuH\347@B,z\365\216\35|\0\220\0\3\209\0\355\0o\f\0\0Vg:\23\374\0001\0\350\340\r\275\374\0\351` f\n\23\374\0\7\0\355\0p`\b\23\374\0\17\0\355\0p\23\374\0\0\0\355\0q\23\374\0V\0\355\0o\23\374\0\0\0\350\340\r\209\0\355\0p\2\0\0\7\35@\0\1p\0\35@\0\5\35@\0\21\35@\0\31\35@\0\33\35@\0\35\35@\0\27p\200\275\374\0\351` f\4rl`\6\"<\0\0\0\366C\372\08NO\35|\0\20\0\3\35|\0\0\0\13p\2a\0\6X\35|\0\20\0\5p\5a\0\6L\35|\0\0\0\5 <\0\0\234@a\0\6<L\337B\2NuH\347\300\2,z\364\304\20.\0\t\35@\0\tL\337@\3NsH\347\t\2,z\364\256\35|\0\0\0\21\20.\0\r\2\0\0\370f\366\35|\0`\0\5`\30H\347\t\2,z\364\216\35|\0\0\0\21\20.\0\r\2\0\0\370f\366\2D\0\7\20<\0\1\351(\t9\0\355\0qf\f\200.\0\1\35|\0\20\0\3`\6\35|\0\0\0\3\35@\0\0270<\t\304\35@\0\33\340H\35@\0\31\35|\0\3\0\35\35n\0\t\0\t\35|\0 \0\5p\1a\0\5\232\20.\0\tf\b\35|\0\5\0\rf\362\20.\0\r\b\0\0\7g\232\20.\0\tg\360\260<\0\4g&\35@\0\t\260<\0\20g\fH@\20.\0\13L\337@\220Nup\0L\337@\220Nup\377L\337@\220Nup\1a\0\5J\35|\0\0\0\27 <\0\0\2X\35@\0\35\340\210\35@\0\33\340\210\35@\0\31\35|\0\4\0\tp\2a\0\5\"\20.\0\tg\372\35@\0\t\260<\0\4g\b\260<\0\20g\254`\236\b.\0\5\0\rf\370\35n\0\t\0\t\b.\0\7\0\rf\224`\206H\347\20\2,z\363\200\20\21\2\0\0\340\f\0\0\0g\16\260<\0 g\f\260<\0\240g\n`\nv\6`\6v\n`\2v\f\20.\0\t\b\0\0\5f,\20.\0\13\b\0\0\7g\354\2\0\0\7\f\0\0\2f\16a\0\2\246H@f\6L\337@\bNu\20.\0\13L\337@\bNua\0\375\216p\377L\337@\bNuH\347\0\2,z\363\22\20.\0\t\b\0\0\5f,\20.\0\13\b\0\0\7g\354\2\0\0\7\260<\0\0f\16a\0\1fH@f\6L\337@\0Nu\20.\0\13L\337@\0Nua\0\375Dp\377L\337@\0NuH\347\0\2,z\362\310\20.\0\t\b\0\0\5f,\20.\0\13\b\0\0\7g\354\2\0\0\7\260<\0\1f\16a\0\1\234H@f\6L\337@\0Nu\20.\0\13L\337@\0Nua\0\374\372p\377L\337@\0NuH\347\20\2,z\362~\20.\0\t\b\0\0\5f.\20.\0\13\b\0\0\7g\354\2\0\0\7\260<\0\3f\20v\1a\0\2\6H@f\6L\337@\bNu\20.\0\13L\337@\bNua\0\374\256p\377L\337@\bNuH\347\20\2,z\3622\20.\0\t\b\0\0\5f.\20.\0\13\b\0\0\7g\354\2\0\0\7\260<\0\7f\20v\1a\0\1\272H@f\6L\337@\bNu\20.\0\13L\337@\bNua\0\374bp\377L\337@\bNuH\347\20\2,z\361\346\20.\0\t\b\0\0\5f,\20.\0\13\b\0\0\7g\354\2\0\0\7\260<\0\6f\16v\1a8H@f\6L\337@\bNu\20.\0\13L\337@\bNua\0\374\30p\377L\337@\bNuH\347\0\2,z\361\234p\0\20.\0\13L\337@\0Nup\4NuH\347\20@ \3\35@\0\35\340\210\35@\0\33\340\210\35@\0\31\20.\0\13\2\0\0\7\35@\0\21\20.\0\13\b\0\0\7g\366\35n\0\t\0\t\35|\0\200\0\5\20.\0\r\2\0\0\360\260<\0pg\6\260<\0\260f\354J.\0\tf\20\b.\0\1\0\rf\362\35Y\0\25S\203f\352\20.\0\tg\372\35@\0\t\260<\0\20g\6L\337\2\bNup\0L\337\2\bNuH\347\20@\20.\0\13\2\0\0\7\35@\0\21 \3\35@\0\35\340\210\35@\0\33\340\210\35@\0\31\35n\0\t\0\t\35|\0\200\0\5\20.\0\r\2\0\0\360\260<\0pg\6\260<\0\260f\354J.\0\tf\20\b.\0\0\0\rf\362\22\356\0\25S\203f\352\20.\0\tg\372\35@\0\t\260<\0\20g\6L\337\2\bNup\0L\337\2\bNuH\347\20@\20.\0\13\2\0\0\7\35@\0\21\20.\0\13\b\0\0\7g\366\35Y\0\27\35|\0\354\0\5\20.\0\13\b\0\0\7f\366\35|\0\314\0\5S\203f\314p\0L\337\2\bNuH\347\20@\20.\0\13\2\0\0\7\35@\0\21\20.\0\13\b\0\0\7g\366\35|\0\354\0\5\20.\0\13\b\0\0\7f\366\22\356\0\27\35|\0\314\0\5S\203f\314p\0L\337\2\bNu\0\0\0\0\0\0NU\377\360H\347RpE\372\377\360a\0\1,L\337\16JN]Nu\1\0\0\0\0\0NU\377\360H\347RpE\372\377\360a\0\1\16L\337\16JN]Nu\b\0\0\0\0\0NU\377\360H\347Rp&IE\372\377\356C\355\377\360r\5\22\332Q\311\377\374,\2C\355\377\360\23F\0\3\340\216\23F\0\2\340\216\23F\0\1\23C\0\4a\0\0\222J\200f\0\0\202\341\213\353\253\"Ka\0\361F\f\200\377\377\377\377gn\f\200\377\377\377\376g\fa\0\0\272L\337\16JN]Nua\0\0\256J\200f\2p\376L\337\16JN]Nu%\0\0\0\0\0\0\0\0\0NU\377\360H\347Rp&IC\355\377\360E\372\377\346r\t\22\332Q\311\377\374C\355\377\360a(J\200f\32\"Kv\ba\0\374Z\f\200\377\377\377\377g\na^L\337\16JN]Nup\377L\337\16JN]NuH\347H\0002<\0\1a\0\372lJ\200g\6Q\311\377\366`\30HD\353\f\211)\0\1a\0\373dJ\200f\bp\0L\337\0\22Nup\377L\337\0\22NuC\355\377\360r\5\22\332Q\311\377\374C\355\377\360a\270J\200f$C\355\377\377a\0\3744J\200f\30C\355\377\376a\0\374tJ\200f\f\20-\377\376H@\20-\377\377Nup\377NuH\347\340\200A\371\0\350\200#r\0\22\20\22\20t\0\24\20\264\20e\370\222Bd\4\322|\0\310\303B\220\202b\352L\337\1\7NuH\347\370Bp\2002<\1@C\372\0\306NO!\300\f\300p\2002<\1AC\372\2\222NO!\300\f\304p\2002<\1CC\372\3\4NO!\300\f\310p\2002<\1DC\372\0\334NO!\300\f\314p\2002<\1EC\372\1\334NO!\300\f\320p\2002<\1FC\372\1\276NO!\300\f\324p\2002<\1GC\372\0tNO!\300\f\330p\2002<\1HC\372\0rNO!\300\f\334p\2002<\1KC\372\0pNO!\300\f\340p\2002<\1MC\372\0nNO!\300\f\344p\2002<\1OC\372\0\312NO!\300\f\3502<\200\0t\17\"|\0\0\0\0a\0\2n\322|\1\0Q\312\377\360L\337B\37Nu/8\f\300H\347H\4K\372\364\24`H/8\f\330H\347H\4K\372\375\220`:/8\f\334H\347H\4K\372\3650`,/8\f\340H\347H\4K\372\364\326`\36/8\f\344H\347H\4K\372\364z`\20/8\f\314H\347H\4K\372\375:`\0\0\2x\08\1\2A\360\0\262|\200\0f:\340L\342Ld\4\b\304\0\20\2D\0\7\t9\0\355\0qg$N\225\2\200\377\377\377\36J\200f\np\0L\337 \22X\217Nu\0\200\377\377\377\0L\337 \22X\217NuL\337 \22Nu/8\f\350H\347\177Hx\08\1\2A\360\0\262|\200\0fn\"\4\340L\342Ld\4\b\304\0\20\2D\0\7\t9\0\355\0qgNI\371\0\0\t\376 \1\340X\300\274\0\0\0\17\331\300\20\24\b\0\0\7f4\300<\0\177g.$<\0\1V`C\372\2\204\260<\0\24g\32$<\0\2\254\300C\372\2\210\260<\0(g\n$<\0\0\257PC\372\2Pa\0\363\0L\337\22\376X\217NuL\337\22\376Nu\2A\360\0\262|\200\0f\nL\337\0\2X\217p\0NuL\337\0\2Nu/8\f\324H\347~dK\372\357\352`\20/8\f\320H\347~dK\372\360J`\0\0\2x\08\1\2A\360\0\262|\200\0fb\340L\342Ld\4\b\304\0\20\2D\0\7\t9\0\355\0qgL,\3&\6\326\274\0\0\0\377\340\213\266\274\0\0\1\0c\6&<\0\0\1\0z\0N\225\2\200\377\377\377\36J\200f\26\324\203\"\3\341\211\323\301\234\201b\316L\337&~X\217p\0NuL\337&~X\217\0\200\377\377\377\0NuL\337&~NuNT\377\0H\347~`x\08\1\2A\360\0\262|\200\0f`\"\4\340L\342Ld\4\b\304\0\20\2D\0\7\t9\0\355\0qgH$I,\3&\6\266\274\0\0\1\0e\6&<\0\0\1\0C\354\377\0a\0\377$*\3S\205\265\tf\24Q\315\377\372R\202\234\203b\326L\337\6~N\\p\0Nup\376L\337\6~N\\\0\200\377\377\377\0NuL\337\6~N\\/8\f\304NuNT\377\0H\347xDx\08\1\2A\360\0\262|\200\0fF\340L\342Ld\4\b\304\0\20\2D\0\7\t9\0\355\0qg0 \tg8v\na\0\361\326\2\200\377\377\377\36J\200f\16a\0\0\214p\0L\337\"\36N\\Nu\0\200\377\377\377\0L\337\"\36N\\NuL\337\"\36N\\/8\f\310Nuv\nC\372\0\264a\0\361\232\2\200\377\377\377\36J\200f\322C\354\377\0t\4v\1z\0a\0\356V\2\200\377\377\377\36J\200f\272E\354\377\0C\372\0h\f\252X68K\0\0f\250C\372\0Z *\0\4\260\274\0\0\237\331e\0\377zC\351\0\24\260\274\0\1=\35e\0\377lC\351\0\24`\0\377dK\371\0\0\t\376 \1\340X\300\274\0\0\0\17\333\300\20<\0(\f)\0\7\0\3g\20\20<\0\24\f)\0\2\0\4g\4\20<\0\n\32\200B\200Nu\1\1\0\3\0015\200\0\0\0\1\1\0\3\1T\200\0\0\0\1\1\0\3\2f\200\0\0\0\1\1\0\3\2\230\200\0\0\0\1\1\0\7\2f\200\0\0\0\1\1\0\7\2\230\200\0\0\0".getBytes (XEiJ.ISO_8859_1); 2134: 2135: //---------------------------------------------------------------------------------------- 2136: //SCSIパーティションIPL 2137: // 各パーティションの先頭に書き込まれる 2138: // HUMAN.SYSを読み込んで起動する 2139: /* 2140: public static final int[] SPC_PARTITION_IPL = { 2141: // perl -e "do'sjdump.pl';$p=0x8000;$m=2;$o=0x7bc2;$l=0x7e88-$o;open IN,'HUMAN302.XDF'or die;binmode IN;seek IN,1024*592,0;read IN,$b,64;seek IN,1024*592+vec($b,15,32)+32*$m,0;read IN,$b,32;seek IN,1024*592+vec($b,7,32)+64+$o,0;read IN,$b,$l;close IN;sjdumpcode($b,0,$l,$p)" 2142: 0x60,0x24,0x53,0x48,0x41,0x52,0x50,0x2f,0x4b,0x47,0x20,0x20,0x20,0x20,0x31,0x2e, //00008000 `$SHARP/KG 1. 2143: 0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00008010 00.............. 2144: 0x00,0x00,0x00,0x00,0x00,0x00,0x4f,0xfa,0xff,0xd8,0x4e,0x56,0xff,0xfc,0x70,0xf5, //00008020 ......O..リNV..p. 2145: 0x72,0x25,0x43,0xfa,0x02,0x92,0x4e,0x4f,0x22,0x29,0x00,0x04,0xe0,0x89,0xe2,0x89, //00008030 r%C..誰O")..煢竕 2146: 0x2d,0x41,0xff,0xfc,0x74,0x01,0xd4,0xba,0xff,0xda,0x26,0x3c,0x00,0x00,0x04,0x00, //00008040 -A..t.ヤコ.レ&<.... 2147: 0x43,0xfa,0x02,0x74,0x61,0x00,0x00,0xf2,0xb0,0xbc,0x00,0x00,0x00,0x00,0x66,0x00, //00008050 C..ta...ーシ....f. 2148: 0x01,0x0a,0x42,0x81,0x12,0x3a,0xff,0xaf,0x42,0x82,0x34,0x3a,0xff,0xaa,0x42,0x83, //00008060 ..B..:.ッB.4:.ェB. 2149: 0x16,0x3a,0xff,0xab,0x42,0x85,0x3a,0x3a,0xff,0xa0,0xc2,0xc3,0xd4,0x81,0xd4,0xba, //00008070 .:.ォB.::..ツテヤ.ヤコ 2150: 0xff,0xa2,0x43,0xfa,0x02,0x42,0x26,0x3c,0x00,0x00,0x04,0x00,0x61,0x00,0x00,0xba, //00008080 .「C..B&<....a..コ 2151: 0x4a,0x80,0x66,0x00,0x00,0xd6,0x3c,0x3c,0x00,0x1f,0x24,0x49,0x47,0xfa,0x02,0x06, //00008090 J.f..ヨ<<..$IG... 2152: 0x7e,0x0a,0x10,0x1a,0x80,0x3c,0x00,0x20,0xb0,0x1b,0x66,0x06,0x51,0xcf,0xff,0xf4, //000080a0 ~....<. ー.f.Qマ.. 2153: 0x60,0x22,0xd3,0xfc,0x00,0x00,0x00,0x20,0x51,0xce,0xff,0xe0,0x43,0xfa,0x01,0x59, //000080b0 `"モ.... Qホ.澆..Y 2154: 0x2f,0x09,0x43,0xfa,0x00,0xe3,0x61,0x00,0x00,0xba,0x22,0x5f,0x61,0x00,0x00,0xb4, //000080c0 /.C..綢..コ"_a..エ 2155: 0x70,0xfe,0x4e,0x4f,0xea,0x8d,0xd4,0x85,0x7a,0x00,0x3a,0x29,0x00,0x1a,0xe0,0x5d, //000080d0 p.NO鼾ヤ.z.:)..濔 2156: 0x55,0x85,0x10,0x3a,0xff,0x30,0xca,0xc0,0xd4,0x85,0x48,0xe7,0x70,0x00,0x43,0xfa, //000080e0 U..:.0ハタヤ.H輛.C. 2157: 0x01,0xd6,0x26,0x3c,0x00,0x00,0x04,0x00,0x61,0x4e,0x4c,0xdf,0x00,0x0e,0x43,0xfa, //000080f0 .ヨ&<....aNL゚..C. 2158: 0x01,0xc6,0x0c,0x59,0x48,0x55,0x66,0x6a,0x54,0x89,0x0c,0x99,0x00,0x00,0x68,0x00, //00008100 .ニ.YHUfjT.....h. 2159: 0x66,0x68,0x2f,0x19,0x26,0x19,0xd6,0x99,0x2f,0x03,0x2f,0x19,0x22,0x7c,0x00,0x00, //00008110 fh/.&.ヨ././."|.. 2160: 0x67,0xc0,0xd6,0xbc,0x00,0x00,0x00,0x40,0x61,0x1e,0x22,0x1f,0x24,0x1f,0x22,0x5f, //00008120 gタヨシ...@a.".$."_ 2161: 0x4a,0x80,0x66,0x36,0x41,0xf9,0x00,0x00,0x68,0x00,0xd1,0xc2,0x53,0x81,0x65,0x04, //00008130 J.f6A...h.ムツS‘. 2162: 0x42,0x18,0x60,0xf8,0x4e,0x5e,0x4e,0xd1,0x48,0xe7,0x3c,0x00,0x2a,0x2e,0xff,0xfc, //00008140 B.`.N^NムH.<.*... 2163: 0xd6,0xbc,0x00,0x00,0x03,0xff,0xe0,0x8b,0xea,0xab,0xe5,0x8a,0xea,0xaa,0x70,0xf5, //00008150 ヨシ....煖.ォ蜉.ェp. 2164: 0x72,0x21,0x4e,0x4f,0x4c,0xdf,0x00,0x3c,0x4e,0x75,0x43,0xfa,0x00,0xcf,0x60,0x00, //00008160 r!NOL゚.<NuC..マ`. 2165: 0xff,0x50,0x43,0xfa,0x00,0xe6,0x60,0x00,0xff,0x48,0x43,0xfa,0x01,0x00,0x60,0x00, //00008170 .PC..訌..HC...`. 2166: 0xff,0x40,0x70,0x21,0x4e,0x4f,0x4e,0x75,0x1a,0x53,0x43,0x53,0x49,0x20,0x49,0x50, //00008180 .@p!NONu.SCSI IP 2167: 0x4c,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x31,0x39,0x39,0x30, //00008190 L Copyright 1990 2168: 0x20,0x53,0x48,0x41,0x52,0x50,0x00,0x1b,0x5b,0x34,0x37,0x6d,0x1b,0x5b,0x31,0x33, //000081a0 SHARP..[47m.[13 2169: 0x3b,0x32,0x36,0x48,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, //000081b0 ;26H 2170: 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, //000081c0 2171: 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, //000081d0 2172: 0x20,0x1b,0x5b,0x31,0x34,0x3b,0x32,0x36,0x48,0x20,0x20,0x20,0x20,0x20,0x20,0x20, //000081e0 .[14;26H 2173: 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, //000081f0 2174: 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, //00008200 2175: 0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x1b,0x5b,0x31,0x34,0x3b,0x33,0x35,0x48,0x48, //00008210 ..[14;35HH 2176: 0x75,0x6d,0x61,0x6e,0x2e,0x73,0x79,0x73,0x20,0x82,0xaa,0x20,0x8c,0xa9,0x82,0xc2, //00008220 uman.sys が 見つ 2177: 0x82,0xa9,0x82,0xe8,0x82,0xdc,0x82,0xb9,0x82,0xf1,0x00,0x1b,0x5b,0x31,0x34,0x3b, //00008230 かりません..[14; 2178: 0x33,0x38,0x48,0x83,0x66,0x83,0x42,0x83,0x58,0x83,0x4e,0x82,0xaa,0x81,0x40,0x93, //00008240 38Hディスクが 読 2179: 0xc7,0x82,0xdf,0x82,0xdc,0x82,0xb9,0x82,0xf1,0x00,0x1b,0x5b,0x31,0x34,0x3b,0x33, //00008250 めません..[14;3 2180: 0x36,0x48,0x48,0x75,0x6d,0x61,0x6e,0x2e,0x73,0x79,0x73,0x20,0x82,0xaa,0x20,0x89, //00008260 6HHuman.sys が 壊 2181: 0xf3,0x82,0xea,0x82,0xc4,0x82,0xa2,0x82,0xdc,0x82,0xb7,0x00,0x1b,0x5b,0x31,0x34, //00008270 れています..[14 2182: 0x3b,0x33,0x33,0x48,0x48,0x75,0x6d,0x61,0x6e,0x2e,0x73,0x79,0x73,0x20,0x82,0xcc, //00008280 ;33HHuman.sys の 2183: 0x20,0x83,0x41,0x83,0x68,0x83,0x8c,0x83,0x58,0x82,0xaa,0x88,0xd9,0x8f,0xed,0x82, //00008290 アドレスが異常で 2184: 0xc5,0x82,0xb7,0x00,0x68,0x75,0x6d,0x61,0x6e,0x20,0x20,0x20,0x73,0x79,0x73,0x00, //000082a0 す.human sys. 2185: 0x53,0x43,0x53,0x49,0x20,0x49,0x50,0x4c,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e, //000082b0 SCSI IPL version 2186: 0x20,0x31,0x2e,0x30,0x31,0x00, //000082c0 1.01. 2187: }; 2188: */ 2189: // perl misc/itob.pl xeij/SPC.java SPC_PARTITION_IPL 2190: public static final byte[] SPC_PARTITION_IPL = "`$SHARP/KG 1.00\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0O\372\377\330NV\377\374p\365r%C\372\2\222NO\")\0\4\340\211\342\211-A\377\374t\1\324\272\377\332&<\0\0\4\0C\372\2ta\0\0\362\260\274\0\0\0\0f\0\1\nB\201\22:\377\257B\2024:\377\252B\203\26:\377\253B\205::\377\240\302\303\324\201\324\272\377\242C\372\2B&<\0\0\4\0a\0\0\272J\200f\0\0\326<<\0\37$IG\372\2\6~\n\20\32\200<\0 \260\33f\6Q\317\377\364`\"\323\374\0\0\0 Q\316\377\340C\372\1Y/\tC\372\0\343a\0\0\272\"_a\0\0\264p\376NO\352\215\324\205z\0:)\0\32\340]U\205\20:\3770\312\300\324\205H\347p\0C\372\1\326&<\0\0\4\0aNL\337\0\16C\372\1\306\fYHUfjT\211\f\231\0\0h\0fh/\31&\31\326\231/\3/\31\"|\0\0g\300\326\274\0\0\0@a\36\"\37$\37\"_J\200f6A\371\0\0h\0\321\302S\201e\4B\30`\370N^N\321H\347<\0*.\377\374\326\274\0\0\3\377\340\213\352\253\345\212\352\252p\365r!NOL\337\0<NuC\372\0\317`\0\377PC\372\0\346`\0\377HC\372\1\0`\0\377@p!NONu\32SCSI IPL Copyright 1990 SHARP\0\33[47m\33[13;26H \33[14;26H \0\33[14;35HHuman.sys \202\252 \214\251\202\302\202\251\202\350\202\334\202\271\202\361\0\33[14;38H\203f\203B\203X\203N\202\252\201@\223\307\202\337\202\334\202\271\202\361\0\33[14;36HHuman.sys \202\252 \211\363\202\352\202\304\202\242\202\334\202\267\0\33[14;33HHuman.sys \202\314 \203A\203h\203\214\203X\202\252\210\331\217\355\202\305\202\267\0human sys\0SCSI IPL version 1.01\0".getBytes (XEiJ.ISO_8859_1); 2191: 2192: 2193: 2194: //======================================================================================== 2195: //$$SPI SCSIポート 2196: public static final class SPCChip { 2197: 2198: public boolean spiExpansion; //false=内蔵SCSI,true=拡張SCSI 2199: public int spiDMAChannel; //使用するDMAのチャンネル。1=内蔵SCSI,2=拡張SCSI 2200: 2201: //レジスタ 2202: // ゼロ拡張 2203: public int spiBdid; //0x01 2204: public int spiSctl; //0x03 2205: public int spiScmd; //0x05 2206: public int spiInts; //0x09 2207: public int spiPsns; //0x0b 2208: public int spiSsts; //0x0d 2209: public int spiSerr; //0x0f 2210: public int spiPctl; //0x11 2211: public int spiMbc; //0x13 2212: public int spiDreg; //0x15 2213: public int spiTemp; //0x17 2214: public int spiTchTcmTcl; //0x19,0x1b,0x1d 2215: 2216: public int spiTargetBase; //現在のspcUnitArrayの開始番号。リセット時に設定される。-8=ユニットなし 2217: public SCUnit spiTargetUnit; //現在のターゲット。null=バスフリー 2218: 2219: public byte[] spiReadHandle; //転送(ターゲット→イニシエータ)の対象の配列 2220: public byte[] spiWriteHandle; //転送(イニシエータ→ターゲット)の対象の配列 2221: public int spiBufferIndex; //次に転送する位置 2222: public int spiBufferLimit; //転送を終了する位置 2223: public int spiBufferCount; //バッファの充填または排出を行う残り回数 2224: public final byte[] spiCommandBuffer = new byte[16]; //コマンドバッファ 2225: public int spiLUN; //LUN 2226: public final byte[] spiStatusBuffer = new byte[1]; //ステータスバッファ 2227: public final byte[] spiMessageOutBuffer = new byte[1]; //メッセージアウトバッファ 2228: public final byte[] spiMessageInBuffer = new byte[1]; //メッセージインバッファ 2229: public final byte[][] spiSenseBuffer = new byte[][] { 2230: new byte[8], 2231: new byte[8], 2232: new byte[8], 2233: new byte[8], 2234: new byte[8], 2235: new byte[8], 2236: new byte[8], 2237: new byte[8], 2238: }; //センスバッファ 2239: public final byte[] spiDataInBuffer = new byte[804]; //データインバッファ(Inquiry/Mode Sense(6)/Read Capacity/Read TOC) 2240: public final byte[] spiDataOutBuffer = new byte[255]; //データアウトバッファ(Mode Select(6)/Assign Drive(SASI)) 2241: 2242: public SPCChip (boolean expansion) { 2243: 2244: spiExpansion = expansion; 2245: spiDMAChannel = expansion ? 2 : 1; 2246: 2247: spiReset (-8); 2248: 2249: } //SPCChip(int) 2250: 2251: //spcChip.spiReset (targetBase) 2252: // SPCリセット 2253: public void spiReset (int targetBase) { 2254: 2255: spiTargetBase = targetBase; 2256: 2257: spiBdid = SPC_BDID_I7; //自分のSCSI-IDは7 2258: spiSctl = SPC_SCTL_RD; //ハードウェアリセット 2259: spiScmd = 0; 2260: spiInts = 0; 2261: spiPsns = 0; 2262: spiSsts = 0; 2263: spiSerr = 0; 2264: spiPctl = 0; 2265: spiMbc = 0; 2266: spiDreg = 0; 2267: spiTemp = 0; 2268: spiTchTcmTcl = 0; 2269: spiUpdateSSTS (); 2270: 2271: spiTargetUnit = null; 2272: 2273: spiReadHandle = null; 2274: spiWriteHandle = null; 2275: spiBufferIndex = 0; 2276: spiBufferLimit = 0; 2277: 2278: } //spiReset(int) 2279: 2280: //spiTini () 2281: // 後始末 2282: public void spiTini () { 2283: 2284: //イメージファイルに書き出す 2285: for (SCUnit unit : SPC.spcUnitArray) { 2286: unit.scuTini (); 2287: } 2288: 2289: } //spiTini() 2290: 2291: //d = spcChip.spiPeek (a) 2292: // SPCポートピーク 2293: // ゼロ拡張 2294: public int spiPeek (int a) { 2295: int d = 0; 2296: switch (a & 31) { 2297: case SPC_BDID: //0x01 2298: d = spiBdid; //8bitで読み出す 2299: break; 2300: case SPC_SCTL: //0x03 2301: d = spiSctl; 2302: break; 2303: case SPC_SCMD: //0x05 2304: d = spiScmd; 2305: break; 2306: case SPC_INTS: //0x09 2307: d = spiInts; 2308: break; 2309: case SPC_PSNS: //0x0b 2310: d = spiPsns; 2311: break; 2312: case SPC_SSTS: //0x0d 2313: d = spiSsts; 2314: break; 2315: case SPC_SERR: //0x0f 2316: d = spiSerr; 2317: break; 2318: case SPC_PCTL: //0x11 2319: d = spiPctl; 2320: break; 2321: case SPC_MBC: //0x13 2322: d = spiMbc; 2323: break; 2324: case SPC_DREG: //0x15 2325: d = spiDreg; 2326: break; 2327: case SPC_TEMP: //0x17 2328: d = spiTemp; 2329: break; 2330: case SPC_TCH: //0x19 2331: d = spiTchTcmTcl >>> 16; 2332: break; 2333: case SPC_TCM: //0x1b 2334: d = (char) spiTchTcmTcl >>> 8; 2335: break; 2336: case SPC_TCL: //0x1d 2337: d = spiTchTcmTcl & 255; 2338: break; 2339: } 2340: if (SPC_DEBUG_PORT) { 2341: System.out.printf ("%08x spiPeek(0x%08x(%s))=0x%02x\n", XEiJ.regPC0, a, SPC_REGISTER_NAME[a & 31], d); 2342: } 2343: return d; 2344: } //spiPeek(int) 2345: 2346: //d = spcChip.spiRead (a) 2347: // SPCポートリード 2348: // ゼロ拡張 2349: public int spiRead (int a) { 2350: int d = 0; 2351: switch (a & 31) { 2352: case SPC_BDID: //0x01 2353: d = spiBdid; //8bitで読み出す 2354: break; 2355: case SPC_SCTL: //0x03 2356: d = spiSctl; 2357: break; 2358: case SPC_SCMD: //0x05 2359: d = spiScmd; 2360: break; 2361: case SPC_INTS: //0x09 2362: d = spiInts; 2363: break; 2364: case SPC_PSNS: //0x0b 2365: d = spiPsns; 2366: break; 2367: case SPC_SSTS: //0x0d 2368: d = spiSsts; 2369: break; 2370: case SPC_SERR: //0x0f 2371: d = spiSerr; 2372: break; 2373: case SPC_PCTL: //0x11 2374: d = spiPctl; 2375: break; 2376: case SPC_MBC: //0x13 2377: d = spiMbc; 2378: break; 2379: case SPC_DREG: //0x15 2380: if ((spiSsts & SPC_SSTS_TRIP) != 0 && spiTchTcmTcl != 0) { //転送中 2381: if (spiReadHandle != null && spiBufferIndex < spiBufferLimit) { 2382: spiDreg = spiReadHandle[spiBufferIndex++] & 255; //データを入力する 2383: if (spiBufferIndex == spiBufferLimit && spiBufferCount != 0) { //バッファを再充填する必要がある 2384: spiTargetUnit.scuReadImage (); 2385: spiBufferCount--; 2386: spiBufferIndex = 0; 2387: } 2388: } 2389: spiTchTcmTcl--; //0でなかったのだから負になることはない 2390: spiUpdateSSTS (); 2391: if (spiBufferCount == 0) { //最後のバッファ 2392: if (spiTchTcmTcl == 0) { //転送終了 2393: spiTransferComplete (); 2394: } else if (SPC_EXPOSE_DATAINI_BUG && 2395: spiTchTcmTcl == 8 && //残りが8バイトになった 2396: (spiPsns & SPC_PHASE_MASK) == SPC_DATA_IN_PHASE) { //データインフェーズ 2397: spiPsns = (spiPsns & ~SPC_PHASE_MASK) | SPC_STATUS_PHASE; //ステータスフェーズに切り替える 2398: spiSetInterruptStatus (SPC_INTS_SR); //INTSのSRをセットする 2399: } 2400: } 2401: } 2402: d = spiDreg; 2403: break; 2404: case SPC_TEMP: //0x17 2405: d = spiTemp; 2406: break; 2407: case SPC_TCH: //0x19 2408: d = spiTchTcmTcl >>> 16; 2409: break; 2410: case SPC_TCM: //0x1b 2411: d = (char) spiTchTcmTcl >>> 8; 2412: break; 2413: case SPC_TCL: //0x1d 2414: d = spiTchTcmTcl & 255; 2415: break; 2416: } 2417: if (SPC_DEBUG_PORT) { 2418: System.out.printf ("%08x spiRead(0x%08x(%s))=0x%02x\n", XEiJ.regPC0, a, SPC_REGISTER_NAME[a & 31], d); 2419: } 2420: return d; 2421: } //spiRead(int) 2422: 2423: //d = spcChip.spiWrite (a, d) 2424: // SPCポートライト 2425: public void spiWrite (int a, int d) { 2426: d &= 255; 2427: if (SPC_DEBUG_PORT) { 2428: System.out.printf ("%08x spiWrite(0x%08x(%s),0x%02x)\n", XEiJ.regPC0, a, SPC_REGISTER_NAME[a & 31], d & 255); 2429: } 2430: switch (a & 31) { 2431: case SPC_BDID: //0x01 2432: spiBdid = 1 << (d & 7); //3bitで書き込む 2433: break; 2434: case SPC_SCTL: //0x03 2435: spiSctl = d; 2436: break; 2437: case SPC_SCMD: //0x05 2438: spiScmd = d; 2439: switch (spiScmd & SPC_SCMD_CC) { 2440: case SPC_SCMD_CC_BR: //Bus Release。ターゲットのときバスフリーフェーズへ移行 2441: if (spiTargetUnit != null) { 2442: spiBusFreePhase (); //バスフリーフェーズに移行する 2443: } 2444: break; 2445: case SPC_SCMD_CC_SL: //Select。セレクション/リセレクションを開始 2446: { 2447: if ((spiPctl & SPC_PCTL_SR) == SPC_PCTL_SR_R) { //リセレクション 2448: //!!! 2449: if (SPC_REPORT_UNIMPLEMENTED_COMMAND) { 2450: System.out.println (String.format ("%08x Unimplemented Command: Reselection\n", XEiJ.regPC0)); 2451: } 2452: spiSetInterruptStatus (SPC_INTS_RC); //Reset Conditionで強制終了 2453: break; 2454: } 2455: int u = 0; 2456: SCUnit unit = null; 2457: boolean timeOut = false; 2458: if (spiTargetBase < 0) { //接続するユニットが存在しない 2459: timeOut = true; 2460: } else { 2461: u = Integer.numberOfTrailingZeros (spiTemp & ~spiBdid); //ターゲットのID 2462: if (u > 7) { //ターゲットのIDが指定されていないか、自分のSCSI-IDと衝突している 2463: timeOut = true; 2464: } else { 2465: unit = SPC.spcUnitArray[spiTargetBase + u]; //ターゲットのユニット 2466: if (!unit.isConnected ()) { //ユニットは存在するが接続されていない 2467: timeOut = true; 2468: } 2469: } 2470: } 2471: if (timeOut) { 2472: //ユニットが存在しないときセレクションフェーズを開始して直ちにタイムアウトにする 2473: spiSsts |= SPC_SSTS_INIT | SPC_SSTS_BUSY; 2474: spiPsns |= SPC_PSNS_SEL; 2475: spiTchTcmTcl = 0; 2476: spiSetInterruptStatus (SPC_INTS_TO); //Time Out 2477: spiUpdateSSTS (); 2478: break; 2479: } 2480: spiTargetUnit = unit; //接続する 2481: spiSsts |= SPC_SSTS_INIT; //自分がイニシエータになる 2482: spiSetInterruptStatus (SPC_INTS_CC); //コマンド終了 2483: if ((spiPsns & SPC_PSNS_ATN) != 0) { //ATN=1 2484: spiMessageOutPhase (); //メッセージアウトフェーズに移行する 2485: } else { 2486: spiCommandPhase (); //コマンドフェーズに移行する 2487: } 2488: } 2489: break; 2490: case SPC_SCMD_CC_RA: //Reset ATN。ATNをクリア 2491: spiPsns &= ~SPC_PSNS_ATN; 2492: break; 2493: case SPC_SCMD_CC_SA: //Set ATN。ATNをセット 2494: spiPsns |= SPC_PSNS_ATN; 2495: break; 2496: case SPC_SCMD_CC_TR: //Transfer。転送開始 2497: spiUpdateSSTS (); 2498: spiSsts |= SPC_SSTS_BUSY | SPC_SSTS_TRIP; //転送開始 2499: break; 2500: case SPC_SCMD_CC_TP: //Transfer Pause。転送中断 2501: //!!! 2502: if (SPC_REPORT_UNIMPLEMENTED_COMMAND) { 2503: System.out.println (String.format ("%08x Unimplemented Command: Transfer Pause\n", XEiJ.regPC0)); 2504: } 2505: break; 2506: case SPC_SCMD_CC_RR: //Reset ACK/REQ。CPU転送のときACK/REQをクリア 2507: if ((spiPsns & SPC_PSNS_IO) == 0) { //Out 2508: if (spiWriteHandle == null) { //転送中ではない 2509: break; 2510: } 2511: spiPsns &= ~SPC_PSNS_ACK; //イニシエータがACKを0にする 2512: if (spiBufferIndex < spiBufferLimit) { //継続 2513: spiPsns |= SPC_PSNS_REQ; //ターゲットがREQを1にする 2514: HD63450.dmaFallPCL (spiDMAChannel); 2515: break; 2516: } 2517: spiTransferComplete (); //転送終了 2518: } else { //In 2519: if (spiReadHandle == null) { //転送中ではない 2520: break; 2521: } 2522: spiPsns &= ~SPC_PSNS_REQ; //イニシエータがREQを0にする 2523: if (spiBufferIndex < spiBufferLimit) { //継続 2524: spiPsns |= SPC_PSNS_REQ; //ターゲットがREQを1にする 2525: HD63450.dmaFallPCL (spiDMAChannel); 2526: break; 2527: } 2528: spiTransferComplete (); //転送終了 2529: } 2530: break; 2531: case SPC_SCMD_CC_SR: //Set ACK/REQ。CPU転送のときACK/REQをセット 2532: if ((spiPsns & SPC_PSNS_IO) == 0) { //Out 2533: if (spiWriteHandle == null) { //転送中ではない 2534: break; 2535: } 2536: spiPsns |= SPC_PSNS_ACK; //イニシエータがACKを1にする。spiTempに出力データの準備ができている 2537: if (spiBufferIndex < spiBufferLimit) { 2538: spiWriteHandle[spiBufferIndex++] = (byte) spiTemp; //データを出力する 2539: if ((spiPctl & SPC_PCTL_TP) == SPC_COMMAND_PHASE && //コマンドフェーズの 2540: spiBufferIndex == 1) { //1バイト目 2541: int oc = spiCommandBuffer[0] & 255; //オペレーションコード 2542: int group = oc >> 5; //グループ 2543: // 7 6 5 4 3 2 1 0 2544: spiBufferLimit = (int) ((0x01060c10010a0a06L >>> (group << 3)) & 255); //CDB(Command Descriptor Block)の長さ 2545: } 2546: //!!! ディスクイメージ以外のバッファは溢れてはならない 2547: if (spiBufferIndex == spiBufferLimit && spiBufferCount != 0) { //バッファから排出する必要がある 2548: spiTargetUnit.scuWriteImage (); 2549: if (--spiBufferCount != 0) { 2550: spiBufferIndex = 0; 2551: } 2552: } 2553: spiUpdateSSTS (); 2554: } 2555: spiPsns &= ~SPC_PSNS_REQ; //ターゲットがREQを0にする 2556: } else { //In 2557: if (spiReadHandle == null) { //転送中ではない 2558: break; 2559: } 2560: spiPsns |= SPC_PSNS_ACK; //イニシエータがACKを1にする。spiReadHandle[spiBufferIndex]に入力データの準備ができている 2561: if (spiBufferIndex < spiBufferLimit) { 2562: spiTemp = spiReadHandle[spiBufferIndex++] & 255; //データを入力する 2563: if (spiBufferIndex == spiBufferLimit && spiBufferCount != 0) { //バッファを再充填する必要がある 2564: spiTargetUnit.scuReadImage (); 2565: spiBufferCount--; 2566: spiBufferIndex = 0; 2567: } 2568: spiUpdateSSTS (); 2569: } 2570: spiPsns &= ~SPC_PSNS_REQ; //ターゲットがREQを0にする 2571: } 2572: break; 2573: } 2574: break; 2575: case SPC_INTS: //0x09 2576: //1を書き込んだビットだけ0クリアする 2577: // move.b INTS,INTSでクリアできる 2578: if ((spiPsns & SPC_PSNS_SEL) != 0 && //セレクションフェーズで 2579: (spiInts & d & SPC_INTS_TO) != 0) { //Time Outをクリアするとき 2580: spiInts &= ~d; 2581: if (spiTchTcmTcl != 0) { //TCH,TCM,TCLが0でないとき 2582: //再びタイムアウトにする 2583: spiTchTcmTcl = 0; 2584: spiSetInterruptStatus (SPC_INTS_TO); //Time Out 2585: } else { //TCH,TCM,TCLが0のとき 2586: //セレクションフェーズを終了する 2587: spiPsns &= ~SPC_PSNS_SEL; 2588: spiSsts &= ~(SPC_SSTS_INIT | SPC_SSTS_BUSY); 2589: spiUpdateSSTS (); 2590: } 2591: } else { 2592: spiInts &= ~d; 2593: } 2594: break; 2595: case SPC_PSNS: //0x0b 2596: spiPsns = d; 2597: break; 2598: case SPC_SSTS: //0x0d 2599: //Readのみ 2600: break; 2601: case SPC_SERR: //0x0f 2602: //Readのみ 2603: break; 2604: case SPC_PCTL: //0x11 2605: spiPctl = d; 2606: break; 2607: case SPC_MBC: //0x13 2608: //Readのみ 2609: break; 2610: case SPC_DREG: //0x15 2611: spiDreg = d; 2612: if ((spiSsts & SPC_SSTS_TRIP) != 0 && spiTchTcmTcl != 0) { //転送中 2613: if (spiWriteHandle != null && spiBufferIndex < spiBufferLimit) { 2614: spiWriteHandle[spiBufferIndex++] = (byte) spiDreg; //データを出力する 2615: if ((spiPctl & SPC_PCTL_TP) == SPC_COMMAND_PHASE && //コマンドフェーズの 2616: spiBufferIndex == 1) { //1バイト目 2617: int oc = spiCommandBuffer[0] & 255; //オペレーションコード 2618: int group = oc >> 5; //グループ 2619: // 7 6 5 4 3 2 1 0 2620: spiBufferLimit = (int) ((0x01060c10010a0a06L >>> (group << 3)) & 255); //CDB(Command Descriptor Block)の長さ 2621: } 2622: //!!! ディスクイメージ以外のバッファは溢れてはならない 2623: if (spiBufferIndex == spiBufferLimit && spiBufferCount != 0) { //バッファから排出する必要がある 2624: spiTargetUnit.scuWriteImage (); 2625: if (--spiBufferCount != 0) { 2626: spiBufferIndex = 0; 2627: } 2628: } 2629: } 2630: spiTchTcmTcl--; //0でなかったのだから負になることはない 2631: spiUpdateSSTS (); 2632: if (spiTchTcmTcl == 0 || spiBufferIndex == spiBufferLimit) { //転送終了。最後のブロックでなければspiBufferIndexは巻き戻されている 2633: spiTransferComplete (); 2634: } 2635: } 2636: break; 2637: case SPC_TEMP: //0x17 2638: spiTemp = d; 2639: break; 2640: case SPC_TCH: //0x19 2641: spiTchTcmTcl = d << 16 | (char) spiTchTcmTcl; 2642: spiUpdateSSTS (); 2643: break; 2644: case SPC_TCM: //0x1b 2645: spiTchTcmTcl = spiTchTcmTcl & 0xff00ff | d << 8; 2646: spiUpdateSSTS (); 2647: break; 2648: case SPC_TCL: //0x1d 2649: spiTchTcmTcl = spiTchTcmTcl & 0xffff00 | d; 2650: spiUpdateSSTS (); 2651: break; 2652: } 2653: } //spiWrite(int,int) 2654: 2655: //spiTransferComplete () 2656: // 転送終了 2657: public void spiTransferComplete () { 2658: if ((spiSsts & SPC_SSTS_TRIP) != 0) { 2659: spiSetInterruptStatus (SPC_INTS_CC); //転送終了 2660: spiSsts &= ~(SPC_SSTS_BUSY | SPC_SSTS_TRIP); 2661: } 2662: switch (spiPctl & SPC_PCTL_TP) { //転送フェーズ 2663: case SPC_DATA_OUT_PHASE: //データアウトフェーズの転送が終了した 2664: { 2665: int oc = spiCommandBuffer[0] & 255; //オペレーションコード 2666: if (oc == 0x15) { //Mode Select(6) 2667: if (SPC_REPORT_UNIMPLEMENTED_COMMAND) { //未実装コマンドを表示する 2668: StringBuilder sb = new StringBuilder (); 2669: sb.append (String.format ("%08x DataOutPhaseComplete(0x%02x(%s)) [", XEiJ.regPC0, oc, SPC_COMMAND_NAME[oc])); 2670: for (int i = 0; i < spiBufferLimit; i++) { 2671: if (i > 0) { 2672: sb.append (','); 2673: } 2674: sb.append (String.format ("0x%02x", spiDataOutBuffer[i] & 255)); 2675: } 2676: sb.append (']'); 2677: System.out.println (sb.toString ()); 2678: } 2679: } 2680: } 2681: spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 2682: break; 2683: case SPC_DATA_IN_PHASE: //データインフェーズの転送が終了した 2684: { 2685: int oc = spiCommandBuffer[0] & 255; //オペレーションコード 2686: if (oc == 0x03) { //Request Sense 2687: Arrays.fill (spiSenseBuffer[spiLUN], (byte) 0); //センスデータを消去する 2688: } 2689: } 2690: spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 2691: break; 2692: case SPC_COMMAND_PHASE: //コマンドフェーズの転送が終了した 2693: { 2694: int oc = spiCommandBuffer[0] & 255; //オペレーションコード 2695: if (spiBufferIndex == 1) { 2696: int group = oc >> 5; //グループ 2697: // 7 6 5 4 3 2 1 0 2698: spiBufferLimit = (int) ((0x01060c10010a0a06L >>> (group << 3)) & 255); //CDB(Command Descriptor Block)の長さ 2699: if (spiBufferIndex < spiBufferLimit) { 2700: //次のデータを要求する 2701: spiPsns |= SPC_PSNS_REQ; //ターゲットがREQを1にする 2702: HD63450.dmaFallPCL (spiDMAChannel); 2703: break; 2704: } 2705: } 2706: spiLUN = (spiCommandBuffer[1] >> 5) & 7; //LUN 2707: spiTargetUnit.scuCommand (oc); //コマンドを実行する 2708: } 2709: break; 2710: case SPC_STATUS_PHASE: //ステータスフェーズの転送が終了した 2711: spiMessageInPhase (); //メッセージインフェーズに移行する 2712: break; 2713: case SPC_MESSAGE_OUT_PHASE: //メッセージアウトフェーズの転送が終了した 2714: spiCommandPhase (); //コマンドフェーズに移行する 2715: break; 2716: case SPC_MESSAGE_IN_PHASE: //メッセージインフェーズの転送が終了した 2717: spiBusFreePhase (); //バスフリーフェーズに移行する 2718: break; 2719: } 2720: } //spiTransferComplete() 2721: 2722: //spiBusFreePhase () 2723: // バスフリーフェーズに移行する 2724: public void spiBusFreePhase () { 2725: if (SPC_DEBUG_PHASE) { 2726: System.out.printf ("%08x spiBusFreePhase()\n", XEiJ.regPC0); 2727: } 2728: spiWriteHandle = null; 2729: spiReadHandle = null; 2730: spiSsts &= ~SPC_SSTS_INIT; //自分がイニシエータではなくなる 2731: spiPsns = 0; 2732: spiTargetUnit = null; 2733: if ((spiPctl & SPC_PCTL_IE) != 0) { 2734: spiSetInterruptStatus (SPC_INTS_DC); 2735: } 2736: } //spiBusFreePhase() 2737: 2738: //spiCommandPhase () 2739: // コマンドフェーズに移行する 2740: public void spiCommandPhase () { 2741: if (SPC_DEBUG_PHASE) { 2742: System.out.printf ("%08x spiCommandPhase()\n", XEiJ.regPC0); 2743: } 2744: spiWriteHandle = spiCommandBuffer; 2745: spiReadHandle = null; 2746: spiBufferIndex = 0; 2747: spiBufferLimit = 1; 2748: spiUpdateSSTS (); 2749: spiPsns = SPC_PSNS_REQ | SPC_COMMAND_PHASE; 2750: HD63450.dmaFallPCL (spiDMAChannel); 2751: } //spiCommandPhase() 2752: 2753: //spiDataInPhase (handle, index, limit, count) 2754: // データインフェーズに移行する 2755: public void spiDataInPhase (byte[] handle, int index, int limit, int count) { 2756: if (SPC_DEBUG_PHASE) { 2757: System.out.printf ("%08x spiDataInPhase(handle,0x%08x,0x%08x,0x%08x)\n", XEiJ.regPC0, index, limit, count); 2758: } 2759: spiWriteHandle = null; 2760: spiReadHandle = handle; 2761: spiBufferIndex = index; 2762: spiBufferLimit = limit; 2763: spiBufferCount = count; 2764: spiUpdateSSTS (); 2765: spiPsns = SPC_PSNS_REQ | SPC_DATA_IN_PHASE; 2766: HD63450.dmaFallPCL (spiDMAChannel); 2767: } //spiDataInPhase(byte[],int,int,int) 2768: 2769: //spiDataOutPhase (handle, index, limit, count) 2770: // データアウトフェーズに移行する 2771: public void spiDataOutPhase (byte[] handle, int index, int limit, int count) { 2772: if (SPC_DEBUG_PHASE) { 2773: System.out.printf ("%08x spiDataOutPhase(handle,0x%08x,0x%08x,0x%08x)\n", XEiJ.regPC0, index, limit, count); 2774: } 2775: spiWriteHandle = handle; 2776: spiReadHandle = null; 2777: spiBufferIndex = index; 2778: spiBufferLimit = limit; 2779: spiBufferCount = count; 2780: spiUpdateSSTS (); 2781: spiPsns = SPC_PSNS_REQ | SPC_DATA_OUT_PHASE; 2782: HD63450.dmaFallPCL (spiDMAChannel); 2783: } //spiDataOutPhase(byte[],int,int,int) 2784: 2785: //spiStatusPhase (status, message) 2786: // ステータスフェーズに移行する 2787: // status 2=センスデータあり。spiSenseBufferを設定しておくこと 2788: // message 常に0 2789: public void spiStatusPhase (int status, int message) { 2790: if (SPC_DEBUG_PHASE) { 2791: System.out.printf ("%08x spiStatusPhase(0x%02x)\n", XEiJ.regPC0, status); 2792: } 2793: spiStatusBuffer[0] = (byte) status; 2794: spiMessageInBuffer[0] = (byte) message; 2795: spiWriteHandle = null; 2796: spiReadHandle = spiStatusBuffer; 2797: spiBufferIndex = 0; 2798: spiBufferLimit = 1; 2799: spiTemp = spiStatusBuffer[0] & 255; 2800: spiUpdateSSTS (); 2801: spiPsns = SPC_PSNS_REQ | SPC_STATUS_PHASE; 2802: HD63450.dmaFallPCL (spiDMAChannel); 2803: } //spiStatusPhase(int,int) 2804: 2805: //spiMessageInPhase () 2806: // メッセージインフェーズに移行する 2807: public void spiMessageInPhase () { 2808: if (SPC_DEBUG_PHASE) { 2809: System.out.printf ("%08x spiMessageInPhase(0x%02x)\n", XEiJ.regPC0, spiMessageInBuffer[0] & 255); 2810: } 2811: spiWriteHandle = null; 2812: spiReadHandle = spiMessageInBuffer; 2813: spiBufferIndex = 0; 2814: spiBufferLimit = 1; 2815: spiTemp = spiMessageInBuffer[0] & 255; 2816: spiUpdateSSTS (); 2817: spiPsns = SPC_PSNS_REQ | SPC_MESSAGE_IN_PHASE; 2818: HD63450.dmaFallPCL (spiDMAChannel); 2819: } //spiMessageInPhase() 2820: 2821: //spiMessageOutPhase () 2822: // メッセージアウトフェーズに移行する 2823: public void spiMessageOutPhase () { 2824: if (SPC_DEBUG_PHASE) { 2825: System.out.printf ("%08x spiMessageOutPhase(0x%02x)\n", XEiJ.regPC0, spiMessageOutBuffer[0] & 255); 2826: } 2827: spiWriteHandle = spiMessageOutBuffer; 2828: spiReadHandle = null; 2829: spiBufferIndex = 0; 2830: spiBufferLimit = 1; 2831: spiUpdateSSTS (); 2832: spiPsns = SPC_PSNS_REQ | SPC_MESSAGE_OUT_PHASE; 2833: HD63450.dmaFallPCL (spiDMAChannel); 2834: } //spiMessageOutPhase() 2835: 2836: //spiSetInterruptStatus (ints) 2837: public void spiSetInterruptStatus (int ints) { 2838: //int oldInts = spiInts; 2839: if ((ints & ~SPC_INTS_TO) != 0) { //TO以外をセットするとき 2840: spiInts &= ~SPC_INTS_TO; //TOをクリア 2841: } 2842: spiInts |= ints; 2843: if (//oldInts != spiInts && //0→1 2844: (spiSctl & SPC_SCTL_IE) != 0) { //Interrupt Enable 2845: if (spiExpansion) { 2846: XEiJ.eb2Interrupt (XEiJ.EB2_SPC_REQUEST); 2847: } else { 2848: IOInterrupt.ioiSpcFall (); 2849: IOInterrupt.ioiSpcRise (); 2850: } 2851: } 2852: } //spiSetInterruptStatus(int) 2853: 2854: //spiUpdateSSTS () 2855: // SSTSのTC0,DF,DEを更新する 2856: public void spiUpdateSSTS () { 2857: spiSsts = (spiSsts & ~(SPC_SSTS_TC0 | SPC_SSTS_DF | SPC_SSTS_DE) | 2858: ((spiPctl & SPC_PCTL_IO) == 0 ? //Out 2859: (spiTchTcmTcl == 0 ? SPC_SSTS_TC0 : 0) | 2860: SPC_SSTS_DE //出力のときFIFOは常にEmptyでFullになることはない 2861: : //In 2862: (spiTchTcmTcl != 0 ? 0 : SPC_SSTS_TC0 | SPC_SSTS_DE) | //入力のとき残りが0バイトでなければFIFOはEmptyではない 2863: (spiTchTcmTcl < 8 ? 0 : SPC_SSTS_DF))); //入力のとき残りが8バイト未満ならばFIFOはFullではない 2864: } //spiUpdateSSTS () 2865: 2866: } //class SPCChip 2867: 2868: 2869: 2870: //======================================================================================== 2871: //$$SCU SCSI HDユニット 2872: // SCSIハードディスクのユニット 2873: public static class SCUnit extends AbstractUnit { 2874: 2875: public SPCChip scuChip; //接続されているSCSIポート 2876: public int scuMode; //動作モード。1=SCSI-1,3=SCSI-2 2877: public RandomAccessFile scuRaf; 2878: public int scuBytesPerRecord; //1レコードあたりのバイト数(2の累乗) 2879: public int scuDiskEndRecord; //ディスクのレコード数。0=挿入されていない 2880: public long scuDiskEndByte; //ディスクのバイト数 2881: public byte[] scuRecordImage; 2882: public HDMedia scuSASIMedia; //SASIモード 2883: 2884: //new SCUnit (number, chip) 2885: // コンストラクタ 2886: public SCUnit (int number, SPCChip chip) { 2887: super (number); 2888: scuChip = chip; 2889: scuMode = 1; //リセレクションがないのでSCSI-1 2890: scuRaf = null; 2891: scuBytesPerRecord = 512; 2892: scuDiskEndRecord = 0; 2893: scuDiskEndByte = 0L; 2894: scuRecordImage = new byte[SPC_MAX_BYTES_PER_BLOCK]; 2895: scuSASIMedia = null; 2896: } 2897: 2898: public void scuReset (SPCChip chip) { 2899: scuChip = chip; 2900: }; //scuReset 2901: 2902: //numberOfModes = unit.abuGetNumberOfModes () 2903: // モードの数を返す 2904: // モードボタンを表示するときオーバーライドする 2905: @Override public int abuGetNumberOfModes () { 2906: return 2; 2907: } //unit.abuGetNumberOfModes() 2908: 2909: //image = unit.abuGetModeIcon (mode, enabled) 2910: // モードボタンのアイコンを返す 2911: // モードボタンを表示するときオーバーライドする 2912: @Override public ImageIcon abuGetModeIcon (int mode, boolean enabled) { 2913: return (enabled ? 2914: mode == 0 ? LnF.LNF_HD_ICON : LnF.LNF_CD_ICON : 2915: mode == 0 ? LnF.LNF_HD_DISABLED_ICON : LnF.LNF_CD_DISABLED_ICON); 2916: } //unit.abuGetModeIcon(int,boolean) 2917: 2918: //text = unit.abuGetModeTextEn (mode, enabled) 2919: // モードボタンの英語のツールチップテキストを返す 2920: // モードボタンを表示するときオーバーライドする 2921: @Override public String abuGetModeTextEn (int mode, boolean enabled) { 2922: return (enabled ? 2923: mode == 0 ? "Hard disk mode → CD-ROM mode" : "CD-ROM mode → Hard disk mode" : 2924: null); 2925: } //unit.abuGetModeTextEn(int,boolean) 2926: 2927: //text = unit.abuGetModeTextJa (mode, enabled) 2928: // モードボタンの日本語のツールチップテキストを返す 2929: // モードボタンを表示するときオーバーライドする 2930: @Override public String abuGetModeTextJa (int mode, boolean enabled) { 2931: return (enabled ? 2932: mode == 0 ? "ハードディスクモード → CD-ROM モード" : "CD-ROM モード → ハードディスクモード" : 2933: null); 2934: } //unit.abuGetModeTextJa(int,boolean) 2935: 2936: //unit.connect (disconnectable) 2937: // 接続する 2938: @Override protected void connect (boolean disconnectable) { 2939: super.connect (disconnectable); 2940: } 2941: 2942: //unit.disconnect () 2943: // 切り離す 2944: @Override protected void disconnect () { 2945: super.disconnect (); 2946: } 2947: 2948: //success = unit.eject () 2949: // イジェクトする 2950: @Override protected boolean eject () { 2951: if (scuRaf != null) { //クローズする 2952: try { 2953: scuRaf.close (); 2954: } catch (IOException ioe) { 2955: } 2956: scuRaf = null; 2957: } 2958: String path = abuPath; //イジェクトされたイメージファイルのパス。super.eject()を呼び出す前にコピーすること 2959: if (!super.eject ()) { //イジェクトする 2960: return false; 2961: } 2962: if (path.length () != 0) { //挿入されていたとき 2963: spcAddHistory (new File (path).getAbsoluteFile ()); 2964: System.out.println (Multilingual.mlnJapanese ? 2965: path + " を sc" + abuNumber + " から切り離しました" : 2966: path + " was removed from sc" + abuNumber); 2967: } 2968: scuDiskEndRecord = 0; 2969: scuDiskEndByte = 0L; 2970: return true; 2971: } 2972: 2973: //success = unit.open () 2974: // 開くダイアログを開く 2975: @Override protected boolean open () { 2976: if (!super.open ()) { 2977: return false; 2978: } 2979: SPC.spcOpenUnit = abuNumber; 2980: if (SPC.spcOpenDialog == null) { 2981: SPC.spcOpenDialog = new OpenDialog (); 2982: SPC.spcOpenDialog.setReadOnly (Settings.sgsGetOnOff ("screadonly")); 2983: SPC.spcOpenDialog.setReboot (Settings.sgsGetOnOff ("scappreboot")); 2984: for (File[] files : SPC.spcOpenHistory) { 2985: SPC.spcOpenDialog.addHistory (files); 2986: } 2987: SPC.spcOpenHistory.clear (); 2988: } 2989: SPC.spcOpenDialog.rescanCurrentDirectory (); //挿入されているファイルが変わると選択できるファイルも変わるのでリストを作り直す 2990: XEiJ.pnlExitFullScreen (true); 2991: SPC.spcOpenDialog.setVisible (true); 2992: return true; 2993: } //unit.open() 2994: 2995: //success = unit.insert (path, writeProtected) 2996: // 挿入する 2997: @Override protected boolean insert (String path, boolean writeProtected) { 2998: if (SPC.spcIsInserted (path)) { //既に挿入されている 2999: return false; 3000: } 3001: if (!super.insert (path, writeProtected)) { //挿入できなかった 3002: return false; 3003: } 3004: return true; 3005: } //unit.insert(String) 3006: 3007: //loaded = unit.load (path) 3008: // 読み込む 3009: @Override protected boolean load (String path) { 3010: File file = new File (path); 3011: scuSASIMedia = null; 3012: long longLength = file.length (); 3013: for (HDMedia media : HDMedia.HDM_ARRAY) { 3014: if (media.humDiskEndByte == longLength) { //ファイルサイズが一致 3015: scuSASIMedia = media; 3016: break; 3017: } 3018: } 3019: if (scuSASIMedia != null) { //SASIハードディスク 3020: abuSetMode (0); 3021: } else if (SPC.spcIsHds (file, true)) { //拡張子がHDSで装置初期化されている 3022: abuSetMode (0); 3023: } else if (SPC.spcIsIso (file)) { //拡張子がISO 3024: abuSetMode (1); 3025: protect (false); //開くときに書き込みを禁止した場合はイジェクトするまで書き込みを許可できない 3026: } else { 3027: return false; 3028: } 3029: try { 3030: scuRaf = new RandomAccessFile (file, abuWriteProtected ? "r" : "rw"); //RandomAccessFileに"w"というモードはない 3031: } catch (IOException ioe) { 3032: return false; //開けなかった。SPC.spcIsHdsまたはSPC.spcIsISOのチェックを通っても書き込みモードでは開けない可能性がある 3033: } 3034: if (scuSASIMedia != null) { //SASIハードディスク 3035: scuDiskEndByte = longLength; 3036: scuBytesPerRecord = 256; 3037: scuDiskEndRecord = (int) (scuDiskEndByte / scuBytesPerRecord); 3038: } else if (abuCurrentMode == 0) { //ハードディスク 3039: byte[] bb = new byte[512]; 3040: scuDiskEndRecord = 0; 3041: try { 3042: scuRaf.seek (0L); 3043: scuRaf.read (bb, 0, 512); //セクタ0を読み込む 3044: if (ByteArray.byaRls (bb, 0) == ('X' << 24 | '6' << 16 | '8' << 8 | 'S') && 3045: ByteArray.byaRls (bb, 4) == ('C' << 24 | 'S' << 16 | 'I' << 8 | '1')) { //X68SCSI1マジックがある 3046: scuBytesPerRecord = ByteArray.byaRwz (bb, 8); //1レコードあたりのバイト数(2の累乗) 3047: scuDiskEndRecord = ByteArray.byaRls (bb, 10); //ディスクのレコード数 3048: if (ByteArray.byaRls (bb, 42) == ('S' << 24 | 'x' << 16 | 'S' << 8 | 'I')) { //SxSI 3049: scuDiskEndRecord <<= 1; 3050: } 3051: } else if (bb[0x0000] == (byte) 0xeb && 3052: bb[0x01fe] == (byte) 0x55 && 3053: bb[0x01ff] == (byte) 0xaa) { //IBMスーパーフロッピー 3054: scuBytesPerRecord = 0x0200; //1レコードあたりのバイト数(2の累乗) 3055: scuDiskEndRecord = (int) (scuRaf.length () / scuBytesPerRecord); //ディスクのレコード数 3056: } 3057: } catch (IOException ioe) { 3058: } 3059: if (scuDiskEndRecord == 0) { 3060: try { 3061: scuRaf.close (); 3062: } catch (IOException ioe) { 3063: } 3064: scuRaf = null; 3065: return false; 3066: } 3067: scuDiskEndByte = (long) scuBytesPerRecord * scuDiskEndRecord; //ディスクのバイト数 3068: } else { //CD-ROM 3069: byte[] bb = new byte[2048]; 3070: try { 3071: scuRaf.seek (2048L * 16); 3072: scuRaf.read (bb, 0, 2048); //セクタ16を読み込む 3073: } catch (IOException ioe) { 3074: try { 3075: scuRaf.close (); 3076: } catch (IOException ioe2) { 3077: } 3078: scuRaf = null; 3079: return false; //セクタ16を読み込めなかった 3080: } 3081: scuBytesPerRecord = ByteArray.byaRwz (bb, 130); //ブロックのバイト数 3082: scuDiskEndRecord = ByteArray.byaRls (bb, 84); //ボリュームのブロック数 3083: scuDiskEndByte = (long) scuBytesPerRecord * scuDiskEndRecord; //ボリュームのバイト数。整合性はSPC.spcIsIsoで確認済みなのでチェックは省略する 3084: } 3085: System.out.println (Multilingual.mlnJapanese ? 3086: path + " を sc" + abuNumber + " に接続しました" : 3087: path + " was connected to sc" + abuNumber); 3088: return true; 3089: } 3090: 3091: //scuTini () 3092: // 後始末 3093: public void scuTini () { 3094: if (scuRaf != null) { 3095: try { 3096: scuRaf.close (); 3097: } catch (IOException ioe) { 3098: } 3099: scuRaf = null; 3100: } 3101: } //scuTini() 3102: 3103: //scuCommand (oc) 3104: // コマンドを実行する 3105: // セレクションフェーズに成功したのだから装置は接続されているはず 3106: // ロジカルユニットは存在しない可能性がある 3107: public void scuCommand (int oc) { 3108: if (SPC_DEBUG_COMMAND) { 3109: System.out.printf ("%08x sc%d:scuCommand(0x%02x(%s)) [", XEiJ.regPC0, abuNumber, oc, SPC_COMMAND_NAME[oc]); 3110: for (int i = 0; i < scuChip.spiBufferLimit; i++) { 3111: if (i > 0) { 3112: System.out.print (','); 3113: } 3114: System.out.printf ("0x%02x", scuChip.spiCommandBuffer[i] & 255); 3115: } 3116: System.out.println (']'); 3117: } 3118: if (oc != 0x03 && //Request Sense以外で 3119: scuChip.spiLUN != 0) { //LUNが0でない 3120: scuNotReady (); 3121: return; 3122: } 3123: switch (oc) { 3124: case 0x00: //Test Unit Ready 3125: scuDoTestUnitReady (); 3126: break; 3127: case 0x01: //Rezero Unit 3128: scuDoRezeroUnit (); 3129: break; 3130: case 0x03: //Request Sense 3131: scuDoRequestSense (); 3132: break; 3133: case 0x04: //Format Unit 3134: scuDoFormatUnit (); 3135: break; 3136: case 0x06: //Format Block(SASI) 3137: scuDoFormatBlockSASI (); 3138: break; 3139: //case 0x07: //Bad Track Format(SASI) 3140: case 0x08: //Read(6) 3141: scuDoRead6 (); 3142: break; 3143: case 0x0a: //Write(6) 3144: scuDoWrite6 (); 3145: break; 3146: case 0x0b: //Seek(6) 3147: scuDoSeek6 (); 3148: break; 3149: //case 0x0e: //Assign Track(SASI) 3150: case 0x12: //Inquiry 3151: scuDoInquiry (); 3152: break; 3153: case 0x15: //Mode Select(6) 3154: scuDoModeSelect6 (); 3155: break; 3156: //case 0x18: //Copy 3157: case 0x1a: //Mode Sense(6) 3158: scuDoModeSense6 (); 3159: break; 3160: case 0x1b: //Start-Stop Unit 3161: scuStartStopUnit (); 3162: break; 3163: //case 0x1c: //Receive Diagnostic Results 3164: //case 0x1d: //Send Diagnostic 3165: case 0x1e: //Prevent-Allow Medium Removal 3166: scuDoPreventAllowMediumRemoval (); 3167: break; 3168: case 0x25: //Read Capacity 3169: scuDoReadCapacity (); 3170: break; 3171: case 0x28: //Read(10) 3172: scuDoRead10 (); 3173: break; 3174: case 0x2a: //Write(10) 3175: scuDoWrite10 (); 3176: break; 3177: case 0x2b: //Seek(10) 3178: scuDoSeek10 (); 3179: break; 3180: case 0x2e: //Write and Verify(10) 3181: scuDoWriteAndVerify10 (); 3182: break; 3183: case 0x43: //Read TOC 3184: scuDoReadTOC (); 3185: break; 3186: //case 0x2f: //Verify(10) 3187: //case 0x30: //Search Data High(10) 3188: //case 0x31: //Search Data Equal(10) 3189: //case 0x32: //Search Data Low(10) 3190: //case 0x33: //Set Limits(10) 3191: //case 0x34: //Pre-Fetch 3192: case 0x35: //Synchronize Cache 3193: scuDoSynchronizeCache (); 3194: break; 3195: //case 0x36: //Lock-Unlock Cache 3196: //case 0x37: //Read Defect Data(10) 3197: //case 0x39: //Compare 3198: //case 0x3a: //Copy and Verify 3199: //case 0x3b: //Write Buffer 3200: //case 0x3c: //Read Buffer 3201: //case 0x3e: //Read Long 3202: //case 0x3f: //Write Long 3203: //case 0x40: //Change Definition 3204: //case 0x41: //Write Same 3205: //case 0x4c: //Log Select 3206: //case 0x4d: //Log Sense 3207: //case 0x55: //Mode Select(10) 3208: //case 0x5a: //Mode Sense(10) 3209: //case 0xc1: //Load/Unload SHARP MO 3210: case 0xc2: //Assign Drive(SASI) 3211: scuDoAssignDriveSASI (); 3212: break; 3213: case 0x50: //XDWRITE 3214: case 0x51: //XPWRITE 3215: case 0x52: //XDREAD 3216: case 0x80: //XDWRITE EXTENDED 3217: case 0x81: //REBUILD 3218: case 0x82: //REGENERATE 3219: scuDoInvalid (); //XOR系のコマンドは未実装コマンドの表示をせずにエラー終了させる 3220: break; 3221: default: //Invalid 3222: if (SPC_REPORT_UNIMPLEMENTED_COMMAND) { //未実装コマンドを表示する 3223: StringBuilder sb = new StringBuilder (); 3224: sb.append (String.format ("%08x sc%d:scuCommand(0x%02x(%s)) [", XEiJ.regPC0, abuNumber, oc, SPC_COMMAND_NAME[oc])); 3225: for (int i = 0; i < scuChip.spiBufferLimit; i++) { 3226: if (i > 0) { 3227: sb.append (','); 3228: } 3229: sb.append (String.format ("0x%02x", scuChip.spiCommandBuffer[i] & 255)); 3230: } 3231: sb.append (']'); 3232: System.out.println (sb.toString ()); 3233: } 3234: scuDoInvalid (); 3235: } 3236: } //scuCommand(int) 3237: 3238: //scuDoTestUnitReady () 3239: // [0] 0x00 3240: // [1] |LUN###|-----| 3241: // [5] |..|----|Flag|Link| 3242: public void scuDoTestUnitReady () { 3243: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3244: } //scuDoTestUnitReady() 3245: 3246: //scuDoRezeroUnit () 3247: // [0] 0x01 3248: // [1] |LUN###|-----| 3249: // [5] |..|----|Flag|Link| 3250: public void scuDoRezeroUnit () { 3251: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3252: } //scuDoRezeroUnit() 3253: 3254: //scuDoPreventAllowMediumRemoval () 3255: // [0] 0x1e 3256: // [1] |LUN###|-----| 3257: // [4] |-------|Prevent| 3258: // [5] |..|----|Flag|Link| 3259: public void scuDoPreventAllowMediumRemoval () { 3260: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3261: scuUnitAttention (); 3262: return; 3263: } 3264: int prevent = scuChip.spiCommandBuffer[4] & 1; //0=イジェクト許可,1=イジェクト禁止 3265: if (prevent == 0) { //イジェクト許可 3266: allow (); 3267: } else { //イジェクト禁止 3268: prevent (); 3269: } 3270: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3271: } //scuDoPreventAllowMediumRemoval() 3272: 3273: //scuDoRequestSense () 3274: // [0] 0x03 3275: // [1] |LUN###|-----| 3276: // [4] アロケーション長 3277: // [5] |..|----|Flag|Link| 3278: // センスデータを最大nバイトまで転送してからクリアする 3279: // nが0x00のときSCSI-1は4バイトだけ転送するがSCSI-2は転送しない 3280: public void scuDoRequestSense () { 3281: int n = scuChip.spiCommandBuffer[4] & 255; 3282: if (n == 0) { 3283: if (scuMode == 1) { //SCSI-1 3284: n = 4; 3285: } else { //SCSI-2 3286: Arrays.fill (scuChip.spiSenseBuffer[scuChip.spiLUN], (byte) 0); //センスデータを消去する 3287: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3288: return; 3289: } 3290: } 3291: scuChip.spiDataInPhase (scuChip.spiSenseBuffer[scuChip.spiLUN], 0, Math.min (n, scuMode == 1 ? 4 : 8), 0); //データインフェーズに移行する 3292: } //scuDoRequestSense() 3293: 3294: //scuDoFormatUnit () 3295: // [0] 0x04 3296: // [1] |LUN###|FmtData|CmpLst|ディフェクトリスト形式###| 3297: // [2] ベンダ固有 3298: // [3][4] インタリーブ 3299: // [5] |..|----|Flag|Link| 3300: public void scuDoFormatUnit () { 3301: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3302: scuUnitAttention (); 3303: return; 3304: } 3305: if (abuWriteProtected) { //書き込みが禁止されている 3306: scuDataProtect (); 3307: return; 3308: } 3309: if (true) { 3310: //イメージファイルをゼロクリアする 3311: final int step = 1024 * 256; //256KB 3312: byte[] zero = new byte[step]; 3313: Arrays.fill (zero, (byte) 0); 3314: try { 3315: scuRaf.seek (0L); 3316: long pos; 3317: for (pos = 0L; pos + step <= scuDiskEndByte; pos += step) { 3318: scuRaf.write (zero); 3319: } 3320: if (pos < scuDiskEndByte) { 3321: scuRaf.write (zero, 0, (int) (scuDiskEndByte - pos)); 3322: } 3323: } catch (IOException ioe) { 3324: } 3325: } 3326: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3327: } //scuDoFormatUnit() 3328: 3329: //scuDoFormatBlockSASI () 3330: // [0] 0x06 3331: // [1][2][3] LUN<<21|論理ブロックアドレス 3332: // [4] インタリーブ 3333: public void scuDoFormatBlockSASI () { 3334: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3335: scuUnitAttention (); 3336: return; 3337: } 3338: if (abuWriteProtected) { //書き込みが禁止されている 3339: scuDataProtect (); 3340: return; 3341: } 3342: if (false) { 3343: //10MBのとき 3344: // 06 00 00 00 06 00 3345: // 06 00 00 21 06 00 3346: // ... 3347: // 06 00 9f 12 06 00 3348: // 06 00 9f 33 06 00 3349: // 33(レコード/トラック)*4(トラック/シリンダ)*309(シリンダ/ボリューム)=40788(レコード/ボリューム)=0x9f51 3350: System.out.printf ("%02x %02x %02x %02x %02x %02x\n", 3351: scuChip.spiCommandBuffer[0] & 255, 3352: scuChip.spiCommandBuffer[1] & 255, 3353: scuChip.spiCommandBuffer[2] & 255, 3354: scuChip.spiCommandBuffer[3] & 255, 3355: scuChip.spiCommandBuffer[4] & 255, 3356: scuChip.spiCommandBuffer[5] & 255); 3357: } 3358: //指定された範囲をゼロクリアする 3359: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 0) & 0x001fffff; //論理ブロックアドレス 3360: final int recordsPerTrack = 33; //レコード/トラック 3361: if (a % recordsPerTrack == 0 && a + recordsPerTrack <= scuDiskEndRecord) { 3362: byte[] zero = new byte[scuBytesPerRecord * recordsPerTrack]; 3363: Arrays.fill (zero, (byte) 0); 3364: try { 3365: scuRaf.seek ((long) scuBytesPerRecord * a); 3366: scuRaf.write (zero); 3367: } catch (IOException ioe) { 3368: } 3369: } else { 3370: scuDoInvalid (); 3371: return; 3372: } 3373: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3374: } 3375: 3376: //scuDoRead6 () 3377: // [0] 0x08 3378: // [1][2][3] LUN<<21|論理ブロックアドレス 3379: // [4] 論理ブロック数 3380: // [5] |..|----|Flag|Link| 3381: public void scuDoRead6 () { 3382: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3383: scuUnitAttention (); 3384: return; 3385: } 3386: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 0) & 0x001fffff; //論理ブロックアドレス 3387: int n = scuChip.spiCommandBuffer[4] & 255; //論理ブロック数 3388: if (n == 0) { 3389: n = 256; 3390: } 3391: if (scuDiskEndRecord < a + n) { //範囲外 3392: scuDoInvalid (); 3393: return; 3394: } 3395: try { 3396: scuRaf.seek ((long) scuBytesPerRecord * a); 3397: scuRaf.read (scuRecordImage, 0, scuBytesPerRecord); 3398: } catch (IOException ioe) { 3399: } 3400: scuChip.spiDataInPhase (scuRecordImage, 0, scuBytesPerRecord, n - 1); //データインフェーズに移行する 3401: } //scuDoRead6() 3402: 3403: //scuReadImage () 3404: public void scuReadImage () { 3405: try { 3406: scuRaf.read (scuRecordImage, 0, scuBytesPerRecord); 3407: } catch (IOException ioe) { 3408: } 3409: } //scuReadImage() 3410: 3411: //scuDoWrite6 () 3412: // [0] 0x0a 3413: // [1][2][3] LUN<<21|論理ブロックアドレス 3414: // [4] 論理ブロック数 3415: // [5] |..|----|Flag|Link| 3416: public void scuDoWrite6 () { 3417: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3418: scuUnitAttention (); 3419: return; 3420: } 3421: if (abuWriteProtected) { //書き込みが禁止されている 3422: scuDataProtect (); 3423: return; 3424: } 3425: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 0) & 0x001fffff; //論理ブロックアドレス 3426: int n = scuChip.spiCommandBuffer[4] & 255; //論理ブロック数 3427: if (n == 0) { 3428: n = 256; 3429: } 3430: if (scuDiskEndRecord < a + n) { //範囲外 3431: scuDoInvalid (); 3432: return; 3433: } 3434: try { 3435: scuRaf.seek ((long) scuBytesPerRecord * a); 3436: } catch (IOException ioe) { 3437: } 3438: scuChip.spiDataOutPhase (scuRecordImage, 0, scuBytesPerRecord, n); //データアウトフェーズに移行する 3439: } //scuDoWrite6() 3440: 3441: //scuWriteImage () 3442: public void scuWriteImage () { 3443: int oc = scuChip.spiCommandBuffer[0] & 255; 3444: if (oc == 0x0a || //Write(6) 3445: oc == 0x2a || //Write(10) 3446: oc == 0x2e) { //Write and Verify(10) 3447: try { 3448: scuRaf.write (scuRecordImage, 0, scuBytesPerRecord); 3449: } catch (IOException ioe) { 3450: } 3451: } 3452: } //scuWriteImage() 3453: 3454: //scuDoSeek6 () 3455: // [0] 0x0b 3456: // [1][2][3] LUN<<21|論理ブロックアドレス 3457: // [5] |..|----|Flag|Link| 3458: public void scuDoSeek6 () { 3459: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3460: scuUnitAttention (); 3461: return; 3462: } 3463: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 0) & 0x001fffff; //論理ブロックアドレス 3464: if (scuDiskEndRecord < a) { //範囲外 3465: scuDoInvalid (); 3466: return; 3467: } 3468: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3469: } //scuDoSeek6() 3470: 3471: //scuDoInquiry () 3472: // [0] 0x12 3473: // [1] |LUN###|----|EVPD| 3474: // [2] ページコード 3475: // [4] アロケーション長 3476: // [5] |..|----|Flag|Link| 3477: //!!! EVPD==0のみ対応 3478: // 例 3479: // 0000 05 クォリファイア=0,デバイスタイプコード=5 3480: // 0001 80 RMB=1(リムーバブル),デバイスタイプ修飾子=0 3481: // 0002 02 ISOバージョン=0,ECMAバージョン=0,ANSIバージョン=2 3482: // 0003 02 AENC=0,TermlOP=0,レスポンスデータ形式=2 3483: // 0004 1f 追加データ長=31 3484: // 0005 00 3485: // 0006 00 3486: // 0007 18 RelAdr=0,WBus32=0,WBus16=0,Sync=1,Linked=1,CmdQue=0,SftRe=0 3487: // 0008 53 4f 4e 59 20 20 20 20 ベンダID="SONY " 3488: // 0010 43 44 2d 52 4f 4d 20 43 44 55 2d 35 35 53 20 20 プロダクトID="CD-ROM CDU-55S " 3489: // 0020 31 2e 30 74 プロダクト版数="1.0t" 3490: public void scuDoInquiry () { 3491: int evpd = scuChip.spiCommandBuffer[1] & 1; 3492: int pagecode = scuChip.spiCommandBuffer[2] & 255; //ページコード 3493: int n = scuChip.spiCommandBuffer[4] & 255; //アロケーション長 3494: if (evpd == 0) { //スタンダードInquiry情報 3495: scuChip.spiDataInBuffer[0] = (byte) (abuCurrentMode == 0 ? SPC_DIRECT_ACCESS_DEVICE : //ダイレクトアクセスデバイス。クォリファイアは0 3496: SPC_CDROM_DEVICE); //CD-ROMデバイス 3497: scuChip.spiDataInBuffer[1] = (byte) (SPC_REMOVABLE_HDD ? 1 << 7 : 0); //0=固定,1=リムーバブル 3498: scuChip.spiDataInBuffer[2] = (byte) (scuMode == 1 ? 1 : 2); //ISO/ECMA/ANSIバージョン。SCSI-1/SCSI-2 3499: scuChip.spiDataInBuffer[3] = (byte) (scuMode == 1 ? 1 : 2); //レスポンスデータ形式。SCSI-1/SCSI-2 3500: scuChip.spiDataInBuffer[4] = 31; //追加データ長 3501: scuChip.spiDataInBuffer[5] = 0; //予約 3502: scuChip.spiDataInBuffer[6] = 0; //予約 3503: scuChip.spiDataInBuffer[7] = 0; //サポート機能なし 3504: ByteArray.byaWstr (scuChip.spiDataInBuffer, 8, ( 3505: abuCurrentMode == 0 ? //ハードディスク 3506: // 111111 3507: //123456789012345 3508: "XEiJ " + //ベンダID(ASCII 8文字) 3509: "Hard Disk " + //プロダクトID(ASCII 16文字)。ASCIIに限られるがイメージファイル名を入れてもよい 3510: "1.0 " //プロダクト版数(ASCII 4文字) 3511: : //CD-ROM 3512: "XEiJ " + //ベンダID(ASCII 8文字) 3513: "CD-ROM " + //プロダクトID(ASCII 16文字)。ASCIIに限られるがイメージファイル名を入れてもよい 3514: "1.0 ")); //プロダクト版数(ASCII 4文字) 3515: scuChip.spiDataInPhase (scuChip.spiDataInBuffer, 0, Math.min (36, n), 0); //データインフェーズに移行する 3516: } else { //VPD情報 3517: //!!! 3518: if (SPC_REPORT_UNIMPLEMENTED_COMMAND) { 3519: System.out.println (String.format ("%08x Inquiry with EVPD==1\n", XEiJ.regPC0)); 3520: } 3521: scuDoInvalid (); 3522: } 3523: } //scuDoInquiry() 3524: 3525: //scuDoModeSelect6 () 3526: // [0] 0x15 3527: // [1] |LUN###|PF|---|SP| 3528: // [4] パラメータリスト長 3529: // [5] コントロールバイト 3530: public void scuDoModeSelect6 () { 3531: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3532: scuUnitAttention (); 3533: return; 3534: } 3535: int n = scuChip.spiCommandBuffer[4] & 255; //パラメータリスト長 3536: scuChip.spiDataOutPhase (scuChip.spiDataOutBuffer, 0, n, 0); //データアウトフェーズに移行する 3537: } //scuDoModeSelect6() 3538: 3539: //scuDoModeSense6 () 3540: // [0] 0x1a 3541: // [1] |LUN###|R|DBD|---| 3542: // [2] |PC##|ページコード######| 3543: // [4] アロケーション長 3544: // [5] |..|----|Flag|Link| 3545: public void scuDoModeSense6 () { 3546: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3547: scuUnitAttention (); 3548: return; 3549: } 3550: int page = scuChip.spiCommandBuffer[2] & 63; //ページコード 3551: if (!(page == 0x00 || page == 0x3f)) { 3552: scuDoInvalid (); 3553: return; 3554: } 3555: int n = scuChip.spiCommandBuffer[4] & 255; //アロケーション長 3556: scuChip.spiDataInBuffer[0] = 12 - 1; //センスデータ長 3557: scuChip.spiDataInBuffer[1] = 0; //メディアタイプ 3558: scuChip.spiDataInBuffer[2] = (byte) (abuWriteProtected ? 1 << 7 : 0 << 7); //ライトプロテクト 3559: scuChip.spiDataInBuffer[3] = 8; //ブロックディスクリプタ長 3560: //ブロックディスクリプタ1 3561: ByteArray.byaWl (scuChip.spiDataInBuffer, 4, 0 << 24 | scuDiskEndRecord); //デンシティコード,ブロック数 3562: ByteArray.byaWl (scuChip.spiDataInBuffer, 8, scuBytesPerRecord); //ブロック長 3563: scuChip.spiDataInPhase (scuChip.spiDataInBuffer, 0, Math.min (12, n), 0); //データインフェーズに移行する 3564: } //scuDoModeSense6() 3565: 3566: //scuStartStopUnit () 3567: // [0] 0x1b 3568: // [1] |LUN###|-----| 3569: // [4] |------|LoEj|Start| 3570: // [5] |..|----|Flag|Link| 3571: public void scuStartStopUnit () { 3572: int loejStart = scuChip.spiCommandBuffer[4] & 3; //LoEj|Start 3573: if (loejStart == 2) { //イジェクト 3574: eject (); 3575: } 3576: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3577: } //scuStartStopUnit() 3578: 3579: //scuDoReadCapacity () 3580: // [0] 0x25 3581: // [1] |LUN###|----|RelAdr| 3582: // [2][3][4][5] 論理ブロックアドレス 3583: // [8] |-------|PMI| 3584: // [9] |..|----|Flag|Link| 3585: // 3586: // 本来の仕様 3587: // Read Capacityが返す値は論理ブロック数ではなくて最終論理ブロックアドレスである 3588: // 論理ブロックアドレスは0から始まるので、論理ブロック数は最終論理ブロックアドレス+1に等しい 3589: // FORMAT.XのSCSIハードディスクに関する動作 3590: // 装置初期化 3591: // 先頭セクタの+10にRead Capacityが返した値を書き込む 3592: // 領域確保 3593: // 先頭セクタの+10に書かれている値またはRead Capacityが返した値を論理ブロック数と見なして容量を計算する 3594: // すなわち、FORMAT.XはRead Capacityが返す最終論理ブロックアドレスを論理ブロック数と誤解している 3595: // 結論 3596: // 他の機種では先頭セクタに最終論理ブロックアドレスが書かれていることが多いが、 3597: // X68000のSCSIハードディスクの先頭セクタの+10に書かれている値は最終論理ブロックアドレスではなくて論理ブロック数である 3598: // 辻褄合わせ 3599: // Read Capacityが返す値は、実行中のプロセスがFORMAT.Xならば論理ブロック数、それ以外は最終論理ブロックアドレスとする 3600: public void scuDoReadCapacity () { 3601: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3602: scuUnitAttention (); 3603: return; 3604: } 3605: int pmi = scuChip.spiCommandBuffer[8] & 1; //0=全体の末尾,1=指定されたアドレスから連続してアクセスできる領域の末尾 3606: int pmm = MainMemory.mmrHumanPmm (); //Human68kの実行中のプロセスのメモリ管理テーブルのアドレス 3607: boolean formatx = (pmi == 0 && //_S_READCAPは0 3608: 0 <= pmm && //Human68kのバージョンと実行中のプロセスのメモリ管理テーブルのアドレスの確認 3609: ((MC68060.mmuPeekByteSign (pmm + 0x64, 5) == 2 && //FORMAT2.Xのモジュール番号 3610: MC68060.mmuPeekLong (pmm + 0x30, 5) - (pmm + 256) == 68088 && //FORMAT2.X version 2.31のtext+dataのサイズ 3611: "FORMAT.X".equalsIgnoreCase (MC68060.mmuPeekStringZ (pmm + 0xc4, 5))) || //実行ファイル名 3612: (MC68060.mmuPeekLong (pmm + 0x30, 5) - (pmm + 256) == 0x6076 + 0x0004 && //SCSIFORMAT.Xのtext+dataのサイズ 3613: "SCSIFORMAT.X".equalsIgnoreCase (MC68060.mmuPeekStringZ (pmm + 0xc4, 5))))); //実行ファイル名 3614: ByteArray.byaWl (scuChip.spiDataInBuffer, 0, formatx ? scuDiskEndRecord : scuDiskEndRecord - 1); //実行中のプロセスがFORMAT.XまたはSCSIFORMAT.Xならば論理ブロック数、それ以外は最終論理ブロックアドレスを返す 3615: ByteArray.byaWl (scuChip.spiDataInBuffer, 4, scuBytesPerRecord); //ブロック長 3616: scuChip.spiDataInPhase (scuChip.spiDataInBuffer, 0, 8, 0); //データインフェーズに移行する 3617: } //scuDoReadCapacity 3618: 3619: //scuDoRead10 () 3620: // [0] 0x28 3621: // [1] |LUN###|DPO|FUA|--|RelAdr| 3622: // [2][3][4][5] 論理ブロックアドレス 3623: // [7][8] 論理ブロック数 3624: // [9] |..|----|Flag|Link| 3625: public void scuDoRead10 () { 3626: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3627: scuUnitAttention (); 3628: return; 3629: } 3630: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 2); //論理ブロックアドレス 3631: int n = ByteArray.byaRwz (scuChip.spiCommandBuffer, 7); //論理ブロック数 3632: if (scuDiskEndRecord < a + n) { //範囲外 3633: scuDoInvalid (); 3634: return; 3635: } 3636: if (n == 0) { 3637: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3638: return; 3639: } 3640: try { 3641: scuRaf.seek ((long) scuBytesPerRecord * a); 3642: scuRaf.read (scuRecordImage, 0, scuBytesPerRecord); 3643: } catch (IOException ioe) { 3644: } 3645: scuChip.spiDataInPhase (scuRecordImage, 0, scuBytesPerRecord, n - 1); //データインフェーズに移行する 3646: } //scuDoRead10() 3647: 3648: //scuDoWrite10 () 3649: // [0] 0x2a 3650: // [1] |LUN###|DPO|FUA|--|RelAdr| 3651: // [2][3][4][5] 論理ブロックアドレス 3652: // [7][8] 論理ブロック数 3653: // [9] |..|----|Flag|Link| 3654: public void scuDoWrite10 () { 3655: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3656: scuUnitAttention (); 3657: return; 3658: } 3659: if (abuWriteProtected) { //書き込みが禁止されている 3660: scuDataProtect (); 3661: return; 3662: } 3663: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 2); //論理ブロックアドレス 3664: int n = ByteArray.byaRwz (scuChip.spiCommandBuffer, 7); //論理ブロック数 3665: if (scuDiskEndRecord < a + n) { //範囲外 3666: scuDoInvalid (); 3667: return; 3668: } 3669: if (n == 0) { 3670: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3671: return; 3672: } 3673: try { 3674: scuRaf.seek ((long) scuBytesPerRecord * a); 3675: } catch (IOException ioe) { 3676: } 3677: scuChip.spiDataOutPhase (scuRecordImage, 0, scuBytesPerRecord, n); //データアウトフェーズに移行する 3678: } //scuDoWrite10() 3679: 3680: //scuDoSeek10 () 3681: // [0] 0x2b 3682: // [1] |LUN###|DPO|FUA|--|RelAdr| 3683: // [2][3][4][5] 論理ブロックアドレス 3684: // [9] |..|----|Flag|Link| 3685: public void scuDoSeek10 () { 3686: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3687: scuUnitAttention (); 3688: return; 3689: } 3690: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 2); //論理ブロックアドレス 3691: if (scuDiskEndRecord < a) { //範囲外 3692: scuDoInvalid (); 3693: return; 3694: } 3695: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3696: } //scuDoSeek10() 3697: 3698: //scuDoWriteAndVerify10 () 3699: // [0] 0x2e 3700: // [1] |LUN###|DPO|Reserved##|BytChk|RelAdr| 3701: // [2][3][4][5] 論理ブロックアドレス 3702: // [7][8] 論理ブロック数 3703: // [9] |..|----|Flag|Link| 3704: public void scuDoWriteAndVerify10 () { 3705: scuDoWrite10 (); 3706: } //scuDoWriteAndVerify10 3707: 3708: //scuDoSynchronizeCache () 3709: // [0] 0x35 3710: // [1] |LUN###|---|Immed|RelAdr| 3711: // [2][3][4][5] 論理ブロックアドレス 3712: // [7][8] 論理ブロック数 3713: // [9] Control 3714: public void scuDoSynchronizeCache () { 3715: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3716: scuUnitAttention (); 3717: return; 3718: } 3719: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 2); //論理ブロックアドレス 3720: int n = ByteArray.byaRwz (scuChip.spiCommandBuffer, 7); //論理ブロック数 3721: if (scuDiskEndRecord < a + n) { //範囲外 3722: scuDoInvalid (); 3723: return; 3724: } 3725: //直前のコマンドのデータアウトフェーズが終了した時点でwriteされている 3726: //アクセスモードが"rw"なので手動で同期をとる 3727: try { 3728: scuRaf.getChannel ().force (true); 3729: } catch (IOException ioe) { 3730: } 3731: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3732: } //scuDoSynchronizeCache 3733: 3734: //scuDoReadTOC () 3735: // [0] 0x43 3736: // [1] |LUN###|---|MSF|-| 3737: // [6] 開始トラック 3738: // [7][8] アロケーション長 3739: // [9] コントロールバイト 3740: // 例: 3741: // MSF=0 3742: // 01: 00 3a 01 06 00 14 01 00 00 00 00 00 3743: // 02: 00 32 01 06 00 10 02 00 00 02 76 b0 3744: // 03: 00 2a 01 06 00 10 03 00 00 02 bf 7e 3745: // 04: 00 22 01 06 00 10 04 00 00 03 0e 3b 3746: // 05: 00 1a 01 06 00 10 05 00 00 03 96 3c 3747: // 06: 00 12 01 06 00 10 06 00 00 03 d2 e0 3748: // aa: 00 0a 01 06 00 10 aa 00 00 04 1b d2 3749: // MSF=1 3750: // 01: 00 3a 01 06 00 14 01 00 00 00 02 00 (0x00*60+(0x02-2))*75+0x00=0x000000 3751: // 02: 00 32 01 06 00 10 02 00 00 23 36 38 (0x23*60+(0x36-2))*75+0x38=0x0276b0 3752: // 03: 00 2a 01 06 00 10 03 00 00 28 03 13 (0x28*60+(0x03-2))*75+0x13=0x02bf7e 3753: // 04: 00 22 01 06 00 10 04 00 00 2c 20 01 (0x2c*60+(0x20-2))*75+0x01=0x030e3b 3754: // 05: 00 1a 01 06 00 10 05 00 00 34 10 12 (0x34*60+(0x10-2))*75+0x12=0x03963c 3755: // 06: 00 12 01 06 00 10 06 00 00 37 2b 11 (0x37*60+(0x2b-2))*75+0x11=0x03d2e0 3756: // aa: 00 0a 01 06 00 10 aa 00 00 3b 34 10 (0x3b*60+(0x34-2))*75+0x10=0x041bd2 3757: public void scuDoReadTOC () { 3758: if (abuCurrentMode == 0) { //ハードディスク 3759: scuDoInvalid (); 3760: return; 3761: } 3762: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3763: scuUnitAttention (); 3764: return; 3765: } 3766: boolean msf = (scuChip.spiCommandBuffer[1] & 2) != 0; //true=MSFアドレス形式,false=論理ブロックアドレス形式 3767: int startTrack = scuChip.spiCommandBuffer[6] & 255; //開始トラック 3768: int allocLength = ByteArray.byaRwz (scuChip.spiCommandBuffer, 7); //アロケーション長 3769: if (startTrack == 0) { 3770: startTrack = 1; 3771: } 3772: int dataLength; 3773: if (startTrack <= 1) { //データトラックとリードアウトトラック 3774: dataLength = 4 + 8 * 2; //データの長さ。自分を含む 3775: ByteArray.byaWw (scuChip.spiDataInBuffer, 0, 2 + 8 * 2); //TOCデータ長。要求されたサイズに関わらず最後までの長さを返す。自分を含まない 3776: scuChip.spiDataInBuffer[2] = 1; //先頭トラック番号 3777: scuChip.spiDataInBuffer[3] = 1; //最終トラック番号 3778: scuChip.spiDataInBuffer[4] = 0; //Reserved 3779: scuChip.spiDataInBuffer[5] = 0x14; //カレントポジションデータ,データトラック 3780: scuChip.spiDataInBuffer[6] = 1; //トラック番号 3781: scuChip.spiDataInBuffer[7] = 0; //Reserved 3782: ByteArray.byaWl (scuChip.spiDataInBuffer, 8, 0); //アブソリュートCD-ROMアドレス 3783: scuChip.spiDataInBuffer[12] = 0; //Reserved 3784: scuChip.spiDataInBuffer[13] = 0x10; //カレントポジションデータ 3785: scuChip.spiDataInBuffer[14] = (byte) 0xaa; //トラック番号 3786: scuChip.spiDataInBuffer[15] = 0; //Reserved 3787: ByteArray.byaWl (scuChip.spiDataInBuffer, 16, msf ? scuDiskEndRecord / 4500 << 16 | scuDiskEndRecord / 75 % 60 + 2 << 8 | scuDiskEndRecord % 75 : scuDiskEndRecord); //アブソリュートCD-ROMアドレス 3788: } else if (startTrack <= 0xaa) { //リードアウトトラック 3789: dataLength = 4 + 8 * 1; //データの長さ。自分を含む 3790: ByteArray.byaWw (scuChip.spiDataInBuffer, 0, 2 + 8 * 1); //TOCデータ長。要求されたサイズに関わらず最後までの長さを返す。自分を含まない 3791: scuChip.spiDataInBuffer[2] = 1; //先頭トラック番号 3792: scuChip.spiDataInBuffer[3] = 1; //最終トラック番号 3793: scuChip.spiDataInBuffer[4] = 0; //Reserved 3794: scuChip.spiDataInBuffer[5] = 0x10; //カレントポジションデータ 3795: scuChip.spiDataInBuffer[6] = (byte) 0xaa; //トラック番号 3796: scuChip.spiDataInBuffer[7] = 0; //Reserved 3797: ByteArray.byaWl (scuChip.spiDataInBuffer, 8, msf ? scuDiskEndRecord / 4500 << 16 | scuDiskEndRecord / 75 % 60 + 2 << 8 | scuDiskEndRecord % 75 : scuDiskEndRecord); //アブソリュートCD-ROMアドレス 3798: } else { //開始トラック番号が範囲外 3799: scuDoInvalid (); 3800: return; 3801: } 3802: scuChip.spiDataInPhase (scuChip.spiDataInBuffer, 0, Math.min (dataLength, allocLength), 0); //データインフェーズに移行する 3803: } //scuDoReadTOC() 3804: 3805: //scuDoAssignDriveSASI () 3806: // [0] 0xc2 3807: // [5] ドライブパラメータの長さ 3808: public void scuDoAssignDriveSASI () { 3809: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3810: scuUnitAttention (); 3811: return; 3812: } 3813: int n = scuChip.spiCommandBuffer[5] & 255; //ドライブパラメータの長さ 3814: scuChip.spiDataOutPhase (scuChip.spiDataOutBuffer, 0, n, 0); //データアウトフェーズに移行する 3815: } //scuDoAssignDriveSASI 3816: 3817: //scuDoInvalid () 3818: public void scuDoInvalid () { 3819: if (scuMode == 1) { //SCSI-1 3820: scuChip.spiSenseBuffer[scuChip.spiLUN][0] = (byte) SPC_INVALID_COMMAND; 3821: } else { //SCSI-2 3822: scuChip.spiSenseBuffer[scuChip.spiLUN][0] = (byte) SPC_EXTENDED_SENSE; 3823: scuChip.spiSenseBuffer[scuChip.spiLUN][2] = (byte) SPC_ILLEGAL_REQUEST; 3824: } 3825: scuChip.spiStatusPhase (SPC_CHECK_CONDITION, SPC_COMMAND_COMPLETE); 3826: } //scuDoInvalid() 3827: 3828: //scuNotReady () 3829: public void scuNotReady () { 3830: if (scuMode == 1) { //SCSI-1 3831: scuChip.spiSenseBuffer[scuChip.spiLUN][0] = (byte) SPC_INVALID_COMMAND; 3832: } else { //SCSI-2 3833: scuChip.spiSenseBuffer[scuChip.spiLUN][0] = (byte) SPC_EXTENDED_SENSE; 3834: scuChip.spiSenseBuffer[scuChip.spiLUN][2] = (byte) SPC_NOT_READY; 3835: } 3836: scuChip.spiStatusPhase (SPC_CHECK_CONDITION, SPC_COMMAND_COMPLETE); 3837: } //scuUnitAttention() 3838: 3839: //scuUnitAttention () 3840: public void scuUnitAttention () { 3841: if (scuMode == 1) { //SCSI-1 3842: scuChip.spiSenseBuffer[scuChip.spiLUN][0] = (byte) SPC_INVALID_COMMAND; 3843: } else { //SCSI-2 3844: scuChip.spiSenseBuffer[scuChip.spiLUN][0] = (byte) SPC_EXTENDED_SENSE; 3845: scuChip.spiSenseBuffer[scuChip.spiLUN][2] = (byte) SPC_UNIT_ATTENTION; 3846: } 3847: scuChip.spiStatusPhase (SPC_CHECK_CONDITION, SPC_COMMAND_COMPLETE); 3848: } //scuUnitAttention() 3849: 3850: //scuDataProtect () 3851: public void scuDataProtect () { 3852: if (scuMode == 1) { //SCSI-1 3853: scuChip.spiSenseBuffer[scuChip.spiLUN][0] = (byte) SPC_INVALID_COMMAND; 3854: } else { //SCSI-2 3855: scuChip.spiSenseBuffer[scuChip.spiLUN][0] = (byte) SPC_EXTENDED_SENSE; 3856: scuChip.spiSenseBuffer[scuChip.spiLUN][2] = (byte) SPC_DATA_PROTECT; 3857: } 3858: scuChip.spiStatusPhase (SPC_CHECK_CONDITION, SPC_COMMAND_COMPLETE); 3859: } //scuDataProtect() 3860: 3861: } //class SCUnit 3862: 3863: 3864: 3865: } //class SPC 3866: 3867: 3868: