--- np2/bios/bios1f.c 2004/03/19 00:32:31 1.1 +++ np2/bios/bios1f.c 2005/05/20 13:59:46 1.5 @@ -8,7 +8,7 @@ static REG8 bios0x1f_90(void) { - BYTE work[256]; + UINT8 work[256]; UINT srclimit; UINT srcaddr; UINT dstlimit; @@ -18,7 +18,7 @@ static REG8 bios0x1f_90(void) { UINT leng; UINT l; - MEML_READSTR(CPU_ES, CPU_BX + 0x10, work, 0x10); + MEMR_READS(CPU_ES, CPU_BX + 0x10, work, 0x10); srclimit = work[0] + (work[1] << 8) + 1; srcaddr = CPU_SI; if (srclimit <= srcaddr) { @@ -30,9 +30,11 @@ static REG8 bios0x1f_90(void) { goto p90_err; } + CPU_A20EN(TRUE); srcbase = work[2] + (work[3] << 8) + (work[4] << 16); - dstbase = work[10] + (work[11] << 8) + (work[12] << 16) + dstaddr; + dstbase = work[10] + (work[11] << 8) + (work[12] << 16); leng = LOW16(CPU_CX - 1) + 1; +// TRACEOUT(("move %.8x %.8x %.4x", srcbase + srcaddr, dstbase + dstaddr, leng)); do { l = min(leng, sizeof(work)); l = min(l, srclimit - srcaddr); @@ -40,13 +42,14 @@ static REG8 bios0x1f_90(void) { if (!l) { goto p90_err2; } - MEML_READ(srcbase + srcaddr, work, l); - MEML_WRITE(dstbase + dstaddr, work, l); + MEML_READS(srcbase + srcaddr, work, l); + MEML_WRITES(dstbase + dstaddr, work, l); srcaddr = LOW16(srcaddr + l); dstaddr = LOW16(dstaddr + l); leng -= l; } while(leng); TRACEOUT(("BIOS1F90 - success")); + CPU_A20EN(FALSE); return(0); p90_err2: @@ -77,8 +80,8 @@ void bios0x1f(void) { else { return; } - flag = MEML_READ8(CPU_SS, CPU_SP + 4) & (~C_FLAG); + flag = (REG8)(MEMR_READ8(CPU_SS, CPU_SP + 4) & (~C_FLAG)); flag |= cflag; - MEML_WRITE8(CPU_SS, CPU_SP + 4, flag); + MEMR_WRITE8(CPU_SS, CPU_SP + 4, flag); }