mirror of
https://github.com/holub/mame
synced 2025-07-05 18:08:04 +03:00
swtpc: Split into two systems (SWTBUG and MIKBUG)
- Define alternate XTAL for MIKBUG version (nw) - Add RAM configuration and MC14411 device (nw) - Reduce terminal baud rate to the supported maximum of 1200 (nw) - Add notes for future reference (nw)
This commit is contained in:
parent
fe9113c5ec
commit
02a4917f30
@ -58,6 +58,7 @@ enum
|
||||
XTAL_1MHz = 1000000, /* Used to drive OKI M6295 chips */
|
||||
XTAL_1_2944MHz = 1294400, /* BBN BitGraph PSG */
|
||||
XTAL_1_75MHz = 1750000, /* RCA CDP1861 */
|
||||
XTAL_1_7971MHz = 1797100, /* SWTPC 6800 (with MIKBUG) */
|
||||
XTAL_1_8432MHz = 1843200, /* Bondwell 12/14 */
|
||||
XTAL_1_9968MHz = 1996800, /* NEC PC-98xx */
|
||||
XTAL_2MHz = 2000000,
|
||||
|
@ -2,20 +2,27 @@
|
||||
// copyright-holders:Robbbert
|
||||
/***************************************************************************
|
||||
|
||||
SWTPC 6800
|
||||
SWTPC 6800 Computer System
|
||||
|
||||
10/12/2009 Skeleton driver.
|
||||
|
||||
http://www.swtpc.com/mholley/swtpc_6800.htm
|
||||
|
||||
bios 0 (SWTBUG) is made for a PIA (parallel) interface.
|
||||
bios 1 (MIKBUG) is made for a ACIA (serial) interface at the same address.
|
||||
MIKBUG is made for a PIA (parallel) interface.
|
||||
SWTBUG is made for a ACIA (serial) interface at the same address.
|
||||
MIKBUG will actually read the bits as they arrive and assemble a byte.
|
||||
Its delay loops are based on an underclocked XTAL.
|
||||
|
||||
Note: All commands must be in uppercase. See the SWTBUG manual.
|
||||
|
||||
ToDo:
|
||||
- Split into 2 systems each with different hardware.
|
||||
- Support selectable baud rate clocks (110, 150, 300, 600, 1200)
|
||||
- Implement interface bus slots to allow selection of either MP-S
|
||||
(ACIA) or MP-C or MP-L (PIA) for I/O slot #1 or seven other
|
||||
fixed-address I/O slots
|
||||
- Add DC-4 (WD1797 FDC) interface board as I/O slot option
|
||||
- Emulate MP-A2 revision of CPU board, with four 2716 ROM sockets
|
||||
and allowance for extra RAM boards at A000-BFFF and C000-DFFF
|
||||
|
||||
|
||||
Commands:
|
||||
@ -38,7 +45,8 @@ Z Goto Prom (0xC000)
|
||||
#include "emu.h"
|
||||
#include "cpu/m6800/m6800.h"
|
||||
#include "machine/6850acia.h"
|
||||
#include "machine/clock.h"
|
||||
#include "machine/mc14411.h"
|
||||
#include "machine/ram.h"
|
||||
#include "bus/rs232/rs232.h"
|
||||
|
||||
class swtpc_state : public driver_device
|
||||
@ -47,54 +55,94 @@ public:
|
||||
swtpc_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_ram(*this, "ram")
|
||||
, m_brg(*this, "brg")
|
||||
{ }
|
||||
|
||||
virtual void machine_start() override;
|
||||
|
||||
private:
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<ram_device> m_ram;
|
||||
required_device<mc14411_device> m_brg;
|
||||
};
|
||||
|
||||
static ADDRESS_MAP_START(mem_map, AS_PROGRAM, 8, swtpc_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x8004, 0x8004) AM_MIRROR(2) AM_DEVREADWRITE("uart", acia6850_device, status_r, control_w)
|
||||
AM_RANGE(0x8005, 0x8005) AM_MIRROR(2) AM_DEVREADWRITE("uart", acia6850_device, data_r, data_w)
|
||||
AM_RANGE(0xa000, 0xa07f) AM_RAM
|
||||
AM_RANGE(0xe000, 0xe3ff) AM_MIRROR(0x1c00) AM_ROM
|
||||
AM_RANGE(0x8004, 0x8004) AM_MIRROR(2) AM_DEVREADWRITE("acia", acia6850_device, status_r, control_w)
|
||||
AM_RANGE(0x8005, 0x8005) AM_MIRROR(2) AM_DEVREADWRITE("acia", acia6850_device, data_r, data_w)
|
||||
AM_RANGE(0xa000, 0xa07f) AM_RAM // MCM6810
|
||||
AM_RANGE(0xe000, 0xe3ff) AM_MIRROR(0x1c00) AM_ROM AM_REGION("mcm6830", 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/* Input ports */
|
||||
static INPUT_PORTS_START( swtpc )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static DEVICE_INPUT_DEFAULTS_START( terminal )
|
||||
DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_1200 )
|
||||
DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_1200 )
|
||||
DEVICE_INPUT_DEFAULTS( "RS232_STARTBITS", 0xff, RS232_STARTBITS_1 )
|
||||
DEVICE_INPUT_DEFAULTS( "RS232_DATABITS", 0xff, RS232_DATABITS_8 )
|
||||
DEVICE_INPUT_DEFAULTS( "RS232_PARITY", 0xff, RS232_PARITY_NONE )
|
||||
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 )
|
||||
DEVICE_INPUT_DEFAULTS_END
|
||||
|
||||
|
||||
void swtpc_state::machine_start()
|
||||
{
|
||||
m_brg->rsa_w(0);
|
||||
m_brg->rsb_w(1);
|
||||
|
||||
m_maincpu->space(AS_PROGRAM).install_ram(0, m_ram->size() - 1, m_ram->pointer());
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( swtpc )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M6800, XTAL_1MHz)
|
||||
MCFG_CPU_ADD("maincpu", M6800, XTAL_1_8432MHz / 2)
|
||||
MCFG_CPU_PROGRAM_MAP(mem_map)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_DEVICE_ADD("uart_clock", CLOCK, 153600)
|
||||
MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("uart", acia6850_device, write_txc))
|
||||
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("uart", acia6850_device, write_rxc))
|
||||
MCFG_DEVICE_ADD("brg", MC14411, XTAL_1_8432MHz)
|
||||
MCFG_MC14411_F7_CB(DEVWRITELINE("acia", acia6850_device, write_txc))
|
||||
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("acia", acia6850_device, write_rxc))
|
||||
// F8, F9, F11, F13 also present on system bus
|
||||
|
||||
MCFG_DEVICE_ADD("uart", ACIA6850, XTAL_1MHz)
|
||||
MCFG_DEVICE_ADD("acia", ACIA6850, 0)
|
||||
MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))
|
||||
MCFG_ACIA6850_RTS_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_rts))
|
||||
|
||||
MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "terminal")
|
||||
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart", acia6850_device, write_rxd))
|
||||
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart", acia6850_device, write_cts))
|
||||
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("acia", acia6850_device, write_rxd))
|
||||
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("acia", acia6850_device, write_cts))
|
||||
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", terminal)
|
||||
|
||||
MCFG_RAM_ADD(RAM_TAG)
|
||||
MCFG_RAM_DEFAULT_SIZE("2K")
|
||||
MCFG_RAM_EXTRA_OPTIONS("4K,8K,12K,16K,20K,24K,28K,32K")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( swtpcm, swtpc )
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_CLOCK(XTAL_1_7971MHz / 2)
|
||||
|
||||
MCFG_DEVICE_MODIFY("brg")
|
||||
MCFG_DEVICE_CLOCK(XTAL_1_7971MHz)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/* ROM definition */
|
||||
ROM_START( swtpc )
|
||||
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_SYSTEM_BIOS( 0, "swt", "SWTBUG" )
|
||||
ROMX_LOAD( "swtbug.bin", 0xe000, 0x0400, CRC(f9130ef4) SHA1(089b2d2a56ce9526c3e78ce5d49ce368b9eabc0c), ROM_BIOS(1))
|
||||
ROM_SYSTEM_BIOS( 1, "mik", "MIKBUG" )
|
||||
ROMX_LOAD( "mikbug.bin", 0xe000, 0x0400, CRC(e7f4d9d0) SHA1(5ad585218f9c9c70f38b3c74e3ed5dfe0357621c), ROM_BIOS(2))
|
||||
ROM_REGION( 0x0400, "mcm6830", 0 )
|
||||
ROM_LOAD("swtbug.bin", 0x0000, 0x0400, CRC(f9130ef4) SHA1(089b2d2a56ce9526c3e78ce5d49ce368b9eabc0c))
|
||||
ROM_END
|
||||
|
||||
ROM_START( swtpcm )
|
||||
ROM_REGION( 0x0400, "mcm6830", 0 )
|
||||
ROM_LOAD("mikbug.bin", 0x0000, 0x0400, CRC(e7f4d9d0) SHA1(5ad585218f9c9c70f38b3c74e3ed5dfe0357621c))
|
||||
ROM_END
|
||||
|
||||
/* Driver */
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 1975, swtpc, 0, 0, swtpc, swtpc, swtpc_state, 0, "Southwest Technical Products Corporation", "SWTPC 6800", MACHINE_NO_SOUND_HW )
|
||||
COMP( 1977, swtpc, 0, 0, swtpc, swtpc, swtpc_state, 0, "Southwest Technical Products Corporation", "SWTPC 6800 Computer System (with SWTBUG)", MACHINE_NO_SOUND_HW )
|
||||
COMP( 1975, swtpcm, swtpc, 0, swtpcm, swtpc, swtpc_state, 0, "Southwest Technical Products Corporation", "SWTPC 6800 Computer System (with MIKBUG)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
|
||||
|
@ -35566,6 +35566,7 @@ svmu // 1998 Sega Visual Memory Unit
|
||||
|
||||
@source:swtpc.cpp
|
||||
swtpc //
|
||||
swtpcm //
|
||||
|
||||
@source:swtpc09.cpp
|
||||
swtpc09 // S09, DMF2 Floppy SBUG rom - FLEX
|
||||
|
Loading…
Reference in New Issue
Block a user