pcat_dyn: "I/O BOARD FAILURE" (nw)

This commit is contained in:
cracyc 2016-03-05 21:37:26 -06:00
parent 2a02284ac1
commit 7e2777df2a
4 changed files with 46 additions and 37 deletions

View File

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

View File

@ -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) { }
: pcat_base_state(mconfig, type, tag)
, m_bank1(*this, "bank1")
, m_bank2(*this, "bank2"){ }
DECLARE_DRIVER_INIT(pcat_dyn);
virtual void machine_start() override;
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 )

View File

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

View File

@ -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);