2 Skelton for retropc emulator
4 Origin : MAME 0.164 Rockwell 6522 VIA
5 Author : Takeda.Toshiya
11 // license:BSD-3-Clause
12 // copyright-holders:Peter Trauner, Mathis Rosenhauer
13 /**********************************************************************
15 Rockwell 6522 VIA interface and emulation
17 This function emulates all the functionality of 6522
18 versatile interface adapters.
20 This is based on the pre-existing 6821 emulation.
22 Written by Mathis Rosenhauer
24 **********************************************************************/
33 #define SIG_SY6552_PORT_A 0
34 #define SIG_SY6552_PORT_B 1
35 #define SIG_SY6552_PORT_CA1 2
36 #define SIG_SY6552_PORT_CA2 3
37 #define SIG_SY6552_PORT_CB1 4
38 #define SIG_SY6552_PORT_CB2 5
40 class SY6552 : public DEVICE
45 outputs_t outputs_ca2;
46 outputs_t outputs_cb1;
47 outputs_t outputs_cb2;
48 outputs_t outputs_irq;
52 uint16 get_counter1_value();
54 void set_int(int data);
55 void clear_int(int data);
107 uint8 m_shift_counter;
110 SY6552(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
112 init_output_signals(&outputs_a);
113 init_output_signals(&outputs_b);
114 init_output_signals(&outputs_ca2);
115 init_output_signals(&outputs_cb1);
116 init_output_signals(&outputs_cb2);
117 init_output_signals(&outputs_irq);
125 void write_io8(uint32 addr, uint32 data);
126 uint32 read_io8(uint32 addr);
127 void event_callback(int event_id, int err);
128 void write_signal(int id, uint32 data, uint32 mask);
129 void save_state(FILEIO* state_fio);
130 bool load_state(FILEIO* state_fio);
133 void set_context_port_a(DEVICE* device, int id, uint32 mask, int shift)
135 register_output_signal(&outputs_a, device, id, mask, shift);
137 void set_context_port_b(DEVICE* device, int id, uint32 mask, int shift)
139 register_output_signal(&outputs_b, device, id, mask, shift);
141 void set_context_ca2(DEVICE* device, int id, uint32 mask)
143 register_output_signal(&outputs_ca2, device, id, mask);
145 void set_context_cb1(DEVICE* device, int id, uint32 mask)
147 register_output_signal(&outputs_cb1, device, id, mask);
149 void set_context_cb2(DEVICE* device, int id, uint32 mask)
151 register_output_signal(&outputs_cb2, device, id, mask);
153 void set_context_irq(DEVICE* device, int id, uint32 mask)
155 register_output_signal(&outputs_irq, device, id, mask);
157 void set_constant_clock(uint32 hz)