bool __315_5124_LIMIT_SPRITES;
public:
- _315_5124(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ _315_5124(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_irq);
set_device_name(_T("315-5124"));
void apu_write_command ( uint8_t cmd );
public:
- AM9511(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ AM9511(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
_APU_CLOCK = 1.0e6;
set_device_name(_T("AM9511"));
bool prev, first;
public:
- AND(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ AND(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs);
bits_mask = bits_in = 0;
void update_event();
public:
- AY_3_891X(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ AY_3_891X(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
#ifdef SUPPORT_AY_3_891X_PORT
for(int i = 0; i < 2; i++) {
bool mute;
public:
- BEEP(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ BEEP(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
volume_l = volume_r = 1024;
set_device_name(_T("Beep Generator"));
message("* vm/common_vm")
-SET(THIS_LIB_VERSION 1.5.0)
+SET(THIS_LIB_VERSION 1.6.0)
#include(cotire)
set(s_vm_common_vm_srcs
# COTIRE_PREFIX_HEADER_IGNORE_PATH ${SRC_BASE_DIR}/vm/mame
#)
+add_definitions(-D_LIBRARY_NAME=libCSPcommon_vm.${THIS_LIB_VERSION})
+
if(WIN32)
include (GenerateExportHeader)
#add_library(CSPcommon_vm SHARED
int load_msx_cas_image();
public:
- DATAREC(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ DATAREC(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_ear);
initialize_output_signals(&outputs_remote);
}
}
public:
- DEBUGGER(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ DEBUGGER(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
memset(&bp, 0, sizeof(bp));
memset(&rbp, 0, sizeof(rbp));
class DEVICE
{
protected:
- VM* vm;
+ VM_TEMPLATE* vm;
EMU* emu;
OSD* osd;
#if defined(_USE_QT)
#endif
public:
- DEVICE(VM* parent_vm, EMU* parent_emu) : vm(parent_vm), emu(parent_emu)
+ DEVICE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : vm(parent_vm), emu(parent_emu)
{
#if defined(_USE_QT)
osd = emu->get_osd();
}
}
public:
- EVENT(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ EVENT(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
dcount_cpu = dcount_sound = 0;
frame_event_count = vline_event_count = 0;
class BUBBLECASETTE: public DEVICE {
protected:
- EMU *p_emu;
- VM *p_vm;
-
FILEIO* fio;
bool is_wrote;
bool read_one_page(void);
bool write_one_page(void);
public:
- BUBBLECASETTE(VM* parent_vm, EMU* parent_emu);
+ BUBBLECASETTE(VM_TEMPLATE* parent_vm, EMU* parent_emu);
~BUBBLECASETTE();
void initialize();
#include "./kanjirom.h"
#include "../../statesub.h"
-DISPLAY::DISPLAY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+DISPLAY::DISPLAY(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
- p_vm = parent_vm;
- p_emu = parent_emu;
ins_led = NULL;
kana_led = NULL;
caps_led = NULL;
#endif
if((display_mode == DISPLAY_MODE_8_400L) || (display_mode == DISPLAY_MODE_1_400L)) {
usec = 0.33 * 1000.0;
- p_vm->set_vm_frame_rate(55.40);
+ vm->set_vm_frame_rate(55.40);
} else {
usec = 0.51 * 1000.0;
- p_vm->set_vm_frame_rate(FRAMES_PER_SEC);
+ vm->set_vm_frame_rate(FRAMES_PER_SEC);
}
//usec = 16.0;
//register_event(this, EVENT_FM7SUB_VSTART, usec, false, &vstart_event_id); // NEXT CYCLE_
subclock = subclock / 3;
}
if(prev_clock != subclock) {
- p_vm->set_cpu_clock(subcpu, subclock);
+ vm->set_cpu_clock(subcpu, subclock);
}
prev_clock = subclock;
}
}
} else { // 200Line
- p_vm->set_vm_frame_rate(FRAMES_PER_SEC);
+ vm->set_vm_frame_rate(FRAMES_PER_SEC);
#if !defined(FIXED_FRAMEBUFFER_SIZE)
emu->set_vm_screen_size(640, 200, WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_WIDTH_ASPECT, WINDOW_HEIGHT_ASPECT);
for(int y = 0; y < 200; y++) {
if(oldmode != display_mode) {
scrntype_t *pp;
if(mode320 || mode256k) {
- if(oldmode == DISPLAY_MODE_8_400L) p_vm->set_vm_frame_rate(FRAMES_PER_SEC);
+ if(oldmode == DISPLAY_MODE_8_400L) vm->set_vm_frame_rate(FRAMES_PER_SEC);
#if !defined(FIXED_FRAMEBUFFER_SIZE)
emu->set_vm_screen_size(320, 200, WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_WIDTH_ASPECT, WINDOW_HEIGHT_ASPECT);
for(y = 0; y < 200; y++) {
//emu->set_vm_screen_lines(200);
} else if(display_mode == DISPLAY_MODE_8_400L) {
emu->set_vm_screen_size(640, 400, WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_WIDTH_ASPECT, WINDOW_HEIGHT_ASPECT);
- if(oldmode != DISPLAY_MODE_8_400L) p_vm->set_vm_frame_rate(55.40);
+ if(oldmode != DISPLAY_MODE_8_400L) vm->set_vm_frame_rate(55.40);
for(y = 0; y < 400; y++) {
pp = emu->get_screen_buffer(y);
if(pp != NULL) memset(pp, 0x00, 640 * sizeof(scrntype_t));
}
} else {
- if(oldmode == DISPLAY_MODE_8_400L) p_vm->set_vm_frame_rate(FRAMES_PER_SEC);
+ if(oldmode == DISPLAY_MODE_8_400L) vm->set_vm_frame_rate(FRAMES_PER_SEC);
#if !defined(FIXED_FRAMEBUFFER_SIZE)
emu->set_vm_screen_size(640, 200, WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_WIDTH_ASPECT, WINDOW_HEIGHT_ASPECT);
for(y = 0; y < 200; y++) {
}
} else { // 200Line
- p_vm->set_vm_frame_rate(FRAMES_PER_SEC);
+ vm->set_vm_frame_rate(FRAMES_PER_SEC);
#if !defined(FIXED_FRAMEBUFFER_SIZE)
emu->set_vm_screen_size(640, 200, WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_WIDTH_ASPECT, WINDOW_HEIGHT_ASPECT);
for(int y = 0; y < 200; y++) {
if(oldmode != display_mode) {
scrntype_t *pp;
if(mode320 || mode256k) {
- if(oldmode == DISPLAY_MODE_8_400L) p_vm->set_vm_frame_rate(FRAMES_PER_SEC);
+ if(oldmode == DISPLAY_MODE_8_400L) vm->set_vm_frame_rate(FRAMES_PER_SEC);
#if !defined(FIXED_FRAMEBUFFER_SIZE)
emu->set_vm_screen_size(320, 200, WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_WIDTH_ASPECT, WINDOW_HEIGHT_ASPECT);
for(y = 0; y < 200; y++) {
//emu->set_vm_screen_lines(200);
} else { // 200 lines, 8 colors.
if(display_mode == DISPLAY_MODE_8_400L) {
- if(oldmode != DISPLAY_MODE_8_400L) p_vm->set_vm_frame_rate(55.40);
+ if(oldmode != DISPLAY_MODE_8_400L) vm->set_vm_frame_rate(55.40);
} else {
- if(oldmode == DISPLAY_MODE_8_400L) p_vm->set_vm_frame_rate(FRAMES_PER_SEC);
+ if(oldmode == DISPLAY_MODE_8_400L) vm->set_vm_frame_rate(FRAMES_PER_SEC);
}
#if !defined(FIXED_FRAMEBUFFER_SIZE)
int ymax = (display_mode == DISPLAY_MODE_8_400L) ? 400 : 200;
bool clear_on_reset;
bool clear_with_zero;
public:
- DUMMYDEVICE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ DUMMYDEVICE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
status = 0x00000000;
clear_on_reset = true;
#include "./jcommcard.h"
#endif
-VM::VM(EMU* parent_emu): emu(parent_emu)
+VM::VM(EMU* parent_emu): VM_TEMPLATE(parent_emu)
{
first_device = last_device = NULL;
//#include "../../config.h"
#include "../../common.h"
#include "../../fileio.h"
+#include "../vm_template.h"
#ifdef USE_SOUND_VOLUME
static const _TCHAR *sound_device_caption[] = {
#endif
class csp_state_utils;
-class VM {
+class VM : public VM_TEMPLATE {
protected:
- EMU* emu;
+// EMU* emu;
// devices
- EVENT* event;
+// EVENT* event;
DEVICE* dummycpu;
MC6809* maincpu;
bool connect_320kfdc;
bool connect_1Mfdc;
- csp_state_utils *state_entry;
+ //csp_state_utils *state_entry;
public:
// ----------------------------------------
// initialize
// debugger
DEVICE *get_cpu(int index);
#endif
- void initialize(void);
void connect_bus(void);
void update_dipswitch(void);
void set_cpu_clock(DEVICE *cpu, uint32_t clocks);
// devices
DEVICE* get_device(int id);
- DEVICE* dummy;
- DEVICE* first_device;
- DEVICE* last_device;
+// DEVICE* dummy;
+// DEVICE* first_device;
+// DEVICE* last_device;
};
#endif
uint16_t bit_trans_table_5[256][8];
#endif
protected:
- EMU *p_emu;
- VM *p_vm;
-
uint32_t (DISPLAY::*read_cpu_func_table[512])(uint32_t);
uint32_t (DISPLAY::*read_dma_func_table[512])(uint32_t);
void (DISPLAY::*write_cpu_func_table[512])(uint32_t, uint8_t);
}
public:
- DISPLAY(VM *parent_vm, EMU *parent_emu);
+ DISPLAY(VM_TEMPLATE* parent_vm, EMU *parent_emu);
~DISPLAY();
void event_callback(int event_id, int err);
void write_signal(int id, uint32_t data, uint32_t mask);
#endif
class KEYBOARD : public DEVICE {
protected:
- VM* p_vm;
- EMU* p_emu;
uint8_t get_keycode_high(void);
uint8_t get_keycode_low(void);
void turn_on_ins_led(void);
int repeat_time_long;
public:
- KEYBOARD(VM *parent_vm, EMU *parent_emu);
+ KEYBOARD(VM_TEMPLATE* parent_vm, EMU *parent_emu);
~KEYBOARD();
void key_up(uint32_t vk);
#endif
#include "../../statesub.h"
-FM7_MAINIO::FM7_MAINIO(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+FM7_MAINIO::FM7_MAINIO(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
int i;
- p_vm = parent_vm;
- p_emu = parent_emu;
for(i = 0; i < 3; i++) {
opn[i] = NULL;
}
outputs_t firq_bus;
outputs_t nmi_bus;
protected:
- VM* p_vm;
- EMU* p_emu;
-
uint8_t io_w_latch[0x100];
/* FD00: R */
void decl_state_opn(void);
public:
- FM7_MAINIO(VM* parent_vm, EMU* parent_emu);
+ FM7_MAINIO(VM_TEMPLATE* parent_vm, EMU* parent_emu);
~FM7_MAINIO();
void event_vline(int v, int clock);
#if defined(CAPABLE_DICTROM)
#include "kanjirom.h"
#endif
-FM7_MAINMEM::FM7_MAINMEM(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+FM7_MAINMEM::FM7_MAINMEM(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
- p_vm = parent_vm;
- p_emu = parent_emu;
#if !defined(_FM77AV_VARIANTS)
for(int i = 0; i < 8; i++) fm7_bootroms[i] = (uint8_t *)malloc(0x200);
#endif
bool boot_ram_write;
#endif
protected:
- EMU *p_emu;
- VM *p_vm;
-
uint8_t fm7_mainmem_omote[0x8000];
uint8_t fm7_mainmem_ura[0x7c00];
uint8_t fm7_mainmem_basicrom[0x7c00];
return static_cast<T *>(np)->read_dma_data8(addr);
}
public:
- FM7_MAINMEM(VM* parent_vm, EMU* parent_emu);
+ FM7_MAINMEM(VM_TEMPLATE* parent_vm, EMU* parent_emu);
~FM7_MAINMEM();
uint32_t read_data8(uint32_t addr);
uint32_t read_dma_data8(uint32_t addr);
#include "./fm7_mainmem.h"
#include "bubblecasette.h"
-FM8_MAINIO::FM8_MAINIO(VM* parent_vm, EMU* parent_emu) : FM7_MAINIO(parent_vm, parent_emu)
+FM8_MAINIO::FM8_MAINIO(VM_TEMPLATE* parent_vm, EMU* parent_emu) : FM7_MAINIO(parent_vm, parent_emu)
{
psg = NULL;
bubble_casette[0] = NULL;
uint8_t get_extirq_whg(void) override;
uint8_t get_extirq_thg(void) override;
public:
- FM8_MAINIO(VM* parent_vm, EMU* parent_emu);
+ FM8_MAINIO(VM_TEMPLATE* parent_vm, EMU* parent_emu);
~FM8_MAINIO();
void write_data8(uint32_t addr, uint32_t data);
#include "../device.h"
#include "./bubblecasette.h"
-BUBBLECASETTE::BUBBLECASETTE(VM *parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
+BUBBLECASETTE::BUBBLECASETTE(VM_TEMPLATE* parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
{
fio = NULL;
memset(image_path, 0x00, _MAX_PATH * sizeof(_TCHAR));
memset(bubble_data, 0x00, 0x20000);
bubble_inserted = false;
read_access = write_access = false;
- p_emu = parent_emu;
set_device_name(_T("FM Bubble Casette"));
}
void do_transfer_end(int ch);
void do_irq(void);
public:
- HD6844(VM *parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
+ HD6844(VM_TEMPLATE* parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
{
int i;
for(i = 0; i < 4; i++) {
#include "../mc6809.h"
#include "./jcommcard.h"
-FM7_JCOMMCARD::FM7_JCOMMCARD(VM *parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
+FM7_JCOMMCARD::FM7_JCOMMCARD(VM_TEMPLATE* parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
{
n_bank = 0;
rcb_address = 0;
uint8_t p_ram[0x2000];
public:
- FM7_JCOMMCARD(VM *parent_vm, EMU *parent_emu);
+ FM7_JCOMMCARD(VM_TEMPLATE* parent_vm, EMU *parent_emu);
~FM7_JCOMMCARD();
void initialize(void);
void release(void);
#include "../../config.h"
#include "../../emu.h"
-JOYSTICK::JOYSTICK(VM *parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
+JOYSTICK::JOYSTICK(VM_TEMPLATE* parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
{
- p_vm = parent_vm;
- p_emu = parent_emu;
rawdata = NULL;
mouse_state = NULL;
lpt_type = 0;
void JOYSTICK::initialize()
{
- rawdata = p_emu->get_joy_buffer();
- mouse_state = p_emu->get_mouse_buffer();
+ rawdata = emu->get_joy_buffer();
+ mouse_state = emu->get_mouse_buffer();
emulate_mouse[0] = emulate_mouse[1] = false;
joydata[0] = joydata[1] = 0xff;
dx = dy = 0;
emulate_mouse[1] = false;
break;
}
- mouse_state = p_emu->get_mouse_buffer();
+ mouse_state = emu->get_mouse_buffer();
#endif
if(opn != NULL) {
opn->write_signal(SIG_YM2203_PORT_A, 0xff, 0xff);
uint32_t retval = 0xff;
uint32_t val;
#if !defined(_FM8)
- mouse_state = p_emu->get_mouse_buffer();
+ mouse_state = emu->get_mouse_buffer();
if(mouse_state != NULL) {
dx += mouse_state[0];
dy += mouse_state[1];
if((stat & 0x02) == 0) mouse_button |= 0x20; // right
}
#endif
- rawdata = p_emu->get_joy_buffer();
+ rawdata = emu->get_joy_buffer();
if(rawdata == NULL) return;
for(ch = 0; ch < 2; ch++) {
uint8_t lpmask;
int lpt_type;
protected:
- VM* p_vm;
- EMU* p_emu;
DEVICE *opn;
private:
void update_strobe(bool flag);
uint32_t mouse_type;
public:
- JOYSTICK(VM *parent_vm, EMU *parent_emu);
+ JOYSTICK(VM_TEMPLATE* parent_vm, EMU *parent_emu);
~JOYSTICK();
void initialize(void);
#include "fm7_common.h"
#include "kanjirom.h"
-KANJIROM::KANJIROM(VM *parent_vm, EMU* parent_emu, bool type_2std): DEVICE(parent_vm, parent_emu)
+KANJIROM::KANJIROM(VM_TEMPLATE* parent_vm, EMU* parent_emu, bool type_2std): DEVICE(parent_vm, parent_emu)
{
FILEIO *fio;
read_ok = false;
fio = new FILEIO();
memset(data_table, 0xff, 0x20000);
// read_table[0].memory = data_table;
- p_emu = parent_emu;
-
if(type_2std) {
class2 = true;
if(fio->Fopen(create_local_path(_T(ROM_KANJI_CLASS2)), FILEIO_READ_BINARY)) {
class VM;
class KANJIROM: public DEVICE {
private:
- EMU *p_emu;
-
uint8_t data_table[0x20000];
bool read_ok;
bool class2;
pair_t kanjiaddr;
public:
- KANJIROM(VM *parent_vm, EMU* parent_emu, bool type_2std);
+ KANJIROM(VM_TEMPLATE* parent_vm, EMU* parent_emu, bool type_2std);
~KANJIROM();
void write_data8(uint32_t addr, uint32_t data);
uint32_t read_data8(uint32_t addr);
}
}
-KEYBOARD::KEYBOARD(VM *parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
+KEYBOARD::KEYBOARD(VM_TEMPLATE* parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
{
- p_vm = parent_vm;
- p_emu = parent_emu;
-
#if defined(_FM77AV_VARIANTS)
beep = NULL;
#endif
// LINE
void do_line(void);
public:
- MB61VH010(VM *parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
+ MB61VH010(VM_TEMPLATE* parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
{
target = NULL;
direct_access_offset = 0;
void update_keyboard();
public:
- KEYBOARD(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ KEYBOARD(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
set_device_name(_T("Keyboard"));
}
void update_intr();
public:
- HD146818P(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ HD146818P(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_intr);
initialize_output_signals(&outputs_sqw);
inline void count_up_or_down();
public:
- HD44102(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ HD44102(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
_SCREEN_WIDTH = 192;
_SCREEN_HEIGHT = 64;
void set_hsync(bool val);
public:
- HD46505(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ HD46505(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_disp);
initialize_output_signals(&outputs_vblank);
void illegal() override;
public:
- HD6301(VM* parent_vm, EMU* parent_emu) : MC6801(parent_vm, parent_emu)
+ HD6301(VM_TEMPLATE* parent_vm, EMU* parent_emu) : MC6801(parent_vm, parent_emu)
{
set_device_name(_T("HD6301 MPU"));
}
void paint(int sx, int sy, int col);
public:
- HD63484(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {
+ HD63484(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {
set_device_name(_T("HD63484 ACRTC"));
}
~HD63484() {}
virtual int run_one_opecode();
public:
- HUC6280_BASE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {
+ HUC6280_BASE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {
total_icount = prev_total_icount = 0;
set_device_name(_T("HuC6280 CPU"));
}
protected:
int run_one_opecode() override;
public:
- HUC6280(VM* parent_vm, EMU* parent_emu) : HUC6280_BASE(parent_vm, parent_emu) {
+ HUC6280(VM_TEMPLATE* parent_vm, EMU* parent_emu) : HUC6280_BASE(parent_vm, parent_emu) {
set_device_name(_T("HuC6280 CPU"));
}
~HUC6280() {}
void *opaque;
public:
- I286(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ I286(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
#ifdef I86_PSEUDO_BIOS
d_bios = NULL;
void *opaque;
public:
- I386(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ I386(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
#ifdef I386_PSEUDO_BIOS
d_bios = NULL;
void check_interrupt();
//void OP(uint8_t code);
public:
- I8080(VM* parent_vm, EMU* parent_emu) : I8080_BASE(parent_vm, parent_emu)
+ I8080(VM_TEMPLATE* parent_vm, EMU* parent_emu) : I8080_BASE(parent_vm, parent_emu)
{
#ifdef HAS_I8085
set_device_name(_T("i8085 CPU"));
uint64_t total_count;
uint64_t prev_total_count;
public:
- I8080_BASE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ I8080_BASE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
BUSREQ = false;
SID = true;
void set_pio(int ch, uint8_t data);
public:
- I8155(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ I8155(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
for(int i = 0; i < 3; i++) {
initialize_output_signals(&pio[i].outputs);
#include "i8237.h"
-I8237::I8237(VM* parent_vm, EMU* parent_emu) : I8237_BASE(parent_vm, parent_emu)
+I8237::I8237(VM_TEMPLATE* parent_vm, EMU* parent_emu) : I8237_BASE(parent_vm, parent_emu)
{
for(int i = 0; i < 4; i++) {
dma[i].dev = vm->dummy;
uint32_t read_io(int ch);
public:
- I8237_BASE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ I8237_BASE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
for(int i = 0; i < 4; i++) {
//dma[i].dev = vm->dummy;
DEVICE* d_dma;
#endif
public:
- I8237(VM* parent_vm, EMU* parent_emu);
+ I8237(VM_TEMPLATE* parent_vm, EMU* parent_emu);
~I8237();
virtual void write_io8(uint32_t addr, uint32_t data);
int recv_id, send_id;
public:
- I8251(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ I8251(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_out);
initialize_output_signals(&outputs_rxrdy);
int get_next_count(int ch);
public:
- I8253(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ I8253(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
for(int i = 0; i < 3; i++) {
initialize_output_signals(&counter[i].outputs);
bool __I8255_AUTO_HAND_SHAKE;
public:
- I8255(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ I8255(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
for(int i = 0; i < 3; i++) {
initialize_output_signals(&port[i].outputs);
void update_intr();
public:
- I8259(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ I8259(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
d_cpu = NULL;
__I8259_MAX_CHIPS = 0;
inline void _invalid();
public:
- I86(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ I86(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
d_bios = NULL;
#ifdef SINGLE_MODE_DMA
uint32_t read_port32(uint32_t addr, bool is_dma);
public:
- IO(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ IO(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
#ifdef _IO_DEBUG_LOG
cpu_index = 0;
void set_cur_track(int track);
public:
- LD700(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ LD700(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_exv);
initialize_output_signals(&outputs_ack);
extern CSP_Logger *csp_logger;
#endif
-DEVICE::DEVICE(VM* parent_vm, EMU* parent_emu) : vm(parent_vm), emu(parent_emu)
+DEVICE::DEVICE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : vm(parent_vm), emu(parent_emu)
{
vm = parent_vm;
emu = parent_emu;
#define SIG_SCSI_ACK 309
#define SIG_SCSI_RST 310
+#include "vm_template.h"
+
class CSP_Logger;
class csp_state_utils;
-class VM;
+class VM_TEMPLATE;
class EMU;
class OSD;
class DEVICE
{
protected:
- VM* vm;
+ VM_TEMPLATE* vm;
EMU* emu;
OSD* osd;
csp_state_utils *state_entry;
CSP_Logger *p_logger;
public:
- DEVICE(VM* parent_vm, EMU* parent_emu);
+ DEVICE(VM_TEMPLATE* parent_vm, EMU* parent_emu);
//ToDo: Will implement real destructor per real classes and below destructor decl. with "virtual".
// This makes warning:
//"deleting object of polymorphic class type 'DEVICE' which has non-virtual
{
event_manager = device;
}
- virtual int get_event_manager_id();
+ int get_event_manager_id();
virtual void register_event(DEVICE* device, int event_id, double usec, bool loop, int* register_id);
virtual void register_event_by_clock(DEVICE* device, int event_id, uint64_t clock, bool loop, int* register_id);
virtual void cancel_event(DEVICE* device, int register_id);
virtual uint32_t get_passed_clock_since_vline();
virtual double get_passed_usec_since_vline();
virtual int get_cur_vline();
- virtual int get_cur_vline_clocks();
+ int get_cur_vline_clocks();
virtual uint32_t get_cpu_pc(int index);
virtual void request_skip_frames();
virtual void set_frames_per_sec(double frames);
#endif
public:
- I386(VM* parent_vm, EMU* parent_emu) : I386_BASE(parent_vm, parent_emu)
+ I386(VM_TEMPLATE* parent_vm, EMU* parent_emu) : I386_BASE(parent_vm, parent_emu)
{
#ifdef USE_DEBUGGER
d_debugger = NULL;
#include "./device.h"
#define SIG_I386_A20 1
-class VM;
+class VM_TEMPLATE;
class EMU;
class DEBUGGER;
class I386_OPS_BASE;
DEVICE *d_bios;
DEVICE *d_dma;
public:
- I386_BASE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ I386_BASE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
d_bios = NULL;
d_dma = NULL;
void _0fpre(); /* Opcode 0x0f */
#endif
public:
- I86(VM* parent_vm, EMU* parent_emu) : I86_BASE(parent_vm, parent_emu)
+ I86(VM_TEMPLATE* parent_vm, EMU* parent_emu) : I86_BASE(parent_vm, parent_emu)
{
#ifdef SINGLE_MODE_DMA
d_dma = NULL;
inline void _invalid();
public:
- I86_BASE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ I86_BASE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
busreq = false;
d_bios = NULL;
};
-i80286_cpu_device::i80286_cpu_device(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+i80286_cpu_device::i80286_cpu_device(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
memcpy(m_timing, m_i80286_timing, sizeof(m_i80286_timing));
m_amask = 0xffffff;
/***************************************************************************/
-i8088_cpu_device::i8088_cpu_device(VM* parent_vm, EMU* parent_emu) : i8086_cpu_device(parent_vm, parent_emu)
+i8088_cpu_device::i8088_cpu_device(VM_TEMPLATE* parent_vm, EMU* parent_emu) : i8086_cpu_device(parent_vm, parent_emu)
{
memcpy(m_timing, m_i8086_timing, sizeof(m_i8086_timing));
m_amask = 0x000fffff;
}
-i8086_cpu_device::i8086_cpu_device(VM* parent_vm, EMU* parent_emu) : i8086_common_cpu_device(parent_vm, parent_emu)
+i8086_cpu_device::i8086_cpu_device(VM_TEMPLATE* parent_vm, EMU* parent_emu) : i8086_common_cpu_device(parent_vm, parent_emu)
{
memcpy(m_timing, m_i8086_timing, sizeof(m_i8086_timing));
m_extra_cycles = 0;
m_extra_icount = 0;
}
-i8086_common_cpu_device::i8086_common_cpu_device(VM* prev_vm, EMU* prev_emu)
+i8086_common_cpu_device::i8086_common_cpu_device(VM_TEMPLATE* prev_vm, EMU* prev_emu)
: DEVICE(prev_vm, prev_emu)
, m_ip(0)
, m_TF(0)
{
public:
// construction/destruction
- i8086_common_cpu_device(VM *prev_vm, EMU* prev_emu);
+ i8086_common_cpu_device(VM_TEMPLATE* prev_vm, EMU* prev_emu);
~i8086_common_cpu_device();
virtual void initialize();
{
public:
// construction/destruction
- i8086_cpu_device(VM* prev_vm, EMU* prev_emu);
+ i8086_cpu_device(VM_TEMPLATE* prev_vm, EMU* prev_emu);
~i8086_cpu_device();
// device_memory_interface overrides
uint8_t din;
public:
- LS244(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ LS244(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs);
set_device_name(_T("74LS244 Octal 3-State Buffer"));
bool prev_in;
public:
- LS393(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ LS393(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
for(int i = 0; i < 8; i++) {
initialize_output_signals(&outputs[i]);
//void save_state_regs(FILEIO* state_fio);
//void load_state_regs(FILEIO* state_fio);
public:
- M6502_BASE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ M6502_BASE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
total_icount = prev_total_icount = 0;
busreq = false;
protected:
void OP(uint8_t code);
public:
- M6502(VM* parent_vm, EMU* parent_emu) : M6502_BASE(parent_vm, parent_emu)
+ M6502(VM_TEMPLATE* parent_vm, EMU* parent_emu) : M6502_BASE(parent_vm, parent_emu)
{
}
~M6502() {}
protected:
void OP(uint8_t code);
public:
- N2A03(VM* parent_vm, EMU* parent_emu) : M6502_BASE(parent_vm, parent_emu)
+ N2A03(VM_TEMPLATE* parent_vm, EMU* parent_emu) : M6502_BASE(parent_vm, parent_emu)
{
}
~N2A03() {}
void adx_ex();
public:
- MB8861(VM* parent_vm, EMU* parent_emu) : MC6800(parent_vm, parent_emu)
+ MB8861(VM_TEMPLATE* parent_vm, EMU* parent_emu) : MC6800(parent_vm, parent_emu)
{
set_device_name(_T("MB8861 MPU"));
}
void decl_state_fdc(int ch);
public:
- MB8877(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MB8877(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_irq);
initialize_output_signals(&outputs_drq);
bool __USE_DEBUGGER;
public:
- MC6800(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MC6800(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
d_mem = NULL;
d_debugger = NULL;
//#endif
public:
- MC6801(VM* parent_vm, EMU* parent_emu) : MC6800(parent_vm, parent_emu)
+ MC6801(VM_TEMPLATE* parent_vm, EMU* parent_emu) : MC6800(parent_vm, parent_emu)
{
for(int i = 0; i < 4; i++) {
initialize_output_signals(&port[i].outputs);
int frames_count;
public:
- MC6809_BASE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MC6809_BASE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
total_icount = prev_total_icount = 0;
{
public:
- MC6809(VM* parent_vm, EMU* parent_emu) : MC6809_BASE(parent_vm, parent_emu)
+ MC6809(VM_TEMPLATE* parent_vm, EMU* parent_emu) : MC6809_BASE(parent_vm, parent_emu)
{
}
~MC6809() {}
} port[2];
public:
- MC6820(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MC6820(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
for(int i = 0; i < 2; i++) {
initialize_output_signals(&port[i].outputs);
void set_clock(int idx, int state);
public:
- MC6840(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MC6840(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_ch0);
initialize_output_signals(&outputs_ch1);
void update_irq();
public:
- MC6844(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MC6844(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
// TIP: if((DEVICE::prev_device == NULL) || (DEVICE::this_device_id == 0)) DEVICE must be DUMMY.
// And, at this device, should not be FIRST DEVICE. 20170613 Ohta.
virtual void draw_alpha();
public:
- MC6847_BASE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MC6847_BASE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
d_cpu = NULL;
ag = as = intext = css = inv = false;
protected:
void draw_alpha();
public:
- MC6847(VM* parent_vm, EMU* parent_emu) : MC6847_BASE(parent_vm, parent_emu)
+ MC6847(VM_TEMPLATE* parent_vm, EMU* parent_emu) : MC6847_BASE(parent_vm, parent_emu)
{
}
~MC6847() {};
void update_irq();
public:
- MC6850(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MC6850(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_out);
initialize_output_signals(&outputs_rts);
private:
uint8_t ram[0x100];
public:
- MCS48MEM(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MCS48MEM(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
memset(ram, 0, sizeof(ram));
set_device_name(_T("MCS48 MEMORY BUS"));
inline UINT8 opcode_fetch(mcs48_state *cpustate);
int op_call(mcs48_state *);
public:
- MCS48_BASE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MCS48_BASE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
d_mem = d_io = d_intr = NULL;
d_debugger = NULL;
public:
- MCS48(VM* parent_vm, EMU* parent_emu) : MCS48_BASE(parent_vm, parent_emu)
+ MCS48(VM_TEMPLATE* parent_vm, EMU* parent_emu) : MCS48_BASE(parent_vm, parent_emu)
{
}
~MCS48() {}
uint8_t *wr_dummy;
public:
- MEMORY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MEMORY(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
addr_max = MEMORY_ADDR_MAX;
bank_size = MEMORY_BANK_SIZE;
int volume_l, volume_r;
public:
- MSM5205(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MSM5205(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&m_vclk_cb);
volume_m = 1024;
DLL_PREFIX_I struct cur_time_s cur_time;
#endif
-MSM5832::MSM5832(VM* parent_vm, EMU* parent_emu) : MSM58321_BASE(parent_vm, parent_emu)
+MSM5832::MSM5832(VM_TEMPLATE* parent_vm, EMU* parent_emu) : MSM58321_BASE(parent_vm, parent_emu)
{
set_device_name(_T("MSM5832 RTC"));
}
DLL_PREFIX_I struct cur_time_s cur_time;
#endif
-MSM58321::MSM58321(VM* parent_vm, EMU* parent_emu) : MSM58321_BASE(parent_vm, parent_emu)
+MSM58321::MSM58321(VM_TEMPLATE* parent_vm, EMU* parent_emu) : MSM58321_BASE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_busy);
set_device_name(_T("MSM58321 RTC"));
int start_day;
int start_year;
public:
- MSM58321_BASE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MSM58321_BASE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_data);
set_device_name(_T("MSM5832 RTC"));
void write_to_cur_time();
void set_busy(bool val);
public:
- MSM58321(VM* parent_vm, EMU* parent_emu);
+ MSM58321(VM_TEMPLATE* parent_vm, EMU* parent_emu);
~MSM58321() {}
void initialize();
void set_busy(bool val);
public:
- MSM5832(VM* parent_vm, EMU* parent_emu);
+ MSM5832(VM_TEMPLATE* parent_vm, EMU* parent_emu);
~MSM5832() {}
void initialize();
void finish_paper();
public:
- MZ1P17(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MZ1P17(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_busy);
initialize_output_signals(&outputs_ack);
bool prev, first;
public:
- NAND(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ NAND(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs);
bits_mask = bits_in = 0;
void get_sample();
public:
- NOISE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ NOISE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
buffer_l = buffer_r = NULL;
samples = 0;
bool prev, first;
public:
- NOR(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ NOR(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs);
bits_in = 0;
bool prev, first;
public:
- NOT(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ NOT(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs);
prev = first = true;
bool prev, first;
public:
- OR(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ OR(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs);
bits_in = 0;
unsigned char InD3H_60();
public:
- PC6031(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ PC6031(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
d_noise_seek = NULL;
// d_noise_head_down = NULL;
bool _debug_pc80s31k;
bool pc80s31k_no_wait;
public:
- PC80S31K(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ PC80S31K(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
set_device_name(_T("PC-80S31K FDD"));
#endif
public:
- PCE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ PCE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
volume_l = volume_r = 1024;
set_device_name(_T("PC-Engine Core"));
bool realtime;
public:
- PCM1BIT(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ PCM1BIT(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
volume_l = volume_r = 1024;
set_device_name(_T("1BIT PCM SOUND"));
void close_file();
public:
- PRNFILE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ PRNFILE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_busy);
initialize_output_signals(&outputs_ack);
uint8_t* get_sector(int drv, int trk, int sec);
public:
- PTF20(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ PTF20(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_sio);
set_device_name(_T("Pseudo TF-20 FDD"));
void write_to_cur_time();
public:
- RP5C01(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ RP5C01(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_alarm);
initialize_output_signals(&outputs_pulse);
// csp_state_utils *state_entry;
public:
- SCSI_CDROM(VM* parent_vm, EMU* parent_emu) : SCSI_DEV(parent_vm, parent_emu)
+ SCSI_CDROM(VM_TEMPLATE* parent_vm, EMU* parent_emu) : SCSI_DEV(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_done);
double next_req_usec;
public:
- SCSI_DEV(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ SCSI_DEV(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_dat);
initialize_output_signals(&outputs_bsy);
// csp_state_utils *state_entry;
public:
- SCSI_HDD(VM* parent_vm, EMU* parent_emu) : SCSI_DEV(parent_vm, parent_emu)
+ SCSI_HDD(VM_TEMPLATE* parent_vm, EMU* parent_emu) : SCSI_DEV(parent_vm, parent_emu)
{
for(int i = 0; i < 8; i++) {
disk[i] = NULL;
void set_drq(bool value);
public:
- SCSI_HOST(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ SCSI_HOST(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_irq);
initialize_output_signals(&outputs_drq);
uint32_t _NOISE_DST_TAP;
uint32_t _NOISE_SRC_TAP;
public:
- SN76489AN(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ SN76489AN(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
volume_l = volume_r = 1024;
//#ifdef HAS_SN76489
uint8_t m_shift_counter;
public:
- SY6522(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ SY6522(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_a);
initialize_output_signals(&outputs_b);
void decl_state_fdc(int ch);
public:
- T3444A(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ T3444A(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_rqm);
d_noise_seek = NULL;
uint8_t* rbank[32];
public:
- TF20(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ TF20(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
drive_no = 0;
set_device_name(_T("TF-20 FDD"));
int volume_l, volume_r;
public:
- TMS3631(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ TMS3631(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
volume_l = volume_r = 1024;
set_device_name(_T("TMS3631 SSG"));
inline void draw_screen_256_nonimpose();
public:
- TMS9918A(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ TMS9918A(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_irq);
vram = NULL;
inline uint16_t setst_sla_laeco(uint16_t a, uint16_t c);
public:
- TMS9995(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ TMS9995(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
// init registers
#ifdef USE_DEBUGGER
void update_pointer(uint8_t mode);
public:
- UPD16434(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {
+ UPD16434(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {
set_device_name(_T("uPD16434 LCD Controller"));
}
~UPD16434() {}
//#endif
bool __HAS_UPD4990A;
public:
- UPD1990A(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ UPD1990A(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_dout);
initialize_output_signals(&outputs_tp);
void write_to_cur_time();
public:
- UPD4991A(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {
+ UPD4991A(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {
set_device_name(_T("uPD4991A RTC"));
}
~UPD4991A() {}
bool _SINGLE_MODE_DMA;
public:
- UPD71071(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ UPD71071(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
// TIP: if((DEVICE::prev_device == NULL) || (DEVICE::this_device_id == 0)) DEVICE must be DUMMY.
// And, at this device, should not be FIRST DEVICE. 20170613 Ohta.
//virtual void draw_text();
//virtual void draw_pset(int x, int y);
public:
- UPD7220_BASE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ UPD7220_BASE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_drq);
initialize_output_signals(&outputs_vsync);
void draw_text();
void draw_pset(int x, int y);
public:
- UPD7220(VM* parent_vm, EMU* parent_emu) : UPD7220_BASE(parent_vm, parent_emu)
+ UPD7220(VM_TEMPLATE* parent_vm, EMU* parent_emu) : UPD7220_BASE(parent_vm, parent_emu)
{
}
~UPD7220() {}
void decl_state_fdc(int ch);
public:
- UPD765A(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ UPD765A(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_irq);
initialize_output_signals(&outputs_drq);
int volume_l, volume_r;
public:
- UPD7752(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ UPD7752(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
volume_l = volume_r = 1024;
set_device_name(_T("uPD7752 Voice Synthesizer"));
void OP74();
public:
- UPD7801(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ UPD7801(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
total_count = prev_total_count = 0;
void decl_state_cpustate();
public:
- UPD7810(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ UPD7810(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
#ifdef USE_DEBUGGER
total_icount = prev_total_icount = 0;
//v99x8_device::v99x8_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, UINT32 clock)
//: device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
-v99x8_device::v99x8_device(VM* parent_vm, EMU* parent_emu)
+v99x8_device::v99x8_device(VM_TEMPLATE* parent_vm, EMU* parent_emu)
: DEVICE(parent_vm, parent_emu),
// device_memory_interface(mconfig, *this),
// device_video_interface(mconfig, *this),
//v9938_device::v9938_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
//: v99x8_device(mconfig, V9938, "V9938 VDP", "v9938", tag, owner, clock)
-v9938_device::v9938_device(VM* parent_vm, EMU* parent_emu)
+v9938_device::v9938_device(VM_TEMPLATE* parent_vm, EMU* parent_emu)
: v99x8_device(parent_vm, parent_emu)
{
m_model = MODEL_V9938;
//v9958_device::v9958_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
//: v99x8_device(mconfig, V9938, "V9958 VDP", "v9958", tag, owner, clock)
-v9958_device::v9958_device(VM* parent_vm, EMU* parent_emu)
+v9958_device::v9958_device(VM_TEMPLATE* parent_vm, EMU* parent_emu)
: v99x8_device(parent_vm, parent_emu)
{
m_model = MODEL_V9958;
int __SCREEN_WIDTH;
int __SCREEN_HEIGHT;
// construction/destruction
- //v99x8_device(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu){}
- v99x8_device(VM* parent_vm, EMU* parent_emu);
+ //v99x8_device(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu){}
+ v99x8_device(VM_TEMPLATE* parent_vm, EMU* parent_emu);
public:
//template<class _irq> void set_interrupt_callback(_irq irq) {
class v9938_device : public v99x8_device
{
public:
- v9938_device(VM* parent_vm, EMU* parent_emu);
+ v9938_device(VM_TEMPLATE* parent_vm, EMU* parent_emu);
//DECLARE_PALETTE_INIT(v9938);
protected:
class v9958_device : public v99x8_device
{
public:
- v9958_device(VM* parent_vm, EMU* parent_emu);
+ v9958_device(VM_TEMPLATE* parent_vm, EMU* parent_emu);
//DECLARE_PALETTE_INIT(v9958);
void decl_state_v99x8();
public:
- V99X8(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ V99X8(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_irq);
set_device_name(_T("V99x8 VDP"));
--- /dev/null
+#ifndef __CSP_VM_TEMPLATE_H
+#define __CSP_VM_TEMPLATE_H
+
+#include "common.h"
+
+class EMU;
+class EVENT;
+class DEVICE;
+class csp_state_utils;
+class VM_TEMPLATE {
+protected:
+ EMU* emu;
+ // devices
+ EVENT* event;
+ csp_state_utils *state_entry;
+
+public:
+ VM_TEMPLATE(EMU* parent_emu) : emu(parent_emu)
+ {
+ emu = parent_emu;
+ }
+ ~VM_TEMPLATE() {}
+ // drive virtual machine
+ virtual void reset() { }
+ virtual void special_reset() { }
+ virtual void run() { }
+ virtual void notify_power_off() { }
+
+ virtual double get_frame_rate() { return 59.94; }
+ virtual void get_screen_resolution(int *w, int *h) {
+ if(w != NULL) *w = 0;
+ if(h != NULL) *h = 0;
+ }
+
+ // debugger
+ virtual DEVICE *get_cpu(int num) { return NULL; }
+ virtual uint32_t get_cpu_pc() { return 0; }
+ virtual void initialize(void) { }
+ virtual void update_dipswitch(void) { }
+
+ // draw screen
+ virtual void draw_screen() { }
+
+ // multimedia
+ virtual void movie_sound_callback(uint8_t *buffer, long size) { }
+ // sound generation
+ virtual void initialize_sound(int rate, int samples) { }
+ virtual uint16_t* create_sound(int* extra_frames) { return NULL; }
+ virtual int get_sound_buffer_ptr() { return 0; }
+ virtual void set_sound_device_volume(int ch, int decibel_l, int decibel_r) { }
+
+ // network
+ virtual void notify_socket_connected(int ch) { }
+ virtual void notify_socket_disconnected(int ch) { }
+ virtual uint8_t* get_socket_send_buffer(int ch, int* size)
+ {
+ if(size != NULL) *size = 0;
+ return NULL;
+ }
+ virtual void inc_socket_send_buffer_ptr(int ch, int size) { }
+ virtual uint8_t* get_socket_recv_buffer0(int ch, int* size0, int* size1) {
+ if(size0 != NULL) *size0 = 0;
+ if(size1 != NULL) *size1 = 0;
+ return NULL;
+ }
+ virtual uint8_t* get_socket_recv_buffer1(int ch) { return NULL; }
+ virtual void inc_socket_recv_buffer_ptr(int ch, int size) { }
+
+ // notify key
+ virtual void key_down(int code, bool repeat) { }
+ virtual void key_up(int code) { }
+ virtual bool get_caps_locked() { return false; }
+ virtual bool get_kana_locked() { return false; }
+ virtual uint32_t get_led_status() { return 0; }
+
+
+ // user interface
+ virtual void open_floppy_disk(int drv, _TCHAR *file_path, int bank) { }
+ virtual void open_quick_disk(int drv, _TCHAR *file_path) { }
+ virtual void open_hard_disk(int drv, _TCHAR *file_path) { }
+ virtual void open_compact_disc(int drv, _TCHAR *file_path) { }
+ virtual void open_laser_disc(int drv, _TCHAR *file_path) { }
+ virtual void open_bubble_casette(int drv, _TCHAR *file_path, int bank) { }
+ virtual void open_cart(int drv, _TCHAR *file_path) { }
+ virtual void play_tape(int drv, _TCHAR *file_path) { }
+ virtual void rec_tape(int drv, _TCHAR *file_path) { }
+ virtual void load_binary(int drv, _TCHAR *file_path) { }
+ virtual void save_binary(int drv, _TCHAR *file_path) { }
+
+ virtual void close_floppy_disk(int drv) { }
+ virtual void close_quick_disk(int drv) { }
+ virtual void close_hard_disk(int drv) { }
+ virtual void close_compact_disc() { }
+ virtual void close_laser_disc(int drv) { }
+ virtual void close_bubble_casette(int drv) { }
+ virtual void close_cart(int drv) { }
+ virtual void close_tape(int drv) { }
+
+ virtual uint32_t is_floppy_disk_accessed() { return 0; }
+ virtual uint32_t is_quick_disk_accessed() { return 0; }
+ virtual uint32_t is_hard_disk_accessed() { return 0; }
+ virtual uint32_t is_compact_disc_accessed() { return 0; }
+ virtual uint32_t is_laser_disc_accessed() { return 0; }
+
+ virtual bool is_floppy_disk_inserted(int drv) { return false; }
+ virtual bool is_quick_disk_inserted(int drv) { return false; }
+ virtual bool is_hard_disk_inserted(int drv) { return false; }
+ virtual bool is_compact_disc_inserted(int drv) { return false; }
+ virtual bool is_laser_disc_inserted(int drv) { return false; }
+ virtual bool is_tape_inserted(int drv) { return false; }
+
+ virtual void is_floppy_disk_protected(int drv, bool value) { }
+ virtual bool is_floppy_disk_protected(int drv) { return false; }
+ virtual void is_bubble_casette_protected(int drv, bool flag) { }
+ virtual bool is_bubble_casette_protected(int drv) { return false; }
+
+ virtual bool is_tape_playing(int drv) { return false; }
+ virtual bool is_tape_recording(int drv) { return false; }
+ virtual int get_tape_position(int drv) { return 0; }
+ virtual const _TCHAR* get_tape_message(int drv) { return (const _TCHAR *) ""; }
+
+ virtual void push_play(int drv) { }
+ virtual void push_stop(int drv) { }
+ virtual void push_fast_forward(int drv) { }
+ virtual void push_fast_rewind(int drv) { }
+ virtual void push_apss_forward(int drv) { }
+ virtual void push_apss_rewind(int drv) { }
+
+ virtual void update_config() { }
+ virtual void save_state(FILEIO* state_fio) { }
+ virtual bool load_state(FILEIO* state_fio) { }
+ virtual void decl_state(void) { }
+
+ // devices
+ virtual void set_cpu_clock(DEVICE *cpu, uint32_t clocks) { }
+ virtual void set_vm_frame_rate(double fps) { }
+ virtual double get_vm_frame_rate() { return 59.94; }
+ virtual bool is_frame_skippable() { return false; }
+ virtual bool is_screen_changed() { return true; }
+ virtual int max_draw_ranges() { return 0; }
+ virtual DEVICE* get_device(int id) { return first_device; }
+
+ DEVICE* dummy;
+ DEVICE* first_device;
+ DEVICE* last_device;
+};
+#endif /* __CSP_VM_TEMPLATE_H */
void process_status(uint16_t addr);
public:
- W3100A(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {
+ W3100A(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {
set_device_name(_T("W3100A TCP/IP"));
}
~W3100A() {}
void update_interrupt();
public:
- YM2151(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ YM2151(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
initialize_output_signals(&outputs_irq);
base_decibel = 0;
void update_interrupt();
//#endif
public:
- YM2203(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ YM2203(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
base_decibel_fm = base_decibel_psg = 0;
decibel_vol = 0 + 5;
bool __MSX;
public:
- YM2413(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ YM2413(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
volume_l = volume_r = 1024;
__MSX = false;
} while(0)
// main
-Z80::Z80(VM* parent_vm, EMU* parent_emu) : Z80_BASE(parent_vm, parent_emu)
+Z80::Z80(VM_TEMPLATE* parent_vm, EMU* parent_emu) : Z80_BASE(parent_vm, parent_emu)
{
#ifdef HAS_NSC800
has_nsc800 = true;
int nsc800_rstc_count;
public:
- Z80_BASE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ Z80_BASE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
flags_initialized = false;
busreq = false;
void run_one_opecode() override;
void debugger_hook(void) override;
public:
- Z80(VM* parent_vm, EMU* parent_emu);
+ Z80(VM_TEMPLATE* parent_vm, EMU* parent_emu);
~Z80();
void initialize();
void reset();
void update_intr();
public:
- Z80CTC(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ Z80CTC(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
memset(counter, 0, sizeof(counter));
for(int i = 0; i < 4; i++) {
void update_intr();
public:
- Z80DMA(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ Z80DMA(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
for(int i = 0; i < 6 * 8 + 1 + 1; i++) {
regs.t[i] = 0;
void update_intr();
public:
- Z80PIO(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ Z80PIO(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
memset(port, 0, sizeof(port));
for(int i = 0; i < 2; i++) {
void update_intr();
public:
- Z80SIO(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ Z80SIO(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
memset(port, 0, sizeof(port));
for(int i = 0; i < 2; i++) {
const uint32_t* joy_stat;
public:
- JOYSTICK(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ JOYSTICK(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
set_device_name(_T("Joystick I/F"));
}
bool inserted;
public:
- MEMORY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ MEMORY(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
set_device_name(_T("Memory Bus"));
}