From 1b1210fa70a798d293715565518fc9217161b8ef Mon Sep 17 00:00:00 2001 From: Robbbert Date: Thu, 12 Jul 2018 19:46:39 +1000 Subject: [PATCH] (nw) Housekeeping --- src/mame/drivers/a6809.cpp | 277 ------------------------------------ src/mame/drivers/ts3000.cpp | 2 +- 2 files changed, 1 insertion(+), 278 deletions(-) delete mode 100644 src/mame/drivers/a6809.cpp diff --git a/src/mame/drivers/a6809.cpp b/src/mame/drivers/a6809.cpp deleted file mode 100644 index 5e269148804..00000000000 --- a/src/mame/drivers/a6809.cpp +++ /dev/null @@ -1,277 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Robbbert -/*************************************************************************** - - Acorn 6809 - - 2009-05-12 Skeleton driver. - 2013-12-16 Fixed video [Robbbert] - - Acorn System 3 update? - http://acorn.chriswhy.co.uk/8bit_Upgrades/Acorn_6809_CPU.html - - This is a few boards emulated together: - - 6809 main board - - 80x25 video board - - FDC board (to come) - -The video board has a mc6845, and the characters do not go to a character -generator, instead they go to a SAA5050, which has its own CG inbuilt, plus -many other features. - -ToDo: - - FDC (address A00) - - Centronics Printer (VIA port A) - -Commands: -C - Echo to printer ( C '+' turns it on) -D - boot from disk -G - Go -L - Load tape -P - Run from pc reg -R - Display regs -S - Save tape -T - Trace -V - Set breakpoint - -M - Modify memory -MV - Modify memory at breakpoint address -MG - Modify memory from Go address -MP - Modify memory from pc-reg address -MR - Modify regs - -While modifying memory: -, show next address -- show previous address -enter show next address -; exit - - -****************************************************************************/ - -#include "emu.h" -#include "cpu/m6809/m6809.h" -#include "machine/6522via.h" -#include "machine/keyboard.h" -#include "machine/timer.h" -#include "video/saa5050.h" -#include "video/mc6845.h" -#include "imagedev/cassette.h" -#include "sound/wave.h" -#include "emupal.h" -#include "screen.h" -#include "speaker.h" - - -class a6809_state : public driver_device -{ -public: - a6809_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , m_p_videoram(*this, "videoram") - , m_via(*this, "via") - , m_cass(*this, "cassette") - , m_maincpu(*this, "maincpu") - , m_crtc(*this, "mc6845") - { } - - void a6809(machine_config &config); - -private: - void kbd_put(u8 data); - DECLARE_READ8_MEMBER(videoram_r); - DECLARE_WRITE8_MEMBER(a6809_address_w); - DECLARE_WRITE8_MEMBER(a6809_register_w); - DECLARE_WRITE_LINE_MEMBER(cass_w); - DECLARE_MACHINE_RESET(a6809); - TIMER_DEVICE_CALLBACK_MEMBER(a6809_c); - TIMER_DEVICE_CALLBACK_MEMBER(a6809_p); - - void a6809_mem(address_map &map); - - required_shared_ptr m_p_videoram; - uint16_t m_start_address; - uint16_t m_cursor_address; - uint8_t m_cass_data[4]; - bool m_cass_state; - bool m_cassold; - uint8_t m_video_index; - required_device m_via; - required_device m_cass; - required_device m_maincpu; - required_device m_crtc; -}; - - -void a6809_state::a6809_mem(address_map &map) -{ - map.unmap_value_high(); - map(0x0000, 0x03ff).ram(); - map(0x0400, 0x07ff).ram().share("videoram"); - map(0x0800, 0x0800).r(m_crtc, FUNC(mc6845_device::status_r)).w(FUNC(a6809_state::a6809_address_w)); - map(0x0801, 0x0801).r(m_crtc, FUNC(mc6845_device::register_r)).w(FUNC(a6809_state::a6809_register_w)); - map(0x0900, 0x090f).mirror(0xf0).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)); - map(0xf000, 0xf7ff); // optional ROM - map(0xf800, 0xffff).rom().region("maincpu", 0); -} - -/* Input ports */ -static INPUT_PORTS_START( a6809 ) -INPUT_PORTS_END - - -MACHINE_RESET_MEMBER( a6809_state, a6809) -{ - m_via->write_pb0(0); - m_via->write_pb1(0); - m_via->write_pb2(0); - m_via->write_pb3(0); - m_via->write_pb4(0); - m_via->write_pb5(0); - m_via->write_pb6(0); - m_via->write_pb7(0); -} - -READ8_MEMBER( a6809_state::videoram_r ) -{ - offset += m_start_address; - - if (m_cursor_address == offset) - return 0x7f; // cheap cursor - else - return m_p_videoram[offset&0x3ff]; -} - -WRITE8_MEMBER( a6809_state::a6809_address_w ) -{ - m_crtc->address_w( space, 0, data ); - - m_video_index = data & 0x1f; -} - -WRITE8_MEMBER( a6809_state::a6809_register_w ) -{ - uint16_t temp = m_start_address; - uint16_t temq = m_cursor_address; - - m_crtc->register_w( space, 0, data ); - - // Get start address - if (m_video_index == 12) - m_start_address = ((data & 7) << 8 ) | (temp & 0xff); - else - if (m_video_index == 13) - m_start_address = data | (temp & 0x3f00); - - else - // Get cursor address - if (m_video_index == 14) - m_cursor_address = ((data & 7) << 8 ) | (temq & 0xff); - else - if (m_video_index == 15) - m_cursor_address = data | (temq & 0x3f00); -} - -WRITE_LINE_MEMBER( a6809_state::cass_w ) -{ - m_cass_state = state; -} - -TIMER_DEVICE_CALLBACK_MEMBER(a6809_state::a6809_c) -{ - m_cass_data[3]++; - - if (m_cass_state != m_cassold) - { - m_cass_data[3] = 0; - m_cassold = m_cass_state; - } - - if (m_cass_state) - m_cass->output(BIT(m_cass_data[3], 0) ? -1.0 : +1.0); // 2400Hz - else - m_cass->output(BIT(m_cass_data[3], 1) ? -1.0 : +1.0); // 1200Hz -} - -TIMER_DEVICE_CALLBACK_MEMBER(a6809_state::a6809_p) -{ - /* cassette - turn 1200/2400Hz to a bit */ - m_cass_data[1]++; - uint8_t cass_ws = (m_cass->input() > +0.03) ? 1 : 0; - - if (cass_ws != m_cass_data[0]) - { - m_cass_data[0] = cass_ws; - m_via->write_pb7(m_cass_data[1] < 12); - m_cass_data[1] = 0; - } -} - -void a6809_state::kbd_put(u8 data) -{ - uint8_t d = data & 0x7f; - if (d == 8) d = 0x7f; // allow backspace to work - - m_via->write_pb0(BIT(d, 0)); - m_via->write_pb1(BIT(d, 1)); - m_via->write_pb2(BIT(d, 2)); - m_via->write_pb3(BIT(d, 3)); - m_via->write_pb4(BIT(d, 4)); - m_via->write_pb5(BIT(d, 5)); - m_via->write_pb6(BIT(d, 6)); - m_via->write_cb1(1); - m_via->write_cb1(0); -} - -MACHINE_CONFIG_START(a6809_state::a6809) - /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(4'000'000)) - MCFG_DEVICE_PROGRAM_MAP(a6809_mem) - MCFG_MACHINE_RESET_OVERRIDE(a6809_state, a6809) - - /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_SIZE(40 * 12, 25 * 20) - MCFG_SCREEN_VISIBLE_AREA(0, 40 * 12 - 1, 0, 25 * 20 - 1) - MCFG_SCREEN_UPDATE_DEVICE("saa5050", saa5050_device, screen_update) - MCFG_PALETTE_ADD("palette", 8) - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); - - /* Devices */ - MCFG_DEVICE_ADD("via", VIA6522, XTAL(4'000'000) / 4) - MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, a6809_state, cass_w)) - MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("maincpu", M6809_IRQ_LINE)) - - MCFG_MC6845_ADD("mc6845", HD6845, "screen", XTAL(4'000'000) / 2) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(12) - - MCFG_DEVICE_ADD("saa5050", SAA5050, 6000000) - MCFG_SAA5050_D_CALLBACK(READ8(*this, a6809_state, videoram_r)) - MCFG_SAA5050_SCREEN_SIZE(40, 25, 40) - - MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(PUT(a6809_state, kbd_put)) - MCFG_CASSETTE_ADD( "cassette" ) - MCFG_TIMER_DRIVER_ADD_PERIODIC("a6809_c", a6809_state, a6809_c, attotime::from_hz(4800)) - MCFG_TIMER_DRIVER_ADD_PERIODIC("a6809_p", a6809_state, a6809_p, attotime::from_hz(40000)) -MACHINE_CONFIG_END - -/* ROM definition */ -ROM_START( a6809 ) - ROM_REGION( 0x800, "maincpu", 0 ) - ROM_LOAD( "acorn6809.bin", 0x000, 0x800, CRC(5fa5b632) SHA1(b14a884bf82a7a8c23bc03c2e112728dd1a74896) ) - - ROM_REGION( 0x100, "proms", 0 ) - ROM_LOAD( "acorn6809.ic11", 0x0000, 0x0100, CRC(7908317d) SHA1(e0f1e5bd3a8598d3b62bc432dd1f3892ed7e66d8) ) // address decoder -ROM_END - -/* Driver */ - -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, a6809, 0, 0, a6809, a6809, a6809_state, empty_init, "Acorn", "System 3 (6809 CPU)", 0 ) diff --git a/src/mame/drivers/ts3000.cpp b/src/mame/drivers/ts3000.cpp index 3d297f2e586..148be14f9a4 100644 --- a/src/mame/drivers/ts3000.cpp +++ b/src/mame/drivers/ts3000.cpp @@ -5,7 +5,7 @@ 2017-10-28 Skeleton Televideo TS-3000. CPU is 8088. Other chips are: 8259, 8253, 8237, 8255, NS8250, uPD765AC, MM58167AN. -Crystals are: 18.432, 16.000, 24.000, 14.31818, 4.7727266. There's a barrel-type backup battery, and a bank of 8 dispswitches. +Crystals are: 18.432, 16.000, 24.000, 14.31818, 4.7727266. There's a barrel-type backup battery, and a bank of 8 dipswitches. There are 25-pin serial and parallel ports, and a FDC connector. There's an undumped prom labelled "U20 V1.0" at position U20. ************************************************************************************************************************************/