Previous 199869 Revisions Next

r24561 Monday 29th July, 2013 at 21:20:34 UTC by Curt Coder
(MESS) Cleanup. (nw)
[src/mess/machine]ieee488.c ieee488.h

trunk/src/mess/machine/ieee488.c
r24560r24561
9696
9797
9898//**************************************************************************
99//  INLINE HELPERS
99//  LIVE DEVICE
100100//**************************************************************************
101101
102102//-------------------------------------------------
103//  ieee488_device - constructor
104//-------------------------------------------------
105
106ieee488_device::ieee488_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
107   : device_t(mconfig, IEEE488, "IEEE488 bus", tag, owner, clock, "ieee488", __FILE__),
108      m_write_eoi(*this),
109      m_write_dav(*this),
110      m_write_nrfd(*this),
111      m_write_ndac(*this),
112      m_write_ifc(*this),
113      m_write_srq(*this),
114      m_write_atn(*this),
115      m_write_ren(*this),
116      m_dio(0xff)
117{
118   for (int i = 0; i < SIGNAL_COUNT; i++)
119   {
120      m_line[i] = 1;
121   }
122}
123
124
125//-------------------------------------------------
126//  device_start - device-specific startup
127//-------------------------------------------------
128
129void ieee488_device::device_start()
130{
131   // resolve callbacks
132   m_write_eoi.resolve_safe();
133   m_write_dav.resolve_safe();
134   m_write_nrfd.resolve_safe();
135   m_write_ndac.resolve_safe();
136   m_write_ifc.resolve_safe();
137   m_write_srq.resolve_safe();
138   m_write_atn.resolve_safe();
139   m_write_ren.resolve_safe();
140}
141
142
143//-------------------------------------------------
144//  device_stop - device-specific stop
145//-------------------------------------------------
146
147void ieee488_device::device_stop()
148{
149   m_device_list.reset();
150}
151
152
153//-------------------------------------------------
154//  add_device -
155//-------------------------------------------------
156
157void ieee488_device::add_device(device_t *target, int address)
158{
159   daisy_entry *entry = auto_alloc(machine(), daisy_entry(target));
160
161   entry->m_interface->m_bus = this;
162   entry->m_interface->m_address = address;
163
164   m_device_list.append(*entry);
165}
166
167
168//-------------------------------------------------
169//  daisy_entry - constructor
170//-------------------------------------------------
171
172ieee488_device::daisy_entry::daisy_entry(device_t *device)
173   : m_next(NULL),
174      m_device(device),
175      m_interface(NULL),
176      m_dio(0xff)
177{
178   for (int i = 0; i < SIGNAL_COUNT; i++)
179   {
180      m_line[i] = 1;
181   }
182
183   device->interface(m_interface);
184}
185
186
187//-------------------------------------------------
103188//  set_signal -
104189//-------------------------------------------------
105190
106inline void ieee488_device::set_signal(device_t *device, int signal, int state)
191void ieee488_device::set_signal(device_t *device, int signal, int state)
107192{
108193   bool changed = false;
109194
r24560r24561
203288//  get_signal -
204289//-------------------------------------------------
205290
206inline int ieee488_device::get_signal(int signal)
291int ieee488_device::get_signal(int signal)
207292{
208293   int state = m_line[signal];
209294
r24560r24561
231316//  set_data -
232317//-------------------------------------------------
233318
234inline void ieee488_device::set_data(device_t *device, UINT8 data)
319void ieee488_device::set_data(device_t *device, UINT8 data)
235320{
236321   if (device == this)
237322   {
r24560r24561
264349//  get_data -
265350//-------------------------------------------------
266351
267inline UINT8 ieee488_device::get_data()
352UINT8 ieee488_device::get_data()
268353{
269354   UINT8 data = m_dio;
270355
r24560r24561
279364
280365   return data;
281366}
282
283
284
285//**************************************************************************
286//  LIVE DEVICE
287//**************************************************************************
288
289//-------------------------------------------------
290//  ieee488_device - constructor
291//-------------------------------------------------
292
293ieee488_device::ieee488_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
294   : device_t(mconfig, IEEE488, "IEEE488 bus", tag, owner, clock, "ieee488", __FILE__),
295      m_write_eoi(*this),
296      m_write_dav(*this),
297      m_write_nrfd(*this),
298      m_write_ndac(*this),
299      m_write_ifc(*this),
300      m_write_srq(*this),
301      m_write_atn(*this),
302      m_write_ren(*this),
303      m_dio(0xff)
304{
305   for (int i = 0; i < SIGNAL_COUNT; i++)
306   {
307      m_line[i] = 1;
308   }
309}
310
311
312//-------------------------------------------------
313//  device_start - device-specific startup
314//-------------------------------------------------
315
316void ieee488_device::device_start()
317{
318   // resolve callbacks
319   m_write_eoi.resolve_safe();
320   m_write_dav.resolve_safe();
321   m_write_nrfd.resolve_safe();
322   m_write_ndac.resolve_safe();
323   m_write_ifc.resolve_safe();
324   m_write_srq.resolve_safe();
325   m_write_atn.resolve_safe();
326   m_write_ren.resolve_safe();
327}
328
329
330//-------------------------------------------------
331//  device_stop - device-specific stop
332//-------------------------------------------------
333
334void ieee488_device::device_stop()
335{
336   m_device_list.reset();
337}
338
339
340//-------------------------------------------------
341//  add_device -
342//-------------------------------------------------
343
344void ieee488_device::add_device(device_t *target, int address)
345{
346   daisy_entry *entry = auto_alloc(machine(), daisy_entry(target));
347
348   entry->m_interface->m_bus = this;
349   entry->m_interface->m_address = address;
350
351   m_device_list.append(*entry);
352}
353
354
355//-------------------------------------------------
356//  daisy_entry - constructor
357//-------------------------------------------------
358
359ieee488_device::daisy_entry::daisy_entry(device_t *device)
360   : m_next(NULL),
361      m_device(device),
362      m_interface(NULL),
363      m_dio(0xff)
364{
365   for (int i = 0; i < SIGNAL_COUNT; i++)
366   {
367      m_line[i] = 1;
368   }
369
370   device->interface(m_interface);
371}
372
373
374//-------------------------------------------------
375//  dio_r -
376//-------------------------------------------------
377
378UINT8 ieee488_device::dio_r()
379{
380   return get_data();
381}
382
383
384//-------------------------------------------------
385//  dio_r -
386//-------------------------------------------------
387
388READ8_MEMBER( ieee488_device::dio_r )
389{
390   return get_data();
391}
392
393
394//-------------------------------------------------
395//  eoi_r -
396//-------------------------------------------------
397
398READ_LINE_MEMBER( ieee488_device::eoi_r )
399{
400   return get_signal(EOI);
401}
402
403
404//-------------------------------------------------
405//  dav_r -
406//-------------------------------------------------
407
408READ_LINE_MEMBER( ieee488_device::dav_r )
409{
410   return get_signal(DAV);
411}
412
413
414//-------------------------------------------------
415//  nrfd_r -
416//-------------------------------------------------
417
418READ_LINE_MEMBER( ieee488_device::nrfd_r )
419{
420   return get_signal(NRFD);
421}
422
423
424//-------------------------------------------------
425//  ndac_r -
426//-------------------------------------------------
427
428READ_LINE_MEMBER( ieee488_device::ndac_r )
429{
430   return get_signal(NDAC);
431}
432
433
434//-------------------------------------------------
435//  ifc_r -
436//-------------------------------------------------
437
438READ_LINE_MEMBER( ieee488_device::ifc_r )
439{
440   return get_signal(IFC);
441}
442
443
444//-------------------------------------------------
445//  srq_r -
446//-------------------------------------------------
447
448READ_LINE_MEMBER( ieee488_device::srq_r )
449{
450   return get_signal(SRQ);
451}
452
453
454//-------------------------------------------------
455//  atn_r -
456//-------------------------------------------------
457
458READ_LINE_MEMBER( ieee488_device::atn_r )
459{
460   return get_signal(ATN);
461}
462
463
464//-------------------------------------------------
465//  ren_r -
466//-------------------------------------------------
467
468READ_LINE_MEMBER( ieee488_device::ren_r )
469{
470   return get_signal(REN);
471}
472
473
474//-------------------------------------------------
475//  dio_w -
476//-------------------------------------------------
477
478void ieee488_device::dio_w(UINT8 data)
479{
480   return set_data(this, data);
481}
482
483
484//-------------------------------------------------
485//  dio_w -
486//-------------------------------------------------
487
488WRITE8_MEMBER( ieee488_device::dio_w )
489{
490   return set_data(this, data);
491}
492
493
494//-------------------------------------------------
495//  eoi_w -
496//-------------------------------------------------
497
498WRITE_LINE_MEMBER( ieee488_device::eoi_w )
499{
500   set_signal(this, EOI, state);
501}
502
503
504//-------------------------------------------------
505//  dav_w -
506//-------------------------------------------------
507
508WRITE_LINE_MEMBER( ieee488_device::dav_w )
509{
510   set_signal(this, DAV, state);
511}
512
513
514//-------------------------------------------------
515//  nrfd_w -
516//-------------------------------------------------
517
518WRITE_LINE_MEMBER( ieee488_device::nrfd_w )
519{
520   set_signal(this, NRFD, state);
521}
522
523
524//-------------------------------------------------
525//  ndac_w -
526//-------------------------------------------------
527
528WRITE_LINE_MEMBER( ieee488_device::ndac_w )
529{
530   set_signal(this, NDAC, state);
531}
532
533
534//-------------------------------------------------
535//  ifc_w -
536//-------------------------------------------------
537
538WRITE_LINE_MEMBER( ieee488_device::ifc_w )
539{
540   set_signal(this, IFC, state);
541}
542
543
544//-------------------------------------------------
545//  srq_w -
546//-------------------------------------------------
547
548WRITE_LINE_MEMBER( ieee488_device::srq_w )
549{
550   set_signal(this, SRQ, state);
551}
552
553
554//-------------------------------------------------
555//  atn_w -
556//-------------------------------------------------
557
558WRITE_LINE_MEMBER( ieee488_device::atn_w )
559{
560   set_signal(this, ATN, state);
561}
562
563
564//-------------------------------------------------
565//  ren_w -
566//-------------------------------------------------
567
568WRITE_LINE_MEMBER( ieee488_device::ren_w )
569{
570   set_signal(this, REN, state);
571}
572
573
574//-------------------------------------------------
575//  dio_w -
576//-------------------------------------------------
577
578void ieee488_device::dio_w(device_t *device, UINT8 data)
579{
580   return set_data(device, data);
581}
582
583
584//-------------------------------------------------
585//  eoi_w -
586//-------------------------------------------------
587
588void ieee488_device::eoi_w(device_t *device, int state)
589{
590   set_signal(device, EOI, state);
591}
592
593
594//-------------------------------------------------
595//  dav_w -
596//-------------------------------------------------
597
598void ieee488_device::dav_w(device_t *device, int state)
599{
600   set_signal(device, DAV, state);
601}
602
603
604//-------------------------------------------------
605//  nrfd_w -
606//-------------------------------------------------
607
608void ieee488_device::nrfd_w(device_t *device, int state)
609{
610   set_signal(device, NRFD, state);
611}
612
613
614//-------------------------------------------------
615//  ndac_w -
616//-------------------------------------------------
617
618void ieee488_device::ndac_w(device_t *device, int state)
619{
620   set_signal(device, NDAC, state);
621}
622
623
624//-------------------------------------------------
625//  ifc_w -
626//-------------------------------------------------
627
628void ieee488_device::ifc_w(device_t *device, int state)
629{
630   set_signal(device, IFC, state);
631}
632
633
634//-------------------------------------------------
635//  srq_w -
636//-------------------------------------------------
637
638void ieee488_device::srq_w(device_t *device, int state)
639{
640   set_signal(device, SRQ, state);
641}
642
643
644//-------------------------------------------------
645//  atn_w -
646//-------------------------------------------------
647
648void ieee488_device::atn_w(device_t *device, int state)
649{
650   set_signal(device, ATN, state);
651}
652
653
654//-------------------------------------------------
655//  ren_w -
656//-------------------------------------------------
657
658void ieee488_device::ren_w(device_t *device, int state)
659{
660   set_signal(device, REN, state);
661}
trunk/src/mess/machine/ieee488.h
r24560r24561
9191   void add_device(device_t *target, int address);
9292
9393   // reads for both host and peripherals
94   UINT8 dio_r();
95   DECLARE_READ8_MEMBER( dio_r );
96   DECLARE_READ_LINE_MEMBER( eoi_r );
97   DECLARE_READ_LINE_MEMBER( dav_r );
98   DECLARE_READ_LINE_MEMBER( nrfd_r );
99   DECLARE_READ_LINE_MEMBER( ndac_r );
100   DECLARE_READ_LINE_MEMBER( ifc_r );
101   DECLARE_READ_LINE_MEMBER( srq_r );
102   DECLARE_READ_LINE_MEMBER( atn_r );
103   DECLARE_READ_LINE_MEMBER( ren_r );
94   UINT8 dio_r() { return get_data(); }
95   DECLARE_READ8_MEMBER( dio_r ) { return get_data(); }
96   DECLARE_READ_LINE_MEMBER( eoi_r ) { return get_signal(EOI); }
97   DECLARE_READ_LINE_MEMBER( dav_r ) { return get_signal(DAV); }
98   DECLARE_READ_LINE_MEMBER( nrfd_r ) { return get_signal(NRFD); }
99   DECLARE_READ_LINE_MEMBER( ndac_r ) { return get_signal(NDAC); }
100   DECLARE_READ_LINE_MEMBER( ifc_r ) { return get_signal(IFC); }
101   DECLARE_READ_LINE_MEMBER( srq_r ) { return get_signal(SRQ); }
102   DECLARE_READ_LINE_MEMBER( atn_r ) { return get_signal(ATN); }
103   DECLARE_READ_LINE_MEMBER( ren_r ) { return get_signal(REN); }
104104
105105   // writes for host (driver_device)
106   void dio_w(UINT8 data);
107   DECLARE_WRITE8_MEMBER( dio_w );
108   DECLARE_WRITE_LINE_MEMBER( eoi_w );
109   DECLARE_WRITE_LINE_MEMBER( dav_w );
110   DECLARE_WRITE_LINE_MEMBER( nrfd_w );
111   DECLARE_WRITE_LINE_MEMBER( ndac_w );
112   DECLARE_WRITE_LINE_MEMBER( ifc_w );
113   DECLARE_WRITE_LINE_MEMBER( srq_w );
114   DECLARE_WRITE_LINE_MEMBER( atn_w );
115   DECLARE_WRITE_LINE_MEMBER( ren_w );
106   void dio_w(UINT8 data) { return set_data(this, data); }
107   DECLARE_WRITE8_MEMBER( dio_w ) { set_data(this, data); }
108   DECLARE_WRITE_LINE_MEMBER( eoi_w ) { set_signal(this, EOI, state); }
109   DECLARE_WRITE_LINE_MEMBER( dav_w ) { set_signal(this, DAV, state); }
110   DECLARE_WRITE_LINE_MEMBER( nrfd_w ) { set_signal(this, NRFD, state); }
111   DECLARE_WRITE_LINE_MEMBER( ndac_w ) { set_signal(this, NDAC, state); }
112   DECLARE_WRITE_LINE_MEMBER( ifc_w ) { set_signal(this, IFC, state); }
113   DECLARE_WRITE_LINE_MEMBER( srq_w ) { set_signal(this, SRQ, state); }
114   DECLARE_WRITE_LINE_MEMBER( atn_w ) { set_signal(this, ATN, state); }
115   DECLARE_WRITE_LINE_MEMBER( ren_w ) { set_signal(this, REN, state); }
116116
117117   // writes for peripherals (device_t)
118   void dio_w(device_t *device, UINT8 data);
119   void eoi_w(device_t *device, int state);
120   void dav_w(device_t *device, int state);
121   void nrfd_w(device_t *device, int state);
122   void ndac_w(device_t *device, int state);
123   void ifc_w(device_t *device, int state);
124   void srq_w(device_t *device, int state);
125   void atn_w(device_t *device, int state);
126   void ren_w(device_t *device, int state);
118   void dio_w(device_t *device, UINT8 data) { set_data(device, data); }
119   void eoi_w(device_t *device, int state) { set_signal(device, EOI, state); }
120   void dav_w(device_t *device, int state) { set_signal(device, DAV, state); }
121   void nrfd_w(device_t *device, int state) { set_signal(device, NRFD, state); }
122   void ndac_w(device_t *device, int state) { set_signal(device, NDAC, state); }
123   void ifc_w(device_t *device, int state) { set_signal(device, IFC, state); }
124   void srq_w(device_t *device, int state) { set_signal(device, SRQ, state); }
125   void atn_w(device_t *device, int state) { set_signal(device, ATN, state); }
126   void ren_w(device_t *device, int state) { set_signal(device, REN, state); }
127127
128128protected:
129129   enum
r24560r24561
169169   devcb2_write_line   m_write_atn;
170170   devcb2_write_line   m_write_ren;
171171
172   inline void set_signal(device_t *device, int signal, int state);
173   inline int get_signal(int signal);
174   inline void set_data(device_t *device, UINT8 data);
175   inline UINT8 get_data();
172   void set_signal(device_t *device, int signal, int state);
173   int get_signal(int signal);
174   void set_data(device_t *device, UINT8 data);
175   UINT8 get_data();
176176
177177   int m_line[SIGNAL_COUNT];
178178   UINT8 m_dio;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team