Previous 199869 Revisions Next

r26150 Wednesday 13th November, 2013 at 20:45:50 UTC by Curt Coder
(MESS) abc800: Added slot devices for the ABC 830/832/834/838 floppy disk drives, and the ABC 850/852/856 hard disk drives. [Curt Coder]
[src/emu/bus/abcbus]abc890.c abc890.h abcbus.c abcbus.h lux21046.c lux21046.h lux21056.c
[src/mess/drivers]abc80x.c

trunk/src/mess/drivers/abc80x.c
r26149r26150
11811181   MCFG_ABC_KEYBOARD_PORT_ADD("abc800", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w))
11821182
11831183   // ABC bus
1184   MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "fast")
1185   MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("fast", abc830_fast)
1184   MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "abc830")
11861185
11871186   // internal ram
11881187   MCFG_RAM_ADD(RAM_TAG)
r26149r26150
12251224   MCFG_ABC_KEYBOARD_PORT_ADD("abc800", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w))
12261225
12271226   // ABC bus
1228   MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "fast")
1229   MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("fast", abc830_fast)
1227   MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "abc830")
12301228
12311229   // internal ram
12321230   MCFG_RAM_ADD(RAM_TAG)
r26149r26150
12691267   MCFG_ABC_KEYBOARD_PORT_ADD("abc55", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w))
12701268
12711269   // ABC bus
1272   MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "fast")
1273   MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("fast", abc834_fast)
1270   MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "abc834")
12741271
12751272   // internal ram
12761273   MCFG_RAM_ADD(RAM_TAG)
r26149r26150
13061303   MCFG_ABC_KEYBOARD_PORT_ADD("abc77", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w))
13071304
13081305   // ABC bus
1309   MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "fast")
1310   MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("fast", abc832_fast)
1306   MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "abc832")
13111307
13121308   // internal ram
13131309   MCFG_RAM_ADD(RAM_TAG)
trunk/src/emu/bus/abcbus/abc890.c
r26149r26150
2020const device_type ABC890 = &device_creator<abc890_device>;
2121const device_type ABC894 = &device_creator<abc894_device>;
2222const device_type ABC850 = &device_creator<abc850_device>;
23const device_type ABC852 = &device_creator<abc852_device>;
24const device_type ABC856 = &device_creator<abc856_device>;
2325
2426
2527//-------------------------------------------------
r26149r26150
7678
7779static MACHINE_CONFIG_FRAGMENT( abc850 )
7880   MCFG_ABCBUS_SLOT_ADD("io1", abcbus_cards, "fast")
79   MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("fast", abc850_fast) // TODO this does not work within a device
81   MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("fast", abc850_fast)
8082   MCFG_ABCBUS_SLOT_ADD("io2", abcbus_cards, "xebec")
83   MCFG_DEVICE_CARD_DEFAULT_BIOS("xebec", "ro202")
8184   MCFG_ABCBUS_SLOT_ADD("io3", abcbus_cards, NULL)
8285   MCFG_ABCBUS_SLOT_ADD("io4", abcbus_cards, NULL)
8386   MCFG_ABCBUS_SLOT_ADD("io5", abcbus_cards, NULL)
r26149r26150
97100}
98101
99102
103//-------------------------------------------------
104//  MACHINE_DRIVER( abc852 )
105//-------------------------------------------------
100106
107static MACHINE_CONFIG_FRAGMENT( abc852 )
108   MCFG_ABCBUS_SLOT_ADD("io1", abcbus_cards, "fast")
109   MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("fast", abc850_fast)
110   MCFG_ABCBUS_SLOT_ADD("io2", abcbus_cards, "xebec")
111   MCFG_DEVICE_CARD_DEFAULT_BIOS("xebec", "basf6185")
112   MCFG_ABCBUS_SLOT_ADD("io3", abcbus_cards, NULL)
113   MCFG_ABCBUS_SLOT_ADD("io4", abcbus_cards, NULL)
114   MCFG_ABCBUS_SLOT_ADD("io5", abcbus_cards, NULL)
115   MCFG_ABCBUS_SLOT_ADD("io6", abcbus_cards, NULL)
116   MCFG_ABCBUS_SLOT_ADD("io7", abcbus_cards, NULL)
117MACHINE_CONFIG_END
118
119
120//-------------------------------------------------
121//  machine_config_additions - device-specific
122//  machine configurations
123//-------------------------------------------------
124
125machine_config_constructor abc852_device::device_mconfig_additions() const
126{
127   return MACHINE_CONFIG_NAME( abc852 );
128}
129
130
131//-------------------------------------------------
132//  MACHINE_DRIVER( abc856 )
133//-------------------------------------------------
134
135static MACHINE_CONFIG_FRAGMENT( abc856 )
136   MCFG_ABCBUS_SLOT_ADD("io1", abcbus_cards, "fast")
137   MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("fast", abc850_fast)
138   MCFG_ABCBUS_SLOT_ADD("io2", abcbus_cards, "xebec")
139   MCFG_DEVICE_CARD_DEFAULT_BIOS("xebec", "micr1325")
140   MCFG_ABCBUS_SLOT_ADD("io3", abcbus_cards, NULL)
141   MCFG_ABCBUS_SLOT_ADD("io4", abcbus_cards, NULL)
142   MCFG_ABCBUS_SLOT_ADD("io5", abcbus_cards, NULL)
143   MCFG_ABCBUS_SLOT_ADD("io6", abcbus_cards, NULL)
144   MCFG_ABCBUS_SLOT_ADD("io7", abcbus_cards, NULL)
145MACHINE_CONFIG_END
146
147
148//-------------------------------------------------
149//  machine_config_additions - device-specific
150//  machine configurations
151//-------------------------------------------------
152
153machine_config_constructor abc856_device::device_mconfig_additions() const
154{
155   return MACHINE_CONFIG_NAME( abc856 );
156}
157
158
159
101160//**************************************************************************
102161//  LIVE DEVICE
103162//**************************************************************************
r26149r26150
114173
115174abc890_device::abc890_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
116175   : device_t(mconfig, ABC890, "ABC 890", tag, owner, clock, "abc890", __FILE__),
117      device_abcbus_card_interface(mconfig, *this),
118      m_slots(7)
176      device_abcbus_card_interface(mconfig, *this)
119177{
120178}
121179
122180abc894_device::abc894_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
123181   : abc890_device(mconfig, ABC894, "ABC 894", tag, owner, clock, "abc894", __FILE__)
124182{
125   m_slots = 3;
126183}
127184
128185abc850_device::abc850_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
129186   : abc890_device(mconfig, ABC850, "ABC 850", tag, owner, clock, "abc850", __FILE__)
130187{
131   m_slots = 7;
132188}
133189
190abc852_device::abc852_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
191   : abc890_device(mconfig, ABC852, "ABC 852", tag, owner, clock, "abc852", __FILE__)
192{
193}
134194
195abc856_device::abc856_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
196   : abc890_device(mconfig, ABC856, "ABC 856", tag, owner, clock, "abc856", __FILE__)
197{
198}
199
200
135201//-------------------------------------------------
136202//  device_start - device-specific startup
137203//-------------------------------------------------
138204
139205void abc890_device::device_start()
140206{
141   // find devices
142   m_expansion_slot[0] = dynamic_cast<abcbus_slot_device *>(subdevice("io1"));
143   m_expansion_slot[1] = dynamic_cast<abcbus_slot_device *>(subdevice("io2"));
144   m_expansion_slot[2] = dynamic_cast<abcbus_slot_device *>(subdevice("io3"));
145   m_expansion_slot[3] = dynamic_cast<abcbus_slot_device *>(subdevice("io4"));
146   m_expansion_slot[4] = dynamic_cast<abcbus_slot_device *>(subdevice("mem1"));
147   m_expansion_slot[5] = dynamic_cast<abcbus_slot_device *>(subdevice("mem2"));
148   m_expansion_slot[6] = dynamic_cast<abcbus_slot_device *>(subdevice("mem3"));
149207}
150208
151void abc894_device::device_start()
152{
153   // find devices
154   m_expansion_slot[0] = dynamic_cast<abcbus_slot_device *>(subdevice("io1"));
155   m_expansion_slot[1] = dynamic_cast<abcbus_slot_device *>(subdevice("io2"));
156   m_expansion_slot[2] = dynamic_cast<abcbus_slot_device *>(subdevice("io3"));
157}
158209
159void abc850_device::device_start()
160{
161   // find devices
162   m_expansion_slot[0] = dynamic_cast<abcbus_slot_device *>(subdevice("io1"));
163   m_expansion_slot[1] = dynamic_cast<abcbus_slot_device *>(subdevice("io2"));
164   m_expansion_slot[2] = dynamic_cast<abcbus_slot_device *>(subdevice("io3"));
165   m_expansion_slot[3] = dynamic_cast<abcbus_slot_device *>(subdevice("io4"));
166   m_expansion_slot[4] = dynamic_cast<abcbus_slot_device *>(subdevice("io5"));
167   m_expansion_slot[5] = dynamic_cast<abcbus_slot_device *>(subdevice("io6"));
168   m_expansion_slot[6] = dynamic_cast<abcbus_slot_device *>(subdevice("io7"));
169}
170
171
172210//-------------------------------------------------
173211//  device_reset - device-specific reset
174212//-------------------------------------------------
175213
176214void abc890_device::device_reset()
177215{
178   for (int i = 0; i < m_slots; i++)
216   for (device_t *device = first_subdevice(); device != NULL; device = device->next())
179217   {
180      m_expansion_slot[i]->reset();
218      device->reset();
181219   }
182220}
183221
184222
223//-------------------------------------------------
224//  abcbus_cs - card select
225//-------------------------------------------------
185226
186//**************************************************************************
187//  ABC BUS INTERFACE
188//**************************************************************************
189
190227void abc890_device::abcbus_cs(UINT8 data)
191228{
192   for (int i = 0; i < m_slots; i++)
229   abcbus_slot_device_iterator iter(*this);
230
231   for (abcbus_slot_device *slot = iter.first(); slot != NULL; slot = iter.next())
193232   {
194      m_expansion_slot[i]->cs_w(data);
233      slot->cs_w(data);
195234   }
196235}
197236
237
238//-------------------------------------------------
239//  abcbus_inp - input
240//-------------------------------------------------
241
198242UINT8 abc890_device::abcbus_inp()
199243{
200244   UINT8 data = 0xff;
201245
202   for (int i = 0; i < m_slots; i++)
246   abcbus_slot_device_iterator iter(*this);
247
248   for (abcbus_slot_device *slot = iter.first(); slot != NULL; slot = iter.next())
203249   {
204      data &= m_expansion_slot[i]->inp_r();
250      data &= slot->inp_r();
205251   }
206252
207253   return data;
208254}
209255
256
257//-------------------------------------------------
258//  abcbus_out - output
259//-------------------------------------------------
260
210261void abc890_device::abcbus_out(UINT8 data)
211262{
212   for (int i = 0; i < m_slots; i++)
263   abcbus_slot_device_iterator iter(*this);
264
265   for (abcbus_slot_device *slot = iter.first(); slot != NULL; slot = iter.next())
213266   {
214      m_expansion_slot[i]->out_w(data);
267      slot->out_w(data);
215268   }
216269}
217270
271
272//-------------------------------------------------
273//  abcbus_stat - status
274//-------------------------------------------------
275
218276UINT8 abc890_device::abcbus_stat()
219277{
220278   UINT8 data = 0xff;
221279
222   for (int i = 0; i < m_slots; i++)
280   abcbus_slot_device_iterator iter(*this);
281
282   for (abcbus_slot_device *slot = iter.first(); slot != NULL; slot = iter.next())
223283   {
224      data &= m_expansion_slot[i]->stat_r();
284      data &= slot->stat_r();
225285   }
226286
227287   return data;
228288}
229289
290
291//-------------------------------------------------
292//  abcbus_c1 - command 1
293//-------------------------------------------------
294
230295void abc890_device::abcbus_c1(UINT8 data)
231296{
232   for (int i = 0; i < m_slots; i++)
297   abcbus_slot_device_iterator iter(*this);
298
299   for (abcbus_slot_device *slot = iter.first(); slot != NULL; slot = iter.next())
233300   {
234      m_expansion_slot[i]->c1_w(data);
301      slot->c1_w(data);
235302   }
236303}
237304
305
306//-------------------------------------------------
307//  abcbus_c2 - command 2
308//-------------------------------------------------
309
238310void abc890_device::abcbus_c2(UINT8 data)
239311{
240   for (int i = 0; i < m_slots; i++)
312   abcbus_slot_device_iterator iter(*this);
313
314   for (abcbus_slot_device *slot = iter.first(); slot != NULL; slot = iter.next())
241315   {
242      m_expansion_slot[i]->c2_w(data);
316      slot->c2_w(data);
243317   }
244318}
245319
320
321//-------------------------------------------------
322//  abcbus_c3 - command 3
323//-------------------------------------------------
324
246325void abc890_device::abcbus_c3(UINT8 data)
247326{
248   for (int i = 0; i < m_slots; i++)
327   abcbus_slot_device_iterator iter(*this);
328
329   for (abcbus_slot_device *slot = iter.first(); slot != NULL; slot = iter.next())
249330   {
250      m_expansion_slot[i]->c3_w(data);
331      slot->c3_w(data);
251332   }
252333}
253334
335
336//-------------------------------------------------
337//  abcbus_c4 - command 4
338//-------------------------------------------------
339
254340void abc890_device::abcbus_c4(UINT8 data)
255341{
256   for (int i = 0; i < m_slots; i++)
342   abcbus_slot_device_iterator iter(*this);
343
344   for (abcbus_slot_device *slot = iter.first(); slot != NULL; slot = iter.next())
257345   {
258      m_expansion_slot[i]->c4_w(data);
346      slot->c4_w(data);
259347   }
260348}
261349
350
351//-------------------------------------------------
352//  abcbus_xmemfl - extended memory read
353//-------------------------------------------------
354
262355UINT8 abc890_device::abcbus_xmemfl(offs_t offset)
263356{
264357   UINT8 data = 0xff;
265358
266   for (int i = 0; i < m_slots; i++)
359   abcbus_slot_device_iterator iter(*this);
360
361   for (abcbus_slot_device *slot = iter.first(); slot != NULL; slot = iter.next())
267362   {
268      data &= m_expansion_slot[i]->xmemfl_r(offset);
363      data &= slot->xmemfl_r(offset);
269364   }
270365
271366   return data;
272367}
273368
369
370//-------------------------------------------------
371//  abcbus_xmemw - extended memory write
372//-------------------------------------------------
373
274374void abc890_device::abcbus_xmemw(offs_t offset, UINT8 data)
275375{
276   for (int i = 0; i < m_slots; i++)
376   abcbus_slot_device_iterator iter(*this);
377
378   for (abcbus_slot_device *slot = iter.first(); slot != NULL; slot = iter.next())
277379   {
278      m_expansion_slot[i]->xmemw_w(offset, data);
380      slot->xmemw_w(offset, data);
279381   }
280382}
trunk/src/emu/bus/abcbus/abc890.h
r26149r26150
6060   virtual void abcbus_c4(UINT8 data);
6161   virtual UINT8 abcbus_xmemfl(offs_t offset);
6262   virtual void abcbus_xmemw(offs_t offset, UINT8 data);
63};
6364
64   int m_slots;
6565
66   abcbus_slot_device *m_expansion_slot[MAX_SLOTS];
67};
66// ======================> abc894_device
6867
69
7068class abc894_device :  public abc890_device
7169{
7270public:
r26149r26150
7573
7674   // optional information overrides
7775   virtual machine_config_constructor device_mconfig_additions() const;
78
79protected:
80   // device-level overrides
81   virtual void device_start();
8276};
8377
8478
79// ======================> abc850_device
80
8581class abc850_device :  public abc890_device
8682{
8783public:
r26149r26150
9086
9187   // optional information overrides
9288   virtual machine_config_constructor device_mconfig_additions() const;
89};
9390
94protected:
95   // device-level overrides
96   virtual void device_start();
91
92// ======================> abc852_device
93
94class abc852_device :  public abc890_device
95{
96public:
97   // construction/destruction
98   abc852_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
99
100   // optional information overrides
101   virtual machine_config_constructor device_mconfig_additions() const;
97102};
98103
99104
105// ======================> abc856_device
106
107class abc856_device :  public abc890_device
108{
109public:
110   // construction/destruction
111   abc856_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
112
113   // optional information overrides
114   virtual machine_config_constructor device_mconfig_additions() const;
115};
116
117
100118// device type definition
101119extern const device_type ABC890;
102120extern const device_type ABC894;
103121extern const device_type ABC850;
122extern const device_type ABC852;
123extern const device_type ABC856;
104124
105125
106126
trunk/src/emu/bus/abcbus/abcbus.c
r26149r26150
8484//-------------------------------------------------
8585
8686SLOT_INTERFACE_START( abcbus_cards )
87   SLOT_INTERFACE("exp", ABC890)
88   SLOT_INTERFACE("exp3", ABC894)
87   SLOT_INTERFACE("abc830", ABC830)
88   SLOT_INTERFACE("abc832", ABC832)
89   SLOT_INTERFACE("abc834", ABC834)
90   SLOT_INTERFACE("abc838", ABC838)
91   SLOT_INTERFACE("abc850", ABC850)
92   SLOT_INTERFACE("abc852", ABC852)
93   SLOT_INTERFACE("abc856", ABC856)
94   SLOT_INTERFACE("abc890", ABC890)
95   SLOT_INTERFACE("abc894", ABC894)
8996   SLOT_INTERFACE("hdc", ABC_HDC)
90   SLOT_INTERFACE("hdd", ABC850)
9197   SLOT_INTERFACE("dos", ABC_DOS)
9298   SLOT_INTERFACE("fd2", ABC_FD2)
9399   SLOT_INTERFACE("sio", ABC_SIO)
trunk/src/emu/bus/abcbus/abcbus.h
r26149r26150
327327SLOT_INTERFACE_EXTERN( abc1600bus_cards );
328328
329329
330typedef device_type_iterator<&device_creator<abcbus_slot_device>, abcbus_slot_device> abcbus_slot_device_iterator;
330331
332
333
334
331335#endif
trunk/src/emu/bus/abcbus/lux21046.c
r26149r26150
9797//**************************************************************************
9898
9999const device_type LUXOR_55_21046 = &device_creator<luxor_55_21046_device>;
100const device_type ABC830 = &device_creator<abc830_device>;
101const device_type ABC832 = &device_creator<abc832_device>;
102const device_type ABC834 = &device_creator<abc834_device>;
103const device_type ABC838 = &device_creator<abc838_device>;
100104
101105
102106//-------------------------------------------------
r26149r26150
284288
285289
286290//-------------------------------------------------
287//  MACHINE_DRIVER( luxor_55_21046 )
291//  MACHINE_CONFIG( luxor_55_21046 )
288292//-------------------------------------------------
289293
290294static MACHINE_CONFIG_FRAGMENT( luxor_55_21046 )
r26149r26150
301305
302306
303307//-------------------------------------------------
308//  MACHINE_CONFIG( abc838 )
309//-------------------------------------------------
310
311static MACHINE_CONFIG_DERIVED( abc838, luxor_55_21046 )
312   MCFG_DEVICE_MODIFY(SAB1793_TAG":0")
313   MCFG_DEVICE_SLOT_INTERFACE(abc_floppies, "8dsdd", false)
314   MCFG_DEVICE_MODIFY(SAB1793_TAG":1")
315   MCFG_DEVICE_SLOT_INTERFACE(abc_floppies, "8dsdd", false)
316MACHINE_CONFIG_END
317
318
319//-------------------------------------------------
304320//  machine_config_additions - device-specific
305321//  machine configurations
306322//-------------------------------------------------
r26149r26150
310326   return MACHINE_CONFIG_NAME( luxor_55_21046 );
311327}
312328
329machine_config_constructor abc838_device::device_mconfig_additions() const
330{
331   return MACHINE_CONFIG_NAME( abc838 );
332}
313333
334
314335//-------------------------------------------------
315336//  INPUT_PORTS( luxor_55_21046 )
316337//-------------------------------------------------
r26149r26150
340361   PORT_DIPNAME( 0x02, 0x02, "Drive 1 Sides" ) PORT_DIPLOCATION("SW1:2") PORT_CONDITION("SW3", 0x7f, EQUALS, 0x2c)
341362   PORT_DIPSETTING(    0x00, DEF_STR( Single ) )
342363   PORT_DIPSETTING(    0x02, "Double" )
343   PORT_DIPNAME( 0x04, 0x00, "Drive 0 Tracks" ) PORT_DIPLOCATION("SW1:3") PORT_CONDITION("SW3", 0x7f, EQUALS, 0x2c)
344   PORT_DIPSETTING(    0x00, "80" )
345   PORT_DIPSETTING(    0x04, "40" )
346   PORT_DIPNAME( 0x08, 0x00, "Drive 1 Tracks" ) PORT_DIPLOCATION("SW1:4") PORT_CONDITION("SW3", 0x7f, EQUALS, 0x2c)
347   PORT_DIPSETTING(    0x00, "80" )
348   PORT_DIPSETTING(    0x08, "40" )
364   PORT_DIPNAME( 0x04, 0x04, "Drive 0 Tracks" ) PORT_DIPLOCATION("SW1:3") PORT_CONDITION("SW3", 0x7f, EQUALS, 0x2c)
365   PORT_DIPSETTING(    0x00, "40" )
366   PORT_DIPSETTING(    0x04, "80" )
367   PORT_DIPNAME( 0x08, 0x08, "Drive 1 Tracks" ) PORT_DIPLOCATION("SW1:4") PORT_CONDITION("SW3", 0x7f, EQUALS, 0x2c)
368   PORT_DIPSETTING(    0x00, "40" )
369   PORT_DIPSETTING(    0x08, "80" )
349370
350371   PORT_START("SW2")
351372   PORT_DIPNAME( 0x0f, 0x01, "Drive Type" ) PORT_DIPLOCATION("SW2:1,2,3,4")
r26149r26150
388409
389410
390411//-------------------------------------------------
412//  INPUT_PORTS( abc830 )
413//-------------------------------------------------
414
415INPUT_PORTS_START( abc830 )
416   PORT_START("SW1")
417   PORT_DIPNAME( 0x01, 0x00, "Drive 0 Sides" ) PORT_DIPLOCATION("SW1:1")
418   PORT_DIPSETTING(    0x00, DEF_STR( Single ) )
419   PORT_DIPSETTING(    0x01, "Double" )
420   PORT_DIPNAME( 0x02, 0x00, "Drive 1 Sides" ) PORT_DIPLOCATION("SW1:2")
421   PORT_DIPSETTING(    0x00, DEF_STR( Single ) )
422   PORT_DIPSETTING(    0x02, "Double" )
423   PORT_DIPNAME( 0x04, 0x00, "Drive 0 Density" ) PORT_DIPLOCATION("SW1:3")
424   PORT_DIPSETTING(    0x00, DEF_STR( Single ) )
425   PORT_DIPSETTING(    0x04, "Double" )
426   PORT_DIPNAME( 0x08, 0x00, "Drive 1 Density" ) PORT_DIPLOCATION("SW1:4")
427   PORT_DIPSETTING(    0x00, DEF_STR( Single ) )
428   PORT_DIPSETTING(    0x08, "Double" )
429
430   PORT_START("SW2")
431   PORT_DIPNAME( 0x0f, 0x08, "Drive Type" ) PORT_DIPLOCATION("SW2:1,2,3,4")
432   PORT_DIPSETTING(    0x08, "BASF 6106/08" )
433   PORT_DIPSETTING(    0x09, "MPI 51" )
434
435   PORT_START("SW3")
436   PORT_DIPNAME( 0x7f, 0x2d, "Card Address" ) PORT_DIPLOCATION("SW3:1,2,3,4,5,6,7")
437   PORT_DIPSETTING(    0x2d, "45" )
438   
439   PORT_START("S1") // also S3,S5
440   PORT_DIPNAME( 0x01, 0x01, "Interface Type" )
441   PORT_DIPSETTING(    0x00, "ABC 1600" )
442   PORT_DIPSETTING(    0x01, "ABC 80/800/802/806" )
443
444   PORT_START("S6")
445   PORT_DIPNAME( 0x01, 0x01, "RAM Size" )
446   PORT_DIPSETTING(    0x00, "2 KB" )
447   PORT_DIPSETTING(    0x01, "8 KB" )
448
449   PORT_START("S8")
450   PORT_DIPNAME( 0x01, 0x01, "Drive Type" )
451   PORT_DIPSETTING(    0x00, "8\"" )
452   PORT_DIPSETTING(    0x01, "5.25\"" )
453
454   PORT_START("S9")
455   PORT_DIPNAME( 0x01, 0x01, "RDY Pin" )
456   PORT_DIPSETTING(    0x00, "P2-6 (8\")" )
457   PORT_DIPSETTING(    0x01, "P2-34 (5.25\")" )
458INPUT_PORTS_END
459
460
461//-------------------------------------------------
462//  INPUT_PORTS( abc832 )
463//-------------------------------------------------
464
465INPUT_PORTS_START( abc832 )
466   PORT_START("SW1")
467   PORT_DIPNAME( 0x01, 0x01, "Drive 0 Sides" ) PORT_DIPLOCATION("SW1:1")
468   PORT_DIPSETTING(    0x00, DEF_STR( Single ) )
469   PORT_DIPSETTING(    0x01, "Double" )
470   PORT_DIPNAME( 0x02, 0x02, "Drive 1 Sides" ) PORT_DIPLOCATION("SW1:2")
471   PORT_DIPSETTING(    0x00, DEF_STR( Single ) )
472   PORT_DIPSETTING(    0x02, "Double" )
473   PORT_DIPNAME( 0x04, 0x04, "Drive 0 Tracks" ) PORT_DIPLOCATION("SW1:3")
474   PORT_DIPSETTING(    0x00, "40" )
475   PORT_DIPSETTING(    0x04, "80" )
476   PORT_DIPNAME( 0x08, 0x08, "Drive 1 Tracks" ) PORT_DIPLOCATION("SW1:4")
477   PORT_DIPSETTING(    0x00, "40" )
478   PORT_DIPSETTING(    0x08, "80" )
479
480   PORT_START("SW2")
481   PORT_DIPNAME( 0x0f, 0x04, "Drive Type" ) PORT_DIPLOCATION("SW2:1,2,3,4")
482   PORT_DIPSETTING(    0x03, "Micropolis 1015F" )
483   PORT_DIPSETTING(    0x04, "BASF 6118" )
484   PORT_DIPSETTING(    0x05, "Micropolis 1115F" )
485
486   PORT_START("SW3")
487   PORT_DIPNAME( 0x7f, 0x2c, "Card Address" ) PORT_DIPLOCATION("SW3:1,2,3,4,5,6,7")
488   PORT_DIPSETTING(    0x2c, "44" )
489   
490   PORT_START("S1") // also S3,S5
491   PORT_DIPNAME( 0x01, 0x01, "Interface Type" )
492   PORT_DIPSETTING(    0x00, "ABC 1600" )
493   PORT_DIPSETTING(    0x01, "ABC 80/800/802/806" )
494
495   PORT_START("S6")
496   PORT_DIPNAME( 0x01, 0x01, "RAM Size" )
497   PORT_DIPSETTING(    0x00, "2 KB" )
498   PORT_DIPSETTING(    0x01, "8 KB" )
499
500   PORT_START("S8")
501   PORT_DIPNAME( 0x01, 0x01, "Drive Type" )
502   PORT_DIPSETTING(    0x00, "8\"" )
503   PORT_DIPSETTING(    0x01, "5.25\"" )
504
505   PORT_START("S9")
506   PORT_DIPNAME( 0x01, 0x01, "RDY Pin" )
507   PORT_DIPSETTING(    0x00, "P2-6 (8\")" )
508   PORT_DIPSETTING(    0x01, "P2-34 (5.25\")" )
509INPUT_PORTS_END
510
511
512//-------------------------------------------------
513//  INPUT_PORTS( abc834 )
514//-------------------------------------------------
515
516INPUT_PORTS_START( abc834 )
517   PORT_START("SW1")
518   PORT_DIPNAME( 0x01, 0x01, "Drive 0 Sides" ) PORT_DIPLOCATION("SW1:1")
519   PORT_DIPSETTING(    0x00, DEF_STR( Single ) )
520   PORT_DIPSETTING(    0x01, "Double" )
521   PORT_DIPNAME( 0x02, 0x02, "Drive 1 Sides" ) PORT_DIPLOCATION("SW1:2")
522   PORT_DIPSETTING(    0x00, DEF_STR( Single ) )
523   PORT_DIPSETTING(    0x02, "Double" )
524   PORT_DIPNAME( 0x04, 0x04, "Drive 0 Tracks" ) PORT_DIPLOCATION("SW1:3")
525   PORT_DIPSETTING(    0x00, "40" )
526   PORT_DIPSETTING(    0x04, "80" )
527   PORT_DIPNAME( 0x08, 0x08, "Drive 1 Tracks" ) PORT_DIPLOCATION("SW1:4")
528   PORT_DIPSETTING(    0x00, "40" )
529   PORT_DIPSETTING(    0x08, "80" )
530
531   PORT_START("SW2")
532   PORT_DIPNAME( 0x0f, 0x01, "Drive Type" ) PORT_DIPLOCATION("SW2:1,2,3,4")
533   PORT_DIPSETTING(    0x01, "TEAC FD55F" )
534
535   PORT_START("SW3")
536   PORT_DIPNAME( 0x7f, 0x2c, "Card Address" ) PORT_DIPLOCATION("SW3:1,2,3,4,5,6,7")
537   PORT_DIPSETTING(    0x2c, "44" )
538
539   PORT_START("S1") // also S3,S5
540   PORT_DIPNAME( 0x01, 0x01, "Interface Type" )
541   PORT_DIPSETTING(    0x00, "ABC 1600" )
542   PORT_DIPSETTING(    0x01, "ABC 80/800/802/806" )
543
544   PORT_START("S6")
545   PORT_DIPNAME( 0x01, 0x01, "RAM Size" )
546   PORT_DIPSETTING(    0x00, "2 KB" )
547   PORT_DIPSETTING(    0x01, "8 KB" )
548
549   PORT_START("S8")
550   PORT_DIPNAME( 0x01, 0x01, "Drive Type" )
551   PORT_DIPSETTING(    0x00, "8\"" )
552   PORT_DIPSETTING(    0x01, "5.25\"" )
553
554   PORT_START("S9")
555   PORT_DIPNAME( 0x01, 0x01, "RDY Pin" )
556   PORT_DIPSETTING(    0x00, "P2-6 (8\")" )
557   PORT_DIPSETTING(    0x01, "P2-34 (5.25\")" )
558INPUT_PORTS_END
559
560
561//-------------------------------------------------
562//  INPUT_PORTS( abc838 )
563//-------------------------------------------------
564
565INPUT_PORTS_START( abc838 )
566   PORT_START("SW1")
567   PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
568   PORT_DIPSETTING(    0x00, DEF_STR( Unused ) )
569   
570   PORT_START("SW2")
571   PORT_DIPNAME( 0x0f, 0x0e, "Drive Type" ) PORT_DIPLOCATION("SW2:1,2,3,4")
572   PORT_DIPSETTING(    0x0e, "BASF 6105" )
573   PORT_DIPSETTING(    0x0f, "BASF 6106" )
574
575   PORT_START("SW3")
576   PORT_DIPNAME( 0x7f, 0x2e, "Card Address" ) PORT_DIPLOCATION("SW3:1,2,3,4,5,6,7")
577   PORT_DIPSETTING(    0x2e, "46" )
578
579   PORT_START("S1") // also S3,S5
580   PORT_DIPNAME( 0x01, 0x01, "Interface Type" )
581   PORT_DIPSETTING(    0x00, "ABC 1600" )
582   PORT_DIPSETTING(    0x01, "ABC 80/800/802/806" )
583
584   PORT_START("S6")
585   PORT_DIPNAME( 0x01, 0x01, "RAM Size" )
586   PORT_DIPSETTING(    0x00, "2 KB" )
587   PORT_DIPSETTING(    0x01, "8 KB" )
588
589   PORT_START("S8")
590   PORT_DIPNAME( 0x01, 0x00, "Drive Type" )
591   PORT_DIPSETTING(    0x00, "8\"" )
592   PORT_DIPSETTING(    0x01, "5.25\"" )
593
594   PORT_START("S9")
595   PORT_DIPNAME( 0x01, 0x00, "RDY Pin" )
596   PORT_DIPSETTING(    0x00, "P2-6 (8\")" )
597   PORT_DIPSETTING(    0x01, "P2-34 (5.25\")" )
598INPUT_PORTS_END
599
600
601//-------------------------------------------------
391602//  input_ports - device-specific input ports
392603//-------------------------------------------------
393604
r26149r26150
396607   return INPUT_PORTS_NAME( luxor_55_21046 );
397608}
398609
610ioport_constructor abc830_device::device_input_ports() const
611{
612   return INPUT_PORTS_NAME( abc830 );
613}
399614
615ioport_constructor abc832_device::device_input_ports() const
616{
617   return INPUT_PORTS_NAME( abc832 );
618}
400619
620ioport_constructor abc834_device::device_input_ports() const
621{
622   return INPUT_PORTS_NAME( abc834 );
623}
624
625ioport_constructor abc838_device::device_input_ports() const
626{
627   return INPUT_PORTS_NAME( abc838 );
628}
629
630
631
401632//**************************************************************************
402633//  LIVE DEVICE
403634//**************************************************************************
r26149r26150
426657{
427658}
428659
660luxor_55_21046_device::luxor_55_21046_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
661   : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
662      device_abcbus_card_interface(mconfig, *this),
663      m_maincpu(*this, Z80_TAG),
664      m_dma(*this, Z80DMA_TAG),
665      m_fdc(*this, SAB1793_TAG),
666      m_floppy0(*this, SAB1793_TAG":0"),
667      m_floppy1(*this, SAB1793_TAG":1"),
668      m_floppy(NULL),
669      m_sw1(*this, "SW1"),
670      m_sw2(*this, "SW2"),
671      m_sw3(*this, "SW3"),
672      m_cs(false),
673      m_fdc_irq(0),
674      m_dma_irq(0),
675      m_busy(0),
676      m_force_busy(0)
677{
678}
429679
680abc830_device::abc830_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
681   : luxor_55_21046_device(mconfig, ABC830, "ABC 830", tag, owner, clock, "lux21046", __FILE__)
682{
683}
684
685abc832_device::abc832_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
686   : luxor_55_21046_device(mconfig, ABC832, "ABC 832", tag, owner, clock, "lux21046", __FILE__)
687{
688}
689
690abc834_device::abc834_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
691   : luxor_55_21046_device(mconfig, ABC834, "ABC 834", tag, owner, clock, "lux21046", __FILE__)
692{
693}
694
695abc838_device::abc838_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
696   : luxor_55_21046_device(mconfig, ABC838, "ABC 838", tag, owner, clock, "lux21046", __FILE__)
697{
698}
699
700
430701//-------------------------------------------------
431702//  device_start - device-specific startup
432703//-------------------------------------------------
r26149r26150
7941065//**************************************************************************
7951066
7961067//-------------------------------------------------
797//  DEVICE_INPUT_DEFAULTS( abc830_fast_intf )
798//-------------------------------------------------
799
800DEVICE_INPUT_DEFAULTS_START( abc830_fast )
801   DEVICE_INPUT_DEFAULTS("SW1", 0x0f, 0x03)
802   DEVICE_INPUT_DEFAULTS("SW2", 0x0f, DRIVE_BASF_6106_08)
803   DEVICE_INPUT_DEFAULTS("SW3", 0x7f, ADDRESS_ABC830)
804DEVICE_INPUT_DEFAULTS_END
805
806
807//-------------------------------------------------
808//  DEVICE_INPUT_DEFAULTS( abc832_fast )
809//-------------------------------------------------
810
811DEVICE_INPUT_DEFAULTS_START( abc832_fast )
812   DEVICE_INPUT_DEFAULTS("SW1", 0x0f, 0x03)
813   DEVICE_INPUT_DEFAULTS("SW2", 0x0f, DRIVE_TEAC_FD55F)
814   DEVICE_INPUT_DEFAULTS("SW3", 0x7f, ADDRESS_ABC832)
815DEVICE_INPUT_DEFAULTS_END
816
817
818//-------------------------------------------------
819//  DEVICE_INPUT_DEFAULTS( abc834_fast )
820//-------------------------------------------------
821
822DEVICE_INPUT_DEFAULTS_START( abc834_fast )
823   DEVICE_INPUT_DEFAULTS("SW1", 0x0f, 0x03)
824   DEVICE_INPUT_DEFAULTS("SW2", 0x0f, DRIVE_TEAC_FD55F)
825   DEVICE_INPUT_DEFAULTS("SW3", 0x7f, ADDRESS_ABC832)
826DEVICE_INPUT_DEFAULTS_END
827
828
829//-------------------------------------------------
830//  DEVICE_INPUT_DEFAULTS( abc838_fast )
831//-------------------------------------------------
832
833DEVICE_INPUT_DEFAULTS_START( abc838_fast )
834   DEVICE_INPUT_DEFAULTS("SW1", 0x0f, 0x03)
835   DEVICE_INPUT_DEFAULTS("SW2", 0x0f, DRIVE_BASF_6105)
836   DEVICE_INPUT_DEFAULTS("SW3", 0x7f, ADDRESS_ABC838)
837DEVICE_INPUT_DEFAULTS_END
838
839
840//-------------------------------------------------
8411068//  DEVICE_INPUT_DEFAULTS( abc850_fast )
8421069//-------------------------------------------------
8431070
8441071DEVICE_INPUT_DEFAULTS_START( abc850_fast )
845   DEVICE_INPUT_DEFAULTS("SW1", 0x0f, 0x03)
1072   DEVICE_INPUT_DEFAULTS("SW1", 0x0f, 0x0f)
8461073   DEVICE_INPUT_DEFAULTS("SW2", 0x0f, DRIVE_BASF_6138)
847   DEVICE_INPUT_DEFAULTS("SW3", 0x7f, ADDRESS_ABC830)
1074   DEVICE_INPUT_DEFAULTS("SW3", 0x7f, ADDRESS_ABC832)
8481075DEVICE_INPUT_DEFAULTS_END
trunk/src/emu/bus/abcbus/lux21056.c
r26149r26150
2828    Start the abc800 emulator with the ABC 850 attached on the ABC bus,
2929    with the new CHD and a UFD-DOS floppy mounted:
3030
31    $ mess abc800m -bus hdd -bus:hdd:io2 xebec,bios=ro202 -flop1 ufd631 -hard ro202.chd
32    $ mess abc800m -bus hdd -bus:hdd:io2 xebec,bios=basf6186 -flop1 ufd631 -hard basf6186.chd
31    $ mess abc800m -bus abc850 -flop1 ufd631 -hard ro202.chd
32    $ mess abc800m -bus abc850 -bus:abc850:io2 xebec,bios=basf6186 -flop1 ufd631 -hard basf6186.chd
3333   
3434   or with the ABC 852 attached:
3535
36    $ mess abc800m -bus hdd -bus:hdd:io2 xebec,bios=basf6185 -flop1 ufd631 -hard basf6185.chd
37    $ mess abc800m -bus hdd -bus:hdd:io2 xebec,bios=nec5126 -flop1 ufd631 -hard nec5126.chd
36    $ mess abc800m -bus abc852 -flop1 ufd631 -hard basf6185.chd
37    $ mess abc800m -bus abc852 -bus:abc852:io2 xebec,bios=nec5126 -flop1 ufd631 -hard nec5126.chd
3838   
3939    or with the ABC 856 attached:
4040
41    $ mess abc800m -bus hdd -bus:hdd:io2 xebec,bios=micr1325 -flop1 ufd631 -hard micr1325.chd
41    $ mess abc800m -bus abc856 -flop1 ufd631 -hard micr1325.chd
4242
4343    Configure the floppy controller for use with an ABC 850:
4444
r26149r26150
6868
6969    Or skip all of the above and use the preformatted images in the software list:
7070
71    $ mess abc800m -bus hdd -bus:hdd:io2 xebec,bios=ro202 -flop1 ufd631 -hard abc850
72    $ mess abc800m -bus hdd -bus:hdd:io2 xebec,bios=basf6185 -flop1 ufd631 -hard abc852
73    $ mess abc800m -bus hdd -bus:hdd:io2 xebec,bios=micr1325 -flop1 ufd631 -hard abc856
71    $ mess abc800m -bus abc850 -flop1 ufd631 -hard abc850
72    $ mess abc800m -bus abc852 -flop1 ufd631 -hard abc852
73    $ mess abc800m -bus abc856 -flop1 ufd631 -hard abc856
7474
7575*/
7676
trunk/src/emu/bus/abcbus/lux21046.h
r26149r26150
5555{
5656public:
5757   // construction/destruction
58   luxor_55_21046_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
5859   luxor_55_21046_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
5960
6061   // optional information overrides
r26149r26150
117118};
118119
119120
121// ======================> abc830_device
122
123class abc830_device :  public luxor_55_21046_device
124{
125public:
126   // construction/destruction
127   abc830_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
128
129   // optional information overrides
130   virtual ioport_constructor device_input_ports() const;
131};
132
133
134// ======================> abc832_device
135
136class abc832_device :  public luxor_55_21046_device
137{
138public:
139   // construction/destruction
140   abc832_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
141
142   // optional information overrides
143   virtual ioport_constructor device_input_ports() const;
144};
145
146
147// ======================> abc834_device
148
149class abc834_device :  public luxor_55_21046_device
150{
151public:
152   // construction/destruction
153   abc834_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
154
155   // optional information overrides
156   virtual ioport_constructor device_input_ports() const;
157};
158
159
160// ======================> abc838_device
161
162class abc838_device :  public luxor_55_21046_device
163{
164public:
165   // construction/destruction
166   abc838_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
167
168   // optional information overrides
169   virtual machine_config_constructor device_mconfig_additions() const;
170   virtual ioport_constructor device_input_ports() const;
171};
172
173
120174// device type definition
121175extern const device_type LUXOR_55_21046;
176extern const device_type ABC830;
177extern const device_type ABC832;
178extern const device_type ABC834;
179extern const device_type ABC838;
122180
123181
124182// default input ports
125extern const input_device_default DEVICE_INPUT_DEFAULTS_NAME( abc830_fast )[];
126extern const input_device_default DEVICE_INPUT_DEFAULTS_NAME( abc832_fast )[];
127extern const input_device_default DEVICE_INPUT_DEFAULTS_NAME( abc834_fast )[];
128extern const input_device_default DEVICE_INPUT_DEFAULTS_NAME( abc838_fast )[];
129183extern const input_device_default DEVICE_INPUT_DEFAULTS_NAME( abc850_fast )[];
130184
131185

Previous 199869 Revisions Next


© 1997-2024 The MAME Team