From d3a924a25a6c555fc9a98156fcdf1048813b9f24 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Mon, 13 May 2019 19:20:17 +0300 Subject: [PATCH] c64: Interpod WIP. (nw) --- src/devices/bus/cbmiec/interpod.cpp | 47 ++++++++++++++++++----------- src/devices/bus/cbmiec/interpod.h | 18 +++++------ 2 files changed, 36 insertions(+), 29 deletions(-) diff --git a/src/devices/bus/cbmiec/interpod.cpp b/src/devices/bus/cbmiec/interpod.cpp index ac87a55cf21..d31b47e406c 100644 --- a/src/devices/bus/cbmiec/interpod.cpp +++ b/src/devices/bus/cbmiec/interpod.cpp @@ -70,13 +70,14 @@ Notes: #define R6532_TAG "u3" #define R6522_TAG "u4" #define MC6850_TAG "u5" +#define RS232_TAG "rs232" //************************************************************************** // DEVICE DEFINITIONS //************************************************************************** -DEFINE_DEVICE_TYPE(INTERPOD, interpod_device, "interpod", "Interpod") +DEFINE_DEVICE_TYPE(INTERPOD, interpod_t, "interpod", "Interpod") @@ -90,8 +91,11 @@ DEFINE_DEVICE_TYPE(INTERPOD, interpod_device, "interpod", "Interpod") ROM_START( interpod ) ROM_REGION( 0x800, R6502_TAG, 0 ) - ROM_LOAD( "1.4.u2", 0x000, 0x800, CRC(c5b71982) SHA1(614d677b7c6273f6b84fa61affaf91cfdaeed6a6) ) - ROM_LOAD( "1.6.u2", 0x000, 0x800, CRC(67bb0436) SHA1(7659c45b73f577233f7657c4da9141dcfe8b6d97) ) + ROM_DEFAULT_BIOS("v16") + ROM_SYSTEM_BIOS( 0, "v14", "Version 1.4" ) + ROMX_LOAD( "1.4.u2", 0x000, 0x800, CRC(c5b71982) SHA1(614d677b7c6273f6b84fa61affaf91cfdaeed6a6), ROM_BIOS(0) ) + ROM_SYSTEM_BIOS( 1, "v16", "Version 1.6" ) + ROMX_LOAD( "1.6.u2", 0x000, 0x800, CRC(67bb0436) SHA1(7659c45b73f577233f7657c4da9141dcfe8b6d97), ROM_BIOS(1) ) ROM_END @@ -99,7 +103,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const tiny_rom_entry *interpod_device::device_rom_region() const +const tiny_rom_entry *interpod_t::device_rom_region() const { return ROM_NAME( interpod ); } @@ -109,7 +113,7 @@ const tiny_rom_entry *interpod_device::device_rom_region() const // ADDRESS_MAP( interpod_mem ) //------------------------------------------------- -void interpod_device::interpod_mem(address_map &map) +void interpod_t::interpod_mem(address_map &map) { map(0x0000, 0x007f).mirror(0x3b80).m(R6532_TAG, FUNC(mos6532_new_device::ram_map)); map(0x0400, 0x041f).mirror(0x3be0).m(R6532_TAG, FUNC(mos6532_new_device::io_map)); @@ -123,43 +127,50 @@ void interpod_device::interpod_mem(address_map &map) // device_add_mconfig - add device configuration //------------------------------------------------- -void interpod_device::device_add_mconfig(machine_config &config) +void interpod_t::device_add_mconfig(machine_config &config) { M6502(config, m_maincpu, 1000000); - m_maincpu->set_addrmap(AS_PROGRAM, &interpod_device::interpod_mem); + m_maincpu->set_addrmap(AS_PROGRAM, &interpod_t::interpod_mem); VIA6522(config, m_via, 1000000); + MOS6532_NEW(config, m_riot, 1000000); + ACIA6850(config, m_acia, 0); ieee488_device::add_cbm_devices(config, nullptr); + + RS232_PORT(config, m_rs232, default_rs232_devices, nullptr); } + //************************************************************************** // LIVE DEVICE //************************************************************************** //------------------------------------------------- -// interpod_device - constructor +// interpod_t - constructor //------------------------------------------------- -interpod_device::interpod_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, INTERPOD, tag, owner, clock), - device_cbm_iec_interface(mconfig, *this), - m_maincpu(*this, R6502_TAG), - m_via(*this, R6522_TAG), - m_riot(*this, R6532_TAG), - m_acia(*this, MC6850_TAG), - m_ieee(*this, IEEE488_TAG) +interpod_t::interpod_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, INTERPOD, tag, owner, clock), + device_cbm_iec_interface(mconfig, *this), + m_maincpu(*this, R6502_TAG), + m_via(*this, R6522_TAG), + m_riot(*this, R6532_TAG), + m_acia(*this, MC6850_TAG), + m_ieee(*this, IEEE488_TAG), + m_rs232(*this, RS232_TAG) { } + //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- -void interpod_device::device_start() +void interpod_t::device_start() { } @@ -168,6 +179,6 @@ void interpod_device::device_start() // device_reset - device-specific reset //------------------------------------------------- -void interpod_device::device_reset() +void interpod_t::device_reset() { } diff --git a/src/devices/bus/cbmiec/interpod.h b/src/devices/bus/cbmiec/interpod.h index 58c193286cf..bad1a0af660 100644 --- a/src/devices/bus/cbmiec/interpod.h +++ b/src/devices/bus/cbmiec/interpod.h @@ -12,6 +12,7 @@ #pragma once #include "cbmiec.h" +#include "bus/rs232/rs232.h" #include "bus/ieee488/ieee488.h" #include "cpu/m6502/m6502.h" #include "machine/6522via.h" @@ -20,24 +21,18 @@ -//************************************************************************** -// MACROS / CONSTANTS -//************************************************************************** - -#define INTERPOD_TAG "interpod" - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -// ======================> interpod_device +// ======================> interpod_t -class interpod_device : public device_t, public device_cbm_iec_interface +class interpod_t : public device_t, + public device_cbm_iec_interface { public: // construction/destruction - interpod_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + interpod_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: // device-level overrides @@ -54,13 +49,14 @@ private: required_device m_riot; required_device m_acia; required_device m_ieee; + required_device m_rs232; void interpod_mem(address_map &map); }; // device type definition -DECLARE_DEVICE_TYPE(INTERPOD, interpod_device) +DECLARE_DEVICE_TYPE(INTERPOD, interpod_t) #endif // MAME_BUS_CBMIEC_INTERPOD_H