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: "," + //$50| rrrrrr| rrrrrrrrrr| 328: "," + //$51| rrrrrr| rrrrrrrrrr| 329: "," + //$52| rrrrrr| rrrrrrrrrr| 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,4 予約 344: ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,," + 345: //グループ5 コマンド長12バイト | SCSI-1| SCSI-2 | 346: // |ADTPGWC|ADTPGWCSOLN| 347: "," + //$A0| rrrrrr| rrrrrrrrrr| 348: "," + //$A1| rrrrrr| rrrrrrrrrr| 349: "," + //$A2| rrrrrr| rrrrrrrrrr| 350: "," + //$A3| rrrrrr| rrrrrrrrrr| 351: "," + //$A4| rrrrrr| rrrrrrrrrr| 352: "Play Audio(12)/Move Medium," + //$A5| rrrrrr| rrrrrorrmr|C:Play Audio(12)/L:Move Medium 353: "Exchange Medium," + //$A6| rrrrrr| rrrrrrrror| 354: "," + //$A7| rrrrrr| rrrrrrrrrr| 355: "Read(12)/Get Message(12)," + //$A8| rrrrrr| rrrroororo|WCO:Read(12)/N:Get Message(12) 356: "Play Audio Track Relative(12)," + //$A9| rrrrrr| rrrrrorrrr| 357: "Write(12)/Send Message(12)," + //$AA| rrrrrr| rrrrorroro|WO:Write(12)/N:Send Message(12) 358: "," + //$AB| rrrrrr| rrrrrrrrrr| 359: "Erase(12)," + //$AC| rrrrrr| rrrrrrrorr| 360: "," + //$AD| rrrrrr| rrrrrrrrrr| 361: "Write and Verify(12)," + //$AE| rrrrrr| rrrrorrorr| 362: "Verify(12)," + //$AF| rrrrrr| rrrroororr| 363: "Search Data High(12)," + //$B0| rrrrrr| rrrroororr| 364: "Search Data Equal(12)," + //$B1| rrrrrr| rrrroororr| 365: "Search Data Low(12)," + //$B2| rrrrrr| rrrroororr| 366: "Set Limits(12)," + //$B3| rrrrrr| rrrroororr| 367: "," + //$B4| rrrrrr| rrrrrrrrrr| 368: "Request Volume Element Address," + //$B5| rrrrrr| rrrrrrrror| 369: "Send Volume Tag," + //$B6| rrrrrr| rrrrrrrror| 370: "Read Defect Data(12)," + //$B7| rrrrrr| rrrrrrrorr| 371: "Read Element Status," + //$B8| rrrrrr| rrrrrrrror| 372: "," + //$B9| rrrrrr| rrrrrrrrrr| 373: "," + //$BA| rrrrrr| rrrrrrrrrr| 374: "," + //$BB| rrrrrr| rrrrrrrrrr| 375: "," + //$BC| rrrrrr| rrrrrrrrrr| 376: "," + //$BD| rrrrrr| rrrrrrrrrr| 377: "," + //$BE| rrrrrr| rrrrrrrrrr| 378: "," + //$BF| rrrrrr| rrrrrrrrrr| 379: //グループ6,7 ベンダ固有 380: "," + //$C0 381: "," + //$C1 382: "Assign Drive(SASI)," + //$C2 コマンド長6バイト 383: "," + //$C3 384: "," + //$C4 385: "," + //$C5 386: "," + //$C6 387: "," + //$C7 388: "," + //$C8 389: "," + //$C9 390: "," + //$CA 391: "," + //$CB 392: "," + //$CC 393: "," + //$CD 394: "," + //$CE 395: "," + //$CF 396: ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,").split (",", 256); 397: 398: //レジスタ名 399: public static final String[] SPC_REGISTER_NAME = ( 400: //0 00 00 0000 00 00 00 11 11 11 11 11 11 11 11 401: //1 23 45 6789 ab cd ef 01 23 45 67 89 ab cd ef 402: ",BDID,,SCTL,,SCMD,,,,INTS,,PSNS,,SSTS,,SERR,,PCTL,,MBC,,DREG,,TEMP,,TCH,,TCM,,TCL,,").split (",", 32); 403: 404: //インタフェイスの有無 405: public static boolean spcSCSIEXRequest; //次回のリセットでspcSCSIEXOnに設定される値 406: public static boolean spcSCSIEXOn; //true=拡張SCSIポートあり 407: public static boolean spcSCSIINOn; //true=内蔵SCSIポートあり 408: 409: //インタフェイス 410: public static SPCChip spcSCSIEXChip; //拡張SCSIポート 411: public static SPCChip spcSCSIINChip; //内蔵SCSIポート 412: 413: //ユニット 414: public static SCUnit[] spcUnitArray; //SCSIユニットの配列 415: 416: //メニュー 417: public static JMenu spcMenu; 418: public static JCheckBoxMenuItem spcSCSIINMenuItem; 419: public static JCheckBoxMenuItem spcSCSIEXMenuItem; 420: 421: //ファイルフィルタ 422: public static javax.swing.filechooser.FileFilter spcFileFilter; //java.io.FileFilterと紛らわしい 423: 424: //開くダイアログ 425: public static OpenDialog spcOpenDialog; //開くダイアログ。null=作る前 426: public static int spcOpenUnit; //開くユニットの番号 427: public static ArrayList<File[]> spcOpenHistory; //作る前に追加されたヒストリ 428: 429: //フォーマットダイアログ 430: public static JDialog spcFormatDialog; //ダイアログ 431: public static JFileChooser2 spcFormatFileChooser; //ファイルチューザー 432: public static SpinnerNumberModel spcFormatModel; //容量のスピナーモデル 433: public static int spcFormatPartitionMegaBytes; //容量(MB)。1MB倍して32KB加えたサイズで作成する 434: public static int spcFormatBytesPerRecord; //1レコードあたりのバイト数(2の累乗) 435: public static JCheckBox spcFormatPartitioningCheckBox; //領域確保チェックボックス 436: public static boolean spcFormatPartitioningOn; //true=領域確保する 437: //protected static boolean spcFormatCopySystemFiles; //true=システム転送 438: public static JCheckBox spcFormatCopyHumanSysCheckBox; //HUMAN.SYSチェックボックス 439: public static JCheckBox spcFormatCopyCommandXCheckBox; //COMMAND.Xチェックボックス 440: public static boolean spcFormatCopyHumanSysOn; //true=HUMAN.SYSを書き込む 441: public static boolean spcFormatCopyCommandXOn; //true=COMMAND.Xを書き込む 442: public static javax.swing.filechooser.FileFilter spcFormatFilter; //SCSI HDイメージファイルフィルタ 443: 444: //spcInit () 445: // 初期化 446: public static void spcInit () { 447: 448: //インタフェイスの有無 449: spcSCSIEXRequest = Settings.sgsGetOnOff ("scsiex"); 450: spcSCSIEXOn = false; 451: spcSCSIINOn = false; 452: 453: //インタフェイス 454: spcSCSIEXChip = new SPCChip (true); //拡張SCSI 455: spcSCSIINChip = new SPCChip (false); //内蔵SCSI 456: 457: //ファイルフィルタ 458: // SASI/SCSIハードディスクのイメージファイルかどうかを調べる 459: // ファイルチューザーとドロップターゲットで使う 460: spcFileFilter = new javax.swing.filechooser.FileFilter () { //java.io.FileFilterと紛らわしい 461: @Override public boolean accept (File file) { 462: if (file.isDirectory ()) { 463: return true; 464: } 465: String path = file.getPath (); 466: if (spcIsInserted (path)) { //既に挿入されている 467: return false; 468: } 469: long longLength = file.length (); 470: for (HDMedia media : HDMedia.HDM_ARRAY) { 471: if (media.humDiskEndByte == longLength) { //ファイルサイズが一致 472: return true; 473: } 474: } 475: return spcIsHds (file, true) || spcIsIso (file); //拡張子がHDSで装置初期化されているか、拡張子がISO 476: } 477: @Override public String getDescription () { 478: return (Multilingual.mlnJapanese ? 479: "SASI/SCSI ハードディスクまたは CD-ROM のイメージファイル (*.HDF,*.HDS,*.ISO)" : 480: "SASI/SCSI hard disk or CD-ROM image files (*.HDF,*.HDS,*.ISO)"); 481: } 482: }; 483: 484: //開くダイアログ 485: spcOpenDialog = null; 486: spcOpenUnit = 0; 487: spcOpenHistory = new ArrayList<File[]> (); 488: for (int i = JFileChooser2.MAXIMUM_HISTORY_COUNT - 1; 0 <= i; i--) { 489: spcAddHistory (JFileChooser2.pathsToFiles (Settings.sgsGetString ("schistory" + i))); 490: } 491: 492: //ユニット 493: // ダイアログが書き込み禁止でもパラメータは:Rを付けなければ書き込み禁止にしない 494: spcUnitArray = new SCUnit[16]; 495: for (int u = 0; u < 16; u++) { 496: SCUnit unit = spcUnitArray[u] = new SCUnit (u, null); 497: String path = Settings.sgsGetString ("sc" + u); 498: String hdN = Settings.sgsGetString ("hd" + u); //SASIまたはSCSI 499: if (!hdN.equals ("")) { //hdNが指定されている 500: String hdNWithoutR = hdN.endsWith (":R") || hdN.endsWith (":r") ? hdN.substring (0, hdN.length () - 2) : hdN; //":R"を取り除く 501: File file = new File (hdNWithoutR); 502: if (spcIsHds (file, true) || 503: spcIsIso (file)) { //hdNはSCSI HD/CDらしい 504: path = hdN; 505: Settings.sgsPutString ("hd" + u, ""); //消しておく 506: } 507: } 508: boolean userWriteProtect = false; 509: if (path.toUpperCase ().endsWith (":R")) { //書き込み禁止モードで開く 510: path = path.substring (0, path.length () - 2); 511: userWriteProtect = true; 512: } 513: boolean hostWriteProtect = !new File (path).canWrite (); 514: if (path.length () != 0) { 515: unit.connect (true); //接続されていなければ接続する 516: if (unit.insert (path, 517: userWriteProtect || hostWriteProtect)) { //挿入できた 518: spcAddHistory (new File (path).getAbsoluteFile ()); 519: } 520: } 521: } 522: 523: //フォーマットダイアログ 524: spcFormatDialog = null; 525: spcFormatFileChooser = null; 526: spcFormatPartitionMegaBytes = 100; 527: spcFormatBytesPerRecord = 512; 528: spcFormatPartitioningCheckBox = null; 529: spcFormatPartitioningOn = true; 530: //spcFormatCopySystemFiles = true; 531: spcFormatCopyHumanSysCheckBox = null; 532: spcFormatCopyCommandXCheckBox = null; 533: spcFormatCopyHumanSysOn = true; 534: spcFormatCopyCommandXOn = true; 535: spcFormatFilter = new javax.swing.filechooser.FileFilter () { //java.io.FileFilterと紛らわしい 536: @Override public boolean accept (File file) { 537: if (file.isDirectory ()) { 538: return true; 539: } 540: String path = file.getPath (); 541: if (spcIsInserted (path)) { //既に挿入されている 542: return false; 543: } 544: return spcIsHds (file, false); //拡張子がHDSならばファイルが存在しなくてもよい 545: } 546: @Override public String getDescription () { 547: return (Multilingual.mlnJapanese ? 548: "SCSI ハードディスクのイメージファイル (*.HDS)" : 549: "SCSI hard disk image files (*.HDS)"); 550: } 551: }; 552: 553: } //spcInit() 554: 555: //spcReset () 556: public static void spcReset () { 557: //拡張SCSI 558: spcSCSIEXOn = spcSCSIEXRequest; 559: XEiJ.busSuper (spcSCSIEXOn ? MemoryMappedDevice.MMD_EXS : MemoryMappedDevice.MMD_NUL, 0x00ea0000, 0x00ea2000); //必要なときだけ接続する 560: //内蔵SCSI 561: // 内蔵SASIと同じページにあるので内蔵SCSIがなくてもページごと切り離すことはできない 562: spcSCSIINOn = XEiJ.currentModel.isSCSI (); 563: // 拡張 内蔵 unit0-7 unit8-15 564: // ----------------------------- 565: // 有効 有効 拡張 内蔵 566: // 有効 無効 拡張 無効 567: // 無効 有効 内蔵 無効 568: // 無効 無効 無効 無効 569: spcSCSIEXChip.spiReset (spcSCSIEXOn ? 0 : -8); 570: spcSCSIINChip.spiReset (spcSCSIINOn ? spcSCSIEXOn ? 8 : 0 : -8); 571: for (int u = 0; u < 16; u++) { 572: spcUnitArray[u].scuReset (u < 8 ? spcSCSIEXOn ? spcSCSIEXChip : spcSCSIINOn ? spcSCSIINChip : null : 573: spcSCSIEXOn && spcSCSIINOn ? spcSCSIINChip : null); 574: } 575: if (spcSCSIEXOn) { 576: MainMemory.mmrWb (0x00ed0070, MainMemory.mmrRbs (0x00ed0070) | 0x08); //拡張フラグをセットする 577: } else { 578: MainMemory.mmrWb (0x00ed0070, MainMemory.mmrRbs (0x00ed0070) & ~0x08); //拡張フラグをクリアする 579: } 580: } //spcReset() 581: 582: //spcTini () 583: // 後始末 584: public static void spcTini () { 585: spcSCSIEXChip.spiTini (); 586: spcSCSIINChip.spiTini (); 587: 588: //インタフェイスの有無 589: Settings.sgsPutOnOff ("scsiex", spcSCSIEXRequest); 590: 591: //開くダイアログ 592: // 開くダイアログを作らなかったときはパラメータを更新しない 593: if (spcOpenDialog != null) { 594: Settings.sgsPutOnOff ("screadonly", spcOpenDialog.getReadOnly ()); 595: Settings.sgsPutOnOff ("scappreboot", spcOpenDialog.getReboot ()); 596: ArrayList<String> pathsList = spcOpenDialog.getHistory (); 597: int n = pathsList.size (); 598: for (int i = 0; i < n; i++) { 599: Settings.sgsPutString ("schistory" + i, pathsList.get (i)); 600: } 601: for (int i = n; i < 16; i++) { 602: Settings.sgsPutString ("schistory" + i, ""); 603: } 604: } 605: 606: //ユニット 607: for (int u = 0; u < 16; u++) { 608: AbstractUnit unit = spcUnitArray[u]; 609: Settings.sgsPutString ( 610: "sc" + u, 611: unit.abuConnected && unit.abuInserted ? 612: unit.abuWriteProtected ? unit.abuPath + ":R" : unit.abuPath : 613: ""); 614: } 615: 616: } //spcTini() 617: 618: public static void spcMakeMenu () { 619: 620: //アクションリスナー 621: ActionListener listener = new ActionListener () { 622: @Override public void actionPerformed (ActionEvent ae) { 623: Object source = ae.getSource (); 624: String command = ae.getActionCommand (); 625: switch (command) { 626: case "Expansion SCSI port": //拡張 SCSI ポート 627: spcSCSIEXRequest = ((JCheckBoxMenuItem) source).isSelected (); 628: break; 629: case "Create new SCSI hard disk image files": //SCSI ハードディスクのイメージファイルの新規作成 630: spcOpenFormatDialog (); 631: break; 632: } 633: } 634: }; 635: 636: //SCSIメニュー 637: spcMenu = ComponentFactory.createMenu ("SCSI"); //横に長いとサブメニューを開きにくいので短くする 638: ComponentFactory.addComponents ( 639: spcMenu, 640: ComponentFactory.createHorizontalBox ( 641: Multilingual.mlnText ( 642: ComponentFactory.createLabel ("SCSI hard disk and CD-ROM"), 643: "ja", "SCSI ハードディスクと CD-ROM")), 644: ComponentFactory.createHorizontalSeparator () 645: ); 646: for (int u = 0; u < 16; u++) { 647: spcMenu.add (spcUnitArray[u].getMenuBox ()); 648: } 649: ComponentFactory.addComponents ( 650: spcMenu, 651: ComponentFactory.createHorizontalSeparator (), 652: spcSCSIINMenuItem = ComponentFactory.setEnabled ( 653: Multilingual.mlnText ( 654: ComponentFactory.createCheckBoxMenuItem (XEiJ.currentModel.isSCSI (), "Built-in SCSI port", listener), "ja", "内蔵 SCSI ポート"), 655: false), //機種の指定で内蔵SASIと内蔵SCSIを切り替えるので操作できないことにする 656: spcSCSIEXMenuItem = Multilingual.mlnText ( 657: ComponentFactory.createCheckBoxMenuItem (spcSCSIEXRequest, "Expansion SCSI port", listener), 658: "ja", "拡張 SCSI ポート"), 659: ComponentFactory.createHorizontalSeparator (), 660: Multilingual.mlnText (ComponentFactory.createMenuItem ("Create new SCSI hard disk image files", listener), 661: "ja", "SCSI ハードディスクのイメージファイルの新規作成"), 662: !SUK.SUK_ON ? null : ComponentFactory.createHorizontalSeparator (), 663: !SUK.SUK_ON ? null : SUK.sukGetMenu () 664: ); 665: 666: } 667: 668: //inserted = spcIsInserted (path) 669: // パスで指定したファイルが既に挿入されているか調べる 670: public static boolean spcIsInserted (String path) { 671: for (SCUnit unit : spcUnitArray) { 672: if (unit != null && 673: unit.abuConnected && //接続されている 674: unit.abuInserted && //挿入されている 675: unit.abuPath.equals (path)) { //パスが一致している 676: return true; //既に挿入されている 677: } 678: } 679: return false; //まだ挿入されていない 680: } //spcIsInserted(String) 681: 682: static class OpenDialog extends AbstractOpenDialog { 683: public OpenDialog () { 684: super (XEiJ.frmFrame, 685: "Open SCSI hard disk or CD-ROM image files", 686: "SCSI ハードディスクまたは CD-ROM のイメージファイルを開く", 687: false, //ファイル 688: spcFileFilter); 689: } 690: @Override public void openFiles (File[] files, boolean reboot) { 691: spcOpenFiles (files, reboot); 692: } 693: } //class OpenDialog 694: 695: //spcOpenFiles (list, reset) 696: // 開くダイアログで選択されたファイルを開く 697: public static void spcOpenFiles (File[] list, boolean reset) { 698: boolean success = true; 699: for (int u = spcOpenUnit, k = 0; k < list.length; ) { 700: if (16 <= u) { //ユニットが足りない 701: success = false; //失敗 702: break; 703: } 704: SCUnit unit = spcUnitArray[u]; //ユニット 705: if (!unit.abuConnected) { //接続されていない 706: u++; 707: continue; 708: } 709: File file = list[k++]; //イメージファイル 710: if (!file.isFile ()) { //イメージファイルが存在しない 711: success = false; //失敗 712: continue; 713: } 714: if (!unit.insert (file.getPath (), 715: spcOpenDialog.getReadOnly () || !file.canWrite ())) { //挿入できない 716: success = false; //失敗 717: continue; 718: } 719: u++; 720: } 721: if (success) { //すべて挿入できた 722: spcAddHistory (list); //ヒストリに追加する 723: if (reset) { //ここから再起動 724: if (spcOpenUnit < 8) { 725: XEiJ.mpuReset (0xa000, SPC_HANDLE_EX + (spcOpenUnit << 2)); //拡張SCSIがなければ内蔵SCSIに読み替えられる 726: } 727: } 728: } 729: } //spcOpenFiles(File[],boolean) 730: 731: //spcMakeFormatDialog () 732: // フォーマットダイアログを作る 733: // コマンドラインのみ 734: public static void spcMakeFormatDialog () { 735: 736: //アクションリスナー 737: ActionListener listener = new ActionListener () { 738: @Override public void actionPerformed (ActionEvent ae) { 739: switch (ae.getActionCommand ()) { 740: case JFileChooser.APPROVE_SELECTION: 741: case "Start formatting": //フォーマットを開始する 742: { 743: File[] list = spcFormatFileChooser.getSelectedFiles (); 744: if (list.length > 0) { 745: spcFormatDialog.setVisible (false); 746: spcFormatFiles (list); 747: } 748: } 749: break; 750: case JFileChooser.CANCEL_SELECTION: 751: case "Cancel": //キャンセル 752: spcFormatDialog.setVisible (false); 753: break; 754: case "256 bytes": //256 バイト 755: spcFormatBytesPerRecord = 256; 756: break; 757: case "512 bytes": //512 バイト 758: spcFormatBytesPerRecord = 512; 759: break; 760: case "Partitioning": 761: spcFormatPartitioningOn = spcFormatPartitioningCheckBox.isSelected (); //領域確保 762: if (spcFormatPartitioningOn) { //領域確保する 763: spcFormatCopyHumanSysCheckBox.setEnabled (true); //HUMAN.SYSを書き込むかどうか選択できる 764: spcFormatCopyHumanSysCheckBox.setSelected (spcFormatCopyHumanSysOn); //HUMAN.SYSを書き込む/書き込まない 765: } else { //領域確保しない 766: spcFormatCopyHumanSysCheckBox.setEnabled (false); //HUMAN.SYSを書き込むかどうか選択できない 767: spcFormatCopyHumanSysCheckBox.setSelected (false); //HUMAN.SYSを書き込まない 768: } 769: if (spcFormatPartitioningOn && spcFormatCopyHumanSysOn) { //領域確保してHUMAN.SYSを書き込む 770: spcFormatCopyCommandXCheckBox.setEnabled (true); //COMMAND.Xを書き込むかどうか選択できる 771: spcFormatCopyCommandXCheckBox.setSelected (spcFormatCopyCommandXOn); //COMMAND.Xを書き込む/書き込まない 772: } else { //領域確保しないかHUMAN.SYSを書き込まない 773: spcFormatCopyCommandXCheckBox.setEnabled (false); //COMMAND.Xを書き込むかどうか選択できない 774: spcFormatCopyCommandXCheckBox.setSelected (false); //COMMAND.Xを書き込まない 775: } 776: break; 777: //case "Copy System Files": //システムファイルを転送する 778: // spcFormatCopySystemFiles = ((JCheckBox) ae.getSource ()).isSelected (); 779: // break; 780: case "HUMAN.SYS": 781: spcFormatCopyHumanSysOn = spcFormatCopyHumanSysCheckBox.isSelected (); //HUMAN.SYSを書き込む/書き込まない 782: if (spcFormatCopyHumanSysOn) { //HUMAN.SYSを書き込む 783: spcFormatCopyCommandXCheckBox.setEnabled (true); //COMMAND.Xを書き込むかどうか選択できる 784: spcFormatCopyCommandXCheckBox.setSelected (spcFormatCopyCommandXOn); //COMMAND.Xを書き込む/書き込まない 785: } else { //HUMAN.SYSを書き込まない 786: spcFormatCopyCommandXCheckBox.setEnabled (false); //COMMAND.Xを書き込むかどうか選択できない 787: spcFormatCopyCommandXCheckBox.setSelected (false); //COMMAND.Xを書き込まない 788: } 789: break; 790: case "COMMAND.X": 791: spcFormatCopyCommandXOn = spcFormatCopyCommandXCheckBox.isSelected (); //COMMAND.Xを書き込む/書き込まない 792: break; 793: } 794: } 795: }; 796: 797: //ファイルチューザー 798: spcMakeFormatFileChooser (); 799: spcFormatFileChooser.setFileFilter (spcFormatFilter); 800: spcFormatFileChooser.addActionListener (listener); 801: 802: //ダイアログ 803: spcFormatModel = new SpinnerNumberModel (spcFormatPartitionMegaBytes, 1, 2047, 1); 804: ButtonGroup sectorGroup = new ButtonGroup (); 805: spcFormatDialog = Multilingual.mlnTitle ( 806: ComponentFactory.createModalDialog ( 807: XEiJ.frmFrame, 808: "Create new SCSI hard disk image files", 809: ComponentFactory.createBorderPanel ( 810: 0, 0, 811: ComponentFactory.createVerticalBox ( 812: spcFormatFileChooser, 813: ComponentFactory.createHorizontalBox ( 814: Box.createHorizontalStrut (12), 815: Box.createHorizontalGlue (), 816: Multilingual.mlnText (ComponentFactory.createLabel ("Capacity (MB): "), "ja", "容量 (MB): "), 817: ComponentFactory.createNumberSpinner (spcFormatModel, 4, new ChangeListener () { 818: @Override public void stateChanged (ChangeEvent ce) { 819: spcFormatPartitionMegaBytes = spcFormatModel.getNumber ().intValue (); 820: } 821: }), 822: Box.createHorizontalGlue (), 823: Multilingual.mlnText (ComponentFactory.createLabel ("Sector size: "), "ja", "セクタサイズ: "), 824: Multilingual.mlnText (ComponentFactory.createRadioButtonMenuItem (sectorGroup, spcFormatBytesPerRecord == 256, "256 bytes", listener), "ja", "256 バイト"), 825: Multilingual.mlnText (ComponentFactory.createRadioButtonMenuItem (sectorGroup, spcFormatBytesPerRecord == 512, "512 bytes", listener), "ja", "512 バイト"), 826: Box.createHorizontalStrut (12), 827: Multilingual.mlnText (spcFormatPartitioningCheckBox = ComponentFactory.createCheckBox (spcFormatPartitioningOn, "Partitioning", listener), "ja", "領域確保"), 828: Box.createHorizontalGlue (), 829: Box.createHorizontalStrut (12) 830: ), 831: Box.createVerticalStrut (12), 832: ComponentFactory.createHorizontalBox ( 833: Box.createHorizontalStrut (12), 834: Box.createHorizontalGlue (), 835: //Multilingual.mlnText (ComponentFactory.createCheckBox (spcFormatCopySystemFiles, "Copy System Files", listener), "ja", "システムファイルを転送する"), 836: spcFormatCopyHumanSysCheckBox = ComponentFactory.setEnabled ( 837: ComponentFactory.createCheckBox (spcFormatCopyHumanSysOn, "HUMAN.SYS", listener), 838: spcFormatPartitioningOn), 839: Box.createHorizontalStrut (12), 840: spcFormatCopyCommandXCheckBox = ComponentFactory.setEnabled ( 841: ComponentFactory.createCheckBox (spcFormatCopyHumanSysOn && spcFormatCopyCommandXOn, "COMMAND.X", listener), 842: spcFormatPartitioningOn && spcFormatCopyHumanSysOn), 843: Box.createHorizontalGlue (), 844: Box.createHorizontalStrut (12), 845: Multilingual.mlnText (ComponentFactory.createButton ("Start formatting", KeyEvent.VK_F, listener), "ja", "フォーマットを開始する"), 846: Box.createHorizontalStrut (12), 847: Multilingual.mlnText (ComponentFactory.createButton ("Cancel", KeyEvent.VK_C, listener), "ja", "キャンセル"), 848: Box.createHorizontalStrut (12) 849: ), 850: Box.createVerticalStrut (12) 851: ) 852: ) 853: ), 854: "ja", "SCSI ハードディスクのイメージファイルの新規作成"); 855: 856: } //spcMakeFormatDialog() 857: 858: //spcMakeFormatFileChooser () 859: // フォーマットファイルチューザーを作る 860: public static void spcMakeFormatFileChooser () { 861: if (spcFormatFileChooser == null) { 862: spcFormatFileChooser = new JFileChooser2 (); 863: //spcFormatFileChooser.setMultiSelectionEnabled (true); //複数選択可能 864: spcFormatFileChooser.setControlButtonsAreShown (false); //デフォルトのボタンを消す 865: } 866: } 867: 868: //spcOpenFormatDialog () 869: // フォーマットダイアログを開く 870: public static void spcOpenFormatDialog () { 871: if (spcFormatDialog == null) { 872: spcMakeFormatDialog (); 873: } 874: XEiJ.pnlExitFullScreen (true); 875: spcFormatDialog.setVisible (true); 876: } //spcOpenFormatDialog() 877: 878: //success = spcFormatFiles (list) 879: // SCSIハードディスクのイメージファイルを作成する 880: // コマンドラインのみ 881: // spcFormatPartitionMegaBytes 882: // spcFormatBytesPerRecord 883: // //spcFormatCopySystemFiles 884: // spcFormatPartitioningOn 885: // spcFormatCopyHumanSysOn 886: // spcFormatCopyCommandXOn 887: // を設定しておくこと 888: public static boolean spcFormatFiles (File[] list) { 889: boolean success = true; 890: format: 891: { 892: SCMedia media = new SCMedia (spcFormatBytesPerRecord, //bytesPerRecord 893: (int) ((32768L + ((long) spcFormatPartitionMegaBytes << 20)) / spcFormatBytesPerRecord)); //diskEndRecord 894: //データの配列を作る 895: // セクタ0から先頭のパーティションのシステムファイルまでがすべて収まっている 896: // パーティションの手前に32KB、IPLが1KB、FATが最大で128KB、ルートディレクトリが16KB、HUMAN.SYSが58KB、COMMAND.Xが28KB 897: byte[] array = new byte[1024 * 512]; //データの配列。512KB 898: media.scmMakeFormatData (array, spcFormatPartitioningOn, spcFormatCopyHumanSysOn, spcFormatCopyCommandXOn); 899: //イメージファイルを作る 900: int u = 0; 901: for (File file : list) { 902: String path = file.getPath (); 903: if (!path.toUpperCase ().endsWith (".HDS")) { //適切な拡張子が指定されていない 904: path += path.endsWith (".") ? "HDS" : ".HDS"; //拡張子を付ける 905: file = new File (path); 906: } 907: if (spcIsInserted (path)) { //他のユニットに挿入されている 908: success = false; //失敗 909: break format; 910: } 911: //書き出す 912: if (!XEiJ.rscPutFile (path, array, 0, array.length, (int) media.humDiskEndByte)) { //書き出せない 913: success = false; //失敗 914: break format; 915: } 916: //空いているユニットがあれば挿入する 917: while (u < 16) { 918: SCUnit unit = spcUnitArray[u++]; //ユニット 919: if (unit.abuConnected && //接続されていて 920: !unit.abuInserted && //空いていて 921: unit.insert (path, 922: false)) { //挿入できた 923: //フォーマットしたディスクの書き込みを禁止しても意味がないのでここでは書き込みを禁止しない 924: break; 925: } 926: } 927: } 928: } //format 929: if (success) { //すべてフォーマットできた 930: spcAddHistory (list); //ヒストリに追加する 931: } 932: return success; 933: } //spcFormatFiles(File[]) 934: 935: //spcSetFat (bb, fatOffset, fat12, cluster, next) 936: // FATに書く 937: public static void spcSetFat (byte[] bb, int fatOffset, boolean fat12, int cluster, int next) { 938: if (fat12) { 939: int i = fatOffset + 3 * (cluster >> 1); 940: if ((cluster & 1) == 0) { //偶数クラスタ(HML→ML.H..) 941: bb[i ] = (byte) next; //ML。next&0x0ff 942: bb[i + 1] = (byte) (bb[i + 1] & 0xf0 | next >> 8 & 15); //.H。(next&0xf00)>>8 943: } else { //奇数クラスタ(hml→..l.hm) 944: bb[i + 1] = (byte) (next << 4 | bb[i + 1] & 15); //l.。(next&0x00f)<<4 945: bb[i + 2] = (byte) (next >> 4); //hm。(next&0xff0)>>4 946: } 947: } else { 948: int i = fatOffset + (cluster << 1); 949: bb[i ] = (byte) (next >> 8); 950: bb[i + 1] = (byte) next; 951: } 952: } //spcSetFat(byte[],int,boolean,int,int) 953: 954: 955: //spcAddHistory (file) 956: // ファイルをヒストリに追加する 957: public static void spcAddHistory (File file) { 958: spcAddHistory (new File[] { file }); 959: } 960: 961: //spcAddHistory (files) 962: // 複数のファイルをヒストリに追加する 963: public static void spcAddHistory (File[] files) { 964: if (spcOpenDialog == null) { 965: spcOpenHistory.add (files); 966: } else { 967: spcOpenDialog.addHistory (files); 968: } 969: spcMakeFormatFileChooser (); 970: spcFormatFileChooser.addHistory (files); 971: spcFormatFileChooser.selectLastFiles (); 972: } 973: 974: 975: //success = spcIsHds (file, formatted) 976: // ファイルはHDSか 977: // formatted true=拡張子がHDSでファイルが存在して装置初期化されていなければならない 978: // false=拡張子がHDSならばファイルが存在しなくてもよい 979: public static boolean spcIsHds (File file, boolean formatted) { 980: //拡張子がHDSか 981: String upperName = file.getName ().toUpperCase (); 982: if (!(upperName.endsWith (".HDS") || 983: upperName.endsWith (".DIM.001"))) { 984: return false; 985: } 986: //ファイルが存在するか 987: if (!formatted) { 988: return true; 989: } 990: if (!file.isFile ()) { 991: return false; 992: } 993: //ファイルサイズが64KB以上かつ256で割り切れるか 994: long longLength = file.length (); //ファイルサイズ 995: if (longLength < (long) (1024 * 64) || 996: (longLength & 255) != 0) { 997: return false; 998: } 999: //先頭512バイトを読み込む 1000: byte[] bb = new byte[512]; 1001: try (BufferedInputStream bis = new BufferedInputStream (new FileInputStream (file))) { 1002: if (bis.read (bb, 0, 512) != 512) { 1003: return false; 1004: } 1005: } catch (IOException ioe) { 1006: return false; 1007: } 1008: //装置初期化されているか 1009: // 0000 q X68SCSI1マジック 1010: // 0008 w 1レコードあたりのバイト数(2の累乗) 1011: // 000a l ディスクのレコード数 1012: // 000e b Read(10),Write(10)が動作するか 1013: // 000f b デバイスタイプ 1014: if (ByteArray.byaRls (bb, 0) == ('X' << 24 | '6' << 16 | '8' << 8 | 'S') && 1015: ByteArray.byaRls (bb, 4) == ('C' << 24 | 'S' << 16 | 'I' << 8 | '1')) { 1016: //SxSIか 1017: boolean sxsi = ByteArray.byaRls (bb, 42) == ('S' << 24 | 'x' << 16 | 'S' << 8 | 'I'); 1018: //1レコードあたりのバイト数 1019: int bytesPerRecord = ByteArray.byaRwz (bb, 8); 1020: //1レコードあたりのバイト数が256または512か 1021: if (bytesPerRecord != 256 && 1022: bytesPerRecord != 512) { 1023: return false; 1024: } 1025: //ディスクのレコード数 1026: long diskEndRecord = (long) ByteArray.byaRls (bb, 10) & 0xffffffffL; 1027: //SxSIは1レコードあたりのバイト数が512だがディスクのレコード数は1024で計算されている 1028: if (sxsi) { 1029: diskEndRecord <<= 1; 1030: } 1031: //ディスクのバイト数 1032: long diskEndByte = (long) bytesPerRecord * diskEndRecord; 1033: //ディスクのバイト数とファイルサイズが一致しているか 1034: // FORMAT.XはRead Capacityが返す最終論理ブロックアドレスを論理ブロック数と誤解して1ブロック少ない容量で装置初期化を行う 1035: return (longLength == diskEndByte || 1036: longLength == diskEndByte + (long) bytesPerRecord || 1037: longLength == diskEndByte + (long) (bytesPerRecord << 1)); 1038: } 1039: //IBMスーパーフロッピーか 1040: // 0000 b 0xeb 1041: // 01fe b 0x55 1042: // 01ff b 0xaa 1043: if (bb[0x0000] == (byte) 0xeb && 1044: bb[0x01fe] == (byte) 0x55 && 1045: bb[0x01ff] == (byte) 0xaa) { //IBMスーパーフロッピー 1046: return true; 1047: } 1048: return false; 1049: } //spcIsHds(File,boolean) 1050: 1051: //spcIsIso (file) 1052: // ファイルはISOか 1053: // 参考 1054: // http://euc.jp/periphs/iso9660.ja.html 1055: public static boolean spcIsIso (File file) { 1056: String upperName = file.getName ().toUpperCase (); 1057: if (upperName.endsWith (".ISO")) { //拡張子がISO 1058: if (file.isFile ()) { //ファイルが存在する 1059: long longLength = file.length (); //ファイルサイズ 1060: if (((int) longLength & 2047) == 0 && //ファイルサイズが2048で割り切れる 1061: (long) (2048 * 18) <= longLength) { //ファイルサイズが18セクタ以上 1062: try (DataInputStream dis = new DataInputStream (new BufferedInputStream (new FileInputStream (file)))) { 1063: dis.skipBytes (2048 * 16); //セクタ16まで読み飛ばす 1064: long id = dis.readLong (); //0 ボリューム記述子種別と規格識別子とボリューム記述子版数とボリュームフラグ 1065: dis.skipBytes (84 - 8); 1066: int diskEndRecord = dis.readInt (); //84 ボリュームのブロック数 1067: dis.skipBytes (130 - 88); 1068: int bytesPerRecord = (int) dis.readChar (); //130 ブロックのバイト数 1069: long diskEndByte = (long) bytesPerRecord * (long) diskEndRecord; //ボリュームのバイト数 1070: if (id >>> 8 == ((long) 0x01 << 48 | 1071: (long) 'C' << 40 | (long) 'D' << 32 | (long) '0' << 24 | (long) '0' << 16 | (long) '1' << 8 | 1072: (long) 0x01) && //ボリューム記述子種別と規格識別子とボリューム記述子版数が一致 1073: bytesPerRecord == 2048 && //ブロックのバイト数が2048 1074: 0 <= diskEndRecord && //ボリュームのブロック数が31bitに収まっている 1075: diskEndByte <= longLength) { //ボリュームのバイト数がファイルサイズ以下。一致しているとは限らない 1076: return true; 1077: } 1078: } catch (IOException ioe) { 1079: } 1080: } //if ファイルサイズ 1081: } //if ファイルが存在する 1082: } //if 拡張子がISO 1083: return false; 1084: } //spcIsIso(File) 1085: 1086: 1087: 1088: //======================================================================================== 1089: //SCSIフォーマットデータ 1090: // 無償公開されたHuman68k version 3.02のシステムディスクに入っているFORMAT.Xから抽出したデータを使う 1091: 1092: //---------------------------------------------------------------------------------------- 1093: //SCSIディスクID 1094: // SCSIディスクのセクタ0に書き込まれる 1095: /* 1096: public static final int[] SPC_DISK_ID_1 = { 1097: // 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)" 1098: 0x58,0x36,0x38,0x53,0x43,0x53,0x49,0x31, //00000000 X68SCSI1 1099: }; 1100: */ 1101: // perl misc/itob.pl xeij/SPC.java SPC_DISK_ID_1 1102: public static final byte[] SPC_DISK_ID_1 = "X68SCSI1".getBytes (XEiJ.ISO_8859_1); 1103: /* 1104: public static final int[] SPC_DISK_ID_2 = { 1105: // 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)" 1106: 0x48,0x75,0x6d,0x61,0x6e,0x36,0x38,0x4b,0x20,0x53,0x43,0x53,0x49,0x2d,0x44,0x49, //00000010 Human68K SCSI-DI 1107: 0x53,0x4b,0x20,0x62,0x79,0x20,0x4b,0x65,0x69,0x73,0x6f,0x6b,0x75,0x20,0x47,0x69, //00000020 SK by Keisoku Gi 1108: 0x6b,0x65,0x6e, //00000030 ken 1109: }; 1110: */ 1111: // perl misc/itob.pl xeij/SPC.java SPC_DISK_ID_2 1112: public static final byte[] SPC_DISK_ID_2 = "Human68K SCSI-DISK by Keisoku Giken".getBytes (XEiJ.ISO_8859_1); 1113: 1114: //---------------------------------------------------------------------------------------- 1115: //SCSIディスクIPL 1116: // SCSIディスクのセクタ1に書き込まれる 1117: // HELPキーが押されていたらメニューを表示する 1118: // 選択されたパーティションのパーティションIPLを読み込んで起動する 1119: /* 1120: public static final int[] SPC_DISK_IPL = { 1121: // 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)" 1122: 0x60,0x00,0x00,0xca,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00000400 `..ハ............ 1123: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00000410 ................ 1124: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00000420 ................ 1125: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00000430 ................ 1126: 0x1a,0x1b,0x5b,0x36,0x3b,0x33,0x32,0x48,0x58,0x36,0x38,0x30,0x30,0x30,0x20,0x53, //00000440 ..[6;32HX68000 S 1127: 0x43,0x53,0x49,0x20,0x44,0x49,0x53,0x4b,0x20,0x49,0x50,0x4c,0x20,0x4d,0x45,0x4e, //00000450 CSI DISK IPL MEN 1128: 0x55,0x1b,0x5b,0x32,0x35,0x3b,0x32,0x32,0x48,0x83,0x4a,0x81,0x5b,0x83,0x5c,0x83, //00000460 U.[25;22Hカーソル 1129: 0x8b,0x83,0x4c,0x81,0x5b,0x82,0xc5,0x91,0x49,0x91,0xf0,0x82,0xb5,0x82,0xc4,0x83, //00000470 キーで選択してリ 1130: 0x8a,0x83,0x5e,0x81,0x5b,0x83,0x93,0x83,0x4c,0x81,0x5b,0x82,0xf0,0x89,0x9f,0x82, //00000480 ターンキーを押し 1131: 0xb5,0x82,0xc4,0x82,0xad,0x82,0xbe,0x82,0xb3,0x82,0xa2,0x00,0x1b,0x5b,0x32,0x36, //00000490 てください..[26 1132: 0x3b,0x32,0x38,0x48,0x91,0x49,0x91,0xf0,0x82,0xb5,0x82,0xbd,0x82,0xe0,0x82,0xcc, //000004a0 ;28H選択したもの 1133: 0x82,0xf0,0x8e,0xa9,0x93,0xae,0x8b,0x4e,0x93,0xae,0x82,0xc6,0x82,0xb5,0x82,0xc4, //000004b0 を自動起動として 1134: 0x93,0x6f,0x98,0x5e,0x82,0xb5,0x82,0xdc,0x82,0xb7,0x00,0x00,0x72,0x00,0x70,0x04, //000004c0 登録します..r.p. 1135: 0x4e,0x4f,0x08,0x00,0x00,0x01,0x67,0x02,0x4e,0x75,0x4f,0xfa,0xff,0x24,0x42,0x85, //000004d0 NO....g.NuO..$B. 1136: 0x70,0xf5,0x72,0x25,0x43,0xfa,0x03,0x02,0x4e,0x4f,0x4a,0x00,0x66,0x00,0x01,0x92, //000004e0 p.r%C...NOJ.f... 1137: 0x22,0x29,0x00,0x04,0xe0,0x89,0xe2,0x89,0x43,0xfa,0x02,0xea,0x22,0x81,0x74,0x02, //000004f0 ")..煢竕C..."》. 1138: 0x26,0x3c,0x00,0x00,0x04,0x00,0x43,0xfa,0x02,0xe0,0x61,0x00,0x02,0x3a,0x4a,0x00, //00000500 &<....C..濛..:J. 1139: 0x66,0x00,0x01,0x6e,0x43,0xfa,0x02,0xd2,0x47,0xfa,0xfe,0xea,0x0c,0x91,0x58,0x36, //00000510 f..nC..メG....噌6 1140: 0x38,0x4b,0x66,0x00,0x01,0x70,0x74,0x0e,0x42,0x43,0x42,0x47,0x42,0x86,0x43,0xe9, //00000520 8Kf..pt.BCBGB.C. 1141: 0x00,0x10,0x4a,0x11,0x67,0x16,0x52,0x46,0x26,0xc9,0x10,0x29,0x00,0x08,0x08,0x00, //00000530 ..J.g.RF&ノ.).... 1142: 0x00,0x00,0x66,0x08,0x52,0x43,0x4a,0x00,0x66,0x02,0x52,0x47,0x51,0xca,0xff,0xe0, //00000540 ..f.RCJ.f.RGQハ.濳 1143: 0x4a,0x43,0x67,0x00,0x01,0x46,0x72,0x0a,0x70,0x04,0x4e,0x4f,0x08,0x00,0x00,0x04, //00000550 Cg..Fr.p.NO.... 1144: 0x66,0x12,0x4a,0x47,0x67,0x0e,0x53,0x47,0x67,0x1c,0x43,0xfa,0xfe,0xd4,0x61,0x00, //00000560 f.JGg.SGg.C..ヤa. 1145: 0x01,0xc8,0x60,0x28,0x43,0xfa,0xfe,0xca,0x61,0x00,0x01,0xbe,0x43,0xfa,0xff,0x1e, //00000570 .ネ`(C..ハa..セC... 1146: 0x61,0x00,0x01,0xb6,0x60,0x14,0x47,0xfa,0xfe,0x7c,0x20,0x5b,0x24,0x28,0x00,0x08, //00000580 a..カ`.G..| [$(.. 1147: 0x4a,0x28,0x00,0x08,0x66,0xf4,0x60,0x00,0x00,0xc2,0x7a,0x02,0x42,0x43,0x45,0xfa, //00000590 J(..f.`..ツz.BCE. 1148: 0xfe,0x64,0x22,0x52,0x10,0x29,0x00,0x08,0x67,0x0a,0xb0,0x05,0x67,0x06,0x72,0x02, //000005a0 .d"R.)..g.ー.g.r. 1149: 0x61,0x00,0x01,0x7a,0x61,0x00,0x01,0x1a,0x58,0x8a,0x52,0x43,0xb6,0x46,0x65,0xe2, //000005b0 a..za...X崖CカFe秡 1150: 0x60,0x2a,0x61,0x00,0x01,0x0a,0x61,0x00,0x00,0xf6,0xb0,0x3c,0x00,0x1d,0x67,0x3a, //000005c0 *a...a...ー<..g: 1151: 0xb0,0x3c,0x00,0x35,0x67,0x0c,0xb0,0x3c,0x00,0x3c,0x67,0x1a,0xb0,0x3c,0x00,0x3e, //000005d0 ー<.5g.ー<.<g.ー<.> 1152: 0x66,0xe4,0x61,0x00,0x00,0xec,0x52,0x43,0xb6,0x46,0x65,0x02,0x42,0x43,0x61,0x00, //000005e0 f臑...RCカFe.BCa. 1153: 0x00,0xb6,0x66,0xf2,0x60,0xcc,0x61,0x00,0x00,0xd8,0x53,0x43,0x6a,0x04,0x36,0x06, //000005f0 .カf.`フa..リSCj.6. 1154: 0x53,0x43,0x61,0x00,0x00,0xa2,0x66,0xf2,0x60,0xb8,0x47,0xfa,0xfd,0xf8,0xe5,0x43, //00000600 SCa..「f.`クG...蕕 1155: 0x20,0x73,0x30,0x00,0x24,0x28,0x00,0x08,0x4a,0x05,0x67,0x3e,0x43,0xfa,0x01,0xd2, //00000610 s0.$(..J.g>C..メ 1156: 0x72,0x0e,0x43,0xe9,0x00,0x10,0x4a,0x29,0xff,0xf8,0x67,0x12,0x20,0x11,0x08,0x00, //00000620 r.C...J)..g. ... 1157: 0x00,0x18,0x66,0x0a,0x42,0x11,0xb4,0x80,0x67,0x04,0x12,0xbc,0x00,0x02,0x51,0xc9, //00000630 ..f.B.エ.g..シ..Qノ 1158: 0xff,0xe2,0x2f,0x02,0x74,0x02,0x26,0x3c,0x00,0x00,0x04,0x00,0x43,0xfa,0x01,0x9a, //00000640 ../.t.&<....C..啾 1159: 0x61,0x00,0x00,0xec,0x24,0x1f,0x4a,0x00,0x66,0x26,0xc4,0xbc,0x00,0xff,0xff,0xff, //00000650 ...$.J.f&トシ.... 1160: 0x26,0x3c,0x00,0x00,0x04,0x00,0x43,0xfa,0xfd,0x98,0xd3,0xfc,0x00,0x00,0x04,0x00, //00000660 &<....C..侖..... 1161: 0x61,0x00,0x00,0xd4,0x4a,0x00,0x66,0x08,0x0c,0x11,0x00,0x60,0x66,0x22,0x4e,0xd1, //00000670 a..ヤJ.f....`f"Nム 1162: 0x45,0xfa,0x00,0xea,0x43,0xfa,0x00,0xdc,0x61,0x00,0x00,0xae,0x22,0x4a,0x61,0x00, //00000680 E..鵑..ワa..ョ"Ja. 1163: 0x00,0xa8,0x60,0xfe,0x45,0xfa,0x00,0xf5,0x60,0xea,0x45,0xfa,0x01,0x0c,0x60,0xe4, //00000690 .ィ`.E...`鵙...`胼 1164: 0x45,0xfa,0x01,0x23,0x60,0xde,0x41,0xfa,0xfd,0x5c,0x20,0x03,0xe5,0x40,0x20,0x70, //000006a0 ..#`゙A..\ .蕁 p 1165: 0x00,0x00,0x10,0x28,0x00,0x08,0xb0,0x05,0x67,0x02,0x4a,0x00,0x4e,0x75,0x42,0x80, //000006b0 ...(..ー.g.J.NuB. 1166: 0x4e,0x4f,0xe0,0x48,0xb0,0x3c,0x00,0x4e,0x66,0x02,0x70,0x1d,0x4e,0x75,0x61,0x5a, //000006c0 NO潯ー<.Nf.p.NuaZ 1167: 0x43,0xfa,0xfd,0x32,0x30,0x03,0xe5,0x40,0x43,0xf1,0x00,0x00,0x22,0x51,0x72,0x24, //000006d0 C..20.蕁C..."Qr$ 1168: 0x74,0x09,0xd4,0x43,0x70,0x23,0x4e,0x4f,0x72,0x28,0x61,0x46,0x24,0x09,0x41,0xfa, //000006e0 t.ヤCp#NOr(aF$.A. 1169: 0x00,0xf8,0x94,0x88,0xe8,0x8a,0x84,0xfc,0x00,0x0a,0xd4,0xbc,0x00,0x30,0x00,0x30, //000006f0 ..蝿闃....ヤシ.0.0 1170: 0x72,0x20,0xb4,0x7c,0x00,0x30,0x67,0x02,0x32,0x02,0x61,0x26,0x48,0x42,0x32,0x02, //00000700 r エ|.0g.2.a&HB2. 1171: 0x61,0x20,0x72,0x29,0x61,0x1c,0x72,0x20,0x61,0x18,0x74,0x07,0x42,0x41,0x12,0x19, //00000710 a r)a.r a.t.BA.. 1172: 0x61,0x10,0x51,0xca,0xff,0xf8,0x72,0x03,0x60,0x02,0x72,0x0b,0x70,0x22,0x4e,0x4f, //00000720 a.Qハ..r.`.r.p"NO 1173: 0x4e,0x75,0x70,0x20,0x4e,0x4f,0x4e,0x75,0x70,0x21,0x4e,0x4f,0x4e,0x75,0x48,0xe7, //00000730 Nup NONup!NONuH轎 1174: 0x7c,0x00,0x72,0x22,0x60,0x06,0x48,0xe7,0x7c,0x00,0x72,0x21,0x2a,0x3a,0x00,0x96, //00000740 .r"`.H轎.r!*:.籾 1175: 0xe0,0x8b,0xea,0xab,0xe5,0x8a,0xea,0xaa,0x70,0xf5,0x4e,0x4f,0x4c,0xdf,0x00,0x3e, //00000750 苦ォ蜉.ェp.NOL゚.> 1176: 0x4e,0x75,0x1a,0x1b,0x5b,0x31,0x36,0x3b,0x33,0x33,0x48,0x00,0x20,0x20,0x82,0x72, //00000760 Nu..[16;33H. S 1177: 0x82,0x62,0x82,0x72,0x82,0x68,0x83,0x66,0x83,0x42,0x83,0x58,0x83,0x4e,0x82,0xaa, //00000770 CSIディスクが 1178: 0x93,0xc7,0x82,0xdf,0x82,0xdc,0x82,0xb9,0x82,0xf1,0x00,0x20,0x20,0x8a,0xc7,0x97, //00000780 読めません. 管理 1179: 0x9d,0x83,0x75,0x83,0x8d,0x83,0x62,0x83,0x4e,0x82,0xaa,0x89,0xf3,0x82,0xea,0x82, //00000790 ブロックが壊れて 1180: 0xc4,0x82,0xa2,0x82,0xdc,0x82,0xb7,0x00,0x20,0x20,0x8b,0x4e,0x93,0xae,0x89,0xc2, //000007a0 います. 起動可 1181: 0x94,0x5c,0x82,0xc8,0x97,0xcc,0x88,0xe6,0x82,0xaa,0x82,0xa0,0x82,0xe8,0x82,0xdc, //000007b0 能な領域がありま 1182: 0x82,0xb9,0x82,0xf1,0x00,0x82,0x68,0x82,0x6f,0x82,0x6b,0x83,0x75,0x83,0x8d,0x83, //000007c0 せん.IPLブロッ 1183: 0x62,0x83,0x4e,0x82,0xcc,0x93,0xe0,0x97,0x65,0x82,0xaa,0x88,0xd9,0x8f,0xed,0x82, //000007d0 クの内容が異常で 1184: 0xc5,0x82,0xb7,0x00,0x00,0x00,0x00,0x00, //000007e0 す..... 1185: }; 1186: */ 1187: // perl misc/itob.pl xeij/SPC.java SPC_DISK_IPL 1188: 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); 1189: 1190: //---------------------------------------------------------------------------------------- 1191: //SCSIデバイスドライバ 1192: // ROMのデバイスドライバが古いとき置き換えて使用する 1193: /* 1194: public static final int[] SPC_DEVICE_DRIVER = { 1195: // 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)" 1196: 0xff,0xff,0xff,0xff,0x40,0x00,0x00,0x00,0x00,0x6e,0x00,0x00,0x00,0x80,0x01,0x53, //00000c00 ....@....n.....S 1197: 0x43,0x48,0x44,0x49,0x53,0x4b,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x46,0x00,0x00, //00000c10 CHDISK.......F.. 1198: 0x03,0x46,0x00,0x00,0x0d,0x0c,0x00,0x00,0x00,0xf8,0x00,0x00,0x07,0x9e,0x00,0x00, //00000c20 .F.............. 1199: 0x03,0xb0,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0xb8,0x00,0x00,0x08,0x14,0x00,0x00, //00000c30 .ー...ク...ク...... 1200: 0x08,0x06,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0xb8,0x00,0x00,0x01,0x2c,0x00,0x00, //00000c40 .....ク...ク...,.. 1201: 0x00,0x01,0x70,0x02,0x70,0x07,0x70,0x0c,0x70,0x08,0x00,0x01,0x70,0x0d,0x70,0x0c, //00000c50 ..p.p.p.p...p.p. 1202: 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. 1203: 0x00,0x02,0x4d,0xfa,0x0d,0xc8,0x2d,0x4d,0x00,0x00,0x4c,0xdf,0x40,0x00,0x4e,0x75, //00000c70 ..M..ネ-M..L゚@.Nu 1204: 0x48,0xe7,0x7f,0xfe,0x4d,0xfa,0x0d,0xb6,0x2a,0x6e,0x00,0x00,0x70,0x00,0x10,0x2d, //00000c80 H...M..カ*n..p..- 1205: 0x00,0x02,0x0c,0x00,0x00,0x0c,0x62,0x1a,0x22,0x6d,0x00,0x0e,0x41,0xfa,0xff,0x7c, //00000c90 ......b."m..A..| 1206: 0xd0,0x40,0xd0,0x40,0xd1,0xc0,0x20,0x50,0x20,0x08,0x41,0xfa,0xff,0x54,0xd1,0xc0, //00000ca0 ミ@ミ@ムタ P .A..Tムタ 1207: 0x4e,0xd0,0x30,0x3c,0x70,0x0c,0x60,0x02,0x42,0x40,0x32,0x00,0x1b,0x41,0x00,0x03, //00000cb0 Nミ0<p.`.B@2..A.. 1208: 0xe0,0x49,0x1b,0x41,0x00,0x04,0x4a,0x40,0x67,0x12,0x4a,0x6e,0x05,0xac,0x66,0x06, //00000cc0 潛.A..J@g.Jn.ャf. 1209: 0x4a,0x6e,0x05,0xae,0x67,0x06,0x3d,0x7c,0xff,0xff,0x05,0xb2,0x4c,0xdf,0x7f,0xfe, //00000cd0 Jn.ョg.=|...イL゚.. 1210: 0x4e,0x75,0x4a,0xae,0x05,0xca,0x67,0xca,0x22,0x6e,0x05,0xca,0x70,0x80,0x22,0x3c, //00000ce0 NuJョ.ハgハ"n.ハp."< 1211: 0x00,0x00,0x01,0xf5,0x4e,0x4f,0x60,0xba,0x20,0x6d,0x00,0x0e,0x20,0x2d,0x00,0x12, //00000cf0 ....NO`コ m.. -.. 1212: 0x0c,0x80,0x00,0x00,0x00,0x08,0x67,0x14,0x0c,0x80,0x00,0x00,0x00,0x04,0x66,0xa8, //00000d00 ......g.......fィ 1213: 0x30,0xee,0x05,0xc4,0x20,0x2e,0x05,0xa8,0x30,0x80,0x60,0x9c,0x30,0xee,0x05,0xc4, //00000d10 0..ト ..ィ0.`.0..ト 1214: 0x20,0x2e,0x05,0xa8,0x30,0xc0,0x20,0xae,0x05,0xc6,0x60,0x8c,0x20,0x6d,0x00,0x0e, //00000d20 ..ィ0タ ョ.ニ`. m.. 1215: 0x20,0x2d,0x00,0x12,0x0c,0x80,0x00,0x00,0x00,0x02,0x66,0x00,0xff,0x7c,0x3d,0x50, //00000d30 -........f..|=P 1216: 0x05,0xc4,0x60,0x00,0xff,0x74,0x0c,0x2d,0x00,0x17,0x00,0x16,0x64,0x00,0xff,0x64, //00000d40 .ト`..t.-....d..d 1217: 0x53,0x82,0x02,0x82,0x00,0x00,0x00,0x0f,0x2d,0x42,0x05,0xa8,0x05,0x39,0x00,0x00, //00000d50 S.......-B.ィ.9.. 1218: 0x0c,0xec,0x66,0x00,0xff,0x4e,0x61,0x00,0x1a,0xb8,0x2d,0x40,0x05,0xca,0x20,0x3c, //00000d60 ..f..Na..ク-@.ハ < 1219: 0x00,0x00,0x00,0xf5,0x72,0x24,0x28,0x2e,0x05,0xa8,0x4e,0x4f,0xb0,0xbc,0x00,0x00, //00000d70 ....r$(..ィNOーシ.. 1220: 0x00,0x00,0x67,0x64,0xb0,0xbc,0xff,0xff,0xff,0xff,0x67,0x00,0xff,0x56,0xb0,0xbc, //00000d80 ..gdーシ....g..Vーシ 1221: 0x00,0x00,0x00,0x08,0x67,0x50,0xb0,0xbc,0x00,0x00,0x00,0x02,0x66,0x00,0xff,0x44, //00000d90 ....gPーシ....f..D 1222: 0x20,0x3c,0x00,0x00,0x00,0xf5,0x72,0x2c,0x76,0x0e,0x28,0x2e,0x05,0xa8,0x43,0xee, //00000da0 <....r,v.(..ィC. 1223: 0x05,0xd2,0x4e,0x4f,0xb0,0xbc,0x00,0x00,0x00,0x00,0x66,0x00,0xff,0x26,0x43,0xee, //00000db0 .メNOーシ....f..&C. 1224: 0x05,0xd2,0x10,0x11,0x02,0x00,0x00,0x70,0x0c,0x00,0x00,0x70,0x66,0x00,0xff,0x14, //00000dc0 .メ.....p...pf... 1225: 0x10,0x29,0x00,0x02,0x67,0x10,0xb0,0x3c,0x00,0x01,0x67,0x0a,0xb0,0x3c,0x00,0x06, //00000dd0 .)..g.ー<..g.ー<.. 1226: 0x67,0x04,0x60,0x00,0xfe,0xfe,0x60,0x86,0x70,0xf5,0x72,0x2b,0x28,0x2e,0x05,0xa8, //00000de0 g.`...`.p.r+(..ィ 1227: 0x4e,0x4f,0x4a,0x80,0x66,0x00,0xfe,0xec,0x70,0xf5,0x72,0x25,0x28,0x2e,0x05,0xa8, //00000df0 NOJ.f...p.r%(..ィ 1228: 0x43,0xee,0x05,0xd2,0x4e,0x4f,0x4a,0x80,0x66,0x00,0xfe,0xd8,0x43,0xee,0x05,0xd2, //00000e00 C..メNOJ.f..リC..メ 1229: 0x22,0x29,0x00,0x04,0xb2,0xbc,0x00,0x00,0x04,0x00,0x67,0x18,0xb2,0xbc,0x00,0x00, //00000e10 ")..イシ....g.イシ.. 1230: 0x02,0x00,0x67,0x08,0x3d,0x7c,0x00,0x02,0x05,0xa0,0x60,0x0e,0x3d,0x7c,0x00,0x01, //00000e20 ..g.=|....`.=|.. 1231: 0x05,0xa0,0x60,0x06,0x3d,0x7c,0x00,0x00,0x05,0xa0,0xe0,0x89,0xe2,0x89,0x2d,0x41, //00000e30 ..`.=|....煢竕-A 1232: 0x05,0xa4,0x43,0xee,0x05,0xd2,0x2a,0x2e,0x05,0xa4,0x74,0x00,0xe5,0x8a,0xea,0xaa, //00000e40 .、C..メ*..、t.蜉.ェ 1233: 0x76,0x01,0xe5,0x8b,0xea,0xab,0x28,0x2e,0x05,0xa8,0x70,0xf5,0x72,0x21,0x4e,0x4f, //00000e50 v.蜍.ォ(..ィp.r!NO 1234: 0x4a,0x80,0x66,0x00,0xfe,0x7e,0x0c,0x91,0x58,0x36,0x38,0x53,0x66,0x00,0xfe,0x74, //00000e60 J.f..~.噌68Sf..t 1235: 0x0c,0xa9,0x43,0x53,0x49,0x31,0x00,0x04,0x66,0x00,0xfe,0x68,0x1d,0x69,0x00,0x0e, //00000e70 .ゥCSI1..f..h.i.. 1236: 0x05,0xb0,0x3d,0x7c,0x00,0x00,0x05,0xac,0x3d,0x7c,0x00,0x00,0x05,0xae,0x0c,0x29, //00000e80 .ー=|...ャ=|...ョ.) 1237: 0x00,0x01,0x00,0x0f,0x67,0x10,0x0c,0x29,0x00,0x02,0x00,0x0f,0x66,0x0e,0x3d,0x7c, //00000e90 ....g..)....f.=| 1238: 0xff,0xff,0x05,0xae,0x60,0x06,0x3d,0x7c,0xff,0xff,0x05,0xac,0x61,0x00,0x03,0xb6, //00000ea0 ...ョ`.=|...ャa..カ 1239: 0x4a,0x80,0x66,0x00,0xfe,0x2e,0x4a,0x46,0x67,0x00,0xfe,0x28,0x3d,0x7c,0x00,0x00, //00000eb0 J.f...JFg..(=|.. 1240: 0x05,0xb2,0x3d,0x46,0x05,0xb4,0x4a,0xae,0x05,0xca,0x67,0x06,0x41,0xfa,0x30,0x8a, //00000ec0 .イ=F.エJョ.ハg.A.0柿 1241: 0x60,0x04,0x41,0xfa,0x19,0x4c,0x2d,0x48,0x05,0xce,0xd1,0xfc,0x00,0x00,0x10,0x00, //00000ed0 .A..L-H.ホム..... 1242: 0x2b,0x48,0x00,0x0e,0x10,0x2d,0x00,0x16,0xd0,0x06,0x04,0x00,0x00,0x17,0x65,0x02, //00000ee0 +H...-..ミ.....e. 1243: 0x9c,0x00,0x1b,0x46,0x00,0x0d,0x41,0xee,0x05,0x44,0x2b,0x48,0x00,0x12,0x43,0xee, //00000ef0 ...F..A..D+H..C. 1244: 0x04,0x04,0x70,0x0e,0x20,0xc9,0x43,0xe9,0x00,0x14,0x51,0xc8,0xff,0xf8,0x1b,0x7a, //00000f00 ..p. ノC...Qネ...z 1245: 0xfd,0x06,0x00,0x16,0x70,0x0f,0x41,0xee,0x05,0x84,0x10,0xfc,0xff,0xff,0x51,0xc8, //00000f10 ....p.A.......Qネ 1246: 0xff,0xfa,0x24,0x2e,0x05,0xa8,0x05,0xf9,0x00,0x00,0x0c,0xec,0x70,0x00,0x3d,0x40, //00000f20 ..$..ィ......p.=@ 1247: 0x05,0xc4,0x2d,0x40,0x05,0xc6,0x2d,0x40,0x0d,0xd2,0x2d,0x40,0x0d,0xd6,0x61,0x00, //00000f30 .ト-@.ニ-@.メ-@.ヨa. 1248: 0x02,0xa6,0x60,0x00,0xfd,0x74,0x4a,0x6e,0x05,0xac,0x66,0x22,0x4a,0x6e,0x05,0xae, //00000f40 .ヲ`..tJn.ャf"Jn.ョ 1249: 0x66,0x1c,0x72,0x09,0x70,0xf5,0x4e,0x4f,0x02,0x00,0x00,0xc0,0x67,0x06,0x72,0x00, //00000f50 f.r.p.NO...タg.r. 1250: 0x70,0xf5,0x4e,0x4f,0x1b,0x7c,0x00,0x01,0x00,0x0e,0x60,0x00,0xfd,0x4c,0x61,0x00, //00000f60 p.NO.|....`..La. 1251: 0x01,0xea,0x4a,0x80,0x67,0x02,0x60,0x1c,0x70,0x00,0x10,0x2d,0x00,0x01,0x41,0xee, //00000f70 .鵯.g.`.p..-..A. 1252: 0x05,0x84,0x41,0xf0,0x00,0x00,0x4a,0x10,0x66,0x0a,0x1b,0x7c,0x00,0x01,0x00,0x0e, //00000f80 .Б...J.f..|.... 1253: 0x60,0x00,0xfd,0x26,0x70,0x00,0x10,0x2d,0x00,0x01,0x41,0xee,0x05,0x84,0x41,0xf0, //00000f90 `..&p..-..A..Б. 1254: 0x00,0x00,0x10,0xbc,0x00,0x00,0x1b,0x7c,0xff,0xff,0x00,0x0e,0x60,0x00,0xfd,0x0a, //00000fa0 ...シ...|....`... 1255: 0x4a,0x6e,0x05,0xac,0x66,0x40,0x4a,0x6e,0x05,0xae,0x66,0x3a,0x72,0x09,0x70,0xf5, //00000fb0 Jn.ャf@Jn.ョf:r.p. 1256: 0x4e,0x4f,0x02,0x00,0x00,0xc0,0x67,0x06,0x72,0x00,0x70,0xf5,0x4e,0x4f,0x0c,0x2d, //00000fc0 NO...タg.r.p.NO.- 1257: 0x00,0x08,0x00,0x0d,0x64,0x16,0x1b,0x7c,0x00,0x42,0x00,0x0d,0x4a,0x6e,0x05,0xc4, //00000fd0 ....d..|.B..Jn.ト 1258: 0x67,0x06,0x08,0xed,0x00,0x03,0x00,0x0d,0x60,0x00,0xfc,0xce,0x1b,0x7c,0xff,0xff, //00000fe0 g.......`..ホ.|.. 1259: 0x00,0x0d,0x60,0x00,0xfc,0xc4,0x10,0x2d,0x00,0x0d,0x67,0x2c,0xb0,0x3c,0x00,0x01, //00000ff0 ..`..ト.-..g,ー<.. 1260: 0x67,0x62,0xb0,0x3c,0x00,0x02,0x67,0x6e,0xb0,0x3c,0x00,0x03,0x67,0x00,0x00,0x88, //00001000 gbー<..gnー<..g..芦 1261: 0xb0,0x3c,0x00,0x06,0x67,0x70,0xb0,0x3c,0x00,0x07,0x67,0x00,0x00,0x90,0x1b,0x7c, //00001010 <..gpー<..g....| 1262: 0xff,0xff,0x00,0x0d,0x60,0x00,0xfc,0x92,0x61,0x00,0x01,0x30,0x4a,0x80,0x67,0x10, //00001020 ....`..誕..0J.g. 1263: 0x0c,0x40,0x00,0x01,0x67,0x0a,0x0c,0x40,0x70,0x02,0x67,0x1e,0x60,0x00,0xfc,0x7c, //00001030 .@..g..@p.g.`..| 1264: 0x4a,0x6e,0x0d,0xda,0x66,0x0a,0x1b,0x7c,0x00,0x02,0x00,0x0d,0x60,0x00,0x00,0xa2, //00001040 Jn.レf..|....`..「 1265: 0x1b,0x7c,0x00,0x0a,0x00,0x0d,0x60,0x00,0x00,0x98,0x1b,0x7c,0x00,0x04,0x00,0x0d, //00001050 .|....`....|.... 1266: 0x60,0x00,0x00,0x8e,0x4a,0xae,0x05,0xba,0x66,0xbe,0x4a,0xae,0x05,0xb6,0x66,0xb8, //00001060 `..捌ョ.コfセJョ.カfク 1267: 0x61,0x00,0x00,0xa6,0x60,0xe4,0x2d,0x7c,0xff,0xff,0xff,0xff,0x05,0xb6,0x4a,0xae, //00001070 a..ヲ`.-|.....カJョ 1268: 0x05,0xba,0x67,0x56,0x60,0xba,0x2d,0x7c,0xff,0xff,0xff,0xff,0x05,0xba,0x4a,0xae, //00001080 .コgV`コ-|.....コJョ 1269: 0x05,0xb6,0x67,0x46,0x60,0xaa,0x4a,0xae,0x05,0xb6,0x67,0xa4,0x2d,0x7c,0x00,0x00, //00001090 .カgF`ェJョ.カg、-|.. 1270: 0x00,0x00,0x05,0xb6,0x4a,0xae,0x05,0xba,0x67,0x1a,0x60,0x94,0x4a,0xae,0x05,0xba, //000010a0 ...カJョ.コg.`寧ョ.コ 1271: 0x67,0x8e,0x2d,0x7c,0x00,0x00,0x00,0x00,0x05,0xba,0x4a,0xae,0x05,0xb6,0x67,0x04, //000010b0 g.-|.....コJョ.カg. 1272: 0x60,0x00,0xff,0x7e,0x70,0xf5,0x72,0x32,0x28,0x2e,0x05,0xa8,0x76,0x00,0x4e,0x4f, //000010c0 `..~p.r2(..ィv.NO 1273: 0x4a,0x80,0x66,0x00,0xff,0x54,0x60,0x00,0xff,0x68,0x70,0xf5,0x72,0x32,0x28,0x2e, //000010d0 J.f..T`..hp.r2(. 1274: 0x05,0xa8,0x76,0x01,0x4e,0x4f,0x4a,0x80,0x66,0x00,0xff,0x3e,0x60,0x00,0xff,0x52, //000010e0 .ィv.NOJ.f..>`..R 1275: 0x4a,0x6e,0x05,0xc4,0x67,0x06,0x08,0xed,0x00,0x03,0x00,0x0d,0x4a,0xae,0x05,0xb6, //000010f0 Jn.トg.......Jョ.カ 1276: 0x67,0x06,0x08,0xed,0x00,0x04,0x00,0x0d,0x4a,0xae,0x05,0xba,0x67,0x06,0x08,0xed, //00001100 g.......Jョ.コg... 1277: 0x00,0x06,0x00,0x0d,0x60,0x00,0xfb,0xa2,0x4a,0x6e,0x05,0xac,0x66,0x08,0x4a,0x6e, //00001110 ....`..「Jn.ャf.Jn 1278: 0x05,0xae,0x66,0x28,0x4e,0x75,0x70,0x02,0x4e,0x4f,0x08,0x00,0x00,0x03,0x66,0x0e, //00001120 .ョf(Nup.NO....f. 1279: 0x70,0xf5,0x72,0x30,0x28,0x2e,0x05,0xa8,0x76,0x00,0x4e,0x4f,0x4e,0x75,0x70,0xf5, //00001130 p.r0(..ィv.NONup. 1280: 0x72,0x30,0x28,0x2e,0x05,0xa8,0x76,0x01,0x4e,0x4f,0x4e,0x75,0x70,0xf5,0x72,0x2f, //00001140 r0(..ィv.NONup.r/ 1281: 0x28,0x2e,0x05,0xa8,0x76,0x02,0x4e,0x4f,0x4e,0x75,0x48,0xe7,0x70,0xc0,0x70,0x7f, //00001150 (..ィv.NONuH輛タp. 1282: 0x4e,0x4f,0xb2,0xae,0x0d,0xd6,0x66,0x12,0x24,0x2e,0x0d,0xd2,0x26,0x00,0x96,0x82, //00001160 NOイョ.ヨf.$..メ&.魔 1283: 0x0c,0x83,0x00,0x00,0x00,0x64,0x65,0x00,0x00,0xe2,0x2d,0x40,0x0d,0xd2,0x2d,0x41, //00001170 .....de...-@.メ-A 1284: 0x0d,0xd6,0x72,0x09,0x70,0xf5,0x4e,0x4f,0x02,0x00,0x00,0xc0,0x67,0x06,0x72,0x00, //00001180 .ヨr.p.NO...タg.r. 1285: 0x70,0xf5,0x4e,0x4f,0x20,0x3c,0x00,0x00,0x00,0xf5,0x72,0x24,0x28,0x2e,0x05,0xa8, //00001190 p.NO <....r$(..ィ 1286: 0x4e,0x4f,0x4a,0x80,0x67,0x00,0x00,0x92,0xb0,0xbc,0x00,0x00,0x00,0x08,0x67,0xd2, //000011a0 NOJ.g..腸シ....gメ 1287: 0xb0,0xbc,0x00,0x00,0x00,0x02,0x66,0x00,0x00,0x8a,0x61,0x00,0x07,0x16,0x4a,0x40, //000011b0 ーシ....f..蛎...J@ 1288: 0x67,0xc0,0xb0,0x7c,0x00,0x01,0x66,0x70,0x70,0x0f,0x41,0xee,0x05,0x84,0x10,0xfc, //000011c0 gター|..fpp.A..... 1289: 0xff,0xff,0x51,0xc8,0xff,0xfa,0x61,0x00,0x01,0x26,0x4a,0x80,0x67,0x0c,0x3d,0x7c, //000011d0 ..Qネ..a..&J.g.=| 1290: 0xff,0xff,0x05,0xb2,0x60,0x5c,0x48,0xe7,0x70,0xc0,0x28,0x2e,0x05,0xa8,0x76,0x04, //000011e0 ...イ`\H輛タ(..ィv. 1291: 0x43,0xee,0x05,0xd2,0x74,0x3f,0x72,0x29,0x70,0xf5,0x4e,0x4f,0x4a,0x80,0x67,0x20, //000011f0 C..メt?r)p.NOJ.g 1292: 0x0c,0x80,0x00,0x00,0x00,0x08,0x67,0xe2,0x0c,0x80,0x00,0x00,0x00,0x02,0x66,0x32, //00001200 ......g.......f2 1293: 0x61,0x00,0x06,0xc0,0x4a,0x40,0x67,0xd2,0xb0,0x7c,0x00,0x01,0x66,0x1a,0x60,0xa8, //00001210 a..タJ@gメー|..f.`ィ 1294: 0x08,0x29,0x00,0x07,0x00,0x02,0x67,0x08,0x3d,0x7c,0xff,0xff,0x0d,0xda,0x60,0x06, //00001220 .)....g.=|...レ`. 1295: 0x3d,0x7c,0x00,0x00,0x0d,0xda,0x70,0x01,0x2d,0x40,0x0d,0xdc,0x4c,0xdf,0x03,0x0e, //00001230 =|...レp.-@.ワL゚.. 1296: 0x4e,0x75,0x2d,0x7c,0x00,0x00,0x00,0x00,0x0d,0xd2,0x2d,0x7c,0x00,0x00,0x00,0x00, //00001240 Nu-|.....メ-|.... 1297: 0x0d,0xd6,0x70,0xff,0x4c,0xdf,0x03,0x0e,0x4e,0x75,0x20,0x2e,0x0d,0xdc,0x4c,0xdf, //00001250 .ヨp.L゚..Nu ..ワL゚ 1298: 0x03,0x0e,0x4e,0x75,0x43,0xee,0x05,0xd2,0x2a,0x2e,0x05,0xa4,0x74,0x02,0xe5,0x8a, //00001260 ..NuC..メ*..、t.蜉 1299: 0xea,0xaa,0x76,0x01,0xe5,0x8b,0xea,0xab,0x28,0x2e,0x05,0xa8,0x70,0xf5,0x72,0x21, //00001270 .ェv.蜍.ォ(..ィp.r! 1300: 0x4e,0x4f,0x4a,0x80,0x66,0x76,0x0c,0x91,0x58,0x36,0x38,0x4b,0x66,0x6c,0x26,0x49, //00001280 NOJ.fv.噌68Kfl&I 1301: 0x45,0xee,0x04,0x04,0x7c,0x00,0x7e,0x0e,0x47,0xeb,0x00,0x10,0x4a,0x13,0x67,0x52, //00001290 E...|.~.G...J.gR 1302: 0x0c,0x93,0x48,0x75,0x6d,0x61,0x66,0x4a,0x0c,0xab,0x6e,0x36,0x38,0x6b,0x00,0x04, //000012a0 .滴umafJ.ォn68k.. 1303: 0x66,0x40,0x10,0x2b,0x00,0x08,0x08,0x00,0x00,0x00,0x66,0x36,0x24,0x2b,0x00,0x08, //000012b0 f@.+......f6$+.. 1304: 0x43,0xee,0x00,0x04,0x2a,0x2e,0x05,0xa4,0xe5,0x8a,0xea,0xaa,0x76,0x01,0xe5,0x8b, //000012c0 C...*..、蜉.ェv.蜍 1305: 0xea,0xab,0x28,0x2e,0x05,0xa8,0x70,0xf5,0x72,0x21,0x4e,0x4f,0x4a,0x80,0x66,0x1c, //000012d0 .ォ(..ィp.r!NOJ.f. 1306: 0x43,0xe9,0x00,0x12,0x4a,0x51,0x67,0x0a,0x72,0x04,0x24,0xd9,0x51,0xc9,0xff,0xfc, //000012e0 C...JQg.r.$ルQノ.. 1307: 0x52,0x46,0x51,0xcf,0xff,0xa4,0x70,0x00,0x4e,0x75,0x70,0xff,0x4e,0x75,0x43,0xee, //000012f0 RFQマ.、p.Nup.NuC. 1308: 0x05,0xd2,0x2a,0x2e,0x05,0xa4,0x74,0x02,0xe5,0x8a,0xea,0xaa,0x76,0x01,0xe5,0x8b, //00001300 .メ*..、t.蜉.ェv.蜍 1309: 0xea,0xab,0x28,0x2e,0x05,0xa8,0x70,0xf5,0x72,0x21,0x4e,0x4f,0x4a,0x80,0x66,0xdc, //00001310 .ォ(..ィp.r!NOJ.fワ 1310: 0x0c,0x91,0x58,0x36,0x38,0x4b,0x66,0xd2,0x26,0x49,0x45,0xee,0x04,0x04,0x7c,0x00, //00001320 .噌68Kfメ&IE...|. 1311: 0x7e,0x0e,0x47,0xeb,0x00,0x10,0x4a,0x13,0x67,0x54,0x0c,0x93,0x48,0x75,0x6d,0x61, //00001330 ~.G...J.gT.滴uma 1312: 0x66,0x4c,0x0c,0xab,0x6e,0x36,0x38,0x6b,0x00,0x04,0x66,0x42,0x10,0x2b,0x00,0x08, //00001340 fL.ォn68k..fB.+.. 1313: 0x08,0x00,0x00,0x00,0x66,0x38,0x24,0x2b,0x00,0x08,0x43,0xee,0x00,0x04,0x2a,0x2e, //00001350 ....f8$+..C...*. 1314: 0x05,0xa4,0xea,0xaa,0xe5,0x8a,0x76,0x01,0xe5,0x8b,0xea,0xab,0x28,0x2e,0x05,0xa8, //00001360 .、.ェ蜉v.蜍.ォ(..ィ 1315: 0x70,0xf5,0x72,0x21,0x4e,0x4f,0x4a,0x80,0x66,0x82,0x43,0xe9,0x00,0x12,0x72,0x04, //00001370 p.r!NOJ.f.C...r. 1316: 0x20,0x19,0xb0,0x9a,0x66,0x00,0xff,0x74,0x51,0xc9,0xff,0xf6,0x52,0x46,0x51,0xcf, //00001380 .ー喃..tQノ..RFQマ 1317: 0xff,0xa2,0xbc,0x6e,0x05,0xb4,0x66,0x00,0xff,0x62,0x70,0x00,0x4e,0x75,0x3d,0x7c, //00001390 .「シn.エf..bp.Nu=| 1318: 0x00,0x08,0x05,0xc2,0x3d,0x7c,0x00,0x00,0x05,0xc0,0x4a,0x6e,0x05,0xb2,0x67,0x44, //000013a0 ...ツ=|...タJn.イgD 1319: 0x61,0x00,0xff,0x4c,0x4a,0x80,0x67,0x2c,0x0c,0x80,0xff,0xff,0xff,0xff,0x67,0x2c, //000013b0 a..LJ.g,......g, 1320: 0x0c,0x80,0x00,0x00,0x00,0x08,0x67,0xe8,0x0c,0x80,0x00,0x00,0x00,0x02,0x66,0x00, //000013c0 ......g.......f. 1321: 0xf8,0xe2,0x61,0x00,0x04,0xfe,0x4a,0x40,0x67,0x0a,0x0c,0x40,0x00,0x01,0x67,0xd0, //000013d0 .秣...J@g..@..gミ 1322: 0x60,0x00,0xf8,0xd8,0x3d,0x7c,0x00,0x00,0x05,0xb2,0x67,0x08,0x30,0x3c,0x70,0x07, //000013e0 `..リ=|...イg.0<p. 1323: 0x60,0x00,0xf8,0xc8,0x4a,0x2e,0x05,0xb0,0x66,0x06,0x72,0x21,0x60,0x00,0x00,0x8a, //000013f0 `..ネJ..ーf.r!`..較 1324: 0x72,0x26,0x60,0x00,0x01,0xec,0x3d,0x7c,0x00,0x08,0x05,0xc2,0x3d,0x7c,0xff,0xff, //00001400 &`...=|...ツ=|.. 1325: 0x05,0xc0,0x60,0x0c,0x3d,0x7c,0x00,0x08,0x05,0xc2,0x3d,0x7c,0x00,0x00,0x05,0xc0, //00001410 .タ`.=|...ツ=|...タ 1326: 0x4a,0x6e,0x05,0xc4,0x67,0x08,0x30,0x3c,0x70,0x0d,0x60,0x00,0xf8,0x8e,0x4a,0x6e, //00001420 Jn.トg.0<p.`..捌n 1327: 0x05,0xb2,0x67,0x44,0x61,0x00,0xfe,0xc8,0x4a,0x80,0x67,0x2c,0x0c,0x80,0xff,0xff, //00001430 .イgDa..ネJ.g,.... 1328: 0xff,0xff,0x67,0x2c,0x0c,0x80,0x00,0x00,0x00,0x08,0x67,0xe8,0x0c,0x80,0x00,0x00, //00001440 ..g,......g..... 1329: 0x00,0x02,0x66,0x00,0xf8,0x5e,0x61,0x00,0x04,0x7a,0x4a,0x40,0x67,0x0a,0xb0,0x7c, //00001450 ..f..^a..zJ@g.ー| 1330: 0x00,0x01,0x67,0xd0,0x60,0x00,0xf8,0x54,0x3d,0x7c,0x00,0x00,0x05,0xb2,0x67,0x08, //00001460 ..gミ`..T=|...イg. 1331: 0x30,0x3c,0x70,0x07,0x60,0x00,0xf8,0x44,0x4a,0x2e,0x05,0xb0,0x66,0x04,0x72,0x22, //00001470 0<p.`..DJ..ーf.r" 1332: 0x60,0x06,0x72,0x27,0x60,0x00,0x01,0x6a,0x2d,0x6d,0x00,0x0e,0x05,0x94,0x2d,0x6d, //00001480 `.r'`..j-m....-m 1333: 0x00,0x12,0x05,0x9c,0x70,0x00,0x10,0x2d,0x00,0x01,0xe5,0x88,0x41,0xee,0x05,0x44, //00001490 ...徘..-..蛻A..D 1334: 0xd1,0xc0,0x20,0x50,0x20,0x2d,0x00,0x16,0xd0,0xa8,0x00,0x10,0x2d,0x40,0x05,0x98, //000014a0 ムタ P -..ミィ..-@.. 1335: 0x3c,0x2e,0x05,0xa0,0x24,0x2e,0x05,0x98,0xed,0xaa,0x2e,0x2e,0x05,0x9c,0xed,0xaf, //000014b0 <...$..倆ェ...懦ッ 1336: 0x22,0x6e,0x05,0x94,0x26,0x07,0xb6,0xbc,0x00,0x00,0x01,0x00,0x63,0x06,0x26,0x3c, //000014c0 "n..&.カシ....c.&< 1337: 0x00,0x00,0x01,0x00,0x70,0xf5,0x28,0x2e,0x05,0xa8,0x2a,0x2e,0x05,0xa4,0x4e,0x4f, //000014d0 ....p.(..ィ*..、NO 1338: 0x4a,0x80,0x67,0x00,0x00,0xd2,0xb0,0xbc,0xff,0xff,0xff,0xff,0x67,0x00,0x00,0xea, //000014e0 J.g..メーシ....g... 1339: 0xb0,0xbc,0xff,0xff,0xff,0xfe,0x67,0x00,0x00,0xaa,0xb0,0xbc,0x00,0x00,0x00,0x08, //000014f0 ーシ....g..ェーシ.... 1340: 0x67,0x86,0xb0,0xbc,0x00,0x00,0x00,0x02,0x66,0x00,0xf7,0xa8,0x61,0x00,0x03,0xc4, //00001500 g.ーシ....f..ィa..ト 1341: 0x4a,0x40,0x67,0x00,0xff,0x74,0xb0,0x7c,0x00,0x01,0x67,0x00,0xff,0x6c,0x0c,0x40, //00001510 J@g..tー|..g..l.@ 1342: 0x70,0x07,0x66,0x00,0xf7,0x96,0x0c,0x81,0x00,0x00,0x00,0x22,0x66,0x00,0xf7,0x8c, //00001520 p.f........"f..靴 1343: 0x43,0xee,0x05,0xd2,0x08,0x11,0x00,0x07,0x67,0x00,0xf7,0x80,0x43,0xe9,0x00,0x03, //00001530 ..メ....g...C... 1344: 0x10,0x19,0xe1,0x88,0x10,0x19,0xe1,0x88,0x10,0x19,0xe1,0x88,0x10,0x19,0x2d,0x40, //00001540 ..瘉..瘉..瘉..-@ 1345: 0x0d,0xe0,0x61,0x00,0x03,0x5a,0x4a,0x80,0x67,0x00,0xff,0x2e,0xb0,0xbc,0xff,0xff, //00001550 .濛..ZJ.g...ーシ.. 1346: 0xff,0xff,0x67,0x74,0xb0,0xbc,0xff,0xff,0xff,0xfe,0x67,0x36,0xb0,0xbc,0x00,0x00, //00001560 ..gtーシ....g6ーシ.. 1347: 0x00,0x08,0x67,0xde,0xb0,0xbc,0x00,0x00,0x00,0x02,0x66,0x00,0xf7,0x36,0x61,0x00, //00001570 ..g゙ーシ....f..6a. 1348: 0x03,0x52,0x4a,0x40,0x67,0x00,0xff,0x02,0xb0,0x7c,0x00,0x01,0x67,0xc4,0x67,0x00, //00001580 .RJ@g...ー|..gトg. 1349: 0xf7,0x2a,0x52,0xae,0x05,0xc6,0x53,0x6e,0x05,0xc2,0x66,0x00,0xfe,0xec,0x60,0x00, //00001590 .*Rョ.ニSn.ツf...`. 1350: 0xf7,0x1a,0x52,0xae,0x05,0xc6,0x53,0x6e,0x05,0xc2,0x66,0x00,0xfe,0xdc,0x30,0x3c, //000015a0 ..Rョ.ニSn.ツf..ワ0< 1351: 0x70,0x0c,0x60,0x00,0xf7,0x06,0x20,0x03,0xe1,0x88,0xeb,0xa8,0xd3,0xc0,0xd4,0x83, //000015b0 p.`... .瘉.ィモタヤ. 1352: 0x9e,0x83,0x62,0x00,0xff,0x00,0x4a,0x6e,0x05,0xc0,0x66,0x00,0x01,0x68,0x3d,0x7c, //000015c0 档b...Jn.タf..h=| 1353: 0x00,0x00,0x05,0xbe,0x60,0x00,0xf6,0xe2,0x4a,0x6e,0x05,0xbe,0x66,0x00,0xf6,0xd4, //000015d0 ...セ`..祀n.セf..ヤ 1354: 0x72,0x00,0x70,0xf5,0x4e,0x4f,0x3d,0x7c,0xff,0xff,0x05,0xbe,0x60,0x00,0xfe,0x9a, //000015e0 r.p.NO=|...セ`... 1355: 0x2d,0x6d,0x00,0x0e,0x05,0x94,0x2d,0x6d,0x00,0x12,0x05,0x9c,0x70,0x00,0x10,0x2d, //000015f0 -m....-m...徘..- 1356: 0x00,0x01,0xe5,0x88,0x41,0xee,0x05,0x44,0xd1,0xc0,0x20,0x50,0x20,0x2d,0x00,0x16, //00001600 ..蛻A..Dムタ P -.. 1357: 0xd0,0xa8,0x00,0x10,0x2d,0x40,0x05,0x98,0x3c,0x2e,0x05,0xa0,0x24,0x2e,0x05,0x98, //00001610 ミィ..-@..<...$..倆 1358: 0xed,0xaa,0x26,0x2e,0x05,0x9c,0xed,0xab,0x22,0x6e,0x05,0x94,0x70,0xf5,0x28,0x2e, //00001620 ェ&..懦ォ"n.廃.(. 1359: 0x05,0xa8,0x2a,0x2e,0x05,0xa4,0x4e,0x4f,0x4a,0x80,0x67,0x00,0x00,0xd0,0xb0,0xbc, //00001630 .ィ*..、NOJ.g..ミーシ 1360: 0xff,0xff,0xff,0xff,0x67,0x00,0x00,0xd6,0xb0,0xbc,0xff,0xff,0xff,0xfe,0x67,0x00, //00001640 ....g..ヨーシ....g. 1361: 0x00,0xa8,0xb0,0xbc,0x00,0x00,0x00,0x08,0x67,0x96,0xb0,0xbc,0x00,0x00,0x00,0x02, //00001650 .ィーシ....g眠シ.... 1362: 0x66,0x00,0xf6,0x50,0x61,0x00,0x02,0x6c,0x4a,0x40,0x67,0x84,0xb0,0x7c,0x00,0x01, //00001660 f..Pa..lJ@g┣|.. 1363: 0x67,0x00,0xff,0x7e,0x0c,0x40,0x70,0x07,0x66,0x00,0xf6,0x40,0x0c,0x81,0x00,0x00, //00001670 g..~.@p.f..@.... 1364: 0x00,0x27,0x66,0x00,0xf6,0x36,0x43,0xee,0x05,0xd2,0x08,0x11,0x00,0x07,0x67,0x00, //00001680 .'f..6C..メ....g. 1365: 0xf6,0x2a,0x43,0xe9,0x00,0x03,0x10,0x19,0xe1,0x88,0x10,0x19,0xe1,0x88,0x10,0x19, //00001690 .*C.....瘉..瘉.. 1366: 0xe1,0x88,0x10,0x19,0x2d,0x40,0x0d,0xe0,0x61,0x00,0x02,0x04,0x4a,0x80,0x67,0x00, //000016a0 瘉..-@.濛...J.g. 1367: 0xff,0x40,0xb0,0xbc,0xff,0xff,0xff,0xff,0x67,0x62,0xb0,0xbc,0xff,0xff,0xff,0xfe, //000016b0 .@ーシ....gbーシ.... 1368: 0x67,0x36,0xb0,0xbc,0x00,0x00,0x00,0x08,0x67,0xde,0xb0,0xbc,0x00,0x00,0x00,0x02, //000016c0 g6ーシ....g゙ーシ.... 1369: 0x66,0x00,0xf5,0xe0,0x61,0x00,0x01,0xfc,0x4a,0x40,0x67,0x00,0xff,0x14,0xb0,0x7c, //000016d0 f..濛...J@g...ー| 1370: 0x00,0x01,0x67,0xc4,0x60,0x00,0xf5,0xd4,0x52,0xae,0x05,0xc6,0x53,0x6e,0x05,0xc2, //000016e0 ..gト`..ヤRョ.ニSn.ツ 1371: 0x66,0x00,0xfe,0xfe,0x60,0x00,0xf5,0xc4,0x52,0xae,0x05,0xc6,0x53,0x6e,0x05,0xc2, //000016f0 f...`..トRョ.ニSn.ツ 1372: 0x66,0x00,0xfd,0x86,0x30,0x3c,0x70,0x0c,0x60,0x00,0xf5,0xb0,0x3d,0x7c,0x00,0x00, //00001700 f...0<p.`..ー=|.. 1373: 0x05,0xbe,0x4a,0x6e,0x05,0xc0,0x66,0x1c,0x60,0x00,0xf5,0x9e,0x4a,0x6e,0x05,0xbe, //00001710 .セJn.タf.`..曷n.セ 1374: 0x66,0x00,0xf5,0x90,0x72,0x00,0x70,0xf5,0x4e,0x4f,0x3d,0x7c,0xff,0xff,0x05,0xbe, //00001720 f..甚.p.NO=|...セ 1375: 0x60,0x00,0xfe,0xbe,0x3d,0x7c,0x00,0x08,0x05,0xc2,0x2d,0x6d,0x00,0x0e,0x05,0x94, //00001730 `..セ=|...ツ-m.... 1376: 0x2d,0x6d,0x00,0x12,0x05,0x9c,0x70,0x00,0x10,0x2d,0x00,0x01,0xe5,0x88,0x41,0xee, //00001740 -m...徘..-..蛻A. 1377: 0x05,0x44,0xd1,0xc0,0x20,0x50,0x20,0x2d,0x00,0x16,0xd0,0xa8,0x00,0x10,0x2d,0x40, //00001750 .Dムタ P -..ミィ..-@ 1378: 0x05,0x98,0x3a,0x2e,0x05,0xa0,0x24,0x2e,0x05,0x98,0xeb,0xaa,0x2e,0x2e,0x05,0x9c, //00001760 ..:...$..俯ェ...罹 1379: 0xeb,0xaf,0x7c,0x04,0xeb,0xae,0x28,0x2e,0x05,0xa8,0x2a,0x2e,0x05,0xa4,0x24,0x6e, //00001770 ッ|..ョ(..ィ*..、$n 1380: 0x05,0x94,0xbe,0x86,0x64,0x04,0x26,0x07,0x60,0x02,0x26,0x06,0x22,0x6e,0x05,0xce, //00001780 .叛.d.&.`.&."n.ホ 1381: 0x72,0x21,0x70,0xf5,0x4e,0x4f,0x4a,0x80,0x67,0x00,0x00,0xc8,0xb0,0xbc,0xff,0xff, //00001790 r!p.NOJ.g..ネーシ.. 1382: 0xff,0xff,0x67,0x00,0x00,0xe4,0xb0,0xbc,0xff,0xff,0xff,0xfe,0x67,0x00,0x00,0xa0, //000017a0 ..g..莢シ....g... 1383: 0xb0,0xbc,0x00,0x00,0x00,0x08,0x67,0x00,0xff,0x7c,0xb0,0xbc,0x00,0x00,0x00,0x02, //000017b0 ーシ....g..|ーシ.... 1384: 0x66,0x00,0xf4,0xf0,0x61,0x00,0x01,0x0c,0x4a,0x40,0x67,0x00,0xff,0x68,0xb0,0x7c, //000017c0 f...a...J@g..hー| 1385: 0x00,0x01,0x67,0x00,0xff,0x60,0x0c,0x40,0x70,0x07,0x66,0x00,0xf4,0xde,0x43,0xee, //000017d0 ..g..`.@p.f..゙C. 1386: 0x05,0xd2,0x08,0x11,0x00,0x07,0x67,0x00,0xf4,0xd2,0x43,0xe9,0x00,0x03,0x10,0x19, //000017e0 .メ....g..メC..... 1387: 0xe1,0x88,0x10,0x19,0xe1,0x88,0x10,0x19,0xe1,0x88,0x10,0x19,0x2d,0x40,0x0d,0xe0, //000017f0 瘉..瘉..瘉..-@.濛 1388: 0x61,0x00,0x00,0xac,0x4a,0x80,0x67,0x00,0xfc,0x70,0xb0,0xbc,0xff,0xff,0xff,0xff, //00001800 ..ャJ.g..pーシ.... 1389: 0x67,0x76,0xb0,0xbc,0xff,0xff,0xff,0xfe,0x67,0x34,0xb0,0xbc,0x00,0x00,0x00,0x08, //00001810 gvーシ....g4ーシ.... 1390: 0x67,0xde,0xb0,0xbc,0x00,0x00,0x00,0x02,0x66,0x00,0xf4,0x88,0x61,0x00,0x00,0xa4, //00001820 g゙ーシ....f...a..、 1391: 0x4a,0x40,0x67,0xcc,0xb0,0x7c,0x00,0x01,0x67,0xc6,0x60,0x00,0xf4,0x7e,0x52,0xae, //00001830 J@gフー|..gニ`..~Rョ 1392: 0x05,0xc6,0x53,0x6e,0x05,0xc2,0x66,0x00,0xfe,0xec,0x60,0x00,0xf4,0x6e,0x52,0xae, //00001840 .ニSn.ツf...`..nRョ 1393: 0x05,0xc6,0x53,0x6e,0x05,0xc2,0x66,0x00,0xfc,0x30,0x30,0x3c,0x70,0x0c,0x60,0x00, //00001850 .ニSn.ツf..00<p.`. 1394: 0xf4,0x5a,0x20,0x03,0xe1,0x88,0xeb,0xa8,0x32,0x00,0x53,0x41,0xb5,0x09,0x66,0x30, //00001860 .Z .瘉.ィ2.SAオ.f0 1395: 0x51,0xc9,0xff,0xfa,0xd3,0xc0,0xd4,0x83,0x9e,0x83,0x62,0x00,0xff,0x06,0x3d,0x7c, //00001870 Qノ..モタヤ.档b...=| 1396: 0x00,0x00,0x05,0xbe,0x60,0x00,0xf4,0x32,0x4a,0x6e,0x05,0xbe,0x66,0x00,0xf4,0x24, //00001880 ...セ`..2Jn.セf..$ 1397: 0x72,0x00,0x70,0xf5,0x4e,0x4f,0x3d,0x7c,0xff,0xff,0x05,0xbe,0x60,0x00,0xfe,0x96, //00001890 r.p.NO=|...セ`... 1398: 0x3d,0x7c,0x00,0x00,0x05,0xbe,0x30,0x3c,0x70,0x0b,0x60,0x00,0xf4,0x0e,0x48,0xe7, //000018a0 =|...セ0<p.`...H. 1399: 0x10,0x40,0x20,0x2e,0x0d,0xe0,0x43,0xee,0x05,0xd2,0x32,0xfc,0x00,0x00,0x32,0xfc, //000018b0 .@ ..澆..メ2...2. 1400: 0x00,0x04,0x22,0xc0,0x43,0xee,0x05,0xd2,0x76,0x08,0x61,0x64,0x4c,0xdf,0x02,0x08, //000018c0 .."タC..メv.adL゚.. 1401: 0x4e,0x75,0x48,0xe7,0x40,0x40,0x70,0xf5,0x72,0x2c,0x28,0x2e,0x05,0xa8,0x76,0x0e, //000018d0 NuH蹇@p.r,(..ィv. 1402: 0x43,0xee,0x05,0xd2,0x4e,0x4f,0x4a,0x80,0x66,0x18,0x42,0x41,0x12,0x29,0x00,0x02, //000018e0 C..メNOJ.f.BA.).. 1403: 0xe3,0x49,0x43,0xfa,0xf3,0x5a,0x70,0x00,0x30,0x31,0x10,0x00,0x4c,0xdf,0x02,0x02, //000018f0 紵C..Zp.01..L゚.. 1404: 0x4e,0x75,0x30,0x3c,0x70,0x0c,0x4c,0xdf,0x02,0x02,0x4e,0x75,0x70,0x00,0x10,0x2d, //00001900 Nu0<p.L゚..Nup..- 1405: 0x00,0x01,0xe5,0x88,0x41,0xee,0x05,0x44,0xd1,0xc0,0x2b,0x48,0x00,0x12,0x20,0x50, //00001910 ..蛻A..Dムタ+H.. P 1406: 0x1b,0x68,0x00,0x0a,0x00,0x0d,0x60,0x00,0xf3,0x90,0x07,0x00,0x00,0x00,0x00,0x00, //00001920 .h....`......... 1407: 0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee,0x43,0xed, //00001930 NU..H躋p&IE..獷. 1408: 0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0,0x61,0x28, //00001940 ..r..レQノ..C...a( 1409: 0x4a,0x80,0x66,0x1a,0x22,0x4b,0x72,0x05,0x70,0xf5,0x4e,0x4f,0x0c,0x80,0xff,0xff, //00001950 J.f."Kr.p.NO.... 1410: 0xff,0xff,0x67,0x0a,0x61,0x4c,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x70,0xff, //00001960 ..g.aLL゚.JN]Nup. 1411: 0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x48,0xe7,0x68,0x00,0x32,0x3c,0x00,0x01, //00001970 L゚.JN]NuH輊.2<.. 1412: 0x72,0x01,0x70,0xf5,0x4e,0x4f,0x4a,0x80,0x67,0x06,0x51,0xca,0xff,0xf4,0x60,0x1a, //00001980 r.p.NOJ.g.Qハ..`. 1413: 0x48,0x44,0xeb,0x0c,0x89,0x29,0x00,0x01,0x72,0x03,0x70,0xf5,0x4e,0x4f,0x4a,0x80, //00001990 HD...)..r.p.NOJ. 1414: 0x66,0x08,0x70,0x00,0x4c,0xdf,0x00,0x16,0x4e,0x75,0x70,0xff,0x4c,0xdf,0x00,0x16, //000019a0 f.p.L゚..Nup.L゚.. 1415: 0x4e,0x75,0x43,0xed,0xff,0xff,0x72,0x06,0x70,0xf5,0x4e,0x4f,0x4a,0x80,0x66,0x1a, //000019b0 NuC...r.p.NOJ.f. 1416: 0x43,0xed,0xff,0xfe,0x72,0x07,0x70,0xf5,0x4e,0x4f,0x4a,0x80,0x66,0x0c,0x10,0x2d, //000019c0 C...r.p.NOJ.f..- 1417: 0xff,0xfe,0x48,0x40,0x10,0x2d,0xff,0xff,0x4e,0x75,0x70,0xff,0x4e,0x75,0x0d,0x0a, //000019d0 ..H@.-..Nup.Nu.. 1418: 0x53,0x43,0x53,0x49,0x20,0x44,0x49,0x53,0x4b,0x20,0x44,0x52,0x49,0x56,0x45,0x52, //000019e0 SCSI DISK DRIVER 1419: 0x20,0x66,0x6f,0x72,0x20,0x58,0x36,0x38,0x30,0x30,0x30,0x20,0x76,0x65,0x72,0x73, //000019f0 for X68000 vers 1420: 0x69,0x6f,0x6e,0x20,0x31,0x2e,0x30,0x34,0x0d,0x0a,0x43,0x6f,0x70,0x79,0x72,0x69, //00001a00 ion 1.04..Copyri 1421: 0x67,0x68,0x74,0x20,0x31,0x39,0x39,0x30,0x2d,0x39,0x32,0x20,0x53,0x48,0x41,0x52, //00001a10 ght 1990-92 SHAR 1422: 0x50,0x2f,0x46,0x69,0x72,0x73,0x74,0x20,0x43,0x6c,0x61,0x73,0x73,0x20,0x54,0x65, //00001a20 P/First Class Te 1423: 0x63,0x68,0x6e,0x6f,0x6c,0x6f,0x67,0x79,0x0d,0x0a,0x00,0x00,0x00,0x00,0x00,0x00, //00001a30 chnology........ 1424: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001a40 ................ 1425: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001a50 ................ 1426: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001a60 ................ 1427: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001a70 ................ 1428: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001a80 ................ 1429: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001a90 ................ 1430: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001aa0 ................ 1431: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ab0 ................ 1432: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ac0 ................ 1433: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ad0 ................ 1434: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ae0 ................ 1435: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001af0 ................ 1436: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b00 ................ 1437: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b10 ................ 1438: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b20 ................ 1439: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b30 ................ 1440: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b40 ................ 1441: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b50 ................ 1442: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b60 ................ 1443: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b70 ................ 1444: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b80 ................ 1445: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001b90 ................ 1446: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ba0 ................ 1447: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001bb0 ................ 1448: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001bc0 ................ 1449: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001bd0 ................ 1450: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001be0 ................ 1451: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001bf0 ................ 1452: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c00 ................ 1453: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c10 ................ 1454: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c20 ................ 1455: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c30 ................ 1456: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c40 ................ 1457: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c50 ................ 1458: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c60 ................ 1459: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c70 ................ 1460: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c80 ................ 1461: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001c90 ................ 1462: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ca0 ................ 1463: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001cb0 ................ 1464: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001cc0 ................ 1465: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001cd0 ................ 1466: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ce0 ................ 1467: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001cf0 ................ 1468: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d00 ................ 1469: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d10 ................ 1470: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d20 ................ 1471: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d30 ................ 1472: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d40 ................ 1473: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d50 ................ 1474: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d60 ................ 1475: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d70 ................ 1476: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d80 ................ 1477: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001d90 ................ 1478: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001da0 ................ 1479: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001db0 ................ 1480: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001dc0 ................ 1481: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001dd0 ................ 1482: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001de0 ................ 1483: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001df0 ................ 1484: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e00 ................ 1485: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e10 ................ 1486: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e20 ................ 1487: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e30 ................ 1488: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e40 ................ 1489: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e50 ................ 1490: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e60 ................ 1491: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e70 ................ 1492: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e80 ................ 1493: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001e90 ................ 1494: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ea0 ................ 1495: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001eb0 ................ 1496: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ec0 ................ 1497: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ed0 ................ 1498: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ee0 ................ 1499: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ef0 ................ 1500: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f00 ................ 1501: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f10 ................ 1502: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f20 ................ 1503: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f30 ................ 1504: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f40 ................ 1505: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f50 ................ 1506: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f60 ................ 1507: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f70 ................ 1508: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f80 ................ 1509: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001f90 ................ 1510: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001fa0 ................ 1511: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001fb0 ................ 1512: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001fc0 ................ 1513: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001fd0 ................ 1514: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001fe0 ................ 1515: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00001ff0 ................ 1516: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002000 ................ 1517: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002010 ................ 1518: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002020 ................ 1519: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002030 ................ 1520: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002040 ................ 1521: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002050 ................ 1522: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002060 ................ 1523: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002070 ................ 1524: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002080 ................ 1525: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002090 ................ 1526: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000020a0 ................ 1527: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000020b0 ................ 1528: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000020c0 ................ 1529: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000020d0 ................ 1530: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000020e0 ................ 1531: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000020f0 ................ 1532: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002100 ................ 1533: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002110 ................ 1534: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002120 ................ 1535: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002130 ................ 1536: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002140 ................ 1537: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002150 ................ 1538: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002160 ................ 1539: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002170 ................ 1540: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002180 ................ 1541: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002190 ................ 1542: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000021a0 ................ 1543: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000021b0 ................ 1544: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000021c0 ................ 1545: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000021d0 ................ 1546: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000021e0 ................ 1547: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000021f0 ................ 1548: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002200 ................ 1549: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002210 ................ 1550: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002220 ................ 1551: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002230 ................ 1552: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002240 ................ 1553: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002250 ................ 1554: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002260 ................ 1555: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002270 ................ 1556: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002280 ................ 1557: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002290 ................ 1558: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000022a0 ................ 1559: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000022b0 ................ 1560: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000022c0 ................ 1561: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000022d0 ................ 1562: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000022e0 ................ 1563: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000022f0 ................ 1564: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002300 ................ 1565: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002310 ................ 1566: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002320 ................ 1567: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002330 ................ 1568: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002340 ................ 1569: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002350 ................ 1570: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002360 ................ 1571: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002370 ................ 1572: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002380 ................ 1573: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002390 ................ 1574: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000023a0 ................ 1575: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000023b0 ................ 1576: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000023c0 ................ 1577: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000023d0 ................ 1578: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000023e0 ................ 1579: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000023f0 ................ 1580: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002400 ................ 1581: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002410 ................ 1582: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002420 ................ 1583: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002430 ................ 1584: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002440 ................ 1585: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002450 ................ 1586: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002460 ................ 1587: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002470 ................ 1588: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002480 ................ 1589: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002490 ................ 1590: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000024a0 ................ 1591: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000024b0 ................ 1592: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000024c0 ................ 1593: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000024d0 ................ 1594: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000024e0 ................ 1595: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000024f0 ................ 1596: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002500 ................ 1597: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002510 ................ 1598: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002520 ................ 1599: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002530 ................ 1600: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002540 ................ 1601: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002550 ................ 1602: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002560 ................ 1603: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002570 ................ 1604: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002580 ................ 1605: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002590 ................ 1606: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000025a0 ................ 1607: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000025b0 ................ 1608: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000025c0 ................ 1609: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000025d0 ................ 1610: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000025e0 ................ 1611: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000025f0 ................ 1612: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002600 ................ 1613: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002610 ................ 1614: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002620 ................ 1615: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002630 ................ 1616: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002640 ................ 1617: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002650 ................ 1618: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002660 ................ 1619: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002670 ................ 1620: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002680 ................ 1621: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002690 ................ 1622: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000026a0 ................ 1623: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000026b0 ................ 1624: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000026c0 ................ 1625: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000026d0 ................ 1626: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000026e0 ................ 1627: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000026f0 ................ 1628: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002700 ................ 1629: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002710 ................ 1630: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002720 ................ 1631: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002730 ................ 1632: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002740 ................ 1633: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002750 ................ 1634: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002760 ................ 1635: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002770 ................ 1636: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002780 ................ 1637: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002790 ................ 1638: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000027a0 ................ 1639: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000027b0 ................ 1640: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000027c0 ................ 1641: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000027d0 ................ 1642: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000027e0 ................ 1643: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000027f0 ................ 1644: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002800 ................ 1645: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002810 ................ 1646: 0x48,0xe7,0x08,0x00,0x70,0xf5,0x72,0x0a,0x4e,0x4f,0x0c,0x80,0x00,0x00,0x00,0x04, //00002820 H...p.r.NO...... 1647: 0x64,0x36,0x61,0x00,0x00,0xce,0x41,0xfa,0x01,0x1c,0x08,0x04,0x00,0x00,0x67,0x08, //00002830 d6a..ホA.......g. 1648: 0x20,0xbc,0x00,0xe9,0x60,0x20,0x60,0x0c,0x08,0x04,0x00,0x01,0x67,0x1a,0x20,0xbc, //00002840 シ.饒 `.....g. シ 1649: 0x00,0xea,0x00,0x00,0x70,0x80,0x22,0x3c,0x00,0x00,0x01,0xf5,0x43,0xfa,0x00,0xfa, //00002850 ....p."<....C... 1650: 0x4e,0x4f,0x4c,0xdf,0x00,0x10,0x4e,0x75,0x70,0x00,0x4c,0xdf,0x00,0x10,0x4e,0x75, //00002860 NOL゚..Nup.L゚..Nu 1651: 0x48,0xe7,0x00,0xa2,0x78,0x00,0x41,0xf9,0x00,0xfc,0x00,0x00,0x61,0x00,0x00,0x9e, //00002870 H..「x.A.....a..曷 1652: 0x4a,0x80,0x66,0x16,0x0c,0xa8,0x53,0x43,0x53,0x49,0x00,0x24,0x66,0x0c,0x0c,0x68, //00002880 .f..ィSCSI.$f..h 1653: 0x49,0x4e,0x00,0x28,0x66,0x04,0x08,0xc4,0x00,0x00,0x41,0xf9,0x00,0xea,0x00,0x20, //00002890 IN.(f..ト..A.... 1654: 0x61,0x7a,0x4a,0x80,0x66,0x16,0x0c,0xa8,0x53,0x43,0x53,0x49,0x00,0x24,0x66,0x0c, //000028a0 azJ.f..ィSCSI.$f. 1655: 0x0c,0x68,0x45,0x58,0x00,0x28,0x66,0x04,0x08,0xc4,0x00,0x01,0x13,0xfc,0x00,0x31, //000028b0 .hEX.(f..ト.....1 1656: 0x00,0xe8,0xe0,0x0d,0x0c,0x39,0x00,0x56,0x00,0xed,0x00,0x6f,0x67,0x18,0x13,0xfc, //000028c0 .鞨..9.V...og... 1657: 0x00,0x56,0x00,0xed,0x00,0x6f,0x13,0xfc,0x00,0x07,0x00,0xed,0x00,0x70,0x13,0xfc, //000028d0 .V...o.......p.. 1658: 0x00,0x00,0x00,0xed,0x00,0x71,0x08,0x04,0x00,0x00,0x66,0x08,0x08,0xf9,0x00,0x03, //000028e0 .....q....f..... 1659: 0x00,0xed,0x00,0x70,0x13,0xfc,0x00,0x00,0x00,0xe8,0xe0,0x0d,0x4c,0xdf,0x45,0x00, //000028f0 ...p.....鞨.L゚E. 1660: 0x4e,0x75,0x61,0x00,0xff,0x6c,0x08,0x39,0x00,0x03,0x00,0xed,0x00,0x70,0x66,0x06, //00002900 Nua..l.9.....pf. 1661: 0x08,0x84,0x00,0x01,0x4e,0x75,0x08,0x84,0x00,0x00,0x4e,0x75,0x2c,0x4f,0x43,0xfa, //00002910 ....Nu....Nu,OC. 1662: 0x00,0x28,0x24,0x79,0x00,0x00,0x00,0x08,0x23,0xc9,0x00,0x00,0x00,0x08,0x20,0x10, //00002920 .($y....#ノ.... . 1663: 0x08,0x00,0x00,0x00,0x66,0x12,0xb0,0xbc,0x00,0x20,0x00,0x00,0x65,0x0a,0x23,0xca, //00002930 ....f.ーシ. ..e.#ハ 1664: 0x00,0x00,0x00,0x08,0x70,0x00,0x4e,0x75,0x2e,0x4e,0x23,0xca,0x00,0x00,0x00,0x08, //00002940 ....p.Nu.N#ハ.... 1665: 0x70,0xff,0x4e,0x75,0x00,0xe9,0x60,0x20,0x48,0xe7,0x50,0x62,0xb2,0xbc,0x00,0x00, //00002950 p.Nu.饒 H躅bイシ.. 1666: 0x00,0x10,0x65,0x18,0xb2,0xbc,0x00,0x00,0x00,0x20,0x65,0x40,0xb2,0xbc,0x00,0x00, //00002960 ..e.イシ... e@イシ.. 1667: 0x00,0x40,0x65,0x0e,0xb2,0xbc,0x00,0x00,0x00,0x20,0x65,0x30,0x45,0xfa,0x00,0x3a, //00002970 .@e.イシ... e0E..: 1668: 0x60,0x16,0x92,0xbc,0x00,0x00,0x00,0x20,0x45,0xfa,0x00,0x6e,0x60,0x0a,0x92,0xbc, //00002980 `.直... E..n`.直 1669: 0x00,0x00,0x00,0x40,0x45,0xfa,0x00,0xe2,0xe5,0x89,0x2c,0x7a,0xff,0xb8,0x22,0x32, //00002990 ...@E..粢.,z.ク"2 1670: 0x10,0x00,0xd5,0xc1,0x4e,0x92,0x4c,0xdf,0x46,0x0a,0x4e,0x75,0x70,0xff,0x4c,0xdf, //000029a0 ..ユチN鱈゚F.Nup.L゚ 1671: 0x46,0x0a,0x4e,0x75,0x70,0xff,0x4e,0x75,0x00,0x00,0x0a,0x08,0x00,0x00,0x0b,0x08, //000029b0 F.Nup.Nu........ 1672: 0x00,0x00,0x0a,0xe8,0x00,0x00,0x0c,0x16,0x00,0x00,0x01,0x56,0x00,0x00,0x01,0x00, //000029c0 ...........V.... 1673: 0x00,0x00,0x0d,0x18,0x00,0x00,0x0d,0x64,0x00,0x00,0x0d,0xb0,0x00,0x00,0x0d,0xfa, //000029d0 .......d...ー.... 1674: 0x00,0x00,0x0e,0x0e,0x00,0x00,0x0c,0xce,0x00,0x00,0x0c,0x84,0xff,0xff,0xff,0xfc, //000029e0 .......ホ........ 1675: 0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0xfc,0x00,0x00,0x01,0x76,0x00,0x00,0x03,0x00, //000029f0 ...........v.... 1676: 0x00,0x00,0x03,0x6e,0x00,0x00,0x04,0xde,0x00,0x00,0x0f,0x4e,0x00,0x00,0x10,0x0a, //00002a00 ...n...゙...N.... 1677: 0x00,0x00,0x03,0xe0,0x00,0x00,0x04,0x4c,0x00,0x00,0x04,0xca,0x00,0x00,0x02,0x12, //00002a10 .......L...ハ.... 1678: 0x00,0x00,0x02,0x64,0x00,0x00,0x0f,0x6c,0x00,0x00,0x01,0xc4,0x00,0x00,0x05,0xe2, //00002a20 ...d...l...ト.... 1679: 0x00,0x00,0x0f,0x8a,0x00,0x00,0x05,0x60,0x00,0x00,0x05,0xa0,0x00,0x00,0x02,0xb6, //00002a30 .......`.......カ 1680: 0x00,0x00,0x05,0x20,0xff,0xff,0xff,0xbc,0xff,0xff,0xff,0xbc,0xff,0xff,0xff,0xbc, //00002a40 ... ...シ...シ...シ 1681: 0x00,0x00,0x06,0x2c,0x00,0x00,0x06,0x80,0x00,0x00,0x06,0xce,0x00,0x00,0x07,0x1a, //00002a50 ...,.......ホ.... 1682: 0xff,0xff,0xff,0xbc,0xff,0xff,0xff,0xbc,0xff,0xff,0xff,0xbc,0xff,0xff,0xff,0xbc, //00002a60 ...シ...シ...シ...シ 1683: 0xff,0xff,0xff,0xbc,0xff,0xff,0xff,0xbc,0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c, //00002a70 ...シ...シ...<...< 1684: 0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c, //00002a80 ...<...<...<...< 1685: 0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c, //00002a90 ...<...<...<...< 1686: 0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c, //00002aa0 ...<...<...<...< 1687: 0xff,0xff,0xff,0x3c,0xff,0xff,0xff,0x3c,0x48,0xe7,0x00,0x02,0x2c,0x7a,0xfe,0x96, //00002ab0 ...<...<H...,z.. 1688: 0x10,0x2e,0x00,0x09,0x08,0x00,0x00,0x05,0x66,0x38,0x10,0x2e,0x00,0x0b,0x08,0x00, //00002ac0 ........f8...... 1689: 0x00,0x07,0x67,0xec,0x02,0x00,0x00,0x07,0xb0,0x3c,0x00,0x00,0x66,0x1a,0x61,0x00, //00002ad0 ..g.....ー<..f.a. 1690: 0x06,0x94,0x48,0x40,0x66,0x06,0x4c,0xdf,0x40,0x00,0x4e,0x75,0x4a,0x40,0x67,0x08, //00002ae0 .禰@f.L゚@.NuJ@g. 1691: 0x48,0x40,0x4c,0xdf,0x40,0x00,0x4e,0x75,0x10,0x2e,0x00,0x0b,0x4c,0xdf,0x40,0x00, //00002af0 H@L゚@.Nu....L゚@. 1692: 0x4e,0x75,0x61,0x00,0x08,0xbc,0x70,0xff,0x4c,0xdf,0x40,0x00,0x4e,0x75,0x48,0xe7, //00002b00 Nua..シp.L゚@.NuH. 1693: 0x00,0x02,0x2c,0x7a,0xfe,0x40,0x10,0x2e,0x00,0x09,0x08,0x00,0x00,0x05,0x66,0x3c, //00002b10 ..,z.@........f< 1694: 0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xec,0x02,0x00,0x00,0x07,0x02,0x00, //00002b20 ........g....... 1695: 0x00,0x07,0xb0,0x3c,0x00,0x01,0x66,0x1a,0x61,0x00,0x06,0x46,0x48,0x40,0x66,0x06, //00002b30 ..ー<..f.a..FH@f. 1696: 0x4c,0xdf,0x40,0x00,0x4e,0x75,0x4a,0x40,0x67,0x08,0x48,0x40,0x4c,0xdf,0x40,0x00, //00002b40 L゚@.NuJ@g.H@L゚@. 1697: 0x4e,0x75,0x10,0x2e,0x00,0x0b,0x4c,0xdf,0x40,0x00,0x4e,0x75,0x61,0x00,0x08,0x62, //00002b50 Nu....L゚@.Nua..b 1698: 0x70,0xff,0x4c,0xdf,0x40,0x00,0x4e,0x75,0x12,0x00,0x00,0x00,0x00,0x00,0x4e,0x55, //00002b60 p.L゚@.Nu......NU 1699: 0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee,0x43,0xed,0xff,0xf0, //00002b70 ..H躋p&IE..獷... 1700: 0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0,0x13,0x43,0x00,0x04, //00002b80 r..レQノ..C....C.. 1701: 0x61,0x00,0x0e,0xb8,0x4a,0x80,0x66,0x00,0x05,0xd2,0x22,0x4b,0x61,0x00,0x0a,0xe8, //00002b90 a..クJ.f..メ"Ka... 1702: 0x0c,0x80,0xff,0xff,0xff,0xff,0x67,0x00,0x05,0xc2,0x61,0x00,0x0e,0xea,0x4c,0xdf, //00002ba0 ......g..ツa..鶚゚ 1703: 0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x03,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0, //00002bb0 .JN]Nu......NU.. 1704: 0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee,0x43,0xed,0xff,0xf0,0x72,0x05, //00002bc0 H躋p&IE..獷...r. 1705: 0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0,0x13,0x43,0x00,0x04,0x61,0x00, //00002bd0 .レQノ..C....C..a. 1706: 0x0e,0x6a,0x4a,0x80,0x66,0x00,0x05,0x84,0x22,0x4b,0x61,0x00,0x0a,0x9a,0x0c,0x80, //00002be0 .jJ.f..."Ka..... 1707: 0xff,0xff,0xff,0xff,0x67,0x00,0x05,0x74,0x61,0x00,0x0e,0x9c,0x4c,0xdf,0x0e,0x4a, //00002bf0 ....g..ta..廰゚.J 1708: 0x4e,0x5d,0x4e,0x75,0x1a,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7, //00002c00 N]Nu......NU..H躋 1709: 0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda, //00002c10 p&IE..獷...r..レ 1710: 0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0,0x13,0x43,0x00,0x04,0x13,0x42,0x00,0x02, //00002c20 Qノ..C....C...B.. 1711: 0x61,0x00,0x0e,0x18,0x4a,0x80,0x66,0x00,0x05,0x32,0x22,0x4b,0x61,0x00,0x0a,0x48, //00002c30 a...J.f..2"Ka..H 1712: 0x0c,0x80,0xff,0xff,0xff,0xff,0x67,0x00,0x05,0x22,0x61,0x00,0x0e,0x4a,0x4c,0xdf, //00002c40 ......g.."a..JL゚ 1713: 0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x15,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0, //00002c50 .JN]Nu......NU.. 1714: 0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee,0x43,0xed,0xff,0xf0,0x72,0x05, //00002c60 H躋p&IE..獷...r. 1715: 0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0,0x13,0x43,0x00,0x04,0x13,0x42, //00002c70 .レQノ..C....C...B 1716: 0x00,0x01,0x61,0x00,0x0d,0xc6,0x4a,0x80,0x66,0x00,0x04,0xe0,0x22,0x4b,0x61,0x00, //00002c80 ..a..ニJ.f..."Ka. 1717: 0x09,0xac,0x0c,0x80,0xff,0xff,0xff,0xff,0x67,0x00,0x04,0xd0,0x61,0x00,0x0d,0xf8, //00002c90 .ャ......g..ミa... 1718: 0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x07,0x00,0x00,0x00,0x00,0x00,0x4e,0x55, //00002ca0 L゚.JN]Nu......NU 1719: 0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee,0x43,0xed,0xff,0xf0, //00002cb0 ..H躋p&IE..獷... 1720: 0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0,0x61,0x00,0x0d,0x7c, //00002cc0 r..レQノ..C...a..| 1721: 0x4a,0x80,0x66,0x00,0x04,0x96,0x22,0x4b,0x61,0x00,0x09,0x62,0x0c,0x80,0xff,0xff, //00002cd0 J.f..."Ka..b.... 1722: 0xff,0xff,0x67,0x00,0x04,0x86,0x61,0x00,0x0d,0xae,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d, //00002ce0 ..g...a..ョL゚.JN] 1723: 0x4e,0x75,0x08,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70, //00002cf0 Nu......NU..H躋p 1724: 0x26,0x49,0x45,0xfa,0xff,0xee,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9, //00002d00 &IE..獷...r..レQノ 1725: 0xff,0xfc,0x2c,0x02,0x43,0xed,0xff,0xf0,0x13,0x46,0x00,0x03,0xe0,0x8e,0x13,0x46, //00002d10 ..,.C....F..燻.F 1726: 0x00,0x02,0xe0,0x8e,0x13,0x46,0x00,0x01,0x13,0x43,0x00,0x04,0x61,0x00,0x0d,0x1c, //00002d20 ..燻.F...C..a... 1727: 0x4a,0x80,0x66,0x00,0x04,0x36,0xe1,0x8b,0xeb,0xab,0x22,0x4b,0x61,0x00,0xfd,0xd0, //00002d30 J.f..6瘠.ォ"Ka..ミ 1728: 0x0c,0x80,0xff,0xff,0xff,0xff,0x67,0x00,0x04,0x22,0x0c,0x80,0xff,0xff,0xff,0xfe, //00002d40 ......g.."...... 1729: 0x67,0x00,0x01,0x54,0x61,0x00,0x0d,0x40,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75, //00002d50 g..Ta..@L゚.JN]Nu 1730: 0x0a,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49, //00002d60 ......NU..H躋p&I 1731: 0x45,0xfa,0xff,0xee,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc, //00002d70 E..獷...r..レQノ.. 1732: 0x2c,0x02,0x43,0xed,0xff,0xf0,0x13,0x46,0x00,0x03,0xe0,0x8e,0x13,0x46,0x00,0x02, //00002d80 ,.C....F..燻.F.. 1733: 0xe0,0x8e,0x13,0x46,0x00,0x01,0x13,0x43,0x00,0x04,0x61,0x00,0x0c,0xae,0x4a,0x80, //00002d90 燻.F...C..a..ョJ. 1734: 0x66,0x00,0x03,0xc8,0xe1,0x8b,0xeb,0xab,0x22,0x4b,0x61,0x00,0xfd,0x0c,0x0c,0x80, //00002da0 f..ネ瘠.ォ"Ka..... 1735: 0xff,0xff,0xff,0xff,0x67,0x00,0x03,0xb4,0x0c,0x80,0xff,0xff,0xff,0xfe,0x67,0x00, //00002db0 ....g..エ......g. 1736: 0x00,0xe6,0x61,0x00,0x0c,0xd2,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x28,0x00, //00002dc0 .訛..メL゚.JN]Nu(. 1737: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70, //00002dd0 ........NU..H躋p 1738: 0x26,0x49,0x43,0xed,0xff,0xf0,0x45,0xfa,0xff,0xe6,0x72,0x09,0x12,0xda,0x51,0xc9, //00002de0 &IC...E..誡..レQノ 1739: 0xff,0xfc,0x2c,0x03,0x43,0xed,0xff,0xf0,0x23,0x42,0x00,0x02,0x13,0x43,0x00,0x08, //00002df0 ..,.C...#B...C.. 1740: 0xe0,0x8b,0x13,0x43,0x00,0x07,0x61,0x00,0x0c,0x42,0x4a,0x80,0x66,0x00,0x03,0x5c, //00002e00 煖.C..a..BJ.f..\. 1741: 0x26,0x06,0xe1,0x8b,0xeb,0xab,0x22,0x4b,0x61,0x00,0xfc,0xf4,0x0c,0x80,0xff,0xff, //00002e10 &.瘠.ォ"Ka....... 1742: 0xff,0xff,0x67,0x00,0x03,0x46,0x0c,0x80,0xff,0xff,0xff,0xfe,0x67,0x78,0x61,0x00, //00002e20 ..g..F......gxa. 1743: 0x0c,0x66,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x2a,0x00,0x00,0x00,0x00,0x00, //00002e30 .fL゚.JN]Nu*..... 1744: 0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x45,0xfa,0xff,0xec, //00002e40 ....NU..H躋pE... 1745: 0x26,0x49,0x43,0xed,0xff,0xf0,0x72,0x09,0x12,0xda,0x51,0xc9,0xff,0xfc,0x2c,0x03, //00002e50 &IC...r..レQノ..,. 1746: 0x43,0xed,0xff,0xf0,0x23,0x42,0x00,0x02,0x13,0x43,0x00,0x08,0xe0,0x8b,0x13,0x43, //00002e60 C...#B...C..煖.C 1747: 0x00,0x07,0x61,0x00,0x0b,0xd6,0x4a,0x80,0x66,0x00,0x02,0xf0,0x26,0x06,0xe1,0x8b, //00002e70 ..a..ヨJ.f...&.瘠 1748: 0xeb,0xab,0x22,0x4b,0x61,0x00,0xfc,0x32,0x0c,0x80,0xff,0xff,0xff,0xff,0x67,0x00, //00002e80 .ォ"Ka..2......g. 1749: 0x02,0xda,0x0c,0x80,0xff,0xff,0xff,0xfe,0x67,0x0c,0x61,0x00,0x0b,0xfa,0x4c,0xdf, //00002e90 .レ......g.a...L゚ 1750: 0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x61,0x00,0x0b,0xee,0x4a,0x80,0x66,0x02,0x70,0xfe, //00002ea0 .JN]Nua..珵.f.p. 1751: 0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x2f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00002eb0 L゚.JN]Nu/....... 1752: 0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x45,0xfa,0xff,0xec,0x60,0x80, //00002ec0 ..NU..H躋pE...`. 1753: 0x04,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x45,0xfa, //00002ed0 ......NU..H躋pE. 1754: 0xff,0xf0,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed, //00002ee0 ..C...r..レQノ..C. 1755: 0xff,0xf0,0x13,0x43,0x00,0x04,0xe0,0x8b,0x13,0x43,0x00,0x03,0x61,0x00,0x0b,0x4c, //00002ef0 ...C..煖.C..a..L 1756: 0x4a,0x80,0x66,0x00,0x02,0x66,0x61,0x00,0x0b,0x8e,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d, //00002f00 J.f..fa..鮫゚.JN] 1757: 0x4e,0x75,0x1e,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70, //00002f10 Nu......NU..H躋p 1758: 0x45,0xfa,0xff,0xf0,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc, //00002f20 E...C...r..レQノ.. 1759: 0x43,0xed,0xff,0xf0,0x02,0x03,0x00,0x01,0x13,0x43,0x00,0x04,0x61,0x00,0x0b,0x0c, //00002f30 C........C..a... 1760: 0x4a,0x80,0x66,0x00,0x02,0x26,0x61,0x00,0x0b,0x4e,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d, //00002f40 J.f..&a..NL゚.JN] 1761: 0x4e,0x75,0x1b,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70, //00002f50 Nu......NU..H躋p 1762: 0x45,0xfa,0xff,0xf0,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc, //00002f60 E...C...r..レQノ.. 1763: 0x43,0xed,0xff,0xf0,0x02,0x03,0x00,0x03,0x13,0x43,0x00,0x04,0x61,0x00,0x0a,0xcc, //00002f70 C........C..a..フ 1764: 0x4a,0x80,0x66,0x00,0x01,0xe6,0x61,0x00,0x0b,0x0e,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d, //00002f80 J.f..訛...L゚.JN] 1765: 0x4e,0x75,0xc1,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70, //00002f90 Nuチ.....NU..H躋p 1766: 0x45,0xfa,0xff,0xf0,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc, //00002fa0 E...C...r..レQノ.. 1767: 0x43,0xed,0xff,0xf0,0x02,0x03,0x00,0x01,0x13,0x43,0x00,0x04,0x76,0x06,0x61,0x00, //00002fb0 C........C..v.a. 1768: 0x0a,0x8a,0x4a,0x80,0x66,0x00,0x01,0xa4,0x61,0x00,0x0a,0xcc,0x4c,0xdf,0x0e,0x4a, //00002fc0 .開.f..、a..フL゚.J 1769: 0x4e,0x5d,0x4e,0x75,0x0b,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7, //00002fd0 N]Nu......NU..H躋 1770: 0x52,0x70,0x45,0xfa,0xff,0xf0,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9, //00002fe0 pE...C...r..レQノ 1771: 0xff,0xfc,0x2c,0x02,0x43,0xed,0xff,0xf0,0x13,0x46,0x00,0x03,0xe0,0x8e,0x13,0x46, //00002ff0 ..,.C....F..燻.F 1772: 0x00,0x02,0xe0,0x8e,0x13,0x46,0x00,0x01,0x61,0x00,0x0a,0x40,0x4a,0x80,0x66,0x00, //00003000 ..燻.F..a..@J.f. 1773: 0x01,0x5a,0x61,0x00,0x0a,0x82,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0xc2,0x00, //00003010 .Za...L゚.JN]Nuツ. 1774: 0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa, //00003020 ....NU..H躋p&IE. 1775: 0xff,0xee,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x22,0x03, //00003030 .獷...r..レQノ..". 1776: 0x43,0xed,0xff,0xf0,0x13,0x41,0x00,0x05,0x76,0x06,0x61,0x00,0x09,0xfe,0x4a,0x80, //00003040 C....A..v.a...J. 1777: 0x66,0x00,0x01,0x18,0x26,0x01,0x22,0x4b,0x61,0x00,0x05,0xe2,0x0c,0x80,0xff,0xff, //00003050 f...&."Ka....... 1778: 0xff,0xff,0x67,0x00,0x01,0x06,0x61,0x00,0x0a,0x2e,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d, //00003060 ..g...a...L゚.JN] 1779: 0x4e,0x75,0x06,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70, //00003070 Nu......NU..H躋p 1780: 0x45,0xfa,0xff,0xf0,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc, //00003080 E...C...r..レQノ.. 1781: 0x43,0xed,0xff,0xf0,0x2c,0x02,0x13,0x46,0x00,0x03,0xe0,0x8e,0x13,0x46,0x00,0x02, //00003090 C...,..F..燻.F.. 1782: 0xe0,0x8e,0x13,0x46,0x00,0x01,0x13,0x43,0x00,0x04,0x61,0x00,0x09,0x9e,0x4a,0x80, //000030a0 燻.F...C..a..曷. 1783: 0x66,0x00,0x00,0xb8,0x61,0x00,0x09,0xe0,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75, //000030b0 f..クa..澂゚.JN]Nu 1784: 0x07,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x45,0xfa, //000030c0 ......NU..H躋pE. 1785: 0xff,0xf0,0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed, //000030d0 ..C...r..レQノ..C. 1786: 0xff,0xf0,0x2c,0x02,0x13,0x46,0x00,0x03,0xe0,0x8e,0x13,0x46,0x00,0x02,0xe0,0x8e, //000030e0 ..,..F..燻.F..燻 1787: 0x13,0x46,0x00,0x01,0x13,0x43,0x00,0x04,0x61,0x00,0x09,0x50,0x4a,0x80,0x66,0x6a, //000030f0 .F...C..a..PJ.fj 1788: 0x61,0x00,0x09,0x94,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x0e,0x00,0x00,0x00, //00003100 a..猫゚.JN]Nu.... 1789: 0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee, //00003110 ..NU..H躋p&IE..獷 1790: 0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0, //00003120 ...r..レQノ..C... 1791: 0x2c,0x02,0x13,0x46,0x00,0x03,0xe0,0x8e,0x13,0x46,0x00,0x02,0xe0,0x8e,0x13,0x46, //00003130 ,..F..燻.F..燻.F 1792: 0x00,0x01,0x13,0x43,0x00,0x04,0x61,0x00,0x09,0x02,0x4a,0x80,0x66,0x1c,0x76,0x04, //00003140 ...C..a...J.f.v. 1793: 0x22,0x4b,0x61,0x00,0x04,0xe8,0x0c,0x80,0xff,0xff,0xff,0xff,0x67,0x0c,0x61,0x00, //00003150 "Ka.........g.a. 1794: 0x09,0x36,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x70,0xff,0x4c,0xdf,0x0e,0x4a, //00003160 .6L゚.JN]Nup.L゚.J 1795: 0x4e,0x5d,0x4e,0x75,0x2f,0x0b,0x47,0xfa,0x00,0xd8,0x61,0x38,0x26,0x5f,0x4e,0x75, //00003170 N]Nu/.G..リa8&_Nu 1796: 0x2f,0x0b,0x47,0xfa,0x01,0xa8,0x61,0x2c,0x48,0xe7,0xc0,0x00,0x10,0x39,0x00,0xe8, //00003180 /.G..ィa,H鄲..9.鞨 1797: 0xe0,0x0b,0xe8,0x08,0x0c,0x00,0x00,0x0e,0x64,0x12,0x4e,0x7a,0x00,0x02,0x22,0x00, //00003190 .......d.Nz..". 1798: 0x08,0xc0,0x00,0x0b,0x4e,0x7b,0x00,0x02,0x4e,0x7b,0x10,0x02,0x4c,0xdf,0x00,0x03, //000031a0 .タ..N{..N{..L゚.. 1799: 0x26,0x5f,0x4e,0x75,0x48,0xe7,0x00,0x60,0x10,0x2e,0x00,0x0b,0x02,0x00,0x00,0x07, //000031b0 &_NuH..`........ 1800: 0x1d,0x40,0x00,0x11,0x20,0x03,0x1d,0x40,0x00,0x1d,0xe0,0x88,0x1d,0x40,0x00,0x1b, //000031c0 .@.. ..@..煦.@.. 1801: 0xe0,0x88,0x1d,0x40,0x00,0x19,0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xf6, //000031d0 煦.@..........g. 1802: 0x45,0xf9,0x00,0xe8,0x40,0x40,0x15,0x7c,0x00,0xff,0x00,0x00,0x35,0x7c,0x00,0x00, //000031e0 E..錙@.|....5|.. 1803: 0x00,0x1a,0x15,0x7c,0x00,0x80,0x00,0x04,0x15,0x7c,0x00,0x04,0x00,0x06,0x41,0xee, //000031f0 ...|.....|....A. 1804: 0x00,0x15,0x25,0x48,0x00,0x14,0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xf6, //00003200 ..%H..........g. 1805: 0x1d,0x7c,0x00,0x80,0x00,0x05,0x4e,0x93,0x4a,0x80,0x66,0x26,0x08,0x2e,0x00,0x03, //00003210 .|....N笛.f&.... 1806: 0x00,0x09,0x66,0x12,0x08,0x2e,0x00,0x04,0x00,0x09,0x67,0xf0,0x08,0xee,0x00,0x04, //00003220 ..f.......g..... 1807: 0x00,0x09,0x70,0x00,0x60,0x0c,0x08,0xee,0x00,0x03,0x00,0x09,0x70,0xfd,0x60,0x02, //00003230 ..p.`.......p.`. 1808: 0x70,0xff,0x25,0x7c,0x00,0xe9,0x60,0x01,0x00,0x14,0x4c,0xdf,0x06,0x00,0x4e,0x75, //00003240 p.%|.饒...L゚..Nu 1809: 0x48,0xe7,0x7c,0x40,0x15,0x7c,0x00,0x31,0x00,0x05,0x28,0x03,0xb6,0xbc,0x00,0x00, //00003250 H轎@.|.1..(.カシ.. 1810: 0x01,0x00,0x63,0x08,0x2a,0x3c,0x00,0x00,0x01,0x00,0x60,0x02,0x2a,0x03,0x25,0x49, //00003260 ..c.*<....`.*.%I 1811: 0x00,0x0c,0x35,0x45,0x00,0x0a,0x08,0x2e,0x00,0x03,0x00,0x09,0x66,0x00,0x00,0x98, //00003270 ..5E........f... 1812: 0x08,0x2e,0x00,0x00,0x00,0x0d,0x67,0xee,0x08,0x2e,0x00,0x03,0x00,0x09,0x66,0x00, //00003280 ......g.......f. 1813: 0x00,0x86,0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xec,0x70,0x00,0x10,0x2e, //00003290 ..........g.p... 1814: 0x00,0x19,0xe1,0x88,0x10,0x2e,0x00,0x1b,0xe1,0x88,0x10,0x2e,0x00,0x1d,0x22,0x04, //000032a0 ..瘉....瘉....". 1815: 0x92,0x80,0x70,0x00,0x30,0x2a,0x00,0x0a,0x24,0x05,0x94,0x80,0x92,0x82,0x67,0x08, //000032b0 逐p.0*..$.楳窒g. 1816: 0xd3,0xaa,0x00,0x0c,0x93,0x6a,0x00,0x0a,0x14,0xbc,0xff,0xff,0x15,0x7c,0x00,0x80, //000032c0 モェ..屠...シ...|.. 1817: 0x00,0x07,0x4e,0x71,0x4e,0x71,0x4e,0x71,0x4e,0x71,0x4e,0x71,0x08,0x2e,0x00,0x03, //000032d0 ..NqNqNqNqNq.... 1818: 0x00,0x09,0x66,0x32,0x08,0x2e,0x00,0x04,0x00,0x09,0x66,0x06,0x08,0x12,0x00,0x07, //000032e0 ..f2......f..... 1819: 0x67,0xea,0x08,0x2a,0x00,0x01,0x00,0x01,0x66,0x00,0xff,0x7c,0x4a,0x2a,0x00,0x01, //000032f0 g..*....f..|J*.. 1820: 0x66,0x18,0x4a,0x6a,0x00,0x0a,0x66,0x12,0xd3,0xc5,0x98,0x85,0x96,0x85,0x66,0x00, //00003300 f.Jj..f.モナ..妹f. 1821: 0xff,0x4c,0x70,0x00,0x60,0x10,0x70,0xfd,0x60,0x06,0x70,0xfe,0x60,0x02,0x70,0xff, //00003310 .Lp.`.p.`.p.`.p. 1822: 0x15,0x7c,0x00,0x10,0x00,0x07,0x4c,0xdf,0x02,0x3e,0x4e,0x75,0x48,0xe7,0x7c,0x40, //00003320 .|....L゚.>NuH轎@ 1823: 0x15,0x7c,0x00,0xb1,0x00,0x05,0xb6,0xbc,0x00,0x00,0x01,0x00,0x63,0x08,0x2a,0x3c, //00003330 .|.ア..カシ....c.*< 1824: 0x00,0x00,0x01,0x00,0x60,0x02,0x2a,0x03,0x25,0x49,0x00,0x0c,0x35,0x45,0x00,0x0a, //00003340 ....`.*.%I..5E.. 1825: 0x08,0x2e,0x00,0x03,0x00,0x09,0x66,0x52,0x08,0x2e,0x00,0x00,0x00,0x0d,0x66,0xf0, //00003350 ......fR......f. 1826: 0x14,0xbc,0xff,0xff,0x15,0x7c,0x00,0x80,0x00,0x07,0x4e,0x71,0x4e,0x71,0x4e,0x71, //00003360 .シ...|....NqNqNq 1827: 0x4e,0x71,0x4e,0x71,0x08,0x2e,0x00,0x03,0x00,0x09,0x66,0x2e,0x08,0x2e,0x00,0x04, //00003370 NqNq......f..... 1828: 0x00,0x09,0x66,0x06,0x08,0x12,0x00,0x07,0x67,0xea,0x08,0x2a,0x00,0x01,0x00,0x01, //00003380 ..f.....g..*.... 1829: 0x66,0xbe,0x4a,0x2a,0x00,0x01,0x66,0x16,0x4a,0x6a,0x00,0x0a,0x66,0x10,0xd3,0xc5, //00003390 fセJ*..f.Jj..f.モナ 1830: 0x98,0x85,0x96,0x85,0x66,0x90,0x70,0x00,0x60,0x10,0x70,0xfd,0x60,0x06,0x70,0xfe, //000033a0 ..妹f壬.`.p.`.p. 1831: 0x60,0x02,0x70,0xff,0x15,0x7c,0x00,0x10,0x00,0x07,0x4c,0xdf,0x02,0x3e,0x4e,0x75, //000033b0 `.p..|....L゚.>Nu 1832: 0x48,0xe7,0x40,0x42,0x2c,0x7a,0xf5,0x8e,0x1d,0x7c,0x00,0x90,0x00,0x03,0x10,0x39, //000033c0 H蹇B,z...|.....9 1833: 0x00,0xed,0x00,0x6f,0x0c,0x00,0x00,0x56,0x67,0x3a,0x13,0xfc,0x00,0x31,0x00,0xe8, //000033d0 ...o...Vg:...1.鞨 1834: 0xe0,0x0d,0xbd,0xfc,0x00,0xe9,0x60,0x20,0x66,0x0a,0x13,0xfc,0x00,0x07,0x00,0xed, //000033e0 .ス..饒 f....... 1835: 0x00,0x70,0x60,0x08,0x13,0xfc,0x00,0x0f,0x00,0xed,0x00,0x70,0x13,0xfc,0x00,0x00, //000033f0 .p`........p.... 1836: 0x00,0xed,0x00,0x71,0x13,0xfc,0x00,0x56,0x00,0xed,0x00,0x6f,0x13,0xfc,0x00,0x00, //00003400 ...q...V...o.... 1837: 0x00,0xe8,0xe0,0x0d,0x10,0x39,0x00,0xed,0x00,0x70,0x02,0x00,0x00,0x07,0x1d,0x40, //00003410 .鞨..9...p.....@ 1838: 0x00,0x01,0x70,0x00,0x1d,0x40,0x00,0x05,0x1d,0x40,0x00,0x11,0x1d,0x40,0x00,0x19, //00003420 ..p..@...@...@.. 1839: 0x1d,0x40,0x00,0x1b,0x1d,0x40,0x00,0x1d,0x1d,0x40,0x00,0x17,0x70,0x80,0xbd,0xfc, //00003430 .@...@...@..p.ス. 1840: 0x00,0xe9,0x60,0x20,0x66,0x04,0x72,0x6c,0x60,0x06,0x22,0x3c,0x00,0x00,0x00,0xf6, //00003440 .饒 f.rl`."<.... 1841: 0x43,0xfa,0x00,0x38,0x4e,0x4f,0x1d,0x7c,0x00,0x10,0x00,0x03,0x1d,0x7c,0x00,0x00, //00003450 C..8NO.|.....|.. 1842: 0x00,0x0b,0x70,0x02,0x61,0x00,0x06,0x58,0x1d,0x7c,0x00,0x10,0x00,0x05,0x70,0x05, //00003460 ..p.a..X.|....p. 1843: 0x61,0x00,0x06,0x4c,0x1d,0x7c,0x00,0x00,0x00,0x05,0x20,0x3c,0x00,0x00,0x9c,0x40, //00003470 a..L.|.... <..廖 1844: 0x61,0x00,0x06,0x3c,0x4c,0xdf,0x42,0x02,0x4e,0x75,0x48,0xe7,0xc0,0x02,0x2c,0x7a, //00003480 a..<L゚B.NuH鄲.,z 1845: 0xf4,0xc4,0x10,0x2e,0x00,0x09,0x1d,0x40,0x00,0x09,0x4c,0xdf,0x40,0x03,0x4e,0x73, //00003490 .ト.....@..L゚@.Ns 1846: 0x48,0xe7,0x09,0x02,0x2c,0x7a,0xf4,0xae,0x1d,0x7c,0x00,0x00,0x00,0x11,0x10,0x2e, //000034a0 H...,z.ョ.|...... 1847: 0x00,0x0d,0x02,0x00,0x00,0xf8,0x66,0xf6,0x1d,0x7c,0x00,0x60,0x00,0x05,0x60,0x18, //000034b0 ......f..|.`..`. 1848: 0x48,0xe7,0x09,0x02,0x2c,0x7a,0xf4,0x8e,0x1d,0x7c,0x00,0x00,0x00,0x11,0x10,0x2e, //000034c0 H...,z...|...... 1849: 0x00,0x0d,0x02,0x00,0x00,0xf8,0x66,0xf6,0x02,0x44,0x00,0x07,0x10,0x3c,0x00,0x01, //000034d0 ......f..D...<.. 1850: 0xe9,0x28,0x09,0x39,0x00,0xed,0x00,0x71,0x66,0x0c,0x80,0x2e,0x00,0x01,0x1d,0x7c, //000034e0 .(.9...qf......| 1851: 0x00,0x10,0x00,0x03,0x60,0x06,0x1d,0x7c,0x00,0x00,0x00,0x03,0x1d,0x40,0x00,0x17, //000034f0 ....`..|.....@.. 1852: 0x30,0x3c,0x09,0xc4,0x1d,0x40,0x00,0x1b,0xe0,0x48,0x1d,0x40,0x00,0x19,0x1d,0x7c, //00003500 0<.ト.@..潯.@...| 1853: 0x00,0x03,0x00,0x1d,0x1d,0x6e,0x00,0x09,0x00,0x09,0x1d,0x7c,0x00,0x20,0x00,0x05, //00003510 .....n.....|. .. 1854: 0x70,0x01,0x61,0x00,0x05,0x9a,0x10,0x2e,0x00,0x09,0x66,0x08,0x1d,0x7c,0x00,0x05, //00003520 p.a.......f..|.. 1855: 0x00,0x0d,0x66,0xf2,0x10,0x2e,0x00,0x0d,0x08,0x00,0x00,0x07,0x67,0x9a,0x10,0x2e, //00003530 ..f.........g... 1856: 0x00,0x09,0x67,0xf0,0xb0,0x3c,0x00,0x04,0x67,0x26,0x1d,0x40,0x00,0x09,0xb0,0x3c, //00003540 ..g.ー<..g&.@..ー< 1857: 0x00,0x10,0x67,0x0c,0x48,0x40,0x10,0x2e,0x00,0x0b,0x4c,0xdf,0x40,0x90,0x4e,0x75, //00003550 ..g.H@....L゚@侵u 1858: 0x70,0x00,0x4c,0xdf,0x40,0x90,0x4e,0x75,0x70,0xff,0x4c,0xdf,0x40,0x90,0x4e,0x75, //00003560 p.L゚@侵up.L゚@侵u 1859: 0x70,0x01,0x61,0x00,0x05,0x4a,0x1d,0x7c,0x00,0x00,0x00,0x17,0x20,0x3c,0x00,0x00, //00003570 p.a..J.|.... <.. 1860: 0x02,0x58,0x1d,0x40,0x00,0x1d,0xe0,0x88,0x1d,0x40,0x00,0x1b,0xe0,0x88,0x1d,0x40, //00003580 .X.@..煦.@..煦.@ 1861: 0x00,0x19,0x1d,0x7c,0x00,0x04,0x00,0x09,0x70,0x02,0x61,0x00,0x05,0x22,0x10,0x2e, //00003590 ...|....p.a..".. 1862: 0x00,0x09,0x67,0xfa,0x1d,0x40,0x00,0x09,0xb0,0x3c,0x00,0x04,0x67,0x08,0xb0,0x3c, //000035a0 ..g..@..ー<..g.ー< 1863: 0x00,0x10,0x67,0xac,0x60,0x9e,0x08,0x2e,0x00,0x05,0x00,0x0d,0x66,0xf8,0x1d,0x6e, //000035b0 ..gャ`.......f..n 1864: 0x00,0x09,0x00,0x09,0x08,0x2e,0x00,0x07,0x00,0x0d,0x66,0x94,0x60,0x86,0x48,0xe7, //000035c0 ..........f覗.H. 1865: 0x10,0x02,0x2c,0x7a,0xf3,0x80,0x10,0x11,0x02,0x00,0x00,0xe0,0x0c,0x00,0x00,0x00, //000035d0 ..,z............ 1866: 0x67,0x0e,0xb0,0x3c,0x00,0x20,0x67,0x0c,0xb0,0x3c,0x00,0xa0,0x67,0x0a,0x60,0x0a, //000035e0 g.ー<. g.ー<..g.`. 1867: 0x76,0x06,0x60,0x06,0x76,0x0a,0x60,0x02,0x76,0x0c,0x10,0x2e,0x00,0x09,0x08,0x00, //000035f0 v.`.v.`.v....... 1868: 0x00,0x05,0x66,0x2c,0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xec,0x02,0x00, //00003600 ..f,........g... 1869: 0x00,0x07,0x0c,0x00,0x00,0x02,0x66,0x0e,0x61,0x00,0x02,0xa6,0x48,0x40,0x66,0x06, //00003610 ......f.a..ヲH@f. 1870: 0x4c,0xdf,0x40,0x08,0x4e,0x75,0x10,0x2e,0x00,0x0b,0x4c,0xdf,0x40,0x08,0x4e,0x75, //00003620 L゚@.Nu....L゚@.Nu 1871: 0x61,0x00,0xfd,0x8e,0x70,0xff,0x4c,0xdf,0x40,0x08,0x4e,0x75,0x48,0xe7,0x00,0x02, //00003630 a..姿.L゚@.NuH... 1872: 0x2c,0x7a,0xf3,0x12,0x10,0x2e,0x00,0x09,0x08,0x00,0x00,0x05,0x66,0x2c,0x10,0x2e, //00003640 ,z..........f,.. 1873: 0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xec,0x02,0x00,0x00,0x07,0xb0,0x3c,0x00,0x00, //00003650 ......g.....ー<.. 1874: 0x66,0x0e,0x61,0x00,0x01,0x66,0x48,0x40,0x66,0x06,0x4c,0xdf,0x40,0x00,0x4e,0x75, //00003660 f.a..fH@f.L゚@.Nu 1875: 0x10,0x2e,0x00,0x0b,0x4c,0xdf,0x40,0x00,0x4e,0x75,0x61,0x00,0xfd,0x44,0x70,0xff, //00003670 ....L゚@.Nua..Dp. 1876: 0x4c,0xdf,0x40,0x00,0x4e,0x75,0x48,0xe7,0x00,0x02,0x2c,0x7a,0xf2,0xc8,0x10,0x2e, //00003680 L゚@.NuH...,z.ネ.. 1877: 0x00,0x09,0x08,0x00,0x00,0x05,0x66,0x2c,0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07, //00003690 ......f,........ 1878: 0x67,0xec,0x02,0x00,0x00,0x07,0xb0,0x3c,0x00,0x01,0x66,0x0e,0x61,0x00,0x01,0x9c, //000036a0 g.....ー<..f.a..廩 1879: 0x48,0x40,0x66,0x06,0x4c,0xdf,0x40,0x00,0x4e,0x75,0x10,0x2e,0x00,0x0b,0x4c,0xdf, //000036b0 @f.L゚@.Nu....L゚ 1880: 0x40,0x00,0x4e,0x75,0x61,0x00,0xfc,0xfa,0x70,0xff,0x4c,0xdf,0x40,0x00,0x4e,0x75, //000036c0 @.Nua...p.L゚@.Nu 1881: 0x48,0xe7,0x10,0x02,0x2c,0x7a,0xf2,0x7e,0x10,0x2e,0x00,0x09,0x08,0x00,0x00,0x05, //000036d0 H...,z.~........ 1882: 0x66,0x2e,0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xec,0x02,0x00,0x00,0x07, //000036e0 f.........g..... 1883: 0xb0,0x3c,0x00,0x03,0x66,0x10,0x76,0x01,0x61,0x00,0x02,0x06,0x48,0x40,0x66,0x06, //000036f0 ー<..f.v.a...H@f. 1884: 0x4c,0xdf,0x40,0x08,0x4e,0x75,0x10,0x2e,0x00,0x0b,0x4c,0xdf,0x40,0x08,0x4e,0x75, //00003700 L゚@.Nu....L゚@.Nu 1885: 0x61,0x00,0xfc,0xae,0x70,0xff,0x4c,0xdf,0x40,0x08,0x4e,0x75,0x48,0xe7,0x10,0x02, //00003710 a..ョp.L゚@.NuH... 1886: 0x2c,0x7a,0xf2,0x32,0x10,0x2e,0x00,0x09,0x08,0x00,0x00,0x05,0x66,0x2e,0x10,0x2e, //00003720 ,z.2........f... 1887: 0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xec,0x02,0x00,0x00,0x07,0xb0,0x3c,0x00,0x07, //00003730 ......g.....ー<.. 1888: 0x66,0x10,0x76,0x01,0x61,0x00,0x01,0xba,0x48,0x40,0x66,0x06,0x4c,0xdf,0x40,0x08, //00003740 f.v.a..コH@f.L゚@. 1889: 0x4e,0x75,0x10,0x2e,0x00,0x0b,0x4c,0xdf,0x40,0x08,0x4e,0x75,0x61,0x00,0xfc,0x62, //00003750 Nu....L゚@.Nua..b 1890: 0x70,0xff,0x4c,0xdf,0x40,0x08,0x4e,0x75,0x48,0xe7,0x10,0x02,0x2c,0x7a,0xf1,0xe6, //00003760 p.L゚@.NuH...,z.. 1891: 0x10,0x2e,0x00,0x09,0x08,0x00,0x00,0x05,0x66,0x2c,0x10,0x2e,0x00,0x0b,0x08,0x00, //00003770 ........f,...... 1892: 0x00,0x07,0x67,0xec,0x02,0x00,0x00,0x07,0xb0,0x3c,0x00,0x06,0x66,0x0e,0x76,0x01, //00003780 ..g.....ー<..f.v. 1893: 0x61,0x38,0x48,0x40,0x66,0x06,0x4c,0xdf,0x40,0x08,0x4e,0x75,0x10,0x2e,0x00,0x0b, //00003790 a8H@f.L゚@.Nu.... 1894: 0x4c,0xdf,0x40,0x08,0x4e,0x75,0x61,0x00,0xfc,0x18,0x70,0xff,0x4c,0xdf,0x40,0x08, //000037a0 L゚@.Nua...p.L゚@. 1895: 0x4e,0x75,0x48,0xe7,0x00,0x02,0x2c,0x7a,0xf1,0x9c,0x70,0x00,0x10,0x2e,0x00,0x0b, //000037b0 NuH...,z.徘..... 1896: 0x4c,0xdf,0x40,0x00,0x4e,0x75,0x70,0x04,0x4e,0x75,0x48,0xe7,0x10,0x40,0x20,0x03, //000037c0 L゚@.Nup.NuH..@ . 1897: 0x1d,0x40,0x00,0x1d,0xe0,0x88,0x1d,0x40,0x00,0x1b,0xe0,0x88,0x1d,0x40,0x00,0x19, //000037d0 .@..煦.@..煦.@.. 1898: 0x10,0x2e,0x00,0x0b,0x02,0x00,0x00,0x07,0x1d,0x40,0x00,0x11,0x10,0x2e,0x00,0x0b, //000037e0 .........@...... 1899: 0x08,0x00,0x00,0x07,0x67,0xf6,0x1d,0x6e,0x00,0x09,0x00,0x09,0x1d,0x7c,0x00,0x80, //000037f0 ....g..n.....|.. 1900: 0x00,0x05,0x10,0x2e,0x00,0x0d,0x02,0x00,0x00,0xf0,0xb0,0x3c,0x00,0x70,0x67,0x06, //00003800 ..........ー<.pg. 1901: 0xb0,0x3c,0x00,0xb0,0x66,0xec,0x4a,0x2e,0x00,0x09,0x66,0x10,0x08,0x2e,0x00,0x01, //00003810 ー<.ーf.J...f..... 1902: 0x00,0x0d,0x66,0xf2,0x1d,0x59,0x00,0x15,0x53,0x83,0x66,0xea,0x10,0x2e,0x00,0x09, //00003820 ..f..Y..Sデ..... 1903: 0x67,0xfa,0x1d,0x40,0x00,0x09,0xb0,0x3c,0x00,0x10,0x67,0x06,0x4c,0xdf,0x02,0x08, //00003830 g..@..ー<..g.L゚.. 1904: 0x4e,0x75,0x70,0x00,0x4c,0xdf,0x02,0x08,0x4e,0x75,0x48,0xe7,0x10,0x40,0x10,0x2e, //00003840 Nup.L゚..NuH..@.. 1905: 0x00,0x0b,0x02,0x00,0x00,0x07,0x1d,0x40,0x00,0x11,0x20,0x03,0x1d,0x40,0x00,0x1d, //00003850 .......@.. ..@.. 1906: 0xe0,0x88,0x1d,0x40,0x00,0x1b,0xe0,0x88,0x1d,0x40,0x00,0x19,0x1d,0x6e,0x00,0x09, //00003860 煦.@..煦.@...n.. 1907: 0x00,0x09,0x1d,0x7c,0x00,0x80,0x00,0x05,0x10,0x2e,0x00,0x0d,0x02,0x00,0x00,0xf0, //00003870 ...|............ 1908: 0xb0,0x3c,0x00,0x70,0x67,0x06,0xb0,0x3c,0x00,0xb0,0x66,0xec,0x4a,0x2e,0x00,0x09, //00003880 ー<.pg.ー<.ーf.J... 1909: 0x66,0x10,0x08,0x2e,0x00,0x00,0x00,0x0d,0x66,0xf2,0x12,0xee,0x00,0x15,0x53,0x83, //00003890 f.......f.....Sデ 1910: 0x66,0xea,0x10,0x2e,0x00,0x09,0x67,0xfa,0x1d,0x40,0x00,0x09,0xb0,0x3c,0x00,0x10, //000038a0 .....g..@..ー<.. 1911: 0x67,0x06,0x4c,0xdf,0x02,0x08,0x4e,0x75,0x70,0x00,0x4c,0xdf,0x02,0x08,0x4e,0x75, //000038b0 g.L゚..Nup.L゚..Nu 1912: 0x48,0xe7,0x10,0x40,0x10,0x2e,0x00,0x0b,0x02,0x00,0x00,0x07,0x1d,0x40,0x00,0x11, //000038c0 H..@.........@.. 1913: 0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xf6,0x1d,0x59,0x00,0x17,0x1d,0x7c, //000038d0 ........g..Y...| 1914: 0x00,0xec,0x00,0x05,0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x66,0xf6,0x1d,0x7c, //000038e0 ............f..| 1915: 0x00,0xcc,0x00,0x05,0x53,0x83,0x66,0xcc,0x70,0x00,0x4c,0xdf,0x02,0x08,0x4e,0x75, //000038f0 .フ..Sデフp.L゚..Nu 1916: 0x48,0xe7,0x10,0x40,0x10,0x2e,0x00,0x0b,0x02,0x00,0x00,0x07,0x1d,0x40,0x00,0x11, //00003900 H..@.........@.. 1917: 0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x67,0xf6,0x1d,0x7c,0x00,0xec,0x00,0x05, //00003910 ........g..|.... 1918: 0x10,0x2e,0x00,0x0b,0x08,0x00,0x00,0x07,0x66,0xf6,0x12,0xee,0x00,0x17,0x1d,0x7c, //00003920 ........f......| 1919: 0x00,0xcc,0x00,0x05,0x53,0x83,0x66,0xcc,0x70,0x00,0x4c,0xdf,0x02,0x08,0x4e,0x75, //00003930 .フ..Sデフp.L゚..Nu 1920: 0x00,0x00,0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x45,0xfa, //00003940 ......NU..H躋pE. 1921: 0xff,0xf0,0x61,0x00,0x01,0x2c,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x01,0x00, //00003950 ..a..,L゚.JN]Nu.. 1922: 0x00,0x00,0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x45,0xfa,0xff,0xf0, //00003960 ....NU..H躋pE... 1923: 0x61,0x00,0x01,0x0e,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x08,0x00,0x00,0x00, //00003970 a...L゚.JN]Nu.... 1924: 0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49,0x45,0xfa,0xff,0xee, //00003980 ..NU..H躋p&IE..獷 1925: 0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x2c,0x02,0x43,0xed, //00003990 ...r..レQノ..,.C. 1926: 0xff,0xf0,0x13,0x46,0x00,0x03,0xe0,0x8e,0x13,0x46,0x00,0x02,0xe0,0x8e,0x13,0x46, //000039a0 ...F..燻.F..燻.F 1927: 0x00,0x01,0x13,0x43,0x00,0x04,0x61,0x00,0x00,0x92,0x4a,0x80,0x66,0x00,0x00,0x82, //000039b0 ...C..a..谷.f..ゃ 1928: 0xe1,0x8b,0xeb,0xab,0x22,0x4b,0x61,0x00,0xf1,0x46,0x0c,0x80,0xff,0xff,0xff,0xff, //000039c0 躯ォ"Ka..F...... 1929: 0x67,0x6e,0x0c,0x80,0xff,0xff,0xff,0xfe,0x67,0x0c,0x61,0x00,0x00,0xba,0x4c,0xdf, //000039d0 gn......g.a..コL゚ 1930: 0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x61,0x00,0x00,0xae,0x4a,0x80,0x66,0x02,0x70,0xfe, //000039e0 .JN]Nua..ョJ.f.p. 1931: 0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //000039f0 L゚.JN]Nu%....... 1932: 0x00,0x00,0x4e,0x55,0xff,0xf0,0x48,0xe7,0x52,0x70,0x26,0x49,0x43,0xed,0xff,0xf0, //00003a00 ..NU..H躋p&IC... 1933: 0x45,0xfa,0xff,0xe6,0x72,0x09,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0, //00003a10 E..誡..レQノ..C... 1934: 0x61,0x28,0x4a,0x80,0x66,0x1a,0x22,0x4b,0x76,0x08,0x61,0x00,0xfc,0x5a,0x0c,0x80, //00003a20 a(J.f."Kv.a..Z.. 1935: 0xff,0xff,0xff,0xff,0x67,0x0a,0x61,0x5e,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75, //00003a30 ....g.a^L゚.JN]Nu 1936: 0x70,0xff,0x4c,0xdf,0x0e,0x4a,0x4e,0x5d,0x4e,0x75,0x48,0xe7,0x48,0x00,0x32,0x3c, //00003a40 p.L゚.JN]NuH踪.2< 1937: 0x00,0x01,0x61,0x00,0xfa,0x6c,0x4a,0x80,0x67,0x06,0x51,0xc9,0xff,0xf6,0x60,0x18, //00003a50 ..a..lJ.g.Qノ..`. 1938: 0x48,0x44,0xeb,0x0c,0x89,0x29,0x00,0x01,0x61,0x00,0xfb,0x64,0x4a,0x80,0x66,0x08, //00003a60 HD...)..a..dJ.f. 1939: 0x70,0x00,0x4c,0xdf,0x00,0x12,0x4e,0x75,0x70,0xff,0x4c,0xdf,0x00,0x12,0x4e,0x75, //00003a70 p.L゚..Nup.L゚..Nu 1940: 0x43,0xed,0xff,0xf0,0x72,0x05,0x12,0xda,0x51,0xc9,0xff,0xfc,0x43,0xed,0xff,0xf0, //00003a80 C...r..レQノ..C... 1941: 0x61,0xb8,0x4a,0x80,0x66,0x24,0x43,0xed,0xff,0xff,0x61,0x00,0xfc,0x34,0x4a,0x80, //00003a90 aクJ.f$C...a..4J. 1942: 0x66,0x18,0x43,0xed,0xff,0xfe,0x61,0x00,0xfc,0x74,0x4a,0x80,0x66,0x0c,0x10,0x2d, //00003aa0 f.C...a..tJ.f..- 1943: 0xff,0xfe,0x48,0x40,0x10,0x2d,0xff,0xff,0x4e,0x75,0x70,0xff,0x4e,0x75,0x48,0xe7, //00003ab0 ..H@.-..Nup.NuH鈞 1944: 0xe0,0x80,0x41,0xf9,0x00,0xe8,0x80,0x23,0x72,0x00,0x12,0x10,0x12,0x10,0x74,0x00, //00003ac0 .A..閠#r.....t. 1945: 0x14,0x10,0xb4,0x10,0x65,0xf8,0x92,0x42,0x64,0x04,0xd2,0x7c,0x00,0xc8,0xc3,0x42, //00003ad0 ..エ.e.達d.メ|.ネテB 1946: 0x90,0x82,0x62,0xea,0x4c,0xdf,0x01,0x07,0x4e,0x75,0x48,0xe7,0xf8,0x42,0x70,0x80, //00003ae0 垂b鶚゚..NuH鋩Bp. 1947: 0x32,0x3c,0x01,0x40,0x43,0xfa,0x00,0xc6,0x4e,0x4f,0x21,0xc0,0x0c,0xc0,0x70,0x80, //00003af0 2<.@C..ニNO!タ.タp. 1948: 0x32,0x3c,0x01,0x41,0x43,0xfa,0x02,0x92,0x4e,0x4f,0x21,0xc0,0x0c,0xc4,0x70,0x80, //00003b00 2<.AC..誰O!タ.トp. 1949: 0x32,0x3c,0x01,0x43,0x43,0xfa,0x03,0x04,0x4e,0x4f,0x21,0xc0,0x0c,0xc8,0x70,0x80, //00003b10 2<.CC...NO!タ.ネp. 1950: 0x32,0x3c,0x01,0x44,0x43,0xfa,0x00,0xdc,0x4e,0x4f,0x21,0xc0,0x0c,0xcc,0x70,0x80, //00003b20 2<.DC..ワNO!タ.フp. 1951: 0x32,0x3c,0x01,0x45,0x43,0xfa,0x01,0xdc,0x4e,0x4f,0x21,0xc0,0x0c,0xd0,0x70,0x80, //00003b30 2<.EC..ワNO!タ.ミp. 1952: 0x32,0x3c,0x01,0x46,0x43,0xfa,0x01,0xbe,0x4e,0x4f,0x21,0xc0,0x0c,0xd4,0x70,0x80, //00003b40 2<.FC..セNO!タ.ヤp. 1953: 0x32,0x3c,0x01,0x47,0x43,0xfa,0x00,0x74,0x4e,0x4f,0x21,0xc0,0x0c,0xd8,0x70,0x80, //00003b50 2<.GC..tNO!タ.リp. 1954: 0x32,0x3c,0x01,0x48,0x43,0xfa,0x00,0x72,0x4e,0x4f,0x21,0xc0,0x0c,0xdc,0x70,0x80, //00003b60 2<.HC..rNO!タ.ワp. 1955: 0x32,0x3c,0x01,0x4b,0x43,0xfa,0x00,0x70,0x4e,0x4f,0x21,0xc0,0x0c,0xe0,0x70,0x80, //00003b70 2<.KC..pNO!タ.瀾. 1956: 0x32,0x3c,0x01,0x4d,0x43,0xfa,0x00,0x6e,0x4e,0x4f,0x21,0xc0,0x0c,0xe4,0x70,0x80, //00003b80 2<.MC..nNO!タ.舊. 1957: 0x32,0x3c,0x01,0x4f,0x43,0xfa,0x00,0xca,0x4e,0x4f,0x21,0xc0,0x0c,0xe8,0x32,0x3c, //00003b90 2<.OC..ハNO!タ..2< 1958: 0x80,0x00,0x74,0x0f,0x22,0x7c,0x00,0x00,0x00,0x00,0x61,0x00,0x02,0x6e,0xd2,0x7c, //00003ba0 ..t."|....a..nメ| 1959: 0x01,0x00,0x51,0xca,0xff,0xf0,0x4c,0xdf,0x42,0x1f,0x4e,0x75,0x2f,0x38,0x0c,0xc0, //00003bb0 ..Qハ..L゚B.Nu/8.タ 1960: 0x48,0xe7,0x48,0x04,0x4b,0xfa,0xf4,0x14,0x60,0x48,0x2f,0x38,0x0c,0xd8,0x48,0xe7, //00003bc0 H踪.K...`H/8.リH踪 1961: 0x48,0x04,0x4b,0xfa,0xfd,0x90,0x60,0x3a,0x2f,0x38,0x0c,0xdc,0x48,0xe7,0x48,0x04, //00003bd0 .K..秦:/8.ワH踪. 1962: 0x4b,0xfa,0xf5,0x30,0x60,0x2c,0x2f,0x38,0x0c,0xe0,0x48,0xe7,0x48,0x04,0x4b,0xfa, //00003be0 K..0`,/8.潯踪.K. 1963: 0xf4,0xd6,0x60,0x1e,0x2f,0x38,0x0c,0xe4,0x48,0xe7,0x48,0x04,0x4b,0xfa,0xf4,0x7a, //00003bf0 .ヨ`./8.腥踪.K..z 1964: 0x60,0x10,0x2f,0x38,0x0c,0xcc,0x48,0xe7,0x48,0x04,0x4b,0xfa,0xfd,0x3a,0x60,0x00, //00003c00 `./8.フH踪.K..:`. 1965: 0x00,0x02,0x78,0x00,0x38,0x01,0x02,0x41,0xf0,0x00,0xb2,0x7c,0x80,0x00,0x66,0x3a, //00003c10 ..x.8..A..イ|..f: 1966: 0xe0,0x4c,0xe2,0x4c,0x64,0x04,0x08,0xc4,0x00,0x10,0x02,0x44,0x00,0x07,0x09,0x39, //00003c20 澂祗d..ト...D...9 1967: 0x00,0xed,0x00,0x71,0x67,0x24,0x4e,0x95,0x02,0x80,0xff,0xff,0xff,0x1e,0x4a,0x80, //00003c30 ...qg$N.......J. 1968: 0x66,0x0a,0x70,0x00,0x4c,0xdf,0x20,0x12,0x58,0x8f,0x4e,0x75,0x00,0x80,0xff,0xff, //00003c40 f.p.L゚ .X蒐u.... 1969: 0xff,0x00,0x4c,0xdf,0x20,0x12,0x58,0x8f,0x4e,0x75,0x4c,0xdf,0x20,0x12,0x4e,0x75, //00003c50 ..L゚ .X蒐uL゚ .Nu 1970: 0x2f,0x38,0x0c,0xe8,0x48,0xe7,0x7f,0x48,0x78,0x00,0x38,0x01,0x02,0x41,0xf0,0x00, //00003c60 /8.鍠..Hx.8..A.. 1971: 0xb2,0x7c,0x80,0x00,0x66,0x6e,0x22,0x04,0xe0,0x4c,0xe2,0x4c,0x64,0x04,0x08,0xc4, //00003c70 イ|..fn".澂祗d..ト 1972: 0x00,0x10,0x02,0x44,0x00,0x07,0x09,0x39,0x00,0xed,0x00,0x71,0x67,0x4e,0x49,0xf9, //00003c80 ...D...9...qgNI. 1973: 0x00,0x00,0x09,0xfe,0x20,0x01,0xe0,0x58,0xc0,0xbc,0x00,0x00,0x00,0x0f,0xd9,0xc0, //00003c90 .... .濆タシ....ルタ 1974: 0x10,0x14,0x08,0x00,0x00,0x07,0x66,0x34,0xc0,0x3c,0x00,0x7f,0x67,0x2e,0x24,0x3c, //00003ca0 ......f4タ<..g.$< 1975: 0x00,0x01,0x56,0x60,0x43,0xfa,0x02,0x84,0xb0,0x3c,0x00,0x14,0x67,0x1a,0x24,0x3c, //00003cb0 ..V`C..┣<..g.$< 1976: 0x00,0x02,0xac,0xc0,0x43,0xfa,0x02,0x88,0xb0,0x3c,0x00,0x28,0x67,0x0a,0x24,0x3c, //00003cc0 ..ャタC..芦<.(g.$< 1977: 0x00,0x00,0xaf,0x50,0x43,0xfa,0x02,0x50,0x61,0x00,0xf3,0x00,0x4c,0xdf,0x12,0xfe, //00003cd0 ..ッPC..Pa...L゚.. 1978: 0x58,0x8f,0x4e,0x75,0x4c,0xdf,0x12,0xfe,0x4e,0x75,0x02,0x41,0xf0,0x00,0xb2,0x7c, //00003ce0 X蒐uL゚..Nu.A..イ| 1979: 0x80,0x00,0x66,0x0a,0x4c,0xdf,0x00,0x02,0x58,0x8f,0x70,0x00,0x4e,0x75,0x4c,0xdf, //00003cf0 ..f.L゚..X術.NuL゚ 1980: 0x00,0x02,0x4e,0x75,0x2f,0x38,0x0c,0xd4,0x48,0xe7,0x7e,0x64,0x4b,0xfa,0xef,0xea, //00003d00 ..Nu/8.ヤH轜dK..鸛 1981: 0x60,0x10,0x2f,0x38,0x0c,0xd0,0x48,0xe7,0x7e,0x64,0x4b,0xfa,0xf0,0x4a,0x60,0x00, //00003d10 ./8.ミH轜dK..J`. 1982: 0x00,0x02,0x78,0x00,0x38,0x01,0x02,0x41,0xf0,0x00,0xb2,0x7c,0x80,0x00,0x66,0x62, //00003d20 ..x.8..A..イ|..fb 1983: 0xe0,0x4c,0xe2,0x4c,0x64,0x04,0x08,0xc4,0x00,0x10,0x02,0x44,0x00,0x07,0x09,0x39, //00003d30 澂祗d..ト...D...9 1984: 0x00,0xed,0x00,0x71,0x67,0x4c,0x2c,0x03,0x26,0x06,0xd6,0xbc,0x00,0x00,0x00,0xff, //00003d40 ...qgL,.&.ヨシ.... 1985: 0xe0,0x8b,0xb6,0xbc,0x00,0x00,0x01,0x00,0x63,0x06,0x26,0x3c,0x00,0x00,0x01,0x00, //00003d50 煖カシ....c.&<.... 1986: 0x7a,0x00,0x4e,0x95,0x02,0x80,0xff,0xff,0xff,0x1e,0x4a,0x80,0x66,0x16,0xd4,0x83, //00003d60 z.N.......J.f.ヤ. 1987: 0x22,0x03,0xe1,0x89,0xd3,0xc1,0x9c,0x81,0x62,0xce,0x4c,0xdf,0x26,0x7e,0x58,0x8f, //00003d70 ".瘟モチ怐bホL゚&~X術 1988: 0x70,0x00,0x4e,0x75,0x4c,0xdf,0x26,0x7e,0x58,0x8f,0x00,0x80,0xff,0xff,0xff,0x00, //00003d80 .NuL゚&~X....... 1989: 0x4e,0x75,0x4c,0xdf,0x26,0x7e,0x4e,0x75,0x4e,0x54,0xff,0x00,0x48,0xe7,0x7e,0x60, //00003d90 NuL゚&~NuNT..H轜` 1990: 0x78,0x00,0x38,0x01,0x02,0x41,0xf0,0x00,0xb2,0x7c,0x80,0x00,0x66,0x60,0x22,0x04, //00003da0 x.8..A..イ|..f`". 1991: 0xe0,0x4c,0xe2,0x4c,0x64,0x04,0x08,0xc4,0x00,0x10,0x02,0x44,0x00,0x07,0x09,0x39, //00003db0 澂祗d..ト...D...9 1992: 0x00,0xed,0x00,0x71,0x67,0x48,0x24,0x49,0x2c,0x03,0x26,0x06,0xb6,0xbc,0x00,0x00, //00003dc0 ...qgH$I,.&.カシ.. 1993: 0x01,0x00,0x65,0x06,0x26,0x3c,0x00,0x00,0x01,0x00,0x43,0xec,0xff,0x00,0x61,0x00, //00003dd0 ..e.&<....C...a. 1994: 0xff,0x24,0x2a,0x03,0x53,0x85,0xb5,0x09,0x66,0x14,0x51,0xcd,0xff,0xfa,0x52,0x82, //00003de0 .$*.S.オ.f.Qヘ..R. 1995: 0x9c,0x83,0x62,0xd6,0x4c,0xdf,0x06,0x7e,0x4e,0x5c,0x70,0x00,0x4e,0x75,0x70,0xfe, //00003df0 怎bヨL゚.~N\p.Nup. 1996: 0x4c,0xdf,0x06,0x7e,0x4e,0x5c,0x00,0x80,0xff,0xff,0xff,0x00,0x4e,0x75,0x4c,0xdf, //00003e00 L゚.~N\......NuL゚ 1997: 0x06,0x7e,0x4e,0x5c,0x2f,0x38,0x0c,0xc4,0x4e,0x75,0x4e,0x54,0xff,0x00,0x48,0xe7, //00003e10 .~N\/8.トNuNT..H輾 1998: 0x78,0x44,0x78,0x00,0x38,0x01,0x02,0x41,0xf0,0x00,0xb2,0x7c,0x80,0x00,0x66,0x46, //00003e20 Dx.8..A..イ|..fF 1999: 0xe0,0x4c,0xe2,0x4c,0x64,0x04,0x08,0xc4,0x00,0x10,0x02,0x44,0x00,0x07,0x09,0x39, //00003e30 澂祗d..ト...D...9 2000: 0x00,0xed,0x00,0x71,0x67,0x30,0x20,0x09,0x67,0x38,0x76,0x0a,0x61,0x00,0xf1,0xd6, //00003e40 ...qg0 .g8v.a..ヨ 2001: 0x02,0x80,0xff,0xff,0xff,0x1e,0x4a,0x80,0x66,0x0e,0x61,0x00,0x00,0x8c,0x70,0x00, //00003e50 ......J.f.a..継. 2002: 0x4c,0xdf,0x22,0x1e,0x4e,0x5c,0x4e,0x75,0x00,0x80,0xff,0xff,0xff,0x00,0x4c,0xdf, //00003e60 L゚".N\Nu......L゚ 2003: 0x22,0x1e,0x4e,0x5c,0x4e,0x75,0x4c,0xdf,0x22,0x1e,0x4e,0x5c,0x2f,0x38,0x0c,0xc8, //00003e70 ".N\NuL゚".N\/8.ネ 2004: 0x4e,0x75,0x76,0x0a,0x43,0xfa,0x00,0xb4,0x61,0x00,0xf1,0x9a,0x02,0x80,0xff,0xff, //00003e80 Nuv.C..エa....... 2005: 0xff,0x1e,0x4a,0x80,0x66,0xd2,0x43,0xec,0xff,0x00,0x74,0x04,0x76,0x01,0x7a,0x00, //00003e90 ..J.fメC...t.v.z. 2006: 0x61,0x00,0xee,0x56,0x02,0x80,0xff,0xff,0xff,0x1e,0x4a,0x80,0x66,0xba,0x45,0xec, //00003ea0 a.皞......J.fコE. 2007: 0xff,0x00,0x43,0xfa,0x00,0x68,0x0c,0xaa,0x58,0x36,0x38,0x4b,0x00,0x00,0x66,0xa8, //00003eb0 ..C..h.ェX68K..fィ 2008: 0x43,0xfa,0x00,0x5a,0x20,0x2a,0x00,0x04,0xb0,0xbc,0x00,0x00,0x9f,0xd9,0x65,0x00, //00003ec0 C..Z *..ーシ..渟e. 2009: 0xff,0x7a,0x43,0xe9,0x00,0x14,0xb0,0xbc,0x00,0x01,0x3d,0x1d,0x65,0x00,0xff,0x6c, //00003ed0 .zC...ーシ..=.e..l 2010: 0x43,0xe9,0x00,0x14,0x60,0x00,0xff,0x64,0x4b,0xf9,0x00,0x00,0x09,0xfe,0x20,0x01, //00003ee0 C...`..dK..... . 2011: 0xe0,0x58,0xc0,0xbc,0x00,0x00,0x00,0x0f,0xdb,0xc0,0x10,0x3c,0x00,0x28,0x0c,0x29, //00003ef0 濆タシ....ロタ.<.(.) 2012: 0x00,0x07,0x00,0x03,0x67,0x10,0x10,0x3c,0x00,0x14,0x0c,0x29,0x00,0x02,0x00,0x04, //00003f00 ....g..<...).... 2013: 0x67,0x04,0x10,0x3c,0x00,0x0a,0x1a,0x80,0x42,0x80,0x4e,0x75,0x01,0x01,0x00,0x03, //00003f10 g..<....B.Nu.... 2014: 0x01,0x35,0x80,0x00,0x00,0x00,0x01,0x01,0x00,0x03,0x01,0x54,0x80,0x00,0x00,0x00, //00003f20 .5.........T.... 2015: 0x01,0x01,0x00,0x03,0x02,0x66,0x80,0x00,0x00,0x00,0x01,0x01,0x00,0x03,0x02,0x98, //00003f30 .....f.......... 2016: 0x80,0x00,0x00,0x00,0x01,0x01,0x00,0x07,0x02,0x66,0x80,0x00,0x00,0x00,0x01,0x01, //00003f40 .........f...... 2017: 0x00,0x07,0x02,0x98,0x80,0x00,0x00,0x00, //00003f50 ........ 2018: }; 2019: */ 2020: // perl misc/itob.pl xeij/SPC.java SPC_DEVICE_DRIVER 2021: 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); 2022: 2023: //---------------------------------------------------------------------------------------- 2024: //SCSIパーティションIPL 2025: // 各パーティションの先頭に書き込まれる 2026: // HUMAN.SYSを読み込んで起動する 2027: /* 2028: public static final int[] SPC_PARTITION_IPL = { 2029: // 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)" 2030: 0x60,0x24,0x53,0x48,0x41,0x52,0x50,0x2f,0x4b,0x47,0x20,0x20,0x20,0x20,0x31,0x2e, //00008000 `$SHARP/KG 1. 2031: 0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //00008010 00.............. 2032: 0x00,0x00,0x00,0x00,0x00,0x00,0x4f,0xfa,0xff,0xd8,0x4e,0x56,0xff,0xfc,0x70,0xf5, //00008020 ......O..リNV..p. 2033: 0x72,0x25,0x43,0xfa,0x02,0x92,0x4e,0x4f,0x22,0x29,0x00,0x04,0xe0,0x89,0xe2,0x89, //00008030 r%C..誰O")..煢竕 2034: 0x2d,0x41,0xff,0xfc,0x74,0x01,0xd4,0xba,0xff,0xda,0x26,0x3c,0x00,0x00,0x04,0x00, //00008040 -A..t.ヤコ.レ&<.... 2035: 0x43,0xfa,0x02,0x74,0x61,0x00,0x00,0xf2,0xb0,0xbc,0x00,0x00,0x00,0x00,0x66,0x00, //00008050 C..ta...ーシ....f. 2036: 0x01,0x0a,0x42,0x81,0x12,0x3a,0xff,0xaf,0x42,0x82,0x34,0x3a,0xff,0xaa,0x42,0x83, //00008060 ..B..:.ッB.4:.ェB. 2037: 0x16,0x3a,0xff,0xab,0x42,0x85,0x3a,0x3a,0xff,0xa0,0xc2,0xc3,0xd4,0x81,0xd4,0xba, //00008070 .:.ォB.::..ツテヤ.ヤコ 2038: 0xff,0xa2,0x43,0xfa,0x02,0x42,0x26,0x3c,0x00,0x00,0x04,0x00,0x61,0x00,0x00,0xba, //00008080 .「C..B&<....a..コ 2039: 0x4a,0x80,0x66,0x00,0x00,0xd6,0x3c,0x3c,0x00,0x1f,0x24,0x49,0x47,0xfa,0x02,0x06, //00008090 J.f..ヨ<<..$IG... 2040: 0x7e,0x0a,0x10,0x1a,0x80,0x3c,0x00,0x20,0xb0,0x1b,0x66,0x06,0x51,0xcf,0xff,0xf4, //000080a0 ~....<. ー.f.Qマ.. 2041: 0x60,0x22,0xd3,0xfc,0x00,0x00,0x00,0x20,0x51,0xce,0xff,0xe0,0x43,0xfa,0x01,0x59, //000080b0 `"モ.... Qホ.澆..Y 2042: 0x2f,0x09,0x43,0xfa,0x00,0xe3,0x61,0x00,0x00,0xba,0x22,0x5f,0x61,0x00,0x00,0xb4, //000080c0 /.C..綢..コ"_a..エ 2043: 0x70,0xfe,0x4e,0x4f,0xea,0x8d,0xd4,0x85,0x7a,0x00,0x3a,0x29,0x00,0x1a,0xe0,0x5d, //000080d0 p.NO鼾ヤ.z.:)..濔 2044: 0x55,0x85,0x10,0x3a,0xff,0x30,0xca,0xc0,0xd4,0x85,0x48,0xe7,0x70,0x00,0x43,0xfa, //000080e0 U..:.0ハタヤ.H輛.C. 2045: 0x01,0xd6,0x26,0x3c,0x00,0x00,0x04,0x00,0x61,0x4e,0x4c,0xdf,0x00,0x0e,0x43,0xfa, //000080f0 .ヨ&<....aNL゚..C. 2046: 0x01,0xc6,0x0c,0x59,0x48,0x55,0x66,0x6a,0x54,0x89,0x0c,0x99,0x00,0x00,0x68,0x00, //00008100 .ニ.YHUfjT.....h. 2047: 0x66,0x68,0x2f,0x19,0x26,0x19,0xd6,0x99,0x2f,0x03,0x2f,0x19,0x22,0x7c,0x00,0x00, //00008110 fh/.&.ヨ././."|.. 2048: 0x67,0xc0,0xd6,0xbc,0x00,0x00,0x00,0x40,0x61,0x1e,0x22,0x1f,0x24,0x1f,0x22,0x5f, //00008120 gタヨシ...@a.".$."_ 2049: 0x4a,0x80,0x66,0x36,0x41,0xf9,0x00,0x00,0x68,0x00,0xd1,0xc2,0x53,0x81,0x65,0x04, //00008130 J.f6A...h.ムツS‘. 2050: 0x42,0x18,0x60,0xf8,0x4e,0x5e,0x4e,0xd1,0x48,0xe7,0x3c,0x00,0x2a,0x2e,0xff,0xfc, //00008140 B.`.N^NムH.<.*... 2051: 0xd6,0xbc,0x00,0x00,0x03,0xff,0xe0,0x8b,0xea,0xab,0xe5,0x8a,0xea,0xaa,0x70,0xf5, //00008150 ヨシ....煖.ォ蜉.ェp. 2052: 0x72,0x21,0x4e,0x4f,0x4c,0xdf,0x00,0x3c,0x4e,0x75,0x43,0xfa,0x00,0xcf,0x60,0x00, //00008160 r!NOL゚.<NuC..マ`. 2053: 0xff,0x50,0x43,0xfa,0x00,0xe6,0x60,0x00,0xff,0x48,0x43,0xfa,0x01,0x00,0x60,0x00, //00008170 .PC..訌..HC...`. 2054: 0xff,0x40,0x70,0x21,0x4e,0x4f,0x4e,0x75,0x1a,0x53,0x43,0x53,0x49,0x20,0x49,0x50, //00008180 .@p!NONu.SCSI IP 2055: 0x4c,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x31,0x39,0x39,0x30, //00008190 L Copyright 1990 2056: 0x20,0x53,0x48,0x41,0x52,0x50,0x00,0x1b,0x5b,0x34,0x37,0x6d,0x1b,0x5b,0x31,0x33, //000081a0 SHARP..[47m.[13 2057: 0x3b,0x32,0x36,0x48,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, //000081b0 ;26H 2058: 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, //000081c0 2059: 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, //000081d0 2060: 0x20,0x1b,0x5b,0x31,0x34,0x3b,0x32,0x36,0x48,0x20,0x20,0x20,0x20,0x20,0x20,0x20, //000081e0 .[14;26H 2061: 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, //000081f0 2062: 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, //00008200 2063: 0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x1b,0x5b,0x31,0x34,0x3b,0x33,0x35,0x48,0x48, //00008210 ..[14;35HH 2064: 0x75,0x6d,0x61,0x6e,0x2e,0x73,0x79,0x73,0x20,0x82,0xaa,0x20,0x8c,0xa9,0x82,0xc2, //00008220 uman.sys が 見つ 2065: 0x82,0xa9,0x82,0xe8,0x82,0xdc,0x82,0xb9,0x82,0xf1,0x00,0x1b,0x5b,0x31,0x34,0x3b, //00008230 かりません..[14; 2066: 0x33,0x38,0x48,0x83,0x66,0x83,0x42,0x83,0x58,0x83,0x4e,0x82,0xaa,0x81,0x40,0x93, //00008240 38Hディスクが 読 2067: 0xc7,0x82,0xdf,0x82,0xdc,0x82,0xb9,0x82,0xf1,0x00,0x1b,0x5b,0x31,0x34,0x3b,0x33, //00008250 めません..[14;3 2068: 0x36,0x48,0x48,0x75,0x6d,0x61,0x6e,0x2e,0x73,0x79,0x73,0x20,0x82,0xaa,0x20,0x89, //00008260 6HHuman.sys が 壊 2069: 0xf3,0x82,0xea,0x82,0xc4,0x82,0xa2,0x82,0xdc,0x82,0xb7,0x00,0x1b,0x5b,0x31,0x34, //00008270 れています..[14 2070: 0x3b,0x33,0x33,0x48,0x48,0x75,0x6d,0x61,0x6e,0x2e,0x73,0x79,0x73,0x20,0x82,0xcc, //00008280 ;33HHuman.sys の 2071: 0x20,0x83,0x41,0x83,0x68,0x83,0x8c,0x83,0x58,0x82,0xaa,0x88,0xd9,0x8f,0xed,0x82, //00008290 アドレスが異常で 2072: 0xc5,0x82,0xb7,0x00,0x68,0x75,0x6d,0x61,0x6e,0x20,0x20,0x20,0x73,0x79,0x73,0x00, //000082a0 す.human sys. 2073: 0x53,0x43,0x53,0x49,0x20,0x49,0x50,0x4c,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e, //000082b0 SCSI IPL version 2074: 0x20,0x31,0x2e,0x30,0x31,0x00, //000082c0 1.01. 2075: }; 2076: */ 2077: // perl misc/itob.pl xeij/SPC.java SPC_PARTITION_IPL 2078: 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); 2079: 2080: 2081: 2082: //======================================================================================== 2083: //$$SPI SCSIポート 2084: public static final class SPCChip { 2085: 2086: public boolean spiExpansion; //false=内蔵SCSI,true=拡張SCSI 2087: public int spiDMAChannel; //使用するDMAのチャンネル。1=内蔵SCSI,2=拡張SCSI 2088: 2089: //レジスタ 2090: // ゼロ拡張 2091: public int spiBdid; //0x01 2092: public int spiSctl; //0x03 2093: public int spiScmd; //0x05 2094: public int spiInts; //0x09 2095: public int spiPsns; //0x0b 2096: public int spiSsts; //0x0d 2097: public int spiSerr; //0x0f 2098: public int spiPctl; //0x11 2099: public int spiMbc; //0x13 2100: public int spiDreg; //0x15 2101: public int spiTemp; //0x17 2102: public int spiTchTcmTcl; //0x19,0x1b,0x1d 2103: 2104: public int spiTargetBase; //現在のspcUnitArrayの開始番号。リセット時に設定される。-8=ユニットなし 2105: public SCUnit spiTargetUnit; //現在のターゲット。null=バスフリー 2106: 2107: public byte[] spiReadHandle; //転送(ターゲット→イニシエータ)の対象の配列 2108: public byte[] spiWriteHandle; //転送(イニシエータ→ターゲット)の対象の配列 2109: public int spiBufferIndex; //次に転送する位置 2110: public int spiBufferLimit; //転送を終了する位置 2111: public int spiBufferCount; //バッファの充填または排出を行う残り回数 2112: public final byte[] spiCommandBuffer = new byte[12]; //コマンドバッファ 2113: public final byte[] spiStatusBuffer = new byte[1]; //ステータスバッファ 2114: public final byte[] spiMessageOutBuffer = new byte[1]; //メッセージアウトバッファ 2115: public final byte[] spiMessageInBuffer = new byte[1]; //メッセージインバッファ 2116: public final byte[] spiSenseBuffer = new byte[8]; //センスバッファ 2117: public final byte[] spiDataInBuffer = new byte[804]; //データインバッファ(Inquiry/Mode Sense(6)/Read Capacity/Read TOC) 2118: public final byte[] spiDataOutBuffer = new byte[255]; //データアウトバッファ(Mode Select(6)/Assign Drive(SASI)) 2119: 2120: public SPCChip (boolean expansion) { 2121: 2122: spiExpansion = expansion; 2123: spiDMAChannel = expansion ? 2 : 1; 2124: 2125: spiReset (-8); 2126: 2127: } //SPCChip(int) 2128: 2129: //spcChip.spiReset (targetBase) 2130: // SPCリセット 2131: public void spiReset (int targetBase) { 2132: 2133: spiTargetBase = targetBase; 2134: 2135: spiBdid = SPC_BDID_I7; //自分のSCSI-IDは7 2136: spiSctl = SPC_SCTL_RD; //ハードウェアリセット 2137: spiScmd = 0; 2138: spiInts = 0; 2139: spiPsns = 0; 2140: spiSsts = 0; 2141: spiSerr = 0; 2142: spiPctl = 0; 2143: spiMbc = 0; 2144: spiDreg = 0; 2145: spiTemp = 0; 2146: spiTchTcmTcl = 0; 2147: spiUpdateSSTS (); 2148: 2149: spiTargetUnit = null; 2150: 2151: spiReadHandle = null; 2152: spiWriteHandle = null; 2153: spiBufferIndex = 0; 2154: spiBufferLimit = 0; 2155: 2156: } //spiReset(int) 2157: 2158: //spiTini () 2159: // 後始末 2160: public void spiTini () { 2161: 2162: //イメージファイルに書き出す 2163: for (SCUnit unit : SPC.spcUnitArray) { 2164: unit.scuTini (); 2165: } 2166: 2167: } //spiTini() 2168: 2169: //d = spcChip.spiPeek (a) 2170: // SPCポートピーク 2171: // ゼロ拡張 2172: public int spiPeek (int a) { 2173: int d = 0; 2174: switch (a & 31) { 2175: case SPC_BDID: //0x01 2176: d = spiBdid; //8bitで読み出す 2177: break; 2178: case SPC_SCTL: //0x03 2179: d = spiSctl; 2180: break; 2181: case SPC_SCMD: //0x05 2182: d = spiScmd; 2183: break; 2184: case SPC_INTS: //0x09 2185: d = spiInts; 2186: break; 2187: case SPC_PSNS: //0x0b 2188: d = spiPsns; 2189: break; 2190: case SPC_SSTS: //0x0d 2191: d = spiSsts; 2192: break; 2193: case SPC_SERR: //0x0f 2194: d = spiSerr; 2195: break; 2196: case SPC_PCTL: //0x11 2197: d = spiPctl; 2198: break; 2199: case SPC_MBC: //0x13 2200: d = spiMbc; 2201: break; 2202: case SPC_DREG: //0x15 2203: d = spiDreg; 2204: break; 2205: case SPC_TEMP: //0x17 2206: d = spiTemp; 2207: break; 2208: case SPC_TCH: //0x19 2209: d = spiTchTcmTcl >>> 16; 2210: break; 2211: case SPC_TCM: //0x1b 2212: d = (char) spiTchTcmTcl >>> 8; 2213: break; 2214: case SPC_TCL: //0x1d 2215: d = spiTchTcmTcl & 255; 2216: break; 2217: } 2218: if (SPC_DEBUG_PORT) { 2219: System.out.printf ("%08x spiPeek(0x%08x(%s))=0x%02x\n", XEiJ.regPC0, a, SPC_REGISTER_NAME[a & 31], d); 2220: } 2221: return d; 2222: } //spiPeek(int) 2223: 2224: //d = spcChip.spiRead (a) 2225: // SPCポートリード 2226: // ゼロ拡張 2227: public int spiRead (int a) { 2228: int d = 0; 2229: switch (a & 31) { 2230: case SPC_BDID: //0x01 2231: d = spiBdid; //8bitで読み出す 2232: break; 2233: case SPC_SCTL: //0x03 2234: d = spiSctl; 2235: break; 2236: case SPC_SCMD: //0x05 2237: d = spiScmd; 2238: break; 2239: case SPC_INTS: //0x09 2240: d = spiInts; 2241: break; 2242: case SPC_PSNS: //0x0b 2243: d = spiPsns; 2244: break; 2245: case SPC_SSTS: //0x0d 2246: d = spiSsts; 2247: break; 2248: case SPC_SERR: //0x0f 2249: d = spiSerr; 2250: break; 2251: case SPC_PCTL: //0x11 2252: d = spiPctl; 2253: break; 2254: case SPC_MBC: //0x13 2255: d = spiMbc; 2256: break; 2257: case SPC_DREG: //0x15 2258: if ((spiSsts & SPC_SSTS_TRIP) != 0 && spiTchTcmTcl != 0) { //転送中 2259: if (spiReadHandle != null && spiBufferIndex < spiBufferLimit) { 2260: spiDreg = spiReadHandle[spiBufferIndex++] & 255; //データを入力する 2261: if (spiBufferIndex == spiBufferLimit && spiBufferCount != 0) { //バッファを再充填する必要がある 2262: spiTargetUnit.scuReadImage (); 2263: spiBufferCount--; 2264: spiBufferIndex = 0; 2265: } 2266: } 2267: spiTchTcmTcl--; //0でなかったのだから負になることはない 2268: spiUpdateSSTS (); 2269: if (spiBufferCount == 0) { //最後のバッファ 2270: if (spiTchTcmTcl == 0) { //転送終了 2271: spiTransferComplete (); 2272: } else if (SPC_EXPOSE_DATAINI_BUG && 2273: spiTchTcmTcl == 8 && //残りが8バイトになった 2274: (spiPsns & SPC_PHASE_MASK) == SPC_DATA_IN_PHASE) { //データインフェーズ 2275: spiPsns = (spiPsns & ~SPC_PHASE_MASK) | SPC_STATUS_PHASE; //ステータスフェーズに切り替える 2276: spiSetInterruptStatus (SPC_INTS_SR); //INTSのSRをセットする 2277: } 2278: } 2279: } 2280: d = spiDreg; 2281: break; 2282: case SPC_TEMP: //0x17 2283: d = spiTemp; 2284: break; 2285: case SPC_TCH: //0x19 2286: d = spiTchTcmTcl >>> 16; 2287: break; 2288: case SPC_TCM: //0x1b 2289: d = (char) spiTchTcmTcl >>> 8; 2290: break; 2291: case SPC_TCL: //0x1d 2292: d = spiTchTcmTcl & 255; 2293: break; 2294: } 2295: if (SPC_DEBUG_PORT) { 2296: System.out.printf ("%08x spiRead(0x%08x(%s))=0x%02x\n", XEiJ.regPC0, a, SPC_REGISTER_NAME[a & 31], d); 2297: } 2298: return d; 2299: } //spiRead(int) 2300: 2301: //d = spcChip.spiWrite (a, d) 2302: // SPCポートライト 2303: public void spiWrite (int a, int d) { 2304: d &= 255; 2305: if (SPC_DEBUG_PORT) { 2306: System.out.printf ("%08x spiWrite(0x%08x(%s),0x%02x)\n", XEiJ.regPC0, a, SPC_REGISTER_NAME[a & 31], d & 255); 2307: } 2308: switch (a & 31) { 2309: case SPC_BDID: //0x01 2310: spiBdid = 1 << (d & 7); //3bitで書き込む 2311: break; 2312: case SPC_SCTL: //0x03 2313: spiSctl = d; 2314: break; 2315: case SPC_SCMD: //0x05 2316: spiScmd = d; 2317: switch (spiScmd & SPC_SCMD_CC) { 2318: case SPC_SCMD_CC_BR: //Bus Release。ターゲットのときバスフリーフェーズへ移行 2319: if (spiTargetUnit != null) { 2320: spiBusFreePhase (); //バスフリーフェーズに移行する 2321: } 2322: break; 2323: case SPC_SCMD_CC_SL: //Select。セレクション/リセレクションを開始 2324: { 2325: if ((spiPctl & SPC_PCTL_SR) == SPC_PCTL_SR_R) { //リセレクション 2326: //!!! 2327: if (SPC_REPORT_UNIMPLEMENTED_COMMAND) { 2328: System.out.println (String.format ("%08x Unimplemented Command: Reselection\n", XEiJ.regPC0)); 2329: } 2330: spiSetInterruptStatus (SPC_INTS_RC); //Reset Conditionで強制終了 2331: break; 2332: } 2333: int u = 0; 2334: SCUnit unit = null; 2335: boolean timeOut = false; 2336: if (spiTargetBase < 0) { //接続するユニットが存在しない 2337: timeOut = true; 2338: } else { 2339: u = Integer.numberOfTrailingZeros (spiTemp & ~spiBdid); //ターゲットのID 2340: if (u > 7) { //ターゲットのIDが指定されていないか、自分のSCSI-IDと衝突している 2341: timeOut = true; 2342: } else { 2343: unit = SPC.spcUnitArray[spiTargetBase + u]; //ターゲットのユニット 2344: if (!unit.isConnected ()) { //ユニットは存在するが接続されていない 2345: timeOut = true; 2346: } 2347: } 2348: } 2349: if (timeOut) { 2350: //ユニットが存在しないときセレクションフェーズを開始して直ちにタイムアウトにする 2351: spiSsts |= SPC_SSTS_INIT | SPC_SSTS_BUSY; 2352: spiPsns |= SPC_PSNS_SEL; 2353: spiTchTcmTcl = 0; 2354: spiSetInterruptStatus (SPC_INTS_TO); //Time Out 2355: spiUpdateSSTS (); 2356: break; 2357: } 2358: spiTargetUnit = unit; //接続する 2359: spiSsts |= SPC_SSTS_INIT; //自分がイニシエータになる 2360: spiSetInterruptStatus (SPC_INTS_CC); //コマンド終了 2361: if ((spiPsns & SPC_PSNS_ATN) != 0) { //ATN=1 2362: spiMessageOutPhase (); //メッセージアウトフェーズに移行する 2363: } else { 2364: spiCommandPhase (); //コマンドフェーズに移行する 2365: } 2366: } 2367: break; 2368: case SPC_SCMD_CC_RA: //Reset ATN。ATNをクリア 2369: spiPsns &= ~SPC_PSNS_ATN; 2370: break; 2371: case SPC_SCMD_CC_SA: //Set ATN。ATNをセット 2372: spiPsns |= SPC_PSNS_ATN; 2373: break; 2374: case SPC_SCMD_CC_TR: //Transfer。転送開始 2375: spiUpdateSSTS (); 2376: spiSsts |= SPC_SSTS_BUSY | SPC_SSTS_TRIP; //転送開始 2377: break; 2378: case SPC_SCMD_CC_TP: //Transfer Pause。転送中断 2379: //!!! 2380: if (SPC_REPORT_UNIMPLEMENTED_COMMAND) { 2381: System.out.println (String.format ("%08x Unimplemented Command: Transfer Pause\n", XEiJ.regPC0)); 2382: } 2383: break; 2384: case SPC_SCMD_CC_RR: //Reset ACK/REQ。CPU転送のときACK/REQをクリア 2385: if ((spiPsns & SPC_PSNS_IO) == 0) { //Out 2386: if (spiWriteHandle == null) { //転送中ではない 2387: break; 2388: } 2389: spiPsns &= ~SPC_PSNS_ACK; //イニシエータがACKを0にする 2390: if (spiBufferIndex < spiBufferLimit) { //継続 2391: spiPsns |= SPC_PSNS_REQ; //ターゲットがREQを1にする 2392: HD63450.dmaFallPCL (spiDMAChannel); 2393: break; 2394: } 2395: spiTransferComplete (); //転送終了 2396: } else { //In 2397: if (spiReadHandle == null) { //転送中ではない 2398: break; 2399: } 2400: spiPsns &= ~SPC_PSNS_REQ; //イニシエータがREQを0にする 2401: if (spiBufferIndex < spiBufferLimit) { //継続 2402: spiPsns |= SPC_PSNS_REQ; //ターゲットがREQを1にする 2403: HD63450.dmaFallPCL (spiDMAChannel); 2404: break; 2405: } 2406: spiTransferComplete (); //転送終了 2407: } 2408: break; 2409: case SPC_SCMD_CC_SR: //Set ACK/REQ。CPU転送のときACK/REQをセット 2410: if ((spiPsns & SPC_PSNS_IO) == 0) { //Out 2411: if (spiWriteHandle == null) { //転送中ではない 2412: break; 2413: } 2414: spiPsns |= SPC_PSNS_ACK; //イニシエータがACKを1にする。spiTempに出力データの準備ができている 2415: if (spiBufferIndex < spiBufferLimit) { 2416: spiWriteHandle[spiBufferIndex++] = (byte) spiTemp; //データを出力する 2417: if ((spiPctl & SPC_PCTL_TP) == SPC_COMMAND_PHASE && //コマンドフェーズの 2418: spiBufferIndex == 1) { //1バイト目 2419: // グループ76543210 2420: spiBufferLimit = 0x16c11aa6 >>> ((spiCommandBuffer[0] & 255) >> 5 << 2) & 15; //CDB(Command Descriptor Block)の長さ 2421: } 2422: //!!! ディスクイメージ以外のバッファは溢れてはならない 2423: if (spiBufferIndex == spiBufferLimit && spiBufferCount != 0) { //バッファから排出する必要がある 2424: spiTargetUnit.scuWriteImage (); 2425: if (--spiBufferCount != 0) { 2426: spiBufferIndex = 0; 2427: } 2428: } 2429: spiUpdateSSTS (); 2430: } 2431: spiPsns &= ~SPC_PSNS_REQ; //ターゲットがREQを0にする 2432: } else { //In 2433: if (spiReadHandle == null) { //転送中ではない 2434: break; 2435: } 2436: spiPsns |= SPC_PSNS_ACK; //イニシエータがACKを1にする。spiReadHandle[spiBufferIndex]に入力データの準備ができている 2437: if (spiBufferIndex < spiBufferLimit) { 2438: spiTemp = spiReadHandle[spiBufferIndex++] & 255; //データを入力する 2439: if (spiBufferIndex == spiBufferLimit && spiBufferCount != 0) { //バッファを再充填する必要がある 2440: spiTargetUnit.scuReadImage (); 2441: spiBufferCount--; 2442: spiBufferIndex = 0; 2443: } 2444: spiUpdateSSTS (); 2445: } 2446: spiPsns &= ~SPC_PSNS_REQ; //ターゲットがREQを0にする 2447: } 2448: break; 2449: } 2450: break; 2451: case SPC_INTS: //0x09 2452: //1を書き込んだビットだけ0クリアする 2453: // move.b INTS,INTSでクリアできる 2454: if ((spiPsns & SPC_PSNS_SEL) != 0 && //セレクションフェーズで 2455: (spiInts & d & SPC_INTS_TO) != 0) { //Time Outをクリアするとき 2456: spiInts &= ~d; 2457: if (spiTchTcmTcl != 0) { //TCH,TCM,TCLが0でないとき 2458: //再びタイムアウトにする 2459: spiTchTcmTcl = 0; 2460: spiSetInterruptStatus (SPC_INTS_TO); //Time Out 2461: } else { //TCH,TCM,TCLが0のとき 2462: //セレクションフェーズを終了する 2463: spiPsns &= ~SPC_PSNS_SEL; 2464: spiSsts &= ~(SPC_SSTS_INIT | SPC_SSTS_BUSY); 2465: spiUpdateSSTS (); 2466: } 2467: } else { 2468: spiInts &= ~d; 2469: } 2470: break; 2471: case SPC_PSNS: //0x0b 2472: spiPsns = d; 2473: break; 2474: case SPC_SSTS: //0x0d 2475: //Readのみ 2476: break; 2477: case SPC_SERR: //0x0f 2478: //Readのみ 2479: break; 2480: case SPC_PCTL: //0x11 2481: spiPctl = d; 2482: break; 2483: case SPC_MBC: //0x13 2484: //Readのみ 2485: break; 2486: case SPC_DREG: //0x15 2487: spiDreg = d; 2488: if ((spiSsts & SPC_SSTS_TRIP) != 0 && spiTchTcmTcl != 0) { //転送中 2489: if (spiWriteHandle != null && spiBufferIndex < spiBufferLimit) { 2490: spiWriteHandle[spiBufferIndex++] = (byte) spiDreg; //データを出力する 2491: if ((spiPctl & SPC_PCTL_TP) == SPC_COMMAND_PHASE && //コマンドフェーズの 2492: spiBufferIndex == 1) { //1バイト目 2493: // グループ76543210 2494: spiBufferLimit = 0x16c11aa6 >>> ((spiCommandBuffer[0] & 255) >> 5 << 2) & 15; //CDB(Command Descriptor Block)の長さ 2495: } 2496: //!!! ディスクイメージ以外のバッファは溢れてはならない 2497: if (spiBufferIndex == spiBufferLimit && spiBufferCount != 0) { //バッファから排出する必要がある 2498: spiTargetUnit.scuWriteImage (); 2499: if (--spiBufferCount != 0) { 2500: spiBufferIndex = 0; 2501: } 2502: } 2503: } 2504: spiTchTcmTcl--; //0でなかったのだから負になることはない 2505: spiUpdateSSTS (); 2506: if (spiTchTcmTcl == 0 || spiBufferIndex == spiBufferLimit) { //転送終了。最後のブロックでなければspiBufferIndexは巻き戻されている 2507: spiTransferComplete (); 2508: } 2509: } 2510: break; 2511: case SPC_TEMP: //0x17 2512: spiTemp = d; 2513: break; 2514: case SPC_TCH: //0x19 2515: spiTchTcmTcl = d << 16 | (char) spiTchTcmTcl; 2516: spiUpdateSSTS (); 2517: break; 2518: case SPC_TCM: //0x1b 2519: spiTchTcmTcl = spiTchTcmTcl & 0xff00ff | d << 8; 2520: spiUpdateSSTS (); 2521: break; 2522: case SPC_TCL: //0x1d 2523: spiTchTcmTcl = spiTchTcmTcl & 0xffff00 | d; 2524: spiUpdateSSTS (); 2525: break; 2526: } 2527: } //spiWrite(int,int) 2528: 2529: //spiTransferComplete () 2530: // 転送終了 2531: public void spiTransferComplete () { 2532: if ((spiSsts & SPC_SSTS_TRIP) != 0) { 2533: spiSetInterruptStatus (SPC_INTS_CC); //転送終了 2534: spiSsts &= ~(SPC_SSTS_BUSY | SPC_SSTS_TRIP); 2535: } 2536: switch (spiPctl & SPC_PCTL_TP) { //転送フェーズ 2537: case SPC_DATA_OUT_PHASE: //データアウトフェーズの転送が終了した 2538: { 2539: int oc = spiCommandBuffer[0] & 255; //オペレーションコード 2540: if (oc == 0x15) { //Mode Select(6) 2541: if (SPC_REPORT_UNIMPLEMENTED_COMMAND) { //未実装コマンドを表示する 2542: StringBuilder sb = new StringBuilder (); 2543: sb.append (String.format ("%08x DataOutPhaseComplete(0x%02x(%s)) [", XEiJ.regPC0, oc, SPC_COMMAND_NAME[oc])); 2544: for (int i = 0; i < spiBufferLimit; i++) { 2545: if (i > 0) { 2546: sb.append (','); 2547: } 2548: sb.append (String.format ("0x%02x", spiDataOutBuffer[i] & 255)); 2549: } 2550: sb.append (']'); 2551: System.out.println (sb.toString ()); 2552: } 2553: } 2554: } 2555: spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 2556: break; 2557: case SPC_DATA_IN_PHASE: //データインフェーズの転送が終了した 2558: spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 2559: break; 2560: case SPC_COMMAND_PHASE: //コマンドフェーズの転送が終了した 2561: { 2562: int oc = spiCommandBuffer[0] & 255; //オペレーションコード 2563: if (spiBufferIndex == 1) { 2564: // グループ76543210 2565: spiBufferLimit = 0x11c11aa6 >>> (oc >> 5 << 2) & 15; //CDB(Command Descriptor Block)の長さ 2566: if (spiBufferIndex < spiBufferLimit) { 2567: //次のデータを要求する 2568: spiPsns |= SPC_PSNS_REQ; //ターゲットがREQを1にする 2569: HD63450.dmaFallPCL (spiDMAChannel); 2570: break; 2571: } 2572: } 2573: spiTargetUnit.scuCommand (oc); //コマンドを実行する 2574: } 2575: break; 2576: case SPC_STATUS_PHASE: //ステータスフェーズの転送が終了した 2577: spiMessageInPhase (); //メッセージインフェーズに移行する 2578: break; 2579: case SPC_MESSAGE_OUT_PHASE: //メッセージアウトフェーズの転送が終了した 2580: spiCommandPhase (); //コマンドフェーズに移行する 2581: break; 2582: case SPC_MESSAGE_IN_PHASE: //メッセージインフェーズの転送が終了した 2583: spiBusFreePhase (); //バスフリーフェーズに移行する 2584: break; 2585: } 2586: } //spiTransferComplete() 2587: 2588: //spiBusFreePhase () 2589: // バスフリーフェーズに移行する 2590: public void spiBusFreePhase () { 2591: if (SPC_DEBUG_PHASE) { 2592: System.out.printf ("%08x spiBusFreePhase()\n", XEiJ.regPC0); 2593: } 2594: spiWriteHandle = null; 2595: spiReadHandle = null; 2596: spiSsts &= ~SPC_SSTS_INIT; //自分がイニシエータではなくなる 2597: spiPsns = 0; 2598: spiTargetUnit = null; 2599: if ((spiPctl & SPC_PCTL_IE) != 0) { 2600: spiSetInterruptStatus (SPC_INTS_DC); 2601: } 2602: } //spiBusFreePhase() 2603: 2604: //spiCommandPhase () 2605: // コマンドフェーズに移行する 2606: public void spiCommandPhase () { 2607: if (SPC_DEBUG_PHASE) { 2608: System.out.printf ("%08x spiCommandPhase()\n", XEiJ.regPC0); 2609: } 2610: spiWriteHandle = spiCommandBuffer; 2611: spiReadHandle = null; 2612: spiBufferIndex = 0; 2613: spiBufferLimit = 1; 2614: spiUpdateSSTS (); 2615: spiPsns = SPC_PSNS_REQ | SPC_COMMAND_PHASE; 2616: HD63450.dmaFallPCL (spiDMAChannel); 2617: } //spiCommandPhase() 2618: 2619: //spiDataInPhase (handle, index, limit, count) 2620: // データインフェーズに移行する 2621: public void spiDataInPhase (byte[] handle, int index, int limit, int count) { 2622: if (SPC_DEBUG_PHASE) { 2623: System.out.printf ("%08x spiDataInPhase(handle,0x%08x,0x%08x,0x%08x)\n", XEiJ.regPC0, index, limit, count); 2624: } 2625: spiWriteHandle = null; 2626: spiReadHandle = handle; 2627: spiBufferIndex = index; 2628: spiBufferLimit = limit; 2629: spiBufferCount = count; 2630: spiUpdateSSTS (); 2631: spiPsns = SPC_PSNS_REQ | SPC_DATA_IN_PHASE; 2632: HD63450.dmaFallPCL (spiDMAChannel); 2633: } //spiDataInPhase(byte[],int,int,int) 2634: 2635: //spiDataOutPhase (handle, index, limit, count) 2636: // データアウトフェーズに移行する 2637: public void spiDataOutPhase (byte[] handle, int index, int limit, int count) { 2638: if (SPC_DEBUG_PHASE) { 2639: System.out.printf ("%08x spiDataOutPhase(handle,0x%08x,0x%08x,0x%08x)\n", XEiJ.regPC0, index, limit, count); 2640: } 2641: spiWriteHandle = handle; 2642: spiReadHandle = null; 2643: spiBufferIndex = index; 2644: spiBufferLimit = limit; 2645: spiBufferCount = count; 2646: spiUpdateSSTS (); 2647: spiPsns = SPC_PSNS_REQ | SPC_DATA_OUT_PHASE; 2648: HD63450.dmaFallPCL (spiDMAChannel); 2649: } //spiDataOutPhase(byte[],int,int,int) 2650: 2651: //spiStatusPhase (status, message) 2652: // ステータスフェーズに移行する 2653: // status 2=センスデータあり。spiSenseBufferを設定しておくこと 2654: // message 常に0 2655: public void spiStatusPhase (int status, int message) { 2656: if (SPC_DEBUG_PHASE) { 2657: System.out.printf ("%08x spiStatusPhase(0x%02x)\n", XEiJ.regPC0, status); 2658: } 2659: spiStatusBuffer[0] = (byte) status; 2660: spiMessageInBuffer[0] = (byte) message; 2661: spiWriteHandle = null; 2662: spiReadHandle = spiStatusBuffer; 2663: spiBufferIndex = 0; 2664: spiBufferLimit = 1; 2665: spiTemp = spiStatusBuffer[0] & 255; 2666: spiUpdateSSTS (); 2667: spiPsns = SPC_PSNS_REQ | SPC_STATUS_PHASE; 2668: HD63450.dmaFallPCL (spiDMAChannel); 2669: } //spiStatusPhase(int,int) 2670: 2671: //spiMessageInPhase () 2672: // メッセージインフェーズに移行する 2673: public void spiMessageInPhase () { 2674: if (SPC_DEBUG_PHASE) { 2675: System.out.printf ("%08x spiMessageInPhase(0x%02x)\n", XEiJ.regPC0, spiMessageInBuffer[0] & 255); 2676: } 2677: spiWriteHandle = null; 2678: spiReadHandle = spiMessageInBuffer; 2679: spiBufferIndex = 0; 2680: spiBufferLimit = 1; 2681: spiTemp = spiMessageInBuffer[0] & 255; 2682: spiUpdateSSTS (); 2683: spiPsns = SPC_PSNS_REQ | SPC_MESSAGE_IN_PHASE; 2684: HD63450.dmaFallPCL (spiDMAChannel); 2685: } //spiMessageInPhase() 2686: 2687: //spiMessageOutPhase () 2688: // メッセージアウトフェーズに移行する 2689: public void spiMessageOutPhase () { 2690: if (SPC_DEBUG_PHASE) { 2691: System.out.printf ("%08x spiMessageOutPhase(0x%02x)\n", XEiJ.regPC0, spiMessageOutBuffer[0] & 255); 2692: } 2693: spiWriteHandle = spiMessageOutBuffer; 2694: spiReadHandle = null; 2695: spiBufferIndex = 0; 2696: spiBufferLimit = 1; 2697: spiUpdateSSTS (); 2698: spiPsns = SPC_PSNS_REQ | SPC_MESSAGE_OUT_PHASE; 2699: HD63450.dmaFallPCL (spiDMAChannel); 2700: } //spiMessageOutPhase() 2701: 2702: //spiSetInterruptStatus (ints) 2703: public void spiSetInterruptStatus (int ints) { 2704: //int oldInts = spiInts; 2705: if ((ints & ~SPC_INTS_TO) != 0) { //TO以外をセットするとき 2706: spiInts &= ~SPC_INTS_TO; //TOをクリア 2707: } 2708: spiInts |= ints; 2709: if (//oldInts != spiInts && //0→1 2710: (spiSctl & SPC_SCTL_IE) != 0) { //Interrupt Enable 2711: if (spiExpansion) { 2712: XEiJ.eb2Interrupt (XEiJ.EB2_SPC_REQUEST); 2713: } else { 2714: IOInterrupt.ioiSpcFall (); 2715: IOInterrupt.ioiSpcRise (); 2716: } 2717: } 2718: } //spiSetInterruptStatus(int) 2719: 2720: //spiUpdateSSTS () 2721: // SSTSのTC0,DF,DEを更新する 2722: public void spiUpdateSSTS () { 2723: spiSsts = (spiSsts & ~(SPC_SSTS_TC0 | SPC_SSTS_DF | SPC_SSTS_DE) | 2724: ((spiPctl & SPC_PCTL_IO) == 0 ? //Out 2725: (spiTchTcmTcl == 0 ? SPC_SSTS_TC0 : 0) | 2726: SPC_SSTS_DE //出力のときFIFOは常にEmptyでFullになることはない 2727: : //In 2728: (spiTchTcmTcl != 0 ? 0 : SPC_SSTS_TC0 | SPC_SSTS_DE) | //入力のとき残りが0バイトでなければFIFOはEmptyではない 2729: (spiTchTcmTcl < 8 ? 0 : SPC_SSTS_DF))); //入力のとき残りが8バイト未満ならばFIFOはFullではない 2730: } //spiUpdateSSTS () 2731: 2732: } //class SPCChip 2733: 2734: 2735: 2736: //======================================================================================== 2737: //$$SCU SCSI HDユニット 2738: // SCSIハードディスクのユニット 2739: public static class SCUnit extends AbstractUnit { 2740: 2741: public SPCChip scuChip; //接続されているSCSIポート 2742: public int scuMode; //動作モード。1=SCSI-1,3=SCSI-2 2743: public RandomAccessFile scuRaf; 2744: public int scuBytesPerRecord; //1レコードあたりのバイト数(2の累乗) 2745: public int scuDiskEndRecord; //ディスクのレコード数。0=挿入されていない 2746: public long scuDiskEndByte; //ディスクのバイト数 2747: public byte[] scuRecordImage; 2748: public HDMedia scuSASIMedia; //SASIモード 2749: 2750: //new SCUnit (number, chip) 2751: // コンストラクタ 2752: public SCUnit (int number, SPCChip chip) { 2753: super (number); 2754: scuChip = chip; 2755: scuMode = 1; //リセレクションがないのでSCSI-1 2756: scuRaf = null; 2757: scuBytesPerRecord = 512; 2758: scuDiskEndRecord = 0; 2759: scuDiskEndByte = 0L; 2760: scuRecordImage = new byte[SPC_MAX_BYTES_PER_BLOCK]; 2761: scuSASIMedia = null; 2762: } 2763: 2764: public void scuReset (SPCChip chip) { 2765: scuChip = chip; 2766: }; //scuReset 2767: 2768: //numberOfModes = unit.abuGetNumberOfModes () 2769: // モードの数を返す 2770: // モードボタンを表示するときオーバーライドする 2771: @Override public int abuGetNumberOfModes () { 2772: return 2; 2773: } //unit.abuGetNumberOfModes() 2774: 2775: //image = unit.abuGetModeIcon (mode, enabled) 2776: // モードボタンのアイコンを返す 2777: // モードボタンを表示するときオーバーライドする 2778: @Override public ImageIcon abuGetModeIcon (int mode, boolean enabled) { 2779: return (enabled ? 2780: mode == 0 ? LnF.LNF_HD_ICON : LnF.LNF_CD_ICON : 2781: mode == 0 ? LnF.LNF_HD_DISABLED_ICON : LnF.LNF_CD_DISABLED_ICON); 2782: } //unit.abuGetModeIcon(int,boolean) 2783: 2784: //text = unit.abuGetModeTextEn (mode, enabled) 2785: // モードボタンの英語のツールチップテキストを返す 2786: // モードボタンを表示するときオーバーライドする 2787: @Override public String abuGetModeTextEn (int mode, boolean enabled) { 2788: return (enabled ? 2789: mode == 0 ? "Hard disk mode → CD-ROM mode" : "CD-ROM mode → Hard disk mode" : 2790: null); 2791: } //unit.abuGetModeTextEn(int,boolean) 2792: 2793: //text = unit.abuGetModeTextJa (mode, enabled) 2794: // モードボタンの日本語のツールチップテキストを返す 2795: // モードボタンを表示するときオーバーライドする 2796: @Override public String abuGetModeTextJa (int mode, boolean enabled) { 2797: return (enabled ? 2798: mode == 0 ? "ハードディスクモード → CD-ROM モード" : "CD-ROM モード → ハードディスクモード" : 2799: null); 2800: } //unit.abuGetModeTextJa(int,boolean) 2801: 2802: //unit.connect (disconnectable) 2803: // 接続する 2804: @Override protected void connect (boolean disconnectable) { 2805: super.connect (disconnectable); 2806: } 2807: 2808: //unit.disconnect () 2809: // 切り離す 2810: @Override protected void disconnect () { 2811: super.disconnect (); 2812: } 2813: 2814: //success = unit.eject () 2815: // イジェクトする 2816: @Override protected boolean eject () { 2817: if (scuRaf != null) { //クローズする 2818: try { 2819: scuRaf.close (); 2820: } catch (IOException ioe) { 2821: } 2822: scuRaf = null; 2823: } 2824: String path = abuPath; //イジェクトされたイメージファイルのパス。super.eject()を呼び出す前にコピーすること 2825: if (!super.eject ()) { //イジェクトする 2826: return false; 2827: } 2828: if (path.length () != 0) { //挿入されていたとき 2829: spcAddHistory (new File (path).getAbsoluteFile ()); 2830: System.out.println (Multilingual.mlnJapanese ? 2831: path + " を sc" + abuNumber + " から切り離しました" : 2832: path + " was removed from sc" + abuNumber); 2833: } 2834: scuDiskEndRecord = 0; 2835: scuDiskEndByte = 0L; 2836: return true; 2837: } 2838: 2839: //success = unit.open () 2840: // 開くダイアログを開く 2841: @Override protected boolean open () { 2842: if (!super.open ()) { 2843: return false; 2844: } 2845: SPC.spcOpenUnit = abuNumber; 2846: if (SPC.spcOpenDialog == null) { 2847: SPC.spcOpenDialog = new OpenDialog (); 2848: SPC.spcOpenDialog.setReadOnly (Settings.sgsGetOnOff ("screadonly")); 2849: SPC.spcOpenDialog.setReboot (Settings.sgsGetOnOff ("scappreboot")); 2850: for (File[] files : SPC.spcOpenHistory) { 2851: SPC.spcOpenDialog.addHistory (files); 2852: } 2853: SPC.spcOpenHistory.clear (); 2854: } 2855: SPC.spcOpenDialog.rescanCurrentDirectory (); //挿入されているファイルが変わると選択できるファイルも変わるのでリストを作り直す 2856: XEiJ.pnlExitFullScreen (true); 2857: SPC.spcOpenDialog.setVisible (true); 2858: return true; 2859: } //unit.open() 2860: 2861: //success = unit.insert (path, writeProtected) 2862: // 挿入する 2863: @Override protected boolean insert (String path, boolean writeProtected) { 2864: if (SPC.spcIsInserted (path)) { //既に挿入されている 2865: return false; 2866: } 2867: if (!super.insert (path, writeProtected)) { //挿入できなかった 2868: return false; 2869: } 2870: return true; 2871: } //unit.insert(String) 2872: 2873: //loaded = unit.load (path) 2874: // 読み込む 2875: @Override protected boolean load (String path) { 2876: File file = new File (path); 2877: scuSASIMedia = null; 2878: long longLength = file.length (); 2879: for (HDMedia media : HDMedia.HDM_ARRAY) { 2880: if (media.humDiskEndByte == longLength) { //ファイルサイズが一致 2881: scuSASIMedia = media; 2882: break; 2883: } 2884: } 2885: if (scuSASIMedia != null) { //SASIハードディスク 2886: abuSetMode (0); 2887: } else if (SPC.spcIsHds (file, true)) { //拡張子がHDSで装置初期化されている 2888: abuSetMode (0); 2889: } else if (SPC.spcIsIso (file)) { //拡張子がISO 2890: abuSetMode (1); 2891: protect (false); //開くときに書き込みを禁止した場合はイジェクトするまで書き込みを許可できない 2892: } else { 2893: return false; 2894: } 2895: try { 2896: scuRaf = new RandomAccessFile (file, abuWriteProtected ? "r" : "rw"); //RandomAccessFileに"w"というモードはない 2897: } catch (IOException ioe) { 2898: return false; //開けなかった。SPC.spcIsHdsまたはSPC.spcIsISOのチェックを通っても書き込みモードでは開けない可能性がある 2899: } 2900: if (scuSASIMedia != null) { //SASIハードディスク 2901: scuDiskEndByte = longLength; 2902: scuBytesPerRecord = 256; 2903: scuDiskEndRecord = (int) (scuDiskEndByte / scuBytesPerRecord); 2904: } else if (abuCurrentMode == 0) { //ハードディスク 2905: byte[] bb = new byte[512]; 2906: scuDiskEndRecord = 0; 2907: try { 2908: scuRaf.seek (0L); 2909: scuRaf.read (bb, 0, 512); //セクタ0を読み込む 2910: if (ByteArray.byaRls (bb, 0) == ('X' << 24 | '6' << 16 | '8' << 8 | 'S') && 2911: ByteArray.byaRls (bb, 4) == ('C' << 24 | 'S' << 16 | 'I' << 8 | '1')) { //X68SCSI1マジックがある 2912: scuBytesPerRecord = ByteArray.byaRwz (bb, 8); //1レコードあたりのバイト数(2の累乗) 2913: scuDiskEndRecord = ByteArray.byaRls (bb, 10); //ディスクのレコード数 2914: if (ByteArray.byaRls (bb, 42) == ('S' << 24 | 'x' << 16 | 'S' << 8 | 'I')) { //SxSI 2915: scuDiskEndRecord <<= 1; 2916: } 2917: } else if (bb[0x0000] == (byte) 0xeb && 2918: bb[0x01fe] == (byte) 0x55 && 2919: bb[0x01ff] == (byte) 0xaa) { //IBMスーパーフロッピー 2920: scuBytesPerRecord = 0x0200; //1レコードあたりのバイト数(2の累乗) 2921: scuDiskEndRecord = (int) (scuRaf.length () / scuBytesPerRecord); //ディスクのレコード数 2922: } 2923: } catch (IOException ioe) { 2924: } 2925: if (scuDiskEndRecord == 0) { 2926: try { 2927: scuRaf.close (); 2928: } catch (IOException ioe) { 2929: } 2930: scuRaf = null; 2931: return false; 2932: } 2933: scuDiskEndByte = (long) scuBytesPerRecord * scuDiskEndRecord; //ディスクのバイト数 2934: } else { //CD-ROM 2935: byte[] bb = new byte[2048]; 2936: try { 2937: scuRaf.seek (2048L * 16); 2938: scuRaf.read (bb, 0, 2048); //セクタ16を読み込む 2939: } catch (IOException ioe) { 2940: try { 2941: scuRaf.close (); 2942: } catch (IOException ioe2) { 2943: } 2944: scuRaf = null; 2945: return false; //セクタ16を読み込めなかった 2946: } 2947: scuBytesPerRecord = ByteArray.byaRwz (bb, 130); //ブロックのバイト数 2948: scuDiskEndRecord = ByteArray.byaRls (bb, 84); //ボリュームのブロック数 2949: scuDiskEndByte = (long) scuBytesPerRecord * scuDiskEndRecord; //ボリュームのバイト数。整合性はSPC.spcIsIsoで確認済みなのでチェックは省略する 2950: } 2951: System.out.println (Multilingual.mlnJapanese ? 2952: path + " を sc" + abuNumber + " に接続しました" : 2953: path + " was connected to sc" + abuNumber); 2954: return true; 2955: } 2956: 2957: //scuTini () 2958: // 後始末 2959: public void scuTini () { 2960: if (scuRaf != null) { 2961: try { 2962: scuRaf.close (); 2963: } catch (IOException ioe) { 2964: } 2965: scuRaf = null; 2966: } 2967: } //scuTini() 2968: 2969: //scuCommand (oc) 2970: // コマンドを実行する 2971: // セレクションフェーズに成功したのだから装置は接続されているはず 2972: // ロジカルユニットは存在しない可能性がある 2973: public void scuCommand (int oc) { 2974: if (SPC_DEBUG_COMMAND) { 2975: System.out.printf ("%08x scuCommand(0x%02x(%s)) [", XEiJ.regPC0, oc, SPC_COMMAND_NAME[oc]); 2976: for (int i = 0; i < scuChip.spiBufferLimit; i++) { 2977: if (i > 0) { 2978: System.out.print (','); 2979: } 2980: System.out.printf ("0x%02x", scuChip.spiCommandBuffer[i] & 255); 2981: } 2982: System.out.println (']'); 2983: } 2984: int lun = scuChip.spiCommandBuffer[1] >> 5 & 7; //LUN 2985: if (lun != 0) { 2986: scuDoInvalid (); 2987: return; 2988: } 2989: switch (oc) { 2990: case 0x00: //Test Unit Ready 2991: scuDoTestUnitReady (); 2992: break; 2993: case 0x01: //Rezero Unit 2994: scuDoRezeroUnit (); 2995: break; 2996: case 0x03: //Request Sense 2997: scuDoRequestSense (); 2998: break; 2999: case 0x04: //Format Unit 3000: scuDoFormatUnit (); 3001: break; 3002: case 0x06: //Format Block(SASI) 3003: scuDoFormatBlockSASI (); 3004: break; 3005: //case 0x07: //Bad Track Format(SASI) 3006: case 0x08: //Read(6) 3007: scuDoRead6 (); 3008: break; 3009: case 0x0a: //Write(6) 3010: scuDoWrite6 (); 3011: break; 3012: case 0x0b: //Seek(6) 3013: scuDoSeek6 (); 3014: break; 3015: //case 0x0e: //Assign Track(SASI) 3016: case 0x12: //Inquiry 3017: scuDoInquiry (); 3018: break; 3019: case 0x15: //Mode Select(6) 3020: scuDoModeSelect6 (); 3021: break; 3022: //case 0x18: //Copy 3023: case 0x1a: //Mode Sense(6) 3024: scuDoModeSense6 (); 3025: break; 3026: case 0x1b: //Start-Stop Unit 3027: scuStartStopUnit (); 3028: break; 3029: //case 0x1c: //Receive Diagnostic Results 3030: //case 0x1d: //Send Diagnostic 3031: case 0x1e: //Prevent-Allow Medium Removal 3032: scuDoPreventAllowMediumRemoval (); 3033: break; 3034: case 0x25: //Read Capacity 3035: scuDoReadCapacity (); 3036: break; 3037: case 0x28: //Read(10) 3038: scuDoRead10 (); 3039: break; 3040: case 0x2a: //Write(10) 3041: scuDoWrite10 (); 3042: break; 3043: case 0x2b: //Seek(10) 3044: scuDoSeek10 (); 3045: break; 3046: case 0x2e: //Write and Verify(10) 3047: scuDoWriteAndVerify10 (); 3048: break; 3049: case 0x43: //Read TOC 3050: scuDoReadTOC (); 3051: break; 3052: //case 0x2f: //Verify(10) 3053: //case 0x30: //Search Data High(10) 3054: //case 0x31: //Search Data Equal(10) 3055: //case 0x32: //Search Data Low(10) 3056: //case 0x33: //Set Limits(10) 3057: //case 0x34: //Pre-Fetch 3058: //case 0x35: //Synchronize Cache 3059: //case 0x36: //Lock-Unlock Cache 3060: //case 0x37: //Read Defect Data(10) 3061: //case 0x39: //Compare 3062: //case 0x3a: //Copy and Verify 3063: //case 0x3b: //Write Buffer 3064: //case 0x3c: //Read Buffer 3065: //case 0x3e: //Read Long 3066: //case 0x3f: //Write Long 3067: //case 0x40: //Change Definition 3068: //case 0x41: //Write Same 3069: //case 0x4c: //Log Select 3070: //case 0x4d: //Log Sense 3071: //case 0x55: //Mode Select(10) 3072: //case 0x5a: //Mode Sense(10) 3073: //case 0xc1: //Load/Unload SHARP MO 3074: case 0xc2: //Assign Drive(SASI) 3075: scuDoAssignDriveSASI (); 3076: break; 3077: default: //Invalid 3078: if (SPC_REPORT_UNIMPLEMENTED_COMMAND) { //未実装コマンドを表示する 3079: StringBuilder sb = new StringBuilder (); 3080: sb.append (String.format ("%08x scuCommand(0x%02x(%s)) [", XEiJ.regPC0, oc, SPC_COMMAND_NAME[oc])); 3081: for (int i = 0; i < scuChip.spiBufferLimit; i++) { 3082: if (i > 0) { 3083: sb.append (','); 3084: } 3085: sb.append (String.format ("0x%02x", scuChip.spiCommandBuffer[i] & 255)); 3086: } 3087: sb.append (']'); 3088: System.out.println (sb.toString ()); 3089: } 3090: scuDoInvalid (); 3091: } 3092: } //scuCommand(int) 3093: 3094: //scuDoTestUnitReady () 3095: // [0] 0x00 3096: // [1] |LUN###|-----| 3097: // [5] |..|----|Flag|Link| 3098: public void scuDoTestUnitReady () { 3099: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3100: } //scuDoTestUnitReady() 3101: 3102: //scuDoRezeroUnit () 3103: // [0] 0x01 3104: // [1] |LUN###|-----| 3105: // [5] |..|----|Flag|Link| 3106: public void scuDoRezeroUnit () { 3107: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3108: } //scuDoRezeroUnit() 3109: 3110: //scuDoPreventAllowMediumRemoval () 3111: // [0] 0x1e 3112: // [1] |LUN###|-----| 3113: // [4] |-------|Prevent| 3114: // [5] |..|----|Flag|Link| 3115: public void scuDoPreventAllowMediumRemoval () { 3116: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3117: scuUnitAttention (); 3118: return; 3119: } 3120: int prevent = scuChip.spiCommandBuffer[4] & 1; //0=イジェクト許可,1=イジェクト禁止 3121: if (prevent == 0) { //イジェクト許可 3122: allow (); 3123: } else { //イジェクト禁止 3124: prevent (); 3125: } 3126: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3127: } //scuDoPreventAllowMediumRemoval() 3128: 3129: //scuDoRequestSense () 3130: // [0] 0x03 3131: // [1] |LUN###|-----| 3132: // [4] アロケーション長 3133: // [5] |..|----|Flag|Link| 3134: // センスデータを最大nバイトまで転送してからクリアする 3135: // nが0x00のときSCSI-1は4バイトだけ転送するがSCSI-2は転送しない 3136: public void scuDoRequestSense () { 3137: int n = scuChip.spiCommandBuffer[4] & 255; 3138: if (scuMode > 1 && n == 0) { 3139: scuChip.spiSenseBuffer[0] = 0; 3140: scuChip.spiSenseBuffer[2] = 0; 3141: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3142: return ; 3143: } 3144: scuChip.spiDataInPhase (scuChip.spiSenseBuffer, 0, Math.min (n, scuMode == 1 ? 4 : 8), 0); //データインフェーズに移行する 3145: } //scuDoRequestSense() 3146: 3147: //scuDoFormatUnit () 3148: // [0] 0x04 3149: // [1] |LUN###|FmtData|CmpLst|ディフェクトリスト形式###| 3150: // [2] ベンダ固有 3151: // [3][4] インタリーブ 3152: // [5] |..|----|Flag|Link| 3153: public void scuDoFormatUnit () { 3154: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3155: scuUnitAttention (); 3156: return; 3157: } 3158: if (abuWriteProtected) { //書き込みが禁止されている 3159: scuDataProtect (); 3160: return; 3161: } 3162: if (true) { 3163: //イメージファイルをゼロクリアする 3164: final int step = 1024 * 256; //256KB 3165: byte[] zero = new byte[step]; 3166: Arrays.fill (zero, (byte) 0); 3167: try { 3168: scuRaf.seek (0L); 3169: long pos; 3170: for (pos = 0L; pos + step <= scuDiskEndByte; pos += step) { 3171: scuRaf.write (zero); 3172: } 3173: if (pos < scuDiskEndByte) { 3174: scuRaf.write (zero, 0, (int) (scuDiskEndByte - pos)); 3175: } 3176: } catch (IOException ioe) { 3177: } 3178: } 3179: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3180: } //scuDoFormatUnit() 3181: 3182: //scuDoFormatBlockSASI () 3183: // [0] 0x06 3184: // [1][2][3] LUN<<21|論理ブロックアドレス 3185: // [4] インタリーブ 3186: public void scuDoFormatBlockSASI () { 3187: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3188: scuUnitAttention (); 3189: return; 3190: } 3191: if (abuWriteProtected) { //書き込みが禁止されている 3192: scuDataProtect (); 3193: return; 3194: } 3195: if (false) { 3196: //10MBのとき 3197: // 06 00 00 00 06 00 3198: // 06 00 00 21 06 00 3199: // ... 3200: // 06 00 9f 12 06 00 3201: // 06 00 9f 33 06 00 3202: // 33(レコード/トラック)*4(トラック/シリンダ)*309(シリンダ/ボリューム)=40788(レコード/ボリューム)=0x9f51 3203: System.out.printf ("%02x %02x %02x %02x %02x %02x\n", 3204: scuChip.spiCommandBuffer[0] & 255, 3205: scuChip.spiCommandBuffer[1] & 255, 3206: scuChip.spiCommandBuffer[2] & 255, 3207: scuChip.spiCommandBuffer[3] & 255, 3208: scuChip.spiCommandBuffer[4] & 255, 3209: scuChip.spiCommandBuffer[5] & 255); 3210: } 3211: //指定された範囲をゼロクリアする 3212: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 0) & 0x001fffff; //論理ブロックアドレス 3213: final int recordsPerTrack = 33; //レコード/トラック 3214: if (a % recordsPerTrack == 0 && a + recordsPerTrack <= scuDiskEndRecord) { 3215: byte[] zero = new byte[scuBytesPerRecord * recordsPerTrack]; 3216: Arrays.fill (zero, (byte) 0); 3217: try { 3218: scuRaf.seek ((long) scuBytesPerRecord * a); 3219: scuRaf.write (zero); 3220: } catch (IOException ioe) { 3221: } 3222: } else { 3223: scuDoInvalid (); 3224: return; 3225: } 3226: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3227: } 3228: 3229: //scuDoRead6 () 3230: // [0] 0x08 3231: // [1][2][3] LUN<<21|論理ブロックアドレス 3232: // [4] 論理ブロック数 3233: // [5] |..|----|Flag|Link| 3234: public void scuDoRead6 () { 3235: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3236: scuUnitAttention (); 3237: return; 3238: } 3239: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 0) & 0x001fffff; //論理ブロックアドレス 3240: int n = scuChip.spiCommandBuffer[4] & 255; //論理ブロック数 3241: if (n == 0) { 3242: n = 256; 3243: } 3244: if (scuDiskEndRecord < a + n) { //範囲外 3245: scuDoInvalid (); 3246: return; 3247: } 3248: try { 3249: scuRaf.seek ((long) scuBytesPerRecord * a); 3250: scuRaf.read (scuRecordImage, 0, scuBytesPerRecord); 3251: } catch (IOException ioe) { 3252: } 3253: scuChip.spiDataInPhase (scuRecordImage, 0, scuBytesPerRecord, n - 1); //データインフェーズに移行する 3254: } //scuDoRead6() 3255: 3256: //scuReadImage () 3257: public void scuReadImage () { 3258: try { 3259: scuRaf.read (scuRecordImage, 0, scuBytesPerRecord); 3260: } catch (IOException ioe) { 3261: } 3262: } //scuReadImage() 3263: 3264: //scuDoWrite6 () 3265: // [0] 0x0a 3266: // [1][2][3] LUN<<21|論理ブロックアドレス 3267: // [4] 論理ブロック数 3268: // [5] |..|----|Flag|Link| 3269: public void scuDoWrite6 () { 3270: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3271: scuUnitAttention (); 3272: return; 3273: } 3274: if (abuWriteProtected) { //書き込みが禁止されている 3275: scuDataProtect (); 3276: return; 3277: } 3278: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 0) & 0x001fffff; //論理ブロックアドレス 3279: int n = scuChip.spiCommandBuffer[4] & 255; //論理ブロック数 3280: if (n == 0) { 3281: n = 256; 3282: } 3283: if (scuDiskEndRecord < a + n) { //範囲外 3284: scuDoInvalid (); 3285: return; 3286: } 3287: try { 3288: scuRaf.seek ((long) scuBytesPerRecord * a); 3289: } catch (IOException ioe) { 3290: } 3291: scuChip.spiDataOutPhase (scuRecordImage, 0, scuBytesPerRecord, n); //データアウトフェーズに移行する 3292: } //scuDoWrite6() 3293: 3294: //scuWriteImage () 3295: public void scuWriteImage () { 3296: int oc = scuChip.spiCommandBuffer[0] & 255; 3297: if (oc == 0x0a || //Write(6) 3298: oc == 0x2a || //Write(10) 3299: oc == 0x2e) { //Write and Verify(10) 3300: try { 3301: scuRaf.write (scuRecordImage, 0, scuBytesPerRecord); 3302: } catch (IOException ioe) { 3303: } 3304: } 3305: } //scuWriteImage() 3306: 3307: //scuDoSeek6 () 3308: // [0] 0x0b 3309: // [1][2][3] LUN<<21|論理ブロックアドレス 3310: // [5] |..|----|Flag|Link| 3311: public void scuDoSeek6 () { 3312: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3313: scuUnitAttention (); 3314: return; 3315: } 3316: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 0) & 0x001fffff; //論理ブロックアドレス 3317: if (scuDiskEndRecord < a) { //範囲外 3318: scuDoInvalid (); 3319: return; 3320: } 3321: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3322: } //scuDoSeek6() 3323: 3324: //scuDoInquiry () 3325: // [0] 0x12 3326: // [1] |LUN###|----|EVPD| 3327: // [2] ページコード 3328: // [4] アロケーション長 3329: // [5] |..|----|Flag|Link| 3330: //!!! EVPD==0のみ対応 3331: // 例 3332: // 0000 05 クォリファイア=0,デバイスタイプコード=5 3333: // 0001 80 RMB=1(リムーバブル),デバイスタイプ修飾子=0 3334: // 0002 02 ISOバージョン=0,ECMAバージョン=0,ANSIバージョン=2 3335: // 0003 02 AENC=0,TermlOP=0,レスポンスデータ形式=2 3336: // 0004 1f 追加データ長=31 3337: // 0005 00 3338: // 0006 00 3339: // 0007 18 RelAdr=0,WBus32=0,WBus16=0,Sync=1,Linked=1,CmdQue=0,SftRe=0 3340: // 0008 53 4f 4e 59 20 20 20 20 ベンダID="SONY " 3341: // 0010 43 44 2d 52 4f 4d 20 43 44 55 2d 35 35 53 20 20 プロダクトID="CD-ROM CDU-55S " 3342: // 0020 31 2e 30 74 プロダクト版数="1.0t" 3343: public void scuDoInquiry () { 3344: int evpd = scuChip.spiCommandBuffer[1] & 1; 3345: int pagecode = scuChip.spiCommandBuffer[2] & 255; //ページコード 3346: int n = scuChip.spiCommandBuffer[4] & 255; //アロケーション長 3347: if (evpd == 0) { //スタンダードInquiry情報 3348: scuChip.spiDataInBuffer[0] = (byte) (abuCurrentMode == 0 ? SPC_DIRECT_ACCESS_DEVICE : //ダイレクトアクセスデバイス。クォリファイアは0 3349: SPC_CDROM_DEVICE); //CD-ROMデバイス 3350: scuChip.spiDataInBuffer[1] = (byte) (SPC_REMOVABLE_HDD ? 1 << 7 : 0); //0=固定,1=リムーバブル 3351: scuChip.spiDataInBuffer[2] = (byte) (scuMode == 1 ? 1 : 2); //ISO/ECMA/ANSIバージョン。SCSI-1/SCSI-2 3352: scuChip.spiDataInBuffer[3] = (byte) (scuMode == 1 ? 1 : 2); //レスポンスデータ形式。SCSI-1/SCSI-2 3353: scuChip.spiDataInBuffer[4] = 31; //追加データ長 3354: scuChip.spiDataInBuffer[5] = 0; //予約 3355: scuChip.spiDataInBuffer[6] = 0; //予約 3356: scuChip.spiDataInBuffer[7] = 0; //サポート機能なし 3357: ByteArray.byaWstr (scuChip.spiDataInBuffer, 8, ( 3358: abuCurrentMode == 0 ? //ハードディスク 3359: // 111111 3360: //123456789012345 3361: "XEiJ " + //ベンダID(ASCII 8文字) 3362: "Hard Disk " + //プロダクトID(ASCII 16文字)。ASCIIに限られるがイメージファイル名を入れてもよい 3363: "1.0 " //プロダクト版数(ASCII 4文字) 3364: : //CD-ROM 3365: "XEiJ " + //ベンダID(ASCII 8文字) 3366: "CD-ROM " + //プロダクトID(ASCII 16文字)。ASCIIに限られるがイメージファイル名を入れてもよい 3367: "1.0 ")); //プロダクト版数(ASCII 4文字) 3368: scuChip.spiDataInPhase (scuChip.spiDataInBuffer, 0, Math.min (36, n), 0); //データインフェーズに移行する 3369: } else { //VPD情報 3370: //!!! 3371: if (SPC_REPORT_UNIMPLEMENTED_COMMAND) { 3372: System.out.println (String.format ("%08x Inquiry with EVPD==1\n", XEiJ.regPC0)); 3373: } 3374: scuDoInvalid (); 3375: } 3376: } //scuDoInquiry() 3377: 3378: //scuDoModeSelect6 () 3379: // [0] 0x15 3380: // [1] |LUN###|PF|---|SP| 3381: // [4] パラメータリスト長 3382: // [5] コントロールバイト 3383: public void scuDoModeSelect6 () { 3384: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3385: scuUnitAttention (); 3386: return; 3387: } 3388: int n = scuChip.spiCommandBuffer[4] & 255; //パラメータリスト長 3389: scuChip.spiDataOutPhase (scuChip.spiDataOutBuffer, 0, n, 0); //データアウトフェーズに移行する 3390: } //scuDoModeSelect6() 3391: 3392: //scuDoModeSense6 () 3393: // [0] 0x1a 3394: // [1] |LUN###|R|DBD|---| 3395: // [2] |PC##|ページコード######| 3396: // [4] アロケーション長 3397: // [5] |..|----|Flag|Link| 3398: public void scuDoModeSense6 () { 3399: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3400: scuUnitAttention (); 3401: return; 3402: } 3403: int page = scuChip.spiCommandBuffer[2] & 63; //ページコード 3404: if (!(page == 0x00 || page == 0x3f)) { 3405: scuDoInvalid (); 3406: return; 3407: } 3408: int n = scuChip.spiCommandBuffer[4] & 255; //アロケーション長 3409: scuChip.spiDataInBuffer[0] = 12 - 1; //センスデータ長 3410: scuChip.spiDataInBuffer[1] = 0; //メディアタイプ 3411: scuChip.spiDataInBuffer[2] = (byte) (abuWriteProtected ? 1 << 7 : 0 << 7); //ライトプロテクト 3412: scuChip.spiDataInBuffer[3] = 8; //ブロックディスクリプタ長 3413: //ブロックディスクリプタ1 3414: ByteArray.byaWl (scuChip.spiDataInBuffer, 4, 0 << 24 | scuDiskEndRecord); //デンシティコード,ブロック数 3415: ByteArray.byaWl (scuChip.spiDataInBuffer, 8, scuBytesPerRecord); //ブロック長 3416: scuChip.spiDataInPhase (scuChip.spiDataInBuffer, 0, Math.min (12, n), 0); //データインフェーズに移行する 3417: } //scuDoModeSense6() 3418: 3419: //scuStartStopUnit () 3420: // [0] 0x1b 3421: // [1] |LUN###|-----| 3422: // [4] |------|LoEj|Start| 3423: // [5] |..|----|Flag|Link| 3424: public void scuStartStopUnit () { 3425: int loejStart = scuChip.spiCommandBuffer[4] & 3; //LoEj|Start 3426: if (loejStart == 2) { //イジェクト 3427: eject (); 3428: } 3429: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3430: } //scuStartStopUnit() 3431: 3432: //scuDoReadCapacity () 3433: // [0] 0x25 3434: // [1] |LUN###|----|RelAdr| 3435: // [2][3][4][5] 論理ブロックアドレス 3436: // [8] |-------|PMI| 3437: // [9] |..|----|Flag|Link| 3438: // 3439: // 本来の仕様 3440: // Read Capacityが返す値は論理ブロック数ではなくて最終論理ブロックアドレスである 3441: // 論理ブロックアドレスは0から始まるので、論理ブロック数は最終論理ブロックアドレス+1に等しい 3442: // FORMAT.XのSCSIハードディスクに関する動作 3443: // 装置初期化 3444: // 先頭セクタの+10にRead Capacityが返した値を書き込む 3445: // 領域確保 3446: // 先頭セクタの+10に書かれている値またはRead Capacityが返した値を論理ブロック数と見なして容量を計算する 3447: // すなわち、FORMAT.XはRead Capacityが返す最終論理ブロックアドレスを論理ブロック数と誤解している 3448: // 結論 3449: // 他の機種では先頭セクタに最終論理ブロックアドレスが書かれていることが多いが、 3450: // X68000のSCSIハードディスクの先頭セクタの+10に書かれている値は最終論理ブロックアドレスではなくて論理ブロック数である 3451: // 辻褄合わせ 3452: // Read Capacityが返す値は、実行中のプロセスがFORMAT.Xならば論理ブロック数、それ以外は最終論理ブロックアドレスとする 3453: public void scuDoReadCapacity () { 3454: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3455: scuUnitAttention (); 3456: return; 3457: } 3458: int pmi = scuChip.spiCommandBuffer[8] & 1; //0=全体の末尾,1=指定されたアドレスから連続してアクセスできる領域の末尾 3459: int pmm = MainMemory.mmrHumanPmm (); //Human68kの実行中のプロセスのメモリ管理テーブルのアドレス 3460: boolean formatx = (pmi == 0 && //_S_READCAPは0 3461: 0 <= pmm && //Human68kのバージョンと実行中のプロセスのメモリ管理テーブルのアドレスの確認 3462: ((MC68060.mmuPeekByteSign (pmm + 0x64, 5) == 2 && //FORMAT2.Xのモジュール番号 3463: MC68060.mmuPeekLong (pmm + 0x30, 5) - (pmm + 256) == 68088 && //FORMAT2.X version 2.31のtext+dataのサイズ 3464: "FORMAT.X".equalsIgnoreCase (MC68060.mmuPeekStringZ (pmm + 0xc4, 5))) || //実行ファイル名 3465: (MC68060.mmuPeekLong (pmm + 0x30, 5) - (pmm + 256) == 0x6076 + 0x0004 && //SCSIFORMAT.Xのtext+dataのサイズ 3466: "SCSIFORMAT.X".equalsIgnoreCase (MC68060.mmuPeekStringZ (pmm + 0xc4, 5))))); //実行ファイル名 3467: ByteArray.byaWl (scuChip.spiDataInBuffer, 0, formatx ? scuDiskEndRecord : scuDiskEndRecord - 1); //実行中のプロセスがFORMAT.XまたはSCSIFORMAT.Xならば論理ブロック数、それ以外は最終論理ブロックアドレスを返す 3468: ByteArray.byaWl (scuChip.spiDataInBuffer, 4, scuBytesPerRecord); //ブロック長 3469: scuChip.spiDataInPhase (scuChip.spiDataInBuffer, 0, 8, 0); //データインフェーズに移行する 3470: } //scuDoReadCapacity 3471: 3472: //scuDoRead10 () 3473: // [0] 0x28 3474: // [1] |LUN###|DPO|FUA|--|RelAdr| 3475: // [2][3][4][5] 論理ブロックアドレス 3476: // [7][8] 論理ブロック数 3477: // [9] |..|----|Flag|Link| 3478: public void scuDoRead10 () { 3479: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3480: scuUnitAttention (); 3481: return; 3482: } 3483: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 2); //論理ブロックアドレス 3484: int n = ByteArray.byaRwz (scuChip.spiCommandBuffer, 7); //論理ブロック数 3485: if (scuDiskEndRecord < a + n) { //範囲外 3486: scuDoInvalid (); 3487: return; 3488: } 3489: if (n == 0) { 3490: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3491: return; 3492: } 3493: try { 3494: scuRaf.seek ((long) scuBytesPerRecord * a); 3495: scuRaf.read (scuRecordImage, 0, scuBytesPerRecord); 3496: } catch (IOException ioe) { 3497: } 3498: scuChip.spiDataInPhase (scuRecordImage, 0, scuBytesPerRecord, n - 1); //データインフェーズに移行する 3499: } //scuDoRead10() 3500: 3501: //scuDoWrite10 () 3502: // [0] 0x2a 3503: // [1] |LUN###|DPO|FUA|--|RelAdr| 3504: // [2][3][4][5] 論理ブロックアドレス 3505: // [7][8] 論理ブロック数 3506: // [9] |..|----|Flag|Link| 3507: public void scuDoWrite10 () { 3508: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3509: scuUnitAttention (); 3510: return; 3511: } 3512: if (abuWriteProtected) { //書き込みが禁止されている 3513: scuDataProtect (); 3514: return; 3515: } 3516: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 2); //論理ブロックアドレス 3517: int n = ByteArray.byaRwz (scuChip.spiCommandBuffer, 7); //論理ブロック数 3518: if (scuDiskEndRecord < a + n) { //範囲外 3519: scuDoInvalid (); 3520: return; 3521: } 3522: if (n == 0) { 3523: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3524: return; 3525: } 3526: try { 3527: scuRaf.seek ((long) scuBytesPerRecord * a); 3528: } catch (IOException ioe) { 3529: } 3530: scuChip.spiDataOutPhase (scuRecordImage, 0, scuBytesPerRecord, n); //データアウトフェーズに移行する 3531: } //scuDoWrite10() 3532: 3533: //scuDoSeek10 () 3534: // [0] 0x2b 3535: // [1] |LUN###|DPO|FUA|--|RelAdr| 3536: // [2][3][4][5] 論理ブロックアドレス 3537: // [9] |..|----|Flag|Link| 3538: public void scuDoSeek10 () { 3539: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3540: scuUnitAttention (); 3541: return; 3542: } 3543: int a = ByteArray.byaRls (scuChip.spiCommandBuffer, 2); //論理ブロックアドレス 3544: if (scuDiskEndRecord < a) { //範囲外 3545: scuDoInvalid (); 3546: return; 3547: } 3548: scuChip.spiStatusPhase (SPC_GOOD, SPC_COMMAND_COMPLETE); //エラーなしでステータスフェーズに移行する 3549: } //scuDoSeek10() 3550: 3551: //scuDoWriteAndVerify10 () 3552: // [0] 0x2e 3553: // [1] |LUN###|DPO|Reserved##|BytChk|RelAdr| 3554: // [2][3][4][5] 論理ブロックアドレス 3555: // [7][8] 論理ブロック数 3556: // [9] |..|----|Flag|Link| 3557: public void scuDoWriteAndVerify10 () { 3558: scuDoWrite10 (); 3559: } //scuDoWriteAndVerify10 3560: 3561: //scuDoReadTOC () 3562: // [0] 0x43 3563: // [1] |LUN###|---|MSF|-| 3564: // [6] 開始トラック 3565: // [7][8] アロケーション長 3566: // [9] コントロールバイト 3567: // 例: 3568: // MSF=0 3569: // 01: 00 3a 01 06 00 14 01 00 00 00 00 00 3570: // 02: 00 32 01 06 00 10 02 00 00 02 76 b0 3571: // 03: 00 2a 01 06 00 10 03 00 00 02 bf 7e 3572: // 04: 00 22 01 06 00 10 04 00 00 03 0e 3b 3573: // 05: 00 1a 01 06 00 10 05 00 00 03 96 3c 3574: // 06: 00 12 01 06 00 10 06 00 00 03 d2 e0 3575: // aa: 00 0a 01 06 00 10 aa 00 00 04 1b d2 3576: // MSF=1 3577: // 01: 00 3a 01 06 00 14 01 00 00 00 02 00 (0x00*60+(0x02-2))*75+0x00=0x000000 3578: // 02: 00 32 01 06 00 10 02 00 00 23 36 38 (0x23*60+(0x36-2))*75+0x38=0x0276b0 3579: // 03: 00 2a 01 06 00 10 03 00 00 28 03 13 (0x28*60+(0x03-2))*75+0x13=0x02bf7e 3580: // 04: 00 22 01 06 00 10 04 00 00 2c 20 01 (0x2c*60+(0x20-2))*75+0x01=0x030e3b 3581: // 05: 00 1a 01 06 00 10 05 00 00 34 10 12 (0x34*60+(0x10-2))*75+0x12=0x03963c 3582: // 06: 00 12 01 06 00 10 06 00 00 37 2b 11 (0x37*60+(0x2b-2))*75+0x11=0x03d2e0 3583: // aa: 00 0a 01 06 00 10 aa 00 00 3b 34 10 (0x3b*60+(0x34-2))*75+0x10=0x041bd2 3584: public void scuDoReadTOC () { 3585: if (abuCurrentMode == 0) { //ハードディスク 3586: scuDoInvalid (); 3587: return; 3588: } 3589: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3590: scuUnitAttention (); 3591: return; 3592: } 3593: boolean msf = (scuChip.spiCommandBuffer[1] & 2) != 0; //true=MSFアドレス形式,false=論理ブロックアドレス形式 3594: int startTrack = scuChip.spiCommandBuffer[6] & 255; //開始トラック 3595: int allocLength = ByteArray.byaRwz (scuChip.spiCommandBuffer, 7); //アロケーション長 3596: if (startTrack == 0) { 3597: startTrack = 1; 3598: } 3599: int dataLength; 3600: if (startTrack <= 1) { //データトラックとリードアウトトラック 3601: dataLength = 4 + 8 * 2; //データの長さ。自分を含む 3602: ByteArray.byaWw (scuChip.spiDataInBuffer, 0, 2 + 8 * 2); //TOCデータ長。要求されたサイズに関わらず最後までの長さを返す。自分を含まない 3603: scuChip.spiDataInBuffer[2] = 1; //先頭トラック番号 3604: scuChip.spiDataInBuffer[3] = 1; //最終トラック番号 3605: scuChip.spiDataInBuffer[4] = 0; //Reserved 3606: scuChip.spiDataInBuffer[5] = 0x14; //カレントポジションデータ,データトラック 3607: scuChip.spiDataInBuffer[6] = 1; //トラック番号 3608: scuChip.spiDataInBuffer[7] = 0; //Reserved 3609: ByteArray.byaWl (scuChip.spiDataInBuffer, 8, 0); //アブソリュートCD-ROMアドレス 3610: scuChip.spiDataInBuffer[12] = 0; //Reserved 3611: scuChip.spiDataInBuffer[13] = 0x10; //カレントポジションデータ 3612: scuChip.spiDataInBuffer[14] = (byte) 0xaa; //トラック番号 3613: scuChip.spiDataInBuffer[15] = 0; //Reserved 3614: ByteArray.byaWl (scuChip.spiDataInBuffer, 16, msf ? scuDiskEndRecord / 4500 << 16 | scuDiskEndRecord / 75 % 60 + 2 << 8 | scuDiskEndRecord % 75 : scuDiskEndRecord); //アブソリュートCD-ROMアドレス 3615: } else if (startTrack <= 0xaa) { //リードアウトトラック 3616: dataLength = 4 + 8 * 1; //データの長さ。自分を含む 3617: ByteArray.byaWw (scuChip.spiDataInBuffer, 0, 2 + 8 * 1); //TOCデータ長。要求されたサイズに関わらず最後までの長さを返す。自分を含まない 3618: scuChip.spiDataInBuffer[2] = 1; //先頭トラック番号 3619: scuChip.spiDataInBuffer[3] = 1; //最終トラック番号 3620: scuChip.spiDataInBuffer[4] = 0; //Reserved 3621: scuChip.spiDataInBuffer[5] = 0x10; //カレントポジションデータ 3622: scuChip.spiDataInBuffer[6] = (byte) 0xaa; //トラック番号 3623: scuChip.spiDataInBuffer[7] = 0; //Reserved 3624: ByteArray.byaWl (scuChip.spiDataInBuffer, 8, msf ? scuDiskEndRecord / 4500 << 16 | scuDiskEndRecord / 75 % 60 + 2 << 8 | scuDiskEndRecord % 75 : scuDiskEndRecord); //アブソリュートCD-ROMアドレス 3625: } else { //開始トラック番号が範囲外 3626: scuDoInvalid (); 3627: return; 3628: } 3629: scuChip.spiDataInPhase (scuChip.spiDataInBuffer, 0, Math.min (dataLength, allocLength), 0); //データインフェーズに移行する 3630: } //scuDoReadTOC() 3631: 3632: //scuDoAssignDriveSASI () 3633: // [0] 0xc2 3634: // [5] ドライブパラメータの長さ 3635: public void scuDoAssignDriveSASI () { 3636: if (!abuInserted || scuDiskEndRecord == 0) { //挿入されていない 3637: scuUnitAttention (); 3638: return; 3639: } 3640: int n = scuChip.spiCommandBuffer[5] & 255; //ドライブパラメータの長さ 3641: scuChip.spiDataOutPhase (scuChip.spiDataOutBuffer, 0, n, 0); //データアウトフェーズに移行する 3642: } //scuDoAssignDriveSASI 3643: 3644: //scuDoInvalid () 3645: public void scuDoInvalid () { 3646: if (scuMode == 1) { //SCSI-1 3647: scuChip.spiSenseBuffer[0] = (byte) SPC_INVALID_COMMAND; 3648: } else { //SCSI-2 3649: scuChip.spiSenseBuffer[0] = (byte) SPC_EXTENDED_SENSE; 3650: scuChip.spiSenseBuffer[2] = (byte) SPC_ILLEGAL_REQUEST; 3651: } 3652: scuChip.spiStatusPhase (SPC_CHECK_CONDITION, SPC_COMMAND_COMPLETE); 3653: } //scuDoInvalid() 3654: 3655: //scuUnitAttention () 3656: public void scuUnitAttention () { 3657: if (scuMode == 1) { //SCSI-1 3658: scuChip.spiSenseBuffer[0] = (byte) SPC_INVALID_COMMAND; 3659: } else { //SCSI-2 3660: scuChip.spiSenseBuffer[0] = (byte) SPC_EXTENDED_SENSE; 3661: scuChip.spiSenseBuffer[2] = (byte) SPC_UNIT_ATTENTION; 3662: } 3663: scuChip.spiStatusPhase (SPC_CHECK_CONDITION, SPC_COMMAND_COMPLETE); 3664: } //scuUnitAttention() 3665: 3666: //scuDataProtect () 3667: public void scuDataProtect () { 3668: if (scuMode == 1) { //SCSI-1 3669: scuChip.spiSenseBuffer[0] = (byte) SPC_INVALID_COMMAND; 3670: } else { //SCSI-2 3671: scuChip.spiSenseBuffer[0] = (byte) SPC_EXTENDED_SENSE; 3672: scuChip.spiSenseBuffer[2] = (byte) SPC_DATA_PROTECT; 3673: } 3674: scuChip.spiStatusPhase (SPC_CHECK_CONDITION, SPC_COMMAND_COMPLETE); 3675: } //scuDataProtect() 3676: 3677: } //class SCUnit 3678: 3679: 3680: 3681: } //class SPC 3682: 3683: 3684: