Previous 199869 Revisions Next

r18309 Saturday 6th October, 2012 at 12:28:24 UTC by smf
Changed rmnimbus to talk to scsicb instead of scsidev. It got missed as it didn't use the line handlers (nw)
[src/mess/drivers]rmnimbus.c
[src/mess/includes]rmnimbus.h
[src/mess/machine]rmnimbus.c

trunk/src/mess/machine/rmnimbus.c
r18308r18309
6262#include "machine/i8251.h"
6363#include "machine/ctronics.h"
6464#include "machine/6522via.h"
65#include "machine/scsibus.h"
6566#include "sound/ay8910.h"
6667#include "sound/msm5205.h"
6768
r18308r18309
22922293{
22932294   int result = 0;
22942295   device_t *fdc = machine().device(FDC_TAG);
2295   scsibus_device *hdc = machine().device<scsibus_device>(SCSIBUS_TAG);
22962296
22972297   int pc=space.device().safe_pc();
22982298   rmnimbus_state *state = machine().driver_data<rmnimbus_state>();
r18308r18309
23232323         result=m_nimbus_drives.reg410_in ^ INV_BITS_410;
23242324         break;
23252325      case 0x18 :
2326         result = hdc->scsi_data_r();
2326         result = m_scsibus->scsi_data_r();
23272327         hdc_post_rw(machine());
23282328      default:
23292329         break;
r18308r18309
23602360WRITE8_MEMBER(rmnimbus_state::nimbus_disk_w)
23612361{
23622362   device_t *fdc = machine().device(FDC_TAG);
2363   scsibus_device *hdc = machine().device<scsibus_device>(SCSIBUS_TAG);
23642363    int                 pc=space.device().safe_pc();
23652364    UINT8               reg400_old = m_nimbus_drives.reg400;
23662365
r18308r18309
24032402            break;
24042403
24052404        case 0x18 :
2406            hdc->scsi_data_w(data);
2405            m_scsibus->scsi_data_w(data);
24072406            hdc_post_rw(machine());
24082407            break;
24092408   }
r18308r18309
24122411static void hdc_reset(running_machine &machine)
24132412{
24142413   rmnimbus_state *state = machine.driver_data<rmnimbus_state>();
2415   scsibus_device *hdc = machine.device<scsibus_device>(SCSIBUS_TAG);
24162414
24172415    state->m_nimbus_drives.reg410_in=0;
2418    state->m_nimbus_drives.reg410_in |= (hdc->get_scsi_line(SCSI_LINE_REQ) ? HDC_REQ_MASK : 0);
2419    state->m_nimbus_drives.reg410_in |= (hdc->get_scsi_line(SCSI_LINE_CD)  ? HDC_CD_MASK  : 0);
2420    state->m_nimbus_drives.reg410_in |= (hdc->get_scsi_line(SCSI_LINE_IO)  ? HDC_IO_MASK  : 0);
2421    state->m_nimbus_drives.reg410_in |= (hdc->get_scsi_line(SCSI_LINE_BSY) ? HDC_BSY_MASK : 0);
2422    state->m_nimbus_drives.reg410_in |= (hdc->get_scsi_line(SCSI_LINE_MSG) ? HDC_MSG_MASK : 0);
2416    state->m_nimbus_drives.reg410_in |= (state->m_scsibus->scsi_req_r() ? HDC_REQ_MASK : 0);
2417    state->m_nimbus_drives.reg410_in |= (state->m_scsibus->scsi_cd_r()  ? HDC_CD_MASK  : 0);
2418    state->m_nimbus_drives.reg410_in |= (state->m_scsibus->scsi_io_r()  ? HDC_IO_MASK  : 0);
2419    state->m_nimbus_drives.reg410_in |= (state->m_scsibus->scsi_bsy_r() ? HDC_BSY_MASK : 0);
2420    state->m_nimbus_drives.reg410_in |= (state->m_scsibus->scsi_msg_r() ? HDC_MSG_MASK : 0);
24232421
24242422    state->m_nimbus_drives.drq_ff=0;
24252423}
r18308r18309
24272425static void hdc_ctrl_write(running_machine &machine, UINT8 data)
24282426{
24292427   rmnimbus_state *state = machine.driver_data<rmnimbus_state>();
2430   scsibus_device *hdc = machine.device<scsibus_device>(SCSIBUS_TAG);
24312428
24322429    // If we enable the HDC interupt, and an interrupt is pending, go deal with it.
24332430    if(((data & HDC_IRQ_MASK) && (~state->m_nimbus_drives.reg410_out & HDC_IRQ_MASK)) &&
r18308r18309
24362433
24372434    state->m_nimbus_drives.reg410_out=data;
24382435
2439    hdc->set_scsi_line(SCSI_LINE_RESET, (data & HDC_RESET_MASK) ? 0 : 1);
2440    hdc->set_scsi_line(SCSI_LINE_SEL, (data & HDC_SEL_MASK) ? 0 : 1);
2436    state->m_scsibus->scsi_rst_w((data & HDC_RESET_MASK) ? 0 : 1);
2437    state->m_scsibus->scsi_sel_w((data & HDC_SEL_MASK) ? 0 : 1);
24412438}
24422439
24432440static void hdc_post_rw(running_machine &machine)
24442441{
24452442   rmnimbus_state *state = machine.driver_data<rmnimbus_state>();
2446   scsibus_device *hdc = machine.device<scsibus_device>(SCSIBUS_TAG);
24472443
24482444    if((state->m_nimbus_drives.reg410_in & HDC_REQ_MASK)==0)
2449        hdc->set_scsi_line(SCSI_LINE_ACK,0);
2445        state->m_scsibus->scsi_ack_w(0);
24502446
24512447    state->m_nimbus_drives.drq_ff=0;
24522448}
r18308r18309
25002496        }
25012497        else
25022498      {
2503         scsibus_device *hdc = downcast<scsibus_device *>(device);
2504         hdc->set_scsi_line(SCSI_LINE_ACK,1);
2499         drvstate->m_scsibus->scsi_ack_w(1);
25052500      }
25062501    }
25072502}
trunk/src/mess/includes/rmnimbus.h
r18308r18309
88
99#include "machine/z80sio.h"
1010#include "machine/wd17xx.h"
11#include "machine/scsibus.h"
11#include "machine/scsicb.h"
1212#include "machine/6522via.h"
1313
1414#define MAINCPU_TAG "maincpu"
r18308r18309
172172};
173173
174174
175class rmnimbus_state : public driver_device
176{
177public:
178   rmnimbus_state(const machine_config &mconfig, device_type type, const char *tag)
179      : driver_device(mconfig, type, tag) { }
180
181   UINT32 m_debug_machine;
182   i186_state m_i186;
183   keyboard_t m_keyboard;
184   nimbus_drives_t m_nimbus_drives;
185   ipc_interface_t m_ipc_interface;
186   UINT8 m_mcu_reg080;
187   UINT8 m_iou_reg092;
188   UINT8 m_last_playmode;
189   mouse_joy_state m_nimbus_mouse;
190   UINT8 m_ay8910_a;
191   UINT16 m_IOPorts[num_ioports];
192   UINT8 m_sio_int_state;
193   UINT8 m_video_mem[SCREEN_WIDTH_PIXELS][SCREEN_HEIGHT_LINES];
194   UINT16 m_vidregs[NO_VIDREGS];
195   UINT8 m_bpp;
196   UINT16 m_pixel_mask;
197   UINT8 m_hs_count;
198   UINT32 m_debug_video;
199   DECLARE_READ16_MEMBER(nimbus_i186_internal_port_r);
200   DECLARE_WRITE16_MEMBER(nimbus_i186_internal_port_w);
201   DECLARE_READ8_MEMBER(nimbus_mcu_r);
202   DECLARE_WRITE8_MEMBER(nimbus_mcu_w);
203   DECLARE_READ16_MEMBER(nimbus_io_r);
204   DECLARE_WRITE16_MEMBER(nimbus_io_w);
205   DECLARE_READ8_MEMBER(nimbus_disk_r);
206   DECLARE_WRITE8_MEMBER(nimbus_disk_w);
207   DECLARE_READ8_MEMBER(nimbus_pc8031_r);
208   DECLARE_WRITE8_MEMBER(nimbus_pc8031_w);
209   DECLARE_READ8_MEMBER(nimbus_pc8031_iou_r);
210   DECLARE_WRITE8_MEMBER(nimbus_pc8031_iou_w);
211   DECLARE_READ8_MEMBER(nimbus_pc8031_port_r);
212   DECLARE_WRITE8_MEMBER(nimbus_pc8031_port_w);
213   DECLARE_READ8_MEMBER(nimbus_iou_r);
214   DECLARE_WRITE8_MEMBER(nimbus_iou_w);
215   DECLARE_READ8_MEMBER(nimbus_sound_ay8910_r);
216   DECLARE_WRITE8_MEMBER(nimbus_sound_ay8910_w);
217   DECLARE_WRITE8_MEMBER(nimbus_sound_ay8910_porta_w);
218   DECLARE_WRITE8_MEMBER(nimbus_sound_ay8910_portb_w);
219   DECLARE_READ8_MEMBER(nimbus_mouse_js_r);
220   DECLARE_WRITE8_MEMBER(nimbus_mouse_js_w);
221   DECLARE_READ16_MEMBER(nimbus_video_io_r);
222   DECLARE_WRITE16_MEMBER(nimbus_video_io_w);
223   DECLARE_DRIVER_INIT(nimbus);
224   virtual void machine_start();
225   virtual void machine_reset();
226   virtual void video_start();
227   virtual void video_reset();
228   virtual void palette_init();
229   UINT32 screen_update_nimbus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
230   void screen_eof_nimbus(screen_device &screen, bool state);
231   TIMER_CALLBACK_MEMBER(internal_timer_int);
232   TIMER_CALLBACK_MEMBER(dma_timer_callback);
233   TIMER_CALLBACK_MEMBER(keyscan_callback);
234   TIMER_CALLBACK_MEMBER(mouse_callback);
235   DECLARE_WRITE_LINE_MEMBER(sio_interrupt);
236   DECLARE_WRITE8_MEMBER(sio_dtr_w);
237   DECLARE_WRITE16_MEMBER(sio_serial_transmit);
238   DECLARE_READ16_MEMBER(sio_serial_receive);
239   DECLARE_WRITE_LINE_MEMBER(nimbus_fdc_intrq_w);
240   DECLARE_WRITE_LINE_MEMBER(nimbus_fdc_drq_w);
241   DECLARE_READ8_MEMBER(nimbus_via_read_portb);
242   DECLARE_WRITE8_MEMBER(nimbus_via_write_portb);
243   DECLARE_WRITE_LINE_MEMBER(nimbus_via_irq_w);
244   DECLARE_WRITE_LINE_MEMBER(nimbus_ack_w);
245};
246
247
248175/*----------- defined in drivers/rmnimbus.c -----------*/
249176
250177extern const unsigned char nimbus_palette[SCREEN_NO_COLOURS][3];
r18308r18309
461388#define LINEAR_ADDR(seg,ofs)    ((seg<<4)+ofs)
462389
463390#define OUTPUT_SEGOFS(mess,seg,ofs)  logerror("%s=%04X:%04X [%08X]\n",mess,seg,ofs,((seg<<4)+ofs))
391
392class rmnimbus_state : public driver_device
393{
394public:
395   rmnimbus_state(const machine_config &mconfig, device_type type, const char *tag)
396      : driver_device(mconfig, type, tag),
397        m_scsibus(*this, SCSIBUS_TAG ":host")
398   {
399   }
400
401   required_device<scsicb_device> m_scsibus;
402   UINT32 m_debug_machine;
403   i186_state m_i186;
404   keyboard_t m_keyboard;
405   nimbus_drives_t m_nimbus_drives;
406   ipc_interface_t m_ipc_interface;
407   UINT8 m_mcu_reg080;
408   UINT8 m_iou_reg092;
409   UINT8 m_last_playmode;
410   mouse_joy_state m_nimbus_mouse;
411   UINT8 m_ay8910_a;
412   UINT16 m_IOPorts[num_ioports];
413   UINT8 m_sio_int_state;
414   UINT8 m_video_mem[SCREEN_WIDTH_PIXELS][SCREEN_HEIGHT_LINES];
415   UINT16 m_vidregs[NO_VIDREGS];
416   UINT8 m_bpp;
417   UINT16 m_pixel_mask;
418   UINT8 m_hs_count;
419   UINT32 m_debug_video;
420   DECLARE_READ16_MEMBER(nimbus_i186_internal_port_r);
421   DECLARE_WRITE16_MEMBER(nimbus_i186_internal_port_w);
422   DECLARE_READ8_MEMBER(nimbus_mcu_r);
423   DECLARE_WRITE8_MEMBER(nimbus_mcu_w);
424   DECLARE_READ16_MEMBER(nimbus_io_r);
425   DECLARE_WRITE16_MEMBER(nimbus_io_w);
426   DECLARE_READ8_MEMBER(nimbus_disk_r);
427   DECLARE_WRITE8_MEMBER(nimbus_disk_w);
428   DECLARE_READ8_MEMBER(nimbus_pc8031_r);
429   DECLARE_WRITE8_MEMBER(nimbus_pc8031_w);
430   DECLARE_READ8_MEMBER(nimbus_pc8031_iou_r);
431   DECLARE_WRITE8_MEMBER(nimbus_pc8031_iou_w);
432   DECLARE_READ8_MEMBER(nimbus_pc8031_port_r);
433   DECLARE_WRITE8_MEMBER(nimbus_pc8031_port_w);
434   DECLARE_READ8_MEMBER(nimbus_iou_r);
435   DECLARE_WRITE8_MEMBER(nimbus_iou_w);
436   DECLARE_READ8_MEMBER(nimbus_sound_ay8910_r);
437   DECLARE_WRITE8_MEMBER(nimbus_sound_ay8910_w);
438   DECLARE_WRITE8_MEMBER(nimbus_sound_ay8910_porta_w);
439   DECLARE_WRITE8_MEMBER(nimbus_sound_ay8910_portb_w);
440   DECLARE_READ8_MEMBER(nimbus_mouse_js_r);
441   DECLARE_WRITE8_MEMBER(nimbus_mouse_js_w);
442   DECLARE_READ16_MEMBER(nimbus_video_io_r);
443   DECLARE_WRITE16_MEMBER(nimbus_video_io_w);
444   DECLARE_DRIVER_INIT(nimbus);
445   virtual void machine_start();
446   virtual void machine_reset();
447   virtual void video_start();
448   virtual void video_reset();
449   virtual void palette_init();
450   UINT32 screen_update_nimbus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
451   void screen_eof_nimbus(screen_device &screen, bool state);
452   TIMER_CALLBACK_MEMBER(internal_timer_int);
453   TIMER_CALLBACK_MEMBER(dma_timer_callback);
454   TIMER_CALLBACK_MEMBER(keyscan_callback);
455   TIMER_CALLBACK_MEMBER(mouse_callback);
456   DECLARE_WRITE_LINE_MEMBER(sio_interrupt);
457   DECLARE_WRITE8_MEMBER(sio_dtr_w);
458   DECLARE_WRITE16_MEMBER(sio_serial_transmit);
459   DECLARE_READ16_MEMBER(sio_serial_receive);
460   DECLARE_WRITE_LINE_MEMBER(nimbus_fdc_intrq_w);
461   DECLARE_WRITE_LINE_MEMBER(nimbus_fdc_drq_w);
462   DECLARE_READ8_MEMBER(nimbus_via_read_portb);
463   DECLARE_WRITE8_MEMBER(nimbus_via_write_portb);
464   DECLARE_WRITE_LINE_MEMBER(nimbus_via_irq_w);
465   DECLARE_WRITE_LINE_MEMBER(nimbus_ack_w);
466};
trunk/src/mess/drivers/rmnimbus.c
r18308r18309
1515#include "formats/pc_dsk.h"
1616#include "includes/rmnimbus.h"
1717#include "machine/er59256.h"
18#include "machine/scsibus.h"
1819#include "machine/scsicb.h"
1920#include "machine/scsihd.h"
2021#include "machine/s1410.h"

Previous 199869 Revisions Next


© 1997-2024 The MAME Team