2 TOSHIBA PASOPIA 7 Emulator 'EmuPIA7'
4 Author : Takeda.Toshiya
15 void IOTRAP::initialize()
17 nmi_mask = pasopia = false;
20 void IOTRAP::write_io8(uint32_t addr, uint32_t data)
28 // trap : 8255-2 Port B, bit 1
29 d_pio2->write_signal(SIG_I8255_PORT_B, 2, 2);
32 d_cpu->write_signal(SIG_CPU_NMI, 1, 1);
39 uint32_t IOTRAP::read_io8(uint32_t addr)
47 // trap : 8255-2 Port B, bit 1
48 d_pio2->write_signal(SIG_I8255_PORT_B, 2, 2);
51 d_cpu->write_signal(SIG_CPU_NMI, 1, 1);
59 void IOTRAP::write_signal(int id, uint32_t data, uint32_t mask)
61 if(id == SIG_IOTRAP_I8255_2_A) {
62 // reset nmi : 8255-2 Port B, bit 1+2
64 d_pio2->write_signal(SIG_I8255_PORT_B, 0, 6);
66 } else if(id == SIG_IOTRAP_I8255_2_C) {
67 nmi_mask = ((data & 0x80) != 0);
68 pasopia = ((data & 0x40) != 0);
72 void IOTRAP::do_reset()
74 // reset : 8255-2 Port B, bit 2
75 d_pio2->write_signal(SIG_I8255_PORT_B, 4, 4);
78 d_cpu->write_signal(SIG_CPU_NMI, 1, 1);
82 #define STATE_VERSION 1
84 bool IOTRAP::process_state(FILEIO* state_fio, bool loading)
86 if(!state_fio->StateCheckUint32(STATE_VERSION)) {
89 if(!state_fio->StateCheckInt32(this_device_id)) {
92 state_fio->StateBool(nmi_mask);
93 state_fio->StateBool(pasopia);