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_TEMPLATE* parent_vm, EMU_TEMPLATE* 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 __FASTCALL write_io8(uint32_t addr, uint32_t data);
129 uint32_t __FASTCALL read_io8(uint32_t addr);
130 void event_callback(int event_id, int err);
131 void __FASTCALL write_signal(int id, uint32_t data, uint32_t mask);
132 bool process_state(FILEIO* state_fio, bool loading);
135 void set_context_port_a(DEVICE* device, int id, uint32_t mask, int shift)
137 register_output_signal(&outputs_a, device, id, mask, shift);
139 void set_context_port_b(DEVICE* device, int id, uint32_t mask, int shift)
141 register_output_signal(&outputs_b, device, id, mask, shift);
143 void set_context_ca2(DEVICE* device, int id, uint32_t mask)
145 register_output_signal(&outputs_ca2, device, id, mask);
147 void set_context_cb1(DEVICE* device, int id, uint32_t mask)
149 register_output_signal(&outputs_cb1, device, id, mask);
151 void set_context_cb2(DEVICE* device, int id, uint32_t mask)
153 register_output_signal(&outputs_cb2, device, id, mask);
155 void set_context_irq(DEVICE* device, int id, uint32_t mask)
157 register_output_signal(&outputs_irq, device, id, mask);
159 void set_constant_clock(uint32_t hz)