diff options
Diffstat (limited to 'src/mess/machine/x68kexp.h')
-rw-r--r-- | src/mess/machine/x68kexp.h | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/src/mess/machine/x68kexp.h b/src/mess/machine/x68kexp.h new file mode 100644 index 00000000000..d35d19ae640 --- /dev/null +++ b/src/mess/machine/x68kexp.h @@ -0,0 +1,149 @@ +/* + * x68kexp.h + * + * Expansion slots for the X680x0 series + * + * Pinout: (from http://www.amy.hi-ho.ne.jp/shimada/neptune/x68k.html) + +-----+ + GND B1 |[] []| A1 GND + 10MHz B2 |[] []| A2 20MHz + #10MHz B3 |[] []| A3 GND + E B4 |[] []| A4 DB0 + AB1 B5 |[] []| A5 DB1 + AB2 B6 |[] []| A6 DB2 + AB3 B7 |[] []| A7 DB3 + AB4 B8 |[] []| A8 DB4 + AB5 B9 |[] []| A9 DB5 + AB6 B10 |[] []| A10 DB6 + GND B11 |[] []| A11 GND + AB7 B12 |[] []| A12 DB7 + AB8 B13 |[] []| A13 DB8 + AB9 B14 |[] []| A14 DB9 + AB10 B15 |[] []| A15 DB10 + AB11 B16 |[] []| A16 DB11 + AB12 B17 |[] []| A17 DB12 + AB13 B18 |[] []| A18 DB13 + AB14 B19 |[] []| A19 DB14 + AB15 B20 |[] []| A20 DB15 + GND B21 |[] []| A21 GND + AB16 B22 |[] []| A22 +12V + AB17 B23 |[] []| A23 +12V + AB18 B24 |[] []| A24 FC0 + AB19 B25 |[] []| A25 FC1 + AB20 B26 |[] []| A26 FC2 + AB21 B27 |[] []| A27 #AS + AB22 B28 |[] []| A28 #LDS + AB23 B29 |[] []| A29 #UDS + IDDIR B30 |[] []| A30 R/#W + N.C. B31 |[] []| A31 N.C. + HSYNC B32 |[] []| A32 -12V + VSYNC B33 |[] []| A33 -12V + #DONE B34 |[] []| A34 #VMA + #DTC B35 |[] []| A35 #EXVPA + #EXREQ B36 |[] []| A36 #DTACK + #EXACK B37 |[] []| A37 #EXRESET + #EXPCL B38 |[] []| A38 #HALT + #EXOWN B39 |[] []| A39 #EXBERR + #EXNMI B40 |[] []| A40 #EXPWON + GND B41 |[] []| A41 GND + #IRQ2 B42 |[] []| A42 Vcc2 + #IRQ4 B43 |[] []| A43 Vcc2 + #IACK2 B44 |[] []| A44 SELEN + #IACK4 B45 |[] []| A45 CASRDEN + #BR B46 |[] []| A46 CASWRL + #BG B47 |[] []| A47 CASWRU + #BGACK B48 |[] []| A48 INH2 + Vcc1 B49 |[] []| A49 Vcc1 + Vcc1 B50 |[] []| A50 Vcc1 + +-----+ + * + */ + +#ifndef X68KEXP_H_ +#define X68KEXP_H_ + +#include "emu.h" + +//************************************************************************** +// CONSTANTS +//************************************************************************** + +#define X68K_EXP_SLOT_TAG "x68kexp" + +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define X68K_EXPANSION_INTERFACE(_name) \ + const x68k_expansion_slot_interface (_name) = + + +#define MCFG_X68K_EXPANSION_SLOT_ADD(_tag, _config, _slot_intf, _def_slot, _def_inp) \ + MCFG_DEVICE_ADD(_tag, X68K_EXPANSION_SLOT, 0) \ + MCFG_DEVICE_CONFIG(_config) \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _def_inp, false) + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// expansion slot interface + +struct x68k_expansion_slot_interface +{ + devcb_write_line m_out_irq2_cb; + devcb_write_line m_out_irq4_cb; + devcb_write_line m_out_nmi_cb; + devcb_write_line m_out_reset_cb; +}; + +// ======================> device_x68k_expansion_card_interface + +// class representing interface-specific live x68k_expansion card +class device_x68k_expansion_card_interface : public device_slot_card_interface +{ +public: + // construction/destruction + device_x68k_expansion_card_interface(const machine_config &mconfig, device_t &device); + virtual ~device_x68k_expansion_card_interface(); + + // reset + virtual void x68k_reset_w() { }; +}; + + +// ======================> x68k_expansion_slot_device + +class x68k_expansion_slot_device : public device_t, + public x68k_expansion_slot_interface, + public device_slot_interface +{ +public: + // construction/destruction + x68k_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual ~x68k_expansion_slot_device(); + + DECLARE_WRITE_LINE_MEMBER( irq2_w ); + DECLARE_WRITE_LINE_MEMBER( irq4_w ); + DECLARE_WRITE_LINE_MEMBER( nmi_w ); + DECLARE_WRITE_LINE_MEMBER( reset_w ); + +protected: + // device-level overrides + virtual void device_start(); + virtual void device_reset(); + virtual void device_config_complete(); + + devcb_resolved_write_line m_out_irq2_func; + devcb_resolved_write_line m_out_irq4_func; + devcb_resolved_write_line m_out_nmi_func; + devcb_resolved_write_line m_out_reset_func; + + device_x68k_expansion_card_interface *m_card; +}; + + +// device type definition +extern const device_type X68K_EXPANSION_SLOT; + +#endif /* X68KEXP_H_ */ |