trunk/src/mame/drivers/pcxt.c
r22867 | r22868 | |
72 | 72 | : driver_device(mconfig, type, tag), |
73 | 73 | m_pit8253(*this,"pit8253"), |
74 | 74 | m_pic8259_1(*this,"pic8259_1"), |
75 | | m_pic8259_2(*this,"pic8259_2"), |
76 | 75 | m_dma8237_1(*this,"dma8237_1") , |
77 | 76 | m_maincpu(*this, "maincpu"), |
78 | 77 | m_speaker(*this, "speaker") { } |
r22867 | r22868 | |
93 | 92 | |
94 | 93 | required_device<pit8253_device> m_pit8253; |
95 | 94 | required_device<pic8259_device> m_pic8259_1; |
96 | | required_device<pic8259_device> m_pic8259_2; |
97 | 95 | required_device<am9517a_device> m_dma8237_1; |
98 | 96 | |
99 | 97 | DECLARE_READ8_MEMBER(disk_iobank_r); |
r22867 | r22868 | |
120 | 118 | DECLARE_WRITE_LINE_MEMBER(pc_dack1_w); |
121 | 119 | DECLARE_WRITE_LINE_MEMBER(pc_dack2_w); |
122 | 120 | DECLARE_WRITE_LINE_MEMBER(pc_dack3_w); |
123 | | DECLARE_WRITE_LINE_MEMBER(pic8259_1_set_int_line); |
124 | | DECLARE_READ8_MEMBER(get_slave_ack); |
125 | 121 | DECLARE_DRIVER_INIT(tetriskr); |
126 | 122 | DECLARE_DRIVER_INIT(filetto); |
127 | 123 | virtual void machine_reset(); |
r22867 | r22868 | |
517 | 513 | 8259 IRQ controller |
518 | 514 | ******************/ |
519 | 515 | |
520 | | WRITE_LINE_MEMBER(pcxt_state::pic8259_1_set_int_line) |
521 | | { |
522 | | m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); |
523 | | } |
524 | | |
525 | | READ8_MEMBER(pcxt_state::get_slave_ack) |
526 | | { |
527 | | if (offset==2) { // IRQ = 2 |
528 | | return m_pic8259_2->acknowledge(); |
529 | | } |
530 | | return 0x00; |
531 | | } |
532 | | |
533 | 516 | IRQ_CALLBACK_MEMBER(pcxt_state::irq_callback) |
534 | 517 | { |
535 | 518 | return m_pic8259_1->acknowledge(); |
r22867 | r22868 | |
551 | 534 | AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) //PPI 8255 |
552 | 535 | AM_RANGE(0x0064, 0x0066) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) //PPI 8255 |
553 | 536 | AM_RANGE(0x0080, 0x0087) AM_READWRITE(dma_page_select_r,dma_page_select_w) |
554 | | AM_RANGE(0x00a0, 0x00af) AM_DEVREADWRITE("pic8259_2", pic8259_device, read, write ) |
555 | 537 | AM_RANGE(0x0278, 0x027f) AM_RAM //printer (parallel) port latch |
556 | 538 | AM_RANGE(0x02f8, 0x02ff) AM_RAM //Modem port |
557 | 539 | AM_RANGE(0x0378, 0x037f) AM_RAM //printer (parallel) port |
r22867 | r22868 | |
723 | 705 | |
724 | 706 | MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config ) |
725 | 707 | |
726 | | MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(pcxt_state,pic8259_1_set_int_line), VCC, READ8(pcxt_state,get_slave_ack) ) |
| 708 | MCFG_PIC8259_ADD( "pic8259_1", INPUTLINE("maincpu", 0), VCC, NULL ) |
727 | 709 | |
728 | | MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) |
729 | | |
730 | 710 | MCFG_FRAGMENT_ADD( pcvideo_cga ) |
731 | 711 | MCFG_GFXDECODE(pcxt) |
732 | 712 | |