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 #include "../../statesub.h"
84 void MEMBUS::decl_state()
86 enter_decl_state(STATE_VERSION);
88 MEMORY::decl_state(); // ??
90 DECL_STATE_ENTRY_1D_ARRAY(ram, sizeof(ram));
91 DECL_STATE_ENTRY_PAIR(basic_addr);
92 DECL_STATE_ENTRY_BOOL(ram_selected);
97 void MEMBUS::save_state(FILEIO* state_fio)
99 if(state_entry != NULL) {
100 state_entry->save_state(state_fio);
103 // state_fio->FputUint32(STATE_VERSION);
104 // state_fio->FputInt32(this_device_id);
106 // MEMORY::save_state(state_fio); // OK?
108 // state_fio->Fwrite(ram, sizeof(ram), 1);
109 // state_fio->FputUint32(basic_addr.d);
110 // state_fio->FputBool(ram_selected);
113 bool MEMBUS::load_state(FILEIO* state_fio)
116 if(state_entry != NULL) {
117 mb = state_entry->load_state(state_fio);
123 // if(state_fio->FgetUint32() != STATE_VERSION) {
126 // if(state_fio->FgetInt32() != this_device_id) {
130 // if(!MEMORY::load_state(state_fio)) { // OK?
134 // state_fio->Fread(ram, sizeof(ram), 1);
135 // basic_addr.d = state_fio->FgetUint32();
136 // ram_selected = state_fio->FgetBool();