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 | |