(nw) more small tidyups of my drivers

This commit is contained in:
Robbbert 2017-11-12 03:57:04 +11:00
parent 16603f32b8
commit 5c401ae23f
9 changed files with 78 additions and 117 deletions

View File

@ -40,34 +40,33 @@ class bbcbc_state : public driver_device
{
public:
bbcbc_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_buttons(*this, "BUTTONS.%u", 0)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_buttons(*this, "BUTTONS.%u", 0)
{ }
required_device<cpu_device> m_maincpu;
required_ioport_array<3> m_buttons;
uint8_t m_input_select;
virtual void machine_start() override;
virtual void machine_reset() override;
DECLARE_READ8_MEMBER(input_r);
DECLARE_WRITE8_MEMBER(input_select_w);
private:
uint8_t m_input_select;
virtual void machine_start() override;
virtual void machine_reset() override;
required_device<cpu_device> m_maincpu;
required_ioport_array<3> m_buttons;
};
#define MAIN_CLOCK XTAL_4_433619MHz
static ADDRESS_MAP_START( bbcbc_prg, AS_PROGRAM, 8, bbcbc_state )
static ADDRESS_MAP_START( mem_map, AS_PROGRAM, 8, bbcbc_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0xbfff) AM_DEVREAD("cartslot", generic_slot_device, read_rom)
AM_RANGE(0xe000, 0xe7ff) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( bbcbc_io, AS_IO, 8, bbcbc_state )
static ADDRESS_MAP_START( io_map, AS_IO, 8, bbcbc_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x7f) AM_DEVREADWRITE_MOD("z80pio", z80pio_device, read, write, rshift<5>)
AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("tms9129", tms9129_device, vram_read, vram_write)
@ -108,8 +107,8 @@ static const z80_daisy_config bbcbc_daisy_chain[] =
static MACHINE_CONFIG_START( bbcbc )
MCFG_CPU_ADD( "maincpu", Z80, MAIN_CLOCK / 8 )
MCFG_CPU_PROGRAM_MAP(bbcbc_prg)
MCFG_CPU_IO_MAP(bbcbc_io)
MCFG_CPU_PROGRAM_MAP(mem_map)
MCFG_CPU_IO_MAP(io_map)
MCFG_Z80_DAISY_CHAIN(bbcbc_daisy_chain)
MCFG_DEVICE_ADD("z80pio", Z80PIO, MAIN_CLOCK/8)

View File

@ -1,5 +1,5 @@
// license:BSD-3-Clause
// copyright-holders:Robbbert, Sergey Svishchev
// copyright-holders:Sergey Svishchev
/***************************************************************************
IBM 6580 Displaywriter.

View File

@ -34,15 +34,14 @@ private:
};
static ADDRESS_MAP_START( rd100_mem, AS_PROGRAM, 8, rd100_state )
static ADDRESS_MAP_START( mem_map, AS_PROGRAM, 8, rd100_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x87ff) AM_RAM
AM_RANGE(0x0000, 0x7fff) AM_RAM
//AM_RANGE(0x8640, 0x8643) // device
//AM_RANGE(0x8700, 0x8700) // device
AM_RANGE(0x8800, 0xffff) AM_ROM AM_REGION("roms", 0x800)
ADDRESS_MAP_END
static ADDRESS_MAP_START( rd100_io, AS_IO, 8, rd100_state )
ADDRESS_MAP_END
/* Input ports */
static INPUT_PORTS_START( rd100 )
INPUT_PORTS_END
@ -89,8 +88,7 @@ MACHINE_RESET_MEMBER( rd100_state, rd100 )
static MACHINE_CONFIG_START( rd100 )
// basic machine hardware
MCFG_CPU_ADD("maincpu",M6809E, XTAL_4MHz) // freq unknown
MCFG_CPU_PROGRAM_MAP(rd100_mem)
MCFG_CPU_IO_MAP(rd100_io)
MCFG_CPU_PROGRAM_MAP(mem_map)
MCFG_MACHINE_RESET_OVERRIDE(rd100_state, rd100)

View File

