static READ8_HANDLER( coupe_port_r ) { if (offset==SSND_ADDR) /* Sound address request */ return SOUND_ADDR; if (offset==HPEN_PORT) return HPEN; switch (offset & 0xFF) { case DSK1_PORT+0: /* This covers the total range of ports for 1 floppy controller */ case DSK1_PORT+4: wd179x_set_side((offset >> 2) & 1); return wd179x_status_r(0); case DSK1_PORT+1: case DSK1_PORT+5: wd179x_set_side((offset >> 2) & 1); return wd179x_track_r(0); case DSK1_PORT+2: case DSK1_PORT+6: wd179x_set_side((offset >> 2) & 1); return wd179x_sector_r(0); case DSK1_PORT+3: case DSK1_PORT+7: wd179x_set_side((offset >> 2) & 1); return wd179x_data_r(0); case LPEN_PORT: return LPEN; case STAT_PORT: return ((getSamKey2((offset >> 8)&0xFF))&0xE0) | STAT; case LMPR_PORT: return LMPR; case HMPR_PORT: return HMPR; case VMPR_PORT: return VMPR; case KEYB_PORT: return (getSamKey1((offset >> 8)&0xFF)&0x1F) | 0xE0; case SSND_DATA: return SOUND_REG[SOUND_ADDR]; default: logerror("Read Unsupported Port: %04x\n", offset); break; } return 0x0ff; }
static READ8_HANDLER ( exidy_wd179x_r ) { switch (offset & 0x03) { case 0: return wd179x_status_r(offset); case 1: return wd179x_track_r(offset); case 2: return wd179x_sector_r(offset); case 3: return wd179x_data_r(offset); default: break; } return 0x0ff; }