--- np2/bios/bios1b.c 2005/02/27 15:07:36 1.32 +++ np2/bios/bios1b.c 2005/05/15 18:48:36 1.35 @@ -235,12 +235,12 @@ static void b0patch(void) { REG8 c; REG8 cl; REG8 last; - addr = ES_BASE + CPU_BP; + addr = CPU_BP; size = CPU_BX; cnt = 0; last = 0; while(size--) { - c = i286_memoryread(addr++); + c = MEML_READ8(ES_BASE, addr++); cl = 0; do { REG8 now = c & 0x80; @@ -264,13 +264,13 @@ static void b0patch(void) { } } if ((b0p.pos >> 3) < CPU_BX) { - UINT32 addr; + UINT addr; REG8 c; - addr = ES_BASE + CPU_BP + (b0p.pos >> 3); - c = i286_memoryread(addr); + addr = CPU_BP + (b0p.pos >> 3); + c = MEML_READ8(CPU_ES, addr); c ^= (1 << (b0p.pos & 7)); b0p.pos++; - i286_memorywrite(addr, c); + MEML_WRITE8(CPU_ES, addr, c); } } } @@ -334,16 +334,14 @@ static REG8 fdd_operate(REG8 type, REG8 } if (!fdd_diskready(fdc.us)) { fdd_int(FDCBIOS_NONREADY); - if (CPU_AH == 0x84) { - return(0x68); // 新センスは 両用ドライブ情報も - } - if (CPU_AH == 0xc4) { // ver0.31 - if (fdc.support144) { - return(0x6c); + ret_ah = 0x60; + if ((CPU_AX & 0x8f40) == 0x8400) { + ret_ah |= 8; // 1MB/640KB両用ドライブ + if ((CPU_AH & 0x40) && (fdc.support144)) { + ret_ah |= 4; // 1.44対応ドライブ } - return(0x68); } - return(0x60); + return(ret_ah); } } @@ -444,11 +442,11 @@ static REG8 fdd_operate(REG8 type, REG8 if (mem[fmode] & (0x01 << fdc.us)) { ret_ah |= 0x01; } - if (mem[fmode] & (0x10 << fdc.us)) { // ver0.30 + if (mem[fmode] & (0x10 << fdc.us)) { ret_ah |= 0x04; } } - if (CPU_AH & 0x80) { // ver0.30 + if ((CPU_AX & 0x8f40) == 0x8400) { ret_ah |= 8; // 1MB/640KB両用ドライブ if ((CPU_AH & 0x40) && (fdc.support144)) { ret_ah |= 4; // 1.44対応ドライブ @@ -982,7 +980,6 @@ UINT bios0x1b_wait(void) { REG8 bit; if (fddmtr.busy) { - CPU_IP--; CPU_REMCLOCK = -1; } else {