| version 1.67, 2004/06/04 16:54:57 | version 1.69, 2004/07/22 11:31:32 | 
| Line 147  static void bios_reinitbyswitch(void) { | Line 147  static void bios_reinitbyswitch(void) { | 
 | fddbios_equip(0, TRUE); | fddbios_equip(0, TRUE); | 
 | mem[MEMB_BIOS_FLAG0] &= ~0x02; | mem[MEMB_BIOS_FLAG0] &= ~0x02; | 
 | } | } | 
 |  | mem[MEMB_F2HD_MODE] = 0xff; | 
 | mem[MEMB_F2DD_MODE] = 0xff; | mem[MEMB_F2DD_MODE] = 0xff; | 
 |  |  | 
 | #if defined(SUPPORT_CRT31KHZ) | #if defined(SUPPORT_CRT31KHZ) | 
| Line 190  static void bios_screeninit(void) { | Line 191  static void bios_screeninit(void) { | 
 | bios0x18_0a(al); | bios0x18_0a(al); | 
 | } | } | 
 |  |  | 
 |  | static void setbiosseed(UINT8 *ptr, UINT size, UINT seedpos) { | 
 |  |  | 
 |  | UINT8   x; | 
 |  | UINT8   y; | 
 |  | UINT    i; | 
 |  |  | 
 |  | x = 0; | 
 |  | y = 0; | 
 |  | for (i=0; i<size; i+=2) { | 
 |  | x += ptr[i + 0]; | 
 |  | y += ptr[i + 1]; | 
 |  | } | 
 |  | ptr[seedpos + 0] -= x; | 
 |  | ptr[seedpos + 1] -= y; | 
 |  | } | 
 |  |  | 
 | void bios_initialize(void) { | void bios_initialize(void) { | 
 |  |  | 
| Line 215  void bios_initialize(void) { | Line 231  void bios_initialize(void) { | 
 | tmp = LOADINTELDWORD(mem + 0xf0000 + i); | tmp = LOADINTELDWORD(mem + 0xf0000 + i); | 
 | if (tmp == 0x506e5024) { | if (tmp == 0x506e5024) { | 
 | TRACEOUT(("found PnP BIOS at %.5x", 0xf0000 + i)); | TRACEOUT(("found PnP BIOS at %.5x", 0xf0000 + i)); | 
| STOREINTELDWORD(mem + 0xf0000 + i, 0x32504e24); | mem[0xf0000 + i] = 0x6e; | 
|  | mem[0xf0002 + i] = 0x24; | 
|  | break; | 
 | } | } | 
 | } | } | 
 | } | } | 
 | else { | else { | 
 | CopyMemory(mem + 0x0e8000, nosyscode, sizeof(nosyscode)); | CopyMemory(mem + 0x0e8000, nosyscode, sizeof(nosyscode)); | 
 |  | if ((!biosrom) && (!(pccore.model & PCMODEL_EPSON))) { | 
 |  | CopyMemory(mem + 0xe8dd8, neccheck, 0x25); | 
 |  | pos = LOADINTELWORD(itfrom + 2); | 
 |  | CopyMemory(mem + 0xf538e, itfrom + pos, 0x27); | 
 |  | } | 
 |  | setbiosseed(mem + 0x0e8000, 0x10000, 0xb1f0); | 
 | } | } | 
 |  |  | 
 | #if defined(SUPPORT_PC9821) | #if defined(SUPPORT_PC9821) | 
