summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/victor9k.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/victor9k.cpp')
-rw-r--r--src/mame/drivers/victor9k.cpp811
1 files changed, 0 insertions, 811 deletions
diff --git a/src/mame/drivers/victor9k.cpp b/src/mame/drivers/victor9k.cpp
deleted file mode 100644
index bb12a1ae6ae..00000000000
--- a/src/mame/drivers/victor9k.cpp
+++ /dev/null
@@ -1,811 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Curt Coder
-/**********************************************************************
-
- Victor 9000 / ACT Sirius 1 emulation
-
-**********************************************************************/
-
-/*
-
- TODO:
-
- - contrast
- - MC6852
- - codec sound
- - expansion bus
- - Z80 card
- - Winchester DMA card (Xebec S1410 + Tandon TM502/TM603SE)
- - RAM cards
- - clock cards
- - floppy 8048
-
-*/
-
-#include "emu.h"
-#include "bus/centronics/ctronics.h"
-#include "bus/ieee488/ieee488.h"
-#include "bus/rs232/rs232.h"
-#include "cpu/i86/i86.h"
-#include "formats/victor9k_dsk.h"
-#include "imagedev/floppy.h"
-#include "machine/6522via.h"
-#include "machine/mc6852.h"
-#include "machine/pit8253.h"
-#include "machine/pic8259.h"
-#include "machine/ram.h"
-#include "machine/victor9k_kb.h"
-#include "machine/victor9k_fdc.h"
-#include "machine/z80sio.h"
-#include "sound/hc55516.h"
-#include "video/mc6845.h"
-#include "emupal.h"
-#include "screen.h"
-#include "softlist.h"
-#include "speaker.h"
-
-#define I8088_TAG "8l"
-#define I8253_TAG "13h"
-#define I8259A_TAG "7l"
-#define UPD7201_TAG "16e"
-#define HD46505S_TAG "11a"
-#define MC6852_TAG "11b"
-#define HC55516_TAG "15c"
-#define M6522_1_TAG "m6522_1"
-#define M6522_2_TAG "m6522_2"
-#define M6522_3_TAG "14l"
-#define DAC0808_0_TAG "5b"
-#define DAC0808_1_TAG "5c"
-#define RS232_A_TAG "rs232a"
-#define RS232_B_TAG "rs232b"
-#define SCREEN_TAG "screen"
-#define KB_TAG "kb"
-
-class victor9k_state : public driver_device
-{
-public:
- victor9k_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, I8088_TAG),
- m_ieee488(*this, IEEE488_TAG),
- m_pic(*this, I8259A_TAG),
- m_upd7201(*this, UPD7201_TAG),
- m_ssda(*this, MC6852_TAG),
- m_via1(*this, M6522_1_TAG),
- m_via2(*this, M6522_2_TAG),
- m_via3(*this, M6522_3_TAG),
- m_cvsd(*this, HC55516_TAG),
- m_crtc(*this, HD46505S_TAG),
- m_ram(*this, RAM_TAG),
- m_kb(*this, KB_TAG),
- m_fdc(*this, "fdc"),
- m_centronics(*this, "centronics"),
- m_rs232a(*this, RS232_A_TAG),
- m_rs232b(*this, RS232_B_TAG),
- m_palette(*this, "palette"),
- m_rom(*this, I8088_TAG),
- m_video_ram(*this, "video_ram"),
- m_brt(0),
- m_cont(0),
- m_via1_irq(CLEAR_LINE),
- m_via2_irq(CLEAR_LINE),
- m_via3_irq(CLEAR_LINE),
- m_fdc_irq(CLEAR_LINE),
- m_ssda_irq(CLEAR_LINE),
- m_kbrdy(1),
- m_kbackctl(0)
- { }
-
- void victor9k(machine_config &config);
-
-private:
- required_device<cpu_device> m_maincpu;
- required_device<ieee488_device> m_ieee488;
- required_device<pic8259_device> m_pic;
- required_device<upd7201_device> m_upd7201;
- required_device<mc6852_device> m_ssda;
- required_device<via6522_device> m_via1;
- required_device<via6522_device> m_via2;
- required_device<via6522_device> m_via3;
- required_device<hc55516_device> m_cvsd;
- required_device<mc6845_device> m_crtc;
- required_device<ram_device> m_ram;
- required_device<victor_9000_keyboard_device> m_kb;
- required_device<victor_9000_fdc_device> m_fdc;
- required_device<centronics_device> m_centronics;
- required_device<rs232_port_device> m_rs232a;
- required_device<rs232_port_device> m_rs232b;
- required_device<palette_device> m_palette;
- required_memory_region m_rom;
- required_shared_ptr<uint8_t> m_video_ram;
-
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
- void via1_pa_w(uint8_t data);
- DECLARE_WRITE_LINE_MEMBER( write_nfrd );
- DECLARE_WRITE_LINE_MEMBER( write_ndac );
- void via1_pb_w(uint8_t data);
- DECLARE_WRITE_LINE_MEMBER( via1_irq_w );
- DECLARE_WRITE_LINE_MEMBER( codec_vol_w );
-
- void via2_pa_w(uint8_t data);
- void via2_pb_w(uint8_t data);
- DECLARE_WRITE_LINE_MEMBER( via2_irq_w );
-
- void via3_pb_w(uint8_t data);
- DECLARE_WRITE_LINE_MEMBER( via3_irq_w );
-
- DECLARE_WRITE_LINE_MEMBER( fdc_irq_w );
-
- DECLARE_WRITE_LINE_MEMBER( ssda_irq_w );
- DECLARE_WRITE_LINE_MEMBER( ssda_sm_dtr_w );
-
- DECLARE_WRITE_LINE_MEMBER( kbrdy_w );
- DECLARE_WRITE_LINE_MEMBER( kbdata_w );
- DECLARE_WRITE_LINE_MEMBER( vert_w );
-
- MC6845_UPDATE_ROW( crtc_update_row );
-
- DECLARE_WRITE_LINE_MEMBER( mux_serial_b_w );
- DECLARE_WRITE_LINE_MEMBER( mux_serial_a_w );
-
- void victor9k_palette(palette_device &palette) const;
-
- // video state
- int m_brt;
- int m_cont;
- int m_hires;
-
- // interrupts
- int m_via1_irq;
- int m_via2_irq;
- int m_via3_irq;
- int m_fdc_irq;
- int m_ssda_irq;
-
- // keyboard
- int m_kbrdy;
- int m_kbackctl;
-
- void update_kback();
-
- void victor9k_mem(address_map &map);
-};
-
-
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 0
-
-
-
-//**************************************************************************
-// ADDRESS MAPS
-//**************************************************************************
-
-//-------------------------------------------------
-// ADDRESS_MAP( victor9k_mem )
-//-------------------------------------------------
-
-void victor9k_state::victor9k_mem(address_map &map)
-{
- map(0x00000, 0x1ffff).ram();
- map(0x20000, 0xdffff).noprw();
- map(0xe0000, 0xe0001).mirror(0x7f00).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
- map(0xe0020, 0xe0023).mirror(0x7f00).rw(I8253_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
- map(0xe0040, 0xe0043).mirror(0x7f00).rw(m_upd7201, FUNC(upd7201_device::cd_ba_r), FUNC(upd7201_device::cd_ba_w));
- map(0xe8000, 0xe8000).mirror(0x7f00).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
- map(0xe8001, 0xe8001).mirror(0x7f00).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
- map(0xe8020, 0xe802f).mirror(0x7f00).m(m_via1, FUNC(via6522_device::map));
- map(0xe8040, 0xe804f).mirror(0x7f00).m(m_via2, FUNC(via6522_device::map));
- map(0xe8060, 0xe8061).mirror(0x7f00).rw(m_ssda, FUNC(mc6852_device::read), FUNC(mc6852_device::write));
- map(0xe8080, 0xe808f).mirror(0x7f00).m(m_via3, FUNC(via6522_device::map));
- map(0xe80a0, 0xe80af).mirror(0x7f00).rw(m_fdc, FUNC(victor_9000_fdc_device::cs5_r), FUNC(victor_9000_fdc_device::cs5_w));
- map(0xe80c0, 0xe80cf).mirror(0x7f00).rw(m_fdc, FUNC(victor_9000_fdc_device::cs6_r), FUNC(victor_9000_fdc_device::cs6_w));
- map(0xe80e0, 0xe80ef).mirror(0x7f00).rw(m_fdc, FUNC(victor_9000_fdc_device::cs7_r), FUNC(victor_9000_fdc_device::cs7_w));
- map(0xf0000, 0xf0fff).mirror(0x1000).ram().share("video_ram");
- map(0xf8000, 0xf9fff).mirror(0x6000).rom().region(I8088_TAG, 0);
-}
-
-
-
-//**************************************************************************
-// INPUT PORTS
-//**************************************************************************
-
-//-------------------------------------------------
-// INPUT_PORTS( victor9k )
-//-------------------------------------------------
-
-static INPUT_PORTS_START( victor9k )
- // defined in machine/victor9kb.c
-INPUT_PORTS_END
-
-
-
-//**************************************************************************
-// DEVICE CONFIGURATION
-//**************************************************************************
-
-//-------------------------------------------------
-// MC6845
-//-------------------------------------------------
-
-#define DC_SECRET 0x1000
-#define DC_UNDLN 0x2000
-#define DC_LOWINT 0x4000
-#define DC_RVS 0x8000
-
-MC6845_UPDATE_ROW( victor9k_state::crtc_update_row )
-{
- int hires = BIT(ma, 13);
- int dot_addr = BIT(ma, 12);
- int width = hires ? 16 : 10;
-
- if (m_hires != hires)
- {
- m_hires = hires;
- m_crtc->set_unscaled_clock(XTAL(30'000'000) / width);
- m_crtc->set_hpixels_per_column(width);
- }
-
- address_space &program = m_maincpu->space(AS_PROGRAM);
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
-
- int x = hbp;
-
- offs_t aa = (ma & 0x7ff) << 1;
-
- for (int sx = 0; sx < x_count; sx++)
- {
- uint16_t dc = (m_video_ram[aa + 1] << 8) | m_video_ram[aa];
- offs_t ab = (dot_addr << 15) | ((dc & 0x7ff) << 4) | (ra & 0x0f);
- uint16_t dd = program.read_word(ab << 1);
-
- int cursor = (sx == cursor_x) ? 1 : 0;
- int undln = !((dc & DC_UNDLN) && BIT(dd, 15)) ? 2 : 0;
- int rvs = (dc & DC_RVS) ? 4 : 0;
- int secret = (dc & DC_SECRET) ? 1 : 0;
- int lowint = (dc & DC_LOWINT) ? 1 : 0;
-
- for (int bit = 0; bit < width; bit++)
- {
- int pixel = 0;
-
- switch (rvs | undln | cursor)
- {
- case 0: case 5:
- pixel = 1;
- break;
-
- case 1: case 4:
- pixel = 0;
- break;
-
- case 2: case 7:
- pixel = !(!(BIT(dd, bit) && !secret));
- break;
-
- case 3: case 6:
- pixel = !(BIT(dd, bit) && !secret);
- break;
- }
-
- int color = 0;
-
- if (pixel && de)
- {
- int pen = 1 + m_brt;
- if (!lowint) pen = 9;
- color = palette[pen];
- }
-
- bitmap.pix(vbp + y, x++) = color;
- }
-
- aa += 2;
- aa &= 0xfff;
- }
-}
-
-WRITE_LINE_MEMBER(victor9k_state::vert_w)
-{
- m_via2->write_pa7(state);
- m_pic->ir7_w(state);
-}
-
-
-
-WRITE_LINE_MEMBER(victor9k_state::mux_serial_b_w)
-{
-}
-
-WRITE_LINE_MEMBER(victor9k_state::mux_serial_a_w)
-{
-}
-
-//-------------------------------------------------
-// PIC8259
-//-------------------------------------------------
-
-/*
-
- pin signal description
-
- IR0 SYN sync detect
- IR1 COMM serial communications (7201)
- IR2 TIMER 8253 timer
- IR3 PARALLEL all 6522 IRQ (including disk)
- IR4 IR4 expansion IR4
- IR5 IR5 expansion IR5
- IR6 KBINT keyboard data ready
- IR7 VINT vertical sync or nonspecific interrupt
-
-*/
-
-//-------------------------------------------------
-// MC6852_INTERFACE( ssda_intf )
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( victor9k_state::ssda_irq_w )
-{
- m_ssda_irq = state;
-
- m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via3_irq || m_fdc_irq);
-}
-
-
-WRITE_LINE_MEMBER( victor9k_state::ssda_sm_dtr_w )
-{
- m_ssda->cts_w(state);
- m_ssda->dcd_w(!state);
- //m_cvsd->enc_dec_w(!state);
-}
-
-
-void victor9k_state::via1_pa_w(uint8_t data)
-{
- /*
-
- bit description
-
- PA0 DIO1
- PA1 DIO2
- PA2 DIO3
- PA3 DIO4
- PA4 DIO5
- PA5 DIO6
- PA6 DIO7
- PA7 DIO8
-
- */
-
- // centronics
- m_centronics->write_data0(BIT(data, 0));
- m_centronics->write_data1(BIT(data, 1));
- m_centronics->write_data2(BIT(data, 2));
- m_centronics->write_data3(BIT(data, 3));
- m_centronics->write_data4(BIT(data, 4));
- m_centronics->write_data5(BIT(data, 5));
- m_centronics->write_data6(BIT(data, 6));
- m_centronics->write_data7(BIT(data, 7));
-
- // IEEE-488
- m_ieee488->host_dio_w(data);
-}
-
-DECLARE_WRITE_LINE_MEMBER( victor9k_state::write_nfrd )
-{
- m_via1->write_pb6(state);
- m_via1->write_ca1(state);
-}
-
-DECLARE_WRITE_LINE_MEMBER( victor9k_state::write_ndac )
-{
- m_via1->write_pb7(state);
- m_via1->write_ca2(state);
-}
-
-void victor9k_state::via1_pb_w(uint8_t data)
-{
- /*
-
- bit description
-
- PB0 STROBE/DAV
- PB1 PI/EOI
- PB2 REN
- PB3 ATN
- PB4 IFC
- PB5 SRQ/BUSY SRQ
- PB6 NRFD/ACK RFD
- PB7 SEL/DAC
-
- */
-
- // centronics
- m_centronics->write_strobe(BIT(data, 0));
-
- // IEEE-488
- m_ieee488->host_dav_w(BIT(data, 0));
- m_ieee488->host_eoi_w(BIT(data, 1));
- m_ieee488->host_ren_w(BIT(data, 2));
- m_ieee488->host_atn_w(BIT(data, 3));
- m_ieee488->host_ifc_w(BIT(data, 4));
- m_ieee488->host_srq_w(BIT(data, 5));
- m_ieee488->host_nrfd_w(BIT(data, 6));
- m_ieee488->host_ndac_w(BIT(data, 7));
-}
-
-WRITE_LINE_MEMBER( victor9k_state::codec_vol_w )
-{
-}
-
-WRITE_LINE_MEMBER( victor9k_state::via1_irq_w )
-{
- m_via1_irq = state;
-
- m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via3_irq || m_fdc_irq);
-}
-
-void victor9k_state::via2_pa_w(uint8_t data)
-{
- /*
-
- bit description
-
- PA0 _INT/EXTA
- PA1 _INT/EXTB
- PA2
- PA3
- PA4
- PA5
- PA6
- PA7
-
- */
-}
-
-void victor9k_state::update_kback()
-{
- int kback = !(!(m_kbrdy && !m_via2_irq) && !(m_kbackctl && m_via2_irq));
-
- m_kb->kback_w(kback);
-}
-
-void victor9k_state::via2_pb_w(uint8_t data)
-{
- /*
-
- bit description
-
- PB0 TALK/LISTEN
- PB1 KBACKCTL
- PB2 BRT0
- PB3 BRT1
- PB4 BRT2
- PB5 CONT0
- PB6 CONT1
- PB7 CONT2
-
- */
-
- // keyboard acknowledge
- m_kbackctl = BIT(data, 1);
- update_kback();
-
- // brightness
- m_brt = (data >> 2) & 0x07;
-
- // contrast
- m_cont = data >> 5;
-
- if (LOG) logerror("BRT %u CONT %u\n", m_brt, m_cont);
-}
-
-WRITE_LINE_MEMBER( victor9k_state::via2_irq_w )
-{
- m_via2_irq = state;
-
- m_pic->ir6_w(m_via2_irq);
- update_kback();
-}
-
-
-/*
- bit description
-
- PA0 J5-16
- PA1 J5-18
- PA2 J5-20
- PA3 J5-22
- PA4 J5-24
- PA5 J5-26
- PA6 J5-28
- PA7 J5-30
- PB0 J5-32
- PB1 J5-34
- PB2 J5-36
- PB3 J5-38
- PB4 J5-40
- PB5 J5-42
- PB6 J5-44
- PB7 J5-46
- CA1 J5-12
- CB1 J5-48
- CA2 J5-14
- CB2 J5-50
-*/
-
-void victor9k_state::via3_pb_w(uint8_t data)
-{
- // codec clock output
- m_ssda->rx_clk_w(!BIT(data, 7));
- m_ssda->tx_clk_w(!BIT(data, 7));
- m_cvsd->clock_w(!BIT(data, 7));
-}
-
-WRITE_LINE_MEMBER( victor9k_state::via3_irq_w )
-{
- m_via3_irq = state;
-
- m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via3_irq || m_fdc_irq);
-}
-
-
-//-------------------------------------------------
-// VICTOR9K_KEYBOARD_INTERFACE( kb_intf )
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( victor9k_state::kbrdy_w )
-{
- if (LOG) logerror("KBRDY %u\n", state);
-
- m_via2->write_cb1(state);
-
- m_kbrdy = state;
- update_kback();
-}
-
-WRITE_LINE_MEMBER( victor9k_state::kbdata_w )
-{
- if (LOG) logerror("KBDATA %u\n", state);
-
- m_via2->write_cb2(state);
- m_via2->write_pa6(state);
-}
-
-
-WRITE_LINE_MEMBER( victor9k_state::fdc_irq_w )
-{
- m_fdc_irq = state;
-
- m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via3_irq || m_fdc_irq);
-}
-
-
-//**************************************************************************
-// MACHINE INITIALIZATION
-//**************************************************************************
-
-void victor9k_state::victor9k_palette(palette_device &palette) const
-{
- palette.set_pen_color(0, rgb_t(0x00, 0x00, 0x00));
-
- // BRT0 82K
- // BRT1 39K
- // BRT2 20K
- // 12V 220K pullup
- palette.set_pen_color(1, rgb_t(0x00, 0x10, 0x00));
- palette.set_pen_color(2, rgb_t(0x00, 0x20, 0x00));
- palette.set_pen_color(3, rgb_t(0x00, 0x40, 0x00));
- palette.set_pen_color(4, rgb_t(0x00, 0x60, 0x00));
- palette.set_pen_color(5, rgb_t(0x00, 0x80, 0x00));
- palette.set_pen_color(6, rgb_t(0x00, 0xa0, 0x00));
- palette.set_pen_color(7, rgb_t(0x00, 0xc0, 0x00));
- palette.set_pen_color(8, rgb_t(0x00, 0xff, 0x00));
-
- // CONT0 620R
- // CONT1 332R
- // CONT2 162R
- // 12V 110R pullup
- palette.set_pen_color(9, rgb_t(0xff, 0x00, 0x00));
-}
-
-void victor9k_state::machine_start()
-{
- // state saving
- save_item(NAME(m_brt));
- save_item(NAME(m_cont));
- save_item(NAME(m_via1_irq));
- save_item(NAME(m_via2_irq));
- save_item(NAME(m_via3_irq));
- save_item(NAME(m_fdc_irq));
- save_item(NAME(m_ssda_irq));
- save_item(NAME(m_kbrdy));
- save_item(NAME(m_kbackctl));
-
-#ifndef USE_SCP
- // patch out SCP self test
- m_rom->base()[0x11ab] = 0xc3;
-
- // patch out ROM checksum error
- m_rom->base()[0x1d51] = 0x90;
- m_rom->base()[0x1d52] = 0x90;
- m_rom->base()[0x1d53] = 0x90;
- m_rom->base()[0x1d54] = 0x90;
-#endif
-}
-
-void victor9k_state::machine_reset()
-{
- m_maincpu->reset();
- m_upd7201->reset();
- m_ssda->reset();
- m_via1->reset();
- m_via2->reset();
- m_via3->reset();
- m_crtc->reset();
- m_fdc->reset();
-}
-
-
-
-//**************************************************************************
-// MACHINE CONFIGURATION
-//**************************************************************************
-
-//-------------------------------------------------
-// machine_config( victor9k )
-//-------------------------------------------------
-
-void victor9k_state::victor9k(machine_config &config)
-{
- // basic machine hardware
- 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
- 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(hd6845s_device::screen_update));
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
-
- PALETTE(config, m_palette, FUNC(victor9k_state::victor9k_palette), 16);
-
- HD6845S(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));
- m_crtc->out_vsync_callback().set(FUNC(victor9k_state::vert_w));
-
- // sound hardware
- SPEAKER(config, "mono").front_center();
- HC55516(config, m_cvsd, 0);
- //MCFG_HC55516_DIG_OUT_CB(WRITELINE(MC6852_TAG, mc6852_device, rx_w))
- m_cvsd->add_route(ALL_OUTPUTS, "mono", 0.25);
-
- // devices
- 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));
-
- MOS6522(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));
-
- MOS6522(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));
-
- MOS6522(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(m_upd7201, FUNC(upd7201_device::rxa_w));
- m_rs232a->dcd_handler().set(m_upd7201, FUNC(upd7201_device::dcda_w));
- m_rs232a->ri_handler().set(m_via2, FUNC(via6522_device::write_pa2));
- m_rs232a->cts_handler().set(m_upd7201, FUNC(upd7201_device::ctsa_w));
- m_rs232a->dsr_handler().set(m_via2, FUNC(via6522_device::write_pa3));
-
- RS232_PORT(config, m_rs232b, default_rs232_devices, nullptr);
- m_rs232b->rxd_handler().set(m_upd7201, FUNC(upd7201_device::rxb_w));
- m_rs232b->dcd_handler().set(m_upd7201, FUNC(upd7201_device::dcdb_w));
- m_rs232b->ri_handler().set(m_via2, FUNC(via6522_device::write_pa4));
- m_rs232b->cts_handler().set(m_upd7201, FUNC(upd7201_device::ctsb_w));
- m_rs232b->dsr_handler().set(m_via2, 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();
-
- RAM(config, m_ram).set_default_size("128K");
-
- SOFTWARE_LIST(config, "flop_list").set_original("victor9k_flop");
-}
-
-
-
-//**************************************************************************
-// ROMS
-//**************************************************************************
-
-//-------------------------------------------------
-// ROM( victor9k )
-//-------------------------------------------------
-
-ROM_START( victor9k )
- ROM_REGION( 0x2000, I8088_TAG, 0 )
- ROM_DEFAULT_BIOS( "univ" )
- ROM_SYSTEM_BIOS( 0, "old", "Older" )
- ROMX_LOAD( "102320.7j", 0x0000, 0x1000, CRC(3d615fd7) SHA1(b22f7e5d66404185395d8effbf57efded0079a92), ROM_BIOS(0) )
- ROMX_LOAD( "102322.8j", 0x1000, 0x1000, CRC(9209df0e) SHA1(3ee8e0c15186bbd5768b550ecc1fa3b6b1dbb928), ROM_BIOS(0) )
- ROM_SYSTEM_BIOS( 1, "univ", "Universal" )
- ROMX_LOAD( "v9000 univ. fe f3f7 13db.7j", 0x0000, 0x1000, CRC(25c7a59f) SHA1(8784e9aa7eb9439f81e18b8e223c94714e033911), ROM_BIOS(1) )
- ROMX_LOAD( "v9000 univ. ff f3f7 39fe.8j", 0x1000, 0x1000, CRC(496c7467) SHA1(eccf428f62ef94ab85f4a43ba59ae6a066244a66), ROM_BIOS(1) )
-ROM_END
-
-
-
-//**************************************************************************
-// SYSTEM DRIVERS
-//**************************************************************************
-
-// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 1982, victor9k, 0, 0, victor9k, victor9k, victor9k_state, empty_init, "Victor Business Products", "Victor 9000", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )