summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2019-12-29 22:01:19 -0500
committer AJR <ajrhacker@users.noreply.github.com>2019-12-29 22:02:01 -0500
commitc9b6949c693bf1d0a33bc22ab14afdf109aaa4c8 (patch)
treef6133b1705b8c8a3e3891a1e023e7b574e66ec66
parent1363b36e3f4bd1766a51f01610f1506f597e821e (diff)
New machines marked as NOT_WORKING
---------------------------------- AT&T 610 Business Communication Terminal [Bitsavers]
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/emu/xtal.cpp2
-rw-r--r--src/mame/drivers/att610.cpp141
-rw-r--r--src/mame/mame.lst3
-rw-r--r--src/mame/mess.flt1
5 files changed, 148 insertions, 0 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index fc5bf321b4b..60d29143f4e 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -1753,6 +1753,7 @@ files {
createMESSProjects(_target, _subtarget, "att")
files {
MAME_DIR .. "src/mame/drivers/att4425.cpp",
+ MAME_DIR .. "src/mame/drivers/att610.cpp",
MAME_DIR .. "src/mame/drivers/att630.cpp",
MAME_DIR .. "src/mame/drivers/unixpc.cpp",
}
diff --git a/src/emu/xtal.cpp b/src/emu/xtal.cpp
index 713911abe84..9c4081a1a3d 100644
--- a/src/emu/xtal.cpp
+++ b/src/emu/xtal.cpp
@@ -285,6 +285,7 @@ const double XTAL::known_xtals[] = {
21'281'370, /* 21.28137_MHz_XTAL Radica Tetris (PAL) */
21'300'000, /* 21.3_MHz_XTAL - */
21'477'272, /* 21.477272_MHz_XTAL BMC bowling, some Data East 90's games, Vtech Socrates; (6x NTSC subcarrier) */
+ 21'667'500, /* 21.6675_MHz_XTAL AT&T 610 (80-column display clock) */
22'000'000, /* 22_MHz_XTAL - */
22'032'000, /* 22.032_MHz_XTAL Intellec Series II I/O controller */
22'096'000, /* 22.096_MHz_XTAL ADDS Viewpoint 122 */
@@ -324,6 +325,7 @@ const double XTAL::known_xtals[] = {
27'164'000, /* 27.164_MHz_XTAL Typically used on 90's Taito PCBs to drive the custom chips */
27'210'900, /* 27.2109_MHz_XTAL LA Girl */
27'562'000, /* 27.562_MHz_XTAL Visual 220 */
+ 27'720'000, /* 27.72_MHz_XTAL AT&T 610 (132-column display clock) */
28'000'000, /* 28_MHz_XTAL - */
28'322'000, /* 28.322_MHz_XTAL Saitek RISC 2500, Mephisto Montreux */
28'375'160, /* 28.37516_MHz_XTAL Amiga PAL systems */
diff --git a/src/mame/drivers/att610.cpp b/src/mame/drivers/att610.cpp
new file mode 100644
index 00000000000..098a8264e1a
--- /dev/null
+++ b/src/mame/drivers/att610.cpp
@@ -0,0 +1,141 @@
+// license:BSD-3-Clause
+// copyright-holders:AJR
+/****************************************************************************
+
+ Skeleton driver for AT&T 610 Business Communication Terminal (BCT).
+
+ The video ASIC is a 68-pin PLCC marked:
+
+ (M) AT&T
+ 1006B2*
+ 456555
+ 18289S 71
+
+ Another custom IC (28-pin DIP) is next to the character generator:
+
+ WE
+ 492A*
+ 18186 71
+
+****************************************************************************/
+
+#include "emu.h"
+
+//#include "bus/rs232/rs232.h"
+#include "cpu/z80/z80.h"
+#include "machine/mc68681.h"
+#include "machine/z80ctc.h"
+#include "machine/z80sio.h"
+#include "screen.h"
+
+class att610_state : public driver_device
+{
+public:
+ att610_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_screen(*this, "screen")
+ , m_rom(*this, "rom")
+ {
+ }
+
+ void att610(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+private:
+ u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+ void cart_select_w(u8 data);
+
+ void mem_map(address_map &map);
+ void io_map(address_map &map);
+
+ required_device<z80_device> m_maincpu;
+ required_device<screen_device> m_screen;
+ required_memory_bank m_rom;
+};
+
+void att610_state::machine_start()
+{
+ m_rom->configure_entry(0, memregion("firmware")->base());
+ m_rom->configure_entry(1, memregion("cartridge")->base());
+}
+
+void att610_state::machine_reset()
+{
+ m_rom->set_entry(0);
+}
+
+u32 att610_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ return 0;
+}
+
+void att610_state::cart_select_w(u8 data)
+{
+ m_rom->set_entry(BIT(data, 0));
+}
+
+void att610_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x5fff).bankr("rom");
+ map(0xc000, 0xffff).ram();
+}
+
+void att610_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
+ map(0x10, 0x10).w(FUNC(att610_state::cart_select_w));
+ map(0x60, 0x63).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x70, 0x7f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write));
+}
+
+
+static INPUT_PORTS_START(att610)
+ // TODO: supports 103-key (56K430/ACZ) and 98-key (56K420/ADA) keyboards
+INPUT_PORTS_END
+
+static const z80_daisy_config daisy_chain[] =
+{
+ { "sio" },
+ { "ctc" },
+ { nullptr }
+};
+
+void att610_state::att610(machine_config &config)
+{
+ Z80(config, m_maincpu, 27.72_MHz_XTAL / 7); // MK3880N-4; CPU clock guessed
+ m_maincpu->set_addrmap(AS_PROGRAM, &att610_state::mem_map);
+ m_maincpu->set_addrmap(AS_IO, &att610_state::io_map);
+ m_maincpu->set_daisy_config(daisy_chain);
+
+ z80ctc_device &ctc(Z80CTC(config, "ctc", 27.72_MHz_XTAL / 7)); // Z8430APS
+ ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+
+ z80sio_device &sio(Z80SIO(config, "sio", 27.72_MHz_XTAL / 7)); // Z8441APS (SIO/1)
+ sio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+
+ SCN2681(config, "duart", 3'686'400); // MC2681P (adjacent XTAL not legible)
+
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER, rgb_t::green());
+ m_screen->set_raw(21.6675_MHz_XTAL, 963, 0, 720, 375, 0, 351);
+ //m_screen->set_raw(27.72_MHz_XTAL, 1232, 0, 924, 375, 0, 351);
+ m_screen->set_screen_update(FUNC(att610_state::screen_update));
+}
+
+ROM_START(att610)
+ ROM_REGION(0x6000, "firmware", 0)
+ ROM_LOAD("455798-1.d4", 0x0000, 0x2000, CRC(4a704dbe) SHA1(728bf1e5edacfb9749f795e3c2fd58cef9f509d3) BAD_DUMP) // MBM27128-25 (dumped half size)
+ ROM_LOAD("455799-1.b4", 0x4000, 0x2000, CRC(7fd75ee0) SHA1(597b23c43b3f283b49b51b9dee60109ff683b041)) // MBM2764-25
+
+ ROM_REGION(0x6000, "cartridge", ROMREGION_ERASE00) // optional
+
+ ROM_REGION(0x2000, "chargen", 0)
+ ROM_LOAD("att-tc85_456309-1.h7", 0x0000, 0x2000, CRC(d313e022) SHA1(a24df1d8d8c55413e4cdb0734783c0fa244bdf00)) // HN27C64G-15
+ROM_END
+
+COMP(1985, att610, 0, 0, att610, att610, att610_state, empty_init, "AT&T", "610 Business Communication Terminal", MACHINE_IS_SKELETON)
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 73a82094777..c8c65eaf1bf 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -2974,6 +2974,9 @@ atrbonpk
@source:att4425.cpp
att4425 //
+@source:att610.cpp
+att610 //
+
@source:att630.cpp
att630 //
att730x //
diff --git a/src/mame/mess.flt b/src/mame/mess.flt
index 7a84d298ce3..4c03f421313 100644
--- a/src/mame/mess.flt
+++ b/src/mame/mess.flt
@@ -84,6 +84,7 @@ atm.cpp
atom.cpp
atpci.cpp
att4425.cpp
+att610.cpp
att630.cpp
attache.cpp
aussiebyte.cpp