2 TOSHIBA PASOPIA 7 Emulator 'EmuPIA7'
4 Author : Takeda.Toshiya
13 void IOTRAP::initialize()
15 nmi_mask = pasopia = false;
18 void IOTRAP::write_io8(uint32_t addr, uint32_t data)
26 // trap : 8255-2 Port B, bit 1
27 d_pio2->write_signal(SIG_I8255_PORT_B, 2, 2);
30 d_cpu->write_signal(SIG_CPU_NMI, 1, 1);
37 uint32_t IOTRAP::read_io8(uint32_t addr)
45 // trap : 8255-2 Port B, bit 1
46 d_pio2->write_signal(SIG_I8255_PORT_B, 2, 2);
49 d_cpu->write_signal(SIG_CPU_NMI, 1, 1);
57 void IOTRAP::write_signal(int id, uint32_t data, uint32_t mask)
59 if(id == SIG_IOTRAP_I8255_2_A) {
60 // reset nmi : 8255-2 Port B, bit 1+2
62 d_pio2->write_signal(SIG_I8255_PORT_B, 0, 6);
64 } else if(id == SIG_IOTRAP_I8255_2_C) {
65 nmi_mask = ((data & 0x80) != 0);
66 pasopia = ((data & 0x40) != 0);
70 void IOTRAP::do_reset()
72 // reset : 8255-2 Port B, bit 2
73 d_pio2->write_signal(SIG_I8255_PORT_B, 4, 4);
76 d_cpu->write_signal(SIG_CPU_NMI, 1, 1);
80 #define STATE_VERSION 1
82 bool IOTRAP::process_state(FILEIO* state_fio, bool loading)
84 if(!state_fio->StateCheckUint32(STATE_VERSION)) {
87 if(!state_fio->StateCheckInt32(this_device_id)) {
90 state_fio->StateBool(nmi_mask);
91 state_fio->StateBool(pasopia);