| 944 | } |
| 945 | |
| 946 | static void do_process_packet_command (struct ide_hdf *ide) |
| 947 | { |
| 948 | if (ide->packet_state == 1) { |
| 949 | do_packet_command (ide); |
| 950 | } else { |
| 951 | ide->packet_data_offset += ide->packet_transfer_size; |
| 952 | if (!ide->direction) { |
| 953 | // data still remaining, next transfer |
| 954 | if (atapi_set_size (ide)) |
| 955 | ide->intdrq = true; |
| 956 | } else { |
| 957 | if (atapi_set_size (ide)) { |
| 958 | ide->intdrq = true; |
| 959 | } else { |
| 960 | if (IDE_LOG > 1) |
| 961 | write_log(_T("IDE%d ATAPI write finished, %d bytes\n"), ide->num, ide->packet_data_size); |
| 962 | memcpy (ide->scsi->buffer, ide->secbuf, ide->packet_data_size); |
| 963 | ide->scsi->data_len = ide->packet_data_size; |
| 964 | scsi_emulate_cmd (ide->scsi); |
| 965 | } |
| 966 | } |
| 967 | } |
| 968 | ide_fast_interrupt (ide); |
| 969 | } |
| 970 | |
| 971 | static const TCHAR *getidemode(struct ide_hdf *ide) |
| 972 | { |
no test coverage detected