|
|
| version 1.12, 2004/03/25 15:08:32 | version 1.20, 2012/01/29 14:53:54 |
|---|---|
| Line 6 | Line 6 |
| #define MEMCALL FASTCALL | #define MEMCALL FASTCALL |
| #endif | #endif |
| #ifndef GCC_ATTR_REGPARM | #if !defined(MEMCALL) |
| #define GCC_ATTR_REGPARM | #define MEMCALL |
| #endif | #endif |
| // 000000-0fffff メインメモリ | // 000000-0fffff メインメモリ |
| Line 19 | Line 19 |
| // 1e0000-1e7fff VRAM1 | // 1e0000-1e7fff VRAM1 |
| // 1f8000-1fffff ITF-ROM | // 1f8000-1fffff ITF-ROM |
| #define CPU_MEMREADMAX 0x0a4000 | |
| #define CPU_MEMWRITEMAX 0x0a0000 | |
| #define VRAM_STEP 0x100000 | #define VRAM_STEP 0x100000 |
| #define VRAM_B 0x0a8000 | #define VRAM_B 0x0a8000 |
| #define VRAM_R 0x0b0000 | #define VRAM_R 0x0b0000 |
| Line 39 | Line 42 |
| #define FONT_ADRS 0x110000 | #define FONT_ADRS 0x110000 |
| #define ITF_ADRS 0x1f8000 | #define ITF_ADRS 0x1f8000 |
| #define USE_HIMEM 0x110000 | |
| #ifdef __cplusplus | #ifdef __cplusplus |
| extern "C" { | extern "C" { |
| #endif | #endif |
| extern BYTE mem[0x200000]; | extern UINT8 mem[0x200000]; |
| void MEMCALL memm_arch(UINT type); | |
| void MEMCALL memm_vram(UINT operate); | |
| void MEMCALL i286_memorymap(UINT type); | REG8 MEMCALL memp_read8(UINT32 address); |
| void MEMCALL i286_vram_dispatch(UINT operate); | REG16 MEMCALL memp_read16(UINT32 address); |
| UINT32 MEMCALL memp_read32(UINT32 address); | |
| void MEMCALL memp_write8(UINT32 address, REG8 value); | |
| void MEMCALL memp_write16(UINT32 address, REG16 value); | |
| void MEMCALL memp_write32(UINT32 address, UINT32 value); | |
| void MEMCALL memp_reads(UINT32 address, void *dat, UINT leng); | |
| void MEMCALL memp_writes(UINT32 address, const void *dat, UINT leng); | |
| REG8 MEMCALL meml_read8(UINT32 address); | |
| REG16 MEMCALL meml_read16(UINT32 address); | |
| UINT32 MEMCALL meml_read32(UINT32 address); | |
| void MEMCALL meml_write8(UINT32 address, REG8 dat); | |
| void MEMCALL meml_write16(UINT32 address, REG16 dat); | |
| void MEMCALL meml_write32(UINT32 address, UINT32 dat); | |
| void MEMCALL meml_reads(UINT32 address, void *dat, UINT leng); | |
| void MEMCALL meml_writes(UINT32 address, const void *dat, UINT leng); | |
| REG8 MEMCALL memr_read8(UINT seg, UINT off); | |
| REG16 MEMCALL memr_read16(UINT seg, UINT off); | |
| UINT32 MEMCALL memr_read32(UINT seg, UINT off); | |
| void MEMCALL memr_write8(UINT seg, UINT off, REG8 dat); | |
| void MEMCALL memr_write16(UINT seg, UINT off, REG16 dat); | |
| void MEMCALL memr_write32(UINT seg, UINT off, UINT32 dat); | |
| void MEMCALL memr_reads(UINT seg, UINT off, void *dat, UINT leng); | |
| void MEMCALL memr_writes(UINT seg, UINT off, const void *dat, UINT leng); | |
| void MEMCALL i286_memorywrite(UINT32 address, REG8 value) GCC_ATTR_REGPARM; | #ifdef __cplusplus |
| void MEMCALL i286_memorywrite_w(UINT32 address, REG16 value) GCC_ATTR_REGPARM; | } |
| void MEMCALL i286_memorywrite_d(UINT32 address, UINT32 value) GCC_ATTR_REGPARM; | |
| REG8 MEMCALL i286_memoryread(UINT32 address) GCC_ATTR_REGPARM; | |
| REG16 MEMCALL i286_memoryread_w(UINT32 address) GCC_ATTR_REGPARM; | |
| UINT32 MEMCALL i286_memoryread_d(UINT32 address) GCC_ATTR_REGPARM; | |
| #ifdef NP2_MEMORY_ASM | |
| REG8 MEMCALL i286_membyte_read(UINT seg, UINT off) GCC_ATTR_REGPARM; | |
| REG16 MEMCALL i286_memword_read(UINT seg, UINT off) GCC_ATTR_REGPARM; | |
| void MEMCALL i286_membyte_write(UINT seg, UINT off, REG8 dat) GCC_ATTR_REGPARM; | |
| void MEMCALL i286_memword_write(UINT seg, UINT off, REG16 dat) GCC_ATTR_REGPARM; | |
| #else | |
| #define i286_membyte_read(a, b) \ | |
| i286_memoryread(((UINT32)(a) << 4) + (UINT16)(b)) | |
| #define i286_memword_read(a, b) \ | |
| i286_memoryread_w(((UINT32)(a) << 4) + (UINT16)(b)) | |
| #define i286_membyte_write(a, b, c) \ | |
| i286_memorywrite(((UINT32)(a) << 4) + (UINT16)(b), (c)) | |
| #define i286_memword_write(a, b, c) \ | |
| i286_memorywrite_w(((UINT32)(a) << 4) + (UINT16)(b), (c)) | |
| #endif | #endif |
| void MEMCALL memp_read(UINT32 address, void *dat, UINT leng) GCC_ATTR_REGPARM; | |
| void MEMCALL memp_write(UINT32 address, const void *dat, UINT leng) GCC_ATTR_REGPARM; | |
| REG8 MEMCALL meml_read8(UINT seg, UINT off) GCC_ATTR_REGPARM; | // ---- Memory map |
| REG16 MEMCALL meml_read16(UINT seg, UINT off) GCC_ATTR_REGPARM; | |
| void MEMCALL meml_write8(UINT seg, UINT off, REG8 dat) GCC_ATTR_REGPARM; | |
| void MEMCALL meml_write16(UINT seg, UINT off, REG16 dat) GCC_ATTR_REGPARM; | |
| void MEMCALL meml_readstr(UINT seg, UINT off, void *dat, UINT leng) GCC_ATTR_REGPARM; | |
| void MEMCALL meml_writestr(UINT seg, UINT off, const void *dat, UINT leng) GCC_ATTR_REGPARM; | |
| void MEMCALL meml_read(UINT32 address, void *dat, UINT leng) GCC_ATTR_REGPARM; | |
| void MEMCALL meml_write(UINT32 address, const void *dat, UINT leng) GCC_ATTR_REGPARM; | |
| #define MEMM_ARCH(t) memm_arch(t) | |
| #define MEMM_VRAM(o) memm_vram(o) | |
| // ---- Physical Space (DMA) | // ---- Physical Space (DMA) |
| #define MEMP_READ8(addr) \ | #define MEMP_READ8(addr) \ |
| i286_memoryread((addr)) | memp_read8((addr)) |
| #define MEMP_READ16(addr) \ | |
| memp_read16((addr)) | |
| #define MEMP_READ32(addr) \ | |
| memp_read32((addr)) | |
| #define MEMP_WRITE8(addr, dat) \ | #define MEMP_WRITE8(addr, dat) \ |
| i286_memorywrite((addr), (dat)) | memp_write8((addr), (dat)) |
| #define MEMP_WRITE16(addr, dat) \ | |
| #define MEMP_READ(addr, dat, leng) \ | memp_write16((addr), (dat)) |
| memp_read((addr), (dat), (leng)) | #define MEMP_WRITE32(addr, dat) \ |
| #define MEMP_WRITE(addr, dat, leng) \ | memp_write32((addr), (dat)) |
| memp_write((addr), (dat), (leng)) | #define MEMP_READS(addr, dat, leng) \ |
| memp_reads((addr), (dat), (leng)) | |
| #define MEMP_WRITES(addr, dat, leng) \ | |
| memp_writes((addr), (dat), (leng)) | |
| // ---- Logical Space (BIOS) | // ---- Logical Space (BIOS) |
| #define MEML_READ8(seg, off) \ | #define MEML_READ8(addr) \ |
| meml_read8((seg), (off)) | meml_read8((addr)) |
| #define MEML_READ16(seg, off) \ | #define MEML_READ16(addr) \ |
| meml_read16((seg), (off)) | meml_read16((addr)) |
| #define MEML_WRITE8(seg, off, dat) \ | #define MEML_READ32(addr) \ |
| meml_write8((seg), (off), (dat)) | meml_read32((addr)) |
| #define MEML_WRITE16(seg, off, dat) \ | #define MEML_WRITE8(addr, dat) \ |
| meml_write16((seg), (off), (dat)) | meml_write8((addr), (dat)) |
| #define MEML_READSTR(seg, off, dat, leng) \ | #define MEML_WRITE16(addr, dat) \ |
| meml_readstr((seg), (off), (dat), (leng)) | meml_write16((addr), (dat)) |
| #define MEML_WRITESTR(seg, off, dat, leng) \ | #define MEML_WRITE32(addr, dat) \ |
| meml_writestr((seg), (off), (dat), (leng)) | meml_write32((addr), (dat)) |
| #define MEML_READ(addr, dat, leng) \ | #define MEML_READS(addr, dat, leng) \ |
| meml_read((addr), (dat), (leng)) | meml_reads((addr), (dat), (leng)) |
| #define MEML_WRITE(addr, dat, leng) \ | #define MEML_WRITES(addr, dat, leng) \ |
| meml_write((addr), (dat), (leng)) | meml_writes((addr), (dat), (leng)) |
| #ifdef __cplusplus | #define MEMR_READ8(seg, off) \ |
| } | memr_read8((seg), (off)) |
| #endif | #define MEMR_READ16(seg, off) \ |
| memr_read16((seg), (off)) | |
| #define MEMR_WRITE8(seg, off, dat) \ | |
| memr_write8((seg), (off), (dat)) | |
| #define MEMR_WRITE16(seg, off, dat) \ | |
| memr_write16((seg), (off), (dat)) | |
| #define MEMR_READS(seg, off, dat, leng) \ | |
| memr_reads((seg), (off), (dat), (leng)) | |
| #define MEMR_WRITES(seg, off, dat, leng) \ | |
| memr_writes((seg), (off), (dat), (leng)) | |
| #endif /* !NP2_I386C_MEMORY_H__ */ | #endif /* !NP2_I386C_MEMORY_H__ */ |