#include "./msdosrom.h"
namespace FMTOWNS {
-
+
void MSDOSROM::initialize()
{
memset(rom, 0xff, sizeof(rom));
delete fio;
}
-uint32_t MSDOSROM::read_memory_mapped_io8(uint32_t addr)
+uint32_t MSDOSROM::read_memory_mapped_io8(uint32_t addr)
{
+ __LIKELY_IF(addr < 0x80000) {
+ return rom[addr];
+ }
+ return 0xff;
+ #if 0
uint8_t d = 0xff;
if((addr >= 0xc2000000) && (addr < 0xc2080000)) {
d = rom[addr & 0x7ffff];
d = rom[addr & 0x0ffff];
}
return (uint32_t)d;
+ #endif
+}
+
+uint32_t MSDOSROM::read_memory_mapped_io16(uint32_t addr)
+{
+ __LIKELY_IF(addr < (0x80000 - 1)) {
+ pair16_t nd;
+ nd.read_2bytes_le_from(&(rom[addr]));
+ return nd.w;
+ }
+ return 0xffff;
+}
+
+uint32_t MSDOSROM::read_memory_mapped_io32(uint32_t addr)
+{
+ __LIKELY_IF(addr < (0x80000 - 3)) {
+ pair32_t nd;
+ nd.read_4bytes_le_from(&(rom[addr]));
+ return nd.d;
+ }
+ return 0xffffffff;
}
}
~MSDOSROM() {}
- void initialize();
- uint32_t __FASTCALL read_memory_mapped_io8(uint32_t addr);
+ void initialize() override;
+ uint32_t __FASTCALL read_memory_mapped_io8(uint32_t addr) override;
+ uint32_t __FASTCALL read_memory_mapped_io16(uint32_t addr) override;
+ uint32_t __FASTCALL read_memory_mapped_io32(uint32_t addr) override;
};
}
-
set_region_device_rw(0xc1000000, 0xc1ffffff, d_iccard[1], 0);
// set_wait_rw(0x00000000, 0xffffffff, vram_wait_val);
- set_region_device_r (0xc2000000, 0xc207ffff, d_msdos, NOT_NEED_TO_OFFSET);
+ set_region_device_r (0xc2000000, 0xc207ffff, d_msdos, 0);
set_region_device_r (0xc2080000, 0xc20fffff, d_dictionary, NOT_NEED_TO_OFFSET);
set_region_device_r (0xc2100000, 0xc213ffff, d_font, NOT_NEED_TO_OFFSET);
// REAL IS C2140000h - C2141FFFh, but grain may be 8000h bytes.