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
42 class SY6522 : public DEVICE
47 outputs_t outputs_ca2;
48 outputs_t outputs_cb1;
49 outputs_t outputs_cb2;
50 outputs_t outputs_irq;
54 uint16_t get_counter1_value();
56 void set_int(int data);
57 void clear_int(int data);
109 uint8_t m_shift_counter;
112 SY6522(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
114 initialize_output_signals(&outputs_a);
115 initialize_output_signals(&outputs_b);
116 initialize_output_signals(&outputs_ca2);
117 initialize_output_signals(&outputs_cb1);
118 initialize_output_signals(&outputs_cb2);
119 initialize_output_signals(&outputs_irq);
121 set_device_name(_T("SY6522 VIA"));
128 void write_io8(uint32_t addr, uint32_t data);
129 uint32_t read_io8(uint32_t addr);
130 void event_callback(int event_id, int err);
131 void write_signal(int id, uint32_t data, uint32_t mask);
132 void save_state(FILEIO* state_fio);
133 bool load_state(FILEIO* state_fio);
136 void set_context_port_a(DEVICE* device, int id, uint32_t mask, int shift)
138 register_output_signal(&outputs_a, device, id, mask, shift);
140 void set_context_port_b(DEVICE* device, int id, uint32_t mask, int shift)
142 register_output_signal(&outputs_b, device, id, mask, shift);
144 void set_context_ca2(DEVICE* device, int id, uint32_t mask)
146 register_output_signal(&outputs_ca2, device, id, mask);
148 void set_context_cb1(DEVICE* device, int id, uint32_t mask)
150 register_output_signal(&outputs_cb1, device, id, mask);
152 void set_context_cb2(DEVICE* device, int id, uint32_t mask)
154 register_output_signal(&outputs_cb2, device, id, mask);
156 void set_context_irq(DEVICE* device, int id, uint32_t mask)
158 register_output_signal(&outputs_irq, device, id, mask);
160 void set_constant_clock(uint32_t hz)