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_SY6522_PORT_A 0
34 #define SIG_SY6522_PORT_B 1
35 #define SIG_SY6522_PORT_CA1 2
36 #define SIG_SY6522_PORT_CA2 3
37 #define SIG_SY6522_PORT_CB1 4
38 #define SIG_SY6522_PORT_CB2 5
40 class SY6522 : public DEVICE
45 outputs_t outputs_ca2;
46 outputs_t outputs_cb1;
47 outputs_t outputs_cb2;
48 outputs_t outputs_irq;
52 uint16_t get_counter1_value();
54 void set_int(int data);
55 void clear_int(int data);
107 uint8_t m_shift_counter;
110 SY6522(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
112 initialize_output_signals(&outputs_a);
113 initialize_output_signals(&outputs_b);
114 initialize_output_signals(&outputs_ca2);
115 initialize_output_signals(&outputs_cb1);
116 initialize_output_signals(&outputs_cb2);
117 initialize_output_signals(&outputs_irq);
119 set_device_name(_T("SY6522"));
126 void write_io8(uint32_t addr, uint32_t data);
127 uint32_t read_io8(uint32_t addr);
128 void event_callback(int event_id, int err);
129 void write_signal(int id, uint32_t data, uint32_t mask);
130 void save_state(FILEIO* state_fio);
131 bool load_state(FILEIO* state_fio);
134 void set_context_port_a(DEVICE* device, int id, uint32_t mask, int shift)
136 register_output_signal(&outputs_a, device, id, mask, shift);
138 void set_context_port_b(DEVICE* device, int id, uint32_t mask, int shift)
140 register_output_signal(&outputs_b, device, id, mask, shift);
142 void set_context_ca2(DEVICE* device, int id, uint32_t mask)
144 register_output_signal(&outputs_ca2, device, id, mask);
146 void set_context_cb1(DEVICE* device, int id, uint32_t mask)
148 register_output_signal(&outputs_cb1, device, id, mask);
150 void set_context_cb2(DEVICE* device, int id, uint32_t mask)
152 register_output_signal(&outputs_cb2, device, id, mask);
154 void set_context_irq(DEVICE* device, int id, uint32_t mask)
156 register_output_signal(&outputs_irq, device, id, mask);
158 void set_constant_clock(uint32_t hz)