summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/vixen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/vixen.cpp')
-rw-r--r--src/mame/drivers/vixen.cpp115
1 files changed, 23 insertions, 92 deletions
diff --git a/src/mame/drivers/vixen.cpp b/src/mame/drivers/vixen.cpp
index 91ac5b72c39..8ef4f63ca30 100644
--- a/src/mame/drivers/vixen.cpp
+++ b/src/mame/drivers/vixen.cpp
@@ -65,10 +65,6 @@ Notes:
// INTERRUPTS
//**************************************************************************
-//-------------------------------------------------
-// update_interrupt -
-//-------------------------------------------------
-
void vixen_state::update_interrupt()
{
int state = (m_cmd_d1 && m_fdint) || m_vsync;// || (!m_enb_srq_int && !m_srq) || (!m_enb_atn_int && !m_atn) || (!m_enb_xmt_int && m_txrdy) || (!m_enb_rcv_int && m_rxrdy);
@@ -91,10 +87,6 @@ READ8_MEMBER( vixen_state::oprom_r )
return m_rom[offset];
}
-//-------------------------------------------------
-// status_r - status read
-//-------------------------------------------------
-
READ8_MEMBER( vixen_state::status_r )
{
/*
@@ -126,11 +118,6 @@ READ8_MEMBER( vixen_state::status_r )
return data;
}
-
-//-------------------------------------------------
-// cmd_w - command write
-//-------------------------------------------------
-
WRITE8_MEMBER( vixen_state::cmd_w )
{
/*
@@ -165,11 +152,6 @@ WRITE8_MEMBER( vixen_state::cmd_w )
update_interrupt();
}
-
-//-------------------------------------------------
-// ieee488_r - IEEE488 bus read
-//-------------------------------------------------
-
READ8_MEMBER( vixen_state::ieee488_r )
{
/*
@@ -255,10 +237,6 @@ READ8_MEMBER( vixen_state::port3_r )
// ADDRESS MAPS
//**************************************************************************
-//-------------------------------------------------
-// ADDRESS_MAP( vixen_mem )
-//-------------------------------------------------
-
// when M1 is inactive: read and write of data
void vixen_state::vixen_mem(address_map &map)
{
@@ -275,23 +253,18 @@ void vixen_state::bios_mem(address_map &map)
map(0xf000, 0xffff).r(FUNC(vixen_state::oprom_r));
}
-
-//-------------------------------------------------
-// ADDRESS_MAP( vixen_io )
-//-------------------------------------------------
-
void vixen_state::vixen_io(address_map &map)
{
map.unmap_value_high();
map.global_mask(0xff);
map(0x00, 0x03).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write));
map(0x04, 0x04).mirror(0x03).rw(FUNC(vixen_state::status_r), FUNC(vixen_state::cmd_w));
- map(0x08, 0x08).mirror(0x01).rw(P8155H_TAG, FUNC(i8155_device::read), FUNC(i8155_device::write));
+ map(0x08, 0x08).mirror(0x01).rw(P8155H_TAG, FUNC(i8155_device::data_r), FUNC(i8155_device::data_w));
map(0x0c, 0x0d).w(P8155H_TAG, FUNC(i8155_device::ale_w));
map(0x10, 0x10).mirror(0x07).r(m_ieee488, FUNC(ieee488_device::dio_r));
map(0x18, 0x18).mirror(0x07).r(FUNC(vixen_state::ieee488_r));
map(0x20, 0x21).mirror(0x04).w(m_io_i8155, FUNC(i8155_device::ale_w));
- map(0x28, 0x28).mirror(0x05).rw(m_io_i8155, FUNC(i8155_device::read), FUNC(i8155_device::write));
+ map(0x28, 0x28).mirror(0x05).rw(m_io_i8155, FUNC(i8155_device::data_r), FUNC(i8155_device::data_w));
map(0x30, 0x31).mirror(0x06).rw(m_usart, FUNC(i8251_device::read), FUNC(i8251_device::write));
map(0x38, 0x38).mirror(0x07).r(FUNC(vixen_state::port3_r));
// AM_RANGE(0xf0, 0xff) Hard Disk?
@@ -303,10 +276,6 @@ void vixen_state::vixen_io(address_map &map)
// INPUT PORTS
//**************************************************************************
-//-------------------------------------------------
-// INPUT_PORTS( vixen )
-//-------------------------------------------------
-
INPUT_PORTS_START( vixen )
PORT_START("KEY.0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(0x1B)
@@ -395,10 +364,6 @@ INPUT_PORTS_END
// VIDEO
//**************************************************************************
-//-------------------------------------------------
-// TIMER_DEVICE_CALLBACK_MEMBER( vsync_tick )
-//-------------------------------------------------
-
TIMER_DEVICE_CALLBACK_MEMBER(vixen_state::vsync_tick)
{
if (m_cmd_d0)
@@ -408,7 +373,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(vixen_state::vsync_tick)
}
}
-
void vixen_state::video_start()
{
// register for state saving
@@ -417,11 +381,6 @@ void vixen_state::video_start()
save_item(NAME(m_vsync));
}
-
-//-------------------------------------------------
-// SCREEN_UPDATE( vixen )
-//-------------------------------------------------
-
uint32_t vixen_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
const pen_t *pen = m_palette->pens();
@@ -481,10 +440,6 @@ uint32_t vixen_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
// SOUND
//**************************************************************************
-//-------------------------------------------------
-// DISCRETE_SOUND( vixen )
-//-------------------------------------------------
-
static DISCRETE_SOUND_START( vixen_discrete )
DISCRETE_INPUT_LOGIC(NODE_01)
DISCRETE_SQUAREWAVE(NODE_02, NODE_01, (23.9616_MHz_XTAL / 15360).dvalue(), 100, 50, 0, 90)
@@ -651,7 +606,7 @@ WRITE_LINE_MEMBER( vixen_state::txrdy_w )
}
//-------------------------------------------------
-// IEEE488_INTERFACE( ieee488_intf )
+// IEEE488 interface
//-------------------------------------------------
WRITE_LINE_MEMBER( vixen_state::srq_w )
@@ -683,21 +638,12 @@ WRITE_LINE_MEMBER( vixen_state::fdc_intrq_w )
// MACHINE INITIALIZATION
//**************************************************************************
-//-------------------------------------------------
-// IRQ_CALLBACK_MEMBER( vixen_int_ack )
-//-------------------------------------------------
-
IRQ_CALLBACK_MEMBER(vixen_state::vixen_int_ack)
{
// D0 is pulled low
return 0xfe;
}
-
-//-------------------------------------------------
-// MACHINE_START( vixen )
-//-------------------------------------------------
-
void vixen_state::machine_start()
{
// configure memory banking
@@ -714,7 +660,6 @@ void vixen_state::machine_start()
save_item(NAME(m_fdint));
}
-
void vixen_state::machine_reset()
{
membank("bank3")->set_entry(1);
@@ -736,31 +681,28 @@ void vixen_state::machine_reset()
// MACHINE CONFIGURATION
//**************************************************************************
-//-------------------------------------------------
-// MACHINE_CONFIG( vixen )
-//-------------------------------------------------
-
-MACHINE_CONFIG_START(vixen_state::vixen)
+void vixen_state::vixen(machine_config &config)
+{
// basic machine hardware
- MCFG_DEVICE_ADD(m_maincpu, Z80, 23.9616_MHz_XTAL / 6)
- MCFG_DEVICE_PROGRAM_MAP(vixen_mem)
- MCFG_DEVICE_OPCODES_MAP(bios_mem)
- MCFG_DEVICE_IO_MAP(vixen_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(vixen_state,vixen_int_ack)
+ Z80(config, m_maincpu, 23.9616_MHz_XTAL / 6);
+ m_maincpu->set_addrmap(AS_PROGRAM, &vixen_state::vixen_mem);
+ m_maincpu->set_addrmap(AS_OPCODES, &vixen_state::bios_mem);
+ m_maincpu->set_addrmap(AS_IO, &vixen_state::vixen_io);
+ m_maincpu->set_irq_acknowledge_callback(FUNC(vixen_state::vixen_int_ack));
// video hardware
- MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, RASTER, rgb_t::amber())
- MCFG_SCREEN_UPDATE_DRIVER(vixen_state, screen_update)
- MCFG_SCREEN_RAW_PARAMS(23.9616_MHz_XTAL / 2, 96*8, 0*8, 81*8, 27*10, 0*10, 26*10)
+ screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
+ screen.set_color(rgb_t::amber());
+ screen.set_screen_update(FUNC(vixen_state::screen_update));
+ screen.set_raw(23.9616_MHz_XTAL / 2, 96*8, 0*8, 81*8, 27*10, 0*10, 26*10);
- MCFG_TIMER_DRIVER_ADD_SCANLINE("vsync", vixen_state, vsync_tick, SCREEN_TAG, 26*10, 27*10)
+ TIMER(config, "vsync").configure_scanline(FUNC(vixen_state::vsync_tick), SCREEN_TAG, 26*10, 27*10);
PALETTE(config, m_palette, palette_device::MONOCHROME);
// sound hardware
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD(DISCRETE_TAG, DISCRETE, vixen_discrete)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
+ DISCRETE(config, DISCRETE_TAG, vixen_discrete).add_route(ALL_OUTPUTS, "mono", 0.20);
// devices
i8155_device &i8155(I8155(config, P8155H_TAG, 23.9616_MHz_XTAL / 6));
@@ -787,20 +729,18 @@ MACHINE_CONFIG_START(vixen_state::vixen)
FD1797(config, m_fdc, 23.9616_MHz_XTAL / 24);
m_fdc->intrq_wr_callback().set(FUNC(vixen_state::fdc_intrq_w));
- MCFG_FLOPPY_DRIVE_ADD(FDC1797_TAG":0", vixen_floppies, "525dd", floppy_image_device::default_floppy_formats)
- MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_FLOPPY_DRIVE_ADD(FDC1797_TAG":1", vixen_floppies, "525dd", floppy_image_device::default_floppy_formats)
- MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_IEEE488_BUS_ADD()
- MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(*this, vixen_state, srq_w))
- MCFG_IEEE488_ATN_CALLBACK(WRITELINE(*this, vixen_state, atn_w))
+ FLOPPY_CONNECTOR(config, FDC1797_TAG":0", vixen_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ FLOPPY_CONNECTOR(config, FDC1797_TAG":1", vixen_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ IEEE488(config, m_ieee488);
+ m_ieee488->srq_callback().set(FUNC(vixen_state::srq_w));
+ m_ieee488->atn_callback().set(FUNC(vixen_state::atn_w));
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("disk_list", "vixen")
+ SOFTWARE_LIST(config, "disk_list").set_original("vixen");
// internal ram
RAM(config, RAM_TAG).set_default_size("64K");
-MACHINE_CONFIG_END
+}
@@ -808,10 +748,6 @@ MACHINE_CONFIG_END
// ROMS
//**************************************************************************
-//-------------------------------------------------
-// ROM( vixen )
-//-------------------------------------------------
-
ROM_START( vixen )
ROM_REGION( 0x1000, Z8400A_TAG, 0 )
ROM_LOAD( "osborne 4 mon rom v1.04 3p40082-03 a0a9.4c", 0x0000, 0x1000, CRC(5f1038ce) SHA1(e6809fac23650bbb4689e58edc768d917d80a2df) ) // OSBORNE 4 MON ROM / V1.04 3P40082-03 / A0A9 (c) OCC 1985
@@ -829,11 +765,6 @@ ROM_END
// DRIVER INITIALIZATION
//**************************************************************************
-//-------------------------------------------------
-// DRIVER_INIT( vixen )
-//-------------------------------------------------
-
-
void vixen_state::init_vixen()
{
m_program = &m_maincpu->space(AS_PROGRAM);