mirror of
https://github.com/holub/mame
synced 2025-04-23 17:00:53 +03:00
(MESS) compis: Cleanup. (nw)
This commit is contained in:
parent
e0ea005921
commit
a6e11de82f
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -7651,7 +7651,6 @@ src/mess/machine/cococart.c svneol=native#text/plain
|
||||
src/mess/machine/cococart.h svneol=native#text/plain
|
||||
src/mess/machine/coleco.c svneol=native#text/plain
|
||||
src/mess/machine/coleco.h svneol=native#text/plain
|
||||
src/mess/machine/compis.c svneol=native#text/plain
|
||||
src/mess/machine/compiskb.c svneol=native#text/plain
|
||||
src/mess/machine/compiskb.h svneol=native#text/plain
|
||||
src/mess/machine/comxpl80.c svneol=native#text/plain
|
||||
|
@ -41,16 +41,6 @@
|
||||
******************************************************************************/
|
||||
|
||||
#include "includes/compis.h"
|
||||
#include "formats/mfi_dsk.h"
|
||||
|
||||
UINT32 compis_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
bitmap.fill(RGB_BLACK, cliprect);
|
||||
|
||||
m_crtc->screen_update(screen, bitmap, cliprect);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels )
|
||||
{
|
||||
@ -58,7 +48,7 @@ static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels )
|
||||
UINT8 i,gfx = state->m_video_ram[address];
|
||||
|
||||
for(i=0; i<8; i++)
|
||||
bitmap.pix32(y, x + i) = RGB_MONOCHROME_GREEN_HIGHLIGHT[BIT((gfx >> i), 0)];
|
||||
bitmap.pix32(y, x + i) = RGB_MONOCHROME_GREEN_HIGHLIGHT[BIT(gfx,i )];
|
||||
}
|
||||
|
||||
static UPD7220_INTERFACE( hgdc_intf )
|
||||
@ -70,6 +60,14 @@ static UPD7220_INTERFACE( hgdc_intf )
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
||||
WRITE8_MEMBER( compis_state::tape_mon_w )
|
||||
{
|
||||
cassette_state state = BIT(data, 0) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED;
|
||||
|
||||
m_cassette->change_state(state, CASSETTE_MASK_MOTOR);
|
||||
}
|
||||
|
||||
READ16_MEMBER( compis_state::isbx0_tdma_r )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
@ -226,35 +224,52 @@ WRITE16_MEMBER( compis_state::isbx1_dack_w )
|
||||
}
|
||||
|
||||
|
||||
/* TODO: why it writes to ROM region? */
|
||||
WRITE8_MEMBER( compis_state::vram_w )
|
||||
READ8_MEMBER( compis_state::vram_r )
|
||||
{
|
||||
m_video_ram[offset+0x20000] = data;
|
||||
return m_video_ram[offset];
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( compis_mem , AS_PROGRAM, 16, compis_state )
|
||||
|
||||
WRITE8_MEMBER( compis_state::vram_w )
|
||||
{
|
||||
m_video_ram[offset] = data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// ADDRESS MAPS
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// ADDRESS_MAP( compis_mem )
|
||||
//-------------------------------------------------
|
||||
|
||||
static ADDRESS_MAP_START( compis_mem, AS_PROGRAM, 16, compis_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x00000, 0x3ffff) AM_RAM
|
||||
AM_RANGE(0x40000, 0x4ffff) AM_RAM
|
||||
AM_RANGE(0x50000, 0x5ffff) AM_RAM
|
||||
AM_RANGE(0x60000, 0x6ffff) AM_RAM
|
||||
AM_RANGE(0x70000, 0x7ffff) AM_RAM
|
||||
AM_RANGE(0xe8000, 0xeffff) AM_ROM AM_REGION("maincpu",0)
|
||||
AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("maincpu",0) AM_WRITE8(vram_w, 0xffff)
|
||||
AM_RANGE(0x00000, 0x1ffff) AM_RAM
|
||||
AM_RANGE(0x40000, 0x5ffff) AM_RAM AM_READWRITE8(vram_r, vram_w, 0xffff)
|
||||
AM_RANGE(0xe8000, 0xeffff) AM_ROM AM_REGION(I80186_TAG, 0)
|
||||
AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION(I80186_TAG, 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// ADDRESS_MAP( compis_io )
|
||||
//-------------------------------------------------
|
||||
|
||||
static ADDRESS_MAP_START( compis_io, AS_IO, 16, compis_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x0000, 0x0007) /* PCS0 */ AM_MIRROR(0x78) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0xff00)
|
||||
AM_RANGE(0x0080, 0x0087) /* PCS1 */ AM_MIRROR(0x78) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x0100, 0x011f) /* PCS2 */ AM_MIRROR(0x60) AM_DEVREADWRITE8("mm58274c", mm58274c_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x0000, 0x0007) /* PCS0 */ AM_MIRROR(0x78) AM_DEVREADWRITE8(I8255_TAG, i8255_device, read, write, 0xff00)
|
||||
AM_RANGE(0x0080, 0x0087) /* PCS1 */ AM_MIRROR(0x78) AM_DEVREADWRITE8(I8253_TAG, pit8253_device, read, write, 0x00ff)
|
||||
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) /* 80150/80130 */
|
||||
AM_RANGE(0x0288, 0x028f) /* PCS5 */ AM_MIRROR(0x70) AM_DEVREADWRITE8("pit8254", pit8254_device, read, write, 0x00ff) /* 80150/80130 */
|
||||
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("uart", i8251_device, data_r, data_w, 0xff00)
|
||||
AM_RANGE(0x0312, 0x0313) /* PCS6:3 */ AM_MIRROR(0xc) AM_DEVREADWRITE8("uart", i8251_device, status_r, control_w, 0xff00)
|
||||
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)
|
||||
AM_RANGE(0x0320, 0x032f) AM_READWRITE(isbx0_tdma_r, isbx0_tdma_w)
|
||||
AM_RANGE(0x0330, 0x033f) AM_READWRITE(isbx1_tdma_r, isbx1_tdma_w)
|
||||
AM_RANGE(0x0340, 0x034f) AM_READWRITE(isbx0_cs_r, isbx0_cs_w)
|
||||
@ -279,39 +294,200 @@ static ADDRESS_MAP_START( compis_io, AS_IO, 16, compis_state )
|
||||
#endif
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START (compis)
|
||||
|
||||
//-------------------------------------------------
|
||||
// ADDRESS_MAP( upd7220_map )
|
||||
//-------------------------------------------------
|
||||
|
||||
static ADDRESS_MAP_START( upd7220_map, AS_0, 8, compis_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x1ffff)
|
||||
AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_SHARE("video_ram")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// INPUT PORTS
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// INPUT_PORTS( compis )
|
||||
//-------------------------------------------------
|
||||
|
||||
static INPUT_PORTS_START( compis )
|
||||
PORT_START("DSW0")
|
||||
PORT_DIPNAME( 0x18, 0x00, "S8 Test mode")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Normal ) )
|
||||
PORT_DIPSETTING( 0x08, "Remote" )
|
||||
PORT_DIPSETTING( 0x10, "Stand alone" )
|
||||
PORT_DIPSETTING( 0x18, "Reserved" )
|
||||
|
||||
PORT_START("DSW1")
|
||||
PORT_DIPNAME( 0x01, 0x00, "iSBX-218A DMA")
|
||||
PORT_DIPSETTING( 0x01, "Enabled" )
|
||||
PORT_DIPSETTING( 0x00, "Disabled" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static const mm58274c_interface compis_mm58274c_interface =
|
||||
//**************************************************************************
|
||||
// DEVICE CONFIGURATION
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// I80186_INTERFACE( cpu_intf )
|
||||
//-------------------------------------------------
|
||||
|
||||
READ8_MEMBER( compis_state::compis_irq_callback )
|
||||
{
|
||||
0, /* mode 24*/
|
||||
1 /* first day of week */
|
||||
return m_8259m->inta_r();
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( compis_state::tmr0_w )
|
||||
{
|
||||
m_tmr0 = state;
|
||||
|
||||
m_cassette->output(m_tmr0 ? -1 : 1);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// I80130_INTERFACE( osp_intf )
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE_LINE_MEMBER( compis_state::tmr2_w )
|
||||
{
|
||||
m_uart->rxc_w(state);
|
||||
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
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cassette_interface compis_cassette_interface
|
||||
// pit8253_interface pit_intf
|
||||
//-------------------------------------------------
|
||||
|
||||
static const cassette_interface compis_cassette_interface =
|
||||
WRITE_LINE_MEMBER( compis_state::tmr3_w )
|
||||
{
|
||||
cassette_default_formats,
|
||||
NULL,
|
||||
(cassette_state)(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED),
|
||||
NULL,
|
||||
NULL
|
||||
m_mpsc->rxtxcb_w(state);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( compis_state::tmr4_w )
|
||||
{
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( compis_state::tmr5_w )
|
||||
{
|
||||
m_mpsc->rxca_w(state);
|
||||
m_mpsc->txca_w(state);
|
||||
}
|
||||
|
||||
static const struct pit8253_interface pit_intf =
|
||||
{
|
||||
{
|
||||
{ XTAL_16MHz/8, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(compis_state, tmr3_w) },
|
||||
{ XTAL_16MHz/8, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(compis_state, tmr4_w) },
|
||||
{ XTAL_16MHz/8, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(compis_state, tmr5_w) }
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// i8251_interface usart_intf
|
||||
//-------------------------------------------------
|
||||
|
||||
static const i8251_interface usart_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(COMPIS_KEYBOARD_TAG, compis_keyboard_device, so_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(COMPIS_KEYBOARD_TAG, compis_keyboard_device, si_w),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir2_w),
|
||||
DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER(I80186_TAG, i80186_cpu_device, int1_w),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// I8255A_INTERFACE( ppi_intf )
|
||||
//-------------------------------------------------
|
||||
|
||||
READ8_MEMBER( compis_state::ppi_pb_r )
|
||||
{
|
||||
/*
|
||||
|
||||
bit description
|
||||
|
||||
0 J5-4
|
||||
1 J5-5
|
||||
2 J6-3 Cassette read
|
||||
3 J2-6 DSR / S8-4 Test
|
||||
4 J4-6 DSR / S8-3 Test
|
||||
5 J7-11 Centronics BUSY
|
||||
6 J7-13 Centronics SELECT
|
||||
7 Tmr0
|
||||
|
||||
*/
|
||||
|
||||
UINT8 data = 0;
|
||||
|
||||
/* DIP switch - Test mode */
|
||||
data = ioport("DSW0")->read();
|
||||
|
||||
// cassette
|
||||
data |= (m_cassette->input() > 0.0) << 2;
|
||||
|
||||
/* Centronics busy */
|
||||
data |= m_centronics->busy_r() << 5;
|
||||
data |= m_centronics->vcc_r() << 6;
|
||||
|
||||
// TMR0
|
||||
data |= m_tmr0 << 7;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( compis_state::ppi_pc_w )
|
||||
{
|
||||
/*
|
||||
|
||||
bit description
|
||||
|
||||
0 J5-1
|
||||
1 J5-2
|
||||
2 Select: 1=time measure, DSR from J2/J4 pin 6. 0=read cassette
|
||||
3 Datex: Tristate datex output (low)
|
||||
4 V2-5 Floppy motor on/off
|
||||
5 J7-1 Centronics STROBE
|
||||
6 V2-4 Floppy Soft reset
|
||||
7 V2-3 Floppy Terminal count
|
||||
|
||||
*/
|
||||
|
||||
m_isbx0->opt1_w(BIT(data, 4));
|
||||
|
||||
m_centronics->strobe_w(BIT(data, 5));
|
||||
|
||||
if (BIT(data, 6))
|
||||
{
|
||||
m_isbx0->reset();
|
||||
}
|
||||
|
||||
m_isbx0->opt0_w(BIT(data, 7));
|
||||
}
|
||||
|
||||
static I8255A_INTERFACE( ppi_intf )
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_DEVICE_MEMBER(CENTRONICS_TAG, centronics_device, write),
|
||||
DEVCB_DRIVER_MEMBER(compis_state, ppi_pb_r),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_DRIVER_MEMBER(compis_state, ppi_pc_w)
|
||||
};
|
||||
|
||||
|
||||
@ -337,7 +513,18 @@ static I8274_INTERFACE( mpsc_intf )
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
|
||||
DEVCB_DEVICE_LINE_MEMBER("maincpu", i80186_cpu_device, int3_w)
|
||||
DEVCB_DEVICE_LINE_MEMBER(I80186_TAG, i80186_cpu_device, int3_w)
|
||||
};
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// mm58274c_interface rtc_intf
|
||||
//-------------------------------------------------
|
||||
|
||||
static const mm58274c_interface rtc_intf =
|
||||
{
|
||||
0, /* mode 24*/
|
||||
1 /* first day of week */
|
||||
};
|
||||
|
||||
|
||||
@ -368,119 +555,142 @@ static const rs232_port_interface rs232b_intf =
|
||||
DEVCB_DEVICE_LINE_MEMBER(I8274_TAG, z80dart_device, ctsb_w)
|
||||
};
|
||||
|
||||
static ADDRESS_MAP_START( upd7220_map, AS_0, 8, compis_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x3ffff)
|
||||
AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
//-------------------------------------------------
|
||||
// cassette_interface compis_cassette_interface
|
||||
//-------------------------------------------------
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( compis_state::tape_tick )
|
||||
{
|
||||
m_maincpu->tmrin0_w(m_cassette->input() > 0.0);
|
||||
}
|
||||
|
||||
static const cassette_interface compis_cassette_interface =
|
||||
{
|
||||
cassette_default_formats,
|
||||
NULL,
|
||||
(cassette_state)(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED),
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// MACHINE INITIALIZATION
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// machine_start
|
||||
//-------------------------------------------------
|
||||
|
||||
void compis_state::machine_start()
|
||||
{
|
||||
if (m_ram->size() == 256*1024)
|
||||
{
|
||||
m_maincpu->space(AS_PROGRAM).install_ram(0x20000, 0x3ffff, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// machine_reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void compis_state::machine_reset()
|
||||
{
|
||||
m_uart->reset();
|
||||
m_mpsc->reset();
|
||||
m_ppi->reset();
|
||||
m_isbx0->reset();
|
||||
m_isbx1->reset();
|
||||
}
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// MACHINE DRIVERS
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// MACHINE_CONFIG( compis )
|
||||
//-------------------------------------------------
|
||||
|
||||
static MACHINE_CONFIG_START( compis, compis_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", I80186, XTAL_16MHz)
|
||||
// basic machine hardware
|
||||
MCFG_CPU_ADD(I80186_TAG, I80186, XTAL_16MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(compis_mem)
|
||||
MCFG_CPU_IO_MAP(compis_io)
|
||||
MCFG_80186_IRQ_SLAVE_ACK(DEVREAD8(DEVICE_SELF, compis_state, compis_irq_callback))
|
||||
MCFG_80186_TMROUT0_HANDLER(DEVWRITELINE(DEVICE_SELF, compis_state, tmr0_w))
|
||||
|
||||
/* video hardware */
|
||||
// video hardware
|
||||
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(50)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
|
||||
MCFG_SCREEN_SIZE(640, 480)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
|
||||
MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update)
|
||||
|
||||
/* Devices */
|
||||
MCFG_PIT8253_ADD( "pit8253", compis_pit8253_config )
|
||||
MCFG_PIT8254_ADD( "pit8254", compis_pit8254_config )
|
||||
MCFG_PIC8259_ADD( "pic8259_master", DEVWRITELINE("maincpu", i80186_cpu_device, int0_w), VCC, NULL )
|
||||
MCFG_I8255_ADD( "ppi8255", compis_ppi_interface )
|
||||
MCFG_UPD7220_ADD("upd7220", XTAL_4_433619MHz/2, hgdc_intf, upd7220_map) //unknown clock
|
||||
MCFG_CENTRONICS_PRINTER_ADD("centronics", standard_centronics)
|
||||
MCFG_I8251_ADD("uart", compis_usart_interface)
|
||||
MCFG_MM58274C_ADD("mm58274c", compis_mm58274c_interface)
|
||||
MCFG_CASSETTE_ADD(CASSETTE_TAG, compis_cassette_interface)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", compis_state, tape_tick, attotime::from_hz(44100))
|
||||
MCFG_I8274_ADD(I8274_TAG, XTAL_16MHz/4, mpsc_intf)
|
||||
MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL)
|
||||
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL)
|
||||
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_MDRQT_CALLBACK(DEVWRITELINE("maincpu", 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_MDRQT_CALLBACK(DEVWRITELINE("maincpu", i80186_cpu_device, drq1_w))
|
||||
MCFG_COMPIS_KEYBOARD_ADD(NULL)
|
||||
|
||||
/* software lists */
|
||||
MCFG_SOFTWARE_LIST_ADD("flop_list", "compis")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( compis2, compis_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", I80186, XTAL_16MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(compis_mem)
|
||||
MCFG_CPU_IO_MAP(compis_io)
|
||||
MCFG_80186_IRQ_SLAVE_ACK(DEVREAD8(DEVICE_SELF, compis_state, compis_irq_callback))
|
||||
MCFG_80186_TMROUT0_HANDLER(DEVWRITELINE(DEVICE_SELF, compis_state, tmr0_w))
|
||||
|
||||
/* video hardware */
|
||||
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(50)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
|
||||
MCFG_SCREEN_SIZE(640, 400)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(compis_state, screen_update)
|
||||
|
||||
/* Devices */
|
||||
MCFG_PIT8253_ADD( "pit8253", compis_pit8253_config )
|
||||
MCFG_PIT8254_ADD( "pit8254", compis_pit8254_config )
|
||||
MCFG_PIC8259_ADD( "pic8259_master", DEVWRITELINE("maincpu", i80186_cpu_device, int0_w), VCC, NULL )
|
||||
MCFG_I8255_ADD( "ppi8255", compis_ppi_interface )
|
||||
MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update)
|
||||
MCFG_UPD7220_ADD("upd7220", XTAL_4_433619MHz/2, hgdc_intf, upd7220_map) //unknown clock
|
||||
MCFG_CENTRONICS_PRINTER_ADD("centronics", standard_centronics)
|
||||
MCFG_I8251_ADD("uart", compis_usart_interface)
|
||||
MCFG_MM58274C_ADD("mm58274c", compis_mm58274c_interface)
|
||||
MCFG_CASSETTE_ADD(CASSETTE_TAG, compis_cassette_interface)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", compis_state, tape_tick, attotime::from_hz(44100))
|
||||
|
||||
// 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_PIT8253_ADD(I8253_TAG, pit_intf )
|
||||
MCFG_I8255_ADD(I8255_TAG, ppi_intf )
|
||||
MCFG_I8251_ADD(I8251A_TAG, usart_intf)
|
||||
MCFG_I8274_ADD(I8274_TAG, XTAL_16MHz/4, mpsc_intf)
|
||||
MCFG_MM58274C_ADD(MM58174A_TAG, rtc_intf)
|
||||
MCFG_CASSETTE_ADD(CASSETTE_TAG, compis_cassette_interface)
|
||||
MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL)
|
||||
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL)
|
||||
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_MDRQT_CALLBACK(DEVWRITELINE("maincpu", i80186_cpu_device, drq0_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_MDRQT_CALLBACK(DEVWRITELINE("maincpu", i80186_cpu_device, drq1_w))
|
||||
MCFG_ISBX_SLOT_MDRQT_CALLBACK(DEVWRITELINE(I80186_TAG, i80186_cpu_device, drq1_w))
|
||||
MCFG_COMPIS_KEYBOARD_ADD(NULL)
|
||||
|
||||
/* software lists */
|
||||
// software lists
|
||||
MCFG_SOFTWARE_LIST_ADD("flop_list", "compis")
|
||||
|
||||
// internal ram
|
||||
MCFG_RAM_ADD(RAM_TAG)
|
||||
MCFG_RAM_DEFAULT_SIZE("128K")
|
||||
MCFG_RAM_EXTRA_OPTIONS("256K")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
//**************************************************************************
|
||||
// ROMS
|
||||
//**************************************************************************
|
||||
|
||||
Game driver(s)
|
||||
|
||||
***************************************************************************/
|
||||
//-------------------------------------------------
|
||||
// ROM( compis )
|
||||
//-------------------------------------------------
|
||||
|
||||
ROM_START( compis )
|
||||
ROM_REGION16_LE( 0x10000, "maincpu", 0 )
|
||||
ROM_REGION16_LE( 0x10000, I80186_TAG, 0 )
|
||||
ROM_LOAD16_BYTE( "sa883003.u40", 0x0000, 0x4000, CRC(195ef6bf) SHA1(eaf8ae897e1a4b62d3038ff23777ce8741b766ef) )
|
||||
ROM_LOAD16_BYTE( "sa883003.u36", 0x0001, 0x4000, CRC(7c918f56) SHA1(8ba33d206351c52f44f1aa76cc4d7f292dcef761) )
|
||||
ROM_LOAD16_BYTE( "sa883003.u39", 0x8000, 0x4000, CRC(3cca66db) SHA1(cac36c9caa2f5bb42d7a6d5b84f419318628935f) )
|
||||
ROM_LOAD16_BYTE( "sa883003.u35", 0x8001, 0x4000, CRC(43c38e76) SHA1(f32e43604107def2c2259898926d090f2ed62104) )
|
||||
ROM_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// ROM( compis2 )
|
||||
//-------------------------------------------------
|
||||
|
||||
ROM_START( compis2 )
|
||||
ROM_REGION16_LE( 0x10000, "maincpu", 0 )
|
||||
ROM_REGION16_LE( 0x10000, I80186_TAG, 0 )
|
||||
ROM_DEFAULT_BIOS( "v303" )
|
||||
|
||||
ROM_SYSTEM_BIOS( 0, "v302", "Compis II v3.02 (1986-09-09)" )
|
||||
@ -492,6 +702,12 @@ ROM_START( compis2 )
|
||||
ROMX_LOAD( "rysa094.u35", 0x0001, 0x8000, CRC(b0694026) SHA1(eb6b2e3cb0f42fd5ffdf44f70e652ecb9714ce30), ROM_BIOS(2) | ROM_SKIP(1) )
|
||||
ROM_END
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// SYSTEM DRIVERS
|
||||
//**************************************************************************
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
|
||||
COMP(1985, compis, 0, 0, compis, compis, driver_device, 0, "Telenova", "Compis" , GAME_NOT_WORKING )
|
||||
COMP(1986, compis2, compis, 0, compis2, compis, driver_device, 0, "Telenova", "Compis II" , GAME_NOT_WORKING )
|
||||
COMP(1986, compis2, compis, 0, compis, compis, driver_device, 0, "Telenova", "Compis II" , GAME_NOT_WORKING )
|
||||
|
@ -9,8 +9,10 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef COMPIS_H_
|
||||
#define COMPIS_H_
|
||||
#pragma once
|
||||
|
||||
#ifndef __COMPIS__
|
||||
#define __COMPIS__
|
||||
|
||||
#include "emu.h"
|
||||
#include "bus/isbx/isbx.h"
|
||||
@ -24,35 +26,45 @@
|
||||
#include "machine/mm58274c.h"
|
||||
#include "machine/pic8259.h"
|
||||
#include "machine/pit8253.h"
|
||||
#include "machine/ram.h"
|
||||
#include "machine/serial.h"
|
||||
#include "machine/z80dart.h"
|
||||
#include "video/upd7220.h"
|
||||
|
||||
#define I80186_TAG "ic1"
|
||||
#define I80130_TAG "ic15"
|
||||
#define I8251A_TAG "ic59"
|
||||
#define I8253_TAG "ic60"
|
||||
#define I8274_TAG "ic65"
|
||||
#define MM58174A_TAG "ic66"
|
||||
#define I8255_TAG "ic69"
|
||||
#define RS232_A_TAG "rs232a"
|
||||
#define RS232_B_TAG "rs232b"
|
||||
#define CASSETTE_TAG "cassette"
|
||||
#define CENTRONICS_TAG "centronics"
|
||||
#define ISBX_0_TAG "isbx0"
|
||||
#define ISBX_1_TAG "isbx1"
|
||||
#define SCREEN_TAG "screen"
|
||||
|
||||
class compis_state : public driver_device
|
||||
{
|
||||
public:
|
||||
compis_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_8253(*this, "pit8253"),
|
||||
m_maincpu(*this, I80186_TAG),
|
||||
m_8253(*this, I8253_TAG),
|
||||
m_8254(*this, "pit8254"),
|
||||
m_8259m(*this, "pic8259_master"),
|
||||
m_8255(*this, "ppi8255"),
|
||||
m_ppi(*this, I8255_TAG),
|
||||
m_mpsc(*this, I8274_TAG),
|
||||
m_centronics(*this, "centronics"),
|
||||
m_uart(*this, "uart"),
|
||||
m_rtc(*this, "mm58274c"),
|
||||
m_centronics(*this, CENTRONICS_TAG),
|
||||
m_uart(*this, I8251A_TAG),
|
||||
m_rtc(*this, MM58174A_TAG),
|
||||
m_crtc(*this, "upd7220"),
|
||||
m_cassette(*this, CASSETTE_TAG),
|
||||
m_isbx0(*this, ISBX_0_TAG),
|
||||
m_isbx1(*this, ISBX_1_TAG),
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_video_ram(*this, "video_ram")
|
||||
{ }
|
||||
|
||||
@ -60,7 +72,7 @@ public:
|
||||
required_device<pit8253_device> m_8253;
|
||||
required_device<pit8254_device> m_8254;
|
||||
required_device<pic8259_device> m_8259m;
|
||||
required_device<i8255_device> m_8255;
|
||||
required_device<i8255_device> m_ppi;
|
||||
required_device<i8274_device> m_mpsc;
|
||||
required_device<centronics_device> m_centronics;
|
||||
required_device<i8251_device> m_uart;
|
||||
@ -69,7 +81,13 @@ public:
|
||||
required_device<cassette_image_device> m_cassette;
|
||||
required_device<isbx_slot_device> m_isbx0;
|
||||
required_device<isbx_slot_device> m_isbx1;
|
||||
required_device<ram_device> m_ram;
|
||||
required_shared_ptr<UINT8> m_video_ram;
|
||||
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
|
||||
DECLARE_WRITE8_MEMBER( tape_mon_w );
|
||||
DECLARE_READ16_MEMBER( isbx0_tdma_r );
|
||||
DECLARE_WRITE16_MEMBER( isbx0_tdma_w );
|
||||
DECLARE_READ16_MEMBER( isbx1_tdma_r );
|
||||
@ -82,37 +100,26 @@ public:
|
||||
DECLARE_WRITE16_MEMBER( isbx1_cs_w );
|
||||
DECLARE_READ16_MEMBER( isbx1_dack_r );
|
||||
DECLARE_WRITE16_MEMBER( isbx1_dack_w );
|
||||
DECLARE_READ8_MEMBER( vram_r );
|
||||
DECLARE_WRITE8_MEMBER( vram_w );
|
||||
|
||||
DECLARE_WRITE8_MEMBER(vram_w);
|
||||
DECLARE_READ8_MEMBER(compis_ppi_port_b_r);
|
||||
DECLARE_WRITE8_MEMBER(compis_ppi_port_c_w);
|
||||
UINT8 *m_p_videoram;
|
||||
DECLARE_WRITE_LINE_MEMBER(tmr0_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(tmr2_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(tmr3_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(tmr4_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(tmr5_w);
|
||||
DECLARE_WRITE8_MEMBER(tape_mon_w);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(tape_tick);
|
||||
DECLARE_READ8_MEMBER( compis_irq_callback );
|
||||
|
||||
void fdc_irq(bool state);
|
||||
void fdc_drq(bool state);
|
||||
DECLARE_READ8_MEMBER( ppi_pb_r );
|
||||
DECLARE_WRITE8_MEMBER( ppi_pc_w );
|
||||
|
||||
required_shared_ptr<UINT8> m_video_ram;
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
DECLARE_READ8_MEMBER(compis_irq_callback);
|
||||
DECLARE_WRITE_LINE_MEMBER( tmr0_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( tmr2_w );
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( tmr3_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( tmr4_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( tmr5_w );
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( tape_tick );
|
||||
|
||||
int m_tmr0;
|
||||
};
|
||||
|
||||
|
||||
/*----------- defined in machine/compis.c -----------*/
|
||||
|
||||
extern const i8255_interface compis_ppi_interface;
|
||||
extern const struct pit8253_interface compis_pit8253_config;
|
||||
extern const struct pit8253_interface compis_pit8254_config;
|
||||
extern const i8251_interface compis_usart_interface;
|
||||
|
||||
#endif /* COMPIS_H_ */
|
||||
#endif
|
||||
|
@ -1,198 +0,0 @@
|
||||
/******************************************************************************
|
||||
|
||||
compis.c
|
||||
machine driver
|
||||
|
||||
Per Ola Ingvarsson
|
||||
Tomas Karlsson
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* Include files */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
#include "includes/compis.h"
|
||||
|
||||
/* Main emulation */
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* Bit 0: J5-4 */
|
||||
/* Bit 1: J5-5 */
|
||||
/* Bit 2: J6-3 Cassette read */
|
||||
/* Bit 3: J2-6 DSR / S8-4 Test */
|
||||
/* Bit 4: J4-6 DSR / S8-3 Test */
|
||||
/* Bit 5: J7-11 Centronics BUSY */
|
||||
/* Bit 6: J7-13 Centronics SELECT */
|
||||
/* Bit 7: Tmr0 */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
READ8_MEMBER( compis_state::compis_ppi_port_b_r )
|
||||
{
|
||||
UINT8 data;
|
||||
|
||||
/* DIP switch - Test mode */
|
||||
data = ioport("DSW0")->read();
|
||||
|
||||
// cassette
|
||||
data |= (m_cassette->input() > 0.0) << 2;
|
||||
|
||||
/* Centronics busy */
|
||||
data |= m_centronics->busy_r() << 5;
|
||||
data |= m_centronics->vcc_r() << 6;
|
||||
|
||||
// TMR0
|
||||
data |= m_tmr0 << 7;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* Bit 0: J5-1 */
|
||||
/* Bit 1: J5-2 */
|
||||
/* Bit 2: Select: 1=time measure, DSR from J2/J4 pin 6. 0=read cassette */
|
||||
/* Bit 3: Datex: Tristate datex output (low) */
|
||||
/* Bit 4: V2-5 Floppy motor on/off */
|
||||
/* Bit 5: J7-1 Centronics STROBE */
|
||||
/* Bit 6: V2-4 Floppy Soft reset */
|
||||
/* Bit 7: V2-3 Floppy Terminal count */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
WRITE8_MEMBER( compis_state::compis_ppi_port_c_w )
|
||||
{
|
||||
m_isbx0->opt1_w(BIT(data, 4));
|
||||
|
||||
m_centronics->strobe_w(BIT(data, 5));
|
||||
|
||||
if (BIT(data, 6))
|
||||
m_isbx0->reset();
|
||||
|
||||
m_isbx0->opt0_w(BIT(data, 7));
|
||||
}
|
||||
|
||||
I8255A_INTERFACE( compis_ppi_interface )
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_DEVICE_MEMBER("centronics", centronics_device, write),
|
||||
DEVCB_DRIVER_MEMBER(compis_state, compis_ppi_port_b_r),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_DRIVER_MEMBER(compis_state, compis_ppi_port_c_w)
|
||||
};
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* PIT 8253 */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
WRITE_LINE_MEMBER( compis_state::tmr3_w )
|
||||
{
|
||||
m_mpsc->rxtxcb_w(state);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( compis_state::tmr4_w )
|
||||
{
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( compis_state::tmr5_w )
|
||||
{
|
||||
m_mpsc->rxca_w(state);
|
||||
m_mpsc->txca_w(state);
|
||||
}
|
||||
|
||||
const struct pit8253_interface compis_pit8253_config =
|
||||
{
|
||||
{
|
||||
/* Timer0 */
|
||||
{XTAL_16MHz/8, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(compis_state, tmr3_w) },
|
||||
/* Timer1 */
|
||||
{XTAL_16MHz/8, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(compis_state, tmr4_w) },
|
||||
/* Timer2 */
|
||||
{XTAL_16MHz/8, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(compis_state, tmr5_w) }
|
||||
}
|
||||
};
|
||||
|
||||
WRITE_LINE_MEMBER( compis_state::tmr2_w )
|
||||
{
|
||||
m_uart->rxc_w(state);
|
||||
m_uart->txc_w(state);
|
||||
}
|
||||
|
||||
const struct pit8253_interface compis_pit8254_config =
|
||||
{
|
||||
{
|
||||
/* Timer0 */
|
||||
{XTAL_16MHz/2, DEVCB_LINE_VCC, DEVCB_NULL /*DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir3_w)*/ }, // SYSTICK
|
||||
/* Timer1 */
|
||||
{XTAL_16MHz/2, DEVCB_LINE_VCC, DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w) }, // DELAY
|
||||
/* Timer2 */
|
||||
{7932659, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(compis_state, tmr2_w) } // BAUD
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* USART 8251 */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
const i8251_interface compis_usart_interface=
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(COMPIS_KEYBOARD_TAG, compis_keyboard_device, so_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(COMPIS_KEYBOARD_TAG, compis_keyboard_device, si_w),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir2_w),
|
||||
DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER("maincpu", i80186_cpu_device, int1_w),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* Name: compis */
|
||||
/* Desc: Driver - Init */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
/*************************************************************
|
||||
*
|
||||
* pic8259 configuration
|
||||
*
|
||||
*************************************************************/
|
||||
|
||||
READ8_MEMBER(compis_state::compis_irq_callback)
|
||||
{
|
||||
return m_8259m->inta_r();
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( compis_state::tmr0_w )
|
||||
{
|
||||
m_tmr0 = state;
|
||||
|
||||
m_cassette->output(m_tmr0 ? -1 : 1);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( compis_state::tape_mon_w )
|
||||
{
|
||||
cassette_state state = BIT(data, 0) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED;
|
||||
|
||||
m_cassette->change_state(state, CASSETTE_MASK_MOTOR);
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( compis_state::tape_tick )
|
||||
{
|
||||
m_maincpu->tmrin0_w(m_cassette->input() > 0.0);
|
||||
}
|
||||
|
||||
void compis_state::machine_start()
|
||||
{
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* Name: compis */
|
||||
/* Desc: Machine - Init */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
void compis_state::machine_reset()
|
||||
{
|
||||
m_uart->reset();
|
||||
m_mpsc->reset();
|
||||
m_8255->reset();
|
||||
m_isbx0->reset();
|
||||
m_isbx1->reset();
|
||||
}
|
@ -1900,7 +1900,6 @@ $(MESSOBJ)/tektroni.a: \
|
||||
|
||||
$(MESSOBJ)/telenova.a: \
|
||||
$(MESS_DRIVERS)/compis.o \
|
||||
$(MESS_MACHINE)/compis.o \
|
||||
$(MESS_MACHINE)/compiskb.o \
|
||||
|
||||
$(MESSOBJ)/telercas.a: \
|
||||
|
Loading…
Reference in New Issue
Block a user