--- np2/i286c/memory.h 2004/01/05 06:05:11 1.8 +++ np2/i286c/memory.h 2004/03/04 16:58:57 1.10 @@ -6,6 +6,7 @@ // 000000-0fffff メインメモリ // 100000-10ffef HMA +// 10fff0-10ffff HIMEM // 110000-193fff FONT-ROM/RAM // 1a8000-1bffff VRAM1 // 1c0000-1c7fff ITF-ROM BAK @@ -13,6 +14,8 @@ // 1e0000-1e7fff VRAM1 // 1f8000-1fffff ITF-ROM +#define USE_HIMEM 0x110000 + enum { VRAM_STEP = 0x100000, VRAM_B = 0x0a8000, @@ -63,6 +66,34 @@ void MEMCALL i286_memstr_write(UINT seg, void MEMCALL i286_memx_read(UINT32 address, void *dat, UINT leng); void MEMCALL i286_memx_write(UINT32 address, const void *dat, UINT leng); + +// ---- Physical Space (DMA) + +#define MEMP_READ8(addr) \ + i286_memoryread((addr)) +#define MEMP_WRITE8(addr, dat) \ + i286_memorywrite((addr), (dat)) + + +// ---- Logical Space (BIOS) + +#define MEML_READ8(seg, off) \ + i286_membyte_read((seg), (off)) +#define MEML_READ16(seg, off) \ + i286_memwrite_read((seg), (off)) +#define MEML_WRITE8(seg, off, dat) \ + i286_membyte_write((seg), (off), (dat)); +#define MEML_WRITE16(seg, off, dat) \ + i286_memword_write((seg), (off), (dat)); +#define MEML_READSTR(seg, off, dat, leng) \ + i286_memstr_read((seg), (off), (dat), (leng)) +#define MEML_WRITESTR(seg, off, dat, leng) \ + i286_memstr_write((seg), (off), (dat), (leng)) +#define MEML_READ(addr, dat, leng) \ + i286_memx_read((addr), (dat), (leng)) +#define MEML_WRITE(addr, dat, leng) \ + i286_memx_write((addr), (dat), (leng)) + #ifdef __cplusplus } #endif