2 Skelton for retropc emulator
4 Author : Takeda.Toshiya
17 #define SIG_I8255_PORT_A 0
18 #define SIG_I8255_PORT_B 1
19 #define SIG_I8255_PORT_C 2
21 class I8255 : public DEVICE
33 bool __I8255_AUTO_HAND_SHAKE;
36 I8255(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
38 for(int i = 0; i < 3; i++) {
39 initialize_output_signals(&port[i].outputs);
40 port[i].wreg = port[i].rreg = 0;//0xff;
42 clear_ports_by_cmdreg = false;
43 __I8255_AUTO_HAND_SHAKE = false;
44 set_device_name(_T("i8255 PIO"));
51 void write_io8(uint32_t addr, uint32_t data);
52 uint32_t read_io8(uint32_t addr);
53 void write_signal(int id, uint32_t data, uint32_t mask);
54 uint32_t read_signal(int id);
55 void save_state(FILEIO* state_fio);
56 bool load_state(FILEIO* state_fio);
58 void set_context_port_a(DEVICE* device, int id, uint32_t mask, int shift)
60 register_output_signal(&port[0].outputs, device, id, mask, shift);
62 void set_context_port_b(DEVICE* device, int id, uint32_t mask, int shift)
64 register_output_signal(&port[1].outputs, device, id, mask, shift);
66 void set_context_port_c(DEVICE* device, int id, uint32_t mask, int shift)
68 register_output_signal(&port[2].outputs, device, id, mask, shift);
70 bool clear_ports_by_cmdreg;