Previous 199869 Revisions Next

r26105 Monday 11th November, 2013 at 18:25:52 UTC by Carl
(mess) isbc: bit more checkpoint (nw)
[src/mess/drivers]isbc.c

trunk/src/mess/drivers/isbc.c
r26104r26105
2222#include "machine/i8251.h"
2323#include "machine/z80dart.h"
2424#include "machine/serial.h"
25#include "bus/centronics/ctronics.h"
26#include "bus/isbx/isbx.h"
2527
2628class isbc_state : public driver_device
2729{
r26104r26105
3234   m_terminal(*this, "terminal"),
3335   m_uart8251(*this, "uart8251"),
3436   m_uart8274(*this, "uart8274"),
35   m_pic_1(*this, "pic_1")
37   m_pic_1(*this, "pic_1"),
38   m_centronics(*this, "centronics")
3639   { }
3740
3841   required_device<cpu_device> m_maincpu;
r26104r26105
4043   optional_device<i8251_device> m_uart8251;
4144   optional_device<i8274_device> m_uart8274;
4245   optional_device<pic8259_device> m_pic_1;
46   optional_device<centronics_device> m_centronics;
4347
48   DECLARE_WRITE_LINE_MEMBER(lpt_ack);
4449   DECLARE_WRITE_LINE_MEMBER(isbc86_tmr2_w);
4550   DECLARE_WRITE_LINE_MEMBER(isbc286_tmr2_w);
4651   DECLARE_READ8_MEMBER(get_slave_ack);
52   DECLARE_READ8_MEMBER(ppi_b_r);
53   DECLARE_WRITE8_MEMBER(ppi_c_w);
4754};
4855
4956static ADDRESS_MAP_START(rpc86_mem, AS_PROGRAM, 16, isbc_state)
r26104r26105
7683
7784static ADDRESS_MAP_START(isbc286_io, AS_IO, 16, isbc_state)
7885   ADDRESS_MAP_UNMAP_HIGH
86   AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs0_r, mcs0_w, 0x00ff)
87   AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs0_r, mcs0_w, 0xff00)
88   AM_RANGE(0x0090, 0x009f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs1_r, mcs1_w, 0x00ff)
89   AM_RANGE(0x0090, 0x009f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs1_r, mcs1_w, 0xff00)
90   AM_RANGE(0x00a0, 0x00af) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs0_r, mcs0_w, 0x00ff)
91   AM_RANGE(0x00a0, 0x00af) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs0_r, mcs0_w, 0xff00)
92   AM_RANGE(0x00b0, 0x00bf) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs1_r, mcs1_w, 0x00ff)
93   AM_RANGE(0x00b0, 0x00bf) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs1_r, mcs1_w, 0xff00)
7994   AM_RANGE(0x00c0, 0x00c3) AM_DEVREADWRITE8("pic_0", pic8259_device, read, write, 0x00ff)
8095   AM_RANGE(0x00c4, 0x00c7) AM_DEVREADWRITE8("pic_1", pic8259_device, read, write, 0x00ff)
8196   AM_RANGE(0x00c8, 0x00cf) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff)
r26104r26105
166181   m_uart8274->txca_w(state);
167182}
168183
169static const i8255_interface isbc_ppi_interface =
184static const i8255_interface isbc86_ppi_interface =
170185{
171186   DEVCB_NULL,
172187   DEVCB_NULL,
r26104r26105
176191   DEVCB_NULL
177192};
178193
194static const i8255_interface isbc286_ppi_interface =
195{
196   DEVCB_NULL,
197   DEVCB_DEVICE_MEMBER("centronics", centronics_device, write),
198   DEVCB_DRIVER_MEMBER(isbc_state, ppi_b_r),
199   DEVCB_NULL,
200   DEVCB_NULL,
201   DEVCB_DRIVER_MEMBER(isbc_state, ppi_c_w),
202};
203
204READ8_MEMBER( isbc_state::ppi_b_r )
205{
206   UINT8 data = 0;
207   data |= m_centronics->ack_r() ? 0x10 : 0;
208   data |= m_centronics->fault_r() ? 0x40 : 0;
209   data |= m_centronics->busy_r() ? 0x80 : 0;
210   return data;
211}
212
213WRITE8_MEMBER( isbc_state::ppi_c_w )
214{
215   m_centronics->strobe_w(data & 1);
216
217   if(data & 0x80)
218      m_pic_1->ir7_w(0);
219}
220
179221static I8274_INTERFACE(isbc_uart8274_interface)
180222{
181223   0, 0, 0, 0,
r26104r26105
227269   return 0x00;
228270}
229271
272static const centronics_interface isbc_centronics =
273{
274   DEVCB_DRIVER_LINE_MEMBER(isbc_state, lpt_ack),
275   DEVCB_NULL,
276   DEVCB_NULL
277};
278
279WRITE_LINE_MEMBER( isbc_state::lpt_ack )
280{
281   if(state)
282      m_pic_1->ir7_w(1);
283}
284
230285static MACHINE_CONFIG_START( isbc86, isbc_state )
231286   /* basic machine hardware */
232287   MCFG_CPU_ADD("maincpu", I8086, XTAL_5MHz)
r26104r26105
234289   MCFG_CPU_IO_MAP(isbc_io)
235290   MCFG_PIC8259_ADD("pic_0", INPUTLINE(":maincpu", 0), VCC, NULL)
236291   MCFG_PIT8253_ADD("pit", isbc86_pit_config)
237   MCFG_I8255A_ADD("ppi", isbc_ppi_interface)
292   MCFG_I8255A_ADD("ppi", isbc86_ppi_interface)
238293   MCFG_I8251_ADD("uart8251", isbc_uart8251_interface)
239294
240295   /* video hardware */
r26104r26105
254309
255310static MACHINE_CONFIG_START( isbc286, isbc_state )
256311   /* basic machine hardware */
257   MCFG_CPU_ADD("maincpu", I80286, XTAL_8MHz)
312   MCFG_CPU_ADD("maincpu", I80286, XTAL_16MHz/2)
258313   MCFG_CPU_PROGRAM_MAP(isbc286_mem)
259314   MCFG_CPU_IO_MAP(isbc286_io)
260315   MCFG_PIC8259_ADD("pic_0", INPUTLINE(":maincpu", 0), VCC, READ8(isbc_state, get_slave_ack))
261316   MCFG_PIC8259_ADD("pic_1", DEVWRITELINE("pic_0", pic8259_device, ir7_w), GND, NULL)
262317   MCFG_PIT8254_ADD("pit", isbc286_pit_config)
263   MCFG_I8255A_ADD("ppi", isbc_ppi_interface)
318   MCFG_I8255A_ADD("ppi", isbc286_ppi_interface)
319   MCFG_CENTRONICS_PRINTER_ADD("centronics", isbc_centronics)
264320   MCFG_I8274_ADD("uart8274", XTAL_16MHz/4, isbc_uart8274_interface)
265321   MCFG_RS232_PORT_ADD("rs232", rs232_intf, default_rs232_devices, NULL)
266322
323   MCFG_ISBX_SLOT_ADD("sbx1", 0, isbx_cards, "fdc")
324   MCFG_ISBX_SLOT_MINTR0_CALLBACK(DEVWRITELINE("pic_1", pic8259_device, ir3_w))
325   MCFG_ISBX_SLOT_MINTR1_CALLBACK(DEVWRITELINE("pic_1", pic8259_device, ir4_w))
326   MCFG_ISBX_SLOT_ADD("sbx2", 0, isbx_cards, NULL)
327   MCFG_ISBX_SLOT_MINTR0_CALLBACK(DEVWRITELINE("pic_1", pic8259_device, ir5_w))
328   MCFG_ISBX_SLOT_MINTR1_CALLBACK(DEVWRITELINE("pic_1", pic8259_device, ir6_w))
329
267330   /* video hardware */
268331   MCFG_SERIAL_TERMINAL_ADD("terminal", terminal_intf, 9600)
269332   MCFG_DEVICE_INPUT_DEFAULTS(isbc286_terminal)
r26104r26105
313376COMP( 19??, rpc86,    0,       0,    rpc86,      isbc, driver_device,    0,   "Intel",   "RPC 86",GAME_NOT_WORKING | GAME_NO_SOUND)
314377COMP( 1978, isbc86,   0,       0,    isbc86,     isbc, driver_device,    0,   "Intel",   "iSBC 86/12A",GAME_NOT_WORKING | GAME_NO_SOUND)
315378COMP( 19??, isbc286,  0,       0,    isbc286,    isbc, driver_device,    0,   "Intel",   "iSBC 286",GAME_NOT_WORKING | GAME_NO_SOUND)
316COMP( 1985, isbc2861, 0,       0,    isbc2861,    isbc, driver_device,    0,   "Intel",   "iSBC 286-10",GAME_NOT_WORKING | GAME_NO_SOUND)
379COMP( 1983, isbc2861, 0,       0,    isbc2861,    isbc, driver_device,    0,   "Intel",   "iSBC 286/10",GAME_NOT_WORKING | GAME_NO_SOUND)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team