@ -38,28 +38,27 @@ Other input will either result in '!' message, or halt.
#include "cpu/i8008/i8008.h"
#include "machine/terminal.h"
#define TERMINAL_TAG "terminal"
class sacstate_state : public driver_device
{
public:
sacstate_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_terminal(*this, TERMINAL_TAG)
{
}
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_terminal(*this, "terminal")
{ }
required_device<cpu_device> m_maincpu;
required_device<generic_terminal_device> m_terminal;
DECLARE_READ8_MEMBER(port00_r);
DECLARE_READ8_MEMBER(port01_r);
DECLARE_READ8_MEMBER(port04_r);
DECLARE_WRITE8_MEMBER(port08_w);
void kbd_put(u8 data);
private:
uint8_t m_term_data;
uint8_t m_val;
virtual void machine_reset() override;
required_device<cpu_device> m_maincpu;
required_device<generic_terminal_device> m_terminal;
};
READ8_MEMBER( sacstate_state::port01_r )
@ -105,7 +104,7 @@ static ADDRESS_MAP_START(sacstate_io, AS_IO, 8, sacstate_state)
AM_RANGE(0x01,0x01) AM_READ(port01_r)
AM_RANGE(0x04,0x04) AM_READ(port04_r)
AM_RANGE(0x08,0x08) AM_WRITE(port08_w)
AM_RANGE(0x16,0x16) AM_DEVWRITE(TERMINAL_TAG, generic_terminal_device, write)
AM_RANGE(0x16,0x16) AM_DEVWRITE("terminal", generic_terminal_device, write)
AM_RANGE(0x17,0x1f) AM_WRITENOP
ADDRESS_MAP_END
@ -135,7 +134,7 @@ static MACHINE_CONFIG_START( sacstate )
MCFG_CPU_IO_MAP(sacstate_io)
/* video hardware */
MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0)
MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(sacstate_state, kbd_put))
MACHINE_CONFIG_END

View File

@ -60,19 +60,20 @@ class slc1_state : public driver_device
{
public:
slc1_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_speaker(*this, "speaker")
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_speaker(*this, "speaker")
{ }
required_device<cpu_device> m_maincpu;
required_device<speaker_sound_device> m_speaker;
DECLARE_READ8_MEMBER( io_r );
DECLARE_WRITE8_MEMBER( io_w );
private:
uint8_t m_digit;
bool m_kbd_type;
virtual void machine_reset() override;
virtual void machine_start() override;
required_device<cpu_device> m_maincpu;
required_device<speaker_sound_device> m_speaker;
};
@ -180,14 +181,14 @@ void slc1_state::machine_reset()
***************************************************************************/
static ADDRESS_MAP_START( slc1_map, AS_PROGRAM, 8, slc1_state )
static ADDRESS_MAP_START( mem_map, AS_PROGRAM, 8, slc1_state )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0x4fff)
AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x4000, 0x43ff) AM_RAM AM_MIRROR(0xc00)
ADDRESS_MAP_END
static ADDRESS_MAP_START( slc1_io, AS_IO, 8, slc1_state )
static ADDRESS_MAP_START( io_map, AS_IO, 8, slc1_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_r,io_w)
ADDRESS_MAP_END
@ -255,8 +256,8 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( slc1 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, 2500000)
MCFG_CPU_PROGRAM_MAP(slc1_map)
MCFG_CPU_IO_MAP(slc1_io)
MCFG_CPU_PROGRAM_MAP(mem_map)
MCFG_CPU_IO_MAP(io_map)
/* video hardware */
MCFG_DEFAULT_LAYOUT(layout_slc1)

View File

@ -12,16 +12,11 @@
bios 1 (MIKBUG) is made for a ACIA (serial) interface at the same address.
MIKBUG will actually read the bits as they arrive and assemble a byte.
Since the interface is optional, it is not on the schematics, so I've
looked at the code and come up with something horrible that works.
Note: All commands must be in uppercase. See the SWTBUG manual.
ToDo:
- Add PIA and work out the best way to hook up the keyboard. As can be
seen from the code below, it might be tricky.
- Split into 2 systems each with different hardware.
- Finish conversion to modern.
Commands:
B Breakpoint
@ -42,59 +37,28 @@ Z Goto Prom (0xC000)
#include "emu.h"
#include "cpu/m6800/m6800.h"
#include "machine/terminal.h"
#define TERMINAL_TAG "terminal"
#include "machine/6850acia.h"
#include "machine/clock.h"
#include "bus/rs232/rs232.h"
class swtpc_state : public driver_device
{
public:
swtpc_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_terminal(*this, TERMINAL_TAG)
{
}
DECLARE_READ8_MEMBER(swtpc_status_r);
DECLARE_READ8_MEMBER(swtpc_terminal_r);
DECLARE_READ8_MEMBER(swtpc_tricky_r);
void kbd_put(u8 data);
protected:
virtual void machine_reset() override;
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
{ }
private:
required_device<cpu_device> m_maincpu;
required_device<generic_terminal_device> m_terminal;
uint8_t m_term_data;
};
// bit 0 - ready to receive a character; bit 1 - ready to send a character to the terminal
READ8_MEMBER( swtpc_state::swtpc_status_r )
{
return (m_term_data) ? 3 : 0x82;
}
READ8_MEMBER( swtpc_state::swtpc_terminal_r )
{
uint8_t ret = m_term_data;
m_term_data = 0;
return ret;
}
READ8_MEMBER( swtpc_state::swtpc_tricky_r )
{
uint8_t ret = m_term_data;
return ret;
}
static ADDRESS_MAP_START(swtpc_mem, AS_PROGRAM, 8, swtpc_state)
static ADDRESS_MAP_START(mem_map, AS_PROGRAM, 8, swtpc_state)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE( 0x8004, 0x8004 ) AM_READ(swtpc_status_r)
AM_RANGE( 0x8005, 0x8005 ) AM_READ(swtpc_terminal_r) AM_DEVWRITE(TERMINAL_TAG, generic_terminal_device, write)
AM_RANGE( 0x8007, 0x8007 ) AM_READ(swtpc_tricky_r)
AM_RANGE( 0xa000, 0xa07f ) AM_RAM
AM_RANGE( 0xe000, 0xe3ff ) AM_MIRROR(0x1c00) AM_ROM
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
ADDRESS_MAP_END
/* Input ports */
@ -102,24 +66,23 @@ static INPUT_PORTS_START( swtpc )
INPUT_PORTS_END
void swtpc_state::machine_reset()
{
}
void swtpc_state::kbd_put(u8 data)
{
m_term_data = data;
}
static MACHINE_CONFIG_START( swtpc )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6800, XTAL_1MHz)
MCFG_CPU_PROGRAM_MAP(swtpc_mem)
MCFG_CPU_PROGRAM_MAP(mem_map)
/* video hardware */
MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(swtpc_state, kbd_put))
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("uart", ACIA6850, XTAL_1MHz)
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))
MACHINE_CONFIG_END
/* ROM definition */
@ -134,4 +97,4 @@ 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)
COMP( 1975, swtpc, 0, 0, swtpc, swtpc, swtpc_state, 0, "Southwest Technical Products Corporation", "SWTPC 6800", MACHINE_NO_SOUND_HW )