| Line 256  void bios_initialize(void) { | Line 280  void bios_initialize(void) { | 
 | mem[0xffff0] = 0xea; | mem[0xffff0] = 0xea; | 
 | STOREINTELDWORD(mem + 0xffff1, 0xfd800000); | STOREINTELDWORD(mem + 0xffff1, 0xfd800000); | 
 |  |  | 
 | if ((!biosrom) && (!(pccore.model & PCMODEL_EPSON))) { |  | 
 | CopyMemory(mem + 0xe8dd8, neccheck, 0x25); |  | 
 | pos = LOADINTELWORD(itfrom + 2); |  | 
 | CopyMemory(mem + 0xf538e, itfrom + pos, 0x27); |  | 
 | } |  | 
 |  |  | 
 | CopyMemory(mem + 0x0fd800 + 0x0e00, keytable[0], 0x300); | CopyMemory(mem + 0x0fd800 + 0x0e00, keytable[0], 0x300); | 
 |  |  | 
 | CopyMemory(mem + ITF_ADRS, itfrom, sizeof(itfrom)); | CopyMemory(mem + ITF_ADRS, itfrom, sizeof(itfrom)); | 
| Line 273  void bios_initialize(void) { | Line 291  void bios_initialize(void) { | 
 | else if ((pccore.model & PCMODELMASK) == PCMODEL_VM) { | else if ((pccore.model & PCMODELMASK) == PCMODEL_VM) { | 
 | mem[ITF_ADRS + 0x7ff1] = 0x08; | mem[ITF_ADRS + 0x7ff1] = 0x08; | 
 | } | } | 
 |  | setbiosseed(mem + 0x0f8000, 0x08000, 0x7ffe); | 
 | #else | #else | 
 | fh = file_open_c("itf.rom"); | fh = file_open_c("itf.rom"); | 
 | if (fh != FILEH_INVALID) { | if (fh != FILEH_INVALID) { | 
| Line 300  static void bios_itfcall(void) { | Line 319  static void bios_itfcall(void) { | 
 |  |  | 
 | if (!np2cfg.ITF_WORK) { | if (!np2cfg.ITF_WORK) { | 
 | for (i=0; i<8; i++) { | for (i=0; i<8; i++) { | 
| mem[MEMB_MSW + (i*4)] = msw_default[i]; | mem[MEMX_MSW + (i*4)] = msw_default[i]; | 
 | } | } | 
 | CPU_FLAGL |= C_FLAG; | CPU_FLAGL |= C_FLAG; | 
 | } | } | 
| Line 425  UINT MEMCALL biosfunc(UINT32 adrs) { | Line 444  UINT MEMCALL biosfunc(UINT32 adrs) { | 
 |  |  | 
 | case BIOS_BASE + BIOSOFST_WAIT: | case BIOS_BASE + BIOSOFST_WAIT: | 
 | CPU_STI; | CPU_STI; | 
 |  | #if 1 | 
 |  | return(bios0x1b_wait());                                                                // ver0.78 | 
 |  | #else | 
 | if (fddmtr.busy) { | if (fddmtr.busy) { | 
 | CPU_IP--; | CPU_IP--; | 
 | CPU_REMCLOCK = -1; | CPU_REMCLOCK = -1; | 
 | } | } | 
 | else { | else { | 
 | if (fdc.chgreg & 1) { | if (fdc.chgreg & 1) { | 
| if (!(mem[0x0055e] & (0x01 << fdc.us))) { | if (!(mem[MEMB_DISK_INTL] & (0x01 << fdc.us))) { | 
 | CPU_IP--; | CPU_IP--; | 
 | CPU_REMCLOCK -= 1000; | CPU_REMCLOCK -= 1000; | 
 | } | } | 
 | } | } | 
 | else { | else { | 
| if (!(mem[0x0055f] & (0x10 << fdc.us))) { | if (!(mem[MEMB_DISK_INTH] & (0x10 << fdc.us))) { | 
 | CPU_IP--; | CPU_IP--; | 
 | CPU_REMCLOCK -= 1000; | CPU_REMCLOCK -= 1000; | 
 | } | } | 
 | } | } | 
 | } | } | 
 | return(1); | return(1); | 
 |  | #endif | 
 |  |  | 
 | case 0xfffe8:                                   // ブートストラップロード | case 0xfffe8:                                   // ブートストラップロード | 
 | CPU_REMCLOCK -= 2000; | CPU_REMCLOCK -= 2000; |