src/mess/drivers/cdi.c
| r6231 | r6232 | |
| 1545 | 1545 | } |
| 1546 | 1546 | } |
| 1547 | 1547 | |
| 1548 | | cdic_regs.data_buffer ^= 0x0001; |
| 1549 | | |
| 1550 | 1548 | //printf( "%02x\n", buffer[CDIC_SECTOR_SUBMODE2] ); |
| 1551 | 1549 | if((buffer[CDIC_SECTOR_FILE2] << 8) == cdic_regs.file) |
| 1552 | 1550 | { |
| 1553 | | if(cdic_regs.channel & (1 << buffer[CDIC_SECTOR_CHAN2])) |
| 1551 | //if((1 << buffer[CDIC_SECTOR_CHAN2])) |
| 1554 | 1552 | { |
| 1555 | 1553 | if(((buffer[CDIC_SECTOR_SUBMODE2] & (CDIC_SUBMODE_FORM | CDIC_SUBMODE_DATA | CDIC_SUBMODE_AUDIO | CDIC_SUBMODE_VIDEO)) == (CDIC_SUBMODE_FORM | CDIC_SUBMODE_AUDIO)) && |
| 1556 | | (cdic_regs.audio_channel & (1 << buffer[CDIC_SECTOR_CHAN2]))) |
| 1554 | (cdic_regs.channel & cdic_regs.audio_channel & (1 << buffer[CDIC_SECTOR_CHAN2]))) |
| 1557 | 1555 | { |
| 1558 | 1556 | { |
| 1559 | 1557 | verboselog(machine, 0, "Audio sector\n" ); |
| 1560 | 1558 | |
| 1561 | | //cdic_regs.data_buffer ^= 0x0001; |
| 1559 | cdic_regs.data_buffer ^= 0x0001; |
| 1562 | 1560 | |
| 1563 | 1561 | cdic_regs.x_buffer |= 0x8000; |
| 1564 | 1562 | cdic_regs.data_buffer |= 0x4000; |
| r6231 | r6232 | |
| 1579 | 1577 | } |
| 1580 | 1578 | else if((buffer[CDIC_SECTOR_SUBMODE2] & (CDIC_SUBMODE_DATA | CDIC_SUBMODE_AUDIO | CDIC_SUBMODE_VIDEO)) == 0x00) |
| 1581 | 1579 | { |
| 1582 | | //cdic_regs.data_buffer ^= 0x0001; |
| 1580 | cdic_regs.data_buffer ^= 0x0001; |
| 1583 | 1581 | |
| 1582 | cdic_regs.data_buffer &= ~0x0004; |
| 1583 | cdic_regs.x_buffer |= 0x8000; |
| 1584 | cdic_regs.data_buffer |= 0x4000; |
| 1585 | |
| 1586 | for(index = 6; index < 2352/2; index++) |
| 1587 | { |
| 1588 | cdram[(cdic_regs.data_buffer & 5) * (0xa00/2) + (index - 6)] = (buffer[index*2] << 8) | buffer[index*2 + 1]; |
| 1589 | } |
| 1590 | |
| 1584 | 1591 | if((buffer[CDIC_SECTOR_SUBMODE2] & CDIC_SUBMODE_TRIG) == CDIC_SUBMODE_TRIG || |
| 1585 | 1592 | (buffer[CDIC_SECTOR_SUBMODE2] & CDIC_SUBMODE_EOR) == CDIC_SUBMODE_EOR || |
| 1586 | 1593 | (buffer[CDIC_SECTOR_SUBMODE2] & CDIC_SUBMODE_EOF) == CDIC_SUBMODE_EOF) |
| 1587 | 1594 | { |
| 1588 | | cdic_regs.data_buffer &= ~0x0004; |
| 1589 | | cdic_regs.x_buffer |= 0x8000; |
| 1590 | | cdic_regs.data_buffer |= 0x4000; |
| 1591 | | |
| 1592 | | for(index = 6; index < 2352/2; index++) |
| 1593 | | { |
| 1594 | | cdram[(cdic_regs.data_buffer & 5) * (0xa00/2) + (index - 6)] = (buffer[index*2] << 8) | buffer[index*2 + 1]; |
| 1595 | | } |
| 1596 | | |
| 1597 | 1595 | //printf( "Setting CDIC interrupt line\n" ); |
| 1598 | 1596 | verboselog(machine, 0, "Setting CDIC interrupt line for message sector\n" ); |
| 1599 | 1597 | cpu_set_input_line_vector(cputag_get_cpu(machine, "maincpu"), M68K_IRQ_4, 128); |
| r6231 | r6232 | |
| 1606 | 1604 | } |
| 1607 | 1605 | else /*if(buffer[CDIC_SECTOR_SUBMODE2] & (CDIC_SUBMODE_DATA | CDIC_SUBMODE_VIDEO))*/ |
| 1608 | 1606 | { |
| 1609 | | //cdic_regs.data_buffer ^= 0x0001; |
| 1607 | cdic_regs.data_buffer ^= 0x0001; |
| 1610 | 1608 | |
| 1611 | 1609 | cdic_regs.data_buffer &= ~0x0004; |
| 1612 | 1610 | cdic_regs.x_buffer |= 0x8000; |