summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/nasbus/nasbus.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/nasbus/nasbus.h')
-rw-r--r--src/devices/bus/nasbus/nasbus.h210
1 files changed, 210 insertions, 0 deletions
diff --git a/src/devices/bus/nasbus/nasbus.h b/src/devices/bus/nasbus/nasbus.h
new file mode 100644
index 00000000000..f7766bc0426
--- /dev/null
+++ b/src/devices/bus/nasbus/nasbus.h
@@ -0,0 +1,210 @@
+// license:GPL-2.0+
+// copyright-holders:Dirk Best
+/***************************************************************************
+
+ Nascom NASBUS
+
+ 77-pin slot
+
+ 1 0V
+ 2 0V
+ 3 0V
+ 4 0V
+ 5 Clock
+ 6 (spare)
+ 7 (spare)
+ 8 (spare)
+ 9 /RAM DISABLE
+ 10 /RESET SWITCH
+ 11 /NASCOM MEM
+ 12 /NASCOM IO
+ 13 /DBDR
+ 14 /RESET
+ 15 /HALT
+ 16 /BAI
+ 17 /BAO
+ 18 /BUSRQ
+ 19 IEI
+ 20 IEO
+ 21 (reserved for /NMI)
+ 22 /INT
+ 23 /WAIT
+ 24 /RFSH
+ 25 /MI
+ 26 /IORQ
+ 27 /MREQ
+ 28 /WR
+ 29 /RD
+ 30 A0
+ 31 A1
+ 32 A2
+ 33 A3
+ 34 A4
+ 35 A5
+ 36 A6
+ 37 A7
+ 38 A8
+ 39 A9
+ 40 A10
+ 41 A11
+ 42 A12
+ 43 A13
+ 44 A14
+ 45 A15
+ 46 (reserved)
+ 47 (reserved)
+ 48 (reserved)
+ 49 (reserved)
+ 50 D0
+ 51 D1
+ 52 D2
+ 53 D3
+ 54 D4
+ 55 D5
+ 56 D6
+ 57 D7
+ 58 (reserved)
+ 59 (reserved)
+ 60 (reserved)
+ 61 (reserved)
+ 62 (reserved)
+ 63 (reserved)
+ 64 (reserved)
+ 65 (reserved)
+ 66 (unused)
+ 67 (unused)
+ 68 -5V
+ 69 -5V
+ 70 -12V
+ 71 -12V
+ 72 Keyway
+ 73 +12V
+ 74 +12V
+ 75 +5V
+ 76 +5V
+ 77 +5V
+ 78 +5V
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __NASBUS_H__
+#define __NASBUS_H__
+
+#include "emu.h"
+
+
+//**************************************************************************
+// CONSTANTS / MACROS
+//**************************************************************************
+
+#define NASBUS_TAG "nasbus"
+
+
+//**************************************************************************
+// INTERFACE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_NASBUS_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, NASBUS, 0)
+
+#define MCFG_NASBUS_SLOT_ADD(_tag, _slot_intf, _def_slot) \
+ MCFG_DEVICE_ADD(_tag, NASBUS_SLOT, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
+ nasbus_slot_device::set_nasbus_slot(*device, owner, NASBUS_TAG);
+
+#define MCFG_NASBUS_RAM_DISABLE_HANDLER(_devcb) \
+ devcb = &nasbus_device::set_ram_disable_handler(*device, DEVCB_##_devcb);
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// forward declaration
+class device_nasbus_card_interface;
+
+// ======================> nasbus_slot_device
+
+class nasbus_slot_device : public device_t, public device_slot_interface
+{
+public:
+ // construction/destruction
+ nasbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ nasbus_slot_device(const machine_config &mconfig, device_type type, const char *name,
+ const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+
+ // device-level overrides
+ virtual void device_start();
+
+ // inline configuration
+ static void set_nasbus_slot(device_t &device, device_t *owner, const char *nasbus_tag);
+
+protected:
+ // configuration
+ const char *m_nasbus_tag;
+};
+
+// device type definition
+extern const device_type NASBUS_SLOT;
+
+// ======================> nasbus_device
+
+class nasbus_device : public device_t
+{
+public:
+ // construction/destruction
+ nasbus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ virtual ~nasbus_device();
+
+ template<class _Object> static devcb_base &set_ram_disable_handler(device_t &device, _Object object)
+ { return downcast<nasbus_device &>(device).m_ram_disable_handler.set_callback(object); }
+
+ void add_card(device_nasbus_card_interface *card);
+
+ void set_program_space(address_space *program);
+ void set_io_space(address_space *io);
+
+ // from cards
+ DECLARE_WRITE_LINE_MEMBER( ram_disable_w );
+
+ address_space *m_program;
+ address_space *m_io;
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ simple_list<device_nasbus_card_interface> m_dev;
+
+ devcb_write_line m_ram_disable_handler;
+};
+
+// device type definition
+extern const device_type NASBUS;
+
+// ======================> device_nasbus_interface
+
+class device_nasbus_card_interface : public device_slot_card_interface
+{
+public:
+ // construction/destruction
+ device_nasbus_card_interface(const machine_config &mconfig, device_t &device);
+ virtual ~device_nasbus_card_interface();
+
+ void set_nasbus_device(nasbus_device *nasbus);
+
+ device_nasbus_card_interface *next() const { return m_next; }
+ device_nasbus_card_interface *m_next;
+
+protected:
+ nasbus_device *m_nasbus;
+};
+
+// include here so drivers don't need to
+#include "cards.h"
+
+#endif // __NASBUS_H__