mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
(nw) more small tidyups of my drivers
This commit is contained in:
parent
16603f32b8
commit
5c401ae23f
@ -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)
|
||||
|
@ -1,5 +1,5 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Robbbert, Sergey Svishchev
|
||||
// copyright-holders:Sergey Svishchev
|
||||
/***************************************************************************
|
||||
|
||||
IBM 6580 Displaywriter.
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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 )
|
||||
|
@ -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 */
|
||||
|
@ -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)
|
||||
|
@ -1,5 +1,5 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Robbbert, Barry Rodewald
|
||||
// copyright-holders:Barry Rodewald
|
||||
/***************************************************************************
|
||||
|
||||
Wicat - various systems.
|
||||
|
Loading…
Reference in New Issue
Block a user