2 SHARP MZ-700 Emulator 'EmuZ-700'
\r
3 SHARP MZ-800 Emulator 'EmuZ-800'
\r
4 SHARP MZ-1500 Emulator 'EmuZ-1500'
\r
6 Author : Takeda.Toshiya
\r
13 #include "../../fileio.h"
\r
15 #define DATA_SIZE 0x8000
\r
16 #define ADDR_MASK (DATA_SIZE - 1)
\r
18 void CMOS::initialize()
\r
21 data_buffer = (uint8 *)malloc(DATA_SIZE);
\r
22 memset(data_buffer, 0, DATA_SIZE);
\r
26 FILEIO* fio = new FILEIO();
\r
27 if(fio->Fopen(emu->bios_path(_T("CMOS.BIN")), FILEIO_READ_BINARY)) {
\r
28 fio->Fread(data_buffer, DATA_SIZE, 1);
\r
34 void CMOS::release()
\r
38 FILEIO* fio = new FILEIO();
\r
39 if(fio->Fopen(emu->bios_path(_T("CMOS.BIN")), FILEIO_WRITE_BINARY)) {
\r
40 fio->Fwrite(data_buffer, DATA_SIZE, 1);
\r
55 void CMOS::write_io8(uint32 addr, uint32 data)
\r
57 switch(addr & 0xff) {
\r
59 data_addr = (data_addr & 0x00ff) | (data << 8);
\r
62 data_addr = (data_addr & 0xff00) | data;
\r
65 if(data_buffer[data_addr & ADDR_MASK] != data) {
\r
66 data_buffer[data_addr & ADDR_MASK] = data;
\r
74 uint32 CMOS::read_io8(uint32 addr)
\r
76 switch(addr & 0xff) {
\r
81 return data_buffer[(data_addr++) & ADDR_MASK];
\r