2 Systems Formulate BUBCOM80 Emulator 'eBUBCOM80'
4 Author : Takeda.Toshiya
12 void MEMBUS::initialize()
16 memset(ram, 0x00, sizeof(ram));
17 memset(boot, 0xff, sizeof(boot));
18 memset(basic, 0xff, sizeof(basic));
20 if(!read_bios(_T("IPL.ROM"), boot, sizeof(boot))) {
21 read_bios(_T("BOOT.ROM"), boot, sizeof(boot));
23 read_bios(_T("BASIC.ROM"), basic, sizeof(basic));
25 set_memory_rw(0x0000, 0xffff, ram);
37 void MEMBUS::write_io8(uint32_t addr, uint32_t data)
41 basic_addr.b.l = data;
44 basic_addr.b.h = data;
50 ram_selected = ((data & 0x80) != 0);
56 uint32_t MEMBUS::read_io8(uint32_t addr)
60 return basic[basic_addr.w.l];
65 void MEMBUS::write_dma_data8(uint32_t addr, uint32_t data)
67 ram[addr & 0xffff] = data;
70 uint32_t MEMBUS::read_dma_data8(uint32_t addr)
72 return ram[addr & 0xffff];
75 void MEMBUS::update_bank()
77 set_memory_r(0x0000, 0x07ff, ram_selected ? ram : boot);
80 #define STATE_VERSION 1
82 void MEMBUS::save_state(FILEIO* state_fio)
84 state_fio->FputUint32(STATE_VERSION);
85 state_fio->FputInt32(this_device_id);
87 MEMORY::save_state(state_fio);
88 state_fio->Fwrite(ram, sizeof(ram), 1);
89 state_fio->FputUint32(basic_addr.d);
90 state_fio->FputBool(ram_selected);
93 bool MEMBUS::load_state(FILEIO* state_fio)
95 if(state_fio->FgetUint32() != STATE_VERSION) {
98 if(state_fio->FgetInt32() != this_device_id) {
101 if(!MEMORY::load_state(state_fio)) {
104 state_fio->Fread(ram, sizeof(ram), 1);
105 basic_addr.d = state_fio->FgetUint32();
106 ram_selected = state_fio->FgetBool();