--- np2/bios/bios0c.c 2003/10/16 17:58:19 1.1 +++ np2/bios/bios0c.c 2004/03/07 23:04:50 1.5 @@ -1,6 +1,5 @@ #include "compiler.h" -#include "i286.h" -#include "memory.h" +#include "cpucore.h" #include "pccore.h" #include "iocore.h" #include "bios.h" @@ -12,16 +11,16 @@ void bios0x0c(void) { UINT16 doff; UINT16 dseg; - BYTE flag; + REG8 flag; BYTE data; BYTE stat; - UINT16 pos; - UINT16 cnt; + REG16 pos; + REG16 cnt; doff = GETBIOSMEM16(MEMW_RS_CH0_OFST); dseg = GETBIOSMEM16(MEMW_RS_CH0_SEG); - flag = i286_membyte_read(dseg, doff + R_FLAG); + flag = MEML_READ8(dseg, doff + R_FLAG); data = iocore_inp8(0x30); // データ引き取り stat = iocore_inp8(0x32) & 0xfc; // ステータス stat |= (iocore_inp8(0x33) & 3); @@ -62,39 +61,39 @@ void bios0x0c(void) { } } // データ投棄 - pos = i286_memword_read(dseg, doff + R_PUTP); - i286_memword_write(dseg, pos, (UINT16)((data << 8) | stat)); + pos = MEML_READ16(dseg, doff + R_PUTP); + MEML_WRITE16(dseg, pos, (UINT16)((data << 8) | stat)); // 次のポインタをストア - pos += 2; - if (pos >= i286_memword_read(dseg, doff + R_TAILP)) { - pos = i286_memword_read(dseg, doff + R_HEADP); + pos = (UINT16)(pos + 2); + if (pos >= MEML_READ16(dseg, doff + R_TAILP)) { + pos = MEML_READ16(dseg, doff + R_HEADP); } - i286_memword_write(dseg, doff + R_PUTP, pos); + MEML_WRITE16(dseg, doff + R_PUTP, pos); // カウンタのインクリメント - cnt = i286_memword_read(dseg, doff + R_CNT) + 1; - i286_memword_write(dseg, doff + R_CNT, cnt); + cnt = (UINT16)(MEML_READ16(dseg, doff + R_CNT) + 1); + MEML_WRITE16(dseg, doff + R_CNT, cnt); // オーバーフローを見張る - if (pos == i286_memword_read(dseg, doff + R_GETP)) { + if (pos == MEML_READ16(dseg, doff + R_GETP)) { flag |= RFLAG_BFULL; } // XOFFを送信? if (((flag & (RFLAG_XON | RFLAG_XOFF)) == RFLAG_XON) && - (cnt >= i286_memword_read(dseg, doff + R_XON))) { + (cnt >= MEML_READ16(dseg, doff + R_XON))) { iocore_out8(0x30, RSCODE_XOFF); flag |= RFLAG_XOFF; } } else { - i286_membyte_write(dseg, doff + R_CMD, - (BYTE)(i286_membyte_read(dseg, doff + R_CMD) | RFLAG_BOVF)); + MEML_WRITE8(dseg, doff + R_CMD, + (REG8)(MEML_READ8(dseg, doff + R_CMD) | RFLAG_BOVF)); } - i286_membyte_write(dseg, doff + R_INT, - (BYTE)(i286_membyte_read(dseg, doff + R_INT) | RINT_INT)); - i286_membyte_write(dseg, doff + R_FLAG, flag); + MEML_WRITE8(dseg, doff + R_INT, + (REG8)(MEML_READ8(dseg, doff + R_INT) | RINT_INT)); + MEML_WRITE8(dseg, doff + R_FLAG, flag); iocore_out8(0x00, 0x20); }