]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Missing vhd type check, log scsi hd emulation.
authorToni Wilen <twilen@winuae.net>
Fri, 29 Aug 2014 13:41:55 +0000 (16:41 +0300)
committerToni Wilen <twilen@winuae.net>
Fri, 29 Aug 2014 13:41:55 +0000 (16:41 +0300)
hardfile.cpp

index e611c0395fa906658f0c0705fe38fce5fc70fb1b..d5dc0baa7a84d16a3d0efa3a4e04ecc99bc03c46 100644 (file)
@@ -52,6 +52,8 @@
 #define scsi_log write_log
 #endif
 
+extern int log_scsiemu;
+
 #define MAX_ASYNC_REQUESTS 50
 #define ASYNC_REQUEST_NONE 0
 #define ASYNC_REQUEST_TEMP 1
@@ -511,10 +513,10 @@ int hdf_open (struct hardfiledata *hfd, const TCHAR *pname)
                        }
                        if (chd_readonly)
                                hfd->ci.readonly = true;
-                       hfd->virtsize = cf->logical_bytes ();
+                       hfd->virtsize = cf->logical_bytes();
                        hfd->handle_valid = -1;
                        write_log(_T("CHD '%s' mounted as %s, %s.\n"), pname, chdf ? _T("HD") : _T("OTHER"), hfd->ci.readonly ? _T("read only") : _T("read/write"));
-                       goto nonvhd;
+                       return 1;
                }
        }
 #endif
@@ -573,6 +575,7 @@ int hdf_open (struct hardfiledata *hfd, const TCHAR *pname)
        hdf_init_cache (hfd);
        return 1;
 nonvhd:
+       hfd->hfd_type = 0;
        return 1;
 end:
        hdf_close_target (hfd);
@@ -1200,6 +1203,13 @@ int scsi_hd_emulate (struct hardfiledata *hfd, struct hd_hardfiledata *hdhfd, ua
        int i, lun;
        char *ss;
 
+       if (log_scsiemu) {
+               write_log (_T("SCSIEMU HD %d: %02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X CMDLEN=%d DATA=%p\n"), hfd->unitnum,
+                       cmdbuf[0], cmdbuf[1], cmdbuf[2], cmdbuf[3], cmdbuf[4], cmdbuf[5], cmdbuf[6], 
+                       cmdbuf[7], cmdbuf[8], cmdbuf[9], cmdbuf[10], cmdbuf[11],
+                       scsi_cmd_len, scsi_data);
+       }
+
        *reply_len = *sense_len = 0;
        lun = cmdbuf[1] >> 5;
        if (cmdbuf[0] != 0x03 && cmdbuf[0] != 0x12 && lun) {
@@ -1555,6 +1565,14 @@ miscompare:
                ls = 0x12;
                break;
        }
+
+       if (log_scsiemu && ls) {
+               write_log (_T("-> SENSE STATUS: KEY=%d ASC=%02X ASCQ=%02X\n"), s[2], s[12], s[13]);
+       }
+
+       if (cmdbuf[0] && log_scsiemu)
+               write_log (_T("-> DATAOUT=%d ST=%d SENSELEN=%d REPLYLEN=%d\n"), scsi_len, status, ls, lr);
+
        *data_len = scsi_len;
        *reply_len = lr;
        *sense_len = ls;