View File

@ -49,13 +49,14 @@ public:
};
sys2900_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) ,
m_maincpu(*this, "maincpu") { }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu") { }
DECLARE_DRIVER_INIT(sys2900);
uint32_t screen_update_sys2900(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update_sys2900(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
protected:
@ -63,7 +64,7 @@ protected:
};
static ADDRESS_MAP_START(sys2900_mem, AS_PROGRAM, 8, sys2900_state)
static ADDRESS_MAP_START(mem_map, AS_PROGRAM, 8, sys2900_state)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE( 0x0000, 0x07ff ) AM_RAMBANK("boot")
AM_RANGE( 0x0800, 0xefff ) AM_RAM
@ -71,7 +72,7 @@ static ADDRESS_MAP_START(sys2900_mem, AS_PROGRAM, 8, sys2900_state)
AM_RANGE( 0xf800, 0xffff ) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START(sys2900_io, AS_IO, 8, sys2900_state)
static ADDRESS_MAP_START(io_map, AS_IO, 8, sys2900_state)
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xff)
ADDRESS_MAP_END
@ -118,8 +119,8 @@ uint32_t sys2900_state::screen_update_sys2900(screen_device &screen, bitmap_ind1
static MACHINE_CONFIG_START( sys2900 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(sys2900_mem)
MCFG_CPU_IO_MAP(sys2900_io)
MCFG_CPU_PROGRAM_MAP(mem_map)
MCFG_CPU_IO_MAP(io_map)
/* video hardware */

View File

@ -43,14 +43,14 @@ private:
required_region_ptr<u8> m_p_chargen;
};
static ADDRESS_MAP_START(vta2000_mem, AS_PROGRAM, 8, vta2000_state)
static ADDRESS_MAP_START(mem_map, AS_PROGRAM, 8, vta2000_state)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE( 0x0000, 0x5fff ) AM_ROM AM_REGION("roms", 0)
AM_RANGE( 0x8000, 0xc7ff ) AM_RAM AM_SHARE("videoram")
AM_RANGE( 0xc800, 0xc8ff ) AM_ROM AM_REGION("roms", 0x5000)
ADDRESS_MAP_END
static ADDRESS_MAP_START(vta2000_io, AS_IO, 8, vta2000_state)
static ADDRESS_MAP_START(io_map, AS_IO, 8, vta2000_state)
ADDRESS_MAP_GLOBAL_MASK(0xff)
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_END
@ -157,8 +157,8 @@ PALETTE_INIT_MEMBER(vta2000_state, vta2000)
static MACHINE_CONFIG_START( vta2000 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",I8080, XTAL_4MHz / 4)
MCFG_CPU_PROGRAM_MAP(vta2000_mem)
MCFG_CPU_IO_MAP(vta2000_io)
MCFG_CPU_PROGRAM_MAP(mem_map)
MCFG_CPU_IO_MAP(io_map)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)

View File

@ -1,5 +1,5 @@
// license:BSD-3-Clause
// copyright-holders:Robbbert, Barry Rodewald
// copyright-holders:Barry Rodewald
/***************************************************************************
Wicat - various systems.