diff options
Diffstat (limited to 'src/mame/drivers/victor9k.cpp')
-rw-r--r-- | src/mame/drivers/victor9k.cpp | 204 |
1 files changed, 103 insertions, 101 deletions
diff --git a/src/mame/drivers/victor9k.cpp b/src/mame/drivers/victor9k.cpp index 9ad6d577c79..8b460e58e8f 100644 --- a/src/mame/drivers/victor9k.cpp +++ b/src/mame/drivers/victor9k.cpp @@ -152,7 +152,7 @@ private: DECLARE_WRITE_LINE_MEMBER( mux_serial_b_w ); DECLARE_WRITE_LINE_MEMBER( mux_serial_a_w ); - DECLARE_PALETTE_INIT( victor9k ); + void palette_init(palette_device &palette); // video state int m_brt; @@ -608,7 +608,7 @@ WRITE_LINE_MEMBER( victor9k_state::fdc_irq_w ) // MACHINE INITIALIZATION //************************************************************************** -PALETTE_INIT_MEMBER(victor9k_state, victor9k) +void victor9k_state::palette_init(palette_device &palette) { palette.set_pen_color(0, rgb_t(0x00, 0x00, 0x00)); @@ -679,121 +679,123 @@ void victor9k_state::machine_reset() // MACHINE_CONFIG( victor9k ) //------------------------------------------------- -MACHINE_CONFIG_START(victor9k_state::victor9k) +void victor9k_state::victor9k(machine_config &config) +{ // basic machine hardware - MCFG_DEVICE_ADD(I8088_TAG, I8088, XTAL(30'000'000)/6) - MCFG_DEVICE_PROGRAM_MAP(victor9k_mem) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(I8259A_TAG, pic8259_device, inta_cb) + I8088(config, m_maincpu, XTAL(30'000'000)/6); + m_maincpu->set_addrmap(AS_PROGRAM, &victor9k_state::victor9k_mem); + m_maincpu->set_irq_acknowledge_callback(I8259A_TAG, FUNC(pic8259_device::inta_cb)); // video hardware - MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, RASTER, rgb_t::green()) - MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate - MCFG_SCREEN_UPDATE_DEVICE(HD46505S_TAG, hd6845_device, screen_update) - MCFG_SCREEN_SIZE(640, 480) - MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) - MCFG_PALETTE_ADD("palette", 16) - MCFG_PALETTE_INIT_OWNER(victor9k_state, victor9k) - - MCFG_MC6845_ADD(HD46505S_TAG, HD6845, SCREEN_TAG, XTAL(30'000'000)/10) // HD6845 == HD46505S - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(10) - MCFG_MC6845_UPDATE_ROW_CB(victor9k_state, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, victor9k_state, vert_w)) + screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER)); + screen.set_color(rgb_t::green()); + screen.set_refresh_hz(50); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate + screen.set_screen_update(HD46505S_TAG, FUNC(hd6845_device::screen_update)); + screen.set_size(640, 480); + screen.set_visarea(0, 640-1, 0, 480-1); + + PALETTE(config, m_palette, 16); + m_palette->set_init(FUNC(victor9k_state::palette_init)); + + HD6845(config, m_crtc, XTAL(30'000'000)/10); // HD6845 == HD46505S + m_crtc->set_screen(SCREEN_TAG); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(10); + m_crtc->set_update_row_callback(FUNC(victor9k_state::crtc_update_row), this); + m_crtc->out_vsync_callback().set(FUNC(victor9k_state::vert_w)); // sound hardware SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD(HC55516_TAG, HC55516, 0) + HC55516(config, m_cvsd, 0); //MCFG_HC55516_DIG_OUT_CB(WRITELINE(MC6852_TAG, mc6852_device, rx_w)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) + m_cvsd->add_route(ALL_OUTPUTS, "mono", 0.25); // devices - MCFG_IEEE488_BUS_ADD() - MCFG_IEEE488_DAV_CALLBACK(WRITELINE(M6522_1_TAG, via6522_device, write_pb0)) - MCFG_IEEE488_EOI_CALLBACK(WRITELINE(M6522_1_TAG, via6522_device, write_pb1)) - MCFG_IEEE488_REN_CALLBACK(WRITELINE(M6522_1_TAG, via6522_device, write_pb2)) - MCFG_IEEE488_ATN_CALLBACK(WRITELINE(M6522_1_TAG, via6522_device, write_pb3)) - MCFG_IEEE488_IFC_CALLBACK(WRITELINE(M6522_1_TAG, via6522_device, write_pb4)) - MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(M6522_1_TAG, via6522_device, write_pb5)) - MCFG_IEEE488_NRFD_CALLBACK(WRITELINE(*this, victor9k_state, write_nfrd)) - MCFG_IEEE488_NDAC_CALLBACK(WRITELINE(*this, victor9k_state, write_ndac)) - - MCFG_DEVICE_ADD(I8259A_TAG, PIC8259, 0) - MCFG_PIC8259_OUT_INT_CB(INPUTLINE(I8088_TAG, INPUT_LINE_IRQ0)) - - MCFG_DEVICE_ADD(I8253_TAG, PIT8253, 0) - MCFG_PIT8253_CLK0(2500000) - MCFG_PIT8253_OUT0_HANDLER(WRITELINE(*this, victor9k_state, mux_serial_b_w)) - MCFG_PIT8253_CLK1(2500000) - MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, victor9k_state, mux_serial_a_w)) - MCFG_PIT8253_CLK2(100000) - MCFG_PIT8253_OUT2_HANDLER(WRITELINE(I8259A_TAG, pic8259_device, ir2_w)) - - MCFG_DEVICE_ADD(UPD7201_TAG, UPD7201, XTAL(30'000'000)/30) - MCFG_Z80DART_OUT_TXDA_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) - MCFG_Z80DART_OUT_DTRA_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) - MCFG_Z80DART_OUT_RTSA_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) - MCFG_Z80DART_OUT_TXDB_CB(WRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) - MCFG_Z80DART_OUT_DTRB_CB(WRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) - MCFG_Z80DART_OUT_RTSB_CB(WRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) - MCFG_Z80DART_OUT_INT_CB(WRITELINE(I8259A_TAG, pic8259_device, ir1_w)) - - MCFG_DEVICE_ADD(MC6852_TAG, MC6852, XTAL(30'000'000)/30) - MCFG_MC6852_TX_DATA_CALLBACK(WRITELINE(HC55516_TAG, hc55516_device, digit_w)) - MCFG_MC6852_SM_DTR_CALLBACK(WRITELINE(*this, victor9k_state, ssda_sm_dtr_w)) - MCFG_MC6852_IRQ_CALLBACK(WRITELINE(*this, victor9k_state, ssda_irq_w)) - - MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL(30'000'000)/30) - MCFG_VIA6522_READPA_HANDLER(READ8(IEEE488_TAG, ieee488_device, dio_r)) - MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, victor9k_state, via1_pa_w)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, victor9k_state, via1_pb_w)) - MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, victor9k_state, codec_vol_w)) - MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, victor9k_state, via1_irq_w)) - - MCFG_DEVICE_ADD(M6522_2_TAG, VIA6522, XTAL(30'000'000)/30) - MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, victor9k_state, via2_pa_w)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, victor9k_state, via2_pb_w)) - MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, victor9k_state, via2_irq_w)) - - MCFG_DEVICE_ADD(M6522_3_TAG, VIA6522, XTAL(30'000'000)/30) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, victor9k_state, via3_pb_w)) - MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, victor9k_state, via3_irq_w)) - - MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(M6522_1_TAG, via6522_device, write_pb5)) - MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(M6522_1_TAG, via6522_device, write_pb6)) - MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(M6522_1_TAG, via6522_device, write_pb7)) - - MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(UPD7201_TAG, z80dart_device, rxa_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE(UPD7201_TAG, z80dart_device, dcda_w)) - MCFG_RS232_RI_HANDLER(WRITELINE(*this, victor9k_state, write_ria)) - MCFG_RS232_CTS_HANDLER(WRITELINE(UPD7201_TAG, z80dart_device, ctsa_w)) - MCFG_RS232_DSR_HANDLER(WRITELINE(M6522_2_TAG, via6522_device, write_pa3)) - - MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(UPD7201_TAG, z80dart_device, rxb_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE(UPD7201_TAG, z80dart_device, dcdb_w)) - MCFG_RS232_RI_HANDLER(WRITELINE(*this, victor9k_state, write_ria)) - MCFG_RS232_CTS_HANDLER(WRITELINE(UPD7201_TAG, z80dart_device, ctsb_w)) - MCFG_RS232_DSR_HANDLER(WRITELINE(M6522_2_TAG, via6522_device, write_pa5)) - - MCFG_DEVICE_ADD(KB_TAG, VICTOR9K_KEYBOARD, 0) - MCFG_VICTOR9K_KBRDY_HANDLER(WRITELINE(*this, victor9k_state, kbrdy_w)) - MCFG_VICTOR9K_KBDATA_HANDLER(WRITELINE(*this, victor9k_state, kbdata_w)) + IEEE488(config, m_ieee488, 0); + + m_ieee488->dav_callback().set(M6522_1_TAG, FUNC(via6522_device::write_pb0)); + m_ieee488->eoi_callback().set(M6522_1_TAG, FUNC(via6522_device::write_pb1)); + m_ieee488->ren_callback().set(M6522_1_TAG, FUNC(via6522_device::write_pb2)); + m_ieee488->atn_callback().set(M6522_1_TAG, FUNC(via6522_device::write_pb3)); + m_ieee488->ifc_callback().set(M6522_1_TAG, FUNC(via6522_device::write_pb4)); + m_ieee488->srq_callback().set(M6522_1_TAG, FUNC(via6522_device::write_pb5)); + m_ieee488->nrfd_callback().set(FUNC(victor9k_state::write_nfrd)); + m_ieee488->ndac_callback().set(FUNC(victor9k_state::write_ndac)); + + PIC8259(config, m_pic, 0); + m_pic->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + + pit8253_device &pit(PIT8253(config, I8253_TAG, 0)); + pit.set_clk<0>(2500000); + pit.out_handler<0>().set(FUNC(victor9k_state::mux_serial_b_w)); + pit.set_clk<1>(2500000); + pit.out_handler<1>().set(FUNC(victor9k_state::mux_serial_a_w)); + pit.set_clk<2>(100000); + pit.out_handler<2>().set(I8259A_TAG, FUNC(pic8259_device::ir2_w)); + + UPD7201(config, m_upd7201, XTAL(30'000'000)/30); + m_upd7201->out_txda_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd)); + m_upd7201->out_dtra_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_dtr)); + m_upd7201->out_rtsa_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_rts)); + m_upd7201->out_txdb_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd)); + m_upd7201->out_dtrb_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_dtr)); + m_upd7201->out_rtsb_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_rts)); + m_upd7201->out_int_callback().set(I8259A_TAG, FUNC(pic8259_device::ir1_w)); + + MC6852(config, m_ssda, XTAL(30'000'000)/30); + m_ssda->tx_data_callback().set(HC55516_TAG, FUNC(hc55516_device::digit_w)); + m_ssda->sm_dtr_callback().set(FUNC(victor9k_state::ssda_sm_dtr_w)); + m_ssda->irq_callback().set(FUNC(victor9k_state::ssda_irq_w)); + + VIA6522(config, m_via1, XTAL(30'000'000)/30); + m_via1->readpa_handler().set(IEEE488_TAG, FUNC(ieee488_device::dio_r)); + m_via1->writepa_handler().set(FUNC(victor9k_state::via1_pa_w)); + m_via1->writepb_handler().set(FUNC(victor9k_state::via1_pb_w)); + m_via1->cb2_handler().set(FUNC(victor9k_state::codec_vol_w)); + m_via1->irq_handler().set(FUNC(victor9k_state::via1_irq_w)); + + VIA6522(config, m_via2, XTAL(30'000'000)/30); + m_via2->writepa_handler().set(FUNC(victor9k_state::via2_pa_w)); + m_via2->writepb_handler().set(FUNC(victor9k_state::via2_pb_w)); + m_via2->irq_handler().set(FUNC(victor9k_state::via2_irq_w)); + + VIA6522(config, m_via3, XTAL(30'000'000)/30); + m_via3->writepb_handler().set(FUNC(victor9k_state::via3_pb_w)); + m_via3->irq_handler().set(FUNC(victor9k_state::via3_irq_w)); + + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->busy_handler().set(M6522_1_TAG, FUNC(via6522_device::write_pb5)); + m_centronics->ack_handler().set(M6522_1_TAG, FUNC(via6522_device::write_pb6)); + m_centronics->select_handler().set(M6522_1_TAG, FUNC(via6522_device::write_pb7)); + + RS232_PORT(config, m_rs232a, default_rs232_devices, nullptr); + m_rs232a->rxd_handler().set(UPD7201_TAG, FUNC(z80dart_device::rxa_w)); + m_rs232a->dcd_handler().set(UPD7201_TAG, FUNC(z80dart_device::dcda_w)); + m_rs232a->ri_handler().set(FUNC(victor9k_state::write_ria)); + m_rs232a->cts_handler().set(UPD7201_TAG, FUNC(z80dart_device::ctsa_w)); + m_rs232a->dsr_handler().set(M6522_2_TAG, FUNC(via6522_device::write_pa3)); + + RS232_PORT(config, m_rs232b, default_rs232_devices, nullptr); + m_rs232b->rxd_handler().set(UPD7201_TAG, FUNC(z80dart_device::rxb_w)); + m_rs232b->dcd_handler().set(UPD7201_TAG, FUNC(z80dart_device::dcdb_w)); + m_rs232b->ri_handler().set(FUNC(victor9k_state::write_ria)); + m_rs232b->cts_handler().set(UPD7201_TAG, FUNC(z80dart_device::ctsb_w)); + m_rs232b->dsr_handler().set(M6522_2_TAG, FUNC(via6522_device::write_pa5)); + + VICTOR9K_KEYBOARD(config, m_kb, 0); + m_kb->kbrdy_handler().set(FUNC(victor9k_state::kbrdy_w)); + m_kb->kbdata_handler().set(FUNC(victor9k_state::kbdata_w)); VICTOR_9000_FDC(config, m_fdc, 0); m_fdc->irq_wr_callback().set(FUNC(victor9k_state::fdc_irq_w)); m_fdc->syn_wr_callback().set(I8259A_TAG, FUNC(pic8259_device::ir0_w)).invert(); m_fdc->lbrdy_wr_callback().set_inputline(I8088_TAG, INPUT_LINE_TEST).invert(); - // internal ram - MCFG_RAM_ADD(RAM_TAG) - MCFG_RAM_DEFAULT_SIZE("128K") + RAM(config, m_ram).set_default_size("128K"); - // software list - MCFG_SOFTWARE_LIST_ADD("flop_list", "victor9k_flop") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "flop_list").set_type("victor9k_flop", SOFTWARE_LIST_ORIGINAL_SYSTEM); +} |