summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/includes/cybiko.h
blob: 28a0ff596b71e57c4879a2c0c807032637b6a016 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*****************************************************************************
 *
 * includes/cybiko.h
 *
 * Cybiko Wireless Inter-tainment System
 *
 * (c) 2001-2007 Tim Schuerewegen
 *
 * Cybiko Classic (V1)
 * Cybiko Classic (V2)
 * Cybiko Xtreme
 *
 ****************************************************************************/

#ifndef CYBIKO_H_
#define CYBIKO_H_

/* Core includes */
#include "emu.h"
#include "emuopts.h"
#include "sound/speaker.h"

/* Components */
#include "cpu/h8/h8s2320.h"
#include "cpu/h8/h8s2245.h"
#include "video/hd66421.h"
#include "machine/pcf8593.h"
#include "machine/at45dbxx.h"
#include "machine/intelfsh.h"
#include "machine/ram.h"
#include "imagedev/snapquik.h"
#include "machine/nvram.h"

struct CYBIKO_RS232_PINS
{
	int sck; // serial clock
	int txd; // transmit data
	int rxd; // receive data
};

struct CYBIKO_RS232
{
	CYBIKO_RS232_PINS pin;
	UINT8 rx_bits, rx_byte, tx_byte, tx_bits;
};

class cybiko_state : public driver_device
{
public:
	cybiko_state(const machine_config &mconfig, device_type type, const char *tag)
		: driver_device(mconfig, type, tag),
	m_maincpu(*this, "maincpu"),
	m_crtc(*this, "hd66421"),
	m_speaker(*this, "speaker"),
	m_rtc(*this, "rtc"),
	m_ram(*this, RAM_TAG),
	m_flash1(*this, "flash1"),
	m_nvram(*this, "nvram")
	{ }

	DECLARE_READ16_MEMBER(serflash_r);
	DECLARE_WRITE16_MEMBER(serflash_w);
	DECLARE_READ16_MEMBER(clock_r);
	DECLARE_WRITE16_MEMBER(clock_w);
	DECLARE_READ16_MEMBER(xtclock_r);
	DECLARE_WRITE16_MEMBER(xtclock_w);
	DECLARE_READ16_MEMBER(xtpower_r);

	CYBIKO_RS232 m_rs232;
	DECLARE_READ16_MEMBER(cybiko_lcd_r);
	DECLARE_WRITE16_MEMBER(cybiko_lcd_w);
	DECLARE_READ16_MEMBER(cybikov1_key_r);
	DECLARE_READ16_MEMBER(cybikov2_key_r);
	DECLARE_READ16_MEMBER(cybikoxt_key_r);
	DECLARE_WRITE16_MEMBER(cybiko_usb_w);
	int cybiko_key_r( offs_t offset, int mem_mask);
	void cybiko_rs232_write_byte(int data);
	void cybiko_rs232_pin_sck(int data);
	void cybiko_rs232_pin_txd(int data);
	int cybiko_rs232_pin_rxd();
	int cybiko_rs232_rx_queue();
	void cybiko_rs232_init();
	void cybiko_rs232_exit();
	void cybiko_rs232_reset();

	required_device<cpu_device> m_maincpu;
	required_device<hd66421_device> m_crtc;
	required_device<speaker_sound_device> m_speaker;
	required_device<pcf8593_device> m_rtc;
	required_device<ram_device> m_ram;
	optional_device<at45db041_device> m_flash1;
	required_device<nvram_device>   m_nvram;
	DECLARE_DRIVER_INIT(cybikoxt);
	DECLARE_DRIVER_INIT(cybiko);
	virtual void machine_start();
	virtual void machine_reset();
	void machine_stop_cybiko();
	DECLARE_QUICKLOAD_LOAD_MEMBER( cybiko );
	DECLARE_QUICKLOAD_LOAD_MEMBER( cybikoxt );
};

#endif /* CYBIKO_H_ */