mirror of
https://github.com/holub/mame
synced 2025-04-28 19:14:55 +03:00
(nw) k8915 : replaced generic keyboard with sio
This commit is contained in:
parent
79b7cb5746
commit
3b8a6ba5d4
@ -2,16 +2,20 @@
|
|||||||
// copyright-holders:Miodrag Milanovic, Robbbert
|
// copyright-holders:Miodrag Milanovic, Robbbert
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
Robotron K8915
|
Robotron K8915
|
||||||
|
|
||||||
30/08/2010 Skeleton driver
|
2010-08-30
|
||||||
|
|
||||||
When it says DIAGNOSTIC RAZ P, press enter.
|
When it says DIAGNOSTIC RAZ P, press enter.
|
||||||
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/z80/z80.h"
|
#include "cpu/z80/z80.h"
|
||||||
|
#include "machine/z80ctc.h"
|
||||||
|
#include "machine/z80sio.h"
|
||||||
|
#include "machine/clock.h"
|
||||||
|
#include "bus/rs232/rs232.h"
|
||||||
#include "machine/keyboard.h"
|
#include "machine/keyboard.h"
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
|
|
||||||
@ -23,38 +27,20 @@ public:
|
|||||||
, m_maincpu(*this, "maincpu")
|
, m_maincpu(*this, "maincpu")
|
||||||
, m_p_videoram(*this, "videoram")
|
, m_p_videoram(*this, "videoram")
|
||||||
, m_p_chargen(*this, "chargen")
|
, m_p_chargen(*this, "chargen")
|
||||||
{
|
{ }
|
||||||
}
|
|
||||||
|
|
||||||
DECLARE_READ8_MEMBER(k8915_52_r);
|
|
||||||
DECLARE_READ8_MEMBER(k8915_53_r);
|
|
||||||
DECLARE_WRITE8_MEMBER(k8915_a8_w);
|
DECLARE_WRITE8_MEMBER(k8915_a8_w);
|
||||||
void kbd_put(u8 data);
|
|
||||||
DECLARE_DRIVER_INIT(k8915);
|
DECLARE_DRIVER_INIT(k8915);
|
||||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint8_t m_framecnt;
|
uint8_t m_framecnt;
|
||||||
uint8_t m_term_data;
|
|
||||||
virtual void machine_reset() override;
|
virtual void machine_reset() override;
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_shared_ptr<uint8_t> m_p_videoram;
|
required_shared_ptr<uint8_t> m_p_videoram;
|
||||||
required_region_ptr<u8> m_p_chargen;
|
required_region_ptr<u8> m_p_chargen;
|
||||||
};
|
};
|
||||||
|
|
||||||
READ8_MEMBER( k8915_state::k8915_52_r )
|
|
||||||
{
|
|
||||||
// get data from ascii keyboard
|
|
||||||
uint8_t ret = m_term_data;
|
|
||||||
m_term_data = 0;
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
READ8_MEMBER( k8915_state::k8915_53_r )
|
|
||||||
{
|
|
||||||
// keyboard status
|
|
||||||
return m_term_data ? 1 : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
WRITE8_MEMBER( k8915_state::k8915_a8_w )
|
WRITE8_MEMBER( k8915_state::k8915_a8_w )
|
||||||
{
|
{
|
||||||
@ -65,17 +51,17 @@ WRITE8_MEMBER( k8915_state::k8915_a8_w )
|
|||||||
membank("boot")->set_entry(1); // rom at 0000
|
membank("boot")->set_entry(1); // rom at 0000
|
||||||
}
|
}
|
||||||
|
|
||||||
static ADDRESS_MAP_START(k8915_mem, AS_PROGRAM, 8, k8915_state)
|
static ADDRESS_MAP_START(mem_map, AS_PROGRAM, 8, k8915_state)
|
||||||
ADDRESS_MAP_UNMAP_HIGH
|
ADDRESS_MAP_UNMAP_HIGH
|
||||||
AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot")
|
AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot")
|
||||||
AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("videoram")
|
AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("videoram")
|
||||||
AM_RANGE(0x1800, 0xffff) AM_RAM
|
AM_RANGE(0x1800, 0xffff) AM_RAM
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START(k8915_io, AS_IO, 8, k8915_state)
|
static ADDRESS_MAP_START(io_map, AS_IO, 8, k8915_state)
|
||||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||||
AM_RANGE(0x52, 0x52) AM_READ(k8915_52_r)
|
AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w)
|
||||||
AM_RANGE(0x53, 0x53) AM_READ(k8915_53_r)
|
AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
|
||||||
AM_RANGE(0xa8, 0xa8) AM_WRITE(k8915_a8_w)
|
AM_RANGE(0xa8, 0xa8) AM_WRITE(k8915_a8_w)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
@ -140,16 +126,12 @@ uint32_t k8915_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void k8915_state::kbd_put(u8 data)
|
|
||||||
{
|
|
||||||
m_term_data = data;
|
|
||||||
}
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( k8915 )
|
static MACHINE_CONFIG_START( k8915 )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4)
|
MCFG_CPU_ADD("maincpu", Z80, XTAL_4_9152MHz / 2)
|
||||||
MCFG_CPU_PROGRAM_MAP(k8915_mem)
|
MCFG_CPU_PROGRAM_MAP(mem_map)
|
||||||
MCFG_CPU_IO_MAP(k8915_io)
|
MCFG_CPU_IO_MAP(io_map)
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
|
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
|
||||||
@ -162,8 +144,21 @@ static MACHINE_CONFIG_START( k8915 )
|
|||||||
|
|
||||||
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
|
MCFG_DEVICE_ADD("ctc_clock", CLOCK, XTAL_4_9152MHz / 2)
|
||||||
MCFG_GENERIC_KEYBOARD_CB(PUT(k8915_state, kbd_put))
|
MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("ctc", z80ctc_device, trg2))
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_4_9152MHz / 2)
|
||||||
|
MCFG_Z80CTC_ZC2_CB(DEVWRITELINE("sio", z80sio_device, rxtxcb_w))
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("sio", Z80SIO, XTAL_4_9152MHz / 2)
|
||||||
|
MCFG_Z80SIO_OUT_TXDB_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd))
|
||||||
|
MCFG_Z80SIO_OUT_DTRB_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr))
|
||||||
|
MCFG_Z80SIO_OUT_RTSB_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts))
|
||||||
|
|
||||||
|
MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "keyboard")
|
||||||
|
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sio", z80sio_device, rxb_w))
|
||||||
|
MCFG_RS232_DCD_HANDLER(DEVWRITELINE("sio", z80sio_device, dcdb_w))
|
||||||
|
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("sio", z80sio_device, ctsb_w))
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user