static BYTE iecbus_cpu_read_conf3(CLOCK clock) { drivecpu_execute_all(clock); serial_iec_device_exec(clock); return iecbus.cpu_port; }
static void iecbus_cpu_write_conf3(BYTE data, CLOCK clock) { unsigned int dnr; drivecpu_execute_all(clock); serial_iec_device_exec(clock); DEBUG_IEC_CPU_WRITE(data); iec_update_cpu_bus(data); if (iec_old_atn != (iecbus.cpu_bus & 0x10)) { iec_old_atn = iecbus.cpu_bus & 0x10; for (dnr = 0; dnr < DRIVE_NUM; dnr++) { if (iecbus_device[8 + dnr] == IECBUS_DEVICE_TRUEDRIVE) { switch (drive_context[dnr]->drive->type) { case DRIVE_TYPE_1581: if (!iec_old_atn) { ciacore_set_flag(drive_context[dnr]->cia1581); } break; case DRIVE_TYPE_2000: case DRIVE_TYPE_4000: viacore_signal(drive_context[dnr]->via4000, VIA_SIG_CA2, iec_old_atn ? 0 : VIA_SIG_RISE); break; default: viacore_signal(drive_context[dnr]->via1d1541, VIA_SIG_CA1, iec_old_atn ? 0 : VIA_SIG_RISE); } } } } for (dnr = 0; dnr < DRIVE_NUM; dnr++) { if (iecbus_device[8 + dnr] == IECBUS_DEVICE_TRUEDRIVE) { unsigned int unit; unit = dnr + 8; switch (drive_context[dnr]->drive->type) { case DRIVE_TYPE_1581: case DRIVE_TYPE_2000: case DRIVE_TYPE_4000: iecbus.drv_bus[unit] = (((iecbus.drv_data[unit] << 3) & 0x40) | ((iecbus.drv_data[unit] << 6) & ((iecbus.drv_data[unit] | iecbus.cpu_bus) << 3) & 0x80)); break; default: iecbus.drv_bus[unit] = (((iecbus.drv_data[unit] << 3) & 0x40) | ((iecbus.drv_data[unit] << 6) & ((~iecbus.drv_data[unit] ^ iecbus.cpu_bus) << 3) & 0x80)); } } } iec_update_ports(); }
static void iecbus_cpu_write_conf3(BYTE data, CLOCK clock) { unsigned int dnr; drivecpu_execute_all(clock); serial_iec_device_exec(clock); iec_update_cpu_bus(data); if (iec_old_atn != (iecbus.cpu_bus & 0x10)) { iec_old_atn = iecbus.cpu_bus & 0x10; for (dnr = 0; dnr < DRIVE_NUM; dnr++) if( iecbus_device[8+dnr] == IECBUS_DEVICE_TRUEDRIVE ) { if (drive_context[dnr]->drive->type != DRIVE_TYPE_1581) viacore_signal(drive_context[dnr]->via1d1541, VIA_SIG_CA1, iec_old_atn ? 0 : VIA_SIG_RISE); else if (!iec_old_atn) ciacore_set_flag(drive_context[dnr]->cia1581); } } for (dnr = 0; dnr < DRIVE_NUM; dnr++) if( iecbus_device[8+dnr] == IECBUS_DEVICE_TRUEDRIVE ) { unsigned int unit; unit = dnr + 8; if (drive_context[dnr]->drive->type != DRIVE_TYPE_1581) iecbus.drv_bus[unit] = (((iecbus.drv_data[unit] << 3) & 0x40) | ((iecbus.drv_data[unit] << 6) & ((~iecbus.drv_data[unit] ^ iecbus.cpu_bus) << 3) & 0x80)); else iecbus.drv_bus[unit] = (((iecbus.drv_data[unit] << 3) & 0x40) | ((iecbus.drv_data[unit] << 6) & ((iecbus.drv_data[unit] | iecbus.cpu_bus) << 3) & 0x80)); } iec_update_ports(); }