Previous 199869 Revisions Next

r19389 Friday 7th December, 2012 at 16:02:42 UTC by Curt Coder
(MESS) s100: Cleanup. (nw)
[src/mess/machine]s100.c s100.h s100_dj2db.c s100_dj2db.h s100_djdma.c s100_mm65k16s.c s100_mm65k16s.h s100_wunderbus.c s100_wunderbus.h

trunk/src/mess/machine/s100_wunderbus.c
r19388r19389
5151
5252WRITE_LINE_MEMBER( s100_wunderbus_device::pic_int_w )
5353{
54   m_s100->int_w(state);
54   m_bus->int_w(state);
5555}
5656
5757static struct pic8259_interface pic_intf =
r19388r19389
7070{
7171    s100_wunderbus_device *wunderbus = downcast<s100_wunderbus_device *>(device->owner());
7272
73    wunderbus->m_s100->terminal_transmit_w(data);
73    wunderbus->m_bus->terminal_transmit_w(data);
7474}
7575*/
7676//-------------------------------------------------
r19388r19389
270270   m_ace1(*this, INS8250_1_TAG),
271271   m_ace2(*this, INS8250_2_TAG),
272272   m_ace3(*this, INS8250_3_TAG),
273   m_rtc(*this, UPD1990C_TAG)
273   m_rtc(*this, UPD1990C_TAG),
274   m_7c(*this, "7C"),
275   m_10a(*this, "10A")
274276{
275277}
276278
r19388r19389
281283
282284void s100_wunderbus_device::device_start()
283285{
284   m_s100 = machine().device<s100_device>("s100");
285286}
286287
287288
r19388r19389
293294{
294295}
295296
297
296298//-------------------------------------------------
297299//  s100_vi0_w - vectored interrupt 0
298300//-------------------------------------------------
r19388r19389
329331
330332UINT8 s100_wunderbus_device::s100_sinp_r(address_space &space, offs_t offset)
331333{
332   UINT8 address = (ioport("7C")->read() & 0x3e) << 2;
334   UINT8 address = (m_7c->read() & 0x3e) << 2;
333335   if ((offset & 0xf8) != address) return 0;
334336
335337   UINT8 data = 0;
r19388r19389
374376
375377                */
376378
377            data = BITSWAP8(ioport("10A")->read(),0,1,2,3,4,5,6,7) & 0xfc;
379            data = BITSWAP8(m_10a->read(),0,1,2,3,4,5,6,7) & 0xfc;
378380            break;
379381
380382         case 2: // R.T. Clock IN/RESET CLK. Int.
r19388r19389
415417         break;
416418
417419      case 1:
418         data = m_ace1->ins8250_r(machine().driver_data()->generic_space(), offset & 0x07);
420         data = m_ace1->ins8250_r(space, offset & 0x07);
419421         break;
420422
421423      case 2:
422         data = m_ace2->ins8250_r(machine().driver_data()->generic_space(), offset & 0x07);
424         data = m_ace2->ins8250_r(space, offset & 0x07);
423425         break;
424426
425427      case 3:
426         data = m_ace3->ins8250_r(machine().driver_data()->generic_space(), offset & 0x07);
428         data = m_ace3->ins8250_r(space, offset & 0x07);
427429         break;
428430      }
429431   }
r19388r19389
438440
439441void s100_wunderbus_device::s100_sout_w(address_space &space, offs_t offset, UINT8 data)
440442{
441   UINT8 address = (ioport("7C")->read() & 0x3e) << 2;
443   UINT8 address = (m_7c->read() & 0x3e) << 2;
442444   if ((offset & 0xf8) != address) return;
443445
444446   if ((offset & 0x07) == 7)
r19388r19389
503505                */
504506
505507            m_rtc->data_in_w(BIT(data, 0));
506            m_rtc->clk_w(BIT(data, 0));
507            m_rtc->c0_w(BIT(data, 0));
508            m_rtc->c1_w(BIT(data, 0));
509            m_rtc->c2_w(BIT(data, 0));
510            m_rtc->stb_w(BIT(data, 0));
508            m_rtc->clk_w(BIT(data, 1));
509            m_rtc->c0_w(BIT(data, 2));
510            m_rtc->c1_w(BIT(data, 3));
511            m_rtc->c2_w(BIT(data, 4));
512            m_rtc->stb_w(BIT(data, 5));
511513            break;
512514
513515         case 3: // Par. data OUT
r19388r19389
538540         break;
539541
540542      case 1:
541         m_ace1->ins8250_w(machine().driver_data()->generic_space(), offset & 0x07, data);
543         m_ace1->ins8250_w(space, offset & 0x07, data);
542544         break;
543545
544546      case 2:
545         m_ace2->ins8250_w(machine().driver_data()->generic_space(), offset & 0x07, data);
547         m_ace2->ins8250_w(space, offset & 0x07, data);
546548         break;
547549
548550      case 3:
549         m_ace3->ins8250_w(machine().driver_data()->generic_space(), offset & 0x07, data);
551         m_ace3->ins8250_w(space, offset & 0x07, data);
550552         break;
551553      }
552554   }
trunk/src/mess/machine/s100_wunderbus.h
r19388r19389
4040   // not really public
4141   DECLARE_WRITE_LINE_MEMBER( pic_int_w );
4242   DECLARE_WRITE_LINE_MEMBER( rtc_tp_w );
43   required_device<pic8259_device> m_pic;
44   required_device<ins8250_device> m_ace1;
45   required_device<ins8250_device> m_ace2;
46   required_device<ins8250_device> m_ace3;
47   required_device<upd1990a_device> m_rtc;
4843
4944protected:
5045   // device-level overrides
r19388r19389
6257   virtual void s100_terminal_w(UINT8 data);
6358
6459private:
65   // internal state
60   required_device<pic8259_device> m_pic;
61   required_device<ins8250_device> m_ace1;
62   required_device<ins8250_device> m_ace2;
63   required_device<ins8250_device> m_ace3;
64   required_device<upd1990a_device> m_rtc;
65   required_ioport m_7c;
66   required_ioport m_10a;
67
6668   UINT8 m_group;
6769   int m_rtc_tp;
6870};
trunk/src/mess/machine/s100_dj2db.c
r19388r19389
8484
8585void s100_dj2db_device::fdc_intrq_w(bool state)
8686{
87   if (state) m_s100->rdy_w(CLEAR_LINE);
87   if (state) m_bus->rdy_w(CLEAR_LINE);
8888
89   switch (ioport("J1A")->read())
89   switch (m_j1a->read())
9090   {
91   case 0: m_s100->vi0_w(state); break;
92   case 1: m_s100->vi1_w(state); break;
93   case 2: m_s100->vi2_w(state); break;
94   case 3: m_s100->vi3_w(state); break;
95   case 4: m_s100->vi4_w(state); break;
96   case 5: m_s100->vi5_w(state); break;
97   case 6: m_s100->vi6_w(state); break;
98   case 7: m_s100->vi7_w(state); break;
99   case 8: m_s100->int_w(state); break;
91   case 0: m_bus->vi0_w(state); break;
92   case 1: m_bus->vi1_w(state); break;
93   case 2: m_bus->vi2_w(state); break;
94   case 3: m_bus->vi3_w(state); break;
95   case 4: m_bus->vi4_w(state); break;
96   case 5: m_bus->vi5_w(state); break;
97   case 6: m_bus->vi6_w(state); break;
98   case 7: m_bus->vi7_w(state); break;
99   case 8: m_bus->int_w(state); break;
100100   }
101101}
102102
103103void s100_dj2db_device::fdc_drq_w(bool state)
104104{
105   if (state) m_s100->rdy_w(CLEAR_LINE);
105   if (state) m_bus->rdy_w(CLEAR_LINE);
106106}
107107
108108
r19388r19389
265265   m_floppy1(*this, MB8866_TAG":1"),
266266   m_floppy2(*this, MB8866_TAG":2"),
267267   m_floppy3(*this, MB8866_TAG":3"),
268   m_floppy(NULL),
269   m_j1a(*this, "J1A"),
270   m_ram(*this, "ram"),
268271   m_drive(0),
269272   m_head(1),
270273   m_int_enbl(0),
r19388r19389
281284
282285void s100_dj2db_device::device_start()
283286{
284   m_s100 = machine().device<s100_device>("s100");
285
287   // find memory regions
286288   m_rom = memregion("dj2db")->base();
287   m_ram = auto_alloc_array(machine(), UINT8, 0x400);
288289
290   // allocate memory
291   m_ram.allocate(0x400);
292
289293   // floppy callbacks
290   m_fdc->setup_intrq_cb(fd1791_t::line_cb(FUNC(s100_dj2db_device::fdc_intrq_w), this));
291   m_fdc->setup_drq_cb(fd1791_t::line_cb(FUNC(s100_dj2db_device::fdc_drq_w), this));
294   m_fdc->setup_intrq_cb(wd_fdc_t::line_cb(FUNC(s100_dj2db_device::fdc_intrq_w), this));
295   m_fdc->setup_drq_cb(wd_fdc_t::line_cb(FUNC(s100_dj2db_device::fdc_drq_w), this));
292296
293297   // state saving
294   //save_item(NAME());
298   save_item(NAME(m_drive));
299   save_item(NAME(m_head));
300   save_item(NAME(m_int_enbl));
301   save_item(NAME(m_access_enbl));
302   save_item(NAME(m_board_enbl));
303   save_item(NAME(m_phantom));
295304}
296305
297306
r19388r19389
366375   }
367376   else if ((offset >= 0xfbfc) && (offset < 0xfc00))
368377   {
369      m_s100->rdy_w(ASSERT_LINE);
378      m_bus->rdy_w(ASSERT_LINE);
370379
371380      data = m_fdc->gen_r(offset & 0x03);
372381   }
r19388r19389
464473   }
465474   else if (offset == 0xfbfb) // WAIT ENBL
466475   {
476      fatalerror("Z80 WAIT not supported by MAME core\n");
467477   }
468478   else if ((offset >= 0xfbfc) && (offset < 0xfc00))
469479   {
trunk/src/mess/machine/s100_dj2db.h
r19388r19389
6666   required_device<floppy_connector> m_floppy2;
6767   required_device<floppy_connector> m_floppy3;
6868   floppy_image_device *m_floppy;
69   required_ioport m_j1a;
70   optional_shared_ptr<UINT8> m_ram;
6971
7072   // floppy state
7173   int m_drive;            // selected drive
r19388r19389
7375   int m_int_enbl;            // interrupt enable
7476
7577   // S-100 bus state
76   UINT8 *m_rom;            // ROM
77   UINT8 *m_ram;            // RAM
78   const UINT8 *m_rom;
7879   int m_access_enbl;         // access enable
7980   int m_board_enbl;         // board enable
8081   int m_phantom;            // phantom
trunk/src/mess/machine/s100_djdma.c
r19388r19389
116116
117117void s100_djdma_device::device_start()
118118{
119   m_s100 = machine().device<s100_device>("s100");
120119}
121120
122121
trunk/src/mess/machine/s100_mm65k16s.c
r19388r19389
204204
205205s100_mm65k16s_device::s100_mm65k16s_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
206206   device_t(mconfig, S100_MM65K16S, "MM65K16S", tag, owner, clock),
207   device_s100_card_interface(mconfig, *this)
207   device_s100_card_interface(mconfig, *this),
208   m_ram(*this, "ram")
208209{
209210}
210211
r19388r19389
215216
216217void s100_mm65k16s_device::device_start()
217218{
218   m_s100 = machine().device<s100_device>("s100");
219
220   m_ram = auto_alloc_array_clear(machine(), UINT8, 0x10000);
219   m_ram.allocate(0x10000);
221220}
222221
223222
trunk/src/mess/machine/s100_mm65k16s.h
r19388r19389
4646   virtual void s100_phantom_w(int state);
4747
4848private:
49   // internal state
50   UINT8* m_ram;
49   optional_shared_ptr<UINT8> m_ram;
5150};
5251
5352
trunk/src/mess/machine/s100.c
r19388r19389
165165
166166void s100_device::add_s100_card(device_s100_card_interface *card)
167167{
168   card->m_bus = this;
168169   m_device_list.append(*card);
169170}
170171
trunk/src/mess/machine/s100.h
r19388r19389
290290   virtual void s100_slave_clr_w(int state) { }
291291
292292public:
293   s100_device  *m_s100;
293   s100_device  *m_bus;
294294   device_s100_card_interface *m_next;
295295};
296296

Previous 199869 Revisions Next


© 1997-2024 The MAME Team