Previous 199869 Revisions Next

r20681 Saturday 2nd February, 2013 at 22:24:47 UTC by Curt Coder
(MESS) Used modern accessors for i8259. (nw)
[src/emu/machine]pic8259.c pic8259.h
[src/mess/drivers]apricot.c apricotp.c at.c cbm2.c iq151.c pasogo.c pc1512.c pc88va.c pc9801.c qx10.c trs80m2.c victor9k.c wangpc.c z100.c
[src/mess/includes]victor9k.h
[src/mess/machine]at.c b2m.c compis.c genpc.c irisha.c mbc55x.c pc.c pk8020.c s100_wunderbus.c southbridge.c

trunk/src/emu/machine/pic8259.c
r20680r20681
205205   return 0;
206206}
207207
208UINT8 pic8259_device::inta_r()
209{
210   return pic8259_acknowledge(this);
211}
208212
209
210213READ8_DEVICE_HANDLER( pic8259_r )
211214{
212215   pic8259_t   *pic8259 = get_safe_token(device);
trunk/src/emu/machine/pic8259.h
r20680r20681
4646   DECLARE_WRITE_LINE_MEMBER( ir6_w );
4747   DECLARE_WRITE_LINE_MEMBER( ir7_w );
4848
49   UINT8 inta_r();
50
4951   // access to legacy token
5052   void *token() const { assert(m_token != NULL); return m_token; }
5153protected:
trunk/src/mess/machine/mbc55x.c
r20680r20681
128128
129129IRQ_CALLBACK_MEMBER(mbc55x_state::mbc55x_irq_callback)
130130{
131   return pic8259_acknowledge(m_pic);
131   return m_pic->inta_r();
132132}
133133
134134/* PIT8253 Configuration */
r20680r20681
139139      {
140140         PIT_C0_CLOCK,
141141         DEVCB_NULL,
142         DEVCB_DEVICE_LINE(PIC8259_TAG, pic8259_ir0_w)
142         DEVCB_DEVICE_LINE_MEMBER(PIC8259_TAG, pic8259_device, ir0_w)
143143      },
144144      {
145145         PIT_C1_CLOCK,
146146         DEVCB_NULL,
147         DEVCB_DEVICE_LINE(PIC8259_TAG, pic8259_ir1_w)
147         DEVCB_DEVICE_LINE_MEMBER(PIC8259_TAG, pic8259_device, ir1_w)
148148      },
149149      {
150150         PIT_C2_CLOCK,
r20680r20681
298298   DEVCB_NULL,
299299   DEVCB_NULL,
300300   DEVCB_NULL,
301   DEVCB_DEVICE_LINE(PIC8259_TAG, pic8259_ir3_w),
301   DEVCB_DEVICE_LINE_MEMBER(PIC8259_TAG, pic8259_device, ir3_w),
302302   DEVCB_NULL,
303303   DEVCB_NULL,
304304   DEVCB_NULL
trunk/src/mess/machine/pc.c
r20680r20681
397397      {
398398         XTAL_14_31818MHz/12,                /* heartbeat IRQ */
399399         DEVCB_NULL,
400         DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w)
400         DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w)
401401      }, {
402402         XTAL_14_31818MHz/12,                /* dram refresh */
403403         DEVCB_NULL,
r20680r20681
423423      {
424424         XTAL_14_31818MHz/12,              /* heartbeat IRQ */
425425         DEVCB_NULL,
426         DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w)
426         DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w)
427427      }, {
428428         XTAL_14_31818MHz/12,              /* dram refresh */
429429         DEVCB_NULL,
r20680r20681
444444      {
445445         XTAL_16MHz/12,              /* heartbeat IRQ */
446446         DEVCB_NULL,
447         DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w)
447         DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w)
448448      }, {
449449         XTAL_16MHz/12,              /* serial port */
450450         DEVCB_NULL,
trunk/src/mess/machine/pk8020.c
r20680r20681
967967      {
968968         (XTAL_20MHz / 8) / 164,
969969         DEVCB_NULL,
970         DEVCB_DEVICE_LINE("pic8259", pic8259_ir5_w)
970         DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir5_w)
971971      }
972972   }
973973};
trunk/src/mess/machine/s100_wunderbus.c
r20680r20681
8686{
8787   DEVCB_NULL,
8888   DEVCB_NULL,
89   DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir3_w),
89   DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir3_w),
9090   DEVCB_NULL,
9191   DEVCB_NULL,
9292   DEVCB_NULL
r20680r20681
101101{
102102   DEVCB_NULL,
103103   DEVCB_NULL,
104   DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir4_w),
104   DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir4_w),
105105   DEVCB_NULL,
106106   DEVCB_NULL,
107107   DEVCB_NULL
r20680r20681
116116{
117117   DEVCB_NULL,
118118   DEVCB_NULL,
119   DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir5_w),
119   DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir5_w),
120120   DEVCB_NULL,
121121   DEVCB_NULL,
122122   DEVCB_NULL
r20680r20681
132132   if (state)
133133   {
134134      m_rtc_tp = state;
135      pic8259_ir7_w(m_pic, m_rtc_tp);
135      m_pic->ir7_w(m_rtc_tp);
136136   }
137137}
138138
r20680r20681
301301
302302void s100_wunderbus_device::s100_vi0_w(int state)
303303{
304   pic8259_ir0_w(m_pic, state);
304   m_pic->ir0_w(state);
305305}
306306
307307
r20680r20681
311311
312312void s100_wunderbus_device::s100_vi1_w(int state)
313313{
314   pic8259_ir1_w(m_pic, state);
314   m_pic->ir1_w(state);
315315}
316316
317317
r20680r20681
321321
322322void s100_wunderbus_device::s100_vi2_w(int state)
323323{
324   pic8259_ir2_w(m_pic, state);
324   m_pic->ir2_w(state);
325325}
326326
327327
r20680r20681
400400
401401            // reset clock interrupt
402402            m_rtc_tp = 0;
403            pic8259_ir7_w(m_pic, m_rtc_tp);
403            m_pic->ir7_w(m_rtc_tp);
404404            break;
405405
406406         case 3: // Parallel data IN
r20680r20681
408408
409409         case 4: // 8259 0 register
410410         case 5: // 8259 1 register
411            data = pic8259_r(m_pic, space, offset & 0x01);
411            data = m_pic->read(space, offset & 0x01);
412412            break;
413413
414414         case 6: // not used
r20680r20681
517517
518518         case 4: // 8259 0 register
519519         case 5: // 8259 1 register
520            pic8259_w(m_pic, space, offset & 0x01, data);
520            m_pic->write(space, offset & 0x01, data);
521521            break;
522522
523523         case 6: // Par. port cntrl.
trunk/src/mess/machine/irisha.c
r20680r20681
135135      {
136136         XTAL_16MHz / 9,
137137         DEVCB_LINE_VCC,
138         DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w)
138         DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w)
139139      },
140140      {
141141         XTAL_16MHz / 9 / 8 / 8,
trunk/src/mess/machine/b2m.c
r20680r20681
154154      {
155155         0,
156156         DEVCB_NULL,
157         DEVCB_DEVICE_LINE("pic8259", pic8259_ir1_w)
157         DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir1_w)
158158      },
159159      {
160160         2000000,
trunk/src/mess/machine/genpc.c
r20680r20681
237237      {
238238         XTAL_14_31818MHz/12,                /* heartbeat IRQ */
239239         DEVCB_NULL,
240         DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w)
240         DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w)
241241      }, {
242242         XTAL_14_31818MHz/12,                /* dram refresh */
243243         DEVCB_NULL,
r20680r20681
413413   /* If PB7 is set clear the shift register and reset the IRQ line */
414414   if ( m_ppi_keyboard_clear )
415415   {
416      pic8259_ir1_w(m_pic8259, 0);
416      m_pic8259->ir1_w(0);
417417      m_ppi_shift_register = 0;
418418      m_ppi_shift_enable = 1;
419419   }
r20680r20681
433433static const isa8bus_interface isabus_intf =
434434{
435435   // interrupts
436   DEVCB_DEVICE_LINE("pic8259", pic8259_ir2_w),
437   DEVCB_DEVICE_LINE("pic8259", pic8259_ir3_w),
438   DEVCB_DEVICE_LINE("pic8259", pic8259_ir4_w),
439   DEVCB_DEVICE_LINE("pic8259", pic8259_ir5_w),
440   DEVCB_DEVICE_LINE("pic8259", pic8259_ir6_w),
441   DEVCB_DEVICE_LINE("pic8259", pic8259_ir7_w),
436   DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir2_w),
437   DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir3_w),
438   DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir4_w),
439   DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir5_w),
440   DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir6_w),
441   DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir7_w),
442442
443443   // dma request
444444   DEVCB_DEVICE_LINE_MEMBER("dma8237", am9517a_device, dreq1_w),
r20680r20681
654654
655655IRQ_CALLBACK_MEMBER(ibm5160_mb_device::pc_irq_callback)
656656{
657   return pic8259_acknowledge(m_pic8259);
657   return m_pic8259->inta_r();
658658}
659659
660660
r20680r20681
874874   /* If PB7 is set clear the shift register and reset the IRQ line */
875875   if ( m_ppi_keyboard_clear )
876876   {
877      pic8259_ir1_w(m_pic8259, 0);
877      m_pic8259->ir1_w(0);
878878      m_ppi_shift_register = 0;
879879      m_ppi_shift_enable = 1;
880880   }
trunk/src/mess/machine/southbridge.c
r20680r20681
1919
2020const struct pic8259_interface at_pic8259_slave_config =
2121{
22   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir2_w),
22   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir2_w),
2323   DEVCB_LINE_GND,
2424   DEVCB_NULL
2525};
r20680r20681
7575{
7676   DEVCB_CPU_INPUT_LINE(":maincpu", INPUT_LINE_RESET),
7777   DEVCB_CPU_INPUT_LINE(":maincpu", INPUT_LINE_A20),
78   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir1_w),
78   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir1_w),
7979   DEVCB_NULL,
8080   DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, clock_write_from_mb),
8181   DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, data_write_from_mb)
r20680r20681
9090static const isa16bus_interface isabus_intf =
9191{
9292   // interrupts
93   DEVCB_DEVICE_LINE("pic8259_slave",  pic8259_ir2_w), // in place of irq 2 on at irq 9 is used
94   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir3_w),
95   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir4_w),
96   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir5_w),
97   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir6_w),
98   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir7_w),
93   DEVCB_DEVICE_LINE_MEMBER("pic8259_slave",  pic8259_device, ir2_w), // in place of irq 2 on at irq 9 is used
94   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir3_w),
95   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir4_w),
96   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir5_w),
97   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir6_w),
98   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w),
9999
100   DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir3_w),
101   DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir4_w),
102   DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir5_w),
103   DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir6_w),
104   DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir7_w),
100   DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir3_w),
101   DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir4_w),
102   DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir5_w),
103   DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir6_w),
104   DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir7_w),
105105
106106   // dma request
107107   DEVCB_DEVICE_LINE("dma8237_1", i8237_dreq0_w),
r20680r20681
183183
184184IRQ_CALLBACK_MEMBER(southbridge_device::at_irq_callback)
185185{
186    return pic8259_acknowledge(m_pic8259_master);
186    return m_pic8259_master->inta_r();
187187}
188188
189189//-------------------------------------------------
r20680r20681
232232READ8_MEMBER( southbridge_device::get_slave_ack )
233233{
234234   if (offset==2) // IRQ = 2
235      return pic8259_acknowledge(m_pic8259_slave);
235      return m_pic8259_slave->inta_r();
236236
237237   return 0x00;
238238}
r20680r20681
266266WRITE_LINE_MEMBER( southbridge_device::at_pit8254_out0_changed )
267267{
268268   if (m_pic8259_master)
269      pic8259_ir0_w(m_pic8259_master, state);
269      m_pic8259_master->ir0_w(state);
270270}
271271
272272
trunk/src/mess/machine/at.c
r20680r20681
1616READ8_MEMBER( at_state::get_slave_ack )
1717{
1818   if (offset==2) // IRQ = 2
19      return pic8259_acknowledge(m_pic8259_slave);
19      return m_pic8259_slave->inta_r();
2020
2121   return 0x00;
2222}
r20680r20681
3030
3131const struct pic8259_interface at_pic8259_slave_config =
3232{
33   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir2_w),
33   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir2_w),
3434   DEVCB_LINE_GND,
3535   DEVCB_NULL
3636};
r20680r20681
352352
353353IRQ_CALLBACK_MEMBER(at_state::at_irq_callback)
354354{
355   return pic8259_acknowledge(m_pic8259_master);
355   return m_pic8259_master->inta_r();
356356}
357357
358358MACHINE_START_MEMBER(at_state,at)
trunk/src/mess/machine/compis.c
r20680r20681
178178   {
179179      if (m_8259m)
180180      {
181         pic8259_ir0_w(m_8259m, 1);
182         pic8259_ir0_w(m_8259m, 0);
181         m_8259m->ir0_w(1);
182         m_8259m->ir0_w(0);
183183      }
184184   }
185185}
r20680r20681
12721272READ8_MEMBER( compis_state::get_slave_ack )
12731273{
12741274   if (offset==2) { // IRQ = 2
1275      return pic8259_acknowledge(m_8259s);
1275      return m_8259s->inta_r();
12761276   }
12771277   return 0;
12781278}
r20680r20681
12941294
12951295IRQ_CALLBACK_MEMBER(compis_state::compis_irq_callback)
12961296{
1297   return pic8259_acknowledge(m_8259m);
1297   return m_8259m->inta_r();
12981298}
12991299
13001300
trunk/src/mess/includes/victor9k.h
r20680r20681
77#include "emu.h"
88#include "cpu/i86/i86.h"
99#include "cpu/mcs48/mcs48.h"
10#include "imagedev/flopdrv.h"
10#include "imagedev/floppy.h"
1111#include "machine/ram.h"
1212#include "machine/ctronics.h"
1313#include "machine/6522via.h"
r20680r20681
5252         m_cvsd(*this, HC55516_TAG),
5353         m_crtc(*this, HD46505S_TAG),
5454         m_ram(*this, RAM_TAG),
55         m_floppy0(*this, FLOPPY_0),
56         m_floppy1(*this, FLOPPY_1),
57         m_kb(*this, VICTOR9K_KEYBOARD_TAG)
58   ,
59      m_video_ram(*this, "video_ram"){ }
55         m_floppy0(*this, I8048_TAG":0:525qd"),
56         m_floppy1(*this, I8048_TAG":1:525qd"),
57         m_kb(*this, VICTOR9K_KEYBOARD_TAG),
58         m_video_ram(*this, "video_ram")
59   { }
6060
6161   required_device<cpu_device> m_maincpu;
6262   required_device<cpu_device> m_fdc_cpu;
r20680r20681
6868   required_device<hc55516_device> m_cvsd;
6969   required_device<mc6845_device> m_crtc;
7070   required_device<ram_device> m_ram;
71   required_device<legacy_floppy_image_device> m_floppy0;
72   required_device<legacy_floppy_image_device> m_floppy1;
71   required_device<floppy_image_device> m_floppy0;
72   required_device<floppy_image_device> m_floppy1;
7373   required_device<victor9k_keyboard_device> m_kb;
7474
7575   virtual void machine_start();
trunk/src/mess/drivers/apricot.c
r20680r20681
117117static const struct pit8253_config apricot_pit8253_intf =
118118{
119119   {
120      { XTAL_4MHz / 16,      DEVCB_LINE_VCC, DEVCB_DEVICE_LINE("ic31", pic8259_ir6_w) },
120      { XTAL_4MHz / 16,      DEVCB_LINE_VCC, DEVCB_DEVICE_LINE_MEMBER("ic31", pic8259_device, ir6_w) },
121121      { 0 /*XTAL_4MHz / 2*/, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(apricot_state, apricot_pit8253_out1) },
122122      { 0 /*XTAL_4MHz / 2*/, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(apricot_state, apricot_pit8253_out2) }
123123   }
r20680r20681
145145
146146IRQ_CALLBACK_MEMBER(apricot_state::apricot_irq_ack)
147147{
148   return pic8259_acknowledge(m_pic);
148   return m_pic->inta_r();
149149}
150150
151151static const struct pic8259_interface apricot_pic8259_intf =
trunk/src/mess/drivers/pc88va.c
r20680r20681
16411641
16421642static const struct pic8259_interface pc88va_pic8259_slave_config =
16431643{
1644   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir7_w),
1644   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w),
16451645   DEVCB_LINE_GND,
16461646   DEVCB_NULL
16471647};
trunk/src/mess/drivers/pc1512.c
r20680r20681
913913
914914IRQ_CALLBACK_MEMBER(pc1512_state::pc1512_irq_callback)
915915{
916   return pic8259_acknowledge(m_pic);
916   return m_pic->inta_r();
917917}
918918
919919static const struct pic8259_interface pic_intf =
trunk/src/mess/drivers/victor9k.c
r20680r20681
119119   DEVCB_NULL,
120120   DEVCB_NULL,
121121   DEVCB_NULL,
122   DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir7_w),
122   DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir7_w),
123123   NULL
124124};
125125
r20680r20681
139139      {
140140         2500000,
141141         DEVCB_LINE_VCC,
142         DEVCB_DRIVER_LINE_MEMBER(victor9k_state,mux_serial_b_w)
142         DEVCB_DRIVER_LINE_MEMBER(victor9k_state, mux_serial_b_w)
143143      }, {
144144         2500000,
145145         DEVCB_LINE_VCC,
146         DEVCB_DRIVER_LINE_MEMBER(victor9k_state,mux_serial_a_w)
146         DEVCB_DRIVER_LINE_MEMBER(victor9k_state, mux_serial_a_w)
147147      }, {
148148         100000,
149149         DEVCB_LINE_VCC,
150         DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir2_w)
150         DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir2_w)
151151      }
152152   }
153153};
r20680r20681
218218{
219219   m_ssda_irq = state;
220220
221   pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq);
221   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
222222}
223223
224224static MC6852_INTERFACE( ssda_intf )
r20680r20681
352352{
353353   m_via1_irq = state;
354354
355   pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq);
355   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
356356}
357357
358358static const via6522_interface via1_intf =
r20680r20681
451451{
452452   m_via2_irq = state;
453453
454   pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq);
454   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
455455}
456456
457457static const via6522_interface via2_intf =
r20680r20681
557557{
558558   m_via3_irq = state;
559559
560   pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq);
560   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
561561}
562562
563563static const via6522_interface via3_intf =
r20680r20681
627627{
628628   m_via4_irq = state;
629629
630   pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq);
630   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
631631}
632632
633633static const via6522_interface via4_intf =
r20680r20681
691691{
692692   m_via5_irq = state;
693693
694   pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq);
694   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
695695}
696696
697697static const via6522_interface via5_intf =
r20680r20681
733733   UINT8 data = 0;
734734
735735   // track 0 drive A sense
736   data |= floppy_tk00_r(m_floppy0) << 1;
736   data |= m_floppy0->trk00_r() << 1;
737737
738738   // track 0 drive B sense
739   data |= floppy_tk00_r(m_floppy1) << 3;
739   data |= m_floppy1->trk00_r() << 3;
740740
741741   // write protect sense
742   data |= floppy_wpt_r(m_drive ? m_floppy1 : m_floppy0) << 6;
742   data |= (m_drive ? m_floppy1->wpt_r() : m_floppy0->wpt_r()) << 6;
743743
744744   // disk sync detect
745745
r20680r20681
804804   // door A sense
805805
806806   // single/double sided
807   data |= floppy_twosid_r(m_drive ? m_floppy1 : m_floppy0) << 5;
807   data |= (m_drive ? m_floppy1->twosid_r() : m_floppy0->twosid_r()) << 5;
808808
809809   return data;
810810}
r20680r20681
848848{
849849   m_via6_irq = state;
850850
851   pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq);
851   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
852852}
853853
854854static const via6522_interface via6_intf =
r20680r20681
876876{
877877   m_via2->write_cb1(state);
878878
879   pic8259_ir6_w(m_pic, state ? CLEAR_LINE : ASSERT_LINE);
879   m_pic->ir6_w(state ? CLEAR_LINE : ASSERT_LINE);
880880}
881881
882882static VICTOR9K_KEYBOARD_INTERFACE( kb_intf )
r20680r20681
884884   DEVCB_DRIVER_LINE_MEMBER(victor9k_state, kbrdy_w)
885885};
886886
887// Floppy Configuration
888
889static const floppy_interface victor9k_floppy_interface =
890{
891   DEVCB_NULL,
892   DEVCB_NULL,
893   DEVCB_NULL,
894   DEVCB_NULL,
895   DEVCB_NULL,
896   FLOPPY_STANDARD_5_25_DSQD,
897   LEGACY_FLOPPY_OPTIONS_NAME(default),
898   "floppy_5_25",
899   NULL
900};
901
902887// IEEE-488 Interface
903888
904889static IEEE488_INTERFACE( ieee488_intf )
r20680r20681
913898   DEVCB_NULL
914899};
915900
901static SLOT_INTERFACE_START( victor9k_floppies )
902   SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
903SLOT_INTERFACE_END
904
916905// Machine Initialization
917906
918907IRQ_CALLBACK_MEMBER(victor9k_state::victor9k_irq_callback)
919908{
920   return pic8259_acknowledge(m_pic);
909   return m_pic->inta_r();
921910}
922911
923912void victor9k_state::machine_start()
r20680r20681
970959   MCFG_VIA6522_ADD(M6522_4_TAG, XTAL_30MHz/30, via4_intf)
971960   MCFG_VIA6522_ADD(M6522_5_TAG, XTAL_30MHz/30, via5_intf)
972961   MCFG_VIA6522_ADD(M6522_6_TAG, XTAL_30MHz/30, via6_intf)
973   MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(victor9k_floppy_interface)
962   MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":0", victor9k_floppies, "525qd", 0, floppy_image_device::default_floppy_formats)
963   MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":1", victor9k_floppies, "525qd", 0, floppy_image_device::default_floppy_formats)
974964   MCFG_VICTOR9K_KEYBOARD_ADD(kb_intf)
975965
976966   // internal ram
trunk/src/mess/drivers/wangpc.c
r20680r20681
273273{
274274   //if (LOG) logerror("%s: Timer 0 IRQ clear\n", machine().describe_context());
275275
276   pic8259_ir0_w(m_pic, CLEAR_LINE);
276   m_pic->ir0_w(CLEAR_LINE);
277277}
278278
279279
r20680r20681
733733{
734734   int state = !m_timer2_irq || m_epci->rxrdy_r() || m_epci->txemt_r() || !m_acknlg || !m_dav || !m_busy;
735735
736   pic8259_ir1_w(m_pic, state);
736   m_pic->ir1_w(state);
737737}
738738
739739void wangpc_state::check_level2_interrupts()
740740{
741741   int state = !m_dma_eop || m_uart_dr || m_uart_tbre || m_fdc_dd0 || m_fdc_dd1 || m_fdc->get_irq() || m_fpu_irq || m_bus_irq2;
742742
743   pic8259_ir2_w(m_pic, state);
743   m_pic->ir2_w(state);
744744}
745745
746IRQ_CALLBACK_MEMBER(wangpc_state::wangpc_irq_callback)
746IRQ_CALLBACK_MEMBER( wangpc_state::wangpc_irq_callback )
747747{
748   return pic8259_acknowledge(m_pic);
748   return m_pic->inta_r();
749749}
750750
751751static const struct pic8259_interface pic_intf =
r20680r20681
903903      {
904904         500000,
905905         DEVCB_LINE_VCC,
906         DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir0_w)
906         DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir0_w)
907907      }, {
908908         2000000,
909909         DEVCB_LINE_VCC,
r20680r20681
10621062static WANGPC_BUS_INTERFACE( bus_intf )
10631063{
10641064   DEVCB_DRIVER_LINE_MEMBER(wangpc_state, bus_irq2_w),
1065   DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir3_w),
1066   DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir4_w),
1067   DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir5_w),
1068   DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir6_w),
1069   DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir7_w),
1065   DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir3_w),
1066   DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir4_w),
1067   DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir5_w),
1068   DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir6_w),
1069   DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir7_w),
10701070   DEVCB_DEVICE_LINE_MEMBER(AM9517A_TAG, am9517a_device, dreq1_w),
10711071   DEVCB_DEVICE_LINE_MEMBER(AM9517A_TAG, am9517a_device, dreq2_w),
10721072   DEVCB_DEVICE_LINE_MEMBER(AM9517A_TAG, am9517a_device, dreq3_w),
trunk/src/mess/drivers/z100.c
r20680r20681
597597
598598IRQ_CALLBACK_MEMBER(z100_state::z100_irq_callback)
599599{
600   return pic8259_acknowledge( machine().device( "pic8259_master" ) );
600   return m_picm->inta_r();
601601}
602602
603603WRITE_LINE_MEMBER( z100_state::z100_pic_irq )
604604{
605   machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
605   m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
606606//  logerror("PIC#1: set IRQ line to %i\n",interrupt);
607607}
608608
609609READ8_MEMBER( z100_state::get_slave_ack )
610610{
611611   if (offset==7) { // IRQ = 7
612      return pic8259_acknowledge(m_pics);
612      return m_pics->inta_r();
613613   }
614614   return 0;
615615}
r20680r20681
623623
624624static const struct pic8259_interface z100_pic8259_slave_config =
625625{
626   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir3_w),
626   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir3_w),
627627   DEVCB_LINE_GND,
628628   DEVCB_NULL
629629};
trunk/src/mess/drivers/iq151.c
r20680r20681
221221
222222INPUT_CHANGED_MEMBER(iq151_state::iq151_break)
223223{
224   pic8259_ir5_w(m_pic, newval & 1);
224   m_pic->ir5_w(newval & 1);
225225}
226226
227227/* Input ports */
r20680r20681
324324
325325INTERRUPT_GEN_MEMBER(iq151_state::iq151_vblank_interrupt)
326326{
327   pic8259_ir6_w(m_pic, m_vblank_irq_state & 1);
327   m_pic->ir6_w(m_vblank_irq_state & 1);
328328   m_vblank_irq_state ^= 1;
329329}
330330
331331IRQ_CALLBACK_MEMBER(iq151_state::iq151_irq_callback)
332332{
333   return pic8259_acknowledge(m_pic);
333   return m_pic->inta_r();
334334}
335335
336336TIMER_DEVICE_CALLBACK_MEMBER(iq151_state::cassette_timer)
r20680r20681
403403
404404static const iq151cart_interface iq151_cart_interface =
405405{
406   DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w),
407   DEVCB_DEVICE_LINE("pic8259", pic8259_ir1_w),
408   DEVCB_DEVICE_LINE("pic8259", pic8259_ir2_w),
409   DEVCB_DEVICE_LINE("pic8259", pic8259_ir3_w),
410   DEVCB_DEVICE_LINE("pic8259", pic8259_ir4_w),
406   DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w),
407   DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir1_w),
408   DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir2_w),
409   DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir3_w),
410   DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir4_w),
411411   DEVCB_NULL
412412};
413413
trunk/src/mess/drivers/pasogo.c
r20680r20681
475475      {
476476         4772720/4,              /* heartbeat IRQ */
477477         DEVCB_NULL,
478         DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w)
478         DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w)
479479      }, {
480480         4772720/4,              /* dram refresh */
481481         DEVCB_NULL,
trunk/src/mess/drivers/pc9801.c
r20680r20681
29342934
29352935static const struct pic8259_interface pic8259_slave_config =
29362936{
2937   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir7_w), //TODO: check me
2937   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w), //TODO: check me
29382938   DEVCB_LINE_GND,
29392939   DEVCB_NULL
29402940};
trunk/src/mess/drivers/at.c
r20680r20681
296296{
297297   DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_RESET),
298298   DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_A20),
299   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir1_w),
299   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir1_w),
300300   DEVCB_NULL,
301301   DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, clock_write_from_mb),
302302   DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, data_write_from_mb)
r20680r20681
310310
311311WRITE_LINE_MEMBER( at_state::at_mc146818_irq )
312312{
313   pic8259_ir0_w(m_pic8259_slave, (state) ? 0 : 1);
313   m_pic8259_slave->ir0_w((state) ? 0 : 1);
314314}
315315
316316const struct mc146818_interface at_mc146818_config =
r20680r20681
321321static const isa16bus_interface isabus_intf =
322322{
323323   // interrupts
324   DEVCB_DEVICE_LINE("pic8259_slave",  pic8259_ir2_w), // in place of irq 2 on at irq 9 is used
325   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir3_w),
326   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir4_w),
327   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir5_w),
328   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir6_w),
329   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir7_w),
324   DEVCB_DEVICE_LINE_MEMBER("pic8259_slave",  pic8259_device, ir2_w), // in place of irq 2 on at irq 9 is used
325   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir3_w),
326   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir4_w),
327   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir5_w),
328   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir6_w),
329   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w),
330330
331   DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir3_w),
332   DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir4_w),
333   DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir5_w),
334   DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir6_w),
335   DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir7_w),
331   DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir3_w),
332   DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir4_w),
333   DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir5_w),
334   DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir6_w),
335   DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir7_w),
336336
337337   // dma request
338338   DEVCB_DEVICE_LINE_MEMBER("dma8237_1", am9517a_device, dreq0_w),
trunk/src/mess/drivers/cbm2.c
r20680r20681
17271727
17281728IRQ_CALLBACK_MEMBER(cbm2_state::pic_irq_callback)
17291729{
1730   return pic8259_acknowledge(m_ext_pic);
1730   return m_ext_pic->inta_r();
17311731}
17321732
17331733static pic8259_interface ext_pic_intf =
trunk/src/mess/drivers/apricotp.c
r20680r20681
418418
419419 IRQ_CALLBACK_MEMBER(fp_state::fp_irq_callback)
420420{
421   return pic8259_acknowledge(m_pic);
421   return m_pic->inta_r();
422422}
423423
424424/*
r20680r20681
543543
544544WRITE_LINE_MEMBER( fp_state::busy_w )
545545{
546   if (!state) pic8259_ir6_w(m_pic, ASSERT_LINE);
546   if (!state) m_pic->ir6_w(ASSERT_LINE);
547547}
548548
549549static const centronics_interface centronics_intf =
trunk/src/mess/drivers/trs80m2.c
r20680r20681
725725
726726IRQ_CALLBACK_MEMBER(trs80m16_state::trs80m16_irq_callback)
727727{
728   return pic8259_acknowledge(m_pic);
728   return m_pic->inta_r();
729729}
730730
731731static const struct pic8259_interface pic_intf =
trunk/src/mess/drivers/qx10.c
r20680r20681
327327
328328   //logerror("Interrupt from upd765: %d\n", state);
329329   // signal interrupt
330   pic8259_ir6_w(m_pic_m, state);
330   m_pic_m->ir6_w(state);
331331}
332332
333333void qx10_state::drq_w(bool state)
r20680r20681
545545READ8_MEMBER( qx10_state::get_slave_ack )
546546{
547547   if (offset==7) { // IRQ = 7
548      return pic8259_acknowledge(m_pic_s);
548      return m_pic_s->inta_r();
549549   }
550550   return 0x00;
551551}
r20680r20681
572572
573573static const struct pic8259_interface qx10_pic8259_slave_config =
574574{
575   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir7_w),
575   DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w),
576576   DEVCB_LINE_GND,
577577   DEVCB_NULL
578578};
r20680r20681
611611            m_keyb.led[(data & 0xe) >> 1] = data & 1;
612612            printf("keyb Set led %02x %s\n",((data & 0xe) >> 1),data & 1 ? "on" : "off");
613613            m_keyb.rx = (data & 0xf) | 0xc0;
614            pic8259_ir4_w(machine().device("pic8259_master"), 1);
614            m_pic_m->ir4_w(1);
615615            break;
616616         case 0x60:
617617            printf("keyb Read LED status\n");
r20680r20681
702702   if(newval && !oldval)
703703   {
704704      m_keyb.rx = (UINT8)(FPTR)(param) & 0x7f;
705      pic8259_ir4_w(machine().device("pic8259_master"), 1);
705      m_pic_m->ir4_w(1);
706706   }
707707
708708   if(oldval && !newval)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team