diff options
author | 2016-03-05 21:37:26 -0600 | |
---|---|---|
committer | 2016-03-05 21:37:26 -0600 | |
commit | 7e2777df2a46ac09a030d70ef46e5bac90422b58 (patch) | |
tree | d2a566bd80da66e69af242ea732a4febdc51c4a7 | |
parent | 2a02284ac1b536c061785c9743c9141137a0c0db (diff) |
pcat_dyn: "I/O BOARD FAILURE" (nw)
-rw-r--r-- | src/devices/machine/8042kbdc.cpp | 4 | ||||
-rw-r--r-- | src/mame/drivers/pcat_dyn.cpp | 65 | ||||
-rw-r--r-- | src/mame/machine/pcshare.cpp | 14 | ||||
-rw-r--r-- | src/mame/machine/pcshare.h | 2 |
4 files changed, 47 insertions, 38 deletions
diff --git a/src/devices/machine/8042kbdc.cpp b/src/devices/machine/8042kbdc.cpp index a1d36a41b43..28c2855acf7 100644 --- a/src/devices/machine/8042kbdc.cpp +++ b/src/devices/machine/8042kbdc.cpp @@ -287,7 +287,8 @@ void kbdc8042_device::at_8042_receive(UINT8 data) m_input_buffer_full_cb(1); /* Lets 8952's timers do their job before clear the interrupt line, */ /* else Keyboard interrupt never happens. */ - machine().scheduler().timer_set(attotime::from_usec(2), timer_expired_delegate(FUNC(kbdc8042_device::kbdc8042_clr_int),this)); + /* Why was this done? It dies when an extended scan code is received */ + //machine().scheduler().timer_set(attotime::from_usec(2), timer_expired_delegate(FUNC(kbdc8042_device::kbdc8042_clr_int),this)); } } @@ -347,6 +348,7 @@ READ8_MEMBER(kbdc8042_device::data_r) switch (offset) { case 0: data = m_data; + m_input_buffer_full_cb(0); if ((m_status_read_mode != 3) || (data != 0xfa)) { if (m_keybtype != KBDC8042_AT386 || (data != 0x55)) diff --git a/src/mame/drivers/pcat_dyn.cpp b/src/mame/drivers/pcat_dyn.cpp index 25fdff8943e..bf2676a6522 100644 --- a/src/mame/drivers/pcat_dyn.cpp +++ b/src/mame/drivers/pcat_dyn.cpp @@ -33,33 +33,42 @@ keyboard trick; #include "cpu/i386/i386.h" #include "machine/pcshare.h" #include "video/pc_vga.h" - +#include "machine/bankdev.h" class pcat_dyn_state : public pcat_base_state { public: pcat_dyn_state(const machine_config &mconfig, device_type type, const char *tag) - : pcat_base_state(mconfig, type, tag) { } - - DECLARE_DRIVER_INIT(pcat_dyn); - virtual void machine_start() override; + : pcat_base_state(mconfig, type, tag) + , m_bank1(*this, "bank1") + , m_bank2(*this, "bank2"){ } + + required_device<address_map_bank_device> m_bank1; + required_device<address_map_bank_device> m_bank2; + DECLARE_WRITE8_MEMBER(bank1_w); + DECLARE_WRITE8_MEMBER(bank2_w); }; +WRITE8_MEMBER(pcat_dyn_state::bank1_w) +{ + m_bank1->set_bank(data); +} + +WRITE8_MEMBER(pcat_dyn_state::bank2_w) +{ + m_bank2->set_bank(data); +} -//ce9b8 -/* TODO: understand the proper ROM loading.*/ static ADDRESS_MAP_START( pcat_map, AS_PROGRAM, 32, pcat_dyn_state ) AM_RANGE(0x00000000, 0x0009ffff) AM_RAM AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM AM_REGION("video_bios", 0) - AM_RANGE(0x000c8000, 0x000cffff) AM_RAM -// AM_RANGE(0x000d0000, 0x000d7fff) AM_RAM AM_REGION("disk_bios", 0) -// AM_RANGE(0x000d8000, 0x000dffff) AM_RAM AM_REGION("disk_bios", 0) -// AM_RANGE(0x000e0000, 0x000effff) AM_ROM AM_REGION("game_prg", 0) + AM_RANGE(0x000d0000, 0x000d0fff) AM_ROM AM_REGION("game_prg", 0x0000) AM_WRITE8(bank1_w, 0xffffffff) + AM_RANGE(0x000d1000, 0x000d1fff) AM_ROM AM_REGION("game_prg", 0x1000) AM_WRITE8(bank2_w, 0xffffffff) + AM_RANGE(0x000d2000, 0x000d3fff) AM_DEVICE("bank1", address_map_bank_device, amap32) + AM_RANGE(0x000d2000, 0x000d4fff) AM_DEVICE("bank2", address_map_bank_device, amap32) AM_RANGE(0x000f0000, 0x000fffff) AM_ROM AM_REGION("bios", 0 ) - AM_RANGE(0x00100000, 0x001fffff) AM_RAM //AM_REGION("game_prg", 0) -// AM_RANGE(0x00200000, 0x00ffffff) AM_RAM - //AM_RANGE(0x01000000, 0x01ffffff) AM_RAM + AM_RANGE(0x00100000, 0x001fffff) AM_RAM AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 ) ADDRESS_MAP_END @@ -70,6 +79,10 @@ static ADDRESS_MAP_START( pcat_io, AS_IO, 32, pcat_dyn_state ) AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff) ADDRESS_MAP_END +static ADDRESS_MAP_START( bank_map, AS_0, 32, pcat_dyn_state ) + AM_RANGE(0x00000, 0xfffff) AM_ROM AM_REGION("game_prg", 0) +ADDRESS_MAP_END + #define AT_KEYB_HELPER(bit, text, key1) \ PORT_BIT( bit, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(text) PORT_CODE(key1) @@ -104,9 +117,6 @@ static INPUT_PORTS_START( pcat_dyn ) PORT_START("pc_keyboard_7") INPUT_PORTS_END -void pcat_dyn_state::machine_start() -{ -} static MACHINE_CONFIG_START( pcat_dyn, pcat_dyn_state ) /* basic machine hardware */ @@ -119,9 +129,21 @@ static MACHINE_CONFIG_START( pcat_dyn, pcat_dyn_state ) MCFG_FRAGMENT_ADD( pcvideo_vga ) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ MCFG_FRAGMENT_ADD( pcat_common ) + + MCFG_DEVICE_ADD("bank1", ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(bank_map) + MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(32) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(20) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x1000) + MCFG_DEVICE_ADD("bank2", ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(bank_map) + MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(32) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(20) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x1000) MACHINE_CONFIG_END /*************************************** @@ -163,9 +185,6 @@ ROM_START(toursol1) ROM_LOAD("prom.7", 0xe0000, 0x02000, CRC(154c8092) SHA1(4439ee82f36d5d5c334494ba7bb4848e839213a7)) ROM_END -DRIVER_INIT_MEMBER(pcat_dyn_state,pcat_dyn) -{ -} -GAME( 1995, toursol, 0, pcat_dyn, pcat_dyn, pcat_dyn_state, pcat_dyn, ROT0, "Dynamo", "Tournament Solitaire (V1.06, 08/03/95)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) -GAME( 1995, toursol1, toursol, pcat_dyn, pcat_dyn, pcat_dyn_state, pcat_dyn, ROT0, "Dynamo", "Tournament Solitaire (V1.04, 06/22/95)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +GAME( 1995, toursol, 0, pcat_dyn, pcat_dyn, driver_device, 0, ROT0, "Dynamo", "Tournament Solitaire (V1.06, 08/03/95)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +GAME( 1995, toursol1, toursol, pcat_dyn, pcat_dyn, driver_device, 0, ROT0, "Dynamo", "Tournament Solitaire (V1.04, 06/22/95)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) diff --git a/src/mame/machine/pcshare.cpp b/src/mame/machine/pcshare.cpp index 46b53464304..a6701fb9ac4 100644 --- a/src/mame/machine/pcshare.cpp +++ b/src/mame/machine/pcshare.cpp @@ -21,16 +21,6 @@ DMA8237 Controller ******************/ -READ8_MEMBER(pcat_base_state::at_dma8237_2_r) -{ - return m_dma8237_2->read(space, offset / 2); -} - -WRITE8_MEMBER(pcat_base_state::at_dma8237_2_w) -{ - m_dma8237_2->write(space, offset / 2, data); -} - WRITE_LINE_MEMBER( pcat_base_state::pc_dma_hrq_changed ) { m_maincpu->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); @@ -134,7 +124,7 @@ WRITE_LINE_MEMBER( pcat_base_state::at_pit8254_out2_changed ) } - ADDRESS_MAP_START( pcat32_io_common, AS_IO, 32, pcat_base_state ) +ADDRESS_MAP_START( pcat32_io_common, AS_IO, 32, pcat_base_state ) AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", am9517a_device, read, write, 0xffffffff) AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_device, read, write, 0xffffffff) AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8254_device, read, write, 0xffffffff) @@ -142,7 +132,7 @@ WRITE_LINE_MEMBER( pcat_base_state::at_pit8254_out2_changed ) AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("rtc", mc146818_device, read, write, 0xffffffff) AM_RANGE(0x0080, 0x009f) AM_READWRITE8(dma_page_select_r,dma_page_select_w, 0xffffffff)//TODO AM_RANGE(0x00a0, 0x00bf) AM_DEVREADWRITE8("pic8259_2", pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x00c0, 0x00df) AM_READWRITE8(at_dma8237_2_r, at_dma8237_2_w, 0xffffffff) + AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("dma8237_2", am9517a_device, read, write, 0x00ff00ff) ADDRESS_MAP_END MACHINE_CONFIG_FRAGMENT(pcat_common) diff --git a/src/mame/machine/pcshare.h b/src/mame/machine/pcshare.h index 81d423ad1d0..b413d2bc42c 100644 --- a/src/mame/machine/pcshare.h +++ b/src/mame/machine/pcshare.h @@ -31,8 +31,6 @@ public: optional_device<mc146818_device> m_mc146818; required_device<kbdc8042_device> m_kbdc; - DECLARE_READ8_MEMBER(at_dma8237_2_r); - DECLARE_WRITE8_MEMBER(at_dma8237_2_w); DECLARE_WRITE_LINE_MEMBER(pc_dma_hrq_changed); DECLARE_READ8_MEMBER(pc_dma_read_byte); DECLARE_WRITE8_MEMBER(pc_dma_write_byte); |