(MESS) compis: Refactored to use i80130, does not work yet. (nw)

This commit is contained in:
Curt Coder 2013-10-24 19:18:14 +00:00
parent 1e370f3e29
commit 141c1a7c69
2 changed files with 17 additions and 29 deletions

View File

@ -253,7 +253,7 @@ static ADDRESS_MAP_START( compis_mem, AS_PROGRAM, 16, compis_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x00000, 0x1ffff) AM_RAM
AM_RANGE(0x40000, 0x5ffff) AM_READWRITE8(vram_r, vram_w, 0xffff)
AM_RANGE(0x60000, 0x63fff) AM_MIRROR(0x1c000) AM_ROM AM_REGION(I80130_TAG, 0)
AM_RANGE(0x60000, 0x63fff) AM_MIRROR(0x1c000) AM_DEVICE(I80130_TAG, i80130_device, rom_map)
AM_RANGE(0xe0000, 0xeffff) AM_MIRROR(0x10000) AM_ROM AM_REGION(I80186_TAG, 0)
ADDRESS_MAP_END
@ -282,8 +282,7 @@ static ADDRESS_MAP_START( compis_io, AS_IO, 16, compis_state )
AM_RANGE(0x0100, 0x011f) /* PCS2 */ AM_MIRROR(0x60) AM_DEVREADWRITE8(MM58174A_TAG, mm58274c_device, read, write, 0x00ff)
//AM_RANGE(0x0180, 0x0181) /* PCS3 */ AM_MIRROR(0x7e)
//AM_RANGE(0x0200, 0x0201) /* PCS4 */ AM_MIRROR(0x7e)
AM_RANGE(0x0280, 0x0283) /* PCS5 */ AM_MIRROR(0x70) AM_DEVREADWRITE8("pic8259_master", pic8259_device, read, write, 0x00ff) /* 80130 */
AM_RANGE(0x0288, 0x028f) /* PCS5 */ AM_MIRROR(0x70) AM_DEVREADWRITE8("pit8254", pit8254_device, read, write, 0x00ff) /* 80130 */
AM_RANGE(0x0280, 0x028f) /* PCS5 */ AM_MIRROR(0x70) AM_DEVICE(I80130_TAG, i80130_device, io_map)
AM_RANGE(0x0300, 0x0301) /* PCS6:0 */ AM_MIRROR(0xe) AM_WRITE8(tape_mon_w, 0x00ff)
AM_RANGE(0x0310, 0x0311) /* PCS6:3 */ AM_MIRROR(0xc) AM_DEVREADWRITE8(I8251A_TAG, i8251_device, data_r, data_w, 0xff00)
AM_RANGE(0x0312, 0x0313) /* PCS6:3 */ AM_MIRROR(0xc) AM_DEVREADWRITE8(I8251A_TAG, i8251_device, status_r, control_w, 0xff00)
@ -478,7 +477,7 @@ static UPD7220_INTERFACE( hgdc_intf )
READ8_MEMBER( compis_state::compis_irq_callback )
{
return m_8259m->inta_r();
return m_osp->inta_r();
}
WRITE_LINE_MEMBER( compis_state::tmr0_w )
@ -509,15 +508,6 @@ WRITE_LINE_MEMBER( compis_state::tmr2_w )
m_uart->txc_w(state);
}
static const struct pit8253_interface osp_pit_intf =
{
{
{ XTAL_16MHz/2, DEVCB_LINE_VCC, DEVCB_NULL /*DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir3_w)*/ }, // SYSTICK
{ XTAL_16MHz/2, DEVCB_LINE_VCC, DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w) }, // DELAY
{ 7932659, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(compis_state, tmr2_w) } // BAUD
}
};
//-------------------------------------------------
// pit8253_interface pit_intf
@ -559,7 +549,7 @@ static const i8251_interface usart_intf =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir2_w),
DEVCB_DEVICE_LINE_MEMBER(I80130_TAG, i80130_device, ir2_w),
DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER(I80186_TAG, i80186_cpu_device, int1_w),
DEVCB_NULL,
DEVCB_NULL
@ -790,8 +780,10 @@ static MACHINE_CONFIG_START( compis, compis_state )
MCFG_UPD7220_ADD("upd7220", XTAL_4_433619MHz/2, hgdc_intf, upd7220_map) //unknown clock
// devices
MCFG_PIC8259_ADD("pic8259_master", DEVWRITELINE(I80186_TAG, i80186_cpu_device, int0_w), VCC, NULL ) // inside 80130
MCFG_PIT8254_ADD("pit8254", osp_pit_intf ) // inside 80130
MCFG_I80130_ADD(I80130_TAG, XTAL_16MHz/2, DEVWRITELINE(I80186_TAG, i80186_cpu_device, int0_w))
//MCFG_I80130_SYSTICK_CALLBACK(DEVWRITELINE(I80130_TAG, i80130_device, ir3_w))
MCFG_I80130_DELAY_CALLBACK(DEVWRITELINE(I80130_TAG, i80130_device, ir7_w))
MCFG_I80130_BAUD_CALLBACK(DEVWRITELINE(DEVICE_SELF, compis_state, tmr2_w))
MCFG_PIT8253_ADD(I8253_TAG, pit_intf )
MCFG_I8255_ADD(I8255_TAG, ppi_intf )
MCFG_I8251_ADD(I8251A_TAG, usart_intf)
@ -803,12 +795,12 @@ static MACHINE_CONFIG_START( compis, compis_state )
MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", compis_state, tape_tick, attotime::from_hz(44100))
MCFG_ISBX_SLOT_ADD(ISBX_0_TAG, 0, isbx_cards, "fdc")
MCFG_ISBX_SLOT_MINTR0_CALLBACK(DEVWRITELINE("pic8259_master", pic8259_device, ir1_w))
MCFG_ISBX_SLOT_MINTR1_CALLBACK(DEVWRITELINE("pic8259_master", pic8259_device, ir0_w))
MCFG_ISBX_SLOT_MINTR0_CALLBACK(DEVWRITELINE(I80130_TAG, i80130_device, ir1_w))
MCFG_ISBX_SLOT_MINTR1_CALLBACK(DEVWRITELINE(I80130_TAG, i80130_device, ir0_w))
MCFG_ISBX_SLOT_MDRQT_CALLBACK(DEVWRITELINE(I80186_TAG, i80186_cpu_device, drq0_w))
MCFG_ISBX_SLOT_ADD(ISBX_1_TAG, 0, isbx_cards, NULL)
MCFG_ISBX_SLOT_MINTR0_CALLBACK(DEVWRITELINE("pic8259_master", pic8259_device, ir6_w))
MCFG_ISBX_SLOT_MINTR1_CALLBACK(DEVWRITELINE("pic8259_master", pic8259_device, ir5_w))
MCFG_ISBX_SLOT_MINTR0_CALLBACK(DEVWRITELINE(I80130_TAG, i80130_device, ir6_w))
MCFG_ISBX_SLOT_MINTR1_CALLBACK(DEVWRITELINE(I80130_TAG, i80130_device, ir5_w))
MCFG_ISBX_SLOT_MDRQT_CALLBACK(DEVWRITELINE(I80186_TAG, i80186_cpu_device, drq1_w))
MCFG_COMPIS_KEYBOARD_ADD(NULL)
@ -867,9 +859,6 @@ ROM_START( compis )
ROM_SYSTEM_BIOS( 2, "v303", "Compis II v3.03 (1987-03-09)" )
ROMX_LOAD( "rysa094.u39", 0x0000, 0x8000, CRC(e7302bff) SHA1(44ea20ef4008849af036c1a945bc4f27431048fb), ROM_BIOS(3) | ROM_SKIP(1) )
ROMX_LOAD( "rysa094.u35", 0x0001, 0x8000, CRC(b0694026) SHA1(eb6b2e3cb0f42fd5ffdf44f70e652ecb9714ce30), ROM_BIOS(3) | ROM_SKIP(1) )
ROM_REGION16_LE( 0x4000, I80130_TAG, 0)
ROM_LOAD( "80130.ic15", 0x0000, 0x4000, NO_DUMP )
ROM_END
#define rom_compis2 rom_compis

View File

@ -23,6 +23,7 @@
#include "bus/centronics/ctronics.h"
#include "machine/i8251.h"
#include "machine/i8255.h"
#include "machine/i80130.h"
#include "machine/mm58274c.h"
#include "machine/pic8259.h"
#include "machine/pit8253.h"
@ -52,9 +53,8 @@ public:
compis_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, I80186_TAG),
m_8253(*this, I8253_TAG),
m_8254(*this, "pit8254"),
m_8259m(*this, "pic8259_master"),
m_osp(*this, I80130_TAG),
m_pit(*this, I8253_TAG),
m_ppi(*this, I8255_TAG),
m_mpsc(*this, I8274_TAG),
m_centronics(*this, CENTRONICS_TAG),
@ -70,9 +70,8 @@ public:
{ }
required_device<i80186_cpu_device> m_maincpu;
required_device<pit8253_device> m_8253;
required_device<pit8254_device> m_8254;
required_device<pic8259_device> m_8259m;
required_device<i80130_device> m_osp;
required_device<pit8253_device> m_pit;
required_device<i8255_device> m_ppi;
required_device<i8274_device> m_mpsc;
required_device<centronics_device> m_centronics;