diff options
Diffstat (limited to 'src/devices/bus/cbus/pc9801_cbus.h')
-rw-r--r-- | src/devices/bus/cbus/pc9801_cbus.h | 106 |
1 files changed, 63 insertions, 43 deletions
diff --git a/src/devices/bus/cbus/pc9801_cbus.h b/src/devices/bus/cbus/pc9801_cbus.h index 400cfa67d27..e094693f06c 100644 --- a/src/devices/bus/cbus/pc9801_cbus.h +++ b/src/devices/bus/cbus/pc9801_cbus.h @@ -2,6 +2,60 @@ // copyright-holders:Angelo Salese /********************************************************************** + <B> <A> + +------+ + GND |[ 01 ]| GND + V1 |[ 02 ]| V1 + V2 |[ 03 ]| V2 + DB001 |[ 04 ]| AB001 + DB011 |[ 05 ]| AB011 + DB021 |[ 06 ]| AB021 + DB031 |[ 07 ]| AB031 + DB041 |[ 08 ]| AB041 + DB051 |[ 09 ]| AB051 + DB061 |[ 10 ]| AB061 + GND |[ 11 ]| GND + DB071 |[ 12 ]| AB071 + DB081 |[ 13 ]| AB081 + DB091 |[ 14 ]| AB091 + DB101 |[ 15 ]| AB101 + DB111 |[ 16 ]| AB111 + DB121 |[ 17 ]| AB121 + DB131 |[ 18 ]| AB131 + DB141 |[ 19 ]| AB141 + DB151 |[ 20 ]| AB151 + GND |[ 21 ]| GND + +12 V |[ 22 ]| AB161 + +12 V |[ 23 ]| AB171 + "INT0" IR31 |[ 24 ]| AB181 + "INT1" IR51 |[ 25 ]| AB191 + "INT2" IR61 |[ 26 ]| AB201 + "INT3" IR91 |[ 27 ]| AB211 + "INT4" IR101/IR111 |[ 28 ]| AB221 + "INT5" IR121 |[ 29 ]| AB231 + "INT6" IR131 |[ 30 ]| INT0 + GND |[ 31 ]| GND + -12 V |[ 32 ]| IOCHK0 + -12 V |[ 33 ]| IOR0 + RESET0 |[ 34 ]| IOW0 + DACK00 |[ 35 ]| MRC0 + DACK30/DACK20 |[ 36 ]| MWC0 + DRQ00 |[ 37 ]| S00 (INTA0) + DRQ30/DRQ20 |[ 38 ]| S10 (NOWAIT0) + WORD0 |[ 39 ]| S20 (SALE1) + (EXHRQ10) CPKILL0 |[ 40 ]| LOCK (MACS0) + GND |[ 41 ]| GND + (EXHLA10) RQGT0 |[ 42 ]| CPUENB10 + DMATC0 |[ 43 ]| RFSH0 + NMI0 |[ 44 ]| BHE0 + MWE0 |[ 45 ]| IORDY1 + (EXHLA20) HLDA00 |[ 46 ]| SCLK1 + (EXHRQ20) HRQ00 |[ 47 ]| S18CLK1 = 307.2 kHz + (SUBSRQ1) DMAHLD0 |[ 48 ]| POWER0 + +5 V |[ 49 ]| +5 V + +5 V |[ 50 ]| +5 V + +------+ + <B> <A> **********************************************************************/ #ifndef MAME_MACHINE_PC9801_CBUS_H @@ -10,43 +64,6 @@ #pragma once - - -//************************************************************************** -// CONSTANTS -//************************************************************************** - - - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_PC9801CBUS_CPU(_cputag) \ - downcast<pc9801_slot_device &>(*device).set_cpu_tag(_cputag); - -#define MCFG_PC9801CBUS_INT0_CALLBACK(_devcb) \ - downcast<pc9801_slot_device &>(*device).set_int_callback<0>(DEVCB_##_devcb); - -#define MCFG_PC9801CBUS_INT1_CALLBACK(_devcb) \ - downcast<pc9801_slot_device &>(*device).set_int_callback<1>(DEVCB_##_devcb); - -#define MCFG_PC9801CBUS_INT2_CALLBACK(_devcb) \ - downcast<pc9801_slot_device &>(*device).set_int_callback<2>(DEVCB_##_devcb); - -#define MCFG_PC9801CBUS_INT3_CALLBACK(_devcb) \ - downcast<pc9801_slot_device &>(*device).set_int_callback<3>(DEVCB_##_devcb); - -#define MCFG_PC9801CBUS_INT4_CALLBACK(_devcb) \ - downcast<pc9801_slot_device &>(*device).set_int_callback<4>(DEVCB_##_devcb); - -#define MCFG_PC9801CBUS_INT5_CALLBACK(_devcb) \ - downcast<pc9801_slot_device &>(*device).set_int_callback<5>(DEVCB_##_devcb); - -#define MCFG_PC9801CBUS_INT6_CALLBACK(_devcb) \ - downcast<pc9801_slot_device &>(*device).set_int_callback<6>(DEVCB_##_devcb); - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -74,11 +91,10 @@ class pc9801_slot_device : public device_t, public device_slot_interface { public: // construction/destruction - template <typename T, typename U> - pc9801_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&cpu_tag, U &&opts, char const *dflt) + template <typename T> + pc9801_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt) : pc9801_slot_device(mconfig, tag, owner, (uint32_t)0) { - m_cpu.set_tag(std::forward<T>(cpu_tag)); option_reset(); opts(*this); set_default_option(dflt); @@ -86,11 +102,14 @@ public: } pc9801_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + template <typename T> void set_memspace(T &&tag, int spacenum) { m_memspace.set_tag(std::forward<T>(tag), spacenum); } + template <typename T> void set_iospace(T &&tag, int spacenum) { m_iospace.set_tag(std::forward<T>(tag), spacenum); } + // configuration access template<std::size_t Line> auto int_cb() { return m_int_callback[Line].bind(); } - address_space &program_space() const { return m_cpu->space(AS_PROGRAM); } - address_space &io_space() const { return m_cpu->space(AS_IO); } + address_space &program_space() const { return *m_memspace; } + address_space &io_space() const { return *m_iospace; } template<int I> void int_w(bool state) { m_int_callback[I](state); } void install_io(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler); @@ -102,7 +121,8 @@ protected: private: // device_pc9801_slot_card_interface *m_card; - required_device<cpu_device> m_cpu; + required_address_space m_memspace; + required_address_space m_iospace; devcb_write_line m_int_callback[7]; }; |