mirror of
https://github.com/holub/mame
synced 2025-06-03 11:26:56 +03:00
more generic slots + some cleanups & some tagmap reductions. nw.
This commit is contained in:
parent
975e125c6d
commit
f948931bf8
4
.gitattributes
vendored
4
.gitattributes
vendored
@ -7957,7 +7957,8 @@ src/mess/audio/socrates.c svneol=native#text/plain
|
||||
src/mess/audio/socrates.h svneol=native#text/plain
|
||||
src/mess/audio/special.c svneol=native#text/plain
|
||||
src/mess/audio/svision.c svneol=native#text/plain
|
||||
src/mess/audio/tvc.c svneol=native#text/plain
|
||||
src/mess/audio/tvc_snd.c svneol=native#text/plain
|
||||
src/mess/audio/tvc_snd.h svneol=native#text/plain
|
||||
src/mess/audio/upd1771.c svneol=native#text/plain
|
||||
src/mess/audio/upd1771.h svneol=native#text/plain
|
||||
src/mess/audio/vboy.c svneol=native#text/plain
|
||||
@ -8747,7 +8748,6 @@ src/mess/includes/tmc600.h svneol=native#text/plain
|
||||
src/mess/includes/trs80.h svneol=native#text/plain
|
||||
src/mess/includes/trs80m2.h svneol=native#text/plain
|
||||
src/mess/includes/tsispch.h svneol=native#text/plain
|
||||
src/mess/includes/tvc.h svneol=native#text/plain
|
||||
src/mess/includes/tx0.h svneol=native#text/plain
|
||||
src/mess/includes/ut88.h svneol=native#text/plain
|
||||
src/mess/includes/v1050.h svneol=native#text/plain
|
||||
|
@ -46,7 +46,7 @@ void device_generic_cart_interface::rom_alloc(size_t size, int width, const char
|
||||
if (m_rom == NULL)
|
||||
{
|
||||
astring tempstring(tag);
|
||||
tempstring.cat(":cart:rom");
|
||||
tempstring.cat(GENERIC_ROM_REGION_TAG);
|
||||
m_rom = device().machine().memory().region_alloc(tempstring, size, width, ENDIANNESS_LITTLE)->base();
|
||||
m_rom_size = size;
|
||||
}
|
||||
|
@ -44,6 +44,9 @@ enum
|
||||
GENERIC_ROM16_WIDTH
|
||||
};
|
||||
|
||||
#define GENERIC_ROM_REGION_TAG ":cart:rom"
|
||||
|
||||
|
||||
|
||||
#define MCFG_GENERIC_MANDATORY \
|
||||
static_cast<generic_slot_device *>(device)->set_must_be_loaded(TRUE);
|
||||
|
@ -7,7 +7,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "includes/tvc.h"
|
||||
#include "tvc_snd.h"
|
||||
|
||||
// device type definition
|
||||
const device_type TVC_SOUND = &device_creator<tvc_sound_device>;
|
59
src/mess/audio/tvc_snd.h
Normal file
59
src/mess/audio/tvc_snd.h
Normal file
@ -0,0 +1,59 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Sandro Ronco
|
||||
/*****************************************************************************
|
||||
*
|
||||
* includes/tvc.h
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef _TVC_SND_H_
|
||||
#define _TVC_SND_H_
|
||||
|
||||
#define MCFG_TVC_SOUND_SNDINT_CALLBACK(_write) \
|
||||
devcb = &tvc_sound_device::set_sndint_wr_callback(*device, DEVCB_##_write);
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> tvc_sound_device
|
||||
|
||||
class tvc_sound_device : public device_t,
|
||||
public device_sound_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
tvc_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
template<class _Object> static devcb_base &set_sndint_wr_callback(device_t &device, _Object object) { return downcast<tvc_sound_device &>(device).m_write_sndint.set_callback(object); }
|
||||
|
||||
DECLARE_WRITE8_MEMBER(write);
|
||||
void reset_divider();
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
|
||||
|
||||
private:
|
||||
static const device_timer_id TIMER_SNDINT = 0;
|
||||
|
||||
sound_stream * m_stream;
|
||||
int m_freq;
|
||||
int m_enabled;
|
||||
int m_volume;
|
||||
int m_incr;
|
||||
int m_signal;
|
||||
UINT8 m_ports[3];
|
||||
emu_timer * m_sndint_timer;
|
||||
devcb_write_line m_write_sndint;
|
||||
};
|
||||
|
||||
// device type definition
|
||||
extern const device_type TVC_SOUND;
|
||||
|
||||
#endif
|
@ -16,19 +16,23 @@
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#include "emu.h"
|
||||
#include "includes/advision.h"
|
||||
#include "cpu/mcs48/mcs48.h"
|
||||
#include "cpu/cop400/cop400.h"
|
||||
#include "imagedev/cartslot.h"
|
||||
#include "sound/dac.h"
|
||||
|
||||
/* Memory Maps */
|
||||
|
||||
READ8_MEMBER( advision_state::rom_r )
|
||||
{
|
||||
offset += 0x400;
|
||||
return m_cart->read_rom(space, offset & 0xfff);
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( program_map, AS_PROGRAM, 8, advision_state )
|
||||
AM_RANGE(0x0000, 0x03ff) AM_ROMBANK("bank1")
|
||||
AM_RANGE(0x0400, 0x0fff) AM_ROM
|
||||
AM_RANGE(0x0400, 0x0fff) AM_READ(rom_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( io_map, AS_IO, 8, advision_state )
|
||||
@ -69,7 +73,7 @@ static MACHINE_CONFIG_START( advision, advision_state )
|
||||
MCFG_CPU_IO_MAP(io_map)
|
||||
|
||||
MCFG_CPU_ADD(COP411_TAG, COP411, 52631*16) // COP411L-KCN/N
|
||||
MCFG_COP400_CONFIG( COP400_CKI_DIVISOR_4, COP400_CKO_RAM_POWER_SUPPLY, COP400_MICROBUS_DISABLED )
|
||||
MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_4, COP400_CKO_RAM_POWER_SUPPLY, COP400_MICROBUS_DISABLED)
|
||||
MCFG_CPU_IO_MAP(sound_io_map)
|
||||
|
||||
/* video hardware */
|
||||
@ -90,10 +94,8 @@ static MACHINE_CONFIG_START( advision, advision_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
|
||||
/* cartridge */
|
||||
MCFG_CARTSLOT_ADD("cart")
|
||||
MCFG_CARTSLOT_EXTENSION_LIST("bin")
|
||||
MCFG_CARTSLOT_MANDATORY
|
||||
MCFG_CARTSLOT_INTERFACE("advision_cart")
|
||||
MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_plain_slot, "advision_cart")
|
||||
MCFG_GENERIC_MANDATORY
|
||||
|
||||
/* Software lists */
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list","advision")
|
||||
@ -102,10 +104,7 @@ MACHINE_CONFIG_END
|
||||
/* ROMs */
|
||||
|
||||
ROM_START( advision )
|
||||
ROM_REGION( 0x1000, I8048_TAG, 0 )
|
||||
ROM_CART_LOAD( "cart", 0x0000, 0x1000, ROM_NOMIRROR | ROM_FULLSIZE )
|
||||
|
||||
ROM_REGION( 0x400, "bios", 0 )
|
||||
ROM_REGION( 0x1000, I8048_TAG, ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "avbios.u5", 0x000, 0x400, CRC(279e33d1) SHA1(bf7b0663e9125c9bfb950232eab627d9dbda8460) )
|
||||
|
||||
ROM_REGION( 0x200, COP411_TAG, 0 )
|
||||
|
@ -10,22 +10,10 @@
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/wave.h"
|
||||
#include "video/mc6845.h"
|
||||
#include "includes/svi318.h"
|
||||
#include "video/tms9928a.h"
|
||||
#include "machine/i8255.h"
|
||||
#include "machine/wd17xx.h"
|
||||
#include "bus/centronics/ctronics.h"
|
||||
#include "imagedev/flopdrv.h"
|
||||
#include "formats/svi_dsk.h"
|
||||
#include "imagedev/cartslot.h"
|
||||
#include "imagedev/cassette.h"
|
||||
#include "formats/svi_cas.h"
|
||||
#include "sound/dac.h"
|
||||
#include "sound/ay8910.h"
|
||||
#include "machine/ram.h"
|
||||
#include "rendlay.h"
|
||||
|
||||
static ADDRESS_MAP_START( svi318_mem, AS_PROGRAM, 8, svi318_state )
|
||||
@ -263,12 +251,9 @@ static const floppy_interface svi318_floppy_interface =
|
||||
};
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( svi318_cartslot )
|
||||
MCFG_CARTSLOT_ADD("cart")
|
||||
MCFG_CARTSLOT_EXTENSION_LIST("rom")
|
||||
MCFG_CARTSLOT_NOT_MANDATORY
|
||||
MCFG_CARTSLOT_INTERFACE("svi318_cart")
|
||||
MCFG_CARTSLOT_LOAD(svi318_state,svi318_cart)
|
||||
MCFG_CARTSLOT_UNLOAD(svi318_state,svi318_cart)
|
||||
MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_plain_slot, "svi318_cart")
|
||||
MCFG_GENERIC_EXTENSIONS("bin,rom")
|
||||
MCFG_GENERIC_LOAD(svi318_state, svi318_cart)
|
||||
|
||||
/* Software lists */
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list","svi318_cart")
|
||||
@ -497,8 +482,6 @@ ROM_START( svi318 )
|
||||
ROMX_LOAD("svi110.rom", 0x0000, 0x8000, CRC(709904e9) SHA1(7d8daf52f78371ca2c9443e04827c8e1f98c8f2c), ROM_BIOS(2))
|
||||
ROM_SYSTEM_BIOS(2, "100", "SV BASIC v1.0")
|
||||
ROMX_LOAD("svi100.rom", 0x0000, 0x8000, CRC(98d48655) SHA1(07758272df475e5e06187aa3574241df1b14035b), ROM_BIOS(3))
|
||||
|
||||
ROM_REGION( 0x8000, "user1", ROMREGION_ERASEFF )
|
||||
ROM_END
|
||||
|
||||
ROM_START( svi318n )
|
||||
@ -509,8 +492,6 @@ ROM_START( svi318n )
|
||||
ROMX_LOAD("svi110.rom", 0x0000, 0x8000, CRC(709904e9) SHA1(7d8daf52f78371ca2c9443e04827c8e1f98c8f2c), ROM_BIOS(2))
|
||||
ROM_SYSTEM_BIOS(2, "100", "SV BASIC v1.0")
|
||||
ROMX_LOAD("svi100.rom", 0x0000, 0x8000, CRC(98d48655) SHA1(07758272df475e5e06187aa3574241df1b14035b), ROM_BIOS(3))
|
||||
|
||||
ROM_REGION( 0x8000, "user1", ROMREGION_ERASEFF )
|
||||
ROM_END
|
||||
|
||||
ROM_START( svi328 )
|
||||
@ -521,8 +502,6 @@ ROM_START( svi328 )
|
||||
ROMX_LOAD("svi110.rom", 0x0000, 0x8000, CRC(709904e9) SHA1(7d8daf52f78371ca2c9443e04827c8e1f98c8f2c), ROM_BIOS(2))
|
||||
ROM_SYSTEM_BIOS(2, "100", "SV BASIC v1.0")
|
||||
ROMX_LOAD("svi100.rom", 0x0000, 0x8000, CRC(98d48655) SHA1(07758272df475e5e06187aa3574241df1b14035b), ROM_BIOS(3))
|
||||
|
||||
ROM_REGION( 0x8000, "user1", ROMREGION_ERASEFF )
|
||||
ROM_END
|
||||
|
||||
ROM_START( svi328n )
|
||||
@ -533,8 +512,6 @@ ROM_START( svi328n )
|
||||
ROMX_LOAD("svi110.rom", 0x0000, 0x8000, CRC(709904e9) SHA1(7d8daf52f78371ca2c9443e04827c8e1f98c8f2c), ROM_BIOS(2))
|
||||
ROM_SYSTEM_BIOS(2, "100", "SV BASIC v1.0")
|
||||
ROMX_LOAD("svi100.rom", 0x0000, 0x8000, CRC(98d48655) SHA1(07758272df475e5e06187aa3574241df1b14035b), ROM_BIOS(3))
|
||||
|
||||
ROM_REGION( 0x8000, "user1", ROMREGION_ERASEFF )
|
||||
ROM_END
|
||||
|
||||
ROM_START( sv328p80 )
|
||||
@ -546,8 +523,6 @@ ROM_START( sv328p80 )
|
||||
ROMX_LOAD("svi806.rom", 0x0000, 0x1000, CRC(850bc232) SHA1(ed45cb0e9bd18a9d7bd74f87e620f016a7ae840f), ROM_BIOS(1))
|
||||
ROM_SYSTEM_BIOS(1, "swedish", "Swedish Character Set")
|
||||
ROMX_LOAD("svi806se.rom", 0x0000, 0x1000, CRC(daea8956) SHA1(3f16d5513ad35692488ae7d864f660e76c6e8ed3), ROM_BIOS(2))
|
||||
|
||||
ROM_REGION( 0x8000, "user1", ROMREGION_ERASEFF )
|
||||
ROM_END
|
||||
|
||||
ROM_START( sv328n80 )
|
||||
@ -559,8 +534,6 @@ ROM_START( sv328n80 )
|
||||
ROMX_LOAD("svi806.rom", 0x0000, 0x1000, CRC(850bc232) SHA1(ed45cb0e9bd18a9d7bd74f87e620f016a7ae840f), ROM_BIOS(1))
|
||||
ROM_SYSTEM_BIOS(1, "swedish", "Swedish Character Set")
|
||||
ROMX_LOAD("svi806se.rom", 0x0000, 0x1000, CRC(daea8956) SHA1(3f16d5513ad35692488ae7d864f660e76c6e8ed3), ROM_BIOS(2))
|
||||
|
||||
ROM_REGION( 0x8000, "user1", ROMREGION_ERASEFF )
|
||||
ROM_END
|
||||
|
||||
|
||||
|
@ -170,10 +170,11 @@ A=AMA, P=PRO, these keys don't exist, and so the games cannot be played.
|
||||
#include "cpu/tms9900/tms9995.h"
|
||||
#include "sound/wave.h"
|
||||
#include "video/tms9928a.h"
|
||||
#include "imagedev/cartslot.h"
|
||||
#include "imagedev/cassette.h"
|
||||
#include "sound/sn76496.h"
|
||||
#include "bus/centronics/ctronics.h"
|
||||
#include "bus/generic/slot.h"
|
||||
#include "bus/generic/carts.h"
|
||||
|
||||
|
||||
class tutor_state : public driver_device
|
||||
@ -182,16 +183,22 @@ public:
|
||||
tutor_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_cart(*this, "cartslot"),
|
||||
m_cass(*this, "cassette"),
|
||||
m_centronics(*this, "centronics"),
|
||||
m_cent_data_out(*this, "cent_data_out")
|
||||
m_cent_data_out(*this, "cent_data_out"),
|
||||
m_bank1(*this, "bank1")
|
||||
{
|
||||
}
|
||||
|
||||
required_device<tms9995_device> m_maincpu;
|
||||
required_device<generic_slot_device> m_cart;
|
||||
optional_device<cassette_image_device> m_cass;
|
||||
optional_device<centronics_device> m_centronics;
|
||||
optional_device<output_latch_device> m_cent_data_out;
|
||||
required_memory_bank m_bank1;
|
||||
memory_region *m_cart_rom;
|
||||
|
||||
DECLARE_READ8_MEMBER(key_r);
|
||||
DECLARE_READ8_MEMBER(tutor_mapper_r);
|
||||
DECLARE_WRITE8_MEMBER(tutor_mapper_w);
|
||||
@ -201,67 +208,38 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(tutor_printer_w);
|
||||
|
||||
DECLARE_READ8_MEMBER(tutor_highmem_r);
|
||||
char m_cartridge_enable;
|
||||
char m_tape_interrupt_enable;
|
||||
int m_tape_interrupt_enable;
|
||||
emu_timer *m_tape_interrupt_timer;
|
||||
UINT8 m_printer_data;
|
||||
char m_printer_strobe;
|
||||
DECLARE_DRIVER_INIT(tutor);
|
||||
DECLARE_DRIVER_INIT(pyuuta);
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
TIMER_CALLBACK_MEMBER(tape_interrupt_handler);
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( tutor_cart );
|
||||
DECLARE_DEVICE_IMAGE_UNLOAD_MEMBER( tutor_cart );
|
||||
|
||||
int m_centronics_busy;
|
||||
DECLARE_WRITE_LINE_MEMBER( write_centronics_busy );
|
||||
DECLARE_WRITE_LINE_MEMBER(write_centronics_busy);
|
||||
};
|
||||
|
||||
|
||||
/* mapper state */
|
||||
|
||||
/* tape interface state */
|
||||
|
||||
|
||||
|
||||
/* parallel interface state */
|
||||
|
||||
enum
|
||||
{
|
||||
basic_base = 0x8000,
|
||||
cartridge_base = 0xe000
|
||||
};
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(tutor_state,tutor)
|
||||
{
|
||||
m_tape_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tutor_state::tape_interrupt_handler),this));
|
||||
|
||||
membank("bank1")->configure_entry(0, memregion("maincpu")->base() + basic_base);
|
||||
membank("bank1")->configure_entry(1, memregion("maincpu")->base() + cartridge_base);
|
||||
membank("bank1")->set_entry(0);
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(tutor_state,pyuuta)
|
||||
{
|
||||
DRIVER_INIT_CALL(tutor);
|
||||
membank("bank1")->set_entry(1);
|
||||
}
|
||||
|
||||
void tutor_state::machine_start()
|
||||
{
|
||||
astring region_tag;
|
||||
m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG));
|
||||
|
||||
m_tape_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tutor_state::tape_interrupt_handler),this));
|
||||
|
||||
m_bank1->configure_entry(0, memregion("maincpu")->base() + 0x8000);
|
||||
m_bank1->set_entry(0);
|
||||
|
||||
if (m_cart_rom)
|
||||
{
|
||||
m_bank1->configure_entry(1, m_cart_rom->base());
|
||||
m_bank1->set_entry(1);
|
||||
}
|
||||
}
|
||||
|
||||
void tutor_state::machine_reset()
|
||||
{
|
||||
m_cartridge_enable = 0;
|
||||
|
||||
m_tape_interrupt_enable = 0;
|
||||
|
||||
m_printer_data = 0;
|
||||
m_printer_strobe = 0;
|
||||
m_centronics_busy = 0;
|
||||
|
||||
// Enable auto wait states by lowering READY during reset
|
||||
m_maincpu->set_ready(CLEAR_LINE);
|
||||
@ -300,31 +278,6 @@ READ8_MEMBER( tutor_state::key_r )
|
||||
}
|
||||
|
||||
|
||||
DEVICE_IMAGE_LOAD_MEMBER( tutor_state, tutor_cart )
|
||||
{
|
||||
UINT32 size;
|
||||
UINT8 *ptr = memregion("maincpu")->base();
|
||||
|
||||
if (image.software_entry() == NULL)
|
||||
{
|
||||
size = image.length();
|
||||
if (image.fread(ptr + cartridge_base, size) != size)
|
||||
return IMAGE_INIT_FAIL;
|
||||
}
|
||||
else
|
||||
{
|
||||
size = image.get_software_region_length("rom");
|
||||
memcpy(ptr + cartridge_base, image.get_software_region("rom"), size);
|
||||
}
|
||||
|
||||
return IMAGE_INIT_PASS;
|
||||
}
|
||||
|
||||
DEVICE_IMAGE_UNLOAD_MEMBER( tutor_state, tutor_cart )
|
||||
{
|
||||
memset(memregion("maincpu")->base() + cartridge_base, 0, 0x6000);
|
||||
}
|
||||
|
||||
/*
|
||||
Cartridge mapping:
|
||||
|
||||
@ -346,7 +299,7 @@ READ8_MEMBER( tutor_state::tutor_mapper_r )
|
||||
switch (offset)
|
||||
{
|
||||
case 0x10:
|
||||
/* return 0x42 if we have an cartridge with an alternate boot ROM */
|
||||
/* return 0x42 if we have a cartridge with an alternate boot ROM */
|
||||
reply = 0;
|
||||
break;
|
||||
|
||||
@ -369,18 +322,17 @@ WRITE8_MEMBER( tutor_state::tutor_mapper_w )
|
||||
|
||||
case 0x08:
|
||||
/* disable cartridge ROM, enable BASIC ROM at base >8000 */
|
||||
m_cartridge_enable = 0;
|
||||
membank("bank1")->set_entry(0);
|
||||
m_bank1->set_entry(0);
|
||||
break;
|
||||
|
||||
case 0x0c:
|
||||
/* enable cartridge ROM, disable BASIC ROM at base >8000 */
|
||||
m_cartridge_enable = 1;
|
||||
membank("bank1")->set_entry(1);
|
||||
if (m_cart_rom)
|
||||
m_bank1->set_entry(1);
|
||||
break;
|
||||
|
||||
default:
|
||||
if (! (offset & 1))
|
||||
if (!(offset & 1))
|
||||
logerror("unknown port in %s %d\n", __FILE__, __LINE__);
|
||||
break;
|
||||
}
|
||||
@ -435,7 +387,7 @@ WRITE8_MEMBER( tutor_state::tutor_cassette_w )
|
||||
|
||||
if ((offset & 0x1f) == 0)
|
||||
{
|
||||
data = (offset & 0x20) != 0;
|
||||
data = BIT(offset, 5);
|
||||
|
||||
switch ((offset >> 6) & 3)
|
||||
{
|
||||
@ -446,10 +398,10 @@ WRITE8_MEMBER( tutor_state::tutor_cassette_w )
|
||||
case 1:
|
||||
/* interrupt control??? */
|
||||
//logerror("ignoring write of %d to cassette port 1\n", data);
|
||||
if (m_tape_interrupt_enable != ! data)
|
||||
if (m_tape_interrupt_enable != data)
|
||||
{
|
||||
m_tape_interrupt_enable = ! data;
|
||||
if (m_tape_interrupt_enable)
|
||||
m_tape_interrupt_enable = data;
|
||||
if (!m_tape_interrupt_enable)
|
||||
m_tape_interrupt_timer->adjust(/*attotime::from_hz(44100)*/attotime::zero, 0, attotime::from_hz(44100));
|
||||
else
|
||||
{
|
||||
@ -618,7 +570,7 @@ Small note about natural keyboard support: currently,
|
||||
*/
|
||||
|
||||
static INPUT_PORTS_START(tutor)
|
||||
PORT_START("LINE0") /* col 0 */
|
||||
PORT_START("LINE0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
|
||||
@ -628,7 +580,7 @@ static INPUT_PORTS_START(tutor)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('X')
|
||||
|
||||
PORT_START("LINE1") /* col 1 */
|
||||
PORT_START("LINE1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('E')
|
||||
@ -638,7 +590,7 @@ static INPUT_PORTS_START(tutor)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('C')
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('V')
|
||||
|
||||
PORT_START("LINE2") /* col 2 */
|
||||
PORT_START("LINE2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('T')
|
||||
@ -648,7 +600,7 @@ static INPUT_PORTS_START(tutor)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('B')
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('N')
|
||||
|
||||
PORT_START("LINE3") /* col 3 */
|
||||
PORT_START("LINE3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
||||
@ -658,7 +610,7 @@ static INPUT_PORTS_START(tutor)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('K')
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('M')
|
||||
|
||||
PORT_START("LINE4") /* col 4 */
|
||||
PORT_START("LINE4")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('=')
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("- b") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-')
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('O')
|
||||
@ -668,7 +620,7 @@ static INPUT_PORTS_START(tutor)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
|
||||
|
||||
PORT_START("LINE4_alt") /* col 4 */
|
||||
PORT_START("LINE4_alt")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(1)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_PLAYER(1)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_PLAYER(1) PORT_CODE(KEYCODE_2_PAD)
|
||||
@ -676,7 +628,7 @@ static INPUT_PORTS_START(tutor)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_PLAYER(1) PORT_CODE(KEYCODE_8_PAD)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_PLAYER(1) PORT_CODE(KEYCODE_6_PAD)
|
||||
|
||||
PORT_START("LINE5") /* col 5 */
|
||||
PORT_START("LINE5")
|
||||
/* Unused? */
|
||||
PORT_BIT(0x03, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
@ -687,7 +639,7 @@ static INPUT_PORTS_START(tutor)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') // this one is 4th line, 4th key after 'M'
|
||||
|
||||
PORT_START("LINE5_alt") /* col 5 */
|
||||
PORT_START("LINE5_alt")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(2)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_PLAYER(2)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_PLAYER(2)
|
||||
@ -695,7 +647,7 @@ static INPUT_PORTS_START(tutor)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_PLAYER(2)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_PLAYER(2)
|
||||
|
||||
PORT_START("LINE6") /* col 6 */
|
||||
PORT_START("LINE6")
|
||||
/* Unused? */
|
||||
PORT_BIT(0x21, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
@ -708,7 +660,7 @@ static INPUT_PORTS_START(tutor)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Mod") PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
|
||||
|
||||
PORT_START("LINE7") /* col 7 */
|
||||
PORT_START("LINE7")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
|
||||
@ -776,11 +728,7 @@ static MACHINE_CONFIG_START( tutor, tutor_state )
|
||||
MCFG_CASSETTE_ADD( "cassette" )
|
||||
|
||||
/* cartridge */
|
||||
MCFG_CARTSLOT_ADD("cart")
|
||||
MCFG_CARTSLOT_NOT_MANDATORY
|
||||
MCFG_CARTSLOT_LOAD(tutor_state, tutor_cart)
|
||||
MCFG_CARTSLOT_UNLOAD(tutor_state, tutor_cart)
|
||||
MCFG_CARTSLOT_INTERFACE("tutor_cart")
|
||||
MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_linear_slot, "tutor_cart")
|
||||
|
||||
/* software lists */
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list","tutor")
|
||||
@ -796,27 +744,25 @@ MACHINE_CONFIG_END
|
||||
/*
|
||||
ROM loading
|
||||
*/
|
||||
|
||||
ROM_START(tutor)
|
||||
/*CPU memory space*/
|
||||
ROM_REGION(0x14000,"maincpu",0)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD("tutor1.bin", 0x0000, 0x8000, CRC(702c38ba) SHA1(ce60607c3038895e31915d41bb5cf71cb8522d7a)) /* system ROM */
|
||||
ROM_LOAD("tutor2.bin", 0x8000, 0x4000, CRC(05f228f5) SHA1(46a14a45f6f9e2c30663a2b87ce60c42768a78d0)) /* BASIC ROM */
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START(pyuuta)
|
||||
/*CPU memory space*/
|
||||
ROM_REGION(0x14000,"maincpu",0)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD("tomy29.7", 0x0000, 0x8000, CRC(7553bb6a) SHA1(fa41c45cb6d3daf7435f2a82f77dfa286003255e)) /* system ROM */
|
||||
ROM_END
|
||||
|
||||
ROM_START(pyuutajr)
|
||||
/*CPU memory space*/
|
||||
ROM_REGION(0x14000,"maincpu",0)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "ipl.rom", 0x0000, 0x4000, CRC(2ca37e62) SHA1(eebdc5c37d3b532edd5e5ca65eb785269ebd1ac0)) /* system ROM */
|
||||
ROM_END
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
|
||||
COMP(1983?, tutor, 0, 0, tutor, tutor, tutor_state, tutor, "Tomy", "Tomy Tutor" , 0)
|
||||
COMP(1982, pyuuta, tutor, 0, tutor, tutor, tutor_state, pyuuta, "Tomy", "Tomy Pyuuta" , 0)
|
||||
COMP(1983, pyuutajr, tutor, 0, pyuutajr, pyuutajr, tutor_state, pyuuta, "Tomy", "Tomy Pyuuta Jr." , 0)
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
|
||||
COMP(1983?, tutor, 0, 0, tutor, tutor, driver_device, 0, "Tomy", "Tomy Tutor" , 0)
|
||||
COMP(1982, pyuuta, tutor, 0, tutor, tutor, driver_device, 0, "Tomy", "Tomy Pyuuta" , 0)
|
||||
COMP(1983, pyuutajr, tutor, 0, pyuutajr, pyuutajr, driver_device, 0, "Tomy", "Tomy Pyuuta Jr." , 0)
|
||||
|
@ -13,7 +13,96 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "includes/tvc.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "video/mc6845.h"
|
||||
#include "machine/ram.h"
|
||||
#include "audio/tvc_snd.h"
|
||||
#include "bus/centronics/ctronics.h"
|
||||
#include "imagedev/cassette.h"
|
||||
#include "imagedev/snapquik.h"
|
||||
#include "formats/tvc_cas.h"
|
||||
|
||||
#include "bus/tvc/tvc.h"
|
||||
#include "bus/tvc/hbf.h"
|
||||
#include "bus/generic/slot.h"
|
||||
#include "bus/generic/carts.h"
|
||||
|
||||
#define TVC_RAM_BANK 1
|
||||
#define TVC_ROM_BANK 2
|
||||
|
||||
#define CENTRONICS_TAG "centronics"
|
||||
|
||||
|
||||
class tvc_state : public driver_device
|
||||
{
|
||||
public:
|
||||
tvc_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_sound(*this, "custom"),
|
||||
m_cassette(*this, "cassette"),
|
||||
m_cart(*this, "cartslot"),
|
||||
m_centronics(*this, CENTRONICS_TAG),
|
||||
m_palette(*this, "palette"),
|
||||
m_keyboard(*this, "LINE")
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<ram_device> m_ram;
|
||||
required_device<tvc_sound_device> m_sound;
|
||||
required_device<cassette_image_device> m_cassette;
|
||||
required_device<generic_slot_device> m_cart;
|
||||
required_device<centronics_device> m_centronics;
|
||||
required_device<palette_device> m_palette;
|
||||
required_ioport_array<16> m_keyboard;
|
||||
|
||||
tvcexp_slot_device *m_expansions[4];
|
||||
memory_region *m_bios_rom;
|
||||
memory_region *m_cart_rom;
|
||||
memory_region *m_ext;
|
||||
memory_region *m_vram;
|
||||
|
||||
void machine_start();
|
||||
void machine_reset();
|
||||
|
||||
void set_mem_page(UINT8 data);
|
||||
DECLARE_WRITE8_MEMBER(bank_w);
|
||||
DECLARE_WRITE8_MEMBER(vram_bank_w);
|
||||
DECLARE_WRITE8_MEMBER(palette_w);
|
||||
DECLARE_WRITE8_MEMBER(keyboard_w);
|
||||
DECLARE_READ8_MEMBER(keyboard_r);
|
||||
DECLARE_READ8_MEMBER(int_state_r);
|
||||
DECLARE_WRITE8_MEMBER(flipflop_w);
|
||||
DECLARE_WRITE8_MEMBER(border_color_w);
|
||||
DECLARE_WRITE8_MEMBER(sound_w);
|
||||
DECLARE_WRITE8_MEMBER(cassette_w);
|
||||
DECLARE_READ8_MEMBER(_5b_r);
|
||||
DECLARE_WRITE_LINE_MEMBER(int_ff_set);
|
||||
DECLARE_WRITE_LINE_MEMBER(centronics_ack);
|
||||
|
||||
// expansions
|
||||
DECLARE_WRITE8_MEMBER(expansion_w);
|
||||
DECLARE_READ8_MEMBER(expansion_r);
|
||||
DECLARE_READ8_MEMBER(exp_id_r);
|
||||
DECLARE_WRITE8_MEMBER(expint_ack_w);
|
||||
|
||||
DECLARE_QUICKLOAD_LOAD_MEMBER( tvc64);
|
||||
|
||||
MC6845_UPDATE_ROW(crtc_update_row);
|
||||
|
||||
UINT8 m_video_mode;
|
||||
UINT8 m_keyline;
|
||||
UINT8 m_active_slot;
|
||||
UINT8 m_int_flipflop;
|
||||
UINT8 m_col[4];
|
||||
UINT8 m_bank_type[4];
|
||||
UINT8 m_bank;
|
||||
UINT8 m_vram_bank;
|
||||
UINT8 m_cassette_ff;
|
||||
UINT8 m_centronics_ff;
|
||||
DECLARE_PALETTE_INIT(tvc);
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -30,29 +119,33 @@
|
||||
space.install_readwrite_bank(_start, _end, _tag); \
|
||||
m_bank_type[_bank] = TVC_RAM_BANK; \
|
||||
}
|
||||
void tvc_state::tvc_set_mem_page(UINT8 data)
|
||||
|
||||
void tvc_state::set_mem_page(UINT8 data)
|
||||
{
|
||||
address_space &space = m_maincpu->space(AS_PROGRAM);
|
||||
switch(data & 0x18)
|
||||
switch (data & 0x18)
|
||||
{
|
||||
case 0x00 : // system ROM selected
|
||||
TVC_INSTALL_ROM_BANK(0, "bank1", 0x0000, 0x3fff);
|
||||
membank("bank1")->set_base(memregion("sys")->base());
|
||||
membank("bank1")->set_base(m_bios_rom->base());
|
||||
break;
|
||||
case 0x08 : // Cart ROM selected
|
||||
TVC_INSTALL_ROM_BANK(0, "bank1", 0x0000, 0x3fff);
|
||||
membank("bank1")->set_base(memregion("cart")->base());
|
||||
if (m_cart_rom)
|
||||
{
|
||||
TVC_INSTALL_ROM_BANK(0, "bank1", 0x0000, 0x3fff);
|
||||
membank("bank1")->set_base(m_cart_rom->base());
|
||||
}
|
||||
break;
|
||||
case 0x10 : // RAM selected
|
||||
TVC_INSTALL_RAM_BANK(0, "bank1", 0x0000, 0x3fff);
|
||||
membank("bank1")->set_base(m_ram->pointer());
|
||||
break;
|
||||
case 0x18 : // Video RAM
|
||||
if (memregion("vram")->bytes() > 0x4000)
|
||||
if (m_vram->bytes() > 0x4000)
|
||||
{
|
||||
// TVC 64+ only
|
||||
TVC_INSTALL_RAM_BANK(0, "bank1", 0x0000, 0x3fff);
|
||||
membank("bank1")->set_base(memregion("vram")->base() + ((m_vram_bank & 0x03)<<14));
|
||||
membank("bank1")->set_base(m_vram->base() + ((m_vram_bank & 0x03)<<14));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -65,7 +158,7 @@ void tvc_state::tvc_set_mem_page(UINT8 data)
|
||||
if ((data & 0x20)==0) // Video RAM
|
||||
{
|
||||
TVC_INSTALL_RAM_BANK(2, "bank3", 0x8000, 0xbfff);
|
||||
membank("bank3")->set_base(memregion("vram")->base() + ((m_vram_bank & 0x0c)<<12));
|
||||
membank("bank3")->set_base(m_vram->base() + ((m_vram_bank & 0x0c)<<12));
|
||||
}
|
||||
else // System RAM page 3
|
||||
{
|
||||
@ -84,12 +177,15 @@ void tvc_state::tvc_set_mem_page(UINT8 data)
|
||||
switch(data & 0xc0)
|
||||
{
|
||||
case 0x00 : // Cart ROM selected
|
||||
TVC_INSTALL_ROM_BANK(3, "bank4", 0xc000, 0xffff);
|
||||
membank("bank4")->set_base(memregion("cart")->base());
|
||||
if (m_cart_rom)
|
||||
{
|
||||
TVC_INSTALL_ROM_BANK(3, "bank4", 0xc000, 0xffff);
|
||||
membank("bank4")->set_base(m_cart_rom->base());
|
||||
}
|
||||
break;
|
||||
case 0x40 : // System ROM selected
|
||||
TVC_INSTALL_ROM_BANK(3, "bank4", 0xc000, 0xffff);
|
||||
membank("bank4")->set_base(memregion("sys")->base());
|
||||
membank("bank4")->set_base(m_bios_rom->base());
|
||||
break;
|
||||
case 0x80 : // RAM selected
|
||||
if (m_ram->size() > 0x8000)
|
||||
@ -105,46 +201,46 @@ void tvc_state::tvc_set_mem_page(UINT8 data)
|
||||
break;
|
||||
case 0xc0 : // External ROM selected
|
||||
TVC_INSTALL_ROM_BANK(3, "bank4", 0xc000, 0xffff);
|
||||
membank("bank4")->set_base(memregion("ext")->base());
|
||||
space.install_readwrite_handler (0xc000, 0xdfff, 0, 0, read8_delegate(FUNC(tvc_state::tvc_expansion_r), this), write8_delegate(FUNC(tvc_state::tvc_expansion_w), this), 0);
|
||||
membank("bank4")->set_base(m_ext->base());
|
||||
space.install_readwrite_handler (0xc000, 0xdfff, 0, 0, read8_delegate(FUNC(tvc_state::expansion_r), this), write8_delegate(FUNC(tvc_state::expansion_w), this), 0);
|
||||
m_bank_type[3] = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(tvc_state::tvc_expansion_w)
|
||||
WRITE8_MEMBER(tvc_state::expansion_w)
|
||||
{
|
||||
m_expansions[m_active_slot & 3]->write(space, offset, data);
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(tvc_state::tvc_expansion_r)
|
||||
READ8_MEMBER(tvc_state::expansion_r)
|
||||
{
|
||||
return m_expansions[m_active_slot & 3]->read(space, offset);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tvc_state::tvc_bank_w)
|
||||
WRITE8_MEMBER(tvc_state::bank_w)
|
||||
{
|
||||
m_bank = data;
|
||||
tvc_set_mem_page(data);
|
||||
set_mem_page(data);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tvc_state::tvc_vram_bank_w)
|
||||
WRITE8_MEMBER(tvc_state::vram_bank_w)
|
||||
{
|
||||
// TVC 64+ only
|
||||
if (memregion("vram")->bytes() > 0x4000)
|
||||
if (m_vram->bytes() > 0x4000)
|
||||
{
|
||||
// bit 4-5 - screen video RAM
|
||||
// bit 2-3 - video RAM active in bank 3
|
||||
// bit 0-1 - video RAM active in bank 1
|
||||
|
||||
m_vram_bank = data;
|
||||
tvc_set_mem_page(m_bank);
|
||||
set_mem_page(m_bank);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tvc_state::tvc_palette_w)
|
||||
WRITE8_MEMBER(tvc_state::palette_w)
|
||||
{
|
||||
// 0 I 0 G | 0 R 0 B
|
||||
// 0 0 0 0 | I G R B
|
||||
@ -153,7 +249,7 @@ WRITE8_MEMBER(tvc_state::tvc_palette_w)
|
||||
m_col[offset] = i;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tvc_state::tvc_keyboard_w)
|
||||
WRITE8_MEMBER(tvc_state::keyboard_w)
|
||||
{
|
||||
// bit 6-7 - expansion select
|
||||
// bit 0-3 - keyboard scan
|
||||
@ -162,16 +258,12 @@ WRITE8_MEMBER(tvc_state::tvc_keyboard_w)
|
||||
m_active_slot = (data>>6) & 0x03;
|
||||
}
|
||||
|
||||
READ8_MEMBER(tvc_state::tvc_keyboard_r)
|
||||
READ8_MEMBER(tvc_state::keyboard_r)
|
||||
{
|
||||
static const char *const keynames[] = {
|
||||
"LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", "LINE7",
|
||||
"LINE8", "LINE9", "LINEA", "LINEB", "LINEC", "LINED", "LINEE", "LINEF"
|
||||
};
|
||||
return ioport(keynames[m_keyline & 0x0f])->read();
|
||||
return m_keyboard[m_keyline & 0x0f]->read();
|
||||
}
|
||||
|
||||
READ8_MEMBER(tvc_state::tvc_int_state_r)
|
||||
READ8_MEMBER(tvc_state::int_state_r)
|
||||
{
|
||||
/*
|
||||
x--- ---- centronics ACK flipflop
|
||||
@ -189,32 +281,32 @@ READ8_MEMBER(tvc_state::tvc_int_state_r)
|
||||
return 0x40 | (m_int_flipflop << 4) | (level > 0.01 ? 0x20 : 0x00) | (m_centronics_ff << 7) | (expint & 0x0f);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tvc_state::tvc_flipflop_w)
|
||||
WRITE8_MEMBER(tvc_state::flipflop_w)
|
||||
{
|
||||
// every write here clears the vblank flipflop
|
||||
m_int_flipflop = 1;
|
||||
m_maincpu->set_input_line(0, CLEAR_LINE);
|
||||
}
|
||||
|
||||
READ8_MEMBER(tvc_state::tvc_exp_id_r)
|
||||
READ8_MEMBER(tvc_state::exp_id_r)
|
||||
{
|
||||
// expansion slots ID
|
||||
return (m_expansions[0]->id_r()<<0) | (m_expansions[1]->id_r()<<2) |
|
||||
(m_expansions[2]->id_r()<<4) | (m_expansions[3]->id_r()<<6);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tvc_state::tvc_expint_ack_w)
|
||||
WRITE8_MEMBER(tvc_state::expint_ack_w)
|
||||
{
|
||||
m_expansions[offset & 3]->int_ack();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tvc_state::tvc_border_color_w)
|
||||
WRITE8_MEMBER(tvc_state::border_color_w)
|
||||
{
|
||||
// x-x- x-x- border color (I G R B)
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(tvc_state::tvc_sound_w)
|
||||
WRITE8_MEMBER(tvc_state::sound_w)
|
||||
{
|
||||
switch(offset)
|
||||
{
|
||||
@ -238,13 +330,13 @@ WRITE8_MEMBER(tvc_state::tvc_sound_w)
|
||||
m_sound->write(space, offset, data);
|
||||
}
|
||||
|
||||
READ8_MEMBER(tvc_state::tvc_5b_r)
|
||||
READ8_MEMBER(tvc_state::_5b_r)
|
||||
{
|
||||
m_sound->reset_divider();
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tvc_state::tvc_cassette_w)
|
||||
WRITE8_MEMBER(tvc_state::cassette_w)
|
||||
{
|
||||
// writig here cause the toggle of the cassette flipflop
|
||||
m_cassette_ff = !m_cassette_ff;
|
||||
@ -261,229 +353,247 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( tvc_io , AS_IO, 8, tvc_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_WRITE(tvc_border_color_w)
|
||||
AM_RANGE(0x00, 0x00) AM_WRITE(border_color_w)
|
||||
AM_RANGE(0x01, 0x01) AM_DEVWRITE("cent_data_out", output_latch_device, write)
|
||||
AM_RANGE(0x02, 0x02) AM_WRITE(tvc_bank_w)
|
||||
AM_RANGE(0x03, 0x03) AM_WRITE(tvc_keyboard_w)
|
||||
AM_RANGE(0x04, 0x06) AM_WRITE(tvc_sound_w)
|
||||
AM_RANGE(0x07, 0x07) AM_WRITE(tvc_flipflop_w)
|
||||
AM_RANGE(0x0f, 0x0f) AM_WRITE(tvc_vram_bank_w)
|
||||
AM_RANGE(0x02, 0x02) AM_WRITE(bank_w)
|
||||
AM_RANGE(0x03, 0x03) AM_WRITE(keyboard_w)
|
||||
AM_RANGE(0x04, 0x06) AM_WRITE(sound_w)
|
||||
AM_RANGE(0x07, 0x07) AM_WRITE(flipflop_w)
|
||||
AM_RANGE(0x0f, 0x0f) AM_WRITE(vram_bank_w)
|
||||
AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("exp1", tvcexp_slot_device, io_read, io_write)
|
||||
AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("exp2", tvcexp_slot_device, io_read, io_write)
|
||||
AM_RANGE(0x30, 0x3f) AM_DEVREADWRITE("exp3", tvcexp_slot_device, io_read, io_write)
|
||||
AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("exp4", tvcexp_slot_device, io_read, io_write)
|
||||
AM_RANGE(0x50, 0x50) AM_WRITE(tvc_cassette_w)
|
||||
AM_RANGE(0x58, 0x58) AM_READ(tvc_keyboard_r)
|
||||
AM_RANGE(0x59, 0x59) AM_READ(tvc_int_state_r)
|
||||
AM_RANGE(0x5a, 0x5a) AM_READ(tvc_exp_id_r)
|
||||
AM_RANGE(0x5b, 0x5b) AM_READ(tvc_5b_r)
|
||||
AM_RANGE(0x58, 0x5b) AM_WRITE(tvc_expint_ack_w)
|
||||
AM_RANGE(0x60, 0x63) AM_WRITE(tvc_palette_w)
|
||||
AM_RANGE(0x50, 0x50) AM_WRITE(cassette_w)
|
||||
AM_RANGE(0x58, 0x58) AM_READ(keyboard_r)
|
||||
AM_RANGE(0x59, 0x59) AM_READ(int_state_r)
|
||||
AM_RANGE(0x5a, 0x5a) AM_READ(exp_id_r)
|
||||
AM_RANGE(0x5b, 0x5b) AM_READ(_5b_r)
|
||||
AM_RANGE(0x58, 0x5b) AM_WRITE(expint_ack_w)
|
||||
AM_RANGE(0x60, 0x63) AM_WRITE(palette_w)
|
||||
AM_RANGE(0x70, 0x70) AM_DEVWRITE("crtc", mc6845_device, address_w)
|
||||
AM_RANGE(0x71, 0x71) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/* Input ports */
|
||||
static INPUT_PORTS_START( tvc )
|
||||
PORT_START("LINE0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('+')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('&')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('/')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\x8d") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(0x00cd)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('\'')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('!')
|
||||
PORT_START("LINE1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR('^')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xbc") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(0x00fc)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('*')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xb3") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(0x00f3)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xb6") PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(0x00f6)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('=')
|
||||
PORT_START("LINE2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('$')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("@") PORT_CODE(KEYCODE_HOME) PORT_CHAR('@')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
|
||||
PORT_START("LINE3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc5\x91") PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(0x0151)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xba") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(0x00fa)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
|
||||
PORT_START("LINE4")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\\") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("<") PORT_CODE(KEYCODE_END) PORT_CHAR('<')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
|
||||
PORT_START("LINE5")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xa1") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(0x00e1)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc5\xb1") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(0x0171)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xa9") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(0x00e9)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
|
||||
PORT_START("LINE6")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
|
||||
PORT_START("LINE7")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Alt") PORT_CODE(KEYCODE_RALT) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('?')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR(':')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL))
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("=") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
|
||||
PORT_START("LINE8")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Insert") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Fire") PORT_CODE(KEYCODE_PGUP) //PORT_CHAR(UCHAR_MAMEKEY())
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Acc") PORT_CODE(KEYCODE_PGDN) //PORT_CHAR(UCHAR_MAMEKEY())
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE9")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINEA")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINEB")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINEC")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINED")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINEE")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINEF")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE.0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('+')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('&')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('/')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\x8d") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(0x00cd)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('\'')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('!')
|
||||
|
||||
PORT_START("LINE.1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR('^')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xbc") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(0x00fc)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('*')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xb3") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(0x00f3)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xb6") PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(0x00f6)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('=')
|
||||
|
||||
PORT_START("LINE.2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('$')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("@") PORT_CODE(KEYCODE_HOME) PORT_CHAR('@')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
|
||||
|
||||
PORT_START("LINE.3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc5\x91") PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(0x0151)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xba") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(0x00fa)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
|
||||
|
||||
PORT_START("LINE.4")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\\") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("<") PORT_CODE(KEYCODE_END) PORT_CHAR('<')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
|
||||
|
||||
PORT_START("LINE.5")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xa1") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(0x00e1)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc5\xb1") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(0x0171)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xa9") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(0x00e9)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
|
||||
|
||||
PORT_START("LINE.6")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
|
||||
|
||||
PORT_START("LINE.7")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Alt") PORT_CODE(KEYCODE_RALT) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('?')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR(':')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL))
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("=") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
|
||||
|
||||
PORT_START("LINE.8")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Insert") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Fire") PORT_CODE(KEYCODE_PGUP) //PORT_CHAR(UCHAR_MAMEKEY())
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Acc") PORT_CODE(KEYCODE_PGDN) //PORT_CHAR(UCHAR_MAMEKEY())
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
|
||||
PORT_START("LINE.9")
|
||||
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE.10")
|
||||
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE.11")
|
||||
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE.12")
|
||||
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE.13")
|
||||
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE.14")
|
||||
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE.15")
|
||||
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( tvc64pru )
|
||||
PORT_START("LINE0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR(0x0436)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DL") PORT_CODE(KEYCODE_HOME) // delete line
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DC") PORT_CODE(KEYCODE_7_PAD)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
||||
PORT_START("LINE1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("IL") PORT_CODE(KEYCODE_END) // insert line
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('{')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("_") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('_')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
||||
PORT_START("LINE2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
|
||||
PORT_START("LINE3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(":") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
|
||||
PORT_START("LINE4")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
|
||||
PORT_START("LINE5")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\\") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
|
||||
PORT_START("LINE6")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR('^')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
|
||||
PORT_START("LINE7")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Alt") PORT_CODE(KEYCODE_RALT) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("@") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR('@') PORT_CHAR('\'')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL))
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("=") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
|
||||
PORT_START("LINE8")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Insert") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Up") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(UP))
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Down") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Fire") PORT_CODE(KEYCODE_PGUP) //PORT_CHAR(UCHAR_MAMEKEY())
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Acc") PORT_CODE(KEYCODE_PGDN) //PORT_CHAR(UCHAR_MAMEKEY())
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Right") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Left") PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE9")
|
||||
PORT_BIT(0x7F, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('*')
|
||||
PORT_START("LINEA")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINEB")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINEC")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINED")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINEE")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINEF")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE.0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR(0x0436)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DL") PORT_CODE(KEYCODE_HOME) // delete line
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DC") PORT_CODE(KEYCODE_7_PAD)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
||||
|
||||
PORT_START("LINE.1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("IL") PORT_CODE(KEYCODE_END) // insert line
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('{')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("_") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('_')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
||||
|
||||
PORT_START("LINE.2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
|
||||
|
||||
PORT_START("LINE.3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(":") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
|
||||
|
||||
PORT_START("LINE.4")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
|
||||
|
||||
PORT_START("LINE.5")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\\") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
|
||||
|
||||
PORT_START("LINE.6")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR('^')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
|
||||
|
||||
PORT_START("LINE.7")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Alt") PORT_CODE(KEYCODE_RALT) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("@") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR('@') PORT_CHAR('\'')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL))
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("=") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
|
||||
|
||||
PORT_START("LINE.8")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Insert") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Up") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(UP))
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Down") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Fire") PORT_CODE(KEYCODE_PGUP) //PORT_CHAR(UCHAR_MAMEKEY())
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Acc") PORT_CODE(KEYCODE_PGDN) //PORT_CHAR(UCHAR_MAMEKEY())
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Right") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Left") PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
|
||||
PORT_START("LINE.9")
|
||||
PORT_BIT(0x7f, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('*')
|
||||
PORT_START("LINE.10")
|
||||
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE.11")
|
||||
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE.12")
|
||||
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE.13")
|
||||
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE.14")
|
||||
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE.15")
|
||||
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
INPUT_PORTS_END
|
||||
|
||||
void tvc_state::machine_start()
|
||||
{
|
||||
for (int i=0; i<4; i++)
|
||||
for (int i = 0; i < 4; i++)
|
||||
m_col[i] = i;
|
||||
|
||||
m_int_flipflop = 0;
|
||||
@ -492,12 +602,19 @@ void tvc_state::machine_start()
|
||||
m_expansions[1] = machine().device<tvcexp_slot_device>("exp2");
|
||||
m_expansions[2] = machine().device<tvcexp_slot_device>("exp3");
|
||||
m_expansions[3] = machine().device<tvcexp_slot_device>("exp4");
|
||||
|
||||
m_bios_rom = memregion("sys");
|
||||
m_ext = memregion("ext");
|
||||
m_vram = memregion("vram");
|
||||
|
||||
astring region_tag;
|
||||
m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG));
|
||||
}
|
||||
|
||||
void tvc_state::machine_reset()
|
||||
{
|
||||
memset(m_ram->pointer(), 0, m_ram->size());
|
||||
tvc_set_mem_page(0);
|
||||
set_mem_page(0);
|
||||
m_video_mode = 0;
|
||||
m_cassette_ff = 1;
|
||||
m_centronics_ff = 1;
|
||||
@ -514,7 +631,7 @@ MC6845_UPDATE_ROW( tvc_state::crtc_update_row )
|
||||
{
|
||||
const rgb_t *palette = m_palette->palette()->entry_list_raw();
|
||||
UINT32 *p = &bitmap.pix32(y);
|
||||
UINT8 *vram = memregion("vram")->base() + ((m_vram_bank & 0x30)<<10);
|
||||
UINT8 *vram = m_vram->base() + ((m_vram_bank & 0x30)<<10);
|
||||
UINT16 offset = ((ma*4 + ra*0x40) & 0x3fff);
|
||||
int i;
|
||||
|
||||
@ -599,7 +716,7 @@ PALETTE_INIT_MEMBER(tvc_state, tvc)
|
||||
palette.set_pen_color(i, tvc_palette[i][0], tvc_palette[i][1], tvc_palette[i][2]);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(tvc_state::tvc_int_ff_set)
|
||||
WRITE_LINE_MEMBER(tvc_state::int_ff_set)
|
||||
{
|
||||
if (state)
|
||||
{
|
||||
@ -608,13 +725,13 @@ WRITE_LINE_MEMBER(tvc_state::tvc_int_ff_set)
|
||||
}
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(tvc_state::tvc_centronics_ack)
|
||||
WRITE_LINE_MEMBER(tvc_state::centronics_ack)
|
||||
{
|
||||
if (state)
|
||||
m_centronics_ff = 1;
|
||||
}
|
||||
|
||||
QUICKLOAD_LOAD_MEMBER( tvc_state,tvc64)
|
||||
QUICKLOAD_LOAD_MEMBER( tvc_state, tvc64)
|
||||
{
|
||||
UINT8 first_byte;
|
||||
|
||||
@ -658,7 +775,7 @@ static MACHINE_CONFIG_START( tvc, tvc_state )
|
||||
MCFG_MC6845_SHOW_BORDER_AREA(false)
|
||||
MCFG_MC6845_CHAR_WIDTH(8) /*?*/
|
||||
MCFG_MC6845_UPDATE_ROW_CB(tvc_state, crtc_update_row)
|
||||
MCFG_MC6845_OUT_CUR_CB(WRITELINE(tvc_state, tvc_int_ff_set))
|
||||
MCFG_MC6845_OUT_CUR_CB(WRITELINE(tvc_state, int_ff_set))
|
||||
|
||||
/* internal ram */
|
||||
MCFG_RAM_ADD(RAM_TAG)
|
||||
@ -668,19 +785,17 @@ static MACHINE_CONFIG_START( tvc, tvc_state )
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("custom", TVC_SOUND, 0)
|
||||
MCFG_TVC_SOUND_SNDINT_CALLBACK(WRITELINE(tvc_state, tvc_int_ff_set))
|
||||
MCFG_TVC_SOUND_SNDINT_CALLBACK(WRITELINE(tvc_state, int_ff_set))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
|
||||
|
||||
MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
|
||||
MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(tvc_state, tvc_centronics_ack))
|
||||
MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(tvc_state, centronics_ack))
|
||||
|
||||
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
|
||||
|
||||
/* cartridge */
|
||||
MCFG_CARTSLOT_ADD("cart")
|
||||
MCFG_CARTSLOT_EXTENSION_LIST("crt,rom,bin")
|
||||
MCFG_CARTSLOT_NOT_MANDATORY
|
||||
MCFG_CARTSLOT_INTERFACE("tvc_cart")
|
||||
MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_plain_slot, "tvc_cart")
|
||||
MCFG_GENERIC_EXTENSIONS("bin,rom,crt")
|
||||
|
||||
/* expansion interface */
|
||||
MCFG_DEVICE_ADD("exp1", TVCEXP_SLOT, 0)
|
||||
@ -718,8 +833,7 @@ ROM_START( tvc64 )
|
||||
ROM_REGION( 0x4000, "sys", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "tvc12_d4.64k", 0x0000, 0x2000, CRC(834ca9be) SHA1(c333318c1c6185aae2d3dfb86d55e3a4a3071a73))
|
||||
ROM_LOAD( "tvc12_d3.64k", 0x2000, 0x2000, CRC(71753d02) SHA1(d9a1905cf55c532b3380c83158fb5254ee503829))
|
||||
ROM_REGION( 0x4000, "cart", ROMREGION_ERASEFF )
|
||||
ROM_CART_LOAD( "cart", 0, 0x4000, 0 )
|
||||
|
||||
ROM_REGION( 0x4000, "ext", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "tvc12_d7.64k", 0x2000, 0x2000, CRC(1cbbeac6) SHA1(54b29c9ca9942f04620fbf3edab3b8e3cd21c194))
|
||||
|
||||
@ -735,8 +849,6 @@ ROM_START( tvc64p )
|
||||
ROMX_LOAD( "tvc21_d6.64k", 0x0000, 0x2000, CRC(f197ffce) SHA1(7b27a91504dd864170451949ada5f938d6532cae), ROM_BIOS(2) )
|
||||
ROMX_LOAD( "tvc21_d4.64k", 0x2000, 0x2000, CRC(b054c0b2) SHA1(c8ca8d5a4d092604de01e2cafc2a2dabe94e6380), ROM_BIOS(2) )
|
||||
|
||||
ROM_REGION( 0x4000, "cart", ROMREGION_ERASEFF )
|
||||
ROM_CART_LOAD( "cart", 0, 0x4000, 0 )
|
||||
ROM_REGION( 0x4000, "ext", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "tvc22_d7.64k", 0x2000, 0x2000, CRC(05e1c3a8) SHA1(abf119cf947ea32defd08b29a8a25d75f6bd4987))
|
||||
|
||||
@ -747,8 +859,7 @@ ROM_START( tvc64pru )
|
||||
ROM_REGION( 0x4000, "sys", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "tvcru_d6.bin", 0x0000, 0x2000, CRC(1e0fa0b8) SHA1(9bebb6c8f03f9641bd35c9fd45ffc13a48e5c572))
|
||||
ROM_LOAD( "tvcru_d4.bin", 0x2000, 0x2000, CRC(bac5dd4f) SHA1(665a1b8c80b6ad82090803621f0c73ef9243c7d4))
|
||||
ROM_REGION( 0x4000, "cart", ROMREGION_ERASEFF )
|
||||
ROM_CART_LOAD( "cart", 0, 0x4000, 0 )
|
||||
|
||||
ROM_REGION( 0x4000, "ext", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "tvcru_d7.bin", 0x2000, 0x2000, CRC(70cde756) SHA1(c49662af9f6653347ead641e85777c3463cc161b))
|
||||
|
||||
@ -757,7 +868,7 @@ ROM_END
|
||||
|
||||
/* Driver */
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1985, tvc64, 0, 0, tvc, tvc, driver_device, 0, "Videoton", "TVC 64", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
COMP( 1985, tvc64p, tvc64, 0, tvc, tvc, driver_device, 0, "Videoton", "TVC 64+", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
COMP( 1985, tvc64pru,tvc64, 0, tvc, tvc64pru, driver_device, 0, "Videoton", "TVC 64+ (Russian)", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1985, tvc64, 0, 0, tvc, tvc, driver_device, 0, "Videoton", "TVC 64", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
COMP( 1985, tvc64p, tvc64, 0, tvc, tvc, driver_device, 0, "Videoton", "TVC 64+", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
COMP( 1985, tvc64pru, tvc64, 0, tvc, tvc64pru, driver_device, 0, "Videoton", "TVC 64+ (Russian)", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
|
@ -960,11 +960,11 @@ WRITE8_MEMBER( x1_state::x1_sub_io_w )
|
||||
|
||||
READ8_MEMBER( x1_state::x1_rom_r )
|
||||
{
|
||||
UINT8 *rom = memregion("cart_img")->base();
|
||||
|
||||
// printf("%06x\n",m_rom_index[0]<<16|m_rom_index[1]<<8|m_rom_index[2]<<0);
|
||||
|
||||
return rom[m_rom_index[0]<<16|m_rom_index[1]<<8|m_rom_index[2]<<0];
|
||||
if (m_cart->cart_mounted())
|
||||
return m_cart->read_rom(space, (m_rom_index[0] << 16) | (m_rom_index[1] << 8) | (m_rom_index[2] << 0));
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( x1_state::x1_rom_w )
|
||||
@ -2478,9 +2478,8 @@ static MACHINE_CONFIG_START( x1, x1_state )
|
||||
MCFG_DEVICE_ADD("fdc", MB8877, 0)
|
||||
MCFG_WD17XX_DEFAULT_DRIVE4_TAGS
|
||||
|
||||
MCFG_CARTSLOT_ADD("cart")
|
||||
MCFG_CARTSLOT_EXTENSION_LIST("rom")
|
||||
MCFG_CARTSLOT_NOT_MANDATORY
|
||||
MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_plain_slot, "x1_cart")
|
||||
MCFG_GENERIC_EXTENSIONS("bin,rom")
|
||||
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -2561,9 +2560,6 @@ MACHINE_CONFIG_END
|
||||
ROM_REGION(0x20000, "kanji", ROMREGION_ERASEFF)
|
||||
|
||||
ROM_REGION(0x20000, "raw_kanji", ROMREGION_ERASEFF)
|
||||
|
||||
ROM_REGION( 0x1000000, "cart_img", ROMREGION_ERASE00 )
|
||||
ROM_CART_LOAD("cart", 0x0000, 0xffffff, ROM_OPTIONAL | ROM_NOMIRROR)
|
||||
ROM_END
|
||||
|
||||
ROM_START( x1turbo )
|
||||
@ -2587,9 +2583,6 @@ ROM_START( x1turbo )
|
||||
ROM_LOAD("kanji2.rom", 0x08000, 0x8000, CRC(e710628a) SHA1(103bbe459dc8da27a9400aa45b385255c18fcc75) )
|
||||
ROM_LOAD("kanji3.rom", 0x10000, 0x8000, CRC(8cae13ae) SHA1(273f3329c70b332f6a49a3a95e906bbfe3e9f0a1) )
|
||||
ROM_LOAD("kanji1.rom", 0x18000, 0x8000, CRC(5874f70b) SHA1(dad7ada1b70c45f1e9db11db273ef7b385ef4f17) )
|
||||
|
||||
ROM_REGION( 0x1000000, "cart_img", ROMREGION_ERASE00 )
|
||||
ROM_CART_LOAD("cart", 0x0000, 0xffffff, ROM_OPTIONAL | ROM_NOMIRROR)
|
||||
ROM_END
|
||||
|
||||
ROM_START( x1turbo40 )
|
||||
@ -2613,9 +2606,6 @@ ROM_START( x1turbo40 )
|
||||
ROM_LOAD("kanji2.rom", 0x08000, 0x8000, CRC(e710628a) SHA1(103bbe459dc8da27a9400aa45b385255c18fcc75) )
|
||||
ROM_LOAD("kanji3.rom", 0x10000, 0x8000, CRC(8cae13ae) SHA1(273f3329c70b332f6a49a3a95e906bbfe3e9f0a1) )
|
||||
ROM_LOAD("kanji1.rom", 0x18000, 0x8000, CRC(5874f70b) SHA1(dad7ada1b70c45f1e9db11db273ef7b385ef4f17) )
|
||||
|
||||
ROM_REGION( 0x1000000, "cart_img", ROMREGION_ERASE00 )
|
||||
ROM_CART_LOAD("cart", 0x0000, 0xffffff, ROM_OPTIONAL | ROM_NOMIRROR)
|
||||
ROM_END
|
||||
|
||||
|
||||
|
@ -474,9 +474,8 @@ static MACHINE_CONFIG_START( x1twin, x1twin_state )
|
||||
MCFG_DEVICE_ADD("fdc", MB8877, 0)
|
||||
MCFG_WD17XX_DEFAULT_DRIVE4_TAGS
|
||||
|
||||
MCFG_CARTSLOT_ADD("cart")
|
||||
MCFG_CARTSLOT_EXTENSION_LIST("rom")
|
||||
MCFG_CARTSLOT_NOT_MANDATORY
|
||||
MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_plain_slot, "x1_cart")
|
||||
MCFG_GENERIC_EXTENSIONS("bin,rom")
|
||||
|
||||
MCFG_SPEAKER_ADD("x1_l",-0.2, 0.0, 1.0)
|
||||
MCFG_SPEAKER_ADD("x1_r",0.2, 0.0, 1.0)
|
||||
@ -547,9 +546,6 @@ ROM_START( x1twin )
|
||||
ROM_LOAD("kanji2.rom", 0x08000, 0x8000, BAD_DUMP CRC(e710628a) SHA1(103bbe459dc8da27a9400aa45b385255c18fcc75) )
|
||||
ROM_LOAD("kanji3.rom", 0x10000, 0x8000, BAD_DUMP CRC(8cae13ae) SHA1(273f3329c70b332f6a49a3a95e906bbfe3e9f0a1) )
|
||||
ROM_LOAD("kanji1.rom", 0x18000, 0x8000, BAD_DUMP CRC(5874f70b) SHA1(dad7ada1b70c45f1e9db11db273ef7b385ef4f17) )
|
||||
|
||||
ROM_REGION( 0x1000000, "cart_img", ROMREGION_ERASE00 )
|
||||
ROM_CART_LOAD("cart", 0x0000, 0xffffff, ROM_OPTIONAL | ROM_NOMIRROR)
|
||||
ROM_END
|
||||
|
||||
COMP( 1986, x1twin, x1, 0, x1twin, x1twin, x1_state, x1_kanji,"Sharp", "X1 Twin (CZ-830C)", GAME_NOT_WORKING )
|
||||
|
@ -8,6 +8,8 @@
|
||||
#define __ADVISION__
|
||||
|
||||
#include "sound/dac.h"
|
||||
#include "bus/generic/slot.h"
|
||||
#include "bus/generic/carts.h"
|
||||
|
||||
#define SCREEN_TAG "screen"
|
||||
#define I8048_TAG "i8048"
|
||||
@ -21,12 +23,14 @@ public:
|
||||
m_maincpu(*this, I8048_TAG),
|
||||
m_soundcpu(*this, COP411_TAG),
|
||||
m_dac(*this, "dac"),
|
||||
m_cart(*this, "cartslot"),
|
||||
m_palette(*this, "palette")
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_soundcpu;
|
||||
required_device<dac_device> m_dac;
|
||||
required_device<generic_slot_device> m_cart;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
virtual void machine_start();
|
||||
@ -39,6 +43,7 @@ public:
|
||||
void vh_write(int data);
|
||||
void vh_update(int x);
|
||||
|
||||
DECLARE_READ8_MEMBER( rom_r );
|
||||
DECLARE_READ8_MEMBER( ext_ram_r );
|
||||
DECLARE_WRITE8_MEMBER( ext_ram_w );
|
||||
DECLARE_READ8_MEMBER( controller_r );
|
||||
@ -49,6 +54,8 @@ public:
|
||||
DECLARE_WRITE8_MEMBER( sound_g_w );
|
||||
DECLARE_WRITE8_MEMBER( sound_d_w );
|
||||
|
||||
memory_region *m_cart_rom;
|
||||
|
||||
/* external RAM state */
|
||||
UINT8 *m_ext_ram;
|
||||
int m_rambank;
|
||||
|
@ -13,11 +13,17 @@
|
||||
#include "machine/i8255.h"
|
||||
#include "machine/ins8250.h"
|
||||
#include "machine/wd17xx.h"
|
||||
#include "imagedev/cassette.h"
|
||||
#include "sound/dac.h"
|
||||
#include "machine/ram.h"
|
||||
#include "machine/buffer.h"
|
||||
#include "imagedev/cassette.h"
|
||||
#include "sound/dac.h"
|
||||
#include "sound/ay8910.h"
|
||||
#include "sound/wave.h"
|
||||
#include "video/mc6845.h"
|
||||
#include "video/tms9928a.h"
|
||||
#include "bus/centronics/ctronics.h"
|
||||
#include "bus/generic/slot.h"
|
||||
#include "bus/generic/carts.h"
|
||||
|
||||
|
||||
struct SVI_318
|
||||
@ -58,8 +64,6 @@ class svi318_state : public driver_device
|
||||
public:
|
||||
svi318_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_pcart(NULL),
|
||||
m_pcart_rom_size(0),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_cassette(*this, "cassette"),
|
||||
m_dac(*this, "dac"),
|
||||
@ -69,6 +73,7 @@ public:
|
||||
m_cent_data_out(*this, "cent_data_out"),
|
||||
m_ins8250_0(*this, "ins8250_0"),
|
||||
m_ins8250_1(*this, "ins8250_1"),
|
||||
m_cart(*this, "cartslot"),
|
||||
m_line0(*this, "LINE0"),
|
||||
m_line1(*this, "LINE1"),
|
||||
m_line2(*this, "LINE2"),
|
||||
@ -85,8 +90,6 @@ public:
|
||||
m_palette(*this, "palette") { }
|
||||
|
||||
SVI_318 m_svi;
|
||||
UINT8 *m_pcart;
|
||||
UINT32 m_pcart_rom_size;
|
||||
int m_centronics_busy;
|
||||
SVI318_FDC_STRUCT m_fdc;
|
||||
DECLARE_WRITE8_MEMBER(svi318_ppi_w);
|
||||
@ -115,12 +118,13 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(svi318_ppi_port_c_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(svi_fdc_intrq_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(svi_fdc_drq_w);
|
||||
bool cart_verify(UINT8 *ROM);
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(svi318_cart);
|
||||
DECLARE_DEVICE_IMAGE_UNLOAD_MEMBER(svi318_cart);
|
||||
DECLARE_WRITE_LINE_MEMBER(write_centronics_busy);
|
||||
|
||||
MC6845_UPDATE_ROW(crtc_update_row);
|
||||
|
||||
memory_region *m_cart_rom;
|
||||
|
||||
required_device<z80_device> m_maincpu;
|
||||
protected:
|
||||
required_device<cassette_image_device> m_cassette;
|
||||
@ -131,6 +135,7 @@ protected:
|
||||
required_device<output_latch_device> m_cent_data_out;
|
||||
required_device<ins8250_device> m_ins8250_0;
|
||||
required_device<ins8250_device> m_ins8250_1;
|
||||
required_device<generic_slot_device> m_cart;
|
||||
required_ioport m_line0;
|
||||
required_ioport m_line1;
|
||||
required_ioport m_line2;
|
||||
|
@ -1,142 +0,0 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Sandro Ronco
|
||||
/*****************************************************************************
|
||||
*
|
||||
* includes/tvc.h
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef TVC_H_
|
||||
#define TVC_H_
|
||||
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "video/mc6845.h"
|
||||
#include "machine/ram.h"
|
||||
#include "bus/centronics/ctronics.h"
|
||||
#include "imagedev/cartslot.h"
|
||||
#include "imagedev/cassette.h"
|
||||
#include "imagedev/snapquik.h"
|
||||
#include "formats/tvc_cas.h"
|
||||
|
||||
#include "bus/tvc/tvc.h"
|
||||
#include "bus/tvc/hbf.h"
|
||||
|
||||
#define TVC_RAM_BANK 1
|
||||
#define TVC_ROM_BANK 2
|
||||
|
||||
#define CENTRONICS_TAG "centronics"
|
||||
|
||||
#define MCFG_TVC_SOUND_SNDINT_CALLBACK(_write) \
|
||||
devcb = &tvc_sound_device::set_sndint_wr_callback(*device, DEVCB_##_write);
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> tvc_sound_device
|
||||
|
||||
class tvc_sound_device : public device_t,
|
||||
public device_sound_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
tvc_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
template<class _Object> static devcb_base &set_sndint_wr_callback(device_t &device, _Object object) { return downcast<tvc_sound_device &>(device).m_write_sndint.set_callback(object); }
|
||||
|
||||
DECLARE_WRITE8_MEMBER(write);
|
||||
void reset_divider();
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
|
||||
|
||||
private:
|
||||
static const device_timer_id TIMER_SNDINT = 0;
|
||||
|
||||
sound_stream * m_stream;
|
||||
int m_freq;
|
||||
int m_enabled;
|
||||
int m_volume;
|
||||
int m_incr;
|
||||
int m_signal;
|
||||
UINT8 m_ports[3];
|
||||
emu_timer * m_sndint_timer;
|
||||
devcb_write_line m_write_sndint;
|
||||
};
|
||||
|
||||
|
||||
// ======================> tvc_state
|
||||
|
||||
class tvc_state : public driver_device
|
||||
{
|
||||
public:
|
||||
tvc_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_sound(*this, "custom"),
|
||||
m_cassette(*this, "cassette"),
|
||||
m_centronics(*this, CENTRONICS_TAG),
|
||||
m_palette(*this, "palette")
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<ram_device> m_ram;
|
||||
required_device<tvc_sound_device> m_sound;
|
||||
required_device<cassette_image_device> m_cassette;
|
||||
required_device<centronics_device> m_centronics;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
void machine_start();
|
||||
void machine_reset();
|
||||
|
||||
void tvc_set_mem_page(UINT8 data);
|
||||
DECLARE_WRITE8_MEMBER(tvc_bank_w);
|
||||
DECLARE_WRITE8_MEMBER(tvc_vram_bank_w);
|
||||
DECLARE_WRITE8_MEMBER(tvc_palette_w);
|
||||
DECLARE_WRITE8_MEMBER(tvc_keyboard_w);
|
||||
DECLARE_READ8_MEMBER(tvc_keyboard_r);
|
||||
DECLARE_READ8_MEMBER(tvc_int_state_r);
|
||||
DECLARE_WRITE8_MEMBER(tvc_flipflop_w);
|
||||
DECLARE_WRITE8_MEMBER(tvc_border_color_w);
|
||||
DECLARE_WRITE8_MEMBER(tvc_sound_w);
|
||||
DECLARE_WRITE8_MEMBER(tvc_cassette_w);
|
||||
DECLARE_READ8_MEMBER(tvc_5b_r);
|
||||
DECLARE_WRITE_LINE_MEMBER(tvc_int_ff_set);
|
||||
DECLARE_WRITE_LINE_MEMBER(tvc_centronics_ack);
|
||||
|
||||
// expansions
|
||||
DECLARE_WRITE8_MEMBER(tvc_expansion_w);
|
||||
DECLARE_READ8_MEMBER(tvc_expansion_r);
|
||||
DECLARE_READ8_MEMBER(tvc_exp_id_r);
|
||||
DECLARE_WRITE8_MEMBER(tvc_expint_ack_w);
|
||||
|
||||
DECLARE_QUICKLOAD_LOAD_MEMBER( tvc64);
|
||||
|
||||
MC6845_UPDATE_ROW(crtc_update_row);
|
||||
|
||||
tvcexp_slot_device * m_expansions[4];
|
||||
UINT8 m_video_mode;
|
||||
UINT8 m_keyline;
|
||||
UINT8 m_active_slot;
|
||||
UINT8 m_int_flipflop;
|
||||
UINT8 m_col[4];
|
||||
UINT8 m_bank_type[4];
|
||||
UINT8 m_bank;
|
||||
UINT8 m_vram_bank;
|
||||
UINT8 m_cassette_ff;
|
||||
UINT8 m_centronics_ff;
|
||||
DECLARE_PALETTE_INIT(tvc);
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
extern const device_type TVC_SOUND;
|
||||
|
||||
#endif /* TVC_H_ */
|
@ -21,9 +21,10 @@
|
||||
#include "sound/wave.h"
|
||||
#include "imagedev/cassette.h"
|
||||
#include "imagedev/flopdrv.h"
|
||||
#include "imagedev/cartslot.h"
|
||||
#include "formats/basicdsk.h"
|
||||
#include "formats/x1_tap.h"
|
||||
#include "bus/generic/slot.h"
|
||||
#include "bus/generic/carts.h"
|
||||
|
||||
|
||||
// ======================> x1_keyboard_device
|
||||
@ -74,18 +75,20 @@ class x1_state : public driver_device
|
||||
public:
|
||||
x1_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this,"x1_cpu"),
|
||||
m_cassette(*this, "cassette"),
|
||||
m_fdc(*this, "fdc"),
|
||||
m_crtc(*this, "crtc"),
|
||||
m_ctc(*this, "ctc"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_maincpu(*this,"x1_cpu"),
|
||||
m_cassette(*this, "cassette"),
|
||||
m_cart(*this, "cartslot"),
|
||||
m_fdc(*this, "fdc"),
|
||||
m_crtc(*this, "crtc"),
|
||||
m_ctc(*this, "ctc"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette"),
|
||||
m_dma(*this, "dma")
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cassette_image_device> m_cassette;
|
||||
required_device<generic_slot_device> m_cart;
|
||||
required_device<mb8877_device> m_fdc;
|
||||
required_device<mc6845_device> m_crtc;
|
||||
required_device<z80ctc_device> m_ctc;
|
||||
|
@ -27,9 +27,12 @@
|
||||
|
||||
void advision_state::machine_start()
|
||||
{
|
||||
astring region_tag;
|
||||
m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG));
|
||||
|
||||
/* configure EA banking */
|
||||
membank("bank1")->configure_entry(0, memregion("bios")->base());
|
||||
membank("bank1")->configure_entry(1, memregion(I8048_TAG)->base());
|
||||
membank("bank1")->configure_entry(0, memregion(I8048_TAG)->base());
|
||||
membank("bank1")->configure_entry(1, m_cart_rom->base());
|
||||
m_maincpu->space(AS_PROGRAM).install_readwrite_bank(0x0000, 0x03ff, "bank1");
|
||||
membank("bank1")->set_entry(0);
|
||||
|
||||
|
@ -42,50 +42,34 @@ static INS8250_REFRESH_CONNECT( svi318_com_refresh_connected )
|
||||
|
||||
/* Cartridge */
|
||||
|
||||
bool svi318_state::cart_verify(UINT8 *ROM)
|
||||
{
|
||||
if (ROM[0] != 0xf3 || ROM[1] != 0x31)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
DEVICE_IMAGE_LOAD_MEMBER( svi318_state, svi318_cart )
|
||||
{
|
||||
UINT8 *p = memregion("user1")->base();
|
||||
UINT32 size;
|
||||
|
||||
if (image.software_entry() == NULL)
|
||||
size = image.length();
|
||||
else
|
||||
size = image.get_software_region_length("rom");
|
||||
UINT32 size = m_cart->common_get_size("rom");
|
||||
|
||||
if (size > 0x8000)
|
||||
{
|
||||
logerror("Cart image %s larger than expected. Please report the issue.\n", image.filename());
|
||||
|
||||
if (image.software_entry() == NULL)
|
||||
{
|
||||
if (image.fread(p, size) != size)
|
||||
{
|
||||
logerror("Can't read file %s\n", image.filename());
|
||||
return IMAGE_INIT_FAIL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(p, image.get_software_region("rom"), size);
|
||||
}
|
||||
|
||||
if ( p[0] != 0xf3 || p[1] != 0x31 )
|
||||
{
|
||||
return IMAGE_INIT_FAIL;
|
||||
}
|
||||
|
||||
m_pcart = p;
|
||||
m_pcart_rom_size = size;
|
||||
m_cart->rom_alloc(size, 1);
|
||||
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
|
||||
|
||||
if (image.software_entry() == NULL && !cart_verify(m_cart->get_rom_base()))
|
||||
return IMAGE_INIT_FAIL;
|
||||
|
||||
return IMAGE_INIT_PASS;
|
||||
}
|
||||
|
||||
|
||||
DEVICE_IMAGE_UNLOAD_MEMBER( svi318_state, svi318_cart )
|
||||
{
|
||||
m_pcart = NULL;
|
||||
m_pcart_rom_size = 0;
|
||||
}
|
||||
|
||||
|
||||
/* PPI */
|
||||
|
||||
@ -487,12 +471,16 @@ DRIVER_INIT_MEMBER(svi318_state,svi318)
|
||||
memset (m_svi.empty_bank, 0xff, 0x8000);
|
||||
}
|
||||
|
||||
MACHINE_START_MEMBER(svi318_state,svi318_ntsc)
|
||||
MACHINE_START_MEMBER(svi318_state, svi318_ntsc)
|
||||
{
|
||||
astring region_tag;
|
||||
m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG));
|
||||
}
|
||||
|
||||
MACHINE_START_MEMBER(svi318_state,svi318_pal)
|
||||
MACHINE_START_MEMBER(svi318_state, svi318_pal)
|
||||
{
|
||||
astring region_tag;
|
||||
m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG));
|
||||
}
|
||||
|
||||
static void svi318_load_proc(device_image_interface &image)
|
||||
@ -591,10 +579,8 @@ void svi318_state::svi318_set_banks()
|
||||
m_svi.bankLow_ptr = memregion("maincpu")->base();
|
||||
break;
|
||||
case SVI_CART:
|
||||
if ( m_pcart )
|
||||
{
|
||||
m_svi.bankLow_ptr = m_pcart;
|
||||
}
|
||||
if (m_cart_rom)
|
||||
m_svi.bankLow_ptr = m_cart_rom->base();
|
||||
break;
|
||||
case SVI_EXPRAM2:
|
||||
if ( ram_size >= 64 * 1024 )
|
||||
@ -658,14 +644,10 @@ void svi318_state::svi318_set_banks()
|
||||
m_svi.bankHigh1_read_only = 1;
|
||||
m_svi.bankHigh2_ptr = m_svi.empty_bank;
|
||||
m_svi.bankHigh2_read_only = 1;
|
||||
if ( m_pcart && ! ( v & 0x80 ) )
|
||||
{
|
||||
m_svi.bankHigh2_ptr = m_pcart + 0x4000;
|
||||
}
|
||||
if ( m_pcart && ! ( v & 0x40 ) )
|
||||
{
|
||||
m_svi.bankHigh1_ptr = m_pcart;
|
||||
}
|
||||
if (m_cart_rom && !(v & 0x80))
|
||||
m_svi.bankHigh2_ptr = m_cart_rom->base() + 0x4000;
|
||||
if (m_cart_rom && !(v & 0x40))
|
||||
m_svi.bankHigh1_ptr = m_cart_rom->base();
|
||||
}
|
||||
|
||||
membank("bank1")->set_base(m_svi.bankLow_ptr );
|
||||
|
@ -2003,7 +2003,7 @@ $(MESSOBJ)/vidbrain.a: \
|
||||
|
||||
$(MESSOBJ)/videoton.a: \
|
||||
$(MESS_DRIVERS)/tvc.o \
|
||||
$(MESS_AUDIO)/tvc.o \
|
||||
$(MESS_AUDIO)/tvc_snd.o \
|
||||
|
||||
$(MESSOBJ)/visual.a: \
|
||||
$(MESS_DRIVERS)/v1050.o \
|
||||
|
Loading…
Reference in New Issue
Block a user