set(MC6809_CPPS
libcpu_newdev/libcpu_mc6809/mc6809.cpp
)
+ set(MCS48_CPPS
+ libcpu_newdev/mcs48.cpp
+ )
else()
set(I386_CPPS i386.cpp)
set(MC6809_CPPS mc6809.cpp)
+ set(MCS48_CPPS mcs48.cpp)
set(VMFILES ${VMFILES} ${VMFILES_LIB})
endif()
if(FLAG_USE_MC6809)
set(VMFILES ${VMFILES} ${MC6809_CPPS})
endif()
-
+if(FLAG_USE_MCS48)
+ set(VMFILES ${VMFILES} ${MCS48_CPPS})
+endif()
if(USE_DEVICES_SHARED_LIB)
set(VMFILES ${VMFILES} libcpu_newdev/device.cpp)
endif()
set(VMFILES
z80.cpp
- mcs48.cpp
- beep.cpp
hd46505.cpp
i8255.cpp
-# ym2151.cpp
-# ym2203.cpp
-# ay_3_891x.cpp
mb8877.cpp
upd1990a.cpp
z80ctc.cpp
-# z80pio.cpp
+
z80sio.cpp
prnfile.cpp
datarec.cpp
disk.cpp
event.cpp
+
io.cpp
-# memory.cpp
prnfile.cpp
mz1p17.cpp
)
+set(VMFILES_LIB
+ mcs48.cpp
+ beep.cpp
+ z80pio.cpp
+ ym2151.cpp
+ ym2203.cpp
+ ay_3_891x.cpp
+)
+set(FLAG_USE_MCS48 ON)
set(BUILD_X1 OFF CACHE BOOL "Build for X1")
set(BUILD_X1TURBO OFF CACHE BOOL "Build for X1 Turbo")
fm7_mainio.cpp
fm7_mainmem.cpp
kanjirom.cpp
- dummydevice.cpp
+# dummydevice.cpp
fm7.cpp
)
-if(FM77AV_VARIANTS)
- set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} mb61vh010.cpp)
-endif()
if(BUILD_FM8)
set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} fm_bubblecasette.cpp)
endif()
-if(BUILD_FM77AV20EX)
- set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} hd6844.cpp)
-elseif(BUILD_FM77AV40)
- set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} hd6844.cpp)
-elseif(BUILD_FM77AV40EX)
- set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} hd6844.cpp)
-elseif(BUILD_FM77AV40SX)
- set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} hd6844.cpp)
+if(USE_DEVICES_SHARED_LIB)
+else()
+ if(FM77AV_VARIANTS)
+ set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} mb61vh010.cpp)
+ endif()
+ if(BUILD_FM77AV20EX)
+ set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} hd6844.cpp)
+ elseif(BUILD_FM77AV40)
+ set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} hd6844.cpp)
+ elseif(BUILD_FM77AV40EX)
+ set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} hd6844.cpp)
+ elseif(BUILD_FM77AV40SX)
+ set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} hd6844.cpp)
+ endif()
+ set(VM_FM7_LIB_SRCS ${VM_FM7_LIB_SRCS} dummydevice.cpp)
endif()
-
add_library(vm_fm7
${VM_FM7_LIB_SRCS}
)
*
*/
-#include "emu.h"
+//#include "emu.h"
#include "dummydevice.h"
-DUMMYDEVICE::DUMMYDEVICE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
-{
- status = 0x00000000;
- clear_on_reset = true;
- clear_with_zero = true;
- p_emu = parent_emu;
-}
-
-DUMMYDEVICE::~DUMMYDEVICE()
-{
-}
-
uint32_t DUMMYDEVICE::read_signal(int id)
{
SIG_DUMMYDEVICE_CLEAR_ON_RESET,
SIG_DUMMYDEVICE_CLEAR_WITH_ZERO,
};
+class VM;
class EMU;
-
class DUMMYDEVICE : public DEVICE {
private:
- EMU *p_emu;
uint32_t status;
bool clear_on_reset;
bool clear_with_zero;
public:
- DUMMYDEVICE(VM *parent_vm, EMU *parent_emu);
- ~DUMMYDEVICE();
+ DUMMYDEVICE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ {
+ status = 0x00000000;
+ clear_on_reset = true;
+ clear_with_zero = true;
+ }
+ ~DUMMYDEVICE() {}
uint32_t read_signal(int id);
void write_signal(int id, uint32_t data, uint32_t mask);
#if defined(_FM77AV_VARIANTS)
display->set_context_alu(alu);
alu->set_context_memory(display);
+ alu->set_direct_access_offset(DISPLAY_VRAM_DIRECT_ACCESS);
#endif
// Palette, VSYNC, HSYNC, Multi-page, display mode.
mainio->set_context_display(display);
*
*/
-#include "../memory.h"
-#include "../vm.h"
-#include "../../emu.h"
+//#include "../memory.h"
+//#include "../vm.h"
+//#include "../../emu.h"
#include "hd6844.h"
-HD6844::HD6844(VM *parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
-{
- int i;
- p_emu = parent_emu;
- p_vm = parent_vm;
- for(i = 0; i < 4; i++) {
- src[i] = dest[i] = NULL;
- initialize_output_signals(&(interrupt_line[i]));
- }
- initialize_output_signals(&(drq_line[0]));
- initialize_output_signals(&(drq_line[1]));
- set_device_name(_T("HD6844 DMAC"));
-}
-
-HD6844::~HD6844()
-{
-}
-
void HD6844::reset()
{
int ch;
class EMU;
class VM;
-
enum {
HD6844_EVENT_START_TRANSFER = 0,
HD6844_EVENT_DO_TRANSFER = 4,
HD6844_ACK_DRQ2,
};
-
+class VM;
+class EMU;
class HD6844: public DEVICE {
-
- protected:
- EMU *p_emu;
- VM *p_vm;
-
private:
DEVICE *src[4];
DEVICE *dest[4];
void do_transfer(int ch);
public:
- HD6844(VM *parent_vm, EMU *parent_emu);
- ~HD6844();
-
+ HD6844(VM *parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
+ {
+ int i;
+ for(i = 0; i < 4; i++) {
+ src[i] = dest[i] = NULL;
+ initialize_output_signals(&(interrupt_line[i]));
+ }
+ initialize_output_signals(&(drq_line[0]));
+ initialize_output_signals(&(drq_line[1]));
+ set_device_name(_T("HD6844 DMAC"));
+ }
+ ~HD6844(){}
void event_callback(int event_id, int err);
void write_data8(uint32_t id, uint32_t data);
uint32_t read_data8(uint32_t addr);
#include "mb61vh010.h"
-
-MB61VH010::MB61VH010(VM *parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
-{
- p_emu = parent_emu;
- p_vm = parent_vm;
- target = NULL;
- set_device_name(_T("MB61VH010 ALU"));
-}
-
-MB61VH010::~MB61VH010()
-{
-}
-
uint8_t MB61VH010::do_read(uint32_t addr, uint32_t bank)
{
uint32_t raddr;
if(is_400line) {
if((addr & 0xffff) < 0x8000) {
raddr = (addr & 0x7fff) | (0x8000 * bank);
- return target->read_data8(raddr + DISPLAY_VRAM_DIRECT_ACCESS);
+ return target->read_data8(raddr + direct_access_offset);
}
} else {
raddr = (addr & 0x3fff) | (0x4000 * bank);
- return target->read_data8(raddr + DISPLAY_VRAM_DIRECT_ACCESS);
+ return target->read_data8(raddr + direct_access_offset);
}
return 0xff;
}
if(is_400line) {
if((addr & 0xffff) < 0x8000) {
raddr = (addr & 0x7fff) | (0x8000 * bank);
- target->write_data8(raddr + DISPLAY_VRAM_DIRECT_ACCESS, readdata);
+ target->write_data8(raddr + direct_access_offset, readdata);
}
} else {
raddr = (addr & 0x3fff) | (0x4000 * bank);
- target->write_data8(raddr + DISPLAY_VRAM_DIRECT_ACCESS, readdata);
+ target->write_data8(raddr + direct_access_offset, readdata);
}
return;
}
}
do_alucmds_dmyread(raddr);
raddr = (id - ALU_WRITE_PROXY) % 0xc000;
- dmydata = target->read_data8(raddr + DISPLAY_VRAM_DIRECT_ACCESS);
+ dmydata = target->read_data8(raddr + direct_access_offset);
return dmydata;
}
return 0xffffffff;
#include "../device.h"
-#include "../memory.h"
-#include "fm7_common.h"
+//#include "../memory.h"
+//#include "fm7_common.h"
enum {
ALU_CMDREG = 0,
EVENT_MB61VH010_BUSY_OFF
};
+class VM;
+class EMU;
class MB61VH010: public DEVICE {
-
protected:
- EMU *p_emu;
- VM *p_vm;
DEVICE *target;
// Registers
uint8_t bank_disable_reg; // D41B (RW)
uint8_t tile_reg[4]; // D41C-D41F (WO)
uint8_t multi_page;
-
+ uint32_t direct_access_offset;
pair_t line_addr_offset; // D420-D421 (WO)
pair_t line_pattern; // D422-D423 (WO)
pair_t line_xbegin; // D424-D425 (WO)
// LINE
void do_line(void);
public:
- MB61VH010(VM *parent_vm, EMU *parent_emu);
- ~MB61VH010();
+ MB61VH010(VM *parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_emu)
+ {
+ target = NULL;
+ direct_access_offset = 0;
+ set_device_name(_T("MB61VH010 ALU"));
+ }
+ ~MB61VH010() {}
void save_state(FILEIO *state_fio);
bool load_state(FILEIO *state_fio);
{
target = p;
}
+ void set_direct_access_offset(uint32_t offset)
+ {
+ direct_access_offset = offset;
+ }
};