Previous 199869 Revisions Next

r18332 Sunday 7th October, 2012 at 12:04:20 UTC by smf
changed rmnimbus to use DEVCB & added a callback for ACK. (nw)
[src/emu/machine]scsibus.c scsicb.c scsicb.h
[src/mess/drivers]bullet.c rmnimbus.c v1050.c
[src/mess/includes]rmnimbus.h
[src/mess/machine]abc_hdc.c abc_xebec.c d9060.c e01.c lux4105.c rmnimbus.c

trunk/src/emu/machine/scsicb.c
r18331r18332
2424   out_io_func.resolve(_out_io_func, *this);
2525   out_msg_func.resolve(_out_msg_func, *this);
2626   out_req_func.resolve(_out_req_func, *this);
27   out_ack_func.resolve(_out_ack_func, *this);
2728   out_rst_func.resolve(_out_rst_func, *this);
2829}
2930
trunk/src/emu/machine/scsicb.h
r18331r18332
2525
2626struct SCSICB_interface
2727{
28   void (*line_change_cb)(device_t *, UINT8 line, UINT8 state);
29
3028   devcb_write_line _out_bsy_func;
3129   devcb_write_line _out_sel_func;
3230   devcb_write_line _out_cd_func;
3331   devcb_write_line _out_io_func;
3432   devcb_write_line _out_msg_func;
3533   devcb_write_line _out_req_func;
34   devcb_write_line _out_ack_func;
3635   devcb_write_line _out_rst_func;
3736};
3837
r18331r18332
4948   devcb_resolved_write_line out_io_func;
5049   devcb_resolved_write_line out_msg_func;
5150   devcb_resolved_write_line out_req_func;
51   devcb_resolved_write_line out_ack_func;
5252   devcb_resolved_write_line out_rst_func;
5353
5454   UINT8 scsi_data_r();
trunk/src/emu/machine/scsibus.c
r18331r18332
491491
492492   if(m_scsicb != NULL)
493493   {
494      if(m_scsicb->line_change_cb!=NULL)
495         m_scsicb->line_change_cb(this, line,state);
496
497494      switch (line)
498495      {
499496      case SCSI_LINE_BSY: m_scsicb->out_bsy_func(state); break;
r18331r18332
502499      case SCSI_LINE_IO: m_scsicb->out_io_func(state); break;
503500      case SCSI_LINE_MSG: m_scsicb->out_msg_func(state); break;
504501      case SCSI_LINE_REQ: m_scsicb->out_req_func(state); break;
502      case SCSI_LINE_ACK: m_scsicb->out_ack_func(state); break;
505503      case SCSI_LINE_RESET: m_scsicb->out_rst_func(state); break;
506504      }
507505   }
trunk/src/mess/machine/lux4105.c
r18331r18332
6666
6767static const SCSICB_interface sasi_intf =
6868{
69   NULL,
7069   DEVCB_DEVICE_LINE_MEMBER("^^", luxor_4105_device, sasi_bsy_w),
7170   DEVCB_NULL,
7271   DEVCB_NULL,
7372   DEVCB_DEVICE_LINE_MEMBER("^^", luxor_4105_device, sasi_io_w),
7473   DEVCB_NULL,
7574   DEVCB_DEVICE_LINE_MEMBER("^^", luxor_4105_device, sasi_req_w),
75   DEVCB_NULL,
7676   DEVCB_NULL
7777};
7878
trunk/src/mess/machine/d9060.c
r18331r18332
148148
149149static const SCSICB_interface sasi_intf =
150150{
151   NULL,
152151   DEVCB_NULL,
153152   DEVCB_NULL,
154153   DEVCB_NULL,
155154   DEVCB_NULL,
156155   DEVCB_NULL,
157156   DEVCB_DEVICE_LINE_MEMBER("^^", base_d9060_device, req_w),
157   DEVCB_NULL,
158158   DEVCB_NULL
159159};
160160
trunk/src/mess/machine/rmnimbus.c
r18331r18332
24562456    }
24572457}
24582458
2459void nimbus_scsi_linechange(device_t *device, UINT8 line, UINT8 state)
2459WRITE_LINE_MEMBER( rmnimbus_state::nimbus_scsi_bsy_w )
24602460{
2461   rmnimbus_state *drvstate = device->machine().driver_data<rmnimbus_state>();
2462    UINT8   mask = 0;
2461   nimbus_scsi_linechange( HDC_BSY_MASK, state );
2462}
2463
2464WRITE_LINE_MEMBER( rmnimbus_state::nimbus_scsi_cd_w )
2465{
2466   nimbus_scsi_linechange( HDC_CD_MASK, state );
2467}
2468
2469WRITE_LINE_MEMBER( rmnimbus_state::nimbus_scsi_io_w )
2470{
2471   nimbus_scsi_linechange( HDC_IO_MASK, state );
2472}
2473
2474WRITE_LINE_MEMBER( rmnimbus_state::nimbus_scsi_msg_w )
2475{
2476   nimbus_scsi_linechange( HDC_MSG_MASK, state );
2477}
2478
2479WRITE_LINE_MEMBER( rmnimbus_state::nimbus_scsi_req_w )
2480{
2481   nimbus_scsi_linechange( HDC_REQ_MASK, state );
2482}
2483
2484void rmnimbus_state::nimbus_scsi_linechange( UINT8 mask, UINT8 state )
2485{
24632486    UINT8   last = 0;
24642487
2465    switch (line)
2466    {
2467        case SCSI_LINE_REQ   : mask=HDC_REQ_MASK; break;
2468        case SCSI_LINE_CD    : mask=HDC_CD_MASK; break;
2469        case SCSI_LINE_IO    : mask=HDC_IO_MASK; break;
2470        case SCSI_LINE_BSY   : mask=HDC_BSY_MASK; break;
2471        case SCSI_LINE_MSG   : mask=HDC_MSG_MASK; break;
2472    }
2488    last=m_nimbus_drives.reg410_in & mask;
24732489
2474    last=drvstate->m_nimbus_drives.reg410_in & mask;
2475
24762490    if(state)
2477        drvstate->m_nimbus_drives.reg410_in|=mask;
2491        m_nimbus_drives.reg410_in|=mask;
24782492    else
2479        drvstate->m_nimbus_drives.reg410_in&=~mask;
2493        m_nimbus_drives.reg410_in&=~mask;
24802494
24812495
2482    if(HDC_IRQ_ENABLED(drvstate) && ((~drvstate->m_nimbus_drives.reg410_in & HDC_INT_TRIGGER)==HDC_INT_TRIGGER))
2483        set_disk_int(device->machine(),1);
2496    if(HDC_IRQ_ENABLED() && ((~m_nimbus_drives.reg410_in & HDC_INT_TRIGGER)==HDC_INT_TRIGGER))
2497        set_disk_int(machine(),1);
24842498    else
2485        set_disk_int(device->machine(),0);
2499        set_disk_int(machine(),0);
24862500
2487    if(line==SCSI_LINE_REQ)
2501    if( mask == HDC_REQ_MASK )
24882502    {
24892503        if (state==0)
24902504        {
2491            if(((drvstate->m_nimbus_drives.reg410_in & HDC_CD_MASK)==HDC_CD_MASK) && (last!=0))
2505            if(((m_nimbus_drives.reg410_in & HDC_CD_MASK)==HDC_CD_MASK) && (last!=0))
24922506            {
2493                drvstate->m_nimbus_drives.drq_ff=1;
2494                hdc_drq(device->machine());
2507                m_nimbus_drives.drq_ff=1;
2508                hdc_drq(machine());
24952509            }
24962510        }
24972511        else
24982512      {
2499         drvstate->m_scsibus->scsi_ack_w(1);
2513         m_scsibus->scsi_ack_w(1);
25002514      }
25012515    }
25022516}
trunk/src/mess/machine/e01.c
r18331r18332
285285
286286static const SCSICB_interface scsi_intf =
287287{
288   NULL,
289288   DEVCB_DEVICE_LINE_MEMBER("^^", e01_device, scsi_bsy_w),
290289   DEVCB_NULL,
291290   DEVCB_NULL,
292291   DEVCB_NULL,
293292   DEVCB_NULL,
294293   DEVCB_DEVICE_LINE_MEMBER("^^", e01_device, scsi_req_w),
294   DEVCB_NULL,
295295   DEVCB_NULL
296296};
297297
trunk/src/mess/machine/abc_hdc.c
r18331r18332
9393
9494static const SCSICB_interface sasi_intf =
9595{
96   NULL,
9796   DEVCB_NULL,
9897   DEVCB_NULL,
9998   DEVCB_NULL,
10099   DEVCB_NULL,
101100   DEVCB_NULL,
102101   DEVCB_NULL,
102   DEVCB_NULL,
103103   DEVCB_NULL
104104};
105105
trunk/src/mess/machine/abc_xebec.c
r18331r18332
8686
8787static const SCSICB_interface sasi_intf =
8888{
89   NULL,
9089   DEVCB_NULL,
9190   DEVCB_NULL,
9291   DEVCB_NULL,
9392   DEVCB_NULL,
9493   DEVCB_NULL,
9594   DEVCB_NULL,
95   DEVCB_NULL,
9696   DEVCB_NULL
9797};
9898
trunk/src/mess/includes/rmnimbus.h
r18331r18332
264264/* SASI harddisk interface */
265265#define SCSIBUS_TAG             "scsibus"
266266
267void nimbus_scsi_linechange(device_t *device, UINT8 line, UINT8 state);
268
269267/* Masks for writes to port 0x400 */
270268#define FDC_DRIVE0_MASK 0x01
271269#define FDC_DRIVE1_MASK 0x02
r18331r18332
305303#define HDC_RESET_MASK  0x01
306304#define HDC_SEL_MASK    0x02
307305#define HDC_IRQ_MASK    0x04
308#define HDC_IRQ_ENABLED(state)   ((state->m_nimbus_drives.reg410_out & HDC_IRQ_MASK) ? 1 : 0)
306#define HDC_IRQ_ENABLED()   ((m_nimbus_drives.reg410_out & HDC_IRQ_MASK) ? 1 : 0)
309307
310308
311309#define SCSI_ID_NONE    0x80
r18331r18332
463461   DECLARE_WRITE8_MEMBER(nimbus_via_write_portb);
464462   DECLARE_WRITE_LINE_MEMBER(nimbus_via_irq_w);
465463   DECLARE_WRITE_LINE_MEMBER(nimbus_ack_w);
464   DECLARE_WRITE_LINE_MEMBER(nimbus_scsi_bsy_w);
465   DECLARE_WRITE_LINE_MEMBER(nimbus_scsi_cd_w);
466   DECLARE_WRITE_LINE_MEMBER(nimbus_scsi_io_w);
467   DECLARE_WRITE_LINE_MEMBER(nimbus_scsi_msg_w);
468   DECLARE_WRITE_LINE_MEMBER(nimbus_scsi_req_w);
469   void nimbus_scsi_linechange( UINT8 mask, UINT8 state );
466470};
trunk/src/mess/drivers/rmnimbus.c
r18331r18332
8686
8787static const SCSICB_interface scsibus_config =
8888{
89   &nimbus_scsi_linechange
89   DEVCB_DRIVER_LINE_MEMBER(rmnimbus_state, nimbus_scsi_bsy_w),
90   DEVCB_NULL,
91   DEVCB_DRIVER_LINE_MEMBER(rmnimbus_state, nimbus_scsi_cd_w),
92   DEVCB_DRIVER_LINE_MEMBER(rmnimbus_state, nimbus_scsi_io_w),
93   DEVCB_DRIVER_LINE_MEMBER(rmnimbus_state, nimbus_scsi_msg_w),
94   DEVCB_DRIVER_LINE_MEMBER(rmnimbus_state, nimbus_scsi_req_w),
95   DEVCB_NULL,
96   DEVCB_NULL
9097};
9198
9299static const centronics_interface nimbus_centronics_config =
trunk/src/mess/drivers/bullet.c
r18331r18332
10401040
10411041static const SCSICB_interface scsi_intf =
10421042{
1043   NULL,
10441043   DEVCB_NULL,
10451044   DEVCB_NULL,
10461045   DEVCB_NULL,
10471046   DEVCB_NULL,
10481047   DEVCB_NULL,
10491048   DEVCB_DRIVER_LINE_MEMBER(bulletf_state, req_w),
1049   DEVCB_NULL,
10501050   DEVCB_NULL
10511051};
10521052
trunk/src/mess/drivers/v1050.c
r18331r18332
986986
987987static const SCSICB_interface sasi_intf =
988988{
989   NULL,
990989   DEVCB_NULL,
991990   DEVCB_NULL,
992991   DEVCB_NULL,
993992   DEVCB_NULL,
994993   DEVCB_NULL,
995994   DEVCB_NULL,
995   DEVCB_NULL,
996996   DEVCB_NULL
997997};
998998

Previous 199869 Revisions Next


© 1997-2024 The MAME Team