(nw) k8915 : replaced generic keyboard with sio

master
Robbbert 2017-11-10 01:55:34 +11:00
parent 79b7cb5746
commit 3b8a6ba5d4
1 changed files with 30 additions and 35 deletions

View File

@ -2,16 +2,20 @@
// 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 "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 "screen.h"
@ -23,38 +27,20 @@ public:
, m_maincpu(*this, "maincpu")
, m_p_videoram(*this, "videoram")
, m_p_chargen(*this, "chargen")
{
}
{ }
DECLARE_READ8_MEMBER(k8915_52_r);
DECLARE_READ8_MEMBER(k8915_53_r);
DECLARE_WRITE8_MEMBER(k8915_a8_w);
void kbd_put(u8 data);
DECLARE_DRIVER_INIT(k8915);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
uint8_t m_framecnt;
uint8_t m_term_data;
virtual void machine_reset() override;
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_videoram;
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 )
{
@ -65,17 +51,17 @@ WRITE8_MEMBER( k8915_state::k8915_a8_w )
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
AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot")
AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0x1800, 0xffff) AM_RAM
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)
AM_RANGE(0x52, 0x52) AM_READ(k8915_52_r)
AM_RANGE(0x53, 0x53) AM_READ(k8915_53_r)
AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w)
AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
AM_RANGE(0xa8, 0xa8) AM_WRITE(k8915_a8_w)
ADDRESS_MAP_END
@ -140,16 +126,12 @@ uint32_t k8915_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
return 0;
}
void k8915_state::kbd_put(u8 data)
{
m_term_data = data;
}
static MACHINE_CONFIG_START( k8915 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4)
MCFG_CPU_PROGRAM_MAP(k8915_mem)
MCFG_CPU_IO_MAP(k8915_io)
MCFG_CPU_ADD("maincpu", Z80, XTAL_4_9152MHz / 2)
MCFG_CPU_PROGRAM_MAP(mem_map)
MCFG_CPU_IO_MAP(io_map)
/* video hardware */
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
@ -162,8 +144,21 @@ static MACHINE_CONFIG_START( k8915 )
MCFG_PALETTE_ADD_MONOCHROME("palette")
MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(PUT(k8915_state, kbd_put))
MCFG_DEVICE_ADD("ctc_clock", CLOCK, XTAL_4_9152MHz / 2)
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