void I8255::write_io8(uint32 addr, uint32 data) { int ch = addr & 3; switch(ch) { case 0: case 1: case 2: if(port[ch].wreg != data || port[ch].first) { write_signals(&port[ch].outputs, data); port[ch].wreg = data; port[ch].first = false; } break; case 3: if(data & 0x80) { port[0].rmask = (data & 0x10) ? 0xff : 0; port[0].mode = (data >> 5) & 3; port[1].rmask = (data & 2) ? 0xff : 0; port[1].mode = (data >> 2) & 1; port[2].rmask = ((data & 8) ? 0xf0 : 0) | ((data & 1) ? 0xf : 0); // clear ports if(clear_ports_by_cmdreg) { write_io8(0, 0); write_io8(1, 0); write_io8(2, 0); } } else {
void UPD765A::write_dma_io8(uint32 addr, uint32 data) { #ifdef UPD765A_DMA_MODE // EPSON QC-10 CP/M Plus dma_data_lost = false; #endif write_io8(1, data); }
void SCSI::write_dma_io8(uint32 addr, uint32 data) { write_io8(0xc30, data); }
void SASI::write_dma_io8(uint32 addr, uint32 data) { write_io8(0x1f0, data); }