2 Skelton for retropc emulator
4 Origin : MAME i286 core
5 Author : Kyuma.Ohta <whatisthis.sowhat _at_ gmail.com>
7 History: 2019.06.27 Split from i286.cpp.
14 #include "i80x86_commondefs.h"
16 /* ----------------------------------------------------------------------------
18 ---------------------------------------------------------------------------- */
21 // API of bios_int_i86() / bios_caii_i86() has changed.
22 // regs[8] regs[9] are added.These entries set redirect-address by PSEUDO-BIOS.
23 // If need, will add more entries for cycle#.
26 #define cpu_state i8086_state
27 #include "mame/emu/cpu/i86/v30.c"
28 #include "mame/emu/cpu/nec/necdasm.c"
31 void V30::initialize()
34 n_cpu_type = N_CPU_TYPE_V30;
37 opaque = CPU_INIT_CALL( v30 );
39 cpu_state *cpustate = (cpu_state *)opaque;
40 cpustate->pic = d_pic;
41 cpustate->program = d_mem;
43 //#ifdef I86_PSEUDO_BIOS
44 cpustate->bios = d_bios;
46 //#ifdef SINGLE_MODE_DMA
47 cpustate->dma = d_dma;
50 cpustate->debugger = d_debugger;
51 cpustate->program_stored = d_mem;
52 cpustate->io_stored = d_io;
54 if(d_debugger != NULL) {
55 d_debugger->set_context_mem(d_mem);
56 d_debugger->set_context_io(d_io);
66 cpu_state *cpustate = (cpu_state *)opaque;
67 int busreq = cpustate->busreq;
68 int haltreq = cpustate->haltreq;
70 CPU_RESET_CALL( v30 );
72 cpustate->pic = d_pic;
73 cpustate->program = d_mem;
75 //#ifdef I86_PSEUDO_BIOS
76 cpustate->bios = d_bios;
78 //#ifdef SINGLE_MODE_DMA
79 cpustate->dma = d_dma;
83 cpustate->debugger = d_debugger;
84 cpustate->program_stored = d_mem;
85 cpustate->io_stored = d_io;
87 cpustate->busreq = busreq;
88 cpustate->haltreq = haltreq;
91 int V30::run(int icount)
93 cpu_state *cpustate = (cpu_state *)opaque;
95 ret = CPU_EXECUTE_CALL( v30 );
98 // Belows are common to V30:: .
99 //uint32_t V30::read_signal(int id)
100 //void V30::write_signal(int id, uint32_t data, uint32_t mask)
101 //void V30::set_intr_line(bool line, bool pending, uint32_t bit)
102 //void V30::set_extra_clock(int icount)
103 //int V30::get_extra_clock()
104 //uint32_t V30::get_pc()
105 //uint32_t V30::get_next_pc()
106 //uint32_t V30::translate_address(int segment, uint32_t offset)
107 //void V30::write_debug_data8(uint32_t addr, uint32_t data)
108 //uint32_t V30::read_debug_data8(uint32_t addr)
109 //void V30::write_debug_data16(uint32_t addr, uint32_t data)
110 //uint32_t V30::read_debug_data16(uint32_t addr)
111 //void V30::write_debug_io8(uint32_t addr, uint32_t data)
112 //uint32_t V30::read_debug_io8(uint32_t addr) {
113 //void V30::write_debug_io16(uint32_t addr, uint32_t data)
114 //uint32_t V30::read_debug_io16(uint32_t addr) {
115 //bool V30::write_debug_reg(const _TCHAR *reg, uint32_t data)
116 //uint32_t V30::read_debug_reg(const _TCHAR *reg)
117 //bool V30::get_debug_regs_info(_TCHAR *buffer, size_t buffer_len)
118 int V30::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
120 cpu_state *cpustate = (cpu_state *)opaque;
121 UINT64 eip = pc - cpustate->base[CS];
123 for(int i = 0; i < 16; i++) {
125 ops[i] = d_mem->read_data8w(pc + i, &wait);
129 return CPU_DISASSEMBLE_CALL(nec_generic) & DASMFLAG_LENGTHMASK;