2 Skelton for retropc emulator
\r
4 Author : Takeda.Toshiya
\r
17 #define SIG_MC6840_CLOCK_0 0
\r
18 #define SIG_MC6840_CLOCK_1 1
\r
19 #define SIG_MC6840_CLOCK_2 2
\r
21 class MC6840 : public DEVICE
\r
25 uint16 counter, latch;
\r
26 uint8 counter_lo, latch_hi;
\r
28 bool in_pin, out_pin;
\r
30 int clocks, prescaler;
\r
37 uint8 status, status_read;
\r
38 outputs_t outputs_irq;
\r
40 void set_control(int ch, uint32 data);
\r
41 void set_counter(int ch);
\r
42 void input_clocks(int ch, int clocks);
\r
43 void set_irq(int ch, bool signal);
\r
44 void set_signal(int ch, bool signal);
\r
47 MC6840(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
\r
49 for(int i = 0; i < 3; i++) {
\r
50 init_output_signals(&timer[i].outputs);
\r
51 counter[i].freq = 0;
\r
59 void write_io8(uint32 addr, uint32 data);
\r
60 uint32 read_io8(uint32 addr);
\r
61 void event_callback(int event_id, int err);
\r
62 void write_signal(int id, uint32 data, uint32 mask);
\r
65 void set_context_irq(DEVICE* device, int id, uint32 mask)
\r
67 register_output_signal(&outputs_irq, device, id, mask);
\r
69 void set_context_ch0(DEVICE* device, int id, uint32 mask)
\r
71 register_output_signal(&timer[0].outputs, device, id, mask);
\r
73 void set_context_ch1(DEVICE* device, int id, uint32 mask)
\r
75 register_output_signal(&timer[1].outputs, device, id, mask);
\r
77 void set_context_ch2(DEVICE* device, int id, uint32 mask)
\r
79 register_output_signal(&timer[2].outputs, device, id, mask);
\r
81 void set_constant_clock(int ch, uint32 hz)
\r
83 timer[ch].freq = hz;
\r