From f5eed931c65cbc62cfc230d164320ef3fba60194 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Larsson=20Edstr=C3=B6m?= Date: Wed, 25 Oct 2017 17:39:49 +0200 Subject: T4490 added, Terco CNC Mill 4490 skeleton driver (#2745) * t4490: added old work, not yet compiled * t4490: Terco CNC Mill 4490 skeleton driver added * t4490: Added PCB layouts and cleaned things up a bit --- scripts/target/mame/mess.lua | 1 + src/mame/drivers/terco.cpp | 314 +++++++++++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 5 +- 3 files changed, 319 insertions(+), 1 deletion(-) create mode 100644 src/mame/drivers/terco.cpp diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 916c4be6903..323cf42c674 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -3565,6 +3565,7 @@ files { MAME_DIR .. "src/mame/drivers/tavernie.cpp", MAME_DIR .. "src/mame/drivers/tecnbras.cpp", MAME_DIR .. "src/mame/drivers/terak.cpp", + MAME_DIR .. "src/mame/drivers/terco.cpp", MAME_DIR .. "src/mame/drivers/ti630.cpp", MAME_DIR .. "src/mame/drivers/tsispch.cpp", MAME_DIR .. "src/mame/includes/tsispch.h", diff --git a/src/mame/drivers/terco.cpp b/src/mame/drivers/terco.cpp new file mode 100644 index 00000000000..e027b23aefb --- /dev/null +++ b/src/mame/drivers/terco.cpp @@ -0,0 +1,314 @@ +// license:BSD-3-Clause +// copyright-holders:Joakim Larsson Edstrom +/* + * The 4490 CNC Mill Control unit + * + * History of Terco + *------------------ + * Terco, founded 1963, is a privatelly held company in Sweden that develops and distribute equipment for + * technical vocational educations worldwide. In the mid 80:ies they had a number of state of the art + * products for educations on CNC machines, both mill and lathe, all based on Motorola 8-bit CPU:s. + * + * Known products + * -------------- + * T4426 - CNC Programming Station, a ruggedized Tandy Color Computer + monitor in a metal case (see coco12.cpp) + * T4490 - CNC Control System, a complete system including a small milling machine, can be programmed by T4426 + * T???? - A CAD/CAM sold in small numbers, an office computer based on a Tandy Color Computer PCB + two floppy drives + * + * Misc links about the machines supported by this driver. + *-------------------------------------------------------- + * https://www.westauction.com/auction/712/item/terco-cnc-programming-system-37047 + * https://kiertonet.fi/tyokalut-ja-koneet/koneet-ja-laitteet/cnc-pora-45-terco-4403 + * http://www.repair--parts.com/Repair-Electronics-/Rectifiers-/Terco-table-top-cnc-mill.php5 + * + * TODO: + * ------ + * - Display + * - Clickable Artwork + * - Serial communication for printer, plotter, paper tape and downlaod from the T4426 + * - Identify expansion bus + * - Keyboard Controller + * - Dump keyboard ROM + * - Cassette i/f + */ + +#include "emu.h" +#include "cpu/m6800/m6800.h" +#include "machine/6821pia.h" +//#include "machine/6850acia.h" +//#include "machine/kb3600.h" +//#include "machine/mc14411.h" + +#define LOG_SETUP (1U << 1) +#define LOG_READ (1U << 2) +#define LOG_BCD (1U << 3) + +//#define VERBOSE (LOG_BCD|LOG_SETUP) +//#define LOG_OUTPUT_STREAM std::cout + +#include "logmacro.h" + +#define LOGSETUP(...) LOGMASKED(LOG_SETUP, __VA_ARGS__) +#define LOGR(...) LOGMASKED(LOG_READ, __VA_ARGS__) +#define LOGBCD(...) LOGMASKED(LOG_BCD, __VA_ARGS__) + +#ifdef _MSC_VER +#define FUNCNAME __func__ +#else +#define FUNCNAME __PRETTY_FUNCTION__ +#endif +/* + * Identified Chips + * ---------------- + * 11442 - 7-seg driver + * 14411 - Bit Rate Generator + * 1488 - Quad Line EIA-232D Driver + * 1489 - Quad Line EIA-232D Receivers + * 15005 - Reed relay + * 2114 - 4 x 1024 bits of data + * 2732 - 4KB EPROM + * 4527 - BCD Rate Multiplexer + * 555 - analog timer circuit + * 6800 - 8 bit CPU + * 6821 - PIA paralell interface + * 6850 - ACIA serial interface + * 7400 - Quad 2 input NAND gates + * 7402 - Quad 2 input NOR gates + * 7408 - Quad 2 input AND gates + * 7414 - 6 hex schmitt trigger inverters + * 7420 - Dual 4 input NAND gates + * 7421 - Dual 4 input AND gates + * 7476 - Dual JK flip flops with preset and clear + * 7490 - Decade Counters, divide by 2 and divide by 5 outputs + * 74116 - Dual 4-bit latches + * 74138 - 3 to 8 line decoder/demultiplexer + * 74139 - Dual 2 to 4 line decoder/demultiplexer + * 74154 - 4 line to 16 line decoders/multiplexers + * 74164 - 8 bit paralell output serial shift register + * 74174 - 6 D-type flip flops + * 74240 - Inverted 3-state outputs + * 74244 - Non-inverted 3-state outputs + * AY3600 - Keyboard Controller + * CA339 - Quad Voltage Comparators + * CD4050B - CMOS Hex Non-Inverting Buffer and Converter + * CIC2414 - CMOS RAM suspects + * DS1210 - NVRAM controller, inhibits access and supply battery power on power down + * MC6875 - Phase clock generator + * + * Board Layouts + * ------------- + * + * T4490 CPU board + * ______________________________________________________________ + * |\ .. .---. _o|__ + * ||o+----------+ +---+ +---+ .------. +-------+ |470| | | | + * || | 2732 | |CIC| |CIC| |battery |74LS240| | uF| | | | + * ///> | 4490-F | 2414E 2414E | | +-------+ | | | | | + * | +----------+ | | | | | | +-------+ | | | | | + * | | | | | | | |74LS240| | | | | | + * | +----------+ +---+ +---+ | | +-------+ .___. | | | + * | | 2732 | .______. o | | | + * | | 4490-E | +-----+ +-------+ | | | + * | +----------+ |DS1210 |4527BE | +-----------+ | | | + * | +-----+ +-------+ | | | | | + * | +----------+ | 74116N | | | | + * | | 2732 | +-----------+ | | | + * | | 4490-D | +-------+ +-------+ | | | + * | +----------+ |74LS90N| |4527BE | | | | + * | +-------+ +-------+ | | | + * | +----------+ +-----------+ |_| | + * | | 2732 | +-------+ +-------+ | | |___| + * | | 4490-C | | 7476 | |4527BE | | 74116N | o| + * | +----------+ +-------+ +-------+ +-----------+ | + * | | + * | R2 varistor | + * | +---+ R1 +---------+ +-------+ | + * | |555| 3.9K | 74LS244 | |74LS00 | | + * | +---+ +---------+ +-------+ | + * | C1 0.01uF | + * | C2 0.01uF o|__ + * | +----+ _| | + * | -|XTAL| | | | + * | -|8MHz| | | | + * | +----+ +-----------------+ | | | + * | | CPU | +-------+ | | | + * | +-------+ | 68B00 | |74LS139| | | | + * | | 6875L | +-----------------+ +-------+ | | | + * | +-------+ | | | + * | | | | + * | +-------+ +--------+ +--------+ +-------+ | | | + * | | 74LS08| |74LS244 | |74LS244 | |74LS138| | | | + * | +-------+ +--------+ +--------+ +-------+ | | | + * | | | | + * | | | | + * | +-------+ +-------++-------+ +-------+ +-------+ | | | + * | |74LS164| |74LS14 ||74LS02N| |74LS20N| |74LS138| | | | + * \\\> +-------+ +-------++-------+ +-------+ +-------+ |_| | + * || |___| + * ||o o| + * |/---------------------------------------------------------------+ + * + * + * T4490 I/O board + * . ______________________________________________________________ + * |\ o o _o|__ + * ||o 96..+------+.----. +-------+ | | | + * || 72..|BRG ||XTAL| +74LS240| | | | + * ///> +-------+ 48..|14411 ||1.84| +-------+ | | | + * +-+|O|+------+ |CA339A | 36..| || 320| | | | + * +-| ||15005B| +-------+ 24..| |.____. +-------+ | | | + * | | ==|+------+ 18..| | |74LS240| | | | + * | | ==| 12..| | +-------+ | | | + * | | ==| 6..+------+ | | | + * | | ==| +-------+ 3.. .----------. | | | + * | | ==| |1488P | 2..o| 470uF |o +-------+ | | | + * | | ==| +-------+ 1.5 .__________. |74LS244| | | | + * | | ==| 1.1 +----------+ +-------+ | | | + * | | ==| | 2732A | | | | + * +-| |+-------+ +-------+ | 4490-B | | | | + * +-+==||CD4050BE |1489P | +----------+ +-------+ | | | + * \\ |O|+-------+ +-------+ |74LS244| |_| | + * \\---++------+ +------+ +-------+ |___| + * --+ O|PIA | |PIA | +------+ +-----------+ o| + * | ||68B21P| |68B21P| |ACIA | | 2732A | | + * | || | | | |68B50P| | 4490-A | | + * +-+ || | | | | | +-----------+ | + * --| || | | | | | | + * +-+ || | | | | | +-----------+ +-------+ | + * | || | | | +------+ | 2732A | |74LS139| | + * | || | | | | 4490-3 | +-------+ | + * | |+------+ +------+ +-----------+ o|__ + * --+ O +-------+ _| | + * //---+ |74LS00N| | | | + * // ==o== +-------+ | | | + * ==o== | | | + * | +-------+ +-------+ +-------+ +-------+ +-------+ | | | + * | | 2114 | | 2114 | | 2114 | | 2114 | |74LS21N| | | | + * | +-------+ +-------+ +-------+ +-------+ +-------+ | | | + * | | | | + * | +-------+ +-------+ +-------+ +-------+ | | | + * | | 2114 | | 2114 | | 2114 | | 2114 | | | | + * | +-------+ +-------+ +-------+ +-------+ +-------+ | | | + * | |74LS08N| | | | + * | +-------+ +-------+ +-------+ +-------+ +-------+ | | | + * | | 2114 | | 2114 | | 2114 | | 2114 | | | | + * | +-------+ +-------+ +-------+ +-------+ | | | + * | | | | + * \\\> +-------+ +-------+ +-------+ +-------+ +-------+ |_| | + * || | 2114 | | 2114 | | 2114 | | 2114 | |74LS138| |___| + * ||o +-------+ +-------+ +-------+ +-------+ +-------+ o| + * |/---------------------------------------------------------------+ + * + * + * T4490 Front Panel PCB + * .--------------------------------------------------------------------------------------------------------------------. + * | +--------+| + * |+-----+-----+-----+-----+-----+-----+-----+-----+-----+ +-----+ +-----+-----+ | || + * ||11442|11442|11442|11442|11442|11442|11442|11442|11442| |11442| |11442|11442| |74116N || + * |+-----+-----+-----+-----+-----+-----+-----+-----+-----+ +-----+ +-----+-----+ POSITION REGISTER +--------+| + * | +---+---+---+ +---+---+ +---+---+---+ +---+ +---+ +---+---+ +------+ +---+---+---+---+---+---+| + * N |7sg|7sg|7sg| G |7sg|7sg| F |7sg|7sg|7sg| S |7sg| T |7sg| M |7sg|7sg| |sparse| |7sg|7sg|7sg|7sg|7sg|7sg|| + * | |BCD|BCD|BCD| |BCD|BCD| |BCD|BCD|BCD| |BCD| |BCD| |BCD|BCD| |DotLed| |BCD|BCD|BCD|BCD|BCD|BCD|| + * | +---+---+---+ +---+---+ +---+---+---+ +---+ +---+ +---+---+ |matrix| +---+---+---+---+---+---+| + * | BLOCK NBR G-FUNCT FEED-SPEED+-------+SPIN- TOOL +-------+ F- +------++---+---+---+---+---+---+ | + * |PWR RUN MAN EXA LOAD DUMP BBB FULL PAR | 74116 | DLE NBR | 74116 | FUNCT |114|114|114|114|114|114| | + * | O O O O O O O O O +-------+ +-------+ | 42| 42| 42| 42| 42| 42| | + * | +------+ +--------+ +--------+ SYSTEM STATUS | | | | | | | | + * | |74LS00| |74LS240N| |74LS240N| +---+---+---+---+---+---+ | + * | +------+ +--------+ +--------+ | + * ---------------------------------------------------------------------------------------------------------------------- + * O O O O + * ---------------------------------------------------------------------------------------------------------------------- + * |.----.----.----.----.----.----.----.----. .----.----.----.----.----.----.----.----. +-------+ | + * ||STOP|STRT|PROG|EXAM|LOAD|DUMP|BLK |TO | |RST |SET |READ|CHNG|INS |ERA |END |END | |74154J | | + * || | | | |TAPE|TAPE|BBLK| REF| | | REF| | | BLK| BLK| BLK| PRG| DATA +-------+ | + * |'----'----'----'----'----'----'----'----' '----'----'----'----'----'----'----'----' .----.----.----. | + * | +--------+ SYSTEM CONTROL PROGRAMMING CONTROL | | | | | + * | |74LS244N| | 7 | 8 | 9 | | + * | +--------+ +----+----+----+ | + * | | | | | | + * | JOG CONTROL FUNCTION COORDINATE | 4 | 5 | 6 | | + * |.----.----.----. +--------+ .----.----.----. .----.----.----. +----+----+----+ | + * || | | | |74LS174N| | | | | | | | | | | | | | + * || X+ | Y+ | Z+ | +--------+.--. |CTRL| G | F | | X | Y | Z | | 1 | 2 | 3 | | + * |+----+----+----+ | | +----+----+----+ +----+----+----+ +----+----+----+ | + * || | | | +--------+'--' | | | | | | | | | | | | | + * || X- | Y- | Z- | |74LS240N| | S | T | M | | I | J | K | | + | 0 | - | | + * |+----+----+----+ +--------+ +----+---++----+ +----+----+----+ '----'----'----' | + * | +---+ | + * | .-------------------. |74 | | + * | | o o | |240| | + * | | +----+o o+----+|+-----+ | | .-----------------------------------------' + * | | |AY-5|o o| |||PIA | +---+ | + * | | |3600|o o|2732|||68B21| | + * | | |PRO-|o o|TBORD|| | FEED OVERRIDE % | + * | | | 50 |o o| ||| | | + * | | | |o o+----+|| | .--. | + * | | | |o o || | | | | + * | | +----+o o |+-----+ '--' | + * | '-------------------' | + * ---------------------------------------------------------------------------'------------------------------------------ + * O O O O + * ---------------------------------------------------------------------------------------------------------------------- + */ +/* Terco CNC Control Station 4490 */ +class t4490_state : public driver_device +{ +public: + t4490_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + ,m_maincpu(*this, "maincpu") + ,m_pia1(*this, "pia1") + ,m_pia2(*this, "pia2") + //,m_pia3(*this, "pia3") + //,m_acia(*this, "acia") + //,m_brg(*this, "brg") + //,m_ay3600(*this, "ay3600") + { } +private: + required_device m_maincpu; + // virtual void machine_reset() override { m_maincpu->reset(); LOG("--->%s()\n", FUNCNAME); }; + required_device m_pia1; + required_device m_pia2; + //required_device m_pia3; + //required_device m_acia; + //required_device m_brg; + //required_device m_ay3600; +}; + +static ADDRESS_MAP_START( t4490_map, AS_PROGRAM, 8, t4490_state ) + AM_RANGE(0x0000, 0x1fff) AM_RAM + AM_RANGE(0x3000, 0x3fff) AM_ROM AM_REGION("maincpu", 0x3000) + AM_RANGE(0x9500, 0x95ff) AM_RAM + AM_RANGE(0x9036, 0x9037) AM_DEVREADWRITE("pia1", pia6821_device, read, write) + AM_RANGE(0x903a, 0x903b) AM_DEVREADWRITE("pia2", pia6821_device, read, write) +// AM_RANGE(0xc820, 0xc823) AM_DEVREADWRITE("acia", acia6850_device, read, write) + AM_RANGE(0xa000, 0xffff) AM_ROM AM_REGION("maincpu", 0xa000) +ADDRESS_MAP_END + +/* Input ports */ +static INPUT_PORTS_START( t4490 ) +INPUT_PORTS_END + +static MACHINE_CONFIG_START( t4490 ) + MCFG_CPU_ADD("maincpu", M6800, XTAL_8MHz/4) // divided by a MC6875 + MCFG_CPU_PROGRAM_MAP(t4490_map) + + /* devices */ + MCFG_DEVICE_ADD("pia1", PIA6821, 0) + MCFG_DEVICE_ADD("pia2", PIA6821, 0) +MACHINE_CONFIG_END + +ROM_START( t4490 ) + ROM_REGION(0x10000, "maincpu", 0) + ROM_LOAD( "terco4490-3861104.bin", 0x3000, 0x1000, CRC(d5fd17cc) SHA1(9a3564fa69b897ec51b49ad34f2d2696cb78ee9b) ) + ROM_LOAD( "terco4490-A861104.bin", 0xa000, 0x1000, CRC(65b8e7d0) SHA1(633217fc4aa301d87790bb8744b72ef030a4c262) ) + ROM_LOAD( "terco4490-B861104.bin", 0xb000, 0x1000, CRC(5a0ce3f2) SHA1(7ec455b9075454ce5943011a1dfb5725857168f5) ) + ROM_LOAD( "terco4490-C861104.bin", 0xc000, 0x1000, CRC(0627c68c) SHA1(bf733d3ffad3f1e75684e833afc9d10d33ca870f) ) + ROM_LOAD( "terco4490-D861104.bin", 0xd000, 0x1000, CRC(2156476d) SHA1(0d70c6285541746ef15cad0d47b2d752e228abfc) ) + ROM_LOAD( "terco4490-E861104.bin", 0xe000, 0x1000, CRC(b317fa37) SHA1(a2e037a3a88b5d780067a86e52c6f7c103711a98) ) + ROM_LOAD( "terco4490-F861104.bin", 0xf000, 0x1000, CRC(a45bc3e7) SHA1(e12efa9a4c72e4bce1d59ad359ee66d7c3babfa6) ) +ROM_END + +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1986, t4490, 0, 0, t4490, t4490, t4490_state, 0, "Terco AB", "Terco 4490 Mill CNC Control", MACHINE_IS_SKELETON ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index e54b6e9a650..25bae45eebe 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -9785,7 +9785,7 @@ cocoe // Color Computer (Extended BASIC 1.0) cp400 // Prologica CP400 lzcolor64 // Digiponto LZ Color64 mx1600 // Dynacom MX-1600 -t4426 // Terco T4426 CNC programming station +t4426 // Terco 4426 CNC programming station @source:coco3.cpp coco3 // Color Computer 3 (NTSC) @@ -36220,6 +36220,9 @@ temptube // (hack) @source:terak.cpp terak // +@source:terco.cpp +t4490 // Terco 4490 Mill CNC Control (c) 1986 + @source:terracre.cpp amatelas // (c) 1986 amazon // (c) 1986 -- cgit v1.2.3