OSDN Git Service

[VM][FMTOWNS] Some devices are enabled to compile.
[csp-qt/common_source_project-fm7.git] / source / src / vm / fmtowns / towns_dictionary.cpp
index 4c7fd91..a6bbf36 100644 (file)
@@ -7,16 +7,13 @@
        [ dictionary rom/ram & cmos & RAM area 0x000d0000 - 0x000effff]
 */
 
-#include "./towns_common.h"
-#include "./towns_dictrom.h"
+#include "./towns_dictionary.h"
 #include "./towns_sysrom.h"
 #include "../../fileio.h"
 
 namespace FMTOWNS {
 void DICTIONARY::initialize()
 {
-       cmos_dirty = false;
-       
        memset(dict_rom, 0xff, sizeof(dict_rom));
        memset(dict_ram, 0x00, sizeof(dict_ram));
        memset(ram_0d0, 0x00, sizeof(ram_0d0));
@@ -30,13 +27,11 @@ void DICTIONARY::initialize()
        if(fio->Fopen(create_local_path(_T("FMT_CMOS.BIN")), FILEIO_READ_BINARY)) {
                fio->Fread(dict_ram, sizeof(dict_ram), 1);
                fio->Fclose();
+               //cmos_dirty = true;
        } else {
                cmos_dirty = true;
        }
        delete fio;
-
-       dict_bank = 0;
-       bankd0_dict = false;
 }
 
 void DICTIONARY::release()
@@ -102,8 +97,8 @@ uint32_t DICTIONARY::read_data16(uint32_t addr)
 {
        pair16_t n;
        addr = addr & 0xfffffffe;
-       n.l = (uint8_t)read_data8(addr + 0);
-       n.h = (uint8_t)read_data8(addr + 1);
+       n.b.l = (uint8_t)read_data8(addr + 0);
+       n.b.h = (uint8_t)read_data8(addr + 1);
        return (uint32_t)(n.u16);
 }
 
@@ -111,11 +106,11 @@ uint32_t DICTIONARY::read_data32(uint32_t addr)
 {
        pair32_t n;
        addr = addr & 0xfffffffc;
-       n.l  = (uint8_t)read_data8(addr + 0);
-       n.h  = (uint8_t)read_data8(addr + 1);
-       n.h2 = (uint8_t)read_data8(addr + 2);
-       n.h3 = (uint8_t)read_data8(addr + 3);
-       return n.u32;
+       n.b.l  = (uint8_t)read_data8(addr + 0);
+       n.b.h  = (uint8_t)read_data8(addr + 1);
+       n.b.h2 = (uint8_t)read_data8(addr + 2);
+       n.b.h3 = (uint8_t)read_data8(addr + 3);
+       return n.d;
 }
 
 void DICTIONARY::write_data16(uint32_t addr, uint32_t data)
@@ -123,19 +118,19 @@ void DICTIONARY::write_data16(uint32_t addr, uint32_t data)
        pair16_t n;
        addr = addr & 0xfffffffe;
        n.u16 = (uint16_t)data;
-       write_data8(addr + 0, n.l);
-       write_data8(addr + 1, n.h);
+       write_data8(addr + 0, n.b.l);
+       write_data8(addr + 1, n.b.h);
 }
 
 void DICTIONARY::write_data32(uint32_t addr, uint32_t data)
 {
        pair32_t n;
        addr = addr & 0xfffffffc;
-       n.u32 = data;
-       write_data8(addr + 0, n.l);
-       write_data8(addr + 1, n.h);
-       write_data8(addr + 2, n.h2);
-       write_data8(addr + 3, n.h3);
+       n.d = data;
+       write_data8(addr + 0, n.b.l);
+       write_data8(addr + 1, n.b.h);
+       write_data8(addr + 2, n.b.h2);
+       write_data8(addr + 3, n.b.h3);
 }
 
 
@@ -143,7 +138,7 @@ void DICTIONARY::write_io8(uint32_t addr, uint32_t data)
 {
        if(addr == 0x0480) {
                bankd0_dict = ((data & 0x01) != 0);
-               d_sysrom->write_signal(SIG_FMTONWS_SYSROMSEL, data, 0x02);
+               d_sysrom->write_signal(SIG_FMTOWNS_SYSROMSEL, data, 0x02);
        } else if(addr == 0x0484) {
                dict_bank = data & 0x0f;
        } else if((addr >= 0x3000) && (addr < 0x4000)) {
@@ -159,7 +154,7 @@ uint32_t DICTIONARY::read_io8(uint32_t addr)
 {
        uint32_t data;
        if(addr == 0x0480) {
-               data = ((bank0_dict) ? 0x01 : 0x00) | ((d_sysrom->read_signal(SIG_FMTOWNS_SYSROMSEL) == 0) ? 0x02 : 0x00);
+               data = ((bankd0_dict) ? 0x01 : 0x00) | ((d_sysrom->read_signal(SIG_FMTOWNS_SYSROMSEL) == 0) ? 0x02 : 0x00);
        } else if(addr == 0x0484) {
                data = dict_bank & 0x0f;
        } else if((addr >= 0x3000) && (addr < 0x4000)) {