trunk/src/emu/machine/cr589.c
| r26480 | r26481 | |
| 45 | 45 | { |
| 46 | 46 | switch( command[ 0 ] ) |
| 47 | 47 | { |
| 48 | | case 0x3b: // WRITE BUFFER |
| 49 | | bufferOffset = ( command[ 3 ] << 16 ) | ( command[ 4 ] << 8 ) | command[ 5 ]; |
| 50 | | m_phase = SCSI_PHASE_DATAOUT; |
| 51 | | m_status_code = SCSI_STATUS_CODE_GOOD; |
| 52 | | m_transfer_length = ( command[ 6 ] << 16 ) | ( command[ 7 ] << 8 ) | command[ 8 ]; |
| 53 | | break; |
| 48 | case T10SPC_CMD_INQUIRY: |
| 49 | logerror("T10MMC: INQUIRY\n"); |
| 50 | m_phase = SCSI_PHASE_DATAIN; |
| 51 | m_status_code = SCSI_STATUS_CODE_GOOD; |
| 52 | m_transfer_length = SCSILengthFromUINT8( &command[ 4 ] ); |
| 53 | break; |
| 54 | 54 | |
| 55 | | case 0x3c: // READ BUFFER |
| 56 | | bufferOffset = ( command[ 3 ] << 16 ) | ( command[ 4 ] << 8 ) | command[ 5 ]; |
| 57 | | m_phase = SCSI_PHASE_DATAIN; |
| 58 | | m_status_code = SCSI_STATUS_CODE_GOOD; |
| 59 | | m_transfer_length = ( command[ 6 ] << 16 ) | ( command[ 7 ] << 8 ) | command[ 8 ]; |
| 60 | | break; |
| 55 | case 0x3b: // WRITE BUFFER |
| 56 | bufferOffset = ( command[ 3 ] << 16 ) | ( command[ 4 ] << 8 ) | command[ 5 ]; |
| 57 | m_phase = SCSI_PHASE_DATAOUT; |
| 58 | m_status_code = SCSI_STATUS_CODE_GOOD; |
| 59 | m_transfer_length = ( command[ 6 ] << 16 ) | ( command[ 7 ] << 8 ) | command[ 8 ]; |
| 60 | break; |
| 61 | 61 | |
| 62 | | case 0xcc: // FIRMWARE DOWNLOAD ENABLE |
| 63 | | m_phase = SCSI_PHASE_DATAOUT; |
| 64 | | m_status_code = SCSI_STATUS_CODE_GOOD; |
| 65 | | m_transfer_length = SCSILengthFromUINT16( &command[7] ); |
| 66 | | break; |
| 62 | case 0x3c: // READ BUFFER |
| 63 | bufferOffset = ( command[ 3 ] << 16 ) | ( command[ 4 ] << 8 ) | command[ 5 ]; |
| 64 | m_phase = SCSI_PHASE_DATAIN; |
| 65 | m_status_code = SCSI_STATUS_CODE_GOOD; |
| 66 | m_transfer_length = ( command[ 6 ] << 16 ) | ( command[ 7 ] << 8 ) | command[ 8 ]; |
| 67 | break; |
| 67 | 68 | |
| 68 | | default: |
| 69 | | t10mmc::ExecCommand(); |
| 69 | case 0xcc: // FIRMWARE DOWNLOAD ENABLE |
| 70 | m_phase = SCSI_PHASE_DATAOUT; |
| 71 | m_status_code = SCSI_STATUS_CODE_GOOD; |
| 72 | m_transfer_length = SCSILengthFromUINT16( &command[7] ); |
| 73 | break; |
| 74 | |
| 75 | default: |
| 76 | t10mmc::ExecCommand(); |
| 77 | break; |
| 70 | 78 | } |
| 71 | 79 | } |
| 72 | 80 | |
| r26480 | r26481 | |
| 74 | 82 | { |
| 75 | 83 | switch( command[ 0 ] ) |
| 76 | 84 | { |
| 77 | | case 0x12: // INQUIRY |
| 78 | | t10mmc::ReadData( data, dataLength ); |
| 85 | case T10SPC_CMD_INQUIRY: |
| 86 | memset(data, 0, dataLength); |
| 79 | 87 | |
| 80 | | if( download ) |
| 81 | | { |
| 82 | | memcpy( &data[ 8 ], download_identity, 28 ); |
| 83 | | } |
| 84 | | else |
| 85 | | { |
| 86 | | memcpy( &data[ 8 ], &buffer[ identity_offset ], 28 ); |
| 87 | | } |
| 88 | | break; |
| 88 | t10mmc::ReadData( data, dataLength ); |
| 89 | 89 | |
| 90 | | case 0x3c: // READ BUFFER |
| 91 | | memcpy( data, &buffer[ bufferOffset ], dataLength ); |
| 92 | | bufferOffset += dataLength; |
| 93 | | break; |
| 90 | if( download ) |
| 91 | { |
| 92 | memcpy( &data[ 8 ], download_identity, 28 ); |
| 93 | } |
| 94 | else |
| 95 | { |
| 96 | memcpy( &data[ 8 ], &buffer[ identity_offset ], 28 ); |
| 97 | } |
| 98 | break; |
| 94 | 99 | |
| 95 | | default: |
| 96 | | t10mmc::ReadData( data, dataLength ); |
| 97 | | break; |
| 100 | case 0x3c: // READ BUFFER |
| 101 | memcpy( data, &buffer[ bufferOffset ], dataLength ); |
| 102 | bufferOffset += dataLength; |
| 103 | break; |
| 104 | |
| 105 | default: |
| 106 | t10mmc::ReadData( data, dataLength ); |
| 107 | break; |
| 98 | 108 | } |
| 99 | 109 | } |
| 100 | 110 | |