diff options
Diffstat (limited to 'src/mame/drivers/poly.cpp')
-rw-r--r-- | src/mame/drivers/poly.cpp | 446 |
1 files changed, 0 insertions, 446 deletions
diff --git a/src/mame/drivers/poly.cpp b/src/mame/drivers/poly.cpp deleted file mode 100644 index 81b9107b93c..00000000000 --- a/src/mame/drivers/poly.cpp +++ /dev/null @@ -1,446 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Robbbert,Nigel Barnes -// thanks-to:Andrew Trotman -/*************************************************************************** - - Poly 1/2 (New Zealand) - - 10/07/2011 Skeleton driver. - - http://www.cs.otago.ac.nz/homepages/andrew/poly/Poly.htm - - Andrew has supplied the roms for -bios 1 - - It uses a 6809 for all main functions. There is a Z80 for CP/M, but all - of the roms are 6809 code. - - The keyboard controller is one of those custom XR devices. - Will use the terminal keyboard instead. - - With bios 1, after entering your userid and password, you get a black - screen. This is normal, because it joins to a network which isn't there. - - TODO: - - Connect up the device ports & lines - - Find out about graphics mode and how it is selected - - Fix Keyboard with KR2376-12 encoder - - Poly 2 and Poly 1 (early) probably require a different keyboard matrix - - Find out how to make 2nd teletext screen to display - - Improve MC6854 emulation for network - -****************************************************************************/ - -#include "emu.h" -#include "includes/poly.h" -#include "formats/flex_dsk.h" -#include "softlist.h" - - -void poly_state::poly_bank(address_map &map) -{ - map.unmap_value_high(); - /* System mode */ - map(0x00000, 0x0ffff).rw(FUNC(poly_state::logical_mem_r), FUNC(poly_state::logical_mem_w)); // Logical Memory - map(0x0e000, 0x0e003).rw(m_pia[0], FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // Video control PIA 6821 - map(0x0e004, 0x0e005).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // Optional RS232 Interface - map(0x0e006, 0x0e006).w(FUNC(poly_state::baud_rate_w)); // Baud rate controller - map(0x0e00c, 0x0e00f).rw(m_pia[1], FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // Keyboard PIA 6821 - map(0x0e020, 0x0e027).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); // Timer 6840 - map(0x0e030, 0x0e036).rw(FUNC(poly_state::network_r), FUNC(poly_state::network_w)); // Data Link Controller 6854 - map(0x0e040, 0x0e040).w(FUNC(poly_state::set_protect_w)); // Set protect flip-flop after 1 E-cycle - map(0x0e050, 0x0e05f).ram().share("dat"); // Dynamic Address Translator - map(0x0e060, 0x0e060).rw(FUNC(poly_state::select_map_r), FUNC(poly_state::select_map1_w)); // Select Map 1 - map(0x0e070, 0x0e070).rw(FUNC(poly_state::select_map_r), FUNC(poly_state::select_map2_w)); // Select Map 2 - map(0x0e800, 0x0efff).ram().share("videoram"); // Teletext screens and System data - map(0x0f000, 0x0ffff).rom().region("system", 0); // System Program ROM - /* User mode */ - map(0x10000, 0x1ffff).rw(FUNC(poly_state::logical_mem_r), FUNC(poly_state::logical_mem_w)); // Logical Memory - map(0x1fff0, 0x1ffff).r(FUNC(poly_state::vector_r)); // Vector fetch (interrupt and reset) -} - -void polydev_state::poly_bank(address_map &map) -{ - poly_state::poly_bank(map); - map(0x0e014, 0x0e014).rw(FUNC(polydev_state::drive_register_r), FUNC(polydev_state::drive_register_w)); // Drive register - map(0x0e018, 0x0e01b).rw(FUNC(polydev_state::fdc_inv_r), FUNC(polydev_state::fdc_inv_w)); // Floppy controller -} - -void poly_state::poly_mem(address_map &map) -{ - map(0x0000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); -} - - -static INPUT_PORTS_START( poly1 ) - PORT_START("MODIFIERS") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Caps Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) - - PORT_START("X0") - PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Keypad 1 Red") - PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("Keypad 0") - PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME) PORT_NAME("Help Calc") - PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("Keypad .") - PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_UNUSED) - - PORT_START("X1") - PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Keypad 3 Yellow") - PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Keypad 4 Blue") - PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Keypad 2 Green") - PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_INSERT) PORT_NAME("Ins Char Line") - PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Repeat Next") - PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_UNUSED) - - PORT_START("X2") - PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Keypad 6 Cyan") - PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("Keypad 7 White") - PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Keypad 5 Magenta") - PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Del Char Line") - PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Back Exit") - PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_UNUSED) - - PORT_START("X3") - PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("Keypad 9") - PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') - PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) - PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("Keypad 8 Flash") - PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('@') PORT_CHAR(0xa3) - PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_END) PORT_NAME("Pause") - PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_NAME(UTF8_UP) - PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_NAME(UTF8_RIGHT) - PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_NAME(UTF8_DOWN) - PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_NAME(UTF8_LEFT) - - PORT_START("X4") - PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') - PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') - PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') - PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') - PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') - PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') - PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') - PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') - PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') - PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') - PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_UNUSED) - - PORT_START("X5") - PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') - PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') - PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') - PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') - PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') - PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') - PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') - PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') - PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') - PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+') - PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':') PORT_CHAR('*') - - PORT_START("X6") - PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') - PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') - PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') - PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') - PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') - PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') - PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') - PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') - PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') - PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') - PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("EXP \xE2\x80\x96") - - PORT_START("X7") - PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') - PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"') - PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') - PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') - PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') - PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') - PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') - PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') - PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') - PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') - PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=') -INPUT_PORTS_END - -static INPUT_PORTS_START( poly1e ) - PORT_INCLUDE(poly1) - // TODO: unknown matrix, contains extra user definable keys -INPUT_PORTS_END - -static INPUT_PORTS_START( poly2 ) - PORT_INCLUDE(poly1) - // TODO: unknown matrix, seems to differ from poly1 -INPUT_PORTS_END - - -void poly_state::machine_start() -{ - m_dat_bank = 0; -} - - -void poly_state::machine_reset() -{ - //m_kr2376->set_input_pin(kr2376_device::KR2376_DSII, 0); - //m_kr2376->set_input_pin(kr2376_device::KR2376_PII, 0); - - /* system mode is entered on Reset */ - m_bankdev->set_bank(0); -} - - -void poly_state::init_poly() -{ - uint8_t bitswapped[0x4000]; - uint8_t *rom; - - /* basic rom region */ - rom = m_user->base() + 0xc000; - - /* decrypt rom data lines */ - for (int i = 0x0000; i<0x4000; i++) - bitswapped[i] = bitswap<8>(rom[i], 3, 4, 2, 5, 1, 6, 0, 7); - - /* decrypt rom address lines */ - for (int i = 0x0000; i<0x4000; i++) - rom[i] = bitswapped[bitswap<16>(i, 15, 14, 13, 12, 10, 8, 4, 2, 0, 1, 3, 5, 6, 7, 9, 11)]; - - /* system rom region */ - rom = m_system->base(); - - /* decrypt rom data lines */ - for (int i = 0x0000; i<0x1000; i++) - bitswapped[i] = bitswap<8>(rom[i], 3, 4, 2, 5, 1, 6, 0, 7); - - /* decrypt rom address lines */ - for (int i = 0x0000; i<0x1000; i++) - rom[i] = bitswapped[bitswap<16>(i, 15, 14, 13, 12, 10, 8, 4, 2, 0, 1, 3, 5, 6, 7, 9, 11)]; -} - - -void polydev_state::floppy_formats(format_registration &fr) -{ - fr.add_fm_containers(); - fr.add(FLOPPY_FLEX_FORMAT); -} - -static void poly_floppies(device_slot_interface &device) -{ - device.option_add("8dssd", FLOPPY_8_DSSD); - device.option_add("525sd", FLOPPY_525_SD); -} - - -void poly_state::poly(machine_config &config) -{ - /* basic machine hardware */ - MC6809(config, m_maincpu, 12.0576_MHz_XTAL / 3); - m_maincpu->set_addrmap(AS_PROGRAM, &poly_state::poly_mem); - - ADDRESS_MAP_BANK(config, "bankdev").set_map(&poly_state::poly_bank).set_options(ENDIANNESS_LITTLE, 8, 17, 0x10000); - - INPUT_MERGER_ANY_HIGH(config, "irqs").output_handler().set_inputline(m_maincpu, M6809_IRQ_LINE); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(50); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); - screen.set_size(40 * 12, 24 * 20); - screen.set_visarea(0, 40 * 12 - 1, 0, 24 * 20 - 1); - screen.set_screen_update(FUNC(poly_state::screen_update)); - - SAA5050(config, m_trom[0], 12.0576_MHz_XTAL / 2); - m_trom[0]->d_cb().set(FUNC(poly_state::videoram_1_r)); - m_trom[0]->set_screen_size(40, 24, 40); - - SAA5050(config, m_trom[1], 12.0576_MHz_XTAL / 2); - m_trom[1]->d_cb().set(FUNC(poly_state::videoram_2_r)); - m_trom[1]->set_screen_size(40, 24, 40); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50); - - /* internal ram */ - RAM(config, m_ram).set_default_size("128K").set_extra_options("64K"); - - /* network */ - MC6854(config, m_adlc); - //m_adlc->out_txd_cb().set(NETWORK_TAG, FUNC(poly_network_device::data_w)); - //m_adlc->out_irq_cb().set("irqs", FUNC(input_merger_device::in_w<0>)); - - //MCFG_POLY_NETWORK_ADD() - //MCFG_POLY_NETWORK_CLK_CB(WRITELINE(*this, poly_state, network_clk_w)) - //MCFG_POLY_NETWORK_DATA_CB(WRITELINE("mc6854", mc6854_device, set_rx)) - //MCFG_POLY_NETWORK_SLOT_ADD("netup", poly_network_devices, "proteus") - //MCFG_POLY_NETWORK_SLOT_ADD("netdown", poly_network_devices, nullptr) - - /* timer */ - PTM6840(config, m_ptm, 12.0576_MHz_XTAL / 3); - m_ptm->set_external_clocks(0, 0, 0); - m_ptm->o2_callback().set(FUNC(poly_state::ptm_o2_callback)); - m_ptm->o3_callback().set(FUNC(poly_state::ptm_o3_callback)); - //m_ptm->irq_callback().set("irqs", FUNC(input_merger_device::in_w<1>)); - - /* keyboard encoder */ - //KR2376_12(config, m_kr2376, 50000); - //m_kr2376->x<0>().set_ioport("X0"); - //m_kr2376->x<1>().set_ioport("X1"); - //m_kr2376->x<2>().set_ioport("X2"); - //m_kr2376->x<3>().set_ioport("X3"); - //m_kr2376->x<4>().set_ioport("X4"); - //m_kr2376->x<5>().set_ioport("X5"); - //m_kr2376->x<6>().set_ioport("X6"); - //m_kr2376->x<7>().set_ioport("X7"); - //m_kr2376->shift().set(FUNC(poly_state::kbd_shift_r)); - //m_kr2376->control().set(FUNC(poly_state::kbd_control_r)); - //m_kr2376->strobe().set("pia1", FUNC(pia6821_device::cb1_w)); - - /* generic keyboard until ROM in KR2376-12 is known */ - generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0)); - keyboard.set_keyboard_callback(FUNC(poly_state::kbd_put)); - - /* video control */ - PIA6821(config, m_pia[0], 0); - m_pia[0]->writepa_handler().set(FUNC(poly_state::pia0_pa_w)); - m_pia[0]->writepb_handler().set(FUNC(poly_state::pia0_pb_w)); - m_pia[0]->irqa_handler().set("irqs", FUNC(input_merger_device::in_w<2>)); - m_pia[0]->irqb_handler().set("irqs", FUNC(input_merger_device::in_w<3>)); - - /* keyboard PIA */ - PIA6821(config, m_pia[1], 0); - m_pia[1]->readpb_handler().set(FUNC(poly_state::pia1_b_in)); - m_pia[1]->irqa_handler().set("irqs", FUNC(input_merger_device::in_w<4>)); - m_pia[1]->irqb_handler().set("irqs", FUNC(input_merger_device::in_w<5>)); - - /* optional rs232 interface */ - ACIA6850(config, m_acia, 0); - //m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); - //m_acia->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); - m_acia->irq_handler().set("irqs", FUNC(input_merger_device::in_w<6>)); - - CLOCK(config, m_acia_clock, 153600); - m_acia_clock->signal_handler().set(m_acia, FUNC(acia6850_device::write_txc)); - m_acia_clock->signal_handler().append(m_acia, FUNC(acia6850_device::write_rxc)); - - /* software lists */ - SOFTWARE_LIST(config, "flop_list").set_original("poly_flop").set_filter("POLY1"); -} - - -void poly_state::poly2(machine_config &config) -{ - poly(config); - - /* internal ram */ - m_ram->set_default_size("128K"); - - /* software lists */ - subdevice<software_list_device>("flop_list")->set_filter("POLY2"); -} - - -void polydev_state::polydev(machine_config &config) -{ - poly(config); - - /* fdc */ - FD1771(config, m_fdc, 12.0_MHz_XTAL / 12); - m_fdc->hld_wr_callback().set(FUNC(polydev_state::motor_w)); - m_fdc->set_force_ready(true); - - FLOPPY_CONNECTOR(config, "fdc:0", poly_floppies, "525sd", polydev_state::floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "fdc:1", poly_floppies, nullptr, polydev_state::floppy_formats).enable_sound(true); - - /* remove devices*/ - //config.device_remove("netup"); - //config.device_remove("netdown"); -} - - -/* ROM definition */ -ROM_START( poly1 ) - ROM_REGION( 0x20000, "user", 0 ) - ROM_SYSTEM_BIOS(0, "bas34", "PolyBASIC 3.4") - ROMX_LOAD( "bas1.u92", 0xc000, 0x1000, CRC(04d96d81) SHA1(8d2d0980afb8c447cf235325e4dc15ed2a200f16), ROM_BIOS(0) ) - ROMX_LOAD( "bas2.u91", 0xd000, 0x1000, CRC(3e12f823) SHA1(0b37f2dfa241fac1bf06ca93b19e44a660c7758e), ROM_BIOS(0) ) - ROMX_LOAD( "bas3.u90", 0xe000, 0x1000, CRC(22759a84) SHA1(d22edea312567596b4ef92290ffe52a25de01487), ROM_BIOS(0) ) - ROMX_LOAD( "bas4.u89", 0xf000, 0x1000, CRC(30650d92) SHA1(4e41ea2ec127b9ed277f5a62d52cb3432d64aa84), ROM_BIOS(0) ) - - ROM_REGION( 0x1000, "system", 0 ) - ROMX_LOAD( "bios.u86", 0x0000, 0x1000, CRC(fc97cc6a) SHA1(103dce01a86a47e7e235c9d2f820fa1501ab9800), ROM_BIOS(0) ) -ROM_END - -ROM_START( poly1e ) - ROM_REGION( 0x20000, "user", 0 ) - ROM_SYSTEM_BIOS(0, "bas23", "PolyBASIC 2.3") - ROMX_LOAD( "v3bas1.u92", 0xc000, 0x1000, CRC(ee25fe89) SHA1(af1a73434c9f5524c5a1a5e19d06500ad1b643d1), ROM_BIOS(0) ) - ROMX_LOAD( "v3bas2.u91", 0xd000, 0x1000, CRC(6ca4a8b5) SHA1(54e71e34b55a5ee41a9e0da05d9c9cbcb2fb80c2), ROM_BIOS(0) ) - ROMX_LOAD( "v3bas3.u90", 0xe000, 0x1000, CRC(6021fc00) SHA1(214aab19e096ddfd417993d48c11f81ec139fef3), ROM_BIOS(0) ) - ROMX_LOAD( "v3bas4.u89", 0xf000, 0x1000, CRC(df071e52) SHA1(41482517a5dfc64f3728732b3907cee636674de4), ROM_BIOS(0) ) - - ROM_REGION( 0x1000, "system", 0 ) - ROMX_LOAD( "plrt16v3e9.u86", 0x0000, 0x1000, CRC(f7e3aa86) SHA1(b642c281e54ad9698cfaec19508ae8b4df50c296), ROM_BIOS(0) ) -ROM_END - -ROM_START( poly2 ) - ROM_DEFAULT_BIOS("bas31") - ROM_SYSTEM_BIOS(0, "bas31", "PolyBASIC 3.1") - ROM_SYSTEM_BIOS(1, "bas30", "PolyBASIC 3.0") - - ROM_REGION( 0x20000, "user", 0 ) - ROMX_LOAD( "bas1.u92", 0xc000, 0x1000, CRC(340b7d75) SHA1(330d31b5c90c82c08c62e2df40669ca62c8fffed), ROM_BIOS(0) ) - ROMX_LOAD( "bas2.u91", 0xd000, 0x1000, CRC(45152d26) SHA1(7da2663f253031a587705b9db9a18e93ba4db2cf), ROM_BIOS(0) ) - ROMX_LOAD( "bas3.u90", 0xe000, 0x1000, CRC(a6f70e62) SHA1(7912a9da29d682bb5922f3adf6136b4efc0494dc), ROM_BIOS(0) ) - ROMX_LOAD( "bas4.u89", 0xf000, 0x1000, CRC(72d21cea) SHA1(d413490d043845ce4a9cf5cc70bd92ddc931c837), ROM_BIOS(0) ) - - ROMX_LOAD( "bas1-12-12-84.u92", 0xc000, 0x1000, CRC(a3791342) SHA1(e801db28419eedf6eebdbb5a7eb551ba36c43cd6), ROM_BIOS(1) ) - ROMX_LOAD( "bas2-12-12-84.u91", 0xd000, 0x1000, CRC(3bb5849e) SHA1(71c47a0d3dba096a6a79300edf56ffedce276ac6), ROM_BIOS(1) ) - ROMX_LOAD( "bas3-12-12-84.u90", 0xe000, 0x1000, CRC(a6f70e62) SHA1(7912a9da29d682bb5922f3adf6136b4efc0494dc), ROM_BIOS(1) ) - ROMX_LOAD( "bas4-12-12-84.u89", 0xf000, 0x1000, CRC(8f736cee) SHA1(3ec5cc49a426fc921bbadb2bcc1b86b4768627fa), ROM_BIOS(1) ) - - - ROM_REGION( 0x1000, "system", 0 ) - ROMX_LOAD( "sys31.u86", 0x0000, 0x1000, CRC(fb54c36e) SHA1(934f84a7a99a76b0a017379a6ecd8a8e444cd085), ROM_BIOS(0) ) - ROMX_LOAD( "plrt17-5-11-84.u86", 0x0000, 0x1000, CRC(896165dd) SHA1(005584310f1c689a9b1bb549989c5fedabead6c4), ROM_BIOS(1) ) -ROM_END - -ROM_START( polydev ) - ROM_REGION( 0x20000, "user", 0 ) - ROM_SYSTEM_BIOS(0, "bas34", "PolyBASIC 3.4") - ROMX_LOAD( "v2bas1.bin", 0xc000, 0x1000, CRC(04d96d81) SHA1(8d2d0980afb8c447cf235325e4dc15ed2a200f16), ROM_BIOS(0) ) - ROMX_LOAD( "v2bas2.bin", 0xd000, 0x1000, CRC(3e12f823) SHA1(0b37f2dfa241fac1bf06ca93b19e44a660c7758e), ROM_BIOS(0) ) - ROMX_LOAD( "v2bas3.bin", 0xe000, 0x1000, CRC(22759a84) SHA1(d22edea312567596b4ef92290ffe52a25de01487), ROM_BIOS(0) ) - ROMX_LOAD( "v2bas4.bin", 0xf000, 0x1000, CRC(30650d92) SHA1(4e41ea2ec127b9ed277f5a62d52cb3432d64aa84), ROM_BIOS(0) ) - - ROM_REGION( 0x1000, "system", 0 ) - ROMX_LOAD( "slrt15_00f9.bin", 0x0000, 0x1000, CRC(046a9aef) SHA1(c5c74b0f66e8969c12db03899244e18228be38eb), ROM_BIOS(0) ) -ROM_END - -/* Driver */ - -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, poly1, 0, 0, poly, poly1, poly_state, init_poly, "Polycorp", "Poly 1 Educational Computer", MACHINE_NOT_WORKING ) -COMP( 1981, poly1e, poly1, 0, poly, poly1e, poly_state, init_poly, "Polycorp", "Poly 1 Educational Computer (early)", MACHINE_NOT_WORKING ) -COMP( 1984, poly2, poly1, 0, poly2, poly2, poly_state, init_poly, "Polycorp", "Poly 2 Learning System", MACHINE_NOT_WORKING ) -COMP( 1983, polydev, poly1, 0, polydev, poly1, polydev_state, init_poly, "Polycorp", "Poly Development System", MACHINE_NOT_WORKING ) |