src/mess/machine/at.c
| r15655 | r15656 | |
| 158 | 158 | device_set_input_line(m_maincpu, INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); |
| 159 | 159 | |
| 160 | 160 | /* Assert HLDA */ |
| 161 | | i8237_hlda_w( m_dma8237_2, state ); |
| 161 | m_dma8237_2->hack_w(state); |
| 162 | 162 | } |
| 163 | 163 | |
| 164 | 164 | READ8_MEMBER(at_state::pc_dma_read_byte) |
| r15655 | r15656 | |
| 229 | 229 | WRITE_LINE_MEMBER( at_state::pc_dack1_w ) { set_dma_channel(m_dma8237_1, 1, state); } |
| 230 | 230 | WRITE_LINE_MEMBER( at_state::pc_dack2_w ) { set_dma_channel(m_dma8237_1, 2, state); } |
| 231 | 231 | WRITE_LINE_MEMBER( at_state::pc_dack3_w ) { set_dma_channel(m_dma8237_1, 3, state); } |
| 232 | | WRITE_LINE_MEMBER( at_state::pc_dack4_w ) { i8237_hlda_w( m_dma8237_1, state ? 0 : 1); } // it's inverted |
| 232 | WRITE_LINE_MEMBER( at_state::pc_dack4_w ) { m_dma8237_1->hack_w(state ? 0 : 1); } // it's inverted |
| 233 | 233 | WRITE_LINE_MEMBER( at_state::pc_dack5_w ) { set_dma_channel(m_dma8237_2, 5, state); } |
| 234 | 234 | WRITE_LINE_MEMBER( at_state::pc_dack6_w ) { set_dma_channel(m_dma8237_2, 6, state); } |
| 235 | 235 | WRITE_LINE_MEMBER( at_state::pc_dack7_w ) { set_dma_channel(m_dma8237_2, 7, state); } |
| 236 | 236 | |
| 237 | 237 | I8237_INTERFACE( at_dma8237_1_config ) |
| 238 | 238 | { |
| 239 | | DEVCB_DEVICE_LINE("dma8237_2",i8237_dreq0_w), |
| 239 | DEVCB_DEVICE_LINE_MEMBER("dma8237_2", am9517a_device, dreq0_w), |
| 240 | 240 | DEVCB_DRIVER_LINE_MEMBER(at_state, at_dma8237_out_eop), |
| 241 | 241 | DEVCB_DRIVER_MEMBER(at_state, pc_dma_read_byte), |
| 242 | 242 | DEVCB_DRIVER_MEMBER(at_state, pc_dma_write_byte), |
src/mess/machine/genpc.c
| r15655 | r15656 | |
| 11 | 11 | #include "machine/i8255.h" |
| 12 | 12 | #include "machine/pic8259.h" |
| 13 | 13 | #include "machine/pit8253.h" |
| 14 | | #include "machine/8237dma.h" |
| 15 | 14 | #include "sound/speaker.h" |
| 16 | 15 | #include "machine/ram.h" |
| 17 | 16 | #include "imagedev/cassette.h" |
| r15655 | r15656 | |
| 64 | 63 | device_set_input_line(m_maincpu, INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); |
| 65 | 64 | |
| 66 | 65 | /* Assert HLDA */ |
| 67 | | i8237_hlda_w( m_dma8237, state ); |
| 66 | m_dma8237->hack_w(state); |
| 68 | 67 | } |
| 69 | 68 | |
| 70 | 69 | |
| r15655 | r15656 | |
| 122 | 121 | WRITE8_MEMBER( ibm5160_mb_device::pc_dma8237_0_dack_w ) |
| 123 | 122 | { |
| 124 | 123 | m_u73_q2 = 0; |
| 125 | | i8237_dreq0_w( m_dma8237, m_u73_q2 ); |
| 124 | m_dma8237->dreq0_w( m_u73_q2 ); |
| 126 | 125 | } |
| 127 | 126 | |
| 128 | 127 | |
| r15655 | r15656 | |
| 199 | 198 | if ( m_out1 == 0 && state == 1 && m_u73_q2 == 0 ) |
| 200 | 199 | { |
| 201 | 200 | m_u73_q2 = 1; |
| 202 | | i8237_dreq0_w( m_dma8237, m_u73_q2 ); |
| 201 | m_dma8237->dreq0_w( m_u73_q2 ); |
| 203 | 202 | } |
| 204 | 203 | m_out1 = state; |
| 205 | 204 | } |
| r15655 | r15656 | |
| 422 | 421 | DEVCB_DEVICE_LINE("pic8259", pic8259_ir7_w), |
| 423 | 422 | |
| 424 | 423 | // dma request |
| 425 | | DEVCB_DEVICE_LINE("dma8237", i8237_dreq1_w), |
| 426 | | DEVCB_DEVICE_LINE("dma8237", i8237_dreq2_w), |
| 427 | | DEVCB_DEVICE_LINE("dma8237", i8237_dreq3_w) |
| 424 | DEVCB_DEVICE_LINE_MEMBER("dma8237", am9517a_device, dreq1_w), |
| 425 | DEVCB_DEVICE_LINE_MEMBER("dma8237", am9517a_device, dreq2_w), |
| 426 | DEVCB_DEVICE_LINE_MEMBER("dma8237", am9517a_device, dreq3_w) |
| 428 | 427 | }; |
| 429 | 428 | |
| 430 | 429 | static const pc_kbdc_interface pc_kbdc_intf = |
| r15655 | r15656 | |
| 583 | 582 | } |
| 584 | 583 | } |
| 585 | 584 | |
| 585 | void ibm5160_mb_device::install_device(offs_t start, offs_t end, offs_t mask, offs_t mirror, read8_delegate rhandler, write8_delegate whandler) |
| 586 | { |
| 587 | int buswidth = m_maincpu->memory().space_config(AS_IO)->m_databus_width; |
| 588 | switch(buswidth) |
| 589 | { |
| 590 | case 8: |
| 591 | m_maincpu->memory().space(AS_IO)->install_readwrite_handler(start, end, mask, mirror, rhandler, whandler, 0); |
| 592 | break; |
| 593 | case 16: |
| 594 | m_maincpu->memory().space(AS_IO)->install_readwrite_handler(start, end, mask, mirror, rhandler, whandler, 0xffff); |
| 595 | break; |
| 596 | default: |
| 597 | fatalerror("IBM5160_MOTHERBOARD: Bus width %d not supported", buswidth); |
| 598 | break; |
| 599 | } |
| 600 | } |
| 586 | 601 | |
| 602 | |
| 587 | 603 | //------------------------------------------------- |
| 588 | 604 | // device_start - device-specific startup |
| 589 | 605 | //------------------------------------------------- |
| 590 | 606 | |
| 591 | 607 | void ibm5160_mb_device::device_start() |
| 592 | 608 | { |
| 593 | | install_device(m_dma8237, 0x0000, 0x000f, 0, 0, FUNC(i8237_r), FUNC(i8237_w) ); |
| 609 | install_device(0x0000, 0x000f, 0, 0, read8_delegate(FUNC(am9517a_device::read), (am9517a_device*)m_dma8237), write8_delegate(FUNC(am9517a_device::write), (am9517a_device*)m_dma8237) ); |
| 594 | 610 | install_device(m_pic8259, 0x0020, 0x0021, 0, 0, FUNC(pic8259_r), FUNC(pic8259_w) ); |
| 595 | 611 | install_device(m_pit8253, 0x0040, 0x0043, 0, 0, FUNC(pit8253_r), FUNC(pit8253_w) ); |
| 596 | 612 | |
| r15655 | r15656 | |
| 632 | 648 | device_set_irq_callback(m_maincpu, pc_irq_callback); |
| 633 | 649 | |
| 634 | 650 | m_u73_q2 = 0; |
| 635 | | m_out1 = 0; |
| 651 | m_out1 = 2; // initial state of pit output is undefined |
| 636 | 652 | m_pc_spkrdata = 0; |
| 637 | 653 | m_pc_input = 0; |
| 638 | 654 | m_dma_channel = 0; |
src/mess/drivers/at.c
| r15655 | r15656 | |
| 62 | 62 | |
| 63 | 63 | READ8_MEMBER( at_state::at_dma8237_2_r ) |
| 64 | 64 | { |
| 65 | | return i8237_r( m_dma8237_2, offset / 2); |
| 65 | return m_dma8237_2->read(space, offset / 2); |
| 66 | 66 | } |
| 67 | 67 | |
| 68 | 68 | WRITE8_MEMBER( at_state::at_dma8237_2_w ) |
| 69 | 69 | { |
| 70 | | i8237_w( m_dma8237_2, offset / 2, data); |
| 70 | m_dma8237_2->write(space, offset / 2, data); |
| 71 | 71 | } |
| 72 | 72 | |
| 73 | 73 | READ8_MEMBER( at_state::at_keybc_r ) |
| r15655 | r15656 | |
| 105 | 105 | |
| 106 | 106 | static ADDRESS_MAP_START( at16_io, AS_IO, 16, at_state ) |
| 107 | 107 | ADDRESS_MAP_UNMAP_HIGH |
| 108 | | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8_LEGACY("dma8237_1", i8237_r, i8237_w, 0xffff) |
| 108 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", am9517a_device, read, write, 0xffff) |
| 109 | 109 | AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8_LEGACY("pic8259_master", pic8259_r, pic8259_w, 0xffff) |
| 110 | 110 | AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8_LEGACY("pit8254", pit8253_r, pit8253_w, 0xffff) |
| 111 | 111 | AM_RANGE(0x0060, 0x0063) AM_READWRITE8(at_keybc_r, at_keybc_w, 0xffff) |
| r15655 | r15656 | |
| 136 | 136 | |
| 137 | 137 | static ADDRESS_MAP_START( neat_io, AS_IO, 16, at_state ) |
| 138 | 138 | ADDRESS_MAP_UNMAP_HIGH |
| 139 | | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8_LEGACY("dma8237_1", i8237_r, i8237_w, 0xffff) |
| 139 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", am9517a_device, read, write, 0xffff) |
| 140 | 140 | AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE8_LEGACY("pic8259_master", pic8259_r, pic8259_w, 0xffff) |
| 141 | 141 | AM_RANGE(0x0022, 0x0023) AM_READWRITE(neat_chipset_r, neat_chipset_w) |
| 142 | 142 | AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8_LEGACY("pit8254", pit8253_r, pit8253_w, 0xffff) |
| r15655 | r15656 | |
| 150 | 150 | |
| 151 | 151 | static ADDRESS_MAP_START( at386_io, AS_IO, 32, at_state ) |
| 152 | 152 | ADDRESS_MAP_UNMAP_HIGH |
| 153 | | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8_LEGACY("dma8237_1", i8237_r, i8237_w, 0xffffffff) |
| 153 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", am9517a_device, read, write, 0xffffffff) |
| 154 | 154 | AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8_LEGACY("pic8259_master", pic8259_r, pic8259_w, 0xffffffff) |
| 155 | 155 | AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8_LEGACY("pit8254", pit8253_r, pit8253_w, 0xffffffff) |
| 156 | 156 | AM_RANGE(0x0060, 0x0063) AM_READWRITE8(at_keybc_r, at_keybc_w, 0xffff) |
| r15655 | r15656 | |
| 193 | 193 | |
| 194 | 194 | static ADDRESS_MAP_START( ct486_io, AS_IO, 32, at_state ) |
| 195 | 195 | ADDRESS_MAP_UNMAP_HIGH |
| 196 | | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8_LEGACY("dma8237_1", i8237_r, i8237_w, 0xffffffff) |
| 196 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", am9517a_device, read, write, 0xffffffff) |
| 197 | 197 | AM_RANGE(0x0020, 0x0023) AM_READWRITE(ct486_chipset_r, ct486_chipset_w) |
| 198 | 198 | AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8_LEGACY("pit8254", pit8253_r, pit8253_w, 0xffffffff) |
| 199 | 199 | AM_RANGE(0x0060, 0x0063) AM_READWRITE8(at_keybc_r, at_keybc_w, 0xffff) |
| r15655 | r15656 | |
| 212 | 212 | |
| 213 | 213 | static ADDRESS_MAP_START( megapc_io, AS_IO, 32, at_state ) |
| 214 | 214 | ADDRESS_MAP_UNMAP_HIGH |
| 215 | | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8_LEGACY("dma8237_1", i8237_r, i8237_w, 0xffffffff) |
| 215 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", am9517a_device, read, write, 0xffffffff) |
| 216 | 216 | AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8_LEGACY("pic8259_master", pic8259_r, pic8259_w, 0xffffffff) |
| 217 | 217 | AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8_LEGACY("pit8254", pit8253_r, pit8253_w, 0xffffffff) |
| 218 | 218 | AM_RANGE(0x0060, 0x0063) AM_READWRITE8(at_keybc_r, at_keybc_w, 0xffff) // TODO: is this the correct type? |
| r15655 | r15656 | |
| 335 | 335 | DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir7_w), |
| 336 | 336 | |
| 337 | 337 | // dma request |
| 338 | | DEVCB_DEVICE_LINE("dma8237_1", i8237_dreq0_w), |
| 339 | | DEVCB_DEVICE_LINE("dma8237_1", i8237_dreq1_w), |
| 340 | | DEVCB_DEVICE_LINE("dma8237_1", i8237_dreq2_w), |
| 341 | | DEVCB_DEVICE_LINE("dma8237_1", i8237_dreq3_w), |
| 338 | DEVCB_DEVICE_LINE_MEMBER("dma8237_1", am9517a_device, dreq0_w), |
| 339 | DEVCB_DEVICE_LINE_MEMBER("dma8237_1", am9517a_device, dreq1_w), |
| 340 | DEVCB_DEVICE_LINE_MEMBER("dma8237_1", am9517a_device, dreq2_w), |
| 341 | DEVCB_DEVICE_LINE_MEMBER("dma8237_1", am9517a_device, dreq3_w), |
| 342 | 342 | |
| 343 | | DEVCB_DEVICE_LINE("dma8237_2", i8237_dreq1_w), |
| 344 | | DEVCB_DEVICE_LINE("dma8237_2", i8237_dreq2_w), |
| 345 | | DEVCB_DEVICE_LINE("dma8237_2", i8237_dreq3_w), |
| 343 | DEVCB_DEVICE_LINE_MEMBER("dma8237_2", am9517a_device, dreq1_w), |
| 344 | DEVCB_DEVICE_LINE_MEMBER("dma8237_2", am9517a_device, dreq2_w), |
| 345 | DEVCB_DEVICE_LINE_MEMBER("dma8237_2", am9517a_device, dreq3_w), |
| 346 | 346 | }; |
| 347 | 347 | |
| 348 | 348 | static SLOT_INTERFACE_START(pc_isa16_cards) |
| r15655 | r15656 | |
| 425 | 425 | /* internal ram */ |
| 426 | 426 | MCFG_RAM_ADD(RAM_TAG) |
| 427 | 427 | MCFG_RAM_DEFAULT_SIZE("1664K") |
| 428 | MCFG_RAM_EXTRA_OPTIONS("2M,4M,8M,16M") |
| 428 | 429 | MACHINE_CONFIG_END |
| 429 | 430 | |
| 430 | 431 | |
| r15655 | r15656 | |
| 459 | 460 | /* internal ram */ |
| 460 | 461 | MCFG_RAM_ADD(RAM_TAG) |
| 461 | 462 | MCFG_RAM_DEFAULT_SIZE("1664K") |
| 463 | MCFG_RAM_EXTRA_OPTIONS("2M,4M,8M,16M") |
| 462 | 464 | MACHINE_CONFIG_END |
| 463 | 465 | |
| 464 | 466 | |
| r15655 | r15656 | |
| 480 | 482 | /* internal ram */ |
| 481 | 483 | MCFG_RAM_ADD(RAM_TAG) |
| 482 | 484 | MCFG_RAM_DEFAULT_SIZE("1664K") |
| 485 | MCFG_RAM_EXTRA_OPTIONS("2M,4M,8M,16M") |
| 483 | 486 | MACHINE_CONFIG_END |
| 484 | 487 | |
| 485 | 488 | |
| r15655 | r15656 | |
| 504 | 507 | /* internal ram */ |
| 505 | 508 | MCFG_RAM_ADD(RAM_TAG) |
| 506 | 509 | MCFG_RAM_DEFAULT_SIZE("1664K") |
| 510 | MCFG_RAM_EXTRA_OPTIONS("2M,4M,8M,16M") |
| 507 | 511 | MACHINE_CONFIG_END |
| 508 | 512 | |
| 509 | 513 | static MACHINE_CONFIG_START( atvga, at_state ) |
| r15655 | r15656 | |
| 525 | 529 | /* internal ram */ |
| 526 | 530 | MCFG_RAM_ADD(RAM_TAG) |
| 527 | 531 | MCFG_RAM_DEFAULT_SIZE("1664K") |
| 532 | MCFG_RAM_EXTRA_OPTIONS("2M,4M,8M,16M") |
| 528 | 533 | MACHINE_CONFIG_END |
| 529 | 534 | |
| 530 | 535 | static MACHINE_CONFIG_START( xb42639, at_state ) |
| r15655 | r15656 | |
| 545 | 550 | /* internal ram */ |
| 546 | 551 | MCFG_RAM_ADD(RAM_TAG) |
| 547 | 552 | MCFG_RAM_DEFAULT_SIZE("1664K") |
| 553 | MCFG_RAM_EXTRA_OPTIONS("2M,4M,8M,16M") |
| 548 | 554 | MACHINE_CONFIG_END |
| 549 | 555 | |
| 550 | 556 | //------------------------------------------------- |