@@ -75,6 +75,7 @@ class a2bus_device : public device_t
7575 auto nmi_w () { return m_out_nmi_cb.bind (); }
7676 auto inh_w () { return m_out_inh_cb.bind (); }
7777 auto dma_w () { return m_out_dma_cb.bind (); }
78+ auto open_bus_r () { return m_in_open_bus_cb.bind (); }
7879
7980 void add_a2bus_card (int slot, device_a2bus_card_interface *card);
8081 device_a2bus_card_interface *get_a2bus_card (int slot);
@@ -88,6 +89,7 @@ class a2bus_device : public device_t
8889 uint8_t dma_r (uint16_t offset);
8990 void dma_w (uint16_t offset, uint8_t data);
9091 void reset_bus ();
92+ uint8_t get_open_bus () { return m_in_open_bus_cb (); }
9193
9294 void irq_w (int state);
9395 void nmi_w (int state);
@@ -106,6 +108,7 @@ class a2bus_device : public device_t
106108 devcb_write_line m_out_nmi_cb;
107109 devcb_write8 m_out_inh_cb;
108110 devcb_write_line m_out_dma_cb;
111+ devcb_read8 m_in_open_bus_cb;
109112
110113 device_a2bus_card_interface *m_device_list[8 ];
111114
@@ -127,15 +130,15 @@ class device_a2bus_card_interface : public device_interface
127130 // construction/destruction
128131 virtual ~device_a2bus_card_interface ();
129132
130- virtual uint8_t read_c0nx (uint8_t offset) { device (). logerror ( " a2bus: unhandled read at C0n%x \n " , offset); return 0 ; } // C0nX - /DEVSEL
131- virtual void write_c0nx (uint8_t offset, uint8_t data) { device (). logerror ( " a2bus: unhandled write %02x to C0n%x \n " , data, offset); }
132- virtual uint8_t read_cnxx (uint8_t offset) { return 0 ; } // CnXX - /IOSEL
133- virtual void write_cnxx (uint8_t offset, uint8_t data) { device (). logerror ( " a2bus: unhandled write %02x to Cn%02x \n " , data, offset); }
134- virtual uint8_t read_c800 (uint16_t offset) { return 0 ; } // C800 - /IOSTB
135- virtual void write_c800 (uint16_t offset, uint8_t data) { device (). logerror ( " a2bus: unhandled write %02x to %04x \n " , data, offset + 0xc800 ); }
136- virtual bool take_c800 () const { return false ; } // override and return true if your card can take over the /IOSTB space
137- virtual uint8_t read_inh_rom (uint16_t offset) { return 0 ; }
138- virtual void write_inh_rom (uint16_t offset, uint8_t data) { }
133+ virtual uint8_t read_c0nx (uint8_t offset); // C0nX - /DEVSEL
134+ virtual void write_c0nx (uint8_t offset, uint8_t data);
135+ virtual uint8_t read_cnxx (uint8_t offset); // CnXX - /IOSEL
136+ virtual void write_cnxx (uint8_t offset, uint8_t data);
137+ virtual uint8_t read_c800 (uint16_t offset); // C800 - /IOSTB
138+ virtual void write_c800 (uint16_t offset, uint8_t data);
139+ virtual bool take_c800 () const { return false ; } // override and return true if your card can take over the /IOSTB space
140+ virtual uint8_t read_inh_rom (uint16_t offset);
141+ virtual void write_inh_rom (uint16_t offset, uint8_t data);
139142 virtual uint16_t inh_start () { return INH_START_INVALID ; }
140143 virtual uint16_t inh_end () { return INH_END_INVALID ; }
141144 virtual bool inh_check (uint16_t offset, bool bIsWrite) { return false ; }
@@ -162,6 +165,7 @@ class device_a2bus_card_interface : public device_interface
162165 void recalc_slot_inh () { m_a2bus->recalc_inh (m_slot); }
163166 void raise_slot_dma () { m_a2bus->set_dma_line (ASSERT_LINE ); }
164167 void lower_slot_dma () { m_a2bus->set_dma_line (CLEAR_LINE ); }
168+ uint8_t get_open_bus () { return m_a2bus->get_open_bus (); }
165169
166170 device_a2bus_card_interface (const machine_config &mconfig, device_t &device);
167171
0 commit comments