2 SHARP MZ-700 Emulator 'EmuZ-700'
3 SHARP MZ-800 Emulator 'EmuZ-800'
4 SHARP MZ-1500 Emulator 'EmuZ-1500'
6 Author : Takeda.Toshiya
14 #define DATA_SIZE 0x8000
15 #define ADDR_MASK (DATA_SIZE - 1)
17 void CMOS::initialize()
20 data_buffer = (uint8_t *)malloc(DATA_SIZE);
21 memset(data_buffer, 0, DATA_SIZE);
25 FILEIO* fio = new FILEIO();
26 if(fio->Fopen(create_local_path(_T("CMOS.BIN")), FILEIO_READ_BINARY)) {
27 fio->Fread(data_buffer, DATA_SIZE, 1);
37 FILEIO* fio = new FILEIO();
38 if(fio->Fopen(create_local_path(_T("CMOS.BIN")), FILEIO_WRITE_BINARY)) {
39 fio->Fwrite(data_buffer, DATA_SIZE, 1);
54 void CMOS::write_io8(uint32_t addr, uint32_t data)
58 data_addr = (data_addr & 0x00ff) | (data << 8);
61 data_addr = (data_addr & 0xff00) | data;
64 if(data_buffer[data_addr & ADDR_MASK] != data) {
65 data_buffer[data_addr & ADDR_MASK] = data;
73 uint32_t CMOS::read_io8(uint32_t addr)
80 return data_buffer[(data_addr++) & ADDR_MASK];
85 #define STATE_VERSION 1
87 bool CMOS::process_state(FILEIO* state_fio, bool loading)
89 if(!state_fio->StateCheckUint32(STATE_VERSION)) {
92 if(!state_fio->StateCheckInt32(this_device_id)) {
95 state_fio->StateBuffer(data_buffer, DATA_SIZE, 1);
96 state_fio->StateUint32(data_addr);
97 state_fio->StateBool(modified);