diff options
author | hap <happppp@users.noreply.github.com> | 2020-02-26 19:05:38 +0100 |
---|---|---|
committer | hap <happppp@users.noreply.github.com> | 2020-02-26 19:05:52 +0100 |
commit | 1da47331828e113e4efc4e50e570bde79ab4bbcb (patch) | |
tree | 171409fd7831b6d897274ed0651edf25b3582232 | |
parent | 357b5c2766ca633fd4fa740cf02d8ced522bf89b (diff) |
New working machines
--------------------
Conchess Plymate (Amsterdam, T8) [hap, anonymous]
Conchess Plymate Victoria [hap, anonymous]
-rw-r--r-- | hash/conchess.xml | 30 | ||||
-rw-r--r-- | hash/conchess_plymate.xml | 18 | ||||
-rw-r--r-- | hash/conchess_standard.xml | 18 | ||||
-rw-r--r-- | src/mame/drivers/conchess.cpp | 100 | ||||
-rw-r--r-- | src/mame/mame.lst | 2 |
5 files changed, 118 insertions, 50 deletions
diff --git a/hash/conchess.xml b/hash/conchess.xml deleted file mode 100644 index 68fe6b482c4..00000000000 --- a/hash/conchess.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd"> - -<softwarelist name="conchess" description="Conchess Modules"> - - <software name="l"> - <description>Conchess L</description> - <year>1983</year> - <publisher>Consumenta Computer / Loproc</publisher> - <part name="cart" interface="conchess"> - <dataarea name="rom" size="0x4000"> - <rom value="0x00" size="0x2000" offset="0x0000" loadflag="fill" /> - <rom name="l_book.bin" size="0x2000" crc="a2e2682f" sha1="a0cd3297e46943eaff2466c65dde0857828ff929" offset="0x2000" /> - </dataarea> - </part> - </software> - - <software name="l16" supported="no"> - <description>Conchess L16</description> - <year>1985</year> - <publisher>Systemhuset / Loproc</publisher> - <part name="cart" interface="conchess"> - <dataarea name="rom" size="0x4000"> - <rom name="l16_e2_4_6.bin" size="0x2000" crc="adb018c5" sha1="a353c0870219aa250d16f6989eeb14b00c491410" offset="0x0000" /> - <rom name="l16_e1_6_8.bin" size="0x2000" crc="b6768444" sha1="40a9bc67015235da1c9711937c2b03c6606b1a95" offset="0x2000" /> - </dataarea> - </part> - </software> - -</softwarelist> diff --git a/hash/conchess_plymate.xml b/hash/conchess_plymate.xml new file mode 100644 index 00000000000..55790e708a4 --- /dev/null +++ b/hash/conchess_plymate.xml @@ -0,0 +1,18 @@ +<?xml version="1.0"?> +<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd"> + +<softwarelist name="conchess_plymate" description="Conchess Plymate Modules"> + + <software name="l16"> + <description>Conchess L16</description> + <year>1985</year> + <publisher>Systemhuset / Loproc</publisher> + <part name="cart" interface="conchess_cart"> + <dataarea name="rom" size="0x4000"> + <rom name="l16_e2_4_6.bin" size="0x2000" crc="adb018c5" sha1="a353c0870219aa250d16f6989eeb14b00c491410" offset="0x0000" /> + <rom name="l16_e1_6_8.bin" size="0x2000" crc="b6768444" sha1="40a9bc67015235da1c9711937c2b03c6606b1a95" offset="0x2000" /> + </dataarea> + </part> + </software> + +</softwarelist> diff --git a/hash/conchess_standard.xml b/hash/conchess_standard.xml new file mode 100644 index 00000000000..8a061afb5e4 --- /dev/null +++ b/hash/conchess_standard.xml @@ -0,0 +1,18 @@ +<?xml version="1.0"?> +<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd"> + +<softwarelist name="conchess_standard" description="Conchess Standard Modules"> + + <software name="l"> + <description>Conchess L</description> + <year>1983</year> + <publisher>Consumenta Computer / Loproc</publisher> + <part name="cart" interface="conchess_cart"> + <dataarea name="rom" size="0x4000"> + <rom value="0x00" size="0x2000" offset="0x0000" loadflag="fill" /> + <rom name="l_book.bin" size="0x2000" crc="a2e2682f" sha1="a0cd3297e46943eaff2466c65dde0857828ff929" offset="0x2000" /> + </dataarea> + </part> + </software> + +</softwarelist> diff --git a/src/mame/drivers/conchess.cpp b/src/mame/drivers/conchess.cpp index 5f35dcd514f..0d854e37921 100644 --- a/src/mame/drivers/conchess.cpp +++ b/src/mame/drivers/conchess.cpp @@ -10,9 +10,11 @@ and Johan Enroth. After Consumenta went under in 1983, the Conchess brand was continued by Systemhuset, Enroth's company. TODO: -- add more chess modules -- L16 library module does not work, ROM seems scrambled, or maybe incompatible - with 1st program version +- concplyv library module (L/L16 don't work, manual says it has its own add-on) +- concplyv unmapped reads/writes +- verify irq/beeper for concply/concplyv, though it is probably correct + +------------------------------------------------------------------------------- Hardware notes: @@ -29,6 +31,21 @@ A0 (untitled standard pack-in module): - 3*8KB ROM, 4KB RAM(2*TMM2016P) - TTL, beeper +note: XTAL goes to 4020, 4020 /2 goes to CPU clock, and other dividers to +IRQ and beeper. On A0, IRQ is active for ~31.2us. + +P(A1) + M(A0) (Princhess) +- dual-module, each module has its own 6502 +- ? + +T8 (Plymate Amsterdam) +- R65C02P4 @ 4MHz (8MHz XTAL) +- 32KB ROM, rest similar to A0 + +A3 (Plymate Victoria) +- W65C02S8P-14 @ 6.144Mhz (12.288MHz XTAL) +- 32KB ROM, rest similar to A0 + Library modules: - L: small PCB, PCB label: CCL L-2, 8KB EPROM no label - L16: 2*8KB EPROM (have no photo of PCB) @@ -37,8 +54,9 @@ Library modules: #include "emu.h" #include "cpu/m6502/m6502.h" +#include "cpu/m6502/m65c02.h" +#include "cpu/m6502/r65c02.h" #include "machine/sensorboard.h" -#include "machine/timer.h" #include "sound/beep.h" #include "video/pwm.h" #include "bus/generic/slot.h" @@ -57,7 +75,6 @@ public: conchess_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), - m_irq_on(*this, "irq_on"), m_display(*this, "display"), m_board(*this, "board"), m_beeper(*this, "beeper"), @@ -66,6 +83,8 @@ public: // machine configs void concstd(machine_config &config); + void concply(machine_config &config); + void concplyv(machine_config &config); protected: virtual void machine_start() override; @@ -73,7 +92,6 @@ protected: private: // devices/pointers required_device<cpu_device> m_maincpu; - required_device<timer_device> m_irq_on; required_device<pwm_display_device> m_display; required_device<sensorboard_device> m_board; required_device<beep_device> m_beeper; @@ -82,10 +100,6 @@ private: // address maps void main_map(address_map &map); - // periodic interrupts - template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); } - template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); } - // I/O handlers DECLARE_READ8_MEMBER(input_r); DECLARE_WRITE8_MEMBER(leds_w); @@ -150,7 +164,7 @@ void conchess_state::main_map(address_map &map) map(0x1060, 0x106f).w(FUNC(conchess_state::leds_w)); map(0x1800, 0x1800).w(FUNC(conchess_state::sound_w)); map(0x4000, 0x7fff).r("cartslot", FUNC(generic_slot_device::read_rom)); - map(0xa000, 0xffff).rom(); + map(0x8000, 0xffff).rom(); } @@ -193,17 +207,15 @@ void conchess_state::concstd(machine_config &config) M6502(config, m_maincpu, 4_MHz_XTAL / 2); m_maincpu->set_addrmap(AS_PROGRAM, &conchess_state::main_map); - const attotime irq_period = attotime::from_hz(4_MHz_XTAL / 0x2000); // through 4020 IC, ~488Hz - TIMER(config, m_irq_on).configure_periodic(FUNC(conchess_state::irq_on<M6502_IRQ_LINE>), irq_period); - m_irq_on->set_start_delay(irq_period - attotime::from_nsec(31200)); // active for ~31.2us - TIMER(config, "irq_off").configure_periodic(FUNC(conchess_state::irq_off<M6502_IRQ_LINE>), irq_period); + const attotime irq_period = attotime::from_hz(4_MHz_XTAL / 0x2000); + m_maincpu->set_periodic_int(FUNC(conchess_state::irq0_line_hold), irq_period); SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->set_delay(attotime::from_msec(150)); - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "conchess"); - SOFTWARE_LIST(config, "cart_list").set_original("conchess"); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "conchess_cart"); + SOFTWARE_LIST(config, "cart_list").set_original("conchess_standard"); /* video hardware */ PWM_DISPLAY(config, m_display).set_size(10, 8); @@ -215,6 +227,42 @@ void conchess_state::concstd(machine_config &config) m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25); } +void conchess_state::concply(machine_config &config) +{ + concstd(config); + + /* basic machine hardware */ + R65C02(config.replace(), m_maincpu, 8_MHz_XTAL / 2); + m_maincpu->set_addrmap(AS_PROGRAM, &conchess_state::main_map); + + const attotime irq_period = attotime::from_hz(8_MHz_XTAL / 0x2000); + m_maincpu->set_periodic_int(FUNC(conchess_state::irq0_line_hold), irq_period); + + SOFTWARE_LIST(config.replace(), "cart_list").set_original("conchess_plymate"); + + /* sound hardware */ + BEEP(config.replace(), m_beeper, 8_MHz_XTAL / 0x800); + m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +void conchess_state::concplyv(machine_config &config) +{ + concply(config); + + /* basic machine hardware */ + M65C02(config.replace(), m_maincpu, 12.288_MHz_XTAL/2); + m_maincpu->set_addrmap(AS_PROGRAM, &conchess_state::main_map); + + const attotime irq_period = attotime::from_hz(12.288_MHz_XTAL/2 / 0x2000); + m_maincpu->set_periodic_int(FUNC(conchess_state::irq0_line_hold), irq_period); + + SOFTWARE_LIST(config.replace(), "cart_list").set_original("conchess_victoria"); + + /* sound hardware */ + BEEP(config.replace(), m_beeper, 12.288_MHz_XTAL/2 / 0x800); + m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25); +} + /****************************************************************************** @@ -222,12 +270,22 @@ void conchess_state::concstd(machine_config &config) ******************************************************************************/ ROM_START( concstd ) - ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("c87011.b3", 0xa000, 0x2000, CRC(915e414c) SHA1(80c94712d1c79fa469576c37b80ab66f77c77cc4) ) ROM_LOAD("c87010.b2", 0xc000, 0x2000, CRC(088c8737) SHA1(9f841b3c47de9ef1da8ce98c0a33a919cba873c6) ) ROM_LOAD("c87009.b1", 0xe000, 0x2000, CRC(e1c648e2) SHA1(725a6ac1c69f788a7bba0573e5609b55b12899ac) ) ROM_END +ROM_START( concply ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("conchess_8", 0x8000, 0x8000, CRC(85005b73) SHA1(edbc18d07552cab5951d8a6b738b2eacd73331c1) ) +ROM_END + +ROM_START( concplyv ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("cc8-f.a2", 0x8000, 0x8000, CRC(5b0a1d09) SHA1(07cbc970a8dfbca386396ce5d5cc8ce77ad4ee1b) ) +ROM_END + } // anonymous namespace @@ -236,5 +294,7 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1982, concstd, 0, 0, concstd, conchess, conchess_state, empty_init, "Consumenta Computer / Loproc", "Conchess (standard)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */ +CONS( 1982, concstd, 0, 0, concstd, conchess, conchess_state, empty_init, "Consumenta Computer / Loproc", "Conchess (standard)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1985, concply, 0, 0, concply, conchess, conchess_state, empty_init, "Systemhuset / Loproc", "Conchess Plymate (Amsterdam, T8)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, concplyv, 0, 0, concplyv, conchess, conchess_state, empty_init, "Systemhuset / Loproc", "Conchess Plymate Victoria", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 80613aa2d23..da9fe98f1c2 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -10507,6 +10507,8 @@ comx35n // comx35p // @source:conchess.cpp +concply +concplyv concstd @source:concept.cpp |