Previous 199869 Revisions Next

r30672 Monday 26th May, 2014 at 06:38:15 UTC by Curt Coder
(MESS) ql: Floppy WIP. (nw)
[src/emu/bus/ql]sandy_superqboard.c

trunk/src/emu/bus/ql/sandy_superqboard.c
r30671r30672
7979
8080static MACHINE_CONFIG_FRAGMENT( sandy_superqboard )
8181   MCFG_DEVICE_ADD(WD1772_TAG, WD1772x, XTAL_16MHz/2)
82   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", sandy_superqboard_floppies, "35dd", floppy_image_device::default_floppy_formats)
82   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", sandy_superqboard_floppies, "35hd", floppy_image_device::default_floppy_formats)
8383   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":1", sandy_superqboard_floppies, NULL, floppy_image_device::default_floppy_formats)
8484
8585   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
r30671r30672
109109//-------------------------------------------------
110110
111111sandy_superqboard_t::sandy_superqboard_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
112   device_t(mconfig, SANDY_SUPERQBOARD, "SANDY_SUPERQBOARD", tag, owner, clock, "sandy_superqboard", __FILE__),
112   device_t(mconfig, SANDY_SUPERQBOARD, "Sandy SuperQBoard", tag, owner, clock, "sandy_superqboard", __FILE__),
113113   device_ql_expansion_card_interface(mconfig, *this),
114114   m_fdc(*this, WD1772_TAG),
115115   m_floppy0(*this, WD1772_TAG":0"),
r30671r30672
154154
155155UINT8 sandy_superqboard_t::read(address_space &space, offs_t offset, UINT8 data)
156156{
157   switch ((offset >> 2) & 0x03)
157   if ((offset & 0xf0000) == 0xc0000)
158158   {
159   case 0:
160      data = m_fdc->read(space, offset & 0x03);
161      break;
162   
163   case 3:
164      /*
159      if ((offset & 0xffc0) == 0x3fc0)
160      {
161         switch ((offset >> 2) & 0x03)
162         {
163         case 0:
164            data = m_fdc->read(space, offset & 0x03);
165            break;
166         
167         case 3:
168            /*
165169
166         bit      description
170               bit      description
167171
168         0       BUSY
169         1       mouse pin 8
170         2       mouse pin 1
171         3       mouse pin 2
172         4       mouse pin 4 flip-flop Q
173         5       mouse pin 3 flip-flop Q
174         6       INT3
175         7       INT2
172               0       BUSY
173               1       mouse pin 8
174               2       mouse pin 1
175               3       mouse pin 2
176               4       mouse pin 4 flip-flop Q
177               5       mouse pin 3 flip-flop Q
178               6       INT3
179               7       INT2
176180
177      */
181            */
178182
179      data = m_busy;
180      data |= m_int3 << 6;
181      data |= m_int2 << 7;
182      break;
183            data = m_busy;
184            data |= m_int3 << 6;
185            data |= m_int2 << 7;
186            break;
187         }
188      }
189      else
190      {
191         data = m_rom->base()[offset & 0x7fff];
192      }
183193   }
184194
185195   return data;
r30671r30672
192202
193203void sandy_superqboard_t::write(address_space &space, offs_t offset, UINT8 data)
194204{
195   switch ((offset >> 2) & 0x03)
205   if ((offset & 0xf0000) == 0xc0000)
196206   {
197   case 0:
198      m_fdc->write(space, offset & 0x03, data);
199      break;
200
201   case 1:
207      if ((offset & 0xffc0) == 0x3fc0)
202208      {
203      /*
209         switch ((offset >> 2) & 0x03)
210         {
211         case 0:
212            m_fdc->write(space, offset & 0x03, data);
213            break;
204214
205         bit      description
215         case 1:
216            {
217            /*
206218
207         0       SIDE ONE
208         1       DSEL0
209         2       DSEL1
210         3       M ON0
211         4       /DDEN
212         5       STROBE inverted
213         6       GAL pin 11
214         7       GAL pin 9
219               bit      description
215220
216      */
221               0       SIDE ONE
222               1       DSEL0
223               2       DSEL1
224               3       M ON0
225               4       /DDEN
226               5       STROBE inverted
227               6       GAL pin 11
228               7       GAL pin 9
217229
218      floppy_image_device *floppy = NULL;
230            */
219231
220      if (BIT(data, 1))
221      {
222         floppy = m_floppy0->get_device();
223      }
224      else if (BIT(data, 2))
225      {
226         floppy = m_floppy1->get_device();
227      }
232            floppy_image_device *floppy = NULL;
228233
229      m_fdc->set_floppy(floppy);
234            if (BIT(data, 1))
235            {
236               floppy = m_floppy0->get_device();
237            }
238            else if (BIT(data, 2))
239            {
240               floppy = m_floppy1->get_device();
241            }
230242
231      if (floppy)
232      {
233         floppy->ss_w(BIT(data, 0));
234         floppy->mon_w(BIT(data, 3));
235      }
243            m_fdc->set_floppy(floppy);
236244
237      m_fdc->dden_w(BIT(data, 4));
245            if (floppy)
246            {
247               floppy->ss_w(BIT(data, 0));
248               floppy->mon_w(BIT(data, 3));
249            }
238250
239      m_centronics->write_strobe(!BIT(data, 5));
240      }
241      break;
251            m_fdc->dden_w(BIT(data, 4));
242252
243   case 2:
244      m_latch->write(data);
245      break;
253            m_centronics->write_strobe(!BIT(data, 5));
254            }
255            break;
246256
247   case 4:
248      m_int2 = 0;
249      m_int3 = 0;
250      break;
257         case 2:
258            m_latch->write(data);
259            break;
251260
252   case 5:
253      m_fdc->set_unscaled_clock(XTAL_16MHz >> !BIT(data, 0));
254      break;
261         case 4:
262            m_int2 = 0;
263            m_int3 = 0;
264            break;
265
266         case 5:
267            m_fdc->set_unscaled_clock(XTAL_16MHz >> !BIT(data, 0));
268            break;
269         }
270      }
255271   }
256272}

Previous 199869 Revisions Next


© 1997-2024 The MAME Team