diff options
Diffstat (limited to 'src/mame/drivers/vixen.cpp')
-rw-r--r-- | src/mame/drivers/vixen.cpp | 115 |
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); |