Previous 199869 Revisions Next

r31291 Tuesday 15th July, 2014 at 22:04:00 UTC by Carl
(mess) rmnimbus: make scsi work (nw)
scsi: synchronize the data output lines with the input buffer device (nw)
---
The nimbus reads the disk but it won't accept a PC MBR so without the missing machine specific fdisk it isn't possible to create a partition table
[src/emu/bus/scsi]scsi.c
[src/emu/cpu/i86]i186.h
[src/mess/includes]rmnimbus.h
[src/mess/machine]rmnimbus.c

trunk/src/emu/cpu/i86/i186.h
r31290r31291
111111   static const device_timer_id TIMER_INT0 = 0;
112112   static const device_timer_id TIMER_INT1 = 1;
113113   static const device_timer_id TIMER_INT2 = 2;
114   static const device_timer_id TIMER_TIME0 = 3;
115   static const device_timer_id TIMER_TIME1 = 4;
116   static const device_timer_id TIMER_TIME2 = 5;
117114
118115   struct timer_state  m_timer[3];
119116   struct dma_state    m_dma[2];
trunk/src/emu/bus/scsi/scsi.c
r31290r31291
113113   m_data5_handler.resolve_safe();
114114   m_data6_handler.resolve_safe();
115115   m_data7_handler.resolve_safe();
116
117   m_data0_handler(0);
118   m_data1_handler(0);
119   m_data2_handler(0);
120   m_data3_handler(0);
121   m_data4_handler(0);
122   m_data5_handler(0);
123   m_data6_handler(0);
124   m_data7_handler(0);
116125}
117126
118127void SCSI_PORT_DEVICE::update_bsy()
trunk/src/mess/machine/rmnimbus.c
r31290r31291
66    Phill Harvey-Smith
77    2009-11-29.
88
9    80186 internal DMA/Timer/PIC code borrowed from Compis driver.
10    Perhaps this needs merging into the 80186 core.....
119*/
1210
1311/*
r31290r31291
11311129
11321130   // if we enable hdc drq with a pending condition, act on it
11331131   if((data & HDC_DRQ_MASK) && (~reg400_old & HDC_DRQ_MASK))
1134      hdc_drq();
1132      hdc_drq(true);
11351133}
11361134
11371135/*
r31290r31291
11641162
11651163void rmnimbus_state::hdc_reset()
11661164{
1167   m_nimbus_drives.drq_ff=0;
11681165   m_scsi_iena = 0;
11691166   m_scsi_msg = 0;
11701167   m_scsi_bsy = 0;
r31290r31291
11881185{
11891186   if(m_scsi_req)
11901187      m_scsibus->write_ack(1);
1191
1192   m_nimbus_drives.drq_ff=0;
11931188}
11941189
1195void rmnimbus_state::hdc_drq()
1190void rmnimbus_state::hdc_drq(bool state)
11961191{
1197   if(HDC_DRQ_ENABLED() && m_nimbus_drives.drq_ff)
1198   {
1199      m_maincpu->drq1_w(1);
1200   }
1192   m_maincpu->drq1_w(HDC_DRQ_ENABLED() && !m_scsi_cd && state);
12011193}
12021194
12031195WRITE_LINE_MEMBER( rmnimbus_state::write_scsi_bsy )
r31290r31291
12341226
12351227   if (state)
12361228   {
1237      if (m_scsi_cd && last)
1229      if (!m_scsi_cd && !last)
12381230      {
1239         m_nimbus_drives.drq_ff=1;
1240         hdc_drq();
1231         hdc_drq(true);
12411232      }
12421233   }
12431234   else
12441235   {
1236      hdc_drq(false);
12451237      m_scsibus->write_ack(0);
12461238   }
12471239   check_scsi_irq();
trunk/src/mess/includes/rmnimbus.h
r31290r31291
151151   void hdc_reset();
152152   void hdc_ctrl_write(UINT8 data);
153153   void hdc_post_rw();
154   void hdc_drq();
154   void hdc_drq(bool state);
155155   void pc8031_reset();
156156   //void ipc_dumpregs();
157157   void iou_reset();
r31290r31291
177177   struct
178178   {
179179      UINT8   reg400;
180      UINT8   reg418;
181
182      UINT8   drq_ff;
183180   } m_nimbus_drives;
184181
185182   /* 8031 Peripheral controler */
r31290r31291
189186      UINT8   ipc_out;
190187      UINT8   status_in;
191188      UINT8   status_out;
192      UINT8   int_8c_pending;
193      UINT8   int_8e_pending;
194      UINT8   int_8f_pending;
195189   } m_ipc_interface;
196190
197191   /* Mouse/Joystick */

Previous 199869 Revisions Next


© 1997-2024 The MAME Team