2 Skelton for retropc emulator
4 Author : Takeda.Toshiya
17 #define SIG_I8251_RECV 0
18 #define SIG_I8251_BREAK 1
19 #define SIG_I8251_DSR 2
20 #define SIG_I8251_CLEAR 3
21 #define SIG_I8251_LOOPBACK 4
25 class I8251 : public DEVICE
29 uint8 recv, status, mode;
30 bool txen, rxen, loopback;
33 outputs_t outputs_out;
34 outputs_t outputs_rxrdy;
35 outputs_t outputs_syndet;
36 outputs_t outputs_txrdy;
37 outputs_t outputs_txe;
38 outputs_t outputs_dtr;
39 outputs_t outputs_rst;
47 I8251(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
49 initialize_output_signals(&outputs_out);
50 initialize_output_signals(&outputs_rxrdy);
51 initialize_output_signals(&outputs_syndet);
52 initialize_output_signals(&outputs_txrdy);
53 initialize_output_signals(&outputs_txe);
54 initialize_output_signals(&outputs_dtr);
55 initialize_output_signals(&outputs_rst);
63 void write_io8(uint32 addr, uint32 data);
64 uint32 read_io8(uint32 addr);
65 void write_signal(int id, uint32 data, uint32 mask);
66 void event_callback(int event_id, int err);
67 void save_state(FILEIO* state_fio);
68 bool load_state(FILEIO* state_fio);
71 void set_context_out(DEVICE* device, int id)
73 register_output_signal(&outputs_out, device, id, 0xff);
75 void set_context_rxrdy(DEVICE* device, int id, uint32 mask)
77 register_output_signal(&outputs_rxrdy, device, id, mask);
79 void set_context_syndet(DEVICE* device, int id, uint32 mask)
81 register_output_signal(&outputs_syndet, device, id, mask);
83 void set_context_txrdy(DEVICE* device, int id, uint32 mask)
85 register_output_signal(&outputs_txrdy, device, id, mask);
87 void set_context_txe(DEVICE* device, int id, uint32 mask)
89 register_output_signal(&outputs_txe, device, id, mask);
91 void set_context_dtr(DEVICE* device, int id, uint32 mask)
93 register_output_signal(&outputs_dtr, device, id, mask);
95 void set_context_rst(DEVICE* device, int id, uint32 mask)
97 register_output_signal(&outputs_rst, device, id, mask);